iptdevs-design-system 3.1.532 → 3.1.534

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -30,11 +30,17 @@ export class CodSelfFormStepTwoComponent extends CodSelfManagedSteps {
30
30
  { name: 'Tarde', key: 'ta' },
31
31
  { name: 'Noche', key: 'no' },
32
32
  ];
33
+ this.OptionPlacementTest = [
34
+ { key: 'si', name: 'Si' },
35
+ { key: 'no', name: 'No' },
36
+ ];
33
37
  this.selectedSchedules = [];
34
38
  this.disableweekdays = [];
35
39
  this.selectedModality = [];
40
+ this.selectedOptionPlacementTest = [];
36
41
  this.messageAlertSchedules = false;
37
42
  this.messageAlertModality = false;
43
+ this.messageAlertPlacementTest = false;
38
44
  this.initForm();
39
45
  }
40
46
  ngOnInit() {
@@ -111,14 +117,6 @@ export class CodSelfFormStepTwoComponent extends CodSelfManagedSteps {
111
117
  };
112
118
  console.log(request);
113
119
  }
114
- jornadaValidations() {
115
- // const arrDay = ['time_start', 'time_end'];
116
- // const arrDayT = [];
117
- // const arrYesClas = [];
118
- // const arrNotClas = [];
119
- }
120
- CourseRenovationValid() {
121
- }
122
120
  // validateDate(dateRecib: string) {
123
121
  // const dateRecibTreanf = dateRecib + 'T00:00:00-05:00';
124
122
  // const f1 = new Date(dateRecibTreanf);
@@ -190,12 +188,22 @@ export class CodSelfFormStepTwoComponent extends CodSelfManagedSteps {
190
188
  this.messageAlertModality = false;
191
189
  }
192
190
  }
191
+ selectOpcionsPlacementTest(eve) {
192
+ this.selectedOptionPlacementTest = eve;
193
+ console.log(this.selectedOptionPlacementTest);
194
+ if (this.selectedOptionPlacementTest.length === 0) {
195
+ this.messageAlertPlacementTest = true;
196
+ }
197
+ else {
198
+ this.messageAlertPlacementTest = false;
199
+ }
200
+ }
193
201
  }
194
202
  CodSelfFormStepTwoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodSelfFormStepTwoComponent, deps: [{ token: i1.FormBuilder }, { token: i0.ChangeDetectorRef }, { token: i2.MessageService }, { token: i3.BaseService }], target: i0.ɵɵFactoryTarget.Component });
195
- CodSelfFormStepTwoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodSelfFormStepTwoComponent, selector: "app-cod-self-form-step-two", inputs: { scorePlacementTest: "scorePlacementTest", codPrevious: "codPrevious" }, outputs: { completed: "completed" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Planes</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepTwo\">\n <!-- <div *ngIf=\"codPrevious == null\">\n <div class=\"flex flex-wrap justify-content-evenly column-gap-4 row-gap-6\">\n <div class=\"flex-column align-items-center justify-content-center w-9rem h-4rem m-2\">\n <div class=\"flex mt-3\">\n <span>Horario deseado?</span>\n </div>\n <p-calendar\n [showIcon]=\"true\"\n [icon]=\"'pi pi-clock'\"\n [timeOnly]=\"true\"\n placeholder=\"hh:mm\"\n [hourFormat]=\"'12'\"\n inputId=\"timeonly\"\n [formControl]=\"$any(codSelfFormStepTwo.controls['schedule'])\"\n (ngModelChange)=\"onDateChange($event)\"\n ></p-calendar>\n </div>\n <div *ngIf=\"codSelfFormStepTwo.controls['schedule'].invalid && codSelfFormStepTwo.controls['schedule'].touched\">\n <span class=\"error-message\">Por favor ingresa un horario deseado</span>\n </div>\n <div class=\"flex align-items-center justify-content-center w-9rem h-4rem m-2\">\n <ipt-input\n [inputType]=\"'date'\"\n [placeHolder]=\"'Posible Inicio'\"\n [control]=\"codSelfFormStepTwo.controls['to_start']\"\n (dateSelected)=\"validateDate($event)\"\n ></ipt-input>\n </div>\n <div *ngIf=\"codSelfFormStepTwo.controls['to_start'].invalid && codSelfFormStepTwo.controls['to_start'].touched\">\n <span class=\"error-message\">La fecha seleccionada debe ser mayor que la fecha actual.</span>\n </div>\n\n <div class=\"container-modality flex justify-content-center align-content-center text-center m-2 align-items-end\">\n <p-selectButton [options]=\"stateOptions\" formControlName=\"modality\" optionLabel=\"name\" optionValue=\"code\"></p-selectButton>\n </div>\n </div>\n <div class=\"flex-none flex align-items-center justify-content-end m-2\">\n <button\n pButton\n Ripple\n type=\"button\"\n icon=\"pi pi-search\"\n class=\"p-button-rounded p-button-outlined\"\n [disabled]=\"!codSelfFormStepTwo.valid\"\n (click)=\"searchAvalaibleCourse()\"\n ></button>\n </div>\n </div> -->\n <div *ngIf=\"codPrevious == null\">\n <p-accordion [multiple]=\"true\" [activeIndex]=\"[0]\">\n <p-accordionTab header=\"Jornada\">\n <div class=\"containerDay\">\n <!-- <h3>Horario</h3> -->\n <div class=\"checkBox flex flex-wrap justify-content-between m-3\">\n <div *ngFor=\"let dayW of schedules; index as ind\" class=\"field-checkbox\">\n <p-checkbox\n name=\"group2\"\n value=\"category\"\n [value]=\"dayW\"\n [(ngModel)]=\"selectedSchedules\"\n [inputId]=\"dayW.key\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n checkboxIcon=\"pi pi-check-circle\"\n (ngModelChange)=\"selectSchedules($event)\"\n ></p-checkbox>\n <label [for]=\"dayW.key\">{{ dayW.name }}</label>\n </div>\n <div *ngIf=\"messageAlertSchedules\">\n <span class=\"error-message\">Por favor selecciona una opcion</span>\n </div>\n </div>\n </div>\n </p-accordionTab>\n\n <p-accordionTab header=\"Modalidad\">\n <div class=\"containerDay\">\n <!-- <h3>Horario</h3> -->\n <div class=\"checkBox flex flex-wrap justify-content-between m-3\">\n <div *ngFor=\"let dayW of stateOptionsModality; index as ind\" class=\"field-checkbox\">\n <p-checkbox\n name=\"group2\"\n value=\"category\"\n [value]=\"dayW\"\n [(ngModel)]=\"selectedModality\"\n [inputId]=\"dayW.key\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n checkboxIcon=\"pi pi-check-circle\"\n (ngModelChange)=\"selectModality($event)\"\n ></p-checkbox>\n <label [for]=\"dayW.key\">{{ dayW.name }}</label>\n </div>\n <div *ngIf=\"messageAlertModality\">\n <span class=\"error-message\">Por favor selecciona una opcion</span>\n </div>\n </div>\n </div>\n </p-accordionTab>\n </p-accordion>\n <div class=\"flex-none flex align-items-center justify-content-end m-2\">\n <button\n pButton\n Ripple\n type=\"button\"\n icon=\"pi pi-search\"\n class=\"p-button-rounded p-button-outlined\"\n [disabled]=\"selectedSchedules.length === 0 || selectedModality.length === 0\"\n (click)=\"searchAvalaibleCourse()\"\n ></button>\n </div>\n </div>\n <!-- <div *ngIf=\"codPrevious.cod_is_Progress == false\">\n </div> -->\n </form>\n <div class=\"flex justify-content-between mt-3 align-items-center gap-3\">\n <!-- <span *ngIf=\"codSelfFormStepOne.invalid && codSelfFormStepOne.touched\" class=\"text-red-500 font-bold text-center mt-1 py-2 bg-red-100 w-full border-round-xl\">{{ errorMessage }}</span> -->\n <button\n pButton\n icon=\"pi pi-arrow-left\"\n type=\"submit\"\n (click)=\"back()\"\n ></button>\n\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n</div>\n\n<div>\n <pre>{{ codSelfFormStepTwo.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepTwo.valid | json }}</pre>\n </div>\n</div>\n\n", styles: [".container-main{margin:1%}.container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}span{color:#999;font-size:15px;font-weight:400;pointer-events:none;left:20px;top:-20px}:host ::ng-deep .p-buttonset .p-button{box-shadow:#64646f33 0 7px 29px;border-radius:6px;border:none;outline:none;transition:.2s;font-weight:300;height:28px}:host ::ng-deep .p-calendar{position:relative;display:inline-flex;max-width:100%;height:28px;box-shadow:#64646f33 0 7px 29px;border-radius:6px;border:none;outline:none;transition:.2s;font-weight:300;width:-webkit-fill-available;width:-moz-available;background-color:#fff;-webkit-appearance:none}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i6.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i7.Accordion, selector: "p-accordion", inputs: ["multiple", "style", "styleClass", "expandIcon", "collapseIcon", "activeIndex"], outputs: ["onClose", "onOpen", "activeIndexChange"] }, { kind: "component", type: i7.AccordionTab, selector: "p-accordionTab", inputs: ["header", "disabled", "cache", "transitionOptions", "selected"], outputs: ["selectedChange"] }, { kind: "component", type: i8.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "trueValue", "falseValue"], outputs: ["onChange"] }, { kind: "pipe", type: i4.JsonPipe, name: "json" }] });
203
+ CodSelfFormStepTwoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodSelfFormStepTwoComponent, selector: "app-cod-self-form-step-two", inputs: { scorePlacementTest: "scorePlacementTest", codPrevious: "codPrevious" }, outputs: { completed: "completed" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Planes</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepTwo\">\n <!-- <div *ngIf=\"codPrevious == null\">\n <div class=\"flex flex-wrap justify-content-evenly column-gap-4 row-gap-6\">\n <div class=\"flex-column align-items-center justify-content-center w-9rem h-4rem m-2\">\n <div class=\"flex mt-3\">\n <span>Horario deseado?</span>\n </div>\n <p-calendar\n [showIcon]=\"true\"\n [icon]=\"'pi pi-clock'\"\n [timeOnly]=\"true\"\n placeholder=\"hh:mm\"\n [hourFormat]=\"'12'\"\n inputId=\"timeonly\"\n [formControl]=\"$any(codSelfFormStepTwo.controls['schedule'])\"\n (ngModelChange)=\"onDateChange($event)\"\n ></p-calendar>\n </div>\n <div *ngIf=\"codSelfFormStepTwo.controls['schedule'].invalid && codSelfFormStepTwo.controls['schedule'].touched\">\n <span class=\"error-message\">Por favor ingresa un horario deseado</span>\n </div>\n <div class=\"flex align-items-center justify-content-center w-9rem h-4rem m-2\">\n <ipt-input\n [inputType]=\"'date'\"\n [placeHolder]=\"'Posible Inicio'\"\n [control]=\"codSelfFormStepTwo.controls['to_start']\"\n (dateSelected)=\"validateDate($event)\"\n ></ipt-input>\n </div>\n <div *ngIf=\"codSelfFormStepTwo.controls['to_start'].invalid && codSelfFormStepTwo.controls['to_start'].touched\">\n <span class=\"error-message\">La fecha seleccionada debe ser mayor que la fecha actual.</span>\n </div>\n\n <div class=\"container-modality flex justify-content-center align-content-center text-center m-2 align-items-end\">\n <p-selectButton [options]=\"stateOptions\" formControlName=\"modality\" optionLabel=\"name\" optionValue=\"code\"></p-selectButton>\n </div>\n </div>\n <div class=\"flex-none flex align-items-center justify-content-end m-2\">\n <button\n pButton\n Ripple\n type=\"button\"\n icon=\"pi pi-search\"\n class=\"p-button-rounded p-button-outlined\"\n [disabled]=\"!codSelfFormStepTwo.valid\"\n (click)=\"searchAvalaibleCourse()\"\n ></button>\n </div>\n </div> -->\n <div *ngIf=\"codPrevious == null\">\n <p-accordion [multiple]=\"true\" [activeIndex]=\"[0]\">\n <p-accordionTab header=\"Jornada\">\n <div class=\"containerDay\">\n <!-- <h3>Horario</h3> -->\n <div class=\"checkBox flex flex-wrap justify-content-between m-3\">\n <div *ngFor=\"let dayW of schedules; index as ind\" class=\"field-checkbox\">\n <p-checkbox\n name=\"group2\"\n value=\"category\"\n [value]=\"dayW\"\n [(ngModel)]=\"selectedSchedules\"\n [inputId]=\"dayW.key\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n checkboxIcon=\"pi pi-check-circle\"\n (ngModelChange)=\"selectSchedules($event)\"\n ></p-checkbox>\n <label [for]=\"dayW.key\">{{ dayW.name }}</label>\n </div>\n <div *ngIf=\"messageAlertSchedules\">\n <span class=\"error-message\">Por favor selecciona una opcion</span>\n </div>\n </div>\n </div>\n </p-accordionTab>\n\n <p-accordionTab header=\"Modalidad\">\n <div class=\"containerDay\">\n <!-- <h3>Horario</h3> -->\n <div class=\"checkBox flex flex-wrap justify-content-between m-3\">\n <div *ngFor=\"let dayW of stateOptionsModality; index as ind\" class=\"field-checkbox\">\n <p-checkbox\n name=\"group2\"\n value=\"category\"\n [value]=\"dayW\"\n [(ngModel)]=\"selectedModality\"\n [inputId]=\"dayW.key\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n checkboxIcon=\"pi pi-check-circle\"\n (ngModelChange)=\"selectModality($event)\"\n ></p-checkbox>\n <label [for]=\"dayW.key\">{{ dayW.name }}</label>\n </div>\n <div *ngIf=\"messageAlertModality\">\n <span class=\"error-message\">Por favor selecciona una opcion</span>\n </div>\n </div>\n </div>\n </p-accordionTab>\n <p-accordionTab *ngIf=\"scorePlacementTest != null\" header=\"placement test\">\n <span>Tienes un Placement Test disponible. Puedes comenzar con el nivel {{ scorePlacementTest?.level_inglish_next.name }}</span>\n <div class=\"containerDay\">\n <h3>\u00BFDeseas aplicar el Placement Test?</h3>\n <div class=\"checkBox flex flex-wrap justify-content-between m-3\">\n <div *ngFor=\"let dayW of OptionPlacementTest; index as ind\" class=\"field-checkbox\">\n <p-checkbox\n name=\"group2\"\n value=\"category\"\n [value]=\"dayW\"\n [(ngModel)]=\"selectedOptionPlacementTest\"\n [inputId]=\"dayW.key\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n checkboxIcon=\"pi pi-check-circle\"\n (ngModelChange)=\"selectOpcionsPlacementTest($event)\"\n ></p-checkbox>\n <label [for]=\"dayW.key\">{{ dayW.name }}</label>\n </div>\n <div *ngIf=\"messageAlertPlacementTest\">\n <span class=\"error-message\">Por favor selecciona una opcion</span>\n </div>\n </div>\n </div>\n </p-accordionTab>\n\n </p-accordion>\n <div class=\"flex-none flex align-items-center justify-content-end m-2\">\n <button\n pButton\n Ripple\n type=\"button\"\n icon=\"pi pi-search\"\n class=\"p-button-rounded p-button-outlined\"\n [disabled]=\"selectedSchedules.length === 0 || selectedModality.length === 0 || scorePlacementTest != null && selectedOptionPlacementTest.length === 0 \"\n (click)=\"searchAvalaibleCourse()\"\n ></button>\n </div>\n </div>\n <!-- <div *ngIf=\"codPrevious.cod_is_Progress == false\">\n </div> -->\n </form>\n <div class=\"flex justify-content-between mt-3 align-items-center gap-3\">\n <!-- <span *ngIf=\"codSelfFormStepOne.invalid && codSelfFormStepOne.touched\" class=\"text-red-500 font-bold text-center mt-1 py-2 bg-red-100 w-full border-round-xl\">{{ errorMessage }}</span> -->\n <button\n pButton\n icon=\"pi pi-arrow-left\"\n type=\"submit\"\n (click)=\"back()\"\n ></button>\n\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n</div>\n\n<div>\n <pre>{{ codSelfFormStepTwo.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepTwo.valid | json }}</pre>\n </div>\n</div>\n\n", styles: [".container-main{margin:1%}.container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}span{color:#999;font-size:15px;font-weight:400;pointer-events:none;left:20px;top:-20px}:host ::ng-deep .p-buttonset .p-button{box-shadow:#64646f33 0 7px 29px;border-radius:6px;border:none;outline:none;transition:.2s;font-weight:300;height:28px}:host ::ng-deep .p-calendar{position:relative;display:inline-flex;max-width:100%;height:28px;box-shadow:#64646f33 0 7px 29px;border-radius:6px;border:none;outline:none;transition:.2s;font-weight:300;width:-webkit-fill-available;width:-moz-available;background-color:#fff;-webkit-appearance:none}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i6.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i7.Accordion, selector: "p-accordion", inputs: ["multiple", "style", "styleClass", "expandIcon", "collapseIcon", "activeIndex"], outputs: ["onClose", "onOpen", "activeIndexChange"] }, { kind: "component", type: i7.AccordionTab, selector: "p-accordionTab", inputs: ["header", "disabled", "cache", "transitionOptions", "selected"], outputs: ["selectedChange"] }, { kind: "component", type: i8.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "trueValue", "falseValue"], outputs: ["onChange"] }, { kind: "pipe", type: i4.JsonPipe, name: "json" }] });
196
204
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodSelfFormStepTwoComponent, decorators: [{
197
205
  type: Component,
198
- args: [{ selector: 'app-cod-self-form-step-two', template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Planes</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepTwo\">\n <!-- <div *ngIf=\"codPrevious == null\">\n <div class=\"flex flex-wrap justify-content-evenly column-gap-4 row-gap-6\">\n <div class=\"flex-column align-items-center justify-content-center w-9rem h-4rem m-2\">\n <div class=\"flex mt-3\">\n <span>Horario deseado?</span>\n </div>\n <p-calendar\n [showIcon]=\"true\"\n [icon]=\"'pi pi-clock'\"\n [timeOnly]=\"true\"\n placeholder=\"hh:mm\"\n [hourFormat]=\"'12'\"\n inputId=\"timeonly\"\n [formControl]=\"$any(codSelfFormStepTwo.controls['schedule'])\"\n (ngModelChange)=\"onDateChange($event)\"\n ></p-calendar>\n </div>\n <div *ngIf=\"codSelfFormStepTwo.controls['schedule'].invalid && codSelfFormStepTwo.controls['schedule'].touched\">\n <span class=\"error-message\">Por favor ingresa un horario deseado</span>\n </div>\n <div class=\"flex align-items-center justify-content-center w-9rem h-4rem m-2\">\n <ipt-input\n [inputType]=\"'date'\"\n [placeHolder]=\"'Posible Inicio'\"\n [control]=\"codSelfFormStepTwo.controls['to_start']\"\n (dateSelected)=\"validateDate($event)\"\n ></ipt-input>\n </div>\n <div *ngIf=\"codSelfFormStepTwo.controls['to_start'].invalid && codSelfFormStepTwo.controls['to_start'].touched\">\n <span class=\"error-message\">La fecha seleccionada debe ser mayor que la fecha actual.</span>\n </div>\n\n <div class=\"container-modality flex justify-content-center align-content-center text-center m-2 align-items-end\">\n <p-selectButton [options]=\"stateOptions\" formControlName=\"modality\" optionLabel=\"name\" optionValue=\"code\"></p-selectButton>\n </div>\n </div>\n <div class=\"flex-none flex align-items-center justify-content-end m-2\">\n <button\n pButton\n Ripple\n type=\"button\"\n icon=\"pi pi-search\"\n class=\"p-button-rounded p-button-outlined\"\n [disabled]=\"!codSelfFormStepTwo.valid\"\n (click)=\"searchAvalaibleCourse()\"\n ></button>\n </div>\n </div> -->\n <div *ngIf=\"codPrevious == null\">\n <p-accordion [multiple]=\"true\" [activeIndex]=\"[0]\">\n <p-accordionTab header=\"Jornada\">\n <div class=\"containerDay\">\n <!-- <h3>Horario</h3> -->\n <div class=\"checkBox flex flex-wrap justify-content-between m-3\">\n <div *ngFor=\"let dayW of schedules; index as ind\" class=\"field-checkbox\">\n <p-checkbox\n name=\"group2\"\n value=\"category\"\n [value]=\"dayW\"\n [(ngModel)]=\"selectedSchedules\"\n [inputId]=\"dayW.key\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n checkboxIcon=\"pi pi-check-circle\"\n (ngModelChange)=\"selectSchedules($event)\"\n ></p-checkbox>\n <label [for]=\"dayW.key\">{{ dayW.name }}</label>\n </div>\n <div *ngIf=\"messageAlertSchedules\">\n <span class=\"error-message\">Por favor selecciona una opcion</span>\n </div>\n </div>\n </div>\n </p-accordionTab>\n\n <p-accordionTab header=\"Modalidad\">\n <div class=\"containerDay\">\n <!-- <h3>Horario</h3> -->\n <div class=\"checkBox flex flex-wrap justify-content-between m-3\">\n <div *ngFor=\"let dayW of stateOptionsModality; index as ind\" class=\"field-checkbox\">\n <p-checkbox\n name=\"group2\"\n value=\"category\"\n [value]=\"dayW\"\n [(ngModel)]=\"selectedModality\"\n [inputId]=\"dayW.key\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n checkboxIcon=\"pi pi-check-circle\"\n (ngModelChange)=\"selectModality($event)\"\n ></p-checkbox>\n <label [for]=\"dayW.key\">{{ dayW.name }}</label>\n </div>\n <div *ngIf=\"messageAlertModality\">\n <span class=\"error-message\">Por favor selecciona una opcion</span>\n </div>\n </div>\n </div>\n </p-accordionTab>\n </p-accordion>\n <div class=\"flex-none flex align-items-center justify-content-end m-2\">\n <button\n pButton\n Ripple\n type=\"button\"\n icon=\"pi pi-search\"\n class=\"p-button-rounded p-button-outlined\"\n [disabled]=\"selectedSchedules.length === 0 || selectedModality.length === 0\"\n (click)=\"searchAvalaibleCourse()\"\n ></button>\n </div>\n </div>\n <!-- <div *ngIf=\"codPrevious.cod_is_Progress == false\">\n </div> -->\n </form>\n <div class=\"flex justify-content-between mt-3 align-items-center gap-3\">\n <!-- <span *ngIf=\"codSelfFormStepOne.invalid && codSelfFormStepOne.touched\" class=\"text-red-500 font-bold text-center mt-1 py-2 bg-red-100 w-full border-round-xl\">{{ errorMessage }}</span> -->\n <button\n pButton\n icon=\"pi pi-arrow-left\"\n type=\"submit\"\n (click)=\"back()\"\n ></button>\n\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n</div>\n\n<div>\n <pre>{{ codSelfFormStepTwo.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepTwo.valid | json }}</pre>\n </div>\n</div>\n\n", styles: [".container-main{margin:1%}.container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}span{color:#999;font-size:15px;font-weight:400;pointer-events:none;left:20px;top:-20px}:host ::ng-deep .p-buttonset .p-button{box-shadow:#64646f33 0 7px 29px;border-radius:6px;border:none;outline:none;transition:.2s;font-weight:300;height:28px}:host ::ng-deep .p-calendar{position:relative;display:inline-flex;max-width:100%;height:28px;box-shadow:#64646f33 0 7px 29px;border-radius:6px;border:none;outline:none;transition:.2s;font-weight:300;width:-webkit-fill-available;width:-moz-available;background-color:#fff;-webkit-appearance:none}\n"] }]
206
+ args: [{ selector: 'app-cod-self-form-step-two', template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Planes</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepTwo\">\n <!-- <div *ngIf=\"codPrevious == null\">\n <div class=\"flex flex-wrap justify-content-evenly column-gap-4 row-gap-6\">\n <div class=\"flex-column align-items-center justify-content-center w-9rem h-4rem m-2\">\n <div class=\"flex mt-3\">\n <span>Horario deseado?</span>\n </div>\n <p-calendar\n [showIcon]=\"true\"\n [icon]=\"'pi pi-clock'\"\n [timeOnly]=\"true\"\n placeholder=\"hh:mm\"\n [hourFormat]=\"'12'\"\n inputId=\"timeonly\"\n [formControl]=\"$any(codSelfFormStepTwo.controls['schedule'])\"\n (ngModelChange)=\"onDateChange($event)\"\n ></p-calendar>\n </div>\n <div *ngIf=\"codSelfFormStepTwo.controls['schedule'].invalid && codSelfFormStepTwo.controls['schedule'].touched\">\n <span class=\"error-message\">Por favor ingresa un horario deseado</span>\n </div>\n <div class=\"flex align-items-center justify-content-center w-9rem h-4rem m-2\">\n <ipt-input\n [inputType]=\"'date'\"\n [placeHolder]=\"'Posible Inicio'\"\n [control]=\"codSelfFormStepTwo.controls['to_start']\"\n (dateSelected)=\"validateDate($event)\"\n ></ipt-input>\n </div>\n <div *ngIf=\"codSelfFormStepTwo.controls['to_start'].invalid && codSelfFormStepTwo.controls['to_start'].touched\">\n <span class=\"error-message\">La fecha seleccionada debe ser mayor que la fecha actual.</span>\n </div>\n\n <div class=\"container-modality flex justify-content-center align-content-center text-center m-2 align-items-end\">\n <p-selectButton [options]=\"stateOptions\" formControlName=\"modality\" optionLabel=\"name\" optionValue=\"code\"></p-selectButton>\n </div>\n </div>\n <div class=\"flex-none flex align-items-center justify-content-end m-2\">\n <button\n pButton\n Ripple\n type=\"button\"\n icon=\"pi pi-search\"\n class=\"p-button-rounded p-button-outlined\"\n [disabled]=\"!codSelfFormStepTwo.valid\"\n (click)=\"searchAvalaibleCourse()\"\n ></button>\n </div>\n </div> -->\n <div *ngIf=\"codPrevious == null\">\n <p-accordion [multiple]=\"true\" [activeIndex]=\"[0]\">\n <p-accordionTab header=\"Jornada\">\n <div class=\"containerDay\">\n <!-- <h3>Horario</h3> -->\n <div class=\"checkBox flex flex-wrap justify-content-between m-3\">\n <div *ngFor=\"let dayW of schedules; index as ind\" class=\"field-checkbox\">\n <p-checkbox\n name=\"group2\"\n value=\"category\"\n [value]=\"dayW\"\n [(ngModel)]=\"selectedSchedules\"\n [inputId]=\"dayW.key\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n checkboxIcon=\"pi pi-check-circle\"\n (ngModelChange)=\"selectSchedules($event)\"\n ></p-checkbox>\n <label [for]=\"dayW.key\">{{ dayW.name }}</label>\n </div>\n <div *ngIf=\"messageAlertSchedules\">\n <span class=\"error-message\">Por favor selecciona una opcion</span>\n </div>\n </div>\n </div>\n </p-accordionTab>\n\n <p-accordionTab header=\"Modalidad\">\n <div class=\"containerDay\">\n <!-- <h3>Horario</h3> -->\n <div class=\"checkBox flex flex-wrap justify-content-between m-3\">\n <div *ngFor=\"let dayW of stateOptionsModality; index as ind\" class=\"field-checkbox\">\n <p-checkbox\n name=\"group2\"\n value=\"category\"\n [value]=\"dayW\"\n [(ngModel)]=\"selectedModality\"\n [inputId]=\"dayW.key\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n checkboxIcon=\"pi pi-check-circle\"\n (ngModelChange)=\"selectModality($event)\"\n ></p-checkbox>\n <label [for]=\"dayW.key\">{{ dayW.name }}</label>\n </div>\n <div *ngIf=\"messageAlertModality\">\n <span class=\"error-message\">Por favor selecciona una opcion</span>\n </div>\n </div>\n </div>\n </p-accordionTab>\n <p-accordionTab *ngIf=\"scorePlacementTest != null\" header=\"placement test\">\n <span>Tienes un Placement Test disponible. Puedes comenzar con el nivel {{ scorePlacementTest?.level_inglish_next.name }}</span>\n <div class=\"containerDay\">\n <h3>\u00BFDeseas aplicar el Placement Test?</h3>\n <div class=\"checkBox flex flex-wrap justify-content-between m-3\">\n <div *ngFor=\"let dayW of OptionPlacementTest; index as ind\" class=\"field-checkbox\">\n <p-checkbox\n name=\"group2\"\n value=\"category\"\n [value]=\"dayW\"\n [(ngModel)]=\"selectedOptionPlacementTest\"\n [inputId]=\"dayW.key\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n checkboxIcon=\"pi pi-check-circle\"\n (ngModelChange)=\"selectOpcionsPlacementTest($event)\"\n ></p-checkbox>\n <label [for]=\"dayW.key\">{{ dayW.name }}</label>\n </div>\n <div *ngIf=\"messageAlertPlacementTest\">\n <span class=\"error-message\">Por favor selecciona una opcion</span>\n </div>\n </div>\n </div>\n </p-accordionTab>\n\n </p-accordion>\n <div class=\"flex-none flex align-items-center justify-content-end m-2\">\n <button\n pButton\n Ripple\n type=\"button\"\n icon=\"pi pi-search\"\n class=\"p-button-rounded p-button-outlined\"\n [disabled]=\"selectedSchedules.length === 0 || selectedModality.length === 0 || scorePlacementTest != null && selectedOptionPlacementTest.length === 0 \"\n (click)=\"searchAvalaibleCourse()\"\n ></button>\n </div>\n </div>\n <!-- <div *ngIf=\"codPrevious.cod_is_Progress == false\">\n </div> -->\n </form>\n <div class=\"flex justify-content-between mt-3 align-items-center gap-3\">\n <!-- <span *ngIf=\"codSelfFormStepOne.invalid && codSelfFormStepOne.touched\" class=\"text-red-500 font-bold text-center mt-1 py-2 bg-red-100 w-full border-round-xl\">{{ errorMessage }}</span> -->\n <button\n pButton\n icon=\"pi pi-arrow-left\"\n type=\"submit\"\n (click)=\"back()\"\n ></button>\n\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n</div>\n\n<div>\n <pre>{{ codSelfFormStepTwo.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepTwo.valid | json }}</pre>\n </div>\n</div>\n\n", styles: [".container-main{margin:1%}.container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}span{color:#999;font-size:15px;font-weight:400;pointer-events:none;left:20px;top:-20px}:host ::ng-deep .p-buttonset .p-button{box-shadow:#64646f33 0 7px 29px;border-radius:6px;border:none;outline:none;transition:.2s;font-weight:300;height:28px}:host ::ng-deep .p-calendar{position:relative;display:inline-flex;max-width:100%;height:28px;box-shadow:#64646f33 0 7px 29px;border-radius:6px;border:none;outline:none;transition:.2s;font-weight:300;width:-webkit-fill-available;width:-moz-available;background-color:#fff;-webkit-appearance:none}\n"] }]
199
207
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i0.ChangeDetectorRef }, { type: i2.MessageService }, { type: i3.BaseService }]; }, propDecorators: { completed: [{
200
208
  type: Output
201
209
  }], scorePlacementTest: [{
@@ -203,4 +211,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImpor
203
211
  }], codPrevious: [{
204
212
  type: Input
205
213
  }] } });
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLXNlbGYtZm9ybS1zdGVwLXR3by5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29kLXNlbGYtbWFuYWdlZC9zdGVwcy9jb2QtZm9ybS1zdGVwLXR3by9jb2Qtc2VsZi1mb3JtLXN0ZXAtdHdvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qtc2VsZi1tYW5hZ2VkL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtdHdvL2NvZC1zZWxmLWZvcm0tc3RlcC10d28uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFtRCxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFFLG1CQUFtQixFQUF5QixNQUFNLG9DQUFvQyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7Ozs7O0FBVy9FLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxtQkFBbUI7SUE0QmxFLFlBQ1UsRUFBZSxFQUNmLEtBQXdCLEVBQ3hCLGNBQThCLEVBQzlCLFdBQXdCO1FBRWhDLEtBQUssRUFBRSxDQUFDO1FBTEEsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQTlCeEIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFNakQsYUFBUSxHQUFHLElBQUksc0JBQXNCLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEQsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixnQkFBVyxHQUFVLDZDQUE2QyxDQUFDO1FBQ25F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QUMsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7U0FDbEM7YUFBSTtZQUNILElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUE7U0FDbEM7SUFDSCxDQUFDOzt3SEFsTlUsMkJBQTJCOzRHQUEzQiwyQkFBMkIscU9DZHhDLDZ6TkE2SkE7MkZEL0lhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSw0QkFBNEI7eUxBTTVCLFNBQVM7c0JBQWxCLE1BQU07Z0JBRUUsa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4vLi4vLi4vLi4vY29yZS91dGlscy9iYXNlLXNlcnZpY2UvYmFzZS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBvbmVudCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uQ2hhbmdlcywgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uSW5pdCwgT25EZXN0cm95LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29kU2VsZk1hbmFnZWRTdGVwcywgbG9jYWxTdG9yYWdlVmFsdWVzVHdvIH0gZnJvbSAnLi4vLi4vbG9naWMvY29kLXNlbGYtbWFuYWdlZC1zdGVwcyc7XG5pbXBvcnQgeyBDb2RTZWxmTWFuYWdlZENvbnRyb2xzIH0gZnJvbSAnLi4vLi4vbG9naWMvY29kLXNlbGYtbWFuYWdlZC1jb250cm9scyc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRvcnMsIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IFN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBJd2Vla0RheXNScSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzL2FjYWRlbWljL2FjYWRlbWljLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jb2Qtc2VsZi1mb3JtLXN0ZXAtdHdvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvZC1zZWxmLWZvcm0tc3RlcC10d28uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2Qtc2VsZi1mb3JtLXN0ZXAtdHdvLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29kU2VsZkZvcm1TdGVwVHdvQ29tcG9uZW50IGV4dGVuZHMgQ29kU2VsZk1hbmFnZWRTdGVwcyBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcblxuICBAT3V0cHV0KCkgY29tcGxldGVkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQElucHV0KCkgc2NvcmVQbGFjZW1lbnRUZXN0Pzphbnk7XG4gIEBJbnB1dCgpIGNvZFByZXZpb3VzPzphbnk7XG5cbiAgY29kU2VsZkZvcm1TdGVwVHdvITogRm9ybUdyb3VwO1xuICBjb250cm9scyA9IG5ldyBDb2RTZWxmTWFuYWdlZENvbnRyb2xzKCkuY29udHJvbHNbMV07XG4gIHN0YXJ0RGF0ZTEhOiBzdHJpbmc7XG4gIHZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbWVzc2FnZUluZm86c3RyaW5nID0gJ0J1c2NhIHVuIHBsYW4gZGVhY3VlcmRvIGEgdHUgZGlzcG9uaWJpbGlkYWQnO1xuICBzdGF0ZU9wdGlvbnNNb2RhbGl0eTogYW55W10gPSBbXG4gICAgeyBrZXk6ICdwcicsICBuYW1lOiAnUHJlc2VuY2lhbCd9LFxuICAgIHsga2V5OiAndmknLCBuYW1lOiAnVmlydHVhbCd9LFxuICBdO1xuXG4gIHNjaGVkdWxlczogSXdlZWtEYXlzUnFbXSA9IFtcbiAgICB7IG5hbWU6ICdNYcOxYW5hJywga2V5OiAnbWEnIH0sXG4gICAgeyBuYW1lOiAnVGFyZGUnLCBrZXk6ICd0YScgfSxcbiAgICB7IG5hbWU6ICdOb2NoZScsIGtleTogJ25vJyB9LFxuICBdO1xuICBzZWxlY3RlZFNjaGVkdWxlczogSXdlZWtEYXlzUnFbXSA9IFtdO1xuICBkaXNhYmxld2Vla2RheXM6IGJvb2xlYW5bXSA9IFtdO1xuICBzZWxlY3RlZE1vZGFsaXR5Okl3ZWVrRGF5c1JxW109W11cbiAgbWVzc2FnZUFsZXJ0U2NoZWR1bGVzID0gZmFsc2U7XG4gIG1lc3NhZ2VBbGVydE1vZGFsaXR5PSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGJhc2VTZXJ2aWNlOiBCYXNlU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3RhcnRMb2NhbFN0b3JhZ2VXb3JrKCk7XG4gICAgdGhpcy52YWx1ZXNJbml0aWFsU2NoZWR1bGUoKVxuICB9XG4gIG5nT25DaGFuZ2VzKCl7XG4gICAgLy8gdGhpcy5pbml0Rm9ybSgpO1xuICAgIC8vIHRoaXMuc3RhcnRMb2NhbFN0b3JhZ2VXb3JrKCk7XG4gIH1cblxuICBpbml0Rm9ybSgpIHtcblxuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVHdvID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICAvLyBzY2hlZHVsZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgLy8gdG9fc3RhcnQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIC8vIG1vZGFsaXR5OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgLy8gYWNhZGVtaWNfcGxhbjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgLy8gY291cnNlX3R5cGU6WycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgLy8gYWdyZWVtZW50X2J5X2NhdGVnb3J5OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxdLFxuICAgICAgLy8gZW5nbGlzaF9sZXZlbDogW3t2YWx1ZTogJycsIGRpc2FibGVkOiB0cnVlfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyMCldXSxcbiAgICAgIC8vIGF2YWlsaWJsZV9jb3Vyc2VzOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAvLyBjb3Vyc2VfbW9kYWxpdHk6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdLF0sXG5cbiAgICB9KTtcbiAgfVxuICB2YWx1ZXNJbml0aWFsU2NoZWR1bGUoKSB7XG4gICAgLy8gY29uc3Qgc2NoZWR1bGVWYWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdDT0QgU0VMRiAtIHN0ZXAyKHNjaGVkdWxlKScpO1xuICAgIC8vIGNvbnN0IGNvdXJzZU1vZGFsaXR5ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0NPRCBTRUxGIC0gc3RlcDIobW9kYWxpdHkpJyk7XG5cbiAgICAvLyBpZiAoc2NoZWR1bGVWYWx1ZSAmJiBzY2hlZHVsZVZhbHVlLnRyaW0oKSAhPSAnJykge1xuICAgIC8vICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbJ3NjaGVkdWxlJ10uc2V0VmFsdWUobmV3IERhdGUoc2NoZWR1bGVWYWx1ZSkpO1xuICAgIC8vIH0gZWxzZSB7XG4gICAgLy8gICB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1snc2NoZWR1bGUnXS5zZXRWYWx1ZShuZXcgRGF0ZSgpKTtcbiAgICAvLyB9XG5cbiAgICAvLyBpZiAoY291cnNlTW9kYWxpdHkgJiYgY291cnNlTW9kYWxpdHkudHJpbSgpICE9PSAnJykge1xuICAgIC8vICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbJ21vZGFsaXR5J10uc2V0VmFsdWUocGFyc2VJbnQoY291cnNlTW9kYWxpdHkpKTtcbiAgICAvLyB9IGVsc2Uge1xuICAgIC8vICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbJ21vZGFsaXR5J10uc2V0VmFsdWUobnVsbCk7XG4gICAgLy8gfVxuICB9XG4gIGJhY2soKSB7XG4gICAgLy8gTW92ZXJub3MgYWwgcGFzbyBhbnRlcmlvclxuICAgIHRoaXMuY29tcGxldGVkLmVtaXQoMCk7XG4gIH1cbiAgc2VuZEZvcm0oKSB7XG4gICAgLy8gdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIC8vIGlmICh0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5pbnZhbGlkKSByZXR1cm47XG5cbiAgICAvLyBNb3Zlcm5vcyBhbCBwYXNvIDNcbiAgICB0aGlzLmNvbXBsZXRlZC5lbWl0KDIpO1xuICB9XG5cbiAgc3RhcnRMb2NhbFN0b3JhZ2VXb3JrKCkge1xuICAgIHRoaXMuY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIGxldCBsb2NhbFN0b3JhZ2VWYWx1ZTogbG9jYWxTdG9yYWdlVmFsdWVzVHdvID0gdGhpcy5yZWFkQW5kV3JpdGVMUygyLCBjb250cm9sLm5hbWUpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbY29udHJvbC5uYW1lXS5zZXRWYWx1ZShsb2NhbFN0b3JhZ2VWYWx1ZS52YWx1ZSk7XG4gICAgICB0aGlzLmxpc3RlbkZvcm1DaGFuZ2VzKDIsIGNvbnRyb2wubmFtZSwgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbY29udHJvbC5uYW1lXS52YWx1ZUNoYW5nZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgc2VhcmNoQXZhbGFpYmxlQ291cnNlKCl7XG5cbiAgICBjb25zdCBhZ2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQ09EIFNFTEYgLSBzdGVwMShhZ2UpJylcbiAgICBjb25zdCBncmFkZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdDT0QgU0VMRiAtIHN0ZXAxKGdyYWRlKScpXG4gICAgY29uc3QgYWdyZWVtZW50ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0NPRCBTRUxGIC0gc3RlcDEoYWdyZWVtZW50X2J5X2NhdGVnb3J5KScpXG4gICAgY29uc3QgdXNlckNvZGUgPSB0aGlzLmJhc2VTZXJ2aWNlLmdldFVzZXJDb2RlKCk7XG5cbiAgICBjb25zb2xlLmxvZyh0aGlzLnNjb3JlUGxhY2VtZW50VGVzdCk7XG4gICAgY29uc29sZS5sb2codGhpcy5jb2RQcmV2aW91cyk7XG5cbiAgICBjb25zdCByZXF1ZXN0OiBhbnkgPSB7XG4gICAgICBjb2RlX3VzZXI6IHVzZXJDb2RlLFxuICAgICAgY29kUHJldmlvdXM6IHRoaXMuY29kUHJldmlvdXMsXG4gICAgICBzY29yZVBsYWNlbWVudFRlc3Q6IHRoaXMuc2NvcmVQbGFjZW1lbnRUZXN0LFxuICAgICAgYWdlOiBhZ2UsXG4gICAgICBncmFkZTogZ3JhZGUsXG4gICAgICBhZ3JlZW1lbnQ6IGFncmVlbWVudCxcbiAgICAgIG1vZGFsaXR5OiB0aGlzLnNlbGVjdGVkTW9kYWxpdHksXG4gICAgICBzY2hlZHVsZXM6IHRoaXMuc2VsZWN0ZWRTY2hlZHVsZXNcbiAgICAgIC8vIHNjaGVkdWxlOiB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5nZXQoJ3NjaGVkdWxlJyk/LnZhbHVlLFxuICAgICAgLy8gcG9zc2libGVfc3RhcnQ6IHRoaXMuY29kU2VsZkZvcm1TdGVwVHdvLmdldCgndG9fc3RhcnQnKT8udmFsdWUsXG4gICAgICAvLyBtb2RhbGl0eTogdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uZ2V0KCdtb2RhbGl0eScpPy52YWx1ZVxuICAgIH1cbiAgICBjb25zb2xlLmxvZyhyZXF1ZXN0KTtcbiAgfVxuXG4gIGpvcm5hZGFWYWxpZGF0aW9ucygpe1xuICAgIC8vIGNvbnN0IGFyckRheSA9IFsndGltZV9zdGFydCcsICd0aW1lX2VuZCddO1xuICAgIC8vIGNvbnN0IGFyckRheVQgPSBbXTtcbiAgICAvLyBjb25zdCBhcnJZZXNDbGFzID0gW107XG4gICAgLy8gY29uc3QgYXJyTm90Q2xhcyA9IFtdO1xuXG5cbiAgfVxuICBDb3Vyc2VSZW5vdmF0aW9uVmFsaWQoKXtcblxuICB9XG4gIC8vIHZhbGlkYXRlRGF0ZShkYXRlUmVjaWI6IHN0cmluZykge1xuICAvLyAgIGNvbnN0IGRhdGVSZWNpYlRyZWFuZiA9IGRhdGVSZWNpYiArICdUMDA6MDA6MDAtMDU6MDAnO1xuICAvLyAgIGNvbnN0IGYxID0gbmV3IERhdGUoZGF0ZVJlY2liVHJlYW5mKTtcbiAgLy8gICBjb25zdCBmMiA9IG5ldyBEYXRlKCk7XG4gIC8vICAgaWYgKGYxID49IGYyKSB7XG4gIC8vICAgICB0aGlzLnN0YXJ0RGF0ZTEgPSBkYXRlUmVjaWI7XG4gIC8vICAgfSBlbHNlIGlmIChmMSA8IGYyKSB7XG4gIC8vICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1sndG9fc3RhcnQnXS5zZXRWYWx1ZShcIlwiKTtcbiAgLy8gICAgIFN3YWwuZmlyZSh7XG4gIC8vICAgICAgIHBvc2l0aW9uOiAndG9wLWVuZCcsXG4gIC8vICAgICAgIGljb246ICdlcnJvcicsXG4gIC8vICAgICAgIHRpdGxlOiAnTGEgZmVjaGEgc2VsZWNjaW9uYWRhIGRlYmUgc2VyIG1heW9yIHF1ZSBsYSBmZWNoYSBhY3R1YWwuJyxcbiAgLy8gICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxuICAvLyAgICAgICB0aW1lcjogNTAwMFxuICAvLyAgICAgfSk7XG4gIC8vICAgfVxuICAvLyB9XG4gIC8vIG9uRGF0ZUNoYW5nZShldmVudDogYW55KTogdm9pZCB7XG4gIC8vICAgICAvLyBDb252aWVydGUgbGEgZmVjaGEgYSB1bmEgY2FkZW5hIElTTyA4NjAxIHkgZ3XDoXJkYWxhIGVuIGVsIGxvY2FsU3RvcmFnZVxuICAvLyAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ0NPRCBTRUxGIC0gc3RlcDIoc2NoZWR1bGUpJywgZXZlbnQudG9JU09TdHJpbmcoKSk7XG4gIC8vIH1cblxuICBvblJlamVjdCgpIHtcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmNsZWFyKCdjb25maXJtJyk7XG4gICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gIH1cblxuICBzaG93Q29uZmlybSgpIHtcbiAgICBpZiAoIXRoaXMudmlzaWJsZSkge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IGtleTogJ2NvbmZpcm0nLCBzdGlja3k6IHRydWUsIHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdDYW4geW91IHNlbmQgbWUgdGhlIHJlcG9ydD8nLCBsaWZlOiAxMDAwMCB9KTtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RTY2hlZHVsZXMoZXZlOiBJd2Vla0RheXNScVtdKSB7XG4gICAgdGhpcy5zZWxlY3RlZFNjaGVkdWxlcyA9IGV2ZVxuICAgIGNvbnNvbGUubG9nKHRoaXMuc2VsZWN0ZWRTY2hlZHVsZXMpO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkU2NoZWR1bGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5tZXNzYWdlQWxlcnRTY2hlZHVsZXMgPSB0cnVlO1xuICAgIH1lbHNle1xuICAgICAgdGhpcy5tZXNzYWdlQWxlcnRTY2hlZHVsZXMgPSBmYWxzZVxuICAgIH1cblxuICAgIC8vIGNvbnN0IGRheXNUaGVvcnlTZWxlY3QgPSBldmUuZmlsdGVyKGRheSA9PiB0aGlzLnNlbGVjdGVkV2Vla2RheXNDbHViLmluY2x1ZGVzKGRheSkpO1xuXG4gICAgLy8gaWYgKGRheXNUaGVvcnlTZWxlY3QubGVuZ3RoID4gMCkge1xuICAgIC8vICAgU3dhbC5maXJlKHtcbiAgICAvLyAgICAgdGl0bGU6ICc8cCBzdHlsZT1cImZvbnQtZmFtaWx5OiBQb3BwaW5zXCJcIj5PcHNzITwvcD4nLFxuICAgIC8vICAgICBodG1sOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+VGhlIGNsdWIgY2xhc3Mgd2lsbCBiZSBzZWVuIHRoaXMgZGF5LjwvcD4nLFxuICAgIC8vICAgICBpY29uOiAnZXJyb3InXG4gICAgLy8gICB9KTtcbiAgICAvLyAgIGV2ZS5wb3AoKTtcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRXZWVrZGF5cyA9IGV2ZTtcbiAgICAvLyB9XG5cbiAgICAvLyBpZiAoZXZlLmxlbmd0aCA+IHRoaXMuY2xhc3Nlc1RoZW9yeVdlZWspIHtcbiAgICAvLyAgIFN3YWwuZmlyZSh7XG4gICAgLy8gICAgIHRpdGxlOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+T3BzcyE8L3A+JyxcbiAgICAvLyAgICAgaHRtbDpcbiAgICAvLyAgICAgICAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+VGhlIG51bWJlciBvZiBkYXlzIGlzIGdyZWF0ZXIgdGhhbiB0aGUgZXN0YWJsaXNoZWQgbnVtYmVyIG9mIGRheXMuPC9wPicsXG4gICAgLy8gICAgIGljb246ICdlcnJvcidcbiAgICAvLyAgIH0pO1xuICAgIC8vICAgZXZlLnBvcCgpO1xuICAgIC8vICAgdGhpcy5zZWxlY3RlZFdlZWtkYXlzID0gZXZlO1xuICAgIC8vIH1cbiAgfVxuXG4gIHNlbGVjdE1vZGFsaXR5KGV2ZTogSXdlZWtEYXlzUnFbXSl7XG4gICAgdGhpcy5zZWxlY3RlZE1vZGFsaXR5ID0gZXZlXG4gICAgY29uc29sZS5sb2codGhpcy5zZWxlY3RlZE1vZGFsaXR5KTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZE1vZGFsaXR5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5tZXNzYWdlQWxlcnRNb2RhbGl0eSA9IHRydWU7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLm1lc3NhZ2VBbGVydE1vZGFsaXR5ID0gZmFsc2VcbiAgICB9XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lci1tYWluXCI+XG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZm9ybVwiPlxuICAgIDxoMj5QbGFuZXM8L2gyPlxuICAgICAgPHAtdG9hc3QgcG9zaXRpb249XCJ0b3AtY2VudGVyXCIga2V5PVwiY29uZmlybVwiIChvbkNsb3NlKT1cIm9uUmVqZWN0KClcIiBbYmFzZVpJbmRleF09XCIxMFwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LW1lc3NhZ2UgcFRlbXBsYXRlPVwibWVzc2FnZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtc3RhcnRcIiBzdHlsZT1cImZsZXg6IDFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3FhLmlwdGRldi5jb20uY28vYXNzZXRzL2xvZ29zL3JlYWRpbmcucG5nXCIgc3R5bGU9XCJ3aWR0aDogNjVweDtcIiBzaGFwZT1cImNpcmNsZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtOTAwXCI+SmFjb2I8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtbGcgbXktMyB0ZXh0LTkwMFwiPnt7IG1lc3NhZ2VJbmZvIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3AtdG9hc3Q+XG5cbiAgICA8aSBjbGFzcz1cInBpIHBpLWV4Y2xhbWF0aW9uLWNpcmNsZSBjdXJzb3ItcG9pbnRlciB3LWF1dG9cIiAoY2xpY2spPVwic2hvd0NvbmZpcm0oKVwiPjwvaT5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImNvZFNlbGZGb3JtU3RlcFR3b1wiPlxuICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwiY29kUHJldmlvdXMgPT0gbnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAganVzdGlmeS1jb250ZW50LWV2ZW5seSBjb2x1bW4tZ2FwLTQgcm93LWdhcC02XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHctOXJlbSBoLTRyZW0gbS0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBtdC0zXCI+XG4gICAgICAgICAgICAgIDxzcGFuPkhvcmFyaW8gZGVzZWFkbz88L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxwLWNhbGVuZGFyXG4gICAgICAgICAgICAgIFtzaG93SWNvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2ljb25dPVwiJ3BpIHBpLWNsb2NrJ1wiXG4gICAgICAgICAgICAgIFt0aW1lT25seV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJoaDptbVwiXG4gICAgICAgICAgICAgIFtob3VyRm9ybWF0XT1cIicxMidcIlxuICAgICAgICAgICAgICBpbnB1dElkPVwidGltZW9ubHlcIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiJGFueShjb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbJ3NjaGVkdWxlJ10pXCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25EYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgPjwvcC1jYWxlbmRhcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwVHdvLmNvbnRyb2xzWydzY2hlZHVsZSddLmludmFsaWQgJiYgY29kU2VsZkZvcm1TdGVwVHdvLmNvbnRyb2xzWydzY2hlZHVsZSddLnRvdWNoZWRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlBvciBmYXZvciBpbmdyZXNhIHVuIGhvcmFyaW8gZGVzZWFkbzwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciB3LTlyZW0gaC00cmVtIG0tMlwiPlxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidkYXRlJ1wiXG4gICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInUG9zaWJsZSBJbmljaW8nXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwVHdvLmNvbnRyb2xzWyd0b19zdGFydCddXCJcbiAgICAgICAgICAgICAgKGRhdGVTZWxlY3RlZCk9XCJ2YWxpZGF0ZURhdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwVHdvLmNvbnRyb2xzWyd0b19zdGFydCddLmludmFsaWQgJiYgY29kU2VsZkZvcm1TdGVwVHdvLmNvbnRyb2xzWyd0b19zdGFydCddLnRvdWNoZWRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPkxhIGZlY2hhIHNlbGVjY2lvbmFkYSBkZWJlIHNlciBtYXlvciBxdWUgbGEgZmVjaGEgYWN0dWFsLjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItbW9kYWxpdHkgZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWNvbnRlbnQtY2VudGVyIHRleHQtY2VudGVyIG0tMiBhbGlnbi1pdGVtcy1lbmRcIj5cbiAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiBbb3B0aW9uc109XCJzdGF0ZU9wdGlvbnNcIiBmb3JtQ29udHJvbE5hbWU9XCJtb2RhbGl0eVwiIG9wdGlvbkxhYmVsPVwibmFtZVwiIG9wdGlvblZhbHVlPVwiY29kZVwiPjwvcC1zZWxlY3RCdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ub25lIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmQgbS0yXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgUmlwcGxlXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGljb249XCJwaSBwaS1zZWFyY2hcIlxuICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLW91dGxpbmVkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY29kU2VsZkZvcm1TdGVwVHdvLnZhbGlkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWFyY2hBdmFsYWlibGVDb3Vyc2UoKVwiXG4gICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PiAtLT5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb2RQcmV2aW91cyA9PSBudWxsXCI+XG4gICAgICAgIDxwLWFjY29yZGlvbiBbbXVsdGlwbGVdPVwidHJ1ZVwiIFthY3RpdmVJbmRleF09XCJbMF1cIj5cbiAgICAgICAgICA8cC1hY2NvcmRpb25UYWIgaGVhZGVyPVwiSm9ybmFkYVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lckRheVwiPlxuICAgICAgICAgICAgICA8IS0tIDxoMz5Ib3JhcmlvPC9oMz4gLS0+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja0JveCBmbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtLTNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXlXIG9mIHNjaGVkdWxlczsgaW5kZXggYXMgaW5kXCIgY2xhc3M9XCJmaWVsZC1jaGVja2JveFwiPlxuICAgICAgICAgICAgICAgICAgPHAtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImdyb3VwMlwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF5V1wiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRTY2hlZHVsZXNcIlxuICAgICAgICAgICAgICAgICAgICBbaW5wdXRJZF09XCJkYXlXLmtleVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxld2Vla2RheXNbaW5kXVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrYm94SWNvbj1cInBpIHBpLWNoZWNrLWNpcmNsZVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdFNjaGVkdWxlcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgID48L3AtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJkYXlXLmtleVwiPnt7IGRheVcubmFtZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1lc3NhZ2VBbGVydFNjaGVkdWxlc1wiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+UG9yIGZhdm9yIHNlbGVjY2lvbmEgdW5hIG9wY2lvbjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvcC1hY2NvcmRpb25UYWI+XG5cbiAgICAgICAgICA8cC1hY2NvcmRpb25UYWIgaGVhZGVyPVwiTW9kYWxpZGFkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyRGF5XCI+XG4gICAgICAgICAgICAgIDwhLS0gPGgzPkhvcmFyaW88L2gzPiAtLT5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrQm94IGZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG0tM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRheVcgb2Ygc3RhdGVPcHRpb25zTW9kYWxpdHk7IGluZGV4IGFzIGluZFwiIGNsYXNzPVwiZmllbGQtY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgICAgIDxwLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJncm91cDJcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRheVdcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTW9kYWxpdHlcIlxuICAgICAgICAgICAgICAgICAgICBbaW5wdXRJZF09XCJkYXlXLmtleVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxld2Vla2RheXNbaW5kXVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrYm94SWNvbj1cInBpIHBpLWNoZWNrLWNpcmNsZVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdE1vZGFsaXR5KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgPjwvcC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImRheVcua2V5XCI+e3sgZGF5Vy5uYW1lIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibWVzc2FnZUFsZXJ0TW9kYWxpdHlcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlBvciBmYXZvciBzZWxlY2Npb25hIHVuYSBvcGNpb248L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3AtYWNjb3JkaW9uVGFiPlxuICAgICAgICA8L3AtYWNjb3JkaW9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ub25lIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmQgbS0yXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgUmlwcGxlXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGljb249XCJwaSBwaS1zZWFyY2hcIlxuICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLW91dGxpbmVkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWxlY3RlZFNjaGVkdWxlcy5sZW5ndGggPT09IDAgfHwgc2VsZWN0ZWRNb2RhbGl0eS5sZW5ndGggPT09IDBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlYXJjaEF2YWxhaWJsZUNvdXJzZSgpXCJcbiAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIDxkaXYgKm5nSWY9XCJjb2RQcmV2aW91cy5jb2RfaXNfUHJvZ3Jlc3MgPT0gZmFsc2VcIj5cbiAgICAgIDwvZGl2PiAtLT5cbiAgICA8L2Zvcm0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMyBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgIDwhLS0gPHNwYW4gKm5nSWY9XCJjb2RTZWxmRm9ybVN0ZXBPbmUuaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBPbmUudG91Y2hlZFwiIGNsYXNzPVwidGV4dC1yZWQtNTAwIGZvbnQtYm9sZCB0ZXh0LWNlbnRlciBtdC0xIHB5LTIgYmctcmVkLTEwMCB3LWZ1bGwgYm9yZGVyLXJvdW5kLXhsXCI+e3sgZXJyb3JNZXNzYWdlIH19PC9zcGFuPiAtLT5cbiAgICAgIDxidXR0b25cbiAgICAgIHBCdXR0b25cbiAgICAgIGljb249XCJwaSBwaS1hcnJvdy1sZWZ0XCJcbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgKGNsaWNrKT1cImJhY2soKVwiXG4gICAgICA+PC9idXR0b24+XG5cbiAgICAgIDxidXR0b25cbiAgICAgIHBCdXR0b25cbiAgICAgIGljb249XCJwaSBwaS1hcnJvdy1yaWdodFwiXG4gICAgICAoY2xpY2spPVwic2VuZEZvcm0oKVwiXG4gICAgICA+PC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXY+XG4gIDxwcmU+e3sgY29kU2VsZkZvcm1TdGVwVHdvLnZhbHVlIHwganNvbiB9fTwvcHJlPlxuICA8ZGl2PlxuICAgIDxwcmU+e3sgY29kU2VsZkZvcm1TdGVwVHdvLnZhbGlkIHwganNvbiB9fTwvcHJlPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLXNlbGYtZm9ybS1zdGVwLXR3by5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29kLXNlbGYtbWFuYWdlZC9zdGVwcy9jb2QtZm9ybS1zdGVwLXR3by9jb2Qtc2VsZi1mb3JtLXN0ZXAtdHdvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qtc2VsZi1tYW5hZ2VkL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtdHdvL2NvZC1zZWxmLWZvcm0tc3RlcC10d28uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFtRCxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFFLG1CQUFtQixFQUF5QixNQUFNLG9DQUFvQyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7Ozs7O0FBVS9FLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxtQkFBbUI7SUFpQ2xFLFlBQ1UsRUFBZSxFQUNmLEtBQXdCLEVBQ3hCLGNBQThCLEVBQzlCLFdBQXdCO1FBRWhDLEtBQUssRUFBRSxDQUFDO1FBTEEsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQW5DeEIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFNakQsYUFBUSxHQUFHLElBQUksc0JBQXNCLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEQsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixnQkFBVyxHQUFVLDZDQUE2QyxDQUFDO1FBQ25FLHlCQUFvQixHQUFVO1lBQzVCLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRyxJQUFJLEVBQUUsWUFBWSxFQUFDO1lBQ2pDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFDO1NBQzlCLENBQUM7UUFDRixjQUFTLEdBQWtCO1lBQ3pCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFO1lBQzdCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFO1lBQzVCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFO1NBQzdCLENBQUM7UUFDRix3QkFBbUIsR0FBUTtZQUN6QixFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUcsSUFBSSxFQUFFLElBQUksRUFBQztZQUN6QixFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUcsSUFBSSxFQUFFLElBQUksRUFBQztTQUMxQixDQUFDO1FBQ0Ysc0JBQWlCLEdBQWtCLEVBQUUsQ0FBQztRQUN0QyxvQkFBZSxHQUFjLEVBQUUsQ0FBQztRQUNoQyxxQkFBZ0IsR0FBZSxFQUFFLENBQUE7UUFDakMsZ0NBQTJCLEdBQWUsRUFBRSxDQUFBO1FBQzVDLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUM5Qix5QkFBb0IsR0FBRSxLQUFLLENBQUM7UUFDNUIsOEJBQXlCLEdBQUUsS0FBSyxDQUFDO1FBUy9CLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFBO0lBQzlCLENBQUM7SUFDRCxXQUFXO1FBQ1QsbUJBQW1CO1FBQ25CLGdDQUFnQztJQUNsQyxDQUFDO0lBRUQsUUFBUTtRQUVOLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUN0Qyx5Q0FBeUM7UUFDekMseUNBQXlDO1FBQ3pDLHVDQUF1QztRQUN2Qyw4Q0FBOEM7UUFDOUMsMkNBQTJDO1FBQzNDLHVEQUF1RDtRQUN2RCwwSEFBMEg7UUFDMUgsa0RBQWtEO1FBQ2xELGlEQUFpRDtTQUVsRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QscUJBQXFCO1FBQ25CLDRFQUE0RTtRQUM1RSw2RUFBNkU7UUFFN0UscURBQXFEO1FBQ3JELG9GQUFvRjtRQUNwRixXQUFXO1FBQ1gsdUVBQXVFO1FBQ3ZFLElBQUk7UUFFSix3REFBd0Q7UUFDeEQscUZBQXFGO1FBQ3JGLFdBQVc7UUFDWCxpRUFBaUU7UUFDakUsSUFBSTtJQUNOLENBQUM7SUFDRCxJQUFJO1FBQ0YsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxRQUFRO1FBQ04sOENBQThDO1FBQzlDLCtDQUErQztRQUUvQyxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUM5QixJQUFJLGlCQUFpQixHQUEwQixJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2RyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxxQkFBcUI7UUFFbkIsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1FBQ3pELE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQTtRQUM3RCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLHlDQUF5QyxDQUFDLENBQUE7UUFDakYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVoRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTlCLE1BQU0sT0FBTyxHQUFRO1lBQ25CLFNBQVMsRUFBRSxRQUFRO1lBQ25CLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzNDLEdBQUcsRUFBRSxHQUFHO1lBQ1IsS0FBSyxFQUFFLEtBQUs7WUFDWixTQUFTLEVBQUUsU0FBUztZQUNwQixRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUMvQixTQUFTLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtZQUNqQyw0REFBNEQ7WUFDNUQsa0VBQWtFO1lBQ2xFLDJEQUEyRDtTQUM1RCxDQUFBO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsb0NBQW9DO0lBQ3BDLDJEQUEyRDtJQUMzRCwwQ0FBMEM7SUFDMUMsMkJBQTJCO0lBQzNCLG9CQUFvQjtJQUNwQixtQ0FBbUM7SUFDbkMsMEJBQTBCO0lBQzFCLGlFQUFpRTtJQUNqRSxrQkFBa0I7SUFDbEIsNkJBQTZCO0lBQzdCLHVCQUF1QjtJQUN2Qiw0RUFBNEU7SUFDNUUsa0NBQWtDO0lBQ2xDLG9CQUFvQjtJQUNwQixVQUFVO0lBQ1YsTUFBTTtJQUNOLElBQUk7SUFDSixtQ0FBbUM7SUFDbkMsZ0ZBQWdGO0lBQ2hGLCtFQUErRTtJQUMvRSxJQUFJO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNwSSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsR0FBa0I7UUFDaEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQTtRQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3BDLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDdkMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztTQUNuQzthQUFJO1lBQ0gsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQTtTQUNuQztRQUVELHVGQUF1RjtRQUV2RixxQ0FBcUM7UUFDckMsZ0JBQWdCO1FBQ2hCLDJEQUEyRDtRQUMzRCwwRkFBMEY7UUFDMUYsb0JBQW9CO1FBQ3BCLFFBQVE7UUFDUixlQUFlO1FBQ2YsaUNBQWlDO1FBQ2pDLElBQUk7UUFFSiw2Q0FBNkM7UUFDN0MsZ0JBQWdCO1FBQ2hCLDJEQUEyRDtRQUMzRCxZQUFZO1FBQ1osbUhBQW1IO1FBQ25ILG9CQUFvQjtRQUNwQixRQUFRO1FBQ1IsZUFBZTtRQUNmLGlDQUFpQztRQUNqQyxJQUFJO0lBQ04sQ0FBQztJQUVELGNBQWMsQ0FBQyxHQUFrQjtRQUMvQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFBO1FBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbkMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN0QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1NBQ2xDO2FBQUk7WUFDSCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFBO1NBQ2xDO0lBQ0gsQ0FBQztJQUNELDBCQUEwQixDQUFDLEdBQWtCO1FBQzNDLElBQUksQ0FBQywyQkFBMkIsR0FBRyxHQUFHLENBQUE7UUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUM5QyxJQUFJLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2pELElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7U0FDdkM7YUFBSTtZQUNILElBQUksQ0FBQyx5QkFBeUIsR0FBRyxLQUFLLENBQUE7U0FDdkM7SUFDSCxDQUFDOzt3SEFyTlUsMkJBQTJCOzRHQUEzQiwyQkFBMkIscU9DYnhDLGt3UUF1TEE7MkZEMUthLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSw0QkFBNEI7eUxBTTVCLFNBQVM7c0JBQWxCLE1BQU07Z0JBRUUsa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4vLi4vLi4vLi4vY29yZS91dGlscy9iYXNlLXNlcnZpY2UvYmFzZS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBvbmVudCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uQ2hhbmdlcywgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uSW5pdCwgT25EZXN0cm95LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29kU2VsZk1hbmFnZWRTdGVwcywgbG9jYWxTdG9yYWdlVmFsdWVzVHdvIH0gZnJvbSAnLi4vLi4vbG9naWMvY29kLXNlbGYtbWFuYWdlZC1zdGVwcyc7XG5pbXBvcnQgeyBDb2RTZWxmTWFuYWdlZENvbnRyb2xzIH0gZnJvbSAnLi4vLi4vbG9naWMvY29kLXNlbGYtbWFuYWdlZC1jb250cm9scyc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRvcnMsIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBJd2Vla0RheXNScSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzL2FjYWRlbWljL2FjYWRlbWljLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jb2Qtc2VsZi1mb3JtLXN0ZXAtdHdvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvZC1zZWxmLWZvcm0tc3RlcC10d28uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2Qtc2VsZi1mb3JtLXN0ZXAtdHdvLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29kU2VsZkZvcm1TdGVwVHdvQ29tcG9uZW50IGV4dGVuZHMgQ29kU2VsZk1hbmFnZWRTdGVwcyBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcblxuICBAT3V0cHV0KCkgY29tcGxldGVkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQElucHV0KCkgc2NvcmVQbGFjZW1lbnRUZXN0Pzphbnk7XG4gIEBJbnB1dCgpIGNvZFByZXZpb3VzPzphbnk7XG5cbiAgY29kU2VsZkZvcm1TdGVwVHdvITogRm9ybUdyb3VwO1xuICBjb250cm9scyA9IG5ldyBDb2RTZWxmTWFuYWdlZENvbnRyb2xzKCkuY29udHJvbHNbMV07XG4gIHN0YXJ0RGF0ZTEhOiBzdHJpbmc7XG4gIHZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbWVzc2FnZUluZm86c3RyaW5nID0gJ0J1c2NhIHVuIHBsYW4gZGVhY3VlcmRvIGEgdHUgZGlzcG9uaWJpbGlkYWQnO1xuICBzdGF0ZU9wdGlvbnNNb2RhbGl0eTogYW55W10gPSBbXG4gICAgeyBrZXk6ICdwcicsICBuYW1lOiAnUHJlc2VuY2lhbCd9LFxuICAgIHsga2V5OiAndmknLCBuYW1lOiAnVmlydHVhbCd9LFxuICBdO1xuICBzY2hlZHVsZXM6IEl3ZWVrRGF5c1JxW10gPSBbXG4gICAgeyBuYW1lOiAnTWHDsWFuYScsIGtleTogJ21hJyB9LFxuICAgIHsgbmFtZTogJ1RhcmRlJywga2V5OiAndGEnIH0sXG4gICAgeyBuYW1lOiAnTm9jaGUnLCBrZXk6ICdubycgfSxcbiAgXTtcbiAgT3B0aW9uUGxhY2VtZW50VGVzdDogYW55W109W1xuICAgIHsga2V5OiAnc2knLCAgbmFtZTogJ1NpJ30sXG4gICAgeyBrZXk6ICdubycsICBuYW1lOiAnTm8nfSxcbiAgXTtcbiAgc2VsZWN0ZWRTY2hlZHVsZXM6IEl3ZWVrRGF5c1JxW10gPSBbXTtcbiAgZGlzYWJsZXdlZWtkYXlzOiBib29sZWFuW10gPSBbXTtcbiAgc2VsZWN0ZWRNb2RhbGl0eTpJd2Vla0RheXNScVtdPVtdXG4gIHNlbGVjdGVkT3B0aW9uUGxhY2VtZW50VGVzdDpJd2Vla0RheXNScVtdPVtdXG4gIG1lc3NhZ2VBbGVydFNjaGVkdWxlcyA9IGZhbHNlO1xuICBtZXNzYWdlQWxlcnRNb2RhbGl0eT0gZmFsc2U7XG4gIG1lc3NhZ2VBbGVydFBsYWNlbWVudFRlc3Q9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFzZVNlcnZpY2U6IEJhc2VTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydExvY2FsU3RvcmFnZVdvcmsoKTtcbiAgICB0aGlzLnZhbHVlc0luaXRpYWxTY2hlZHVsZSgpXG4gIH1cbiAgbmdPbkNoYW5nZXMoKXtcbiAgICAvLyB0aGlzLmluaXRGb3JtKCk7XG4gICAgLy8gdGhpcy5zdGFydExvY2FsU3RvcmFnZVdvcmsoKTtcbiAgfVxuXG4gIGluaXRGb3JtKCkge1xuXG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIC8vIHNjaGVkdWxlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAvLyB0b19zdGFydDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgLy8gbW9kYWxpdHk6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAvLyBhY2FkZW1pY19wbGFuOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAvLyBjb3Vyc2VfdHlwZTpbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAvLyBhZ3JlZW1lbnRfYnlfY2F0ZWdvcnk6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdLF0sXG4gICAgICAvLyBlbmdsaXNoX2xldmVsOiBbe3ZhbHVlOiAnJywgZGlzYWJsZWQ6IHRydWV9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwKV1dLFxuICAgICAgLy8gYXZhaWxpYmxlX2NvdXJzZXM6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIC8vIGNvdXJzZV9tb2RhbGl0eTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXSxcblxuICAgIH0pO1xuICB9XG4gIHZhbHVlc0luaXRpYWxTY2hlZHVsZSgpIHtcbiAgICAvLyBjb25zdCBzY2hlZHVsZVZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0NPRCBTRUxGIC0gc3RlcDIoc2NoZWR1bGUpJyk7XG4gICAgLy8gY29uc3QgY291cnNlTW9kYWxpdHkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQ09EIFNFTEYgLSBzdGVwMihtb2RhbGl0eSknKTtcblxuICAgIC8vIGlmIChzY2hlZHVsZVZhbHVlICYmIHNjaGVkdWxlVmFsdWUudHJpbSgpICE9ICcnKSB7XG4gICAgLy8gICB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1snc2NoZWR1bGUnXS5zZXRWYWx1ZShuZXcgRGF0ZShzY2hlZHVsZVZhbHVlKSk7XG4gICAgLy8gfSBlbHNlIHtcbiAgICAvLyAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVHdvLmNvbnRyb2xzWydzY2hlZHVsZSddLnNldFZhbHVlKG5ldyBEYXRlKCkpO1xuICAgIC8vIH1cblxuICAgIC8vIGlmIChjb3Vyc2VNb2RhbGl0eSAmJiBjb3Vyc2VNb2RhbGl0eS50cmltKCkgIT09ICcnKSB7XG4gICAgLy8gICB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1snbW9kYWxpdHknXS5zZXRWYWx1ZShwYXJzZUludChjb3Vyc2VNb2RhbGl0eSkpO1xuICAgIC8vIH0gZWxzZSB7XG4gICAgLy8gICB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1snbW9kYWxpdHknXS5zZXRWYWx1ZShudWxsKTtcbiAgICAvLyB9XG4gIH1cbiAgYmFjaygpIHtcbiAgICAvLyBNb3Zlcm5vcyBhbCBwYXNvIGFudGVyaW9yXG4gICAgdGhpcy5jb21wbGV0ZWQuZW1pdCgwKTtcbiAgfVxuICBzZW5kRm9ybSgpIHtcbiAgICAvLyB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgLy8gaWYgKHRoaXMuY29kU2VsZkZvcm1TdGVwVHdvLmludmFsaWQpIHJldHVybjtcblxuICAgIC8vIE1vdmVybm9zIGFsIHBhc28gM1xuICAgIHRoaXMuY29tcGxldGVkLmVtaXQoMik7XG4gIH1cblxuICBzdGFydExvY2FsU3RvcmFnZVdvcmsoKSB7XG4gICAgdGhpcy5jb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgbGV0IGxvY2FsU3RvcmFnZVZhbHVlOiBsb2NhbFN0b3JhZ2VWYWx1ZXNUd28gPSB0aGlzLnJlYWRBbmRXcml0ZUxTKDIsIGNvbnRyb2wubmFtZSk7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1tjb250cm9sLm5hbWVdLnNldFZhbHVlKGxvY2FsU3RvcmFnZVZhbHVlLnZhbHVlKTtcbiAgICAgIHRoaXMubGlzdGVuRm9ybUNoYW5nZXMoMiwgY29udHJvbC5uYW1lLCB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1tjb250cm9sLm5hbWVdLnZhbHVlQ2hhbmdlcyk7XG4gICAgfSk7XG4gIH1cblxuICBzZWFyY2hBdmFsYWlibGVDb3Vyc2UoKXtcblxuICAgIGNvbnN0IGFnZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdDT0QgU0VMRiAtIHN0ZXAxKGFnZSknKVxuICAgIGNvbnN0IGdyYWRlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0NPRCBTRUxGIC0gc3RlcDEoZ3JhZGUpJylcbiAgICBjb25zdCBhZ3JlZW1lbnQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQ09EIFNFTEYgLSBzdGVwMShhZ3JlZW1lbnRfYnlfY2F0ZWdvcnkpJylcbiAgICBjb25zdCB1c2VyQ29kZSA9IHRoaXMuYmFzZVNlcnZpY2UuZ2V0VXNlckNvZGUoKTtcblxuICAgIGNvbnNvbGUubG9nKHRoaXMuc2NvcmVQbGFjZW1lbnRUZXN0KTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNvZFByZXZpb3VzKTtcblxuICAgIGNvbnN0IHJlcXVlc3Q6IGFueSA9IHtcbiAgICAgIGNvZGVfdXNlcjogdXNlckNvZGUsXG4gICAgICBjb2RQcmV2aW91czogdGhpcy5jb2RQcmV2aW91cyxcbiAgICAgIHNjb3JlUGxhY2VtZW50VGVzdDogdGhpcy5zY29yZVBsYWNlbWVudFRlc3QsXG4gICAgICBhZ2U6IGFnZSxcbiAgICAgIGdyYWRlOiBncmFkZSxcbiAgICAgIGFncmVlbWVudDogYWdyZWVtZW50LFxuICAgICAgbW9kYWxpdHk6IHRoaXMuc2VsZWN0ZWRNb2RhbGl0eSxcbiAgICAgIHNjaGVkdWxlczogdGhpcy5zZWxlY3RlZFNjaGVkdWxlc1xuICAgICAgLy8gc2NoZWR1bGU6IHRoaXMuY29kU2VsZkZvcm1TdGVwVHdvLmdldCgnc2NoZWR1bGUnKT8udmFsdWUsXG4gICAgICAvLyBwb3NzaWJsZV9zdGFydDogdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uZ2V0KCd0b19zdGFydCcpPy52YWx1ZSxcbiAgICAgIC8vIG1vZGFsaXR5OiB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5nZXQoJ21vZGFsaXR5Jyk/LnZhbHVlXG4gICAgfVxuICAgIGNvbnNvbGUubG9nKHJlcXVlc3QpO1xuICB9XG5cbiAgLy8gdmFsaWRhdGVEYXRlKGRhdGVSZWNpYjogc3RyaW5nKSB7XG4gIC8vICAgY29uc3QgZGF0ZVJlY2liVHJlYW5mID0gZGF0ZVJlY2liICsgJ1QwMDowMDowMC0wNTowMCc7XG4gIC8vICAgY29uc3QgZjEgPSBuZXcgRGF0ZShkYXRlUmVjaWJUcmVhbmYpO1xuICAvLyAgIGNvbnN0IGYyID0gbmV3IERhdGUoKTtcbiAgLy8gICBpZiAoZjEgPj0gZjIpIHtcbiAgLy8gICAgIHRoaXMuc3RhcnREYXRlMSA9IGRhdGVSZWNpYjtcbiAgLy8gICB9IGVsc2UgaWYgKGYxIDwgZjIpIHtcbiAgLy8gICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVHdvLmNvbnRyb2xzWyd0b19zdGFydCddLnNldFZhbHVlKFwiXCIpO1xuICAvLyAgICAgU3dhbC5maXJlKHtcbiAgLy8gICAgICAgcG9zaXRpb246ICd0b3AtZW5kJyxcbiAgLy8gICAgICAgaWNvbjogJ2Vycm9yJyxcbiAgLy8gICAgICAgdGl0bGU6ICdMYSBmZWNoYSBzZWxlY2Npb25hZGEgZGViZSBzZXIgbWF5b3IgcXVlIGxhIGZlY2hhIGFjdHVhbC4nLFxuICAvLyAgICAgICBzaG93Q29uZmlybUJ1dHRvbjogZmFsc2UsXG4gIC8vICAgICAgIHRpbWVyOiA1MDAwXG4gIC8vICAgICB9KTtcbiAgLy8gICB9XG4gIC8vIH1cbiAgLy8gb25EYXRlQ2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgLy8gICAgIC8vIENvbnZpZXJ0ZSBsYSBmZWNoYSBhIHVuYSBjYWRlbmEgSVNPIDg2MDEgeSBndcOhcmRhbGEgZW4gZWwgbG9jYWxTdG9yYWdlXG4gIC8vICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQ09EIFNFTEYgLSBzdGVwMihzY2hlZHVsZSknLCBldmVudC50b0lTT1N0cmluZygpKTtcbiAgLy8gfVxuXG4gIG9uUmVqZWN0KCkge1xuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuY2xlYXIoJ2NvbmZpcm0nKTtcbiAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgfVxuXG4gIHNob3dDb25maXJtKCkge1xuICAgIGlmICghdGhpcy52aXNpYmxlKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsga2V5OiAnY29uZmlybScsIHN0aWNreTogdHJ1ZSwgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ0NhbiB5b3Ugc2VuZCBtZSB0aGUgcmVwb3J0PycsIGxpZmU6IDEwMDAwIH0pO1xuICAgICAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFNjaGVkdWxlcyhldmU6IEl3ZWVrRGF5c1JxW10pIHtcbiAgICB0aGlzLnNlbGVjdGVkU2NoZWR1bGVzID0gZXZlXG4gICAgY29uc29sZS5sb2codGhpcy5zZWxlY3RlZFNjaGVkdWxlcyk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRTY2hlZHVsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VBbGVydFNjaGVkdWxlcyA9IHRydWU7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLm1lc3NhZ2VBbGVydFNjaGVkdWxlcyA9IGZhbHNlXG4gICAgfVxuXG4gICAgLy8gY29uc3QgZGF5c1RoZW9yeVNlbGVjdCA9IGV2ZS5maWx0ZXIoZGF5ID0+IHRoaXMuc2VsZWN0ZWRXZWVrZGF5c0NsdWIuaW5jbHVkZXMoZGF5KSk7XG5cbiAgICAvLyBpZiAoZGF5c1RoZW9yeVNlbGVjdC5sZW5ndGggPiAwKSB7XG4gICAgLy8gICBTd2FsLmZpcmUoe1xuICAgIC8vICAgICB0aXRsZTogJzxwIHN0eWxlPVwiZm9udC1mYW1pbHk6IFBvcHBpbnNcIlwiPk9wc3MhPC9wPicsXG4gICAgLy8gICAgIGh0bWw6ICc8cCBzdHlsZT1cImZvbnQtZmFtaWx5OiBQb3BwaW5zXCJcIj5UaGUgY2x1YiBjbGFzcyB3aWxsIGJlIHNlZW4gdGhpcyBkYXkuPC9wPicsXG4gICAgLy8gICAgIGljb246ICdlcnJvcidcbiAgICAvLyAgIH0pO1xuICAgIC8vICAgZXZlLnBvcCgpO1xuICAgIC8vICAgdGhpcy5zZWxlY3RlZFdlZWtkYXlzID0gZXZlO1xuICAgIC8vIH1cblxuICAgIC8vIGlmIChldmUubGVuZ3RoID4gdGhpcy5jbGFzc2VzVGhlb3J5V2Vlaykge1xuICAgIC8vICAgU3dhbC5maXJlKHtcbiAgICAvLyAgICAgdGl0bGU6ICc8cCBzdHlsZT1cImZvbnQtZmFtaWx5OiBQb3BwaW5zXCJcIj5PcHNzITwvcD4nLFxuICAgIC8vICAgICBodG1sOlxuICAgIC8vICAgICAgICc8cCBzdHlsZT1cImZvbnQtZmFtaWx5OiBQb3BwaW5zXCJcIj5UaGUgbnVtYmVyIG9mIGRheXMgaXMgZ3JlYXRlciB0aGFuIHRoZSBlc3RhYmxpc2hlZCBudW1iZXIgb2YgZGF5cy48L3A+JyxcbiAgICAvLyAgICAgaWNvbjogJ2Vycm9yJ1xuICAgIC8vICAgfSk7XG4gICAgLy8gICBldmUucG9wKCk7XG4gICAgLy8gICB0aGlzLnNlbGVjdGVkV2Vla2RheXMgPSBldmU7XG4gICAgLy8gfVxuICB9XG5cbiAgc2VsZWN0TW9kYWxpdHkoZXZlOiBJd2Vla0RheXNScVtdKXtcbiAgICB0aGlzLnNlbGVjdGVkTW9kYWxpdHkgPSBldmVcbiAgICBjb25zb2xlLmxvZyh0aGlzLnNlbGVjdGVkTW9kYWxpdHkpO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkTW9kYWxpdHkubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VBbGVydE1vZGFsaXR5ID0gdHJ1ZTtcbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMubWVzc2FnZUFsZXJ0TW9kYWxpdHkgPSBmYWxzZVxuICAgIH1cbiAgfVxuICBzZWxlY3RPcGNpb25zUGxhY2VtZW50VGVzdChldmU6IEl3ZWVrRGF5c1JxW10pe1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25QbGFjZW1lbnRUZXN0ID0gZXZlXG4gICAgY29uc29sZS5sb2codGhpcy5zZWxlY3RlZE9wdGlvblBsYWNlbWVudFRlc3QpO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9uUGxhY2VtZW50VGVzdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMubWVzc2FnZUFsZXJ0UGxhY2VtZW50VGVzdCA9IHRydWU7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLm1lc3NhZ2VBbGVydFBsYWNlbWVudFRlc3QgPSBmYWxzZVxuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLW1haW5cIj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mb3JtXCI+XG4gICAgPGgyPlBsYW5lczwvaDI+XG4gICAgICA8cC10b2FzdCBwb3NpdGlvbj1cInRvcC1jZW50ZXJcIiBrZXk9XCJjb25maXJtXCIgKG9uQ2xvc2UpPVwib25SZWplY3QoKVwiIFtiYXNlWkluZGV4XT1cIjEwXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbWVzc2FnZSBwVGVtcGxhdGU9XCJtZXNzYWdlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1zdGFydFwiIHN0eWxlPVwiZmxleDogMVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcWEuaXB0ZGV2LmNvbS5jby9hc3NldHMvbG9nb3MvcmVhZGluZy5wbmdcIiBzdHlsZT1cIndpZHRoOiA2NXB4O1wiIHNoYXBlPVwiY2lyY2xlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvbGQgdGV4dC05MDBcIj5KYWNvYjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC1sZyBteS0zIHRleHQtOTAwXCI+e3sgbWVzc2FnZUluZm8gfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvcC10b2FzdD5cblxuICAgIDxpIGNsYXNzPVwicGkgcGktZXhjbGFtYXRpb24tY2lyY2xlIGN1cnNvci1wb2ludGVyIHctYXV0b1wiIChjbGljayk9XCJzaG93Q29uZmlybSgpXCI+PC9pPlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiY29kU2VsZkZvcm1TdGVwVHdvXCI+XG4gICAgICA8IS0tIDxkaXYgKm5nSWY9XCJjb2RQcmV2aW91cyA9PSBudWxsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWNvbnRlbnQtZXZlbmx5IGNvbHVtbi1nYXAtNCByb3ctZ2FwLTZcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgdy05cmVtIGgtNHJlbSBtLTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IG10LTNcIj5cbiAgICAgICAgICAgICAgPHNwYW4+SG9yYXJpbyBkZXNlYWRvPzwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHAtY2FsZW5kYXJcbiAgICAgICAgICAgICAgW3Nob3dJY29uXT1cInRydWVcIlxuICAgICAgICAgICAgICBbaWNvbl09XCIncGkgcGktY2xvY2snXCJcbiAgICAgICAgICAgICAgW3RpbWVPbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImhoOm1tXCJcbiAgICAgICAgICAgICAgW2hvdXJGb3JtYXRdPVwiJzEyJ1wiXG4gICAgICAgICAgICAgIGlucHV0SWQ9XCJ0aW1lb25seVwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCIkYW55KGNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1snc2NoZWR1bGUnXSlcIlxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC9wLWNhbGVuZGFyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbJ3NjaGVkdWxlJ10uaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbJ3NjaGVkdWxlJ10udG91Y2hlZFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+UG9yIGZhdm9yIGluZ3Jlc2EgdW4gaG9yYXJpbyBkZXNlYWRvPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHctOXJlbSBoLTRyZW0gbS0yXCI+XG4gICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ2RhdGUnXCJcbiAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidQb3NpYmxlIEluaWNpbydcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJjb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbJ3RvX3N0YXJ0J11cIlxuICAgICAgICAgICAgICAoZGF0ZVNlbGVjdGVkKT1cInZhbGlkYXRlRGF0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbJ3RvX3N0YXJ0J10uaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbJ3RvX3N0YXJ0J10udG91Y2hlZFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+TGEgZmVjaGEgc2VsZWNjaW9uYWRhIGRlYmUgc2VyIG1heW9yIHF1ZSBsYSBmZWNoYSBhY3R1YWwuPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1tb2RhbGl0eSBmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24tY29udGVudC1jZW50ZXIgdGV4dC1jZW50ZXIgbS0yIGFsaWduLWl0ZW1zLWVuZFwiPlxuICAgICAgICAgICAgPHAtc2VsZWN0QnV0dG9uIFtvcHRpb25zXT1cInN0YXRlT3B0aW9uc1wiIGZvcm1Db250cm9sTmFtZT1cIm1vZGFsaXR5XCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJjb2RlXCI+PC9wLXNlbGVjdEJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LW5vbmUgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWVuZCBtLTJcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICBSaXBwbGVcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgaWNvbj1cInBpIHBpLXNlYXJjaFwiXG4gICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tb3V0bGluZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb2RTZWxmRm9ybVN0ZXBUd28udmFsaWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlYXJjaEF2YWxhaWJsZUNvdXJzZSgpXCJcbiAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+IC0tPlxuICAgICAgPGRpdiAqbmdJZj1cImNvZFByZXZpb3VzID09IG51bGxcIj5cbiAgICAgICAgPHAtYWNjb3JkaW9uIFttdWx0aXBsZV09XCJ0cnVlXCIgW2FjdGl2ZUluZGV4XT1cIlswXVwiPlxuICAgICAgICAgIDxwLWFjY29yZGlvblRhYiBoZWFkZXI9XCJKb3JuYWRhXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyRGF5XCI+XG4gICAgICAgICAgICAgIDwhLS0gPGgzPkhvcmFyaW88L2gzPiAtLT5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrQm94IGZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG0tM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRheVcgb2Ygc2NoZWR1bGVzOyBpbmRleCBhcyBpbmRcIiBjbGFzcz1cImZpZWxkLWNoZWNrYm94XCI+XG4gICAgICAgICAgICAgICAgICA8cC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZ3JvdXAyXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJjYXRlZ29yeVwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXlXXCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFNjaGVkdWxlc1wiXG4gICAgICAgICAgICAgICAgICAgIFtpbnB1dElkXT1cImRheVcua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGV3ZWVrZGF5c1tpbmRdXCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tib3hJY29uPVwicGkgcGktY2hlY2stY2lyY2xlXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0U2NoZWR1bGVzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgPjwvcC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImRheVcua2V5XCI+e3sgZGF5Vy5uYW1lIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibWVzc2FnZUFsZXJ0U2NoZWR1bGVzXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Qb3IgZmF2b3Igc2VsZWNjaW9uYSB1bmEgb3BjaW9uPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9wLWFjY29yZGlvblRhYj5cblxuICAgICAgICAgIDxwLWFjY29yZGlvblRhYiBoZWFkZXI9XCJNb2RhbGlkYWRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJEYXlcIj5cbiAgICAgICAgICAgICAgPCEtLSA8aDM+SG9yYXJpbzwvaDM+IC0tPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tCb3ggZmxleCBmbGV4LXdyYXAganVzdGlmeS1jb250ZW50LWJldHdlZW4gbS0zXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF5VyBvZiBzdGF0ZU9wdGlvbnNNb2RhbGl0eTsgaW5kZXggYXMgaW5kXCIgY2xhc3M9XCJmaWVsZC1jaGVja2JveFwiPlxuICAgICAgICAgICAgICAgICAgPHAtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImdyb3VwMlwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF5V1wiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRNb2RhbGl0eVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbnB1dElkXT1cImRheVcua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGV3ZWVrZGF5c1tpbmRdXCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tib3hJY29uPVwicGkgcGktY2hlY2stY2lyY2xlXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0TW9kYWxpdHkoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICA+PC9wLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiZGF5Vy5rZXlcIj57eyBkYXlXLm5hbWUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtZXNzYWdlQWxlcnRNb2RhbGl0eVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+UG9yIGZhdm9yIHNlbGVjY2lvbmEgdW5hIG9wY2lvbjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvcC1hY2NvcmRpb25UYWI+XG4gICAgICAgICAgPHAtYWNjb3JkaW9uVGFiICpuZ0lmPVwic2NvcmVQbGFjZW1lbnRUZXN0ICE9IG51bGxcIiBoZWFkZXI9XCJwbGFjZW1lbnQgdGVzdFwiPlxuICAgICAgICAgICAgPHNwYW4+VGllbmVzIHVuIFBsYWNlbWVudCBUZXN0IGRpc3BvbmlibGUuIFB1ZWRlcyBjb21lbnphciBjb24gZWwgbml2ZWwge3sgc2NvcmVQbGFjZW1lbnRUZXN0Py5sZXZlbF9pbmdsaXNoX25leHQubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJEYXlcIj5cbiAgICAgICAgICAgICAgPGgzPsK/RGVzZWFzIGFwbGljYXIgZWwgUGxhY2VtZW50IFRlc3Q/PC9oMz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrQm94IGZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG0tM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRheVcgb2YgT3B0aW9uUGxhY2VtZW50VGVzdDsgaW5kZXggYXMgaW5kXCIgY2xhc3M9XCJmaWVsZC1jaGVja2JveFwiPlxuICAgICAgICAgICAgICAgICAgPHAtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImdyb3VwMlwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF5V1wiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRPcHRpb25QbGFjZW1lbnRUZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgW2lucHV0SWRdPVwiZGF5Vy5rZXlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZXdlZWtkYXlzW2luZF1cIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgICAgICAgICBjaGVja2JveEljb249XCJwaSBwaS1jaGVjay1jaXJjbGVcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3RPcGNpb25zUGxhY2VtZW50VGVzdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgID48L3AtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJkYXlXLmtleVwiPnt7IGRheVcubmFtZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1lc3NhZ2VBbGVydFBsYWNlbWVudFRlc3RcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlBvciBmYXZvciBzZWxlY2Npb25hIHVuYSBvcGNpb248L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3AtYWNjb3JkaW9uVGFiPlxuXG4gICAgICAgIDwvcC1hY2NvcmRpb24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LW5vbmUgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWVuZCBtLTJcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICBSaXBwbGVcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgaWNvbj1cInBpIHBpLXNlYXJjaFwiXG4gICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tb3V0bGluZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlbGVjdGVkU2NoZWR1bGVzLmxlbmd0aCA9PT0gMCB8fCBzZWxlY3RlZE1vZGFsaXR5Lmxlbmd0aCA9PT0gMCB8fCBzY29yZVBsYWNlbWVudFRlc3QgIT0gbnVsbCAmJiBzZWxlY3RlZE9wdGlvblBsYWNlbWVudFRlc3QubGVuZ3RoID09PSAwIFwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VhcmNoQXZhbGFpYmxlQ291cnNlKClcIlxuICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gPGRpdiAqbmdJZj1cImNvZFByZXZpb3VzLmNvZF9pc19Qcm9ncmVzcyA9PSBmYWxzZVwiPlxuICAgICAgPC9kaXY+IC0tPlxuICAgIDwvZm9ybT5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0zIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgPCEtLSA8c3BhbiAqbmdJZj1cImNvZFNlbGZGb3JtU3RlcE9uZS5pbnZhbGlkICYmIGNvZFNlbGZGb3JtU3RlcE9uZS50b3VjaGVkXCIgY2xhc3M9XCJ0ZXh0LXJlZC01MDAgZm9udC1ib2xkIHRleHQtY2VudGVyIG10LTEgcHktMiBiZy1yZWQtMTAwIHctZnVsbCBib3JkZXItcm91bmQteGxcIj57eyBlcnJvck1lc3NhZ2UgfX08L3NwYW4+IC0tPlxuICAgICAgPGJ1dHRvblxuICAgICAgcEJ1dHRvblxuICAgICAgaWNvbj1cInBpIHBpLWFycm93LWxlZnRcIlxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAoY2xpY2spPVwiYmFjaygpXCJcbiAgICAgID48L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgcEJ1dHRvblxuICAgICAgaWNvbj1cInBpIHBpLWFycm93LXJpZ2h0XCJcbiAgICAgIChjbGljayk9XCJzZW5kRm9ybSgpXCJcbiAgICAgID48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdj5cbiAgPHByZT57eyBjb2RTZWxmRm9ybVN0ZXBUd28udmFsdWUgfCBqc29uIH19PC9wcmU+XG4gIDxkaXY+XG4gICAgPHByZT57eyBjb2RTZWxmRm9ybVN0ZXBUd28udmFsaWQgfCBqc29uIH19PC9wcmU+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbiJdfQ==
@@ -6660,11 +6660,17 @@ class CodSelfFormStepTwoComponent extends CodSelfManagedSteps {
6660
6660
  { name: 'Tarde', key: 'ta' },
6661
6661
  { name: 'Noche', key: 'no' },
6662
6662
  ];
6663
+ this.OptionPlacementTest = [
6664
+ { key: 'si', name: 'Si' },
6665
+ { key: 'no', name: 'No' },
6666
+ ];
6663
6667
  this.selectedSchedules = [];
6664
6668
  this.disableweekdays = [];
6665
6669
  this.selectedModality = [];
6670
+ this.selectedOptionPlacementTest = [];
6666
6671
  this.messageAlertSchedules = false;
6667
6672
  this.messageAlertModality = false;
6673
+ this.messageAlertPlacementTest = false;
6668
6674
  this.initForm();
6669
6675
  }
6670
6676
  ngOnInit() {
@@ -6741,14 +6747,6 @@ class CodSelfFormStepTwoComponent extends CodSelfManagedSteps {
6741
6747
  };
6742
6748
  console.log(request);
6743
6749
  }
6744
- jornadaValidations() {
6745
- // const arrDay = ['time_start', 'time_end'];
6746
- // const arrDayT = [];
6747
- // const arrYesClas = [];
6748
- // const arrNotClas = [];
6749
- }
6750
- CourseRenovationValid() {
6751
- }
6752
6750
  // validateDate(dateRecib: string) {
6753
6751
  // const dateRecibTreanf = dateRecib + 'T00:00:00-05:00';
6754
6752
  // const f1 = new Date(dateRecibTreanf);
@@ -6820,12 +6818,22 @@ class CodSelfFormStepTwoComponent extends CodSelfManagedSteps {
6820
6818
  this.messageAlertModality = false;
6821
6819
  }
6822
6820
  }
6821
+ selectOpcionsPlacementTest(eve) {
6822
+ this.selectedOptionPlacementTest = eve;
6823
+ console.log(this.selectedOptionPlacementTest);
6824
+ if (this.selectedOptionPlacementTest.length === 0) {
6825
+ this.messageAlertPlacementTest = true;
6826
+ }
6827
+ else {
6828
+ this.messageAlertPlacementTest = false;
6829
+ }
6830
+ }
6823
6831
  }
6824
6832
  CodSelfFormStepTwoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodSelfFormStepTwoComponent, deps: [{ token: i1$1.FormBuilder }, { token: i0.ChangeDetectorRef }, { token: i3$1.MessageService }, { token: BaseService }], target: i0.ɵɵFactoryTarget.Component });
6825
- CodSelfFormStepTwoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodSelfFormStepTwoComponent, selector: "app-cod-self-form-step-two", inputs: { scorePlacementTest: "scorePlacementTest", codPrevious: "codPrevious" }, outputs: { completed: "completed" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Planes</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepTwo\">\n <!-- <div *ngIf=\"codPrevious == null\">\n <div class=\"flex flex-wrap justify-content-evenly column-gap-4 row-gap-6\">\n <div class=\"flex-column align-items-center justify-content-center w-9rem h-4rem m-2\">\n <div class=\"flex mt-3\">\n <span>Horario deseado?</span>\n </div>\n <p-calendar\n [showIcon]=\"true\"\n [icon]=\"'pi pi-clock'\"\n [timeOnly]=\"true\"\n placeholder=\"hh:mm\"\n [hourFormat]=\"'12'\"\n inputId=\"timeonly\"\n [formControl]=\"$any(codSelfFormStepTwo.controls['schedule'])\"\n (ngModelChange)=\"onDateChange($event)\"\n ></p-calendar>\n </div>\n <div *ngIf=\"codSelfFormStepTwo.controls['schedule'].invalid && codSelfFormStepTwo.controls['schedule'].touched\">\n <span class=\"error-message\">Por favor ingresa un horario deseado</span>\n </div>\n <div class=\"flex align-items-center justify-content-center w-9rem h-4rem m-2\">\n <ipt-input\n [inputType]=\"'date'\"\n [placeHolder]=\"'Posible Inicio'\"\n [control]=\"codSelfFormStepTwo.controls['to_start']\"\n (dateSelected)=\"validateDate($event)\"\n ></ipt-input>\n </div>\n <div *ngIf=\"codSelfFormStepTwo.controls['to_start'].invalid && codSelfFormStepTwo.controls['to_start'].touched\">\n <span class=\"error-message\">La fecha seleccionada debe ser mayor que la fecha actual.</span>\n </div>\n\n <div class=\"container-modality flex justify-content-center align-content-center text-center m-2 align-items-end\">\n <p-selectButton [options]=\"stateOptions\" formControlName=\"modality\" optionLabel=\"name\" optionValue=\"code\"></p-selectButton>\n </div>\n </div>\n <div class=\"flex-none flex align-items-center justify-content-end m-2\">\n <button\n pButton\n Ripple\n type=\"button\"\n icon=\"pi pi-search\"\n class=\"p-button-rounded p-button-outlined\"\n [disabled]=\"!codSelfFormStepTwo.valid\"\n (click)=\"searchAvalaibleCourse()\"\n ></button>\n </div>\n </div> -->\n <div *ngIf=\"codPrevious == null\">\n <p-accordion [multiple]=\"true\" [activeIndex]=\"[0]\">\n <p-accordionTab header=\"Jornada\">\n <div class=\"containerDay\">\n <!-- <h3>Horario</h3> -->\n <div class=\"checkBox flex flex-wrap justify-content-between m-3\">\n <div *ngFor=\"let dayW of schedules; index as ind\" class=\"field-checkbox\">\n <p-checkbox\n name=\"group2\"\n value=\"category\"\n [value]=\"dayW\"\n [(ngModel)]=\"selectedSchedules\"\n [inputId]=\"dayW.key\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n checkboxIcon=\"pi pi-check-circle\"\n (ngModelChange)=\"selectSchedules($event)\"\n ></p-checkbox>\n <label [for]=\"dayW.key\">{{ dayW.name }}</label>\n </div>\n <div *ngIf=\"messageAlertSchedules\">\n <span class=\"error-message\">Por favor selecciona una opcion</span>\n </div>\n </div>\n </div>\n </p-accordionTab>\n\n <p-accordionTab header=\"Modalidad\">\n <div class=\"containerDay\">\n <!-- <h3>Horario</h3> -->\n <div class=\"checkBox flex flex-wrap justify-content-between m-3\">\n <div *ngFor=\"let dayW of stateOptionsModality; index as ind\" class=\"field-checkbox\">\n <p-checkbox\n name=\"group2\"\n value=\"category\"\n [value]=\"dayW\"\n [(ngModel)]=\"selectedModality\"\n [inputId]=\"dayW.key\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n checkboxIcon=\"pi pi-check-circle\"\n (ngModelChange)=\"selectModality($event)\"\n ></p-checkbox>\n <label [for]=\"dayW.key\">{{ dayW.name }}</label>\n </div>\n <div *ngIf=\"messageAlertModality\">\n <span class=\"error-message\">Por favor selecciona una opcion</span>\n </div>\n </div>\n </div>\n </p-accordionTab>\n </p-accordion>\n <div class=\"flex-none flex align-items-center justify-content-end m-2\">\n <button\n pButton\n Ripple\n type=\"button\"\n icon=\"pi pi-search\"\n class=\"p-button-rounded p-button-outlined\"\n [disabled]=\"selectedSchedules.length === 0 || selectedModality.length === 0\"\n (click)=\"searchAvalaibleCourse()\"\n ></button>\n </div>\n </div>\n <!-- <div *ngIf=\"codPrevious.cod_is_Progress == false\">\n </div> -->\n </form>\n <div class=\"flex justify-content-between mt-3 align-items-center gap-3\">\n <!-- <span *ngIf=\"codSelfFormStepOne.invalid && codSelfFormStepOne.touched\" class=\"text-red-500 font-bold text-center mt-1 py-2 bg-red-100 w-full border-round-xl\">{{ errorMessage }}</span> -->\n <button\n pButton\n icon=\"pi pi-arrow-left\"\n type=\"submit\"\n (click)=\"back()\"\n ></button>\n\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n</div>\n\n<div>\n <pre>{{ codSelfFormStepTwo.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepTwo.valid | json }}</pre>\n </div>\n</div>\n\n", styles: [".container-main{margin:1%}.container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}span{color:#999;font-size:15px;font-weight:400;pointer-events:none;left:20px;top:-20px}:host ::ng-deep .p-buttonset .p-button{box-shadow:#64646f33 0 7px 29px;border-radius:6px;border:none;outline:none;transition:.2s;font-weight:300;height:28px}:host ::ng-deep .p-calendar{position:relative;display:inline-flex;max-width:100%;height:28px;box-shadow:#64646f33 0 7px 29px;border-radius:6px;border:none;outline:none;transition:.2s;font-weight:300;width:-webkit-fill-available;width:-moz-available;background-color:#fff;-webkit-appearance:none}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i8$2.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i3$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i7$2.Accordion, selector: "p-accordion", inputs: ["multiple", "style", "styleClass", "expandIcon", "collapseIcon", "activeIndex"], outputs: ["onClose", "onOpen", "activeIndexChange"] }, { kind: "component", type: i7$2.AccordionTab, selector: "p-accordionTab", inputs: ["header", "disabled", "cache", "transitionOptions", "selected"], outputs: ["selectedChange"] }, { kind: "component", type: i8$3.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "trueValue", "falseValue"], outputs: ["onChange"] }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] });
6833
+ CodSelfFormStepTwoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodSelfFormStepTwoComponent, selector: "app-cod-self-form-step-two", inputs: { scorePlacementTest: "scorePlacementTest", codPrevious: "codPrevious" }, outputs: { completed: "completed" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Planes</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepTwo\">\n <!-- <div *ngIf=\"codPrevious == null\">\n <div class=\"flex flex-wrap justify-content-evenly column-gap-4 row-gap-6\">\n <div class=\"flex-column align-items-center justify-content-center w-9rem h-4rem m-2\">\n <div class=\"flex mt-3\">\n <span>Horario deseado?</span>\n </div>\n <p-calendar\n [showIcon]=\"true\"\n [icon]=\"'pi pi-clock'\"\n [timeOnly]=\"true\"\n placeholder=\"hh:mm\"\n [hourFormat]=\"'12'\"\n inputId=\"timeonly\"\n [formControl]=\"$any(codSelfFormStepTwo.controls['schedule'])\"\n (ngModelChange)=\"onDateChange($event)\"\n ></p-calendar>\n </div>\n <div *ngIf=\"codSelfFormStepTwo.controls['schedule'].invalid && codSelfFormStepTwo.controls['schedule'].touched\">\n <span class=\"error-message\">Por favor ingresa un horario deseado</span>\n </div>\n <div class=\"flex align-items-center justify-content-center w-9rem h-4rem m-2\">\n <ipt-input\n [inputType]=\"'date'\"\n [placeHolder]=\"'Posible Inicio'\"\n [control]=\"codSelfFormStepTwo.controls['to_start']\"\n (dateSelected)=\"validateDate($event)\"\n ></ipt-input>\n </div>\n <div *ngIf=\"codSelfFormStepTwo.controls['to_start'].invalid && codSelfFormStepTwo.controls['to_start'].touched\">\n <span class=\"error-message\">La fecha seleccionada debe ser mayor que la fecha actual.</span>\n </div>\n\n <div class=\"container-modality flex justify-content-center align-content-center text-center m-2 align-items-end\">\n <p-selectButton [options]=\"stateOptions\" formControlName=\"modality\" optionLabel=\"name\" optionValue=\"code\"></p-selectButton>\n </div>\n </div>\n <div class=\"flex-none flex align-items-center justify-content-end m-2\">\n <button\n pButton\n Ripple\n type=\"button\"\n icon=\"pi pi-search\"\n class=\"p-button-rounded p-button-outlined\"\n [disabled]=\"!codSelfFormStepTwo.valid\"\n (click)=\"searchAvalaibleCourse()\"\n ></button>\n </div>\n </div> -->\n <div *ngIf=\"codPrevious == null\">\n <p-accordion [multiple]=\"true\" [activeIndex]=\"[0]\">\n <p-accordionTab header=\"Jornada\">\n <div class=\"containerDay\">\n <!-- <h3>Horario</h3> -->\n <div class=\"checkBox flex flex-wrap justify-content-between m-3\">\n <div *ngFor=\"let dayW of schedules; index as ind\" class=\"field-checkbox\">\n <p-checkbox\n name=\"group2\"\n value=\"category\"\n [value]=\"dayW\"\n [(ngModel)]=\"selectedSchedules\"\n [inputId]=\"dayW.key\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n checkboxIcon=\"pi pi-check-circle\"\n (ngModelChange)=\"selectSchedules($event)\"\n ></p-checkbox>\n <label [for]=\"dayW.key\">{{ dayW.name }}</label>\n </div>\n <div *ngIf=\"messageAlertSchedules\">\n <span class=\"error-message\">Por favor selecciona una opcion</span>\n </div>\n </div>\n </div>\n </p-accordionTab>\n\n <p-accordionTab header=\"Modalidad\">\n <div class=\"containerDay\">\n <!-- <h3>Horario</h3> -->\n <div class=\"checkBox flex flex-wrap justify-content-between m-3\">\n <div *ngFor=\"let dayW of stateOptionsModality; index as ind\" class=\"field-checkbox\">\n <p-checkbox\n name=\"group2\"\n value=\"category\"\n [value]=\"dayW\"\n [(ngModel)]=\"selectedModality\"\n [inputId]=\"dayW.key\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n checkboxIcon=\"pi pi-check-circle\"\n (ngModelChange)=\"selectModality($event)\"\n ></p-checkbox>\n <label [for]=\"dayW.key\">{{ dayW.name }}</label>\n </div>\n <div *ngIf=\"messageAlertModality\">\n <span class=\"error-message\">Por favor selecciona una opcion</span>\n </div>\n </div>\n </div>\n </p-accordionTab>\n <p-accordionTab *ngIf=\"scorePlacementTest != null\" header=\"placement test\">\n <span>Tienes un Placement Test disponible. Puedes comenzar con el nivel {{ scorePlacementTest?.level_inglish_next.name }}</span>\n <div class=\"containerDay\">\n <h3>\u00BFDeseas aplicar el Placement Test?</h3>\n <div class=\"checkBox flex flex-wrap justify-content-between m-3\">\n <div *ngFor=\"let dayW of OptionPlacementTest; index as ind\" class=\"field-checkbox\">\n <p-checkbox\n name=\"group2\"\n value=\"category\"\n [value]=\"dayW\"\n [(ngModel)]=\"selectedOptionPlacementTest\"\n [inputId]=\"dayW.key\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n checkboxIcon=\"pi pi-check-circle\"\n (ngModelChange)=\"selectOpcionsPlacementTest($event)\"\n ></p-checkbox>\n <label [for]=\"dayW.key\">{{ dayW.name }}</label>\n </div>\n <div *ngIf=\"messageAlertPlacementTest\">\n <span class=\"error-message\">Por favor selecciona una opcion</span>\n </div>\n </div>\n </div>\n </p-accordionTab>\n\n </p-accordion>\n <div class=\"flex-none flex align-items-center justify-content-end m-2\">\n <button\n pButton\n Ripple\n type=\"button\"\n icon=\"pi pi-search\"\n class=\"p-button-rounded p-button-outlined\"\n [disabled]=\"selectedSchedules.length === 0 || selectedModality.length === 0 || scorePlacementTest != null && selectedOptionPlacementTest.length === 0 \"\n (click)=\"searchAvalaibleCourse()\"\n ></button>\n </div>\n </div>\n <!-- <div *ngIf=\"codPrevious.cod_is_Progress == false\">\n </div> -->\n </form>\n <div class=\"flex justify-content-between mt-3 align-items-center gap-3\">\n <!-- <span *ngIf=\"codSelfFormStepOne.invalid && codSelfFormStepOne.touched\" class=\"text-red-500 font-bold text-center mt-1 py-2 bg-red-100 w-full border-round-xl\">{{ errorMessage }}</span> -->\n <button\n pButton\n icon=\"pi pi-arrow-left\"\n type=\"submit\"\n (click)=\"back()\"\n ></button>\n\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n</div>\n\n<div>\n <pre>{{ codSelfFormStepTwo.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepTwo.valid | json }}</pre>\n </div>\n</div>\n\n", styles: [".container-main{margin:1%}.container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}span{color:#999;font-size:15px;font-weight:400;pointer-events:none;left:20px;top:-20px}:host ::ng-deep .p-buttonset .p-button{box-shadow:#64646f33 0 7px 29px;border-radius:6px;border:none;outline:none;transition:.2s;font-weight:300;height:28px}:host ::ng-deep .p-calendar{position:relative;display:inline-flex;max-width:100%;height:28px;box-shadow:#64646f33 0 7px 29px;border-radius:6px;border:none;outline:none;transition:.2s;font-weight:300;width:-webkit-fill-available;width:-moz-available;background-color:#fff;-webkit-appearance:none}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i8$2.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i3$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i7$2.Accordion, selector: "p-accordion", inputs: ["multiple", "style", "styleClass", "expandIcon", "collapseIcon", "activeIndex"], outputs: ["onClose", "onOpen", "activeIndexChange"] }, { kind: "component", type: i7$2.AccordionTab, selector: "p-accordionTab", inputs: ["header", "disabled", "cache", "transitionOptions", "selected"], outputs: ["selectedChange"] }, { kind: "component", type: i8$3.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "trueValue", "falseValue"], outputs: ["onChange"] }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] });
6826
6834
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodSelfFormStepTwoComponent, decorators: [{
6827
6835
  type: Component,
6828
- args: [{ selector: 'app-cod-self-form-step-two', template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Planes</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepTwo\">\n <!-- <div *ngIf=\"codPrevious == null\">\n <div class=\"flex flex-wrap justify-content-evenly column-gap-4 row-gap-6\">\n <div class=\"flex-column align-items-center justify-content-center w-9rem h-4rem m-2\">\n <div class=\"flex mt-3\">\n <span>Horario deseado?</span>\n </div>\n <p-calendar\n [showIcon]=\"true\"\n [icon]=\"'pi pi-clock'\"\n [timeOnly]=\"true\"\n placeholder=\"hh:mm\"\n [hourFormat]=\"'12'\"\n inputId=\"timeonly\"\n [formControl]=\"$any(codSelfFormStepTwo.controls['schedule'])\"\n (ngModelChange)=\"onDateChange($event)\"\n ></p-calendar>\n </div>\n <div *ngIf=\"codSelfFormStepTwo.controls['schedule'].invalid && codSelfFormStepTwo.controls['schedule'].touched\">\n <span class=\"error-message\">Por favor ingresa un horario deseado</span>\n </div>\n <div class=\"flex align-items-center justify-content-center w-9rem h-4rem m-2\">\n <ipt-input\n [inputType]=\"'date'\"\n [placeHolder]=\"'Posible Inicio'\"\n [control]=\"codSelfFormStepTwo.controls['to_start']\"\n (dateSelected)=\"validateDate($event)\"\n ></ipt-input>\n </div>\n <div *ngIf=\"codSelfFormStepTwo.controls['to_start'].invalid && codSelfFormStepTwo.controls['to_start'].touched\">\n <span class=\"error-message\">La fecha seleccionada debe ser mayor que la fecha actual.</span>\n </div>\n\n <div class=\"container-modality flex justify-content-center align-content-center text-center m-2 align-items-end\">\n <p-selectButton [options]=\"stateOptions\" formControlName=\"modality\" optionLabel=\"name\" optionValue=\"code\"></p-selectButton>\n </div>\n </div>\n <div class=\"flex-none flex align-items-center justify-content-end m-2\">\n <button\n pButton\n Ripple\n type=\"button\"\n icon=\"pi pi-search\"\n class=\"p-button-rounded p-button-outlined\"\n [disabled]=\"!codSelfFormStepTwo.valid\"\n (click)=\"searchAvalaibleCourse()\"\n ></button>\n </div>\n </div> -->\n <div *ngIf=\"codPrevious == null\">\n <p-accordion [multiple]=\"true\" [activeIndex]=\"[0]\">\n <p-accordionTab header=\"Jornada\">\n <div class=\"containerDay\">\n <!-- <h3>Horario</h3> -->\n <div class=\"checkBox flex flex-wrap justify-content-between m-3\">\n <div *ngFor=\"let dayW of schedules; index as ind\" class=\"field-checkbox\">\n <p-checkbox\n name=\"group2\"\n value=\"category\"\n [value]=\"dayW\"\n [(ngModel)]=\"selectedSchedules\"\n [inputId]=\"dayW.key\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n checkboxIcon=\"pi pi-check-circle\"\n (ngModelChange)=\"selectSchedules($event)\"\n ></p-checkbox>\n <label [for]=\"dayW.key\">{{ dayW.name }}</label>\n </div>\n <div *ngIf=\"messageAlertSchedules\">\n <span class=\"error-message\">Por favor selecciona una opcion</span>\n </div>\n </div>\n </div>\n </p-accordionTab>\n\n <p-accordionTab header=\"Modalidad\">\n <div class=\"containerDay\">\n <!-- <h3>Horario</h3> -->\n <div class=\"checkBox flex flex-wrap justify-content-between m-3\">\n <div *ngFor=\"let dayW of stateOptionsModality; index as ind\" class=\"field-checkbox\">\n <p-checkbox\n name=\"group2\"\n value=\"category\"\n [value]=\"dayW\"\n [(ngModel)]=\"selectedModality\"\n [inputId]=\"dayW.key\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n checkboxIcon=\"pi pi-check-circle\"\n (ngModelChange)=\"selectModality($event)\"\n ></p-checkbox>\n <label [for]=\"dayW.key\">{{ dayW.name }}</label>\n </div>\n <div *ngIf=\"messageAlertModality\">\n <span class=\"error-message\">Por favor selecciona una opcion</span>\n </div>\n </div>\n </div>\n </p-accordionTab>\n </p-accordion>\n <div class=\"flex-none flex align-items-center justify-content-end m-2\">\n <button\n pButton\n Ripple\n type=\"button\"\n icon=\"pi pi-search\"\n class=\"p-button-rounded p-button-outlined\"\n [disabled]=\"selectedSchedules.length === 0 || selectedModality.length === 0\"\n (click)=\"searchAvalaibleCourse()\"\n ></button>\n </div>\n </div>\n <!-- <div *ngIf=\"codPrevious.cod_is_Progress == false\">\n </div> -->\n </form>\n <div class=\"flex justify-content-between mt-3 align-items-center gap-3\">\n <!-- <span *ngIf=\"codSelfFormStepOne.invalid && codSelfFormStepOne.touched\" class=\"text-red-500 font-bold text-center mt-1 py-2 bg-red-100 w-full border-round-xl\">{{ errorMessage }}</span> -->\n <button\n pButton\n icon=\"pi pi-arrow-left\"\n type=\"submit\"\n (click)=\"back()\"\n ></button>\n\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n</div>\n\n<div>\n <pre>{{ codSelfFormStepTwo.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepTwo.valid | json }}</pre>\n </div>\n</div>\n\n", styles: [".container-main{margin:1%}.container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}span{color:#999;font-size:15px;font-weight:400;pointer-events:none;left:20px;top:-20px}:host ::ng-deep .p-buttonset .p-button{box-shadow:#64646f33 0 7px 29px;border-radius:6px;border:none;outline:none;transition:.2s;font-weight:300;height:28px}:host ::ng-deep .p-calendar{position:relative;display:inline-flex;max-width:100%;height:28px;box-shadow:#64646f33 0 7px 29px;border-radius:6px;border:none;outline:none;transition:.2s;font-weight:300;width:-webkit-fill-available;width:-moz-available;background-color:#fff;-webkit-appearance:none}\n"] }]
6836
+ args: [{ selector: 'app-cod-self-form-step-two', template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Planes</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepTwo\">\n <!-- <div *ngIf=\"codPrevious == null\">\n <div class=\"flex flex-wrap justify-content-evenly column-gap-4 row-gap-6\">\n <div class=\"flex-column align-items-center justify-content-center w-9rem h-4rem m-2\">\n <div class=\"flex mt-3\">\n <span>Horario deseado?</span>\n </div>\n <p-calendar\n [showIcon]=\"true\"\n [icon]=\"'pi pi-clock'\"\n [timeOnly]=\"true\"\n placeholder=\"hh:mm\"\n [hourFormat]=\"'12'\"\n inputId=\"timeonly\"\n [formControl]=\"$any(codSelfFormStepTwo.controls['schedule'])\"\n (ngModelChange)=\"onDateChange($event)\"\n ></p-calendar>\n </div>\n <div *ngIf=\"codSelfFormStepTwo.controls['schedule'].invalid && codSelfFormStepTwo.controls['schedule'].touched\">\n <span class=\"error-message\">Por favor ingresa un horario deseado</span>\n </div>\n <div class=\"flex align-items-center justify-content-center w-9rem h-4rem m-2\">\n <ipt-input\n [inputType]=\"'date'\"\n [placeHolder]=\"'Posible Inicio'\"\n [control]=\"codSelfFormStepTwo.controls['to_start']\"\n (dateSelected)=\"validateDate($event)\"\n ></ipt-input>\n </div>\n <div *ngIf=\"codSelfFormStepTwo.controls['to_start'].invalid && codSelfFormStepTwo.controls['to_start'].touched\">\n <span class=\"error-message\">La fecha seleccionada debe ser mayor que la fecha actual.</span>\n </div>\n\n <div class=\"container-modality flex justify-content-center align-content-center text-center m-2 align-items-end\">\n <p-selectButton [options]=\"stateOptions\" formControlName=\"modality\" optionLabel=\"name\" optionValue=\"code\"></p-selectButton>\n </div>\n </div>\n <div class=\"flex-none flex align-items-center justify-content-end m-2\">\n <button\n pButton\n Ripple\n type=\"button\"\n icon=\"pi pi-search\"\n class=\"p-button-rounded p-button-outlined\"\n [disabled]=\"!codSelfFormStepTwo.valid\"\n (click)=\"searchAvalaibleCourse()\"\n ></button>\n </div>\n </div> -->\n <div *ngIf=\"codPrevious == null\">\n <p-accordion [multiple]=\"true\" [activeIndex]=\"[0]\">\n <p-accordionTab header=\"Jornada\">\n <div class=\"containerDay\">\n <!-- <h3>Horario</h3> -->\n <div class=\"checkBox flex flex-wrap justify-content-between m-3\">\n <div *ngFor=\"let dayW of schedules; index as ind\" class=\"field-checkbox\">\n <p-checkbox\n name=\"group2\"\n value=\"category\"\n [value]=\"dayW\"\n [(ngModel)]=\"selectedSchedules\"\n [inputId]=\"dayW.key\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n checkboxIcon=\"pi pi-check-circle\"\n (ngModelChange)=\"selectSchedules($event)\"\n ></p-checkbox>\n <label [for]=\"dayW.key\">{{ dayW.name }}</label>\n </div>\n <div *ngIf=\"messageAlertSchedules\">\n <span class=\"error-message\">Por favor selecciona una opcion</span>\n </div>\n </div>\n </div>\n </p-accordionTab>\n\n <p-accordionTab header=\"Modalidad\">\n <div class=\"containerDay\">\n <!-- <h3>Horario</h3> -->\n <div class=\"checkBox flex flex-wrap justify-content-between m-3\">\n <div *ngFor=\"let dayW of stateOptionsModality; index as ind\" class=\"field-checkbox\">\n <p-checkbox\n name=\"group2\"\n value=\"category\"\n [value]=\"dayW\"\n [(ngModel)]=\"selectedModality\"\n [inputId]=\"dayW.key\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n checkboxIcon=\"pi pi-check-circle\"\n (ngModelChange)=\"selectModality($event)\"\n ></p-checkbox>\n <label [for]=\"dayW.key\">{{ dayW.name }}</label>\n </div>\n <div *ngIf=\"messageAlertModality\">\n <span class=\"error-message\">Por favor selecciona una opcion</span>\n </div>\n </div>\n </div>\n </p-accordionTab>\n <p-accordionTab *ngIf=\"scorePlacementTest != null\" header=\"placement test\">\n <span>Tienes un Placement Test disponible. Puedes comenzar con el nivel {{ scorePlacementTest?.level_inglish_next.name }}</span>\n <div class=\"containerDay\">\n <h3>\u00BFDeseas aplicar el Placement Test?</h3>\n <div class=\"checkBox flex flex-wrap justify-content-between m-3\">\n <div *ngFor=\"let dayW of OptionPlacementTest; index as ind\" class=\"field-checkbox\">\n <p-checkbox\n name=\"group2\"\n value=\"category\"\n [value]=\"dayW\"\n [(ngModel)]=\"selectedOptionPlacementTest\"\n [inputId]=\"dayW.key\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n checkboxIcon=\"pi pi-check-circle\"\n (ngModelChange)=\"selectOpcionsPlacementTest($event)\"\n ></p-checkbox>\n <label [for]=\"dayW.key\">{{ dayW.name }}</label>\n </div>\n <div *ngIf=\"messageAlertPlacementTest\">\n <span class=\"error-message\">Por favor selecciona una opcion</span>\n </div>\n </div>\n </div>\n </p-accordionTab>\n\n </p-accordion>\n <div class=\"flex-none flex align-items-center justify-content-end m-2\">\n <button\n pButton\n Ripple\n type=\"button\"\n icon=\"pi pi-search\"\n class=\"p-button-rounded p-button-outlined\"\n [disabled]=\"selectedSchedules.length === 0 || selectedModality.length === 0 || scorePlacementTest != null && selectedOptionPlacementTest.length === 0 \"\n (click)=\"searchAvalaibleCourse()\"\n ></button>\n </div>\n </div>\n <!-- <div *ngIf=\"codPrevious.cod_is_Progress == false\">\n </div> -->\n </form>\n <div class=\"flex justify-content-between mt-3 align-items-center gap-3\">\n <!-- <span *ngIf=\"codSelfFormStepOne.invalid && codSelfFormStepOne.touched\" class=\"text-red-500 font-bold text-center mt-1 py-2 bg-red-100 w-full border-round-xl\">{{ errorMessage }}</span> -->\n <button\n pButton\n icon=\"pi pi-arrow-left\"\n type=\"submit\"\n (click)=\"back()\"\n ></button>\n\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n</div>\n\n<div>\n <pre>{{ codSelfFormStepTwo.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepTwo.valid | json }}</pre>\n </div>\n</div>\n\n", styles: [".container-main{margin:1%}.container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}span{color:#999;font-size:15px;font-weight:400;pointer-events:none;left:20px;top:-20px}:host ::ng-deep .p-buttonset .p-button{box-shadow:#64646f33 0 7px 29px;border-radius:6px;border:none;outline:none;transition:.2s;font-weight:300;height:28px}:host ::ng-deep .p-calendar{position:relative;display:inline-flex;max-width:100%;height:28px;box-shadow:#64646f33 0 7px 29px;border-radius:6px;border:none;outline:none;transition:.2s;font-weight:300;width:-webkit-fill-available;width:-moz-available;background-color:#fff;-webkit-appearance:none}\n"] }]
6829
6837
  }], ctorParameters: function () { return [{ type: i1$1.FormBuilder }, { type: i0.ChangeDetectorRef }, { type: i3$1.MessageService }, { type: BaseService }]; }, propDecorators: { completed: [{
6830
6838
  type: Output
6831
6839
  }], scorePlacementTest: [{