iptdevs-design-system 3.1.4378 → 3.1.4380
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.
- package/esm2020/lib/cod-self-managed/steps/cod-form-step-one/cod-self-form-step-one.component.mjs +14 -20
- package/fesm2015/iptdevs-design-system.mjs +13 -19
- package/fesm2015/iptdevs-design-system.mjs.map +1 -1
- package/fesm2020/iptdevs-design-system.mjs +13 -19
- package/fesm2020/iptdevs-design-system.mjs.map +1 -1
- package/lib/cod-self-managed/steps/cod-form-step-one/cod-self-form-step-one.component.d.ts +1 -1
- package/package.json +1 -1
package/esm2020/lib/cod-self-managed/steps/cod-form-step-one/cod-self-form-step-one.component.mjs
CHANGED
|
@@ -32,18 +32,26 @@ export class CodSelfFormStepOneComponent extends CodSelfManagedSteps {
|
|
|
32
32
|
}
|
|
33
33
|
ngOnChanges(changes) {
|
|
34
34
|
this.startLocalStorageWork();
|
|
35
|
-
this.setValuesByLocalStorage();
|
|
36
35
|
if (changes['user']) {
|
|
37
|
-
|
|
36
|
+
const currentUser = changes['user'].currentValue;
|
|
37
|
+
const previousUser = changes['user'].previousValue;
|
|
38
|
+
// Verifica si el objeto 'user' actual es diferente al anterior
|
|
39
|
+
if (!this.areEqualUsers(currentUser, previousUser)) {
|
|
38
40
|
console.log('setDataUsers');
|
|
39
41
|
this.setDataUsers();
|
|
40
42
|
// this.cdRef.detectChanges();
|
|
41
43
|
}
|
|
42
44
|
else {
|
|
43
|
-
console.log('
|
|
45
|
+
console.log('No hay cambios en el usuario');
|
|
44
46
|
}
|
|
45
47
|
}
|
|
46
48
|
}
|
|
49
|
+
areEqualUsers(user1, user2) {
|
|
50
|
+
// Implementa la lógica para comparar los valores relevantes de los objetos 'user'
|
|
51
|
+
// Aquí puedes comparar las propiedades relevantes para determinar si son iguales o no
|
|
52
|
+
// Por ejemplo:
|
|
53
|
+
return JSON.stringify(user1) === JSON.stringify(user2);
|
|
54
|
+
}
|
|
47
55
|
initForm() {
|
|
48
56
|
this.codSelfFormStepOne = this.fb.group({
|
|
49
57
|
student_name: ['', [Validators.required]],
|
|
@@ -220,29 +228,15 @@ export class CodSelfFormStepOneComponent extends CodSelfManagedSteps {
|
|
|
220
228
|
this.messageService.clear('confirm');
|
|
221
229
|
this.visible = false;
|
|
222
230
|
}
|
|
223
|
-
setValuesByLocalStorage() {
|
|
224
|
-
const country = this.codSelfFormStepOne.controls['country'].value || null;
|
|
225
|
-
if (!country)
|
|
226
|
-
return;
|
|
227
|
-
this.selectCountry(country);
|
|
228
|
-
const state = this.codSelfFormStepOne.controls['state'].value || null;
|
|
229
|
-
if (!state)
|
|
230
|
-
return;
|
|
231
|
-
this.selectState(state);
|
|
232
|
-
const city = this.codSelfFormStepOne.controls['city'].value || null;
|
|
233
|
-
if (!city)
|
|
234
|
-
return;
|
|
235
|
-
this.selectCity(city);
|
|
236
|
-
}
|
|
237
231
|
}
|
|
238
232
|
CodSelfFormStepOneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodSelfFormStepOneComponent, deps: [{ token: i1.FormBuilder }, { token: i2.ParameterService }, { token: i0.ChangeDetectorRef }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Component });
|
|
239
|
-
CodSelfFormStepOneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodSelfFormStepOneComponent, selector: "app-cod-self-form-step-one", inputs: { user: "user" }, outputs: { completed: "completed" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos Personales</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\n <i class=\"pi pi-exclamation-circle cursor-pointer\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepOne\">\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepOne.controls['student_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_name'].invalid && codSelfFormStepOne.controls['student_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un nombre v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codSelfFormStepOne.controls['student_last_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_last_name'].invalid && codSelfFormStepOne.controls['student_last_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un apellido v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_id_card_type'].value\"\n [control]=\"codSelfFormStepOne.controls['student_id_card_type']\"\n [selectCode]=\"codSelfFormStepOne.controls['student_id_card_type'].value === null ? 'Tipo de documento' : codSelfFormStepOne.controls['student_id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card_type'].invalid && codSelfFormStepOne.controls['student_id_card_type'].touched\">\n <span class=\"error-message\">Por favor ingresa un tipo de documento v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de documento'\"\n [control]=\"codSelfFormStepOne.controls['student_id_card']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card'].invalid && codSelfFormStepOne.controls['student_id_card'].touched\">\n <span class=\"error-message\">Por favor ingresa un documento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['gender'].value\"\n [control]=\"codSelfFormStepOne.controls['gender']\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'G\u00E9nero'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['gender'].invalid && codSelfFormStepOne.controls['gender'].touched\">\n <span class=\"error-message\">Por favor ingresa un genero v\u00E1lido.</span>\n </div>\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codSelfFormStepOne.controls['birthdate']\"\n [placeHolder]=\"'Fecha de nacimiento'\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['birthdate'].invalid && codSelfFormStepOne.controls['birthdate'].touched\">\n <span class=\"error-message\">Por favor ingresa una fecha mayor de 3 a\u00F1os.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['country'].value\"\n [control]=\"codSelfFormStepOne.controls['country']\"\n [selectCode]=\"codSelfFormStepOne.controls['country'].value === null ? 'Pa\u00EDs de residencia' : codSelfFormStepOne.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['country'].invalid && codSelfFormStepOne.controls['country'].touched\">\n <span class=\"error-message\">Por favor ingresa un pais v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['state'].value\"\n [control]=\"codSelfFormStepOne.controls['state']\"\n [selectCode]=\"codSelfFormStepOne.controls['state'].value === null ? 'Departamento o estado' : codSelfFormStepOne.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['state'].invalid && codSelfFormStepOne.controls['state'].touched\">\n <span class=\"error-message\">Por favor ingresa un departamento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['city'].value\"\n [control]=\"codSelfFormStepOne.controls['city']\"\n [selectCode]=\"codSelfFormStepOne.controls['city'].value === null ? 'Ciudad de residencia' : codSelfFormStepOne.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['city'].invalid && codSelfFormStepOne.controls['city'].touched\">\n <span class=\"error-message\">Por favor ingresa una ciudad v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Correo electr\u00F3nico'\"\n [control]=\"codSelfFormStepOne.controls['student_email']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_email'].invalid && codSelfFormStepOne.controls['student_email'].touched\">\n <span class=\"error-message\">Por favor ingresa un email valido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_phone_indicative'].value\"\n [control]=\"codSelfFormStepOne.controls['student_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicatives($event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_indicative'].invalid && codSelfFormStepOne.controls['student_phone_indicative'].touched\">\n <span class=\"error-message\">Por favor ingresa un indicativo valido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de tel\u00E9fono'\"\n [control]=\"codSelfFormStepOne.controls['student_phone_number']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_number'].invalid && codSelfFormStepOne.controls['student_phone_number'].touched\">\n <span class=\"error-message\">Por favor ingresa un numero de telefono v\u00E1lido.</span>\n </div>\n </form>\n\n <div class=\"flex mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n type=\"submit\"\n [disabled]=\"!codSelfFormStepOne.valid\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n\n</div>\n\n<div>\n <pre>{{ codSelfFormStepOne.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepOne.valid | json }}</pre>\n </div>\n</div>\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}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.InputComponent, selector: "ipt-input", inputs: ["inputType", "placeHolder", "validateText", "withPipe", "list", "iconUrl", "control", "prefix", "thousands", "decimal", "disabledSel"], outputs: ["dateSelected"] }, { kind: "component", type: i6.SelectComponent, selector: "ipt-select", inputs: ["isRequired", "data", "defaultText", "selectCode", "disabledSel", "initialValue", "control"], outputs: ["eventSelect"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i8.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "pipe", type: i4.JsonPipe, name: "json" }] });
|
|
233
|
+
CodSelfFormStepOneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodSelfFormStepOneComponent, selector: "app-cod-self-form-step-one", inputs: { user: "user" }, outputs: { completed: "completed" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos Personales</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\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepOne\">\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepOne.controls['student_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_name'].invalid && codSelfFormStepOne.controls['student_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un nombre v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codSelfFormStepOne.controls['student_last_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_last_name'].invalid && codSelfFormStepOne.controls['student_last_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un apellido v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_id_card_type'].value\"\n [control]=\"codSelfFormStepOne.controls['student_id_card_type']\"\n [selectCode]=\"codSelfFormStepOne.controls['student_id_card_type'].value === null ? 'Tipo de documento' : codSelfFormStepOne.controls['student_id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card_type'].invalid && codSelfFormStepOne.controls['student_id_card_type'].touched\">\n <span class=\"error-message\">Por favor ingresa un tipo de documento v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de documento'\"\n [control]=\"codSelfFormStepOne.controls['student_id_card']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card'].invalid && codSelfFormStepOne.controls['student_id_card'].touched\">\n <span class=\"error-message\">Por favor ingresa un documento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['gender'].value\"\n [control]=\"codSelfFormStepOne.controls['gender']\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'G\u00E9nero'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['gender'].invalid && codSelfFormStepOne.controls['gender'].touched\">\n <span class=\"error-message\">Por favor ingresa un genero v\u00E1lido.</span>\n </div>\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codSelfFormStepOne.controls['birthdate']\"\n [placeHolder]=\"'Fecha de nacimiento'\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['birthdate'].invalid && codSelfFormStepOne.controls['birthdate'].touched\">\n <span class=\"error-message\">Por favor ingresa una fecha mayor de 3 a\u00F1os.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['country'].value\"\n [control]=\"codSelfFormStepOne.controls['country']\"\n [selectCode]=\"codSelfFormStepOne.controls['country'].value === null ? 'Pa\u00EDs de residencia' : codSelfFormStepOne.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['country'].invalid && codSelfFormStepOne.controls['country'].touched\">\n <span class=\"error-message\">Por favor ingresa un pais v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['state'].value\"\n [control]=\"codSelfFormStepOne.controls['state']\"\n [selectCode]=\"codSelfFormStepOne.controls['state'].value === null ? 'Departamento o estado' : codSelfFormStepOne.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['state'].invalid && codSelfFormStepOne.controls['state'].touched\">\n <span class=\"error-message\">Por favor ingresa un departamento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['city'].value\"\n [control]=\"codSelfFormStepOne.controls['city']\"\n [selectCode]=\"codSelfFormStepOne.controls['city'].value === null ? 'Ciudad de residencia' : codSelfFormStepOne.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['city'].invalid && codSelfFormStepOne.controls['city'].touched\">\n <span class=\"error-message\">Por favor ingresa una ciudad v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Correo electr\u00F3nico'\"\n [control]=\"codSelfFormStepOne.controls['student_email']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_email'].invalid && codSelfFormStepOne.controls['student_email'].touched\">\n <span class=\"error-message\">Por favor ingresa un email valido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_phone_indicative'].value\"\n [control]=\"codSelfFormStepOne.controls['student_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicatives($event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_indicative'].invalid && codSelfFormStepOne.controls['student_phone_indicative'].touched\">\n <span class=\"error-message\">Por favor ingresa un indicativo valido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de tel\u00E9fono'\"\n [control]=\"codSelfFormStepOne.controls['student_phone_number']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_number'].invalid && codSelfFormStepOne.controls['student_phone_number'].touched\">\n <span class=\"error-message\">Por favor ingresa un numero de telefono v\u00E1lido.</span>\n </div>\n </form>\n\n <div class=\"flex mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n type=\"submit\"\n [disabled]=\"!codSelfFormStepOne.valid\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n\n</div>\n\n<div>\n <pre>{{ codSelfFormStepOne.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepOne.valid | json }}</pre>\n </div>\n</div>\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}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.InputComponent, selector: "ipt-input", inputs: ["inputType", "placeHolder", "validateText", "withPipe", "list", "iconUrl", "control", "prefix", "thousands", "decimal", "disabledSel"], outputs: ["dateSelected"] }, { kind: "component", type: i6.SelectComponent, selector: "ipt-select", inputs: ["isRequired", "data", "defaultText", "selectCode", "disabledSel", "initialValue", "control"], outputs: ["eventSelect"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i8.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "pipe", type: i4.JsonPipe, name: "json" }] });
|
|
240
234
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodSelfFormStepOneComponent, decorators: [{
|
|
241
235
|
type: Component,
|
|
242
|
-
args: [{ selector: 'app-cod-self-form-step-one', template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos Personales</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\n <i class=\"pi pi-exclamation-circle cursor-pointer\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepOne\">\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepOne.controls['student_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_name'].invalid && codSelfFormStepOne.controls['student_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un nombre v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codSelfFormStepOne.controls['student_last_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_last_name'].invalid && codSelfFormStepOne.controls['student_last_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un apellido v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_id_card_type'].value\"\n [control]=\"codSelfFormStepOne.controls['student_id_card_type']\"\n [selectCode]=\"codSelfFormStepOne.controls['student_id_card_type'].value === null ? 'Tipo de documento' : codSelfFormStepOne.controls['student_id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card_type'].invalid && codSelfFormStepOne.controls['student_id_card_type'].touched\">\n <span class=\"error-message\">Por favor ingresa un tipo de documento v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de documento'\"\n [control]=\"codSelfFormStepOne.controls['student_id_card']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card'].invalid && codSelfFormStepOne.controls['student_id_card'].touched\">\n <span class=\"error-message\">Por favor ingresa un documento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['gender'].value\"\n [control]=\"codSelfFormStepOne.controls['gender']\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'G\u00E9nero'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['gender'].invalid && codSelfFormStepOne.controls['gender'].touched\">\n <span class=\"error-message\">Por favor ingresa un genero v\u00E1lido.</span>\n </div>\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codSelfFormStepOne.controls['birthdate']\"\n [placeHolder]=\"'Fecha de nacimiento'\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['birthdate'].invalid && codSelfFormStepOne.controls['birthdate'].touched\">\n <span class=\"error-message\">Por favor ingresa una fecha mayor de 3 a\u00F1os.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['country'].value\"\n [control]=\"codSelfFormStepOne.controls['country']\"\n [selectCode]=\"codSelfFormStepOne.controls['country'].value === null ? 'Pa\u00EDs de residencia' : codSelfFormStepOne.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['country'].invalid && codSelfFormStepOne.controls['country'].touched\">\n <span class=\"error-message\">Por favor ingresa un pais v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['state'].value\"\n [control]=\"codSelfFormStepOne.controls['state']\"\n [selectCode]=\"codSelfFormStepOne.controls['state'].value === null ? 'Departamento o estado' : codSelfFormStepOne.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['state'].invalid && codSelfFormStepOne.controls['state'].touched\">\n <span class=\"error-message\">Por favor ingresa un departamento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['city'].value\"\n [control]=\"codSelfFormStepOne.controls['city']\"\n [selectCode]=\"codSelfFormStepOne.controls['city'].value === null ? 'Ciudad de residencia' : codSelfFormStepOne.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['city'].invalid && codSelfFormStepOne.controls['city'].touched\">\n <span class=\"error-message\">Por favor ingresa una ciudad v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Correo electr\u00F3nico'\"\n [control]=\"codSelfFormStepOne.controls['student_email']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_email'].invalid && codSelfFormStepOne.controls['student_email'].touched\">\n <span class=\"error-message\">Por favor ingresa un email valido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_phone_indicative'].value\"\n [control]=\"codSelfFormStepOne.controls['student_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicatives($event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_indicative'].invalid && codSelfFormStepOne.controls['student_phone_indicative'].touched\">\n <span class=\"error-message\">Por favor ingresa un indicativo valido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de tel\u00E9fono'\"\n [control]=\"codSelfFormStepOne.controls['student_phone_number']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_number'].invalid && codSelfFormStepOne.controls['student_phone_number'].touched\">\n <span class=\"error-message\">Por favor ingresa un numero de telefono v\u00E1lido.</span>\n </div>\n </form>\n\n <div class=\"flex mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n type=\"submit\"\n [disabled]=\"!codSelfFormStepOne.valid\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n\n</div>\n\n<div>\n <pre>{{ codSelfFormStepOne.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepOne.valid | json }}</pre>\n </div>\n</div>\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}\n"] }]
|
|
236
|
+
args: [{ selector: 'app-cod-self-form-step-one', template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos Personales</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\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepOne\">\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepOne.controls['student_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_name'].invalid && codSelfFormStepOne.controls['student_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un nombre v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codSelfFormStepOne.controls['student_last_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_last_name'].invalid && codSelfFormStepOne.controls['student_last_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un apellido v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_id_card_type'].value\"\n [control]=\"codSelfFormStepOne.controls['student_id_card_type']\"\n [selectCode]=\"codSelfFormStepOne.controls['student_id_card_type'].value === null ? 'Tipo de documento' : codSelfFormStepOne.controls['student_id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card_type'].invalid && codSelfFormStepOne.controls['student_id_card_type'].touched\">\n <span class=\"error-message\">Por favor ingresa un tipo de documento v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de documento'\"\n [control]=\"codSelfFormStepOne.controls['student_id_card']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card'].invalid && codSelfFormStepOne.controls['student_id_card'].touched\">\n <span class=\"error-message\">Por favor ingresa un documento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['gender'].value\"\n [control]=\"codSelfFormStepOne.controls['gender']\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'G\u00E9nero'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['gender'].invalid && codSelfFormStepOne.controls['gender'].touched\">\n <span class=\"error-message\">Por favor ingresa un genero v\u00E1lido.</span>\n </div>\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codSelfFormStepOne.controls['birthdate']\"\n [placeHolder]=\"'Fecha de nacimiento'\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['birthdate'].invalid && codSelfFormStepOne.controls['birthdate'].touched\">\n <span class=\"error-message\">Por favor ingresa una fecha mayor de 3 a\u00F1os.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['country'].value\"\n [control]=\"codSelfFormStepOne.controls['country']\"\n [selectCode]=\"codSelfFormStepOne.controls['country'].value === null ? 'Pa\u00EDs de residencia' : codSelfFormStepOne.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['country'].invalid && codSelfFormStepOne.controls['country'].touched\">\n <span class=\"error-message\">Por favor ingresa un pais v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['state'].value\"\n [control]=\"codSelfFormStepOne.controls['state']\"\n [selectCode]=\"codSelfFormStepOne.controls['state'].value === null ? 'Departamento o estado' : codSelfFormStepOne.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['state'].invalid && codSelfFormStepOne.controls['state'].touched\">\n <span class=\"error-message\">Por favor ingresa un departamento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['city'].value\"\n [control]=\"codSelfFormStepOne.controls['city']\"\n [selectCode]=\"codSelfFormStepOne.controls['city'].value === null ? 'Ciudad de residencia' : codSelfFormStepOne.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['city'].invalid && codSelfFormStepOne.controls['city'].touched\">\n <span class=\"error-message\">Por favor ingresa una ciudad v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Correo electr\u00F3nico'\"\n [control]=\"codSelfFormStepOne.controls['student_email']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_email'].invalid && codSelfFormStepOne.controls['student_email'].touched\">\n <span class=\"error-message\">Por favor ingresa un email valido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_phone_indicative'].value\"\n [control]=\"codSelfFormStepOne.controls['student_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicatives($event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_indicative'].invalid && codSelfFormStepOne.controls['student_phone_indicative'].touched\">\n <span class=\"error-message\">Por favor ingresa un indicativo valido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de tel\u00E9fono'\"\n [control]=\"codSelfFormStepOne.controls['student_phone_number']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_number'].invalid && codSelfFormStepOne.controls['student_phone_number'].touched\">\n <span class=\"error-message\">Por favor ingresa un numero de telefono v\u00E1lido.</span>\n </div>\n </form>\n\n <div class=\"flex mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n type=\"submit\"\n [disabled]=\"!codSelfFormStepOne.valid\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n\n</div>\n\n<div>\n <pre>{{ codSelfFormStepOne.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepOne.valid | json }}</pre>\n </div>\n</div>\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}\n"] }]
|
|
243
237
|
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.ParameterService }, { type: i0.ChangeDetectorRef }, { type: i3.MessageService }]; }, propDecorators: { user: [{
|
|
244
238
|
type: Input
|
|
245
239
|
}], completed: [{
|
|
246
240
|
type: Output
|
|
247
241
|
}] } });
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLXNlbGYtZm9ybS1zdGVwLW9uZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29kLXNlbGYtbWFuYWdlZC9zdGVwcy9jb2QtZm9ybS1zdGVwLW9uZS9jb2Qtc2VsZi1mb3JtLXN0ZXAtb25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qtc2VsZi1tYW5hZ2VkL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtb25lL2NvZC1zZWxmLWZvcm0tc3RlcC1vbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFVLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFlLFVBQVUsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG1CQUFtQixFQUF5QixNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7Ozs7O0FBV2hHLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxtQkFBbUI7SUFxQmxFLFlBQ1UsRUFBZSxFQUNmLGdCQUFrQyxFQUNsQyxLQUF3QixFQUN4QixjQUE4QjtRQUV0QyxLQUFLLEVBQUUsQ0FBQztRQUxBLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQXJCOUIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHakQsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQVNwQixp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USxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDM0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0SSxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFR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QUMsQ0FBQztJQUV4QixDQUFDOzt3SEEvT1ksMkJBQTJCOzRHQUEzQiwyQkFBMkIsNktDaEJ4QyxpdFBBMkpBOzJGRDNJYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsNEJBQTRCOzhMQU03QixJQUFJO3NCQUFaLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgSW5wdXQsIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlcywgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBQYXJhbWV0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9wYXJhbWV0ZXJzLXNlcnZpY2UvcGFyYW1ldGVycy5zZXJ2aWNlJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29kU2VsZk1hbmFnZWRDb250cm9scyB9IGZyb20gJy4uLy4uL2xvZ2ljL2NvZC1zZWxmLW1hbmFnZWQtY29udHJvbHMnO1xuaW1wb3J0IHsgQ29kU2VsZk1hbmFnZWRTdGVwcywgbG9jYWxTdG9yYWdlVmFsdWVzVHdvIH0gZnJvbSAnLi4vLi4vbG9naWMvY29kLXNlbGYtbWFuYWdlZC1zdGVwcyc7XG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IElVc2VySVBUUnFzIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvdXNlci91c2VyLXJzLm1vZGVsJztcblxuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jb2Qtc2VsZi1mb3JtLXN0ZXAtb25lJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvZC1zZWxmLWZvcm0tc3RlcC1vbmUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2Qtc2VsZi1mb3JtLXN0ZXAtb25lLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29kU2VsZkZvcm1TdGVwT25lQ29tcG9uZW50IGV4dGVuZHMgQ29kU2VsZk1hbmFnZWRTdGVwcyBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcblxuICBASW5wdXQoKSB1c2VyPzogSVVzZXJJUFRScXM7XG5cbiAgQE91dHB1dCgpIGNvbXBsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIGNvZFNlbGZGb3JtU3RlcE9uZSE6IEZvcm1Hcm91cFxuICBnZW5kZXJzOiBhbnlbXSA9IFtdO1xuICBzdHJhdHVtczogYW55O1xuICBpZFR5cGVzOiBhbnk7XG4gIGluZGljYXRpdmVzOiBhbnk7XG4gIGNpdmlsU3RhdHVzOiBhbnk7XG4gIGNvdW50cnlTZWxlY3RlZDogYW55O1xuICBjb3VudHJpZXM6IGFueTtcbiAgc3RhdGVzOiBhbnk7XG4gIGNpdGllczogYW55O1xuICBlcnJvck1lc3NhZ2U6IHN0cmluZyA9ICdGYWx0YW4gY2FtcG9zIHBvciBsbGVuYXIuJztcbiAgY29udHJvbHMgPSBuZXcgQ29kU2VsZk1hbmFnZWRDb250cm9scygpLmNvbnRyb2xzWzBdO1xuICB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIG1lc3NhZ2VJbmZvPSdFc3RhIHNlY2Npb24gc29sbyBlcyBwYXJhIGRhdG9zIGRlbCBlc3R1ZGlhbnRlLic7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBwYXJhbWV0ZXJTZXJ2aWNlOiBQYXJhbWV0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5nZXRQYXJhbWV0ZXJzKCk7XG4gIH1cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuc3RhcnRMb2NhbFN0b3JhZ2VXb3JrKCk7XG4gICAgdGhpcy5zZXRWYWx1ZXNCeUxvY2FsU3RvcmFnZSgpO1xuICAgIGlmIChjaGFuZ2VzWyd1c2VyJ10pIHtcbiAgICAgIGlmICh0aGlzLnVzZXIgIT0gbnVsbCkge1xuICAgICAgICBjb25zb2xlLmxvZygnc2V0RGF0YVVzZXJzJyk7XG4gICAgICAgIHRoaXMuc2V0RGF0YVVzZXJzKCk7XG4gICAgICAgIC8vIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfWVsc2V7XG4gICAgICAgIGNvbnNvbGUubG9nKCdsbGVndWUgYXF1aScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGluaXRGb3JtKCkge1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBzdHVkZW50X25hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHN0dWRlbnRfbGFzdF9uYW1lOlsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHN0dWRlbnRfaWRfY2FyZF90eXBlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgc3R1ZGVudF9pZF9jYXJkOiBbe3ZhbHVlOiAnJywgZGlzYWJsZWQ6IHRydWV9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwKV1dLFxuICAgICAgZ2VuZGVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBiaXJ0aGRhdGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdLCBbXV0sXG4gICAgICBjb3VudHJ5OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgc3RhdGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdLCBbXV0sXG4gICAgICBjaXR5OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgc3R1ZGVudF9lbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxuICAgICAgc3R1ZGVudF9waG9uZV9pbmRpY2F0aXZlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgc3R1ZGVudF9waG9uZV9udW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDgpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxNSldXSxcbiAgICB9KTtcbiAgICAvLyBDYWxjdWxhciBlZGFkIHkgc2V0ZWFyIHZhbG9yXG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2JpcnRoZGF0ZSddLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGNoYW5nZSkgPT4ge1xuICAgICAgICBsZXQgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBsZXQgYmlydGhkYXkgPSBuZXcgRGF0ZShjaGFuZ2UpO1xuICAgICAgICBsZXQgYWdlID0gdG9kYXkuZ2V0RnVsbFllYXIoKSAtIGJpcnRoZGF5LmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGxldCBtb250aCA9IHRvZGF5LmdldE1vbnRoKCkgLSBiaXJ0aGRheS5nZXRNb250aCgpO1xuXG4gICAgICAgIGlmIChtb250aCA8IDAgfHwgKG1vbnRoID09PSAwICYmIHRvZGF5LmdldERhdGUoKSA8IGJpcnRoZGF5LmdldERhdGUoKSkpIHtcbiAgICAgICAgICBhZ2UtLTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhZ2UgPCAzKSB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnRmVjaGEgZGUgbmFjaW1pZW50byBubyB2w6FsaWRhJ1xuICAgICAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydiaXJ0aGRhdGUnXS5zZXRFcnJvcnMoe1xuICAgICAgICAgICAgaW52YWxpZEFnZTogdHJ1ZVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2JpcnRoZGF0ZSddLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydhZ2UnXS5zZXRWYWx1ZShhZ2UpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgZ2V0UGFyYW1ldGVycygpIHtcbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0Q2FyZFR5cGVzKCdjb2wnKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICB0aGlzLmlkVHlwZXMgPSByZXNwb25zZS5kYXRhO1xuICAgIH0pO1xuICAgIHRoaXMucGFyYW1ldGVyU2VydmljZS5nZXRJbmRpY2F0aXZlcygpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMuaW5kaWNhdGl2ZXMgPSByZXNwb25zZS5kYXRhO1xuICAgIH0pO1xuICAgIHRoaXMucGFyYW1ldGVyU2VydmljZS5nZXRDb3VudHJpZXMoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICB0aGlzLmNvdW50cmllcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgfSk7XG4gICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldEFsbENpdGllcygpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMuY2l0aWVzID0gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0QWxsU3RhdGVzKCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgdGhpcy5zdGF0ZXMgPSByZXNwb25zZS5kYXRhO1xuICAgIH0pO1xuICAgIHRoaXMucGFyYW1ldGVyU2VydmljZS5nZXRHZW5kZXJzKCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlLmRhdGEpKS5zdWJzY3JpYmUoKGdlbmRlcnM6IGFueVtdKSA9PiB7XG4gICAgICBnZW5kZXJzLmZvckVhY2goZ2VuZGVyID0+IHtcbiAgICAgICAgbGV0IGdlbmRlckl0ZW0gPSB7XG4gICAgICAgICAgY29kZTogZ2VuZGVyLmNvZGUsXG4gICAgICAgICAgbmFtZTogZ2VuZGVyLm5hbWVfc3BhbmlzaFxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ2VuZGVycy5wdXNoKGdlbmRlckl0ZW0pXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICBzZXREYXRhVXNlcnMoKXtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9uYW1lJ10uc2V0VmFsdWUodGhpcy51c2VyPy5uYW1lKTtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9sYXN0X25hbWUnXS5zZXRWYWx1ZSh0aGlzLnVzZXI/Lmxhc3RfbmFtZSk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfaWRfY2FyZF90eXBlJ10uc2V0VmFsdWUodGhpcy51c2VyPy5pZF9jYXJkX3R5cGUpO1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmQnXS5zZXRWYWx1ZSh0aGlzLnVzZXI/LmlkX2NhcmQpO1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjb3VudHJ5J10uc2V0VmFsdWUodGhpcy51c2VyPy5jaXR5WzBdPy5jb3VudHJ5ICE9ICgxIHx8IG51bGwpID8gdGhpcy51c2VyPy5jaXR5WzBdPy5jb3VudHJ5IDogbnVsbCk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0YXRlJ10uc2V0VmFsdWUodGhpcy51c2VyPy5jaXR5WzBdPy5zdGF0ZSAhPSAoMzMgfHwgbnVsbCkgPyB0aGlzLnVzZXI/LmNpdHlbMF0/LnN0YXRlIDogbnVsbCk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZSh0aGlzLnVzZXI/LmNpdHlbMF0/LmNvZGUgIT0gKDEgfHwgbnVsbCkgPyB0aGlzLnVzZXI/LmNpdHlbMF0/LmNvZGUgOiBudWxsKTtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snZ2VuZGVyJ10uc2V0VmFsdWUodGhpcy51c2VyPy5nZW5kZXIpO1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydiaXJ0aGRhdGUnXS5zZXRWYWx1ZSh0aGlzLnVzZXI/LmJpcnRoZGF0ZSk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfZW1haWwnXS5zZXRWYWx1ZSh0aGlzLnVzZXI/LmVtYWlsKTtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9waG9uZV9pbmRpY2F0aXZlJ10uc2V0VmFsdWUodGhpcy51c2VyPy5waG9uZV9pbmRpY2F0aXZlKTtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9waG9uZV9udW1iZXInXS5zZXRWYWx1ZSh0aGlzLnVzZXI/LnBob25lX251bWJlcik7XG5cbiAgfVxuXG4gIHNlbGVjdENvdW50cnkoY291bnRyeTogYW55KSB7XG4gICAgbGV0IGlzbyA9ICcnO1xuICAgIGlmIChjb3VudHJ5ID09PSAnMicpIGlzbyA9ICdjb2wnO1xuICAgIGVsc2UgaWYgKGNvdW50cnkgPT09ICczJykgaXNvID0gJ3Zlbic7XG4gICAgZWxzZSBpZiAoY291bnRyeSA9PT0gJzQnKSBpc28gPSAndXNhJztcbiAgICBlbHNlIGlzbyA9ICcnO1xuXG4gICAgaWYgKGlzbyAhPSAnJykge1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NvdW50cnknXS5zZXRWYWx1ZShjb3VudHJ5KTtcblxuICAgICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldFN0YXRlc0J5Q291bnRyeShpc28pLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZXMgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICB0aGlzLnNlbGVjdFN0YXRlKHRoaXMubG9jYWxTdG9yYWdlQ09ELmdldENvZEZvcm1EYXRhKDIsICdzdGF0ZScpKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY291bnRyeSddLnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgICB0aGlzLmNvdW50cnlTZWxlY3RlZCA9IGNvdW50cnk7XG4gIH1cblxuICBzZWxlY3RTdGF0ZShzdGF0ZTogYW55KSB7XG4gICAgaWYgKHN0YXRlICE9PSAnRGVwYXJ0YW1lbnRvIG8gZXN0YWRvJykge1xuICAgICAgdGhpcy5nZXRTdGF0ZShzdGF0ZSk7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3RhdGUnXS5zZXRWYWx1ZShzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdGF0ZSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY2l0aWVzID0gW107XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0Q2l0eShjaXR5OiBhbnkpIHtcbiAgICBpZiAoY2l0eSAhPT0gJ0NpdWRhZCBkZSByZXNpZGVuY2lhJykge1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShjaXR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RJZFR5cGUoaWRUeXBlOiBhbnkpIHtcbiAgICBpZiAoaWRUeXBlICE9PSAnVGlwbyBkZSBkb2N1bWVudG8nKSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkX3R5cGUnXS5zZXRWYWx1ZShpZFR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkX3R5cGUnXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cbiAgc2VsZWN0R2VuZGVyKGdlbmRlcjogYW55KSB7XG4gICAgaWYgKGdlbmRlciAhPT0gJ0fDqW5lcm8nKSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snZ2VuZGVyJ10uc2V0VmFsdWUoZ2VuZGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2dlbmRlciddLnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgfVxuICBzZWxlY3RJbmRpY2F0aXZlcyhpbmRpY2F0aXZlOiBhbnkpIHtcbiAgICBpZiAoaW5kaWNhdGl2ZSAhPT0gJ0luZGljYXRpdm8nKSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9waG9uZV9pbmRpY2F0aXZlJ10uc2V0VmFsdWUoaW5kaWNhdGl2ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX2luZGljYXRpdmUnXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cbiAgc2VuZEZvcm0oKSB7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIGlmICh0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5pbnZhbGlkKSByZXR1cm47XG5cbiAgICAvLyBNb3Zlcm5vcyBhbCBwYXNvIDFcbiAgICB0aGlzLmNvbXBsZXRlZC5lbWl0KDEpO1xuICB9XG4gIGdldFN0YXRlKHN0YXRlOiBhbnkpIHtcbiAgICB0aGlzLmdldENpdHkoc3RhdGUpO1xuICB9XG4gIGdldENpdHkoc3RhdGU6IGFueSkge1xuICAgIHRoaXMucGFyYW1ldGVyU2VydmljZS5nZXRDaXRpZXNCeVN0YXRlKHN0YXRlKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICB0aGlzLmNpdGllcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICB0aGlzLnNlbGVjdENpdHkodGhpcy5sb2NhbFN0b3JhZ2VDT0QuZ2V0Q29kRm9ybURhdGEoMSwgJ2NpdHknKSk7XG4gICAgfSk7XG4gIH1cbiAgc3RhcnRMb2NhbFN0b3JhZ2VXb3JrKCkge1xuICAgIHRoaXMuY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIGxldCBsb2NhbFN0b3JhZ2VWYWx1ZTogbG9jYWxTdG9yYWdlVmFsdWVzVHdvID0gdGhpcy5yZWFkQW5kV3JpdGVMUygxLCBjb250cm9sLm5hbWUpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbY29udHJvbC5uYW1lXS5zZXRWYWx1ZShsb2NhbFN0b3JhZ2VWYWx1ZS52YWx1ZSk7XG4gICAgICB0aGlzLmxpc3RlbkZvcm1DaGFuZ2VzKDEsIGNvbnRyb2wubmFtZSwgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbY29udHJvbC5uYW1lXS52YWx1ZUNoYW5nZXMpO1xuICAgIH0pO1xuICB9XG4gIHNob3dDb25maXJtKCkge1xuICAgIGlmICghdGhpcy52aXNpYmxlKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsga2V5OiAnY29uZmlybScsIHN0aWNreTogdHJ1ZSwgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ0NhbiB5b3Ugc2VuZCBtZSB0aGUgcmVwb3J0PycsIGxpZmU6IDEwMDAwIH0pO1xuICAgICAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG9uUmVqZWN0KCkge1xuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuY2xlYXIoJ2NvbmZpcm0nKTtcbiAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbn1cblxuc2V0VmFsdWVzQnlMb2NhbFN0b3JhZ2UoKSB7XG4gIGNvbnN0IGNvdW50cnkgPSB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY291bnRyeSddLnZhbHVlIHx8IG51bGw7XG4gIGlmICghY291bnRyeSkgcmV0dXJuO1xuICB0aGlzLnNlbGVjdENvdW50cnkoY291bnRyeSk7XG5cbiAgY29uc3Qgc3RhdGUgPSB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3RhdGUnXS52YWx1ZSB8fCBudWxsO1xuICBpZiAoIXN0YXRlKSByZXR1cm47XG4gIHRoaXMuc2VsZWN0U3RhdGUoc3RhdGUpO1xuXG4gIGNvbnN0IGNpdHkgPSB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY2l0eSddLnZhbHVlIHx8IG51bGw7XG4gIGlmICghY2l0eSkgcmV0dXJuO1xuICB0aGlzLnNlbGVjdENpdHkoY2l0eSk7XG5cbn1cblxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lci1tYWluXCI+XG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZm9ybVwiPlxuICAgIDxoMj5EYXRvcyBQZXJzb25hbGVzPC9oMj5cbiAgICAgIDxwLXRvYXN0IHBvc2l0aW9uPVwidG9wLWNlbnRlclwiIGtleT1cImNvbmZpcm1cIiAob25DbG9zZSk9XCJvblJlamVjdCgpXCIgW2Jhc2VaSW5kZXhdPVwiMTBcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1tZXNzYWdlIHBUZW1wbGF0ZT1cIm1lc3NhZ2VcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLXN0YXJ0XCIgc3R5bGU9XCJmbGV4OiAxXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9xYS5pcHRkZXYuY29tLmNvL2Fzc2V0cy9sb2dvcy9yZWFkaW5nLnBuZ1wiIHN0eWxlPVwid2lkdGg6IDY1cHg7XCIgc2hhcGU9XCJjaXJjbGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LTkwMFwiPkphY29iPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LW1lZGl1bSB0ZXh0LWxnIG15LTMgdGV4dC05MDBcIj57eyBtZXNzYWdlSW5mbyB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9wLXRvYXN0PlxuXG5cbiAgICA8aSBjbGFzcz1cInBpIHBpLWV4Y2xhbWF0aW9uLWNpcmNsZSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzaG93Q29uZmlybSgpXCI+PC9pPlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiY29kU2VsZkZvcm1TdGVwT25lXCI+XG5cbiAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ05vbWJyZXMnXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X25hbWUnXVwiXG4gICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X25hbWUnXS5pbnZhbGlkICYmIGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9uYW1lJ10udG91Y2hlZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Qb3IgZmF2b3IgaW5ncmVzYSB1biBub21icmUgdsOhbGlkby48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0FwZWxsaWRvcydcIlxuICAgICAgICBbY29udHJvbF09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfbGFzdF9uYW1lJ11cIlxuICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgPGRpdiAqbmdJZj1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9sYXN0X25hbWUnXS5pbnZhbGlkICYmIGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9sYXN0X25hbWUnXS50b3VjaGVkXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlBvciBmYXZvciBpbmdyZXNhIHVuIGFwZWxsaWRvIHbDoWxpZG8uPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8aXB0LXNlbGVjdFxuICAgICAgICBbaW5pdGlhbFZhbHVlXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkX3R5cGUnXS52YWx1ZVwiXG4gICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkX3R5cGUnXVwiXG4gICAgICAgIFtzZWxlY3RDb2RlXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkX3R5cGUnXS52YWx1ZSA9PT0gbnVsbCA/ICdUaXBvIGRlIGRvY3VtZW50bycgOiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfaWRfY2FyZF90eXBlJ10udmFsdWVcIlxuICAgICAgICBbaXNSZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgW2RhdGFdPVwiaWRUeXBlc1wiXG4gICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RJZFR5cGUoJGV2ZW50KVwiXG4gICAgICAgIFtkZWZhdWx0VGV4dF09XCInVGlwbyBkZSBkb2N1bWVudG8nXCJcbiAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmRfdHlwZSddLmludmFsaWQgJiYgY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmRfdHlwZSddLnRvdWNoZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+UG9yIGZhdm9yIGluZ3Jlc2EgdW4gdGlwbyBkZSBkb2N1bWVudG8gdsOhbGlkby48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgW2lucHV0VHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgIFtwbGFjZUhvbGRlcl09XCInTsO6bWVybyBkZSBkb2N1bWVudG8nXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmQnXVwiXG4gICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmQnXS5pbnZhbGlkICYmIGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkJ10udG91Y2hlZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Qb3IgZmF2b3IgaW5ncmVzYSB1biBkb2N1bWVudG8gdsOhbGlkby48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgIFtpbml0aWFsVmFsdWVdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydnZW5kZXInXS52YWx1ZVwiXG4gICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snZ2VuZGVyJ11cIlxuICAgICAgICBbZGF0YV09XCJnZW5kZXJzXCJcbiAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdEdlbmRlcigkZXZlbnQpXCJcbiAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidHw6luZXJvJ1wiXG4gICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgPGRpdiAqbmdJZj1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snZ2VuZGVyJ10uaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2dlbmRlciddLnRvdWNoZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+UG9yIGZhdm9yIGluZ3Jlc2EgdW4gZ2VuZXJvIHbDoWxpZG8uPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8aXB0LWlucHV0XG4gICAgICAgIG9uZm9jdXM9XCIodGhpcy50eXBlPSdkYXRlJylcIlxuICAgICAgICBbaW5wdXRUeXBlXT1cIidkYXRlJ1wiXG4gICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snYmlydGhkYXRlJ11cIlxuICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0ZlY2hhIGRlIG5hY2ltaWVudG8nXCJcbiAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2JpcnRoZGF0ZSddLmludmFsaWQgJiYgY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydiaXJ0aGRhdGUnXS50b3VjaGVkXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlBvciBmYXZvciBpbmdyZXNhIHVuYSBmZWNoYSBtYXlvciBkZSAzIGHDsW9zLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NvdW50cnknXS52YWx1ZVwiXG4gICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY291bnRyeSddXCJcbiAgICAgICAgW3NlbGVjdENvZGVdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjb3VudHJ5J10udmFsdWUgPT09IG51bGwgPyAnUGHDrXMgZGUgcmVzaWRlbmNpYScgOiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NvdW50cnknXS52YWx1ZVwiXG4gICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RDb3VudHJ5KCRldmVudClcIlxuICAgICAgICBbZGF0YV09XCJjb3VudHJpZXNcIlxuICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ1Bhw61zIGRlIHJlc2lkZW5jaWEnXCJcbiAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjb3VudHJ5J10uaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NvdW50cnknXS50b3VjaGVkXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlBvciBmYXZvciBpbmdyZXNhIHVuIHBhaXMgdsOhbGlkby48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgIFtpbml0aWFsVmFsdWVdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdGF0ZSddLnZhbHVlXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdGF0ZSddXCJcbiAgICAgICAgW3NlbGVjdENvZGVdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdGF0ZSddLnZhbHVlID09PSBudWxsID8gJ0RlcGFydGFtZW50byBvIGVzdGFkbycgOiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0YXRlJ10udmFsdWVcIlxuICAgICAgICBbaXNSZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdFN0YXRlKCRldmVudClcIlxuICAgICAgICBbZGF0YV09XCJzdGF0ZXNcIlxuICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ0RlcGFydGFtZW50byBvIGVzdGFkbydcIlxuICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0YXRlJ10uaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0YXRlJ10udG91Y2hlZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Qb3IgZmF2b3IgaW5ncmVzYSB1biBkZXBhcnRhbWVudG8gdsOhbGlkby48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgIFtpbml0aWFsVmFsdWVdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjaXR5J10udmFsdWVcIlxuICAgICAgICBbY29udHJvbF09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NpdHknXVwiXG4gICAgICAgIFtzZWxlY3RDb2RlXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY2l0eSddLnZhbHVlID09PSBudWxsID8gJ0NpdWRhZCBkZSByZXNpZGVuY2lhJyA6IGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY2l0eSddLnZhbHVlXCJcbiAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdENpdHkoJGV2ZW50KVwiXG4gICAgICAgIFtkYXRhXT1cImNpdGllc1wiXG4gICAgICAgIFtkZWZhdWx0VGV4dF09XCInQ2l1ZGFkIGRlIHJlc2lkZW5jaWEnXCJcbiAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjaXR5J10uaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NpdHknXS50b3VjaGVkXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlBvciBmYXZvciBpbmdyZXNhIHVuYSBjaXVkYWQgdsOhbGlkby48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgW2lucHV0VHlwZV09XCInZW1haWwnXCJcbiAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidDb3JyZW8gZWxlY3Ryw7NuaWNvJ1wiXG4gICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9lbWFpbCddXCJcbiAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfZW1haWwnXS5pbnZhbGlkICYmIGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9lbWFpbCddLnRvdWNoZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+UG9yIGZhdm9yIGluZ3Jlc2EgdW4gZW1haWwgdmFsaWRvLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfcGhvbmVfaW5kaWNhdGl2ZSddLnZhbHVlXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX2luZGljYXRpdmUnXVwiXG4gICAgICAgIFtkYXRhXT1cImluZGljYXRpdmVzXCJcbiAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdEluZGljYXRpdmVzKCRldmVudClcIlxuICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ0luZGljYXRpdm8nXCJcbiAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX2luZGljYXRpdmUnXS5pbnZhbGlkICYmIGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9waG9uZV9pbmRpY2F0aXZlJ10udG91Y2hlZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Qb3IgZmF2b3IgaW5ncmVzYSB1biBpbmRpY2F0aXZvIHZhbGlkby48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgW2lucHV0VHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgIFtwbGFjZUhvbGRlcl09XCInTsO6bWVybyBkZSB0ZWzDqWZvbm8nXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX251bWJlciddXCJcbiAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfcGhvbmVfbnVtYmVyJ10uaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfcGhvbmVfbnVtYmVyJ10udG91Y2hlZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Qb3IgZmF2b3IgaW5ncmVzYSB1biBudW1lcm8gZGUgdGVsZWZvbm8gdsOhbGlkby48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBtdC0zIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBwQnV0dG9uXG4gICAgICAgIGljb249XCJwaSBwaS1hcnJvdy1yaWdodFwiXG4gICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNvZFNlbGZGb3JtU3RlcE9uZS52YWxpZFwiXG4gICAgICAgIChjbGljayk9XCJzZW5kRm9ybSgpXCJcbiAgICAgID48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuXG48ZGl2PlxuICA8cHJlPnt7IGNvZFNlbGZGb3JtU3RlcE9uZS52YWx1ZSB8IGpzb24gfX08L3ByZT5cbiAgPGRpdj5cbiAgICA8cHJlPnt7IGNvZFNlbGZGb3JtU3RlcE9uZS52YWxpZCB8IGpzb24gfX08L3ByZT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
242
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLXNlbGYtZm9ybS1zdGVwLW9uZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29kLXNlbGYtbWFuYWdlZC9zdGVwcy9jb2QtZm9ybS1zdGVwLW9uZS9jb2Qtc2VsZi1mb3JtLXN0ZXAtb25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qtc2VsZi1tYW5hZ2VkL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtb25lL2NvZC1zZWxmLWZvcm0tc3RlcC1vbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFVLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFlLFVBQVUsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG1CQUFtQixFQUF5QixNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7Ozs7O0FBV2hHLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxtQkFBbUI7SUFxQmxFLFlBQ1UsRUFBZSxFQUNmLGdCQUFrQyxFQUNsQyxLQUF3QixFQUN4QixjQUE4QjtRQUV0QyxLQUFLLEVBQUUsQ0FBQztRQUxBLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQXJCOUIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHakQsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQVNwQixp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SUFBSSxpQkFBaUIsR0FBMEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqRixJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdkcsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDcEksSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7O3dIQTFPWSwyQkFBMkI7NEdBQTNCLDJCQUEyQiw2S0NoQnhDLHd0UEEySkE7MkZEM0lhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSw0QkFBNEI7OExBTTdCLElBQUk7c0JBQVosS0FBSztnQkFFSSxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBJbnB1dCwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzLCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFBhcmFtZXRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3BhcmFtZXRlcnMtc2VydmljZS9wYXJhbWV0ZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb2RTZWxmTWFuYWdlZENvbnRyb2xzIH0gZnJvbSAnLi4vLi4vbG9naWMvY29kLXNlbGYtbWFuYWdlZC1jb250cm9scyc7XG5pbXBvcnQgeyBDb2RTZWxmTWFuYWdlZFN0ZXBzLCBsb2NhbFN0b3JhZ2VWYWx1ZXNUd28gfSBmcm9tICcuLi8uLi9sb2dpYy9jb2Qtc2VsZi1tYW5hZ2VkLXN0ZXBzJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgSVVzZXJJUFRScXMgfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy91c2VyL3VzZXItcnMubW9kZWwnO1xuXG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNvZC1zZWxmLWZvcm0tc3RlcC1vbmUnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29kLXNlbGYtZm9ybS1zdGVwLW9uZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvZC1zZWxmLWZvcm0tc3RlcC1vbmUuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDb2RTZWxmRm9ybVN0ZXBPbmVDb21wb25lbnQgZXh0ZW5kcyBDb2RTZWxmTWFuYWdlZFN0ZXBzIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xuXG4gIEBJbnB1dCgpIHVzZXI/OiBJVXNlcklQVFJxcztcblxuICBAT3V0cHV0KCkgY29tcGxldGVkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgY29kU2VsZkZvcm1TdGVwT25lITogRm9ybUdyb3VwXG4gIGdlbmRlcnM6IGFueVtdID0gW107XG4gIHN0cmF0dW1zOiBhbnk7XG4gIGlkVHlwZXM6IGFueTtcbiAgaW5kaWNhdGl2ZXM6IGFueTtcbiAgY2l2aWxTdGF0dXM6IGFueTtcbiAgY291bnRyeVNlbGVjdGVkOiBhbnk7XG4gIGNvdW50cmllczogYW55O1xuICBzdGF0ZXM6IGFueTtcbiAgY2l0aWVzOiBhbnk7XG4gIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJ0ZhbHRhbiBjYW1wb3MgcG9yIGxsZW5hci4nO1xuICBjb250cm9scyA9IG5ldyBDb2RTZWxmTWFuYWdlZENvbnRyb2xzKCkuY29udHJvbHNbMF07XG4gIHZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbWVzc2FnZUluZm89J0VzdGEgc2VjY2lvbiBzb2xvIGVzIHBhcmEgZGF0b3MgZGVsIGVzdHVkaWFudGUuJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHBhcmFtZXRlclNlcnZpY2U6IFBhcmFtZXRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmluaXRGb3JtKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydExvY2FsU3RvcmFnZVdvcmsoKTtcblxuICAgIGlmIChjaGFuZ2VzWyd1c2VyJ10pIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gY2hhbmdlc1sndXNlciddLmN1cnJlbnRWYWx1ZTtcbiAgICAgIGNvbnN0IHByZXZpb3VzVXNlciA9IGNoYW5nZXNbJ3VzZXInXS5wcmV2aW91c1ZhbHVlO1xuXG4gICAgICAvLyBWZXJpZmljYSBzaSBlbCBvYmpldG8gJ3VzZXInIGFjdHVhbCBlcyBkaWZlcmVudGUgYWwgYW50ZXJpb3JcbiAgICAgIGlmICghdGhpcy5hcmVFcXVhbFVzZXJzKGN1cnJlbnRVc2VyLCBwcmV2aW91c1VzZXIpKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ3NldERhdGFVc2VycycpO1xuICAgICAgICAgIHRoaXMuc2V0RGF0YVVzZXJzKCk7XG4gICAgICAgICAgLy8gdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdObyBoYXkgY2FtYmlvcyBlbiBlbCB1c3VhcmlvJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHByaXZhdGUgYXJlRXF1YWxVc2Vycyh1c2VyMTogSVVzZXJJUFRScXMgfCB1bmRlZmluZWQsIHVzZXIyOiBJVXNlcklQVFJxcyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIC8vIEltcGxlbWVudGEgbGEgbMOzZ2ljYSBwYXJhIGNvbXBhcmFyIGxvcyB2YWxvcmVzIHJlbGV2YW50ZXMgZGUgbG9zIG9iamV0b3MgJ3VzZXInXG4gICAgLy8gQXF1w60gcHVlZGVzIGNvbXBhcmFyIGxhcyBwcm9waWVkYWRlcyByZWxldmFudGVzIHBhcmEgZGV0ZXJtaW5hciBzaSBzb24gaWd1YWxlcyBvIG5vXG4gICAgLy8gUG9yIGVqZW1wbG86XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVzZXIxKSA9PT0gSlNPTi5zdHJpbmdpZnkodXNlcjIpO1xufVxuXG4gIGluaXRGb3JtKCkge1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBzdHVkZW50X25hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHN0dWRlbnRfbGFzdF9uYW1lOlsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHN0dWRlbnRfaWRfY2FyZF90eXBlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgc3R1ZGVudF9pZF9jYXJkOiBbe3ZhbHVlOiAnJywgZGlzYWJsZWQ6IHRydWV9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwKV1dLFxuICAgICAgZ2VuZGVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBiaXJ0aGRhdGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdLCBbXV0sXG4gICAgICBjb3VudHJ5OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgc3RhdGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdLCBbXV0sXG4gICAgICBjaXR5OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgc3R1ZGVudF9lbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxuICAgICAgc3R1ZGVudF9waG9uZV9pbmRpY2F0aXZlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgc3R1ZGVudF9waG9uZV9udW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDgpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxNSldXSxcbiAgICB9KTtcbiAgICAvLyBDYWxjdWxhciBlZGFkIHkgc2V0ZWFyIHZhbG9yXG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2JpcnRoZGF0ZSddLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGNoYW5nZSkgPT4ge1xuICAgICAgICBsZXQgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBsZXQgYmlydGhkYXkgPSBuZXcgRGF0ZShjaGFuZ2UpO1xuICAgICAgICBsZXQgYWdlID0gdG9kYXkuZ2V0RnVsbFllYXIoKSAtIGJpcnRoZGF5LmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGxldCBtb250aCA9IHRvZGF5LmdldE1vbnRoKCkgLSBiaXJ0aGRheS5nZXRNb250aCgpO1xuXG4gICAgICAgIGlmIChtb250aCA8IDAgfHwgKG1vbnRoID09PSAwICYmIHRvZGF5LmdldERhdGUoKSA8IGJpcnRoZGF5LmdldERhdGUoKSkpIHtcbiAgICAgICAgICBhZ2UtLTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhZ2UgPCAzKSB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnRmVjaGEgZGUgbmFjaW1pZW50byBubyB2w6FsaWRhJ1xuICAgICAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydiaXJ0aGRhdGUnXS5zZXRFcnJvcnMoe1xuICAgICAgICAgICAgaW52YWxpZEFnZTogdHJ1ZVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2JpcnRoZGF0ZSddLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydhZ2UnXS5zZXRWYWx1ZShhZ2UpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgZ2V0UGFyYW1ldGVycygpIHtcbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0Q2FyZFR5cGVzKCdjb2wnKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICB0aGlzLmlkVHlwZXMgPSByZXNwb25zZS5kYXRhO1xuICAgIH0pO1xuICAgIHRoaXMucGFyYW1ldGVyU2VydmljZS5nZXRJbmRpY2F0aXZlcygpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMuaW5kaWNhdGl2ZXMgPSByZXNwb25zZS5kYXRhO1xuICAgIH0pO1xuICAgIHRoaXMucGFyYW1ldGVyU2VydmljZS5nZXRDb3VudHJpZXMoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICB0aGlzLmNvdW50cmllcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgfSk7XG4gICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldEFsbENpdGllcygpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMuY2l0aWVzID0gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0QWxsU3RhdGVzKCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgdGhpcy5zdGF0ZXMgPSByZXNwb25zZS5kYXRhO1xuICAgIH0pO1xuICAgIHRoaXMucGFyYW1ldGVyU2VydmljZS5nZXRHZW5kZXJzKCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlLmRhdGEpKS5zdWJzY3JpYmUoKGdlbmRlcnM6IGFueVtdKSA9PiB7XG4gICAgICBnZW5kZXJzLmZvckVhY2goZ2VuZGVyID0+IHtcbiAgICAgICAgbGV0IGdlbmRlckl0ZW0gPSB7XG4gICAgICAgICAgY29kZTogZ2VuZGVyLmNvZGUsXG4gICAgICAgICAgbmFtZTogZ2VuZGVyLm5hbWVfc3BhbmlzaFxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ2VuZGVycy5wdXNoKGdlbmRlckl0ZW0pXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICBzZXREYXRhVXNlcnMoKXtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9uYW1lJ10uc2V0VmFsdWUodGhpcy51c2VyPy5uYW1lKTtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9sYXN0X25hbWUnXS5zZXRWYWx1ZSh0aGlzLnVzZXI/Lmxhc3RfbmFtZSk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfaWRfY2FyZF90eXBlJ10uc2V0VmFsdWUodGhpcy51c2VyPy5pZF9jYXJkX3R5cGUpO1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmQnXS5zZXRWYWx1ZSh0aGlzLnVzZXI/LmlkX2NhcmQpO1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjb3VudHJ5J10uc2V0VmFsdWUodGhpcy51c2VyPy5jaXR5WzBdPy5jb3VudHJ5ICE9ICgxIHx8IG51bGwpID8gdGhpcy51c2VyPy5jaXR5WzBdPy5jb3VudHJ5IDogbnVsbCk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0YXRlJ10uc2V0VmFsdWUodGhpcy51c2VyPy5jaXR5WzBdPy5zdGF0ZSAhPSAoMzMgfHwgbnVsbCkgPyB0aGlzLnVzZXI/LmNpdHlbMF0/LnN0YXRlIDogbnVsbCk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZSh0aGlzLnVzZXI/LmNpdHlbMF0/LmNvZGUgIT0gKDEgfHwgbnVsbCkgPyB0aGlzLnVzZXI/LmNpdHlbMF0/LmNvZGUgOiBudWxsKTtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snZ2VuZGVyJ10uc2V0VmFsdWUodGhpcy51c2VyPy5nZW5kZXIpO1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydiaXJ0aGRhdGUnXS5zZXRWYWx1ZSh0aGlzLnVzZXI/LmJpcnRoZGF0ZSk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfZW1haWwnXS5zZXRWYWx1ZSh0aGlzLnVzZXI/LmVtYWlsKTtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9waG9uZV9pbmRpY2F0aXZlJ10uc2V0VmFsdWUodGhpcy51c2VyPy5waG9uZV9pbmRpY2F0aXZlKTtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9waG9uZV9udW1iZXInXS5zZXRWYWx1ZSh0aGlzLnVzZXI/LnBob25lX251bWJlcik7XG5cbiAgfVxuXG4gIHNlbGVjdENvdW50cnkoY291bnRyeTogYW55KSB7XG4gICAgbGV0IGlzbyA9ICcnO1xuICAgIGlmIChjb3VudHJ5ID09PSAnMicpIGlzbyA9ICdjb2wnO1xuICAgIGVsc2UgaWYgKGNvdW50cnkgPT09ICczJykgaXNvID0gJ3Zlbic7XG4gICAgZWxzZSBpZiAoY291bnRyeSA9PT0gJzQnKSBpc28gPSAndXNhJztcbiAgICBlbHNlIGlzbyA9ICcnO1xuXG4gICAgaWYgKGlzbyAhPSAnJykge1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NvdW50cnknXS5zZXRWYWx1ZShjb3VudHJ5KTtcblxuICAgICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldFN0YXRlc0J5Q291bnRyeShpc28pLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZXMgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICB0aGlzLnNlbGVjdFN0YXRlKHRoaXMubG9jYWxTdG9yYWdlQ09ELmdldENvZEZvcm1EYXRhKDIsICdzdGF0ZScpKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY291bnRyeSddLnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgICB0aGlzLmNvdW50cnlTZWxlY3RlZCA9IGNvdW50cnk7XG4gIH1cblxuICBzZWxlY3RTdGF0ZShzdGF0ZTogYW55KSB7XG4gICAgaWYgKHN0YXRlICE9PSAnRGVwYXJ0YW1lbnRvIG8gZXN0YWRvJykge1xuICAgICAgdGhpcy5nZXRTdGF0ZShzdGF0ZSk7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3RhdGUnXS5zZXRWYWx1ZShzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdGF0ZSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY2l0aWVzID0gW107XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0Q2l0eShjaXR5OiBhbnkpIHtcbiAgICBpZiAoY2l0eSAhPT0gJ0NpdWRhZCBkZSByZXNpZGVuY2lhJykge1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShjaXR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RJZFR5cGUoaWRUeXBlOiBhbnkpIHtcbiAgICBpZiAoaWRUeXBlICE9PSAnVGlwbyBkZSBkb2N1bWVudG8nKSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkX3R5cGUnXS5zZXRWYWx1ZShpZFR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkX3R5cGUnXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cbiAgc2VsZWN0R2VuZGVyKGdlbmRlcjogYW55KSB7XG4gICAgaWYgKGdlbmRlciAhPT0gJ0fDqW5lcm8nKSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snZ2VuZGVyJ10uc2V0VmFsdWUoZ2VuZGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2dlbmRlciddLnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgfVxuICBzZWxlY3RJbmRpY2F0aXZlcyhpbmRpY2F0aXZlOiBhbnkpIHtcbiAgICBpZiAoaW5kaWNhdGl2ZSAhPT0gJ0luZGljYXRpdm8nKSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9waG9uZV9pbmRpY2F0aXZlJ10uc2V0VmFsdWUoaW5kaWNhdGl2ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX2luZGljYXRpdmUnXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cbiAgc2VuZEZvcm0oKSB7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIGlmICh0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5pbnZhbGlkKSByZXR1cm47XG5cbiAgICAvLyBNb3Zlcm5vcyBhbCBwYXNvIDFcbiAgICB0aGlzLmNvbXBsZXRlZC5lbWl0KDEpO1xuICB9XG4gIGdldFN0YXRlKHN0YXRlOiBhbnkpIHtcbiAgICB0aGlzLmdldENpdHkoc3RhdGUpO1xuICB9XG4gIGdldENpdHkoc3RhdGU6IGFueSkge1xuICAgIHRoaXMucGFyYW1ldGVyU2VydmljZS5nZXRDaXRpZXNCeVN0YXRlKHN0YXRlKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICB0aGlzLmNpdGllcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICB0aGlzLnNlbGVjdENpdHkodGhpcy5sb2NhbFN0b3JhZ2VDT0QuZ2V0Q29kRm9ybURhdGEoMSwgJ2NpdHknKSk7XG4gICAgfSk7XG4gIH1cbiAgc3RhcnRMb2NhbFN0b3JhZ2VXb3JrKCkge1xuICAgIHRoaXMuY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIGxldCBsb2NhbFN0b3JhZ2VWYWx1ZTogbG9jYWxTdG9yYWdlVmFsdWVzVHdvID0gdGhpcy5yZWFkQW5kV3JpdGVMUygxLCBjb250cm9sLm5hbWUpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbY29udHJvbC5uYW1lXS5zZXRWYWx1ZShsb2NhbFN0b3JhZ2VWYWx1ZS52YWx1ZSk7XG4gICAgICB0aGlzLmxpc3RlbkZvcm1DaGFuZ2VzKDEsIGNvbnRyb2wubmFtZSwgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbY29udHJvbC5uYW1lXS52YWx1ZUNoYW5nZXMpO1xuICAgIH0pO1xuICB9XG4gIHNob3dDb25maXJtKCkge1xuICAgIGlmICghdGhpcy52aXNpYmxlKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsga2V5OiAnY29uZmlybScsIHN0aWNreTogdHJ1ZSwgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ0NhbiB5b3Ugc2VuZCBtZSB0aGUgcmVwb3J0PycsIGxpZmU6IDEwMDAwIH0pO1xuICAgICAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG9uUmVqZWN0KCkge1xuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuY2xlYXIoJ2NvbmZpcm0nKTtcbiAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbn1cblxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLW1haW5cIj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mb3JtXCI+XG4gICAgPGgyPkRhdG9zIFBlcnNvbmFsZXM8L2gyPlxuICAgICAgPHAtdG9hc3QgcG9zaXRpb249XCJ0b3AtY2VudGVyXCIga2V5PVwiY29uZmlybVwiIChvbkNsb3NlKT1cIm9uUmVqZWN0KClcIiBbYmFzZVpJbmRleF09XCIxMFwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LW1lc3NhZ2UgcFRlbXBsYXRlPVwibWVzc2FnZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtc3RhcnRcIiBzdHlsZT1cImZsZXg6IDFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3FhLmlwdGRldi5jb20uY28vYXNzZXRzL2xvZ29zL3JlYWRpbmcucG5nXCIgc3R5bGU9XCJ3aWR0aDogNjVweDtcIiBzaGFwZT1cImNpcmNsZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtOTAwXCI+SmFjb2I8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtbGcgbXktMyB0ZXh0LTkwMFwiPnt7IG1lc3NhZ2VJbmZvIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3AtdG9hc3Q+XG5cblxuICAgIDxpIGNsYXNzPVwicGkgcGktZXhjbGFtYXRpb24tY2lyY2xlIGN1cnNvci1wb2ludGVyIHctYXV0b1wiIChjbGljayk9XCJzaG93Q29uZmlybSgpXCI+PC9pPlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiY29kU2VsZkZvcm1TdGVwT25lXCI+XG5cbiAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ05vbWJyZXMnXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X25hbWUnXVwiXG4gICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X25hbWUnXS5pbnZhbGlkICYmIGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9uYW1lJ10udG91Y2hlZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Qb3IgZmF2b3IgaW5ncmVzYSB1biBub21icmUgdsOhbGlkby48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0FwZWxsaWRvcydcIlxuICAgICAgICBbY29udHJvbF09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfbGFzdF9uYW1lJ11cIlxuICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgPGRpdiAqbmdJZj1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9sYXN0X25hbWUnXS5pbnZhbGlkICYmIGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9sYXN0X25hbWUnXS50b3VjaGVkXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlBvciBmYXZvciBpbmdyZXNhIHVuIGFwZWxsaWRvIHbDoWxpZG8uPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8aXB0LXNlbGVjdFxuICAgICAgICBbaW5pdGlhbFZhbHVlXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkX3R5cGUnXS52YWx1ZVwiXG4gICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkX3R5cGUnXVwiXG4gICAgICAgIFtzZWxlY3RDb2RlXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkX3R5cGUnXS52YWx1ZSA9PT0gbnVsbCA/ICdUaXBvIGRlIGRvY3VtZW50bycgOiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfaWRfY2FyZF90eXBlJ10udmFsdWVcIlxuICAgICAgICBbaXNSZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgW2RhdGFdPVwiaWRUeXBlc1wiXG4gICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RJZFR5cGUoJGV2ZW50KVwiXG4gICAgICAgIFtkZWZhdWx0VGV4dF09XCInVGlwbyBkZSBkb2N1bWVudG8nXCJcbiAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmRfdHlwZSddLmludmFsaWQgJiYgY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmRfdHlwZSddLnRvdWNoZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+UG9yIGZhdm9yIGluZ3Jlc2EgdW4gdGlwbyBkZSBkb2N1bWVudG8gdsOhbGlkby48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgW2lucHV0VHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgIFtwbGFjZUhvbGRlcl09XCInTsO6bWVybyBkZSBkb2N1bWVudG8nXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmQnXVwiXG4gICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmQnXS5pbnZhbGlkICYmIGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkJ10udG91Y2hlZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Qb3IgZmF2b3IgaW5ncmVzYSB1biBkb2N1bWVudG8gdsOhbGlkby48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgIFtpbml0aWFsVmFsdWVdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydnZW5kZXInXS52YWx1ZVwiXG4gICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snZ2VuZGVyJ11cIlxuICAgICAgICBbZGF0YV09XCJnZW5kZXJzXCJcbiAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdEdlbmRlcigkZXZlbnQpXCJcbiAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidHw6luZXJvJ1wiXG4gICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgPGRpdiAqbmdJZj1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snZ2VuZGVyJ10uaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2dlbmRlciddLnRvdWNoZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+UG9yIGZhdm9yIGluZ3Jlc2EgdW4gZ2VuZXJvIHbDoWxpZG8uPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8aXB0LWlucHV0XG4gICAgICAgIG9uZm9jdXM9XCIodGhpcy50eXBlPSdkYXRlJylcIlxuICAgICAgICBbaW5wdXRUeXBlXT1cIidkYXRlJ1wiXG4gICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snYmlydGhkYXRlJ11cIlxuICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0ZlY2hhIGRlIG5hY2ltaWVudG8nXCJcbiAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2JpcnRoZGF0ZSddLmludmFsaWQgJiYgY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydiaXJ0aGRhdGUnXS50b3VjaGVkXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlBvciBmYXZvciBpbmdyZXNhIHVuYSBmZWNoYSBtYXlvciBkZSAzIGHDsW9zLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NvdW50cnknXS52YWx1ZVwiXG4gICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY291bnRyeSddXCJcbiAgICAgICAgW3NlbGVjdENvZGVdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjb3VudHJ5J10udmFsdWUgPT09IG51bGwgPyAnUGHDrXMgZGUgcmVzaWRlbmNpYScgOiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NvdW50cnknXS52YWx1ZVwiXG4gICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RDb3VudHJ5KCRldmVudClcIlxuICAgICAgICBbZGF0YV09XCJjb3VudHJpZXNcIlxuICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ1Bhw61zIGRlIHJlc2lkZW5jaWEnXCJcbiAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjb3VudHJ5J10uaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NvdW50cnknXS50b3VjaGVkXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlBvciBmYXZvciBpbmdyZXNhIHVuIHBhaXMgdsOhbGlkby48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgIFtpbml0aWFsVmFsdWVdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdGF0ZSddLnZhbHVlXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdGF0ZSddXCJcbiAgICAgICAgW3NlbGVjdENvZGVdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdGF0ZSddLnZhbHVlID09PSBudWxsID8gJ0RlcGFydGFtZW50byBvIGVzdGFkbycgOiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0YXRlJ10udmFsdWVcIlxuICAgICAgICBbaXNSZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdFN0YXRlKCRldmVudClcIlxuICAgICAgICBbZGF0YV09XCJzdGF0ZXNcIlxuICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ0RlcGFydGFtZW50byBvIGVzdGFkbydcIlxuICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0YXRlJ10uaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0YXRlJ10udG91Y2hlZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Qb3IgZmF2b3IgaW5ncmVzYSB1biBkZXBhcnRhbWVudG8gdsOhbGlkby48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgIFtpbml0aWFsVmFsdWVdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjaXR5J10udmFsdWVcIlxuICAgICAgICBbY29udHJvbF09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NpdHknXVwiXG4gICAgICAgIFtzZWxlY3RDb2RlXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY2l0eSddLnZhbHVlID09PSBudWxsID8gJ0NpdWRhZCBkZSByZXNpZGVuY2lhJyA6IGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY2l0eSddLnZhbHVlXCJcbiAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdENpdHkoJGV2ZW50KVwiXG4gICAgICAgIFtkYXRhXT1cImNpdGllc1wiXG4gICAgICAgIFtkZWZhdWx0VGV4dF09XCInQ2l1ZGFkIGRlIHJlc2lkZW5jaWEnXCJcbiAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjaXR5J10uaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NpdHknXS50b3VjaGVkXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlBvciBmYXZvciBpbmdyZXNhIHVuYSBjaXVkYWQgdsOhbGlkby48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgW2lucHV0VHlwZV09XCInZW1haWwnXCJcbiAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidDb3JyZW8gZWxlY3Ryw7NuaWNvJ1wiXG4gICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9lbWFpbCddXCJcbiAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfZW1haWwnXS5pbnZhbGlkICYmIGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9lbWFpbCddLnRvdWNoZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+UG9yIGZhdm9yIGluZ3Jlc2EgdW4gZW1haWwgdmFsaWRvLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfcGhvbmVfaW5kaWNhdGl2ZSddLnZhbHVlXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX2luZGljYXRpdmUnXVwiXG4gICAgICAgIFtkYXRhXT1cImluZGljYXRpdmVzXCJcbiAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdEluZGljYXRpdmVzKCRldmVudClcIlxuICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ0luZGljYXRpdm8nXCJcbiAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX2luZGljYXRpdmUnXS5pbnZhbGlkICYmIGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9waG9uZV9pbmRpY2F0aXZlJ10udG91Y2hlZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Qb3IgZmF2b3IgaW5ncmVzYSB1biBpbmRpY2F0aXZvIHZhbGlkby48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgW2lucHV0VHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgIFtwbGFjZUhvbGRlcl09XCInTsO6bWVybyBkZSB0ZWzDqWZvbm8nXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX251bWJlciddXCJcbiAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfcGhvbmVfbnVtYmVyJ10uaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfcGhvbmVfbnVtYmVyJ10udG91Y2hlZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Qb3IgZmF2b3IgaW5ncmVzYSB1biBudW1lcm8gZGUgdGVsZWZvbm8gdsOhbGlkby48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBtdC0zIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBwQnV0dG9uXG4gICAgICAgIGljb249XCJwaSBwaS1hcnJvdy1yaWdodFwiXG4gICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNvZFNlbGZGb3JtU3RlcE9uZS52YWxpZFwiXG4gICAgICAgIChjbGljayk9XCJzZW5kRm9ybSgpXCJcbiAgICAgID48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuXG48ZGl2PlxuICA8cHJlPnt7IGNvZFNlbGZGb3JtU3RlcE9uZS52YWx1ZSB8IGpzb24gfX08L3ByZT5cbiAgPGRpdj5cbiAgICA8cHJlPnt7IGNvZFNlbGZGb3JtU3RlcE9uZS52YWxpZCB8IGpzb24gfX08L3ByZT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -6343,18 +6343,26 @@ class CodSelfFormStepOneComponent extends CodSelfManagedSteps {
|
|
|
6343
6343
|
}
|
|
6344
6344
|
ngOnChanges(changes) {
|
|
6345
6345
|
this.startLocalStorageWork();
|
|
6346
|
-
this.setValuesByLocalStorage();
|
|
6347
6346
|
if (changes['user']) {
|
|
6348
|
-
|
|
6347
|
+
const currentUser = changes['user'].currentValue;
|
|
6348
|
+
const previousUser = changes['user'].previousValue;
|
|
6349
|
+
// Verifica si el objeto 'user' actual es diferente al anterior
|
|
6350
|
+
if (!this.areEqualUsers(currentUser, previousUser)) {
|
|
6349
6351
|
console.log('setDataUsers');
|
|
6350
6352
|
this.setDataUsers();
|
|
6351
6353
|
// this.cdRef.detectChanges();
|
|
6352
6354
|
}
|
|
6353
6355
|
else {
|
|
6354
|
-
console.log('
|
|
6356
|
+
console.log('No hay cambios en el usuario');
|
|
6355
6357
|
}
|
|
6356
6358
|
}
|
|
6357
6359
|
}
|
|
6360
|
+
areEqualUsers(user1, user2) {
|
|
6361
|
+
// Implementa la lógica para comparar los valores relevantes de los objetos 'user'
|
|
6362
|
+
// Aquí puedes comparar las propiedades relevantes para determinar si son iguales o no
|
|
6363
|
+
// Por ejemplo:
|
|
6364
|
+
return JSON.stringify(user1) === JSON.stringify(user2);
|
|
6365
|
+
}
|
|
6358
6366
|
initForm() {
|
|
6359
6367
|
this.codSelfFormStepOne = this.fb.group({
|
|
6360
6368
|
student_name: ['', [Validators.required]],
|
|
@@ -6532,26 +6540,12 @@ class CodSelfFormStepOneComponent extends CodSelfManagedSteps {
|
|
|
6532
6540
|
this.messageService.clear('confirm');
|
|
6533
6541
|
this.visible = false;
|
|
6534
6542
|
}
|
|
6535
|
-
setValuesByLocalStorage() {
|
|
6536
|
-
const country = this.codSelfFormStepOne.controls['country'].value || null;
|
|
6537
|
-
if (!country)
|
|
6538
|
-
return;
|
|
6539
|
-
this.selectCountry(country);
|
|
6540
|
-
const state = this.codSelfFormStepOne.controls['state'].value || null;
|
|
6541
|
-
if (!state)
|
|
6542
|
-
return;
|
|
6543
|
-
this.selectState(state);
|
|
6544
|
-
const city = this.codSelfFormStepOne.controls['city'].value || null;
|
|
6545
|
-
if (!city)
|
|
6546
|
-
return;
|
|
6547
|
-
this.selectCity(city);
|
|
6548
|
-
}
|
|
6549
6543
|
}
|
|
6550
6544
|
CodSelfFormStepOneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodSelfFormStepOneComponent, deps: [{ token: i1$1.FormBuilder }, { token: ParameterService }, { token: i0.ChangeDetectorRef }, { token: i3$1.MessageService }], target: i0.ɵɵFactoryTarget.Component });
|
|
6551
|
-
CodSelfFormStepOneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodSelfFormStepOneComponent, selector: "app-cod-self-form-step-one", inputs: { user: "user" }, outputs: { completed: "completed" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos Personales</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\n <i class=\"pi pi-exclamation-circle cursor-pointer\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepOne\">\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepOne.controls['student_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_name'].invalid && codSelfFormStepOne.controls['student_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un nombre v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codSelfFormStepOne.controls['student_last_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_last_name'].invalid && codSelfFormStepOne.controls['student_last_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un apellido v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_id_card_type'].value\"\n [control]=\"codSelfFormStepOne.controls['student_id_card_type']\"\n [selectCode]=\"codSelfFormStepOne.controls['student_id_card_type'].value === null ? 'Tipo de documento' : codSelfFormStepOne.controls['student_id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card_type'].invalid && codSelfFormStepOne.controls['student_id_card_type'].touched\">\n <span class=\"error-message\">Por favor ingresa un tipo de documento v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de documento'\"\n [control]=\"codSelfFormStepOne.controls['student_id_card']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card'].invalid && codSelfFormStepOne.controls['student_id_card'].touched\">\n <span class=\"error-message\">Por favor ingresa un documento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['gender'].value\"\n [control]=\"codSelfFormStepOne.controls['gender']\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'G\u00E9nero'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['gender'].invalid && codSelfFormStepOne.controls['gender'].touched\">\n <span class=\"error-message\">Por favor ingresa un genero v\u00E1lido.</span>\n </div>\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codSelfFormStepOne.controls['birthdate']\"\n [placeHolder]=\"'Fecha de nacimiento'\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['birthdate'].invalid && codSelfFormStepOne.controls['birthdate'].touched\">\n <span class=\"error-message\">Por favor ingresa una fecha mayor de 3 a\u00F1os.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['country'].value\"\n [control]=\"codSelfFormStepOne.controls['country']\"\n [selectCode]=\"codSelfFormStepOne.controls['country'].value === null ? 'Pa\u00EDs de residencia' : codSelfFormStepOne.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['country'].invalid && codSelfFormStepOne.controls['country'].touched\">\n <span class=\"error-message\">Por favor ingresa un pais v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['state'].value\"\n [control]=\"codSelfFormStepOne.controls['state']\"\n [selectCode]=\"codSelfFormStepOne.controls['state'].value === null ? 'Departamento o estado' : codSelfFormStepOne.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['state'].invalid && codSelfFormStepOne.controls['state'].touched\">\n <span class=\"error-message\">Por favor ingresa un departamento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['city'].value\"\n [control]=\"codSelfFormStepOne.controls['city']\"\n [selectCode]=\"codSelfFormStepOne.controls['city'].value === null ? 'Ciudad de residencia' : codSelfFormStepOne.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['city'].invalid && codSelfFormStepOne.controls['city'].touched\">\n <span class=\"error-message\">Por favor ingresa una ciudad v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Correo electr\u00F3nico'\"\n [control]=\"codSelfFormStepOne.controls['student_email']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_email'].invalid && codSelfFormStepOne.controls['student_email'].touched\">\n <span class=\"error-message\">Por favor ingresa un email valido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_phone_indicative'].value\"\n [control]=\"codSelfFormStepOne.controls['student_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicatives($event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_indicative'].invalid && codSelfFormStepOne.controls['student_phone_indicative'].touched\">\n <span class=\"error-message\">Por favor ingresa un indicativo valido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de tel\u00E9fono'\"\n [control]=\"codSelfFormStepOne.controls['student_phone_number']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_number'].invalid && codSelfFormStepOne.controls['student_phone_number'].touched\">\n <span class=\"error-message\">Por favor ingresa un numero de telefono v\u00E1lido.</span>\n </div>\n </form>\n\n <div class=\"flex mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n type=\"submit\"\n [disabled]=\"!codSelfFormStepOne.valid\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n\n</div>\n\n<div>\n <pre>{{ codSelfFormStepOne.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepOne.valid | json }}</pre>\n </div>\n</div>\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}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InputComponent, selector: "ipt-input", inputs: ["inputType", "placeHolder", "validateText", "withPipe", "list", "iconUrl", "control", "prefix", "thousands", "decimal", "disabledSel"], outputs: ["dateSelected"] }, { kind: "component", type: SelectComponent, selector: "ipt-select", inputs: ["isRequired", "data", "defaultText", "selectCode", "disabledSel", "initialValue", "control"], outputs: ["eventSelect"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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: 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: "pipe", type: i1.JsonPipe, name: "json" }] });
|
|
6545
|
+
CodSelfFormStepOneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodSelfFormStepOneComponent, selector: "app-cod-self-form-step-one", inputs: { user: "user" }, outputs: { completed: "completed" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos Personales</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\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepOne\">\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepOne.controls['student_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_name'].invalid && codSelfFormStepOne.controls['student_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un nombre v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codSelfFormStepOne.controls['student_last_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_last_name'].invalid && codSelfFormStepOne.controls['student_last_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un apellido v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_id_card_type'].value\"\n [control]=\"codSelfFormStepOne.controls['student_id_card_type']\"\n [selectCode]=\"codSelfFormStepOne.controls['student_id_card_type'].value === null ? 'Tipo de documento' : codSelfFormStepOne.controls['student_id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card_type'].invalid && codSelfFormStepOne.controls['student_id_card_type'].touched\">\n <span class=\"error-message\">Por favor ingresa un tipo de documento v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de documento'\"\n [control]=\"codSelfFormStepOne.controls['student_id_card']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card'].invalid && codSelfFormStepOne.controls['student_id_card'].touched\">\n <span class=\"error-message\">Por favor ingresa un documento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['gender'].value\"\n [control]=\"codSelfFormStepOne.controls['gender']\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'G\u00E9nero'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['gender'].invalid && codSelfFormStepOne.controls['gender'].touched\">\n <span class=\"error-message\">Por favor ingresa un genero v\u00E1lido.</span>\n </div>\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codSelfFormStepOne.controls['birthdate']\"\n [placeHolder]=\"'Fecha de nacimiento'\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['birthdate'].invalid && codSelfFormStepOne.controls['birthdate'].touched\">\n <span class=\"error-message\">Por favor ingresa una fecha mayor de 3 a\u00F1os.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['country'].value\"\n [control]=\"codSelfFormStepOne.controls['country']\"\n [selectCode]=\"codSelfFormStepOne.controls['country'].value === null ? 'Pa\u00EDs de residencia' : codSelfFormStepOne.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['country'].invalid && codSelfFormStepOne.controls['country'].touched\">\n <span class=\"error-message\">Por favor ingresa un pais v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['state'].value\"\n [control]=\"codSelfFormStepOne.controls['state']\"\n [selectCode]=\"codSelfFormStepOne.controls['state'].value === null ? 'Departamento o estado' : codSelfFormStepOne.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['state'].invalid && codSelfFormStepOne.controls['state'].touched\">\n <span class=\"error-message\">Por favor ingresa un departamento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['city'].value\"\n [control]=\"codSelfFormStepOne.controls['city']\"\n [selectCode]=\"codSelfFormStepOne.controls['city'].value === null ? 'Ciudad de residencia' : codSelfFormStepOne.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['city'].invalid && codSelfFormStepOne.controls['city'].touched\">\n <span class=\"error-message\">Por favor ingresa una ciudad v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Correo electr\u00F3nico'\"\n [control]=\"codSelfFormStepOne.controls['student_email']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_email'].invalid && codSelfFormStepOne.controls['student_email'].touched\">\n <span class=\"error-message\">Por favor ingresa un email valido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_phone_indicative'].value\"\n [control]=\"codSelfFormStepOne.controls['student_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicatives($event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_indicative'].invalid && codSelfFormStepOne.controls['student_phone_indicative'].touched\">\n <span class=\"error-message\">Por favor ingresa un indicativo valido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de tel\u00E9fono'\"\n [control]=\"codSelfFormStepOne.controls['student_phone_number']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_number'].invalid && codSelfFormStepOne.controls['student_phone_number'].touched\">\n <span class=\"error-message\">Por favor ingresa un numero de telefono v\u00E1lido.</span>\n </div>\n </form>\n\n <div class=\"flex mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n type=\"submit\"\n [disabled]=\"!codSelfFormStepOne.valid\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n\n</div>\n\n<div>\n <pre>{{ codSelfFormStepOne.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepOne.valid | json }}</pre>\n </div>\n</div>\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}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InputComponent, selector: "ipt-input", inputs: ["inputType", "placeHolder", "validateText", "withPipe", "list", "iconUrl", "control", "prefix", "thousands", "decimal", "disabledSel"], outputs: ["dateSelected"] }, { kind: "component", type: SelectComponent, selector: "ipt-select", inputs: ["isRequired", "data", "defaultText", "selectCode", "disabledSel", "initialValue", "control"], outputs: ["eventSelect"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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: 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: "pipe", type: i1.JsonPipe, name: "json" }] });
|
|
6552
6546
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodSelfFormStepOneComponent, decorators: [{
|
|
6553
6547
|
type: Component,
|
|
6554
|
-
args: [{ selector: 'app-cod-self-form-step-one', template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos Personales</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\n <i class=\"pi pi-exclamation-circle cursor-pointer\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepOne\">\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepOne.controls['student_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_name'].invalid && codSelfFormStepOne.controls['student_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un nombre v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codSelfFormStepOne.controls['student_last_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_last_name'].invalid && codSelfFormStepOne.controls['student_last_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un apellido v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_id_card_type'].value\"\n [control]=\"codSelfFormStepOne.controls['student_id_card_type']\"\n [selectCode]=\"codSelfFormStepOne.controls['student_id_card_type'].value === null ? 'Tipo de documento' : codSelfFormStepOne.controls['student_id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card_type'].invalid && codSelfFormStepOne.controls['student_id_card_type'].touched\">\n <span class=\"error-message\">Por favor ingresa un tipo de documento v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de documento'\"\n [control]=\"codSelfFormStepOne.controls['student_id_card']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card'].invalid && codSelfFormStepOne.controls['student_id_card'].touched\">\n <span class=\"error-message\">Por favor ingresa un documento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['gender'].value\"\n [control]=\"codSelfFormStepOne.controls['gender']\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'G\u00E9nero'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['gender'].invalid && codSelfFormStepOne.controls['gender'].touched\">\n <span class=\"error-message\">Por favor ingresa un genero v\u00E1lido.</span>\n </div>\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codSelfFormStepOne.controls['birthdate']\"\n [placeHolder]=\"'Fecha de nacimiento'\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['birthdate'].invalid && codSelfFormStepOne.controls['birthdate'].touched\">\n <span class=\"error-message\">Por favor ingresa una fecha mayor de 3 a\u00F1os.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['country'].value\"\n [control]=\"codSelfFormStepOne.controls['country']\"\n [selectCode]=\"codSelfFormStepOne.controls['country'].value === null ? 'Pa\u00EDs de residencia' : codSelfFormStepOne.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['country'].invalid && codSelfFormStepOne.controls['country'].touched\">\n <span class=\"error-message\">Por favor ingresa un pais v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['state'].value\"\n [control]=\"codSelfFormStepOne.controls['state']\"\n [selectCode]=\"codSelfFormStepOne.controls['state'].value === null ? 'Departamento o estado' : codSelfFormStepOne.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['state'].invalid && codSelfFormStepOne.controls['state'].touched\">\n <span class=\"error-message\">Por favor ingresa un departamento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['city'].value\"\n [control]=\"codSelfFormStepOne.controls['city']\"\n [selectCode]=\"codSelfFormStepOne.controls['city'].value === null ? 'Ciudad de residencia' : codSelfFormStepOne.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['city'].invalid && codSelfFormStepOne.controls['city'].touched\">\n <span class=\"error-message\">Por favor ingresa una ciudad v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Correo electr\u00F3nico'\"\n [control]=\"codSelfFormStepOne.controls['student_email']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_email'].invalid && codSelfFormStepOne.controls['student_email'].touched\">\n <span class=\"error-message\">Por favor ingresa un email valido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_phone_indicative'].value\"\n [control]=\"codSelfFormStepOne.controls['student_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicatives($event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_indicative'].invalid && codSelfFormStepOne.controls['student_phone_indicative'].touched\">\n <span class=\"error-message\">Por favor ingresa un indicativo valido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de tel\u00E9fono'\"\n [control]=\"codSelfFormStepOne.controls['student_phone_number']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_number'].invalid && codSelfFormStepOne.controls['student_phone_number'].touched\">\n <span class=\"error-message\">Por favor ingresa un numero de telefono v\u00E1lido.</span>\n </div>\n </form>\n\n <div class=\"flex mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n type=\"submit\"\n [disabled]=\"!codSelfFormStepOne.valid\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n\n</div>\n\n<div>\n <pre>{{ codSelfFormStepOne.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepOne.valid | json }}</pre>\n </div>\n</div>\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}\n"] }]
|
|
6548
|
+
args: [{ selector: 'app-cod-self-form-step-one', template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos Personales</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\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepOne\">\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepOne.controls['student_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_name'].invalid && codSelfFormStepOne.controls['student_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un nombre v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codSelfFormStepOne.controls['student_last_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_last_name'].invalid && codSelfFormStepOne.controls['student_last_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un apellido v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_id_card_type'].value\"\n [control]=\"codSelfFormStepOne.controls['student_id_card_type']\"\n [selectCode]=\"codSelfFormStepOne.controls['student_id_card_type'].value === null ? 'Tipo de documento' : codSelfFormStepOne.controls['student_id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card_type'].invalid && codSelfFormStepOne.controls['student_id_card_type'].touched\">\n <span class=\"error-message\">Por favor ingresa un tipo de documento v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de documento'\"\n [control]=\"codSelfFormStepOne.controls['student_id_card']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card'].invalid && codSelfFormStepOne.controls['student_id_card'].touched\">\n <span class=\"error-message\">Por favor ingresa un documento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['gender'].value\"\n [control]=\"codSelfFormStepOne.controls['gender']\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'G\u00E9nero'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['gender'].invalid && codSelfFormStepOne.controls['gender'].touched\">\n <span class=\"error-message\">Por favor ingresa un genero v\u00E1lido.</span>\n </div>\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codSelfFormStepOne.controls['birthdate']\"\n [placeHolder]=\"'Fecha de nacimiento'\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['birthdate'].invalid && codSelfFormStepOne.controls['birthdate'].touched\">\n <span class=\"error-message\">Por favor ingresa una fecha mayor de 3 a\u00F1os.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['country'].value\"\n [control]=\"codSelfFormStepOne.controls['country']\"\n [selectCode]=\"codSelfFormStepOne.controls['country'].value === null ? 'Pa\u00EDs de residencia' : codSelfFormStepOne.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['country'].invalid && codSelfFormStepOne.controls['country'].touched\">\n <span class=\"error-message\">Por favor ingresa un pais v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['state'].value\"\n [control]=\"codSelfFormStepOne.controls['state']\"\n [selectCode]=\"codSelfFormStepOne.controls['state'].value === null ? 'Departamento o estado' : codSelfFormStepOne.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['state'].invalid && codSelfFormStepOne.controls['state'].touched\">\n <span class=\"error-message\">Por favor ingresa un departamento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['city'].value\"\n [control]=\"codSelfFormStepOne.controls['city']\"\n [selectCode]=\"codSelfFormStepOne.controls['city'].value === null ? 'Ciudad de residencia' : codSelfFormStepOne.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['city'].invalid && codSelfFormStepOne.controls['city'].touched\">\n <span class=\"error-message\">Por favor ingresa una ciudad v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Correo electr\u00F3nico'\"\n [control]=\"codSelfFormStepOne.controls['student_email']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_email'].invalid && codSelfFormStepOne.controls['student_email'].touched\">\n <span class=\"error-message\">Por favor ingresa un email valido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_phone_indicative'].value\"\n [control]=\"codSelfFormStepOne.controls['student_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicatives($event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_indicative'].invalid && codSelfFormStepOne.controls['student_phone_indicative'].touched\">\n <span class=\"error-message\">Por favor ingresa un indicativo valido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de tel\u00E9fono'\"\n [control]=\"codSelfFormStepOne.controls['student_phone_number']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_number'].invalid && codSelfFormStepOne.controls['student_phone_number'].touched\">\n <span class=\"error-message\">Por favor ingresa un numero de telefono v\u00E1lido.</span>\n </div>\n </form>\n\n <div class=\"flex mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n type=\"submit\"\n [disabled]=\"!codSelfFormStepOne.valid\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n\n</div>\n\n<div>\n <pre>{{ codSelfFormStepOne.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepOne.valid | json }}</pre>\n </div>\n</div>\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}\n"] }]
|
|
6555
6549
|
}], ctorParameters: function () { return [{ type: i1$1.FormBuilder }, { type: ParameterService }, { type: i0.ChangeDetectorRef }, { type: i3$1.MessageService }]; }, propDecorators: { user: [{
|
|
6556
6550
|
type: Input
|
|
6557
6551
|
}], completed: [{
|