UNPKG

@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.3 kB
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaGllZGVudGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkQ6L1Byb2dldHRpL0RBRy9zb3JnZW50aS9naXRsYWItdGVybmkvY29tbW9uLWNvbXBvbmVudC1saWIvcHJvamVjdHMvcG9ydGFsLWNvbW1vbi1jb21wb25lbnQtbGliL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9kZXBvc2l0aS9jb21wb25lbnRzL3JpY2hpZWRlbnRlL3JpY2hpZWRlbnRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFjLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBWXZFLE1BQU0sT0FBTyxvQkFBb0I7SUFpRGhDO1FBdENBLGFBQVEsR0FBcUMsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFHcEYsZUFBVSxHQUFxQyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQU90RiwwQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFFaEMsQ0FBQztRQUVKLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUU1QixDQUFDO1FBRUoscUJBQWdCLEdBQUcsSUFBSSxPQUFP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QyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFZixZQUFZLENBQUMsQ0FBQztRQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsV0FBVztRQUNWLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzVCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QztJQUNGLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxXQUFXO1FBQ3ZDLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDO1FBQUEsQ0FBQztJQUM5RixDQUFDO0lBRU0sd0JBQXdCLENBQUMsV0FBVztRQUMxQyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUM7WUFDN0MsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsSUFBSSxJQUFJLENBQUM7WUFDN0QsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQzdHLENBQUM7OztZQTVMRCxTQUFTLFNBQUM7Z0JBQ1YsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsaWtEQUEyQzs7YUFFM0M7Ozs7OEJBS0MsS0FBSzs2QkFHTCxLQUFLO3VCQUdMLE1BQU07eUJBR04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHBsdWNrIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRPdXRwdXRTdGF0dXMgfSBmcm9tICcuLi8uLi9ub3JtYWxpenphemlvbmUvY29tcG9uZW50LW91dHB1dC1zdGF0dXMnO1xyXG5pbXBvcnQgeyBDb250YXR0b0RUTyB9IGZyb20gJy4uLy4uL21vZGVscy9jb250YXR0by1kdG8nO1xyXG5pbXBvcnQgeyBEb21pY2lsaW9EVE8gfSBmcm9tICcuLi8uLi9tb2RlbHMvZG9taWNpbGlvLWR0byc7XHJcbmltcG9ydCB7IENvbXBvbmVudFJlZHVjZXIgfSBmcm9tICcuLi8uLi91dGlscy9jb21wb25lbnQtcmVkdWNlcic7XHJcbmltcG9ydCB7IERhdGlSaWNoaWVkZW50ZURUTyB9IGZyb20gJy4uLy4uL21vZGVscy9kYXRpLXJpY2hpZWRlbnRlLWR0byc7XHJcbmltcG9ydCB7IFBlcnNvbmFGaXNpY2EgfSBmcm9tICcuLi8uLi9tb2RlbHMvcG9ydGFsZS9wZXJzb25hLWZpc2ljYS1tb2RlbCc7XHJcbmltcG9ydCB7IERhdGlQZXJzb25hRmlzaWNhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BvcnRhbGUvZGF0aS1wZXJzb25hLWZpc2ljYSc7XHJcbmltcG9ydCB7IEluZGlyaXp6byB9IGZyb20gJy4uLy4uL21vZGVscy9wb3J0YWxlL2luZGlyaXp6byc7XHJcbmltcG9ydCB7IFJlY2FwaXRvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BvcnRhbGUvcmVjYXBpdG8nO1xyXG5pbXBvcnQgeyBEb21pY2lsaW8gfSBmcm9tICcuLi8uLi9tb2RlbHMvcG9ydGFsZS9kb21pY2lsaW8nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdsaWItcmljaGllZGVudGUnLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9yaWNoaWVkZW50ZS5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vcmljaGllZGVudGUuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSaWNoaWVkZW50ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cdGZvcm06IEZvcm1Hcm91cDtcclxuXHJcblx0QElucHV0KClcclxuXHRkYXRpUmljaGllZGVudGU6IERhdGlSaWNoaWVkZW50ZURUTztcclxuXHJcblx0QElucHV0KClcclxuXHRwZXJzb25hRmlzaWNhJDogT2JzZXJ2YWJsZTxQZXJzb25hRmlzaWNhPjtcclxuXHJcblx0QE91dHB1dCgpXHJcblx0bmV4dFN0ZXA6IEV2ZW50RW1pdHRlcjxEYXRpUmljaGllZGVudGVEVE8+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRpUmljaGllZGVudGVEVE8+KCk7XHJcblxyXG5cdEBPdXRwdXQoKVxyXG5cdHNhbHZhQm96emE6IEV2ZW50RW1pdHRlcjxEYXRpUmljaGllZGVudGVEVE8+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRpUmljaGllZGVudGVEVE8+KCk7XHJcblxyXG5cdGRhdGlQZXJzb25hRmlzaWNhJDogT2JzZXJ2YWJsZTxEYXRpUGVyc29uYUZpc2ljYT47XHJcblx0cmVzaWRlbnphJDogT2JzZXJ2YWJsZTxJbmRpcml6em8+O1xyXG5cdHJlY2FwaXRpJDogT2JzZXJ2YWJsZTxBcnJheTxSZWNhcGl0bz4+O1xyXG5cdGRvbWljaWxpJDogT2JzZXJ2YWJsZTxBcnJheTxEb21pY2lsaW8+PjtcclxuXHJcblx0Y2hhbmdlc1BlcnNvbmFGaXNpY2EkID0gbmV3IFN1YmplY3Q8XHJcblx0XHRDb21wb25lbnRPdXRwdXRTdGF0dXM8KHZhbHVlOiBEYXRpUmljaGllZGVudGVEVE8pID0+IHZvaWQ+XHJcblx0PigpO1xyXG5cclxuXHRjaGFuZ2VzUmVzaWRlbnphJCA9IG5ldyBTdWJqZWN0PFxyXG5cdFx0Q29tcG9uZW50T3V0cHV0U3RhdHVzPCh2YWx1ZTogRGF0aVJpY2hpZWRlbnRlRFRPKSA9PiB2b2lkPlxyXG5cdD4oKTtcclxuXHJcblx0Y2hhbmdlc1JlY2FwaXRvJCA9IG5ldyBTdWJqZWN0PFxyXG5cdFx0Q29tcG9uZW50T3V0cHV0U3RhdHVzPCh2YWx1ZTogRGF0aVJpY2hpZWRlbnRlRFRPKSA9PiB2b2lkPlxyXG5cdD4oKTtcclxuXHJcblx0Y2hhbmdlc0RvbWljaWxpbyQgPSBuZXcgU3ViamVjdDxcclxuXHRcdENvbXBvbmVudE91dHB1dFN0YXR1czwodmFsdWU6IERhdGlSaWNoaWVkZW50ZURUTykgPT4gdm9pZD5cclxuXHQ+KCk7XHJcblxyXG5cdC8vaXNGb3JtVmFsaWQ6IGJvb2xlYW47XHJcblxyXG5cdGRpcmVjdGlvbjogc3RyaW5nID0gXCJvbmx5LWZvcndhcmRcIjtcclxuXHJcblx0aXNGaW5hbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHRpc0RvbWljaWxpb0VsZXR0b1ZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdGRvbWljaWxpb0VsZXR0b1N1YjogU3Vic2NyaXB0aW9uO1xyXG5cclxuXHRpc0RpY2hpYXJhbnRlVmFsaWQ6IGJvb2xlYW47XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuXHRcdC8vY29uc29sZS5sb2coJ1tEYXRpUmljaGllZGVudGVEVE9dJywgdGhpcy5kYXRpUmljaGllZGVudGUpO1xyXG5cclxuXHRcdHRoaXMuZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG5cdFx0bGV0IHZhbGlkID0gdHJ1ZTtcclxuXHJcblx0XHRpZiAoIXRoaXMuZGF0aVJpY2hpZWRlbnRlKSB7XHJcblx0XHRcdHRoaXMuaW5pdFJpY2hpZWRlbnRlKCk7XHJcblx0XHRcdHZhbGlkID0gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgZGljaGlhcmFudGUkID0gQ29tcG9uZW50UmVkdWNlci5yZWR1Y2VyNChcclxuXHRcdFx0dGhpcy5jaGFuZ2VzUGVyc29uYUZpc2ljYSQsXHJcblx0XHRcdHRoaXMuY2hhbmdlc1Jlc2lkZW56YSQsXHJcblx0XHRcdHRoaXMuY2hhbmdlc1JlY2FwaXRvJCxcclxuXHRcdFx0dGhpcy5jaGFuZ2VzRG9taWNpbGlvJCxcclxuXHRcdFx0KGRpY2gpID0+IHtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcIltkaWNoXVwiLCBkaWNoKTtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcIltoYXNTZWxlemlvbmF0b0RvbWljaWxpb11cIiwgZGljaC5kb21pY2lsaW8uaGFzU2VsZXppb25hdG9Eb21pY2lsaW8pO1xyXG5cdFx0XHRcdGxldCBpc1ZhbGlkOiBib29sZWFuO1xyXG5cdFx0XHRcdGlmICghZGljaC5kb21pY2lsaW8uaGFzU2VsZXppb25hdG9Eb21pY2lsaW8gJiYgZGljaC5kb21pY2lsaW8uaGFzU2VsZXppb25hdG9Eb21pY2lsaW8gIT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdFx0XHRpc1ZhbGlkID0gZGljaC5jb250YXR0byAhPSBudWxsO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRpc1ZhbGlkID0gZGljaC5kb21pY2lsaW8gIT0gbnVsbDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly9UT0RPXHJcblx0XHRcdFx0Ly8gdGhpcy5pc0RvbWljaWxpb0VsZXR0b1ZhbGlkXHJcblx0XHRcdFx0Ly8gXHQ/IGRpY2guZG9taWNpbGlvICE9IG51bGwgLy8gc2UgaWwgZG9taWNpbGlvIG5vbiDDqCB2YWxpZGF0byBjb250cm9sbGEgc2UgZGl2ZXJzbyBkYSBudWxsIHNlIGxvIMOoIHRvcm5hIGZhbHNlIGFsdHJpbWVudGkgdHJ1ZS5cclxuXHRcdFx0XHQvLyBcdDogdHJ1ZSAvLyBzZSBnacOgIMOoIHZhbGlkYXRvIHRvcm5hIHRydWUuXHJcblx0XHRcdFx0Ly8gcmV0dXJuIChcclxuXHRcdFx0XHQvLyBcdGRpY2guY29udGF0dG8gIT0gbnVsbCB8fCAgLy8gYmFzdGVyZWJiZSB1bm8gZGVpIGR1ZSBkaXZlcnNvIGRhIG51bGwgcGVyIHRyb25hcmUgZmFsc2VcclxuXHRcdFx0XHQvLyBcdHRoaXMuaXNEb21pY2lsaW9FbGV0dG9WYWxpZFxyXG5cdFx0XHRcdC8vICk7XHJcblx0XHRcdFx0dmFsaWQgPSBpc1ZhbGlkXHJcblx0XHRcdFx0cmV0dXJuIGlzVmFsaWQ7XHJcblx0XHRcdH0sXHJcblx0XHRcdENvbXBvbmVudE91dHB1dFN0YXR1cy5vZih2YWxpZCwgdGhpcy5kYXRpUmljaGllZGVudGUpIC8vIG5vcm1hbGl6emF6aW9uZSBjb21wb25lbnRlIGRpY2hpYXJhbnRlXHJcblx0XHQpO1xyXG5cclxuXHRcdGRpY2hpYXJhbnRlJC5zdWJzY3JpYmUoKGRpY2hpYXJhbnRlKSA9PiB7XHJcblx0XHRcdGNvbnNvbGUubG9nKFwiW1JpY2hpZWRlbnRlQ29tcG9uZW50XSBkYXRpUmljaGllZGVudGVcIiwgZGljaGlhcmFudGUpO1xyXG5cdFx0XHQvL1RPRE9cclxuXHRcdFx0Ly90aGlzLmlzRm9ybVZhbGlkID0gZGljaGlhcmFudGUuc3RhdHVzO1xyXG5cdFx0XHRpZiAoZGljaGlhcmFudGUub3V0cHV0LmRvbWljaWxpby5oYXNTZWxlemlvbmF0b0RvbWljaWxpbyA9PSBmYWxzZSkge1xyXG5cdFx0XHRcdC8vVE9ET1xyXG5cdFx0XHRcdC8vIHRoaXMuaXNEaWNoaWFyYW50ZVZhbGlkID0gZGljaGlhcmFudGUub3V0cHV0LmluZm9Db250YXR0by5lbWFpbCAhPSBudWxsIHx8IGRpY2hpYXJhbnRlLm91dHB1dC5pbmZvQ29udGF0dG8ucGVjICE9IG51bGw7XHJcblx0XHRcdFx0dGhpcy5pc0RpY2hpYXJhbnRlVmFsaWQgPSB0aGlzLmhhc1NlbGVjdGVEaWNoaWFyYW50ZShkaWNoaWFyYW50ZSk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Ly9UT0RPXHJcblx0XHRcdFx0Ly8gdGhpcy5pc0RpY2hpYXJhbnRlVmFsaWQgPSAoZGljaGlhcmFudGUub3V0cHV0LmluZm9Db250YXR0by5lbWFpbCAhPSBudWxsIHx8IGRpY2hpYXJhbnRlLm91dHB1dC5pbmZvQ29udGF0dG8ucGVjICE9IG51bGwpICYmXHJcblx0XHRcdFx0Ly8gXHQoZGljaGlhcmFudGUub3V0cHV0LmRvbWljaWxpby5pZERvbWljaWxpb1NlbGV6aW9uYXRvICE9IG51bGwpICYmXHJcblx0XHRcdFx0Ly8gXHQoZGljaGlhcmFudGUub3V0cHV0LmRvbWljaWxpby5jb250YXR0by5lbWFpbCAhPSBudWxsIHx8IGRpY2hpYXJhbnRlLm91dHB1dC5kb21pY2lsaW8uY29udGF0dG8ucGVjICE9IG51bGwpO1xyXG5cdFx0XHRcdHRoaXMuaXNEaWNoaWFyYW50ZVZhbGlkID0gdGhpcy5oYXNTZWxlY3RlRGljaGlhcmFudGVBbmQoZGljaGlhcmFudGUpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHQvL1RPRE9cclxuXHRcdC8vLS0tLS0tLS12aWVuZSBwYXNzYXRvIGRhbGwnaW5wdXQtLS0tLS0tLS8vXHJcblx0XHQvLyB0aGlzLnBlcnNvbmFGaXNpY2EkID0gdGhpcy5wZXJzb25hRmlzaWNhU2VydmljZS5nZXRQZXJzb25hRmlzaWNhVXRlbnRlJCgpXHJcblx0XHQvLyAgIC5waXBlKHNoYXJlUmVwbGF5KCkpO1xyXG5cclxuXHRcdHRoaXMuZGF0aVBlcnNvbmFGaXNpY2EkID0gdGhpcy5wZXJzb25hRmlzaWNhJFxyXG5cdFx0XHQucGlwZShwbHVjayhcImRhdGlQZXJzb25hRmlzaWNhXCIpKTtcclxuXHJcblx0XHR0aGlzLnJlc2lkZW56YSQgPSB0aGlzLnBlcnNvbmFGaXNpY2EkXHJcblx0XHRcdC5waXBlKHBsdWNrKFwicmVzaWRlbnphXCIpKTtcclxuXHJcblx0XHR0aGlzLnJlY2FwaXRpJCA9IHRoaXMucGVyc29uYUZpc2ljYSRcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0cGx1Y2soXCJyZWNhcGl0aVwiKSxcclxuXHRcdFx0XHRtYXAocmVjYXBpdGkgPT4gcmVjYXBpdGkgfHwgW10pXHJcblx0XHRcdCk7XHJcblxyXG5cdFx0dGhpcy5kb21pY2lsaSQgPSB0aGlzLnBlcnNvbmFGaXNpY2EkXHJcblx0XHRcdC5waXBlKHBsdWNrKFwiZG9taWNpbGlcIikpO1xyXG5cclxuXHR9XHJcblxyXG5cdHB1YmxpYyByZWNhcGl0aVJlYWR5KHJlY2FwaXRpU3RhdHVzOiBDb21wb25lbnRPdXRwdXRTdGF0dXM8Q29udGF0dG9EVE8+KSB7XHJcblx0XHQvLyBjb25zb2xlLmxvZygnW3JhY2FwaXRpU3RhdHVzXScsIHJlY2FwaXRpU3RhdHVzKTtcclxuXHRcdHRoaXMuY2hhbmdlc1JlY2FwaXRvJC5uZXh0KFxyXG5cdFx0XHRyZWNhcGl0aVN0YXR1cy5tYXBWYWx1ZSgoY29udGF0dG8pID0+IChkaWNoOiBEYXRpUmljaGllZGVudGVEVE8pID0+IHtcclxuXHRcdFx0XHRyZXR1cm4gZGljaC5jb250YXR0byA9IGNvbnRhdHRvO1xyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBkb21pY2lsaVJlYWR5KGRvbWljaWxpU3RhdHVzOiBDb21wb25lbnRPdXRwdXRTdGF0dXM8RG9taWNpbGlvRFRPPikge1xyXG5cdFx0Ly8gY29uc29sZS5sb2coJ1tkb21pY2lsaVN0YXR1c10nLCBkb21pY2lsaVN0YXR1cyk7XHJcblx0XHR0aGlzLmNoYW5nZXNEb21pY2lsaW8kLm5leHQoXHJcblx0XHRcdGRvbWljaWxpU3RhdHVzLm1hcFZhbHVlKChkb21pY2lsaW8pID0+IChkaWNoOiBEYXRpUmljaGllZGVudGVEVE8pID0+IHtcclxuXHRcdFx0XHRkaWNoLmRvbWljaWxpbyA9IGRvbWljaWxpbztcclxuXHRcdFx0XHQvL1RPRE86IGZpeFxyXG5cdFx0XHRcdC8vICh0aGlzLmlzRG9taWNpbGlvRWxldHRvVmFsaWQgPSBkb21pY2lsaW8uaWREb21pY2lsaW9TZWxlemlvbmF0byAhPSBudWxsKTtcclxuXHRcdFx0fSlcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRpbml0UmljaGllZGVudGUoKSB7XHJcblx0XHR0aGlzLmRhdGlSaWNoaWVkZW50ZSA9IG5ldyBEYXRpUmljaGllZGVudGVEVE8oKTtcclxuXHRcdHRoaXMuZGF0aVJpY2hpZWRlbnRlLmNvbnRhdHRvID0gbmV3IENvbnRhdHRvRFRPKCk7XHJcblx0XHQvL1RPRE9cclxuXHRcdHRoaXMuZGF0aVJpY2hpZWRlbnRlLmRvbWljaWxpbyA9IG5ldyBEb21pY2lsaW9EVE8oKTtcclxuXHRcdHRoaXMuZGF0aVJpY2hpZWRlbnRlLmRvbWljaWxpby5jb250YXR0byA9IG5ldyBDb250YXR0b0RUTygpO1xyXG5cdFx0dGhpcy5kYXRpUmljaGllZGVudGUuZG9taWNpbGlvLmlkRG9taWNpbGlvU2VsZXppb25hdG8gPSBudWxsO1xyXG5cdH1cclxuXHJcblx0Zm9yd2FyZChfKSB7XHJcblx0XHR0aGlzLm5leHRTdGVwLmVtaXQodGhpcy5kYXRpUmljaGllZGVudGUpO1xyXG5cdH1cclxuXHJcblx0Y29tcGxldGUoXykgeyB9XHJcblxyXG5cdG9uU2FsdmFCb3p6YShfKSB7XHJcblx0XHR0aGlzLnNhbHZhQm96emEuZW1pdCh0aGlzLmRhdGlSaWNoaWVkZW50ZSk7XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmRvbWljaWxpb0VsZXR0b1N1Yikge1xyXG5cdFx0XHR0aGlzLmRvbWljaWxpb0VsZXR0b1N1Yi51bnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHVibGljIGhhc1NlbGVjdGVEaWNoaWFyYW50ZShkaWNoaWFyYW50ZSk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIGRpY2hpYXJhbnRlLm91dHB1dC5jb250YXR0by5lbWFpbCAhPSBudWxsIHx8IGRpY2hpYXJhbnRlLm91dHB1dC5jb250YXR0by5wZWMgIT0gbnVsbDs7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgaGFzU2VsZWN0ZURpY2hpYXJhbnRlQW5kKGRpY2hpYXJhbnRlKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5oYXNTZWxlY3RlRGljaGlhcmFudGUoZGljaGlhcmFudGUpICYmXHJcblx0XHRcdChkaWNoaWFyYW50ZS5vdXRwdXQuZG9taWNpbGlvLmlkRG9taWNpbGlvU2VsZXppb25hdG8gIT0gbnVsbCkgJiZcclxuXHRcdFx0KGRpY2hpYXJhbnRlLm91dHB1dC5kb21pY2lsaW8uY29udGF0dG8uZW1haWwgIT0gbnVsbCB8fCBkaWNoaWFyYW50ZS5vdXRwdXQuZG9taWNpbGlvLmNvbnRhdHRvLnBlYyAhPSBudWxsKTtcclxuXHR9XHJcbn1cclxuIl19