ctt-babylon 0.23.1 → 0.23.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.
- package/esm2022/lib/components/external/core/lis-c2-img-txt-cta-v4/lis-c2-img-txt-cta-v4.component.mjs +99 -10
- package/fesm2022/ctt-babylon.mjs +93 -4
- package/fesm2022/ctt-babylon.mjs.map +1 -1
- package/lib/components/external/core/lis-c2-img-txt-cta-v4/lis-c2-img-txt-cta-v4.component.d.ts +8 -1
- package/package.json +1 -1
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
2
|
import { Component, Input, ViewEncapsulation, inject } from '@angular/core';
|
|
3
3
|
import { FormsModule } from '@angular/forms';
|
|
4
|
-
import { buildFilterOptions, filteredItems, getItemBrand } from '../../../../utils/filter.utils';
|
|
5
4
|
import { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';
|
|
6
5
|
import { BabylonCurrencyPipe } from '../../../../pipes/babylon-currency.pipe';
|
|
7
|
-
import {
|
|
6
|
+
import { buildFilterOptions, filteredItems, getItemBrand, } from '../../../../utils/filter.utils';
|
|
7
|
+
import { ChangeDetectorRef, } from '@angular/core';
|
|
8
8
|
import { ActivatedRoute } from '@angular/router';
|
|
9
|
-
import { getFirstImageByTagFromImages } from '../../../../utils/mutimedia.utils';
|
|
10
|
-
import { normalizeGlobalItems } from '../../../../utils/normalize-items.utils';
|
|
11
9
|
import { Utils } from '../../../../utils';
|
|
12
|
-
import { BabylonDynamicHeadingComponent } from "../../../shared";
|
|
13
10
|
import { HeadingTagUtils } from '../../../../utils/heading-tag.utils';
|
|
11
|
+
import { getFirstImageByTagFromImages } from '../../../../utils/mutimedia.utils';
|
|
12
|
+
import { normalizeGlobalItems } from '../../../../utils/normalize-items.utils';
|
|
13
|
+
import { BabylonDynamicHeadingComponent } from '../../../shared';
|
|
14
14
|
import * as i0 from "@angular/core";
|
|
15
15
|
import * as i1 from "@angular/forms";
|
|
16
16
|
export class LisC2ImgTxtCtaV4Component {
|
|
@@ -50,7 +50,8 @@ export class LisC2ImgTxtCtaV4Component {
|
|
|
50
50
|
* y si no existe, en item.multimedia.imagenes[0].buttons[index].label
|
|
51
51
|
*/
|
|
52
52
|
getButton(item, index) {
|
|
53
|
-
return item?.multimedia?.imagenes?.[0]?.buttons?.[index] ??
|
|
53
|
+
return (item?.multimedia?.imagenes?.[0]?.buttons?.[index] ??
|
|
54
|
+
item?.buttons?.[index]);
|
|
54
55
|
}
|
|
55
56
|
getButtonLabel(item, index) {
|
|
56
57
|
const button = this.getButton(item, index);
|
|
@@ -107,7 +108,9 @@ export class LisC2ImgTxtCtaV4Component {
|
|
|
107
108
|
brands.add(brand);
|
|
108
109
|
if (it.events)
|
|
109
110
|
it.events.forEach((exp) => {
|
|
110
|
-
if (exp &&
|
|
111
|
+
if (exp &&
|
|
112
|
+
typeof exp.name === 'string' &&
|
|
113
|
+
exp.name.trim() !== '') {
|
|
111
114
|
experienceTypes.add(exp.name);
|
|
112
115
|
}
|
|
113
116
|
});
|
|
@@ -140,7 +143,8 @@ export class LisC2ImgTxtCtaV4Component {
|
|
|
140
143
|
const decodedDestination = decodeURIComponent(destinationsParam);
|
|
141
144
|
this.pendingDestination = decodedDestination;
|
|
142
145
|
// Si ya tenemos destinationOptions, buscar y seleccionar
|
|
143
|
-
if (this.destinationOptions &&
|
|
146
|
+
if (this.destinationOptions &&
|
|
147
|
+
this.destinationOptions.length > 0) {
|
|
144
148
|
this.findAndSelectDestination(decodedDestination);
|
|
145
149
|
}
|
|
146
150
|
else {
|
|
@@ -177,6 +181,7 @@ export class LisC2ImgTxtCtaV4Component {
|
|
|
177
181
|
items = items.filter((item) => item.events?.some((exp) => exp?.name === this.selectedExperienceType));
|
|
178
182
|
}
|
|
179
183
|
this._filteredItemsRaw = items;
|
|
184
|
+
this.updateFilterOptionsDynamic();
|
|
180
185
|
this.cdr.markForCheck();
|
|
181
186
|
}
|
|
182
187
|
get hasActiveFilters() {
|
|
@@ -190,18 +195,43 @@ export class LisC2ImgTxtCtaV4Component {
|
|
|
190
195
|
onHotelTypeChange(value) {
|
|
191
196
|
this.selectedHotelType = value ?? '';
|
|
192
197
|
this.updateFilteredItems();
|
|
198
|
+
this.validateCurrentSelections();
|
|
193
199
|
}
|
|
194
200
|
onDestinationChange(value) {
|
|
195
201
|
this.selectedDestination = value ?? '';
|
|
196
202
|
this.updateFilteredItems();
|
|
203
|
+
this.validateCurrentSelections();
|
|
197
204
|
}
|
|
198
205
|
onBrandChange(value) {
|
|
199
206
|
this.selectedBrand = value ?? '';
|
|
200
207
|
this.updateFilteredItems();
|
|
208
|
+
this.validateCurrentSelections();
|
|
201
209
|
}
|
|
202
210
|
onExperienceTypeChange(value) {
|
|
203
211
|
this.selectedExperienceType = value ?? '';
|
|
204
212
|
this.updateFilteredItems();
|
|
213
|
+
this.validateCurrentSelections();
|
|
214
|
+
}
|
|
215
|
+
validateCurrentSelections() {
|
|
216
|
+
let changed = false;
|
|
217
|
+
if (this.selectedDestination &&
|
|
218
|
+
!this.destinationOptions.includes(this.selectedDestination)) {
|
|
219
|
+
this.selectedDestination = '';
|
|
220
|
+
changed = true;
|
|
221
|
+
}
|
|
222
|
+
if (this.selectedBrand &&
|
|
223
|
+
!this.brandOptions.includes(this.selectedBrand)) {
|
|
224
|
+
this.selectedBrand = '';
|
|
225
|
+
changed = true;
|
|
226
|
+
}
|
|
227
|
+
if (this.selectedExperienceType &&
|
|
228
|
+
!this.experienceTypeOptions.includes(this.selectedExperienceType)) {
|
|
229
|
+
this.selectedExperienceType = '';
|
|
230
|
+
changed = true;
|
|
231
|
+
}
|
|
232
|
+
if (changed) {
|
|
233
|
+
this.updateFilteredItems();
|
|
234
|
+
}
|
|
205
235
|
}
|
|
206
236
|
clearFilters() {
|
|
207
237
|
this.selectedHotelType = '';
|
|
@@ -219,6 +249,65 @@ export class LisC2ImgTxtCtaV4Component {
|
|
|
219
249
|
trackOffer(item, index) {
|
|
220
250
|
return item?.id ?? item?.texts?.name ?? item?.texts?.title ?? index;
|
|
221
251
|
}
|
|
252
|
+
updateFilterOptionsDynamic() {
|
|
253
|
+
// 1. DESTINOS: Calculamos usando tu función original sobre los ítems filtrados por el resto de criterios
|
|
254
|
+
const itemsForDestinations = this.filterItemsForScope({
|
|
255
|
+
ignoreDestination: true,
|
|
256
|
+
});
|
|
257
|
+
const destOpts = buildFilterOptions(itemsForDestinations, this.additional1LikeMarca ?? false);
|
|
258
|
+
this.destinationOptions = destOpts.destinationOptions;
|
|
259
|
+
// 2. MARCAS / ALOJAMIENTO: Calculamos usando tu utilidad oficial getItemBrand
|
|
260
|
+
const itemsForBrands = this.filterItemsForScope({
|
|
261
|
+
ignoreBrand: true,
|
|
262
|
+
});
|
|
263
|
+
const brandSet = new Set();
|
|
264
|
+
itemsForBrands.forEach((it) => {
|
|
265
|
+
const brand = getItemBrand(it, this.additional1LikeMarca ?? false);
|
|
266
|
+
if (brand)
|
|
267
|
+
brandSet.add(brand);
|
|
268
|
+
});
|
|
269
|
+
this.brandOptions = Array.from(brandSet);
|
|
270
|
+
// 3. EXPERIENCIAS: Calculamos leyendo los eventos reales de los hoteles compatibles[cite: 3]
|
|
271
|
+
const itemsForExperiences = this.filterItemsForScope({
|
|
272
|
+
ignoreExperience: true,
|
|
273
|
+
});
|
|
274
|
+
const expSet = new Set();
|
|
275
|
+
itemsForExperiences.forEach((it) => {
|
|
276
|
+
if (it.events) {
|
|
277
|
+
it.events.forEach((exp) => {
|
|
278
|
+
if (exp &&
|
|
279
|
+
typeof exp.name === 'string' &&
|
|
280
|
+
exp.name.trim() !== '') {
|
|
281
|
+
expSet.add(exp.name.trim());
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
this.experienceTypeOptions = Array.from(expSet);
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Filtra los ítems respetando TODOS los selectores activos, EXCEPTO el que estamos
|
|
290
|
+
* calculando en ese momento para evitar que se borre a sí mismo.
|
|
291
|
+
*/
|
|
292
|
+
filterItemsForScope(ignore) {
|
|
293
|
+
// Ejecutamos tu filtro original de utils[cite: 3]
|
|
294
|
+
let items = filteredItems({
|
|
295
|
+
items: this.items ?? [],
|
|
296
|
+
selectedHotelType: ignore.ignoreHotelType
|
|
297
|
+
? ''
|
|
298
|
+
: this.selectedHotelType,
|
|
299
|
+
selectedDestination: ignore.ignoreDestination
|
|
300
|
+
? ''
|
|
301
|
+
: this.selectedDestination,
|
|
302
|
+
selectedBrand: ignore.ignoreBrand ? '' : this.selectedBrand,
|
|
303
|
+
additional1LikeMarca: this.additional1LikeMarca ?? false,
|
|
304
|
+
});
|
|
305
|
+
// Aplicamos el filtro de experiencias SÓLO si no lo estamos ignorando explícitamente[cite: 3]
|
|
306
|
+
if (!ignore.ignoreExperience && this.selectedExperienceType) {
|
|
307
|
+
items = items.filter((item) => item.events?.some((exp) => exp?.name === this.selectedExperienceType));
|
|
308
|
+
}
|
|
309
|
+
return items;
|
|
310
|
+
}
|
|
222
311
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LisC2ImgTxtCtaV4Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
223
312
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: LisC2ImgTxtCtaV4Component, isStandalone: true, selector: "lis-c2-img-txt-cta-v4", inputs: { texts: "texts", items: "items", links: "links", additional1LikeMarca: "additional1LikeMarca", showCleanFilters: "showCleanFilters", showFilters: "showFilters", textColors: "textColors" }, usesOnChanges: true, ngImport: i0, template: "<section class=\"mdl-LisC1ImgTxt\">\n <div class=\"mdl-container\">\n <div class=\"m-content\">\n <div class=\"m-top\">\n <div class=\"m-left\">\n @if (headingTagUtils.hasHeadingContent(texts, 'title', texts?.title)) {\n <lib-babylon-dynamic-heading\n [tag]=\"headingTagUtils.getHeadingTag(texts, 'title', 'h1')\"\n [color]=\"textColors?.title\"\n cssClass=\"m-titulo\"\n [content]=\"headingTagUtils.getHeadingContent(texts, 'title', texts?.title)\"\n ></lib-babylon-dynamic-heading>\n }\n\n @if (texts?.subtitle) {\n <div\n class=\"m-subtitulo\"\n [innerHTML]=\"texts?.subtitle\"\n ></div>\n }\n </div>\n\n @if (showFilters) {\n <div class=\"m-right\">\n <div class=\"selectors\">\n <fieldset class=\"select-field\">\n @if (texts?.marca) {\n <legend>{{ texts?.marca }}</legend>\n }\n <select\n [(ngModel)]=\"selectedBrand\"\n (ngModelChange)=\"onBrandChange($event)\"\n >\n <option value=\"\">{{ texts?.marca }}</option>\n @for (\n opt of brandOptions;\n track trackOption($index)\n ) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </fieldset>\n\n <fieldset class=\"select-field\">\n @if (texts?.destinations) {\n <legend>{{ texts?.destinations }}</legend>\n }\n <select\n [(ngModel)]=\"selectedDestination\"\n (ngModelChange)=\"\n onDestinationChange($event)\n \"\n >\n <option value=\"\">\n {{ texts?.destinations }}\n </option>\n @for (\n opt of destinationOptions;\n track trackOption($index)\n ) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </fieldset>\n\n @if (experienceTypeOptions?.length) {\n <fieldset class=\"select-field\">\n <legend>{{ texts?.events }}</legend>\n <select\n [(ngModel)]=\"selectedExperienceType\"\n (ngModelChange)=\"\n onExperienceTypeChange($event)\n \"\n >\n <option value=\"\">\n {{ texts?.events }}\n </option>\n @for (\n opt of experienceTypeOptions;\n track trackOption($index)\n ) {\n <option [value]=\"opt\">\n {{ opt }}\n </option>\n }\n </select>\n </fieldset>\n }\n </div>\n </div>\n }\n </div>\n\n <div class=\"m-item m-open\">\n <div class=\"m-listado\">\n @for (item of filteredItems; track item) {\n <div class=\"m-item-list\">\n <a\n [href]=\"getButtonUrl(item, 1)\"\n [linkType]=\"getButtonLinkType(item, 1)\"\n >\n <div class=\"m-imagen\">\n @if (\n getFirstImageByTag(\n tagName,\n item?.multimedia?.imagenes ?? []\n ) ?? item?.multimedia?.imagenes?.[0];\n as img\n ) {\n <img\n [src]=\"\n img?.img?.src ||\n 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n \"\n [attr.alt]=\"\n img?.img?.alt ??\n (item?.texts?.title ||\n item?.texts?.name ||\n '')\n \"\n />\n }\n </div>\n\n @if (item?.texts?.title || item?.texts?.name) {\n <h2\n class=\"m-titulo\"\n [innerHTML]=\"\n item?.texts?.title ||\n item?.texts?.name\n \"\n ></h2>\n }\n\n @if (item?.texts?.additional1) {\n <div\n class=\"m-subtitulo\"\n [innerHTML]=\"item?.texts?.additional1\"\n ></div>\n }\n <div class=\"category\">\n @if (getHotelStars(item)) {\n @if (isApartment(item?.hoteltype)) {\n <div\n [attr.aria-label]=\"\n getHotelStars(item) +\n ' estrellas'\n \"\n >\n <div class=\"m-keys\">\n @for (\n star of getHotelStarIndexes(\n item\n );\n track star\n ) {\n <svg\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.146296 4.26479L1.14015 2.01692C1.31289 1.62559 1.62559 1.31289 2.01692 1.14015L4.26479 0.146297C4.58174 0.00641826 4.93356 -0.0343944 5.27412 0.0292127C5.61467 0.0928198 5.92805 0.257876 6.17314 0.50273L7.9475 2.27839C8.1606 2.49155 8.31388 2.75701 8.39197 3.04813C8.47006 3.33925 8.4702 3.64578 8.39239 3.93698L7.93579 5.64109L12.866 10.5713C12.9085 10.6136 12.9422 10.6639 12.9652 10.7193C12.9882 10.7746 13 10.834 13 10.8939V12.5447C12.9993 12.6652 12.9511 12.7807 12.8659 12.8659C12.7807 12.9511 12.6652 12.9993 12.5447 13H10.8939C10.7926 12.9998 10.6942 12.9659 10.6142 12.9038C10.5341 12.8416 10.477 12.7547 10.4516 12.6566L10.2045 11.6796L9.3303 11.5131C9.24322 11.4968 9.16282 11.4553 9.09903 11.3938C9.03523 11.3323 8.99082 11.2535 8.97127 11.1671L8.73321 10.1173L7.89026 10.0367C7.78479 10.0274 7.68608 9.9808 7.61188 9.90528L5.64109 7.93579L3.93697 8.39239C3.6458 8.47047 3.33919 8.47046 3.04802 8.39236C2.75685 8.31426 2.4914 8.16082 2.27839 7.9475L0.502729 6.17314C0.257875 5.92805 0.0928202 5.61467 0.029213 5.27412C-0.0343943 4.93357 0.00641727 4.58174 0.146296 4.26479ZM3.6703 5.08953C3.81061 5.22968 3.98932 5.32508 4.18385 5.36369C4.37837 5.40229 4.57997 5.38236 4.76317 5.30641C4.94636 5.23047 5.10294 5.10191 5.21309 4.937C5.32324 4.7721 5.38203 4.57823 5.38203 4.37991C5.38203 4.1816 5.32324 3.98773 5.21309 3.82283C5.10294 3.65792 4.94636 3.52936 4.76317 3.45342C4.57997 3.37747 4.37837 3.35754 4.18385 3.39614C3.98932 3.43475 3.81061 3.53015 3.6703 3.6703C3.57689 3.76336 3.50277 3.87395 3.45219 3.99572C3.40162 4.1175 3.37558 4.24806 3.37558 4.37991C3.37558 4.51177 3.40162 4.64233 3.45219 4.76411C3.50277 4.88588 3.57689 4.99647 3.6703 5.08953Z\"\n fill=\"#393637\"\n fill-opacity=\"1\"\n />\n </svg>\n }\n </div>\n </div>\n } @else {\n <div\n class=\"m-stars\"\n [attr.aria-label]=\"\n getHotelStars(item) +\n ' estrellas'\n \"\n >\n @for (\n star of getHotelStarIndexes(\n item\n );\n track star\n ) {\n <svg\n width=\"12\"\n height=\"11\"\n viewBox=\"0 0 12 11\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6 0L7.416 4.2H12L8.292 6.8L9.708 11L6 8.4L2.292 11L3.708 6.8L0 4.2H4.584L6 0Z\"\n fill=\"#393637\"\n />\n </svg>\n }\n </div>\n }\n }\n <div class=\"sup-category\">\n {{ showIfSup(item?.hotelcategory) }}\n </div>\n </div>\n </a>\n\n <div class=\"m-buttons\">\n @if (getButtonLabel(item, 0); as button1Label) {\n <a\n class=\"m-button1\"\n [href]=\"getButtonUrl(item, 0)\"\n [linkType]=\"getButtonLinkType(item, 0)\"\n >\n {{ button1Label }}\n </a>\n }\n\n @if (getButtonLabel(item, 1); as button2Label) {\n <a\n class=\"m-button2\"\n [href]=\"getButtonUrl(item, 1)\"\n [linkType]=\"getButtonLinkType(item, 1)\"\n >\n {{ button2Label }}\n </a>\n }\n </div>\n </div>\n }\n </div>\n </div>\n\n @if (!filteredItems?.length && texts?.notFound) {\n <div class=\"m-foot\">\n <div class=\"m-texto\" [innerHTML]=\"texts?.notFound\"></div>\n </div>\n }\n </div>\n </div>\n</section>\n", styles: ["@charset \"UTF-8\";html{font-size:62.5%}html body{font:14px \"\"}@media (min-width: 1921px) and (max-height: 600px){html{font-size:55.5%}}body,section{font-family:new-atten,sans-serif;font-size:1.6rem;font-weight:400;line-height:2.8rem}section .mdl-container{width:100%;max-width:178rem;margin:0 auto}.readmoreinit{line-height:1.6!important}@media screen and (max-width: 1200px){.readmoreinit{line-height:1.6!important}}@media screen and (max-width: 600px){.readmoreinit{line-height:1.6!important}}.read-more{display:flex;flex-direction:column;font-family:CoreSansG,sans-serif;font-size:1.5rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.4;letter-spacing:normal;color:#e6411e;text-decoration:underline;cursor:pointer;margin-top:2rem}.read-more .less{display:none}.w100{font-weight:100}.w300{font-weight:300}.w400{font-weight:400}.w500{font-weight:medium}.w600{font-weight:600}.w700{font-weight:700}.w900{font-weight:900}.italic{font-style:italic}.row{display:flex;flex-direction:row}.col{display:flex;flex-direction:column}body{cursor:default;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{color:inherit;border:0;margin:0;padding:0}a{text-size-adjust:none;-webkit-text-size-adjust:none;text-decoration:none;cursor:pointer}ul{list-style-position:outside}li{padding-left:3rem;list-style:none;position:relative}li:before{content:\"\\25cf\";position:absolute;top:0;left:0}button,mark{background:none}button,label{cursor:pointer}:focus{outline:none!important}::-moz-focus-inner{border:0}summary::-webkit-details-marker{display:none}button,input[type=submit],input[type=text]{-webkit-appearance:none}h1,h2,h3,h4,h5,h6{text-transform:none}p{width:100%}img{width:auto;height:auto;object-fit:contain}@-webkit-keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}@keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}.fancybox__backdrop{background-color:#00000087!important}.fancybox__content{padding:0!important}.fancybox__content>.carousel__button.is-close{color:#b6b8bb!important}.fancybox__counter{display:none!important}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-background-clip:text;-webkit-text-fill-color:#ffffff;transition:background-color 5000s ease-in-out 0s;box-shadow:inset 0 0 20px 20px #23232329}.mdl-LisC1ImgTxt{overflow:hidden;padding-left:0!important;padding-right:0!important}.mdl-LisC1ImgTxt .mdl-container{max-width:150rem;padding:0 5rem;box-sizing:border-box}.mdl-LisC1ImgTxt .mdl-container .m-head{display:flex;justify-content:space-between;gap:2rem}.mdl-LisC1ImgTxt .mdl-container .m-head .m-left{width:100%;max-width:52.7rem;font-family:CoreSansG,sans-serif;font-size:4rem;font-style:normal;font-weight:300!important;line-height:5rem}@media (max-width: 850px){.mdl-LisC1ImgTxt .mdl-container .m-head .m-left{font-size:3rem;line-height:4rem}}.mdl-LisC1ImgTxt .mdl-container .m-head .m-left{color:#393637}.mdl-LisC1ImgTxt .mdl-container .m-head .m-right{width:100%;max-width:39.1rem;font-family:new-atten,sans-serif;font-size:1.6rem;font-weight:400;line-height:2.8rem;color:#393637}.mdl-LisC1ImgTxt .mdl-container .m-content{margin-top:5rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top{display:flex;justify-content:space-between}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-left ::ng-deep .m-titulo{font-family:CoreSansG,sans-serif;font-size:4rem;font-style:normal;font-weight:300!important;line-height:5rem}@media (max-width: 850px){.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-left ::ng-deep .m-titulo{font-size:3rem;line-height:4rem}}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-left ::ng-deep .m-titulo{color:#393637}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-left .m-subtitulo{font-family:new-atten,sans-serif;font-size:1.4rem;font-weight:500;letter-spacing:.2rem;line-height:none;text-transform:uppercase;color:#393637}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-right{font-family:new-atten,sans-serif}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-right .selectors{display:flex;gap:40px}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-right .select-field{font-family:new-atten,sans-serif;width:21.4rem;border:2px solid #cfcfcf;border-radius:.4rem;padding:4px 16px 14px}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-right .select-field legend{font-family:new-atten,sans-serif;padding:0 8px;font-size:13px;color:#393939;margin-top:-1.6rem;background-color:#fdfbf9;width:fit-content}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-right .select-field select{font-family:new-atten,sans-serif;width:100%;border:none;outline:none;font-size:14px;color:#666;background:transparent;appearance:none;cursor:pointer}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-right .select-field{font-family:new-atten,sans-serif;position:relative}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-right .select-field:after{font-family:new-atten,sans-serif;content:\"\";position:absolute;right:18px;top:57%;width:10px;height:10px;border-right:3px solid #777;border-bottom:3px solid #777;transform:translateY(-120%) rotate(45deg);pointer-events:none}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item{margin-top:3rem!important;margin-bottom:-1px;display:flex;flex-direction:column;align-items:center;position:relative}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item.m-open{margin:1px}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item.m-open:before{content:\"\";width:200vw;margin-left:-100vw;height:100%;position:absolute;z-index:-1}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item.m-open svg{transition:.5s;transform:rotate(135deg)}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-buttonD{display:flex;justify-content:space-between;align-items:center;padding:5rem 5rem 5rem 0;width:100%;position:relative;transition:.5s}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-buttonD:hover{transition:.5s}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-buttonD:hover:before{content:\"\";width:200vw;margin-left:-100vw;height:100%;position:absolute;z-index:-1}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-buttonD svg{transition:.5s}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-buttonD .m-titulo{font-family:CoreSansG,sans-serif;font-size:8rem;font-style:normal;font-weight:700;line-height:5rem}@media (max-width: 850px){.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-buttonD .m-titulo{font-size:6rem;line-height:5rem}}@media (max-width: 600px){.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-buttonD .m-titulo{font-size:3rem;line-height:3rem}}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-buttonD .m-titulo{text-align:left}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado{display:flex;gap:6rem;width:100%;max-width:125rem;flex-wrap:wrap;transition:height .35s ease,opacity .25s ease;will-change:height}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .category{display:flex;flex-direction:row;gap:1rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .category .sup-category{margin-top:.5rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list{width:calc(50% - 3rem);display:flex;flex-direction:column;align-items:center;text-align:center}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list a{display:flex;flex-direction:column;align-items:center}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-imagen{aspect-ratio:625/417;width:100%}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-imagen img{width:100%;height:100%;object-fit:cover;aspect-ratio:625/417}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-titulo{font-family:CoreSansG,sans-serif;font-size:4rem;font-style:normal;font-weight:300!important;line-height:5rem}@media (max-width: 850px){.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-titulo{font-size:3rem;line-height:4rem}}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-titulo{color:#393637;margin-top:1rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-subtitulo{font-family:new-atten,sans-serif;font-size:1.4rem;font-weight:400;letter-spacing:12%;line-height:100%;text-transform:uppercase;color:#393637;margin-top:1rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-stars{display:flex;gap:1.7rem;margin-top:.9rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-stars svg{transform:rotate(143deg)}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-keys{display:flex;gap:1.7rem;margin-top:.9rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-keys svg{transform:rotate(90deg)}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons{display:flex;gap:2.8rem;margin-top:2rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons .m-button1{font-family:new-atten,sans-serif;font-size:1.4rem;font-weight:500;letter-spacing:.2rem;line-height:none;text-transform:uppercase;line-height:inherit!important;border-radius:8rem;border:1px solid #393637;padding:2rem 5rem;transition:.5s;min-width:26rem;display:flex;align-items:center;justify-content:center}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons .m-button1 span{color:#393637}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons .m-button1:hover{background-color:#fcdd3f;transition:.5s;border:1px solid #FCDD3F}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons .m-button1{padding:2rem 8rem;min-width:auto;white-space:nowrap}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons .m-button2{font-family:new-atten,sans-serif;font-size:1.4rem;font-weight:500;letter-spacing:.2rem;line-height:none;text-transform:uppercase;border-radius:8rem;padding:2rem 5rem;transition:.5s;min-width:26rem;background-color:#fcdd3f;display:flex;align-items:center;justify-content:center}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons .m-button2 span{color:#393637}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons .m-button2:hover{background-color:#f9bf10;transition:.5s}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons .m-button2{padding:2rem 8rem;min-width:auto;white-space:nowrap}.mdl-LisC1ImgTxt .mdl-container .m-foot{margin-top:5rem;display:flex;justify-content:space-between}.mdl-LisC1ImgTxt .mdl-container .m-foot .m-texto{font-family:Breathing Personal,sans-serif;font-size:6rem;font-weight:400;line-height:100%}@media (max-width: 600px){.mdl-LisC1ImgTxt .mdl-container .m-foot .m-texto{font-size:4rem}}.mdl-LisC1ImgTxt .mdl-container .m-foot .m-texto{color:#fcdd3f}.mdl-LisC1ImgTxt .mdl-container .m-foot .m-buttonfoot{font-family:new-atten,sans-serif;font-size:1.4rem;font-weight:500;letter-spacing:.2rem;line-height:none;text-transform:uppercase;line-height:inherit!important;border-radius:8rem;border:1px solid #393637;padding:2rem 5rem;transition:.5s;min-width:26rem;display:flex;align-items:center;justify-content:center}.mdl-LisC1ImgTxt .mdl-container .m-foot .m-buttonfoot span{color:#393637}.mdl-LisC1ImgTxt .mdl-container .m-foot .m-buttonfoot:hover{background-color:#fcdd3f;transition:.5s;border:1px solid #FCDD3F}.mdl-LisC1ImgTxt .mdl-container .m-foot .m-buttonfoot{min-width:16rem;text-align:center}@media (max-width: 1441px){.mdl-LisC1ImgTxt .mdl-container{padding:0 2rem}}@media (max-width: 1080px){.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-titulo{height:9rem}}@media (max-width: 1200px){.mdl-LisC1ImgTxt .mdl-container .m-content .m-top{flex-direction:column;align-items:center;text-align:center;gap:2rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list{margin-bottom:2rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons{flex-direction:column;gap:1rem!important}}@media (max-width: 850px){.mdl-LisC1ImgTxt .mdl-container .m-head{flex-direction:column}.mdl-LisC1ImgTxt .mdl-container .m-head .m-left,.mdl-LisC1ImgTxt .mdl-container .m-head .m-right{max-width:60.1rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-right .selectors{flex-direction:column;gap:2rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list{margin-bottom:2rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons{flex-direction:column;gap:1rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-buttonD{padding:5rem 0}.mdl-LisC1ImgTxt .mdl-container .m-foot{align-items:center}}@media (max-width: 600px){.mdl-LisC1ImgTxt .mdl-container .m-foot{flex-direction:column;gap:3rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list{width:100%}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-titulo{height:auto}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: BabylonLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick", "clickPopup", "disablePointerNone"], outputs: ["anchorClicked"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: BabylonDynamicHeadingComponent, selector: "lib-babylon-dynamic-heading", inputs: ["useInnerHtml", "tag", "wrapper", "cssClass", "content", "color"] }] }); }
|
|
224
313
|
}
|
|
@@ -229,7 +318,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
229
318
|
BabylonLinkTypeDirective,
|
|
230
319
|
BabylonCurrencyPipe,
|
|
231
320
|
FormsModule,
|
|
232
|
-
BabylonDynamicHeadingComponent
|
|
321
|
+
BabylonDynamicHeadingComponent,
|
|
233
322
|
], encapsulation: ViewEncapsulation.Emulated, template: "<section class=\"mdl-LisC1ImgTxt\">\n <div class=\"mdl-container\">\n <div class=\"m-content\">\n <div class=\"m-top\">\n <div class=\"m-left\">\n @if (headingTagUtils.hasHeadingContent(texts, 'title', texts?.title)) {\n <lib-babylon-dynamic-heading\n [tag]=\"headingTagUtils.getHeadingTag(texts, 'title', 'h1')\"\n [color]=\"textColors?.title\"\n cssClass=\"m-titulo\"\n [content]=\"headingTagUtils.getHeadingContent(texts, 'title', texts?.title)\"\n ></lib-babylon-dynamic-heading>\n }\n\n @if (texts?.subtitle) {\n <div\n class=\"m-subtitulo\"\n [innerHTML]=\"texts?.subtitle\"\n ></div>\n }\n </div>\n\n @if (showFilters) {\n <div class=\"m-right\">\n <div class=\"selectors\">\n <fieldset class=\"select-field\">\n @if (texts?.marca) {\n <legend>{{ texts?.marca }}</legend>\n }\n <select\n [(ngModel)]=\"selectedBrand\"\n (ngModelChange)=\"onBrandChange($event)\"\n >\n <option value=\"\">{{ texts?.marca }}</option>\n @for (\n opt of brandOptions;\n track trackOption($index)\n ) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </fieldset>\n\n <fieldset class=\"select-field\">\n @if (texts?.destinations) {\n <legend>{{ texts?.destinations }}</legend>\n }\n <select\n [(ngModel)]=\"selectedDestination\"\n (ngModelChange)=\"\n onDestinationChange($event)\n \"\n >\n <option value=\"\">\n {{ texts?.destinations }}\n </option>\n @for (\n opt of destinationOptions;\n track trackOption($index)\n ) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </fieldset>\n\n @if (experienceTypeOptions?.length) {\n <fieldset class=\"select-field\">\n <legend>{{ texts?.events }}</legend>\n <select\n [(ngModel)]=\"selectedExperienceType\"\n (ngModelChange)=\"\n onExperienceTypeChange($event)\n \"\n >\n <option value=\"\">\n {{ texts?.events }}\n </option>\n @for (\n opt of experienceTypeOptions;\n track trackOption($index)\n ) {\n <option [value]=\"opt\">\n {{ opt }}\n </option>\n }\n </select>\n </fieldset>\n }\n </div>\n </div>\n }\n </div>\n\n <div class=\"m-item m-open\">\n <div class=\"m-listado\">\n @for (item of filteredItems; track item) {\n <div class=\"m-item-list\">\n <a\n [href]=\"getButtonUrl(item, 1)\"\n [linkType]=\"getButtonLinkType(item, 1)\"\n >\n <div class=\"m-imagen\">\n @if (\n getFirstImageByTag(\n tagName,\n item?.multimedia?.imagenes ?? []\n ) ?? item?.multimedia?.imagenes?.[0];\n as img\n ) {\n <img\n [src]=\"\n img?.img?.src ||\n 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n \"\n [attr.alt]=\"\n img?.img?.alt ??\n (item?.texts?.title ||\n item?.texts?.name ||\n '')\n \"\n />\n }\n </div>\n\n @if (item?.texts?.title || item?.texts?.name) {\n <h2\n class=\"m-titulo\"\n [innerHTML]=\"\n item?.texts?.title ||\n item?.texts?.name\n \"\n ></h2>\n }\n\n @if (item?.texts?.additional1) {\n <div\n class=\"m-subtitulo\"\n [innerHTML]=\"item?.texts?.additional1\"\n ></div>\n }\n <div class=\"category\">\n @if (getHotelStars(item)) {\n @if (isApartment(item?.hoteltype)) {\n <div\n [attr.aria-label]=\"\n getHotelStars(item) +\n ' estrellas'\n \"\n >\n <div class=\"m-keys\">\n @for (\n star of getHotelStarIndexes(\n item\n );\n track star\n ) {\n <svg\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.146296 4.26479L1.14015 2.01692C1.31289 1.62559 1.62559 1.31289 2.01692 1.14015L4.26479 0.146297C4.58174 0.00641826 4.93356 -0.0343944 5.27412 0.0292127C5.61467 0.0928198 5.92805 0.257876 6.17314 0.50273L7.9475 2.27839C8.1606 2.49155 8.31388 2.75701 8.39197 3.04813C8.47006 3.33925 8.4702 3.64578 8.39239 3.93698L7.93579 5.64109L12.866 10.5713C12.9085 10.6136 12.9422 10.6639 12.9652 10.7193C12.9882 10.7746 13 10.834 13 10.8939V12.5447C12.9993 12.6652 12.9511 12.7807 12.8659 12.8659C12.7807 12.9511 12.6652 12.9993 12.5447 13H10.8939C10.7926 12.9998 10.6942 12.9659 10.6142 12.9038C10.5341 12.8416 10.477 12.7547 10.4516 12.6566L10.2045 11.6796L9.3303 11.5131C9.24322 11.4968 9.16282 11.4553 9.09903 11.3938C9.03523 11.3323 8.99082 11.2535 8.97127 11.1671L8.73321 10.1173L7.89026 10.0367C7.78479 10.0274 7.68608 9.9808 7.61188 9.90528L5.64109 7.93579L3.93697 8.39239C3.6458 8.47047 3.33919 8.47046 3.04802 8.39236C2.75685 8.31426 2.4914 8.16082 2.27839 7.9475L0.502729 6.17314C0.257875 5.92805 0.0928202 5.61467 0.029213 5.27412C-0.0343943 4.93357 0.00641727 4.58174 0.146296 4.26479ZM3.6703 5.08953C3.81061 5.22968 3.98932 5.32508 4.18385 5.36369C4.37837 5.40229 4.57997 5.38236 4.76317 5.30641C4.94636 5.23047 5.10294 5.10191 5.21309 4.937C5.32324 4.7721 5.38203 4.57823 5.38203 4.37991C5.38203 4.1816 5.32324 3.98773 5.21309 3.82283C5.10294 3.65792 4.94636 3.52936 4.76317 3.45342C4.57997 3.37747 4.37837 3.35754 4.18385 3.39614C3.98932 3.43475 3.81061 3.53015 3.6703 3.6703C3.57689 3.76336 3.50277 3.87395 3.45219 3.99572C3.40162 4.1175 3.37558 4.24806 3.37558 4.37991C3.37558 4.51177 3.40162 4.64233 3.45219 4.76411C3.50277 4.88588 3.57689 4.99647 3.6703 5.08953Z\"\n fill=\"#393637\"\n fill-opacity=\"1\"\n />\n </svg>\n }\n </div>\n </div>\n } @else {\n <div\n class=\"m-stars\"\n [attr.aria-label]=\"\n getHotelStars(item) +\n ' estrellas'\n \"\n >\n @for (\n star of getHotelStarIndexes(\n item\n );\n track star\n ) {\n <svg\n width=\"12\"\n height=\"11\"\n viewBox=\"0 0 12 11\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6 0L7.416 4.2H12L8.292 6.8L9.708 11L6 8.4L2.292 11L3.708 6.8L0 4.2H4.584L6 0Z\"\n fill=\"#393637\"\n />\n </svg>\n }\n </div>\n }\n }\n <div class=\"sup-category\">\n {{ showIfSup(item?.hotelcategory) }}\n </div>\n </div>\n </a>\n\n <div class=\"m-buttons\">\n @if (getButtonLabel(item, 0); as button1Label) {\n <a\n class=\"m-button1\"\n [href]=\"getButtonUrl(item, 0)\"\n [linkType]=\"getButtonLinkType(item, 0)\"\n >\n {{ button1Label }}\n </a>\n }\n\n @if (getButtonLabel(item, 1); as button2Label) {\n <a\n class=\"m-button2\"\n [href]=\"getButtonUrl(item, 1)\"\n [linkType]=\"getButtonLinkType(item, 1)\"\n >\n {{ button2Label }}\n </a>\n }\n </div>\n </div>\n }\n </div>\n </div>\n\n @if (!filteredItems?.length && texts?.notFound) {\n <div class=\"m-foot\">\n <div class=\"m-texto\" [innerHTML]=\"texts?.notFound\"></div>\n </div>\n }\n </div>\n </div>\n</section>\n", styles: ["@charset \"UTF-8\";html{font-size:62.5%}html body{font:14px \"\"}@media (min-width: 1921px) and (max-height: 600px){html{font-size:55.5%}}body,section{font-family:new-atten,sans-serif;font-size:1.6rem;font-weight:400;line-height:2.8rem}section .mdl-container{width:100%;max-width:178rem;margin:0 auto}.readmoreinit{line-height:1.6!important}@media screen and (max-width: 1200px){.readmoreinit{line-height:1.6!important}}@media screen and (max-width: 600px){.readmoreinit{line-height:1.6!important}}.read-more{display:flex;flex-direction:column;font-family:CoreSansG,sans-serif;font-size:1.5rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.4;letter-spacing:normal;color:#e6411e;text-decoration:underline;cursor:pointer;margin-top:2rem}.read-more .less{display:none}.w100{font-weight:100}.w300{font-weight:300}.w400{font-weight:400}.w500{font-weight:medium}.w600{font-weight:600}.w700{font-weight:700}.w900{font-weight:900}.italic{font-style:italic}.row{display:flex;flex-direction:row}.col{display:flex;flex-direction:column}body{cursor:default;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{color:inherit;border:0;margin:0;padding:0}a{text-size-adjust:none;-webkit-text-size-adjust:none;text-decoration:none;cursor:pointer}ul{list-style-position:outside}li{padding-left:3rem;list-style:none;position:relative}li:before{content:\"\\25cf\";position:absolute;top:0;left:0}button,mark{background:none}button,label{cursor:pointer}:focus{outline:none!important}::-moz-focus-inner{border:0}summary::-webkit-details-marker{display:none}button,input[type=submit],input[type=text]{-webkit-appearance:none}h1,h2,h3,h4,h5,h6{text-transform:none}p{width:100%}img{width:auto;height:auto;object-fit:contain}@-webkit-keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}@keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}.fancybox__backdrop{background-color:#00000087!important}.fancybox__content{padding:0!important}.fancybox__content>.carousel__button.is-close{color:#b6b8bb!important}.fancybox__counter{display:none!important}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-background-clip:text;-webkit-text-fill-color:#ffffff;transition:background-color 5000s ease-in-out 0s;box-shadow:inset 0 0 20px 20px #23232329}.mdl-LisC1ImgTxt{overflow:hidden;padding-left:0!important;padding-right:0!important}.mdl-LisC1ImgTxt .mdl-container{max-width:150rem;padding:0 5rem;box-sizing:border-box}.mdl-LisC1ImgTxt .mdl-container .m-head{display:flex;justify-content:space-between;gap:2rem}.mdl-LisC1ImgTxt .mdl-container .m-head .m-left{width:100%;max-width:52.7rem;font-family:CoreSansG,sans-serif;font-size:4rem;font-style:normal;font-weight:300!important;line-height:5rem}@media (max-width: 850px){.mdl-LisC1ImgTxt .mdl-container .m-head .m-left{font-size:3rem;line-height:4rem}}.mdl-LisC1ImgTxt .mdl-container .m-head .m-left{color:#393637}.mdl-LisC1ImgTxt .mdl-container .m-head .m-right{width:100%;max-width:39.1rem;font-family:new-atten,sans-serif;font-size:1.6rem;font-weight:400;line-height:2.8rem;color:#393637}.mdl-LisC1ImgTxt .mdl-container .m-content{margin-top:5rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top{display:flex;justify-content:space-between}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-left ::ng-deep .m-titulo{font-family:CoreSansG,sans-serif;font-size:4rem;font-style:normal;font-weight:300!important;line-height:5rem}@media (max-width: 850px){.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-left ::ng-deep .m-titulo{font-size:3rem;line-height:4rem}}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-left ::ng-deep .m-titulo{color:#393637}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-left .m-subtitulo{font-family:new-atten,sans-serif;font-size:1.4rem;font-weight:500;letter-spacing:.2rem;line-height:none;text-transform:uppercase;color:#393637}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-right{font-family:new-atten,sans-serif}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-right .selectors{display:flex;gap:40px}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-right .select-field{font-family:new-atten,sans-serif;width:21.4rem;border:2px solid #cfcfcf;border-radius:.4rem;padding:4px 16px 14px}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-right .select-field legend{font-family:new-atten,sans-serif;padding:0 8px;font-size:13px;color:#393939;margin-top:-1.6rem;background-color:#fdfbf9;width:fit-content}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-right .select-field select{font-family:new-atten,sans-serif;width:100%;border:none;outline:none;font-size:14px;color:#666;background:transparent;appearance:none;cursor:pointer}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-right .select-field{font-family:new-atten,sans-serif;position:relative}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-right .select-field:after{font-family:new-atten,sans-serif;content:\"\";position:absolute;right:18px;top:57%;width:10px;height:10px;border-right:3px solid #777;border-bottom:3px solid #777;transform:translateY(-120%) rotate(45deg);pointer-events:none}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item{margin-top:3rem!important;margin-bottom:-1px;display:flex;flex-direction:column;align-items:center;position:relative}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item.m-open{margin:1px}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item.m-open:before{content:\"\";width:200vw;margin-left:-100vw;height:100%;position:absolute;z-index:-1}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item.m-open svg{transition:.5s;transform:rotate(135deg)}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-buttonD{display:flex;justify-content:space-between;align-items:center;padding:5rem 5rem 5rem 0;width:100%;position:relative;transition:.5s}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-buttonD:hover{transition:.5s}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-buttonD:hover:before{content:\"\";width:200vw;margin-left:-100vw;height:100%;position:absolute;z-index:-1}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-buttonD svg{transition:.5s}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-buttonD .m-titulo{font-family:CoreSansG,sans-serif;font-size:8rem;font-style:normal;font-weight:700;line-height:5rem}@media (max-width: 850px){.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-buttonD .m-titulo{font-size:6rem;line-height:5rem}}@media (max-width: 600px){.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-buttonD .m-titulo{font-size:3rem;line-height:3rem}}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-buttonD .m-titulo{text-align:left}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado{display:flex;gap:6rem;width:100%;max-width:125rem;flex-wrap:wrap;transition:height .35s ease,opacity .25s ease;will-change:height}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .category{display:flex;flex-direction:row;gap:1rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .category .sup-category{margin-top:.5rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list{width:calc(50% - 3rem);display:flex;flex-direction:column;align-items:center;text-align:center}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list a{display:flex;flex-direction:column;align-items:center}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-imagen{aspect-ratio:625/417;width:100%}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-imagen img{width:100%;height:100%;object-fit:cover;aspect-ratio:625/417}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-titulo{font-family:CoreSansG,sans-serif;font-size:4rem;font-style:normal;font-weight:300!important;line-height:5rem}@media (max-width: 850px){.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-titulo{font-size:3rem;line-height:4rem}}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-titulo{color:#393637;margin-top:1rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-subtitulo{font-family:new-atten,sans-serif;font-size:1.4rem;font-weight:400;letter-spacing:12%;line-height:100%;text-transform:uppercase;color:#393637;margin-top:1rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-stars{display:flex;gap:1.7rem;margin-top:.9rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-stars svg{transform:rotate(143deg)}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-keys{display:flex;gap:1.7rem;margin-top:.9rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-keys svg{transform:rotate(90deg)}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons{display:flex;gap:2.8rem;margin-top:2rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons .m-button1{font-family:new-atten,sans-serif;font-size:1.4rem;font-weight:500;letter-spacing:.2rem;line-height:none;text-transform:uppercase;line-height:inherit!important;border-radius:8rem;border:1px solid #393637;padding:2rem 5rem;transition:.5s;min-width:26rem;display:flex;align-items:center;justify-content:center}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons .m-button1 span{color:#393637}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons .m-button1:hover{background-color:#fcdd3f;transition:.5s;border:1px solid #FCDD3F}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons .m-button1{padding:2rem 8rem;min-width:auto;white-space:nowrap}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons .m-button2{font-family:new-atten,sans-serif;font-size:1.4rem;font-weight:500;letter-spacing:.2rem;line-height:none;text-transform:uppercase;border-radius:8rem;padding:2rem 5rem;transition:.5s;min-width:26rem;background-color:#fcdd3f;display:flex;align-items:center;justify-content:center}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons .m-button2 span{color:#393637}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons .m-button2:hover{background-color:#f9bf10;transition:.5s}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons .m-button2{padding:2rem 8rem;min-width:auto;white-space:nowrap}.mdl-LisC1ImgTxt .mdl-container .m-foot{margin-top:5rem;display:flex;justify-content:space-between}.mdl-LisC1ImgTxt .mdl-container .m-foot .m-texto{font-family:Breathing Personal,sans-serif;font-size:6rem;font-weight:400;line-height:100%}@media (max-width: 600px){.mdl-LisC1ImgTxt .mdl-container .m-foot .m-texto{font-size:4rem}}.mdl-LisC1ImgTxt .mdl-container .m-foot .m-texto{color:#fcdd3f}.mdl-LisC1ImgTxt .mdl-container .m-foot .m-buttonfoot{font-family:new-atten,sans-serif;font-size:1.4rem;font-weight:500;letter-spacing:.2rem;line-height:none;text-transform:uppercase;line-height:inherit!important;border-radius:8rem;border:1px solid #393637;padding:2rem 5rem;transition:.5s;min-width:26rem;display:flex;align-items:center;justify-content:center}.mdl-LisC1ImgTxt .mdl-container .m-foot .m-buttonfoot span{color:#393637}.mdl-LisC1ImgTxt .mdl-container .m-foot .m-buttonfoot:hover{background-color:#fcdd3f;transition:.5s;border:1px solid #FCDD3F}.mdl-LisC1ImgTxt .mdl-container .m-foot .m-buttonfoot{min-width:16rem;text-align:center}@media (max-width: 1441px){.mdl-LisC1ImgTxt .mdl-container{padding:0 2rem}}@media (max-width: 1080px){.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-titulo{height:9rem}}@media (max-width: 1200px){.mdl-LisC1ImgTxt .mdl-container .m-content .m-top{flex-direction:column;align-items:center;text-align:center;gap:2rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list{margin-bottom:2rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons{flex-direction:column;gap:1rem!important}}@media (max-width: 850px){.mdl-LisC1ImgTxt .mdl-container .m-head{flex-direction:column}.mdl-LisC1ImgTxt .mdl-container .m-head .m-left,.mdl-LisC1ImgTxt .mdl-container .m-head .m-right{max-width:60.1rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-top .m-right .selectors{flex-direction:column;gap:2rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list{margin-bottom:2rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-buttons{flex-direction:column;gap:1rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-buttonD{padding:5rem 0}.mdl-LisC1ImgTxt .mdl-container .m-foot{align-items:center}}@media (max-width: 600px){.mdl-LisC1ImgTxt .mdl-container .m-foot{flex-direction:column;gap:3rem}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list{width:100%}.mdl-LisC1ImgTxt .mdl-container .m-content .m-item .m-listado .m-item-list .m-titulo{height:auto}}\n"] }]
|
|
234
323
|
}], propDecorators: { texts: [{
|
|
235
324
|
type: Input
|
|
@@ -246,4 +335,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
246
335
|
}], textColors: [{
|
|
247
336
|
type: Input
|
|
248
337
|
}] } });
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzLWMyLWltZy10eHQtY3RhLXY0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9jb21wb25lbnRzL2V4dGVybmFsL2NvcmUvbGlzLWMyLWltZy10eHQtY3RhLXY0L2xpcy1jMi1pbWctdHh0LWN0YS12NC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL2xpcy1jMi1pbWctdHh0LWN0YS12NC9saXMtYzItaW1nLXR4dC1jdGEtdjQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUU5RSxPQUFPLEVBQStDLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUdqRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJB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Z0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJhYnlsb25CdXR0b25JLCBCYWJ5bG9uSW1hZ2VJLCBCYWJ5bG9uVGV4dEluZm9JLCBCYWJ5bG9uVGV4dHNDb2xvcnNJIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBidWlsZEZpbHRlck9wdGlvbnMsIGZpbHRlcmVkSXRlbXMsIGdldEl0ZW1CcmFuZCB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2ZpbHRlci51dGlscyc7XG5pbXBvcnQgeyBCYWJ5bG9uTGlua1R5cGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi8uLi9kaXJlY3RpdmVzL2xpbmstdHlwZS9saW5rLXR5cGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEJhYnlsb25DdXJyZW5jeVBpcGUgfSBmcm9tICcuLi8uLi8uLi8uLi9waXBlcy9iYWJ5bG9uLWN1cnJlbmN5LnBpcGUnO1xuXG5pbXBvcnQgeyBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYWJ5bG9uR2xvYmFsSXRlbSB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1nbG9iYWwtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZ2V0Rmlyc3RJbWFnZUJ5VGFnRnJvbUltYWdlcyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL211dGltZWRpYS51dGlscyc7XG5pbXBvcnQgeyBub3JtYWxpemVHbG9iYWxJdGVtcyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL25vcm1hbGl6ZS1pdGVtcy51dGlscyc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IEJhYnlsb25EeW5hbWljSGVhZGluZ0NvbXBvbmVudCB9IGZyb20gXCIuLi8uLi8uLi9zaGFyZWRcIjtcbmltcG9ydCB7IEhlYWRpbmdUYWdVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2hlYWRpbmctdGFnLnV0aWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaXMtYzItaW1nLXR4dC1jdGEtdjQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBCYWJ5bG9uTGlua1R5cGVEaXJlY3RpdmUsXG4gICAgQmFieWxvbkN1cnJlbmN5UGlwZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBCYWJ5bG9uRHluYW1pY0hlYWRpbmdDb21wb25lbnRcbl0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xpcy1jMi1pbWctdHh0LWN0YS12NC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2xpcy1jMi1pbWctdHh0LWN0YS12NC5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uRW11bGF0ZWQsXG59KVxuZXhwb3J0IGNsYXNzIExpc0MySW1nVHh0Q3RhVjRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSB0ZXh0cz86IEJhYnlsb25UZXh0SW5mb0k7XG4gICAgQElucHV0KCkgaXRlbXM/OiBCYWJ5bG9uR2xvYmFsSXRlbVtdO1xuICAgIEBJbnB1dCgpIGxpbmtzPzogQmFieWxvbkJ1dHRvbklbXTtcbiAgICBASW5wdXQoKSBhZGRpdGlvbmFsMUxpa2VNYXJjYT86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzaG93Q2xlYW5GaWx0ZXJzOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBzaG93RmlsdGVyczogYm9vbGVhbiA9IHRydWU7IC8vIHRvIHNob3cgb3IgaGlkZSBmaWx0ZXJzIHNlY3Rpb25cbiAgICBASW5wdXQoKSB0ZXh0Q29sb3JzPzogQmFieWxvblRleHRzQ29sb3JzSTtcbiAgICB0YWdOYW1lOiBzdHJpbmcgPSAnTGlzQzJJbWdUeHRDdGFWNCc7XG5cbiAgICBzZWxlY3RlZEhvdGVsVHlwZTogc3RyaW5nID0gJyc7XG4gICAgc2VsZWN0ZWREZXN0aW5hdGlvbjogc3RyaW5nID0gJyc7XG4gICAgc2VsZWN0ZWRCcmFuZDogc3RyaW5nID0gJyc7XG4gICAgc2VsZWN0ZWRFeHBlcmllbmNlVHlwZTogc3RyaW5nID0gJyc7XG5cbiAgICBob3RlbFR5cGVPcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgIGRlc3RpbmF0aW9uT3B0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgICBicmFuZE9wdGlvbnM6IHN0cmluZ1tdID0gW107XG4gICAgZXhwZXJpZW5jZVR5cGVPcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgZmlsdGVyTGFiZWxUb1NsdWcgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIGRlc3RpbmF0aW9uTGFiZWxUb1NsdWcgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIGJyYW5kTGFiZWxUb1NsdWcgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gICAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByaXZhdGUgcXBTdWI/OiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBwZW5kaW5nRGVzdGluYXRpb24/OiBzdHJpbmc7XG4gICAgcHVibGljIGhlYWRpbmdUYWdVdGlscyA9IEhlYWRpbmdUYWdVdGlscztcblxuICAgIC8vIEl0ZW1zIGZpbHRyYWRvcyBzaW4gbm9ybWFsaXphciAodXNhZG9zIHBhcmEgbMOzZ2ljYSlcbiAgICBwcml2YXRlIF9maWx0ZXJlZEl0ZW1zUmF3OiBCYWJ5bG9uR2xvYmFsSXRlbVtdID0gW107XG5cbiAgICBwcml2YXRlIGZpbmRBbmRTZWxlY3REZXN0aW5hdGlvbihkZXN0aW5hdGlvbk5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkTmFtZSA9IGRlc3RpbmF0aW9uTmFtZS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcblxuICAgICAgICAvLyBQcmltZXJvIGJ1c2NhciBlbiBlbCBhcnJheSBkZSBzdHJpbmdzIGRlIGRlc3Rpbm9zXG4gICAgICAgIGxldCBmb3VuZCA9IHRoaXMuZGVzdGluYXRpb25PcHRpb25zPy5maW5kKFxuICAgICAgICAgICAgKGRlc3RpbmF0aW9uKSA9PiBkZXN0aW5hdGlvbi50b0xvd2VyQ2FzZSgpLnRyaW0oKSA9PT0gbm9ybWFsaXplZE5hbWVcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbiA9IGZvdW5kO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJlZEl0ZW1zKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXZ1ZWx2ZSBlbCBsYWJlbCBkZWwgYm90w7NuIGVuIGxhIHBvc2ljacOzbiBpbmRleCwgYnVzY2FuZG8gZW4gaXRlbS5idXR0b25zW2luZGV4XS5sYWJlbFxuICAgICAqIHkgc2kgbm8gZXhpc3RlLCBlbiBpdGVtLm11bHRpbWVkaWEuaW1hZ2VuZXNbMF0uYnV0dG9uc1tpbmRleF0ubGFiZWxcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldEJ1dHRvbihpdGVtOiBCYWJ5bG9uR2xvYmFsSXRlbSwgaW5kZXg6IG51bWJlcik6IEJhYnlsb25CdXR0b25JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LmJ1dHRvbnM/LltpbmRleF0gPz8gaXRlbT8uYnV0dG9ucz8uW2luZGV4XTtcbiAgICB9XG5cbiAgICBnZXRCdXR0b25MYWJlbChpdGVtOiBCYWJ5bG9uR2xvYmFsSXRlbSwgaW5kZXg6IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuZ2V0QnV0dG9uKGl0ZW0sIGluZGV4KTtcbiAgICAgICAgcmV0dXJuIGJ1dHRvbj8ubGFiZWwgPz8gYnV0dG9uPy5uYW1lID8/IGJ1dHRvbj8udmFycztcbiAgICB9XG5cbiAgICBnZXRCdXR0b25VcmwoaXRlbTogQmFieWxvbkdsb2JhbEl0ZW0sIGluZGV4OiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5idWlsZE1lbnVVcmwodGhpcy5nZXRCdXR0b24oaXRlbSwgaW5kZXgpKTtcbiAgICB9XG5cbiAgICBnZXRCdXR0b25MaW5rVHlwZShpdGVtOiBCYWJ5bG9uR2xvYmFsSXRlbSwgaW5kZXg6IG51bWJlcik6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEJ1dHRvbihpdGVtLCBpbmRleCk/LmxpbmtUeXBlO1xuICAgIH1cblxuICAgIGdldEhvdGVsU3RhcnMoaXRlbTogQmFieWxvbkdsb2JhbEl0ZW0pOiBudW1iZXIge1xuICAgICAgICBjb25zdCByYXdIb3RlbENhdGVnb3J5ID0gaXRlbT8uaG90ZWxjYXRlZ29yeT8udG9TdHJpbmcoKS50cmltKCkgPz8gJyc7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gcmF3SG90ZWxDYXRlZ29yeS5tYXRjaCgvXFxkKy8pO1xuICAgICAgICBpZiAoIW1hdGNoKSByZXR1cm4gMDtcblxuICAgICAgICBjb25zdCBzdGFycyA9IE51bWJlci5wYXJzZUludChtYXRjaFswXSwgMTApO1xuICAgICAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShzdGFycykgfHwgc3RhcnMgPD0gMCkgcmV0dXJuIDA7XG5cbiAgICAgICAgcmV0dXJuIE1hdGgubWluKHN0YXJzLCA1KTtcbiAgICB9XG5cbiAgICBpc0FwYXJ0bWVudChob3RlbFR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gVXRpbHMuaXNBcGFydG1lbnQoaG90ZWxUeXBlKTtcbiAgICB9XG5cbiAgICBzaG93SWZTdXAodmFsdWU/OiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBVdGlscy5zaG93SWZTdXAodmFsdWUpO1xuICAgIH1cblxuICAgIGdldEhvdGVsU3RhckluZGV4ZXMoaXRlbTogQmFieWxvbkdsb2JhbEl0ZW0pOiBudW1iZXJbXSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLmdldEhvdGVsU3RhcnMoaXRlbSkgfSwgKF8sIGluZGV4KSA9PiBpbmRleCk7XG4gICAgfVxuXG4gICAgYnVpbGRNZW51VXJsKGl0ZW06IEJhYnlsb25CdXR0b25JIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgICAgIGlmICghaXRlbT8udXJsKSByZXR1cm4gJyc7XG5cbiAgICAgIGNvbnN0IGJhc2VVcmwgPSBpdGVtLnVybC5yZXBsYWNlKC9cXC8rJC8sICcnKTtcbiAgICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gKGl0ZW0udmFycyA/PyAnJykudG9TdHJpbmcoKS50cmltKCk7XG5cbiAgICAgIGlmICghZGVzdGluYXRpb24pIHJldHVybiBiYXNlVXJsO1xuXG4gICAgICBjb25zdCBzbHVnID0gVXRpbHMudG9TbHVnKGRlc3RpbmF0aW9uKTtcbiAgICAgIGlmICghc2x1ZykgcmV0dXJuIGJhc2VVcmw7XG5cbiAgICAgIHJldHVybiBgJHtiYXNlVXJsfT9kZXN0aW5hdGlvbnM9JHtkZXN0aW5hdGlvbn1gO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10pIHtcbiAgICAgICAgICAgIGNvbnN0IG9wdHMgPSBidWlsZEZpbHRlck9wdGlvbnMoXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcyA/PyBbXSxcbiAgICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWwxTGlrZU1hcmNhID8/IGZhbHNlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5ob3RlbFR5cGVPcHRpb25zID0gb3B0cy5ob3RlbFR5cGVPcHRpb25zO1xuICAgICAgICAgICAgdGhpcy5kZXN0aW5hdGlvbk9wdGlvbnMgPSBvcHRzLmRlc3RpbmF0aW9uT3B0aW9ucztcblxuICAgICAgICAgICAgLy8gUmVsbGVuYXIgYnJhbmRPcHRpb25zIHVzYW5kbyBnZXRJdGVtQnJhbmQgcGFyYSBjb2hlcmVuY2lhXG4gICAgICAgICAgICBjb25zdCBicmFuZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgICAgIGNvbnN0IGV4cGVyaWVuY2VUeXBlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgKHRoaXMuaXRlbXMgPz8gW10pLmZvckVhY2goKGl0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnJhbmQgPSBnZXRJdGVtQnJhbmQoXG4gICAgICAgICAgICAgICAgICAgIGl0LFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWwxTGlrZU1hcmNhID8/IGZhbHNlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoYnJhbmQpIGJyYW5kcy5hZGQoYnJhbmQpO1xuICAgICAgICAgICAgICAgIGlmIChpdC5ldmVudHMpIGl0LmV2ZW50cy5mb3JFYWNoKChleHApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4cCAmJiB0eXBlb2YgZXhwLm5hbWUgPT09ICdzdHJpbmcnICYmIGV4cC5uYW1lLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVyaWVuY2VUeXBlcy5hZGQoZXhwLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuYnJhbmRPcHRpb25zID0gQXJyYXkuZnJvbShicmFuZHMpO1xuICAgICAgICAgICAgdGhpcy5leHBlcmllbmNlVHlwZU9wdGlvbnMgPSBBcnJheS5mcm9tKGV4cGVyaWVuY2VUeXBlcyk7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckxhYmVsVG9TbHVnID0gb3B0cy5maWx0ZXJMYWJlbFRvU2x1ZztcbiAgICAgICAgICAgIHRoaXMuZGVzdGluYXRpb25MYWJlbFRvU2x1ZyA9IG9wdHMuZGVzdGluYXRpb25MYWJlbFRvU2x1ZztcbiAgICAgICAgICAgIHRoaXMuYnJhbmRMYWJlbFRvU2x1ZyA9IG9wdHMuYnJhbmRMYWJlbFRvU2x1ZztcblxuICAgICAgICAgICAgLy8gU29sbyByZXNldGVhciBzaSBubyBoYXkgdW4gZGVzdGlubyBwZW5kaWVudGUgZGUgbGEgVVJMXG4gICAgICAgICAgICBpZiAoIXRoaXMucGVuZGluZ0Rlc3RpbmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEhvdGVsVHlwZSA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbiA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRCcmFuZCA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFeHBlcmllbmNlVHlwZSA9ICcnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBTaSBoYXkgdW4gZGVzdGlubyBwZW5kaWVudGUgZGUgbGEgVVJMLCBpbnRlbnRhIHNlbGVjY2lvbmFybG8gYWhvcmFcbiAgICAgICAgICAgICAgICB0aGlzLmZpbmRBbmRTZWxlY3REZXN0aW5hdGlvbih0aGlzLnBlbmRpbmdEZXN0aW5hdGlvbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFjdHVhbGl6YXIgaXRlbXMgZmlsdHJhZG9zXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkSXRlbXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBTdXNjcmliaXJzZSBhIGxvcyBjYW1iaW9zIGRlIHF1ZXJ5IHBhcmFtc1xuICAgICAgICB0aGlzLnFwU3ViID0gdGhpcy5yb3V0ZS5xdWVyeVBhcmFtTWFwLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZXN0aW5hdGlvbnNQYXJhbSA9IHBhcmFtcy5nZXQoJ2Rlc3RpbmF0aW9ucycpO1xuXG4gICAgICAgICAgICBpZiAoZGVzdGluYXRpb25zUGFyYW0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWNvZGVkRGVzdGluYXRpb24gPSBkZWNvZGVVUklDb21wb25lbnQoZGVzdGluYXRpb25zUGFyYW0pO1xuICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0Rlc3RpbmF0aW9uID0gZGVjb2RlZERlc3RpbmF0aW9uO1xuXG4gICAgICAgICAgICAgICAgLy8gU2kgeWEgdGVuZW1vcyBkZXN0aW5hdGlvbk9wdGlvbnMsIGJ1c2NhciB5IHNlbGVjY2lvbmFyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVzdGluYXRpb25PcHRpb25zICYmIHRoaXMuZGVzdGluYXRpb25PcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kQW5kU2VsZWN0RGVzdGluYXRpb24oZGVjb2RlZERlc3RpbmF0aW9uKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5xcFN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXZ1ZWx2ZSB1biBhcnJheSBub3JtYWxpemFkbyBkZSBCYWJ5bG9uR2xvYmFsSXRlbVxuICAgICAqL1xuICAgIGdldCBub3JtYWxpemVkSXRlbXMoKTogQmFieWxvbkdsb2JhbEl0ZW1bXSB7XG4gICAgICAgIHJldHVybiBub3JtYWxpemVHbG9iYWxJdGVtcyh0aGlzLml0ZW1zKTtcbiAgICB9XG5cbiAgICBnZXRGaXJzdEltYWdlQnlUYWcodGFnTmFtZTogc3RyaW5nLCBpbWFnZW5lczogQmFieWxvbkltYWdlSVtdKSB7XG4gICAgICAgIHJldHVybiBnZXRGaXJzdEltYWdlQnlUYWdGcm9tSW1hZ2VzKGltYWdlbmVzLCB0YWdOYW1lKTtcbiAgICB9XG5cbiAgICBnZXQgZmlsdGVyZWRJdGVtcygpIHtcbiAgICAgICAgLy8gRGV2b2x2ZXIgbG9zIGl0ZW1zIGZpbHRyYWRvcyBub3JtYWxpemFkb3NcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZUdsb2JhbEl0ZW1zKHRoaXMuX2ZpbHRlcmVkSXRlbXNSYXcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlRmlsdGVyZWRJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgbGV0IGl0ZW1zID0gZmlsdGVyZWRJdGVtcyh7XG4gICAgICAgICAgICBpdGVtczogdGhpcy5pdGVtcyA/PyBbXSxcbiAgICAgICAgICAgIHNlbGVjdGVkSG90ZWxUeXBlOiB0aGlzLnNlbGVjdGVkSG90ZWxUeXBlLFxuICAgICAgICAgICAgc2VsZWN0ZWREZXN0aW5hdGlvbjogdGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uLFxuICAgICAgICAgICAgc2VsZWN0ZWRCcmFuZDogdGhpcy5zZWxlY3RlZEJyYW5kLFxuICAgICAgICAgICAgYWRkaXRpb25hbDFMaWtlTWFyY2E6IHRoaXMuYWRkaXRpb25hbDFMaWtlTWFyY2EgPz8gZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEV4cGVyaWVuY2VUeXBlKSB7XG4gICAgICAgICAgICBpdGVtcyA9IGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5ldmVudHM/LnNvbWUoKGV4cCkgPT4gZXhwPy5uYW1lID09PSB0aGlzLnNlbGVjdGVkRXhwZXJpZW5jZVR5cGUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2ZpbHRlcmVkSXRlbXNSYXcgPSBpdGVtcztcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgZ2V0IGhhc0FjdGl2ZUZpbHRlcnMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSG90ZWxUeXBlLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEJyYW5kLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEV4cGVyaWVuY2VUeXBlLFxuICAgICAgICBdLnNvbWUoKHYpID0+IHYgJiYgdiAhPT0gJycpO1xuICAgIH1cblxuICAgIG9uSG90ZWxUeXBlQ2hhbmdlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEhvdGVsVHlwZSA9IHZhbHVlID8/ICcnO1xuICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkSXRlbXMoKTtcbiAgICB9XG5cbiAgICBvbkRlc3RpbmF0aW9uQ2hhbmdlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uID0gdmFsdWUgPz8gJyc7XG4gICAgICAgIHRoaXMudXBkYXRlRmlsdGVyZWRJdGVtcygpO1xuICAgIH1cblxuICAgIG9uQnJhbmRDaGFuZ2UodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkQnJhbmQgPSB2YWx1ZSA/PyAnJztcbiAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJlZEl0ZW1zKCk7XG4gICAgfVxuXG4gICAgb25FeHBlcmllbmNlVHlwZUNoYW5nZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFeHBlcmllbmNlVHlwZSA9IHZhbHVlID8/ICcnO1xuICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkSXRlbXMoKTtcbiAgICB9XG5cbiAgICBjbGVhckZpbHRlcnMoKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUgPSAnJztcbiAgICAgICAgdGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uID0gJyc7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRCcmFuZCA9ICcnO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRXhwZXJpZW5jZVR5cGUgPSAnJztcbiAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJlZEl0ZW1zKCk7XG4gICAgfVxuXG4gICAgdHJhY2tGaWx0ZXIoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gICAgdHJhY2tPcHRpb24oaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gICAgdHJhY2tPZmZlcihpdGVtOiBCYWJ5bG9uR2xvYmFsSXRlbSwgaW5kZXg6IG51bWJlcik6IHN0cmluZyB8IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpdGVtPy5pZCA/PyBpdGVtPy50ZXh0cz8ubmFtZSA/PyBpdGVtPy50ZXh0cz8udGl0bGUgPz8gaW5kZXg7XG4gICAgfVxufVxuIiwiPHNlY3Rpb24gY2xhc3M9XCJtZGwtTGlzQzFJbWdUeHRcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWRsLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1jb250ZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS10b3BcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1sZWZ0XCI+XG4gICAgICAgICAgICAgICAgICBAaWYgKGhlYWRpbmdUYWdVdGlscy5oYXNIZWFkaW5nQ29udGVudCh0ZXh0cywgJ3RpdGxlJywgdGV4dHM/LnRpdGxlKSkge1xuICAgICAgICAgICAgICAgICAgICA8bGliLWJhYnlsb24tZHluYW1pYy1oZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgW3RhZ109XCJoZWFkaW5nVGFnVXRpbHMuZ2V0SGVhZGluZ1RhZyh0ZXh0cywgJ3RpdGxlJywgJ2gxJylcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJ0ZXh0Q29sb3JzPy50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgY3NzQ2xhc3M9XCJtLXRpdHVsb1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwiaGVhZGluZ1RhZ1V0aWxzLmdldEhlYWRpbmdDb250ZW50KHRleHRzLCAndGl0bGUnLCB0ZXh0cz8udGl0bGUpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbGliLWJhYnlsb24tZHluYW1pYy1oZWFkaW5nPlxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIEBpZiAodGV4dHM/LnN1YnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLXN1YnRpdHVsb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJ0ZXh0cz8uc3VidGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICBAaWYgKHNob3dGaWx0ZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0b3JzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwic2VsZWN0LWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAodGV4dHM/Lm1hcmNhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGVnZW5kPnt7IHRleHRzPy5tYXJjYSB9fTwvbGVnZW5kPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRCcmFuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkJyYW5kQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+e3sgdGV4dHM/Lm1hcmNhIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHQgb2YgYnJhbmRPcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIHRyYWNrT3B0aW9uKCRpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdFwiPnt7IG9wdCB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwic2VsZWN0LWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAodGV4dHM/LmRlc3RpbmF0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD57eyB0ZXh0cz8uZGVzdGluYXRpb25zIH19PC9sZWdlbmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZERlc3RpbmF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRGVzdGluYXRpb25DaGFuZ2UoJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRleHRzPy5kZXN0aW5hdGlvbnMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0IG9mIGRlc3RpbmF0aW9uT3B0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayB0cmFja09wdGlvbigkaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRcIj57eyBvcHQgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZXhwZXJpZW5jZVR5cGVPcHRpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwic2VsZWN0LWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGVnZW5kPnt7IHRleHRzPy5ldmVudHMgfX08L2xlZ2VuZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRXhwZXJpZW5jZVR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkV4cGVyaWVuY2VUeXBlQ2hhbmdlKCRldmVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdGV4dHM/LmV2ZW50cyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHQgb2YgZXhwZXJpZW5jZVR5cGVPcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayB0cmFja09wdGlvbigkaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0taXRlbSBtLW9wZW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1saXN0YWRvXCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZmlsdGVyZWRJdGVtczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0taXRlbS1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiZ2V0QnV0dG9uVXJsKGl0ZW0sIDEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cImdldEJ1dHRvbkxpbmtUeXBlKGl0ZW0sIDEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWltYWdlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRGaXJzdEltYWdlQnlUYWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmltYWdlbmVzID8/IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA/PyBpdGVtPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy5pbWc/LnNyYyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEFRQUJBSUFBQUFBQUFQLy8veUg1QkFFQUFBQUFMQUFBQUFBQkFBRUFBQUlCUkFBNydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYWx0XT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy5pbWc/LmFsdCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW0/LnRleHRzPy50aXRsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnRleHRzPy5uYW1lIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtPy50ZXh0cz8udGl0bGUgfHwgaXRlbT8udGV4dHM/Lm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS10aXR1bG9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnRleHRzPy50aXRsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50ZXh0cz8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLXN1YnRpdHVsb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChnZXRIb3RlbFN0YXJzKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpc0FwYXJ0bWVudChpdGVtPy5ob3RlbHR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SG90ZWxTdGFycyhpdGVtKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBlc3RyZWxsYXMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1rZXlzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXIgb2YgZ2V0SG90ZWxTdGFySW5kZXhlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgc3RhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjEzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTMgMTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0wLjE0NjI5NiA0LjI2NDc5TDEuMTQwMTUgMi4wMTY5MkMxLjMxMjg5IDEuNjI1NTkgMS42MjU1OSAxLjMxMjg5IDIuMDE2OTIgMS4xNDAxNUw0LjI2NDc5IDAuMTQ2Mjk3QzQuNTgxNzQgMC4wMDY0MTgyNiA0LjkzMzU2IC0wLjAzNDM5NDQgNS4yNzQxMiAwLjAyOTIxMjdDNS42MTQ2NyAwLjA5MjgxOTggNS45MjgwNSAwLjI1Nzg3NiA2LjE3MzE0IDAuNTAyNzNMNy45NDc1IDIuMjc4MzlDOC4xNjA2IDIuNDkxNTUgOC4zMTM4OCAyLjc1NzAxIDguMzkxOTcgMy4wNDgxM0M4LjQ3MDA2IDMuMzM5MjUgOC40NzAyIDMuNjQ1NzggOC4zOTIzOSAzLjkzNjk4TDcuOTM1NzkgNS42NDEwOUwxMi44NjYgMTAuNTcxM0MxMi45MDg1IDEwLjYxMzYgMTIuOTQyMiAxMC42NjM5IDEyLjk2NTIgMTAuNzE5M0MxMi45ODgyIDEwLjc3NDYgMTMgMTAuODM0IDEzIDEwLjg5MzlWMTIuNTQ0N0MxMi45OTkzIDEyLjY2NTIgMTIuOTUxMSAxMi43ODA3IDEyLjg2NTkgMTIuODY1OUMxMi43ODA3IDEyLjk1MTEgMTIuNjY1MiAxMi45OTkzIDEyLjU0NDcgMTNIMTAuODkzOUMxMC43OTI2IDEyLjk5OTggMTAuNjk0MiAxMi45NjU5IDEwLjYxNDIgMTIuOTAzOEMxMC41MzQxIDEyLjg0MTYgMTAuNDc3IDEyLjc1NDcgMTAuNDUxNiAxMi42NTY2TDEwLjIwNDUgMTEuNjc5Nkw5LjMzMDMgMTEuNTEzMUM5LjI0MzIyIDExLjQ5NjggOS4xNjI4MiAxMS40NTUzIDkuMDk5MDMgMTEuMzkzOEM5LjAzNTIzIDExLjMzMjMgOC45OTA4MiAxMS4yNTM1IDguOTcxMjcgMTEuMTY3MUw4LjczMzIxIDEwLjExNzNMNy44OTAyNiAxMC4wMzY3QzcuNzg0NzkgMTAuMDI3NCA3LjY4NjA4IDkuOTgwOCA3LjYxMTg4IDkuOTA1MjhMNS42NDEwOSA3LjkzNTc5TDMuOTM2OTcgOC4zOTIzOUMzLjY0NTggOC40NzA0NyAzLjMzOTE5IDguNDcwNDYgMy4wNDgwMiA4LjM5MjM2QzIuNzU2ODUgOC4zMTQyNiAyLjQ5MTQgOC4xNjA4MiAyLjI3ODM5IDcuOTQ3NUwwLjUwMjcyOSA2LjE3MzE0QzAuMjU3ODc1IDUuOTI4MDUgMC4wOTI4MjAyIDUuNjE0NjcgMC4wMjkyMTMgNS4yNzQxMkMtMC4wMzQzOTQzIDQuOTMzNTcgMC4wMDY0MTcyNyA0LjU4MTc0IDAuMTQ2Mjk2IDQuMjY0NzlaTTMuNjcwMyA1LjA4OTUzQzMuODEwNjEgNS4yMjk2OCAzLjk4OTMyIDUuMzI1MDggNC4xODM4NSA1LjM2MzY5QzQuMzc4MzcgNS40MDIyOSA0LjU3OTk3IDUuMzgyMzYgNC43NjMxNyA1LjMwNjQxQzQuOTQ2MzYgNS4yMzA0NyA1LjEwMjk0IDUuMTAxOTEgNS4yMTMwOSA0LjkzN0M1LjMyMzI0IDQuNzcyMSA1LjM4MjAzIDQuNTc4MjMgNS4zODIwMyA0LjM3OTkxQzUuMzgyMDMgNC4xODE2IDUuMzIzMjQgMy45ODc3MyA1LjIxMzA5IDMuODIyODNDNS4xMDI5NCAzLjY1NzkyIDQuOTQ2MzYgMy41MjkzNiA0Ljc2MzE3IDMuNDUzNDJDNC41Nzk5NyAzLjM3NzQ3IDQuMzc4MzcgMy4zNTc1NCA0LjE4Mzg1IDMuMzk2MTRDMy45ODkzMiAzLjQzNDc1IDMuODEwNjEgMy41MzAxNSAzLjY3MDMgMy42NzAzQzMuNTc2ODkgMy43NjMzNiAzLjUwMjc3IDMuODczOTUgMy40NTIxOSAzLjk5NTcyQzMuNDAxNjIgNC4xMTc1IDMuMzc1NTggNC4yNDgwNiAzLjM3NTU4IDQuMzc5OTFDMy4zNzU1OCA0LjUxMTc3IDMuNDAxNjIgNC42NDIzMyAzLjQ1MjE5IDQuNzY0MTFDMy41MDI3NyA0Ljg4NTg4IDMuNTc2ODkgNC45OTY0NyAzLjY3MDMgNS4wODk1M1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMzkzNjM3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsLW9wYWNpdHk9XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLXN0YXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SG90ZWxTdGFycyhpdGVtKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBlc3RyZWxsYXMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyIG9mIGdldEhvdGVsU3RhckluZGV4ZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIHN0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjExXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMiAxMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02IDBMNy40MTYgNC4ySDEyTDguMjkyIDYuOEw5LjcwOCAxMUw2IDguNEwyLjI5MiAxMUwzLjcwOCA2LjhMMCA0LjJINC41ODRMNiAwWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzM5MzYzN1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdXAtY2F0ZWdvcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzaG93SWZTdXAoaXRlbT8uaG90ZWxjYXRlZ29yeSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1idXR0b25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZ2V0QnV0dG9uTGFiZWwoaXRlbSwgMCk7IGFzIGJ1dHRvbjFMYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tYnV0dG9uMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiZ2V0QnV0dG9uVXJsKGl0ZW0sIDApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlua1R5cGVdPVwiZ2V0QnV0dG9uTGlua1R5cGUoaXRlbSwgMClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGJ1dHRvbjFMYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChnZXRCdXR0b25MYWJlbChpdGVtLCAxKTsgYXMgYnV0dG9uMkxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1idXR0b24yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJnZXRCdXR0b25VcmwoaXRlbSwgMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJnZXRCdXR0b25MaW5rVHlwZShpdGVtLCAxKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYnV0dG9uMkxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgQGlmICghZmlsdGVyZWRJdGVtcz8ubGVuZ3RoICYmIHRleHRzPy5ub3RGb3VuZCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvb3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tdGV4dG9cIiBbaW5uZXJIVE1MXT1cInRleHRzPy5ub3RGb3VuZFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvc2VjdGlvbj5cbiJdfQ==
|
|
338
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzLWMyLWltZy10eHQtY3RhLXY0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9jb21wb25lbnRzL2V4dGVybmFsL2NvcmUvbGlzLWMyLWltZy10eHQtY3RhLXY0L2xpcy1jMi1pbWctdHh0LWN0YS12NC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL2xpcy1jMi1pbWctdHh0LWN0YS12NC9saXMtYzItaW1nLXR4dC1jdGEtdjQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFPaEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUNILGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsWUFBWSxHQUNmLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEMsT0FBTyxFQUNILGlCQUFpQixHQUtwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHakQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FB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QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCYWJ5bG9uTGlua1R5cGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi8uLi9kaXJlY3RpdmVzL2xpbmstdHlwZS9saW5rLXR5cGUuZGlyZWN0aXZlJztcbmltcG9ydCB7XG4gICAgQmFieWxvbkJ1dHRvbkksXG4gICAgQmFieWxvbkltYWdlSSxcbiAgICBCYWJ5bG9uVGV4dEluZm9JLFxuICAgIEJhYnlsb25UZXh0c0NvbG9yc0ksXG59IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQmFieWxvbkN1cnJlbmN5UGlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL3BpcGVzL2JhYnlsb24tY3VycmVuY3kucGlwZSc7XG5pbXBvcnQge1xuICAgIGJ1aWxkRmlsdGVyT3B0aW9ucyxcbiAgICBmaWx0ZXJlZEl0ZW1zLFxuICAgIGdldEl0ZW1CcmFuZCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvZmlsdGVyLnV0aWxzJztcblxuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmFieWxvbkdsb2JhbEl0ZW0gfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tZ2xvYmFsLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgSGVhZGluZ1RhZ1V0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvaGVhZGluZy10YWcudXRpbHMnO1xuaW1wb3J0IHsgZ2V0Rmlyc3RJbWFnZUJ5VGFnRnJvbUltYWdlcyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL211dGltZWRpYS51dGlscyc7XG5pbXBvcnQgeyBub3JtYWxpemVHbG9iYWxJdGVtcyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL25vcm1hbGl6ZS1pdGVtcy51dGlscyc7XG5pbXBvcnQgeyBCYWJ5bG9uRHluYW1pY0hlYWRpbmdDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpcy1jMi1pbWctdHh0LWN0YS12NCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgQmFieWxvbkxpbmtUeXBlRGlyZWN0aXZlLFxuICAgICAgICBCYWJ5bG9uQ3VycmVuY3lQaXBlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgQmFieWxvbkR5bmFtaWNIZWFkaW5nQ29tcG9uZW50LFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xpcy1jMi1pbWctdHh0LWN0YS12NC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2xpcy1jMi1pbWctdHh0LWN0YS12NC5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uRW11bGF0ZWQsXG59KVxuZXhwb3J0IGNsYXNzIExpc0MySW1nVHh0Q3RhVjRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSB0ZXh0cz86IEJhYnlsb25UZXh0SW5mb0k7XG4gICAgQElucHV0KCkgaXRlbXM/OiBCYWJ5bG9uR2xvYmFsSXRlbVtdO1xuICAgIEBJbnB1dCgpIGxpbmtzPzogQmFieWxvbkJ1dHRvbklbXTtcbiAgICBASW5wdXQoKSBhZGRpdGlvbmFsMUxpa2VNYXJjYT86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzaG93Q2xlYW5GaWx0ZXJzOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBzaG93RmlsdGVyczogYm9vbGVhbiA9IHRydWU7IC8vIHRvIHNob3cgb3IgaGlkZSBmaWx0ZXJzIHNlY3Rpb25cbiAgICBASW5wdXQoKSB0ZXh0Q29sb3JzPzogQmFieWxvblRleHRzQ29sb3JzSTtcbiAgICB0YWdOYW1lOiBzdHJpbmcgPSAnTGlzQzJJbWdUeHRDdGFWNCc7XG5cbiAgICBzZWxlY3RlZEhvdGVsVHlwZTogc3RyaW5nID0gJyc7XG4gICAgc2VsZWN0ZWREZXN0aW5hdGlvbjogc3RyaW5nID0gJyc7XG4gICAgc2VsZWN0ZWRCcmFuZDogc3RyaW5nID0gJyc7XG4gICAgc2VsZWN0ZWRFeHBlcmllbmNlVHlwZTogc3RyaW5nID0gJyc7XG5cbiAgICBob3RlbFR5cGVPcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgIGRlc3RpbmF0aW9uT3B0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgICBicmFuZE9wdGlvbnM6IHN0cmluZ1tdID0gW107XG4gICAgZXhwZXJpZW5jZVR5cGVPcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgZmlsdGVyTGFiZWxUb1NsdWcgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIGRlc3RpbmF0aW9uTGFiZWxUb1NsdWcgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIGJyYW5kTGFiZWxUb1NsdWcgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gICAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByaXZhdGUgcXBTdWI/OiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBwZW5kaW5nRGVzdGluYXRpb24/OiBzdHJpbmc7XG4gICAgcHVibGljIGhlYWRpbmdUYWdVdGlscyA9IEhlYWRpbmdUYWdVdGlscztcblxuICAgIC8vIEl0ZW1zIGZpbHRyYWRvcyBzaW4gbm9ybWFsaXphciAodXNhZG9zIHBhcmEgbMOzZ2ljYSlcbiAgICBwcml2YXRlIF9maWx0ZXJlZEl0ZW1zUmF3OiBCYWJ5bG9uR2xvYmFsSXRlbVtdID0gW107XG5cbiAgICBwcml2YXRlIGZpbmRBbmRTZWxlY3REZXN0aW5hdGlvbihkZXN0aW5hdGlvbk5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkTmFtZSA9IGRlc3RpbmF0aW9uTmFtZS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcblxuICAgICAgICAvLyBQcmltZXJvIGJ1c2NhciBlbiBlbCBhcnJheSBkZSBzdHJpbmdzIGRlIGRlc3Rpbm9zXG4gICAgICAgIGxldCBmb3VuZCA9IHRoaXMuZGVzdGluYXRpb25PcHRpb25zPy5maW5kKFxuICAgICAgICAgICAgKGRlc3RpbmF0aW9uKSA9PiBkZXN0aW5hdGlvbi50b0xvd2VyQ2FzZSgpLnRyaW0oKSA9PT0gbm9ybWFsaXplZE5hbWVcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbiA9IGZvdW5kO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJlZEl0ZW1zKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXZ1ZWx2ZSBlbCBsYWJlbCBkZWwgYm90w7NuIGVuIGxhIHBvc2ljacOzbiBpbmRleCwgYnVzY2FuZG8gZW4gaXRlbS5idXR0b25zW2luZGV4XS5sYWJlbFxuICAgICAqIHkgc2kgbm8gZXhpc3RlLCBlbiBpdGVtLm11bHRpbWVkaWEuaW1hZ2VuZXNbMF0uYnV0dG9uc1tpbmRleF0ubGFiZWxcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldEJ1dHRvbihcbiAgICAgICAgaXRlbTogQmFieWxvbkdsb2JhbEl0ZW0sXG4gICAgICAgIGluZGV4OiBudW1iZXJcbiAgICApOiBCYWJ5bG9uQnV0dG9uSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBpdGVtPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5idXR0b25zPy5baW5kZXhdID8/XG4gICAgICAgICAgICBpdGVtPy5idXR0b25zPy5baW5kZXhdXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0QnV0dG9uTGFiZWwoaXRlbTogQmFieWxvbkdsb2JhbEl0ZW0sIGluZGV4OiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBidXR0b24gPSB0aGlzLmdldEJ1dHRvbihpdGVtLCBpbmRleCk7XG4gICAgICAgIHJldHVybiBidXR0b24/LmxhYmVsID8/IGJ1dHRvbj8ubmFtZSA/PyBidXR0b24/LnZhcnM7XG4gICAgfVxuXG4gICAgZ2V0QnV0dG9uVXJsKGl0ZW06IEJhYnlsb25HbG9iYWxJdGVtLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRNZW51VXJsKHRoaXMuZ2V0QnV0dG9uKGl0ZW0sIGluZGV4KSk7XG4gICAgfVxuXG4gICAgZ2V0QnV0dG9uTGlua1R5cGUoaXRlbTogQmFieWxvbkdsb2JhbEl0ZW0sIGluZGV4OiBudW1iZXIpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCdXR0b24oaXRlbSwgaW5kZXgpPy5saW5rVHlwZTtcbiAgICB9XG5cbiAgICBnZXRIb3RlbFN0YXJzKGl0ZW06IEJhYnlsb25HbG9iYWxJdGVtKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgcmF3SG90ZWxDYXRlZ29yeSA9IGl0ZW0/LmhvdGVsY2F0ZWdvcnk/LnRvU3RyaW5nKCkudHJpbSgpID8/ICcnO1xuICAgICAgICBjb25zdCBtYXRjaCA9IHJhd0hvdGVsQ2F0ZWdvcnkubWF0Y2goL1xcZCsvKTtcbiAgICAgICAgaWYgKCFtYXRjaCkgcmV0dXJuIDA7XG5cbiAgICAgICAgY29uc3Qgc3RhcnMgPSBOdW1iZXIucGFyc2VJbnQobWF0Y2hbMF0sIDEwKTtcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoc3RhcnMpIHx8IHN0YXJzIDw9IDApIHJldHVybiAwO1xuXG4gICAgICAgIHJldHVybiBNYXRoLm1pbihzdGFycywgNSk7XG4gICAgfVxuXG4gICAgaXNBcGFydG1lbnQoaG90ZWxUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIFV0aWxzLmlzQXBhcnRtZW50KGhvdGVsVHlwZSk7XG4gICAgfVxuXG4gICAgc2hvd0lmU3VwKHZhbHVlPzogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBVdGlscy5zaG93SWZTdXAodmFsdWUpO1xuICAgIH1cblxuICAgIGdldEhvdGVsU3RhckluZGV4ZXMoaXRlbTogQmFieWxvbkdsb2JhbEl0ZW0pOiBudW1iZXJbXSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKFxuICAgICAgICAgICAgeyBsZW5ndGg6IHRoaXMuZ2V0SG90ZWxTdGFycyhpdGVtKSB9LFxuICAgICAgICAgICAgKF8sIGluZGV4KSA9PiBpbmRleFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGJ1aWxkTWVudVVybChpdGVtOiBCYWJ5bG9uQnV0dG9uSSB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghaXRlbT8udXJsKSByZXR1cm4gJyc7XG5cbiAgICAgICAgY29uc3QgYmFzZVVybCA9IGl0ZW0udXJsLnJlcGxhY2UoL1xcLyskLywgJycpO1xuICAgICAgICBjb25zdCBkZXN0aW5hdGlvbiA9IChpdGVtLnZhcnMgPz8gJycpLnRvU3RyaW5nKCkudHJpbSgpO1xuXG4gICAgICAgIGlmICghZGVzdGluYXRpb24pIHJldHVybiBiYXNlVXJsO1xuXG4gICAgICAgIGNvbnN0IHNsdWcgPSBVdGlscy50b1NsdWcoZGVzdGluYXRpb24pO1xuICAgICAgICBpZiAoIXNsdWcpIHJldHVybiBiYXNlVXJsO1xuXG4gICAgICAgIHJldHVybiBgJHtiYXNlVXJsfT9kZXN0aW5hdGlvbnM9JHtkZXN0aW5hdGlvbn1gO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10pIHtcbiAgICAgICAgICAgIGNvbnN0IG9wdHMgPSBidWlsZEZpbHRlck9wdGlvbnMoXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcyA/PyBbXSxcbiAgICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWwxTGlrZU1hcmNhID8/IGZhbHNlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5ob3RlbFR5cGVPcHRpb25zID0gb3B0cy5ob3RlbFR5cGVPcHRpb25zO1xuICAgICAgICAgICAgdGhpcy5kZXN0aW5hdGlvbk9wdGlvbnMgPSBvcHRzLmRlc3RpbmF0aW9uT3B0aW9ucztcblxuICAgICAgICAgICAgLy8gUmVsbGVuYXIgYnJhbmRPcHRpb25zIHVzYW5kbyBnZXRJdGVtQnJhbmQgcGFyYSBjb2hlcmVuY2lhXG4gICAgICAgICAgICBjb25zdCBicmFuZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgICAgIGNvbnN0IGV4cGVyaWVuY2VUeXBlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgKHRoaXMuaXRlbXMgPz8gW10pLmZvckVhY2goKGl0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnJhbmQgPSBnZXRJdGVtQnJhbmQoXG4gICAgICAgICAgICAgICAgICAgIGl0LFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWwxTGlrZU1hcmNhID8/IGZhbHNlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoYnJhbmQpIGJyYW5kcy5hZGQoYnJhbmQpO1xuICAgICAgICAgICAgICAgIGlmIChpdC5ldmVudHMpXG4gICAgICAgICAgICAgICAgICAgIGl0LmV2ZW50cy5mb3JFYWNoKChleHApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgZXhwLm5hbWUgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwLm5hbWUudHJpbSgpICE9PSAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZXJpZW5jZVR5cGVzLmFkZChleHAubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmJyYW5kT3B0aW9ucyA9IEFycmF5LmZyb20oYnJhbmRzKTtcbiAgICAgICAgICAgIHRoaXMuZXhwZXJpZW5jZVR5cGVPcHRpb25zID0gQXJyYXkuZnJvbShleHBlcmllbmNlVHlwZXMpO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJMYWJlbFRvU2x1ZyA9IG9wdHMuZmlsdGVyTGFiZWxUb1NsdWc7XG4gICAgICAgICAgICB0aGlzLmRlc3RpbmF0aW9uTGFiZWxUb1NsdWcgPSBvcHRzLmRlc3RpbmF0aW9uTGFiZWxUb1NsdWc7XG4gICAgICAgICAgICB0aGlzLmJyYW5kTGFiZWxUb1NsdWcgPSBvcHRzLmJyYW5kTGFiZWxUb1NsdWc7XG5cbiAgICAgICAgICAgIC8vIFNvbG8gcmVzZXRlYXIgc2kgbm8gaGF5IHVuIGRlc3Rpbm8gcGVuZGllbnRlIGRlIGxhIFVSTFxuICAgICAgICAgICAgaWYgKCF0aGlzLnBlbmRpbmdEZXN0aW5hdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24gPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQnJhbmQgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRXhwZXJpZW5jZVR5cGUgPSAnJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gU2kgaGF5IHVuIGRlc3Rpbm8gcGVuZGllbnRlIGRlIGxhIFVSTCwgaW50ZW50YSBzZWxlY2Npb25hcmxvIGFob3JhXG4gICAgICAgICAgICAgICAgdGhpcy5maW5kQW5kU2VsZWN0RGVzdGluYXRpb24odGhpcy5wZW5kaW5nRGVzdGluYXRpb24pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBBY3R1YWxpemFyIGl0ZW1zIGZpbHRyYWRvc1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJlZEl0ZW1zKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gU3VzY3JpYmlyc2UgYSBsb3MgY2FtYmlvcyBkZSBxdWVyeSBwYXJhbXNcbiAgICAgICAgdGhpcy5xcFN1YiA9IHRoaXMucm91dGUucXVlcnlQYXJhbU1hcC5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGVzdGluYXRpb25zUGFyYW0gPSBwYXJhbXMuZ2V0KCdkZXN0aW5hdGlvbnMnKTtcblxuICAgICAgICAgICAgaWYgKGRlc3RpbmF0aW9uc1BhcmFtKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjb2RlZERlc3RpbmF0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgZGVjb2RlVVJJQ29tcG9uZW50KGRlc3RpbmF0aW9uc1BhcmFtKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdEZXN0aW5hdGlvbiA9IGRlY29kZWREZXN0aW5hdGlvbjtcblxuICAgICAgICAgICAgICAgIC8vIFNpIHlhIHRlbmVtb3MgZGVzdGluYXRpb25PcHRpb25zLCBidXNjYXIgeSBzZWxlY2Npb25hclxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXN0aW5hdGlvbk9wdGlvbnMgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXN0aW5hdGlvbk9wdGlvbnMubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbmRBbmRTZWxlY3REZXN0aW5hdGlvbihkZWNvZGVkRGVzdGluYXRpb24pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnFwU3ViPy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldnVlbHZlIHVuIGFycmF5IG5vcm1hbGl6YWRvIGRlIEJhYnlsb25HbG9iYWxJdGVtXG4gICAgICovXG4gICAgZ2V0IG5vcm1hbGl6ZWRJdGVtcygpOiBCYWJ5bG9uR2xvYmFsSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZUdsb2JhbEl0ZW1zKHRoaXMuaXRlbXMpO1xuICAgIH1cblxuICAgIGdldEZpcnN0SW1hZ2VCeVRhZyh0YWdOYW1lOiBzdHJpbmcsIGltYWdlbmVzOiBCYWJ5bG9uSW1hZ2VJW10pIHtcbiAgICAgICAgcmV0dXJuIGdldEZpcnN0SW1hZ2VCeVRhZ0Zyb21JbWFnZXMoaW1hZ2VuZXMsIHRhZ05hbWUpO1xuICAgIH1cblxuICAgIGdldCBmaWx0ZXJlZEl0ZW1zKCkge1xuICAgICAgICAvLyBEZXZvbHZlciBsb3MgaXRlbXMgZmlsdHJhZG9zIG5vcm1hbGl6YWRvc1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplR2xvYmFsSXRlbXModGhpcy5fZmlsdGVyZWRJdGVtc1Jhdyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVGaWx0ZXJlZEl0ZW1zKCk6IHZvaWQge1xuICAgICAgICBsZXQgaXRlbXMgPSBmaWx0ZXJlZEl0ZW1zKHtcbiAgICAgICAgICAgIGl0ZW1zOiB0aGlzLml0ZW1zID8/IFtdLFxuICAgICAgICAgICAgc2VsZWN0ZWRIb3RlbFR5cGU6IHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUsXG4gICAgICAgICAgICBzZWxlY3RlZERlc3RpbmF0aW9uOiB0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24sXG4gICAgICAgICAgICBzZWxlY3RlZEJyYW5kOiB0aGlzLnNlbGVjdGVkQnJhbmQsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMUxpa2VNYXJjYTogdGhpcy5hZGRpdGlvbmFsMUxpa2VNYXJjYSA/PyBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRXhwZXJpZW5jZVR5cGUpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gaXRlbXMuZmlsdGVyKChpdGVtKSA9PlxuICAgICAgICAgICAgICAgIGl0ZW0uZXZlbnRzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAoZXhwKSA9PiBleHA/Lm5hbWUgPT09IHRoaXMuc2VsZWN0ZWRFeHBlcmllbmNlVHlwZVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9maWx0ZXJlZEl0ZW1zUmF3ID0gaXRlbXM7XG5cbiAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJPcHRpb25zRHluYW1pYygpO1xuXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGdldCBoYXNBY3RpdmVGaWx0ZXJzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEhvdGVsVHlwZSxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbixcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRCcmFuZCxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFeHBlcmllbmNlVHlwZSxcbiAgICAgICAgXS5zb21lKCh2KSA9PiB2ICYmIHYgIT09ICcnKTtcbiAgICB9XG5cbiAgICBvbkhvdGVsVHlwZUNoYW5nZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUgPSB2YWx1ZSA/PyAnJztcbiAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJlZEl0ZW1zKCk7XG4gICAgICAgIHRoaXMudmFsaWRhdGVDdXJyZW50U2VsZWN0aW9ucygpO1xuICAgIH1cblxuICAgIG9uRGVzdGluYXRpb25DaGFuZ2UodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24gPSB2YWx1ZSA/PyAnJztcbiAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJlZEl0ZW1zKCk7XG4gICAgICAgIHRoaXMudmFsaWRhdGVDdXJyZW50U2VsZWN0aW9ucygpO1xuICAgIH1cblxuICAgIG9uQnJhbmRDaGFuZ2UodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkQnJhbmQgPSB2YWx1ZSA/PyAnJztcbiAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJlZEl0ZW1zKCk7XG4gICAgICAgIHRoaXMudmFsaWRhdGVDdXJyZW50U2VsZWN0aW9ucygpO1xuICAgIH1cblxuICAgIG9uRXhwZXJpZW5jZVR5cGVDaGFuZ2UodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRXhwZXJpZW5jZVR5cGUgPSB2YWx1ZSA/PyAnJztcbiAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJlZEl0ZW1zKCk7XG4gICAgICAgIHRoaXMudmFsaWRhdGVDdXJyZW50U2VsZWN0aW9ucygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVDdXJyZW50U2VsZWN0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uICYmXG4gICAgICAgICAgICAhdGhpcy5kZXN0aW5hdGlvbk9wdGlvbnMuaW5jbHVkZXModGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbiA9ICcnO1xuICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEJyYW5kICYmXG4gICAgICAgICAgICAhdGhpcy5icmFuZE9wdGlvbnMuaW5jbHVkZXModGhpcy5zZWxlY3RlZEJyYW5kKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRCcmFuZCA9ICcnO1xuICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEV4cGVyaWVuY2VUeXBlICYmXG4gICAgICAgICAgICAhdGhpcy5leHBlcmllbmNlVHlwZU9wdGlvbnMuaW5jbHVkZXModGhpcy5zZWxlY3RlZEV4cGVyaWVuY2VUeXBlKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFeHBlcmllbmNlVHlwZSA9ICcnO1xuICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJlZEl0ZW1zKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhckZpbHRlcnMoKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUgPSAnJztcbiAgICAgICAgdGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uID0gJyc7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRCcmFuZCA9ICcnO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRXhwZXJpZW5jZVR5cGUgPSAnJztcbiAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJlZEl0ZW1zKCk7XG4gICAgfVxuXG4gICAgdHJhY2tGaWx0ZXIoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gICAgdHJhY2tPcHRpb24oaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gICAgdHJhY2tPZmZlcihpdGVtOiBCYWJ5bG9uR2xvYmFsSXRlbSwgaW5kZXg6IG51bWJlcik6IHN0cmluZyB8IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpdGVtPy5pZCA/PyBpdGVtPy50ZXh0cz8ubmFtZSA/PyBpdGVtPy50ZXh0cz8udGl0bGUgPz8gaW5kZXg7XG4gICAgfVxuICAgIHByaXZhdGUgdXBkYXRlRmlsdGVyT3B0aW9uc0R5bmFtaWMoKTogdm9pZCB7XG4gICAgICAgIC8vIDEuIERFU1RJTk9TOiBDYWxjdWxhbW9zIHVzYW5kbyB0dSBmdW5jacOzbiBvcmlnaW5hbCBzb2JyZSBsb3Mgw610ZW1zIGZpbHRyYWRvcyBwb3IgZWwgcmVzdG8gZGUgY3JpdGVyaW9zXG4gICAgICAgIGNvbnN0IGl0ZW1zRm9yRGVzdGluYXRpb25zID0gdGhpcy5maWx0ZXJJdGVtc0ZvclNjb3BlKHtcbiAgICAgICAgICAgIGlnbm9yZURlc3RpbmF0aW9uOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZGVzdE9wdHMgPSBidWlsZEZpbHRlck9wdGlvbnMoXG4gICAgICAgICAgICBpdGVtc0ZvckRlc3RpbmF0aW9ucyxcbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbDFMaWtlTWFyY2EgPz8gZmFsc2VcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5kZXN0aW5hdGlvbk9wdGlvbnMgPSBkZXN0T3B0cy5kZXN0aW5hdGlvbk9wdGlvbnM7XG5cbiAgICAgICAgLy8gMi4gTUFSQ0FTIC8gQUxPSkFNSUVOVE86IENhbGN1bGFtb3MgdXNhbmRvIHR1IHV0aWxpZGFkIG9maWNpYWwgZ2V0SXRlbUJyYW5kXG4gICAgICAgIGNvbnN0IGl0ZW1zRm9yQnJhbmRzID0gdGhpcy5maWx0ZXJJdGVtc0ZvclNjb3BlKHtcbiAgICAgICAgICAgIGlnbm9yZUJyYW5kOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgYnJhbmRTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgaXRlbXNGb3JCcmFuZHMuZm9yRWFjaCgoaXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJyYW5kID0gZ2V0SXRlbUJyYW5kKGl0LCB0aGlzLmFkZGl0aW9uYWwxTGlrZU1hcmNhID8/IGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChicmFuZCkgYnJhbmRTZXQuYWRkKGJyYW5kKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYnJhbmRPcHRpb25zID0gQXJyYXkuZnJvbShicmFuZFNldCk7XG5cbiAgICAgICAgLy8gMy4gRVhQRVJJRU5DSUFTOiBDYWxjdWxhbW9zIGxleWVuZG8gbG9zIGV2ZW50b3MgcmVhbGVzIGRlIGxvcyBob3RlbGVzIGNvbXBhdGlibGVzW2NpdGU6IDNdXG4gICAgICAgIGNvbnN0IGl0ZW1zRm9yRXhwZXJpZW5jZXMgPSB0aGlzLmZpbHRlckl0ZW1zRm9yU2NvcGUoe1xuICAgICAgICAgICAgaWdub3JlRXhwZXJpZW5jZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGV4cFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBpdGVtc0ZvckV4cGVyaWVuY2VzLmZvckVhY2goKGl0KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXQuZXZlbnRzKSB7XG4gICAgICAgICAgICAgICAgaXQuZXZlbnRzLmZvckVhY2goKGV4cCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBleHAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBleHAubmFtZSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cC5uYW1lLnRyaW0oKSAhPT0gJydcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBleHBTZXQuYWRkKGV4cC5uYW1lLnRyaW0oKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZXhwZXJpZW5jZVR5cGVPcHRpb25zID0gQXJyYXkuZnJvbShleHBTZXQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbHRyYSBsb3Mgw610ZW1zIHJlc3BldGFuZG8gVE9ET1MgbG9zIHNlbGVjdG9yZXMgYWN0aXZvcywgRVhDRVBUTyBlbCBxdWUgZXN0YW1vc1xuICAgICAqIGNhbGN1bGFuZG8gZW4gZXNlIG1vbWVudG8gcGFyYSBldml0YXIgcXVlIHNlIGJvcnJlIGEgc8OtIG1pc21vLlxuICAgICAqL1xuICAgIHByaXZhdGUgZmlsdGVySXRlbXNGb3JTY29wZShpZ25vcmU6IHtcbiAgICAgICAgaWdub3JlSG90ZWxUeXBlPzogYm9vbGVhbjtcbiAgICAgICAgaWdub3JlRGVzdGluYXRpb24/OiBib29sZWFuO1xuICAgICAgICBpZ25vcmVCcmFuZD86IGJvb2xlYW47XG4gICAgICAgIGlnbm9yZUV4cGVyaWVuY2U/OiBib29sZWFuO1xuICAgIH0pOiBCYWJ5bG9uR2xvYmFsSXRlbVtdIHtcbiAgICAgICAgLy8gRWplY3V0YW1vcyB0dSBmaWx0cm8gb3JpZ2luYWwgZGUgdXRpbHNbY2l0ZTogM11cbiAgICAgICAgbGV0IGl0ZW1zID0gZmlsdGVyZWRJdGVtcyh7XG4gICAgICAgICAgICBpdGVtczogdGhpcy5pdGVtcyA/PyBbXSxcbiAgICAgICAgICAgIHNlbGVjdGVkSG90ZWxUeXBlOiBpZ25vcmUuaWdub3JlSG90ZWxUeXBlXG4gICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgIDogdGhpcy5zZWxlY3RlZEhvdGVsVHlwZSxcbiAgICAgICAgICAgIHNlbGVjdGVkRGVzdGluYXRpb246IGlnbm9yZS5pZ25vcmVEZXN0aW5hdGlvblxuICAgICAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbixcbiAgICAgICAgICAgIHNlbGVjdGVkQnJhbmQ6IGlnbm9yZS5pZ25vcmVCcmFuZCA/ICcnIDogdGhpcy5zZWxlY3RlZEJyYW5kLFxuICAgICAgICAgICAgYWRkaXRpb25hbDFMaWtlTWFyY2E6IHRoaXMuYWRkaXRpb25hbDFMaWtlTWFyY2EgPz8gZmFsc2UsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEFwbGljYW1vcyBlbCBmaWx0cm8gZGUgZXhwZXJpZW5jaWFzIFPDk0xPIHNpIG5vIGxvIGVzdGFtb3MgaWdub3JhbmRvIGV4cGzDrWNpdGFtZW50ZVtjaXRlOiAzXVxuICAgICAgICBpZiAoIWlnbm9yZS5pZ25vcmVFeHBlcmllbmNlICYmIHRoaXMuc2VsZWN0ZWRFeHBlcmllbmNlVHlwZSkge1xuICAgICAgICAgICAgaXRlbXMgPSBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgaXRlbS5ldmVudHM/LnNvbWUoXG4gICAgICAgICAgICAgICAgICAgIChleHApID0+IGV4cD8ubmFtZSA9PT0gdGhpcy5zZWxlY3RlZEV4cGVyaWVuY2VUeXBlXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cIm1kbC1MaXNDMUltZ1R4dFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtZGwtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLXRvcFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoaGVhZGluZ1RhZ1V0aWxzLmhhc0hlYWRpbmdDb250ZW50KHRleHRzLCAndGl0bGUnLCB0ZXh0cz8udGl0bGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxsaWItYmFieWxvbi1keW5hbWljLWhlYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICBbdGFnXT1cImhlYWRpbmdUYWdVdGlscy5nZXRIZWFkaW5nVGFnKHRleHRzLCAndGl0bGUnLCAnaDEnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInRleHRDb2xvcnM/LnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzcz1cIm0tdGl0dWxvXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJoZWFkaW5nVGFnVXRpbHMuZ2V0SGVhZGluZ0NvbnRlbnQodGV4dHMsICd0aXRsZScsIHRleHRzPy50aXRsZSlcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItYmFieWxvbi1keW5hbWljLWhlYWRpbmc+XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGlmICh0ZXh0cz8uc3VidGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tc3VidGl0dWxvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInRleHRzPy5zdWJ0aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIEBpZiAoc2hvd0ZpbHRlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RvcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJzZWxlY3QtZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICh0ZXh0cz8ubWFyY2EpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsZWdlbmQ+e3sgdGV4dHM/Lm1hcmNhIH19PC9sZWdlbmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEJyYW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQnJhbmRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj57eyB0ZXh0cz8ubWFyY2EgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdCBvZiBicmFuZE9wdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgdHJhY2tPcHRpb24oJGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwib3B0XCI+e3sgb3B0IH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJzZWxlY3QtZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICh0ZXh0cz8uZGVzdGluYXRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGVnZW5kPnt7IHRleHRzPy5kZXN0aW5hdGlvbnMgfX08L2xlZ2VuZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRGVzdGluYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZXN0aW5hdGlvbkNoYW5nZSgkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdGV4dHM/LmRlc3RpbmF0aW9ucyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHQgb2YgZGVzdGluYXRpb25PcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIHRyYWNrT3B0aW9uKCRpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdFwiPnt7IG9wdCB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChleHBlcmllbmNlVHlwZU9wdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJzZWxlY3QtZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsZWdlbmQ+e3sgdGV4dHM/LmV2ZW50cyB9fTwvbGVnZW5kPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRFeHBlcmllbmNlVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRXhwZXJpZW5jZVR5cGVDaGFuZ2UoJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0cz8uZXZlbnRzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdCBvZiBleHBlcmllbmNlVHlwZU9wdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIHRyYWNrT3B0aW9uKCRpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwib3B0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1pdGVtIG0tb3BlblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWxpc3RhZG9cIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBmaWx0ZXJlZEl0ZW1zOyB0cmFjayBpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1pdGVtLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJnZXRCdXR0b25VcmwoaXRlbSwgMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlua1R5cGVdPVwiZ2V0QnV0dG9uTGlua1R5cGUoaXRlbSwgMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0taW1hZ2VuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEZpcnN0SW1hZ2VCeVRhZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgPz8gW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApID8/IGl0ZW0/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgaW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc/LmltZz8uc3JjIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFJQUFBQUFBQVAvLy95SDVCQUVBQUFBQUxBQUFBQUFCQUFFQUFBSUJSQUE3J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hbHRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc/LmltZz8uYWx0ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbT8udGV4dHM/LnRpdGxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udGV4dHM/Lm5hbWUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0/LnRleHRzPy50aXRsZSB8fCBpdGVtPy50ZXh0cz8ubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLXRpdHVsb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udGV4dHM/LnRpdGxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnRleHRzPy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2gyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tc3VidGl0dWxvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIml0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3J5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGdldEhvdGVsU3RhcnMoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGlzQXBhcnRtZW50KGl0ZW0/LmhvdGVsdHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRIb3RlbFN0YXJzKGl0ZW0pICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIGVzdHJlbGxhcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWtleXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhciBvZiBnZXRIb3RlbFN0YXJJbmRleGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayBzdGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMyAxM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTAuMTQ2Mjk2IDQuMjY0NzlMMS4xNDAxNSAyLjAxNjkyQzEuMzEyODkgMS42MjU1OSAxLjYyNTU5IDEuMzEyODkgMi4wMTY5MiAxLjE0MDE1TDQuMjY0NzkgMC4xNDYyOTdDNC41ODE3NCAwLjAwNjQxODI2IDQuOTMzNTYgLTAuMDM0Mzk0NCA1LjI3NDEyIDAuMDI5MjEyN0M1LjYxNDY3IDAuMDkyODE5OCA1LjkyODA1IDAuMjU3ODc2IDYuMTczMTQgMC41MDI3M0w3Ljk0NzUgMi4yNzgzOUM4LjE2MDYgMi40OTE1NSA4LjMxMzg4IDIuNzU3MDEgOC4zOTE5NyAzLjA0ODEzQzguNDcwMDYgMy4zMzkyNSA4LjQ3MDIgMy42NDU3OCA4LjM5MjM5IDMuOTM2OThMNy45MzU3OSA1LjY0MTA5TDEyLjg2NiAxMC41NzEzQzEyLjkwODUgMTAuNjEzNiAxMi45NDIyIDEwLjY2MzkgMTIuOTY1MiAxMC43MTkzQzEyLjk4ODIgMTAuNzc0NiAxMyAxMC44MzQgMTMgMTAuODkzOVYxMi41NDQ3QzEyLjk5OTMgMTIuNjY1MiAxMi45NTExIDEyLjc4MDcgMTIuODY1OSAxMi44NjU5QzEyLjc4MDcgMTIuOTUxMSAxMi42NjUyIDEyLjk5OTMgMTIuNTQ0NyAxM0gxMC44OTM5QzEwLjc5MjYgMTIuOTk5OCAxMC42OTQyIDEyLjk2NTkgMTAuNjE0MiAxMi45MDM4QzEwLjUzNDEgMTIuODQxNiAxMC40NzcgMTIuNzU0NyAxMC40NTE2IDEyLjY1NjZMMTAuMjA0NSAxMS42Nzk2TDkuMzMwMyAxMS41MTMxQzkuMjQzMjIgMTEuNDk2OCA5LjE2MjgyIDExLjQ1NTMgOS4wOTkwMyAxMS4zOTM4QzkuMDM1MjMgMTEuMzMyMyA4Ljk5MDgyIDExLjI1MzUgOC45NzEyNyAxMS4xNjcxTDguNzMzMjEgMTAuMTE3M0w3Ljg5MDI2IDEwLjAzNjdDNy43ODQ3OSAxMC4wMjc0IDcuNjg2MDggOS45ODA4IDcuNjExODggOS45MDUyOEw1LjY0MTA5IDcuOTM1NzlMMy45MzY5NyA4LjM5MjM5QzMuNjQ1OCA4LjQ3MDQ3IDMuMzM5MTkgOC40NzA0NiAzLjA0ODAyIDguMzkyMzZDMi43NTY4NSA4LjMxNDI2IDIuNDkxNCA4LjE2MDgyIDIuMjc4MzkgNy45NDc1TDAuNTAyNzI5IDYuMTczMTRDMC4yNTc4NzUgNS45MjgwNSAwLjA5MjgyMDIgNS42MTQ2NyAwLjAyOTIxMyA1LjI3NDEyQy0wLjAzNDM5NDMgNC45MzM1NyAwLjAwNjQxNzI3IDQuNTgxNzQgMC4xNDYyOTYgNC4yNjQ3OVpNMy42NzAzIDUuMDg5NTNDMy44MTA2MSA1LjIyOTY4IDMuOTg5MzIgNS4zMjUwOCA0LjE4Mzg1IDUuMzYzNjlDNC4zNzgzNyA1LjQwMjI5IDQuNTc5OTcgNS4zODIzNiA0Ljc2MzE3IDUuMzA2NDFDNC45NDYzNiA1LjIzMDQ3IDUuMTAyOTQgNS4xMDE5MSA1LjIxMzA5IDQuOTM3QzUuMzIzMjQgNC43NzIxIDUuMzgyMDMgNC41NzgyMyA1LjM4MjAzIDQuMzc5OTFDNS4zODIwMyA0LjE4MTYgNS4zMjMyNCAzLjk4NzczIDUuMjEzMDkgMy44MjI4M0M1LjEwMjk0IDMuNjU3OTIgNC45NDYzNiAzLjUyOTM2IDQuNzYzMTcgMy40NTM0MkM0LjU3OTk3IDMuMzc3NDcgNC4zNzgzNyAzLjM1NzU0IDQuMTgzODUgMy4zOTYxNEMzLjk4OTMyIDMuNDM0NzUgMy44MTA2MSAzLjUzMDE1IDMuNjcwMyAzLjY3MDNDMy41NzY4OSAzLjc2MzM2IDMuNTAyNzcgMy44NzM5NSAzLjQ1MjE5IDMuOTk1NzJDMy40MDE2MiA0LjExNzUgMy4zNzU1OCA0LjI0ODA2IDMuMzc1NTggNC4zNzk5MUMzLjM3NTU4IDQuNTExNzcgMy40MDE2MiA0LjY0MjMzIDMuNDUyMTkgNC43NjQxMUMzLjUwMjc3IDQuODg1ODggMy41NzY4OSA0Ljk5NjQ3IDMuNjcwMyA1LjA4OTUzWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMzOTM2MzdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tc3RhcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRIb3RlbFN0YXJzKGl0ZW0pICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIGVzdHJlbGxhcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXIgb2YgZ2V0SG90ZWxTdGFySW5kZXhlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgc3RhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDExXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYgMEw3LjQxNiA0LjJIMTJMOC4yOTIgNi44TDkuNzA4IDExTDYgOC40TDIuMjkyIDExTDMuNzA4IDYuOEwwIDQuMkg0LjU4NEw2IDBaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMzkzNjM3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1cC1jYXRlZ29yeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNob3dJZlN1cChpdGVtPy5ob3RlbGNhdGVnb3J5KSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChnZXRCdXR0b25MYWJlbChpdGVtLCAwKTsgYXMgYnV0dG9uMUxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1idXR0b24xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJnZXRCdXR0b25VcmwoaXRlbSwgMClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJnZXRCdXR0b25MaW5rVHlwZShpdGVtLCAwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYnV0dG9uMUxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGdldEJ1dHRvbkxhYmVsKGl0ZW0sIDEpOyBhcyBidXR0b24yTGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLWJ1dHRvbjJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImdldEJ1dHRvblVybChpdGVtLCAxKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cImdldEJ1dHRvbkxpbmtUeXBlKGl0ZW0sIDEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBidXR0b24yTGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICBAaWYgKCFmaWx0ZXJlZEl0ZW1zPy5sZW5ndGggJiYgdGV4dHM/Lm5vdEZvdW5kKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9vdFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS10ZXh0b1wiIFtpbm5lckhUTUxdPVwidGV4dHM/Lm5vdEZvdW5kXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9zZWN0aW9uPlxuIl19
|