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.

139 lines 32.5 kB
import { Component, EventEmitter, Input, Output } from '@angular/core'; import { FormControl, FormGroup, Validators } from '@angular/forms'; import { Subscription } from 'rxjs'; import { debounceTime } from 'rxjs/operators'; export class IndirizzoPagamentoComponent { constructor() { this.selectedProvinciaEmitter = new EventEmitter(); this.selectedComuneEmitter = new EventEmitter(); this.indirizzoEmitter = new EventEmitter(); this.subscription = new Subscription(); // this.initIndirizzoForm(); // this.subscription.add(this.indirizzoForm.controls['isEstero'].valueChanges.subscribe(isEstero => { // this.indirizzoForm.controls['civico'].setValidators(isEstero ? [] : [Validators.required]); // this.indirizzoForm.controls['civico'].patchValue(null); // this.indirizzoForm.controls['civico'].updateValueAndValidity(); // this.indirizzoForm.controls['provincia'].setValidators(isEstero ? [] : [Validators.required]); // this.indirizzoForm.controls['provincia'].patchValue(null); // this.indirizzoForm.controls['provincia'].updateValueAndValidity(); // this.indirizzoForm.controls['comune'].setValidators(isEstero ? [] : [Validators.required]); // this.indirizzoForm.controls['comune'].patchValue(null); // this.indirizzoForm.controls['comune'].updateValueAndValidity(); // this.indirizzoForm.controls['cap'].setValidators(isEstero ? [] : [Validators.required]); // this.indirizzoForm.controls['cap'].patchValue(null); // this.indirizzoForm.controls['cap'].updateValueAndValidity(); // this.indirizzoForm.controls['nazione'].setValidators(isEstero ? [Validators.required] : []); // this.indirizzoForm.controls['nazione'].patchValue(null); // this.indirizzoForm.controls['nazione'].updateValueAndValidity(); // })); // this.subscription.add(this.indirizzoForm.controls['provincia'].valueChanges.subscribe(siglaProvincia => this.selectedProvinciaEmitter.emit(siglaProvincia))); // this.subscription.add(this.indirizzoForm.controls['comune'].valueChanges.subscribe(codiceCatastale => this.selectedComuneEmitter.emit(codiceCatastale))); } set _disableForm(val) { this.disableForm = val; if (this.disableForm) { this.indirizzoForm.disable(); } else { this.indirizzoForm.enable(); } } ngOnInit() { this.initIndirizzoForm(); this.setFormControlsValue(); this.subscription.add(this.indirizzoForm.controls['isEstero'].valueChanges.subscribe(isEstero => { this.indirizzoForm.controls['civico'].setValidators(isEstero ? [] : [Validators.required]); this.indirizzoForm.controls['civico'].patchValue(null); this.indirizzoForm.controls['civico'].updateValueAndValidity(); this.indirizzoForm.controls['provincia'].setValidators(isEstero ? [] : [Validators.required]); this.indirizzoForm.controls['provincia'].patchValue(null); this.indirizzoForm.controls['provincia'].updateValueAndValidity(); this.indirizzoForm.controls['comune'].setValidators(isEstero ? [] : [Validators.required]); this.indirizzoForm.controls['comune'].patchValue(null); this.indirizzoForm.controls['comune'].updateValueAndValidity(); this.indirizzoForm.controls['cap'].setValidators(isEstero ? [] : [Validators.required]); this.indirizzoForm.controls['cap'].patchValue(null); this.indirizzoForm.controls['cap'].updateValueAndValidity(); this.indirizzoForm.controls['nazione'].setValidators(isEstero ? [Validators.required] : []); this.indirizzoForm.controls['nazione'].patchValue(null); this.indirizzoForm.controls['nazione'].updateValueAndValidity(); })); this.subscription.add(this.indirizzoForm.controls['provincia'].valueChanges.subscribe(siglaProvincia => this.selectedProvinciaEmitter.emit(siglaProvincia))); this.subscription.add(this.indirizzoForm.controls['comune'].valueChanges.subscribe(codiceCatastale => this.selectedComuneEmitter.emit(codiceCatastale))); this.indirizzoEmit(); } ngOnDestroy() { this.subscription.unsubscribe(); } initIndirizzoForm() { this.indirizzoForm = new FormGroup({ isEstero: new FormControl(null), indirizzo: new FormControl(null, [Validators.required]), nazione: new FormControl(null), civico: new FormControl(null), provincia: new FormControl(null), comune: new FormControl(null), cap: new FormControl(null), }); } onProvinciaChange(siglaProvincia) { this.indirizzoForm.controls['comune'].patchValue(null); this.indirizzoForm.controls['comune'].markAsTouched(); this.indirizzoForm.controls['cap'].patchValue(null); this.indirizzoForm.controls['cap'].markAsTouched(); } onComuneChange(codiceCatastale) { this.indirizzoForm.controls['cap'].patchValue(null); this.indirizzoForm.controls['cap'].markAsTouched(); } indirizzoEmit() { this.subscription.add(this.indirizzoForm.valueChanges.pipe(debounceTime(500)).subscribe((_) => { const indirizzo = { strada: { civico: this.indirizzoForm.controls['civico'].value, inidirizzo: this.indirizzoForm.controls['indirizzo'].value, tipoToponimo: null }, localita: { cap: this.indirizzoForm.controls['cap'].value, comune: this.indirizzoForm.controls['comune'].value, nazione: this.indirizzoForm.controls['nazione'].value, provincia: this.indirizzoForm.controls['provincia'].value } }; const isValid = this.indirizzoForm.valid; this.indirizzoEmitter.emit({ indirizzo: indirizzo ? indirizzo : null, isValid: isValid }); })); } setFormControlsValue() { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; this.indirizzoForm.controls['isEstero'].setValue(this.indirizzo && ((_b = (_a = this.indirizzo) === null || _a === void 0 ? void 0 : _a.localita) === null || _b === void 0 ? void 0 : _b.comune.startsWith("Z")) ? true : false); this.indirizzoForm.controls['indirizzo'].setValue(this.indirizzo ? this.indirizzo.strada.inidirizzo : null); this.indirizzoForm.controls['nazione'].setValue(this.indirizzo ? (_d = (_c = this.indirizzo) === null || _c === void 0 ? void 0 : _c.localita) === null || _d === void 0 ? void 0 : _d.nazione : null); this.indirizzoForm.controls['civico'].setValue(this.indirizzo ? this.indirizzo.strada.civico : null); this.indirizzoForm.controls['provincia'].setValue(this.indirizzo && !((_f = (_e = this.indirizzo) === null || _e === void 0 ? void 0 : _e.localita) === null || _f === void 0 ? void 0 : _f.comune.startsWith("Z")) ? this.indirizzo.localita.provincia : null); this.indirizzoForm.controls['comune'].setValue(this.indirizzo && !((_h = (_g = this.indirizzo) === null || _g === void 0 ? void 0 : _g.localita) === null || _h === void 0 ? void 0 : _h.comune.startsWith("Z")) ? this.indirizzo.localita.comune : null); this.indirizzoForm.controls['cap'].setValue(this.indirizzo && !((_k = (_j = this.indirizzo) === null || _j === void 0 ? void 0 : _j.localita) === null || _k === void 0 ? void 0 : _k.comune.startsWith("Z")) ? this.indirizzo.localita.cap : null); } } IndirizzoPagamentoComponent.decorators = [ { type: Component, args: [{ selector: 'lib-indirizzo-pagamento', template: "<form [formGroup]=\"indirizzoForm\" [ngxsForm]=\"ngxsFormPath\">\r\n\t<div class=\"row\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<div class=\"row align-items-center\">\r\n\t\t\t\t<div class=\"col-12 col-md-4\">\r\n\t\t\t\t\t<mat-checkbox formControlName=\"isEstero\" color=\"primary\">\r\n\t\t\t\t\t\t<info-tip-label label=\"indirizzo-estero\"></info-tip-label>\r\n\t\t\t\t\t</mat-checkbox>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"row\">\r\n\t\t\t\t<div class=\"col-12 col-md-4\" *ngIf=\"indirizzoForm.controls['isEstero'].value\">\r\n\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t<mat-label>{{ 'required' | traduzione }}{{ 'nazione' | traduzione }}</mat-label>\r\n\t\t\t\t\t\t<mat-select formControlName=\"nazione\">\r\n\t\t\t\t\t\t\t<mat-option *ngFor=\"let nazione of nazioni\" [value]=\"nazione.codiceCatastale\">\r\n\t\t\t\t\t\t\t\t{{ nazione.denominazione }}\r\n\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t<mat-error *ngIf=\"indirizzoForm.controls['nazione'].invalid\">\r\n\t\t\t\t\t\t\t{{ 'validation-required' | traduzione }}\r\n\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"col-12\" [ngClass]=\"indirizzoForm.controls['isEstero'].value ? ' col-md-8': ' col-md-10'\">\r\n\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t<mat-label>{{ 'required' | traduzione }}{{'indirizzo' | traduzione }}</mat-label>\r\n\t\t\t\t\t\t<input [maxlength]=\"70\" formControlName=\"indirizzo\" matInput>\r\n\t\t\t\t\t\t<mat-error *ngIf=\"indirizzoForm.controls['indirizzo'].invalid\">\r\n\t\t\t\t\t\t\t{{ 'validation-required' | traduzione }}\r\n\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"col-12 col-md-2\" *ngIf=\"!indirizzoForm.controls['isEstero'].value\">\r\n\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t<mat-label>{{ 'required' | traduzione }}{{'civico' | traduzione }}</mat-label>\r\n\t\t\t\t\t\t<input [maxlength]=\"16\" formControlName=\"civico\" matInput>\r\n\t\t\t\t\t\t<mat-error *ngIf=\"indirizzoForm.controls['civico'].invalid\">\r\n\t\t\t\t\t\t\t{{ 'validation-required' | traduzione }}\r\n\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"row\" *ngIf=\"!indirizzoForm.controls['isEstero'].value\">\r\n\t\t\t\t<div class=\"col-12 col-md-5\">\r\n\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t<mat-label>{{ 'required' | traduzione }}{{ 'provincia' | traduzione }}</mat-label>\r\n\t\t\t\t\t\t<mat-select formControlName=\"provincia\" (valueChange)=\"onProvinciaChange($event)\">\r\n\t\t\t\t\t\t\t<mat-option *ngFor=\"let provincia of province\" [value]=\"provincia.sigla\">\r\n\t\t\t\t\t\t\t\t{{ provincia.denominazione }}\r\n\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t<mat-error *ngIf=\"indirizzoForm.controls['provincia'].invalid\">\r\n\t\t\t\t\t\t\t{{ 'validation-required' | traduzione }}\r\n\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"col-12 col-md-5\">\r\n\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t<mat-label>{{ 'required' | traduzione }}{{ 'comune' | traduzione }}</mat-label>\r\n\t\t\t\t\t\t<mat-select formControlName=\"comune\" (valueChange)=\"onComuneChange($event)\">\r\n\t\t\t\t\t\t\t<mat-option *ngFor=\"let comune of comuni\" [value]=\"comune.codiceCatastale\">\r\n\t\t\t\t\t\t\t\t{{ comune.denominazione }}\r\n\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t<mat-error *ngIf=\"indirizzoForm.controls['comune'].invalid\">\r\n\t\t\t\t\t\t\t{{ 'validation-required' | traduzione }}\r\n\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"col-12 col-md-2\">\r\n\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t<mat-label>{{ 'required' | traduzione }}{{ 'cap' | traduzione }}</mat-label>\r\n\t\t\t\t\t\t<mat-select formControlName=\"cap\">\r\n\t\t\t\t\t\t\t<mat-option *ngFor=\"let cap of capOptions\" [value]=\"cap\">\r\n\t\t\t\t\t\t\t\t{{ cap }}\r\n\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t<mat-error *ngIf=\"indirizzoForm.controls['cap'].invalid\">\r\n\t\t\t\t\t\t\t{{ 'validation-required' | traduzione }}\r\n\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</form>\r\n\r\n\r\n", styles: [""] },] } ]; IndirizzoPagamentoComponent.ctorParameters = () => []; IndirizzoPagamentoComponent.propDecorators = { ngxsFormPath: [{ type: Input }], nazioni: [{ type: Input }], province: [{ type: Input }], comuni: [{ type: Input }], capOptions: [{ type: Input }], indirizzo: [{ type: Input }], _disableForm: [{ type: Input, args: ['disableForm',] }], selectedProvinciaEmitter: [{ type: Output }], selectedComuneEmitter: [{ type: Output }], indirizzoEmitter: [{ type: Output }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kaXJpenpvLXBhZ2FtZW50by5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiQzovUHJvZ2V0dGkvREFHL3NvcmdlbnRpL2dpdGxhYi1zb2Z0d2FyZWZhY3RvcnkvY29tbW9uLWNvbXBvbmVudC1saWIvcHJvamVjdHMvcG9ydGFsLWNvbW1vbi1jb21wb25lbnQtbGliL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9tb2RhbGl0YS1wYWdhbWVudG8vY29tcG9uZW50cy9pbmRpcml6em8tcGFnYW1lbnRvL2luZGlyaXp6by1wYWdhbWVudG8uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBUTVDLE1BQU0sT0FBTywyQkFBMkI7SUE2Q3ZDO1FBWkEsNkJBQXdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUd0RCwwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBR25ELHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFtRCxDQUFDO1FBSS9FLGlCQUFZLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHdkQsNEJBQTRCO1FBQzVCLHFHQUFxRztRQUNyRywrRkFBK0Y7UUFDL0YsMkRBQTJEO1FBQzNELG1FQUFtRTtRQUNuRSxrR0FBa0c7UUFDbEcsOERBQThEO1FBQzlELHNFQUFzRTtRQUN0RSwrRkFBK0Y7UUFDL0YsMkRBQTJEO1FBQzNELG1FQUFtRTtRQUNuRSw0RkFBNEY7UUFDNUYsd0RBQXdEO1FBQ3hELGdFQUFnRTtRQUNoRSxnR0FBZ0c7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QUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBQyxJQUFJLENBQUMsU0FBUywwQ0FBRSxRQUFRLDBDQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0csSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksY0FBQyxJQUFJLENBQUMsU0FBUywwQ0FBRSxRQUFRLDBDQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEssSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksY0FBQyxJQUFJLENBQUMsU0FBUywwQ0FBRSxRQUFRLDBDQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUosSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksY0FBQyxJQUFJLENBQUMsU0FBUywwQ0FBRSxRQUFRLDBDQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkosQ0FBQzs7O1lBaEtELFNBQVMsU0FBQztnQkFDVixRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyx1dklBQW1EOzthQUVuRDs7OzsyQkFHQyxLQUFLO3NCQUdMLEtBQUs7dUJBR0wsS0FBSztxQkFHTCxLQUFLO3lCQUdMLEtBQUs7d0JBR0wsS0FBSzsyQkFHTCxLQUFLLFNBQUMsYUFBYTt1Q0FZbkIsTUFBTTtvQ0FHTixNQUFNOytCQUdOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7ZGVib3VuY2VUaW1lfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7Q29tdW5lTW9kZWwsIEluZGlyaXp6b01vZGVsLCBMb2NhbGl0YU1vZGVsLCBOYXppb25lTW9kZWx9IGZyb20gJy4uLy4uL21vZGVscy9lc3RyZW1pLXBlcnNvbmEtZmlzaWNhLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnbGliLWluZGlyaXp6by1wYWdhbWVudG8nLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9pbmRpcml6em8tcGFnYW1lbnRvLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9pbmRpcml6em8tcGFnYW1lbnRvLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmRpcml6em9QYWdhbWVudG9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG5cdEBJbnB1dCgpXHJcbiAgbmd4c0Zvcm1QYXRoOiBzdHJpbmc7XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0bmF6aW9uaTogTmF6aW9uZU1vZGVsW107XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0cHJvdmluY2U6IExvY2FsaXRhTW9kZWxbXTtcclxuXHJcblx0QElucHV0KClcclxuXHRjb211bmk6IENvbXVuZU1vZGVsW107XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0Y2FwT3B0aW9uczogc3RyaW5nW107XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0aW5kaXJpenpvOiBJbmRpcml6em9Nb2RlbDtcclxuXHJcblx0QElucHV0KCdkaXNhYmxlRm9ybScpXHJcblx0c2V0IF9kaXNhYmxlRm9ybSh2YWw6IGJvb2xlYW4pIHtcclxuXHQgIHRoaXMuZGlzYWJsZUZvcm0gPSB2YWw7XHJcblx0ICBpZiAodGhpcy5kaXNhYmxlRm9ybSkge1xyXG5cdFx0dGhpcy5pbmRpcml6em9Gb3JtLmRpc2FibGUoKTtcclxuXHQgIH0gZWxzZSB7XHJcblx0XHR0aGlzLmluZGlyaXp6b0Zvcm0uZW5hYmxlKCk7XHJcblx0ICB9XHJcblx0fVxyXG5cclxuXHRkaXNhYmxlRm9ybTogYm9vbGVhbjtcclxuXHJcblx0QE91dHB1dCgpXHJcblx0c2VsZWN0ZWRQcm92aW5jaWFFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG5cdEBPdXRwdXQoKVxyXG5cdHNlbGVjdGVkQ29tdW5lRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuXHRAT3V0cHV0KClcclxuXHRpbmRpcml6em9FbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjx7IGluZGlyaXp6bzogSW5kaXJpenpvTW9kZWwsIGlzVmFsaWQ6IGJvb2xlYW4gfT4oKTtcclxuXHJcblx0aW5kaXJpenpvRm9ybTogRm9ybUdyb3VwO1xyXG5cclxuXHRwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdC8vIHRoaXMuaW5pdEluZGlyaXp6b0Zvcm0oKTtcclxuXHRcdC8vIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2lzRXN0ZXJvJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShpc0VzdGVybyA9PiB7XHJcblx0XHQvLyBcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2l2aWNvJ10uc2V0VmFsaWRhdG9ycyhpc0VzdGVybyA/IFtdIDogW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuXHRcdC8vIFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWydjaXZpY28nXS5wYXRjaFZhbHVlKG51bGwpO1xyXG5cdFx0Ly8gXHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2NpdmljbyddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdC8vIFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWydwcm92aW5jaWEnXS5zZXRWYWxpZGF0b3JzKGlzRXN0ZXJvID8gW10gOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG5cdFx0Ly8gXHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ3Byb3ZpbmNpYSddLnBhdGNoVmFsdWUobnVsbCk7XHJcblx0XHQvLyBcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1sncHJvdmluY2lhJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0Ly8gXHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2NvbXVuZSddLnNldFZhbGlkYXRvcnMoaXNFc3Rlcm8gPyBbXSA6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcblx0XHQvLyBcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY29tdW5lJ10ucGF0Y2hWYWx1ZShudWxsKTtcclxuXHRcdC8vIFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWydjb211bmUnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHQvLyBcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2FwJ10uc2V0VmFsaWRhdG9ycyhpc0VzdGVybyA/IFtdIDogW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuXHRcdC8vIFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWydjYXAnXS5wYXRjaFZhbHVlKG51bGwpO1xyXG5cdFx0Ly8gXHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2NhcCddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdC8vIFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWyduYXppb25lJ10uc2V0VmFsaWRhdG9ycyhpc0VzdGVybyA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSA6IFtdKTtcclxuXHRcdC8vIFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWyduYXppb25lJ10ucGF0Y2hWYWx1ZShudWxsKTtcclxuXHRcdC8vIFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWyduYXppb25lJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0Ly8gfSkpO1xyXG5cdFx0Ly8gdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1sncHJvdmluY2lhJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShzaWdsYVByb3ZpbmNpYSA9PiB0aGlzLnNlbGVjdGVkUHJvdmluY2lhRW1pdHRlci5lbWl0KHNpZ2xhUHJvdmluY2lhKSkpO1xyXG5cdFx0Ly8gdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY29tdW5lJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShjb2RpY2VDYXRhc3RhbGUgPT4gdGhpcy5zZWxlY3RlZENvbXVuZUVtaXR0ZXIuZW1pdChjb2RpY2VDYXRhc3RhbGUpKSk7XHJcblx0fVxyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuaW5pdEluZGlyaXp6b0Zvcm0oKTtcclxuXHRcdHRoaXMuc2V0Rm9ybUNvbnRyb2xzVmFsdWUoKTtcclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2lzRXN0ZXJvJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShpc0VzdGVybyA9PiB7XHJcblx0XHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2l2aWNvJ10uc2V0VmFsaWRhdG9ycyhpc0VzdGVybyA/IFtdIDogW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuXHRcdFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWydjaXZpY28nXS5wYXRjaFZhbHVlKG51bGwpO1xyXG5cdFx0XHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2NpdmljbyddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWydwcm92aW5jaWEnXS5zZXRWYWxpZGF0b3JzKGlzRXN0ZXJvID8gW10gOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG5cdFx0XHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ3Byb3ZpbmNpYSddLnBhdGNoVmFsdWUobnVsbCk7XHJcblx0XHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1sncHJvdmluY2lhJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0XHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2NvbXVuZSddLnNldFZhbGlkYXRvcnMoaXNFc3Rlcm8gPyBbXSA6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcblx0XHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY29tdW5lJ10ucGF0Y2hWYWx1ZShudWxsKTtcclxuXHRcdFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWydjb211bmUnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2FwJ10uc2V0VmFsaWRhdG9ycyhpc0VzdGVybyA/IFtdIDogW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuXHRcdFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWydjYXAnXS5wYXRjaFZhbHVlKG51bGwpO1xyXG5cdFx0XHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2NhcCddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWyduYXppb25lJ10uc2V0VmFsaWRhdG9ycyhpc0VzdGVybyA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSA6IFtdKTtcclxuXHRcdFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWyduYXppb25lJ10ucGF0Y2hWYWx1ZShudWxsKTtcclxuXHRcdFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWyduYXppb25lJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0fSkpO1xyXG5cdFx0dGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1sncHJvdmluY2lhJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShzaWdsYVByb3ZpbmNpYSA9PiB0aGlzLnNlbGVjdGVkUHJvdmluY2lhRW1pdHRlci5lbWl0KHNpZ2xhUHJvdmluY2lhKSkpO1xyXG5cdFx0dGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY29tdW5lJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShjb2RpY2VDYXRhc3RhbGUgPT4gdGhpcy5zZWxlY3RlZENvbXVuZUVtaXR0ZXIuZW1pdChjb2RpY2VDYXRhc3RhbGUpKSk7XHJcblxyXG5cdFx0dGhpcy5pbmRpcml6em9FbWl0KCk7XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0fVxyXG5cclxuXHRpbml0SW5kaXJpenpvRm9ybSgpOiB2b2lkIHtcclxuXHRcdHRoaXMuaW5kaXJpenpvRm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xyXG5cdFx0XHRpc0VzdGVybzogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG5cdFx0XHRpbmRpcml6em86IG5ldyBGb3JtQ29udHJvbChudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG5cdFx0XHRuYXppb25lOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcblx0XHRcdGNpdmljbzogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG5cdFx0XHRwcm92aW5jaWE6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuXHRcdFx0Y29tdW5lOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcblx0XHRcdGNhcDogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRvblByb3ZpbmNpYUNoYW5nZShzaWdsYVByb3ZpbmNpYTogc3RyaW5nKTogdm9pZCB7XHJcblx0XHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2NvbXVuZSddLnBhdGNoVmFsdWUobnVsbCk7XHJcblx0XHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2NvbXVuZSddLm1hcmtBc1RvdWNoZWQoKTtcclxuXHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2FwJ10ucGF0Y2hWYWx1ZShudWxsKTtcclxuXHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2FwJ10ubWFya0FzVG91Y2hlZCgpO1xyXG5cdH1cclxuXHJcblx0b25Db211bmVDaGFuZ2UoY29kaWNlQ2F0YXN0YWxlOiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2FwJ10ucGF0Y2hWYWx1ZShudWxsKTtcclxuXHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2FwJ10ubWFya0FzVG91Y2hlZCgpO1xyXG5cdH1cclxuXHJcblx0aW5kaXJpenpvRW1pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmluZGlyaXp6b0Zvcm0udmFsdWVDaGFuZ2VzLnBpcGUoXHJcblx0XHRcdFx0ZGVib3VuY2VUaW1lKDUwMCksXHJcblx0XHRcdFx0Ly8gZmlsdGVyKCgpID0+IHRoaXMuaW5kaXJpenpvRm9ybS52YWxpZCksXHJcblx0XHRcdCkuc3Vic2NyaWJlKChfKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgaW5kaXJpenpvOiBJbmRpcml6em9Nb2RlbCA9IHtcclxuXHRcdFx0XHRcdHN0cmFkYToge1xyXG5cdFx0XHRcdFx0XHRjaXZpY286IHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2l2aWNvJ10udmFsdWUsXHJcblx0XHRcdFx0XHRcdGluaWRpcml6em86IHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snaW5kaXJpenpvJ10udmFsdWUsXHJcblx0XHRcdFx0XHRcdHRpcG9Ub3BvbmltbzogbnVsbFxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGxvY2FsaXRhOiB7XHJcblx0XHRcdFx0XHRcdGNhcDogdGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWydjYXAnXS52YWx1ZSxcclxuXHRcdFx0XHRcdFx0Y29tdW5lOiB0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2NvbXVuZSddLnZhbHVlLFxyXG5cdFx0XHRcdFx0XHRuYXppb25lOiB0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ25hemlvbmUnXS52YWx1ZSxcclxuXHRcdFx0XHRcdFx0cHJvdmluY2lhOiB0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ3Byb3ZpbmNpYSddLnZhbHVlXHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb25zdCBpc1ZhbGlkID0gdGhpcy5pbmRpcml6em9Gb3JtLnZhbGlkO1xyXG5cdFx0XHRcdHRoaXMuaW5kaXJpenpvRW1pdHRlci5lbWl0KHsgaW5kaXJpenpvOiBpbmRpcml6em8gPyBpbmRpcml6em8gOiBudWxsLCBpc1ZhbGlkOiBpc1ZhbGlkIH0pO1xyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHNldEZvcm1Db250cm9sc1ZhbHVlKCk6IHZvaWR7XHJcblx0XHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2lzRXN0ZXJvJ10uc2V0VmFsdWUodGhpcy5pbmRpcml6em8gJiYgdGhpcy5pbmRpcml6em8/LmxvY2FsaXRhPy5jb211bmUuc3RhcnRzV2l0aChcIlpcIikgPyAgdHJ1ZSA6IGZhbHNlKTtcclxuXHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snaW5kaXJpenpvJ10uc2V0VmFsdWUodGhpcy5pbmRpcml6em8gPyB0aGlzLmluZGlyaXp6by5zdHJhZGEuaW5pZGlyaXp6byA6IG51bGwpO1xyXG5cdFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWyduYXppb25lJ10uc2V0VmFsdWUodGhpcy5pbmRpcml6em8gPyB0aGlzLmluZGlyaXp6bz8ubG9jYWxpdGE/Lm5hemlvbmUgOiBudWxsKTtcclxuXHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2l2aWNvJ10uc2V0VmFsdWUodGhpcy5pbmRpcml6em8gPyB0aGlzLmluZGlyaXp6by5zdHJhZGEuY2l2aWNvIDogbnVsbCk7XHJcblx0XHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ3Byb3ZpbmNpYSddLnNldFZhbHVlKHRoaXMuaW5kaXJpenpvICYmICF0aGlzLmluZGlyaXp6bz8ubG9jYWxpdGE/LmNvbXVuZS5zdGFydHNXaXRoKFwiWlwiKSA/IHRoaXMuaW5kaXJpenpvLmxvY2FsaXRhLnByb3ZpbmNpYSA6IG51bGwpO1xyXG5cdFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWydjb211bmUnXS5zZXRWYWx1ZSh0aGlzLmluZGlyaXp6byAmJiAhdGhpcy5pbmRpcml6em8/LmxvY2FsaXRhPy5jb211bmUuc3RhcnRzV2l0aChcIlpcIikgPyB0aGlzLmluZGlyaXp6by5sb2NhbGl0YS5jb211bmUgOiBudWxsKTtcclxuXHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2FwJ10uc2V0VmFsdWUodGhpcy5pbmRpcml6em8gJiYgIXRoaXMuaW5kaXJpenpvPy5sb2NhbGl0YT8uY29tdW5lLnN0YXJ0c1dpdGgoXCJaXCIpID8gdGhpcy5pbmRpcml6em8ubG9jYWxpdGEuY2FwIDogbnVsbCk7XHJcblx0fVxyXG59XHJcbiJdfQ==