@firestitch/2fa 12.0.3 → 12.0.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"firestitch-2fa.umd.js","sources":["../../src/app/tokens/verification.token.ts","../../src/app/components/2fa-verification-otp/2fa-verification-otp.component.ts","../../src/app/components/2fa-verification-otp/2fa-verification-otp.component.html","../../src/app/components/2fa-verification-code/2fa-verification-code.component.ts","../../src/app/components/2fa-verification-code/2fa-verification-code.component.html","../../src/app/components/2fa-verification-form/2fa-verification-form.component.ts","../../src/app/components/2fa-verification-form/2fa-verification-form.component.html","../../src/app/enums/verification-method-type.enum.ts","../../src/app/components/2fa-verification-methods/2fa-verification-methods.component.ts","../../src/app/components/2fa-verification-methods/2fa-verification-methods.component.html","../../src/app/components/2fa-verification/2fa-verification.component.ts","../../src/app/components/2fa-verification/2fa-verification.component.html","../../src/app/fs-2fa.module.ts","../../src/public_api.ts","../../src/firestitch-2fa.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport { IFsVerificationProvider } from '../interfaces/verification-provider.interface';\n\nexport const FS_2FA_VERIFICATION_PROVIDER = new InjectionToken<IFsVerificationProvider>(\n 'Provider for Verification service',\n);\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { FsFormDirective } from '@firestitch/form';\n\n\n@Component({\n selector: 'fs-2fa-verification-otp',\n templateUrl: './2fa-verification-otp.component.html',\n styleUrls: [\n './2fa-verification-otp.component.scss'\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Fs2FAVerificationOTPComponent {\n\n @Output()\n public codeChange = new EventEmitter<string>();\n\n constructor(\n public form: FsFormDirective,\n ) {}\n\n public codeChanged(event: string): void {\n this.codeChange.emit(event);\n this.form.dirty();\n }\n\n public codeCompleted(): void {\n this.form.triggerSubmit();\n }\n}\n","<p class=\"description\">\n Enter the verification code generated by your 2 factor authenticator\n app to verify it's you\n</p>\n\n<!--\n<code-input [initialFocusField]=\"0\"\n [codeLength]=\"6\"\n (codeChanged)=\"codeChanged($event)\"\n (codeCompleted)=\"codeCompleted()\">>\n</code-input>\n-->\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { ControlContainer, NgForm } from '@angular/forms';\n\nimport { IFsVerificationMethod } from '../../interfaces/verification-method.interface';\n\n\n@Component({\n selector: 'fs-2fa-verification-code',\n templateUrl: './2fa-verification-code.component.html',\n styleUrls: [\n './2fa-verification-code.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [\n {\n provide: ControlContainer,\n useExisting: NgForm,\n },\n ],\n})\nexport class Fs2FAVerificationSMSComponent {\n\n @Input()\n public method: IFsVerificationMethod;\n\n @Output()\n public codeChange = new EventEmitter<string>();\n\n public code: string;\n\n public codeChanged(): void {\n this.codeChange.emit(this.code);\n }\n\n}\n","<p class=\"description\">\n <ng-container *ngIf=\"method.phoneCode && method.phoneNumber && method.type === 'sms'\">\n A text message with a verification code was just\n sent to <span style=\"white-space: nowrap;\">+{{ method.phoneCode }} {{ method.phoneNumber }}</span> to verify it's you.\n </ng-container>\n\n <ng-container *ngIf=\"method.type === 'email'\">\n A email with a verification code was just sent to {{ method.email }} to verify it's you.\n </ng-container>\n\n <ng-container *ngIf=\"false\">\n Enter the one time code generated by the app administrator to verify it's you.\n </ng-container>\n</p>\n\n<mat-form-field>\n <mat-label>Code</mat-label>\n <input type=\"text\"\n matInput\n name=\"code\"\n autocomplete=\"one-time-code\"\n [(ngModel)]=\"code\"\n (ngModelChange)=\"codeChanged()\"\n required\n placeholder=\"Enter the code\"\n inputmode=\"numeric\">\n</mat-form-field>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input, OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil, tap } from 'rxjs/operators';\n\nimport { IFsVerificationMethod } from '../../interfaces/verification-method.interface';\nimport { FS_2FA_VERIFICATION_PROVIDER } from '../../tokens/verification.token';\nimport { IFsVerificationProvider } from '../../interfaces/verification-provider.interface';\n\n\n@Component({\n selector: 'fs-2fa-verification-form',\n templateUrl: './2fa-verification-form.component.html',\n styleUrls: [\n './2fa-verification-form.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Fs2FAVerificationFormComponent implements OnDestroy {\n\n @Input()\n public method: IFsVerificationMethod;\n\n @Output()\n public verified = new EventEmitter<unknown>();\n\n public resendInProgress = false;\n public trustedDevice = false;\n\n private _code: string;\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(FS_2FA_VERIFICATION_PROVIDER)\n public verificationProvider: IFsVerificationProvider,\n private _cdRef: ChangeDetectorRef,\n ) {}\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public verify = () => {\n return this.verificationProvider\n .verify(this._code, this.trustedDevice)\n .pipe(\n tap((response) => {\n this.verified.emit(response);\n }),\n );\n };\n\n public codeChanged(code: string): void {\n this._code = code;\n }\n\n public resend(): void {\n this.resendInProgress = true;\n\n this.verificationProvider\n .resend()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.resendInProgress = false;\n\n this._cdRef.markForCheck();\n })\n }\n\n}\n","<form fsForm [submit]=\"verify\">\n <h2>2-Step Verification</h2>\n\n <div class=\"code-container\">\n <ng-container *ngIf=\"method.type === 'authenticator' else code\">\n <fs-2fa-verification-otp class=\"otp\"></fs-2fa-verification-otp>\n </ng-container>\n\n <ng-template #code>\n <fs-2fa-verification-code\n [method]=\"method\"\n (codeChange)=\"codeChanged($event)\">\n </fs-2fa-verification-code>\n </ng-template>\n </div>\n\n <div class=\"additional\">\n <mat-checkbox\n name=\"trust-device\"\n [(ngModel)]=\"trustedDevice\">\n Trust this device\n </mat-checkbox>\n\n <span matSuffix>\n <button mat-button\n type=\"button\"\n color=\"primary\"\n (click)=\"resend()\"\n [disabled]=\"resendInProgress\"\n class=\"resend-code-btn\">\n <ng-container *ngIf=\"!resendInProgress else sending\">\n Resend Code\n </ng-container>\n <ng-template #sending>\n <mat-spinner [diameter]=\"12\"></mat-spinner> Sending\n </ng-template>\n </button>\n </span>\n </div>\n\n <div class=\"actions\">\n <button mat-raised-button\n color=\"primary\"\n type=\"submit\">\n Verify\n </button>\n\n <ng-content></ng-content>\n </div>\n</form>\n","export enum FsVerificationMethodType {\n Sms = 'sms',\n Email = 'email',\n Authenticator = 'authenticator',\n Code = 'code',\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { Observable } from 'rxjs';\nimport { map, shareReplay, tap } from 'rxjs/operators';\n\nimport { FS_2FA_VERIFICATION_PROVIDER } from '../../tokens/verification.token';\nimport { FsVerificationMethodType } from '../../enums/verification-method-type.enum';\nimport { IFsVerificationProvider } from '../../interfaces/verification-provider.interface';\nimport { IFsVerificationMethod } from '../../interfaces/verification-method.interface';\n\n\n@Component({\n selector: 'fs-2fa-verification-methods',\n templateUrl: './2fa-verification-methods.component.html',\n styleUrls: [\n './2fa-verification-methods.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Fs2FaVerificationMethodsComponent implements OnInit {\n\n @Input()\n public method: IFsVerificationMethod;\n\n @Output()\n public methodChange = new EventEmitter<IFsVerificationMethod>();\n\n @Output()\n public cancelled = new EventEmitter<void>();\n\n public phone: string;\n public code: string;\n public methods$: Observable<Record<string, IFsVerificationMethod[]>>;\n public readonly verificationMethodType = FsVerificationMethodType;\n\n constructor(\n @Inject(FS_2FA_VERIFICATION_PROVIDER)\n private _verificationProvider: IFsVerificationProvider,\n ) {\n this._initMethods();\n }\n\n public ngOnInit(): void {\n }\n\n public compareWith(o1, o2) {\n return o1 && o2 && o1.id === o2.id\n }\n\n public cancel(): void {\n this.cancelled.emit();\n }\n\n public setVerificationMethod = () => {\n return this._verificationProvider\n .updateVerificationMethod(this.method.id)\n .pipe(\n tap((method: IFsVerificationMethod) => {\n this.methodChange.emit(method);\n })\n );\n };\n\n private _initMethods(): void {\n this.methods$ = this._verificationProvider\n .methods()\n .pipe(\n map((methods) => {\n return methods\n .reduce((acc, method) => {\n if (!acc[method.type]) {\n acc[method.type] = [];\n }\n\n acc[method.type].push(method);\n\n return acc;\n }, {});\n }),\n shareReplay(1),\n );\n }\n}\n","<h2>\n Verification Methods\n</h2>\n<form fsForm [submit]=\"setVerificationMethod\">\n <ng-container *fsSkeleton=\"methods$ | async as methods\">\n <fs-radio-group [(ngModel)]=\"method\" name=\"method\" [compareWith]=\"compareWith\">\n <ng-container *ngFor=\"let methodMap of methods | keyvalue\">\n <div class=\"method\">\n <ng-container [ngSwitch]=\"methodMap.key\">\n <ng-container *ngSwitchCase=\"verificationMethodType.Sms\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n smartphone\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Text Message</div>\n <div class=\"method-subtitle\">\n Verification code send to one of following mobile number\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"verificationMethodType.Email\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n mail\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Email</div>\n <div class=\"method-subtitle\">\n Verification code send to one of following email\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container [ngSwitch]=\"methodMap.key\">\n <ng-container *ngSwitchCase=\"verificationMethodType.Sms\">\n <mat-radio-button class=\"method-item\" *ngFor=\"let method of methodMap.value\" [value]=\"method\">\n + {{ method.phoneCode }} {{ method.phoneNumber }}\n </mat-radio-button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"verificationMethodType.Email\">\n <mat-radio-button class=\"method-item\" *ngFor=\"let method of methodMap.value\" [value]=\"method\">\n {{ method.email }}\n </mat-radio-button>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </fs-radio-group>\n </ng-container>\n\n <div class=\"actions\">\n <ng-container *ngIf=\"methods$ | async\">\n <button mat-button type=\"submit\" color=\"primary\">Next</button>\n </ng-container>\n <button mat-button type=\"button\" (click)=\"cancel()\">Cancel</button>\n </div>\n</form>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { IFsVerificationMethod } from '../../interfaces/verification-method.interface';\n\n\n@Component({\n selector: 'fs-2fa-verification',\n templateUrl: './2fa-verification.component.html',\n styleUrls: [\n './2fa-verification.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Fs2FAVerificationComponent {\n\n @Input()\n public method: IFsVerificationMethod;\n\n @Output()\n public verified = new EventEmitter<unknown>();\n\n @Output()\n public backToSignIn = new EventEmitter<void>();\n\n private _view: 'code' | 'methods' = 'code';\n\n constructor() {}\n\n public get view(): 'code' | 'methods' {\n return this._view;\n }\n\n public switchVerificationMethod(method: 'code' | 'methods'): void {\n this._view = method;\n }\n\n public setActiveMethod(method: IFsVerificationMethod): void {\n this.method = method;\n this.switchVerificationMethod('code');\n }\n\n public cancel(): void {\n this.switchVerificationMethod('code');\n }\n\n public toSignIn(): void {\n this.backToSignIn.emit();\n }\n\n}\n","<ng-container [ngSwitch]=\"view\">\n <ng-container *ngSwitchCase=\"'code'\">\n <fs-2fa-verification-form [method]=\"method\" (verified)=\"verified.emit($event)\">\n <button mat-button type=\"button\" (click)=\"switchVerificationMethod('methods')\">\n Try other ways to verify\n </button>\n\n <a mat-button (click)=\"toSignIn()\">\n Back to signin\n </a>\n </fs-2fa-verification-form>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'methods'\">\n <fs-2fa-verification-methods\n [method]=\"method\"\n (methodChange)=\"setActiveMethod($event)\"\n (cancelled)=\"cancel()\">\n </fs-2fa-verification-methods>\n </ng-container>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { FsFormModule } from '@firestitch/form';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsRadioGroupModule } from '@firestitch/radiogroup';\n\n// import { CodeInputModule } from 'angular-code-input';\n\nimport { Fs2FAVerificationComponent } from './components/2fa-verification/2fa-verification.component';\nimport { Fs2FAVerificationSMSComponent } from './components/2fa-verification-code/2fa-verification-code.component';\nimport { Fs2FAVerificationOTPComponent } from './components/2fa-verification-otp/2fa-verification-otp.component';\nimport { Fs2FAVerificationFormComponent } from './components/2fa-verification-form/2fa-verification-form.component';\nimport { Fs2FaVerificationMethodsComponent } from './components/2fa-verification-methods/2fa-verification-methods.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n\n FsFormModule,\n\n // CodeInputModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n FsSkeletonModule,\n FsSkeletonModule,\n MatIconModule,\n MatRadioModule,\n FsRadioGroupModule,\n ],\n declarations: [\n Fs2FAVerificationComponent,\n\n Fs2FAVerificationFormComponent,\n Fs2FAVerificationSMSComponent,\n Fs2FAVerificationOTPComponent,\n Fs2FaVerificationMethodsComponent,\n ],\n exports: [\n Fs2FAVerificationComponent,\n ],\n providers: [],\n})\nexport class Fs2FaModule {}\n","/*\n * Public API Surface of fs-2fa\n */\n\nexport { Fs2FaModule } from './app/fs-2fa.module';\n\n// Components\nexport { Fs2FAVerificationComponent } from './app/components/2fa-verification/2fa-verification.component';\n\nexport { IFsVerificationProvider } from './app/interfaces/verification-provider.interface';\nexport { IFsVerificationMethod } from './app/interfaces/verification-method.interface';\n\nexport { FsVerificationMethodType } from './app/enums/verification-method-type.enum';\n\nexport { FS_2FA_VERIFICATION_PROVIDER } from './app/tokens/verification.token';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["InjectionToken","EventEmitter","Component","ChangeDetectionStrategy","Output","ControlContainer","NgForm","Input","Subject","tap","takeUntil","Inject","FsVerificationMethodType","map","shareReplay","CommonModule","FormsModule","MatFormFieldModule","MatInputModule","MatButtonModule","FsFormModule","MatCheckboxModule","MatProgressSpinnerModule","FsSkeletonModule","MatIconModule","MatRadioModule","FsRadioGroupModule","NgModule"],"mappings":"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"}
1
+ {"version":3,"file":"firestitch-2fa.umd.js","sources":["../../src/app/tokens/verification.token.ts","../../src/app/enums/verification-method-type.enum.ts","../../src/app/components/2fa-verification-methods/2fa-verification-methods.component.ts","../../src/app/components/2fa-verification-methods/2fa-verification-methods.component.html","../../src/app/components/2fa-verification-otp/2fa-verification-otp.component.ts","../../src/app/components/2fa-verification-otp/2fa-verification-otp.component.html","../../src/app/components/2fa-verification-code/2fa-verification-code.component.ts","../../src/app/components/2fa-verification-code/2fa-verification-code.component.html","../../src/app/components/2fa-verification/2fa-verification.component.ts","../../src/app/components/2fa-verification/2fa-verification.component.html","../../src/app/fs-2fa.module.ts","../../src/public_api.ts","../../src/firestitch-2fa.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport { IFsVerificationProvider } from '../interfaces/verification-provider.interface';\n\nexport const FS_2FA_VERIFICATION_PROVIDER = new InjectionToken<IFsVerificationProvider>(\n 'Provider for Verification service',\n);\n","export enum FsVerificationMethodType {\n Sms = 'sms',\n Email = 'email',\n Authenticator = 'authenticator',\n Code = 'code',\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { Observable } from 'rxjs';\nimport { map, shareReplay, tap } from 'rxjs/operators';\n\nimport { FS_2FA_VERIFICATION_PROVIDER } from '../../tokens/verification.token';\nimport { FsVerificationMethodType } from '../../enums/verification-method-type.enum';\nimport { IFsVerificationProvider } from '../../interfaces/verification-provider.interface';\nimport { IFsVerificationMethod } from '../../interfaces/verification-method.interface';\n\n\n@Component({\n templateUrl: './2fa-verification-methods.component.html',\n styleUrls: [\n './2fa-verification-methods.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Fs2FaVerificationMethodsComponent {\n\n public method: IFsVerificationMethod;\n public phone: string;\n public code: string;\n public methods$: Observable<Record<string, IFsVerificationMethod[]>>;\n public readonly verificationMethodType = FsVerificationMethodType;\n\n constructor(\n @Inject(FS_2FA_VERIFICATION_PROVIDER)\n private _verificationProvider: IFsVerificationProvider,\n @Inject(MAT_DIALOG_DATA)\n private _dialogData: any,\n private _dialogRef: MatDialogRef<Fs2FaVerificationMethodsComponent>,\n ) {\n this._setActiveMethod();\n this._initMethods();\n }\n\n public compareWith(o1, o2) {\n return o1 && o2 && o1.id === o2.id\n }\n\n public setVerificationMethod = () => {\n return this._verificationProvider\n .updateVerificationMethod(this.method.id)\n .pipe(\n tap((method: IFsVerificationMethod) => {\n this._dialogRef.close(method);\n })\n );\n };\n\n private _setActiveMethod(): void {\n this.method = this._dialogData?.method;\n }\n\n private _initMethods(): void {\n this.methods$ = this._verificationProvider\n .methods()\n .pipe(\n map((methods) => {\n return methods\n .reduce((acc, method) => {\n if (!acc[method.type]) {\n acc[method.type] = [];\n }\n\n acc[method.type].push(method);\n\n return acc;\n }, {});\n }),\n shareReplay(1),\n );\n }\n}\n","<fs-dialog>\n <h1 mat-dialog-title>\n Verification Methods\n </h1>\n <form fsForm [submit]=\"setVerificationMethod\" [dirtySubmitButton]=\"false\">\n <mat-dialog-content>\n <ng-container *fsSkeleton=\"methods$ | async as methods\">\n <fs-radio-group [(ngModel)]=\"method\" name=\"method\" [compareWith]=\"compareWith\">\n <ng-container *ngFor=\"let methodMap of methods | keyvalue\">\n <div class=\"method\">\n <ng-container [ngSwitch]=\"methodMap.key\">\n <ng-container *ngSwitchCase=\"verificationMethodType.Sms\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n smartphone\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Text Message</div>\n <div class=\"method-subtitle\">\n Verification code send to one of following mobile number\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"verificationMethodType.Email\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n mail\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Email</div>\n <div class=\"method-subtitle\">\n Verification code send to one of following email\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container [ngSwitch]=\"methodMap.key\">\n <ng-container *ngSwitchCase=\"verificationMethodType.Sms\">\n <mat-radio-button class=\"method-item\" *ngFor=\"let method of methodMap.value\" [value]=\"method\">\n {{ method.phoneNumber }}\n </mat-radio-button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"verificationMethodType.Email\">\n <mat-radio-button class=\"method-item\" *ngFor=\"let method of methodMap.value\" [value]=\"method\">\n {{ method.email }}\n </mat-radio-button>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </fs-radio-group>\n </ng-container>\n </mat-dialog-content>\n <mat-dialog-actions>\n <div class=\"actions\">\n <ng-container *ngIf=\"methods$ | async\">\n <button mat-button type=\"submit\" color=\"primary\">Next</button>\n </ng-container>\n <button mat-button type=\"button\" [mat-dialog-close]=\"null\">Cancel</button>\n </div>\n </mat-dialog-actions>\n </form>\n</fs-dialog>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { FsFormDirective } from '@firestitch/form';\n\n\n@Component({\n selector: 'fs-2fa-verification-otp',\n templateUrl: './2fa-verification-otp.component.html',\n styleUrls: [\n './2fa-verification-otp.component.scss'\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Fs2FAVerificationOTPComponent {\n\n @Output()\n public codeChange = new EventEmitter<string>();\n\n constructor(\n public form: FsFormDirective,\n ) {}\n\n public codeChanged(event: string): void {\n this.codeChange.emit(event);\n this.form.dirty();\n }\n\n public codeCompleted(): void {\n this.form.triggerSubmit();\n }\n}\n","<p class=\"description\">\n Enter the verification code generated by your 2 factor authenticator\n app to verify it's you\n</p>\n\n<!--\n<code-input [initialFocusField]=\"0\"\n [codeLength]=\"6\"\n (codeChanged)=\"codeChanged($event)\"\n (codeCompleted)=\"codeCompleted()\">>\n</code-input>\n-->\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { ControlContainer, NgForm } from '@angular/forms';\n\nimport { IFsVerificationMethod } from '../../interfaces/verification-method.interface';\n\n\n@Component({\n selector: 'fs-2fa-verification-code',\n templateUrl: './2fa-verification-code.component.html',\n styleUrls: [\n './2fa-verification-code.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [\n {\n provide: ControlContainer,\n useExisting: NgForm,\n },\n ],\n})\nexport class Fs2FAVerificationSMSComponent {\n\n @Input()\n public method: IFsVerificationMethod;\n\n @Output()\n public codeChange = new EventEmitter<string>();\n\n public code: string;\n\n public codeChanged(): void {\n this.codeChange.emit(this.code);\n }\n\n}\n","<p class=\"description\">\n <ng-container *ngIf=\"method.phoneNumber && method.type === 'sms'\">\n A text message with a verification code was just\n sent to <span style=\"white-space: nowrap;\">{{ method.phoneNumber }}</span> to verify it's you.\n </ng-container>\n\n <ng-container *ngIf=\"method.type === 'email'\">\n A email with a verification code was just sent to {{ method.email }} to verify it's you.\n </ng-container>\n\n <ng-container *ngIf=\"false\">\n Enter the one time code generated by the app administrator to verify it's you.\n </ng-container>\n</p>\n\n<mat-form-field>\n <mat-label>Code</mat-label>\n <input type=\"text\"\n matInput\n name=\"code\"\n autocomplete=\"one-time-code\"\n [(ngModel)]=\"code\"\n (ngModelChange)=\"codeChanged()\"\n required\n placeholder=\"Enter the code\"\n inputmode=\"numeric\">\n</mat-form-field>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Output,\n} from '@angular/core';\n\nimport { FsDialog } from '@firestitch/dialog';\n\nimport { filter, takeUntil, tap } from 'rxjs/operators';\n\nimport { IFsVerificationMethod } from '../../interfaces/verification-method.interface';\nimport { Fs2FaVerificationMethodsComponent } from '../2fa-verification-methods/2fa-verification-methods.component';\nimport { Subject } from 'rxjs';\nimport { FS_2FA_VERIFICATION_PROVIDER } from '../../tokens/verification.token';\nimport { IFsVerificationProvider } from '../../interfaces/verification-provider.interface';\n\n\n@Component({\n selector: 'fs-2fa-verification',\n templateUrl: './2fa-verification.component.html',\n styleUrls: [\n './2fa-verification.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Fs2FAVerificationComponent implements OnDestroy {\n\n @Input()\n public method: IFsVerificationMethod;\n\n @Output()\n public verified = new EventEmitter<unknown>();\n\n @Output()\n public backToSignIn = new EventEmitter<void>();\n\n\n public resendInProgress = false;\n public trustedDevice = false;\n\n private _code: string;\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(FS_2FA_VERIFICATION_PROVIDER)\n public verificationProvider: IFsVerificationProvider,\n private _cdRef: ChangeDetectorRef,\n private _dialog: FsDialog,\n ) {}\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public verify = () => {\n return this.verificationProvider\n .verify(this._code, this.trustedDevice)\n .pipe(\n tap((response) => {\n this.verified.emit(response);\n }),\n );\n };\n\n public codeChanged(code: string): void {\n this._code = code;\n }\n\n public resend(): void {\n this.resendInProgress = true;\n\n this.verificationProvider\n .resend()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.resendInProgress = false;\n\n this._cdRef.markForCheck();\n })\n }\n\n public showVerificationMethods(): void {\n this._dialog.open(\n Fs2FaVerificationMethodsComponent,\n {\n data: {\n method: this.method,\n }\n }\n )\n .afterClosed()\n .pipe(\n filter((method) => !!method),\n )\n .subscribe((method) => {\n this.method = method;\n\n this._cdRef.markForCheck();\n });\n }\n\n public toSignIn(): void {\n this.backToSignIn.emit();\n }\n\n}\n","<form fsForm [submit]=\"verify\" [dirtySubmitButton]=\"false\">\n <h2>2-Step Verification</h2>\n\n <div class=\"code-container\">\n <ng-container *ngIf=\"method.type === 'authenticator' else code\">\n <fs-2fa-verification-otp class=\"otp\"></fs-2fa-verification-otp>\n </ng-container>\n\n <ng-template #code>\n <fs-2fa-verification-code\n [method]=\"method\"\n (codeChange)=\"codeChanged($event)\">\n </fs-2fa-verification-code>\n </ng-template>\n </div>\n\n <div class=\"additional\">\n <mat-checkbox\n name=\"trust-device\"\n [(ngModel)]=\"trustedDevice\">\n Trust this device\n </mat-checkbox>\n\n <span class=\"resend-code-btn\">\n <ng-container *ngIf=\"!resendInProgress else sending\">\n <a (click)=\"resend()\">\n Resend Code\n </a>\n </ng-container>\n <ng-template #sending>\n <mat-spinner [diameter]=\"12\"></mat-spinner> Sending\n </ng-template>\n </span>\n </div>\n\n <div class=\"actions\">\n <button mat-raised-button\n color=\"primary\"\n type=\"submit\">\n Verify\n </button>\n\n <button mat-button type=\"button\" (click)=\"showVerificationMethods()\">\n Try other ways to verify\n </button>\n\n <button mat-button type=\"button\" (click)=\"toSignIn()\">\n Back to signin\n </button>\n </div>\n</form>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { FsFormModule } from '@firestitch/form';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsRadioGroupModule } from '@firestitch/radiogroup';\nimport { FsDialogModule } from '@firestitch/dialog';\n\n// import { CodeInputModule } from 'angular-code-input';\n\nimport { Fs2FAVerificationComponent } from './components/2fa-verification/2fa-verification.component';\nimport { Fs2FAVerificationSMSComponent } from './components/2fa-verification-code/2fa-verification-code.component';\nimport { Fs2FAVerificationOTPComponent } from './components/2fa-verification-otp/2fa-verification-otp.component';\nimport { Fs2FaVerificationMethodsComponent } from './components/2fa-verification-methods/2fa-verification-methods.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n\n FsFormModule,\n FsRadioGroupModule,\n FsDialogModule,\n\n // CodeInputModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n FsSkeletonModule,\n FsSkeletonModule,\n MatIconModule,\n MatRadioModule,\n ],\n declarations: [\n Fs2FAVerificationComponent,\n\n Fs2FAVerificationSMSComponent,\n Fs2FAVerificationOTPComponent,\n Fs2FaVerificationMethodsComponent,\n ],\n exports: [\n Fs2FAVerificationComponent,\n ],\n providers: [],\n})\nexport class Fs2FaModule {}\n","/*\n * Public API Surface of fs-2fa\n */\n\nexport { Fs2FaModule } from './app/fs-2fa.module';\n\n// Components\nexport { Fs2FAVerificationComponent } from './app/components/2fa-verification/2fa-verification.component';\n\nexport { IFsVerificationProvider } from './app/interfaces/verification-provider.interface';\nexport { IFsVerificationMethod } from './app/interfaces/verification-method.interface';\n\nexport { FsVerificationMethodType } from './app/enums/verification-method-type.enum';\n\nexport { FS_2FA_VERIFICATION_PROVIDER } from './app/tokens/verification.token';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["InjectionToken","FsVerificationMethodType","tap","map","shareReplay","MAT_DIALOG_DATA","Component","ChangeDetectionStrategy","Inject","EventEmitter","Output","ControlContainer","NgForm","Input","Subject","takeUntil","filter","CommonModule","FormsModule","MatFormFieldModule","MatInputModule","MatButtonModule","FsFormModule","FsRadioGroupModule","FsDialogModule","MatCheckboxModule","MatProgressSpinnerModule","FsSkeletonModule","MatIconModule","MatRadioModule","NgModule"],"mappings":"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"}
@@ -1,34 +1,73 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Inject, Input, Output, } from '@angular/core';
2
+ import { FsDialog } from '@firestitch/dialog';
3
+ import { filter, takeUntil, tap } from 'rxjs/operators';
4
+ import { Fs2FaVerificationMethodsComponent } from '../2fa-verification-methods/2fa-verification-methods.component';
5
+ import { Subject } from 'rxjs';
6
+ import { FS_2FA_VERIFICATION_PROVIDER } from '../../tokens/verification.token';
2
7
  import * as i0 from "@angular/core";
3
- import * as i1 from "../2fa-verification-form/2fa-verification-form.component";
4
- import * as i2 from "@angular/material/button";
5
- import * as i3 from "../2fa-verification-methods/2fa-verification-methods.component";
6
- import * as i4 from "@angular/common";
8
+ import * as i1 from "@firestitch/dialog";
9
+ import * as i2 from "../2fa-verification-otp/2fa-verification-otp.component";
10
+ import * as i3 from "../2fa-verification-code/2fa-verification-code.component";
11
+ import * as i4 from "@angular/material/checkbox";
12
+ import * as i5 from "@angular/material/progress-spinner";
13
+ import * as i6 from "@angular/material/button";
14
+ import * as i7 from "@angular/forms";
15
+ import * as i8 from "@firestitch/form";
16
+ import * as i9 from "@angular/common";
7
17
  export class Fs2FAVerificationComponent {
8
- constructor() {
18
+ constructor(verificationProvider, _cdRef, _dialog) {
19
+ this.verificationProvider = verificationProvider;
20
+ this._cdRef = _cdRef;
21
+ this._dialog = _dialog;
9
22
  this.verified = new EventEmitter();
10
23
  this.backToSignIn = new EventEmitter();
11
- this._view = 'code';
24
+ this.resendInProgress = false;
25
+ this.trustedDevice = false;
26
+ this._destroy$ = new Subject();
27
+ this.verify = () => {
28
+ return this.verificationProvider
29
+ .verify(this._code, this.trustedDevice)
30
+ .pipe(tap((response) => {
31
+ this.verified.emit(response);
32
+ }));
33
+ };
12
34
  }
13
- get view() {
14
- return this._view;
35
+ ngOnDestroy() {
36
+ this._destroy$.next();
37
+ this._destroy$.complete();
15
38
  }
16
- switchVerificationMethod(method) {
17
- this._view = method;
39
+ codeChanged(code) {
40
+ this._code = code;
18
41
  }
19
- setActiveMethod(method) {
20
- this.method = method;
21
- this.switchVerificationMethod('code');
42
+ resend() {
43
+ this.resendInProgress = true;
44
+ this.verificationProvider
45
+ .resend()
46
+ .pipe(takeUntil(this._destroy$))
47
+ .subscribe(() => {
48
+ this.resendInProgress = false;
49
+ this._cdRef.markForCheck();
50
+ });
22
51
  }
23
- cancel() {
24
- this.switchVerificationMethod('code');
52
+ showVerificationMethods() {
53
+ this._dialog.open(Fs2FaVerificationMethodsComponent, {
54
+ data: {
55
+ method: this.method,
56
+ }
57
+ })
58
+ .afterClosed()
59
+ .pipe(filter((method) => !!method))
60
+ .subscribe((method) => {
61
+ this.method = method;
62
+ this._cdRef.markForCheck();
63
+ });
25
64
  }
26
65
  toSignIn() {
27
66
  this.backToSignIn.emit();
28
67
  }
29
68
  }
30
- Fs2FAVerificationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FAVerificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31
- Fs2FAVerificationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2FAVerificationComponent, selector: "fs-2fa-verification", inputs: { method: "method" }, outputs: { verified: "verified", backToSignIn: "backToSignIn" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"view\">\n <ng-container *ngSwitchCase=\"'code'\">\n <fs-2fa-verification-form [method]=\"method\" (verified)=\"verified.emit($event)\">\n <button mat-button type=\"button\" (click)=\"switchVerificationMethod('methods')\">\n Try other ways to verify\n </button>\n\n <a mat-button (click)=\"toSignIn()\">\n Back to signin\n </a>\n </fs-2fa-verification-form>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'methods'\">\n <fs-2fa-verification-methods\n [method]=\"method\"\n (methodChange)=\"setActiveMethod($event)\"\n (cancelled)=\"cancel()\">\n </fs-2fa-verification-methods>\n </ng-container>\n</ng-container>\n", styles: [":host{display:block}\n"], components: [{ type: i1.Fs2FAVerificationFormComponent, selector: "fs-2fa-verification-form", inputs: ["method"], outputs: ["verified"] }, { type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i2.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { type: i3.Fs2FaVerificationMethodsComponent, selector: "fs-2fa-verification-methods", inputs: ["method"], outputs: ["methodChange", "cancelled"] }], directives: [{ type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
69
+ Fs2FAVerificationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FAVerificationComponent, deps: [{ token: FS_2FA_VERIFICATION_PROVIDER }, { token: i0.ChangeDetectorRef }, { token: i1.FsDialog }], target: i0.ɵɵFactoryTarget.Component });
70
+ Fs2FAVerificationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2FAVerificationComponent, selector: "fs-2fa-verification", inputs: { method: "method" }, outputs: { verified: "verified", backToSignIn: "backToSignIn" }, ngImport: i0, template: "<form fsForm [submit]=\"verify\" [dirtySubmitButton]=\"false\">\n <h2>2-Step Verification</h2>\n\n <div class=\"code-container\">\n <ng-container *ngIf=\"method.type === 'authenticator' else code\">\n <fs-2fa-verification-otp class=\"otp\"></fs-2fa-verification-otp>\n </ng-container>\n\n <ng-template #code>\n <fs-2fa-verification-code\n [method]=\"method\"\n (codeChange)=\"codeChanged($event)\">\n </fs-2fa-verification-code>\n </ng-template>\n </div>\n\n <div class=\"additional\">\n <mat-checkbox\n name=\"trust-device\"\n [(ngModel)]=\"trustedDevice\">\n Trust this device\n </mat-checkbox>\n\n <span class=\"resend-code-btn\">\n <ng-container *ngIf=\"!resendInProgress else sending\">\n <a (click)=\"resend()\">\n Resend Code\n </a>\n </ng-container>\n <ng-template #sending>\n <mat-spinner [diameter]=\"12\"></mat-spinner> Sending\n </ng-template>\n </span>\n </div>\n\n <div class=\"actions\">\n <button mat-raised-button\n color=\"primary\"\n type=\"submit\">\n Verify\n </button>\n\n <button mat-button type=\"button\" (click)=\"showVerificationMethods()\">\n Try other ways to verify\n </button>\n\n <button mat-button type=\"button\" (click)=\"toSignIn()\">\n Back to signin\n </button>\n </div>\n</form>\n", styles: [":host{display:block}h2,.code-container{text-align:center}.code-container .otp{margin-bottom:15px}:host ::ng-deep .actions{margin:10px 0}:host ::ng-deep .actions a{width:100%;font-weight:400}:host ::ng-deep .actions button{width:100%;margin-bottom:5px}:host ::ng-deep .actions button[type=button]{font-weight:400}.additional{display:flex;justify-content:space-between;align-items:baseline;margin-top:-5px}.additional .resend-code-btn{cursor:pointer;text-transform:none}.additional .resend-code-btn mat-spinner{display:inline-block;vertical-align:middle}\n"], components: [{ type: i2.Fs2FAVerificationOTPComponent, selector: "fs-2fa-verification-otp", outputs: ["codeChange"] }, { type: i3.Fs2FAVerificationSMSComponent, selector: "fs-2fa-verification-code", inputs: ["method"], outputs: ["codeChange"] }, { type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i5.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i8.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "successDelay", "errorDelay", "submit", "tabGroup"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.ɵw, selector: "button[type=\"submit\"]", inputs: ["dirtySubmit", "name"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
32
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FAVerificationComponent, decorators: [{
33
72
  type: Component,
34
73
  args: [{
@@ -39,11 +78,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
39
78
  ],
40
79
  changeDetection: ChangeDetectionStrategy.OnPush,
41
80
  }]
42
- }], ctorParameters: function () { return []; }, propDecorators: { method: [{
81
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
82
+ type: Inject,
83
+ args: [FS_2FA_VERIFICATION_PROVIDER]
84
+ }] }, { type: i0.ChangeDetectorRef }, { type: i1.FsDialog }]; }, propDecorators: { method: [{
43
85
  type: Input
44
86
  }], verified: [{
45
87
  type: Output
46
88
  }], backToSignIn: [{
47
89
  type: Output
48
90
  }] } });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMmZhLXZlcmlmaWNhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvMmZhLXZlcmlmaWNhdGlvbi8yZmEtdmVyaWZpY2F0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLzJmYS12ZXJpZmljYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7Ozs7OztBQWF2QixNQUFNLE9BQU8sMEJBQTBCO0lBYXJDO1FBUE8sYUFBUSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFHdkMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXZDLFVBQUssR0FBdUIsTUFBTSxDQUFDO0lBRTVCLENBQUM7SUFFaEIsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxNQUEwQjtRQUN4RCxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztJQUN0QixDQUFDO0lBRU0sZUFBZSxDQUFDLE1BQTZCO1FBQ2xELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7d0hBbENVLDBCQUEwQjs0R0FBMUIsMEJBQTBCLDBKQ25CdkMsdXNCQXFCQTs0RkRGYSwwQkFBMEI7a0JBUnRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsV0FBVyxFQUFFLG1DQUFtQztvQkFDaEQsU0FBUyxFQUFFO3dCQUNULG1DQUFtQztxQkFDcEM7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzBFQUlRLE1BQU07c0JBRFosS0FBSztnQkFJQyxRQUFRO3NCQURkLE1BQU07Z0JBSUEsWUFBWTtzQkFEbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IElGc1ZlcmlmaWNhdGlvbk1ldGhvZCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdmVyaWZpY2F0aW9uLW1ldGhvZC5pbnRlcmZhY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLTJmYS12ZXJpZmljYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vMmZhLXZlcmlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW1xuICAgICcuLzJmYS12ZXJpZmljYXRpb24uY29tcG9uZW50LnNjc3MnLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRnMyRkFWZXJpZmljYXRpb25Db21wb25lbnQge1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtZXRob2Q6IElGc1ZlcmlmaWNhdGlvbk1ldGhvZDtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHZlcmlmaWVkID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgYmFja1RvU2lnbkluID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHByaXZhdGUgX3ZpZXc6ICdjb2RlJyB8ICdtZXRob2RzJyA9ICdjb2RlJztcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHVibGljIGdldCB2aWV3KCk6ICdjb2RlJyB8ICdtZXRob2RzJyB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXc7XG4gIH1cblxuICBwdWJsaWMgc3dpdGNoVmVyaWZpY2F0aW9uTWV0aG9kKG1ldGhvZDogJ2NvZGUnIHwgJ21ldGhvZHMnKTogdm9pZCB7XG4gICAgdGhpcy5fdmlldyA9IG1ldGhvZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3RpdmVNZXRob2QobWV0aG9kOiBJRnNWZXJpZmljYXRpb25NZXRob2QpOiB2b2lkIHtcbiAgICB0aGlzLm1ldGhvZCA9IG1ldGhvZDtcbiAgICB0aGlzLnN3aXRjaFZlcmlmaWNhdGlvbk1ldGhvZCgnY29kZScpO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLnN3aXRjaFZlcmlmaWNhdGlvbk1ldGhvZCgnY29kZScpO1xuICB9XG5cbiAgcHVibGljIHRvU2lnbkluKCk6IHZvaWQge1xuICAgIHRoaXMuYmFja1RvU2lnbkluLmVtaXQoKTtcbiAgfVxuXG59XG4iLCI8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ2aWV3XCI+XG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjb2RlJ1wiPlxuICAgIDxmcy0yZmEtdmVyaWZpY2F0aW9uLWZvcm0gW21ldGhvZF09XCJtZXRob2RcIiAodmVyaWZpZWQpPVwidmVyaWZpZWQuZW1pdCgkZXZlbnQpXCI+XG4gICAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzd2l0Y2hWZXJpZmljYXRpb25NZXRob2QoJ21ldGhvZHMnKVwiPlxuICAgICAgICBUcnkgb3RoZXIgd2F5cyB0byB2ZXJpZnlcbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YSBtYXQtYnV0dG9uIChjbGljayk9XCJ0b1NpZ25JbigpXCI+XG4gICAgICAgIEJhY2sgdG8gc2lnbmluXG4gICAgICA8L2E+XG4gICAgPC9mcy0yZmEtdmVyaWZpY2F0aW9uLWZvcm0+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtZXRob2RzJ1wiPlxuICAgIDxmcy0yZmEtdmVyaWZpY2F0aW9uLW1ldGhvZHNcbiAgICAgIFttZXRob2RdPVwibWV0aG9kXCJcbiAgICAgIChtZXRob2RDaGFuZ2UpPVwic2V0QWN0aXZlTWV0aG9kKCRldmVudClcIlxuICAgICAgKGNhbmNlbGxlZCk9XCJjYW5jZWwoKVwiPlxuICAgIDwvZnMtMmZhLXZlcmlmaWNhdGlvbi1tZXRob2RzPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMmZhLXZlcmlmaWNhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvMmZhLXZlcmlmaWNhdGlvbi8yZmEtdmVyaWZpY2F0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLzJmYS12ZXJpZmljYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDbkgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7Ozs7QUFZL0UsTUFBTSxPQUFPLDBCQUEwQjtJQWtCckMsWUFFUyxvQkFBNkMsRUFDNUMsTUFBeUIsRUFDekIsT0FBaUI7UUFGbEIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF5QjtRQUM1QyxXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUN6QixZQUFPLEdBQVAsT0FBTyxDQUFVO1FBaEJwQixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUd2QyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFHeEMscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBR3JCLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBY2pDLFdBQU0sR0FBRyxHQUFHLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUMsb0JBQW9CO2lCQUM3QixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO2lCQUN0QyxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNOLENBQUMsQ0FBQztJQWZDLENBQUM7SUFFRyxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBWU0sV0FBVyxDQUFDLElBQVk7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBRTdCLElBQUksQ0FBQyxvQkFBb0I7YUFDdEIsTUFBTSxFQUFFO2FBQ1IsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzFCO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7WUFFOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFTSx1QkFBdUI7UUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ2YsaUNBQWlDLEVBQ2pDO1lBQ0UsSUFBSSxFQUFFO2dCQUNKLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTthQUNwQjtTQUNGLENBQ0Y7YUFDRSxXQUFXLEVBQUU7YUFDYixJQUFJLENBQ0gsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQzdCO2FBQ0EsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFFckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDOzt3SEFqRlUsMEJBQTBCLGtCQW1CM0IsNEJBQTRCOzRHQW5CM0IsMEJBQTBCLDBKQzlCdkMseTNDQW1EQTs0RkRyQmEsMEJBQTBCO2tCQVJ0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFdBQVcsRUFBRSxtQ0FBbUM7b0JBQ2hELFNBQVMsRUFBRTt3QkFDVCxtQ0FBbUM7cUJBQ3BDO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDs7MEJBb0JJLE1BQU07MkJBQUMsNEJBQTRCO21HQWhCL0IsTUFBTTtzQkFEWixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsTUFBTTtnQkFJQSxZQUFZO3NCQURsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGc0RpYWxvZyB9IGZyb20gJ0BmaXJlc3RpdGNoL2RpYWxvZyc7XG5cbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IElGc1ZlcmlmaWNhdGlvbk1ldGhvZCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdmVyaWZpY2F0aW9uLW1ldGhvZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRnMyRmFWZXJpZmljYXRpb25NZXRob2RzQ29tcG9uZW50IH0gZnJvbSAnLi4vMmZhLXZlcmlmaWNhdGlvbi1tZXRob2RzLzJmYS12ZXJpZmljYXRpb24tbWV0aG9kcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRlNfMkZBX1ZFUklGSUNBVElPTl9QUk9WSURFUiB9IGZyb20gJy4uLy4uL3Rva2Vucy92ZXJpZmljYXRpb24udG9rZW4nO1xuaW1wb3J0IHsgSUZzVmVyaWZpY2F0aW9uUHJvdmlkZXIgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3ZlcmlmaWNhdGlvbi1wcm92aWRlci5pbnRlcmZhY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLTJmYS12ZXJpZmljYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vMmZhLXZlcmlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW1xuICAgICcuLzJmYS12ZXJpZmljYXRpb24uY29tcG9uZW50LnNjc3MnLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRnMyRkFWZXJpZmljYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtZXRob2Q6IElGc1ZlcmlmaWNhdGlvbk1ldGhvZDtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHZlcmlmaWVkID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgYmFja1RvU2lnbkluID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG5cbiAgcHVibGljIHJlc2VuZEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgcHVibGljIHRydXN0ZWREZXZpY2UgPSBmYWxzZTtcblxuICBwcml2YXRlIF9jb2RlOiBzdHJpbmc7XG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEZTXzJGQV9WRVJJRklDQVRJT05fUFJPVklERVIpXG4gICAgcHVibGljIHZlcmlmaWNhdGlvblByb3ZpZGVyOiBJRnNWZXJpZmljYXRpb25Qcm92aWRlcixcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBGc0RpYWxvZyxcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB2ZXJpZnkgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMudmVyaWZpY2F0aW9uUHJvdmlkZXJcbiAgICAgIC52ZXJpZnkodGhpcy5fY29kZSwgdGhpcy50cnVzdGVkRGV2aWNlKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLnZlcmlmaWVkLmVtaXQocmVzcG9uc2UpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH07XG5cbiAgcHVibGljIGNvZGVDaGFuZ2VkKGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2NvZGUgPSBjb2RlO1xuICB9XG5cbiAgcHVibGljIHJlc2VuZCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2VuZEluUHJvZ3Jlc3MgPSB0cnVlO1xuXG4gICAgdGhpcy52ZXJpZmljYXRpb25Qcm92aWRlclxuICAgICAgLnJlc2VuZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlc2VuZEluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pXG4gIH1cblxuICBwdWJsaWMgc2hvd1ZlcmlmaWNhdGlvbk1ldGhvZHMoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oXG4gICAgICBGczJGYVZlcmlmaWNhdGlvbk1ldGhvZHNDb21wb25lbnQsXG4gICAgICB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBtZXRob2Q6IHRoaXMubWV0aG9kLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgKVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKG1ldGhvZCkgPT4gISFtZXRob2QpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgobWV0aG9kKSA9PiB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gbWV0aG9kO1xuXG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdG9TaWduSW4oKTogdm9pZCB7XG4gICAgdGhpcy5iYWNrVG9TaWduSW4uZW1pdCgpO1xuICB9XG5cbn1cbiIsIjxmb3JtIGZzRm9ybSBbc3VibWl0XT1cInZlcmlmeVwiIFtkaXJ0eVN1Ym1pdEJ1dHRvbl09XCJmYWxzZVwiPlxuICA8aDI+Mi1TdGVwIFZlcmlmaWNhdGlvbjwvaDI+XG5cbiAgPGRpdiBjbGFzcz1cImNvZGUtY29udGFpbmVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1ldGhvZC50eXBlID09PSAnYXV0aGVudGljYXRvcicgZWxzZSBjb2RlXCI+XG4gICAgICA8ZnMtMmZhLXZlcmlmaWNhdGlvbi1vdHAgY2xhc3M9XCJvdHBcIj48L2ZzLTJmYS12ZXJpZmljYXRpb24tb3RwPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNjb2RlPlxuICAgICAgPGZzLTJmYS12ZXJpZmljYXRpb24tY29kZVxuICAgICAgICBbbWV0aG9kXT1cIm1ldGhvZFwiXG4gICAgICAgIChjb2RlQ2hhbmdlKT1cImNvZGVDaGFuZ2VkKCRldmVudClcIj5cbiAgICAgIDwvZnMtMmZhLXZlcmlmaWNhdGlvbi1jb2RlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJhZGRpdGlvbmFsXCI+XG4gICAgPG1hdC1jaGVja2JveFxuICAgICAgbmFtZT1cInRydXN0LWRldmljZVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInRydXN0ZWREZXZpY2VcIj5cbiAgICAgIFRydXN0IHRoaXMgZGV2aWNlXG4gICAgPC9tYXQtY2hlY2tib3g+XG5cbiAgICA8c3BhbiBjbGFzcz1cInJlc2VuZC1jb2RlLWJ0blwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyZXNlbmRJblByb2dyZXNzIGVsc2Ugc2VuZGluZ1wiPlxuICAgICAgICA8YSAoY2xpY2spPVwicmVzZW5kKClcIj5cbiAgICAgICAgICBSZXNlbmQgQ29kZVxuICAgICAgICA8L2E+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2VuZGluZz5cbiAgICAgICAgPG1hdC1zcGlubmVyIFtkaWFtZXRlcl09XCIxMlwiPjwvbWF0LXNwaW5uZXI+IFNlbmRpbmdcbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCI+XG4gICAgICBWZXJpZnlcbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNob3dWZXJpZmljYXRpb25NZXRob2RzKClcIj5cbiAgICAgIFRyeSBvdGhlciB3YXlzIHRvIHZlcmlmeVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwidG9TaWduSW4oKVwiPlxuICAgICAgQmFjayB0byBzaWduaW5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
@@ -15,7 +15,7 @@ export class Fs2FAVerificationSMSComponent {
15
15
  }
16
16
  }
17
17
  Fs2FAVerificationSMSComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FAVerificationSMSComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18
- Fs2FAVerificationSMSComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2FAVerificationSMSComponent, selector: "fs-2fa-verification-code", inputs: { method: "method" }, outputs: { codeChange: "codeChange" }, ngImport: i0, template: "<p class=\"description\">\n <ng-container *ngIf=\"method.phoneCode && method.phoneNumber && method.type === 'sms'\">\n A text message with a verification code was just\n sent to <span style=\"white-space: nowrap;\">+{{ method.phoneCode }} {{ method.phoneNumber }}</span> to verify it's you.\n </ng-container>\n\n <ng-container *ngIf=\"method.type === 'email'\">\n A email with a verification code was just sent to {{ method.email }} to verify it's you.\n </ng-container>\n\n <ng-container *ngIf=\"false\">\n Enter the one time code generated by the app administrator to verify it's you.\n </ng-container>\n</p>\n\n<mat-form-field>\n <mat-label>Code</mat-label>\n <input type=\"text\"\n matInput\n name=\"code\"\n autocomplete=\"one-time-code\"\n [(ngModel)]=\"code\"\n (ngModelChange)=\"codeChanged()\"\n required\n placeholder=\"Enter the code\"\n inputmode=\"numeric\">\n</mat-form-field>\n", styles: [":host{display:block}mat-form-field{width:100%}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatLabel, selector: "mat-label" }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { 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]" }, { type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.ɵf, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }], viewProviders: [
18
+ Fs2FAVerificationSMSComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2FAVerificationSMSComponent, selector: "fs-2fa-verification-code", inputs: { method: "method" }, outputs: { codeChange: "codeChange" }, ngImport: i0, template: "<p class=\"description\">\n <ng-container *ngIf=\"method.phoneNumber && method.type === 'sms'\">\n A text message with a verification code was just\n sent to <span style=\"white-space: nowrap;\">{{ method.phoneNumber }}</span> to verify it's you.\n </ng-container>\n\n <ng-container *ngIf=\"method.type === 'email'\">\n A email with a verification code was just sent to {{ method.email }} to verify it's you.\n </ng-container>\n\n <ng-container *ngIf=\"false\">\n Enter the one time code generated by the app administrator to verify it's you.\n </ng-container>\n</p>\n\n<mat-form-field>\n <mat-label>Code</mat-label>\n <input type=\"text\"\n matInput\n name=\"code\"\n autocomplete=\"one-time-code\"\n [(ngModel)]=\"code\"\n (ngModelChange)=\"codeChanged()\"\n required\n placeholder=\"Enter the code\"\n inputmode=\"numeric\">\n</mat-form-field>\n", styles: [":host{display:block}mat-form-field{width:100%}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatLabel, selector: "mat-label" }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { 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]" }, { type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.ɵf, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }], viewProviders: [
19
19
  {
20
20
  provide: ControlContainer,
21
21
  useExisting: NgForm,
@@ -42,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
42
42
  }], codeChange: [{
43
43
  type: Output
44
44
  }] } });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMmZhLXZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLWNvZGUvMmZhLXZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLWNvZGUvMmZhLXZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQW1CMUQsTUFBTSxPQUFPLDZCQUE2QjtJQWQxQztRQW9CUyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQVFoRDtJQUpRLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7OzJIQVpVLDZCQUE2QjsrR0FBN0IsNkJBQTZCLHFJQzFCMUMsazlCQTJCQSxxaUREUmlCO1FBQ2I7WUFDRSxPQUFPLEVBQUUsZ0JBQWdCO1lBQ3pCLFdBQVcsRUFBRSxNQUFNO1NBQ3BCO0tBQ0Y7NEZBRVUsNkJBQTZCO2tCQWR6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFdBQVcsRUFBRSx3Q0FBd0M7b0JBQ3JELFNBQVMsRUFBRTt3QkFDVCx3Q0FBd0M7cUJBQ3pDO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUU7d0JBQ2I7NEJBQ0UsT0FBTyxFQUFFLGdCQUFnQjs0QkFDekIsV0FBVyxFQUFFLE1BQU07eUJBQ3BCO3FCQUNGO2lCQUNGOzhCQUlRLE1BQU07c0JBRFosS0FBSztnQkFJQyxVQUFVO3NCQURoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgSUZzVmVyaWZpY2F0aW9uTWV0aG9kIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy92ZXJpZmljYXRpb24tbWV0aG9kLmludGVyZmFjZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtMmZhLXZlcmlmaWNhdGlvbi1jb2RlJyxcbiAgdGVtcGxhdGVVcmw6ICcuLzJmYS12ZXJpZmljYXRpb24tY29kZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW1xuICAgICcuLzJmYS12ZXJpZmljYXRpb24tY29kZS5jb21wb25lbnQuc2NzcycsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB2aWV3UHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lcixcbiAgICAgIHVzZUV4aXN0aW5nOiBOZ0Zvcm0sXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnMyRkFWZXJpZmljYXRpb25TTVNDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtZXRob2Q6IElGc1ZlcmlmaWNhdGlvbk1ldGhvZDtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNvZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBwdWJsaWMgY29kZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb2RlQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvZGVDaGFuZ2UuZW1pdCh0aGlzLmNvZGUpO1xuICB9XG5cbn1cbiIsIjxwIGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1ldGhvZC5waG9uZUNvZGUgJiYgbWV0aG9kLnBob25lTnVtYmVyICYmIG1ldGhvZC50eXBlID09PSAnc21zJ1wiPlxuICAgIEEgdGV4dCBtZXNzYWdlIHdpdGggYSB2ZXJpZmljYXRpb24gY29kZSB3YXMganVzdFxuICAgIHNlbnQgdG8gPHNwYW4gc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwO1wiPit7eyBtZXRob2QucGhvbmVDb2RlIH19IHt7IG1ldGhvZC5waG9uZU51bWJlciB9fTwvc3Bhbj4gdG8gdmVyaWZ5IGl0J3MgeW91LlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibWV0aG9kLnR5cGUgPT09ICdlbWFpbCdcIj5cbiAgICBBIGVtYWlsIHdpdGggYSB2ZXJpZmljYXRpb24gY29kZSB3YXMganVzdCBzZW50IHRvIHt7IG1ldGhvZC5lbWFpbCB9fSB0byB2ZXJpZnkgaXQncyB5b3UuXG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmYWxzZVwiPlxuICAgIEVudGVyIHRoZSBvbmUgdGltZSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgYXBwIGFkbWluaXN0cmF0b3IgdG8gdmVyaWZ5IGl0J3MgeW91LlxuICA8L25nLWNvbnRhaW5lcj5cbjwvcD5cblxuPG1hdC1mb3JtLWZpZWxkPlxuICA8bWF0LWxhYmVsPkNvZGU8L21hdC1sYWJlbD5cbiAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgIG1hdElucHV0XG4gICAgICAgICBuYW1lPVwiY29kZVwiXG4gICAgICAgICBhdXRvY29tcGxldGU9XCJvbmUtdGltZS1jb2RlXCJcbiAgICAgICAgIFsobmdNb2RlbCldPVwiY29kZVwiXG4gICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjb2RlQ2hhbmdlZCgpXCJcbiAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHRoZSBjb2RlXCJcbiAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIj5cbjwvbWF0LWZvcm0tZmllbGQ+XG4iXX0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMmZhLXZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLWNvZGUvMmZhLXZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLWNvZGUvMmZhLXZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQW1CMUQsTUFBTSxPQUFPLDZCQUE2QjtJQWQxQztRQW9CUyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQVFoRDtJQUpRLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7OzJIQVpVLDZCQUE2QjsrR0FBN0IsNkJBQTZCLHFJQzFCMUMsczZCQTJCQSxxaUREUmlCO1FBQ2I7WUFDRSxPQUFPLEVBQUUsZ0JBQWdCO1lBQ3pCLFdBQVcsRUFBRSxNQUFNO1NBQ3BCO0tBQ0Y7NEZBRVUsNkJBQTZCO2tCQWR6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFdBQVcsRUFBRSx3Q0FBd0M7b0JBQ3JELFNBQVMsRUFBRTt3QkFDVCx3Q0FBd0M7cUJBQ3pDO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUU7d0JBQ2I7NEJBQ0UsT0FBTyxFQUFFLGdCQUFnQjs0QkFDekIsV0FBVyxFQUFFLE1BQU07eUJBQ3BCO3FCQUNGO2lCQUNGOzhCQUlRLE1BQU07c0JBRFosS0FBSztnQkFJQyxVQUFVO3NCQURoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgSUZzVmVyaWZpY2F0aW9uTWV0aG9kIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy92ZXJpZmljYXRpb24tbWV0aG9kLmludGVyZmFjZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtMmZhLXZlcmlmaWNhdGlvbi1jb2RlJyxcbiAgdGVtcGxhdGVVcmw6ICcuLzJmYS12ZXJpZmljYXRpb24tY29kZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW1xuICAgICcuLzJmYS12ZXJpZmljYXRpb24tY29kZS5jb21wb25lbnQuc2NzcycsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB2aWV3UHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lcixcbiAgICAgIHVzZUV4aXN0aW5nOiBOZ0Zvcm0sXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnMyRkFWZXJpZmljYXRpb25TTVNDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtZXRob2Q6IElGc1ZlcmlmaWNhdGlvbk1ldGhvZDtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNvZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBwdWJsaWMgY29kZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb2RlQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvZGVDaGFuZ2UuZW1pdCh0aGlzLmNvZGUpO1xuICB9XG5cbn1cbiIsIjxwIGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1ldGhvZC5waG9uZU51bWJlciAmJiBtZXRob2QudHlwZSA9PT0gJ3NtcydcIj5cbiAgICBBIHRleHQgbWVzc2FnZSB3aXRoIGEgdmVyaWZpY2F0aW9uIGNvZGUgd2FzIGp1c3RcbiAgICBzZW50IHRvIDxzcGFuIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDtcIj57eyBtZXRob2QucGhvbmVOdW1iZXIgfX08L3NwYW4+IHRvIHZlcmlmeSBpdCdzIHlvdS5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1ldGhvZC50eXBlID09PSAnZW1haWwnXCI+XG4gICAgQSBlbWFpbCB3aXRoIGEgdmVyaWZpY2F0aW9uIGNvZGUgd2FzIGp1c3Qgc2VudCB0byB7eyBtZXRob2QuZW1haWwgfX0gdG8gdmVyaWZ5IGl0J3MgeW91LlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmFsc2VcIj5cbiAgICBFbnRlciB0aGUgb25lIHRpbWUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlIGFwcCBhZG1pbmlzdHJhdG9yIHRvIHZlcmlmeSBpdCdzIHlvdS5cbiAgPC9uZy1jb250YWluZXI+XG48L3A+XG5cbjxtYXQtZm9ybS1maWVsZD5cbiAgPG1hdC1sYWJlbD5Db2RlPC9tYXQtbGFiZWw+XG4gIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgbmFtZT1cImNvZGVcIlxuICAgICAgICAgYXV0b2NvbXBsZXRlPVwib25lLXRpbWUtY29kZVwiXG4gICAgICAgICBbKG5nTW9kZWwpXT1cImNvZGVcIlxuICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY29kZUNoYW5nZWQoKVwiXG4gICAgICAgICByZXF1aXJlZFxuICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciB0aGUgY29kZVwiXG4gICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCI+XG48L21hdC1mb3JtLWZpZWxkPlxuIl19
@@ -1,38 +1,41 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Output, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, Inject, } from '@angular/core';
2
+ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
2
3
  import { map, shareReplay, tap } from 'rxjs/operators';
3
4
  import { FS_2FA_VERIFICATION_PROVIDER } from '../../tokens/verification.token';
4
5
  import { FsVerificationMethodType } from '../../enums/verification-method-type.enum';
5
6
  import * as i0 from "@angular/core";
6
- import * as i1 from "@firestitch/radiogroup";
7
- import * as i2 from "@angular/material/icon";
8
- import * as i3 from "@angular/material/radio";
9
- import * as i4 from "@angular/material/button";
10
- import * as i5 from "@angular/forms";
11
- import * as i6 from "@firestitch/form";
12
- import * as i7 from "@firestitch/skeleton";
13
- import * as i8 from "@angular/common";
7
+ import * as i1 from "@angular/material/dialog";
8
+ import * as i2 from "@firestitch/dialog";
9
+ import * as i3 from "@firestitch/radiogroup";
10
+ import * as i4 from "@angular/material/icon";
11
+ import * as i5 from "@angular/material/radio";
12
+ import * as i6 from "@angular/material/button";
13
+ import * as i7 from "@angular/forms";
14
+ import * as i8 from "@firestitch/form";
15
+ import * as i9 from "@firestitch/skeleton";
16
+ import * as i10 from "@angular/common";
14
17
  export class Fs2FaVerificationMethodsComponent {
15
- constructor(_verificationProvider) {
18
+ constructor(_verificationProvider, _dialogData, _dialogRef) {
16
19
  this._verificationProvider = _verificationProvider;
17
- this.methodChange = new EventEmitter();
18
- this.cancelled = new EventEmitter();
20
+ this._dialogData = _dialogData;
21
+ this._dialogRef = _dialogRef;
19
22
  this.verificationMethodType = FsVerificationMethodType;
20
23
  this.setVerificationMethod = () => {
21
24
  return this._verificationProvider
22
25
  .updateVerificationMethod(this.method.id)
23
26
  .pipe(tap((method) => {
24
- this.methodChange.emit(method);
27
+ this._dialogRef.close(method);
25
28
  }));
26
29
  };
30
+ this._setActiveMethod();
27
31
  this._initMethods();
28
32
  }
29
- ngOnInit() {
30
- }
31
33
  compareWith(o1, o2) {
32
34
  return o1 && o2 && o1.id === o2.id;
33
35
  }
34
- cancel() {
35
- this.cancelled.emit();
36
+ _setActiveMethod() {
37
+ var _a;
38
+ this.method = (_a = this._dialogData) === null || _a === void 0 ? void 0 : _a.method;
36
39
  }
37
40
  _initMethods() {
38
41
  this.methods$ = this._verificationProvider
@@ -49,12 +52,11 @@ export class Fs2FaVerificationMethodsComponent {
49
52
  }), shareReplay(1));
50
53
  }
51
54
  }
52
- Fs2FaVerificationMethodsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FaVerificationMethodsComponent, deps: [{ token: FS_2FA_VERIFICATION_PROVIDER }], target: i0.ɵɵFactoryTarget.Component });
53
- Fs2FaVerificationMethodsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2FaVerificationMethodsComponent, selector: "fs-2fa-verification-methods", inputs: { method: "method" }, outputs: { methodChange: "methodChange", cancelled: "cancelled" }, ngImport: i0, template: "<h2>\n Verification Methods\n</h2>\n<form fsForm [submit]=\"setVerificationMethod\">\n <ng-container *fsSkeleton=\"methods$ | async as methods\">\n <fs-radio-group [(ngModel)]=\"method\" name=\"method\" [compareWith]=\"compareWith\">\n <ng-container *ngFor=\"let methodMap of methods | keyvalue\">\n <div class=\"method\">\n <ng-container [ngSwitch]=\"methodMap.key\">\n <ng-container *ngSwitchCase=\"verificationMethodType.Sms\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n smartphone\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Text Message</div>\n <div class=\"method-subtitle\">\n Verification code send to one of following mobile number\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"verificationMethodType.Email\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n mail\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Email</div>\n <div class=\"method-subtitle\">\n Verification code send to one of following email\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container [ngSwitch]=\"methodMap.key\">\n <ng-container *ngSwitchCase=\"verificationMethodType.Sms\">\n <mat-radio-button class=\"method-item\" *ngFor=\"let method of methodMap.value\" [value]=\"method\">\n + {{ method.phoneCode }} {{ method.phoneNumber }}\n </mat-radio-button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"verificationMethodType.Email\">\n <mat-radio-button class=\"method-item\" *ngFor=\"let method of methodMap.value\" [value]=\"method\">\n {{ method.email }}\n </mat-radio-button>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </fs-radio-group>\n </ng-container>\n\n <div class=\"actions\">\n <ng-container *ngIf=\"methods$ | async\">\n <button mat-button type=\"submit\" color=\"primary\">Next</button>\n </ng-container>\n <button mat-button type=\"button\" (click)=\"cancel()\">Cancel</button>\n </div>\n</form>\n", styles: [".method{display:block;margin-bottom:20px}.method .method-header{display:flex;align-items:flex-start}.method .method-header .method-name{margin-left:10px}.method .method-header .method-name .method-title{font-size:14px;font-weight:400}.method .method-header .method-name .method-subtitle{font-size:12px;color:#a3a3a3}.method .method-item{display:block;margin:10px 0 0 35px}\n"], components: [{ type: i1.FsRadioGroupComponent, selector: "fs-radio-group", inputs: ["orientation", "radioPosition", "compareWith", "required", "disabled", "label", "name"] }, { type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "successDelay", "errorDelay", "submit", "tabGroup"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"] }, { type: i7.ɵa, selector: "[fsSkeleton]", inputs: ["fsSkeletonPattern", "fsSkeleton"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i8.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.ɵw, selector: "button[type=\"submit\"]", inputs: ["dirtySubmit", "name"] }], pipes: { "async": i8.AsyncPipe, "keyvalue": i8.KeyValuePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
55
+ Fs2FaVerificationMethodsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FaVerificationMethodsComponent, deps: [{ token: FS_2FA_VERIFICATION_PROVIDER }, { token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
56
+ Fs2FaVerificationMethodsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2FaVerificationMethodsComponent, selector: "ng-component", ngImport: i0, template: "<fs-dialog>\n <h1 mat-dialog-title>\n Verification Methods\n </h1>\n <form fsForm [submit]=\"setVerificationMethod\" [dirtySubmitButton]=\"false\">\n <mat-dialog-content>\n <ng-container *fsSkeleton=\"methods$ | async as methods\">\n <fs-radio-group [(ngModel)]=\"method\" name=\"method\" [compareWith]=\"compareWith\">\n <ng-container *ngFor=\"let methodMap of methods | keyvalue\">\n <div class=\"method\">\n <ng-container [ngSwitch]=\"methodMap.key\">\n <ng-container *ngSwitchCase=\"verificationMethodType.Sms\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n smartphone\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Text Message</div>\n <div class=\"method-subtitle\">\n Verification code send to one of following mobile number\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"verificationMethodType.Email\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n mail\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Email</div>\n <div class=\"method-subtitle\">\n Verification code send to one of following email\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container [ngSwitch]=\"methodMap.key\">\n <ng-container *ngSwitchCase=\"verificationMethodType.Sms\">\n <mat-radio-button class=\"method-item\" *ngFor=\"let method of methodMap.value\" [value]=\"method\">\n {{ method.phoneNumber }}\n </mat-radio-button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"verificationMethodType.Email\">\n <mat-radio-button class=\"method-item\" *ngFor=\"let method of methodMap.value\" [value]=\"method\">\n {{ method.email }}\n </mat-radio-button>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </fs-radio-group>\n </ng-container>\n </mat-dialog-content>\n <mat-dialog-actions>\n <div class=\"actions\">\n <ng-container *ngIf=\"methods$ | async\">\n <button mat-button type=\"submit\" color=\"primary\">Next</button>\n </ng-container>\n <button mat-button type=\"button\" [mat-dialog-close]=\"null\">Cancel</button>\n </div>\n </mat-dialog-actions>\n </form>\n</fs-dialog>\n", styles: [".method{display:block;margin-bottom:20px}.method .method-header{display:flex;align-items:flex-start}.method .method-header .method-name{margin-left:10px}.method .method-header .method-name .method-title{font-size:14px;font-weight:400}.method .method-header .method-name .method-subtitle{font-size:12px;color:#a3a3a3}.method .method-item{display:block;margin:10px 0 0 35px}\n"], components: [{ type: i2.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i3.FsRadioGroupComponent, selector: "fs-radio-group", inputs: ["orientation", "radioPosition", "compareWith", "required", "disabled", "label", "name"] }, { type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i8.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "successDelay", "errorDelay", "submit", "tabGroup"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i9.ɵa, selector: "[fsSkeleton]", inputs: ["fsSkeletonPattern", "fsSkeleton"] }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.ɵw, selector: "button[type=\"submit\"]", inputs: ["dirtySubmit", "name"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "async": i10.AsyncPipe, "keyvalue": i10.KeyValuePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
54
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FaVerificationMethodsComponent, decorators: [{
55
58
  type: Component,
56
59
  args: [{
57
- selector: 'fs-2fa-verification-methods',
58
60
  templateUrl: './2fa-verification-methods.component.html',
59
61
  styleUrls: [
60
62
  './2fa-verification-methods.component.scss',
@@ -64,11 +66,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
64
66
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
65
67
  type: Inject,
66
68
  args: [FS_2FA_VERIFICATION_PROVIDER]
67
- }] }]; }, propDecorators: { method: [{
68
- type: Input
69
- }], methodChange: [{
70
- type: Output
71
- }], cancelled: [{
72
- type: Output
73
- }] } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMmZhLXZlcmlmaWNhdGlvbi1tZXRob2RzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLW1ldGhvZHMvMmZhLXZlcmlmaWNhdGlvbi1tZXRob2RzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLW1ldGhvZHMvMmZhLXZlcmlmaWNhdGlvbi1tZXRob2RzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7Ozs7OztBQWFyRixNQUFNLE9BQU8saUNBQWlDO0lBZ0I1QyxZQUVVLHFCQUE4QztRQUE5QywwQkFBcUIsR0FBckIscUJBQXFCLENBQXlCO1FBWmpELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFHekQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFLNUIsMkJBQXNCLEdBQUcsd0JBQXdCLENBQUM7UUFvQjNELDBCQUFxQixHQUFHLEdBQUcsRUFBRTtZQUNsQyxPQUFPLElBQUksQ0FBQyxxQkFBcUI7aUJBQzlCLHdCQUF3QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2lCQUN4QyxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsTUFBNkIsRUFBRSxFQUFFO2dCQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ04sQ0FBQyxDQUFDO1FBdEJBLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0sUUFBUTtJQUNmLENBQUM7SUFFTSxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUU7UUFDdkIsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQTtJQUNwQyxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQVlPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMscUJBQXFCO2FBQ3ZDLE9BQU8sRUFBRTthQUNULElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNkLE9BQU8sT0FBTztpQkFDWCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNyQixHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztpQkFDdkI7Z0JBRUQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBRTlCLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFDTixDQUFDOzsrSEE5RFUsaUNBQWlDLGtCQWlCbEMsNEJBQTRCO21IQWpCM0IsaUNBQWlDLG9LQzNCOUMsdW9GQW1FQTs0RkR4Q2EsaUNBQWlDO2tCQVI3QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLFdBQVcsRUFBRSwyQ0FBMkM7b0JBQ3hELFNBQVMsRUFBRTt3QkFDVCwyQ0FBMkM7cUJBQzVDO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDs7MEJBa0JJLE1BQU07MkJBQUMsNEJBQTRCOzRDQWQvQixNQUFNO3NCQURaLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsTUFBTTtnQkFJQSxTQUFTO3NCQURmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzaGFyZVJlcGxheSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGU18yRkFfVkVSSUZJQ0FUSU9OX1BST1ZJREVSIH0gZnJvbSAnLi4vLi4vdG9rZW5zL3ZlcmlmaWNhdGlvbi50b2tlbic7XG5pbXBvcnQgeyBGc1ZlcmlmaWNhdGlvbk1ldGhvZFR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy92ZXJpZmljYXRpb24tbWV0aG9kLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBJRnNWZXJpZmljYXRpb25Qcm92aWRlciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdmVyaWZpY2F0aW9uLXByb3ZpZGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRnNWZXJpZmljYXRpb25NZXRob2QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3ZlcmlmaWNhdGlvbi1tZXRob2QuaW50ZXJmYWNlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy0yZmEtdmVyaWZpY2F0aW9uLW1ldGhvZHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vMmZhLXZlcmlmaWNhdGlvbi1tZXRob2RzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXG4gICAgJy4vMmZhLXZlcmlmaWNhdGlvbi1tZXRob2RzLmNvbXBvbmVudC5zY3NzJyxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZzMkZhVmVyaWZpY2F0aW9uTWV0aG9kc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG1ldGhvZDogSUZzVmVyaWZpY2F0aW9uTWV0aG9kO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgbWV0aG9kQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJRnNWZXJpZmljYXRpb25NZXRob2Q+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjYW5jZWxsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHVibGljIHBob25lOiBzdHJpbmc7XG4gIHB1YmxpYyBjb2RlOiBzdHJpbmc7XG4gIHB1YmxpYyBtZXRob2RzJDogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBJRnNWZXJpZmljYXRpb25NZXRob2RbXT4+O1xuICBwdWJsaWMgcmVhZG9ubHkgdmVyaWZpY2F0aW9uTWV0aG9kVHlwZSA9IEZzVmVyaWZpY2F0aW9uTWV0aG9kVHlwZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEZTXzJGQV9WRVJJRklDQVRJT05fUFJPVklERVIpXG4gICAgcHJpdmF0ZSBfdmVyaWZpY2F0aW9uUHJvdmlkZXI6IElGc1ZlcmlmaWNhdGlvblByb3ZpZGVyLFxuICApIHtcbiAgICB0aGlzLl9pbml0TWV0aG9kcygpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgcHVibGljIGNvbXBhcmVXaXRoKG8xLCBvMikge1xuICAgIHJldHVybiBvMSAmJiBvMiAmJiBvMS5pZCA9PT0gbzIuaWRcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5jZWxsZWQuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIHNldFZlcmlmaWNhdGlvbk1ldGhvZCA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5fdmVyaWZpY2F0aW9uUHJvdmlkZXJcbiAgICAgIC51cGRhdGVWZXJpZmljYXRpb25NZXRob2QodGhpcy5tZXRob2QuaWQpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChtZXRob2Q6IElGc1ZlcmlmaWNhdGlvbk1ldGhvZCkgPT4ge1xuICAgICAgICAgIHRoaXMubWV0aG9kQ2hhbmdlLmVtaXQobWV0aG9kKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfaW5pdE1ldGhvZHMoKTogdm9pZCB7XG4gICAgdGhpcy5tZXRob2RzJCA9IHRoaXMuX3ZlcmlmaWNhdGlvblByb3ZpZGVyXG4gICAgICAubWV0aG9kcygpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChtZXRob2RzKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG1ldGhvZHNcbiAgICAgICAgICAgIC5yZWR1Y2UoKGFjYywgbWV0aG9kKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghYWNjW21ldGhvZC50eXBlXSkge1xuICAgICAgICAgICAgICAgIGFjY1ttZXRob2QudHlwZV0gPSBbXTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGFjY1ttZXRob2QudHlwZV0ucHVzaChtZXRob2QpO1xuXG4gICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCB7fSk7XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICAgICk7XG4gIH1cbn1cbiIsIjxoMj5cbiAgVmVyaWZpY2F0aW9uIE1ldGhvZHNcbjwvaDI+XG48Zm9ybSBmc0Zvcm0gW3N1Ym1pdF09XCJzZXRWZXJpZmljYXRpb25NZXRob2RcIj5cbiAgPG5nLWNvbnRhaW5lciAqZnNTa2VsZXRvbj1cIm1ldGhvZHMkIHwgYXN5bmMgYXMgbWV0aG9kc1wiPlxuICAgIDxmcy1yYWRpby1ncm91cCBbKG5nTW9kZWwpXT1cIm1ldGhvZFwiIG5hbWU9XCJtZXRob2RcIiBbY29tcGFyZVdpdGhdPVwiY29tcGFyZVdpdGhcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1ldGhvZE1hcCBvZiBtZXRob2RzIHwga2V5dmFsdWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1ldGhvZFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIm1ldGhvZE1hcC5rZXlcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInZlcmlmaWNhdGlvbk1ldGhvZFR5cGUuU21zXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRob2QtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldGhvZC1pY29uXCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIHNtYXJ0cGhvbmVcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldGhvZC1uYW1lXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0aG9kLXRpdGxlXCI+VGV4dCBNZXNzYWdlPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0aG9kLXN1YnRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIFZlcmlmaWNhdGlvbiBjb2RlIHNlbmQgdG8gb25lIG9mIGZvbGxvd2luZyBtb2JpbGUgbnVtYmVyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwidmVyaWZpY2F0aW9uTWV0aG9kVHlwZS5FbWFpbFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0aG9kLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRob2QtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICBtYWlsXG4gICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRob2QtbmFtZVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldGhvZC10aXRsZVwiPkVtYWlsPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0aG9kLXN1YnRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIFZlcmlmaWNhdGlvbiBjb2RlIHNlbmQgdG8gb25lIG9mIGZvbGxvd2luZyBlbWFpbFxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJtZXRob2RNYXAua2V5XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJ2ZXJpZmljYXRpb25NZXRob2RUeXBlLlNtc1wiPlxuICAgICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cIm1ldGhvZC1pdGVtXCIgKm5nRm9yPVwibGV0IG1ldGhvZCBvZiBtZXRob2RNYXAudmFsdWVcIiBbdmFsdWVdPVwibWV0aG9kXCI+XG4gICAgICAgICAgICAgICAgKyB7eyBtZXRob2QucGhvbmVDb2RlIH19IHt7IG1ldGhvZC5waG9uZU51bWJlciB9fVxuICAgICAgICAgICAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwidmVyaWZpY2F0aW9uTWV0aG9kVHlwZS5FbWFpbFwiPlxuICAgICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cIm1ldGhvZC1pdGVtXCIgKm5nRm9yPVwibGV0IG1ldGhvZCBvZiBtZXRob2RNYXAudmFsdWVcIiBbdmFsdWVdPVwibWV0aG9kXCI+XG4gICAgICAgICAgICAgICAge3sgbWV0aG9kLmVtYWlsIH19XG4gICAgICAgICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZnMtcmFkaW8tZ3JvdXA+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1ldGhvZHMkIHwgYXN5bmNcIj5cbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY29sb3I9XCJwcmltYXJ5XCI+TmV4dDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+Q2FuY2VsPC9idXR0b24+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
69
+ }] }, { type: undefined, decorators: [{
70
+ type: Inject,
71
+ args: [MAT_DIALOG_DATA]
72
+ }] }, { type: i1.MatDialogRef }]; } });
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMmZhLXZlcmlmaWNhdGlvbi1tZXRob2RzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLW1ldGhvZHMvMmZhLXZlcmlmaWNhdGlvbi1tZXRob2RzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLW1ldGhvZHMvMmZhLXZlcmlmaWNhdGlvbi1tZXRob2RzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3pFLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFZckYsTUFBTSxPQUFPLGlDQUFpQztJQVE1QyxZQUVVLHFCQUE4QyxFQUU5QyxXQUFnQixFQUNoQixVQUEyRDtRQUgzRCwwQkFBcUIsR0FBckIscUJBQXFCLENBQXlCO1FBRTlDLGdCQUFXLEdBQVgsV0FBVyxDQUFLO1FBQ2hCLGVBQVUsR0FBVixVQUFVLENBQWlEO1FBUHJELDJCQUFzQixHQUFHLHdCQUF3QixDQUFDO1FBaUIzRCwwQkFBcUIsR0FBRyxHQUFHLEVBQUU7WUFDbEMsT0FBTyxJQUFJLENBQUMscUJBQXFCO2lCQUM5Qix3QkFBd0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztpQkFDeEMsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLE1BQTZCLEVBQUUsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNOLENBQUMsQ0FBQztRQWhCQSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVNLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRTtRQUN2QixPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFBO0lBQ3BDLENBQUM7SUFZTyxnQkFBZ0I7O1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBQSxJQUFJLENBQUMsV0FBVywwQ0FBRSxNQUFNLENBQUM7SUFDekMsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMscUJBQXFCO2FBQ3ZDLE9BQU8sRUFBRTthQUNULElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNkLE9BQU8sT0FBTztpQkFDWCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNyQixHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztpQkFDdkI7Z0JBRUQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBRTlCLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFDTixDQUFDOzsrSEF2RFUsaUNBQWlDLGtCQVNsQyw0QkFBNEIsYUFFNUIsZUFBZTttSEFYZCxpQ0FBaUMsb0RDeEI5Qyx5aEdBd0VBOzRGRGhEYSxpQ0FBaUM7a0JBUDdDLFNBQVM7bUJBQUM7b0JBQ1QsV0FBVyxFQUFFLDJDQUEyQztvQkFDeEQsU0FBUyxFQUFFO3dCQUNULDJDQUEyQztxQkFDNUM7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzswQkFVSSxNQUFNOzJCQUFDLDRCQUE0Qjs7MEJBRW5DLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzaGFyZVJlcGxheSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGU18yRkFfVkVSSUZJQ0FUSU9OX1BST1ZJREVSIH0gZnJvbSAnLi4vLi4vdG9rZW5zL3ZlcmlmaWNhdGlvbi50b2tlbic7XG5pbXBvcnQgeyBGc1ZlcmlmaWNhdGlvbk1ldGhvZFR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy92ZXJpZmljYXRpb24tbWV0aG9kLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBJRnNWZXJpZmljYXRpb25Qcm92aWRlciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdmVyaWZpY2F0aW9uLXByb3ZpZGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRnNWZXJpZmljYXRpb25NZXRob2QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3ZlcmlmaWNhdGlvbi1tZXRob2QuaW50ZXJmYWNlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuLzJmYS12ZXJpZmljYXRpb24tbWV0aG9kcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW1xuICAgICcuLzJmYS12ZXJpZmljYXRpb24tbWV0aG9kcy5jb21wb25lbnQuc2NzcycsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGczJGYVZlcmlmaWNhdGlvbk1ldGhvZHNDb21wb25lbnQge1xuXG4gIHB1YmxpYyBtZXRob2Q6IElGc1ZlcmlmaWNhdGlvbk1ldGhvZDtcbiAgcHVibGljIHBob25lOiBzdHJpbmc7XG4gIHB1YmxpYyBjb2RlOiBzdHJpbmc7XG4gIHB1YmxpYyBtZXRob2RzJDogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBJRnNWZXJpZmljYXRpb25NZXRob2RbXT4+O1xuICBwdWJsaWMgcmVhZG9ubHkgdmVyaWZpY2F0aW9uTWV0aG9kVHlwZSA9IEZzVmVyaWZpY2F0aW9uTWV0aG9kVHlwZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEZTXzJGQV9WRVJJRklDQVRJT05fUFJPVklERVIpXG4gICAgcHJpdmF0ZSBfdmVyaWZpY2F0aW9uUHJvdmlkZXI6IElGc1ZlcmlmaWNhdGlvblByb3ZpZGVyLFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKVxuICAgIHByaXZhdGUgX2RpYWxvZ0RhdGE6IGFueSxcbiAgICBwcml2YXRlIF9kaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxGczJGYVZlcmlmaWNhdGlvbk1ldGhvZHNDb21wb25lbnQ+LFxuICApIHtcbiAgICB0aGlzLl9zZXRBY3RpdmVNZXRob2QoKTtcbiAgICB0aGlzLl9pbml0TWV0aG9kcygpO1xuICB9XG5cbiAgcHVibGljIGNvbXBhcmVXaXRoKG8xLCBvMikge1xuICAgIHJldHVybiBvMSAmJiBvMiAmJiBvMS5pZCA9PT0gbzIuaWRcbiAgfVxuXG4gIHB1YmxpYyBzZXRWZXJpZmljYXRpb25NZXRob2QgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuX3ZlcmlmaWNhdGlvblByb3ZpZGVyXG4gICAgICAudXBkYXRlVmVyaWZpY2F0aW9uTWV0aG9kKHRoaXMubWV0aG9kLmlkKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgobWV0aG9kOiBJRnNWZXJpZmljYXRpb25NZXRob2QpID0+IHtcbiAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYuY2xvc2UobWV0aG9kKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfc2V0QWN0aXZlTWV0aG9kKCk6IHZvaWQge1xuICAgIHRoaXMubWV0aG9kID0gdGhpcy5fZGlhbG9nRGF0YT8ubWV0aG9kO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdE1ldGhvZHMoKTogdm9pZCB7XG4gICAgdGhpcy5tZXRob2RzJCA9IHRoaXMuX3ZlcmlmaWNhdGlvblByb3ZpZGVyXG4gICAgICAubWV0aG9kcygpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChtZXRob2RzKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG1ldGhvZHNcbiAgICAgICAgICAgIC5yZWR1Y2UoKGFjYywgbWV0aG9kKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghYWNjW21ldGhvZC50eXBlXSkge1xuICAgICAgICAgICAgICAgIGFjY1ttZXRob2QudHlwZV0gPSBbXTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGFjY1ttZXRob2QudHlwZV0ucHVzaChtZXRob2QpO1xuXG4gICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCB7fSk7XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICAgICk7XG4gIH1cbn1cbiIsIjxmcy1kaWFsb2c+XG4gIDxoMSBtYXQtZGlhbG9nLXRpdGxlPlxuICAgIFZlcmlmaWNhdGlvbiBNZXRob2RzXG4gIDwvaDE+XG4gIDxmb3JtIGZzRm9ybSBbc3VibWl0XT1cInNldFZlcmlmaWNhdGlvbk1ldGhvZFwiIFtkaXJ0eVN1Ym1pdEJ1dHRvbl09XCJmYWxzZVwiPlxuICAgIDxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICAgICA8bmctY29udGFpbmVyICpmc1NrZWxldG9uPVwibWV0aG9kcyQgfCBhc3luYyBhcyBtZXRob2RzXCI+XG4gICAgICAgIDxmcy1yYWRpby1ncm91cCBbKG5nTW9kZWwpXT1cIm1ldGhvZFwiIG5hbWU9XCJtZXRob2RcIiBbY29tcGFyZVdpdGhdPVwiY29tcGFyZVdpdGhcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZXRob2RNYXAgb2YgbWV0aG9kcyB8IGtleXZhbHVlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0aG9kXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIm1ldGhvZE1hcC5rZXlcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJ2ZXJpZmljYXRpb25NZXRob2RUeXBlLlNtc1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldGhvZC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldGhvZC1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgc21hcnRwaG9uZVxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0aG9kLW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0aG9kLXRpdGxlXCI+VGV4dCBNZXNzYWdlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldGhvZC1zdWJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgVmVyaWZpY2F0aW9uIGNvZGUgc2VuZCB0byBvbmUgb2YgZm9sbG93aW5nIG1vYmlsZSBudW1iZXJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInZlcmlmaWNhdGlvbk1ldGhvZFR5cGUuRW1haWxcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRob2QtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRob2QtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1haWxcbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldGhvZC1uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldGhvZC10aXRsZVwiPkVtYWlsPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldGhvZC1zdWJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgVmVyaWZpY2F0aW9uIGNvZGUgc2VuZCB0byBvbmUgb2YgZm9sbG93aW5nIGVtYWlsXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIm1ldGhvZE1hcC5rZXlcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJ2ZXJpZmljYXRpb25NZXRob2RUeXBlLlNtc1wiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gY2xhc3M9XCJtZXRob2QtaXRlbVwiICpuZ0Zvcj1cImxldCBtZXRob2Qgb2YgbWV0aG9kTWFwLnZhbHVlXCIgW3ZhbHVlXT1cIm1ldGhvZFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBtZXRob2QucGhvbmVOdW1iZXIgfX1cbiAgICAgICAgICAgICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInZlcmlmaWNhdGlvbk1ldGhvZFR5cGUuRW1haWxcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIGNsYXNzPVwibWV0aG9kLWl0ZW1cIiAqbmdGb3I9XCJsZXQgbWV0aG9kIG9mIG1ldGhvZE1hcC52YWx1ZVwiIFt2YWx1ZV09XCJtZXRob2RcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgbWV0aG9kLmVtYWlsIH19XG4gICAgICAgICAgICAgICAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZnMtcmFkaW8tZ3JvdXA+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L21hdC1kaWFsb2ctY29udGVudD5cbiAgICA8bWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1ldGhvZHMkIHwgYXN5bmNcIj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cInN1Ym1pdFwiIGNvbG9yPVwicHJpbWFyeVwiPk5leHQ8L2J1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW21hdC1kaWFsb2ctY2xvc2VdPVwibnVsbFwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4gIDwvZm9ybT5cbjwvZnMtZGlhbG9nPlxuIl19
@@ -11,18 +11,17 @@ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
11
11
  import { FsFormModule } from '@firestitch/form';
12
12
  import { FsSkeletonModule } from '@firestitch/skeleton';
13
13
  import { FsRadioGroupModule } from '@firestitch/radiogroup';
14
+ import { FsDialogModule } from '@firestitch/dialog';
14
15
  // import { CodeInputModule } from 'angular-code-input';
15
16
  import { Fs2FAVerificationComponent } from './components/2fa-verification/2fa-verification.component';
16
17
  import { Fs2FAVerificationSMSComponent } from './components/2fa-verification-code/2fa-verification-code.component';
17
18
  import { Fs2FAVerificationOTPComponent } from './components/2fa-verification-otp/2fa-verification-otp.component';
18
- import { Fs2FAVerificationFormComponent } from './components/2fa-verification-form/2fa-verification-form.component';
19
19
  import { Fs2FaVerificationMethodsComponent } from './components/2fa-verification-methods/2fa-verification-methods.component';
20
20
  import * as i0 from "@angular/core";
21
21
  export class Fs2FaModule {
22
22
  }
23
23
  Fs2FaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
24
24
  Fs2FaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FaModule, declarations: [Fs2FAVerificationComponent,
25
- Fs2FAVerificationFormComponent,
26
25
  Fs2FAVerificationSMSComponent,
27
26
  Fs2FAVerificationOTPComponent,
28
27
  Fs2FaVerificationMethodsComponent], imports: [CommonModule,
@@ -31,14 +30,15 @@ Fs2FaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "1
31
30
  MatInputModule,
32
31
  MatButtonModule,
33
32
  FsFormModule,
33
+ FsRadioGroupModule,
34
+ FsDialogModule,
34
35
  // CodeInputModule,
35
36
  MatCheckboxModule,
36
37
  MatProgressSpinnerModule,
37
38
  FsSkeletonModule,
38
39
  FsSkeletonModule,
39
40
  MatIconModule,
40
- MatRadioModule,
41
- FsRadioGroupModule], exports: [Fs2FAVerificationComponent] });
41
+ MatRadioModule], exports: [Fs2FAVerificationComponent] });
42
42
  Fs2FaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FaModule, providers: [], imports: [[
43
43
  CommonModule,
44
44
  FormsModule,
@@ -46,6 +46,8 @@ Fs2FaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "1
46
46
  MatInputModule,
47
47
  MatButtonModule,
48
48
  FsFormModule,
49
+ FsRadioGroupModule,
50
+ FsDialogModule,
49
51
  // CodeInputModule,
50
52
  MatCheckboxModule,
51
53
  MatProgressSpinnerModule,
@@ -53,7 +55,6 @@ Fs2FaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "1
53
55
  FsSkeletonModule,
54
56
  MatIconModule,
55
57
  MatRadioModule,
56
- FsRadioGroupModule,
57
58
  ]] });
58
59
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FaModule, decorators: [{
59
60
  type: NgModule,
@@ -65,6 +66,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
65
66
  MatInputModule,
66
67
  MatButtonModule,
67
68
  FsFormModule,
69
+ FsRadioGroupModule,
70
+ FsDialogModule,
68
71
  // CodeInputModule,
69
72
  MatCheckboxModule,
70
73
  MatProgressSpinnerModule,
@@ -72,11 +75,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
72
75
  FsSkeletonModule,
73
76
  MatIconModule,
74
77
  MatRadioModule,
75
- FsRadioGroupModule,
76
78
  ],
77
79
  declarations: [
78
80
  Fs2FAVerificationComponent,
79
- Fs2FAVerificationFormComponent,
80
81
  Fs2FAVerificationSMSComponent,
81
82
  Fs2FAVerificationOTPComponent,
82
83
  Fs2FaVerificationMethodsComponent,
@@ -87,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
87
88
  providers: [],
88
89
  }]
89
90
  }] });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtMmZhLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvZnMtMmZhLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RCx3REFBd0Q7QUFFeEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDdEcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDbkgsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDakgsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDcEgsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sMEVBQTBFLENBQUM7O0FBb0M3SCxNQUFNLE9BQU8sV0FBVzs7eUdBQVgsV0FBVzswR0FBWCxXQUFXLGlCQVpwQiwwQkFBMEI7UUFFMUIsOEJBQThCO1FBQzlCLDZCQUE2QjtRQUM3Qiw2QkFBNkI7UUFDN0IsaUNBQWlDLGFBeEJqQyxZQUFZO1FBQ1osV0FBVztRQUVYLGtCQUFrQjtRQUNsQixjQUFjO1FBQ2QsZUFBZTtRQUVmLFlBQVk7UUFFWixtQkFBbUI7UUFDbkIsaUJBQWlCO1FBQ2pCLHdCQUF3QjtRQUN4QixnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLGFBQWE7UUFDYixjQUFjO1FBQ2Qsa0JBQWtCLGFBV2xCLDBCQUEwQjswR0FJakIsV0FBVyxhQUZYLEVBQUUsWUE5Qko7WUFDUCxZQUFZO1lBQ1osV0FBVztZQUVYLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsZUFBZTtZQUVmLFlBQVk7WUFFWixtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLHdCQUF3QjtZQUN4QixnQkFBZ0I7WUFDaEIsZ0JBQWdCO1lBQ2hCLGFBQWE7WUFDYixjQUFjO1lBQ2Qsa0JBQWtCO1NBQ25COzRGQWNVLFdBQVc7a0JBakN2QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBRVgsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLGVBQWU7d0JBRWYsWUFBWTt3QkFFWixtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsd0JBQXdCO3dCQUN4QixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGtCQUFrQjtxQkFDbkI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLDBCQUEwQjt3QkFFMUIsOEJBQThCO3dCQUM5Qiw2QkFBNkI7d0JBQzdCLDZCQUE2Qjt3QkFDN0IsaUNBQWlDO3FCQUNsQztvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsMEJBQTBCO3FCQUMzQjtvQkFDRCxTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdFJhZGlvTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuXG5pbXBvcnQgeyBGc0Zvcm1Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9mb3JtJztcbmltcG9ydCB7IEZzU2tlbGV0b25Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9za2VsZXRvbic7XG5pbXBvcnQgeyBGc1JhZGlvR3JvdXBNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9yYWRpb2dyb3VwJztcblxuLy8gaW1wb3J0IHsgQ29kZUlucHV0TW9kdWxlIH0gZnJvbSAnYW5ndWxhci1jb2RlLWlucHV0JztcblxuaW1wb3J0IHsgRnMyRkFWZXJpZmljYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvMmZhLXZlcmlmaWNhdGlvbi8yZmEtdmVyaWZpY2F0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGczJGQVZlcmlmaWNhdGlvblNNU0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLWNvZGUvMmZhLXZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGczJGQVZlcmlmaWNhdGlvbk9UUENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLW90cC8yZmEtdmVyaWZpY2F0aW9uLW90cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRnMyRkFWZXJpZmljYXRpb25Gb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzLzJmYS12ZXJpZmljYXRpb24tZm9ybS8yZmEtdmVyaWZpY2F0aW9uLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IEZzMkZhVmVyaWZpY2F0aW9uTWV0aG9kc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLW1ldGhvZHMvMmZhLXZlcmlmaWNhdGlvbi1tZXRob2RzLmNvbXBvbmVudCc7XG5cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcblxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG5cbiAgICBGc0Zvcm1Nb2R1bGUsXG5cbiAgICAvLyBDb2RlSW5wdXRNb2R1bGUsXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgIEZzU2tlbGV0b25Nb2R1bGUsXG4gICAgRnNTa2VsZXRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFJhZGlvTW9kdWxlLFxuICAgIEZzUmFkaW9Hcm91cE1vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRnMyRkFWZXJpZmljYXRpb25Db21wb25lbnQsXG5cbiAgICBGczJGQVZlcmlmaWNhdGlvbkZvcm1Db21wb25lbnQsXG4gICAgRnMyRkFWZXJpZmljYXRpb25TTVNDb21wb25lbnQsXG4gICAgRnMyRkFWZXJpZmljYXRpb25PVFBDb21wb25lbnQsXG4gICAgRnMyRmFWZXJpZmljYXRpb25NZXRob2RzQ29tcG9uZW50LFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRnMyRkFWZXJpZmljYXRpb25Db21wb25lbnQsXG4gIF0sXG4gIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEZzMkZhTW9kdWxlIHt9XG4iXX0=
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtMmZhLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvZnMtMmZhLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsd0RBQXdEO0FBRXhELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQ25ILE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLDBFQUEwRSxDQUFDOztBQW9DN0gsTUFBTSxPQUFPLFdBQVc7O3lHQUFYLFdBQVc7MEdBQVgsV0FBVyxpQkFYcEIsMEJBQTBCO1FBRTFCLDZCQUE2QjtRQUM3Qiw2QkFBNkI7UUFDN0IsaUNBQWlDLGFBeEJqQyxZQUFZO1FBQ1osV0FBVztRQUVYLGtCQUFrQjtRQUNsQixjQUFjO1FBQ2QsZUFBZTtRQUVmLFlBQVk7UUFDWixrQkFBa0I7UUFDbEIsY0FBYztRQUVkLG1CQUFtQjtRQUNuQixpQkFBaUI7UUFDakIsd0JBQXdCO1FBQ3hCLGdCQUFnQjtRQUNoQixnQkFBZ0I7UUFDaEIsYUFBYTtRQUNiLGNBQWMsYUFVZCwwQkFBMEI7MEdBSWpCLFdBQVcsYUFGWCxFQUFFLFlBOUJKO1lBQ1AsWUFBWTtZQUNaLFdBQVc7WUFFWCxrQkFBa0I7WUFDbEIsY0FBYztZQUNkLGVBQWU7WUFFZixZQUFZO1lBQ1osa0JBQWtCO1lBQ2xCLGNBQWM7WUFFZCxtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLHdCQUF3QjtZQUN4QixnQkFBZ0I7WUFDaEIsZ0JBQWdCO1lBQ2hCLGFBQWE7WUFDYixjQUFjO1NBQ2Y7NEZBYVUsV0FBVztrQkFqQ3ZCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFFWCxrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsZUFBZTt3QkFFZixZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFFZCxtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsd0JBQXdCO3dCQUN4QixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixjQUFjO3FCQUNmO29CQUNELFlBQVksRUFBRTt3QkFDWiwwQkFBMEI7d0JBRTFCLDZCQUE2Qjt3QkFDN0IsNkJBQTZCO3dCQUM3QixpQ0FBaUM7cUJBQ2xDO29CQUNELE9BQU8sRUFBRTt3QkFDUCwwQkFBMEI7cUJBQzNCO29CQUNELFNBQVMsRUFBRSxFQUFFO2lCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0UmFkaW9Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9yYWRpbyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5cbmltcG9ydCB7IEZzRm9ybU1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2Zvcm0nO1xuaW1wb3J0IHsgRnNTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL3NrZWxldG9uJztcbmltcG9ydCB7IEZzUmFkaW9Hcm91cE1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL3JhZGlvZ3JvdXAnO1xuaW1wb3J0IHsgRnNEaWFsb2dNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9kaWFsb2cnO1xuXG4vLyBpbXBvcnQgeyBDb2RlSW5wdXRNb2R1bGUgfSBmcm9tICdhbmd1bGFyLWNvZGUtaW5wdXQnO1xuXG5pbXBvcnQgeyBGczJGQVZlcmlmaWNhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLzJmYS12ZXJpZmljYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEZzMkZBVmVyaWZpY2F0aW9uU01TQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzLzJmYS12ZXJpZmljYXRpb24tY29kZS8yZmEtdmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50JztcbmltcG9ydCB7IEZzMkZBVmVyaWZpY2F0aW9uT1RQQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzLzJmYS12ZXJpZmljYXRpb24tb3RwLzJmYS12ZXJpZmljYXRpb24tb3RwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGczJGYVZlcmlmaWNhdGlvbk1ldGhvZHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvMmZhLXZlcmlmaWNhdGlvbi1tZXRob2RzLzJmYS12ZXJpZmljYXRpb24tbWV0aG9kcy5jb21wb25lbnQnO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG5cbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuXG4gICAgRnNGb3JtTW9kdWxlLFxuICAgIEZzUmFkaW9Hcm91cE1vZHVsZSxcbiAgICBGc0RpYWxvZ01vZHVsZSxcblxuICAgIC8vIENvZGVJbnB1dE1vZHVsZSxcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcbiAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgRnNTa2VsZXRvbk1vZHVsZSxcbiAgICBGc1NrZWxldG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0UmFkaW9Nb2R1bGUsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEZzMkZBVmVyaWZpY2F0aW9uQ29tcG9uZW50LFxuXG4gICAgRnMyRkFWZXJpZmljYXRpb25TTVNDb21wb25lbnQsXG4gICAgRnMyRkFWZXJpZmljYXRpb25PVFBDb21wb25lbnQsXG4gICAgRnMyRmFWZXJpZmljYXRpb25NZXRob2RzQ29tcG9uZW50LFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRnMyRkFWZXJpZmljYXRpb25Db21wb25lbnQsXG4gIF0sXG4gIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEZzMkZhTW9kdWxlIHt9XG4iXX0=