@edm-sdui/sdui 1.0.63 → 1.0.65
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/edm-sdui-sdui-1.0.65.tgz +0 -0
- package/esm2022/lib/core/uitheme/mapping/size-mapping.mjs +2 -2
- package/esm2022/lib/directives/uiview.directive.mjs +28 -4
- package/fesm2022/edm-sdui-sdui.mjs +28 -4
- package/fesm2022/edm-sdui-sdui.mjs.map +1 -1
- package/lib/directives/uiview.directive.d.ts +1 -0
- package/lib/directives/uiview.directive.d.ts.map +1 -1
- package/package.json +1 -1
- package/edm-sdui-sdui-1.0.63.tgz +0 -0
|
Binary file
|
|
@@ -12,7 +12,7 @@ export const sizeMapping = {
|
|
|
12
12
|
[UISize.ASSET_6]: { width: '20px', height: '20px', scalable: false },
|
|
13
13
|
[UISize.ASSET_7]: { width: '22px', height: '22px', scalable: false },
|
|
14
14
|
[UISize.ASSET_8]: { width: '24px', height: '24px', scalable: false },
|
|
15
|
-
[UISize.ASSET_9]: { width: '
|
|
15
|
+
[UISize.ASSET_9]: { width: '40px', height: '40px', scalable: false },
|
|
16
16
|
[UISize.ASSET_10]: { width: '30px', height: '30px', scalable: false },
|
|
17
17
|
[UISize.CARD_1]: { width: '210px', height: '201px', scalable: true },
|
|
18
18
|
[UISize.CARD_2]: { width: '300px', height: '311px', scalable: true },
|
|
@@ -23,4 +23,4 @@ export const sizeMapping = {
|
|
|
23
23
|
export const sizeMappingHeight = Object.fromEntries(Object.entries(sizeMapping).map(([key, config]) => [key, config.height]));
|
|
24
24
|
/** @deprecated Use `sizeMapping[size].width` */
|
|
25
25
|
export const sizeMappingWidth = Object.fromEntries(Object.entries(sizeMapping).map(([key, config]) => [key, config.width]));
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l6ZS1tYXBwaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZHVpL3NyYy9saWIvY29yZS91aXRoZW1lL21hcHBpbmcvc2l6ZS1tYXBwaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQVF6QyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQStCO0lBQ3JELENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7SUFDckUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtJQUNyRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO0lBQ3JFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7SUFFckUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtJQUNwRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO0lBQ3BFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7SUFDcEUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtJQUNwRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO0lBQ3BFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7SUFDcEUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtJQUNwRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO0lBQ3BFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7SUFDcEUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtJQUVyRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO0lBQ3BFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7SUFDcEUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtJQUNyRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO0NBQ3BFLENBQUM7QUFFRixpREFBaUQ7QUFDakQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQTJCLE1BQU0sQ0FBQyxXQUFXLENBQ3pFLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUMvQyxDQUFDO0FBRTVCLGdEQUFnRDtBQUNoRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBMkIsTUFBTSxDQUFDLFdBQVcsQ0FDeEUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVSVNpemUgfSBmcm9tICcuLi9lbnVtcy91aXNpemUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpemVDb25maWcge1xuICB3aWR0aDogc3RyaW5nO1xuICBoZWlnaHQ6IHN0cmluZztcbiAgc2NhbGFibGU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBzaXplTWFwcGluZzogUmVjb3JkPFVJU2l6ZSwgU2l6ZUNvbmZpZz4gPSB7XG4gIFtVSVNpemUuVEhVTUJfMV06IHsgd2lkdGg6ICcxMDBweCcsIGhlaWdodDogJzU2cHgnLCBzY2FsYWJsZTogZmFsc2UgfSxcbiAgW1VJU2l6ZS5USFVNQl8yXTogeyB3aWR0aDogJzEwNXB4JywgaGVpZ2h0OiAnNDBweCcsIHNjYWxhYmxlOiBmYWxzZSB9LFxuICBbVUlTaXplLlRIVU1CXzNdOiB7IHdpZHRoOiAnMjEwcHgnLCBoZWlnaHQ6ICcxMThweCcsIHNjYWxhYmxlOiB0cnVlIH0sXG4gIFtVSVNpemUuVEhVTUJfNF06IHsgd2lkdGg6ICczMDBweCcsIGhlaWdodDogJzE2OXB4Jywgc2NhbGFibGU6IHRydWUgfSxcblxuICBbVUlTaXplLkFTU0VUXzFdOiB7IHdpZHRoOiAnMjZweCcsIGhlaWdodDogJzI2cHgnLCBzY2FsYWJsZTogZmFsc2UgfSxcbiAgW1VJU2l6ZS5BU1NFVF8yXTogeyB3aWR0aDogJzE2cHgnLCBoZWlnaHQ6ICcxNnB4Jywgc2NhbGFibGU6IGZhbHNlIH0sXG4gIFtVSVNpemUuQVNTRVRfM106IHsgd2lkdGg6ICc4MHB4JywgaGVpZ2h0OiAnODBweCcsIHNjYWxhYmxlOiBmYWxzZSB9LFxuICBbVUlTaXplLkFTU0VUXzRdOiB7IHdpZHRoOiAnNjBweCcsIGhlaWdodDogJzYwcHgnLCBzY2FsYWJsZTogZmFsc2UgfSxcbiAgW1VJU2l6ZS5BU1NFVF81XTogeyB3aWR0aDogJzE4cHgnLCBoZWlnaHQ6ICcxOHB4Jywgc2NhbGFibGU6IGZhbHNlIH0sXG4gIFtVSVNpemUuQVNTRVRfNl06IHsgd2lkdGg6ICcyMHB4JywgaGVpZ2h0OiAnMjBweCcsIHNjYWxhYmxlOiBmYWxzZSB9LFxuICBbVUlTaXplLkFTU0VUXzddOiB7IHdpZHRoOiAnMjJweCcsIGhlaWdodDogJzIycHgnLCBzY2FsYWJsZTogZmFsc2UgfSxcbiAgW1VJU2l6ZS5BU1NFVF84XTogeyB3aWR0aDogJzI0cHgnLCBoZWlnaHQ6ICcyNHB4Jywgc2NhbGFibGU6IGZhbHNlIH0sXG4gIFtVSVNpemUuQVNTRVRfOV06IHsgd2lkdGg6ICc0MHB4JywgaGVpZ2h0OiAnNDBweCcsIHNjYWxhYmxlOiBmYWxzZSB9LFxuICBbVUlTaXplLkFTU0VUXzEwXTogeyB3aWR0aDogJzMwcHgnLCBoZWlnaHQ6ICczMHB4Jywgc2NhbGFibGU6IGZhbHNlIH0sXG5cbiAgW1VJU2l6ZS5DQVJEXzFdOiB7IHdpZHRoOiAnMjEwcHgnLCBoZWlnaHQ6ICcyMDFweCcsIHNjYWxhYmxlOiB0cnVlIH0sXG4gIFtVSVNpemUuQ0FSRF8yXTogeyB3aWR0aDogJzMwMHB4JywgaGVpZ2h0OiAnMzExcHgnLCBzY2FsYWJsZTogdHJ1ZSB9LFxuICBbVUlTaXplLkNBUkRfM106IHsgd2lkdGg6ICczMDBweCcsIGhlaWdodDogJzM5MHB4Jywgc2NhbGFibGU6IGZhbHNlIH0sXG4gIFtVSVNpemUuQ0FSRF80XTogeyB3aWR0aDogJzIxMHB4JywgaGVpZ2h0OiAnMTAwJScsIHNjYWxhYmxlOiB0cnVlIH0sXG59O1xuXG4vKiogQGRlcHJlY2F0ZWQgVXNlIGBzaXplTWFwcGluZ1tzaXplXS5oZWlnaHRgICovXG5leHBvcnQgY29uc3Qgc2l6ZU1hcHBpbmdIZWlnaHQ6IFJlY29yZDxVSVNpemUsIHN0cmluZz4gPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gIE9iamVjdC5lbnRyaWVzKHNpemVNYXBwaW5nKS5tYXAoKFtrZXksIGNvbmZpZ10pID0+IFtrZXksIGNvbmZpZy5oZWlnaHRdKSxcbikgYXMgUmVjb3JkPFVJU2l6ZSwgc3RyaW5nPjtcblxuLyoqIEBkZXByZWNhdGVkIFVzZSBgc2l6ZU1hcHBpbmdbc2l6ZV0ud2lkdGhgICovXG5leHBvcnQgY29uc3Qgc2l6ZU1hcHBpbmdXaWR0aDogUmVjb3JkPFVJU2l6ZSwgc3RyaW5nPiA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgT2JqZWN0LmVudHJpZXMoc2l6ZU1hcHBpbmcpLm1hcCgoW2tleSwgY29uZmlnXSkgPT4gW2tleSwgY29uZmlnLndpZHRoXSksXG4pIGFzIFJlY29yZDxVSVNpemUsIHN0cmluZz47XG4iXX0=
|
|
@@ -18,6 +18,7 @@ import * as i2 from "../core/services/ui-action.service";
|
|
|
18
18
|
import * as i3 from "../core/view-models/uiscreen.viewmodel";
|
|
19
19
|
export class UIViewDirective {
|
|
20
20
|
static { this.EXPLORE_LAST_ANCHOR_KEY = 'exploreLastAnchor'; }
|
|
21
|
+
static { this.EXPLORE_CLICKED_ANCHOR_KEY = 'exploreClickedAnchor'; }
|
|
21
22
|
static { this.EXPLORE_LAST_ROW_INDEX_KEY = 'exploreLastRowIndex'; }
|
|
22
23
|
static { this.EXPLORE_LAST_ROW_SCROLL_LEFT_KEY = 'exploreLastRowScrollLeft'; }
|
|
23
24
|
static { this.EXPLORE_LAST_ITEM_ID_KEY = 'exploreLastItemId'; }
|
|
@@ -303,13 +304,19 @@ export class UIViewDirective {
|
|
|
303
304
|
return;
|
|
304
305
|
}
|
|
305
306
|
const section = this.resolveExploreSection(element, scrollRow);
|
|
306
|
-
const
|
|
307
|
+
const activeTag = document.querySelector('.row-tag--selected')?.getAttribute('data-tag');
|
|
308
|
+
const sectionId = section?.id || activeTag || sessionStorage.getItem(UIViewDirective.EXPLORE_LAST_ANCHOR_KEY);
|
|
307
309
|
const rowIndex = this.resolveRowIndex(scrollRow, section);
|
|
308
310
|
const itemId = this.resolveClickedItemId(element, section);
|
|
309
311
|
try {
|
|
310
312
|
if (sectionId) {
|
|
311
313
|
sessionStorage.setItem(UIViewDirective.EXPLORE_LAST_ANCHOR_KEY, sectionId);
|
|
312
314
|
}
|
|
315
|
+
// Salva o anchor do clique separado do scroll spy para não ser sobrescrito durante navegação
|
|
316
|
+
const clickedAnchor = section?.id || activeTag;
|
|
317
|
+
if (clickedAnchor) {
|
|
318
|
+
sessionStorage.setItem(UIViewDirective.EXPLORE_CLICKED_ANCHOR_KEY, clickedAnchor);
|
|
319
|
+
}
|
|
313
320
|
if (rowIndex >= 0) {
|
|
314
321
|
sessionStorage.setItem(UIViewDirective.EXPLORE_LAST_ROW_INDEX_KEY, String(rowIndex));
|
|
315
322
|
}
|
|
@@ -332,10 +339,27 @@ export class UIViewDirective {
|
|
|
332
339
|
catch { }
|
|
333
340
|
}
|
|
334
341
|
resolveExploreSection(element, scrollRow) {
|
|
335
|
-
|
|
342
|
+
const fromAncestor = scrollRow.closest('[data-anchor-target][id]') ||
|
|
336
343
|
scrollRow.closest('.column[id]') ||
|
|
337
344
|
element.closest('[data-anchor-target][id]') ||
|
|
338
|
-
element.closest('.column[id]')
|
|
345
|
+
element.closest('.column[id]');
|
|
346
|
+
if (fromAncestor)
|
|
347
|
+
return fromAncestor;
|
|
348
|
+
// Seções podem ser irmãs do scrollable-row (não ancestrais).
|
|
349
|
+
// Sobe até o wrapper edm-sdui-component e percorre irmãos anteriores.
|
|
350
|
+
const wrapper = scrollRow.closest('edm-sdui-component');
|
|
351
|
+
let sibling = wrapper?.previousElementSibling;
|
|
352
|
+
while (sibling) {
|
|
353
|
+
if (sibling.matches('.column[id]') || sibling.matches('[data-anchor-target][id]')) {
|
|
354
|
+
return sibling;
|
|
355
|
+
}
|
|
356
|
+
const inner = sibling.querySelector('.column[id]') ||
|
|
357
|
+
sibling.querySelector('[data-anchor-target][id]');
|
|
358
|
+
if (inner)
|
|
359
|
+
return inner;
|
|
360
|
+
sibling = sibling.previousElementSibling;
|
|
361
|
+
}
|
|
362
|
+
return null;
|
|
339
363
|
}
|
|
340
364
|
resolveRowIndex(scrollRow, section) {
|
|
341
365
|
const scope = section ?? scrollRow.parentElement;
|
|
@@ -376,4 +400,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
376
400
|
type: HostListener,
|
|
377
401
|
args: ['click', ['$event']]
|
|
378
402
|
}] } });
|
|
379
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWl2aWV3LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2R1aS9zcmMvbGliL2RpcmVjdGl2ZXMvdWl2aWV3LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFhdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsdUJBQXVCLEdBQ3hCLE1BQU0sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDOzs7OztBQU01RixNQUFNLE9BQU8sZUFBZTthQUdGLDRCQUF1QixHQUFHLG1CQUFtQixBQUF0QixDQUF1QjthQUM5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Q3pFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDWixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBYyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxPQUFvQixFQUFFLE9BQTJCO1FBQzVFLElBQUksT0FBTyxDQUFDLEVBQUUsSUFBSSxPQUFPLENBQUMsRUFBRSxLQUFLLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUM3QyxPQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDcEIsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUF1QixDQUFDO1FBQ2hFLElBQUksU0FBUyxFQUFFLEVBQUUsSUFBSSxTQUFTLENBQUMsRUFBRSxLQUFLLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNsRCxPQUFPLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzsrR0F2aEJVLGVBQWU7bUdBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFKM0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCOzswQkFrQkksUUFBUTt5Q0FoQkYsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQXFiTixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZTtnQkFVN0IsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPcHRpb25hbCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVJVmlldyB9IGZyb20gJy4uL2NvcmUvdWljb21wb3NpdGlvbi9tb2RlbHMvdWl2aWV3JztcbmltcG9ydCB7IFVJUGFkZGluZyB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9tb2RlbHMvdWlwYWRkaW5nJztcbmltcG9ydCB7IFVJQmFja2dyb3VuZCB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9tb2RlbHMvdWliYWNrZ3JvdW5kJztcbmltcG9ydCB7IFVJQWN0aW9uIH0gZnJvbSAnLi4vY29yZS91aXRoZW1lL21vZGVscy91aWFjdGlvbic7XG5pbXBvcnQgeyBVSUFsaWdubWVudCB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9tb2RlbHMvdWlhbGlnbm1lbnQnO1xuaW1wb3J0IHsgVUlTaGFkb3cgfSBmcm9tICcuLi9jb3JlL3VpdGhlbWUvbW9kZWxzL3Vpc2hhZG93JztcbmltcG9ydCB7IFVJUmFkaXVzIH0gZnJvbSAnLi4vY29yZS91aXRoZW1lL21vZGVscy91aXJhZGl1cyc7XG5pbXBvcnQgeyBVSVNwYWNpbmcgfSBmcm9tICcuLi9jb3JlL3VpdGhlbWUvbW9kZWxzL3Vpc3BhY2luZyc7XG5pbXBvcnQgeyBVSUNvbG9yIH0gZnJvbSAnLi4vY29yZS91aXRoZW1lL2VudW1zL3VpY29sb3InO1xuaW1wb3J0IHsgVUlKdXN0aWZ5IH0gZnJvbSAnLi4vY29yZS91aXRoZW1lL2VudW1zL3VpanVzdGlmeSc7XG5pbXBvcnQgeyBVSURpbWVuc2lvbiB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9lbnVtcy91aWRpbWVuc2lvbic7XG5pbXBvcnQgeyBVSUNvbnRlbnRJbnNldCB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9tb2RlbHMvdWljb250ZW50LWluc2V0JztcbmltcG9ydCB7IHNwYWNlTWFwcGluZyB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9tYXBwaW5nL3NwYWNlLW1hcHBpbmcnO1xuaW1wb3J0IHsgY29sb3JNYXBwaW5nIH0gZnJvbSAnLi4vY29yZS91aXRoZW1lL21hcHBpbmcvY29sb3ItbWFwcGluZyc7XG5pbXBvcnQgeyBwYWRNYXBwaW5nIH0gZnJvbSAnLi4vY29yZS91aXRoZW1lL21hcHBpbmcvcGFkLW1hcHBpbmcnO1xuaW1wb3J0IHsgcmFkaXVzTWFwcGluZyB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9tYXBwaW5nL3JhZGl1cy1tYXBwaW5nJztcbmltcG9ydCB7IGFsaWdubWVudE1hcHBpbmcgfSBmcm9tICcuLi9jb3JlL3VpdGhlbWUvbWFwcGluZy9hbGlnbm1lbnQtbWFwcGluZyc7XG5pbXBvcnQgeyBkaW1lbnNpb25NYXBwaW5nIH0gZnJvbSAnLi4vY29yZS91aXRoZW1lL21hcHBpbmcvZGltZW5zaW9uLW1hcHBpbmcnO1xuaW1wb3J0IHtcbiAgc2hhZG93T2Zmc2V0TWFwcGluZyxcbiAgc2hhZG93Qmx1clJhZGl1c01hcHBpbmcsXG59IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9tYXBwaW5nL3NoYWRvdy1tYXBwaW5nJztcbmltcG9ydCB7IGp1c3RpZnlNYXBwaW5nIH0gZnJvbSAnLi4vY29yZS91aXRoZW1lL21hcHBpbmcvanVzdGlmeS1tYXBwaW5nJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBVSVNjcmVlblZpZXdNb2RlbCB9IGZyb20gJy4uL2NvcmUvdmlldy1tb2RlbHMvdWlzY3JlZW4udmlld21vZGVsJztcbmltcG9ydCB7IFVJQWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc2VydmljZXMvdWktYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVUlTaXplIH0gZnJvbSAnLi4vY29yZS91aXRoZW1lL2VudW1zL3Vpc2l6ZSc7XG5pbXBvcnQgeyBzaXplTWFwcGluZyB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9tYXBwaW5nL3NpemUtbWFwcGluZyc7XG5pbXBvcnQgeyBVSVNjcmVlbkNvbnRhaW5lclR5cGUgfSBmcm9tICcuLi9jb3JlL3VpY29tcG9zaXRpb24vZW51bXMvdWlzY3JlZW4tY29udGFpbmVyLXR5cGUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZWRtU2R1aVZpZXddJyxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFVJVmlld0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGVkbVNkdWlWaWV3PzogVUlWaWV3O1xuICBASW5wdXQoKSBkaXNhYmxlQ2xpY2s6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRVhQTE9SRV9MQVNUX0FOQ0hPUl9LRVkgPSAnZXhwbG9yZUxhc3RBbmNob3InO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBFWFBMT1JFX0xBU1RfUk9XX0lOREVYX0tFWSA9ICdleHBsb3JlTGFzdFJvd0luZGV4JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRVhQTE9SRV9MQVNUX1JPV19TQ1JPTExfTEVGVF9LRVkgPSAnZXhwbG9yZUxhc3RSb3dTY3JvbGxMZWZ0JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRVhQTE9SRV9MQVNUX0lURU1fSURfS0VZID0gJ2V4cGxvcmVMYXN0SXRlbUlkJztcblxuICBwcml2YXRlIGxhc3RVaVZpZXc6IFVJVmlldyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHdhc1NtYWxsU2NyZWVuID0gdGhpcy5pc1NtYWxsU2NyZWVuKCk7XG4gIHByaXZhdGUgY3VycmVudENvbnRhaW5lcjogVUlTY3JlZW5Db250YWluZXJUeXBlID0gVUlTY3JlZW5Db250YWluZXJUeXBlLkNPTlRBSU5FRDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhY3Rpb25TZXJ2aWNlOiBVSUFjdGlvblNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBzY3JlZW5WaWV3TW9kZWw6IFVJU2NyZWVuVmlld01vZGVsXG4gICkge1xuICAgIGlmICh0aGlzLnNjcmVlblZpZXdNb2RlbCkge1xuICAgICAgdGhpcy5zY3JlZW5WaWV3TW9kZWwudWlTY3JlZW4kLnN1YnNjcmliZSgoc2NyZWVuKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudENvbnRhaW5lciA9XG4gICAgICAgICAgc2NyZWVuPy5jb25maWc/LmNvbnRhaW5lciA/PyBVSVNjcmVlbkNvbnRhaW5lclR5cGUuQ09OVEFJTkVEO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVkbVNkdWlWaWV3KSB7XG4gICAgICB0aGlzLmxhc3RVaVZpZXcgPSB0aGlzLmVkbVNkdWlWaWV3O1xuICAgICAgdGhpcy5hcHBseVN0eWxlcyh0aGlzLmVkbVNkdWlWaWV3KTtcbiAgICAgIHRoaXMud2FzU21hbGxTY3JlZW4gPSB0aGlzLmlzU21hbGxTY3JlZW4oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U3R5bGVzKHVpVmlldzogVUlWaWV3KSB7XG4gICAgaWYgKHVpVmlldy5pZCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnaWQnLFxuICAgICAgICBTdHJpbmcodWlWaWV3LmlkKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LnBhZGRpbmcpIHtcbiAgICAgIHRoaXMuYXBwbHlQYWRkaW5nKHVpVmlldy5wYWRkaW5nKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LmNvbnRlbnRJbnNldCkge1xuICAgICAgdGhpcy5hcHBseUNvbnRlbnRJbnNldCh1aVZpZXcuY29udGVudEluc2V0KTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LmJhY2tncm91bmQpIHtcbiAgICAgIHRoaXMuYXBwbHlCYWNrZ3JvdW5kKHVpVmlldy5iYWNrZ3JvdW5kKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LmFjdGlvbikge1xuICAgICAgdGhpcy5hcHBseUFjdGlvbih1aVZpZXcuYWN0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LmFsaWdubWVudCkge1xuICAgICAgdGhpcy5hcHBseUFsaWdubWVudCh1aVZpZXcuYWxpZ25tZW50KTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LnNoYWRvdykge1xuICAgICAgdGhpcy5hcHBseVNoYWRvdyh1aVZpZXcuc2hhZG93KTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LnJhZGl1cykge1xuICAgICAgdGhpcy5hcHBseVJhZGl1cyh1aVZpZXcucmFkaXVzKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LnNwYWNpbmcpIHtcbiAgICAgIHRoaXMuYXBwbHlTcGFjaW5nKHVpVmlldy5zcGFjaW5nKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LmhlaWdodCkge1xuICAgICAgdGhpcy5hcHBseUhlaWdodCh1aVZpZXcuaGVpZ2h0KTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LndpZHRoKSB7XG4gICAgICB0aGlzLmFwcGx5V2lkdGgodWlWaWV3LndpZHRoKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LmJvcmRlcldpZHRoKSB7XG4gICAgICB0aGlzLmFwcGx5Qm9yZGVyV2lkdGgodWlWaWV3LmJvcmRlcldpZHRoKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LmJvcmRlckNvbG9yKSB7XG4gICAgICB0aGlzLmFwcGx5Qm9yZGVyQ29sb3IodWlWaWV3LmJvcmRlckNvbG9yKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3Lmp1c3RpZnkpIHtcbiAgICAgIHRoaXMuYXBwbHlKdXN0aWZ5KHVpVmlldy5qdXN0aWZ5KTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LnNpemUpIHtcbiAgICAgIHRoaXMuYXBwbHlTaXplKHVpVmlldy5zaXplKTtcbiAgICB9XG4gICAgaWYgKHVpVmlldy5hc3BlY3RSYXRpbyAhPT0gbnVsbCAmJiB1aVZpZXcuYXNwZWN0UmF0aW8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5hcHBseUFzcGVjdFJhdGlvKHVpVmlldy5hc3BlY3RSYXRpbyk7XG4gICAgfVxuXG4gICAgaWYodWlWaWV3LmhvdmVyKXtcbiAgICAgIHRoaXMuYXBwbHlIb3ZlclZhcnModWlWaWV3KTtcbiAgICB9XG5cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlQYWRkaW5nKHVpUGFkZGluZzogVUlQYWRkaW5nKSB7XG4gICAgaWYgKHVpUGFkZGluZy50b3ApIHtcbiAgICAgIGNvbnN0IHBhZFZhbHVlID0gcGFkTWFwcGluZ1t1aVBhZGRpbmcudG9wXTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAncGFkZGluZy10b3AnLFxuICAgICAgICBwYWRWYWx1ZVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHVpUGFkZGluZy5sZWZ0KSB7XG4gICAgICBjb25zdCBwYWRWYWx1ZSA9IHBhZE1hcHBpbmdbdWlQYWRkaW5nLmxlZnRdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdwYWRkaW5nLWxlZnQnLFxuICAgICAgICBwYWRWYWx1ZVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHVpUGFkZGluZy5yaWdodCkge1xuICAgICAgY29uc3QgcGFkVmFsdWUgPSBwYWRNYXBwaW5nW3VpUGFkZGluZy5yaWdodF07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ3BhZGRpbmctcmlnaHQnLFxuICAgICAgICBwYWRWYWx1ZVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHVpUGFkZGluZy5ib3R0b20pIHtcbiAgICAgIGNvbnN0IHBhZFZhbHVlID0gcGFkTWFwcGluZ1t1aVBhZGRpbmcuYm90dG9tXTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAncGFkZGluZy1ib3R0b20nLFxuICAgICAgICBwYWRWYWx1ZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5Q29udGVudEluc2V0KHVpQ29udGVudEluc2V0OiBVSUNvbnRlbnRJbnNldCkge1xuICAgIGlmICh1aUNvbnRlbnRJbnNldC50b3ApIHtcbiAgICAgIGNvbnN0IGluc2V0VmFsdWUgPSBzcGFjZU1hcHBpbmdbdWlDb250ZW50SW5zZXQudG9wXTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAncGFkZGluZy10b3AnLFxuICAgICAgICBpbnNldFZhbHVlXG4gICAgICApO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICctLXNkdWktY29udGVudC1pbnNldC10b3AnLFxuICAgICAgICBpbnNldFZhbHVlXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh1aUNvbnRlbnRJbnNldC5sZWZ0KSB7XG4gICAgICBjb25zdCBpbnNldFZhbHVlID0gc3BhY2VNYXBwaW5nW3VpQ29udGVudEluc2V0LmxlZnRdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdwYWRkaW5nLWxlZnQnLFxuICAgICAgICBpbnNldFZhbHVlXG4gICAgICApO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICctLXNkdWktY29udGVudC1pbnNldC1sZWZ0JyxcbiAgICAgICAgaW5zZXRWYWx1ZVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodWlDb250ZW50SW5zZXQucmlnaHQpIHtcbiAgICAgIGNvbnN0IGluc2V0VmFsdWUgPSBzcGFjZU1hcHBpbmdbdWlDb250ZW50SW5zZXQucmlnaHRdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdwYWRkaW5nLXJpZ2h0JyxcbiAgICAgICAgaW5zZXRWYWx1ZVxuICAgICAgKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnLS1zZHVpLWNvbnRlbnQtaW5zZXQtcmlnaHQnLFxuICAgICAgICBpbnNldFZhbHVlXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh1aUNvbnRlbnRJbnNldC5ib3R0b20pIHtcbiAgICAgIGNvbnN0IGluc2V0VmFsdWUgPSBzcGFjZU1hcHBpbmdbdWlDb250ZW50SW5zZXQuYm90dG9tXTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAncGFkZGluZy1ib3R0b20nLFxuICAgICAgICBpbnNldFZhbHVlXG4gICAgICApO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICctLXNkdWktY29udGVudC1pbnNldC1ib3R0b20nLFxuICAgICAgICBpbnNldFZhbHVlXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlCYWNrZ3JvdW5kKHVpQmFja2dyb3VuZDogVUlCYWNrZ3JvdW5kKSB7XG4gICAgaWYgKHVpQmFja2dyb3VuZC5iYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICAgIGNvbnN0IGJhY2tncm91bmRDb2xvciA9IGNvbG9yTWFwcGluZ1t1aUJhY2tncm91bmQuYmFja2dyb3VuZENvbG9yXTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnYmFja2dyb3VuZC1jb2xvcicsXG4gICAgICAgIGJhY2tncm91bmRDb2xvclxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodWlCYWNrZ3JvdW5kLmdyYWRpZW50Q29sb3IxICYmIHVpQmFja2dyb3VuZC5ncmFkaWVudENvbG9yMikge1xuICAgICAgY29uc3QgZ3JhZGllbnRDb2xvcjEgPSBjb2xvck1hcHBpbmdbdWlCYWNrZ3JvdW5kLmdyYWRpZW50Q29sb3IxXTtcbiAgICAgIGNvbnN0IGdyYWRpZW50Q29sb3IyID0gY29sb3JNYXBwaW5nW3VpQmFja2dyb3VuZC5ncmFkaWVudENvbG9yMl07XG4gICAgICBjb25zdCBncmFkaWVudFN0eWxlcyA9IGBsaW5lYXItZ3JhZGllbnQoNDVkZWcsICR7Z3JhZGllbnRDb2xvcjF9LCAke2dyYWRpZW50Q29sb3IyfSlgXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2JhY2tncm91bmQnLFxuICAgICAgICBncmFkaWVudFN0eWxlc1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5QWN0aW9uKHVpQWN0aW9uOiBVSUFjdGlvbikge1xuICAgIGlmICh0aGlzLmRpc2FibGVDbGljaykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjdXJzb3InLCAncG9pbnRlcicpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUFsaWdubWVudCh1aUFsaWdubWVudDogVUlBbGlnbm1lbnQpIHtcbiAgICBpZiAodWlBbGlnbm1lbnQuYWxpZ25tZW50KSB7XG4gICAgICBjb25zdCBhbGlnbm1lbnQgPSBhbGlnbm1lbnRNYXBwaW5nW3VpQWxpZ25tZW50LmFsaWdubWVudF07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2FsaWduLWl0ZW1zJyxcbiAgICAgICAgYWxpZ25tZW50XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTaGFkb3codWlTaGFkb3c6IFVJU2hhZG93KSB7XG4gICAgaWYgKHVpU2hhZG93LmNvbG9yICYmIHVpU2hhZG93Lm9mZnNldFggJiYgdWlTaGFkb3cub2Zmc2V0WSAmJiB1aVNoYWRvdy5ibHVyUmFkaXVzKSB7XG4gICAgICBjb25zdCBjb2xvciA9IGNvbG9yTWFwcGluZ1t1aVNoYWRvdy5jb2xvcl07XG4gICAgICBjb25zdCBvZmZzZXRYID0gc2hhZG93T2Zmc2V0TWFwcGluZ1t1aVNoYWRvdy5vZmZzZXRYXTtcbiAgICAgIGNvbnN0IG9mZnNldFkgPSBzaGFkb3dPZmZzZXRNYXBwaW5nW3VpU2hhZG93Lm9mZnNldFldO1xuICAgICAgY29uc3QgYmx1clJhZGl1cyA9IHNoYWRvd0JsdXJSYWRpdXNNYXBwaW5nW3VpU2hhZG93LmJsdXJSYWRpdXNdO1xuICAgICAgY29uc3Qgb3BhY2l0eSA9IHVpU2hhZG93Lm9wYWNpdHkgIT09IHVuZGVmaW5lZCA/IHVpU2hhZG93Lm9wYWNpdHkgOiAxO1xuXG4gICAgICAvLyBGb3JtYXQ6IGJveC1zaGFkb3c6IG9mZnNldFggb2Zmc2V0WSBibHVyUmFkaXVzIGNvbG9yXG4gICAgICBjb25zdCBzaGFkb3dWYWx1ZSA9IGAke29mZnNldFh9ICR7b2Zmc2V0WX0gJHtibHVyUmFkaXVzfSAke2NvbG9yfWA7XG5cbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnYm94LXNoYWRvdycsXG4gICAgICAgIHNoYWRvd1ZhbHVlXG4gICAgICApO1xuXG4gICAgICBpZiAob3BhY2l0eSAhPT0gMSkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICdvcGFjaXR5JyxcbiAgICAgICAgICBvcGFjaXR5LnRvU3RyaW5nKClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5UmFkaXVzKHVpUmFkaXVzOiBVSVJhZGl1cykge1xuICAgIGlmICh1aVJhZGl1cy50b3BMZWZ0KSB7XG4gICAgICBjb25zdCByYWRpdXMgPSByYWRpdXNNYXBwaW5nW3VpUmFkaXVzLnRvcExlZnRdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdib3JkZXItdG9wLWxlZnQtcmFkaXVzJyxcbiAgICAgICAgcmFkaXVzXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh1aVJhZGl1cy50b3BSaWdodCkge1xuICAgICAgY29uc3QgcmFkaXVzID0gcmFkaXVzTWFwcGluZ1t1aVJhZGl1cy50b3BSaWdodF07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2JvcmRlci10b3AtcmlnaHQtcmFkaXVzJyxcbiAgICAgICAgcmFkaXVzXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh1aVJhZGl1cy5ib3R0b21MZWZ0KSB7XG4gICAgICBjb25zdCByYWRpdXMgPSByYWRpdXNNYXBwaW5nW3VpUmFkaXVzLmJvdHRvbUxlZnRdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzJyxcbiAgICAgICAgcmFkaXVzXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh1aVJhZGl1cy5ib3R0b21SaWdodCkge1xuICAgICAgY29uc3QgcmFkaXVzID0gcmFkaXVzTWFwcGluZ1t1aVJhZGl1cy5ib3R0b21SaWdodF07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzJyxcbiAgICAgICAgcmFkaXVzXG4gICAgICApO1xuICAgIH1cblxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVNwYWNpbmcodWlTcGFjaW5nOiBVSVNwYWNpbmcpIHtcbiAgICBpZiAodWlTcGFjaW5nLnNwYWNpbmcpIHtcbiAgICAgIGNvbnN0IHNwYWNpbmdWYWx1ZSA9IHNwYWNlTWFwcGluZ1t1aVNwYWNpbmcuc3BhY2luZ107XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2dhcCcsXG4gICAgICAgIHNwYWNpbmdWYWx1ZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5SGVpZ2h0KGhlaWdodDogVUlEaW1lbnNpb24pIHtcbiAgICBpZiAoaGVpZ2h0KSB7XG4gICAgICBjb25zdCBoZWlnaHRWYWx1ZSA9IGRpbWVuc2lvbk1hcHBpbmdbaGVpZ2h0XTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnaGVpZ2h0JyxcbiAgICAgICAgaGVpZ2h0VmFsdWVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVdpZHRoKHdpZHRoOiBVSURpbWVuc2lvbikge1xuICAgIGlmICh3aWR0aCkge1xuICAgICAgY29uc3Qgd2lkdGhWYWx1ZSA9IGRpbWVuc2lvbk1hcHBpbmdbd2lkdGhdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICd3aWR0aCcsXG4gICAgICAgIHdpZHRoVmFsdWVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUJvcmRlcldpZHRoKGJvcmRlcldpZHRoOiBudW1iZXIpIHtcbiAgICBpZiAoYm9yZGVyV2lkdGggIT09IG51bGwgJiYgYm9yZGVyV2lkdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdib3JkZXItd2lkdGgnLFxuICAgICAgICBgJHtib3JkZXJXaWR0aH1weGBcbiAgICAgICk7XG5cbiAgICAgIC8vIEVuc3VyZSBib3JkZXIgc3R5bGUgaXMgc2V0LCBvdGhlcndpc2UgYm9yZGVyLXdpZHRoIHdvbid0IGJlIHZpc2libGVcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnYm9yZGVyLXN0eWxlJyxcbiAgICAgICAgJ3NvbGlkJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5Qm9yZGVyQ29sb3IoYm9yZGVyQ29sb3I6IFVJQ29sb3IpIHtcbiAgICBpZiAoYm9yZGVyQ29sb3IpIHtcbiAgICAgIGNvbnN0IGNvbG9yID0gY29sb3JNYXBwaW5nW2JvcmRlckNvbG9yXTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnYm9yZGVyLWNvbG9yJyxcbiAgICAgICAgY29sb3JcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUp1c3RpZnkoanVzdGlmeTogVUlKdXN0aWZ5KSB7XG4gICAgaWYgKGp1c3RpZnkpIHtcbiAgICAgIGNvbnN0IGp1c3RpZnlWYWx1ZSA9IGp1c3RpZnlNYXBwaW5nW2p1c3RpZnldO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdqdXN0aWZ5LWNvbnRlbnQnLFxuICAgICAgICBqdXN0aWZ5VmFsdWVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUFzcGVjdFJhdGlvKGFzcGVjdFJhdGlvOiBudW1iZXIpIHtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTaXplKHNpemU6IFVJU2l6ZSkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHNpemVNYXBwaW5nW3NpemVdO1xuICAgIGlmICghY29uZmlnKSByZXR1cm47XG5cbiAgICBsZXQgeyB3aWR0aDogd2lkdGhWYWx1ZSwgaGVpZ2h0OiBoZWlnaHRWYWx1ZSB9ID0gY29uZmlnO1xuXG4gICAgaWYgKFxuICAgICAgY29uZmlnLnNjYWxhYmxlICYmXG4gICAgICB0aGlzLmlzU21hbGxTY3JlZW4oKSAmJlxuICAgICAgdGhpcy5jdXJyZW50Q29udGFpbmVyID09PSBVSVNjcmVlbkNvbnRhaW5lclR5cGUuRkxVSURcbiAgICApIHtcbiAgICAgIHdpZHRoVmFsdWUgPSB0aGlzLnNjYWxlUGl4ZWxWYWx1ZSh3aWR0aFZhbHVlLCAxLjEpO1xuICAgICAgaGVpZ2h0VmFsdWUgPSB0aGlzLnNjYWxlUGl4ZWxWYWx1ZShoZWlnaHRWYWx1ZSwgMS4xKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCB3aWR0aFZhbHVlKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnaGVpZ2h0JywgaGVpZ2h0VmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUhvdmVyVmFycyh1aVZpZXc6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGhvdmVyID0gdWlWaWV3Py5ob3ZlciA/PyB1aVZpZXc/LmVsZW1lbnQ/LmhvdmVyO1xuICAgIGlmICghaG92ZXIpIHJldHVybjtcblxuICAgIGNvbnN0IGVsID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAvLyBtYXJjYSBxdWUgZXNzZSBlbGVtZW50byB0ZW0gaG92ZXJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGVsLCAnZWRtLWhvdmVyJyk7XG5cbiAgICBpZiAoaG92ZXIuYm9yZGVyX2NvbG9yIHx8IGhvdmVyLmJvcmRlckNvbG9yKSB7XG4gICAgICBjb25zdCB0b2tlbiA9IChob3Zlci5ib3JkZXJfY29sb3IgPz8gaG92ZXIuYm9yZGVyQ29sb3IpLnJlcGxhY2UoL18vZywgJy0nKTtcbiAgICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KCctLWVkbS1ob3Zlci1ib3JkZXItY29sb3InLCBgdmFyKC0tJHt0b2tlbn0pYCk7XG4gICAgfVxuXG4gICAgaWYgKGhvdmVyLmJhY2tncm91bmRfY29sb3IgfHwgaG92ZXIuYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICBjb25zdCB0b2tlbiA9IChob3Zlci5iYWNrZ3JvdW5kX2NvbG9yID8/IGhvdmVyLmJhY2tncm91bmRDb2xvcikucmVwbGFjZSgvXy9nLCAnLScpO1xuICAgICAgZWwuc3R5bGUuc2V0UHJvcGVydHkoJy0tZWRtLWhvdmVyLWJnLWNvbG9yJywgYHZhcigtLSR7dG9rZW59KWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNTbWFsbFNjcmVlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmlubmVyV2lkdGggPj0gNTY1O1xuICB9XG5cbiAgcHJpdmF0ZSBzY2FsZVBpeGVsVmFsdWUodmFsdWU6IHN0cmluZywgZGl2aXNvcjogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBtYXRjaCA9IC9eKFxcZCsoPzpcXC5cXGQrKT8pcHgkLy5leGVjKHZhbHVlKTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3QgbnVtID0gcGFyc2VGbG9hdChtYXRjaFsxXSk7XG4gICAgY29uc3Qgc2NhbGVkID0gbnVtICogZGl2aXNvcjtcbiAgICByZXR1cm4gYCR7c2NhbGVkfXB4YDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICBvbldpbmRvd1Jlc2l6ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBpc1NtYWxsID0gdGhpcy5pc1NtYWxsU2NyZWVuKCk7XG4gICAgaWYgKHRoaXMubGFzdFVpVmlldyAmJiBpc1NtYWxsICE9PSB0aGlzLndhc1NtYWxsU2NyZWVuKSB7XG4gICAgICB0aGlzLmFwcGx5U3R5bGVzKHRoaXMubGFzdFVpVmlldyk7XG4gICAgICB0aGlzLndhc1NtYWxsU2NyZWVuID0gaXNTbWFsbDtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZUNsaWNrKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5lZG1TZHVpVmlldz8uYWN0aW9uKSB7XG4gICAgICB0aGlzLmNhcHR1cmVFeHBsb3JlU2Nyb2xsQ29udGV4dCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLmFjdGlvblNlcnZpY2UuZXhlY3V0ZSh0aGlzLmVkbVNkdWlWaWV3LmFjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjYXB0dXJlRXhwbG9yZVNjcm9sbENvbnRleHQoKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICF0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoJy9leHBsb3JhcicpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IHNjcm9sbFJvdyA9IGVsZW1lbnQuY2xvc2VzdCgnLnNjcm9sbGFibGUtcm93JykgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgaWYgKCFzY3JvbGxSb3cpIHtcbiAgICAgIHRoaXMuY2xlYXJFeHBsb3JlSG9yaXpvbnRhbFNjcm9sbENvbnRleHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWN0aW9uID0gdGhpcy5yZXNvbHZlRXhwbG9yZVNlY3Rpb24oZWxlbWVudCwgc2Nyb2xsUm93KTtcbiAgICBjb25zdCBzZWN0aW9uSWQgPSBzZWN0aW9uPy5pZCB8fCBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFVJVmlld0RpcmVjdGl2ZS5FWFBMT1JFX0xBU1RfQU5DSE9SX0tFWSk7XG4gICAgY29uc3Qgcm93SW5kZXggPSB0aGlzLnJlc29sdmVSb3dJbmRleChzY3JvbGxSb3csIHNlY3Rpb24pO1xuICAgIGNvbnN0IGl0ZW1JZCA9IHRoaXMucmVzb2x2ZUNsaWNrZWRJdGVtSWQoZWxlbWVudCwgc2VjdGlvbik7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHNlY3Rpb25JZCkge1xuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFVJVmlld0RpcmVjdGl2ZS5FWFBMT1JFX0xBU1RfQU5DSE9SX0tFWSwgc2VjdGlvbklkKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJvd0luZGV4ID49IDApIHtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShVSVZpZXdEaXJlY3RpdmUuRVhQTE9SRV9MQVNUX1JPV19JTkRFWF9LRVksIFN0cmluZyhyb3dJbmRleCkpO1xuICAgICAgfVxuXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgICBVSVZpZXdEaXJlY3RpdmUuRVhQTE9SRV9MQVNUX1JPV19TQ1JPTExfTEVGVF9LRVksXG4gICAgICAgIFN0cmluZyhNYXRoLnJvdW5kKHNjcm9sbFJvdy5zY3JvbGxMZWZ0KSlcbiAgICAgICk7XG5cbiAgICAgIGlmIChpdGVtSWQpIHtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShVSVZpZXdEaXJlY3RpdmUuRVhQTE9SRV9MQVNUX0lURU1fSURfS0VZLCBpdGVtSWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShVSVZpZXdEaXJlY3RpdmUuRVhQTE9SRV9MQVNUX0lURU1fSURfS0VZKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHt9XG4gIH1cblxuICBwcml2YXRlIGNsZWFyRXhwbG9yZUhvcml6b250YWxTY3JvbGxDb250ZXh0KCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKFVJVmlld0RpcmVjdGl2ZS5FWFBMT1JFX0xBU1RfUk9XX0lOREVYX0tFWSk7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKFVJVmlld0RpcmVjdGl2ZS5FWFBMT1JFX0xBU1RfUk9XX1NDUk9MTF9MRUZUX0tFWSk7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKFVJVmlld0RpcmVjdGl2ZS5FWFBMT1JFX0xBU1RfSVRFTV9JRF9LRVkpO1xuICAgIH0gY2F0Y2gge31cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUV4cGxvcmVTZWN0aW9uKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBzY3JvbGxSb3c6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gKFxuICAgICAgc2Nyb2xsUm93LmNsb3Nlc3QoJ1tkYXRhLWFuY2hvci10YXJnZXRdW2lkXScpIGFzIEhUTUxFbGVtZW50IHwgbnVsbCB8fFxuICAgICAgc2Nyb2xsUm93LmNsb3Nlc3QoJy5jb2x1bW5baWRdJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsIHx8XG4gICAgICBlbGVtZW50LmNsb3Nlc3QoJ1tkYXRhLWFuY2hvci10YXJnZXRdW2lkXScpIGFzIEhUTUxFbGVtZW50IHwgbnVsbCB8fFxuICAgICAgZWxlbWVudC5jbG9zZXN0KCcuY29sdW1uW2lkXScpIGFzIEhUTUxFbGVtZW50IHwgbnVsbFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVSb3dJbmRleChzY3JvbGxSb3c6IEhUTUxFbGVtZW50LCBzZWN0aW9uOiBIVE1MRWxlbWVudCB8IG51bGwpOiBudW1iZXIge1xuICAgIGNvbnN0IHNjb3BlID0gc2VjdGlvbiA/PyAoc2Nyb2xsUm93LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQgfCBudWxsKTtcbiAgICBpZiAoIXNjb3BlKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgcmV0dXJuIEFycmF5LmZyb20oc2NvcGUucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJy5zY3JvbGxhYmxlLXJvdycpKS5pbmRleE9mKHNjcm9sbFJvdyk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVDbGlja2VkSXRlbUlkKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBzZWN0aW9uOiBIVE1MRWxlbWVudCB8IG51bGwpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoZWxlbWVudC5pZCAmJiBlbGVtZW50LmlkICE9PSBzZWN0aW9uPy5pZCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuaWQ7XG4gICAgfVxuXG4gICAgY29uc3QgY2FuZGlkYXRlID0gZWxlbWVudC5jbG9zZXN0KCdbaWRdJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGlmIChjYW5kaWRhdGU/LmlkICYmIGNhbmRpZGF0ZS5pZCAhPT0gc2VjdGlvbj8uaWQpIHtcbiAgICAgIHJldHVybiBjYW5kaWRhdGUuaWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
|
|
403
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWl2aWV3LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2R1aS9zcmMvbGliL2RpcmVjdGl2ZXMvdWl2aWV3LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFhdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsdUJBQXVCLEdBQ3hCLE1BQU0sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDOzs7OztBQU01RixNQUFNLE9BQU8sZUFBZTthQUdGLDRCQUF1QixHQUFHLG1CQUFtQixBQUF0QixDQUF1QjthQUM5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QUFLLENBQUMsZ0JBQWdCLENBQWMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRU8sb0JBQW9CLENBQUMsT0FBb0IsRUFBRSxPQUEyQjtRQUM1RSxJQUFJLE9BQU8sQ0FBQyxFQUFFLElBQUksT0FBTyxDQUFDLEVBQUUsS0FBSyxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDN0MsT0FBTyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3BCLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBdUIsQ0FBQztRQUNoRSxJQUFJLFNBQVMsRUFBRSxFQUFFLElBQUksU0FBUyxDQUFDLEVBQUUsS0FBSyxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDbEQsT0FBTyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7K0dBL2lCVSxlQUFlO21HQUFmLGVBQWU7OzRGQUFmLGVBQWU7a0JBSjNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxLQUFLO2lCQUNsQjs7MEJBbUJJLFFBQVE7eUNBakJGLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFzYk4sY0FBYztzQkFEYixZQUFZO3VCQUFDLGVBQWU7Z0JBVTdCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3B0aW9uYWwsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVSVZpZXcgfSBmcm9tICcuLi9jb3JlL3VpY29tcG9zaXRpb24vbW9kZWxzL3Vpdmlldyc7XG5pbXBvcnQgeyBVSVBhZGRpbmcgfSBmcm9tICcuLi9jb3JlL3VpdGhlbWUvbW9kZWxzL3VpcGFkZGluZyc7XG5pbXBvcnQgeyBVSUJhY2tncm91bmQgfSBmcm9tICcuLi9jb3JlL3VpdGhlbWUvbW9kZWxzL3VpYmFja2dyb3VuZCc7XG5pbXBvcnQgeyBVSUFjdGlvbiB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9tb2RlbHMvdWlhY3Rpb24nO1xuaW1wb3J0IHsgVUlBbGlnbm1lbnQgfSBmcm9tICcuLi9jb3JlL3VpdGhlbWUvbW9kZWxzL3VpYWxpZ25tZW50JztcbmltcG9ydCB7IFVJU2hhZG93IH0gZnJvbSAnLi4vY29yZS91aXRoZW1lL21vZGVscy91aXNoYWRvdyc7XG5pbXBvcnQgeyBVSVJhZGl1cyB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9tb2RlbHMvdWlyYWRpdXMnO1xuaW1wb3J0IHsgVUlTcGFjaW5nIH0gZnJvbSAnLi4vY29yZS91aXRoZW1lL21vZGVscy91aXNwYWNpbmcnO1xuaW1wb3J0IHsgVUlDb2xvciB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9lbnVtcy91aWNvbG9yJztcbmltcG9ydCB7IFVJSnVzdGlmeSB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9lbnVtcy91aWp1c3RpZnknO1xuaW1wb3J0IHsgVUlEaW1lbnNpb24gfSBmcm9tICcuLi9jb3JlL3VpdGhlbWUvZW51bXMvdWlkaW1lbnNpb24nO1xuaW1wb3J0IHsgVUlDb250ZW50SW5zZXQgfSBmcm9tICcuLi9jb3JlL3VpdGhlbWUvbW9kZWxzL3VpY29udGVudC1pbnNldCc7XG5pbXBvcnQgeyBzcGFjZU1hcHBpbmcgfSBmcm9tICcuLi9jb3JlL3VpdGhlbWUvbWFwcGluZy9zcGFjZS1tYXBwaW5nJztcbmltcG9ydCB7IGNvbG9yTWFwcGluZyB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9tYXBwaW5nL2NvbG9yLW1hcHBpbmcnO1xuaW1wb3J0IHsgcGFkTWFwcGluZyB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9tYXBwaW5nL3BhZC1tYXBwaW5nJztcbmltcG9ydCB7IHJhZGl1c01hcHBpbmcgfSBmcm9tICcuLi9jb3JlL3VpdGhlbWUvbWFwcGluZy9yYWRpdXMtbWFwcGluZyc7XG5pbXBvcnQgeyBhbGlnbm1lbnRNYXBwaW5nIH0gZnJvbSAnLi4vY29yZS91aXRoZW1lL21hcHBpbmcvYWxpZ25tZW50LW1hcHBpbmcnO1xuaW1wb3J0IHsgZGltZW5zaW9uTWFwcGluZyB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9tYXBwaW5nL2RpbWVuc2lvbi1tYXBwaW5nJztcbmltcG9ydCB7XG4gIHNoYWRvd09mZnNldE1hcHBpbmcsXG4gIHNoYWRvd0JsdXJSYWRpdXNNYXBwaW5nLFxufSBmcm9tICcuLi9jb3JlL3VpdGhlbWUvbWFwcGluZy9zaGFkb3ctbWFwcGluZyc7XG5pbXBvcnQgeyBqdXN0aWZ5TWFwcGluZyB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9tYXBwaW5nL2p1c3RpZnktbWFwcGluZyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVUlTY3JlZW5WaWV3TW9kZWwgfSBmcm9tICcuLi9jb3JlL3ZpZXctbW9kZWxzL3Vpc2NyZWVuLnZpZXdtb2RlbCc7XG5pbXBvcnQgeyBVSUFjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3NlcnZpY2VzL3VpLWFjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFVJU2l6ZSB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9lbnVtcy91aXNpemUnO1xuaW1wb3J0IHsgc2l6ZU1hcHBpbmcgfSBmcm9tICcuLi9jb3JlL3VpdGhlbWUvbWFwcGluZy9zaXplLW1hcHBpbmcnO1xuaW1wb3J0IHsgVUlTY3JlZW5Db250YWluZXJUeXBlIH0gZnJvbSAnLi4vY29yZS91aWNvbXBvc2l0aW9uL2VudW1zL3Vpc2NyZWVuLWNvbnRhaW5lci10eXBlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2VkbVNkdWlWaWV3XScsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBVSVZpZXdEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBlZG1TZHVpVmlldz86IFVJVmlldztcbiAgQElucHV0KCkgZGlzYWJsZUNsaWNrOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEVYUExPUkVfTEFTVF9BTkNIT1JfS0VZID0gJ2V4cGxvcmVMYXN0QW5jaG9yJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRVhQTE9SRV9DTElDS0VEX0FOQ0hPUl9LRVkgPSAnZXhwbG9yZUNsaWNrZWRBbmNob3InO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBFWFBMT1JFX0xBU1RfUk9XX0lOREVYX0tFWSA9ICdleHBsb3JlTGFzdFJvd0luZGV4JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRVhQTE9SRV9MQVNUX1JPV19TQ1JPTExfTEVGVF9LRVkgPSAnZXhwbG9yZUxhc3RSb3dTY3JvbGxMZWZ0JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRVhQTE9SRV9MQVNUX0lURU1fSURfS0VZID0gJ2V4cGxvcmVMYXN0SXRlbUlkJztcblxuICBwcml2YXRlIGxhc3RVaVZpZXc6IFVJVmlldyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHdhc1NtYWxsU2NyZWVuID0gdGhpcy5pc1NtYWxsU2NyZWVuKCk7XG4gIHByaXZhdGUgY3VycmVudENvbnRhaW5lcjogVUlTY3JlZW5Db250YWluZXJUeXBlID0gVUlTY3JlZW5Db250YWluZXJUeXBlLkNPTlRBSU5FRDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhY3Rpb25TZXJ2aWNlOiBVSUFjdGlvblNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBzY3JlZW5WaWV3TW9kZWw6IFVJU2NyZWVuVmlld01vZGVsXG4gICkge1xuICAgIGlmICh0aGlzLnNjcmVlblZpZXdNb2RlbCkge1xuICAgICAgdGhpcy5zY3JlZW5WaWV3TW9kZWwudWlTY3JlZW4kLnN1YnNjcmliZSgoc2NyZWVuKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudENvbnRhaW5lciA9XG4gICAgICAgICAgc2NyZWVuPy5jb25maWc/LmNvbnRhaW5lciA/PyBVSVNjcmVlbkNvbnRhaW5lclR5cGUuQ09OVEFJTkVEO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVkbVNkdWlWaWV3KSB7XG4gICAgICB0aGlzLmxhc3RVaVZpZXcgPSB0aGlzLmVkbVNkdWlWaWV3O1xuICAgICAgdGhpcy5hcHBseVN0eWxlcyh0aGlzLmVkbVNkdWlWaWV3KTtcbiAgICAgIHRoaXMud2FzU21hbGxTY3JlZW4gPSB0aGlzLmlzU21hbGxTY3JlZW4oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U3R5bGVzKHVpVmlldzogVUlWaWV3KSB7XG4gICAgaWYgKHVpVmlldy5pZCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnaWQnLFxuICAgICAgICBTdHJpbmcodWlWaWV3LmlkKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LnBhZGRpbmcpIHtcbiAgICAgIHRoaXMuYXBwbHlQYWRkaW5nKHVpVmlldy5wYWRkaW5nKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LmNvbnRlbnRJbnNldCkge1xuICAgICAgdGhpcy5hcHBseUNvbnRlbnRJbnNldCh1aVZpZXcuY29udGVudEluc2V0KTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LmJhY2tncm91bmQpIHtcbiAgICAgIHRoaXMuYXBwbHlCYWNrZ3JvdW5kKHVpVmlldy5iYWNrZ3JvdW5kKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LmFjdGlvbikge1xuICAgICAgdGhpcy5hcHBseUFjdGlvbih1aVZpZXcuYWN0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LmFsaWdubWVudCkge1xuICAgICAgdGhpcy5hcHBseUFsaWdubWVudCh1aVZpZXcuYWxpZ25tZW50KTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LnNoYWRvdykge1xuICAgICAgdGhpcy5hcHBseVNoYWRvdyh1aVZpZXcuc2hhZG93KTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LnJhZGl1cykge1xuICAgICAgdGhpcy5hcHBseVJhZGl1cyh1aVZpZXcucmFkaXVzKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LnNwYWNpbmcpIHtcbiAgICAgIHRoaXMuYXBwbHlTcGFjaW5nKHVpVmlldy5zcGFjaW5nKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LmhlaWdodCkge1xuICAgICAgdGhpcy5hcHBseUhlaWdodCh1aVZpZXcuaGVpZ2h0KTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LndpZHRoKSB7XG4gICAgICB0aGlzLmFwcGx5V2lkdGgodWlWaWV3LndpZHRoKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LmJvcmRlcldpZHRoKSB7XG4gICAgICB0aGlzLmFwcGx5Qm9yZGVyV2lkdGgodWlWaWV3LmJvcmRlcldpZHRoKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LmJvcmRlckNvbG9yKSB7XG4gICAgICB0aGlzLmFwcGx5Qm9yZGVyQ29sb3IodWlWaWV3LmJvcmRlckNvbG9yKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3Lmp1c3RpZnkpIHtcbiAgICAgIHRoaXMuYXBwbHlKdXN0aWZ5KHVpVmlldy5qdXN0aWZ5KTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LnNpemUpIHtcbiAgICAgIHRoaXMuYXBwbHlTaXplKHVpVmlldy5zaXplKTtcbiAgICB9XG4gICAgaWYgKHVpVmlldy5hc3BlY3RSYXRpbyAhPT0gbnVsbCAmJiB1aVZpZXcuYXNwZWN0UmF0aW8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5hcHBseUFzcGVjdFJhdGlvKHVpVmlldy5hc3BlY3RSYXRpbyk7XG4gICAgfVxuXG4gICAgaWYodWlWaWV3LmhvdmVyKXtcbiAgICAgIHRoaXMuYXBwbHlIb3ZlclZhcnModWlWaWV3KTtcbiAgICB9XG5cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlQYWRkaW5nKHVpUGFkZGluZzogVUlQYWRkaW5nKSB7XG4gICAgaWYgKHVpUGFkZGluZy50b3ApIHtcbiAgICAgIGNvbnN0IHBhZFZhbHVlID0gcGFkTWFwcGluZ1t1aVBhZGRpbmcudG9wXTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAncGFkZGluZy10b3AnLFxuICAgICAgICBwYWRWYWx1ZVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHVpUGFkZGluZy5sZWZ0KSB7XG4gICAgICBjb25zdCBwYWRWYWx1ZSA9IHBhZE1hcHBpbmdbdWlQYWRkaW5nLmxlZnRdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdwYWRkaW5nLWxlZnQnLFxuICAgICAgICBwYWRWYWx1ZVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHVpUGFkZGluZy5yaWdodCkge1xuICAgICAgY29uc3QgcGFkVmFsdWUgPSBwYWRNYXBwaW5nW3VpUGFkZGluZy5yaWdodF07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ3BhZGRpbmctcmlnaHQnLFxuICAgICAgICBwYWRWYWx1ZVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHVpUGFkZGluZy5ib3R0b20pIHtcbiAgICAgIGNvbnN0IHBhZFZhbHVlID0gcGFkTWFwcGluZ1t1aVBhZGRpbmcuYm90dG9tXTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAncGFkZGluZy1ib3R0b20nLFxuICAgICAgICBwYWRWYWx1ZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5Q29udGVudEluc2V0KHVpQ29udGVudEluc2V0OiBVSUNvbnRlbnRJbnNldCkge1xuICAgIGlmICh1aUNvbnRlbnRJbnNldC50b3ApIHtcbiAgICAgIGNvbnN0IGluc2V0VmFsdWUgPSBzcGFjZU1hcHBpbmdbdWlDb250ZW50SW5zZXQudG9wXTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAncGFkZGluZy10b3AnLFxuICAgICAgICBpbnNldFZhbHVlXG4gICAgICApO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICctLXNkdWktY29udGVudC1pbnNldC10b3AnLFxuICAgICAgICBpbnNldFZhbHVlXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh1aUNvbnRlbnRJbnNldC5sZWZ0KSB7XG4gICAgICBjb25zdCBpbnNldFZhbHVlID0gc3BhY2VNYXBwaW5nW3VpQ29udGVudEluc2V0LmxlZnRdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdwYWRkaW5nLWxlZnQnLFxuICAgICAgICBpbnNldFZhbHVlXG4gICAgICApO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICctLXNkdWktY29udGVudC1pbnNldC1sZWZ0JyxcbiAgICAgICAgaW5zZXRWYWx1ZVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodWlDb250ZW50SW5zZXQucmlnaHQpIHtcbiAgICAgIGNvbnN0IGluc2V0VmFsdWUgPSBzcGFjZU1hcHBpbmdbdWlDb250ZW50SW5zZXQucmlnaHRdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdwYWRkaW5nLXJpZ2h0JyxcbiAgICAgICAgaW5zZXRWYWx1ZVxuICAgICAgKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnLS1zZHVpLWNvbnRlbnQtaW5zZXQtcmlnaHQnLFxuICAgICAgICBpbnNldFZhbHVlXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh1aUNvbnRlbnRJbnNldC5ib3R0b20pIHtcbiAgICAgIGNvbnN0IGluc2V0VmFsdWUgPSBzcGFjZU1hcHBpbmdbdWlDb250ZW50SW5zZXQuYm90dG9tXTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAncGFkZGluZy1ib3R0b20nLFxuICAgICAgICBpbnNldFZhbHVlXG4gICAgICApO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICctLXNkdWktY29udGVudC1pbnNldC1ib3R0b20nLFxuICAgICAgICBpbnNldFZhbHVlXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlCYWNrZ3JvdW5kKHVpQmFja2dyb3VuZDogVUlCYWNrZ3JvdW5kKSB7XG4gICAgaWYgKHVpQmFja2dyb3VuZC5iYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICAgIGNvbnN0IGJhY2tncm91bmRDb2xvciA9IGNvbG9yTWFwcGluZ1t1aUJhY2tncm91bmQuYmFja2dyb3VuZENvbG9yXTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnYmFja2dyb3VuZC1jb2xvcicsXG4gICAgICAgIGJhY2tncm91bmRDb2xvclxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodWlCYWNrZ3JvdW5kLmdyYWRpZW50Q29sb3IxICYmIHVpQmFja2dyb3VuZC5ncmFkaWVudENvbG9yMikge1xuICAgICAgY29uc3QgZ3JhZGllbnRDb2xvcjEgPSBjb2xvck1hcHBpbmdbdWlCYWNrZ3JvdW5kLmdyYWRpZW50Q29sb3IxXTtcbiAgICAgIGNvbnN0IGdyYWRpZW50Q29sb3IyID0gY29sb3JNYXBwaW5nW3VpQmFja2dyb3VuZC5ncmFkaWVudENvbG9yMl07XG4gICAgICBjb25zdCBncmFkaWVudFN0eWxlcyA9IGBsaW5lYXItZ3JhZGllbnQoNDVkZWcsICR7Z3JhZGllbnRDb2xvcjF9LCAke2dyYWRpZW50Q29sb3IyfSlgXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2JhY2tncm91bmQnLFxuICAgICAgICBncmFkaWVudFN0eWxlc1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5QWN0aW9uKHVpQWN0aW9uOiBVSUFjdGlvbikge1xuICAgIGlmICh0aGlzLmRpc2FibGVDbGljaykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjdXJzb3InLCAncG9pbnRlcicpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUFsaWdubWVudCh1aUFsaWdubWVudDogVUlBbGlnbm1lbnQpIHtcbiAgICBpZiAodWlBbGlnbm1lbnQuYWxpZ25tZW50KSB7XG4gICAgICBjb25zdCBhbGlnbm1lbnQgPSBhbGlnbm1lbnRNYXBwaW5nW3VpQWxpZ25tZW50LmFsaWdubWVudF07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2FsaWduLWl0ZW1zJyxcbiAgICAgICAgYWxpZ25tZW50XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTaGFkb3codWlTaGFkb3c6IFVJU2hhZG93KSB7XG4gICAgaWYgKHVpU2hhZG93LmNvbG9yICYmIHVpU2hhZG93Lm9mZnNldFggJiYgdWlTaGFkb3cub2Zmc2V0WSAmJiB1aVNoYWRvdy5ibHVyUmFkaXVzKSB7XG4gICAgICBjb25zdCBjb2xvciA9IGNvbG9yTWFwcGluZ1t1aVNoYWRvdy5jb2xvcl07XG4gICAgICBjb25zdCBvZmZzZXRYID0gc2hhZG93T2Zmc2V0TWFwcGluZ1t1aVNoYWRvdy5vZmZzZXRYXTtcbiAgICAgIGNvbnN0IG9mZnNldFkgPSBzaGFkb3dPZmZzZXRNYXBwaW5nW3VpU2hhZG93Lm9mZnNldFldO1xuICAgICAgY29uc3QgYmx1clJhZGl1cyA9IHNoYWRvd0JsdXJSYWRpdXNNYXBwaW5nW3VpU2hhZG93LmJsdXJSYWRpdXNdO1xuICAgICAgY29uc3Qgb3BhY2l0eSA9IHVpU2hhZG93Lm9wYWNpdHkgIT09IHVuZGVmaW5lZCA/IHVpU2hhZG93Lm9wYWNpdHkgOiAxO1xuXG4gICAgICAvLyBGb3JtYXQ6IGJveC1zaGFkb3c6IG9mZnNldFggb2Zmc2V0WSBibHVyUmFkaXVzIGNvbG9yXG4gICAgICBjb25zdCBzaGFkb3dWYWx1ZSA9IGAke29mZnNldFh9ICR7b2Zmc2V0WX0gJHtibHVyUmFkaXVzfSAke2NvbG9yfWA7XG5cbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnYm94LXNoYWRvdycsXG4gICAgICAgIHNoYWRvd1ZhbHVlXG4gICAgICApO1xuXG4gICAgICBpZiAob3BhY2l0eSAhPT0gMSkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICdvcGFjaXR5JyxcbiAgICAgICAgICBvcGFjaXR5LnRvU3RyaW5nKClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5UmFkaXVzKHVpUmFkaXVzOiBVSVJhZGl1cykge1xuICAgIGlmICh1aVJhZGl1cy50b3BMZWZ0KSB7XG4gICAgICBjb25zdCByYWRpdXMgPSByYWRpdXNNYXBwaW5nW3VpUmFkaXVzLnRvcExlZnRdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdib3JkZXItdG9wLWxlZnQtcmFkaXVzJyxcbiAgICAgICAgcmFkaXVzXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh1aVJhZGl1cy50b3BSaWdodCkge1xuICAgICAgY29uc3QgcmFkaXVzID0gcmFkaXVzTWFwcGluZ1t1aVJhZGl1cy50b3BSaWdodF07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2JvcmRlci10b3AtcmlnaHQtcmFkaXVzJyxcbiAgICAgICAgcmFkaXVzXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh1aVJhZGl1cy5ib3R0b21MZWZ0KSB7XG4gICAgICBjb25zdCByYWRpdXMgPSByYWRpdXNNYXBwaW5nW3VpUmFkaXVzLmJvdHRvbUxlZnRdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzJyxcbiAgICAgICAgcmFkaXVzXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh1aVJhZGl1cy5ib3R0b21SaWdodCkge1xuICAgICAgY29uc3QgcmFkaXVzID0gcmFkaXVzTWFwcGluZ1t1aVJhZGl1cy5ib3R0b21SaWdodF07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzJyxcbiAgICAgICAgcmFkaXVzXG4gICAgICApO1xuICAgIH1cblxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVNwYWNpbmcodWlTcGFjaW5nOiBVSVNwYWNpbmcpIHtcbiAgICBpZiAodWlTcGFjaW5nLnNwYWNpbmcpIHtcbiAgICAgIGNvbnN0IHNwYWNpbmdWYWx1ZSA9IHNwYWNlTWFwcGluZ1t1aVNwYWNpbmcuc3BhY2luZ107XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2dhcCcsXG4gICAgICAgIHNwYWNpbmdWYWx1ZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5SGVpZ2h0KGhlaWdodDogVUlEaW1lbnNpb24pIHtcbiAgICBpZiAoaGVpZ2h0KSB7XG4gICAgICBjb25zdCBoZWlnaHRWYWx1ZSA9IGRpbWVuc2lvbk1hcHBpbmdbaGVpZ2h0XTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnaGVpZ2h0JyxcbiAgICAgICAgaGVpZ2h0VmFsdWVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVdpZHRoKHdpZHRoOiBVSURpbWVuc2lvbikge1xuICAgIGlmICh3aWR0aCkge1xuICAgICAgY29uc3Qgd2lkdGhWYWx1ZSA9IGRpbWVuc2lvbk1hcHBpbmdbd2lkdGhdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICd3aWR0aCcsXG4gICAgICAgIHdpZHRoVmFsdWVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUJvcmRlcldpZHRoKGJvcmRlcldpZHRoOiBudW1iZXIpIHtcbiAgICBpZiAoYm9yZGVyV2lkdGggIT09IG51bGwgJiYgYm9yZGVyV2lkdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdib3JkZXItd2lkdGgnLFxuICAgICAgICBgJHtib3JkZXJXaWR0aH1weGBcbiAgICAgICk7XG5cbiAgICAgIC8vIEVuc3VyZSBib3JkZXIgc3R5bGUgaXMgc2V0LCBvdGhlcndpc2UgYm9yZGVyLXdpZHRoIHdvbid0IGJlIHZpc2libGVcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnYm9yZGVyLXN0eWxlJyxcbiAgICAgICAgJ3NvbGlkJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5Qm9yZGVyQ29sb3IoYm9yZGVyQ29sb3I6IFVJQ29sb3IpIHtcbiAgICBpZiAoYm9yZGVyQ29sb3IpIHtcbiAgICAgIGNvbnN0IGNvbG9yID0gY29sb3JNYXBwaW5nW2JvcmRlckNvbG9yXTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnYm9yZGVyLWNvbG9yJyxcbiAgICAgICAgY29sb3JcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUp1c3RpZnkoanVzdGlmeTogVUlKdXN0aWZ5KSB7XG4gICAgaWYgKGp1c3RpZnkpIHtcbiAgICAgIGNvbnN0IGp1c3RpZnlWYWx1ZSA9IGp1c3RpZnlNYXBwaW5nW2p1c3RpZnldO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdqdXN0aWZ5LWNvbnRlbnQnLFxuICAgICAgICBqdXN0aWZ5VmFsdWVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUFzcGVjdFJhdGlvKGFzcGVjdFJhdGlvOiBudW1iZXIpIHtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTaXplKHNpemU6IFVJU2l6ZSkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHNpemVNYXBwaW5nW3NpemVdO1xuICAgIGlmICghY29uZmlnKSByZXR1cm47XG5cbiAgICBsZXQgeyB3aWR0aDogd2lkdGhWYWx1ZSwgaGVpZ2h0OiBoZWlnaHRWYWx1ZSB9ID0gY29uZmlnO1xuXG4gICAgaWYgKFxuICAgICAgY29uZmlnLnNjYWxhYmxlICYmXG4gICAgICB0aGlzLmlzU21hbGxTY3JlZW4oKSAmJlxuICAgICAgdGhpcy5jdXJyZW50Q29udGFpbmVyID09PSBVSVNjcmVlbkNvbnRhaW5lclR5cGUuRkxVSURcbiAgICApIHtcbiAgICAgIHdpZHRoVmFsdWUgPSB0aGlzLnNjYWxlUGl4ZWxWYWx1ZSh3aWR0aFZhbHVlLCAxLjEpO1xuICAgICAgaGVpZ2h0VmFsdWUgPSB0aGlzLnNjYWxlUGl4ZWxWYWx1ZShoZWlnaHRWYWx1ZSwgMS4xKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCB3aWR0aFZhbHVlKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnaGVpZ2h0JywgaGVpZ2h0VmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUhvdmVyVmFycyh1aVZpZXc6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGhvdmVyID0gdWlWaWV3Py5ob3ZlciA/PyB1aVZpZXc/LmVsZW1lbnQ/LmhvdmVyO1xuICAgIGlmICghaG92ZXIpIHJldHVybjtcblxuICAgIGNvbnN0IGVsID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAvLyBtYXJjYSBxdWUgZXNzZSBlbGVtZW50byB0ZW0gaG92ZXJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGVsLCAnZWRtLWhvdmVyJyk7XG5cbiAgICBpZiAoaG92ZXIuYm9yZGVyX2NvbG9yIHx8IGhvdmVyLmJvcmRlckNvbG9yKSB7XG4gICAgICBjb25zdCB0b2tlbiA9IChob3Zlci5ib3JkZXJfY29sb3IgPz8gaG92ZXIuYm9yZGVyQ29sb3IpLnJlcGxhY2UoL18vZywgJy0nKTtcbiAgICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KCctLWVkbS1ob3Zlci1ib3JkZXItY29sb3InLCBgdmFyKC0tJHt0b2tlbn0pYCk7XG4gICAgfVxuXG4gICAgaWYgKGhvdmVyLmJhY2tncm91bmRfY29sb3IgfHwgaG92ZXIuYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICBjb25zdCB0b2tlbiA9IChob3Zlci5iYWNrZ3JvdW5kX2NvbG9yID8/IGhvdmVyLmJhY2tncm91bmRDb2xvcikucmVwbGFjZSgvXy9nLCAnLScpO1xuICAgICAgZWwuc3R5bGUuc2V0UHJvcGVydHkoJy0tZWRtLWhvdmVyLWJnLWNvbG9yJywgYHZhcigtLSR7dG9rZW59KWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNTbWFsbFNjcmVlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmlubmVyV2lkdGggPj0gNTY1O1xuICB9XG5cbiAgcHJpdmF0ZSBzY2FsZVBpeGVsVmFsdWUodmFsdWU6IHN0cmluZywgZGl2aXNvcjogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBtYXRjaCA9IC9eKFxcZCsoPzpcXC5cXGQrKT8pcHgkLy5leGVjKHZhbHVlKTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3QgbnVtID0gcGFyc2VGbG9hdChtYXRjaFsxXSk7XG4gICAgY29uc3Qgc2NhbGVkID0gbnVtICogZGl2aXNvcjtcbiAgICByZXR1cm4gYCR7c2NhbGVkfXB4YDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICBvbldpbmRvd1Jlc2l6ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBpc1NtYWxsID0gdGhpcy5pc1NtYWxsU2NyZWVuKCk7XG4gICAgaWYgKHRoaXMubGFzdFVpVmlldyAmJiBpc1NtYWxsICE9PSB0aGlzLndhc1NtYWxsU2NyZWVuKSB7XG4gICAgICB0aGlzLmFwcGx5U3R5bGVzKHRoaXMubGFzdFVpVmlldyk7XG4gICAgICB0aGlzLndhc1NtYWxsU2NyZWVuID0gaXNTbWFsbDtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZUNsaWNrKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5lZG1TZHVpVmlldz8uYWN0aW9uKSB7XG4gICAgICB0aGlzLmNhcHR1cmVFeHBsb3JlU2Nyb2xsQ29udGV4dCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLmFjdGlvblNlcnZpY2UuZXhlY3V0ZSh0aGlzLmVkbVNkdWlWaWV3LmFjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjYXB0dXJlRXhwbG9yZVNjcm9sbENvbnRleHQoKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICF0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoJy9leHBsb3JhcicpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IHNjcm9sbFJvdyA9IGVsZW1lbnQuY2xvc2VzdCgnLnNjcm9sbGFibGUtcm93JykgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgaWYgKCFzY3JvbGxSb3cpIHtcbiAgICAgIHRoaXMuY2xlYXJFeHBsb3JlSG9yaXpvbnRhbFNjcm9sbENvbnRleHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWN0aW9uID0gdGhpcy5yZXNvbHZlRXhwbG9yZVNlY3Rpb24oZWxlbWVudCwgc2Nyb2xsUm93KTtcbiAgICBjb25zdCBhY3RpdmVUYWcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLnJvdy10YWctLXNlbGVjdGVkJyk/LmdldEF0dHJpYnV0ZSgnZGF0YS10YWcnKTtcbiAgICBjb25zdCBzZWN0aW9uSWQgPSBzZWN0aW9uPy5pZCB8fCBhY3RpdmVUYWcgfHwgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShVSVZpZXdEaXJlY3RpdmUuRVhQTE9SRV9MQVNUX0FOQ0hPUl9LRVkpO1xuICAgIGNvbnN0IHJvd0luZGV4ID0gdGhpcy5yZXNvbHZlUm93SW5kZXgoc2Nyb2xsUm93LCBzZWN0aW9uKTtcbiAgICBjb25zdCBpdGVtSWQgPSB0aGlzLnJlc29sdmVDbGlja2VkSXRlbUlkKGVsZW1lbnQsIHNlY3Rpb24pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmIChzZWN0aW9uSWQpIHtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShVSVZpZXdEaXJlY3RpdmUuRVhQTE9SRV9MQVNUX0FOQ0hPUl9LRVksIHNlY3Rpb25JZCk7XG4gICAgICB9XG4gICAgICAvLyBTYWx2YSBvIGFuY2hvciBkbyBjbGlxdWUgc2VwYXJhZG8gZG8gc2Nyb2xsIHNweSBwYXJhIG7Do28gc2VyIHNvYnJlc2NyaXRvIGR1cmFudGUgbmF2ZWdhw6fDo29cbiAgICAgIGNvbnN0IGNsaWNrZWRBbmNob3IgPSBzZWN0aW9uPy5pZCB8fCBhY3RpdmVUYWc7XG4gICAgICBpZiAoY2xpY2tlZEFuY2hvcikge1xuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFVJVmlld0RpcmVjdGl2ZS5FWFBMT1JFX0NMSUNLRURfQU5DSE9SX0tFWSwgY2xpY2tlZEFuY2hvcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChyb3dJbmRleCA+PSAwKSB7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oVUlWaWV3RGlyZWN0aXZlLkVYUExPUkVfTEFTVF9ST1dfSU5ERVhfS0VZLCBTdHJpbmcocm93SW5kZXgpKTtcbiAgICAgIH1cblxuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgVUlWaWV3RGlyZWN0aXZlLkVYUExPUkVfTEFTVF9ST1dfU0NST0xMX0xFRlRfS0VZLFxuICAgICAgICBTdHJpbmcoTWF0aC5yb3VuZChzY3JvbGxSb3cuc2Nyb2xsTGVmdCkpXG4gICAgICApO1xuXG4gICAgICBpZiAoaXRlbUlkKSB7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oVUlWaWV3RGlyZWN0aXZlLkVYUExPUkVfTEFTVF9JVEVNX0lEX0tFWSwgaXRlbUlkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oVUlWaWV3RGlyZWN0aXZlLkVYUExPUkVfTEFTVF9JVEVNX0lEX0tFWSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7fVxuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckV4cGxvcmVIb3Jpem9udGFsU2Nyb2xsQ29udGV4dCgpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShVSVZpZXdEaXJlY3RpdmUuRVhQTE9SRV9MQVNUX1JPV19JTkRFWF9LRVkpO1xuICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShVSVZpZXdEaXJlY3RpdmUuRVhQTE9SRV9MQVNUX1JPV19TQ1JPTExfTEVGVF9LRVkpO1xuICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShVSVZpZXdEaXJlY3RpdmUuRVhQTE9SRV9MQVNUX0lURU1fSURfS0VZKTtcbiAgICB9IGNhdGNoIHt9XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVFeHBsb3JlU2VjdGlvbihlbGVtZW50OiBIVE1MRWxlbWVudCwgc2Nyb2xsUm93OiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgY29uc3QgZnJvbUFuY2VzdG9yID1cbiAgICAgIHNjcm9sbFJvdy5jbG9zZXN0KCdbZGF0YS1hbmNob3ItdGFyZ2V0XVtpZF0nKSBhcyBIVE1MRWxlbWVudCB8IG51bGwgfHxcbiAgICAgIHNjcm9sbFJvdy5jbG9zZXN0KCcuY29sdW1uW2lkXScpIGFzIEhUTUxFbGVtZW50IHwgbnVsbCB8fFxuICAgICAgZWxlbWVudC5jbG9zZXN0KCdbZGF0YS1hbmNob3ItdGFyZ2V0XVtpZF0nKSBhcyBIVE1MRWxlbWVudCB8IG51bGwgfHxcbiAgICAgIGVsZW1lbnQuY2xvc2VzdCgnLmNvbHVtbltpZF0nKSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgICBpZiAoZnJvbUFuY2VzdG9yKSByZXR1cm4gZnJvbUFuY2VzdG9yO1xuXG4gICAgLy8gU2XDp8O1ZXMgcG9kZW0gc2VyIGlybcOjcyBkbyBzY3JvbGxhYmxlLXJvdyAobsOjbyBhbmNlc3RyYWlzKS5cbiAgICAvLyBTb2JlIGF0w6kgbyB3cmFwcGVyIGVkbS1zZHVpLWNvbXBvbmVudCBlIHBlcmNvcnJlIGlybcOjb3MgYW50ZXJpb3Jlcy5cbiAgICBjb25zdCB3cmFwcGVyID0gc2Nyb2xsUm93LmNsb3Nlc3QoJ2VkbS1zZHVpLWNvbXBvbmVudCcpIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgICBsZXQgc2libGluZyA9IHdyYXBwZXI/LnByZXZpb3VzRWxlbWVudFNpYmxpbmcgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIHdoaWxlIChzaWJsaW5nKSB7XG4gICAgICBpZiAoc2libGluZy5tYXRjaGVzKCcuY29sdW1uW2lkXScpIHx8IHNpYmxpbmcubWF0Y2hlcygnW2RhdGEtYW5jaG9yLXRhcmdldF1baWRdJykpIHtcbiAgICAgICAgcmV0dXJuIHNpYmxpbmc7XG4gICAgICB9XG4gICAgICBjb25zdCBpbm5lciA9IHNpYmxpbmcucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy5jb2x1bW5baWRdJykgfHxcbiAgICAgICAgc2libGluZy5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignW2RhdGEtYW5jaG9yLXRhcmdldF1baWRdJyk7XG4gICAgICBpZiAoaW5uZXIpIHJldHVybiBpbm5lcjtcbiAgICAgIHNpYmxpbmcgPSBzaWJsaW5nLnByZXZpb3VzRWxlbWVudFNpYmxpbmcgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlUm93SW5kZXgoc2Nyb2xsUm93OiBIVE1MRWxlbWVudCwgc2VjdGlvbjogSFRNTEVsZW1lbnQgfCBudWxsKTogbnVtYmVyIHtcbiAgICBjb25zdCBzY29wZSA9IHNlY3Rpb24gPz8gKHNjcm9sbFJvdy5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50IHwgbnVsbCk7XG4gICAgaWYgKCFzY29wZSkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHJldHVybiBBcnJheS5mcm9tKHNjb3BlLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCcuc2Nyb2xsYWJsZS1yb3cnKSkuaW5kZXhPZihzY3JvbGxSb3cpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlQ2xpY2tlZEl0ZW1JZChlbGVtZW50OiBIVE1MRWxlbWVudCwgc2VjdGlvbjogSFRNTEVsZW1lbnQgfCBudWxsKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKGVsZW1lbnQuaWQgJiYgZWxlbWVudC5pZCAhPT0gc2VjdGlvbj8uaWQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmlkO1xuICAgIH1cblxuICAgIGNvbnN0IGNhbmRpZGF0ZSA9IGVsZW1lbnQuY2xvc2VzdCgnW2lkXScpIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgICBpZiAoY2FuZGlkYXRlPy5pZCAmJiBjYW5kaWRhdGUuaWQgIT09IHNlY3Rpb24/LmlkKSB7XG4gICAgICByZXR1cm4gY2FuZGlkYXRlLmlkO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0=
|
|
@@ -2093,7 +2093,7 @@ const sizeMapping = {
|
|
|
2093
2093
|
[UISize.ASSET_6]: { width: '20px', height: '20px', scalable: false },
|
|
2094
2094
|
[UISize.ASSET_7]: { width: '22px', height: '22px', scalable: false },
|
|
2095
2095
|
[UISize.ASSET_8]: { width: '24px', height: '24px', scalable: false },
|
|
2096
|
-
[UISize.ASSET_9]: { width: '
|
|
2096
|
+
[UISize.ASSET_9]: { width: '40px', height: '40px', scalable: false },
|
|
2097
2097
|
[UISize.ASSET_10]: { width: '30px', height: '30px', scalable: false },
|
|
2098
2098
|
[UISize.CARD_1]: { width: '210px', height: '201px', scalable: true },
|
|
2099
2099
|
[UISize.CARD_2]: { width: '300px', height: '311px', scalable: true },
|
|
@@ -2107,6 +2107,7 @@ const sizeMappingWidth = Object.fromEntries(Object.entries(sizeMapping).map(([ke
|
|
|
2107
2107
|
|
|
2108
2108
|
class UIViewDirective {
|
|
2109
2109
|
static { this.EXPLORE_LAST_ANCHOR_KEY = 'exploreLastAnchor'; }
|
|
2110
|
+
static { this.EXPLORE_CLICKED_ANCHOR_KEY = 'exploreClickedAnchor'; }
|
|
2110
2111
|
static { this.EXPLORE_LAST_ROW_INDEX_KEY = 'exploreLastRowIndex'; }
|
|
2111
2112
|
static { this.EXPLORE_LAST_ROW_SCROLL_LEFT_KEY = 'exploreLastRowScrollLeft'; }
|
|
2112
2113
|
static { this.EXPLORE_LAST_ITEM_ID_KEY = 'exploreLastItemId'; }
|
|
@@ -2392,13 +2393,19 @@ class UIViewDirective {
|
|
|
2392
2393
|
return;
|
|
2393
2394
|
}
|
|
2394
2395
|
const section = this.resolveExploreSection(element, scrollRow);
|
|
2395
|
-
const
|
|
2396
|
+
const activeTag = document.querySelector('.row-tag--selected')?.getAttribute('data-tag');
|
|
2397
|
+
const sectionId = section?.id || activeTag || sessionStorage.getItem(UIViewDirective.EXPLORE_LAST_ANCHOR_KEY);
|
|
2396
2398
|
const rowIndex = this.resolveRowIndex(scrollRow, section);
|
|
2397
2399
|
const itemId = this.resolveClickedItemId(element, section);
|
|
2398
2400
|
try {
|
|
2399
2401
|
if (sectionId) {
|
|
2400
2402
|
sessionStorage.setItem(UIViewDirective.EXPLORE_LAST_ANCHOR_KEY, sectionId);
|
|
2401
2403
|
}
|
|
2404
|
+
// Salva o anchor do clique separado do scroll spy para não ser sobrescrito durante navegação
|
|
2405
|
+
const clickedAnchor = section?.id || activeTag;
|
|
2406
|
+
if (clickedAnchor) {
|
|
2407
|
+
sessionStorage.setItem(UIViewDirective.EXPLORE_CLICKED_ANCHOR_KEY, clickedAnchor);
|
|
2408
|
+
}
|
|
2402
2409
|
if (rowIndex >= 0) {
|
|
2403
2410
|
sessionStorage.setItem(UIViewDirective.EXPLORE_LAST_ROW_INDEX_KEY, String(rowIndex));
|
|
2404
2411
|
}
|
|
@@ -2421,10 +2428,27 @@ class UIViewDirective {
|
|
|
2421
2428
|
catch { }
|
|
2422
2429
|
}
|
|
2423
2430
|
resolveExploreSection(element, scrollRow) {
|
|
2424
|
-
|
|
2431
|
+
const fromAncestor = scrollRow.closest('[data-anchor-target][id]') ||
|
|
2425
2432
|
scrollRow.closest('.column[id]') ||
|
|
2426
2433
|
element.closest('[data-anchor-target][id]') ||
|
|
2427
|
-
element.closest('.column[id]')
|
|
2434
|
+
element.closest('.column[id]');
|
|
2435
|
+
if (fromAncestor)
|
|
2436
|
+
return fromAncestor;
|
|
2437
|
+
// Seções podem ser irmãs do scrollable-row (não ancestrais).
|
|
2438
|
+
// Sobe até o wrapper edm-sdui-component e percorre irmãos anteriores.
|
|
2439
|
+
const wrapper = scrollRow.closest('edm-sdui-component');
|
|
2440
|
+
let sibling = wrapper?.previousElementSibling;
|
|
2441
|
+
while (sibling) {
|
|
2442
|
+
if (sibling.matches('.column[id]') || sibling.matches('[data-anchor-target][id]')) {
|
|
2443
|
+
return sibling;
|
|
2444
|
+
}
|
|
2445
|
+
const inner = sibling.querySelector('.column[id]') ||
|
|
2446
|
+
sibling.querySelector('[data-anchor-target][id]');
|
|
2447
|
+
if (inner)
|
|
2448
|
+
return inner;
|
|
2449
|
+
sibling = sibling.previousElementSibling;
|
|
2450
|
+
}
|
|
2451
|
+
return null;
|
|
2428
2452
|
}
|
|
2429
2453
|
resolveRowIndex(scrollRow, section) {
|
|
2430
2454
|
const scope = section ?? scrollRow.parentElement;
|