ctt-babylon 0.26.25 → 0.26.26
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/core/babylon-booking-banner/babylon-booking-banner.component.mjs +2 -2
- package/esm2022/lib/components/core/babylon-global-badge/babylon-global-badge.component.mjs +3 -3
- package/esm2022/lib/components/core/babylon-list-img/babylon-list-img.component.mjs +8 -5
- package/esm2022/lib/components/core/babylon-sli-c3-svg-vid-cta/babylon-sli-c3-svg-vid-cta.component.mjs +9 -3
- package/esm2022/lib/components/core/babylon-sli-c3-txt-img-cta/babylon-sli-c3-txt-img-cta.component.mjs +2 -2
- package/esm2022/lib/components/external/core/c4-me-txt-svg-cta/c4-me-txt-svg-cta.component.mjs +13 -13
- package/esm2022/lib/components/external/core/lis-c3-fil-img-tx/lis-c3-fil-img-tx.component.mjs +53 -35
- package/esm2022/lib/components/external/core/modulo-menu-home/modulo-menu-home.component.mjs +10 -10
- package/esm2022/lib/components/external/core/top-c2-img-txt/top-c2-img-txt.component.mjs +3 -3
- package/esm2022/lib/directives/babylon-galleries/babylon-light-gallery.directive.mjs +5 -3
- package/esm2022/lib/directives/sliders/slick-init.directive.mjs +35 -19
- package/esm2022/lib/directives/sliders/swiper-init.directive.mjs +3 -3
- package/fesm2022/ctt-babylon.mjs +2 -2
- package/fesm2022/ctt-babylon.mjs.map +1 -1
- package/lib/components/core/babylon-list-img/babylon-list-img.component.d.ts +1 -0
- package/lib/components/core/babylon-sli-c3-svg-vid-cta/babylon-sli-c3-svg-vid-cta.component.d.ts +4 -2
- package/lib/components/external/core/lis-c3-fil-img-tx/lis-c3-fil-img-tx.component.d.ts +1 -1
- package/lib/directives/sliders/slick-init.directive.d.ts +2 -1
- package/lib/directives/sliders/swiper-init.directive.d.ts +1 -1
- package/package.json +1 -1
|
@@ -6,12 +6,27 @@ export class SlickInitDirective {
|
|
|
6
6
|
this.host = host;
|
|
7
7
|
this.platformId = platformId;
|
|
8
8
|
this.zone = zone;
|
|
9
|
+
// 1. Añadimos flag de seguridad y array de limpiezas
|
|
10
|
+
this.isDestroyed = false;
|
|
11
|
+
this.cleanups = [];
|
|
9
12
|
}
|
|
10
13
|
async ngAfterViewInit() {
|
|
11
14
|
if (!isPlatformBrowser(this.platformId))
|
|
12
15
|
return;
|
|
13
|
-
|
|
16
|
+
const parent_V = this.host.nativeElement;
|
|
17
|
+
// 🛑 CORTAFUEGOS ANTI-COLISIÓN:
|
|
18
|
+
// Si detectamos que este componente tiene Swiper, matamos Slick
|
|
19
|
+
// antes de que nazca para no corromper el DOM.
|
|
20
|
+
if (parent_V.hasAttribute('appSwiperInit') ||
|
|
21
|
+
parent_V.querySelector('.swiper') ||
|
|
22
|
+
parent_V.querySelector('.swiper-wrapper')) {
|
|
23
|
+
this.isDestroyed = true;
|
|
24
|
+
return; // Abortamos silenciosamente
|
|
25
|
+
}
|
|
14
26
|
const slickReady = await this.waitForSlick();
|
|
27
|
+
// 2. ¡CORTAFUEGOS! Si el componente se destruyó mientras esperábamos, abortamos.
|
|
28
|
+
if (this.isDestroyed)
|
|
29
|
+
return;
|
|
15
30
|
if (!slickReady || typeof $ === 'undefined' || !$.fn || !$.fn.slick) {
|
|
16
31
|
console.warn('[SlickInitDirective] jQuery/Slick no están disponibles');
|
|
17
32
|
return;
|
|
@@ -80,8 +95,8 @@ export class SlickInitDirective {
|
|
|
80
95
|
"<button type='button' class='slick-next icon-large'><svg aria-hidden='true' focusable='false'><use href='/assets/babylon/svg/icon-arrow-large.svg#icon-arrow-large'></use></svg></button>";
|
|
81
96
|
}
|
|
82
97
|
const updateVerticalHeight = () => {
|
|
83
|
-
if (!isPlatformBrowser(this.platformId))
|
|
84
|
-
return;
|
|
98
|
+
if (!isPlatformBrowser(this.platformId) || this.isDestroyed)
|
|
99
|
+
return; // Chequeo extra
|
|
85
100
|
const $el = $(sliderSelector);
|
|
86
101
|
if (window.innerWidth >= 541) {
|
|
87
102
|
let maxH = 0;
|
|
@@ -101,17 +116,17 @@ export class SlickInitDirective {
|
|
|
101
116
|
if (vertical) {
|
|
102
117
|
$(sliderSelector).on('setPosition', updateVerticalHeight);
|
|
103
118
|
$(sliderSelector).on('init', () => setTimeout(updateVerticalHeight, 0));
|
|
104
|
-
|
|
105
|
-
window.addEventListener('resize', this.resizeHandler, {
|
|
119
|
+
window.addEventListener('resize', updateVerticalHeight, {
|
|
106
120
|
passive: true,
|
|
107
121
|
});
|
|
122
|
+
// 3. Registramos la limpieza usando el array
|
|
123
|
+
this.cleanups.push(() => window.removeEventListener('resize', updateVerticalHeight));
|
|
108
124
|
}
|
|
109
|
-
// 🔥 FUNCIÓN DE INICIALIZACIÓN PROTEGIDA
|
|
110
125
|
const startSlick = () => {
|
|
111
|
-
|
|
126
|
+
if (this.isDestroyed)
|
|
127
|
+
return; // Evitar iniciar si se destruyó
|
|
112
128
|
const childSlides = Array.from(sliderSelector.children).filter((node) => !node.classList.contains('slick-list') &&
|
|
113
129
|
node.nodeType === 1);
|
|
114
|
-
// Si aún no hay hijos (API pendiente), esperamos a que Angular los renderice
|
|
115
130
|
if (childSlides.length === 0) {
|
|
116
131
|
this.observeChildren(sliderSelector, startSlick);
|
|
117
132
|
return;
|
|
@@ -203,11 +218,11 @@ export class SlickInitDirective {
|
|
|
203
218
|
}
|
|
204
219
|
};
|
|
205
220
|
toggleBotonActivo();
|
|
206
|
-
|
|
207
|
-
window.addEventListener('resize', resizeHandlerLocal, {
|
|
221
|
+
window.addEventListener('resize', toggleBotonActivo, {
|
|
208
222
|
passive: true,
|
|
209
223
|
});
|
|
210
|
-
|
|
224
|
+
// 4. Registramos el segundo evento de limpieza correctamente
|
|
225
|
+
this.cleanups.push(() => window.removeEventListener('resize', toggleBotonActivo));
|
|
211
226
|
});
|
|
212
227
|
};
|
|
213
228
|
startSlick();
|
|
@@ -229,18 +244,20 @@ export class SlickInitDirective {
|
|
|
229
244
|
this.observer.observe(target, { childList: true });
|
|
230
245
|
}
|
|
231
246
|
ngOnDestroy() {
|
|
247
|
+
// 5. ¡Marcamos como destruido inmediatamente!
|
|
248
|
+
this.isDestroyed = true;
|
|
232
249
|
if (this.observer) {
|
|
233
250
|
this.observer.disconnect();
|
|
234
251
|
this.observer = undefined;
|
|
235
252
|
}
|
|
253
|
+
// 6. Ejecutamos todas las limpiezas de eventos pendientes
|
|
254
|
+
this.cleanups.forEach((fn) => fn());
|
|
255
|
+
this.cleanups = [];
|
|
236
256
|
if (!isPlatformBrowser(this.platformId))
|
|
237
257
|
return;
|
|
238
258
|
if (typeof $ === 'undefined' || !$.fn?.slick)
|
|
239
259
|
return;
|
|
240
|
-
|
|
241
|
-
if (this.sliderEl &&
|
|
242
|
-
jQueryExists &&
|
|
243
|
-
$(this.sliderEl).hasClass('slick-initialized')) {
|
|
260
|
+
if (this.sliderEl && $(this.sliderEl).hasClass('slick-initialized')) {
|
|
244
261
|
try {
|
|
245
262
|
$(this.sliderEl).slick('unslick');
|
|
246
263
|
}
|
|
@@ -248,9 +265,6 @@ export class SlickInitDirective {
|
|
|
248
265
|
console.error('Error al destruir slick', e);
|
|
249
266
|
}
|
|
250
267
|
}
|
|
251
|
-
if (this.resizeHandler) {
|
|
252
|
-
window.removeEventListener('resize', this.resizeHandler);
|
|
253
|
-
}
|
|
254
268
|
}
|
|
255
269
|
waitForSlick(timeoutMs = 8000, stepMs = 100) {
|
|
256
270
|
if (!isPlatformBrowser(this.platformId))
|
|
@@ -259,6 +273,8 @@ export class SlickInitDirective {
|
|
|
259
273
|
return new Promise((resolve) => {
|
|
260
274
|
this.zone.runOutsideAngular(() => {
|
|
261
275
|
const check = () => {
|
|
276
|
+
if (this.isDestroyed)
|
|
277
|
+
return resolve(false); // Detener chequeo si se destruyó
|
|
262
278
|
if (typeof $ !== 'undefined' && $.fn && $.fn.slick) {
|
|
263
279
|
return resolve(true);
|
|
264
280
|
}
|
|
@@ -285,4 +301,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
285
301
|
type: Inject,
|
|
286
302
|
args: [PLATFORM_ID]
|
|
287
303
|
}] }, { type: i0.NgZone }] });
|
|
288
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2staW5pdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvZGlyZWN0aXZlcy9zbGlkZXJzL3NsaWNrLWluaXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFFSCxTQUFTLEVBRVQsTUFBTSxFQUdOLFdBQVcsR0FDZCxNQUFNLGVBQWUsQ0FBQzs7QUFRdkIsTUFBTSxPQUFPLGtCQUFrQjtJQUszQixZQUNZLElBQTZCLEVBQ1IsVUFBa0IsRUFDdkMsSUFBWTtRQUZaLFNBQUksR0FBSixJQUFJLENBQXlCO1FBQ1IsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUN2QyxTQUFJLEdBQUosSUFBSSxDQUFRO0lBQ3JCLENBQUM7SUFFSixLQUFLLENBQUMsZUFBZTtRQUNqQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFFaEQsOENBQThDO1FBQzlDLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTdDLElBQUksQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLEtBQUssV0FBVyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFO1lBQ2pFLE9BQU8sQ0FBQyxJQUFJLENBQ1Isd0RBQXdELENBQzNELENBQUM7WUFDRixPQUFPO1NBQ1Y7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN2QyxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxNQUFNLE9BQU8s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Q0FBQztxQkFDekI7b0JBQ0QsVUFBVSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDOUIsQ0FBQyxDQUFDO2dCQUNGLEtBQUssRUFBRSxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBalVRLGtCQUFrQiw0Q0FPZixXQUFXO21HQVBkLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFKOUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsa0NBQWtDO29CQUM1QyxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OzBCQVFRLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBQTEFURk9STV9JRCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmRlY2xhcmUgY29uc3QgJDogYW55O1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJy5qcy1hY3RpdmUtc2xpZGVyLFthcHBTbGlja0luaXRdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTbGlja0luaXREaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVzaXplSGFuZGxlcj86ICgpID0+IHZvaWQ7XG4gICAgcHJpdmF0ZSBzbGlkZXJFbD86IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgb2JzZXJ2ZXI/OiBNdXRhdGlvbk9ic2VydmVyO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaG9zdDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogb2JqZWN0LFxuICAgICAgICBwcml2YXRlIHpvbmU6IE5nWm9uZVxuICAgICkge31cblxuICAgIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG5cbiAgICAgICAgLy8gMSkgRXNwZXJhIGEgcXVlIGpxdWVyeSArIHNsaWNrIGVzdMOpbiBsaXN0b3NcbiAgICAgICAgY29uc3Qgc2xpY2tSZWFkeSA9IGF3YWl0IHRoaXMud2FpdEZvclNsaWNrKCk7XG5cbiAgICAgICAgaWYgKCFzbGlja1JlYWR5IHx8IHR5cGVvZiAkID09PSAndW5kZWZpbmVkJyB8fCAhJC5mbiB8fCAhJC5mbi5zbGljaykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICdbU2xpY2tJbml0RGlyZWN0aXZlXSBqUXVlcnkvU2xpY2sgbm8gZXN0w6FuIGRpc3BvbmlibGVzJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBnZXQgPSAobmFtZTogc3RyaW5nKSA9PiBwYXJlbnQuZ2V0QXR0cmlidXRlKG5hbWUpO1xuICAgICAgICBjb25zdCBnZXRCb29sID0gKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgdiA9IGdldChuYW1lKTtcbiAgICAgICAgICAgIHJldHVybiB2ID09PSAndHJ1ZScgfHwgdiA9PT0gJzEnIHx8IHYgPT09ICcnIHx8ICh2IGFzIGFueSkgPT09IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGdldE51bSA9IChuYW1lOiBzdHJpbmcsIGRlZiA9IDApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSBOdW1iZXIoZ2V0KG5hbWUpKTtcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUodikgPyB2IDogZGVmO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHNsaWRlck5hbWUgPSBnZXQoJ2RhdGEtc2xpZGVyX25hbWUnKSB8fCAnJztcbiAgICAgICAgY29uc3Qgc2xpZGVyU3BlZWQgPSBnZXROdW0oJ2RhdGEtc2xpZGVyX3NwZWVkJywgNzUwKTtcbiAgICAgICAgY29uc3Qgc2hvd0J0bnMgPSBnZXRCb29sKCdkYXRhLXNsaWRlcl9zaG93YnRucycpO1xuICAgICAgICBjb25zdCBzaG93RG90cyA9IGdldEJvb2woJ2RhdGEtc2xpZGVyX3Nob3dkb3RzJyk7XG4gICAgICAgIGNvbnN0IGZhZGUgPSBnZXRCb29sKCdkYXRhLXNsaWRlcl9mYWRlJyk7XG4gICAgICAgIGNvbnN0IGNlbnRlck1vZGUgPSBnZXRCb29sKCdkYXRhLXNsaWRlcl9jZW50ZXJtb2RlJyk7XG4gICAgICAgIGNvbnN0IGF1dG9wbGF5ID0gZ2V0Qm9vbCgnZGF0YS1zbGlkZXJfYXV0b3BsYXknKTtcbiAgICAgICAgY29uc3QgcmF3U3BlZWQgPSBnZXQoJ2RhdGEtc2xpZGVyX2F1dG9wbGF5X3NwZWVkJyk7XG4gICAgICAgIGNvbnN0IGF1dG9wbGF5U3BlZWQgPSByYXdTcGVlZCA/IE51bWJlcihyYXdTcGVlZCkgOiA1MDAwO1xuICAgICAgICBjb25zdCBzbGlkZXNQYyA9IGdldE51bSgnZGF0YS1zbGlkZXNfcGMnLCAxKTtcbiAgICAgICAgY29uc3Qgc2xpZGVzTGFwdG9wID0gZ2V0TnVtKCdkYXRhLXNsaWRlc19sYXB0b3AnKSB8fCBzbGlkZXNQYztcbiAgICAgICAgY29uc3Qgc2xpZGVzVGFibGV0ID0gZ2V0TnVtKCdkYXRhLXNsaWRlc190YWJsZXQnKSB8fCBzbGlkZXNMYXB0b3A7XG4gICAgICAgIGNvbnN0IHNsaWRlc01vYmlsZSA9IGdldE51bSgnZGF0YS1zbGlkZXNfbW9iaWxlJykgfHwgc2xpZGVzVGFibGV0O1xuICAgICAgICBjb25zdCBzbGlkZXNNb2JpbGVTbWFsbCA9XG4gICAgICAgICAgICBnZXROdW0oJ2RhdGEtc2xpZGVzX21vYmlsZV9zbWFsbCcpIHx8IHNsaWRlc01vYmlsZTtcbiAgICAgICAgY29uc3Qgc2xpZGVzTW9iaWxlWFNtYWxsID1cbiAgICAgICAgICAgIGdldE51bSgnZGF0YS1zbGlkZXNfbW9iaWxlX3hzbWFsbCcpIHx8IHNsaWRlc01vYmlsZVNtYWxsO1xuICAgICAgICBjb25zdCBpbmZpbml0ZSA9IGdldEJvb2woJ2RhdGEtc2xpZGVzX2luZmluaXRlJyk7XG5cbiAgICAgICAgbGV0IHJvd3NQYyA9IGdldE51bSgnZGF0YS1zbGlkZXNyb3dzX3BjJywgMSk7XG4gICAgICAgIGxldCByb3dzTGFwdG9wID0gZ2V0TnVtKCdkYXRhLXNsaWRlc3Jvd3NfbGFwdG9wJywgMSk7XG4gICAgICAgIGxldCByb3dzVGFibGV0ID0gZ2V0TnVtKCdkYXRhLXNsaWRlc3Jvd3NfdGFibGV0JywgMSk7XG4gICAgICAgIGxldCByb3dzTW9iaWxlID0gZ2V0TnVtKCdkYXRhLXNsaWRlc3Jvd3NfbW9iaWxlJywgMSk7XG4gICAgICAgIGxldCByb3dzTW9iaWxlU21hbGwgPSBnZXROdW0oJ2RhdGEtc2xpZGVzcm93c19tb2JpbGVfc21hbGwnLCAxKTtcbiAgICAgICAgbGV0IHJvd3NNb2JpbGVYU21hbGwgPSBnZXROdW0oJ2RhdGEtc2xpZGVzcm93c19tb2JpbGVfeHNtYWxsJywgMSk7XG5cbiAgICAgICAgY29uc3QgYXNOYXZGb3IgPSBnZXQoJ2RhdGEtc2xpZGVyX2FzTmF2Rm9yJykgfHwgdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCB2ZXJ0aWNhbCA9IGdldEJvb2woJ2RhdGEtc2xpZGVyX3ZlcnRpY2FsJyk7XG4gICAgICAgIGNvbnN0IGFkYXB0aXZlSGVpZ2h0ID0gZ2V0Qm9vbCgnZGF0YS1zbGlkZXJfYWRhcHRpdmVfaGVpZ2h0Jyk7XG4gICAgICAgIGNvbnN0IHBhdXNlID0gZ2V0Qm9vbCgnZGF0YS1zbGlkZXJfcGF1c2UnKTtcbiAgICAgICAgY29uc3QgZHJhZ2dhYmxlID0gZ2V0Qm9vbCgnZGF0YS1zbGlkZXJfZHJhZ2dhYmxlJyk7XG4gICAgICAgIGNvbnN0IHJ0bCA9IGdldEJvb2woJ2RhdGEtc2xpZGVyX3J0bCcpO1xuICAgICAgICBjb25zdCB2YXJpYWJsZVdpZHRoID0gZ2V0Qm9vbCgnZGF0YS1zbGlkZXJfdmFyaWFibGVfd2lkdGgnKTtcbiAgICAgICAgY29uc3QgYnRuc01vZGUgPSBnZXQoJ2RhdGEtc2xpZGVyX2J0bnMnKSB8fCAnJztcblxuICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCA1NDAgJiYgcGFyZW50LmNsYXNzTGlzdC5jb250YWlucygncm93cy0yJykpIHtcbiAgICAgICAgICAgIHJvd3NQYyA9IDE7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzbGlkZXJBcnJvd3MgPSBwYXJlbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgICcuanMtc2xpZGVyLWFycm93cydcbiAgICAgICAgKSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgICAgIGNvbnN0IHNsaWRlckRvdHMgPSBwYXJlbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgICcuanMtc2xpZGVyLWRvdHMnXG4gICAgICAgICkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgICAgICBjb25zdCBzbGlkZXJTZWxlY3RvciA9IHBhcmVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgJy4nICsgc2xpZGVyTmFtZVxuICAgICAgICApIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgICAgICAgaWYgKCFzbGlkZXJTZWxlY3RvcikgcmV0dXJuO1xuICAgICAgICB0aGlzLnNsaWRlckVsID0gc2xpZGVyU2VsZWN0b3I7XG5cbiAgICAgICAgbGV0IHByZXZBcnJvdyA9ICcnO1xuICAgICAgICBsZXQgbmV4dEFycm93ID0gJyc7XG4gICAgICAgIGlmIChidG5zTW9kZS5pbmNsdWRlcygnaWNvbi1zbWFsbCcpKSB7XG4gICAgICAgICAgICBwcmV2QXJyb3cgKz1cbiAgICAgICAgICAgICAgICBcIjxidXR0b24gdHlwZT0nYnV0dG9uJyBjbGFzcz0nc2xpY2stcHJldiBpY29uLXNtYWxsJz48c3ZnIGFyaWEtaGlkZGVuPSd0cnVlJyBmb2N1c2FibGU9J2ZhbHNlJyBjbGFzcz0nbGluZSc+PHVzZSBocmVmPScvYXNzZXRzL2JhYnlsb24vc3ZnL2Fycm93LWxpbmUuc3ZnI2Fycm93LWxpbmUnPjwvdXNlPjwvc3ZnPjxzdmcgYXJpYS1oaWRkZW49J3RydWUnIGZvY3VzYWJsZT0nZmFsc2UnPjx1c2UgaHJlZj0nL2Fzc2V0cy9iYWJ5bG9uL3N2Zy9pY29uLWFycm93LnN2ZyNpY29uLWFycm93Jz48L3VzZT48L3N2Zz48L2J1dHRvbj5cIjtcbiAgICAgICAgICAgIG5leHRBcnJvdyArPVxuICAgICAgICAgICAgICAgIFwiPGJ1dHRvbiB0eXBlPSdidXR0b24nIGNsYXNzPSdzbGljay1uZXh0IGljb24tc21hbGwnPjxzdmcgYXJpYS1oaWRkZW49J3RydWUnIGZvY3VzYWJsZT0nZmFsc2UnIGNsYXNzPSdsaW5lJz48dXNlIGhyZWY9Jy9hc3NldHMvYmFieWxvbi9zdmcvYXJyb3ctbGluZS5zdmcjYXJyb3ctbGluZSc+PC91c2U+PC9zdmc+PHN2ZyBhcmlhLWhpZGRlbj0ndHJ1ZScgZm9jdXNhYmxlPSdmYWxzZSc+PHVzZSBocmVmPScvYXNzZXRzL2JhYnlsb24vc3ZnL2ljb24tYXJyb3cuc3ZnI2ljb24tYXJyb3cnPjwvdXNlPjwvc3ZnPjwvYnV0dG9uPlwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChidG5zTW9kZS5pbmNsdWRlcygnaWNvbi1sYXJnZScpKSB7XG4gICAgICAgICAgICBwcmV2QXJyb3cgKz1cbiAgICAgICAgICAgICAgICBcIjxidXR0b24gdHlwZT0nYnV0dG9uJyBjbGFzcz0nc2xpY2stcHJldiBpY29uLWxhcmdlJz48c3ZnIGFyaWEtaGlkZGVuPSd0cnVlJyBmb2N1c2FibGU9J2ZhbHNlJz48dXNlIGhyZWY9Jy9hc3NldHMvYmFieWxvbi9zdmcvaWNvbi1hcnJvdy1sYXJnZS5zdmcjaWNvbi1hcnJvdy1sYXJnZSc+PC91c2U+PC9zdmc+PC9idXR0b24+XCI7XG4gICAgICAgICAgICBuZXh0QXJyb3cgKz1cbiAgICAgICAgICAgICAgICBcIjxidXR0b24gdHlwZT0nYnV0dG9uJyBjbGFzcz0nc2xpY2stbmV4dCBpY29uLWxhcmdlJz48c3ZnIGFyaWEtaGlkZGVuPSd0cnVlJyBmb2N1c2FibGU9J2ZhbHNlJz48dXNlIGhyZWY9Jy9hc3NldHMvYmFieWxvbi9zdmcvaWNvbi1hcnJvdy1sYXJnZS5zdmcjaWNvbi1hcnJvdy1sYXJnZSc+PC91c2U+PC9zdmc+PC9idXR0b24+XCI7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cGRhdGVWZXJ0aWNhbEhlaWdodCA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgJGVsID0gJChzbGlkZXJTZWxlY3Rvcik7XG5cbiAgICAgICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA+PSA1NDEpIHtcbiAgICAgICAgICAgICAgICBsZXQgbWF4SCA9IDA7XG4gICAgICAgICAgICAgICAgJGVsLmZpbmQoJy5zbGljay1zbGlkZTpub3QoLnNsaWNrLWNsb25lZCknKS5lYWNoKFxuICAgICAgICAgICAgICAgICAgICAoXzogbnVtYmVyLCBlbDogSFRNTEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGggPSAoJChlbCkgYXMgYW55KS5vdXRlckhlaWdodCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPiBtYXhIKSBtYXhIID0gaDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgJGVsLmZpbmQoJy5zbGljay1zbGlkZScpLmVhY2goKF86IG51bWJlciwgZWw6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICgkKGVsKSBhcyBhbnkpLmNzcygnaGVpZ2h0JywgYCR7bWF4SH1weGApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAkKHNsaWRlclNlbGVjdG9yKS5maW5kKCcuc2xpY2stc2xpZGUnKS5jc3MoJ2hlaWdodCcsICcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodmVydGljYWwpIHtcbiAgICAgICAgICAgICQoc2xpZGVyU2VsZWN0b3IpLm9uKCdzZXRQb3NpdGlvbicsIHVwZGF0ZVZlcnRpY2FsSGVpZ2h0KTtcbiAgICAgICAgICAgICQoc2xpZGVyU2VsZWN0b3IpLm9uKCdpbml0JywgKCkgPT5cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHVwZGF0ZVZlcnRpY2FsSGVpZ2h0LCAwKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMucmVzaXplSGFuZGxlciA9ICgpID0+IHVwZGF0ZVZlcnRpY2FsSGVpZ2h0KCk7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5yZXNpemVIYW5kbGVyLCB7XG4gICAgICAgICAgICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g8J+UpSBGVU5DScOTTiBERSBJTklDSUFMSVpBQ0nDk04gUFJPVEVHSURBXG4gICAgICAgIGNvbnN0IHN0YXJ0U2xpY2sgPSAoKSA9PiB7XG4gICAgICAgICAgICAvLyBDb21wcm9iYXIgc2kgbG9zIGVsZW1lbnRvcyBkZWwgQGZvciB5YSBlc3TDoW4gZW4gZWwgRE9NXG4gICAgICAgICAgICBjb25zdCBjaGlsZFNsaWRlcyA9IEFycmF5LmZyb20oc2xpZGVyU2VsZWN0b3IuY2hpbGRyZW4pLmZpbHRlcihcbiAgICAgICAgICAgICAgICAobm9kZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgIW5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCdzbGljay1saXN0JykgJiZcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5ub2RlVHlwZSA9PT0gMVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy8gU2kgYcO6biBubyBoYXkgaGlqb3MgKEFQSSBwZW5kaWVudGUpLCBlc3BlcmFtb3MgYSBxdWUgQW5ndWxhciBsb3MgcmVuZGVyaWNlXG4gICAgICAgICAgICBpZiAoY2hpbGRTbGlkZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vYnNlcnZlQ2hpbGRyZW4oc2xpZGVyU2VsZWN0b3IsIHN0YXJ0U2xpY2spO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCQoc2xpZGVyU2VsZWN0b3IpLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSByZXR1cm47XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm9ic2VydmVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vYnNlcnZlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAkKHNsaWRlclNlbGVjdG9yKS5zbGljayh7XG4gICAgICAgICAgICAgICAgICAgIGRvdHM6IHNob3dEb3RzLFxuICAgICAgICAgICAgICAgICAgICBhcnJvd3M6IHNob3dCdG5zLFxuICAgICAgICAgICAgICAgICAgICBhcHBlbmRBcnJvd3M6IHNsaWRlckFycm93cyB8fCBwYXJlbnQsXG4gICAgICAgICAgICAgICAgICAgIHByZXZBcnJvdyxcbiAgICAgICAgICAgICAgICAgICAgbmV4dEFycm93LFxuICAgICAgICAgICAgICAgICAgICBhcHBlbmREb3RzOiBzbGlkZXJEb3RzIHx8IHBhcmVudCxcbiAgICAgICAgICAgICAgICAgICAgaW5maW5pdGUsXG4gICAgICAgICAgICAgICAgICAgIHVzZVRyYW5zZm9ybTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZmFkZSxcbiAgICAgICAgICAgICAgICAgICAgY2VudGVyTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgY2VudGVyUGFkZGluZzogJzAnLFxuICAgICAgICAgICAgICAgICAgICBjc3NFYXNlOiAnY3ViaWMtYmV6aWVyKDAuNzg1LCAwLjEzNSwgMC4xNSwgMC44NiknLFxuICAgICAgICAgICAgICAgICAgICBzcGVlZDogc2xpZGVyU3BlZWQsXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogc2xpZGVzUGMsXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgICAgICAgICByb3dzOiByb3dzUGMsXG4gICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5LFxuICAgICAgICAgICAgICAgICAgICBhdXRvcGxheVNwZWVkOiBhdXRvcGxheVNwZWVkID4gMCA/IGF1dG9wbGF5U3BlZWQgOiA1MDAwLFxuICAgICAgICAgICAgICAgICAgICBzd2lwZVRvU2xpZGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsLFxuICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbFN3aXBpbmc6IHZlcnRpY2FsLFxuICAgICAgICAgICAgICAgICAgICBhZGFwdGl2ZUhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgYXNOYXZGb3IsXG4gICAgICAgICAgICAgICAgICAgIHBhdXNlT25Gb2N1czogcGF1c2UsXG4gICAgICAgICAgICAgICAgICAgIHBhdXNlT25Ib3ZlcjogcGF1c2UsXG4gICAgICAgICAgICAgICAgICAgIGRyYWdnYWJsZSxcbiAgICAgICAgICAgICAgICAgICAgc3dpcGU6IGRyYWdnYWJsZSxcbiAgICAgICAgICAgICAgICAgICAgcnRsLFxuICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZVdpZHRoLFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaXZlOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludDogMTY4MCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNUb1Nob3c6IHNsaWRlc0xhcHRvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93czogcm93c0xhcHRvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50OiAxMzY2LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogc2xpZGVzVGFibGV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzOiByb3dzVGFibGV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQ6IDEyODAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TaG93OiBzbGlkZXNNb2JpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3M6IHJvd3NNb2JpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludDogMTAyMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNUb1Nob3c6IHNsaWRlc01vYmlsZVNtYWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzOiByb3dzTW9iaWxlU21hbGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludDogNzY3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogc2xpZGVzTW9iaWxlWFNtYWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzOiByb3dzTW9iaWxlWFNtYWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsU3dpcGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzbGlkZXMgPSBzbGlkZXJTZWxlY3Rvci5xdWVyeVNlbGVjdG9yQWxsKCcuc2xpY2stc2xpZGUnKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRvZ2dsZUJvdG9uQWN0aXZvID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCAxMDI0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXMuZm9yRWFjaCgoc2xpZGUpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGUuY2xhc3NMaXN0LmFkZCgnYm90b25hY3Rpdm8nKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlcy5mb3JFYWNoKChzbGlkZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZS5jbGFzc0xpc3QucmVtb3ZlKCdib3RvbmFjdGl2bycpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHRvZ2dsZUJvdG9uQWN0aXZvKCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZXNpemVIYW5kbGVyTG9jYWwgPSAoKSA9PiB0b2dnbGVCb3RvbkFjdGl2bygpO1xuICAgICAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVIYW5kbGVyTG9jYWwsIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplSGFuZGxlciA9IHJlc2l6ZUhhbmRsZXJMb2NhbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIHN0YXJ0U2xpY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9ic2VydmVDaGlsZHJlbih0YXJnZXQ6IEhUTUxFbGVtZW50LCBjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vYnNlcnZlcikgcmV0dXJuO1xuICAgICAgICB0aGlzLm9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRTbGlkZXMgPSBBcnJheS5mcm9tKHRhcmdldC5jaGlsZHJlbikuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChub2RlKSA9PlxuICAgICAgICAgICAgICAgICAgICAhbm9kZS5jbGFzc0xpc3QuY29udGFpbnMoJ3NsaWNrLWxpc3QnKSAmJlxuICAgICAgICAgICAgICAgICAgICBub2RlLm5vZGVUeXBlID09PSAxXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGNoaWxkU2xpZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vYnNlcnZlcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vYnNlcnZlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0YXJnZXQsIHsgY2hpbGRMaXN0OiB0cnVlIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vYnNlcnZlcikge1xuICAgICAgICAgICAgdGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICB0aGlzLm9ic2VydmVyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgJCA9PT0gJ3VuZGVmaW5lZCcgfHwgISQuZm4/LnNsaWNrKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgalF1ZXJ5RXhpc3RzID0gdHlwZW9mICQgIT09ICd1bmRlZmluZWQnO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuc2xpZGVyRWwgJiZcbiAgICAgICAgICAgIGpRdWVyeUV4aXN0cyAmJlxuICAgICAgICAgICAgJCh0aGlzLnNsaWRlckVsKS5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgJCh0aGlzLnNsaWRlckVsKS5zbGljaygndW5zbGljaycpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFsIGRlc3RydWlyIHNsaWNrJywgZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVzaXplSGFuZGxlcikge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzaXplSGFuZGxlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHdhaXRGb3JTbGljayh0aW1lb3V0TXMgPSA4MDAwLCBzdGVwTXMgPSAxMDApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKTtcblxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8Ym9vbGVhbj4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hlY2sgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgJCAhPT0gJ3VuZGVmaW5lZCcgJiYgJC5mbiAmJiAkLmZuLnNsaWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydCA+IHRpbWVvdXRNcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbU2xpY2tJbml0RGlyZWN0aXZlXSBTbGljayBubyBkaXNwb25pYmxlIHRyYXMgdGltZW91dCdcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChjaGVjaywgc3RlcE1zKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
304
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2staW5pdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvZGlyZWN0aXZlcy9zbGlkZXJzL3NsaWNrLWluaXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFFSCxTQUFTLEVBRVQsTUFBTSxFQUdOLFdBQVcsR0FDZCxNQUFNLGVBQWUsQ0FBQzs7QUFRdkIsTUFBTSxPQUFPLGtCQUFrQjtJQVEzQixZQUNZLElBQTZCLEVBQ1IsVUFBa0IsRUFDdkMsSUFBWTtRQUZaLFNBQUksR0FBSixJQUFJLENBQXlCO1FBQ1IsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUN2QyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBUHhCLHFEQUFxRDtRQUM3QyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixhQUFRLEdBQXNCLEVBQUUsQ0FBQztJQU10QyxDQUFDO0lBRUosS0FBSyxDQUFDLGVBQWU7UUFDakIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFBRSxPQUFPO1FBRWhELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBRXpDLGdDQUFnQztRQUNoQyxnRUFBZ0U7UUFDaEUsK0NBQStDO1FBQy9DLElBQ0ksUUFBUSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUM7WUFDdEMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7WUFDakMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUMzQztZQUNFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLE9BQU8sQ0FBQyw0QkFBNEI7U0FDdkM7UUFFRCxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZ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IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBQTEFURk9STV9JRCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmRlY2xhcmUgY29uc3QgJDogYW55O1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJy5qcy1hY3RpdmUtc2xpZGVyLFthcHBTbGlja0luaXRdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTbGlja0luaXREaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgc2xpZGVyRWw/OiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIG9ic2VydmVyPzogTXV0YXRpb25PYnNlcnZlcjtcblxuICAgIC8vIDEuIEHDsWFkaW1vcyBmbGFnIGRlIHNlZ3VyaWRhZCB5IGFycmF5IGRlIGxpbXBpZXphc1xuICAgIHByaXZhdGUgaXNEZXN0cm95ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGNsZWFudXBzOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaG9zdDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogb2JqZWN0LFxuICAgICAgICBwcml2YXRlIHpvbmU6IE5nWm9uZVxuICAgICkge31cblxuICAgIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcGFyZW50X1YgPSB0aGlzLmhvc3QubmF0aXZlRWxlbWVudDtcblxuICAgICAgICAvLyDwn5uRIENPUlRBRlVFR09TIEFOVEktQ09MSVNJw5NOOlxuICAgICAgICAvLyBTaSBkZXRlY3RhbW9zIHF1ZSBlc3RlIGNvbXBvbmVudGUgdGllbmUgU3dpcGVyLCBtYXRhbW9zIFNsaWNrXG4gICAgICAgIC8vIGFudGVzIGRlIHF1ZSBuYXpjYSBwYXJhIG5vIGNvcnJvbXBlciBlbCBET00uXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHBhcmVudF9WLmhhc0F0dHJpYnV0ZSgnYXBwU3dpcGVySW5pdCcpIHx8XG4gICAgICAgICAgICBwYXJlbnRfVi5xdWVyeVNlbGVjdG9yKCcuc3dpcGVyJykgfHxcbiAgICAgICAgICAgIHBhcmVudF9WLnF1ZXJ5U2VsZWN0b3IoJy5zd2lwZXItd3JhcHBlcicpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5pc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm47IC8vIEFib3J0YW1vcyBzaWxlbmNpb3NhbWVudGVcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNsaWNrUmVhZHkgPSBhd2FpdCB0aGlzLndhaXRGb3JTbGljaygpO1xuXG4gICAgICAgIC8vIDIuIMKhQ09SVEFGVUVHT1MhIFNpIGVsIGNvbXBvbmVudGUgc2UgZGVzdHJ1ecOzIG1pZW50cmFzIGVzcGVyw6FiYW1vcywgYWJvcnRhbW9zLlxuICAgICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkgcmV0dXJuO1xuXG4gICAgICAgIGlmICghc2xpY2tSZWFkeSB8fCB0eXBlb2YgJCA9PT0gJ3VuZGVmaW5lZCcgfHwgISQuZm4gfHwgISQuZm4uc2xpY2spIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAnW1NsaWNrSW5pdERpcmVjdGl2ZV0galF1ZXJ5L1NsaWNrIG5vIGVzdMOhbiBkaXNwb25pYmxlcydcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmhvc3QubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgZ2V0ID0gKG5hbWU6IHN0cmluZykgPT4gcGFyZW50LmdldEF0dHJpYnV0ZShuYW1lKTtcbiAgICAgICAgY29uc3QgZ2V0Qm9vbCA9IChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSBnZXQobmFtZSk7XG4gICAgICAgICAgICByZXR1cm4gdiA9PT0gJ3RydWUnIHx8IHYgPT09ICcxJyB8fCB2ID09PSAnJyB8fCAodiBhcyBhbnkpID09PSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBnZXROdW0gPSAobmFtZTogc3RyaW5nLCBkZWYgPSAwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2ID0gTnVtYmVyKGdldChuYW1lKSk7XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHYpID8gdiA6IGRlZjtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBzbGlkZXJOYW1lID0gZ2V0KCdkYXRhLXNsaWRlcl9uYW1lJykgfHwgJyc7XG4gICAgICAgIGNvbnN0IHNsaWRlclNwZWVkID0gZ2V0TnVtKCdkYXRhLXNsaWRlcl9zcGVlZCcsIDc1MCk7XG4gICAgICAgIGNvbnN0IHNob3dCdG5zID0gZ2V0Qm9vbCgnZGF0YS1zbGlkZXJfc2hvd2J0bnMnKTtcbiAgICAgICAgY29uc3Qgc2hvd0RvdHMgPSBnZXRCb29sKCdkYXRhLXNsaWRlcl9zaG93ZG90cycpO1xuICAgICAgICBjb25zdCBmYWRlID0gZ2V0Qm9vbCgnZGF0YS1zbGlkZXJfZmFkZScpO1xuICAgICAgICBjb25zdCBjZW50ZXJNb2RlID0gZ2V0Qm9vbCgnZGF0YS1zbGlkZXJfY2VudGVybW9kZScpO1xuICAgICAgICBjb25zdCBhdXRvcGxheSA9IGdldEJvb2woJ2RhdGEtc2xpZGVyX2F1dG9wbGF5Jyk7XG4gICAgICAgIGNvbnN0IHJhd1NwZWVkID0gZ2V0KCdkYXRhLXNsaWRlcl9hdXRvcGxheV9zcGVlZCcpO1xuICAgICAgICBjb25zdCBhdXRvcGxheVNwZWVkID0gcmF3U3BlZWQgPyBOdW1iZXIocmF3U3BlZWQpIDogNTAwMDtcbiAgICAgICAgY29uc3Qgc2xpZGVzUGMgPSBnZXROdW0oJ2RhdGEtc2xpZGVzX3BjJywgMSk7XG4gICAgICAgIGNvbnN0IHNsaWRlc0xhcHRvcCA9IGdldE51bSgnZGF0YS1zbGlkZXNfbGFwdG9wJykgfHwgc2xpZGVzUGM7XG4gICAgICAgIGNvbnN0IHNsaWRlc1RhYmxldCA9IGdldE51bSgnZGF0YS1zbGlkZXNfdGFibGV0JykgfHwgc2xpZGVzTGFwdG9wO1xuICAgICAgICBjb25zdCBzbGlkZXNNb2JpbGUgPSBnZXROdW0oJ2RhdGEtc2xpZGVzX21vYmlsZScpIHx8IHNsaWRlc1RhYmxldDtcbiAgICAgICAgY29uc3Qgc2xpZGVzTW9iaWxlU21hbGwgPVxuICAgICAgICAgICAgZ2V0TnVtKCdkYXRhLXNsaWRlc19tb2JpbGVfc21hbGwnKSB8fCBzbGlkZXNNb2JpbGU7XG4gICAgICAgIGNvbnN0IHNsaWRlc01vYmlsZVhTbWFsbCA9XG4gICAgICAgICAgICBnZXROdW0oJ2RhdGEtc2xpZGVzX21vYmlsZV94c21hbGwnKSB8fCBzbGlkZXNNb2JpbGVTbWFsbDtcbiAgICAgICAgY29uc3QgaW5maW5pdGUgPSBnZXRCb29sKCdkYXRhLXNsaWRlc19pbmZpbml0ZScpO1xuXG4gICAgICAgIGxldCByb3dzUGMgPSBnZXROdW0oJ2RhdGEtc2xpZGVzcm93c19wYycsIDEpO1xuICAgICAgICBsZXQgcm93c0xhcHRvcCA9IGdldE51bSgnZGF0YS1zbGlkZXNyb3dzX2xhcHRvcCcsIDEpO1xuICAgICAgICBsZXQgcm93c1RhYmxldCA9IGdldE51bSgnZGF0YS1zbGlkZXNyb3dzX3RhYmxldCcsIDEpO1xuICAgICAgICBsZXQgcm93c01vYmlsZSA9IGdldE51bSgnZGF0YS1zbGlkZXNyb3dzX21vYmlsZScsIDEpO1xuICAgICAgICBsZXQgcm93c01vYmlsZVNtYWxsID0gZ2V0TnVtKCdkYXRhLXNsaWRlc3Jvd3NfbW9iaWxlX3NtYWxsJywgMSk7XG4gICAgICAgIGxldCByb3dzTW9iaWxlWFNtYWxsID0gZ2V0TnVtKCdkYXRhLXNsaWRlc3Jvd3NfbW9iaWxlX3hzbWFsbCcsIDEpO1xuXG4gICAgICAgIGNvbnN0IGFzTmF2Rm9yID0gZ2V0KCdkYXRhLXNsaWRlcl9hc05hdkZvcicpIHx8IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgdmVydGljYWwgPSBnZXRCb29sKCdkYXRhLXNsaWRlcl92ZXJ0aWNhbCcpO1xuICAgICAgICBjb25zdCBhZGFwdGl2ZUhlaWdodCA9IGdldEJvb2woJ2RhdGEtc2xpZGVyX2FkYXB0aXZlX2hlaWdodCcpO1xuICAgICAgICBjb25zdCBwYXVzZSA9IGdldEJvb2woJ2RhdGEtc2xpZGVyX3BhdXNlJyk7XG4gICAgICAgIGNvbnN0IGRyYWdnYWJsZSA9IGdldEJvb2woJ2RhdGEtc2xpZGVyX2RyYWdnYWJsZScpO1xuICAgICAgICBjb25zdCBydGwgPSBnZXRCb29sKCdkYXRhLXNsaWRlcl9ydGwnKTtcbiAgICAgICAgY29uc3QgdmFyaWFibGVXaWR0aCA9IGdldEJvb2woJ2RhdGEtc2xpZGVyX3ZhcmlhYmxlX3dpZHRoJyk7XG4gICAgICAgIGNvbnN0IGJ0bnNNb2RlID0gZ2V0KCdkYXRhLXNsaWRlcl9idG5zJykgfHwgJyc7XG5cbiAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNTQwICYmIHBhcmVudC5jbGFzc0xpc3QuY29udGFpbnMoJ3Jvd3MtMicpKSB7XG4gICAgICAgICAgICByb3dzUGMgPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2xpZGVyQXJyb3dzID0gcGFyZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAnLmpzLXNsaWRlci1hcnJvd3MnXG4gICAgICAgICkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgICAgICBjb25zdCBzbGlkZXJEb3RzID0gcGFyZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAnLmpzLXNsaWRlci1kb3RzJ1xuICAgICAgICApIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgICAgICAgY29uc3Qgc2xpZGVyU2VsZWN0b3IgPSBwYXJlbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgICcuJyArIHNsaWRlck5hbWVcbiAgICAgICAgKSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgICAgICAgaWYgKCFzbGlkZXJTZWxlY3RvcikgcmV0dXJuO1xuICAgICAgICB0aGlzLnNsaWRlckVsID0gc2xpZGVyU2VsZWN0b3I7XG5cbiAgICAgICAgbGV0IHByZXZBcnJvdyA9ICcnO1xuICAgICAgICBsZXQgbmV4dEFycm93ID0gJyc7XG4gICAgICAgIGlmIChidG5zTW9kZS5pbmNsdWRlcygnaWNvbi1zbWFsbCcpKSB7XG4gICAgICAgICAgICBwcmV2QXJyb3cgKz1cbiAgICAgICAgICAgICAgICBcIjxidXR0b24gdHlwZT0nYnV0dG9uJyBjbGFzcz0nc2xpY2stcHJldiBpY29uLXNtYWxsJz48c3ZnIGFyaWEtaGlkZGVuPSd0cnVlJyBmb2N1c2FibGU9J2ZhbHNlJyBjbGFzcz0nbGluZSc+PHVzZSBocmVmPScvYXNzZXRzL2JhYnlsb24vc3ZnL2Fycm93LWxpbmUuc3ZnI2Fycm93LWxpbmUnPjwvdXNlPjwvc3ZnPjxzdmcgYXJpYS1oaWRkZW49J3RydWUnIGZvY3VzYWJsZT0nZmFsc2UnPjx1c2UgaHJlZj0nL2Fzc2V0cy9iYWJ5bG9uL3N2Zy9pY29uLWFycm93LnN2ZyNpY29uLWFycm93Jz48L3VzZT48L3N2Zz48L2J1dHRvbj5cIjtcbiAgICAgICAgICAgIG5leHRBcnJvdyArPVxuICAgICAgICAgICAgICAgIFwiPGJ1dHRvbiB0eXBlPSdidXR0b24nIGNsYXNzPSdzbGljay1uZXh0IGljb24tc21hbGwnPjxzdmcgYXJpYS1oaWRkZW49J3RydWUnIGZvY3VzYWJsZT0nZmFsc2UnIGNsYXNzPSdsaW5lJz48dXNlIGhyZWY9Jy9hc3NldHMvYmFieWxvbi9zdmcvYXJyb3ctbGluZS5zdmcjYXJyb3ctbGluZSc+PC91c2U+PC9zdmc+PHN2ZyBhcmlhLWhpZGRlbj0ndHJ1ZScgZm9jdXNhYmxlPSdmYWxzZSc+PHVzZSBocmVmPScvYXNzZXRzL2JhYnlsb24vc3ZnL2ljb24tYXJyb3cuc3ZnI2ljb24tYXJyb3cnPjwvdXNlPjwvc3ZnPjwvYnV0dG9uPlwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChidG5zTW9kZS5pbmNsdWRlcygnaWNvbi1sYXJnZScpKSB7XG4gICAgICAgICAgICBwcmV2QXJyb3cgKz1cbiAgICAgICAgICAgICAgICBcIjxidXR0b24gdHlwZT0nYnV0dG9uJyBjbGFzcz0nc2xpY2stcHJldiBpY29uLWxhcmdlJz48c3ZnIGFyaWEtaGlkZGVuPSd0cnVlJyBmb2N1c2FibGU9J2ZhbHNlJz48dXNlIGhyZWY9Jy9hc3NldHMvYmFieWxvbi9zdmcvaWNvbi1hcnJvdy1sYXJnZS5zdmcjaWNvbi1hcnJvdy1sYXJnZSc+PC91c2U+PC9zdmc+PC9idXR0b24+XCI7XG4gICAgICAgICAgICBuZXh0QXJyb3cgKz1cbiAgICAgICAgICAgICAgICBcIjxidXR0b24gdHlwZT0nYnV0dG9uJyBjbGFzcz0nc2xpY2stbmV4dCBpY29uLWxhcmdlJz48c3ZnIGFyaWEtaGlkZGVuPSd0cnVlJyBmb2N1c2FibGU9J2ZhbHNlJz48dXNlIGhyZWY9Jy9hc3NldHMvYmFieWxvbi9zdmcvaWNvbi1hcnJvdy1sYXJnZS5zdmcjaWNvbi1hcnJvdy1sYXJnZSc+PC91c2U+PC9zdmc+PC9idXR0b24+XCI7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cGRhdGVWZXJ0aWNhbEhlaWdodCA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSB8fCB0aGlzLmlzRGVzdHJveWVkKSByZXR1cm47IC8vIENoZXF1ZW8gZXh0cmFcbiAgICAgICAgICAgIGNvbnN0ICRlbCA9ICQoc2xpZGVyU2VsZWN0b3IpO1xuXG4gICAgICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPj0gNTQxKSB7XG4gICAgICAgICAgICAgICAgbGV0IG1heEggPSAwO1xuICAgICAgICAgICAgICAgICRlbC5maW5kKCcuc2xpY2stc2xpZGU6bm90KC5zbGljay1jbG9uZWQpJykuZWFjaChcbiAgICAgICAgICAgICAgICAgICAgKF86IG51bWJlciwgZWw6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoID0gKCQoZWwpIGFzIGFueSkub3V0ZXJIZWlnaHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID4gbWF4SCkgbWF4SCA9IGg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICRlbC5maW5kKCcuc2xpY2stc2xpZGUnKS5lYWNoKChfOiBudW1iZXIsIGVsOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAoJChlbCkgYXMgYW55KS5jc3MoJ2hlaWdodCcsIGAke21heEh9cHhgKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgJChzbGlkZXJTZWxlY3RvcikuZmluZCgnLnNsaWNrLXNsaWRlJykuY3NzKCdoZWlnaHQnLCAnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHZlcnRpY2FsKSB7XG4gICAgICAgICAgICAkKHNsaWRlclNlbGVjdG9yKS5vbignc2V0UG9zaXRpb24nLCB1cGRhdGVWZXJ0aWNhbEhlaWdodCk7XG4gICAgICAgICAgICAkKHNsaWRlclNlbGVjdG9yKS5vbignaW5pdCcsICgpID0+XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCh1cGRhdGVWZXJ0aWNhbEhlaWdodCwgMClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGVWZXJ0aWNhbEhlaWdodCwge1xuICAgICAgICAgICAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIDMuIFJlZ2lzdHJhbW9zIGxhIGxpbXBpZXphIHVzYW5kbyBlbCBhcnJheVxuICAgICAgICAgICAgdGhpcy5jbGVhbnVwcy5wdXNoKCgpID0+XG4gICAgICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZVZlcnRpY2FsSGVpZ2h0KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0YXJ0U2xpY2sgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkgcmV0dXJuOyAvLyBFdml0YXIgaW5pY2lhciBzaSBzZSBkZXN0cnV5w7NcblxuICAgICAgICAgICAgY29uc3QgY2hpbGRTbGlkZXMgPSBBcnJheS5mcm9tKHNsaWRlclNlbGVjdG9yLmNoaWxkcmVuKS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKG5vZGUpID0+XG4gICAgICAgICAgICAgICAgICAgICFub2RlLmNsYXNzTGlzdC5jb250YWlucygnc2xpY2stbGlzdCcpICYmXG4gICAgICAgICAgICAgICAgICAgIG5vZGUubm9kZVR5cGUgPT09IDFcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChjaGlsZFNsaWRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9ic2VydmVDaGlsZHJlbihzbGlkZXJTZWxlY3Rvciwgc3RhcnRTbGljayk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoJChzbGlkZXJTZWxlY3RvcikuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHJldHVybjtcblxuICAgICAgICAgICAgaWYgKHRoaXMub2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9ic2VydmVyID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICQoc2xpZGVyU2VsZWN0b3IpLnNsaWNrKHtcbiAgICAgICAgICAgICAgICAgICAgZG90czogc2hvd0RvdHMsXG4gICAgICAgICAgICAgICAgICAgIGFycm93czogc2hvd0J0bnMsXG4gICAgICAgICAgICAgICAgICAgIGFwcGVuZEFycm93czogc2xpZGVyQXJyb3dzIHx8IHBhcmVudCxcbiAgICAgICAgICAgICAgICAgICAgcHJldkFycm93LFxuICAgICAgICAgICAgICAgICAgICBuZXh0QXJyb3csXG4gICAgICAgICAgICAgICAgICAgIGFwcGVuZERvdHM6IHNsaWRlckRvdHMgfHwgcGFyZW50LFxuICAgICAgICAgICAgICAgICAgICBpbmZpbml0ZSxcbiAgICAgICAgICAgICAgICAgICAgdXNlVHJhbnNmb3JtOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBmYWRlLFxuICAgICAgICAgICAgICAgICAgICBjZW50ZXJNb2RlLFxuICAgICAgICAgICAgICAgICAgICBjZW50ZXJQYWRkaW5nOiAnMCcsXG4gICAgICAgICAgICAgICAgICAgIGNzc0Vhc2U6ICdjdWJpYy1iZXppZXIoMC43ODUsIDAuMTM1LCAwLjE1LCAwLjg2KScsXG4gICAgICAgICAgICAgICAgICAgIHNwZWVkOiBzbGlkZXJTcGVlZCxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TaG93OiBzbGlkZXNQYyxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgICAgICAgICAgICAgICAgIHJvd3M6IHJvd3NQYyxcbiAgICAgICAgICAgICAgICAgICAgYXV0b3BsYXksXG4gICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5U3BlZWQ6IGF1dG9wbGF5U3BlZWQgPiAwID8gYXV0b3BsYXlTcGVlZCA6IDUwMDAsXG4gICAgICAgICAgICAgICAgICAgIHN3aXBlVG9TbGlkZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdmVydGljYWwsXG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsU3dpcGluZzogdmVydGljYWwsXG4gICAgICAgICAgICAgICAgICAgIGFkYXB0aXZlSGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICBhc05hdkZvcixcbiAgICAgICAgICAgICAgICAgICAgcGF1c2VPbkZvY3VzOiBwYXVzZSxcbiAgICAgICAgICAgICAgICAgICAgcGF1c2VPbkhvdmVyOiBwYXVzZSxcbiAgICAgICAgICAgICAgICAgICAgZHJhZ2dhYmxlLFxuICAgICAgICAgICAgICAgICAgICBzd2lwZTogZHJhZ2dhYmxlLFxuICAgICAgICAgICAgICAgICAgICBydGwsXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpdmU6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50OiAxNjgwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogc2xpZGVzTGFwdG9wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzOiByb3dzTGFwdG9wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQ6IDEzNjYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TaG93OiBzbGlkZXNUYWJsZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3M6IHJvd3NUYWJsZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludDogMTI4MCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNUb1Nob3c6IHNsaWRlc01vYmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93czogcm93c01vYmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50OiAxMDIzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogc2xpZGVzTW9iaWxlU21hbGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3M6IHJvd3NNb2JpbGVTbWFsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50OiA3NjcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TaG93OiBzbGlkZXNNb2JpbGVYU21hbGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3M6IHJvd3NNb2JpbGVYU21hbGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGljYWxTd2lwaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHNsaWRlcyA9IHNsaWRlclNlbGVjdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy5zbGljay1zbGlkZScpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdG9nZ2xlQm90b25BY3Rpdm8gPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDEwMjQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlcy5mb3JFYWNoKChzbGlkZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZS5jbGFzc0xpc3QuYWRkKCdib3RvbmFjdGl2bycpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzLmZvckVhY2goKHNsaWRlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlLmNsYXNzTGlzdC5yZW1vdmUoJ2JvdG9uYWN0aXZvJylcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgdG9nZ2xlQm90b25BY3Rpdm8oKTtcblxuICAgICAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0b2dnbGVCb3RvbkFjdGl2bywge1xuICAgICAgICAgICAgICAgICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIDQuIFJlZ2lzdHJhbW9zIGVsIHNlZ3VuZG8gZXZlbnRvIGRlIGxpbXBpZXphIGNvcnJlY3RhbWVudGVcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFudXBzLnB1c2goKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRvZ2dsZUJvdG9uQWN0aXZvKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICBzdGFydFNsaWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvYnNlcnZlQ2hpbGRyZW4odGFyZ2V0OiBIVE1MRWxlbWVudCwgY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub2JzZXJ2ZXIpIHJldHVybjtcbiAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkU2xpZGVzID0gQXJyYXkuZnJvbSh0YXJnZXQuY2hpbGRyZW4pLmZpbHRlcihcbiAgICAgICAgICAgICAgICAobm9kZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgIW5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCdzbGljay1saXN0JykgJiZcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5ub2RlVHlwZSA9PT0gMVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChjaGlsZFNsaWRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGFyZ2V0LCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gNS4gwqFNYXJjYW1vcyBjb21vIGRlc3RydWlkbyBpbm1lZGlhdGFtZW50ZSFcbiAgICAgICAgdGhpcy5pc0Rlc3Ryb3llZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMub2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgdGhpcy5vYnNlcnZlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDYuIEVqZWN1dGFtb3MgdG9kYXMgbGFzIGxpbXBpZXphcyBkZSBldmVudG9zIHBlbmRpZW50ZXNcbiAgICAgICAgdGhpcy5jbGVhbnVwcy5mb3JFYWNoKChmbikgPT4gZm4oKSk7XG4gICAgICAgIHRoaXMuY2xlYW51cHMgPSBbXTtcblxuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcbiAgICAgICAgaWYgKHR5cGVvZiAkID09PSAndW5kZWZpbmVkJyB8fCAhJC5mbj8uc2xpY2spIHJldHVybjtcblxuICAgICAgICBpZiAodGhpcy5zbGlkZXJFbCAmJiAkKHRoaXMuc2xpZGVyRWwpLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICQodGhpcy5zbGlkZXJFbCkuc2xpY2soJ3Vuc2xpY2snKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBhbCBkZXN0cnVpciBzbGljaycsIGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB3YWl0Rm9yU2xpY2sodGltZW91dE1zID0gODAwMCwgc3RlcE1zID0gMTAwKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkgcmV0dXJuIHJlc29sdmUoZmFsc2UpOyAvLyBEZXRlbmVyIGNoZXF1ZW8gc2kgc2UgZGVzdHJ1ecOzXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgJCAhPT0gJ3VuZGVmaW5lZCcgJiYgJC5mbiAmJiAkLmZuLnNsaWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydCA+IHRpbWVvdXRNcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbU2xpY2tJbml0RGlyZWN0aXZlXSBTbGljayBubyBkaXNwb25pYmxlIHRyYXMgdGltZW91dCdcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChjaGVjaywgc3RlcE1zKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -191,16 +191,16 @@ export class SwiperInitDirective {
|
|
|
191
191
|
});
|
|
192
192
|
}
|
|
193
193
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SwiperInitDirective, deps: [{ token: i0.ElementRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
194
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: SwiperInitDirective, isStandalone: true, selector: "
|
|
194
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: SwiperInitDirective, isStandalone: true, selector: "[appSwiperInit]", ngImport: i0 }); }
|
|
195
195
|
}
|
|
196
196
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SwiperInitDirective, decorators: [{
|
|
197
197
|
type: Directive,
|
|
198
198
|
args: [{
|
|
199
|
-
selector: '
|
|
199
|
+
selector: '[appSwiperInit]',
|
|
200
200
|
standalone: true,
|
|
201
201
|
}]
|
|
202
202
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
|
|
203
203
|
type: Inject,
|
|
204
204
|
args: [PLATFORM_ID]
|
|
205
205
|
}] }] });
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyLWluaXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2RpcmVjdGl2ZXMvc2xpZGVycy9zd2lwZXItaW5pdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUVILFNBQVMsRUFFVCxNQUFNLEVBRU4sV0FBVyxHQUNkLE1BQU0sZUFBZSxDQUFDOztBQVN2QixNQUFNLE9BQU8sbUJBQW1CO0lBSTVCLFlBQ1ksSUFBNkIsRUFDUixVQUFrQjtRQUR2QyxTQUFJLEdBQUosSUFBSSxDQUF5QjtRQUNSLGVBQVUsR0FBVixVQUFVLENBQVE7UUFKM0Msb0JBQWUsR0FBc0IsRUFBRSxDQUFDO0lBSzdDLENBQUM7SUFFSixLQUFLLENBQUMsZUFBZTtRQUNqQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3JDLE9BQU87U0FDVjtRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUF1QixDQUFDO1FBRS9DLDJCQUEyQjtRQUMzQixNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQVcsRUFBc0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5RCxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLE1BQU0sQ0FBQztRQUM5RCxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQVcsRUFBRSxRQUFRLEdBQUcsQ0FBQyxFQUFVLEVBQUU7WUFDakQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxD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RSxtQ0FBbUM7b0JBQzdDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs7MEJBT1EsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEluamVjdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgUExBVEZPUk1fSUQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vLyBTd2lwZXIgZ2xvYmFsICh2aWVuZSBkZWwgYW5ndWxhci5qc29uIC0+IHNjcmlwdHMpXG5kZWNsYXJlIGNvbnN0IFN3aXBlcjogYW55O1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJy5qcy1hY3RpdmUtc2xpZGVyLFthcHBTd2lwZXJJbml0XScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU3dpcGVySW5pdERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSBzd2lwZXJJbnN0YW5jZT86IGFueTtcbiAgICBwcml2YXRlIGFycm93Q2xlYW51cEZuczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGhvc3Q6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IG9iamVjdFxuICAgICkge31cblxuICAgIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmhvc3QubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgZGF0YXNldCA9IHBhcmVudC5kYXRhc2V0IGFzIERPTVN0cmluZ01hcDtcblxuICAgICAgICAvLyBIZWxwZXJzIHBhcmEgbGVlciBkYXRhLSpcbiAgICAgICAgY29uc3QgZ2V0ID0gKGtleTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IGRhdGFzZXRba2V5XTtcbiAgICAgICAgY29uc3QgZ2V0Qm9vbCA9IChrZXk6IHN0cmluZyk6IGJvb2xlYW4gPT4gZ2V0KGtleSkgPT09ICd0cnVlJztcbiAgICAgICAgY29uc3QgZ2V0TnVtID0gKGtleTogc3RyaW5nLCBmYWxsYmFjayA9IDApOiBudW1iZXIgPT4ge1xuICAgICAgICAgICAgY29uc3QgdiA9IE51bWJlcihnZXQoa2V5KSk7XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHYpID8gdiA6IGZhbGxiYWNrO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHNsaWRlck5hbWUgPSBnZXQoJ3NsaWRlcl9uYW1lJyk7XG4gICAgICAgIGlmICghc2xpZGVyTmFtZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICdbU3dpcGVySW5pdERpcmVjdGl2ZV0gU2luIGRhdGEtc2xpZGVyX25hbWUgZW4gZWwgcGFyZW50JyxcbiAgICAgICAgICAgICAgICBwYXJlbnRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzbGlkZXJTZWxlY3RvciA9IHBhcmVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihcbiAgICAgICAgICAgICcuJyArIHNsaWRlck5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFzbGlkZXJTZWxlY3Rvcikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICdbU3dpcGVySW5pdERpcmVjdGl2ZV0gTm8gZW5jdWVudHJvIGVsIGNvbnRlbmVkb3IgLicsXG4gICAgICAgICAgICAgICAgc2xpZGVyTmFtZSxcbiAgICAgICAgICAgICAgICAnIGRlbnRybyBkZSAnLFxuICAgICAgICAgICAgICAgIHBhcmVudFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN3aXBlciB5YSBpbmljaWFsaXphZG8g4oaSIHNhbGlyXG4gICAgICAgIGlmIChzbGlkZXJTZWxlY3Rvci5jbGFzc0xpc3QuY29udGFpbnMoJ3N3aXBlci1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyA9PT09PT0gTEVDVFVSQSBERSBEQVRBLUFUVFJJQlVURVMgPT09PT09XG4gICAgICAgIGNvbnN0IHNob3dEb3RzID0gZ2V0Qm9vbCgnc2xpZGVyX3Nob3dkb3RzJyk7XG4gICAgICAgIGNvbnN0IHNob3dCdXR0b25zID0gZ2V0Qm9vbCgnc2xpZGVyX3Nob3didG5zJyk7XG4gICAgICAgIGNvbnN0IGZhZGUgPSBnZXRCb29sKCdzbGlkZXJfZmFkZScpO1xuICAgICAgICBjb25zdCBjZW50ZXIgPSBnZXRCb29sKCdzbGlkZXJfY2VudGVybW9kZScpO1xuICAgICAgICBjb25zdCBhdXRvcGxheSA9IGdldEJvb2woJ3NsaWRlcl9hdXRvcGxheScpO1xuICAgICAgICBjb25zdCB2ZXJ0aWNhbCA9IGdldEJvb2woJ3NsaWRlcl92ZXJ0aWNhbCcpO1xuICAgICAgICBjb25zdCBydGwgPSBnZXRCb29sKCdzbGlkZXJfcnRsJyk7XG4gICAgICAgIGNvbnN0IGRyYWdnYWJsZSA9IGdldCgnc2xpZGVyX2RyYWdnYWJsZScpICE9PSAnZmFsc2UnO1xuICAgICAgICBjb25zdCBhZGFwdGl2ZUhlaWdodCA9IGdldEJvb2woJ3NsaWRlcl9hZGFwdGl2ZV9oZWlnaHQnKTtcblxuICAgICAgICBjb25zdCB2YXJpYWJsZVdpZHRoID0gZ2V0Qm9vbCgnc2xpZGVyX3ZhcmlhYmxlX3dpZHRoJyk7XG4gICAgICAgIGNvbnN0IGZyZWVNb2RlID0gZ2V0Qm9vbCgnc2xpZGVyX2ZyZWVtb2RlJyk7XG5cbiAgICAgICAgY29uc3Qgc3BlZWQgPSBnZXROdW0oJ3NsaWRlcl9zcGVlZCcsIDc1MCk7XG4gICAgICAgIGNvbnN0IGluZmluaXRlID0gZ2V0Qm9vbCgnc2xpZGVzX2luZmluaXRlJyk7XG5cbiAgICAgICAgLy8gY29udGVuZWRvcmVzXG4gICAgICAgIGNvbnN0IG5hdkNvbnRhaW5lciA9XG4gICAgICAgICAgICBwYXJlbnQucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy5qcy1zbGlkZXItYXJyb3dzJyk7XG4gICAgICAgIGNvbnN0IGRvdHNDb250YWluZXIgPVxuICAgICAgICAgICAgcGFyZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuanMtc2xpZGVyLWRvdHMnKTtcblxuICAgICAgICAvLyA9PT09PT0gU1ZHIEZMRUNIQVMgPT09PT09XG4gICAgICAgIGNvbnN0IGFycm93U1ZHID0gYFxuPHN2ZyB3aWR0aD1cIjM1XCIgaGVpZ2h0PVwiNzBcIiB2aWV3Qm94PVwiMCAwIDM1IDcwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48cGF0aCBkPVwiTTM1IDcwQzMwLjQwMzcgNzAgMjUuODUyNSA2OS4wOTQ3IDIxLjYwNjEgNjcuMzM1OEMxNy4zNTk3IDY1LjU3NjkgMTMuNTAxMyA2Mi45OTg4IDEwLjI1MTMgNTkuNzQ4N0M3LjAwMTIxIDU2LjQ5ODcgNC40MjMxMyA1Mi42NDAzIDIuNjY0MjEgNDguMzkzOUMwLjkwNTMgNDQuMTQ3NSAtNC4wMTgyZS0wNyAzOS41OTYzIDAgMzVDNC4wMTgyZS0wNyAzMC40MDM3IDAuOTA1MzAzIDI1Ljg1MjUgMi42NjQyMiAyMS42MDYxQzQuNDIzMTMgMTcuMzU5NyA3LjAwMTIxIDEzLjUwMTMgMTAuMjUxMyAxMC4yNTEzQzEzLjUwMTMgNy4wMDEyMSAxNy4zNTk3IDQuNDIzMTMgMjEuNjA2MSAyLjY2NDIxQzI1Ljg1MjUgMC45MDUzIDMwLjQwMzcgLTYuMDI3M2UtMDcgMzUgMFYzNVY3MFpcIiBmaWxsPVwiI0QwQTY3QlwiLz5cbjxwYXRoIGQ9XCJNMTYuNzM2OCAyOC4xMjZDMTYuNTY4MyAyNy45NTc4IDE2LjI5NDkgMjcuOTU3NyAxNi4xMjY1IDI4LjEyNkMxNS45NTggMjguMjk0NCAxNS45NTgyIDI4LjU2NzggMTYuMTI2NSAyOC43MzYzTDIyLjY4MjEgMzUuMjkyTDE2LjEyNjUgNDEuODQ3N0MxNS45NTc5IDQyLjAxNjIgMTUuOTU3OSA0Mi4yODk1IDE2LjEyNjUgNDIuNDU4QzE2LjI5NSA0Mi42MjY1IDE2LjU2ODMgNDIuNjI2NSAxNi43MzY4IDQyLjQ1OEwyMy41OTcyIDM1LjU5NzdDMjMuNjgxNiAzNS41MTMzIDIzLjcyNDIgMzUuNDAyNiAyMy43MjQxIDM1LjI5MkMyMy43MjQxIDM1LjE4MTYgMjMuNjgxNCAzNS4wNzE1IDIzLjU5NzIgMzQuOTg3M0wxNi43MzY4IDI4LjEyNlpcIiBmaWxsPVwid2hpdGVcIi8+XG48L3N2Zz5gPy50cmltKCk7XG5cbiAgICAgICAgaWYgKHNob3dCdXR0b25zICYmIG5hdkNvbnRhaW5lcikge1xuICAgICAgICAgICAgaWYgKCFuYXZDb250YWluZXIucXVlcnlTZWxlY3RvcignLnN3aXBlci1idXR0b24tcHJldicpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgICAgIHByZXYuY2xhc3NOYW1lID0gJ3N3aXBlci1idXR0b24tcHJldic7XG4gICAgICAgICAgICAgICAgcHJldi5pbm5lckhUTUwgPSBhcnJvd1NWRztcbiAgICAgICAgICAgICAgICBwcmV2LnN0eWxlLnRyYW5zZm9ybSA9ICdyb3RhdGUoMTgwZGVnKSc7IC8vIFByZXYgZ2lyYWRhXG4gICAgICAgICAgICAgICAgbmF2Q29udGFpbmVyLmFwcGVuZENoaWxkKHByZXYpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIW5hdkNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuc3dpcGVyLWJ1dHRvbi1uZXh0JykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICAgICAgbmV4dC5jbGFzc05hbWUgPSAnc3dpcGVyLWJ1dHRvbi1uZXh0JztcbiAgICAgICAgICAgICAgICBuZXh0LmlubmVySFRNTCA9IGFycm93U1ZHO1xuICAgICAgICAgICAgICAgIG5hdkNvbnRhaW5lci5hcHBlbmRDaGlsZChuZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vID09PT09PSBCUkVBS1BPSU5UUyA9PT09PT1cbiAgICAgICAgY29uc3Qgc2xpZGVzX3BjID0gZ2V0TnVtKCdzbGlkZXNfcGMnLCAxKTtcbiAgICAgICAgY29uc3Qgc2xpZGVzX2xhcHRvcCA9IGdldE51bSgnc2xpZGVzX2xhcHRvcCcsIHNsaWRlc19wYyk7XG4gICAgICAgIGNvbnN0IHNsaWRlc190YWJsZXQgPSBnZXROdW0oJ3NsaWRlc190YWJsZXQnLCBzbGlkZXNfbGFwdG9wKTtcbiAgICAgICAgY29uc3Qgc2xpZGVzX21vYmlsZSA9IGdldE51bSgnc2xpZGVzX21vYmlsZScsIHNsaWRlc190YWJsZXQpO1xuICAgICAgICBjb25zdCBzbGlkZXNfbW9iaWxlX3NtYWxsID0gZ2V0TnVtKFxuICAgICAgICAgICAgJ3NsaWRlc19tb2JpbGVfc21hbGwnLFxuICAgICAgICAgICAgc2xpZGVzX21vYmlsZVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzbGlkZXNfbW9iaWxlX3hzbWFsbCA9IGdldE51bShcbiAgICAgICAgICAgICdzbGlkZXNfbW9iaWxlX3hzbWFsbCcsXG4gICAgICAgICAgICBzbGlkZXNfbW9iaWxlX3NtYWxsXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gPT09PT09IE9QQ0lPTkVTIFNXSVBFUiA9PT09PT1cbiAgICAgICAgY29uc3Qgc3dpcGVyT3B0aW9uczogYW55ID0ge1xuICAgICAgICAgICAgZGlyZWN0aW9uOiB2ZXJ0aWNhbCA/ICd2ZXJ0aWNhbCcgOiAnaG9yaXpvbnRhbCcsXG4gICAgICAgICAgICBzcGVlZCxcbiAgICAgICAgICAgIGxvb3A6IGluZmluaXRlLFxuICAgICAgICAgICAgY2VudGVyZWRTbGlkZXM6IGNlbnRlcixcbiAgICAgICAgICAgIGVmZmVjdDogZmFkZSA/ICdmYWRlJyA6ICdzbGlkZScsXG4gICAgICAgICAgICBhdXRvcGxheTogYXV0b3BsYXkgPyB7IGRlbGF5OiA1MDAwIH0gOiBmYWxzZSxcbiAgICAgICAgICAgIGFsbG93VG91Y2hNb3ZlOiBkcmFnZ2FibGUsXG4gICAgICAgICAgICBhdXRvSGVpZ2h0OiBhZGFwdGl2ZUhlaWdodCxcblxuICAgICAgICAgICAgZnJlZU1vZGU6IGZyZWVNb2RlID8geyBlbmFibGVkOiB0cnVlLCBtb21lbnR1bTogdHJ1ZSB9IDogZmFsc2UsXG5cbiAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IHZhcmlhYmxlV2lkdGggPyAnYXV0bycgOiBzbGlkZXNfbW9iaWxlX3hzbWFsbCxcbiAgICAgICAgICAgIHNwYWNlQmV0d2VlbjogdmFyaWFibGVXaWR0aCA/IDE2IDogMCxcblxuICAgICAgICAgICAgb2JzZXJ2ZXI6IHRydWUsXG4gICAgICAgICAgICBvYnNlcnZlUGFyZW50czogdHJ1ZSxcblxuICAgICAgICAgICAgbmF2aWdhdGlvbjpcbiAgICAgICAgICAgICAgICBzaG93QnV0dG9ucyAmJiBuYXZDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRFbDogJy5zd2lwZXItYnV0dG9uLW5leHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2RWw6ICcuc3dpcGVyLWJ1dHRvbi1wcmV2JyxcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDogZmFsc2UsXG5cbiAgICAgICAgICAgIHBhZ2luYXRpb246XG4gICAgICAgICAgICAgICAgc2hvd0RvdHMgJiYgZG90c0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWw6ICcuanMtc2xpZGVyLWRvdHMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlja2FibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA6IGZhbHNlLFxuXG4gICAgICAgICAgICBicmVha3BvaW50czoge1xuICAgICAgICAgICAgICAgIDU0MDoge1xuICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiB2YXJpYWJsZVdpZHRoID8gJ2F1dG8nIDogc2xpZGVzX21vYmlsZV9zbWFsbCxcbiAgICAgICAgICAgICAgICAgICAgZnJlZU1vZGU6IGZyZWVNb2RlID8geyBlbmFibGVkOiB0cnVlIH0gOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIDc2ODoge1xuICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiB2YXJpYWJsZVdpZHRoID8gJ2F1dG8nIDogc2xpZGVzX21vYmlsZSxcbiAgICAgICAgICAgICAgICAgICAgZnJlZU1vZGU6IGZyZWVNb2RlID8geyBlbmFibGVkOiB0cnVlIH0gOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIDEwMjQ6IHtcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogdmFyaWFibGVXaWR0aCA/ICdhdXRvJyA6IHNsaWRlc190YWJsZXQsXG4gICAgICAgICAgICAgICAgICAgIGZyZWVNb2RlOiBmcmVlTW9kZSA/IHsgZW5hYmxlZDogdHJ1ZSB9IDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAxMjgwOiB7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IHZhcmlhYmxlV2lkdGggPyAnYXV0bycgOiBzbGlkZXNfbGFwdG9wLFxuICAgICAgICAgICAgICAgICAgICBmcmVlTW9kZTogZnJlZU1vZGUgPyB7IGVuYWJsZWQ6IHRydWUgfSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgMTM2Njoge1xuICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiB2YXJpYWJsZVdpZHRoID8gJ2F1dG8nIDogc2xpZGVzX3BjLFxuICAgICAgICAgICAgICAgICAgICBmcmVlTW9kZTogZnJlZU1vZGUgPyB7IGVuYWJsZWQ6IHRydWUgfSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vID09PT09PSBJTklUIFNXSVBFUiA9PT09PT1cbiAgICAgICAgaWYgKCFTd2lwZXIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgJ1tTd2lwZXJJbml0RGlyZWN0aXZlXSBTd2lwZXIgZ2xvYmFsIG5vIGVuY29udHJhZG8gKHdpbmRvdy5Td2lwZXIgZXMgZmFsc3kpJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3dpcGVySW5zdGFuY2UgPSBuZXcgU3dpcGVyKHNsaWRlclNlbGVjdG9yLCBzd2lwZXJPcHRpb25zKTtcblxuICAgICAgICAvLyBQb3NpY2nDs24gZmxlY2hhcyB0aXBvIC0tc2xpZGVyTmF2X19wb3NpdGlvblxuICAgICAgICB0aGlzLmluaXRBcnJvd1Bvc2l0aW9uaW5nKHBhcmVudCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgICAgIGlmICh0aGlzLnN3aXBlckluc3RhbmNlPy5kZXN0cm95KSB7XG4gICAgICAgICAgICB0aGlzLnN3aXBlckluc3RhbmNlLmRlc3Ryb3kodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFycm93Q2xlYW51cEZucy5mb3JFYWNoKChmbikgPT4gZm4oKSk7XG4gICAgICAgIHRoaXMuYXJyb3dDbGVhbnVwRm5zID0gW107XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT0gUE9TSUNJw5NOIERFIEZMRUNIQVMgKGVxdWl2YWxlbnRlIGpzLXNsaWRlcl9maXgtYXJyb3dzKSA9PT09PT09PVxuICAgIHByaXZhdGUgaW5pdEFycm93UG9zaXRpb25pbmcocGFyZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzbGlkZXJzID0gcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KFxuICAgICAgICAgICAgJy5qcy1zbGlkZXJfZml4LWFycm93cydcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFzbGlkZXJzLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgICAgIHNsaWRlcnMuZm9yRWFjaCgoc2xpZGVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWN0aW9uID1cbiAgICAgICAgICAgICAgICBzbGlkZXIuY2xvc2VzdDxIVE1MRWxlbWVudD4oJy5qcy1hY3RpdmUtc2xpZGVyJykgfHwgcGFyZW50O1xuICAgICAgICAgICAgaWYgKCFzZWN0aW9uKSByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IGNhbGNQb3NpdGlvbiA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgaGVpZ2h0U2VsZWN0b3I6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBtb2JpbGVTZWwgPSBzbGlkZXIucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oXG4gICAgICAgICAgICAgICAgICAgICcuanMtc2xpZGVyX2ZpeC1hcnJvd3Mtem9uZS5tb2JpbGUnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkZXNrdG9wU2VsID0gc2xpZGVyLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KFxuICAgICAgICAgICAgICAgICAgICAnLmpzLXNsaWRlcl9maXgtYXJyb3dzLXpvbmUuZGVza3RvcCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdlbmVyaWNTZWwgPSBzbGlkZXIucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oXG4gICAgICAgICAgICAgICAgICAgICcuanMtc2xpZGVyX2ZpeC1hcnJvd3Mtem9uZSdcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKG1vYmlsZVNlbCAmJiB3aW5kb3cuaW5uZXJXaWR0aCA8PSAxMjc5KSB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodFNlbGVjdG9yID0gbW9iaWxlU2VsO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVza3RvcFNlbCAmJiB3aW5kb3cuaW5uZXJXaWR0aCA+PSAxMjgwKSB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodFNlbGVjdG9yID0gZGVza3RvcFNlbDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHRTZWxlY3RvciA9IGdlbmVyaWNTZWw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFoZWlnaHRTZWxlY3RvcikgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVsYXRpdmUgPVxuICAgICAgICAgICAgICAgICAgICBoZWlnaHRTZWxlY3Rvci5jbG9zZXN0PEhUTUxFbGVtZW50PignLnJlbGF0aXZlJyk7XG4gICAgICAgICAgICAgICAgaWYgKCFyZWxhdGl2ZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVjdCA9IGhlaWdodFNlbGVjdG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFJlY3QgPSByZWxhdGl2ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSByZWN0LnRvcCAtIHBhcmVudFJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyO1xuXG4gICAgICAgICAgICAgICAgc2VjdGlvbi5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgICAgICAgICAgJy0tc2xpZGVyTmF2X19wb3NpdGlvbicsXG4gICAgICAgICAgICAgICAgICAgIGAke2hlaWdodH1weGBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY2FsY1Bvc2l0aW9uKCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGNhbGNQb3NpdGlvbiwgNTAwKTtcblxuICAgICAgICAgICAgY29uc3Qgb25TY3JvbGwgPSAoKSA9PiBjYWxjUG9zaXRpb24oKTtcbiAgICAgICAgICAgIGNvbnN0IG9uUmVzaXplID0gKCkgPT4gY2FsY1Bvc2l0aW9uKCk7XG5cbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbCwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uUmVzaXplLCB7IHBhc3NpdmU6IHRydWUgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuYXJyb3dDbGVhbnVwRm5zLnB1c2goKCkgPT5cbiAgICAgICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25TY3JvbGwpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5hcnJvd0NsZWFudXBGbnMucHVzaCgoKSA9PlxuICAgICAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvblJlc2l6ZSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyLWluaXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2RpcmVjdGl2ZXMvc2xpZGVycy9zd2lwZXItaW5pdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUVILFNBQVMsRUFFVCxNQUFNLEVBRU4sV0FBVyxHQUNkLE1BQU0sZUFBZSxDQUFDOztBQVN2QixNQUFNLE9BQU8sbUJBQW1CO0lBSTVCLFlBQ1ksSUFBNkIsRUFDUixVQUFrQjtRQUR2QyxTQUFJLEdBQUosSUFBSSxDQUF5QjtRQUNSLGVBQVUsR0FBVixVQUFVLENBQVE7UUFKM0Msb0JBQWUsR0FBc0IsRUFBRSxDQUFDO0lBSzdDLENBQUM7SUFFSixLQUFLLENBQUMsZUFBZTtRQUNqQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3JDLE9BQU87U0FDVjtRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUF1QixDQUFDO1FBRS9DLDJCQUEyQjtRQUMzQixNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQVcsRUFBc0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5RCxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLE1BQU0sQ0FBQztRQUM5RCxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQVcsRUFBRSxRQUFRLEdBQUcsQ0FBQyxFQUFVLEVBQUU7WUFDakQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxD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RSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs7MEJBT1EsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEluamVjdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgUExBVEZPUk1fSUQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vLyBTd2lwZXIgZ2xvYmFsICh2aWVuZSBkZWwgYW5ndWxhci5qc29uIC0+IHNjcmlwdHMpXG5kZWNsYXJlIGNvbnN0IFN3aXBlcjogYW55O1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1thcHBTd2lwZXJJbml0XScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU3dpcGVySW5pdERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSBzd2lwZXJJbnN0YW5jZT86IGFueTtcbiAgICBwcml2YXRlIGFycm93Q2xlYW51cEZuczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGhvc3Q6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IG9iamVjdFxuICAgICkge31cblxuICAgIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmhvc3QubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgZGF0YXNldCA9IHBhcmVudC5kYXRhc2V0IGFzIERPTVN0cmluZ01hcDtcblxuICAgICAgICAvLyBIZWxwZXJzIHBhcmEgbGVlciBkYXRhLSpcbiAgICAgICAgY29uc3QgZ2V0ID0gKGtleTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IGRhdGFzZXRba2V5XTtcbiAgICAgICAgY29uc3QgZ2V0Qm9vbCA9IChrZXk6IHN0cmluZyk6IGJvb2xlYW4gPT4gZ2V0KGtleSkgPT09ICd0cnVlJztcbiAgICAgICAgY29uc3QgZ2V0TnVtID0gKGtleTogc3RyaW5nLCBmYWxsYmFjayA9IDApOiBudW1iZXIgPT4ge1xuICAgICAgICAgICAgY29uc3QgdiA9IE51bWJlcihnZXQoa2V5KSk7XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHYpID8gdiA6IGZhbGxiYWNrO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHNsaWRlck5hbWUgPSBnZXQoJ3NsaWRlcl9uYW1lJyk7XG4gICAgICAgIGlmICghc2xpZGVyTmFtZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICdbU3dpcGVySW5pdERpcmVjdGl2ZV0gU2luIGRhdGEtc2xpZGVyX25hbWUgZW4gZWwgcGFyZW50JyxcbiAgICAgICAgICAgICAgICBwYXJlbnRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzbGlkZXJTZWxlY3RvciA9IHBhcmVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihcbiAgICAgICAgICAgICcuJyArIHNsaWRlck5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFzbGlkZXJTZWxlY3Rvcikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICdbU3dpcGVySW5pdERpcmVjdGl2ZV0gTm8gZW5jdWVudHJvIGVsIGNvbnRlbmVkb3IgLicsXG4gICAgICAgICAgICAgICAgc2xpZGVyTmFtZSxcbiAgICAgICAgICAgICAgICAnIGRlbnRybyBkZSAnLFxuICAgICAgICAgICAgICAgIHBhcmVudFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN3aXBlciB5YSBpbmljaWFsaXphZG8g4oaSIHNhbGlyXG4gICAgICAgIGlmIChzbGlkZXJTZWxlY3Rvci5jbGFzc0xpc3QuY29udGFpbnMoJ3N3aXBlci1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyA9PT09PT0gTEVDVFVSQSBERSBEQVRBLUFUVFJJQlVURVMgPT09PT09XG4gICAgICAgIGNvbnN0IHNob3dEb3RzID0gZ2V0Qm9vbCgnc2xpZGVyX3Nob3dkb3RzJyk7XG4gICAgICAgIGNvbnN0IHNob3dCdXR0b25zID0gZ2V0Qm9vbCgnc2xpZGVyX3Nob3didG5zJyk7XG4gICAgICAgIGNvbnN0IGZhZGUgPSBnZXRCb29sKCdzbGlkZXJfZmFkZScpO1xuICAgICAgICBjb25zdCBjZW50ZXIgPSBnZXRCb29sKCdzbGlkZXJfY2VudGVybW9kZScpO1xuICAgICAgICBjb25zdCBhdXRvcGxheSA9IGdldEJvb2woJ3NsaWRlcl9hdXRvcGxheScpO1xuICAgICAgICBjb25zdCB2ZXJ0aWNhbCA9IGdldEJvb2woJ3NsaWRlcl92ZXJ0aWNhbCcpO1xuICAgICAgICBjb25zdCBydGwgPSBnZXRCb29sKCdzbGlkZXJfcnRsJyk7XG4gICAgICAgIGNvbnN0IGRyYWdnYWJsZSA9IGdldCgnc2xpZGVyX2RyYWdnYWJsZScpICE9PSAnZmFsc2UnO1xuICAgICAgICBjb25zdCBhZGFwdGl2ZUhlaWdodCA9IGdldEJvb2woJ3NsaWRlcl9hZGFwdGl2ZV9oZWlnaHQnKTtcblxuICAgICAgICBjb25zdCB2YXJpYWJsZVdpZHRoID0gZ2V0Qm9vbCgnc2xpZGVyX3ZhcmlhYmxlX3dpZHRoJyk7XG4gICAgICAgIGNvbnN0IGZyZWVNb2RlID0gZ2V0Qm9vbCgnc2xpZGVyX2ZyZWVtb2RlJyk7XG5cbiAgICAgICAgY29uc3Qgc3BlZWQgPSBnZXROdW0oJ3NsaWRlcl9zcGVlZCcsIDc1MCk7XG4gICAgICAgIGNvbnN0IGluZmluaXRlID0gZ2V0Qm9vbCgnc2xpZGVzX2luZmluaXRlJyk7XG5cbiAgICAgICAgLy8gY29udGVuZWRvcmVzXG4gICAgICAgIGNvbnN0IG5hdkNvbnRhaW5lciA9XG4gICAgICAgICAgICBwYXJlbnQucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy5qcy1zbGlkZXItYXJyb3dzJyk7XG4gICAgICAgIGNvbnN0IGRvdHNDb250YWluZXIgPVxuICAgICAgICAgICAgcGFyZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuanMtc2xpZGVyLWRvdHMnKTtcblxuICAgICAgICAvLyA9PT09PT0gU1ZHIEZMRUNIQVMgPT09PT09XG4gICAgICAgIGNvbnN0IGFycm93U1ZHID0gYFxuPHN2ZyB3aWR0aD1cIjM1XCIgaGVpZ2h0PVwiNzBcIiB2aWV3Qm94PVwiMCAwIDM1IDcwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48cGF0aCBkPVwiTTM1IDcwQzMwLjQwMzcgNzAgMjUuODUyNSA2OS4wOTQ3IDIxLjYwNjEgNjcuMzM1OEMxNy4zNTk3IDY1LjU3NjkgMTMuNTAxMyA2Mi45OTg4IDEwLjI1MTMgNTkuNzQ4N0M3LjAwMTIxIDU2LjQ5ODcgNC40MjMxMyA1Mi42NDAzIDIuNjY0MjEgNDguMzkzOUMwLjkwNTMgNDQuMTQ3NSAtNC4wMTgyZS0wNyAzOS41OTYzIDAgMzVDNC4wMTgyZS0wNyAzMC40MDM3IDAuOTA1MzAzIDI1Ljg1MjUgMi42NjQyMiAyMS42MDYxQzQuNDIzMTMgMTcuMzU5NyA3LjAwMTIxIDEzLjUwMTMgMTAuMjUxMyAxMC4yNTEzQzEzLjUwMTMgNy4wMDEyMSAxNy4zNTk3IDQuNDIzMTMgMjEuNjA2MSAyLjY2NDIxQzI1Ljg1MjUgMC45MDUzIDMwLjQwMzcgLTYuMDI3M2UtMDcgMzUgMFYzNVY3MFpcIiBmaWxsPVwiI0QwQTY3QlwiLz5cbjxwYXRoIGQ9XCJNMTYuNzM2OCAyOC4xMjZDMTYuNTY4MyAyNy45NTc4IDE2LjI5NDkgMjcuOTU3NyAxNi4xMjY1IDI4LjEyNkMxNS45NTggMjguMjk0NCAxNS45NTgyIDI4LjU2NzggMTYuMTI2NSAyOC43MzYzTDIyLjY4MjEgMzUuMjkyTDE2LjEyNjUgNDEuODQ3N0MxNS45NTc5IDQyLjAxNjIgMTUuOTU3OSA0Mi4yODk1IDE2LjEyNjUgNDIuNDU4QzE2LjI5NSA0Mi42MjY1IDE2LjU2ODMgNDIuNjI2NSAxNi43MzY4IDQyLjQ1OEwyMy41OTcyIDM1LjU5NzdDMjMuNjgxNiAzNS41MTMzIDIzLjcyNDIgMzUuNDAyNiAyMy43MjQxIDM1LjI5MkMyMy43MjQxIDM1LjE4MTYgMjMuNjgxNCAzNS4wNzE1IDIzLjU5NzIgMzQuOTg3M0wxNi43MzY4IDI4LjEyNlpcIiBmaWxsPVwid2hpdGVcIi8+XG48L3N2Zz5gPy50cmltKCk7XG5cbiAgICAgICAgaWYgKHNob3dCdXR0b25zICYmIG5hdkNvbnRhaW5lcikge1xuICAgICAgICAgICAgaWYgKCFuYXZDb250YWluZXIucXVlcnlTZWxlY3RvcignLnN3aXBlci1idXR0b24tcHJldicpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgICAgIHByZXYuY2xhc3NOYW1lID0gJ3N3aXBlci1idXR0b24tcHJldic7XG4gICAgICAgICAgICAgICAgcHJldi5pbm5lckhUTUwgPSBhcnJvd1NWRztcbiAgICAgICAgICAgICAgICBwcmV2LnN0eWxlLnRyYW5zZm9ybSA9ICdyb3RhdGUoMTgwZGVnKSc7IC8vIFByZXYgZ2lyYWRhXG4gICAgICAgICAgICAgICAgbmF2Q29udGFpbmVyLmFwcGVuZENoaWxkKHByZXYpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIW5hdkNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuc3dpcGVyLWJ1dHRvbi1uZXh0JykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICAgICAgbmV4dC5jbGFzc05hbWUgPSAnc3dpcGVyLWJ1dHRvbi1uZXh0JztcbiAgICAgICAgICAgICAgICBuZXh0LmlubmVySFRNTCA9IGFycm93U1ZHO1xuICAgICAgICAgICAgICAgIG5hdkNvbnRhaW5lci5hcHBlbmRDaGlsZChuZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vID09PT09PSBCUkVBS1BPSU5UUyA9PT09PT1cbiAgICAgICAgY29uc3Qgc2xpZGVzX3BjID0gZ2V0TnVtKCdzbGlkZXNfcGMnLCAxKTtcbiAgICAgICAgY29uc3Qgc2xpZGVzX2xhcHRvcCA9IGdldE51bSgnc2xpZGVzX2xhcHRvcCcsIHNsaWRlc19wYyk7XG4gICAgICAgIGNvbnN0IHNsaWRlc190YWJsZXQgPSBnZXROdW0oJ3NsaWRlc190YWJsZXQnLCBzbGlkZXNfbGFwdG9wKTtcbiAgICAgICAgY29uc3Qgc2xpZGVzX21vYmlsZSA9IGdldE51bSgnc2xpZGVzX21vYmlsZScsIHNsaWRlc190YWJsZXQpO1xuICAgICAgICBjb25zdCBzbGlkZXNfbW9iaWxlX3NtYWxsID0gZ2V0TnVtKFxuICAgICAgICAgICAgJ3NsaWRlc19tb2JpbGVfc21hbGwnLFxuICAgICAgICAgICAgc2xpZGVzX21vYmlsZVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzbGlkZXNfbW9iaWxlX3hzbWFsbCA9IGdldE51bShcbiAgICAgICAgICAgICdzbGlkZXNfbW9iaWxlX3hzbWFsbCcsXG4gICAgICAgICAgICBzbGlkZXNfbW9iaWxlX3NtYWxsXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gPT09PT09IE9QQ0lPTkVTIFNXSVBFUiA9PT09PT1cbiAgICAgICAgY29uc3Qgc3dpcGVyT3B0aW9uczogYW55ID0ge1xuICAgICAgICAgICAgZGlyZWN0aW9uOiB2ZXJ0aWNhbCA/ICd2ZXJ0aWNhbCcgOiAnaG9yaXpvbnRhbCcsXG4gICAgICAgICAgICBzcGVlZCxcbiAgICAgICAgICAgIGxvb3A6IGluZmluaXRlLFxuICAgICAgICAgICAgY2VudGVyZWRTbGlkZXM6IGNlbnRlcixcbiAgICAgICAgICAgIGVmZmVjdDogZmFkZSA/ICdmYWRlJyA6ICdzbGlkZScsXG4gICAgICAgICAgICBhdXRvcGxheTogYXV0b3BsYXkgPyB7IGRlbGF5OiA1MDAwIH0gOiBmYWxzZSxcbiAgICAgICAgICAgIGFsbG93VG91Y2hNb3ZlOiBkcmFnZ2FibGUsXG4gICAgICAgICAgICBhdXRvSGVpZ2h0OiBhZGFwdGl2ZUhlaWdodCxcblxuICAgICAgICAgICAgZnJlZU1vZGU6IGZyZWVNb2RlID8geyBlbmFibGVkOiB0cnVlLCBtb21lbnR1bTogdHJ1ZSB9IDogZmFsc2UsXG5cbiAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IHZhcmlhYmxlV2lkdGggPyAnYXV0bycgOiBzbGlkZXNfbW9iaWxlX3hzbWFsbCxcbiAgICAgICAgICAgIHNwYWNlQmV0d2VlbjogdmFyaWFibGVXaWR0aCA/IDE2IDogMCxcblxuICAgICAgICAgICAgb2JzZXJ2ZXI6IHRydWUsXG4gICAgICAgICAgICBvYnNlcnZlUGFyZW50czogdHJ1ZSxcblxuICAgICAgICAgICAgbmF2aWdhdGlvbjpcbiAgICAgICAgICAgICAgICBzaG93QnV0dG9ucyAmJiBuYXZDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRFbDogJy5zd2lwZXItYnV0dG9uLW5leHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2RWw6ICcuc3dpcGVyLWJ1dHRvbi1wcmV2JyxcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDogZmFsc2UsXG5cbiAgICAgICAgICAgIHBhZ2luYXRpb246XG4gICAgICAgICAgICAgICAgc2hvd0RvdHMgJiYgZG90c0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWw6ICcuanMtc2xpZGVyLWRvdHMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlja2FibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA6IGZhbHNlLFxuXG4gICAgICAgICAgICBicmVha3BvaW50czoge1xuICAgICAgICAgICAgICAgIDU0MDoge1xuICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiB2YXJpYWJsZVdpZHRoID8gJ2F1dG8nIDogc2xpZGVzX21vYmlsZV9zbWFsbCxcbiAgICAgICAgICAgICAgICAgICAgZnJlZU1vZGU6IGZyZWVNb2RlID8geyBlbmFibGVkOiB0cnVlIH0gOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIDc2ODoge1xuICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiB2YXJpYWJsZVdpZHRoID8gJ2F1dG8nIDogc2xpZGVzX21vYmlsZSxcbiAgICAgICAgICAgICAgICAgICAgZnJlZU1vZGU6IGZyZWVNb2RlID8geyBlbmFibGVkOiB0cnVlIH0gOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIDEwMjQ6IHtcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogdmFyaWFibGVXaWR0aCA/ICdhdXRvJyA6IHNsaWRlc190YWJsZXQsXG4gICAgICAgICAgICAgICAgICAgIGZyZWVNb2RlOiBmcmVlTW9kZSA/IHsgZW5hYmxlZDogdHJ1ZSB9IDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAxMjgwOiB7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IHZhcmlhYmxlV2lkdGggPyAnYXV0bycgOiBzbGlkZXNfbGFwdG9wLFxuICAgICAgICAgICAgICAgICAgICBmcmVlTW9kZTogZnJlZU1vZGUgPyB7IGVuYWJsZWQ6IHRydWUgfSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgMTM2Njoge1xuICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiB2YXJpYWJsZVdpZHRoID8gJ2F1dG8nIDogc2xpZGVzX3BjLFxuICAgICAgICAgICAgICAgICAgICBmcmVlTW9kZTogZnJlZU1vZGUgPyB7IGVuYWJsZWQ6IHRydWUgfSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vID09PT09PSBJTklUIFNXSVBFUiA9PT09PT1cbiAgICAgICAgaWYgKCFTd2lwZXIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgJ1tTd2lwZXJJbml0RGlyZWN0aXZlXSBTd2lwZXIgZ2xvYmFsIG5vIGVuY29udHJhZG8gKHdpbmRvdy5Td2lwZXIgZXMgZmFsc3kpJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3dpcGVySW5zdGFuY2UgPSBuZXcgU3dpcGVyKHNsaWRlclNlbGVjdG9yLCBzd2lwZXJPcHRpb25zKTtcblxuICAgICAgICAvLyBQb3NpY2nDs24gZmxlY2hhcyB0aXBvIC0tc2xpZGVyTmF2X19wb3NpdGlvblxuICAgICAgICB0aGlzLmluaXRBcnJvd1Bvc2l0aW9uaW5nKHBhcmVudCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgICAgIGlmICh0aGlzLnN3aXBlckluc3RhbmNlPy5kZXN0cm95KSB7XG4gICAgICAgICAgICB0aGlzLnN3aXBlckluc3RhbmNlLmRlc3Ryb3kodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFycm93Q2xlYW51cEZucy5mb3JFYWNoKChmbikgPT4gZm4oKSk7XG4gICAgICAgIHRoaXMuYXJyb3dDbGVhbnVwRm5zID0gW107XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT0gUE9TSUNJw5NOIERFIEZMRUNIQVMgKGVxdWl2YWxlbnRlIGpzLXNsaWRlcl9maXgtYXJyb3dzKSA9PT09PT09PVxuICAgIHByaXZhdGUgaW5pdEFycm93UG9zaXRpb25pbmcocGFyZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzbGlkZXJzID0gcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KFxuICAgICAgICAgICAgJy5qcy1zbGlkZXJfZml4LWFycm93cydcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFzbGlkZXJzLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgICAgIHNsaWRlcnMuZm9yRWFjaCgoc2xpZGVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWN0aW9uID1cbiAgICAgICAgICAgICAgICBzbGlkZXIuY2xvc2VzdDxIVE1MRWxlbWVudD4oJy5qcy1hY3RpdmUtc2xpZGVyJykgfHwgcGFyZW50O1xuICAgICAgICAgICAgaWYgKCFzZWN0aW9uKSByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IGNhbGNQb3NpdGlvbiA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgaGVpZ2h0U2VsZWN0b3I6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBtb2JpbGVTZWwgPSBzbGlkZXIucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oXG4gICAgICAgICAgICAgICAgICAgICcuanMtc2xpZGVyX2ZpeC1hcnJvd3Mtem9uZS5tb2JpbGUnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkZXNrdG9wU2VsID0gc2xpZGVyLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KFxuICAgICAgICAgICAgICAgICAgICAnLmpzLXNsaWRlcl9maXgtYXJyb3dzLXpvbmUuZGVza3RvcCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdlbmVyaWNTZWwgPSBzbGlkZXIucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oXG4gICAgICAgICAgICAgICAgICAgICcuanMtc2xpZGVyX2ZpeC1hcnJvd3Mtem9uZSdcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKG1vYmlsZVNlbCAmJiB3aW5kb3cuaW5uZXJXaWR0aCA8PSAxMjc5KSB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodFNlbGVjdG9yID0gbW9iaWxlU2VsO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVza3RvcFNlbCAmJiB3aW5kb3cuaW5uZXJXaWR0aCA+PSAxMjgwKSB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodFNlbGVjdG9yID0gZGVza3RvcFNlbDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHRTZWxlY3RvciA9IGdlbmVyaWNTZWw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFoZWlnaHRTZWxlY3RvcikgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVsYXRpdmUgPVxuICAgICAgICAgICAgICAgICAgICBoZWlnaHRTZWxlY3Rvci5jbG9zZXN0PEhUTUxFbGVtZW50PignLnJlbGF0aXZlJyk7XG4gICAgICAgICAgICAgICAgaWYgKCFyZWxhdGl2ZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVjdCA9IGhlaWdodFNlbGVjdG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFJlY3QgPSByZWxhdGl2ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSByZWN0LnRvcCAtIHBhcmVudFJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyO1xuXG4gICAgICAgICAgICAgICAgc2VjdGlvbi5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgICAgICAgICAgJy0tc2xpZGVyTmF2X19wb3NpdGlvbicsXG4gICAgICAgICAgICAgICAgICAgIGAke2hlaWdodH1weGBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY2FsY1Bvc2l0aW9uKCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGNhbGNQb3NpdGlvbiwgNTAwKTtcblxuICAgICAgICAgICAgY29uc3Qgb25TY3JvbGwgPSAoKSA9PiBjYWxjUG9zaXRpb24oKTtcbiAgICAgICAgICAgIGNvbnN0IG9uUmVzaXplID0gKCkgPT4gY2FsY1Bvc2l0aW9uKCk7XG5cbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbCwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uUmVzaXplLCB7IHBhc3NpdmU6IHRydWUgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuYXJyb3dDbGVhbnVwRm5zLnB1c2goKCkgPT5cbiAgICAgICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25TY3JvbGwpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5hcnJvd0NsZWFudXBGbnMucHVzaCgoKSA9PlxuICAgICAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvblJlc2l6ZSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
package/fesm2022/ctt-babylon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
[diffend] Oversized file quarantined before diffing.
|
|
2
2
|
name: package/fesm2022/ctt-babylon.mjs
|
|
3
|
-
size:
|
|
4
|
-
sha256:
|
|
3
|
+
size: 57913026 bytes
|
|
4
|
+
sha256: 604bae8f9be725c8cc00d7db328d1e32463415abfcda46ada834f3bdcb6521b0
|