@firestitch/2fa 18.0.27 → 18.0.29

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 (79) hide show
  1. package/app/modules/code-input/components/code-input/code-input.component.d.ts +1 -1
  2. package/app/modules/defaulted/components/defaulted/defaulted.component.d.ts +1 -1
  3. package/app/modules/manage/components/2fa-manage/2fa-manage.component.d.ts +2 -5
  4. package/app/modules/manage/components/app/app.component.d.ts +2 -5
  5. package/app/modules/manage/components/email/email.component.d.ts +2 -5
  6. package/app/modules/manage/components/emails/emails.component.d.ts +2 -4
  7. package/app/modules/manage/components/manage-methods/manage-methods.component.d.ts +2 -5
  8. package/app/modules/manage/components/number/number.component.d.ts +2 -5
  9. package/app/modules/manage/components/numbers/numbers.component.d.ts +2 -4
  10. package/app/modules/manage/manage.module.d.ts +7 -0
  11. package/app/modules/manage/services/two-factor-manage.service.d.ts +0 -2
  12. package/app/modules/verification/components/2fa-verification/2fa-verification.component.d.ts +2 -5
  13. package/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.d.ts +1 -3
  14. package/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.d.ts +2 -3
  15. package/app/modules/verification/directives/2fa-verification-resend.directive.d.ts +1 -1
  16. package/app/modules/verification-methods/components/verification-methods/verification-methods.component.d.ts +1 -3
  17. package/app/modules/verification-methods/verification-methods.module.d.ts +7 -0
  18. package/app/modules/verification-setup/data/verification-method.data.d.ts +1 -2
  19. package/app/modules/verification-setup/verification-setup.module.d.ts +13 -15
  20. package/app/modules/verification-setup/views/email/email.component.d.ts +1 -1
  21. package/app/modules/verification-setup/views/verify/verify.component.d.ts +1 -1
  22. package/esm2022/app/modules/code-input/components/code-input/code-input.component.mjs +7 -6
  23. package/esm2022/app/modules/defaulted/components/defaulted/defaulted.component.mjs +4 -3
  24. package/esm2022/app/modules/manage/components/2fa-manage/2fa-manage.component.mjs +11 -18
  25. package/esm2022/app/modules/manage/components/app/app.component.mjs +40 -32
  26. package/esm2022/app/modules/manage/components/email/email.component.mjs +41 -31
  27. package/esm2022/app/modules/manage/components/emails/emails.component.mjs +29 -22
  28. package/esm2022/app/modules/manage/components/manage-methods/manage-methods.component.mjs +38 -29
  29. package/esm2022/app/modules/manage/components/number/number.component.mjs +44 -32
  30. package/esm2022/app/modules/manage/components/numbers/numbers.component.mjs +29 -22
  31. package/esm2022/app/modules/manage/manage.module.mjs +20 -0
  32. package/esm2022/app/modules/manage/services/two-factor-manage.service.mjs +5 -9
  33. package/esm2022/app/modules/verification/components/2fa-verification/2fa-verification.component.mjs +22 -23
  34. package/esm2022/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.mjs +9 -13
  35. package/esm2022/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.mjs +37 -22
  36. package/esm2022/app/modules/verification/directives/2fa-verification-resend.directive.mjs +3 -2
  37. package/esm2022/app/modules/verification-methods/components/verification-methods/verification-methods.component.mjs +21 -18
  38. package/esm2022/app/modules/verification-methods/verification-methods.module.mjs +20 -0
  39. package/esm2022/app/modules/verification-setup/data/verification-method.data.mjs +5 -9
  40. package/esm2022/app/modules/verification-setup/verification-setup.module.mjs +8 -15
  41. package/esm2022/app/modules/verification-setup/views/email/email.component.mjs +30 -18
  42. package/esm2022/app/modules/verification-setup/views/verify/verify.component.mjs +24 -10
  43. package/esm2022/public_api.mjs +3 -4
  44. package/fesm2022/firestitch-2fa.mjs +306 -530
  45. package/fesm2022/firestitch-2fa.mjs.map +1 -1
  46. package/package.json +1 -1
  47. package/public_api.d.ts +2 -3
  48. package/app/modules/code-input/code-input.module.d.ts +0 -11
  49. package/app/modules/code-input/index.d.ts +0 -1
  50. package/app/modules/defaulted/components/defaulted/index.d.ts +0 -1
  51. package/app/modules/defaulted/defaulted.module.d.ts +0 -8
  52. package/app/modules/manage/components/2fa-manage/index.d.ts +0 -1
  53. package/app/modules/manage/fs-2f-manage.module.d.ts +0 -34
  54. package/app/modules/resend/components/resend/index.d.ts +0 -1
  55. package/app/modules/resend/components/resend/resend.component.d.ts +0 -14
  56. package/app/modules/resend/resend.module.d.ts +0 -9
  57. package/app/modules/verification/components/2fa-verification-code/index.d.ts +0 -1
  58. package/app/modules/verification/components/2fa-verification-methods/index.d.ts +0 -1
  59. package/app/modules/verification/components/index.d.ts +0 -3
  60. package/app/modules/verification/fs-2fa-verification.module.d.ts +0 -25
  61. package/app/modules/verification/index.d.ts +0 -3
  62. package/app/modules/verification-methods/fs-2f-verification-methods.module.d.ts +0 -14
  63. package/app/modules/verification-methods/index.d.ts +0 -1
  64. package/esm2022/app/modules/code-input/code-input.module.mjs +0 -36
  65. package/esm2022/app/modules/code-input/index.mjs +0 -2
  66. package/esm2022/app/modules/defaulted/components/defaulted/index.mjs +0 -2
  67. package/esm2022/app/modules/defaulted/defaulted.module.mjs +0 -22
  68. package/esm2022/app/modules/manage/components/2fa-manage/index.mjs +0 -2
  69. package/esm2022/app/modules/manage/fs-2f-manage.module.mjs +0 -120
  70. package/esm2022/app/modules/resend/components/resend/index.mjs +0 -2
  71. package/esm2022/app/modules/resend/components/resend/resend.component.mjs +0 -37
  72. package/esm2022/app/modules/resend/resend.module.mjs +0 -28
  73. package/esm2022/app/modules/verification/components/2fa-verification-code/index.mjs +0 -2
  74. package/esm2022/app/modules/verification/components/2fa-verification-methods/index.mjs +0 -2
  75. package/esm2022/app/modules/verification/components/index.mjs +0 -4
  76. package/esm2022/app/modules/verification/fs-2fa-verification.module.mjs +0 -95
  77. package/esm2022/app/modules/verification/index.mjs +0 -4
  78. package/esm2022/app/modules/verification-methods/fs-2f-verification-methods.module.mjs +0 -46
  79. package/esm2022/app/modules/verification-methods/index.mjs +0 -2
@@ -1,26 +1,26 @@
1
- import { Component, Inject, ChangeDetectionStrategy, ViewChild, } from '@angular/core';
2
- import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
1
+ import { Component, ChangeDetectionStrategy, ViewChild, inject } from '@angular/core';
2
+ import { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';
3
3
  import { FsMessage } from '@firestitch/message';
4
4
  import { VerificationMethodsComponent } from '../../../../modules/verification-methods/components/verification-methods';
5
5
  import { VerificationMethodType } from '../../../../enums/verification-method-type.enum';
6
+ import { FsDialogModule } from '@firestitch/dialog';
7
+ import { CdkScrollable } from '@angular/cdk/scrolling';
8
+ import { VerificationMethodsComponent as VerificationMethodsComponent_1 } from '../../../verification-methods/components/verification-methods/verification-methods.component';
9
+ import { MatButton } from '@angular/material/button';
10
+ import { FsFormModule } from '@firestitch/form';
6
11
  import * as i0 from "@angular/core";
7
12
  import * as i1 from "@angular/material/dialog";
8
- import * as i2 from "@firestitch/message";
9
- import * as i3 from "@angular/material/button";
10
- import * as i4 from "@firestitch/dialog";
11
- import * as i5 from "@firestitch/form";
12
- import * as i6 from "../../../verification-methods/components/verification-methods/verification-methods.component";
13
+ import * as i2 from "@firestitch/dialog";
14
+ import * as i3 from "@firestitch/form";
13
15
  export class EmailsComponent {
14
- _data;
15
- _dialogRef;
16
- _message;
16
+ _data = inject(MAT_DIALOG_DATA);
17
+ _dialogRef = inject(MatDialogRef);
18
+ _message = inject(FsMessage);
17
19
  verificationMethods;
18
20
  twoFactorManageService;
19
21
  VerificationMethodType = VerificationMethodType;
20
- constructor(_data, _dialogRef, _message) {
21
- this._data = _data;
22
- this._dialogRef = _dialogRef;
23
- this._message = _message;
22
+ constructor() {
23
+ const _data = this._data;
24
24
  this.twoFactorManageService = _data.twoFactorManageService;
25
25
  }
26
26
  add() {
@@ -35,17 +35,24 @@ export class EmailsComponent {
35
35
  this._dialogRef.close();
36
36
  }
37
37
  }
38
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: EmailsComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }, { token: i2.FsMessage }], target: i0.ɵɵFactoryTarget.Component });
39
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: EmailsComponent, selector: "ng-component", viewQueries: [{ propertyName: "verificationMethods", first: true, predicate: VerificationMethodsComponent, descendants: true }], ngImport: i0, template: "<fs-dialog>\n <h1 mat-dialog-title>\n Emails\n </h1>\n <mat-dialog-content>\n <fs-2fa-verification-methods\n [type]=\"VerificationMethodType.Email\"\n [twoFactorManageService]=\"twoFactorManageService\"\n (deleted)=\"deleted()\">\n </fs-2fa-verification-methods>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n <button\n mat-button\n (click)=\"add()\"\n type=\"button\">\n Add email\n </button>\n </mat-dialog-actions>\n</fs-dialog>", styles: [""], dependencies: [{ kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i4.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout", "dock", "dockable", "fullscreenPercent"] }, { kind: "directive", type: i5.FsButtonDirective, selector: "[mat-raised-button]:not([fsFormButtonStandalone]),[mat-button]:not([fsFormButtonStandalone]),[mat-flat-button]:not([fsFormButtonStandalone]),[mat-stroked-button]:not([fsFormButtonStandalone])", inputs: ["name", "dirtySubmit", "form"] }, { kind: "component", type: i6.VerificationMethodsComponent, selector: "fs-2fa-verification-methods", inputs: ["type", "accountVerify", "verificationMethodsFetch", "verificationMethodDelete", "verificationMethodDefault", "twoFactorManageService"], outputs: ["deleted"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
38
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: EmailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
39
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: EmailsComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "verificationMethods", first: true, predicate: VerificationMethodsComponent, descendants: true }], ngImport: i0, template: "<fs-dialog>\n <h1 mat-dialog-title>\n Emails\n </h1>\n <mat-dialog-content>\n <fs-2fa-verification-methods\n [type]=\"VerificationMethodType.Email\"\n [twoFactorManageService]=\"twoFactorManageService\"\n (deleted)=\"deleted()\">\n </fs-2fa-verification-methods>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n <button\n mat-button\n (click)=\"add()\"\n type=\"button\">\n Add email\n </button>\n </mat-dialog-actions>\n</fs-dialog>", styles: [""], dependencies: [{ kind: "ngmodule", type: FsDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i2.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout", "dock", "dockable", "fullscreenPercent"] }, { kind: "component", type: VerificationMethodsComponent_1, selector: "fs-2fa-verification-methods", inputs: ["type", "accountVerify", "verificationMethodsFetch", "verificationMethodDelete", "verificationMethodDefault", "twoFactorManageService"], outputs: ["deleted"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsButtonDirective, selector: "[mat-raised-button]:not([fsFormButtonStandalone]),[mat-button]:not([fsFormButtonStandalone]),[mat-flat-button]:not([fsFormButtonStandalone]),[mat-stroked-button]:not([fsFormButtonStandalone])", inputs: ["name", "dirtySubmit", "form"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
40
40
  }
41
41
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: EmailsComponent, decorators: [{
42
42
  type: Component,
43
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<fs-dialog>\n <h1 mat-dialog-title>\n Emails\n </h1>\n <mat-dialog-content>\n <fs-2fa-verification-methods\n [type]=\"VerificationMethodType.Email\"\n [twoFactorManageService]=\"twoFactorManageService\"\n (deleted)=\"deleted()\">\n </fs-2fa-verification-methods>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n <button\n mat-button\n (click)=\"add()\"\n type=\"button\">\n Add email\n </button>\n </mat-dialog-actions>\n</fs-dialog>" }]
44
- }], ctorParameters: () => [{ type: undefined, decorators: [{
45
- type: Inject,
46
- args: [MAT_DIALOG_DATA]
47
- }] }, { type: i1.MatDialogRef }, { type: i2.FsMessage }], propDecorators: { verificationMethods: [{
43
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
44
+ FsDialogModule,
45
+ MatDialogTitle,
46
+ CdkScrollable,
47
+ MatDialogContent,
48
+ VerificationMethodsComponent_1,
49
+ MatDialogActions,
50
+ MatButton,
51
+ FsFormModule,
52
+ MatDialogClose,
53
+ ], template: "<fs-dialog>\n <h1 mat-dialog-title>\n Emails\n </h1>\n <mat-dialog-content>\n <fs-2fa-verification-methods\n [type]=\"VerificationMethodType.Email\"\n [twoFactorManageService]=\"twoFactorManageService\"\n (deleted)=\"deleted()\">\n </fs-2fa-verification-methods>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n <button\n mat-button\n (click)=\"add()\"\n type=\"button\">\n Add email\n </button>\n </mat-dialog-actions>\n</fs-dialog>" }]
54
+ }], ctorParameters: () => [], propDecorators: { verificationMethods: [{
48
55
  type: ViewChild,
49
56
  args: [VerificationMethodsComponent]
50
57
  }] } });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tYW5hZ2UvY29tcG9uZW50cy9lbWFpbHMvZW1haWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tYW5hZ2UvY29tcG9uZW50cy9lbWFpbHMvZW1haWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQUUsTUFBTSxFQUFFLHVCQUF1QixFQUFFLFNBQVMsR0FDdEQsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFhLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFFeEgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saURBQWlELENBQUM7Ozs7Ozs7O0FBU3pGLE1BQU0sT0FBTyxlQUFlO0lBU1M7SUFDekI7SUFDQTtJQVJILG1CQUFtQixDQUErQjtJQUVsRCxzQkFBc0IsQ0FBeUI7SUFDL0Msc0JBQXNCLEdBQUcsc0JBQXNCLENBQUM7SUFFdkQsWUFDbUMsS0FBVSxFQUNuQyxVQUF5QyxFQUN6QyxRQUFtQjtRQUZNLFVBQUssR0FBTCxLQUFLLENBQUs7UUFDbkMsZUFBVSxHQUFWLFVBQVUsQ0FBK0I7UUFDekMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUUzQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDLHNCQUFzQixDQUFDO0lBQzdELENBQUM7SUFFTSxHQUFHO1FBQ1IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsRUFBRTthQUNwQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQzNELElBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMscUJBQXFCLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNwRixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO3VHQTVCVSxlQUFlLGtCQVNoQixlQUFlOzJGQVRkLGVBQWUseUdBRWYsNEJBQTRCLGdEQ25CekMsNm9CQTBCWTs7MkZEVEMsZUFBZTtrQkFMM0IsU0FBUztzQ0FHUyx1QkFBdUIsQ0FBQyxNQUFNOzswQkFXNUMsTUFBTTsyQkFBQyxlQUFlOzRGQU5sQixtQkFBbUI7c0JBRHpCLFNBQVM7dUJBQUMsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LCBJbmplY3QsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuaW1wb3J0IHsgVmVyaWZpY2F0aW9uTWV0aG9kc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZHVsZXMvdmVyaWZpY2F0aW9uLW1ldGhvZHMvY29tcG9uZW50cy92ZXJpZmljYXRpb24tbWV0aG9kcyc7XG5cbmltcG9ydCB7IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9lbnVtcy92ZXJpZmljYXRpb24tbWV0aG9kLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBUd29GYWN0b3JNYW5hZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuXG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vZW1haWxzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZW1haWxzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBFbWFpbHNDb21wb25lbnQge1xuXG4gIEBWaWV3Q2hpbGQoVmVyaWZpY2F0aW9uTWV0aG9kc0NvbXBvbmVudCkgXG4gIHB1YmxpYyB2ZXJpZmljYXRpb25NZXRob2RzOiBWZXJpZmljYXRpb25NZXRob2RzQ29tcG9uZW50O1xuXG4gIHB1YmxpYyB0d29GYWN0b3JNYW5hZ2VTZXJ2aWNlOiBUd29GYWN0b3JNYW5hZ2VTZXJ2aWNlO1xuICBwdWJsaWMgVmVyaWZpY2F0aW9uTWV0aG9kVHlwZSA9IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHByaXZhdGUgX2RhdGE6IGFueSxcbiAgICBwcml2YXRlIF9kaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxFbWFpbHNDb21wb25lbnQ+LFxuICAgIHByaXZhdGUgX21lc3NhZ2U6IEZzTWVzc2FnZSxcbiAgKSB7XG4gICAgdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlID0gX2RhdGEudHdvRmFjdG9yTWFuYWdlU2VydmljZTtcbiAgfVxuXG4gIHB1YmxpYyBhZGQoKTogdm9pZCB7XG4gICAgdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLmFkZEVtYWlsJCgpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+e1xuICAgICAgICB0aGlzLnZlcmlmaWNhdGlvbk1ldGhvZHMucmVsb2FkKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGVkKCk6IHZvaWQge1xuICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnRGVsZXRlZCBlbWFpbCB2ZXJpZmljYXRpb24gbWV0aG9kJyk7XG4gICAgaWYoIXRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZS5oYXNWZXJpZmljYXRpb25NZXRob2QoVmVyaWZpY2F0aW9uTWV0aG9kVHlwZS5FbWFpbCkpIHtcbiAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8ZnMtZGlhbG9nPlxuICA8aDEgbWF0LWRpYWxvZy10aXRsZT5cbiAgICBFbWFpbHNcbiAgPC9oMT5cbiAgPG1hdC1kaWFsb2ctY29udGVudD5cbiAgICA8ZnMtMmZhLXZlcmlmaWNhdGlvbi1tZXRob2RzXG4gICAgICBbdHlwZV09XCJWZXJpZmljYXRpb25NZXRob2RUeXBlLkVtYWlsXCJcbiAgICAgIFt0d29GYWN0b3JNYW5hZ2VTZXJ2aWNlXT1cInR3b0ZhY3Rvck1hbmFnZVNlcnZpY2VcIlxuICAgICAgKGRlbGV0ZWQpPVwiZGVsZXRlZCgpXCI+XG4gICAgPC9mcy0yZmEtdmVyaWZpY2F0aW9uLW1ldGhvZHM+XG4gIDwvbWF0LWRpYWxvZy1jb250ZW50PlxuICA8bWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgIDxidXR0b25cbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwidW5kZWZpbmVkXCI+XG4gICAgICBDbG9zZVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAoY2xpY2spPVwiYWRkKClcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICBBZGQgZW1haWxcbiAgICA8L2J1dHRvbj5cbiAgPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG48L2ZzLWRpYWxvZz4iXX0=
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tYW5hZ2UvY29tcG9uZW50cy9lbWFpbHMvZW1haWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tYW5hZ2UvY29tcG9uZW50cy9lbWFpbHMvZW1haWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQWEsWUFBWSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEosT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBRXhILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRXpGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLDRCQUE0QixJQUFJLDhCQUE4QixFQUFFLE1BQU0sOEZBQThGLENBQUM7QUFDOUssT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7QUFvQmhELE1BQU0sT0FBTyxlQUFlO0lBQ2xCLEtBQUssR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDaEMsVUFBVSxHQUFHLE1BQU0sQ0FBZ0MsWUFBWSxDQUFDLENBQUM7SUFDakUsUUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUk5QixtQkFBbUIsQ0FBK0I7SUFFbEQsc0JBQXNCLENBQXlCO0lBQy9DLHNCQUFzQixHQUFHLHNCQUFzQixDQUFDO0lBRXZEO1FBQ0UsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUV6QixJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDLHNCQUFzQixDQUFDO0lBQzdELENBQUM7SUFFTSxHQUFHO1FBQ1IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsRUFBRTthQUNwQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQzNELElBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMscUJBQXFCLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNwRixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO3VHQTlCVSxlQUFlOzJGQUFmLGVBQWUsNkhBTWYsNEJBQTRCLGdEQ3RDekMsNm9CQTBCWSx5RERMSixjQUFjLDIwQkFJZCw4QkFBOEIsZ1BBRTlCLFNBQVMsZ0xBQ1QsWUFBWTs7MkZBSVAsZUFBZTtrQkFqQjNCLFNBQVM7c0NBR1csdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ0wsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQiw4QkFBOEI7d0JBQzlCLGdCQUFnQjt3QkFDaEIsU0FBUzt3QkFDVCxZQUFZO3dCQUNaLGNBQWM7cUJBQ2pCO3dEQVNJLG1CQUFtQjtzQkFEekIsU0FBUzt1QkFBQyw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3Q2hpbGQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dUaXRsZSwgTWF0RGlhbG9nQ29udGVudCwgTWF0RGlhbG9nQWN0aW9ucywgTWF0RGlhbG9nQ2xvc2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgRnNNZXNzYWdlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbWVzc2FnZSc7XG5pbXBvcnQgeyBWZXJpZmljYXRpb25NZXRob2RzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kdWxlcy92ZXJpZmljYXRpb24tbWV0aG9kcy9jb21wb25lbnRzL3ZlcmlmaWNhdGlvbi1tZXRob2RzJztcblxuaW1wb3J0IHsgVmVyaWZpY2F0aW9uTWV0aG9kVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL2VudW1zL3ZlcmlmaWNhdGlvbi1tZXRob2QtdHlwZS5lbnVtJztcbmltcG9ydCB7IFR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBGc0RpYWxvZ01vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2RpYWxvZyc7XG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBWZXJpZmljYXRpb25NZXRob2RzQ29tcG9uZW50IGFzIFZlcmlmaWNhdGlvbk1ldGhvZHNDb21wb25lbnRfMSB9IGZyb20gJy4uLy4uLy4uL3ZlcmlmaWNhdGlvbi1tZXRob2RzL2NvbXBvbmVudHMvdmVyaWZpY2F0aW9uLW1ldGhvZHMvdmVyaWZpY2F0aW9uLW1ldGhvZHMuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBGc0Zvcm1Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9mb3JtJztcblxuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vZW1haWxzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9lbWFpbHMuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRnNEaWFsb2dNb2R1bGUsXG4gICAgICAgIE1hdERpYWxvZ1RpdGxlLFxuICAgICAgICBDZGtTY3JvbGxhYmxlLFxuICAgICAgICBNYXREaWFsb2dDb250ZW50LFxuICAgICAgICBWZXJpZmljYXRpb25NZXRob2RzQ29tcG9uZW50XzEsXG4gICAgICAgIE1hdERpYWxvZ0FjdGlvbnMsXG4gICAgICAgIE1hdEJ1dHRvbixcbiAgICAgICAgRnNGb3JtTW9kdWxlLFxuICAgICAgICBNYXREaWFsb2dDbG9zZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFbWFpbHNDb21wb25lbnQge1xuICBwcml2YXRlIF9kYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSk7XG4gIHByaXZhdGUgX2RpYWxvZ1JlZiA9IGluamVjdDxNYXREaWFsb2dSZWY8RW1haWxzQ29tcG9uZW50Pj4oTWF0RGlhbG9nUmVmKTtcbiAgcHJpdmF0ZSBfbWVzc2FnZSA9IGluamVjdChGc01lc3NhZ2UpO1xuXG5cbiAgQFZpZXdDaGlsZChWZXJpZmljYXRpb25NZXRob2RzQ29tcG9uZW50KSBcbiAgcHVibGljIHZlcmlmaWNhdGlvbk1ldGhvZHM6IFZlcmlmaWNhdGlvbk1ldGhvZHNDb21wb25lbnQ7XG5cbiAgcHVibGljIHR3b0ZhY3Rvck1hbmFnZVNlcnZpY2U6IFR3b0ZhY3Rvck1hbmFnZVNlcnZpY2U7XG4gIHB1YmxpYyBWZXJpZmljYXRpb25NZXRob2RUeXBlID0gVmVyaWZpY2F0aW9uTWV0aG9kVHlwZTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBfZGF0YSA9IHRoaXMuX2RhdGE7XG5cbiAgICB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UgPSBfZGF0YS50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlO1xuICB9XG5cbiAgcHVibGljIGFkZCgpOiB2b2lkIHtcbiAgICB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UuYWRkRW1haWwkKClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT57XG4gICAgICAgIHRoaXMudmVyaWZpY2F0aW9uTWV0aG9kcy5yZWxvYWQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdEZWxldGVkIGVtYWlsIHZlcmlmaWNhdGlvbiBtZXRob2QnKTtcbiAgICBpZighdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLmhhc1ZlcmlmaWNhdGlvbk1ldGhvZChWZXJpZmljYXRpb25NZXRob2RUeXBlLkVtYWlsKSkge1xuICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxmcy1kaWFsb2c+XG4gIDxoMSBtYXQtZGlhbG9nLXRpdGxlPlxuICAgIEVtYWlsc1xuICA8L2gxPlxuICA8bWF0LWRpYWxvZy1jb250ZW50PlxuICAgIDxmcy0yZmEtdmVyaWZpY2F0aW9uLW1ldGhvZHNcbiAgICAgIFt0eXBlXT1cIlZlcmlmaWNhdGlvbk1ldGhvZFR5cGUuRW1haWxcIlxuICAgICAgW3R3b0ZhY3Rvck1hbmFnZVNlcnZpY2VdPVwidHdvRmFjdG9yTWFuYWdlU2VydmljZVwiXG4gICAgICAoZGVsZXRlZCk9XCJkZWxldGVkKClcIj5cbiAgICA8L2ZzLTJmYS12ZXJpZmljYXRpb24tbWV0aG9kcz5cbiAgPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG4gIDxtYXQtZGlhbG9nLWFjdGlvbnM+XG4gICAgPGJ1dHRvblxuICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJ1bmRlZmluZWRcIj5cbiAgICAgIENsb3NlXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgIChjbGljayk9XCJhZGQoKVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIj5cbiAgICAgIEFkZCBlbWFpbFxuICAgIDwvYnV0dG9uPlxuICA8L21hdC1kaWFsb2ctYWN0aW9ucz5cbjwvZnMtZGlhbG9nPiJdfQ==
@@ -1,39 +1,37 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, } from '@angular/core';
2
- import { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject } from '@angular/core';
2
+ import { MAT_DIALOG_DATA, MatDialog, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';
3
3
  import { FsMessage } from '@firestitch/message';
4
4
  import { Subject } from 'rxjs';
5
5
  import { switchMap } from 'rxjs/operators';
6
6
  import { VerificationMethodType } from '../../../../enums/verification-method-type.enum';
7
7
  import { EmailsComponent } from '../emails';
8
8
  import { NumbersComponent } from '../numbers';
9
+ import { FsDialogModule } from '@firestitch/dialog';
10
+ import { CdkScrollable } from '@angular/cdk/scrolling';
11
+ import { MatIcon } from '@angular/material/icon';
12
+ import { NgTemplateOutlet } from '@angular/common';
13
+ import { DefaultedComponent } from '../../../defaulted/components/defaulted/defaulted.component';
14
+ import { MatButton } from '@angular/material/button';
15
+ import { FsFormModule } from '@firestitch/form';
16
+ import { FsChipModule } from '@firestitch/chip';
17
+ import { FsPhoneModule } from '@firestitch/phone';
9
18
  import * as i0 from "@angular/core";
10
19
  import * as i1 from "@angular/material/dialog";
11
- import * as i2 from "@firestitch/message";
12
- import * as i3 from "@angular/common";
13
- import * as i4 from "@angular/material/button";
14
- import * as i5 from "@angular/material/icon";
15
- import * as i6 from "@firestitch/dialog";
16
- import * as i7 from "@firestitch/chip";
17
- import * as i8 from "@firestitch/form";
18
- import * as i9 from "../../../defaulted/components/defaulted/defaulted.component";
19
- import * as i10 from "@firestitch/phone";
20
+ import * as i2 from "@firestitch/dialog";
21
+ import * as i3 from "@firestitch/form";
22
+ import * as i4 from "@firestitch/chip";
23
+ import * as i5 from "@firestitch/phone";
20
24
  export class ManageMethodsComponent {
21
- _data;
22
- _cdRef;
23
- _dialog;
24
- _message;
25
+ _data = inject(MAT_DIALOG_DATA);
26
+ _cdRef = inject(ChangeDetectorRef);
27
+ _dialog = inject(MatDialog);
28
+ _message = inject(FsMessage);
25
29
  twoFactorManageService;
26
30
  verificationMethods;
27
31
  verificationMethodTypes = {};
28
32
  VerificationMethodType = VerificationMethodType;
29
33
  _destroy$ = new Subject();
30
34
  _defaultCountry;
31
- constructor(_data, _cdRef, _dialog, _message) {
32
- this._data = _data;
33
- this._cdRef = _cdRef;
34
- this._dialog = _dialog;
35
- this._message = _message;
36
- }
37
35
  ngOnInit() {
38
36
  this._defaultCountry = this._data.defaultCountry;
39
37
  this.twoFactorManageService = this._data.twoFactorManageService;
@@ -122,14 +120,25 @@ export class ManageMethodsComponent {
122
120
  this._destroy$.next(null);
123
121
  this._destroy$.complete();
124
122
  }
125
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ManageMethodsComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i0.ChangeDetectorRef }, { token: i1.MatDialog }, { token: i2.FsMessage }], target: i0.ɵɵFactoryTarget.Component });
126
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: ManageMethodsComponent, selector: "ng-component", ngImport: i0, template: "<fs-dialog>\n <h1 mat-dialog-title>\n 2-step verification\n </h1>\n <mat-dialog-content>\n <table>\n <tr *ngIf=\"verificationMethodTypes[VerificationMethodType.Sms]\">\n <td>\n <mat-icon>\n textsms\n </mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>\n Text message\n </span>\n @if (textHasVerificationMethod) {\n <ng-container [ngTemplateOutlet]=\"enabledChip\"></ng-container>\n }\n <app-defaulted *ngIf=\"defaultSms\"></app-defaulted>\n </div>\n <div class=\"small\">\n Verification codes are sent by text message\n <ng-container *ngIf=\"textHasVerificationMethod\">\n to\n <span class=\"items\">\n <span *ngFor=\"let item of twoFactorManageService.smsVerificationMethods\">\n {{ item.phoneNumber | fsPhone }}\n </span>\n </span>\n </ng-container>\n </div>\n </td>\n <td>\n @if (textHasVerificationMethod) {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"textMessageManage()\">\n Manage\n </button>\n } @else {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"textMessageAdd()\">\n Turn on\n </button>\n }\n </td>\n </tr>\n <tr *ngIf=\"verificationMethodTypes[VerificationMethodType.Email]\">\n <td>\n <mat-icon>\n email\n </mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>\n Email\n </span>\n @if (emailHasVerificationMethod) {\n <ng-container [ngTemplateOutlet]=\"enabledChip\"></ng-container>\n }\n <app-defaulted *ngIf=\"defaultEmail\"></app-defaulted>\n </div>\n <div class=\"small\">\n Verification codes are sent by email\n <ng-container *ngIf=\"emailHasVerificationMethod\">\n to\n <span class=\"items\">\n <span *ngFor=\"let item of twoFactorManageService.emailVerificationMethods\">\n {{ item.email }}\n </span>\n </span>\n </ng-container>\n </div>\n </td>\n <td>\n @if (emailHasVerificationMethod) {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"emailMessageManage()\">\n Manage\n </button>\n } @else {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"emailMessageAdd()\">\n Turn on\n </button>\n }\n </td>\n </tr>\n <tr *ngIf=\"verificationMethodTypes[VerificationMethodType.App]\">\n <td>\n <mat-icon>\n phone_iphone\n </mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>\n Authenticator app\n </span>\n @if (appHasVerificationMethod) {\n <ng-container [ngTemplateOutlet]=\"enabledChip\"></ng-container>\n }\n <app-defaulted *ngIf=\"defaultApp\"></app-defaulted>\n </div>\n <div class=\"small\">\n Verification code is generated by an authenticator app such as Authy or Google Authenticator\n </div>\n </td>\n <td>\n @if (appHasVerificationMethod) {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"appRemove()\">\n Remove\n </button>\n } @else {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"appAdd()\">\n Turn on\n </button>\n }\n </td>\n </tr>\n </table>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n<ng-template #enabledChip>\n <fs-chip\n [backgroundColor]=\"'#70B601'\"\n [size]=\"'tiny'\">\n Enabled\n </fs-chip>\n</ng-template>", styles: ["mat-dialog-content{max-width:500px}table tr td:first-child,table tr td:last-child{width:1%}table tr td:first-child mat-icon,table tr td:last-child mat-icon{display:flex}table tr td{padding:15px 6px;vertical-align:top}table tr button{white-space:nowrap}table tr .type{display:flex;align-items:center}table tr .type span{margin-right:5px}table tr .type app-defaulted{margin-left:4px}.items span+span:not(:last-child):before{content:\", \"}.items span+span:last-child:before{content:\" and \"}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout", "dock", "dockable", "fullscreenPercent"] }, { kind: "component", type: i7.FsChipComponent, selector: "fs-chip", inputs: ["selectable", "removable", "actionable", "value", "maxWidth", "actions", "icon", "image", "selected", "size", "backgroundColor", "borderColor", "color", "outlined"], outputs: ["selectedToggled", "removed"] }, { kind: "directive", type: i8.FsButtonDirective, selector: "[mat-raised-button]:not([fsFormButtonStandalone]),[mat-button]:not([fsFormButtonStandalone]),[mat-flat-button]:not([fsFormButtonStandalone]),[mat-stroked-button]:not([fsFormButtonStandalone])", inputs: ["name", "dirtySubmit", "form"] }, { kind: "component", type: i9.DefaultedComponent, selector: "app-defaulted" }, { kind: "pipe", type: i10.FsPhonePipe, name: "fsPhone" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
123
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ManageMethodsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
124
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: ManageMethodsComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<fs-dialog>\n <h1 mat-dialog-title>\n 2-step verification\n </h1>\n <mat-dialog-content>\n <table>\n @if (verificationMethodTypes[VerificationMethodType.Sms]) {\n <tr>\n <td>\n <mat-icon>\n textsms\n </mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>\n Text message\n </span>\n @if (textHasVerificationMethod) {\n <ng-container [ngTemplateOutlet]=\"enabledChip\"></ng-container>\n }\n @if (defaultSms) {\n <app-defaulted></app-defaulted>\n }\n </div>\n <div class=\"small\">\n Verification codes are sent by text message\n @if (textHasVerificationMethod) {\n to\n <span class=\"items\">\n @for (item of twoFactorManageService.smsVerificationMethods; track item) {\n <span>\n {{ item.phoneNumber | fsPhone }}\n </span>\n }\n </span>\n }\n </div>\n </td>\n <td>\n @if (textHasVerificationMethod) {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"textMessageManage()\">\n Manage\n </button>\n } @else {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"textMessageAdd()\">\n Turn on\n </button>\n }\n </td>\n </tr>\n }\n @if (verificationMethodTypes[VerificationMethodType.Email]) {\n <tr>\n <td>\n <mat-icon>\n email\n </mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>\n Email\n </span>\n @if (emailHasVerificationMethod) {\n <ng-container [ngTemplateOutlet]=\"enabledChip\"></ng-container>\n }\n @if (defaultEmail) {\n <app-defaulted></app-defaulted>\n }\n </div>\n <div class=\"small\">\n Verification codes are sent by email\n @if (emailHasVerificationMethod) {\n to\n <span class=\"items\">\n @for (item of twoFactorManageService.emailVerificationMethods; track item) {\n <span>\n {{ item.email }}\n </span>\n }\n </span>\n }\n </div>\n </td>\n <td>\n @if (emailHasVerificationMethod) {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"emailMessageManage()\">\n Manage\n </button>\n } @else {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"emailMessageAdd()\">\n Turn on\n </button>\n }\n </td>\n </tr>\n }\n @if (verificationMethodTypes[VerificationMethodType.App]) {\n <tr>\n <td>\n <mat-icon>\n phone_iphone\n </mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>\n Authenticator app\n </span>\n @if (appHasVerificationMethod) {\n <ng-container [ngTemplateOutlet]=\"enabledChip\"></ng-container>\n }\n @if (defaultApp) {\n <app-defaulted></app-defaulted>\n }\n </div>\n <div class=\"small\">\n Verification code is generated by an authenticator app such as Authy or Google Authenticator\n </div>\n </td>\n <td>\n @if (appHasVerificationMethod) {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"appRemove()\">\n Remove\n </button>\n } @else {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"appAdd()\">\n Turn on\n </button>\n }\n </td>\n </tr>\n }\n </table>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n<ng-template #enabledChip>\n <fs-chip\n [backgroundColor]=\"'#70B601'\"\n [size]=\"'tiny'\">\n Enabled\n </fs-chip>\n</ng-template>", styles: ["mat-dialog-content{max-width:500px}table tr td:first-child,table tr td:last-child{width:1%}table tr td:first-child mat-icon,table tr td:last-child mat-icon{display:flex}table tr td{padding:15px 6px;vertical-align:top}table tr button{white-space:nowrap}table tr .type{display:flex;align-items:center}table tr .type span{margin-right:5px}table tr .type app-defaulted{margin-left:4px}.items span+span:not(:last-child):before{content:\", \"}.items span+span:last-child:before{content:\" and \"}\n"], dependencies: [{ kind: "ngmodule", type: FsDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i2.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout", "dock", "dockable", "fullscreenPercent"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DefaultedComponent, selector: "app-defaulted" }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsButtonDirective, selector: "[mat-raised-button]:not([fsFormButtonStandalone]),[mat-button]:not([fsFormButtonStandalone]),[mat-flat-button]:not([fsFormButtonStandalone]),[mat-stroked-button]:not([fsFormButtonStandalone])", inputs: ["name", "dirtySubmit", "form"] }, { kind: "ngmodule", type: FsChipModule }, { kind: "component", type: i4.FsChipComponent, selector: "fs-chip", inputs: ["selectable", "removable", "actionable", "value", "maxWidth", "actions", "icon", "image", "selected", "size", "backgroundColor", "borderColor", "color", "outlined"], outputs: ["selectedToggled", "removed"] }, { kind: "ngmodule", type: FsPhoneModule }, { kind: "pipe", type: i5.FsPhonePipe, name: "fsPhone" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
127
125
  }
128
126
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ManageMethodsComponent, decorators: [{
129
127
  type: Component,
130
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<fs-dialog>\n <h1 mat-dialog-title>\n 2-step verification\n </h1>\n <mat-dialog-content>\n <table>\n <tr *ngIf=\"verificationMethodTypes[VerificationMethodType.Sms]\">\n <td>\n <mat-icon>\n textsms\n </mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>\n Text message\n </span>\n @if (textHasVerificationMethod) {\n <ng-container [ngTemplateOutlet]=\"enabledChip\"></ng-container>\n }\n <app-defaulted *ngIf=\"defaultSms\"></app-defaulted>\n </div>\n <div class=\"small\">\n Verification codes are sent by text message\n <ng-container *ngIf=\"textHasVerificationMethod\">\n to\n <span class=\"items\">\n <span *ngFor=\"let item of twoFactorManageService.smsVerificationMethods\">\n {{ item.phoneNumber | fsPhone }}\n </span>\n </span>\n </ng-container>\n </div>\n </td>\n <td>\n @if (textHasVerificationMethod) {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"textMessageManage()\">\n Manage\n </button>\n } @else {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"textMessageAdd()\">\n Turn on\n </button>\n }\n </td>\n </tr>\n <tr *ngIf=\"verificationMethodTypes[VerificationMethodType.Email]\">\n <td>\n <mat-icon>\n email\n </mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>\n Email\n </span>\n @if (emailHasVerificationMethod) {\n <ng-container [ngTemplateOutlet]=\"enabledChip\"></ng-container>\n }\n <app-defaulted *ngIf=\"defaultEmail\"></app-defaulted>\n </div>\n <div class=\"small\">\n Verification codes are sent by email\n <ng-container *ngIf=\"emailHasVerificationMethod\">\n to\n <span class=\"items\">\n <span *ngFor=\"let item of twoFactorManageService.emailVerificationMethods\">\n {{ item.email }}\n </span>\n </span>\n </ng-container>\n </div>\n </td>\n <td>\n @if (emailHasVerificationMethod) {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"emailMessageManage()\">\n Manage\n </button>\n } @else {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"emailMessageAdd()\">\n Turn on\n </button>\n }\n </td>\n </tr>\n <tr *ngIf=\"verificationMethodTypes[VerificationMethodType.App]\">\n <td>\n <mat-icon>\n phone_iphone\n </mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>\n Authenticator app\n </span>\n @if (appHasVerificationMethod) {\n <ng-container [ngTemplateOutlet]=\"enabledChip\"></ng-container>\n }\n <app-defaulted *ngIf=\"defaultApp\"></app-defaulted>\n </div>\n <div class=\"small\">\n Verification code is generated by an authenticator app such as Authy or Google Authenticator\n </div>\n </td>\n <td>\n @if (appHasVerificationMethod) {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"appRemove()\">\n Remove\n </button>\n } @else {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"appAdd()\">\n Turn on\n </button>\n }\n </td>\n </tr>\n </table>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n<ng-template #enabledChip>\n <fs-chip\n [backgroundColor]=\"'#70B601'\"\n [size]=\"'tiny'\">\n Enabled\n </fs-chip>\n</ng-template>", styles: ["mat-dialog-content{max-width:500px}table tr td:first-child,table tr td:last-child{width:1%}table tr td:first-child mat-icon,table tr td:last-child mat-icon{display:flex}table tr td{padding:15px 6px;vertical-align:top}table tr button{white-space:nowrap}table tr .type{display:flex;align-items:center}table tr .type span{margin-right:5px}table tr .type app-defaulted{margin-left:4px}.items span+span:not(:last-child):before{content:\", \"}.items span+span:last-child:before{content:\" and \"}\n"] }]
131
- }], ctorParameters: () => [{ type: undefined, decorators: [{
132
- type: Inject,
133
- args: [MAT_DIALOG_DATA]
134
- }] }, { type: i0.ChangeDetectorRef }, { type: i1.MatDialog }, { type: i2.FsMessage }] });
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLW1ldGhvZHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL21hbmFnZS9jb21wb25lbnRzL21hbmFnZS1tZXRob2RzL21hbmFnZS1tZXRob2RzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tYW5hZ2UvY29tcG9uZW50cy9tYW5hZ2UtbWV0aG9kcy9tYW5hZ2UtbWV0aG9kcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQzFDLFNBQVMsRUFBRSxNQUFNLEdBR2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWhELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRXpGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDOzs7Ozs7Ozs7Ozs7QUFROUMsTUFBTSxPQUFPLHNCQUFzQjtJQVdFO0lBQ3pCO0lBQ0E7SUFDQTtJQVpILHNCQUFzQixDQUF5QjtJQUMvQyxtQkFBbUIsQ0FBQztJQUNwQix1QkFBdUIsR0FBRyxFQUFFLENBQUM7SUFDN0Isc0JBQXNCLEdBQUcsc0JBQXNCLENBQUM7SUFFL0MsU0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDMUIsZUFBZSxDQUFTO0lBRWhDLFlBQ21D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bkMseStJQTBKYzs7MkZEaklELHNCQUFzQjtrQkFMbEMsU0FBUztzQ0FHUyx1QkFBdUIsQ0FBQyxNQUFNOzswQkFhNUMsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsIEluamVjdCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9lbnVtcy92ZXJpZmljYXRpb24tbWV0aG9kLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBUd29GYWN0b3JNYW5hZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgRW1haWxzQ29tcG9uZW50IH0gZnJvbSAnLi4vZW1haWxzJztcbmltcG9ydCB7IE51bWJlcnNDb21wb25lbnQgfSBmcm9tICcuLi9udW1iZXJzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL21hbmFnZS1tZXRob2RzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWFuYWdlLW1ldGhvZHMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1hbmFnZU1ldGhvZHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIHR3b0ZhY3Rvck1hbmFnZVNlcnZpY2U6IFR3b0ZhY3Rvck1hbmFnZVNlcnZpY2U7XG4gIHB1YmxpYyB2ZXJpZmljYXRpb25NZXRob2RzO1xuICBwdWJsaWMgdmVyaWZpY2F0aW9uTWV0aG9kVHlwZXMgPSB7fTtcbiAgcHVibGljIFZlcmlmaWNhdGlvbk1ldGhvZFR5cGUgPSBWZXJpZmljYXRpb25NZXRob2RUeXBlO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBfZGVmYXVsdENvdW50cnk6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBfZGF0YTogYW55LFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIF9tZXNzYWdlOiBGc01lc3NhZ2UsXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZGVmYXVsdENvdW50cnkgPSB0aGlzLl9kYXRhLmRlZmF1bHRDb3VudHJ5O1xuICAgIHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZSA9IHRoaXMuX2RhdGEudHdvRmFjdG9yTWFuYWdlU2VydmljZTtcbiAgICB0aGlzLnZlcmlmaWNhdGlvbk1ldGhvZFR5cGVzID0gdGhpcy5fZGF0YS52ZXJpZmljYXRpb25NZXRob2RUeXBlc1xuICAgICAgLnJlZHVjZSgodmVyaWZpY2F0aW9uTWV0aG9kVHlwZXMsIHZlcmlmaWNhdGlvbk1ldGhvZFR5cGUpID0+IHtcbiAgICAgICAgdmVyaWZpY2F0aW9uTWV0aG9kVHlwZXNbdmVyaWZpY2F0aW9uTWV0aG9kVHlwZV0gPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB2ZXJpZmljYXRpb25NZXRob2RUeXBlcztcbiAgICAgIH0sIHt9KTtcblxuICAgIHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZS52ZXJpZmljYXRpb25NZXRob2RzJFxuICAgICAgLnN1YnNjcmliZSgodmVyaWZpY2F0aW9uTWV0aG9kcykgPT4ge1xuICAgICAgICB0aGlzLnZlcmlmaWNhdGlvbk1ldGhvZHMgPSB2ZXJpZmljYXRpb25NZXRob2RzO1xuICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBkZWZhdWx0U21zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2Uuc21zVmVyaWZpY2F0aW9uTWV0aG9kc1xuICAgICAgLnNvbWUoKHZlcmlmaWNhdGlvbk1ldGhvZCkgPT4ge1xuICAgICAgICByZXR1cm4gdmVyaWZpY2F0aW9uTWV0aG9kLmRlZmF1bHQ7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGVmYXVsdEFwcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLmFwcFZlcmlmaWNhdGlvbk1ldGhvZHNcbiAgICAgIC5zb21lKCh2ZXJpZmljYXRpb25NZXRob2QpID0+IHtcbiAgICAgICAgcmV0dXJuIHZlcmlmaWNhdGlvbk1ldGhvZC5kZWZhdWx0O1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlZmF1bHRFbWFpbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLmVtYWlsVmVyaWZpY2F0aW9uTWV0aG9kc1xuICAgICAgLnNvbWUoKHZlcmlmaWNhdGlvbk1ldGhvZCkgPT4ge1xuICAgICAgICByZXR1cm4gdmVyaWZpY2F0aW9uTWV0aG9kLmRlZmF1bHQ7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGV4dEhhc1ZlcmlmaWNhdGlvbk1ldGhvZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLmhhc1ZlcmlmaWNhdGlvbk1ldGhvZChWZXJpZmljYXRpb25NZXRob2RUeXBlLlNtcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFwcEhhc1ZlcmlmaWNhdGlvbk1ldGhvZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLmhhc1ZlcmlmaWNhdGlvbk1ldGhvZChWZXJpZmljYXRpb25NZXRob2RUeXBlLkFwcCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVtYWlsSGFzVmVyaWZpY2F0aW9uTWV0aG9kKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UuaGFzVmVyaWZpY2F0aW9uTWV0aG9kKFZlcmlmaWNhdGlvbk1ldGhvZFR5cGUuRW1haWwpO1xuICB9XG5cbiAgcHVibGljIHRleHRNZXNzYWdlTWFuYWdlKCk6IHZvaWQge1xuICAgIHRoaXMuX2RpYWxvZy5vcGVuKE51bWJlcnNDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgdHdvRmFjdG9yTWFuYWdlU2VydmljZTogdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLFxuICAgICAgICBkZWZhdWx0Q291bnRyeTogdGhpcy5fZGVmYXVsdENvdW50cnksXG4gICAgICB9LFxuICAgICAgbWluV2lkdGg6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdGV4dE1lc3NhZ2VBZGQoKTogdm9pZCB7XG4gICAgdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLmFkZFNtcyQodGhpcy5fZGVmYXVsdENvdW50cnkpXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgZW1haWxNZXNzYWdlTWFuYWdlKCk6IHZvaWQge1xuICAgIHRoaXMuX2RpYWxvZy5vcGVuKEVtYWlsc0NvbXBvbmVudCwge1xuICAgICAgZGF0YToge1xuICAgICAgICB0d29GYWN0b3JNYW5hZ2VTZXJ2aWNlOiB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UsXG4gICAgICB9LFxuICAgICAgbWluV2lkdGg6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZW1haWxNZXNzYWdlQWRkKCk6IHZvaWQge1xuICAgIHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZS5hZGRFbWFpbCQoKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGFwcFJlbW92ZSgpOiB2b2lkIHtcbiAgICBjb25zdCB2ZXJpZmljYXRpb25NZXRob2QgPSB0aGlzLnZlcmlmaWNhdGlvbk1ldGhvZHNcbiAgICAgIC5maW5kKChfdmVyaWZpY2F0aW9uTWV0aG9kKSA9PiB7XG4gICAgICAgIHJldHVybiBfdmVyaWZpY2F0aW9uTWV0aG9kLnR5cGUgPT09IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGUuQXBwO1xuICAgICAgfSk7XG5cbiAgICBpZih2ZXJpZmljYXRpb25NZXRob2QpIHtcbiAgICAgIHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZS5hY2NvdW50VmVyaWZ5JCgpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UudmVyaWZpY2F0aW9uTWV0aG9kRGVsZXRlJCh2ZXJpZmljYXRpb25NZXRob2QpKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ1JlbW92ZWQgQXBwIEF1dGhlbnRpY2F0b3IgdmVyaWZpY2F0aW9uIG1ldGhvZCcpO1xuICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXBwQWRkKCk6IHZvaWQge1xuICAgIHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZS5hZGRBcHAkKClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxmcy1kaWFsb2c+XG4gIDxoMSBtYXQtZGlhbG9nLXRpdGxlPlxuICAgIDItc3RlcCB2ZXJpZmljYXRpb25cbiAgPC9oMT5cbiAgPG1hdC1kaWFsb2ctY29udGVudD5cbiAgICA8dGFibGU+XG4gICAgICA8dHIgKm5nSWY9XCJ2ZXJpZmljYXRpb25NZXRob2RUeXBlc1tWZXJpZmljYXRpb25NZXRob2RUeXBlLlNtc11cIj5cbiAgICAgICAgPHRkPlxuICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgIHRleHRzbXNcbiAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInR5cGVcIj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICBUZXh0IG1lc3NhZ2VcbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIEBpZiAodGV4dEhhc1ZlcmlmaWNhdGlvbk1ldGhvZCkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVuYWJsZWRDaGlwXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8YXBwLWRlZmF1bHRlZCAqbmdJZj1cImRlZmF1bHRTbXNcIj48L2FwcC1kZWZhdWx0ZWQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsXCI+XG4gICAgICAgICAgICBWZXJpZmljYXRpb24gY29kZXMgYXJlIHNlbnQgYnkgdGV4dCBtZXNzYWdlXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGV4dEhhc1ZlcmlmaWNhdGlvbk1ldGhvZFwiPlxuICAgICAgICAgICAgICB0b1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW1zXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGl0ZW0gb2YgdHdvRmFjdG9yTWFuYWdlU2VydmljZS5zbXNWZXJpZmljYXRpb25NZXRob2RzXCI+XG4gICAgICAgICAgICAgICAgICB7eyBpdGVtLnBob25lTnVtYmVyIHwgZnNQaG9uZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZD5cbiAgICAgICAgICBAaWYgKHRleHRIYXNWZXJpZmljYXRpb25NZXRob2QpIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidGV4dE1lc3NhZ2VNYW5hZ2UoKVwiPlxuICAgICAgICAgICAgICBNYW5hZ2VcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0ZXh0TWVzc2FnZUFkZCgpXCI+XG4gICAgICAgICAgICAgIFR1cm4gb25cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHIgKm5nSWY9XCJ2ZXJpZmljYXRpb25NZXRob2RUeXBlc1tWZXJpZmljYXRpb25NZXRob2RUeXBlLkVtYWlsXVwiPlxuICAgICAgICA8dGQ+XG4gICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgZW1haWxcbiAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInR5cGVcIj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICBFbWFpbFxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgQGlmIChlbWFpbEhhc1ZlcmlmaWNhdGlvbk1ldGhvZCkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVuYWJsZWRDaGlwXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8YXBwLWRlZmF1bHRlZCAqbmdJZj1cImRlZmF1bHRFbWFpbFwiPjwvYXBwLWRlZmF1bHRlZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic21hbGxcIj5cbiAgICAgICAgICAgIFZlcmlmaWNhdGlvbiBjb2RlcyBhcmUgc2VudCBieSBlbWFpbFxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVtYWlsSGFzVmVyaWZpY2F0aW9uTWV0aG9kXCI+XG4gICAgICAgICAgICAgIHRvXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXRlbXNcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiB0d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLmVtYWlsVmVyaWZpY2F0aW9uTWV0aG9kc1wiPlxuICAgICAgICAgICAgICAgICAge3sgaXRlbS5lbWFpbCB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZD5cbiAgICAgICAgICBAaWYgKGVtYWlsSGFzVmVyaWZpY2F0aW9uTWV0aG9kKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImVtYWlsTWVzc2FnZU1hbmFnZSgpXCI+XG4gICAgICAgICAgICAgIE1hbmFnZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImVtYWlsTWVzc2FnZUFkZCgpXCI+XG4gICAgICAgICAgICAgIFR1cm4gb25cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHIgKm5nSWY9XCJ2ZXJpZmljYXRpb25NZXRob2RUeXBlc1tWZXJpZmljYXRpb25NZXRob2RUeXBlLkFwcF1cIj5cbiAgICAgICAgPHRkPlxuICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgIHBob25lX2lwaG9uZVxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZVwiPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIEF1dGhlbnRpY2F0b3IgYXBwXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICBAaWYgKGFwcEhhc1ZlcmlmaWNhdGlvbk1ldGhvZCkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVuYWJsZWRDaGlwXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8YXBwLWRlZmF1bHRlZCAqbmdJZj1cImRlZmF1bHRBcHBcIj48L2FwcC1kZWZhdWx0ZWQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsXCI+XG4gICAgICAgICAgICBWZXJpZmljYXRpb24gY29kZSBpcyBnZW5lcmF0ZWQgYnkgYW4gYXV0aGVudGljYXRvciBhcHAgc3VjaCBhcyBBdXRoeSBvciBHb29nbGUgQXV0aGVudGljYXRvclxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQ+XG4gICAgICAgICAgQGlmIChhcHBIYXNWZXJpZmljYXRpb25NZXRob2QpIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwUmVtb3ZlKClcIj5cbiAgICAgICAgICAgICAgUmVtb3ZlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwQWRkKClcIj5cbiAgICAgICAgICAgICAgVHVybiBvblxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICA8L3RhYmxlPlxuICA8L21hdC1kaWFsb2ctY29udGVudD5cbiAgPG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFttYXQtZGlhbG9nLWNsb3NlXT1cInVuZGVmaW5lZFwiPlxuICAgICAgQ2xvc2VcbiAgICA8L2J1dHRvbj5cbiAgPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG48L2ZzLWRpYWxvZz5cbjxuZy10ZW1wbGF0ZSAjZW5hYmxlZENoaXA+XG4gIDxmcy1jaGlwXG4gICAgICBbYmFja2dyb3VuZENvbG9yXT1cIicjNzBCNjAxJ1wiXG4gICAgICBbc2l6ZV09XCIndGlueSdcIj5cbiAgICBFbmFibGVkXG4gIDwvZnMtY2hpcD5cbjwvbmctdGVtcGxhdGU+Il19
128
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
129
+ FsDialogModule,
130
+ MatDialogTitle,
131
+ CdkScrollable,
132
+ MatDialogContent,
133
+ MatIcon,
134
+ NgTemplateOutlet,
135
+ DefaultedComponent,
136
+ MatButton,
137
+ FsFormModule,
138
+ MatDialogActions,
139
+ MatDialogClose,
140
+ FsChipModule,
141
+ FsPhoneModule,
142
+ ], template: "<fs-dialog>\n <h1 mat-dialog-title>\n 2-step verification\n </h1>\n <mat-dialog-content>\n <table>\n @if (verificationMethodTypes[VerificationMethodType.Sms]) {\n <tr>\n <td>\n <mat-icon>\n textsms\n </mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>\n Text message\n </span>\n @if (textHasVerificationMethod) {\n <ng-container [ngTemplateOutlet]=\"enabledChip\"></ng-container>\n }\n @if (defaultSms) {\n <app-defaulted></app-defaulted>\n }\n </div>\n <div class=\"small\">\n Verification codes are sent by text message\n @if (textHasVerificationMethod) {\n to\n <span class=\"items\">\n @for (item of twoFactorManageService.smsVerificationMethods; track item) {\n <span>\n {{ item.phoneNumber | fsPhone }}\n </span>\n }\n </span>\n }\n </div>\n </td>\n <td>\n @if (textHasVerificationMethod) {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"textMessageManage()\">\n Manage\n </button>\n } @else {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"textMessageAdd()\">\n Turn on\n </button>\n }\n </td>\n </tr>\n }\n @if (verificationMethodTypes[VerificationMethodType.Email]) {\n <tr>\n <td>\n <mat-icon>\n email\n </mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>\n Email\n </span>\n @if (emailHasVerificationMethod) {\n <ng-container [ngTemplateOutlet]=\"enabledChip\"></ng-container>\n }\n @if (defaultEmail) {\n <app-defaulted></app-defaulted>\n }\n </div>\n <div class=\"small\">\n Verification codes are sent by email\n @if (emailHasVerificationMethod) {\n to\n <span class=\"items\">\n @for (item of twoFactorManageService.emailVerificationMethods; track item) {\n <span>\n {{ item.email }}\n </span>\n }\n </span>\n }\n </div>\n </td>\n <td>\n @if (emailHasVerificationMethod) {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"emailMessageManage()\">\n Manage\n </button>\n } @else {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"emailMessageAdd()\">\n Turn on\n </button>\n }\n </td>\n </tr>\n }\n @if (verificationMethodTypes[VerificationMethodType.App]) {\n <tr>\n <td>\n <mat-icon>\n phone_iphone\n </mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>\n Authenticator app\n </span>\n @if (appHasVerificationMethod) {\n <ng-container [ngTemplateOutlet]=\"enabledChip\"></ng-container>\n }\n @if (defaultApp) {\n <app-defaulted></app-defaulted>\n }\n </div>\n <div class=\"small\">\n Verification code is generated by an authenticator app such as Authy or Google Authenticator\n </div>\n </td>\n <td>\n @if (appHasVerificationMethod) {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"appRemove()\">\n Remove\n </button>\n } @else {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"appAdd()\">\n Turn on\n </button>\n }\n </td>\n </tr>\n }\n </table>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n<ng-template #enabledChip>\n <fs-chip\n [backgroundColor]=\"'#70B601'\"\n [size]=\"'tiny'\">\n Enabled\n </fs-chip>\n</ng-template>", styles: ["mat-dialog-content{max-width:500px}table tr td:first-child,table tr td:last-child{width:1%}table tr td:first-child mat-icon,table tr td:last-child mat-icon{display:flex}table tr td{padding:15px 6px;vertical-align:top}table tr button{white-space:nowrap}table tr .type{display:flex;align-items:center}table tr .type span{margin-right:5px}table tr .type app-defaulted{margin-left:4px}.items span+span:not(:last-child):before{content:\", \"}.items span+span:last-child:before{content:\" and \"}\n"] }]
143
+ }] });
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLW1ldGhvZHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL21hbmFnZS9jb21wb25lbnRzL21hbmFnZS1tZXRob2RzL21hbmFnZS1tZXRob2RzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tYW5hZ2UvY29tcG9uZW50cy9tYW5hZ2UtbWV0aG9kcy9tYW5hZ2UtbWV0aG9kcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakgsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTFJLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUV6RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIs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Q0FBQyxDQUMzRjtpQkFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLCtDQUErQyxDQUFDLENBQUM7Z0JBQ3ZFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFO2FBQ2xDLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQzt1R0F4SFUsc0JBQXNCOzJGQUF0QixzQkFBc0Isd0VDN0NuQyxpM0pBMEtjLHFpQkQ1SU4sY0FBYywyMEJBSWQsT0FBTywySUFDUCxnQkFBZ0Isb0pBQ2hCLGtCQUFrQiwwREFDbEIsU0FBUyxnTEFDVCxZQUFZLHVVQUdaLFlBQVksNFRBQ1osYUFBYTs7MkZBR1Isc0JBQXNCO2tCQXJCbEMsU0FBUztzQ0FHVyx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDTCxjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLFNBQVM7d0JBQ1QsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixhQUFhO3FCQUNoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nLCBNYXREaWFsb2dUaXRsZSwgTWF0RGlhbG9nQ29udGVudCwgTWF0RGlhbG9nQWN0aW9ucywgTWF0RGlhbG9nQ2xvc2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBGc01lc3NhZ2UgfSBmcm9tICdAZmlyZXN0aXRjaC9tZXNzYWdlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBWZXJpZmljYXRpb25NZXRob2RUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW51bXMvdmVyaWZpY2F0aW9uLW1ldGhvZC10eXBlLmVudW0nO1xuaW1wb3J0IHsgVHdvRmFjdG9yTWFuYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEVtYWlsc0NvbXBvbmVudCB9IGZyb20gJy4uL2VtYWlscyc7XG5pbXBvcnQgeyBOdW1iZXJzQ29tcG9uZW50IH0gZnJvbSAnLi4vbnVtYmVycyc7XG5pbXBvcnQgeyBGc0RpYWxvZ01vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2RpYWxvZyc7XG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERlZmF1bHRlZENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2RlZmF1bHRlZC9jb21wb25lbnRzL2RlZmF1bHRlZC9kZWZhdWx0ZWQuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBGc0Zvcm1Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9mb3JtJztcbmltcG9ydCB7IEZzQ2hpcE1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2NoaXAnO1xuaW1wb3J0IHsgRnNQaG9uZU1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL3Bob25lJztcblxuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWFuYWdlLW1ldGhvZHMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL21hbmFnZS1tZXRob2RzLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEZzRGlhbG9nTW9kdWxlLFxuICAgICAgICBNYXREaWFsb2dUaXRsZSxcbiAgICAgICAgQ2RrU2Nyb2xsYWJsZSxcbiAgICAgICAgTWF0RGlhbG9nQ29udGVudCxcbiAgICAgICAgTWF0SWNvbixcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgRGVmYXVsdGVkQ29tcG9uZW50LFxuICAgICAgICBNYXRCdXR0b24sXG4gICAgICAgIEZzRm9ybU1vZHVsZSxcbiAgICAgICAgTWF0RGlhbG9nQWN0aW9ucyxcbiAgICAgICAgTWF0RGlhbG9nQ2xvc2UsXG4gICAgICAgIEZzQ2hpcE1vZHVsZSxcbiAgICAgICAgRnNQaG9uZU1vZHVsZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNYW5hZ2VNZXRob2RzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9kYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSk7XG4gIHByaXZhdGUgX2NkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSBfZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XG4gIHByaXZhdGUgX21lc3NhZ2UgPSBpbmplY3QoRnNNZXNzYWdlKTtcblxuXG4gIHB1YmxpYyB0d29GYWN0b3JNYW5hZ2VTZXJ2aWNlOiBUd29GYWN0b3JNYW5hZ2VTZXJ2aWNlO1xuICBwdWJsaWMgdmVyaWZpY2F0aW9uTWV0aG9kcztcbiAgcHVibGljIHZlcmlmaWNhdGlvbk1ldGhvZFR5cGVzID0ge307XG4gIHB1YmxpYyBWZXJpZmljYXRpb25NZXRob2RUeXBlID0gVmVyaWZpY2F0aW9uTWV0aG9kVHlwZTtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgX2RlZmF1bHRDb3VudHJ5OiBzdHJpbmc7XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2RlZmF1bHRDb3VudHJ5ID0gdGhpcy5fZGF0YS5kZWZhdWx0Q291bnRyeTtcbiAgICB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UgPSB0aGlzLl9kYXRhLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2U7XG4gICAgdGhpcy52ZXJpZmljYXRpb25NZXRob2RUeXBlcyA9IHRoaXMuX2RhdGEudmVyaWZpY2F0aW9uTWV0aG9kVHlwZXNcbiAgICAgIC5yZWR1Y2UoKHZlcmlmaWNhdGlvbk1ldGhvZFR5cGVzLCB2ZXJpZmljYXRpb25NZXRob2RUeXBlKSA9PiB7XG4gICAgICAgIHZlcmlmaWNhdGlvbk1ldGhvZFR5cGVzW3ZlcmlmaWNhdGlvbk1ldGhvZFR5cGVdID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdmVyaWZpY2F0aW9uTWV0aG9kVHlwZXM7XG4gICAgICB9LCB7fSk7XG5cbiAgICB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UudmVyaWZpY2F0aW9uTWV0aG9kcyRcbiAgICAgIC5zdWJzY3JpYmUoKHZlcmlmaWNhdGlvbk1ldGhvZHMpID0+IHtcbiAgICAgICAgdGhpcy52ZXJpZmljYXRpb25NZXRob2RzID0gdmVyaWZpY2F0aW9uTWV0aG9kcztcbiAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGVmYXVsdFNtcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLnNtc1ZlcmlmaWNhdGlvbk1ldGhvZHNcbiAgICAgIC5zb21lKCh2ZXJpZmljYXRpb25NZXRob2QpID0+IHtcbiAgICAgICAgcmV0dXJuIHZlcmlmaWNhdGlvbk1ldGhvZC5kZWZhdWx0O1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlZmF1bHRBcHAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZS5hcHBWZXJpZmljYXRpb25NZXRob2RzXG4gICAgICAuc29tZSgodmVyaWZpY2F0aW9uTWV0aG9kKSA9PiB7XG4gICAgICAgIHJldHVybiB2ZXJpZmljYXRpb25NZXRob2QuZGVmYXVsdDtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBkZWZhdWx0RW1haWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZS5lbWFpbFZlcmlmaWNhdGlvbk1ldGhvZHNcbiAgICAgIC5zb21lKCh2ZXJpZmljYXRpb25NZXRob2QpID0+IHtcbiAgICAgICAgcmV0dXJuIHZlcmlmaWNhdGlvbk1ldGhvZC5kZWZhdWx0O1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRleHRIYXNWZXJpZmljYXRpb25NZXRob2QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZS5oYXNWZXJpZmljYXRpb25NZXRob2QoVmVyaWZpY2F0aW9uTWV0aG9kVHlwZS5TbXMpO1xuICB9XG5cbiAgcHVibGljIGdldCBhcHBIYXNWZXJpZmljYXRpb25NZXRob2QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZS5oYXNWZXJpZmljYXRpb25NZXRob2QoVmVyaWZpY2F0aW9uTWV0aG9kVHlwZS5BcHApO1xuICB9XG5cbiAgcHVibGljIGdldCBlbWFpbEhhc1ZlcmlmaWNhdGlvbk1ldGhvZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLmhhc1ZlcmlmaWNhdGlvbk1ldGhvZChWZXJpZmljYXRpb25NZXRob2RUeXBlLkVtYWlsKTtcbiAgfVxuXG4gIHB1YmxpYyB0ZXh0TWVzc2FnZU1hbmFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaWFsb2cub3BlbihOdW1iZXJzQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIHR3b0ZhY3Rvck1hbmFnZVNlcnZpY2U6IHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZSxcbiAgICAgICAgZGVmYXVsdENvdW50cnk6IHRoaXMuX2RlZmF1bHRDb3VudHJ5LFxuICAgICAgfSxcbiAgICAgIG1pbldpZHRoOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHRleHRNZXNzYWdlQWRkKCk6IHZvaWQge1xuICAgIHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZS5hZGRTbXMkKHRoaXMuX2RlZmF1bHRDb3VudHJ5KVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGVtYWlsTWVzc2FnZU1hbmFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaWFsb2cub3BlbihFbWFpbHNDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgdHdvRmFjdG9yTWFuYWdlU2VydmljZTogdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLFxuICAgICAgfSxcbiAgICAgIG1pbldpZHRoOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGVtYWlsTWVzc2FnZUFkZCgpOiB2b2lkIHtcbiAgICB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UuYWRkRW1haWwkKClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhcHBSZW1vdmUoKTogdm9pZCB7XG4gICAgY29uc3QgdmVyaWZpY2F0aW9uTWV0aG9kID0gdGhpcy52ZXJpZmljYXRpb25NZXRob2RzXG4gICAgICAuZmluZCgoX3ZlcmlmaWNhdGlvbk1ldGhvZCkgPT4ge1xuICAgICAgICByZXR1cm4gX3ZlcmlmaWNhdGlvbk1ldGhvZC50eXBlID09PSBWZXJpZmljYXRpb25NZXRob2RUeXBlLkFwcDtcbiAgICAgIH0pO1xuXG4gICAgaWYodmVyaWZpY2F0aW9uTWV0aG9kKSB7XG4gICAgICB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UuYWNjb3VudFZlcmlmeSQoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLnZlcmlmaWNhdGlvbk1ldGhvZERlbGV0ZSQodmVyaWZpY2F0aW9uTWV0aG9kKSksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdSZW1vdmVkIEFwcCBBdXRoZW50aWNhdG9yIHZlcmlmaWNhdGlvbiBtZXRob2QnKTtcbiAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFwcEFkZCgpOiB2b2lkIHtcbiAgICB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UuYWRkQXBwJCgpXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8ZnMtZGlhbG9nPlxuICA8aDEgbWF0LWRpYWxvZy10aXRsZT5cbiAgICAyLXN0ZXAgdmVyaWZpY2F0aW9uXG4gIDwvaDE+XG4gIDxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICAgPHRhYmxlPlxuICAgICAgQGlmICh2ZXJpZmljYXRpb25NZXRob2RUeXBlc1tWZXJpZmljYXRpb25NZXRob2RUeXBlLlNtc10pIHtcbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgICAgdGV4dHNtc1xuICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0eXBlXCI+XG4gICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIFRleHQgbWVzc2FnZVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIEBpZiAodGV4dEhhc1ZlcmlmaWNhdGlvbk1ldGhvZCkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW5hYmxlZENoaXBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGRlZmF1bHRTbXMpIHtcbiAgICAgICAgICAgICAgICA8YXBwLWRlZmF1bHRlZD48L2FwcC1kZWZhdWx0ZWQ+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsXCI+XG4gICAgICAgICAgICAgIFZlcmlmaWNhdGlvbiBjb2RlcyBhcmUgc2VudCBieSB0ZXh0IG1lc3NhZ2VcbiAgICAgICAgICAgICAgQGlmICh0ZXh0SGFzVmVyaWZpY2F0aW9uTWV0aG9kKSB7XG4gICAgICAgICAgICAgICAgdG9cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIHR3b0ZhY3Rvck1hbmFnZVNlcnZpY2Uuc21zVmVyaWZpY2F0aW9uTWV0aG9kczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnBob25lTnVtYmVyIHwgZnNQaG9uZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgIEBpZiAodGV4dEhhc1ZlcmlmaWNhdGlvbk1ldGhvZCkge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRleHRNZXNzYWdlTWFuYWdlKClcIj5cbiAgICAgICAgICAgICAgICBNYW5hZ2VcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0ZXh0TWVzc2FnZUFkZCgpXCI+XG4gICAgICAgICAgICAgICAgVHVybiBvblxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgfVxuICAgICAgQGlmICh2ZXJpZmljYXRpb25NZXRob2RUeXBlc1tWZXJpZmljYXRpb25NZXRob2RUeXBlLkVtYWlsXSkge1xuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPlxuICAgICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgICBlbWFpbFxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0eXBlXCI+XG4gICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIEVtYWlsXG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgQGlmIChlbWFpbEhhc1ZlcmlmaWNhdGlvbk1ldGhvZCkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW5hYmxlZENoaXBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGRlZmF1bHRFbWFpbCkge1xuICAgICAgICAgICAgICAgIDxhcHAtZGVmYXVsdGVkPjwvYXBwLWRlZmF1bHRlZD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic21hbGxcIj5cbiAgICAgICAgICAgICAgVmVyaWZpY2F0aW9uIGNvZGVzIGFyZSBzZW50IGJ5IGVtYWlsXG4gICAgICAgICAgICAgIEBpZiAoZW1haWxIYXNWZXJpZmljYXRpb25NZXRob2QpIHtcbiAgICAgICAgICAgICAgICB0b1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgdHdvRmFjdG9yTWFuYWdlU2VydmljZS5lbWFpbFZlcmlmaWNhdGlvbk1ldGhvZHM7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5lbWFpbCB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgIEBpZiAoZW1haWxIYXNWZXJpZmljYXRpb25NZXRob2QpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJlbWFpbE1lc3NhZ2VNYW5hZ2UoKVwiPlxuICAgICAgICAgICAgICAgIE1hbmFnZVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImVtYWlsTWVzc2FnZUFkZCgpXCI+XG4gICAgICAgICAgICAgICAgVHVybiBvblxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgfVxuICAgICAgQGlmICh2ZXJpZmljYXRpb25NZXRob2RUeXBlc1tWZXJpZmljYXRpb25NZXRob2RUeXBlLkFwcF0pIHtcbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgICAgcGhvbmVfaXBob25lXG4gICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPHRkPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR5cGVcIj5cbiAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgQXV0aGVudGljYXRvciBhcHBcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICBAaWYgKGFwcEhhc1ZlcmlmaWNhdGlvbk1ldGhvZCkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW5hYmxlZENoaXBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGRlZmF1bHRBcHApIHtcbiAgICAgICAgICAgICAgICA8YXBwLWRlZmF1bHRlZD48L2FwcC1kZWZhdWx0ZWQ+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsXCI+XG4gICAgICAgICAgICAgIFZlcmlmaWNhdGlvbiBjb2RlIGlzIGdlbmVyYXRlZCBieSBhbiBhdXRoZW50aWNhdG9yIGFwcCBzdWNoIGFzIEF1dGh5IG9yIEdvb2dsZSBBdXRoZW50aWNhdG9yXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgIEBpZiAoYXBwSGFzVmVyaWZpY2F0aW9uTWV0aG9kKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwUmVtb3ZlKClcIj5cbiAgICAgICAgICAgICAgICBSZW1vdmVcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBBZGQoKVwiPlxuICAgICAgICAgICAgICAgIFR1cm4gb25cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIH1cbiAgICA8L3RhYmxlPlxuICA8L21hdC1kaWFsb2ctY29udGVudD5cbiAgPG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICA8YnV0dG9uXG4gICAgICBtYXQtYnV0dG9uXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJ1bmRlZmluZWRcIj5cbiAgICAgIENsb3NlXG4gICAgPC9idXR0b24+XG4gIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuPC9mcy1kaWFsb2c+XG48bmctdGVtcGxhdGUgI2VuYWJsZWRDaGlwPlxuICA8ZnMtY2hpcFxuICAgIFtiYWNrZ3JvdW5kQ29sb3JdPVwiJyM3MEI2MDEnXCJcbiAgICBbc2l6ZV09XCIndGlueSdcIj5cbiAgICBFbmFibGVkXG4gIDwvZnMtY2hpcD5cbjwvbmctdGVtcGxhdGU+Il19
@@ -1,28 +1,30 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, ViewChild, } from '@angular/core';
2
- import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
3
- import { FsFormDirective } from '@firestitch/form';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewChild, inject } from '@angular/core';
2
+ import { MAT_DIALOG_DATA, MatDialogRef, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';
3
+ import { FsFormDirective, FsFormModule } from '@firestitch/form';
4
4
  import { FsMessage } from '@firestitch/message';
5
5
  import { of } from 'rxjs';
6
6
  import { switchMap, tap } from 'rxjs/operators';
7
7
  import { VerificationMethodType } from '../../../../enums/verification-method-type.enum';
8
+ import { FormsModule } from '@angular/forms';
9
+ import { FsDialogModule } from '@firestitch/dialog';
10
+ import { CdkScrollable } from '@angular/cdk/scrolling';
11
+ import { Fs2faVerificationComponent } from '../../../verification/components/2fa-verification/2fa-verification.component';
12
+ import { MatFormField, MatLabel } from '@angular/material/form-field';
13
+ import { MatInput } from '@angular/material/input';
14
+ import { FsPhoneModule } from '@firestitch/phone';
15
+ import { MatCheckbox } from '@angular/material/checkbox';
16
+ import { MatButton } from '@angular/material/button';
8
17
  import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/material/dialog";
10
- import * as i2 from "@firestitch/message";
11
- import * as i3 from "@angular/common";
12
- import * as i4 from "@angular/forms";
13
- import * as i5 from "@angular/material/button";
14
- import * as i6 from "@angular/material/input";
15
- import * as i7 from "@angular/material/form-field";
16
- import * as i8 from "@angular/material/checkbox";
17
- import * as i9 from "@firestitch/dialog";
18
- import * as i10 from "@firestitch/form";
19
- import * as i11 from "@firestitch/phone";
20
- import * as i12 from "../../../verification/components/2fa-verification/2fa-verification.component";
18
+ import * as i1 from "@angular/forms";
19
+ import * as i2 from "@firestitch/form";
20
+ import * as i3 from "@angular/material/dialog";
21
+ import * as i4 from "@firestitch/dialog";
22
+ import * as i5 from "@firestitch/phone";
21
23
  export class NumberComponent {
22
- _data;
23
- _dialogRef;
24
- _cdRef;
25
- _message;
24
+ _data = inject(MAT_DIALOG_DATA);
25
+ _dialogRef = inject(MatDialogRef);
26
+ _cdRef = inject(ChangeDetectorRef);
27
+ _message = inject(FsMessage);
26
28
  form;
27
29
  phone;
28
30
  code;
@@ -31,11 +33,8 @@ export class NumberComponent {
31
33
  verificationMethod = null;
32
34
  defaultCountry;
33
35
  twoFactorManageService;
34
- constructor(_data, _dialogRef, _cdRef, _message) {
35
- this._data = _data;
36
- this._dialogRef = _dialogRef;
37
- this._cdRef = _cdRef;
38
- this._message = _message;
36
+ constructor() {
37
+ const _data = this._data;
39
38
  this.twoFactorManageService = _data.twoFactorManageService;
40
39
  this.defaultCountry = _data.defaultCountry;
41
40
  this.default = !this.twoFactorManageService.hasVerificationMethods;
@@ -78,17 +77,30 @@ export class NumberComponent {
78
77
  }
79
78
  });
80
79
  }
81
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: NumberComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }, { token: i0.ChangeDetectorRef }, { token: i2.FsMessage }], target: i0.ɵɵFactoryTarget.Component });
82
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: NumberComponent, selector: "ng-component", viewQueries: [{ propertyName: "form", first: true, predicate: FsFormDirective, descendants: true }], ngImport: i0, template: "<form\n fsForm\n [submit]=\"submit\"\n [autocomplete]=\"false\">\n <fs-dialog>\n <h1 mat-dialog-title>\n Text message setup\n </h1>\n <mat-dialog-content>\n <ng-container *ngIf=\"verificationMethod; else notVerificationMethod\">\n <fs-2fa-verification\n [verificationMethod]=\"verificationMethod\"\n [(code)]=\"code\"\n (codeCompleted)=\"codeCompleted($event)\"\n [resend]=\"resend\"\n [formatRecipient]=\"true\"\n [(trustDevice)]=\"trustDevice\">\n </fs-2fa-verification>\n </ng-container>\n <ng-template #notVerificationMethod>\n <p>\n The app will only use this number for verifying your account security. Message and data rates may apply by your cell phone provider.\n </p>\n <mat-form-field>\n <mat-label>\n Phone number\n </mat-label>\n <input\n matInput\n fsPhoneField\n [(ngModel)]=\"phone\"\n [required]=\"true\"\n [country]=\"defaultCountry\"\n [mode]=\"'object'\"\n autocomplete=\"off\"\n name=\"phone\">\n </mat-form-field>\n <mat-checkbox\n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default verification method\n </mat-checkbox>\n </ng-template>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"submit\">\n Next\n </button>\n <button\n mat-button\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>", styles: [":host ::ng-deep mat-checkbox .mat-ripple{display:none}:host ::ng-deep mat-checkbox .mat-checkbox-layout{white-space:wrap}app-code-input{margin-bottom:5px;display:block}mat-form-field{width:100%}mat-dialog-content{width:400px;max-width:100%}p{margin-top:0}mat-checkbox{overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { 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: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { 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: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "component", type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i9.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout", "dock", "dockable", "fullscreenPercent"] }, { kind: "directive", type: i10.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup", "deactivationGuard"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"], exportAs: ["fsForm"] }, { kind: "directive", type: i10.FsFormRequiredDirective, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }, { kind: "directive", type: i10.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "directive", type: i10.FsButtonDirective, selector: "[mat-raised-button]:not([fsFormButtonStandalone]),[mat-button]:not([fsFormButtonStandalone]),[mat-flat-button]:not([fsFormButtonStandalone]),[mat-stroked-button]:not([fsFormButtonStandalone])", inputs: ["name", "dirtySubmit", "form"] }, { kind: "component", type: i11.FsPhoneFieldComponent, selector: "[fsPhoneField]", inputs: ["allowNumberExt", "placeholder", "required", "disabled", "mode", "country", "autocomplete"] }, { kind: "component", type: i12.Fs2faVerificationComponent, selector: "fs-2fa-verification", inputs: ["verificationMethod", "resend", "showTrustedDevice", "trustDevice", "codeLength", "trustDays", "code", "formatRecipient", "getVerificationMethods", "selectVerificationMethod"], outputs: ["verified", "codeChange", "codeCompleted", "trustDeviceChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
80
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: NumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
81
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: NumberComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "form", first: true, predicate: FsFormDirective, descendants: true }], ngImport: i0, template: "<form\n fsForm\n [submit]=\"submit\"\n [autocomplete]=\"false\">\n <fs-dialog>\n <h1 mat-dialog-title>\n Text message setup\n </h1>\n <mat-dialog-content>\n @if (verificationMethod) {\n <fs-2fa-verification\n [verificationMethod]=\"verificationMethod\"\n [(code)]=\"code\"\n (codeCompleted)=\"codeCompleted($event)\"\n [resend]=\"resend\"\n [formatRecipient]=\"true\"\n [(trustDevice)]=\"trustDevice\">\n </fs-2fa-verification>\n } @else {\n <p>\n The app will only use this number for verifying your account security. Message and data rates may apply by your cell phone provider.\n </p>\n <mat-form-field>\n <mat-label>\n Phone number\n </mat-label>\n <input\n matInput\n fsPhoneField\n [(ngModel)]=\"phone\"\n [required]=\"true\"\n [country]=\"defaultCountry\"\n [mode]=\"'object'\"\n autocomplete=\"off\"\n name=\"phone\">\n </mat-form-field>\n <mat-checkbox\n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default verification method\n </mat-checkbox>\n }\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"submit\">\n Next\n </button>\n <button\n mat-button\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>", styles: [":host ::ng-deep mat-checkbox .mat-ripple{display:none}:host ::ng-deep mat-checkbox .mat-checkbox-layout{white-space:wrap}app-code-input{margin-bottom:5px;display:block}mat-form-field{width:100%}mat-dialog-content{width:400px;max-width:100%}p{margin-top:0}mat-checkbox{overflow:hidden}\n"], dependencies: [{ 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.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: FsFormModule }, { kind: "directive", type: i2.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup", "deactivationGuard"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"], exportAs: ["fsForm"] }, { kind: "directive", type: i2.FsFormRequiredDirective, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }, { kind: "directive", type: i2.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "directive", type: i2.FsButtonDirective, selector: "[mat-raised-button]:not([fsFormButtonStandalone]),[mat-button]:not([fsFormButtonStandalone]),[mat-flat-button]:not([fsFormButtonStandalone]),[mat-stroked-button]:not([fsFormButtonStandalone])", inputs: ["name", "dirtySubmit", "form"] }, { kind: "ngmodule", type: FsDialogModule }, { kind: "directive", type: i3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i4.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout", "dock", "dockable", "fullscreenPercent"] }, { kind: "component", type: Fs2faVerificationComponent, selector: "fs-2fa-verification", inputs: ["verificationMethod", "resend", "showTrustedDevice", "trustDevice", "codeLength", "trustDays", "code", "formatRecipient", "getVerificationMethods", "selectVerificationMethod"], outputs: ["verified", "codeChange", "codeCompleted", "trustDeviceChange"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: 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: FsPhoneModule }, { kind: "component", type: i5.FsPhoneFieldComponent, selector: "[fsPhoneField]", inputs: ["allowNumberExt", "placeholder", "required", "disabled", "mode", "country", "autocomplete"] }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
83
82
  }
84
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: NumberComponent, decorators: [{
85
84
  type: Component,
86
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n fsForm\n [submit]=\"submit\"\n [autocomplete]=\"false\">\n <fs-dialog>\n <h1 mat-dialog-title>\n Text message setup\n </h1>\n <mat-dialog-content>\n <ng-container *ngIf=\"verificationMethod; else notVerificationMethod\">\n <fs-2fa-verification\n [verificationMethod]=\"verificationMethod\"\n [(code)]=\"code\"\n (codeCompleted)=\"codeCompleted($event)\"\n [resend]=\"resend\"\n [formatRecipient]=\"true\"\n [(trustDevice)]=\"trustDevice\">\n </fs-2fa-verification>\n </ng-container>\n <ng-template #notVerificationMethod>\n <p>\n The app will only use this number for verifying your account security. Message and data rates may apply by your cell phone provider.\n </p>\n <mat-form-field>\n <mat-label>\n Phone number\n </mat-label>\n <input\n matInput\n fsPhoneField\n [(ngModel)]=\"phone\"\n [required]=\"true\"\n [country]=\"defaultCountry\"\n [mode]=\"'object'\"\n autocomplete=\"off\"\n name=\"phone\">\n </mat-form-field>\n <mat-checkbox\n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default verification method\n </mat-checkbox>\n </ng-template>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"submit\">\n Next\n </button>\n <button\n mat-button\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>", styles: [":host ::ng-deep mat-checkbox .mat-ripple{display:none}:host ::ng-deep mat-checkbox .mat-checkbox-layout{white-space:wrap}app-code-input{margin-bottom:5px;display:block}mat-form-field{width:100%}mat-dialog-content{width:400px;max-width:100%}p{margin-top:0}mat-checkbox{overflow:hidden}\n"] }]
87
- }], ctorParameters: () => [{ type: undefined, decorators: [{
88
- type: Inject,
89
- args: [MAT_DIALOG_DATA]
90
- }] }, { type: i1.MatDialogRef }, { type: i0.ChangeDetectorRef }, { type: i2.FsMessage }], propDecorators: { form: [{
85
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
86
+ FormsModule,
87
+ FsFormModule,
88
+ FsDialogModule,
89
+ MatDialogTitle,
90
+ CdkScrollable,
91
+ MatDialogContent,
92
+ Fs2faVerificationComponent,
93
+ MatFormField,
94
+ MatLabel,
95
+ MatInput,
96
+ FsPhoneModule,
97
+ MatCheckbox,
98
+ MatDialogActions,
99
+ MatButton,
100
+ MatDialogClose,
101
+ ], template: "<form\n fsForm\n [submit]=\"submit\"\n [autocomplete]=\"false\">\n <fs-dialog>\n <h1 mat-dialog-title>\n Text message setup\n </h1>\n <mat-dialog-content>\n @if (verificationMethod) {\n <fs-2fa-verification\n [verificationMethod]=\"verificationMethod\"\n [(code)]=\"code\"\n (codeCompleted)=\"codeCompleted($event)\"\n [resend]=\"resend\"\n [formatRecipient]=\"true\"\n [(trustDevice)]=\"trustDevice\">\n </fs-2fa-verification>\n } @else {\n <p>\n The app will only use this number for verifying your account security. Message and data rates may apply by your cell phone provider.\n </p>\n <mat-form-field>\n <mat-label>\n Phone number\n </mat-label>\n <input\n matInput\n fsPhoneField\n [(ngModel)]=\"phone\"\n [required]=\"true\"\n [country]=\"defaultCountry\"\n [mode]=\"'object'\"\n autocomplete=\"off\"\n name=\"phone\">\n </mat-form-field>\n <mat-checkbox\n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default verification method\n </mat-checkbox>\n }\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"submit\">\n Next\n </button>\n <button\n mat-button\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>", styles: [":host ::ng-deep mat-checkbox .mat-ripple{display:none}:host ::ng-deep mat-checkbox .mat-checkbox-layout{white-space:wrap}app-code-input{margin-bottom:5px;display:block}mat-form-field{width:100%}mat-dialog-content{width:400px;max-width:100%}p{margin-top:0}mat-checkbox{overflow:hidden}\n"] }]
102
+ }], ctorParameters: () => [], propDecorators: { form: [{
91
103
  type: ViewChild,
92
104
  args: [FsFormDirective, { static: false }]
93
105
  }] } });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tYW5hZ2UvY29tcG9uZW50cy9udW1iZXIvbnVtYmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tYW5hZ2UvY29tcG9uZW50cy9udW1iZXIvbnVtYmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFBRSxpQkFBaUIsRUFDMUMsU0FBUyxFQUFFLE1BQU0sRUFDakIsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saURBQWlELENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBU3pGLE1BQU0sT0FBTyxlQUFlO0lBY1M7SUFDekI7SUFDQTtJQUNBO0lBZEgsSUFBSSxDQUFrQjtJQUV0QixLQUFLLENBQUM7SUFDTixJQUFJLENBQUM7SUFDTCxPQUFPLENBQUM7SUFDUixXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQ25CLGtCQUFrQixHQUFHLElBQUksQ0FBQztJQUMxQixjQUFjLENBQUM7SUFDZixzQkFBc0IsQ0FBeUI7SUFFdEQsWUFDbUMsS0FBVSxFQUNuQyxVQUF5QyxFQUN6QyxNQUF5QixFQUN6QixRQUFtQjtRQUhNLFVBQUssR0FBTCxL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ICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCwgSW5qZWN0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEZzRm9ybURpcmVjdGl2ZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2Zvcm0nO1xuaW1wb3J0IHsgRnNNZXNzYWdlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbWVzc2FnZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVmVyaWZpY2F0aW9uTWV0aG9kVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL2VudW1zL3ZlcmlmaWNhdGlvbi1tZXRob2QtdHlwZS5lbnVtJztcbmltcG9ydCB7IFR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9udW1iZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9udW1iZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE51bWJlckNvbXBvbmVudCB7XG5cbiAgQFZpZXdDaGlsZChGc0Zvcm1EaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwdWJsaWMgZm9ybTogRnNGb3JtRGlyZWN0aXZlO1xuXG4gIHB1YmxpYyBwaG9uZTtcbiAgcHVibGljIGNvZGU7XG4gIHB1YmxpYyBkZWZhdWx0O1xuICBwdWJsaWMgdHJ1c3REZXZpY2UgPSB0cnVlO1xuICBwdWJsaWMgdmVyaWZpY2F0aW9uTWV0aG9kID0gbnVsbDtcbiAgcHVibGljIGRlZmF1bHRDb3VudHJ5O1xuICBwdWJsaWMgdHdvRmFjdG9yTWFuYWdlU2VydmljZTogVHdvRmFjdG9yTWFuYWdlU2VydmljZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBfZGF0YTogYW55LFxuICAgIHByaXZhdGUgX2RpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE51bWJlckNvbXBvbmVudD4sXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX21lc3NhZ2U6IEZzTWVzc2FnZSxcbiAgKSB7XG4gICAgdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlID0gX2RhdGEudHdvRmFjdG9yTWFuYWdlU2VydmljZTtcbiAgICB0aGlzLmRlZmF1bHRDb3VudHJ5ID0gX2RhdGEuZGVmYXVsdENvdW50cnk7XG4gICAgdGhpcy5kZWZhdWx0ID0gIXRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZS5oYXNWZXJpZmljYXRpb25NZXRob2RzO1xuICB9XG5cbiAgcHVibGljIHJlc2VuZCA9ICgpOiBPYnNlcnZhYmxlPHZvaWQ+ID0+IHtcbiAgICByZXR1cm4gdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLnZlcmlmaWNhdGlvbk1ldGhvZFJlc2VuZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ1Jlc2VudCB2ZXJpZmljYXRpb24gY29kZScpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH07XG5cbiAgcHVibGljIHN1Ym1pdCA9ICgpID0+IHtcbiAgICByZXR1cm4gb2YodHJ1ZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLnZlcmlmaWNhdGlvbk1ldGhvZCA/XG4gICAgICAgICAgICB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UudmVyaWZpY2F0aW9uTWV0aG9kVmVyaWZ5JCh0aGlzLmNvZGUsIHRoaXMudHJ1c3REZXZpY2UpXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgodmVyaWZpY2F0aW9uTWV0aG9kKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ0NyZWF0ZWQgdGV4dCBtZXNzYWdlIHZlcmlmaWNhdGlvbiBtZXRob2QnKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZSh2ZXJpZmljYXRpb25NZXRob2QpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICApIDpcbiAgICAgICAgICAgIHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZS52ZXJpZmljYXRpb25NZXRob2RDcmVhdGUkKHtcbiAgICAgICAgICAgICAgdHlwZTogVmVyaWZpY2F0aW9uTWV0aG9kVHlwZS5TbXMsXG4gICAgICAgICAgICAgIHBob25lTnVtYmVyOiB0aGlzLnBob25lLm51bWJlcixcbiAgICAgICAgICAgICAgcGhvbmVDb2RlOiB0aGlzLnBob25lLmNvdW50cnlDb2RlLFxuICAgICAgICAgICAgICBwaG9uZUNvdW50cnk6IHRoaXMucGhvbmUuaXNvQ29kZSxcbiAgICAgICAgICAgICAgZGVmYXVsdDogdGhpcy5kZWZhdWx0LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCh2ZXJpZmljYXRpb25NZXRob2QpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudmVyaWZpY2F0aW9uTWV0aG9kID0gdmVyaWZpY2F0aW9uTWV0aG9kO1xuICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9O1xuXG4gIHB1YmxpYyBjb2RlQ29tcGxldGVkKGNvZGUpOiB2b2lkIHtcbiAgICB0aGlzLmNvZGUgPSBjb2RlO1xuICAgIC8vTGVnYWN5IHN1cHBvcnRcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmKCF0aGlzLmZvcm0uc3VibWl0dGluZykge1xuICAgICAgICB0aGlzLmZvcm0udHJpZ2dlclN1Ym1pdCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbn1cbiIsIjxmb3JtXG4gICAgZnNGb3JtXG4gICAgW3N1Ym1pdF09XCJzdWJtaXRcIlxuICAgIFthdXRvY29tcGxldGVdPVwiZmFsc2VcIj5cbiAgPGZzLWRpYWxvZz5cbiAgICA8aDEgbWF0LWRpYWxvZy10aXRsZT5cbiAgICAgIFRleHQgbWVzc2FnZSBzZXR1cFxuICAgIDwvaDE+XG4gICAgPG1hdC1kaWFsb2ctY29udGVudD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2ZXJpZmljYXRpb25NZXRob2Q7IGVsc2Ugbm90VmVyaWZpY2F0aW9uTWV0aG9kXCI+XG4gICAgICAgIDxmcy0yZmEtdmVyaWZpY2F0aW9uXG4gICAgICAgICAgW3ZlcmlmaWNhdGlvbk1ldGhvZF09XCJ2ZXJpZmljYXRpb25NZXRob2RcIlxuICAgICAgICAgIFsoY29kZSldPVwiY29kZVwiXG4gICAgICAgICAgKGNvZGVDb21wbGV0ZWQpPVwiY29kZUNvbXBsZXRlZCgkZXZlbnQpXCJcbiAgICAgICAgICBbcmVzZW5kXT1cInJlc2VuZFwiXG4gICAgICAgICAgW2Zvcm1hdFJlY2lwaWVudF09XCJ0cnVlXCJcbiAgICAgICAgICBbKHRydXN0RGV2aWNlKV09XCJ0cnVzdERldmljZVwiPlxuICAgICAgICA8L2ZzLTJmYS12ZXJpZmljYXRpb24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm90VmVyaWZpY2F0aW9uTWV0aG9kPlxuICAgICAgICA8cD5cbiAgICAgICAgICBUaGUgYXBwIHdpbGwgb25seSB1c2UgdGhpcyBudW1iZXIgZm9yIHZlcmlmeWluZyB5b3VyIGFjY291bnQgc2VjdXJpdHkuIE1lc3NhZ2UgYW5kIGRhdGEgcmF0ZXMgbWF5IGFwcGx5IGJ5IHlvdXIgY2VsbCBwaG9uZSBwcm92aWRlci5cbiAgICAgICAgPC9wPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1sYWJlbD5cbiAgICAgICAgICAgIFBob25lIG51bWJlclxuICAgICAgICAgIDwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgIGZzUGhvbmVGaWVsZFxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwaG9uZVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbY291bnRyeV09XCJkZWZhdWx0Q291bnRyeVwiXG4gICAgICAgICAgICBbbW9kZV09XCInb2JqZWN0J1wiXG4gICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgbmFtZT1cInBob25lXCI+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgIG5hbWU9XCJkZWZhdWx0XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGVmYXVsdFwiXG4gICAgICAgICAgICBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCI+XG4gICAgICAgICAgTWFrZSB0aGlzIHRoZSBkZWZhdWx0IHZlcmlmaWNhdGlvbiBtZXRob2RcbiAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbWF0LWRpYWxvZy1jb250ZW50PlxuICAgIDxtYXQtZGlhbG9nLWFjdGlvbnM+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiPlxuICAgICAgICBOZXh0XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwidW5kZWZpbmVkXCI+XG4gICAgICAgIENhbmNlbFxuICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4gIDwvZnMtZGlhbG9nPlxuPC9mb3JtPiJdfQ==
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tYW5hZ2UvY29tcG9uZW50cy9udW1iZXIvbnVtYmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tYW5hZ2UvY29tcG9uZW50cy9udW1iZXIvbnVtYmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RyxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFN0ksT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFaEQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRXpGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQzFILE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThC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Q0gsQ0FBQztJQUNOLENBQUMsQ0FBQztJQUVLLGFBQWEsQ0FBQyxJQUFJO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLGdCQUFnQjtRQUNoQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0F6RVUsZUFBZTsyRkFBZixlQUFlLDhHQU9mLGVBQWUsZ0RDckQ1Qiw0b0RBMkRPLHVWRDlCQyxXQUFXLG93Q0FDWCxZQUFZLGk2Q0FDWixjQUFjLDIwQkFJZCwwQkFBMEIscVVBQzFCLFlBQVksNExBQ1osUUFBUSxzREFDUixRQUFRLGdVQUNSLGFBQWEsd05BQ2IsV0FBVyx3VkFFWCxTQUFTOzsyRkFJSixlQUFlO2tCQXZCM0IsU0FBUztzQ0FHVyx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDTCxXQUFXO3dCQUNYLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQiwwQkFBMEI7d0JBQzFCLFlBQVk7d0JBQ1osUUFBUTt3QkFDUixRQUFRO3dCQUNSLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxnQkFBZ0I7d0JBQ2hCLFNBQVM7d0JBQ1QsY0FBYztxQkFDakI7d0RBVUksSUFBSTtzQkFEVixTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgVmlld0NoaWxkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYsIE1hdERpYWxvZ1RpdGxlLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dBY3Rpb25zLCBNYXREaWFsb2dDbG9zZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEZzRm9ybURpcmVjdGl2ZSwgRnNGb3JtTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZm9ybSc7XG5pbXBvcnQgeyBGc01lc3NhZ2UgfSBmcm9tICdAZmlyZXN0aXRjaC9tZXNzYWdlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBWZXJpZmljYXRpb25NZXRob2RUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW51bXMvdmVyaWZpY2F0aW9uLW1ldGhvZC10eXBlLmVudW0nO1xuaW1wb3J0IHsgVHdvRmFjdG9yTWFuYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRnNEaWFsb2dNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9kaWFsb2cnO1xuaW1wb3J0IHsgQ2RrU2Nyb2xsYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgRnMyZmFWZXJpZmljYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi92ZXJpZmljYXRpb24vY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLzJmYS12ZXJpZmljYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCwgTWF0TGFiZWwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgRnNQaG9uZU1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL3Bob25lJztcbmltcG9ydCB7IE1hdENoZWNrYm94IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgTWF0QnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcblxuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vbnVtYmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9udW1iZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIEZzRm9ybU1vZHVsZSxcbiAgICAgICAgRnNEaWFsb2dNb2R1bGUsXG4gICAgICAgIE1hdERpYWxvZ1RpdGxlLFxuICAgICAgICBDZGtTY3JvbGxhYmxlLFxuICAgICAgICBNYXREaWFsb2dDb250ZW50LFxuICAgICAgICBGczJmYVZlcmlmaWNhdGlvbkNvbXBvbmVudCxcbiAgICAgICAgTWF0Rm9ybUZpZWxkLFxuICAgICAgICBNYXRMYWJlbCxcbiAgICAgICAgTWF0SW5wdXQsXG4gICAgICAgIEZzUGhvbmVNb2R1bGUsXG4gICAgICAgIE1hdENoZWNrYm94LFxuICAgICAgICBNYXREaWFsb2dBY3Rpb25zLFxuICAgICAgICBNYXRCdXR0b24sXG4gICAgICAgIE1hdERpYWxvZ0Nsb3NlLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIE51bWJlckNvbXBvbmVudCB7XG4gIHByaXZhdGUgX2RhdGEgPSBpbmplY3QoTUFUX0RJQUxPR19EQVRBKTtcbiAgcHJpdmF0ZSBfZGlhbG9nUmVmID0gaW5qZWN0PE1hdERpYWxvZ1JlZjxOdW1iZXJDb21wb25lbnQ+PihNYXREaWFsb2dSZWYpO1xuICBwcml2YXRlIF9jZFJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgX21lc3NhZ2UgPSBpbmplY3QoRnNNZXNzYWdlKTtcblxuXG4gIEBWaWV3Q2hpbGQoRnNGb3JtRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHVibGljIGZvcm06IEZzRm9ybURpcmVjdGl2ZTtcblxuICBwdWJsaWMgcGhvbmU7XG4gIHB1YmxpYyBjb2RlO1xuICBwdWJsaWMgZGVmYXVsdDtcbiAgcHVibGljIHRydXN0RGV2aWNlID0gdHJ1ZTtcbiAgcHVibGljIHZlcmlmaWNhdGlvbk1ldGhvZCA9IG51bGw7XG4gIHB1YmxpYyBkZWZhdWx0Q291bnRyeTtcbiAgcHVibGljIHR3b0ZhY3Rvck1hbmFnZVNlcnZpY2U6IFR3b0ZhY3Rvck1hbmFnZVNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgX2RhdGEgPSB0aGlzLl9kYXRhO1xuXG4gICAgdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlID0gX2RhdGEudHdvRmFjdG9yTWFuYWdlU2VydmljZTtcbiAgICB0aGlzLmRlZmF1bHRDb3VudHJ5ID0gX2RhdGEuZGVmYXVsdENvdW50cnk7XG4gICAgdGhpcy5kZWZhdWx0ID0gIXRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZS5oYXNWZXJpZmljYXRpb25NZXRob2RzO1xuICB9XG5cbiAgcHVibGljIHJlc2VuZCA9ICgpOiBPYnNlcnZhYmxlPHZvaWQ+ID0+IHtcbiAgICByZXR1cm4gdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLnZlcmlmaWNhdGlvbk1ldGhvZFJlc2VuZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ1Jlc2VudCB2ZXJpZmljYXRpb24gY29kZScpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH07XG5cbiAgcHVibGljIHN1Ym1pdCA9ICgpID0+IHtcbiAgICByZXR1cm4gb2YodHJ1ZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLnZlcmlmaWNhdGlvbk1ldGhvZCA/XG4gICAgICAgICAgICB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UudmVyaWZpY2F0aW9uTWV0aG9kVmVyaWZ5JCh0aGlzLmNvZGUsIHRoaXMudHJ1c3REZXZpY2UpXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgodmVyaWZpY2F0aW9uTWV0aG9kKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ0NyZWF0ZWQgdGV4dCBtZXNzYWdlIHZlcmlmaWNhdGlvbiBtZXRob2QnKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZSh2ZXJpZmljYXRpb25NZXRob2QpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICApIDpcbiAgICAgICAgICAgIHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZS52ZXJpZmljYXRpb25NZXRob2RDcmVhdGUkKHtcbiAgICAgICAgICAgICAgdHlwZTogVmVyaWZpY2F0aW9uTWV0aG9kVHlwZS5TbXMsXG4gICAgICAgICAgICAgIHBob25lTnVtYmVyOiB0aGlzLnBob25lLm51bWJlcixcbiAgICAgICAgICAgICAgcGhvbmVDb2RlOiB0aGlzLnBob25lLmNvdW50cnlDb2RlLFxuICAgICAgICAgICAgICBwaG9uZUNvdW50cnk6IHRoaXMucGhvbmUuaXNvQ29kZSxcbiAgICAgICAgICAgICAgZGVmYXVsdDogdGhpcy5kZWZhdWx0LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCh2ZXJpZmljYXRpb25NZXRob2QpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudmVyaWZpY2F0aW9uTWV0aG9kID0gdmVyaWZpY2F0aW9uTWV0aG9kO1xuICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9O1xuXG4gIHB1YmxpYyBjb2RlQ29tcGxldGVkKGNvZGUpOiB2b2lkIHtcbiAgICB0aGlzLmNvZGUgPSBjb2RlO1xuICAgIC8vTGVnYWN5IHN1cHBvcnRcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmKCF0aGlzLmZvcm0uc3VibWl0dGluZykge1xuICAgICAgICB0aGlzLmZvcm0udHJpZ2dlclN1Ym1pdCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbn1cbiIsIjxmb3JtXG4gIGZzRm9ybVxuICBbc3VibWl0XT1cInN1Ym1pdFwiXG4gIFthdXRvY29tcGxldGVdPVwiZmFsc2VcIj5cbiAgPGZzLWRpYWxvZz5cbiAgICA8aDEgbWF0LWRpYWxvZy10aXRsZT5cbiAgICAgIFRleHQgbWVzc2FnZSBzZXR1cFxuICAgIDwvaDE+XG4gICAgPG1hdC1kaWFsb2ctY29udGVudD5cbiAgICAgIEBpZiAodmVyaWZpY2F0aW9uTWV0aG9kKSB7XG4gICAgICAgIDxmcy0yZmEtdmVyaWZpY2F0aW9uXG4gICAgICAgICAgW3ZlcmlmaWNhdGlvbk1ldGhvZF09XCJ2ZXJpZmljYXRpb25NZXRob2RcIlxuICAgICAgICAgIFsoY29kZSldPVwiY29kZVwiXG4gICAgICAgICAgKGNvZGVDb21wbGV0ZWQpPVwiY29kZUNvbXBsZXRlZCgkZXZlbnQpXCJcbiAgICAgICAgICBbcmVzZW5kXT1cInJlc2VuZFwiXG4gICAgICAgICAgW2Zvcm1hdFJlY2lwaWVudF09XCJ0cnVlXCJcbiAgICAgICAgICBbKHRydXN0RGV2aWNlKV09XCJ0cnVzdERldmljZVwiPlxuICAgICAgICA8L2ZzLTJmYS12ZXJpZmljYXRpb24+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHA+XG4gICAgICAgICAgVGhlIGFwcCB3aWxsIG9ubHkgdXNlIHRoaXMgbnVtYmVyIGZvciB2ZXJpZnlpbmcgeW91ciBhY2NvdW50IHNlY3VyaXR5LiBNZXNzYWdlIGFuZCBkYXRhIHJhdGVzIG1heSBhcHBseSBieSB5b3VyIGNlbGwgcGhvbmUgcHJvdmlkZXIuXG4gICAgICAgIDwvcD5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtbGFiZWw+XG4gICAgICAgICAgICBQaG9uZSBudW1iZXJcbiAgICAgICAgICA8L21hdC1sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICBmc1Bob25lRmllbGRcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwicGhvbmVcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgW2NvdW50cnldPVwiZGVmYXVsdENvdW50cnlcIlxuICAgICAgICAgICAgW21vZGVdPVwiJ29iamVjdCdcIlxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIG5hbWU9XCJwaG9uZVwiPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgbmFtZT1cImRlZmF1bHRcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZGVmYXVsdFwiXG4gICAgICAgICAgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiPlxuICAgICAgICAgIE1ha2UgdGhpcyB0aGUgZGVmYXVsdCB2ZXJpZmljYXRpb24gbWV0aG9kXG4gICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgfVxuICAgIDwvbWF0LWRpYWxvZy1jb250ZW50PlxuICAgIDxtYXQtZGlhbG9nLWFjdGlvbnM+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiPlxuICAgICAgICBOZXh0XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwidW5kZWZpbmVkXCI+XG4gICAgICAgIENhbmNlbFxuICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4gIDwvZnMtZGlhbG9nPlxuPC9mb3JtPiJdfQ==