@sapui5/sap.fe.controls 1.136.12 → 1.136.15
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/controls/.library +1 -1
- package/src/sap/fe/controls/library.js +1 -1
- package/src/sap/fe/controls/messagebundle_fr_CA.properties +2 -2
- package/src/sap/fe/controls/messagebundle_hi.properties +1 -1
- package/src/sap/fe/controls/messagebundle_it.properties +2 -2
- package/src/sap/fe/controls/messagebundle_uk.properties +1 -1
- package/src/sap/fe/controls/shortcuts/ShortcutExplanationProvider.js +25 -17
- package/src/sap/fe/controls/shortcuts/ShortcutExplanationProvider.tsx +39 -18
package/package.json
CHANGED
|
@@ -22,7 +22,7 @@ sap.ui.define(["sap/fe/base/library", "sap/fe/controls/shortcuts/ShortcutExplana
|
|
|
22
22
|
controls: [],
|
|
23
23
|
elements: [],
|
|
24
24
|
// eslint-disable-next-line no-template-curly-in-string
|
|
25
|
-
version: "1.136.
|
|
25
|
+
version: "1.136.15",
|
|
26
26
|
noLibraryCSS: false
|
|
27
27
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
28
|
});
|
|
@@ -23,8 +23,8 @@ M_EASY_FILTER_POPOVER_LAST_USED=Derni\u00E8res requ\u00EAtes utilis\u00E9es
|
|
|
23
23
|
M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_TITLE=Aucune requ\u00EAte pr\u00E9f\u00E9r\u00E9e
|
|
24
24
|
M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_DESCRIPTION=Ajoutez des requ\u00EAtes \u00E0 vos requ\u00EAtes pr\u00E9f\u00E9r\u00E9es.
|
|
25
25
|
M_EASY_FILTER_POPOVER_EMPTY_RECENT_DESCRIPTION=Les derni\u00E8res requ\u00EAtes que vous avez utilis\u00E9es s'affichent ici.
|
|
26
|
-
M_EASY_FILTER_POPOVER_AI_TITLE=Cr\u00E9\u00E9(e) avec l
|
|
27
|
-
M_EASY_FILTER_POPOVER_AI_TEXT_1=Contenu partiellement ou int\u00E9gralement g\u00E9n\u00E9r\u00E9 par des technologies d
|
|
26
|
+
M_EASY_FILTER_POPOVER_AI_TITLE=Cr\u00E9\u00E9(e) avec l'IA
|
|
27
|
+
M_EASY_FILTER_POPOVER_AI_TEXT_1=Contenu partiellement ou int\u00E9gralement g\u00E9n\u00E9r\u00E9 par des technologies d'intelligence artificielle (IA).
|
|
28
28
|
M_EASY_FILTER_POPOVER_AI_TEXT_2=Le contenu g\u00E9n\u00E9r\u00E9 par l'IA peut contenir des incoh\u00E9rences en raison de l'utilisation de plusieurs sources d'information. V\u00E9rifiez les r\u00E9sultats avant utilisation.
|
|
29
29
|
M_EASY_FILTER_POPOVER_CLOSE=Fermer
|
|
30
30
|
M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=Aucune derni\u00E8re requ\u00EAte utilis\u00E9e
|
|
@@ -30,7 +30,7 @@ M_EASY_FILTER_POPOVER_CLOSE=\u092C\u0902\u0926 \u0915\u0930\u0947\u0902
|
|
|
30
30
|
M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=\u0905\u0902\u0924\u093F\u092E \u092C\u093E\u0930 \u0909\u092A\u092F\u094B\u0917 \u0915\u0940 \u0917\u0908 \u0915\u094D\u0935\u0947\u0930\u0940\u091C\u093C
|
|
31
31
|
M_EASY_FILTER_FILLED_STAR=\u092A\u0938\u0902\u0926\u0940\u0926\u093E \u0938\u0947 \u0928\u093F\u0915\u093E\u0932\u0947\u0902
|
|
32
32
|
M_EASY_FILTER_EMPTY_START=\u092A\u0938\u0902\u0926\u0940\u0926\u093E \u092E\u0947\u0902 \u091C\u094B\u095C\u0947\u0902
|
|
33
|
-
T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=\u0938\u0902\u0926\u0940\u0926\u093E \u0915\u094D\u0935\u0947\u0930\u0940\u091C\u093C \u0914\u0930 \u0905\u0902\u0924\u093F\u092E \u092C\u093E\u0930 \u0909\u092A\u092F\u094B\u0917 \u0915\u0940 \u0917\u0908 \u0915\u094D\u0935\u0947\u0930\u0940\u091C\u093C \u0915\u0940 \u0938\u0942\u091A\u0940 \u092A\u0930 \u091C\u093E\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F,
|
|
33
|
+
T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=\u092A\u0938\u0902\u0926\u0940\u0926\u093E \u0915\u094D\u0935\u0947\u0930\u0940\u091C\u093C \u0914\u0930 \u0905\u0902\u0924\u093F\u092E \u092C\u093E\u0930 \u0909\u092A\u092F\u094B\u0917 \u0915\u0940 \u0917\u0908 \u0915\u094D\u0935\u0947\u0930\u0940\u091C\u093C \u0915\u0940 \u0938\u0942\u091A\u0940 \u092A\u0930 \u091C\u093E\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F, \u0928\u0940\u091A\u0947 \u0935\u093E\u0932\u0940 \u0924\u0940\u0930 \u0915\u0941\u0902\u091C\u0940 \u0915\u094B \u0926\u092C\u093E\u090F\u0902
|
|
34
34
|
M_EASY_FILTER_SINGLE_VALUE_MESSAGE=\u0915\u0947\u0935\u0932 \u090F\u0915 \u0939\u0940 \u092E\u093E\u0928 \u0928\u093F\u092E\u094D\u0928\u0932\u093F\u0916\u093F\u0924 \u092A\u0930 \u0932\u093E\u0917\u0942 \u0915\u093F\u092F\u093E \u091C\u093E \u0938\u0915\u0924\u093E \u0939\u0948\: {0}
|
|
35
35
|
C_SHORTCUT_TITLE=\u0915\u0940\u092C\u094B\u0930\u094D\u0921 \u0936\u0949\u0930\u094D\u091F\u0915\u091F
|
|
36
36
|
C_SHORTCUT_PLACEHOLDER=\u090F\u0915 \u0915\u0940\u092C\u094B\u0930\u094D\u0921 \u0936\u0949\u0930\u094D\u091F\u0915\u091F \u0922\u0942\u0902\u0922\u0947\u0902
|
|
@@ -2,7 +2,7 @@ C_HISTORY_SETTING_TITLE=Storico
|
|
|
2
2
|
C_HISTORY_CLEAR_TXT=Cancella
|
|
3
3
|
C_HISTORY_CLOSE=Chiudi
|
|
4
4
|
M_EASY_FILTER_GO=Avvio
|
|
5
|
-
M_EASY_FILTER_PLACEHOLDER=
|
|
5
|
+
M_EASY_FILTER_PLACEHOLDER=Inserire la query utilizzando il linguaggio naturale per filtrare la lista
|
|
6
6
|
M_EASY_FILTER_POPOVER_OK=OK
|
|
7
7
|
M_EASY_FILTER_POPOVER_SHOW_ALL_ITEMS=Visualizza tutti gli elementi
|
|
8
8
|
M_EASY_FILTER_MANDATORY_TOKEN_ITEMS={0} valori
|
|
@@ -38,4 +38,4 @@ C_SHORTCUT_NODATA=Focus su una parte della schermata per visualizzare i tasti di
|
|
|
38
38
|
M_INLINE_EDIT_TOOLTIP_EDIT=Modifica
|
|
39
39
|
M_INLINE_EDIT_TOOLTIP_SAVE=Salva
|
|
40
40
|
M_INLINE_EDIT_TOOLTIP_CANCEL=Annulla
|
|
41
|
-
M_INLINE_EDIT_TOOLTIP_DOUBLECLICK_EDIT=
|
|
41
|
+
M_INLINE_EDIT_TOOLTIP_DOUBLECLICK_EDIT=Doppio clic per modificare
|
|
@@ -25,7 +25,7 @@ M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_DESCRIPTION=\u0414\u043E\u0434\u0430\u0439\
|
|
|
25
25
|
M_EASY_FILTER_POPOVER_EMPTY_RECENT_DESCRIPTION=\u0422\u0443\u0442 \u0431\u0443\u0434\u0443\u0442\u044C \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0456 \u0432\u0430\u0448\u0456 \u043E\u0441\u0442\u0430\u043D\u043D\u0456 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u0456 \u0437\u0430\u043F\u0438\u0442\u0438.
|
|
26
26
|
M_EASY_FILTER_POPOVER_AI_TITLE=\u0421\u0442\u0432\u043E\u0440\u0435\u043D\u043E \u0437\u0430 \u0434\u043E\u043F\u043E\u043C\u043E\u0433\u043E\u044E \u0428\u0406
|
|
27
27
|
M_EASY_FILTER_POPOVER_AI_TEXT_1=\u0412\u043C\u0456\u0441\u0442 \u0431\u0443\u043B\u043E \u0447\u0430\u0441\u0442\u043A\u043E\u0432\u043E \u0430\u0431\u043E \u043F\u043E\u0432\u043D\u0456\u0441\u0442\u044E \u0437\u0433\u0435\u043D\u0435\u0440\u043E\u0432\u0430\u043D\u043E \u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0456\u044F\u043C\u0438 \u0448\u0442\u0443\u0447\u043D\u043E\u0433\u043E \u0456\u043D\u0442\u0435\u043B\u0435\u043A\u0442\u0443 (\u0428\u0406).
|
|
28
|
-
M_EASY_FILTER_POPOVER_AI_TEXT_2=\
|
|
28
|
+
M_EASY_FILTER_POPOVER_AI_TEXT_2=\u0417\u043C\u0456\u0441\u0442, \u0437\u0433\u0435\u043D\u0435\u0440\u043E\u0432\u0430\u043D\u0438\u0439 \u0428\u0406, \u043C\u043E\u0436\u0435 \u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u043D\u0435\u0442\u043E\u0447\u043D\u043E\u0441\u0442\u0456 \u0447\u0435\u0440\u0435\u0437 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u043D\u044F \u043A\u0456\u043B\u044C\u043A\u043E\u0445 \u0434\u0436\u0435\u0440\u0435\u043B \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0457. \u041F\u0435\u0440\u0435\u0432\u0456\u0440\u0442\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0438 \u043F\u0435\u0440\u0435\u0434 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u043D\u044F\u043C.
|
|
29
29
|
M_EASY_FILTER_POPOVER_CLOSE=\u0417\u0430\u043A\u0440\u0438\u0442\u0438
|
|
30
30
|
M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=\u0411\u0435\u0437 \u043E\u0441\u0442\u0430\u043D\u043D\u0456\u0445 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u0438\u0445 \u0437\u0430\u043F\u0438\u0442\u0456\u0432
|
|
31
31
|
M_EASY_FILTER_FILLED_STAR=\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0437 \u0443\u043B\u044E\u0431\u043B\u0435\u043D\u0438\u0445
|
|
@@ -123,11 +123,14 @@ sap.ui.define(["sap/base/Log", "sap/base/security/encodeURL", "sap/fe/base/Class
|
|
|
123
123
|
this.instancePromise = new Promise(resolve => {
|
|
124
124
|
resolveCreation = resolve;
|
|
125
125
|
});
|
|
126
|
+
const appLifeCycle = await shellContainer.getServiceAsync("AppLifeCycle");
|
|
126
127
|
const extensionService = await shellContainer.getServiceAsync("Extension");
|
|
127
128
|
if (extensionService) {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
129
|
+
appLifeCycle?.attachAppLoaded({}, async () => {
|
|
130
|
+
const shellHistoryProvider = await ShortcutExplanationProvider.registerUserAction(extensionService);
|
|
131
|
+
this.instance = shellHistoryProvider;
|
|
132
|
+
resolveCreation(shellHistoryProvider);
|
|
133
|
+
}, this);
|
|
131
134
|
}
|
|
132
135
|
}
|
|
133
136
|
} catch (e) {
|
|
@@ -146,28 +149,33 @@ sap.ui.define(["sap/base/Log", "sap/base/security/encodeURL", "sap/fe/base/Class
|
|
|
146
149
|
try {
|
|
147
150
|
const resourceBundle = Lib.getResourceBundleFor("sap.fe.controls");
|
|
148
151
|
const shellHistoryDialog = new ShortcutExplanationProvider();
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
152
|
+
const userAction = await shellExtensionService.createUserAction({
|
|
153
|
+
id: "sapui5.shortcut.explanation.trigger",
|
|
154
|
+
text: resourceBundle.getText("C_SHORTCUT_TITLE"),
|
|
155
|
+
icon: IconPool.getIconURI("keyboard-and-mouse"),
|
|
156
|
+
press: () => {
|
|
157
|
+
shellHistoryDialog.getShellDialogContent();
|
|
158
|
+
}
|
|
159
|
+
}, {
|
|
160
|
+
controlType: "sap.m.Button"
|
|
161
|
+
});
|
|
162
|
+
// Store reference for cleanup when the iframe is reloaded/unloaded
|
|
163
|
+
this._userAction = userAction;
|
|
164
|
+
if (!this._cleanupAttached) {
|
|
165
|
+
this._cleanupAttached = true;
|
|
166
|
+
window.addEventListener("pagehide", () => {
|
|
167
|
+
this._userAction.destroy();
|
|
160
168
|
});
|
|
161
|
-
userAction.showForAllApps();
|
|
162
169
|
}
|
|
170
|
+
userAction.showForCurrentApp();
|
|
163
171
|
return shellHistoryDialog;
|
|
164
172
|
} catch (err) {
|
|
165
173
|
Log.error("Cannot add user action", err instanceof Error ? err.message : String(err));
|
|
166
174
|
}
|
|
167
175
|
};
|
|
168
176
|
return ShortcutExplanationProvider;
|
|
169
|
-
}(ManagedObject), _ShortcutExplanationProvider.isDialogAdded = false, _ShortcutExplanationProvider)) || _class);
|
|
177
|
+
}(ManagedObject), _ShortcutExplanationProvider.isDialogAdded = false, _ShortcutExplanationProvider._cleanupAttached = false, _ShortcutExplanationProvider)) || _class);
|
|
170
178
|
_exports = ShortcutExplanationProvider;
|
|
171
179
|
return _exports;
|
|
172
180
|
}, false);
|
|
173
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfY2xhc3MiLCJfU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIiwiX01hbmFnZWRPYmplY3QiLCJfdGhpcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsIl9wb3B1cElkeCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRTaGVsbERpYWxvZ0NvbnRlbnQiLCJ3aW5kb3dXaWR0aCIsImxlZnQiLCJ3aW5kb3ciLCJzY3JlZW5MZWZ0Iiwib3V0ZXJXaWR0aCIsInNjcmVlbiIsImF2YWlsV2lkdGgiLCJ0aGVtZSIsIlRoZW1pbmciLCJnZXRUaGVtZSIsIl9zYW5pdGl6ZVRoZW1lIiwidXJsIiwic2FwIiwidWkiLCJyZXF1aXJlIiwidG9VcmwiLCJsb2NhbE9yaWdpbiIsImxvY2F0aW9uIiwicHJvdG9jb2wiLCJob3N0IiwicGFyYW1zIiwiZW5jb2RlVVJMIiwibXlXaW4iLCJvcGVuIiwic2NyZWVuVG9wIiwiaGFuZGxlTWVzc2FnZVJlY2VpdmVkIiwibWVzc2FnZUV2ZW50Iiwib3JpZ2luIiwibWVzc2FnZURhdGEiLCJkYXRhIiwic2VydmljZSIsIm1lc3NhZ2VQb3J0IiwicG9ydHMiLCJwb3N0TWVzc2FnZSIsInN0YXJ0c1dpdGgiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwib3BlbmVyIiwiZSIsIkxvZyIsImRlYnVnIiwiRXJyb3IiLCJtZXNzYWdlIiwiU3RyaW5nIiwic2V0VGltZW91dCIsImFkZEV2ZW50TGlzdGVuZXIiLCJpZCIsIm9udW5sb2FkIiwiY2xvc2UiLCJjb21wdXRlZFN0eWxlcyIsImdldENvbXB1dGVkU3R5bGUiLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsImdldFByb3BlcnR5VmFsdWUiLCJ0aGVtZU1ldGFkYXRhIiwidGhlbWVNYXRjaCIsIkpTT04iLCJwYXJzZSIsIkV4dGVuZHMiLCJpbmZvIiwiZ2V0SW5zdGFuY2UiLCJzaGVsbENvbnRhaW5lciIsInJlc29sdmVDcmVhdGlvbiIsImluc3RhbmNlIiwiaW5zdGFuY2VQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJleHRlbnNpb25TZXJ2aWNlIiwiZ2V0U2VydmljZUFzeW5jIiwic2hlbGxIaXN0b3J5UHJvdmlkZXIiLCJyZWdpc3RlclVzZXJBY3Rpb24iLCJlcnJvciIsInVuZGVmaW5lZCIsInNoZWxsRXh0ZW5zaW9uU2VydmljZSIsInJlc291cmNlQnVuZGxlIiwiTGliIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJzaGVsbEhpc3RvcnlEaWFsb2ciLCJpc0RpYWxvZ0FkZGVkIiwidXNlckFjdGlvbiIsImNyZWF0ZVVzZXJBY3Rpb24iLCJ0ZXh0IiwiZ2V0VGV4dCIsImljb24iLCJJY29uUG9vbCIsImdldEljb25VUkkiLCJwcmVzcyIsImNvbnRyb2xUeXBlIiwic2hvd0ZvckFsbEFwcHMiLCJlcnIiLCJNYW5hZ2VkT2JqZWN0Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGVuY29kZVVSTCBmcm9tIFwic2FwL2Jhc2Uvc2VjdXJpdHkvZW5jb2RlVVJMXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgSWNvblBvb2wgZnJvbSBcInNhcC91aS9jb3JlL0ljb25Qb29sXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCBUaGVtaW5nIGZyb20gXCJzYXAvdWkvY29yZS9UaGVtaW5nXCI7XG5pbXBvcnQgdHlwZSBDb250YWluZXIgZnJvbSBcInNhcC91c2hlbGwvQ29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBFeHRlbnNpb24gZnJvbSBcInNhcC91c2hlbGwvc2VydmljZXMvRXh0ZW5zaW9uXCI7XG5cbi8qKlxuICogUHJvdmlkZXMgYSBkaWFsb2cgdG8gZXhwbGFpbiB0aGUgc2hvcnRjdXRzIHRvIHRoZSB1c2VyLlxuICogVGhpcyBkaWFsb2cgd2lsbCBiZSByZWdpc3RlcmVkIGluIHRoZSBzaGVsbCB1c2VyIG1lbnUgYW5kIHdpbGwgb3BlbiBhcyBhbiBpbmRlcGVuZGVudCB3aW5kb3cuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb250cm9scy5zaG9ydGN1dHMuU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIgZXh0ZW5kcyBNYW5hZ2VkT2JqZWN0IHtcblx0cHJpdmF0ZSBfcG9wdXBJZHggPSAwO1xuXG5cdGdldFNoZWxsRGlhbG9nQ29udGVudCgpOiB2b2lkIHtcblx0XHQvLyBQb3NpdGlvbiB0byB0b3AgcmlnaHQgb2YgdGhlIG1haW4gd2luZG93IGlmIHBvc3NpYmxlXG5cdFx0Y29uc3Qgd2luZG93V2lkdGggPSA2MjA7XG5cdFx0bGV0IGxlZnQgPSB3aW5kb3cuc2NyZWVuTGVmdCArIHdpbmRvdy5vdXRlcldpZHRoO1xuXHRcdGlmIChsZWZ0ICsgd2luZG93V2lkdGggPiB3aW5kb3cuc2NyZWVuLmF2YWlsV2lkdGgpIHtcblx0XHRcdGxlZnQgPSB3aW5kb3cuc2NyZWVuLmF2YWlsV2lkdGggLSB3aW5kb3dXaWR0aDtcblx0XHR9XG5cdFx0bGV0IHRoZW1lID0gVGhlbWluZy5nZXRUaGVtZSgpO1xuXHRcdHRoZW1lID0gdGhpcy5fc2FuaXRpemVUaGVtZSh0aGVtZSk7XG5cdFx0Y29uc3QgdXJsID0gc2FwLnVpLnJlcXVpcmUudG9VcmwoXCJzYXAvZmUvY29udHJvbHMvc2hvcnRjdXRzL3BvcHVwL2luZGV4Lmh0bWxcIik7XG5cdFx0Y29uc3QgbG9jYWxPcmlnaW4gPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyBcIi8vXCIgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcblx0XHQvLyBXZSBwYXNzIHRoZSB0aGVtZSBhbmQgdGhlIG9yaWdpbiB0byB0aGUgcG9wdXAgc28gdGhhdCBpdCBjYW4gY29tbXVuaWNhdGUgc2FmZWx5IHdpdGggdGhlIHBhcmVudFxuXHRcdGNvbnN0IHBhcmFtcyA9IFwiP3NhcC11aS14eC1zaG9ydGN1dC1vcmlnaW49XCIgKyBlbmNvZGVVUkwobG9jYWxPcmlnaW4pICsgXCImc2FwLXVpLXRoZW1lPVwiICsgdGhlbWU7XG5cdFx0Y29uc3QgbXlXaW4gPSB3aW5kb3cub3Blbihcblx0XHRcdHVybCArIHBhcmFtcyxcblx0XHRcdFwiX2JsYW5rXCIsXG5cdFx0XHRgcG9wdXAsdG9vbGJhcj1ubyxtZW51YmFyPW5vLHNjcm9sbGJhcnM9bm8sbG9jYXRpb249bm8sd2lkdGg9JHt3aW5kb3dXaWR0aH0saGVpZ2h0PTU1MCx0b3A9JHt3aW5kb3cuc2NyZWVuVG9wfSxsZWZ0PSR7bGVmdH1gXG5cdFx0KTtcblx0XHRpZiAobXlXaW4pIHtcblx0XHRcdGNvbnN0IGhhbmRsZU1lc3NhZ2VSZWNlaXZlZCA9IChtZXNzYWdlRXZlbnQ6IE1lc3NhZ2VFdmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRpZiAobG9jYWxPcmlnaW4gPT09IG1lc3NhZ2VFdmVudC5vcmlnaW4pIHtcblx0XHRcdFx0XHRjb25zdCBtZXNzYWdlRGF0YSA9IG1lc3NhZ2VFdmVudD8uZGF0YTtcblx0XHRcdFx0XHRpZiAobWVzc2FnZURhdGEuc2VydmljZSA9PT0gXCJzYXAudWkuaW50ZXJhY3Rpb24uTWVzc2FnZVBvcnRSZWFkeVwiKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBtZXNzYWdlUG9ydCA9IG1lc3NhZ2VFdmVudC5wb3J0c1swXTsgLy8gUmVtZW1iZXIgdGhlIHBvcnRcblx0XHRcdFx0XHRcdG15V2luLnBvc3RNZXNzYWdlKHsgc2VydmljZTogXCJzYXAudWkuaW50ZXJhY3Rpb24uTWVzc2FnZVBvcnRSZWFkeVwiIH0sIHVybC5zdGFydHNXaXRoKFwiL1wiKSA/IGxvY2FsT3JpZ2luIDogdXJsLCBbXG5cdFx0XHRcdFx0XHRcdG1lc3NhZ2VQb3J0XG5cdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVNZXNzYWdlUmVjZWl2ZWQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdG15V2luLm9wZW5lciA9IG51bGw7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdC8vIFRoaXMgbWlnaHQgZmFpbCB3aGVuIHRoZXJlIGlzIENPUlMgaW52b2x2ZWQgYW55d2F5IGFuZCB3ZSBjYW4ndCBhY2Nlc3MgdGhlIG9wZW5lciBhbnl3YXlcblx0XHRcdFx0TG9nLmRlYnVnKFwiQ2Fubm90IHNldCBvcGVuZXIgdG8gbnVsbFwiLCBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSkpO1xuXHRcdFx0fVxuXG5cdFx0XHRzZXRUaW1lb3V0KCgpOiB2b2lkID0+IHtcblx0XHRcdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGhhbmRsZU1lc3NhZ2VSZWNlaXZlZCk7XG5cdFx0XHRcdHdpbmRvdy5wb3N0TWVzc2FnZShcblx0XHRcdFx0XHR7IGlkOiBcInNhcC5mZS5pbnRlcmFjdGlvbi5Qb3B1cFwiICsgdGhpcy5fcG9wdXBJZHgrKywgc2VydmljZTogXCJzYXAudWkuaW50ZXJhY3Rpb24uUmVxdWVzdE1lc3NhZ2VQb3J0XCIgfSxcblx0XHRcdFx0XHRsb2NhbE9yaWdpblxuXHRcdFx0XHQpO1xuXHRcdFx0fSwgMTUwMCk7IC8vIGdpdmUgYSBiaXQgb2YgdGltZSBmb3IgdGhlIHBvcHVwIHRvIGJlIHJlYWR5XG5cdFx0XHQvLyBXZSBjYW4ndCByZWx5IG9uIHRoZSBvbmxvYWQgb2YgdGhlIHBvcHVwIGJlY2F1c2UgaXQgaXMgbm90IGFsd2F5cyBhdmFpbGJsZSBpbiBDT1JTIHNjZW5hcmlvc1xuXHRcdFx0d2luZG93Lm9udW5sb2FkID0gZnVuY3Rpb24gKCk6IHZvaWQge1xuXHRcdFx0XHRteVdpbi5jbG9zZSgpO1xuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2FuaXRpemVzIHRoZSB0aGVtZSBuYW1lIHRvIGVuc3VyZSBpdCBzdGFydHMgd2l0aCBcInNhcC1cIi5cblx0ICogSWYgdGhlIHRoZW1lIGRvZXMgbm90IHN0YXJ0IHdpdGggXCJzYXAtXCIsIGl0IHRyaWVzIHRvIGdldCB0aGUgdGhlbWUgZnJvbSB0aGUgY29tcHV0ZWQgc3R5bGVzLlxuXHQgKiBJZiBpdCBzdGlsbCBkb2VzIG5vdCBmaW5kIGEgdmFsaWQgdGhlbWUsIGl0IGRlZmF1bHRzIHRvIFwic2FwX2hvcml6b25cIi5cblx0ICogVGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUgcG9wdXAgYWx3YXlzIHVzZXMgYSB2YWxpZCB0aGVtZS5cblx0ICogQHBhcmFtIHRoZW1lIFRoZSB0aGVtZSBuYW1lIHRvIHNhbml0aXplXG5cdCAqIEByZXR1cm5zIFRoZSBzYW5pdGl6ZWQgdGhlbWUgbmFtZVxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0cHJpdmF0ZSBfc2FuaXRpemVUaGVtZSh0aGVtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRpZiAoIXRoZW1lLnN0YXJ0c1dpdGgoXCJzYXBfXCIpKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBjb21wdXRlZFN0eWxlcyA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTtcblx0XHRcdFx0dGhlbWUgPSBjb21wdXRlZFN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1zYXBTYXBUaGVtZUlkXCIpO1xuXHRcdFx0XHRpZiAoIXRoZW1lKSB7XG5cdFx0XHRcdFx0Y29uc3QgdGhlbWVNZXRhZGF0YSA9IGNvbXB1dGVkU3R5bGVzLmdldFByb3BlcnR5VmFsdWUoXCItLXNhcFRoZW1lTWV0YURhdGEtVUk1LXNhcC11aS1jb3JlXCIpO1xuXHRcdFx0XHRcdGlmICh0aGVtZU1ldGFkYXRhKSB7XG5cdFx0XHRcdFx0XHRjb25zdCB0aGVtZU1hdGNoID0gSlNPTi5wYXJzZSh0aGVtZU1ldGFkYXRhKTtcblx0XHRcdFx0XHRcdGlmICh0aGVtZU1hdGNoICYmIHRoZW1lTWF0Y2guRXh0ZW5kcyAmJiB0aGVtZU1hdGNoLkV4dGVuZHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0XHR0aGVtZSA9IHRoZW1lTWF0Y2guRXh0ZW5kc1swXTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0TG9nLmluZm8oXCJDYW5ub3QgZ2V0IHRoZW1lIGZyb20gY29tcHV0ZWQgc3R5bGVzXCIsIGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFN0cmluZyhlKSk7XG5cdFx0XHRcdHRoZW1lID0gXCJzYXBfaG9yaXpvblwiO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCF0aGVtZSB8fCAhdGhlbWUuc3RhcnRzV2l0aChcInNhcF9cIikpIHtcblx0XHRcdFx0Ly8gRmluYWwgZmFsbGJhY2sgdG8gc2FwX2hvcml6b25cblx0XHRcdFx0dGhlbWUgPSBcInNhcF9ob3Jpem9uXCI7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0aGVtZTtcblx0fVxuXG5cdHN0YXRpYyBpbnN0YW5jZVByb21pc2U6IFByb21pc2U8U2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIHwgdW5kZWZpbmVkPjtcblxuXHRzdGF0aWMgaW5zdGFuY2U6IFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlciB8IHVuZGVmaW5lZDtcblxuXHRzdGF0aWMgaXNEaWFsb2dBZGRlZCA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIG9yIHJldHVybnMgdGhlIGluc3RhbmNlIG9mIHRoZSBTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIuXG5cdCAqIFRoaXMgaXMgYSBzaW5nbGV0b24gdG8gZW5zdXJlIHdlIG9ubHkgaGF2ZSBvbmUgaW5zdGFuY2Ugb2YgdGhlIGRpYWxvZy5cblx0ICogQHJldHVybnMgVGhlIGluc3RhbmNlIG9mIHRoZSBTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXJcblx0ICovXG5cdHN0YXRpYyBhc3luYyBnZXRJbnN0YW5jZSgpOiBQcm9taXNlPFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlciB8IHVuZGVmaW5lZD4ge1xuXHRcdC8vIFRlc3QgdGhlIHNoZWxsIGV4aXN0ZW5jZSBhbmQgcmVnaXN0ZXIgdGhlIGV4dGVuc2lvblxuXHRcdGNvbnN0IHNoZWxsQ29udGFpbmVyID0gc2FwLnVpLnJlcXVpcmUoXCJzYXAvdXNoZWxsL0NvbnRhaW5lclwiKSBhcyBDb250YWluZXIgfCB1bmRlZmluZWQ7XG5cdFx0bGV0IHJlc29sdmVDcmVhdGlvbjogRnVuY3Rpb24gfCB1bmRlZmluZWQ7XG5cdFx0dHJ5IHtcblx0XHRcdGlmIChzaGVsbENvbnRhaW5lciAmJiAhdGhpcy5pbnN0YW5jZSkge1xuXHRcdFx0XHR0aGlzLmluc3RhbmNlUHJvbWlzZSA9IG5ldyBQcm9taXNlPFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlciB8IHVuZGVmaW5lZD4oKHJlc29sdmUpID0+IHtcblx0XHRcdFx0XHRyZXNvbHZlQ3JlYXRpb24gPSByZXNvbHZlO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0Y29uc3QgZXh0ZW5zaW9uU2VydmljZSA9IChhd2FpdCBzaGVsbENvbnRhaW5lci5nZXRTZXJ2aWNlQXN5bmMoXCJFeHRlbnNpb25cIikpIGFzIEV4dGVuc2lvbiB8IHVuZGVmaW5lZDtcblx0XHRcdFx0aWYgKGV4dGVuc2lvblNlcnZpY2UpIHtcblx0XHRcdFx0XHRjb25zdCBzaGVsbEhpc3RvcnlQcm92aWRlciA9IGF3YWl0IFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlci5yZWdpc3RlclVzZXJBY3Rpb24oZXh0ZW5zaW9uU2VydmljZSk7XG5cdFx0XHRcdFx0dGhpcy5pbnN0YW5jZSA9IHNoZWxsSGlzdG9yeVByb3ZpZGVyO1xuXHRcdFx0XHRcdHJlc29sdmVDcmVhdGlvbiEoc2hlbGxIaXN0b3J5UHJvdmlkZXIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TG9nLmVycm9yKFwiQ2Fubm90IHJlZ2lzdGVyIGV4dGVuc2lvblwiLCBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSkpO1xuXHRcdFx0cmVzb2x2ZUNyZWF0aW9uPy4odW5kZWZpbmVkKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuaW5zdGFuY2VQcm9taXNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgdGhlIHVzZXIgYWN0aW9uIHRvIHRoZSBzaGVsbCwgdGhlIGFjdGlvbiB3aWxsIG9wZW4gdGhlIGRpYWxvZyB3aXRoIHRoZSBzaG9ydGN1dHMuXG5cdCAqIEBwYXJhbSBzaGVsbEV4dGVuc2lvblNlcnZpY2UgVGhlIGV4dGVuc2lvbiBzZXJ2aWNlIHRvIGFkZCB0aGUgdXNlciBhY3Rpb24gdG8gdGhlIHNoZWxsXG5cdCAqIEByZXR1cm5zIFRoZSBkaWFsb2cgd2l0aCB0aGUgc2hvcnRjdXRzXG5cdCAqL1xuXHRzdGF0aWMgYXN5bmMgcmVnaXN0ZXJVc2VyQWN0aW9uKHNoZWxsRXh0ZW5zaW9uU2VydmljZTogRXh0ZW5zaW9uKTogUHJvbWlzZTxTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIgfCB1bmRlZmluZWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXG5cdFx0XHRjb25zdCBzaGVsbEhpc3RvcnlEaWFsb2cgPSBuZXcgU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyKCk7XG5cdFx0XHRpZiAoIXRoaXMuaXNEaWFsb2dBZGRlZCkge1xuXHRcdFx0XHR0aGlzLmlzRGlhbG9nQWRkZWQgPSB0cnVlO1xuXHRcdFx0XHRjb25zdCB1c2VyQWN0aW9uID0gYXdhaXQgc2hlbGxFeHRlbnNpb25TZXJ2aWNlLmNyZWF0ZVVzZXJBY3Rpb24oXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aWQ6IFwic2FwdWk1LnNob3J0Y3V0LmV4cGxhbmF0aW9uLnRyaWdnZXJcIixcblx0XHRcdFx0XHRcdHRleHQ6IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1NIT1JUQ1VUX1RJVExFXCIpLFxuXHRcdFx0XHRcdFx0aWNvbjogSWNvblBvb2wuZ2V0SWNvblVSSShcImtleWJvYXJkLWFuZC1tb3VzZVwiKSxcblx0XHRcdFx0XHRcdHByZXNzOiAoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHNoZWxsSGlzdG9yeURpYWxvZy5nZXRTaGVsbERpYWxvZ0NvbnRlbnQoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGNvbnRyb2xUeXBlOiBcInNhcC5tLkJ1dHRvblwiXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0XHR1c2VyQWN0aW9uLnNob3dGb3JBbGxBcHBzKCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gc2hlbGxIaXN0b3J5RGlhbG9nO1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0TG9nLmVycm9yKFwiQ2Fubm90IGFkZCB1c2VyIGFjdGlvblwiLCBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycikpO1xuXHRcdH1cblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7RUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBSkEsSUFNcUJBLDJCQUEyQixJQUFBQyxJQUFBLEdBRC9DQyxjQUFjLENBQUMsdURBQXVE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
|
|
181
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfY2xhc3MiLCJfU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIiwiX01hbmFnZWRPYmplY3QiLCJfdGhpcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsIl9wb3B1cElkeCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRTaGVsbERpYWxvZ0NvbnRlbnQiLCJ3aW5kb3dXaWR0aCIsImxlZnQiLCJ3aW5kb3ciLCJzY3JlZW5MZWZ0Iiwib3V0ZXJXaWR0aCIsInNjcmVlbiIsImF2YWlsV2lkdGgiLCJ0aGVtZSIsIlRoZW1pbmciLCJnZXRUaGVtZSIsIl9zYW5pdGl6ZVRoZW1lIiwidXJsIiwic2FwIiwidWkiLCJyZXF1aXJlIiwidG9VcmwiLCJsb2NhbE9yaWdpbiIsImxvY2F0aW9uIiwicHJvdG9jb2wiLCJob3N0IiwicGFyYW1zIiwiZW5jb2RlVVJMIiwibXlXaW4iLCJvcGVuIiwic2NyZWVuVG9wIiwiaGFuZGxlTWVzc2FnZVJlY2VpdmVkIiwibWVzc2FnZUV2ZW50Iiwib3JpZ2luIiwibWVzc2FnZURhdGEiLCJkYXRhIiwic2VydmljZSIsIm1lc3NhZ2VQb3J0IiwicG9ydHMiLCJwb3N0TWVzc2FnZSIsInN0YXJ0c1dpdGgiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwib3BlbmVyIiwiZSIsIkxvZyIsImRlYnVnIiwiRXJyb3IiLCJtZXNzYWdlIiwiU3RyaW5nIiwic2V0VGltZW91dCIsImFkZEV2ZW50TGlzdGVuZXIiLCJpZCIsIm9udW5sb2FkIiwiY2xvc2UiLCJjb21wdXRlZFN0eWxlcyIsImdldENvbXB1dGVkU3R5bGUiLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsImdldFByb3BlcnR5VmFsdWUiLCJ0aGVtZU1ldGFkYXRhIiwidGhlbWVNYXRjaCIsIkpTT04iLCJwYXJzZSIsIkV4dGVuZHMiLCJpbmZvIiwiZ2V0SW5zdGFuY2UiLCJzaGVsbENvbnRhaW5lciIsInJlc29sdmVDcmVhdGlvbiIsImluc3RhbmNlIiwiaW5zdGFuY2VQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJhcHBMaWZlQ3ljbGUiLCJnZXRTZXJ2aWNlQXN5bmMiLCJleHRlbnNpb25TZXJ2aWNlIiwiYXR0YWNoQXBwTG9hZGVkIiwic2hlbGxIaXN0b3J5UHJvdmlkZXIiLCJyZWdpc3RlclVzZXJBY3Rpb24iLCJlcnJvciIsInVuZGVmaW5lZCIsInNoZWxsRXh0ZW5zaW9uU2VydmljZSIsInJlc291cmNlQnVuZGxlIiwiTGliIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJzaGVsbEhpc3RvcnlEaWFsb2ciLCJ1c2VyQWN0aW9uIiwiY3JlYXRlVXNlckFjdGlvbiIsInRleHQiLCJnZXRUZXh0IiwiaWNvbiIsIkljb25Qb29sIiwiZ2V0SWNvblVSSSIsInByZXNzIiwiY29udHJvbFR5cGUiLCJfdXNlckFjdGlvbiIsIl9jbGVhbnVwQXR0YWNoZWQiLCJkZXN0cm95Iiwic2hvd0ZvckN1cnJlbnRBcHAiLCJlcnIiLCJNYW5hZ2VkT2JqZWN0IiwiaXNEaWFsb2dBZGRlZCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBlbmNvZGVVUkwgZnJvbSBcInNhcC9iYXNlL3NlY3VyaXR5L2VuY29kZVVSTFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IEljb25Qb29sIGZyb20gXCJzYXAvdWkvY29yZS9JY29uUG9vbFwiO1xuaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgVGhlbWluZyBmcm9tIFwic2FwL3VpL2NvcmUvVGhlbWluZ1wiO1xuaW1wb3J0IHR5cGUgQ29udGFpbmVyIGZyb20gXCJzYXAvdXNoZWxsL0NvbnRhaW5lclwiO1xuaW1wb3J0IHR5cGUgQXBwTGlmZUN5Y2xlIGZyb20gXCJzYXAvdXNoZWxsL3NlcnZpY2VzL0FwcExpZmVDeWNsZVwiO1xuaW1wb3J0IHR5cGUgRXh0ZW5zaW9uIGZyb20gXCJzYXAvdXNoZWxsL3NlcnZpY2VzL0V4dGVuc2lvblwiO1xuaW1wb3J0IHR5cGUgSXRlbSBmcm9tIFwic2FwL3VzaGVsbC9zZXJ2aWNlcy9FeHRlbnNpb24vSXRlbVwiO1xuXG4vKipcbiAqIFByb3ZpZGVzIGEgZGlhbG9nIHRvIGV4cGxhaW4gdGhlIHNob3J0Y3V0cyB0byB0aGUgdXNlci5cbiAqIFRoaXMgZGlhbG9nIHdpbGwgYmUgcmVnaXN0ZXJlZCBpbiB0aGUgc2hlbGwgdXNlciBtZW51IGFuZCB3aWxsIG9wZW4gYXMgYW4gaW5kZXBlbmRlbnQgd2luZG93LlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29udHJvbHMuc2hvcnRjdXRzLlNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlclwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIGV4dGVuZHMgTWFuYWdlZE9iamVjdCB7XG5cdHByaXZhdGUgX3BvcHVwSWR4ID0gMDtcblxuXHRnZXRTaGVsbERpYWxvZ0NvbnRlbnQoKTogdm9pZCB7XG5cdFx0Ly8gUG9zaXRpb24gdG8gdG9wIHJpZ2h0IG9mIHRoZSBtYWluIHdpbmRvdyBpZiBwb3NzaWJsZVxuXHRcdGNvbnN0IHdpbmRvd1dpZHRoID0gNjIwO1xuXHRcdGxldCBsZWZ0ID0gd2luZG93LnNjcmVlbkxlZnQgKyB3aW5kb3cub3V0ZXJXaWR0aDtcblx0XHRpZiAobGVmdCArIHdpbmRvd1dpZHRoID4gd2luZG93LnNjcmVlbi5hdmFpbFdpZHRoKSB7XG5cdFx0XHRsZWZ0ID0gd2luZG93LnNjcmVlbi5hdmFpbFdpZHRoIC0gd2luZG93V2lkdGg7XG5cdFx0fVxuXHRcdGxldCB0aGVtZSA9IFRoZW1pbmcuZ2V0VGhlbWUoKTtcblx0XHR0aGVtZSA9IHRoaXMuX3Nhbml0aXplVGhlbWUodGhlbWUpO1xuXHRcdGNvbnN0IHVybCA9IHNhcC51aS5yZXF1aXJlLnRvVXJsKFwic2FwL2ZlL2NvbnRyb2xzL3Nob3J0Y3V0cy9wb3B1cC9pbmRleC5odG1sXCIpO1xuXHRcdGNvbnN0IGxvY2FsT3JpZ2luID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgXCIvL1wiICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XG5cdFx0Ly8gV2UgcGFzcyB0aGUgdGhlbWUgYW5kIHRoZSBvcmlnaW4gdG8gdGhlIHBvcHVwIHNvIHRoYXQgaXQgY2FuIGNvbW11bmljYXRlIHNhZmVseSB3aXRoIHRoZSBwYXJlbnRcblx0XHRjb25zdCBwYXJhbXMgPSBcIj9zYXAtdWkteHgtc2hvcnRjdXQtb3JpZ2luPVwiICsgZW5jb2RlVVJMKGxvY2FsT3JpZ2luKSArIFwiJnNhcC11aS10aGVtZT1cIiArIHRoZW1lO1xuXHRcdGNvbnN0IG15V2luID0gd2luZG93Lm9wZW4oXG5cdFx0XHR1cmwgKyBwYXJhbXMsXG5cdFx0XHRcIl9ibGFua1wiLFxuXHRcdFx0YHBvcHVwLHRvb2xiYXI9bm8sbWVudWJhcj1ubyxzY3JvbGxiYXJzPW5vLGxvY2F0aW9uPW5vLHdpZHRoPSR7d2luZG93V2lkdGh9LGhlaWdodD01NTAsdG9wPSR7d2luZG93LnNjcmVlblRvcH0sbGVmdD0ke2xlZnR9YFxuXHRcdCk7XG5cdFx0aWYgKG15V2luKSB7XG5cdFx0XHRjb25zdCBoYW5kbGVNZXNzYWdlUmVjZWl2ZWQgPSAobWVzc2FnZUV2ZW50OiBNZXNzYWdlRXZlbnQpOiB2b2lkID0+IHtcblx0XHRcdFx0aWYgKGxvY2FsT3JpZ2luID09PSBtZXNzYWdlRXZlbnQub3JpZ2luKSB7XG5cdFx0XHRcdFx0Y29uc3QgbWVzc2FnZURhdGEgPSBtZXNzYWdlRXZlbnQ/LmRhdGE7XG5cdFx0XHRcdFx0aWYgKG1lc3NhZ2VEYXRhLnNlcnZpY2UgPT09IFwic2FwLnVpLmludGVyYWN0aW9uLk1lc3NhZ2VQb3J0UmVhZHlcIikge1xuXHRcdFx0XHRcdFx0Y29uc3QgbWVzc2FnZVBvcnQgPSBtZXNzYWdlRXZlbnQucG9ydHNbMF07IC8vIFJlbWVtYmVyIHRoZSBwb3J0XG5cdFx0XHRcdFx0XHRteVdpbi5wb3N0TWVzc2FnZSh7IHNlcnZpY2U6IFwic2FwLnVpLmludGVyYWN0aW9uLk1lc3NhZ2VQb3J0UmVhZHlcIiB9LCB1cmwuc3RhcnRzV2l0aChcIi9cIikgPyBsb2NhbE9yaWdpbiA6IHVybCwgW1xuXHRcdFx0XHRcdFx0XHRtZXNzYWdlUG9ydFxuXHRcdFx0XHRcdFx0XSk7XG5cdFx0XHRcdFx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgaGFuZGxlTWVzc2FnZVJlY2VpdmVkKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRteVdpbi5vcGVuZXIgPSBudWxsO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHQvLyBUaGlzIG1pZ2h0IGZhaWwgd2hlbiB0aGVyZSBpcyBDT1JTIGludm9sdmVkIGFueXdheSBhbmQgd2UgY2FuJ3QgYWNjZXNzIHRoZSBvcGVuZXIgYW55d2F5XG5cdFx0XHRcdExvZy5kZWJ1ZyhcIkNhbm5vdCBzZXQgb3BlbmVyIHRvIG51bGxcIiwgZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpKTtcblx0XHRcdH1cblxuXHRcdFx0c2V0VGltZW91dCgoKTogdm9pZCA9PiB7XG5cdFx0XHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVNZXNzYWdlUmVjZWl2ZWQpO1xuXHRcdFx0XHR3aW5kb3cucG9zdE1lc3NhZ2UoXG5cdFx0XHRcdFx0eyBpZDogXCJzYXAuZmUuaW50ZXJhY3Rpb24uUG9wdXBcIiArIHRoaXMuX3BvcHVwSWR4KyssIHNlcnZpY2U6IFwic2FwLnVpLmludGVyYWN0aW9uLlJlcXVlc3RNZXNzYWdlUG9ydFwiIH0sXG5cdFx0XHRcdFx0bG9jYWxPcmlnaW5cblx0XHRcdFx0KTtcblx0XHRcdH0sIDE1MDApOyAvLyBnaXZlIGEgYml0IG9mIHRpbWUgZm9yIHRoZSBwb3B1cCB0byBiZSByZWFkeVxuXHRcdFx0Ly8gV2UgY2FuJ3QgcmVseSBvbiB0aGUgb25sb2FkIG9mIHRoZSBwb3B1cCBiZWNhdXNlIGl0IGlzIG5vdCBhbHdheXMgYXZhaWxibGUgaW4gQ09SUyBzY2VuYXJpb3Ncblx0XHRcdHdpbmRvdy5vbnVubG9hZCA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcblx0XHRcdFx0bXlXaW4uY2xvc2UoKTtcblx0XHRcdH07XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNhbml0aXplcyB0aGUgdGhlbWUgbmFtZSB0byBlbnN1cmUgaXQgc3RhcnRzIHdpdGggXCJzYXAtXCIuXG5cdCAqIElmIHRoZSB0aGVtZSBkb2VzIG5vdCBzdGFydCB3aXRoIFwic2FwLVwiLCBpdCB0cmllcyB0byBnZXQgdGhlIHRoZW1lIGZyb20gdGhlIGNvbXB1dGVkIHN0eWxlcy5cblx0ICogSWYgaXQgc3RpbGwgZG9lcyBub3QgZmluZCBhIHZhbGlkIHRoZW1lLCBpdCBkZWZhdWx0cyB0byBcInNhcF9ob3Jpem9uXCIuXG5cdCAqIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIHBvcHVwIGFsd2F5cyB1c2VzIGEgdmFsaWQgdGhlbWUuXG5cdCAqIEBwYXJhbSB0aGVtZSBUaGUgdGhlbWUgbmFtZSB0byBzYW5pdGl6ZVxuXHQgKiBAcmV0dXJucyBUaGUgc2FuaXRpemVkIHRoZW1lIG5hbWVcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHByaXZhdGUgX3Nhbml0aXplVGhlbWUodGhlbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0aWYgKCF0aGVtZS5zdGFydHNXaXRoKFwic2FwX1wiKSkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgY29tcHV0ZWRTdHlsZXMgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7XG5cdFx0XHRcdHRoZW1lID0gY29tcHV0ZWRTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZShcIi0tc2FwU2FwVGhlbWVJZFwiKTtcblx0XHRcdFx0aWYgKCF0aGVtZSkge1xuXHRcdFx0XHRcdGNvbnN0IHRoZW1lTWV0YWRhdGEgPSBjb21wdXRlZFN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1zYXBUaGVtZU1ldGFEYXRhLVVJNS1zYXAtdWktY29yZVwiKTtcblx0XHRcdFx0XHRpZiAodGhlbWVNZXRhZGF0YSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgdGhlbWVNYXRjaCA9IEpTT04ucGFyc2UodGhlbWVNZXRhZGF0YSk7XG5cdFx0XHRcdFx0XHRpZiAodGhlbWVNYXRjaCAmJiB0aGVtZU1hdGNoLkV4dGVuZHMgJiYgdGhlbWVNYXRjaC5FeHRlbmRzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdFx0dGhlbWUgPSB0aGVtZU1hdGNoLkV4dGVuZHNbMF07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdExvZy5pbmZvKFwiQ2Fubm90IGdldCB0aGVtZSBmcm9tIGNvbXB1dGVkIHN0eWxlc1wiLCBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSkpO1xuXHRcdFx0XHR0aGVtZSA9IFwic2FwX2hvcml6b25cIjtcblx0XHRcdH1cblx0XHRcdGlmICghdGhlbWUgfHwgIXRoZW1lLnN0YXJ0c1dpdGgoXCJzYXBfXCIpKSB7XG5cdFx0XHRcdC8vIEZpbmFsIGZhbGxiYWNrIHRvIHNhcF9ob3Jpem9uXG5cdFx0XHRcdHRoZW1lID0gXCJzYXBfaG9yaXpvblwiO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdGhlbWU7XG5cdH1cblxuXHRzdGF0aWMgaW5zdGFuY2VQcm9taXNlOiBQcm9taXNlPFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlciB8IHVuZGVmaW5lZD47XG5cblx0c3RhdGljIGluc3RhbmNlOiBTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIgfCB1bmRlZmluZWQ7XG5cblx0c3RhdGljIGlzRGlhbG9nQWRkZWQgPSBmYWxzZTtcblxuXHQvLyBLZWVwIHJlZmVyZW5jZSB0byB0aGUgY3JlYXRlZCB1c2VyIGFjdGlvbiBzbyB3ZSBjYW4gY2xlYW4gaXQgdXAgb24gaWZyYW1lIHJlbG9hZCB0byBhdm9pZCBkdXBsaWNhdGVcblx0c3RhdGljIF91c2VyQWN0aW9uOiBJdGVtO1xuXG5cdHN0YXRpYyBfY2xlYW51cEF0dGFjaGVkID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgb3IgcmV0dXJucyB0aGUgaW5zdGFuY2Ugb2YgdGhlIFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlci5cblx0ICogVGhpcyBpcyBhIHNpbmdsZXRvbiB0byBlbnN1cmUgd2Ugb25seSBoYXZlIG9uZSBpbnN0YW5jZSBvZiB0aGUgZGlhbG9nLlxuXHQgKiBAcmV0dXJucyBUaGUgaW5zdGFuY2Ugb2YgdGhlIFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlclxuXHQgKi9cblx0c3RhdGljIGFzeW5jIGdldEluc3RhbmNlKCk6IFByb21pc2U8U2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIHwgdW5kZWZpbmVkPiB7XG5cdFx0Ly8gVGVzdCB0aGUgc2hlbGwgZXhpc3RlbmNlIGFuZCByZWdpc3RlciB0aGUgZXh0ZW5zaW9uXG5cdFx0Y29uc3Qgc2hlbGxDb250YWluZXIgPSBzYXAudWkucmVxdWlyZShcInNhcC91c2hlbGwvQ29udGFpbmVyXCIpIGFzIENvbnRhaW5lciB8IHVuZGVmaW5lZDtcblx0XHRsZXQgcmVzb2x2ZUNyZWF0aW9uOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcblx0XHR0cnkge1xuXHRcdFx0aWYgKHNoZWxsQ29udGFpbmVyICYmICF0aGlzLmluc3RhbmNlKSB7XG5cdFx0XHRcdHRoaXMuaW5zdGFuY2VQcm9taXNlID0gbmV3IFByb21pc2U8U2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIHwgdW5kZWZpbmVkPigocmVzb2x2ZSkgPT4ge1xuXHRcdFx0XHRcdHJlc29sdmVDcmVhdGlvbiA9IHJlc29sdmU7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRjb25zdCBhcHBMaWZlQ3ljbGUgPSAoYXdhaXQgc2hlbGxDb250YWluZXIuZ2V0U2VydmljZUFzeW5jKFwiQXBwTGlmZUN5Y2xlXCIpKSBhcyBBcHBMaWZlQ3ljbGUgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGNvbnN0IGV4dGVuc2lvblNlcnZpY2UgPSAoYXdhaXQgc2hlbGxDb250YWluZXIuZ2V0U2VydmljZUFzeW5jKFwiRXh0ZW5zaW9uXCIpKSBhcyBFeHRlbnNpb24gfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGlmIChleHRlbnNpb25TZXJ2aWNlKSB7XG5cdFx0XHRcdFx0YXBwTGlmZUN5Y2xlPy5hdHRhY2hBcHBMb2FkZWQoXG5cdFx0XHRcdFx0XHR7fSxcblx0XHRcdFx0XHRcdGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgc2hlbGxIaXN0b3J5UHJvdmlkZXIgPSBhd2FpdCBTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIucmVnaXN0ZXJVc2VyQWN0aW9uKGV4dGVuc2lvblNlcnZpY2UpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmluc3RhbmNlID0gc2hlbGxIaXN0b3J5UHJvdmlkZXI7XG5cdFx0XHRcdFx0XHRcdHJlc29sdmVDcmVhdGlvbiEoc2hlbGxIaXN0b3J5UHJvdmlkZXIpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHRoaXNcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TG9nLmVycm9yKFwiQ2Fubm90IHJlZ2lzdGVyIGV4dGVuc2lvblwiLCBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSkpO1xuXHRcdFx0cmVzb2x2ZUNyZWF0aW9uPy4odW5kZWZpbmVkKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuaW5zdGFuY2VQcm9taXNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgdGhlIHVzZXIgYWN0aW9uIHRvIHRoZSBzaGVsbCwgdGhlIGFjdGlvbiB3aWxsIG9wZW4gdGhlIGRpYWxvZyB3aXRoIHRoZSBzaG9ydGN1dHMuXG5cdCAqIEBwYXJhbSBzaGVsbEV4dGVuc2lvblNlcnZpY2UgVGhlIGV4dGVuc2lvbiBzZXJ2aWNlIHRvIGFkZCB0aGUgdXNlciBhY3Rpb24gdG8gdGhlIHNoZWxsXG5cdCAqIEByZXR1cm5zIFRoZSBkaWFsb2cgd2l0aCB0aGUgc2hvcnRjdXRzXG5cdCAqL1xuXHRzdGF0aWMgYXN5bmMgcmVnaXN0ZXJVc2VyQWN0aW9uKHNoZWxsRXh0ZW5zaW9uU2VydmljZTogRXh0ZW5zaW9uKTogUHJvbWlzZTxTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIgfCB1bmRlZmluZWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXG5cdFx0XHRjb25zdCBzaGVsbEhpc3RvcnlEaWFsb2cgPSBuZXcgU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyKCk7XG5cdFx0XHRjb25zdCB1c2VyQWN0aW9uID0gYXdhaXQgc2hlbGxFeHRlbnNpb25TZXJ2aWNlLmNyZWF0ZVVzZXJBY3Rpb24oXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRpZDogXCJzYXB1aTUuc2hvcnRjdXQuZXhwbGFuYXRpb24udHJpZ2dlclwiLFxuXHRcdFx0XHRcdHRleHQ6IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1NIT1JUQ1VUX1RJVExFXCIpLFxuXHRcdFx0XHRcdGljb246IEljb25Qb29sLmdldEljb25VUkkoXCJrZXlib2FyZC1hbmQtbW91c2VcIiksXG5cdFx0XHRcdFx0cHJlc3M6ICgpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdHNoZWxsSGlzdG9yeURpYWxvZy5nZXRTaGVsbERpYWxvZ0NvbnRlbnQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRjb250cm9sVHlwZTogXCJzYXAubS5CdXR0b25cIlxuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdFx0Ly8gU3RvcmUgcmVmZXJlbmNlIGZvciBjbGVhbnVwIHdoZW4gdGhlIGlmcmFtZSBpcyByZWxvYWRlZC91bmxvYWRlZFxuXHRcdFx0dGhpcy5fdXNlckFjdGlvbiA9IHVzZXJBY3Rpb247XG5cblx0XHRcdGlmICghdGhpcy5fY2xlYW51cEF0dGFjaGVkKSB7XG5cdFx0XHRcdHRoaXMuX2NsZWFudXBBdHRhY2hlZCA9IHRydWU7XG5cdFx0XHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicGFnZWhpZGVcIiwgKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuX3VzZXJBY3Rpb24uZGVzdHJveSgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblxuXHRcdFx0dXNlckFjdGlvbi5zaG93Rm9yQ3VycmVudEFwcCgpO1xuXHRcdFx0cmV0dXJuIHNoZWxsSGlzdG9yeURpYWxvZztcblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdExvZy5lcnJvcihcIkNhbm5vdCBhZGQgdXNlciBhY3Rpb25cIiwgZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpKTtcblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0VBWUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUpBLElBTXFCQSwyQkFBMkIsSUFBQUMsSUFBQSxHQUQvQ0MsY0FBYyxDQUFDLHVEQUF1RCxDQUFDLEVBQUFELElBQUEsQ0FBQUUsTUFBQSxJQUFB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
|
|
@@ -6,7 +6,9 @@ import IconPool from "sap/ui/core/IconPool";
|
|
|
6
6
|
import Lib from "sap/ui/core/Lib";
|
|
7
7
|
import Theming from "sap/ui/core/Theming";
|
|
8
8
|
import type Container from "sap/ushell/Container";
|
|
9
|
+
import type AppLifeCycle from "sap/ushell/services/AppLifeCycle";
|
|
9
10
|
import type Extension from "sap/ushell/services/Extension";
|
|
11
|
+
import type Item from "sap/ushell/services/Extension/Item";
|
|
10
12
|
|
|
11
13
|
/**
|
|
12
14
|
* Provides a dialog to explain the shortcuts to the user.
|
|
@@ -110,6 +112,11 @@ export default class ShortcutExplanationProvider extends ManagedObject {
|
|
|
110
112
|
|
|
111
113
|
static isDialogAdded = false;
|
|
112
114
|
|
|
115
|
+
// Keep reference to the created user action so we can clean it up on iframe reload to avoid duplicate
|
|
116
|
+
static _userAction: Item;
|
|
117
|
+
|
|
118
|
+
static _cleanupAttached = false;
|
|
119
|
+
|
|
113
120
|
/**
|
|
114
121
|
* Creates or returns the instance of the ShortcutExplanationProvider.
|
|
115
122
|
* This is a singleton to ensure we only have one instance of the dialog.
|
|
@@ -124,11 +131,18 @@ export default class ShortcutExplanationProvider extends ManagedObject {
|
|
|
124
131
|
this.instancePromise = new Promise<ShortcutExplanationProvider | undefined>((resolve) => {
|
|
125
132
|
resolveCreation = resolve;
|
|
126
133
|
});
|
|
134
|
+
const appLifeCycle = (await shellContainer.getServiceAsync("AppLifeCycle")) as AppLifeCycle | undefined;
|
|
127
135
|
const extensionService = (await shellContainer.getServiceAsync("Extension")) as Extension | undefined;
|
|
128
136
|
if (extensionService) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
137
|
+
appLifeCycle?.attachAppLoaded(
|
|
138
|
+
{},
|
|
139
|
+
async (): Promise<void> => {
|
|
140
|
+
const shellHistoryProvider = await ShortcutExplanationProvider.registerUserAction(extensionService);
|
|
141
|
+
this.instance = shellHistoryProvider;
|
|
142
|
+
resolveCreation!(shellHistoryProvider);
|
|
143
|
+
},
|
|
144
|
+
this
|
|
145
|
+
);
|
|
132
146
|
}
|
|
133
147
|
}
|
|
134
148
|
} catch (e) {
|
|
@@ -148,23 +162,30 @@ export default class ShortcutExplanationProvider extends ManagedObject {
|
|
|
148
162
|
const resourceBundle = Lib.getResourceBundleFor("sap.fe.controls")!;
|
|
149
163
|
|
|
150
164
|
const shellHistoryDialog = new ShortcutExplanationProvider();
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
press: (): void => {
|
|
159
|
-
shellHistoryDialog.getShellDialogContent();
|
|
160
|
-
}
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
controlType: "sap.m.Button"
|
|
165
|
+
const userAction = await shellExtensionService.createUserAction(
|
|
166
|
+
{
|
|
167
|
+
id: "sapui5.shortcut.explanation.trigger",
|
|
168
|
+
text: resourceBundle.getText("C_SHORTCUT_TITLE"),
|
|
169
|
+
icon: IconPool.getIconURI("keyboard-and-mouse"),
|
|
170
|
+
press: (): void => {
|
|
171
|
+
shellHistoryDialog.getShellDialogContent();
|
|
164
172
|
}
|
|
165
|
-
|
|
166
|
-
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
controlType: "sap.m.Button"
|
|
176
|
+
}
|
|
177
|
+
);
|
|
178
|
+
// Store reference for cleanup when the iframe is reloaded/unloaded
|
|
179
|
+
this._userAction = userAction;
|
|
180
|
+
|
|
181
|
+
if (!this._cleanupAttached) {
|
|
182
|
+
this._cleanupAttached = true;
|
|
183
|
+
window.addEventListener("pagehide", () => {
|
|
184
|
+
this._userAction.destroy();
|
|
185
|
+
});
|
|
167
186
|
}
|
|
187
|
+
|
|
188
|
+
userAction.showForCurrentApp();
|
|
168
189
|
return shellHistoryDialog;
|
|
169
190
|
} catch (err) {
|
|
170
191
|
Log.error("Cannot add user action", err instanceof Error ? err.message : String(err));
|