@sapui5/sap.fe.base 1.140.0 → 1.141.1
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/base/.library +1 -1
- package/src/sap/fe/base/BindingToolkit.js +10 -7
- package/src/sap/fe/base/BindingToolkit.ts +11 -6
- package/src/sap/fe/base/BuildingBlockBase.js +7 -5
- package/src/sap/fe/base/BuildingBlockBase.ts +8 -5
- package/src/sap/fe/base/ClassSupport.js +7 -4
- package/src/sap/fe/base/ClassSupport.ts +10 -3
- package/src/sap/fe/base/HookSupport.js +7 -5
- package/src/sap/fe/base/HookSupport.ts +10 -4
- package/src/sap/fe/base/jsx-runtime/jsx-control.js +5 -3
- package/src/sap/fe/base/jsx-runtime/jsx-control.ts +3 -2
- package/src/sap/fe/base/jsx-runtime/jsx.js +9 -2
- package/src/sap/fe/base/jsx-runtime/jsx.ts +10 -1
- package/src/sap/fe/base/library.js +1 -1
|
@@ -22,6 +22,10 @@ type HookableControllerExtensions = {
|
|
|
22
22
|
routing: {
|
|
23
23
|
onAfterBinding: true;
|
|
24
24
|
};
|
|
25
|
+
viewState: {
|
|
26
|
+
retrieveAdditionalStates: true;
|
|
27
|
+
applyAdditionalStates: true;
|
|
28
|
+
};
|
|
25
29
|
};
|
|
26
30
|
|
|
27
31
|
type HandlerConfiguration<CExtName extends keyof HookableControllerExtensions> = {
|
|
@@ -68,10 +72,12 @@ export function hookable(execution: ExtensionOverrideExecution): MethodDecorator
|
|
|
68
72
|
};
|
|
69
73
|
indexableTarget[`detach${propertyKey.toString()}`] = function (fn: Function): void {
|
|
70
74
|
const cExTInstanceHookMap = this as unknown as HookMap;
|
|
71
|
-
const handlers = cExTInstanceHookMap.hookedHandlers[propertyKey.toString()];
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
+
const handlers = cExTInstanceHookMap.hookedHandlers?.[propertyKey.toString()];
|
|
76
|
+
if (Array.isArray(handlers)) {
|
|
77
|
+
const index = handlers.indexOf(fn);
|
|
78
|
+
if (index !== -1) {
|
|
79
|
+
handlers.splice(index, 1);
|
|
80
|
+
}
|
|
75
81
|
}
|
|
76
82
|
};
|
|
77
83
|
|
|
@@ -196,7 +196,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/m/Text", "sap/
|
|
|
196
196
|
}
|
|
197
197
|
delete settings["jsx:command"];
|
|
198
198
|
}
|
|
199
|
-
const jsxControl = function (ControlType, settings, key,
|
|
199
|
+
const jsxControl = function (ControlType, settings, key, _jsxContext, _jsxFormatterContext) {
|
|
200
200
|
let targetControl;
|
|
201
201
|
if (ControlType?.isFragment) {
|
|
202
202
|
targetControl = settings.children;
|
|
@@ -219,7 +219,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/m/Text", "sap/
|
|
|
219
219
|
delete settings[FL_DELEGATE];
|
|
220
220
|
delete settings[DT_DESIGNTIME];
|
|
221
221
|
delete settings[CORE_REQUIRE]; // Core require is not useful in control mode
|
|
222
|
-
const targetControlInstance = new ControlType(settings
|
|
222
|
+
const targetControlInstance = new ControlType(settings, {
|
|
223
|
+
..._jsxFormatterContext
|
|
224
|
+
});
|
|
223
225
|
if (classDef) {
|
|
224
226
|
targetControlInstance.addStyleClass(classDef);
|
|
225
227
|
}
|
|
@@ -280,4 +282,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/m/Text", "sap/
|
|
|
280
282
|
};
|
|
281
283
|
return jsxControl;
|
|
282
284
|
}, false);
|
|
283
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGTF9ERUxFR0FURSIsIkNPUkVfUkVRVUlSRSIsIkRUX0RFU0lHTlRJTUUiLCJhZGRDaGlsZEFnZ3JlZ2F0aW9uIiwiYWdncmVnYXRpb25DaGlsZHJlbiIsImFnZ3JlZ2F0aW9uTmFtZSIsImNoaWxkIiwidW5kZWZpbmVkIiwiaXNDaGlsZEFuRWxlbWVudCIsInB1c2giLCJBcnJheSIsImlzQXJyYXkiLCJmb3JFYWNoIiwic3ViQ2hpbGQiLCJPYmplY3QiLCJrZXlzIiwiY2hpbGRLZXkiLCJjaGlsZHJlbiIsImlzQSIsImlzQUNvbnRyb2wiLCJnZXRNZXRhZGF0YSIsInByb2Nlc3NBZ2dyZWdhdGlvbnMiLCJtZXRhZGF0YSIsIm1TZXR0aW5ncyIsIm1ldGFkYXRhQWdncmVnYXRpb25zIiwiZ2V0QWxsQWdncmVnYXRpb25zIiwiZGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZSIsImdldERlZmF1bHRBZ2dyZWdhdGlvbk5hbWUiLCJoYXNPd25Qcm9wZXJ0eSIsInJlc3VsdGluZ1BhcnNlIiwiQmluZGluZ0luZm8iLCJwYXJzZSIsInBhdGgiLCJtb2RlbCIsImZhY3RvcnkiLCJ0ZW1wbGF0ZSIsInByb2Nlc3NCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24iLCJzZXR0aW5ncyIsInNldHRpbmdzS2V5IiwiYmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIiwiYWxsUHJvcGVydGllcyIsImlzQ29uc3RhbnQiLCJjb21waWxlQ29uc3RhbnQiLCJjYWxsIiwiaXNQYXRoSW5Nb2RlbEV4cHJlc3Npb24iLCJtb2RlbE5hbWUiLCJjb21waWxlRXhwcmVzc2lvbiIsInByb2Nlc3NTdHJpbmdQcm9wZXJ0eSIsInZhbHVlIiwiYWxsRXZlbnRzIiwic3RhcnRzV2l0aCIsIkxvZyIsImVycm9yIiwiZ2V0TmFtZSIsInByb3BlcnR5VHlwZSIsImdldFR5cGUiLCJEYXRhVHlwZSIsImluY2x1ZGVzIiwicGFyc2VWYWx1ZSIsInByb2Nlc3NPYmplY3RQcm9wZXJ0eSIsImxhdGVQcm9wZXJ0aWVzIiwidGhlbiIsIl9fYmluZGluZ0luZm8iLCJwcm9jZXNzUHJvcGVydGllcyIsImdldEFsbEV2ZW50cyIsImdldEFsbFByb3BlcnRpZXMiLCJpc0JpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiIsInByb2Nlc3NDb21tYW5kIiwiY29tbWFuZFByb3BlcnR5IiwiY29tbWFuZCIsImV2ZW50TmFtZSIsInNwbGl0IiwiZXZlbnQiLCJuYW1lIiwiRXZlbnRIYW5kbGVyUmVzb2x2ZXIiLCJyZXNvbHZlRXZlbnRIYW5kbGVyIiwianN4Q29udHJvbCIsIkNvbnRyb2xUeXBlIiwia2V5IiwianN4Q29udGV4dCIsInRhcmdldENvbnRyb2wiLCJpc0ZyYWdtZW50IiwiY2xhc3NEZWYiLCJjbGFzcyIsInJlZkRlZiIsInJlZiIsImJpbmRpbmdEZWYiLCJiaW5kaW5nIiwiZmxEZWxlZ2F0ZSIsImR0RGVzaWdudGltZSIsInRhcmdldENvbnRyb2xJbnN0YW5jZSIsImFkZFN0eWxlQ2xhc3MiLCJzZXRDdXJyZW50IiwiY3VzdG9tU2V0dGluZ3MiLCJkYXRhIiwiZGVsZWdhdGUiLCJkZXNpZ250aW1lIiwibGVuZ3RoIiwiYmluZGluZ0luZm8iLCJiaW5kRWxlbWVudCIsInBhcmFtZXRlcnMiLCJiaW5kaW5nRGVmS2V5IiwibGF0ZVByb3BlcnRpZXNLZXkiLCJzZXRQcm9wZXJ0eSIsImNhdGNoIiwiY29udHJvbFR5cGVGbiIsIlRleHQiLCJ0ZXh0Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJqc3gtY29udHJvbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQge1xuXHRjb21waWxlQ29uc3RhbnQsXG5cdGNvbXBpbGVFeHByZXNzaW9uLFxuXHRpc0JpbmRpbmdUb29sa2l0RXhwcmVzc2lvbixcblx0aXNDb25zdGFudCxcblx0aXNQYXRoSW5Nb2RlbEV4cHJlc3Npb25cbn0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdJbmZvSG9sZGVyLCBOb25BYnN0cmFjdENsYXNzIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sUHJvcGVydGllcywgSlNYQ29udGV4dCwgTm9uQ29udHJvbFByb3BlcnRpZXMsIFJlZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9qc3gtcnVudGltZS9qc3hcIjtcbmltcG9ydCBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgQmluZGluZ0luZm8gZnJvbSBcInNhcC91aS9iYXNlL0JpbmRpbmdJbmZvXCI7XG5pbXBvcnQgRGF0YVR5cGUgZnJvbSBcInNhcC91aS9iYXNlL0RhdGFUeXBlXCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0TWV0YWRhdGEgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RNZXRhZGF0YVwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBFbGVtZW50LCBkZWZhdWx0IGFzIFVJNUVsZW1lbnQgfSBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEV2ZW50SGFuZGxlclJlc29sdmVyIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvRXZlbnRIYW5kbGVyUmVzb2x2ZXJcIjtcblxuY29uc3QgRkxfREVMRUdBVEUgPSBcImZsOmRlbGVnYXRlXCI7XG5jb25zdCBDT1JFX1JFUVVJUkUgPSBcImNvcmU6cmVxdWlyZVwiO1xuY29uc3QgRFRfREVTSUdOVElNRSA9IFwiZHQ6ZGVzaWdudGltZVwiO1xuY29uc3QgYWRkQ2hpbGRBZ2dyZWdhdGlvbiA9IGZ1bmN0aW9uIChcblx0YWdncmVnYXRpb25DaGlsZHJlbjogUmVjb3JkPHN0cmluZywgKHN0cmluZyB8IFVJNUVsZW1lbnQpW10+LFxuXHRhZ2dyZWdhdGlvbk5hbWU6IHN0cmluZyxcblx0Y2hpbGQ/OiBzdHJpbmcgfCBVSTVFbGVtZW50IHwgVUk1RWxlbWVudFtdXG4pOiB2b2lkIHtcblx0aWYgKGNoaWxkID09PSBudWxsIHx8IGNoaWxkID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGNoaWxkID09PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGlmICghYWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdKSB7XG5cdFx0YWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdID0gW107XG5cdH1cblx0aWYgKGlzQ2hpbGRBbkVsZW1lbnQoY2hpbGQpKSB7XG5cdFx0YWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdLnB1c2goY2hpbGQpO1xuXHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGQpKSB7XG5cdFx0Y2hpbGQuZm9yRWFjaCgoc3ViQ2hpbGQpID0+IHtcblx0XHRcdGFkZENoaWxkQWdncmVnYXRpb24oYWdncmVnYXRpb25DaGlsZHJlbiwgYWdncmVnYXRpb25OYW1lLCBzdWJDaGlsZCk7XG5cdFx0fSk7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGNoaWxkID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRhZ2dyZWdhdGlvbkNoaWxkcmVuW2FnZ3JlZ2F0aW9uTmFtZV0gPSBjaGlsZDtcblx0fSBlbHNlIHtcblx0XHRPYmplY3Qua2V5cyhjaGlsZCkuZm9yRWFjaCgoY2hpbGRLZXkpID0+IHtcblx0XHRcdGFkZENoaWxkQWdncmVnYXRpb24oYWdncmVnYXRpb25DaGlsZHJlbiwgY2hpbGRLZXksIGNoaWxkW2NoaWxkS2V5XSk7XG5cdFx0fSk7XG5cdH1cbn07XG5jb25zdCBpc0NoaWxkQW5FbGVtZW50ID0gZnVuY3Rpb24gKGNoaWxkcmVuPzogdW5rbm93bik6IGNoaWxkcmVuIGlzIEVsZW1lbnQge1xuXHRyZXR1cm4gKGNoaWxkcmVuIGFzIEVsZW1lbnQpPy5pc0E/LihcInNhcC51aS5jb3JlLkVsZW1lbnRcIik7XG59O1xuY29uc3QgaXNBQ29udHJvbCA9IGZ1bmN0aW9uIChjaGlsZHJlbj86IHR5cGVvZiBDb250cm9sIHwgRnVuY3Rpb24pOiBjaGlsZHJlbiBpcyBOb25BYnN0cmFjdENsYXNzPENvbnRyb2w+IHtcblx0cmV0dXJuICEhKGNoaWxkcmVuIGFzIHR5cGVvZiBDb250cm9sKT8uZ2V0TWV0YWRhdGE7XG59O1xuXG5mdW5jdGlvbiBwcm9jZXNzQWdncmVnYXRpb25zKG1ldGFkYXRhOiBNYW5hZ2VkT2JqZWN0TWV0YWRhdGEsIG1TZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcblx0Y29uc3QgbWV0YWRhdGFBZ2dyZWdhdGlvbnMgPSBtZXRhZGF0YS5nZXRBbGxBZ2dyZWdhdGlvbnMoKTtcblx0Y29uc3QgZGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZSA9IG1ldGFkYXRhLmdldERlZmF1bHRBZ2dyZWdhdGlvbk5hbWUoKTtcblx0Y29uc3QgYWdncmVnYXRpb25DaGlsZHJlbjogUmVjb3JkPHN0cmluZywgKHN0cmluZyB8IFVJNUVsZW1lbnQpW10+ID0ge307XG5cdGFkZENoaWxkQWdncmVnYXRpb24oYWdncmVnYXRpb25DaGlsZHJlbiwgZGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZSwgbVNldHRpbmdzLmNoaWxkcmVuIGFzIHN0cmluZyB8IFVJNUVsZW1lbnQgfCBVSTVFbGVtZW50W10pO1xuXHRkZWxldGUgbVNldHRpbmdzLmNoaWxkcmVuO1xuXHQvLyBmaW5kIG91dCB3aGljaCBhZ2dyZWdhdGlvbiBhcmUgYm91bmQgKGJvdGggaW4gY2hpbGRyZW4gYW5kIGRpcmVjdGx5IHVuZGVyIGl0KVxuXHRPYmplY3Qua2V5cyhtZXRhZGF0YUFnZ3JlZ2F0aW9ucykuZm9yRWFjaCgoYWdncmVnYXRpb25OYW1lKSA9PiB7XG5cdFx0aWYgKGFnZ3JlZ2F0aW9uQ2hpbGRyZW5bYWdncmVnYXRpb25OYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAobVNldHRpbmdzLmhhc093blByb3BlcnR5KGFnZ3JlZ2F0aW9uTmFtZSkpIHtcblx0XHRcdFx0aWYgKHR5cGVvZiBtU2V0dGluZ3NbYWdncmVnYXRpb25OYW1lXSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRcdGNvbnN0IHJlc3VsdGluZ1BhcnNlID0gQmluZGluZ0luZm8ucGFyc2UobVNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZV0pO1xuXHRcdFx0XHRcdGlmIChyZXN1bHRpbmdQYXJzZSkge1xuXHRcdFx0XHRcdFx0bVNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZV0gPSB7XG5cdFx0XHRcdFx0XHRcdHBhdGg6IHJlc3VsdGluZ1BhcnNlLnBhdGgsXG5cdFx0XHRcdFx0XHRcdG1vZGVsOiByZXN1bHRpbmdQYXJzZS5tb2RlbFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0bVNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZV0gPSB7XG5cdFx0XHRcdFx0XHRcdHBhdGg6IG1TZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodHlwZW9mIGFnZ3JlZ2F0aW9uQ2hpbGRyZW5bYWdncmVnYXRpb25OYW1lXSA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHRcdFx0KG1TZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdIGFzIHsgZmFjdG9yeTogRnVuY3Rpb24gfSkuZmFjdG9yeSA9IGFnZ3JlZ2F0aW9uQ2hpbGRyZW5bXG5cdFx0XHRcdFx0XHRhZ2dyZWdhdGlvbk5hbWVcblx0XHRcdFx0XHRdIGFzIHVua25vd24gYXMgRnVuY3Rpb247XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0KG1TZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdIGFzIHsgdGVtcGxhdGU6IHN0cmluZyB8IFVJNUVsZW1lbnQgfSkudGVtcGxhdGUgPSBhZ2dyZWdhdGlvbkNoaWxkcmVuW2FnZ3JlZ2F0aW9uTmFtZV1bMF07XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1TZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdID0gYWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIGEgYmluZGluZyB0b29sa2l0IGV4cHJlc3Npb24gcHJvcGVydHkgZm9yIGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0aWVzXG4gKlxuICogSWYgdGhlIHByb3BlcnR5IGlzIGEgY29uc3RhbnQsIGl0IGNvbXBpbGVzIGl0IGFzIGEgY29uc3RhbnQuIElmIHRoZSBwcm9wZXJ0eSBpcyBhbiBhZ2dyZWdhdGlvbixcbiAqIGl0IGNvbXBpbGVzIHRoZSBleHByZXNzaW9uIGFzIGFuIG9iamVjdC4gT3RoZXJ3aXNlLCBpdCBjb21waWxlcyB0aGUgZXhwcmVzc2lvbiBub3JtYWxseS5cbiAqIEBwYXJhbSBzZXR0aW5ncyBUaGUgc2V0dGluZ3Mgb2YgdGhlIGNvbnRyb2xcbiAqIEBwYXJhbSBzZXR0aW5nc0tleSBUaGUga2V5IG9mIHRoZSBzZXR0aW5nIGJlaW5nIHByb2Nlc3NlZFxuICogQHBhcmFtIGJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiBUaGUgYmluZGluZyB0b29sa2l0IGV4cHJlc3Npb24gdG8gcHJvY2Vzc1xuICogQHBhcmFtIGFsbFByb3BlcnRpZXMgQWxsIHByb3BlcnRpZXMgb2YgdGhlIGNvbnRyb2xcbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc0JpbmRpbmdUb29sa2l0RXhwcmVzc2lvbihcblx0c2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRzZXR0aW5nc0tleToga2V5b2YgdHlwZW9mIHNldHRpbmdzLFxuXHRiaW5kaW5nVG9vbGtpdEV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjx1bmtub3duPixcblx0YWxsUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbik6IHZvaWQge1xuXHRpZiAoaXNDb25zdGFudChiaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24pKSB7XG5cdFx0c2V0dGluZ3Nbc2V0dGluZ3NLZXldID0gY29tcGlsZUNvbnN0YW50KGJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgZmFsc2UsIHRydWUsIHRydWUpO1xuXHR9IGVsc2UgaWYgKCFPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChhbGxQcm9wZXJ0aWVzLCBzZXR0aW5nc0tleSkpIHtcblx0XHQvLyBBZ2dyZWdhdGlvbiBjYXNlIC0gd2UgbmVlZCB0byBjb21waWxlIHRoZSBleHByZXNzaW9uIGJ1dCBhcyBhbiBvYmplY3Rcblx0XHRpZiAoaXNQYXRoSW5Nb2RlbEV4cHJlc3Npb24oYmluZGluZ1Rvb2xraXRFeHByZXNzaW9uKSkge1xuXHRcdFx0c2V0dGluZ3Nbc2V0dGluZ3NLZXldID0geyBwYXRoOiBiaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ucGF0aCwgbW9kZWw6IGJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbi5tb2RlbE5hbWUgfTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0c2V0dGluZ3Nbc2V0dGluZ3NLZXldID0gY29tcGlsZUV4cHJlc3Npb24oYmluZGluZ1Rvb2xraXRFeHByZXNzaW9uKTtcblx0fVxufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhIHN0cmluZyBwcm9wZXJ0eSBmb3IgZnVuY3Rpb24gcHJvY2Vzc1Byb3BlcnRpZXNcbiAqXG4gKiBJZiB0aGUgcHJvcGVydHkgaXMgbm90IGEgYmluZGluZyBleHByZXNzaW9uIGFuZCBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LFxuICogaXQgcGFyc2VzIHRoZSB2YWx1ZSB0byBwcm92aWRlIHRoZSBleHBlY3RlZCBmb3JtYXQuIElmIHRoZSBwcm9wZXJ0eSBpcyBhbiBldmVudCBoYW5kbGVyLFxuICogaXQgbG9ncyBhbiBlcnJvci5cbiAqIEBwYXJhbSBzZXR0aW5ncyBUaGUgc2V0dGluZ3Mgb2YgdGhlIGNvbnRyb2xcbiAqIEBwYXJhbSBzZXR0aW5nc0tleSBUaGUga2V5IG9mIHRoZSBzZXR0aW5nIGJlaW5nIHByb2Nlc3NlZFxuICogQHBhcmFtIHZhbHVlIFRoZSBzdHJpbmcgdmFsdWUgdG8gcHJvY2Vzc1xuICogQHBhcmFtIGFsbEV2ZW50cyBBbGwgZXZlbnRzIG9mIHRoZSBjb250cm9sXG4gKiBAcGFyYW0gYWxsUHJvcGVydGllcyBBbGwgcHJvcGVydGllcyBvZiB0aGUgY29udHJvbFxuICogQHBhcmFtIG1ldGFkYXRhIE1ldGFkYXRhIG9mIHRoZSBjb250cm9sXG4gKi9cbmZ1bmN0aW9uIHByb2Nlc3NTdHJpbmdQcm9wZXJ0eShcblx0c2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRzZXR0aW5nc0tleToga2V5b2YgdHlwZW9mIHNldHRpbmdzLFxuXHR2YWx1ZTogc3RyaW5nLFxuXHRhbGxFdmVudHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRhbGxQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcblx0bWV0YWRhdGE6IE1hbmFnZWRPYmplY3RNZXRhZGF0YVxuKTogdm9pZCB7XG5cdGlmICghdmFsdWUuc3RhcnRzV2l0aChcIntcIikpIHtcblx0XHRpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwoYWxsRXZlbnRzLCBzZXR0aW5nc0tleSkpIHtcblx0XHRcdExvZy5lcnJvcihgRXZlbnQgaGFuZGxlcnMgY2Fubm90IGJlIHNldCBhcyBzdHJpbmcgaW4gSlNYLCAke3NldHRpbmdzS2V5fSBpbiAke21ldGFkYXRhLmdldE5hbWUoKX1gKTtcblx0XHR9XG5cdFx0Y29uc3QgcHJvcGVydHlUeXBlID0gKGFsbFByb3BlcnRpZXNbc2V0dGluZ3NLZXldIGFzIHsgZ2V0VHlwZT86IEZ1bmN0aW9uIH0pPy5nZXRUeXBlPy4oKTtcblx0XHRpZiAocHJvcGVydHlUeXBlICYmIHByb3BlcnR5VHlwZSBpbnN0YW5jZW9mIERhdGFUeXBlICYmIFtcImJvb2xlYW5cIiwgXCJpbnRcIiwgXCJmbG9hdFwiXS5pbmNsdWRlcyhwcm9wZXJ0eVR5cGUuZ2V0TmFtZSgpKSkge1xuXHRcdFx0c2V0dGluZ3Nbc2V0dGluZ3NLZXldID0gcHJvcGVydHlUeXBlLnBhcnNlVmFsdWUodmFsdWUpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRzZXR0aW5nc1tzZXR0aW5nc0tleV0gPSB2YWx1ZTtcblx0fVxufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhbiBvYmplY3QgcHJvcGVydHkgZm9yIGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0aWVzLlxuICpcbiAqIElmIHRoZSBwcm9wZXJ0eSBpcyBhIHByb21pc2UsIGl0IGFkZHMgaXQgdG8gdGhlIGxhdGUgcHJvcGVydGllcyBtYXAuIElmIHRoZSBwcm9wZXJ0eSBpcyBhIGJpbmRpbmcgaW5mbyBob2xkZXIsXG4gKiBpdCBzZXRzIHRoZSBiaW5kaW5nIGluZm8gdG8gdGhlIHNldHRpbmdzLlxuICogQHBhcmFtIHNldHRpbmdzIFRoZSBzZXR0aW5ncyBvZiB0aGUgY29udHJvbFxuICogQHBhcmFtIHNldHRpbmdzS2V5IFRoZSBrZXkgb2YgdGhlIHNldHRpbmcgYmVpbmcgcHJvY2Vzc2VkXG4gKiBAcGFyYW0gdmFsdWUgVGhlIG9iamVjdCB2YWx1ZSB0byBwcm9jZXNzXG4gKiBAcGFyYW0gbGF0ZVByb3BlcnRpZXMgQSBtYXAgb2YgdGhlIGNvbnRyb2wncyBsYXRlIHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc09iamVjdFByb3BlcnR5KFxuXHRzZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG5cdHNldHRpbmdzS2V5OiBrZXlvZiB0eXBlb2Ygc2V0dGluZ3MsXG5cdHZhbHVlOiB1bmtub3duLFxuXHRsYXRlUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgUHJvbWlzZTx1bmtub3duPj5cbik6IHZvaWQge1xuXHRpZiAoKHZhbHVlIGFzIFByb21pc2U8dW5rbm93bj4pLnRoZW4pIHtcblx0XHRsYXRlUHJvcGVydGllc1tzZXR0aW5nc0tleV0gPSB2YWx1ZSBhcyBQcm9taXNlPHVua25vd24+O1xuXHRcdGRlbGV0ZSBzZXR0aW5nc1tzZXR0aW5nc0tleV07XG5cdH0gZWxzZSBpZiAoKHZhbHVlIGFzIEJpbmRpbmdJbmZvSG9sZGVyPHVua25vd24+KS5fX2JpbmRpbmdJbmZvKSB7XG5cdFx0c2V0dGluZ3Nbc2V0dGluZ3NLZXldID0gKHZhbHVlIGFzIEJpbmRpbmdJbmZvSG9sZGVyPHVua25vd24+KS5fX2JpbmRpbmdJbmZvO1xuXHR9XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIHRoZSBwcm9wZXJ0aWVzLlxuICpcbiAqIElmIHRoZSBwcm9wZXJ0eSBpcyBhIGJpbmRpbmdUb29sa2l0IGV4cHJlc3Npb24gd2UgbmVlZCB0byBjb21waWxlIGl0LlxuICogRWxzZSBpZiB0aGUgcHJvcGVydHkgaXMgc2V0IGFzIHN0cmluZyAoY29tcGlsZWQgYmluZGluZyBleHByZXNzaW9uIHJldHVybnMgc3RyaW5nIGJ5IGRlZmF1bHQgZXZlbiBpZiBpdCdzIGEgYm9vbGVhbiwgaW50LCBldGMuKSBhbmQgaXQgZG9lc24ndCBtYXRjaCB3aXRoIGV4cGVjdGVkXG4gKiBmb3JtYXQgdGhlIHZhbHVlIGlzIHBhcnNlZCB0byBwcm92aWRlIGV4cGVjdGVkIGZvcm1hdC5cbiAqIEBwYXJhbSBtZXRhZGF0YSBNZXRhZGF0YSBvZiB0aGUgY29udHJvbFxuICogQHBhcmFtIHNldHRpbmdzIFNldHRpbmdzIG9mIHRoZSBjb250cm9sXG4gKiBAcmV0dXJucyBBIG1hcCBvZiBsYXRlIHByb3BlcnRpZXMgdGhhdCBuZWVkIHRvIGJlIGF3YWl0ZWQgYWZ0ZXIgdGhlIGNvbnRyb2wgaXMgY3JlYXRlZFxuICovXG5mdW5jdGlvbiBwcm9jZXNzUHJvcGVydGllcyhtZXRhZGF0YTogTWFuYWdlZE9iamVjdE1ldGFkYXRhLCBzZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZWNvcmQ8c3RyaW5nLCBQcm9taXNlPHVua25vd24+PiB7XG5cdGxldCBzZXR0aW5nc0tleToga2V5b2YgdHlwZW9mIHNldHRpbmdzO1xuXHRjb25zdCBsYXRlUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgUHJvbWlzZTx1bmtub3duPj4gPSB7fTtcblx0Y29uc3QgYWxsRXZlbnRzID0gbWV0YWRhdGEuZ2V0QWxsRXZlbnRzKCk7XG5cdGNvbnN0IGFsbFByb3BlcnRpZXMgPSBtZXRhZGF0YS5nZXRBbGxQcm9wZXJ0aWVzKCk7XG5cblx0Zm9yIChzZXR0aW5nc0tleSBpbiBzZXR0aW5ncykge1xuXHRcdGNvbnN0IHZhbHVlID0gc2V0dGluZ3Nbc2V0dGluZ3NLZXldO1xuXHRcdGlmIChpc0JpbmRpbmdUb29sa2l0RXhwcmVzc2lvbih2YWx1ZSkpIHtcblx0XHRcdHByb2Nlc3NCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24oc2V0dGluZ3MsIHNldHRpbmdzS2V5LCB2YWx1ZSwgYWxsUHJvcGVydGllcyk7XG5cdFx0fSBlbHNlIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdHByb2Nlc3NPYmplY3RQcm9wZXJ0eShzZXR0aW5ncywgc2V0dGluZ3NLZXksIHZhbHVlLCBsYXRlUHJvcGVydGllcyk7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdHByb2Nlc3NTdHJpbmdQcm9wZXJ0eShzZXR0aW5ncywgc2V0dGluZ3NLZXksIHZhbHVlLCBhbGxFdmVudHMsIGFsbFByb3BlcnRpZXMsIG1ldGFkYXRhKTtcblx0XHR9IGVsc2UgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGRlbGV0ZSBzZXR0aW5nc1tzZXR0aW5nc0tleV07XG5cdFx0fVxuXHR9XG5cdHJldHVybiBsYXRlUHJvcGVydGllcztcbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgdGhlIGNvbW1hbmQuXG4gKlxuICogUmVzb2x2ZXMgdGhlIGNvbW1hbmQgc2V0IG9uIHRoZSBjb250cm9sIHZpYSB0aGUgaW50cmluc2ljIGNsYXNzIGF0dHJpYnV0ZSBcImpzeDpjb21tYW5kXCIuXG4gKiBJZiBubyBjb21tYW5kIGhhcyBiZWVuIHNldCBvciB0aGUgdGFyZ2V0ZWQgZXZlbnQgZG9lc24ndCBleGlzdCwgbm8gY29uZmlndXJhdGlvbiBpcyBzZXQuXG4gKiBAcGFyYW0gbWV0YWRhdGEgTWV0YWRhdGEgb2YgdGhlIGNvbnRyb2xcbiAqIEBwYXJhbSBzZXR0aW5ncyBTZXR0aW5ncyBvZiB0aGUgY29udHJvbFxuICovXG5mdW5jdGlvbiBwcm9jZXNzQ29tbWFuZChtZXRhZGF0YTogTWFuYWdlZE9iamVjdE1ldGFkYXRhLCBzZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcblx0Y29uc3QgY29tbWFuZFByb3BlcnR5ID0gc2V0dGluZ3NbXCJqc3g6Y29tbWFuZFwiXTtcblx0aWYgKGNvbW1hbmRQcm9wZXJ0eSkge1xuXHRcdGNvbnN0IFtjb21tYW5kLCBldmVudE5hbWVdID0gKGNvbW1hbmRQcm9wZXJ0eSBhcyBzdHJpbmcpLnNwbGl0KFwifFwiKTtcblx0XHRjb25zdCBldmVudCA9IG1ldGFkYXRhLmdldEFsbEV2ZW50cygpW2V2ZW50TmFtZV07XG5cdFx0aWYgKGV2ZW50ICYmIGNvbW1hbmQuc3RhcnRzV2l0aChcImNtZDpcIikpIHtcblx0XHRcdHNldHRpbmdzW2V2ZW50Lm5hbWVdID0gRXZlbnRIYW5kbGVyUmVzb2x2ZXIucmVzb2x2ZUV2ZW50SGFuZGxlcihjb21tYW5kKTtcblx0XHR9XG5cdH1cblx0ZGVsZXRlIHNldHRpbmdzW1wianN4OmNvbW1hbmRcIl07XG59XG5cbmNvbnN0IGpzeENvbnRyb2wgPSBmdW5jdGlvbiA8VCBleHRlbmRzIEVsZW1lbnQ+KFxuXHRDb250cm9sVHlwZTogTm9uQWJzdHJhY3RDbGFzczxDb250cm9sPiB8IEZ1bmN0aW9uLFxuXHRzZXR0aW5nczogTm9uQ29udHJvbFByb3BlcnRpZXM8VD4gJiB7XG5cdFx0a2V5OiBzdHJpbmc7XG5cdFx0Y2hpbGRyZW4/OiBFbGVtZW50IHwgQ29udHJvbFByb3BlcnRpZXM8VD47XG5cdFx0cmVmPzogUmVmPFQ+O1xuXHRcdGJpbmRpbmc/OiBzdHJpbmc7XG5cdFx0Y2xhc3M/OiBzdHJpbmc7XG5cdFx0W0ZMX0RFTEVHQVRFXT86IHN0cmluZztcblx0XHRbRFRfREVTSUdOVElNRV0/OiBzdHJpbmc7XG5cdFx0W0NPUkVfUkVRVUlSRV0/OiBzdHJpbmc7XG5cdH0sXG5cdGtleTogc3RyaW5nLFxuXHRqc3hDb250ZXh0OiBKU1hDb250ZXh0XG4pOiBDb250cm9sIHwgQ29udHJvbFtdIHwgdW5kZWZpbmVkIHtcblx0bGV0IHRhcmdldENvbnRyb2w6IENvbnRyb2wgfCBDb250cm9sW10gfCB1bmRlZmluZWQ7XG5cblx0aWYgKChDb250cm9sVHlwZSBhcyB7IGlzRnJhZ21lbnQ/OiBib29sZWFuIH0pPy5pc0ZyYWdtZW50KSB7XG5cdFx0dGFyZ2V0Q29udHJvbCA9IHNldHRpbmdzLmNoaWxkcmVuIGFzIENvbnRyb2wgfCBDb250cm9sW107XG5cdH0gZWxzZSBpZiAoaXNBQ29udHJvbChDb250cm9sVHlwZSkpIHtcblx0XHRjb25zdCBtZXRhZGF0YSA9IENvbnRyb2xUeXBlLmdldE1ldGFkYXRhKCk7XG5cdFx0aWYgKGtleSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRzZXR0aW5nc1tcImtleVwiXSA9IGtleTtcblx0XHR9XG5cdFx0Y29uc3QgbGF0ZVByb3BlcnRpZXMgPSBwcm9jZXNzUHJvcGVydGllcyhtZXRhZGF0YSwgc2V0dGluZ3MpO1xuXHRcdHByb2Nlc3NDb21tYW5kKG1ldGFkYXRhLCBzZXR0aW5ncyk7XG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9ucyhtZXRhZGF0YSwgc2V0dGluZ3MpO1xuXHRcdGNvbnN0IGNsYXNzRGVmID0gc2V0dGluZ3MuY2xhc3M7XG5cdFx0Y29uc3QgcmVmRGVmID0gc2V0dGluZ3MucmVmO1xuXHRcdGNvbnN0IGJpbmRpbmdEZWYgPSBzZXR0aW5ncy5iaW5kaW5nO1xuXHRcdGNvbnN0IGZsRGVsZWdhdGUgPSBzZXR0aW5nc1tGTF9ERUxFR0FURV07XG5cdFx0Y29uc3QgZHREZXNpZ250aW1lID0gc2V0dGluZ3NbRFRfREVTSUdOVElNRV07XG5cdFx0ZGVsZXRlIHNldHRpbmdzLnJlZjtcblx0XHRkZWxldGUgc2V0dGluZ3MuY2xhc3M7XG5cdFx0ZGVsZXRlIHNldHRpbmdzLmJpbmRpbmc7XG5cdFx0ZGVsZXRlIHNldHRpbmdzW0ZMX0RFTEVHQVRFXTtcblx0XHRkZWxldGUgc2V0dGluZ3NbRFRfREVTSUdOVElNRV07XG5cdFx0ZGVsZXRlIHNldHRpbmdzW0NPUkVfUkVRVUlSRV07IC8vIENvcmUgcmVxdWlyZSBpcyBub3QgdXNlZnVsIGluIGNvbnRyb2wgbW9kZVxuXHRcdGNvbnN0IHRhcmdldENvbnRyb2xJbnN0YW5jZSA9IG5ldyBDb250cm9sVHlwZShzZXR0aW5ncyBhcyAkQ29udHJvbFNldHRpbmdzKTtcblx0XHRpZiAoY2xhc3NEZWYpIHtcblx0XHRcdHRhcmdldENvbnRyb2xJbnN0YW5jZS5hZGRTdHlsZUNsYXNzKGNsYXNzRGVmKTtcblx0XHR9XG5cdFx0aWYgKHJlZkRlZikge1xuXHRcdFx0cmVmRGVmLnNldEN1cnJlbnQodGFyZ2V0Q29udHJvbEluc3RhbmNlIGFzIHVua25vd24gYXMgVCk7XG5cdFx0fVxuXHRcdGNvbnN0IGN1c3RvbVNldHRpbmdzID0gdGFyZ2V0Q29udHJvbEluc3RhbmNlLmRhdGEoXCJzYXAtdWktY3VzdG9tLXNldHRpbmdzXCIpID8/IHt9O1xuXHRcdGlmIChmbERlbGVnYXRlKSB7XG5cdFx0XHRjdXN0b21TZXR0aW5nc1tcInNhcC51aS5mbFwiXSA/Pz0ge307XG5cdFx0XHRjdXN0b21TZXR0aW5nc1tcInNhcC51aS5mbFwiXS5kZWxlZ2F0ZSA9IGZsRGVsZWdhdGU7XG5cdFx0fVxuXHRcdGlmIChkdERlc2lnbnRpbWUpIHtcblx0XHRcdGN1c3RvbVNldHRpbmdzW1wic2FwLnVpLmR0XCJdID8/PSB7fTtcblx0XHRcdGN1c3RvbVNldHRpbmdzW1wic2FwLnVpLmR0XCJdLmRlc2lnbnRpbWUgPSBkdERlc2lnbnRpbWU7XG5cdFx0fVxuXHRcdGlmIChPYmplY3Qua2V5cyhjdXN0b21TZXR0aW5ncykubGVuZ3RoID4gMCkge1xuXHRcdFx0dGFyZ2V0Q29udHJvbEluc3RhbmNlLmRhdGEoXCJzYXAtdWktY3VzdG9tLXNldHRpbmdzXCIsIGN1c3RvbVNldHRpbmdzKTtcblx0XHR9XG5cblx0XHRpZiAoYmluZGluZ0RlZikge1xuXHRcdFx0aWYgKHR5cGVvZiBiaW5kaW5nRGVmID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdGNvbnN0IGJpbmRpbmdJbmZvID0gQmluZGluZ0luZm8ucGFyc2UoYmluZGluZ0RlZik7XG5cdFx0XHRcdGlmIChiaW5kaW5nSW5mbykge1xuXHRcdFx0XHRcdHRhcmdldENvbnRyb2xJbnN0YW5jZS5iaW5kRWxlbWVudCh7XG5cdFx0XHRcdFx0XHRtb2RlbDogYmluZGluZ0luZm8ubW9kZWwgPz8gdW5kZWZpbmVkLFxuXHRcdFx0XHRcdFx0cGF0aDogYmluZGluZ0luZm8ucGF0aCxcblx0XHRcdFx0XHRcdHBhcmFtZXRlcnM6IGJpbmRpbmdJbmZvLnBhcmFtZXRlcnMgPz8gdW5kZWZpbmVkXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGFyZ2V0Q29udHJvbEluc3RhbmNlLmJpbmRFbGVtZW50KGJpbmRpbmdEZWYpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBXZSBjb25zaWRlciBpdCdzIGFuIG9iamVjdFxuXHRcdFx0XHRPYmplY3Qua2V5cyhiaW5kaW5nRGVmKS5mb3JFYWNoKChiaW5kaW5nRGVmS2V5KSA9PiB7XG5cdFx0XHRcdFx0dGFyZ2V0Q29udHJvbEluc3RhbmNlLmJpbmRFbGVtZW50KHsgbW9kZWw6IGJpbmRpbmdEZWZLZXksIHBhdGg6IGJpbmRpbmdEZWZbYmluZGluZ0RlZktleV0gfSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRmb3IgKGNvbnN0IGxhdGVQcm9wZXJ0aWVzS2V5IGluIGxhdGVQcm9wZXJ0aWVzKSB7XG5cdFx0XHRsYXRlUHJvcGVydGllc1tsYXRlUHJvcGVydGllc0tleV1cblx0XHRcdFx0LnRoZW4oKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIHRhcmdldENvbnRyb2xJbnN0YW5jZS5zZXRQcm9wZXJ0eShsYXRlUHJvcGVydGllc0tleSwgdmFsdWUpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goKGVycm9yKSA9PiB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGBDb3VsZG4ndCBzZXQgcHJvcGVydHkgJHtsYXRlUHJvcGVydGllc0tleX0gb24gJHtDb250cm9sVHlwZS5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKX1gLCBlcnJvciwgXCJqc3hDb250cm9sXCIpO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdFx0dGFyZ2V0Q29udHJvbCA9IHRhcmdldENvbnRyb2xJbnN0YW5jZTtcblx0fSBlbHNlIGlmICh0eXBlb2YgQ29udHJvbFR5cGUgPT09IFwiZnVuY3Rpb25cIikge1xuXHRcdGNvbnN0IGNvbnRyb2xUeXBlRm4gPSBDb250cm9sVHlwZTtcblx0XHR0YXJnZXRDb250cm9sID0gY29udHJvbFR5cGVGbihzZXR0aW5ncyBhcyAkQ29udHJvbFNldHRpbmdzKTtcblx0fSBlbHNlIHtcblx0XHR0YXJnZXRDb250cm9sID0gbmV3IFRleHQoeyB0ZXh0OiBcIk1pc3NpbmcgY29tcG9uZW50IFwiICsgKENvbnRyb2xUeXBlIGFzIHN0cmluZykgfSk7XG5cdH1cblxuXHRyZXR1cm4gdGFyZ2V0Q29udHJvbDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGpzeENvbnRyb2w7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztFQW9CQSxNQUFNQSxXQUFXLEdB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
|
|
285
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGTF9ERUxFR0FURSIsIkNPUkVfUkVRVUlSRSIsIkRUX0RFU0lHTlRJTUUiLCJhZGRDaGlsZEFnZ3JlZ2F0aW9uIiwiYWdncmVnYXRpb25DaGlsZHJlbiIsImFnZ3JlZ2F0aW9uTmFtZSIsImNoaWxkIiwidW5kZWZpbmVkIiwiaXNDaGlsZEFuRWxlbWVudCIsInB1c2giLCJBcnJheSIsImlzQXJyYXkiLCJmb3JFYWNoIiwic3ViQ2hpbGQiLCJPYmplY3QiLCJrZXlzIiwiY2hpbGRLZXkiLCJjaGlsZHJlbiIsImlzQSIsImlzQUNvbnRyb2wiLCJnZXRNZXRhZGF0YSIsInByb2Nlc3NBZ2dyZWdhdGlvbnMiLCJtZXRhZGF0YSIsIm1TZXR0aW5ncyIsIm1ldGFkYXRhQWdncmVnYXRpb25zIiwiZ2V0QWxsQWdncmVnYXRpb25zIiwiZGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZSIsImdldERlZmF1bHRBZ2dyZWdhdGlvbk5hbWUiLCJoYXNPd25Qcm9wZXJ0eSIsInJlc3VsdGluZ1BhcnNlIiwiQmluZGluZ0luZm8iLCJwYXJzZSIsInBhdGgiLCJtb2RlbCIsImZhY3RvcnkiLCJ0ZW1wbGF0ZSIsInByb2Nlc3NCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24iLCJzZXR0aW5ncyIsInNldHRpbmdzS2V5IiwiYmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIiwiYWxsUHJvcGVydGllcyIsImlzQ29uc3RhbnQiLCJjb21waWxlQ29uc3RhbnQiLCJjYWxsIiwiaXNQYXRoSW5Nb2RlbEV4cHJlc3Npb24iLCJtb2RlbE5hbWUiLCJjb21waWxlRXhwcmVzc2lvbiIsInByb2Nlc3NTdHJpbmdQcm9wZXJ0eSIsInZhbHVlIiwiYWxsRXZlbnRzIiwic3RhcnRzV2l0aCIsIkxvZyIsImVycm9yIiwiZ2V0TmFtZSIsInByb3BlcnR5VHlwZSIsImdldFR5cGUiLCJEYXRhVHlwZSIsImluY2x1ZGVzIiwicGFyc2VWYWx1ZSIsInByb2Nlc3NPYmplY3RQcm9wZXJ0eSIsImxhdGVQcm9wZXJ0aWVzIiwidGhlbiIsIl9fYmluZGluZ0luZm8iLCJwcm9jZXNzUHJvcGVydGllcyIsImdldEFsbEV2ZW50cyIsImdldEFsbFByb3BlcnRpZXMiLCJpc0JpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiIsInByb2Nlc3NDb21tYW5kIiwiY29tbWFuZFByb3BlcnR5IiwiY29tbWFuZCIsImV2ZW50TmFtZSIsInNwbGl0IiwiZXZlbnQiLCJuYW1lIiwiRXZlbnRIYW5kbGVyUmVzb2x2ZXIiLCJyZXNvbHZlRXZlbnRIYW5kbGVyIiwianN4Q29udHJvbCIsIkNvbnRyb2xUeXBlIiwia2V5IiwiX2pzeENvbnRleHQiLCJfanN4Rm9ybWF0dGVyQ29udGV4dCIsInRhcmdldENvbnRyb2wiLCJpc0ZyYWdtZW50IiwiY2xhc3NEZWYiLCJjbGFzcyIsInJlZkRlZiIsInJlZiIsImJpbmRpbmdEZWYiLCJiaW5kaW5nIiwiZmxEZWxlZ2F0ZSIsImR0RGVzaWdudGltZSIsInRhcmdldENvbnRyb2xJbnN0YW5jZSIsImFkZFN0eWxlQ2xhc3MiLCJzZXRDdXJyZW50IiwiY3VzdG9tU2V0dGluZ3MiLCJkYXRhIiwiZGVsZWdhdGUiLCJkZXNpZ250aW1lIiwibGVuZ3RoIiwiYmluZGluZ0luZm8iLCJiaW5kRWxlbWVudCIsInBhcmFtZXRlcnMiLCJiaW5kaW5nRGVmS2V5IiwibGF0ZVByb3BlcnRpZXNLZXkiLCJzZXRQcm9wZXJ0eSIsImNhdGNoIiwiY29udHJvbFR5cGVGbiIsIlRleHQiLCJ0ZXh0Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJqc3gtY29udHJvbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQge1xuXHRjb21waWxlQ29uc3RhbnQsXG5cdGNvbXBpbGVFeHByZXNzaW9uLFxuXHRpc0JpbmRpbmdUb29sa2l0RXhwcmVzc2lvbixcblx0aXNDb25zdGFudCxcblx0aXNQYXRoSW5Nb2RlbEV4cHJlc3Npb25cbn0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdJbmZvSG9sZGVyLCBOb25BYnN0cmFjdENsYXNzIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sUHJvcGVydGllcywgSlNYQ29udGV4dCwgTm9uQ29udHJvbFByb3BlcnRpZXMsIFJlZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9qc3gtcnVudGltZS9qc3hcIjtcbmltcG9ydCBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgQmluZGluZ0luZm8gZnJvbSBcInNhcC91aS9iYXNlL0JpbmRpbmdJbmZvXCI7XG5pbXBvcnQgRGF0YVR5cGUgZnJvbSBcInNhcC91aS9iYXNlL0RhdGFUeXBlXCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0TWV0YWRhdGEgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RNZXRhZGF0YVwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBFbGVtZW50LCBkZWZhdWx0IGFzIFVJNUVsZW1lbnQgfSBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEV2ZW50SGFuZGxlclJlc29sdmVyIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvRXZlbnRIYW5kbGVyUmVzb2x2ZXJcIjtcblxuY29uc3QgRkxfREVMRUdBVEUgPSBcImZsOmRlbGVnYXRlXCI7XG5jb25zdCBDT1JFX1JFUVVJUkUgPSBcImNvcmU6cmVxdWlyZVwiO1xuY29uc3QgRFRfREVTSUdOVElNRSA9IFwiZHQ6ZGVzaWdudGltZVwiO1xuY29uc3QgYWRkQ2hpbGRBZ2dyZWdhdGlvbiA9IGZ1bmN0aW9uIChcblx0YWdncmVnYXRpb25DaGlsZHJlbjogUmVjb3JkPHN0cmluZywgKHN0cmluZyB8IFVJNUVsZW1lbnQpW10+LFxuXHRhZ2dyZWdhdGlvbk5hbWU6IHN0cmluZyxcblx0Y2hpbGQ/OiBzdHJpbmcgfCBVSTVFbGVtZW50IHwgVUk1RWxlbWVudFtdXG4pOiB2b2lkIHtcblx0aWYgKGNoaWxkID09PSBudWxsIHx8IGNoaWxkID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGNoaWxkID09PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGlmICghYWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdKSB7XG5cdFx0YWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdID0gW107XG5cdH1cblx0aWYgKGlzQ2hpbGRBbkVsZW1lbnQoY2hpbGQpKSB7XG5cdFx0YWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdLnB1c2goY2hpbGQpO1xuXHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGQpKSB7XG5cdFx0Y2hpbGQuZm9yRWFjaCgoc3ViQ2hpbGQpID0+IHtcblx0XHRcdGFkZENoaWxkQWdncmVnYXRpb24oYWdncmVnYXRpb25DaGlsZHJlbiwgYWdncmVnYXRpb25OYW1lLCBzdWJDaGlsZCk7XG5cdFx0fSk7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGNoaWxkID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRhZ2dyZWdhdGlvbkNoaWxkcmVuW2FnZ3JlZ2F0aW9uTmFtZV0gPSBjaGlsZDtcblx0fSBlbHNlIHtcblx0XHRPYmplY3Qua2V5cyhjaGlsZCkuZm9yRWFjaCgoY2hpbGRLZXkpID0+IHtcblx0XHRcdGFkZENoaWxkQWdncmVnYXRpb24oYWdncmVnYXRpb25DaGlsZHJlbiwgY2hpbGRLZXksIGNoaWxkW2NoaWxkS2V5XSk7XG5cdFx0fSk7XG5cdH1cbn07XG5jb25zdCBpc0NoaWxkQW5FbGVtZW50ID0gZnVuY3Rpb24gKGNoaWxkcmVuPzogdW5rbm93bik6IGNoaWxkcmVuIGlzIEVsZW1lbnQge1xuXHRyZXR1cm4gKGNoaWxkcmVuIGFzIEVsZW1lbnQpPy5pc0E/LihcInNhcC51aS5jb3JlLkVsZW1lbnRcIik7XG59O1xuY29uc3QgaXNBQ29udHJvbCA9IGZ1bmN0aW9uIChjaGlsZHJlbj86IHR5cGVvZiBDb250cm9sIHwgRnVuY3Rpb24pOiBjaGlsZHJlbiBpcyBOb25BYnN0cmFjdENsYXNzPENvbnRyb2w+IHtcblx0cmV0dXJuICEhKGNoaWxkcmVuIGFzIHR5cGVvZiBDb250cm9sKT8uZ2V0TWV0YWRhdGE7XG59O1xuXG5mdW5jdGlvbiBwcm9jZXNzQWdncmVnYXRpb25zKG1ldGFkYXRhOiBNYW5hZ2VkT2JqZWN0TWV0YWRhdGEsIG1TZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcblx0Y29uc3QgbWV0YWRhdGFBZ2dyZWdhdGlvbnMgPSBtZXRhZGF0YS5nZXRBbGxBZ2dyZWdhdGlvbnMoKTtcblx0Y29uc3QgZGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZSA9IG1ldGFkYXRhLmdldERlZmF1bHRBZ2dyZWdhdGlvbk5hbWUoKTtcblx0Y29uc3QgYWdncmVnYXRpb25DaGlsZHJlbjogUmVjb3JkPHN0cmluZywgKHN0cmluZyB8IFVJNUVsZW1lbnQpW10+ID0ge307XG5cdGFkZENoaWxkQWdncmVnYXRpb24oYWdncmVnYXRpb25DaGlsZHJlbiwgZGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZSwgbVNldHRpbmdzLmNoaWxkcmVuIGFzIHN0cmluZyB8IFVJNUVsZW1lbnQgfCBVSTVFbGVtZW50W10pO1xuXHRkZWxldGUgbVNldHRpbmdzLmNoaWxkcmVuO1xuXHQvLyBmaW5kIG91dCB3aGljaCBhZ2dyZWdhdGlvbiBhcmUgYm91bmQgKGJvdGggaW4gY2hpbGRyZW4gYW5kIGRpcmVjdGx5IHVuZGVyIGl0KVxuXHRPYmplY3Qua2V5cyhtZXRhZGF0YUFnZ3JlZ2F0aW9ucykuZm9yRWFjaCgoYWdncmVnYXRpb25OYW1lKSA9PiB7XG5cdFx0aWYgKGFnZ3JlZ2F0aW9uQ2hpbGRyZW5bYWdncmVnYXRpb25OYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAobVNldHRpbmdzLmhhc093blByb3BlcnR5KGFnZ3JlZ2F0aW9uTmFtZSkpIHtcblx0XHRcdFx0aWYgKHR5cGVvZiBtU2V0dGluZ3NbYWdncmVnYXRpb25OYW1lXSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRcdGNvbnN0IHJlc3VsdGluZ1BhcnNlID0gQmluZGluZ0luZm8ucGFyc2UobVNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZV0pO1xuXHRcdFx0XHRcdGlmIChyZXN1bHRpbmdQYXJzZSkge1xuXHRcdFx0XHRcdFx0bVNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZV0gPSB7XG5cdFx0XHRcdFx0XHRcdHBhdGg6IHJlc3VsdGluZ1BhcnNlLnBhdGgsXG5cdFx0XHRcdFx0XHRcdG1vZGVsOiByZXN1bHRpbmdQYXJzZS5tb2RlbFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0bVNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZV0gPSB7XG5cdFx0XHRcdFx0XHRcdHBhdGg6IG1TZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodHlwZW9mIGFnZ3JlZ2F0aW9uQ2hpbGRyZW5bYWdncmVnYXRpb25OYW1lXSA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHRcdFx0KG1TZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdIGFzIHsgZmFjdG9yeTogRnVuY3Rpb24gfSkuZmFjdG9yeSA9IGFnZ3JlZ2F0aW9uQ2hpbGRyZW5bXG5cdFx0XHRcdFx0XHRhZ2dyZWdhdGlvbk5hbWVcblx0XHRcdFx0XHRdIGFzIHVua25vd24gYXMgRnVuY3Rpb247XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0KG1TZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdIGFzIHsgdGVtcGxhdGU6IHN0cmluZyB8IFVJNUVsZW1lbnQgfSkudGVtcGxhdGUgPSBhZ2dyZWdhdGlvbkNoaWxkcmVuW2FnZ3JlZ2F0aW9uTmFtZV1bMF07XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1TZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdID0gYWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIGEgYmluZGluZyB0b29sa2l0IGV4cHJlc3Npb24gcHJvcGVydHkgZm9yIGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0aWVzXG4gKlxuICogSWYgdGhlIHByb3BlcnR5IGlzIGEgY29uc3RhbnQsIGl0IGNvbXBpbGVzIGl0IGFzIGEgY29uc3RhbnQuIElmIHRoZSBwcm9wZXJ0eSBpcyBhbiBhZ2dyZWdhdGlvbixcbiAqIGl0IGNvbXBpbGVzIHRoZSBleHByZXNzaW9uIGFzIGFuIG9iamVjdC4gT3RoZXJ3aXNlLCBpdCBjb21waWxlcyB0aGUgZXhwcmVzc2lvbiBub3JtYWxseS5cbiAqIEBwYXJhbSBzZXR0aW5ncyBUaGUgc2V0dGluZ3Mgb2YgdGhlIGNvbnRyb2xcbiAqIEBwYXJhbSBzZXR0aW5nc0tleSBUaGUga2V5IG9mIHRoZSBzZXR0aW5nIGJlaW5nIHByb2Nlc3NlZFxuICogQHBhcmFtIGJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiBUaGUgYmluZGluZyB0b29sa2l0IGV4cHJlc3Npb24gdG8gcHJvY2Vzc1xuICogQHBhcmFtIGFsbFByb3BlcnRpZXMgQWxsIHByb3BlcnRpZXMgb2YgdGhlIGNvbnRyb2xcbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc0JpbmRpbmdUb29sa2l0RXhwcmVzc2lvbihcblx0c2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRzZXR0aW5nc0tleToga2V5b2YgdHlwZW9mIHNldHRpbmdzLFxuXHRiaW5kaW5nVG9vbGtpdEV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjx1bmtub3duPixcblx0YWxsUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbik6IHZvaWQge1xuXHRpZiAoaXNDb25zdGFudChiaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24pKSB7XG5cdFx0c2V0dGluZ3Nbc2V0dGluZ3NLZXldID0gY29tcGlsZUNvbnN0YW50KGJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgZmFsc2UsIHRydWUsIHRydWUpO1xuXHR9IGVsc2UgaWYgKCFPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChhbGxQcm9wZXJ0aWVzLCBzZXR0aW5nc0tleSkpIHtcblx0XHQvLyBBZ2dyZWdhdGlvbiBjYXNlIC0gd2UgbmVlZCB0byBjb21waWxlIHRoZSBleHByZXNzaW9uIGJ1dCBhcyBhbiBvYmplY3Rcblx0XHRpZiAoaXNQYXRoSW5Nb2RlbEV4cHJlc3Npb24oYmluZGluZ1Rvb2xraXRFeHByZXNzaW9uKSkge1xuXHRcdFx0c2V0dGluZ3Nbc2V0dGluZ3NLZXldID0geyBwYXRoOiBiaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ucGF0aCwgbW9kZWw6IGJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbi5tb2RlbE5hbWUgfTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0c2V0dGluZ3Nbc2V0dGluZ3NLZXldID0gY29tcGlsZUV4cHJlc3Npb24oYmluZGluZ1Rvb2xraXRFeHByZXNzaW9uKTtcblx0fVxufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhIHN0cmluZyBwcm9wZXJ0eSBmb3IgZnVuY3Rpb24gcHJvY2Vzc1Byb3BlcnRpZXNcbiAqXG4gKiBJZiB0aGUgcHJvcGVydHkgaXMgbm90IGEgYmluZGluZyBleHByZXNzaW9uIGFuZCBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LFxuICogaXQgcGFyc2VzIHRoZSB2YWx1ZSB0byBwcm92aWRlIHRoZSBleHBlY3RlZCBmb3JtYXQuIElmIHRoZSBwcm9wZXJ0eSBpcyBhbiBldmVudCBoYW5kbGVyLFxuICogaXQgbG9ncyBhbiBlcnJvci5cbiAqIEBwYXJhbSBzZXR0aW5ncyBUaGUgc2V0dGluZ3Mgb2YgdGhlIGNvbnRyb2xcbiAqIEBwYXJhbSBzZXR0aW5nc0tleSBUaGUga2V5IG9mIHRoZSBzZXR0aW5nIGJlaW5nIHByb2Nlc3NlZFxuICogQHBhcmFtIHZhbHVlIFRoZSBzdHJpbmcgdmFsdWUgdG8gcHJvY2Vzc1xuICogQHBhcmFtIGFsbEV2ZW50cyBBbGwgZXZlbnRzIG9mIHRoZSBjb250cm9sXG4gKiBAcGFyYW0gYWxsUHJvcGVydGllcyBBbGwgcHJvcGVydGllcyBvZiB0aGUgY29udHJvbFxuICogQHBhcmFtIG1ldGFkYXRhIE1ldGFkYXRhIG9mIHRoZSBjb250cm9sXG4gKi9cbmZ1bmN0aW9uIHByb2Nlc3NTdHJpbmdQcm9wZXJ0eShcblx0c2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRzZXR0aW5nc0tleToga2V5b2YgdHlwZW9mIHNldHRpbmdzLFxuXHR2YWx1ZTogc3RyaW5nLFxuXHRhbGxFdmVudHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRhbGxQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcblx0bWV0YWRhdGE6IE1hbmFnZWRPYmplY3RNZXRhZGF0YVxuKTogdm9pZCB7XG5cdGlmICghdmFsdWUuc3RhcnRzV2l0aChcIntcIikpIHtcblx0XHRpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwoYWxsRXZlbnRzLCBzZXR0aW5nc0tleSkpIHtcblx0XHRcdExvZy5lcnJvcihgRXZlbnQgaGFuZGxlcnMgY2Fubm90IGJlIHNldCBhcyBzdHJpbmcgaW4gSlNYLCAke3NldHRpbmdzS2V5fSBpbiAke21ldGFkYXRhLmdldE5hbWUoKX1gKTtcblx0XHR9XG5cdFx0Y29uc3QgcHJvcGVydHlUeXBlID0gKGFsbFByb3BlcnRpZXNbc2V0dGluZ3NLZXldIGFzIHsgZ2V0VHlwZT86IEZ1bmN0aW9uIH0pPy5nZXRUeXBlPy4oKTtcblx0XHRpZiAocHJvcGVydHlUeXBlICYmIHByb3BlcnR5VHlwZSBpbnN0YW5jZW9mIERhdGFUeXBlICYmIFtcImJvb2xlYW5cIiwgXCJpbnRcIiwgXCJmbG9hdFwiXS5pbmNsdWRlcyhwcm9wZXJ0eVR5cGUuZ2V0TmFtZSgpKSkge1xuXHRcdFx0c2V0dGluZ3Nbc2V0dGluZ3NLZXldID0gcHJvcGVydHlUeXBlLnBhcnNlVmFsdWUodmFsdWUpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRzZXR0aW5nc1tzZXR0aW5nc0tleV0gPSB2YWx1ZTtcblx0fVxufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhbiBvYmplY3QgcHJvcGVydHkgZm9yIGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0aWVzLlxuICpcbiAqIElmIHRoZSBwcm9wZXJ0eSBpcyBhIHByb21pc2UsIGl0IGFkZHMgaXQgdG8gdGhlIGxhdGUgcHJvcGVydGllcyBtYXAuIElmIHRoZSBwcm9wZXJ0eSBpcyBhIGJpbmRpbmcgaW5mbyBob2xkZXIsXG4gKiBpdCBzZXRzIHRoZSBiaW5kaW5nIGluZm8gdG8gdGhlIHNldHRpbmdzLlxuICogQHBhcmFtIHNldHRpbmdzIFRoZSBzZXR0aW5ncyBvZiB0aGUgY29udHJvbFxuICogQHBhcmFtIHNldHRpbmdzS2V5IFRoZSBrZXkgb2YgdGhlIHNldHRpbmcgYmVpbmcgcHJvY2Vzc2VkXG4gKiBAcGFyYW0gdmFsdWUgVGhlIG9iamVjdCB2YWx1ZSB0byBwcm9jZXNzXG4gKiBAcGFyYW0gbGF0ZVByb3BlcnRpZXMgQSBtYXAgb2YgdGhlIGNvbnRyb2wncyBsYXRlIHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc09iamVjdFByb3BlcnR5KFxuXHRzZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG5cdHNldHRpbmdzS2V5OiBrZXlvZiB0eXBlb2Ygc2V0dGluZ3MsXG5cdHZhbHVlOiB1bmtub3duLFxuXHRsYXRlUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgUHJvbWlzZTx1bmtub3duPj5cbik6IHZvaWQge1xuXHRpZiAoKHZhbHVlIGFzIFByb21pc2U8dW5rbm93bj4pLnRoZW4pIHtcblx0XHRsYXRlUHJvcGVydGllc1tzZXR0aW5nc0tleV0gPSB2YWx1ZSBhcyBQcm9taXNlPHVua25vd24+O1xuXHRcdGRlbGV0ZSBzZXR0aW5nc1tzZXR0aW5nc0tleV07XG5cdH0gZWxzZSBpZiAoKHZhbHVlIGFzIEJpbmRpbmdJbmZvSG9sZGVyPHVua25vd24+KS5fX2JpbmRpbmdJbmZvKSB7XG5cdFx0c2V0dGluZ3Nbc2V0dGluZ3NLZXldID0gKHZhbHVlIGFzIEJpbmRpbmdJbmZvSG9sZGVyPHVua25vd24+KS5fX2JpbmRpbmdJbmZvO1xuXHR9XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIHRoZSBwcm9wZXJ0aWVzLlxuICpcbiAqIElmIHRoZSBwcm9wZXJ0eSBpcyBhIGJpbmRpbmdUb29sa2l0IGV4cHJlc3Npb24gd2UgbmVlZCB0byBjb21waWxlIGl0LlxuICogRWxzZSBpZiB0aGUgcHJvcGVydHkgaXMgc2V0IGFzIHN0cmluZyAoY29tcGlsZWQgYmluZGluZyBleHByZXNzaW9uIHJldHVybnMgc3RyaW5nIGJ5IGRlZmF1bHQgZXZlbiBpZiBpdCdzIGEgYm9vbGVhbiwgaW50LCBldGMuKSBhbmQgaXQgZG9lc24ndCBtYXRjaCB3aXRoIGV4cGVjdGVkXG4gKiBmb3JtYXQgdGhlIHZhbHVlIGlzIHBhcnNlZCB0byBwcm92aWRlIGV4cGVjdGVkIGZvcm1hdC5cbiAqIEBwYXJhbSBtZXRhZGF0YSBNZXRhZGF0YSBvZiB0aGUgY29udHJvbFxuICogQHBhcmFtIHNldHRpbmdzIFNldHRpbmdzIG9mIHRoZSBjb250cm9sXG4gKiBAcmV0dXJucyBBIG1hcCBvZiBsYXRlIHByb3BlcnRpZXMgdGhhdCBuZWVkIHRvIGJlIGF3YWl0ZWQgYWZ0ZXIgdGhlIGNvbnRyb2wgaXMgY3JlYXRlZFxuICovXG5mdW5jdGlvbiBwcm9jZXNzUHJvcGVydGllcyhtZXRhZGF0YTogTWFuYWdlZE9iamVjdE1ldGFkYXRhLCBzZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZWNvcmQ8c3RyaW5nLCBQcm9taXNlPHVua25vd24+PiB7XG5cdGxldCBzZXR0aW5nc0tleToga2V5b2YgdHlwZW9mIHNldHRpbmdzO1xuXHRjb25zdCBsYXRlUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgUHJvbWlzZTx1bmtub3duPj4gPSB7fTtcblx0Y29uc3QgYWxsRXZlbnRzID0gbWV0YWRhdGEuZ2V0QWxsRXZlbnRzKCk7XG5cdGNvbnN0IGFsbFByb3BlcnRpZXMgPSBtZXRhZGF0YS5nZXRBbGxQcm9wZXJ0aWVzKCk7XG5cblx0Zm9yIChzZXR0aW5nc0tleSBpbiBzZXR0aW5ncykge1xuXHRcdGNvbnN0IHZhbHVlID0gc2V0dGluZ3Nbc2V0dGluZ3NLZXldO1xuXHRcdGlmIChpc0JpbmRpbmdUb29sa2l0RXhwcmVzc2lvbih2YWx1ZSkpIHtcblx0XHRcdHByb2Nlc3NCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24oc2V0dGluZ3MsIHNldHRpbmdzS2V5LCB2YWx1ZSwgYWxsUHJvcGVydGllcyk7XG5cdFx0fSBlbHNlIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdHByb2Nlc3NPYmplY3RQcm9wZXJ0eShzZXR0aW5ncywgc2V0dGluZ3NLZXksIHZhbHVlLCBsYXRlUHJvcGVydGllcyk7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdHByb2Nlc3NTdHJpbmdQcm9wZXJ0eShzZXR0aW5ncywgc2V0dGluZ3NLZXksIHZhbHVlLCBhbGxFdmVudHMsIGFsbFByb3BlcnRpZXMsIG1ldGFkYXRhKTtcblx0XHR9IGVsc2UgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGRlbGV0ZSBzZXR0aW5nc1tzZXR0aW5nc0tleV07XG5cdFx0fVxuXHR9XG5cdHJldHVybiBsYXRlUHJvcGVydGllcztcbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgdGhlIGNvbW1hbmQuXG4gKlxuICogUmVzb2x2ZXMgdGhlIGNvbW1hbmQgc2V0IG9uIHRoZSBjb250cm9sIHZpYSB0aGUgaW50cmluc2ljIGNsYXNzIGF0dHJpYnV0ZSBcImpzeDpjb21tYW5kXCIuXG4gKiBJZiBubyBjb21tYW5kIGhhcyBiZWVuIHNldCBvciB0aGUgdGFyZ2V0ZWQgZXZlbnQgZG9lc24ndCBleGlzdCwgbm8gY29uZmlndXJhdGlvbiBpcyBzZXQuXG4gKiBAcGFyYW0gbWV0YWRhdGEgTWV0YWRhdGEgb2YgdGhlIGNvbnRyb2xcbiAqIEBwYXJhbSBzZXR0aW5ncyBTZXR0aW5ncyBvZiB0aGUgY29udHJvbFxuICovXG5mdW5jdGlvbiBwcm9jZXNzQ29tbWFuZChtZXRhZGF0YTogTWFuYWdlZE9iamVjdE1ldGFkYXRhLCBzZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcblx0Y29uc3QgY29tbWFuZFByb3BlcnR5ID0gc2V0dGluZ3NbXCJqc3g6Y29tbWFuZFwiXTtcblx0aWYgKGNvbW1hbmRQcm9wZXJ0eSkge1xuXHRcdGNvbnN0IFtjb21tYW5kLCBldmVudE5hbWVdID0gKGNvbW1hbmRQcm9wZXJ0eSBhcyBzdHJpbmcpLnNwbGl0KFwifFwiKTtcblx0XHRjb25zdCBldmVudCA9IG1ldGFkYXRhLmdldEFsbEV2ZW50cygpW2V2ZW50TmFtZV07XG5cdFx0aWYgKGV2ZW50ICYmIGNvbW1hbmQuc3RhcnRzV2l0aChcImNtZDpcIikpIHtcblx0XHRcdHNldHRpbmdzW2V2ZW50Lm5hbWVdID0gRXZlbnRIYW5kbGVyUmVzb2x2ZXIucmVzb2x2ZUV2ZW50SGFuZGxlcihjb21tYW5kKTtcblx0XHR9XG5cdH1cblx0ZGVsZXRlIHNldHRpbmdzW1wianN4OmNvbW1hbmRcIl07XG59XG5cbmNvbnN0IGpzeENvbnRyb2wgPSBmdW5jdGlvbiA8VCBleHRlbmRzIEVsZW1lbnQ+KFxuXHRDb250cm9sVHlwZTogTm9uQWJzdHJhY3RDbGFzczxDb250cm9sPiB8IEZ1bmN0aW9uLFxuXHRzZXR0aW5nczogTm9uQ29udHJvbFByb3BlcnRpZXM8VD4gJiB7XG5cdFx0a2V5OiBzdHJpbmc7XG5cdFx0Y2hpbGRyZW4/OiBFbGVtZW50IHwgQ29udHJvbFByb3BlcnRpZXM8VD47XG5cdFx0cmVmPzogUmVmPFQ+O1xuXHRcdGJpbmRpbmc/OiBzdHJpbmc7XG5cdFx0Y2xhc3M/OiBzdHJpbmc7XG5cdFx0W0ZMX0RFTEVHQVRFXT86IHN0cmluZztcblx0XHRbRFRfREVTSUdOVElNRV0/OiBzdHJpbmc7XG5cdFx0W0NPUkVfUkVRVUlSRV0/OiBzdHJpbmc7XG5cdH0sXG5cdGtleTogc3RyaW5nLFxuXHRfanN4Q29udGV4dDogSlNYQ29udGV4dCxcblx0X2pzeEZvcm1hdHRlckNvbnRleHQ6IG9iamVjdFxuKTogQ29udHJvbCB8IENvbnRyb2xbXSB8IHVuZGVmaW5lZCB7XG5cdGxldCB0YXJnZXRDb250cm9sOiBDb250cm9sIHwgQ29udHJvbFtdIHwgdW5kZWZpbmVkO1xuXG5cdGlmICgoQ29udHJvbFR5cGUgYXMgeyBpc0ZyYWdtZW50PzogYm9vbGVhbiB9KT8uaXNGcmFnbWVudCkge1xuXHRcdHRhcmdldENvbnRyb2wgPSBzZXR0aW5ncy5jaGlsZHJlbiBhcyBDb250cm9sIHwgQ29udHJvbFtdO1xuXHR9IGVsc2UgaWYgKGlzQUNvbnRyb2woQ29udHJvbFR5cGUpKSB7XG5cdFx0Y29uc3QgbWV0YWRhdGEgPSBDb250cm9sVHlwZS5nZXRNZXRhZGF0YSgpO1xuXHRcdGlmIChrZXkgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0c2V0dGluZ3NbXCJrZXlcIl0gPSBrZXk7XG5cdFx0fVxuXHRcdGNvbnN0IGxhdGVQcm9wZXJ0aWVzID0gcHJvY2Vzc1Byb3BlcnRpZXMobWV0YWRhdGEsIHNldHRpbmdzKTtcblx0XHRwcm9jZXNzQ29tbWFuZChtZXRhZGF0YSwgc2V0dGluZ3MpO1xuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnMobWV0YWRhdGEsIHNldHRpbmdzKTtcblx0XHRjb25zdCBjbGFzc0RlZiA9IHNldHRpbmdzLmNsYXNzO1xuXHRcdGNvbnN0IHJlZkRlZiA9IHNldHRpbmdzLnJlZjtcblx0XHRjb25zdCBiaW5kaW5nRGVmID0gc2V0dGluZ3MuYmluZGluZztcblx0XHRjb25zdCBmbERlbGVnYXRlID0gc2V0dGluZ3NbRkxfREVMRUdBVEVdO1xuXHRcdGNvbnN0IGR0RGVzaWdudGltZSA9IHNldHRpbmdzW0RUX0RFU0lHTlRJTUVdO1xuXHRcdGRlbGV0ZSBzZXR0aW5ncy5yZWY7XG5cdFx0ZGVsZXRlIHNldHRpbmdzLmNsYXNzO1xuXHRcdGRlbGV0ZSBzZXR0aW5ncy5iaW5kaW5nO1xuXHRcdGRlbGV0ZSBzZXR0aW5nc1tGTF9ERUxFR0FURV07XG5cdFx0ZGVsZXRlIHNldHRpbmdzW0RUX0RFU0lHTlRJTUVdO1xuXHRcdGRlbGV0ZSBzZXR0aW5nc1tDT1JFX1JFUVVJUkVdOyAvLyBDb3JlIHJlcXVpcmUgaXMgbm90IHVzZWZ1bCBpbiBjb250cm9sIG1vZGVcblx0XHRjb25zdCB0YXJnZXRDb250cm9sSW5zdGFuY2UgPSBuZXcgQ29udHJvbFR5cGUoc2V0dGluZ3MgYXMgJENvbnRyb2xTZXR0aW5ncywgeyAuLi5fanN4Rm9ybWF0dGVyQ29udGV4dCB9KTtcblx0XHRpZiAoY2xhc3NEZWYpIHtcblx0XHRcdHRhcmdldENvbnRyb2xJbnN0YW5jZS5hZGRTdHlsZUNsYXNzKGNsYXNzRGVmKTtcblx0XHR9XG5cdFx0aWYgKHJlZkRlZikge1xuXHRcdFx0cmVmRGVmLnNldEN1cnJlbnQodGFyZ2V0Q29udHJvbEluc3RhbmNlIGFzIHVua25vd24gYXMgVCk7XG5cdFx0fVxuXHRcdGNvbnN0IGN1c3RvbVNldHRpbmdzID0gdGFyZ2V0Q29udHJvbEluc3RhbmNlLmRhdGEoXCJzYXAtdWktY3VzdG9tLXNldHRpbmdzXCIpID8/IHt9O1xuXHRcdGlmIChmbERlbGVnYXRlKSB7XG5cdFx0XHRjdXN0b21TZXR0aW5nc1tcInNhcC51aS5mbFwiXSA/Pz0ge307XG5cdFx0XHRjdXN0b21TZXR0aW5nc1tcInNhcC51aS5mbFwiXS5kZWxlZ2F0ZSA9IGZsRGVsZWdhdGU7XG5cdFx0fVxuXHRcdGlmIChkdERlc2lnbnRpbWUpIHtcblx0XHRcdGN1c3RvbVNldHRpbmdzW1wic2FwLnVpLmR0XCJdID8/PSB7fTtcblx0XHRcdGN1c3RvbVNldHRpbmdzW1wic2FwLnVpLmR0XCJdLmRlc2lnbnRpbWUgPSBkdERlc2lnbnRpbWU7XG5cdFx0fVxuXHRcdGlmIChPYmplY3Qua2V5cyhjdXN0b21TZXR0aW5ncykubGVuZ3RoID4gMCkge1xuXHRcdFx0dGFyZ2V0Q29udHJvbEluc3RhbmNlLmRhdGEoXCJzYXAtdWktY3VzdG9tLXNldHRpbmdzXCIsIGN1c3RvbVNldHRpbmdzKTtcblx0XHR9XG5cblx0XHRpZiAoYmluZGluZ0RlZikge1xuXHRcdFx0aWYgKHR5cGVvZiBiaW5kaW5nRGVmID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdGNvbnN0IGJpbmRpbmdJbmZvID0gQmluZGluZ0luZm8ucGFyc2UoYmluZGluZ0RlZik7XG5cdFx0XHRcdGlmIChiaW5kaW5nSW5mbykge1xuXHRcdFx0XHRcdHRhcmdldENvbnRyb2xJbnN0YW5jZS5iaW5kRWxlbWVudCh7XG5cdFx0XHRcdFx0XHRtb2RlbDogYmluZGluZ0luZm8ubW9kZWwgPz8gdW5kZWZpbmVkLFxuXHRcdFx0XHRcdFx0cGF0aDogYmluZGluZ0luZm8ucGF0aCxcblx0XHRcdFx0XHRcdHBhcmFtZXRlcnM6IGJpbmRpbmdJbmZvLnBhcmFtZXRlcnMgPz8gdW5kZWZpbmVkXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGFyZ2V0Q29udHJvbEluc3RhbmNlLmJpbmRFbGVtZW50KGJpbmRpbmdEZWYpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBXZSBjb25zaWRlciBpdCdzIGFuIG9iamVjdFxuXHRcdFx0XHRPYmplY3Qua2V5cyhiaW5kaW5nRGVmKS5mb3JFYWNoKChiaW5kaW5nRGVmS2V5KSA9PiB7XG5cdFx0XHRcdFx0dGFyZ2V0Q29udHJvbEluc3RhbmNlLmJpbmRFbGVtZW50KHsgbW9kZWw6IGJpbmRpbmdEZWZLZXksIHBhdGg6IGJpbmRpbmdEZWZbYmluZGluZ0RlZktleV0gfSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRmb3IgKGNvbnN0IGxhdGVQcm9wZXJ0aWVzS2V5IGluIGxhdGVQcm9wZXJ0aWVzKSB7XG5cdFx0XHRsYXRlUHJvcGVydGllc1tsYXRlUHJvcGVydGllc0tleV1cblx0XHRcdFx0LnRoZW4oKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIHRhcmdldENvbnRyb2xJbnN0YW5jZS5zZXRQcm9wZXJ0eShsYXRlUHJvcGVydGllc0tleSwgdmFsdWUpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goKGVycm9yKSA9PiB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGBDb3VsZG4ndCBzZXQgcHJvcGVydHkgJHtsYXRlUHJvcGVydGllc0tleX0gb24gJHtDb250cm9sVHlwZS5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKX1gLCBlcnJvciwgXCJqc3hDb250cm9sXCIpO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdFx0dGFyZ2V0Q29udHJvbCA9IHRhcmdldENvbnRyb2xJbnN0YW5jZTtcblx0fSBlbHNlIGlmICh0eXBlb2YgQ29udHJvbFR5cGUgPT09IFwiZnVuY3Rpb25cIikge1xuXHRcdGNvbnN0IGNvbnRyb2xUeXBlRm4gPSBDb250cm9sVHlwZTtcblx0XHR0YXJnZXRDb250cm9sID0gY29udHJvbFR5cGVGbihzZXR0aW5ncyBhcyAkQ29udHJvbFNldHRpbmdzKTtcblx0fSBlbHNlIHtcblx0XHR0YXJnZXRDb250cm9sID0gbmV3IFRleHQoeyB0ZXh0OiBcIk1pc3NpbmcgY29tcG9uZW50IFwiICsgKENvbnRyb2xUeXBlIGFzIHN0cmluZykgfSk7XG5cdH1cblxuXHRyZXR1cm4gdGFyZ2V0Q29u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
|
|
@@ -240,7 +240,8 @@ const jsxControl = function <T extends Element>(
|
|
|
240
240
|
[CORE_REQUIRE]?: string;
|
|
241
241
|
},
|
|
242
242
|
key: string,
|
|
243
|
-
|
|
243
|
+
_jsxContext: JSXContext,
|
|
244
|
+
_jsxFormatterContext: object
|
|
244
245
|
): Control | Control[] | undefined {
|
|
245
246
|
let targetControl: Control | Control[] | undefined;
|
|
246
247
|
|
|
@@ -265,7 +266,7 @@ const jsxControl = function <T extends Element>(
|
|
|
265
266
|
delete settings[FL_DELEGATE];
|
|
266
267
|
delete settings[DT_DESIGNTIME];
|
|
267
268
|
delete settings[CORE_REQUIRE]; // Core require is not useful in control mode
|
|
268
|
-
const targetControlInstance = new ControlType(settings as $ControlSettings);
|
|
269
|
+
const targetControlInstance = new ControlType(settings as $ControlSettings, { ..._jsxFormatterContext });
|
|
269
270
|
if (classDef) {
|
|
270
271
|
targetControlInstance.addStyleClass(classDef);
|
|
271
272
|
}
|
|
@@ -10,7 +10,7 @@ sap.ui.define(["sap/fe/base/jsx-runtime/jsx-control", "sap/fe/base/jsx-runtime/j
|
|
|
10
10
|
let xmlNamespaceMap = {};
|
|
11
11
|
const jsx = function (ControlType, mSettings, key) {
|
|
12
12
|
if (!renderNextAsXML && !renderNextUsingRenderManager) {
|
|
13
|
-
return jsxControl(ControlType, mSettings, key, jsxContext);
|
|
13
|
+
return jsxControl(ControlType, mSettings, key, jsxContext, jsxFormatterContext);
|
|
14
14
|
} else if (renderNextUsingRenderManager !== undefined) {
|
|
15
15
|
return jsxRenderManager(ControlType, mSettings, key, renderNextUsingRenderManager);
|
|
16
16
|
} else {
|
|
@@ -44,6 +44,13 @@ sap.ui.define(["sap/fe/base/jsx-runtime/jsx-control", "sap/fe/base/jsx-runtime/j
|
|
|
44
44
|
jsx.getContext = function () {
|
|
45
45
|
return jsxContext;
|
|
46
46
|
};
|
|
47
|
+
let jsxFormatterContext = {};
|
|
48
|
+
jsx.setFormatterContext = function (context) {
|
|
49
|
+
jsxFormatterContext = context;
|
|
50
|
+
};
|
|
51
|
+
jsx.getFormatterContext = function () {
|
|
52
|
+
return jsxFormatterContext;
|
|
53
|
+
};
|
|
47
54
|
jsx.withContext = function (context, functionToExecute) {
|
|
48
55
|
jsxContext = context;
|
|
49
56
|
const callBackReturn = functionToExecute();
|
|
@@ -52,4 +59,4 @@ sap.ui.define(["sap/fe/base/jsx-runtime/jsx-control", "sap/fe/base/jsx-runtime/j
|
|
|
52
59
|
};
|
|
53
60
|
return jsx;
|
|
54
61
|
}, false);
|
|
55
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZW5kZXJOZXh0QXNYTUwiLCJyZW5kZXJOZXh0VXNpbmdSZW5kZXJNYW5hZ2VyIiwieG1sTmFtZXNwYWNlTWFwIiwianN4IiwiQ29udHJvbFR5cGUiLCJtU2V0dGluZ3MiLCJrZXkiLCJqc3hDb250cm9sIiwianN4Q29udGV4dCIsImpzeEZvcm1hdHRlckNvbnRleHQiLCJ1bmRlZmluZWQiLCJqc3hSZW5kZXJNYW5hZ2VyIiwianN4WG1sIiwicmVuZGVyVXNpbmdSZW5kZXJNYW5hZ2VyIiwicmVuZGVyTWFuYWdlciIsImNvbnRyb2wiLCJyZW5kZXJNZXRob2QiLCJyZXR1cm5WYWx1ZSIsImRlZmluZVhNTE5hbWVzcGFjZU1hcCIsIm5hbWVzcGFjZU1hcCIsInJlbmRlckFzWE1MIiwiZ2V0Q29udGV4dCIsInNldEZvcm1hdHRlckNvbnRleHQiLCJjb250ZXh0IiwiZ2V0Rm9ybWF0dGVyQ29udGV4dCIsIndpdGhDb250ZXh0IiwiZnVuY3Rpb25Ub0V4ZWN1dGUiLCJjYWxsQmFja1JldHVybiJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsianN4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBqc3hDb250cm9sIGZyb20gXCJzYXAvZmUvYmFzZS9qc3gtcnVudGltZS9qc3gtY29udHJvbFwiO1xuaW1wb3J0IGpzeFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeC1yZW5kZXJNYW5hZ2VyXCI7XG5pbXBvcnQganN4WG1sIGZyb20gXCJzYXAvZmUvYmFzZS9qc3gtcnVudGltZS9qc3gteG1sXCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgRWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IHR5cGUgUmVuZGVyTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyTWFuYWdlclwiO1xuXG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuXG50eXBlIENvbnRyb2xQcm9wZXJ0eU5hbWVzPFQ+ID0ge1xuXHRbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIHN0cmluZyB8IGJvb2xlYW4gfCBGdW5jdGlvbiB8IG51bWJlciB8IHVuZGVmaW5lZCB8IHN0cmluZ1tdID8gbmV2ZXIgOiBLO1xufVtrZXlvZiBUXTtcbmV4cG9ydCB0eXBlIENvbnRyb2xQcm9wZXJ0aWVzPFQ+ID0gUGFydGlhbDxSZWNvcmQ8Q29udHJvbFByb3BlcnR5TmFtZXM8VD4sIEVsZW1lbnQ+PiAmIHtcblx0W2s6IHN0cmluZ106IEVsZW1lbnQ7XG59O1xuZXhwb3J0IHR5cGUgTm9uQ29udHJvbFByb3BlcnRpZXM8VD4gPSBQYXJ0aWFsPE9taXQ8VCwgQ29udHJvbFByb3BlcnR5TmFtZXM8VD4+PjtcbmV4cG9ydCB0eXBlIENvbW1hbmRQcm9wZXJ0aWVzID0gYGNtZDoke3N0cmluZ318JHtzdHJpbmd9YDtcblxubGV0IHJlbmRlck5leHRBc1hNTCA9IGZhbHNlO1xubGV0IHJlbmRlck5leHRVc2luZ1JlbmRlck1hbmFnZXI6IFJlbmRlck1hbmFnZXIgfCB1bmRlZmluZWQ7XG5sZXQgeG1sTmFtZXNwYWNlTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5jb25zdCBqc3ggPSBmdW5jdGlvbiA8VD4oXG5cdENvbnRyb2xUeXBlOiB0eXBlb2YgQ29udHJvbCxcblx0bVNldHRpbmdzOiBOb25Db250cm9sUHJvcGVydGllczxUPiAmIHsga2V5OiBzdHJpbmc7IGNoaWxkcmVuPzogRWxlbWVudCB8IENvbnRyb2xQcm9wZXJ0aWVzPFQ+IH0sXG5cdGtleTogc3RyaW5nXG4pOiBzdHJpbmcgfCBDb250cm9sIHwgQ29udHJvbFtdIHwgdW5kZWZpbmVkIHtcblx0aWYgKCFyZW5kZXJOZXh0QXNYTUwgJiYgIXJlbmRlck5leHRVc2luZ1JlbmRlck1hbmFnZXIpIHtcblx0XHRyZXR1cm4ganN4Q29udHJvbChDb250cm9sVHlwZSwgbVNldHRpbmdzLCBrZXksIGpzeENvbnRleHQsIGpzeEZvcm1hdHRlckNvbnRleHQpO1xuXHR9IGVsc2UgaWYgKHJlbmRlck5leHRVc2luZ1JlbmRlck1hbmFnZXIgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBqc3hSZW5kZXJNYW5hZ2VyKFxuXHRcdFx0Q29udHJvbFR5cGUgYXMgdW5rbm93biBhcyBzdHJpbmcsXG5cdFx0XHRtU2V0dGluZ3MgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcblx0XHRcdGtleSxcblx0XHRcdHJlbmRlck5leHRVc2luZ1JlbmRlck1hbmFnZXJcblx0XHQpIGFzIHVua25vd24gYXMgc3RyaW5nIHwgQ29udHJvbCB8IENvbnRyb2xbXSB8IHVuZGVmaW5lZDtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4ganN4WG1sKENvbnRyb2xUeXBlLCBtU2V0dGluZ3MsIGtleSwgeG1sTmFtZXNwYWNlTWFwKTtcblx0fVxufTtcbmpzeC5yZW5kZXJVc2luZ1JlbmRlck1hbmFnZXIgPSBmdW5jdGlvbiAocmVuZGVyTWFuYWdlcjogUmVuZGVyTWFuYWdlciwgY29udHJvbDogQ29udHJvbCwgcmVuZGVyTWV0aG9kOiBGdW5jdGlvbik6IHZvaWQge1xuXHRyZW5kZXJOZXh0VXNpbmdSZW5kZXJNYW5hZ2VyID0gcmVuZGVyTWFuYWdlcjtcblx0Y29uc3QgcmV0dXJuVmFsdWUgPSByZW5kZXJNZXRob2QoY29udHJvbCk7XG5cdHJlbmRlck5leHRVc2luZ1JlbmRlck1hbmFnZXIgPSB1bmRlZmluZWQ7XG5cdHJldHVyblZhbHVlKCk7XG59O1xuanN4LmRlZmluZVhNTE5hbWVzcGFjZU1hcCA9IGFzeW5jIGZ1bmN0aW9uIChuYW1lc3BhY2VNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIHJlbmRlck1ldGhvZDogRnVuY3Rpb24pOiBQcm9taXNlPHVua25vd24+IHtcblx0eG1sTmFtZXNwYWNlTWFwID0gbmFtZXNwYWNlTWFwO1xuXHRjb25zdCByZXR1cm5WYWx1ZSA9IGF3YWl0IHJlbmRlck1ldGhvZCgpO1xuXHR4bWxOYW1lc3BhY2VNYXAgPSB7fTtcblx0cmV0dXJuIHJldHVyblZhbHVlO1xufTtcbi8qKlxuICogSW5kaWNhdGVzIHRoYXQgdGhlIG5leHQgSlNYIGNhbGwgc2hvdWxkIGJlIHJlbmRlcmVkIGFzIFhNTC5cbiAqIEBwYXJhbSByZW5kZXJNZXRob2QgVGhlIG1ldGhvZCB0aGF0IG5lZWRzIHRvIGJlIHJlbmRlcmVkIGFzIFhNTFxuICogQHJldHVybnMgVGhlIFhNTCByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29udHJvbFxuICovXG5qc3gucmVuZGVyQXNYTUwgPSBmdW5jdGlvbiA8VD4ocmVuZGVyTWV0aG9kOiAoKSA9PiBUKTogVCB7XG5cdHJlbmRlck5leHRBc1hNTCA9IHRydWU7XG5cdGNvbnN0IHJldHVyblZhbHVlID0gcmVuZGVyTWV0aG9kKCk7XG5cdHJlbmRlck5leHRBc1hNTCA9IGZhbHNlO1xuXHRyZXR1cm4gcmV0dXJuVmFsdWU7XG59O1xuXG5leHBvcnQgdHlwZSBSZWY8VCBleHRlbmRzIEVsZW1lbnQ+ID0ge1xuXHRjdXJyZW50PzogVDtcblx0c2V0Q3VycmVudChvQ29udHJvbEluc3RhbmNlOiBUKTogdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIEpTWENvbnRleHQgPSB7XG5cdG93bmVyQ29udHJvbD86IENvbnRyb2wgJiB7XG5cdFx0Y29udHJvbFJlZmVyZW5jZXM/OiBSZWNvcmQ8c3RyaW5nLCBFbGVtZW50Pjtcblx0XHRjb250cm9sUmVmZXJlbmNlc0lkPzogbnVtYmVyO1xuXHR9O1xuXHR2aWV3PzogVmlldztcblx0YXBwQ29tcG9uZW50PzogQXBwQ29tcG9uZW50O1xufTtcbmxldCBqc3hDb250ZXh0OiBKU1hDb250ZXh0ID0ge307XG5qc3guZ2V0Q29udGV4dCA9IGZ1bmN0aW9uICgpOiBKU1hDb250ZXh0IHtcblx0cmV0dXJuIGpzeENvbnRleHQ7XG59O1xuXG5sZXQganN4Rm9ybWF0dGVyQ29udGV4dDogb2JqZWN0ID0ge307XG5qc3guc2V0Rm9ybWF0dGVyQ29udGV4dCA9IGZ1bmN0aW9uIChjb250ZXh0OiBvYmplY3QpOiB2b2lkIHtcblx0anN4Rm9ybWF0dGVyQ29udGV4dCA9IGNvbnRleHQ7XG59O1xuXG5qc3guZ2V0Rm9ybWF0dGVyQ29udGV4dCA9IGZ1bmN0aW9uICgpOiB1bmtub3duIHtcblx0cmV0dXJuIGpzeEZvcm1hdHRlckNvbnRleHQ7XG59O1xuXG5qc3gud2l0aENvbnRleHQgPSBmdW5jdGlvbiA8VD4oY29udGV4dDogSlNYQ29udGV4dCwgZnVuY3Rpb25Ub0V4ZWN1dGU6ICgpID0+IFQpOiBUIHtcblx0anN4Q29udGV4dCA9IGNvbnRleHQ7XG5cdGNvbnN0IGNhbGxCYWNrUmV0dXJuID0gZnVuY3Rpb25Ub0V4ZWN1dGUoKTtcblx0anN4Q29udGV4dCA9IHt9O1xuXHRyZXR1cm4gY2FsbEJhY2tSZXR1cm47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBqc3g7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7RUFtQkEsSUFBSUEsZUFBZSxHQUFHLEtBQUs7RUFDM0IsSUFBSUMsNEJBQXVEO0VBQzNELElBQUlDLGVBQXVDLEdBQUcsQ0FBQyxDQUFDO0VBQ2hELE1BQU1DLEdBQUcsR0FBRyxTQUFBQSxDQUNYQyxXQUEyQixFQUMzQkMsU0FBK0YsRUFDL0ZDLEdBQVcsRUFDZ0M7SUFDM0MsSUFBSSxDQUFDTixlQUFlLElBQUksQ0FBQ0MsNEJBQTRCLEVBQUU7TUFDdEQsT0FBT00sVUFBVSxDQUFDSCxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsR0FBRyxFQUFFRSxVQUFVLEVBQUVDLG1CQUFtQixDQUFDO0lBQ2hGLENBQUMsTUFBTSxJQUFJUiw0QkFBNEIsS0FBS1MsU0FBUyxFQUFFO01BQ3RELE9BQU9DLGdCQUFnQixDQUN0QlAsV0FBVyxFQUNYQyxTQUFTLEVBQ1RDLEdBQUcsRUFDSEwsNEJBQ0QsQ0FBQztJQUNGLENBQUMsTUFBTTtNQUNOLE9BQU9XLE1BQU0sQ0FBQ1IsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLEdBQUcsRUFBRUosZUFBZSxDQUFDO0lBQzVEO0VBQ0QsQ0FBQztFQUNEQyxHQUFHLENBQUNVLHdCQUF3QixHQUFHLFVBQVVDLGFBQTRCLEVBQUVDLE9BQWdCLEVBQUVDLFlBQXNCLEVBQVE7SUFDdEhmLDRCQUE0QixHQUFHYSxhQUFhO0lBQzVDLE1BQU1HLFdBQVcsR0FBR0QsWUFBWSxDQUFDRCxPQUFPLENBQUM7SUFDekNkLDRCQUE0QixHQUFHUyxTQUFTO0lBQ3hDTyxXQUFXLENBQUMsQ0FBQztFQUNkLENBQUM7RUFDRGQsR0FBRyxDQUFDZSxxQkFBcUIsR0FBRyxnQkFBZ0JDLFlBQW9DLEVBQUVILFlBQXNCLEVBQW9CO0lBQzNIZCxlQUFlLEdBQUdpQixZQUFZO0lBQzlCLE1BQU1GLFdBQVcsR0FBRyxNQUFNRCxZQUFZLENBQUMsQ0FBQztJQUN4Q2QsZUFBZSxHQUFHLENBQUMsQ0FBQztJQUNwQixPQUFPZSxXQUFXO0VBQ25CLENBQUM7RUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0FkLEdBQUcsQ0FBQ2lCLFdBQVcsR0FBRyxVQUFhSixZQUFxQixFQUFLO0lBQ3hEaEIsZUFBZSxHQUFHLElBQUk7SUFDdEIsTUFBTWlCLFdBQVcsR0FBR0QsWUFBWSxDQUFDLENBQUM7SUFDbENoQixlQUFlLEdBQUcsS0FBSztJQUN2QixPQUFPaUIsV0FBVztFQUNuQixDQUFDO0VBZUQsSUFBSVQsVUFBc0IsR0FBRyxDQUFDLENBQUM7RUFDL0JMLEdBQUcsQ0FBQ2tCLFVBQVUsR0FBRyxZQUF3QjtJQUN4QyxPQUFPYixVQUFVO0VBQ2xCLENBQUM7RUFFRCxJQUFJQyxtQkFBMkIsR0FBRyxDQUFDLENBQUM7RUFDcENOLEdBQUcsQ0FBQ21CLG1CQUFtQixHQUFHLFVBQVVDLE9BQWUsRUFBUTtJQUMxRGQsbUJBQW1CLEdBQUdjLE9BQU87RUFDOUIsQ0FBQztFQUVEcEIsR0FBRyxDQUFDcUIsbUJBQW1CLEdBQUcsWUFBcUI7SUFDOUMsT0FBT2YsbUJBQW1CO0VBQzNCLENBQUM7RUFFRE4sR0FBRyxDQUFDc0IsV0FBVyxHQUFHLFVBQWFGLE9BQW1CLEVBQUVHLGlCQUEwQixFQUFLO0lBQ2xGbEIsVUFBVSxHQUFHZSxPQUFPO0lBQ3BCLE1BQU1JLGNBQWMsR0FBR0QsaUJBQWlCLENBQUMsQ0FBQztJQUMxQ2xCLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDZixPQUFPbUIsY0FBYztFQUN0QixDQUFDO0VBQUMsT0FFYXhCLEdBQUc7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -26,7 +26,7 @@ const jsx = function <T>(
|
|
|
26
26
|
key: string
|
|
27
27
|
): string | Control | Control[] | undefined {
|
|
28
28
|
if (!renderNextAsXML && !renderNextUsingRenderManager) {
|
|
29
|
-
return jsxControl(ControlType, mSettings, key, jsxContext);
|
|
29
|
+
return jsxControl(ControlType, mSettings, key, jsxContext, jsxFormatterContext);
|
|
30
30
|
} else if (renderNextUsingRenderManager !== undefined) {
|
|
31
31
|
return jsxRenderManager(
|
|
32
32
|
ControlType as unknown as string,
|
|
@@ -80,6 +80,15 @@ jsx.getContext = function (): JSXContext {
|
|
|
80
80
|
return jsxContext;
|
|
81
81
|
};
|
|
82
82
|
|
|
83
|
+
let jsxFormatterContext: object = {};
|
|
84
|
+
jsx.setFormatterContext = function (context: object): void {
|
|
85
|
+
jsxFormatterContext = context;
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
jsx.getFormatterContext = function (): unknown {
|
|
89
|
+
return jsxFormatterContext;
|
|
90
|
+
};
|
|
91
|
+
|
|
83
92
|
jsx.withContext = function <T>(context: JSXContext, functionToExecute: () => T): T {
|
|
84
93
|
jsxContext = context;
|
|
85
94
|
const callBackReturn = functionToExecute();
|
|
@@ -22,7 +22,7 @@ sap.ui.define(["sap/ui/core/Lib"], function (Library) {
|
|
|
22
22
|
controls: [],
|
|
23
23
|
elements: [],
|
|
24
24
|
// eslint-disable-next-line no-template-curly-in-string
|
|
25
|
-
version: "1.
|
|
25
|
+
version: "1.141.1",
|
|
26
26
|
noLibraryCSS: true
|
|
27
27
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
28
|
});
|