@sapui5/sap.fe.core 1.136.9 → 1.136.11
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/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime.js +48 -23
- package/src/sap/fe/core/ActionRuntime.ts +61 -35
- package/src/sap/fe/core/AppStateHandler.js +4 -5
- package/src/sap/fe/core/AppStateHandler.ts +6 -5
- package/src/sap/fe/core/CommonUtils.js +3 -3
- package/src/sap/fe/core/CommonUtils.ts +2 -2
- package/src/sap/fe/core/PageController.controller.js +10 -0
- package/src/sap/fe/core/PageController.controller.ts +3 -0
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +4 -4
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +5 -2
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +26 -16
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +37 -16
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +2 -2
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +20 -10
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +29 -13
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +12 -2
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +14 -7
- package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.js +5 -2
- package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.ts +4 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.js +2 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.ts +1 -0
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +7 -6
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +8 -5
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.js +2 -1
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.tsx +1 -0
- package/src/sap/fe/core/converters/controls/Common/Action.js +15 -1
- package/src/sap/fe/core/converters/controls/Common/Action.ts +21 -1
- package/src/sap/fe/core/converters/controls/Common/Table.js +54 -46
- package/src/sap/fe/core/converters/controls/Common/Table.ts +65 -45
- package/src/sap/fe/core/converters/controls/Common/table/Columns.js +26 -6
- package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +32 -10
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +12 -18
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +13 -27
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +5 -2
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +7 -1
- package/src/sap/fe/core/designtime/AnnotationBasedChanges.js +8 -3
- package/src/sap/fe/core/designtime/AnnotationBasedChanges.ts +7 -2
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js +75 -18
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +79 -25
- package/src/sap/fe/core/helpers/MetaModelFunction.js +10 -3
- package/src/sap/fe/core/helpers/MetaModelFunction.ts +9 -3
- package/src/sap/fe/core/helpers/ModelHelper.js +5 -2
- package/src/sap/fe/core/helpers/ModelHelper.ts +7 -3
- package/src/sap/fe/core/library.js +1 -1
- package/src/sap/fe/core/messagebundle_ar.properties +1 -1
- package/src/sap/fe/core/messagebundle_bg.properties +3 -3
- package/src/sap/fe/core/messagebundle_es.properties +1 -1
- package/src/sap/fe/core/messagebundle_fr.properties +1 -1
- package/src/sap/fe/core/messagebundle_ko.properties +1 -1
- package/src/sap/fe/core/messagebundle_no.properties +2 -2
- package/src/sap/fe/core/rootView/RootViewBaseController.js +3 -2
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +2 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.js +4 -2
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +5 -2
- package/ui5.yaml +1 -0
|
@@ -90,7 +90,7 @@ function normalizeSearchTerm(sSearchTerm: string | undefined): string | undefine
|
|
|
90
90
|
if (convertedSearchTerm === "" || convertedSearchTerm === " ") {
|
|
91
91
|
return undefined;
|
|
92
92
|
}
|
|
93
|
-
return convertedSearchTerm;
|
|
93
|
+
return convertedSearchTerm.trim();
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
async function waitForContextRequested(bindingContext: ODataV4Context): Promise<void> {
|
|
@@ -483,7 +483,7 @@ function getCurrentPageView(oAppComponent: AppComponent): FEView {
|
|
|
483
483
|
const rootViewController = oAppComponent.getRootViewController();
|
|
484
484
|
return rootViewController.isFclEnabled()
|
|
485
485
|
? rootViewController.getRightmostView()
|
|
486
|
-
: CommonUtils.getTargetView((oAppComponent.getRootContainer() as NavContainer).getCurrentPage());
|
|
486
|
+
: CommonUtils.getTargetView((oAppComponent.getRootContainer() as NavContainer).getCurrentPage?.());
|
|
487
487
|
}
|
|
488
488
|
|
|
489
489
|
function getTargetView(oControl: ManagedObject | null): FEView {
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
sap.ui.define(["sap/fe/core/PageController"], function (PageController) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
return PageController;
|
|
9
|
+
}, false);
|
|
10
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdlQ29udHJvbGxlciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiUGFnZUNvbnRyb2xsZXIuY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IFBhZ2VDb250cm9sbGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O1NBRWVBLGNBQWM7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/HookSupport", "sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/BaseControllerExtension", "sap/fe/core/controllerextensions/messageHandler/messageHandling", "sap/fe/core/controls/inlineEditFlow/InlineEditExitDialog", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/helpers/TypeGuards", "sap/m/MessageToast", "sap/ui/core/Lib", "sap/ui/core/Messaging", "../controls/inlineEditFlow/DraftExistsDialog"], function (Log, ClassSupport, HookSupport, CommonUtils, BaseControllerExtension, messageHandling, InlineEditExitDialog, MetaModelConverter, TypeGuards, MessageToast, Lib, Messaging, DraftExistsDialog) {
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/HookSupport", "sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/BaseControllerExtension", "sap/fe/core/controllerextensions/messageHandler/messageHandling", "sap/fe/core/controls/inlineEditFlow/InlineEditExitDialog", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/helpers/TypeGuards", "sap/m/MessageToast", "sap/ui/core/Lib", "sap/ui/core/Messaging", "sap/ui/core/message/MessageType", "../controls/inlineEditFlow/DraftExistsDialog"], function (Log, ClassSupport, HookSupport, CommonUtils, BaseControllerExtension, messageHandling, InlineEditExitDialog, MetaModelConverter, TypeGuards, MessageToast, Lib, Messaging, MessageType, DraftExistsDialog) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _class, _class2;
|
|
@@ -43,8 +43,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/HookSupp
|
|
|
43
43
|
_proto.inlineEditSave = async function inlineEditSave() {
|
|
44
44
|
const model = this.base.getView().getModel();
|
|
45
45
|
const messages = Messaging.getMessageModel().getData();
|
|
46
|
-
const
|
|
47
|
-
if (
|
|
46
|
+
const hasTechnicalErrorMessages = messages.some(message => !messageHandling.isNonTechnicalMessage(message) && message.getType() === MessageType.Error);
|
|
47
|
+
if (hasTechnicalErrorMessages) {
|
|
48
48
|
this.base.setShowFooter(true);
|
|
49
49
|
// if there are invalid types we should not try to save
|
|
50
50
|
return;
|
|
@@ -372,4 +372,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/HookSupp
|
|
|
372
372
|
_exports = InlineEditFlow;
|
|
373
373
|
return _exports;
|
|
374
374
|
}, false);
|
|
375
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbmxpbmVFZGl0RmxvdyIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiaG9va2FibGUiLCJfZGVjMyIsIm1ldGhvZE92ZXJyaWRlIiwiX2RlYzQiLCJfZGVjNSIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQmFzZUNvbnRyb2xsZXJFeHRlbnMiLCJfdGhpcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsImlubGluZUVkaXRDb250cm9scyIsInByZXZlbnRGaWVsZEdyb3VwQ2hhbmdlSGFuZGxlciIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJpc0lubGluZUVkaXRQb3NzaWJsZSIsImJhc2UiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRJbmxpbmVFZGl0U2VydmljZSIsImRvZXNQYWdlSGF2ZUlubGluZUVkaXQiLCJnZXRSb3V0aW5nVGFyZ2V0TmFtZSIsImlubGluZUVkaXRTYXZlIiwibW9kZWwiLCJnZXRWaWV3IiwiZ2V0TW9kZWwiLCJtZXNzYWdlcyIsIk1lc3NhZ2luZyIsImdldE1lc3NhZ2VNb2RlbCIsImdldERhdGEiLCJoYXNUZWNobmljYWxNZXNzYWdlcyIsInNvbWUiLCJtZXNzYWdlIiwibWVzc2FnZUhhbmRsaW5nIiwiaXNOb25UZWNobmljYWxNZXNzYWdlIiwic2V0U2hvd0Zvb3RlciIsImhhc1BlbmRpbmdDaGFuZ2VzIiwiQ29tbW9uVXRpbHMiLCJJTkxJTkVFRElUX1VQREFURUdST1VQSUQiLCJpbmxpbmVFZGl0RW5kIiwicmVtb3ZlQWxsTWVzc2FnZXMiLCJzdWJtaXRCYXRjaCIsImVycm9yIiwiTG9nIiwid2FybmluZyIsImlubGluZUVkaXREaXNjYXJkIiwicmVzZXRDaGFuZ2VzIiwicmVmcmVzaERlc2NyaXB0aW9uIiwiY29udHJvbCIsInNldFByb3BlcnR5Iiwic3RhcnRJbmxpbmVFZGl0IiwicHJvcGVydHlGdWxseVF1YWxpZmllZE5hbWUiLCJiaW5kaW5nQ29udGV4dFBhdGgiLCJjb250cm9sVHJpZ2dlciIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0UHJvcGVydHkiLCJEcmFmdEV4aXN0c0RpYWxvZyIsIm9wZW4iLCJyZXNldEluZGljYXRvclBvcHVwIiwiaW5saW5lRWRpdFNlcnZpY2UiLCJkZXBlbmRlbnRQcm9wZXJ0aWVzIiwiZ2V0SW5saW5lQ29ubmVjdGVkUHJvcGVydGllcyIsImlubGluZUVkaXRTdGFydCIsImZvY3VzSGFuZGxpbmciLCJpbmxpbmVFZGl0Q29udHJvbCIsImNsb3NlSW5saW5lRWRpdFBvcHVwRWRpdE1vZGUiLCJmb2N1cyIsInByb3BlcnRpZXMiLCJhYm9ydFRpbWVyQmVmb3JlU2F2ZSIsInVuZGVmaW5lZCIsImFscmVhZHlSZWdpc3RlcmVkQ29udHJvbHMiLCJtYXAiLCJnZXRJZCIsImluY2x1ZGVzIiwicHVzaCIsImlubGluZUVkaXRCaW5kaW5nQ29udGV4dFBhdGgiLCJpc1Byb3BlcnR5Q29uc2lkZXJlZEZvcklubGluZUVkaXQiLCJoYW5kbGVJbmxpbmVFZGl0UGF0Y2hTZW50IiwiZXZlbnQiLCJwYXRjaFByb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImdldFNvdXJjZSIsImF0dGFjaEV2ZW50T25jZSIsInBhdGNoQ29tcGxldGVkRXZlbnQiLCJiU3VjY2VzcyIsImdldFBhcmFtZXRlciIsInJlc291cmNlQnVuZGxlIiwiTGliIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJNZXNzYWdlVG9hc3QiLCJzaG93IiwiZ2V0VGV4dCIsImhhbmRsZUlubGluZUVkaXRTYXZlRmFpbGVkIiwibWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwicHJvcGFnYXRlSW5saW5lRmllbGRHcm91cElkVG9NZXNzYWdlQnV0dG9uIiwidGFyZ2V0IiwiZ2V0VGFyZ2V0cyIsInRhcmdldE1ldGFDb250ZXh0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJnZXRNZXRhUGF0aCIsIm1lc3NhZ2VUYXJnZXREYXRhTW9kZWxPYmplY3QiLCJNZXRhTW9kZWxDb252ZXJ0ZXIiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJpc1Byb3BlcnR5IiwidGFyZ2V0T2JqZWN0IiwidGFyZ2V0RnVsbHlRdWFsaWZpZWROYW1lIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiZGVsYXllZENhbGxUb1NhdmUiLCJ0aW1lckJlZm9yZVNhdmUiLCJzZXRUaW1lb3V0IiwiZSIsInJlYWN0aXZhdGVGaWVsZEdyb3VwQ2hhbmdlSGFuZGxlciIsIm9uQmVmb3JlTmF2aWdhdGlvbiIsIm9uQmVmb3JlQW55RWRpdEZsb3dBY3Rpb24iLCJvcGVuSW5saW5lRWRpdEV4aXREaWFsb2dBbmRXYWl0Rm9yUmVzdWx0IiwiSW5saW5lRWRpdEV4aXREaWFsb2ciLCJkaWFsb2dSZXN1bHQiLCJFcnJvciIsIm9uQmVmb3JlQmluZGluZyIsIm9uQmVmb3JlRWRpdCIsIm9uQmVmb3JlQ3JlYXRlIiwib25CZWZvcmVEZWxldGUiLCJvbkJlZm9yZUV4ZWN1dGVBY3Rpb24iLCJmb290ZXJDb250cm9scyIsImdldEZvb3RlciIsImZpbmRBZ2dyZWdhdGVkT2JqZWN0cyIsIm1hbmFnZWRPYmplY3QiLCJpc0EiLCJjaGlsZEZpZWxkR3JvdXBJZHMiLCJTZXQiLCJnZXRGaWVsZEdyb3VwSWRzIiwiYWRkIiwic2V0RmllbGRHcm91cElkcyIsImZyb20iLCJCYXNlQ29udHJvbGxlckV4dGVuc2lvbiIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIklubGluZUVkaXRGbG93LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIG1ldGhvZE92ZXJyaWRlLCB0eXBlIEVuaGFuY2VXaXRoVUk1IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgaG9va2FibGUgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvSG9va1N1cHBvcnRcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IEJhc2VDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9CYXNlQ29udHJvbGxlckV4dGVuc2lvblwiO1xuaW1wb3J0IG1lc3NhZ2VIYW5kbGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvbWVzc2FnZUhhbmRsZXIvbWVzc2FnZUhhbmRsaW5nXCI7XG5pbXBvcnQgSW5saW5lRWRpdEV4aXREaWFsb2csIHsgdHlwZSBESUFMT0dSRVNVTFQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvaW5saW5lRWRpdEZsb3cvSW5saW5lRWRpdEV4aXREaWFsb2dcIjtcbmltcG9ydCAqIGFzIE1ldGFNb2RlbENvbnZlcnRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGlzUHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgeyB0eXBlIERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBGaWVsZCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9GaWVsZFwiO1xuaW1wb3J0IHR5cGUgSW5saW5lRWRpdCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbmxpbmVFZGl0L0lubGluZUVkaXRcIjtcbmltcG9ydCBNZXNzYWdlVG9hc3QgZnJvbSBcInNhcC9tL01lc3NhZ2VUb2FzdFwiO1xuaW1wb3J0IHR5cGUgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCBNZXNzYWdpbmcgZnJvbSBcInNhcC91aS9jb3JlL01lc3NhZ2luZ1wiO1xuaW1wb3J0IHR5cGUgTWVzc2FnZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlXCI7XG5pbXBvcnQgdHlwZSB7IE9EYXRhQ29udGV4dEJpbmRpbmckUGF0Y2hTZW50RXZlbnQgfSBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhQ29udGV4dEJpbmRpbmdcIjtcbmltcG9ydCBEcmFmdEV4aXN0c0RpYWxvZyBmcm9tIFwiLi4vY29udHJvbHMvaW5saW5lRWRpdEZsb3cvRHJhZnRFeGlzdHNEaWFsb2dcIjtcblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuSW5saW5lRWRpdEZsb3dcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIElubGluZUVkaXRGbG93IGV4dGVuZHMgQmFzZUNvbnRyb2xsZXJFeHRlbnNpb24ge1xuXHRwcm90ZWN0ZWQgYmFzZSE6IFBhZ2VDb250cm9sbGVyO1xuXG5cdHByaXZhdGUgaW5saW5lRWRpdENvbnRyb2xzOiBDb250cm9sW10gPSBbXTtcblxuXHRwcml2YXRlIGlubGluZUVkaXRCaW5kaW5nQ29udGV4dFBhdGg/OiBzdHJpbmc7XG5cblx0cHJpdmF0ZSBhYm9ydFRpbWVyQmVmb3JlU2F2ZT86IEZ1bmN0aW9uO1xuXG5cdHByaXZhdGUgcGF0Y2hQcm9taXNlPzogUHJvbWlzZTxVSTVFdmVudD47XG5cblx0cHJpdmF0ZSBwcmV2ZW50RmllbGRHcm91cENoYW5nZUhhbmRsZXIgPSBmYWxzZTtcblxuXHQvKipcblx0ICogTWV0aG9kIHRvIGtub3cgaWYgdGhlcmUgY2FuIGJlIGlubGluZSBlZGl0IG9uIHRoZSBwYWdlLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIGlubGluZSBlZGl0IGlzIHBvc3NpYmxlXG5cdCAqL1xuXHRpc0lubGluZUVkaXRQb3NzaWJsZSgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5iYXNlLmdldEFwcENvbXBvbmVudCgpLmdldElubGluZUVkaXRTZXJ2aWNlKCkuZG9lc1BhZ2VIYXZlSW5saW5lRWRpdCh0aGlzLmJhc2UuZ2V0Um91dGluZ1RhcmdldE5hbWUoKSk7XG5cdH1cblxuXHQvKipcblx0ICogU2F2ZSB0aGUgaW5saW5lIGVkaXQgY2hhbmdlcy5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZWQgb25jZSB0aGUgYmF0Y2ggaGFzIHJldHVybmVkLlxuXHQgKi9cblx0YXN5bmMgaW5saW5lRWRpdFNhdmUoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgbW9kZWwgPSB0aGlzLmJhc2UuZ2V0VmlldygpLmdldE1vZGVsKCk7XG5cblx0XHRjb25zdCBtZXNzYWdlcyA9IE1lc3NhZ2luZy5nZXRNZXNzYWdlTW9kZWwoKS5nZXREYXRhKCk7XG5cdFx0Y29uc3QgaGFzVGVjaG5pY2FsTWVzc2FnZXMgPSBtZXNzYWdlcy5zb21lKChtZXNzYWdlOiBNZXNzYWdlKSA9PiAhbWVzc2FnZUhhbmRsaW5nLmlzTm9uVGVjaG5pY2FsTWVzc2FnZShtZXNzYWdlKSk7XG5cdFx0aWYgKGhhc1RlY2huaWNhbE1lc3NhZ2VzKSB7XG5cdFx0XHR0aGlzLmJhc2Uuc2V0U2hvd0Zvb3Rlcih0cnVlKTtcblx0XHRcdC8vIGlmIHRoZXJlIGFyZSBpbnZhbGlkIHR5cGVzIHdlIHNob3VsZCBub3QgdHJ5IHRvIHNhdmVcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKCFtb2RlbC5oYXNQZW5kaW5nQ2hhbmdlcyhDb21tb25VdGlscy5JTkxJTkVFRElUX1VQREFURUdST1VQSUQpKSB7XG5cdFx0XHR0aGlzLmlubGluZUVkaXRFbmQoKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dHJ5IHtcblx0XHRcdE1lc3NhZ2luZy5yZW1vdmVBbGxNZXNzYWdlcygpO1xuXHRcdFx0YXdhaXQgbW9kZWwuc3VibWl0QmF0Y2goQ29tbW9uVXRpbHMuSU5MSU5FRURJVF9VUERBVEVHUk9VUElEKTtcblx0XHR9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuXHRcdFx0TG9nLndhcm5pbmcoXCJFcnJvciB3aGlsZSBzYXZpbmcgaW5saW5lIGVkaXQgY2hhbmdlc1wiKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRGlzY2FyZCB0aGUgaW5saW5lIGVkaXQgY2hhbmdlcy5cblx0ICovXG5cdGlubGluZUVkaXREaXNjYXJkKCk6IHZvaWQge1xuXHRcdHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0TW9kZWwoKS5yZXNldENoYW5nZXMoQ29tbW9uVXRpbHMuSU5MSU5FRURJVF9VUERBVEVHUk9VUElEKTtcblx0XHR0aGlzLmlubGluZUVkaXRFbmQodHJ1ZSk7XG5cdH1cblxuXHQvKipcblx0ICogRW5kIHRoZSBpbmxpbmUgZWRpdC5cblx0ICogQHBhcmFtIHJlZnJlc2hEZXNjcmlwdGlvblxuXHQgKi9cblx0aW5saW5lRWRpdEVuZChyZWZyZXNoRGVzY3JpcHRpb24/OiBib29sZWFuKTogdm9pZCB7XG5cdFx0TWVzc2FnaW5nLnJlbW92ZUFsbE1lc3NhZ2VzKCk7XG5cdFx0dGhpcy5iYXNlLnNldFNob3dGb290ZXIoZmFsc2UpO1xuXHRcdGZvciAoY29uc3QgY29udHJvbCBvZiB0aGlzLmlubGluZUVkaXRDb250cm9scykge1xuXHRcdFx0KGNvbnRyb2wgYXMgRW5oYW5jZVdpdGhVSTU8RmllbGQ+ICYgSW5saW5lRWRpdCkuaW5saW5lRWRpdEVuZChyZWZyZXNoRGVzY3JpcHRpb24pO1xuXHRcdH1cblx0XHR0aGlzLmlubGluZUVkaXRDb250cm9scyA9IFtdO1xuXHRcdHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJ1aVwiKS5zZXRQcm9wZXJ0eShcIi9pc0lubGluZUVkaXRBY3RpdmVcIiwgZmFsc2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFN0YXJ0IHRoZSBpbmxpbmUgZWRpdCBvbiB0aGUgYmluZGluZ0NvbnRleHRQYXRoIGZvciB0aGUgcHJvcGVydHlGdWxseVF1YWxpZmllZE5hbWUuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eUZ1bGx5UXVhbGlmaWVkTmFtZVxuXHQgKiBAcGFyYW0gYmluZGluZ0NvbnRleHRQYXRoXG5cdCAqIEBwYXJhbSBjb250cm9sVHJpZ2dlclxuXHQgKi9cblx0c3RhcnRJbmxpbmVFZGl0KFxuXHRcdHByb3BlcnR5RnVsbHlRdWFsaWZpZWROYW1lOiBzdHJpbmcsXG5cdFx0YmluZGluZ0NvbnRleHRQYXRoOiBzdHJpbmcsXG5cdFx0Y29udHJvbFRyaWdnZXI/OiBFbmhhbmNlV2l0aFVJNTxGaWVsZD4gJiBJbmxpbmVFZGl0XG5cdCk6IHZvaWQge1xuXHRcdGlmIChjb250cm9sVHJpZ2dlcj8uZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UHJvcGVydHkoXCJIYXNEcmFmdEVudGl0eVwiKSkge1xuXHRcdFx0Ly8gdGhlcmUgaXMgYWxyZWFkeSBhIGRyYWZ0IG9uIHRoZSBlbnRpdHkuIFdlIHNob3VsZCBub3Qgc3RhcnQgaW5saW5lIGVkaXRcblx0XHRcdG5ldyBEcmFmdEV4aXN0c0RpYWxvZyh0aGlzLmJhc2UuZ2V0VmlldygpKS5vcGVuKCk7XG5cdFx0XHRjb250cm9sVHJpZ2dlcj8ucmVzZXRJbmRpY2F0b3JQb3B1cCgpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBpbmxpbmVFZGl0U2VydmljZSA9IHRoaXMuYmFzZS5nZXRBcHBDb21wb25lbnQoKS5nZXRJbmxpbmVFZGl0U2VydmljZSgpO1xuXHRcdGNvbnN0IGRlcGVuZGVudFByb3BlcnRpZXMgPSBpbmxpbmVFZGl0U2VydmljZS5nZXRJbmxpbmVDb25uZWN0ZWRQcm9wZXJ0aWVzKFxuXHRcdFx0dGhpcy5iYXNlLmdldFJvdXRpbmdUYXJnZXROYW1lKCksXG5cdFx0XHRwcm9wZXJ0eUZ1bGx5UXVhbGlmaWVkTmFtZVxuXHRcdCk7XG5cblx0XHR0aGlzLmlubGluZUVkaXRTdGFydChbXSwgZGVwZW5kZW50UHJvcGVydGllcz8ubGVuZ3RoID8gZGVwZW5kZW50UHJvcGVydGllcyA6IFtwcm9wZXJ0eUZ1bGx5UXVhbGlmaWVkTmFtZV0sIGJpbmRpbmdDb250ZXh0UGF0aCk7XG5cdFx0dGhpcy5iYXNlLmdldFZpZXcoKS5nZXRNb2RlbChcInVpXCIpLnNldFByb3BlcnR5KFwiL2lzSW5saW5lRWRpdEFjdGl2ZVwiLCB0cnVlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGb2N1cyBoYW5kbGluZyBmb3IgaW5saW5lIGVkaXQuIFdoZW4gb25lIGZpZWxkIGdldHMgZm9jdXMsIGFsbCBvdGhlciBpbmxpbmUgZWRpdCBwb3B1cHMsIHRoYXQgYXJlIGN1cnJlbnRseSBvcGVuZWQsIHNob3VsZCBiZSBjbG9zZWQuXG5cdCAqIEBwYXJhbSBpbmxpbmVFZGl0Q29udHJvbCBDb250cm9scyB3aGljaCBhcmUgY3VycmVudGx5IGluIGlubGluZSBlZGl0IG1vZGUuXG5cdCAqL1xuXHRmb2N1c0hhbmRsaW5nKGlubGluZUVkaXRDb250cm9sOiBDb250cm9sKTogdm9pZCB7XG5cdFx0Zm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuaW5saW5lRWRpdENvbnRyb2xzKSB7XG5cdFx0XHRpZiAoY29udHJvbCAhPT0gaW5saW5lRWRpdENvbnRyb2wpIHtcblx0XHRcdFx0KGNvbnRyb2wgYXMgRW5oYW5jZVdpdGhVSTU8RmllbGQ+ICYgSW5saW5lRWRpdCkuY2xvc2VJbmxpbmVFZGl0UG9wdXBFZGl0TW9kZSgpO1xuXHRcdFx0fSBlbHNlIGlmIChjb250cm9sID09PSBpbmxpbmVFZGl0Q29udHJvbCkge1xuXHRcdFx0XHRjb250cm9sLmZvY3VzKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENvbmZpcm0gdGhlIHN0YXJ0IG9mIHRoZSBpbmxpbmUgZWRpdCBvbiB0aGUgYmluZGluZ0NvbnRleHRQYXRoIGZvciB0aGUgcHJvcGVydGllcy5cblx0ICogQHBhcmFtIGlubGluZUVkaXRDb250cm9scyBUaGUgZmllbGRzIHRoYXQgYXJlIGN1cnJlbnRseSBpbiBpbmxpbmUgZWRpdCBtb2RlLlxuXHQgKiBAcGFyYW0gcHJvcGVydGllc1xuXHQgKiBAcGFyYW0gYmluZGluZ0NvbnRleHRQYXRoXG5cdCAqL1xuXHRAaG9va2FibGUoXCJCZWZvcmVcIilcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRhc3luYyBpbmxpbmVFZGl0U3RhcnQoaW5saW5lRWRpdENvbnRyb2xzOiBDb250cm9sW10sIHByb3BlcnRpZXM6IHN0cmluZ1tdLCBiaW5kaW5nQ29udGV4dFBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICh0aGlzLmFib3J0VGltZXJCZWZvcmVTYXZlKSB7XG5cdFx0XHQvLyBpZiB0aGVyZSBpcyAgYSB0aW1lciB0byBzYXZlXG5cdFx0XHR0aGlzLmFib3J0VGltZXJCZWZvcmVTYXZlKCk7XG5cdFx0XHR0aGlzLmFib3J0VGltZXJCZWZvcmVTYXZlID0gdW5kZWZpbmVkO1xuXHRcdFx0YXdhaXQgdGhpcy5pbmxpbmVFZGl0U2F2ZSgpO1xuXHRcdH1cblx0XHRjb25zdCBhbHJlYWR5UmVnaXN0ZXJlZENvbnRyb2xzID0gdGhpcy5pbmxpbmVFZGl0Q29udHJvbHMubWFwKChjb250cm9sOiBDb250cm9sKSA9PiBjb250cm9sLmdldElkKCkpO1xuXHRcdGZvciAoY29uc3QgY29udHJvbCBvZiBpbmxpbmVFZGl0Q29udHJvbHMpIHtcblx0XHRcdGlmICghYWxyZWFkeVJlZ2lzdGVyZWRDb250cm9scy5pbmNsdWRlcyhjb250cm9sLmdldElkKCkpKSB7XG5cdFx0XHRcdHRoaXMuaW5saW5lRWRpdENvbnRyb2xzLnB1c2goY29udHJvbCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRoaXMuaW5saW5lRWRpdEJpbmRpbmdDb250ZXh0UGF0aCA9IGJpbmRpbmdDb250ZXh0UGF0aDtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVuaWVuY2UgbWV0aG9kIHRvIGRldGVybWluZSBpZiBhIHByb3BlcnR5IHNob3VsZCBiZSBjb25zaWRlcmVkIGZvciBpbmxpbmUgZWRpdC5cblx0ICogQHBhcmFtIHByb3BlcnR5RnVsbHlRdWFsaWZpZWROYW1lXG5cdCAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgcHJvcGVydHkgaXMgY29uc2lkZXJlZCBmb3IgSW5saW5lIGVkaXQuXG5cdCAqL1xuXHRpc1Byb3BlcnR5Q29uc2lkZXJlZEZvcklubGluZUVkaXQocHJvcGVydHlGdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmJhc2Vcblx0XHRcdC5nZXRBcHBDb21wb25lbnQoKVxuXHRcdFx0LmdldElubGluZUVkaXRTZXJ2aWNlKClcblx0XHRcdC5pc1Byb3BlcnR5Q29uc2lkZXJlZEZvcklubGluZUVkaXQodGhpcy5iYXNlLmdldFJvdXRpbmdUYXJnZXROYW1lKCksIHByb3BlcnR5RnVsbHlRdWFsaWZpZWROYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBwYXRjaFNlbnQgZXZlbnQ6IGhhbmRsZSBpbmxpbmUgZWRpdCBzYXZlIHN1Y2Nlc3Mgb3IgZmFpbHVyZS5cblx0ICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCBzZW50IGJ5IHRoZSBiaW5kaW5nXG5cdCAqL1xuXHRhc3luYyBoYW5kbGVJbmxpbmVFZGl0UGF0Y2hTZW50KGV2ZW50OiBPRGF0YUNvbnRleHRCaW5kaW5nJFBhdGNoU2VudEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKHRoaXMuaW5saW5lRWRpdENvbnRyb2xzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0Ly8gaWYgdGhlcmUgYXJlIG5vIGlubGluZSBlZGl0IGNvbnRyb2xzLCB0aGlzIG1heSBoYXZlIGJlZW4gdHJpZ2dlcmVkIGJ5IHNvbWV0aGluZyBlbHNlXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5wYXRjaFByb21pc2UgPSBuZXcgUHJvbWlzZTxVSTVFdmVudD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0ZXZlbnQuZ2V0U291cmNlKCkuYXR0YWNoRXZlbnRPbmNlKFwicGF0Y2hDb21wbGV0ZWRcIiwgKHBhdGNoQ29tcGxldGVkRXZlbnQ6IFVJNUV2ZW50PHsgc3VjY2VzczogYm9vbGVhbiB9PikgPT4ge1xuXHRcdFx0XHRjb25zdCBiU3VjY2VzcyA9IHBhdGNoQ29tcGxldGVkRXZlbnQuZ2V0UGFyYW1ldGVyKFwic3VjY2Vzc1wiKTtcblx0XHRcdFx0aWYgKGJTdWNjZXNzKSB7XG5cdFx0XHRcdFx0cmVzb2x2ZShwYXRjaENvbXBsZXRlZEV2ZW50KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZWplY3QocGF0Y2hDb21wbGV0ZWRFdmVudCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0pO1xuXHRcdHRyeSB7XG5cdFx0XHRhd2FpdCB0aGlzLnBhdGNoUHJvbWlzZTtcblx0XHRcdHRoaXMucGF0Y2hQcm9taXNlID0gdW5kZWZpbmVkO1xuXHRcdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29yZVwiKTtcblx0XHRcdGlmIChyZXNvdXJjZUJ1bmRsZSkge1xuXHRcdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyhyZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19JTkxJTkVfRURJVF9TQVZFRFwiKSk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmlubGluZUVkaXRFbmQoKTtcblx0XHR9IGNhdGNoIChwYXRjaENvbXBsZXRlZEV2ZW50KSB7XG5cdFx0XHR0aGlzLnBhdGNoUHJvbWlzZSA9IHVuZGVmaW5lZDtcblx0XHRcdHRoaXMuaGFuZGxlSW5saW5lRWRpdFNhdmVGYWlsZWQoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIHRvIHNob3cgdGhlIGVycm9ycyB3aGVuIHRoZSBpbmxpbmUgZWRpdCBzYXZlIGZhaWxzLlxuXHQgKi9cblx0aGFuZGxlSW5saW5lRWRpdFNhdmVGYWlsZWQoKTogdm9pZCB7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXG5cdFx0Y29uc3QgbWVzc2FnZXMgPSBNZXNzYWdpbmcuZ2V0TWVzc2FnZU1vZGVsKCkuZ2V0RGF0YSgpO1xuXHRcdGlmIChtZXNzYWdlcy5sZW5ndGgpIHtcblx0XHRcdHRoaXMuYmFzZS5zZXRTaG93Rm9vdGVyKHRydWUpO1xuXHRcdFx0dGhpcy5wcm9wYWdhdGVJbmxpbmVGaWVsZEdyb3VwSWRUb01lc3NhZ2VCdXR0b24oKTtcblx0XHR9XG5cdFx0aWYgKCF0aGlzLmlubGluZUVkaXRCaW5kaW5nQ29udGV4dFBhdGgpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Zm9yIChjb25zdCBtZXNzYWdlIG9mIG1lc3NhZ2VzKSB7XG5cdFx0XHRmb3IgKGNvbnN0IHRhcmdldCBvZiBtZXNzYWdlLmdldFRhcmdldHMoKSkge1xuXHRcdFx0XHRjb25zdCB0YXJnZXRNZXRhQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChtZXRhTW9kZWwuZ2V0TWV0YVBhdGgodGFyZ2V0KSk7XG5cdFx0XHRcdGNvbnN0IG1lc3NhZ2VUYXJnZXREYXRhTW9kZWxPYmplY3QgPSB0YXJnZXRNZXRhQ29udGV4dFxuXHRcdFx0XHRcdD8gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czx1bmtub3duPih0YXJnZXRNZXRhQ29udGV4dClcblx0XHRcdFx0XHQ6IG51bGw7XG5cdFx0XHRcdGlmIChpc1Byb3BlcnR5KG1lc3NhZ2VUYXJnZXREYXRhTW9kZWxPYmplY3Q/LnRhcmdldE9iamVjdCkpIHtcblx0XHRcdFx0XHRjb25zdCB0YXJnZXRGdWxseVF1YWxpZmllZE5hbWUgPVxuXHRcdFx0XHRcdFx0KG1lc3NhZ2VUYXJnZXREYXRhTW9kZWxPYmplY3QgYXMgdW5rbm93biBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pik/LnRhcmdldE9iamVjdD8uZnVsbHlRdWFsaWZpZWROYW1lID8/IFwiXCI7XG5cdFx0XHRcdFx0aWYgKHRoaXMuaXNQcm9wZXJ0eUNvbnNpZGVyZWRGb3JJbmxpbmVFZGl0KHRhcmdldEZ1bGx5UXVhbGlmaWVkTmFtZSkpIHtcblx0XHRcdFx0XHRcdHRoaXMuc3RhcnRJbmxpbmVFZGl0KHRhcmdldEZ1bGx5UXVhbGlmaWVkTmFtZSwgdGhpcy5pbmxpbmVFZGl0QmluZGluZ0NvbnRleHRQYXRoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUGVyZm9ybXMgYSBkZWxheWVkQ2FsbCB3aGVuIHlvdSBmb2N1cyBvdXQgb2YgYSBmaWVsZC5cblx0ICovXG5cdGFzeW5jIGRlbGF5ZWRDYWxsVG9TYXZlKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICh0aGlzLmFib3J0VGltZXJCZWZvcmVTYXZlIHx8IHRoaXMucGF0Y2hQcm9taXNlIHx8IHRoaXMucHJldmVudEZpZWxkR3JvdXBDaGFuZ2VIYW5kbGVyKSB7XG5cdFx0XHQvLyBpZiB0aGVyZSBpcyBhbHJlYWR5IGEgdGltZXIgcnVubmluZyBvciBhIHNhdmUgaW4gcHJvY2VzcyBkbyBub3RoaW5nXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHRpbWVyQmVmb3JlU2F2ZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdHRoaXMuYWJvcnRUaW1lckJlZm9yZVNhdmUgPSByZWplY3Q7XG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHJlc29sdmUoKSwgNTAwKTtcblx0XHR9KTtcblx0XHR0cnkge1xuXHRcdFx0YXdhaXQgdGltZXJCZWZvcmVTYXZlO1xuXHRcdFx0dGhpcy5hYm9ydFRpbWVyQmVmb3JlU2F2ZSA9IHVuZGVmaW5lZDtcblx0XHRcdHRoaXMuaW5saW5lRWRpdFNhdmUoKTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHQvLyBOb3RoaW5nIHRvIHNlZSBpdCBpcyBqdXN0IHNvbWVvbmUgdGhhdCBjYW5jZWxsZWQgdGhlIHRpbWVyXG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byByZWFjdGl2YXRlIHRoZSBmaWVsZCBncm91cCBjaGFuZ2UgaGFuZGxlciBhZnRlciBhIGRlbGF5LlxuXHQgKiBUaGlzIGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGZpZWxkIGdyb3VwIGNoYW5nZSBoYW5kbGVyIGlzIG5vdCB0cmlnZ2VyZWQgd2hpbGUgZm9jdXMgaXMgc2hpZnRpbmcgd2hlbiB3ZSBvcGVuIGEgZGlhbG9nLlxuXHQgKi9cblx0cmVhY3RpdmF0ZUZpZWxkR3JvdXBDaGFuZ2VIYW5kbGVyKCk6IHZvaWQge1xuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0dGhpcy5wcmV2ZW50RmllbGRHcm91cENoYW5nZUhhbmRsZXIgPSBmYWxzZTtcblx0XHR9LCA1MDApO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byBlbnN1cmUgd2UgbGVhdmUgaW5saW5lIGVkaXQgYmVmb3JlIGFueSBuYXZpZ2F0aW9uLi5cblx0ICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJldHJ1bnMgdHJ1ZSBpZiB3ZSBuZWVkIHRvIGNhbmNlbCBuYXZpZ2F0aW9uIGFuZCBzdGF5IGluIGlubGluZSBlZGl0XG5cdCAqL1xuXHRAbWV0aG9kT3ZlcnJpZGUoXCJyb3V0aW5nXCIpXG5cdGFzeW5jIG9uQmVmb3JlTmF2aWdhdGlvbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0XHR0cnkge1xuXHRcdFx0YXdhaXQgdGhpcy5vbkJlZm9yZUFueUVkaXRGbG93QWN0aW9uKCk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byBvcGVuIHRoZSBkaWFsb2cgYmVmb3JlIG5hdmlnYXRpb24uXG5cdCAqIEByZXR1cm5zIFByb21pc2UgdGhhdCByZXR1cm5zIHRoZSBkaWFsb2cgY2hvaWNlIG9uY2UgdGhlIHVzZXIgaGFzIGNsaWNrZWQgb24gb2sgb3IgY2FuY2VsXG5cdCAqL1xuXHRhc3luYyBvcGVuSW5saW5lRWRpdEV4aXREaWFsb2dBbmRXYWl0Rm9yUmVzdWx0KCk6IFByb21pc2U8RElBTE9HUkVTVUxUPiB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlPERJQUxPR1JFU1VMVD4oKHJlc29sdmUpID0+IHtcblx0XHRcdG5ldyBJbmxpbmVFZGl0RXhpdERpYWxvZyh0aGlzLmJhc2UuZ2V0VmlldygpLCByZXNvbHZlKS5vcGVuKCk7XG5cdFx0fSk7XG5cdH1cblxuXHRhc3luYyBvbkJlZm9yZUFueUVkaXRGbG93QWN0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICh0aGlzLmlubGluZUVkaXRDb250cm9scy5sZW5ndGggPiAwKSB7XG5cdFx0XHQvLyB0aGVyZSBhcmUgY29udHJvbHMgaW4gaW5saW5lIGVkaXQgd2UgbmVlZCB0byBwcmV2ZW50IHRoZSBuYXZpZ2F0aW9uIGFuZCBzaG93IHRoZSBkaWFsb2dcblx0XHRcdHRoaXMucHJldmVudEZpZWxkR3JvdXBDaGFuZ2VIYW5kbGVyID0gdHJ1ZTtcblx0XHRcdGlmICh0aGlzLmFib3J0VGltZXJCZWZvcmVTYXZlKSB7XG5cdFx0XHRcdHRoaXMuYWJvcnRUaW1lckJlZm9yZVNhdmUoKTtcblx0XHRcdFx0dGhpcy5hYm9ydFRpbWVyQmVmb3JlU2F2ZSA9IHVuZGVmaW5lZDtcblx0XHRcdH1cblx0XHRcdGlmICghdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRNb2RlbCgpLmhhc1BlbmRpbmdDaGFuZ2VzKENvbW1vblV0aWxzLklOTElORUVESVRfVVBEQVRFR1JPVVBJRCkpIHtcblx0XHRcdFx0Ly8gZmllbGRzIGFyZSBpbiBpbmxpbmUgZWRpdCBhbmQgdGhlcmUgYXJlIG5vIHBlbmRpbmcgY2hhbmdlcy4gV2UgbmVlZCB0byBzaG93IHRoZSBkaWFsb2dcblx0XHRcdFx0dGhpcy5pbmxpbmVFZGl0RW5kKCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHRyeSB7XG5cdFx0XHRcdGlmICh0aGlzLnBhdGNoUHJvbWlzZSkge1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGF0Y2hQcm9taXNlO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnN0IGRpYWxvZ1Jlc3VsdCA9IGF3YWl0IHRoaXMub3BlbklubGluZUVkaXRFeGl0RGlhbG9nQW5kV2FpdEZvclJlc3VsdCgpO1xuXHRcdFx0XHRcdGlmIChkaWFsb2dSZXN1bHQgPT09IFwiU2F2ZVwiKSB7XG5cdFx0XHRcdFx0XHQvLyB3ZSBzYXZlIGFuZCB3YWl0IGZvciB0aGUgcGF0Y2hQcm9taXNlXG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLmlubGluZUVkaXRTYXZlKCk7XG5cdFx0XHRcdFx0XHRpZiAodGhpcy5iYXNlLmdldFZpZXcoKS5nZXRNb2RlbCgpLmhhc1BlbmRpbmdDaGFuZ2VzKENvbW1vblV0aWxzLklOTElORUVESVRfVVBEQVRFR1JPVVBJRCkpIHtcblx0XHRcdFx0XHRcdFx0Ly8gaWYgYWZ0ZXIgc2F2ZXMgdGhlcmUgYXJlIHN0aWxsIGNoYW5nZXMgdGhpcyBtZWFucyBzYXZlIGhhcyBmYWlsZWQuIHdlIG5lZWQgdG8gY2FuY2VsIG5hdmlnYXRpb25cblx0XHRcdFx0XHRcdFx0dGhpcy5mb2N1c0hhbmRsaW5nKHRoaXMuaW5saW5lRWRpdENvbnRyb2xzWzBdKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5yZWFjdGl2YXRlRmllbGRHcm91cENoYW5nZUhhbmRsZXIoKTtcblx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwidW5zYXZlIGNoYW5nZSBwcmV2ZW50IGV4ZWN1dGlvblwiKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2UgaWYgKGRpYWxvZ1Jlc3VsdCA9PT0gXCJDYW5jZWxcIikge1xuXHRcdFx0XHRcdFx0dGhpcy5mb2N1c0hhbmRsaW5nKHRoaXMuaW5saW5lRWRpdENvbnRyb2xzWzBdKTtcblx0XHRcdFx0XHRcdHRoaXMucmVhY3RpdmF0ZUZpZWxkR3JvdXBDaGFuZ2VIYW5kbGVyKCk7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJjYW5jZWwgd2FzIGNob3NlblwiKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gd2UgZGlzY2FyZCB0aGUgY2hhbmdlc1xuXHRcdFx0XHRcdFx0dGhpcy5pbmxpbmVFZGl0RGlzY2FyZCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLnJlYWN0aXZhdGVGaWVsZEdyb3VwQ2hhbmdlSGFuZGxlcigpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHR0aGlzLmZvY3VzSGFuZGxpbmcodGhpcy5pbmxpbmVFZGl0Q29udHJvbHNbMF0pO1xuXHRcdFx0XHR0aGlzLnJlYWN0aXZhdGVGaWVsZEdyb3VwQ2hhbmdlSGFuZGxlcigpO1xuXHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byBlbnN1cmUgd2Ugc3RhcnQgdGhlIHBhZ2Ugd2l0aG91dCBhbnkgdW5zYXZlZCBpbmxpbmUgZWRpdCBjaGFuZ2VzLlxuXHQgKi9cblx0QG1ldGhvZE92ZXJyaWRlKFwiX3JvdXRpbmdcIilcblx0b25CZWZvcmVCaW5kaW5nKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmlubGluZUVkaXRDb250cm9scy5sZW5ndGggPiAwKSB7XG5cdFx0XHQvLyBpZiBmb3Igc29tZW9uZSByZWFzb24gaW5saW5lIGVkaXQgd2Fzbid0IGVuZGVkIHByb3Blcmx5IHdlIGVuc3VyZSB3ZSBzdGFydCBmcmVzaCBvbiB0aGUgcGFnZVxuXHRcdFx0dGhpcy5pbmxpbmVFZGl0RW5kKCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLmJhc2UuZ2V0VmlldygpLmdldE1vZGVsKCkuaGFzUGVuZGluZ0NoYW5nZXMoQ29tbW9uVXRpbHMuSU5MSU5FRURJVF9VUERBVEVHUk9VUElEKSkge1xuXHRcdFx0Ly8gaWYgZm9yIHNvbWVvbmUgcmVhc29uIGlubGluZSBlZGl0IHdhc24ndCBlbmRlZCBwcm9wZXJseSB3ZSBlbnN1cmUgdGhhdCB0aGUgbW9kZWwgaXMgY29uc2lzdGVudFxuXHRcdFx0dGhpcy5iYXNlLmdldFZpZXcoKS5nZXRNb2RlbCgpLnJlc2V0Q2hhbmdlcyhDb21tb25VdGlscy5JTkxJTkVFRElUX1VQREFURUdST1VQSUQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGUgYmVmb3JlIGVkaXQuXG5cdCAqIEByZXR1cm5zIFByb21pc2UgdGhhdCByZWplY3QgaWYgZWRpdCBuZWVkcyB0byBiZSBjYW5jZWxsZWRcblx0ICovXG5cdEBtZXRob2RPdmVycmlkZShcImVkaXRGbG93XCIpXG5cdGFzeW5jIG9uQmVmb3JlRWRpdCgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRyZXR1cm4gdGhpcy5vbkJlZm9yZUFueUVkaXRGbG93QWN0aW9uKCk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlIGJlZm9yZSBjcmVhdGUuXG5cdCAqIEByZXR1cm5zIFByb21pc2UgdGhhdCByZWplY3QgaWYgY3JldGFlIG5lZWRzIHRvIGJlIGNhbmNlbGxlZFxuXHQgKi9cblx0QG1ldGhvZE92ZXJyaWRlKFwiZWRpdEZsb3dcIilcblx0YXN5bmMgb25CZWZvcmVDcmVhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0cmV0dXJuIHRoaXMub25CZWZvcmVBbnlFZGl0Rmxvd0FjdGlvbigpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZSBiZWZvcmUgZGVsZXRlLlxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgcmVqZWN0IGlmIGRlbGV0ZSBuZWVkcyB0byBiZSBjYW5jZWxsZWRcblx0ICovXG5cdEBtZXRob2RPdmVycmlkZShcImVkaXRGbG93XCIpXG5cdGFzeW5jIG9uQmVmb3JlRGVsZXRlKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHJldHVybiB0aGlzLm9uQmVmb3JlQW55RWRpdEZsb3dBY3Rpb24oKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGUgYmVmb3JlIGFjdGlvbi5cblx0ICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlamVjdCBpZiBkZWxldGUgbmVlZHMgdG8gYmUgY2FuY2VsbGVkXG5cdCAqL1xuXHRAbWV0aG9kT3ZlcnJpZGUoXCJlZGl0Rmxvd1wiKVxuXHRhc3luYyBvbkJlZm9yZUV4ZWN1dGVBY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0cmV0dXJuIHRoaXMub25CZWZvcmVBbnlFZGl0Rmxvd0FjdGlvbigpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFByb3BhZ2F0ZSB0aGUgZmllbGQgZ3JvdXAgaWQgdG8gdGhlIG1lc3NhZ2UgYnV0dG9uLlxuXHQgKi9cblx0cHJpdmF0ZSBwcm9wYWdhdGVJbmxpbmVGaWVsZEdyb3VwSWRUb01lc3NhZ2VCdXR0b24oKTogdm9pZCB7XG5cdFx0Ly8gd2UgcHJvcGFnYXRlIHRoZSBmaWVsZGdyb3VwSWQgdG8gdGhlIGZvb3RlciBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cyB0byBlbnN1cmUgdGhhdFxuXHRcdC8vIGNsaWNraW5nIG9uIHRoZSBmb290ZXIgZG9lcyBub3QgdHJpZ2dlciBhIGZvY3Vzb3V0IGFuZCBhIHNhdmUgZm9yIHRoZSBpbmxpbmUgZWRpdFxuXHRcdGNvbnN0IGZvb3RlckNvbnRyb2xzID1cblx0XHRcdCh0aGlzLmJhc2Vcblx0XHRcdFx0LmdldEZvb3RlcigpXG5cdFx0XHRcdD8uZmluZEFnZ3JlZ2F0ZWRPYmplY3RzKHRydWUsIChtYW5hZ2VkT2JqZWN0OiBNYW5hZ2VkT2JqZWN0KSA9PiBtYW5hZ2VkT2JqZWN0LmlzQTxDb250cm9sPihcInNhcC51aS5jb3JlLkNvbnRyb2xcIikpIGFzXG5cdFx0XHRcdHwgQ29udHJvbFtdXG5cdFx0XHRcdHwgdW5kZWZpbmVkKSA/PyBbXTtcblxuXHRcdGZvciAoY29uc3QgY29udHJvbCBvZiBmb290ZXJDb250cm9scykge1xuXHRcdFx0Y29uc3QgY2hpbGRGaWVsZEdyb3VwSWRzID0gbmV3IFNldChjb250cm9sLmdldEZpZWxkR3JvdXBJZHMoKSk7XG5cdFx0XHRjaGlsZEZpZWxkR3JvdXBJZHMuYWRkKFwiSW5saW5lRWRpdFwiKTtcblx0XHRcdGNvbnRyb2wuc2V0RmllbGRHcm91cElkcyhBcnJheS5mcm9tKGNoaWxkRmllbGRHcm91cElkcykpO1xuXHRcdH1cblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O01BeUJxQkEsY0FBYyxJQUFBQyxJQUFBLEdBRGxDQyxjQUFjLENBQUMsaURBQWlELENBQUMsRUFBQUMsS0FBQSxHQXFIaEVDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBQUMsS0FBQSxHQW1JbEJDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBQUMsS0FBQSxHQXNFekJELGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBQUUsS0FBQSxHQWdCMUJGLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBQUcsS0FBQSxHQVMxQkgsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFBSSxLQUFBLEdBUzFCSixjQUFjLENBQUMsVUFBVSxDQUFDLEVBQUFLLEtBQUEsR0FTMUJMLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBQUwsSUFBQSxDQUFBVyxNQUFBLElBQUFDLE9B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
|
|
375
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbmxpbmVFZGl0RmxvdyIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiaG9va2FibGUiLCJfZGVjMyIsIm1ldGhvZE92ZXJyaWRlIiwiX2RlYzQiLCJfZGVjNSIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQmFzZUNvbnRyb2xsZXJFeHRlbnMiLCJfdGhpcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsImlubGluZUVkaXRDb250cm9scyIsInByZXZlbnRGaWVsZEdyb3VwQ2hhbmdlSGFuZGxlciIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJpc0lubGluZUVkaXRQb3NzaWJsZSIsImJhc2UiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRJbmxpbmVFZGl0U2VydmljZSIsImRvZXNQYWdlSGF2ZUlubGluZUVkaXQiLCJnZXRSb3V0aW5nVGFyZ2V0TmFtZSIsImlubGluZUVkaXRTYXZlIiwibW9kZWwiLCJnZXRWaWV3IiwiZ2V0TW9kZWwiLCJtZXNzYWdlcyIsIk1lc3NhZ2luZyIsImdldE1lc3NhZ2VNb2RlbCIsImdldERhdGEiLCJoYXNUZWNobmljYWxFcnJvck1lc3NhZ2VzIiwic29tZSIsIm1lc3NhZ2UiLCJtZXNzYWdlSGFuZGxpbmciLCJpc05vblRlY2huaWNhbE1lc3NhZ2UiLCJnZXRUeXBlIiwiTWVzc2FnZVR5cGUiLCJFcnJvciIsInNldFNob3dGb290ZXIiLCJoYXNQZW5kaW5nQ2hhbmdlcyIsIkNvbW1vblV0aWxzIiwiSU5MSU5FRURJVF9VUERBVEVHUk9VUElEIiwiaW5saW5lRWRpdEVuZCIsInJlbW92ZUFsbE1lc3NhZ2VzIiwic3VibWl0QmF0Y2giLCJlcnJvciIsIkxvZyIsIndhcm5pbmciLCJpbmxpbmVFZGl0RGlzY2FyZCIsInJlc2V0Q2hhbmdlcyIsInJlZnJlc2hEZXNjcmlwdGlvbiIsImNvbnRyb2wiLCJzZXRQcm9wZXJ0eSIsInN0YXJ0SW5saW5lRWRpdCIsInByb3BlcnR5RnVsbHlRdWFsaWZpZWROYW1lIiwiYmluZGluZ0NvbnRleHRQYXRoIiwiY29udHJvbFRyaWdnZXIiLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldFByb3BlcnR5IiwiRHJhZnRFeGlzdHNEaWFsb2ciLCJvcGVuIiwicmVzZXRJbmRpY2F0b3JQb3B1cCIsImlubGluZUVkaXRTZXJ2aWNlIiwiZGVwZW5kZW50UHJvcGVydGllcyIsImdldElubGluZUNvbm5lY3RlZFByb3BlcnRpZXMiLCJpbmxpbmVFZGl0U3RhcnQiLCJmb2N1c0hhbmRsaW5nIiwiaW5saW5lRWRpdENvbnRyb2wiLCJjbG9zZUlubGluZUVkaXRQb3B1cEVkaXRNb2RlIiwiZm9jdXMiLCJwcm9wZXJ0aWVzIiwiYWJvcnRUaW1lckJlZm9yZVNhdmUiLCJ1bmRlZmluZWQiLCJhbHJlYWR5UmVnaXN0ZXJlZENvbnRyb2xzIiwibWFwIiwiZ2V0SWQiLCJpbmNsdWRlcyIsInB1c2giLCJpbmxpbmVFZGl0QmluZGluZ0NvbnRleHRQYXRoIiwiaXNQcm9wZXJ0eUNvbnNpZGVyZWRGb3JJbmxpbmVFZGl0IiwiaGFuZGxlSW5saW5lRWRpdFBhdGNoU2VudCIsImV2ZW50IiwicGF0Y2hQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJnZXRTb3VyY2UiLCJhdHRhY2hFdmVudE9uY2UiLCJwYXRjaENvbXBsZXRlZEV2ZW50IiwiYlN1Y2Nlc3MiLCJnZXRQYXJhbWV0ZXIiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiTWVzc2FnZVRvYXN0Iiwic2hvdyIsImdldFRleHQiLCJoYW5kbGVJbmxpbmVFZGl0U2F2ZUZhaWxlZCIsIm1ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsInByb3BhZ2F0ZUlubGluZUZpZWxkR3JvdXBJZFRvTWVzc2FnZUJ1dHRvbiIsInRhcmdldCIsImdldFRhcmdldHMiLCJ0YXJnZXRNZXRhQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiZ2V0TWV0YVBhdGgiLCJtZXNzYWdlVGFyZ2V0RGF0YU1vZGVsT2JqZWN0IiwiTWV0YU1vZGVsQ29udmVydGVyIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiaXNQcm9wZXJ0eSIsInRhcmdldE9iamVjdCIsInRhcmdldEZ1bGx5UXVhbGlmaWVkTmFtZSIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImRlbGF5ZWRDYWxsVG9TYXZlIiwidGltZXJCZWZvcmVTYXZlIiwic2V0VGltZW91dCIsImUiLCJyZWFjdGl2YXRlRmllbGRHcm91cENoYW5nZUhhbmRsZXIiLCJvbkJlZm9yZU5hdmlnYXRpb24iLCJvbkJlZm9yZUFueUVkaXRGbG93QWN0aW9uIiwib3BlbklubGluZUVkaXRFeGl0RGlhbG9nQW5kV2FpdEZvclJlc3VsdCIsIklubGluZUVkaXRFeGl0RGlhbG9nIiwiZGlhbG9nUmVzdWx0Iiwib25CZWZvcmVCaW5kaW5nIiwib25CZWZvcmVFZGl0Iiwib25CZWZvcmVDcmVhdGUiLCJvbkJlZm9yZURlbGV0ZSIsIm9uQmVmb3JlRXhlY3V0ZUFjdGlvbiIsImZvb3RlckNvbnRyb2xzIiwiZ2V0Rm9vdGVyIiwiZmluZEFnZ3JlZ2F0ZWRPYmplY3RzIiwibWFuYWdlZE9iamVjdCIsImlzQSIsImNoaWxkRmllbGRHcm91cElkcyIsIlNldCIsImdldEZpZWxkR3JvdXBJZHMiLCJhZGQiLCJzZXRGaWVsZEdyb3VwSWRzIiwiZnJvbSIsIkJhc2VDb250cm9sbGVyRXh0ZW5zaW9uIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsIk9iamVjdCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiSW5saW5lRWRpdEZsb3cudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgbWV0aG9kT3ZlcnJpZGUsIHR5cGUgRW5oYW5jZVdpdGhVSTUgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBob29rYWJsZSB9IGZyb20gXCJzYXAvZmUvYmFzZS9Ib29rU3VwcG9ydFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQmFzZUNvbnRyb2xsZXJFeHRlbnNpb24gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0Jhc2VDb250cm9sbGVyRXh0ZW5zaW9uXCI7XG5pbXBvcnQgbWVzc2FnZUhhbmRsaW5nIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9tZXNzYWdlSGFuZGxlci9tZXNzYWdlSGFuZGxpbmdcIjtcbmltcG9ydCBJbmxpbmVFZGl0RXhpdERpYWxvZywgeyB0eXBlIERJQUxPR1JFU1VMVCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9scy9pbmxpbmVFZGl0Rmxvdy9JbmxpbmVFZGl0RXhpdERpYWxvZ1wiO1xuaW1wb3J0ICogYXMgTWV0YU1vZGVsQ29udmVydGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgaXNQcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB7IHR5cGUgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB0eXBlIEZpZWxkIGZyb20gXCJzYXAvZmUvbWFjcm9zL0ZpZWxkXCI7XG5pbXBvcnQgdHlwZSBJbmxpbmVFZGl0IGZyb20gXCJzYXAvZmUvbWFjcm9zL2lubGluZUVkaXQvSW5saW5lRWRpdFwiO1xuaW1wb3J0IE1lc3NhZ2VUb2FzdCBmcm9tIFwic2FwL20vTWVzc2FnZVRvYXN0XCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IE1lc3NhZ2luZyBmcm9tIFwic2FwL3VpL2NvcmUvTWVzc2FnaW5nXCI7XG5pbXBvcnQgdHlwZSBNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VcIjtcbmltcG9ydCBNZXNzYWdlVHlwZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlVHlwZVwiO1xuaW1wb3J0IHR5cGUgeyBPRGF0YUNvbnRleHRCaW5kaW5nJFBhdGNoU2VudEV2ZW50IH0gZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUNvbnRleHRCaW5kaW5nXCI7XG5pbXBvcnQgRHJhZnRFeGlzdHNEaWFsb2cgZnJvbSBcIi4uL2NvbnRyb2xzL2lubGluZUVkaXRGbG93L0RyYWZ0RXhpc3RzRGlhbG9nXCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLklubGluZUVkaXRGbG93XCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbmxpbmVFZGl0RmxvdyBleHRlbmRzIEJhc2VDb250cm9sbGVyRXh0ZW5zaW9uIHtcblx0cHJvdGVjdGVkIGJhc2UhOiBQYWdlQ29udHJvbGxlcjtcblxuXHRwcml2YXRlIGlubGluZUVkaXRDb250cm9sczogQ29udHJvbFtdID0gW107XG5cblx0cHJpdmF0ZSBpbmxpbmVFZGl0QmluZGluZ0NvbnRleHRQYXRoPzogc3RyaW5nO1xuXG5cdHByaXZhdGUgYWJvcnRUaW1lckJlZm9yZVNhdmU/OiBGdW5jdGlvbjtcblxuXHRwcml2YXRlIHBhdGNoUHJvbWlzZT86IFByb21pc2U8VUk1RXZlbnQ+O1xuXG5cdHByaXZhdGUgcHJldmVudEZpZWxkR3JvdXBDaGFuZ2VIYW5kbGVyID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byBrbm93IGlmIHRoZXJlIGNhbiBiZSBpbmxpbmUgZWRpdCBvbiB0aGUgcGFnZS5cblx0ICogQHJldHVybnMgVHJ1ZSBpZiBpbmxpbmUgZWRpdCBpcyBwb3NzaWJsZVxuXHQgKi9cblx0aXNJbmxpbmVFZGl0UG9zc2libGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuYmFzZS5nZXRBcHBDb21wb25lbnQoKS5nZXRJbmxpbmVFZGl0U2VydmljZSgpLmRvZXNQYWdlSGF2ZUlubGluZUVkaXQodGhpcy5iYXNlLmdldFJvdXRpbmdUYXJnZXROYW1lKCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNhdmUgdGhlIGlubGluZSBlZGl0IGNoYW5nZXMuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVkIG9uY2UgdGhlIGJhdGNoIGhhcyByZXR1cm5lZC5cblx0ICovXG5cdGFzeW5jIGlubGluZUVkaXRTYXZlKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IG1vZGVsID0gdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRNb2RlbCgpO1xuXG5cdFx0Y29uc3QgbWVzc2FnZXMgPSBNZXNzYWdpbmcuZ2V0TWVzc2FnZU1vZGVsKCkuZ2V0RGF0YSgpO1xuXHRcdGNvbnN0IGhhc1RlY2huaWNhbEVycm9yTWVzc2FnZXMgPSBtZXNzYWdlcy5zb21lKFxuXHRcdFx0KG1lc3NhZ2U6IE1lc3NhZ2UpID0+ICFtZXNzYWdlSGFuZGxpbmcuaXNOb25UZWNobmljYWxNZXNzYWdlKG1lc3NhZ2UpICYmIG1lc3NhZ2UuZ2V0VHlwZSgpID09PSBNZXNzYWdlVHlwZS5FcnJvclxuXHRcdCk7XG5cdFx0aWYgKGhhc1RlY2huaWNhbEVycm9yTWVzc2FnZXMpIHtcblx0XHRcdHRoaXMuYmFzZS5zZXRTaG93Rm9vdGVyKHRydWUpO1xuXHRcdFx0Ly8gaWYgdGhlcmUgYXJlIGludmFsaWQgdHlwZXMgd2Ugc2hvdWxkIG5vdCB0cnkgdG8gc2F2ZVxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAoIW1vZGVsLmhhc1BlbmRpbmdDaGFuZ2VzKENvbW1vblV0aWxzLklOTElORUVESVRfVVBEQVRFR1JPVVBJRCkpIHtcblx0XHRcdHRoaXMuaW5saW5lRWRpdEVuZCgpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0cnkge1xuXHRcdFx0TWVzc2FnaW5nLnJlbW92ZUFsbE1lc3NhZ2VzKCk7XG5cdFx0XHRhd2FpdCBtb2RlbC5zdWJtaXRCYXRjaChDb21tb25VdGlscy5JTkxJTkVFRElUX1VQREFURUdST1VQSUQpO1xuXHRcdH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG5cdFx0XHRMb2cud2FybmluZyhcIkVycm9yIHdoaWxlIHNhdmluZyBpbmxpbmUgZWRpdCBjaGFuZ2VzXCIpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBEaXNjYXJkIHRoZSBpbmxpbmUgZWRpdCBjaGFuZ2VzLlxuXHQgKi9cblx0aW5saW5lRWRpdERpc2NhcmQoKTogdm9pZCB7XG5cdFx0dGhpcy5iYXNlLmdldFZpZXcoKS5nZXRNb2RlbCgpLnJlc2V0Q2hhbmdlcyhDb21tb25VdGlscy5JTkxJTkVFRElUX1VQREFURUdST1VQSUQpO1xuXHRcdHRoaXMuaW5saW5lRWRpdEVuZCh0cnVlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFbmQgdGhlIGlubGluZSBlZGl0LlxuXHQgKiBAcGFyYW0gcmVmcmVzaERlc2NyaXB0aW9uXG5cdCAqL1xuXHRpbmxpbmVFZGl0RW5kKHJlZnJlc2hEZXNjcmlwdGlvbj86IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRNZXNzYWdpbmcucmVtb3ZlQWxsTWVzc2FnZXMoKTtcblx0XHR0aGlzLmJhc2Uuc2V0U2hvd0Zvb3RlcihmYWxzZSk7XG5cdFx0Zm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuaW5saW5lRWRpdENvbnRyb2xzKSB7XG5cdFx0XHQoY29udHJvbCBhcyBFbmhhbmNlV2l0aFVJNTxGaWVsZD4gJiBJbmxpbmVFZGl0KS5pbmxpbmVFZGl0RW5kKHJlZnJlc2hEZXNjcmlwdGlvbik7XG5cdFx0fVxuXHRcdHRoaXMuaW5saW5lRWRpdENvbnRyb2xzID0gW107XG5cdFx0dGhpcy5iYXNlLmdldFZpZXcoKS5nZXRNb2RlbChcInVpXCIpLnNldFByb3BlcnR5KFwiL2lzSW5saW5lRWRpdEFjdGl2ZVwiLCBmYWxzZSk7XG5cdH1cblxuXHQvKipcblx0ICogU3RhcnQgdGhlIGlubGluZSBlZGl0IG9uIHRoZSBiaW5kaW5nQ29udGV4dFBhdGggZm9yIHRoZSBwcm9wZXJ0eUZ1bGx5UXVhbGlmaWVkTmFtZS5cblx0ICogQHBhcmFtIHByb3BlcnR5RnVsbHlRdWFsaWZpZWROYW1lXG5cdCAqIEBwYXJhbSBiaW5kaW5nQ29udGV4dFBhdGhcblx0ICogQHBhcmFtIGNvbnRyb2xUcmlnZ2VyXG5cdCAqL1xuXHRzdGFydElubGluZUVkaXQoXG5cdFx0cHJvcGVydHlGdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyxcblx0XHRiaW5kaW5nQ29udGV4dFBhdGg6IHN0cmluZyxcblx0XHRjb250cm9sVHJpZ2dlcj86IEVuaGFuY2VXaXRoVUk1PEZpZWxkPiAmIElubGluZUVkaXRcblx0KTogdm9pZCB7XG5cdFx0aWYgKGNvbnRyb2xUcmlnZ2VyPy5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQcm9wZXJ0eShcIkhhc0RyYWZ0RW50aXR5XCIpKSB7XG5cdFx0XHQvLyB0aGVyZSBpcyBhbHJlYWR5IGEgZHJhZnQgb24gdGhlIGVudGl0eS4gV2Ugc2hvdWxkIG5vdCBzdGFydCBpbmxpbmUgZWRpdFxuXHRcdFx0bmV3IERyYWZ0RXhpc3RzRGlhbG9nKHRoaXMuYmFzZS5nZXRWaWV3KCkpLm9wZW4oKTtcblx0XHRcdGNvbnRyb2xUcmlnZ2VyPy5yZXNldEluZGljYXRvclBvcHVwKCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGlubGluZUVkaXRTZXJ2aWNlID0gdGhpcy5iYXNlLmdldEFwcENvbXBvbmVudCgpLmdldElubGluZUVkaXRTZXJ2aWNlKCk7XG5cdFx0Y29uc3QgZGVwZW5kZW50UHJvcGVydGllcyA9IGlubGluZUVkaXRTZXJ2aWNlLmdldElubGluZUNvbm5lY3RlZFByb3BlcnRpZXMoXG5cdFx0XHR0aGlzLmJhc2UuZ2V0Um91dGluZ1RhcmdldE5hbWUoKSxcblx0XHRcdHByb3BlcnR5RnVsbHlRdWFsaWZpZWROYW1lXG5cdFx0KTtcblxuXHRcdHRoaXMuaW5saW5lRWRpdFN0YXJ0KFtdLCBkZXBlbmRlbnRQcm9wZXJ0aWVzPy5sZW5ndGggPyBkZXBlbmRlbnRQcm9wZXJ0aWVzIDogW3Byb3BlcnR5RnVsbHlRdWFsaWZpZWROYW1lXSwgYmluZGluZ0NvbnRleHRQYXRoKTtcblx0XHR0aGlzLmJhc2UuZ2V0VmlldygpLmdldE1vZGVsKFwidWlcIikuc2V0UHJvcGVydHkoXCIvaXNJbmxpbmVFZGl0QWN0aXZlXCIsIHRydWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZvY3VzIGhhbmRsaW5nIGZvciBpbmxpbmUgZWRpdC4gV2hlbiBvbmUgZmllbGQgZ2V0cyBmb2N1cywgYWxsIG90aGVyIGlubGluZSBlZGl0IHBvcHVwcywgdGhhdCBhcmUgY3VycmVudGx5IG9wZW5lZCwgc2hvdWxkIGJlIGNsb3NlZC5cblx0ICogQHBhcmFtIGlubGluZUVkaXRDb250cm9sIENvbnRyb2xzIHdoaWNoIGFyZSBjdXJyZW50bHkgaW4gaW5saW5lIGVkaXQgbW9kZS5cblx0ICovXG5cdGZvY3VzSGFuZGxpbmcoaW5saW5lRWRpdENvbnRyb2w6IENvbnRyb2wpOiB2b2lkIHtcblx0XHRmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGhpcy5pbmxpbmVFZGl0Q29udHJvbHMpIHtcblx0XHRcdGlmIChjb250cm9sICE9PSBpbmxpbmVFZGl0Q29udHJvbCkge1xuXHRcdFx0XHQoY29udHJvbCBhcyBFbmhhbmNlV2l0aFVJNTxGaWVsZD4gJiBJbmxpbmVFZGl0KS5jbG9zZUlubGluZUVkaXRQb3B1cEVkaXRNb2RlKCk7XG5cdFx0XHR9IGVsc2UgaWYgKGNvbnRyb2wgPT09IGlubGluZUVkaXRDb250cm9sKSB7XG5cdFx0XHRcdGNvbnRyb2wuZm9jdXMoKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ29uZmlybSB0aGUgc3RhcnQgb2YgdGhlIGlubGluZSBlZGl0IG9uIHRoZSBiaW5kaW5nQ29udGV4dFBhdGggZm9yIHRoZSBwcm9wZXJ0aWVzLlxuXHQgKiBAcGFyYW0gaW5saW5lRWRpdENvbnRyb2xzIFRoZSBmaWVsZHMgdGhhdCBhcmUgY3VycmVudGx5IGluIGlubGluZSBlZGl0IG1vZGUuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0aWVzXG5cdCAqIEBwYXJhbSBiaW5kaW5nQ29udGV4dFBhdGhcblx0ICovXG5cdEBob29rYWJsZShcIkJlZm9yZVwiKVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdGFzeW5jIGlubGluZUVkaXRTdGFydChpbmxpbmVFZGl0Q29udHJvbHM6IENvbnRyb2xbXSwgcHJvcGVydGllczogc3RyaW5nW10sIGJpbmRpbmdDb250ZXh0UGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKHRoaXMuYWJvcnRUaW1lckJlZm9yZVNhdmUpIHtcblx0XHRcdC8vIGlmIHRoZXJlIGlzICBhIHRpbWVyIHRvIHNhdmVcblx0XHRcdHRoaXMuYWJvcnRUaW1lckJlZm9yZVNhdmUoKTtcblx0XHRcdHRoaXMuYWJvcnRUaW1lckJlZm9yZVNhdmUgPSB1bmRlZmluZWQ7XG5cdFx0XHRhd2FpdCB0aGlzLmlubGluZUVkaXRTYXZlKCk7XG5cdFx0fVxuXHRcdGNvbnN0IGFscmVhZHlSZWdpc3RlcmVkQ29udHJvbHMgPSB0aGlzLmlubGluZUVkaXRDb250cm9scy5tYXAoKGNvbnRyb2w6IENvbnRyb2wpID0+IGNvbnRyb2wuZ2V0SWQoKSk7XG5cdFx0Zm9yIChjb25zdCBjb250cm9sIG9mIGlubGluZUVkaXRDb250cm9scykge1xuXHRcdFx0aWYgKCFhbHJlYWR5UmVnaXN0ZXJlZENvbnRyb2xzLmluY2x1ZGVzKGNvbnRyb2wuZ2V0SWQoKSkpIHtcblx0XHRcdFx0dGhpcy5pbmxpbmVFZGl0Q29udHJvbHMucHVzaChjb250cm9sKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0dGhpcy5pbmxpbmVFZGl0QmluZGluZ0NvbnRleHRQYXRoID0gYmluZGluZ0NvbnRleHRQYXRoO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZW5pZW5jZSBtZXRob2QgdG8gZGV0ZXJtaW5lIGlmIGEgcHJvcGVydHkgc2hvdWxkIGJlIGNvbnNpZGVyZWQgZm9yIGlubGluZSBlZGl0LlxuXHQgKiBAcGFyYW0gcHJvcGVydHlGdWxseVF1YWxpZmllZE5hbWVcblx0ICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBwcm9wZXJ0eSBpcyBjb25zaWRlcmVkIGZvciBJbmxpbmUgZWRpdC5cblx0ICovXG5cdGlzUHJvcGVydHlDb25zaWRlcmVkRm9ySW5saW5lRWRpdChwcm9wZXJ0eUZ1bGx5UXVhbGlmaWVkTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuYmFzZVxuXHRcdFx0LmdldEFwcENvbXBvbmVudCgpXG5cdFx0XHQuZ2V0SW5saW5lRWRpdFNlcnZpY2UoKVxuXHRcdFx0LmlzUHJvcGVydHlDb25zaWRlcmVkRm9ySW5saW5lRWRpdCh0aGlzLmJhc2UuZ2V0Um91dGluZ1RhcmdldE5hbWUoKSwgcHJvcGVydHlGdWxseVF1YWxpZmllZE5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIHBhdGNoU2VudCBldmVudDogaGFuZGxlIGlubGluZSBlZGl0IHNhdmUgc3VjY2VzcyBvciBmYWlsdXJlLlxuXHQgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IHNlbnQgYnkgdGhlIGJpbmRpbmdcblx0ICovXG5cdGFzeW5jIGhhbmRsZUlubGluZUVkaXRQYXRjaFNlbnQoZXZlbnQ6IE9EYXRhQ29udGV4dEJpbmRpbmckUGF0Y2hTZW50RXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAodGhpcy5pbmxpbmVFZGl0Q29udHJvbHMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHQvLyBpZiB0aGVyZSBhcmUgbm8gaW5saW5lIGVkaXQgY29udHJvbHMsIHRoaXMgbWF5IGhhdmUgYmVlbiB0cmlnZ2VyZWQgYnkgc29tZXRoaW5nIGVsc2Vcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLnBhdGNoUHJvbWlzZSA9IG5ldyBQcm9taXNlPFVJNUV2ZW50PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRldmVudC5nZXRTb3VyY2UoKS5hdHRhY2hFdmVudE9uY2UoXCJwYXRjaENvbXBsZXRlZFwiLCAocGF0Y2hDb21wbGV0ZWRFdmVudDogVUk1RXZlbnQ8eyBzdWNjZXNzOiBib29sZWFuIH0+KSA9PiB7XG5cdFx0XHRcdGNvbnN0IGJTdWNjZXNzID0gcGF0Y2hDb21wbGV0ZWRFdmVudC5nZXRQYXJhbWV0ZXIoXCJzdWNjZXNzXCIpO1xuXHRcdFx0XHRpZiAoYlN1Y2Nlc3MpIHtcblx0XHRcdFx0XHRyZXNvbHZlKHBhdGNoQ29tcGxldGVkRXZlbnQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJlamVjdChwYXRjaENvbXBsZXRlZEV2ZW50KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdFx0dHJ5IHtcblx0XHRcdGF3YWl0IHRoaXMucGF0Y2hQcm9taXNlO1xuXHRcdFx0dGhpcy5wYXRjaFByb21pc2UgPSB1bmRlZmluZWQ7XG5cdFx0XHRjb25zdCByZXNvdXJjZUJ1bmRsZSA9IExpYi5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb3JlXCIpO1xuXHRcdFx0aWYgKHJlc291cmNlQnVuZGxlKSB7XG5cdFx0XHRcdE1lc3NhZ2VUb2FzdC5zaG93KHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0lOTElORV9FRElUX1NBVkVEXCIpKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuaW5saW5lRWRpdEVuZCgpO1xuXHRcdH0gY2F0Y2ggKHBhdGNoQ29tcGxldGVkRXZlbnQpIHtcblx0XHRcdHRoaXMucGF0Y2hQcm9taXNlID0gdW5kZWZpbmVkO1xuXHRcdFx0dGhpcy5oYW5kbGVJbmxpbmVFZGl0U2F2ZUZhaWxlZCgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gc2hvdyB0aGUgZXJyb3JzIHdoZW4gdGhlIGlubGluZSBlZGl0IHNhdmUgZmFpbHMuXG5cdCAqL1xuXHRoYW5kbGVJbmxpbmVFZGl0U2F2ZUZhaWxlZCgpOiB2b2lkIHtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSB0aGlzLmJhc2UuZ2V0VmlldygpLmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCk7XG5cblx0XHRjb25zdCBtZXNzYWdlcyA9IE1lc3NhZ2luZy5nZXRNZXNzYWdlTW9kZWwoKS5nZXREYXRhKCk7XG5cdFx0aWYgKG1lc3NhZ2VzLmxlbmd0aCkge1xuXHRcdFx0dGhpcy5iYXNlLnNldFNob3dGb290ZXIodHJ1ZSk7XG5cdFx0XHR0aGlzLnByb3BhZ2F0ZUlubGluZUZpZWxkR3JvdXBJZFRvTWVzc2FnZUJ1dHRvbigpO1xuXHRcdH1cblx0XHRpZiAoIXRoaXMuaW5saW5lRWRpdEJpbmRpbmdDb250ZXh0UGF0aCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgbWVzc2FnZXMpIHtcblx0XHRcdGZvciAoY29uc3QgdGFyZ2V0IG9mIG1lc3NhZ2UuZ2V0VGFyZ2V0cygpKSB7XG5cdFx0XHRcdGNvbnN0IHRhcmdldE1ldGFDb250ZXh0ID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KG1ldGFNb2RlbC5nZXRNZXRhUGF0aCh0YXJnZXQpKTtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZVRhcmdldERhdGFNb2RlbE9iamVjdCA9IHRhcmdldE1ldGFDb250ZXh0XG5cdFx0XHRcdFx0PyBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPHVua25vd24+KHRhcmdldE1ldGFDb250ZXh0KVxuXHRcdFx0XHRcdDogbnVsbDtcblx0XHRcdFx0aWYgKGlzUHJvcGVydHkobWVzc2FnZVRhcmdldERhdGFNb2RlbE9iamVjdD8udGFyZ2V0T2JqZWN0KSkge1xuXHRcdFx0XHRcdGNvbnN0IHRhcmdldEZ1bGx5UXVhbGlmaWVkTmFtZSA9XG5cdFx0XHRcdFx0XHQobWVzc2FnZVRhcmdldERhdGFNb2RlbE9iamVjdCBhcyB1bmtub3duIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+KT8udGFyZ2V0T2JqZWN0Py5mdWxseVF1YWxpZmllZE5hbWUgPz8gXCJcIjtcblx0XHRcdFx0XHRpZiAodGhpcy5pc1Byb3BlcnR5Q29uc2lkZXJlZEZvcklubGluZUVkaXQodGFyZ2V0RnVsbHlRdWFsaWZpZWROYW1lKSkge1xuXHRcdFx0XHRcdFx0dGhpcy5zdGFydElubGluZUVkaXQodGFyZ2V0RnVsbHlRdWFsaWZpZWROYW1lLCB0aGlzLmlubGluZUVkaXRCaW5kaW5nQ29udGV4dFBhdGgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBQZXJmb3JtcyBhIGRlbGF5ZWRDYWxsIHdoZW4geW91IGZvY3VzIG91dCBvZiBhIGZpZWxkLlxuXHQgKi9cblx0YXN5bmMgZGVsYXllZENhbGxUb1NhdmUoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKHRoaXMuYWJvcnRUaW1lckJlZm9yZVNhdmUgfHwgdGhpcy5wYXRjaFByb21pc2UgfHwgdGhpcy5wcmV2ZW50RmllbGRHcm91cENoYW5nZUhhbmRsZXIpIHtcblx0XHRcdC8vIGlmIHRoZXJlIGlzIGFscmVhZHkgYSB0aW1lciBydW5uaW5nIG9yIGEgc2F2ZSBpbiBwcm9jZXNzIGRvIG5vdGhpbmdcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgdGltZXJCZWZvcmVTYXZlID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0dGhpcy5hYm9ydFRpbWVyQmVmb3JlU2F2ZSA9IHJlamVjdDtcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4gcmVzb2x2ZSgpLCA1MDApO1xuXHRcdH0pO1xuXHRcdHRyeSB7XG5cdFx0XHRhd2FpdCB0aW1lckJlZm9yZVNhdmU7XG5cdFx0XHR0aGlzLmFib3J0VGltZXJCZWZvcmVTYXZlID0gdW5kZWZpbmVkO1xuXHRcdFx0dGhpcy5pbmxpbmVFZGl0U2F2ZSgpO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdC8vIE5vdGhpbmcgdG8gc2VlIGl0IGlzIGp1c3Qgc29tZW9uZSB0aGF0IGNhbmNlbGxlZCB0aGUgdGltZXJcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIHRvIHJlYWN0aXZhdGUgdGhlIGZpZWxkIGdyb3VwIGNoYW5nZSBoYW5kbGVyIGFmdGVyIGEgZGVsYXkuXG5cdCAqIFRoaXMgaXMgdXNlZCB0byBlbnN1cmUgdGhhdCB0aGUgZmllbGQgZ3JvdXAgY2hhbmdlIGhhbmRsZXIgaXMgbm90IHRyaWdnZXJlZCB3aGlsZSBmb2N1cyBpcyBzaGlmdGluZyB3aGVuIHdlIG9wZW4gYSBkaWFsb2cuXG5cdCAqL1xuXHRyZWFjdGl2YXRlRmllbGRHcm91cENoYW5nZUhhbmRsZXIoKTogdm9pZCB7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLnByZXZlbnRGaWVsZEdyb3VwQ2hhbmdlSGFuZGxlciA9IGZhbHNlO1xuXHRcdH0sIDUwMCk7XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIHRvIGVuc3VyZSB3ZSBsZWF2ZSBpbmxpbmUgZWRpdCBiZWZvcmUgYW55IG5hdmlnYXRpb24uLlxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgcmV0cnVucyB0cnVlIGlmIHdlIG5lZWQgdG8gY2FuY2VsIG5hdmlnYXRpb24gYW5kIHN0YXkgaW4gaW5saW5lIGVkaXRcblx0ICovXG5cdEBtZXRob2RPdmVycmlkZShcInJvdXRpbmdcIilcblx0YXN5bmMgb25CZWZvcmVOYXZpZ2F0aW9uKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdHRyeSB7XG5cdFx0XHRhd2FpdCB0aGlzLm9uQmVmb3JlQW55RWRpdEZsb3dBY3Rpb24oKTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIHRvIG9wZW4gdGhlIGRpYWxvZyBiZWZvcmUgbmF2aWdhdGlvbi5cblx0ICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJldHVybnMgdGhlIGRpYWxvZyBjaG9pY2Ugb25jZSB0aGUgdXNlciBoYXMgY2xpY2tlZCBvbiBvayBvciBjYW5jZWxcblx0ICovXG5cdGFzeW5jIG9wZW5JbmxpbmVFZGl0RXhpdERpYWxvZ0FuZFdhaXRGb3JSZXN1bHQoKTogUHJvbWlzZTxESUFMT0dSRVNVTFQ+IHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2U8RElBTE9HUkVTVUxUPigocmVzb2x2ZSkgPT4ge1xuXHRcdFx0bmV3IElubGluZUVkaXRFeGl0RGlhbG9nKHRoaXMuYmFzZS5nZXRWaWV3KCksIHJlc29sdmUpLm9wZW4oKTtcblx0XHR9KTtcblx0fVxuXG5cdGFzeW5jIG9uQmVmb3JlQW55RWRpdEZsb3dBY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKHRoaXMuaW5saW5lRWRpdENvbnRyb2xzLmxlbmd0aCA+IDApIHtcblx0XHRcdC8vIHRoZXJlIGFyZSBjb250cm9scyBpbiBpbmxpbmUgZWRpdCB3ZSBuZWVkIHRvIHByZXZlbnQgdGhlIG5hdmlnYXRpb24gYW5kIHNob3cgdGhlIGRpYWxvZ1xuXHRcdFx0dGhpcy5wcmV2ZW50RmllbGRHcm91cENoYW5nZUhhbmRsZXIgPSB0cnVlO1xuXHRcdFx0aWYgKHRoaXMuYWJvcnRUaW1lckJlZm9yZVNhdmUpIHtcblx0XHRcdFx0dGhpcy5hYm9ydFRpbWVyQmVmb3JlU2F2ZSgpO1xuXHRcdFx0XHR0aGlzLmFib3J0VGltZXJCZWZvcmVTYXZlID0gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCF0aGlzLmJhc2UuZ2V0VmlldygpLmdldE1vZGVsKCkuaGFzUGVuZGluZ0NoYW5nZXMoQ29tbW9uVXRpbHMuSU5MSU5FRURJVF9VUERBVEVHUk9VUElEKSkge1xuXHRcdFx0XHQvLyBmaWVsZHMgYXJlIGluIGlubGluZSBlZGl0IGFuZCB0aGVyZSBhcmUgbm8gcGVuZGluZyBjaGFuZ2VzLiBXZSBuZWVkIHRvIHNob3cgdGhlIGRpYWxvZ1xuXHRcdFx0XHR0aGlzLmlubGluZUVkaXRFbmQoKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0aWYgKHRoaXMucGF0Y2hQcm9taXNlKSB7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wYXRjaFByb21pc2U7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3QgZGlhbG9nUmVzdWx0ID0gYXdhaXQgdGhpcy5vcGVuSW5saW5lRWRpdEV4aXREaWFsb2dBbmRXYWl0Rm9yUmVzdWx0KCk7XG5cdFx0XHRcdFx0aWYgKGRpYWxvZ1Jlc3VsdCA9PT0gXCJTYXZlXCIpIHtcblx0XHRcdFx0XHRcdC8vIHdlIHNhdmUgYW5kIHdhaXQgZm9yIHRoZSBwYXRjaFByb21pc2Vcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMuaW5saW5lRWRpdFNhdmUoKTtcblx0XHRcdFx0XHRcdGlmICh0aGlzLmJhc2UuZ2V0VmlldygpLmdldE1vZGVsKCkuaGFzUGVuZGluZ0NoYW5nZXMoQ29tbW9uVXRpbHMuSU5MSU5FRURJVF9VUERBVEVHUk9VUElEKSkge1xuXHRcdFx0XHRcdFx0XHQvLyBpZiBhZnRlciBzYXZlcyB0aGVyZSBhcmUgc3RpbGwgY2hhbmdlcyB0aGlzIG1lYW5zIHNhdmUgaGFzIGZhaWxlZC4gd2UgbmVlZCB0byBjYW5jZWwgbmF2aWdhdGlvblxuXHRcdFx0XHRcdFx0XHR0aGlzLmZvY3VzSGFuZGxpbmcodGhpcy5pbmxpbmVFZGl0Q29udHJvbHNbMF0pO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnJlYWN0aXZhdGVGaWVsZEdyb3VwQ2hhbmdlSGFuZGxlcigpO1xuXHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJ1bnNhdmUgY2hhbmdlIHByZXZlbnQgZXhlY3V0aW9uXCIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSBpZiAoZGlhbG9nUmVzdWx0ID09PSBcIkNhbmNlbFwiKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmZvY3VzSGFuZGxpbmcodGhpcy5pbmxpbmVFZGl0Q29udHJvbHNbMF0pO1xuXHRcdFx0XHRcdFx0dGhpcy5yZWFjdGl2YXRlRmllbGRHcm91cENoYW5nZUhhbmRsZXIoKTtcblx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcImNhbmNlbCB3YXMgY2hvc2VuXCIpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQvLyB3ZSBkaXNjYXJkIHRoZSBjaGFuZ2VzXG5cdFx0XHRcdFx0XHR0aGlzLmlubGluZUVkaXREaXNjYXJkKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMucmVhY3RpdmF0ZUZpZWxkR3JvdXBDaGFuZ2VIYW5kbGVyKCk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdHRoaXMuZm9jdXNIYW5kbGluZyh0aGlzLmlubGluZUVkaXRDb250cm9sc1swXSk7XG5cdFx0XHRcdHRoaXMucmVhY3RpdmF0ZUZpZWxkR3JvdXBDaGFuZ2VIYW5kbGVyKCk7XG5cdFx0XHRcdHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm47XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIHRvIGVuc3VyZSB3ZSBzdGFydCB0aGUgcGFnZSB3aXRob3V0IGFueSB1bnNhdmVkIGlubGluZSBlZGl0IGNoYW5nZXMuXG5cdCAqL1xuXHRAbWV0aG9kT3ZlcnJpZGUoXCJfcm91dGluZ1wiKVxuXHRvbkJlZm9yZUJpbmRpbmcoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuaW5saW5lRWRpdENvbnRyb2xzLmxlbmd0aCA+IDApIHtcblx0XHRcdC8vIGlmIGZvciBzb21lb25lIHJlYXNvbiBpbmxpbmUgZWRpdCB3YXNuJ3QgZW5kZWQgcHJvcGVybHkgd2UgZW5zdXJlIHdlIHN0YXJ0IGZyZXNoIG9uIHRoZSBwYWdlXG5cdFx0XHR0aGlzLmlubGluZUVkaXRFbmQoKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0TW9kZWwoKS5oYXNQZW5kaW5nQ2hhbmdlcyhDb21tb25VdGlscy5JTkxJTkVFRElUX1VQREFURUdST1VQSUQpKSB7XG5cdFx0XHQvLyBpZiBmb3Igc29tZW9uZSByZWFzb24gaW5saW5lIGVkaXQgd2Fzbid0IGVuZGVkIHByb3Blcmx5IHdlIGVuc3VyZSB0aGF0IHRoZSBtb2RlbCBpcyBjb25zaXN0ZW50XG5cdFx0XHR0aGlzLmJhc2UuZ2V0VmlldygpLmdldE1vZGVsKCkucmVzZXRDaGFuZ2VzKENvbW1vblV0aWxzLklOTElORUVESVRfVVBEQVRFR1JPVVBJRCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZSBiZWZvcmUgZWRpdC5cblx0ICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlamVjdCBpZiBlZGl0IG5lZWRzIHRvIGJlIGNhbmNlbGxlZFxuXHQgKi9cblx0QG1ldGhvZE92ZXJyaWRlKFwiZWRpdEZsb3dcIilcblx0YXN5bmMgb25CZWZvcmVFZGl0KCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHJldHVybiB0aGlzLm9uQmVmb3JlQW55RWRpdEZsb3dBY3Rpb24oKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGUgYmVmb3JlIGNyZWF0ZS5cblx0ICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlamVjdCBpZiBjcmV0YWUgbmVlZHMgdG8gYmUgY2FuY2VsbGVkXG5cdCAqL1xuXHRAbWV0aG9kT3ZlcnJpZGUoXCJlZGl0Rmxvd1wiKVxuXHRhc3luYyBvbkJlZm9yZUNyZWF0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRyZXR1cm4gdGhpcy5vbkJlZm9yZUFueUVkaXRGbG93QWN0aW9uKCk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlIGJlZm9yZSBkZWxldGUuXG5cdCAqIEByZXR1cm5zIFByb21pc2UgdGhhdCByZWplY3QgaWYgZGVsZXRlIG5lZWRzIHRvIGJlIGNhbmNlbGxlZFxuXHQgKi9cblx0QG1ldGhvZE92ZXJyaWRlKFwiZWRpdEZsb3dcIilcblx0YXN5bmMgb25CZWZvcmVEZWxldGUoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0cmV0dXJuIHRoaXMub25CZWZvcmVBbnlFZGl0Rmxvd0FjdGlvbigpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZSBiZWZvcmUgYWN0aW9uLlxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgcmVqZWN0IGlmIGRlbGV0ZSBuZWVkcyB0byBiZSBjYW5jZWxsZWRcblx0ICovXG5cdEBtZXRob2RPdmVycmlkZShcImVkaXRGbG93XCIpXG5cdGFzeW5jIG9uQmVmb3JlRXhlY3V0ZUFjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRyZXR1cm4gdGhpcy5vbkJlZm9yZUFueUVkaXRGbG93QWN0aW9uKCk7XG5cdH1cblxuXHQvKipcblx0ICogUHJvcGFnYXRlIHRoZSBmaWVsZCBncm91cCBpZCB0byB0aGUgbWVzc2FnZSBidXR0b24uXG5cdCAqL1xuXHRwcml2YXRlIHByb3BhZ2F0ZUlubGluZUZpZWxkR3JvdXBJZFRvTWVzc2FnZUJ1dHRvbigpOiB2b2lkIHtcblx0XHQvLyB3ZSBwcm9wYWdhdGUgdGhlIGZpZWxkZ3JvdXBJZCB0byB0aGUgZm9vdGVyIGFuZCBhbGwgaXRzIGRlc2NlbmRhbnRzIHRvIGVuc3VyZSB0aGF0XG5cdFx0Ly8gY2xpY2tpbmcgb24gdGhlIGZvb3RlciBkb2VzIG5vdCB0cmlnZ2VyIGEgZm9jdXNvdXQgYW5kIGEgc2F2ZSBmb3IgdGhlIGlubGluZSBlZGl0XG5cdFx0Y29uc3QgZm9vdGVyQ29udHJvbHMgPVxuXHRcdFx0KHRoaXMuYmFzZVxuXHRcdFx0XHQuZ2V0Rm9vdGVyKClcblx0XHRcdFx0Py5maW5kQWdncmVnYXRlZE9iamVjdHModHJ1ZSwgKG1hbmFnZWRPYmplY3Q6IE1hbmFnZWRPYmplY3QpID0+IG1hbmFnZWRPYmplY3QuaXNBPENvbnRyb2w+KFwic2FwLnVpLmNvcmUuQ29udHJvbFwiKSkgYXNcblx0XHRcdFx0fCBDb250cm9sW11cblx0XHRcdFx0fCB1bmRlZmluZWQpID8/IFtdO1xuXG5cdFx0Zm9yIChjb25zdCBjb250cm9sIG9mIGZvb3RlckNvbnRyb2xzKSB7XG5cdFx0XHRjb25zdCBjaGlsZEZpZWxkR3JvdXBJZHMgPSBuZXcgU2V0KGNvbnRyb2wuZ2V0RmllbGRHcm91cElkcygpKTtcblx0XHRcdGNoaWxkRmllbGRHcm91cElkcy5hZGQoXCJJbmxpbmVFZGl0XCIpO1xuXHRcdFx0Y29udHJvbC5zZXRGaWVsZEdyb3VwSWRzKEFycmF5LmZyb20oY2hpbGRGaWVsZEdyb3VwSWRzKSk7XG5cdFx0fVxuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7TUEwQnFCQSxjQUFjLElBQUFDLElBQUEsR0FEbENDLGNBQWMsQ0FBQyxpREFBaUQsQ0FBQyxFQUFBQyxLQUFBLEdBdUhoRUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFBQyxLQUFBLEdBbUlsQkMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxFQUFBQyxLQUFBLEdBc0V6QkQsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFBRSxLQUFBLEdBZ0IxQkYsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFBRyxLQUFBLEdBUzFCSCxjQUFjLENBQUMsVUFBVSxDQUFDLEVBQUFJLEtBQUEsR0FTMUJKLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBQUssS0FBQSxHQVMxQkwsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFBTCxJQUFBLENBQUFXLE1BQUEsSUFBQUMsT0FBQSwwQkFBQUMscUJBQUE7SUFBQSxTQUFBZCxlQUFBO01BQUEsSUFBQWUsS0FBQTtNQUFBLFNBQUFDLElBQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLEVBQUFDLElBQUEsT0FBQUMsS0FBQSxDQUFBSixJQUFBLEdBQUFLLElBQUEsTUFBQUEsSUFBQSxHQUFBTCxJQUFBLEVBQUFLLElBQUE7UUFBQUYsSUFBQSxDQUFBRSxJQUFBLElBQUFKLFNBQUEsQ0FBQUksSUFBQTtNQUFBO01BQUFOLEtBQUEsR0FBQUQscUJBQUEsQ0FBQVEsSUFBQSxVQUFBSCxJQUFBO01BQUFKLEtBQUEsQ0F2V25CUSxrQkFBa0IsR0FBYyxFQUFFO01BQUFSLEtBQUEsQ0FRbENTLDhCQUE4QixHQUFHLEtBQUs7TUFBQSxPQUFBVCxLQUFBO0lBQUE7SUFBQVUsUUFBQSxHQUFBekIsY0FBQTtJQUFBMEIsY0FBQSxDQUFBMUIsY0FBQSxFQUFBYyxxQkFBQTtJQUFBLElBQUFhLE1BQUEsR0FBQTNCLGNBQUEsQ0FBQTRCLFNBQUE7SUFFOUM7QUFDRDtBQUNBO0FBQ0E7SUFIQ0QsTUFBQSxDQUlBRSxvQkFBb0IsR0FBcEIsU0FBQUEsb0JBQW9CQSxDQUFBLEVBQVk7TUFDL0IsT0FBTyxJQUFJLENBQUNDLElBQUksQ0FBQ0MsZUFBZSxDQUFDLENBQUMsQ0FBQ0Msb0JBQW9CLENBQUMsQ0FBQyxDQUFDQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUNILElBQUksQ0FBQ0ksb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0lBQ25IOztJQUVBO0FBQ0Q7QUFDQTtBQUNBLE9BSEM7SUFBQVAsTUFBQSxDQUlNUSxjQUFjLEdBQXBCLGVBQU1BLGNBQWNBLENBQUEsRUFBa0I7TUFDckMsTUFBTUMsS0FBSyxHQUFHLElBQUksQ0FBQ04sSUFBSSxDQUFDTyxPQUFPLENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUMsQ0FBQztNQUU1QyxNQUFNQyxRQUFRLEdBQUdDLFNBQVMsQ0FBQ0MsZUFBZSxDQUFDLENBQUMsQ0FBQ0MsT0FBTyxDQUFDLENBQUM7TUFDdEQsTUFBTUMseUJBQXlCLEdBQUdKLFFBQVEsQ0FBQ0ssSUFBSSxDQUM3Q0MsT0FBZ0IsSUFBSyxDQUFDQyxlQUFlLENBQUNDLHFCQUFxQixDQUFDRixPQUFPLENBQUMsSUFBSUEsT0FBTyxDQUFDRyxPQUFPLENBQUMsQ0FBQyxLQUFLQyxXQUFXLENBQUNDLEtBQzVHLENBQUM7TUFDRCxJQUFJUCx5QkFBeUIsRUFBRTtRQUM5QixJQUFJLENBQUNiLElBQUksQ0FBQ3FCLGFBQWEsQ0FBQyxJQUFJLENBQUM7UUFDN0I7UUFDQTtNQUNEO01BQ0EsSUFBSSxDQUFDZixLQUFLLENBQUNnQixpQkFBaUIsQ0FBQ0MsV0FBVyxDQUFDQyx3QkFBd0IsQ0FBQyxFQUFFO1FBQ25FLElBQUksQ0FBQ0MsYUFBYSxDQUFDLENBQUM7UUFDcEI7TUFDRDtNQUNBLElBQUk7UUFDSGYsU0FBUyxDQUFDZ0IsaUJBQWlCLENBQUMsQ0FBQztRQUM3QixNQUFNcEIsS0FBSyxDQUFDcUIsV0FBVyxDQUFDSixXQUFXLENBQUNDLHdCQUF3QixDQUFDO01BQzlELENBQUMsQ0FBQyxPQUFPSSxLQUFjLEVBQUU7UUFDeEJDLEdBQUcsQ0FBQ0MsT0FBTyxDQUFDLHdDQUF3QyxDQUFDO01BQ3REO0lBQ0Q7O0lBRUE7QUFDRDtBQUNBLE9BRkM7SUFBQWpDLE1BQUEsQ0FHQWtDLGlCQUFpQixHQUFqQixTQUFBQSxpQkFBaUJBLENBQUEsRUFBUztNQUN6QixJQUFJLENBQUMvQixJQUFJLENBQUNPLE9BQU8sQ0FBQyxDQUFDLENBQUNDLFFBQVEsQ0FBQyxDQUFDLENBQUN3QixZQUFZLENBQUNULFdBQVcsQ0FBQ0Msd0JBQXdCLENBQUM7TUFDakYsSUFBSSxDQUFDQyxhQUFhLENBQUMsSUFBSSxDQUFDO0lBQ3pCOztJQUVBO0FBQ0Q7QUFDQTtBQUNBLE9BSEM7SUFBQTVCLE1BQUEsQ0FJQTRCLGFBQWEsR0FBYixTQUFBQSxhQUFhQSxDQUFDUSxrQkFBNEIsRUFBUTtNQUNqRHZCLFNBQVMsQ0FBQ2dCLGlCQUFpQixDQUFDLENBQUM7TUFDN0IsSUFBSSxDQUFDMUIsSUFBSSxDQUFDcUIsYUFBYSxDQUFDLEtBQUssQ0FBQztNQUM5QixLQUFLLE1BQU1hLE9BQU8sSUFBSSxJQUFJLENBQUN6QyxrQkFBa0IsRUFBRTtRQUM3Q3lDLE9BQU8sQ0FBd0NULGFBQWEsQ0FBQ1Esa0JBQWtCLENBQUM7TUFDbEY7TUFDQSxJQUFJLENBQUN4QyxrQkFBa0IsR0FBRyxFQUFFO01BQzVCLElBQUksQ0FBQ08sSUFBSSxDQUFDTyxPQUFPLENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMyQixXQUFXLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDO0lBQzdFOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUxDO0lBQUF0QyxNQUFBLENBTUF1QyxlQUFlLEdBQWYsU0FBQUEsZUFBZUEsQ0FDZEMsMEJBQWtDLEVBQ2xDQyxrQkFBMEIsRUFDMUJDLGNBQW1ELEVBQzVDO01BQ1AsSUFBSUEsY0FBYyxFQUFFQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUVDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1FBQ3ZFO1FBQ0EsSUFBSUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDMUMsSUFBSSxDQUFDTyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUNvQyxJQUFJLENBQUMsQ0FBQztRQUNqREosY0FBYyxFQUFFSyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3JDO01BQ0Q7TUFDQSxNQUFNQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM3QyxJQUFJLENBQUNDLGVBQWUsQ0FBQyxDQUFDLENBQUNDLG9CQUFvQixDQUFDLENBQUM7TUFDNUUsTUFBTTRDLG1CQUFtQixHQUFHRCxpQkFBaUIsQ0FBQ0UsNEJBQTRCLENBQ3pFLElBQUksQ0FBQy9DLElBQUksQ0FBQ0ksb0JBQW9CLENBQUMsQ0FBQyxFQUNoQ2lDLDBCQUNELENBQUM7TUFFRCxJQUFJLENBQUNXLGVBQWUsQ0FBQyxFQUFFLEVBQUVGLG1CQUFtQixFQUFFMUQsTUFBTSxHQUFHMEQsbUJBQW1CLEdBQUcsQ0FBQ1QsMEJBQTBCLENBQUMsRUFBRUMsa0JBQWtCLENBQUM7TUFDOUgsSUFBSSxDQUFDdEMsSUFBSSxDQUFDTyxPQUFPLENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMyQixXQUFXLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDO0lBQzVFOztJQUVBO0FBQ0Q7QUFDQTtBQUNBLE9BSEM7SUFBQXRDLE1BQUEsQ0FJQW9ELGFBQWEsR0FBYixTQUFBQSxhQUFhQSxDQUFDQyxpQkFBMEIsRUFBUTtNQUMvQyxLQUFLLE1BQU1oQixPQUFPLElBQUksSUFBSSxDQUFDekMsa0JBQWtCLEVBQUU7UUFDOUMsSUFBSXlDLE9BQU8sS0FBS2dCLGlCQUFpQixFQUFFO1VBQ2pDaEIsT0FBTyxDQUF3Q2lCLDRCQUE0QixDQUFDLENBQUM7UUFDL0UsQ0FBQyxNQUFNLElBQUlqQixPQUFPLEtBQUtnQixpQkFBaUIsRUFBRTtVQUN6Q2hCLE9BQU8sQ0FBQ2tCLEtBQUssQ0FBQyxDQUFDO1FBQ2hCO01BQ0Q7SUFDRDs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FMQztJQUFBdkQsTUFBQSxDQVFNbUQsZUFBZSxHQUZyQixlQUVNQSxlQUFlQSxDQUFDdkQsa0JBQTZCLEVBQUU0RCxVQUFvQixFQUFFZixrQkFBMEIsRUFBaUI7TUFDckgsSUFBSSxJQUFJLENBQUNnQixvQkFBb0IsRUFBRTtRQUM5QjtRQUNBLElBQUksQ0FBQ0Esb0JBQW9CLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUNBLG9CQUFvQixHQUFHQyxTQUFTO1FBQ3JDLE1BQU0sSUFBSSxDQUFDbEQsY0FBYyxDQUFDLENBQUM7TUFDNUI7TUFDQSxNQUFNbUQseUJBQXlCLEdBQUcsSUFBSSxDQUFDL0Qsa0JBQWtCLENBQUNnRSxHQUFHLENBQUV2QixPQUFnQixJQUFLQSxPQUFPLENBQUN3QixLQUFLLENBQUMsQ0FBQyxDQUFDO01BQ3BHLEtBQUssTUFBTXhCLE9BQU8sSUFBSXpDLGtCQUFrQixFQUFFO1FBQ3pDLElBQUksQ0FBQytELHlCQUF5QixDQUFDRyxRQUFRLENBQUN6QixPQUFPLENBQUN3QixLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7VUFDekQsSUFBSSxDQUFDakUsa0JBQWtCLENBQUNtRSxJQUFJLENBQUMxQixPQUFPLENBQUM7UUFDdEM7TUFDRDtNQUNBLElBQUksQ0FBQzJCLDRCQUE0QixHQUFHdkIsa0JBQWtCO01BQ3REO0lBQ0Q7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQSxPQUpDO0lBQUF6QyxNQUFBLENBS0FpRSxpQ0FBaUMsR0FBakMsU0FBQUEsaUNBQWlDQSxDQUFDekIsMEJBQWtDLEVBQVc7TUFDOUUsT0FBTyxJQUFJLENBQUNyQyxJQUFJLENBQ2RDLGVBQWUsQ0FBQyxDQUFDLENBQ2pCQyxvQkFBb0IsQ0FBQyxDQUFDLENBQ3RCNEQsaUNBQWlDLENBQUMsSUFBSSxDQUFDOUQsSUFBSSxDQUFDSSxvQkFBb0IsQ0FBQyxDQUFDLEVBQUVpQywwQkFBMEIsQ0FBQztJQUNsRzs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUF4QyxNQUFBLENBSU1rRSx5QkFBeUIsR0FBL0IsZUFBTUEseUJBQXlCQSxDQUFDQyxLQUF5QyxFQUFpQjtNQUN6RixJQUFJLElBQUksQ0FBQ3ZFLGtCQUFrQixDQUFDTCxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3pDO1FBQ0E7TUFDRDtNQUVBLElBQUksQ0FBQzZFLFlBQVksR0FBRyxJQUFJQyxPQUFPLENBQVcsQ0FBQ0MsT0FBTyxFQUFFQyxNQUFNLEtBQUs7UUFDOURKLEtBQUssQ0FBQ0ssU0FBUyxDQUFDLENBQUMsQ0FBQ0MsZUFBZSxDQUFDLGdCQUFnQixFQUFHQyxtQkFBbUQsSUFBSztVQUM1RyxNQUFNQyxRQUFRLEdBQUdELG1CQUFtQixDQUFDRSxZQUFZLENBQUMsU0FBUyxDQUFDO1VBQzVELElBQUlELFFBQVEsRUFBRTtZQUNiTCxPQUFPLENBQUNJLG1CQUFtQixDQUFDO1VBQzdCLENBQUMsTUFBTTtZQUNOSCxNQUFNLENBQUNHLG1CQUFtQixDQUFDO1VBQzVCO1FBQ0QsQ0FBQyxDQUFDO01BQ0gsQ0FBQyxDQUFDO01BQ0YsSUFBSTtRQUNILE1BQU0sSUFBSSxDQUFDTixZQUFZO1FBQ3ZCLElBQUksQ0FBQ0EsWUFBWSxHQUFHVixTQUFTO1FBQzdCLE1BQU1tQixjQUFjLEdBQUdDLEdBQUcsQ0FBQ0Msb0JBQW9CLENBQUMsYUFBYSxDQUFDO1FBQzlELElBQUlGLGNBQWMsRUFBRTtVQUNuQkcsWUFBWSxDQUFDQyxJQUFJLENBQUNKLGNBQWMsQ0FBQ0ssT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDakU7UUFDQSxJQUFJLENBQUN0RCxhQUFhLENBQUMsQ0FBQztNQUNyQixDQUFDLENBQUMsT0FBTzhDLG1CQUFtQixFQUFFO1FBQzdCLElBQUksQ0FBQ04sWUFBWSxHQUFHVixTQUFTO1FBQzdCLElBQUksQ0FBQ3lCLDBCQUEwQixDQUFDLENBQUM7TUFDbEM7SUFDRDs7SUFFQTtBQUNEO0FBQ0EsT0FGQztJQUFBbkYsTUFBQSxDQUdBbUYsMEJBQTBCLEdBQTFCLFNBQUFBLDBCQUEwQkEsQ0FBQSxFQUFTO01BQ2xDLE1BQU1DLFNBQVMsR0FBRyxJQUFJLENBQUNqRixJQUFJLENBQUNPLE9BQU8sQ0FBQyxDQUFDLENBQUNDLFFBQVEsQ0FBQyxDQUFDLENBQUMwRSxZQUFZLENBQUMsQ0FBQztNQUUvRCxNQUFNekUsUUFBUSxHQUFHQyxTQUFTLENBQUNDLGVBQWUsQ0FBQyxDQUFDLENBQUNDLE9BQU8sQ0FBQyxDQUFDO01BQ3RELElBQUlILFFBQVEsQ0FBQ3JCLE1BQU0sRUFBRTtRQUNwQixJQUFJLENBQUNZLElBQUksQ0FBQ3FCLGFBQWEsQ0FBQyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDOEQsMENBQTBDLENBQUMsQ0FBQztNQUNsRDtNQUNBLElBQUksQ0FBQyxJQUFJLENBQUN0Qiw0QkFBNEIsRUFBRTtRQUN2QztNQUNEO01BQ0EsS0FBSyxNQUFNOUMsT0FBTyxJQUFJTixRQUFRLEVBQUU7UUFDL0IsS0FBSyxNQUFNMkUsTUFBTSxJQUFJckUsT0FBTyxDQUFDc0UsVUFBVSxDQUFDLENBQUMsRUFBRTtVQUMxQyxNQUFNQyxpQkFBaUIsR0FBR0wsU0FBUyxDQUFDTSxvQkFBb0IsQ0FBQ04sU0FBUyxDQUFDTyxXQUFXLENBQUNKLE1BQU0sQ0FBQyxDQUFDO1VBQ3ZGLE1BQU1LLDRCQUE0QixHQUFHSCxpQkFBaUIsR0FDbkRJLGtCQUFrQixDQUFDQywyQkFBMkIsQ0FBVUwsaUJBQWlCLENBQUMsR0FDMUUsSUFBSTtVQUNQLElBQUlNLFVBQVUsQ0FBQ0gsNEJBQTRCLEVBQUVJLFlBQVksQ0FBQyxFQUFFO1lBQzNELE1BQU1DLHdCQUF3QixHQUM1QkwsNEJBQTRCLEVBQStDSSxZQUFZLEVBQUVFLGtCQUFrQixJQUFJLEVBQUU7WUFDbkgsSUFBSSxJQUFJLENBQUNqQyxpQ0FBaUMsQ0FBQ2dDLHdCQUF3QixDQUFDLEVBQUU7Y0FDckUsSUFBSSxDQUFDMUQsZUFBZSxDQUFDMEQsd0JBQXdCLEVBQUUsSUFBSSxDQUFDakMsNEJBQTRCLENBQUM7WUFDbEY7VUFDRDtRQUNEO01BQ0Q7SUFDRDs7SUFFQTtBQUNEO0FBQ0EsT0FGQztJQUFBaEUsTUFBQSxDQUdNbUcsaUJBQWlCLEdBQXZCLGVBQU1BLGlCQUFpQkEsQ0FBQSxFQUFrQjtNQUN4QyxJQUFJLElBQUksQ0FBQzFDLG9CQUFvQixJQUFJLElBQUksQ0FBQ1csWUFBWSxJQUFJLElBQUksQ0FBQ3ZFLDhCQUE4QixFQUFFO1FBQzFGO1FBQ0E7TUFDRDtNQUNBLE1BQU11RyxlQUFlLEdBQUcsSUFBSS9CLE9BQU8sQ0FBTyxDQUFDQyxPQUFPLEVBQUVDLE1BQU0sS0FBSztRQUM5RCxJQUFJLENBQUNkLG9CQUFvQixHQUFHYyxNQUFNO1FBQ2xDOEIsVUFBVSxDQUFDLE1BQU0vQixPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztNQUNqQyxDQUFDLENBQUM7TUFDRixJQUFJO1FBQ0gsTUFBTThCLGVBQWU7UUFDckIsSUFBSSxDQUFDM0Msb0JBQW9CLEdBQUdDLFNBQVM7UUFDckMsSUFBSSxDQUFDbEQsY0FBYyxDQUFDLENBQUM7TUFDdEIsQ0FBQyxDQUFDLE9BQU84RixDQUFDLEVBQUU7UUFDWDtNQUFBO0lBRUY7O0lBRUE7QUFDRDtBQUNBO0FBQ0EsT0FIQztJQUFBdEcsTUFBQSxDQUlBdUcsaUNBQWlDLEdBQWpDLFNBQUFBLGlDQUFpQ0EsQ0FBQSxFQUFTO01BQ3pDRixVQUFVLENBQUMsTUFBTTtRQUNoQixJQUFJLENBQUN4Ryw4QkFBOEIsR0FBRyxLQUFLO01BQzVDLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDUjs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUFHLE1BQUEsQ0FLTXdHLGtCQUFrQixHQUR4QixlQUNNQSxrQkFBa0JBLENBQUEsRUFBcUI7TUFDNUMsSUFBSTtRQUNILE1BQU0sSUFBSSxDQUFDQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sS0FBSztNQUNiLENBQUMsQ0FBQyxPQUFPSCxDQUFDLEVBQUU7UUFDWCxPQUFPLElBQUk7TUFDWjtJQUNEOztJQUVBO0FBQ0Q7QUFDQTtBQUNBLE9BSEM7SUFBQXRHLE1BQUEsQ0FJTTBHLHdDQUF3QyxHQUE5QyxlQUFNQSx3Q0FBd0NBLENBQUEsRUFBMEI7TUFDdkUsT0FBTyxJQUFJckMsT0FBTyxDQUFnQkMsT0FBTyxJQUFLO1FBQzdDLElBQUlxQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUN4RyxJQUFJLENBQUNPLE9BQU8sQ0FBQyxDQUFDLEVBQUU0RCxPQUFPLENBQUMsQ0FBQ3hCLElBQUksQ0FBQyxDQUFDO01BQzlELENBQUMsQ0FBQztJQUNILENBQUM7SUFBQTlDLE1BQUEsQ0FFS3lHLHlCQUF5QixHQUEvQixlQUFNQSx5QkFBeUJBLENBQUEsRUFBa0I7TUFDaEQsSUFBSSxJQUFJLENBQUM3RyxrQkFBa0IsQ0FBQ0wsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUN2QztRQUNBLElBQUksQ0FBQ00sOEJBQThCLEdBQUcsSUFBSTtRQUMxQyxJQUFJLElBQUksQ0FBQzRELG9CQUFvQixFQUFFO1VBQzlCLElBQUksQ0FBQ0Esb0JBQW9CLENBQUMsQ0FBQztVQUMzQixJQUFJLENBQUNBLG9CQUFvQixHQUFHQyxTQUFTO1FBQ3RDO1FBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQ3ZELElBQUksQ0FBQ08sT0FBTyxDQUFDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDLENBQUMsQ0FBQ2MsaUJBQWlCLENBQUNDLFdBQVcsQ0FBQ0Msd0JBQXdCLENBQUMsRUFBRTtVQUM1RjtVQUNBLElBQUksQ0FBQ0MsYUFBYSxDQUFDLENBQUM7VUFDcEI7UUFDRDtRQUNBLElBQUk7VUFDSCxJQUFJLElBQUksQ0FBQ3dDLFlBQVksRUFBRTtZQUN0QixNQUFNLElBQUksQ0FBQ0EsWUFBWTtVQUN4QixDQUFDLE1BQU07WUFDTixNQUFNd0MsWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDRix3Q0FBd0MsQ0FBQyxDQUFDO1lBQzFFLElBQUlFLFlBQVksS0FBSyxNQUFNLEVBQUU7Y0FDNUI7Y0FDQSxNQUFNLElBQUksQ0FBQ3BHLGNBQWMsQ0FBQyxDQUFDO2NBQzNCLElBQUksSUFBSSxDQUFDTCxJQUFJLENBQUNPLE9BQU8sQ0FBQyxDQUFDLENBQUNDLFFBQVEsQ0FBQyxDQUFDLENBQUNjLGlCQUFpQixDQUFDQyxXQUFXLENBQUNDLHdCQUF3QixDQUFDLEVBQUU7Z0JBQzNGO2dCQUNBLElBQUksQ0FBQ3lCLGFBQWEsQ0FBQyxJQUFJLENBQUN4RCxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDMkcsaUNBQWlDLENBQUMsQ0FBQztnQkFDeEMsTUFBTSxJQUFJaEYsS0FBSyxDQUFDLGlDQUFpQyxDQUFDO2NBQ25EO1lBQ0QsQ0FBQyxNQUFNLElBQUlxRixZQUFZLEtBQUssUUFBUSxFQUFFO2NBQ3JDLElBQUksQ0FBQ3hELGFBQWEsQ0FBQyxJQUFJLENBQUN4RCxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztjQUM5QyxJQUFJLENBQUMyRyxpQ0FBaUMsQ0FBQyxDQUFDO2NBQ3hDLE1BQU0sSUFBSWhGLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztZQUNyQyxDQUFDLE1BQU07Y0FDTjtjQUNBLElBQUksQ0FBQ1csaUJBQWlCLENBQUMsQ0FBQztZQUN6QjtZQUNBLElBQUksQ0FBQ3FFLGlDQUFpQyxDQUFDLENBQUM7WUFDeEM7VUFDRDtRQUNELENBQUMsQ0FBQyxPQUFPRCxDQUFDLEVBQUU7VUFDWCxJQUFJLENBQUNsRCxhQUFhLENBQUMsSUFBSSxDQUFDeEQsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFDOUMsSUFBSSxDQUFDMkcsaUNBQWlDLENBQUMsQ0FBQztVQUN4QyxPQUFPbEMsT0FBTyxDQUFDRSxNQUFNLENBQUMsQ0FBQztRQUN4QjtNQUNEO01BQ0E7SUFDRDs7SUFFQTtBQUNEO0FBQ0EsT0FGQztJQUFBdkUsTUFBQSxDQUlBNkcsZUFBZSxHQURmLFNBQ0FBLGVBQWVBLENBQUEsRUFBUztNQUN2QixJQUFJLElBQUksQ0FBQ2pILGtCQUFrQixDQUFDTCxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3ZDO1FBQ0EsSUFBSSxDQUFDcUMsYUFBYSxDQUFDLENBQUM7TUFDckI7TUFDQSxJQUFJLElBQUksQ0FBQ3pCLElBQUksQ0FBQ08sT0FBTyxDQUFDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDLENBQUMsQ0FBQ2MsaUJBQWlCLENBQUNDLFdBQVcsQ0FBQ0Msd0JBQXdCLENBQUMsRUFBRTtRQUMzRjtRQUNBLElBQUksQ0FBQ3hCLElBQUksQ0FBQ08sT0FBTyxDQUFDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDLENBQUMsQ0FBQ3dCLFlBQVksQ0FBQ1QsV0FBVyxDQUFDQyx3QkFBd0IsQ0FBQztNQUNsRjtJQUNEOztJQUVBO0FBQ0Q7QUFDQTtBQUNBLE9BSEM7SUFBQTNCLE1BQUEsQ0FLTThHLFlBQVksR0FEbEIsZUFDTUEsWUFBWUEsQ0FBQSxFQUFrQjtNQUNuQyxPQUFPLElBQUksQ0FBQ0wseUJBQXlCLENBQUMsQ0FBQztJQUN4Qzs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUF6RyxNQUFBLENBS00rRyxjQUFjLEdBRHBCLGVBQ01BLGNBQWNBLENBQUEsRUFBa0I7TUFDckMsT0FBTyxJQUFJLENBQUNOLHlCQUF5QixDQUFDLENBQUM7SUFDeEM7O0lBRUE7QUFDRDtBQUNBO0FBQ0EsT0FIQztJQUFBekcsTUFBQSxDQUtNZ0gsY0FBYyxHQURwQixlQUNNQSxjQUFjQSxDQUFBLEVBQWtCO01BQ3JDLE9BQU8sSUFBSSxDQUFDUCx5QkFBeUIsQ0FBQyxDQUFDO0lBQ3hDOztJQUVBO0FBQ0Q7QUFDQTtBQUNBLE9BSEM7SUFBQXpHLE1BQUEsQ0FLTWlILHFCQUFxQixHQUQzQixlQUNNQSxxQkFBcUJBLENBQUEsRUFBa0I7TUFDNUMsT0FBTyxJQUFJLENBQUNSLHlCQUF5QixDQUFDLENBQUM7SUFDeEM7O0lBRUE7QUFDRDtBQUNBLE9BRkM7SUFBQXpHLE1BQUEsQ0FHUXNGLDBDQUEwQyxHQUFsRCxTQUFRQSwwQ0FBMENBLENBQUEsRUFBUztNQUMxRDtNQUNBO01BQ0EsTUFBTTRCLGNBQWMsR0FDbEIsSUFBSSxDQUFDL0csSUFBSSxDQUNSZ0gsU0FBUyxDQUFDLENBQUMsRUFDVkMscUJBQXFCLENBQUMsSUFBSSxFQUFHQyxhQUE0QixJQUFLQSxhQUFhLENBQUNDLEdBQUcsQ0FBVSxxQkFBcUIsQ0FBQyxDQUFDLElBRWxHLEVBQUU7TUFFcEIsS0FBSyxNQUFNakYsT0FBTyxJQUFJNkUsY0FBYyxFQUFFO1FBQ3JDLE1BQU1LLGtCQUFrQixHQUFHLElBQUlDLEdBQUcsQ0FBQ25GLE9BQU8sQ0FBQ29GLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUM5REYsa0JBQWtCLENBQUNHLEdBQUcsQ0FBQyxZQUFZLENBQUM7UUFDcENyRixPQUFPLENBQUNzRixnQkFBZ0IsQ0FBQ2xJLEtBQUssQ0FBQ21JLElBQUksQ0FBQ0wsa0JBQWtCLENBQUMsQ0FBQztNQUN6RDtJQUNELENBQUM7SUFBQSxPQUFBbEosY0FBQTtFQUFBLEVBalkwQ3dKLHVCQUF1QixHQUFBQyx5QkFBQSxDQUFBNUksT0FBQSxDQUFBZSxTQUFBLHNCQUFBekIsS0FBQSxHQUFBdUosTUFBQSxDQUFBQyx3QkFBQSxDQUFBOUksT0FBQSxDQUFBZSxTQUFBLHNCQUFBZixPQUFBLENBQUFlLFNBQUEsR0FBQTZILHlCQUFBLENBQUE1SSxPQUFBLENBQUFlLFNBQUEseUJBQUF2QixLQUFBLEdBQUFxSixNQUFBLENBQUFDLHdCQUFBLENBQUE5SSxPQUFBLENBQUFlLFNBQUEseUJBQUFmLE9BQUEsQ0FBQWUsU0FBQSxHQUFBNkgseUJBQUEsQ0FBQTVJLE9BQUEsQ0FBQWUsU0FBQSxzQkFBQXJCLEtBQUEsR0FBQW1KLE1BQUEsQ0FBQUMsd0JBQUEsQ0FBQTlJLE9BQUEsQ0FBQWUsU0FBQSxzQkFBQWYsT0FBQSxDQUFBZSxTQUFBLEdBQUE2SCx5QkFBQSxDQUFBNUksT0FBQSxDQUFBZSxTQUFBLG1CQUFBcEIsS0FBQSxHQUFBa0osTUFBQSxDQUFBQyx3QkFBQSxDQUFBOUksT0FBQSxDQUFBZSxTQUFBLG1CQUFBZixPQUFBLENBQUFlLFNBQUEsR0FBQTZILHlCQUFBLENBQUE1SSxPQUFBLENBQUFlLFNBQUEscUJBQUFuQixLQUFBLEdBQUFpSixNQUFBLENBQUFDLHdCQUFBLENBQUE5SSxPQUFBLENBQUFlLFNBQUEscUJBQUFmLE9BQUEsQ0FBQWUsU0FBQSxHQUFBNkgseUJBQUEsQ0FBQTVJLE9BQUEsQ0FBQWUsU0FBQSxxQkFBQWxCLEtBQUEsR0FBQWdKLE1BQUEsQ0FBQUMsd0JBQUEsQ0FBQTlJLE9BQUEsQ0FBQWUsU0FBQSxxQkFBQWYsT0FBQSxDQUFBZSxTQUFBLEdBQUE2SCx5QkFBQSxDQUFBNUksT0FBQSxDQUFBZSxTQUFBLDRCQUFBakIsS0FBQSxHQUFBK0ksTUFBQSxDQUFBQyx3QkFBQSxDQUFBOUksT0FBQSxDQUFBZSxTQUFBLDRCQUFBZixPQUFBLENBQUFlLFNBQUEsR0FBQWYsT0FBQSxNQUFBRCxNQUFBO0VBQUFhLFFBQUEsR0FBQXpCLGNBQUE7RUFBQSxPQUFBeUIsUUFBQTtBQUFBIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -19,6 +19,7 @@ import type Control from "sap/ui/core/Control";
|
|
|
19
19
|
import Lib from "sap/ui/core/Lib";
|
|
20
20
|
import Messaging from "sap/ui/core/Messaging";
|
|
21
21
|
import type Message from "sap/ui/core/message/Message";
|
|
22
|
+
import MessageType from "sap/ui/core/message/MessageType";
|
|
22
23
|
import type { ODataContextBinding$PatchSentEvent } from "sap/ui/model/odata/v4/ODataContextBinding";
|
|
23
24
|
import DraftExistsDialog from "../controls/inlineEditFlow/DraftExistsDialog";
|
|
24
25
|
|
|
@@ -52,8 +53,10 @@ export default class InlineEditFlow extends BaseControllerExtension {
|
|
|
52
53
|
const model = this.base.getView().getModel();
|
|
53
54
|
|
|
54
55
|
const messages = Messaging.getMessageModel().getData();
|
|
55
|
-
const
|
|
56
|
-
|
|
56
|
+
const hasTechnicalErrorMessages = messages.some(
|
|
57
|
+
(message: Message) => !messageHandling.isNonTechnicalMessage(message) && message.getType() === MessageType.Error
|
|
58
|
+
);
|
|
59
|
+
if (hasTechnicalErrorMessages) {
|
|
57
60
|
this.base.setShowFooter(true);
|
|
58
61
|
// if there are invalid types we should not try to save
|
|
59
62
|
return;
|