@maplander/components 0.19.14 → 0.20.2

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.
Files changed (31) hide show
  1. package/_theming.scss +4 -0
  2. package/bundles/maplander-components.umd.js +171 -39
  3. package/bundles/maplander-components.umd.js.map +1 -1
  4. package/bundles/maplander-components.umd.min.js +2 -2
  5. package/bundles/maplander-components.umd.min.js.map +1 -1
  6. package/esm2015/lib/components/filters/filters.component.js +8 -5
  7. package/esm2015/lib/components/filters/filters.module.js +3 -1
  8. package/esm2015/lib/components/property/components/details/details.component.js +3 -3
  9. package/esm2015/lib/components/property/components/editor/editor.component.js +13 -3
  10. package/esm2015/lib/components/property/components/multimedia-uploader/multimedia-uploader.component.js +7 -1
  11. package/esm2015/lib/components/property/components/property/property.component.js +12 -4
  12. package/esm2015/lib/components/property/validators/currency-filter-validator.js +36 -0
  13. package/esm2015/lib/components/property-card/property-card.component.js +70 -3
  14. package/esm5/lib/components/filters/filters.component.js +8 -5
  15. package/esm5/lib/components/filters/filters.module.js +3 -1
  16. package/esm5/lib/components/property/components/details/details.component.js +3 -3
  17. package/esm5/lib/components/property/components/editor/editor.component.js +13 -3
  18. package/esm5/lib/components/property/components/multimedia-uploader/multimedia-uploader.component.js +7 -1
  19. package/esm5/lib/components/property/components/property/property.component.js +12 -4
  20. package/esm5/lib/components/property/validators/currency-filter-validator.js +36 -0
  21. package/esm5/lib/components/property-card/property-card.component.js +84 -3
  22. package/fesm2015/maplander-components.js +158 -40
  23. package/fesm2015/maplander-components.js.map +1 -1
  24. package/fesm5/maplander-components.js +172 -40
  25. package/fesm5/maplander-components.js.map +1 -1
  26. package/lib/components/property/components/editor/editor.component.d.ts +1 -0
  27. package/lib/components/property/components/property/property.component.d.ts +3 -1
  28. package/lib/components/property/validators/currency-filter-validator.d.ts +2 -0
  29. package/lib/components/property-card/property-card.component.d.ts +7 -2
  30. package/maplander-components.metadata.json +1 -1
  31. package/package.json +12 -12
@@ -3,7 +3,7 @@
3
3
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
5
  import { Component, ElementRef, Inject, Input, Optional, Renderer2 } from '@angular/core';
6
- import { FormBuilder } from '@angular/forms';
6
+ import { FormBuilder, Validators } from '@angular/forms';
7
7
  import { Subscription } from 'rxjs';
8
8
  import { Currency, OfferingTypeEnum, PropertyTypeEnum } from '@maplander/types';
9
9
  import { ConstantsComponents } from '../../constantsComponents';
@@ -14,6 +14,7 @@ import { FiltersService } from './filters.service';
14
14
  import { FiltersChangeType } from '../../utils/enums';
15
15
  import { FILTERS_TOKEN } from './token';
16
16
  import { MUtils } from '../../utils/classes/mUtils';
17
+ import { CurrencyFilterValidator } from '../property/validators/currency-filter-validator';
17
18
  export class FiltersComponent {
18
19
  /**
19
20
  * @param {?} _config
@@ -186,14 +187,16 @@ export class FiltersComponent {
186
187
  this.filtersForm = this._formBuilder.group({
187
188
  offering: [],
188
189
  currency: [],
189
- minPrice: [],
190
- maxPrice: [],
190
+ minPrice: ['', [Validators.required, Validators.pattern(new RegExp('(^[0-9]+)'))]],
191
+ maxPrice: ['', [Validators.required, Validators.pattern(new RegExp('(^[0-9]+)'))]],
191
192
  bedrooms: [],
192
193
  bathrooms: [],
193
194
  parkingPlaces: [],
194
195
  surface: [],
195
196
  surfaceUnit: [],
196
197
  roi: []
198
+ }, {
199
+ validator: CurrencyFilterValidator('minPrice', 'maxPrice')
197
200
  });
198
201
  }
199
202
  /**
@@ -447,7 +450,7 @@ export class FiltersComponent {
447
450
  FiltersComponent.decorators = [
448
451
  { type: Component, args: [{
449
452
  selector: 'lib-filters',
450
- template: "<!-- Todo: [FiltersComponent] Refactor code -->\r\n<form class=\"filters\" [formGroup]=\"filtersForm\" [ngClass]=\"{'filters--opened': propertyTypeSelected.value !== 'NONE'}\">\r\n <ng-template [ngIf]=\"!isOPI\">\r\n <div class=\"float-button-close\">\r\n <button mat-icon-button type=\"button\" class=\"float-button-close__button\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n <div class=\"body\">\r\n <div class=\"--padding\">\r\n <div class=\"header\">\r\n <mat-form-field class=\"currency\" appearance=\"outline\">\r\n <mat-label>Divisa</mat-label>\r\n <mat-select formControlName=\"currency\">\r\n <ng-container *ngFor=\"let currency of currencyList\">\r\n <mat-option [value]=\"currency.type\" (click)=\"changeCurrency(currency.type)\">\r\n {{currency.type}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-button-toggle-group class=\"offering-type-list\" name=\"offering-type\" formControlName=\"offering\"\r\n aria-label=\"Offering type\">\r\n <mat-button-toggle (click)=\"changeOffering('SALE')\" [value]=\"'SALE'\"\r\n [disabled]=\"propertyTypeSelected.value === 'NONE' || propertyTypeSelected.value === 'ROOM'\">\r\n Venta\r\n </mat-button-toggle>\r\n <mat-button-toggle (click)=\"changeOffering('RENT')\" [value]=\"'RENT'\"\r\n [disabled]=\"propertyTypeSelected.value === 'NONE' || propertyTypeSelected.value === 'INVESTMENT'\">\r\n Renta\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n <div class=\"property-type-list mat-elevation-z2\">\r\n <ng-container *ngFor=\"let type of propertyTypeList; let i = index\">\r\n <ng-template [ngIf]=\"type.value !== 'NONE'\">\r\n <div class=\"property-type-list__button\">\r\n <div\r\n class=\"property-type-list__border\"\r\n [ngClass]=\"{'property-type-list__border--active': (type.value === propertyTypeSelected.value) || (propertyTypeSelected.value === 'NONE') || ((type.value === 'HOUSE' || type.value === 'APARTMENT') && propertyTypeSelected.value === 'RESIDENTIAL')}\"\r\n [ngStyle]=\"{'border-color': 'var(--' + type.iconName + ')'}\">\r\n <button mat-mini-fab=\"\" type=\"button\" (click)=\"changePropertyType(i)\"\r\n [ngStyle]=\"{'background-color': 'var(--' + type.iconName + ')'}\">\r\n <span class=\"property-type-list__icon ic-property-{{type.iconName}}\"></span>\r\n </button>\r\n </div>\r\n <span class=\"property-type-list__label\">{{type.shortName}}</span>\r\n <ng-template [ngIf]=\"type.value === 'RESIDENTIAL' && propertyTypeSelected.value === 'RESIDENTIAL'\">\r\n <div class=\"property-type-list__divider property-type-list__divider--left\"></div>\r\n <div class=\"property-type-list__divider property-type-list__divider--right\"></div>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n <ng-template [ngIf]=\"isOPI\">\r\n <div class=\"all\">\r\n <button mat-raised-button=\"\" type=\"button\" class=\"all__button\"\r\n [ngClass]=\"{'all__button--active': propertyTypeSelected.value === 'NONE'}\"\r\n (click)=\"changePropertyType(9)\">Todo\r\n </button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value !== 'NONE'\">\r\n <mat-divider></mat-divider>\r\n <div class=\"--padding\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-price\"></span>\r\n Presupuesto\r\n </h4>\r\n <div class=\"budget\">\r\n <!-- Min price [START] -->\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>M\u00EDnimo</mat-label>\r\n <mat-select formControlName=\"minPrice\">\r\n <mat-option [value]=\"0\">\r\n Sin l\u00EDmite\r\n </mat-option>\r\n <ng-container *ngFor=\"let price of minPriceList\">\r\n <mat-option [value]=\"price\">\r\n {{price | markerPrice : filter.currency}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- Min price [END] -->\r\n <!-- Max price [START] -->\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>M\u00E1ximo</mat-label>\r\n <mat-select formControlName=\"maxPrice\">\r\n <mat-option [value]=\"0\">\r\n Sin l\u00EDmite\r\n </mat-option>\r\n <ng-container *ngFor=\"let price of maxPriceList\">\r\n <mat-option [value]=\"price\">\r\n {{price | markerPrice : filter.currency}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- Max price [END] -->\r\n </div>\r\n <div class=\"features\">\r\n <ng-template\r\n [ngIf]=\"propertyTypeSelected.value === 'RESIDENTIAL' || propertyTypeSelected.value === 'HOUSE' || propertyTypeSelected.value === 'APARTMENT'\">\r\n <div class=\"features__bedrooms\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-bedroom\"></span>\r\n Habitaciones\r\n </h4>\r\n <mat-button-toggle-group name=\"bedrooms\" aria-label=\"Bedrooms\" formControlName=\"bedrooms\">\r\n <ng-container *ngFor=\"let bedroom of bedroomsList\">\r\n <ng-template [ngIf]=\"bedroom === 0\" [ngIfElse]=\"bedroomNumber\">\r\n <mat-button-toggle [value]=\"bedroom\" class=\"features__bedrooms--unlimited\">\r\n Sin <br> l\u00EDmite\r\n </mat-button-toggle>\r\n </ng-template>\r\n <ng-template #bedroomNumber>\r\n <mat-button-toggle [value]=\"bedroom\">{{bedroom}}+\r\n </mat-button-toggle>\r\n </ng-template>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n <div class=\"features__bathrooms\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-bathroom\"></span>\r\n Ba\u00F1os\r\n </h4>\r\n <mat-button-toggle-group name=\"bathrooms\" aria-label=\"Bathrooms\" formControlName=\"bathrooms\">\r\n <ng-container *ngFor=\"let bathroom of bathroomsList\">\r\n <ng-template [ngIf]=\"bathroom === 0\" [ngIfElse]=\"bathroomNumber\">\r\n <mat-button-toggle [value]=\"bathroom\"\r\n class=\"features__bathrooms--unlimited\">\r\n Sin <br> l\u00EDmite\r\n </mat-button-toggle>\r\n </ng-template>\r\n <ng-template #bathroomNumber>\r\n <mat-button-toggle [value]=\"bathroom\">{{bathroom}}+\r\n </mat-button-toggle>\r\n </ng-template>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value !== 'LAND' && propertyTypeSelected.value !== 'INVESTMENT'\">\r\n <div class=\"features__parking-places\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-parking\"></span>\r\n Estacionamientos\r\n </h4>\r\n <mat-button-toggle-group name=\"parking_places\" aria-label=\"Parking Places\"\r\n formControlName=\"parkingPlaces\">\r\n <ng-container *ngFor=\"let parking of parkingPlacesList\">\r\n <ng-template [ngIf]=\"parking === 0\" [ngIfElse]=\"parkingNumber\">\r\n <mat-button-toggle [value]=\"parking\"\r\n class=\"features__parking-places--unlimited\">\r\n Sin <br> l\u00EDmite\r\n </mat-button-toggle>\r\n </ng-template>\r\n <ng-template #parkingNumber>\r\n <mat-button-toggle [value]=\"parking\">{{parking}}+\r\n </mat-button-toggle>\r\n </ng-template>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value !== 'INVESTMENT'\">\r\n <div class=\"features__surface\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-surface\"></span>\r\n Superficie\r\n </h4>\r\n <div class=\"--row\">\r\n <mat-form-field appearance=\"outline\" class=\"--col\">\r\n <mat-label>\u00C1rea</mat-label>\r\n <mat-select formControlName=\"surface\">\r\n <mat-option [value]=\"0\">\r\n Sin l\u00EDmite\r\n </mat-option>\r\n <ng-container *ngFor=\"let surface of surfaceList\">\r\n <mat-option [value]=\"surface\">\r\n {{surface}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-button-toggle-group name=\"unit_surface\" aria-label=\"Unit surface\" formControlName=\"surfaceUnit\">\r\n <mat-button-toggle [value]=\"0\">m2</mat-button-toggle>\r\n <mat-button-toggle [value]=\"1\">sq ft</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value === 'INVESTMENT'\">\r\n <div class=\"feature investment\">\r\n <h4 class=\"--title\">Retorno de inversi\u00F3n</h4>\r\n <mat-form-field appearance=\"outline\" class=\"--col\">\r\n <mat-label>Porcentaje</mat-label>\r\n <mat-select formControlName=\"roi\">\r\n <mat-option [value]=\"0\">\r\n Sin l\u00EDmite\r\n </mat-option>\r\n <ng-container *ngFor=\"let roi of roiList\">\r\n <mat-option [value]=\"roi\">\r\n {{roi}}%\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </ng-template>\r\n <div class=\"amenities-container\">\r\n <ng-template [ngIf]=\"propertyTypeSelected.amenities.length > 0\">\r\n <div class=\"amenities\">\r\n <h4 class=\"--title\">\r\n Amenidades\r\n </h4>\r\n <div class=\"amenities__list\">\r\n <ng-container *ngFor=\"let amenity of propertyTypeSelected.amenities\">\r\n <div class=\"amenities__amenity\" matRipple (click)=\"updateAmenity(amenity)\">\r\n <span class=\"amenity__icon ic-amenities-{{amenity.iconName}}\"\r\n [ngClass]=\"{'amenity--active': amenity.checked}\"></span>\r\n <span class=\"amenity__label\">{{amenity.name}}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.features.length > 0\">\r\n <div class=\"amenities\">\r\n <h4 class=\"--title\">\r\n Caracteristicas de la ubicaci\u00F3n\r\n </h4>\r\n <div class=\"amenities__list\">\r\n <ng-container *ngFor=\"let feature of propertyTypeSelected.features\">\r\n <div class=\"amenities__amenity\" matRipple (click)=\"updateAmenity(feature)\">\r\n <span class=\"amenity__icon ic-amenities-{{feature.iconName}}\"\r\n [ngClass]=\"{'amenity--active': feature.checked}\"></span>\r\n <span class=\"amenity__label\">{{feature.name}}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"actions\">\r\n <ng-template [ngIf]=\"!isOPI\" [ngIfElse]=\"closeButtonTemplate\">\r\n <button mat-flat-button=\"\" type=\"button\" class=\"action__button\" color=\"primary\" (click)=\"saveSearchByFilters()\">\r\n GUARDAR\r\n </button>\r\n </ng-template>\r\n <ng-template #closeButtonTemplate>\r\n <button mat-flat-button=\"\" type=\"button\" class=\"action__button\" color=\"primary\" (click)=\"close()\">CERRAR</button>\r\n </ng-template>\r\n <button mat-flat-button=\"\" type=\"button\" class=\"action__button\" color=\"primary\"\r\n (click)=\"resetFilters()\">LIMPIAR\r\n </button>\r\n <button mat-flat-button=\"\" type=\"submit\" class=\"action__button\" color=\"primary\"\r\n (click)=\"applyFilters()\">APLICAR\r\n </button>\r\n </div>\r\n</form>\r\n",
453
+ template: "<!-- Todo: [FiltersComponent] Refactor code -->\r\n<form class=\"filters\" [formGroup]=\"filtersForm\" [ngClass]=\"{'filters--opened': propertyTypeSelected.value !== 'NONE'}\">\r\n <ng-template [ngIf]=\"!isOPI\">\r\n <div class=\"float-button-close\">\r\n <button mat-icon-button type=\"button\" class=\"float-button-close__button\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n <div class=\"body\">\r\n <div class=\"--padding\">\r\n <div class=\"header\">\r\n <mat-form-field class=\"currency\" appearance=\"outline\">\r\n <mat-label>Divisa</mat-label>\r\n <mat-select formControlName=\"currency\">\r\n <ng-container *ngFor=\"let currency of currencyList\">\r\n <mat-option [value]=\"currency.type\" (click)=\"changeCurrency(currency.type)\">\r\n {{currency.type}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-button-toggle-group class=\"offering-type-list\" name=\"offering-type\" formControlName=\"offering\"\r\n aria-label=\"Offering type\">\r\n <mat-button-toggle (click)=\"changeOffering('SALE')\" [value]=\"'SALE'\"\r\n [disabled]=\"propertyTypeSelected.value === 'NONE' || propertyTypeSelected.value === 'ROOM'\">\r\n Venta\r\n </mat-button-toggle>\r\n <mat-button-toggle (click)=\"changeOffering('RENT')\" [value]=\"'RENT'\"\r\n [disabled]=\"propertyTypeSelected.value === 'NONE' || propertyTypeSelected.value === 'INVESTMENT'\">\r\n Renta\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n <div class=\"property-type-list mat-elevation-z2\">\r\n <ng-container *ngFor=\"let type of propertyTypeList; let i = index\">\r\n <ng-template [ngIf]=\"type.value !== 'NONE'\">\r\n <div class=\"property-type-list__button\">\r\n <div\r\n class=\"property-type-list__border\"\r\n [ngClass]=\"{'property-type-list__border--active': (type.value === propertyTypeSelected.value) || (propertyTypeSelected.value === 'NONE') || ((type.value === 'HOUSE' || type.value === 'APARTMENT') && propertyTypeSelected.value === 'RESIDENTIAL')}\"\r\n [ngStyle]=\"{'border-color': 'var(--' + type.iconName + ')'}\">\r\n <button mat-mini-fab=\"\" type=\"button\" (click)=\"changePropertyType(i)\"\r\n [ngStyle]=\"{'background-color': 'var(--' + type.iconName + ')'}\">\r\n <span class=\"property-type-list__icon ic-property-{{type.iconName}}\"></span>\r\n </button>\r\n </div>\r\n <span class=\"property-type-list__label\">{{type.shortName}}</span>\r\n <ng-template [ngIf]=\"type.value === 'RESIDENTIAL' && propertyTypeSelected.value === 'RESIDENTIAL'\">\r\n <div class=\"property-type-list__divider property-type-list__divider--left\"></div>\r\n <div class=\"property-type-list__divider property-type-list__divider--right\"></div>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n <ng-template [ngIf]=\"isOPI\">\r\n <div class=\"all\">\r\n <button mat-raised-button=\"\" type=\"button\" class=\"all__button\"\r\n [ngClass]=\"{'all__button--active': propertyTypeSelected.value === 'NONE'}\"\r\n (click)=\"changePropertyType(9)\">Todo\r\n </button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value !== 'NONE'\">\r\n <mat-divider></mat-divider>\r\n <div class=\"--padding\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-price\"></span>\r\n Presupuesto\r\n </h4>\r\n <div class=\"budget\">\r\n <!-- Min price [START] -->\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>M\u00EDnimo</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" type=\"number\" title=\"Min price\" formControlName=\"minPrice\" min=\"1\" >\r\n <mat-error *ngIf=\"filtersForm.controls['minPrice'].hasError('pattern')\">\r\n Debe ingresar solo numeros\r\n </mat-error>\r\n <mat-error *ngIf=\"filtersForm.controls['minPrice'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Min price [END] -->\r\n <!-- Max price [START] -->\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>M\u00E1ximo</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" type=\"number\" title=\"max price\" formControlName=\"maxPrice\">\r\n <mat-error *ngIf=\"filtersForm.controls['maxPrice'].hasError('pattern')\">\r\n Debe ingresar solo numeros\r\n </mat-error>\r\n <mat-error *ngIf=\"filtersForm.controls['maxPrice'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n <mat-error *ngIf=\"filtersForm.controls['maxPrice'].hasError('currency')\">\r\n Valor minimo excedido\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Max price [END] -->\r\n </div>\r\n <div class=\"features\">\r\n <ng-template\r\n [ngIf]=\"propertyTypeSelected.value === 'RESIDENTIAL' || propertyTypeSelected.value === 'HOUSE' || propertyTypeSelected.value === 'APARTMENT'\">\r\n <div class=\"features__bedrooms\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-bedroom\"></span>\r\n Habitaciones\r\n </h4>\r\n <mat-button-toggle-group name=\"bedrooms\" aria-label=\"Bedrooms\" formControlName=\"bedrooms\">\r\n <ng-container *ngFor=\"let bedroom of bedroomsList\">\r\n <ng-template [ngIf]=\"bedroom === 0\" [ngIfElse]=\"bedroomNumber\">\r\n <mat-button-toggle [value]=\"bedroom\" class=\"features__bedrooms--unlimited\">\r\n Sin <br> l\u00EDmite\r\n </mat-button-toggle>\r\n </ng-template>\r\n <ng-template #bedroomNumber>\r\n <mat-button-toggle [value]=\"bedroom\">{{bedroom}}+\r\n </mat-button-toggle>\r\n </ng-template>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n <div class=\"features__bathrooms\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-bathroom\"></span>\r\n Ba\u00F1os\r\n </h4>\r\n <mat-button-toggle-group name=\"bathrooms\" aria-label=\"Bathrooms\" formControlName=\"bathrooms\">\r\n <ng-container *ngFor=\"let bathroom of bathroomsList\">\r\n <ng-template [ngIf]=\"bathroom === 0\" [ngIfElse]=\"bathroomNumber\">\r\n <mat-button-toggle [value]=\"bathroom\"\r\n class=\"features__bathrooms--unlimited\">\r\n Sin <br> l\u00EDmite\r\n </mat-button-toggle>\r\n </ng-template>\r\n <ng-template #bathroomNumber>\r\n <mat-button-toggle [value]=\"bathroom\">{{bathroom}}+\r\n </mat-button-toggle>\r\n </ng-template>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value !== 'LAND' && propertyTypeSelected.value !== 'INVESTMENT'\">\r\n <div class=\"features__parking-places\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-parking\"></span>\r\n Estacionamientos\r\n </h4>\r\n <mat-button-toggle-group name=\"parking_places\" aria-label=\"Parking Places\"\r\n formControlName=\"parkingPlaces\">\r\n <ng-container *ngFor=\"let parking of parkingPlacesList\">\r\n <ng-template [ngIf]=\"parking === 0\" [ngIfElse]=\"parkingNumber\">\r\n <mat-button-toggle [value]=\"parking\"\r\n class=\"features__parking-places--unlimited\">\r\n Sin <br> l\u00EDmite\r\n </mat-button-toggle>\r\n </ng-template>\r\n <ng-template #parkingNumber>\r\n <mat-button-toggle [value]=\"parking\">{{parking}}+\r\n </mat-button-toggle>\r\n </ng-template>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value !== 'INVESTMENT'\">\r\n <div class=\"features__surface\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-surface\"></span>\r\n Superficie\r\n </h4>\r\n <div class=\"--row\">\r\n <mat-form-field appearance=\"outline\" class=\"--col\">\r\n <mat-label>\u00C1rea</mat-label>\r\n <mat-select formControlName=\"surface\">\r\n <mat-option [value]=\"0\">\r\n Sin l\u00EDmite\r\n </mat-option>\r\n <ng-container *ngFor=\"let surface of surfaceList\">\r\n <mat-option [value]=\"surface\">\r\n {{surface}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-button-toggle-group name=\"unit_surface\" aria-label=\"Unit surface\" formControlName=\"surfaceUnit\">\r\n <mat-button-toggle [value]=\"0\">m2</mat-button-toggle>\r\n <mat-button-toggle [value]=\"1\">sq ft</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value === 'INVESTMENT'\">\r\n <div class=\"feature investment\">\r\n <h4 class=\"--title\">Retorno de inversi\u00F3n</h4>\r\n <mat-form-field appearance=\"outline\" class=\"--col\">\r\n <mat-label>Porcentaje</mat-label>\r\n <mat-select formControlName=\"roi\">\r\n <mat-option [value]=\"0\">\r\n Sin l\u00EDmite\r\n </mat-option>\r\n <ng-container *ngFor=\"let roi of roiList\">\r\n <mat-option [value]=\"roi\">\r\n {{roi}}%\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </ng-template>\r\n <div class=\"amenities-container\">\r\n <ng-template [ngIf]=\"propertyTypeSelected.amenities.length > 0\">\r\n <div class=\"amenities\">\r\n <h4 class=\"--title\">\r\n Amenidades\r\n </h4>\r\n <div class=\"amenities__list\">\r\n <ng-container *ngFor=\"let amenity of propertyTypeSelected.amenities\">\r\n <div class=\"amenities__amenity\" matRipple (click)=\"updateAmenity(amenity)\">\r\n <span class=\"amenity__icon ic-amenities-{{amenity.iconName}}\"\r\n [ngClass]=\"{'amenity--active': amenity.checked}\"></span>\r\n <span class=\"amenity__label\">{{amenity.name}}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.features.length > 0\">\r\n <div class=\"amenities\">\r\n <h4 class=\"--title\">\r\n Caracteristicas de la ubicaci\u00F3n\r\n </h4>\r\n <div class=\"amenities__list\">\r\n <ng-container *ngFor=\"let feature of propertyTypeSelected.features\">\r\n <div class=\"amenities__amenity\" matRipple (click)=\"updateAmenity(feature)\">\r\n <span class=\"amenity__icon ic-amenities-{{feature.iconName}}\"\r\n [ngClass]=\"{'amenity--active': feature.checked}\"></span>\r\n <span class=\"amenity__label\">{{feature.name}}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"actions\">\r\n <ng-template [ngIf]=\"!isOPI\" [ngIfElse]=\"closeButtonTemplate\">\r\n <button mat-flat-button=\"\" type=\"button\" class=\"action__button\" color=\"primary\" (click)=\"saveSearchByFilters()\">\r\n GUARDAR\r\n </button>\r\n </ng-template>\r\n <ng-template #closeButtonTemplate>\r\n <button mat-flat-button=\"\" type=\"button\" class=\"action__button\" color=\"primary\" (click)=\"close()\">CERRAR</button>\r\n </ng-template>\r\n <button mat-flat-button=\"\" type=\"button\" class=\"action__button\" color=\"primary\"\r\n (click)=\"resetFilters()\">LIMPIAR\r\n </button>\r\n <button mat-flat-button=\"\" type=\"submit\" class=\"action__button\" color=\"primary\"\r\n (click)=\"applyFilters()\">APLICAR\r\n </button>\r\n </div>\r\n</form>\r\n",
451
454
  styles: [":host{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;display:flex;background:var(--overlay);transition:250ms}.filters--opened{height:90%!important}@media screen and (max-width:600px){.filters--opened{width:100%!important;height:100%!important;top:0!important}}.filters{width:700px;height:auto;margin:auto;border-radius:16px;position:relative;overflow:hidden;transition:150ms}.filters .--padding{padding:16px 48px;box-sizing:border-box}.filters .--row{display:flex;justify-content:space-between;align-items:flex-start}.filters .--col{width:45%}.filters .--title{margin:16px 0;color:#707070}.filters .float-button-close{position:absolute;top:16px;right:16px;height:16px;border-radius:50%}.filters .body{height:calc(100% - 36px);overflow-x:hidden;overflow-y:auto}.filters .header{display:flex;align-items:center;justify-content:space-around;margin-bottom:8px}.filters .listing-types{width:100%;border-radius:16px}.filters .listing-types mat-button-toggle{width:50%;height:36px}.filters ::ng-deep .listing-types mat-button-toggle button{height:36px}.filters ::ng-deep .listing-types mat-button-toggle button .mat-button-toggle-label-content{line-height:36px}.filters .currency ::ng-deep .mat-form-field-wrapper{padding:0}@media screen and (max-width:600px){.filters{width:100%;position:absolute;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;top:initial;bottom:0;left:0}.filters .--padding{padding:16px 24px}.filters .header{flex-direction:column}.filters .currency{width:70%;margin-bottom:8px}}.filters .offering-type-list{width:40%;border-radius:16px}.filters .offering-type-list mat-button-toggle{width:50%;height:36px}.filters ::ng-deep .offering-type-list mat-button-toggle button{height:36px}.filters ::ng-deep .offering-type-list mat-button-toggle button .mat-button-toggle-label-content{line-height:36px}.filters .property-type-list{display:-ms-grid;display:grid;-ms-grid-columns:(calc(100% / 9))[9];grid-template-columns:repeat(9,calc(100% / 9));-ms-grid-rows:(80px)[1];grid-template-rows:repeat(1,80px);border-radius:40px;padding:8px;box-sizing:border-box}.filters .property-type-list .property-type-list__button{margin:auto;position:relative}.filters .property-type-list .property-type-list__button button{box-shadow:none}.filters .property-type-list .property-type-list__icon{width:24px;height:24px;font-size:24px}.filters .property-type-list .property-type-list__border{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;margin:auto;opacity:.7;border-radius:50%;box-sizing:border-box}.filters .property-type-list .property-type-list__border--active{padding:4px;border:2px solid;opacity:1!important}.filters .property-type-list .property-type-list__label{font-size:12px;display:block;margin:8px 0;text-align:center}.filters .property-type-list .property-type-list__divider{width:14%;height:2px;background:#707070;top:30%;position:absolute}.filters .property-type-list .property-type-list__divider--left{left:-9px}.filters .property-type-list .property-type-list__divider--right{right:-9px}@media screen and (max-width:600px){.filters .offering-type-list{width:70%}.filters .property-type-list{-ms-grid-columns:(calc(100% / 3))[3];grid-template-columns:repeat(3,calc(100% / 3));-ms-grid-rows:(80px)[3];grid-template-rows:repeat(3,80px)}.filters .property-type-list .property-type-list__divider{width:60%}.filters .property-type-list .property-type-list__divider--left{left:-38px}.filters .property-type-list .property-type-list__divider--right{right:-38px}}.filters .all{width:100%;margin:8px 0}.filters .all .all__button{margin:0 40%;width:20%;border-radius:16px;background:0 0}.filters .budget{display:flex}.filters .budget mat-form-field{margin-right:8px;width:calc(100% / 2 - 8px)}.filters .features{display:-ms-grid;display:grid;-ms-grid-columns:(50%)[2];grid-template-columns:repeat(2,50%);-ms-grid-rows:(auto)[2];grid-template-rows:repeat(2,auto)}@media screen and (max-width:600px){.filters .all .all__button{width:50%;margin:0 25%}.filters .features{display:block}.filters .amenities-container{flex-direction:column}}.filters .features .features__bathrooms mat-button-toggle-group,.filters .features .features__bedrooms mat-button-toggle-group,.filters .features .features__parking-places mat-button-toggle-group{width:calc(100% - 16px)}.filters .features .features__bathrooms mat-button-toggle-group mat-button-toggle,.filters .features .features__bedrooms mat-button-toggle-group mat-button-toggle,.filters .features .features__parking-places mat-button-toggle-group mat-button-toggle{width:calc(100% / 5)}.filters .features .features__bedrooms--unlimited ::ng-deep .mat-button-toggle-label-content{line-height:16px;padding:8px;font-size:12px}.filters .features .features__bathrooms--unlimited ::ng-deep .mat-button-toggle-label-content{line-height:16px;padding:8px;font-size:12px}.filters .features .features__parking-places--unlimited ::ng-deep .mat-button-toggle-label-content{line-height:16px;padding:8px;font-size:12px}.filters .features .features__surface mat-button-toggle-group{margin-top:6px;margin-right:16px}.filters .amenities-container{width:100%;-ms-grid-column:1;grid-column-start:1;-ms-grid-column-span:2;grid-column-end:3;display:flex}.filters .amenities{width:50%}@media screen and (max-width:600px){.filters .amenities{width:100%}}.filters .amenities__amenity{width:calc(100% / 3 - 24px);height:120px;border-radius:8px;padding:8px;display:inline-flex;flex-direction:column;align-items:center;box-sizing:border-box;margin:0 8px 8px 0;cursor:pointer}.filters .amenity__icon{display:block;width:24px;height:24px;margin:8px auto;font-size:24px;padding:8px;border-radius:50%}.filters .amenity__label{width:100%;display:block;text-align:center;font-size:12px;margin:auto}.filters .actions{display:flex}.filters .actions .action__button{width:50%;border-radius:0}"]
452
455
  }] }
453
456
  ];
@@ -550,4 +553,4 @@ if (false) {
550
553
  */
551
554
  FiltersComponent.prototype._converter;
552
555
  }
553
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWFwbGFuZGVyL2NvbXBvbmVudHMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9maWx0ZXJzL2ZpbHRlcnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUlMLFFBQVEsRUFDUixTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFdBQVcsRUFBWSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFlLFFBQVEsRUFBc0IsZ0JBQWdCLEVBQWlCLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDL0gsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUVsQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFFbkUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFFeEcsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDdEMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBUWxELE1BQU0sT0FBTyxnQkFBZ0I7Ozs7Ozs7OztJQXNCM0IsWUFDNkMsT0FBZ0IsRUFDbkQsT0FBa0IsRUFDbEIsSUFBZ0IsRUFDaEIsUUFBd0IsRUFDeEIsWUFBeUIsRUFDekIsVUFBb0M7UUFMRCxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ25ELFlBQU8sR0FBUCxPQUFPLENBQVc7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN6QixlQUFVLEdBQVYsVUFBVSxDQUEwQjtRQTFCN0IsaUJBQVksR0FBRyxXQUFXLENBQUM7UUE0QjFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHOzs7O1FBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBSyxJQUFJLEVBQUUsRUFBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7Ozs7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDOzs7O0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLDRDQUE0QyxDQUFDLENBQUM7U0FDbkU7UUFDRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQzs7Ozs7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBRTtZQUNyRCxPQUFPLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQzs7OztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7Ozs7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDOzs7O0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQzs7Ozs7SUFFRCxrQkFBa0IsQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUM7UUFDbkQsUUFBUSxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFO1lBQ3ZDLEtBQUssZ0JBQWdCLENBQUMsSUFBSTtnQkFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0RSxNQUFNO1lBQ1IsS0FBSyxnQkFBZ0IsQ0FBQyxVQUFVO2dCQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3RFLE1BQU07U0FDVDtJQUNILENBQUM7Ozs7O0lBRUQsY0FBYyxDQUFDLEVBQVU7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsbUJBQUEsRUFBRSxFQUFvQixDQUFDO0lBQ2hELENBQUM7Ozs7O0lBRUQsY0FBYyxDQUFDLEVBQVU7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQzVCLENBQUM7Ozs7O0lBRUQsYUFBYSxDQUFDLE9BQW9CO1FBQ2hDLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTs7a0JBQ2IsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ25ELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDakM7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN4QztRQUNELE9BQU8sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ3JDLENBQUM7Ozs7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDOzs7OztJQUVELFlBQVksQ0FBQyxJQUF3QjtRQUNuQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7O2NBQ2pCLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3JELElBQUksSUFBSSxDQUFDLG1CQUFtQixLQUFLLENBQUMsRUFBRTtZQUNsQyxjQUFjLENBQUMsUUFBUSxHQUFHLGNBQWMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUN2RTtRQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztZQUN0QixJQUFJLEVBQUUsSUFBSSxJQUFJLGlCQUFpQixDQUFDLEtBQUs7WUFDckMsTUFBTSxFQUFFLGNBQWM7WUFDdEIsRUFBRSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxDQUFDO1lBQ2xDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxtQkFBbUI7U0FDN0MsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDOzs7OztJQUVELFlBQVksQ0FBQyxxQkFBOEI7UUFDekMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7Ozs7O0lBRU8sU0FBUztRQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDekMsUUFBUSxFQUFFLEVBQUU7WUFDWixRQUFRLEVBQUUsRUFBRTtZQUNaLFFBQVEsRUFBRSxFQUFFO1lBQ1osUUFBUSxFQUFFLEVBQUU7WUFDWixRQUFRLEVBQUUsRUFBRTtZQUNaLFNBQVMsRUFBRSxFQUFFO1lBQ2IsYUFBYSxFQUFFLEVBQUU7WUFDakIsT0FBTyxFQUFFLEVBQUU7WUFDWCxXQUFXLEVBQUUsRUFBRTtZQUNmLEdBQUcsRUFBRSxFQUFFO1NBQ1IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7WUFDMUIsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTtZQUM5QixRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO1lBQzlCLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWM7WUFDcEMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWTtZQUNsQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO1lBQzlCLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVM7WUFDaEMsYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYTtZQUN4QyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO1lBQzdCLFdBQVcsRUFBRSxJQUFJLENBQUMsbUJBQW1CO1lBQ3JDLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUc7U0FDckIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7SUFFTyxlQUFlOztjQUNmLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7UUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsQ0FBQzs7Ozs7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTOzs7O1FBQUMsQ0FBQyxRQUF1QixFQUFFLEVBQUU7WUFDL0QsUUFBUSxRQUFRLENBQUMsSUFBSSxFQUFFO2dCQUNyQixLQUFLLGlCQUFpQixDQUFDLFNBQVM7b0JBQzlCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxRQUFRLENBQUMsa0JBQWtCLENBQUM7b0JBQ3ZELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxpQkFBaUIsQ0FBQyxJQUFJO29CQUN6QixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN6QyxNQUFNO2FBQ1Q7UUFDSCxDQUFDLEVBQUMsQ0FDSCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDOzs7OztJQUVPLFNBQVM7UUFDZixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDOzs7Ozs7SUFFTyxTQUFTLENBQUMsRUFBYTtRQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOztjQUN6QyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSztRQUM1RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN4RyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksbUJBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQVksQ0FBQyxDQUFDO1FBQ25JLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMvRCxDQUFDOzs7OztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEdBQUc7Ozs7UUFBQyxPQUFPLENBQUMsRUFBRTs7a0JBQ2hGLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNuRCxPQUFPLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxFQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsR0FBRzs7OztRQUFDLE9BQU8sQ0FBQyxFQUFFOztrQkFDOUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ25ELE9BQU8sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7Ozs7O0lBRU8sWUFBWSxDQUFDLFVBQXNCLEVBQUUsWUFBOEIsRUFBRSxRQUEwQjs7WUFDakcsSUFBSSxHQUFhLEVBQUU7UUFDdkIsVUFBVSxDQUFDLGNBQWMsQ0FBQyxPQUFPOzs7O1FBQUMsQ0FBQyxLQUFvQixFQUFFLEVBQUU7WUFDekQsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRTtnQkFDOUQsSUFBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQ3JEO1FBQ0gsQ0FBQyxFQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Ozs7OztJQUVPLDJCQUEyQixDQUFDLHdCQUFnQyxJQUFJO1FBQ3RFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0SCxDQUFDOzs7Ozs7SUFFTyxrQkFBa0IsQ0FBQyxPQUFlO1FBQ3hDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO1FBQ3RCLGNBQWMsQ0FBQyxXQUFXLENBQUM7WUFDekIsT0FBTyxFQUFFLE9BQU87WUFDaEIsRUFBRSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxDQUFDO1lBQ2xDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxLQUFLO1NBQ3RELENBQUMsQ0FBQztJQUNMLENBQUM7Ozs7OztJQUVPLHVCQUF1QixDQUFDLElBQWM7O2NBQ3RDLFlBQVksR0FBRyxjQUFjLENBQUMsZUFBZSxFQUFFLElBQUksSUFBSTtRQUM3RCxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RixJQUFJLFlBQVksRUFBRTtZQUNoQixJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3BEO1lBQ0QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFlBQVksQ0FBQyxrQkFBa0IsSUFBSSxLQUFLLENBQUM7U0FDckU7UUFDRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsSUFBSTs7OztRQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBQyxDQUFDO1FBQy9HLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDM0M7SUFDSCxDQUFDOzs7Ozs7SUFFTyxhQUFhLENBQUMsSUFBYTtRQUNqQyxJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDaEU7YUFBTTtZQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDMUU7SUFDSCxDQUFDOzs7OztJQUVPLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVM7OztRQUFDLEdBQUcsRUFBRTtZQUNoRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbkIsQ0FBQyxFQUFDLENBQ0gsQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUzs7OztRQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ25FLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1YsT0FBTzthQUNSO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBQSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQVksQ0FBQyxDQUFDO1FBQy9DLENBQUMsRUFBQyxDQUNILENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVM7Ozs7UUFBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3JFLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1YsT0FBTzthQUNSO1lBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzs7a0JBQ3ZELENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDMUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNwQztRQUNILENBQUMsRUFBQyxDQUNILENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVM7Ozs7UUFBQyxLQUFLLENBQUMsRUFBRTtZQUNuRSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNWLE9BQU87YUFDUjtZQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7O2tCQUN2RCxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQzFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFOztzQkFDSixVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNO2dCQUN0RSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3hFO1FBQ0gsQ0FBQyxFQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7OztZQXJVRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLGdzYkFBdUM7O2FBRXhDOzs7OzBDQXdCSSxRQUFRLFlBQUksTUFBTSxTQUFDLGFBQWE7WUEvQ25DLFNBQVM7WUFQVCxVQUFVO1lBb0JKLGNBQWM7WUFWZCxXQUFXO1lBUVgsd0JBQXdCOzs7b0JBYzdCLEtBQUs7Ozs7SUFBTixpQ0FBd0I7Ozs7O0lBQ3hCLHdDQUE0Qzs7Ozs7SUFDNUMsNENBQW1DOzs7OztJQUNuQyw0Q0FBbUM7Ozs7O0lBQ25DLHlDQUFvQzs7Ozs7SUFDcEMsK0NBQXFDOztJQUNyQyx1Q0FBOEI7O0lBQzlCLDRDQUE0Qzs7SUFDNUMsd0NBQThCOztJQUM5Qix5Q0FBK0I7O0lBQy9CLDZDQUFtQzs7SUFDbkMsd0NBQTJCOztJQUMzQix3Q0FBOEI7O0lBQzlCLHdDQUE4Qjs7SUFDOUIsdUNBQTZCOztJQUM3QixtQ0FBeUI7O0lBQ3pCLGdEQUE4Qzs7SUFDOUMsa0NBQXNCOztJQUN0QixpQ0FBc0I7O0lBQ3RCLCtDQUFtQzs7Ozs7SUFHakMsbUNBQTJEOzs7OztJQUMzRCxtQ0FBMEI7Ozs7O0lBQzFCLGdDQUF3Qjs7Ozs7SUFDeEIsb0NBQWdDOzs7OztJQUNoQyx3Q0FBaUM7Ozs7O0lBQ2pDLHNDQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFNpbXBsZUNoYW5nZXNcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtGb3JtQnVpbGRlciwgRm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtBcHBVdGlsLCBDRVIsIEN1cnJlbmN5LCBGaWx0ZXIsIExpbWl0UHJpY2UsIE9mZmVyaW5nVHlwZUVudW0sIFByb3BlcnR5UmFuZ2UsIFByb3BlcnR5VHlwZUVudW19IGZyb20gJ0BtYXBsYW5kZXIvdHlwZXMnO1xyXG5pbXBvcnQge0NvbnN0YW50c0NvbXBvbmVudHN9IGZyb20gJy4uLy4uL2NvbnN0YW50c0NvbXBvbmVudHMnO1xyXG5pbXBvcnQge1V0aWxzfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7RmlsdGVyc0NoYW5nZX0gZnJvbSAnLi8uLi8uLi91dGlscy9tb2RlbHMvZmlsdGVycy1jaGFuZ2UnO1xyXG5pbXBvcnQge0ZpbHRlcnNXcmFwcGVyfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc2VzL2ZpbHRlcnMtd3JhcHBlcic7XHJcbmltcG9ydCB7UHJvcGVydHlUeXBlSXRlbX0gZnJvbSAnLi8uLi8uLi91dGlscy9tb2RlbHMvcHJvcGVydHktdHlwZS1pdGVtJztcclxuaW1wb3J0IHtDdXJyZW5jeUNvbnZlcnRlclNlcnZpY2V9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvY3VycmVuY3ktY29udmVydGVyL2N1cnJlbmN5LWNvbnZlcnRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtGaWx0ZXJzfSBmcm9tICcuLi8uLi91dGlscy9pbnRlcmZhY2VzL2ZpbHRlcnMnO1xyXG5pbXBvcnQge0ZpbHRlcnNTZXJ2aWNlfSBmcm9tICcuL2ZpbHRlcnMuc2VydmljZSc7XHJcbmltcG9ydCB7RmlsdGVyc0NoYW5nZVR5cGV9IGZyb20gJy4uLy4uL3V0aWxzL2VudW1zJztcclxuaW1wb3J0IHtGSUxURVJTX1RPS0VOfSBmcm9tICcuL3Rva2VuJztcclxuaW1wb3J0IHtNVXRpbHN9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzZXMvbVV0aWxzJztcclxuaW1wb3J0IHtBbWVuaXR5SXRlbX0gZnJvbSAnLi4vLi4vdXRpbHMvbW9kZWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWZpbHRlcnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXJzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbHRlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBGaWx0ZXJzIHtcclxuICBASW5wdXQoKSB1dGlsczogQXBwVXRpbDtcclxuICBwcml2YXRlIHJlYWRvbmx5IE1FVEVSU19UT19TUSA9IDEwLjc2MzkxMDQyO1xyXG4gIHByaXZhdGUgX3RtcE1pblByaWNlTGlzdDogbnVtYmVyW107XHJcbiAgcHJpdmF0ZSBfdG1wTWF4UHJpY2VMaXN0OiBudW1iZXJbXTtcclxuICBwcml2YXRlIF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIF9pc1NoYXJlZFByb3BlcnRpZXM6IGJvb2xlYW47XHJcbiAgcHVibGljIGZpbHRlcnNGb3JtOiBGb3JtR3JvdXA7XHJcbiAgcHVibGljIHByb3BlcnR5VHlwZUxpc3Q6IFByb3BlcnR5VHlwZUl0ZW1bXTtcclxuICBwdWJsaWMgYmVkcm9vbXNMaXN0OiBudW1iZXJbXTtcclxuICBwdWJsaWMgYmF0aHJvb21zTGlzdDogbnVtYmVyW107XHJcbiAgcHVibGljIHBhcmtpbmdQbGFjZXNMaXN0OiBudW1iZXJbXTtcclxuICBwdWJsaWMgY3VycmVuY3lMaXN0OiBDRVJbXTtcclxuICBwdWJsaWMgbWluUHJpY2VMaXN0OiBudW1iZXJbXTtcclxuICBwdWJsaWMgbWF4UHJpY2VMaXN0OiBudW1iZXJbXTtcclxuICBwdWJsaWMgc3VyZmFjZUxpc3Q6IG51bWJlcltdO1xyXG4gIHB1YmxpYyByb2lMaXN0OiBudW1iZXJbXTtcclxuICBwdWJsaWMgcHJvcGVydHlUeXBlU2VsZWN0ZWQ6IFByb3BlcnR5VHlwZUl0ZW07XHJcbiAgcHVibGljIGZpbHRlcjogRmlsdGVyO1xyXG4gIHB1YmxpYyBpc09QSTogYm9vbGVhbjtcclxuICBwdWJsaWMgc3VyZmFjZVVuaXRTZWxlY3RlZDogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRklMVEVSU19UT0tFTikgcHJpdmF0ZSBfY29uZmlnOiBib29sZWFuLFxyXG4gICAgcHJpdmF0ZSBfcmVuZGVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIF9yZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBGaWx0ZXJzU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Zvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgX2NvbnZlcnRlcjogQ3VycmVuY3lDb252ZXJ0ZXJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmlzT1BJID0gdGhpcy5fY29uZmlnIHx8IGZhbHNlO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gICAgdGhpcy5wcm9wZXJ0eVR5cGVMaXN0ID0gQ29uc3RhbnRzQ29tcG9uZW50cy5Qcm9wZXJ0eVR5cGVMaXN0Lm1hcChpdGVtID0+ICh7Li4uaXRlbX0pKTtcclxuICAgIHRoaXMuYmVkcm9vbXNMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgQ29uc3RhbnRzQ29tcG9uZW50cy5CZWRyb29tTGlzdCk7XHJcbiAgICB0aGlzLmJhdGhyb29tc0xpc3QgPSBPYmplY3QuYXNzaWduKFtdLCBDb25zdGFudHNDb21wb25lbnRzLkJhdGhyb29tTGlzdCk7XHJcbiAgICB0aGlzLnBhcmtpbmdQbGFjZXNMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgQ29uc3RhbnRzQ29tcG9uZW50cy5QYXJraW5nU3BhY2VzTGlzdCk7XHJcbiAgICB0aGlzLnN1cmZhY2VMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgQ29uc3RhbnRzQ29tcG9uZW50cy5TdXJmYWNlTGlzdCk7XHJcbiAgICB0aGlzLnJvaUxpc3QgPSBPYmplY3QuYXNzaWduKFtdLCBDb25zdGFudHNDb21wb25lbnRzLlJPSUxpc3QpO1xyXG4gICAgdGhpcy5zdXJmYWNlVW5pdFNlbGVjdGVkID0gMDtcclxuICAgIHRoaXMuYnVpbGRGb3JtKCk7XHJcbiAgICB0aGlzLmluaXRDb21wb25lbnRCeVByb3BlcnR5VHlwZSgpO1xyXG4gICAgdGhpcy5yZXN0b3JlTGFzdEZpbHRlcnNTYXZlZCh0cnVlKTtcclxuICAgIHRoaXMubGlzdGVuQ2hhbmdlc09uRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLm9wZW5Db21wb25lbnQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnV0aWxzKSB7XHJcbiAgICAgIHJldHVybiBjb25zb2xlLndhcm4oJ1tGaWx0ZXJzQ29tcG9uZW50XSB1dGlscyBwYXJhbSBpcyByZXF1aXJlZCcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbml0Q29tcG9uZW50KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1sndXRpbHMnXSAmJiBjaGFuZ2VzWyd1dGlscyddLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICBjb25zb2xlLmxvZygnW0ZpbHRlcnNDb21wb25lbnRdIHV0aWxzIHJlYWR5Jyk7XHJcbiAgICAgIHRoaXMuaW5pdENvbXBvbmVudCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG9wZW4oKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlc3RvcmVMYXN0RmlsdGVyc1NhdmVkKCk7XHJcbiAgICB0aGlzLm9wZW5Db21wb25lbnQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMub3BlbkNvbXBvbmVudChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VQcm9wZXJ0eVR5cGUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5yZXNldEZpbHRlcnMoaW5kZXgpO1xyXG4gICAgdGhpcy5hcHBseUFtZW5pdGllcygpO1xyXG4gICAgdGhpcy5maWx0ZXIudHlwZSA9IHRoaXMucHJvcGVydHlUeXBlU2VsZWN0ZWQudmFsdWU7XHJcbiAgICBzd2l0Y2ggKHRoaXMucHJvcGVydHlUeXBlU2VsZWN0ZWQudmFsdWUpIHtcclxuICAgICAgY2FzZSBQcm9wZXJ0eVR5cGVFbnVtLlJPT006XHJcbiAgICAgICAgdGhpcy5maWx0ZXJzRm9ybS5jb250cm9sc1snb2ZmZXJpbmcnXS5zZXRWYWx1ZShPZmZlcmluZ1R5cGVFbnVtLlJFTlQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZUVudW0uSU5WRVNUTUVOVDpcclxuICAgICAgICB0aGlzLmZpbHRlcnNGb3JtLmNvbnRyb2xzWydvZmZlcmluZyddLnNldFZhbHVlKE9mZmVyaW5nVHlwZUVudW0uU0FMRSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VPZmZlcmluZyhldjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlci5vZmZlcmluZyA9IGV2IGFzIE9mZmVyaW5nVHlwZUVudW07XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VDdXJyZW5jeShldjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlci5jdXJyZW5jeSA9IGV2O1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQW1lbml0eShhbWVuaXR5OiBBbWVuaXR5SXRlbSk6IHZvaWQge1xyXG4gICAgaWYgKGFtZW5pdHkuY2hlY2tlZCkge1xyXG4gICAgICBjb25zdCBpID0gdGhpcy5maWx0ZXIuZXh0cmFzLmluZGV4T2YoYW1lbml0eS52YWx1ZSk7XHJcbiAgICAgIGlmIChpID4gLTEpIHtcclxuICAgICAgICB0aGlzLmZpbHRlci5leHRyYXMuc3BsaWNlKGksIDEpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbHRlci5leHRyYXMucHVzaChhbWVuaXR5LnZhbHVlKTtcclxuICAgIH1cclxuICAgIGFtZW5pdHkuY2hlY2tlZCA9ICFhbWVuaXR5LmNoZWNrZWQ7XHJcbiAgfVxyXG5cclxuICBzYXZlU2VhcmNoQnlGaWx0ZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hcHBseUZpbHRlcnMoRmlsdGVyc0NoYW5nZVR5cGUuU0FWRSk7XHJcbiAgfVxyXG5cclxuICBhcHBseUZpbHRlcnModHlwZT86IEZpbHRlcnNDaGFuZ2VUeXBlKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldEZpbHRlckJ5Rm9ybSgpO1xyXG4gICAgY29uc3QgZmlsdGVyVG9TZWFyY2ggPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmZpbHRlcik7XHJcbiAgICBpZiAodGhpcy5zdXJmYWNlVW5pdFNlbGVjdGVkID09PSAxKSB7XHJcbiAgICAgIGZpbHRlclRvU2VhcmNoLm1haW5BcmVhID0gZmlsdGVyVG9TZWFyY2gubWFpbkFyZWEgKiB0aGlzLk1FVEVSU19UT19TUTtcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlRmlsdGVyc1NhdmVkKGZpbHRlclRvU2VhcmNoKTtcclxuICAgIHRoaXMuX3NlcnZpY2Uuc2V0Q2hhbmdlKHtcclxuICAgICAgdHlwZTogdHlwZSB8fCBGaWx0ZXJzQ2hhbmdlVHlwZS5BUFBMWSxcclxuICAgICAgZmlsdGVyOiBmaWx0ZXJUb1NlYXJjaCxcclxuICAgICAgZnQ6IHRoaXMuc3VyZmFjZVVuaXRTZWxlY3RlZCA9PT0gMSxcclxuICAgICAgaXNTaGFyZWRQcm9wZXJ0aWVzOiB0aGlzLl9pc1NoYXJlZFByb3BlcnRpZXNcclxuICAgIH0pO1xyXG4gICAgdGhpcy5vcGVuQ29tcG9uZW50KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHJlc2V0RmlsdGVycyhwcm9wZXJ0eVR5cGVJdGVtSW5kZXg/OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdENvbXBvbmVudEJ5UHJvcGVydHlUeXBlKHByb3BlcnR5VHlwZUl0ZW1JbmRleCk7XHJcbiAgICB0aGlzLnN1cmZhY2VVbml0U2VsZWN0ZWQgPSAwO1xyXG4gICAgdGhpcy5maWx0ZXIgPSBwcm9wZXJ0eVR5cGVJdGVtSW5kZXggPyBVdGlscy5nZXRGaWx0ZXJCeVByb3BlcnR5VHlwZSh0aGlzLmZpbHRlcikgOiBVdGlscy5nZXRJbml0aWFsRmlsdGVyKHRoaXMuaXNPUEksIHRoaXMuZmlsdGVyKTtcclxuICAgIHRoaXMudXBkYXRlRm9ybUJ5RmlsdGVycygpO1xyXG4gICAgdGhpcy5zZXRQcmljZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXJzRm9ybSA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgb2ZmZXJpbmc6IFtdLFxyXG4gICAgICBjdXJyZW5jeTogW10sXHJcbiAgICAgIG1pblByaWNlOiBbXSxcclxuICAgICAgbWF4UHJpY2U6IFtdLFxyXG4gICAgICBiZWRyb29tczogW10sXHJcbiAgICAgIGJhdGhyb29tczogW10sXHJcbiAgICAgIHBhcmtpbmdQbGFjZXM6IFtdLFxyXG4gICAgICBzdXJmYWNlOiBbXSxcclxuICAgICAgc3VyZmFjZVVuaXQ6IFtdLFxyXG4gICAgICByb2k6IFtdXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRm9ybUJ5RmlsdGVycygpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsdGVyc0Zvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgIG9mZmVyaW5nOiB0aGlzLmZpbHRlci5vZmZlcmluZyxcclxuICAgICAgY3VycmVuY3k6IHRoaXMuZmlsdGVyLmN1cnJlbmN5LFxyXG4gICAgICBtaW5QcmljZTogdGhpcy5maWx0ZXIuZG93bkxpbWl0UHJpY2UsXHJcbiAgICAgIG1heFByaWNlOiB0aGlzLmZpbHRlci51cExpbWl0UHJpY2UsXHJcbiAgICAgIGJlZHJvb21zOiB0aGlzLmZpbHRlci5iZWRyb29tcyxcclxuICAgICAgYmF0aHJvb21zOiB0aGlzLmZpbHRlci5iYXRocm9vbXMsXHJcbiAgICAgIHBhcmtpbmdQbGFjZXM6IHRoaXMuZmlsdGVyLnBhcmtpbmdQbGFjZXMsXHJcbiAgICAgIHN1cmZhY2U6IHRoaXMuZmlsdGVyLm1haW5BcmVhLFxyXG4gICAgICBzdXJmYWNlVW5pdDogdGhpcy5zdXJmYWNlVW5pdFNlbGVjdGVkLFxyXG4gICAgICByb2k6IHRoaXMuZmlsdGVyLnJvaVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpbHRlckJ5Rm9ybSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmZpbHRlcnNGb3JtLnZhbHVlO1xyXG4gICAgdGhpcy5maWx0ZXIub2ZmZXJpbmcgPSBkYXRhLm9mZmVyaW5nO1xyXG4gICAgdGhpcy5maWx0ZXIuY3VycmVuY3kgPSBkYXRhLmN1cnJlbmN5O1xyXG4gICAgdGhpcy5maWx0ZXIuZG93bkxpbWl0UHJpY2UgPSBOdW1iZXIoZGF0YS5taW5QcmljZSk7XHJcbiAgICB0aGlzLmZpbHRlci51cExpbWl0UHJpY2UgPSBOdW1iZXIoZGF0YS5tYXhQcmljZSk7XHJcbiAgICB0aGlzLmZpbHRlci5iZWRyb29tcyA9IE51bWJlcihkYXRhLmJlZHJvb21zKTtcclxuICAgIHRoaXMuZmlsdGVyLmJhdGhyb29tcyA9IE51bWJlcihkYXRhLmJhdGhyb29tcyk7XHJcbiAgICB0aGlzLmZpbHRlci5wYXJraW5nUGxhY2VzID0gTnVtYmVyKGRhdGEucGFya2luZ1BsYWNlcyk7XHJcbiAgICB0aGlzLmZpbHRlci5tYWluQXJlYSA9IE51bWJlcihkYXRhLnN1cmZhY2UpO1xyXG4gICAgdGhpcy5zdXJmYWNlVW5pdFNlbGVjdGVkID0gTnVtYmVyKGRhdGEuc3VyZmFjZVVuaXQpO1xyXG4gICAgdGhpcy5maWx0ZXIucm9pID0gTnVtYmVyKGRhdGEucm9pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdENvbXBvbmVudCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFV0aWxzKCk7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlLmdldENoYW5nZXMoKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBGaWx0ZXJzQ2hhbmdlKSA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChyZXNwb25zZS50eXBlKSB7XHJcbiAgICAgICAgICBjYXNlIEZpbHRlcnNDaGFuZ2VUeXBlLkxJU1RfVFlQRTpcclxuICAgICAgICAgICAgdGhpcy5faXNTaGFyZWRQcm9wZXJ0aWVzID0gcmVzcG9uc2UuaXNTaGFyZWRQcm9wZXJ0aWVzO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlcnNTYXZlZChyZXNwb25zZS5maWx0ZXIpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgRmlsdGVyc0NoYW5nZVR5cGUuQVJFQTpcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJzU2F2ZWQocmVzcG9uc2UuZmlsdGVyKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuX3NlcnZpY2Uuc3RhcnRDb21wb25lbnQobmV3IEZpbHRlcnNXcmFwcGVyKHRoaXMpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFV0aWxzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW5jeUxpc3QgPSB0aGlzLnV0aWxzLmNlcnM7XHJcbiAgICB0aGlzLnNldFByaWNlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRQcmljZXModG8/OiBDdXJyZW5jeSk6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXJzRm9ybS5jb250cm9sc1snbWluUHJpY2UnXS5yZXNldCgwKTtcclxuICAgIHRoaXMuZmlsdGVyc0Zvcm0uY29udHJvbHNbJ21heFByaWNlJ10ucmVzZXQoMCk7XHJcbiAgICBjb25zdCBvZmZlcmluZyA9IHRoaXMuZmlsdGVyc0Zvcm0uY29udHJvbHNbJ29mZmVyaW5nJ10udmFsdWU7XHJcbiAgICB0aGlzLm1pblByaWNlTGlzdCA9IHRoaXMuY3JlYXRlUHJpY2VzKHRoaXMudXRpbHMubGltaXRQcmljZSwgdGhpcy5wcm9wZXJ0eVR5cGVTZWxlY3RlZC52YWx1ZSwgb2ZmZXJpbmcpO1xyXG4gICAgdGhpcy5taW5QcmljZUxpc3QgPSB0aGlzLl9jb252ZXJ0ZXIubGlzdCh0aGlzLm1pblByaWNlTGlzdCwgdGhpcy51dGlscy5jZXJzLCBDdXJyZW5jeS5VU0QsIHRvIHx8IHRoaXMuZmlsdGVyLmN1cnJlbmN5IGFzIEN1cnJlbmN5KTtcclxuICAgIHRoaXMubWF4UHJpY2VMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5taW5QcmljZUxpc3QpO1xyXG4gICAgdGhpcy5fdG1wTWluUHJpY2VMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5taW5QcmljZUxpc3QpO1xyXG4gICAgdGhpcy5fdG1wTWF4UHJpY2VMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5tYXhQcmljZUxpc3QpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUFtZW5pdGllcygpOiB2b2lkIHtcclxuICAgIHRoaXMucHJvcGVydHlUeXBlU2VsZWN0ZWQuYW1lbml0aWVzID0gdGhpcy5wcm9wZXJ0eVR5cGVTZWxlY3RlZC5hbWVuaXRpZXMubWFwKGFtZW5pdHkgPT4ge1xyXG4gICAgICBjb25zdCBpID0gdGhpcy5maWx0ZXIuZXh0cmFzLmluZGV4T2YoYW1lbml0eS52YWx1ZSk7XHJcbiAgICAgIGFtZW5pdHkuY2hlY2tlZCA9IChpID4gLTEpO1xyXG4gICAgICByZXR1cm4gYW1lbml0eTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5wcm9wZXJ0eVR5cGVTZWxlY3RlZC5mZWF0dXJlcyA9IHRoaXMucHJvcGVydHlUeXBlU2VsZWN0ZWQuZmVhdHVyZXMubWFwKGFtZW5pdHkgPT4ge1xyXG4gICAgICBjb25zdCBpID0gdGhpcy5maWx0ZXIuZXh0cmFzLmluZGV4T2YoYW1lbml0eS52YWx1ZSk7XHJcbiAgICAgIGFtZW5pdHkuY2hlY2tlZCA9IChpID4gLTEpO1xyXG4gICAgICByZXR1cm4gYW1lbml0eTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVQcmljZXMobGltaXRQcmljZTogTGltaXRQcmljZSwgcHJvcGVydHlUeXBlOiBQcm9wZXJ0eVR5cGVFbnVtLCBvZmZlcmluZzogT2ZmZXJpbmdUeXBlRW51bSk6IG51bWJlcltdIHtcclxuICAgIGxldCBsaXN0OiBudW1iZXJbXSA9IFtdO1xyXG4gICAgbGltaXRQcmljZS5wcm9wZXJ0eVJhbmdlcy5mb3JFYWNoKChyYW5nZTogUHJvcGVydHlSYW5nZSkgPT4ge1xyXG4gICAgICBpZiAocmFuZ2Uub2ZmZXJpbmcgPT09IG9mZmVyaW5nICYmIHJhbmdlLnR5cGUgPT09IHByb3BlcnR5VHlwZSkge1xyXG4gICAgICAgIGxpc3QgPSBNVXRpbHMubGluU3BhY2VFeHAocmFuZ2UubWluLCByYW5nZS5tYXgsIDIwKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbGlzdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdENvbXBvbmVudEJ5UHJvcGVydHlUeXBlKHByb3BlcnR5VHlwZUl0ZW1JbmRleDogbnVtYmVyID0gbnVsbCk6IHZvaWQge1xyXG4gICAgdGhpcy5wcm9wZXJ0eVR5cGVTZWxlY3RlZCA9IEpTT04ucGFyc2UoXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KENvbnN0YW50c0NvbXBvbmVudHMuUHJvcGVydHlUeXBlTGlzdFtwcm9wZXJ0eVR5cGVJdGVtSW5kZXggIT09IG51bGwgPyBwcm9wZXJ0eVR5cGVJdGVtSW5kZXggOiA5XSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVGaWx0ZXJzU2F2ZWQoZmlsdGVyczogRmlsdGVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlciA9IGZpbHRlcnM7XHJcbiAgICBGaWx0ZXJzU2VydmljZS5zYXZlRmlsdGVycyh7XHJcbiAgICAgIGZpbHRlcnM6IGZpbHRlcnMsXHJcbiAgICAgIGZ0OiB0aGlzLnN1cmZhY2VVbml0U2VsZWN0ZWQgPT09IDEsXHJcbiAgICAgIGlzU2hhcmVkUHJvcGVydGllczogdGhpcy5faXNTaGFyZWRQcm9wZXJ0aWVzIHx8IGZhbHNlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzdG9yZUxhc3RGaWx0ZXJzU2F2ZWQoaW5pdD86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpbHRlcnNTYXZlZCA9IEZpbHRlcnNTZXJ2aWNlLmdldEZpbHRlcnNTYXZlZCgpIHx8IG51bGw7XHJcbiAgICB0aGlzLmZpbHRlciA9IGZpbHRlcnNTYXZlZCA/IGZpbHRlcnNTYXZlZC5maWx0ZXJzIDogVXRpbHMuZ2V0SW5pdGlhbEZpbHRlcih0aGlzLmlzT1BJKTtcclxuICAgIGlmIChmaWx0ZXJzU2F2ZWQpIHtcclxuICAgICAgaWYgKGZpbHRlcnNTYXZlZC5mdCkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyLm1haW5BcmVhID0gTnVtYmVyKCh0aGlzLmZpbHRlci5tYWluQXJlYSAvIHRoaXMuTUVURVJTX1RPX1NRKS50b0ZpeGVkKDApKTtcclxuICAgICAgICB0aGlzLnN1cmZhY2VVbml0U2VsZWN0ZWQgPSBmaWx0ZXJzU2F2ZWQuZnQgPyAxIDogMDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9pc1NoYXJlZFByb3BlcnRpZXMgPSBmaWx0ZXJzU2F2ZWQuaXNTaGFyZWRQcm9wZXJ0aWVzIHx8IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wcm9wZXJ0eVR5cGVTZWxlY3RlZCA9IENvbnN0YW50c0NvbXBvbmVudHMuUHJvcGVydHlUeXBlTGlzdC5maW5kKGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gdGhpcy5maWx0ZXIudHlwZSk7XHJcbiAgICB0aGlzLmFwcGx5QW1lbml0aWVzKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUZvcm1CeUZpbHRlcnMoKTtcclxuICAgIGlmIChpbml0KSB7XHJcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKEZpbHRlcnNDaGFuZ2VUeXBlLklOSVQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvcGVuQ29tcG9uZW50KG9wZW46IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmIChvcGVuKSB7XHJcbiAgICAgIHRoaXMuX3JlbmRlci5zZXRTdHlsZSh0aGlzLl9yZWYubmF0aXZlRWxlbWVudCwgJ3Zpc2liaWxpdHknLCAndmlzaWJsZScpO1xyXG4gICAgICB0aGlzLl9yZW5kZXIuc2V0U3R5bGUodGhpcy5fcmVmLm5hdGl2ZUVsZW1lbnQsICdvcGFjaXR5JywgJzEnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3JlbmRlci5zZXRTdHlsZSh0aGlzLl9yZWYubmF0aXZlRWxlbWVudCwgJ29wYWNpdHknLCAnMCcpO1xyXG4gICAgICB0aGlzLl9yZW5kZXIuc2V0U3R5bGUodGhpcy5fcmVmLm5hdGl2ZUVsZW1lbnQsICd2aXNpYmlsaXR5JywgJ2NvbGxhcHNlJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxpc3RlbkNoYW5nZXNPbkZvcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLmZpbHRlcnNGb3JtLmNvbnRyb2xzWydvZmZlcmluZyddLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0UHJpY2VzKCk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5maWx0ZXJzRm9ybS5jb250cm9sc1snY3VycmVuY3knXS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0UHJpY2VzKHZhbHVlLnRvU3RyaW5nKCkgYXMgQ3VycmVuY3kpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMuZmlsdGVyc0Zvcm0uY29udHJvbHNbJ21pblByaWNlJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubWF4UHJpY2VMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5fdG1wTWF4UHJpY2VMaXN0KTtcclxuICAgICAgICBjb25zdCBpID0gdGhpcy5taW5QcmljZUxpc3QuaW5kZXhPZih2YWx1ZSk7XHJcbiAgICAgICAgaWYgKGkgPiAtMSkge1xyXG4gICAgICAgICAgdGhpcy5tYXhQcmljZUxpc3Quc3BsaWNlKDAsIGkgKyAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5maWx0ZXJzRm9ybS5jb250cm9sc1snbWF4UHJpY2UnXS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubWluUHJpY2VMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5fdG1wTWluUHJpY2VMaXN0KTtcclxuICAgICAgICBjb25zdCBpID0gdGhpcy5tYXhQcmljZUxpc3QuaW5kZXhPZih2YWx1ZSk7XHJcbiAgICAgICAgaWYgKGkgPiAtMSkge1xyXG4gICAgICAgICAgY29uc3QgZGlmZmVyZW5jZSA9IHRoaXMubWluUHJpY2VMaXN0Lmxlbmd0aCAtIHRoaXMubWF4UHJpY2VMaXN0Lmxlbmd0aDtcclxuICAgICAgICAgIHRoaXMubWluUHJpY2VMaXN0LnNwbGljZShpICsgZGlmZmVyZW5jZSwgdGhpcy5taW5QcmljZUxpc3QubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
556
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWFwbGFuZGVyL2NvbXBvbmVudHMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9maWx0ZXJzL2ZpbHRlcnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUlMLFFBQVEsRUFDUixTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFdBQVcsRUFBYSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBZSxRQUFRLEVBQXNCLGdCQUFnQixFQUFpQixnQkFBZ0IsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQy9ILE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFbEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBRW5FLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBRXhHLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUVsRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQU96RixNQUFNLE9BQU8sZ0JBQWdCOzs7Ozs7Ozs7SUFzQjNCLFlBQzZDLE9BQWdCLEVBQ25ELE9BQWtCLEVBQ2xCLElBQWdCLEVBQ2hCLFFBQXdC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WSxDQUFDLE1BQU07Z0JBQ3RFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDeEU7UUFDSCxDQUFDLEVBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7O1lBdlVGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsYUFBYTtnQkFDdkIsMjJiQUF1Qzs7YUFFeEM7Ozs7MENBd0JJLFFBQVEsWUFBSSxNQUFNLFNBQUMsYUFBYTtZQWhEbkMsU0FBUztZQVBULFVBQVU7WUFvQkosY0FBYztZQVZkLFdBQVc7WUFRWCx3QkFBd0I7OztvQkFlN0IsS0FBSzs7OztJQUFOLGlDQUF3Qjs7Ozs7SUFDeEIsd0NBQTRDOzs7OztJQUM1Qyw0Q0FBbUM7Ozs7O0lBQ25DLDRDQUFtQzs7Ozs7SUFDbkMseUNBQW9DOzs7OztJQUNwQywrQ0FBcUM7O0lBQ3JDLHVDQUE4Qjs7SUFDOUIsNENBQTRDOztJQUM1Qyx3Q0FBOEI7O0lBQzlCLHlDQUErQjs7SUFDL0IsNkNBQW1DOztJQUNuQyx3Q0FBMkI7O0lBQzNCLHdDQUE4Qjs7SUFDOUIsd0NBQThCOztJQUM5Qix1Q0FBNkI7O0lBQzdCLG1DQUF5Qjs7SUFDekIsZ0RBQThDOztJQUM5QyxrQ0FBc0I7O0lBQ3RCLGlDQUFzQjs7SUFDdEIsK0NBQW1DOzs7OztJQUdqQyxtQ0FBMkQ7Ozs7O0lBQzNELG1DQUEwQjs7Ozs7SUFDMUIsZ0NBQXdCOzs7OztJQUN4QixvQ0FBZ0M7Ozs7O0lBQ2hDLHdDQUFpQzs7Ozs7SUFDakMsc0NBQTRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCxcclxuICBSZW5kZXJlcjIsXHJcbiAgU2ltcGxlQ2hhbmdlc1xyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0FwcFV0aWwsIENFUiwgQ3VycmVuY3ksIEZpbHRlciwgTGltaXRQcmljZSwgT2ZmZXJpbmdUeXBlRW51bSwgUHJvcGVydHlSYW5nZSwgUHJvcGVydHlUeXBlRW51bX0gZnJvbSAnQG1hcGxhbmRlci90eXBlcyc7XHJcbmltcG9ydCB7Q29uc3RhbnRzQ29tcG9uZW50c30gZnJvbSAnLi4vLi4vY29uc3RhbnRzQ29tcG9uZW50cyc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuaW1wb3J0IHtGaWx0ZXJzQ2hhbmdlfSBmcm9tICcuLy4uLy4uL3V0aWxzL21vZGVscy9maWx0ZXJzLWNoYW5nZSc7XHJcbmltcG9ydCB7RmlsdGVyc1dyYXBwZXJ9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzZXMvZmlsdGVycy13cmFwcGVyJztcclxuaW1wb3J0IHtQcm9wZXJ0eVR5cGVJdGVtfSBmcm9tICcuLy4uLy4uL3V0aWxzL21vZGVscy9wcm9wZXJ0eS10eXBlLWl0ZW0nO1xyXG5pbXBvcnQge0N1cnJlbmN5Q29udmVydGVyU2VydmljZX0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy9jdXJyZW5jeS1jb252ZXJ0ZXIvY3VycmVuY3ktY29udmVydGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQge0ZpbHRlcnN9IGZyb20gJy4uLy4uL3V0aWxzL2ludGVyZmFjZXMvZmlsdGVycyc7XHJcbmltcG9ydCB7RmlsdGVyc1NlcnZpY2V9IGZyb20gJy4vZmlsdGVycy5zZXJ2aWNlJztcclxuaW1wb3J0IHtGaWx0ZXJzQ2hhbmdlVHlwZX0gZnJvbSAnLi4vLi4vdXRpbHMvZW51bXMnO1xyXG5pbXBvcnQge0ZJTFRFUlNfVE9LRU59IGZyb20gJy4vdG9rZW4nO1xyXG5pbXBvcnQge01VdGlsc30gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3Nlcy9tVXRpbHMnO1xyXG5pbXBvcnQge0FtZW5pdHlJdGVtfSBmcm9tICcuLi8uLi91dGlscy9tb2RlbHMnO1xyXG5pbXBvcnQge0N1cnJlbmN5RmlsdGVyVmFsaWRhdG9yfSBmcm9tICcuLi9wcm9wZXJ0eS92YWxpZGF0b3JzL2N1cnJlbmN5LWZpbHRlci12YWxpZGF0b3InO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItZmlsdGVycycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlcnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZpbHRlcnMuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIEZpbHRlcnMge1xyXG4gIEBJbnB1dCgpIHV0aWxzOiBBcHBVdGlsO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgTUVURVJTX1RPX1NRID0gMTAuNzYzOTEwNDI7XHJcbiAgcHJpdmF0ZSBfdG1wTWluUHJpY2VMaXN0OiBudW1iZXJbXTtcclxuICBwcml2YXRlIF90bXBNYXhQcmljZUxpc3Q6IG51bWJlcltdO1xyXG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgX2lzU2hhcmVkUHJvcGVydGllczogYm9vbGVhbjtcclxuICBwdWJsaWMgZmlsdGVyc0Zvcm06IEZvcm1Hcm91cDtcclxuICBwdWJsaWMgcHJvcGVydHlUeXBlTGlzdDogUHJvcGVydHlUeXBlSXRlbVtdO1xyXG4gIHB1YmxpYyBiZWRyb29tc0xpc3Q6IG51bWJlcltdO1xyXG4gIHB1YmxpYyBiYXRocm9vbXNMaXN0OiBudW1iZXJbXTtcclxuICBwdWJsaWMgcGFya2luZ1BsYWNlc0xpc3Q6IG51bWJlcltdO1xyXG4gIHB1YmxpYyBjdXJyZW5jeUxpc3Q6IENFUltdO1xyXG4gIHB1YmxpYyBtaW5QcmljZUxpc3Q6IG51bWJlcltdO1xyXG4gIHB1YmxpYyBtYXhQcmljZUxpc3Q6IG51bWJlcltdO1xyXG4gIHB1YmxpYyBzdXJmYWNlTGlzdDogbnVtYmVyW107XHJcbiAgcHVibGljIHJvaUxpc3Q6IG51bWJlcltdO1xyXG4gIHB1YmxpYyBwcm9wZXJ0eVR5cGVTZWxlY3RlZDogUHJvcGVydHlUeXBlSXRlbTtcclxuICBwdWJsaWMgZmlsdGVyOiBGaWx0ZXI7XHJcbiAgcHVibGljIGlzT1BJOiBib29sZWFuO1xyXG4gIHB1YmxpYyBzdXJmYWNlVW5pdFNlbGVjdGVkOiBudW1iZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChGSUxURVJTX1RPS0VOKSBwcml2YXRlIF9jb25maWc6IGJvb2xlYW4sXHJcbiAgICBwcml2YXRlIF9yZW5kZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgX3JlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IEZpbHRlcnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBfY29udmVydGVyOiBDdXJyZW5jeUNvbnZlcnRlclNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuaXNPUEkgPSB0aGlzLl9jb25maWcgfHwgZmFsc2U7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgICB0aGlzLnByb3BlcnR5VHlwZUxpc3QgPSBDb25zdGFudHNDb21wb25lbnRzLlByb3BlcnR5VHlwZUxpc3QubWFwKGl0ZW0gPT4gKHsuLi5pdGVtfSkpO1xyXG4gICAgdGhpcy5iZWRyb29tc0xpc3QgPSBPYmplY3QuYXNzaWduKFtdLCBDb25zdGFudHNDb21wb25lbnRzLkJlZHJvb21MaXN0KTtcclxuICAgIHRoaXMuYmF0aHJvb21zTGlzdCA9IE9iamVjdC5hc3NpZ24oW10sIENvbnN0YW50c0NvbXBvbmVudHMuQmF0aHJvb21MaXN0KTtcclxuICAgIHRoaXMucGFya2luZ1BsYWNlc0xpc3QgPSBPYmplY3QuYXNzaWduKFtdLCBDb25zdGFudHNDb21wb25lbnRzLlBhcmtpbmdTcGFjZXNMaXN0KTtcclxuICAgIHRoaXMuc3VyZmFjZUxpc3QgPSBPYmplY3QuYXNzaWduKFtdLCBDb25zdGFudHNDb21wb25lbnRzLlN1cmZhY2VMaXN0KTtcclxuICAgIHRoaXMucm9pTGlzdCA9IE9iamVjdC5hc3NpZ24oW10sIENvbnN0YW50c0NvbXBvbmVudHMuUk9JTGlzdCk7XHJcbiAgICB0aGlzLnN1cmZhY2VVbml0U2VsZWN0ZWQgPSAwO1xyXG4gICAgdGhpcy5idWlsZEZvcm0oKTtcclxuICAgIHRoaXMuaW5pdENvbXBvbmVudEJ5UHJvcGVydHlUeXBlKCk7XHJcbiAgICB0aGlzLnJlc3RvcmVMYXN0RmlsdGVyc1NhdmVkKHRydWUpO1xyXG4gICAgdGhpcy5saXN0ZW5DaGFuZ2VzT25Gb3JtKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMub3BlbkNvbXBvbmVudChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMudXRpbHMpIHtcclxuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybignW0ZpbHRlcnNDb21wb25lbnRdIHV0aWxzIHBhcmFtIGlzIHJlcXVpcmVkJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmluaXRDb21wb25lbnQoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWyd1dGlscyddICYmIGNoYW5nZXNbJ3V0aWxzJ10uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdbRmlsdGVyc0NvbXBvbmVudF0gdXRpbHMgcmVhZHknKTtcclxuICAgICAgdGhpcy5pbml0Q29tcG9uZW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgb3BlbigpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzdG9yZUxhc3RGaWx0ZXJzU2F2ZWQoKTtcclxuICAgIHRoaXMub3BlbkNvbXBvbmVudCh0cnVlKTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vcGVuQ29tcG9uZW50KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVByb3BlcnR5VHlwZShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlc2V0RmlsdGVycyhpbmRleCk7XHJcbiAgICB0aGlzLmFwcGx5QW1lbml0aWVzKCk7XHJcbiAgICB0aGlzLmZpbHRlci50eXBlID0gdGhpcy5wcm9wZXJ0eVR5cGVTZWxlY3RlZC52YWx1ZTtcclxuICAgIHN3aXRjaCAodGhpcy5wcm9wZXJ0eVR5cGVTZWxlY3RlZC52YWx1ZSkge1xyXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZUVudW0uUk9PTTpcclxuICAgICAgICB0aGlzLmZpbHRlcnNGb3JtLmNvbnRyb2xzWydvZmZlcmluZyddLnNldFZhbHVlKE9mZmVyaW5nVHlwZUVudW0uUkVOVCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlRW51bS5JTlZFU1RNRU5UOlxyXG4gICAgICAgIHRoaXMuZmlsdGVyc0Zvcm0uY29udHJvbHNbJ29mZmVyaW5nJ10uc2V0VmFsdWUoT2ZmZXJpbmdUeXBlRW51bS5TQUxFKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZU9mZmVyaW5nKGV2OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsdGVyLm9mZmVyaW5nID0gZXYgYXMgT2ZmZXJpbmdUeXBlRW51bTtcclxuICB9XHJcblxyXG4gIGNoYW5nZUN1cnJlbmN5KGV2OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsdGVyLmN1cnJlbmN5ID0gZXY7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVBbWVuaXR5KGFtZW5pdHk6IEFtZW5pdHlJdGVtKTogdm9pZCB7XHJcbiAgICBpZiAoYW1lbml0eS5jaGVja2VkKSB7XHJcbiAgICAgIGNvbnN0IGkgPSB0aGlzLmZpbHRlci5leHRyYXMuaW5kZXhPZihhbWVuaXR5LnZhbHVlKTtcclxuICAgICAgaWYgKGkgPiAtMSkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyLmV4dHJhcy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyLmV4dHJhcy5wdXNoKGFtZW5pdHkudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgYW1lbml0eS5jaGVja2VkID0gIWFtZW5pdHkuY2hlY2tlZDtcclxuICB9XHJcblxyXG4gIHNhdmVTZWFyY2hCeUZpbHRlcnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFwcGx5RmlsdGVycyhGaWx0ZXJzQ2hhbmdlVHlwZS5TQVZFKTtcclxuICB9XHJcblxyXG4gIGFwcGx5RmlsdGVycyh0eXBlPzogRmlsdGVyc0NoYW5nZVR5cGUpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0RmlsdGVyQnlGb3JtKCk7XHJcbiAgICBjb25zdCBmaWx0ZXJUb1NlYXJjaCA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZmlsdGVyKTtcclxuICAgIGlmICh0aGlzLnN1cmZhY2VVbml0U2VsZWN0ZWQgPT09IDEpIHtcclxuICAgICAgZmlsdGVyVG9TZWFyY2gubWFpbkFyZWEgPSBmaWx0ZXJUb1NlYXJjaC5tYWluQXJlYSAqIHRoaXMuTUVURVJTX1RPX1NRO1xyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVGaWx0ZXJzU2F2ZWQoZmlsdGVyVG9TZWFyY2gpO1xyXG4gICAgdGhpcy5fc2VydmljZS5zZXRDaGFuZ2Uoe1xyXG4gICAgICB0eXBlOiB0eXBlIHx8IEZpbHRlcnNDaGFuZ2VUeXBlLkFQUExZLFxyXG4gICAgICBmaWx0ZXI6IGZpbHRlclRvU2VhcmNoLFxyXG4gICAgICBmdDogdGhpcy5zdXJmYWNlVW5pdFNlbGVjdGVkID09PSAxLFxyXG4gICAgICBpc1NoYXJlZFByb3BlcnRpZXM6IHRoaXMuX2lzU2hhcmVkUHJvcGVydGllc1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLm9wZW5Db21wb25lbnQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRGaWx0ZXJzKHByb3BlcnR5VHlwZUl0ZW1JbmRleD86IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0Q29tcG9uZW50QnlQcm9wZXJ0eVR5cGUocHJvcGVydHlUeXBlSXRlbUluZGV4KTtcclxuICAgIHRoaXMuc3VyZmFjZVVuaXRTZWxlY3RlZCA9IDA7XHJcbiAgICB0aGlzLmZpbHRlciA9IHByb3BlcnR5VHlwZUl0ZW1JbmRleCA/IFV0aWxzLmdldEZpbHRlckJ5UHJvcGVydHlUeXBlKHRoaXMuZmlsdGVyKSA6IFV0aWxzLmdldEluaXRpYWxGaWx0ZXIodGhpcy5pc09QSSwgdGhpcy5maWx0ZXIpO1xyXG4gICAgdGhpcy51cGRhdGVGb3JtQnlGaWx0ZXJzKCk7XHJcbiAgICB0aGlzLnNldFByaWNlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZEZvcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlcnNGb3JtID0gdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBvZmZlcmluZzogW10sXHJcbiAgICAgIGN1cnJlbmN5OiBbXSxcclxuICAgICAgbWluUHJpY2U6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihuZXcgUmVnRXhwKCcoXlswLTldKyknKSldXSxcclxuICAgICAgbWF4UHJpY2U6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihuZXcgUmVnRXhwKCcoXlswLTldKyknKSldXSxcclxuICAgICAgYmVkcm9vbXM6IFtdLFxyXG4gICAgICBiYXRocm9vbXM6IFtdLFxyXG4gICAgICBwYXJraW5nUGxhY2VzOiBbXSxcclxuICAgICAgc3VyZmFjZTogW10sXHJcbiAgICAgIHN1cmZhY2VVbml0OiBbXSxcclxuICAgICAgcm9pOiBbXVxyXG4gICAgfSwge1xyXG4gICAgICB2YWxpZGF0b3I6IEN1cnJlbmN5RmlsdGVyVmFsaWRhdG9yKCdtaW5QcmljZScsICdtYXhQcmljZScpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRm9ybUJ5RmlsdGVycygpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsdGVyc0Zvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgIG9mZmVyaW5nOiB0aGlzLmZpbHRlci5vZmZlcmluZyxcclxuICAgICAgY3VycmVuY3k6IHRoaXMuZmlsdGVyLmN1cnJlbmN5LFxyXG4gICAgICBtaW5QcmljZTogdGhpcy5maWx0ZXIuZG93bkxpbWl0UHJpY2UsXHJcbiAgICAgIG1heFByaWNlOiB0aGlzLmZpbHRlci51cExpbWl0UHJpY2UsXHJcbiAgICAgIGJlZHJvb21zOiB0aGlzLmZpbHRlci5iZWRyb29tcyxcclxuICAgICAgYmF0aHJvb21zOiB0aGlzLmZpbHRlci5iYXRocm9vbXMsXHJcbiAgICAgIHBhcmtpbmdQbGFjZXM6IHRoaXMuZmlsdGVyLnBhcmtpbmdQbGFjZXMsXHJcbiAgICAgIHN1cmZhY2U6IHRoaXMuZmlsdGVyLm1haW5BcmVhLFxyXG4gICAgICBzdXJmYWNlVW5pdDogdGhpcy5zdXJmYWNlVW5pdFNlbGVjdGVkLFxyXG4gICAgICByb2k6IHRoaXMuZmlsdGVyLnJvaVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpbHRlckJ5Rm9ybSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmZpbHRlcnNGb3JtLnZhbHVlO1xyXG4gICAgdGhpcy5maWx0ZXIub2ZmZXJpbmcgPSBkYXRhLm9mZmVyaW5nO1xyXG4gICAgdGhpcy5maWx0ZXIuY3VycmVuY3kgPSBkYXRhLmN1cnJlbmN5O1xyXG4gICAgdGhpcy5maWx0ZXIuZG93bkxpbWl0UHJpY2UgPSBOdW1iZXIoZGF0YS5taW5QcmljZSk7XHJcbiAgICB0aGlzLmZpbHRlci51cExpbWl0UHJpY2UgPSBOdW1iZXIoZGF0YS5tYXhQcmljZSk7XHJcbiAgICB0aGlzLmZpbHRlci5iZWRyb29tcyA9IE51bWJlcihkYXRhLmJlZHJvb21zKTtcclxuICAgIHRoaXMuZmlsdGVyLmJhdGhyb29tcyA9IE51bWJlcihkYXRhLmJhdGhyb29tcyk7XHJcbiAgICB0aGlzLmZpbHRlci5wYXJraW5nUGxhY2VzID0gTnVtYmVyKGRhdGEucGFya2luZ1BsYWNlcyk7XHJcbiAgICB0aGlzLmZpbHRlci5tYWluQXJlYSA9IE51bWJlcihkYXRhLnN1cmZhY2UpO1xyXG4gICAgdGhpcy5zdXJmYWNlVW5pdFNlbGVjdGVkID0gTnVtYmVyKGRhdGEuc3VyZmFjZVVuaXQpO1xyXG4gICAgdGhpcy5maWx0ZXIucm9pID0gTnVtYmVyKGRhdGEucm9pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdENvbXBvbmVudCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFV0aWxzKCk7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlLmdldENoYW5nZXMoKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBGaWx0ZXJzQ2hhbmdlKSA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChyZXNwb25zZS50eXBlKSB7XHJcbiAgICAgICAgICBjYXNlIEZpbHRlcnNDaGFuZ2VUeXBlLkxJU1RfVFlQRTpcclxuICAgICAgICAgICAgdGhpcy5faXNTaGFyZWRQcm9wZXJ0aWVzID0gcmVzcG9uc2UuaXNTaGFyZWRQcm9wZXJ0aWVzO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlcnNTYXZlZChyZXNwb25zZS5maWx0ZXIpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgRmlsdGVyc0NoYW5nZVR5cGUuQVJFQTpcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJzU2F2ZWQocmVzcG9uc2UuZmlsdGVyKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuX3NlcnZpY2Uuc3RhcnRDb21wb25lbnQobmV3IEZpbHRlcnNXcmFwcGVyKHRoaXMpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFV0aWxzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW5jeUxpc3QgPSB0aGlzLnV0aWxzLmNlcnM7XHJcbiAgICB0aGlzLnNldFByaWNlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRQcmljZXModG8/OiBDdXJyZW5jeSk6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXJzRm9ybS5jb250cm9sc1snbWluUHJpY2UnXS5yZXNldCgwKTtcclxuICAgIHRoaXMuZmlsdGVyc0Zvcm0uY29udHJvbHNbJ21heFByaWNlJ10ucmVzZXQoMCk7XHJcbiAgICBjb25zdCBvZmZlcmluZyA9IHRoaXMuZmlsdGVyc0Zvcm0uY29udHJvbHNbJ29mZmVyaW5nJ10udmFsdWU7XHJcbiAgICB0aGlzLm1pblByaWNlTGlzdCA9IHRoaXMuY3JlYXRlUHJpY2VzKHRoaXMudXRpbHMubGltaXRQcmljZSwgdGhpcy5wcm9wZXJ0eVR5cGVTZWxlY3RlZC52YWx1ZSwgb2ZmZXJpbmcpO1xyXG4gICAgdGhpcy5taW5QcmljZUxpc3QgPSB0aGlzLl9jb252ZXJ0ZXIubGlzdCh0aGlzLm1pblByaWNlTGlzdCwgdGhpcy51dGlscy5jZXJzLCBDdXJyZW5jeS5VU0QsIHRvIHx8IHRoaXMuZmlsdGVyLmN1cnJlbmN5IGFzIEN1cnJlbmN5KTtcclxuICAgIHRoaXMubWF4UHJpY2VMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5taW5QcmljZUxpc3QpO1xyXG4gICAgdGhpcy5fdG1wTWluUHJpY2VMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5taW5QcmljZUxpc3QpO1xyXG4gICAgdGhpcy5fdG1wTWF4UHJpY2VMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5tYXhQcmljZUxpc3QpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUFtZW5pdGllcygpOiB2b2lkIHtcclxuICAgIHRoaXMucHJvcGVydHlUeXBlU2VsZWN0ZWQuYW1lbml0aWVzID0gdGhpcy5wcm9wZXJ0eVR5cGVTZWxlY3RlZC5hbWVuaXRpZXMubWFwKGFtZW5pdHkgPT4ge1xyXG4gICAgICBjb25zdCBpID0gdGhpcy5maWx0ZXIuZXh0cmFzLmluZGV4T2YoYW1lbml0eS52YWx1ZSk7XHJcbiAgICAgIGFtZW5pdHkuY2hlY2tlZCA9IChpID4gLTEpO1xyXG4gICAgICByZXR1cm4gYW1lbml0eTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5wcm9wZXJ0eVR5cGVTZWxlY3RlZC5mZWF0dXJlcyA9IHRoaXMucHJvcGVydHlUeXBlU2VsZWN0ZWQuZmVhdHVyZXMubWFwKGFtZW5pdHkgPT4ge1xyXG4gICAgICBjb25zdCBpID0gdGhpcy5maWx0ZXIuZXh0cmFzLmluZGV4T2YoYW1lbml0eS52YWx1ZSk7XHJcbiAgICAgIGFtZW5pdHkuY2hlY2tlZCA9IChpID4gLTEpO1xyXG4gICAgICByZXR1cm4gYW1lbml0eTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVQcmljZXMobGltaXRQcmljZTogTGltaXRQcmljZSwgcHJvcGVydHlUeXBlOiBQcm9wZXJ0eVR5cGVFbnVtLCBvZmZlcmluZzogT2ZmZXJpbmdUeXBlRW51bSk6IG51bWJlcltdIHtcclxuICAgIGxldCBsaXN0OiBudW1iZXJbXSA9IFtdO1xyXG4gICAgbGltaXRQcmljZS5wcm9wZXJ0eVJhbmdlcy5mb3JFYWNoKChyYW5nZTogUHJvcGVydHlSYW5nZSkgPT4ge1xyXG4gICAgICBpZiAocmFuZ2Uub2ZmZXJpbmcgPT09IG9mZmVyaW5nICYmIHJhbmdlLnR5cGUgPT09IHByb3BlcnR5VHlwZSkge1xyXG4gICAgICAgIGxpc3QgPSBNVXRpbHMubGluU3BhY2VFeHAocmFuZ2UubWluLCByYW5nZS5tYXgsIDIwKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbGlzdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdENvbXBvbmVudEJ5UHJvcGVydHlUeXBlKHByb3BlcnR5VHlwZUl0ZW1JbmRleDogbnVtYmVyID0gbnVsbCk6IHZvaWQge1xyXG4gICAgdGhpcy5wcm9wZXJ0eVR5cGVTZWxlY3RlZCA9IEpTT04ucGFyc2UoXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KENvbnN0YW50c0NvbXBvbmVudHMuUHJvcGVydHlUeXBlTGlzdFtwcm9wZXJ0eVR5cGVJdGVtSW5kZXggIT09IG51bGwgPyBwcm9wZXJ0eVR5cGVJdGVtSW5kZXggOiA5XSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVGaWx0ZXJzU2F2ZWQoZmlsdGVyczogRmlsdGVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlciA9IGZpbHRlcnM7XHJcbiAgICBGaWx0ZXJzU2VydmljZS5zYXZlRmlsdGVycyh7XHJcbiAgICAgIGZpbHRlcnM6IGZpbHRlcnMsXHJcbiAgICAgIGZ0OiB0aGlzLnN1cmZhY2VVbml0U2VsZWN0ZWQgPT09IDEsXHJcbiAgICAgIGlzU2hhcmVkUHJvcGVydGllczogdGhpcy5faXNTaGFyZWRQcm9wZXJ0aWVzIHx8IGZhbHNlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzdG9yZUxhc3RGaWx0ZXJzU2F2ZWQoaW5pdD86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpbHRlcnNTYXZlZCA9IEZpbHRlcnNTZXJ2aWNlLmdldEZpbHRlcnNTYXZlZCgpIHx8IG51bGw7XHJcbiAgICB0aGlzLmZpbHRlciA9IGZpbHRlcnNTYXZlZCA/IGZpbHRlcnNTYXZlZC5maWx0ZXJzIDogVXRpbHMuZ2V0SW5pdGlhbEZpbHRlcih0aGlzLmlzT1BJKTtcclxuICAgIGlmIChmaWx0ZXJzU2F2ZWQpIHtcclxuICAgICAgaWYgKGZpbHRlcnNTYXZlZC5mdCkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyLm1haW5BcmVhID0gTnVtYmVyKCh0aGlzLmZpbHRlci5tYWluQXJlYSAvIHRoaXMuTUVURVJTX1RPX1NRKS50b0ZpeGVkKDApKTtcclxuICAgICAgICB0aGlzLnN1cmZhY2VVbml0U2VsZWN0ZWQgPSBmaWx0ZXJzU2F2ZWQuZnQgPyAxIDogMDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9pc1NoYXJlZFByb3BlcnRpZXMgPSBmaWx0ZXJzU2F2ZWQuaXNTaGFyZWRQcm9wZXJ0aWVzIHx8IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wcm9wZXJ0eVR5cGVTZWxlY3RlZCA9IENvbnN0YW50c0NvbXBvbmVudHMuUHJvcGVydHlUeXBlTGlzdC5maW5kKGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gdGhpcy5maWx0ZXIudHlwZSk7XHJcbiAgICB0aGlzLmFwcGx5QW1lbml0aWVzKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUZvcm1CeUZpbHRlcnMoKTtcclxuICAgIGlmIChpbml0KSB7XHJcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKEZpbHRlcnNDaGFuZ2VUeXBlLklOSVQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvcGVuQ29tcG9uZW50KG9wZW46IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmIChvcGVuKSB7XHJcbiAgICAgIHRoaXMuX3JlbmRlci5zZXRTdHlsZSh0aGlzLl9yZWYubmF0aXZlRWxlbWVudCwgJ3Zpc2liaWxpdHknLCAndmlzaWJsZScpO1xyXG4gICAgICB0aGlzLl9yZW5kZXIuc2V0U3R5bGUodGhpcy5fcmVmLm5hdGl2ZUVsZW1lbnQsICdvcGFjaXR5JywgJzEnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3JlbmRlci5zZXRTdHlsZSh0aGlzLl9yZWYubmF0aXZlRWxlbWVudCwgJ29wYWNpdHknLCAnMCcpO1xyXG4gICAgICB0aGlzLl9yZW5kZXIuc2V0U3R5bGUodGhpcy5fcmVmLm5hdGl2ZUVsZW1lbnQsICd2aXNpYmlsaXR5JywgJ2NvbGxhcHNlJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxpc3RlbkNoYW5nZXNPbkZvcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLmZpbHRlcnNGb3JtLmNvbnRyb2xzWydvZmZlcmluZyddLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0UHJpY2VzKCk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5maWx0ZXJzRm9ybS5jb250cm9sc1snY3VycmVuY3knXS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0UHJpY2VzKHZhbHVlLnRvU3RyaW5nKCkgYXMgQ3VycmVuY3kpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMuZmlsdGVyc0Zvcm0uY29udHJvbHNbJ21pblByaWNlJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubWF4UHJpY2VMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5fdG1wTWF4UHJpY2VMaXN0KTtcclxuICAgICAgICBjb25zdCBpID0gdGhpcy5taW5QcmljZUxpc3QuaW5kZXhPZih2YWx1ZSk7XHJcbiAgICAgICAgaWYgKGkgPiAtMSkge1xyXG4gICAgICAgICAgdGhpcy5tYXhQcmljZUxpc3Quc3BsaWNlKDAsIGkgKyAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5maWx0ZXJzRm9ybS5jb250cm9sc1snbWF4UHJpY2UnXS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubWluUHJpY2VMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5fdG1wTWluUHJpY2VMaXN0KTtcclxuICAgICAgICBjb25zdCBpID0gdGhpcy5tYXhQcmljZUxpc3QuaW5kZXhPZih2YWx1ZSk7XHJcbiAgICAgICAgaWYgKGkgPiAtMSkge1xyXG4gICAgICAgICAgY29uc3QgZGlmZmVyZW5jZSA9IHRoaXMubWluUHJpY2VMaXN0Lmxlbmd0aCAtIHRoaXMubWF4UHJpY2VMaXN0Lmxlbmd0aDtcclxuICAgICAgICAgIHRoaXMubWluUHJpY2VMaXN0LnNwbGljZShpICsgZGlmZmVyZW5jZSwgdGhpcy5taW5QcmljZUxpc3QubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -17,6 +17,7 @@ import { FiltersService } from './filters.service';
17
17
  import { FILTERS_TOKEN } from './token';
18
18
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
19
19
  import { MatRippleModule } from '@angular/material/core';
20
+ import { MatInputModule } from '@angular/material';
20
21
  export class FiltersModule {
21
22
  /**
22
23
  * @param {?=} isOPI
@@ -48,6 +49,7 @@ FiltersModule.decorators = [
48
49
  MatIconModule,
49
50
  MatButtonModule,
50
51
  MatDividerModule,
52
+ MatInputModule,
51
53
  MarkerPriceModule.forChild(),
52
54
  CurrencyConverterModule.forChild()
53
55
  ],
@@ -62,4 +64,4 @@ FiltersModule.decorators = [
62
64
  ]
63
65
  },] }
64
66
  ];
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWFwbGFuZGVyL2NvbXBvbmVudHMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9maWx0ZXJzL2ZpbHRlcnMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQXNCLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDakYsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sK0RBQStELENBQUM7QUFDdEcsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDdEMsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQTJCdkQsTUFBTSxPQUFPLGFBQWE7Ozs7O0lBQ3hCLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBZTtRQUM3QixPQUFPO1lBQ0wsUUFBUSxFQUFFLGFBQWE7WUFDdkIsU0FBUyxFQUFFO2dCQUNULGNBQWM7Z0JBQ2Q7b0JBQ0UsT0FBTyxFQUFFLGFBQWE7b0JBQ3RCLFFBQVEsRUFBRSxLQUFLLElBQUksS0FBSztpQkFDekI7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDOzs7WUFyQ0YsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLG1CQUFtQjtvQkFDbkIsV0FBVztvQkFDWCxlQUFlO29CQUNmLGtCQUFrQjtvQkFDbEIsZUFBZTtvQkFDZixxQkFBcUI7b0JBQ3JCLGFBQWE7b0JBQ2IsZUFBZTtvQkFDZixnQkFBZ0I7b0JBQ2hCLGlCQUFpQixDQUFDLFFBQVEsRUFBRTtvQkFDNUIsdUJBQXVCLENBQUMsUUFBUSxFQUFFO2lCQUNuQztnQkFDRCxZQUFZLEVBQUU7b0JBQ1osZ0JBQWdCO2lCQUNqQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsZ0JBQWdCO2lCQUNqQjtnQkFDRCxTQUFTLEVBQUU7b0JBQ1QsY0FBYztpQkFDZjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge0ZpbHRlcnNDb21wb25lbnR9IGZyb20gJy4vZmlsdGVycy5jb21wb25lbnQnO1xyXG5pbXBvcnQge01hdEJ1dHRvblRvZ2dsZU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XHJcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7TWF0U2VsZWN0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQge01hdERpdmlkZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xyXG5pbXBvcnQge01hcmtlclByaWNlTW9kdWxlfSBmcm9tICcuLy4uLy4uL3BpcGVzL21hcmtlci1wcmljZS9tYXJrZXItcHJpY2UubW9kdWxlJztcclxuaW1wb3J0IHtDdXJyZW5jeUNvbnZlcnRlck1vZHVsZX0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy9jdXJyZW5jeS1jb252ZXJ0ZXIvY3VycmVuY3ktY29udmVydGVyLm1vZHVsZSc7XHJcbmltcG9ydCB7RmlsdGVyc1NlcnZpY2V9IGZyb20gJy4vZmlsdGVycy5zZXJ2aWNlJztcclxuaW1wb3J0IHtGSUxURVJTX1RPS0VOfSBmcm9tICcuL3Rva2VuJztcclxuaW1wb3J0IHtGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge01hdFJpcHBsZU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE1hdFJpcHBsZU1vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdFNlbGVjdE1vZHVsZSxcclxuICAgIE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxyXG4gICAgTWFya2VyUHJpY2VNb2R1bGUuZm9yQ2hpbGQoKSxcclxuICAgIEN1cnJlbmN5Q29udmVydGVyTW9kdWxlLmZvckNoaWxkKClcclxuICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgRmlsdGVyc0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgRmlsdGVyc0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBGaWx0ZXJzU2VydmljZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbHRlcnNNb2R1bGUge1xyXG4gIHN0YXRpYyBmb3JDaGlsZChpc09QST86IGJvb2xlYW4pOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBGaWx0ZXJzTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBGaWx0ZXJzU2VydmljZSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm92aWRlOiBGSUxURVJTX1RPS0VOLFxyXG4gICAgICAgICAgdXNlVmFsdWU6IGlzT1BJIHx8IGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWFwbGFuZGVyL2NvbXBvbmVudHMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9maWx0ZXJzL2ZpbHRlcnMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQXNCLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDakYsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sK0RBQStELENBQUM7QUFDdEcsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDdEMsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUE0Qm5ELE1BQU0sT0FBTyxhQUFhOzs7OztJQUN4QixNQUFNLENBQUMsUUFBUSxDQUFDLEtBQWU7UUFDN0IsT0FBTztZQUNMLFFBQVEsRUFBRSxhQUFhO1lBQ3ZCLFNBQVMsRUFBRTtnQkFDVCxjQUFjO2dCQUNkO29CQUNFLE9BQU8sRUFBRSxhQUFhO29CQUN0QixRQUFRLEVBQUUsS0FBSyxJQUFJLEtBQUs7aUJBQ3pCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7O1lBdENGLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWixtQkFBbUI7b0JBQ25CLFdBQVc7b0JBQ1gsZUFBZTtvQkFDZixrQkFBa0I7b0JBQ2xCLGVBQWU7b0JBQ2YscUJBQXFCO29CQUNyQixhQUFhO29CQUNiLGVBQWU7b0JBQ2YsZ0JBQWdCO29CQUNoQixjQUFjO29CQUNkLGlCQUFpQixDQUFDLFFBQVEsRUFBRTtvQkFDNUIsdUJBQXVCLENBQUMsUUFBUSxFQUFFO2lCQUNuQztnQkFDRCxZQUFZLEVBQUU7b0JBQ1osZ0JBQWdCO2lCQUNqQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsZ0JBQWdCO2lCQUNqQjtnQkFDRCxTQUFTLEVBQUU7b0JBQ1QsY0FBYztpQkFDZjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge0ZpbHRlcnNDb21wb25lbnR9IGZyb20gJy4vZmlsdGVycy5jb21wb25lbnQnO1xyXG5pbXBvcnQge01hdEJ1dHRvblRvZ2dsZU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XHJcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7TWF0U2VsZWN0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQge01hdERpdmlkZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xyXG5pbXBvcnQge01hcmtlclByaWNlTW9kdWxlfSBmcm9tICcuLy4uLy4uL3BpcGVzL21hcmtlci1wcmljZS9tYXJrZXItcHJpY2UubW9kdWxlJztcclxuaW1wb3J0IHtDdXJyZW5jeUNvbnZlcnRlck1vZHVsZX0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy9jdXJyZW5jeS1jb252ZXJ0ZXIvY3VycmVuY3ktY29udmVydGVyLm1vZHVsZSc7XHJcbmltcG9ydCB7RmlsdGVyc1NlcnZpY2V9IGZyb20gJy4vZmlsdGVycy5zZXJ2aWNlJztcclxuaW1wb3J0IHtGSUxURVJTX1RPS0VOfSBmcm9tICcuL3Rva2VuJztcclxuaW1wb3J0IHtGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge01hdFJpcHBsZU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRSaXBwbGVNb2R1bGUsXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Ub2dnbGVNb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0RGl2aWRlck1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgTWFya2VyUHJpY2VNb2R1bGUuZm9yQ2hpbGQoKSxcclxuICAgIEN1cnJlbmN5Q29udmVydGVyTW9kdWxlLmZvckNoaWxkKClcclxuICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgRmlsdGVyc0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgRmlsdGVyc0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBGaWx0ZXJzU2VydmljZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbHRlcnNNb2R1bGUge1xyXG4gIHN0YXRpYyBmb3JDaGlsZChpc09QST86IGJvb2xlYW4pOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBGaWx0ZXJzTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBGaWx0ZXJzU2VydmljZSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm92aWRlOiBGSUxURVJTX1RPS0VOLFxyXG4gICAgICAgICAgdXNlVmFsdWU6IGlzT1BJIHx8IGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -129,8 +129,8 @@ export class DetailsComponent {
129
129
  DetailsComponent.decorators = [
130
130
  { type: Component, args: [{
131
131
  selector: 'lib-property-details',
132
- template: "<div class=\"info\" *ngIf=\"property\">\r\n <h1 class=\"title\">\r\n <span class=\"title__address\">\r\n <!--\r\n Address visible\r\n Street #Ext Int. Lt Mz, Colony, PostalCode, Township, City, State, Country\r\n Address hidden\r\n Colony, PostalCode, Township, City, State, Country\r\n -->\r\n <ng-template [ngIf]=\"property.address.visible\">\r\n {{property.address.street}}\r\n <span *ngIf=\"property.address.outdoorNumber\">#{{property.address.outdoorNumber}} </span>\r\n <span *ngIf=\"property.address.interiorNumber\">Int. {{property.address.interiorNumber}} </span>\r\n <span *ngIf=\"property.address.lt\">Lt. {{property.address.lt}} </span>\r\n <span *ngIf=\"property.address.mz\">Mz. {{property.address.mz}} </span>\r\n </ng-template>\r\n <span *ngIf=\"property.address.colony\">{{property.address.colony}}, </span>\r\n <span *ngIf=\"property.address.postalCode\">{{property.address.postalCode}}, </span>\r\n <span *ngIf=\"property.address.township\">{{property.address.township}}, </span>\r\n <span *ngIf=\"property.address.city\">{{property.address.city}}, </span>\r\n <span *ngIf=\"property.address.state\">{{property.address.state}}, </span>\r\n <span *ngIf=\"property.address.country\">{{property.address.country}}</span>\r\n <span *ngIf=\"!property.address.visible\" class=\"address-street__hidden\"><br> Direcci\u00F3n aproximada</span>\r\n </span>\r\n <span class=\"title__property-offering\">\r\n <span class=\"title__property-offering-price\">\r\n <ng-template [ngIf]=\"currencyConverted\" [ngIfElse]=\"realPrice\">\r\n {{currencyConverted.price | currency : '' : 'symbol' : '1.0-0'}} {{currencyConverted.currency}}\r\n <br>\r\n <span class=\"property-offering-price__info-currency\"><mat-icon class=\"info-currency__icon\">info</mat-icon> Precio convertido <br> aproximado</span>\r\n </ng-template>\r\n <ng-template #realPrice>\r\n {{property.price | currency : '' : 'symbol' : '1.0-0'}} {{property.currency}}\r\n </ng-template>\r\n </span>\r\n <ng-template [ngIf]=\"currencyConverted\">\r\n <br>\r\n <span>{{property.price | currency : '' : 'symbol' : '1.0-0'}} {{property.currency}}</span>\r\n <br>\r\n <span class=\"property-offering-price__info-currency\"><mat-icon class=\"info-currency__icon\">info</mat-icon> Precio publicado</span>\r\n </ng-template>\r\n <br>\r\n <span\r\n class=\"ic-property-{{propertyType.iconName}}\"></span>{{property.type | propertyType}} {{property.offering | offeringType}}\r\n </span>\r\n </h1>\r\n <hr class=\"divider\">\r\n <section class=\"features\">\r\n <ng-template [ngIf]=\"property.features.bedrooms && property.features.bedrooms > 0\">\r\n <p class=\"features__item\">\r\n <span class=\"features__item-icon ic-features-bedroom\"></span>\r\n <span class=\"features__item-text\">{{property.features.bedrooms}}</span>\r\n </p>\r\n </ng-template>\r\n <ng-template [ngIf]=\"property.features.bathrooms && property.features.bathrooms > 0\">\r\n <p class=\"features__item\">\r\n <span class=\"features__item-icon ic-features-bathroom\"></span>\r\n <span class=\"features__item-text\">{{property.features.bathrooms}}</span>\r\n </p>\r\n </ng-template>\r\n <ng-template [ngIf]=\"property.features.mainArea && property.features.mainArea > 0\">\r\n <p class=\"features__item\">\r\n <span class=\"features__item-icon ic-features-surface\"></span>\r\n <span class=\"features__item-text\">\r\n {{property.features.mainArea}}\r\n <span>m<sup>2</sup></span>\r\n </span>\r\n </p>\r\n </ng-template>\r\n <ng-template [ngIf]=\"property.features.parkingSpaces && property.features.parkingSpaces > 0\">\r\n <p class=\"features__item\">\r\n <span class=\"features__item-icon ic-features-parking\"></span>\r\n <span class=\"features__item-text\">{{property.features.parkingSpaces}}</span>\r\n </p>\r\n </ng-template>\r\n <ng-template [ngIf]=\"property.features.roi && property.features.roi > 0\">\r\n <p class=\"features__item\">\r\n <span class=\"features__item-icon ic-features-roi\"></span>\r\n <span class=\"features__item-text\">{{property.features.roi}}</span>\r\n </p>\r\n </ng-template>\r\n </section>\r\n <section class=\"description\">\r\n <h2 class=\"sub-title\">\r\n Descripci\u00F3n\r\n </h2>\r\n <p class=\"description__body\">\r\n {{property.description}}\r\n </p>\r\n </section>\r\n <ng-template [ngIf]=\"property.externalLink && visibleTour\">\r\n <hr class=\"divider\">\r\n <section class=\"external-link\">\r\n <h2 class=\"sub-title\">\r\n Tour virtual\r\n </h2>\r\n <iframe class=\"external-link__body\" [src]=\"getTourUrl()\"></iframe>\r\n </section>\r\n </ng-template>\r\n <ng-template [ngIf]=\"record\">\r\n <hr class=\"divider\">\r\n <section class=\"agreement\">\r\n <h2 class=\"sub-title\">\r\n Contrato\r\n </h2>\r\n <p class=\"agreement__body\">\r\n <span class=\"agreement__body-filed\">\r\n <span class=\"agreement__body-field-title\">\r\n Exclusividad de contrato\r\n </span>\r\n <span class=\"agreement__body-field-content\">\r\n {{property.propertyInfo.exclusivity ? 'Si' : 'No'}}\r\n </span>\r\n </span>\r\n <span class=\"agreement__body-filed\" *ngIf=\"property.propertyInfo.listingAgreementStartDate\">\r\n <span class=\"agreement__body-field-title\">\r\n Fecha de inicio de contrato\r\n </span>\r\n <span class=\"agreement__body-field-content\">\r\n {{property.propertyInfo.listingAgreementStartDate | libFormatDate : true : 'dd/MM/yyyy'}}\r\n </span>\r\n </span>\r\n <span class=\"agreement__body-filed\" *ngIf=\"agreementEndDate\">\r\n <span class=\"agreement__body-field-title\">\r\n Fecha de termino de contrato\r\n </span>\r\n <span class=\"agreement__body-field-content\">\r\n {{agreementEndDate | libFormatDate : true : 'dd/MM/yyyy'}}\r\n </span>\r\n </span>\r\n <span class=\"agreement__body-filed\" *ngIf=\"property.propertyInfo.commission\">\r\n <span class=\"agreement__body-field-title\">\r\n Comisi\u00F3n\r\n </span>\r\n <span class=\"agreement__body-field-content\">\r\n <span *ngIf=\"property.offering === 'RENT'\">{{property.propertyInfo.commission}} meses</span>\r\n <span *ngIf=\"property.offering === 'SALE'\">{{property.propertyInfo.commission * 100}}%</span>\r\n </span>\r\n </span>\r\n <span class=\"agreement__body-filed\">\r\n <span class=\"agreement__body-field-title\">\r\n Anunciada en el {{mlsLabel || 'MLS'}}\r\n </span>\r\n <span class=\"agreement__body-field-content\">\r\n {{property.propertyInfo.mls ? 'Si' : 'No'}}\r\n </span>\r\n </span>\r\n </p>\r\n </section>\r\n <hr class=\"divider\">\r\n <section class=\"private-features\">\r\n <h2 class=\"sub-title\">\r\n Caracteristicas\r\n </h2>\r\n <p class=\"private-features__body\">\r\n <span class=\"private-features__body-filed\" *ngIf=\"property.propertyInfo.lowestPrice\">\r\n <span class=\"private-features__body-field-title\">\r\n Precio minimo\r\n </span>\r\n <span class=\"private-features__body-field-content\">\r\n {{property.propertyInfo.lowestPrice | currency : '' : 'symbol' : '1.0-0'}}\r\n </span>\r\n </span>\r\n <span class=\"private-features__body-filed\" *ngIf=\"property.features.condominiumFeePrice\">\r\n <span class=\"private-features__body-field-title\">\r\n Cuota de mantenimiento\r\n </span>\r\n <span class=\"private-features__body-field-content\">\r\n {{property.features.condominiumFeePrice | currency : '' : 'symbol' : '1.0-0'}}\r\n </span>\r\n </span>\r\n <span class=\"private-features__body-filed\" *ngIf=\"property.propertyInfo.leaseTransferPrice\">\r\n <span class=\"private-features__body-field-title\">\r\n Traspaso\r\n </span>\r\n <span class=\"private-features__body-field-content\">\r\n {{property.propertyInfo.leaseTransferPrice | currency : '' : 'symbol' : '1.0-0'}}\r\n </span>\r\n </span>\r\n <span class=\"private-features__body-filed\" *ngIf=\"property.features.builtIn\">\r\n <span class=\"private-features__body-field-title\">\r\n A\u00F1o de construcci\u00F3n\r\n </span>\r\n <span class=\"private-features__body-field-content\">\r\n {{property.features.builtIn}}\r\n </span>\r\n </span>\r\n <span class=\"private-features__body-filed\" *ngIf=\"property.features.roi\">\r\n <span class=\"private-features__body-field-title\">\r\n Retorno de inversi\u00F3n\r\n </span>\r\n <span class=\"private-features__body-field-content\">\r\n {{property.features.roi}}\r\n </span>\r\n </span>\r\n </p>\r\n </section>\r\n <ng-template [ngIf]=\"property.propertyInfo.consumerReporting && property.propertyInfo.consumerReporting !== 0\">\r\n <hr class=\"divider\">\r\n <section class=\"buro-rentas\">\r\n <h2 class=\"sub-title\">\r\n Bur\u00F3 Rentas\r\n </h2>\r\n <p class=\"private-features__body\" *ngIf=\"property.propertyInfo.consumerReporting === 1\">Requerir certificado de\r\n fiabiidad\r\n </p>\r\n <p class=\"private-features__body\" *ngIf=\"property.propertyInfo.consumerReporting === 2\">Requerir poliza de\r\n arrendamiento\r\n </p>\r\n </section>\r\n </ng-template>\r\n <ng-template [ngIf]=\"property.propertyInfo.notes\">\r\n <hr class=\"divider\">\r\n <section class=\"notes\">\r\n <h2 class=\"sub-title\">\r\n Notas\r\n </h2>\r\n <p class=\"notes__body\">{{property.propertyInfo.notes}}</p>\r\n </section>\r\n </ng-template>\r\n </ng-template>\r\n <hr class=\"divider\">\r\n <section class=\"indications\">\r\n <h2 class=\"sub-title\">\r\n Indicaciones\r\n </h2>\r\n <div class=\"indications__body\">\r\n <a class=\"indications__body-item-link\"\r\n href=\"https://www.google.com/maps/dir/?api=1&destination={{property.address.location.latitude}},{{property.address.location.longitude}}\"\r\n [target]=\"'_blank'\">\r\n <p matRipple class=\"indications__body-item\">\r\n <span class=\"indications__body-item-icon ic-component-property-marker\"></span>\r\n <span class=\"indications__body-item-text\">\u00BFCOMO LLEGAR?</span>\r\n </p>\r\n </a>\r\n <a class=\"indications__body-item-link\"\r\n href=\"https://www.google.com/maps/@?api=1&map_action=pano&viewpoint={{property.address.location.latitude}},{{property.address.location.longitude}}\"\r\n [target]=\"'_blank'\">\r\n <p matRipple class=\"indications__body-item\">\r\n <span class=\"indications__body-item-icon ic-component-property-streetview\"></span>\r\n <span class=\"indications__body-item-text\">VISTA DE LA CALLE</span>\r\n </p>\r\n </a>\r\n </div>\r\n </section>\r\n <hr class=\"divider\">\r\n <ng-template [ngIf]=\"amenities && amenities.length > 0\">\r\n <section class=\"amenities\">\r\n <h2 class=\"sub-title\">Amenidades</h2>\r\n <p class=\"amenities__list-amenities\">\r\n <ng-container *ngFor=\"let amenity of amenities\">\r\n <span matRipple class=\"list-amenities__amenity\">\r\n <span class=\"amenity__icon ic-amenities-{{amenity.iconName}}\"></span>\r\n <span class=\"amenity__text\">{{amenity.name}}</span>\r\n </span>\r\n </ng-container>\r\n </p>\r\n </section>\r\n </ng-template>\r\n <ng-template [ngIf]=\"features && features.length > 0\">\r\n <section class=\"amenities\">\r\n <h2 class=\"sub-title\">Caracteristicas de la zona</h2>\r\n <p class=\"amenities__list-amenities\">\r\n <ng-container *ngFor=\"let feature of features\">\r\n <span matRipple class=\"list-amenities__amenity\">\r\n <span class=\"amenity__icon ic-amenities-{{feature.iconName}}\"></span>\r\n <span class=\"amenity__text\">{{feature.name}}</span>\r\n </span>\r\n </ng-container>\r\n </p>\r\n </section>\r\n </ng-template>\r\n</div>\r\n",
133
- styles: [":host{display:block;width:100%}.divider{border:none;border-bottom:1px solid}.title{display:flex;font-size:18px;color:#707070;font-weight:400}.sub-title{margin:0;font-size:18px;padding:0 16px 16px 0}.title>span:first-child{width:60%}@media screen and (max-width:600px){.title{flex-direction:column}.title>span:first-child{width:100%}}.title>span:last-child{width:40%}.address-street__hidden{font-size:12px}.title__property-offering{text-align:right}@media screen and (max-width:600px){.title>span:last-child{width:100%}.title__property-offering{text-align:left;margin:16px 0}}.title__property-offering-price{font-size:26px;font-weight:700}.property-offering-price__info-currency{font-size:12px;display:inline-block;margin:4px 0}.info-currency__icon{width:12px;height:12px;font-size:12px}.features{padding:8px 0;display:flex;align-items:center}.features__item{width:auto;margin:0 24px 0 0;display:flex;justify-content:center;align-items:center;position:relative}.features__item:last-child:after{content:none}.features__item-text{font-size:16px;display:inline-block}.features__item-icon{display:inline-block;font-size:24px;width:24px;height:24px;margin-right:8px}.agreement,.buro-rentas,.description,.external-link,.indications,.notes,.private-features{display:flex;padding:16px 0}.indications__body{display:flex}.indications__body-item-link{color:inherit;text-decoration:none}.indications__body-item{padding:8px;margin:0 16px 0 0;border-radius:8px;cursor:pointer}.indications__body-item-icon{margin:auto;padding:8px;border-radius:8px;display:block;font-size:24px;width:24px;height:24px}.indications__body-item-text{display:block;text-align:center;font-size:12px;margin:6px 0}.agreement__body,.description__body,.notes__body,.private-features__body{width:75%;margin:0 0 0 auto}@media screen and (max-width:600px){.agreement,.buro-rentas,.description,.external-link,.indications,.notes,.private-features{flex-direction:column;align-items:start}.agreement__body,.description__body,.notes__body,.private-features__body{width:100%;margin:0}}.external-link__body{width:75%;height:280px;border-radius:16px;margin-left:20px}@media screen and (max-width:600px){.external-link__body{width:100%;margin:0}}.agreement__body-filed,.private-features__body-filed{display:block;padding:8px 0}.agreement__body-field-content,.agreement__body-field-title,.private-features__body-field-content,.private-features__body-field-title{width:50%;display:inline-block}.amenities__list{width:50%;display:-ms-grid;display:grid;-ms-grid-columns:(calc(100% / 4))[4];grid-template-columns:repeat(4,calc(100% / 4))}.amenities,.attributes{width:50%;display:inline-block}@media screen and (max-width:600px){.amenities,.attributes{width:100%;display:block}}.amenities__list-amenities{display:-ms-grid;display:grid;-ms-grid-columns:(calc(100% / 4))[4];grid-template-columns:repeat(4,calc(100% / 4))}.list-amenities__amenity{display:flex;flex-direction:column;align-items:center;cursor:pointer;padding:4px;box-sizing:border-box;border-radius:8px;text-align:center}.amenity__icon{width:24px;height:24px;font-size:24px;border-radius:50%;padding:8px;display:block;margin:8px}.amenity__text{padding:8px;box-sizing:border-box;display:block;font-size:12px}"]
132
+ template: "<div class=\"info\" *ngIf=\"property\">\r\n <h1 class=\"title\">\r\n <span class=\"title__address\">\r\n <!--\r\n Address visible\r\n Street #Ext Int. Lt Mz, Colony, PostalCode, Township, City, State, Country\r\n Address hidden\r\n Colony, PostalCode, Township, City, State, Country\r\n -->\r\n <ng-template [ngIf]=\"property.address.visible\">\r\n {{property.address.street}}\r\n <span *ngIf=\"property.address.outdoorNumber\">#{{property.address.outdoorNumber}} </span>\r\n <span *ngIf=\"property.address.interiorNumber\">Int. {{property.address.interiorNumber}} </span>\r\n <span *ngIf=\"property.address.lt\">Lt. {{property.address.lt}} </span>\r\n <span *ngIf=\"property.address.mz\">Mz. {{property.address.mz}} </span>\r\n </ng-template>\r\n <span *ngIf=\"property.address.colony\">{{property.address.colony}}, </span>\r\n <span *ngIf=\"property.address.postalCode\">{{property.address.postalCode}}, </span>\r\n <span *ngIf=\"property.address.township\">{{property.address.township}}, </span>\r\n <span *ngIf=\"property.address.city\">{{property.address.city}}, </span>\r\n <span *ngIf=\"property.address.state\">{{property.address.state}}, </span>\r\n <span *ngIf=\"property.address.country\">{{property.address.country}}</span>\r\n <span *ngIf=\"!property.address.visible\" class=\"address-street__hidden\"><br> Direcci\u00F3n aproximada</span>\r\n </span>\r\n <span class=\"title__property-offering\">\r\n <span class=\"title__property-offering-price\">\r\n <ng-template [ngIf]=\"currencyConverted\" [ngIfElse]=\"realPrice\">\r\n {{currencyConverted.price | currency : '' : 'symbol' : '1.0-0'}} {{currencyConverted.currency}}\r\n <br>\r\n <span class=\"property-offering-price__info-currency\"><mat-icon class=\"info-currency__icon\">info</mat-icon> Precio convertido <br> aproximado</span>\r\n </ng-template>\r\n <ng-template #realPrice>\r\n {{property.price | currency : '' : 'symbol' : '1.0-0'}} {{property.currency}}\r\n </ng-template>\r\n </span>\r\n <ng-template [ngIf]=\"currencyConverted\">\r\n <br>\r\n <span>{{property.price | currency : '' : 'symbol' : '1.0-0'}} {{property.currency}}</span>\r\n <br>\r\n <span class=\"property-offering-price__info-currency\"><mat-icon class=\"info-currency__icon\">info</mat-icon> Precio publicado</span>\r\n </ng-template>\r\n <br>\r\n <div class=\"div__title-sku\">\r\n <div>\r\n <span\r\n class=\"ic-property-{{propertyType.iconName}}\">\r\n </span>{{property.type | propertyType}} {{property.offering | offeringType}}\r\n </div>\r\n <ng-template [ngIf]=\"property.sku !== '' && property.sku\">\r\n <span class=\"title__sku\">\r\n SKU: {{property.sku}}\r\n </span>\r\n </ng-template>\r\n </div>\r\n </span>\r\n </h1>\r\n <hr class=\"divider\">\r\n <section class=\"features\">\r\n <ng-template [ngIf]=\"property.features.bedrooms && property.features.bedrooms > 0\">\r\n <p class=\"features__item\">\r\n <span class=\"features__item-icon ic-features-bedroom\"></span>\r\n <span class=\"features__item-text\">{{property.features.bedrooms}}</span>\r\n </p>\r\n </ng-template>\r\n <ng-template [ngIf]=\"property.features.bathrooms && property.features.bathrooms > 0\">\r\n <p class=\"features__item\">\r\n <span class=\"features__item-icon ic-features-bathroom\"></span>\r\n <span class=\"features__item-text\">{{property.features.bathrooms}}</span>\r\n </p>\r\n </ng-template>\r\n <ng-template [ngIf]=\"property.features.mainArea && property.features.mainArea > 0\">\r\n <p class=\"features__item\">\r\n <span class=\"features__item-icon ic-features-surface\"></span>\r\n <span class=\"features__item-text\">\r\n {{property.features.mainArea}}\r\n <span>m<sup>2</sup></span>\r\n </span>\r\n </p>\r\n </ng-template>\r\n <ng-template [ngIf]=\"property.features.parkingSpaces && property.features.parkingSpaces > 0\">\r\n <p class=\"features__item\">\r\n <span class=\"features__item-icon ic-features-parking\"></span>\r\n <span class=\"features__item-text\">{{property.features.parkingSpaces}}</span>\r\n </p>\r\n </ng-template>\r\n <ng-template [ngIf]=\"property.features.roi && property.features.roi > 0\">\r\n <p class=\"features__item\">\r\n <span class=\"features__item-icon ic-features-roi\"></span>\r\n <span class=\"features__item-text\">{{property.features.roi}}</span>\r\n </p>\r\n </ng-template>\r\n </section>\r\n <section class=\"description\">\r\n <h2 class=\"sub-title\">\r\n Descripci\u00F3n\r\n </h2>\r\n <p class=\"description__body\">\r\n {{property.description}}\r\n </p>\r\n </section>\r\n <ng-template [ngIf]=\"property.externalLink && visibleTour\">\r\n <hr class=\"divider\">\r\n <section class=\"external-link\">\r\n <h2 class=\"sub-title\">\r\n Tour virtual\r\n </h2>\r\n <iframe class=\"external-link__body\" [src]=\"getTourUrl()\"></iframe>\r\n </section>\r\n </ng-template>\r\n <ng-template [ngIf]=\"record\">\r\n <hr class=\"divider\">\r\n <section class=\"agreement\">\r\n <h2 class=\"sub-title\">\r\n Contrato\r\n </h2>\r\n <p class=\"agreement__body\">\r\n <span class=\"agreement__body-filed\">\r\n <span class=\"agreement__body-field-title\">\r\n Exclusividad de contrato\r\n </span>\r\n <span class=\"agreement__body-field-content\">\r\n {{property.propertyInfo.exclusivity ? 'Si' : 'No'}}\r\n </span>\r\n </span>\r\n <span class=\"agreement__body-filed\" *ngIf=\"property.propertyInfo.listingAgreementStartDate\">\r\n <span class=\"agreement__body-field-title\">\r\n Fecha de inicio de contrato\r\n </span>\r\n <span class=\"agreement__body-field-content\">\r\n {{property.propertyInfo.listingAgreementStartDate | libFormatDate : true : 'dd/MM/yyyy'}}\r\n </span>\r\n </span>\r\n <span class=\"agreement__body-filed\" *ngIf=\"agreementEndDate\">\r\n <span class=\"agreement__body-field-title\">\r\n Fecha de termino de contrato\r\n </span>\r\n <span class=\"agreement__body-field-content\">\r\n {{agreementEndDate | libFormatDate : true : 'dd/MM/yyyy'}}\r\n </span>\r\n </span>\r\n <span class=\"agreement__body-filed\" *ngIf=\"property.propertyInfo.commission\">\r\n <span class=\"agreement__body-field-title\">\r\n Comisi\u00F3n\r\n </span>\r\n <span class=\"agreement__body-field-content\">\r\n <span *ngIf=\"property.offering === 'RENT'\">{{property.propertyInfo.commission}} meses</span>\r\n <span *ngIf=\"property.offering === 'SALE'\">{{property.propertyInfo.commission * 100}}%</span>\r\n </span>\r\n </span>\r\n <span class=\"agreement__body-filed\">\r\n <span class=\"agreement__body-field-title\">\r\n Anunciada en el {{mlsLabel || 'MLS'}}\r\n </span>\r\n <span class=\"agreement__body-field-content\">\r\n {{property.propertyInfo.mls ? 'Si' : 'No'}}\r\n </span>\r\n </span>\r\n </p>\r\n </section>\r\n <hr class=\"divider\">\r\n <section class=\"private-features\">\r\n <h2 class=\"sub-title\">\r\n Caracteristicas\r\n </h2>\r\n <p class=\"private-features__body\">\r\n <span class=\"private-features__body-filed\" *ngIf=\"property.propertyInfo.lowestPrice\">\r\n <span class=\"private-features__body-field-title\">\r\n Precio minimo\r\n </span>\r\n <span class=\"private-features__body-field-content\">\r\n {{property.propertyInfo.lowestPrice | currency : '' : 'symbol' : '1.0-0'}}\r\n </span>\r\n </span>\r\n <span class=\"private-features__body-filed\" *ngIf=\"property.features.condominiumFeePrice\">\r\n <span class=\"private-features__body-field-title\">\r\n Cuota de mantenimiento\r\n </span>\r\n <span class=\"private-features__body-field-content\">\r\n {{property.features.condominiumFeePrice | currency : '' : 'symbol' : '1.0-0'}}\r\n </span>\r\n </span>\r\n <span class=\"private-features__body-filed\" *ngIf=\"property.propertyInfo.leaseTransferPrice\">\r\n <span class=\"private-features__body-field-title\">\r\n Traspaso\r\n </span>\r\n <span class=\"private-features__body-field-content\">\r\n {{property.propertyInfo.leaseTransferPrice | currency : '' : 'symbol' : '1.0-0'}}\r\n </span>\r\n </span>\r\n <span class=\"private-features__body-filed\" *ngIf=\"property.features.builtIn\">\r\n <span class=\"private-features__body-field-title\">\r\n A\u00F1o de construcci\u00F3n\r\n </span>\r\n <span class=\"private-features__body-field-content\">\r\n {{property.features.builtIn}}\r\n </span>\r\n </span>\r\n <span class=\"private-features__body-filed\" *ngIf=\"property.features.roi\">\r\n <span class=\"private-features__body-field-title\">\r\n Retorno de inversi\u00F3n\r\n </span>\r\n <span class=\"private-features__body-field-content\">\r\n {{property.features.roi}}\r\n </span>\r\n </span>\r\n </p>\r\n </section>\r\n <ng-template [ngIf]=\"property.propertyInfo.consumerReporting && property.propertyInfo.consumerReporting !== 0\">\r\n <hr class=\"divider\">\r\n <section class=\"buro-rentas\">\r\n <h2 class=\"sub-title\">\r\n Bur\u00F3 Rentas\r\n </h2>\r\n <p class=\"private-features__body\" *ngIf=\"property.propertyInfo.consumerReporting === 1\">Requerir certificado de\r\n fiabiidad\r\n </p>\r\n <p class=\"private-features__body\" *ngIf=\"property.propertyInfo.consumerReporting === 2\">Requerir poliza de\r\n arrendamiento\r\n </p>\r\n </section>\r\n </ng-template>\r\n <ng-template [ngIf]=\"property.propertyInfo.notes\">\r\n <hr class=\"divider\">\r\n <section class=\"notes\">\r\n <h2 class=\"sub-title\">\r\n Notas\r\n </h2>\r\n <p class=\"notes__body\">{{property.propertyInfo.notes}}</p>\r\n </section>\r\n </ng-template>\r\n </ng-template>\r\n <hr class=\"divider\">\r\n <section class=\"indications\">\r\n <h2 class=\"sub-title\">\r\n Indicaciones\r\n </h2>\r\n <div class=\"indications__body\">\r\n <a class=\"indications__body-item-link\"\r\n href=\"https://www.google.com/maps/dir/?api=1&destination={{property.address.location.latitude}},{{property.address.location.longitude}}\"\r\n [target]=\"'_blank'\">\r\n <p matRipple class=\"indications__body-item\">\r\n <span class=\"indications__body-item-icon ic-component-property-marker\"></span>\r\n <span class=\"indications__body-item-text\">\u00BFCOMO LLEGAR?</span>\r\n </p>\r\n </a>\r\n <a class=\"indications__body-item-link\"\r\n href=\"https://www.google.com/maps/@?api=1&map_action=pano&viewpoint={{property.address.location.latitude}},{{property.address.location.longitude}}\"\r\n [target]=\"'_blank'\">\r\n <p matRipple class=\"indications__body-item\">\r\n <span class=\"indications__body-item-icon ic-component-property-streetview\"></span>\r\n <span class=\"indications__body-item-text\">VISTA DE LA CALLE</span>\r\n </p>\r\n </a>\r\n </div>\r\n </section>\r\n <hr class=\"divider\">\r\n <ng-template [ngIf]=\"amenities && amenities.length > 0\">\r\n <section class=\"amenities\">\r\n <h2 class=\"sub-title\">Amenidades</h2>\r\n <p class=\"amenities__list-amenities\">\r\n <ng-container *ngFor=\"let amenity of amenities\">\r\n <span matRipple class=\"list-amenities__amenity\">\r\n <span class=\"amenity__icon ic-amenities-{{amenity.iconName}}\"></span>\r\n <span class=\"amenity__text\">{{amenity.name}}</span>\r\n </span>\r\n </ng-container>\r\n </p>\r\n </section>\r\n </ng-template>\r\n <ng-template [ngIf]=\"features && features.length > 0\">\r\n <section class=\"amenities\">\r\n <h2 class=\"sub-title\">Caracteristicas de la zona</h2>\r\n <p class=\"amenities__list-amenities\">\r\n <ng-container *ngFor=\"let feature of features\">\r\n <span matRipple class=\"list-amenities__amenity\">\r\n <span class=\"amenity__icon ic-amenities-{{feature.iconName}}\"></span>\r\n <span class=\"amenity__text\">{{feature.name}}</span>\r\n </span>\r\n </ng-container>\r\n </p>\r\n </section>\r\n </ng-template>\r\n</div>\r\n",
133
+ styles: [":host{display:block;width:100%}.divider{border:none;border-bottom:1px solid}.title{display:flex;font-size:18px;color:#707070;font-weight:400}.sub-title{margin:0;font-size:18px;padding:0 16px 16px 0}.title>span:first-child{width:60%}@media screen and (max-width:600px){.title{flex-direction:column}.title>span:first-child{width:100%}}.title>span:last-child{width:40%}.div__title-sku{display:flex;flex-direction:column}.title__sku{margin-bottom:2%}.address-street__hidden{font-size:12px}.title__property-offering{text-align:right}@media screen and (max-width:600px){.title>span:last-child{width:100%}.title__property-offering{text-align:left;margin:16px 0}}.title__property-offering-price{font-size:26px;font-weight:700}.property-offering-price__info-currency{font-size:12px;display:inline-block;margin:4px 0}.info-currency__icon{width:12px;height:12px;font-size:12px}.features{padding:8px 0;display:flex;align-items:center}.features__item{width:auto;margin:0 24px 0 0;display:flex;justify-content:center;align-items:center;position:relative}.features__item:last-child:after{content:none}.features__item-text{font-size:16px;display:inline-block}.features__item-icon{display:inline-block;font-size:24px;width:24px;height:24px;margin-right:8px}.agreement,.buro-rentas,.description,.external-link,.indications,.notes,.private-features{display:flex;padding:16px 0}.indications__body{display:flex}.indications__body-item-link{color:inherit;text-decoration:none}.indications__body-item{padding:8px;margin:0 16px 0 0;border-radius:8px;cursor:pointer}.indications__body-item-icon{margin:auto;padding:8px;border-radius:8px;display:block;font-size:24px;width:24px;height:24px}.indications__body-item-text{display:block;text-align:center;font-size:12px;margin:6px 0}.agreement__body,.description__body,.notes__body,.private-features__body{width:75%;margin:0 0 0 auto}@media screen and (max-width:600px){.agreement,.buro-rentas,.description,.external-link,.indications,.notes,.private-features{flex-direction:column;align-items:start}.agreement__body,.description__body,.notes__body,.private-features__body{width:100%;margin:0}}.external-link__body{width:75%;height:280px;border-radius:16px;margin-left:20px}@media screen and (max-width:600px){.external-link__body{width:100%;margin:0}}.agreement__body-filed,.private-features__body-filed{display:block;padding:8px 0}.agreement__body-field-content,.agreement__body-field-title,.private-features__body-field-content,.private-features__body-field-title{width:50%;display:inline-block}.amenities__list{width:50%;display:-ms-grid;display:grid;-ms-grid-columns:(calc(100% / 4))[4];grid-template-columns:repeat(4,calc(100% / 4))}.amenities,.attributes{width:50%;display:inline-block}@media screen and (max-width:600px){.amenities,.attributes{width:100%;display:block}}.amenities__list-amenities{display:-ms-grid;display:grid;-ms-grid-columns:(calc(100% / 4))[4];grid-template-columns:repeat(4,calc(100% / 4))}.list-amenities__amenity{display:flex;flex-direction:column;align-items:center;cursor:pointer;padding:4px;box-sizing:border-box;border-radius:8px;text-align:center}.amenity__icon{width:24px;height:24px;font-size:24px;border-radius:50%;padding:8px;display:block;margin:8px}.amenity__text{padding:8px;box-sizing:border-box;display:block;font-size:12px}"]
134
134
  }] }
135
135
  ];
136
136
  /** @nocollapse */
@@ -169,4 +169,4 @@ if (false) {
169
169
  */
170
170
  DetailsComponent.prototype._sanitizer;
171
171
  }
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWFwbGFuZGVyL2NvbXBvbmVudHMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9wcm9wZXJ0eS9jb21wb25lbnRzL2RldGFpbHMvZGV0YWlscy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFtQyxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFN0MsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFcEUsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxZQUFZLEVBQWtCLE1BQU0sMkJBQTJCLENBQUM7QUFReEUsTUFBTSxPQUFPLGdCQUFnQjs7OztJQVczQixZQUNVLFVBQXdCO1FBQXhCLGVBQVUsR0FBVixVQUFVLENBQWM7UUFFaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQzs7OztJQUVELFFBQVE7SUFDUixDQUFDOzs7OztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxFQUFFO1lBQzNELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUNqRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQzs7OztJQUVE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S0FBSzt1QkFDTCxLQUFLO3VCQUNMLEtBQUs7MEJBQ0wsS0FBSzs7OztJQUpOLGtDQUF5Qjs7SUFDekIsNkNBQWdFOztJQUNoRSxvQ0FBK0I7O0lBQy9CLG9DQUEwQjs7SUFDMUIsdUNBQThCOztJQUM5QixxQ0FBZ0M7O0lBQ2hDLG9DQUErQjs7SUFDL0Isd0NBQXNDOztJQUN0Qyw0Q0FBZ0M7Ozs7O0lBRzlCLHNDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge05ld1Byb3BlcnR5fSBmcm9tICdAbWFwbGFuZGVyL3R5cGVzJztcclxuaW1wb3J0IHtBbWVuaXR5SXRlbX0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvbW9kZWxzL2FtZW5pdHktaXRlbSc7XHJcbmltcG9ydCB7Q29uc3RhbnRzQ29tcG9uZW50c30gZnJvbSAnLi4vLi4vLi4vLi4vY29uc3RhbnRzQ29tcG9uZW50cyc7XHJcbmltcG9ydCB7UHJvcGVydHlUeXBlSXRlbX0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvbW9kZWxzL3Byb3BlcnR5LXR5cGUtaXRlbSc7XHJcbmltcG9ydCB7TURhdGV9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2NsYXNzZXMnO1xyXG5pbXBvcnQge0RvbVNhbml0aXplciwgU2FmZVJlc291cmNlVXJsfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1wcm9wZXJ0eS1kZXRhaWxzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGV0YWlscy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIHJlY29yZDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjdXJyZW5jeUNvbnZlcnRlZDogeyBjdXJyZW5jeTogc3RyaW5nLCBwcmljZTogbnVtYmVyIH07XHJcbiAgQElucHV0KCkgcHJvcGVydHk6IE5ld1Byb3BlcnR5O1xyXG4gIEBJbnB1dCgpIG1sc0xhYmVsOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdmlzaWJsZVRvdXI6IGJvb2xlYW47XHJcbiAgcHVibGljIGFtZW5pdGllczogQW1lbml0eUl0ZW1bXTtcclxuICBwdWJsaWMgZmVhdHVyZXM6IEFtZW5pdHlJdGVtW107XHJcbiAgcHVibGljIHByb3BlcnR5VHlwZTogUHJvcGVydHlUeXBlSXRlbTtcclxuICBwdWJsaWMgYWdyZWVtZW50RW5kRGF0ZTogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3Nhbml0aXplcjogRG9tU2FuaXRpemVyXHJcbiAgKSB7XHJcbiAgICB0aGlzLmFtZW5pdGllcyA9IFtdO1xyXG4gICAgdGhpcy5mZWF0dXJlcyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1sncHJvcGVydHknXSAmJiBjaGFuZ2VzWydwcm9wZXJ0eSddLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICB0aGlzLnByb3BlcnR5ID0gY2hhbmdlc1sncHJvcGVydHknXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIHRoaXMuc2VhcmNoUHJvcGVydHlUeXBlKCk7XHJcbiAgICAgIHRoaXMuY3JlYXRlQW1lbml0aWVzKCk7XHJcbiAgICAgIHRoaXMuY3JlYXRlRmVhdHVyZXMoKTtcclxuICAgICAgdGhpcy52YWxpZGF0ZUFncmVlbWVudCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VG91clVybCgpOiBTYWZlUmVzb3VyY2VVcmwge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodGhpcy5wcm9wZXJ0eS5leHRlcm5hbExpbmspO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZUFncmVlbWVudCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnByb3BlcnR5LnByb3BlcnR5SW5mby5saXN0aW5nQWdyZWVtZW50U3RhcnREYXRlICYmIHRoaXMucHJvcGVydHkucHJvcGVydHlJbmZvLmxpc3RpbmdBZ3JlZW1lbnRUaW1lKSB7XHJcbiAgICAgICBjb25zdCBzdGFydERhdGUgPSBuZXcgTURhdGUodGhpcy5wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubGlzdGluZ0FncmVlbWVudFN0YXJ0RGF0ZSkudG9EYXRlKCk7XHJcbiAgICAgICBzdGFydERhdGUuc2V0RGF0ZShzdGFydERhdGUuZ2V0RGF0ZSgpICsgdGhpcy5wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubGlzdGluZ0FncmVlbWVudFRpbWUpO1xyXG4gICAgICAgdGhpcy5hZ3JlZW1lbnRFbmREYXRlID0gTURhdGUuZ2V0VGltZXN0YW1wKHN0YXJ0RGF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlYXJjaFByb3BlcnR5VHlwZSgpOiB2b2lkIHtcclxuICAgIENvbnN0YW50c0NvbXBvbmVudHMuUHJvcGVydHlUeXBlTGlzdC5mb3JFYWNoKCh0eXBlKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnByb3BlcnR5LnR5cGUgPT09IHR5cGUudmFsdWUpIHtcclxuICAgICAgICB0aGlzLnByb3BlcnR5VHlwZSA9IHR5cGU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVBbWVuaXRpZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFtZW5pdGllcyA9IFtdO1xyXG4gICAgbGV0IGFtZW5pdGllczogQW1lbml0eUl0ZW1bXSA9IFtdO1xyXG4gICAgQ29uc3RhbnRzQ29tcG9uZW50cy5Qcm9wZXJ0eVR5cGVMaXN0LmZvckVhY2goKHR5cGUpID0+IHtcclxuICAgICAgaWYgKHR5cGUudmFsdWUgPT09IHRoaXMucHJvcGVydHkudHlwZSkge1xyXG4gICAgICAgIGFtZW5pdGllcyA9IHR5cGUuYW1lbml0aWVzO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChhbWVuaXRpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBhbWVuaXRpZXMuZm9yRWFjaCgoYW1lbml0eSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BlcnR5LmFtZW5pdGllc1thbWVuaXR5LnZhbHVlXSkge1xyXG4gICAgICAgICAgdGhpcy5hbWVuaXRpZXMucHVzaChhbWVuaXR5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVGZWF0dXJlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZmVhdHVyZXMgPSBbXTtcclxuICAgIGxldCBmZWF0dXJlczogQW1lbml0eUl0ZW1bXSA9IFtdO1xyXG4gICAgQ29uc3RhbnRzQ29tcG9uZW50cy5Qcm9wZXJ0eVR5cGVMaXN0LmZvckVhY2goKHR5cGUpID0+IHtcclxuICAgICAgaWYgKHR5cGUudmFsdWUgPT09IHRoaXMucHJvcGVydHkudHlwZSkge1xyXG4gICAgICAgIGZlYXR1cmVzID0gdHlwZS5mZWF0dXJlcztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoZmVhdHVyZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmZWF0dXJlcy5mb3JFYWNoKChhbWVuaXR5KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcGVydHkuYW1lbml0aWVzW2FtZW5pdHkudmFsdWVdKSB7XHJcbiAgICAgICAgICB0aGlzLmZlYXR1cmVzLnB1c2goYW1lbml0eSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWFwbGFuZGVyL2NvbXBvbmVudHMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9wcm9wZXJ0eS9jb21wb25lbnRzL2RldGFpbHMvZGV0YWlscy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFtQyxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFN0MsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFcEUsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxZQUFZLEVBQWtCLE1BQU0sMkJBQTJCLENBQUM7QUFReEUsTUFBTSxPQUFPLGdCQUFnQjs7OztJQVczQixZQUNVLFVBQXdCO1FBQXhCLGVBQVUsR0FBVixVQUFVLENBQWM7UUFFaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQzs7OztJQUVELFFBQVE7SUFDUixDQUFDOzs7OztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxFQUFFO1lBQzNELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUNqRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQzs7OztJQUVE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S0FBSzt1QkFDTCxLQUFLO3VCQUNMLEtBQUs7MEJBQ0wsS0FBSzs7OztJQUpOLGtDQUF5Qjs7SUFDekIsNkNBQWdFOztJQUNoRSxvQ0FBK0I7O0lBQy9CLG9DQUEwQjs7SUFDMUIsdUNBQThCOztJQUM5QixxQ0FBZ0M7O0lBQ2hDLG9DQUErQjs7SUFDL0Isd0NBQXNDOztJQUN0Qyw0Q0FBZ0M7Ozs7O0lBRzlCLHNDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge05ld1Byb3BlcnR5fSBmcm9tICdAbWFwbGFuZGVyL3R5cGVzJztcclxuaW1wb3J0IHtBbWVuaXR5SXRlbX0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvbW9kZWxzL2FtZW5pdHktaXRlbSc7XHJcbmltcG9ydCB7Q29uc3RhbnRzQ29tcG9uZW50c30gZnJvbSAnLi4vLi4vLi4vLi4vY29uc3RhbnRzQ29tcG9uZW50cyc7XHJcbmltcG9ydCB7UHJvcGVydHlUeXBlSXRlbX0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvbW9kZWxzL3Byb3BlcnR5LXR5cGUtaXRlbSc7XHJcbmltcG9ydCB7TURhdGV9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2NsYXNzZXMnO1xyXG5pbXBvcnQge0RvbVNhbml0aXplciwgU2FmZVJlc291cmNlVXJsfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1wcm9wZXJ0eS1kZXRhaWxzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGV0YWlscy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIHJlY29yZDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjdXJyZW5jeUNvbnZlcnRlZDogeyBjdXJyZW5jeTogc3RyaW5nLCBwcmljZTogbnVtYmVyIH07XHJcbiAgQElucHV0KCkgcHJvcGVydHk6IE5ld1Byb3BlcnR5O1xyXG4gIEBJbnB1dCgpIG1sc0xhYmVsOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdmlzaWJsZVRvdXI6IGJvb2xlYW47XHJcbiAgcHVibGljIGFtZW5pdGllczogQW1lbml0eUl0ZW1bXTtcclxuICBwdWJsaWMgZmVhdHVyZXM6IEFtZW5pdHlJdGVtW107XHJcbiAgcHVibGljIHByb3BlcnR5VHlwZTogUHJvcGVydHlUeXBlSXRlbTtcclxuICBwdWJsaWMgYWdyZWVtZW50RW5kRGF0ZTogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3Nhbml0aXplcjogRG9tU2FuaXRpemVyXHJcbiAgKSB7XHJcbiAgICB0aGlzLmFtZW5pdGllcyA9IFtdO1xyXG4gICAgdGhpcy5mZWF0dXJlcyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1sncHJvcGVydHknXSAmJiBjaGFuZ2VzWydwcm9wZXJ0eSddLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICB0aGlzLnByb3BlcnR5ID0gY2hhbmdlc1sncHJvcGVydHknXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIHRoaXMuc2VhcmNoUHJvcGVydHlUeXBlKCk7XHJcbiAgICAgIHRoaXMuY3JlYXRlQW1lbml0aWVzKCk7XHJcbiAgICAgIHRoaXMuY3JlYXRlRmVhdHVyZXMoKTtcclxuICAgICAgdGhpcy52YWxpZGF0ZUFncmVlbWVudCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VG91clVybCgpOiBTYWZlUmVzb3VyY2VVcmwge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodGhpcy5wcm9wZXJ0eS5leHRlcm5hbExpbmspO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZUFncmVlbWVudCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnByb3BlcnR5LnByb3BlcnR5SW5mby5saXN0aW5nQWdyZWVtZW50U3RhcnREYXRlICYmIHRoaXMucHJvcGVydHkucHJvcGVydHlJbmZvLmxpc3RpbmdBZ3JlZW1lbnRUaW1lKSB7XHJcbiAgICAgICBjb25zdCBzdGFydERhdGUgPSBuZXcgTURhdGUodGhpcy5wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubGlzdGluZ0FncmVlbWVudFN0YXJ0RGF0ZSkudG9EYXRlKCk7XHJcbiAgICAgICBzdGFydERhdGUuc2V0RGF0ZShzdGFydERhdGUuZ2V0RGF0ZSgpICsgdGhpcy5wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubGlzdGluZ0FncmVlbWVudFRpbWUpO1xyXG4gICAgICAgdGhpcy5hZ3JlZW1lbnRFbmREYXRlID0gTURhdGUuZ2V0VGltZXN0YW1wKHN0YXJ0RGF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlYXJjaFByb3BlcnR5VHlwZSgpOiB2b2lkIHtcclxuICAgIENvbnN0YW50c0NvbXBvbmVudHMuUHJvcGVydHlUeXBlTGlzdC5mb3JFYWNoKCh0eXBlKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnByb3BlcnR5LnR5cGUgPT09IHR5cGUudmFsdWUpIHtcclxuICAgICAgICB0aGlzLnByb3BlcnR5VHlwZSA9IHR5cGU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVBbWVuaXRpZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFtZW5pdGllcyA9IFtdO1xyXG4gICAgbGV0IGFtZW5pdGllczogQW1lbml0eUl0ZW1bXSA9IFtdO1xyXG4gICAgQ29uc3RhbnRzQ29tcG9uZW50cy5Qcm9wZXJ0eVR5cGVMaXN0LmZvckVhY2goKHR5cGUpID0+IHtcclxuICAgICAgaWYgKHR5cGUudmFsdWUgPT09IHRoaXMucHJvcGVydHkudHlwZSkge1xyXG4gICAgICAgIGFtZW5pdGllcyA9IHR5cGUuYW1lbml0aWVzO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChhbWVuaXRpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBhbWVuaXRpZXMuZm9yRWFjaCgoYW1lbml0eSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BlcnR5LmFtZW5pdGllc1thbWVuaXR5LnZhbHVlXSkge1xyXG4gICAgICAgICAgdGhpcy5hbWVuaXRpZXMucHVzaChhbWVuaXR5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVGZWF0dXJlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZmVhdHVyZXMgPSBbXTtcclxuICAgIGxldCBmZWF0dXJlczogQW1lbml0eUl0ZW1bXSA9IFtdO1xyXG4gICAgQ29uc3RhbnRzQ29tcG9uZW50cy5Qcm9wZXJ0eVR5cGVMaXN0LmZvckVhY2goKHR5cGUpID0+IHtcclxuICAgICAgaWYgKHR5cGUudmFsdWUgPT09IHRoaXMucHJvcGVydHkudHlwZSkge1xyXG4gICAgICAgIGZlYXR1cmVzID0gdHlwZS5mZWF0dXJlcztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoZmVhdHVyZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmZWF0dXJlcy5mb3JFYWNoKChhbWVuaXR5KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcGVydHkuYW1lbml0aWVzW2FtZW5pdHkudmFsdWVdKSB7XHJcbiAgICAgICAgICB0aGlzLmZlYXR1cmVzLnB1c2goYW1lbml0eSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19