@talrace/ngx-noder 0.0.3 → 0.0.5
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/README.md +72 -64
- package/esm2022/lib/+shared/add-link-dialog/add-link-dialog.component.mjs +9 -5
- package/esm2022/lib/+shared/confirm-dialog/confirm-dialog.component.mjs +10 -6
- package/esm2022/lib/+shared/editor/core/editor.mjs +7 -14
- package/esm2022/lib/+shared/editor/core/helpers/rendering.helper.mjs +9 -8
- package/esm2022/lib/+shared/editor/core/layers/text.layer.mjs +4 -4
- package/esm2022/lib/+shared/editor/custom-components/image/components/image.component.mjs +4 -3
- package/esm2022/lib/+shared/editor/custom-components/shared/abstract/base.component.mjs +4 -2
- package/esm2022/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.mjs +6 -12
- package/esm2022/lib/+shared/editor/custom-components/tab/tab.component.mjs +3 -2
- package/esm2022/lib/+shared/editor/custom-components/table/components/table-cell.component.mjs +6 -4
- package/esm2022/lib/+shared/editor/custom-components/table/components/table.component.mjs +7 -5
- package/esm2022/lib/+shared/editor/editor.component.mjs +5 -12
- package/esm2022/lib/+shared/editor/editor.module.mjs +1 -4
- package/esm2022/lib/+shared/editor/execution/models/general-properties.model.mjs +1 -1
- package/esm2022/lib/+shared/editor/execution/regulator.service.mjs +15 -5
- package/esm2022/lib/+shared/editor-title/editor-title.component.mjs +83 -0
- package/esm2022/lib/+shared/editor-toolbar/color-picker/color-picker.component.mjs +2 -2
- package/esm2022/lib/+shared/editor-toolbar/editor-toolbar.component.mjs +77 -91
- package/esm2022/lib/+shared/editor-toolbar/editor-toolbar.module.mjs +11 -1
- package/esm2022/lib/+shared/editor-toolbar/font/font.component.mjs +3 -3
- package/esm2022/lib/+shared/editor-toolbar/font-size/font-size.component.mjs +2 -2
- package/esm2022/lib/+shared/editor-toolbar/font-style/font-style.component.mjs +2 -2
- package/esm2022/lib/+shared/editor-toolbar/menu-dropdowns/menu-dropdowns.component.mjs +194 -0
- package/esm2022/lib/+shared/editor-toolbar/numbering/numbering.component.mjs +3 -3
- package/esm2022/lib/+shared/editor-toolbar/print/print.component.mjs +2 -2
- package/esm2022/lib/+shared/editor-toolbar/toolbar-actions/toolbar-actions.component.mjs +126 -0
- package/esm2022/lib/+shared/editor-toolbar/undo-redo/undo-redo.component.mjs +2 -2
- package/esm2022/lib/+shared/helpers/scaling.helper.mjs +9 -0
- package/esm2022/public-api.mjs +2 -2
- package/fesm2022/talrace-ngx-noder.mjs +455 -398
- package/fesm2022/talrace-ngx-noder.mjs.map +1 -1
- package/lib/+shared/add-link-dialog/add-link-dialog.component.d.ts +1 -0
- package/lib/+shared/confirm-dialog/confirm-dialog.component.d.ts +1 -0
- package/lib/+shared/editor/core/editor.d.ts +3 -3
- package/lib/+shared/editor/core/helpers/rendering.helper.d.ts +3 -3
- package/lib/+shared/editor/custom-components/shared/abstract/base.component.d.ts +3 -1
- package/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.d.ts +1 -1
- package/lib/+shared/editor/custom-components/table/components/table-cell.component.d.ts +2 -2
- package/lib/+shared/editor/custom-components/table/components/table.component.d.ts +0 -2
- package/lib/+shared/editor/editor.component.d.ts +1 -5
- package/lib/+shared/editor/editor.module.d.ts +15 -16
- package/lib/+shared/editor/execution/models/general-properties.model.d.ts +1 -0
- package/lib/+shared/editor/execution/regulator.service.d.ts +2 -2
- package/lib/+shared/editor-title/editor-title.component.d.ts +24 -0
- package/lib/+shared/editor-toolbar/editor-toolbar.component.d.ts +31 -30
- package/lib/+shared/editor-toolbar/editor-toolbar.module.d.ts +19 -16
- package/lib/+shared/editor-toolbar/menu-dropdowns/menu-dropdowns.component.d.ts +73 -0
- package/lib/+shared/editor-toolbar/toolbar-actions/toolbar-actions.component.d.ts +49 -0
- package/lib/+shared/helpers/scaling.helper.d.ts +4 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -1
- package/src/_ngx-noder.theme.scss +10 -8
- package/src/lib/+shared/add-link-dialog/_add-link-dialog.theme.scss +3 -3
- package/src/lib/+shared/confirm-dialog/_theme.scss +6 -6
- package/src/lib/+shared/editor/_editor.theme.scss +84 -15
- package/src/lib/+shared/editor/_theme.scss +0 -2
- package/src/lib/+shared/editor-title/_editor-title.theme.scss +28 -0
- package/src/lib/+shared/editor-toolbar/_editor-toolbar.theme.scss +1 -24
- package/src/lib/+shared/editor-toolbar/_theme.scss +14 -2
- package/src/lib/+shared/editor-toolbar/font-size/_font-size.theme.scss +14 -0
- package/src/lib/+shared/editor-toolbar/font-style/_font-style.theme.scss +21 -0
- package/src/lib/+shared/editor-toolbar/format/_format.theme.scss +21 -0
- package/src/lib/+shared/editor-toolbar/menu-dropdowns/_menu-dropdowns.theme.scss +22 -0
- package/src/lib/+shared/editor-toolbar/numbering/_numbering.theme.scss +52 -11
- package/src/lib/+shared/editor-toolbar/toolbar-actions/_toolbar-actions.theme.scss +21 -0
- package/src/lib/+shared/editor-toolbar/undo-redo/_undo-redo.theme.scss +16 -0
- package/src/lib/+shared/insert-table/_insert-table.theme.scss +9 -6
- package/src/scss/_mixins.scss +2 -37
- package/esm2022/lib/+shared/editor/custom-components/external-element/element-toolbar/element-toolbar.component.mjs +0 -35
- package/esm2022/lib/+shared/editor-header/editor-header.component.mjs +0 -314
- package/lib/+shared/editor/custom-components/external-element/element-toolbar/element-toolbar.component.d.ts +0 -14
- package/lib/+shared/editor-header/editor-header.component.d.ts +0 -101
- package/src/lib/+shared/editor/custom-components/external-element/element-toolbar/_element-toolbar.theme.scss +0 -10
- package/src/lib/+shared/editor-header/_editor-header.theme.scss +0 -106
|
@@ -4,13 +4,14 @@ import { DistanceModel } from '../models/distance.model';
|
|
|
4
4
|
import { DomHelper } from './dom.helper';
|
|
5
5
|
import { FormatExtModel } from '../models/format-ext.model';
|
|
6
6
|
import { HYPERLINK_FONT_COLOR, HYPERLINK_HEADING_STYLE_ID, NEW_LINE_MARKUP } from '../constants/editor.const';
|
|
7
|
+
import { ScalingHelper } from '../../../helpers/scaling.helper';
|
|
7
8
|
import { TextStyleModel } from '../../../../models/generated/text-style.model';
|
|
8
9
|
export class RenderingHelper {
|
|
9
|
-
static createLineElement(lineInfo, numberingOffsetLeft) {
|
|
10
|
+
static createLineElement(lineInfo, numberingOffsetLeft, scalingRatio) {
|
|
10
11
|
let lineEl = document.createElement('div');
|
|
11
12
|
lineEl.className = 'ace-line';
|
|
12
13
|
if (lineInfo) {
|
|
13
|
-
const paddingLeft = lineInfo.paddingLeft - numberingOffsetLeft;
|
|
14
|
+
const paddingLeft = ScalingHelper.scale(lineInfo.paddingLeft - numberingOffsetLeft, scalingRatio);
|
|
14
15
|
const marginLeft = paddingLeft < 0 ? paddingLeft : 0;
|
|
15
16
|
lineEl.setAttribute('style',
|
|
16
17
|
// eslint-disable-next-line prettier/prettier
|
|
@@ -32,12 +33,12 @@ export class RenderingHelper {
|
|
|
32
33
|
}
|
|
33
34
|
domContent.parentNode.appendChild(valueFragment);
|
|
34
35
|
}
|
|
35
|
-
static renderContentWrappedLine(domContent, splits, currentParagraph, formatsExt, distance, customContentService, customComponents, breaks = []) {
|
|
36
|
+
static renderContentWrappedLine(domContent, splits, currentParagraph, formatsExt, distance, customContentService, customComponents, scalingRatio, breaks = []) {
|
|
36
37
|
let splitIndex = 0;
|
|
37
38
|
const numberingOffsetLeft = currentParagraph.numberingData.numberingId === null
|
|
38
39
|
? 0
|
|
39
40
|
: currentParagraph.numberingData.width + currentParagraph.numberingData.paddingLeft;
|
|
40
|
-
let lineEl = RenderingHelper.createLineElement(currentParagraph.textLinesInfo[splitIndex], numberingOffsetLeft);
|
|
41
|
+
let lineEl = RenderingHelper.createLineElement(currentParagraph.textLinesInfo[splitIndex], numberingOffsetLeft, scalingRatio);
|
|
41
42
|
domContent.parentNode.appendChild(lineEl);
|
|
42
43
|
const valueFragment = DomHelper.createFragment(domContent.currentElement);
|
|
43
44
|
let paragraphChars = 0;
|
|
@@ -59,7 +60,7 @@ export class RenderingHelper {
|
|
|
59
60
|
while (paragraphChars === split && nextFragmentStartIndex !== distance.end) {
|
|
60
61
|
split = splits[++splitIndex];
|
|
61
62
|
const nextFragmentDocumentStartIndex = fragmentDocumentStartIndex + nextFragmentStartIndex - fragmentStartIndex;
|
|
62
|
-
lineEl = RenderingHelper.createLineElement(currentParagraph.textLinesInfo[splitIndex], numberingOffsetLeft);
|
|
63
|
+
lineEl = RenderingHelper.createLineElement(currentParagraph.textLinesInfo[splitIndex], numberingOffsetLeft, scalingRatio);
|
|
63
64
|
if (split > formatExt.endIndex) {
|
|
64
65
|
const nextFragmentEndIndex = formatExt.content.length - 1;
|
|
65
66
|
const nextFragmentDistance = new DistanceModel({ start: nextFragmentStartIndex, end: nextFragmentEndIndex });
|
|
@@ -89,7 +90,7 @@ export class RenderingHelper {
|
|
|
89
90
|
}
|
|
90
91
|
}
|
|
91
92
|
}
|
|
92
|
-
static renderNumberingMarker(paragraph, layerElement) {
|
|
93
|
+
static renderNumberingMarker(paragraph, layerElement, scalingRatio) {
|
|
93
94
|
const markerHeight = paragraph.numberingData.height;
|
|
94
95
|
const markerLineInfo = {
|
|
95
96
|
paddingLeft: paragraph.numberingData.paddingLeft,
|
|
@@ -100,7 +101,7 @@ export class RenderingHelper {
|
|
|
100
101
|
offsetAfter: 0,
|
|
101
102
|
screenLine: 0
|
|
102
103
|
};
|
|
103
|
-
const numberingLineEl = this.createLineElement(markerLineInfo, 0);
|
|
104
|
+
const numberingLineEl = this.createLineElement(markerLineInfo, 0, scalingRatio);
|
|
104
105
|
const markerFragment = DomHelper.createFragment(layerElement);
|
|
105
106
|
const marker = paragraph.numberingData.marker;
|
|
106
107
|
const markerExtModel = new FormatExtModel({
|
|
@@ -183,4 +184,4 @@ export class RenderingHelper {
|
|
|
183
184
|
customContentService.componentService.attachComponent(fragment, component);
|
|
184
185
|
}
|
|
185
186
|
}
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyaW5nLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliLytzaGFyZWQvZWRpdG9yL2NvcmUvaGVscGVycy9yZW5kZXJpbmcuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDBCQUEwQixFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSTlHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUUvRSxNQUFNLE9BQU8sZUFBZTtJQUN4QixNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBc0IsRUFBRSxtQkFBMkI7UUFDeEUsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxNQUFNLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztRQUU5QixJQUFJLFFBQVEsRUFBRTtZQUNWLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEdBQUcsbUJBQW1CLENBQUM7WUFDL0QsTUFBTSxVQUFVLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFckQsTUFBTSxDQUFDLFlBQVksQ0FDZixPQUFPO1lBQ1AsNkNBQTZDO1lBQzdDLGdCQUFnQixXQUFXLGFBQWEsUUFB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QWtDLEVBQ2xDLGlCQUFnQyxFQUNoQyxLQUFhLEVBQ2IsY0FBc0I7UUFFdEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsY0FBYyxHQUFHLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoRyxPQUFPLENBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FDSixLQUFLLEdBQUcsY0FBYyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQzFDLFNBQVMsRUFDVCxTQUFTLENBQUMsUUFBUSxHQUFHLDBCQUEwQixHQUFHLENBQUMsRUFDbkQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQzNCLEdBQUcsQ0FBQyxDQUNSLENBQUM7SUFDTixDQUFDO0lBRVMsTUFBTSxDQUFDLGVBQWUsQ0FDNUIsUUFBMEIsRUFDMUIsU0FBZ0MsRUFDaEMsb0JBQTBDO1FBRTFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDL0UsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJyZWFrSGVscGVyIH0gZnJvbSAnLi4vLi4vaGVscGVycy9icmVhay5oZWxwZXInO1xuaW1wb3J0IHsgQnJlYWtNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvYnJlYWsubW9kZWwnO1xuaW1wb3J0IHsgQ29udGVudFN0eWxlSGVscGVyIH0gZnJvbSAnLi9jb250ZW50LXN0eWxlLmhlbHBlcic7XG5pbXBvcnQgeyBDdXN0b21Db250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2N1c3RvbS1jb21wb25lbnRzL3NoYXJlZC9zZXJ2aWNlcy9jdXN0b20tY29udGVudC9jdXN0b20tY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7IERpc3RhbmNlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZGlzdGFuY2UubW9kZWwnO1xuaW1wb3J0IHsgRG9tSGVscGVyIH0gZnJvbSAnLi9kb20uaGVscGVyJztcbmltcG9ydCB7IEZvcm1hdEV4dE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm1hdC1leHQubW9kZWwnO1xuaW1wb3J0IHsgSFlQRVJMSU5LX0ZPTlRfQ09MT1IsIEhZUEVSTElOS19IRUFESU5HX1NUWUxFX0lELCBORVdfTElORV9NQVJLVVAgfSBmcm9tICcuLi9jb25zdGFudHMvZWRpdG9yLmNvbnN0JztcbmltcG9ydCB7IElDdXN0b21Db21wb25lbnRzIH0gZnJvbSAnLi4vLi4vY3VzdG9tLWNvbXBvbmVudHMvc2hhcmVkL2ludGVyZmFjZXMvY3VzdG9tLWNvbXBvbmVudHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBhcmFncmFwaCB9IGZyb20gJy4uL3BhZ2luZy9wYXJhZ3JhcGgnO1xuaW1wb3J0IHsgVGV4dExpbmVJbmZvIH0gZnJvbSAnLi4vcGFnaW5nL3RleHQtbGluZS1pbmZvJztcbmltcG9ydCB7IFRleHRTdHlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90ZXh0LXN0eWxlLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIFJlbmRlcmluZ0hlbHBlciB7XG4gICAgc3RhdGljIGNyZWF0ZUxpbmVFbGVtZW50KGxpbmVJbmZvOiBUZXh0TGluZUluZm8sIG51bWJlcmluZ09mZnNldExlZnQ6IG51bWJlcik6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgbGV0IGxpbmVFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBsaW5lRWwuY2xhc3NOYW1lID0gJ2FjZS1saW5lJztcblxuICAgICAgICBpZiAobGluZUluZm8pIHtcbiAgICAgICAgICAgIGNvbnN0IHBhZGRpbmdMZWZ0ID0gbGluZUluZm8ucGFkZGluZ0xlZnQgLSBudW1iZXJpbmdPZmZzZXRMZWZ0O1xuICAgICAgICAgICAgY29uc3QgbWFyZ2luTGVmdCA9IHBhZGRpbmdMZWZ0IDwgMCA/IHBhZGRpbmdMZWZ0IDogMDtcblxuICAgICAgICAgICAgbGluZUVsLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAgICAgICAnc3R5bGUnLFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmV0dGllci9wcmV0dGllclxuICAgICAgICAgICAgICAgIGBwYWRkaW5nLWxlZnQ6JHtwYWRkaW5nTGVmdH1weDtoZWlnaHQ6JHtsaW5lSW5mby5oZWlnaHQgKyBsaW5lSW5mby5vZmZzZXRBZnRlcn1weDttYXJnaW4tdG9wOiR7XG4gICAgICAgICAgICAgICAgICAgIGxpbmVJbmZvLm9mZnNldEJlZm9yZVxuICAgICAgICAgICAgICAgIH1weDttYXJnaW4tYm90dG9tOiR7bGluZUluZm8uZW5kUGFnZU9mZnNldH1weDttYXJnaW4tbGVmdDoke21hcmdpbkxlZnR9cHg7YmFja2dyb3VuZC1jb2xvcjoke2xpbmVJbmZvLmJhY2tncm91bmRDb2xvcn1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbGluZUVsLnNldEF0dHJpYnV0ZSgnc2NyZWVuLWluZGV4JywgYCR7bGluZUluZm8uc2NyZWVuTGluZX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsaW5lRWw7XG4gICAgfVxuXG4gICAgc3RhdGljIHJlbmRlckNvbnRlbnRTaW1wbGVMaW5lKFxuICAgICAgICBkb21Db250ZW50OiB7IGN1cnJlbnRFbGVtZW50OiBIVE1MRWxlbWVudDsgcGFyZW50Tm9kZTogTm9kZSB9LFxuICAgICAgICBmb3JtYXRzRXh0OiBGb3JtYXRFeHRNb2RlbFtdLFxuICAgICAgICByb3dEaXN0YW5jZTogRGlzdGFuY2VNb2RlbCxcbiAgICAgICAgY3VzdG9tQ29udGVudFNlcnZpY2U6IEN1c3RvbUNvbnRlbnRTZXJ2aWNlLFxuICAgICAgICBjdXN0b21Db21wb25lbnRzOiBJQ3VzdG9tQ29tcG9uZW50cyxcbiAgICAgICAgYnJlYWtzOiBCcmVha01vZGVsW10gPSBbXVxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWx1ZUZyYWdtZW50ID0gRG9tSGVscGVyLmNyZWF0ZUZyYWdtZW50KGRvbUNvbnRlbnQuY3VycmVudEVsZW1lbnQpO1xuICAgICAgICBmb3IgKGNvbnN0IGZvcm1hdEV4dCBvZiBmb3JtYXRzRXh0KSB7XG4gICAgICAgICAgICBjb25zdCBmcmFnbWVudERvY3VtZW50U3RhcnRJbmRleCA9IHJvd0Rpc3RhbmNlLnN0YXJ0ID4gZm9ybWF0RXh0LnN0YXJ0SW5kZXggPyByb3dEaXN0YW5jZS5zdGFydCA6IGZvcm1hdEV4dC5zdGFydEluZGV4O1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnREb2N1bWVudEVuZEluZGV4ID0gZm9ybWF0RXh0LmVuZEluZGV4ID4gcm93RGlzdGFuY2UuZW5kID8gcm93RGlzdGFuY2UuZW5kIDogZm9ybWF0RXh0LmVuZEluZGV4O1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnREb2N1bWVudERpc3RhbmNlID0gbmV3IERpc3RhbmNlTW9kZWwoeyBzdGFydDogZnJhZ21lbnREb2N1bWVudFN0YXJ0SW5kZXgsIGVuZDogZnJhZ21lbnREb2N1bWVudEVuZEluZGV4IH0pO1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnRTdGFydEluZGV4ID0gcm93RGlzdGFuY2Uuc3RhcnQgPiBmb3JtYXRFeHQuc3RhcnRJbmRleCA/IHJvd0Rpc3RhbmNlLnN0YXJ0IC0gZm9ybWF0RXh0LnN0YXJ0SW5kZXggOiAwO1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnRFbmRJbmRleCA9XG4gICAgICAgICAgICAgICAgZm9ybWF0RXh0LmVuZEluZGV4ID4gcm93RGlzdGFuY2UuZW5kID8gcm93RGlzdGFuY2UuZW5kIC0gZm9ybWF0RXh0LnN0YXJ0SW5kZXggOiBmb3JtYXRFeHQuZW5kSW5kZXggLSBmb3JtYXRFeHQuc3RhcnRJbmRleDtcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50RGlzdGFuY2UgPSBuZXcgRGlzdGFuY2VNb2RlbCh7IHN0YXJ0OiBmcmFnbWVudFN0YXJ0SW5kZXgsIGVuZDogZnJhZ21lbnRFbmRJbmRleCB9KTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyRm9ybWF0Q29udGVudChcbiAgICAgICAgICAgICAgICB2YWx1ZUZyYWdtZW50LFxuICAgICAgICAgICAgICAgIGZvcm1hdEV4dCxcbiAgICAgICAgICAgICAgICBmcmFnbWVudERvY3VtZW50RGlzdGFuY2UsXG4gICAgICAgICAgICAgICAgZnJhZ21lbnREaXN0YW5jZSxcbiAgICAgICAgICAgICAgICBjdXN0b21Db250ZW50U2VydmljZSxcbiAgICAgICAgICAgICAgICBjdXN0b21Db21wb25lbnRzLFxuICAgICAgICAgICAgICAgIGJyZWFrc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRvbUNvbnRlbnQucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh2YWx1ZUZyYWdtZW50KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgcmVuZGVyQ29udGVudFdyYXBwZWRMaW5lKFxuICAgICAgICBkb21Db250ZW50OiB7IGN1cnJlbnRFbGVtZW50OiBIVE1MRWxlbWVudDsgcGFyZW50Tm9kZTogTm9kZSB9LFxuICAgICAgICBzcGxpdHM6IG51bWJlcltdLFxuICAgICAgICBjdXJyZW50UGFyYWdyYXBoOiBQYXJhZ3JhcGgsXG4gICAgICAgIGZvcm1hdHNFeHQ6IEZvcm1hdEV4dE1vZGVsW10sXG4gICAgICAgIGRpc3RhbmNlOiBEaXN0YW5jZU1vZGVsLFxuICAgICAgICBjdXN0b21Db250ZW50U2VydmljZTogQ3VzdG9tQ29udGVudFNlcnZpY2UsXG4gICAgICAgIGN1c3RvbUNvbXBvbmVudHM6IElDdXN0b21Db21wb25lbnRzLFxuICAgICAgICBicmVha3M6IEJyZWFrTW9kZWxbXSA9IFtdXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGxldCBzcGxpdEluZGV4ID0gMDtcbiAgICAgICAgY29uc3QgbnVtYmVyaW5nT2Zmc2V0TGVmdCA9XG4gICAgICAgICAgICBjdXJyZW50UGFyYWdyYXBoLm51bWJlcmluZ0RhdGEubnVtYmVyaW5nSWQgPT09IG51bGxcbiAgICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgICA6IGN1cnJlbnRQYXJhZ3JhcGgubnVtYmVyaW5nRGF0YS53aWR0aCArIGN1cnJlbnRQYXJhZ3JhcGgubnVtYmVyaW5nRGF0YS5wYWRkaW5nTGVmdDtcbiAgICAgICAgbGV0IGxpbmVFbCA9IFJlbmRlcmluZ0hlbHBlci5jcmVhdGVMaW5lRWxlbWVudChjdXJyZW50UGFyYWdyYXBoLnRleHRMaW5lc0luZm9bc3BsaXRJbmRleF0sIG51bWJlcmluZ09mZnNldExlZnQpO1xuICAgICAgICBkb21Db250ZW50LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQobGluZUVsKTtcblxuICAgICAgICBjb25zdCB2YWx1ZUZyYWdtZW50ID0gRG9tSGVscGVyLmNyZWF0ZUZyYWdtZW50KGRvbUNvbnRlbnQuY3VycmVudEVsZW1lbnQpO1xuICAgICAgICBsZXQgcGFyYWdyYXBoQ2hhcnMgPSAwO1xuICAgICAgICBsZXQgc3BsaXQgPSBzcGxpdHNbc3BsaXRJbmRleF07XG4gICAgICAgIGZvciAoY29uc3QgZm9ybWF0RXh0IG9mIGZvcm1hdHNFeHQpIHtcbiAgICAgICAgICAgIGNvbnN0IGJlZm9yZVNwbGl0SW5kZXggPSBzcGxpdCA/IHNwbGl0IC0gMSA6IGRpc3RhbmNlLmVuZCAtIGRpc3RhbmNlLnN0YXJ0O1xuICAgICAgICAgICAgY29uc3QgYmVmb3JlU3BsaXREb2N1bWVudEluZGV4ID0gZGlzdGFuY2Uuc3RhcnQgKyBiZWZvcmVTcGxpdEluZGV4O1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnREb2N1bWVudFN0YXJ0SW5kZXggPSBkaXN0YW5jZS5zdGFydCArIHBhcmFncmFwaENoYXJzO1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnREb2N1bWVudEVuZEluZGV4ID0gZm9ybWF0RXh0LmVuZEluZGV4IDwgYmVmb3JlU3BsaXREb2N1bWVudEluZGV4ID8gZm9ybWF0RXh0LmVuZEluZGV4IDogYmVmb3JlU3BsaXREb2N1bWVudEluZGV4O1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnREb2N1bWVudERpc3RhbmNlID0gbmV3IERpc3RhbmNlTW9kZWwoeyBzdGFydDogZnJhZ21lbnREb2N1bWVudFN0YXJ0SW5kZXgsIGVuZDogZnJhZ21lbnREb2N1bWVudEVuZEluZGV4IH0pO1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnRTdGFydEluZGV4ID0gZGlzdGFuY2Uuc3RhcnQgPiBmb3JtYXRFeHQuc3RhcnRJbmRleCA/IGRpc3RhbmNlLnN0YXJ0IC0gZm9ybWF0RXh0LnN0YXJ0SW5kZXggOiAwO1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnRFbmRJbmRleCA9XG4gICAgICAgICAgICAgICAgZm9ybWF0RXh0LmVuZEluZGV4IDwgYmVmb3JlU3BsaXREb2N1bWVudEluZGV4XG4gICAgICAgICAgICAgICAgICAgID8gZnJhZ21lbnRTdGFydEluZGV4ICsgZm9ybWF0RXh0LmVuZEluZGV4IC0gZm9ybWF0RXh0LnN0YXJ0SW5kZXhcbiAgICAgICAgICAgICAgICAgICAgOiBkaXN0YW5jZS5zdGFydCArIGJlZm9yZVNwbGl0SW5kZXggLSBmb3JtYXRFeHQuc3RhcnRJbmRleDtcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50RGlzdGFuY2UgPSBuZXcgRGlzdGFuY2VNb2RlbCh7IHN0YXJ0OiBmcmFnbWVudFN0YXJ0SW5kZXgsIGVuZDogZnJhZ21lbnRFbmRJbmRleCB9KTtcbiAgICAgICAgICAgIHBhcmFncmFwaENoYXJzICs9IHRoaXMucmVuZGVyRm9ybWF0Q29udGVudChcbiAgICAgICAgICAgICAgICB2YWx1ZUZyYWdtZW50LFxuICAgICAgICAgICAgICAgIGZvcm1hdEV4dCxcbiAgICAgICAgICAgICAgICBmcmFnbWVudERvY3VtZW50RGlzdGFuY2UsXG4gICAgICAgICAgICAgICAgZnJhZ21lbnREaXN0YW5jZSxcbiAgICAgICAgICAgICAgICBjdXN0b21Db250ZW50U2VydmljZSxcbiAgICAgICAgICAgICAgICBjdXN0b21Db21wb25lbnRzLFxuICAgICAgICAgICAgICAgIGJyZWFrc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGxpbmVFbC5hcHBlbmRDaGlsZCh2YWx1ZUZyYWdtZW50KTtcbiAgICAgICAgICAgIGxldCBuZXh0RnJhZ21lbnRTdGFydEluZGV4ID0gZnJhZ21lbnRFbmRJbmRleCArIDE7XG4gICAgICAgICAgICB3aGlsZSAocGFyYWdyYXBoQ2hhcnMgPT09IHNwbGl0ICYmIG5leHRGcmFnbWVudFN0YXJ0SW5kZXggIT09IGRpc3RhbmNlLmVuZCkge1xuICAgICAgICAgICAgICAgIHNwbGl0ID0gc3BsaXRzWysrc3BsaXRJbmRleF07XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dEZyYWdtZW50RG9jdW1lbnRTdGFydEluZGV4ID0gZnJhZ21lbnREb2N1bWVudFN0YXJ0SW5kZXggKyBuZXh0RnJhZ21lbnRTdGFydEluZGV4IC0gZnJhZ21lbnRTdGFydEluZGV4O1xuICAgICAgICAgICAgICAgIGxpbmVFbCA9IFJlbmRlcmluZ0hlbHBlci5jcmVhdGVMaW5lRWxlbWVudChjdXJyZW50UGFyYWdyYXBoLnRleHRMaW5lc0luZm9bc3BsaXRJbmRleF0sIG51bWJlcmluZ09mZnNldExlZnQpO1xuICAgICAgICAgICAgICAgIGlmIChzcGxpdCA+IGZvcm1hdEV4dC5lbmRJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0RnJhZ21lbnRFbmRJbmRleCA9IGZvcm1hdEV4dC5jb250ZW50Lmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRGcmFnbWVudERpc3RhbmNlID0gbmV3IERpc3RhbmNlTW9kZWwoeyBzdGFydDogbmV4dEZyYWdtZW50U3RhcnRJbmRleCwgZW5kOiBuZXh0RnJhZ21lbnRFbmRJbmRleCB9KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dEZyYWdtZW50RG9jdW1lbnRFbmRJbmRleCA9IG5leHRGcmFnbWVudERvY3VtZW50U3RhcnRJbmRleCArIG5leHRGcmFnbWVudEVuZEluZGV4IC0gbmV4dEZyYWdtZW50U3RhcnRJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dEZyYWdtZW50RG9jdW1lbnREaXN0YW5jZSA9IG5ldyBEaXN0YW5jZU1vZGVsKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBuZXh0RnJhZ21lbnREb2N1bWVudFN0YXJ0SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IG5leHRGcmFnbWVudERvY3VtZW50RW5kSW5kZXhcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFncmFwaENoYXJzICs9IHRoaXMucmVuZGVyRm9ybWF0Q29udGVudChcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRnJhZ21lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRFeHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0RnJhZ21lbnREb2N1bWVudERpc3RhbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEZyYWdtZW50RGlzdGFuY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21Db250ZW50U2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUNvbXBvbmVudHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVha3NcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgbGluZUVsLmFwcGVuZENoaWxkKHZhbHVlRnJhZ21lbnQpO1xuICAgICAgICAgICAgICAgICAgICBkb21Db250ZW50LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQobGluZUVsKTtcblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0SW5kZXhMZW5ndGggPSBSZW5kZXJpbmdIZWxwZXIuZ2V0VGV4dEluZGV4TGVuZ3RoRm9ySW5zZXJ0KFxuICAgICAgICAgICAgICAgICAgICBmb3JtYXRFeHQsXG4gICAgICAgICAgICAgICAgICAgIG5leHRGcmFnbWVudERvY3VtZW50U3RhcnRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2UsXG4gICAgICAgICAgICAgICAgICAgIHNwbGl0LFxuICAgICAgICAgICAgICAgICAgICBwYXJhZ3JhcGhDaGFyc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dEZyYWdtZW50RG9jdW1lbnRFbmRJbmRleCA9IG5leHRGcmFnbWVudERvY3VtZW50U3RhcnRJbmRleCArIHRleHRJbmRleExlbmd0aDtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0RnJhZ21lbnRFbmRJbmRleCA9IG5leHRGcmFnbWVudFN0YXJ0SW5kZXggKyB0ZXh0SW5kZXhMZW5ndGg7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dEZyYWdtZW50RGlzdGFuY2UgPSBuZXcgRGlzdGFuY2VNb2RlbCh7IHN0YXJ0OiBuZXh0RnJhZ21lbnRTdGFydEluZGV4LCBlbmQ6IG5leHRGcmFnbWVudEVuZEluZGV4IH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRGcmFnbWVudERvY3VtZW50RGlzdGFuY2UgPSBuZXcgRGlzdGFuY2VNb2RlbCh7XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBuZXh0RnJhZ21lbnREb2N1bWVudFN0YXJ0SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGVuZDogbmV4dEZyYWdtZW50RG9jdW1lbnRFbmRJbmRleFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbmRlcmVkQ2hhcnMgPSB0aGlzLnJlbmRlckZvcm1hdENvbnRlbnQoXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlRnJhZ21lbnQsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdEV4dCxcbiAgICAgICAgICAgICAgICAgICAgbmV4dEZyYWdtZW50RG9jdW1lbnREaXN0YW5jZSxcbiAgICAgICAgICAgICAgICAgICAgbmV4dEZyYWdtZW50RGlzdGFuY2UsXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbUNvbnRlbnRTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICBjdXN0b21Db21wb25lbnRzLFxuICAgICAgICAgICAgICAgICAgICBicmVha3NcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGxpbmVFbC5hcHBlbmRDaGlsZCh2YWx1ZUZyYWdtZW50KTtcbiAgICAgICAgICAgICAgICBkb21Db250ZW50LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQobGluZUVsKTtcbiAgICAgICAgICAgICAgICBuZXh0RnJhZ21lbnRTdGFydEluZGV4ICs9IHJlbmRlcmVkQ2hhcnM7XG4gICAgICAgICAgICAgICAgcGFyYWdyYXBoQ2hhcnMgKz0gcmVuZGVyZWRDaGFycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyByZW5kZXJOdW1iZXJpbmdNYXJrZXIocGFyYWdyYXBoOiBQYXJhZ3JhcGgsIGxheWVyRWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IG1hcmtlckhlaWdodCA9IHBhcmFncmFwaC5udW1iZXJpbmdEYXRhLmhlaWdodDtcblxuICAgICAgICBjb25zdCBtYXJrZXJMaW5lSW5mbyA9IHtcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiBwYXJhZ3JhcGgubnVtYmVyaW5nRGF0YS5wYWRkaW5nTGVmdCxcbiAgICAgICAgICAgIGhlaWdodDogbWFya2VySGVpZ2h0LFxuICAgICAgICAgICAgb2Zmc2V0QmVmb3JlOiAwLFxuICAgICAgICAgICAgZmlyc3RMaW5lUGFnZU9mZnNldDogMCxcbiAgICAgICAgICAgIGVuZFBhZ2VPZmZzZXQ6IDAsXG4gICAgICAgICAgICBvZmZzZXRBZnRlcjogMCxcbiAgICAgICAgICAgIHNjcmVlbkxpbmU6IDBcbiAgICAgICAgfSBhcyBUZXh0TGluZUluZm87XG4gICAgICAgIGNvbnN0IG51bWJlcmluZ0xpbmVFbCA9IHRoaXMuY3JlYXRlTGluZUVsZW1lbnQobWFya2VyTGluZUluZm8sIDApO1xuXG4gICAgICAgIGNvbnN0IG1hcmtlckZyYWdtZW50ID0gRG9tSGVscGVyLmNyZWF0ZUZyYWdtZW50KGxheWVyRWxlbWVudCk7XG4gICAgICAgIGNvbnN0IG1hcmtlciA9IHBhcmFncmFwaC5udW1iZXJpbmdEYXRhLm1hcmtlcjtcbiAgICAgICAgY29uc3QgbWFya2VyRXh0TW9kZWwgPSBuZXcgRm9ybWF0RXh0TW9kZWwoe1xuICAgICAgICAgICAgdGV4dFN0eWxlOiBwYXJhZ3JhcGgubnVtYmVyaW5nRGF0YS5tYXJrZXJUZXh0U3R5bGUsXG4gICAgICAgICAgICBjb250ZW50OiBtYXJrZXJcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVuZGVyVGV4dChtYXJrZXJGcmFnbWVudCwgbWFya2VyRXh0TW9kZWwsIG1hcmtlcik7XG4gICAgICAgIG51bWJlcmluZ0xpbmVFbC5hcHBlbmRDaGlsZChtYXJrZXJGcmFnbWVudCk7XG5cbiAgICAgICAgcmV0dXJuIG51bWJlcmluZ0xpbmVFbDtcbiAgICB9XG5cbiAgICBzdGF0aWMgY3JlYXRlRGl2Q29udGFpbmVyKGNsYXNzTmFtZTogc3RyaW5nKTogSFRNTERpdkVsZW1lbnQge1xuICAgICAgICBjb25zdCBjb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGNvbnRhaW5lckVsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuXG4gICAgICAgIHJldHVybiBjb250YWluZXJFbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHJlbmRlckZvcm1hdENvbnRlbnQoXG4gICAgICAgIGZyYWdtZW50OiBEb2N1bWVudEZyYWdtZW50LFxuICAgICAgICBmb3JtYXRFeHQ6IEZvcm1hdEV4dE1vZGVsLFxuICAgICAgICBmcmFnbWVudERvY3VtZW50RGlzdGFuY2U6IERpc3RhbmNlTW9kZWwsXG4gICAgICAgIGZyYWdtZW50RGlzdGFuY2U6IERpc3RhbmNlTW9kZWwsXG4gICAgICAgIGN1c3RvbUNvbnRlbnRTZXJ2aWNlOiBDdXN0b21Db250ZW50U2VydmljZSxcbiAgICAgICAgY3VzdG9tQ29tcG9uZW50czogSUN1c3RvbUNvbXBvbmVudHMsXG4gICAgICAgIGJyZWFrczogQnJlYWtNb2RlbFtdXG4gICAgKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHRleHRGcmFnbWVudCA9IGZvcm1hdEV4dC5jb250ZW50LnN1YnN0cmluZyhmcmFnbWVudERpc3RhbmNlLnN0YXJ0LCBmcmFnbWVudERpc3RhbmNlLmVuZCArIDEpO1xuICAgICAgICBpZiAoIXRleHRGcmFnbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0ZXh0RnJhZ21lbnRXaXRob3V0QnJlYWtzID0gQnJlYWtIZWxwZXIucmVtb3ZlQnJlYWtNYXJrZXIoYnJlYWtzLCB0ZXh0RnJhZ21lbnQsIGZyYWdtZW50RG9jdW1lbnREaXN0YW5jZS5zdGFydCk7XG5cbiAgICAgICAgaWYgKGN1c3RvbUNvbnRlbnRTZXJ2aWNlLmlzRnJhZ21lbnRDb250YWluQ29tcG9uZW50KGN1c3RvbUNvbXBvbmVudHMsIHRleHRGcmFnbWVudCwgZnJhZ21lbnREb2N1bWVudERpc3RhbmNlKSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJUZXh0V2l0aEN1c3RvbUNvbnRlbnQoXG4gICAgICAgICAgICAgICAgZnJhZ21lbnQsXG4gICAgICAgICAgICAgICAgZm9ybWF0RXh0LFxuICAgICAgICAgICAgICAgIGZyYWdtZW50RG9jdW1lbnREaXN0YW5jZSxcbiAgICAgICAgICAgICAgICB0ZXh0RnJhZ21lbnRXaXRob3V0QnJlYWtzLFxuICAgICAgICAgICAgICAgIGN1c3RvbUNvbnRlbnRTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIGN1c3RvbUNvbXBvbmVudHNcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBSZW5kZXJpbmdIZWxwZXIucmVuZGVyVGV4dChmcmFnbWVudCwgZm9ybWF0RXh0LCB0ZXh0RnJhZ21lbnRXaXRob3V0QnJlYWtzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0ZXh0RnJhZ21lbnQubGVuZ3RoO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHJlbmRlclRleHRXaXRoQ3VzdG9tQ29udGVudChcbiAgICAgICAgZnJhZ21lbnQ6IERvY3VtZW50RnJhZ21lbnQsXG4gICAgICAgIGZvcm1hdEV4dDogRm9ybWF0RXh0TW9kZWwsXG4gICAgICAgIGZyYWdtZW50RG9jdW1lbnREaXN0YW5jZTogRGlzdGFuY2VNb2RlbCxcbiAgICAgICAgdGV4dEZyYWdtZW50OiBzdHJpbmcsXG4gICAgICAgIGN1c3RvbUNvbnRlbnRTZXJ2aWNlOiBDdXN0b21Db250ZW50U2VydmljZSxcbiAgICAgICAgY3VzdG9tQ29tcG9uZW50czogSUN1c3RvbUNvbXBvbmVudHNcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IGN1c3RvbUNvbnRlbnRTZXJ2aWNlLmdldENvbXBvbmVudHMoY3VzdG9tQ29tcG9uZW50cywgZnJhZ21lbnREb2N1bWVudERpc3RhbmNlKTtcblxuICAgICAgICBpZiAoIWNvbXBvbmVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBSZW5kZXJpbmdIZWxwZXIucmVuZGVyVGV4dChmcmFnbWVudCwgZm9ybWF0RXh0LCB0ZXh0RnJhZ21lbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG5ld1RleHRGcmFnbWVudFN0YXJ0SW5kZXggPSBmcmFnbWVudERvY3VtZW50RGlzdGFuY2Uuc3RhcnQ7XG4gICAgICAgIGxldCBuZXh0VGV4dEZyYWdtZW50ID0gdGV4dEZyYWdtZW50O1xuXG4gICAgICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIGNvbXBvbmVudHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHRleHRCZWZvcmVFbGVtZW50ID0gbmV4dFRleHRGcmFnbWVudC5zdWJzdHJpbmcoMCwgY29tcG9uZW50Lmluc3RhbmNlLmluc2VydEluZGV4IC0gbmV3VGV4dEZyYWdtZW50U3RhcnRJbmRleCk7XG4gICAgICAgICAgICBuZXh0VGV4dEZyYWdtZW50ID0gbmV4dFRleHRGcmFnbWVudC5zdWJzdHJpbmcodGV4dEJlZm9yZUVsZW1lbnQubGVuZ3RoICsgMSwgbmV4dFRleHRGcmFnbWVudC5sZW5ndGgpO1xuICAgICAgICAgICAgbmV3VGV4dEZyYWdtZW50U3RhcnRJbmRleCA9IG5ld1RleHRGcmFnbWVudFN0YXJ0SW5kZXggKyAodGV4dEJlZm9yZUVsZW1lbnQubGVuZ3RoID8gdGV4dEJlZm9yZUVsZW1lbnQubGVuZ3RoICsgMSA6IDEpO1xuXG4gICAgICAgICAgICBpZiAodGV4dEJlZm9yZUVsZW1lbnQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgUmVuZGVyaW5nSGVscGVyLnJlbmRlclRleHQoZnJhZ21lbnQsIGZvcm1hdEV4dCwgdGV4dEJlZm9yZUVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmF0dGFjaENvbXBvbmVudChmcmFnbWVudCwgY29tcG9uZW50LCBjdXN0b21Db250ZW50U2VydmljZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dFRleHRGcmFnbWVudC5sZW5ndGgpIHtcbiAgICAgICAgICAgIFJlbmRlcmluZ0hlbHBlci5yZW5kZXJUZXh0KGZyYWdtZW50LCBmb3JtYXRFeHQsIG5leHRUZXh0RnJhZ21lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVuZGVyVGV4dChmcmFnbWVudDogRG9jdW1lbnRGcmFnbWVudCwgZm9ybWF0RXh0OiBGb3JtYXRFeHRNb2RlbCwgdGV4dEZyYWdtZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgY29uc3QgdGV4dFN0eWxlID0gbmV3IFRleHRTdHlsZU1vZGVsKHsgLi4uZm9ybWF0RXh0LnRleHRTdHlsZSB9KTtcblxuICAgICAgICBpZiAodGV4dEZyYWdtZW50ID09PSBORVdfTElORV9NQVJLVVApIHtcbiAgICAgICAgICAgIHNwYW4uY2xhc3NOYW1lID0gJ3BhcmFncmFwaC1zeW1ib2wnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRleHRTdHlsZS5oZWFkaW5nU3R5bGVJZCA9PT0gSFlQRVJMSU5LX0hFQURJTkdfU1RZTEVfSUQpIHtcbiAgICAgICAgICAgIHRleHRTdHlsZS5mb250Q29sb3IgPSBIWVBFUkxJTktfRk9OVF9DT0xPUjtcbiAgICAgICAgICAgIHRleHRTdHlsZS51bmRlcmxpbmUgPSB0cnVlO1xuICAgICAgICAgICAgc3Bhbi5jbGFzc0xpc3QuYWRkKCdoeXBlcmxpbmsnKTtcbiAgICAgICAgICAgIHNwYW4ub25tb3VzZW1vdmUgPSBldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Bhbi5jbGFzc0xpc3QuYWRkKCdoeXBlcmxpbmstaG92ZXInKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzcGFuLmNsYXNzTGlzdC5yZW1vdmUoJ2h5cGVybGluay1ob3ZlcicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBzcGFuLm9ubW91c2VsZWF2ZSA9ICgpID0+IHNwYW4uY2xhc3NMaXN0LnJlbW92ZSgnaHlwZXJsaW5rLWhvdmVyJyk7XG4gICAgICAgIH1cblxuICAgICAgICBzcGFuLnRleHRDb250ZW50ID0gdGV4dEZyYWdtZW50O1xuICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCBDb250ZW50U3R5bGVIZWxwZXIuZ2V0VGV4dFN0eWxlc1N0cmluZyh0ZXh0U3R5bGUpKTtcbiAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoc3Bhbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0VGV4dEluZGV4TGVuZ3RoRm9ySW5zZXJ0KFxuICAgICAgICBmb3JtYXRFeHQ6IEZvcm1hdEV4dE1vZGVsLFxuICAgICAgICBmcmFnbWVudERvY3VtZW50U3RhcnRJbmRleDogbnVtYmVyLFxuICAgICAgICBwYXJhZ3JhcGhEaXN0YW5jZTogRGlzdGFuY2VNb2RlbCxcbiAgICAgICAgc3BsaXQ6IG51bWJlcixcbiAgICAgICAgcGFyYWdyYXBoQ2hhcnM6IG51bWJlclxuICAgICk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IG1heExlbmd0aCA9IE1hdGgubWF4KHBhcmFncmFwaERpc3RhbmNlLmVuZCAtIHBhcmFncmFwaENoYXJzIC0gcGFyYWdyYXBoRGlzdGFuY2Uuc3RhcnQsIDApO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgc3BsaXQgLSBwYXJhZ3JhcGhDaGFycyB8fCBOdW1iZXIuTUFYX1ZBTFVFLFxuICAgICAgICAgICAgICAgIG1heExlbmd0aCxcbiAgICAgICAgICAgICAgICBmb3JtYXRFeHQuZW5kSW5kZXggLSBmcmFnbWVudERvY3VtZW50U3RhcnRJbmRleCArIDEsXG4gICAgICAgICAgICAgICAgZm9ybWF0RXh0LmNvbnRlbnQubGVuZ3RoXG4gICAgICAgICAgICApIC0gMVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgYXR0YWNoQ29tcG9uZW50KFxuICAgICAgICBmcmFnbWVudDogRG9jdW1lbnRGcmFnbWVudCxcbiAgICAgICAgY29tcG9uZW50OiBDb21wb25lbnRSZWY8dW5rbm93bj4sXG4gICAgICAgIGN1c3RvbUNvbnRlbnRTZXJ2aWNlOiBDdXN0b21Db250ZW50U2VydmljZVxuICAgICk6IHZvaWQge1xuICAgICAgICBjdXN0b21Db250ZW50U2VydmljZS5jb21wb25lbnRTZXJ2aWNlLmF0dGFjaENvbXBvbmVudChmcmFnbWVudCwgY29tcG9uZW50KTtcbiAgICB9XG59XG4iXX0=
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyaW5nLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliLytzaGFyZWQvZWRpdG9yL2NvcmUvaGVscGVycy9yZW5kZXJpbmcuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDBCQUEwQixFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRzlHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFFL0UsTUFBTSxPQUFPLGVBQWU7SUFDeEIsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFFBQXNCLEVBQUUsbUJBQTJCLEVBQUUsWUFBb0I7UUFDOUYsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxNQUFNLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztRQUU5QixJQUFJLFFBQVEsRUFBRTtZQUNWLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUNsRyxNQUFNLFVBQVUsR0FBRyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMs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QUUsa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM5RSxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTyxNQUFNLENBQUMsMkJBQTJCLENBQ3RDLFNBQXlCLEVBQ3pCLDBCQUFrQyxFQUNsQyxpQkFBZ0MsRUFDaEMsS0FBYSxFQUNiLGNBQXNCO1FBRXRCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRyxHQUFHLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEcsT0FBTyxDQUNILElBQUksQ0FBQyxHQUFHLENBQ0osS0FBSyxHQUFHLGNBQWMsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUMxQyxTQUFTLEVBQ1QsU0FBUyxDQUFDLFFBQVEsR0FBRywwQkFBMEIsR0FBRyxDQUFDLEVBQ25ELFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUMzQixHQUFHLENBQUMsQ0FDUixDQUFDO0lBQ04sQ0FBQztJQUVTLE1BQU0sQ0FBQyxlQUFlLENBQzVCLFFBQTBCLEVBQzFCLFNBQWdDLEVBQ2hDLG9CQUEwQztRQUUxQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCcmVha0hlbHBlciB9IGZyb20gJy4uLy4uL2hlbHBlcnMvYnJlYWsuaGVscGVyJztcbmltcG9ydCB7IEJyZWFrTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2JyZWFrLm1vZGVsJztcbmltcG9ydCB7IENvbnRlbnRTdHlsZUhlbHBlciB9IGZyb20gJy4vY29udGVudC1zdHlsZS5oZWxwZXInO1xuaW1wb3J0IHsgQ3VzdG9tQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jdXN0b20tY29tcG9uZW50cy9zaGFyZWQvc2VydmljZXMvY3VzdG9tLWNvbnRlbnQvY3VzdG9tLWNvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBEaXN0YW5jZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2Rpc3RhbmNlLm1vZGVsJztcbmltcG9ydCB7IERvbUhlbHBlciB9IGZyb20gJy4vZG9tLmhlbHBlcic7XG5pbXBvcnQgeyBGb3JtYXRFeHRNb2RlbCB9IGZyb20gJy4uL21vZGVscy9mb3JtYXQtZXh0Lm1vZGVsJztcbmltcG9ydCB7IEhZUEVSTElOS19GT05UX0NPTE9SLCBIWVBFUkxJTktfSEVBRElOR19TVFlMRV9JRCwgTkVXX0xJTkVfTUFSS1VQIH0gZnJvbSAnLi4vY29uc3RhbnRzL2VkaXRvci5jb25zdCc7XG5pbXBvcnQgeyBJQ3VzdG9tQ29tcG9uZW50cyB9IGZyb20gJy4uLy4uL2N1c3RvbS1jb21wb25lbnRzL3NoYXJlZC9pbnRlcmZhY2VzL2N1c3RvbS1jb21wb25lbnRzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQYXJhZ3JhcGggfSBmcm9tICcuLi9wYWdpbmcvcGFyYWdyYXBoJztcbmltcG9ydCB7IFNjYWxpbmdIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9oZWxwZXJzL3NjYWxpbmcuaGVscGVyJztcbmltcG9ydCB7IFRleHRMaW5lSW5mbyB9IGZyb20gJy4uL3BhZ2luZy90ZXh0LWxpbmUtaW5mbyc7XG5pbXBvcnQgeyBUZXh0U3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvdGV4dC1zdHlsZS5tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBSZW5kZXJpbmdIZWxwZXIge1xuICAgIHN0YXRpYyBjcmVhdGVMaW5lRWxlbWVudChsaW5lSW5mbzogVGV4dExpbmVJbmZvLCBudW1iZXJpbmdPZmZzZXRMZWZ0OiBudW1iZXIsIHNjYWxpbmdSYXRpbzogbnVtYmVyKTogSFRNTEVsZW1lbnQge1xuICAgICAgICBsZXQgbGluZUVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGxpbmVFbC5jbGFzc05hbWUgPSAnYWNlLWxpbmUnO1xuXG4gICAgICAgIGlmIChsaW5lSW5mbykge1xuICAgICAgICAgICAgY29uc3QgcGFkZGluZ0xlZnQgPSBTY2FsaW5nSGVscGVyLnNjYWxlKGxpbmVJbmZvLnBhZGRpbmdMZWZ0IC0gbnVtYmVyaW5nT2Zmc2V0TGVmdCwgc2NhbGluZ1JhdGlvKTtcbiAgICAgICAgICAgIGNvbnN0IG1hcmdpbkxlZnQgPSBwYWRkaW5nTGVmdCA8IDAgPyBwYWRkaW5nTGVmdCA6IDA7XG5cbiAgICAgICAgICAgIGxpbmVFbC5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgICAgJ3N0eWxlJyxcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJldHRpZXIvcHJldHRpZXJcbiAgICAgICAgICAgICAgICBgcGFkZGluZy1sZWZ0OiR7cGFkZGluZ0xlZnR9cHg7aGVpZ2h0OiR7bGluZUluZm8uaGVpZ2h0ICsgbGluZUluZm8ub2Zmc2V0QWZ0ZXJ9cHg7bWFyZ2luLXRvcDoke1xuICAgICAgICAgICAgICAgICAgICBsaW5lSW5mby5vZmZzZXRCZWZvcmVcbiAgICAgICAgICAgICAgICB9cHg7bWFyZ2luLWJvdHRvbToke2xpbmVJbmZvLmVuZFBhZ2VPZmZzZXR9cHg7bWFyZ2luLWxlZnQ6JHttYXJnaW5MZWZ0fXB4O2JhY2tncm91bmQtY29sb3I6JHtsaW5lSW5mby5iYWNrZ3JvdW5kQ29sb3J9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGxpbmVFbC5zZXRBdHRyaWJ1dGUoJ3NjcmVlbi1pbmRleCcsIGAke2xpbmVJbmZvLnNjcmVlbkxpbmV9YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbGluZUVsO1xuICAgIH1cblxuICAgIHN0YXRpYyByZW5kZXJDb250ZW50U2ltcGxlTGluZShcbiAgICAgICAgZG9tQ29udGVudDogeyBjdXJyZW50RWxlbWVudDogSFRNTEVsZW1lbnQ7IHBhcmVudE5vZGU6IE5vZGUgfSxcbiAgICAgICAgZm9ybWF0c0V4dDogRm9ybWF0RXh0TW9kZWxbXSxcbiAgICAgICAgcm93RGlzdGFuY2U6IERpc3RhbmNlTW9kZWwsXG4gICAgICAgIGN1c3RvbUNvbnRlbnRTZXJ2aWNlOiBDdXN0b21Db250ZW50U2VydmljZSxcbiAgICAgICAgY3VzdG9tQ29tcG9uZW50czogSUN1c3RvbUNvbXBvbmVudHMsXG4gICAgICAgIGJyZWFrczogQnJlYWtNb2RlbFtdID0gW11cbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWVGcmFnbWVudCA9IERvbUhlbHBlci5jcmVhdGVGcmFnbWVudChkb21Db250ZW50LmN1cnJlbnRFbGVtZW50KTtcbiAgICAgICAgZm9yIChjb25zdCBmb3JtYXRFeHQgb2YgZm9ybWF0c0V4dCkge1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnREb2N1bWVudFN0YXJ0SW5kZXggPSByb3dEaXN0YW5jZS5zdGFydCA+IGZvcm1hdEV4dC5zdGFydEluZGV4ID8gcm93RGlzdGFuY2Uuc3RhcnQgOiBmb3JtYXRFeHQuc3RhcnRJbmRleDtcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50RG9jdW1lbnRFbmRJbmRleCA9IGZvcm1hdEV4dC5lbmRJbmRleCA+IHJvd0Rpc3RhbmNlLmVuZCA/IHJvd0Rpc3RhbmNlLmVuZCA6IGZvcm1hdEV4dC5lbmRJbmRleDtcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50RG9jdW1lbnREaXN0YW5jZSA9IG5ldyBEaXN0YW5jZU1vZGVsKHsgc3RhcnQ6IGZyYWdtZW50RG9jdW1lbnRTdGFydEluZGV4LCBlbmQ6IGZyYWdtZW50RG9jdW1lbnRFbmRJbmRleCB9KTtcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50U3RhcnRJbmRleCA9IHJvd0Rpc3RhbmNlLnN0YXJ0ID4gZm9ybWF0RXh0LnN0YXJ0SW5kZXggPyByb3dEaXN0YW5jZS5zdGFydCAtIGZvcm1hdEV4dC5zdGFydEluZGV4IDogMDtcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50RW5kSW5kZXggPVxuICAgICAgICAgICAgICAgIGZvcm1hdEV4dC5lbmRJbmRleCA+IHJvd0Rpc3RhbmNlLmVuZCA/IHJvd0Rpc3RhbmNlLmVuZCAtIGZvcm1hdEV4dC5zdGFydEluZGV4IDogZm9ybWF0RXh0LmVuZEluZGV4IC0gZm9ybWF0RXh0LnN0YXJ0SW5kZXg7XG4gICAgICAgICAgICBjb25zdCBmcmFnbWVudERpc3RhbmNlID0gbmV3IERpc3RhbmNlTW9kZWwoeyBzdGFydDogZnJhZ21lbnRTdGFydEluZGV4LCBlbmQ6IGZyYWdtZW50RW5kSW5kZXggfSk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlckZvcm1hdENvbnRlbnQoXG4gICAgICAgICAgICAgICAgdmFsdWVGcmFnbWVudCxcbiAgICAgICAgICAgICAgICBmb3JtYXRFeHQsXG4gICAgICAgICAgICAgICAgZnJhZ21lbnREb2N1bWVudERpc3RhbmNlLFxuICAgICAgICAgICAgICAgIGZyYWdtZW50RGlzdGFuY2UsXG4gICAgICAgICAgICAgICAgY3VzdG9tQ29udGVudFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgY3VzdG9tQ29tcG9uZW50cyxcbiAgICAgICAgICAgICAgICBicmVha3NcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBkb21Db250ZW50LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodmFsdWVGcmFnbWVudCk7XG4gICAgfVxuXG4gICAgc3RhdGljIHJlbmRlckNvbnRlbnRXcmFwcGVkTGluZShcbiAgICAgICAgZG9tQ29udGVudDogeyBjdXJyZW50RWxlbWVudDogSFRNTEVsZW1lbnQ7IHBhcmVudE5vZGU6IE5vZGUgfSxcbiAgICAgICAgc3BsaXRzOiBudW1iZXJbXSxcbiAgICAgICAgY3VycmVudFBhcmFncmFwaDogUGFyYWdyYXBoLFxuICAgICAgICBmb3JtYXRzRXh0OiBGb3JtYXRFeHRNb2RlbFtdLFxuICAgICAgICBkaXN0YW5jZTogRGlzdGFuY2VNb2RlbCxcbiAgICAgICAgY3VzdG9tQ29udGVudFNlcnZpY2U6IEN1c3RvbUNvbnRlbnRTZXJ2aWNlLFxuICAgICAgICBjdXN0b21Db21wb25lbnRzOiBJQ3VzdG9tQ29tcG9uZW50cyxcbiAgICAgICAgc2NhbGluZ1JhdGlvOiBudW1iZXIsXG4gICAgICAgIGJyZWFrczogQnJlYWtNb2RlbFtdID0gW11cbiAgICApOiB2b2lkIHtcbiAgICAgICAgbGV0IHNwbGl0SW5kZXggPSAwO1xuICAgICAgICBjb25zdCBudW1iZXJpbmdPZmZzZXRMZWZ0ID1cbiAgICAgICAgICAgIGN1cnJlbnRQYXJhZ3JhcGgubnVtYmVyaW5nRGF0YS5udW1iZXJpbmdJZCA9PT0gbnVsbFxuICAgICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICAgIDogY3VycmVudFBhcmFncmFwaC5udW1iZXJpbmdEYXRhLndpZHRoICsgY3VycmVudFBhcmFncmFwaC5udW1iZXJpbmdEYXRhLnBhZGRpbmdMZWZ0O1xuICAgICAgICBsZXQgbGluZUVsID0gUmVuZGVyaW5nSGVscGVyLmNyZWF0ZUxpbmVFbGVtZW50KGN1cnJlbnRQYXJhZ3JhcGgudGV4dExpbmVzSW5mb1tzcGxpdEluZGV4XSwgbnVtYmVyaW5nT2Zmc2V0TGVmdCwgc2NhbGluZ1JhdGlvKTtcbiAgICAgICAgZG9tQ29udGVudC5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGxpbmVFbCk7XG5cbiAgICAgICAgY29uc3QgdmFsdWVGcmFnbWVudCA9IERvbUhlbHBlci5jcmVhdGVGcmFnbWVudChkb21Db250ZW50LmN1cnJlbnRFbGVtZW50KTtcbiAgICAgICAgbGV0IHBhcmFncmFwaENoYXJzID0gMDtcbiAgICAgICAgbGV0IHNwbGl0ID0gc3BsaXRzW3NwbGl0SW5kZXhdO1xuICAgICAgICBmb3IgKGNvbnN0IGZvcm1hdEV4dCBvZiBmb3JtYXRzRXh0KSB7XG4gICAgICAgICAgICBjb25zdCBiZWZvcmVTcGxpdEluZGV4ID0gc3BsaXQgPyBzcGxpdCAtIDEgOiBkaXN0YW5jZS5lbmQgLSBkaXN0YW5jZS5zdGFydDtcbiAgICAgICAgICAgIGNvbnN0IGJlZm9yZVNwbGl0RG9jdW1lbnRJbmRleCA9IGRpc3RhbmNlLnN0YXJ0ICsgYmVmb3JlU3BsaXRJbmRleDtcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50RG9jdW1lbnRTdGFydEluZGV4ID0gZGlzdGFuY2Uuc3RhcnQgKyBwYXJhZ3JhcGhDaGFycztcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50RG9jdW1lbnRFbmRJbmRleCA9IGZvcm1hdEV4dC5lbmRJbmRleCA8IGJlZm9yZVNwbGl0RG9jdW1lbnRJbmRleCA/IGZvcm1hdEV4dC5lbmRJbmRleCA6IGJlZm9yZVNwbGl0RG9jdW1lbnRJbmRleDtcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50RG9jdW1lbnREaXN0YW5jZSA9IG5ldyBEaXN0YW5jZU1vZGVsKHsgc3RhcnQ6IGZyYWdtZW50RG9jdW1lbnRTdGFydEluZGV4LCBlbmQ6IGZyYWdtZW50RG9jdW1lbnRFbmRJbmRleCB9KTtcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50U3RhcnRJbmRleCA9IGRpc3RhbmNlLnN0YXJ0ID4gZm9ybWF0RXh0LnN0YXJ0SW5kZXggPyBkaXN0YW5jZS5zdGFydCAtIGZvcm1hdEV4dC5zdGFydEluZGV4IDogMDtcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50RW5kSW5kZXggPVxuICAgICAgICAgICAgICAgIGZvcm1hdEV4dC5lbmRJbmRleCA8IGJlZm9yZVNwbGl0RG9jdW1lbnRJbmRleFxuICAgICAgICAgICAgICAgICAgICA/IGZyYWdtZW50U3RhcnRJbmRleCArIGZvcm1hdEV4dC5lbmRJbmRleCAtIGZvcm1hdEV4dC5zdGFydEluZGV4XG4gICAgICAgICAgICAgICAgICAgIDogZGlzdGFuY2Uuc3RhcnQgKyBiZWZvcmVTcGxpdEluZGV4IC0gZm9ybWF0RXh0LnN0YXJ0SW5kZXg7XG4gICAgICAgICAgICBjb25zdCBmcmFnbWVudERpc3RhbmNlID0gbmV3IERpc3RhbmNlTW9kZWwoeyBzdGFydDogZnJhZ21lbnRTdGFydEluZGV4LCBlbmQ6IGZyYWdtZW50RW5kSW5kZXggfSk7XG4gICAgICAgICAgICBwYXJhZ3JhcGhDaGFycyArPSB0aGlzLnJlbmRlckZvcm1hdENvbnRlbnQoXG4gICAgICAgICAgICAgICAgdmFsdWVGcmFnbWVudCxcbiAgICAgICAgICAgICAgICBmb3JtYXRFeHQsXG4gICAgICAgICAgICAgICAgZnJhZ21lbnREb2N1bWVudERpc3RhbmNlLFxuICAgICAgICAgICAgICAgIGZyYWdtZW50RGlzdGFuY2UsXG4gICAgICAgICAgICAgICAgY3VzdG9tQ29udGVudFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgY3VzdG9tQ29tcG9uZW50cyxcbiAgICAgICAgICAgICAgICBicmVha3NcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBsaW5lRWwuYXBwZW5kQ2hpbGQodmFsdWVGcmFnbWVudCk7XG4gICAgICAgICAgICBsZXQgbmV4dEZyYWdtZW50U3RhcnRJbmRleCA9IGZyYWdtZW50RW5kSW5kZXggKyAxO1xuICAgICAgICAgICAgd2hpbGUgKHBhcmFncmFwaENoYXJzID09PSBzcGxpdCAmJiBuZXh0RnJhZ21lbnRTdGFydEluZGV4ICE9PSBkaXN0YW5jZS5lbmQpIHtcbiAgICAgICAgICAgICAgICBzcGxpdCA9IHNwbGl0c1srK3NwbGl0SW5kZXhdO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRGcmFnbWVudERvY3VtZW50U3RhcnRJbmRleCA9IGZyYWdtZW50RG9jdW1lbnRTdGFydEluZGV4ICsgbmV4dEZyYWdtZW50U3RhcnRJbmRleCAtIGZyYWdtZW50U3RhcnRJbmRleDtcbiAgICAgICAgICAgICAgICBsaW5lRWwgPSBSZW5kZXJpbmdIZWxwZXIuY3JlYXRlTGluZUVsZW1lbnQoY3VycmVudFBhcmFncmFwaC50ZXh0TGluZXNJbmZvW3NwbGl0SW5kZXhdLCBudW1iZXJpbmdPZmZzZXRMZWZ0LCBzY2FsaW5nUmF0aW8pO1xuICAgICAgICAgICAgICAgIGlmIChzcGxpdCA+IGZvcm1hdEV4dC5lbmRJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0RnJhZ21lbnRFbmRJbmRleCA9IGZvcm1hdEV4dC5jb250ZW50Lmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRGcmFnbWVudERpc3RhbmNlID0gbmV3IERpc3RhbmNlTW9kZWwoeyBzdGFydDogbmV4dEZyYWdtZW50U3RhcnRJbmRleCwgZW5kOiBuZXh0RnJhZ21lbnRFbmRJbmRleCB9KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dEZyYWdtZW50RG9jdW1lbnRFbmRJbmRleCA9IG5leHRGcmFnbWVudERvY3VtZW50U3RhcnRJbmRleCArIG5leHRGcmFnbWVudEVuZEluZGV4IC0gbmV4dEZyYWdtZW50U3RhcnRJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dEZyYWdtZW50RG9jdW1lbnREaXN0YW5jZSA9IG5ldyBEaXN0YW5jZU1vZGVsKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBuZXh0RnJhZ21lbnREb2N1bWVudFN0YXJ0SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IG5leHRGcmFnbWVudERvY3VtZW50RW5kSW5kZXhcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFncmFwaENoYXJzICs9IHRoaXMucmVuZGVyRm9ybWF0Q29udGVudChcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRnJhZ21lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRFeHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0RnJhZ21lbnREb2N1bWVudERpc3RhbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEZyYWdtZW50RGlzdGFuY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21Db250ZW50U2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUNvbXBvbmVudHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVha3NcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgbGluZUVsLmFwcGVuZENoaWxkKHZhbHVlRnJhZ21lbnQpO1xuICAgICAgICAgICAgICAgICAgICBkb21Db250ZW50LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQobGluZUVsKTtcblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0SW5kZXhMZW5ndGggPSBSZW5kZXJpbmdIZWxwZXIuZ2V0VGV4dEluZGV4TGVuZ3RoRm9ySW5zZXJ0KFxuICAgICAgICAgICAgICAgICAgICBmb3JtYXRFeHQsXG4gICAgICAgICAgICAgICAgICAgIG5leHRGcmFnbWVudERvY3VtZW50U3RhcnRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2UsXG4gICAgICAgICAgICAgICAgICAgIHNwbGl0LFxuICAgICAgICAgICAgICAgICAgICBwYXJhZ3JhcGhDaGFyc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dEZyYWdtZW50RG9jdW1lbnRFbmRJbmRleCA9IG5leHRGcmFnbWVudERvY3VtZW50U3RhcnRJbmRleCArIHRleHRJbmRleExlbmd0aDtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0RnJhZ21lbnRFbmRJbmRleCA9IG5leHRGcmFnbWVudFN0YXJ0SW5kZXggKyB0ZXh0SW5kZXhMZW5ndGg7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dEZyYWdtZW50RGlzdGFuY2UgPSBuZXcgRGlzdGFuY2VNb2RlbCh7IHN0YXJ0OiBuZXh0RnJhZ21lbnRTdGFydEluZGV4LCBlbmQ6IG5leHRGcmFnbWVudEVuZEluZGV4IH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRGcmFnbWVudERvY3VtZW50RGlzdGFuY2UgPSBuZXcgRGlzdGFuY2VNb2RlbCh7XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBuZXh0RnJhZ21lbnREb2N1bWVudFN0YXJ0SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGVuZDogbmV4dEZyYWdtZW50RG9jdW1lbnRFbmRJbmRleFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbmRlcmVkQ2hhcnMgPSB0aGlzLnJlbmRlckZvcm1hdENvbnRlbnQoXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlRnJhZ21lbnQsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdEV4dCxcbiAgICAgICAgICAgICAgICAgICAgbmV4dEZyYWdtZW50RG9jdW1lbnREaXN0YW5jZSxcbiAgICAgICAgICAgICAgICAgICAgbmV4dEZyYWdtZW50RGlzdGFuY2UsXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbUNvbnRlbnRTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICBjdXN0b21Db21wb25lbnRzLFxuICAgICAgICAgICAgICAgICAgICBicmVha3NcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGxpbmVFbC5hcHBlbmRDaGlsZCh2YWx1ZUZyYWdtZW50KTtcbiAgICAgICAgICAgICAgICBkb21Db250ZW50LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQobGluZUVsKTtcbiAgICAgICAgICAgICAgICBuZXh0RnJhZ21lbnRTdGFydEluZGV4ICs9IHJlbmRlcmVkQ2hhcnM7XG4gICAgICAgICAgICAgICAgcGFyYWdyYXBoQ2hhcnMgKz0gcmVuZGVyZWRDaGFycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyByZW5kZXJOdW1iZXJpbmdNYXJrZXIocGFyYWdyYXBoOiBQYXJhZ3JhcGgsIGxheWVyRWxlbWVudDogSFRNTEVsZW1lbnQsIHNjYWxpbmdSYXRpbzogbnVtYmVyKTogSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdCBtYXJrZXJIZWlnaHQgPSBwYXJhZ3JhcGgubnVtYmVyaW5nRGF0YS5oZWlnaHQ7XG5cbiAgICAgICAgY29uc3QgbWFya2VyTGluZUluZm8gPSB7XG4gICAgICAgICAgICBwYWRkaW5nTGVmdDogcGFyYWdyYXBoLm51bWJlcmluZ0RhdGEucGFkZGluZ0xlZnQsXG4gICAgICAgICAgICBoZWlnaHQ6IG1hcmtlckhlaWdodCxcbiAgICAgICAgICAgIG9mZnNldEJlZm9yZTogMCxcbiAgICAgICAgICAgIGZpcnN0TGluZVBhZ2VPZmZzZXQ6IDAsXG4gICAgICAgICAgICBlbmRQYWdlT2Zmc2V0OiAwLFxuICAgICAgICAgICAgb2Zmc2V0QWZ0ZXI6IDAsXG4gICAgICAgICAgICBzY3JlZW5MaW5lOiAwXG4gICAgICAgIH0gYXMgVGV4dExpbmVJbmZvO1xuICAgICAgICBjb25zdCBudW1iZXJpbmdMaW5lRWwgPSB0aGlzLmNyZWF0ZUxpbmVFbGVtZW50KG1hcmtlckxpbmVJbmZvLCAwLCBzY2FsaW5nUmF0aW8pO1xuXG4gICAgICAgIGNvbnN0IG1hcmtlckZyYWdtZW50ID0gRG9tSGVscGVyLmNyZWF0ZUZyYWdtZW50KGxheWVyRWxlbWVudCk7XG4gICAgICAgIGNvbnN0IG1hcmtlciA9IHBhcmFncmFwaC5udW1iZXJpbmdEYXRhLm1hcmtlcjtcbiAgICAgICAgY29uc3QgbWFya2VyRXh0TW9kZWwgPSBuZXcgRm9ybWF0RXh0TW9kZWwoe1xuICAgICAgICAgICAgdGV4dFN0eWxlOiBwYXJhZ3JhcGgubnVtYmVyaW5nRGF0YS5tYXJrZXJUZXh0U3R5bGUsXG4gICAgICAgICAgICBjb250ZW50OiBtYXJrZXJcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVuZGVyVGV4dChtYXJrZXJGcmFnbWVudCwgbWFya2VyRXh0TW9kZWwsIG1hcmtlcik7XG4gICAgICAgIG51bWJlcmluZ0xpbmVFbC5hcHBlbmRDaGlsZChtYXJrZXJGcmFnbWVudCk7XG5cbiAgICAgICAgcmV0dXJuIG51bWJlcmluZ0xpbmVFbDtcbiAgICB9XG5cbiAgICBzdGF0aWMgY3JlYXRlRGl2Q29udGFpbmVyKGNsYXNzTmFtZTogc3RyaW5nKTogSFRNTERpdkVsZW1lbnQge1xuICAgICAgICBjb25zdCBjb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGNvbnRhaW5lckVsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuXG4gICAgICAgIHJldHVybiBjb250YWluZXJFbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHJlbmRlckZvcm1hdENvbnRlbnQoXG4gICAgICAgIGZyYWdtZW50OiBEb2N1bWVudEZyYWdtZW50LFxuICAgICAgICBmb3JtYXRFeHQ6IEZvcm1hdEV4dE1vZGVsLFxuICAgICAgICBmcmFnbWVudERvY3VtZW50RGlzdGFuY2U6IERpc3RhbmNlTW9kZWwsXG4gICAgICAgIGZyYWdtZW50RGlzdGFuY2U6IERpc3RhbmNlTW9kZWwsXG4gICAgICAgIGN1c3RvbUNvbnRlbnRTZXJ2aWNlOiBDdXN0b21Db250ZW50U2VydmljZSxcbiAgICAgICAgY3VzdG9tQ29tcG9uZW50czogSUN1c3RvbUNvbXBvbmVudHMsXG4gICAgICAgIGJyZWFrczogQnJlYWtNb2RlbFtdXG4gICAgKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHRleHRGcmFnbWVudCA9IGZvcm1hdEV4dC5jb250ZW50LnN1YnN0cmluZyhmcmFnbWVudERpc3RhbmNlLnN0YXJ0LCBmcmFnbWVudERpc3RhbmNlLmVuZCArIDEpO1xuICAgICAgICBpZiAoIXRleHRGcmFnbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0ZXh0RnJhZ21lbnRXaXRob3V0QnJlYWtzID0gQnJlYWtIZWxwZXIucmVtb3ZlQnJlYWtNYXJrZXIoYnJlYWtzLCB0ZXh0RnJhZ21lbnQsIGZyYWdtZW50RG9jdW1lbnREaXN0YW5jZS5zdGFydCk7XG5cbiAgICAgICAgaWYgKGN1c3RvbUNvbnRlbnRTZXJ2aWNlLmlzRnJhZ21lbnRDb250YWluQ29tcG9uZW50KGN1c3RvbUNvbXBvbmVudHMsIHRleHRGcmFnbWVudCwgZnJhZ21lbnREb2N1bWVudERpc3RhbmNlKSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJUZXh0V2l0aEN1c3RvbUNvbnRlbnQoXG4gICAgICAgICAgICAgICAgZnJhZ21lbnQsXG4gICAgICAgICAgICAgICAgZm9ybWF0RXh0LFxuICAgICAgICAgICAgICAgIGZyYWdtZW50RG9jdW1lbnREaXN0YW5jZSxcbiAgICAgICAgICAgICAgICB0ZXh0RnJhZ21lbnRXaXRob3V0QnJlYWtzLFxuICAgICAgICAgICAgICAgIGN1c3RvbUNvbnRlbnRTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIGN1c3RvbUNvbXBvbmVudHNcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBSZW5kZXJpbmdIZWxwZXIucmVuZGVyVGV4dChmcmFnbWVudCwgZm9ybWF0RXh0LCB0ZXh0RnJhZ21lbnRXaXRob3V0QnJlYWtzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0ZXh0RnJhZ21lbnQubGVuZ3RoO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHJlbmRlclRleHRXaXRoQ3VzdG9tQ29udGVudChcbiAgICAgICAgZnJhZ21lbnQ6IERvY3VtZW50RnJhZ21lbnQsXG4gICAgICAgIGZvcm1hdEV4dDogRm9ybWF0RXh0TW9kZWwsXG4gICAgICAgIGZyYWdtZW50RG9jdW1lbnREaXN0YW5jZTogRGlzdGFuY2VNb2RlbCxcbiAgICAgICAgdGV4dEZyYWdtZW50OiBzdHJpbmcsXG4gICAgICAgIGN1c3RvbUNvbnRlbnRTZXJ2aWNlOiBDdXN0b21Db250ZW50U2VydmljZSxcbiAgICAgICAgY3VzdG9tQ29tcG9uZW50czogSUN1c3RvbUNvbXBvbmVudHNcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IGN1c3RvbUNvbnRlbnRTZXJ2aWNlLmdldENvbXBvbmVudHMoY3VzdG9tQ29tcG9uZW50cywgZnJhZ21lbnREb2N1bWVudERpc3RhbmNlKTtcblxuICAgICAgICBpZiAoIWNvbXBvbmVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBSZW5kZXJpbmdIZWxwZXIucmVuZGVyVGV4dChmcmFnbWVudCwgZm9ybWF0RXh0LCB0ZXh0RnJhZ21lbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG5ld1RleHRGcmFnbWVudFN0YXJ0SW5kZXggPSBmcmFnbWVudERvY3VtZW50RGlzdGFuY2Uuc3RhcnQ7XG4gICAgICAgIGxldCBuZXh0VGV4dEZyYWdtZW50ID0gdGV4dEZyYWdtZW50O1xuXG4gICAgICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIGNvbXBvbmVudHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHRleHRCZWZvcmVFbGVtZW50ID0gbmV4dFRleHRGcmFnbWVudC5zdWJzdHJpbmcoMCwgY29tcG9uZW50Lmluc3RhbmNlLmluc2VydEluZGV4IC0gbmV3VGV4dEZyYWdtZW50U3RhcnRJbmRleCk7XG4gICAgICAgICAgICBuZXh0VGV4dEZyYWdtZW50ID0gbmV4dFRleHRGcmFnbWVudC5zdWJzdHJpbmcodGV4dEJlZm9yZUVsZW1lbnQubGVuZ3RoICsgMSwgbmV4dFRleHRGcmFnbWVudC5sZW5ndGgpO1xuICAgICAgICAgICAgbmV3VGV4dEZyYWdtZW50U3RhcnRJbmRleCA9IG5ld1RleHRGcmFnbWVudFN0YXJ0SW5kZXggKyAodGV4dEJlZm9yZUVsZW1lbnQubGVuZ3RoID8gdGV4dEJlZm9yZUVsZW1lbnQubGVuZ3RoICsgMSA6IDEpO1xuXG4gICAgICAgICAgICBpZiAodGV4dEJlZm9yZUVsZW1lbnQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgUmVuZGVyaW5nSGVscGVyLnJlbmRlclRleHQoZnJhZ21lbnQsIGZvcm1hdEV4dCwgdGV4dEJlZm9yZUVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmF0dGFjaENvbXBvbmVudChmcmFnbWVudCwgY29tcG9uZW50LCBjdXN0b21Db250ZW50U2VydmljZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dFRleHRGcmFnbWVudC5sZW5ndGgpIHtcbiAgICAgICAgICAgIFJlbmRlcmluZ0hlbHBlci5yZW5kZXJUZXh0KGZyYWdtZW50LCBmb3JtYXRFeHQsIG5leHRUZXh0RnJhZ21lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVuZGVyVGV4dChmcmFnbWVudDogRG9jdW1lbnRGcmFnbWVudCwgZm9ybWF0RXh0OiBGb3JtYXRFeHRNb2RlbCwgdGV4dEZyYWdtZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgY29uc3QgdGV4dFN0eWxlID0gbmV3IFRleHRTdHlsZU1vZGVsKHsgLi4uZm9ybWF0RXh0LnRleHRTdHlsZSB9KTtcblxuICAgICAgICBpZiAodGV4dEZyYWdtZW50ID09PSBORVdfTElORV9NQVJLVVApIHtcbiAgICAgICAgICAgIHNwYW4uY2xhc3NOYW1lID0gJ3BhcmFncmFwaC1zeW1ib2wnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRleHRTdHlsZS5oZWFkaW5nU3R5bGVJZCA9PT0gSFlQRVJMSU5LX0hFQURJTkdfU1RZTEVfSUQpIHtcbiAgICAgICAgICAgIHRleHRTdHlsZS5mb250Q29sb3IgPSBIWVBFUkxJTktfRk9OVF9DT0xPUjtcbiAgICAgICAgICAgIHRleHRTdHlsZS51bmRlcmxpbmUgPSB0cnVlO1xuICAgICAgICAgICAgc3Bhbi5jbGFzc0xpc3QuYWRkKCdoeXBlcmxpbmsnKTtcbiAgICAgICAgICAgIHNwYW4ub25tb3VzZW1vdmUgPSBldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Bhbi5jbGFzc0xpc3QuYWRkKCdoeXBlcmxpbmstaG92ZXInKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzcGFuLmNsYXNzTGlzdC5yZW1vdmUoJ2h5cGVybGluay1ob3ZlcicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBzcGFuLm9ubW91c2VsZWF2ZSA9ICgpID0+IHNwYW4uY2xhc3NMaXN0LnJlbW92ZSgnaHlwZXJsaW5rLWhvdmVyJyk7XG4gICAgICAgIH1cblxuICAgICAgICBzcGFuLnRleHRDb250ZW50ID0gdGV4dEZyYWdtZW50O1xuICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCBDb250ZW50U3R5bGVIZWxwZXIuZ2V0VGV4dFN0eWxlc1N0cmluZyh0ZXh0U3R5bGUpKTtcbiAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoc3Bhbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0VGV4dEluZGV4TGVuZ3RoRm9ySW5zZXJ0KFxuICAgICAgICBmb3JtYXRFeHQ6IEZvcm1hdEV4dE1vZGVsLFxuICAgICAgICBmcmFnbWVudERvY3VtZW50U3RhcnRJbmRleDogbnVtYmVyLFxuICAgICAgICBwYXJhZ3JhcGhEaXN0YW5jZTogRGlzdGFuY2VNb2RlbCxcbiAgICAgICAgc3BsaXQ6IG51bWJlcixcbiAgICAgICAgcGFyYWdyYXBoQ2hhcnM6IG51bWJlclxuICAgICk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IG1heExlbmd0aCA9IE1hdGgubWF4KHBhcmFncmFwaERpc3RhbmNlLmVuZCAtIHBhcmFncmFwaENoYXJzIC0gcGFyYWdyYXBoRGlzdGFuY2Uuc3RhcnQsIDApO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgc3BsaXQgLSBwYXJhZ3JhcGhDaGFycyB8fCBOdW1iZXIuTUFYX1ZBTFVFLFxuICAgICAgICAgICAgICAgIG1heExlbmd0aCxcbiAgICAgICAgICAgICAgICBmb3JtYXRFeHQuZW5kSW5kZXggLSBmcmFnbWVudERvY3VtZW50U3RhcnRJbmRleCArIDEsXG4gICAgICAgICAgICAgICAgZm9ybWF0RXh0LmNvbnRlbnQubGVuZ3RoXG4gICAgICAgICAgICApIC0gMVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgYXR0YWNoQ29tcG9uZW50KFxuICAgICAgICBmcmFnbWVudDogRG9jdW1lbnRGcmFnbWVudCxcbiAgICAgICAgY29tcG9uZW50OiBDb21wb25lbnRSZWY8dW5rbm93bj4sXG4gICAgICAgIGN1c3RvbUNvbnRlbnRTZXJ2aWNlOiBDdXN0b21Db250ZW50U2VydmljZVxuICAgICk6IHZvaWQge1xuICAgICAgICBjdXN0b21Db250ZW50U2VydmljZS5jb21wb25lbnRTZXJ2aWNlLmF0dGFjaENvbXBvbmVudChmcmFnbWVudCwgY29tcG9uZW50KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -83,7 +83,7 @@ export class TextLayer extends EventEmitting {
|
|
|
83
83
|
DomHelper.setStyle(paragraphCell.element.style, 'top', `${paragraphTop}px`);
|
|
84
84
|
const paragraph = paragraphs[row];
|
|
85
85
|
if (paragraph.numberingData.numberingId !== null) {
|
|
86
|
-
const numberingElement = this.renderingHelper.renderNumberingMarker(paragraph, this.element);
|
|
86
|
+
const numberingElement = this.renderingHelper.renderNumberingMarker(paragraph, this.element, this.session.properties.scalingRatio);
|
|
87
87
|
numberingElement.className = 'numberingMarker';
|
|
88
88
|
paragraphCell.element.appendChild(numberingElement);
|
|
89
89
|
}
|
|
@@ -108,17 +108,17 @@ export class TextLayer extends EventEmitting {
|
|
|
108
108
|
}));
|
|
109
109
|
if (splits?.length) {
|
|
110
110
|
const distance = new DistanceModel({ start: startIndex, end: endIndex });
|
|
111
|
-
this.renderingHelper.renderContentWrappedLine({ currentElement: this.element, parentNode: linesContainerElement }, splits, currentParagraph, formatsExt, distance, this.session.customContentService, this.session.customComponents, this.session.model.breaks);
|
|
111
|
+
this.renderingHelper.renderContentWrappedLine({ currentElement: this.element, parentNode: linesContainerElement }, splits, currentParagraph, formatsExt, distance, this.session.customContentService, this.session.customComponents, this.session.properties.scalingRatio, this.session.model.breaks);
|
|
112
112
|
}
|
|
113
113
|
else {
|
|
114
114
|
const numberingOffsetLeft = currentParagraph.numberingData.numberingId === null
|
|
115
115
|
? 0
|
|
116
116
|
: currentParagraph.numberingData.width + currentParagraph.numberingData.paddingLeft;
|
|
117
|
-
const lastLineEl = this.renderingHelper.createLineElement(currentParagraph.textLinesInfo[0], numberingOffsetLeft);
|
|
117
|
+
const lastLineEl = this.renderingHelper.createLineElement(currentParagraph.textLinesInfo[0], numberingOffsetLeft, this.session.properties.scalingRatio);
|
|
118
118
|
linesContainerElement.appendChild(lastLineEl);
|
|
119
119
|
const rowDistance = new DistanceModel({ start: startIndex, end: endIndex });
|
|
120
120
|
this.renderingHelper.renderContentSimpleLine({ currentElement: this.element, parentNode: lastLineEl }, formatsExt, rowDistance, this.session.customContentService, this.session.customComponents, this.session.model.breaks);
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5sYXllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliLytzaGFyZWQvZWRpdG9yL2NvcmUvbGF5ZXJzL3RleHQubGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU5RCxNQUFNLE9BQU8sU0FBVSxTQUFRLGFBQWE7SUFTeEMsWUFBbUIsYUFBMEIsRUFBVSxrQkFBa0IsZUFBZTtRQUNwRixLQUFLLEVBQUUsQ0FBQztRQUQyQyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUE2SmhGLDZCQUF3QixHQUFHLENBQUMsS0FBaUQsRUFBRSxFQUFFO1lBQ3JGLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQztRQTVKRSxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsMEJBQTBCLENBQUM7UUFDcEQsYUFBYSxDQUFD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QU0sbUJBQW1CLEdBQ3JCLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxXQUFXLEtBQUssSUFBSTtnQkFDL0MsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztZQUM1RixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1lBQ2xILHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM5QyxNQUFNLFdBQVcsR0FBRyxJQUFJLGFBQWEsQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDNUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FDeEMsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEVBQ3hELFVBQVUsRUFDVixXQUFXLEVBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFDakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUM1QixDQUFDO1NBQ0w7SUFDTCxDQUFDO0NBS0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZWxsIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jZWxsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEaXN0YW5jZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2Rpc3RhbmNlLm1vZGVsJztcbmltcG9ydCB7IERvbUhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvZG9tLmhlbHBlcic7XG5pbXBvcnQgeyBFZGl0U2Vzc2lvbiB9IGZyb20gJy4uL2VkaXQuc2Vzc2lvbic7XG5pbXBvcnQgeyBFdmVudEVtaXR0aW5nIH0gZnJvbSAnLi4vYmFzZS9ldmVudC1lbWl0dGluZyc7XG5pbXBvcnQgeyBGb3JtYXRFeHRNb2RlbCB9IGZyb20gJy4uL21vZGVscy9mb3JtYXQtZXh0Lm1vZGVsJztcbmltcG9ydCB7IEZvcm1hdFN0eWxlSGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9mb3JtYXQtc3R5bGUuaGVscGVyJztcbmltcG9ydCB7IElMYXllckNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvbGF5ZXIuY29uZmlnJztcbmltcG9ydCB7IExpbmVzIH0gZnJvbSAnLi9saW5lcyc7XG5pbXBvcnQgeyBQYXJhZ3JhcGggfSBmcm9tICcuLi9wYWdpbmcvcGFyYWdyYXBoJztcbmltcG9ydCB7IFBhcmFncmFwaEhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvcGFyYWdyYXBoLmhlbHBlcic7XG5pbXBvcnQgeyBSZW5kZXJpbmdIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL3JlbmRlcmluZy5oZWxwZXInO1xuXG5leHBvcnQgY2xhc3MgVGV4dExheWVyIGV4dGVuZHMgRXZlbnRFbWl0dGluZyB7XG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cbiAgICBsaW5lczogTGluZXM7XG5cbiAgICBzZXNzaW9uOiBFZGl0U2Vzc2lvbjtcblxuICAgIGNvbmZpZzogSUxheWVyQ29uZmlnO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmVudEVsZW1lbnQ6IEhUTUxFbGVtZW50LCBwcml2YXRlIHJlbmRlcmluZ0hlbHBlciA9IFJlbmRlcmluZ0hlbHBlcikge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gJ2FjZS1sYXllciBhY2UtdGV4dC1sYXllcic7XG4gICAgICAgIHBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTtcblxuICAgICAgICB0aGlzLmxpbmVzID0gbmV3IExpbmVzKHRoaXMuZWxlbWVudCk7XG4gICAgfVxuXG4gICAgc2V0U2Vzc2lvbihzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zZXNzaW9uKSB7XG4gICAgICAgICAgICB0aGlzLnNlc3Npb24ucGFnZXNXcmFwLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BhZ2VzQ291bnRDaGFuZ2VkJywgdGhpcy5wYWdlc0NvdW50Q2hhbmdlZEhhbmRsZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXNzaW9uID0gc2Vzc2lvbjtcbiAgICAgICAgaWYgKHNlc3Npb24pIHtcbiAgICAgICAgICAgIHRoaXMuc2Vzc2lvbi5wYWdlc1dyYXAuYWRkRXZlbnRMaXN0ZW5lcigncGFnZXNDb3VudENoYW5nZWQnLCB0aGlzLnBhZ2VzQ291bnRDaGFuZ2VkSGFuZGxlcik7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHt0aGlzLnNlc3Npb24ucGFnZXNXcmFwLmNvbnRlbnRXaWR0aH1weGA7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUubWFyZ2luID0gYDAgJHt0aGlzLnNlc3Npb24ucGFnZXNXcmFwLmRvY3VtZW50TWFyZ2luLnJpZ2h0fXB4IDAgJHt0aGlzLnNlc3Npb24ucGFnZXNXcmFwLmRvY3VtZW50TWFyZ2luLmxlZnR9cHhgO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlKGNvbmZpZzogSUxheWVyQ29uZmlnKTogdm9pZCB7XG4gICAgICAgIERvbUhlbHBlci50cmFuc2xhdGUodGhpcy5lbGVtZW50LCAwLCAtY29uZmlnLnNjcm9sbFRvcCk7XG5cbiAgICAgICAgdGhpcy5jb25maWcgPSBjb25maWc7XG5cbiAgICAgICAgd2hpbGUgKHRoaXMubGluZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmxpbmVzLnBvcCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5saW5lcy5wdXNoKHRoaXMucmVuZGVyVGV4dFBhcmFncmFwaChjb25maWcuY29udGVudFJhbmdlKSk7XG4gICAgfVxuXG4gICAgc2Nyb2xsTGluZXMoY29uZmlnOiBJTGF5ZXJDb25maWcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb2xkQ29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuXG4gICAgICAgIERvbUhlbHBlci50cmFuc2xhdGUodGhpcy5lbGVtZW50LCAwLCAtY29uZmlnLnNjcm9sbFRvcCk7XG5cbiAgICAgICAgY29uc3Qgb2xkTGFzdFJvdyA9IG9sZENvbmZpZyA/IG9sZENvbmZpZy5jb250ZW50UmFuZ2UuZW5kIDogLTE7XG5cbiAgICAgICAgaWYgKCFvbGRDb25maWcgfHwgb2xkTGFzdFJvdyA8IGNvbmZpZy5jb250ZW50UmFuZ2Uuc3RhcnQgfHwgY29uZmlnLmNvbnRlbnRSYW5nZS5lbmQgPCBvbGRDb25maWcuY29udGVudFJhbmdlLnN0YXJ0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51cGRhdGUoY29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvbGRDb25maWcuY29udGVudFJhbmdlLnN0YXJ0IDwgY29uZmlnLmNvbnRlbnRSYW5nZS5zdGFydCkge1xuICAgICAgICAgICAgZm9yIChsZXQgcm93ID0gY29uZmlnLmNvbnRlbnRSYW5nZS5zdGFydCAtIG9sZENvbmZpZy5jb250ZW50UmFuZ2Uuc3RhcnQ7IHJvdyA+IDA7IHJvdy0tKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5saW5lcy5zaGlmdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9sZENvbmZpZy5jb250ZW50UmFuZ2UuZW5kID4gY29uZmlnLmNvbnRlbnRSYW5nZS5lbmQpIHtcbiAgICAgICAgICAgIGZvciAobGV0IHJvdyA9IG9sZENvbmZpZy5jb250ZW50UmFuZ2UuZW5kIC0gY29uZmlnLmNvbnRlbnRSYW5nZS5lbmQ7IHJvdyA+IDA7IHJvdy0tKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5saW5lcy5wb3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvbGRDb25maWcuY29udGVudFJhbmdlLnN0YXJ0ID4gY29uZmlnLmNvbnRlbnRSYW5nZS5zdGFydCkge1xuICAgICAgICAgICAgY29uc3QgbGluZXMgPSB0aGlzLnJlbmRlclRleHRQYXJhZ3JhcGgoXG4gICAgICAgICAgICAgICAgbmV3IERpc3RhbmNlTW9kZWwoeyBzdGFydDogY29uZmlnLmNvbnRlbnRSYW5nZS5zdGFydCwgZW5kOiBvbGRDb25maWcuY29udGVudFJhbmdlLnN0YXJ0IC0gMSB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMubGluZXMudW5zaGlmdChsaW5lcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob2xkQ29uZmlnLmNvbnRlbnRSYW5nZS5lbmQgPCBjb25maWcuY29udGVudFJhbmdlLmVuZCkge1xuICAgICAgICAgICAgY29uc3QgbGluZXMgPSB0aGlzLnJlbmRlclRleHRQYXJhZ3JhcGgoXG4gICAgICAgICAgICAgICAgbmV3IERpc3RhbmNlTW9kZWwoeyBzdGFydDogb2xkQ29uZmlnLmNvbnRlbnRSYW5nZS5lbmQgKyAxLCBlbmQ6IGNvbmZpZy5jb250ZW50UmFuZ2UuZW5kIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5saW5lcy5wdXNoKGxpbmVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2Vzc2lvbi5wYWdlc1dyYXAucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGFnZXNDb3VudENoYW5nZWQnLCB0aGlzLnBhZ2VzQ291bnRDaGFuZ2VkSGFuZGxlcik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFBhcmFncmFwaFRvcChwYXJhZ3JhcGhzOiBQYXJhZ3JhcGhbXSwgcm93OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXNzaW9uLnBhZ2VzV3JhcC5nZXRQYXJhZ3JhcGhUb3AocGFyYWdyYXBocywgcm93KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbmRlclRleHRQYXJhZ3JhcGgocm93c0Rpc3RhbmNlOiBEaXN0YW5jZU1vZGVsKTogQ2VsbFtdIHtcbiAgICAgICAgY29uc3QgZnJhZ21lbnQ6IENlbGxbXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCByb3cgPSByb3dzRGlzdGFuY2Uuc3RhcnQ7IHJvdyA8PSByb3dzRGlzdGFuY2UuZW5kOyByb3crKykge1xuICAgICAgICAgICAgY29uc3QgcGFyYWdyYXBocyA9IHRoaXMuc2Vzc2lvbi5wYWdlc1dyYXAucGFyYWdyYXBocztcblxuICAgICAgICAgICAgY29uc3QgcGFyYWdyYXBoQ2VsbCA9IHRoaXMubGluZXMuY3JlYXRlQ2VsbChyb3cpO1xuICAgICAgICAgICAgcGFyYWdyYXBoQ2VsbC5lbGVtZW50LmNsYXNzTmFtZSA9ICdhY2UtbGluZS1ncm91cCc7XG4gICAgICAgICAgICBEb21IZWxwZXIucmVtb3ZlQ2hpbGRyZW4ocGFyYWdyYXBoQ2VsbC5lbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFncmFwaEhlaWdodCA9IHRoaXMuc2Vzc2lvbi5wYWdlc1dyYXAuZ2V0UGFyYWdyYXBoSGVpZ2h0KHBhcmFncmFwaHMsIHJvdyk7XG4gICAgICAgICAgICBjb25zdCBwYXJhZ3JhcGhUb3AgPSB0aGlzLmdldFBhcmFncmFwaFRvcChwYXJhZ3JhcGhzLCByb3cpO1xuICAgICAgICAgICAgRG9tSGVscGVyLnNldFN0eWxlKHBhcmFncmFwaENlbGwuZWxlbWVudC5zdHlsZSwgJ2hlaWdodCcsIGAke3BhcmFncmFwaEhlaWdodH1weGApO1xuICAgICAgICAgICAgRG9tSGVscGVyLnNldFN0eWxlKHBhcmFncmFwaENlbGwuZWxlbWVudC5zdHlsZSwgJ3RvcCcsIGAke3BhcmFncmFwaFRvcH1weGApO1xuICAgICAgICAgICAgY29uc3QgcGFyYWdyYXBoID0gcGFyYWdyYXBoc1tyb3ddO1xuICAgICAgICAgICAgaWYgKHBhcmFncmFwaC5udW1iZXJpbmdEYXRhLm51bWJlcmluZ0lkICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbnVtYmVyaW5nRWxlbWVudCA9IHRoaXMucmVuZGVyaW5nSGVscGVyLnJlbmRlck51bWJlcmluZ01hcmtlcihwYXJhZ3JhcGgsIHRoaXMuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgbnVtYmVyaW5nRWxlbWVudC5jbGFzc05hbWUgPSAnbnVtYmVyaW5nTWFya2VyJztcbiAgICAgICAgICAgICAgICBwYXJhZ3JhcGhDZWxsLmVsZW1lbnQuYXBwZW5kQ2hpbGQobnVtYmVyaW5nRWxlbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucmVuZGVyVGV4dExpbmVzKHBhcmFncmFwaENlbGwuZWxlbWVudCwgcm93KTtcbiAgICAgICAgICAgIGZyYWdtZW50LnB1c2gocGFyYWdyYXBoQ2VsbCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZnJhZ21lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW5kZXJUZXh0TGluZXMocGFyZW50OiBOb2RlLCByb3c6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBsaW5lc0NvbnRhaW5lckVsZW1lbnQgPSB0aGlzLnJlbmRlcmluZ0hlbHBlci5jcmVhdGVEaXZDb250YWluZXIoJ2xpbmVzLWNvbnRhaW5lcicpO1xuICAgICAgICBjb25zdCBjdXJyZW50UGFyYWdyYXBoID0gdGhpcy5zZXNzaW9uLnBhZ2VzV3JhcC5wYXJhZ3JhcGhzW3Jvd107XG4gICAgICAgIGNvbnN0IHBhcmFncmFwaEhlaWdodCA9IFBhcmFncmFwaEhlbHBlci5nZXRQYXJhZ3JhcGhIZWlnaHQoY3VycmVudFBhcmFncmFwaC50ZXh0TGluZXNJbmZvKTtcbiAgICAgICAgRG9tSGVscGVyLnNldFN0eWxlKGxpbmVzQ29udGFpbmVyRWxlbWVudC5zdHlsZSwgJ2hlaWdodCcsIGAke3BhcmFncmFwaEhlaWdodH1weGApO1xuICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQobGluZXNDb250YWluZXJFbGVtZW50KTtcblxuICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gdGhpcy5zZXNzaW9uLmRvY3VtZW50LnBvc2l0aW9uVG9JbmRleCh0aGlzLnNlc3Npb24uZG9jdW1lbnQubGluZXMsIHsgcm93LCBjb2x1bW46IDAgfSk7XG4gICAgICAgIGNvbnN0IGVuZEluZGV4ID0gdGhpcy5zZXNzaW9uLmRvY3VtZW50LnBvc2l0aW9uVG9JbmRleCh0aGlzLnNlc3Npb24uZG9jdW1lbnQubGluZXMsIHsgcm93OiByb3cgKyAxLCBjb2x1bW46IDAgfSkgLSAxO1xuICAgICAgICBjb25zdCBmb3JtYXRzID0gRm9ybWF0U3R5bGVIZWxwZXIuZ2V0Rm9ybWF0c0F0UmFuZ2UodGhpcy5zZXNzaW9uLm1vZGVsLmZvcm1hdHMsIHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcbiAgICAgICAgY29uc3Qgc3BsaXRzID0gdGhpcy5zZXNzaW9uLndyYXBEYXRhW3Jvd107XG4gICAgICAgIGNvbnN0IGZvcm1hdHNFeHQgPSBmb3JtYXRzLm1hcChcbiAgICAgICAgICAgIGZvcm1hdCA9PlxuICAgICAgICAgICAgICAgIG5ldyBGb3JtYXRFeHRNb2RlbCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1hdCxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogdGhpcy5zZXNzaW9uLm1vZGVsLmNvbnRlbnQuc3Vic3RyaW5nKGZvcm1hdC5zdGFydEluZGV4LCBmb3JtYXQuZW5kSW5kZXggKyAxKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIGlmIChzcGxpdHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBuZXcgRGlzdGFuY2VNb2RlbCh7IHN0YXJ0OiBzdGFydEluZGV4LCBlbmQ6IGVuZEluZGV4IH0pO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJpbmdIZWxwZXIucmVuZGVyQ29udGVudFdyYXBwZWRMaW5lKFxuICAgICAgICAgICAgICAgIHsgY3VycmVudEVsZW1lbnQ6IHRoaXMuZWxlbWVudCwgcGFyZW50Tm9kZTogbGluZXNDb250YWluZXJFbGVtZW50IH0sXG4gICAgICAgICAgICAgICAgc3BsaXRzLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJhZ3JhcGgsXG4gICAgICAgICAgICAgICAgZm9ybWF0c0V4dCxcbiAgICAgICAgICAgICAgICBkaXN0YW5jZSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb24uY3VzdG9tQ29udGVudFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uLmN1c3RvbUNvbXBvbmVudHMsXG4gICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uLm1vZGVsLmJyZWFrc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG51bWJlcmluZ09mZnNldExlZnQgPVxuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJhZ3JhcGgubnVtYmVyaW5nRGF0YS5udW1iZXJpbmdJZCA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgICAgICAgOiBjdXJyZW50UGFyYWdyYXBoLm51bWJlcmluZ0RhdGEud2lkdGggKyBjdXJyZW50UGFyYWdyYXBoLm51bWJlcmluZ0RhdGEucGFkZGluZ0xlZnQ7XG4gICAgICAgICAgICBjb25zdCBsYXN0TGluZUVsID0gdGhpcy5yZW5kZXJpbmdIZWxwZXIuY3JlYXRlTGluZUVsZW1lbnQoY3VycmVudFBhcmFncmFwaC50ZXh0TGluZXNJbmZvWzBdLCBudW1iZXJpbmdPZmZzZXRMZWZ0KTtcbiAgICAgICAgICAgIGxpbmVzQ29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChsYXN0TGluZUVsKTtcbiAgICAgICAgICAgIGNvbnN0IHJvd0Rpc3RhbmNlID0gbmV3IERpc3RhbmNlTW9kZWwoeyBzdGFydDogc3RhcnRJbmRleCwgZW5kOiBlbmRJbmRleCB9KTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyaW5nSGVscGVyLnJlbmRlckNvbnRlbnRTaW1wbGVMaW5lKFxuICAgICAgICAgICAgICAgIHsgY3VycmVudEVsZW1lbnQ6IHRoaXMuZWxlbWVudCwgcGFyZW50Tm9kZTogbGFzdExpbmVFbCB9LFxuICAgICAgICAgICAgICAgIGZvcm1hdHNFeHQsXG4gICAgICAgICAgICAgICAgcm93RGlzdGFuY2UsXG4gICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uLmN1c3RvbUNvbnRlbnRTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvbi5jdXN0b21Db21wb25lbnRzLFxuICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvbi5tb2RlbC5icmVha3NcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHBhZ2VzQ291bnRDaGFuZ2VkSGFuZGxlciA9IChldmVudDogeyBwYWdlc0NvdW50OiBudW1iZXI7IHBhZ2VIZWlnaHQ6IG51bWJlciB9KSA9PiB7XG4gICAgICAgIHRoaXMubGluZXMuc2V0U2l6ZXMoZXZlbnQucGFnZXNDb3VudCwgZXZlbnQucGFnZUhlaWdodCk7XG4gICAgfTtcbn1cbiJdfQ==
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5sYXllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliLytzaGFyZWQvZWRpdG9yL2NvcmUvbGF5ZXJzL3RleHQubGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU5RCxNQUFNLE9BQU8sU0FBVSxTQUFRLGFBQWE7SUFTeEMsWUFBbUIsYUFBMEIsRUFBVSxrQkFBa0IsZUFBZTtRQUNwRixLQUFLLEVBQUUsQ0FBQztRQUQyQyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFzS2hGLDZCQUF3QixHQUFHLENBQUMsS0FBaUQsRUFBRSxFQUFFO1lBQ3JGLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQztRQXJLRSxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsMEJBQTBCLENBQUM7UUFDcEQsYUFBYSxDQUFD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QVUsQ0FBQyxZQUFZLEVBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDNUIsQ0FBQztTQUNMO2FBQU07WUFDSCxNQUFNLG1CQUFtQixHQUNyQixnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsV0FBVyxLQUFLLElBQUk7Z0JBQy9DLENBQUMsQ0FBQyxDQUFDO2dCQUNILENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7WUFDNUYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FDckQsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUNqQyxtQkFBbUIsRUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUN2QyxDQUFDO1lBQ0YscUJBQXFCLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzlDLE1BQU0sV0FBVyxHQUFHLElBQUksYUFBYSxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUM1RSxJQUFJLENBQUMsZUFBZSxDQUFDLHVCQUF1QixDQUN4QyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsRUFDeEQsVUFBVSxFQUNWLFdBQVcsRUFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQzVCLENBQUM7U0FDTDtJQUNMLENBQUM7Q0FLSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENlbGwgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NlbGwuaW50ZXJmYWNlJztcbmltcG9ydCB7IERpc3RhbmNlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZGlzdGFuY2UubW9kZWwnO1xuaW1wb3J0IHsgRG9tSGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9kb20uaGVscGVyJztcbmltcG9ydCB7IEVkaXRTZXNzaW9uIH0gZnJvbSAnLi4vZWRpdC5zZXNzaW9uJztcbmltcG9ydCB7IEV2ZW50RW1pdHRpbmcgfSBmcm9tICcuLi9iYXNlL2V2ZW50LWVtaXR0aW5nJztcbmltcG9ydCB7IEZvcm1hdEV4dE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm1hdC1leHQubW9kZWwnO1xuaW1wb3J0IHsgRm9ybWF0U3R5bGVIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL2Zvcm1hdC1zdHlsZS5oZWxwZXInO1xuaW1wb3J0IHsgSUxheWVyQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9sYXllci5jb25maWcnO1xuaW1wb3J0IHsgTGluZXMgfSBmcm9tICcuL2xpbmVzJztcbmltcG9ydCB7IFBhcmFncmFwaCB9IGZyb20gJy4uL3BhZ2luZy9wYXJhZ3JhcGgnO1xuaW1wb3J0IHsgUGFyYWdyYXBoSGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9wYXJhZ3JhcGguaGVscGVyJztcbmltcG9ydCB7IFJlbmRlcmluZ0hlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvcmVuZGVyaW5nLmhlbHBlcic7XG5cbmV4cG9ydCBjbGFzcyBUZXh0TGF5ZXIgZXh0ZW5kcyBFdmVudEVtaXR0aW5nIHtcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAgIGxpbmVzOiBMaW5lcztcblxuICAgIHNlc3Npb246IEVkaXRTZXNzaW9uO1xuXG4gICAgY29uZmlnOiBJTGF5ZXJDb25maWc7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocGFyZW50RWxlbWVudDogSFRNTEVsZW1lbnQsIHByaXZhdGUgcmVuZGVyaW5nSGVscGVyID0gUmVuZGVyaW5nSGVscGVyKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc05hbWUgPSAnYWNlLWxheWVyIGFjZS10ZXh0LWxheWVyJztcbiAgICAgICAgcGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpO1xuXG4gICAgICAgIHRoaXMubGluZXMgPSBuZXcgTGluZXModGhpcy5lbGVtZW50KTtcbiAgICB9XG5cbiAgICBzZXRTZXNzaW9uKHNlc3Npb246IEVkaXRTZXNzaW9uKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlc3Npb24pIHtcbiAgICAgICAgICAgIHRoaXMuc2Vzc2lvbi5wYWdlc1dyYXAucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGFnZXNDb3VudENoYW5nZWQnLCB0aGlzLnBhZ2VzQ291bnRDaGFuZ2VkSGFuZGxlcik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlc3Npb24gPSBzZXNzaW9uO1xuICAgICAgICBpZiAoc2Vzc2lvbikge1xuICAgICAgICAgICAgdGhpcy5zZXNzaW9uLnBhZ2VzV3JhcC5hZGRFdmVudExpc3RlbmVyKCdwYWdlc0NvdW50Q2hhbmdlZCcsIHRoaXMucGFnZXNDb3VudENoYW5nZWRIYW5kbGVyKTtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IGAke3RoaXMuc2Vzc2lvbi5wYWdlc1dyYXAuY29udGVudFdpZHRofXB4YDtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5tYXJnaW4gPSBgMCAke3RoaXMuc2Vzc2lvbi5wYWdlc1dyYXAuZG9jdW1lbnRNYXJnaW4ucmlnaHR9cHggMCAke3RoaXMuc2Vzc2lvbi5wYWdlc1dyYXAuZG9jdW1lbnRNYXJnaW4ubGVmdH1weGA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGUoY29uZmlnOiBJTGF5ZXJDb25maWcpOiB2b2lkIHtcbiAgICAgICAgRG9tSGVscGVyLnRyYW5zbGF0ZSh0aGlzLmVsZW1lbnQsIDAsIC1jb25maWcuc2Nyb2xsVG9wKTtcblxuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcblxuICAgICAgICB3aGlsZSAodGhpcy5saW5lcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubGluZXMucG9wKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxpbmVzLnB1c2godGhpcy5yZW5kZXJUZXh0UGFyYWdyYXBoKGNvbmZpZy5jb250ZW50UmFuZ2UpKTtcbiAgICB9XG5cbiAgICBzY3JvbGxMaW5lcyhjb25maWc6IElMYXllckNvbmZpZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBvbGRDb25maWcgPSB0aGlzLmNvbmZpZztcbiAgICAgICAgdGhpcy5jb25maWcgPSBjb25maWc7XG5cbiAgICAgICAgRG9tSGVscGVyLnRyYW5zbGF0ZSh0aGlzLmVsZW1lbnQsIDAsIC1jb25maWcuc2Nyb2xsVG9wKTtcblxuICAgICAgICBjb25zdCBvbGRMYXN0Um93ID0gb2xkQ29uZmlnID8gb2xkQ29uZmlnLmNvbnRlbnRSYW5nZS5lbmQgOiAtMTtcblxuICAgICAgICBpZiAoIW9sZENvbmZpZyB8fCBvbGRMYXN0Um93IDwgY29uZmlnLmNvbnRlbnRSYW5nZS5zdGFydCB8fCBjb25maWcuY29udGVudFJhbmdlLmVuZCA8IG9sZENvbmZpZy5jb250ZW50UmFuZ2Uuc3RhcnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZShjb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9sZENvbmZpZy5jb250ZW50UmFuZ2Uuc3RhcnQgPCBjb25maWcuY29udGVudFJhbmdlLnN0YXJ0KSB7XG4gICAgICAgICAgICBmb3IgKGxldCByb3cgPSBjb25maWcuY29udGVudFJhbmdlLnN0YXJ0IC0gb2xkQ29uZmlnLmNvbnRlbnRSYW5nZS5zdGFydDsgcm93ID4gMDsgcm93LS0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmVzLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob2xkQ29uZmlnLmNvbnRlbnRSYW5nZS5lbmQgPiBjb25maWcuY29udGVudFJhbmdlLmVuZCkge1xuICAgICAgICAgICAgZm9yIChsZXQgcm93ID0gb2xkQ29uZmlnLmNvbnRlbnRSYW5nZS5lbmQgLSBjb25maWcuY29udGVudFJhbmdlLmVuZDsgcm93ID4gMDsgcm93LS0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmVzLnBvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9sZENvbmZpZy5jb250ZW50UmFuZ2Uuc3RhcnQgPiBjb25maWcuY29udGVudFJhbmdlLnN0YXJ0KSB7XG4gICAgICAgICAgICBjb25zdCBsaW5lcyA9IHRoaXMucmVuZGVyVGV4dFBhcmFncmFwaChcbiAgICAgICAgICAgICAgICBuZXcgRGlzdGFuY2VNb2RlbCh7IHN0YXJ0OiBjb25maWcuY29udGVudFJhbmdlLnN0YXJ0LCBlbmQ6IG9sZENvbmZpZy5jb250ZW50UmFuZ2Uuc3RhcnQgLSAxIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5saW5lcy51bnNoaWZ0KGxpbmVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvbGRDb25maWcuY29udGVudFJhbmdlLmVuZCA8IGNvbmZpZy5jb250ZW50UmFuZ2UuZW5kKSB7XG4gICAgICAgICAgICBjb25zdCBsaW5lcyA9IHRoaXMucmVuZGVyVGV4dFBhcmFncmFwaChcbiAgICAgICAgICAgICAgICBuZXcgRGlzdGFuY2VNb2RlbCh7IHN0YXJ0OiBvbGRDb25maWcuY29udGVudFJhbmdlLmVuZCArIDEsIGVuZDogY29uZmlnLmNvbnRlbnRSYW5nZS5lbmQgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmxpbmVzLnB1c2gobGluZXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXNzaW9uLnBhZ2VzV3JhcC5yZW1vdmVFdmVudExpc3RlbmVyKCdwYWdlc0NvdW50Q2hhbmdlZCcsIHRoaXMucGFnZXNDb3VudENoYW5nZWRIYW5kbGVyKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0UGFyYWdyYXBoVG9wKHBhcmFncmFwaHM6IFBhcmFncmFwaFtdLCByb3c6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlc3Npb24ucGFnZXNXcmFwLmdldFBhcmFncmFwaFRvcChwYXJhZ3JhcGhzLCByb3cpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVuZGVyVGV4dFBhcmFncmFwaChyb3dzRGlzdGFuY2U6IERpc3RhbmNlTW9kZWwpOiBDZWxsW10ge1xuICAgICAgICBjb25zdCBmcmFnbWVudDogQ2VsbFtdID0gW107XG4gICAgICAgIGZvciAobGV0IHJvdyA9IHJvd3NEaXN0YW5jZS5zdGFydDsgcm93IDw9IHJvd3NEaXN0YW5jZS5lbmQ7IHJvdysrKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJhZ3JhcGhzID0gdGhpcy5zZXNzaW9uLnBhZ2VzV3JhcC5wYXJhZ3JhcGhzO1xuXG4gICAgICAgICAgICBjb25zdCBwYXJhZ3JhcGhDZWxsID0gdGhpcy5saW5lcy5jcmVhdGVDZWxsKHJvdyk7XG4gICAgICAgICAgICBwYXJhZ3JhcGhDZWxsLmVsZW1lbnQuY2xhc3NOYW1lID0gJ2FjZS1saW5lLWdyb3VwJztcbiAgICAgICAgICAgIERvbUhlbHBlci5yZW1vdmVDaGlsZHJlbihwYXJhZ3JhcGhDZWxsLmVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgcGFyYWdyYXBoSGVpZ2h0ID0gdGhpcy5zZXNzaW9uLnBhZ2VzV3JhcC5nZXRQYXJhZ3JhcGhIZWlnaHQocGFyYWdyYXBocywgcm93KTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFncmFwaFRvcCA9IHRoaXMuZ2V0UGFyYWdyYXBoVG9wKHBhcmFncmFwaHMsIHJvdyk7XG4gICAgICAgICAgICBEb21IZWxwZXIuc2V0U3R5bGUocGFyYWdyYXBoQ2VsbC5lbGVtZW50LnN0eWxlLCAnaGVpZ2h0JywgYCR7cGFyYWdyYXBoSGVpZ2h0fXB4YCk7XG4gICAgICAgICAgICBEb21IZWxwZXIuc2V0U3R5bGUocGFyYWdyYXBoQ2VsbC5lbGVtZW50LnN0eWxlLCAndG9wJywgYCR7cGFyYWdyYXBoVG9wfXB4YCk7XG4gICAgICAgICAgICBjb25zdCBwYXJhZ3JhcGggPSBwYXJhZ3JhcGhzW3Jvd107XG4gICAgICAgICAgICBpZiAocGFyYWdyYXBoLm51bWJlcmluZ0RhdGEubnVtYmVyaW5nSWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBudW1iZXJpbmdFbGVtZW50ID0gdGhpcy5yZW5kZXJpbmdIZWxwZXIucmVuZGVyTnVtYmVyaW5nTWFya2VyKFxuICAgICAgICAgICAgICAgICAgICBwYXJhZ3JhcGgsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uLnByb3BlcnRpZXMuc2NhbGluZ1JhdGlvXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBudW1iZXJpbmdFbGVtZW50LmNsYXNzTmFtZSA9ICdudW1iZXJpbmdNYXJrZXInO1xuICAgICAgICAgICAgICAgIHBhcmFncmFwaENlbGwuZWxlbWVudC5hcHBlbmRDaGlsZChudW1iZXJpbmdFbGVtZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yZW5kZXJUZXh0TGluZXMocGFyYWdyYXBoQ2VsbC5lbGVtZW50LCByb3cpO1xuICAgICAgICAgICAgZnJhZ21lbnQucHVzaChwYXJhZ3JhcGhDZWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmcmFnbWVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbmRlclRleHRMaW5lcyhwYXJlbnQ6IE5vZGUsIHJvdzogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxpbmVzQ29udGFpbmVyRWxlbWVudCA9IHRoaXMucmVuZGVyaW5nSGVscGVyLmNyZWF0ZURpdkNvbnRhaW5lcignbGluZXMtY29udGFpbmVyJyk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYXJhZ3JhcGggPSB0aGlzLnNlc3Npb24ucGFnZXNXcmFwLnBhcmFncmFwaHNbcm93XTtcbiAgICAgICAgY29uc3QgcGFyYWdyYXBoSGVpZ2h0ID0gUGFyYWdyYXBoSGVscGVyLmdldFBhcmFncmFwaEhlaWdodChjdXJyZW50UGFyYWdyYXBoLnRleHRMaW5lc0luZm8pO1xuICAgICAgICBEb21IZWxwZXIuc2V0U3R5bGUobGluZXNDb250YWluZXJFbGVtZW50LnN0eWxlLCAnaGVpZ2h0JywgYCR7cGFyYWdyYXBoSGVpZ2h0fXB4YCk7XG4gICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChsaW5lc0NvbnRhaW5lckVsZW1lbnQpO1xuXG4gICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSB0aGlzLnNlc3Npb24uZG9jdW1lbnQucG9zaXRpb25Ub0luZGV4KHRoaXMuc2Vzc2lvbi5kb2N1bWVudC5saW5lcywgeyByb3csIGNvbHVtbjogMCB9KTtcbiAgICAgICAgY29uc3QgZW5kSW5kZXggPSB0aGlzLnNlc3Npb24uZG9jdW1lbnQucG9zaXRpb25Ub0luZGV4KHRoaXMuc2Vzc2lvbi5kb2N1bWVudC5saW5lcywgeyByb3c6IHJvdyArIDEsIGNvbHVtbjogMCB9KSAtIDE7XG4gICAgICAgIGNvbnN0IGZvcm1hdHMgPSBGb3JtYXRTdHlsZUhlbHBlci5nZXRGb3JtYXRzQXRSYW5nZSh0aGlzLnNlc3Npb24ubW9kZWwuZm9ybWF0cywgc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuICAgICAgICBjb25zdCBzcGxpdHMgPSB0aGlzLnNlc3Npb24ud3JhcERhdGFbcm93XTtcbiAgICAgICAgY29uc3QgZm9ybWF0c0V4dCA9IGZvcm1hdHMubWFwKFxuICAgICAgICAgICAgZm9ybWF0ID0+XG4gICAgICAgICAgICAgICAgbmV3IEZvcm1hdEV4dE1vZGVsKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybWF0LFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB0aGlzLnNlc3Npb24ubW9kZWwuY29udGVudC5zdWJzdHJpbmcoZm9ybWF0LnN0YXJ0SW5kZXgsIGZvcm1hdC5lbmRJbmRleCArIDEpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHNwbGl0cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IG5ldyBEaXN0YW5jZU1vZGVsKHsgc3RhcnQ6IHN0YXJ0SW5kZXgsIGVuZDogZW5kSW5kZXggfSk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmluZ0hlbHBlci5yZW5kZXJDb250ZW50V3JhcHBlZExpbmUoXG4gICAgICAgICAgICAgICAgeyBjdXJyZW50RWxlbWVudDogdGhpcy5lbGVtZW50LCBwYXJlbnROb2RlOiBsaW5lc0NvbnRhaW5lckVsZW1lbnQgfSxcbiAgICAgICAgICAgICAgICBzcGxpdHMsXG4gICAgICAgICAgICAgICAgY3VycmVudFBhcmFncmFwaCxcbiAgICAgICAgICAgICAgICBmb3JtYXRzRXh0LFxuICAgICAgICAgICAgICAgIGRpc3RhbmNlLFxuICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvbi5jdXN0b21Db250ZW50U2VydmljZSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb24uY3VzdG9tQ29tcG9uZW50cyxcbiAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb24ucHJvcGVydGllcy5zY2FsaW5nUmF0aW8sXG4gICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uLm1vZGVsLmJyZWFrc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG51bWJlcmluZ09mZnNldExlZnQgPVxuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJhZ3JhcGgubnVtYmVyaW5nRGF0YS5udW1iZXJpbmdJZCA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgICAgICAgOiBjdXJyZW50UGFyYWdyYXBoLm51bWJlcmluZ0RhdGEud2lkdGggKyBjdXJyZW50UGFyYWdyYXBoLm51bWJlcmluZ0RhdGEucGFkZGluZ0xlZnQ7XG4gICAgICAgICAgICBjb25zdCBsYXN0TGluZUVsID0gdGhpcy5yZW5kZXJpbmdIZWxwZXIuY3JlYXRlTGluZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgY3VycmVudFBhcmFncmFwaC50ZXh0TGluZXNJbmZvWzBdLFxuICAgICAgICAgICAgICAgIG51bWJlcmluZ09mZnNldExlZnQsXG4gICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uLnByb3BlcnRpZXMuc2NhbGluZ1JhdGlvXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbGluZXNDb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKGxhc3RMaW5lRWwpO1xuICAgICAgICAgICAgY29uc3Qgcm93RGlzdGFuY2UgPSBuZXcgRGlzdGFuY2VNb2RlbCh7IHN0YXJ0OiBzdGFydEluZGV4LCBlbmQ6IGVuZEluZGV4IH0pO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJpbmdIZWxwZXIucmVuZGVyQ29udGVudFNpbXBsZUxpbmUoXG4gICAgICAgICAgICAgICAgeyBjdXJyZW50RWxlbWVudDogdGhpcy5lbGVtZW50LCBwYXJlbnROb2RlOiBsYXN0TGluZUVsIH0sXG4gICAgICAgICAgICAgICAgZm9ybWF0c0V4dCxcbiAgICAgICAgICAgICAgICByb3dEaXN0YW5jZSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb24uY3VzdG9tQ29udGVudFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uLmN1c3RvbUNvbXBvbmVudHMsXG4gICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uLm1vZGVsLmJyZWFrc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcGFnZXNDb3VudENoYW5nZWRIYW5kbGVyID0gKGV2ZW50OiB7IHBhZ2VzQ291bnQ6IG51bWJlcjsgcGFnZUhlaWdodDogbnVtYmVyIH0pID0+IHtcbiAgICAgICAgdGhpcy5saW5lcy5zZXRTaXplcyhldmVudC5wYWdlc0NvdW50LCBldmVudC5wYWdlSGVpZ2h0KTtcbiAgICB9O1xufVxuIl19
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
2
|
import { BaseNoderComponent } from '../../shared/abstract/base.component';
|
|
3
3
|
import { ImageInputHandler } from '../input-handler/image-input.handler';
|
|
4
|
+
import { ScalingHelper } from '../../../../helpers/scaling.helper';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "../services/image-api.service";
|
|
6
7
|
import * as i2 from "../../../interaction/editor.service";
|
|
@@ -28,8 +29,8 @@ export class NoderImageComponent extends BaseNoderComponent {
|
|
|
28
29
|
}
|
|
29
30
|
initialize() {
|
|
30
31
|
const url = this.image.content?.replace('/api/', '') ?? '';
|
|
31
|
-
this._height = this.image.height;
|
|
32
|
-
this._width = this.image.width;
|
|
32
|
+
this._height = ScalingHelper.scale(this.image.height, this.generalProperties.scalingRatio);
|
|
33
|
+
this._width = ScalingHelper.scale(this.image.width, this.generalProperties.scalingRatio);
|
|
33
34
|
this.apiService.getFile(url).subscribe((res) => {
|
|
34
35
|
const fileSource = URL.createObjectURL(res);
|
|
35
36
|
const image = this.createImage(fileSource);
|
|
@@ -84,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
|
|
|
84
85
|
type: Component,
|
|
85
86
|
args: [{ selector: 'app-noder-image', changeDetection: ChangeDetectionStrategy.OnPush, template: "<app-resizer\n *ngIf=\"isFocused\"\n class=\"resizer\"\n [isDisabled]=\"isViewOnly$ | async\"\n [size]=\"size\"\n (resizeEnd)=\"onResizeEnd($event)\"></app-resizer>\n", styles: [":host{position:relative;outline:none}.resizer{position:absolute;z-index:1}\n"] }]
|
|
86
87
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.ImageApiService }, { type: i2.EditorService }] });
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvK3NoYXJlZC9lZGl0b3IvY3VzdG9tLWNvbXBvbmVudHMvaW1hZ2UvY29tcG9uZW50cy9pbWFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi8rc2hhcmVkL2VkaXRvci9jdXN0b20tY29tcG9uZW50cy9pbWFnZS9jb21wb25lbnRzL2ltYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFHL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFHMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7QUFTbkUsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGtCQUFrQjtJQUN2RCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxPQUFxQixDQUFDO0lBQ3RDLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxHQUFlO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDSixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0lBTUQsWUFBc0IsVUFBbUMsRUFBVSxVQUEyQixF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R0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzlCLE9BQU8sQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDO1FBQ3pCLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFTyxXQUFXLENBQUMsSUFBVTtRQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakUsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3pCLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUMvQixDQUFDO0lBRU8sWUFBWSxDQUFDLElBQVU7UUFDM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BFLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDO0lBQzVDLENBQUM7OEdBbEZRLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDhFQ2pCaEMsdUxBTUE7OzJGRFdhLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDSSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQmFzZU5vZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Fic3RyYWN0L2Jhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IEVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmFjdGlvbi9lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBJbWFnZUFwaVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pbWFnZS1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBJbWFnZUlucHV0SGFuZGxlciB9IGZyb20gJy4uL2lucHV0LWhhbmRsZXIvaW1hZ2UtaW5wdXQuaGFuZGxlcic7XG5pbXBvcnQgeyBJbWFnZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbWFnZS5tb2RlbCc7XG5pbXBvcnQgeyBTY2FsaW5nSGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vaGVscGVycy9zY2FsaW5nLmhlbHBlcic7XG5pbXBvcnQgeyBTaXplIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zaXplJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtbm9kZXItaW1hZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW1hZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBOb2RlckltYWdlQ29tcG9uZW50IGV4dGVuZHMgQmFzZU5vZGVyQ29tcG9uZW50IHtcbiAgICBnZXQgaXNWaWV3T25seSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvclNlcnZpY2UuaXNWaWV3T25seSQ7XG4gICAgfVxuXG4gICAgZ2V0IGltYWdlKCk6IEltYWdlTW9kZWwge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50IGFzIEltYWdlTW9kZWw7XG4gICAgfVxuICAgIHNldCBpbWFnZSh2YWw6IEltYWdlTW9kZWwpIHtcbiAgICAgICAgdGhpcy5jb250ZW50ID0gdmFsO1xuICAgIH1cblxuICAgIGdldCBzaXplKCk6IFNpemUge1xuICAgICAgICByZXR1cm4geyB3aWR0aDogdGhpcy5fd2lkdGgsIGhlaWdodDogdGhpcy5faGVpZ2h0IH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0NhbnZhcyA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBpbnB1dEhhbmRsZXI6IEltYWdlSW5wdXRIYW5kbGVyO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LCBwcml2YXRlIGFwaVNlcnZpY2U6IEltYWdlQXBpU2VydmljZSwgcHJpdmF0ZSBlZGl0b3JTZXJ2aWNlOiBFZGl0b3JTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5pbWFnZS5jb250ZW50Py5yZXBsYWNlKCcvYXBpLycsICcnKSA/PyAnJztcbiAgICAgICAgdGhpcy5faGVpZ2h0ID0gU2NhbGluZ0hlbHBlci5zY2FsZSh0aGlzLmltYWdlLmhlaWdodCwgdGhpcy5nZW5lcmFsUHJvcGVydGllcy5zY2FsaW5nUmF0aW8pO1xuICAgICAgICB0aGlzLl93aWR0aCA9IFNjYWxpbmdIZWxwZXIuc2NhbGUodGhpcy5pbWFnZS53aWR0aCwgdGhpcy5nZW5lcmFsUHJvcGVydGllcy5zY2FsaW5nUmF0aW8pO1xuICAgICAgICB0aGlzLmFwaVNlcnZpY2UuZ2V0RmlsZSh1cmwpLnN1YnNjcmliZSgocmVzOiBCbG9iKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlU291cmNlID0gVVJMLmNyZWF0ZU9iamVjdFVSTChyZXMpO1xuICAgICAgICAgICAgY29uc3QgaW1hZ2UgPSB0aGlzLmNyZWF0ZUltYWdlKGZpbGVTb3VyY2UpO1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoaW1hZ2UpO1xuICAgICAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnJlbmRlcmVyVXBkYXRlZCh0aGlzLnNlc3Npb25JZCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uUmVzaXplRW5kKHNpemU6IFNpemUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNpemUoc2l6ZSk7XG4gICAgICAgIGNvbnN0IHJlc2l6ZWRJbWFnZSA9IHsgLi4udGhpcy5pbWFnZSwgd2lkdGg6IHNpemUud2lkdGgsIGhlaWdodDogc2l6ZS5oZWlnaHQgfTtcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmNoYW5nZUltYWdlU3R5bGUocmVzaXplZEltYWdlKTtcbiAgICB9XG5cbiAgICByZXNpemUoc2l6ZTogU2l6ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl93aWR0aCA9IHNpemUud2lkdGg7XG4gICAgICAgIHRoaXMuX2hlaWdodCA9IHNpemUuaGVpZ2h0O1xuICAgICAgICB0aGlzLmlzQ2FudmFzID8gdGhpcy5yZXNpemVDYW52YXMoc2l6ZSkgOiB0aGlzLnJlc2l6ZUltYWdlKHNpemUpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dEhhbmRsZXIgPSBuZXcgSW1hZ2VJbnB1dEhhbmRsZXIodGhpcy5lZGl0b3JTZXJ2aWNlLCB0aGlzKTtcbiAgICAgICAgc3VwZXIuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBibHVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0SGFuZGxlcj8uZGVzdHJveSgpO1xuICAgICAgICBzdXBlci5ibHVyKCk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXRIYW5kbGVyPy5kZXN0cm95KCk7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVJbWFnZShmaWxlU291cmNlKTogSFRNTEltYWdlRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGltYWdlRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcbiAgICAgICAgaW1hZ2VFbC53aWR0aCA9IHRoaXMuX3dpZHRoO1xuICAgICAgICBpbWFnZUVsLmhlaWdodCA9IHRoaXMuX2hlaWdodDtcbiAgICAgICAgaW1hZ2VFbC5zcmMgPSBmaWxlU291cmNlO1xuICAgICAgICByZXR1cm4gaW1hZ2VFbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2l6ZUltYWdlKHNpemU6IFNpemUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW1hZ2UgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbWcnKTtcbiAgICAgICAgaW1hZ2Uud2lkdGggPSBzaXplLndpZHRoO1xuICAgICAgICBpbWFnZS5oZWlnaHQgPSBzaXplLmhlaWdodDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2l6ZUNhbnZhcyhzaXplOiBTaXplKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGltYWdlID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignY2FudmFzJyk7XG4gICAgICAgIGltYWdlLnN0eWxlLndpZHRoID0gYCR7c2l6ZS53aWR0aH1weGA7XG4gICAgICAgIGltYWdlLnN0eWxlLmhlaWdodCA9IGAke3NpemUuaGVpZ2h0fXB4YDtcbiAgICB9XG59XG4iLCI8YXBwLXJlc2l6ZXJcbiAgICAqbmdJZj1cImlzRm9jdXNlZFwiXG4gICAgY2xhc3M9XCJyZXNpemVyXCJcbiAgICBbaXNEaXNhYmxlZF09XCJpc1ZpZXdPbmx5JCB8IGFzeW5jXCJcbiAgICBbc2l6ZV09XCJzaXplXCJcbiAgICAocmVzaXplRW5kKT1cIm9uUmVzaXplRW5kKCRldmVudClcIj48L2FwcC1yZXNpemVyPlxuIl19
|
|
@@ -34,7 +34,7 @@ export class BaseNoderComponent extends ObserverComponent {
|
|
|
34
34
|
this.cdr.markForCheck();
|
|
35
35
|
}
|
|
36
36
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: BaseNoderComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
37
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.1", type: BaseNoderComponent, inputs: { content: "content", sessionId: "sessionId", contentWidth: "contentWidth" }, host: { properties: { "class.focused": "this.focused", "attr.data-session-id": "this.sessionId", "attr.data-insert-index": "this.insertIndex" } }, usesInheritance: true, ngImport: i0 }); }
|
|
37
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.1", type: BaseNoderComponent, inputs: { content: "content", sessionId: "sessionId", contentWidth: "contentWidth", generalProperties: "generalProperties" }, host: { properties: { "class.focused": "this.focused", "attr.data-session-id": "this.sessionId", "attr.data-insert-index": "this.insertIndex" } }, usesInheritance: true, ngImport: i0 }); }
|
|
38
38
|
}
|
|
39
39
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: BaseNoderComponent, decorators: [{
|
|
40
40
|
type: Directive
|
|
@@ -53,5 +53,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
|
|
|
53
53
|
args: ['attr.data-insert-index']
|
|
54
54
|
}], contentWidth: [{
|
|
55
55
|
type: Input
|
|
56
|
+
}], generalProperties: [{
|
|
57
|
+
type: Input
|
|
56
58
|
}] } });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi8rc2hhcmVkL2VkaXRvci9jdXN0b20tY29tcG9uZW50cy9zaGFyZWQvYWJzdHJhY3QvYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUl6RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7QUFHNUUsTUFBTSxPQUFnQixrQkFBbUIsU0FBUSxpQkFBaUI7SUFEbEU7O1FBc0NjLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFLVixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7S0FhdEQ7SUF0REcsSUFDSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFTRCxJQUNJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxJQUFJLFdBQVcsQ0FBQyxHQUFXO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztJQUNuQyxDQUFDO0lBU0QsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFHRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUdELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBTUQsS0FBSztRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUk7UUFDQSxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVCLENBQUM7OEdBdERpQixrQkFBa0I7a0dBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEdkMsU0FBUzs4QkFHRixPQUFPO3NCQURWLFdBQVc7dUJBQUMsZUFBZTtnQkFNNUIsT0FBTztzQkFETixLQUFLO2dCQUtOLFNBQVM7c0JBRlIsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxzQkFBc0I7Z0JBSS9CLFdBQVc7c0JBRGQsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBU3JDLFlBQVk7c0JBRFgsS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgaW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDdXN0b21Db250ZW50IH0gZnJvbSAnLi4vdHlwZXMvY3VzdG9tLWNvbnRlbnQnO1xuaW1wb3J0IHsgR2VuZXJhbFByb3BlcnRpZXNNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2V4ZWN1dGlvbi9tb2RlbHMvZ2VuZXJhbC1wcm9wZXJ0aWVzLm1vZGVsJztcbmltcG9ydCB7IE9ic2VydmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vYWJzdHJhY3Qvb2JzZXJ2ZXIuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZU5vZGVyQ29tcG9uZW50IGV4dGVuZHMgT2JzZXJ2ZXJDb21wb25lbnQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZm9jdXNlZCcpXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0ZvY3VzZWQ7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBjb250ZW50OiBDdXN0b21Db250ZW50O1xuXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1zZXNzaW9uLWlkJylcbiAgICBzZXNzaW9uSWQ6IG51bWJlcjtcblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWluc2VydC1pbmRleCcpXG4gICAgZ2V0IGluc2VydEluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQuaW5zZXJ0SW5kZXg7XG4gICAgfVxuICAgIHNldCBpbnNlcnRJbmRleCh2YWw6IG51bWJlcikge1xuICAgICAgICB0aGlzLmNvbnRlbnQuaW5zZXJ0SW5kZXggPSB2YWw7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBjb250ZW50V2lkdGg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2VuZXJhbFByb3BlcnRpZXM6IEdlbmVyYWxQcm9wZXJ0aWVzTW9kZWw7XG5cbiAgICBwcm90ZWN0ZWQgX2hlaWdodDogbnVtYmVyO1xuICAgIGdldCBoZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hlaWdodDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3dpZHRoOiBudW1iZXI7XG4gICAgZ2V0IHdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl93aWR0aDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2lzRm9jdXNlZCA9IGZhbHNlO1xuICAgIGdldCBpc0ZvY3VzZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0ZvY3VzZWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICBhYnN0cmFjdCBpbml0aWFsaXplKCk6IHZvaWQ7XG5cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNGb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgYmx1cigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNGb2N1c2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -5,7 +5,6 @@ import { DisplayToken } from '../../../../core/models/display-token.model';
|
|
|
5
5
|
import { DocxModel } from '../../../../../../models/generated/docx.model';
|
|
6
6
|
import { Edges } from '../../../../core/components/edges/edges';
|
|
7
7
|
import { EXTERNAL_ELEMENT_SERVICE } from '../../../external-element/external-elements.const';
|
|
8
|
-
import { MarginModel } from '../../../../core/models/margin.model';
|
|
9
8
|
import { NoderImageComponent } from '../../../image/components/image.component';
|
|
10
9
|
import { NoderTabComponent } from '../../../tab/tab.component';
|
|
11
10
|
import { NoderTableComponent } from '../../../table/components/table.component';
|
|
@@ -17,26 +16,21 @@ export class CustomContentService {
|
|
|
17
16
|
this.injector = injector;
|
|
18
17
|
this.elements = this.injector.get(EXTERNAL_ELEMENT_SERVICE).elements;
|
|
19
18
|
}
|
|
20
|
-
generateComponents(model, sessionId,
|
|
19
|
+
generateComponents(model, sessionId, generalProperties, document) {
|
|
21
20
|
const contentWidth = document.pageWidth - (document.pageMargin.left + document.pageMargin.right);
|
|
22
21
|
return {
|
|
23
22
|
images: this.componentService.generateComponents(NoderImageComponent, model?.images || [], x => {
|
|
24
|
-
return { image: x, sessionId };
|
|
23
|
+
return { image: x, sessionId, generalProperties };
|
|
25
24
|
}),
|
|
26
25
|
tables: this.componentService.generateComponents(NoderTableComponent, model?.tables || [], x => {
|
|
27
|
-
return { table: x, sessionId,
|
|
26
|
+
return { table: x, sessionId, generalProperties };
|
|
28
27
|
}),
|
|
29
28
|
tabs: this.componentService.generateComponents(NoderTabComponent, model?.tabs || [], x => {
|
|
30
|
-
return { tab: x, sessionId };
|
|
29
|
+
return { tab: x, sessionId, generalProperties };
|
|
31
30
|
}),
|
|
32
31
|
customElements: this.generateElementComponents(model?.elements || [], sessionId, contentWidth),
|
|
33
32
|
edges: model instanceof DocxModel
|
|
34
|
-
? new Edges(this.componentService, model.headers, model.footers,
|
|
35
|
-
left: model.marginLeft,
|
|
36
|
-
right: model.marginRight,
|
|
37
|
-
top: model.marginHeader,
|
|
38
|
-
bottom: model.marginFooter
|
|
39
|
-
}), document.pageWidth, sessionId, properties)
|
|
33
|
+
? new Edges(this.componentService, model.headers, model.footers, document.pageMargin, document.pageWidth, sessionId, generalProperties)
|
|
40
34
|
: null
|
|
41
35
|
};
|
|
42
36
|
}
|
|
@@ -118,4 +112,4 @@ export class CustomContentService {
|
|
|
118
112
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: CustomContentService, decorators: [{
|
|
119
113
|
type: Injectable
|
|
120
114
|
}], ctorParameters: () => [{ type: i1.ComponentService }, { type: i0.Injector }] });
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNvbnRlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliLytzaGFyZWQvZWRpdG9yL2N1c3RvbS1jb21wb25lbnRzL3NoYXJlZC9zZXJ2aWNlcy9jdXN0b20tY29udGVudC9jdXN0b20tY29udGVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsVUFBVSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUt6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDbkcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFNN0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7QUFHaEYsTUFBTSxPQUFPLG9CQUFvQjtJQUc3QixZQUFtQixnQkFBa0MsRUFBVSxRQUFrQjtRQUE5RCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUM3RSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ3pFLENBQUM7SUFFRCxrQkFBa0IsQ0FDZCxLQUF3QixFQUN4QixTQUFpQixFQUNqQixVQUFrQyxFQUNsQyxRQUFrQjtRQUVsQixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsU0FBUyxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRyxPQUFPO1lBQ0gsTUFBTSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRTtnQkFDM0YsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDbkMsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRTtnQkFDM0YsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQy9DLENBQUMsQ0FBQztZQUNGLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3JGLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLENBQUMsQ0FBQztZQUNGLGNBQWMsRUFBRSxJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxFQUFFLFFBQVEsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQztZQUM5RixLQUFLLEVBQ0QsS0FBSyxZQUFZLFNBQVM7Z0JBQ3RCLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FDTCxJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLEtBQUssQ0FBQyxPQUFPLEVBQ2IsS0FBSyxDQUFDLE9BQU8sRUFDYixJQUFJLFdBQVcsQ0FBQztvQkFDWixJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVU7b0JBQ3RCLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVztvQkFDeEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxZQUFZO29CQUN2QixNQUFNLEVBQUUsS0FBSyxDQUFDLFlBQVk7aUJBQzdCLENBQUMsRUFDRixRQUFRLENBQUMsU0FBUyxFQUNsQixTQUFTLEVBQ1QsVUFBVSxDQUNiO2dCQUNILENBQUMsQ0FBQyxJQUFJO1NBQ2pCLENBQUM7SUFDTixDQUFDO0lBRUQseUJBQXlCLENBQUMsUUFBd0IsRUFBRSxTQUFpQixFQUFFLFlBQW9CO1FBQ3ZGLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNwQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDbEcsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsMEJBQTBCLENBQUMsVUFBNkIsRUFBRSxZQUFvQixFQUFFLGdCQUErQjtRQUMzRyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsRUFBRTtZQUM5QyxPQUFPLENBQ0gsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUM7Z0JBQ3JFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDO2dCQUNuRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUNoRixDQUFDO1NBQ0w7UUFFRCxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDckMsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ2hGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELGFBQWEsQ0FBQyxVQUE2QixFQUFFLFFBQXVCO1FBQ2hFLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakksTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqSSxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdILE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUMzQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FDMUYsQ0FBQztRQUNGLE9BQU8sQ0FBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLE1BQU0sRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEgsQ0FBQztJQUVELFlBQVksQ0FBQyxVQUE2QixFQUFFLElBQVksRUFBRSxTQUFpQjtRQUN2RSxJQUFJLElBQUksS0FBSyxxQkFBcUIsRUFBRTtZQUNoQyxPQUFPLENBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUMzRCxDQUFDO1NBQ0w7UUFFRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQscUJBQXFCLENBQ2pCLFNBQTJDLEVBQzNDLFFBQXVCLEVBQ3ZCLFlBQW9CLEVBQ3BCLE9BQWdCLEVBQ2hCLElBQXFCO1FBRXJCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDekIsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3pDLE1BQU07Z0JBQ0YsU0FBUyxDQUFDLFFBQVEsWUFBWSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7U0FDaEk7UUFFRCxPQUFPLElBQUksWUFBWSxDQUFDO1lBQ3BCLEtBQUssRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUs7WUFDL0IsTUFBTTtZQUNOLFFBQVEsRUFBRSxDQUFDO1lBQ1gsT0FBTyxFQUFFLENBQUM7WUFDVixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixNQUFNLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU07WUFDaEQsT0FBTyxFQUFFLENBQUM7WUFDVixJQUFJLEVBQUUsQ0FBQztZQUNQLFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVztZQUNqQyxVQUFVLEVBQUUsQ0FBQztZQUNiLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztZQUNyQixlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsZUFBZTtZQUM5RixhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsYUFBYTtZQUN4RixVQUFVLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJO1lBQ2hDLFdBQVcsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUs7WUFDbEMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxZQUFZO1lBQ25DLFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVztZQUNqQyxXQUFXLEVBQUUsS0FBSztZQUNsQixXQUFXLEVBQUUsS0FBSztZQUNsQixZQUFZO1lBQ1osS0FBSyxFQUFFLFNBQVMsQ0FBQyxRQUFRLFlBQVksaUJBQWlCO1lBQ3RELE9BQU8sRUFBRSxTQUFTLENBQUMsUUFBUSxZQUFZLG1CQUFtQjtTQUM3RCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBWTtRQUMxQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUM7SUFDbEUsQ0FBQztJQUVPLDJCQUEyQixDQUFDLFVBQThDLEVBQUUsUUFBdUI7UUFDdkcsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEgsQ0FBQztJQUVPLGFBQWEsQ0FBSSxVQUE2QixFQUFFLFdBQW1CO1FBQ3ZFLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUFDLENBQUM7SUFDL0UsQ0FBQzs4R0EzSVEsb0JBQW9CO2tIQUFwQixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYsIEluamVjdGFibGUsIEluamVjdG9yLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJhc2VOb2RlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Fic3RyYWN0L2Jhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnQvY29tcG9uZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGVudHNJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2NvbnRlbnRzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDVVNUT01fRUxFTUVOVF9NQVJLRVIsIFRBQkxFX01BUktFUiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jdXN0b20tY29udGVudC1tYXJrZXJzLmNvbnN0JztcbmltcG9ydCB7IERFRkFVTFRfUEFSQUdSQVBIX1NUWUxFIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9jb25zdGFudHMvZWRpdG9yLmNvbnN0JztcbmltcG9ydCB7IERpc3BsYXlUb2tlbiB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvbW9kZWxzL2Rpc3BsYXktdG9rZW4ubW9kZWwnO1xuaW1wb3J0IHsgRGlzdGFuY2VNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvbW9kZWxzL2Rpc3RhbmNlLm1vZGVsJztcbmltcG9ydCB7IERvY3VtZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9kb2N1bWVudCc7XG5pbXBvcnQgeyBEb2N4TW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2RvY3gubW9kZWwnO1xuaW1wb3J0IHsgRWRnZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL2NvbXBvbmVudHMvZWRnZXMvZWRnZXMnO1xuaW1wb3J0IHsgRWxlbWVudE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9lbGVtZW50Lm1vZGVsJztcbmltcG9ydCB7IEVYVEVSTkFMX0VMRU1FTlRfU0VSVklDRSB9IGZyb20gJy4uLy4uLy4uL2V4dGVybmFsLWVsZW1lbnQvZXh0ZXJuYWwtZWxlbWVudHMuY29uc3QnO1xuaW1wb3J0IHsgRXh0ZXJuYWxFbGVtZW50TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9leHRlcm5hbC1lbGVtZW50L21vZGVscy9leHRlcm5hbC1lbGVtZW50Lm1vZGVsJztcbmltcG9ydCB7IEdlbmVyYWxQcm9wZXJ0aWVzTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9leGVjdXRpb24vbW9kZWxzL2dlbmVyYWwtcHJvcGVydGllcy5tb2RlbCc7XG5pbXBvcnQgeyBJQ3VzdG9tQ29tcG9uZW50cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY3VzdG9tLWNvbXBvbmVudHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IElGb250TWV0cmljU2l6ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvaW50ZXJmYWNlcy9mb250LW1ldHJpYy1zaXplLmludGVyZmFjZSc7XG5pbXBvcnQgeyBMaW5lSW5mb01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9tb2RlbHMvbGluZS1pbmZvLm1vZGVsJztcbmltcG9ydCB7IE1hcmdpbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9tb2RlbHMvbWFyZ2luLm1vZGVsJztcbmltcG9ydCB7IE5vZGVySW1hZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9pbWFnZS9jb21wb25lbnRzL2ltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb2RlclRhYkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3RhYi90YWIuY29tcG9uZW50JztcbmltcG9ydCB7IE5vZGVyVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi90YWJsZS9jb21wb25lbnRzL3RhYmxlLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDdXN0b21Db250ZW50U2VydmljZSB7XG4gICAgZWxlbWVudHM6IEV4dGVybmFsRWxlbWVudE1vZGVsW107XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgY29tcG9uZW50U2VydmljZTogQ29tcG9uZW50U2VydmljZSwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50cyA9IHRoaXMuaW5qZWN0b3IuZ2V0KEVYVEVSTkFMX0VMRU1FTlRfU0VSVklDRSkuZWxlbWVudHM7XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVDb21wb25lbnRzKFxuICAgICAgICBtb2RlbDogQ29udGVudHNJbnRlcmZhY2UsXG4gICAgICAgIHNlc3Npb25JZDogbnVtYmVyLFxuICAgICAgICBwcm9wZXJ0aWVzOiBHZW5lcmFsUHJvcGVydGllc01vZGVsLFxuICAgICAgICBkb2N1bWVudDogRG9jdW1lbnRcbiAgICApOiBJQ3VzdG9tQ29tcG9uZW50cyB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9IGRvY3VtZW50LnBhZ2VXaWR0aCAtIChkb2N1bWVudC5wYWdlTWFyZ2luLmxlZnQgKyBkb2N1bWVudC5wYWdlTWFyZ2luLnJpZ2h0KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5jb21wb25lbnRTZXJ2aWNlLmdlbmVyYXRlQ29tcG9uZW50cyhOb2RlckltYWdlQ29tcG9uZW50LCBtb2RlbD8uaW1hZ2VzIHx8IFtdLCB4ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpbWFnZTogeCwgc2Vzc2lvbklkIH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhYmxlczogdGhpcy5jb21wb25lbnRTZXJ2aWNlLmdlbmVyYXRlQ29tcG9uZW50cyhOb2RlclRhYmxlQ29tcG9uZW50LCBtb2RlbD8udGFibGVzIHx8IFtdLCB4ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyB0YWJsZTogeCwgc2Vzc2lvbklkLCBwcm9wZXJ0aWVzIH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhYnM6IHRoaXMuY29tcG9uZW50U2VydmljZS5nZW5lcmF0ZUNvbXBvbmVudHMoTm9kZXJUYWJDb21wb25lbnQsIG1vZGVsPy50YWJzIHx8IFtdLCB4ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyB0YWI6IHgsIHNlc3Npb25JZCB9O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjdXN0b21FbGVtZW50czogdGhpcy5nZW5lcmF0ZUVsZW1lbnRDb21wb25lbnRzKG1vZGVsPy5lbGVtZW50cyB8fCBbXSwgc2Vzc2lvbklkLCBjb250ZW50V2lkdGgpLFxuICAgICAgICAgICAgZWRnZXM6XG4gICAgICAgICAgICAgICAgbW9kZWwgaW5zdGFuY2VvZiBEb2N4TW9kZWxcbiAgICAgICAgICAgICAgICAgICAgPyBuZXcgRWRnZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50U2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwuaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwuZm9vdGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE1hcmdpbk1vZGVsKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IG1vZGVsLm1hcmdpbkxlZnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogbW9kZWwubWFyZ2luUmlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IG1vZGVsLm1hcmdpbkhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogbW9kZWwubWFyZ2luRm9vdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5wYWdlV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllc1xuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVFbGVtZW50Q29tcG9uZW50cyhlbGVtZW50czogRWxlbWVudE1vZGVsW10sIHNlc3Npb25JZDogbnVtYmVyLCBjb250ZW50V2lkdGg6IG51bWJlcik6IENvbXBvbmVudFJlZjxCYXNlTm9kZXJDb21wb25lbnQ+W10ge1xuICAgICAgICByZXR1cm4gZWxlbWVudHMubWFwKHggPT4ge1xuICAgICAgICAgICAgY29uc3QgdHlwZSA9IHRoaXMuZmluZENvbXBvbmVudFR5cGUoeC50eXBlKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZ2VuZXJhdGVDb21wb25lbnQodHlwZSwgeyBjb250ZW50OiB4LCBzZXNzaW9uSWQsIGNvbnRlbnRXaWR0aCB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaXNGcmFnbWVudENvbnRhaW5Db21wb25lbnQoY29tcG9uZW50czogSUN1c3RvbUNvbXBvbmVudHMsIHRleHRGcmFnbWVudDogc3RyaW5nLCBmcmFnbWVudERpc3RhbmNlOiBEaXN0YW5jZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0ZXh0RnJhZ21lbnQuaW5jbHVkZXMoQ1VTVE9NX0VMRU1FTlRfTUFSS0VSKSkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0aGlzLmlzRnJhZ21lbnRDb250YWluQ29tcG9uZW50cyhjb21wb25lbnRzLmltYWdlcywgZnJhZ21lbnREaXN0YW5jZSkgfHxcbiAgICAgICAgICAgICAgICB0aGlzLmlzRnJhZ21lbnRDb250YWluQ29tcG9uZW50cyhjb21wb25lbnRzLnRhYnMsIGZyYWdtZW50RGlzdGFuY2UpIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5pc0ZyYWdtZW50Q29udGFpbkNvbXBvbmVudHMoY29tcG9uZW50cy5jdXN0b21FbGVtZW50cywgZnJhZ21lbnREaXN0YW5jZSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGV4dEZyYWdtZW50LmluY2x1ZGVzKFRBQkxFX01BUktFUikpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRnJhZ21lbnRDb250YWluQ29tcG9uZW50cyhjb21wb25lbnRzLnRhYmxlcywgZnJhZ21lbnREaXN0YW5jZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0Q29tcG9uZW50cyhjb21wb25lbnRzOiBJQ3VzdG9tQ29tcG9uZW50cywgZGlzdGFuY2U6IERpc3RhbmNlTW9kZWwpOiBDb21wb25lbnRSZWY8QmFzZU5vZGVyQ29tcG9uZW50PltdIHtcbiAgICAgICAgY29uc3QgaW1hZ2VzID0gY29tcG9uZW50cy5pbWFnZXMuZmlsdGVyKHggPT4geC5pbnN0YW5jZS5pbnNlcnRJbmRleCA+PSBkaXN0YW5jZS5zdGFydCAmJiB4Lmluc3RhbmNlLmluc2VydEluZGV4IDw9IGRpc3RhbmNlLmVuZCk7XG4gICAgICAgIGNvbnN0IHRhYmxlcyA9IGNvbXBvbmVudHMudGFibGVzLmZpbHRlcih4ID0+IHguaW5zdGFuY2UuaW5zZXJ0SW5kZXggPj0gZGlzdGFuY2Uuc3RhcnQgJiYgeC5pbnN0YW5jZS5pbnNlcnRJbmRleCA8PSBkaXN0YW5jZS5lbmQpO1xuICAgICAgICBjb25zdCB0YWJzID0gY29tcG9uZW50cy50YWJzLmZpbHRlcih4ID0+IHguaW5zdGFuY2UuaW5zZXJ0SW5kZXggPj0gZGlzdGFuY2Uuc3RhcnQgJiYgeC5pbnN0YW5jZS5pbnNlcnRJbmRleCA8PSBkaXN0YW5jZS5lbmQpO1xuICAgICAgICBjb25zdCBjdXN0b20gPSBjb21wb25lbnRzLmN1c3RvbUVsZW1lbnRzLmZpbHRlcihcbiAgICAgICAgICAgIHggPT4geC5pbnN0YW5jZS5pbnNlcnRJbmRleCA+PSBkaXN0YW5jZS5zdGFydCAmJiB4Lmluc3RhbmNlLmluc2VydEluZGV4IDw9IGRpc3RhbmNlLmVuZFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gWy4uLmltYWdlcywgLi4udGFibGVzLCAuLi50YWJzLCAuLi5jdXN0b21dLnNvcnQoKGEsIGIpID0+IGEuaW5zdGFuY2UuaW5zZXJ0SW5kZXggLSBiLmluc3RhbmNlLmluc2VydEluZGV4KTtcbiAgICB9XG5cbiAgICBnZXRDb21wb25lbnQoY29tcG9uZW50czogSUN1c3RvbUNvbXBvbmVudHMsIGNoYXI6IHN0cmluZywgY2hhckluZGV4OiBudW1iZXIpOiBDb21wb25lbnRSZWY8QmFzZU5vZGVyQ29tcG9uZW50PiB7XG4gICAgICAgIGlmIChjaGFyID09PSBDVVNUT01fRUxFTUVOVF9NQVJLRVIpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgdGhpcy5maW5kQ29tcG9uZW50KGNvbXBvbmVudHMuaW1hZ2VzLCBjaGFySW5kZXgpID8/XG4gICAgICAgICAgICAgICAgdGhpcy5maW5kQ29tcG9uZW50KGNvbXBvbmVudHMudGFicywgY2hhckluZGV4KSA/P1xuICAgICAgICAgICAgICAgIHRoaXMuZmluZENvbXBvbmVudChjb21wb25lbnRzLmN1c3RvbUVsZW1lbnRzLCBjaGFySW5kZXgpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZENvbXBvbmVudChjb21wb25lbnRzLnRhYmxlcywgY2hhckluZGV4KTtcbiAgICB9XG5cbiAgICBnZXRUb2tlbkZyb21Db21wb25lbnQoXG4gICAgICAgIGNvbXBvbmVudDogQ29tcG9uZW50UmVmPEJhc2VOb2RlckNvbXBvbmVudD4sXG4gICAgICAgIGxpbmVJbmZvOiBMaW5lSW5mb01vZGVsLFxuICAgICAgICBkaXNwbGF5VmFsdWU6IG51bWJlcixcbiAgICAgICAgaXNGaXJzdDogYm9vbGVhbixcbiAgICAgICAgc2l6ZTogSUZvbnRNZXRyaWNTaXplXG4gICAgKTogRGlzcGxheVRva2VuIHtcbiAgICAgICAgbGV0IGhlaWdodCA9IHNpemUuaGVpZ2h0O1xuICAgICAgICBpZiAoY29tcG9uZW50Lmluc3RhbmNlLmhlaWdodCA+IHNpemUuaGVpZ2h0KSB7XG4gICAgICAgICAgICBoZWlnaHQgPVxuICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pbnN0YW5jZSBpbnN0YW5jZW9mIE5vZGVySW1hZ2VDb21wb25lbnQgPyBjb21wb25lbnQuaW5zdGFuY2UuaGVpZ2h0ICsgc2l6ZS5kZXNjZW50IDogY29tcG9uZW50Lmluc3RhbmNlLmhlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgRGlzcGxheVRva2VuKHtcbiAgICAgICAgICAgIHdpZHRoOiBjb21wb25lbnQuaW5zdGFuY2Uud2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICBiYXNlbGluZTogMCxcbiAgICAgICAgICAgIGNvbnRlbnQ6IDAsXG4gICAgICAgICAgICBmb250OiBzaXplLmZvbnQsXG4gICAgICAgICAgICBhc2NlbnQ6IGNvbXBvbmVudC5pbnN0YW5jZS5oZWlnaHQgPz8gc2l6ZS5oZWlnaHQsXG4gICAgICAgICAgICBkZXNjZW50OiAwLFxuICAgICAgICAgICAgbGluZTogMCxcbiAgICAgICAgICAgIGxpbmVTcGFjaW5nOiBsaW5lSW5mby5saW5lU3BhY2luZyxcbiAgICAgICAgICAgIG11bHRpcGxpZXI6IDAsXG4gICAgICAgICAgICBhbGlnbjogbGluZUluZm8uYWxpZ24sXG4gICAgICAgICAgICBpbmRlbnRGaXJzdExpbmU6IGlzRmlyc3QgPyBsaW5lSW5mby5pbmRlbnQuZmlyc3RMaW5lIDogREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUuaW5kZW50Rmlyc3RMaW5lLFxuICAgICAgICAgICAgaW5kZW50SGFuZ2luZzogaXNGaXJzdCA/IGxpbmVJbmZvLmluZGVudC5oYW5naW5nIDogREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUuaW5kZW50SGFuZ2luZyxcbiAgICAgICAgICAgIGluZGVudExlZnQ6IGxpbmVJbmZvLmluZGVudC5sZWZ0LFxuICAgICAgICAgICAgaW5kZW50UmlnaHQ6IGxpbmVJbmZvLmluZGVudC5yaWdodCxcbiAgICAgICAgICAgIGluZGVudEJlZm9yZTogbGluZUluZm8ub2Zmc2V0QmVmb3JlLFxuICAgICAgICAgICAgaW5kZW50QWZ0ZXI6IGxpbmVJbmZvLm9mZnNldEFmdGVyLFxuICAgICAgICAgICAgaXNQYWdlQnJlYWs6IGZhbHNlLFxuICAgICAgICAgICAgaXNMaW5lQnJlYWs6IGZhbHNlLFxuICAgICAgICAgICAgZGlzcGxheVZhbHVlLFxuICAgICAgICAgICAgaXNUYWI6IGNvbXBvbmVudC5pbnN0YW5jZSBpbnN0YW5jZW9mIE5vZGVyVGFiQ29tcG9uZW50LFxuICAgICAgICAgICAgaXNUYWJsZTogY29tcG9uZW50Lmluc3RhbmNlIGluc3RhbmNlb2YgTm9kZXJUYWJsZUNvbXBvbmVudFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmaW5kQ29tcG9uZW50VHlwZSh0eXBlOiBudW1iZXIpOiBUeXBlPEJhc2VOb2RlckNvbXBvbmVudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50cy5maW5kKHggPT4geC50eXBlID09PSB0eXBlKS5jb21wb25lbnRUeXBlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGcmFnbWVudENvbnRhaW5Db21wb25lbnRzKGNvbXBvbmVudHM6IENvbXBvbmVudFJlZjxCYXNlTm9kZXJDb21wb25lbnQ+W10sIGRpc3RhbmNlOiBEaXN0YW5jZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBjb21wb25lbnRzLnNvbWUoeCA9PiB4Lmluc3RhbmNlLmluc2VydEluZGV4ID49IGRpc3RhbmNlLnN0YXJ0ICYmIHguaW5zdGFuY2UuaW5zZXJ0SW5kZXggPD0gZGlzdGFuY2UuZW5kKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRDb21wb25lbnQ8VD4oY29tcG9uZW50czogQ29tcG9uZW50UmVmPFQ+W10sIGluc2VydEluZGV4OiBudW1iZXIpOiBDb21wb25lbnRSZWY8VD4ge1xuICAgICAgICByZXR1cm4gY29tcG9uZW50cy5maW5kKCh4OiBhbnkpID0+IHguaW5zdGFuY2UuaW5zZXJ0SW5kZXggPT09IGluc2VydEluZGV4KTtcbiAgICB9XG59XG4iXX0=
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNvbnRlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliLytzaGFyZWQvZWRpdG9yL2N1c3RvbS1jb21wb25lbnRzL3NoYXJlZC9zZXJ2aWNlcy9jdXN0b20tY29udGVudC9jdXN0b20tY29udGVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsVUFBVSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUt6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDbkcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFNN0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7OztBQUdoRixNQUFNLE9BQU8sb0JBQW9CO0lBRzdCLFlBQW1CLGdCQUFrQyxFQUFVLFFBQWtCO1FBQTlELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQzdFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDekUs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LFdBQVcsSUFBSSxRQUFRLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwSCxDQUFDO0lBRU8sYUFBYSxDQUFJLFVBQTZCLEVBQUUsV0FBbUI7UUFDdkUsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQUMsQ0FBQztJQUMvRSxDQUFDOzhHQXRJUSxvQkFBb0I7a0hBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmFzZU5vZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYWJzdHJhY3QvYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudC9jb21wb25lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb250ZW50c0ludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvY29udGVudHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IENVU1RPTV9FTEVNRU5UX01BUktFUiwgVEFCTEVfTUFSS0VSIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2N1c3RvbS1jb250ZW50LW1hcmtlcnMuY29uc3QnO1xuaW1wb3J0IHsgREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL2NvbnN0YW50cy9lZGl0b3IuY29uc3QnO1xuaW1wb3J0IHsgRGlzcGxheVRva2VuIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9tb2RlbHMvZGlzcGxheS10b2tlbi5tb2RlbCc7XG5pbXBvcnQgeyBEaXN0YW5jZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9tb2RlbHMvZGlzdGFuY2UubW9kZWwnO1xuaW1wb3J0IHsgRG9jdW1lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL2RvY3VtZW50JztcbmltcG9ydCB7IERvY3hNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvZG9jeC5tb2RlbCc7XG5pbXBvcnQgeyBFZGdlcyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvY29tcG9uZW50cy9lZGdlcy9lZGdlcyc7XG5pbXBvcnQgeyBFbGVtZW50TW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2VsZW1lbnQubW9kZWwnO1xuaW1wb3J0IHsgRVhURVJOQUxfRUxFTUVOVF9TRVJWSUNFIH0gZnJvbSAnLi4vLi4vLi4vZXh0ZXJuYWwtZWxlbWVudC9leHRlcm5hbC1lbGVtZW50cy5jb25zdCc7XG5pbXBvcnQgeyBFeHRlcm5hbEVsZW1lbnRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2V4dGVybmFsLWVsZW1lbnQvbW9kZWxzL2V4dGVybmFsLWVsZW1lbnQubW9kZWwnO1xuaW1wb3J0IHsgR2VuZXJhbFByb3BlcnRpZXNNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL2V4ZWN1dGlvbi9tb2RlbHMvZ2VuZXJhbC1wcm9wZXJ0aWVzLm1vZGVsJztcbmltcG9ydCB7IElDdXN0b21Db21wb25lbnRzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jdXN0b20tY29tcG9uZW50cy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUZvbnRNZXRyaWNTaXplIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9pbnRlcmZhY2VzL2ZvbnQtbWV0cmljLXNpemUuaW50ZXJmYWNlJztcbmltcG9ydCB7IExpbmVJbmZvTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL21vZGVscy9saW5lLWluZm8ubW9kZWwnO1xuaW1wb3J0IHsgTm9kZXJJbWFnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2ltYWdlL2NvbXBvbmVudHMvaW1hZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IE5vZGVyVGFiQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdGFiL3RhYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTm9kZXJUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3RhYmxlL2NvbXBvbmVudHMvdGFibGUuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEN1c3RvbUNvbnRlbnRTZXJ2aWNlIHtcbiAgICBlbGVtZW50czogRXh0ZXJuYWxFbGVtZW50TW9kZWxbXTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjb21wb25lbnRTZXJ2aWNlOiBDb21wb25lbnRTZXJ2aWNlLCBwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICB0aGlzLmVsZW1lbnRzID0gdGhpcy5pbmplY3Rvci5nZXQoRVhURVJOQUxfRUxFTUVOVF9TRVJWSUNFKS5lbGVtZW50cztcbiAgICB9XG5cbiAgICBnZW5lcmF0ZUNvbXBvbmVudHMoXG4gICAgICAgIG1vZGVsOiBDb250ZW50c0ludGVyZmFjZSxcbiAgICAgICAgc2Vzc2lvbklkOiBudW1iZXIsXG4gICAgICAgIGdlbmVyYWxQcm9wZXJ0aWVzOiBHZW5lcmFsUHJvcGVydGllc01vZGVsLFxuICAgICAgICBkb2N1bWVudDogRG9jdW1lbnRcbiAgICApOiBJQ3VzdG9tQ29tcG9uZW50cyB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9IGRvY3VtZW50LnBhZ2VXaWR0aCAtIChkb2N1bWVudC5wYWdlTWFyZ2luLmxlZnQgKyBkb2N1bWVudC5wYWdlTWFyZ2luLnJpZ2h0KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5jb21wb25lbnRTZXJ2aWNlLmdlbmVyYXRlQ29tcG9uZW50cyhOb2RlckltYWdlQ29tcG9uZW50LCBtb2RlbD8uaW1hZ2VzIHx8IFtdLCB4ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpbWFnZTogeCwgc2Vzc2lvbklkLCBnZW5lcmFsUHJvcGVydGllcyB9O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YWJsZXM6IHRoaXMuY29tcG9uZW50U2VydmljZS5nZW5lcmF0ZUNvbXBvbmVudHMoTm9kZXJUYWJsZUNvbXBvbmVudCwgbW9kZWw/LnRhYmxlcyB8fCBbXSwgeCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdGFibGU6IHgsIHNlc3Npb25JZCwgZ2VuZXJhbFByb3BlcnRpZXMgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFiczogdGhpcy5jb21wb25lbnRTZXJ2aWNlLmdlbmVyYXRlQ29tcG9uZW50cyhOb2RlclRhYkNvbXBvbmVudCwgbW9kZWw/LnRhYnMgfHwgW10sIHggPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHRhYjogeCwgc2Vzc2lvbklkLCBnZW5lcmFsUHJvcGVydGllcyB9O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjdXN0b21FbGVtZW50czogdGhpcy5nZW5lcmF0ZUVsZW1lbnRDb21wb25lbnRzKG1vZGVsPy5lbGVtZW50cyB8fCBbXSwgc2Vzc2lvbklkLCBjb250ZW50V2lkdGgpLFxuICAgICAgICAgICAgZWRnZXM6XG4gICAgICAgICAgICAgICAgbW9kZWwgaW5zdGFuY2VvZiBEb2N4TW9kZWxcbiAgICAgICAgICAgICAgICAgICAgPyBuZXcgRWRnZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50U2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwuaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwuZm9vdGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucGFnZU1hcmdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucGFnZVdpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYWxQcm9wZXJ0aWVzXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZW5lcmF0ZUVsZW1lbnRDb21wb25lbnRzKGVsZW1lbnRzOiBFbGVtZW50TW9kZWxbXSwgc2Vzc2lvbklkOiBudW1iZXIsIGNvbnRlbnRXaWR0aDogbnVtYmVyKTogQ29tcG9uZW50UmVmPEJhc2VOb2RlckNvbXBvbmVudD5bXSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50cy5tYXAoeCA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlID0gdGhpcy5maW5kQ29tcG9uZW50VHlwZSh4LnR5cGUpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50U2VydmljZS5nZW5lcmF0ZUNvbXBvbmVudCh0eXBlLCB7IGNvbnRlbnQ6IHgsIHNlc3Npb25JZCwgY29udGVudFdpZHRoIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpc0ZyYWdtZW50Q29udGFpbkNvbXBvbmVudChjb21wb25lbnRzOiBJQ3VzdG9tQ29tcG9uZW50cywgdGV4dEZyYWdtZW50OiBzdHJpbmcsIGZyYWdtZW50RGlzdGFuY2U6IERpc3RhbmNlTW9kZWwpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRleHRGcmFnbWVudC5pbmNsdWRlcyhDVVNUT01fRUxFTUVOVF9NQVJLRVIpKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRoaXMuaXNGcmFnbWVudENvbnRhaW5Db21wb25lbnRzKGNvbXBvbmVudHMuaW1hZ2VzLCBmcmFnbWVudERpc3RhbmNlKSB8fFxuICAgICAgICAgICAgICAgIHRoaXMuaXNGcmFnbWVudENvbnRhaW5Db21wb25lbnRzKGNvbXBvbmVudHMudGFicywgZnJhZ21lbnREaXN0YW5jZSkgfHxcbiAgICAgICAgICAgICAgICB0aGlzLmlzRnJhZ21lbnRDb250YWluQ29tcG9uZW50cyhjb21wb25lbnRzLmN1c3RvbUVsZW1lbnRzLCBmcmFnbWVudERpc3RhbmNlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0ZXh0RnJhZ21lbnQuaW5jbHVkZXMoVEFCTEVfTUFSS0VSKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNGcmFnbWVudENvbnRhaW5Db21wb25lbnRzKGNvbXBvbmVudHMudGFibGVzLCBmcmFnbWVudERpc3RhbmNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXRDb21wb25lbnRzKGNvbXBvbmVudHM6IElDdXN0b21Db21wb25lbnRzLCBkaXN0YW5jZTogRGlzdGFuY2VNb2RlbCk6IENvbXBvbmVudFJlZjxCYXNlTm9kZXJDb21wb25lbnQ+W10ge1xuICAgICAgICBjb25zdCBpbWFnZXMgPSBjb21wb25lbnRzLmltYWdlcy5maWx0ZXIoeCA9PiB4Lmluc3RhbmNlLmluc2VydEluZGV4ID49IGRpc3RhbmNlLnN0YXJ0ICYmIHguaW5zdGFuY2UuaW5zZXJ0SW5kZXggPD0gZGlzdGFuY2UuZW5kKTtcbiAgICAgICAgY29uc3QgdGFibGVzID0gY29tcG9uZW50cy50YWJsZXMuZmlsdGVyKHggPT4geC5pbnN0YW5jZS5pbnNlcnRJbmRleCA+PSBkaXN0YW5jZS5zdGFydCAmJiB4Lmluc3RhbmNlLmluc2VydEluZGV4IDw9IGRpc3RhbmNlLmVuZCk7XG4gICAgICAgIGNvbnN0IHRhYnMgPSBjb21wb25lbnRzLnRhYnMuZmlsdGVyKHggPT4geC5pbnN0YW5jZS5pbnNlcnRJbmRleCA+PSBkaXN0YW5jZS5zdGFydCAmJiB4Lmluc3RhbmNlLmluc2VydEluZGV4IDw9IGRpc3RhbmNlLmVuZCk7XG4gICAgICAgIGNvbnN0IGN1c3RvbSA9IGNvbXBvbmVudHMuY3VzdG9tRWxlbWVudHMuZmlsdGVyKFxuICAgICAgICAgICAgeCA9PiB4Lmluc3RhbmNlLmluc2VydEluZGV4ID49IGRpc3RhbmNlLnN0YXJ0ICYmIHguaW5zdGFuY2UuaW5zZXJ0SW5kZXggPD0gZGlzdGFuY2UuZW5kXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBbLi4uaW1hZ2VzLCAuLi50YWJsZXMsIC4uLnRhYnMsIC4uLmN1c3RvbV0uc29ydCgoYSwgYikgPT4gYS5pbnN0YW5jZS5pbnNlcnRJbmRleCAtIGIuaW5zdGFuY2UuaW5zZXJ0SW5kZXgpO1xuICAgIH1cblxuICAgIGdldENvbXBvbmVudChjb21wb25lbnRzOiBJQ3VzdG9tQ29tcG9uZW50cywgY2hhcjogc3RyaW5nLCBjaGFySW5kZXg6IG51bWJlcik6IENvbXBvbmVudFJlZjxCYXNlTm9kZXJDb21wb25lbnQ+IHtcbiAgICAgICAgaWYgKGNoYXIgPT09IENVU1RPTV9FTEVNRU5UX01BUktFUikge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0aGlzLmZpbmRDb21wb25lbnQoY29tcG9uZW50cy5pbWFnZXMsIGNoYXJJbmRleCkgPz9cbiAgICAgICAgICAgICAgICB0aGlzLmZpbmRDb21wb25lbnQoY29tcG9uZW50cy50YWJzLCBjaGFySW5kZXgpID8/XG4gICAgICAgICAgICAgICAgdGhpcy5maW5kQ29tcG9uZW50KGNvbXBvbmVudHMuY3VzdG9tRWxlbWVudHMsIGNoYXJJbmRleClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5maW5kQ29tcG9uZW50KGNvbXBvbmVudHMudGFibGVzLCBjaGFySW5kZXgpO1xuICAgIH1cblxuICAgIGdldFRva2VuRnJvbUNvbXBvbmVudChcbiAgICAgICAgY29tcG9uZW50OiBDb21wb25lbnRSZWY8QmFzZU5vZGVyQ29tcG9uZW50PixcbiAgICAgICAgbGluZUluZm86IExpbmVJbmZvTW9kZWwsXG4gICAgICAgIGRpc3BsYXlWYWx1ZTogbnVtYmVyLFxuICAgICAgICBpc0ZpcnN0OiBib29sZWFuLFxuICAgICAgICBzaXplOiBJRm9udE1ldHJpY1NpemVcbiAgICApOiBEaXNwbGF5VG9rZW4ge1xuICAgICAgICBsZXQgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQ7XG4gICAgICAgIGlmIChjb21wb25lbnQuaW5zdGFuY2UuaGVpZ2h0ID4gc2l6ZS5oZWlnaHQpIHtcbiAgICAgICAgICAgIGhlaWdodCA9XG4gICAgICAgICAgICAgICAgY29tcG9uZW50Lmluc3RhbmNlIGluc3RhbmNlb2YgTm9kZXJJbWFnZUNvbXBvbmVudCA/IGNvbXBvbmVudC5pbnN0YW5jZS5oZWlnaHQgKyBzaXplLmRlc2NlbnQgOiBjb21wb25lbnQuaW5zdGFuY2UuaGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBEaXNwbGF5VG9rZW4oe1xuICAgICAgICAgICAgd2lkdGg6IGNvbXBvbmVudC5pbnN0YW5jZS53aWR0aCxcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIGJhc2VsaW5lOiAwLFxuICAgICAgICAgICAgY29udGVudDogMCxcbiAgICAgICAgICAgIGZvbnQ6IHNpemUuZm9udCxcbiAgICAgICAgICAgIGFzY2VudDogY29tcG9uZW50Lmluc3RhbmNlLmhlaWdodCA/PyBzaXplLmhlaWdodCxcbiAgICAgICAgICAgIGRlc2NlbnQ6IDAsXG4gICAgICAgICAgICBsaW5lOiAwLFxuICAgICAgICAgICAgbGluZVNwYWNpbmc6IGxpbmVJbmZvLmxpbmVTcGFjaW5nLFxuICAgICAgICAgICAgbXVsdGlwbGllcjogMCxcbiAgICAgICAgICAgIGFsaWduOiBsaW5lSW5mby5hbGlnbixcbiAgICAgICAgICAgIGluZGVudEZpcnN0TGluZTogaXNGaXJzdCA/IGxpbmVJbmZvLmluZGVudC5maXJzdExpbmUgOiBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5pbmRlbnRGaXJzdExpbmUsXG4gICAgICAgICAgICBpbmRlbnRIYW5naW5nOiBpc0ZpcnN0ID8gbGluZUluZm8uaW5kZW50LmhhbmdpbmcgOiBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5pbmRlbnRIYW5naW5nLFxuICAgICAgICAgICAgaW5kZW50TGVmdDogbGluZUluZm8uaW5kZW50LmxlZnQsXG4gICAgICAgICAgICBpbmRlbnRSaWdodDogbGluZUluZm8uaW5kZW50LnJpZ2h0LFxuICAgICAgICAgICAgaW5kZW50QmVmb3JlOiBsaW5lSW5mby5vZmZzZXRCZWZvcmUsXG4gICAgICAgICAgICBpbmRlbnRBZnRlcjogbGluZUluZm8ub2Zmc2V0QWZ0ZXIsXG4gICAgICAgICAgICBpc1BhZ2VCcmVhazogZmFsc2UsXG4gICAgICAgICAgICBpc0xpbmVCcmVhazogZmFsc2UsXG4gICAgICAgICAgICBkaXNwbGF5VmFsdWUsXG4gICAgICAgICAgICBpc1RhYjogY29tcG9uZW50Lmluc3RhbmNlIGluc3RhbmNlb2YgTm9kZXJUYWJDb21wb25lbnQsXG4gICAgICAgICAgICBpc1RhYmxlOiBjb21wb25lbnQuaW5zdGFuY2UgaW5zdGFuY2VvZiBOb2RlclRhYmxlQ29tcG9uZW50XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZpbmRDb21wb25lbnRUeXBlKHR5cGU6IG51bWJlcik6IFR5cGU8QmFzZU5vZGVyQ29tcG9uZW50PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRzLmZpbmQoeCA9PiB4LnR5cGUgPT09IHR5cGUpLmNvbXBvbmVudFR5cGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZyYWdtZW50Q29udGFpbkNvbXBvbmVudHMoY29tcG9uZW50czogQ29tcG9uZW50UmVmPEJhc2VOb2RlckNvbXBvbmVudD5bXSwgZGlzdGFuY2U6IERpc3RhbmNlTW9kZWwpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudHMuc29tZSh4ID0+IHguaW5zdGFuY2UuaW5zZXJ0SW5kZXggPj0gZGlzdGFuY2Uuc3RhcnQgJiYgeC5pbnN0YW5jZS5pbnNlcnRJbmRleCA8PSBkaXN0YW5jZS5lbmQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZENvbXBvbmVudDxUPihjb21wb25lbnRzOiBDb21wb25lbnRSZWY8VD5bXSwgaW5zZXJ0SW5kZXg6IG51bWJlcik6IENvbXBvbmVudFJlZjxUPiB7XG4gICAgICAgIHJldHVybiBjb21wb25lbnRzLmZpbmQoKHg6IGFueSkgPT4geC5pbnN0YW5jZS5pbnNlcnRJbmRleCA9PT0gaW5zZXJ0SW5kZXgpO1xuICAgIH1cbn1cbiJdfQ==
|