ng-easycommerce 0.0.625 → 0.0.627

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.
@@ -11,6 +11,17 @@ var __extends = (this && this.__extends) || (function () {
11
11
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
12
12
  };
13
13
  })();
14
+ var __assign = (this && this.__assign) || function () {
15
+ __assign = Object.assign || function(t) {
16
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
17
+ s = arguments[i];
18
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
19
+ t[p] = s[p];
20
+ }
21
+ return t;
22
+ };
23
+ return __assign.apply(this, arguments);
24
+ };
14
25
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
15
26
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16
27
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -18,16 +29,18 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
18
29
  return c > 3 && r && Object.defineProperty(target, key, r), r;
19
30
  };
20
31
  import { Component, Input, Output, EventEmitter } from '@angular/core';
21
- import { FormGroup, FormBuilder, Validators } from '@angular/forms';
32
+ import { FormGroup, FormBuilder, Validators, ValidatorFn, AbstractControl, ValidationErrors } from '@angular/forms';
22
33
  import { Router } from "@angular/router";
23
34
  import { ComponentHelper } from '../../../classes/component-helper';
24
35
  import { AnalyticsService } from '../../../services/analytics.service';
25
36
  import { AuthService } from '../../../services/auth.service';
26
37
  import { ToastService } from '../../../utils/toast.service';
27
38
  import { ChannelConfigService } from '../../../services/channel-config.service';
39
+ import { BehaviorSubject } from 'rxjs';
40
+ import { Constants } from '../../../core.consts';
28
41
  var RegisterFormEcComponent = /** @class */ (function (_super) {
29
42
  __extends(RegisterFormEcComponent, _super);
30
- function RegisterFormEcComponent(authService, toastr, router, analyticsService, formBuilder, channelConfigService) {
43
+ function RegisterFormEcComponent(authService, toastr, router, analyticsService, formBuilder, channelConfigService, consts) {
31
44
  var _this = _super.call(this) || this;
32
45
  _this.authService = authService;
33
46
  _this.toastr = toastr;
@@ -35,6 +48,13 @@ var RegisterFormEcComponent = /** @class */ (function (_super) {
35
48
  _this.analyticsService = analyticsService;
36
49
  _this.formBuilder = formBuilder;
37
50
  _this.channelConfigService = channelConfigService;
51
+ _this.consts = consts;
52
+ _this.provincesSubject = new BehaviorSubject([]);
53
+ _this.countriesSubject = new BehaviorSubject([]);
54
+ _this.documentTypesSubject = new BehaviorSubject([]);
55
+ _this.provinces$ = _this.provincesSubject.asObservable();
56
+ _this.countries$ = _this.countriesSubject.asObservable();
57
+ _this.documentTypes$ = _this.documentTypesSubject.asObservable();
38
58
  _this.isLogged = true;
39
59
  _this.darkMode = false;
40
60
  _this.redirect = true;
@@ -76,7 +96,8 @@ var RegisterFormEcComponent = /** @class */ (function (_super) {
76
96
  return;
77
97
  }
78
98
  if (_this.registerForm.valid) {
79
- _this.authService.signUp(_this.registerForm.value).toPromise().then(function (res) {
99
+ var normalizedData = _this.normalizeRegisterData(_this.registerForm.value);
100
+ _this.authService.signUp(normalizedData).toPromise().then(function (res) {
80
101
  _this.register_loading = false;
81
102
  var messageKey;
82
103
  switch (true) {
@@ -118,6 +139,18 @@ var RegisterFormEcComponent = /** @class */ (function (_super) {
118
139
  _this.register_loading = false;
119
140
  }
120
141
  };
142
+ _this.onCountrySelected = function (value) {
143
+ $('#selectOpPais').attr('disabled', true);
144
+ _this.registerForm.controls['countryCode'].setValue(value);
145
+ _this.registerForm.controls['provinceCode'].setValue('');
146
+ value != '' && _this.provincesSubject.next(_this.countriesSubject.value.find(function (country) { return country.code == value; }).provinces);
147
+ };
148
+ _this.onGenderSelected = function (value) {
149
+ $('#selectOpSexo').attr('disabled', true);
150
+ };
151
+ _this.onProvincesSelected = function (value) {
152
+ $('#selectOpProvincia').attr('disabled', true);
153
+ };
121
154
  _this.ecOnConstruct();
122
155
  return _this;
123
156
  }
@@ -131,7 +164,40 @@ var RegisterFormEcComponent = /** @class */ (function (_super) {
131
164
  plainPassword2: ['', Validators.required],
132
165
  newsletter: [false],
133
166
  terms: ['', Validators.required],
134
- birthday: [''],
167
+ birthday: [null, [this.optionalMaxLengthValidator(11)]],
168
+ // Dirección (opcional, pero si se envía, se recomienda enviar todos los campos internos)
169
+ countryCode: [''],
170
+ provinceCode: [null],
171
+ street: [null],
172
+ city: [''],
173
+ postcode: [''],
174
+ // Datos empresa (opcionales)
175
+ companyName: [''],
176
+ legalDenomination: [''],
177
+ // Datos personales adicionales (opcionales)
178
+ gender: [null],
179
+ phoneNumber: ['', [Validators.pattern('[0-9]+')]],
180
+ subscribedToNewsletter: [false],
181
+ documentType: [null],
182
+ documentNumber: [''],
183
+ // Comentarios y contacto (opcionales)
184
+ comments: ['', []],
185
+ contactFirstName: ['', []],
186
+ contactLastName: ['', []],
187
+ contactCompanyPosition: ['', []],
188
+ contactEmail: ['', []],
189
+ contactDocumentType: ['', []],
190
+ contactDocumentNumber: ['', []],
191
+ }, {
192
+ validators: [this.direccionCompletaValidator()]
193
+ });
194
+ this.authService.getCountriesData().then(function (res) {
195
+ _this.countriesSubject.next(res);
196
+ var documentTypes = [];
197
+ res.map(function (paises) {
198
+ _this.consts.getLocale().toLocaleLowerCase().includes(paises.code.toLocaleLowerCase()) && (documentTypes = paises.documentTypes || []);
199
+ });
200
+ _this.documentTypesSubject.next(documentTypes);
135
201
  });
136
202
  this.channelConfigService.channelConfig$.subscribe(function (config) {
137
203
  if (config && config.isAccountVerificationRequired !== undefined) {
@@ -149,8 +215,42 @@ var RegisterFormEcComponent = /** @class */ (function (_super) {
149
215
  });
150
216
  this.ecOnInit();
151
217
  };
152
- RegisterFormEcComponent.prototype.prueba = function () {
153
- this.toastr.showPersistent('hola');
218
+ RegisterFormEcComponent.prototype.direccionCompletaValidator = function () {
219
+ return function (control) {
220
+ var _a, _b, _c, _d, _e;
221
+ var street = (_a = control.get('street')) === null || _a === void 0 ? void 0 : _a.value;
222
+ var city = (_b = control.get('city')) === null || _b === void 0 ? void 0 : _b.value;
223
+ var provinceCode = (_c = control.get('provinceCode')) === null || _c === void 0 ? void 0 : _c.value;
224
+ var countryCode = (_d = control.get('countryCode')) === null || _d === void 0 ? void 0 : _d.value;
225
+ var postcode = (_e = control.get('postcode')) === null || _e === void 0 ? void 0 : _e.value;
226
+ var hasValue = function (val) { return val !== null && val !== undefined && val.toString().trim() !== ''; };
227
+ var anyFieldSet = [street, city, provinceCode, countryCode, postcode].some(hasValue);
228
+ var allFieldsSet = [street, city, provinceCode, countryCode, postcode].every(hasValue);
229
+ // Si al menos un campo de dirección está establecido, todos deben estarlo
230
+ // Si no hay ningún campo de dirección establecido, no se aplica la validación
231
+ if (anyFieldSet && !allFieldsSet) {
232
+ return { direccionIncompleta: true };
233
+ }
234
+ return null;
235
+ };
236
+ };
237
+ RegisterFormEcComponent.prototype.optionalMaxLengthValidator = function (max) {
238
+ return function (control) {
239
+ if (!control.value)
240
+ return null;
241
+ return control.value.length > max ? { maxLength: true } : null;
242
+ };
243
+ };
244
+ RegisterFormEcComponent.prototype.normalizeRegisterData = function (data) {
245
+ var normalizeString = function (val) {
246
+ return val === undefined || val === null || val.toString().trim() === '' ? null : val.toString().trim();
247
+ };
248
+ var normalizeBool = function (val) {
249
+ return typeof val === 'boolean' ? val : val === 'true' ? true : val === 'false' ? false : null;
250
+ };
251
+ return __assign(__assign({}, data), { birthday: normalizeString(data.birthday) || '', companyName: normalizeString(data.companyName), legalDenomination: normalizeString(data.legalDenomination), gender: normalizeString(data.gender), phoneNumber: normalizeString(data.phoneNumber), subscribedToNewsletter: normalizeBool(data.subscribedToNewsletter), documentType: normalizeString(data.documentType), documentNumber: normalizeString(data.documentNumber), comments: normalizeString(data.comments), contactFirstName: normalizeString(data.contactFirstName), contactLastName: normalizeString(data.contactLastName), contactCompanyPosition: normalizeString(data.contactCompanyPosition), contactEmail: normalizeString(data.contactEmail), contactDocumentType: normalizeString(data.contactDocumentType), contactDocumentNumber: normalizeString(data.contactDocumentNumber),
252
+ // Dirección
253
+ countryCode: normalizeString(data.countryCode), provinceCode: normalizeString(data.provinceCode), street: normalizeString(data.street), city: normalizeString(data.city), postcode: normalizeString(data.postcode) });
154
254
  };
155
255
  RegisterFormEcComponent.ctorParameters = function () { return [
156
256
  { type: AuthService },
@@ -158,7 +258,8 @@ var RegisterFormEcComponent = /** @class */ (function (_super) {
158
258
  { type: Router },
159
259
  { type: AnalyticsService },
160
260
  { type: FormBuilder },
161
- { type: ChannelConfigService }
261
+ { type: ChannelConfigService },
262
+ { type: Constants }
162
263
  ]; };
163
264
  __decorate([
164
265
  Input()
@@ -182,4 +283,4 @@ var RegisterFormEcComponent = /** @class */ (function (_super) {
182
283
  return RegisterFormEcComponent;
183
284
  }(ComponentHelper));
184
285
  export { RegisterFormEcComponent };
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L2F1dGgtZWMvcmVnaXN0ZXItZm9ybS1lYy9yZWdpc3Rlci1mb3JtLWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFPaEY7SUFBNkMsMkNBQWU7SUF1QnhELGlDQUNXLFdBQXdCLEVBQ3JCLE1BQW9CLEVBQ3ZCLE1BQWMsRUFDZCxnQkFBa0MsRUFDL0IsV0FBd0IsRUFDMUIsb0JBQTBDO1FBTnRELFlBUUksaUJBQU8sU0FFVjtRQVRVLGlCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3JCLFlBQU0sR0FBTixNQUFNLENBQWM7UUFDdkIsWUFBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHNCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDL0IsaUJBQVcsR0FBWCxXQUFXLENBQWE7UUFDMUIsMEJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtR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QjdDO1FBQVIsS0FBSyxFQUFFOzZEQUFrQjtJQUNqQjtRQUFSLEtBQUssRUFBRTs2REFBaUI7SUFDaEI7UUFBUixLQUFLLEVBQUU7NkRBQWlCO0lBQ2Y7UUFBVCxNQUFNLEVBQUU7MERBQTRCO0lBTDVCLHVCQUF1QjtRQUxuQyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsc0JBQXNCO1lBQ2hDLHMzRkFBOEM7O1NBRWpELENBQUM7T0FDVyx1QkFBdUIsQ0FzSW5DO0lBQUQsOEJBQUM7Q0FBQSxBQXRJRCxDQUE2QyxlQUFlLEdBc0kzRDtTQXRJWSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgQ29tcG9uZW50SGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi91dGlscy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IENoYW5uZWxDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2hhbm5lbC1jb25maWcuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLXJlZ2lzdGVyLWZvcm0tZWMnLFxuICAgIHRlbXBsYXRlVXJsOiAncmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ3JlZ2lzdGVyLWZvcm0tZWMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSZWdpc3RlckZvcm1FY0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEhlbHBlciBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHVibGljIGlzTG9nZ2VkOiBCb29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBkYXJrTW9kZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHJlZGlyZWN0ID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBjb21wbGV0ZSA9IHRydWU7XG4gICAgQE91dHB1dCgpIHJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHB1YmxpYyBzdWNjZXNzOiBCb29sZWFuID0gZmFsc2VcbiAgICBwdWJsaWMgY2FtcG9zcGVyc29uYWp1cmlkaWNhOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIHJlZ2lzdGVyX2xvYWRpbmc6IGJvb2xlYW47XG4gICAgcHVibGljIHJlZ2lzdGVyRm9ybTogRm9ybUdyb3VwO1xuICAgIHB1YmxpYyByZWdpc3Ryb1VzdWFyaW86IGFueSA9IHtcbiAgICAgICAgZmlyc3ROYW1lOiAnJyxcbiAgICAgICAgbGFzdE5hbWU6ICcnLFxuICAgICAgICBlbWFpbDogJycsXG4gICAgICAgIHBsYWluUGFzc3dvcmQ6ICcnLFxuICAgICAgICBwbGFpblBhc3N3b3JkMjogJycsXG4gICAgICAgIG5ld3NsZXR0ZXI6IGZhbHNlLFxuICAgICAgICB0ZXJtczogZmFsc2UsXG4gICAgICAgIGJpcnRoZGF5OiAnJywgLy8gTnVldm8gY2FtcG8gcGFyYSBlbCBjdW1wbGVhw7Fvc1xuICAgIH07XG4gICAgcHVibGljIGlzQWNjb3VudFZlcmlmaWNhdGlvblJlcXVpcmVkID0gZmFsc2U7XG4gICAgcHVibGljIGlzU2VuZFdlbGNvbWVFbWFpbCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCB0b2FzdHI6IFRvYXN0U2VydmljZSxcbiAgICAgICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwdWJsaWMgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgcHJpdmF0ZSBjaGFubmVsQ29uZmlnU2VydmljZTogQ2hhbm5lbENvbmZpZ1NlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5lY09uQ29uc3RydWN0KClcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcblxuICAgICAgICB0aGlzLnJlZ2lzdGVyRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgZmlyc3ROYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgbGFzdE5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICBlbWFpbDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIHBsYWluUGFzc3dvcmQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICBwbGFpblBhc3N3b3JkMjogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIG5ld3NsZXR0ZXI6IFtmYWxzZV0sXG4gICAgICAgICAgICB0ZXJtczogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIGJpcnRoZGF5OiBbJyddLCAvLyBDYW1wbyBubyBvYmxpZ2F0b3Jpb1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jaGFubmVsQ29uZmlnU2VydmljZS5jaGFubmVsQ29uZmlnJC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoY29uZmlnKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZyAmJiBjb25maWcuaXNBY2NvdW50VmVyaWZpY2F0aW9uUmVxdWlyZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQWNjb3VudFZlcmlmaWNhdGlvblJlcXVpcmVkID0gY29uZmlnLmlzQWNjb3VudFZlcmlmaWNhdGlvblJlcXVpcmVkO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNBY2NvdW50VmVyaWZpY2F0aW9uUmVxdWlyZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZyAmJiBjb25maWcuaXNTZW5kV2VsY29tZUVtYWlsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1NlbmRXZWxjb21lRW1haWwgPSBjb25maWcuaXNTZW5kV2VsY29tZUVtYWlsO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTZW5kV2VsY29tZUVtYWlsID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5lY09uSW5pdCgpXG5cbiAgICB9XG5cbiAgICBzZXRQcm9wID0gKHByb3AsIGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMucmVnaXN0cm9Vc3VhcmlvW3Byb3BdID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIH1cbiAgICByZWRpcmVjdEhvbWUgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nKVxuICAgIH1cblxuICAgIHJlZ2lzdGVyID0gKGV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJfbG9hZGluZyA9IHRydWU7XG4gICAgICAgIGlmICghdGhpcy5yZWdpc3RlckZvcm0udmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLnNob3coJ2ludmFsaWQtZm9ybScpO1xuICAgICAgICAgICAgdGhpcy5yZWdpc3Rlcl9sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZWdpc3Rlcl9sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMucmVnaXN0ZXJGb3JtLnZhbHVlLnBsYWluUGFzc3dvcmQgIT0gdGhpcy5yZWdpc3RlckZvcm0udmFsdWUucGxhaW5QYXNzd29yZDIpIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLnNob3coJ0xhcyBjb250cmFzZcOxYXMgbm8gY29pbmNpZGVuJyk7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyX2xvYWRpbmcgPSBmYWxzZVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlZ2lzdGVyRm9ybS52YWxpZCkge1xuICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5zaWduVXAodGhpcy5yZWdpc3RlckZvcm0udmFsdWUpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWdpc3Rlcl9sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlS2V5OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLmlzQWNjb3VudFZlcmlmaWNhdGlvblJlcXVpcmVkOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VLZXkgPSAncmVnaXN0ZXItb2snO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLmlzU2VuZFdlbGNvbWVFbWFpbDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlS2V5ID0gJ3JlZ2lzdGVyLXdlbGNvbWUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlS2V5ID0gJ3JlZ2lzdGVyLXN1Y2Nlc3MnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLnNob3dQZXJzaXN0ZW50KG1lc3NhZ2VLZXkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCdzaWduX3VwJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3ROYW1lOiB0aGlzLnJlZ2lzdGVyRm9ybS52YWx1ZS5maXJzdE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0TmFtZTogdGhpcy5yZWdpc3RlckZvcm0udmFsdWUubGFzdE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogdGhpcy5yZWdpc3RlckZvcm0udmFsdWUuZW1haWxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWR5LmVtaXQodHJ1ZSlcblxuICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZUtleSAhPT0gJ3JlZ2lzdGVyLW9rJyAmJiB0aGlzLnJlZGlyZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRm9ybS5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlZGlyZWN0ICYmIG1lc3NhZ2VLZXkgPT09ICdyZWdpc3Rlci1vaycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJ2hvbWUnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyX2xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLnNob3dQZXJzaXN0ZW50KCdFbCBlbWFpbCBpbmdyZXNhZG8geWEgc2UgZW5jdWVudHJhIHJlZ2lzdHJhZG8uJyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdFcnJvciBlbiBlbCByZWdpc3Ryby4gVnVlbHZhIGEgaW50ZW50YXJsbyBtw6FzIHRhcmRlLicpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnaW52YWxpZC1mb3JtJyk7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyX2xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcnVlYmEoKXtcbiAgICAgICAgdGhpcy50b2FzdHIuc2hvd1BlcnNpc3RlbnQoJ2hvbGEnKTtcbiAgICB9XG59Il19
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L2F1dGgtZWMvcmVnaXN0ZXItZm9ybS1lYy9yZWdpc3Rlci1mb3JtLWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEgsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBUWpEO0lBQTZDLDJDQUFlO0lBK0J4RCxpQ0FDVyxXQUF3QixFQUNyQixNQUFvQixFQUN2QixNQUFjLEVBQ2QsZ0JBQWtDLEVBQy9CLFdBQXdCLEVBQzFCLG9CQUEwQyxFQUMzQyxNQUFpQjtRQVA1QixZQVNJLGlCQUFPLFNBRVY7UUFWVSxpQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNy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ZSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUNwRSxZQUFZLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFDaEQsbUJBQW1CLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUM5RCxxQkFBcUIsRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1lBQ2xFLFlBQVk7WUFDWixXQUFXLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFDOUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQ2hELE1BQU0sRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUNwQyxJQUFJLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDaEMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQzFDO0lBQ04sQ0FBQzs7Z0JBMU51QixXQUFXO2dCQUNiLFlBQVk7Z0JBQ2YsTUFBTTtnQkFDSSxnQkFBZ0I7Z0JBQ2xCLFdBQVc7Z0JBQ0osb0JBQW9CO2dCQUNuQyxTQUFTOztJQTVCbkI7UUFBUixLQUFLLEVBQUU7NkRBQWtCO0lBQ2pCO1FBQVIsS0FBSyxFQUFFOzZEQUFpQjtJQUNoQjtRQUFSLEtBQUssRUFBRTs2REFBaUI7SUFDZjtRQUFULE1BQU0sRUFBRTswREFBNEI7SUFiNUIsdUJBQXVCO1FBTG5DLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxzQkFBc0I7WUFDaEMsczNGQUE4Qzs7U0FFakQsQ0FBQztPQUNXLHVCQUF1QixDQTRQbkM7SUFBRCw4QkFBQztDQUFBLEFBNVBELENBQTZDLGVBQWUsR0E0UDNEO1NBNVBZLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMsIFZhbGlkYXRvckZuLCBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2NvbXBvbmVudC1oZWxwZXInO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbm5lbENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jaGFubmVsLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vLi4vY29yZS5jb25zdHMnO1xuZGVjbGFyZSB2YXIgJDogYW55O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1yZWdpc3Rlci1mb3JtLWVjJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3JlZ2lzdGVyLWZvcm0tZWMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydyZWdpc3Rlci1mb3JtLWVjLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUmVnaXN0ZXJGb3JtRWNDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRIZWxwZXIgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgcHJvdGVjdGVkIHByb3ZpbmNlc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XG4gICAgcHJvdGVjdGVkIGNvdW50cmllc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XG4gICAgcHJvdGVjdGVkIGRvY3VtZW50VHlwZXNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xuXG4gICAgcHVibGljIHByb3ZpbmNlcyQgPSB0aGlzLnByb3ZpbmNlc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIGNvdW50cmllcyQgPSB0aGlzLmNvdW50cmllc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIGRvY3VtZW50VHlwZXMkID0gdGhpcy5kb2N1bWVudFR5cGVzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgaXNMb2dnZWQ6IEJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIGRhcmtNb2RlID0gZmFsc2U7XG4gICAgQElucHV0KCkgcmVkaXJlY3QgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGNvbXBsZXRlID0gdHJ1ZTtcbiAgICBAT3V0cHV0KCkgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgcHVibGljIHN1Y2Nlc3M6IEJvb2xlYW4gPSBmYWxzZVxuICAgIHB1YmxpYyBjYW1wb3NwZXJzb25hanVyaWRpY2E6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgcmVnaXN0ZXJfbG9hZGluZzogYm9vbGVhbjtcbiAgICBwdWJsaWMgcmVnaXN0ZXJGb3JtOiBGb3JtR3JvdXA7XG4gICAgcHVibGljIHJlZ2lzdHJvVXN1YXJpbzogYW55ID0ge1xuICAgICAgICBmaXJzdE5hbWU6ICcnLFxuICAgICAgICBsYXN0TmFtZTogJycsXG4gICAgICAgIGVtYWlsOiAnJyxcbiAgICAgICAgcGxhaW5QYXNzd29yZDogJycsXG4gICAgICAgIHBsYWluUGFzc3dvcmQyOiAnJyxcbiAgICAgICAgbmV3c2xldHRlcjogZmFsc2UsXG4gICAgICAgIHRlcm1zOiBmYWxzZSxcbiAgICAgICAgYmlydGhkYXk6ICcnLCAvLyBOdWV2byBjYW1wbyBwYXJhIGVsIGN1bXBsZWHDsW9zXG4gICAgfTtcbiAgICBwdWJsaWMgaXNBY2NvdW50VmVyaWZpY2F0aW9uUmVxdWlyZWQgPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNTZW5kV2VsY29tZUVtYWlsID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIHRvYXN0cjogVG9hc3RTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHB1YmxpYyBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgICAgICBwcml2YXRlIGNoYW5uZWxDb25maWdTZXJ2aWNlOiBDaGFubmVsQ29uZmlnU2VydmljZSxcbiAgICAgICAgcHVibGljIGNvbnN0czogQ29uc3RhbnRzXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZWNPbkNvbnN0cnVjdCgpXG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG5cbiAgICAgICAgdGhpcy5yZWdpc3RlckZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgIGZpcnN0TmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIGxhc3ROYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgZW1haWw6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICBwbGFpblBhc3N3b3JkOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgcGxhaW5QYXNzd29yZDI6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICBuZXdzbGV0dGVyOiBbZmFsc2VdLFxuICAgICAgICAgICAgdGVybXM6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICBiaXJ0aGRheTogW251bGwsIFt0aGlzLm9wdGlvbmFsTWF4TGVuZ3RoVmFsaWRhdG9yKDExKV1dLFxuICAgICAgICAgICAgLy8gRGlyZWNjacOzbiAob3BjaW9uYWwsIHBlcm8gc2kgc2UgZW52w61hLCBzZSByZWNvbWllbmRhIGVudmlhciB0b2RvcyBsb3MgY2FtcG9zIGludGVybm9zKVxuICAgICAgICAgICAgY291bnRyeUNvZGU6IFsnJ10sXG4gICAgICAgICAgICBwcm92aW5jZUNvZGU6IFtudWxsXSxcbiAgICAgICAgICAgIHN0cmVldDogW251bGxdLFxuICAgICAgICAgICAgY2l0eTogWycnXSxcbiAgICAgICAgICAgIHBvc3Rjb2RlOiBbJyddLFxuICAgICAgICAgICAgLy8gRGF0b3MgZW1wcmVzYSAob3BjaW9uYWxlcylcbiAgICAgICAgICAgIGNvbXBhbnlOYW1lOiBbJyddLFxuICAgICAgICAgICAgbGVnYWxEZW5vbWluYXRpb246IFsnJ10sXG4gICAgICAgICAgICAvLyBEYXRvcyBwZXJzb25hbGVzIGFkaWNpb25hbGVzIChvcGNpb25hbGVzKVxuICAgICAgICAgICAgZ2VuZGVyOiBbbnVsbF0sXG4gICAgICAgICAgICBwaG9uZU51bWJlcjogWycnLCBbVmFsaWRhdG9ycy5wYXR0ZXJuKCdbMC05XSsnKV1dLFxuICAgICAgICAgICAgc3Vic2NyaWJlZFRvTmV3c2xldHRlcjogW2ZhbHNlXSxcbiAgICAgICAgICAgIGRvY3VtZW50VHlwZTogW251bGxdLFxuICAgICAgICAgICAgZG9jdW1lbnROdW1iZXI6IFsnJ10sXG4gICAgICAgICAgICAvLyBDb21lbnRhcmlvcyB5IGNvbnRhY3RvIChvcGNpb25hbGVzKSBcbiAgICAgICAgICAgIGNvbW1lbnRzOiBbJycsIFtdXSxcbiAgICAgICAgICAgIGNvbnRhY3RGaXJzdE5hbWU6IFsnJywgW11dLFxuICAgICAgICAgICAgY29udGFjdExhc3ROYW1lOiBbJycsIFtdXSxcbiAgICAgICAgICAgIGNvbnRhY3RDb21wYW55UG9zaXRpb246IFsnJywgW11dLFxuICAgICAgICAgICAgY29udGFjdEVtYWlsOiBbJycsIFtdXSxcbiAgICAgICAgICAgIGNvbnRhY3REb2N1bWVudFR5cGU6IFsnJywgW11dLFxuICAgICAgICAgICAgY29udGFjdERvY3VtZW50TnVtYmVyOiBbJycsIFtdXSxcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgdmFsaWRhdG9yczogW3RoaXMuZGlyZWNjaW9uQ29tcGxldGFWYWxpZGF0b3IoKV1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0Q291bnRyaWVzRGF0YSgpLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuY291bnRyaWVzU3ViamVjdC5uZXh0KHJlcyk7XG4gICAgICAgICAgICBsZXQgZG9jdW1lbnRUeXBlcyA9IFtdXG4gICAgICAgICAgICByZXMubWFwKHBhaXNlcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdHMuZ2V0TG9jYWxlKCkudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyhwYWlzZXMuY29kZS50b0xvY2FsZUxvd2VyQ2FzZSgpKSAmJiAoZG9jdW1lbnRUeXBlcyA9IHBhaXNlcy5kb2N1bWVudFR5cGVzIHx8IFtdKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50VHlwZXNTdWJqZWN0Lm5leHQoZG9jdW1lbnRUeXBlcyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNoYW5uZWxDb25maWdTZXJ2aWNlLmNoYW5uZWxDb25maWckLnN1YnNjcmliZShcbiAgICAgICAgICAgIChjb25maWcpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnICYmIGNvbmZpZy5pc0FjY291bnRWZXJpZmljYXRpb25SZXF1aXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNBY2NvdW50VmVyaWZpY2F0aW9uUmVxdWlyZWQgPSBjb25maWcuaXNBY2NvdW50VmVyaWZpY2F0aW9uUmVxdWlyZWQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0FjY291bnRWZXJpZmljYXRpb25SZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnICYmIGNvbmZpZy5pc1NlbmRXZWxjb21lRW1haWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU2VuZFdlbGNvbWVFbWFpbCA9IGNvbmZpZy5pc1NlbmRXZWxjb21lRW1haWw7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1NlbmRXZWxjb21lRW1haWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmVjT25Jbml0KClcblxuICAgIH1cblxuICAgIHNldFByb3AgPSAocHJvcCwgZXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5yZWdpc3Ryb1VzdWFyaW9bcHJvcF0gPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgfVxuICAgIHJlZGlyZWN0SG9tZSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnLycpXG4gICAgfVxuXG4gICAgcmVnaXN0ZXIgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5yZWdpc3Rlcl9sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgaWYgKCF0aGlzLnJlZ2lzdGVyRm9ybS52YWxpZCkge1xuICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnaW52YWxpZC1mb3JtJyk7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyX2xvYWRpbmcgPSBmYWxzZVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJlZ2lzdGVyX2xvYWRpbmcgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5yZWdpc3RlckZvcm0udmFsdWUucGxhaW5QYXNzd29yZCAhPSB0aGlzLnJlZ2lzdGVyRm9ybS52YWx1ZS5wbGFpblBhc3N3b3JkMikge1xuICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnTGFzIGNvbnRyYXNlw7FhcyBubyBjb2luY2lkZW4nKTtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJfbG9hZGluZyA9IGZhbHNlXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVnaXN0ZXJGb3JtLnZhbGlkKSB7XG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkRGF0YSA9IHRoaXMubm9ybWFsaXplUmVnaXN0ZXJEYXRhKHRoaXMucmVnaXN0ZXJGb3JtLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2Uuc2lnblVwKG5vcm1hbGl6ZWREYXRhKS50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJfbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBsZXQgbWVzc2FnZUtleTogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5pc0FjY291bnRWZXJpZmljYXRpb25SZXF1aXJlZDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlS2V5ID0gJ3JlZ2lzdGVyLW9rJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5pc1NlbmRXZWxjb21lRW1haWw6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZUtleSA9ICdyZWdpc3Rlci13ZWxjb21lJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZUtleSA9ICdyZWdpc3Rlci1zdWNjZXNzJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93UGVyc2lzdGVudChtZXNzYWdlS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgnc2lnbl91cCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogdGhpcy5yZWdpc3RlckZvcm0udmFsdWUuZmlyc3ROYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5hbWU6IHRoaXMucmVnaXN0ZXJGb3JtLnZhbHVlLmxhc3ROYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IHRoaXMucmVnaXN0ZXJGb3JtLnZhbHVlLmVtYWlsXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VjY2VzcyA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkeS5lbWl0KHRydWUpXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2VLZXkgIT09ICdyZWdpc3Rlci1vaycgJiYgdGhpcy5yZWRpcmVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWdpc3RlckZvcm0ucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWRpcmVjdCAmJiBtZXNzYWdlS2V5ID09PSAncmVnaXN0ZXItb2snKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdob21lJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWdpc3Rlcl9sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93UGVyc2lzdGVudCgnRWwgZW1haWwgaW5ncmVzYWRvIHlhIHNlIGVuY3VlbnRyYSByZWdpc3RyYWRvLicpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnRXJyb3IgZW4gZWwgcmVnaXN0cm8uIFZ1ZWx2YSBhIGludGVudGFybG8gbcOhcyB0YXJkZS4nKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLnNob3coJ2ludmFsaWQtZm9ybScpO1xuICAgICAgICAgICAgdGhpcy5yZWdpc3Rlcl9sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkaXJlY2Npb25Db21wbGV0YVZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7XG4gICAgICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RyZWV0ID0gY29udHJvbC5nZXQoJ3N0cmVldCcpPy52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IGNpdHkgPSBjb250cm9sLmdldCgnY2l0eScpPy52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IHByb3ZpbmNlQ29kZSA9IGNvbnRyb2wuZ2V0KCdwcm92aW5jZUNvZGUnKT8udmFsdWU7XG4gICAgICAgICAgICBjb25zdCBjb3VudHJ5Q29kZSA9IGNvbnRyb2wuZ2V0KCdjb3VudHJ5Q29kZScpPy52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IHBvc3Rjb2RlID0gY29udHJvbC5nZXQoJ3Bvc3Rjb2RlJyk/LnZhbHVlO1xuXG4gICAgICAgICAgICBjb25zdCBoYXNWYWx1ZSA9ICh2YWw6IGFueSk6IGJvb2xlYW4gPT4gdmFsICE9PSBudWxsICYmIHZhbCAhPT0gdW5kZWZpbmVkICYmIHZhbC50b1N0cmluZygpLnRyaW0oKSAhPT0gJyc7XG5cbiAgICAgICAgICAgIGNvbnN0IGFueUZpZWxkU2V0ID0gW3N0cmVldCwgY2l0eSwgcHJvdmluY2VDb2RlLCBjb3VudHJ5Q29kZSwgcG9zdGNvZGVdLnNvbWUoaGFzVmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgYWxsRmllbGRzU2V0ID0gW3N0cmVldCwgY2l0eSwgcHJvdmluY2VDb2RlLCBjb3VudHJ5Q29kZSwgcG9zdGNvZGVdLmV2ZXJ5KGhhc1ZhbHVlKTtcbiAgICAgICAgICAgIC8vIFNpIGFsIG1lbm9zIHVuIGNhbXBvIGRlIGRpcmVjY2nDs24gZXN0w6EgZXN0YWJsZWNpZG8sIHRvZG9zIGRlYmVuIGVzdGFybG9cbiAgICAgICAgICAgIC8vIFNpIG5vIGhheSBuaW5nw7puIGNhbXBvIGRlIGRpcmVjY2nDs24gZXN0YWJsZWNpZG8sIG5vIHNlIGFwbGljYSBsYSB2YWxpZGFjacOzblxuICAgICAgICAgICAgaWYgKGFueUZpZWxkU2V0ICYmICFhbGxGaWVsZHNTZXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBkaXJlY2Npb25JbmNvbXBsZXRhOiB0cnVlIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIG9wdGlvbmFsTWF4TGVuZ3RoVmFsaWRhdG9yKG1heDogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xuICAgICAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgICAgICAgIGlmICghY29udHJvbC52YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICByZXR1cm4gY29udHJvbC52YWx1ZS5sZW5ndGggPiBtYXggPyB7IG1heExlbmd0aDogdHJ1ZSB9IDogbnVsbDtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBvbkNvdW50cnlTZWxlY3RlZCA9ICh2YWx1ZSkgPT4ge1xuICAgICAgICAkKCcjc2VsZWN0T3BQYWlzJykuYXR0cignZGlzYWJsZWQnLCB0cnVlKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckZvcm0uY29udHJvbHNbJ2NvdW50cnlDb2RlJ10uc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRm9ybS5jb250cm9sc1sncHJvdmluY2VDb2RlJ10uc2V0VmFsdWUoJycpO1xuICAgICAgICB2YWx1ZSAhPSAnJyAmJiB0aGlzLnByb3ZpbmNlc1N1YmplY3QubmV4dCh0aGlzLmNvdW50cmllc1N1YmplY3QudmFsdWUuZmluZChjb3VudHJ5ID0+IGNvdW50cnkuY29kZSA9PSB2YWx1ZSkucHJvdmluY2VzKTtcbiAgICB9XG5cbiAgICBvbkdlbmRlclNlbGVjdGVkID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICQoJyNzZWxlY3RPcFNleG8nKS5hdHRyKCdkaXNhYmxlZCcsIHRydWUpO1xuICAgIH1cblxuICAgIG9uUHJvdmluY2VzU2VsZWN0ZWQgPSAodmFsdWUpID0+IHtcbiAgICAgICAgJCgnI3NlbGVjdE9wUHJvdmluY2lhJykuYXR0cignZGlzYWJsZWQnLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vcm1hbGl6ZVJlZ2lzdGVyRGF0YShkYXRhOiBhbnkpOiBhbnkge1xuICAgICAgICBjb25zdCBub3JtYWxpemVTdHJpbmcgPSAodmFsOiBhbnkpOiBzdHJpbmcgfCBudWxsID0+XG4gICAgICAgICAgICB2YWwgPT09IHVuZGVmaW5lZCB8fCB2YWwgPT09IG51bGwgfHwgdmFsLnRvU3RyaW5nKCkudHJpbSgpID09PSAnJyA/IG51bGwgOiB2YWwudG9TdHJpbmcoKS50cmltKCk7XG5cbiAgICAgICAgY29uc3Qgbm9ybWFsaXplQm9vbCA9ICh2YWw6IGFueSk6IGJvb2xlYW4gfCBudWxsID0+XG4gICAgICAgICAgICB0eXBlb2YgdmFsID09PSAnYm9vbGVhbicgPyB2YWwgOiB2YWwgPT09ICd0cnVlJyA/IHRydWUgOiB2YWwgPT09ICdmYWxzZScgPyBmYWxzZSA6IG51bGw7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICBiaXJ0aGRheTogbm9ybWFsaXplU3RyaW5nKGRhdGEuYmlydGhkYXkpIHx8ICcnLFxuICAgICAgICAgICAgY29tcGFueU5hbWU6IG5vcm1hbGl6ZVN0cmluZyhkYXRhLmNvbXBhbnlOYW1lKSxcbiAgICAgICAgICAgIGxlZ2FsRGVub21pbmF0aW9uOiBub3JtYWxpemVTdHJpbmcoZGF0YS5sZWdhbERlbm9taW5hdGlvbiksXG4gICAgICAgICAgICBnZW5kZXI6IG5vcm1hbGl6ZVN0cmluZyhkYXRhLmdlbmRlciksXG4gICAgICAgICAgICBwaG9uZU51bWJlcjogbm9ybWFsaXplU3RyaW5nKGRhdGEucGhvbmVOdW1iZXIpLFxuICAgICAgICAgICAgc3Vic2NyaWJlZFRvTmV3c2xldHRlcjogbm9ybWFsaXplQm9vbChkYXRhLnN1YnNjcmliZWRUb05ld3NsZXR0ZXIpLFxuICAgICAgICAgICAgZG9jdW1lbnRUeXBlOiBub3JtYWxpemVTdHJpbmcoZGF0YS5kb2N1bWVudFR5cGUpLFxuICAgICAgICAgICAgZG9jdW1lbnROdW1iZXI6IG5vcm1hbGl6ZVN0cmluZyhkYXRhLmRvY3VtZW50TnVtYmVyKSxcbiAgICAgICAgICAgIGNvbW1lbnRzOiBub3JtYWxpemVTdHJpbmcoZGF0YS5jb21tZW50cyksXG4gICAgICAgICAgICBjb250YWN0Rmlyc3ROYW1lOiBub3JtYWxpemVTdHJpbmcoZGF0YS5jb250YWN0Rmlyc3ROYW1lKSxcbiAgICAgICAgICAgIGNvbnRhY3RMYXN0TmFtZTogbm9ybWFsaXplU3RyaW5nKGRhdGEuY29udGFjdExhc3ROYW1lKSxcbiAgICAgICAgICAgIGNvbnRhY3RDb21wYW55UG9zaXRpb246IG5vcm1hbGl6ZVN0cmluZyhkYXRhLmNvbnRhY3RDb21wYW55UG9zaXRpb24pLFxuICAgICAgICAgICAgY29udGFjdEVtYWlsOiBub3JtYWxpemVTdHJpbmcoZGF0YS5jb250YWN0RW1haWwpLFxuICAgICAgICAgICAgY29udGFjdERvY3VtZW50VHlwZTogbm9ybWFsaXplU3RyaW5nKGRhdGEuY29udGFjdERvY3VtZW50VHlwZSksXG4gICAgICAgICAgICBjb250YWN0RG9jdW1lbnROdW1iZXI6IG5vcm1hbGl6ZVN0cmluZyhkYXRhLmNvbnRhY3REb2N1bWVudE51bWJlciksXG4gICAgICAgICAgICAvLyBEaXJlY2Npw7NuXG4gICAgICAgICAgICBjb3VudHJ5Q29kZTogbm9ybWFsaXplU3RyaW5nKGRhdGEuY291bnRyeUNvZGUpLFxuICAgICAgICAgICAgcHJvdmluY2VDb2RlOiBub3JtYWxpemVTdHJpbmcoZGF0YS5wcm92aW5jZUNvZGUpLFxuICAgICAgICAgICAgc3RyZWV0OiBub3JtYWxpemVTdHJpbmcoZGF0YS5zdHJlZXQpLFxuICAgICAgICAgICAgY2l0eTogbm9ybWFsaXplU3RyaW5nKGRhdGEuY2l0eSksXG4gICAgICAgICAgICBwb3N0Y29kZTogbm9ybWFsaXplU3RyaW5nKGRhdGEucG9zdGNvZGUpLFxuICAgICAgICB9O1xuICAgIH1cblxufSJdfQ==
@@ -143,6 +143,25 @@ var FiltersEcComponent = /** @class */ (function (_super) {
143
143
  filter.currentMinPrice = currentMin;
144
144
  }
145
145
  };
146
+ FiltersEcComponent.prototype.hasAppliedFilters = function () {
147
+ var _a, _b;
148
+ return _b = (_a = this.filters) === null || _a === void 0 ? void 0 : _a.some(function (filter) {
149
+ var _a, _b, _c;
150
+ if (((_b = (_a = filter).type) === null || _b === void 0 ? void 0 : _b.call(_a)) === 'price_range') {
151
+ var minSet = filter.currentMinPrice !== null && filter.currentMinPrice !== 0;
152
+ var maxSet = filter.currentMaxPrice !== null && filter.currentMaxPrice !== filter.maxPrice;
153
+ if (minSet || maxSet) {
154
+ return true;
155
+ }
156
+ }
157
+ return (_c = filter.data) === null || _c === void 0 ? void 0 : _c.some(function (filterElement) {
158
+ if (Array.isArray(filterElement.children)) {
159
+ return filterElement.children.some(function (child) { return child.selected; });
160
+ }
161
+ return filterElement.selected;
162
+ });
163
+ }), (_b !== null && _b !== void 0 ? _b : false);
164
+ };
146
165
  FiltersEcComponent.ctorParameters = function () { return [
147
166
  { type: Constants },
148
167
  { type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
@@ -165,4 +184,4 @@ var FiltersEcComponent = /** @class */ (function (_super) {
165
184
  return FiltersEcComponent;
166
185
  }(ComponentHelper));
167
186
  export { FiltersEcComponent };
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L2ZpbHRlcnMtZWMvZmlsdGVycy1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUUxRSxlQUFlO0FBTWY7SUFBd0Msc0NBQWU7SUFPbkQsNEJBQXNCLE1BQWlCLEVBQTJCLFFBQWtCLEVBQVUsY0FBOEI7UUFBNUgsWUFDSSxpQkFBTyxTQUVWO1FBSHFCLFlBQU0sR0FBTixNQUFNLENBQVc7UUFBMkIsY0FBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLG9CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUhySCxZQUFNLEdBQVksSUFBSSxDQUFDO1FBb0M5QixtQkFBbUI7UUFDbkIsd0VBQXdFO1FBQ3hFLHFCQUFxQjtRQUNyQixNQUFNO1FBR04sV0FBSyxHQUFHLFVBQUMsWUFBWTtZQUNqQix1QkFBdUI7WUFDdkIsbUZBQW1GO1lBQ25GLDhFQUE4RTtZQUM5RSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDLENBQUM7UUFxQkYsY0FBUSxHQUFHO1lBQ1AsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEIsT0FBTyxJ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T25Jbml0LCBJbmplY3QsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvcmUuY29uc3RzJztcbmltcG9ydCB7IENvbXBvbmVudEhlbHBlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvY29tcG9uZW50LWhlbHBlcic7XG5pbXBvcnQgeyBGaWx0ZXJzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpbHRlcnMuc2VydmljZSc7XG5pbXBvcnQgeyBQcmljZVJhbmdlRmlsdGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9maWx0ZXJzL1ByaWNlUmFuZ2VGaWx0ZXInO1xuXG4vKiogQGR5bmFtaWMgKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWZpbHRlcnMtZWMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXJzLWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9maWx0ZXJzLWVjLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyc0VjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXG4gICAgQElucHV0KCkgc2V0U2VsZWN0ZWQ7XG4gICAgQElucHV0KCkgZmlsdGVycztcbiAgICBwdWJsaWMgZXhwYW5kOiBib29sZWFuID0gdHJ1ZTtcblxuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNvbnN0czogQ29uc3RhbnRzLCBASW5qZWN0KERPQ1VNRU5UKSBwdWJsaWMgZG9jdW1lbnQ6IERvY3VtZW50LCBwcml2YXRlIGZpbHRlcnNTZXJ2aWNlOiBGaWx0ZXJzU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmVjT25Db25zdHJ1Y3QoKVxuICAgIH1cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIC8vY29uc29sZS5sb2coY2hhbmdlc1snZmlsdGVycyddKVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmV4cGFuZCA9ICF0aGlzLmNvbnN0cy5tb2JpbGUoKVxuICAgICAgICB0aGlzLmVjT25Jbml0KClcblxuICAgIH1cblxuICAgIC8vIE3DqXRvZG8gcGFyYSBhY3R1YWxpemFyIGxvcyB2YWxvcmVzIGRlIHByZWNpbyBzZWxlY2Npb25hZG9zXG4gICAgdXBkYXRlUHJpY2VSYW5nZShtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIHByaWNlRmlsdGVyOiBQcmljZVJhbmdlRmlsdGVyKSB7XG4gICAgICAgIHByaWNlRmlsdGVyLnNldFNlbGVjdGVkKG1pbiwgbWF4KTtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZChwcmljZUZpbHRlcik7XG4gICAgfVxuXG4gICAgLy8gTcOpdG9kb3MgcGFyYSBhY3R1YWxpemFyIGxhIGJhcnJhIGRlbCBmaWx0cm8gcG9yIHByZWNpb1xuICAgIGNhbGN1bGF0ZUxlZnRQZXJjZW50YWdlKGN1cnJlbnRNaW5QcmljZTogbnVtYmVyLCBtaW5QcmljZTogbnVtYmVyLCBtYXhQcmljZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgbWluVmFsID0gTWF0aC5tYXgobWluUHJpY2UsIE1hdGgubWluKGN1cnJlbnRNaW5QcmljZSA/PyBtaW5QcmljZSwgbWF4UHJpY2UpKTtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIE1hdGgubWluKCgobWluVmFsIC0gbWluUHJpY2UpIC8gKG1heFByaWNlIC0gbWluUHJpY2UpKSAqIDEwMCwgMTAwKSk7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlUmlnaHRQZXJjZW50YWdlKGN1cnJlbnRNYXhQcmljZTogbnVtYmVyLCBtaW5QcmljZTogbnVtYmVyLCBtYXhQcmljZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgbWF4VmFsID0gTWF0aC5tYXgobWluUHJpY2UsIE1hdGgubWluKGN1cnJlbnRNYXhQcmljZSA/PyBtYXhQcmljZSwgbWF4UHJpY2UpKTtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIE1hdGgubWluKDEwMCAtICgobWF4VmFsIC0gbWluUHJpY2UpIC8gKG1heFByaWNlIC0gbWluUHJpY2UpKSAqIDEwMCwgMTAwKSk7XG4gICAgfVxuXG5cblxuICAgIC8vICBjbG9zZSA9ICgpID0+IHtcbiAgICAvLyAgICAgICB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZmlsdHJvc1wiKS5jbGFzc0xpc3QucmVtb3ZlKCdpbicpO1xuICAgIC8vICAgICAgIHJldHVybiB0cnVlO1xuICAgIC8vICB9O1xuXG5cbiAgICBjbG9zZSA9IChhY2NvcmRpb25faWQpID0+IHtcbiAgICAgICAgLy8gdGhpcy5jb25zdHMubW9iaWxlKClcbiAgICAgICAgLy8gICAgICA/IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhY2NvcmRpb25FeGFtcGxlXCIpLmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKVxuICAgICAgICAvLyAgICAgIDogdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChhY2NvcmRpb25faWQpLmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcblxuICAgIHVuaXF1ZVNlbGVjdGlvbihmaWx0ZXIsIGZpbHRlckNoaWxkKSB7XG4gICAgICAgIC8vIEJ1c2NhciBzaSBoYXkgdW4gZmlsdHJvIGRlIHRpcG8gUHJpY2VSYW5nZUZpbHRlciBlbiBsYSBsaXN0YSBkZSBmaWx0cm9zXG4gICAgICAgIGNvbnN0IHByaWNlUmFuZ2VGaWx0ZXIgPSB0aGlzLmZpbHRlcnMuZmluZChmID0+IGYgaW5zdGFuY2VvZiBQcmljZVJhbmdlRmlsdGVyKTtcblxuICAgICAgICBpZiAocHJpY2VSYW5nZUZpbHRlcikge1xuICAgICAgICAgICAgcHJpY2VSYW5nZUZpbHRlci5yZXNldCgpO1xuICAgICAgICB9XG4gICAgICAgIGZpbHRlci5kYXRhLmZvckVhY2goZmlsdGVyRWxlbWVudCA9PiB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyRWxlbWVudC5zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIGZpbHRlckVsZW1lbnQuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbHRlckVsZW1lbnQuY2hpbGRyZW4uZm9yRWFjaChmaWx0ZXJDaGlsZHJlbiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlckNoaWxkcmVuICE9IGZpbHRlckNoaWxkICYmIGZpbHRlckNoaWxkcmVuLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckNoaWxkcmVuLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNjcm9sbFVwID0gKCkgPT4ge1xuICAgICAgICB3aW5kb3cuc2Nyb2xsKDAsIDApO1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZG9uZGVhIGFsIG3Dumx0aXBsbyBkZSAnc3RlcCcgcmVzcGV0YW5kbyBlbCByZWRvbmRlbyBlbnRlcm86XG4gICAgICogLSBNw61uaW1vOiByZWRvbmRlYSBoYWNpYSBhYmFqby5cbiAgICAgKiAtIE3DoXhpbW86IHJlZG9uZGVhIGhhY2lhIGFycmliYS5cbiAgICAgKi9cbiAgICByb3VuZFRvTmVhcmVzdCh2YWx1ZTogbnVtYmVyLCBzdGVwOiBudW1iZXIsIHR5cGU6ICdtaW4nIHwgJ21heCcsIGZpbHRlcjogYW55KTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHJvdW5kZWQgPSBNYXRoLnJvdW5kKHZhbHVlIC8gc3RlcCkgKiBzdGVwO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ21heCcgJiYgcm91bmRlZCA8IGZpbHRlci5tYXhQcmljZSkge1xuICAgICAgICAgICAgcm91bmRlZCA9IE1hdGguY2VpbCh2YWx1ZSAvIHN0ZXApICogc3RlcDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ21pbicgJiYgcm91bmRlZCA+IGZpbHRlci5taW5QcmljZSkge1xuICAgICAgICAgICAgcm91bmRlZCA9IE1hdGguZmxvb3IodmFsdWUgLyBzdGVwKSAqIHN0ZXA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJvdW5kZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWN0dWFsaXphIGxvcyB2YWxvcmVzIGRlbCBmaWx0cm8gcGVybWl0aWVuZG8gcXVlIHVuIGlucHV0IGVtcHVqZSBhbCBvdHJvLlxuICAgICAqL1xuICAgIHVwZGF0ZUZpbHRlclByaWNlcyh0eXBlOiAnbWluJyB8ICdtYXgnLCB2YWx1ZTogbnVtYmVyLCBmaWx0ZXI6IGFueSwgcHJpY2VHYXA6IG51bWJlcikge1xuICAgICAgICBjb25zdCBnbG9iYWxNaW4gPSBmaWx0ZXIubWluUHJpY2UgPz8gMDtcbiAgICAgICAgY29uc3QgZ2xvYmFsTWF4ID0gZmlsdGVyLm1heFByaWNlO1xuXG4gICAgICAgIGxldCBjdXJyZW50TWluID0gZmlsdGVyLmN1cnJlbnRNaW5QcmljZSA/PyBnbG9iYWxNaW47XG4gICAgICAgIGxldCBjdXJyZW50TWF4ID0gZmlsdGVyLmN1cnJlbnRNYXhQcmljZSA/PyBnbG9iYWxNYXg7XG5cbiAgICAgICAgaWYgKHR5cGUgPT09ICdtaW4nKSB7XG4gICAgICAgICAgICBsZXQgbmV3TWluID0gTWF0aC5taW4oTWF0aC5tYXgodmFsdWUsIGdsb2JhbE1pbiksIGdsb2JhbE1heCk7XG4gICAgICAgICAgICBpZiAobmV3TWluICsgcHJpY2VHYXAgPiBjdXJyZW50TWF4KSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld01heENhbmRpZGF0ZSA9IG5ld01pbiArIHByaWNlR2FwO1xuICAgICAgICAgICAgICAgIGlmIChuZXdNYXhDYW5kaWRhdGUgPD0gZ2xvYmFsTWF4KSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNYXggPSBuZXdNYXhDYW5kaWRhdGU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3TWluID0gZ2xvYmFsTWF4IC0gcHJpY2VHYXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmlsdGVyLmN1cnJlbnRNaW5QcmljZSA9IG5ld01pbjtcbiAgICAgICAgICAgIGZpbHRlci5jdXJyZW50TWF4UHJpY2UgPSBjdXJyZW50TWF4O1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdtYXgnKSB7XG4gICAgICAgICAgICBsZXQgbmV3TWF4ID0gTWF0aC5tYXgoTWF0aC5taW4odmFsdWUsIGdsb2JhbE1heCksIGdsb2JhbE1pbik7XG4gICAgICAgICAgICBpZiAobmV3TWF4IC0gcHJpY2VHYXAgPCBjdXJyZW50TWluKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld01pbkNhbmRpZGF0ZSA9IG5ld01heCAtIHByaWNlR2FwO1xuICAgICAgICAgICAgICAgIGlmIChuZXdNaW5DYW5kaWRhdGUgPj0gZ2xvYmFsTWluKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNaW4gPSBuZXdNaW5DYW5kaWRhdGU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3TWF4ID0gZ2xvYmFsTWluICsgcHJpY2VHYXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmlsdGVyLmN1cnJlbnRNYXhQcmljZSA9IG5ld01heDtcbiAgICAgICAgICAgIGZpbHRlci5jdXJyZW50TWluUHJpY2UgPSBjdXJyZW50TWluO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L2ZpbHRlcnMtZWMvZmlsdGVycy1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUUxRSxlQUFlO0FBTWY7SUFBd0Msc0NBQWU7SUFPbkQsNEJBQXNCLE1BQWlCLEVBQTJCLFFBQWtCLEVBQVUsY0FBOEI7UUFBNUgsWUFDSSxpQkFBTyxTQUVWO1FBSHFCLFlBQU0sR0FBTixNQUFNLENBQVc7UUFBMkIsY0FBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLG9CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUhySCxZQUFNLEdBQVksSUFBSSxDQUFDO1FBb0M5QixtQkFBbUI7UUFDbkIsd0VBQXdFO1FBQ3hFLHFCQUFxQjtRQUNyQixNQUFNO1FBR04sV0FBSyxHQUFHLFVBQUMsWUFBWTtZQUNqQix1QkFBdUI7WUFDdkIsbUZBQW1GO1lBQ25GLDhFQUE4RTtZQUM5RSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDLENBQUM7UUFxQkYsY0FBUSxHQUFHO1lBQ1AsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEIsT0FBTyxJ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Q2Y7YUFDSjtZQUVELGFBQU8sTUFBTSxDQUFDLElBQUksMENBQUUsSUFBSSxDQUFDLFVBQUMsYUFBa0I7Z0JBQ3hDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQ3ZDLE9BQU8sYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBQyxLQUFVLElBQUssT0FBQSxLQUFLLENBQUMsUUFBUSxFQUFkLENBQWMsQ0FBQyxDQUFDO2lCQUN0RTtnQkFDRCxPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUM7WUFDbEMsQ0FBQyxFQUFFO1FBQ1AsQ0FBQyx3Q0FBSyxLQUFLLEVBQUM7SUFDaEIsQ0FBQzs7Z0JBNUk2QixTQUFTO2dCQUFxQyxRQUFRLHVCQUExQyxNQUFNLFNBQUMsUUFBUTtnQkFBcUQsY0FBYzs7SUFMbkg7UUFBUixLQUFLLEVBQUU7MkRBQWE7SUFDWjtRQUFSLEtBQUssRUFBRTt1REFBUztJQUhSLGtCQUFrQjtRQUw5QixTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLFlBQTBDOztTQUU3QyxDQUFDO1FBUTRDLFdBQUEsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO09BUGpELGtCQUFrQixDQXFKOUI7SUFBRCx5QkFBQztDQUFBLEFBckpELENBQXdDLGVBQWUsR0FxSnREO1NBckpZLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBJbmplY3QsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvcmUuY29uc3RzJztcbmltcG9ydCB7IENvbXBvbmVudEhlbHBlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvY29tcG9uZW50LWhlbHBlcic7XG5pbXBvcnQgeyBGaWx0ZXJzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpbHRlcnMuc2VydmljZSc7XG5pbXBvcnQgeyBQcmljZVJhbmdlRmlsdGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9maWx0ZXJzL1ByaWNlUmFuZ2VGaWx0ZXInO1xuXG4vKiogQGR5bmFtaWMgKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWZpbHRlcnMtZWMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXJzLWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9maWx0ZXJzLWVjLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyc0VjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXG4gICAgQElucHV0KCkgc2V0U2VsZWN0ZWQ7XG4gICAgQElucHV0KCkgZmlsdGVycztcbiAgICBwdWJsaWMgZXhwYW5kOiBib29sZWFuID0gdHJ1ZTtcblxuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNvbnN0czogQ29uc3RhbnRzLCBASW5qZWN0KERPQ1VNRU5UKSBwdWJsaWMgZG9jdW1lbnQ6IERvY3VtZW50LCBwcml2YXRlIGZpbHRlcnNTZXJ2aWNlOiBGaWx0ZXJzU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmVjT25Db25zdHJ1Y3QoKVxuICAgIH1cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIC8vY29uc29sZS5sb2coY2hhbmdlc1snZmlsdGVycyddKVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmV4cGFuZCA9ICF0aGlzLmNvbnN0cy5tb2JpbGUoKVxuICAgICAgICB0aGlzLmVjT25Jbml0KClcblxuICAgIH1cblxuICAgIC8vIE3DqXRvZG8gcGFyYSBhY3R1YWxpemFyIGxvcyB2YWxvcmVzIGRlIHByZWNpbyBzZWxlY2Npb25hZG9zXG4gICAgdXBkYXRlUHJpY2VSYW5nZShtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIHByaWNlRmlsdGVyOiBQcmljZVJhbmdlRmlsdGVyKSB7XG4gICAgICAgIHByaWNlRmlsdGVyLnNldFNlbGVjdGVkKG1pbiwgbWF4KTtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZChwcmljZUZpbHRlcik7XG4gICAgfVxuXG4gICAgLy8gTcOpdG9kb3MgcGFyYSBhY3R1YWxpemFyIGxhIGJhcnJhIGRlbCBmaWx0cm8gcG9yIHByZWNpb1xuICAgIGNhbGN1bGF0ZUxlZnRQZXJjZW50YWdlKGN1cnJlbnRNaW5QcmljZTogbnVtYmVyLCBtaW5QcmljZTogbnVtYmVyLCBtYXhQcmljZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgbWluVmFsID0gTWF0aC5tYXgobWluUHJpY2UsIE1hdGgubWluKGN1cnJlbnRNaW5QcmljZSA/PyBtaW5QcmljZSwgbWF4UHJpY2UpKTtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIE1hdGgubWluKCgobWluVmFsIC0gbWluUHJpY2UpIC8gKG1heFByaWNlIC0gbWluUHJpY2UpKSAqIDEwMCwgMTAwKSk7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlUmlnaHRQZXJjZW50YWdlKGN1cnJlbnRNYXhQcmljZTogbnVtYmVyLCBtaW5QcmljZTogbnVtYmVyLCBtYXhQcmljZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgbWF4VmFsID0gTWF0aC5tYXgobWluUHJpY2UsIE1hdGgubWluKGN1cnJlbnRNYXhQcmljZSA/PyBtYXhQcmljZSwgbWF4UHJpY2UpKTtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIE1hdGgubWluKDEwMCAtICgobWF4VmFsIC0gbWluUHJpY2UpIC8gKG1heFByaWNlIC0gbWluUHJpY2UpKSAqIDEwMCwgMTAwKSk7XG4gICAgfVxuXG5cblxuICAgIC8vICBjbG9zZSA9ICgpID0+IHtcbiAgICAvLyAgICAgICB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZmlsdHJvc1wiKS5jbGFzc0xpc3QucmVtb3ZlKCdpbicpO1xuICAgIC8vICAgICAgIHJldHVybiB0cnVlO1xuICAgIC8vICB9O1xuXG5cbiAgICBjbG9zZSA9IChhY2NvcmRpb25faWQpID0+IHtcbiAgICAgICAgLy8gdGhpcy5jb25zdHMubW9iaWxlKClcbiAgICAgICAgLy8gICAgICA/IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhY2NvcmRpb25FeGFtcGxlXCIpLmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKVxuICAgICAgICAvLyAgICAgIDogdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChhY2NvcmRpb25faWQpLmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcblxuICAgIHVuaXF1ZVNlbGVjdGlvbihmaWx0ZXIsIGZpbHRlckNoaWxkKSB7XG4gICAgICAgIC8vIEJ1c2NhciBzaSBoYXkgdW4gZmlsdHJvIGRlIHRpcG8gUHJpY2VSYW5nZUZpbHRlciBlbiBsYSBsaXN0YSBkZSBmaWx0cm9zXG4gICAgICAgIGNvbnN0IHByaWNlUmFuZ2VGaWx0ZXIgPSB0aGlzLmZpbHRlcnMuZmluZChmID0+IGYgaW5zdGFuY2VvZiBQcmljZVJhbmdlRmlsdGVyKTtcblxuICAgICAgICBpZiAocHJpY2VSYW5nZUZpbHRlcikge1xuICAgICAgICAgICAgcHJpY2VSYW5nZUZpbHRlci5yZXNldCgpO1xuICAgICAgICB9XG4gICAgICAgIGZpbHRlci5kYXRhLmZvckVhY2goZmlsdGVyRWxlbWVudCA9PiB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyRWxlbWVudC5zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIGZpbHRlckVsZW1lbnQuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbHRlckVsZW1lbnQuY2hpbGRyZW4uZm9yRWFjaChmaWx0ZXJDaGlsZHJlbiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlckNoaWxkcmVuICE9IGZpbHRlckNoaWxkICYmIGZpbHRlckNoaWxkcmVuLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckNoaWxkcmVuLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNjcm9sbFVwID0gKCkgPT4ge1xuICAgICAgICB3aW5kb3cuc2Nyb2xsKDAsIDApO1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZG9uZGVhIGFsIG3Dumx0aXBsbyBkZSAnc3RlcCcgcmVzcGV0YW5kbyBlbCByZWRvbmRlbyBlbnRlcm86XG4gICAgICogLSBNw61uaW1vOiByZWRvbmRlYSBoYWNpYSBhYmFqby5cbiAgICAgKiAtIE3DoXhpbW86IHJlZG9uZGVhIGhhY2lhIGFycmliYS5cbiAgICAgKi9cbiAgICByb3VuZFRvTmVhcmVzdCh2YWx1ZTogbnVtYmVyLCBzdGVwOiBudW1iZXIsIHR5cGU6ICdtaW4nIHwgJ21heCcsIGZpbHRlcjogYW55KTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHJvdW5kZWQgPSBNYXRoLnJvdW5kKHZhbHVlIC8gc3RlcCkgKiBzdGVwO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ21heCcgJiYgcm91bmRlZCA8IGZpbHRlci5tYXhQcmljZSkge1xuICAgICAgICAgICAgcm91bmRlZCA9IE1hdGguY2VpbCh2YWx1ZSAvIHN0ZXApICogc3RlcDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ21pbicgJiYgcm91bmRlZCA+IGZpbHRlci5taW5QcmljZSkge1xuICAgICAgICAgICAgcm91bmRlZCA9IE1hdGguZmxvb3IodmFsdWUgLyBzdGVwKSAqIHN0ZXA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJvdW5kZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWN0dWFsaXphIGxvcyB2YWxvcmVzIGRlbCBmaWx0cm8gcGVybWl0aWVuZG8gcXVlIHVuIGlucHV0IGVtcHVqZSBhbCBvdHJvLlxuICAgICAqL1xuICAgIHVwZGF0ZUZpbHRlclByaWNlcyh0eXBlOiAnbWluJyB8ICdtYXgnLCB2YWx1ZTogbnVtYmVyLCBmaWx0ZXI6IGFueSwgcHJpY2VHYXA6IG51bWJlcikge1xuICAgICAgICBjb25zdCBnbG9iYWxNaW4gPSBmaWx0ZXIubWluUHJpY2UgPz8gMDtcbiAgICAgICAgY29uc3QgZ2xvYmFsTWF4ID0gZmlsdGVyLm1heFByaWNlO1xuXG4gICAgICAgIGxldCBjdXJyZW50TWluID0gZmlsdGVyLmN1cnJlbnRNaW5QcmljZSA/PyBnbG9iYWxNaW47XG4gICAgICAgIGxldCBjdXJyZW50TWF4ID0gZmlsdGVyLmN1cnJlbnRNYXhQcmljZSA/PyBnbG9iYWxNYXg7XG5cbiAgICAgICAgaWYgKHR5cGUgPT09ICdtaW4nKSB7XG4gICAgICAgICAgICBsZXQgbmV3TWluID0gTWF0aC5taW4oTWF0aC5tYXgodmFsdWUsIGdsb2JhbE1pbiksIGdsb2JhbE1heCk7XG4gICAgICAgICAgICBpZiAobmV3TWluICsgcHJpY2VHYXAgPiBjdXJyZW50TWF4KSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld01heENhbmRpZGF0ZSA9IG5ld01pbiArIHByaWNlR2FwO1xuICAgICAgICAgICAgICAgIGlmIChuZXdNYXhDYW5kaWRhdGUgPD0gZ2xvYmFsTWF4KSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNYXggPSBuZXdNYXhDYW5kaWRhdGU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3TWluID0gZ2xvYmFsTWF4IC0gcHJpY2VHYXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmlsdGVyLmN1cnJlbnRNaW5QcmljZSA9IG5ld01pbjtcbiAgICAgICAgICAgIGZpbHRlci5jdXJyZW50TWF4UHJpY2UgPSBjdXJyZW50TWF4O1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdtYXgnKSB7XG4gICAgICAgICAgICBsZXQgbmV3TWF4ID0gTWF0aC5tYXgoTWF0aC5taW4odmFsdWUsIGdsb2JhbE1heCksIGdsb2JhbE1pbik7XG4gICAgICAgICAgICBpZiAobmV3TWF4IC0gcHJpY2VHYXAgPCBjdXJyZW50TWluKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld01pbkNhbmRpZGF0ZSA9IG5ld01heCAtIHByaWNlR2FwO1xuICAgICAgICAgICAgICAgIGlmIChuZXdNaW5DYW5kaWRhdGUgPj0gZ2xvYmFsTWluKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNaW4gPSBuZXdNaW5DYW5kaWRhdGU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3TWF4ID0gZ2xvYmFsTWluICsgcHJpY2VHYXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmlsdGVyLmN1cnJlbnRNYXhQcmljZSA9IG5ld01heDtcbiAgICAgICAgICAgIGZpbHRlci5jdXJyZW50TWluUHJpY2UgPSBjdXJyZW50TWluO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFzQXBwbGllZEZpbHRlcnMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlcnM/LnNvbWUoKGZpbHRlcjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyLnR5cGU/LigpID09PSAncHJpY2VfcmFuZ2UnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWluU2V0ID0gZmlsdGVyLmN1cnJlbnRNaW5QcmljZSAhPT0gbnVsbCAmJiBmaWx0ZXIuY3VycmVudE1pblByaWNlICE9PSAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1heFNldCA9IGZpbHRlci5jdXJyZW50TWF4UHJpY2UgIT09IG51bGwgJiYgZmlsdGVyLmN1cnJlbnRNYXhQcmljZSAhPT0gZmlsdGVyLm1heFByaWNlO1xuICAgICAgICAgICAgICAgIGlmIChtaW5TZXQgfHwgbWF4U2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZpbHRlci5kYXRhPy5zb21lKChmaWx0ZXJFbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWx0ZXJFbGVtZW50LmNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyRWxlbWVudC5jaGlsZHJlbi5zb21lKChjaGlsZDogYW55KSA9PiBjaGlsZC5zZWxlY3RlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJFbGVtZW50LnNlbGVjdGVkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pID8/IGZhbHNlO1xuICAgIH1cblxufVxuIl19
@@ -1335,10 +1335,10 @@ class PriceRangeFilter extends Filter {
1335
1335
  // Genera los parámetros de la URL en base al rango de precios seleccionado
1336
1336
  this.toUrlParams = () => {
1337
1337
  let params = '';
1338
- if (this.currentMinPrice !== null) {
1338
+ if (this.currentMinPrice !== null && this.currentMinPrice !== this.minPrice) {
1339
1339
  params += `&price_min=${this.currentMinPrice}`;
1340
1340
  }
1341
- if (this.currentMaxPrice !== null) {
1341
+ if (this.currentMaxPrice !== null && this.currentMaxPrice !== this.maxPrice) {
1342
1342
  params += `&price_max=${this.currentMaxPrice}`;
1343
1343
  }
1344
1344
  return params;
@@ -7979,6 +7979,25 @@ let FiltersEcComponent = class FiltersEcComponent extends ComponentHelper {
7979
7979
  filter.currentMinPrice = currentMin;
7980
7980
  }
7981
7981
  }
7982
+ hasAppliedFilters() {
7983
+ var _a, _b;
7984
+ return _b = (_a = this.filters) === null || _a === void 0 ? void 0 : _a.some((filter) => {
7985
+ var _a, _b, _c;
7986
+ if (((_b = (_a = filter).type) === null || _b === void 0 ? void 0 : _b.call(_a)) === 'price_range') {
7987
+ const minSet = filter.currentMinPrice !== null && filter.currentMinPrice !== 0;
7988
+ const maxSet = filter.currentMaxPrice !== null && filter.currentMaxPrice !== filter.maxPrice;
7989
+ if (minSet || maxSet) {
7990
+ return true;
7991
+ }
7992
+ }
7993
+ return (_c = filter.data) === null || _c === void 0 ? void 0 : _c.some((filterElement) => {
7994
+ if (Array.isArray(filterElement.children)) {
7995
+ return filterElement.children.some((child) => child.selected);
7996
+ }
7997
+ return filterElement.selected;
7998
+ });
7999
+ }), (_b !== null && _b !== void 0 ? _b : false);
8000
+ }
7982
8001
  };
7983
8002
  FiltersEcComponent.ctorParameters = () => [
7984
8003
  { type: Constants },
@@ -11278,7 +11297,7 @@ var __decorate$1n = (this && this.__decorate) || function (decorators, target, k
11278
11297
  return c > 3 && r && Object.defineProperty(target, key, r), r;
11279
11298
  };
11280
11299
  let RegisterFormEcComponent = class RegisterFormEcComponent extends ComponentHelper {
11281
- constructor(authService, toastr, router, analyticsService, formBuilder, channelConfigService) {
11300
+ constructor(authService, toastr, router, analyticsService, formBuilder, channelConfigService, consts) {
11282
11301
  super();
11283
11302
  this.authService = authService;
11284
11303
  this.toastr = toastr;
@@ -11286,6 +11305,13 @@ let RegisterFormEcComponent = class RegisterFormEcComponent extends ComponentHel
11286
11305
  this.analyticsService = analyticsService;
11287
11306
  this.formBuilder = formBuilder;
11288
11307
  this.channelConfigService = channelConfigService;
11308
+ this.consts = consts;
11309
+ this.provincesSubject = new BehaviorSubject([]);
11310
+ this.countriesSubject = new BehaviorSubject([]);
11311
+ this.documentTypesSubject = new BehaviorSubject([]);
11312
+ this.provinces$ = this.provincesSubject.asObservable();
11313
+ this.countries$ = this.countriesSubject.asObservable();
11314
+ this.documentTypes$ = this.documentTypesSubject.asObservable();
11289
11315
  this.isLogged = true;
11290
11316
  this.darkMode = false;
11291
11317
  this.redirect = true;
@@ -11327,7 +11353,8 @@ let RegisterFormEcComponent = class RegisterFormEcComponent extends ComponentHel
11327
11353
  return;
11328
11354
  }
11329
11355
  if (this.registerForm.valid) {
11330
- this.authService.signUp(this.registerForm.value).toPromise().then(res => {
11356
+ const normalizedData = this.normalizeRegisterData(this.registerForm.value);
11357
+ this.authService.signUp(normalizedData).toPromise().then(res => {
11331
11358
  this.register_loading = false;
11332
11359
  let messageKey;
11333
11360
  switch (true) {
@@ -11369,6 +11396,18 @@ let RegisterFormEcComponent = class RegisterFormEcComponent extends ComponentHel
11369
11396
  this.register_loading = false;
11370
11397
  }
11371
11398
  };
11399
+ this.onCountrySelected = (value) => {
11400
+ $('#selectOpPais').attr('disabled', true);
11401
+ this.registerForm.controls['countryCode'].setValue(value);
11402
+ this.registerForm.controls['provinceCode'].setValue('');
11403
+ value != '' && this.provincesSubject.next(this.countriesSubject.value.find(country => country.code == value).provinces);
11404
+ };
11405
+ this.onGenderSelected = (value) => {
11406
+ $('#selectOpSexo').attr('disabled', true);
11407
+ };
11408
+ this.onProvincesSelected = (value) => {
11409
+ $('#selectOpProvincia').attr('disabled', true);
11410
+ };
11372
11411
  this.ecOnConstruct();
11373
11412
  }
11374
11413
  ngOnInit() {
@@ -11380,7 +11419,40 @@ let RegisterFormEcComponent = class RegisterFormEcComponent extends ComponentHel
11380
11419
  plainPassword2: ['', Validators.required],
11381
11420
  newsletter: [false],
11382
11421
  terms: ['', Validators.required],
11383
- birthday: [''],
11422
+ birthday: [null, [this.optionalMaxLengthValidator(11)]],
11423
+ // Dirección (opcional, pero si se envía, se recomienda enviar todos los campos internos)
11424
+ countryCode: [''],
11425
+ provinceCode: [null],
11426
+ street: [null],
11427
+ city: [''],
11428
+ postcode: [''],
11429
+ // Datos empresa (opcionales)
11430
+ companyName: [''],
11431
+ legalDenomination: [''],
11432
+ // Datos personales adicionales (opcionales)
11433
+ gender: [null],
11434
+ phoneNumber: ['', [Validators.pattern('[0-9]+')]],
11435
+ subscribedToNewsletter: [false],
11436
+ documentType: [null],
11437
+ documentNumber: [''],
11438
+ // Comentarios y contacto (opcionales)
11439
+ comments: ['', []],
11440
+ contactFirstName: ['', []],
11441
+ contactLastName: ['', []],
11442
+ contactCompanyPosition: ['', []],
11443
+ contactEmail: ['', []],
11444
+ contactDocumentType: ['', []],
11445
+ contactDocumentNumber: ['', []],
11446
+ }, {
11447
+ validators: [this.direccionCompletaValidator()]
11448
+ });
11449
+ this.authService.getCountriesData().then(res => {
11450
+ this.countriesSubject.next(res);
11451
+ let documentTypes = [];
11452
+ res.map(paises => {
11453
+ this.consts.getLocale().toLocaleLowerCase().includes(paises.code.toLocaleLowerCase()) && (documentTypes = paises.documentTypes || []);
11454
+ });
11455
+ this.documentTypesSubject.next(documentTypes);
11384
11456
  });
11385
11457
  this.channelConfigService.channelConfig$.subscribe((config) => {
11386
11458
  if (config && config.isAccountVerificationRequired !== undefined) {
@@ -11398,8 +11470,38 @@ let RegisterFormEcComponent = class RegisterFormEcComponent extends ComponentHel
11398
11470
  });
11399
11471
  this.ecOnInit();
11400
11472
  }
11401
- prueba() {
11402
- this.toastr.showPersistent('hola');
11473
+ direccionCompletaValidator() {
11474
+ return (control) => {
11475
+ var _a, _b, _c, _d, _e;
11476
+ const street = (_a = control.get('street')) === null || _a === void 0 ? void 0 : _a.value;
11477
+ const city = (_b = control.get('city')) === null || _b === void 0 ? void 0 : _b.value;
11478
+ const provinceCode = (_c = control.get('provinceCode')) === null || _c === void 0 ? void 0 : _c.value;
11479
+ const countryCode = (_d = control.get('countryCode')) === null || _d === void 0 ? void 0 : _d.value;
11480
+ const postcode = (_e = control.get('postcode')) === null || _e === void 0 ? void 0 : _e.value;
11481
+ const hasValue = (val) => val !== null && val !== undefined && val.toString().trim() !== '';
11482
+ const anyFieldSet = [street, city, provinceCode, countryCode, postcode].some(hasValue);
11483
+ const allFieldsSet = [street, city, provinceCode, countryCode, postcode].every(hasValue);
11484
+ // Si al menos un campo de dirección está establecido, todos deben estarlo
11485
+ // Si no hay ningún campo de dirección establecido, no se aplica la validación
11486
+ if (anyFieldSet && !allFieldsSet) {
11487
+ return { direccionIncompleta: true };
11488
+ }
11489
+ return null;
11490
+ };
11491
+ }
11492
+ optionalMaxLengthValidator(max) {
11493
+ return (control) => {
11494
+ if (!control.value)
11495
+ return null;
11496
+ return control.value.length > max ? { maxLength: true } : null;
11497
+ };
11498
+ }
11499
+ normalizeRegisterData(data) {
11500
+ const normalizeString = (val) => val === undefined || val === null || val.toString().trim() === '' ? null : val.toString().trim();
11501
+ const normalizeBool = (val) => typeof val === 'boolean' ? val : val === 'true' ? true : val === 'false' ? false : null;
11502
+ return Object.assign(Object.assign({}, data), { birthday: normalizeString(data.birthday) || '', companyName: normalizeString(data.companyName), legalDenomination: normalizeString(data.legalDenomination), gender: normalizeString(data.gender), phoneNumber: normalizeString(data.phoneNumber), subscribedToNewsletter: normalizeBool(data.subscribedToNewsletter), documentType: normalizeString(data.documentType), documentNumber: normalizeString(data.documentNumber), comments: normalizeString(data.comments), contactFirstName: normalizeString(data.contactFirstName), contactLastName: normalizeString(data.contactLastName), contactCompanyPosition: normalizeString(data.contactCompanyPosition), contactEmail: normalizeString(data.contactEmail), contactDocumentType: normalizeString(data.contactDocumentType), contactDocumentNumber: normalizeString(data.contactDocumentNumber),
11503
+ // Dirección
11504
+ countryCode: normalizeString(data.countryCode), provinceCode: normalizeString(data.provinceCode), street: normalizeString(data.street), city: normalizeString(data.city), postcode: normalizeString(data.postcode) });
11403
11505
  }
11404
11506
  };
11405
11507
  RegisterFormEcComponent.ctorParameters = () => [
@@ -11408,7 +11510,8 @@ RegisterFormEcComponent.ctorParameters = () => [
11408
11510
  { type: Router },
11409
11511
  { type: AnalyticsService },
11410
11512
  { type: FormBuilder },
11411
- { type: ChannelConfigService }
11513
+ { type: ChannelConfigService },
11514
+ { type: Constants }
11412
11515
  ];
11413
11516
  __decorate$1n([
11414
11517
  Input()