@sapui5/sap.fe.templates 1.104.1 → 1.105.0
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/package.json +3 -3
- package/src/sap/fe/templates/.library +1 -1
- package/src/sap/fe/templates/AnalyticalListPage/Component.js +2 -2
- package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.js +1 -1
- package/src/sap/fe/templates/Feedback.js +1 -1
- package/src/sap/fe/templates/ListComponent.js +2 -2
- package/src/sap/fe/templates/ListReport/Component.js +2 -2
- package/src/sap/fe/templates/ListReport/ExtensionAPI.js +5 -3
- package/src/sap/fe/templates/ListReport/ExtensionAPI.ts +2 -1
- package/src/sap/fe/templates/ListReport/ListReport.view.xml +10 -73
- package/src/sap/fe/templates/ListReport/ListReportController.controller.js +30 -116
- package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +25 -105
- package/src/sap/fe/templates/ListReport/ListReportTemplating.js +1 -1
- package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js +166 -62
- package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.ts +129 -41
- package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +1 -1
- package/src/sap/fe/templates/ListReport/overrides/Share.js +1 -1
- package/src/sap/fe/templates/ListReport/overrides/ViewState.js +1 -1
- package/src/sap/fe/templates/ListReport/view/fragments/Chart.fragment.xml +3 -0
- package/src/sap/fe/templates/ListReport/view/fragments/CollectionVisualization.fragment.xml +10 -4
- package/src/sap/fe/templates/{controls → ListReport/view/fragments}/MacroChart.fragment.xml +3 -2
- package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.js +3 -3
- package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.ts +6 -2
- package/src/sap/fe/templates/{controls → ListReport/view/fragments}/Table.fragment.xml +6 -6
- package/src/sap/fe/templates/ListReport/view/fragments/VariantManagement.fragment.xml +31 -0
- package/src/sap/fe/templates/ObjectPage/Component.js +9 -9
- package/src/sap/fe/templates/ObjectPage/Component.ts +10 -6
- package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +10 -5
- package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +6 -2
- package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +48 -143
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +48 -34
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +45 -29
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +15 -3
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +9 -1
- package/src/sap/fe/templates/ObjectPage/components/DraftHandlerButton.js +178 -0
- package/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +2 -2
- package/src/sap/fe/templates/ObjectPage/controls/StashableVBox.js +2 -2
- package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.js +2 -2
- package/src/sap/fe/templates/ObjectPage/designtime/FlexBox.designtime.js +1 -1
- package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.js +1 -1
- package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.js +1 -1
- package/src/sap/fe/templates/ObjectPage/flexibility/StashableHBox.flexibility.js +1 -1
- package/src/sap/fe/templates/ObjectPage/flexibility/StashableVBox.flexibility.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/Paginator.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/Share.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +1 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/Chart.fragment.xml +13 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPoint.fragment.xml +1 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/Heading.fragment.xml +2 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeadingTitle.fragment.xml +2 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/MacroChart.fragment.xml +22 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +7 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/Section.fragment.xml +8 -49
- package/src/sap/fe/templates/ObjectPage/view/fragments/SectionPresentationVisualization.fragment.xml +1 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/Table.fragment.xml +23 -0
- package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +2 -2
- package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +2 -2
- package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +2 -2
- package/src/sap/fe/templates/RootContainer/overrides/EditFlow.js +1 -1
- package/src/sap/fe/templates/TableScroller.js +1 -1
- package/src/sap/fe/templates/library.js +2 -2
- package/src/sap/fe/templates/messagebundle_bg.properties +2 -2
- package/src/sap/fe/templates/messagebundle_cy.properties +2 -2
- package/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +2 -7
- package/src/sap/fe/templates/messagebundle_lv.properties +2 -2
- package/src/sap/fe/templates/ListReport/view/fragments/MultipleModeOld.fragment.xml +0 -50
- package/src/sap/fe/templates/controls/Chart.fragment.xml +0 -25
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import type ResourceBundle from "sap/base/i18n/ResourceBundle";
|
|
2
2
|
import Log from "sap/base/Log";
|
|
3
|
+
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
4
|
+
import type FilterBar from "sap/fe/core/controls/FilterBar";
|
|
3
5
|
import { aggregation, association, defineUI5Class, event, property } from "sap/fe/core/helpers/ClassSupport";
|
|
4
6
|
import MessageStrip from "sap/fe/core/helpers/MessageStrip";
|
|
5
7
|
import DelegateUtil from "sap/fe/macros/DelegateUtil";
|
|
6
8
|
import MacroAPI from "sap/fe/macros/MacroAPI";
|
|
7
9
|
import IconTabBar from "sap/m/IconTabBar";
|
|
8
10
|
import IconTabFilter from "sap/m/IconTabFilter";
|
|
11
|
+
import type CoreEvent from "sap/ui/base/Event";
|
|
9
12
|
import Control from "sap/ui/core/Control";
|
|
10
13
|
import Core from "sap/ui/core/Core";
|
|
11
14
|
import RenderManager from "sap/ui/core/RenderManager";
|
|
15
|
+
import ControlPersonalizationWriteAPI from "sap/ui/fl/write/api/ControlPersonalizationWriteAPI";
|
|
12
16
|
import JSONModel from "sap/ui/model/json/JSONModel";
|
|
13
17
|
import Model from "sap/ui/model/Model";
|
|
14
18
|
|
|
@@ -23,7 +27,6 @@ export type InnerControlType = MacroAPI &
|
|
|
23
27
|
|
|
24
28
|
type MessageStripProperties = {
|
|
25
29
|
entityTypePath: string;
|
|
26
|
-
filterControl: Control;
|
|
27
30
|
ignoredFields: any[];
|
|
28
31
|
resourceBundle: ResourceBundle;
|
|
29
32
|
title: string;
|
|
@@ -51,41 +54,120 @@ class MultipleModeControl extends Control {
|
|
|
51
54
|
@association({ type: "sap.ui.core.Control", multiple: true })
|
|
52
55
|
innerControls!: string[];
|
|
53
56
|
|
|
57
|
+
@association({ type: "sap.fe.core.controls.FilterBar", multiple: false })
|
|
58
|
+
filterControl!: string;
|
|
59
|
+
|
|
54
60
|
@event()
|
|
55
61
|
select!: Function;
|
|
56
62
|
|
|
57
63
|
onBeforeRendering() {
|
|
58
64
|
this.getTabsModel(); // Generate the model which is mandatory for some bindings
|
|
59
|
-
|
|
65
|
+
|
|
66
|
+
const oFilterBarAPI = this._getFilterControl()?.getParent();
|
|
60
67
|
this._getAllInnerControls().forEach((oMacroAPI) => {
|
|
61
68
|
if (this.showCounts) {
|
|
62
69
|
oMacroAPI.attachEvent("internalDataRequested", this._refreshTabsCount.bind(this));
|
|
63
70
|
}
|
|
64
71
|
oMacroAPI.suspendBinding?.();
|
|
65
72
|
});
|
|
73
|
+
if (oFilterBarAPI) {
|
|
74
|
+
oFilterBarAPI.attachEvent("internalSearch", this._onSearch.bind(this));
|
|
75
|
+
oFilterBarAPI.attachEvent("internalFilterChanged", this._onFilterChanged.bind(this));
|
|
76
|
+
}
|
|
66
77
|
}
|
|
67
78
|
|
|
68
79
|
onAfterRendering() {
|
|
69
|
-
this.
|
|
80
|
+
this.getSelectedInnerControl()?.resumeBinding?.(!this.getProperty("freezeContent"));
|
|
70
81
|
}
|
|
71
82
|
|
|
72
83
|
static render(oRm: RenderManager, oControl: MultipleModeControl) {
|
|
73
84
|
oRm.renderControl(oControl.content);
|
|
74
85
|
}
|
|
75
86
|
|
|
87
|
+
/**
|
|
88
|
+
* Gets the entity set of the displayed visualization.
|
|
89
|
+
*
|
|
90
|
+
* @returns {string} The entity set
|
|
91
|
+
*/
|
|
92
|
+
getDisplayedEntitySet(): string | undefined {
|
|
93
|
+
return this.getSelectedInnerControl()?.content?.data("targetCollectionPath").slice(1);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Gets the model containing information related to the IconTabFilters.
|
|
98
|
+
*
|
|
99
|
+
* @returns {sap.ui.model.Model | undefined} The model
|
|
100
|
+
*/
|
|
101
|
+
getTabsModel(): Model | undefined {
|
|
102
|
+
const sTabsModel = "tabsInternal";
|
|
103
|
+
const oContent = this.content;
|
|
104
|
+
if (!oContent) {
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
let oModel = oContent.getModel(sTabsModel);
|
|
108
|
+
if (!oModel) {
|
|
109
|
+
oModel = new JSONModel({});
|
|
110
|
+
oContent.setModel(oModel, sTabsModel);
|
|
111
|
+
}
|
|
112
|
+
return oModel;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Gets the inner control of the displayed tab.
|
|
117
|
+
*
|
|
118
|
+
* @returns {InnerControlType | undefined} The control
|
|
119
|
+
*/
|
|
120
|
+
getSelectedInnerControl(): InnerControlType | undefined {
|
|
121
|
+
const oSelectedTab = this.content.getItems().find((oItem) => (oItem as IconTabFilter).getKey() === this.content.getSelectedKey());
|
|
122
|
+
return oSelectedTab
|
|
123
|
+
? this._getAllInnerControls().find((oMacroAPI) => this._getTabFromInnerControl(oMacroAPI) === oSelectedTab)
|
|
124
|
+
: undefined;
|
|
125
|
+
}
|
|
126
|
+
|
|
76
127
|
/**
|
|
77
128
|
* Manages the binding of all inner controls when the selected IconTabFilter is changed.
|
|
78
129
|
*
|
|
79
130
|
* @param {sap.ui.base.Event} oEvent Event fired by the IconTabBar
|
|
80
131
|
*/
|
|
81
|
-
handleTabChange(oEvent: any): void {
|
|
132
|
+
static handleTabChange(oEvent: any): void {
|
|
133
|
+
const oIconTabBar = oEvent.getSource();
|
|
134
|
+
const oMultiControl = oIconTabBar.getParent();
|
|
135
|
+
|
|
82
136
|
const mParameters = oEvent.getParameters();
|
|
137
|
+
oMultiControl._setInnerBinding(true);
|
|
138
|
+
const sPreviousSelectedKey = mParameters?.previousKey;
|
|
139
|
+
const sSelectedKey = mParameters?.selectedKey;
|
|
140
|
+
|
|
141
|
+
if (sSelectedKey && sPreviousSelectedKey !== sSelectedKey) {
|
|
142
|
+
const oFilterBar = oMultiControl._getFilterControl();
|
|
143
|
+
if (oFilterBar && !oMultiControl.getProperty("freezeContent")) {
|
|
144
|
+
if (!oMultiControl.getSelectedInnerControl()) {
|
|
145
|
+
//custom tab
|
|
146
|
+
oMultiControl._refreshCustomView(oFilterBar.getFilterConditions(), "tabChanged");
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
ControlPersonalizationWriteAPI.add({
|
|
150
|
+
changes: [
|
|
151
|
+
{
|
|
152
|
+
changeSpecificData: {
|
|
153
|
+
changeType: "selectIconTabBarFilter",
|
|
154
|
+
content: {
|
|
155
|
+
selectedKey: sSelectedKey,
|
|
156
|
+
previousSelectedKey: sPreviousSelectedKey
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
selectorElement: oIconTabBar
|
|
160
|
+
}
|
|
161
|
+
]
|
|
162
|
+
});
|
|
163
|
+
}
|
|
83
164
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
165
|
+
oMultiControl._getViewController()?.getExtensionAPI()?.updateAppState();
|
|
166
|
+
|
|
167
|
+
oMultiControl.fireEvent("select", {
|
|
168
|
+
iconTabBar: oIconTabBar,
|
|
169
|
+
selectedKey: sSelectedKey,
|
|
170
|
+
previousKey: sPreviousSelectedKey
|
|
89
171
|
});
|
|
90
172
|
}
|
|
91
173
|
|
|
@@ -109,7 +191,7 @@ class MultipleModeControl extends Control {
|
|
|
109
191
|
this.setProperty("countsOutDated", bValue);
|
|
110
192
|
// if the current tab is not configured with no inner Control
|
|
111
193
|
// the tab counts must be manually refreshed since no Macro API will sent event internalDataRequested
|
|
112
|
-
if (bValue && !this.
|
|
194
|
+
if (bValue && !this.getSelectedInnerControl()) {
|
|
113
195
|
this._refreshTabsCount();
|
|
114
196
|
}
|
|
115
197
|
}
|
|
@@ -129,13 +211,12 @@ class MultipleModeControl extends Control {
|
|
|
129
211
|
/**
|
|
130
212
|
* Updates the internal model with the properties that are not applicable on each IconTabFilter (containing inner control) according to the entityType of the filter control.
|
|
131
213
|
*
|
|
132
|
-
* @param {sap.ui.mdc.FilterBar} oFilterControl The filter control
|
|
133
|
-
* @param {string} sEntityTypePath The entity type of the filter control
|
|
134
214
|
* @param oResourceBundle
|
|
135
215
|
*/
|
|
136
|
-
|
|
216
|
+
_updateMultiTabNotApplicableFields(oResourceBundle: ResourceBundle) {
|
|
137
217
|
const tabsModel = this.getTabsModel();
|
|
138
|
-
|
|
218
|
+
const oFilterControl = this._getFilterControl() as Control;
|
|
219
|
+
if (tabsModel && oFilterControl) {
|
|
139
220
|
const results: any = {};
|
|
140
221
|
this._getAllInnerControls().forEach((oMacroAPI) => {
|
|
141
222
|
const oTab = this._getTabFromInnerControl(oMacroAPI);
|
|
@@ -146,8 +227,7 @@ class MultipleModeControl extends Control {
|
|
|
146
227
|
notApplicable: {
|
|
147
228
|
fields: mIgnoredFields,
|
|
148
229
|
title: this._setTabMessageStrip({
|
|
149
|
-
entityTypePath:
|
|
150
|
-
filterControl: oFilterControl,
|
|
230
|
+
entityTypePath: oFilterControl.data("entityType"),
|
|
151
231
|
ignoredFields: mIgnoredFields,
|
|
152
232
|
resourceBundle: oResourceBundle,
|
|
153
233
|
title: oTab.getText()
|
|
@@ -160,25 +240,6 @@ class MultipleModeControl extends Control {
|
|
|
160
240
|
}
|
|
161
241
|
}
|
|
162
242
|
|
|
163
|
-
/**
|
|
164
|
-
* Gets the model containing information related to the IconTabFilters.
|
|
165
|
-
*
|
|
166
|
-
* @returns {sap.ui.model.Model | undefined} The model
|
|
167
|
-
*/
|
|
168
|
-
getTabsModel(): Model | undefined {
|
|
169
|
-
const sTabsModel = "tabsInternal";
|
|
170
|
-
const oContent = this.content;
|
|
171
|
-
if (!oContent) {
|
|
172
|
-
return undefined;
|
|
173
|
-
}
|
|
174
|
-
let oModel = oContent.getModel(sTabsModel);
|
|
175
|
-
if (!oModel) {
|
|
176
|
-
oModel = new JSONModel({});
|
|
177
|
-
oContent.setModel(oModel, sTabsModel);
|
|
178
|
-
}
|
|
179
|
-
return oModel;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
243
|
_getAllInnerControls(bOnlyForVisibleTab = false): InnerControlType[] {
|
|
183
244
|
return (
|
|
184
245
|
this.innerControls.reduce((aInnerControls: InnerControlType[], sInnerControl: string) => {
|
|
@@ -193,6 +254,10 @@ class MultipleModeControl extends Control {
|
|
|
193
254
|
);
|
|
194
255
|
}
|
|
195
256
|
|
|
257
|
+
_getFilterControl(): FilterBar | undefined {
|
|
258
|
+
return Core.byId(this.filterControl) as FilterBar | undefined;
|
|
259
|
+
}
|
|
260
|
+
|
|
196
261
|
_getTabFromInnerControl(oControl: Control): IconTabFilter | undefined {
|
|
197
262
|
const sSupportedClass = IconTabFilter.getMetadata().getName();
|
|
198
263
|
let oTab: any = oControl;
|
|
@@ -202,11 +267,17 @@ class MultipleModeControl extends Control {
|
|
|
202
267
|
return oTab && oTab.isA(sSupportedClass) ? (oTab as IconTabFilter) : undefined;
|
|
203
268
|
}
|
|
204
269
|
|
|
205
|
-
|
|
206
|
-
const
|
|
207
|
-
return
|
|
208
|
-
|
|
209
|
-
|
|
270
|
+
_getViewController() {
|
|
271
|
+
const oView = CommonUtils.getTargetView(this);
|
|
272
|
+
return oView && oView.getController();
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
_refreshCustomView(oFilterConditions: any, sRefreshCause: string) {
|
|
276
|
+
this._getViewController()?.onViewNeedsRefresh?.({
|
|
277
|
+
filterConditions: oFilterConditions,
|
|
278
|
+
currentTabId: this.content.getSelectedKey(),
|
|
279
|
+
refreshCause: sRefreshCause
|
|
280
|
+
});
|
|
210
281
|
}
|
|
211
282
|
|
|
212
283
|
_refreshTabsCount(): void {
|
|
@@ -242,7 +313,7 @@ class MultipleModeControl extends Control {
|
|
|
242
313
|
_setTabMessageStrip(properties: MessageStripProperties) {
|
|
243
314
|
let sText = "";
|
|
244
315
|
const aIgnoredFields = properties.ignoredFields;
|
|
245
|
-
const oFilterControl =
|
|
316
|
+
const oFilterControl = this._getFilterControl() as Control;
|
|
246
317
|
if (oFilterControl && Array.isArray(aIgnoredFields) && aIgnoredFields.length > 0 && properties.title) {
|
|
247
318
|
const aIgnoredLabels = MessageStrip.getLabels(
|
|
248
319
|
aIgnoredFields,
|
|
@@ -254,6 +325,23 @@ class MultipleModeControl extends Control {
|
|
|
254
325
|
return sText;
|
|
255
326
|
}
|
|
256
327
|
}
|
|
328
|
+
|
|
329
|
+
_onSearch(oEvent: CoreEvent): void {
|
|
330
|
+
this.setCountsOutDated(true);
|
|
331
|
+
this.setFreezeContent(false);
|
|
332
|
+
if (this.getSelectedInnerControl()) {
|
|
333
|
+
this._updateMultiTabNotApplicableFields(this._getViewController()?.oResourceBundle);
|
|
334
|
+
} else {
|
|
335
|
+
// custom tab
|
|
336
|
+
this._refreshCustomView(oEvent.getParameter("conditions"), "search");
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
_onFilterChanged(oEvent: CoreEvent): void {
|
|
341
|
+
if (oEvent.getParameter("conditionsBased")) {
|
|
342
|
+
this.setFreezeContent(true);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
257
345
|
}
|
|
258
346
|
|
|
259
347
|
export default MultipleModeControl;
|
|
@@ -61,4 +61,4 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/macros/filter/FilterUtils"], f
|
|
|
61
61
|
};
|
|
62
62
|
return IntentBasedNavigationOverride;
|
|
63
63
|
}, false);
|
|
64
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZSIsImFkYXB0TmF2aWdhdGlvbkNvbnRleHQiLCJvU2VsZWN0aW9uVmFyaWFudCIsIm9UYXJnZXRJbmZvIiwib1ZpZXciLCJnZXRWaWV3Iiwib0NvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwib0ZpbHRlckJhciIsIl9nZXRGaWx0ZXJCYXJDb250cm9sIiwiaXNFbXB0eSIsIm9WaWV3RGF0YSIsImdldFZpZXdEYXRhIiwic1Jvb3RQYXRoIiwiZnVsbENvbnRleHRQYXRoIiwiZW50aXR5U2V0Iiwib0ZpbHRlckJhckNvbmRpdGlvbnMiLCJPYmplY3QiLCJhc3NpZ24iLCJiYXNlIiwiZmlsdGVyQmFyQ29uZGl0aW9ucyIsImFQYXJhbWV0ZXJzIiwiY29udGV4dFBhdGgiLCJvTWV0YU1vZGVsIiwiZ2V0TW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJvUGFyYW1ldGVySW5mbyIsIkNvbW1vblV0aWxzIiwiZ2V0UGFyYW1ldGVySW5mbyIsIm9QYXJhbVByb3BlcnRpZXMiLCJwYXJhbWV0ZXJQcm9wZXJ0aWVzIiwia2V5cyIsIl9pbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJwcmVwYXJlRmlsdGVyc0ZvckV4dGVybmFsTmF2aWdhdGlvbiIsIm9GaWx0ZXJJbmZvIiwiRmlsdGVyVXRpbHMiLCJnZXRGaWx0ZXJJbmZvIiwidGFyZ2V0Q29udHJvbCIsIl9nZXRUYWJsZSIsImZpbHRlcnMiLCJvTXVsdGlwbGVNb2RlQ29udHJvbCIsIl9nZXRNdWx0aU1vZGVDb250cm9sIiwib1RhYnNNb2RlbCIsImdldFRhYnNNb2RlbCIsImFJZ25vcmVkRmllbGRzRm9yVGFiIiwiZ2V0UHJvcGVydHkiLCJjb250ZW50IiwiZ2V0U2VsZWN0ZWRLZXkiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJmb3JFYWNoIiwic1Byb3BlcnR5IiwiZmlsdGVyQ29uZGl0aW9ucyIsImFkZEV4dGVybmFsU3RhdGVGaWx0ZXJzVG9TZWxlY3Rpb25WYXJpYW50IiwicHJvcGVydGllc1dpdGhvdXRDb25mbGljdCIsImdldEVudGl0eVNldCIsImdldEN1cnJlbnRFbnRpdHlTZXQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkludGVudEJhc2VkTmF2aWdhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBJbnRlbnRCYXNlZE5hdmlnYXRpb24gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IEZpbHRlclV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJVdGlsc1wiO1xuaW1wb3J0IHR5cGUgTGlzdFJlcG9ydENvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvTGlzdFJlcG9ydC9MaXN0UmVwb3J0Q29udHJvbGxlci5jb250cm9sbGVyXCI7XG5cbmNvbnN0IEludGVudEJhc2VkTmF2aWdhdGlvbk92ZXJyaWRlID0ge1xuXHRhZGFwdE5hdmlnYXRpb25Db250ZXh0OiBmdW5jdGlvbiAodGhpczogSW50ZW50QmFzZWROYXZpZ2F0aW9uLCBvU2VsZWN0aW9uVmFyaWFudDogYW55LCBvVGFyZ2V0SW5mbzogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0b0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0Ly8gQWRkaW5nIGZpbHRlciBiYXIgdmFsdWVzIHRvIHRoZSBuYXZpZ2F0aW9uIGRvZXMgbm90IG1ha2Ugc2Vuc2UgaWYgbm8gY29udGV4dCBoYXMgYmVlbiBzZWxlY3RlZC5cblx0XHQvLyBIZW5jZSBvbmx5IGNvbnNpZGVyIGZpbHRlciBiYXIgdmFsdWVzIHdoZW4gU2VsZWN0aW9uVmFyaWFudCBpcyBub3QgZW1wdHlcblx0XHRpZiAob0ZpbHRlckJhciAmJiAhb1NlbGVjdGlvblZhcmlhbnQuaXNFbXB0eSgpKSB7XG5cdFx0XHRjb25zdCBvVmlld0RhdGEgPSBvVmlldy5nZXRWaWV3RGF0YSgpIGFzIGFueSxcblx0XHRcdFx0c1Jvb3RQYXRoID0gb1ZpZXdEYXRhLmZ1bGxDb250ZXh0UGF0aCArIG9WaWV3RGF0YS5lbnRpdHlTZXQ7XG5cdFx0XHRsZXQgb0ZpbHRlckJhckNvbmRpdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCAodGhpcy5iYXNlLmdldFZpZXcoKS5nZXRDb250cm9sbGVyKCkgYXMgYW55KS5maWx0ZXJCYXJDb25kaXRpb25zKTtcblx0XHRcdGxldCBhUGFyYW1ldGVycyA9IFtdO1xuXG5cdFx0XHRpZiAob1ZpZXdEYXRhLmNvbnRleHRQYXRoKSB7XG5cdFx0XHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvVmlldy5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLFxuXHRcdFx0XHRcdG9QYXJhbWV0ZXJJbmZvID0gQ29tbW9uVXRpbHMuZ2V0UGFyYW1ldGVySW5mbyhvTWV0YU1vZGVsLCBvVmlld0RhdGEuY29udGV4dFBhdGgpLFxuXHRcdFx0XHRcdG9QYXJhbVByb3BlcnRpZXMgPSBvUGFyYW1ldGVySW5mby5wYXJhbWV0ZXJQcm9wZXJ0aWVzO1xuXHRcdFx0XHRhUGFyYW1ldGVycyA9IChvUGFyYW1Qcm9wZXJ0aWVzICYmIE9iamVjdC5rZXlzKG9QYXJhbVByb3BlcnRpZXMpKSB8fCBbXTtcblx0XHRcdH1cblxuXHRcdFx0b0ZpbHRlckJhckNvbmRpdGlvbnMgPSBvQ29udHJvbGxlci5faW50ZW50QmFzZWROYXZpZ2F0aW9uLnByZXBhcmVGaWx0ZXJzRm9yRXh0ZXJuYWxOYXZpZ2F0aW9uKFxuXHRcdFx0XHRvRmlsdGVyQmFyQ29uZGl0aW9ucyxcblx0XHRcdFx0c1Jvb3RQYXRoLFxuXHRcdFx0XHRhUGFyYW1ldGVyc1xuXHRcdFx0KTtcblx0XHRcdGNvbnN0IG9GaWx0ZXJJbmZvID0gRmlsdGVyVXRpbHMuZ2V0RmlsdGVySW5mbyhvRmlsdGVyQmFyLCB7XG5cdFx0XHRcdHRhcmdldENvbnRyb2w6IG9Db250cm9sbGVyLl9nZXRUYWJsZSgpXG5cdFx0XHR9KS5maWx0ZXJzO1xuXG5cdFx0XHRjb25zdCBvTXVsdGlwbGVNb2RlQ29udHJvbCA9IG9Db250cm9sbGVyLl9nZXRNdWx0aU1vZGVDb250cm9sKCk7XG5cdFx0XHRpZiAob011bHRpcGxlTW9kZUNvbnRyb2wpIHtcblx0XHRcdFx0Ly8gRG8gd2UgbmVlZCB0byBleGNsdWRlIEZpZWxkcyAobXVsdGkgdGFibGVzIG1vZGUgd2l0aCBtdWx0aSBlbnRpdHkgc2V0cyk/XG5cdFx0XHRcdGNvbnN0IG9UYWJzTW9kZWwgPSBvTXVsdGlwbGVNb2RlQ29udHJvbC5nZXRUYWJzTW9kZWwoKTtcblx0XHRcdFx0aWYgKG9UYWJzTW9kZWwpIHtcblx0XHRcdFx0XHRjb25zdCBhSWdub3JlZEZpZWxkc0ZvclRhYiA9IG9UYWJzTW9kZWwuZ2V0UHJvcGVydHkoXG5cdFx0XHRcdFx0XHRgLyR7b011bHRpcGxlTW9kZUNvbnRyb2wuY29udGVudD8uZ2V0U2VsZWN0ZWRLZXkoKX0vbm90QXBwbGljYWJsZS9maWVsZHNgXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShhSWdub3JlZEZpZWxkc0ZvclRhYikgJiYgYUlnbm9yZWRGaWVsZHNGb3JUYWIubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0YUlnbm9yZWRGaWVsZHNGb3JUYWIuZm9yRWFjaChmdW5jdGlvbiAoc1Byb3BlcnR5OiBhbnkpIHtcblx0XHRcdFx0XHRcdFx0ZGVsZXRlIG9GaWx0ZXJCYXJDb25kaXRpb25zLmZpbHRlckNvbmRpdGlvbnNbc1Byb3BlcnR5XTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBUT0RPOiBtb3ZlIHRoaXMgYWxzbyBpbnRvIHRoZSBpbnRlbnQgYmFzZWQgbmF2aWdhdGlvbiBjb250cm9sbGVyIGV4dGVuc2lvblxuXHRcdFx0Q29tbW9uVXRpbHMuYWRkRXh0ZXJuYWxTdGF0ZUZpbHRlcnNUb1NlbGVjdGlvblZhcmlhbnQob1NlbGVjdGlvblZhcmlhbnQsIG9GaWx0ZXJCYXJDb25kaXRpb25zLCBvVGFyZ2V0SW5mbywgb0ZpbHRlckluZm8pO1xuXHRcdFx0ZGVsZXRlIG9UYXJnZXRJbmZvLnByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3Q7XG5cdFx0fVxuXHR9LFxuXHRnZXRFbnRpdHlTZXQ6IGZ1bmN0aW9uICh0aGlzOiBJbnRlbnRCYXNlZE5hdmlnYXRpb24pIHtcblx0XHRyZXR1cm4gKHRoaXMuYmFzZSBhcyBhbnkpLmdldEN1cnJlbnRFbnRpdHlTZXQoKTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgSW50ZW50QmFzZWROYXZpZ2F0aW9uT3ZlcnJpZGU7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7RUFLQSxJQUFNQSw2QkFBNkIsR0FBRztJQUNyQ0Msc0JBQXNCLEVBQUUsVUFBdUNDLGlCQUF2QyxFQUErREMsV0FBL0QsRUFBaUY7TUFDeEcsSUFBTUMsS0FBSyxHQUFHLEtBQUtDLE9BQUwsRUFBZDtNQUFBLElBQ0NDLFdBQVcsR0FBR0YsS0FBSyxDQUFDRyxhQUFOLEVBRGY7TUFBQSxJQUVDQyxVQUFVLEdBQUdGLFdBQVcsQ0FBQ0csb0JBQVosRUFGZCxDQUR3RyxDQUl4RztNQUNBOzs7TUFDQSxJQUFJRCxVQUFVLElBQUksQ0FBQ04saUJBQWlCLENBQUNRLE9BQWxCLEVBQW5CLEVBQWdEO1FBQy9DLElBQU1DLFNBQVMsR0FBR1AsS0FBSyxDQUFDUSxXQUFOLEVBQWxCO1FBQUEsSUFDQ0MsU0FBUyxHQUFHRixTQUFTLENBQUNHLGVBQVYsR0FBNEJILFNBQVMsQ0FBQ0ksU0FEbkQ7UUFFQSxJQUFJQyxvQkFBb0IsR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFtQixLQUFLQyxJQUFMLENBQVVkLE9BQVYsR0FBb0JFLGFBQXBCLEVBQUQsQ0FBNkNhLG1CQUEvRCxDQUEzQjtRQUNBLElBQUlDLFdBQVcsR0FBRyxFQUFsQjs7UUFFQSxJQUFJVixTQUFTLENBQUNXLFdBQWQsRUFBMkI7VUFDMUIsSUFBTUMsVUFBVSxHQUFHbkIsS0FBSyxDQUFDb0IsUUFBTixHQUFpQkMsWUFBakIsRUFBbkI7VUFBQSxJQUNDQyxjQUFjLEdBQUdDLFdBQVcsQ0FBQ0MsZ0JBQVosQ0FBNkJMLFVBQTdCLEVBQXlDWixTQUFTLENBQUNXLFdBQW5ELENBRGxCO1VBQUEsSUFFQ08sZ0JBQWdCLEdBQUdILGNBQWMsQ0FBQ0ksbUJBRm5DO1VBR0FULFdBQVcsR0FBSVEsZ0JBQWdCLElBQUlaLE1BQU0sQ0FBQ2MsSUFBUCxDQUFZRixnQkFBWixDQUFyQixJQUF1RCxFQUFyRTtRQUNBOztRQUVEYixvQkFBb0IsR0FBR1YsV0FBVyxDQUFDMEIsc0JBQVosQ0FBbUNDLG1DQUFuQyxDQUN0QmpCLG9CQURzQixFQUV0QkgsU0FGc0IsRUFHdEJRLFdBSHNCLENBQXZCO1FBS0EsSUFBTWEsV0FBVyxHQUFHQyxXQUFXLENBQUNDLGFBQVosQ0FBMEI1QixVQUExQixFQUFzQztVQUN6RDZCLGFBQWEsRUFBRS9CLFdBQVcsQ0FBQ2dDLFNBQVo7UUFEMEMsQ0FBdEMsRUFFakJDLE9BRkg7O1FBSUEsSUFBTUMsb0JBQW9CLEdBQUdsQyxXQUFXLENBQUNtQyxvQkFBWixFQUE3Qjs7UUFDQSxJQUFJRCxvQkFBSixFQUEwQjtVQUN6QjtVQUNBLElBQU1FLFVBQVUsR0FBR0Ysb0JBQW9CLENBQUNHLFlBQXJCLEVBQW5COztVQUNBLElBQUlELFVBQUosRUFBZ0I7WUFBQTs7WUFDZixJQUFNRSxvQkFBb0IsR0FBR0YsVUFBVSxDQUFDRyxXQUFYLHFDQUN4Qkwsb0JBQW9CLENBQUNNLE9BREcsMERBQ3hCLHNCQUE4QkMsY0FBOUIsRUFEd0IsMkJBQTdCOztZQUdBLElBQUlDLEtBQUssQ0FBQ0MsT0FBTixDQUFjTCxvQkFBZCxLQUF1Q0Esb0JBQW9CLENBQUNNLE1BQXJCLEdBQThCLENBQXpFLEVBQTRFO2NBQzNFTixvQkFBb0IsQ0FBQ08sT0FBckIsQ0FBNkIsVUFBVUMsU0FBVixFQUEwQjtnQkFDdEQsT0FBT3BDLG9CQUFvQixDQUFDcUMsZ0JBQXJCLENBQXNDRCxTQUF0QyxDQUFQO2NBQ0EsQ0FGRDtZQUdBO1VBQ0Q7UUFDRCxDQXBDOEMsQ0FzQy9DOzs7UUFDQXpCLFdBQVcsQ0FBQzJCLHlDQUFaLENBQXNEcEQsaUJBQXRELEVBQXlFYyxvQkFBekUsRUFBK0ZiLFdBQS9GLEVBQTRHK0IsV0FBNUc7UUFDQSxPQUFPL0IsV0FBVyxDQUFDb0QseUJBQW5CO01BQ0E7SUFDRCxDQWpEb0M7SUFrRHJDQyxZQUFZLEVBQUUsWUFBdUM7TUFDcEQsT0FBUSxLQUFLckMsSUFBTixDQUFtQnNDLG1CQUFuQixFQUFQO0lBQ0E7RUFwRG9DLENBQXRDO1NBdURlekQsNkIifQ==
|
|
@@ -136,4 +136,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/S
|
|
|
136
136
|
};
|
|
137
137
|
return ShareOverride;
|
|
138
138
|
}, false);
|
|
139
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNoYXJlLnRzIl0sIm5hbWVzIjpbImdldENvdW50VXJsIiwib0NvbnRyb2xsZXIiLCJzVGFibGVJZCIsImdldFZpZXciLCJieUlkIiwiZ2V0U2VsZWN0ZWRLZXkiLCJnZXRDb250ZW50IiwiZGF0YSIsInNpbmdsZVRhYmxlSWQiLCJvVGFibGUiLCJvQmluZGluZyIsImdldFJvd0JpbmRpbmciLCJnZXRCaW5kaW5nIiwic0Rvd25sb2FkVXJsIiwiZ2V0RG93bmxvYWRVcmwiLCJhU3BsaXRVcmwiLCJzcGxpdCIsImJhc2VVcmwiLCJhU3VwcG9ydGVkUGFyYW1zIiwibGVuZ3RoIiwidXJsUGFyYW1zIiwiZm9yRWFjaCIsInVybFBhcmFtIiwiYVVybFBhcmFtUGFydHMiLCJwdXNoIiwiam9pbiIsImdldFNoYXJlVXJsIiwic0hhc2giLCJIYXNoQ2hhbmdlciIsImdldEluc3RhbmNlIiwiZ2V0SGFzaCIsInNCYXNlUGF0aCIsImhyZWZGb3JBcHBTcGVjaWZpY0hhc2giLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhhc2giLCJnZXRTaGFyZUVtYWlsVXJsIiwib1VTaGVsbENvbnRhaW5lciIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsImdldEZMUFVybEFzeW5jIiwidGhlbiIsInNGTFBVcmwiLCJjYXRjaCIsInNFcnJvciIsIkxvZyIsImVycm9yIiwiUHJvbWlzZSIsInJlc29sdmUiLCJkb2N1bWVudCIsIlVSTCIsImdldFNhdmVBc1RpbGVTZXJ2aWNlVXJsIiwib0ZpbHRlckJhciIsIm9Db25kaXRpb25zIiwiZ2V0RmlsdGVyQ29uZGl0aW9ucyIsImJTYXZlQXNUaWxlU2VydmljZVVybEFsbG93ZWQiLCJTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJoYXNTZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiZ2V0SmFtVXJsIiwic0phbVVybCIsInJ1bm5pbmdJbklmcmFtZSIsImdldEZMUFVybCIsInNVcmwiLCJzdWJzdHIiLCJpbmRleE9mIiwib3JpZ2luIiwicGF0aG5hbWUiLCJTaGFyZU92ZXJyaWRlIiwiYWRhcHRTaGFyZU1ldGFkYXRhIiwib1NoYXJlTWV0YWRhdGEiLCJvQXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJiYXNlIiwib01ldGFkYXRhIiwiZ2V0TWV0YWRhdGEiLCJvVUlNYW5pZmVzdCIsImdldE1hbmlmZXN0RW50cnkiLCJzSWNvbiIsImljb25zIiwiaWNvbiIsIm9BcHBNYW5pZmVzdCIsInNUaXRsZSIsInRpdGxlIiwidGlsZSIsInF1ZXJ5VXJsIiwiamFtIiwidXJsIiwiZW1haWwiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFNQSxXQUFTQSxXQUFULENBQXFCQyxXQUFyQixFQUFrRDtBQUFBOztBQUNqRDtBQUNBLFFBQUlDLFFBQVEsNEJBQUlELFdBQVcsQ0FBQ0UsT0FBWixHQUFzQkMsSUFBdEIsQ0FBMkIscUJBQTNCLENBQUosMERBQUcsc0JBQW1FQyxjQUFuRSxFQUFmOztBQUNBLFFBQUksQ0FBQ0gsUUFBTCxFQUFlO0FBQ2Q7QUFDQUEsTUFBQUEsUUFBUSxHQUFHRCxXQUFXLENBQUNFLE9BQVosR0FBc0JHLFVBQXRCLEdBQW1DLENBQW5DLEVBQXNDQyxJQUF0QyxHQUE2Q0MsYUFBeEQ7QUFDQTs7QUFDRCxRQUFNQyxNQUFNLEdBQUdSLFdBQVcsQ0FBQ0UsT0FBWixHQUFzQkMsSUFBdEIsQ0FBMkJGLFFBQTNCLENBQWY7O0FBQ0EsUUFBSSxDQUFDTyxNQUFMLEVBQWE7QUFDWixhQUFPLEVBQVA7QUFDQTs7QUFDRCxRQUFNQyxRQUFRLEdBQUdELE1BQU0sQ0FBQ0UsYUFBUCxNQUEwQkYsTUFBTSxDQUFDRyxVQUFQLENBQWtCLE9BQWxCLENBQTNDO0FBQ0EsUUFBTUMsWUFBWSxHQUFJSCxRQUFRLElBQUtBLFFBQUQsQ0FBa0JJLGNBQWxCLEVBQWIsSUFBb0QsRUFBekU7QUFDQSxRQUFNQyxTQUFTLEdBQUdGLFlBQVksQ0FBQ0csS0FBYixDQUFtQixHQUFuQixDQUFsQjtBQUNBLFFBQU1DLE9B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VUcsS0FBVixFQUFzQjtBQUM1QkQsUUFBQUEsR0FBRyxDQUFDQyxLQUFKLENBQVVBLEtBQVY7QUFDQSxPQU5GO0FBT0EsYUFBT0MsT0FBTyxDQUFDQyxPQUFSLENBQWdCYixnQkFBZ0IsRUFBaEMsRUFBb0NNLElBQXBDLENBQXlDLFVBQVVDLE9BQVYsRUFBd0I7QUFDdkUyQixRQUFBQSxjQUFjLENBQUNtQixLQUFmLENBQXFCRCxHQUFyQixHQUEyQjdDLE9BQTNCO0FBQ0EsZUFBTzJCLGNBQVA7QUFDQSxPQUhNLENBQVA7QUFJQTtBQWxDb0IsR0FBdEI7U0FxQ2VGLGEiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgQmFzZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBTaGFyZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2hhcmVcIjtcbmltcG9ydCBTZW1hbnRpY0RhdGVPcGVyYXRvcnMgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU2VtYW50aWNEYXRlT3BlcmF0b3JzXCI7XG5pbXBvcnQgdHlwZSBJY29uVGFiQmFyIGZyb20gXCJzYXAvbS9JY29uVGFiQmFyXCI7XG5pbXBvcnQgSGFzaENoYW5nZXIgZnJvbSBcInNhcC91aS9jb3JlL3JvdXRpbmcvSGFzaENoYW5nZXJcIjtcbmltcG9ydCB0eXBlIFRhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5mdW5jdGlvbiBnZXRDb3VudFVybChvQ29udHJvbGxlcjogQmFzZUNvbnRyb2xsZXIpIHtcblx0Ly8gZ2V0IHNlbGVjdGVkIHRhYmxlIElEIGZyb20gbXVsdGlwbGUgdGFic1xuXHRsZXQgc1RhYmxlSWQgPSAob0NvbnRyb2xsZXIuZ2V0VmlldygpLmJ5SWQoXCJmZTo6VGFiTXVsdGlwbGVNb2RlXCIpIGFzIEljb25UYWJCYXIpPy5nZXRTZWxlY3RlZEtleSgpO1xuXHRpZiAoIXNUYWJsZUlkKSB7XG5cdFx0Ly8gaWYgbm90IG11bHRpcGxlIHRhYnMsIGdldCBzaW5nbGUgdGFibGUgSURcblx0XHRzVGFibGVJZCA9IG9Db250cm9sbGVyLmdldFZpZXcoKS5nZXRDb250ZW50KClbMF0uZGF0YSgpLnNpbmdsZVRhYmxlSWQ7XG5cdH1cblx0Y29uc3Qgb1RhYmxlID0gb0NvbnRyb2xsZXIuZ2V0VmlldygpLmJ5SWQoc1RhYmxlSWQpIGFzIFRhYmxlO1xuXHRpZiAoIW9UYWJsZSkge1xuXHRcdHJldHVybiBcIlwiO1xuXHR9XG5cdGNvbnN0IG9CaW5kaW5nID0gb1RhYmxlLmdldFJvd0JpbmRpbmcoKSB8fCBvVGFibGUuZ2V0QmluZGluZyhcIml0ZW1zXCIpO1xuXHRjb25zdCBzRG93bmxvYWRVcmwgPSAob0JpbmRpbmcgJiYgKG9CaW5kaW5nIGFzIGFueSkuZ2V0RG93bmxvYWRVcmwoKSkgfHwgXCJcIjtcblx0Y29uc3QgYVNwbGl0VXJsID0gc0Rvd25sb2FkVXJsLnNwbGl0KFwiP1wiKTtcblx0Y29uc3QgYmFzZVVybCA9IGAke2FTcGxpdFVybFswXX0vJGNvdW50P2A7XG5cdC8vIGdldERvd25sb2FkVXJsKCkgcmV0dXJucyB1cmwgd2l0aCAkc2VsZWN0LCAkZXhwYW5kIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiAvJGNvdW50IGlzIHVzZWQgdG8gZ2V0IHRoZSByZWNvcmQgY291bnQuIG9ubHkgJGFwcGx5LCAkc2VhcmNoLCAkZmlsdGVyIGlzIHN1cHBvcnRlZFxuXHQvLyA/JGNvdW50PXRydWUgcmV0dXJucyBjb3VudCBpbiBhIGZvcm1hdCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGJ5IEZMUCB5ZXQuXG5cdC8vIGN1cnJlbnRseSBzdXBwb3J0ZWQgZm9ybWF0IGZvciB2NCBpcyAuLi9jb3VudC4uIG9ubHkgKHdoZXJlIHRpbGUgcHJldmlldyB3aWxsIHN0aWxsIG5vdCB3b3JrKVxuXHRjb25zdCBhU3VwcG9ydGVkUGFyYW1zOiBhbnlbXSA9IFtdO1xuXHRpZiAoYVNwbGl0VXJsLmxlbmd0aCA+IDEpIHtcblx0XHRjb25zdCB1cmxQYXJhbXMgPSBhU3BsaXRVcmxbMV07XG5cdFx0dXJsUGFyYW1zLnNwbGl0KFwiJlwiKS5mb3JFYWNoKGZ1bmN0aW9uICh1cmxQYXJhbTogYW55KSB7XG5cdFx0XHRjb25zdCBhVXJsUGFyYW1QYXJ0cyA9IHVybFBhcmFtLnNwbGl0KFwiPVwiKTtcblx0XHRcdHN3aXRjaCAoYVVybFBhcmFtUGFydHNbMF0pIHtcblx0XHRcdFx0Y2FzZSBcIiRhcHBseVwiOlxuXHRcdFx0XHRjYXNlIFwiJHNlYXJjaFwiOlxuXHRcdFx0XHRjYXNlIFwiJGZpbHRlclwiOlxuXHRcdFx0XHRcdGFTdXBwb3J0ZWRQYXJhbXMucHVzaCh1cmxQYXJhbSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIGJhc2VVcmwgKyBhU3VwcG9ydGVkUGFyYW1zLmpvaW4oXCImXCIpO1xufVxuZnVuY3Rpb24gZ2V0U2hhcmVVcmwoKSB7XG5cdGNvbnN0IHNIYXNoID0gSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKS5nZXRIYXNoKCk7XG5cdGNvbnN0IHNCYXNlUGF0aCA9IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaFxuXHRcdD8gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoKFwiXCIpXG5cdFx0OiBcIlwiO1xuXHRyZXR1cm4gc0hhc2ggPyBzQmFzZVBhdGggKyBzSGFzaCA6IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xufVxuZnVuY3Rpb24gZ2V0U2hhcmVFbWFpbFVybCgpIHtcblx0Y29uc3Qgb1VTaGVsbENvbnRhaW5lciA9IHNhcC51c2hlbGwgJiYgc2FwLnVzaGVsbC5Db250YWluZXI7XG5cdGlmIChvVVNoZWxsQ29udGFpbmVyKSB7XG5cdFx0cmV0dXJuIG9VU2hlbGxDb250YWluZXJcblx0XHRcdC5nZXRGTFBVcmxBc3luYyh0cnVlKVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKHNGTFBVcmw6IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gc0ZMUFVybDtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKHNFcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkNvdWxkIG5vdCByZXRyaWV2ZSBjRkxQIFVSTCBmb3IgdGhlIHNoYXJpbmcgZGlhbG9nIChkaWFsb2cgd2lsbCBub3QgYmUgb3BlbmVkKVwiLCBzRXJyb3IpO1xuXHRcdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShkb2N1bWVudC5VUkwpO1xuXHR9XG59XG5mdW5jdGlvbiBnZXRTYXZlQXNUaWxlU2VydmljZVVybChvQ29udHJvbGxlcjogYW55KSB7XG5cdGNvbnN0IG9GaWx0ZXJCYXIgPSBvQ29udHJvbGxlci5nZXRWaWV3KCkuYnlJZChvQ29udHJvbGxlci5nZXRWaWV3KCkuZ2V0Q29udGVudCgpWzBdLmRhdGEoXCJmaWx0ZXJCYXJJZFwiKSk7XG5cdGlmIChvRmlsdGVyQmFyKSB7XG5cdFx0Y29uc3Qgb0NvbmRpdGlvbnMgPSBvRmlsdGVyQmFyLmdldEZpbHRlckNvbmRpdGlvbnMoKTtcblx0XHRjb25zdCBiU2F2ZUFzVGlsZVNlcnZpY2VVcmxBbGxvd2VkID0gU2VtYW50aWNEYXRlT3BlcmF0b3JzLmhhc1NlbWFudGljRGF0ZU9wZXJhdGlvbnMob0NvbmRpdGlvbnMpO1xuXHRcdGlmIChiU2F2ZUFzVGlsZVNlcnZpY2VVcmxBbGxvd2VkKSB7XG5cdFx0XHRyZXR1cm4gZ2V0Q291bnRVcmwob0NvbnRyb2xsZXIpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gXCJcIjtcbn1cbmZ1bmN0aW9uIGdldEphbVVybCgpIHtcblx0Y29uc3Qgc0hhc2ggPSBIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpLmdldEhhc2goKTtcblx0Y29uc3Qgc0Jhc2VQYXRoID0gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoXG5cdFx0PyAoSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBhbnkpLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2goXCJcIilcblx0XHQ6IFwiXCI7XG5cdGNvbnN0IHNKYW1VcmwgPSBzSGFzaCA/IHNCYXNlUGF0aCArIHNIYXNoIDogd2luZG93LmxvY2F0aW9uLmhhc2g7XG5cdC8vIGluIGNhc2Ugd2UgYXJlIGluIGNGTFAgc2NlbmFyaW8sIHRoZSBhcHBsaWNhdGlvbiBpcyBydW5uaW5nXG5cdC8vIGluc2lkZSBhbiBpZnJhbWUsIGFuZCB0aGVyZSBmb3Igd2UgbmVlZCB0byBnZXQgdGhlIGNGTFAgVVJMXG5cdC8vIGFuZCBub3QgJ2RvY3VtZW50LlVSTCcgdGhhdCByZXByZXNlbnRzIHRoZSBpZnJhbWUgVVJMXG5cdGlmIChzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyICYmIHNhcC51c2hlbGwuQ29udGFpbmVyLnJ1bm5pbmdJbklmcmFtZSAmJiBzYXAudXNoZWxsLkNvbnRhaW5lci5ydW5uaW5nSW5JZnJhbWUoKSkge1xuXHRcdHNhcC51c2hlbGwuQ29udGFpbmVyLmdldEZMUFVybCh0cnVlKVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKHNVcmw6IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gc1VybC5zdWJzdHIoMCwgc1VybC5pbmRleE9mKFwiI1wiKSkgKyBzSmFtVXJsO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoc0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiQ291bGQgbm90IHJldHJpZXZlIGNGTFAgVVJMIGZvciB0aGUgc2hhcmluZyBkaWFsb2cgKGRpYWxvZyB3aWxsIG5vdCBiZSBvcGVuZWQpXCIsIHNFcnJvcik7XG5cdFx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gd2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArIHNKYW1Vcmw7XG5cdH1cbn1cblxuY29uc3QgU2hhcmVPdmVycmlkZSA9IHtcblx0YWRhcHRTaGFyZU1ldGFkYXRhOiBmdW5jdGlvbiAodGhpczogU2hhcmUsIG9TaGFyZU1ldGFkYXRhOiBhbnkpIHtcblx0XHRQcm9taXNlLnJlc29sdmUoZ2V0SmFtVXJsKCkpXG5cdFx0XHQudGhlbigoc0phbVVybDogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9BcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5iYXNlLmdldFZpZXcoKSk7XG5cdFx0XHRcdGNvbnN0IG9NZXRhZGF0YSA9IG9BcHBDb21wb25lbnQuZ2V0TWV0YWRhdGEoKTtcblx0XHRcdFx0Y29uc3Qgb1VJTWFuaWZlc3QgPSBvTWV0YWRhdGEuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC51aVwiKTtcblx0XHRcdFx0Y29uc3Qgc0ljb24gPSAob1VJTWFuaWZlc3QgJiYgb1VJTWFuaWZlc3QuaWNvbnMgJiYgb1VJTWFuaWZlc3QuaWNvbnMuaWNvbikgfHwgXCJcIjtcblx0XHRcdFx0Y29uc3Qgb0FwcE1hbmlmZXN0ID0gb01ldGFkYXRhLmdldE1hbmlmZXN0RW50cnkoXCJzYXAuYXBwXCIpO1xuXHRcdFx0XHRjb25zdCBzVGl0bGUgPSAob0FwcE1hbmlmZXN0ICYmIG9BcHBNYW5pZmVzdC50aXRsZSkgfHwgXCJcIjtcblx0XHRcdFx0Ly8gVE9ETzogY2hlY2sgaWYgdGhlcmUgaXMgYW55IHNlbWFudGljIGRhdGUgdXNlZCBiZWZvcmUgYWRkaW5nIHNlcnZpY2VVUkwgYXMgQkxJOkZJT1JJVEVDSFAxLTE4MDIzXG5cdFx0XHRcdG9TaGFyZU1ldGFkYXRhLnRpbGUgPSB7XG5cdFx0XHRcdFx0aWNvbjogc0ljb24sXG5cdFx0XHRcdFx0dGl0bGU6IHNUaXRsZSxcblx0XHRcdFx0XHRxdWVyeVVybDogZ2V0U2F2ZUFzVGlsZVNlcnZpY2VVcmwodGhpcy5iYXNlKVxuXHRcdFx0XHR9O1xuXHRcdFx0XHRvU2hhcmVNZXRhZGF0YS50aXRsZSA9IGRvY3VtZW50LnRpdGxlO1xuXHRcdFx0XHRvU2hhcmVNZXRhZGF0YS5qYW0udXJsID0gc0phbVVybDtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKGVycm9yKTtcblx0XHRcdH0pO1xuXG5cdFx0UHJvbWlzZS5yZXNvbHZlKGdldFNoYXJlVXJsKCkpXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoc1VybDogYW55KSB7XG5cdFx0XHRcdG9TaGFyZU1ldGFkYXRhLnVybCA9IHNVcmw7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihlcnJvcik7XG5cdFx0XHR9KTtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGdldFNoYXJlRW1haWxVcmwoKSkudGhlbihmdW5jdGlvbiAoc0ZMUFVybDogYW55KSB7XG5cdFx0XHRvU2hhcmVNZXRhZGF0YS5lbWFpbC51cmwgPSBzRkxQVXJsO1xuXHRcdFx0cmV0dXJuIG9TaGFyZU1ldGFkYXRhO1xuXHRcdH0pO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTaGFyZU92ZXJyaWRlO1xuIl19
|
|
139
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDb3VudFVybCIsIm9Db250cm9sbGVyIiwic1RhYmxlSWQiLCJnZXRWaWV3IiwiYnlJZCIsImdldFNlbGVjdGVkS2V5IiwiZ2V0Q29udGVudCIsImRhdGEiLCJzaW5nbGVUYWJsZUlkIiwib1RhYmxlIiwib0JpbmRpbmciLCJnZXRSb3dCaW5kaW5nIiwiZ2V0QmluZGluZyIsInNEb3dubG9hZFVybCIsImdldERvd25sb2FkVXJsIiwiYVNwbGl0VXJsIiwic3BsaXQiLCJiYXNlVXJsIiwiYVN1cHBvcnRlZFBhcmFtcyIsImxlbmd0aCIsInVybFBhcmFtcyIsImZvckVhY2giLCJ1cmxQYXJhbSIsImFVcmxQYXJhbVBhcnRzIiwicHVzaCIsImpvaW4iLCJnZXRTaGFyZVVybCIsInNIYXNoIiwiSGFzaENoYW5nZXIiLCJnZXRJbnN0YW5jZSIsImdldEhhc2giLCJzQmFzZVBhdGgiLCJocmVmRm9yQXBwU3BlY2lmaWNIYXNoIiwid2luZG93IiwibG9jYXRpb24iLCJoYXNoIiwiZ2V0U2hhcmVFbWFpbFVybCIsIm9VU2hlbGxDb250YWluZXIiLCJzYXAiLCJ1c2hlbGwiLCJDb250YWluZXIiLCJnZXRGTFBVcmxBc3luYyIsInRoZW4iLCJzRkxQVXJsIiwiY2F0Y2giLCJzRXJyb3IiLCJMb2ciLCJlcnJvciIsIlByb21pc2UiLCJyZXNvbHZlIiwiZG9jdW1lbnQiLCJVUkwiLCJnZXRTYXZlQXNUaWxlU2VydmljZVVybCIsIm9GaWx0ZXJCYXIiLCJvQ29uZGl0aW9ucyIsImdldEZpbHRlckNvbmRpdGlvbnMiLCJiU2F2ZUFzVGlsZVNlcnZpY2VVcmxBbGxvd2VkIiwiU2VtYW50aWNEYXRlT3BlcmF0b3JzIiwiaGFzU2VtYW50aWNEYXRlT3BlcmF0aW9ucyIsImdldEphbVVybCIsInNKYW1VcmwiLCJydW5uaW5nSW5JZnJhbWUiLCJnZXRGTFBVcmwiLCJzVXJsIiwic3Vic3RyIiwiaW5kZXhPZiIsIm9yaWdpbiIsInBhdGhuYW1lIiwiU2hhcmVPdmVycmlkZSIsImFkYXB0U2hhcmVNZXRhZGF0YSIsIm9TaGFyZU1ldGFkYXRhIiwib0FwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwiYmFzZSIsIm9NZXRhZGF0YSIsImdldE1ldGFkYXRhIiwib1VJTWFuaWZlc3QiLCJnZXRNYW5pZmVzdEVudHJ5Iiwic0ljb24iLCJpY29ucyIsImljb24iLCJvQXBwTWFuaWZlc3QiLCJzVGl0bGUiLCJ0aXRsZSIsInRpbGUiLCJxdWVyeVVybCIsImphbSIsInVybCIsImVtYWlsIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTaGFyZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIEJhc2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgU2hhcmUgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1NoYXJlXCI7XG5pbXBvcnQgU2VtYW50aWNEYXRlT3BlcmF0b3JzIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1NlbWFudGljRGF0ZU9wZXJhdG9yc1wiO1xuaW1wb3J0IHR5cGUgSWNvblRhYkJhciBmcm9tIFwic2FwL20vSWNvblRhYkJhclwiO1xuaW1wb3J0IEhhc2hDaGFuZ2VyIGZyb20gXCJzYXAvdWkvY29yZS9yb3V0aW5nL0hhc2hDaGFuZ2VyXCI7XG5pbXBvcnQgdHlwZSBUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuZnVuY3Rpb24gZ2V0Q291bnRVcmwob0NvbnRyb2xsZXI6IEJhc2VDb250cm9sbGVyKSB7XG5cdC8vIGdldCBzZWxlY3RlZCB0YWJsZSBJRCBmcm9tIG11bHRpcGxlIHRhYnNcblx0bGV0IHNUYWJsZUlkID0gKG9Db250cm9sbGVyLmdldFZpZXcoKS5ieUlkKFwiZmU6OlRhYk11bHRpcGxlTW9kZVwiKSBhcyBJY29uVGFiQmFyKT8uZ2V0U2VsZWN0ZWRLZXkoKTtcblx0aWYgKCFzVGFibGVJZCkge1xuXHRcdC8vIGlmIG5vdCBtdWx0aXBsZSB0YWJzLCBnZXQgc2luZ2xlIHRhYmxlIElEXG5cdFx0c1RhYmxlSWQgPSBvQ29udHJvbGxlci5nZXRWaWV3KCkuZ2V0Q29udGVudCgpWzBdLmRhdGEoKS5zaW5nbGVUYWJsZUlkO1xuXHR9XG5cdGNvbnN0IG9UYWJsZSA9IG9Db250cm9sbGVyLmdldFZpZXcoKS5ieUlkKHNUYWJsZUlkKSBhcyBUYWJsZTtcblx0aWYgKCFvVGFibGUpIHtcblx0XHRyZXR1cm4gXCJcIjtcblx0fVxuXHRjb25zdCBvQmluZGluZyA9IG9UYWJsZS5nZXRSb3dCaW5kaW5nKCkgfHwgb1RhYmxlLmdldEJpbmRpbmcoXCJpdGVtc1wiKTtcblx0Y29uc3Qgc0Rvd25sb2FkVXJsID0gKG9CaW5kaW5nICYmIChvQmluZGluZyBhcyBhbnkpLmdldERvd25sb2FkVXJsKCkpIHx8IFwiXCI7XG5cdGNvbnN0IGFTcGxpdFVybCA9IHNEb3dubG9hZFVybC5zcGxpdChcIj9cIik7XG5cdGNvbnN0IGJhc2VVcmwgPSBgJHthU3BsaXRVcmxbMF19LyRjb3VudD9gO1xuXHQvLyBnZXREb3dubG9hZFVybCgpIHJldHVybnMgdXJsIHdpdGggJHNlbGVjdCwgJGV4cGFuZCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIHdoZW4gLyRjb3VudCBpcyB1c2VkIHRvIGdldCB0aGUgcmVjb3JkIGNvdW50LiBvbmx5ICRhcHBseSwgJHNlYXJjaCwgJGZpbHRlciBpcyBzdXBwb3J0ZWRcblx0Ly8gPyRjb3VudD10cnVlIHJldHVybnMgY291bnQgaW4gYSBmb3JtYXQgd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBieSBGTFAgeWV0LlxuXHQvLyBjdXJyZW50bHkgc3VwcG9ydGVkIGZvcm1hdCBmb3IgdjQgaXMgLi4vY291bnQuLiBvbmx5ICh3aGVyZSB0aWxlIHByZXZpZXcgd2lsbCBzdGlsbCBub3Qgd29yaylcblx0Y29uc3QgYVN1cHBvcnRlZFBhcmFtczogYW55W10gPSBbXTtcblx0aWYgKGFTcGxpdFVybC5sZW5ndGggPiAxKSB7XG5cdFx0Y29uc3QgdXJsUGFyYW1zID0gYVNwbGl0VXJsWzFdO1xuXHRcdHVybFBhcmFtcy5zcGxpdChcIiZcIikuZm9yRWFjaChmdW5jdGlvbiAodXJsUGFyYW06IGFueSkge1xuXHRcdFx0Y29uc3QgYVVybFBhcmFtUGFydHMgPSB1cmxQYXJhbS5zcGxpdChcIj1cIik7XG5cdFx0XHRzd2l0Y2ggKGFVcmxQYXJhbVBhcnRzWzBdKSB7XG5cdFx0XHRcdGNhc2UgXCIkYXBwbHlcIjpcblx0XHRcdFx0Y2FzZSBcIiRzZWFyY2hcIjpcblx0XHRcdFx0Y2FzZSBcIiRmaWx0ZXJcIjpcblx0XHRcdFx0XHRhU3VwcG9ydGVkUGFyYW1zLnB1c2godXJsUGFyYW0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBiYXNlVXJsICsgYVN1cHBvcnRlZFBhcmFtcy5qb2luKFwiJlwiKTtcbn1cbmZ1bmN0aW9uIGdldFNoYXJlVXJsKCkge1xuXHRjb25zdCBzSGFzaCA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpO1xuXHRjb25zdCBzQmFzZVBhdGggPSAoSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBhbnkpLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2hcblx0XHQ/IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaChcIlwiKVxuXHRcdDogXCJcIjtcblx0cmV0dXJuIHNIYXNoID8gc0Jhc2VQYXRoICsgc0hhc2ggOiB3aW5kb3cubG9jYXRpb24uaGFzaDtcbn1cbmZ1bmN0aW9uIGdldFNoYXJlRW1haWxVcmwoKSB7XG5cdGNvbnN0IG9VU2hlbGxDb250YWluZXIgPSBzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyO1xuXHRpZiAob1VTaGVsbENvbnRhaW5lcikge1xuXHRcdHJldHVybiBvVVNoZWxsQ29udGFpbmVyXG5cdFx0XHQuZ2V0RkxQVXJsQXN5bmModHJ1ZSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChzRkxQVXJsOiBhbnkpIHtcblx0XHRcdFx0cmV0dXJuIHNGTFBVcmw7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChzRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJDb3VsZCBub3QgcmV0cmlldmUgY0ZMUCBVUkwgZm9yIHRoZSBzaGFyaW5nIGRpYWxvZyAoZGlhbG9nIHdpbGwgbm90IGJlIG9wZW5lZClcIiwgc0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoZG9jdW1lbnQuVVJMKTtcblx0fVxufVxuZnVuY3Rpb24gZ2V0U2F2ZUFzVGlsZVNlcnZpY2VVcmwob0NvbnRyb2xsZXI6IGFueSkge1xuXHRjb25zdCBvRmlsdGVyQmFyID0gb0NvbnRyb2xsZXIuZ2V0VmlldygpLmJ5SWQob0NvbnRyb2xsZXIuZ2V0VmlldygpLmdldENvbnRlbnQoKVswXS5kYXRhKFwiZmlsdGVyQmFySWRcIikpO1xuXHRpZiAob0ZpbHRlckJhcikge1xuXHRcdGNvbnN0IG9Db25kaXRpb25zID0gb0ZpbHRlckJhci5nZXRGaWx0ZXJDb25kaXRpb25zKCk7XG5cdFx0Y29uc3QgYlNhdmVBc1RpbGVTZXJ2aWNlVXJsQWxsb3dlZCA9IFNlbWFudGljRGF0ZU9wZXJhdG9ycy5oYXNTZW1hbnRpY0RhdGVPcGVyYXRpb25zKG9Db25kaXRpb25zKTtcblx0XHRpZiAoYlNhdmVBc1RpbGVTZXJ2aWNlVXJsQWxsb3dlZCkge1xuXHRcdFx0cmV0dXJuIGdldENvdW50VXJsKG9Db250cm9sbGVyKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIFwiXCI7XG59XG5mdW5jdGlvbiBnZXRKYW1VcmwoKSB7XG5cdGNvbnN0IHNIYXNoID0gSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKS5nZXRIYXNoKCk7XG5cdGNvbnN0IHNCYXNlUGF0aCA9IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaFxuXHRcdD8gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoKFwiXCIpXG5cdFx0OiBcIlwiO1xuXHRjb25zdCBzSmFtVXJsID0gc0hhc2ggPyBzQmFzZVBhdGggKyBzSGFzaCA6IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuXHQvLyBpbiBjYXNlIHdlIGFyZSBpbiBjRkxQIHNjZW5hcmlvLCB0aGUgYXBwbGljYXRpb24gaXMgcnVubmluZ1xuXHQvLyBpbnNpZGUgYW4gaWZyYW1lLCBhbmQgdGhlcmUgZm9yIHdlIG5lZWQgdG8gZ2V0IHRoZSBjRkxQIFVSTFxuXHQvLyBhbmQgbm90ICdkb2N1bWVudC5VUkwnIHRoYXQgcmVwcmVzZW50cyB0aGUgaWZyYW1lIFVSTFxuXHRpZiAoc2FwLnVzaGVsbCAmJiBzYXAudXNoZWxsLkNvbnRhaW5lciAmJiBzYXAudXNoZWxsLkNvbnRhaW5lci5ydW5uaW5nSW5JZnJhbWUgJiYgc2FwLnVzaGVsbC5Db250YWluZXIucnVubmluZ0luSWZyYW1lKCkpIHtcblx0XHRzYXAudXNoZWxsLkNvbnRhaW5lci5nZXRGTFBVcmwodHJ1ZSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChzVXJsOiBhbnkpIHtcblx0XHRcdFx0cmV0dXJuIHNVcmwuc3Vic3RyKDAsIHNVcmwuaW5kZXhPZihcIiNcIikpICsgc0phbVVybDtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKHNFcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkNvdWxkIG5vdCByZXRyaWV2ZSBjRkxQIFVSTCBmb3IgdGhlIHNoYXJpbmcgZGlhbG9nIChkaWFsb2cgd2lsbCBub3QgYmUgb3BlbmVkKVwiLCBzRXJyb3IpO1xuXHRcdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyBzSmFtVXJsO1xuXHR9XG59XG5cbmNvbnN0IFNoYXJlT3ZlcnJpZGUgPSB7XG5cdGFkYXB0U2hhcmVNZXRhZGF0YTogZnVuY3Rpb24gKHRoaXM6IFNoYXJlLCBvU2hhcmVNZXRhZGF0YTogYW55KSB7XG5cdFx0UHJvbWlzZS5yZXNvbHZlKGdldEphbVVybCgpKVxuXHRcdFx0LnRoZW4oKHNKYW1Vcmw6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4ge1xuXHRcdFx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuYmFzZS5nZXRWaWV3KCkpO1xuXHRcdFx0XHRjb25zdCBvTWV0YWRhdGEgPSBvQXBwQ29tcG9uZW50LmdldE1ldGFkYXRhKCk7XG5cdFx0XHRcdGNvbnN0IG9VSU1hbmlmZXN0ID0gb01ldGFkYXRhLmdldE1hbmlmZXN0RW50cnkoXCJzYXAudWlcIik7XG5cdFx0XHRcdGNvbnN0IHNJY29uID0gKG9VSU1hbmlmZXN0ICYmIG9VSU1hbmlmZXN0Lmljb25zICYmIG9VSU1hbmlmZXN0Lmljb25zLmljb24pIHx8IFwiXCI7XG5cdFx0XHRcdGNvbnN0IG9BcHBNYW5pZmVzdCA9IG9NZXRhZGF0YS5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLmFwcFwiKTtcblx0XHRcdFx0Y29uc3Qgc1RpdGxlID0gKG9BcHBNYW5pZmVzdCAmJiBvQXBwTWFuaWZlc3QudGl0bGUpIHx8IFwiXCI7XG5cdFx0XHRcdC8vIFRPRE86IGNoZWNrIGlmIHRoZXJlIGlzIGFueSBzZW1hbnRpYyBkYXRlIHVzZWQgYmVmb3JlIGFkZGluZyBzZXJ2aWNlVVJMIGFzIEJMSTpGSU9SSVRFQ0hQMS0xODAyM1xuXHRcdFx0XHRvU2hhcmVNZXRhZGF0YS50aWxlID0ge1xuXHRcdFx0XHRcdGljb246IHNJY29uLFxuXHRcdFx0XHRcdHRpdGxlOiBzVGl0bGUsXG5cdFx0XHRcdFx0cXVlcnlVcmw6IGdldFNhdmVBc1RpbGVTZXJ2aWNlVXJsKHRoaXMuYmFzZSlcblx0XHRcdFx0fTtcblx0XHRcdFx0b1NoYXJlTWV0YWRhdGEudGl0bGUgPSBkb2N1bWVudC50aXRsZTtcblx0XHRcdFx0b1NoYXJlTWV0YWRhdGEuamFtLnVybCA9IHNKYW1Vcmw7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihlcnJvcik7XG5cdFx0XHR9KTtcblxuXHRcdFByb21pc2UucmVzb2x2ZShnZXRTaGFyZVVybCgpKVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKHNVcmw6IGFueSkge1xuXHRcdFx0XHRvU2hhcmVNZXRhZGF0YS51cmwgPSBzVXJsO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IpO1xuXHRcdFx0fSk7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShnZXRTaGFyZUVtYWlsVXJsKCkpLnRoZW4oZnVuY3Rpb24gKHNGTFBVcmw6IGFueSkge1xuXHRcdFx0b1NoYXJlTWV0YWRhdGEuZW1haWwudXJsID0gc0ZMUFVybDtcblx0XHRcdHJldHVybiBvU2hhcmVNZXRhZGF0YTtcblx0XHR9KTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgU2hhcmVPdmVycmlkZTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7OztFQVFBLFNBQVNBLFdBQVQsQ0FBcUJDLFdBQXJCLEVBQWtEO0lBQUE7O0lBQ2pEO0lBQ0EsSUFBSUMsUUFBUSw0QkFBSUQsV0FBVyxDQUFDRSxPQUFaLEdBQXNCQyxJQUF0QixDQUEyQixxQkFBM0IsQ0FBSiwwREFBRyxzQkFBbUVDLGNBQW5FLEVBQWY7O0lBQ0EsSUFBSSxDQUFDSCxRQUFMLEVBQWU7TUFDZDtNQUNBQSxRQUFRLEdBQUdELFdBQVcsQ0FBQ0UsT0FBWixHQUFzQkcsVUFBdEIsR0FBbUMsQ0FBbkMsRUFBc0NDLElBQXRD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
|
|
@@ -442,4 +442,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/K
|
|
|
442
442
|
};
|
|
443
443
|
return ViewStateOverride;
|
|
444
444
|
}, false);
|
|
445
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlZpZXdTdGF0ZS50cyJdLCJuYW1lcyI6WyJOYXZUeXBlIiwiTmF2TGlicmFyeSIsIlZhcmlhbnRNYW5hZ2VtZW50VHlwZSIsIkNvcmVMaWJyYXJ5IiwiVmFyaWFudE1hbmFnZW1lbnQiLCJUZW1wbGF0ZUNvbnRlbnRWaWV3IiwiSW5pdGlhbExvYWRNb2RlIiwiRmlsdGVyUmVzdHJpY3Rpb25zIiwiQ29tbW9uVXRpbHMiLCJDT05ESVRJT05fUEFUSF9UT19QUk9QRVJUWV9QQVRIX1JFR0VYIiwiVmlld1N0YXRlT3ZlcnJpZGUiLCJfYlNlYXJjaFRyaWdnZXJlZCIsImFwcGx5SW5pdGlhbFN0YXRlT25seSIsIm9uQmVmb3JlU3RhdGVBcHBsaWVkIiwiYVByb21pc2VzIiwib1ZpZXciLCJnZXRWaWV3Iiwib0NvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwib0ZpbHRlckJhciIsIl9nZXRGaWx0ZXJCYXJDb250cm9sIiwiYVRhYmxlcyIsIl9nZXRDb250cm9scyIsInNldFN1c3BlbmRTZWxlY3Rpb24iLCJwdXNoIiwid2FpdEZvckluaXRpYWxpemF0aW9uIiwiZm9yRWFjaCIsIm9UYWJsZSIsImluaXRpYWxpemVkIiwib25BZnRlclN0YXRlQXBwbGllZCIsIl9pc0ZpbHRlckJhckhpZGRlbiIsIm9JbnRlcm5hbE1vZGVsQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwic2V0UHJvcGVydHkiLCJfaXNNdWx0aU1vZGUiLCJfZ2V0TXVsdGlNb2RlQ29udHJvbCIsInNldENvdW50c091dERhdGVkIiwiYWRhcHRCaW5kaW5nUmVmcmVzaENvbnRyb2xzIiwiYUNvbnRyb2xzIiwiYVZpZXdDb250cm9scyIsImFDb250cm9sc1RvUmVmcmVzaCIsIktlZXBBbGl2ZUhlbHBlciIsImdldENvbnRyb2xzRm9yUmVmcmVzaCIsIkFycmF5IiwicHJvdG90eXBlIiwiYXBwbHkiLCJhZGFwdFN0YXRlQ29udHJvbHMiLCJhU3RhdGVDb250cm9scyIsIm9WaWV3RGF0YSIsImdldFZpZXdEYXRhIiwiYkNvbnRyb2xWTSIsInZhcmlhbnRNYW5hZ2VtZW50IiwiQ29udHJvbCIsIm9GaWx0ZXJCYXJWTSIsIl9nZXRGaWx0ZXJCYXJWTSIsIm9RdWlja0ZpbHRlciIsImdldFF1aWNrRmlsdGVyIiwiZ2V0VmFyaWFudCIsIm9DaGFydCIsIl9oYXNNdWx0aVZpc3VhbGl6YXRpb25zIiwiX2dldFNlZ21lbnRlZEJ1dHRvbiIsIkNoYXJ0IiwiVGFibGUiLCJieUlkIiwicmV0cmlldmVBZGRpdGlvbmFsU3RhdGVzIiwibUFkZGl0aW9uYWxTdGF0ZXMiLCJiUGVuZGluZ0ZpbHRlciIsImdldFByb3BlcnR5IiwiZGF0YUxvYWRlZCIsInNBbHBDb250ZW50VmlldyIsImFscENvbnRlbnRWaWV3IiwiYXBwbHlBZGRpdGlvbmFsU3RhdGVzIiwib0FkZGl0aW9uYWxTdGF0ZXMiLCJ0cmlnZ2VyU2VhcmNoIiwic3lzdGVtIiwiZGVza3RvcCIsIkh5YnJpZCIsImdldE1vZGVsIiwiZ2V0UGF0aCIsImFwcGx5TmF2aWdhdGlvblBhcmFtZXRlcnMiLCJvTmF2aWdhdGlvblBhcmFtZXRlciIsImFSZXN1bHRzIiwib0FwcENvbXBvbmVudCIsImdldEFwcENvbXBvbmVudCIsIm9Db21wb25lbnREYXRhIiwiZ2V0Q29tcG9uZW50RGF0YSIsIm9TdGFydHVwUGFyYW1ldGVycyIsInN0YXJ0dXBQYXJhbWV0ZXJzIiwib1ZhcmlhbnRQcm9taXNlIiwiaGFuZGxlVmFyaWFudElkUGFzc2VkVmlhVVJMUGFyYW1zIiwiYkZpbHRlclZhcmlhbnRBcHBsaWVkIiwidGhlbiIsImFWYXJpYW50cyIsImxlbmd0aCIsIl9hcHBseVNlbGVjdGlvblZhcmlhbnQiLCJvRHluYW1pY1BhZ2UiLCJiUHJldmVudEluaXRpYWxTZWFyY2giLCJvRmlsdGVyQmFyQ29udHJvbCIsIm5hdmlnYXRpb25UeXBlIiwiaW5pdGlhbCIsInJlcXVpcmVzU3RhbmRhcmRWYXJpYW50IiwiaW5pdGlhbExvYWQiLCJFbmFibGVkIiwiX3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoIiwiX3ByZXZlbnRJbml0aWFsU2VhcmNoIiwic2V0SGVhZGVyRXhwYW5kZWQiLCJjYXRjaCIsIkxvZyIsImVycm9yIiwib1VybFBhcmFtcyIsImFQYWdlVmFyaWFudElkIiwiYUZpbHRlckJhclZhcmlhbnRJZCIsImFUYWJsZVZhcmlhbnRJZCIsIm9WYXJpYW50Iiwic1BhZ2VWYXJpYW50SWQiLCJzRmlsdGVyQmFyVmFyaWFudElkIiwic1RhYmxlVmFyaWFudElkIiwiX2hhbmRsZUNvbnRyb2xWYXJpYW50SWQiLCJvVmFyaWFudElEcyIsIm9WTSIsInNWYXJpYW50TWFuYWdlbWVudCIsImdldFZhcmlhbnRzIiwia2V5IiwiX2FwcGx5Q29udHJvbFZhcmlhbnQiLCJnZXRDb250ZW50IiwiZGF0YSIsIm9UYWJsZVZhcmlhbnQiLCJQcm9taXNlIiwiYWxsIiwic1ZhcmlhbnRJRCIsInNWYXJpYW50UmVmZXJlbmNlIiwiX2NoZWNrSWZWYXJpYW50SWRJc0F2YWlsYWJsZSIsImdldFN0YW5kYXJkVmFyaWFudEtleSIsIkNvbnRyb2xWYXJpYW50QXBwbHlBUEkiLCJhY3RpdmF0ZVZhcmlhbnQiLCJlbGVtZW50IiwidmFyaWFudFJlZmVyZW5jZSIsIlBhZ2UiLCJOb25lIiwiRXJyb3IiLCJvVmFyaWFudE1hbmFnZW1lbnQiLCJvQ3VycmVudFZhcmlhbnQiLCJmaW5kIiwib0l0ZW0iLCJnZXRDdXJyZW50VmFyaWFudEtleSIsImV4ZWN1dGVPblNlbGVjdCIsIm9TZWxlY3Rpb25WYXJpYW50Iiwic2VsZWN0aW9uVmFyaWFudCIsIm9TZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMiLCJzZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMiLCJyZXNvbHZlIiwib0NvbmRpdGlvbnMiLCJvTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwic0NvbnRleHRQYXRoIiwiY29udGV4dFBhdGgiLCJlbnRpdHlTZXQiLCJhTWFuZGF0b3J5RmlsdGVyRmllbGRzIiwiZ2V0TWFuZGF0b3J5RmlsdGVyRmllbGRzIiwiYlJlcXVpcmVzU3RhbmRhcmRWYXJpYW50IiwiZ2V0Q29uZGl0aW9ucyIsImFkZERlZmF1bHREaXNwbGF5Q3VycmVuY3kiLCJhZGRTZWxlY3Rpb25WYXJpYW50VG9Db25kaXRpb25zIiwiX2FjdGl2YXRlU2VsZWN0aW9uVmFyaWFudCIsIm9Qcm9taXNlIiwib1ZhcmlhbnRLZXkiLCJnZXREZWZhdWx0VmFyaWFudEtleSIsImdldElkIiwiYkNsZWFyRmlsdGVyQW5kUmVwbGFjZVdpdGhBcHBTdGF0ZSIsIl9mbkFwcGx5Q29uZGl0aW9ucyIsIm1GaWx0ZXIiLCJhSXRlbXMiLCJmbkFkanVzdFZhbHVlSGVscENvbmRpdGlvbiIsIm9Db25kaXRpb24iLCJ2YWxpZGF0ZWQiLCJDb25kaXRpb25WYWxpZGF0ZWQiLCJWYWxpZGF0ZWQiLCJvcGVyYXRvciIsInZhbHVlcyIsImlzRW1wdHkiLCJmbkdldFByb3BlcnR5SW5mbyIsIm9GaWx0ZXJDb250cm9sIiwic0VudGl0eVR5cGVQYXRoIiwic0VudGl0eVNldFBhdGgiLCJNb2RlbEhlbHBlciIsImdldEVudGl0eVNldFBhdGgiLCJvRlIiLCJnZXRGaWx0ZXJSZXN0cmljdGlvbnNCeVBhdGgiLCJhTm9uRmlsdGVyYWJsZVByb3BzIiwiTk9OX0ZJTFRFUkFCTEVfUFJPUEVSVElFUyIsIm1GaWx0ZXJGaWVsZHMiLCJGaWx0ZXJVdGlscyIsImdldENvbnZlcnRlZEZpbHRlckZpZWxkcyIsImFQcm9wZXJ0eUluZm8iLCJPYmplY3QiLCJrZXlzIiwic0ZpbHRlckZpZWxkS2V5Iiwib0NvbnZlcnRlZFByb3BlcnR5Iiwic1Byb3BlcnR5UGF0aCIsImNvbmRpdGlvblBhdGgiLCJyZXBsYWNlIiwiaW5kZXhPZiIsInNBbm5vdGF0aW9uUGF0aCIsImFubm90YXRpb25QYXRoIiwib1Byb3BlcnR5Q29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwicGF0aCIsImhpZGRlbkZpbHRlciIsImF2YWlsYWJpbGl0eSIsImhhc1ZhbHVlSGVscCIsIlByb3BlcnR5Rm9ybWF0dGVycyIsImdldE9iamVjdCIsImNvbnRleHQiLCJEZWxlZ2F0ZVV0aWwiLCJnZXRDdXN0b21EYXRhIiwiZmlsdGVyIiwib1Byb3BlcnR5SW5mbyIsIm5hbWUiLCJOb3RWYWxpZGF0ZWQiLCJTdGF0ZVV0aWwiLCJhcHBseUV4dGVybmFsU3RhdGUiLCJpdGVtcyJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7O0FBaUJBLE1BQU1BLE9BQU8sR0FBR0MsVUFBVSxDQUFDRCxPQUEzQjtBQUFBLE1BQ0NFLHFCQUFxQixHQUFHQyxXQUFXLENBQUNDLGlCQURyQztBQUFBLE1BRUNDLG1CQUFtQixHQUFHRixXQUFXLENBQUNFLG1CQUZuQztBQUFBLE1BR0NDLGVBQWUsR0FBR0gsV0FBVyxDQUFDRyxlQUgvQjtBQUlBLE1BQU1DLGtCQUFrQixHQUFHQyxXQUFXLENBQUNELGtCQUF2QztBQUFBLE1BQ0NFLHFDQUFxQyxHQUFHLFFBRHpDO0FBR0EsTUFBTUMsaUJBQXNCLEdBQUc7QUFDOUJDLElBQUFBLGlCQUFpQixFQUFFLEtBRFc7QUFFOUJDLElBQUFBLHFCQUFxQixFQUFFLFlBQVk7QUFDbEMsYUFBTyxJQUFQO0FBQ0EsS0FKNkI7QUFLOUJDLElBQUFBLG9CQUFvQixFQUFFLFVBQXNEQyxTQUF0RCxFQUFzRTtBQUMzRixVQUFNQyxLQUFLLEdBQUcsS0FBS0MsT0FBTCxFQUFkO0FBQUEsVUFDQ0MsV0FBVyxHQUFHRixLQUFLLENBQUNHLGFBQU4sRUFEZjtBQUFBLFVBRUNDLFVBQVUsR0FBR0YsV0FBVyxDQUFDRyxvQkFBWixFQUZkO0FBQUEsVUFHQ0MsT0FBTyxHQUFHSixXQUFXLENBQUNLLFlBQVosQ0FBeUIsT0FBekIsQ0FIWDs7QUFJQSxVQUFJSCxVQUFKLEVBQWdCO0FBQ2ZBLFFBQUFBLFVBQVUsQ0FBQ0ksbUJBQVgsQ0FBK0IsSUFBL0I7QUFDQVQsUUFBQUEsU0FBUyxDQUFDVSxJQUFWLENBQWdCTCxVQUFELENBQW9CTSxxQkFBcEIsRUFBZjtBQUNBOztBQUNESixNQUFBQSxPQUFPLENBQUNLLE9BQVIs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QUE5QjtBQUNBO0FBQ0QsU0FwQkY7QUFxQkEsZUFBT2EsU0FBUyxDQUFDQyxrQkFBVixDQUE2QnpNLFVBQTdCLEVBQXlDO0FBQUVvTSxVQUFBQSxNQUFNLEVBQUU3QyxPQUFWO0FBQW1CbUQsVUFBQUEsS0FBSyxFQUFFbEQ7QUFBMUIsU0FBekMsQ0FBUDtBQUNBLE9BekJNLENBQVA7QUEwQkE7QUFqWTZCLEdBQS9CO1NBb1llakssaUIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgVmlld1N0YXRlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCBLZWVwQWxpdmVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvS2VlcEFsaXZlSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IENvcmVMaWJyYXJ5IGZyb20gXCJzYXAvZmUvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgKiBhcyBQcm9wZXJ0eUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgRGVsZWdhdGVVdGlsIGZyb20gXCJzYXAvZmUvbWFjcm9zL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IEZpbHRlclV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJVdGlsc1wiO1xuaW1wb3J0IE5hdkxpYnJhcnkgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIExpc3RSZXBvcnRDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL0xpc3RSZXBvcnQvTGlzdFJlcG9ydENvbnRyb2xsZXIuY29udHJvbGxlclwiO1xuaW1wb3J0IHsgc3lzdGVtIH0gZnJvbSBcInNhcC91aS9EZXZpY2VcIjtcbmltcG9ydCBDb250cm9sVmFyaWFudEFwcGx5QVBJIGZyb20gXCJzYXAvdWkvZmwvYXBwbHkvYXBpL0NvbnRyb2xWYXJpYW50QXBwbHlBUElcIjtcbmltcG9ydCB0eXBlIFZhcmlhbnRNYW5hZ2VtZW50IGZyb20gXCJzYXAvdWkvZmwvdmFyaWFudHMvVmFyaWFudE1hbmFnZW1lbnRcIjtcbmltcG9ydCBDb25kaXRpb25WYWxpZGF0ZWQgZnJvbSBcInNhcC91aS9tZGMvZW51bS9Db25kaXRpb25WYWxpZGF0ZWRcIjtcbmltcG9ydCBTdGF0ZVV0aWwgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5cbmNvbnN0IE5hdlR5cGUgPSBOYXZMaWJyYXJ5Lk5hdlR5cGUsXG5cdFZhcmlhbnRNYW5hZ2VtZW50VHlwZSA9IENvcmVMaWJyYXJ5LlZhcmlhbnRNYW5hZ2VtZW50LFxuXHRUZW1wbGF0ZUNvbnRlbnRWaWV3ID0gQ29yZUxpYnJhcnkuVGVtcGxhdGVDb250ZW50Vmlldyxcblx0SW5pdGlhbExvYWRNb2RlID0gQ29yZUxpYnJhcnkuSW5pdGlhbExvYWRNb2RlO1xuY29uc3QgRmlsdGVyUmVzdHJpY3Rpb25zID0gQ29tbW9uVXRpbHMuRmlsdGVyUmVzdHJpY3Rpb25zLFxuXHRDT05ESVRJT05fUEFUSF9UT19QUk9QRVJUWV9QQVRIX1JFR0VYID0gL1xcK3xcXCovZztcblxuY29uc3QgVmlld1N0YXRlT3ZlcnJpZGU6IGFueSA9IHtcblx0X2JTZWFyY2hUcmlnZ2VyZWQ6IGZhbHNlLFxuXHRhcHBseUluaXRpYWxTdGF0ZU9ubHk6IGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblx0b25CZWZvcmVTdGF0ZUFwcGxpZWQ6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIGFQcm9taXNlczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0b0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCksXG5cdFx0XHRhVGFibGVzID0gb0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwidGFibGVcIik7XG5cdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdG9GaWx0ZXJCYXIuc2V0U3VzcGVuZFNlbGVjdGlvbih0cnVlKTtcblx0XHRcdGFQcm9taXNlcy5wdXNoKChvRmlsdGVyQmFyIGFzIGFueSkud2FpdEZvckluaXRpYWxpemF0aW9uKCkpO1xuXHRcdH1cblx0XHRhVGFibGVzLmZvckVhY2goZnVuY3Rpb24gKG9UYWJsZTogYW55KSB7XG5cdFx0XHRhUHJvbWlzZXMucHVzaChvVGFibGUuaW5pdGlhbGl6ZWQoKSk7XG5cdFx0fSk7XG5cblx0XHRkZWxldGUgdGhpcy5fYlNlYXJjaFRyaWdnZXJlZDtcblx0fSxcblx0b25BZnRlclN0YXRlQXBwbGllZDogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSkge1xuXHRcdGNvbnN0IG9Db250cm9sbGVyID0gdGhpcy5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyO1xuXHRcdGNvbnN0IG9GaWx0ZXJCYXIgPSBvQ29udHJvbGxlci5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpO1xuXHRcdGlmIChvRmlsdGVyQmFyKSB7XG5cdFx0XHRvRmlsdGVyQmFyLnNldFN1c3BlbmRTZWxlY3Rpb24oZmFsc2UpO1xuXHRcdH0gZWxzZSBpZiAob0NvbnRyb2xsZXIuX2lzRmlsdGVyQmFySGlkZGVuKCkpIHtcblx0XHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9Db250cm9sbGVyLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiaGFzUGVuZGluZ0ZpbHRlcnNcIiwgZmFsc2UpO1xuXHRcdFx0aWYgKG9Db250cm9sbGVyLl9pc011bHRpTW9kZSgpKSB7XG5cdFx0XHRcdG9Db250cm9sbGVyLl9nZXRNdWx0aU1vZGVDb250cm9sKCkuc2V0Q291bnRzT3V0RGF0ZWQodHJ1ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRhZGFwdEJpbmRpbmdSZWZyZXNoQ29udHJvbHM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUsIGFDb250cm9sczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0YVZpZXdDb250cm9scyA9IG9Db250cm9sbGVyLl9nZXRDb250cm9scygpLFxuXHRcdFx0YUNvbnRyb2xzVG9SZWZyZXNoID0gS2VlcEFsaXZlSGVscGVyLmdldENvbnRyb2xzRm9yUmVmcmVzaChvVmlldywgYVZpZXdDb250cm9scyk7XG5cblx0XHRBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhQ29udHJvbHMsIGFDb250cm9sc1RvUmVmcmVzaCk7XG5cdH0sXG5cdGFkYXB0U3RhdGVDb250cm9sczogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSwgYVN0YXRlQ29udHJvbHM6IGFueSkge1xuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcixcblx0XHRcdG9WaWV3RGF0YSA9IG9WaWV3LmdldFZpZXdEYXRhKCksXG5cdFx0XHRiQ29udHJvbFZNID0gb1ZpZXdEYXRhLnZhcmlhbnRNYW5hZ2VtZW50ID09PSBWYXJpYW50TWFuYWdlbWVudFR5cGUuQ29udHJvbDtcblxuXHRcdGNvbnN0IG9GaWx0ZXJCYXJWTSA9IHRoaXMuX2dldEZpbHRlckJhclZNKG9WaWV3KTtcblx0XHRpZiAob0ZpbHRlckJhclZNKSB7XG5cdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9GaWx0ZXJCYXJWTSk7XG5cdFx0fVxuXHRcdGlmIChvQ29udHJvbGxlci5faXNNdWx0aU1vZGUoKSkge1xuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ29udHJvbGxlci5fZ2V0TXVsdGlNb2RlQ29udHJvbCgpKTtcblx0XHR9XG5cdFx0b0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwidGFibGVcIikuZm9yRWFjaChmdW5jdGlvbiAob1RhYmxlOiBhbnkpIHtcblx0XHRcdGNvbnN0IG9RdWlja0ZpbHRlciA9IG9UYWJsZS5nZXRRdWlja0ZpbHRlcigpO1xuXHRcdFx0aWYgKG9RdWlja0ZpbHRlcikge1xuXHRcdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9RdWlja0ZpbHRlcik7XG5cdFx0XHR9XG5cdFx0XHRpZiAoYkNvbnRyb2xWTSkge1xuXHRcdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9UYWJsZS5nZXRWYXJpYW50KCkpO1xuXHRcdFx0fVxuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvVGFibGUpO1xuXHRcdH0pO1xuXHRcdGlmIChvQ29udHJvbGxlci5fZ2V0Q29udHJvbHMoXCJDaGFydFwiKSkge1xuXHRcdFx0b0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwiQ2hhcnRcIikuZm9yRWFjaChmdW5jdGlvbiAob0NoYXJ0OiBhbnkpIHtcblx0XHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ2hhcnQpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGlmIChvQ29udHJvbGxlci5faGFzTXVsdGlWaXN1YWxpemF0aW9ucygpKSB7XG5cdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9Db250cm9sbGVyLl9nZXRTZWdtZW50ZWRCdXR0b24oVGVtcGxhdGVDb250ZW50Vmlldy5DaGFydCkpO1xuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ29udHJvbGxlci5fZ2V0U2VnbWVudGVkQnV0dG9uKFRlbXBsYXRlQ29udGVudFZpZXcuVGFibGUpKTtcblx0XHR9XG5cdFx0Y29uc3Qgb0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0ZpbHRlckJhcik7XG5cdFx0fVxuXHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob1ZpZXcuYnlJZChcImZlOjpMaXN0UmVwb3J0XCIpKTtcblx0fSxcblx0cmV0cmlldmVBZGRpdGlvbmFsU3RhdGVzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBtQWRkaXRpb25hbFN0YXRlczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0YlBlbmRpbmdGaWx0ZXIgPSAob1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCkuZ2V0UHJvcGVydHkoXCJoYXNQZW5kaW5nRmlsdGVyc1wiKTtcblxuXHRcdG1BZGRpdGlvbmFsU3RhdGVzLmRhdGFMb2FkZWQgPSAhYlBlbmRpbmdGaWx0ZXIgfHwgISF0aGlzLl9iU2VhcmNoVHJpZ2dlcmVkO1xuXHRcdGlmIChvQ29udHJvbGxlci5faGFzTXVsdGlWaXN1YWxpemF0aW9ucygpKSB7XG5cdFx0XHRjb25zdCBzQWxwQ29udGVudFZpZXcgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpLmdldFByb3BlcnR5KFwiYWxwQ29udGVudFZpZXdcIik7XG5cdFx0XHRtQWRkaXRpb25hbFN0YXRlcy5hbHBDb250ZW50VmlldyA9IHNBbHBDb250ZW50Vmlldztcblx0XHR9XG5cblx0XHRkZWxldGUgdGhpcy5fYlNlYXJjaFRyaWdnZXJlZDtcblx0fSxcblx0YXBwbHlBZGRpdGlvbmFsU3RhdGVzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBvQWRkaXRpb25hbFN0YXRlczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0b0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cblx0XHRpZiAob0FkZGl0aW9uYWxTdGF0ZXMpIHtcblx0XHRcdC8vIGV4cGxpY2l0IGNoZWNrIGZvciBib29sZWFuIHZhbHVlcyAtICd1bmRlZmluZWQnIHNob3VsZCBub3QgYWx0ZXIgdGhlIHRyaWdnZXJlZCBzZWFyY2ggcHJvcGVydHlcblx0XHRcdGlmIChvQWRkaXRpb25hbFN0YXRlcy5kYXRhTG9hZGVkID09PSBmYWxzZSAmJiBvRmlsdGVyQmFyKSB7XG5cdFx0XHRcdC8vIHdpdGhvdXQgdGhpcywgdGhlIGRhdGEgaXMgbG9hZGVkIG9uIG5hdmlnYXRpbmcgYmFja1xuXHRcdFx0XHQob0ZpbHRlckJhciBhcyBhbnkpLl9iU2VhcmNoVHJpZ2dlcmVkID0gZmFsc2U7XG5cdFx0XHR9IGVsc2UgaWYgKG9BZGRpdGlvbmFsU3RhdGVzLmRhdGFMb2FkZWQgPT09IHRydWUpIHtcblx0XHRcdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdFx0XHRvRmlsdGVyQmFyLnRyaWdnZXJTZWFyY2goKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLl9iU2VhcmNoVHJpZ2dlcmVkID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGlmIChvQ29udHJvbGxlci5faGFzTXVsdGlWaXN1YWxpemF0aW9ucygpKSB7XG5cdFx0XHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0XHRcdGlmICghc3lzdGVtLmRlc2t0b3AgJiYgb0FkZGl0aW9uYWxTdGF0ZXMuYWxwQ29udGVudFZpZXcgPT0gVGVtcGxhdGVDb250ZW50Vmlldy5IeWJyaWQpIHtcblx0XHRcdFx0XHRvQWRkaXRpb25hbFN0YXRlcy5hbHBDb250ZW50VmlldyA9IFRlbXBsYXRlQ29udGVudFZpZXcuQ2hhcnQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0KG9JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRNb2RlbCgpIGFzIEpTT05Nb2RlbCkuc2V0UHJvcGVydHkoXG5cdFx0XHRcdFx0YCR7b0ludGVybmFsTW9kZWxDb250ZXh0LmdldFBhdGgoKX0vYWxwQ29udGVudFZpZXdgLFxuXHRcdFx0XHRcdG9BZGRpdGlvbmFsU3RhdGVzLmFscENvbnRlbnRWaWV3XG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRhcHBseU5hdmlnYXRpb25QYXJhbWV0ZXJzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBvTmF2aWdhdGlvblBhcmFtZXRlcjogYW55LCBhUmVzdWx0czogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKTtcblx0XHRjb25zdCBvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcjtcblx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gb0NvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCk7XG5cdFx0Y29uc3Qgb0NvbXBvbmVudERhdGEgPSBvQXBwQ29tcG9uZW50LmdldENvbXBvbmVudERhdGEoKTtcblx0XHRjb25zdCBvU3RhcnR1cFBhcmFtZXRlcnMgPSAob0NvbXBvbmVudERhdGEgJiYgb0NvbXBvbmVudERhdGEuc3RhcnR1cFBhcmFtZXRlcnMpIHx8IHt9O1xuXHRcdGNvbnN0IG9WYXJpYW50UHJvbWlzZSA9IHRoaXMuaGFuZGxlVmFyaWFudElkUGFzc2VkVmlhVVJMUGFyYW1zKG9TdGFydHVwUGFyYW1ldGVycyk7XG5cdFx0bGV0IGJGaWx0ZXJWYXJpYW50QXBwbGllZDogYm9vbGVhbjtcblx0XHRhUmVzdWx0cy5wdXNoKFxuXHRcdFx0b1ZhcmlhbnRQcm9taXNlXG5cdFx0XHRcdC50aGVuKChhVmFyaWFudHM6IGFueVtdKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGFWYXJpYW50cyAmJiBhVmFyaWFudHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0aWYgKGFWYXJpYW50c1swXSA9PT0gdHJ1ZSB8fCBhVmFyaWFudHNbMV0gPT09IHRydWUpIHtcblx0XHRcdFx0XHRcdFx0YkZpbHRlclZhcmlhbnRBcHBsaWVkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuX2FwcGx5U2VsZWN0aW9uVmFyaWFudChvVmlldywgb05hdmlnYXRpb25QYXJhbWV0ZXIsIGJGaWx0ZXJWYXJpYW50QXBwbGllZCk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRjb25zdCBvRHluYW1pY1BhZ2UgPSBvVmlldy5ieUlkKFwiZmU6Okxpc3RSZXBvcnRcIik7XG5cdFx0XHRcdFx0bGV0IGJQcmV2ZW50SW5pdGlhbFNlYXJjaCA9IGZhbHNlO1xuXHRcdFx0XHRcdGNvbnN0IG9GaWx0ZXJCYXJWTSA9IHRoaXMuX2dldEZpbHRlckJhclZNKG9WaWV3KTtcblx0XHRcdFx0XHRjb25zdCBvRmlsdGVyQmFyQ29udHJvbCA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0XHRcdFx0aWYgKG9GaWx0ZXJCYXJDb250cm9sKSB7XG5cdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdChvTmF2aWdhdGlvblBhcmFtZXRlci5uYXZpZ2F0aW9uVHlwZSAhPT0gTmF2VHlwZS5pbml0aWFsICYmIG9OYXZpZ2F0aW9uUGFyYW1ldGVyLnJlcXVpcmVzU3RhbmRhcmRWYXJpYW50KSB8fFxuXHRcdFx0XHRcdFx0XHQoIW9GaWx0ZXJCYXJWTSAmJiBvVmlldy5nZXRWaWV3RGF0YSgpLmluaXRpYWxMb2FkID09PSBJbml0aWFsTG9hZE1vZGUuRW5hYmxlZCkgfHxcblx0XHRcdFx0XHRcdFx0b0NvbnRyb2xsZXIuX3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoKG9GaWx0ZXJCYXJWTSlcblx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRvRmlsdGVyQmFyQ29udHJvbC50cmlnZ2VyU2VhcmNoKCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRiUHJldmVudEluaXRpYWxTZWFyY2ggPSB0aGlzLl9wcmV2ZW50SW5pdGlhbFNlYXJjaChvRmlsdGVyQmFyVk0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Ly8gcmVzZXQgdGhlIHN1c3BlbmQgc2VsZWN0aW9uIG9uIGZpbHRlciBiYXIgdG8gYWxsb3cgbG9hZGluZyBvZiBkYXRhIHdoZW4gbmVlZGVkICh3YXMgc2V0IG9uIExSIEluaXQpXG5cdFx0XHRcdFx0XHRvRmlsdGVyQmFyQ29udHJvbC5zZXRTdXNwZW5kU2VsZWN0aW9uKGZhbHNlKTtcblx0XHRcdFx0XHRcdHRoaXMuX2JTZWFyY2hUcmlnZ2VyZWQgPSAhYlByZXZlbnRJbml0aWFsU2VhcmNoO1xuXHRcdFx0XHRcdFx0b0R5bmFtaWNQYWdlLnNldEhlYWRlckV4cGFuZGVkKHN5c3RlbS5kZXNrdG9wIHx8IGJQcmV2ZW50SW5pdGlhbFNlYXJjaCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdExvZy5lcnJvcihcIlZhcmlhbnQgSUQgY2Fubm90IGJlIGFwcGxpZWRcIik7XG5cdFx0XHRcdH0pXG5cdFx0KTtcblx0fSxcblxuXHRoYW5kbGVWYXJpYW50SWRQYXNzZWRWaWFVUkxQYXJhbXM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIG9VcmxQYXJhbXM6IGFueSkge1xuXHRcdGNvbnN0IGFQYWdlVmFyaWFudElkID0gb1VybFBhcmFtc1tcInNhcC11aS1mZS12YXJpYW50LWlkXCJdLFxuXHRcdFx0YUZpbHRlckJhclZhcmlhbnRJZCA9IG9VcmxQYXJhbXNbXCJzYXAtdWktZmUtZmlsdGVyYmFyLXZhcmlhbnQtaWRcIl0sXG5cdFx0XHRhVGFibGVWYXJpYW50SWQgPSBvVXJsUGFyYW1zW1wic2FwLXVpLWZlLXRhYmxlLXZhcmlhbnQtaWRcIl07XG5cdFx0bGV0IG9WYXJpYW50O1xuXHRcdGlmIChhUGFnZVZhcmlhbnRJZCB8fCBhRmlsdGVyQmFyVmFyaWFudElkIHx8IGFUYWJsZVZhcmlhbnRJZCkge1xuXHRcdFx0b1ZhcmlhbnQgPSB7XG5cdFx0XHRcdHNQYWdlVmFyaWFudElkOiBhUGFnZVZhcmlhbnRJZCAmJiBhUGFnZVZhcmlhbnRJZFswXSxcblx0XHRcdFx0c0ZpbHRlckJhclZhcmlhbnRJZDogYUZpbHRlckJhclZhcmlhbnRJZCAmJiBhRmlsdGVyQmFyVmFyaWFudElkWzBdLFxuXHRcdFx0XHRzVGFibGVWYXJpYW50SWQ6IGFUYWJsZVZhcmlhbnRJZCAmJiBhVGFibGVWYXJpYW50SWRbMF1cblx0XHRcdH07XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLl9oYW5kbGVDb250cm9sVmFyaWFudElkKG9WYXJpYW50KTtcblx0fSxcblxuXHRfaGFuZGxlQ29udHJvbFZhcmlhbnRJZDogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSwgb1ZhcmlhbnRJRHM6IGFueSkge1xuXHRcdGxldCBvVk06IFZhcmlhbnRNYW5hZ2VtZW50O1xuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRhUHJvbWlzZXM6IGFueVtdID0gW107XG5cdFx0Y29uc3Qgc1ZhcmlhbnRNYW5hZ2VtZW50ID0gb1ZpZXcuZ2V0Vmlld0RhdGEoKS52YXJpYW50TWFuYWdlbWVudDtcblx0XHRpZiAob1ZhcmlhbnRJRHMgJiYgb1ZhcmlhbnRJRHMuc1BhZ2VWYXJpYW50SWQgJiYgc1ZhcmlhbnRNYW5hZ2VtZW50ID09PSBcIlBhZ2VcIikge1xuXHRcdFx0b1ZNID0gb1ZpZXcuYnlJZChcImZlOjpQYWdlVmFyaWFudE1hbmFnZW1lbnRcIik7XG5cdFx0XHRvVk0uZ2V0VmFyaWFudHMoKS5mb3JFYWNoKChvVmFyaWFudDogYW55KSA9PiB7XG5cdFx0XHRcdGlmIChvVmFyaWFudC5rZXkgPT09IG9WYXJpYW50SURzLnNQYWdlVmFyaWFudElkKSB7XG5cdFx0XHRcdFx0YVByb21pc2VzLnB1c2godGhpcy5fYXBwbHlDb250cm9sVmFyaWFudChvVk0sIG9WYXJpYW50SURzLnNQYWdlVmFyaWFudElkLCB0cnVlKSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0gZWxzZSBpZiAob1ZhcmlhbnRJRHMgJiYgc1ZhcmlhbnRNYW5hZ2VtZW50ID09PSBcIkNvbnRyb2xcIikge1xuXHRcdFx0aWYgKG9WYXJpYW50SURzLnNGaWx0ZXJCYXJWYXJpYW50SWQpIHtcblx0XHRcdFx0b1ZNID0gb1ZpZXcuYnlJZChvVmlldy5nZXRDb250ZW50KClbMF0uZGF0YShcImZpbHRlckJhclZhcmlhbnRJZFwiKSk7XG5cdFx0XHRcdGlmIChvVk0pIHtcblx0XHRcdFx0XHRvVk0uZ2V0VmFyaWFudHMoKS5mb3JFYWNoKChvVmFyaWFudDogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAob1ZhcmlhbnQua2V5ID09PSBvVmFyaWFudElEcy5zRmlsdGVyQmFyVmFyaWFudElkKSB7XG5cdFx0XHRcdFx0XHRcdGFQcm9taXNlcy5wdXNoKHRoaXMuX2FwcGx5Q29udHJvbFZhcmlhbnQob1ZNLCBvVmFyaWFudElEcy5zRmlsdGVyQmFyVmFyaWFudElkLCB0cnVlKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChvVmFyaWFudElEcy5zVGFibGVWYXJpYW50SWQpIHtcblx0XHRcdFx0Y29uc3Qgb0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCksXG5cdFx0XHRcdFx0YVRhYmxlcyA9IG9Db250cm9sbGVyLl9nZXRDb250cm9scyhcInRhYmxlXCIpO1xuXHRcdFx0XHRhVGFibGVzLmZvckVhY2goKG9UYWJsZTogYW55KSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgb1RhYmxlVmFyaWFudCA9IG9UYWJsZS5nZXRWYXJpYW50KCk7XG5cdFx0XHRcdFx0aWYgKG9UYWJsZSAmJiBvVGFibGVWYXJpYW50KSB7XG5cdFx0XHRcdFx0XHRvVGFibGVWYXJpYW50LmdldFZhcmlhbnRzKCkuZm9yRWFjaCgob1ZhcmlhbnQ6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAob1ZhcmlhbnQua2V5ID09PSBvVmFyaWFudElEcy5zVGFibGVWYXJpYW50SWQpIHtcblx0XHRcdFx0XHRcdFx0XHRhUHJvbWlzZXMucHVzaCh0aGlzLl9hcHBseUNvbnRyb2xWYXJpYW50KG9UYWJsZVZhcmlhbnQsIG9WYXJpYW50SURzLnNUYWJsZVZhcmlhbnRJZCkpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoYVByb21pc2VzKTtcblx0fSxcblxuXHRfYXBwbHlDb250cm9sVmFyaWFudDogZnVuY3Rpb24gKG9WYXJpYW50OiBhbnksIHNWYXJpYW50SUQ6IGFueSwgYkZpbHRlclZhcmlhbnRBcHBsaWVkOiBhbnkpIHtcblx0XHRjb25zdCBzVmFyaWFudFJlZmVyZW5jZSA9IHRoaXMuX2NoZWNrSWZWYXJpYW50SWRJc0F2YWlsYWJsZShvVmFyaWFudCwgc1ZhcmlhbnRJRCkgPyBzVmFyaWFudElEIDogb1ZhcmlhbnQuZ2V0U3RhbmRhcmRWYXJpYW50S2V5KCk7XG5cdFx0Y29uc3Qgb1ZNID0gQ29udHJvbFZhcmlhbnRBcHBseUFQSS5hY3RpdmF0ZVZhcmlhbnQoe1xuXHRcdFx0ZWxlbWVudDogb1ZhcmlhbnQsXG5cdFx0XHR2YXJpYW50UmVmZXJlbmNlOiBzVmFyaWFudFJlZmVyZW5jZVxuXHRcdH0pO1xuXHRcdHJldHVybiBvVk0udGhlbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gYkZpbHRlclZhcmlhbnRBcHBsaWVkO1xuXHRcdH0pO1xuXHR9LFxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBwcml2YXRlIGhlbHBlciAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXHRfZ2V0RmlsdGVyQmFyVk06IGZ1bmN0aW9uIChvVmlldzogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXdEYXRhID0gb1ZpZXcuZ2V0Vmlld0RhdGEoKTtcblx0XHRzd2l0Y2ggKG9WaWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCkge1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudFR5cGUuUGFnZTpcblx0XHRcdFx0cmV0dXJuIG9WaWV3LmJ5SWQoXCJmZTo6UGFnZVZhcmlhbnRNYW5hZ2VtZW50XCIpO1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudFR5cGUuQ29udHJvbDpcblx0XHRcdFx0cmV0dXJuIG9WaWV3LmJ5SWQob1ZpZXcuZ2V0Q29udGVudCgpWzBdLmRhdGEoXCJmaWx0ZXJCYXJWYXJpYW50SWRcIikpO1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudFR5cGUuTm9uZTpcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYHVuaGFuZGxlZCB2YXJpYW50IHNldHRpbmc6ICR7b1ZpZXdEYXRhLnZhcmlhbnRNYW5hZ2VtZW50fWApO1xuXHRcdH1cblx0fSxcblxuXHRfcHJldmVudEluaXRpYWxTZWFyY2g6IGZ1bmN0aW9uIChvVmFyaWFudE1hbmFnZW1lbnQ6IGFueSkge1xuXHRcdGlmICghb1ZhcmlhbnRNYW5hZ2VtZW50KSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0Y29uc3QgYVZhcmlhbnRzID0gb1ZhcmlhbnRNYW5hZ2VtZW50LmdldFZhcmlhbnRzKCk7XG5cdFx0Y29uc3Qgb0N1cnJlbnRWYXJpYW50ID0gYVZhcmlhbnRzLmZpbmQoZnVuY3Rpb24gKG9JdGVtOiBhbnkpIHtcblx0XHRcdHJldHVybiBvSXRlbS5rZXkgPT09IG9WYXJpYW50TWFuYWdlbWVudC5nZXRDdXJyZW50VmFyaWFudEtleSgpO1xuXHRcdH0pO1xuXHRcdHJldHVybiAhb0N1cnJlbnRWYXJpYW50LmV4ZWN1dGVPblNlbGVjdDtcblx0fSxcblxuXHRfYXBwbHlTZWxlY3Rpb25WYXJpYW50OiBmdW5jdGlvbiAob1ZpZXc6IGFueSwgb05hdmlnYXRpb25QYXJhbWV0ZXI6IGFueSwgYkZpbHRlclZhcmlhbnRBcHBsaWVkOiBhbnkpIHtcblx0XHRjb25zdCBvRmlsdGVyQmFyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpLl9nZXRGaWx0ZXJCYXJDb250cm9sKCksXG5cdFx0XHRvU2VsZWN0aW9uVmFyaWFudCA9IG9OYXZpZ2F0aW9uUGFyYW1ldGVyLnNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRvU2VsZWN0aW9uVmFyaWFudERlZmF1bHRzID0gb05hdmlnYXRpb25QYXJhbWV0ZXIuc2VsZWN0aW9uVmFyaWFudERlZmF1bHRzO1xuXHRcdGlmICghb0ZpbHRlckJhciB8fCAhb1NlbGVjdGlvblZhcmlhbnQpIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cdFx0bGV0IG9Db25kaXRpb25zID0ge307XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9WaWV3LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3Qgb1ZpZXdEYXRhID0gb1ZpZXcuZ2V0Vmlld0RhdGEoKTtcblx0XHRjb25zdCBzQ29udGV4dFBhdGggPSBvVmlld0RhdGEuY29udGV4dFBhdGggfHwgYC8ke29WaWV3RGF0YS5lbnRpdHlTZXR9YDtcblx0XHRjb25zdCBhTWFuZGF0b3J5RmlsdGVyRmllbGRzID0gQ29tbW9uVXRpbHMuZ2V0TWFuZGF0b3J5RmlsdGVyRmllbGRzKG9NZXRhTW9kZWwsIHNDb250ZXh0UGF0aCk7XG5cdFx0bGV0IG9WYXJpYW50O1xuXHRcdGNvbnN0IGJSZXF1aXJlc1N0YW5kYXJkVmFyaWFudCA9IG9OYXZpZ2F0aW9uUGFyYW1ldGVyLnJlcXVpcmVzU3RhbmRhcmRWYXJpYW50O1xuXG5cdFx0aWYgKGJGaWx0ZXJWYXJpYW50QXBwbGllZCkge1xuXHRcdFx0b0NvbmRpdGlvbnMgPSBvRmlsdGVyQmFyLmdldENvbmRpdGlvbnMoKTtcblx0XHR9XG5cdFx0Q29tbW9uVXRpbHMuYWRkRGVmYXVsdERpc3BsYXlDdXJyZW5jeShhTWFuZGF0b3J5RmlsdGVyRmllbGRzLCBvU2VsZWN0aW9uVmFyaWFudCwgb1NlbGVjdGlvblZhcmlhbnREZWZhdWx0cyk7XG5cdFx0Q29tbW9uVXRpbHMuYWRkU2VsZWN0aW9uVmFyaWFudFRvQ29uZGl0aW9ucyhvU2VsZWN0aW9uVmFyaWFudCwgb0NvbmRpdGlvbnMsIG9NZXRhTW9kZWwsIHNDb250ZXh0UGF0aCk7XG5cdFx0c3dpdGNoIChvVmlld0RhdGEudmFyaWFudE1hbmFnZW1lbnQpIHtcblx0XHRcdGNhc2UgVmFyaWFudE1hbmFnZW1lbnRUeXBlLlBhZ2U6XG5cdFx0XHRcdG9WYXJpYW50ID0gb1ZpZXcuYnlJZChcImZlOjpQYWdlVmFyaWFudE1hbmFnZW1lbnRcIik7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudFR5cGUuQ29udHJvbDpcblx0XHRcdFx0b1ZhcmlhbnQgPSBvVmlldy5ieUlkKG9WaWV3LmdldENvbnRlbnQoKVswXS5kYXRhKFwiZmlsdGVyQmFyVmFyaWFudElkXCIpKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFZhcmlhbnRNYW5hZ2VtZW50VHlwZS5Ob25lOlxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLl9hY3RpdmF0ZVNlbGVjdGlvblZhcmlhbnQob0ZpbHRlckJhciwgb0NvbmRpdGlvbnMsIG9WYXJpYW50LCBiUmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQsIGJGaWx0ZXJWYXJpYW50QXBwbGllZCk7XG5cdH0sXG5cdF9hY3RpdmF0ZVNlbGVjdGlvblZhcmlhbnQ6IGZ1bmN0aW9uIChcblx0XHRvRmlsdGVyQmFyOiBhbnksXG5cdFx0b0NvbmRpdGlvbnM6IGFueSxcblx0XHRvVmFyaWFudDogYW55LFxuXHRcdGJSZXF1aXJlc1N0YW5kYXJkVmFyaWFudDogYW55LFxuXHRcdGJGaWx0ZXJWYXJpYW50QXBwbGllZDogYW55XG5cdCkge1xuXHRcdGxldCBvUHJvbWlzZTtcblxuXHRcdGlmIChvVmFyaWFudCAmJiAhYkZpbHRlclZhcmlhbnRBcHBsaWVkKSB7XG5cdFx0XHRsZXQgb1ZhcmlhbnRLZXkgPSBiUmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQgPyBvVmFyaWFudC5nZXRTdGFuZGFyZFZhcmlhbnRLZXkoKSA6IG9WYXJpYW50LmdldERlZmF1bHRWYXJpYW50S2V5KCk7XG5cdFx0XHRpZiAob1ZhcmlhbnRLZXkgPT09IG51bGwpIHtcblx0XHRcdFx0b1ZhcmlhbnRLZXkgPSBvVmFyaWFudC5nZXRJZCgpO1xuXHRcdFx0fVxuXHRcdFx0b1Byb21pc2UgPSBDb250cm9sVmFyaWFudEFwcGx5QVBJLmFjdGl2YXRlVmFyaWFudCh7XG5cdFx0XHRcdGVsZW1lbnQ6IG9WYXJpYW50LFxuXHRcdFx0XHR2YXJpYW50UmVmZXJlbmNlOiBvVmFyaWFudEtleVxuXHRcdFx0fSkudGhlbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHJldHVybiBiUmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQgfHwgb1ZhcmlhbnQuZ2V0RGVmYXVsdFZhcmlhbnRLZXkoKSA9PT0gb1ZhcmlhbnQuZ2V0U3RhbmRhcmRWYXJpYW50S2V5KCk7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b1Byb21pc2UgPSBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XG5cdFx0fVxuXHRcdHJldHVybiBvUHJvbWlzZS50aGVuKChiQ2xlYXJGaWx0ZXJBbmRSZXBsYWNlV2l0aEFwcFN0YXRlOiBhbnkpID0+IHtcblx0XHRcdGlmIChiQ2xlYXJGaWx0ZXJBbmRSZXBsYWNlV2l0aEFwcFN0YXRlKSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLl9mbkFwcGx5Q29uZGl0aW9ucyhvRmlsdGVyQmFyLCBvQ29uZGl0aW9ucyk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cdF9mbkFwcGx5Q29uZGl0aW9uczogZnVuY3Rpb24gKG9GaWx0ZXJCYXI6IGFueSwgb0NvbmRpdGlvbnM6IGFueSkge1xuXHRcdGNvbnN0IG1GaWx0ZXI6IGFueSA9IHt9LFxuXHRcdFx0YUl0ZW1zOiBhbnlbXSA9IFtdLFxuXHRcdFx0Zm5BZGp1c3RWYWx1ZUhlbHBDb25kaXRpb24gPSBmdW5jdGlvbiAob0NvbmRpdGlvbjogYW55KSB7XG5cdFx0XHRcdC8vIGluIGNhc2UgdGhlIGNvbmRpdGlvbiBpcyBtZWFudCBmb3IgYSBmaWVsZCBoYXZpbmcgYSBWSCwgdGhlIGZvcm1hdCByZXF1aXJlZCBieSBNREMgZGlmZmVyc1xuXHRcdFx0XHRvQ29uZGl0aW9uLnZhbGlkYXRlZCA9IENvbmRpdGlvblZhbGlkYXRlZC5WYWxpZGF0ZWQ7XG5cdFx0XHRcdGlmIChvQ29uZGl0aW9uLm9wZXJhdG9yID09PSBcIkVtcHR5XCIpIHtcblx0XHRcdFx0XHRvQ29uZGl0aW9uLm9wZXJhdG9yID0gXCJFUVwiO1xuXHRcdFx0XHRcdG9Db25kaXRpb24udmFsdWVzID0gW1wiXCJdO1xuXHRcdFx0XHR9IGVsc2UgaWYgKG9Db25kaXRpb24ub3BlcmF0b3IgPT09IFwiTm90RW1wdHlcIikge1xuXHRcdFx0XHRcdG9Db25kaXRpb24ub3BlcmF0b3IgPSBcIk5FXCI7XG5cdFx0XHRcdFx0b0NvbmRpdGlvbi52YWx1ZXMgPSBbXCJcIl07XG5cdFx0XHRcdH1cblx0XHRcdFx0ZGVsZXRlIG9Db25kaXRpb24uaXNFbXB0eTtcblx0XHRcdH07XG5cdFx0Y29uc3QgZm5HZXRQcm9wZXJ0eUluZm8gPSBmdW5jdGlvbiAob0ZpbHRlckNvbnRyb2w6IGFueSwgc0VudGl0eVR5cGVQYXRoOiBhbnkpIHtcblx0XHRcdGNvbnN0IHNFbnRpdHlTZXRQYXRoID0gTW9kZWxIZWxwZXIuZ2V0RW50aXR5U2V0UGF0aChzRW50aXR5VHlwZVBhdGgpLFxuXHRcdFx0XHRvTWV0YU1vZGVsID0gb0ZpbHRlckNvbnRyb2wuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKSxcblx0XHRcdFx0b0ZSID0gQ29tbW9uVXRpbHMuZ2V0RmlsdGVyUmVzdHJpY3Rpb25zQnlQYXRoKHNFbnRpdHlTZXRQYXRoLCBvTWV0YU1vZGVsKSxcblx0XHRcdFx0YU5vbkZpbHRlcmFibGVQcm9wcyA9IG9GUltGaWx0ZXJSZXN0cmljdGlvbnMuTk9OX0ZJTFRFUkFCTEVfUFJPUEVSVElFU10sXG5cdFx0XHRcdG1GaWx0ZXJGaWVsZHMgPSBGaWx0ZXJVdGlscy5nZXRDb252ZXJ0ZWRGaWx0ZXJGaWVsZHMob0ZpbHRlckNvbnRyb2wsIHNFbnRpdHlUeXBlUGF0aCksXG5cdFx0XHRcdGFQcm9wZXJ0eUluZm86IGFueVtdID0gW107XG5cdFx0XHRPYmplY3Qua2V5cyhtRmlsdGVyRmllbGRzKS5mb3JFYWNoKGZ1bmN0aW9uIChzRmlsdGVyRmllbGRLZXk6IHN0cmluZykge1xuXHRcdFx0XHRjb25zdCBvQ29udmVydGVkUHJvcGVydHkgPSBtRmlsdGVyRmllbGRzW3NGaWx0ZXJGaWVsZEtleV07XG5cdFx0XHRcdGNvbnN0IHNQcm9wZXJ0eVBhdGggPSBvQ29udmVydGVkUHJvcGVydHkuY29uZGl0aW9uUGF0aC5yZXBsYWNlKENPTkRJVElPTl9QQVRIX1RPX1BST1BFUlRZX1BBVEhfUkVHRVgsIFwiXCIpO1xuXHRcdFx0XHRpZiAoYU5vbkZpbHRlcmFibGVQcm9wcy5pbmRleE9mKHNQcm9wZXJ0eVBhdGgpID09PSAtMSkge1xuXHRcdFx0XHRcdGNvbnN0IHNBbm5vdGF0aW9uUGF0aCA9IG9Db252ZXJ0ZWRQcm9wZXJ0eS5hbm5vdGF0aW9uUGF0aDtcblx0XHRcdFx0XHRjb25zdCBvUHJvcGVydHlDb250ZXh0ID0gb01ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChzQW5ub3RhdGlvblBhdGgpO1xuXHRcdFx0XHRcdGFQcm9wZXJ0eUluZm8ucHVzaCh7XG5cdFx0XHRcdFx0XHRwYXRoOiBvQ29udmVydGVkUHJvcGVydHkuY29uZGl0aW9uUGF0aCxcblx0XHRcdFx0XHRcdGhpZGRlbkZpbHRlcjogb0NvbnZlcnRlZFByb3BlcnR5LmF2YWlsYWJpbGl0eSA9PT0gXCJIaWRkZW5cIixcblx0XHRcdFx0XHRcdGhhc1ZhbHVlSGVscDogIXNBbm5vdGF0aW9uUGF0aFxuXHRcdFx0XHRcdFx0XHQ/IGZhbHNlXG5cdFx0XHRcdFx0XHRcdDogUHJvcGVydHlGb3JtYXR0ZXJzLmhhc1ZhbHVlSGVscChvUHJvcGVydHlDb250ZXh0LmdldE9iamVjdCgpLCB7IGNvbnRleHQ6IG9Qcm9wZXJ0eUNvbnRleHQgfSlcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gYVByb3BlcnR5SW5mbztcblx0XHR9O1xuXHRcdHJldHVybiBvRmlsdGVyQmFyLndhaXRGb3JJbml0aWFsaXphdGlvbigpLnRoZW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0Y29uc3Qgc0VudGl0eVR5cGVQYXRoID0gRGVsZWdhdGVVdGlsLmdldEN1c3RvbURhdGEob0ZpbHRlckJhciwgXCJlbnRpdHlUeXBlXCIpO1xuXHRcdFx0Y29uc3QgYVByb3BlcnR5SW5mbyA9IGZuR2V0UHJvcGVydHlJbmZvKG9GaWx0ZXJCYXIsIHNFbnRpdHlUeXBlUGF0aCk7XG5cdFx0XHRhUHJvcGVydHlJbmZvXG5cdFx0XHRcdC5maWx0ZXIoZnVuY3Rpb24gKG9Qcm9wZXJ0eUluZm86IGFueSkge1xuXHRcdFx0XHRcdHJldHVybiBvUHJvcGVydHlJbmZvLnBhdGggIT09IFwiJGVkaXRTdGF0ZVwiICYmIG9Qcm9wZXJ0eUluZm8ucGF0aCAhPT0gXCIkc2VhcmNoXCI7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5mb3JFYWNoKGZ1bmN0aW9uIChvUHJvcGVydHlJbmZvOiBhbnkpIHtcblx0XHRcdFx0XHRpZiAob1Byb3BlcnR5SW5mby5wYXRoIGluIG9Db25kaXRpb25zKSB7XG5cdFx0XHRcdFx0XHRtRmlsdGVyW29Qcm9wZXJ0eUluZm8ucGF0aF0gPSBvQ29uZGl0aW9uc1tvUHJvcGVydHlJbmZvLnBhdGhdO1xuXHRcdFx0XHRcdFx0aWYgKCFvUHJvcGVydHlJbmZvLmhpZGRlbkZpbHRlcikge1xuXHRcdFx0XHRcdFx0XHRhSXRlbXMucHVzaCh7IG5hbWU6IG9Qcm9wZXJ0eUluZm8ucGF0aCB9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChvUHJvcGVydHlJbmZvLmhhc1ZhbHVlSGVscCkge1xuXHRcdFx0XHRcdFx0XHRtRmlsdGVyW29Qcm9wZXJ0eUluZm8ucGF0aF0uZm9yRWFjaChmbkFkanVzdFZhbHVlSGVscENvbmRpdGlvbik7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRtRmlsdGVyW29Qcm9wZXJ0eUluZm8ucGF0aF0uZm9yRWFjaChmdW5jdGlvbiAob0NvbmRpdGlvbjogYW55KSB7XG5cdFx0XHRcdFx0XHRcdFx0b0NvbmRpdGlvbi52YWxpZGF0ZWQgPSBDb25kaXRpb25WYWxpZGF0ZWQuTm90VmFsaWRhdGVkO1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0bUZpbHRlcltvUHJvcGVydHlJbmZvLnBhdGhdID0gW107XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdHJldHVybiBTdGF0ZVV0aWwuYXBwbHlFeHRlcm5hbFN0YXRlKG9GaWx0ZXJCYXIsIHsgZmlsdGVyOiBtRmlsdGVyLCBpdGVtczogYUl0ZW1zIH0pO1xuXHRcdH0pO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBWaWV3U3RhdGVPdmVycmlkZTtcbiJdfQ==
|
|
445
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZUeXBlIiwiTmF2TGlicmFyeSIsIlZhcmlhbnRNYW5hZ2VtZW50VHlwZSIsIkNvcmVMaWJyYXJ5IiwiVmFyaWFudE1hbmFnZW1lbnQiLCJUZW1wbGF0ZUNvbnRlbnRWaWV3IiwiSW5pdGlhbExvYWRNb2RlIiwiRmlsdGVyUmVzdHJpY3Rpb25zIiwiQ29tbW9uVXRpbHMiLCJDT05ESVRJT05fUEFUSF9UT19QUk9QRVJUWV9QQVRIX1JFR0VYIiwiVmlld1N0YXRlT3ZlcnJpZGUiLCJfYlNlYXJjaFRyaWdnZXJlZCIsImFwcGx5SW5pdGlhbFN0YXRlT25seSIsIm9uQmVmb3JlU3RhdGVBcHBsaWVkIiwiYVByb21pc2VzIiwib1ZpZXciLCJnZXRWaWV3Iiwib0NvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwib0ZpbHRlckJhciIsIl9nZXRGaWx0ZXJCYXJDb250cm9sIiwiYVRhYmxlcyIsIl9nZXRDb250cm9scyIsInNldFN1c3BlbmRTZWxlY3Rpb24iLCJwdXNoIiwid2FpdEZvckluaXRpYWxpemF0aW9uIiwiZm9yRWFjaCIsIm9UYWJsZSIsImluaXRpYWxpemVkIiwib25BZnRlclN0YXRlQXBwbGllZCIsIl9pc0ZpbHRlckJhckhpZGRlbiIsIm9JbnRlcm5hbE1vZGVsQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwic2V0UHJvcGVydHkiLCJfaXNNdWx0aU1vZGUiLCJfZ2V0TXVsdGlNb2RlQ29udHJvbCIsInNldENvdW50c091dERhdGVkIiwiYWRhcHRCaW5kaW5nUmVmcmVzaENvbnRyb2xzIiwiYUNvbnRyb2xzIiwiYVZpZXdDb250cm9scyIsImFDb250cm9sc1RvUmVmcmVzaCIsIktlZXBBbGl2ZUhlbHBlciIsImdldENvbnRyb2xzRm9yUmVmcmVzaCIsIkFycmF5IiwicHJvdG90eXBlIiwiYXBwbHkiLCJhZGFwdFN0YXRlQ29udHJvbHMiLCJhU3RhdGVDb250cm9scyIsIm9WaWV3RGF0YSIsImdldFZpZXdEYXRhIiwiYkNvbnRyb2xWTSIsInZhcmlhbnRNYW5hZ2VtZW50IiwiQ29udHJvbCIsIm9GaWx0ZXJCYXJWTSIsIl9nZXRGaWx0ZXJCYXJWTSIsIm9RdWlja0ZpbHRlciIsImdldFF1aWNrRmlsdGVyIiwiZ2V0VmFyaWFudCIsIm9DaGFydCIsIl9oYXNNdWx0aVZpc3VhbGl6YXRpb25zIiwiX2dldFNlZ21lbnRlZEJ1dHRvbiIsIkNoYXJ0IiwiVGFibGUiLCJieUlkIiwicmV0cmlldmVBZGRpdGlvbmFsU3RhdGVzIiwibUFkZGl0aW9uYWxTdGF0ZXMiLCJiUGVuZGluZ0ZpbHRlciIsImdldFByb3BlcnR5IiwiZGF0YUxvYWRlZCIsInNBbHBDb250ZW50VmlldyIsImFscENvbnRlbnRWaWV3IiwiYXBwbHlBZGRpdGlvbmFsU3RhdGVzIiwib0FkZGl0aW9uYWxTdGF0ZXMiLCJ0cmlnZ2VyU2VhcmNoIiwic3lzdGVtIiwiZGVza3RvcCIsIkh5YnJpZCIsImdldE1vZGVsIiwiZ2V0UGF0aCIsImFwcGx5TmF2aWdhdGlvblBhcmFtZXRlcnMiLCJvTmF2aWdhdGlvblBhcmFtZXRlciIsImFSZXN1bHRzIiwib0FwcENvbXBvbmVudCIsImdldEFwcENvbXBvbmVudCIsIm9Db21wb25lbnREYXRhIiwiZ2V0Q29tcG9uZW50RGF0YSIsIm9TdGFydHVwUGFyYW1ldGVycyIsInN0YXJ0dXBQYXJhbWV0ZXJzIiwib1ZhcmlhbnRQcm9taXNlIiwiaGFuZGxlVmFyaWFudElkUGFzc2VkVmlhVVJMUGFyYW1zIiwiYkZpbHRlclZhcmlhbnRBcHBsaWVkIiwidGhlbiIsImFWYXJpYW50cyIsImxlbmd0aCIsIl9hcHBseVNlbGVjdGlvblZhcmlhbnQiLCJvRHluYW1pY1BhZ2UiLCJiUHJldmVudEluaXRpYWxTZWFyY2giLCJvRmlsdGVyQmFyQ29udHJvbCIsIm5hdmlnYXRpb25UeXBlIiwiaW5pdGlhbCIsInJlcXVpcmVzU3RhbmRhcmRWYXJpYW50IiwiaW5pdGlhbExvYWQiLCJFbmFibGVkIiwiX3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoIiwiX3ByZXZlbnRJbml0aWFsU2VhcmNoIiwic2V0SGVhZGVyRXhwYW5kZWQiLCJjYXRjaCIsIkxvZyIsImVycm9yIiwib1VybFBhcmFtcyIsImFQYWdlVmFyaWFudElkIiwiYUZpbHRlckJhclZhcmlhbnRJZCIsImFUYWJsZVZhcmlhbnRJZCIsIm9WYXJpYW50Iiwic1BhZ2VWYXJpYW50SWQiLCJzRmlsdGVyQmFyVmFyaWFudElkIiwic1RhYmxlVmFyaWFudElkIiwiX2hhbmRsZUNvbnRyb2xWYXJpYW50SWQiLCJvVmFyaWFudElEcyIsIm9WTSIsInNWYXJpYW50TWFuYWdlbWVudCIsImdldFZhcmlhbnRzIiwia2V5IiwiX2FwcGx5Q29udHJvbFZhcmlhbnQiLCJnZXRDb250ZW50IiwiZGF0YSIsIm9UYWJsZVZhcmlhbnQiLCJQcm9taXNlIiwiYWxsIiwic1ZhcmlhbnRJRCIsInNWYXJpYW50UmVmZXJlbmNlIiwiX2NoZWNrSWZWYXJpYW50SWRJc0F2YWlsYWJsZSIsImdldFN0YW5kYXJkVmFyaWFudEtleSIsIkNvbnRyb2xWYXJpYW50QXBwbHlBUEkiLCJhY3RpdmF0ZVZhcmlhbnQiLCJlbGVtZW50IiwidmFyaWFudFJlZmVyZW5jZSIsIlBhZ2UiLCJOb25lIiwiRXJyb3IiLCJvVmFyaWFudE1hbmFnZW1lbnQiLCJvQ3VycmVudFZhcmlhbnQiLCJmaW5kIiwib0l0ZW0iLCJnZXRDdXJyZW50VmFyaWFudEtleSIsImV4ZWN1dGVPblNlbGVjdCIsIm9TZWxlY3Rpb25WYXJpYW50Iiwic2VsZWN0aW9uVmFyaWFudCIsIm9TZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMiLCJzZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMiLCJyZXNvbHZlIiwib0NvbmRpdGlvbnMiLCJvTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwic0NvbnRleHRQYXRoIiwiY29udGV4dFBhdGgiLCJlbnRpdHlTZXQiLCJhTWFuZGF0b3J5RmlsdGVyRmllbGRzIiwiZ2V0TWFuZGF0b3J5RmlsdGVyRmllbGRzIiwiYlJlcXVpcmVzU3RhbmRhcmRWYXJpYW50IiwiZ2V0Q29uZGl0aW9ucyIsImFkZERlZmF1bHREaXNwbGF5Q3VycmVuY3kiLCJhZGRTZWxlY3Rpb25WYXJpYW50VG9Db25kaXRpb25zIiwiX2FjdGl2YXRlU2VsZWN0aW9uVmFyaWFudCIsIm9Qcm9taXNlIiwib1ZhcmlhbnRLZXkiLCJnZXREZWZhdWx0VmFyaWFudEtleSIsImdldElkIiwiYkNsZWFyRmlsdGVyQW5kUmVwbGFjZVdpdGhBcHBTdGF0ZSIsIl9mbkFwcGx5Q29uZGl0aW9ucyIsIm1GaWx0ZXIiLCJhSXRlbXMiLCJmbkFkanVzdFZhbHVlSGVscENvbmRpdGlvbiIsIm9Db25kaXRpb24iLCJ2YWxpZGF0ZWQiLCJDb25kaXRpb25WYWxpZGF0ZWQiLCJWYWxpZGF0ZWQiLCJvcGVyYXRvciIsInZhbHVlcyIsImlzRW1wdHkiLCJmbkdldFByb3BlcnR5SW5mbyIsIm9GaWx0ZXJDb250cm9sIiwic0VudGl0eVR5cGVQYXRoIiwic0VudGl0eVNldFBhdGgiLCJNb2RlbEhlbHBlciIsImdldEVudGl0eVNldFBhdGgiLCJvRlIiLCJnZXRGaWx0ZXJSZXN0cmljdGlvbnNCeVBhdGgiLCJhTm9uRmlsdGVyYWJsZVByb3BzIiwiTk9OX0ZJTFRFUkFCTEVfUFJPUEVSVElFUyIsIm1GaWx0ZXJGaWVsZHMiLCJGaWx0ZXJVdGlscyIsImdldENvbnZlcnRlZEZpbHRlckZpZWxkcyIsImFQcm9wZXJ0eUluZm8iLCJPYmplY3QiLCJrZXlzIiwic0ZpbHRlckZpZWxkS2V5Iiwib0NvbnZlcnRlZFByb3BlcnR5Iiwic1Byb3BlcnR5UGF0aCIsImNvbmRpdGlvblBhdGgiLCJyZXBsYWNlIiwiaW5kZXhPZiIsInNBbm5vdGF0aW9uUGF0aCIsImFubm90YXRpb25QYXRoIiwib1Byb3BlcnR5Q29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwicGF0aCIsImhpZGRlbkZpbHRlciIsImF2YWlsYWJpbGl0eSIsImhhc1ZhbHVlSGVscCIsIlByb3BlcnR5Rm9ybWF0dGVycyIsImdldE9iamVjdCIsImNvbnRleHQiLCJEZWxlZ2F0ZVV0aWwiLCJnZXRDdXN0b21EYXRhIiwiZmlsdGVyIiwib1Byb3BlcnR5SW5mbyIsIm5hbWUiLCJOb3RWYWxpZGF0ZWQiLCJTdGF0ZVV0aWwiLCJhcHBseUV4dGVybmFsU3RhdGUiLCJpdGVtcyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVmlld1N0YXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgVmlld1N0YXRlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCBLZWVwQWxpdmVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvS2VlcEFsaXZlSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IENvcmVMaWJyYXJ5IGZyb20gXCJzYXAvZmUvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgKiBhcyBQcm9wZXJ0eUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgRGVsZWdhdGVVdGlsIGZyb20gXCJzYXAvZmUvbWFjcm9zL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IEZpbHRlclV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJVdGlsc1wiO1xuaW1wb3J0IE5hdkxpYnJhcnkgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIExpc3RSZXBvcnRDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL0xpc3RSZXBvcnQvTGlzdFJlcG9ydENvbnRyb2xsZXIuY29udHJvbGxlclwiO1xuaW1wb3J0IHsgc3lzdGVtIH0gZnJvbSBcInNhcC91aS9EZXZpY2VcIjtcbmltcG9ydCBDb250cm9sVmFyaWFudEFwcGx5QVBJIGZyb20gXCJzYXAvdWkvZmwvYXBwbHkvYXBpL0NvbnRyb2xWYXJpYW50QXBwbHlBUElcIjtcbmltcG9ydCB0eXBlIFZhcmlhbnRNYW5hZ2VtZW50IGZyb20gXCJzYXAvdWkvZmwvdmFyaWFudHMvVmFyaWFudE1hbmFnZW1lbnRcIjtcbmltcG9ydCBDb25kaXRpb25WYWxpZGF0ZWQgZnJvbSBcInNhcC91aS9tZGMvZW51bS9Db25kaXRpb25WYWxpZGF0ZWRcIjtcbmltcG9ydCBTdGF0ZVV0aWwgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5cbmNvbnN0IE5hdlR5cGUgPSBOYXZMaWJyYXJ5Lk5hdlR5cGUsXG5cdFZhcmlhbnRNYW5hZ2VtZW50VHlwZSA9IENvcmVMaWJyYXJ5LlZhcmlhbnRNYW5hZ2VtZW50LFxuXHRUZW1wbGF0ZUNvbnRlbnRWaWV3ID0gQ29yZUxpYnJhcnkuVGVtcGxhdGVDb250ZW50Vmlldyxcblx0SW5pdGlhbExvYWRNb2RlID0gQ29yZUxpYnJhcnkuSW5pdGlhbExvYWRNb2RlO1xuY29uc3QgRmlsdGVyUmVzdHJpY3Rpb25zID0gQ29tbW9uVXRpbHMuRmlsdGVyUmVzdHJpY3Rpb25zLFxuXHRDT05ESVRJT05fUEFUSF9UT19QUk9QRVJUWV9QQVRIX1JFR0VYID0gL1xcK3xcXCovZztcblxuY29uc3QgVmlld1N0YXRlT3ZlcnJpZGU6IGFueSA9IHtcblx0X2JTZWFyY2hUcmlnZ2VyZWQ6IGZhbHNlLFxuXHRhcHBseUluaXRpYWxTdGF0ZU9ubHk6IGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblx0b25CZWZvcmVTdGF0ZUFwcGxpZWQ6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIGFQcm9taXNlczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0b0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCksXG5cdFx0XHRhVGFibGVzID0gb0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwidGFibGVcIik7XG5cdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdG9GaWx0ZXJCYXIuc2V0U3VzcGVuZFNlbGVjdGlvbih0cnVlKTtcblx0XHRcdGFQcm9taXNlcy5wdXNoKChvRmlsdGVyQmFyIGFzIGFueSkud2FpdEZvckluaXRpYWxpemF0aW9uKCkpO1xuXHRcdH1cblx0XHRhVGFibGVzLmZvckVhY2goZnVuY3Rpb24gKG9UYWJsZTogYW55KSB7XG5cdFx0XHRhUHJvbWlzZXMucHVzaChvVGFibGUuaW5pdGlhbGl6ZWQoKSk7XG5cdFx0fSk7XG5cblx0XHRkZWxldGUgdGhpcy5fYlNlYXJjaFRyaWdnZXJlZDtcblx0fSxcblx0b25BZnRlclN0YXRlQXBwbGllZDogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSkge1xuXHRcdGNvbnN0IG9Db250cm9sbGVyID0gdGhpcy5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyO1xuXHRcdGNvbnN0IG9GaWx0ZXJCYXIgPSBvQ29udHJvbGxlci5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpO1xuXHRcdGlmIChvRmlsdGVyQmFyKSB7XG5cdFx0XHRvRmlsdGVyQmFyLnNldFN1c3BlbmRTZWxlY3Rpb24oZmFsc2UpO1xuXHRcdH0gZWxzZSBpZiAob0NvbnRyb2xsZXIuX2lzRmlsdGVyQmFySGlkZGVuKCkpIHtcblx0XHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9Db250cm9sbGVyLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiaGFzUGVuZGluZ0ZpbHRlcnNcIiwgZmFsc2UpO1xuXHRcdFx0aWYgKG9Db250cm9sbGVyLl9pc011bHRpTW9kZSgpKSB7XG5cdFx0XHRcdG9Db250cm9sbGVyLl9nZXRNdWx0aU1vZGVDb250cm9sKCkuc2V0Q291bnRzT3V0RGF0ZWQodHJ1ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRhZGFwdEJpbmRpbmdSZWZyZXNoQ29udHJvbHM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUsIGFDb250cm9sczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0YVZpZXdDb250cm9scyA9IG9Db250cm9sbGVyLl9nZXRDb250cm9scygpLFxuXHRcdFx0YUNvbnRyb2xzVG9SZWZyZXNoID0gS2VlcEFsaXZlSGVscGVyLmdldENvbnRyb2xzRm9yUmVmcmVzaChvVmlldywgYVZpZXdDb250cm9scyk7XG5cblx0XHRBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhQ29udHJvbHMsIGFDb250cm9sc1RvUmVmcmVzaCk7XG5cdH0sXG5cdGFkYXB0U3RhdGVDb250cm9sczogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSwgYVN0YXRlQ29udHJvbHM6IGFueSkge1xuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcixcblx0XHRcdG9WaWV3RGF0YSA9IG9WaWV3LmdldFZpZXdEYXRhKCksXG5cdFx0XHRiQ29udHJvbFZNID0gb1ZpZXdEYXRhLnZhcmlhbnRNYW5hZ2VtZW50ID09PSBWYXJpYW50TWFuYWdlbWVudFR5cGUuQ29udHJvbDtcblxuXHRcdGNvbnN0IG9GaWx0ZXJCYXJWTSA9IHRoaXMuX2dldEZpbHRlckJhclZNKG9WaWV3KTtcblx0XHRpZiAob0ZpbHRlckJhclZNKSB7XG5cdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9GaWx0ZXJCYXJWTSk7XG5cdFx0fVxuXHRcdGlmIChvQ29udHJvbGxlci5faXNNdWx0aU1vZGUoKSkge1xuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ29udHJvbGxlci5fZ2V0TXVsdGlNb2RlQ29udHJvbCgpKTtcblx0XHR9XG5cdFx0b0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwidGFibGVcIikuZm9yRWFjaChmdW5jdGlvbiAob1RhYmxlOiBhbnkpIHtcblx0XHRcdGNvbnN0IG9RdWlja0ZpbHRlciA9IG9UYWJsZS5nZXRRdWlja0ZpbHRlcigpO1xuXHRcdFx0aWYgKG9RdWlja0ZpbHRlcikge1xuXHRcdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9RdWlja0ZpbHRlcik7XG5cdFx0XHR9XG5cdFx0XHRpZiAoYkNvbnRyb2xWTSkge1xuXHRcdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9UYWJsZS5nZXRWYXJpYW50KCkpO1xuXHRcdFx0fVxuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvVGFibGUpO1xuXHRcdH0pO1xuXHRcdGlmIChvQ29udHJvbGxlci5fZ2V0Q29udHJvbHMoXCJDaGFydFwiKSkge1xuXHRcdFx0b0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwiQ2hhcnRcIikuZm9yRWFjaChmdW5jdGlvbiAob0NoYXJ0OiBhbnkpIHtcblx0XHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ2hhcnQpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGlmIChvQ29udHJvbGxlci5faGFzTXVsdGlWaXN1YWxpemF0aW9ucygpKSB7XG5cdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9Db250cm9sbGVyLl9nZXRTZWdtZW50ZWRCdXR0b24oVGVtcGxhdGVDb250ZW50Vmlldy5DaGFydCkpO1xuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ29udHJvbGxlci5fZ2V0U2VnbWVudGVkQnV0dG9uKFRlbXBsYXRlQ29udGVudFZpZXcuVGFibGUpKTtcblx0XHR9XG5cdFx0Y29uc3Qgb0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0ZpbHRlckJhcik7XG5cdFx0fVxuXHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob1ZpZXcuYnlJZChcImZlOjpMaXN0UmVwb3J0XCIpKTtcblx0fSxcblx0cmV0cmlldmVBZGRpdGlvbmFsU3RhdGVzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBtQWRkaXRpb25hbFN0YXRlczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0YlBlbmRpbmdGaWx0ZXIgPSAob1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCkuZ2V0UHJvcGVydHkoXCJoYXNQZW5kaW5nRmlsdGVyc1wiKTtcblxuXHRcdG1BZGRpdGlvbmFsU3RhdGVzLmRhdGFMb2FkZWQgPSAhYlBlbmRpbmdGaWx0ZXIgfHwgISF0aGlzLl9iU2VhcmNoVHJpZ2dlcmVkO1xuXHRcdGlmIChvQ29udHJvbGxlci5faGFzTXVsdGlWaXN1YWxpemF0aW9ucygpKSB7XG5cdFx0XHRjb25zdCBzQWxwQ29udGVudFZpZXcgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpLmdldFByb3BlcnR5KFwiYWxwQ29udGVudFZpZXdcIik7XG5cdFx0XHRtQWRkaXRpb25hbFN0YXRlcy5hbHBDb250ZW50VmlldyA9IHNBbHBDb250ZW50Vmlldztcblx0XHR9XG5cblx0XHRkZWxldGUgdGhpcy5fYlNlYXJjaFRyaWdnZXJlZDtcblx0fSxcblx0YXBwbHlBZGRpdGlvbmFsU3RhdGVzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBvQWRkaXRpb25hbFN0YXRlczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0b0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cblx0XHRpZiAob0FkZGl0aW9uYWxTdGF0ZXMpIHtcblx0XHRcdC8vIGV4cGxpY2l0IGNoZWNrIGZvciBib29sZWFuIHZhbHVlcyAtICd1bmRlZmluZWQnIHNob3VsZCBub3QgYWx0ZXIgdGhlIHRyaWdnZXJlZCBzZWFyY2ggcHJvcGVydHlcblx0XHRcdGlmIChvQWRkaXRpb25hbFN0YXRlcy5kYXRhTG9hZGVkID09PSBmYWxzZSAmJiBvRmlsdGVyQmFyKSB7XG5cdFx0XHRcdC8vIHdpdGhvdXQgdGhpcywgdGhlIGRhdGEgaXMgbG9hZGVkIG9uIG5hdmlnYXRpbmcgYmFja1xuXHRcdFx0XHQob0ZpbHRlckJhciBhcyBhbnkpLl9iU2VhcmNoVHJpZ2dlcmVkID0gZmFsc2U7XG5cdFx0XHR9IGVsc2UgaWYgKG9BZGRpdGlvbmFsU3RhdGVzLmRhdGFMb2FkZWQgPT09IHRydWUpIHtcblx0XHRcdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdFx0XHRvRmlsdGVyQmFyLnRyaWdnZXJTZWFyY2goKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLl9iU2VhcmNoVHJpZ2dlcmVkID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGlmIChvQ29udHJvbGxlci5faGFzTXVsdGlWaXN1YWxpemF0aW9ucygpKSB7XG5cdFx0XHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0XHRcdGlmICghc3lzdGVtLmRlc2t0b3AgJiYgb0FkZGl0aW9uYWxTdGF0ZXMuYWxwQ29udGVudFZpZXcgPT0gVGVtcGxhdGVDb250ZW50Vmlldy5IeWJyaWQpIHtcblx0XHRcdFx0XHRvQWRkaXRpb25hbFN0YXRlcy5hbHBDb250ZW50VmlldyA9IFRlbXBsYXRlQ29udGVudFZpZXcuQ2hhcnQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0KG9JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRNb2RlbCgpIGFzIEpTT05Nb2RlbCkuc2V0UHJvcGVydHkoXG5cdFx0XHRcdFx0YCR7b0ludGVybmFsTW9kZWxDb250ZXh0LmdldFBhdGgoKX0vYWxwQ29udGVudFZpZXdgLFxuXHRcdFx0XHRcdG9BZGRpdGlvbmFsU3RhdGVzLmFscENvbnRlbnRWaWV3XG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRhcHBseU5hdmlnYXRpb25QYXJhbWV0ZXJzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBvTmF2aWdhdGlvblBhcmFtZXRlcjogYW55LCBhUmVzdWx0czogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKTtcblx0XHRjb25zdCBvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcjtcblx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gb0NvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCk7XG5cdFx0Y29uc3Qgb0NvbXBvbmVudERhdGEgPSBvQXBwQ29tcG9uZW50LmdldENvbXBvbmVudERhdGEoKTtcblx0XHRjb25zdCBvU3RhcnR1cFBhcmFtZXRlcnMgPSAob0NvbXBvbmVudERhdGEgJiYgb0NvbXBvbmVudERhdGEuc3RhcnR1cFBhcmFtZXRlcnMpIHx8IHt9O1xuXHRcdGNvbnN0IG9WYXJpYW50UHJvbWlzZSA9IHRoaXMuaGFuZGxlVmFyaWFudElkUGFzc2VkVmlhVVJMUGFyYW1zKG9TdGFydHVwUGFyYW1ldGVycyk7XG5cdFx0bGV0IGJGaWx0ZXJWYXJpYW50QXBwbGllZDogYm9vbGVhbjtcblx0XHRhUmVzdWx0cy5wdXNoKFxuXHRcdFx0b1ZhcmlhbnRQcm9taXNlXG5cdFx0XHRcdC50aGVuKChhVmFyaWFudHM6IGFueVtdKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGFWYXJpYW50cyAmJiBhVmFyaWFudHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0aWYgKGFWYXJpYW50c1swXSA9PT0gdHJ1ZSB8fCBhVmFyaWFudHNbMV0gPT09IHRydWUpIHtcblx0XHRcdFx0XHRcdFx0YkZpbHRlclZhcmlhbnRBcHBsaWVkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuX2FwcGx5U2VsZWN0aW9uVmFyaWFudChvVmlldywgb05hdmlnYXRpb25QYXJhbWV0ZXIsIGJGaWx0ZXJWYXJpYW50QXBwbGllZCk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRjb25zdCBvRHluYW1pY1BhZ2UgPSBvVmlldy5ieUlkKFwiZmU6Okxpc3RSZXBvcnRcIik7XG5cdFx0XHRcdFx0bGV0IGJQcmV2ZW50SW5pdGlhbFNlYXJjaCA9IGZhbHNlO1xuXHRcdFx0XHRcdGNvbnN0IG9GaWx0ZXJCYXJWTSA9IHRoaXMuX2dldEZpbHRlckJhclZNKG9WaWV3KTtcblx0XHRcdFx0XHRjb25zdCBvRmlsdGVyQmFyQ29udHJvbCA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0XHRcdFx0aWYgKG9GaWx0ZXJCYXJDb250cm9sKSB7XG5cdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdChvTmF2aWdhdGlvblBhcmFtZXRlci5uYXZpZ2F0aW9uVHlwZSAhPT0gTmF2VHlwZS5pbml0aWFsICYmIG9OYXZpZ2F0aW9uUGFyYW1ldGVyLnJlcXVpcmVzU3RhbmRhcmRWYXJpYW50KSB8fFxuXHRcdFx0XHRcdFx0XHQoIW9GaWx0ZXJCYXJWTSAmJiBvVmlldy5nZXRWaWV3RGF0YSgpLmluaXRpYWxMb2FkID09PSBJbml0aWFsTG9hZE1vZGUuRW5hYmxlZCkgfHxcblx0XHRcdFx0XHRcdFx0b0NvbnRyb2xsZXIuX3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoKG9GaWx0ZXJCYXJWTSlcblx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRvRmlsdGVyQmFyQ29udHJvbC50cmlnZ2VyU2VhcmNoKCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRiUHJldmVudEluaXRpYWxTZWFyY2ggPSB0aGlzLl9wcmV2ZW50SW5pdGlhbFNlYXJjaChvRmlsdGVyQmFyVk0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Ly8gcmVzZXQgdGhlIHN1c3BlbmQgc2VsZWN0aW9uIG9uIGZpbHRlciBiYXIgdG8gYWxsb3cgbG9hZGluZyBvZiBkYXRhIHdoZW4gbmVlZGVkICh3YXMgc2V0IG9uIExSIEluaXQpXG5cdFx0XHRcdFx0XHRvRmlsdGVyQmFyQ29udHJvbC5zZXRTdXNwZW5kU2VsZWN0aW9uKGZhbHNlKTtcblx0XHRcdFx0XHRcdHRoaXMuX2JTZWFyY2hUcmlnZ2VyZWQgPSAhYlByZXZlbnRJbml0aWFsU2VhcmNoO1xuXHRcdFx0XHRcdFx0b0R5bmFtaWNQYWdlLnNldEhlYWRlckV4cGFuZGVkKHN5c3RlbS5kZXNrdG9wIHx8IGJQcmV2ZW50SW5pdGlhbFNlYXJjaCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdExvZy5lcnJvcihcIlZhcmlhbnQgSUQgY2Fubm90IGJlIGFwcGxpZWRcIik7XG5cdFx0XHRcdH0pXG5cdFx0KTtcblx0fSxcblxuXHRoYW5kbGVWYXJpYW50SWRQYXNzZWRWaWFVUkxQYXJhbXM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIG9VcmxQYXJhbXM6IGFueSkge1xuXHRcdGNvbnN0IGFQYWdlVmFyaWFudElkID0gb1VybFBhcmFtc1tcInNhcC11aS1mZS12YXJpYW50LWlkXCJdLFxuXHRcdFx0YUZpbHRlckJhclZhcmlhbnRJZCA9IG9VcmxQYXJhbXNbXCJzYXAtdWktZmUtZmlsdGVyYmFyLXZhcmlhbnQtaWRcIl0sXG5cdFx0XHRhVGFibGVWYXJpYW50SWQgPSBvVXJsUGFyYW1zW1wic2FwLXVpLWZlLXRhYmxlLXZhcmlhbnQtaWRcIl07XG5cdFx0bGV0IG9WYXJpYW50O1xuXHRcdGlmIChhUGFnZVZhcmlhbnRJZCB8fCBhRmlsdGVyQmFyVmFyaWFudElkIHx8IGFUYWJsZVZhcmlhbnRJZCkge1xuXHRcdFx0b1ZhcmlhbnQgPSB7XG5cdFx0XHRcdHNQYWdlVmFyaWFudElkOiBhUGFnZVZhcmlhbnRJZCAmJiBhUGFnZVZhcmlhbnRJZFswXSxcblx0XHRcdFx0c0ZpbHRlckJhclZhcmlhbnRJZDogYUZpbHRlckJhclZhcmlhbnRJZCAmJiBhRmlsdGVyQmFyVmFyaWFudElkWzBdLFxuXHRcdFx0XHRzVGFibGVWYXJpYW50SWQ6IGFUYWJsZVZhcmlhbnRJZCAmJiBhVGFibGVWYXJpYW50SWRbMF1cblx0XHRcdH07XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLl9oYW5kbGVDb250cm9sVmFyaWFudElkKG9WYXJpYW50KTtcblx0fSxcblxuXHRfaGFuZGxlQ29udHJvbFZhcmlhbnRJZDogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSwgb1ZhcmlhbnRJRHM6IGFueSkge1xuXHRcdGxldCBvVk06IFZhcmlhbnRNYW5hZ2VtZW50O1xuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRhUHJvbWlzZXM6IGFueVtdID0gW107XG5cdFx0Y29uc3Qgc1ZhcmlhbnRNYW5hZ2VtZW50ID0gb1ZpZXcuZ2V0Vmlld0RhdGEoKS52YXJpYW50TWFuYWdlbWVudDtcblx0XHRpZiAob1ZhcmlhbnRJRHMgJiYgb1ZhcmlhbnRJRHMuc1BhZ2VWYXJpYW50SWQgJiYgc1ZhcmlhbnRNYW5hZ2VtZW50ID09PSBcIlBhZ2VcIikge1xuXHRcdFx0b1ZNID0gb1ZpZXcuYnlJZChcImZlOjpQYWdlVmFyaWFudE1hbmFnZW1lbnRcIik7XG5cdFx0XHRvVk0uZ2V0VmFyaWFudHMoKS5mb3JFYWNoKChvVmFyaWFudDogYW55KSA9PiB7XG5cdFx0XHRcdGlmIChvVmFyaWFudC5rZXkgPT09IG9WYXJpYW50SURzLnNQYWdlVmFyaWFudElkKSB7XG5cdFx0XHRcdFx0YVByb21pc2VzLnB1c2godGhpcy5fYXBwbHlDb250cm9sVmFyaWFudChvVk0sIG9WYXJpYW50SURzLnNQYWdlVmFyaWFudElkLCB0cnVlKSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0gZWxzZSBpZiAob1ZhcmlhbnRJRHMgJiYgc1ZhcmlhbnRNYW5hZ2VtZW50ID09PSBcIkNvbnRyb2xcIikge1xuXHRcdFx0aWYgKG9WYXJpYW50SURzLnNGaWx0ZXJCYXJWYXJpYW50SWQpIHtcblx0XHRcdFx0b1ZNID0gb1ZpZXcuYnlJZChvVmlldy5nZXRDb250ZW50KClbMF0uZGF0YShcImZpbHRlckJhclZhcmlhbnRJZFwiKSk7XG5cdFx0XHRcdGlmIChvVk0pIHtcblx0XHRcdFx0XHRvVk0uZ2V0VmFyaWFudHMoKS5mb3JFYWNoKChvVmFyaWFudDogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAob1ZhcmlhbnQua2V5ID09PSBvVmFyaWFudElEcy5zRmlsdGVyQmFyVmFyaWFudElkKSB7XG5cdFx0XHRcdFx0XHRcdGFQcm9taXNlcy5wdXNoKHRoaXMuX2FwcGx5Q29udHJvbFZhcmlhbnQob1ZNLCBvVmFyaWFudElEcy5zRmlsdGVyQmFyVmFyaWFudElkLCB0cnVlKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChvVmFyaWFudElEcy5zVGFibGVWYXJpYW50SWQpIHtcblx0XHRcdFx0Y29uc3Qgb0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCksXG5cdFx0XHRcdFx0YVRhYmxlcyA9IG9Db250cm9sbGVyLl9nZXRDb250cm9scyhcInRhYmxlXCIpO1xuXHRcdFx0XHRhVGFibGVzLmZvckVhY2goKG9UYWJsZTogYW55KSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgb1RhYmxlVmFyaWFudCA9IG9UYWJsZS5nZXRWYXJpYW50KCk7XG5cdFx0XHRcdFx0aWYgKG9UYWJsZSAmJiBvVGFibGVWYXJpYW50KSB7XG5cdFx0XHRcdFx0XHRvVGFibGVWYXJpYW50LmdldFZhcmlhbnRzKCkuZm9yRWFjaCgob1ZhcmlhbnQ6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAob1ZhcmlhbnQua2V5ID09PSBvVmFyaWFudElEcy5zVGFibGVWYXJpYW50SWQpIHtcblx0XHRcdFx0XHRcdFx0XHRhUHJvbWlzZXMucHVzaCh0aGlzLl9hcHBseUNvbnRyb2xWYXJpYW50KG9UYWJsZVZhcmlhbnQsIG9WYXJpYW50SURzLnNUYWJsZVZhcmlhbnRJZCkpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoYVByb21pc2VzKTtcblx0fSxcblxuXHRfYXBwbHlDb250cm9sVmFyaWFudDogZnVuY3Rpb24gKG9WYXJpYW50OiBhbnksIHNWYXJpYW50SUQ6IGFueSwgYkZpbHRlclZhcmlhbnRBcHBsaWVkOiBhbnkpIHtcblx0XHRjb25zdCBzVmFyaWFudFJlZmVyZW5jZSA9IHRoaXMuX2NoZWNrSWZWYXJpYW50SWRJc0F2YWlsYWJsZShvVmFyaWFudCwgc1ZhcmlhbnRJRCkgPyBzVmFyaWFudElEIDogb1ZhcmlhbnQuZ2V0U3RhbmRhcmRWYXJpYW50S2V5KCk7XG5cdFx0Y29uc3Qgb1ZNID0gQ29udHJvbFZhcmlhbnRBcHBseUFQSS5hY3RpdmF0ZVZhcmlhbnQoe1xuXHRcdFx0ZWxlbWVudDogb1ZhcmlhbnQsXG5cdFx0XHR2YXJpYW50UmVmZXJlbmNlOiBzVmFyaWFudFJlZmVyZW5jZVxuXHRcdH0pO1xuXHRcdHJldHVybiBvVk0udGhlbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gYkZpbHRlclZhcmlhbnRBcHBsaWVkO1xuXHRcdH0pO1xuXHR9LFxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBwcml2YXRlIGhlbHBlciAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXHRfZ2V0RmlsdGVyQmFyVk06IGZ1bmN0aW9uIChvVmlldzogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXdEYXRhID0gb1ZpZXcuZ2V0Vmlld0RhdGEoKTtcblx0XHRzd2l0Y2ggKG9WaWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCkge1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudFR5cGUuUGFnZTpcblx0XHRcdFx0cmV0dXJuIG9WaWV3LmJ5SWQoXCJmZTo6UGFnZVZhcmlhbnRNYW5hZ2VtZW50XCIpO1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudFR5cGUuQ29udHJvbDpcblx0XHRcdFx0cmV0dXJuIG9WaWV3LmJ5SWQob1ZpZXcuZ2V0Q29udGVudCgpWzBdLmRhdGEoXCJmaWx0ZXJCYXJWYXJpYW50SWRcIikpO1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudFR5cGUuTm9uZTpcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYHVuaGFuZGxlZCB2YXJpYW50IHNldHRpbmc6ICR7b1ZpZXdEYXRhLnZhcmlhbnRNYW5hZ2VtZW50fWApO1xuXHRcdH1cblx0fSxcblxuXHRfcHJldmVudEluaXRpYWxTZWFyY2g6IGZ1bmN0aW9uIChvVmFyaWFudE1hbmFnZW1lbnQ6IGFueSkge1xuXHRcdGlmICghb1ZhcmlhbnRNYW5hZ2VtZW50KSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0Y29uc3QgYVZhcmlhbnRzID0gb1ZhcmlhbnRNYW5hZ2VtZW50LmdldFZhcmlhbnRzKCk7XG5cdFx0Y29uc3Qgb0N1cnJlbnRWYXJpYW50ID0gYVZhcmlhbnRzLmZpbmQoZnVuY3Rpb24gKG9JdGVtOiBhbnkpIHtcblx0XHRcdHJldHVybiBvSXRlbS5rZXkgPT09IG9WYXJpYW50TWFuYWdlbWVudC5nZXRDdXJyZW50VmFyaWFudEtleSgpO1xuXHRcdH0pO1xuXHRcdHJldHVybiAhb0N1cnJlbnRWYXJpYW50LmV4ZWN1dGVPblNlbGVjdDtcblx0fSxcblxuXHRfYXBwbHlTZWxlY3Rpb25WYXJpYW50OiBmdW5jdGlvbiAob1ZpZXc6IGFueSwgb05hdmlnYXRpb25QYXJhbWV0ZXI6IGFueSwgYkZpbHRlclZhcmlhbnRBcHBsaWVkOiBhbnkpIHtcblx0XHRjb25zdCBvRmlsdGVyQmFyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpLl9nZXRGaWx0ZXJCYXJDb250cm9sKCksXG5cdFx0XHRvU2VsZWN0aW9uVmFyaWFudCA9IG9OYXZpZ2F0aW9uUGFyYW1ldGVyLnNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRvU2VsZWN0aW9uVmFyaWFudERlZmF1bHRzID0gb05hdmlnYXRpb25QYXJhbWV0ZXIuc2VsZWN0aW9uVmFyaWFudERlZmF1bHRzO1xuXHRcdGlmICghb0ZpbHRlckJhciB8fCAhb1NlbGVjdGlvblZhcmlhbnQpIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cdFx0bGV0IG9Db25kaXRpb25zID0ge307XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9WaWV3LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3Qgb1ZpZXdEYXRhID0gb1ZpZXcuZ2V0Vmlld0RhdGEoKTtcblx0XHRjb25zdCBzQ29udGV4dFBhdGggPSBvVmlld0RhdGEuY29udGV4dFBhdGggfHwgYC8ke29WaWV3RGF0YS5lbnRpdHlTZXR9YDtcblx0XHRjb25zdCBhTWFuZGF0b3J5RmlsdGVyRmllbGRzID0gQ29tbW9uVXRpbHMuZ2V0TWFuZGF0b3J5RmlsdGVyRmllbGRzKG9NZXRhTW9kZWwsIHNDb250ZXh0UGF0aCk7XG5cdFx0bGV0IG9WYXJpYW50O1xuXHRcdGNvbnN0IGJSZXF1aXJlc1N0YW5kYXJkVmFyaWFudCA9IG9OYXZpZ2F0aW9uUGFyYW1ldGVyLnJlcXVpcmVzU3RhbmRhcmRWYXJpYW50O1xuXG5cdFx0aWYgKGJGaWx0ZXJWYXJpYW50QXBwbGllZCkge1xuXHRcdFx0b0NvbmRpdGlvbnMgPSBvRmlsdGVyQmFyLmdldENvbmRpdGlvbnMoKTtcblx0XHR9XG5cdFx0Q29tbW9uVXRpbHMuYWRkRGVmYXVsdERpc3BsYXlDdXJyZW5jeShhTWFuZGF0b3J5RmlsdGVyRmllbGRzLCBvU2VsZWN0aW9uVmFyaWFudCwgb1NlbGVjdGlvblZhcmlhbnREZWZhdWx0cyk7XG5cdFx0Q29tbW9uVXRpbHMuYWRkU2VsZWN0aW9uVmFyaWFudFRvQ29uZGl0aW9ucyhvU2VsZWN0aW9uVmFyaWFudCwgb0NvbmRpdGlvbnMsIG9NZXRhTW9kZWwsIHNDb250ZXh0UGF0aCk7XG5cdFx0c3dpdGNoIChvVmlld0RhdGEudmFyaWFudE1hbmFnZW1lbnQpIHtcblx0XHRcdGNhc2UgVmFyaWFudE1hbmFnZW1lbnRUeXBlLlBhZ2U6XG5cdFx0XHRcdG9WYXJpYW50ID0gb1ZpZXcuYnlJZChcImZlOjpQYWdlVmFyaWFudE1hbmFnZW1lbnRcIik7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudFR5cGUuQ29udHJvbDpcblx0XHRcdFx0b1ZhcmlhbnQgPSBvVmlldy5ieUlkKG9WaWV3LmdldENvbnRlbnQoKVswXS5kYXRhKFwiZmlsdGVyQmFyVmFyaWFudElkXCIpKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFZhcmlhbnRNYW5hZ2VtZW50VHlwZS5Ob25lOlxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLl9hY3RpdmF0ZVNlbGVjdGlvblZhcmlhbnQob0ZpbHRlckJhciwgb0NvbmRpdGlvbnMsIG9WYXJpYW50LCBiUmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQsIGJGaWx0ZXJWYXJpYW50QXBwbGllZCk7XG5cdH0sXG5cdF9hY3RpdmF0ZVNlbGVjdGlvblZhcmlhbnQ6IGZ1bmN0aW9uIChcblx0XHRvRmlsdGVyQmFyOiBhbnksXG5cdFx0b0NvbmRpdGlvbnM6IGFueSxcblx0XHRvVmFyaWFudDogYW55LFxuXHRcdGJSZXF1aXJlc1N0YW5kYXJkVmFyaWFudDogYW55LFxuXHRcdGJGaWx0ZXJWYXJpYW50QXBwbGllZDogYW55XG5cdCkge1xuXHRcdGxldCBvUHJvbWlzZTtcblxuXHRcdGlmIChvVmFyaWFudCAmJiAhYkZpbHRlclZhcmlhbnRBcHBsaWVkKSB7XG5cdFx0XHRsZXQgb1ZhcmlhbnRLZXkgPSBiUmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQgPyBvVmFyaWFudC5nZXRTdGFuZGFyZFZhcmlhbnRLZXkoKSA6IG9WYXJpYW50LmdldERlZmF1bHRWYXJpYW50S2V5KCk7XG5cdFx0XHRpZiAob1ZhcmlhbnRLZXkgPT09IG51bGwpIHtcblx0XHRcdFx0b1ZhcmlhbnRLZXkgPSBvVmFyaWFudC5nZXRJZCgpO1xuXHRcdFx0fVxuXHRcdFx0b1Byb21pc2UgPSBDb250cm9sVmFyaWFudEFwcGx5QVBJLmFjdGl2YXRlVmFyaWFudCh7XG5cdFx0XHRcdGVsZW1lbnQ6IG9WYXJpYW50LFxuXHRcdFx0XHR2YXJpYW50UmVmZXJlbmNlOiBvVmFyaWFudEtleVxuXHRcdFx0fSkudGhlbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHJldHVybiBiUmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQgfHwgb1ZhcmlhbnQuZ2V0RGVmYXVsdFZhcmlhbnRLZXkoKSA9PT0gb1ZhcmlhbnQuZ2V0U3RhbmRhcmRWYXJpYW50S2V5KCk7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b1Byb21pc2UgPSBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XG5cdFx0fVxuXHRcdHJldHVybiBvUHJvbWlzZS50aGVuKChiQ2xlYXJGaWx0ZXJBbmRSZXBsYWNlV2l0aEFwcFN0YXRlOiBhbnkpID0+IHtcblx0XHRcdGlmIChiQ2xlYXJGaWx0ZXJBbmRSZXBsYWNlV2l0aEFwcFN0YXRlKSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLl9mbkFwcGx5Q29uZGl0aW9ucyhvRmlsdGVyQmFyLCBvQ29uZGl0aW9ucyk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cdF9mbkFwcGx5Q29uZGl0aW9uczogZnVuY3Rpb24gKG9GaWx0ZXJCYXI6IGFueSwgb0NvbmRpdGlvbnM6IGFueSkge1xuXHRcdGNvbnN0IG1GaWx0ZXI6IGFueSA9IHt9LFxuXHRcdFx0YUl0ZW1zOiBhbnlbXSA9IFtdLFxuXHRcdFx0Zm5BZGp1c3RWYWx1ZUhlbHBDb25kaXRpb24gPSBmdW5jdGlvbiAob0NvbmRpdGlvbjogYW55KSB7XG5cdFx0XHRcdC8vIGluIGNhc2UgdGhlIGNvbmRpdGlvbiBpcyBtZWFudCBmb3IgYSBmaWVsZCBoYXZpbmcgYSBWSCwgdGhlIGZvcm1hdCByZXF1aXJlZCBieSBNREMgZGlmZmVyc1xuXHRcdFx0XHRvQ29uZGl0aW9uLnZhbGlkYXRlZCA9IENvbmRpdGlvblZhbGlkYXRlZC5WYWxpZGF0ZWQ7XG5cdFx0XHRcdGlmIChvQ29uZGl0aW9uLm9wZXJhdG9yID09PSBcIkVtcHR5XCIpIHtcblx0XHRcdFx0XHRvQ29uZGl0aW9uLm9wZXJhdG9yID0gXCJFUVwiO1xuXHRcdFx0XHRcdG9Db25kaXRpb24udmFsdWVzID0gW1wiXCJdO1xuXHRcdFx0XHR9IGVsc2UgaWYgKG9Db25kaXRpb24ub3BlcmF0b3IgPT09IFwiTm90RW1wdHlcIikge1xuXHRcdFx0XHRcdG9Db25kaXRpb24ub3BlcmF0b3IgPSBcIk5FXCI7XG5cdFx0XHRcdFx0b0NvbmRpdGlvbi52YWx1ZXMgPSBbXCJcIl07XG5cdFx0XHRcdH1cblx0XHRcdFx0ZGVsZXRlIG9Db25kaXRpb24uaXNFbXB0eTtcblx0XHRcdH07XG5cdFx0Y29uc3QgZm5HZXRQcm9wZXJ0eUluZm8gPSBmdW5jdGlvbiAob0ZpbHRlckNvbnRyb2w6IGFueSwgc0VudGl0eVR5cGVQYXRoOiBhbnkpIHtcblx0XHRcdGNvbnN0IHNFbnRpdHlTZXRQYXRoID0gTW9kZWxIZWxwZXIuZ2V0RW50aXR5U2V0UGF0aChzRW50aXR5VHlwZVBhdGgpLFxuXHRcdFx0XHRvTWV0YU1vZGVsID0gb0ZpbHRlckNvbnRyb2wuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKSxcblx0XHRcdFx0b0ZSID0gQ29tbW9uVXRpbHMuZ2V0RmlsdGVyUmVzdHJpY3Rpb25zQnlQYXRoKHNFbnRpdHlTZXRQYXRoLCBvTWV0YU1vZGVsKSxcblx0XHRcdFx0YU5vbkZpbHRlcmFibGVQcm9wcyA9IG9GUltGaWx0ZXJSZXN0cmljdGlvbnMuTk9OX0ZJTFRFUkFCTEVfUFJPUEVSVElFU10sXG5cdFx0XHRcdG1GaWx0ZXJGaWVsZHMgPSBGaWx0ZXJVdGlscy5nZXRDb252ZXJ0ZWRGaWx0ZXJGaWVsZHMob0ZpbHRlckNvbnRyb2wsIHNFbnRpdHlUeXBlUGF0aCksXG5cdFx0XHRcdGFQcm9wZXJ0eUluZm86IGFueVtdID0gW107XG5cdFx0XHRPYmplY3Qua2V5cyhtRmlsdGVyRmllbGRzKS5mb3JFYWNoKGZ1bmN0aW9uIChzRmlsdGVyRmllbGRLZXk6IHN0cmluZykge1xuXHRcdFx0XHRjb25zdCBvQ29udmVydGVkUHJvcGVydHkgPSBtRmlsdGVyRmllbGRzW3NGaWx0ZXJGaWVsZEtleV07XG5cdFx0XHRcdGNvbnN0IHNQcm9wZXJ0eVBhdGggPSBvQ29udmVydGVkUHJvcGVydHkuY29uZGl0aW9uUGF0aC5yZXBsYWNlKENPTkRJVElPTl9QQVRIX1RPX1BST1BFUlRZX1BBVEhfUkVHRVgsIFwiXCIpO1xuXHRcdFx0XHRpZiAoYU5vbkZpbHRlcmFibGVQcm9wcy5pbmRleE9mKHNQcm9wZXJ0eVBhdGgpID09PSAtMSkge1xuXHRcdFx0XHRcdGNvbnN0IHNBbm5vdGF0aW9uUGF0aCA9IG9Db252ZXJ0ZWRQcm9wZXJ0eS5hbm5vdGF0aW9uUGF0aDtcblx0XHRcdFx0XHRjb25zdCBvUHJvcGVydHlDb250ZXh0ID0gb01ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChzQW5ub3RhdGlvblBhdGgpO1xuXHRcdFx0XHRcdGFQcm9wZXJ0eUluZm8ucHVzaCh7XG5cdFx0XHRcdFx0XHRwYXRoOiBvQ29udmVydGVkUHJvcGVydHkuY29uZGl0aW9uUGF0aCxcblx0XHRcdFx0XHRcdGhpZGRlbkZpbHRlcjogb0NvbnZlcnRlZFByb3BlcnR5LmF2YWlsYWJpbGl0eSA9PT0gXCJIaWRkZW5cIixcblx0XHRcdFx0XHRcdGhhc1ZhbHVlSGVscDogIXNBbm5vdGF0aW9uUGF0aFxuXHRcdFx0XHRcdFx0XHQ/IGZhbHNlXG5cdFx0XHRcdFx0XHRcdDogUHJvcGVydHlGb3JtYXR0ZXJzLmhhc1ZhbHVlSGVscChvUHJvcGVydHlDb250ZXh0LmdldE9iamVjdCgpLCB7IGNvbnRleHQ6IG9Qcm9wZXJ0eUNvbnRleHQgfSlcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gYVByb3BlcnR5SW5mbztcblx0XHR9O1xuXHRcdHJldHVybiBvRmlsdGVyQmFyLndhaXRGb3JJbml0aWFsaXphdGlvbigpLnRoZW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0Y29uc3Qgc0VudGl0eVR5cGVQYXRoID0gRGVsZWdhdGVVdGlsLmdldEN1c3RvbURhdGEob0ZpbHRlckJhciwgXCJlbnRpdHlUeXBlXCIpO1xuXHRcdFx0Y29uc3QgYVByb3BlcnR5SW5mbyA9IGZuR2V0UHJvcGVydHlJbmZvKG9GaWx0ZXJCYXIsIHNFbnRpdHlUeXBlUGF0aCk7XG5cdFx0XHRhUHJvcGVydHlJbmZvXG5cdFx0XHRcdC5maWx0ZXIoZnVuY3Rpb24gKG9Qcm9wZXJ0eUluZm86IGFueSkge1xuXHRcdFx0XHRcdHJldHVybiBvUHJvcGVydHlJbmZvLnBhdGggIT09IFwiJGVkaXRTdGF0ZVwiICYmIG9Qcm9wZXJ0eUluZm8ucGF0aCAhPT0gXCIkc2VhcmNoXCI7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5mb3JFYWNoKGZ1bmN0aW9uIChvUHJvcGVydHlJbmZvOiBhbnkpIHtcblx0XHRcdFx0XHRpZiAob1Byb3BlcnR5SW5mby5wYXRoIGluIG9Db25kaXRpb25zKSB7XG5cdFx0XHRcdFx0XHRtRmlsdGVyW29Qcm9wZXJ0eUluZm8ucGF0aF0gPSBvQ29uZGl0aW9uc1tvUHJvcGVydHlJbmZvLnBhdGhdO1xuXHRcdFx0XHRcdFx0aWYgKCFvUHJvcGVydHlJbmZvLmhpZGRlbkZpbHRlcikge1xuXHRcdFx0XHRcdFx0XHRhSXRlbXMucHVzaCh7IG5hbWU6IG9Qcm9wZXJ0eUluZm8ucGF0aCB9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChvUHJvcGVydHlJbmZvLmhhc1ZhbHVlSGVscCkge1xuXHRcdFx0XHRcdFx0XHRtRmlsdGVyW29Qcm9wZXJ0eUluZm8ucGF0aF0uZm9yRWFjaChmbkFkanVzdFZhbHVlSGVscENvbmRpdGlvbik7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRtRmlsdGVyW29Qcm9wZXJ0eUluZm8ucGF0aF0uZm9yRWFjaChmdW5jdGlvbiAob0NvbmRpdGlvbjogYW55KSB7XG5cdFx0XHRcdFx0XHRcdFx0b0NvbmRpdGlvbi52YWxpZGF0ZWQgPSBDb25kaXRpb25WYWxpZGF0ZWQuTm90VmFsaWRhdGVkO1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0bUZpbHRlcltvUHJvcGVydHlJbmZvLnBhdGhdID0gW107XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdHJldHVybiBTdGF0ZVV0aWwuYXBwbHlFeHRlcm5hbFN0YXRlKG9GaWx0ZXJCYXIsIHsgZmlsdGVyOiBtRmlsdGVyLCBpdGVtczogYUl0ZW1zIH0pO1xuXHRcdH0pO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBWaWV3U3RhdGVPdmVycmlkZTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7O0VBbUJBLElBQU1BLE9BQU8sR0FBR0MsVUFBVSxDQUFDRCxPQUEzQjtFQUFBLElBQ0NFLHFCQUFxQixHQUFHQyxXQUFXLENBQUNDLGlCQURyQztFQUFBLElBRUNDLG1CQUFtQixHQUFHRixXQUFXLENBQUNFLG1CQUZuQztFQUFBLElBR0NDLGVBQWUsR0FBR0gsV0FBVyxDQUFDRyxlQUgvQjtFQUlBLElBQU1DLGtCQUFrQixHQUFHQyxXQUFXLENBQUNELGtCQUF2QztFQUFBLElBQ0NFLHFDQUFxQyxHQUFHLFFBRHpDO0VBR0EsSUFBTUMsaUJBQXNCLEdBQUc7SUFDOUJDLGlCQUFpQixFQUFFLEtBRFc7SUFFOUJDLHFCQUFxQixFQUFFLFlBQVk7TUFDbEMsT0FBTyxJQUFQO0lBQ0EsQ0FKNkI7SUFLOUJDLG9CQUFvQixFQUFFLFVBQXNEQyxTQUF0RCxFQUFzRTtNQUMzRixJQUFNQyxLQUFLLEdBQUcsS0FBS0MsT0FBTCxFQUFkO01BQUEsSUFDQ0MsV0FBVyxHQUFHRixLQUFLLENBQUNHLGFBQU4sRUFEZjtNQUFBLElBRUNDLFVBQVUsR0FBR0YsV0FBVyxDQUFDRyxvQkFBWixFQUZkO01BQUEsSUFHQ0MsT0FBTyxHQUFHSixXQUFXLENBQUNLLFlBQVosQ0FBeUIsT0FBekIsQ0FIWDs7TUFJQSxJQUFJSCxVQUFKLEVBQWdCO1FB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
|