@infordata-web/portal-common-component-lib
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.0.14.
141 lines • 24.4 kB
JavaScript
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { FormGroup } from '@angular/forms';
import { Subject } from 'rxjs';
import { map, pluck } from 'rxjs/operators';
import { ComponentOutputStatus } from '../../normalizzazione/component-output-status';
import { ContattoDTO } from '../../models/contatto-dto';
import { DomicilioDTO } from '../../models/domicilio-dto';
import { ComponentReducer } from '../../utils/component-reducer';
import { DatiRichiedenteDTO } from '../../models/dati-richiedente-dto';
export class RichiedenteComponent {
constructor() {
this.nextStep = new EventEmitter();
this.salvaBozza = new EventEmitter();
this.changesPersonaFisica$ = new Subject();
this.changesResidenza$ = new Subject();
this.changesRecapito$ = new Subject();
this.changesDomicilio$ = new Subject();
//isFormValid: boolean;
this.direction = "only-forward";
this.isFinal = false;
this.isDomicilioElettoValid = false;
}
ngOnInit() {
//console.log('[DatiRichiedenteDTO]', this.datiRichiedente);
this.form = new FormGroup({});
let valid = true;
if (!this.datiRichiedente) {
this.initRichiedente();
valid = false;
}
const dichiarante$ = ComponentReducer.reducer4(this.changesPersonaFisica$, this.changesResidenza$, this.changesRecapito$, this.changesDomicilio$, (dich) => {
// console.log("[dich]", dich);
// console.log("[hasSelezionatoDomicilio]", dich.domicilio.hasSelezionatoDomicilio);
let isValid;
if (!dich.domicilio.hasSelezionatoDomicilio && dich.domicilio.hasSelezionatoDomicilio != undefined) {
isValid = dich.contatto != null;
}
else {
isValid = dich.domicilio != null;
}
//TODO
// this.isDomicilioElettoValid
// ? dich.domicilio != null // se il domicilio non è validato controlla se diverso da null se lo è torna false altrimenti true.
// : true // se già è validato torna true.
// return (
// dich.contatto != null || // basterebbe uno dei due diverso da null per tronare false
// this.isDomicilioElettoValid
// );
valid = isValid;
return isValid;
}, ComponentOutputStatus.of(valid, this.datiRichiedente) // normalizzazione componente dichiarante
);
dichiarante$.subscribe((dichiarante) => {
console.log("[RichiedenteComponent] datiRichiedente", dichiarante);
//TODO
//this.isFormValid = dichiarante.status;
if (dichiarante.output.domicilio.hasSelezionatoDomicilio == false) {
//TODO
// this.isDichiaranteValid = dichiarante.output.infoContatto.email != null || dichiarante.output.infoContatto.pec != null;
this.isDichiaranteValid = this.hasSelecteDichiarante(dichiarante);
}
else {
//TODO
// this.isDichiaranteValid = (dichiarante.output.infoContatto.email != null || dichiarante.output.infoContatto.pec != null) &&
// (dichiarante.output.domicilio.idDomicilioSelezionato != null) &&
// (dichiarante.output.domicilio.contatto.email != null || dichiarante.output.domicilio.contatto.pec != null);
this.isDichiaranteValid = this.hasSelecteDichiaranteAnd(dichiarante);
}
});
//TODO
//--------viene passato dall'input--------//
// this.personaFisica$ = this.personaFisicaService.getPersonaFisicaUtente$()
// .pipe(shareReplay());
this.datiPersonaFisica$ = this.personaFisica$
.pipe(pluck("datiPersonaFisica"));
this.residenza$ = this.personaFisica$
.pipe(pluck("residenza"));
this.recapiti$ = this.personaFisica$
.pipe(pluck("recapiti"), map(recapiti => recapiti || []));
this.domicili$ = this.personaFisica$
.pipe(pluck("domicili"));
}
recapitiReady(recapitiStatus) {
// console.log('[racapitiStatus]', recapitiStatus);
this.changesRecapito$.next(recapitiStatus.mapValue((contatto) => (dich) => {
return dich.contatto = contatto;
}));
}
domiciliReady(domiciliStatus) {
// console.log('[domiciliStatus]', domiciliStatus);
this.changesDomicilio$.next(domiciliStatus.mapValue((domicilio) => (dich) => {
dich.domicilio = domicilio;
//TODO: fix
// (this.isDomicilioElettoValid = domicilio.idDomicilioSelezionato != null);
}));
}
initRichiedente() {
this.datiRichiedente = new DatiRichiedenteDTO();
this.datiRichiedente.contatto = new ContattoDTO();
//TODO
this.datiRichiedente.domicilio = new DomicilioDTO();
this.datiRichiedente.domicilio.contatto = new ContattoDTO();
this.datiRichiedente.domicilio.idDomicilioSelezionato = null;
}
forward(_) {
this.nextStep.emit(this.datiRichiedente);
}
complete(_) { }
onSalvaBozza(_) {
this.salvaBozza.emit(this.datiRichiedente);
}
ngOnDestroy() {
if (this.domicilioElettoSub) {
this.domicilioElettoSub.unsubscribe();
}
}
hasSelecteDichiarante(dichiarante) {
return dichiarante.output.contatto.email != null || dichiarante.output.contatto.pec != null;
;
}
hasSelecteDichiaranteAnd(dichiarante) {
return this.hasSelecteDichiarante(dichiarante) &&
(dichiarante.output.domicilio.idDomicilioSelezionato != null) &&
(dichiarante.output.domicilio.contatto.email != null || dichiarante.output.domicilio.contatto.pec != null);
}
}
RichiedenteComponent.decorators = [
{ type: Component, args: [{
selector: 'lib-richiedente',
template: "<div class=\"mt-3 mb-5\" [formGroup]=\"form\">\r\n\t\t<lib-dati-anagrafici\r\n\t\t\t[datiPersonaFisica$]=\"datiPersonaFisica$\"\r\n\t\t>\r\n\t\t</lib-dati-anagrafici>\r\n\t<div class=\"mt-4\"></div>\r\n\t<lib-dati-residenza\r\n\t\t[residenza$]=\"residenza$\"\r\n\t>\r\n\t</lib-dati-residenza>\r\n\r\n\t<mat-expansion-panel class=\"panel mt-4\" [expanded]=\"true\">\r\n\t\t<mat-expansion-panel-header [collapsedHeight]=\"'48px'\" [expandedHeight]=\"'48px'\" class=\"custom-header\">\r\n\t\t\t<mat-panel-title>\r\n\t\t\t\t<!-- <h3>{{'recapiti' | traduzione}}</h3> -->\r\n\t\t\t\t<h3 class=\"mb-0 h5\"><info-tip-label label=\"recapiti\"></info-tip-label></h3>\r\n\t\t\t</mat-panel-title>\r\n\t\t</mat-expansion-panel-header>\r\n\t\t<lib-contatti\r\n\t\t\t[contatti]=\"datiRichiedente.contatto\"\r\n\t\t\t[recapiti$]=\"recapiti$\"\r\n\t\t\t(done)=\"recapitiReady($event)\"\r\n\t\t>\r\n\t\t</lib-contatti>\r\n\t</mat-expansion-panel>\r\n\t<div class=\"mt-4\"></div>\r\n\t<div *ngIf=\"(personaFisica$ | async)\">\r\n\t\t<lib-dati-domicilio\r\n\t\t\t[domicilio]=\"datiRichiedente.domicilio\"\r\n\t\t\t[domicili]=\"domicili$ | async\"\r\n\t\t\t[recapiti$]=\"recapiti$\"\r\n\t\t\t(done)=\"domiciliReady($event)\"\r\n\t\t>\r\n\t\t</lib-dati-domicilio>\r\n\t</div>\r\n\t<lib-stepper-navigator\r\n\t\t[form]=\"form\"\r\n\t\t[direction]=\"direction\"\r\n\t\t[isFinal]=\"isFinal\"\r\n\t\t[isContainerValid]=\"isDichiaranteValid\"\r\n\t\t(goForward)=\"forward($event)\"\r\n\t\t(salvaBozza)=\"onSalvaBozza($event)\"\r\n\t\t(complete)=\"complete($event)\"\r\n\t>\r\n\t</lib-stepper-navigator>\r\n</div>\r\n",
styles: [".mat-card{border-radius:0!important;border-top:5px solid #0a2644}.divider{background-color:#737373;height:1px;width:100%}.mat-form-field-appearance-fill .mat-form-field-flex{background-color:#fff!important}.mat-select-value{max-width:100%;width:100%!important}"]
},] }
];
RichiedenteComponent.ctorParameters = () => [];
RichiedenteComponent.propDecorators = {
datiRichiedente: [{ type: Input }],
personaFisica$: [{ type: Input }],
nextStep: [{ type: Output }],
salvaBozza: [{ type: Output }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaGllZGVudGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2dldHRpL0RBRy9zb3JnZW50aS9naXRsYWItc29mdHdhcmVmYWN0b3J5L2NvbW1vbi1jb21wb25lbnQtbGliL3Byb2plY3RzL3BvcnRhbC1jb21tb24tY29tcG9uZW50LWxpYi9zcmMvIiwic291cmNlcyI6WyJsaWIvZGVwb3NpdGkvY29tcG9uZW50cy9yaWNoaWVkZW50ZS9yaWNoaWVkZW50ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDdEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQVl2RSxNQUFNLE9BQU8sb0JBQW9CO0lBaURoQztRQXRDQSxhQUFRLEdBQXFDLElBQUksWUFBWSxFQUFzQixDQUFDO1FBR3BGLGVBQVUsR0FBcUMsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFPdEYsMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBRWhDLENBQUM7UUFFSixzQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFFNUIsQ0FBQztRQUVKLHFCQUFnQixHQUFH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QyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDO0lBRWYsWUFBWSxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELFdBQVc7UUFDVixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUM1QixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdEM7SUFDRixDQUFDO0lBRU0scUJBQXFCLENBQUMsV0FBVztRQUN2QyxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQztRQUFBLENBQUM7SUFDOUYsQ0FBQztJQUVNLHdCQUF3QixDQUFDLFdBQVc7UUFDMUMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDO1lBQzdDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsc0JBQXNCLElBQUksSUFBSSxDQUFDO1lBQzdELENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUM3RyxDQUFDOzs7WUE1TEQsU0FBUyxTQUFDO2dCQUNWLFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLGlrREFBMkM7O2FBRTNDOzs7OzhCQUtDLEtBQUs7NkJBR0wsS0FBSzt1QkFHTCxNQUFNO3lCQUdOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBwbHVjayB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50T3V0cHV0U3RhdHVzIH0gZnJvbSAnLi4vLi4vbm9ybWFsaXp6YXppb25lL2NvbXBvbmVudC1vdXRwdXQtc3RhdHVzJztcclxuaW1wb3J0IHsgQ29udGF0dG9EVE8gfSBmcm9tICcuLi8uLi9tb2RlbHMvY29udGF0dG8tZHRvJztcclxuaW1wb3J0IHsgRG9taWNpbGlvRFRPIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RvbWljaWxpby1kdG8nO1xyXG5pbXBvcnQgeyBDb21wb25lbnRSZWR1Y2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29tcG9uZW50LXJlZHVjZXInO1xyXG5pbXBvcnQgeyBEYXRpUmljaGllZGVudGVEVE8gfSBmcm9tICcuLi8uLi9tb2RlbHMvZGF0aS1yaWNoaWVkZW50ZS1kdG8nO1xyXG5pbXBvcnQgeyBQZXJzb25hRmlzaWNhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BvcnRhbGUvcGVyc29uYS1maXNpY2EtbW9kZWwnO1xyXG5pbXBvcnQgeyBEYXRpUGVyc29uYUZpc2ljYSB9IGZyb20gJy4uLy4uL21vZGVscy9wb3J0YWxlL2RhdGktcGVyc29uYS1maXNpY2EnO1xyXG5pbXBvcnQgeyBJbmRpcml6em8gfSBmcm9tICcuLi8uLi9tb2RlbHMvcG9ydGFsZS9pbmRpcml6em8nO1xyXG5pbXBvcnQgeyBSZWNhcGl0byB9IGZyb20gJy4uLy4uL21vZGVscy9wb3J0YWxlL3JlY2FwaXRvJztcclxuaW1wb3J0IHsgRG9taWNpbGlvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BvcnRhbGUvZG9taWNpbGlvJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnbGliLXJpY2hpZWRlbnRlJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vcmljaGllZGVudGUuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL3JpY2hpZWRlbnRlLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmljaGllZGVudGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuXHRmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0ZGF0aVJpY2hpZWRlbnRlOiBEYXRpUmljaGllZGVudGVEVE87XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0cGVyc29uYUZpc2ljYSQ6IE9ic2VydmFibGU8UGVyc29uYUZpc2ljYT47XHJcblxyXG5cdEBPdXRwdXQoKVxyXG5cdG5leHRTdGVwOiBFdmVudEVtaXR0ZXI8RGF0aVJpY2hpZWRlbnRlRFRPPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0aVJpY2hpZWRlbnRlRFRPPigpO1xyXG5cclxuXHRAT3V0cHV0KClcclxuXHRzYWx2YUJvenphOiBFdmVudEVtaXR0ZXI8RGF0aVJpY2hpZWRlbnRlRFRPPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0aVJpY2hpZWRlbnRlRFRPPigpO1xyXG5cclxuXHRkYXRpUGVyc29uYUZpc2ljYSQ6IE9ic2VydmFibGU8RGF0aVBlcnNvbmFGaXNpY2E+O1xyXG5cdHJlc2lkZW56YSQ6IE9ic2VydmFibGU8SW5kaXJpenpvPjtcclxuXHRyZWNhcGl0aSQ6IE9ic2VydmFibGU8QXJyYXk8UmVjYXBpdG8+PjtcclxuXHRkb21pY2lsaSQ6IE9ic2VydmFibGU8QXJyYXk8RG9taWNpbGlvPj47XHJcblxyXG5cdGNoYW5nZXNQZXJzb25hRmlzaWNhJCA9IG5ldyBTdWJqZWN0PFxyXG5cdFx0Q29tcG9uZW50T3V0cHV0U3RhdHVzPCh2YWx1ZTogRGF0aVJpY2hpZWRlbnRlRFRPKSA9PiB2b2lkPlxyXG5cdD4oKTtcclxuXHJcblx0Y2hhbmdlc1Jlc2lkZW56YSQgPSBuZXcgU3ViamVjdDxcclxuXHRcdENvbXBvbmVudE91dHB1dFN0YXR1czwodmFsdWU6IERhdGlSaWNoaWVkZW50ZURUTykgPT4gdm9pZD5cclxuXHQ+KCk7XHJcblxyXG5cdGNoYW5nZXNSZWNhcGl0byQgPSBuZXcgU3ViamVjdDxcclxuXHRcdENvbXBvbmVudE91dHB1dFN0YXR1czwodmFsdWU6IERhdGlSaWNoaWVkZW50ZURUTykgPT4gdm9pZD5cclxuXHQ+KCk7XHJcblxyXG5cdGNoYW5nZXNEb21pY2lsaW8kID0gbmV3IFN1YmplY3Q8XHJcblx0XHRDb21wb25lbnRPdXRwdXRTdGF0dXM8KHZhbHVlOiBEYXRpUmljaGllZGVudGVEVE8pID0+IHZvaWQ+XHJcblx0PigpO1xyXG5cclxuXHQvL2lzRm9ybVZhbGlkOiBib29sZWFuO1xyXG5cclxuXHRkaXJlY3Rpb246IHN0cmluZyA9IFwib25seS1mb3J3YXJkXCI7XHJcblxyXG5cdGlzRmluYWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0aXNEb21pY2lsaW9FbGV0dG9WYWxpZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHRkb21pY2lsaW9FbGV0dG9TdWI6IFN1YnNjcmlwdGlvbjtcclxuXHJcblx0aXNEaWNoaWFyYW50ZVZhbGlkOiBib29sZWFuO1xyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcblx0XHQvL2NvbnNvbGUubG9nKCdbRGF0aVJpY2hpZWRlbnRlRFRPXScsIHRoaXMuZGF0aVJpY2hpZWRlbnRlKTtcclxuXHJcblx0XHR0aGlzLmZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuXHRcdGxldCB2YWxpZCA9IHRydWU7XHJcblxyXG5cdFx0aWYgKCF0aGlzLmRhdGlSaWNoaWVkZW50ZSkge1xyXG5cdFx0XHR0aGlzLmluaXRSaWNoaWVkZW50ZSgpO1xyXG5cdFx0XHR2YWxpZCA9IGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IGRpY2hpYXJhbnRlJCA9IENvbXBvbmVudFJlZHVjZXIucmVkdWNlcjQoXHJcblx0XHRcdHRoaXMuY2hhbmdlc1BlcnNvbmFGaXNpY2EkLFxyXG5cdFx0XHR0aGlzLmNoYW5nZXNSZXNpZGVuemEkLFxyXG5cdFx0XHR0aGlzLmNoYW5nZXNSZWNhcGl0byQsXHJcblx0XHRcdHRoaXMuY2hhbmdlc0RvbWljaWxpbyQsXHJcblx0XHRcdChkaWNoKSA9PiB7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJbZGljaF1cIiwgZGljaCk7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJbaGFzU2VsZXppb25hdG9Eb21pY2lsaW9dXCIsIGRpY2guZG9taWNpbGlvLmhhc1NlbGV6aW9uYXRvRG9taWNpbGlvKTtcclxuXHRcdFx0XHRsZXQgaXNWYWxpZDogYm9vbGVhbjtcclxuXHRcdFx0XHRpZiAoIWRpY2guZG9taWNpbGlvLmhhc1NlbGV6aW9uYXRvRG9taWNpbGlvICYmIGRpY2guZG9taWNpbGlvLmhhc1NlbGV6aW9uYXRvRG9taWNpbGlvICE9IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRcdFx0aXNWYWxpZCA9IGRpY2guY29udGF0dG8gIT0gbnVsbDtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0aXNWYWxpZCA9IGRpY2guZG9taWNpbGlvICE9IG51bGw7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdC8vVE9ET1xyXG5cdFx0XHRcdC8vIHRoaXMuaXNEb21pY2lsaW9FbGV0dG9WYWxpZFxyXG5cdFx0XHRcdC8vIFx0PyBkaWNoLmRvbWljaWxpbyAhPSBudWxsIC8vIHNlIGlsIGRvbWljaWxpbyBub24gw6ggdmFsaWRhdG8gY29udHJvbGxhIHNlIGRpdmVyc28gZGEgbnVsbCBzZSBsbyDDqCB0b3JuYSBmYWxzZSBhbHRyaW1lbnRpIHRydWUuXHJcblx0XHRcdFx0Ly8gXHQ6IHRydWUgLy8gc2UgZ2nDoCDDqCB2YWxpZGF0byB0b3JuYSB0cnVlLlxyXG5cdFx0XHRcdC8vIHJldHVybiAoXHJcblx0XHRcdFx0Ly8gXHRkaWNoLmNvbnRhdHRvICE9IG51bGwgfHwgIC8vIGJhc3RlcmViYmUgdW5vIGRlaSBkdWUgZGl2ZXJzbyBkYSBudWxsIHBlciB0cm9uYXJlIGZhbHNlXHJcblx0XHRcdFx0Ly8gXHR0aGlzLmlzRG9taWNpbGlvRWxldHRvVmFsaWRcclxuXHRcdFx0XHQvLyApO1xyXG5cdFx0XHRcdHZhbGlkID0gaXNWYWxpZFxyXG5cdFx0XHRcdHJldHVybiBpc1ZhbGlkO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRDb21wb25lbnRPdXRwdXRTdGF0dXMub2YodmFsaWQsIHRoaXMuZGF0aVJpY2hpZWRlbnRlKSAvLyBub3JtYWxpenphemlvbmUgY29tcG9uZW50ZSBkaWNoaWFyYW50ZVxyXG5cdFx0KTtcclxuXHJcblx0XHRkaWNoaWFyYW50ZSQuc3Vic2NyaWJlKChkaWNoaWFyYW50ZSkgPT4ge1xyXG5cdFx0XHRjb25zb2xlLmxvZyhcIltSaWNoaWVkZW50ZUNvbXBvbmVudF0gZGF0aVJpY2hpZWRlbnRlXCIsIGRpY2hpYXJhbnRlKTtcclxuXHRcdFx0Ly9UT0RPXHJcblx0XHRcdC8vdGhpcy5pc0Zvcm1WYWxpZCA9IGRpY2hpYXJhbnRlLnN0YXR1cztcclxuXHRcdFx0aWYgKGRpY2hpYXJhbnRlLm91dHB1dC5kb21pY2lsaW8uaGFzU2VsZXppb25hdG9Eb21pY2lsaW8gPT0gZmFsc2UpIHtcclxuXHRcdFx0XHQvL1RPRE9cclxuXHRcdFx0XHQvLyB0aGlzLmlzRGljaGlhcmFudGVWYWxpZCA9IGRpY2hpYXJhbnRlLm91dHB1dC5pbmZvQ29udGF0dG8uZW1haWwgIT0gbnVsbCB8fCBkaWNoaWFyYW50ZS5vdXRwdXQuaW5mb0NvbnRhdHRvLnBlYyAhPSBudWxsO1xyXG5cdFx0XHRcdHRoaXMuaXNEaWNoaWFyYW50ZVZhbGlkID0gdGhpcy5oYXNTZWxlY3RlRGljaGlhcmFudGUoZGljaGlhcmFudGUpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdC8vVE9ET1xyXG5cdFx0XHRcdC8vIHRoaXMuaXNEaWNoaWFyYW50ZVZhbGlkID0gKGRpY2hpYXJhbnRlLm91dHB1dC5pbmZvQ29udGF0dG8uZW1haWwgIT0gbnVsbCB8fCBkaWNoaWFyYW50ZS5vdXRwdXQuaW5mb0NvbnRhdHRvLnBlYyAhPSBudWxsKSAmJlxyXG5cdFx0XHRcdC8vIFx0KGRpY2hpYXJhbnRlLm91dHB1dC5kb21pY2lsaW8uaWREb21pY2lsaW9TZWxlemlvbmF0byAhPSBudWxsKSAmJlxyXG5cdFx0XHRcdC8vIFx0KGRpY2hpYXJhbnRlLm91dHB1dC5kb21pY2lsaW8uY29udGF0dG8uZW1haWwgIT0gbnVsbCB8fCBkaWNoaWFyYW50ZS5vdXRwdXQuZG9taWNpbGlvLmNvbnRhdHRvLnBlYyAhPSBudWxsKTtcclxuXHRcdFx0XHR0aGlzLmlzRGljaGlhcmFudGVWYWxpZCA9IHRoaXMuaGFzU2VsZWN0ZURpY2hpYXJhbnRlQW5kKGRpY2hpYXJhbnRlKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0Ly9UT0RPXHJcblx0XHQvLy0tLS0tLS0tdmllbmUgcGFzc2F0byBkYWxsJ2lucHV0LS0tLS0tLS0vL1xyXG5cdFx0Ly8gdGhpcy5wZXJzb25hRmlzaWNhJCA9IHRoaXMucGVyc29uYUZpc2ljYVNlcnZpY2UuZ2V0UGVyc29uYUZpc2ljYVV0ZW50ZSQoKVxyXG5cdFx0Ly8gICAucGlwZShzaGFyZVJlcGxheSgpKTtcclxuXHJcblx0XHR0aGlzLmRhdGlQZXJzb25hRmlzaWNhJCA9IHRoaXMucGVyc29uYUZpc2ljYSRcclxuXHRcdFx0LnBpcGUocGx1Y2soXCJkYXRpUGVyc29uYUZpc2ljYVwiKSk7XHJcblxyXG5cdFx0dGhpcy5yZXNpZGVuemEkID0gdGhpcy5wZXJzb25hRmlzaWNhJFxyXG5cdFx0XHQucGlwZShwbHVjayhcInJlc2lkZW56YVwiKSk7XHJcblxyXG5cdFx0dGhpcy5yZWNhcGl0aSQgPSB0aGlzLnBlcnNvbmFGaXNpY2EkXHJcblx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdHBsdWNrKFwicmVjYXBpdGlcIiksXHJcblx0XHRcdFx0bWFwKHJlY2FwaXRpID0+IHJlY2FwaXRpIHx8IFtdKVxyXG5cdFx0XHQpO1xyXG5cclxuXHRcdHRoaXMuZG9taWNpbGkkID0gdGhpcy5wZXJzb25hRmlzaWNhJFxyXG5cdFx0XHQucGlwZShwbHVjayhcImRvbWljaWxpXCIpKTtcclxuXHJcblx0fVxyXG5cclxuXHRwdWJsaWMgcmVjYXBpdGlSZWFkeShyZWNhcGl0aVN0YXR1czogQ29tcG9uZW50T3V0cHV0U3RhdHVzPENvbnRhdHRvRFRPPikge1xyXG5cdFx0Ly8gY29uc29sZS5sb2coJ1tyYWNhcGl0aVN0YXR1c10nLCByZWNhcGl0aVN0YXR1cyk7XHJcblx0XHR0aGlzLmNoYW5nZXNSZWNhcGl0byQubmV4dChcclxuXHRcdFx0cmVjYXBpdGlTdGF0dXMubWFwVmFsdWUoKGNvbnRhdHRvKSA9PiAoZGljaDogRGF0aVJpY2hpZWRlbnRlRFRPKSA9PiB7XHJcblx0XHRcdFx0cmV0dXJuIGRpY2guY29udGF0dG8gPSBjb250YXR0bztcclxuXHRcdFx0fSlcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgZG9taWNpbGlSZWFkeShkb21pY2lsaVN0YXR1czogQ29tcG9uZW50T3V0cHV0U3RhdHVzPERvbWljaWxpb0RUTz4pIHtcclxuXHRcdC8vIGNvbnNvbGUubG9nKCdbZG9taWNpbGlTdGF0dXNdJywgZG9taWNpbGlTdGF0dXMpO1xyXG5cdFx0dGhpcy5jaGFuZ2VzRG9taWNpbGlvJC5uZXh0KFxyXG5cdFx0XHRkb21pY2lsaVN0YXR1cy5tYXBWYWx1ZSgoZG9taWNpbGlvKSA9PiAoZGljaDogRGF0aVJpY2hpZWRlbnRlRFRPKSA9PiB7XHJcblx0XHRcdFx0ZGljaC5kb21pY2lsaW8gPSBkb21pY2lsaW87XHJcblx0XHRcdFx0Ly9UT0RPOiBmaXhcclxuXHRcdFx0XHQvLyAodGhpcy5pc0RvbWljaWxpb0VsZXR0b1ZhbGlkID0gZG9taWNpbGlvLmlkRG9taWNpbGlvU2VsZXppb25hdG8gIT0gbnVsbCk7XHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0aW5pdFJpY2hpZWRlbnRlKCkge1xyXG5cdFx0dGhpcy5kYXRpUmljaGllZGVudGUgPSBuZXcgRGF0aVJpY2hpZWRlbnRlRFRPKCk7XHJcblx0XHR0aGlzLmRhdGlSaWNoaWVkZW50ZS5jb250YXR0byA9IG5ldyBDb250YXR0b0RUTygpO1xyXG5cdFx0Ly9UT0RPXHJcblx0XHR0aGlzLmRhdGlSaWNoaWVkZW50ZS5kb21pY2lsaW8gPSBuZXcgRG9taWNpbGlvRFRPKCk7XHJcblx0XHR0aGlzLmRhdGlSaWNoaWVkZW50ZS5kb21pY2lsaW8uY29udGF0dG8gPSBuZXcgQ29udGF0dG9EVE8oKTtcclxuXHRcdHRoaXMuZGF0aVJpY2hpZWRlbnRlLmRvbWljaWxpby5pZERvbWljaWxpb1NlbGV6aW9uYXRvID0gbnVsbDtcclxuXHR9XHJcblxyXG5cdGZvcndhcmQoXykge1xyXG5cdFx0dGhpcy5uZXh0U3RlcC5lbWl0KHRoaXMuZGF0aVJpY2hpZWRlbnRlKTtcclxuXHR9XHJcblxyXG5cdGNvbXBsZXRlKF8pIHsgfVxyXG5cclxuXHRvblNhbHZhQm96emEoXykge1xyXG5cdFx0dGhpcy5zYWx2YUJvenphLmVtaXQodGhpcy5kYXRpUmljaGllZGVudGUpO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5kb21pY2lsaW9FbGV0dG9TdWIpIHtcclxuXHRcdFx0dGhpcy5kb21pY2lsaW9FbGV0dG9TdWIudW5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHB1YmxpYyBoYXNTZWxlY3RlRGljaGlhcmFudGUoZGljaGlhcmFudGUpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiBkaWNoaWFyYW50ZS5vdXRwdXQuY29udGF0dG8uZW1haWwgIT0gbnVsbCB8fCBkaWNoaWFyYW50ZS5vdXRwdXQuY29udGF0dG8ucGVjICE9IG51bGw7O1xyXG5cdH1cclxuXHJcblx0cHVibGljIGhhc1NlbGVjdGVEaWNoaWFyYW50ZUFuZChkaWNoaWFyYW50ZSk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaGFzU2VsZWN0ZURpY2hpYXJhbnRlKGRpY2hpYXJhbnRlKSAmJlxyXG5cdFx0XHQoZGljaGlhcmFudGUub3V0cHV0LmRvbWljaWxpby5pZERvbWljaWxpb1NlbGV6aW9uYXRvICE9IG51bGwpICYmXHJcblx0XHRcdChkaWNoaWFyYW50ZS5vdXRwdXQuZG9taWNpbGlvLmNvbnRhdHRvLmVtYWlsICE9IG51bGwgfHwgZGljaGlhcmFudGUub3V0cHV0LmRvbWljaWxpby5jb250YXR0by5wZWMgIT0gbnVsbCk7XHJcblx0fVxyXG59XHJcbiJdfQ==