@carefirst/library 2.0.20 → 2.0.22

Sign up to get free protection for your applications and to get access to all the features.
@@ -9,7 +9,7 @@ export class NotificationComponent {
9
9
  data;
10
10
  buttonClick = new EventEmitter();
11
11
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: NotificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", 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\">\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;margin-inline:auto;max-width:640px}#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", "heightMobile", "heightDesktop", "iconColor"] }] });
12
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", 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\">\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;margin-inline:auto;max-width:640px}#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", "heightMobile", "heightDesktop", "iconColor"] }] });
13
13
  }
14
14
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: NotificationComponent, decorators: [{
15
15
  type: Component,
@@ -109,11 +109,11 @@ export class VerificationCodeComponent {
109
109
  this.statusSub$?.unsubscribe();
110
110
  }
111
111
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: VerificationCodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
112
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", 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\n class=\"body-small error ion-text-center\"\n *ngFor=\"let string of userFeedbackMessages?.error?.errorMessage || ['Invalid Code - Please Retry']\"\n >{{ string }}</p\n >\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-center\" *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-center\"\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 ion-text-center\"\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:12px}.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"] }] });
112
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", 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\n class=\"body-small error ion-text-center\"\n *ngFor=\"let string of userFeedbackMessages?.error?.errorMessage || ['Invalid Code - Please Retry']\"\n >{{ string }}</p\n >\n <cf-spacer default=\"16\"></cf-spacer>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col>\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-center\" *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-center\"\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 ion-text-center\"\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;justify-content:space-between}.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"] }] });
113
113
  }
114
114
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: VerificationCodeComponent, decorators: [{
115
115
  type: Component,
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\n class=\"body-small error ion-text-center\"\n *ngFor=\"let string of userFeedbackMessages?.error?.errorMessage || ['Invalid Code - Please Retry']\"\n >{{ string }}</p\n >\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-center\" *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-center\"\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 ion-text-center\"\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:12px}.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"] }]
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\n class=\"body-small error ion-text-center\"\n *ngFor=\"let string of userFeedbackMessages?.error?.errorMessage || ['Invalid Code - Please Retry']\"\n >{{ string }}</p\n >\n <cf-spacer default=\"16\"></cf-spacer>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col>\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-center\" *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-center\"\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 ion-text-center\"\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;justify-content:space-between}.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
117
  }], ctorParameters: () => [], propDecorators: { valueToVerify: [{
118
118
  type: Input
119
119
  }], status: [{
@@ -140,4 +140,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
140
140
  type: ViewChild,
141
141
  args: ['input5']
142
142
  }] } });
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2FyZWZpcnN0L2xpYnJhcnkvc3JjL2xpYi9jb21wb25lbnRzL3ZlcmlmaWNhdGlvbi1jb2RlL3ZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhcmVmaXJzdC9saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy92ZXJpZmljYXRpb24tY29kZS92ZXJpZmljYXRpb24tY29kZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBc0MsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVd0SCxNQUFNLE9BQU8seUJBQXlCO0lBQzNCLGFBQWEsQ0FBVTtJQUN2QixNQUFNLENBQTBDO0lBQ2hELG9CQUFvQixDQUFvQztJQUV2RCxPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUNyQyxnQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBRWpDLFFBQVEsQ0FBWTtJQUNwQixRQUFRLENBQVk7SUFDcEIsUUFBUSxDQUFZO0lBQ3BCLFFBQVEsQ0FBWTtJQUNwQixRQUFRLENBQVk7SUFHekMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQzVCLHdCQUF3QixHQUFzQixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RSxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFDbkIsY0FBYyxDQUFxQjtJQUVuQyxVQUFVLENBQWdCO0lBSzFCLGdCQUFlLENBQUM7SUFPaEIsZUFBZTtRQUNiLElBQUksQ0FBQyxjQUFjLEdB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LElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDakMsQ0FBQzt1R0F0S1UseUJBQXlCOzJGQUF6Qix5QkFBeUIsNHJCQzFCdEMsaTJIQXFHQTs7MkZEM0VhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSxzQkFBc0I7d0RBS3ZCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFSSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFYyxRQUFRO3NCQUE1QixTQUFTO3VCQUFDLFFBQVE7Z0JBQ0UsUUFBUTtzQkFBNUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNFLFFBQVE7c0JBQTVCLFNBQVM7dUJBQUMsUUFBUTtnQkFDRSxRQUFRO3NCQUE1QixTQUFTO3VCQUFDLFFBQVE7Z0JBQ0UsUUFBUTtzQkFBNUIsU0FBUzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDYXJlZmlyc3QgbGlicmFyeSAtIFZlcmlmaWNhdGlvbiBDb2RlIElucHV0XG4gKlxuICogQGZpbGUgICAgICAgICAgdmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50XG4gKiBAZGVzY3JpcHRpb24gICBDb250YWlucyBhbGwgdGhlIGxvZ2ljIGZvciBnZW5lcmF0aW5nIGEgQ2FyZUZpcnN0IFZlcmlmaWNhdGlvbiBDb2RlIElucHV0XG4gKiBAYXV0aG9yICAgICAgICBBcm5vIEphbnNlbiB2YW4gVnV1cmVuXG4gKiBAc2luY2UgICAgICAgICAyMDI0IC0gMDMgLSAwN1xuICogQHVzYWdlICAgICAgICAgICA8Y2YtdmVyaWZpY2F0aW9uLWNvZGVcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVRvVmVyaWZ5PWBzdHJpbmdgXG4gICAgICAgICAgICAgICAgICAgICAgKG91dGNvbWUpPWBvbWl0cyBjb2RlIHZhbHVlYFxuICAgICAgICAgICAgICAgICAgICAgIChyZXNlbmRDbGlja0V2ZW50KT1gcmVzZW5kIGNsaWNrIGV2ZW50YFxuICAgICAgICAgICAgICAgICAgICAgIFtzdGF0dXNdPWBCZWhhdmlvclN1YmplY3Q8J2luaXRpYWwnIHwgJ2ludmFsaWQnPmA+XG4gICAgICAgICAgICAgICAgICAgIDwvY2YtdmVyaWZpY2F0aW9uLWNvZGU+XG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgdHlwZSBPbkNoYW5nZXMsIHR5cGUgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy8tLS0gSW50ZXJmYWNlXG5pbXBvcnQgdHlwZSB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7IElucHV0Q3VzdG9tRXZlbnQsIElvbklucHV0IH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHR5cGUgeyBDZkNvZGVJbnB1dFVzZXJGZWVkYmFja01lc3NhZ2VzSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdmVyaWZpY2F0aW9uLWNvZGUuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2YtdmVyaWZpY2F0aW9uLWNvZGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vdmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBWZXJpZmljYXRpb25Db2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgdmFsdWVUb1ZlcmlmeSE6IHN0cmluZztcbiAgQElucHV0KCkgc3RhdHVzITogQmVoYXZpb3JTdWJqZWN0PCdpbml0aWFsJyB8ICdpbnZhbGlkJz47XG4gIEBJbnB1dCgpIHVzZXJGZWVkYmFja01lc3NhZ2VzPzogQ2ZDb2RlSW5wdXRVc2VyRmVlZGJhY2tNZXNzYWdlc0k7XG5cbiAgQE91dHB1dCgpIG91dGNvbWUgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHJlc2VuZENsaWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHRydWU+KCk7XG5cbiAgQFZpZXdDaGlsZChgaW5wdXQxYCkgbXlJbnB1dDE/OiBJb25JbnB1dDtcbiAgQFZpZXdDaGlsZCgnaW5wdXQyJykgbXlJbnB1dDI/OiBJb25JbnB1dDtcbiAgQFZpZXdDaGlsZCgnaW5wdXQzJykgbXlJbnB1dDM/OiBJb25JbnB1dDtcbiAgQFZpZXdDaGlsZCgnaW5wdXQ0JykgbXlJbnB1dDQ/OiBJb25JbnB1dDtcbiAgQFZpZXdDaGlsZCgnaW5wdXQ1JykgbXlJbnB1dDU/OiBJb25JbnB1dDtcblxuICAvLy0tLSBIVE1MIHZhcmlhYmxlc1xuICB2YWxpZGF0aW9uQ29kZUVycm9yID0gZmFsc2U7XG4gIHZlcmlmaWNhdGlvbkNvZGVJbnB1dEFycjogKG51bWJlciB8IG51bGwpW10gPSBbbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbF07XG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgY29tbXNTZW50Q291bnQgPSAwO1xuICB2YWxpZGF0aW9uQ29kZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHN0YXR1c1N1YiQ/OiBTdWJzY3JpcHRpb247XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGlvblZpZXdXaWxsRW50ZXJcbiAgICogQGRlc2NyaXB0aW9uICAgVXBkYXRlIHZhcmlvdXMgdmFsdWVzIG9uIGNvbXBvbmVudCBpbml0aWFsaXphdGlvblxuICAgKiBAcmV0dXJucyAgICAgICB7dm9pZH1cbiAgICovXG4gIGlvblZpZXdEaWRFbnRlcigpOiB2b2lkIHtcbiAgICB0aGlzLmNvbW1zU2VudENvdW50ID0gMDtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgbmdPbkNoYW5nZXNcbiAgICogQGRlc2NyaXB0aW9uICAgVXBkYXRlIHZhcmlvdXMgdmFsdWVzIG9uIGlucHV0IGNoYW5nZXNcbiAgICogQHJldHVybnMgICAgICAge3ZvaWR9XG4gICAqL1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8tLS0gVmFsdWUgdG8gdmVyaWZ5XG4gICAgaWYgKFxuICAgICAgY2hhbmdlc1sndmFsdWVUb1ZlcmlmeSddPy5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXNbJ3ZhbHVlVG9WZXJpZnknXT8ucHJldmlvdXNWYWx1ZSB8fFxuICAgICAgY2hhbmdlc1snY29kZSddPy5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXNbJ2NvZGUnXT8ucHJldmlvdXNWYWx1ZVxuICAgICkge1xuICAgICAgdGhpcy5jb21tc1NlbnRDb3VudCA9IDA7XG4gICAgICB0aGlzLnZhbGlkYXRpb25Db2RlRXJyb3IgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVzZXRBbGxJbnB1dEZpZWxkcygpO1xuICAgIH1cblxuICAgIC8vLS0tIFN0YXR1cyBkaXNwbGF5XG4gICAgaWYgKGNoYW5nZXNbJ3N0YXR1cyddKSB7XG4gICAgICB0aGlzLnN0YXR1c1N1YiQgPSAoY2hhbmdlc1snc3RhdHVzJ10uY3VycmVudFZhbHVlIGFzIEJlaGF2aW9yU3ViamVjdDwnaW5pdGlhbCcgfCAnaW52YWxpZCc+KS5zdWJzY3JpYmUoKHN0YXQpID0+IHtcbiAgICAgICAgaWYgKHN0YXQgPT09ICdpbnZhbGlkJykge1xuICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkNvZGVFcnJvciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXNldEFsbElucHV0RmllbGRzKCk7XG4gICAgICAgIHRoaXMuc2V0Rm9jdXNUb05leHQoMCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIHJlc2VuZFZlcmlmaWNhdGlvbkNvZGVcbiAgICogQGRlc2NyaXB0aW9uICAgUmVzZW5kIGEgdmVyaWZpY2F0aW9uIGNvZGVcbiAgICogQHJldHVybnMgICAgICAge3ZvaWR9XG4gICAqL1xuICByZXNlbmRWZXJpZmljYXRpb25Db2RlKCk6IHZvaWQge1xuICAgIHRoaXMuY29tbXNTZW50Q291bnQrKztcbiAgICB0aGlzLnJlc2VuZENsaWNrRXZlbnQuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgZm9ybXVsYXRlQW5kQ2hlY2tWZXJpZmljYXRpb25Db2RlXG4gICAqIEBkZXNjcmlwdGlvbiAgIEhhbmRsZSBpbnB1dHMgYXNzb2NpYXRlZCB3aXRoIHRoZSB2ZXJpZmljYXRpb24gY29kZSBhbmQgZG8gY2FsbCBvbmNlIGNvZGUgaXMgY29tcGxldGVcbiAgICogQHBhcmFtICAgICAgICAge0lucHV0Q3VzdG9tRXZlbnR9IGV2ZW50XG4gICAqIEBwYXJhbSAgICAgICAgIHtudW1iZXJ9IGluZGV4XG4gICAqIEByZXR1cm5zICAgICAgIHt2b2lkfVxuICAgKi9cbiAgZm9ybXVsYXRlQW5kQ2hlY2tWZXJpZmljYXRpb25Db2RlKGV2ZW50OiBJbnB1dEN1c3RvbUV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSBldmVudC5kZXRhaWwudmFsdWU7XG4gICAgaWYgKCF2YWx1ZSB8fCAhKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHx8ICEoK3ZhbHVlIDwgMTApKSB7XG4gICAgICB0aGlzLmNsZWFyQ29kZUlucHV0KGluZGV4KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldEZvY3VzVG9OZXh0KGluZGV4KTtcbiAgICB0aGlzLnZlcmlmaWNhdGlvbkNvZGVJbnB1dEFycltpbmRleCAtIDFdID0gK3ZhbHVlO1xuICAgIHRoaXMudmFsaWRhdGlvbkNvZGVFcnJvciA9IGZhbHNlO1xuXG4gICAgLy8tLS0gQ2hlY2sgaWYgY29kZSBjb21wbGV0ZWRcbiAgICBpZiAodGhpcy52ZXJpZmljYXRpb25Db2RlSW5wdXRBcnIuZXZlcnkoKHZhbCkgPT4gdmFsICE9PSBudWxsKSkge1xuICAgICAgdGhpcy52YWxpZGF0aW9uQ29kZSA9IHRoaXMudmVyaWZpY2F0aW9uQ29kZUlucHV0QXJyLmpvaW4oJycpO1xuICAgICAgdGhpcy5vdXRjb21lLmVtaXQodGhpcy52YWxpZGF0aW9uQ29kZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICByZXNldEFsbElucHV0RmllbGRzXG4gICAqIEBkZXNjcmlwdGlvbiAgIFJlc2V0IGFsbCBpbnB1dCBmaWVsZHNcbiAgICogQHJldHVybnMgICAgICAge3ZvaWR9XG4gICAqL1xuICBwcml2YXRlIHJlc2V0QWxsSW5wdXRGaWVsZHMoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhckNvZGVJbnB1dCgxKTtcbiAgICB0aGlzLmNsZWFyQ29kZUlucHV0KDIpO1xuICAgIHRoaXMuY2xlYXJDb2RlSW5wdXQoMyk7XG4gICAgdGhpcy5jbGVhckNvZGVJbnB1dCg0KTtcbiAgICB0aGlzLmNsZWFyQ29kZUlucHV0KDUpO1xuICAgIHRoaXMudmVyaWZpY2F0aW9uQ29kZUlucHV0QXJyLmZpbGwobnVsbCk7XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIHNldEZvY3VzVG9OZXh0XG4gICAqIEBkZXNjcmlwdGlvbiAgIFNldCB0aGUgZm9jdXMgdG8gdGhlIG5leHQgaW5wdXRcbiAgICogQHBhcmFtICAgICAgICAge251bWJlcn0gY3VycmVudEluZGV4XG4gICAqIEByZXR1cm5zICAgICAgIHt2b2lkfVxuICAgKi9cbiAgcHJpdmF0ZSBzZXRGb2N1c1RvTmV4dChjdXJyZW50SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChjdXJyZW50SW5kZXggPT09IDUpIHJldHVybjtcbiAgICBjdXJyZW50SW5kZXggPT09IDBcbiAgICAgID8gdGhpcy5teUlucHV0MT8uc2V0Rm9jdXMoKVxuICAgICAgOiBjdXJyZW50SW5kZXggPT09IDFcbiAgICAgID8gdGhpcy5teUlucHV0Mj8uc2V0Rm9jdXMoKVxuICAgICAgOiBjdXJyZW50SW5kZXggPT09IDJcbiAgICAgID8gdGhpcy5teUlucHV0Mz8uc2V0Rm9jdXMoKVxuICAgICAgOiBjdXJyZW50SW5kZXggPT09IDNcbiAgICAgID8gdGhpcy5teUlucHV0ND8uc2V0Rm9jdXMoKVxuICAgICAgOiB0aGlzLm15SW5wdXQ1Py5zZXRGb2N1cygpO1xuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBjbGVhckNvZGVJbnB1dFxuICAgKiBAZGVzY3JpcHRpb24gICBDbGVhciBhIGNvZGUgaW5wdXQgb24gaW52YWxpZCBrZXlcbiAgICogQHBhcmFtICAgICAgICAge251bWJlcn0gaW5kZXhcbiAgICogQHJldHVybnMgICAgICAge3ZvaWR9XG4gICAqL1xuICBwcml2YXRlIGNsZWFyQ29kZUlucHV0KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGluZGV4KSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIGlmICh0aGlzLm15SW5wdXQxKSB0aGlzLm15SW5wdXQxLnZhbHVlID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGlmICh0aGlzLm15SW5wdXQyKSB0aGlzLm15SW5wdXQyLnZhbHVlID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIGlmICh0aGlzLm15SW5wdXQzKSB0aGlzLm15SW5wdXQzLnZhbHVlID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIGlmICh0aGlzLm15SW5wdXQ0KSB0aGlzLm15SW5wdXQ0LnZhbHVlID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDU6XG4gICAgICAgIGlmICh0aGlzLm15SW5wdXQ1KSB0aGlzLm15SW5wdXQ1LnZhbHVlID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBpb25WaWV3V2lsbExlYXZlXG4gICAqIEBkZXNjcmlwdGlvbiAgIFVuc3Vic2NyaWJlIG9uIGNvbXBvbmVudCBsZWF2ZVxuICAgKiBAcmV0dXJucyAgICAgICB7dm9pZH1cbiAgICovXG4gIGlvblZpZXdXaWxsTGVhdmUoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0dXNTdWIkPy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8aW9uLWdyaWQ+XG4gIDwhLS0gSW5wdXQgYm94ZXMgZm9yIHZlcmlmaWNhdGlvbiBjb2RlIDUgbnVtZXJpYyBkaWdpdHMgLS0+XG4gIDxpb24tcm93IGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICA8aW9uLWNvbCAqbmdJZj1cInZhbGlkYXRpb25Db2RlRXJyb3JcIiBzaXplPVwiYXV0b1wiPlxuICAgICAgPHBcbiAgICAgICAgY2xhc3M9XCJib2R5LXNtYWxsIGVycm9yIGlvbi10ZXh0LWNlbnRlclwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBzdHJpbmcgb2YgdXNlckZlZWRiYWNrTWVzc2FnZXM/LmVycm9yPy5lcnJvck1lc3NhZ2UgfHwgWydJbnZhbGlkIENvZGUgLSBQbGVhc2UgUmV0cnknXVwiXG4gICAgICAgID57eyBzdHJpbmcgfX08L3BcbiAgICAgID5cbiAgICAgIDxjZi1zcGFjZXIgZGVmYXVsdD1cIjE2XCI+PC9jZi1zcGFjZXI+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG4gIDxpb24tcm93IGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7IGVycm9yOiB2YWxpZGF0aW9uQ29kZUVycm9yIH1cIj5cbiAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICNpbnB1dDFcbiAgICAgICAgICBjbGFzcz1cInNpbmdsZS1kaWdpdC1pbnB1dCBpb24tdGV4dC1jZW50ZXJcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcbiAgICAgICAgICBmaWxsPVwib3V0bGluZVwiXG4gICAgICAgICAgbWF4bGVuZ3RoPVwiMVwiXG4gICAgICAgICAgY2xlYXJPbkVkaXQ9XCJ0cnVlXCJcbiAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICBtb2RlPVwibWRcIlxuICAgICAgICAgIChpb25JbnB1dCk9XCJmb3JtdWxhdGVBbmRDaGVja1ZlcmlmaWNhdGlvbkNvZGUoJGV2ZW50LCAxKVwiPjwvaW9uLWlucHV0PlxuICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgI2lucHV0MlxuICAgICAgICAgIGNsYXNzPVwic2luZ2xlLWRpZ2l0LWlucHV0IGlvbi10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICBtYXhsZW5ndGg9XCIxXCJcbiAgICAgICAgICBjbGVhck9uRWRpdD1cInRydWVcIlxuICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgIG1vZGU9XCJtZFwiXG4gICAgICAgICAgKGlvbklucHV0KT1cImZvcm11bGF0ZUFuZENoZWNrVmVyaWZpY2F0aW9uQ29kZSgkZXZlbnQsIDIpXCI+PC9pb24taW5wdXQ+XG4gICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAjaW5wdXQzXG4gICAgICAgICAgY2xhc3M9XCJzaW5nbGUtZGlnaXQtaW5wdXQgaW9uLXRleHQtY2VudGVyXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiXG4gICAgICAgICAgZmlsbD1cIm91dGxpbmVcIlxuICAgICAgICAgIG1heGxlbmd0aD1cIjFcIlxuICAgICAgICAgIGNsZWFyT25FZGl0PVwidHJ1ZVwiXG4gICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgKGlvbklucHV0KT1cImZvcm11bGF0ZUFuZENoZWNrVmVyaWZpY2F0aW9uQ29kZSgkZXZlbnQsIDMpXCI+PC9pb24taW5wdXQ+XG4gICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAjaW5wdXQ0XG4gICAgICAgICAgY2xhc3M9XCJzaW5nbGUtZGlnaXQtaW5wdXQgaW9uLXRleHQtY2VudGVyXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiXG4gICAgICAgICAgZmlsbD1cIm91dGxpbmVcIlxuICAgICAgICAgIG1heGxlbmd0aD1cIjFcIlxuICAgICAgICAgIGNsZWFyT25FZGl0PVwidHJ1ZVwiXG4gICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgbW9kZT1cIm1kXCJcbiAgICAgICAgICAoaW9uSW5wdXQpPVwiZm9ybXVsYXRlQW5kQ2hlY2tWZXJpZmljYXRpb25Db2RlKCRldmVudCwgNClcIj48L2lvbi1pbnB1dD5cbiAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICNpbnB1dDVcbiAgICAgICAgICBjbGFzcz1cInNpbmdsZS1kaWdpdC1pbnB1dCBpb24tdGV4dC1jZW50ZXJcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcbiAgICAgICAgICBmaWxsPVwib3V0bGluZVwiXG4gICAgICAgICAgbWF4bGVuZ3RoPVwiMVwiXG4gICAgICAgICAgY2xlYXJPbkVkaXQ9XCJ0cnVlXCJcbiAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICBtb2RlPVwibWRcIlxuICAgICAgICAgIChpb25JbnB1dCk9XCJmb3JtdWxhdGVBbmRDaGVja1ZlcmlmaWNhdGlvbkNvZGUoJGV2ZW50LCA1KVwiPjwvaW9uLWlucHV0PlxuICAgICAgPC9kaXY+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG4gIDxpb24tcm93IGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiPlxuICAgICAgPGNmLXNwYWNlciBkZWZhdWx0PVwiMTZcIj48L2NmLXNwYWNlcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGluZ1wiPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29tbXNTZW50Q291bnQgPCAzXCIgKGNsaWNrKT1cInJlc2VuZFZlcmlmaWNhdGlvbkNvZGUoKVwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmFsaWRhdGlvbkNvZGVFcnJvclwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJib2R5LXNtYWxsIGlvbi10ZXh0LWNlbnRlclwiICpuZ0Zvcj1cImxldCBzdHJpbmcgb2YgdXNlckZlZWRiYWNrTWVzc2FnZXM/LmVycm9yPy5yZXNlbmQgfHwgWydSZXNlbmQgQ29kZSddXCI+XG4gICAgICAgICAgICAgIHt7IHN0cmluZyB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdmFsaWRhdGlvbkNvZGVFcnJvclwiPlxuICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgY2xhc3M9XCJib2R5LXNtYWxsIGlvbi10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdHJpbmcgb2YgdXNlckZlZWRiYWNrTWVzc2FnZXM/LnN0YW5kYXJkUmVzZW5kIHx8IFsnRGlkbmB0IGdldCBhIGNvZGU/IFBsZWFzZSByZXNlbmQgdGhlIGNvZGUnXVwiPlxuICAgICAgICAgICAgICB7eyBzdHJpbmcgfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21tc1NlbnRDb3VudCA+PSAzXCI+XG4gICAgICAgICAgPHBcbiAgICAgICAgICAgIGNsYXNzPVwiYm9keS1zbWFsbCBpb24tdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHN0cmluZyBvZiB1c2VyRmVlZGJhY2tNZXNzYWdlcz8ubGltaXRSZWFjaGVkIHx8IFsnU3RpbGwgc3RydWdnbGluZyB3aXRoIHlvdXIgY29kZT8nLCAnUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCBmb3IgYXNzaXN0YW5jZSddXCJcbiAgICAgICAgICAgID57eyBzdHJpbmcgfX08L3BcbiAgICAgICAgICA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG4gIDxpb24tcm93IGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiPlxuICAgICAgPGNmLXNwaW5uZXIgW3NpemVdPVwiNTBcIiBbbmdDbGFzc109XCJ7ICdibG9jay1oaWRkZW4nOiAhbG9hZGluZyB9XCI+PC9jZi1zcGlubmVyPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuPC9pb24tZ3JpZD5cbiJdfQ==
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2FyZWZpcnN0L2xpYnJhcnkvc3JjL2xpYi9jb21wb25lbnRzL3ZlcmlmaWNhdGlvbi1jb2RlL3ZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhcmVmaXJzdC9saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy92ZXJpZmljYXRpb24tY29kZS92ZXJpZmljYXRpb24tY29kZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBc0MsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVd0SCxNQUFNLE9BQU8seUJBQXlCO0lBQzNCLGFBQWEsQ0FBVTtJQUN2QixNQUFNLENBQTBDO0lBQ2hELG9CQUFvQixDQUFvQztJQUV2RCxPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUNyQyxnQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBRWpDLFFBQVEsQ0FBWTtJQUNwQixRQUFRLENBQVk7SUFDcEIsUUFBUSxDQUFZO0lBQ3BCLFFBQVEsQ0FBWTtJQUNwQixRQUFRLENBQVk7SUFHekMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQzVCLHdCQUF3QixHQUFzQixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RSxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFDbkIsY0FBYyxDQUFxQjtJQUVuQyxVQUFVLENBQWdCO0lBSzFCLGdCQUFlLENBQUM7SUFPaEIsZUFBZTtRQUNiLElBQUksQ0FBQyxjQUFjLEdB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LElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDakMsQ0FBQzt1R0F0S1UseUJBQXlCOzJGQUF6Qix5QkFBeUIsNHJCQzFCdEMsbTFIQXFHQTs7MkZEM0VhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSxzQkFBc0I7d0RBS3ZCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFSSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFYyxRQUFRO3NCQUE1QixTQUFTO3VCQUFDLFFBQVE7Z0JBQ0UsUUFBUTtzQkFBNUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNFLFFBQVE7c0JBQTVCLFNBQVM7dUJBQUMsUUFBUTtnQkFDRSxRQUFRO3NCQUE1QixTQUFTO3VCQUFDLFFBQVE7Z0JBQ0UsUUFBUTtzQkFBNUIsU0FBUzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDYXJlZmlyc3QgbGlicmFyeSAtIFZlcmlmaWNhdGlvbiBDb2RlIElucHV0XG4gKlxuICogQGZpbGUgICAgICAgICAgdmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50XG4gKiBAZGVzY3JpcHRpb24gICBDb250YWlucyBhbGwgdGhlIGxvZ2ljIGZvciBnZW5lcmF0aW5nIGEgQ2FyZUZpcnN0IFZlcmlmaWNhdGlvbiBDb2RlIElucHV0XG4gKiBAYXV0aG9yICAgICAgICBBcm5vIEphbnNlbiB2YW4gVnV1cmVuXG4gKiBAc2luY2UgICAgICAgICAyMDI0IC0gMDMgLSAwN1xuICogQHVzYWdlICAgICAgICAgICA8Y2YtdmVyaWZpY2F0aW9uLWNvZGVcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVRvVmVyaWZ5PWBzdHJpbmdgXG4gICAgICAgICAgICAgICAgICAgICAgKG91dGNvbWUpPWBvbWl0cyBjb2RlIHZhbHVlYFxuICAgICAgICAgICAgICAgICAgICAgIChyZXNlbmRDbGlja0V2ZW50KT1gcmVzZW5kIGNsaWNrIGV2ZW50YFxuICAgICAgICAgICAgICAgICAgICAgIFtzdGF0dXNdPWBCZWhhdmlvclN1YmplY3Q8J2luaXRpYWwnIHwgJ2ludmFsaWQnPmA+XG4gICAgICAgICAgICAgICAgICAgIDwvY2YtdmVyaWZpY2F0aW9uLWNvZGU+XG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgdHlwZSBPbkNoYW5nZXMsIHR5cGUgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy8tLS0gSW50ZXJmYWNlXG5pbXBvcnQgdHlwZSB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7IElucHV0Q3VzdG9tRXZlbnQsIElvbklucHV0IH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHR5cGUgeyBDZkNvZGVJbnB1dFVzZXJGZWVkYmFja01lc3NhZ2VzSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdmVyaWZpY2F0aW9uLWNvZGUuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2YtdmVyaWZpY2F0aW9uLWNvZGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vdmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBWZXJpZmljYXRpb25Db2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgdmFsdWVUb1ZlcmlmeSE6IHN0cmluZztcbiAgQElucHV0KCkgc3RhdHVzITogQmVoYXZpb3JTdWJqZWN0PCdpbml0aWFsJyB8ICdpbnZhbGlkJz47XG4gIEBJbnB1dCgpIHVzZXJGZWVkYmFja01lc3NhZ2VzPzogQ2ZDb2RlSW5wdXRVc2VyRmVlZGJhY2tNZXNzYWdlc0k7XG5cbiAgQE91dHB1dCgpIG91dGNvbWUgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHJlc2VuZENsaWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHRydWU+KCk7XG5cbiAgQFZpZXdDaGlsZChgaW5wdXQxYCkgbXlJbnB1dDE/OiBJb25JbnB1dDtcbiAgQFZpZXdDaGlsZCgnaW5wdXQyJykgbXlJbnB1dDI/OiBJb25JbnB1dDtcbiAgQFZpZXdDaGlsZCgnaW5wdXQzJykgbXlJbnB1dDM/OiBJb25JbnB1dDtcbiAgQFZpZXdDaGlsZCgnaW5wdXQ0JykgbXlJbnB1dDQ/OiBJb25JbnB1dDtcbiAgQFZpZXdDaGlsZCgnaW5wdXQ1JykgbXlJbnB1dDU/OiBJb25JbnB1dDtcblxuICAvLy0tLSBIVE1MIHZhcmlhYmxlc1xuICB2YWxpZGF0aW9uQ29kZUVycm9yID0gZmFsc2U7XG4gIHZlcmlmaWNhdGlvbkNvZGVJbnB1dEFycjogKG51bWJlciB8IG51bGwpW10gPSBbbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbF07XG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgY29tbXNTZW50Q291bnQgPSAwO1xuICB2YWxpZGF0aW9uQ29kZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHN0YXR1c1N1YiQ/OiBTdWJzY3JpcHRpb247XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGlvblZpZXdXaWxsRW50ZXJcbiAgICogQGRlc2NyaXB0aW9uICAgVXBkYXRlIHZhcmlvdXMgdmFsdWVzIG9uIGNvbXBvbmVudCBpbml0aWFsaXphdGlvblxuICAgKiBAcmV0dXJucyAgICAgICB7dm9pZH1cbiAgICovXG4gIGlvblZpZXdEaWRFbnRlcigpOiB2b2lkIHtcbiAgICB0aGlzLmNvbW1zU2VudENvdW50ID0gMDtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgbmdPbkNoYW5nZXNcbiAgICogQGRlc2NyaXB0aW9uICAgVXBkYXRlIHZhcmlvdXMgdmFsdWVzIG9uIGlucHV0IGNoYW5nZXNcbiAgICogQHJldHVybnMgICAgICAge3ZvaWR9XG4gICAqL1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8tLS0gVmFsdWUgdG8gdmVyaWZ5XG4gICAgaWYgKFxuICAgICAgY2hhbmdlc1sndmFsdWVUb1ZlcmlmeSddPy5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXNbJ3ZhbHVlVG9WZXJpZnknXT8ucHJldmlvdXNWYWx1ZSB8fFxuICAgICAgY2hhbmdlc1snY29kZSddPy5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXNbJ2NvZGUnXT8ucHJldmlvdXNWYWx1ZVxuICAgICkge1xuICAgICAgdGhpcy5jb21tc1NlbnRDb3VudCA9IDA7XG4gICAgICB0aGlzLnZhbGlkYXRpb25Db2RlRXJyb3IgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVzZXRBbGxJbnB1dEZpZWxkcygpO1xuICAgIH1cblxuICAgIC8vLS0tIFN0YXR1cyBkaXNwbGF5XG4gICAgaWYgKGNoYW5nZXNbJ3N0YXR1cyddKSB7XG4gICAgICB0aGlzLnN0YXR1c1N1YiQgPSAoY2hhbmdlc1snc3RhdHVzJ10uY3VycmVudFZhbHVlIGFzIEJlaGF2aW9yU3ViamVjdDwnaW5pdGlhbCcgfCAnaW52YWxpZCc+KS5zdWJzY3JpYmUoKHN0YXQpID0+IHtcbiAgICAgICAgaWYgKHN0YXQgPT09ICdpbnZhbGlkJykge1xuICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkNvZGVFcnJvciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXNldEFsbElucHV0RmllbGRzKCk7XG4gICAgICAgIHRoaXMuc2V0Rm9jdXNUb05leHQoMCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIHJlc2VuZFZlcmlmaWNhdGlvbkNvZGVcbiAgICogQGRlc2NyaXB0aW9uICAgUmVzZW5kIGEgdmVyaWZpY2F0aW9uIGNvZGVcbiAgICogQHJldHVybnMgICAgICAge3ZvaWR9XG4gICAqL1xuICByZXNlbmRWZXJpZmljYXRpb25Db2RlKCk6IHZvaWQge1xuICAgIHRoaXMuY29tbXNTZW50Q291bnQrKztcbiAgICB0aGlzLnJlc2VuZENsaWNrRXZlbnQuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgZm9ybXVsYXRlQW5kQ2hlY2tWZXJpZmljYXRpb25Db2RlXG4gICAqIEBkZXNjcmlwdGlvbiAgIEhhbmRsZSBpbnB1dHMgYXNzb2NpYXRlZCB3aXRoIHRoZSB2ZXJpZmljYXRpb24gY29kZSBhbmQgZG8gY2FsbCBvbmNlIGNvZGUgaXMgY29tcGxldGVcbiAgICogQHBhcmFtICAgICAgICAge0lucHV0Q3VzdG9tRXZlbnR9IGV2ZW50XG4gICAqIEBwYXJhbSAgICAgICAgIHtudW1iZXJ9IGluZGV4XG4gICAqIEByZXR1cm5zICAgICAgIHt2b2lkfVxuICAgKi9cbiAgZm9ybXVsYXRlQW5kQ2hlY2tWZXJpZmljYXRpb25Db2RlKGV2ZW50OiBJbnB1dEN1c3RvbUV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSBldmVudC5kZXRhaWwudmFsdWU7XG4gICAgaWYgKCF2YWx1ZSB8fCAhKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHx8ICEoK3ZhbHVlIDwgMTApKSB7XG4gICAgICB0aGlzLmNsZWFyQ29kZUlucHV0KGluZGV4KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldEZvY3VzVG9OZXh0KGluZGV4KTtcbiAgICB0aGlzLnZlcmlmaWNhdGlvbkNvZGVJbnB1dEFycltpbmRleCAtIDFdID0gK3ZhbHVlO1xuICAgIHRoaXMudmFsaWRhdGlvbkNvZGVFcnJvciA9IGZhbHNlO1xuXG4gICAgLy8tLS0gQ2hlY2sgaWYgY29kZSBjb21wbGV0ZWRcbiAgICBpZiAodGhpcy52ZXJpZmljYXRpb25Db2RlSW5wdXRBcnIuZXZlcnkoKHZhbCkgPT4gdmFsICE9PSBudWxsKSkge1xuICAgICAgdGhpcy52YWxpZGF0aW9uQ29kZSA9IHRoaXMudmVyaWZpY2F0aW9uQ29kZUlucHV0QXJyLmpvaW4oJycpO1xuICAgICAgdGhpcy5vdXRjb21lLmVtaXQodGhpcy52YWxpZGF0aW9uQ29kZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICByZXNldEFsbElucHV0RmllbGRzXG4gICAqIEBkZXNjcmlwdGlvbiAgIFJlc2V0IGFsbCBpbnB1dCBmaWVsZHNcbiAgICogQHJldHVybnMgICAgICAge3ZvaWR9XG4gICAqL1xuICBwcml2YXRlIHJlc2V0QWxsSW5wdXRGaWVsZHMoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhckNvZGVJbnB1dCgxKTtcbiAgICB0aGlzLmNsZWFyQ29kZUlucHV0KDIpO1xuICAgIHRoaXMuY2xlYXJDb2RlSW5wdXQoMyk7XG4gICAgdGhpcy5jbGVhckNvZGVJbnB1dCg0KTtcbiAgICB0aGlzLmNsZWFyQ29kZUlucHV0KDUpO1xuICAgIHRoaXMudmVyaWZpY2F0aW9uQ29kZUlucHV0QXJyLmZpbGwobnVsbCk7XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIHNldEZvY3VzVG9OZXh0XG4gICAqIEBkZXNjcmlwdGlvbiAgIFNldCB0aGUgZm9jdXMgdG8gdGhlIG5leHQgaW5wdXRcbiAgICogQHBhcmFtICAgICAgICAge251bWJlcn0gY3VycmVudEluZGV4XG4gICAqIEByZXR1cm5zICAgICAgIHt2b2lkfVxuICAgKi9cbiAgcHJpdmF0ZSBzZXRGb2N1c1RvTmV4dChjdXJyZW50SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChjdXJyZW50SW5kZXggPT09IDUpIHJldHVybjtcbiAgICBjdXJyZW50SW5kZXggPT09IDBcbiAgICAgID8gdGhpcy5teUlucHV0MT8uc2V0Rm9jdXMoKVxuICAgICAgOiBjdXJyZW50SW5kZXggPT09IDFcbiAgICAgID8gdGhpcy5teUlucHV0Mj8uc2V0Rm9jdXMoKVxuICAgICAgOiBjdXJyZW50SW5kZXggPT09IDJcbiAgICAgID8gdGhpcy5teUlucHV0Mz8uc2V0Rm9jdXMoKVxuICAgICAgOiBjdXJyZW50SW5kZXggPT09IDNcbiAgICAgID8gdGhpcy5teUlucHV0ND8uc2V0Rm9jdXMoKVxuICAgICAgOiB0aGlzLm15SW5wdXQ1Py5zZXRGb2N1cygpO1xuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBjbGVhckNvZGVJbnB1dFxuICAgKiBAZGVzY3JpcHRpb24gICBDbGVhciBhIGNvZGUgaW5wdXQgb24gaW52YWxpZCBrZXlcbiAgICogQHBhcmFtICAgICAgICAge251bWJlcn0gaW5kZXhcbiAgICogQHJldHVybnMgICAgICAge3ZvaWR9XG4gICAqL1xuICBwcml2YXRlIGNsZWFyQ29kZUlucHV0KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGluZGV4KSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIGlmICh0aGlzLm15SW5wdXQxKSB0aGlzLm15SW5wdXQxLnZhbHVlID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGlmICh0aGlzLm15SW5wdXQyKSB0aGlzLm15SW5wdXQyLnZhbHVlID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIGlmICh0aGlzLm15SW5wdXQzKSB0aGlzLm15SW5wdXQzLnZhbHVlID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIGlmICh0aGlzLm15SW5wdXQ0KSB0aGlzLm15SW5wdXQ0LnZhbHVlID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDU6XG4gICAgICAgIGlmICh0aGlzLm15SW5wdXQ1KSB0aGlzLm15SW5wdXQ1LnZhbHVlID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBpb25WaWV3V2lsbExlYXZlXG4gICAqIEBkZXNjcmlwdGlvbiAgIFVuc3Vic2NyaWJlIG9uIGNvbXBvbmVudCBsZWF2ZVxuICAgKiBAcmV0dXJucyAgICAgICB7dm9pZH1cbiAgICovXG4gIGlvblZpZXdXaWxsTGVhdmUoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0dXNTdWIkPy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8aW9uLWdyaWQ+XG4gIDwhLS0gSW5wdXQgYm94ZXMgZm9yIHZlcmlmaWNhdGlvbiBjb2RlIDUgbnVtZXJpYyBkaWdpdHMgLS0+XG4gIDxpb24tcm93IGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICA8aW9uLWNvbCAqbmdJZj1cInZhbGlkYXRpb25Db2RlRXJyb3JcIiBzaXplPVwiYXV0b1wiPlxuICAgICAgPHBcbiAgICAgICAgY2xhc3M9XCJib2R5LXNtYWxsIGVycm9yIGlvbi10ZXh0LWNlbnRlclwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBzdHJpbmcgb2YgdXNlckZlZWRiYWNrTWVzc2FnZXM/LmVycm9yPy5lcnJvck1lc3NhZ2UgfHwgWydJbnZhbGlkIENvZGUgLSBQbGVhc2UgUmV0cnknXVwiXG4gICAgICAgID57eyBzdHJpbmcgfX08L3BcbiAgICAgID5cbiAgICAgIDxjZi1zcGFjZXIgZGVmYXVsdD1cIjE2XCI+PC9jZi1zcGFjZXI+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG4gIDxpb24tcm93IGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICA8aW9uLWNvbD5cbiAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieyBlcnJvcjogdmFsaWRhdGlvbkNvZGVFcnJvciB9XCI+XG4gICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAjaW5wdXQxXG4gICAgICAgICAgY2xhc3M9XCJzaW5nbGUtZGlnaXQtaW5wdXQgaW9uLXRleHQtY2VudGVyXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiXG4gICAgICAgICAgZmlsbD1cIm91dGxpbmVcIlxuICAgICAgICAgIG1heGxlbmd0aD1cIjFcIlxuICAgICAgICAgIGNsZWFyT25FZGl0PVwidHJ1ZVwiXG4gICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgbW9kZT1cIm1kXCJcbiAgICAgICAgICAoaW9uSW5wdXQpPVwiZm9ybXVsYXRlQW5kQ2hlY2tWZXJpZmljYXRpb25Db2RlKCRldmVudCwgMSlcIj48L2lvbi1pbnB1dD5cbiAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICNpbnB1dDJcbiAgICAgICAgICBjbGFzcz1cInNpbmdsZS1kaWdpdC1pbnB1dCBpb24tdGV4dC1jZW50ZXJcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcbiAgICAgICAgICBmaWxsPVwib3V0bGluZVwiXG4gICAgICAgICAgbWF4bGVuZ3RoPVwiMVwiXG4gICAgICAgICAgY2xlYXJPbkVkaXQ9XCJ0cnVlXCJcbiAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICBtb2RlPVwibWRcIlxuICAgICAgICAgIChpb25JbnB1dCk9XCJmb3JtdWxhdGVBbmRDaGVja1ZlcmlmaWNhdGlvbkNvZGUoJGV2ZW50LCAyKVwiPjwvaW9uLWlucHV0PlxuICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgI2lucHV0M1xuICAgICAgICAgIGNsYXNzPVwic2luZ2xlLWRpZ2l0LWlucHV0IGlvbi10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICBtYXhsZW5ndGg9XCIxXCJcbiAgICAgICAgICBjbGVhck9uRWRpdD1cInRydWVcIlxuICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgIChpb25JbnB1dCk9XCJmb3JtdWxhdGVBbmRDaGVja1ZlcmlmaWNhdGlvbkNvZGUoJGV2ZW50LCAzKVwiPjwvaW9uLWlucHV0PlxuICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgI2lucHV0NFxuICAgICAgICAgIGNsYXNzPVwic2luZ2xlLWRpZ2l0LWlucHV0IGlvbi10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICBtYXhsZW5ndGg9XCIxXCJcbiAgICAgICAgICBjbGVhck9uRWRpdD1cInRydWVcIlxuICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgIG1vZGU9XCJtZFwiXG4gICAgICAgICAgKGlvbklucHV0KT1cImZvcm11bGF0ZUFuZENoZWNrVmVyaWZpY2F0aW9uQ29kZSgkZXZlbnQsIDQpXCI+PC9pb24taW5wdXQ+XG4gICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAjaW5wdXQ1XG4gICAgICAgICAgY2xhc3M9XCJzaW5nbGUtZGlnaXQtaW5wdXQgaW9uLXRleHQtY2VudGVyXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiXG4gICAgICAgICAgZmlsbD1cIm91dGxpbmVcIlxuICAgICAgICAgIG1heGxlbmd0aD1cIjFcIlxuICAgICAgICAgIGNsZWFyT25FZGl0PVwidHJ1ZVwiXG4gICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgbW9kZT1cIm1kXCJcbiAgICAgICAgICAoaW9uSW5wdXQpPVwiZm9ybXVsYXRlQW5kQ2hlY2tWZXJpZmljYXRpb25Db2RlKCRldmVudCwgNSlcIj48L2lvbi1pbnB1dD5cbiAgICAgIDwvZGl2PlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuICA8aW9uLXJvdyBjbGFzcz1cImlvbi1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIj5cbiAgICAgIDxjZi1zcGFjZXIgZGVmYXVsdD1cIjE2XCI+PC9jZi1zcGFjZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRpbmdcIj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbW1zU2VudENvdW50IDwgM1wiIChjbGljayk9XCJyZXNlbmRWZXJpZmljYXRpb25Db2RlKClcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZhbGlkYXRpb25Db2RlRXJyb3JcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiYm9keS1zbWFsbCBpb24tdGV4dC1jZW50ZXJcIiAqbmdGb3I9XCJsZXQgc3RyaW5nIG9mIHVzZXJGZWVkYmFja01lc3NhZ2VzPy5lcnJvcj8ucmVzZW5kIHx8IFsnUmVzZW5kIENvZGUnXVwiPlxuICAgICAgICAgICAgICB7eyBzdHJpbmcgfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXZhbGlkYXRpb25Db2RlRXJyb3JcIj5cbiAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgIGNsYXNzPVwiYm9keS1zbWFsbCBpb24tdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3RyaW5nIG9mIHVzZXJGZWVkYmFja01lc3NhZ2VzPy5zdGFuZGFyZFJlc2VuZCB8fCBbJ0RpZG5gdCBnZXQgYSBjb2RlPyBQbGVhc2UgcmVzZW5kIHRoZSBjb2RlJ11cIj5cbiAgICAgICAgICAgICAge3sgc3RyaW5nIH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tbXNTZW50Q291bnQgPj0gM1wiPlxuICAgICAgICAgIDxwXG4gICAgICAgICAgICBjbGFzcz1cImJvZHktc21hbGwgaW9uLXRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdHJpbmcgb2YgdXNlckZlZWRiYWNrTWVzc2FnZXM/LmxpbWl0UmVhY2hlZCB8fCBbJ1N0aWxsIHN0cnVnZ2xpbmcgd2l0aCB5b3VyIGNvZGU/JywgJ1BsZWFzZSBjb250YWN0IHN1cHBvcnQgZm9yIGFzc2lzdGFuY2UnXVwiXG4gICAgICAgICAgICA+e3sgc3RyaW5nIH19PC9wXG4gICAgICAgICAgPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuICA8aW9uLXJvdyBjbGFzcz1cImlvbi1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIj5cbiAgICAgIDxjZi1zcGlubmVyIFtzaXplXT1cIjUwXCIgW25nQ2xhc3NdPVwieyAnYmxvY2staGlkZGVuJzogIWxvYWRpbmcgfVwiPjwvY2Ytc3Bpbm5lcj5cbiAgICA8L2lvbi1jb2w+XG4gIDwvaW9uLXJvdz5cbjwvaW9uLWdyaWQ+XG4iXX0=