@sapui5/sap.fe.templates 1.138.0 → 1.139.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 +1 -1
- package/src/sap/fe/templates/.library +1 -1
- package/src/sap/fe/templates/AnalyticalListPage/manifest.json +1 -1
- package/src/sap/fe/templates/ListReport/ListReport.view.xml +92 -61
- package/src/sap/fe/templates/ListReport/ListReportController.controller.js +12 -3
- package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +13 -2
- package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js +36 -8
- package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.ts +25 -11
- package/src/sap/fe/templates/ListReport/designtime/ListReport.designtime.js +3 -1
- package/src/sap/fe/templates/ListReport/designtime/ListReport.designtime.ts +2 -0
- package/src/sap/fe/templates/ListReport/manifest.json +1 -1
- package/src/sap/fe/templates/ObjectPage/Component.js +14 -22
- package/src/sap/fe/templates/ObjectPage/Component.ts +5 -9
- package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +3 -4
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +7 -53
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +6 -55
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +21 -17
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +19 -14
- package/src/sap/fe/templates/ObjectPage/components/CollaborationDraft.js +16 -6
- package/src/sap/fe/templates/ObjectPage/components/CollaborationDraft.tsx +15 -5
- package/src/sap/fe/templates/ObjectPage/components/DraftToggle.js +30 -15
- package/src/sap/fe/templates/ObjectPage/components/DraftToggle.tsx +14 -4
- package/src/sap/fe/templates/ObjectPage/designtime/ObjectPage.designtime.js +3 -1
- package/src/sap/fe/templates/ObjectPage/designtime/ObjectPage.designtime.ts +2 -0
- package/src/sap/fe/templates/ObjectPage/manifest.json +1 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +25 -6
- package/src/sap/fe/templates/ObjectPage/view/fragments/Heading.fragment.xml +2 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +7 -2
- package/src/sap/fe/templates/library.js +1 -1
- package/src/sap/fe/templates/messagebundle.properties +5 -6
- package/src/sap/fe/templates/messagebundle_ar.properties +2 -2
- package/src/sap/fe/templates/messagebundle_bg.properties +2 -2
- package/src/sap/fe/templates/messagebundle_ca.properties +1 -1
- package/src/sap/fe/templates/messagebundle_cnr.properties +2 -2
- package/src/sap/fe/templates/messagebundle_cs.properties +1 -1
- package/src/sap/fe/templates/messagebundle_da.properties +2 -2
- package/src/sap/fe/templates/messagebundle_de.properties +2 -2
- package/src/sap/fe/templates/messagebundle_en.properties +2 -2
- package/src/sap/fe/templates/messagebundle_en_GB.properties +2 -2
- package/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +2 -4
- package/src/sap/fe/templates/messagebundle_es.properties +1 -1
- package/src/sap/fe/templates/messagebundle_es_MX.properties +1 -1
- package/src/sap/fe/templates/messagebundle_et.properties +1 -1
- package/src/sap/fe/templates/messagebundle_fi.properties +2 -2
- package/src/sap/fe/templates/messagebundle_fr.properties +1 -1
- package/src/sap/fe/templates/messagebundle_fr_CA.properties +3 -3
- package/src/sap/fe/templates/messagebundle_hi.properties +1 -1
- package/src/sap/fe/templates/messagebundle_hr.properties +2 -2
- package/src/sap/fe/templates/messagebundle_hu.properties +2 -2
- package/src/sap/fe/templates/messagebundle_id.properties +1 -1
- package/src/sap/fe/templates/messagebundle_it.properties +2 -2
- package/src/sap/fe/templates/messagebundle_ja.properties +1 -1
- package/src/sap/fe/templates/messagebundle_kk.properties +1 -1
- package/src/sap/fe/templates/messagebundle_ko.properties +1 -1
- package/src/sap/fe/templates/messagebundle_lt.properties +1 -1
- package/src/sap/fe/templates/messagebundle_lv.properties +2 -2
- package/src/sap/fe/templates/messagebundle_mk.properties +1 -1
- package/src/sap/fe/templates/messagebundle_no.properties +1 -1
- package/src/sap/fe/templates/messagebundle_pl.properties +1 -1
- package/src/sap/fe/templates/messagebundle_pt.properties +1 -1
- package/src/sap/fe/templates/messagebundle_pt_PT.properties +1 -1
- package/src/sap/fe/templates/messagebundle_ro.properties +1 -1
- package/src/sap/fe/templates/messagebundle_sh.properties +2 -2
- package/src/sap/fe/templates/messagebundle_sk.properties +2 -2
- package/src/sap/fe/templates/messagebundle_sl.properties +1 -1
- package/src/sap/fe/templates/messagebundle_sr.properties +2 -2
- package/src/sap/fe/templates/messagebundle_sv.properties +1 -1
- package/src/sap/fe/templates/messagebundle_th.properties +2 -2
- package/src/sap/fe/templates/messagebundle_tr.properties +1 -1
- package/src/sap/fe/templates/messagebundle_uk.properties +1 -1
- package/src/sap/fe/templates/messagebundle_vi.properties +1 -1
- package/src/sap/fe/templates/messagebundle_zh_CN.properties +1 -1
- package/src/sap/fe/templates/messagebundle_zh_TW.properties +1 -1
|
@@ -2,10 +2,27 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUtils", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/helpers/MessageStrip", "sap/fe/core/helpers/ResourceModelHelper", "sap/ui/core/Control", "sap/ui/core/Element", "sap/ui/
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUtils", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/helpers/MessageStrip", "sap/fe/core/helpers/ResourceModelHelper", "sap/ui/core/Control", "sap/ui/core/Element", "sap/ui/model/json/JSONModel"], function (Log, ClassSupport, CommonUtils, MetaModelConverter, MessageStrip, ResourceModelHelper, Control, UI5Element, JSONModel) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8;
|
|
9
|
+
function __ui5_require_async(path) {
|
|
10
|
+
return new Promise((resolve, reject) => {
|
|
11
|
+
sap.ui.require([path], module => {
|
|
12
|
+
if (!(module && module.__esModule)) {
|
|
13
|
+
module = module === null || !(typeof module === "object" && path.endsWith("/library")) ? {
|
|
14
|
+
default: module
|
|
15
|
+
} : module;
|
|
16
|
+
Object.defineProperty(module, "__esModule", {
|
|
17
|
+
value: true
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
resolve(module);
|
|
21
|
+
}, err => {
|
|
22
|
+
reject(err);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
}
|
|
9
26
|
var getResourceModel = ResourceModelHelper.getResourceModel;
|
|
10
27
|
var property = ClassSupport.property;
|
|
11
28
|
var event = ClassSupport.event;
|
|
@@ -131,6 +148,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
|
|
|
131
148
|
/**
|
|
132
149
|
* Manages the binding of all inner controls when the selected IconTabFilter is changed.
|
|
133
150
|
* @param oEvent Event fired by the IconTabBar
|
|
151
|
+
* @returns A promise if the personalization is updated, otherwise nothing
|
|
134
152
|
*/;
|
|
135
153
|
MultipleModeControl.handleTabChange = function handleTabChange(oEvent) {
|
|
136
154
|
const oIconTabBar = oEvent.getSource();
|
|
@@ -139,6 +157,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
|
|
|
139
157
|
oMultiControl._setInnerBinding(true);
|
|
140
158
|
const sPreviousSelectedKey = mParameters?.previousKey;
|
|
141
159
|
const sSelectedKey = mParameters?.selectedKey;
|
|
160
|
+
let personalizationPromise;
|
|
142
161
|
if (sSelectedKey && sPreviousSelectedKey !== sSelectedKey) {
|
|
143
162
|
const oFilterBar = oMultiControl._getFilterControl();
|
|
144
163
|
if (oFilterBar && !oMultiControl.getProperty("freezeContent")) {
|
|
@@ -147,6 +166,19 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
|
|
|
147
166
|
oMultiControl._refreshCustomView(oFilterBar.getFilterConditions(), "tabChanged");
|
|
148
167
|
}
|
|
149
168
|
}
|
|
169
|
+
personalizationPromise = MultipleModeControl.handlePersonalizationUpdate(sSelectedKey, sPreviousSelectedKey, oIconTabBar);
|
|
170
|
+
}
|
|
171
|
+
oMultiControl._getViewController()?.getExtensionAPI()?.updateAppState();
|
|
172
|
+
oMultiControl.fireEvent("select", {
|
|
173
|
+
iconTabBar: oIconTabBar,
|
|
174
|
+
selectedKey: sSelectedKey,
|
|
175
|
+
previousKey: sPreviousSelectedKey
|
|
176
|
+
});
|
|
177
|
+
return personalizationPromise;
|
|
178
|
+
};
|
|
179
|
+
MultipleModeControl.handlePersonalizationUpdate = async function handlePersonalizationUpdate(sSelectedKey, sPreviousSelectedKey, oIconTabBar) {
|
|
180
|
+
try {
|
|
181
|
+
const ControlPersonalizationWriteAPI = (await __ui5_require_async("sap/ui/fl/write/api/ControlPersonalizationWriteAPI")).default;
|
|
150
182
|
ControlPersonalizationWriteAPI.add({
|
|
151
183
|
changes: [{
|
|
152
184
|
changeSpecificData: {
|
|
@@ -159,13 +191,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
|
|
|
159
191
|
selectorElement: oIconTabBar
|
|
160
192
|
}]
|
|
161
193
|
});
|
|
194
|
+
} catch (error) {
|
|
195
|
+
Log.error("Something went wrong while updating the personalization state of the MultipleModeControl", error);
|
|
162
196
|
}
|
|
163
|
-
oMultiControl._getViewController()?.getExtensionAPI()?.updateAppState();
|
|
164
|
-
oMultiControl.fireEvent("select", {
|
|
165
|
-
iconTabBar: oIconTabBar,
|
|
166
|
-
selectedKey: sSelectedKey,
|
|
167
|
-
previousKey: sPreviousSelectedKey
|
|
168
|
-
});
|
|
169
197
|
}
|
|
170
198
|
|
|
171
199
|
/**
|
|
@@ -479,4 +507,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
|
|
|
479
507
|
}), _class2)) || _class);
|
|
480
508
|
return MultipleModeControl;
|
|
481
509
|
}, false);
|
|
482
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCaW5kaW5nQWN0aW9uIiwiTXVsdGlwbGVNb2RlQ29udHJvbCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzMiLCJkZWZhdWx0VmFsdWUiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJhZ2dyZWdhdGlvbiIsIm11bHRpcGxlIiwiaXNEZWZhdWx0IiwiX2RlYzciLCJhc3NvY2lhdGlvbiIsIl9kZWM4IiwiX2RlYzkiLCJldmVudCIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbCIsImlkIiwic2V0dGluZ3MiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJvbkJlZm9yZVJlbmRlcmluZyIsImdldFRhYnNNb2RlbCIsIm9GaWx0ZXJDb250cm9sIiwiX2dldEZpbHRlckNvbnRyb2wiLCJzZXRDb3VudHNPdXREYXRlZCIsIm9GaWx0ZXJCYXJBUEkiLCJnZXRQYXJlbnQiLCJnZXRBbGxJbm5lckNvbnRyb2xzIiwiZm9yRWFjaCIsIm9NYWNyb0FQSSIsInNob3dDb3VudHMiLCJhdHRhY2hFdmVudCIsImludGVybmFsUmVmcmVzaFRhYnNDb3VudCIsImJpbmQiLCJzdXNwZW5kQmluZGluZyIsIl9vblNlYXJjaCIsIl9vbkZpbHRlckNoYW5nZWQiLCJvbkFmdGVyUmVuZGVyaW5nIiwiZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2wiLCJyZXN1bWVCaW5kaW5nIiwiZ2V0UHJvcGVydHkiLCJzZXRWaXNpYmxlT3ZlcnJpZGRlbiIsInNldFByb3BlcnR5IiwibWFjcm9BUEkiLCJpY29uVGFiRmlsdGVyIiwiX2dldFRhYkZyb21Jbm5lckNvbnRyb2wiLCJvcmlnaW5TZXRWaXNpYmxlIiwic2V0VmlzaWJsZSIsInZhbHVlIiwiZ2V0VmlzaWJsZSIsInJlZnJlc2hUYWJDb3VudCIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwicmVuZGVyQ29udHJvbCIsImNvbnRlbnQiLCJzVGFic01vZGVsIiwib0NvbnRlbnQiLCJ1bmRlZmluZWQiLCJvTW9kZWwiLCJnZXRNb2RlbCIsIkpTT05Nb2RlbCIsInNldE1vZGVsIiwib1NlbGVjdGVkVGFiIiwiZ2V0SXRlbXMiLCJmaW5kIiwib0l0ZW0iLCJnZXRLZXkiLCJnZXRTZWxlY3RlZEtleSIsImhhbmRsZVRhYkNoYW5nZSIsIm9FdmVudCIsIm9JY29uVGFiQmFyIiwiZ2V0U291cmNlIiwib011bHRpQ29udHJvbCIsIm1QYXJhbWV0ZXJzIiwiZ2V0UGFyYW1ldGVycyIsIl9zZXRJbm5lckJpbmRpbmciLCJzUHJldmlvdXNTZWxlY3RlZEtleSIsInByZXZpb3VzS2V5Iiwic1NlbGVjdGVkS2V5Iiwic2VsZWN0ZWRLZXkiLCJvRmlsdGVyQmFyIiwiX3JlZnJlc2hDdXN0b21WaWV3IiwiZ2V0RmlsdGVyQ29uZGl0aW9ucyIsIkNvbnRyb2xQZXJzb25hbGl6YXRpb25Xcml0ZUFQSSIsImFkZCIsImNoYW5nZXMiLCJjaGFuZ2VTcGVjaWZpY0RhdGEiLCJjaGFuZ2VUeXBlIiwicHJldmlvdXNTZWxlY3RlZEtleSIsInNlbGVjdG9yRWxlbWVudCIsIl9nZXRWaWV3Q29udHJvbGxlciIsImdldEV4dGVuc2lvbkFQSSIsInVwZGF0ZUFwcFN0YXRlIiwiZmlyZUV2ZW50IiwiaWNvblRhYkJhciIsInJlZnJlc2hTZWxlY3RlZElubmVyQ29udHJvbENvbnRlbnQiLCJpbnZhbGlkYXRlQ29udGVudCIsImtleXMiLCJrZXkiLCJiVmFsdWUiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzZXRGcmVlemVDb250ZW50IiwiX3VwZGF0ZU11bHRpVGFiTm90QXBwbGljYWJsZUZpZWxkcyIsInRhYnNNb2RlbCIsInJlc3VsdHMiLCJ2aWV3IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3Iiwidmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsInVzZUhpZGRlbkZpbHRlckJhciIsIm9UYWIiLCJzVGFiSWQiLCJtSWdub3JlZEZpZWxkcyIsInJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzIiwibm90QXBwbGljYWJsZSIsImZpZWxkcyIsInRpdGxlIiwiX3NldFRhYk1lc3NhZ2VTdHJpcCIsImVudGl0eVR5cGVQYXRoIiwiZGF0YSIsImlnbm9yZWRGaWVsZHMiLCJnZXRUZXh0IiwiaXNBIiwiY2hlY2tOb25GaWx0ZXJhYmxlRW50aXR5U2V0Iiwic2V0RGF0YSIsInJlc291cmNlTW9kZWwiLCJnZXRSZXNvdXJjZU1vZGVsIiwib0NoYXJ0IiwiZ2V0Q29udGVudCIsImJFbnRpdHlTZXRGaWxlcmFibGUiLCJNZXRhTW9kZWxDb252ZXJ0ZXIiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJnZXRNZXRhTW9kZWwiLCJnZXRDb250ZXh0IiwidGFyZ2V0T2JqZWN0IiwiYW5ub3RhdGlvbnMiLCJDYXBhYmlsaXRpZXMiLCJGaWx0ZXJSZXN0cmljdGlvbnMiLCJGaWx0ZXJhYmxlIiwiaW5jbHVkZXMiLCJiT25seUZvclZpc2libGVUYWIiLCJpbm5lckNvbnRyb2xzIiwicmVkdWNlIiwiYUlubmVyQ29udHJvbHMiLCJzSW5uZXJDb250cm9sIiwiVUk1RWxlbWVudCIsImdldEVsZW1lbnRCeUlkIiwicHVzaCIsImZpbHRlciIsIm9Jbm5lckNvbnRyb2wiLCJmaWx0ZXJDb250cm9sIiwib1ZpZXciLCJnZXRDb250cm9sbGVyIiwib0ZpbHRlckNvbmRpdGlvbnMiLCJzUmVmcmVzaENhdXNlIiwib25WaWV3TmVlZHNSZWZyZXNoIiwiZmlsdGVyQ29uZGl0aW9ucyIsImN1cnJlbnRUYWJJZCIsInJlZnJlc2hDYXVzZSIsImdldENvdW50cyIsInNldENvdW50IiwidGhlbiIsImNvdW50IiwiY2F0Y2giLCJlcnJvciIsIkxvZyIsInRhYmxlRXZlbnQiLCJldmVudE1hY3JvQVBJIiwidGFyZ2V0S2V5IiwicmVmcmVzaFRhYnNDb3VudCIsInNwbGl0Iiwib0ljb25UYWJGaWx0ZXIiLCJjb3VudHNPdXREYXRlZCIsInNldFRhYkNvbnRlbnRUb0JlUmVmcmVzaGVkT25OZXh0T3BlbmluZyIsInNlbGVjdGVkVGFiS2V5IiwidGFiS2V5cyIsInJlZnJlc2hTZWxlY3RlZFRhYkNvbnRlbnQiLCJiUmVxdWVzdElmTm90SW5pdGlhbGl6ZWQiLCJiSXNTZWxlY3RlZEtleSIsInNBY3Rpb24iLCJSZXN1bWUiLCJTdXNwZW5kIiwicHJvcGVydGllcyIsInNUZXh0IiwiYUlnbm9yZWRGaWVsZHMiLCJBcnJheSIsImlzQXJyYXkiLCJhSWdub3JlZExhYmVscyIsIk1lc3NhZ2VTdHJpcCIsImdldExhYmVscyIsImdldFBhcmFtZXRlciIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk11bHRpcGxlTW9kZUNvbnRyb2wudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbnRpdHlTZXQgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvbiwgYXNzb2NpYXRpb24sIGRlZmluZVVJNUNsYXNzLCBldmVudCwgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCAqIGFzIE1ldGFNb2RlbENvbnZlcnRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCBNZXNzYWdlU3RyaXAgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWVzc2FnZVN0cmlwXCI7XG5pbXBvcnQgeyBnZXRSZXNvdXJjZU1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUmVzb3VyY2VNb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgTWFjcm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIExpc3RSZXBvcnRDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL0xpc3RSZXBvcnQvTGlzdFJlcG9ydENvbnRyb2xsZXIuY29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgSWNvblRhYkJhciBmcm9tIFwic2FwL20vSWNvblRhYkJhclwiO1xuaW1wb3J0IHR5cGUgeyBJY29uVGFiQmFyJFNlbGVjdEV2ZW50IH0gZnJvbSBcInNhcC9tL0ljb25UYWJCYXJcIjtcbmltcG9ydCB0eXBlIEljb25UYWJGaWx0ZXIgZnJvbSBcInNhcC9tL0ljb25UYWJGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIENvcmVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcbmltcG9ydCBDb250cm9sUGVyc29uYWxpemF0aW9uV3JpdGVBUEkgZnJvbSBcInNhcC91aS9mbC93cml0ZS9hcGkvQ29udHJvbFBlcnNvbmFsaXphdGlvbldyaXRlQVBJXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5cbmV4cG9ydCB0eXBlIElubmVyQ29udHJvbFR5cGUgPSBNYWNyb0FQSSAmXG5cdFBhcnRpYWw8e1xuXHRcdHJlc3VtZUJpbmRpbmc6IEZ1bmN0aW9uO1xuXHRcdHN1c3BlbmRCaW5kaW5nOiBGdW5jdGlvbjtcblx0XHRnZXRDb3VudHM6IEZ1bmN0aW9uO1xuXHRcdHJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzOiBGdW5jdGlvbjtcblx0XHRpbnZhbGlkYXRlQ29udGVudDogRnVuY3Rpb247XG5cdFx0Z2V0Q29udGVudDogRnVuY3Rpb247XG5cdH0+O1xuXG50eXBlIE1lc3NhZ2VTdHJpcFByb3BlcnRpZXMgPSB7XG5cdGVudGl0eVR5cGVQYXRoOiBzdHJpbmc7XG5cdGlnbm9yZWRGaWVsZHM6IHN0cmluZ1tdO1xuXHR0aXRsZTogc3RyaW5nO1xufTtcblxuZW51bSBCaW5kaW5nQWN0aW9uIHtcblx0U3VzcGVuZCA9IFwic3VzcGVuZEJpbmRpbmdcIixcblx0UmVzdW1lID0gXCJyZXN1bWVCaW5kaW5nXCJcbn1cblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLnRlbXBsYXRlcy5MaXN0UmVwb3J0LmNvbnRyb2xzLk11bHRpcGxlTW9kZUNvbnRyb2xcIilcbmNsYXNzIE11bHRpcGxlTW9kZUNvbnRyb2wgZXh0ZW5kcyBDb250cm9sIHtcblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0c2hvd0NvdW50cyE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0c2V0VmlzaWJsZU92ZXJyaWRkZW4hOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdGZyZWV6ZUNvbnRlbnQhOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdGNvdW50c091dERhdGVkITogYm9vbGVhbjtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5tLkljb25UYWJCYXJcIiwgbXVsdGlwbGU6IGZhbHNlLCBpc0RlZmF1bHQ6IHRydWUgfSlcblx0Y29udGVudCE6IEljb25UYWJCYXI7XG5cblx0QGFzc29jaWF0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIsIG11bHRpcGxlOiB0cnVlIH0pXG5cdGlubmVyQ29udHJvbHMhOiBzdHJpbmdbXTtcblxuXHRAYXNzb2NpYXRpb24oeyB0eXBlOiBcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmlsdGVyQmFyXCIsIG11bHRpcGxlOiBmYWxzZSB9KVxuXHRmaWx0ZXJDb250cm9sITogc3RyaW5nO1xuXG5cdEBldmVudCgpXG5cdHNlbGVjdCE6IEZ1bmN0aW9uO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdGlkPzogc3RyaW5nIHwgdW5kZWZpbmVkIHwgKFByb3BlcnRpZXNPZjxNdWx0aXBsZU1vZGVDb250cm9sPiAmICRDb250cm9sU2V0dGluZ3MpLFxuXHRcdHNldHRpbmdzPzogJENvbnRyb2xTZXR0aW5ncyAmIFByb3BlcnRpZXNPZjxNdWx0aXBsZU1vZGVDb250cm9sPlxuXHQpIHtcblx0XHRzdXBlcihpZCBhcyBzdHJpbmcsIHNldHRpbmdzKTtcblx0fVxuXG5cdG9uQmVmb3JlUmVuZGVyaW5nKCk6IHZvaWQge1xuXHRcdHRoaXMuZ2V0VGFic01vZGVsKCk7IC8vIEdlbmVyYXRlIHRoZSBtb2RlbCB3aGljaCBpcyBtYW5kYXRvcnkgZm9yIHNvbWUgYmluZGluZ3NcblxuXHRcdGNvbnN0IG9GaWx0ZXJDb250cm9sID0gdGhpcy5fZ2V0RmlsdGVyQ29udHJvbCgpO1xuXHRcdGlmICghb0ZpbHRlckNvbnRyb2wpIHtcblx0XHRcdC8vIEluIGNhc2UgdGhlcmUncyBubyBmaWx0ZXJiYXIsIHdlIGhhdmUgdG8gdXBkYXRlIHRoZSBjb3VudHMgaW4gdGhlIHRhYnMgaW1tZWRpYXRlbHlcblx0XHRcdHRoaXMuc2V0Q291bnRzT3V0RGF0ZWQodHJ1ZSk7XG5cdFx0fVxuXHRcdGNvbnN0IG9GaWx0ZXJCYXJBUEkgPSBvRmlsdGVyQ29udHJvbD8uZ2V0UGFyZW50KCk7XG5cdFx0dGhpcy5nZXRBbGxJbm5lckNvbnRyb2xzKCkuZm9yRWFjaCgob01hY3JvQVBJKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5zaG93Q291bnRzKSB7XG5cdFx0XHRcdG9NYWNyb0FQSS5hdHRhY2hFdmVudChcImludGVybmFsRGF0YVJlcXVlc3RlZFwiLCB0aGlzLmludGVybmFsUmVmcmVzaFRhYnNDb3VudC5iaW5kKHRoaXMpKTtcblx0XHRcdH1cblx0XHRcdG9NYWNyb0FQSS5zdXNwZW5kQmluZGluZz8uKCk7XG5cdFx0fSk7XG5cdFx0aWYgKG9GaWx0ZXJCYXJBUEkpIHtcblx0XHRcdG9GaWx0ZXJCYXJBUEkuYXR0YWNoRXZlbnQoXCJpbnRlcm5hbFNlYXJjaFwiLCB0aGlzLl9vblNlYXJjaC5iaW5kKHRoaXMpKTtcblx0XHRcdG9GaWx0ZXJCYXJBUEkuYXR0YWNoRXZlbnQoXCJpbnRlcm5hbEZpbHRlckNoYW5nZWRcIiwgdGhpcy5fb25GaWx0ZXJDaGFuZ2VkLmJpbmQodGhpcykpO1xuXHRcdH1cblx0fVxuXG5cdG9uQWZ0ZXJSZW5kZXJpbmcoKTogdm9pZCB7XG5cdFx0dGhpcy5nZXRTZWxlY3RlZElubmVyQ29udHJvbCgpPy5yZXN1bWVCaW5kaW5nPy4oIXRoaXMuZ2V0UHJvcGVydHkoXCJmcmVlemVDb250ZW50XCIpKTtcblx0XHRpZiAodGhpcy5zaG93Q291bnRzICYmICF0aGlzLnNldFZpc2libGVPdmVycmlkZGVuKSB7XG5cdFx0XHR0aGlzLnNldFByb3BlcnR5KFwic2V0VmlzaWJsZU92ZXJyaWRkZW5cIiwgdHJ1ZSk7XG5cdFx0XHR0aGlzLmdldEFsbElubmVyQ29udHJvbHMoKS5mb3JFYWNoKChtYWNyb0FQSTogTWFjcm9BUEkpOiB2b2lkID0+IHtcblx0XHRcdFx0Y29uc3QgaWNvblRhYkZpbHRlciA9IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2wobWFjcm9BUEkpO1xuXHRcdFx0XHQvLyBObyBjb3VudCB0byBzaG93XG5cdFx0XHRcdGlmICghaWNvblRhYkZpbHRlcikgcmV0dXJuO1xuXG5cdFx0XHRcdGNvbnN0IG9yaWdpblNldFZpc2libGUgPSBpY29uVGFiRmlsdGVyLnNldFZpc2libGU7XG5cdFx0XHRcdGljb25UYWJGaWx0ZXIuc2V0VmlzaWJsZSA9ICh2YWx1ZTogYm9vbGVhbik6IEljb25UYWJGaWx0ZXIgPT4ge1xuXHRcdFx0XHRcdGlmIChpY29uVGFiRmlsdGVyLmdldFZpc2libGUoKSA9PT0gZmFsc2UgJiYgdmFsdWUpIHtcblx0XHRcdFx0XHRcdHRoaXMucmVmcmVzaFRhYkNvdW50KG1hY3JvQVBJKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIG9yaWdpblNldFZpc2libGUuYmluZChpY29uVGFiRmlsdGVyKSh2YWx1ZSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgcmVuZGVyKG9SbTogUmVuZGVyTWFuYWdlciwgb0NvbnRyb2w6IE11bHRpcGxlTW9kZUNvbnRyb2wpOiB2b2lkIHtcblx0XHRvUm0ucmVuZGVyQ29udHJvbChvQ29udHJvbC5jb250ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBtb2RlbCBjb250YWluaW5nIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gdGhlIEljb25UYWJGaWx0ZXJzLlxuXHQgKiBAcmV0dXJucyBUaGUgbW9kZWxcblx0ICovXG5cdGdldFRhYnNNb2RlbCgpOiBKU09OTW9kZWwgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IHNUYWJzTW9kZWwgPSBcInRhYnNJbnRlcm5hbFwiO1xuXHRcdGNvbnN0IG9Db250ZW50ID0gdGhpcy5jb250ZW50O1xuXHRcdGlmICghb0NvbnRlbnQpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGxldCBvTW9kZWwgPSBvQ29udGVudC5nZXRNb2RlbChzVGFic01vZGVsKSBhcyBKU09OTW9kZWwgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKCFvTW9kZWwpIHtcblx0XHRcdG9Nb2RlbCA9IG5ldyBKU09OTW9kZWwoe30pO1xuXHRcdFx0b0NvbnRlbnQuc2V0TW9kZWwob01vZGVsLCBzVGFic01vZGVsKTtcblx0XHR9XG5cdFx0cmV0dXJuIG9Nb2RlbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBpbm5lciBjb250cm9sIG9mIHRoZSBkaXNwbGF5ZWQgdGFiLlxuXHQgKiBAcmV0dXJucyBUaGUgY29udHJvbFxuXHQgKi9cblx0Z2V0U2VsZWN0ZWRJbm5lckNvbnRyb2woKTogSW5uZXJDb250cm9sVHlwZSB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgb1NlbGVjdGVkVGFiID0gdGhpcy5jb250ZW50Py5nZXRJdGVtcygpLmZpbmQoKG9JdGVtKSA9PiAob0l0ZW0gYXMgSWNvblRhYkZpbHRlcikuZ2V0S2V5KCkgPT09IHRoaXMuY29udGVudC5nZXRTZWxlY3RlZEtleSgpKTtcblx0XHRyZXR1cm4gb1NlbGVjdGVkVGFiXG5cdFx0XHQ/IHRoaXMuZ2V0QWxsSW5uZXJDb250cm9scygpLmZpbmQoKG9NYWNyb0FQSSkgPT4gdGhpcy5fZ2V0VGFiRnJvbUlubmVyQ29udHJvbChvTWFjcm9BUEkpID09PSBvU2VsZWN0ZWRUYWIpXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBNYW5hZ2VzIHRoZSBiaW5kaW5nIG9mIGFsbCBpbm5lciBjb250cm9scyB3aGVuIHRoZSBzZWxlY3RlZCBJY29uVGFiRmlsdGVyIGlzIGNoYW5nZWQuXG5cdCAqIEBwYXJhbSBvRXZlbnQgRXZlbnQgZmlyZWQgYnkgdGhlIEljb25UYWJCYXJcblx0ICovXG5cdHN0YXRpYyBoYW5kbGVUYWJDaGFuZ2Uob0V2ZW50OiBJY29uVGFiQmFyJFNlbGVjdEV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3Qgb0ljb25UYWJCYXIgPSBvRXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3Qgb011bHRpQ29udHJvbCA9IG9JY29uVGFiQmFyLmdldFBhcmVudCgpIGFzIE11bHRpcGxlTW9kZUNvbnRyb2w7XG5cblx0XHRjb25zdCBtUGFyYW1ldGVycyA9IG9FdmVudC5nZXRQYXJhbWV0ZXJzKCk7XG5cdFx0b011bHRpQ29udHJvbC5fc2V0SW5uZXJCaW5kaW5nKHRydWUpO1xuXHRcdGNvbnN0IHNQcmV2aW91c1NlbGVjdGVkS2V5ID0gbVBhcmFtZXRlcnM/LnByZXZpb3VzS2V5O1xuXHRcdGNvbnN0IHNTZWxlY3RlZEtleSA9IG1QYXJhbWV0ZXJzPy5zZWxlY3RlZEtleTtcblxuXHRcdGlmIChzU2VsZWN0ZWRLZXkgJiYgc1ByZXZpb3VzU2VsZWN0ZWRLZXkgIT09IHNTZWxlY3RlZEtleSkge1xuXHRcdFx0Y29uc3Qgb0ZpbHRlckJhciA9IG9NdWx0aUNvbnRyb2wuX2dldEZpbHRlckNvbnRyb2woKTtcblx0XHRcdGlmIChvRmlsdGVyQmFyICYmICFvTXVsdGlDb250cm9sLmdldFByb3BlcnR5KFwiZnJlZXplQ29udGVudFwiKSkge1xuXHRcdFx0XHRpZiAoIW9NdWx0aUNvbnRyb2wuZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2woKSkge1xuXHRcdFx0XHRcdC8vY3VzdG9tIHRhYlxuXHRcdFx0XHRcdG9NdWx0aUNvbnRyb2wuX3JlZnJlc2hDdXN0b21WaWV3KG9GaWx0ZXJCYXIuZ2V0RmlsdGVyQ29uZGl0aW9ucygpLCBcInRhYkNoYW5nZWRcIik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdENvbnRyb2xQZXJzb25hbGl6YXRpb25Xcml0ZUFQSS5hZGQoe1xuXHRcdFx0XHRjaGFuZ2VzOiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Y2hhbmdlU3BlY2lmaWNEYXRhOiB7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZVR5cGU6IFwic2VsZWN0SWNvblRhYkJhckZpbHRlclwiLFxuXHRcdFx0XHRcdFx0XHRjb250ZW50OiB7XG5cdFx0XHRcdFx0XHRcdFx0c2VsZWN0ZWRLZXk6IHNTZWxlY3RlZEtleSxcblx0XHRcdFx0XHRcdFx0XHRwcmV2aW91c1NlbGVjdGVkS2V5OiBzUHJldmlvdXNTZWxlY3RlZEtleVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0c2VsZWN0b3JFbGVtZW50OiBvSWNvblRhYkJhclxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0b011bHRpQ29udHJvbC5fZ2V0Vmlld0NvbnRyb2xsZXIoKT8uZ2V0RXh0ZW5zaW9uQVBJKCk/LnVwZGF0ZUFwcFN0YXRlKCk7XG5cblx0XHRvTXVsdGlDb250cm9sLmZpcmVFdmVudChcInNlbGVjdFwiLCB7XG5cdFx0XHRpY29uVGFiQmFyOiBvSWNvblRhYkJhcixcblx0XHRcdHNlbGVjdGVkS2V5OiBzU2VsZWN0ZWRLZXksXG5cdFx0XHRwcmV2aW91c0tleTogc1ByZXZpb3VzU2VsZWN0ZWRLZXlcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWZyZXNoZXMgdGhlIGNvbnRlbnQgb2YgdGhlIHNlbGVjdGVkIGlubmVyIGNvbnRyb2wuXG5cdCAqXG5cdCAqL1xuXHRyZWZyZXNoU2VsZWN0ZWRJbm5lckNvbnRyb2xDb250ZW50KCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmdldFNlbGVjdGVkSW5uZXJDb250cm9sKCkpIHtcblx0XHRcdHRoaXMuZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2woKT8uaW52YWxpZGF0ZUNvbnRlbnQ/LigpO1xuXHRcdFx0dGhpcy5nZXRTZWxlY3RlZElubmVyQ29udHJvbCgpPy5yZXN1bWVCaW5kaW5nPy4odHJ1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGN1c3RvbSB0YWJcblx0XHRcdHRoaXMuX3JlZnJlc2hDdXN0b21WaWV3KHVuZGVmaW5lZCwgXCJmb3JjZWRSZWZyZXNoXCIpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBJbnZhbGlkYXRlcyB0aGUgY29udGVudCBvZiB0aGUgaW5uZXIgY29udHJvbHMuXG5cdCAqIEBwYXJhbSBba2V5c10gVGhlIGxpc3Qgb2YgdGhlIGtleXMgaWRlbnRpZnlpbmcgdGhlIHZpZXdzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0IGZvciB3aGljaCB0aGUgdmlld3MnIGNvbnRlbnQgd2lsbCBiZSBpbnZhbGlkYXRlZC4gSWYgbm90IHByb3ZpZGVkLCBhbGwgdGhlIHZpZXdzJyBjb250ZW50IHdpbGwgYmUgaW52YWxpZGF0ZWRcblx0ICovXG5cdGludmFsaWRhdGVDb250ZW50KGtleXM/OiBzdHJpbmdbXSk6IHZvaWQge1xuXHRcdHRoaXMuc2V0Q291bnRzT3V0RGF0ZWQodHJ1ZSk7XG5cdFx0dGhpcy5nZXRBbGxJbm5lckNvbnRyb2xzKCkuZm9yRWFjaCgobWFjcm9BUEkpID0+IHtcblx0XHRcdGlmIChrZXlzKSB7XG5cdFx0XHRcdGNvbnN0IGljb25UYWJGaWx0ZXIgPSB0aGlzLl9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG1hY3JvQVBJKTtcblx0XHRcdFx0Zm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdGljb25UYWJGaWx0ZXIgJiZcblx0XHRcdFx0XHRcdChpY29uVGFiRmlsdGVyLmdldEtleSgpID09PSBgZmU6OnRhYmxlOjoke2tleX06OkxpbmVJdGVtYCB8fCBpY29uVGFiRmlsdGVyLmdldEtleSgpID09PSBgZmU6OkN1c3RvbVRhYjo6JHtrZXl9YClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdG1hY3JvQVBJLmludmFsaWRhdGVDb250ZW50Py4oKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1hY3JvQVBJLmludmFsaWRhdGVDb250ZW50Py4oKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBjb3VudHMgdG8gXCJvdXQgb2YgZGF0ZVwiIG9yIFwidXAgdG8gZGF0ZVwiXG5cdCAqIElmIHRoZSBjb3VudHMgYXJlIHNldCB0byBcIm91dCBvZiBkYXRlXCIgYW5kIHRoZSBzZWxlY3RlZCBJY29uVGFiRmlsdGVyIGRvZXNuJ3QgY29udGFpbiBhbiBpbm5lciBjb250cm9sLCBhbGwgaW5uZXIgY29udHJvbHMgYXJlIHJlcXVlc3RlZCB0byBnZXQgdGhlIG5ldyBjb3VudHMuXG5cdCAqIEBwYXJhbSBiVmFsdWUgRWl0aGVyIGZyZWV6ZXMgdGhlIGNvbnRyb2wgb3Igbm90XG5cdCAqL1xuXHRzZXRDb3VudHNPdXREYXRlZChiVmFsdWUgPSB0cnVlKTogdm9pZCB7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcImNvdW50c091dERhdGVkXCIsIGJWYWx1ZSk7XG5cdFx0Ly8gaWYgdGhlIGN1cnJlbnQgdGFiIGlzIG5vdCBjb25maWd1cmVkIHdpdGggbm8gaW5uZXIgQ29udHJvbFxuXHRcdC8vIHRoZSB0YWIgY291bnRzIG11c3QgYmUgbWFudWFsbHkgcmVmcmVzaGVkIHNpbmNlIG5vIE1hY3JvIEFQSSB3aWxsIHNlbnQgZXZlbnQgaW50ZXJuYWxEYXRhUmVxdWVzdGVkXG5cdFx0aWYgKGJWYWx1ZSAmJiAhdGhpcy5nZXRTZWxlY3RlZElubmVyQ29udHJvbCgpKSB7XG5cdFx0XHR0aGlzLmludGVybmFsUmVmcmVzaFRhYnNDb3VudCgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBGcmVlemVzIHRoZSBjb250ZW50IDpcblx0ICogLSBjb250ZW50IGlzIGZyb3plbjogdGhlIGJpbmRpbmcgb2YgdGhlIGlubmVyIGNvbnRyb2xzIGFyZSBzdXNwZW5kZWQuXG5cdCAqIC0gY29udGVudCBpcyB1bmZyb3plbjogdGhlIGJpbmRpbmcgb2YgaW5uZXIgY29udHJvbCByZWxhdGVkIHRvIHRoZSBzZWxlY3RlZCBJY29uVGFiRmlsdGVyIGlzIHJlc3VtZWQuXG5cdCAqIEBwYXJhbSBiVmFsdWUgRnJlZXplIG9yIG5vdCB0aGUgY29udHJvbFxuXHQgKi9cblx0c2V0RnJlZXplQ29udGVudChiVmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwiZnJlZXplQ29udGVudFwiLCBiVmFsdWUpO1xuXHRcdHRoaXMuX3NldElubmVyQmluZGluZygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgdGhlIGludGVybmFsIG1vZGVsIHdpdGggdGhlIHByb3BlcnRpZXMgdGhhdCBhcmUgbm90IGFwcGxpY2FibGUgb24gZWFjaCBJY29uVGFiRmlsdGVyIChjb250YWluaW5nIGlubmVyIGNvbnRyb2wpIGFjY29yZGluZyB0byB0aGUgZW50aXR5VHlwZSBvZiB0aGUgZmlsdGVyIGNvbnRyb2wuXG5cdCAqXG5cdCAqL1xuXHRfdXBkYXRlTXVsdGlUYWJOb3RBcHBsaWNhYmxlRmllbGRzKCk6IHZvaWQge1xuXHRcdGNvbnN0IHRhYnNNb2RlbCA9IHRoaXMuZ2V0VGFic01vZGVsKCk7XG5cdFx0Y29uc3Qgb0ZpbHRlckNvbnRyb2wgPSB0aGlzLl9nZXRGaWx0ZXJDb250cm9sKCkgYXMgQ29udHJvbDtcblx0XHRpZiAodGFic01vZGVsICYmIG9GaWx0ZXJDb250cm9sKSB7XG5cdFx0XHRjb25zdCByZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCB7IG5vdEFwcGxpY2FibGU6IHsgZmllbGRzOiBzdHJpbmdbXTsgdGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZCB9IH0+ID0ge307XG5cdFx0XHRjb25zdCB2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzKTtcblx0XHRcdGNvbnN0IHZpZXdEYXRhID0gdmlldy5nZXRWaWV3RGF0YSgpO1xuXHRcdFx0aWYgKCF2aWV3RGF0YS51c2VIaWRkZW5GaWx0ZXJCYXIpIHtcblx0XHRcdFx0dGhpcy5nZXRBbGxJbm5lckNvbnRyb2xzKCkuZm9yRWFjaCgob01hY3JvQVBJKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgb1RhYiA9IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2wob01hY3JvQVBJKTtcblx0XHRcdFx0XHRpZiAob1RhYikge1xuXHRcdFx0XHRcdFx0Y29uc3Qgc1RhYklkID0gb1RhYi5nZXRLZXkoKTtcblx0XHRcdFx0XHRcdGNvbnN0IG1JZ25vcmVkRmllbGRzID0gb01hY3JvQVBJLnJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzPy4ob0ZpbHRlckNvbnRyb2wpIHx8IFtdO1xuXHRcdFx0XHRcdFx0cmVzdWx0c1tzVGFiSWRdID0ge1xuXHRcdFx0XHRcdFx0XHRub3RBcHBsaWNhYmxlOiB7XG5cdFx0XHRcdFx0XHRcdFx0ZmllbGRzOiBtSWdub3JlZEZpZWxkcyxcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogdGhpcy5fc2V0VGFiTWVzc2FnZVN0cmlwKHtcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVR5cGVQYXRoOiBvRmlsdGVyQ29udHJvbC5kYXRhKFwiZW50aXR5VHlwZVwiKSxcblx0XHRcdFx0XHRcdFx0XHRcdGlnbm9yZWRGaWVsZHM6IG1JZ25vcmVkRmllbGRzLFxuXHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IG9UYWIuZ2V0VGV4dCgpXG5cdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdGlmIChvTWFjcm9BUEkgJiYgb01hY3JvQVBJLmlzQShcInNhcC5mZS5tYWNyb3MuQ2hhcnRcIikpIHtcblx0XHRcdFx0XHRcdFx0cmVzdWx0c1tzVGFiSWRdID0gdGhpcy5jaGVja05vbkZpbHRlcmFibGVFbnRpdHlTZXQob01hY3JvQVBJLCBzVGFiSWQsIHJlc3VsdHMpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHRcdHRhYnNNb2RlbC5zZXREYXRhKHJlc3VsdHMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBNb2RpZmllcyB0aGUgbWVzc2FnZXN0cmlwIG1lc3NhZ2UgYmFzZWQgb24gZW50aXR5IHNldCBpcyBmaWxlcmFibGUgb3Igbm90LlxuXHQgKiBAcGFyYW0gb01hY3JvQVBJIE1hY3JvIGNoYXJ0IGFwaVxuXHQgKiBAcGFyYW0gc1RhYklkIFRhYiBrZXkgSURcblx0ICogQHBhcmFtIHJlc3VsdHMgU2hvdWxkIGNvbnRhaW4gZmllbGRzIGFuZCB0aXRsZVxuXHQgKiBAcmV0dXJucyBBbiBvYmplY3Qgb2YgbW9kaWZpZWQgZmllbGRzIGFuZCB0aXRsZVxuXHQgKi9cblx0Y2hlY2tOb25GaWx0ZXJhYmxlRW50aXR5U2V0KFxuXHRcdG9NYWNyb0FQSTogSW5uZXJDb250cm9sVHlwZSxcblx0XHRzVGFiSWQ6IHN0cmluZyxcblx0XHRyZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCB7IG5vdEFwcGxpY2FibGU6IHsgZmllbGRzOiBzdHJpbmdbXTsgdGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZCB9IH0+XG5cdCk6IHsgbm90QXBwbGljYWJsZTogeyBmaWVsZHM6IHN0cmluZ1tdOyB0aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkIH0gfSB7XG5cdFx0Y29uc3QgcmVzb3VyY2VNb2RlbCA9IGdldFJlc291cmNlTW9kZWwob01hY3JvQVBJKTtcblx0XHRjb25zdCBvQ2hhcnQgPSBvTWFjcm9BUEk/LmdldENvbnRlbnQgPyBvTWFjcm9BUEkuZ2V0Q29udGVudCgpIDogdW5kZWZpbmVkO1xuXHRcdGNvbnN0IGJFbnRpdHlTZXRGaWxlcmFibGUgPVxuXHRcdFx0b0NoYXJ0ICYmXG5cdFx0XHRNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPEVudGl0eVNldD4oXG5cdFx0XHRcdChvQ2hhcnQuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsKS5nZXRNZXRhTW9kZWwoKS5nZXRDb250ZXh0KGAke29DaGFydC5kYXRhKFwidGFyZ2V0Q29sbGVjdGlvblBhdGhcIil9YClcblx0XHRcdCk/LnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/LkNhcGFiaWxpdGllcz8uRmlsdGVyUmVzdHJpY3Rpb25zPy5GaWx0ZXJhYmxlO1xuXHRcdGlmIChiRW50aXR5U2V0RmlsZXJhYmxlICE9PSB1bmRlZmluZWQgJiYgIWJFbnRpdHlTZXRGaWxlcmFibGUpIHtcblx0XHRcdGlmIChyZXN1bHRzW3NUYWJJZF0ubm90QXBwbGljYWJsZS5maWVsZHMuaW5jbHVkZXMoXCIkc2VhcmNoXCIpKSB7XG5cdFx0XHRcdHJlc3VsdHNbc1RhYklkXS5ub3RBcHBsaWNhYmxlLnRpdGxlICs9IFwiIFwiICsgcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19MUl9NVUxUSVZJWl9DSEFSVF9NVUxUSV9OT05fRklMVEVSQUJMRVwiKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlc3VsdHNbc1RhYklkXS5ub3RBcHBsaWNhYmxlLmZpZWxkcyA9IFtcIm5vbkZpbHRlcmFibGVcIl07XG5cdFx0XHRcdHJlc3VsdHNbc1RhYklkXS5ub3RBcHBsaWNhYmxlLnRpdGxlID0gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19MUl9NVUxUSVZJWl9DSEFSVF9NVUxUSV9OT05fRklMVEVSQUJMRVwiKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdHNbc1RhYklkXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBpbm5lciBjb250cm9scy5cblx0ICogQHBhcmFtIGJPbmx5Rm9yVmlzaWJsZVRhYiBTaG91bGQgZGlzcGxheSBvbmx5IHRoZSB2aXNpYmxlIGNvbnRyb2xzXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGNvbnRyb2xzXG5cdCAqL1xuXHRnZXRBbGxJbm5lckNvbnRyb2xzKGJPbmx5Rm9yVmlzaWJsZVRhYiA9IGZhbHNlKTogSW5uZXJDb250cm9sVHlwZVtdIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0dGhpcy5pbm5lckNvbnRyb2xzLnJlZHVjZSgoYUlubmVyQ29udHJvbHM6IElubmVyQ29udHJvbFR5cGVbXSwgc0lubmVyQ29udHJvbDogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9Db250cm9sID0gVUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZChzSW5uZXJDb250cm9sKSBhcyBJbm5lckNvbnRyb2xUeXBlO1xuXHRcdFx0XHRpZiAob0NvbnRyb2wpIHtcblx0XHRcdFx0XHRhSW5uZXJDb250cm9scy5wdXNoKG9Db250cm9sKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYUlubmVyQ29udHJvbHMuZmlsdGVyKFxuXHRcdFx0XHRcdChvSW5uZXJDb250cm9sKSA9PiAhYk9ubHlGb3JWaXNpYmxlVGFiIHx8IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2wob0lubmVyQ29udHJvbCk/LmdldFZpc2libGUoKVxuXHRcdFx0XHQpO1xuXHRcdFx0fSwgW10pIHx8IFtdXG5cdFx0KTtcblx0fVxuXG5cdF9nZXRGaWx0ZXJDb250cm9sKCk6IEZpbHRlckJhciB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIFVJNUVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5maWx0ZXJDb250cm9sKSBhcyBGaWx0ZXJCYXIgfCB1bmRlZmluZWQ7XG5cdH1cblxuXHRfZ2V0VGFiRnJvbUlubmVyQ29udHJvbChvQ29udHJvbDogQ29udHJvbCk6IEljb25UYWJGaWx0ZXIgfCB1bmRlZmluZWQge1xuXHRcdGxldCBvVGFiOiBVSTVFbGVtZW50IHwgdW5kZWZpbmVkID0gb0NvbnRyb2w7XG5cdFx0aWYgKG9UYWIgJiYgIW9UYWIuaXNBPEljb25UYWJGaWx0ZXI+KFwic2FwLm0uSWNvblRhYkZpbHRlclwiKSAmJiAob1RhYiBhcyB7IGdldFBhcmVudD86IEZ1bmN0aW9uIH0pLmdldFBhcmVudCkge1xuXHRcdFx0b1RhYiA9IG9Db250cm9sLmdldFBhcmVudCgpIGFzIFVJNUVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdHJldHVybiBvVGFiICYmIG9UYWIuaXNBPEljb25UYWJGaWx0ZXI+KFwic2FwLm0uSWNvblRhYkZpbHRlclwiKSA/IG9UYWIgOiB1bmRlZmluZWQ7XG5cdH1cblxuXHRfZ2V0Vmlld0NvbnRyb2xsZXIoKTogUGFnZUNvbnRyb2xsZXIge1xuXHRcdGNvbnN0IG9WaWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzKTtcblx0XHRyZXR1cm4gb1ZpZXcgJiYgb1ZpZXcuZ2V0Q29udHJvbGxlcigpO1xuXHR9XG5cblx0X3JlZnJlc2hDdXN0b21WaWV3KG9GaWx0ZXJDb25kaXRpb25zOiB1bmtub3duLCBzUmVmcmVzaENhdXNlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHQodGhpcy5fZ2V0Vmlld0NvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcik/Lm9uVmlld05lZWRzUmVmcmVzaD8uKHtcblx0XHRcdGZpbHRlckNvbmRpdGlvbnM6IG9GaWx0ZXJDb25kaXRpb25zLFxuXHRcdFx0Y3VycmVudFRhYklkOiB0aGlzLmNvbnRlbnQuZ2V0U2VsZWN0ZWRLZXkoKSxcblx0XHRcdHJlZnJlc2hDYXVzZTogc1JlZnJlc2hDYXVzZVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgY291bnQgb2YgdGhlIFRhYiBjb250YWluaW5nIHRoZSBtYWNybyBwYXNzZWQgYXMgcGFyYW1ldGVyLlxuXHQgKiBAcGFyYW0gbWFjcm9BUEkgVGhlIGNvbnRlbnQgb2YgdGhlIHRhYiB3ZSB3YW50IHRvIHJlZnJlc2hcblx0ICovXG5cdHJlZnJlc2hUYWJDb3VudChtYWNyb0FQSTogSW5uZXJDb250cm9sVHlwZSk6IHZvaWQge1xuXHRcdGNvbnN0IGljb25UYWJGaWx0ZXIgPSB0aGlzLl9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG1hY3JvQVBJKTtcblx0XHRpZiAoIWljb25UYWJGaWx0ZXIpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKG1hY3JvQVBJPy5nZXRDb3VudHMpIHtcblx0XHRcdGljb25UYWJGaWx0ZXIuc2V0Q291bnQoXCIuLi5cIik7XG5cdFx0XHRtYWNyb0FQSVxuXHRcdFx0XHQuZ2V0Q291bnRzKClcblx0XHRcdFx0LnRoZW4oKGNvdW50OiBzdHJpbmcpOiBJY29uVGFiRmlsdGVyID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gaWNvblRhYkZpbHRlci5zZXRDb3VudChjb3VudCB8fCBcIjBcIik7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IHVua25vd24pOiB2b2lkIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoYEVycm9yIHdoaWxlIHJlcXVlc3RpbmcgQ291bnRzIGZvciBDb250cm9sOiAke2Vycm9yfWApO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRpbnRlcm5hbFJlZnJlc2hUYWJzQ291bnQodGFibGVFdmVudD86IENvcmVFdmVudCk6IHZvaWQge1xuXHRcdC8vIElmIHRoZSByZWZyZXNoIGlzIHRyaWdnZXJlZCBieSBhbiBldmVudCAoaW50ZXJuYWxEYXRhUmVxdWVzdGVkKVxuXHRcdC8vIHdlIGNhbm5vdCB1c2UgdGhlIHNlbGVjdGVkIGtleSBhcyByZWZlcmVuY2Ugc2luY2UgdGFibGUgY2FuIGJlIHJlZnJlc2hlZCBieSBTaWRlRWZmZWN0c1xuXHRcdC8vIHNvIHRoZSB0YWJsZSBjb3VsZCBiZSBpbnRvIGEgZGlmZmVyZW50IHRhYiAtPiB3ZSB1c2UgdGhlIHNvdXJjZSBvZiB0aGUgZXZlbnQgdG8gZmluZCB0aGUgdGFyZ2V0ZWQgdGFiXG5cdFx0Ly8gSWYgbm90IHRyaWdnZXJlZCBieSBhbiBldmVudCAtPiByZWZyZXNoIGF0IGxlYXN0IHRoZSBjb3VudHMgb2YgdGhlIGN1cnJlbnQgTWFjcm9BUElcblx0XHRjb25zdCBldmVudE1hY3JvQVBJID0gdGFibGVFdmVudD8uZ2V0U291cmNlKCkgYXMgTWFjcm9BUEk7XG5cdFx0Y29uc3QgdGFyZ2V0S2V5ID0gZXZlbnRNYWNyb0FQSSA/IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2woZXZlbnRNYWNyb0FQSSk/LmdldEtleSgpIDogdGhpcy5jb250ZW50Py5nZXRTZWxlY3RlZEtleSgpO1xuXHRcdGlmICh0YXJnZXRLZXkpIHtcblx0XHRcdHRoaXMucmVmcmVzaFRhYnNDb3VudChbdGFyZ2V0S2V5LnNwbGl0KFwiOjpcIilbMl1dKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmVmcmVzaGVzIHRoZSBjb3VudCBvZiB0aGUgdmlld3MgaW4gdGhlIE11bHRpTW9kZSBjb250cm9sLlxuXHQgKiBAcGFyYW0gW2tleXNdIFRoZSBsaXN0IG9mIHRoZSBrZXlzIGlkZW50aWZ5aW5nIHRoZSB2aWV3cyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdCBmb3Igd2hpY2ggdGhlIHZpZXdzJyBjb3VudCB3aWxsIGJlIHJlZnJlc2hlZC4gSWYgbm90IHByb3ZpZGVkLCBhbGwgdGhlIHZpZXdzJyBjb3VudCB3aWxsIGJlIHJlZnJlc2hlZFxuXHQgKi9cblx0cmVmcmVzaFRhYnNDb3VudChrZXlzPzogc3RyaW5nW10pOiB2b2lkIHtcblx0XHRpZiAoIWtleXMpIHtcblx0XHRcdHRoaXMuc2V0Q291bnRzT3V0RGF0ZWQodHJ1ZSk7XG5cdFx0fVxuXHRcdHRoaXMuZ2V0QWxsSW5uZXJDb250cm9scyh0cnVlKS5mb3JFYWNoKChvTWFjcm9BUEkpOiB2b2lkID0+IHtcblx0XHRcdGNvbnN0IG9JY29uVGFiRmlsdGVyID0gdGhpcy5fZ2V0VGFiRnJvbUlubmVyQ29udHJvbChvTWFjcm9BUEkpO1xuXHRcdFx0aWYgKHRoaXMuY291bnRzT3V0RGF0ZWQgfHwgKGtleXMgJiYgb0ljb25UYWJGaWx0ZXIgJiYga2V5cy5pbmNsdWRlcyhvSWNvblRhYkZpbHRlci5nZXRLZXkoKS5zcGxpdChcIjo6XCIpWzJdKSkpIHtcblx0XHRcdFx0dGhpcy5yZWZyZXNoVGFiQ291bnQob01hY3JvQVBJKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHR0aGlzLnNldENvdW50c091dERhdGVkKGZhbHNlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWZyZXNoZXMgdGhlIGNvbnRlbnQgb2YgdGhlIHVuZGVybHlpbmcgdmlld3MgdXBvbiB0aGUgbmV4dCBvcGVuaW5nLlxuXHQgKiBOb3RlOiBUaGUgY29udGVudCBvZiB0aGUgc2VsZWN0ZWQgdmlldywgaWYgcGFydCBvZiB0aGUgcHJvdmlkZWQga2V5cywgd2lsbCBiZSByZWZyZXNoZWQgaW1tZWRpYXRlbHkuXG5cdCAqIEBwYXJhbSBba2V5c10gVGhlIGxpc3Qgb2YgdGhlIGtleXMgaWRlbnRpZnlpbmcgdGhlIHZpZXdzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0IGZvciB3aGljaCB0aGUgdmlld3MnIGNvbnRlbnQgd2lsbCBiZSByZWZyZXNoZWQuIElmIG5vdCBwcm92aWRlZCwgYWxsIHRoZSB2aWV3cycgY29udGVudCB3aWxsIGJlIHJlZnJlc2hlZFxuXHQgKi9cblx0c2V0VGFiQ29udGVudFRvQmVSZWZyZXNoZWRPbk5leHRPcGVuaW5nKGtleXM/OiBzdHJpbmdbXSk6IHZvaWQge1xuXHRcdGNvbnN0IHNlbGVjdGVkVGFiS2V5ID0gdGhpcz8uY29udGVudC5nZXRTZWxlY3RlZEtleSgpO1xuXHRcdGNvbnN0IHRhYktleXM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3QgcmVmcmVzaFNlbGVjdGVkVGFiQ29udGVudCA9IGtleXMgPyBrZXlzLmluY2x1ZGVzKHNlbGVjdGVkVGFiS2V5Py5zcGxpdChcIjo6XCIpWzJdKSA6IHRydWU7XG5cdFx0aWYgKGtleXMpIHtcblx0XHRcdGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcblx0XHRcdFx0aWYgKHNlbGVjdGVkVGFiS2V5ICE9PSBgZmU6OnRhYmxlOjoke2tleX06OkxpbmVJdGVtYCAmJiBzZWxlY3RlZFRhYktleSAhPT0gYGZlOjpDdXN0b21UYWI6OiR7a2V5fWApIHtcblx0XHRcdFx0XHR0YWJLZXlzLnB1c2goa2V5KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzPy5nZXRBbGxJbm5lckNvbnRyb2xzKCkuZm9yRWFjaCgobWFjcm9BUEkpID0+IHtcblx0XHRcdFx0Y29uc3QgaWNvblRhYkZpbHRlciA9IHRoaXM/Ll9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG1hY3JvQVBJKTtcblx0XHRcdFx0aWYgKGljb25UYWJGaWx0ZXIgJiYgaWNvblRhYkZpbHRlci5nZXRLZXkoKSAhPT0gc2VsZWN0ZWRUYWJLZXkpIHtcblx0XHRcdFx0XHR0YWJLZXlzLnB1c2goaWNvblRhYkZpbHRlci5nZXRLZXkoKS5zcGxpdChcIjo6XCIpWzJdKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHRoaXM/LmludmFsaWRhdGVDb250ZW50KHRhYktleXMpO1xuXHRcdGlmIChyZWZyZXNoU2VsZWN0ZWRUYWJDb250ZW50KSB7XG5cdFx0XHR0aGlzPy5yZWZyZXNoU2VsZWN0ZWRJbm5lckNvbnRyb2xDb250ZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0X3NldElubmVyQmluZGluZyhiUmVxdWVzdElmTm90SW5pdGlhbGl6ZWQgPSBmYWxzZSk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHRoaXMuZ2V0QWxsSW5uZXJDb250cm9scygpLmZvckVhY2goKG9NYWNyb0FQSSkgPT4ge1xuXHRcdFx0XHRjb25zdCBvSWNvblRhYkZpbHRlciA9IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2wob01hY3JvQVBJKTtcblx0XHRcdFx0Y29uc3QgYklzU2VsZWN0ZWRLZXkgPSBvSWNvblRhYkZpbHRlcj8uZ2V0S2V5KCkgPT09IHRoaXMuY29udGVudC5nZXRTZWxlY3RlZEtleSgpO1xuXHRcdFx0XHRjb25zdCBzQWN0aW9uID0gYklzU2VsZWN0ZWRLZXkgJiYgIXRoaXMuZ2V0UHJvcGVydHkoXCJmcmVlemVDb250ZW50XCIpID8gQmluZGluZ0FjdGlvbi5SZXN1bWUgOiBCaW5kaW5nQWN0aW9uLlN1c3BlbmQ7XG5cdFx0XHRcdG9NYWNyb0FQSVtzQWN0aW9uXT8uKHNBY3Rpb24gPT09IEJpbmRpbmdBY3Rpb24uUmVzdW1lID8gYlJlcXVlc3RJZk5vdEluaXRpYWxpemVkICYmIGJJc1NlbGVjdGVkS2V5IDogdW5kZWZpbmVkKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdF9zZXRUYWJNZXNzYWdlU3RyaXAocHJvcGVydGllczogTWVzc2FnZVN0cmlwUHJvcGVydGllcyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IHNUZXh0ID0gXCJcIjtcblx0XHRjb25zdCBhSWdub3JlZEZpZWxkcyA9IHByb3BlcnRpZXMuaWdub3JlZEZpZWxkcztcblx0XHRjb25zdCBvRmlsdGVyQ29udHJvbCA9IHRoaXMuX2dldEZpbHRlckNvbnRyb2woKSBhcyBDb250cm9sO1xuXHRcdGlmIChvRmlsdGVyQ29udHJvbCAmJiBBcnJheS5pc0FycmF5KGFJZ25vcmVkRmllbGRzKSAmJiBhSWdub3JlZEZpZWxkcy5sZW5ndGggPiAwICYmIHByb3BlcnRpZXMudGl0bGUpIHtcblx0XHRcdGNvbnN0IGFJZ25vcmVkTGFiZWxzID0gTWVzc2FnZVN0cmlwLmdldExhYmVscyhcblx0XHRcdFx0YUlnbm9yZWRGaWVsZHMsXG5cdFx0XHRcdHByb3BlcnRpZXMuZW50aXR5VHlwZVBhdGgsXG5cdFx0XHRcdG9GaWx0ZXJDb250cm9sLFxuXHRcdFx0XHRnZXRSZXNvdXJjZU1vZGVsKG9GaWx0ZXJDb250cm9sKVxuXHRcdFx0KTtcblx0XHRcdHNUZXh0ID0gTWVzc2FnZVN0cmlwLmdldFRleHQoYUlnbm9yZWRMYWJlbHMsIG9GaWx0ZXJDb250cm9sLCBwcm9wZXJ0aWVzLnRpdGxlKTtcblx0XHRcdHJldHVybiBzVGV4dDtcblx0XHR9XG5cdH1cblxuXHRfb25TZWFyY2gob0V2ZW50OiBDb3JlRXZlbnQ8eyBjb25kaXRpb25zOiB1bmtub3duIH0+KTogdm9pZCB7XG5cdFx0dGhpcy5zZXRDb3VudHNPdXREYXRlZCh0cnVlKTtcblx0XHR0aGlzLnNldEZyZWV6ZUNvbnRlbnQoZmFsc2UpO1xuXHRcdGlmICh0aGlzLmdldFNlbGVjdGVkSW5uZXJDb250cm9sKCkpIHtcblx0XHRcdHRoaXMuX3VwZGF0ZU11bHRpVGFiTm90QXBwbGljYWJsZUZpZWxkcygpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBjdXN0b20gdGFiXG5cdFx0XHR0aGlzLl9yZWZyZXNoQ3VzdG9tVmlldyhvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiY29uZGl0aW9uc1wiKSwgXCJzZWFyY2hcIik7XG5cdFx0fVxuXHR9XG5cblx0X29uRmlsdGVyQ2hhbmdlZChvRXZlbnQ6IENvcmVFdmVudDx7IGNvbmRpdGlvbnNCYXNlZDogYm9vbGVhbiB9Pik6IHZvaWQge1xuXHRcdGlmIChvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiY29uZGl0aW9uc0Jhc2VkXCIpKSB7XG5cdFx0XHR0aGlzLnNldEZyZWV6ZUNvbnRlbnQodHJ1ZSk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE11bHRpcGxlTW9kZUNvbnRyb2w7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUF3Q0tBLGFBQWEsMEJBQWJBLGFBQWE7SUFBYkEsYUFBYTtJQUFiQSxhQUFhO0lBQUEsT0FBYkEsYUFBYTtFQUFBLEVBQWJBLGFBQWE7RUFBQSxJQU1aQyxtQkFBbUIsSUFBQUMsSUFBQSxHQUR4QkMsY0FBYyxDQUFDLDBEQUEwRCxDQUFDLEVBQUFDLEtBQUEsR0FFekVDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBVSxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUc3QkYsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxTQUFTO0lBQUVFLFlBQVksRUFBRTtFQUFNLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBR2xESixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFNBQVM7SUFBRUUsWUFBWSxFQUFFO0VBQU0s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
|
|
510
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCaW5kaW5nQWN0aW9uIiwiTXVsdGlwbGVNb2RlQ29udHJvbCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzMiLCJkZWZhdWx0VmFsdWUiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJhZ2dyZWdhdGlvbiIsIm11bHRpcGxlIiwiaXNEZWZhdWx0IiwiX2RlYzciLCJhc3NvY2lhdGlvbiIsIl9kZWM4IiwiX2RlYzkiLCJldmVudCIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbCIsImlkIiwic2V0dGluZ3MiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJvbkJlZm9yZVJlbmRlcmluZyIsImdldFRhYnNNb2RlbCIsIm9GaWx0ZXJDb250cm9sIiwiX2dldEZpbHRlckNvbnRyb2wiLCJzZXRDb3VudHNPdXREYXRlZCIsIm9GaWx0ZXJCYXJBUEkiLCJnZXRQYXJlbnQiLCJnZXRBbGxJbm5lckNvbnRyb2xzIiwiZm9yRWFjaCIsIm9NYWNyb0FQSSIsInNob3dDb3VudHMiLCJhdHRhY2hFdmVudCIsImludGVybmFsUmVmcmVzaFRhYnNDb3VudCIsImJpbmQiLCJzdXNwZW5kQmluZGluZyIsIl9vblNlYXJjaCIsIl9vbkZpbHRlckNoYW5nZWQiLCJvbkFmdGVyUmVuZGVyaW5nIiwiZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2wiLCJyZXN1bWVCaW5kaW5nIiwiZ2V0UHJvcGVydHkiLCJzZXRWaXNpYmxlT3ZlcnJpZGRlbiIsInNldFByb3BlcnR5IiwibWFjcm9BUEkiLCJpY29uVGFiRmlsdGVyIiwiX2dldFRhYkZyb21Jbm5lckNvbnRyb2wiLCJvcmlnaW5TZXRWaXNpYmxlIiwic2V0VmlzaWJsZSIsInZhbHVlIiwiZ2V0VmlzaWJsZSIsInJlZnJlc2hUYWJDb3VudCIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwicmVuZGVyQ29udHJvbCIsImNvbnRlbnQiLCJzVGFic01vZGVsIiwib0NvbnRlbnQiLCJ1bmRlZmluZWQiLCJvTW9kZWwiLCJnZXRNb2RlbCIsIkpTT05Nb2RlbCIsInNldE1vZGVsIiwib1NlbGVjdGVkVGFiIiwiZ2V0SXRlbXMiLCJmaW5kIiwib0l0ZW0iLCJnZXRLZXkiLCJnZXRTZWxlY3RlZEtleSIsImhhbmRsZVRhYkNoYW5nZSIsIm9FdmVudCIsIm9JY29uVGFiQmFyIiwiZ2V0U291cmNlIiwib011bHRpQ29udHJvbCIsIm1QYXJhbWV0ZXJzIiwiZ2V0UGFyYW1ldGVycyIsIl9zZXRJbm5lckJpbmRpbmciLCJzUHJldmlvdXNTZWxlY3RlZEtleSIsInByZXZpb3VzS2V5Iiwic1NlbGVjdGVkS2V5Iiwic2VsZWN0ZWRLZXkiLCJwZXJzb25hbGl6YXRpb25Qcm9taXNlIiwib0ZpbHRlckJhciIsIl9yZWZyZXNoQ3VzdG9tVmlldyIsImdldEZpbHRlckNvbmRpdGlvbnMiLCJoYW5kbGVQZXJzb25hbGl6YXRpb25VcGRhdGUiLCJfZ2V0Vmlld0NvbnRyb2xsZXIiLCJnZXRFeHRlbnNpb25BUEkiLCJ1cGRhdGVBcHBTdGF0ZSIsImZpcmVFdmVudCIsImljb25UYWJCYXIiLCJDb250cm9sUGVyc29uYWxpemF0aW9uV3JpdGVBUEkiLCJfX3VpNV9yZXF1aXJlX2FzeW5jIiwiZGVmYXVsdCIsImFkZCIsImNoYW5nZXMiLCJjaGFuZ2VTcGVjaWZpY0RhdGEiLCJjaGFuZ2VUeXBlIiwicHJldmlvdXNTZWxlY3RlZEtleSIsInNlbGVjdG9yRWxlbWVudCIsImVycm9yIiwiTG9nIiwicmVmcmVzaFNlbGVjdGVkSW5uZXJDb250cm9sQ29udGVudCIsImludmFsaWRhdGVDb250ZW50Iiwia2V5cyIsImtleSIsImJWYWx1ZSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNldEZyZWV6ZUNvbnRlbnQiLCJfdXBkYXRlTXVsdGlUYWJOb3RBcHBsaWNhYmxlRmllbGRzIiwidGFic01vZGVsIiwicmVzdWx0cyIsInZpZXciLCJDb21tb25VdGlscyIsImdldFRhcmdldFZpZXciLCJ2aWV3RGF0YSIsImdldFZpZXdEYXRhIiwidXNlSGlkZGVuRmlsdGVyQmFyIiwib1RhYiIsInNUYWJJZCIsIm1JZ25vcmVkRmllbGRzIiwicmVmcmVzaE5vdEFwcGxpY2FibGVGaWVsZHMiLCJub3RBcHBsaWNhYmxlIiwiZmllbGRzIiwidGl0bGUiLCJfc2V0VGFiTWVzc2FnZVN0cmlwIiwiZW50aXR5VHlwZVBhdGgiLCJkYXRhIiwiaWdub3JlZEZpZWxkcyIsImdldFRleHQiLCJpc0EiLCJjaGVja05vbkZpbHRlcmFibGVFbnRpdHlTZXQiLCJzZXREYXRhIiwicmVzb3VyY2VNb2RlbCIsImdldFJlc291cmNlTW9kZWwiLCJvQ2hhcnQiLCJnZXRDb250ZW50IiwiYkVudGl0eVNldEZpbGVyYWJsZSIsIk1ldGFNb2RlbENvbnZlcnRlciIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsImdldE1ldGFNb2RlbCIsImdldENvbnRleHQiLCJ0YXJnZXRPYmplY3QiLCJhbm5vdGF0aW9ucyIsIkNhcGFiaWxpdGllcyIsIkZpbHRlclJlc3RyaWN0aW9ucyIsIkZpbHRlcmFibGUiLCJpbmNsdWRlcyIsImJPbmx5Rm9yVmlzaWJsZVRhYiIsImlubmVyQ29udHJvbHMiLCJyZWR1Y2UiLCJhSW5uZXJDb250cm9scyIsInNJbm5lckNvbnRyb2wiLCJVSTVFbGVtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJwdXNoIiwiZmlsdGVyIiwib0lubmVyQ29udHJvbCIsImZpbHRlckNvbnRyb2wiLCJvVmlldyIsImdldENvbnRyb2xsZXIiLCJvRmlsdGVyQ29uZGl0aW9ucyIsInNSZWZyZXNoQ2F1c2UiLCJvblZpZXdOZWVkc1JlZnJlc2giLCJmaWx0ZXJDb25kaXRpb25zIiwiY3VycmVudFRhYklkIiwicmVmcmVzaENhdXNlIiwiZ2V0Q291bnRzIiwic2V0Q291bnQiLCJ0aGVuIiwiY291bnQiLCJjYXRjaCIsInRhYmxlRXZlbnQiLCJldmVudE1hY3JvQVBJIiwidGFyZ2V0S2V5IiwicmVmcmVzaFRhYnNDb3VudCIsInNwbGl0Iiwib0ljb25UYWJGaWx0ZXIiLCJjb3VudHNPdXREYXRlZCIsInNldFRhYkNvbnRlbnRUb0JlUmVmcmVzaGVkT25OZXh0T3BlbmluZyIsInNlbGVjdGVkVGFiS2V5IiwidGFiS2V5cyIsInJlZnJlc2hTZWxlY3RlZFRhYkNvbnRlbnQiLCJiUmVxdWVzdElmTm90SW5pdGlhbGl6ZWQiLCJiSXNTZWxlY3RlZEtleSIsInNBY3Rpb24iLCJSZXN1bWUiLCJTdXNwZW5kIiwicHJvcGVydGllcyIsInNUZXh0IiwiYUlnbm9yZWRGaWVsZHMiLCJBcnJheSIsImlzQXJyYXkiLCJhSWdub3JlZExhYmVscyIsIk1lc3NhZ2VTdHJpcCIsImdldExhYmVscyIsImdldFBhcmFtZXRlciIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk11bHRpcGxlTW9kZUNvbnRyb2wudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbnRpdHlTZXQgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvbiwgYXNzb2NpYXRpb24sIGRlZmluZVVJNUNsYXNzLCBldmVudCwgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCAqIGFzIE1ldGFNb2RlbENvbnZlcnRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCBNZXNzYWdlU3RyaXAgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWVzc2FnZVN0cmlwXCI7XG5pbXBvcnQgeyBnZXRSZXNvdXJjZU1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUmVzb3VyY2VNb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgTWFjcm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIExpc3RSZXBvcnRDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL0xpc3RSZXBvcnQvTGlzdFJlcG9ydENvbnRyb2xsZXIuY29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgSWNvblRhYkJhciBmcm9tIFwic2FwL20vSWNvblRhYkJhclwiO1xuaW1wb3J0IHR5cGUgeyBJY29uVGFiQmFyJFNlbGVjdEV2ZW50IH0gZnJvbSBcInNhcC9tL0ljb25UYWJCYXJcIjtcbmltcG9ydCB0eXBlIEljb25UYWJGaWx0ZXIgZnJvbSBcInNhcC9tL0ljb25UYWJGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIENvcmVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcblxuZXhwb3J0IHR5cGUgSW5uZXJDb250cm9sVHlwZSA9IE1hY3JvQVBJICZcblx0UGFydGlhbDx7XG5cdFx0cmVzdW1lQmluZGluZzogRnVuY3Rpb247XG5cdFx0c3VzcGVuZEJpbmRpbmc6IEZ1bmN0aW9uO1xuXHRcdGdldENvdW50czogRnVuY3Rpb247XG5cdFx0cmVmcmVzaE5vdEFwcGxpY2FibGVGaWVsZHM6IEZ1bmN0aW9uO1xuXHRcdGludmFsaWRhdGVDb250ZW50OiBGdW5jdGlvbjtcblx0XHRnZXRDb250ZW50OiBGdW5jdGlvbjtcblx0fT47XG5cbnR5cGUgTWVzc2FnZVN0cmlwUHJvcGVydGllcyA9IHtcblx0ZW50aXR5VHlwZVBhdGg6IHN0cmluZztcblx0aWdub3JlZEZpZWxkczogc3RyaW5nW107XG5cdHRpdGxlOiBzdHJpbmc7XG59O1xuXG5lbnVtIEJpbmRpbmdBY3Rpb24ge1xuXHRTdXNwZW5kID0gXCJzdXNwZW5kQmluZGluZ1wiLFxuXHRSZXN1bWUgPSBcInJlc3VtZUJpbmRpbmdcIlxufVxuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUudGVtcGxhdGVzLkxpc3RSZXBvcnQuY29udHJvbHMuTXVsdGlwbGVNb2RlQ29udHJvbFwiKVxuY2xhc3MgTXVsdGlwbGVNb2RlQ29udHJvbCBleHRlbmRzIENvbnRyb2wge1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRzaG93Q291bnRzITogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRzZXRWaXNpYmxlT3ZlcnJpZGRlbiE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0ZnJlZXplQ29udGVudCE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0Y291bnRzT3V0RGF0ZWQhOiBib29sZWFuO1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLm0uSWNvblRhYkJhclwiLCBtdWx0aXBsZTogZmFsc2UsIGlzRGVmYXVsdDogdHJ1ZSB9KVxuXHRjb250ZW50ITogSWNvblRhYkJhcjtcblxuXHRAYXNzb2NpYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiwgbXVsdGlwbGU6IHRydWUgfSlcblx0aW5uZXJDb250cm9scyE6IHN0cmluZ1tdO1xuXG5cdEBhc3NvY2lhdGlvbih7IHR5cGU6IFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5GaWx0ZXJCYXJcIiwgbXVsdGlwbGU6IGZhbHNlIH0pXG5cdGZpbHRlckNvbnRyb2whOiBzdHJpbmc7XG5cblx0QGV2ZW50KClcblx0c2VsZWN0ITogRnVuY3Rpb247XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0aWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQgfCAoUHJvcGVydGllc09mPE11bHRpcGxlTW9kZUNvbnRyb2w+ICYgJENvbnRyb2xTZXR0aW5ncyksXG5cdFx0c2V0dGluZ3M/OiAkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPE11bHRpcGxlTW9kZUNvbnRyb2w+XG5cdCkge1xuXHRcdHN1cGVyKGlkIGFzIHN0cmluZywgc2V0dGluZ3MpO1xuXHR9XG5cblx0b25CZWZvcmVSZW5kZXJpbmcoKTogdm9pZCB7XG5cdFx0dGhpcy5nZXRUYWJzTW9kZWwoKTsgLy8gR2VuZXJhdGUgdGhlIG1vZGVsIHdoaWNoIGlzIG1hbmRhdG9yeSBmb3Igc29tZSBiaW5kaW5nc1xuXG5cdFx0Y29uc3Qgb0ZpbHRlckNvbnRyb2wgPSB0aGlzLl9nZXRGaWx0ZXJDb250cm9sKCk7XG5cdFx0aWYgKCFvRmlsdGVyQ29udHJvbCkge1xuXHRcdFx0Ly8gSW4gY2FzZSB0aGVyZSdzIG5vIGZpbHRlcmJhciwgd2UgaGF2ZSB0byB1cGRhdGUgdGhlIGNvdW50cyBpbiB0aGUgdGFicyBpbW1lZGlhdGVseVxuXHRcdFx0dGhpcy5zZXRDb3VudHNPdXREYXRlZCh0cnVlKTtcblx0XHR9XG5cdFx0Y29uc3Qgb0ZpbHRlckJhckFQSSA9IG9GaWx0ZXJDb250cm9sPy5nZXRQYXJlbnQoKTtcblx0XHR0aGlzLmdldEFsbElubmVyQ29udHJvbHMoKS5mb3JFYWNoKChvTWFjcm9BUEkpID0+IHtcblx0XHRcdGlmICh0aGlzLnNob3dDb3VudHMpIHtcblx0XHRcdFx0b01hY3JvQVBJLmF0dGFjaEV2ZW50KFwiaW50ZXJuYWxEYXRhUmVxdWVzdGVkXCIsIHRoaXMuaW50ZXJuYWxSZWZyZXNoVGFic0NvdW50LmJpbmQodGhpcykpO1xuXHRcdFx0fVxuXHRcdFx0b01hY3JvQVBJLnN1c3BlbmRCaW5kaW5nPy4oKTtcblx0XHR9KTtcblx0XHRpZiAob0ZpbHRlckJhckFQSSkge1xuXHRcdFx0b0ZpbHRlckJhckFQSS5hdHRhY2hFdmVudChcImludGVybmFsU2VhcmNoXCIsIHRoaXMuX29uU2VhcmNoLmJpbmQodGhpcykpO1xuXHRcdFx0b0ZpbHRlckJhckFQSS5hdHRhY2hFdmVudChcImludGVybmFsRmlsdGVyQ2hhbmdlZFwiLCB0aGlzLl9vbkZpbHRlckNoYW5nZWQuYmluZCh0aGlzKSk7XG5cdFx0fVxuXHR9XG5cblx0b25BZnRlclJlbmRlcmluZygpOiB2b2lkIHtcblx0XHR0aGlzLmdldFNlbGVjdGVkSW5uZXJDb250cm9sKCk/LnJlc3VtZUJpbmRpbmc/LighdGhpcy5nZXRQcm9wZXJ0eShcImZyZWV6ZUNvbnRlbnRcIikpO1xuXHRcdGlmICh0aGlzLnNob3dDb3VudHMgJiYgIXRoaXMuc2V0VmlzaWJsZU92ZXJyaWRkZW4pIHtcblx0XHRcdHRoaXMuc2V0UHJvcGVydHkoXCJzZXRWaXNpYmxlT3ZlcnJpZGRlblwiLCB0cnVlKTtcblx0XHRcdHRoaXMuZ2V0QWxsSW5uZXJDb250cm9scygpLmZvckVhY2goKG1hY3JvQVBJOiBNYWNyb0FQSSk6IHZvaWQgPT4ge1xuXHRcdFx0XHRjb25zdCBpY29uVGFiRmlsdGVyID0gdGhpcy5fZ2V0VGFiRnJvbUlubmVyQ29udHJvbChtYWNyb0FQSSk7XG5cdFx0XHRcdC8vIE5vIGNvdW50IHRvIHNob3dcblx0XHRcdFx0aWYgKCFpY29uVGFiRmlsdGVyKSByZXR1cm47XG5cblx0XHRcdFx0Y29uc3Qgb3JpZ2luU2V0VmlzaWJsZSA9IGljb25UYWJGaWx0ZXIuc2V0VmlzaWJsZTtcblx0XHRcdFx0aWNvblRhYkZpbHRlci5zZXRWaXNpYmxlID0gKHZhbHVlOiBib29sZWFuKTogSWNvblRhYkZpbHRlciA9PiB7XG5cdFx0XHRcdFx0aWYgKGljb25UYWJGaWx0ZXIuZ2V0VmlzaWJsZSgpID09PSBmYWxzZSAmJiB2YWx1ZSkge1xuXHRcdFx0XHRcdFx0dGhpcy5yZWZyZXNoVGFiQ291bnQobWFjcm9BUEkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gb3JpZ2luU2V0VmlzaWJsZS5iaW5kKGljb25UYWJGaWx0ZXIpKHZhbHVlKTtcblx0XHRcdFx0fTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdHN0YXRpYyByZW5kZXIob1JtOiBSZW5kZXJNYW5hZ2VyLCBvQ29udHJvbDogTXVsdGlwbGVNb2RlQ29udHJvbCk6IHZvaWQge1xuXHRcdG9SbS5yZW5kZXJDb250cm9sKG9Db250cm9sLmNvbnRlbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIG1vZGVsIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgSWNvblRhYkZpbHRlcnMuXG5cdCAqIEByZXR1cm5zIFRoZSBtb2RlbFxuXHQgKi9cblx0Z2V0VGFic01vZGVsKCk6IEpTT05Nb2RlbCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgc1RhYnNNb2RlbCA9IFwidGFic0ludGVybmFsXCI7XG5cdFx0Y29uc3Qgb0NvbnRlbnQgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0aWYgKCFvQ29udGVudCkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0bGV0IG9Nb2RlbCA9IG9Db250ZW50LmdldE1vZGVsKHNUYWJzTW9kZWwpIGFzIEpTT05Nb2RlbCB8IHVuZGVmaW5lZDtcblx0XHRpZiAoIW9Nb2RlbCkge1xuXHRcdFx0b01vZGVsID0gbmV3IEpTT05Nb2RlbCh7fSk7XG5cdFx0XHRvQ29udGVudC5zZXRNb2RlbChvTW9kZWwsIHNUYWJzTW9kZWwpO1xuXHRcdH1cblx0XHRyZXR1cm4gb01vZGVsO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGlubmVyIGNvbnRyb2wgb2YgdGhlIGRpc3BsYXllZCB0YWIuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sXG5cdCAqL1xuXHRnZXRTZWxlY3RlZElubmVyQ29udHJvbCgpOiBJbm5lckNvbnRyb2xUeXBlIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBvU2VsZWN0ZWRUYWIgPSB0aGlzLmNvbnRlbnQ/LmdldEl0ZW1zKCkuZmluZCgob0l0ZW0pID0+IChvSXRlbSBhcyBJY29uVGFiRmlsdGVyKS5nZXRLZXkoKSA9PT0gdGhpcy5jb250ZW50LmdldFNlbGVjdGVkS2V5KCkpO1xuXHRcdHJldHVybiBvU2VsZWN0ZWRUYWJcblx0XHRcdD8gdGhpcy5nZXRBbGxJbm5lckNvbnRyb2xzKCkuZmluZCgob01hY3JvQVBJKSA9PiB0aGlzLl9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG9NYWNyb0FQSSkgPT09IG9TZWxlY3RlZFRhYilcblx0XHRcdDogdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1hbmFnZXMgdGhlIGJpbmRpbmcgb2YgYWxsIGlubmVyIGNvbnRyb2xzIHdoZW4gdGhlIHNlbGVjdGVkIEljb25UYWJGaWx0ZXIgaXMgY2hhbmdlZC5cblx0ICogQHBhcmFtIG9FdmVudCBFdmVudCBmaXJlZCBieSB0aGUgSWNvblRhYkJhclxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgaWYgdGhlIHBlcnNvbmFsaXphdGlvbiBpcyB1cGRhdGVkLCBvdGhlcndpc2Ugbm90aGluZ1xuXHQgKi9cblx0c3RhdGljIGhhbmRsZVRhYkNoYW5nZShvRXZlbnQ6IEljb25UYWJCYXIkU2VsZWN0RXZlbnQpOiBQcm9taXNlPHZvaWQ+IHwgdm9pZCB7XG5cdFx0Y29uc3Qgb0ljb25UYWJCYXIgPSBvRXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3Qgb011bHRpQ29udHJvbCA9IG9JY29uVGFiQmFyLmdldFBhcmVudCgpIGFzIE11bHRpcGxlTW9kZUNvbnRyb2w7XG5cblx0XHRjb25zdCBtUGFyYW1ldGVycyA9IG9FdmVudC5nZXRQYXJhbWV0ZXJzKCk7XG5cdFx0b011bHRpQ29udHJvbC5fc2V0SW5uZXJCaW5kaW5nKHRydWUpO1xuXHRcdGNvbnN0IHNQcmV2aW91c1NlbGVjdGVkS2V5ID0gbVBhcmFtZXRlcnM/LnByZXZpb3VzS2V5O1xuXHRcdGNvbnN0IHNTZWxlY3RlZEtleSA9IG1QYXJhbWV0ZXJzPy5zZWxlY3RlZEtleTtcblx0XHRsZXQgcGVyc29uYWxpemF0aW9uUHJvbWlzZTtcblx0XHRpZiAoc1NlbGVjdGVkS2V5ICYmIHNQcmV2aW91c1NlbGVjdGVkS2V5ICE9PSBzU2VsZWN0ZWRLZXkpIHtcblx0XHRcdGNvbnN0IG9GaWx0ZXJCYXIgPSBvTXVsdGlDb250cm9sLl9nZXRGaWx0ZXJDb250cm9sKCk7XG5cdFx0XHRpZiAob0ZpbHRlckJhciAmJiAhb011bHRpQ29udHJvbC5nZXRQcm9wZXJ0eShcImZyZWV6ZUNvbnRlbnRcIikpIHtcblx0XHRcdFx0aWYgKCFvTXVsdGlDb250cm9sLmdldFNlbGVjdGVkSW5uZXJDb250cm9sKCkpIHtcblx0XHRcdFx0XHQvL2N1c3RvbSB0YWJcblx0XHRcdFx0XHRvTXVsdGlDb250cm9sLl9yZWZyZXNoQ3VzdG9tVmlldyhvRmlsdGVyQmFyLmdldEZpbHRlckNvbmRpdGlvbnMoKSwgXCJ0YWJDaGFuZ2VkXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRwZXJzb25hbGl6YXRpb25Qcm9taXNlID0gTXVsdGlwbGVNb2RlQ29udHJvbC5oYW5kbGVQZXJzb25hbGl6YXRpb25VcGRhdGUoc1NlbGVjdGVkS2V5LCBzUHJldmlvdXNTZWxlY3RlZEtleSwgb0ljb25UYWJCYXIpO1xuXHRcdH1cblxuXHRcdG9NdWx0aUNvbnRyb2wuX2dldFZpZXdDb250cm9sbGVyKCk/LmdldEV4dGVuc2lvbkFQSSgpPy51cGRhdGVBcHBTdGF0ZSgpO1xuXG5cdFx0b011bHRpQ29udHJvbC5maXJlRXZlbnQoXCJzZWxlY3RcIiwge1xuXHRcdFx0aWNvblRhYkJhcjogb0ljb25UYWJCYXIsXG5cdFx0XHRzZWxlY3RlZEtleTogc1NlbGVjdGVkS2V5LFxuXHRcdFx0cHJldmlvdXNLZXk6IHNQcmV2aW91c1NlbGVjdGVkS2V5XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHBlcnNvbmFsaXphdGlvblByb21pc2U7XG5cdH1cblxuXHRwcml2YXRlIHN0YXRpYyBhc3luYyBoYW5kbGVQZXJzb25hbGl6YXRpb25VcGRhdGUoXG5cdFx0c1NlbGVjdGVkS2V5OiBzdHJpbmcsXG5cdFx0c1ByZXZpb3VzU2VsZWN0ZWRLZXk6IHN0cmluZyB8IHVuZGVmaW5lZCxcblx0XHRvSWNvblRhYkJhcjogSWNvblRhYkJhclxuXHQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgQ29udHJvbFBlcnNvbmFsaXphdGlvbldyaXRlQVBJID0gKGF3YWl0IGltcG9ydChcInNhcC91aS9mbC93cml0ZS9hcGkvQ29udHJvbFBlcnNvbmFsaXphdGlvbldyaXRlQVBJXCIpKS5kZWZhdWx0O1xuXHRcdFx0Q29udHJvbFBlcnNvbmFsaXphdGlvbldyaXRlQVBJLmFkZCh7XG5cdFx0XHRcdGNoYW5nZXM6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRjaGFuZ2VTcGVjaWZpY0RhdGE6IHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlVHlwZTogXCJzZWxlY3RJY29uVGFiQmFyRmlsdGVyXCIsXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IHtcblx0XHRcdFx0XHRcdFx0XHRzZWxlY3RlZEtleTogc1NlbGVjdGVkS2V5LFxuXHRcdFx0XHRcdFx0XHRcdHByZXZpb3VzU2VsZWN0ZWRLZXk6IHNQcmV2aW91c1NlbGVjdGVkS2V5XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRzZWxlY3RvckVsZW1lbnQ6IG9JY29uVGFiQmFyXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRdXG5cdFx0XHR9KTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0TG9nLmVycm9yKFwiU29tZXRoaW5nIHdlbnQgd3Jvbmcgd2hpbGUgdXBkYXRpbmcgdGhlIHBlcnNvbmFsaXphdGlvbiBzdGF0ZSBvZiB0aGUgTXVsdGlwbGVNb2RlQ29udHJvbFwiLCBlcnJvciBhcyBzdHJpbmcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZWZyZXNoZXMgdGhlIGNvbnRlbnQgb2YgdGhlIHNlbGVjdGVkIGlubmVyIGNvbnRyb2wuXG5cdCAqXG5cdCAqL1xuXHRyZWZyZXNoU2VsZWN0ZWRJbm5lckNvbnRyb2xDb250ZW50KCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmdldFNlbGVjdGVkSW5uZXJDb250cm9sKCkpIHtcblx0XHRcdHRoaXMuZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2woKT8uaW52YWxpZGF0ZUNvbnRlbnQ/LigpO1xuXHRcdFx0dGhpcy5nZXRTZWxlY3RlZElubmVyQ29udHJvbCgpPy5yZXN1bWVCaW5kaW5nPy4odHJ1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGN1c3RvbSB0YWJcblx0XHRcdHRoaXMuX3JlZnJlc2hDdXN0b21WaWV3KHVuZGVmaW5lZCwgXCJmb3JjZWRSZWZyZXNoXCIpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBJbnZhbGlkYXRlcyB0aGUgY29udGVudCBvZiB0aGUgaW5uZXIgY29udHJvbHMuXG5cdCAqIEBwYXJhbSBba2V5c10gVGhlIGxpc3Qgb2YgdGhlIGtleXMgaWRlbnRpZnlpbmcgdGhlIHZpZXdzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0IGZvciB3aGljaCB0aGUgdmlld3MnIGNvbnRlbnQgd2lsbCBiZSBpbnZhbGlkYXRlZC4gSWYgbm90IHByb3ZpZGVkLCBhbGwgdGhlIHZpZXdzJyBjb250ZW50IHdpbGwgYmUgaW52YWxpZGF0ZWRcblx0ICovXG5cdGludmFsaWRhdGVDb250ZW50KGtleXM/OiBzdHJpbmdbXSk6IHZvaWQge1xuXHRcdHRoaXMuc2V0Q291bnRzT3V0RGF0ZWQodHJ1ZSk7XG5cdFx0dGhpcy5nZXRBbGxJbm5lckNvbnRyb2xzKCkuZm9yRWFjaCgobWFjcm9BUEkpID0+IHtcblx0XHRcdGlmIChrZXlzKSB7XG5cdFx0XHRcdGNvbnN0IGljb25UYWJGaWx0ZXIgPSB0aGlzLl9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG1hY3JvQVBJKTtcblx0XHRcdFx0Zm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdGljb25UYWJGaWx0ZXIgJiZcblx0XHRcdFx0XHRcdChpY29uVGFiRmlsdGVyLmdldEtleSgpID09PSBgZmU6OnRhYmxlOjoke2tleX06OkxpbmVJdGVtYCB8fCBpY29uVGFiRmlsdGVyLmdldEtleSgpID09PSBgZmU6OkN1c3RvbVRhYjo6JHtrZXl9YClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdG1hY3JvQVBJLmludmFsaWRhdGVDb250ZW50Py4oKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1hY3JvQVBJLmludmFsaWRhdGVDb250ZW50Py4oKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBjb3VudHMgdG8gXCJvdXQgb2YgZGF0ZVwiIG9yIFwidXAgdG8gZGF0ZVwiXG5cdCAqIElmIHRoZSBjb3VudHMgYXJlIHNldCB0byBcIm91dCBvZiBkYXRlXCIgYW5kIHRoZSBzZWxlY3RlZCBJY29uVGFiRmlsdGVyIGRvZXNuJ3QgY29udGFpbiBhbiBpbm5lciBjb250cm9sLCBhbGwgaW5uZXIgY29udHJvbHMgYXJlIHJlcXVlc3RlZCB0byBnZXQgdGhlIG5ldyBjb3VudHMuXG5cdCAqIEBwYXJhbSBiVmFsdWUgRWl0aGVyIGZyZWV6ZXMgdGhlIGNvbnRyb2wgb3Igbm90XG5cdCAqL1xuXHRzZXRDb3VudHNPdXREYXRlZChiVmFsdWUgPSB0cnVlKTogdm9pZCB7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcImNvdW50c091dERhdGVkXCIsIGJWYWx1ZSk7XG5cdFx0Ly8gaWYgdGhlIGN1cnJlbnQgdGFiIGlzIG5vdCBjb25maWd1cmVkIHdpdGggbm8gaW5uZXIgQ29udHJvbFxuXHRcdC8vIHRoZSB0YWIgY291bnRzIG11c3QgYmUgbWFudWFsbHkgcmVmcmVzaGVkIHNpbmNlIG5vIE1hY3JvIEFQSSB3aWxsIHNlbnQgZXZlbnQgaW50ZXJuYWxEYXRhUmVxdWVzdGVkXG5cdFx0aWYgKGJWYWx1ZSAmJiAhdGhpcy5nZXRTZWxlY3RlZElubmVyQ29udHJvbCgpKSB7XG5cdFx0XHR0aGlzLmludGVybmFsUmVmcmVzaFRhYnNDb3VudCgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBGcmVlemVzIHRoZSBjb250ZW50IDpcblx0ICogLSBjb250ZW50IGlzIGZyb3plbjogdGhlIGJpbmRpbmcgb2YgdGhlIGlubmVyIGNvbnRyb2xzIGFyZSBzdXNwZW5kZWQuXG5cdCAqIC0gY29udGVudCBpcyB1bmZyb3plbjogdGhlIGJpbmRpbmcgb2YgaW5uZXIgY29udHJvbCByZWxhdGVkIHRvIHRoZSBzZWxlY3RlZCBJY29uVGFiRmlsdGVyIGlzIHJlc3VtZWQuXG5cdCAqIEBwYXJhbSBiVmFsdWUgRnJlZXplIG9yIG5vdCB0aGUgY29udHJvbFxuXHQgKi9cblx0c2V0RnJlZXplQ29udGVudChiVmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwiZnJlZXplQ29udGVudFwiLCBiVmFsdWUpO1xuXHRcdHRoaXMuX3NldElubmVyQmluZGluZygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgdGhlIGludGVybmFsIG1vZGVsIHdpdGggdGhlIHByb3BlcnRpZXMgdGhhdCBhcmUgbm90IGFwcGxpY2FibGUgb24gZWFjaCBJY29uVGFiRmlsdGVyIChjb250YWluaW5nIGlubmVyIGNvbnRyb2wpIGFjY29yZGluZyB0byB0aGUgZW50aXR5VHlwZSBvZiB0aGUgZmlsdGVyIGNvbnRyb2wuXG5cdCAqXG5cdCAqL1xuXHRfdXBkYXRlTXVsdGlUYWJOb3RBcHBsaWNhYmxlRmllbGRzKCk6IHZvaWQge1xuXHRcdGNvbnN0IHRhYnNNb2RlbCA9IHRoaXMuZ2V0VGFic01vZGVsKCk7XG5cdFx0Y29uc3Qgb0ZpbHRlckNvbnRyb2wgPSB0aGlzLl9nZXRGaWx0ZXJDb250cm9sKCkgYXMgQ29udHJvbDtcblx0XHRpZiAodGFic01vZGVsICYmIG9GaWx0ZXJDb250cm9sKSB7XG5cdFx0XHRjb25zdCByZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCB7IG5vdEFwcGxpY2FibGU6IHsgZmllbGRzOiBzdHJpbmdbXTsgdGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZCB9IH0+ID0ge307XG5cdFx0XHRjb25zdCB2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzKTtcblx0XHRcdGNvbnN0IHZpZXdEYXRhID0gdmlldy5nZXRWaWV3RGF0YSgpO1xuXHRcdFx0aWYgKCF2aWV3RGF0YS51c2VIaWRkZW5GaWx0ZXJCYXIpIHtcblx0XHRcdFx0dGhpcy5nZXRBbGxJbm5lckNvbnRyb2xzKCkuZm9yRWFjaCgob01hY3JvQVBJKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgb1RhYiA9IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2wob01hY3JvQVBJKTtcblx0XHRcdFx0XHRpZiAob1RhYikge1xuXHRcdFx0XHRcdFx0Y29uc3Qgc1RhYklkID0gb1RhYi5nZXRLZXkoKTtcblx0XHRcdFx0XHRcdGNvbnN0IG1JZ25vcmVkRmllbGRzID0gb01hY3JvQVBJLnJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzPy4ob0ZpbHRlckNvbnRyb2wpIHx8IFtdO1xuXHRcdFx0XHRcdFx0cmVzdWx0c1tzVGFiSWRdID0ge1xuXHRcdFx0XHRcdFx0XHRub3RBcHBsaWNhYmxlOiB7XG5cdFx0XHRcdFx0XHRcdFx0ZmllbGRzOiBtSWdub3JlZEZpZWxkcyxcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogdGhpcy5fc2V0VGFiTWVzc2FnZVN0cmlwKHtcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVR5cGVQYXRoOiBvRmlsdGVyQ29udHJvbC5kYXRhKFwiZW50aXR5VHlwZVwiKSxcblx0XHRcdFx0XHRcdFx0XHRcdGlnbm9yZWRGaWVsZHM6IG1JZ25vcmVkRmllbGRzLFxuXHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IG9UYWIuZ2V0VGV4dCgpXG5cdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdGlmIChvTWFjcm9BUEkgJiYgb01hY3JvQVBJLmlzQShcInNhcC5mZS5tYWNyb3MuQ2hhcnRcIikpIHtcblx0XHRcdFx0XHRcdFx0cmVzdWx0c1tzVGFiSWRdID0gdGhpcy5jaGVja05vbkZpbHRlcmFibGVFbnRpdHlTZXQob01hY3JvQVBJLCBzVGFiSWQsIHJlc3VsdHMpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHRcdHRhYnNNb2RlbC5zZXREYXRhKHJlc3VsdHMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBNb2RpZmllcyB0aGUgbWVzc2FnZXN0cmlwIG1lc3NhZ2UgYmFzZWQgb24gZW50aXR5IHNldCBpcyBmaWxlcmFibGUgb3Igbm90LlxuXHQgKiBAcGFyYW0gb01hY3JvQVBJIE1hY3JvIGNoYXJ0IGFwaVxuXHQgKiBAcGFyYW0gc1RhYklkIFRhYiBrZXkgSURcblx0ICogQHBhcmFtIHJlc3VsdHMgU2hvdWxkIGNvbnRhaW4gZmllbGRzIGFuZCB0aXRsZVxuXHQgKiBAcmV0dXJucyBBbiBvYmplY3Qgb2YgbW9kaWZpZWQgZmllbGRzIGFuZCB0aXRsZVxuXHQgKi9cblx0Y2hlY2tOb25GaWx0ZXJhYmxlRW50aXR5U2V0KFxuXHRcdG9NYWNyb0FQSTogSW5uZXJDb250cm9sVHlwZSxcblx0XHRzVGFiSWQ6IHN0cmluZyxcblx0XHRyZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCB7IG5vdEFwcGxpY2FibGU6IHsgZmllbGRzOiBzdHJpbmdbXTsgdGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZCB9IH0+XG5cdCk6IHsgbm90QXBwbGljYWJsZTogeyBmaWVsZHM6IHN0cmluZ1tdOyB0aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkIH0gfSB7XG5cdFx0Y29uc3QgcmVzb3VyY2VNb2RlbCA9IGdldFJlc291cmNlTW9kZWwob01hY3JvQVBJKTtcblx0XHRjb25zdCBvQ2hhcnQgPSBvTWFjcm9BUEk/LmdldENvbnRlbnQgPyBvTWFjcm9BUEkuZ2V0Q29udGVudCgpIDogdW5kZWZpbmVkO1xuXHRcdGNvbnN0IGJFbnRpdHlTZXRGaWxlcmFibGUgPVxuXHRcdFx0b0NoYXJ0ICYmXG5cdFx0XHRNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPEVudGl0eVNldD4oXG5cdFx0XHRcdChvQ2hhcnQuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsKS5nZXRNZXRhTW9kZWwoKS5nZXRDb250ZXh0KGAke29DaGFydC5kYXRhKFwidGFyZ2V0Q29sbGVjdGlvblBhdGhcIil9YClcblx0XHRcdCk/LnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/LkNhcGFiaWxpdGllcz8uRmlsdGVyUmVzdHJpY3Rpb25zPy5GaWx0ZXJhYmxlO1xuXHRcdGlmIChiRW50aXR5U2V0RmlsZXJhYmxlICE9PSB1bmRlZmluZWQgJiYgIWJFbnRpdHlTZXRGaWxlcmFibGUpIHtcblx0XHRcdGlmIChyZXN1bHRzW3NUYWJJZF0ubm90QXBwbGljYWJsZS5maWVsZHMuaW5jbHVkZXMoXCIkc2VhcmNoXCIpKSB7XG5cdFx0XHRcdHJlc3VsdHNbc1RhYklkXS5ub3RBcHBsaWNhYmxlLnRpdGxlICs9IFwiIFwiICsgcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19MUl9NVUxUSVZJWl9DSEFSVF9NVUxUSV9OT05fRklMVEVSQUJMRVwiKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlc3VsdHNbc1RhYklkXS5ub3RBcHBsaWNhYmxlLmZpZWxkcyA9IFtcIm5vbkZpbHRlcmFibGVcIl07XG5cdFx0XHRcdHJlc3VsdHNbc1RhYklkXS5ub3RBcHBsaWNhYmxlLnRpdGxlID0gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19MUl9NVUxUSVZJWl9DSEFSVF9NVUxUSV9OT05fRklMVEVSQUJMRVwiKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdHNbc1RhYklkXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBpbm5lciBjb250cm9scy5cblx0ICogQHBhcmFtIGJPbmx5Rm9yVmlzaWJsZVRhYiBTaG91bGQgZGlzcGxheSBvbmx5IHRoZSB2aXNpYmxlIGNvbnRyb2xzXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGNvbnRyb2xzXG5cdCAqL1xuXHRnZXRBbGxJbm5lckNvbnRyb2xzKGJPbmx5Rm9yVmlzaWJsZVRhYiA9IGZhbHNlKTogSW5uZXJDb250cm9sVHlwZVtdIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0dGhpcy5pbm5lckNvbnRyb2xzLnJlZHVjZSgoYUlubmVyQ29udHJvbHM6IElubmVyQ29udHJvbFR5cGVbXSwgc0lubmVyQ29udHJvbDogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9Db250cm9sID0gVUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZChzSW5uZXJDb250cm9sKSBhcyBJbm5lckNvbnRyb2xUeXBlO1xuXHRcdFx0XHRpZiAob0NvbnRyb2wpIHtcblx0XHRcdFx0XHRhSW5uZXJDb250cm9scy5wdXNoKG9Db250cm9sKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYUlubmVyQ29udHJvbHMuZmlsdGVyKFxuXHRcdFx0XHRcdChvSW5uZXJDb250cm9sKSA9PiAhYk9ubHlGb3JWaXNpYmxlVGFiIHx8IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2wob0lubmVyQ29udHJvbCk/LmdldFZpc2libGUoKVxuXHRcdFx0XHQpO1xuXHRcdFx0fSwgW10pIHx8IFtdXG5cdFx0KTtcblx0fVxuXG5cdF9nZXRGaWx0ZXJDb250cm9sKCk6IEZpbHRlckJhciB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIFVJNUVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5maWx0ZXJDb250cm9sKSBhcyBGaWx0ZXJCYXIgfCB1bmRlZmluZWQ7XG5cdH1cblxuXHRfZ2V0VGFiRnJvbUlubmVyQ29udHJvbChvQ29udHJvbDogQ29udHJvbCk6IEljb25UYWJGaWx0ZXIgfCB1bmRlZmluZWQge1xuXHRcdGxldCBvVGFiOiBVSTVFbGVtZW50IHwgdW5kZWZpbmVkID0gb0NvbnRyb2w7XG5cdFx0aWYgKG9UYWIgJiYgIW9UYWIuaXNBPEljb25UYWJGaWx0ZXI+KFwic2FwLm0uSWNvblRhYkZpbHRlclwiKSAmJiAob1RhYiBhcyB7IGdldFBhcmVudD86IEZ1bmN0aW9uIH0pLmdldFBhcmVudCkge1xuXHRcdFx0b1RhYiA9IG9Db250cm9sLmdldFBhcmVudCgpIGFzIFVJNUVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdHJldHVybiBvVGFiICYmIG9UYWIuaXNBPEljb25UYWJGaWx0ZXI+KFwic2FwLm0uSWNvblRhYkZpbHRlclwiKSA/IG9UYWIgOiB1bmRlZmluZWQ7XG5cdH1cblxuXHRfZ2V0Vmlld0NvbnRyb2xsZXIoKTogUGFnZUNvbnRyb2xsZXIge1xuXHRcdGNvbnN0IG9WaWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzKTtcblx0XHRyZXR1cm4gb1ZpZXcgJiYgb1ZpZXcuZ2V0Q29udHJvbGxlcigpO1xuXHR9XG5cblx0X3JlZnJlc2hDdXN0b21WaWV3KG9GaWx0ZXJDb25kaXRpb25zOiB1bmtub3duLCBzUmVmcmVzaENhdXNlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHQodGhpcy5fZ2V0Vmlld0NvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcik/Lm9uVmlld05lZWRzUmVmcmVzaD8uKHtcblx0XHRcdGZpbHRlckNvbmRpdGlvbnM6IG9GaWx0ZXJDb25kaXRpb25zLFxuXHRcdFx0Y3VycmVudFRhYklkOiB0aGlzLmNvbnRlbnQuZ2V0U2VsZWN0ZWRLZXkoKSxcblx0XHRcdHJlZnJlc2hDYXVzZTogc1JlZnJlc2hDYXVzZVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgY291bnQgb2YgdGhlIFRhYiBjb250YWluaW5nIHRoZSBtYWNybyBwYXNzZWQgYXMgcGFyYW1ldGVyLlxuXHQgKiBAcGFyYW0gbWFjcm9BUEkgVGhlIGNvbnRlbnQgb2YgdGhlIHRhYiB3ZSB3YW50IHRvIHJlZnJlc2hcblx0ICovXG5cdHJlZnJlc2hUYWJDb3VudChtYWNyb0FQSTogSW5uZXJDb250cm9sVHlwZSk6IHZvaWQge1xuXHRcdGNvbnN0IGljb25UYWJGaWx0ZXIgPSB0aGlzLl9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG1hY3JvQVBJKTtcblx0XHRpZiAoIWljb25UYWJGaWx0ZXIpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKG1hY3JvQVBJPy5nZXRDb3VudHMpIHtcblx0XHRcdGljb25UYWJGaWx0ZXIuc2V0Q291bnQoXCIuLi5cIik7XG5cdFx0XHRtYWNyb0FQSVxuXHRcdFx0XHQuZ2V0Q291bnRzKClcblx0XHRcdFx0LnRoZW4oKGNvdW50OiBzdHJpbmcpOiBJY29uVGFiRmlsdGVyID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gaWNvblRhYkZpbHRlci5zZXRDb3VudChjb3VudCB8fCBcIjBcIik7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IHVua25vd24pOiB2b2lkIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoYEVycm9yIHdoaWxlIHJlcXVlc3RpbmcgQ291bnRzIGZvciBDb250cm9sOiAke2Vycm9yfWApO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRpbnRlcm5hbFJlZnJlc2hUYWJzQ291bnQodGFibGVFdmVudD86IENvcmVFdmVudCk6IHZvaWQge1xuXHRcdC8vIElmIHRoZSByZWZyZXNoIGlzIHRyaWdnZXJlZCBieSBhbiBldmVudCAoaW50ZXJuYWxEYXRhUmVxdWVzdGVkKVxuXHRcdC8vIHdlIGNhbm5vdCB1c2UgdGhlIHNlbGVjdGVkIGtleSBhcyByZWZlcmVuY2Ugc2luY2UgdGFibGUgY2FuIGJlIHJlZnJlc2hlZCBieSBTaWRlRWZmZWN0c1xuXHRcdC8vIHNvIHRoZSB0YWJsZSBjb3VsZCBiZSBpbnRvIGEgZGlmZmVyZW50IHRhYiAtPiB3ZSB1c2UgdGhlIHNvdXJjZSBvZiB0aGUgZXZlbnQgdG8gZmluZCB0aGUgdGFyZ2V0ZWQgdGFiXG5cdFx0Ly8gSWYgbm90IHRyaWdnZXJlZCBieSBhbiBldmVudCAtPiByZWZyZXNoIGF0IGxlYXN0IHRoZSBjb3VudHMgb2YgdGhlIGN1cnJlbnQgTWFjcm9BUElcblx0XHRjb25zdCBldmVudE1hY3JvQVBJID0gdGFibGVFdmVudD8uZ2V0U291cmNlKCkgYXMgTWFjcm9BUEk7XG5cdFx0Y29uc3QgdGFyZ2V0S2V5ID0gZXZlbnRNYWNyb0FQSSA/IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2woZXZlbnRNYWNyb0FQSSk/LmdldEtleSgpIDogdGhpcy5jb250ZW50Py5nZXRTZWxlY3RlZEtleSgpO1xuXHRcdGlmICh0YXJnZXRLZXkpIHtcblx0XHRcdHRoaXMucmVmcmVzaFRhYnNDb3VudChbdGFyZ2V0S2V5LnNwbGl0KFwiOjpcIilbMl1dKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmVmcmVzaGVzIHRoZSBjb3VudCBvZiB0aGUgdmlld3MgaW4gdGhlIE11bHRpTW9kZSBjb250cm9sLlxuXHQgKiBAcGFyYW0gW2tleXNdIFRoZSBsaXN0IG9mIHRoZSBrZXlzIGlkZW50aWZ5aW5nIHRoZSB2aWV3cyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdCBmb3Igd2hpY2ggdGhlIHZpZXdzJyBjb3VudCB3aWxsIGJlIHJlZnJlc2hlZC4gSWYgbm90IHByb3ZpZGVkLCBhbGwgdGhlIHZpZXdzJyBjb3VudCB3aWxsIGJlIHJlZnJlc2hlZFxuXHQgKi9cblx0cmVmcmVzaFRhYnNDb3VudChrZXlzPzogc3RyaW5nW10pOiB2b2lkIHtcblx0XHRpZiAoIWtleXMpIHtcblx0XHRcdHRoaXMuc2V0Q291bnRzT3V0RGF0ZWQodHJ1ZSk7XG5cdFx0fVxuXHRcdHRoaXMuZ2V0QWxsSW5uZXJDb250cm9scyh0cnVlKS5mb3JFYWNoKChvTWFjcm9BUEkpOiB2b2lkID0+IHtcblx0XHRcdGNvbnN0IG9JY29uVGFiRmlsdGVyID0gdGhpcy5fZ2V0VGFiRnJvbUlubmVyQ29udHJvbChvTWFjcm9BUEkpO1xuXHRcdFx0aWYgKHRoaXMuY291bnRzT3V0RGF0ZWQgfHwgKGtleXMgJiYgb0ljb25UYWJGaWx0ZXIgJiYga2V5cy5pbmNsdWRlcyhvSWNvblRhYkZpbHRlci5nZXRLZXkoKS5zcGxpdChcIjo6XCIpWzJdKSkpIHtcblx0XHRcdFx0dGhpcy5yZWZyZXNoVGFiQ291bnQob01hY3JvQVBJKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHR0aGlzLnNldENvdW50c091dERhdGVkKGZhbHNlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWZyZXNoZXMgdGhlIGNvbnRlbnQgb2YgdGhlIHVuZGVybHlpbmcgdmlld3MgdXBvbiB0aGUgbmV4dCBvcGVuaW5nLlxuXHQgKiBOb3RlOiBUaGUgY29udGVudCBvZiB0aGUgc2VsZWN0ZWQgdmlldywgaWYgcGFydCBvZiB0aGUgcHJvdmlkZWQga2V5cywgd2lsbCBiZSByZWZyZXNoZWQgaW1tZWRpYXRlbHkuXG5cdCAqIEBwYXJhbSBba2V5c10gVGhlIGxpc3Qgb2YgdGhlIGtleXMgaWRlbnRpZnlpbmcgdGhlIHZpZXdzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0IGZvciB3aGljaCB0aGUgdmlld3MnIGNvbnRlbnQgd2lsbCBiZSByZWZyZXNoZWQuIElmIG5vdCBwcm92aWRlZCwgYWxsIHRoZSB2aWV3cycgY29udGVudCB3aWxsIGJlIHJlZnJlc2hlZFxuXHQgKi9cblx0c2V0VGFiQ29udGVudFRvQmVSZWZyZXNoZWRPbk5leHRPcGVuaW5nKGtleXM/OiBzdHJpbmdbXSk6IHZvaWQge1xuXHRcdGNvbnN0IHNlbGVjdGVkVGFiS2V5ID0gdGhpcz8uY29udGVudC5nZXRTZWxlY3RlZEtleSgpO1xuXHRcdGNvbnN0IHRhYktleXM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3QgcmVmcmVzaFNlbGVjdGVkVGFiQ29udGVudCA9IGtleXMgPyBrZXlzLmluY2x1ZGVzKHNlbGVjdGVkVGFiS2V5Py5zcGxpdChcIjo6XCIpWzJdKSA6IHRydWU7XG5cdFx0aWYgKGtleXMpIHtcblx0XHRcdGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcblx0XHRcdFx0aWYgKHNlbGVjdGVkVGFiS2V5ICE9PSBgZmU6OnRhYmxlOjoke2tleX06OkxpbmVJdGVtYCAmJiBzZWxlY3RlZFRhYktleSAhPT0gYGZlOjpDdXN0b21UYWI6OiR7a2V5fWApIHtcblx0XHRcdFx0XHR0YWJLZXlzLnB1c2goa2V5KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzPy5nZXRBbGxJbm5lckNvbnRyb2xzKCkuZm9yRWFjaCgobWFjcm9BUEkpID0+IHtcblx0XHRcdFx0Y29uc3QgaWNvblRhYkZpbHRlciA9IHRoaXM/Ll9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG1hY3JvQVBJKTtcblx0XHRcdFx0aWYgKGljb25UYWJGaWx0ZXIgJiYgaWNvblRhYkZpbHRlci5nZXRLZXkoKSAhPT0gc2VsZWN0ZWRUYWJLZXkpIHtcblx0XHRcdFx0XHR0YWJLZXlzLnB1c2goaWNvblRhYkZpbHRlci5nZXRLZXkoKS5zcGxpdChcIjo6XCIpWzJdKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHRoaXM/LmludmFsaWRhdGVDb250ZW50KHRhYktleXMpO1xuXHRcdGlmIChyZWZyZXNoU2VsZWN0ZWRUYWJDb250ZW50KSB7XG5cdFx0XHR0aGlzPy5yZWZyZXNoU2VsZWN0ZWRJbm5lckNvbnRyb2xDb250ZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0X3NldElubmVyQmluZGluZyhiUmVxdWVzdElmTm90SW5pdGlhbGl6ZWQgPSBmYWxzZSk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHRoaXMuZ2V0QWxsSW5uZXJDb250cm9scygpLmZvckVhY2goKG9NYWNyb0FQSSkgPT4ge1xuXHRcdFx0XHRjb25zdCBvSWNvblRhYkZpbHRlciA9IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2wob01hY3JvQVBJKTtcblx0XHRcdFx0Y29uc3QgYklzU2VsZWN0ZWRLZXkgPSBvSWNvblRhYkZpbHRlcj8uZ2V0S2V5KCkgPT09IHRoaXMuY29udGVudC5nZXRTZWxlY3RlZEtleSgpO1xuXHRcdFx0XHRjb25zdCBzQWN0aW9uID0gYklzU2VsZWN0ZWRLZXkgJiYgIXRoaXMuZ2V0UHJvcGVydHkoXCJmcmVlemVDb250ZW50XCIpID8gQmluZGluZ0FjdGlvbi5SZXN1bWUgOiBCaW5kaW5nQWN0aW9uLlN1c3BlbmQ7XG5cdFx0XHRcdG9NYWNyb0FQSVtzQWN0aW9uXT8uKHNBY3Rpb24gPT09IEJpbmRpbmdBY3Rpb24uUmVzdW1lID8gYlJlcXVlc3RJZk5vdEluaXRpYWxpemVkICYmIGJJc1NlbGVjdGVkS2V5IDogdW5kZWZpbmVkKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdF9zZXRUYWJNZXNzYWdlU3RyaXAocHJvcGVydGllczogTWVzc2FnZVN0cmlwUHJvcGVydGllcyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IHNUZXh0ID0gXCJcIjtcblx0XHRjb25zdCBhSWdub3JlZEZpZWxkcyA9IHByb3BlcnRpZXMuaWdub3JlZEZpZWxkcztcblx0XHRjb25zdCBvRmlsdGVyQ29udHJvbCA9IHRoaXMuX2dldEZpbHRlckNvbnRyb2woKSBhcyBDb250cm9sO1xuXHRcdGlmIChvRmlsdGVyQ29udHJvbCAmJiBBcnJheS5pc0FycmF5KGFJZ25vcmVkRmllbGRzKSAmJiBhSWdub3JlZEZpZWxkcy5sZW5ndGggPiAwICYmIHByb3BlcnRpZXMudGl0bGUpIHtcblx0XHRcdGNvbnN0IGFJZ25vcmVkTGFiZWxzID0gTWVzc2FnZVN0cmlwLmdldExhYmVscyhcblx0XHRcdFx0YUlnbm9yZWRGaWVsZHMsXG5cdFx0XHRcdHByb3BlcnRpZXMuZW50aXR5VHlwZVBhdGgsXG5cdFx0XHRcdG9GaWx0ZXJDb250cm9sLFxuXHRcdFx0XHRnZXRSZXNvdXJjZU1vZGVsKG9GaWx0ZXJDb250cm9sKVxuXHRcdFx0KTtcblx0XHRcdHNUZXh0ID0gTWVzc2FnZVN0cmlwLmdldFRleHQoYUlnbm9yZWRMYWJlbHMsIG9GaWx0ZXJDb250cm9sLCBwcm9wZXJ0aWVzLnRpdGxlKTtcblx0XHRcdHJldHVybiBzVGV4dDtcblx0XHR9XG5cdH1cblxuXHRfb25TZWFyY2gob0V2ZW50OiBDb3JlRXZlbnQ8eyBjb25kaXRpb25zOiB1bmtub3duIH0+KTogdm9pZCB7XG5cdFx0dGhpcy5zZXRDb3VudHNPdXREYXRlZCh0cnVlKTtcblx0XHR0aGlzLnNldEZyZWV6ZUNvbnRlbnQoZmFsc2UpO1xuXHRcdGlmICh0aGlzLmdldFNlbGVjdGVkSW5uZXJDb250cm9sKCkpIHtcblx0XHRcdHRoaXMuX3VwZGF0ZU11bHRpVGFiTm90QXBwbGljYWJsZUZpZWxkcygpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBjdXN0b20gdGFiXG5cdFx0XHR0aGlzLl9yZWZyZXNoQ3VzdG9tVmlldyhvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiY29uZGl0aW9uc1wiKSwgXCJzZWFyY2hcIik7XG5cdFx0fVxuXHR9XG5cblx0X29uRmlsdGVyQ2hhbmdlZChvRXZlbnQ6IENvcmVFdmVudDx7IGNvbmRpdGlvbnNCYXNlZDogYm9vbGVhbiB9Pik6IHZvaWQge1xuXHRcdGlmIChvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiY29uZGl0aW9uc0Jhc2VkXCIpKSB7XG5cdFx0XHR0aGlzLnNldEZyZWV6ZUNvbnRlbnQodHJ1ZSk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE11bHRpcGxlTW9kZUNvbnRyb2w7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQXVDS0EsYUFBYSwwQkFBYkEsYUFBYTtJQUFiQSxhQUFhO0lBQWJBLGFBQWE7SUFBQSxPQUFiQSxhQUFhO0VBQUEsRUFBYkEsYUFBYTtFQUFBLElBTVpDLG1CQUFtQixJQUFBQyxJQUFBLEdBRHhCQyxjQUFjLENBQUMsMERBQTBELENBQUMsRUFBQUMsS0FBQSxHQUV6RUMsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFVLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBRzdCRixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFNBQVM7SUFBRUUsWUFBWSxFQUFFO0VBQU0sQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FHbERKLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUUsU0FBUztJQUFFRSxZQUFZLEVBQUU7RUFBTSxDQUFDLENBQUMsRUFBQUUsS0FBQSxHQUdsREwsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxTQUFTO0lBQUVFLFlBQVksRUFBRTtFQUFNLENBQUMsQ0FBQyxFQUFBRyxLQUFBLEdBR2xEQyxXQUFXLENBQUM7SUFBRU4s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
|
|
@@ -18,7 +18,6 @@ import type { $ControlSettings } from "sap/ui/core/Control";
|
|
|
18
18
|
import Control from "sap/ui/core/Control";
|
|
19
19
|
import UI5Element from "sap/ui/core/Element";
|
|
20
20
|
import type RenderManager from "sap/ui/core/RenderManager";
|
|
21
|
-
import ControlPersonalizationWriteAPI from "sap/ui/fl/write/api/ControlPersonalizationWriteAPI";
|
|
22
21
|
import JSONModel from "sap/ui/model/json/JSONModel";
|
|
23
22
|
import type ODataModel from "sap/ui/model/odata/v4/ODataModel";
|
|
24
23
|
|
|
@@ -153,8 +152,9 @@ class MultipleModeControl extends Control {
|
|
|
153
152
|
/**
|
|
154
153
|
* Manages the binding of all inner controls when the selected IconTabFilter is changed.
|
|
155
154
|
* @param oEvent Event fired by the IconTabBar
|
|
155
|
+
* @returns A promise if the personalization is updated, otherwise nothing
|
|
156
156
|
*/
|
|
157
|
-
static handleTabChange(oEvent: IconTabBar$SelectEvent): void {
|
|
157
|
+
static handleTabChange(oEvent: IconTabBar$SelectEvent): Promise<void> | void {
|
|
158
158
|
const oIconTabBar = oEvent.getSource();
|
|
159
159
|
const oMultiControl = oIconTabBar.getParent() as MultipleModeControl;
|
|
160
160
|
|
|
@@ -162,7 +162,7 @@ class MultipleModeControl extends Control {
|
|
|
162
162
|
oMultiControl._setInnerBinding(true);
|
|
163
163
|
const sPreviousSelectedKey = mParameters?.previousKey;
|
|
164
164
|
const sSelectedKey = mParameters?.selectedKey;
|
|
165
|
-
|
|
165
|
+
let personalizationPromise;
|
|
166
166
|
if (sSelectedKey && sPreviousSelectedKey !== sSelectedKey) {
|
|
167
167
|
const oFilterBar = oMultiControl._getFilterControl();
|
|
168
168
|
if (oFilterBar && !oMultiControl.getProperty("freezeContent")) {
|
|
@@ -171,6 +171,26 @@ class MultipleModeControl extends Control {
|
|
|
171
171
|
oMultiControl._refreshCustomView(oFilterBar.getFilterConditions(), "tabChanged");
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
|
+
personalizationPromise = MultipleModeControl.handlePersonalizationUpdate(sSelectedKey, sPreviousSelectedKey, oIconTabBar);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
oMultiControl._getViewController()?.getExtensionAPI()?.updateAppState();
|
|
178
|
+
|
|
179
|
+
oMultiControl.fireEvent("select", {
|
|
180
|
+
iconTabBar: oIconTabBar,
|
|
181
|
+
selectedKey: sSelectedKey,
|
|
182
|
+
previousKey: sPreviousSelectedKey
|
|
183
|
+
});
|
|
184
|
+
return personalizationPromise;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
private static async handlePersonalizationUpdate(
|
|
188
|
+
sSelectedKey: string,
|
|
189
|
+
sPreviousSelectedKey: string | undefined,
|
|
190
|
+
oIconTabBar: IconTabBar
|
|
191
|
+
): Promise<void> {
|
|
192
|
+
try {
|
|
193
|
+
const ControlPersonalizationWriteAPI = (await import("sap/ui/fl/write/api/ControlPersonalizationWriteAPI")).default;
|
|
174
194
|
ControlPersonalizationWriteAPI.add({
|
|
175
195
|
changes: [
|
|
176
196
|
{
|
|
@@ -185,15 +205,9 @@ class MultipleModeControl extends Control {
|
|
|
185
205
|
}
|
|
186
206
|
]
|
|
187
207
|
});
|
|
208
|
+
} catch (error) {
|
|
209
|
+
Log.error("Something went wrong while updating the personalization state of the MultipleModeControl", error as string);
|
|
188
210
|
}
|
|
189
|
-
|
|
190
|
-
oMultiControl._getViewController()?.getExtensionAPI()?.updateAppState();
|
|
191
|
-
|
|
192
|
-
oMultiControl.fireEvent("select", {
|
|
193
|
-
iconTabBar: oIconTabBar,
|
|
194
|
-
selectedKey: sSelectedKey,
|
|
195
|
-
previousKey: sPreviousSelectedKey
|
|
196
|
-
});
|
|
197
211
|
}
|
|
198
212
|
|
|
199
213
|
/**
|
|
@@ -16,6 +16,7 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/designtime/AnnotationBase
|
|
|
16
16
|
var prepareConfigModel = Designtime_helper.prepareConfigModel;
|
|
17
17
|
var openAdaptionDialog = Designtime_helper.openAdaptionDialog;
|
|
18
18
|
var noChanges = Designtime_helper.noChanges;
|
|
19
|
+
var isManifestChangesEnabled = Designtime_helper.isManifestChangesEnabled;
|
|
19
20
|
var isConfigModelPrepared = Designtime_helper.isConfigModelPrepared;
|
|
20
21
|
var getSettingsIfKeyUser = Designtime_helper.getSettingsIfKeyUser;
|
|
21
22
|
var getPropertyNamesAndDescriptions = Designtime_helper.getPropertyNamesAndDescriptions;
|
|
@@ -75,6 +76,7 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/designtime/AnnotationBase
|
|
|
75
76
|
fe: {
|
|
76
77
|
name: getText("RTA_CONTEXT_ACTIONMENU_CONFIG"),
|
|
77
78
|
icon: "sap-icon://developer-settings",
|
|
79
|
+
isEnabled: isManifestChangesEnabled,
|
|
78
80
|
handler: async function (control) {
|
|
79
81
|
const designtimeSettings = getDesigntimeSettings();
|
|
80
82
|
const globalSettings = getGlobalSettings();
|
|
@@ -175,4 +177,4 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/designtime/AnnotationBase
|
|
|
175
177
|
};
|
|
176
178
|
return designTime;
|
|
177
179
|
}, false);
|
|
178
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRBZGFwdGF0aW9uUHJvcGVydGllcyIsImRlc2lnbnRpbWVTZXR0aW5ncyIsImNvbnRyb2wiLCJwcm9wZXJ0eVZhbHVlcyIsImZvckVhY2giLCJzZXR0aW5nIiwiaWQiLCJnZXRBZGFwdGF0aW9uUHJvcGVydHlWYWx1ZSIsIl9leHBvcnRzIiwicmV0dXJuVmFsdWUiLCJ2aWV3RGF0YSIsImdldFBhcmVudCIsImdldFZpZXdEYXRhIiwic3RpY2t5TXVsdGlUYWJIZWFkZXIiLCJ2YXJpYW50TWFuYWdlbWVudCIsImluaXRpYWxMb2FkIiwiaGlkZUZpbHRlckJhciIsInVzZUhpZGRlbkZpbHRlckJhciIsInZpZXdzIiwic2hvd0NvdW50cyIsImdldEdsb2JhbFNldHRpbmdzVmFsdWUiLCJkZXNpZ25UaW1lIiwiYWN0aW9ucyIsImFubm90YXRpb24iLCJ0ZXh0QXJyYW5nZW1lbnQiLCJnZXRUZXh0QXJyYW5nZW1lbnRDaGFuZ2VBY3Rpb24iLCJyZW5hbWUiLCJnZXRSZW5hbWVBY3Rpb24iLCJzZXR0aW5ncyIsImZlIiwibmFtZSIsImdldFRleHQiLCJpY29uIiwiaGFuZGxlciIsImdldERlc2lnbnRpbWVTZXR0aW5ncyIsImdsb2JhbFNldHRpbmdzIiwiZ2V0R2xvYmFsU2V0dGluZ3MiLCJnbG9iYWxTZXR0aW5nc1ZhbHVlcyIsImdldEdsb2JhbFNldHRpbmdzVmFsdWVzIiwicHJvcGVydHlBbmRHbG9iYWxWYWx1ZXMiLCJ1bmNoYW5nZWREYXRhIiwiY29uZmlnQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwiaXNDb25maWdNb2RlbFByZXBhcmVkIiwiaXRlbXMiLCJpdGVtc0dsb2JhbCIsImdldFNldHRpbmdzIiwiZ2V0U2V0dGluZ3NHbG9iYWwiLCJjb25jYXQiLCJnZXRTZXR0aW5nc0lmS2V5VXNlciIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwicHJlcGFyZUNvbmZpZ01vZGVsIiwicmVzb3VyY2VNb2RlbCIsImdldE1vZGVsIiwib3BlbkFkYXB0aW9uRGlhbG9nIiwidGhlbiIsInByb3BlcnR5VmFsdWVzRW50ZXJlZCIsImV4dHJhY3RDaGFuZ2VzIiwibm9DaGFuZ2VzIiwicHJvcGVydGllcyIsImJhY2tncm91bmREZXNpZ24iLCJpZ25vcmUiLCJibG9ja2VkIiwiYnVzeSIsImJ1c3lJbmRpY2F0b3JEZWxheSIsImJ1c3lJbmRpY2F0b3JTaXplIiwiaGVhZGVyRXhwYW5kZWQiLCJoZWFkZXJQaW5uZWQiLCJwcmVzZXJ2ZUhlYWRlclN0YXRlT25TY3JvbGwiLCJzaG93Rm9vdGVyIiwidG9nZ2xlSGVhZGVyT25UaXRsZUNsaWNrIiwidmlzaWJsZSIsImZpdENvbnRlbnQiLCJhZ2dyZWdhdGlvbnMiLCJtYW5pZmVzdFNldHRpbmdzIiwiZ2V0UHJvcGVydHlOYW1lc0FuZERlc2NyaXB0aW9ucyIsIm1hbmlmZXN0U2V0dGluZ3NWYWx1ZXMiLCJyZXR1cm5WYWx1ZXMiLCJtYW5pZmVzdFByb3BlcnR5UGF0aCIsIm1hbmlmZXN0UHJvcGVydHlDaGFuZ2UiLCJwcm9wZXJ0eUNoYW5nZXMiLCJwcm9wZXJ0eVBhdGgiLCJzZXBhcmF0ZUNoYW5nZXMiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkxpc3RSZXBvcnQuZGVzaWdudGltZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBEeW5hbWljUGFnZSBmcm9tIFwic2FwL2YvRHluYW1pY1BhZ2VcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCB7IGdldFJlbmFtZUFjdGlvbiwgZ2V0VGV4dCwgZ2V0VGV4dEFycmFuZ2VtZW50Q2hhbmdlQWN0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2Rlc2lnbnRpbWUvQW5ub3RhdGlvbkJhc2VkQ2hhbmdlc1wiO1xuaW1wb3J0IHR5cGUgeyBEZXNpZ250aW1lU2V0dGluZywgUHJvcGVydHlWYWx1ZSwgU2V0dGluZ3NEYXRhLCBhZGFwdGlvbkNoYW5nZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2Rlc2lnbnRpbWUvRGVzaWdudGltZS5oZWxwZXJcIjtcbmltcG9ydCB7XG5cdGV4dHJhY3RDaGFuZ2VzLFxuXHRnZXRQcm9wZXJ0eU5hbWVzQW5kRGVzY3JpcHRpb25zLFxuXHRnZXRTZXR0aW5nc0lmS2V5VXNlcixcblx0aXNDb25maWdNb2RlbFByZXBhcmVkLFxuXHRub0NoYW5nZXMsXG5cdG9wZW5BZGFwdGlvbkRpYWxvZyxcblx0cHJlcGFyZUNvbmZpZ01vZGVsLFxuXHRzZXBhcmF0ZUNoYW5nZXNcbn0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZGVzaWdudGltZS9EZXNpZ250aW1lLmhlbHBlclwiO1xuaW1wb3J0IHtcblx0Z2V0RGVzaWdudGltZVNldHRpbmdzLFxuXHRnZXRHbG9iYWxTZXR0aW5ncyxcblx0Z2V0R2xvYmFsU2V0dGluZ3NWYWx1ZSxcblx0Z2V0R2xvYmFsU2V0dGluZ3NWYWx1ZXMsXG5cdGdldFNldHRpbmdzLFxuXHRnZXRTZXR0aW5nc0dsb2JhbFxufSBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9MaXN0UmVwb3J0L2Rlc2lnbnRpbWUvTGlzdFJlcG9ydC5kZXNpZ250aW1lLmhlbHBlclwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5cbnR5cGUgcHJvcGVydHlWYWx1ZUluQ29uZmlnID0ge1xuXHRzdGlja3lNdWx0aVRhYkhlYWRlcjogZmFsc2U7XG5cdHZhcmlhbnRNYW5hZ2VtZW50OiBzdHJpbmc7XG5cdGluaXRpYWxMb2FkOiBzdHJpbmc7XG5cdGhpZGVGaWx0ZXJCYXI6IGZhbHNlO1xuXHR1c2VIaWRkZW5GaWx0ZXJCYXI6IGZhbHNlO1xuXHR2aWV3czoge1xuXHRcdHNob3dDb3VudHM6IGZhbHNlO1xuXHR9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFkYXB0YXRpb25Qcm9wZXJ0aWVzKGRlc2lnbnRpbWVTZXR0aW5nczogRGVzaWdudGltZVNldHRpbmdbXSwgY29udHJvbDogRHluYW1pY1BhZ2UpOiBQcm9wZXJ0eVZhbHVlIHtcblx0Y29uc3QgcHJvcGVydHlWYWx1ZXM6IFByb3BlcnR5VmFsdWUgPSB7fTtcblx0ZGVzaWdudGltZVNldHRpbmdzLmZvckVhY2goZnVuY3Rpb24gKHNldHRpbmcpIHtcblx0XHRwcm9wZXJ0eVZhbHVlc1tzZXR0aW5nLmlkXSA9IGdldEFkYXB0YXRpb25Qcm9wZXJ0eVZhbHVlKHNldHRpbmcsIGNvbnRyb2wpO1xuXHR9KTtcblx0cmV0dXJuIHByb3BlcnR5VmFsdWVzO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiBvbmUgb2YgdGhlIHNldHRpbmdzIHRoYXQgaGF2ZSBiZWVuIGRlZmluZWQgZm9yIGxpc3QgcmVwb3J0IGFkYXB0YXRpb24uXG4gKiBAcGFyYW0gc2V0dGluZyBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgc2V0dGluZyByZXF1aXJlZCBmb3IgYWRhcHRhdGlvblxuICogQHBhcmFtIGNvbnRyb2wgUmVmZXJlbmNlIHRvIGxpc3QgcmVwb3J0XG4gKiBAcmV0dXJucyBTZXR0aW5nIGRlZmluaXRpb24gd2l0aCBhIHZhbHVlIGZvciBsaXN0IHJlcG9ydFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWRhcHRhdGlvblByb3BlcnR5VmFsdWUoc2V0dGluZzogRGVzaWdudGltZVNldHRpbmcsIGNvbnRyb2w6IER5bmFtaWNQYWdlKTogYm9vbGVhbiB8IHN0cmluZyB8IG51bWJlciB7XG5cdGxldCByZXR1cm5WYWx1ZTogYm9vbGVhbiB8IHN0cmluZyB8IG51bWJlciA9IFwiXCI7XG5cblx0Y29uc3Qgdmlld0RhdGEgPSAoY29udHJvbC5nZXRQYXJlbnQoKSBhcyBWaWV3KSEuZ2V0Vmlld0RhdGEoKSBhcyBwcm9wZXJ0eVZhbHVlSW5Db25maWc7XG5cblx0c3dpdGNoIChzZXR0aW5nLmlkKSB7XG5cdFx0Y2FzZSBcInN0aWNreU11bHRpVGFiSGVhZGVyXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHZpZXdEYXRhLnN0aWNreU11bHRpVGFiSGVhZGVyO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcInZhcmlhbnRNYW5hZ2VtZW50XCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHZpZXdEYXRhLnZhcmlhbnRNYW5hZ2VtZW50O1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcImluaXRpYWxMb2FkXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHZpZXdEYXRhLmluaXRpYWxMb2FkO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcImhpZGVGaWx0ZXJCYXJcIjpcblx0XHRcdHJldHVyblZhbHVlID0gdmlld0RhdGEuaGlkZUZpbHRlckJhcjtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJ1c2VIaWRkZW5GaWx0ZXJCYXJcIjpcblx0XHRcdHJldHVyblZhbHVlID0gdmlld0RhdGEudXNlSGlkZGVuRmlsdGVyQmFyO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcInNob3dDb3VudHNcIjpcblx0XHRcdHJldHVyblZhbHVlID0gdmlld0RhdGEudmlld3M/LnNob3dDb3VudHM7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuVmFsdWUgPSBnZXRHbG9iYWxTZXR0aW5nc1ZhbHVlKHNldHRpbmcsIGNvbnRyb2wpO1xuXHR9XG5cblx0cmV0dXJuIHJldHVyblZhbHVlO1xufVxuXG5jb25zdCBkZXNpZ25UaW1lID0ge1xuXHRhY3Rpb25zOiB7XG5cdFx0YW5ub3RhdGlvbjoge1xuXHRcdFx0dGV4dEFycmFuZ2VtZW50OiBnZXRUZXh0QXJyYW5nZW1lbnRDaGFuZ2VBY3Rpb24oKSxcblx0XHRcdHJlbmFtZTogZ2V0UmVuYW1lQWN0aW9uKClcblx0XHR9LFxuXHRcdHNldHRpbmdzOiB7XG5cdFx0XHRmZToge1xuXHRcdFx0XHRuYW1lOiBnZXRUZXh0KFwiUlRBX0NPTlRFWFRfQUNUSU9OTUVOVV9DT05GSUdcIiksXG5cdFx0XHRcdGljb246IFwic2FwLWljb246Ly9kZXZlbG9wZXItc2V0dGluZ3NcIixcblx0XHRcdFx0aGFuZGxlcjogYXN5bmMgZnVuY3Rpb24gKGNvbnRyb2w6IER5bmFtaWNQYWdlKTogUHJvbWlzZTx1bmtub3duPiB7XG5cdFx0XHRcdFx0Y29uc3QgZGVzaWdudGltZVNldHRpbmdzID0gZ2V0RGVzaWdudGltZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0Y29uc3QgZ2xvYmFsU2V0dGluZ3MgPSBnZXRHbG9iYWxTZXR0aW5ncygpO1xuXHRcdFx0XHRcdGNvbnN0IHByb3BlcnR5VmFsdWVzID0gZ2V0QWRhcHRhdGlvblByb3BlcnRpZXMoZGVzaWdudGltZVNldHRpbmdzLCBjb250cm9sKTtcblx0XHRcdFx0XHRjb25zdCBnbG9iYWxTZXR0aW5nc1ZhbHVlcyA9IGdldEdsb2JhbFNldHRpbmdzVmFsdWVzKGdsb2JhbFNldHRpbmdzLCBjb250cm9sKTtcblx0XHRcdFx0XHRjb25zdCBwcm9wZXJ0eUFuZEdsb2JhbFZhbHVlcyA9IHsgLi4ucHJvcGVydHlWYWx1ZXMsIC4uLmdsb2JhbFNldHRpbmdzVmFsdWVzIH07XG5cdFx0XHRcdFx0Y29uc3QgdW5jaGFuZ2VkRGF0YSA9IHsgLi4uZ2xvYmFsU2V0dGluZ3NWYWx1ZXMsIC4uLnByb3BlcnR5VmFsdWVzIH07XG5cdFx0XHRcdFx0Y29uc3QgY29uZmlnQ29udGV4dCA9IGNvbnRyb2wuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBDb250ZXh0O1xuXHRcdFx0XHRcdGlmICghaXNDb25maWdNb2RlbFByZXBhcmVkKGNvbmZpZ0NvbnRleHQpKSB7XG5cdFx0XHRcdFx0XHQvLyBmaXJzdCB0aW1lIHRoaXMgc2Vzc2lvblxuXHRcdFx0XHRcdFx0bGV0IGl0ZW1zOiBTZXR0aW5nc0RhdGFbXSA9IFtdO1xuXHRcdFx0XHRcdFx0bGV0IGl0ZW1zR2xvYmFsOiBTZXR0aW5nc0RhdGFbXSA9IFtdO1xuXHRcdFx0XHRcdFx0aXRlbXMgPSBnZXRTZXR0aW5ncyhwcm9wZXJ0eVZhbHVlcyk7XG5cdFx0XHRcdFx0XHRpdGVtc0dsb2JhbCA9IGdldFNldHRpbmdzR2xvYmFsKGdsb2JhbFNldHRpbmdzVmFsdWVzKTtcblx0XHRcdFx0XHRcdGl0ZW1zID0gaXRlbXMuY29uY2F0KGl0ZW1zR2xvYmFsKTtcblx0XHRcdFx0XHRcdC8vIHNhcC1mZS1ydGEtbW9kZT10cnVlIGFuZCB0aGVuIEFkYXB0IFVJXG5cdFx0XHRcdFx0XHRpdGVtcyA9IGdldFNldHRpbmdzSWZLZXlVc2VyKENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudChjb250cm9sKSwgaXRlbXMpO1xuXHRcdFx0XHRcdFx0Ly8gdXNlIGludGVybmFsIG1vZGVsIHRvIHBlcnNpc3QgYWRhcHRhdGlvbiBjb25maWd1cmF0aW9uIHZhbHVlc1xuXHRcdFx0XHRcdFx0cHJlcGFyZUNvbmZpZ01vZGVsKGl0ZW1zLCBjb25maWdDb250ZXh0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgcmVzb3VyY2VNb2RlbCA9IGNvbnRyb2wuZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKSBhcyBSZXNvdXJjZU1vZGVsO1xuXHRcdFx0XHRcdHJldHVybiBvcGVuQWRhcHRpb25EaWFsb2coXG5cdFx0XHRcdFx0XHRjb25maWdDb250ZXh0LFxuXHRcdFx0XHRcdFx0cHJvcGVydHlBbmRHbG9iYWxWYWx1ZXMsXG5cdFx0XHRcdFx0XHRcIntzYXAuZmUuaTE4bj5SVEFfQ09ORklHVVJBVElPTl9USVRMRV9MUn1cIixcblx0XHRcdFx0XHRcdHJlc291cmNlTW9kZWxcblx0XHRcdFx0XHQpLnRoZW4oZnVuY3Rpb24gKHByb3BlcnR5VmFsdWVzRW50ZXJlZDogUHJvcGVydHlWYWx1ZSk6IGFkYXB0aW9uQ2hhbmdlW10gfCBbXSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZXh0cmFjdENoYW5nZXMoZGVzaWdudGltZVNldHRpbmdzLCB1bmNoYW5nZWREYXRhLCBwcm9wZXJ0eVZhbHVlc0VudGVyZWQsIFwiXCIsIGNvbnRyb2wsIGdsb2JhbFNldHRpbmdzKTtcblx0XHRcdFx0XHR9LCBub0NoYW5nZXMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHQvLyBXZSBkaXNhYmxlIGR5bmFtaWMgcGFnZSBwcm9wZXJ0aWVzIGluIHRoZSBwcm9wZXJ0eSBwYW5lbCBvZiBGaW9yaSBUb29sc1xuXHRwcm9wZXJ0aWVzOiB7XG5cdFx0YmFja2dyb3VuZERlc2lnbjogeyBpZ25vcmU6IHRydWUgfSxcblx0XHRibG9ja2VkOiB7IGlnbm9yZTogdHJ1ZSB9LFxuXHRcdGJ1c3k6IHsgaWdub3JlOiB0cnVlIH0sXG5cdFx0YnVzeUluZGljYXRvckRlbGF5OiB7IGlnbm9yZTogdHJ1ZSB9LFxuXHRcdGJ1c3lJbmRpY2F0b3JTaXplOiB7IGlnbm9yZTogdHJ1ZSB9LFxuXHRcdGhlYWRlckV4cGFuZGVkOiB7IGlnbm9yZTogdHJ1ZSB9LFxuXHRcdGhlYWRlclBpbm5lZDogeyBpZ25vcmU6IHRydWUgfSxcblx0XHRwcmVzZXJ2ZUhlYWRlclN0YXRlT25TY3JvbGw6IHsgaWdub3JlOiB0cnVlIH0sXG5cdFx0c2hvd0Zvb3RlcjogeyBpZ25vcmU6IHRydWUgfSxcblx0XHR0b2dnbGVIZWFkZXJPblRpdGxlQ2xpY2s6IHsgaWdub3JlOiB0cnVlIH0sXG5cdFx0dmlzaWJsZTogeyBpZ25vcmU6IHRydWUgfSxcblx0XHRmaXRDb250ZW50OiB7IGlnbm9yZTogdHJ1ZSB9XG5cdH0sXG5cblx0YWdncmVnYXRpb25zOiB7fSxcblxuXHQvLyBUaGVzZSBmdW5jdGlvbnMgcHJvdmlkZSB0aGUgcHJvcGVydGllcyB1c2VkIGluIHRhYmxlIGFkYXB0aW9uIHRvIEZpb3JpIHRvb2xzLlxuXHRtYW5pZmVzdFNldHRpbmdzOiBmdW5jdGlvbiAoY29udHJvbDogRHluYW1pY1BhZ2UpOiBEZXNpZ250aW1lU2V0dGluZ1tdIHtcblx0XHRjb25zdCBnbG9iYWxTZXR0aW5ncyA9IGdldFByb3BlcnR5TmFtZXNBbmREZXNjcmlwdGlvbnMoZ2V0R2xvYmFsU2V0dGluZ3MoKSwgY29udHJvbC5nZXRNb2RlbChcInNhcC5mZS5pMThuXCIpIGFzIFJlc291cmNlTW9kZWwpO1xuXHRcdGNvbnN0IHNldHRpbmdzID0gZ2V0UHJvcGVydHlOYW1lc0FuZERlc2NyaXB0aW9ucyhnZXREZXNpZ250aW1lU2V0dGluZ3MoKSwgY29udHJvbC5nZXRNb2RlbChcInNhcC5mZS5pMThuXCIpIGFzIFJlc291cmNlTW9kZWwpO1xuXHRcdHJldHVybiBnbG9iYWxTZXR0aW5ncy5jb25jYXQoc2V0dGluZ3MpO1xuXHR9LFxuXHQvLyBnZXRBZGFwdGlvblByb3BlcnR5VmFsdWVcblx0bWFuaWZlc3RTZXR0aW5nc1ZhbHVlczogZnVuY3Rpb24gKGRlc2lnbnRpbWVTZXR0aW5nczogRGVzaWdudGltZVNldHRpbmdbXSwgY29udHJvbDogRHluYW1pY1BhZ2UpOiBQcm9wZXJ0eVZhbHVlIHtcblx0XHRjb25zdCByZXR1cm5WYWx1ZXM6IFByb3BlcnR5VmFsdWUgPSB7fTtcblx0XHRkZXNpZ250aW1lU2V0dGluZ3MuZm9yRWFjaChmdW5jdGlvbiAoc2V0dGluZykge1xuXHRcdFx0cmV0dXJuVmFsdWVzW3NldHRpbmcuaWRdID0gZ2V0QWRhcHRhdGlvblByb3BlcnR5VmFsdWUoc2V0dGluZywgY29udHJvbCk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHJldHVyblZhbHVlcztcblx0fSxcblx0Ly8gZ2V0IHBhdGggZm9yIGNvbnRyb2wgY29uZmlndXJhdGlvbi4gUGFzcyByZWZlcmVuY2UgdG8gdGhlIGNvbnRyb2xcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRtYW5pZmVzdFByb3BlcnR5UGF0aDogZnVuY3Rpb24gKGNvbnRyb2w6IER5bmFtaWNQYWdlKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gXCJcIjtcblx0fSxcblx0Ly8gY3JlYXRlIGNoYW5nZSBzdHJ1Y3R1ZS4gUGFzcyBhcnJheSBvZiBtYW5pZmVzdCBzZXR0aW5nIGFuZCBuZXcgdmFsdWUsIHRoZSBwcm9wZXJ0eSBwYXRoIGFuZCB0aGUgY29udHJvbFxuXHRtYW5pZmVzdFByb3BlcnR5Q2hhbmdlOiBmdW5jdGlvbiAocHJvcGVydHlDaGFuZ2VzOiBQcm9wZXJ0eVZhbHVlLCBwcm9wZXJ0eVBhdGg6IHN0cmluZywgY29udHJvbDogRHluYW1pY1BhZ2UpOiBhZGFwdGlvbkNoYW5nZVtdIHtcblx0XHRyZXR1cm4gc2VwYXJhdGVDaGFuZ2VzKHByb3BlcnR5Q2hhbmdlcywgcHJvcGVydHlQYXRoLCBjb250cm9sKTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVzaWduVGltZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXFDTyxTQUFTQSx1QkFBdUJBLENBQUNDLGtCQUF1QyxFQUFFQyxPQUFvQixFQUFpQjtJQUNySCxNQUFNQyxjQUE2QixHQUFHLENBQUMsQ0FBQztJQUN4Q0Ysa0JBQWtCLENBQUNHLE9BQU8sQ0FBQyxVQUFVQyxPQUFPLEVBQUU7TUFDN0NGLGNBQWMsQ0FBQ0UsT0FBTyxDQUFDQyxFQUFFLENBQUMsR0FBR0MsMEJBQTBCLENBQUNGLE9BQU8sRUFBRUgsT0FBTyxDQUFDO0lBQzFFLENBQUMsQ0FBQztJQUNGLE9BQU9DLGNBQWM7RUFDdEI7RUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFMQUssUUFBQSxDQUFBUix1QkFBQSxHQUFBQSx1QkFBQTtFQU1PLFNBQVNPLDBCQUEwQkEsQ0FBQ0YsT0FBMEIsRUFBRUgsT0FBb0IsRUFBNkI7SUFDdkgsSUFBSU8sV0FBc0MsR0FBRyxFQUFFO0lBRS9DLE1BQU1DLFFBQVEsR0FBSVIsT0FBTyxDQUFDUyxTQUFTLENBQUMsQ0FBQyxDQUFXQyxXQUFXLENBQUMsQ0FBMEI7SUFFdEYsUUFBUVAsT0FBTyxDQUFDQyxFQUFFO01BQ2pCLEtBQUssc0JBQXNCO1FBQzFCRyxXQUFXLEdBQUdDLFFB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
|
|
180
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRBZGFwdGF0aW9uUHJvcGVydGllcyIsImRlc2lnbnRpbWVTZXR0aW5ncyIsImNvbnRyb2wiLCJwcm9wZXJ0eVZhbHVlcyIsImZvckVhY2giLCJzZXR0aW5nIiwiaWQiLCJnZXRBZGFwdGF0aW9uUHJvcGVydHlWYWx1ZSIsIl9leHBvcnRzIiwicmV0dXJuVmFsdWUiLCJ2aWV3RGF0YSIsImdldFBhcmVudCIsImdldFZpZXdEYXRhIiwic3RpY2t5TXVsdGlUYWJIZWFkZXIiLCJ2YXJpYW50TWFuYWdlbWVudCIsImluaXRpYWxMb2FkIiwiaGlkZUZpbHRlckJhciIsInVzZUhpZGRlbkZpbHRlckJhciIsInZpZXdzIiwic2hvd0NvdW50cyIsImdldEdsb2JhbFNldHRpbmdzVmFsdWUiLCJkZXNpZ25UaW1lIiwiYWN0aW9ucyIsImFubm90YXRpb24iLCJ0ZXh0QXJyYW5nZW1lbnQiLCJnZXRUZXh0QXJyYW5nZW1lbnRDaGFuZ2VBY3Rpb24iLCJyZW5hbWUiLCJnZXRSZW5hbWVBY3Rpb24iLCJzZXR0aW5ncyIsImZlIiwibmFtZSIsImdldFRleHQiLCJpY29uIiwiaXNFbmFibGVkIiwiaXNNYW5pZmVzdENoYW5nZXNFbmFibGVkIiwiaGFuZGxlciIsImdldERlc2lnbnRpbWVTZXR0aW5ncyIsImdsb2JhbFNldHRpbmdzIiwiZ2V0R2xvYmFsU2V0dGluZ3MiLCJnbG9iYWxTZXR0aW5nc1ZhbHVlcyIsImdldEdsb2JhbFNldHRpbmdzVmFsdWVzIiwicHJvcGVydHlBbmRHbG9iYWxWYWx1ZXMiLCJ1bmNoYW5nZWREYXRhIiwiY29uZmlnQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwiaXNDb25maWdNb2RlbFByZXBhcmVkIiwiaXRlbXMiLCJpdGVtc0dsb2JhbCIsImdldFNldHRpbmdzIiwiZ2V0U2V0dGluZ3NHbG9iYWwiLCJjb25jYXQiLCJnZXRTZXR0aW5nc0lmS2V5VXNlciIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwicHJlcGFyZUNvbmZpZ01vZGVsIiwicmVzb3VyY2VNb2RlbCIsImdldE1vZGVsIiwib3BlbkFkYXB0aW9uRGlhbG9nIiwidGhlbiIsInByb3BlcnR5VmFsdWVzRW50ZXJlZCIsImV4dHJhY3RDaGFuZ2VzIiwibm9DaGFuZ2VzIiwicHJvcGVydGllcyIsImJhY2tncm91bmREZXNpZ24iLCJpZ25vcmUiLCJibG9ja2VkIiwiYnVzeSIsImJ1c3lJbmRpY2F0b3JEZWxheSIsImJ1c3lJbmRpY2F0b3JTaXplIiwiaGVhZGVyRXhwYW5kZWQiLCJoZWFkZXJQaW5uZWQiLCJwcmVzZXJ2ZUhlYWRlclN0YXRlT25TY3JvbGwiLCJzaG93Rm9vdGVyIiwidG9nZ2xlSGVhZGVyT25UaXRsZUNsaWNrIiwidmlzaWJsZSIsImZpdENvbnRlbnQiLCJhZ2dyZWdhdGlvbnMiLCJtYW5pZmVzdFNldHRpbmdzIiwiZ2V0UHJvcGVydHlOYW1lc0FuZERlc2NyaXB0aW9ucyIsIm1hbmlmZXN0U2V0dGluZ3NWYWx1ZXMiLCJyZXR1cm5WYWx1ZXMiLCJtYW5pZmVzdFByb3BlcnR5UGF0aCIsIm1hbmlmZXN0UHJvcGVydHlDaGFuZ2UiLCJwcm9wZXJ0eUNoYW5nZXMiLCJwcm9wZXJ0eVBhdGgiLCJzZXBhcmF0ZUNoYW5nZXMiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkxpc3RSZXBvcnQuZGVzaWdudGltZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBEeW5hbWljUGFnZSBmcm9tIFwic2FwL2YvRHluYW1pY1BhZ2VcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCB7IGdldFJlbmFtZUFjdGlvbiwgZ2V0VGV4dCwgZ2V0VGV4dEFycmFuZ2VtZW50Q2hhbmdlQWN0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2Rlc2lnbnRpbWUvQW5ub3RhdGlvbkJhc2VkQ2hhbmdlc1wiO1xuaW1wb3J0IHR5cGUgeyBEZXNpZ250aW1lU2V0dGluZywgUHJvcGVydHlWYWx1ZSwgU2V0dGluZ3NEYXRhLCBhZGFwdGlvbkNoYW5nZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2Rlc2lnbnRpbWUvRGVzaWdudGltZS5oZWxwZXJcIjtcbmltcG9ydCB7XG5cdGV4dHJhY3RDaGFuZ2VzLFxuXHRnZXRQcm9wZXJ0eU5hbWVzQW5kRGVzY3JpcHRpb25zLFxuXHRnZXRTZXR0aW5nc0lmS2V5VXNlcixcblx0aXNDb25maWdNb2RlbFByZXBhcmVkLFxuXHRpc01hbmlmZXN0Q2hhbmdlc0VuYWJsZWQsXG5cdG5vQ2hhbmdlcyxcblx0b3BlbkFkYXB0aW9uRGlhbG9nLFxuXHRwcmVwYXJlQ29uZmlnTW9kZWwsXG5cdHNlcGFyYXRlQ2hhbmdlc1xufSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9kZXNpZ250aW1lL0Rlc2lnbnRpbWUuaGVscGVyXCI7XG5pbXBvcnQge1xuXHRnZXREZXNpZ250aW1lU2V0dGluZ3MsXG5cdGdldEdsb2JhbFNldHRpbmdzLFxuXHRnZXRHbG9iYWxTZXR0aW5nc1ZhbHVlLFxuXHRnZXRHbG9iYWxTZXR0aW5nc1ZhbHVlcyxcblx0Z2V0U2V0dGluZ3MsXG5cdGdldFNldHRpbmdzR2xvYmFsXG59IGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL0xpc3RSZXBvcnQvZGVzaWdudGltZS9MaXN0UmVwb3J0LmRlc2lnbnRpbWUuaGVscGVyXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcblxudHlwZSBwcm9wZXJ0eVZhbHVlSW5Db25maWcgPSB7XG5cdHN0aWNreU11bHRpVGFiSGVhZGVyOiBmYWxzZTtcblx0dmFyaWFudE1hbmFnZW1lbnQ6IHN0cmluZztcblx0aW5pdGlhbExvYWQ6IHN0cmluZztcblx0aGlkZUZpbHRlckJhcjogZmFsc2U7XG5cdHVzZUhpZGRlbkZpbHRlckJhcjogZmFsc2U7XG5cdHZpZXdzOiB7XG5cdFx0c2hvd0NvdW50czogZmFsc2U7XG5cdH07XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWRhcHRhdGlvblByb3BlcnRpZXMoZGVzaWdudGltZVNldHRpbmdzOiBEZXNpZ250aW1lU2V0dGluZ1tdLCBjb250cm9sOiBEeW5hbWljUGFnZSk6IFByb3BlcnR5VmFsdWUge1xuXHRjb25zdCBwcm9wZXJ0eVZhbHVlczogUHJvcGVydHlWYWx1ZSA9IHt9O1xuXHRkZXNpZ250aW1lU2V0dGluZ3MuZm9yRWFjaChmdW5jdGlvbiAoc2V0dGluZykge1xuXHRcdHByb3BlcnR5VmFsdWVzW3NldHRpbmcuaWRdID0gZ2V0QWRhcHRhdGlvblByb3BlcnR5VmFsdWUoc2V0dGluZywgY29udHJvbCk7XG5cdH0pO1xuXHRyZXR1cm4gcHJvcGVydHlWYWx1ZXM7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIHZhbHVlIG9mIG9uZSBvZiB0aGUgc2V0dGluZ3MgdGhhdCBoYXZlIGJlZW4gZGVmaW5lZCBmb3IgbGlzdCByZXBvcnQgYWRhcHRhdGlvbi5cbiAqIEBwYXJhbSBzZXR0aW5nIFRoZSBkZWZpbml0aW9uIG9mIHRoZSBzZXR0aW5nIHJlcXVpcmVkIGZvciBhZGFwdGF0aW9uXG4gKiBAcGFyYW0gY29udHJvbCBSZWZlcmVuY2UgdG8gbGlzdCByZXBvcnRcbiAqIEByZXR1cm5zIFNldHRpbmcgZGVmaW5pdGlvbiB3aXRoIGEgdmFsdWUgZm9yIGxpc3QgcmVwb3J0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZGFwdGF0aW9uUHJvcGVydHlWYWx1ZShzZXR0aW5nOiBEZXNpZ250aW1lU2V0dGluZywgY29udHJvbDogRHluYW1pY1BhZ2UpOiBib29sZWFuIHwgc3RyaW5nIHwgbnVtYmVyIHtcblx0bGV0IHJldHVyblZhbHVlOiBib29sZWFuIHwgc3RyaW5nIHwgbnVtYmVyID0gXCJcIjtcblxuXHRjb25zdCB2aWV3RGF0YSA9IChjb250cm9sLmdldFBhcmVudCgpIGFzIFZpZXcpIS5nZXRWaWV3RGF0YSgpIGFzIHByb3BlcnR5VmFsdWVJbkNvbmZpZztcblxuXHRzd2l0Y2ggKHNldHRpbmcuaWQpIHtcblx0XHRjYXNlIFwic3RpY2t5TXVsdGlUYWJIZWFkZXJcIjpcblx0XHRcdHJldHVyblZhbHVlID0gdmlld0RhdGEuc3RpY2t5TXVsdGlUYWJIZWFkZXI7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwidmFyaWFudE1hbmFnZW1lbnRcIjpcblx0XHRcdHJldHVyblZhbHVlID0gdmlld0RhdGEudmFyaWFudE1hbmFnZW1lbnQ7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiaW5pdGlhbExvYWRcIjpcblx0XHRcdHJldHVyblZhbHVlID0gdmlld0RhdGEuaW5pdGlhbExvYWQ7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiaGlkZUZpbHRlckJhclwiOlxuXHRcdFx0cmV0dXJuVmFsdWUgPSB2aWV3RGF0YS5oaWRlRmlsdGVyQmFyO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcInVzZUhpZGRlbkZpbHRlckJhclwiOlxuXHRcdFx0cmV0dXJuVmFsdWUgPSB2aWV3RGF0YS51c2VIaWRkZW5GaWx0ZXJCYXI7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwic2hvd0NvdW50c1wiOlxuXHRcdFx0cmV0dXJuVmFsdWUgPSB2aWV3RGF0YS52aWV3cz8uc2hvd0NvdW50cztcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IGdldEdsb2JhbFNldHRpbmdzVmFsdWUoc2V0dGluZywgY29udHJvbCk7XG5cdH1cblxuXHRyZXR1cm4gcmV0dXJuVmFsdWU7XG59XG5cbmNvbnN0IGRlc2lnblRpbWUgPSB7XG5cdGFjdGlvbnM6IHtcblx0XHRhbm5vdGF0aW9uOiB7XG5cdFx0XHR0ZXh0QXJyYW5nZW1lbnQ6IGdldFRleHRBcnJhbmdlbWVudENoYW5nZUFjdGlvbigpLFxuXHRcdFx0cmVuYW1lOiBnZXRSZW5hbWVBY3Rpb24oKVxuXHRcdH0sXG5cdFx0c2V0dGluZ3M6IHtcblx0XHRcdGZlOiB7XG5cdFx0XHRcdG5hbWU6IGdldFRleHQoXCJSVEFfQ09OVEVYVF9BQ1RJT05NRU5VX0NPTkZJR1wiKSxcblx0XHRcdFx0aWNvbjogXCJzYXAtaWNvbjovL2RldmVsb3Blci1zZXR0aW5nc1wiLFxuXHRcdFx0XHRpc0VuYWJsZWQ6IGlzTWFuaWZlc3RDaGFuZ2VzRW5hYmxlZCxcblx0XHRcdFx0aGFuZGxlcjogYXN5bmMgZnVuY3Rpb24gKGNvbnRyb2w6IER5bmFtaWNQYWdlKTogUHJvbWlzZTx1bmtub3duPiB7XG5cdFx0XHRcdFx0Y29uc3QgZGVzaWdudGltZVNldHRpbmdzID0gZ2V0RGVzaWdudGltZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0Y29uc3QgZ2xvYmFsU2V0dGluZ3MgPSBnZXRHbG9iYWxTZXR0aW5ncygpO1xuXHRcdFx0XHRcdGNvbnN0IHByb3BlcnR5VmFsdWVzID0gZ2V0QWRhcHRhdGlvblByb3BlcnRpZXMoZGVzaWdudGltZVNldHRpbmdzLCBjb250cm9sKTtcblx0XHRcdFx0XHRjb25zdCBnbG9iYWxTZXR0aW5nc1ZhbHVlcyA9IGdldEdsb2JhbFNldHRpbmdzVmFsdWVzKGdsb2JhbFNldHRpbmdzLCBjb250cm9sKTtcblx0XHRcdFx0XHRjb25zdCBwcm9wZXJ0eUFuZEdsb2JhbFZhbHVlcyA9IHsgLi4ucHJvcGVydHlWYWx1ZXMsIC4uLmdsb2JhbFNldHRpbmdzVmFsdWVzIH07XG5cdFx0XHRcdFx0Y29uc3QgdW5jaGFuZ2VkRGF0YSA9IHsgLi4uZ2xvYmFsU2V0dGluZ3NWYWx1ZXMsIC4uLnByb3BlcnR5VmFsdWVzIH07XG5cdFx0XHRcdFx0Y29uc3QgY29uZmlnQ29udGV4dCA9IGNvbnRyb2wuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBDb250ZXh0O1xuXHRcdFx0XHRcdGlmICghaXNDb25maWdNb2RlbFByZXBhcmVkKGNvbmZpZ0NvbnRleHQpKSB7XG5cdFx0XHRcdFx0XHQvLyBmaXJzdCB0aW1lIHRoaXMgc2Vzc2lvblxuXHRcdFx0XHRcdFx0bGV0IGl0ZW1zOiBTZXR0aW5nc0RhdGFbXSA9IFtdO1xuXHRcdFx0XHRcdFx0bGV0IGl0ZW1zR2xvYmFsOiBTZXR0aW5nc0RhdGFbXSA9IFtdO1xuXHRcdFx0XHRcdFx0aXRlbXMgPSBnZXRTZXR0aW5ncyhwcm9wZXJ0eVZhbHVlcyk7XG5cdFx0XHRcdFx0XHRpdGVtc0dsb2JhbCA9IGdldFNldHRpbmdzR2xvYmFsKGdsb2JhbFNldHRpbmdzVmFsdWVzKTtcblx0XHRcdFx0XHRcdGl0ZW1zID0gaXRlbXMuY29uY2F0KGl0ZW1zR2xvYmFsKTtcblx0XHRcdFx0XHRcdC8vIHNhcC1mZS1ydGEtbW9kZT10cnVlIGFuZCB0aGVuIEFkYXB0IFVJXG5cdFx0XHRcdFx0XHRpdGVtcyA9IGdldFNldHRpbmdzSWZLZXlVc2VyKENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudChjb250cm9sKSwgaXRlbXMpO1xuXHRcdFx0XHRcdFx0Ly8gdXNlIGludGVybmFsIG1vZGVsIHRvIHBlcnNpc3QgYWRhcHRhdGlvbiBjb25maWd1cmF0aW9uIHZhbHVlc1xuXHRcdFx0XHRcdFx0cHJlcGFyZUNvbmZpZ01vZGVsKGl0ZW1zLCBjb25maWdDb250ZXh0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgcmVzb3VyY2VNb2RlbCA9IGNvbnRyb2wuZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKSBhcyBSZXNvdXJjZU1vZGVsO1xuXHRcdFx0XHRcdHJldHVybiBvcGVuQWRhcHRpb25EaWFsb2coXG5cdFx0XHRcdFx0XHRjb25maWdDb250ZXh0LFxuXHRcdFx0XHRcdFx0cHJvcGVydHlBbmRHbG9iYWxWYWx1ZXMsXG5cdFx0XHRcdFx0XHRcIntzYXAuZmUuaTE4bj5SVEFfQ09ORklHVVJBVElPTl9USVRMRV9MUn1cIixcblx0XHRcdFx0XHRcdHJlc291cmNlTW9kZWxcblx0XHRcdFx0XHQpLnRoZW4oZnVuY3Rpb24gKHByb3BlcnR5VmFsdWVzRW50ZXJlZDogUHJvcGVydHlWYWx1ZSk6IGFkYXB0aW9uQ2hhbmdlW10gfCBbXSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZXh0cmFjdENoYW5nZXMoZGVzaWdudGltZVNldHRpbmdzLCB1bmNoYW5nZWREYXRhLCBwcm9wZXJ0eVZhbHVlc0VudGVyZWQsIFwiXCIsIGNvbnRyb2wsIGdsb2JhbFNldHRpbmdzKTtcblx0XHRcdFx0XHR9LCBub0NoYW5nZXMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHQvLyBXZSBkaXNhYmxlIGR5bmFtaWMgcGFnZSBwcm9wZXJ0aWVzIGluIHRoZSBwcm9wZXJ0eSBwYW5lbCBvZiBGaW9yaSBUb29sc1xuXHRwcm9wZXJ0aWVzOiB7XG5cdFx0YmFja2dyb3VuZERlc2lnbjogeyBpZ25vcmU6IHRydWUgfSxcblx0XHRibG9ja2VkOiB7IGlnbm9yZTogdHJ1ZSB9LFxuXHRcdGJ1c3k6IHsgaWdub3JlOiB0cnVlIH0sXG5cdFx0YnVzeUluZGljYXRvckRlbGF5OiB7IGlnbm9yZTogdHJ1ZSB9LFxuXHRcdGJ1c3lJbmRpY2F0b3JTaXplOiB7IGlnbm9yZTogdHJ1ZSB9LFxuXHRcdGhlYWRlckV4cGFuZGVkOiB7IGlnbm9yZTogdHJ1ZSB9LFxuXHRcdGhlYWRlclBpbm5lZDogeyBpZ25vcmU6IHRydWUgfSxcblx0XHRwcmVzZXJ2ZUhlYWRlclN0YXRlT25TY3JvbGw6IHsgaWdub3JlOiB0cnVlIH0sXG5cdFx0c2hvd0Zvb3RlcjogeyBpZ25vcmU6IHRydWUgfSxcblx0XHR0b2dnbGVIZWFkZXJPblRpdGxlQ2xpY2s6IHsgaWdub3JlOiB0cnVlIH0sXG5cdFx0dmlzaWJsZTogeyBpZ25vcmU6IHRydWUgfSxcblx0XHRmaXRDb250ZW50OiB7IGlnbm9yZTogdHJ1ZSB9XG5cdH0sXG5cblx0YWdncmVnYXRpb25zOiB7fSxcblxuXHQvLyBUaGVzZSBmdW5jdGlvbnMgcHJvdmlkZSB0aGUgcHJvcGVydGllcyB1c2VkIGluIHRhYmxlIGFkYXB0aW9uIHRvIEZpb3JpIHRvb2xzLlxuXHRtYW5pZmVzdFNldHRpbmdzOiBmdW5jdGlvbiAoY29udHJvbDogRHluYW1pY1BhZ2UpOiBEZXNpZ250aW1lU2V0dGluZ1tdIHtcblx0XHRjb25zdCBnbG9iYWxTZXR0aW5ncyA9IGdldFByb3BlcnR5TmFtZXNBbmREZXNjcmlwdGlvbnMoZ2V0R2xvYmFsU2V0dGluZ3MoKSwgY29udHJvbC5nZXRNb2RlbChcInNhcC5mZS5pMThuXCIpIGFzIFJlc291cmNlTW9kZWwpO1xuXHRcdGNvbnN0IHNldHRpbmdzID0gZ2V0UHJvcGVydHlOYW1lc0FuZERlc2NyaXB0aW9ucyhnZXREZXNpZ250aW1lU2V0dGluZ3MoKSwgY29udHJvbC5nZXRNb2RlbChcInNhcC5mZS5pMThuXCIpIGFzIFJlc291cmNlTW9kZWwpO1xuXHRcdHJldHVybiBnbG9iYWxTZXR0aW5ncy5jb25jYXQoc2V0dGluZ3MpO1xuXHR9LFxuXHQvLyBnZXRBZGFwdGlvblByb3BlcnR5VmFsdWVcblx0bWFuaWZlc3RTZXR0aW5nc1ZhbHVlczogZnVuY3Rpb24gKGRlc2lnbnRpbWVTZXR0aW5nczogRGVzaWdudGltZVNldHRpbmdbXSwgY29udHJvbDogRHluYW1pY1BhZ2UpOiBQcm9wZXJ0eVZhbHVlIHtcblx0XHRjb25zdCByZXR1cm5WYWx1ZXM6IFByb3BlcnR5VmFsdWUgPSB7fTtcblx0XHRkZXNpZ250aW1lU2V0dGluZ3MuZm9yRWFjaChmdW5jdGlvbiAoc2V0dGluZykge1xuXHRcdFx0cmV0dXJuVmFsdWVzW3NldHRpbmcuaWRdID0gZ2V0QWRhcHRhdGlvblByb3BlcnR5VmFsdWUoc2V0dGluZywgY29udHJvbCk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHJldHVyblZhbHVlcztcblx0fSxcblx0Ly8gZ2V0IHBhdGggZm9yIGNvbnRyb2wgY29uZmlndXJhdGlvbi4gUGFzcyByZWZlcmVuY2UgdG8gdGhlIGNvbnRyb2xcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRtYW5pZmVzdFByb3BlcnR5UGF0aDogZnVuY3Rpb24gKGNvbnRyb2w6IER5bmFtaWNQYWdlKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gXCJcIjtcblx0fSxcblx0Ly8gY3JlYXRlIGNoYW5nZSBzdHJ1Y3R1ZS4gUGFzcyBhcnJheSBvZiBtYW5pZmVzdCBzZXR0aW5nIGFuZCBuZXcgdmFsdWUsIHRoZSBwcm9wZXJ0eSBwYXRoIGFuZCB0aGUgY29udHJvbFxuXHRtYW5pZmVzdFByb3BlcnR5Q2hhbmdlOiBmdW5jdGlvbiAocHJvcGVydHlDaGFuZ2VzOiBQcm9wZXJ0eVZhbHVlLCBwcm9wZXJ0eVBhdGg6IHN0cmluZywgY29udHJvbDogRHluYW1pY1BhZ2UpOiBhZGFwdGlvbkNoYW5nZVtdIHtcblx0XHRyZXR1cm4gc2VwYXJhdGVDaGFuZ2VzKHByb3BlcnR5Q2hhbmdlcywgcHJvcGVydHlQYXRoLCBjb250cm9sKTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVzaWduVGltZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFzQ08sU0FBU0EsdUJBQXVCQSxDQUFDQyxrQkFBdUMsRUFBRUMsT0FBb0IsRUFBaUI7SUFDckgsTUFBTUMsY0FBNkIsR0FBRyxDQUFDLENBQUM7SUFDeENGLGtCQUFrQixDQUFDRyxPQUFPLENBQUMsVUFBVUMsT0FBTyxFQUFFO01BQzdDRixjQUFjLENBQUNFLE9BQU8sQ0FBQ0MsRUFBRSxDQUFDLEdBQUdDLDBCQUEwQixDQUFDRixPQUFPLEVBQUVILE9BQU8sQ0FBQztJQUMxRSxDQUFDLENBQUM7SUFDRixPQUFPQyxjQUFjO0VBQ3RCO0VBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBTEFLLFFBQUEsQ0FBQVIsdUJBQUEsR0FBQUEsdUJBQUE7RUFNTyxTQUFTTywwQkFBMEJBLENBQUNGLE9BQTBCLEVBQUVILE9BQW9CLEVBQTZCO0lBQ3ZILElBQUlPLFdBQXNDLEdBQUcsRUFBRTtJQUUvQyxNQUFNQyxRQUFRLEdBQUlS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
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
getPropertyNamesAndDescriptions,
|
|
9
9
|
getSettingsIfKeyUser,
|
|
10
10
|
isConfigModelPrepared,
|
|
11
|
+
isManifestChangesEnabled,
|
|
11
12
|
noChanges,
|
|
12
13
|
openAdaptionDialog,
|
|
13
14
|
prepareConfigModel,
|
|
@@ -89,6 +90,7 @@ const designTime = {
|
|
|
89
90
|
fe: {
|
|
90
91
|
name: getText("RTA_CONTEXT_ACTIONMENU_CONFIG"),
|
|
91
92
|
icon: "sap-icon://developer-settings",
|
|
93
|
+
isEnabled: isManifestChangesEnabled,
|
|
92
94
|
handler: async function (control: DynamicPage): Promise<unknown> {
|
|
93
95
|
const designtimeSettings = getDesigntimeSettings();
|
|
94
96
|
const globalSettings = getGlobalSettings();
|