@infordata-web/portal-common-component-lib
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.0.14.
92 lines • 26.1 kB
JavaScript
import { Component, EventEmitter, Input, Output } from "@angular/core";
import { FormControl, FormGroup, Validators } from "@angular/forms";
import { getErrorMessage } from '../../utils/validators-messages.utils';
import { ibanValidator } from "ngx-iban";
export class BonificoSepaComponent {
constructor() {
this.viewSessoPF = false;
this.validateSepaPersonaFisicaEmitter = new EventEmitter();
this.resetEstremiPersonaFisicaSepaFormEmitter = new EventEmitter();
this.bonificoSepaReady = new EventEmitter();
this.personaFisicaEmitter = new EventEmitter();
this.getErrorMessage = getErrorMessage;
this.ibanValidators = [Validators.required, this.sepaCountriesValidator(), ibanValidator()];
this.sepaCountries = [{ "name": "Austria", "code": "AT", "iban": "AT493200056563289974" }, { "name": "Belgium", "code": "BE", "iban": "BE65561689528896" }, { "name": "Bulgaria", "code": "BG", "iban": "BG92TTBB94006559266188" }, { "name": "Cyprus", "code": "CY", "iban": "CY52665561416772369457864437" }, { "name": "Croatia", "code": "HR", "iban": "HR5523400098663266246" }, { "name": "Denmark", "code": "DK", "iban": "DK2550515918328528" }, { "name": "Estonia", "code": "EE", "iban": "EE591286653867491786" }, { "name": "Finland", "code": "FI", "iban": "FI8479486911788598" }, { "name": "France", "code": "FR", "iban": "FR8514508000707239488738J21" }, { "name": "Germany", "code": "DE", "iban": "DE14500105174185484177" }, { "name": "Greece", "code": "GR", "iban": "GR9201494491588141549531799" }, { "name": "Ireland", "code": "IE", "iban": "IE29AIBK93115212345678" }, { "name": "Italy", "code": "IT", "iban": "IT77R0300203280648419668253" }, { "name": "Latvia", "code": "LV", "iban": "LV80BANK0000435195001" }, { "name": "Lithuania", "code": "LT", "iban": "LT275168179993645428" }, { "name": "Luxembourg", "code": "LU", "iban": "LU350106814331716425" }, { "name": "Malta", "code": "MT", "iban": "MT54WLCI12377529685589454747835" }, { "name": "Netherlands", "code": "NL", "iban": "NL13INGB6755037397" }, { "name": "Poland", "code": "PL", "iban": "PL06109024023962236263666664" }, { "name": "Portugal", "code": "PT", "iban": "PT26003506516995234369482" }, { "name": "Czech Republic", "code": "CZ", "iban": "CZ1350515343291243261222" }, { "name": "Romania", "code": "RO", "iban": "RO64RZBR2335521926768262" }, { "name": "Slovakia", "code": "SK", "iban": "SK6053419589142643828262" }, { "name": "Slovenia", "code": "SI", "iban": "SI97975426678332786" }, { "name": "Spain", "code": "ES", "iban": "ES7231904977492569944158" }, { "name": "Sweden", "code": "SE", "iban": "SE4949996195749755572136" }, { "name": "Hungary", "code": "HU", "iban": "HU42117730161111101800000000" }, { "name": "Norway", "code": "NO", "iban": "NO9386011117947" }, { "name": "Liechtenstein", "code": "LI", "iban": "LI7008800683146527484" }, { "name": "Iceland", "code": "IS", "iban": "IS140159260076545510730339" }, { "name": "Switzerland", "code": "CH", "iban": "CH4789144623328263139" }, { "name": "United Kingdom", "code": "GB", "iban": "GB09BARC20040416289669" }, { "name": "Monaco", "code": "MC", "iban": "MC2112739000407179846124F08" }, { "name": "Andorra", "code": "AD", "iban": "AD5127638574262995775744" }, { "name": "San Marino", "code": "SM", "iban": "SM86U0322509800000000270100" }, { "name": "Holy See (Vatican City State)", "code": "VA", "iban": "VA59001123000012345678" }];
// this.initSepaForm();
}
ngOnInit() {
this.initSepaForm();
this.sepaForm.valueChanges.subscribe(() => {
// if (this.sepaForm.valid) {
const bonificoSepa = {
iban: this.sepaForm.get('iban').value,
delegato: this.sepaForm.get('existsDelegatoRiscossione').value,
delegatoRiscossione: this.sepaForm.get('existsDelegatoRiscossione').value ? this.delegato : null,
};
const isFormValid = this.sepaForm.valid;
const isFormDelegatoValid = this.sepaForm.get('existsDelegatoRiscossione').value === true ? this.isDelegatoValid : true;
const isValid = isFormValid && isFormDelegatoValid;
this.bonificoSepaReady.emit({ bonifico: bonificoSepa, isValid });
//}
});
}
initSepaForm() {
var _a;
this.sepaForm = new FormGroup({
existsDelegatoRiscossione: new FormControl(this.bonificoSepa != null ? this.bonificoSepa.delegato : false, [Validators.required]),
iban: new FormControl((_a = this.bonificoSepa) === null || _a === void 0 ? void 0 : _a.iban, this.ibanValidators),
});
}
onValidateSepaPersonaFisica() {
this.validateSepaPersonaFisicaEmitter.emit();
}
onExistsDelegatoRiscossioneChange(tipo) {
if (!tipo.value) {
this.resetEstremiPersonaFisicaSepaFormEmitter.emit();
}
}
sepaCountriesValidator() {
return (form) => {
const iban = form.value;
if (!iban || (iban === null || iban === void 0 ? void 0 : iban.length) < 2) {
return null;
}
const countryCode = iban.substring(0, 2);
if (!this.sepaCountries.some((element) => element.code === countryCode)) {
return { ibanExtraSepa: true };
}
return null;
};
}
onDelegatoRiscossioneReady(event) {
this.delegato = event.persona;
this.isDelegatoValid = event.isValid;
this.personaFisicaEmitter.emit({ persona: event.persona, isValid: event.isValid });
}
convertToUppercase(value) {
this.sepaForm.get('iban').setValue(value.toUpperCase());
}
}
BonificoSepaComponent.decorators = [
{ type: Component, args: [{
selector: "lib-bonifico-sepa",
template: "<form [formGroup]=\"sepaForm\" [ngxsForm]=\"sepaFormPath\">\r\n\t<div class=\"row\">\r\n\t\t<div class=\"col-md-8\">\r\n\t\t\t<label id=\"existsDelegatoRiscossioneLabel\">{{ \"exists-delegato-riscossione\" | traduzione }}</label>\r\n\t\t\t<mat-radio-group class=\"radio-group\" aria-labelledby=\"existsDelegatoRiscossioneLabel\"\r\n\t\t\t\t\t\t\t\t\t\t\t formControlName=\"existsDelegatoRiscossione\"\r\n\t\t\t\t\t\t\t\t\t\t\t (change)=\"onExistsDelegatoRiscossioneChange($event)\">\r\n\t\t\t\t<mat-radio-button class=\"radio-button pl-2\" [value]=\"true\">\r\n\t\t\t\t\t{{ \"si\" | traduzione }}\r\n\t\t\t\t</mat-radio-button>\r\n\t\t\t\t<mat-radio-button class=\"radio-button pl-2\" [value]=\"false\">\r\n\t\t\t\t\t{{ \"no\" | traduzione }}\r\n\t\t\t\t</mat-radio-button>\r\n\t\t\t</mat-radio-group>\r\n\t\t\t<br/>\r\n\t\t\t<mat-hint *infoTip=\"'exists-delegato-riscossione'\"></mat-hint>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div *ngIf=\"sepaForm.controls['existsDelegatoRiscossione'].value\" class=\"row mt-3\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<div class=\"row mt-4\">\r\n\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t<lib-estremi-persona-fisica [ngxsFormPath]=\"estremiPFSepaFormPath\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[province]=\"province\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[nazioni]=\"nazioni\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[isPersonaFisicaValid]=\"isPersonaFisicaSepaValid\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[personaFisica]=\"bonificoSepa?.delegatoRiscossione\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[viewSessoPF]=\"viewSessoPF\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(validatePersonaFisicaEmitter)=\"onValidateSepaPersonaFisica()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(personaFisicaEmitter)=\"onDelegatoRiscossioneReady($event)\">\r\n\t\t\t\t\t</lib-estremi-persona-fisica>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<lib-dati-residenza [validateAndGetResidenza]=\"validateAndGetResidenza\"></lib-dati-residenza>\r\n\t</div>\r\n\t</div>\r\n\r\n\t<div class=\"row my-4 mt-4\">\r\n\t\t<div class=\"col-md-4\">\r\n\t\t\t<mat-form-field>\r\n\t\t\t\t<input matInput placeholder=\"{{ 'required' | traduzione }}{{ 'codice-iban' | traduzione }}\"\r\n\t\t\t\t\tformControlName=\"iban\"\r\n\t\t\t\t\t(input)=\"convertToUppercase($event.target.value)\"/>\r\n\t\t\t\t<mat-error *ngIf=\"sepaForm.controls['iban'].invalid\">\r\n\t\t\t\t\t{{ getErrorMessage(sepaForm.controls['iban']) | traduzione }}\r\n\t\t\t\t</mat-error>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t</div>\r\n</form>\r\n",
styles: [""]
},] }
];
BonificoSepaComponent.ctorParameters = () => [];
BonificoSepaComponent.propDecorators = {
bonificoSepa: [{ type: Input }],
nazioni: [{ type: Input }],
province: [{ type: Input }],
isPersonaFisicaSepaValid: [{ type: Input }],
sepaFormPath: [{ type: Input }],
estremiPFSepaFormPath: [{ type: Input }],
viewSessoPF: [{ type: Input }],
validateAndGetResidenza: [{ type: Input }],
validateSepaPersonaFisicaEmitter: [{ type: Output }],
resetEstremiPersonaFisicaSepaFormEmitter: [{ type: Output }],
bonificoSepaReady: [{ type: Output }],
personaFisicaEmitter: [{ type: Output }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9uaWZpY28tc2VwYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiRDovUHJvZ2V0dGkvREFHL3NvcmdlbnRpL2dpdGxhYi10ZXJuaS9jb21tb24tY29tcG9uZW50LWxpYi9wcm9qZWN0cy9wb3J0YWwtY29tbW9uLWNvbXBvbmVudC1saWIvc3JjLyIsInNvdXJjZXMiOlsibGliL21vZGFsaXRhLXBhZ2FtZW50by9jb21wb25lbnRzL2JvbmlmaWNvLXNlcGEvYm9uaWZpY28tc2VwYS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQWtCLFdBQVcsRUFBRSxTQUFTLEVBQWUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEcsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBRXRFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFRdkMsTUFBTSxPQUFPLHFCQUFxQjtJQWtEakM7UUE3QkEsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFNN0IscUNBQWdDLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUc1RCw2Q0FBd0MsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBR3BFLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFxRCxDQUFDO1FBRzFGLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUF5RCxDQUFDO1FBSWpHLG9CQUFlLEdBQUcsZUFBZSxDQUFDO1FBRWxDLG1CQUFjLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFFdkYsa0JBQWEsR0FBRyxDQUFDLEVBQUMsTUFBTSxFQUFDLFNBQVMsRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxzQkFBc0IsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFNBQVMsRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxrQkFBa0IsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFVBQVUsRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyx3QkFBd0IsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFFBQVEsRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyw4QkFBOEIsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFNBQVMsRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyx1QkFBdUIsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFNBQVMsRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxvQkFBb0IsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFNBQVMsRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxzQkFBc0IsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFNBQVMsRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxvQkFBb0IsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFFBQVEsRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyw2QkFBNkIsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFNBQVMsRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyx3QkFBd0IsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFFBQVEsRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyw2QkFBNkIsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFNBQVMsRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyx3QkFBd0IsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyw2QkFBNkIsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFFBQVEs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QUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7OztZQXhIRCxTQUFTLFNBQUM7Z0JBQ1YsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IscS9FQUE2Qzs7YUFFN0M7Ozs7MkJBR0MsS0FBSztzQkFHTCxLQUFLO3VCQUdMLEtBQUs7dUNBR0wsS0FBSzsyQkFHTCxLQUFLO29DQUdMLEtBQUs7MEJBR0wsS0FBSztzQ0FHTCxLQUFLOytDQUdMLE1BQU07dURBR04sTUFBTTtnQ0FHTixNQUFNO21DQUdOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9yc30gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7Z2V0RXJyb3JNZXNzYWdlfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzLW1lc3NhZ2VzLnV0aWxzJztcclxuaW1wb3J0IHtEYXRpUGVyc29uYUZpc2ljYU1vZGVsLCBMb2NhbGl0YU1vZGVsLCBOYXppb25lTW9kZWwsIFZlcmlmaWNhUGZSZXNwb25zZURUT30gZnJvbSBcIi4uLy4uL21vZGVscy9lc3RyZW1pLXBlcnNvbmEtZmlzaWNhLm1vZGVsXCI7XHJcbmltcG9ydCB7aWJhblZhbGlkYXRvcn0gZnJvbSBcIm5neC1pYmFuXCI7XHJcbmltcG9ydCB7Qm9uaWZpY29TZXBhTW9kZWx9IGZyb20gXCIuLi8uLi9tb2RlbHMvYm9uaWZpY28tc2VwYS5tb2RlbFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6IFwibGliLWJvbmlmaWNvLXNlcGFcIixcclxuXHR0ZW1wbGF0ZVVybDogXCIuL2JvbmlmaWNvLXNlcGEuY29tcG9uZW50Lmh0bWxcIixcclxuXHRzdHlsZVVybHM6IFtcIi4vYm9uaWZpY28tc2VwYS5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJvbmlmaWNvU2VwYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0Ym9uaWZpY29TZXBhOiBCb25pZmljb1NlcGFNb2RlbDtcclxuXHJcblx0QElucHV0KClcclxuXHRuYXppb25pOiBOYXppb25lTW9kZWxbXTtcclxuXHJcblx0QElucHV0KClcclxuXHRwcm92aW5jZTogTG9jYWxpdGFNb2RlbFtdO1xyXG5cclxuXHRASW5wdXQoKVxyXG5cdGlzUGVyc29uYUZpc2ljYVNlcGFWYWxpZDogYm9vbGVhbjtcclxuXHJcblx0QElucHV0KClcclxuXHRzZXBhRm9ybVBhdGg6IHN0cmluZztcclxuXHJcblx0QElucHV0KClcclxuXHRlc3RyZW1pUEZTZXBhRm9ybVBhdGg6IHN0cmluZztcclxuXHJcblx0QElucHV0KClcclxuXHR2aWV3U2Vzc29QRjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHRASW5wdXQoKVxyXG5cdHZhbGlkYXRlQW5kR2V0UmVzaWRlbnphOiBWZXJpZmljYVBmUmVzcG9uc2VEVE87XHJcblxyXG5cdEBPdXRwdXQoKVxyXG5cdHZhbGlkYXRlU2VwYVBlcnNvbmFGaXNpY2FFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuXHRAT3V0cHV0KClcclxuXHRyZXNldEVzdHJlbWlQZXJzb25hRmlzaWNhU2VwYUZvcm1FbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuXHRAT3V0cHV0KClcclxuXHRib25pZmljb1NlcGFSZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBib25pZmljbzogQm9uaWZpY29TZXBhTW9kZWwsIGlzVmFsaWQ6IGJvb2xlYW4gfT4oKTtcclxuXHJcblx0QE91dHB1dCgpXHJcblx0cGVyc29uYUZpc2ljYUVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcGVyc29uYTogRGF0aVBlcnNvbmFGaXNpY2FNb2RlbCwgaXNWYWxpZDogYm9vbGVhbiB9PigpO1xyXG5cclxuXHRzZXBhRm9ybTogRm9ybUdyb3VwO1xyXG5cclxuXHRnZXRFcnJvck1lc3NhZ2UgPSBnZXRFcnJvck1lc3NhZ2U7XHJcblxyXG5cdGliYW5WYWxpZGF0b3JzID0gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMuc2VwYUNvdW50cmllc1ZhbGlkYXRvcigpLCBpYmFuVmFsaWRhdG9yKCldO1xyXG5cclxuXHRzZXBhQ291bnRyaWVzID0gW3tcIm5hbWVcIjpcIkF1c3RyaWFcIixcImNvZGVcIjpcIkFUXCIsXCJpYmFuXCI6XCJBVDQ5MzIwMDA1NjU2MzI4OTk3NFwifSx7XCJuYW1lXCI6XCJCZWxnaXVtXCIsXCJjb2RlXCI6XCJCRVwiLFwiaWJhblwiOlwiQkU2NTU2MTY4OTUyODg5NlwifSx7XCJuYW1lXCI6XCJCdWxnYXJpYVwiLFwiY29kZVwiOlwiQkdcIixcImliYW5cIjpcIkJHOTJUVEJCOTQwMDY1NTkyNjYxODhcIn0se1wibmFtZVwiOlwiQ3lwcnVzXCIsXCJjb2RlXCI6XCJDWVwiLFwiaWJhblwiOlwiQ1k1MjY2NTU2MTQxNjc3MjM2OTQ1Nzg2NDQzN1wifSx7XCJuYW1lXCI6XCJDcm9hdGlhXCIsXCJjb2RlXCI6XCJIUlwiLFwiaWJhblwiOlwiSFI1NTIzNDAwMDk4NjYzMjY2MjQ2XCJ9LHtcIm5hbWVcIjpcIkRlbm1hcmtcIixcImNvZGVcIjpcIkRLXCIsXCJpYmFuXCI6XCJESzI1NTA1MTU5MTgzMjg1MjhcIn0se1wibmFtZVwiOlwiRXN0b25pYVwiLFwiY29kZVwiOlwiRUVcIixcImliYW5cIjpcIkVFNTkxMjg2NjUzODY3NDkxNzg2XCJ9LHtcIm5hbWVcIjpcIkZpbmxhbmRcIixcImNvZGVcIjpcIkZJXCIsXCJpYmFuXCI6XCJGSTg0Nzk0ODY5MTE3ODg1OThcIn0se1wibmFtZVwiOlwiRnJhbmNlXCIsXCJjb2RlXCI6XCJGUlwiLFwiaWJhblwiOlwiRlI4NTE0NTA4MDAwNzA3MjM5NDg4NzM4SjIxXCJ9LHtcIm5hbWVcIjpcIkdlcm1hbnlcIixcImNvZGVcIjpcIkRFXCIsXCJpYmFuXCI6XCJERTE0NTAwMTA1MTc0MTg1NDg0MTc3XCJ9LHtcIm5hbWVcIjpcIkdyZWVjZVwiLFwiY29kZVwiOlwiR1JcIixcImliYW5cIjpcIkdSOTIwMTQ5NDQ5MTU4ODE0MTU0OTUzMTc5OVwifSx7XCJuYW1lXCI6XCJJcmVsYW5kXCIsXCJjb2RlXCI6XCJJRVwiLFwiaWJhblwiOlwiSUUyOUFJQks5MzExNTIxMjM0NTY3OFwifSx7XCJuYW1lXCI6XCJJdGFseVwiLFwiY29kZVwiOlwiSVRcIixcImliYW5cIjpcIklUNzdSMDMwMDIwMzI4MDY0ODQxOTY2ODI1M1wifSx7XCJuYW1lXCI6XCJMYXR2aWFcIixcImNvZGVcIjpcIkxWXCIsXCJpYmFuXCI6XCJMVjgwQkFOSzAwMDA0MzUxOTUwMDFcIn0se1wibmFtZVwiOlwiTGl0aHVhbmlhXCIsXCJjb2RlXCI6XCJMVFwiLFwiaWJhblwiOlwiTFQyNzUxNjgxNzk5OTM2NDU0MjhcIn0se1wibmFtZVwiOlwiTHV4ZW1ib3VyZ1wiLFwiY29kZVwiOlwiTFVcIixcImliYW5cIjpcIkxVMzUwMTA2ODE0MzMxNzE2NDI1XCJ9LHtcIm5hbWVcIjpcIk1hbHRhXCIsXCJjb2RlXCI6XCJNVFwiLFwiaWJhblwiOlwiTVQ1NFdMQ0kxMjM3NzUyOTY4NTU4OTQ1NDc0NzgzNVwifSx7XCJuYW1lXCI6XCJOZXRoZXJsYW5kc1wiLFwiY29kZVwiOlwiTkxcIixcImliYW5cIjpcIk5MMTNJTkdCNjc1NTAzNzM5N1wifSx7XCJuYW1lXCI6XCJQb2xhbmRcIixcImNvZGVcIjpcIlBMXCIsXCJpYmFuXCI6XCJQTDA2MTA5MDI0MDIzOTYyMjM2MjYzNjY2NjY0XCJ9LHtcIm5hbWVcIjpcIlBvcnR1Z2FsXCIsXCJjb2RlXCI6XCJQVFwiLFwiaWJhblwiOlwiUFQyNjAwMzUwNjUxNjk5NTIzNDM2OTQ4MlwifSx7XCJuYW1lXCI6XCJDemVjaCBSZXB1YmxpY1wiLFwiY29kZVwiOlwiQ1pcIixcImliYW5cIjpcIkNaMTM1MDUxNTM0MzI5MTI0MzI2MTIyMlwifSx7XCJuYW1lXCI6XCJSb21hbmlhXCIsXCJjb2RlXCI6XCJST1wiLFwiaWJhblwiOlwiUk82NFJaQlIyMzM1NTIxOTI2NzY4MjYyXCJ9LHtcIm5hbWVcIjpcIlNsb3Zha2lhXCIsXCJjb2RlXCI6XCJTS1wiLFwiaWJhblwiOlwiU0s2MDUzNDE5NTg5MTQyNjQzODI4MjYyXCJ9LHtcIm5hbWVcIjpcIlNsb3ZlbmlhXCIsXCJjb2RlXCI6XCJTSVwiLFwiaWJhblwiOlwiU0k5Nzk3NTQyNjY3ODMzMjc4NlwifSx7XCJuYW1lXCI6XCJTcGFpblwiLFwiY29kZVwiOlwiRVNcIixcImliYW5cIjpcIkVTNzIzMTkwNDk3NzQ5MjU2OTk0NDE1OFwifSx7XCJuYW1lXCI6XCJTd2VkZW5cIixcImNvZGVcIjpcIlNFXCIsXCJpYmFuXCI6XCJTRTQ5NDk5OTYxOTU3NDk3NTU1NzIxMzZcIn0se1wibmFtZVwiOlwiSHVuZ2FyeVwiLFwiY29kZVwiOlwiSFVcIixcImliYW5cIjpcIkhVNDIxMTc3MzAxNjExMTExMDE4MDAwMDAwMDBcIn0se1wibmFtZVwiOlwiTm9yd2F5XCIsXCJjb2RlXCI6XCJOT1wiLFwiaWJhblwiOlwiTk85Mzg2MDExMTE3OTQ3XCJ9LHtcIm5hbWVcIjpcIkxpZWNodGVuc3RlaW5cIixcImNvZGVcIjpcIkxJXCIsXCJpYmFuXCI6XCJMSTcwMDg4MDA2ODMxNDY1Mjc0ODRcIn0se1wibmFtZVwiOlwiSWNlbGFuZFwiLFwiY29kZVwiOlwiSVNcIixcImliYW5cIjpcIklTMTQwMTU5MjYwMDc2NTQ1NTEwNzMwMzM5XCJ9LHtcIm5hbWVcIjpcIlN3aXR6ZXJsYW5kXCIsXCJjb2RlXCI6XCJDSFwiLFwiaWJhblwiOlwiQ0g0Nzg5MTQ0NjIzMzI4MjYzMTM5XCJ9LHtcIm5hbWVcIjpcIlVuaXRlZCBLaW5nZG9tXCIsXCJjb2RlXCI6XCJHQlwiLFwiaWJhblwiOlwiR0IwOUJBUkMyMDA0MDQxNjI4OTY2OVwifSx7XCJuYW1lXCI6XCJNb25hY29cIixcImNvZGVcIjpcIk1DXCIsXCJpYmFuXCI6XCJNQzIxMTI3MzkwMDA0MDcxNzk4NDYxMjRGMDhcIn0se1wibmFtZVwiOlwiQW5kb3JyYVwiLFwiY29kZVwiOlwiQURcIixcImliYW5cIjpcIkFENTEyNzYzODU3NDI2Mjk5NTc3NTc0NFwifSx7XCJuYW1lXCI6XCJTYW4gTWFyaW5vXCIsXCJjb2RlXCI6XCJTTVwiLFwiaWJhblwiOlwiU004NlUwMzIyNTA5ODAwMDAwMDAwMjcwMTAwXCJ9LHtcIm5hbWVcIjpcIkhvbHkgU2VlIChWYXRpY2FuIENpdHkgU3RhdGUpXCIsXCJjb2RlXCI6XCJWQVwiLFwiaWJhblwiOlwiVkE1OTAwMTEyMzAwMDAxMjM0NTY3OFwifV07XHJcblxyXG5cdGRlbGVnYXRvOiBEYXRpUGVyc29uYUZpc2ljYU1vZGVsO1xyXG5cclxuXHRpc0RlbGVnYXRvVmFsaWQ6IGJvb2xlYW47XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkge1xyXG5cdFx0Ly8gdGhpcy5pbml0U2VwYUZvcm0oKTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5pbml0U2VwYUZvcm0oKTtcclxuXHJcblx0XHR0aGlzLnNlcGFGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAvLyBpZiAodGhpcy5zZXBhRm9ybS52YWxpZCkge1xyXG4gICAgICAgIGNvbnN0IGJvbmlmaWNvU2VwYTogQm9uaWZpY29TZXBhTW9kZWwgPSB7XHJcblx0XHRcdFx0XHRpYmFuOiB0aGlzLnNlcGFGb3JtLmdldCgnaWJhbicpLnZhbHVlLFxyXG5cdFx0XHRcdFx0ZGVsZWdhdG86IHRoaXMuc2VwYUZvcm0uZ2V0KCdleGlzdHNEZWxlZ2F0b1Jpc2Nvc3Npb25lJykudmFsdWUsXHJcblx0XHRcdFx0XHRkZWxlZ2F0b1Jpc2Nvc3Npb25lOiB0aGlzLnNlcGFGb3JtLmdldCgnZXhpc3RzRGVsZWdhdG9SaXNjb3NzaW9uZScpLnZhbHVlID8gdGhpcy5kZWxlZ2F0byA6IG51bGwsXHJcblx0XHRcdFx0fTtcclxuXHJcblx0XHRcdFx0Y29uc3QgaXNGb3JtVmFsaWQgPSB0aGlzLnNlcGFGb3JtLnZhbGlkO1xyXG5cdFx0XHRcdGNvbnN0IGlzRm9ybURlbGVnYXRvVmFsaWQgPSB0aGlzLnNlcGFGb3JtLmdldCgnZXhpc3RzRGVsZWdhdG9SaXNjb3NzaW9uZScpLnZhbHVlID09PSB0cnVlID8gdGhpcy5pc0RlbGVnYXRvVmFsaWQgOiB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGlzVmFsaWQgPSBpc0Zvcm1WYWxpZCAmJiBpc0Zvcm1EZWxlZ2F0b1ZhbGlkO1xyXG5cclxuICAgICAgICB0aGlzLmJvbmlmaWNvU2VwYVJlYWR5LmVtaXQoeyBib25pZmljbzogYm9uaWZpY29TZXBhLCBpc1ZhbGlkIH0pO1xyXG4gICAgICAgLy99XHJcbiAgICB9KTtcclxuXHR9XHJcblxyXG5cdGluaXRTZXBhRm9ybSgpOiB2b2lkIHtcclxuXHRcdHRoaXMuc2VwYUZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcclxuXHRcdFx0ZXhpc3RzRGVsZWdhdG9SaXNjb3NzaW9uZTogbmV3IEZvcm1Db250cm9sKHRoaXMuYm9uaWZpY29TZXBhICE9IG51bGwgPyB0aGlzLmJvbmlmaWNvU2VwYS5kZWxlZ2F0byA6IGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG5cdFx0XHRpYmFuOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5ib25pZmljb1NlcGE/LmliYW4sIHRoaXMuaWJhblZhbGlkYXRvcnMpLFxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRvblZhbGlkYXRlU2VwYVBlcnNvbmFGaXNpY2EoKTogdm9pZCB7XHJcblx0XHR0aGlzLnZhbGlkYXRlU2VwYVBlcnNvbmFGaXNpY2FFbWl0dGVyLmVtaXQoKTtcclxuXHR9XHJcblxyXG5cdG9uRXhpc3RzRGVsZWdhdG9SaXNjb3NzaW9uZUNoYW5nZSh0aXBvKTogdm9pZCB7XHJcblx0XHRpZiAoIXRpcG8udmFsdWUpIHtcclxuXHRcdFx0dGhpcy5yZXNldEVzdHJlbWlQZXJzb25hRmlzaWNhU2VwYUZvcm1FbWl0dGVyLmVtaXQoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHNlcGFDb3VudHJpZXNWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xyXG5cdFx0cmV0dXJuIChmb3JtOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuXHRcdCAgY29uc3QgaWJhbiA9IGZvcm0udmFsdWU7XHJcblx0XHQgIGlmICghaWJhbiB8fCBpYmFuPy5sZW5ndGggPCAyKSB7XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0ICB9XHJcblxyXG5cdFx0ICBjb25zdCBjb3VudHJ5Q29kZTogc3RyaW5nID0gaWJhbi5zdWJzdHJpbmcoMCwgMik7XHJcblx0XHQgIGlmICghdGhpcy5zZXBhQ291bnRyaWVzLnNvbWUoKGVsZW1lbnQpID0+IGVsZW1lbnQuY29kZSA9PT0gY291bnRyeUNvZGUpKSB7XHJcblx0XHRcdHJldHVybiB7IGliYW5FeHRyYVNlcGE6IHRydWUgfTtcclxuXHRcdCAgfVxyXG5cclxuXHRcdCAgcmV0dXJuIG51bGw7XHJcblx0XHR9O1xyXG5cdH1cclxuXHJcblx0b25EZWxlZ2F0b1Jpc2Nvc3Npb25lUmVhZHkoZXZlbnQ6IHsgcGVyc29uYTogRGF0aVBlcnNvbmFGaXNpY2FNb2RlbCwgaXNWYWxpZDogYm9vbGVhbiB9KXtcclxuXHRcdHRoaXMuZGVsZWdhdG8gPSBldmVudC5wZXJzb25hO1xyXG5cdFx0dGhpcy5pc0RlbGVnYXRvVmFsaWQgPSBldmVudC5pc1ZhbGlkO1xyXG5cdFx0dGhpcy5wZXJzb25hRmlzaWNhRW1pdHRlci5lbWl0KHsgcGVyc29uYTogZXZlbnQucGVyc29uYSwgaXNWYWxpZDogZXZlbnQuaXNWYWxpZCB9KTtcclxuXHR9XHJcblxyXG5cdGNvbnZlcnRUb1VwcGVyY2FzZSh2YWx1ZTogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnNlcGFGb3JtLmdldCgnaWJhbicpLnNldFZhbHVlKHZhbHVlLnRvVXBwZXJDYXNlKCkpO1xyXG5cdH1cclxuXHJcbn1cclxuIl19