@carefirst/library 1.4.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (24) hide show
  1. package/esm2022/lib/components/alert/alert.component.mjs +3 -3
  2. package/esm2022/lib/components/badge/badge.component.mjs +4 -4
  3. package/esm2022/lib/components/button/button.component.mjs +5 -5
  4. package/esm2022/lib/components/calendar/calendar.component.mjs +3 -3
  5. package/esm2022/lib/components/chat-bubble/chat-bubble.component.mjs +3 -3
  6. package/esm2022/lib/components/form-input/form-input.component.mjs +3 -3
  7. package/esm2022/lib/components/form-input-select/form-input-select.component.mjs +3 -3
  8. package/esm2022/lib/components/form-input-text-area/form-input-text-area.component.mjs +3 -3
  9. package/esm2022/lib/components/form-validation/form-validation.component.mjs +4 -4
  10. package/esm2022/lib/components/icon/icon.component.mjs +3 -3
  11. package/esm2022/lib/components/logo/logo.component.mjs +3 -3
  12. package/esm2022/lib/components/notification/notification.component.mjs +3 -3
  13. package/esm2022/lib/components/page/page.component.mjs +3 -3
  14. package/esm2022/lib/components/spacer/spacer.component.mjs +3 -3
  15. package/esm2022/lib/components/spinner/spinner.component.mjs +3 -3
  16. package/esm2022/lib/components/verification-code/verification-code.component.mjs +28 -22
  17. package/esm2022/lib/directives/button-loader.directive.mjs +7 -7
  18. package/esm2022/lib/library.module.mjs +4 -4
  19. package/esm2022/lib/utils/attribute.util.mjs +1 -1
  20. package/esm2022/lib/utils/form-validators-utility.mjs +1 -1
  21. package/fesm2022/carefirst-library.mjs +84 -78
  22. package/fesm2022/carefirst-library.mjs.map +1 -1
  23. package/lib/components/verification-code/verification-code.component.d.ts +7 -4
  24. package/package.json +4 -4
@@ -8,10 +8,10 @@ import * as i5 from "../icon/icon.component";
8
8
  export class NotificationComponent {
9
9
  data;
10
10
  buttonClick = new EventEmitter();
11
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: NotificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: NotificationComponent, selector: "cf-notification", inputs: { data: "data" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<div *ngIf=\"data\">\n <cf-spacer mobile=\"16\" desktop=\"32\"></cf-spacer>\n <ion-grid>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"12\" size-md=\"6\">\n <div [ngClass]=\"data.status\" id=\"notification-container\">\n <ion-grid>\n <ion-row>\n <ion-col class=\"ion-align-self-center ion-text-start\">\n <p class=\"body-medium bold\">{{ data.heading }}</p>\n </ion-col>\n <ion-col size=\"auto\">\n <cf-icon icon=\"close\" *ngIf=\"data.canClose\" (click)=\"data = undefined\" [height]=\"10\" [iconColor]=\"data.status\"></cf-icon>\n </ion-col>\n <ion-col *ngIf=\"data.message\" size=\"12\">\n <cf-spacer default=\"8\"></cf-spacer>\n <p class=\"body-small\">{{ data.message }}</p>\n </ion-col>\n <ion-col *ngIf=\"data.button?.buttonHeading\">\n <cf-spacer default=\"8\"></cf-spacer>\n <p class=\"body-medium bold\">{{ data.button?.buttonHeading }}</p>\n </ion-col>\n <ion-col size=\"12\">\n <ng-content></ng-content>\n </ion-col>\n <ion-col size=\"12\" *ngIf=\"data.button\">\n <cf-spacer default=\"8\"></cf-spacer>\n <cf-btn type=\"primary\" fontSize=\"large\" action snug (click)=\"buttonClick.emit(data.button.buttonClickIdentifier)\">{{\n data.button.buttonText\n }}</cf-btn>\n </ion-col>\n </ion-row>\n </ion-grid>\n </div>\n </ion-col>\n </ion-row>\n </ion-grid>\n <cf-spacer mobile=\"16\" desktop=\"32\"></cf-spacer>\n</div>\n", styles: ["#notification-container{border-radius:4px;text-align:start;padding:12px}#notification-container.success{border:1.5px solid var(--cf-app-system-color-success);background-color:var(--cf-app-system-color-light-success)}#notification-container.warning{border:1.5px solid var(--cf-app-system-color-warning);background-color:var(--cf-app-system-color-light-warning)}#notification-container.error{border:1.5px solid var(--cf-app-system-color-error);background-color:var(--cf-app-system-color-light-error)}\n"], dependencies: [{ kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ButtonComponent, selector: "cf-btn", inputs: ["type", "disabled", "alert", "action", "snug", "accent", "fontSize", "iconStart", "iconEnd", "loading", "customColor"] }, { kind: "component", type: i4.SpacerComponent, selector: "cf-spacer", inputs: ["default", "mobile", "desktop"] }, { kind: "component", type: i5.IconComponent, selector: "cf-icon", inputs: ["icon", "height", "iconColor"] }] });
11
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: NotificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: NotificationComponent, selector: "cf-notification", inputs: { data: "data" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<div *ngIf=\"data\">\n <cf-spacer mobile=\"16\" desktop=\"32\"></cf-spacer>\n <ion-grid>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"12\" size-md=\"6\">\n <div [ngClass]=\"data.status\" id=\"notification-container\">\n <ion-grid>\n <ion-row>\n <ion-col class=\"ion-align-self-center ion-text-start\">\n <p class=\"body-medium bold\">{{ data.heading }}</p>\n </ion-col>\n <ion-col size=\"auto\">\n <cf-icon icon=\"close\" *ngIf=\"data.canClose\" (click)=\"data = undefined\" [height]=\"10\" [iconColor]=\"data.status\"></cf-icon>\n </ion-col>\n <ion-col *ngIf=\"data.message\" size=\"12\">\n <cf-spacer default=\"8\"></cf-spacer>\n <p class=\"body-small\">{{ data.message }}</p>\n </ion-col>\n <ion-col *ngIf=\"data.button?.buttonHeading\">\n <cf-spacer default=\"8\"></cf-spacer>\n <p class=\"body-medium bold\">{{ data.button?.buttonHeading }}</p>\n </ion-col>\n <ion-col size=\"12\">\n <ng-content></ng-content>\n </ion-col>\n <ion-col size=\"12\" *ngIf=\"data.button\">\n <cf-spacer default=\"8\"></cf-spacer>\n <cf-btn type=\"primary\" fontSize=\"large\" action snug (click)=\"buttonClick.emit(data.button.buttonClickIdentifier)\">{{\n data.button.buttonText\n }}</cf-btn>\n </ion-col>\n </ion-row>\n </ion-grid>\n </div>\n </ion-col>\n </ion-row>\n </ion-grid>\n <cf-spacer mobile=\"16\" desktop=\"32\"></cf-spacer>\n</div>\n", styles: ["#notification-container{border-radius:4px;text-align:start;padding:12px}#notification-container.success{border:1.5px solid var(--cf-app-system-color-success);background-color:var(--cf-app-system-color-light-success)}#notification-container.warning{border:1.5px solid var(--cf-app-system-color-warning);background-color:var(--cf-app-system-color-light-warning)}#notification-container.error{border:1.5px solid var(--cf-app-system-color-error);background-color:var(--cf-app-system-color-light-error)}\n"], dependencies: [{ kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ButtonComponent, selector: "cf-btn", inputs: ["type", "disabled", "alert", "action", "snug", "accent", "fontSize", "iconStart", "iconEnd", "loading", "customColor"] }, { kind: "component", type: i4.SpacerComponent, selector: "cf-spacer", inputs: ["default", "mobile", "desktop"] }, { kind: "component", type: i5.IconComponent, selector: "cf-icon", inputs: ["icon", "height", "iconColor"] }] });
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: NotificationComponent, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: NotificationComponent, decorators: [{
15
15
  type: Component,
16
16
  args: [{ selector: 'cf-notification', template: "<div *ngIf=\"data\">\n <cf-spacer mobile=\"16\" desktop=\"32\"></cf-spacer>\n <ion-grid>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"12\" size-md=\"6\">\n <div [ngClass]=\"data.status\" id=\"notification-container\">\n <ion-grid>\n <ion-row>\n <ion-col class=\"ion-align-self-center ion-text-start\">\n <p class=\"body-medium bold\">{{ data.heading }}</p>\n </ion-col>\n <ion-col size=\"auto\">\n <cf-icon icon=\"close\" *ngIf=\"data.canClose\" (click)=\"data = undefined\" [height]=\"10\" [iconColor]=\"data.status\"></cf-icon>\n </ion-col>\n <ion-col *ngIf=\"data.message\" size=\"12\">\n <cf-spacer default=\"8\"></cf-spacer>\n <p class=\"body-small\">{{ data.message }}</p>\n </ion-col>\n <ion-col *ngIf=\"data.button?.buttonHeading\">\n <cf-spacer default=\"8\"></cf-spacer>\n <p class=\"body-medium bold\">{{ data.button?.buttonHeading }}</p>\n </ion-col>\n <ion-col size=\"12\">\n <ng-content></ng-content>\n </ion-col>\n <ion-col size=\"12\" *ngIf=\"data.button\">\n <cf-spacer default=\"8\"></cf-spacer>\n <cf-btn type=\"primary\" fontSize=\"large\" action snug (click)=\"buttonClick.emit(data.button.buttonClickIdentifier)\">{{\n data.button.buttonText\n }}</cf-btn>\n </ion-col>\n </ion-row>\n </ion-grid>\n </div>\n </ion-col>\n </ion-row>\n </ion-grid>\n <cf-spacer mobile=\"16\" desktop=\"32\"></cf-spacer>\n</div>\n", styles: ["#notification-container{border-radius:4px;text-align:start;padding:12px}#notification-container.success{border:1.5px solid var(--cf-app-system-color-success);background-color:var(--cf-app-system-color-light-success)}#notification-container.warning{border:1.5px solid var(--cf-app-system-color-warning);background-color:var(--cf-app-system-color-light-warning)}#notification-container.error{border:1.5px solid var(--cf-app-system-color-error);background-color:var(--cf-app-system-color-light-error)}\n"] }]
17
17
  }], propDecorators: { data: [{
@@ -15,10 +15,10 @@ export class PageComponent {
15
15
  this.inputCenterV = checkTruthAttribute(changes, 'centerV', this.inputCenterV);
16
16
  this.inputDark = checkTruthAttribute(changes, 'dark', this.inputDark);
17
17
  }
18
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: PageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: PageComponent, selector: "cf-page", inputs: { centerH: "centerH", centerV: "centerV", dark: "dark" }, usesOnChanges: true, ngImport: i0, template: "<ion-content class=\"ion-page cf-page\" [ngClass]=\"{ 'bg-dark': inputDark }\">\n <div class=\"page\" [ngClass]=\"{ 'center-h': inputCenterH, 'center-v': inputCenterV }\">\n <ng-content></ng-content>\n </div>\n</ion-content>\n", styles: ["ion-content.cf-page::part(scroll){padding-inline:var(--cf-page-inline-padding, 16px);background-color:var(--cf-app-background-light)}ion-content.cf-page.bg-dark::part(scroll){background-color:var(--cf-app-background-dark)}ion-content.cf-page>div.page{height:100%;max-width:var(--cf-page-max-width, 1300px);margin-inline:auto;overflow:hidden}ion-content.cf-page>div.page.center-h,ion-content.cf-page>div.page.center-v{display:flex;flex-direction:column}ion-content.cf-page>div.page.center-h{align-items:center;text-align:center}ion-content.cf-page>div.page.center-v{justify-content:center}\n"], dependencies: [{ kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
18
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: PageComponent, selector: "cf-page", inputs: { centerH: "centerH", centerV: "centerV", dark: "dark" }, usesOnChanges: true, ngImport: i0, template: "<ion-content class=\"ion-page cf-page\" [ngClass]=\"{ 'bg-dark': inputDark }\">\n <div class=\"page\" [ngClass]=\"{ 'center-h': inputCenterH, 'center-v': inputCenterV }\">\n <ng-content></ng-content>\n </div>\n</ion-content>\n", styles: ["ion-content.cf-page::part(scroll){padding-inline:var(--cf-page-inline-padding, 16px);background-color:var(--cf-app-background-light)}ion-content.cf-page.bg-dark::part(scroll){background-color:var(--cf-app-background-dark)}ion-content.cf-page>div.page{height:100%;max-width:var(--cf-page-max-width, 1300px);margin-inline:auto;overflow:hidden}ion-content.cf-page>div.page.center-h,ion-content.cf-page>div.page.center-v{display:flex;flex-direction:column}ion-content.cf-page>div.page.center-h{align-items:center;text-align:center}ion-content.cf-page>div.page.center-v{justify-content:center}\n"], dependencies: [{ kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
20
20
  }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: PageComponent, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PageComponent, decorators: [{
22
22
  type: Component,
23
23
  args: [{ selector: 'cf-page', template: "<ion-content class=\"ion-page cf-page\" [ngClass]=\"{ 'bg-dark': inputDark }\">\n <div class=\"page\" [ngClass]=\"{ 'center-h': inputCenterH, 'center-v': inputCenterV }\">\n <ng-content></ng-content>\n </div>\n</ion-content>\n", styles: ["ion-content.cf-page::part(scroll){padding-inline:var(--cf-page-inline-padding, 16px);background-color:var(--cf-app-background-light)}ion-content.cf-page.bg-dark::part(scroll){background-color:var(--cf-app-background-dark)}ion-content.cf-page>div.page{height:100%;max-width:var(--cf-page-max-width, 1300px);margin-inline:auto;overflow:hidden}ion-content.cf-page>div.page.center-h,ion-content.cf-page>div.page.center-v{display:flex;flex-direction:column}ion-content.cf-page>div.page.center-h{align-items:center;text-align:center}ion-content.cf-page>div.page.center-v{justify-content:center}\n"] }]
24
24
  }], propDecorators: { centerH: [{
@@ -14,10 +14,10 @@ export class SpacerComponent {
14
14
  this.inputMobile = validateNumberValue(changes, 'mobile', this.inputMobile);
15
15
  this.inputDesktop = validateNumberValue(changes, 'desktop', this.inputDesktop);
16
16
  }
17
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: SpacerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: SpacerComponent, selector: "cf-spacer", inputs: { default: "default", mobile: "mobile", desktop: "desktop" }, usesOnChanges: true, ngImport: i0, template: "<!-- Mobile Only OR Default -->\n<div *ngIf=\"inputMobile || inputDefault\" class=\"mobile-only\" [ngStyle]=\"{ height: (inputMobile || inputDefault || 0) + 'px' }\"> </div>\n<!-- Desktop Only OR Default-->\n<div *ngIf=\"inputDesktop || inputDefault\" class=\"desktop-only\" [ngStyle]=\"{ height: (inputDesktop || inputDefault || 0) + 'px' }\"> </div>\n", styles: ["@media not (min-width: 768px){div.mobile-only{display:block}div.desktop-only{display:none}}@media (min-width: 768px){div.mobile-only{display:none}div.desktop-only{display:block}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
17
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: SpacerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: SpacerComponent, selector: "cf-spacer", inputs: { default: "default", mobile: "mobile", desktop: "desktop" }, usesOnChanges: true, ngImport: i0, template: "<!-- Mobile Only OR Default -->\n<div *ngIf=\"inputMobile || inputDefault\" class=\"mobile-only\" [ngStyle]=\"{ height: (inputMobile || inputDefault || 0) + 'px' }\"> </div>\n<!-- Desktop Only OR Default-->\n<div *ngIf=\"inputDesktop || inputDefault\" class=\"desktop-only\" [ngStyle]=\"{ height: (inputDesktop || inputDefault || 0) + 'px' }\"> </div>\n", styles: ["@media not (min-width: 768px){div.mobile-only{display:block}div.desktop-only{display:none}}@media (min-width: 768px){div.mobile-only{display:none}div.desktop-only{display:block}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
19
19
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: SpacerComponent, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: SpacerComponent, decorators: [{
21
21
  type: Component,
22
22
  args: [{ selector: 'cf-spacer', template: "<!-- Mobile Only OR Default -->\n<div *ngIf=\"inputMobile || inputDefault\" class=\"mobile-only\" [ngStyle]=\"{ height: (inputMobile || inputDefault || 0) + 'px' }\"> </div>\n<!-- Desktop Only OR Default-->\n<div *ngIf=\"inputDesktop || inputDefault\" class=\"desktop-only\" [ngStyle]=\"{ height: (inputDesktop || inputDefault || 0) + 'px' }\"> </div>\n", styles: ["@media not (min-width: 768px){div.mobile-only{display:block}div.desktop-only{display:none}}@media (min-width: 768px){div.mobile-only{display:none}div.desktop-only{display:block}}\n"] }]
23
23
  }], propDecorators: { default: [{
@@ -7,10 +7,10 @@ export class SpinnerComponent {
7
7
  ngOnChanges(changes) {
8
8
  this.inputSize = validateNumberValue(changes, 'size', this.inputSize) || this.inputSize;
9
9
  }
10
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: SpinnerComponent, selector: "cf-spinner", inputs: { size: "size" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"spinner\" [style]=\"'font-size: ' + inputSize + 'px'\"></div>\n", styles: ["#spinner{width:1em;height:1em;border:.15em solid var(--cf-app-system-color-outline);border-radius:50%;border-top-color:var(--cf-app-color-accent);animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"] });
10
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: SpinnerComponent, selector: "cf-spinner", inputs: { size: "size" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"spinner\" [style]=\"'font-size: ' + inputSize + 'px'\"></div>\n", styles: ["#spinner{width:1em;height:1em;border:.15em solid var(--cf-app-system-color-outline);border-radius:50%;border-top-color:var(--cf-app-color-accent);animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"] });
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: SpinnerComponent, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: SpinnerComponent, decorators: [{
14
14
  type: Component,
15
15
  args: [{ selector: 'cf-spinner', template: "<div id=\"spinner\" [style]=\"'font-size: ' + inputSize + 'px'\"></div>\n", styles: ["#spinner{width:1em;height:1em;border:.15em solid var(--cf-app-system-color-outline);border-radius:50%;border-top-color:var(--cf-app-color-accent);animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"] }]
16
16
  }], propDecorators: { size: [{
@@ -5,9 +5,9 @@ import * as i2 from "@angular/common";
5
5
  import * as i3 from "../spacer/spacer.component";
6
6
  import * as i4 from "../spinner/spinner.component";
7
7
  export class VerificationCodeComponent {
8
- userFeedbackMessages;
9
8
  valueToVerify;
10
- code;
9
+ status;
10
+ userFeedbackMessages;
11
11
  outcome = new EventEmitter();
12
12
  resendClickEvent = new EventEmitter();
13
13
  myInput1;
@@ -18,22 +18,32 @@ export class VerificationCodeComponent {
18
18
  validationCodeError = false;
19
19
  verificationCodeInputArr = [null, null, null, null, null];
20
20
  loading = false;
21
- codeSentCount = 0;
21
+ commsSentCount = 0;
22
22
  validationCode;
23
+ statusSub$;
23
24
  constructor() { }
24
25
  ionViewDidEnter() {
25
- this.codeSentCount = 0;
26
+ this.commsSentCount = 0;
26
27
  }
27
28
  ngOnChanges(changes) {
28
29
  if (changes['valueToVerify']?.currentValue !== changes['valueToVerify']?.previousValue ||
29
30
  changes['code']?.currentValue !== changes['code']?.previousValue) {
30
- this.codeSentCount = 0;
31
+ this.commsSentCount = 0;
31
32
  this.validationCodeError = false;
32
33
  this.resetAllInputFields();
33
34
  }
35
+ if (changes['status']) {
36
+ this.statusSub$ = changes['status'].currentValue.subscribe((stat) => {
37
+ if (stat === 'invalid') {
38
+ this.validationCodeError = true;
39
+ }
40
+ this.resetAllInputFields();
41
+ this.setFocusToNext(0);
42
+ });
43
+ }
34
44
  }
35
45
  resendVerificationCode() {
36
- this.codeSentCount++;
46
+ this.commsSentCount++;
37
47
  this.resendClickEvent.emit(true);
38
48
  }
39
49
  formulateAndCheckVerificationCode(event, index) {
@@ -47,14 +57,7 @@ export class VerificationCodeComponent {
47
57
  this.validationCodeError = false;
48
58
  if (this.verificationCodeInputArr.every((val) => val !== null)) {
49
59
  this.validationCode = this.verificationCodeInputArr.join('');
50
- if (this.validationCode === this.code) {
51
- this.outcome.emit(this.validationCode);
52
- }
53
- else {
54
- this.validationCodeError = true;
55
- this.resetAllInputFields();
56
- this.setFocusToNext(0);
57
- }
60
+ this.outcome.emit(this.validationCode);
58
61
  }
59
62
  }
60
63
  resetAllInputFields() {
@@ -102,17 +105,20 @@ export class VerificationCodeComponent {
102
105
  break;
103
106
  }
104
107
  }
105
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: VerificationCodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
106
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: VerificationCodeComponent, selector: "cf-verification-code", inputs: { userFeedbackMessages: "userFeedbackMessages", valueToVerify: "valueToVerify", code: "code" }, outputs: { outcome: "outcome", resendClickEvent: "resendClickEvent" }, viewQueries: [{ propertyName: "myInput1", first: true, predicate: ["input1"], descendants: true }, { propertyName: "myInput2", first: true, predicate: ["input2"], descendants: true }, { propertyName: "myInput3", first: true, predicate: ["input3"], descendants: true }, { propertyName: "myInput4", first: true, predicate: ["input4"], descendants: true }, { propertyName: "myInput5", first: true, predicate: ["input5"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ion-grid>\n <!-- Input boxes for verification code 5 numeric digits -->\n <ion-row class=\"ion-justify-content-center\">\n <ion-col *ngIf=\"validationCodeError\" size=\"auto\">\n <p class=\"body-small error\" *ngFor=\"let string of userFeedbackMessages?.error?.errorMessage || ['Invalid Code - Please Retry']\">{{ string }}</p>\n <cf-spacer default=\"16\"></cf-spacer>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"auto\">\n <div class=\"single-container\" [ngClass]=\"{ error: validationCodeError }\">\n <ion-input\n #input1\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 1)\"></ion-input>\n <ion-input\n #input2\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 2)\"></ion-input>\n <ion-input\n #input3\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 3)\"></ion-input>\n <ion-input\n #input4\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 4)\"></ion-input>\n <ion-input\n #input5\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 5)\"></ion-input>\n </div>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"auto\">\n <cf-spacer default=\"16\"></cf-spacer>\n <ng-container *ngIf=\"!loading\">\n <button *ngIf=\"codeSentCount < 3\" (click)=\"resendVerificationCode()\" style=\"background-color: transparent\">\n <ng-container *ngIf=\"validationCodeError\">\n <p class=\"body-small ion-text-start\" *ngFor=\"let string of userFeedbackMessages?.error?.resend || ['Resend Code']\">\n {{ string }}\n </p>\n </ng-container>\n <ng-container *ngIf=\"!validationCodeError\">\n <p\n class=\"body-small ion-text-start\"\n *ngFor=\"let string of userFeedbackMessages?.standardResend || ['Didn`t get a code? Please resend the code']\">\n {{ string }}\n </p>\n </ng-container>\n </button>\n <ng-container *ngIf=\"codeSentCount >= 3\">\n <p\n class=\"body-small\"\n *ngFor=\"let string of userFeedbackMessages?.limitReached || ['Still struggling with your code?', 'Please contact support for assistance']\"\n >{{ string }}</p\n >\n </ng-container>\n </ng-container>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"auto\">\n <cf-spinner [size]=\"50\" [ngClass]=\"{ 'block-hidden': !loading }\"></cf-spinner>\n </ion-col>\n </ion-row>\n</ion-grid>\n", styles: [".single-container{display:flex;gap:16px}.single-container .single-digit-input{font-family:Roboto,sans-serif;font-weight:400;font-style:normal;font-size:1.6rem;height:60px;width:60px;--border-radius: 12px;--background: var(--cf-app-system-color-outline);--highlight-color-focused: var(--cf-app-color-accent)}.single-container.error .single-digit-input{--border-color: var(--cf-app-system-color-error)}.block-hidden{display:none}p.error{color:var(--cf-app-system-color-error)}\n"], dependencies: [{ kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i1.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "legacy", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "directive", type: i1.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar,ion-range" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.SpacerComponent, selector: "cf-spacer", inputs: ["default", "mobile", "desktop"] }, { kind: "component", type: i4.SpinnerComponent, selector: "cf-spinner", inputs: ["size"] }] });
108
+ ionViewWillLeave() {
109
+ this.statusSub$?.unsubscribe();
110
+ }
111
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: VerificationCodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
112
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: VerificationCodeComponent, selector: "cf-verification-code", inputs: { valueToVerify: "valueToVerify", status: "status", userFeedbackMessages: "userFeedbackMessages" }, outputs: { outcome: "outcome", resendClickEvent: "resendClickEvent" }, viewQueries: [{ propertyName: "myInput1", first: true, predicate: ["input1"], descendants: true }, { propertyName: "myInput2", first: true, predicate: ["input2"], descendants: true }, { propertyName: "myInput3", first: true, predicate: ["input3"], descendants: true }, { propertyName: "myInput4", first: true, predicate: ["input4"], descendants: true }, { propertyName: "myInput5", first: true, predicate: ["input5"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ion-grid>\n <!-- Input boxes for verification code 5 numeric digits -->\n <ion-row class=\"ion-justify-content-center\">\n <ion-col *ngIf=\"validationCodeError\" size=\"auto\">\n <p class=\"body-small error\" *ngFor=\"let string of userFeedbackMessages?.error?.errorMessage || ['Invalid Code - Please Retry']\">{{ string }}</p>\n <cf-spacer default=\"16\"></cf-spacer>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"auto\">\n <div class=\"single-container\" [ngClass]=\"{ error: validationCodeError }\">\n <ion-input\n #input1\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 1)\"></ion-input>\n <ion-input\n #input2\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 2)\"></ion-input>\n <ion-input\n #input3\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 3)\"></ion-input>\n <ion-input\n #input4\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 4)\"></ion-input>\n <ion-input\n #input5\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 5)\"></ion-input>\n </div>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"auto\">\n <cf-spacer default=\"16\"></cf-spacer>\n <ng-container *ngIf=\"!loading\">\n <button *ngIf=\"commsSentCount < 3\" (click)=\"resendVerificationCode()\" style=\"background-color: transparent\">\n <ng-container *ngIf=\"validationCodeError\">\n <p class=\"body-small ion-text-start\" *ngFor=\"let string of userFeedbackMessages?.error?.resend || ['Resend Code']\">\n {{ string }}\n </p>\n </ng-container>\n <ng-container *ngIf=\"!validationCodeError\">\n <p\n class=\"body-small ion-text-start\"\n *ngFor=\"let string of userFeedbackMessages?.standardResend || ['Didn`t get a code? Please resend the code']\">\n {{ string }}\n </p>\n </ng-container>\n </button>\n <ng-container *ngIf=\"commsSentCount >= 3\">\n <p\n class=\"body-small\"\n *ngFor=\"let string of userFeedbackMessages?.limitReached || ['Still struggling with your code?', 'Please contact support for assistance']\"\n >{{ string }}</p\n >\n </ng-container>\n </ng-container>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"auto\">\n <cf-spinner [size]=\"50\" [ngClass]=\"{ 'block-hidden': !loading }\"></cf-spinner>\n </ion-col>\n </ion-row>\n</ion-grid>\n", styles: [".single-container{display:flex;gap:14px}.single-container .single-digit-input{font-family:Roboto,sans-serif;font-weight:400;font-style:normal;font-size:1.6rem;height:60px;width:60px;--border-radius: 12px;--background: var(--cf-app-system-color-outline);--highlight-color-focused: var(--cf-app-color-accent)}.single-container.error .single-digit-input{--border-color: var(--cf-app-system-color-error)}.block-hidden{display:none}p.error{color:var(--cf-app-system-color-error)}\n"], dependencies: [{ kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i1.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "legacy", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "directive", type: i1.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar,ion-range" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.SpacerComponent, selector: "cf-spacer", inputs: ["default", "mobile", "desktop"] }, { kind: "component", type: i4.SpinnerComponent, selector: "cf-spinner", inputs: ["size"] }] });
107
113
  }
108
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: VerificationCodeComponent, decorators: [{
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: VerificationCodeComponent, decorators: [{
109
115
  type: Component,
110
- args: [{ selector: 'cf-verification-code', template: "<ion-grid>\n <!-- Input boxes for verification code 5 numeric digits -->\n <ion-row class=\"ion-justify-content-center\">\n <ion-col *ngIf=\"validationCodeError\" size=\"auto\">\n <p class=\"body-small error\" *ngFor=\"let string of userFeedbackMessages?.error?.errorMessage || ['Invalid Code - Please Retry']\">{{ string }}</p>\n <cf-spacer default=\"16\"></cf-spacer>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"auto\">\n <div class=\"single-container\" [ngClass]=\"{ error: validationCodeError }\">\n <ion-input\n #input1\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 1)\"></ion-input>\n <ion-input\n #input2\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 2)\"></ion-input>\n <ion-input\n #input3\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 3)\"></ion-input>\n <ion-input\n #input4\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 4)\"></ion-input>\n <ion-input\n #input5\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 5)\"></ion-input>\n </div>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"auto\">\n <cf-spacer default=\"16\"></cf-spacer>\n <ng-container *ngIf=\"!loading\">\n <button *ngIf=\"codeSentCount < 3\" (click)=\"resendVerificationCode()\" style=\"background-color: transparent\">\n <ng-container *ngIf=\"validationCodeError\">\n <p class=\"body-small ion-text-start\" *ngFor=\"let string of userFeedbackMessages?.error?.resend || ['Resend Code']\">\n {{ string }}\n </p>\n </ng-container>\n <ng-container *ngIf=\"!validationCodeError\">\n <p\n class=\"body-small ion-text-start\"\n *ngFor=\"let string of userFeedbackMessages?.standardResend || ['Didn`t get a code? Please resend the code']\">\n {{ string }}\n </p>\n </ng-container>\n </button>\n <ng-container *ngIf=\"codeSentCount >= 3\">\n <p\n class=\"body-small\"\n *ngFor=\"let string of userFeedbackMessages?.limitReached || ['Still struggling with your code?', 'Please contact support for assistance']\"\n >{{ string }}</p\n >\n </ng-container>\n </ng-container>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"auto\">\n <cf-spinner [size]=\"50\" [ngClass]=\"{ 'block-hidden': !loading }\"></cf-spinner>\n </ion-col>\n </ion-row>\n</ion-grid>\n", styles: [".single-container{display:flex;gap:16px}.single-container .single-digit-input{font-family:Roboto,sans-serif;font-weight:400;font-style:normal;font-size:1.6rem;height:60px;width:60px;--border-radius: 12px;--background: var(--cf-app-system-color-outline);--highlight-color-focused: var(--cf-app-color-accent)}.single-container.error .single-digit-input{--border-color: var(--cf-app-system-color-error)}.block-hidden{display:none}p.error{color:var(--cf-app-system-color-error)}\n"] }]
111
- }], ctorParameters: () => [], propDecorators: { userFeedbackMessages: [{
116
+ args: [{ selector: 'cf-verification-code', template: "<ion-grid>\n <!-- Input boxes for verification code 5 numeric digits -->\n <ion-row class=\"ion-justify-content-center\">\n <ion-col *ngIf=\"validationCodeError\" size=\"auto\">\n <p class=\"body-small error\" *ngFor=\"let string of userFeedbackMessages?.error?.errorMessage || ['Invalid Code - Please Retry']\">{{ string }}</p>\n <cf-spacer default=\"16\"></cf-spacer>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"auto\">\n <div class=\"single-container\" [ngClass]=\"{ error: validationCodeError }\">\n <ion-input\n #input1\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 1)\"></ion-input>\n <ion-input\n #input2\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 2)\"></ion-input>\n <ion-input\n #input3\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 3)\"></ion-input>\n <ion-input\n #input4\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 4)\"></ion-input>\n <ion-input\n #input5\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 5)\"></ion-input>\n </div>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"auto\">\n <cf-spacer default=\"16\"></cf-spacer>\n <ng-container *ngIf=\"!loading\">\n <button *ngIf=\"commsSentCount < 3\" (click)=\"resendVerificationCode()\" style=\"background-color: transparent\">\n <ng-container *ngIf=\"validationCodeError\">\n <p class=\"body-small ion-text-start\" *ngFor=\"let string of userFeedbackMessages?.error?.resend || ['Resend Code']\">\n {{ string }}\n </p>\n </ng-container>\n <ng-container *ngIf=\"!validationCodeError\">\n <p\n class=\"body-small ion-text-start\"\n *ngFor=\"let string of userFeedbackMessages?.standardResend || ['Didn`t get a code? Please resend the code']\">\n {{ string }}\n </p>\n </ng-container>\n </button>\n <ng-container *ngIf=\"commsSentCount >= 3\">\n <p\n class=\"body-small\"\n *ngFor=\"let string of userFeedbackMessages?.limitReached || ['Still struggling with your code?', 'Please contact support for assistance']\"\n >{{ string }}</p\n >\n </ng-container>\n </ng-container>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"auto\">\n <cf-spinner [size]=\"50\" [ngClass]=\"{ 'block-hidden': !loading }\"></cf-spinner>\n </ion-col>\n </ion-row>\n</ion-grid>\n", styles: [".single-container{display:flex;gap:14px}.single-container .single-digit-input{font-family:Roboto,sans-serif;font-weight:400;font-style:normal;font-size:1.6rem;height:60px;width:60px;--border-radius: 12px;--background: var(--cf-app-system-color-outline);--highlight-color-focused: var(--cf-app-color-accent)}.single-container.error .single-digit-input{--border-color: var(--cf-app-system-color-error)}.block-hidden{display:none}p.error{color:var(--cf-app-system-color-error)}\n"] }]
117
+ }], ctorParameters: () => [], propDecorators: { valueToVerify: [{
112
118
  type: Input
113
- }], valueToVerify: [{
119
+ }], status: [{
114
120
  type: Input
115
- }], code: [{
121
+ }], userFeedbackMessages: [{
116
122
  type: Input
117
123
  }], outcome: [{
118
124
  type: Output
@@ -134,4 +140,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
134
140
  type: ViewChild,
135
141
  args: ['input5']
136
142
  }] } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2FyZWZpcnN0L2xpYnJhcnkvc3JjL2xpYi9jb21wb25lbnRzL3ZlcmlmaWNhdGlvbi1jb2RlL3ZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhcmVmaXJzdC9saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy92ZXJpZmljYXRpb24tY29kZS92ZXJpZmljYXRpb24tY29kZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBc0MsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVV0SCxNQUFNLE9BQU8seUJBQXlCO0lBQzNCLG9CQUFvQixDQUFvQztJQUN4RCxhQUFhLENBQVU7SUFDdkIsSUFBSSxDQUFVO0lBRWIsT0FBTyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFDckMsZ0JBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUVqQyxRQUFRLENBQVk7SUFDcEIsUUFBUSxDQUFZO0lBQ3BCLFFBQVEsQ0FBWTtJQUNwQixRQUFRLENBQVk7SUFDcEIsUUFBUSxDQUFZO0lBR3pDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUM1Qix3QkFBd0IsR0FBc0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0UsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLGNBQWMsQ0FBcUI7SUFLbkMsZ0JBQWUsQ0FBQztJQU9oQixlQUFlO1FBQ2IsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7SUFDekIs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QTVCLFNBQVM7dUJBQUMsUUFBUTtnQkFDRSxRQUFRO3NCQUE1QixTQUFTO3VCQUFDLFFBQVE7Z0JBQ0UsUUFBUTtzQkFBNUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNFLFFBQVE7c0JBQTVCLFNBQVM7dUJBQUMsUUFBUTtnQkFDRSxRQUFRO3NCQUE1QixTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENhcmVmaXJzdCBsaWJyYXJ5IC0gVmVyaWZpY2F0aW9uIENvZGUgSW5wdXRcbiAqXG4gKiBAZmlsZSAgICAgICAgICB2ZXJpZmljYXRpb24tY29kZS5jb21wb25lbnRcbiAqIEBkZXNjcmlwdGlvbiAgIENvbnRhaW5zIGFsbCB0aGUgbG9naWMgZm9yIGdlbmVyYXRpbmcgYSBDYXJlRmlyc3QgVmVyaWZpY2F0aW9uIENvZGUgSW5wdXRcbiAqIEBhdXRob3IgICAgICAgIEFybm8gSmFuc2VuIHZhbiBWdXVyZW5cbiAqIEBzaW5jZSAgICAgICAgIDIwMjQgLSAwMyAtIDA3XG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgdHlwZSBPbkNoYW5nZXMsIHR5cGUgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy8tLS0gSW50ZXJmYWNlXG5pbXBvcnQgdHlwZSB7IElucHV0Q3VzdG9tRXZlbnQsIElvbklucHV0IH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHR5cGUgeyBDZkNvZGVJbnB1dFVzZXJGZWVkYmFja01lc3NhZ2VzSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdmVyaWZpY2F0aW9uLWNvZGUuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2YtdmVyaWZpY2F0aW9uLWNvZGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vdmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBWZXJpZmljYXRpb25Db2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgdXNlckZlZWRiYWNrTWVzc2FnZXM/OiBDZkNvZGVJbnB1dFVzZXJGZWVkYmFja01lc3NhZ2VzSTtcbiAgQElucHV0KCkgdmFsdWVUb1ZlcmlmeSE6IHN0cmluZztcbiAgQElucHV0KCkgY29kZSE6IHN0cmluZztcblxuICBAT3V0cHV0KCkgb3V0Y29tZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgcmVzZW5kQ2xpY2tFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8dHJ1ZT4oKTtcblxuICBAVmlld0NoaWxkKGBpbnB1dDFgKSBteUlucHV0MT86IElvbklucHV0O1xuICBAVmlld0NoaWxkKCdpbnB1dDInKSBteUlucHV0Mj86IElvbklucHV0O1xuICBAVmlld0NoaWxkKCdpbnB1dDMnKSBteUlucHV0Mz86IElvbklucHV0O1xuICBAVmlld0NoaWxkKCdpbnB1dDQnKSBteUlucHV0ND86IElvbklucHV0O1xuICBAVmlld0NoaWxkKCdpbnB1dDUnKSBteUlucHV0NT86IElvbklucHV0O1xuXG4gIC8vLS0tIEhUTUwgdmFyaWFibGVzXG4gIHZhbGlkYXRpb25Db2RlRXJyb3IgPSBmYWxzZTtcbiAgdmVyaWZpY2F0aW9uQ29kZUlucHV0QXJyOiAobnVtYmVyIHwgbnVsbClbXSA9IFtudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsXTtcbiAgbG9hZGluZyA9IGZhbHNlO1xuICBjb2RlU2VudENvdW50ID0gMDtcbiAgdmFsaWRhdGlvbkNvZGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICBjb25zdHJ1Y3RvclxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgaW9uVmlld1dpbGxFbnRlclxuICAgKiBAZGVzY3JpcHRpb24gICBVcGRhdGUgdmFyaW91cyB2YWx1ZXMgb24gY29tcG9uZW50IGluaXRpYWxpemF0aW9uXG4gICAqIEByZXR1cm5zICAgICAgIHt2b2lkfVxuICAgKi9cbiAgaW9uVmlld0RpZEVudGVyKCk6IHZvaWQge1xuICAgIHRoaXMuY29kZVNlbnRDb3VudCA9IDA7XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIG5nT25DaGFuZ2VzXG4gICAqIEBkZXNjcmlwdGlvbiAgIFVwZGF0ZSB2YXJpb3VzIHZhbHVlcyBvbiBpbnB1dCBjaGFuZ2VzXG4gICAqIEByZXR1cm5zICAgICAgIHt2b2lkfVxuICAgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIGNoYW5nZXNbJ3ZhbHVlVG9WZXJpZnknXT8uY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzWyd2YWx1ZVRvVmVyaWZ5J10/LnByZXZpb3VzVmFsdWUgfHxcbiAgICAgIGNoYW5nZXNbJ2NvZGUnXT8uY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzWydjb2RlJ10/LnByZXZpb3VzVmFsdWVcbiAgICApIHtcbiAgICAgIHRoaXMuY29kZVNlbnRDb3VudCA9IDA7XG4gICAgICB0aGlzLnZhbGlkYXRpb25Db2RlRXJyb3IgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVzZXRBbGxJbnB1dEZpZWxkcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgcmVzZW5kVmVyaWZpY2F0aW9uQ29kZVxuICAgKiBAZGVzY3JpcHRpb24gICBSZXNlbmQgYSB2ZXJpZmljYXRpb24gY29kZVxuICAgKiBAcmV0dXJucyAgICAgICB7dm9pZH1cbiAgICovXG4gIHJlc2VuZFZlcmlmaWNhdGlvbkNvZGUoKTogdm9pZCB7XG4gICAgdGhpcy5jb2RlU2VudENvdW50Kys7XG4gICAgdGhpcy5yZXNlbmRDbGlja0V2ZW50LmVtaXQodHJ1ZSk7XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGZvcm11bGF0ZUFuZENoZWNrVmVyaWZpY2F0aW9uQ29kZVxuICAgKiBAZGVzY3JpcHRpb24gICBIYW5kbGUgaW5wdXRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgdmVyaWZpY2F0aW9uIGNvZGUgYW5kIGRvIGNhbGwgb25jZSBjb2RlIGlzIGNvbXBsZXRlXG4gICAqIEBwYXJhbSAgICAgICAgIHtJbnB1dEN1c3RvbUV2ZW50fSBldmVudFxuICAgKiBAcGFyYW0gICAgICAgICB7bnVtYmVyfSBpbmRleFxuICAgKiBAcmV0dXJucyAgICAgICB7dm9pZH1cbiAgICovXG4gIGZvcm11bGF0ZUFuZENoZWNrVmVyaWZpY2F0aW9uQ29kZShldmVudDogSW5wdXRDdXN0b21FdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQuZGV0YWlsLnZhbHVlO1xuICAgIGlmICghdmFsdWUgfHwgISh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB8fCAhKCt2YWx1ZSA8IDEwKSkge1xuICAgICAgdGhpcy5jbGVhckNvZGVJbnB1dChpbmRleCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXRGb2N1c1RvTmV4dChpbmRleCk7XG4gICAgdGhpcy52ZXJpZmljYXRpb25Db2RlSW5wdXRBcnJbaW5kZXggLSAxXSA9ICt2YWx1ZTtcbiAgICB0aGlzLnZhbGlkYXRpb25Db2RlRXJyb3IgPSBmYWxzZTtcblxuICAgIC8vLS0tIENoZWNrIGlmIGNvZGUgY29tcGxldGVkXG4gICAgaWYgKHRoaXMudmVyaWZpY2F0aW9uQ29kZUlucHV0QXJyLmV2ZXJ5KCh2YWwpID0+IHZhbCAhPT0gbnVsbCkpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkNvZGUgPSB0aGlzLnZlcmlmaWNhdGlvbkNvZGVJbnB1dEFyci5qb2luKCcnKTtcbiAgICAgIGlmICh0aGlzLnZhbGlkYXRpb25Db2RlID09PSB0aGlzLmNvZGUpIHtcbiAgICAgICAgdGhpcy5vdXRjb21lLmVtaXQodGhpcy52YWxpZGF0aW9uQ29kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhbGlkYXRpb25Db2RlRXJyb3IgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlc2V0QWxsSW5wdXRGaWVsZHMoKTtcbiAgICAgICAgdGhpcy5zZXRGb2N1c1RvTmV4dCgwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIHJlc2V0QWxsSW5wdXRGaWVsZHNcbiAgICogQGRlc2NyaXB0aW9uICAgUmVzZXQgYWxsIGlucHV0IGZpZWxkc1xuICAgKiBAcmV0dXJucyAgICAgICB7dm9pZH1cbiAgICovXG4gIHByaXZhdGUgcmVzZXRBbGxJbnB1dEZpZWxkcygpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyQ29kZUlucHV0KDEpO1xuICAgIHRoaXMuY2xlYXJDb2RlSW5wdXQoMik7XG4gICAgdGhpcy5jbGVhckNvZGVJbnB1dCgzKTtcbiAgICB0aGlzLmNsZWFyQ29kZUlucHV0KDQpO1xuICAgIHRoaXMuY2xlYXJDb2RlSW5wdXQoNSk7XG4gICAgdGhpcy52ZXJpZmljYXRpb25Db2RlSW5wdXRBcnIuZmlsbChudWxsKTtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgc2V0Rm9jdXNUb05leHRcbiAgICogQGRlc2NyaXB0aW9uICAgU2V0IHRoZSBmb2N1cyB0byB0aGUgbmV4dCBpbnB1dFxuICAgKiBAcGFyYW0gICAgICAgICB7bnVtYmVyfSBjdXJyZW50SW5kZXhcbiAgICogQHJldHVybnMgICAgICAge3ZvaWR9XG4gICAqL1xuICBwcml2YXRlIHNldEZvY3VzVG9OZXh0KGN1cnJlbnRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gNSkgcmV0dXJuO1xuICAgIGN1cnJlbnRJbmRleCA9PT0gMFxuICAgICAgPyB0aGlzLm15SW5wdXQxPy5zZXRGb2N1cygpXG4gICAgICA6IGN1cnJlbnRJbmRleCA9PT0gMVxuICAgICAgPyB0aGlzLm15SW5wdXQyPy5zZXRGb2N1cygpXG4gICAgICA6IGN1cnJlbnRJbmRleCA9PT0gMlxuICAgICAgPyB0aGlzLm15SW5wdXQzPy5zZXRGb2N1cygpXG4gICAgICA6IGN1cnJlbnRJbmRleCA9PT0gM1xuICAgICAgPyB0aGlzLm15SW5wdXQ0Py5zZXRGb2N1cygpXG4gICAgICA6IHRoaXMubXlJbnB1dDU/LnNldEZvY3VzKCk7XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGNsZWFyQ29kZUlucHV0XG4gICAqIEBkZXNjcmlwdGlvbiAgIENsZWFyIGEgY29kZSBpbnB1dCBvbiBpbnZhbGlkIGtleVxuICAgKiBAcGFyYW0gICAgICAgICB7bnVtYmVyfSBpbmRleFxuICAgKiBAcmV0dXJucyAgICAgICB7dm9pZH1cbiAgICovXG4gIHByaXZhdGUgY2xlYXJDb2RlSW5wdXQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHN3aXRjaCAoaW5kZXgpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgaWYgKHRoaXMubXlJbnB1dDEpIHRoaXMubXlJbnB1dDEudmFsdWUgPSBudWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgaWYgKHRoaXMubXlJbnB1dDIpIHRoaXMubXlJbnB1dDIudmFsdWUgPSBudWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgaWYgKHRoaXMubXlJbnB1dDMpIHRoaXMubXlJbnB1dDMudmFsdWUgPSBudWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgaWYgKHRoaXMubXlJbnB1dDQpIHRoaXMubXlJbnB1dDQudmFsdWUgPSBudWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNTpcbiAgICAgICAgaWYgKHRoaXMubXlJbnB1dDUpIHRoaXMubXlJbnB1dDUudmFsdWUgPSBudWxsO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cbiIsIjxpb24tZ3JpZD5cbiAgPCEtLSBJbnB1dCBib3hlcyBmb3IgdmVyaWZpY2F0aW9uIGNvZGUgNSBudW1lcmljIGRpZ2l0cyAtLT5cbiAgPGlvbi1yb3cgY2xhc3M9XCJpb24tanVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgIDxpb24tY29sICpuZ0lmPVwidmFsaWRhdGlvbkNvZGVFcnJvclwiIHNpemU9XCJhdXRvXCI+XG4gICAgICA8cCBjbGFzcz1cImJvZHktc21hbGwgZXJyb3JcIiAqbmdGb3I9XCJsZXQgc3RyaW5nIG9mIHVzZXJGZWVkYmFja01lc3NhZ2VzPy5lcnJvcj8uZXJyb3JNZXNzYWdlIHx8IFsnSW52YWxpZCBDb2RlIC0gUGxlYXNlIFJldHJ5J11cIj57eyBzdHJpbmcgfX08L3A+XG4gICAgICA8Y2Ytc3BhY2VyIGRlZmF1bHQ9XCIxNlwiPjwvY2Ytc3BhY2VyPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuICA8aW9uLXJvdyBjbGFzcz1cImlvbi1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieyBlcnJvcjogdmFsaWRhdGlvbkNvZGVFcnJvciB9XCI+XG4gICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAjaW5wdXQxXG4gICAgICAgICAgY2xhc3M9XCJzaW5nbGUtZGlnaXQtaW5wdXQgaW9uLXRleHQtY2VudGVyXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiXG4gICAgICAgICAgZmlsbD1cIm91dGxpbmVcIlxuICAgICAgICAgIG1heGxlbmd0aD1cIjFcIlxuICAgICAgICAgIGNsZWFyT25FZGl0PVwidHJ1ZVwiXG4gICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgbW9kZT1cIm1kXCJcbiAgICAgICAgICAoaW9uSW5wdXQpPVwiZm9ybXVsYXRlQW5kQ2hlY2tWZXJpZmljYXRpb25Db2RlKCRldmVudCwgMSlcIj48L2lvbi1pbnB1dD5cbiAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICNpbnB1dDJcbiAgICAgICAgICBjbGFzcz1cInNpbmdsZS1kaWdpdC1pbnB1dCBpb24tdGV4dC1jZW50ZXJcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcbiAgICAgICAgICBmaWxsPVwib3V0bGluZVwiXG4gICAgICAgICAgbWF4bGVuZ3RoPVwiMVwiXG4gICAgICAgICAgY2xlYXJPbkVkaXQ9XCJ0cnVlXCJcbiAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICBtb2RlPVwibWRcIlxuICAgICAgICAgIChpb25JbnB1dCk9XCJmb3JtdWxhdGVBbmRDaGVja1ZlcmlmaWNhdGlvbkNvZGUoJGV2ZW50LCAyKVwiPjwvaW9uLWlucHV0PlxuICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgI2lucHV0M1xuICAgICAgICAgIGNsYXNzPVwic2luZ2xlLWRpZ2l0LWlucHV0IGlvbi10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICBtYXhsZW5ndGg9XCIxXCJcbiAgICAgICAgICBjbGVhck9uRWRpdD1cInRydWVcIlxuICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgIChpb25JbnB1dCk9XCJmb3JtdWxhdGVBbmRDaGVja1ZlcmlmaWNhdGlvbkNvZGUoJGV2ZW50LCAzKVwiPjwvaW9uLWlucHV0PlxuICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgI2lucHV0NFxuICAgICAgICAgIGNsYXNzPVwic2luZ2xlLWRpZ2l0LWlucHV0IGlvbi10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICBtYXhsZW5ndGg9XCIxXCJcbiAgICAgICAgICBjbGVhck9uRWRpdD1cInRydWVcIlxuICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgIG1vZGU9XCJtZFwiXG4gICAgICAgICAgKGlvbklucHV0KT1cImZvcm11bGF0ZUFuZENoZWNrVmVyaWZpY2F0aW9uQ29kZSgkZXZlbnQsIDQpXCI+PC9pb24taW5wdXQ+XG4gICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAjaW5wdXQ1XG4gICAgICAgICAgY2xhc3M9XCJzaW5nbGUtZGlnaXQtaW5wdXQgaW9uLXRleHQtY2VudGVyXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiXG4gICAgICAgICAgZmlsbD1cIm91dGxpbmVcIlxuICAgICAgICAgIG1heGxlbmd0aD1cIjFcIlxuICAgICAgICAgIGNsZWFyT25FZGl0PVwidHJ1ZVwiXG4gICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgbW9kZT1cIm1kXCJcbiAgICAgICAgICAoaW9uSW5wdXQpPVwiZm9ybXVsYXRlQW5kQ2hlY2tWZXJpZmljYXRpb25Db2RlKCRldmVudCwgNSlcIj48L2lvbi1pbnB1dD5cbiAgICAgIDwvZGl2PlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuICA8aW9uLXJvdyBjbGFzcz1cImlvbi1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIj5cbiAgICAgIDxjZi1zcGFjZXIgZGVmYXVsdD1cIjE2XCI+PC9jZi1zcGFjZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRpbmdcIj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvZGVTZW50Q291bnQgPCAzXCIgKGNsaWNrKT1cInJlc2VuZFZlcmlmaWNhdGlvbkNvZGUoKVwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmFsaWRhdGlvbkNvZGVFcnJvclwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJib2R5LXNtYWxsIGlvbi10ZXh0LXN0YXJ0XCIgKm5nRm9yPVwibGV0IHN0cmluZyBvZiB1c2VyRmVlZGJhY2tNZXNzYWdlcz8uZXJyb3I/LnJlc2VuZCB8fCBbJ1Jlc2VuZCBDb2RlJ11cIj5cbiAgICAgICAgICAgICAge3sgc3RyaW5nIH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF2YWxpZGF0aW9uQ29kZUVycm9yXCI+XG4gICAgICAgICAgICA8cFxuICAgICAgICAgICAgICBjbGFzcz1cImJvZHktc21hbGwgaW9uLXRleHQtc3RhcnRcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3RyaW5nIG9mIHVzZXJGZWVkYmFja01lc3NhZ2VzPy5zdGFuZGFyZFJlc2VuZCB8fCBbJ0RpZG5gdCBnZXQgYSBjb2RlPyBQbGVhc2UgcmVzZW5kIHRoZSBjb2RlJ11cIj5cbiAgICAgICAgICAgICAge3sgc3RyaW5nIH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29kZVNlbnRDb3VudCA+PSAzXCI+XG4gICAgICAgICAgPHBcbiAgICAgICAgICAgIGNsYXNzPVwiYm9keS1zbWFsbFwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3RyaW5nIG9mIHVzZXJGZWVkYmFja01lc3NhZ2VzPy5saW1pdFJlYWNoZWQgfHwgWydTdGlsbCBzdHJ1Z2dsaW5nIHdpdGggeW91ciBjb2RlPycsICdQbGVhc2UgY29udGFjdCBzdXBwb3J0IGZvciBhc3Npc3RhbmNlJ11cIlxuICAgICAgICAgICAgPnt7IHN0cmluZyB9fTwvcFxuICAgICAgICAgID5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2lvbi1jb2w+XG4gIDwvaW9uLXJvdz5cbiAgPGlvbi1yb3cgY2xhc3M9XCJpb24tanVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCI+XG4gICAgICA8Y2Ytc3Bpbm5lciBbc2l6ZV09XCI1MFwiIFtuZ0NsYXNzXT1cInsgJ2Jsb2NrLWhpZGRlbic6ICFsb2FkaW5nIH1cIj48L2NmLXNwaW5uZXI+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG48L2lvbi1ncmlkPlxuIl19
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2FyZWZpcnN0L2xpYnJhcnkvc3JjL2xpYi9jb21wb25lbnRzL3ZlcmlmaWNhdGlvbi1jb2RlL3ZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhcmVmaXJzdC9saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy92ZXJpZmljYXRpb24tY29kZS92ZXJpZmljYXRpb24tY29kZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBc0MsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVd0SCxNQUFNLE9BQU8seUJBQXlCO0lBQzNCLGFBQWEsQ0FBVTtJQUN2QixNQUFNLENBQTBDO0lBQ2hELG9CQUFvQixDQUFvQztJQUV2RCxPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUNyQyxnQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBRWpDLFFBQVEsQ0FBWTtJQUNwQixRQUFRLENBQVk7SUFDcEIsUUFBUSxDQUFZO0lBQ3BCLFFBQVEsQ0FBWTtJQUNwQixRQUFRLENBQVk7SUFHekMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQzVCLHdCQUF3QixHQUFzQixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RSxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFDbkIsY0FBYyxDQUFxQjtJQUVuQyxVQUFVLENBQWdCO0lBSzFCLGdCQUFlLENBQUM7SUFPaEIsZUFBZTtRQUNiLElBQUksQ0FBQyxjQUFjLEdB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LElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDakMsQ0FBQzt1R0F0S1UseUJBQXlCOzJGQUF6Qix5QkFBeUIsNHJCQzFCdEMsMnhIQWlHQTs7MkZEdkVhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSxzQkFBc0I7d0RBS3ZCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFSSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFYyxRQUFRO3NCQUE1QixTQUFTO3VCQUFDLFFBQVE7Z0JBQ0UsUUFBUTtzQkFBNUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNFLFFBQVE7c0JBQTVCLFNBQVM7dUJBQUMsUUFBUTtnQkFDRSxRQUFRO3NCQUE1QixTQUFTO3VCQUFDLFFBQVE7Z0JBQ0UsUUFBUTtzQkFBNUIsU0FBUzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDYXJlZmlyc3QgbGlicmFyeSAtIFZlcmlmaWNhdGlvbiBDb2RlIElucHV0XG4gKlxuICogQGZpbGUgICAgICAgICAgdmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50XG4gKiBAZGVzY3JpcHRpb24gICBDb250YWlucyBhbGwgdGhlIGxvZ2ljIGZvciBnZW5lcmF0aW5nIGEgQ2FyZUZpcnN0IFZlcmlmaWNhdGlvbiBDb2RlIElucHV0XG4gKiBAYXV0aG9yICAgICAgICBBcm5vIEphbnNlbiB2YW4gVnV1cmVuXG4gKiBAc2luY2UgICAgICAgICAyMDI0IC0gMDMgLSAwN1xuICogQHVzYWdlICAgICAgICAgICA8Y2YtdmVyaWZpY2F0aW9uLWNvZGVcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVRvVmVyaWZ5PWBzdHJpbmdgXG4gICAgICAgICAgICAgICAgICAgICAgKG91dGNvbWUpPWBvbWl0cyBjb2RlIHZhbHVlYFxuICAgICAgICAgICAgICAgICAgICAgIChyZXNlbmRDbGlja0V2ZW50KT1gcmVzZW5kIGNsaWNrIGV2ZW50YFxuICAgICAgICAgICAgICAgICAgICAgIFtzdGF0dXNdPWBCZWhhdmlvclN1YmplY3Q8J2luaXRpYWwnIHwgJ2ludmFsaWQnPmA+XG4gICAgICAgICAgICAgICAgICAgIDwvY2YtdmVyaWZpY2F0aW9uLWNvZGU+XG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgdHlwZSBPbkNoYW5nZXMsIHR5cGUgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy8tLS0gSW50ZXJmYWNlXG5pbXBvcnQgdHlwZSB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7IElucHV0Q3VzdG9tRXZlbnQsIElvbklucHV0IH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHR5cGUgeyBDZkNvZGVJbnB1dFVzZXJGZWVkYmFja01lc3NhZ2VzSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdmVyaWZpY2F0aW9uLWNvZGUuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2YtdmVyaWZpY2F0aW9uLWNvZGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vdmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBWZXJpZmljYXRpb25Db2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgdmFsdWVUb1ZlcmlmeSE6IHN0cmluZztcbiAgQElucHV0KCkgc3RhdHVzITogQmVoYXZpb3JTdWJqZWN0PCdpbml0aWFsJyB8ICdpbnZhbGlkJz47XG4gIEBJbnB1dCgpIHVzZXJGZWVkYmFja01lc3NhZ2VzPzogQ2ZDb2RlSW5wdXRVc2VyRmVlZGJhY2tNZXNzYWdlc0k7XG5cbiAgQE91dHB1dCgpIG91dGNvbWUgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHJlc2VuZENsaWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHRydWU+KCk7XG5cbiAgQFZpZXdDaGlsZChgaW5wdXQxYCkgbXlJbnB1dDE/OiBJb25JbnB1dDtcbiAgQFZpZXdDaGlsZCgnaW5wdXQyJykgbXlJbnB1dDI/OiBJb25JbnB1dDtcbiAgQFZpZXdDaGlsZCgnaW5wdXQzJykgbXlJbnB1dDM/OiBJb25JbnB1dDtcbiAgQFZpZXdDaGlsZCgnaW5wdXQ0JykgbXlJbnB1dDQ/OiBJb25JbnB1dDtcbiAgQFZpZXdDaGlsZCgnaW5wdXQ1JykgbXlJbnB1dDU/OiBJb25JbnB1dDtcblxuICAvLy0tLSBIVE1MIHZhcmlhYmxlc1xuICB2YWxpZGF0aW9uQ29kZUVycm9yID0gZmFsc2U7XG4gIHZlcmlmaWNhdGlvbkNvZGVJbnB1dEFycjogKG51bWJlciB8IG51bGwpW10gPSBbbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbF07XG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgY29tbXNTZW50Q291bnQgPSAwO1xuICB2YWxpZGF0aW9uQ29kZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHN0YXR1c1N1YiQ/OiBTdWJzY3JpcHRpb247XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGlvblZpZXdXaWxsRW50ZXJcbiAgICogQGRlc2NyaXB0aW9uICAgVXBkYXRlIHZhcmlvdXMgdmFsdWVzIG9uIGNvbXBvbmVudCBpbml0aWFsaXphdGlvblxuICAgKiBAcmV0dXJucyAgICAgICB7dm9pZH1cbiAgICovXG4gIGlvblZpZXdEaWRFbnRlcigpOiB2b2lkIHtcbiAgICB0aGlzLmNvbW1zU2VudENvdW50ID0gMDtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgbmdPbkNoYW5nZXNcbiAgICogQGRlc2NyaXB0aW9uICAgVXBkYXRlIHZhcmlvdXMgdmFsdWVzIG9uIGlucHV0IGNoYW5nZXNcbiAgICogQHJldHVybnMgICAgICAge3ZvaWR9XG4gICAqL1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8tLS0gVmFsdWUgdG8gdmVyaWZ5XG4gICAgaWYgKFxuICAgICAgY2hhbmdlc1sndmFsdWVUb1ZlcmlmeSddPy5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXNbJ3ZhbHVlVG9WZXJpZnknXT8ucHJldmlvdXNWYWx1ZSB8fFxuICAgICAgY2hhbmdlc1snY29kZSddPy5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXNbJ2NvZGUnXT8ucHJldmlvdXNWYWx1ZVxuICAgICkge1xuICAgICAgdGhpcy5jb21tc1NlbnRDb3VudCA9IDA7XG4gICAgICB0aGlzLnZhbGlkYXRpb25Db2RlRXJyb3IgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVzZXRBbGxJbnB1dEZpZWxkcygpO1xuICAgIH1cblxuICAgIC8vLS0tIFN0YXR1cyBkaXNwbGF5XG4gICAgaWYgKGNoYW5nZXNbJ3N0YXR1cyddKSB7XG4gICAgICB0aGlzLnN0YXR1c1N1YiQgPSAoY2hhbmdlc1snc3RhdHVzJ10uY3VycmVudFZhbHVlIGFzIEJlaGF2aW9yU3ViamVjdDwnaW5pdGlhbCcgfCAnaW52YWxpZCc+KS5zdWJzY3JpYmUoKHN0YXQpID0+IHtcbiAgICAgICAgaWYgKHN0YXQgPT09ICdpbnZhbGlkJykge1xuICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkNvZGVFcnJvciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXNldEFsbElucHV0RmllbGRzKCk7XG4gICAgICAgIHRoaXMuc2V0Rm9jdXNUb05leHQoMCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIHJlc2VuZFZlcmlmaWNhdGlvbkNvZGVcbiAgICogQGRlc2NyaXB0aW9uICAgUmVzZW5kIGEgdmVyaWZpY2F0aW9uIGNvZGVcbiAgICogQHJldHVybnMgICAgICAge3ZvaWR9XG4gICAqL1xuICByZXNlbmRWZXJpZmljYXRpb25Db2RlKCk6IHZvaWQge1xuICAgIHRoaXMuY29tbXNTZW50Q291bnQrKztcbiAgICB0aGlzLnJlc2VuZENsaWNrRXZlbnQuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgZm9ybXVsYXRlQW5kQ2hlY2tWZXJpZmljYXRpb25Db2RlXG4gICAqIEBkZXNjcmlwdGlvbiAgIEhhbmRsZSBpbnB1dHMgYXNzb2NpYXRlZCB3aXRoIHRoZSB2ZXJpZmljYXRpb24gY29kZSBhbmQgZG8gY2FsbCBvbmNlIGNvZGUgaXMgY29tcGxldGVcbiAgICogQHBhcmFtICAgICAgICAge0lucHV0Q3VzdG9tRXZlbnR9IGV2ZW50XG4gICAqIEBwYXJhbSAgICAgICAgIHtudW1iZXJ9IGluZGV4XG4gICAqIEByZXR1cm5zICAgICAgIHt2b2lkfVxuICAgKi9cbiAgZm9ybXVsYXRlQW5kQ2hlY2tWZXJpZmljYXRpb25Db2RlKGV2ZW50OiBJbnB1dEN1c3RvbUV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSBldmVudC5kZXRhaWwudmFsdWU7XG4gICAgaWYgKCF2YWx1ZSB8fCAhKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHx8ICEoK3ZhbHVlIDwgMTApKSB7XG4gICAgICB0aGlzLmNsZWFyQ29kZUlucHV0KGluZGV4KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldEZvY3VzVG9OZXh0KGluZGV4KTtcbiAgICB0aGlzLnZlcmlmaWNhdGlvbkNvZGVJbnB1dEFycltpbmRleCAtIDFdID0gK3ZhbHVlO1xuICAgIHRoaXMudmFsaWRhdGlvbkNvZGVFcnJvciA9IGZhbHNlO1xuXG4gICAgLy8tLS0gQ2hlY2sgaWYgY29kZSBjb21wbGV0ZWRcbiAgICBpZiAodGhpcy52ZXJpZmljYXRpb25Db2RlSW5wdXRBcnIuZXZlcnkoKHZhbCkgPT4gdmFsICE9PSBudWxsKSkge1xuICAgICAgdGhpcy52YWxpZGF0aW9uQ29kZSA9IHRoaXMudmVyaWZpY2F0aW9uQ29kZUlucHV0QXJyLmpvaW4oJycpO1xuICAgICAgdGhpcy5vdXRjb21lLmVtaXQodGhpcy52YWxpZGF0aW9uQ29kZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICByZXNldEFsbElucHV0RmllbGRzXG4gICAqIEBkZXNjcmlwdGlvbiAgIFJlc2V0IGFsbCBpbnB1dCBmaWVsZHNcbiAgICogQHJldHVybnMgICAgICAge3ZvaWR9XG4gICAqL1xuICBwcml2YXRlIHJlc2V0QWxsSW5wdXRGaWVsZHMoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhckNvZGVJbnB1dCgxKTtcbiAgICB0aGlzLmNsZWFyQ29kZUlucHV0KDIpO1xuICAgIHRoaXMuY2xlYXJDb2RlSW5wdXQoMyk7XG4gICAgdGhpcy5jbGVhckNvZGVJbnB1dCg0KTtcbiAgICB0aGlzLmNsZWFyQ29kZUlucHV0KDUpO1xuICAgIHRoaXMudmVyaWZpY2F0aW9uQ29kZUlucHV0QXJyLmZpbGwobnVsbCk7XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIHNldEZvY3VzVG9OZXh0XG4gICAqIEBkZXNjcmlwdGlvbiAgIFNldCB0aGUgZm9jdXMgdG8gdGhlIG5leHQgaW5wdXRcbiAgICogQHBhcmFtICAgICAgICAge251bWJlcn0gY3VycmVudEluZGV4XG4gICAqIEByZXR1cm5zICAgICAgIHt2b2lkfVxuICAgKi9cbiAgcHJpdmF0ZSBzZXRGb2N1c1RvTmV4dChjdXJyZW50SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChjdXJyZW50SW5kZXggPT09IDUpIHJldHVybjtcbiAgICBjdXJyZW50SW5kZXggPT09IDBcbiAgICAgID8gdGhpcy5teUlucHV0MT8uc2V0Rm9jdXMoKVxuICAgICAgOiBjdXJyZW50SW5kZXggPT09IDFcbiAgICAgID8gdGhpcy5teUlucHV0Mj8uc2V0Rm9jdXMoKVxuICAgICAgOiBjdXJyZW50SW5kZXggPT09IDJcbiAgICAgID8gdGhpcy5teUlucHV0Mz8uc2V0Rm9jdXMoKVxuICAgICAgOiBjdXJyZW50SW5kZXggPT09IDNcbiAgICAgID8gdGhpcy5teUlucHV0ND8uc2V0Rm9jdXMoKVxuICAgICAgOiB0aGlzLm15SW5wdXQ1Py5zZXRGb2N1cygpO1xuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBjbGVhckNvZGVJbnB1dFxuICAgKiBAZGVzY3JpcHRpb24gICBDbGVhciBhIGNvZGUgaW5wdXQgb24gaW52YWxpZCBrZXlcbiAgICogQHBhcmFtICAgICAgICAge251bWJlcn0gaW5kZXhcbiAgICogQHJldHVybnMgICAgICAge3ZvaWR9XG4gICAqL1xuICBwcml2YXRlIGNsZWFyQ29kZUlucHV0KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGluZGV4KSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIGlmICh0aGlzLm15SW5wdXQxKSB0aGlzLm15SW5wdXQxLnZhbHVlID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGlmICh0aGlzLm15SW5wdXQyKSB0aGlzLm15SW5wdXQyLnZhbHVlID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIGlmICh0aGlzLm15SW5wdXQzKSB0aGlzLm15SW5wdXQzLnZhbHVlID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIGlmICh0aGlzLm15SW5wdXQ0KSB0aGlzLm15SW5wdXQ0LnZhbHVlID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDU6XG4gICAgICAgIGlmICh0aGlzLm15SW5wdXQ1KSB0aGlzLm15SW5wdXQ1LnZhbHVlID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBpb25WaWV3V2lsbExlYXZlXG4gICAqIEBkZXNjcmlwdGlvbiAgIFVuc3Vic2NyaWJlIG9uIGNvbXBvbmVudCBsZWF2ZVxuICAgKiBAcmV0dXJucyAgICAgICB7dm9pZH1cbiAgICovXG4gIGlvblZpZXdXaWxsTGVhdmUoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0dXNTdWIkPy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8aW9uLWdyaWQ+XG4gIDwhLS0gSW5wdXQgYm94ZXMgZm9yIHZlcmlmaWNhdGlvbiBjb2RlIDUgbnVtZXJpYyBkaWdpdHMgLS0+XG4gIDxpb24tcm93IGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICA8aW9uLWNvbCAqbmdJZj1cInZhbGlkYXRpb25Db2RlRXJyb3JcIiBzaXplPVwiYXV0b1wiPlxuICAgICAgPHAgY2xhc3M9XCJib2R5LXNtYWxsIGVycm9yXCIgKm5nRm9yPVwibGV0IHN0cmluZyBvZiB1c2VyRmVlZGJhY2tNZXNzYWdlcz8uZXJyb3I/LmVycm9yTWVzc2FnZSB8fCBbJ0ludmFsaWQgQ29kZSAtIFBsZWFzZSBSZXRyeSddXCI+e3sgc3RyaW5nIH19PC9wPlxuICAgICAgPGNmLXNwYWNlciBkZWZhdWx0PVwiMTZcIj48L2NmLXNwYWNlcj5cbiAgICA8L2lvbi1jb2w+XG4gIDwvaW9uLXJvdz5cbiAgPGlvbi1yb3cgY2xhc3M9XCJpb24tanVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsgZXJyb3I6IHZhbGlkYXRpb25Db2RlRXJyb3IgfVwiPlxuICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgI2lucHV0MVxuICAgICAgICAgIGNsYXNzPVwic2luZ2xlLWRpZ2l0LWlucHV0IGlvbi10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICBtYXhsZW5ndGg9XCIxXCJcbiAgICAgICAgICBjbGVhck9uRWRpdD1cInRydWVcIlxuICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgIG1vZGU9XCJtZFwiXG4gICAgICAgICAgKGlvbklucHV0KT1cImZvcm11bGF0ZUFuZENoZWNrVmVyaWZpY2F0aW9uQ29kZSgkZXZlbnQsIDEpXCI+PC9pb24taW5wdXQ+XG4gICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAjaW5wdXQyXG4gICAgICAgICAgY2xhc3M9XCJzaW5nbGUtZGlnaXQtaW5wdXQgaW9uLXRleHQtY2VudGVyXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiXG4gICAgICAgICAgZmlsbD1cIm91dGxpbmVcIlxuICAgICAgICAgIG1heGxlbmd0aD1cIjFcIlxuICAgICAgICAgIGNsZWFyT25FZGl0PVwidHJ1ZVwiXG4gICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgbW9kZT1cIm1kXCJcbiAgICAgICAgICAoaW9uSW5wdXQpPVwiZm9ybXVsYXRlQW5kQ2hlY2tWZXJpZmljYXRpb25Db2RlKCRldmVudCwgMilcIj48L2lvbi1pbnB1dD5cbiAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICNpbnB1dDNcbiAgICAgICAgICBjbGFzcz1cInNpbmdsZS1kaWdpdC1pbnB1dCBpb24tdGV4dC1jZW50ZXJcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcbiAgICAgICAgICBmaWxsPVwib3V0bGluZVwiXG4gICAgICAgICAgbWF4bGVuZ3RoPVwiMVwiXG4gICAgICAgICAgY2xlYXJPbkVkaXQ9XCJ0cnVlXCJcbiAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICAoaW9uSW5wdXQpPVwiZm9ybXVsYXRlQW5kQ2hlY2tWZXJpZmljYXRpb25Db2RlKCRldmVudCwgMylcIj48L2lvbi1pbnB1dD5cbiAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICNpbnB1dDRcbiAgICAgICAgICBjbGFzcz1cInNpbmdsZS1kaWdpdC1pbnB1dCBpb24tdGV4dC1jZW50ZXJcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcbiAgICAgICAgICBmaWxsPVwib3V0bGluZVwiXG4gICAgICAgICAgbWF4bGVuZ3RoPVwiMVwiXG4gICAgICAgICAgY2xlYXJPbkVkaXQ9XCJ0cnVlXCJcbiAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICBtb2RlPVwibWRcIlxuICAgICAgICAgIChpb25JbnB1dCk9XCJmb3JtdWxhdGVBbmRDaGVja1ZlcmlmaWNhdGlvbkNvZGUoJGV2ZW50LCA0KVwiPjwvaW9uLWlucHV0PlxuICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgI2lucHV0NVxuICAgICAgICAgIGNsYXNzPVwic2luZ2xlLWRpZ2l0LWlucHV0IGlvbi10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICBtYXhsZW5ndGg9XCIxXCJcbiAgICAgICAgICBjbGVhck9uRWRpdD1cInRydWVcIlxuICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgIG1vZGU9XCJtZFwiXG4gICAgICAgICAgKGlvbklucHV0KT1cImZvcm11bGF0ZUFuZENoZWNrVmVyaWZpY2F0aW9uQ29kZSgkZXZlbnQsIDUpXCI+PC9pb24taW5wdXQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2lvbi1jb2w+XG4gIDwvaW9uLXJvdz5cbiAgPGlvbi1yb3cgY2xhc3M9XCJpb24tanVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCI+XG4gICAgICA8Y2Ytc3BhY2VyIGRlZmF1bHQ9XCIxNlwiPjwvY2Ytc3BhY2VyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkaW5nXCI+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJjb21tc1NlbnRDb3VudCA8IDNcIiAoY2xpY2spPVwicmVzZW5kVmVyaWZpY2F0aW9uQ29kZSgpXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2YWxpZGF0aW9uQ29kZUVycm9yXCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImJvZHktc21hbGwgaW9uLXRleHQtc3RhcnRcIiAqbmdGb3I9XCJsZXQgc3RyaW5nIG9mIHVzZXJGZWVkYmFja01lc3NhZ2VzPy5lcnJvcj8ucmVzZW5kIHx8IFsnUmVzZW5kIENvZGUnXVwiPlxuICAgICAgICAgICAgICB7eyBzdHJpbmcgfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXZhbGlkYXRpb25Db2RlRXJyb3JcIj5cbiAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgIGNsYXNzPVwiYm9keS1zbWFsbCBpb24tdGV4dC1zdGFydFwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdHJpbmcgb2YgdXNlckZlZWRiYWNrTWVzc2FnZXM/LnN0YW5kYXJkUmVzZW5kIHx8IFsnRGlkbmB0IGdldCBhIGNvZGU/IFBsZWFzZSByZXNlbmQgdGhlIGNvZGUnXVwiPlxuICAgICAgICAgICAgICB7eyBzdHJpbmcgfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21tc1NlbnRDb3VudCA+PSAzXCI+XG4gICAgICAgICAgPHBcbiAgICAgICAgICAgIGNsYXNzPVwiYm9keS1zbWFsbFwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3RyaW5nIG9mIHVzZXJGZWVkYmFja01lc3NhZ2VzPy5saW1pdFJlYWNoZWQgfHwgWydTdGlsbCBzdHJ1Z2dsaW5nIHdpdGggeW91ciBjb2RlPycsICdQbGVhc2UgY29udGFjdCBzdXBwb3J0IGZvciBhc3Npc3RhbmNlJ11cIlxuICAgICAgICAgICAgPnt7IHN0cmluZyB9fTwvcFxuICAgICAgICAgID5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2lvbi1jb2w+XG4gIDwvaW9uLXJvdz5cbiAgPGlvbi1yb3cgY2xhc3M9XCJpb24tanVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCI+XG4gICAgICA8Y2Ytc3Bpbm5lciBbc2l6ZV09XCI1MFwiIFtuZ0NsYXNzXT1cInsgJ2Jsb2NrLWhpZGRlbic6ICFsb2FkaW5nIH1cIj48L2NmLXNwaW5uZXI+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG48L2lvbi1ncmlkPlxuIl19
@@ -19,10 +19,10 @@ export class ButtonLoaderDirective {
19
19
  this.renderer.setStyle(this.elementRef.nativeElement.parentElement, 'position', 'relative');
20
20
  }
21
21
  }
22
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ButtonLoaderDirective, deps: [{ token: i0.TemplateRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
23
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: ButtonLoaderDirective, selector: "[cfButtonLoader]", inputs: { cfButtonLoader: "cfButtonLoader" }, ngImport: i0 });
22
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ButtonLoaderDirective, deps: [{ token: i0.TemplateRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
23
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.4", type: ButtonLoaderDirective, selector: "[cfButtonLoader]", inputs: { cfButtonLoader: "cfButtonLoader" }, ngImport: i0 });
24
24
  }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ButtonLoaderDirective, decorators: [{
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ButtonLoaderDirective, decorators: [{
26
26
  type: Directive,
27
27
  args: [{
28
28
  selector: '[cfButtonLoader]',
@@ -31,11 +31,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
31
31
  type: Input
32
32
  }] } });
33
33
  class SpinnerComponent {
34
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
35
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: SpinnerComponent, selector: "ng-component", ngImport: i0, template: '<div class="loading-spinner"></div>', isInline: true, styles: ["@keyframes spinner{to{transform:rotate(360deg)}}.loading-spinner{position:absolute;top:calc(50% - 1em);left:calc(50% - 1em);width:2em;height:2em;border-radius:50%;border:3px solid var(--cf-app-system-color-outline);border-top-color:var(--cf-app-color-accent);animation:spinner 1s linear infinite}\n"] });
34
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
35
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: SpinnerComponent, selector: "ng-component", ngImport: i0, template: '<div class="loading-spinner"></div>', isInline: true, styles: ["@keyframes spinner{to{transform:rotate(360deg)}}.loading-spinner{position:absolute;top:calc(50% - 1em);left:calc(50% - 1em);width:2em;height:2em;border-radius:50%;border:3px solid var(--cf-app-system-color-outline);border-top-color:var(--cf-app-color-accent);animation:spinner 1s linear infinite}\n"] });
36
36
  }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: SpinnerComponent, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: SpinnerComponent, decorators: [{
38
38
  type: Component,
39
39
  args: [{ template: '<div class="loading-spinner"></div>', styles: ["@keyframes spinner{to{transform:rotate(360deg)}}.loading-spinner{position:absolute;top:calc(50% - 1em);left:calc(50% - 1em);width:2em;height:2em;border-radius:50%;border:3px solid var(--cf-app-system-color-outline);border-top-color:var(--cf-app-color-accent);animation:spinner 1s linear infinite}\n"] }]
40
40
  }] });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWxvYWRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXJlZmlyc3QvbGlicmFyeS9zcmMvbGliL2RpcmVjdGl2ZXMvYnV0dG9uLWxvYWRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUtsSCxNQUFNLE9BQU8scUJBQXFCO0lBS3RCO0lBQ0E7SUFDQTtJQUNBO0lBSlYsWUFDVSxXQUFxQyxFQUNyQyxRQUFtQixFQUNuQixhQUErQixFQUMvQixVQUFtQztRQUhuQyxnQkFBVyxHQUFYLFdBQVcsQ0FBMEI7UUFDckMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7SUFDMUMsQ0FBQztJQU9KLElBQWEsY0FBYyxDQUFDLE9BQWdCO1FBRTFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEQsSUFBSSxPQUFPLEVBQUU7WUFFWCxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBRXJELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDN0Y7SUFDSCxDQUFDO3VHQTNCVSxxQkFBcUI7MkZBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFIakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2lCQUM3QjtnS0FpQmMsY0FBYztzQkFBMUIsS0FBSzs7QUFxQlIsTUF3Qk0sZ0JBQWdCO3VHQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQixvREF2QlYscUNBQXFDOzsyRkF1QjNDLGdCQUFnQjtrQkF4QnJCLFNBQVM7K0JBQ0UscUNBQXFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCdXR0b24gTG9hZGVyIERpcmVjdGl2ZVxuICpcbiAqIEBmaWxlICAgICAgICAgIGJ1dHRvbi1sb2FkZXIuZGlyZWN0aXZlXG4gKiBAZGVzY3JpcHRpb24gICBIVE1MIGRpcmVjdGl2ZSB1c2VkIHRvIGRpc2FibGUgYSBidXR0b24gd2hpbGUgbG9hZGluZ1xuICogQGF1dGhvciAgICAgICAgSmFjcXVlcyBDb2V0emVlXG4gKiBAc2luY2UgICAgICAgICAyMDIyIC0gMDcgLSAyMlxuICogQHVzYWdlICAgICAgICAgQWRkIHRvIGFueSBIVE1MIHRhZzogKmNmQnV0dG9uTG9hZGVyPVwidHJ1ZVwiXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBEaXJlY3RpdmUsIElucHV0LCBSZW5kZXJlcjIsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjZkJ1dHRvbkxvYWRlcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBCdXR0b25Mb2FkZXJEaXJlY3RpdmUge1xuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICBDb25zdHJ1Y3RvclxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICApIHt9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBjZkJ1dHRvbkxvYWRlclxuICAgKiBAZGVzY3JpcHRpb24gICBEaXNwbGF5cyBhIGxvYWRpbmcgb3ZlcmxheSBhbmQgZGlzYWJsZXMgYSBidXR0b25cbiAgICogQHBhcmFtICAgICAgICAge2Jvb2xlYW59IGxvYWRpbmdcbiAgICovXG4gIEBJbnB1dCgpIHNldCBjZkJ1dHRvbkxvYWRlcihsb2FkaW5nOiBib29sZWFuKSB7XG4gICAgLy8tLS0gQ2xlYXIgSFRNTCBjb250YWluZXJcbiAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAvLy0tLSBSZWF0dGFjaCBlbGVtZW50IGFzIGNoaWxkXG4gICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKTtcbiAgICBpZiAobG9hZGluZykge1xuICAgICAgLy8tLS0gQWRkIGxvYWRpbmcgc3Bpbm5lclxuICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChTcGlubmVyQ29tcG9uZW50KTtcbiAgICAgIC8vLS0tIFNldCBwYXJlbnQgY29udGFpbmVyIHBvc2l0aW9uIHRvIHJlbGF0aXZlXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQsICdwb3NpdGlvbicsICdyZWxhdGl2ZScpO1xuICAgIH1cbiAgfVxufVxuXG4vKio9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEBjbGFzcyAgICAgICAgIFNwaW5uZXJDb21wb25lbnRcbiAqIEBkZXNjcmlwdGlvbiAgIFRoZSBzcGlubmVyIGNvbXBvbmVudCB1c2VkIHRvIHJlbmRlciBhbiBpb24tc3Bpbm5lciBvbiB0aGUgYnV0dG9uXG4gKiBAYXV0aG9yICAgICAgICBKYWNxdWVzIENvZXR6ZWVcbiAqIEBzaW5jZSAgICAgICAgIDIwMjIgLSAwNyAtIDIyXG4gKiA9PT09PSAqL1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPVwibG9hZGluZy1zcGlubmVyXCI+PC9kaXY+JyxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgQGtleWZyYW1lcyBzcGlubmVyIHtcbiAgICAgICAgdG8ge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmxvYWRpbmctc3Bpbm5lciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiBjYWxjKDUwJSAtIDFlbSk7XG4gICAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMWVtKTtcbiAgICAgICAgd2lkdGg6IDJlbTtcbiAgICAgICAgaGVpZ2h0OiAyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYm9yZGVyOiAzcHggc29saWQgdmFyKC0tY2YtYXBwLXN5c3RlbS1jb2xvci1vdXRsaW5lKTtcbiAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tY2YtYXBwLWNvbG9yLWFjY2VudCk7XG4gICAgICAgIGFuaW1hdGlvbjogc3Bpbm5lciAxcyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5jbGFzcyBTcGlubmVyQ29tcG9uZW50IHt9XG4iXX0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWxvYWRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXJlZmlyc3QvbGlicmFyeS9zcmMvbGliL2RpcmVjdGl2ZXMvYnV0dG9uLWxvYWRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUtsSCxNQUFNLE9BQU8scUJBQXFCO0lBS3RCO0lBQ0E7SUFDQTtJQUNBO0lBSlYsWUFDVSxXQUFxQyxFQUNyQyxRQUFtQixFQUNuQixhQUErQixFQUMvQixVQUFtQztRQUhuQyxnQkFBVyxHQUFYLFdBQVcsQ0FBMEI7UUFDckMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7SUFDMUMsQ0FBQztJQU9KLElBQWEsY0FBYyxDQUFDLE9BQWdCO1FBRTFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUVaLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFFckQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM5RixDQUFDO0lBQ0gsQ0FBQzt1R0EzQlUscUJBQXFCOzJGQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtpQkFDN0I7Z0tBaUJjLGNBQWM7c0JBQTFCLEtBQUs7O0FBcUJSLE1Bd0JNLGdCQUFnQjt1R0FBaEIsZ0JBQWdCOzJGQUFoQixnQkFBZ0Isb0RBdkJWLHFDQUFxQzs7MkZBdUIzQyxnQkFBZ0I7a0JBeEJyQixTQUFTOytCQUNFLHFDQUFxQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQnV0dG9uIExvYWRlciBEaXJlY3RpdmVcbiAqXG4gKiBAZmlsZSAgICAgICAgICBidXR0b24tbG9hZGVyLmRpcmVjdGl2ZVxuICogQGRlc2NyaXB0aW9uICAgSFRNTCBkaXJlY3RpdmUgdXNlZCB0byBkaXNhYmxlIGEgYnV0dG9uIHdoaWxlIGxvYWRpbmdcbiAqIEBhdXRob3IgICAgICAgIEphY3F1ZXMgQ29ldHplZVxuICogQHNpbmNlICAgICAgICAgMjAyMiAtIDA3IC0gMjJcbiAqIEB1c2FnZSAgICAgICAgIEFkZCB0byBhbnkgSFRNTCB0YWc6ICpjZkJ1dHRvbkxvYWRlcj1cInRydWVcIlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRGlyZWN0aXZlLCBJbnB1dCwgUmVuZGVyZXIyLCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY2ZCdXR0b25Mb2FkZXJdJyxcbn0pXG5leHBvcnQgY2xhc3MgQnV0dG9uTG9hZGVyRGlyZWN0aXZlIHtcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgQ29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgKSB7fVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgY2ZCdXR0b25Mb2FkZXJcbiAgICogQGRlc2NyaXB0aW9uICAgRGlzcGxheXMgYSBsb2FkaW5nIG92ZXJsYXkgYW5kIGRpc2FibGVzIGEgYnV0dG9uXG4gICAqIEBwYXJhbSAgICAgICAgIHtib29sZWFufSBsb2FkaW5nXG4gICAqL1xuICBASW5wdXQoKSBzZXQgY2ZCdXR0b25Mb2FkZXIobG9hZGluZzogYm9vbGVhbikge1xuICAgIC8vLS0tIENsZWFyIEhUTUwgY29udGFpbmVyXG4gICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gICAgLy8tLS0gUmVhdHRhY2ggZWxlbWVudCBhcyBjaGlsZFxuICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XG4gICAgaWYgKGxvYWRpbmcpIHtcbiAgICAgIC8vLS0tIEFkZCBsb2FkaW5nIHNwaW5uZXJcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoU3Bpbm5lckNvbXBvbmVudCk7XG4gICAgICAvLy0tLSBTZXQgcGFyZW50IGNvbnRhaW5lciBwb3NpdGlvbiB0byByZWxhdGl2ZVxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LCAncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBAY2xhc3MgICAgICAgICBTcGlubmVyQ29tcG9uZW50XG4gKiBAZGVzY3JpcHRpb24gICBUaGUgc3Bpbm5lciBjb21wb25lbnQgdXNlZCB0byByZW5kZXIgYW4gaW9uLXNwaW5uZXIgb24gdGhlIGJ1dHRvblxuICogQGF1dGhvciAgICAgICAgSmFjcXVlcyBDb2V0emVlXG4gKiBAc2luY2UgICAgICAgICAyMDIyIC0gMDcgLSAyMlxuICogPT09PT0gKi9cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiAnPGRpdiBjbGFzcz1cImxvYWRpbmctc3Bpbm5lclwiPjwvZGl2PicsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIEBrZXlmcmFtZXMgc3Bpbm5lciB7XG4gICAgICAgIHRvIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5sb2FkaW5nLXNwaW5uZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogY2FsYyg1MCUgLSAxZW0pO1xuICAgICAgICBsZWZ0OiBjYWxjKDUwJSAtIDFlbSk7XG4gICAgICAgIHdpZHRoOiAyZW07XG4gICAgICAgIGhlaWdodDogMmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJvcmRlcjogM3B4IHNvbGlkIHZhcigtLWNmLWFwcC1zeXN0ZW0tY29sb3Itb3V0bGluZSk7XG4gICAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLWNmLWFwcC1jb2xvci1hY2NlbnQpO1xuICAgICAgICBhbmltYXRpb246IHNwaW5uZXIgMXMgbGluZWFyIGluZmluaXRlO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuY2xhc3MgU3Bpbm5lckNvbXBvbmVudCB7fVxuIl19
@@ -21,8 +21,8 @@ import { SpinnerComponent } from './components/spinner/spinner.component';
21
21
  import { VerificationCodeComponent } from './components/verification-code/verification-code.component';
22
22
  import * as i0 from "@angular/core";
23
23
  export class CareFirstLibraryModule {
24
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: CareFirstLibraryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
25
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.9", ngImport: i0, type: CareFirstLibraryModule, declarations: [PageComponent,
24
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CareFirstLibraryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
25
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: CareFirstLibraryModule, declarations: [PageComponent,
26
26
  ButtonComponent,
27
27
  SpacerComponent,
28
28
  IconComponent,
@@ -55,9 +55,9 @@ export class CareFirstLibraryModule {
55
55
  BadgeComponent,
56
56
  SpinnerComponent,
57
57
  VerificationCodeComponent] });
58
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: CareFirstLibraryModule, imports: [IonicModule, CommonModule, ReactiveFormsModule] });
58
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CareFirstLibraryModule, imports: [IonicModule, CommonModule, ReactiveFormsModule] });
59
59
  }
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: CareFirstLibraryModule, decorators: [{
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CareFirstLibraryModule, decorators: [{
61
61
  type: NgModule,
62
62
  args: [{
63
63
  declarations: [
@@ -31,4 +31,4 @@ export function validateNumberValue(changes, attribute, curVal) {
31
31
  }
32
32
  return undefined;
33
33
  }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXJlZmlyc3QvbGlicmFyeS9zcmMvbGliL3V0aWxzL2F0dHJpYnV0ZS51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1CQSxNQUFNLFVBQVUsbUJBQW1CLENBQUMsT0FBc0IsRUFBRSxTQUFpQixFQUFFLE1BQWU7SUFDNUYsSUFBSSxDQUFDLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQztRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQzNDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxZQUFZLENBQUM7SUFDdEQsSUFBSSxPQUFPLFlBQVksS0FBSyxTQUFTLEVBQUU7UUFDckMsT0FBTyxZQUFZLENBQUM7S0FDckI7U0FBTSxJQUFJLE9BQU8sWUFBWSxLQUFLLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUU7UUFDbEYsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQVdELE1BQU0sVUFBVSxtQkFBbUIsQ0FBSSxPQUFzQixFQUFFLFNBQWlCLEVBQUUsT0FBWSxFQUFFLE1BQXFCO0lBQ25ILElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUM7UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUMzQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsWUFBWSxDQUFDO0lBQ3RELElBQUksWUFBWSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUU7UUFDbEQsT0FBTyxZQUFpQixDQUFDO0tBQzFCO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQVVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxPQUFzQixFQUFFLFNBQWlCLEVBQUUsTUFBMEI7SUFDdkcsSUFBSSxDQUFDLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQztRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQzNDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxZQUFZLENBQUM7SUFDdEQsSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRLElBQUksWUFBWSxJQUFJLENBQUMsRUFBRTtRQUN6RCxPQUFPLFlBQVksQ0FBQztLQUNyQjtTQUFNLElBQUksT0FBTyxZQUFZLEtBQUssUUFBUSxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsRUFBRTtRQUNqRSxPQUFPLENBQUMsWUFBWSxDQUFDO0tBQ3RCO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXR0cmlidXRlIFV0aWxpdHlcbiAqXG4gKiBAZmlsZSAgICAgICAgICBhdHRyaWJ1dGUudXRpbFxuICogQGRlc2NyaXB0aW9uICAgQ29udGFpbnMgdmFyaW91cyB1dGlsaXR5IGZ1bmN0aW9ucyBwZXJ0YWluaW5nIHRvIGF0dHJpYnV0ZSBoYW5kbGluZ1xuICogQGF1dGhvciAgICAgICAgSmFjcXVlcyBDb2V0emVlXG4gKiBAc2luY2UgICAgICAgICAyMDIzIC0gMTEgLSAwOFxuICovXG5cbmltcG9ydCB0eXBlIHsgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBAbmFtZSAgICAgICAgICBjaGVja1RydXRoQXR0cmlidXRlXG4gKiBAZGVzY3JpcHRpb24gICBDaGVjayB3aGV0aGVyIGFuIGF0dHJpYnV0ZSBpcyBlaXRoZXIganVzdCBhdmFpbGFibGUgb3Igc3BlY2lmaWNhbGx5IHNldCB0byBib29sZWFuIHZhbHVlXG4gKiBAcGFyYW0gICAgICAgICB7U2ltcGxlQ2hhbmdlc30gY2hhbmdlc1xuICogQHBhcmFtICAgICAgICAge3N0cmluZ30gYXR0cmlidXRlXG4gKiBAcGFyYW0gICAgICAgICB7Ym9vbGVhbn0gY3VyVmFsXG4gKiBAcmV0dXJucyAgICAgICB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrVHJ1dGhBdHRyaWJ1dGUoY2hhbmdlczogU2ltcGxlQ2hhbmdlcywgYXR0cmlidXRlOiBzdHJpbmcsIGN1clZhbDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICBpZiAoIShhdHRyaWJ1dGUgaW4gY2hhbmdlcykpIHJldHVybiBjdXJWYWw7XG4gIGNvbnN0IHZhbHVlQ2hhbmdlZCA9IGNoYW5nZXNbYXR0cmlidXRlXT8uY3VycmVudFZhbHVlO1xuICBpZiAodHlwZW9mIHZhbHVlQ2hhbmdlZCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgcmV0dXJuIHZhbHVlQ2hhbmdlZDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWVDaGFuZ2VkID09PSAnc3RyaW5nJyAmJiBbJ3RydWUnLCAnJ10uaW5jbHVkZXModmFsdWVDaGFuZ2VkKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQG5hbWUgICAgICAgICAgdmFsaWRhdGVTdHJpbmdWYWx1ZVxuICogQGRlc2NyaXB0aW9uICAgVmFsaWRhdGUgd2hldGhlciBhbiBhdHRyaWJ1dGUgaXMgc2V0IGFuZCBjb250YWlucyBhIHNwZWNpZmljIHN0cmluZyBvcHRpb25cbiAqIEBwYXJhbSAgICAgICAgIHtTaW1wbGVDaGFuZ2VzfSBjaGFuZ2VzXG4gKiBAcGFyYW0gICAgICAgICB7c3RyaW5nfSBhdHRyaWJ1dGVcbiAqIEBwYXJhbSAgICAgICAgIHtzdHJpbmdbXX0gb3B0aW9uc1xuICogQHBhcmFtICAgICAgICAge1QgfCB1bmRlZmluZWR9IGN1clZhbFxuICogQHJldHVybnMgICAgICAge3N0cmluZyB8IHVuZGVmaW5lZH0gUmV0dXJucyBjb3JyZWN0IHN0cmluZyB2YWx1ZSBvciB1bmRlZmluZWQgaWYgZWl0aGVyIG5vdCBhdmFpbGFibGUgb3Igbm90IGluIGxpc3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU3RyaW5nVmFsdWU8VD4oY2hhbmdlczogU2ltcGxlQ2hhbmdlcywgYXR0cmlidXRlOiBzdHJpbmcsIG9wdGlvbnM6IFRbXSwgY3VyVmFsOiBUIHwgdW5kZWZpbmVkKTogVCB8IHVuZGVmaW5lZCB7XG4gIGlmICghKGF0dHJpYnV0ZSBpbiBjaGFuZ2VzKSkgcmV0dXJuIGN1clZhbDtcbiAgY29uc3QgdmFsdWVDaGFuZ2VkID0gY2hhbmdlc1thdHRyaWJ1dGVdPy5jdXJyZW50VmFsdWU7XG4gIGlmICh2YWx1ZUNoYW5nZWQgJiYgb3B0aW9ucy5pbmNsdWRlcyh2YWx1ZUNoYW5nZWQpKSB7XG4gICAgcmV0dXJuIHZhbHVlQ2hhbmdlZCBhcyBUO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEBuYW1lICAgICAgICAgIHZhbGlkYXRlTnVtYmVyVmFsdWVcbiAqIEBkZXNjcmlwdGlvbiAgIFZhbGlkYXRlIHdoZXRoZXIgYW4gYXR0cmlidXRlIGlzIHNldCBhbmQgY29udGFpbnMgYSBzcGVjaWZpYyBudW1iZXIgdmFsdWVcbiAqIEBwYXJhbSAgICAgICAgIHtTaW1wbGVDaGFuZ2VzfSBjaGFuZ2VzXG4gKiBAcGFyYW0gICAgICAgICB7c3RyaW5nfSBhdHRyaWJ1dGVcbiAqIEBwYXJhbSAgICAgICAgIHtudW1iZXIgfCB1bmRlZmluZWR9IGN1clZhbFxuICogQHJldHVybnMgICAgICAge251bWJlciB8IHVuZGVmaW5lZH0gUmV0dXJucyBjb3JyZWN0IG51bWJlciB2YWx1ZSBvciB1bmRlZmluZWQgaWYgZWl0aGVyIG5vdCBhdmFpbGFibGUgb3Igbm90IGEgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZU51bWJlclZhbHVlKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMsIGF0dHJpYnV0ZTogc3RyaW5nLCBjdXJWYWw6IG51bWJlciB8IHVuZGVmaW5lZCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGlmICghKGF0dHJpYnV0ZSBpbiBjaGFuZ2VzKSkgcmV0dXJuIGN1clZhbDtcbiAgY29uc3QgdmFsdWVDaGFuZ2VkID0gY2hhbmdlc1thdHRyaWJ1dGVdPy5jdXJyZW50VmFsdWU7XG4gIGlmICh0eXBlb2YgdmFsdWVDaGFuZ2VkID09PSAnbnVtYmVyJyAmJiB2YWx1ZUNoYW5nZWQgPj0gMCkge1xuICAgIHJldHVybiB2YWx1ZUNoYW5nZWQ7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlQ2hhbmdlZCA9PT0gJ3N0cmluZycgJiYgK3ZhbHVlQ2hhbmdlZCA+PSAwKSB7XG4gICAgcmV0dXJuICt2YWx1ZUNoYW5nZWQ7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXJlZmlyc3QvbGlicmFyeS9zcmMvbGliL3V0aWxzL2F0dHJpYnV0ZS51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1CQSxNQUFNLFVBQVUsbUJBQW1CLENBQUMsT0FBc0IsRUFBRSxTQUFpQixFQUFFLE1BQWU7SUFDNUYsSUFBSSxDQUFDLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQztRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQzNDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxZQUFZLENBQUM7SUFDdEQsSUFBSSxPQUFPLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN0QyxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO1NBQU0sSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDbkYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBV0QsTUFBTSxVQUFVLG1CQUFtQixDQUFJLE9BQXNCLEVBQUUsU0FBaUIsRUFBRSxPQUFZLEVBQUUsTUFBcUI7SUFDbkgsSUFBSSxDQUFDLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQztRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQzNDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxZQUFZLENBQUM7SUFDdEQsSUFBSSxZQUFZLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQ25ELE9BQU8sWUFBaUIsQ0FBQztJQUMzQixDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQVVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxPQUFzQixFQUFFLFNBQWlCLEVBQUUsTUFBMEI7SUFDdkcsSUFBSSxDQUFDLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQztRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQzNDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxZQUFZLENBQUM7SUFDdEQsSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRLElBQUksWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzFELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7U0FBTSxJQUFJLE9BQU8sWUFBWSxLQUFLLFFBQVEsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNsRSxPQUFPLENBQUMsWUFBWSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBdHRyaWJ1dGUgVXRpbGl0eVxuICpcbiAqIEBmaWxlICAgICAgICAgIGF0dHJpYnV0ZS51dGlsXG4gKiBAZGVzY3JpcHRpb24gICBDb250YWlucyB2YXJpb3VzIHV0aWxpdHkgZnVuY3Rpb25zIHBlcnRhaW5pbmcgdG8gYXR0cmlidXRlIGhhbmRsaW5nXG4gKiBAYXV0aG9yICAgICAgICBKYWNxdWVzIENvZXR6ZWVcbiAqIEBzaW5jZSAgICAgICAgIDIwMjMgLSAxMSAtIDA4XG4gKi9cblxuaW1wb3J0IHR5cGUgeyBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEBuYW1lICAgICAgICAgIGNoZWNrVHJ1dGhBdHRyaWJ1dGVcbiAqIEBkZXNjcmlwdGlvbiAgIENoZWNrIHdoZXRoZXIgYW4gYXR0cmlidXRlIGlzIGVpdGhlciBqdXN0IGF2YWlsYWJsZSBvciBzcGVjaWZpY2FsbHkgc2V0IHRvIGJvb2xlYW4gdmFsdWVcbiAqIEBwYXJhbSAgICAgICAgIHtTaW1wbGVDaGFuZ2VzfSBjaGFuZ2VzXG4gKiBAcGFyYW0gICAgICAgICB7c3RyaW5nfSBhdHRyaWJ1dGVcbiAqIEBwYXJhbSAgICAgICAgIHtib29sZWFufSBjdXJWYWxcbiAqIEByZXR1cm5zICAgICAgIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tUcnV0aEF0dHJpYnV0ZShjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzLCBhdHRyaWJ1dGU6IHN0cmluZywgY3VyVmFsOiBib29sZWFuKTogYm9vbGVhbiB7XG4gIGlmICghKGF0dHJpYnV0ZSBpbiBjaGFuZ2VzKSkgcmV0dXJuIGN1clZhbDtcbiAgY29uc3QgdmFsdWVDaGFuZ2VkID0gY2hhbmdlc1thdHRyaWJ1dGVdPy5jdXJyZW50VmFsdWU7XG4gIGlmICh0eXBlb2YgdmFsdWVDaGFuZ2VkID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gdmFsdWVDaGFuZ2VkO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZUNoYW5nZWQgPT09ICdzdHJpbmcnICYmIFsndHJ1ZScsICcnXS5pbmNsdWRlcyh2YWx1ZUNoYW5nZWQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBAbmFtZSAgICAgICAgICB2YWxpZGF0ZVN0cmluZ1ZhbHVlXG4gKiBAZGVzY3JpcHRpb24gICBWYWxpZGF0ZSB3aGV0aGVyIGFuIGF0dHJpYnV0ZSBpcyBzZXQgYW5kIGNvbnRhaW5zIGEgc3BlY2lmaWMgc3RyaW5nIG9wdGlvblxuICogQHBhcmFtICAgICAgICAge1NpbXBsZUNoYW5nZXN9IGNoYW5nZXNcbiAqIEBwYXJhbSAgICAgICAgIHtzdHJpbmd9IGF0dHJpYnV0ZVxuICogQHBhcmFtICAgICAgICAge3N0cmluZ1tdfSBvcHRpb25zXG4gKiBAcGFyYW0gICAgICAgICB7VCB8IHVuZGVmaW5lZH0gY3VyVmFsXG4gKiBAcmV0dXJucyAgICAgICB7c3RyaW5nIHwgdW5kZWZpbmVkfSBSZXR1cm5zIGNvcnJlY3Qgc3RyaW5nIHZhbHVlIG9yIHVuZGVmaW5lZCBpZiBlaXRoZXIgbm90IGF2YWlsYWJsZSBvciBub3QgaW4gbGlzdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTdHJpbmdWYWx1ZTxUPihjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzLCBhdHRyaWJ1dGU6IHN0cmluZywgb3B0aW9uczogVFtdLCBjdXJWYWw6IFQgfCB1bmRlZmluZWQpOiBUIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCEoYXR0cmlidXRlIGluIGNoYW5nZXMpKSByZXR1cm4gY3VyVmFsO1xuICBjb25zdCB2YWx1ZUNoYW5nZWQgPSBjaGFuZ2VzW2F0dHJpYnV0ZV0/LmN1cnJlbnRWYWx1ZTtcbiAgaWYgKHZhbHVlQ2hhbmdlZCAmJiBvcHRpb25zLmluY2x1ZGVzKHZhbHVlQ2hhbmdlZCkpIHtcbiAgICByZXR1cm4gdmFsdWVDaGFuZ2VkIGFzIFQ7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQG5hbWUgICAgICAgICAgdmFsaWRhdGVOdW1iZXJWYWx1ZVxuICogQGRlc2NyaXB0aW9uICAgVmFsaWRhdGUgd2hldGhlciBhbiBhdHRyaWJ1dGUgaXMgc2V0IGFuZCBjb250YWlucyBhIHNwZWNpZmljIG51bWJlciB2YWx1ZVxuICogQHBhcmFtICAgICAgICAge1NpbXBsZUNoYW5nZXN9IGNoYW5nZXNcbiAqIEBwYXJhbSAgICAgICAgIHtzdHJpbmd9IGF0dHJpYnV0ZVxuICogQHBhcmFtICAgICAgICAge251bWJlciB8IHVuZGVmaW5lZH0gY3VyVmFsXG4gKiBAcmV0dXJucyAgICAgICB7bnVtYmVyIHwgdW5kZWZpbmVkfSBSZXR1cm5zIGNvcnJlY3QgbnVtYmVyIHZhbHVlIG9yIHVuZGVmaW5lZCBpZiBlaXRoZXIgbm90IGF2YWlsYWJsZSBvciBub3QgYSBudW1iZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTnVtYmVyVmFsdWUoY2hhbmdlczogU2ltcGxlQ2hhbmdlcywgYXR0cmlidXRlOiBzdHJpbmcsIGN1clZhbDogbnVtYmVyIHwgdW5kZWZpbmVkKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCEoYXR0cmlidXRlIGluIGNoYW5nZXMpKSByZXR1cm4gY3VyVmFsO1xuICBjb25zdCB2YWx1ZUNoYW5nZWQgPSBjaGFuZ2VzW2F0dHJpYnV0ZV0/LmN1cnJlbnRWYWx1ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZUNoYW5nZWQgPT09ICdudW1iZXInICYmIHZhbHVlQ2hhbmdlZCA+PSAwKSB7XG4gICAgcmV0dXJuIHZhbHVlQ2hhbmdlZDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWVDaGFuZ2VkID09PSAnc3RyaW5nJyAmJiArdmFsdWVDaGFuZ2VkID49IDApIHtcbiAgICByZXR1cm4gK3ZhbHVlQ2hhbmdlZDtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuIl19
@@ -110,4 +110,4 @@ export class CFPFormValidators {
110
110
  };
111
111
  }
112
112
  }
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWxpZGF0b3JzLXV0aWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXJlZmlyc3QvbGlicmFyeS9zcmMvbGliL3V0aWxzL2Zvcm0tdmFsaWRhdG9ycy11dGlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLGlCQUFpQixNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUloQyxNQUFNLE9BQU8saUJBQWlCO0lBUTVCLE1BQU0sQ0FBQyxTQUFTLENBQUMseUJBQWlDO1FBQ2hELE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1lBRTNELE1BQU0sZ0JBQWdCLEdBQTJCLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLHlCQUF5QixDQUFDLElBQUksSUFBSSxDQUFDO1lBR3pHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLO2dCQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztpQkFFdEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO2dCQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0NBQWdDLEVBQUUsQ0FBQztpQkFFOUUsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sRUFBRSxLQUFLLEtBQUssZ0JBQWdCLEVBQUUsS0FBSztnQkFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLENBQUM7WUFFeEgsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0lBUUQsTUFBTSxDQUFDLFVBQVU7UUFDZixPQUFPLENBQUMsT0FBd0IsRUFBMkIs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ICAgICAgICAgIGZvcm0tdmFsaWRhdG9yc1xuICogQGRlc2NyaXB0aW9uICAgVmFyaW91cyBmb3JtIHZhbGlkYXRvcnNcbiAqIEBhdXRob3IgICAgICAgIEphY3F1ZXMgQ29ldHplZVxuICogQHNpbmNlICAgICAgICAgMjAyMiAtIDAxIC0gMjBcbiAqIEB1c2FnZSAgICAgICAgIERpc3BsYXkgXCJlcnJvck1lc3NhZ2VcIiBrZXkgdmFsdWUgYXMgdmFsaWRhdG9yIHJlc3BvbnNlIG1lc3NhZ2VcbiAqL1xuXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgcGFzc3dvcmRWYWxpZGF0b3IgZnJvbSAncGFzc3dvcmQtdmFsaWRhdG9yJztcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQgY3VzdG9tUGFyc2VGb3JtYXQgZnJvbSAnZGF5anMvcGx1Z2luL2N1c3RvbVBhcnNlRm9ybWF0JztcbmRheWpzLmV4dGVuZChjdXN0b21QYXJzZUZvcm1hdCk7XG4vLy0tLSBJbnRlcmZhY2VzXG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgY2xhc3MgQ0ZQRm9ybVZhbGlkYXRvcnMge1xuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGNoZWNrUFNXUmV0eXBlXG4gICAqIEBkZXNjcmlwdGlvbiAgIENoZWNrIGlmIHBhc3N3b3JkcyBtYXRjaFxuICAgKiBAcGFyYW0gICAgICAgICB7c3RyaW5nfSBjb250cm9sTmFtZVRvQ2hlY2tBZ2FpbnN0XG4gICAqIEByZXR1cm5zICAgICAgIHtWYWxpZGF0b3JGbn1cbiAgICogQHVzYWdlICAgICAgICAgRm9ybVZhbGlkYXRvcnMuY29tcGFyZVRvKCdwYXNzd29yZCcpXG4gICAqL1xuICBzdGF0aWMgY29tcGFyZVRvKGNvbnRyb2xOYW1lVG9DaGVja0FnYWluc3Q6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIC8vLS0tIENvbXBhcmUgY29udHJvbHNcbiAgICAgIGNvbnN0IGNvbnRyb2xUb0NoZWNrVG86IEFic3RyYWN0Q29udHJvbCB8IG51bGwgPSBjb250cm9sPy5wYXJlbnQ/LmdldChjb250cm9sTmFtZVRvQ2hlY2tBZ2FpbnN0KSB8fCBudWxsO1xuXG4gICAgICAvLy0tLSBDaGVjayBwcmltYXJ5IGNvbnRyb2wgdmFsdWVcbiAgICAgIGlmICghY29udHJvbFRvQ2hlY2tUbz8udmFsdWUpIHJldHVybiB7IGVycm9yTWVzc2FnZTogYFBhc3N3b3JkIFJlcXVpcmVkYCB9O1xuICAgICAgLy8tLS0gQ2hlY2sgc2Vjb25kYXJ5IGNvbnRyb2wgdmFsdWVcbiAgICAgIGVsc2UgaWYgKCFjb250cm9sLnZhbHVlKSByZXR1cm4geyBlcnJvck1lc3NhZ2U6IGBQYXNzd29yZCBjb25maXJtYXRpb24gcmVxdWlyZWRgIH07XG4gICAgICAvLy0tLSBDb21wYXJlIGNvbnRyb2xzXG4gICAgICBlbHNlIGlmIChjb250cm9sLnZhbHVlICYmIGNvbnRyb2w/LnZhbHVlICE9PSBjb250cm9sVG9DaGVja1RvPy52YWx1ZSkgcmV0dXJuIHsgZXJyb3JNZXNzYWdlOiBgUGFzc3dvcmRzIGRvIG5vdCBtYXRjaGAgfTtcblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgYXNQYXNzd29yZFxuICAgKiBAZGVzY3JpcHRpb24gICBWYWxpZGF0ZSBjb250cm9sIGFzIHBhc3N3b3JkXG4gICAqIEByZXR1cm5zICAgICAgIHtWYWxpZGF0b3JGbn1cbiAgICogQHVzYWdlICAgICAgICAgRm9ybVZhbGlkYXRvcnMuYXNQYXNzd29yZCgpXG4gICAqL1xuICBzdGF0aWMgYXNQYXNzd29yZCgpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCBzY2hlbWEgPSBuZXcgcGFzc3dvcmRWYWxpZGF0b3IoKTtcblxuICAgICAgLy8tLS0gU2V0dXAgcGFzc3dvcmQgcmVxdWlyZW1lbnRzXG4gICAgICBzY2hlbWFcbiAgICAgICAgLy8tLS0gTWluaW11bSBsZW5ndGggOFxuICAgICAgICAuaXMoKVxuICAgICAgICAubWluKDgsICdNaW5pbXVtIG9mIDggY2hhcmFjdGVycycpXG4gICAgICAgIC8vLS0tIE1heGltdW0gbGVuZ3RoIDUwXG4gICAgICAgIC5pcygpXG4gICAgICAgIC5tYXgoMzAsICdNYXhpbXVtIG9mIDMwIGNoYXJhY3RlcnMnKVxuICAgICAgICAvLy0tLSBNdXN0IGhhdmUgdXBwZXJjYXNlIGxldHRlcnNcbiAgICAgICAgLmhhcygpXG4gICAgICAgIC51cHBlcmNhc2UodW5kZWZpbmVkLCAnQXQgbGVhc3Qgb25lIFVQUEVSQ0FTRSBjaGFyYWN0ZXInKVxuICAgICAgICAvLy0tLSBNdXN0IGhhdmUgbG93ZXJjYXNlIGxldHRlcnNcbiAgICAgICAgLmhhcygpXG4gICAgICAgIC5sb3dlcmNhc2UodW5kZWZpbmVkLCAnQXQgbGVhc3Qgb25lIGxvd2VyY2FzZSBjaGFyYWN0ZXInKVxuICAgICAgICAvLy0tLSBNdXN0IGhhdmUgYXQgbGVhc3QgMSBkaWdpdHNcbiAgICAgICAgLmhhcygpXG4gICAgICAgIC5kaWdpdHModW5kZWZpbmVkLCAnQXQgbGVhc3Qgb25lIGRpZ2l0JylcbiAgICAgICAgLy8tLS0gU3BlY2lhbCBjaGFyYWN0ZXJzXG4gICAgICAgIC5oYXMoKVxuICAgICAgICAuc3ltYm9scyh1bmRlZmluZWQsICdBdCBsZWFzdCBvbmUgc3BlY2lhbCBjaGFyYWN0ZXInKTtcblxuICAgICAgLy8tLS0gVmFsaWRhdGUgc3RyaW5nXG4gICAgICBjb25zdCBpblZhbGlkID0gc2NoZW1hLnZhbGlkYXRlKGNvbnRyb2wudmFsdWUsIHsgZGV0YWlsczogdHJ1ZSB9KSBhcyB7XG4gICAgICAgIHZhbGlkYXRpb246IHN0cmluZztcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgICAgICBhcmd1bWVudHM/OiBudW1iZXI7XG4gICAgICB9W107XG5cbiAgICAgIGNvbnN0IHJldHVyblJlc3BvbnNlOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSA9IHt9O1xuICAgICAgaW5WYWxpZC5mb3JFYWNoKChlcnJvcikgPT4ge1xuICAgICAgICByZXR1cm5SZXNwb25zZVsncGFzc3dvcmQtJyArIGVycm9yLnZhbGlkYXRpb25dID0gZXJyb3IubWVzc2FnZTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGluVmFsaWQubGVuZ3RoID8gcmV0dXJuUmVzcG9uc2UgOiBudWxsO1xuICAgIH07XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGFzRW1haWxcbiAgICogQGRlc2NyaXB0aW9uICAgVmFsaWRhdGUgY29udHJvbCBhcyBlbWFpbFxuICAgKiBAcGFyYW0gICAgICAgICB7dHJ1ZX0gY2FuQmVFbXB0eVxuICAgKiBAcmV0dXJucyAgICAgICB7VmFsaWRhdG9yRm59XG4gICAqIEB1c2FnZSAgICAgICAgIEZvcm1WYWxpZGF0b3JzLmFzRW1haWwodHJ1ZT8pXG4gICAqL1xuICBzdGF0aWMgYXNFbWFpbChjYW5CZUVtcHR5PzogdHJ1ZSk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGxldCBzZXRFcnJvcnMgPSBudWxsO1xuICAgICAgY29uc3QgZW1haWxSZWdFeCA9IG5ldyBSZWdFeHAoJ15bXFxcXHctLl0rQFtcXFxcd10rXFxcXC5bXFxcXHddKycpO1xuXG4gICAgICAvLy0tLSBDaGVjayBpZiBlbWFpbCBjYW4gYmUgZW1wdHlcbiAgICAgIGlmIChjYW5CZUVtcHR5ICYmIChjb250cm9sLnZhbHVlID09PSBudWxsIHx8IGNvbnRyb2wudmFsdWUgPT09ICcnKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8tLS0gVGVzdCBSZWdFeHBcbiAgICAgIGlmICghKGNvbnRyb2wudmFsdWUgJiYgZW1haWxSZWdFeC50ZXN0KGNvbnRyb2wudmFsdWUpKSkge1xuICAgICAgICBzZXRFcnJvcnMgPSB7IGVycm9yTWVzc2FnZTogYE5vdCBhIHZhbGlkIGVtYWlsIGFkZHJlc3NgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZXRFcnJvcnM7XG4gICAgfTtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgaXNJblxuICAgKiBAZGVzY3JpcHRpb24gICBWYWxpZGF0ZSBjb250cm9sIHZhbHVlIGlzIHBhcnQgb2YgYSBnaXZlbiBsaXN0XG4gICAqIEBwYXJhbSAgICAgICAgIHtzdHJpbmcgfCBudW1iZXJbXX0gbGlzdFxuICAgKiBAcmV0dXJucyAgICAgICB7VmFsaWRhdG9yRm59XG4gICAqIEB1c2FnZSAgICAgICAgIEZvcm1WYWxpZGF0b3JzLmlzSW4oKVxuICAgKi9cbiAgc3RhdGljIGlzSW4obGlzdDogKHN0cmluZyB8IG51bWJlcilbXSk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGlmICghbGlzdC5pbmNsdWRlcyhjb250cm9sLnZhbHVlKSkgcmV0dXJuIHsgZXJyb3JNZXNzYWdlOiAnQ29udHJvbCB2YWx1ZSBub3QgcGFydCBvZiBlbGlnaWJsZSB2YWx1ZXMnIH07XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBpc1NBSUROdW1iZXJcbiAgICogQGRlc2NyaXB0aW9uICAgVmFsaWRhdGUgY29udHJvbCB2YWx1ZSBpcyBhIHZhbGlkIFJTQSBJRCBOdW1iZXJcbiAgICogQHBhcmFtICAgICAgICAge3RydWV9IGNhbkJlRW1wdHlcbiAgICogQHJldHVybnMgICAgICAge1ZhbGlkYXRvckZufVxuICAgKiBAdXNhZ2UgICAgICAgICBGb3JtVmFsaWRhdG9ycy5pc1NBSUROdW1iZXIodHJ1ZT8pXG4gICAqL1xuICBzdGF0aWMgaXNTQUlETnVtYmVyKGNhbkJlRW1wdHk/OiB0cnVlKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVEYXRlID0gKCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGNvbnRyb2wudmFsdWUgIT09ICdzdHJpbmcnIHx8IGNvbnRyb2wudmFsdWUubGVuZ3RoIDwgNikgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBtb250aCA9IGNvbnRyb2wudmFsdWUuc2xpY2UoMiwgNCk7XG4gICAgICAgIGNvbnN0IGRheSA9IGNvbnRyb2wudmFsdWUuc2xpY2UoNCwgNik7XG4gICAgICAgIGlmICgrbW9udGggPCAwICYmICttb250aCA+IDEzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICgrZGF5IDwgMCAmJiArZGF5ID4gMzEpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKCFkYXlqcyhjb250cm9sLnZhbHVlLnNsaWNlKDAsIDYpLCAnWVlNTUREJywgdHJ1ZSkuaXNWYWxpZCgpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgY2hlY2tzdW0gPSAoKTogYm9vbGVhbiA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY29udHJvbC52YWx1ZSAhPT0gJ3N0cmluZycgfHwgY29udHJvbC52YWx1ZS5sZW5ndGggIT09IDEzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGxldCBuU3VtID0gMDsgLy8tLS0gVG90YWwgc3VtIG9mIGFsbCB0aGUgdmFsdWVzXG4gICAgICAgIGxldCBpc1NlY29uZCA9IGZhbHNlOyAvLy0tLSBUbyBkb3VibGUgZXZlcnkgb3RoZXIgdmFsdWVcbiAgICAgICAgLy8tLS0gU3RhcnQgZnJvbSB0aGUgZW5kXG4gICAgICAgIGZvciAobGV0IGkgPSBjb250cm9sLnZhbHVlLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgY29uc3QgdmFsOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBjb250cm9sLnZhbHVlW2ldO1xuICAgICAgICAgIGlmICghdmFsKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgLy8tLS0gR2V0IG51bWVyaWNhbCB2YWx1ZSBmcm9tIGFzY2lpIHN0cmluZ1xuICAgICAgICAgIGxldCBkOiBudW1iZXIgPSB2YWwuY2hhckNvZGVBdCgwKSAtICcwJy5jaGFyQ29kZUF0KDApO1xuICAgICAgICAgIC8vLS0tIERvdWJsZSBldmVyeSBvdGhlciB2YWx1ZVxuICAgICAgICAgIGlmIChpc1NlY29uZCA9PSB0cnVlKSBkID0gZCAqIDI7XG4gICAgICAgICAgLy8tLS0gU3VtIHRoZSB0b3RhbCBvZiB0aGUgZG91YmxlZCB2YWx1ZXMgaWYgYXZhaWxhYmxlXG4gICAgICAgICAgblN1bSArPSBNYXRoLmZsb29yKGQgLyAxMCk7XG4gICAgICAgICAgblN1bSArPSBkICUgMTA7XG4gICAgICAgICAgLy8tLS0gSW52ZXJzZSBzZWNvbmQgdG8gZGV0ZXJtaW5lIGV2ZXJ5IG90aGVyIGluZGV4IHZhbHVlXG4gICAgICAgICAgaXNTZWNvbmQgPSAhaXNTZWNvbmQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8tLS0gUmV0dXJuIHRoZSBtb2R1bHVzIDEwIG9mIHRoZSBzdW1tYXRpb25cbiAgICAgICAgcmV0dXJuIG5TdW0gJSAxMCA9PSAwO1xuICAgICAgfTtcblxuICAgICAgbGV0IGVycm9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICAgIGlmIChjYW5CZUVtcHR5ICYmICghY29udHJvbC52YWx1ZSB8fCBjb250cm9sLnZhbHVlPy5sZW5ndGggPT09IDApKSByZXR1cm4gbnVsbDtcbiAgICAgIC8vLS0tIHN0cmluZ1xuICAgICAgZWxzZSBpZiAodHlwZW9mIGNvbnRyb2wudmFsdWUgIT09ICdzdHJpbmcnKSBlcnJvciA9ICdJbnZhbGlkIFJTQSBJRCBOdW1iZXInO1xuICAgICAgLy8tLS0gTGVuZ3RoID0gMTNcbiAgICAgIGVsc2UgaWYgKGNvbnRyb2wudmFsdWUubGVuZ3RoICE9PSAxMykgZXJyb3IgPSBgTGVuZ3RoIHJlcXVpcmVkOiAkezEzIC0gY29udHJvbC52YWx1ZS5sZW5ndGh9YDtcbiAgICAgIC8vLS0tIFZhbGlkYXRlIGRhdGVcbiAgICAgIGVsc2UgaWYgKCF2YWxpZGF0ZURhdGUoKSkgZXJyb3IgPSBgSW52YWxpZCBkYXRlIG9mIGJpcnRoYDtcbiAgICAgIC8vLS0tIENpdGl6ZW5zaGlwXG4gICAgICBlbHNlIGlmICghWycwJywgJzEnXS5pbmNsdWRlcyhjb250cm9sLnZhbHVlLnNsaWNlKDEwLCAxMSkpKSBlcnJvciA9IGBJbnZhbGlkIGNpdGl6ZW5zaGlwIHZhbHVlYDtcbiAgICAgIC8vLS0tIENoZWNrc3VtXG4gICAgICBlbHNlIGlmICghY2hlY2tzdW0oKSkgZXJyb3IgPSBgSW52YWxpZCBSU0EgSUQgbnVtYmVyIGNoZWNrc3VtYDtcblxuICAgICAgcmV0dXJuIGVycm9yID8geyBlcnJvck1lc3NhZ2U6IGVycm9yIH0gOiBudWxsO1xuICAgIH07XG4gIH1cbn1cbiJdfQ==
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWxpZGF0b3JzLXV0aWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXJlZmlyc3QvbGlicmFyeS9zcmMvbGliL3V0aWxzL2Zvcm0tdmFsaWRhdG9ycy11dGlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLGlCQUFpQixNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUloQyxNQUFNLE9BQU8saUJBQWlCO0lBUTVCLE1BQU0sQ0FBQyxTQUFTLENBQUMseUJBQWlDO1FBQ2hELE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1lBRTNELE1BQU0sZ0JBQWdCLEdBQTJCLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLHlCQUF5QixDQUFDLElBQUksSUFBSSxDQUFDO1lBR3pHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLO2dCQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztpQkFFdEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO2dCQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0NBQWdDLEVBQUUsQ0FBQztpQkFFOUUsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sRUFBRSxLQUFLLEtBQUssZ0JBQWdCLEVBQUUsS0FBSztnQkFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLENBQUM7WUFFeEgsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0lBUUQsTUFBTSxDQUFDLFVBQVU7UUFDZixPQUFPLENBQUMsT0FBd0IsRUFBMkIs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IEZvcm0gdmFsaWRhdG9yc1xuICpcbiAqIEBmaWxlICAgICAgICAgIGZvcm0tdmFsaWRhdG9yc1xuICogQGRlc2NyaXB0aW9uICAgVmFyaW91cyBmb3JtIHZhbGlkYXRvcnNcbiAqIEBhdXRob3IgICAgICAgIEphY3F1ZXMgQ29ldHplZVxuICogQHNpbmNlICAgICAgICAgMjAyMiAtIDAxIC0gMjBcbiAqIEB1c2FnZSAgICAgICAgIERpc3BsYXkgXCJlcnJvck1lc3NhZ2VcIiBrZXkgdmFsdWUgYXMgdmFsaWRhdG9yIHJlc3BvbnNlIG1lc3NhZ2VcbiAqL1xuXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgcGFzc3dvcmRWYWxpZGF0b3IgZnJvbSAncGFzc3dvcmQtdmFsaWRhdG9yJztcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQgY3VzdG9tUGFyc2VGb3JtYXQgZnJvbSAnZGF5anMvcGx1Z2luL2N1c3RvbVBhcnNlRm9ybWF0JztcbmRheWpzLmV4dGVuZChjdXN0b21QYXJzZUZvcm1hdCk7XG4vLy0tLSBJbnRlcmZhY2VzXG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgY2xhc3MgQ0ZQRm9ybVZhbGlkYXRvcnMge1xuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGNoZWNrUFNXUmV0eXBlXG4gICAqIEBkZXNjcmlwdGlvbiAgIENoZWNrIGlmIHBhc3N3b3JkcyBtYXRjaFxuICAgKiBAcGFyYW0gICAgICAgICB7c3RyaW5nfSBjb250cm9sTmFtZVRvQ2hlY2tBZ2FpbnN0XG4gICAqIEByZXR1cm5zICAgICAgIHtWYWxpZGF0b3JGbn1cbiAgICogQHVzYWdlICAgICAgICAgRm9ybVZhbGlkYXRvcnMuY29tcGFyZVRvKCdwYXNzd29yZCcpXG4gICAqL1xuICBzdGF0aWMgY29tcGFyZVRvKGNvbnRyb2xOYW1lVG9DaGVja0FnYWluc3Q6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIC8vLS0tIENvbXBhcmUgY29udHJvbHNcbiAgICAgIGNvbnN0IGNvbnRyb2xUb0NoZWNrVG86IEFic3RyYWN0Q29udHJvbCB8IG51bGwgPSBjb250cm9sPy5wYXJlbnQ/LmdldChjb250cm9sTmFtZVRvQ2hlY2tBZ2FpbnN0KSB8fCBudWxsO1xuXG4gICAgICAvLy0tLSBDaGVjayBwcmltYXJ5IGNvbnRyb2wgdmFsdWVcbiAgICAgIGlmICghY29udHJvbFRvQ2hlY2tUbz8udmFsdWUpIHJldHVybiB7IGVycm9yTWVzc2FnZTogYFBhc3N3b3JkIFJlcXVpcmVkYCB9O1xuICAgICAgLy8tLS0gQ2hlY2sgc2Vjb25kYXJ5IGNvbnRyb2wgdmFsdWVcbiAgICAgIGVsc2UgaWYgKCFjb250cm9sLnZhbHVlKSByZXR1cm4geyBlcnJvck1lc3NhZ2U6IGBQYXNzd29yZCBjb25maXJtYXRpb24gcmVxdWlyZWRgIH07XG4gICAgICAvLy0tLSBDb21wYXJlIGNvbnRyb2xzXG4gICAgICBlbHNlIGlmIChjb250cm9sLnZhbHVlICYmIGNvbnRyb2w/LnZhbHVlICE9PSBjb250cm9sVG9DaGVja1RvPy52YWx1ZSkgcmV0dXJuIHsgZXJyb3JNZXNzYWdlOiBgUGFzc3dvcmRzIGRvIG5vdCBtYXRjaGAgfTtcblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgYXNQYXNzd29yZFxuICAgKiBAZGVzY3JpcHRpb24gICBWYWxpZGF0ZSBjb250cm9sIGFzIHBhc3N3b3JkXG4gICAqIEByZXR1cm5zICAgICAgIHtWYWxpZGF0b3JGbn1cbiAgICogQHVzYWdlICAgICAgICAgRm9ybVZhbGlkYXRvcnMuYXNQYXNzd29yZCgpXG4gICAqL1xuICBzdGF0aWMgYXNQYXNzd29yZCgpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCBzY2hlbWEgPSBuZXcgcGFzc3dvcmRWYWxpZGF0b3IoKTtcblxuICAgICAgLy8tLS0gU2V0dXAgcGFzc3dvcmQgcmVxdWlyZW1lbnRzXG4gICAgICBzY2hlbWFcbiAgICAgICAgLy8tLS0gTWluaW11bSBsZW5ndGggOFxuICAgICAgICAuaXMoKVxuICAgICAgICAubWluKDgsICdNaW5pbXVtIG9mIDggY2hhcmFjdGVycycpXG4gICAgICAgIC8vLS0tIE1heGltdW0gbGVuZ3RoIDUwXG4gICAgICAgIC5pcygpXG4gICAgICAgIC5tYXgoMzAsICdNYXhpbXVtIG9mIDMwIGNoYXJhY3RlcnMnKVxuICAgICAgICAvLy0tLSBNdXN0IGhhdmUgdXBwZXJjYXNlIGxldHRlcnNcbiAgICAgICAgLmhhcygpXG4gICAgICAgIC51cHBlcmNhc2UodW5kZWZpbmVkLCAnQXQgbGVhc3Qgb25lIFVQUEVSQ0FTRSBjaGFyYWN0ZXInKVxuICAgICAgICAvLy0tLSBNdXN0IGhhdmUgbG93ZXJjYXNlIGxldHRlcnNcbiAgICAgICAgLmhhcygpXG4gICAgICAgIC5sb3dlcmNhc2UodW5kZWZpbmVkLCAnQXQgbGVhc3Qgb25lIGxvd2VyY2FzZSBjaGFyYWN0ZXInKVxuICAgICAgICAvLy0tLSBNdXN0IGhhdmUgYXQgbGVhc3QgMSBkaWdpdHNcbiAgICAgICAgLmhhcygpXG4gICAgICAgIC5kaWdpdHModW5kZWZpbmVkLCAnQXQgbGVhc3Qgb25lIGRpZ2l0JylcbiAgICAgICAgLy8tLS0gU3BlY2lhbCBjaGFyYWN0ZXJzXG4gICAgICAgIC5oYXMoKVxuICAgICAgICAuc3ltYm9scyh1bmRlZmluZWQsICdBdCBsZWFzdCBvbmUgc3BlY2lhbCBjaGFyYWN0ZXInKTtcblxuICAgICAgLy8tLS0gVmFsaWRhdGUgc3RyaW5nXG4gICAgICBjb25zdCBpblZhbGlkID0gc2NoZW1hLnZhbGlkYXRlKGNvbnRyb2wudmFsdWUsIHsgZGV0YWlsczogdHJ1ZSB9KSBhcyB7XG4gICAgICAgIHZhbGlkYXRpb246IHN0cmluZztcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgICAgICBhcmd1bWVudHM/OiBudW1iZXI7XG4gICAgICB9W107XG5cbiAgICAgIGNvbnN0IHJldHVyblJlc3BvbnNlOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSA9IHt9O1xuICAgICAgaW5WYWxpZC5mb3JFYWNoKChlcnJvcikgPT4ge1xuICAgICAgICByZXR1cm5SZXNwb25zZVsncGFzc3dvcmQtJyArIGVycm9yLnZhbGlkYXRpb25dID0gZXJyb3IubWVzc2FnZTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGluVmFsaWQubGVuZ3RoID8gcmV0dXJuUmVzcG9uc2UgOiBudWxsO1xuICAgIH07XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGFzRW1haWxcbiAgICogQGRlc2NyaXB0aW9uICAgVmFsaWRhdGUgY29udHJvbCBhcyBlbWFpbFxuICAgKiBAcGFyYW0gICAgICAgICB7dHJ1ZX0gY2FuQmVFbXB0eVxuICAgKiBAcmV0dXJucyAgICAgICB7VmFsaWRhdG9yRm59XG4gICAqIEB1c2FnZSAgICAgICAgIEZvcm1WYWxpZGF0b3JzLmFzRW1haWwodHJ1ZT8pXG4gICAqL1xuICBzdGF0aWMgYXNFbWFpbChjYW5CZUVtcHR5PzogdHJ1ZSk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGxldCBzZXRFcnJvcnMgPSBudWxsO1xuICAgICAgY29uc3QgZW1haWxSZWdFeCA9IG5ldyBSZWdFeHAoJ15bXFxcXHctLl0rQFtcXFxcd10rXFxcXC5bXFxcXHddKycpO1xuXG4gICAgICAvLy0tLSBDaGVjayBpZiBlbWFpbCBjYW4gYmUgZW1wdHlcbiAgICAgIGlmIChjYW5CZUVtcHR5ICYmIChjb250cm9sLnZhbHVlID09PSBudWxsIHx8IGNvbnRyb2wudmFsdWUgPT09ICcnKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8tLS0gVGVzdCBSZWdFeHBcbiAgICAgIGlmICghKGNvbnRyb2wudmFsdWUgJiYgZW1haWxSZWdFeC50ZXN0KGNvbnRyb2wudmFsdWUpKSkge1xuICAgICAgICBzZXRFcnJvcnMgPSB7IGVycm9yTWVzc2FnZTogYE5vdCBhIHZhbGlkIGVtYWlsIGFkZHJlc3NgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZXRFcnJvcnM7XG4gICAgfTtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgaXNJblxuICAgKiBAZGVzY3JpcHRpb24gICBWYWxpZGF0ZSBjb250cm9sIHZhbHVlIGlzIHBhcnQgb2YgYSBnaXZlbiBsaXN0XG4gICAqIEBwYXJhbSAgICAgICAgIHtzdHJpbmcgfCBudW1iZXJbXX0gbGlzdFxuICAgKiBAcmV0dXJucyAgICAgICB7VmFsaWRhdG9yRm59XG4gICAqIEB1c2FnZSAgICAgICAgIEZvcm1WYWxpZGF0b3JzLmlzSW4oKVxuICAgKi9cbiAgc3RhdGljIGlzSW4obGlzdDogKHN0cmluZyB8IG51bWJlcilbXSk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGlmICghbGlzdC5pbmNsdWRlcyhjb250cm9sLnZhbHVlKSkgcmV0dXJuIHsgZXJyb3JNZXNzYWdlOiAnQ29udHJvbCB2YWx1ZSBub3QgcGFydCBvZiBlbGlnaWJsZSB2YWx1ZXMnIH07XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBpc1NBSUROdW1iZXJcbiAgICogQGRlc2NyaXB0aW9uICAgVmFsaWRhdGUgY29udHJvbCB2YWx1ZSBpcyBhIHZhbGlkIFJTQSBJRCBOdW1iZXJcbiAgICogQHBhcmFtICAgICAgICAge3RydWV9IGNhbkJlRW1wdHlcbiAgICogQHJldHVybnMgICAgICAge1ZhbGlkYXRvckZufVxuICAgKiBAdXNhZ2UgICAgICAgICBGb3JtVmFsaWRhdG9ycy5pc1NBSUROdW1iZXIodHJ1ZT8pXG4gICAqL1xuICBzdGF0aWMgaXNTQUlETnVtYmVyKGNhbkJlRW1wdHk/OiB0cnVlKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVEYXRlID0gKCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGNvbnRyb2wudmFsdWUgIT09ICdzdHJpbmcnIHx8IGNvbnRyb2wudmFsdWUubGVuZ3RoIDwgNikgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBtb250aCA9IGNvbnRyb2wudmFsdWUuc2xpY2UoMiwgNCk7XG4gICAgICAgIGNvbnN0IGRheSA9IGNvbnRyb2wudmFsdWUuc2xpY2UoNCwgNik7XG4gICAgICAgIGlmICgrbW9udGggPCAwICYmICttb250aCA+IDEzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICgrZGF5IDwgMCAmJiArZGF5ID4gMzEpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKCFkYXlqcyhjb250cm9sLnZhbHVlLnNsaWNlKDAsIDYpLCAnWVlNTUREJywgdHJ1ZSkuaXNWYWxpZCgpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgY2hlY2tzdW0gPSAoKTogYm9vbGVhbiA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY29udHJvbC52YWx1ZSAhPT0gJ3N0cmluZycgfHwgY29udHJvbC52YWx1ZS5sZW5ndGggIT09IDEzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGxldCBuU3VtID0gMDsgLy8tLS0gVG90YWwgc3VtIG9mIGFsbCB0aGUgdmFsdWVzXG4gICAgICAgIGxldCBpc1NlY29uZCA9IGZhbHNlOyAvLy0tLSBUbyBkb3VibGUgZXZlcnkgb3RoZXIgdmFsdWVcbiAgICAgICAgLy8tLS0gU3RhcnQgZnJvbSB0aGUgZW5kXG4gICAgICAgIGZvciAobGV0IGkgPSBjb250cm9sLnZhbHVlLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgY29uc3QgdmFsOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBjb250cm9sLnZhbHVlW2ldO1xuICAgICAgICAgIGlmICghdmFsKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgLy8tLS0gR2V0IG51bWVyaWNhbCB2YWx1ZSBmcm9tIGFzY2lpIHN0cmluZ1xuICAgICAgICAgIGxldCBkOiBudW1iZXIgPSB2YWwuY2hhckNvZGVBdCgwKSAtICcwJy5jaGFyQ29kZUF0KDApO1xuICAgICAgICAgIC8vLS0tIERvdWJsZSBldmVyeSBvdGhlciB2YWx1ZVxuICAgICAgICAgIGlmIChpc1NlY29uZCA9PSB0cnVlKSBkID0gZCAqIDI7XG4gICAgICAgICAgLy8tLS0gU3VtIHRoZSB0b3RhbCBvZiB0aGUgZG91YmxlZCB2YWx1ZXMgaWYgYXZhaWxhYmxlXG4gICAgICAgICAgblN1bSArPSBNYXRoLmZsb29yKGQgLyAxMCk7XG4gICAgICAgICAgblN1bSArPSBkICUgMTA7XG4gICAgICAgICAgLy8tLS0gSW52ZXJzZSBzZWNvbmQgdG8gZGV0ZXJtaW5lIGV2ZXJ5IG90aGVyIGluZGV4IHZhbHVlXG4gICAgICAgICAgaXNTZWNvbmQgPSAhaXNTZWNvbmQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8tLS0gUmV0dXJuIHRoZSBtb2R1bHVzIDEwIG9mIHRoZSBzdW1tYXRpb25cbiAgICAgICAgcmV0dXJuIG5TdW0gJSAxMCA9PSAwO1xuICAgICAgfTtcblxuICAgICAgbGV0IGVycm9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICAgIGlmIChjYW5CZUVtcHR5ICYmICghY29udHJvbC52YWx1ZSB8fCBjb250cm9sLnZhbHVlPy5sZW5ndGggPT09IDApKSByZXR1cm4gbnVsbDtcbiAgICAgIC8vLS0tIHN0cmluZ1xuICAgICAgZWxzZSBpZiAodHlwZW9mIGNvbnRyb2wudmFsdWUgIT09ICdzdHJpbmcnKSBlcnJvciA9ICdJbnZhbGlkIFJTQSBJRCBOdW1iZXInO1xuICAgICAgLy8tLS0gTGVuZ3RoID0gMTNcbiAgICAgIGVsc2UgaWYgKGNvbnRyb2wudmFsdWUubGVuZ3RoICE9PSAxMykgZXJyb3IgPSBgTGVuZ3RoIHJlcXVpcmVkOiAkezEzIC0gY29udHJvbC52YWx1ZS5sZW5ndGh9YDtcbiAgICAgIC8vLS0tIFZhbGlkYXRlIGRhdGVcbiAgICAgIGVsc2UgaWYgKCF2YWxpZGF0ZURhdGUoKSkgZXJyb3IgPSBgSW52YWxpZCBkYXRlIG9mIGJpcnRoYDtcbiAgICAgIC8vLS0tIENpdGl6ZW5zaGlwXG4gICAgICBlbHNlIGlmICghWycwJywgJzEnXS5pbmNsdWRlcyhjb250cm9sLnZhbHVlLnNsaWNlKDEwLCAxMSkpKSBlcnJvciA9IGBJbnZhbGlkIGNpdGl6ZW5zaGlwIHZhbHVlYDtcbiAgICAgIC8vLS0tIENoZWNrc3VtXG4gICAgICBlbHNlIGlmICghY2hlY2tzdW0oKSkgZXJyb3IgPSBgSW52YWxpZCBSU0EgSUQgbnVtYmVyIGNoZWNrc3VtYDtcblxuICAgICAgcmV0dXJuIGVycm9yID8geyBlcnJvck1lc3NhZ2U6IGVycm9yIH0gOiBudWxsO1xuICAgIH07XG4gIH1cbn1cbiJdfQ==