@sapui5/sap.fe.core 1.120.6 → 1.120.7

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.core",
3
- "version": "1.120.6",
3
+ "version": "1.120.7",
4
4
  "description": "SAPUI5 Library sap.fe.core",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -6,7 +6,7 @@
6
6
  SAP UI development toolkit for HTML5 (SAPUI5)
7
7
  (c) Copyright 2009-2021 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.120.6</version>
9
+ <version>1.120.7</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.core</documentation>
12
12
 
@@ -334,11 +334,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/
334
334
  return false;
335
335
  };
336
336
  _proto.tryResetRecommendations = function tryResetRecommendations(rootContext) {
337
- const currentContext = standardRecommendationHelper.getCurrentRootContext();
338
- if ((currentContext === null || currentContext === void 0 ? void 0 : currentContext.getPath()) === rootContext.getPath()) {
339
- // Same root context, needs no reset
340
- return;
341
- }
342
337
  standardRecommendationHelper.setCurrentRootContext(rootContext);
343
338
  const internalModel = this.getView().getModel("internal");
344
339
  // TODO: StandardRecommendationHelper stores all the recommendations for an instance of business object
@@ -353,4 +348,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/
353
348
  _exports = Recommendations;
354
349
  return _exports;
355
350
  }, false);
356
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWNvbW1lbmRhdGlvbnMiLCJkZWZpbmVVSTVDbGFzcyIsIm1ldGhvZE92ZXJyaWRlIiwicHVibGljRXh0ZW5zaW9uIiwiZXh0ZW5zaWJsZSIsIk92ZXJyaWRlRXhlY3V0aW9uIiwiSW5zdGVhZCIsImZpbmFsRXh0ZW5zaW9uIiwib25Jbml0Iiwib25BZnRlckJpbmRpbmciLCJjb250ZXh0IiwiaW50ZXJuYWxNb2RlbCIsImJhc2UiLCJnZXRWaWV3IiwiZ2V0TW9kZWwiLCJpc1JlY29tbWVuZGF0aW9uRW5hYmxlZCIsImdldFByb3BlcnR5Iiwicm9vdENvbnRleHQiLCJfZ2V0Um9vdENvbnRleHQiLCJyZWNvbW1lbmRhdGlvbkVuYWJsZWRQcm9taXNlIiwidW5kZWZpbmVkIiwicmVjb21tZW5kYXRpb25zIiwiaXNFbmFibGVkIiwidGhlbiIsInNldFByb3BlcnR5IiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0cnlSZXNldFJlY29tbWVuZGF0aW9ucyIsInByb2dyYW1taW5nTW9kZWwiLCJUcmFuc2FjdGlvbkhlbHBlciIsImdldFByb2dyYW1taW5nTW9kZWwiLCJDb21tb25VdGlscyIsImNyZWF0ZVJvb3RDb250ZXh0IiwiZ2V0QXBwQ29tcG9uZW50IiwiY2xlYXJSZWNvbW1lbmRhdGlvbnMiLCJiaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwicmVjb21tZW5kYXRpb25IZWxwZXIiLCJfcm9vdENvbnRleHQiLCJmZXRjaFJlY29tbWVuZGF0aW9ucyIsIl9jb250ZXh0IiwiZmV0Y2hBbmRBcHBseVJlY29tbWVuZGF0aW9ucyIsImN1cnJlbnRDb250ZXh0c0luZm8iLCJjb25zaWRlck9ubHlOZXdDb250ZXh0IiwiaXNTdWNjZXNzIiwiY29udGV4dHNJbmZvIiwic3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlciIsImdldENvbnRleHRzV2l0aE5vUmVjb21tZW5kYXRpb25zIiwiY29udGV4dHMiLCJtYXAiLCJjb250ZXh0SW5mbyIsImxlbmd0aCIsInJlY29tbWVuZGF0aW9uRGF0YSIsImFwcGx5UmVjb21tZW5kYXRpb24iLCJlIiwiTG9nIiwiZXJyb3IiLCJzdG9yZVJlY29tbWVuZGF0aW9uQ29udGV4dHMiLCJmZXRjaEFuZEFwcGx5UmVjb21tZW5kYXRpb25zT25GaWVsZENoYW5nZSIsImZpZWxkIiwiYXBwQ29tcG9uZW50IiwiaXNGaWVsZFJlY29tbWVuZGF0aW9uUmVsZXZhbnQiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJjaGVja0lmRmllbGRJc1JlY29tbWVuZGF0aW9uUmVsZXZhbnQiLCJvbkJlZm9yZUFjY2VwdFJlY29tbWVuZGF0aW9ucyIsIl9wYXJhbXMiLCJhY2NlcHRSZWNvbW1lbmRhdGlvbnMiLCJyZWNvbW1lbmRhdGlvblJlc3BvbnNlcyIsInN0b3JlUmVjb21tZW5kYXRpb25zIiwiY29udGV4dFBhdGhzIiwicmVjb21tZW5kYXRpb25Db250ZXh0cyIsImZvckVhY2giLCJwdXNoIiwiZ2V0UGF0aCIsImZpbHRlciIsInJlY29tbWVuZGF0aW9uQ29udGV4dCIsImNvbnRleHRQYXRoIiwiaW5kZXgiLCJpbmRleE9mIiwiY29udGV4dElkZW50aWZpZXIiLCJmZXRjaEZpbHRlcmVkUmVjb21tZW5kYXRpb25Db250ZXh0cyIsInRhcmdldHMiLCJmaWx0ZXJlZFJlY29tbWVuZGF0aW9uQ29udGV4dHMiLCJrZXkiLCJjb250ZXh0UGF0aEZyb21LZXkiLCJzdWJzdHJpbmciLCJsYXN0SW5kZXhPZiIsImluY2x1ZGVzIiwiZmV0Y2hGaWx0ZXJlZFJlY29tbWVuZGF0aW9uRGF0YSIsImZpbHRlcmVkVGFyZ2V0cyIsImZpbHRlclJlY29tbWVuZGF0aW9uc0RhdGEiLCJPYmplY3QiLCJrZXlzIiwiYXNzaWduIiwiZmV0Y2hUYXJnZXRzIiwidmVyc2lvbiIsImFkanVzdEFjY2VwdEFsbFBhcmFtcyIsImZpbHRlclJlY29tbWVuZGF0aW9uRGF0YSIsImZpbHRlclJlY29tbWVuZGF0aW9uQ29udGV4dHMiLCJwYXJhbXMiLCJ2YWx1ZSIsInRleHQiLCJwcm9wZXJ0eVBhdGhGcm9tS2V5IiwibWF0Y2hpbmdDb250ZXh0IiwiaXNSZWNvbW1lbmRhdGlvbkZpZWxkTnVsbCIsInByb3BlcnR5UGF0aCIsImZldGNoQWNjZXB0QWxsUGFyYW1zIiwiZ2V0Q29udHJvbGxlciIsImFkZENvbnRleHRJZGVudGlmaWVyVGV4dCIsImNoZWNrSWZSZWNvbW1lbmRhdGlvbnNFeGlzdCIsImNsZWFyUmVjb21tZW5kYXRpb25Gb3JDb250ZXh0cyIsImNsZWFyRm9yQ2hpbGRyZW4iLCJ2aWV3IiwiY3VycmVudENvbnRleHQiLCJnZXRDdXJyZW50Um9vdENvbnRleHQiLCJzZXRDdXJyZW50Um9vdENvbnRleHQiLCJyZXNldFJlY29tbWVuZGF0aW9ucyIsIkNvbnRyb2xsZXJFeHRlbnNpb24iXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlJlY29tbWVuZGF0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV4dGVuc2libGUsIGZpbmFsRXh0ZW5zaW9uLCBtZXRob2RPdmVycmlkZSwgcHVibGljRXh0ZW5zaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyByZWNvbW1lbmRhdGlvbkhlbHBlciB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1JlY29tbWVuZGF0aW9uSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7XG5cdFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvLFxuXHRSZWNvbW1lbmRhdGlvbkluZm8sXG5cdFN0YW5kYXJkUmVjb21tZW5kYXRpb25SZXNwb25zZVxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyXCI7XG5pbXBvcnQgeyBzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IENvbnRyb2xsZXJFeHRlbnNpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyRXh0ZW5zaW9uXCI7XG5pbXBvcnQgT3ZlcnJpZGVFeGVjdXRpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9PdmVycmlkZUV4ZWN1dGlvblwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT0RhdGFWNENvbnRleHQgfSBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwiLi4vQ29tbW9uVXRpbHNcIjtcbmltcG9ydCBUcmFuc2FjdGlvbkhlbHBlciBmcm9tIFwiLi9lZGl0Rmxvdy9UcmFuc2FjdGlvbkhlbHBlclwiO1xuXG5leHBvcnQgdHlwZSBBY2NlcHRBbGxQYXJhbXMgPSB7XG5cdHJlY29tbWVuZGF0aW9uRGF0YT86IFJlY29tbWVuZGF0aW9uRGF0YVtdO1xufTtcblxuZXhwb3J0IHR5cGUgUmVjb21tZW5kYXRpb25EYXRhID0ge1xuXHRjb250ZXh0PzogT0RhdGFWNENvbnRleHQ7XG5cdGNvbnRleHRJZGVudGlmaWVyPzogc3RyaW5nW107XG5cdGNvbnRleHRJZGVudGlmaWVyVGV4dD86IHN0cmluZ1tdO1xuXHRwcm9wZXJ0eVBhdGg/OiBzdHJpbmc7XG5cdHZhbHVlPzogc3RyaW5nO1xuXHR0ZXh0Pzogc3RyaW5nO1xufTtcblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuUmVjb21tZW5kYXRpb25zXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWNvbW1lbmRhdGlvbnMgZXh0ZW5kcyBDb250cm9sbGVyRXh0ZW5zaW9uIHtcblx0YmFzZSE6IFBhZ2VDb250cm9sbGVyO1xuXG5cdHJlY29tbWVuZGF0aW9uQ29udGV4dHMhOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mb1tdO1xuXG5cdHJlY29tbWVuZGF0aW9uRW5hYmxlZFByb21pc2UhOiBQcm9taXNlPGJvb2xlYW4+O1xuXG5cdHJvb3RDb250ZXh0ITogQ29udGV4dCB8IHVuZGVmaW5lZDtcblxuXHRAbWV0aG9kT3ZlcnJpZGUoKVxuXHRvbkluaXQoKTogdm9pZCB7XG5cdFx0Ly90aGlzLnJlY29tbWVuZGF0aW9uRW5hYmxlZFByb21pc2UgPSB0aGlzLmJhc2UucmVjb21tZW5kYXRpb25zLmlzRW5hYmxlZCgpO1xuXHR9XG5cblx0QG1ldGhvZE92ZXJyaWRlKFwiX3JvdXRpbmdcIilcblx0YXN5bmMgb25BZnRlckJpbmRpbmcoY29udGV4dDogQ29udGV4dCB8IG51bGwpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoY29udGV4dCkge1xuXHRcdFx0Ly8gdXNlIGludGVybmFsIG1vZGVsIGJlY2F1c2Ugd2UgaGF2ZSB0byB1c2UgdGhpcyBpbmZvcm1hdGlvbiBhY3Jvc3MgdGhlIGFwcGxpY2F0aW9uIGZvciBkaWZmZXJlbnQgaW5zdGFuY2VzLlxuXHRcdFx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKTtcblx0XHRcdGNvbnN0IGlzUmVjb21tZW5kYXRpb25FbmFibGVkID0gaW50ZXJuYWxNb2RlbC5nZXRQcm9wZXJ0eShcIi9pc1JlY29tbWVuZGF0aW9uRW5hYmxlZFwiKTtcblx0XHRcdC8vIG9uQWZ0ZXIgYmluZGluZyBpcyBjYWxsZWQgZm9yIGFsbCBjb250ZXh0c1xuXHRcdFx0Ly8gYnV0IHdlIGRvIG5vdCBuZWVkIHRvIGNhbGwgdGhlIGlzRW5hYmxlZCBob29rIGFsbCB0aGUgdGltZVxuXHRcdFx0Ly8gc28gY2hlY2sgaWYgcmVjb21tZW5kYXRpb24gZW5hYmxlZCBpcyBhbHJlYWR5IGF2YWlsYWJsZVxuXHRcdFx0Y29uc3Qgcm9vdENvbnRleHQgPSBhd2FpdCB0aGlzLl9nZXRSb290Q29udGV4dChjb250ZXh0IGFzIE9EYXRhVjRDb250ZXh0KTtcblx0XHRcdGlmIChyb290Q29udGV4dCkge1xuXHRcdFx0XHR0aGlzLnJlY29tbWVuZGF0aW9uRW5hYmxlZFByb21pc2UgPVxuXHRcdFx0XHRcdGlzUmVjb21tZW5kYXRpb25FbmFibGVkID09PSB1bmRlZmluZWRcblx0XHRcdFx0XHRcdD8gdGhpcy5iYXNlLnJlY29tbWVuZGF0aW9ucy5pc0VuYWJsZWQocm9vdENvbnRleHQpLnRoZW4oKGlzRW5hYmxlZCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdC8vIHN0b3JlIHRoZSByZXN1bHQgb2YgcmVjb21tZW5kYXRpb24gZW5hYmxlZCBmb3IgbGF0ZXIgdXNlXG5cdFx0XHRcdFx0XHRcdFx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShcIi9pc1JlY29tbWVuZGF0aW9uRW5hYmxlZFwiLCBpc0VuYWJsZWQpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBpc0VuYWJsZWQ7XG5cdFx0XHRcdFx0XHQgIH0pXG5cdFx0XHRcdFx0XHQ6IFByb21pc2UucmVzb2x2ZShpc1JlY29tbWVuZGF0aW9uRW5hYmxlZCk7XG5cblx0XHRcdFx0dGhpcy50cnlSZXNldFJlY29tbWVuZGF0aW9ucyhyb290Q29udGV4dCBhcyBPRGF0YVY0Q29udGV4dCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBfZ2V0Um9vdENvbnRleHQoY29udGV4dDogT0RhdGFWNENvbnRleHQpOiBQcm9taXNlPENvbnRleHQgfCB1bmRlZmluZWQ+IHtcblx0XHRjb25zdCBwcm9ncmFtbWluZ01vZGVsID0gVHJhbnNhY3Rpb25IZWxwZXIuZ2V0UHJvZ3JhbW1pbmdNb2RlbChjb250ZXh0KTtcblx0XHRyZXR1cm4gQ29tbW9uVXRpbHMuY3JlYXRlUm9vdENvbnRleHQocHJvZ3JhbW1pbmdNb2RlbCwgdGhpcy5iYXNlLmdldFZpZXcoKSwgdGhpcy5iYXNlLmdldEFwcENvbXBvbmVudCgpKTtcblx0fVxuXHQvKipcblx0ICogQ2xlYXIgYWxsIHJlY29tbWVuZGF0aW9ucyBjdXJyZW50bHkgYXZhaWxhYmxlIG9uIHRoZSBVSS5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdHB1YmxpYyBjbGVhclJlY29tbWVuZGF0aW9ucygpOiB2b2lkIHtcblx0XHRjb25zdCBiaW5kaW5nQ29udGV4dCA9IHRoaXMuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0aWYgKGJpbmRpbmdDb250ZXh0KSB7XG5cdFx0XHRyZWNvbW1lbmRhdGlvbkhlbHBlci5jbGVhclJlY29tbWVuZGF0aW9ucyh0aGlzLmdldFZpZXcoKSwgYmluZGluZ0NvbnRleHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjayBpZiByZWNvbW1lbmRhdGlvbnMgYXJlIGVuYWJsZWQgb3Igbm90LlxuXHQgKlxuXHQgKiBAcGFyYW0gX3Jvb3RDb250ZXh0IFRoZSByb290IGVudGl0eSBjb250ZXh0XG5cdCAqIEByZXR1cm5zIFRydWUgaWYgcmVjb21tZW5kYXRpb24gaXMgZW5hYmxlZC4gRmFsc2UgaWYgcmVjb21tZW5kYXRpb24gaXMgZGlzYWJsZWQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkKVxuXHRwdWJsaWMgYXN5bmMgaXNFbmFibGVkKF9yb290Q29udGV4dDogQ29udGV4dCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHJlY29tbWVuZGF0aW9uIGlzIGVuYWJsZWQgb3Igbm90LiBJbiBjYXNlIGNhbGxlZCBiZWZvcmVcblx0ICogdGhlIGVuYWJsZW1lbnQgY2hlY2sgaXMgY29tcGxldGVkLCBtZXRob2Qgd2lsbCByZXR1cm4gZmFsc2Ugd2hpY2ggaXMgdGhlIGRlZmF1bHQgdmFsdWUuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgcmVjb21tZW5kYXRpb24gaXMgZW5hYmxlZCBlbHNlIGZhbHNlLlxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdHB1YmxpYyBpc1JlY29tbWVuZGF0aW9uRW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsID0gdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRNb2RlbChcImludGVybmFsXCIpO1xuXHRcdHJldHVybiAhIWludGVybmFsTW9kZWw/LmdldFByb3BlcnR5KFwiL2lzUmVjb21tZW5kYXRpb25FbmFibGVkXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZldGNoIHRoZSByZWNvbW1lbmRhdGlvbiBmb3IgYSBzcGVjaWZpYyBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0gY29udGV4dCBUaGUgY29udGV4dCB0aGF0IHNoYWxsIGJlIGNvbnNpZGVyZWQgd2hlbiBmZXRjaGluZyByZWNvbW1lbmRhdGlvbnNcblx0ICogQHBhcmFtIF9yb290Q29udGV4dCBUaGUgcm9vdCBlbnRpdHkgY29udGV4dFxuXHQgKiBAcmV0dXJucyBUaGUgcmVjb21tZW5kYXRpb24gZW50cmllc1xuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uSW5zdGVhZClcblx0cHVibGljIGFzeW5jIGZldGNoUmVjb21tZW5kYXRpb25zKF9jb250ZXh0OiBPRGF0YVY0Q29udGV4dFtdLCBfcm9vdENvbnRleHQ/OiBDb250ZXh0KTogUHJvbWlzZTxTdGFuZGFyZFJlY29tbWVuZGF0aW9uUmVzcG9uc2VbXT4ge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZldGNoIHRoZSByZWNvbW1lbmRhdGlvbnMgYW5kIGFwcGx5IHRoZW0gb24gdGhlIFVJLlxuXHQgKlxuXHQgKiBAcGFyYW0gY3VycmVudENvbnRleHRzSW5mbyBDb250ZXh0cyBJbmZvIHRoYXQgY29udGFpbnMgdGhlIGNvbnRleHQgdGhhdCBzaGFsbCBiZSBjb25zaWRlcmVkIHdoZW4gZmV0Y2hpbmcgcmVjb21tZW5kYXRpb25zIGFsb25nIHdpdGggY29udGV4dElkZW50aWZpZXJcblx0ICogQHBhcmFtIGNvbnNpZGVyT25seU5ld0NvbnRleHQgQm9vbGVhbiBwcm9wZXJ0eSBpbmRpY2F0aW5nIFJlY29tbWVuZGF0aW9uXG5cdCAqIHNob3VsZCBiZSBmZXRjaGVkIG9ubHkgZm9yIHRoZSBuZXcgY29udGV4dHMgd2l0aCBubyByZWNvbW1lbmRhdGlvbiBmZXRjaCBjYWxsIHNvIGZhclxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHJlY29tbWVuZGF0aW9uIHdlcmUgZmV0Y2hlZCBhbmQgYXBwbGllZCBjb3JyZWN0bHlcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRwdWJsaWMgYXN5bmMgZmV0Y2hBbmRBcHBseVJlY29tbWVuZGF0aW9ucyhcblx0XHRjdXJyZW50Q29udGV4dHNJbmZvOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mb1tdLFxuXHRcdGNvbnNpZGVyT25seU5ld0NvbnRleHQ/OiBib29sZWFuXG5cdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdGxldCBpc1N1Y2Nlc3MgPSBmYWxzZTtcblx0XHRjb25zdCBpc1JlY29tbWVuZGF0aW9uRW5hYmxlZCA9IGF3YWl0IHRoaXMucmVjb21tZW5kYXRpb25FbmFibGVkUHJvbWlzZTtcblx0XHRpZiAoaXNSZWNvbW1lbmRhdGlvbkVuYWJsZWQpIHtcblx0XHRcdGNvbnN0IGNvbnRleHRzSW5mbzogUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm9bXSA9IGNvbnNpZGVyT25seU5ld0NvbnRleHRcblx0XHRcdFx0PyBzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyLmdldENvbnRleHRzV2l0aE5vUmVjb21tZW5kYXRpb25zKGN1cnJlbnRDb250ZXh0c0luZm8pXG5cdFx0XHRcdDogY3VycmVudENvbnRleHRzSW5mbztcblx0XHRcdGNvbnN0IGNvbnRleHRzOiBPRGF0YVY0Q29udGV4dFtdID0gY29udGV4dHNJbmZvLm1hcCgoY29udGV4dEluZm86IFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvKSA9PiBjb250ZXh0SW5mby5jb250ZXh0KTtcblx0XHRcdGlmIChjb250ZXh0cyAmJiBjb250ZXh0cy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Y29uc3Qgcm9vdENvbnRleHQgPSBhd2FpdCB0aGlzLl9nZXRSb290Q29udGV4dChjb250ZXh0c1swXSk7XG5cdFx0XHRcdFx0Y29uc3QgcmVjb21tZW5kYXRpb25EYXRhID0gYXdhaXQgdGhpcy5iYXNlLnJlY29tbWVuZGF0aW9ucy5mZXRjaFJlY29tbWVuZGF0aW9ucyhjb250ZXh0cywgcm9vdENvbnRleHQpO1xuXHRcdFx0XHRcdC8vIG5lZWQgdG8gdmFsaWRhdGUgdGhhdCB0aGUgcmVzcG9uc2UgaXMgcHJvcGVybHkgZm9ybWF0dGVkXG5cdFx0XHRcdFx0aXNTdWNjZXNzID0gdGhpcy5hcHBseVJlY29tbWVuZGF0aW9uKHJlY29tbWVuZGF0aW9uRGF0YSwgY29udGV4dHMpO1xuXHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKFwiVGhlcmUgd2FzIGFuIGVycm9yIGZldGNoaW5nIHRoZSByZWNvbW1lbmRhdGlvbnNcIiwgZSBhcyBFcnJvcik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMuc3RvcmVSZWNvbW1lbmRhdGlvbkNvbnRleHRzKGN1cnJlbnRDb250ZXh0c0luZm8pO1xuXHRcdH1cblxuXHRcdHJldHVybiBpc1N1Y2Nlc3M7XG5cdH1cblxuXHQvKipcblx0ICogRmV0Y2ggdGhlIHJlY29tbWVuZGF0aW9ucyBvbiBmaWVsZCBjaGFuZ2UgYW5kIGFwcGx5IHRoZW0gb24gdGhlIFVJLlxuXHQgKlxuXHQgKiBAcGFyYW0gZmllbGQgVGhlIGNoYW5nZWQgZmllbGQuXG5cdCAqIEBwYXJhbSBjb250ZXh0SW5mbyBDb250ZXh0SW5mbyB0aGF0IGNvbnRhaW5zIHRoZSBjb250ZXh0IHRoYXQgc2hhbGwgYmUgY29uc2lkZXJlZCB3aGVuIGZldGNoaW5nIHJlY29tbWVuZGF0aW9ucyBhbG9uZyB3aXRoIGNvbnRleHRJZGVudGlmaWVyXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcmVjb21tZW5kYXRpb24gd2VyZSBmZXRjaGVkIGFuZCBhcHBsaWVkIGNvcnJlY3RseVxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdHB1YmxpYyBhc3luYyBmZXRjaEFuZEFwcGx5UmVjb21tZW5kYXRpb25zT25GaWVsZENoYW5nZShmaWVsZDogQ29udHJvbCwgY29udGV4dEluZm86IFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvW10pOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCk7XG5cdFx0Y29uc3QgaXNGaWVsZFJlY29tbWVuZGF0aW9uUmVsZXZhbnQgPSBhcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCkuY2hlY2tJZkZpZWxkSXNSZWNvbW1lbmRhdGlvblJlbGV2YW50KGZpZWxkKTtcblxuXHRcdGlmIChpc0ZpZWxkUmVjb21tZW5kYXRpb25SZWxldmFudCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZmV0Y2hBbmRBcHBseVJlY29tbWVuZGF0aW9ucyhjb250ZXh0SW5mbyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgZmlsdGVyZWQgcmVjb21tZW5kYXRpb25zIGZyb20gcGFzc2VkIHJlY29tbWVuZGF0aW9ucyBhbmQgdGhlbiBiYXNlZCBvbiBpdCB3ZSBlaXRoZXIgc2hvdyB0aGUgZmlsdGVyZWQgcmVjb21tZW5kYXRpb25zIG9yIG5vdCBzaG93IHRoZSBBY2NlcHQgYWxsIERpYWxvZyBpZiB0aGVyZSBhcmUgbm8gcmVjb21tZW5kYXRpb25zLlxuXHQgKiBAcGFyYW0gX3BhcmFtcyBQYXJhbXMgb2JqZWN0IGNvbnRhaW5pbmcgcmVjb21tZW5kYXRpb25EYXRhIHByb3BlcnR5IHdoaWNoIGlzIGFuIGFycmF5IG9mIG9iamVjdHMgY29udGFpbmluZyBjb250ZXh0LCBwcm9wZXJ0eVBhdGgsIHZhbHVlIGFuZCB0ZXh0IGZvciBhIHJlY29tbWVuZGF0aW9uXG5cdCAqIEByZXR1cm5zIFByb21pc2Vcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShcIkFmdGVyQXN5bmNcIilcblx0cHVibGljIGFzeW5jIG9uQmVmb3JlQWNjZXB0UmVjb21tZW5kYXRpb25zKF9wYXJhbXM6IEFjY2VwdEFsbFBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdC8vZG8gbm90aGluZ1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgLy9oYWQgdG8gZG8gdGhpcyBiZWNhdXNlIG9mIGVzbGludCBlcnJvciBvZiBub3QgaGF2aW5nIGF3YWl0IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGFzeW5jXG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgYWNjZXB0aW5nIHRoZSByZWNvbW1lbmRhdGlvbnMuXG5cdCAqIEBwYXJhbSBfcGFyYW1zIFBhcmFtcyBvYmplY3QgY29udGFpbmluZyByZWNvbW1lbmRhdGlvbkRhdGEgcHJvcGVydHkgd2hpY2ggaXMgYW4gYXJyYXkgb2Ygb2JqZWN0cyBjb250YWluaW5nIGNvbnRleHQsIHByb3BlcnR5UGF0aCwgdmFsdWUgYW5kIHRleHQgZm9yIGEgcmVjb21tZW5kYXRpb25cblx0ICogQHJldHVybnMgUHJvbWlzZSB3aGljaCByZXNvbHZlZCB0byBhIEJvb2xlYW4gdmFsdWUgYmFzZWQgb24gd2hldGhlciByZWNvbW1lbmRhdGlvbnMgYXJlIGFjY2VwdGVkIG9yIG5vdFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkluc3RlYWQpXG5cdHB1YmxpYyBhc3luYyBhY2NlcHRSZWNvbW1lbmRhdGlvbnMoX3BhcmFtczogQWNjZXB0QWxsUGFyYW1zKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdFx0Ly9kbyBub3RoaW5nXG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTsgLy9oYWQgdG8gZG8gdGhpcyBiZWNhdXNlIG9mIGVzbGludCBlcnJvciBvZiBub3QgaGF2aW5nIGF3YWl0IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGFzeW5jXG5cdH1cblx0cHJpdmF0ZSBhcHBseVJlY29tbWVuZGF0aW9uKHJlY29tbWVuZGF0aW9uUmVzcG9uc2VzOiBTdGFuZGFyZFJlY29tbWVuZGF0aW9uUmVzcG9uc2VbXSwgX2NvbnRleHQ6IE9EYXRhVjRDb250ZXh0W10pOiBib29sZWFuIHtcblx0XHRzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyLnN0b3JlUmVjb21tZW5kYXRpb25zKFxuXHRcdFx0cmVjb21tZW5kYXRpb25SZXNwb25zZXMsXG5cdFx0XHR0aGlzLmdldFZpZXcoKS5nZXRNb2RlbChcImludGVybmFsXCIpIGFzIEpTT05Nb2RlbCxcblx0XHRcdF9jb250ZXh0XG5cdFx0KTtcblxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFN0b3JlcyB0aGUgcmVjb21tZW5kYXRpb24gY29udGV4dHMuXG5cdCAqXG5cdCAqIEBwYXJhbSBjb250ZXh0c0luZm9cblx0ICovXG5cdHByaXZhdGUgc3RvcmVSZWNvbW1lbmRhdGlvbkNvbnRleHRzKGNvbnRleHRzSW5mbzogUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm9bXSk6IHZvaWQge1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWwgPSB0aGlzLmdldFZpZXcoKS5nZXRNb2RlbChcImludGVybmFsXCIpIGFzIEpTT05Nb2RlbDtcblx0XHRjb25zdCBjb250ZXh0UGF0aHM6IHN0cmluZ1tdID0gW107XG5cdFx0bGV0IHJlY29tbWVuZGF0aW9uQ29udGV4dHMgPSBpbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KFwiL3JlY29tbWVuZGF0aW9uQ29udGV4dHNcIikgfHwgW107XG5cdFx0Y29udGV4dHNJbmZvLmZvckVhY2goKGNvbnRleHRJbmZvOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mbykgPT4ge1xuXHRcdFx0Y29udGV4dFBhdGhzLnB1c2goY29udGV4dEluZm8uY29udGV4dC5nZXRQYXRoKCkpO1xuXHRcdH0pO1xuXG5cdFx0cmVjb21tZW5kYXRpb25Db250ZXh0cyA9IHJlY29tbWVuZGF0aW9uQ29udGV4dHM/LmZpbHRlcigocmVjb21tZW5kYXRpb25Db250ZXh0OiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mbykgPT4ge1xuXHRcdFx0Y29uc3QgY29udGV4dCA9IHJlY29tbWVuZGF0aW9uQ29udGV4dD8uY29udGV4dDtcblx0XHRcdGlmIChjb250ZXh0KSB7XG5cdFx0XHRcdGNvbnN0IGNvbnRleHRQYXRoID0gY29udGV4dC5nZXRQYXRoKCk7XG5cdFx0XHRcdGNvbnN0IGluZGV4ID0gY29udGV4dFBhdGhzLmluZGV4T2YoY29udGV4dFBhdGgpO1xuXHRcdFx0XHRpZiAoaW5kZXggPCAwKSB7XG5cdFx0XHRcdFx0Ly8gRXhpc3RpbmcgY29udGV4dCBwYXRoIGlzIG5vdCBmb3VuZCBpbiB0aGUgbmV3bHkgZmV0Y2hlZCByZWNvbW1lbmRhdGlvbiAmIHRoZXJlZm9yZSBkb24ndCBkbyBhbnl0aGluZ1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHJlY29tbWVuZGF0aW9uQ29udGV4dC5jb250ZXh0SWRlbnRpZmllcikge1xuXHRcdFx0XHRcdC8vIEV4aXN0aW5nIGNvbnRleHQgcGF0aCBpcyBmb3VuZC4gd2UgdHJ5IHRvIHVwZGF0ZSB0aGUgY29udGV4dEluZm8gd2l0aCB0aGUgbGF0ZXN0IGNvbnRleHRcblx0XHRcdFx0XHQvLyBpbnN0ZWFkIG9mIG91dGRhdGVkIG9uZVxuXHRcdFx0XHRcdGNvbnRleHRzSW5mb1tpbmRleF0uY29udGV4dElkZW50aWZpZXIgPSByZWNvbW1lbmRhdGlvbkNvbnRleHQuY29udGV4dElkZW50aWZpZXI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9KTtcblxuXHRcdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoXCIvcmVjb21tZW5kYXRpb25Db250ZXh0c1wiLCBbLi4ucmVjb21tZW5kYXRpb25Db250ZXh0cywgLi4uY29udGV4dHNJbmZvXSk7XG5cdH1cblxuXHQvKipcblx0ICogRmlsdGVycyB0aGUgY29udGV4dHMgYW5kIG9ubHkgcmV0dXJucyB0aG9zZSB0aGF0IG1hdGNoZXMgdGhlIGNvbnRleHRzLlxuXHQgKlxuXHQgKiBAcGFyYW0gdGFyZ2V0c1xuXHQgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBmaWx0ZXJlZCByZWNvbW1lbmRhdGlvbiByZWxldmFudCBjb250ZXh0c1xuXHQgKi9cblx0cHJpdmF0ZSBmZXRjaEZpbHRlcmVkUmVjb21tZW5kYXRpb25Db250ZXh0cyh0YXJnZXRzOiBzdHJpbmdbXSk6IFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvW10ge1xuXHRcdGNvbnN0IGNvbnRleHRQYXRoczogc3RyaW5nW10gPSBbXTtcblx0XHRjb25zdCBmaWx0ZXJlZFJlY29tbWVuZGF0aW9uQ29udGV4dHM6IFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvW10gPSBbXTtcblx0XHRmb3IgKGNvbnN0IGtleSBvZiB0YXJnZXRzKSB7XG5cdFx0XHRjb25zdCBjb250ZXh0UGF0aEZyb21LZXkgPSBrZXkuc3Vic3RyaW5nKDAsIGtleS5sYXN0SW5kZXhPZihcIilcIikgKyAxKTtcblx0XHRcdGNvbnN0IHJlY29tbWVuZGF0aW9uQ29udGV4dHMgPSAodGhpcy5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWwpLmdldFByb3BlcnR5KFwiL3JlY29tbWVuZGF0aW9uQ29udGV4dHNcIik7XG5cdFx0XHRyZWNvbW1lbmRhdGlvbkNvbnRleHRzLmZvckVhY2goKGNvbnRleHRJbmZvOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mbykgPT4ge1xuXHRcdFx0XHRjb25zdCBjb250ZXh0ID0gY29udGV4dEluZm8uY29udGV4dDtcblx0XHRcdFx0aWYgKGNvbnRleHQuZ2V0UGF0aCgpID09IGNvbnRleHRQYXRoRnJvbUtleSAmJiAhY29udGV4dFBhdGhzLmluY2x1ZGVzKGNvbnRleHRQYXRoRnJvbUtleSkpIHtcblx0XHRcdFx0XHRjb250ZXh0UGF0aHMucHVzaChjb250ZXh0UGF0aEZyb21LZXkpO1xuXHRcdFx0XHRcdGZpbHRlcmVkUmVjb21tZW5kYXRpb25Db250ZXh0cy5wdXNoKGNvbnRleHRJbmZvKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBmaWx0ZXJlZFJlY29tbWVuZGF0aW9uQ29udGV4dHM7XG5cdH1cblxuXHQvKipcblx0ICogRmV0Y2hlcyBSZWNvbW1lbmRhdGlvbkRhdGEgYmFzZWQgb24gZmlsdGVyZWQgdGFyZ2V0cy5cblx0ICpcblx0ICogQHBhcmFtIGZpbHRlcmVkVGFyZ2V0c1xuXHQgKiBAcmV0dXJucyBSZWNvbW1lbmRhdGlvbkRhdGFcblx0ICovXG5cdHByaXZhdGUgZmV0Y2hGaWx0ZXJlZFJlY29tbWVuZGF0aW9uRGF0YShmaWx0ZXJlZFRhcmdldHM6IHN0cmluZ1tdKTogUmVjb21tZW5kYXRpb25JbmZvIHtcblx0XHRjb25zdCBmaWx0ZXJSZWNvbW1lbmRhdGlvbnNEYXRhOiBSZWNvbW1lbmRhdGlvbkluZm8gPSB7fTtcblx0XHRjb25zdCByZWNvbW1lbmRhdGlvbkRhdGEgPSB0aGlzLmdldFZpZXcoKS5nZXRNb2RlbChcImludGVybmFsXCIpPy5nZXRQcm9wZXJ0eShcIi9yZWNvbW1lbmRhdGlvbnNEYXRhXCIpO1xuXHRcdE9iamVjdC5rZXlzKHJlY29tbWVuZGF0aW9uRGF0YSkuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcblx0XHRcdGlmIChmaWx0ZXJlZFRhcmdldHMuaW5jbHVkZXMoa2V5KSkge1xuXHRcdFx0XHRmaWx0ZXJSZWNvbW1lbmRhdGlvbnNEYXRhW2tleV0gPSBPYmplY3QuYXNzaWduKHJlY29tbWVuZGF0aW9uRGF0YVtrZXldLCB7fSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIGZpbHRlclJlY29tbWVuZGF0aW9uc0RhdGE7XG5cdH1cblxuXHQvKipcblx0ICogRmV0Y2hlcyB0aGUgZmlsdGVyZWQgdGFyZ2V0cy5cblx0ICpcblx0ICogQHJldHVybnMgQXJyYXkgb2YgRmlsdGVyZWQgdGFyZ2V0c1xuXHQgKi9cblx0cHJpdmF0ZSBmZXRjaFRhcmdldHMoKTogc3RyaW5nW10ge1xuXHRcdGNvbnN0IHJlY29tbWVuZGF0aW9uRGF0YSA9IHRoaXMuZ2V0VmlldygpLmdldE1vZGVsKFwiaW50ZXJuYWxcIik/LmdldFByb3BlcnR5KFwiL3JlY29tbWVuZGF0aW9uc0RhdGFcIik7XG5cdFx0aWYgKHJlY29tbWVuZGF0aW9uRGF0YS52ZXJzaW9uID09PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXHRcdHJldHVybiAoXG5cdFx0XHRPYmplY3Qua2V5cyhyZWNvbW1lbmRhdGlvbkRhdGEpLmZpbHRlcigoa2V5OiBzdHJpbmcpID0+IHtcblx0XHRcdFx0cmV0dXJuIGtleSAhPT0gXCJ2ZXJzaW9uXCIgJiYga2V5LmluY2x1ZGVzKHRoaXMuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KCk/LmdldFBhdGgoKSBhcyBzdHJpbmcpO1xuXHRcdFx0fSkgfHwgW11cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE92ZXJ3cml0ZXMgQWNjZXB0QWxsIFBhcmFtcyBiYXNlZCBvZiByZWNvbW1lbmRhdGlvbiBkYXRhIGFuZCBjb250ZXh0cy5cblx0ICpcblx0ICogQHBhcmFtIGZpbHRlclJlY29tbWVuZGF0aW9uRGF0YVxuXHQgKiBAcGFyYW0gZmlsdGVyUmVjb21tZW5kYXRpb25Db250ZXh0c1xuXHQgKiBAcGFyYW0gcGFyYW1zXG5cdCAqL1xuXHRwcml2YXRlIGFkanVzdEFjY2VwdEFsbFBhcmFtcyhcblx0XHRmaWx0ZXJSZWNvbW1lbmRhdGlvbkRhdGE6IFJlY29tbWVuZGF0aW9uSW5mbyxcblx0XHRmaWx0ZXJSZWNvbW1lbmRhdGlvbkNvbnRleHRzOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mb1tdLFxuXHRcdHBhcmFtczogQWNjZXB0QWxsUGFyYW1zXG5cdCk6IHZvaWQge1xuXHRcdHBhcmFtcy5yZWNvbW1lbmRhdGlvbkRhdGEgPSBbXTtcblx0XHRmb3IgKGNvbnN0IGtleSBpbiBmaWx0ZXJSZWNvbW1lbmRhdGlvbkRhdGEpIHtcblx0XHRcdGlmIChmaWx0ZXJSZWNvbW1lbmRhdGlvbkRhdGFba2V5XS52YWx1ZSB8fCBmaWx0ZXJSZWNvbW1lbmRhdGlvbkRhdGFba2V5XS50ZXh0KSB7XG5cdFx0XHRcdC8vIEluIGNhc2UgdGhlcmUgaXMgbm8gcGxhY2Vob2xkZXIgdmFsdWUgb3IgcGxhY2Vob2xkZXIgdGV4dCB0aGVuIHRoaXMgcmVjb21tZW5kYXRpb24gaXMgbm90IHJlbGV2YW50IGZvciBBY2NlcHQuXG5cdFx0XHRcdC8vIFVzZXIgbmVlZHMgdG8gbWFudWFsbHkgc2VsZWN0IHRoZSByZWNvbW1lbmRlZCB2YWx1ZSBpbiB0aGVzZSBjYXNlcyAmIHRoZXJlZm9yZSBmaWx0ZXIgdGhlIHNhbWUuXG5cdFx0XHRcdGNvbnN0IGNvbnRleHRQYXRoRnJvbUtleSA9IGtleS5zdWJzdHJpbmcoMCwga2V5Lmxhc3RJbmRleE9mKFwiKVwiKSArIDEpO1xuXHRcdFx0XHRjb25zdCBwcm9wZXJ0eVBhdGhGcm9tS2V5ID0ga2V5LnN1YnN0cmluZyhrZXkubGFzdEluZGV4T2YoXCIpXCIpICsgMik7XG5cdFx0XHRcdGNvbnN0IG1hdGNoaW5nQ29udGV4dCA9IGZpbHRlclJlY29tbWVuZGF0aW9uQ29udGV4dHMuZmlsdGVyKGZ1bmN0aW9uIChjb250ZXh0SW5mbykge1xuXHRcdFx0XHRcdGlmIChjb250ZXh0SW5mby5jb250ZXh0LmdldFBhdGgoKSA9PT0gY29udGV4dFBhdGhGcm9tS2V5KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0bWF0Y2hpbmdDb250ZXh0Py5sZW5ndGggPiAwICYmXG5cdFx0XHRcdFx0c3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlci5pc1JlY29tbWVuZGF0aW9uRmllbGROdWxsKG1hdGNoaW5nQ29udGV4dFswXS5jb250ZXh0LCBrZXksIHByb3BlcnR5UGF0aEZyb21LZXkpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHBhcmFtcy5yZWNvbW1lbmRhdGlvbkRhdGEucHVzaCh7XG5cdFx0XHRcdFx0XHRjb250ZXh0OiBtYXRjaGluZ0NvbnRleHRbMF0uY29udGV4dCxcblx0XHRcdFx0XHRcdGNvbnRleHRJZGVudGlmaWVyOiBtYXRjaGluZ0NvbnRleHRbMF0uY29udGV4dElkZW50aWZpZXIsXG5cdFx0XHRcdFx0XHRwcm9wZXJ0eVBhdGg6IHByb3BlcnR5UGF0aEZyb21LZXksXG5cdFx0XHRcdFx0XHR2YWx1ZTogZmlsdGVyUmVjb21tZW5kYXRpb25EYXRhW2tleV0udmFsdWUsXG5cdFx0XHRcdFx0XHR0ZXh0OiBmaWx0ZXJSZWNvbW1lbmRhdGlvbkRhdGFba2V5XS50ZXh0XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRmV0Y2hlcyBSZWNvbW1lbmRhdGlvbkluZm8gdGhhdCBjb250YWlucyB0YXJnZXRzLCBmaWx0ZXJSZWNvbW1lbmRhdGlvbkRhdGEsIGZpbHRlclJlY29tbWVuZGF0aW9uQ29udGV4dHMuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgd2l0aCBBY2NlcHRhbGxQYXJhbXNcblx0ICovXG5cdHB1YmxpYyBhc3luYyBmZXRjaEFjY2VwdEFsbFBhcmFtcygpOiBQcm9taXNlPEFjY2VwdEFsbFBhcmFtcz4ge1xuXHRcdGNvbnN0IHRhcmdldHM6IHN0cmluZ1tdID0gdGhpcy5mZXRjaFRhcmdldHMoKTtcblx0XHRjb25zdCBmaWx0ZXJSZWNvbW1lbmRhdGlvbkRhdGEgPSB0aGlzLmZldGNoRmlsdGVyZWRSZWNvbW1lbmRhdGlvbkRhdGEodGFyZ2V0cyk7XG5cdFx0Y29uc3QgZmlsdGVyUmVjb21tZW5kYXRpb25Db250ZXh0cyA9IHRoaXMuZmV0Y2hGaWx0ZXJlZFJlY29tbWVuZGF0aW9uQ29udGV4dHModGFyZ2V0cyk7XG5cdFx0Y29uc3QgcGFyYW1zID0ge307XG5cdFx0dGhpcy5hZGp1c3RBY2NlcHRBbGxQYXJhbXMoZmlsdGVyUmVjb21tZW5kYXRpb25EYXRhLCBmaWx0ZXJSZWNvbW1lbmRhdGlvbkNvbnRleHRzLCBwYXJhbXMpO1xuXHRcdGF3YWl0ICh0aGlzLmdldFZpZXcoKS5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXIpLnJlY29tbWVuZGF0aW9ucy5vbkJlZm9yZUFjY2VwdFJlY29tbWVuZGF0aW9ucyhwYXJhbXMpO1xuXHRcdHN0YW5kYXJkUmVjb21tZW5kYXRpb25IZWxwZXIuYWRkQ29udGV4dElkZW50aWZpZXJUZXh0KHBhcmFtcyk7XG5cdFx0cmV0dXJuIHBhcmFtcztcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgcmVjb21tZW5kYXRpb25zIGV4aXN0IG9yIG5vdC5cblx0ICpcblx0ICogQHJldHVybnMgQm9vbGVhbiB2YWx1ZSBiYXNlZCBvbiB3aGV0aGVyIHJlY29tbWVuZGF0aW9ucyBhcmUgcHJlc2VudCBvciBub3Rcblx0ICovXG5cdHB1YmxpYyBjaGVja0lmUmVjb21tZW5kYXRpb25zRXhpc3QoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgcmVjb21tZW5kYXRpb25EYXRhID0gKHRoaXMuZ2V0VmlldygpLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsKS5nZXRQcm9wZXJ0eShcIi9yZWNvbW1lbmRhdGlvbnNEYXRhXCIpIHx8IHt9O1xuXHRcdHJldHVybiBPYmplY3Qua2V5cyhyZWNvbW1lbmRhdGlvbkRhdGEpLmxlbmd0aCAhPT0gMDtcblx0fVxuXG5cdHB1YmxpYyBjbGVhclJlY29tbWVuZGF0aW9uRm9yQ29udGV4dHMoY29udGV4dHM/OiBPRGF0YVY0Q29udGV4dFtdLCBjbGVhckZvckNoaWxkcmVuPzogYm9vbGVhbik6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHZpZXcgPSB0aGlzLmdldFZpZXcoKTtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsID0gdmlldy5nZXRNb2RlbChcImludGVybmFsXCIpIGFzIEpTT05Nb2RlbDtcblx0XHRpZiAoIWNvbnRleHRzIHx8ICFjb250ZXh0cy5sZW5ndGgpIHtcblx0XHRcdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gdmlldy5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIE9EYXRhVjRDb250ZXh0O1xuXHRcdFx0Y29udGV4dHMgPSBbYmluZGluZ0NvbnRleHRdO1xuXHRcdH1cblx0XHRsZXQgcmVjb21tZW5kYXRpb25Db250ZXh0czogUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm9bXSA9IGludGVybmFsTW9kZWwuZ2V0UHJvcGVydHkoXCIvcmVjb21tZW5kYXRpb25Db250ZXh0c1wiKSB8fCBbXTtcblx0XHRpZiAoc3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlci5jbGVhclJlY29tbWVuZGF0aW9uRm9yQ29udGV4dHMoY29udGV4dHMsIGludGVybmFsTW9kZWwsIGNsZWFyRm9yQ2hpbGRyZW4pKSB7XG5cdFx0XHRjb250ZXh0cy5mb3JFYWNoKChjb250ZXh0OiBPRGF0YVY0Q29udGV4dCkgPT4ge1xuXHRcdFx0XHRyZWNvbW1lbmRhdGlvbkNvbnRleHRzID0gcmVjb21tZW5kYXRpb25Db250ZXh0cy5maWx0ZXIoKGNvbnRleHRJbmZvOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mbykgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBjb250ZXh0SW5mbz8uY29udGV4dC5nZXRQYXRoKCkgIT09IGNvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdFx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShcIi9yZWNvbW1lbmRhdGlvbkNvbnRleHRzXCIsIHJlY29tbWVuZGF0aW9uQ29udGV4dHMpO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cHJpdmF0ZSB0cnlSZXNldFJlY29tbWVuZGF0aW9ucyhyb290Q29udGV4dDogT0RhdGFWNENvbnRleHQpOiB2b2lkIHtcblx0XHRjb25zdCBjdXJyZW50Q29udGV4dCA9IHN0YW5kYXJkUmVjb21tZW5kYXRpb25IZWxwZXIuZ2V0Q3VycmVudFJvb3RDb250ZXh0KCk7XG5cdFx0aWYgKGN1cnJlbnRDb250ZXh0Py5nZXRQYXRoKCkgPT09IHJvb3RDb250ZXh0LmdldFBhdGgoKSkge1xuXHRcdFx0Ly8gU2FtZSByb290IGNvbnRleHQsIG5lZWRzIG5vIHJlc2V0XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0c3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlci5zZXRDdXJyZW50Um9vdENvbnRleHQocm9vdENvbnRleHQpO1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWwgPSB0aGlzLmdldFZpZXcoKS5nZXRNb2RlbChcImludGVybmFsXCIpIGFzIEpTT05Nb2RlbDtcblx0XHQvLyBUT0RPOiBTdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyIHN0b3JlcyBhbGwgdGhlIHJlY29tbWVuZGF0aW9ucyBmb3IgYW4gaW5zdGFuY2Ugb2YgYnVzaW5lc3Mgb2JqZWN0XG5cdFx0Ly8gbWVhbmluZyBkb2Vzbid0IG1hdHRlciB0aGUgcmVjb21tZW5kYXRpb25zIGFyZSBvbiB0aGUgT1AvU3ViT1AuIEJ1dCB0aGUgcmVjb21tZW5kYXRpb25zIGNvbnRleHRzIGhlcmVcblx0XHQvLyBpcyBzcGVjaWZpYyB0byB0aGlzIGNvbnRyb2xsZXIsIFN1Yk9QIGNvbnRyb2xsZXIgd2lsbCBoYXZlIGl0cyBvd24gcmVjb21tZW5kYXRpb24gY29udGV4dHMuIElkZWFsbHkgaXRcblx0XHQvLyBzaG91bGQgYmUgY2xlYXJlZCBidXQgdGhpcyBpcyBub3QgZG9uZSBoZXJlLiBUaGlzIGNvbXBsZXRlIHRoaW5nIG5lZWRzIHRvIGJlIHJlZmFjdG9yZWRcblx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KFwiL3JlY29tbWVuZGF0aW9uQ29udGV4dHNcIiwgW10pO1xuXHRcdHN0YW5kYXJkUmVjb21tZW5kYXRpb25IZWxwZXIucmVzZXRSZWNvbW1lbmRhdGlvbnMoaW50ZXJuYWxNb2RlbCk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7OztNQWlDcUJBLGVBQWUsV0FEbkNDLGNBQWMsQ0FBQyxrREFBa0QsQ0FBQyxVQVVqRUMsY0FBYyxFQUFFLFVBS2hCQSxjQUFjLENBQUMsVUFBVSxDQUFDLFVBa0MxQkMsZUFBZSxFQUFFLFVBZWpCQSxlQUFlLEVBQUUsVUFDakJDLFVBQVUsQ0FBQ0MsaUJBQWlCLENBQUNDLE9BQU8sQ0FBQyxVQVdyQ0gsZUFBZSxFQUFFLFVBQ2pCSSxjQUFjLEVBQUUsVUFjaEJKLGVBQWUsRUFBRSxXQUNqQkMsVUFBVSxDQUFDQyxpQkFBaUIsQ0FBQ0MsT0FBTyxDQUFDLFdBYXJDSCxlQUFlLEVBQUUsV0FtQ2pCQSxlQUFl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
351
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWNvbW1lbmRhdGlvbnMiLCJkZWZpbmVVSTVDbGFzcyIsIm1ldGhvZE92ZXJyaWRlIiwicHVibGljRXh0ZW5zaW9uIiwiZXh0ZW5zaWJsZSIsIk92ZXJyaWRlRXhlY3V0aW9uIiwiSW5zdGVhZCIsImZpbmFsRXh0ZW5zaW9uIiwib25Jbml0Iiwib25BZnRlckJpbmRpbmciLCJjb250ZXh0IiwiaW50ZXJuYWxNb2RlbCIsImJhc2UiLCJnZXRWaWV3IiwiZ2V0TW9kZWwiLCJpc1JlY29tbWVuZGF0aW9uRW5hYmxlZCIsImdldFByb3BlcnR5Iiwicm9vdENvbnRleHQiLCJfZ2V0Um9vdENvbnRleHQiLCJyZWNvbW1lbmRhdGlvbkVuYWJsZWRQcm9taXNlIiwidW5kZWZpbmVkIiwicmVjb21tZW5kYXRpb25zIiwiaXNFbmFibGVkIiwidGhlbiIsInNldFByb3BlcnR5IiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0cnlSZXNldFJlY29tbWVuZGF0aW9ucyIsInByb2dyYW1taW5nTW9kZWwiLCJUcmFuc2FjdGlvbkhlbHBlciIsImdldFByb2dyYW1taW5nTW9kZWwiLCJDb21tb25VdGlscyIsImNyZWF0ZVJvb3RDb250ZXh0IiwiZ2V0QXBwQ29tcG9uZW50IiwiY2xlYXJSZWNvbW1lbmRhdGlvbnMiLCJiaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwicmVjb21tZW5kYXRpb25IZWxwZXIiLCJfcm9vdENvbnRleHQiLCJmZXRjaFJlY29tbWVuZGF0aW9ucyIsIl9jb250ZXh0IiwiZmV0Y2hBbmRBcHBseVJlY29tbWVuZGF0aW9ucyIsImN1cnJlbnRDb250ZXh0c0luZm8iLCJjb25zaWRlck9ubHlOZXdDb250ZXh0IiwiaXNTdWNjZXNzIiwiY29udGV4dHNJbmZvIiwic3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlciIsImdldENvbnRleHRzV2l0aE5vUmVjb21tZW5kYXRpb25zIiwiY29udGV4dHMiLCJtYXAiLCJjb250ZXh0SW5mbyIsImxlbmd0aCIsInJlY29tbWVuZGF0aW9uRGF0YSIsImFwcGx5UmVjb21tZW5kYXRpb24iLCJlIiwiTG9nIiwiZXJyb3IiLCJzdG9yZVJlY29tbWVuZGF0aW9uQ29udGV4dHMiLCJmZXRjaEFuZEFwcGx5UmVjb21tZW5kYXRpb25zT25GaWVsZENoYW5nZSIsImZpZWxkIiwiYXBwQ29tcG9uZW50IiwiaXNGaWVsZFJlY29tbWVuZGF0aW9uUmVsZXZhbnQiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJjaGVja0lmRmllbGRJc1JlY29tbWVuZGF0aW9uUmVsZXZhbnQiLCJvbkJlZm9yZUFjY2VwdFJlY29tbWVuZGF0aW9ucyIsIl9wYXJhbXMiLCJhY2NlcHRSZWNvbW1lbmRhdGlvbnMiLCJyZWNvbW1lbmRhdGlvblJlc3BvbnNlcyIsInN0b3JlUmVjb21tZW5kYXRpb25zIiwiY29udGV4dFBhdGhzIiwicmVjb21tZW5kYXRpb25Db250ZXh0cyIsImZvckVhY2giLCJwdXNoIiwiZ2V0UGF0aCIsImZpbHRlciIsInJlY29tbWVuZGF0aW9uQ29udGV4dCIsImNvbnRleHRQYXRoIiwiaW5kZXgiLCJpbmRleE9mIiwiY29udGV4dElkZW50aWZpZXIiLCJmZXRjaEZpbHRlcmVkUmVjb21tZW5kYXRpb25Db250ZXh0cyIsInRhcmdldHMiLCJmaWx0ZXJlZFJlY29tbWVuZGF0aW9uQ29udGV4dHMiLCJrZXkiLCJjb250ZXh0UGF0aEZyb21LZXkiLCJzdWJzdHJpbmciLCJsYXN0SW5kZXhPZiIsImluY2x1ZGVzIiwiZmV0Y2hGaWx0ZXJlZFJlY29tbWVuZGF0aW9uRGF0YSIsImZpbHRlcmVkVGFyZ2V0cyIsImZpbHRlclJlY29tbWVuZGF0aW9uc0RhdGEiLCJPYmplY3QiLCJrZXlzIiwiYXNzaWduIiwiZmV0Y2hUYXJnZXRzIiwidmVyc2lvbiIsImFkanVzdEFjY2VwdEFsbFBhcmFtcyIsImZpbHRlclJlY29tbWVuZGF0aW9uRGF0YSIsImZpbHRlclJlY29tbWVuZGF0aW9uQ29udGV4dHMiLCJwYXJhbXMiLCJ2YWx1ZSIsInRleHQiLCJwcm9wZXJ0eVBhdGhGcm9tS2V5IiwibWF0Y2hpbmdDb250ZXh0IiwiaXNSZWNvbW1lbmRhdGlvbkZpZWxkTnVsbCIsInByb3BlcnR5UGF0aCIsImZldGNoQWNjZXB0QWxsUGFyYW1zIiwiZ2V0Q29udHJvbGxlciIsImFkZENvbnRleHRJZGVudGlmaWVyVGV4dCIsImNoZWNrSWZSZWNvbW1lbmRhdGlvbnNFeGlzdCIsImNsZWFyUmVjb21tZW5kYXRpb25Gb3JDb250ZXh0cyIsImNsZWFyRm9yQ2hpbGRyZW4iLCJ2aWV3Iiwic2V0Q3VycmVudFJvb3RDb250ZXh0IiwicmVzZXRSZWNvbW1lbmRhdGlvbnMiLCJDb250cm9sbGVyRXh0ZW5zaW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJSZWNvbW1lbmRhdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBleHRlbnNpYmxlLCBmaW5hbEV4dGVuc2lvbiwgbWV0aG9kT3ZlcnJpZGUsIHB1YmxpY0V4dGVuc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgcmVjb21tZW5kYXRpb25IZWxwZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9SZWNvbW1lbmRhdGlvbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUge1xuXHRSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mbyxcblx0UmVjb21tZW5kYXRpb25JbmZvLFxuXHRTdGFuZGFyZFJlY29tbWVuZGF0aW9uUmVzcG9uc2Vcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlclwiO1xuaW1wb3J0IHsgc3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlciB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YW5kYXJkUmVjb21tZW5kYXRpb25IZWxwZXJcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlckV4dGVuc2lvblwiO1xuaW1wb3J0IE92ZXJyaWRlRXhlY3V0aW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvT3ZlcnJpZGVFeGVjdXRpb25cIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9EYXRhVjRDb250ZXh0IH0gZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcIi4uL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgVHJhbnNhY3Rpb25IZWxwZXIgZnJvbSBcIi4vZWRpdEZsb3cvVHJhbnNhY3Rpb25IZWxwZXJcIjtcblxuZXhwb3J0IHR5cGUgQWNjZXB0QWxsUGFyYW1zID0ge1xuXHRyZWNvbW1lbmRhdGlvbkRhdGE/OiBSZWNvbW1lbmRhdGlvbkRhdGFbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFJlY29tbWVuZGF0aW9uRGF0YSA9IHtcblx0Y29udGV4dD86IE9EYXRhVjRDb250ZXh0O1xuXHRjb250ZXh0SWRlbnRpZmllcj86IHN0cmluZ1tdO1xuXHRjb250ZXh0SWRlbnRpZmllclRleHQ/OiBzdHJpbmdbXTtcblx0cHJvcGVydHlQYXRoPzogc3RyaW5nO1xuXHR2YWx1ZT86IHN0cmluZztcblx0dGV4dD86IHN0cmluZztcbn07XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLlJlY29tbWVuZGF0aW9uc1wiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVjb21tZW5kYXRpb25zIGV4dGVuZHMgQ29udHJvbGxlckV4dGVuc2lvbiB7XG5cdGJhc2UhOiBQYWdlQ29udHJvbGxlcjtcblxuXHRyZWNvbW1lbmRhdGlvbkNvbnRleHRzITogUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm9bXTtcblxuXHRyZWNvbW1lbmRhdGlvbkVuYWJsZWRQcm9taXNlITogUHJvbWlzZTxib29sZWFuPjtcblxuXHRyb290Q29udGV4dCE6IENvbnRleHQgfCB1bmRlZmluZWQ7XG5cblx0QG1ldGhvZE92ZXJyaWRlKClcblx0b25Jbml0KCk6IHZvaWQge1xuXHRcdC8vdGhpcy5yZWNvbW1lbmRhdGlvbkVuYWJsZWRQcm9taXNlID0gdGhpcy5iYXNlLnJlY29tbWVuZGF0aW9ucy5pc0VuYWJsZWQoKTtcblx0fVxuXG5cdEBtZXRob2RPdmVycmlkZShcIl9yb3V0aW5nXCIpXG5cdGFzeW5jIG9uQWZ0ZXJCaW5kaW5nKGNvbnRleHQ6IENvbnRleHQgfCBudWxsKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKGNvbnRleHQpIHtcblx0XHRcdC8vIHVzZSBpbnRlcm5hbCBtb2RlbCBiZWNhdXNlIHdlIGhhdmUgdG8gdXNlIHRoaXMgaW5mb3JtYXRpb24gYWNyb3NzIHRoZSBhcHBsaWNhdGlvbiBmb3IgZGlmZmVyZW50IGluc3RhbmNlcy5cblx0XHRcdGNvbnN0IGludGVybmFsTW9kZWwgPSB0aGlzLmJhc2UuZ2V0VmlldygpLmdldE1vZGVsKFwiaW50ZXJuYWxcIik7XG5cdFx0XHRjb25zdCBpc1JlY29tbWVuZGF0aW9uRW5hYmxlZCA9IGludGVybmFsTW9kZWwuZ2V0UHJvcGVydHkoXCIvaXNSZWNvbW1lbmRhdGlvbkVuYWJsZWRcIik7XG5cdFx0XHQvLyBvbkFmdGVyIGJpbmRpbmcgaXMgY2FsbGVkIGZvciBhbGwgY29udGV4dHNcblx0XHRcdC8vIGJ1dCB3ZSBkbyBub3QgbmVlZCB0byBjYWxsIHRoZSBpc0VuYWJsZWQgaG9vayBhbGwgdGhlIHRpbWVcblx0XHRcdC8vIHNvIGNoZWNrIGlmIHJlY29tbWVuZGF0aW9uIGVuYWJsZWQgaXMgYWxyZWFkeSBhdmFpbGFibGVcblx0XHRcdGNvbnN0IHJvb3RDb250ZXh0ID0gYXdhaXQgdGhpcy5fZ2V0Um9vdENvbnRleHQoY29udGV4dCBhcyBPRGF0YVY0Q29udGV4dCk7XG5cdFx0XHRpZiAocm9vdENvbnRleHQpIHtcblx0XHRcdFx0dGhpcy5yZWNvbW1lbmRhdGlvbkVuYWJsZWRQcm9taXNlID1cblx0XHRcdFx0XHRpc1JlY29tbWVuZGF0aW9uRW5hYmxlZCA9PT0gdW5kZWZpbmVkXG5cdFx0XHRcdFx0XHQ/IHRoaXMuYmFzZS5yZWNvbW1lbmRhdGlvbnMuaXNFbmFibGVkKHJvb3RDb250ZXh0KS50aGVuKChpc0VuYWJsZWQpID0+IHtcblx0XHRcdFx0XHRcdFx0XHQvLyBzdG9yZSB0aGUgcmVzdWx0IG9mIHJlY29tbWVuZGF0aW9uIGVuYWJsZWQgZm9yIGxhdGVyIHVzZVxuXHRcdFx0XHRcdFx0XHRcdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoXCIvaXNSZWNvbW1lbmRhdGlvbkVuYWJsZWRcIiwgaXNFbmFibGVkKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaXNFbmFibGVkO1xuXHRcdFx0XHRcdFx0ICB9KVxuXHRcdFx0XHRcdFx0OiBQcm9taXNlLnJlc29sdmUoaXNSZWNvbW1lbmRhdGlvbkVuYWJsZWQpO1xuXG5cdFx0XHRcdHRoaXMudHJ5UmVzZXRSZWNvbW1lbmRhdGlvbnMocm9vdENvbnRleHQgYXMgT0RhdGFWNENvbnRleHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgX2dldFJvb3RDb250ZXh0KGNvbnRleHQ6IE9EYXRhVjRDb250ZXh0KTogUHJvbWlzZTxDb250ZXh0IHwgdW5kZWZpbmVkPiB7XG5cdFx0Y29uc3QgcHJvZ3JhbW1pbmdNb2RlbCA9IFRyYW5zYWN0aW9uSGVscGVyLmdldFByb2dyYW1taW5nTW9kZWwoY29udGV4dCk7XG5cdFx0cmV0dXJuIENvbW1vblV0aWxzLmNyZWF0ZVJvb3RDb250ZXh0KHByb2dyYW1taW5nTW9kZWwsIHRoaXMuYmFzZS5nZXRWaWV3KCksIHRoaXMuYmFzZS5nZXRBcHBDb21wb25lbnQoKSk7XG5cdH1cblx0LyoqXG5cdCAqIENsZWFyIGFsbCByZWNvbW1lbmRhdGlvbnMgY3VycmVudGx5IGF2YWlsYWJsZSBvbiB0aGUgVUkuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRwdWJsaWMgY2xlYXJSZWNvbW1lbmRhdGlvbnMoKTogdm9pZCB7XG5cdFx0Y29uc3QgYmluZGluZ0NvbnRleHQgPSB0aGlzLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdGlmIChiaW5kaW5nQ29udGV4dCkge1xuXHRcdFx0cmVjb21tZW5kYXRpb25IZWxwZXIuY2xlYXJSZWNvbW1lbmRhdGlvbnModGhpcy5nZXRWaWV3KCksIGJpbmRpbmdDb250ZXh0KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2sgaWYgcmVjb21tZW5kYXRpb25zIGFyZSBlbmFibGVkIG9yIG5vdC5cblx0ICpcblx0ICogQHBhcmFtIF9yb290Q29udGV4dCBUaGUgcm9vdCBlbnRpdHkgY29udGV4dFxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHJlY29tbWVuZGF0aW9uIGlzIGVuYWJsZWQuIEZhbHNlIGlmIHJlY29tbWVuZGF0aW9uIGlzIGRpc2FibGVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uSW5zdGVhZClcblx0cHVibGljIGFzeW5jIGlzRW5hYmxlZChfcm9vdENvbnRleHQ6IENvbnRleHQpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBNZXRob2QgcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyByZWNvbW1lbmRhdGlvbiBpcyBlbmFibGVkIG9yIG5vdC4gSW4gY2FzZSBjYWxsZWQgYmVmb3JlXG5cdCAqIHRoZSBlbmFibGVtZW50IGNoZWNrIGlzIGNvbXBsZXRlZCwgbWV0aG9kIHdpbGwgcmV0dXJuIGZhbHNlIHdoaWNoIGlzIHRoZSBkZWZhdWx0IHZhbHVlLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHJlY29tbWVuZGF0aW9uIGlzIGVuYWJsZWQgZWxzZSBmYWxzZS5cblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgaXNSZWNvbW1lbmRhdGlvbkVuYWJsZWQoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKTtcblx0XHRyZXR1cm4gISFpbnRlcm5hbE1vZGVsPy5nZXRQcm9wZXJ0eShcIi9pc1JlY29tbWVuZGF0aW9uRW5hYmxlZFwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGZXRjaCB0aGUgcmVjb21tZW5kYXRpb24gZm9yIGEgc3BlY2lmaWMgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIGNvbnRleHQgVGhlIGNvbnRleHQgdGhhdCBzaGFsbCBiZSBjb25zaWRlcmVkIHdoZW4gZmV0Y2hpbmcgcmVjb21tZW5kYXRpb25zXG5cdCAqIEBwYXJhbSBfcm9vdENvbnRleHQgVGhlIHJvb3QgZW50aXR5IGNvbnRleHRcblx0ICogQHJldHVybnMgVGhlIHJlY29tbWVuZGF0aW9uIGVudHJpZXNcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkluc3RlYWQpXG5cdHB1YmxpYyBhc3luYyBmZXRjaFJlY29tbWVuZGF0aW9ucyhfY29udGV4dDogT0RhdGFWNENvbnRleHRbXSwgX3Jvb3RDb250ZXh0PzogQ29udGV4dCk6IFByb21pc2U8U3RhbmRhcmRSZWNvbW1lbmRhdGlvblJlc3BvbnNlW10+IHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGZXRjaCB0aGUgcmVjb21tZW5kYXRpb25zIGFuZCBhcHBseSB0aGVtIG9uIHRoZSBVSS5cblx0ICpcblx0ICogQHBhcmFtIGN1cnJlbnRDb250ZXh0c0luZm8gQ29udGV4dHMgSW5mbyB0aGF0IGNvbnRhaW5zIHRoZSBjb250ZXh0IHRoYXQgc2hhbGwgYmUgY29uc2lkZXJlZCB3aGVuIGZldGNoaW5nIHJlY29tbWVuZGF0aW9ucyBhbG9uZyB3aXRoIGNvbnRleHRJZGVudGlmaWVyXG5cdCAqIEBwYXJhbSBjb25zaWRlck9ubHlOZXdDb250ZXh0IEJvb2xlYW4gcHJvcGVydHkgaW5kaWNhdGluZyBSZWNvbW1lbmRhdGlvblxuXHQgKiBzaG91bGQgYmUgZmV0Y2hlZCBvbmx5IGZvciB0aGUgbmV3IGNvbnRleHRzIHdpdGggbm8gcmVjb21tZW5kYXRpb24gZmV0Y2ggY2FsbCBzbyBmYXJcblx0ICogQHJldHVybnMgYHRydWVgIGlmIHRoZSByZWNvbW1lbmRhdGlvbiB3ZXJlIGZldGNoZWQgYW5kIGFwcGxpZWQgY29ycmVjdGx5XG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0cHVibGljIGFzeW5jIGZldGNoQW5kQXBwbHlSZWNvbW1lbmRhdGlvbnMoXG5cdFx0Y3VycmVudENvbnRleHRzSW5mbzogUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm9bXSxcblx0XHRjb25zaWRlck9ubHlOZXdDb250ZXh0PzogYm9vbGVhblxuXHQpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0XHRsZXQgaXNTdWNjZXNzID0gZmFsc2U7XG5cdFx0Y29uc3QgaXNSZWNvbW1lbmRhdGlvbkVuYWJsZWQgPSBhd2FpdCB0aGlzLnJlY29tbWVuZGF0aW9uRW5hYmxlZFByb21pc2U7XG5cdFx0aWYgKGlzUmVjb21tZW5kYXRpb25FbmFibGVkKSB7XG5cdFx0XHRjb25zdCBjb250ZXh0c0luZm86IFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvW10gPSBjb25zaWRlck9ubHlOZXdDb250ZXh0XG5cdFx0XHRcdD8gc3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlci5nZXRDb250ZXh0c1dpdGhOb1JlY29tbWVuZGF0aW9ucyhjdXJyZW50Q29udGV4dHNJbmZvKVxuXHRcdFx0XHQ6IGN1cnJlbnRDb250ZXh0c0luZm87XG5cdFx0XHRjb25zdCBjb250ZXh0czogT0RhdGFWNENvbnRleHRbXSA9IGNvbnRleHRzSW5mby5tYXAoKGNvbnRleHRJbmZvOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mbykgPT4gY29udGV4dEluZm8uY29udGV4dCk7XG5cdFx0XHRpZiAoY29udGV4dHMgJiYgY29udGV4dHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGNvbnN0IHJvb3RDb250ZXh0ID0gYXdhaXQgdGhpcy5fZ2V0Um9vdENvbnRleHQoY29udGV4dHNbMF0pO1xuXHRcdFx0XHRcdGNvbnN0IHJlY29tbWVuZGF0aW9uRGF0YSA9IGF3YWl0IHRoaXMuYmFzZS5yZWNvbW1lbmRhdGlvbnMuZmV0Y2hSZWNvbW1lbmRhdGlvbnMoY29udGV4dHMsIHJvb3RDb250ZXh0KTtcblx0XHRcdFx0XHQvLyBuZWVkIHRvIHZhbGlkYXRlIHRoYXQgdGhlIHJlc3BvbnNlIGlzIHByb3Blcmx5IGZvcm1hdHRlZFxuXHRcdFx0XHRcdGlzU3VjY2VzcyA9IHRoaXMuYXBwbHlSZWNvbW1lbmRhdGlvbihyZWNvbW1lbmRhdGlvbkRhdGEsIGNvbnRleHRzKTtcblx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdExvZy5lcnJvcihcIlRoZXJlIHdhcyBhbiBlcnJvciBmZXRjaGluZyB0aGUgcmVjb21tZW5kYXRpb25zXCIsIGUgYXMgRXJyb3IpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnN0b3JlUmVjb21tZW5kYXRpb25Db250ZXh0cyhjdXJyZW50Q29udGV4dHNJbmZvKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaXNTdWNjZXNzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZldGNoIHRoZSByZWNvbW1lbmRhdGlvbnMgb24gZmllbGQgY2hhbmdlIGFuZCBhcHBseSB0aGVtIG9uIHRoZSBVSS5cblx0ICpcblx0ICogQHBhcmFtIGZpZWxkIFRoZSBjaGFuZ2VkIGZpZWxkLlxuXHQgKiBAcGFyYW0gY29udGV4dEluZm8gQ29udGV4dEluZm8gdGhhdCBjb250YWlucyB0aGUgY29udGV4dCB0aGF0IHNoYWxsIGJlIGNvbnNpZGVyZWQgd2hlbiBmZXRjaGluZyByZWNvbW1lbmRhdGlvbnMgYWxvbmcgd2l0aCBjb250ZXh0SWRlbnRpZmllclxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHJlY29tbWVuZGF0aW9uIHdlcmUgZmV0Y2hlZCBhbmQgYXBwbGllZCBjb3JyZWN0bHlcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRwdWJsaWMgYXN5bmMgZmV0Y2hBbmRBcHBseVJlY29tbWVuZGF0aW9uc09uRmllbGRDaGFuZ2UoZmllbGQ6IENvbnRyb2wsIGNvbnRleHRJbmZvOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mb1tdKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5iYXNlLmdldEFwcENvbXBvbmVudCgpO1xuXHRcdGNvbnN0IGlzRmllbGRSZWNvbW1lbmRhdGlvblJlbGV2YW50ID0gYXBwQ29tcG9uZW50LmdldFNpZGVFZmZlY3RzU2VydmljZSgpLmNoZWNrSWZGaWVsZElzUmVjb21tZW5kYXRpb25SZWxldmFudChmaWVsZCk7XG5cblx0XHRpZiAoaXNGaWVsZFJlY29tbWVuZGF0aW9uUmVsZXZhbnQpIHtcblx0XHRcdHJldHVybiB0aGlzLmZldGNoQW5kQXBwbHlSZWNvbW1lbmRhdGlvbnMoY29udGV4dEluZm8pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGZpbHRlcmVkIHJlY29tbWVuZGF0aW9ucyBmcm9tIHBhc3NlZCByZWNvbW1lbmRhdGlvbnMgYW5kIHRoZW4gYmFzZWQgb24gaXQgd2UgZWl0aGVyIHNob3cgdGhlIGZpbHRlcmVkIHJlY29tbWVuZGF0aW9ucyBvciBub3Qgc2hvdyB0aGUgQWNjZXB0IGFsbCBEaWFsb2cgaWYgdGhlcmUgYXJlIG5vIHJlY29tbWVuZGF0aW9ucy5cblx0ICogQHBhcmFtIF9wYXJhbXMgUGFyYW1zIG9iamVjdCBjb250YWluaW5nIHJlY29tbWVuZGF0aW9uRGF0YSBwcm9wZXJ0eSB3aGljaCBpcyBhbiBhcnJheSBvZiBvYmplY3RzIGNvbnRhaW5pbmcgY29udGV4dCwgcHJvcGVydHlQYXRoLCB2YWx1ZSBhbmQgdGV4dCBmb3IgYSByZWNvbW1lbmRhdGlvblxuXHQgKiBAcmV0dXJucyBQcm9taXNlXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoXCJBZnRlckFzeW5jXCIpXG5cdHB1YmxpYyBhc3luYyBvbkJlZm9yZUFjY2VwdFJlY29tbWVuZGF0aW9ucyhfcGFyYW1zOiBBY2NlcHRBbGxQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHQvL2RvIG5vdGhpbmdcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7IC8vaGFkIHRvIGRvIHRoaXMgYmVjYXVzZSBvZiBlc2xpbnQgZXJyb3Igb2Ygbm90IGhhdmluZyBhd2FpdCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBhc3luY1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGFjY2VwdGluZyB0aGUgcmVjb21tZW5kYXRpb25zLlxuXHQgKiBAcGFyYW0gX3BhcmFtcyBQYXJhbXMgb2JqZWN0IGNvbnRhaW5pbmcgcmVjb21tZW5kYXRpb25EYXRhIHByb3BlcnR5IHdoaWNoIGlzIGFuIGFycmF5IG9mIG9iamVjdHMgY29udGFpbmluZyBjb250ZXh0LCBwcm9wZXJ0eVBhdGgsIHZhbHVlIGFuZCB0ZXh0IGZvciBhIHJlY29tbWVuZGF0aW9uXG5cdCAqIEByZXR1cm5zIFByb21pc2Ugd2hpY2ggcmVzb2x2ZWQgdG8gYSBCb29sZWFuIHZhbHVlIGJhc2VkIG9uIHdoZXRoZXIgcmVjb21tZW5kYXRpb25zIGFyZSBhY2NlcHRlZCBvciBub3Rcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkKVxuXHRwdWJsaWMgYXN5bmMgYWNjZXB0UmVjb21tZW5kYXRpb25zKF9wYXJhbXM6IEFjY2VwdEFsbFBhcmFtcyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdC8vZG8gbm90aGluZ1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7IC8vaGFkIHRvIGRvIHRoaXMgYmVjYXVzZSBvZiBlc2xpbnQgZXJyb3Igb2Ygbm90IGhhdmluZyBhd2FpdCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBhc3luY1xuXHR9XG5cdHByaXZhdGUgYXBwbHlSZWNvbW1lbmRhdGlvbihyZWNvbW1lbmRhdGlvblJlc3BvbnNlczogU3RhbmRhcmRSZWNvbW1lbmRhdGlvblJlc3BvbnNlW10sIF9jb250ZXh0OiBPRGF0YVY0Q29udGV4dFtdKTogYm9vbGVhbiB7XG5cdFx0c3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlci5zdG9yZVJlY29tbWVuZGF0aW9ucyhcblx0XHRcdHJlY29tbWVuZGF0aW9uUmVzcG9uc2VzLFxuXHRcdFx0dGhpcy5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWwsXG5cdFx0XHRfY29udGV4dFxuXHRcdCk7XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTdG9yZXMgdGhlIHJlY29tbWVuZGF0aW9uIGNvbnRleHRzLlxuXHQgKlxuXHQgKiBAcGFyYW0gY29udGV4dHNJbmZvXG5cdCAqL1xuXHRwcml2YXRlIHN0b3JlUmVjb21tZW5kYXRpb25Db250ZXh0cyhjb250ZXh0c0luZm86IFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvW10pOiB2b2lkIHtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsID0gdGhpcy5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdFx0Y29uc3QgY29udGV4dFBhdGhzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGxldCByZWNvbW1lbmRhdGlvbkNvbnRleHRzID0gaW50ZXJuYWxNb2RlbC5nZXRQcm9wZXJ0eShcIi9yZWNvbW1lbmRhdGlvbkNvbnRleHRzXCIpIHx8IFtdO1xuXHRcdGNvbnRleHRzSW5mby5mb3JFYWNoKChjb250ZXh0SW5mbzogUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm8pID0+IHtcblx0XHRcdGNvbnRleHRQYXRocy5wdXNoKGNvbnRleHRJbmZvLmNvbnRleHQuZ2V0UGF0aCgpKTtcblx0XHR9KTtcblxuXHRcdHJlY29tbWVuZGF0aW9uQ29udGV4dHMgPSByZWNvbW1lbmRhdGlvbkNvbnRleHRzPy5maWx0ZXIoKHJlY29tbWVuZGF0aW9uQ29udGV4dDogUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm8pID0+IHtcblx0XHRcdGNvbnN0IGNvbnRleHQgPSByZWNvbW1lbmRhdGlvbkNvbnRleHQ/LmNvbnRleHQ7XG5cdFx0XHRpZiAoY29udGV4dCkge1xuXHRcdFx0XHRjb25zdCBjb250ZXh0UGF0aCA9IGNvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdFx0XHRjb25zdCBpbmRleCA9IGNvbnRleHRQYXRocy5pbmRleE9mKGNvbnRleHRQYXRoKTtcblx0XHRcdFx0aWYgKGluZGV4IDwgMCkge1xuXHRcdFx0XHRcdC8vIEV4aXN0aW5nIGNvbnRleHQgcGF0aCBpcyBub3QgZm91bmQgaW4gdGhlIG5ld2x5IGZldGNoZWQgcmVjb21tZW5kYXRpb24gJiB0aGVyZWZvcmUgZG9uJ3QgZG8gYW55dGhpbmdcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIGlmIChyZWNvbW1lbmRhdGlvbkNvbnRleHQuY29udGV4dElkZW50aWZpZXIpIHtcblx0XHRcdFx0XHQvLyBFeGlzdGluZyBjb250ZXh0IHBhdGggaXMgZm91bmQuIHdlIHRyeSB0byB1cGRhdGUgdGhlIGNvbnRleHRJbmZvIHdpdGggdGhlIGxhdGVzdCBjb250ZXh0XG5cdFx0XHRcdFx0Ly8gaW5zdGVhZCBvZiBvdXRkYXRlZCBvbmVcblx0XHRcdFx0XHRjb250ZXh0c0luZm9baW5kZXhdLmNvbnRleHRJZGVudGlmaWVyID0gcmVjb21tZW5kYXRpb25Db250ZXh0LmNvbnRleHRJZGVudGlmaWVyO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSk7XG5cblx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KFwiL3JlY29tbWVuZGF0aW9uQ29udGV4dHNcIiwgWy4uLnJlY29tbWVuZGF0aW9uQ29udGV4dHMsIC4uLmNvbnRleHRzSW5mb10pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZpbHRlcnMgdGhlIGNvbnRleHRzIGFuZCBvbmx5IHJldHVybnMgdGhvc2UgdGhhdCBtYXRjaGVzIHRoZSBjb250ZXh0cy5cblx0ICpcblx0ICogQHBhcmFtIHRhcmdldHNcblx0ICogQHJldHVybnMgUmV0dXJucyB0aGUgZmlsdGVyZWQgcmVjb21tZW5kYXRpb24gcmVsZXZhbnQgY29udGV4dHNcblx0ICovXG5cdHByaXZhdGUgZmV0Y2hGaWx0ZXJlZFJlY29tbWVuZGF0aW9uQ29udGV4dHModGFyZ2V0czogc3RyaW5nW10pOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mb1tdIHtcblx0XHRjb25zdCBjb250ZXh0UGF0aHM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3QgZmlsdGVyZWRSZWNvbW1lbmRhdGlvbkNvbnRleHRzOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mb1tdID0gW107XG5cdFx0Zm9yIChjb25zdCBrZXkgb2YgdGFyZ2V0cykge1xuXHRcdFx0Y29uc3QgY29udGV4dFBhdGhGcm9tS2V5ID0ga2V5LnN1YnN0cmluZygwLCBrZXkubGFzdEluZGV4T2YoXCIpXCIpICsgMSk7XG5cdFx0XHRjb25zdCByZWNvbW1lbmRhdGlvbkNvbnRleHRzID0gKHRoaXMuZ2V0VmlldygpLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsKS5nZXRQcm9wZXJ0eShcIi9yZWNvbW1lbmRhdGlvbkNvbnRleHRzXCIpO1xuXHRcdFx0cmVjb21tZW5kYXRpb25Db250ZXh0cy5mb3JFYWNoKChjb250ZXh0SW5mbzogUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm8pID0+IHtcblx0XHRcdFx0Y29uc3QgY29udGV4dCA9IGNvbnRleHRJbmZvLmNvbnRleHQ7XG5cdFx0XHRcdGlmIChjb250ZXh0LmdldFBhdGgoKSA9PSBjb250ZXh0UGF0aEZyb21LZXkgJiYgIWNvbnRleHRQYXRocy5pbmNsdWRlcyhjb250ZXh0UGF0aEZyb21LZXkpKSB7XG5cdFx0XHRcdFx0Y29udGV4dFBhdGhzLnB1c2goY29udGV4dFBhdGhGcm9tS2V5KTtcblx0XHRcdFx0XHRmaWx0ZXJlZFJlY29tbWVuZGF0aW9uQ29udGV4dHMucHVzaChjb250ZXh0SW5mbyk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gZmlsdGVyZWRSZWNvbW1lbmRhdGlvbkNvbnRleHRzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZldGNoZXMgUmVjb21tZW5kYXRpb25EYXRhIGJhc2VkIG9uIGZpbHRlcmVkIHRhcmdldHMuXG5cdCAqXG5cdCAqIEBwYXJhbSBmaWx0ZXJlZFRhcmdldHNcblx0ICogQHJldHVybnMgUmVjb21tZW5kYXRpb25EYXRhXG5cdCAqL1xuXHRwcml2YXRlIGZldGNoRmlsdGVyZWRSZWNvbW1lbmRhdGlvbkRhdGEoZmlsdGVyZWRUYXJnZXRzOiBzdHJpbmdbXSk6IFJlY29tbWVuZGF0aW9uSW5mbyB7XG5cdFx0Y29uc3QgZmlsdGVyUmVjb21tZW5kYXRpb25zRGF0YTogUmVjb21tZW5kYXRpb25JbmZvID0ge307XG5cdFx0Y29uc3QgcmVjb21tZW5kYXRpb25EYXRhID0gdGhpcy5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKT8uZ2V0UHJvcGVydHkoXCIvcmVjb21tZW5kYXRpb25zRGF0YVwiKTtcblx0XHRPYmplY3Qua2V5cyhyZWNvbW1lbmRhdGlvbkRhdGEpLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG5cdFx0XHRpZiAoZmlsdGVyZWRUYXJnZXRzLmluY2x1ZGVzKGtleSkpIHtcblx0XHRcdFx0ZmlsdGVyUmVjb21tZW5kYXRpb25zRGF0YVtrZXldID0gT2JqZWN0LmFzc2lnbihyZWNvbW1lbmRhdGlvbkRhdGFba2V5XSwge30pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiBmaWx0ZXJSZWNvbW1lbmRhdGlvbnNEYXRhO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZldGNoZXMgdGhlIGZpbHRlcmVkIHRhcmdldHMuXG5cdCAqXG5cdCAqIEByZXR1cm5zIEFycmF5IG9mIEZpbHRlcmVkIHRhcmdldHNcblx0ICovXG5cdHByaXZhdGUgZmV0Y2hUYXJnZXRzKCk6IHN0cmluZ1tdIHtcblx0XHRjb25zdCByZWNvbW1lbmRhdGlvbkRhdGEgPSB0aGlzLmdldFZpZXcoKS5nZXRNb2RlbChcImludGVybmFsXCIpPy5nZXRQcm9wZXJ0eShcIi9yZWNvbW1lbmRhdGlvbnNEYXRhXCIpO1xuXHRcdGlmIChyZWNvbW1lbmRhdGlvbkRhdGEudmVyc2lvbiA9PT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIFtdO1xuXHRcdH1cblx0XHRyZXR1cm4gKFxuXHRcdFx0T2JqZWN0LmtleXMocmVjb21tZW5kYXRpb25EYXRhKS5maWx0ZXIoKGtleTogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdHJldHVybiBrZXkgIT09IFwidmVyc2lvblwiICYmIGtleS5pbmNsdWRlcyh0aGlzLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQYXRoKCkgYXMgc3RyaW5nKTtcblx0XHRcdH0pIHx8IFtdXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBPdmVyd3JpdGVzIEFjY2VwdEFsbCBQYXJhbXMgYmFzZWQgb2YgcmVjb21tZW5kYXRpb24gZGF0YSBhbmQgY29udGV4dHMuXG5cdCAqXG5cdCAqIEBwYXJhbSBmaWx0ZXJSZWNvbW1lbmRhdGlvbkRhdGFcblx0ICogQHBhcmFtIGZpbHRlclJlY29tbWVuZGF0aW9uQ29udGV4dHNcblx0ICogQHBhcmFtIHBhcmFtc1xuXHQgKi9cblx0cHJpdmF0ZSBhZGp1c3RBY2NlcHRBbGxQYXJhbXMoXG5cdFx0ZmlsdGVyUmVjb21tZW5kYXRpb25EYXRhOiBSZWNvbW1lbmRhdGlvbkluZm8sXG5cdFx0ZmlsdGVyUmVjb21tZW5kYXRpb25Db250ZXh0czogUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm9bXSxcblx0XHRwYXJhbXM6IEFjY2VwdEFsbFBhcmFtc1xuXHQpOiB2b2lkIHtcblx0XHRwYXJhbXMucmVjb21tZW5kYXRpb25EYXRhID0gW107XG5cdFx0Zm9yIChjb25zdCBrZXkgaW4gZmlsdGVyUmVjb21tZW5kYXRpb25EYXRhKSB7XG5cdFx0XHRpZiAoZmlsdGVyUmVjb21tZW5kYXRpb25EYXRhW2tleV0udmFsdWUgfHwgZmlsdGVyUmVjb21tZW5kYXRpb25EYXRhW2tleV0udGV4dCkge1xuXHRcdFx0XHQvLyBJbiBjYXNlIHRoZXJlIGlzIG5vIHBsYWNlaG9sZGVyIHZhbHVlIG9yIHBsYWNlaG9sZGVyIHRleHQgdGhlbiB0aGlzIHJlY29tbWVuZGF0aW9uIGlzIG5vdCByZWxldmFudCBmb3IgQWNjZXB0LlxuXHRcdFx0XHQvLyBVc2VyIG5lZWRzIHRvIG1hbnVhbGx5IHNlbGVjdCB0aGUgcmVjb21tZW5kZWQgdmFsdWUgaW4gdGhlc2UgY2FzZXMgJiB0aGVyZWZvcmUgZmlsdGVyIHRoZSBzYW1lLlxuXHRcdFx0XHRjb25zdCBjb250ZXh0UGF0aEZyb21LZXkgPSBrZXkuc3Vic3RyaW5nKDAsIGtleS5sYXN0SW5kZXhPZihcIilcIikgKyAxKTtcblx0XHRcdFx0Y29uc3QgcHJvcGVydHlQYXRoRnJvbUtleSA9IGtleS5zdWJzdHJpbmcoa2V5Lmxhc3RJbmRleE9mKFwiKVwiKSArIDIpO1xuXHRcdFx0XHRjb25zdCBtYXRjaGluZ0NvbnRleHQgPSBmaWx0ZXJSZWNvbW1lbmRhdGlvbkNvbnRleHRzLmZpbHRlcihmdW5jdGlvbiAoY29udGV4dEluZm8pIHtcblx0XHRcdFx0XHRpZiAoY29udGV4dEluZm8uY29udGV4dC5nZXRQYXRoKCkgPT09IGNvbnRleHRQYXRoRnJvbUtleSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdG1hdGNoaW5nQ29udGV4dD8ubGVuZ3RoID4gMCAmJlxuXHRcdFx0XHRcdHN0YW5kYXJkUmVjb21tZW5kYXRpb25IZWxwZXIuaXNSZWNvbW1lbmRhdGlvbkZpZWxkTnVsbChtYXRjaGluZ0NvbnRleHRbMF0uY29udGV4dCwga2V5LCBwcm9wZXJ0eVBhdGhGcm9tS2V5KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRwYXJhbXMucmVjb21tZW5kYXRpb25EYXRhLnB1c2goe1xuXHRcdFx0XHRcdFx0Y29udGV4dDogbWF0Y2hpbmdDb250ZXh0WzBdLmNvbnRleHQsXG5cdFx0XHRcdFx0XHRjb250ZXh0SWRlbnRpZmllcjogbWF0Y2hpbmdDb250ZXh0WzBdLmNvbnRleHRJZGVudGlmaWVyLFxuXHRcdFx0XHRcdFx0cHJvcGVydHlQYXRoOiBwcm9wZXJ0eVBhdGhGcm9tS2V5LFxuXHRcdFx0XHRcdFx0dmFsdWU6IGZpbHRlclJlY29tbWVuZGF0aW9uRGF0YVtrZXldLnZhbHVlLFxuXHRcdFx0XHRcdFx0dGV4dDogZmlsdGVyUmVjb21tZW5kYXRpb25EYXRhW2tleV0udGV4dFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEZldGNoZXMgUmVjb21tZW5kYXRpb25JbmZvIHRoYXQgY29udGFpbnMgdGFyZ2V0cywgZmlsdGVyUmVjb21tZW5kYXRpb25EYXRhLCBmaWx0ZXJSZWNvbW1lbmRhdGlvbkNvbnRleHRzLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHdoaWNoIHJlc29sdmVzIHdpdGggQWNjZXB0YWxsUGFyYW1zXG5cdCAqL1xuXHRwdWJsaWMgYXN5bmMgZmV0Y2hBY2NlcHRBbGxQYXJhbXMoKTogUHJvbWlzZTxBY2NlcHRBbGxQYXJhbXM+IHtcblx0XHRjb25zdCB0YXJnZXRzOiBzdHJpbmdbXSA9IHRoaXMuZmV0Y2hUYXJnZXRzKCk7XG5cdFx0Y29uc3QgZmlsdGVyUmVjb21tZW5kYXRpb25EYXRhID0gdGhpcy5mZXRjaEZpbHRlcmVkUmVjb21tZW5kYXRpb25EYXRhKHRhcmdldHMpO1xuXHRcdGNvbnN0IGZpbHRlclJlY29tbWVuZGF0aW9uQ29udGV4dHMgPSB0aGlzLmZldGNoRmlsdGVyZWRSZWNvbW1lbmRhdGlvbkNvbnRleHRzKHRhcmdldHMpO1xuXHRcdGNvbnN0IHBhcmFtcyA9IHt9O1xuXHRcdHRoaXMuYWRqdXN0QWNjZXB0QWxsUGFyYW1zKGZpbHRlclJlY29tbWVuZGF0aW9uRGF0YSwgZmlsdGVyUmVjb21tZW5kYXRpb25Db250ZXh0cywgcGFyYW1zKTtcblx0XHRhd2FpdCAodGhpcy5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyKS5yZWNvbW1lbmRhdGlvbnMub25CZWZvcmVBY2NlcHRSZWNvbW1lbmRhdGlvbnMocGFyYW1zKTtcblx0XHRzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyLmFkZENvbnRleHRJZGVudGlmaWVyVGV4dChwYXJhbXMpO1xuXHRcdHJldHVybiBwYXJhbXM7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHJlY29tbWVuZGF0aW9ucyBleGlzdCBvciBub3QuXG5cdCAqXG5cdCAqIEByZXR1cm5zIEJvb2xlYW4gdmFsdWUgYmFzZWQgb24gd2hldGhlciByZWNvbW1lbmRhdGlvbnMgYXJlIHByZXNlbnQgb3Igbm90XG5cdCAqL1xuXHRwdWJsaWMgY2hlY2tJZlJlY29tbWVuZGF0aW9uc0V4aXN0KCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHJlY29tbWVuZGF0aW9uRGF0YSA9ICh0aGlzLmdldFZpZXcoKS5nZXRNb2RlbChcImludGVybmFsXCIpIGFzIEpTT05Nb2RlbCkuZ2V0UHJvcGVydHkoXCIvcmVjb21tZW5kYXRpb25zRGF0YVwiKSB8fCB7fTtcblx0XHRyZXR1cm4gT2JqZWN0LmtleXMocmVjb21tZW5kYXRpb25EYXRhKS5sZW5ndGggIT09IDA7XG5cdH1cblxuXHRwdWJsaWMgY2xlYXJSZWNvbW1lbmRhdGlvbkZvckNvbnRleHRzKGNvbnRleHRzPzogT0RhdGFWNENvbnRleHRbXSwgY2xlYXJGb3JDaGlsZHJlbj86IGJvb2xlYW4pOiBib29sZWFuIHtcblx0XHRjb25zdCB2aWV3ID0gdGhpcy5nZXRWaWV3KCk7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IHZpZXcuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdFx0aWYgKCFjb250ZXh0cyB8fCAhY29udGV4dHMubGVuZ3RoKSB7XG5cdFx0XHRjb25zdCBiaW5kaW5nQ29udGV4dCA9IHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBPRGF0YVY0Q29udGV4dDtcblx0XHRcdGNvbnRleHRzID0gW2JpbmRpbmdDb250ZXh0XTtcblx0XHR9XG5cdFx0bGV0IHJlY29tbWVuZGF0aW9uQ29udGV4dHM6IFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvW10gPSBpbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KFwiL3JlY29tbWVuZGF0aW9uQ29udGV4dHNcIikgfHwgW107XG5cdFx0aWYgKHN0YW5kYXJkUmVjb21tZW5kYXRpb25IZWxwZXIuY2xlYXJSZWNvbW1lbmRhdGlvbkZvckNvbnRleHRzKGNvbnRleHRzLCBpbnRlcm5hbE1vZGVsLCBjbGVhckZvckNoaWxkcmVuKSkge1xuXHRcdFx0Y29udGV4dHMuZm9yRWFjaCgoY29udGV4dDogT0RhdGFWNENvbnRleHQpID0+IHtcblx0XHRcdFx0cmVjb21tZW5kYXRpb25Db250ZXh0cyA9IHJlY29tbWVuZGF0aW9uQ29udGV4dHMuZmlsdGVyKChjb250ZXh0SW5mbzogUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm8pID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gY29udGV4dEluZm8/LmNvbnRleHQuZ2V0UGF0aCgpICE9PSBjb250ZXh0LmdldFBhdGgoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRcdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoXCIvcmVjb21tZW5kYXRpb25Db250ZXh0c1wiLCByZWNvbW1lbmRhdGlvbkNvbnRleHRzKTtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHByaXZhdGUgdHJ5UmVzZXRSZWNvbW1lbmRhdGlvbnMocm9vdENvbnRleHQ6IE9EYXRhVjRDb250ZXh0KTogdm9pZCB7XG5cdFx0c3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlci5zZXRDdXJyZW50Um9vdENvbnRleHQocm9vdENvbnRleHQpO1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWwgPSB0aGlzLmdldFZpZXcoKS5nZXRNb2RlbChcImludGVybmFsXCIpIGFzIEpTT05Nb2RlbDtcblx0XHQvLyBUT0RPOiBTdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyIHN0b3JlcyBhbGwgdGhlIHJlY29tbWVuZGF0aW9ucyBmb3IgYW4gaW5zdGFuY2Ugb2YgYnVzaW5lc3Mgb2JqZWN0XG5cdFx0Ly8gbWVhbmluZyBkb2Vzbid0IG1hdHRlciB0aGUgcmVjb21tZW5kYXRpb25zIGFyZSBvbiB0aGUgT1AvU3ViT1AuIEJ1dCB0aGUgcmVjb21tZW5kYXRpb25zIGNvbnRleHRzIGhlcmVcblx0XHQvLyBpcyBzcGVjaWZpYyB0byB0aGlzIGNvbnRyb2xsZXIsIFN1Yk9QIGNvbnRyb2xsZXIgd2lsbCBoYXZlIGl0cyBvd24gcmVjb21tZW5kYXRpb24gY29udGV4dHMuIElkZWFsbHkgaXRcblx0XHQvLyBzaG91bGQgYmUgY2xlYXJlZCBidXQgdGhpcyBpcyBub3QgZG9uZSBoZXJlLiBUaGlzIGNvbXBsZXRlIHRoaW5nIG5lZWRzIHRvIGJlIHJlZmFjdG9yZWRcblx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KFwiL3JlY29tbWVuZGF0aW9uQ29udGV4dHNcIiwgW10pO1xuXHRcdHN0YW5kYXJkUmVjb21tZW5kYXRpb25IZWxwZXIucmVzZXRSZWNvbW1lbmRhdGlvbnMoaW50ZXJuYWxNb2RlbCk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7OztNQWlDcUJBLGVBQWUsV0FEbkNDLGNBQWMsQ0FBQyxrREFBa0QsQ0FBQyxVQVVqRUMsY0FBYyxFQUFFLFVBS2hCQSxjQUFjLENBQUMsVUFBVSxDQUFDLFVBa0MxQkMsZUFBZSxFQUFFLFVBZWpCQSxlQUFlLEVBQUUsVUFDakJDLFVBQVUsQ0FBQ0MsaUJBQWlCLENBQUNDLE9BQU8sQ0FBQyxVQVdyQ0gsZUFBZSxFQUFFLFVBQ2pCSSxjQUFjLEVBQUUsVUFjaEJKLGVBQWUsRUFBRSxXQUNqQkMsVUFBVSxDQUFDQyxpQkFBaUIsQ0FBQ0MsT0FBTyxDQUFDLFdBYXJDSCxlQUFlLEVBQUUsV0FtQ2pCQSxlQUFlLEVBQUUsV0FpQmpCQSxlQUFlLEVBQUUsV0FDakJDLFVBQVUsQ0FBQyxZQUFZLENBQUMsV0FXeEJELGVBQWUsRUFBRSxXQUNqQkMsVUFBVSxDQUFDQyxpQkFBaUIsQ0FBQ0MsT0FBTyxDQUFDO0lBQUE7SUFBQTtNQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUEsT0EvSnRDRSxNQUFNLEdBRE4sa0JBQ2U7TUFDZDtJQUFBLENBQ0E7SUFBQSxPQUdLQyxjQUFjLEdBRHBCLDhCQUNxQkMsT0FBdUIsRUFBaUI7TUFDNUQsSUFBSUEsT0FBTyxFQUFFO1FBQ1o7UUFD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
@@ -393,12 +393,6 @@ export default class Recommendations extends ControllerExtension {
393
393
  }
394
394
 
395
395
  private tryResetRecommendations(rootContext: ODataV4Context): void {
396
- const currentContext = standardRecommendationHelper.getCurrentRootContext();
397
- if (currentContext?.getPath() === rootContext.getPath()) {
398
- // Same root context, needs no reset
399
- return;
400
- }
401
-
402
396
  standardRecommendationHelper.setCurrentRootContext(rootContext);
403
397
  const internalModel = this.getView().getModel("internal") as JSONModel;
404
398
  // TODO: StandardRecommendationHelper stores all the recommendations for an instance of business object