@sapui5/sap.fe.core 1.136.0 → 1.136.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +4 -6
  4. package/src/sap/fe/core/AppComponent.ts +4 -4
  5. package/src/sap/fe/core/CommonUtils.js +41 -14
  6. package/src/sap/fe/core/CommonUtils.ts +47 -16
  7. package/src/sap/fe/core/IRowBindingInterface.js +1 -1
  8. package/src/sap/fe/core/IRowBindingInterface.ts +1 -1
  9. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +4 -1
  10. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +3 -0
  11. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +12 -4
  12. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +10 -3
  13. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +139 -5
  14. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +169 -4
  15. package/src/sap/fe/core/controllerextensions/EditFlow.js +48 -43
  16. package/src/sap/fe/core/controllerextensions/EditFlow.ts +54 -51
  17. package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +39 -5
  18. package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +38 -1
  19. package/src/sap/fe/core/controllerextensions/InternalRouting.js +12 -13
  20. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +10 -11
  21. package/src/sap/fe/core/controllerextensions/MessageHandler.js +32 -21
  22. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +31 -20
  23. package/src/sap/fe/core/controllerextensions/PageReady.js +6 -3
  24. package/src/sap/fe/core/controllerextensions/PageReady.ts +6 -2
  25. package/src/sap/fe/core/controllerextensions/Recommendations.js +3 -2
  26. package/src/sap/fe/core/controllerextensions/Recommendations.ts +7 -5
  27. package/src/sap/fe/core/controllerextensions/Share.js +6 -6
  28. package/src/sap/fe/core/controllerextensions/Share.ts +3 -4
  29. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +9 -11
  30. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +8 -13
  31. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +9 -9
  32. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +20 -10
  33. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +31 -8
  34. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +46 -9
  35. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +2 -2
  36. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +1 -1
  37. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +20 -18
  38. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +37 -23
  39. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +4 -3
  40. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +6 -1
  41. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.js +6 -3
  42. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.ts +11 -3
  43. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +5 -2
  44. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +3 -2
  45. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +2 -2
  46. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +1 -1
  47. package/src/sap/fe/core/controls/CommandExecution.js +1 -1
  48. package/src/sap/fe/core/controls/CommandExecution.ts +1 -1
  49. package/src/sap/fe/core/controls/HideFormGroupAutomatically.js +3 -2
  50. package/src/sap/fe/core/controls/HideFormGroupAutomatically.ts +2 -0
  51. package/src/sap/fe/core/converters/controls/Common/Action.js +5 -2
  52. package/src/sap/fe/core/converters/controls/Common/Action.ts +4 -1
  53. package/src/sap/fe/core/converters/controls/Common/Chart.js +7 -2
  54. package/src/sap/fe/core/converters/controls/Common/Chart.ts +11 -1
  55. package/src/sap/fe/core/converters/controls/Common/table/Columns.js +41 -58
  56. package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +43 -111
  57. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +14 -6
  58. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +23 -6
  59. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +6 -3
  60. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +5 -2
  61. package/src/sap/fe/core/formatters/ValueFormatter.js +21 -1
  62. package/src/sap/fe/core/formatters/ValueFormatter.ts +19 -0
  63. package/src/sap/fe/core/fpm/manifest.json +1 -1
  64. package/src/sap/fe/core/helpers/DeleteHelper.js +2 -2
  65. package/src/sap/fe/core/helpers/DeleteHelper.ts +1 -1
  66. package/src/sap/fe/core/helpers/ModelHelper.js +2 -2
  67. package/src/sap/fe/core/helpers/ModelHelper.ts +1 -1
  68. package/src/sap/fe/core/helpers/PasteHelper.js +2 -2
  69. package/src/sap/fe/core/helpers/PasteHelper.ts +1 -1
  70. package/src/sap/fe/core/helpers/StableIdHelper.js +2 -2
  71. package/src/sap/fe/core/helpers/StableIdHelper.ts +4 -1
  72. package/src/sap/fe/core/helpers/TitleHelper.js +13 -6
  73. package/src/sap/fe/core/helpers/TitleHelper.ts +19 -6
  74. package/src/sap/fe/core/library.js +1 -1
  75. package/src/sap/fe/core/messagebundle.properties +0 -1
  76. package/src/sap/fe/core/rootView/Fcl.controller.js +9 -15
  77. package/src/sap/fe/core/rootView/Fcl.controller.ts +9 -15
  78. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +9 -6
  79. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +7 -6
  80. package/src/sap/fe/core/templating/DataModelPathHelper.js +2 -2
  81. package/src/sap/fe/core/templating/DataModelPathHelper.ts +1 -1
  82. package/src/sap/fe/core/templating/EntitySetHelper.js +60 -48
  83. package/src/sap/fe/core/templating/EntitySetHelper.ts +80 -58
  84. package/src/sap/fe/core/templating/SemanticObjectHelper.js +6 -4
  85. package/src/sap/fe/core/templating/SemanticObjectHelper.ts +5 -5
  86. package/src/sap/fe/core/templating/UIFormatters.js +7 -1
  87. package/src/sap/fe/core/templating/UIFormatters.ts +4 -0
@@ -204,11 +204,13 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/helpers/TypeGuards"],
204
204
  customSemanticObjects.forEach(internalSemanticObject => {
205
205
  propertySemanticObjectList.semanticObjectsList.push(internalSemanticObject);
206
206
  });
207
- } else if (semanticObject.bindingString) {
208
- const semanticObjectExpressionFromField = resolveBindingString(semanticObject.bindingString);
209
- propertySemanticObjectList.semanticObjectsExpressionList.push(semanticObjectExpressionFromField);
210
207
  } else {
211
208
  propertySemanticObjectList.semanticObjectsList.push(semanticObject);
209
+ // The semanticObject property of the field contains a formatter or a binding expression
210
+ if (semanticObject.startsWith("{") || semanticObject.startsWith("{=")) {
211
+ const semanticObjectExpressionFromField = resolveBindingString(semanticObject);
212
+ propertySemanticObjectList.semanticObjectsExpressionList.push(semanticObjectExpressionFromField);
213
+ }
212
214
  }
213
215
  }
214
216
  return getReachableSemanticObjectsSettings(semanticObjectsCurrentUserCanNavigateTo, propertySemanticObjectList);
@@ -216,4 +218,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/helpers/TypeGuards"],
216
218
  _exports.manageSemanticObjectsForCurrentUser = manageSemanticObjectsForCurrentUser;
217
219
  return _exports;
218
220
  }, false);
219
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXREeW5hbWljUGF0aEZyb21TZW1hbnRpY09iamVjdCIsInNlbWFudGljT2JqZWN0IiwiZHluYW1pY1NlbU9iamVjdFJlZ2V4IiwibWF0Y2giLCJzdGFydHNXaXRoIiwibGVuZ3RoIiwiX2V4cG9ydHMiLCJoYXNTZW1hbnRpY09iamVjdCIsInByb3BlcnR5IiwiX3Byb3BlcnR5Q29tbW9uQW5ub3RhdGlvbnMiLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsImtleSIsInRlcm0iLCJnZXRTZW1hbnRpY09iamVjdHMiLCJzZW1hbnRpY09iamVjdHMiLCJhbm5vdGF0aW9uIiwiaXNBbm5vdGF0aW9uT2ZUZXJtIiwicHVzaCIsImdldFNlbWFudGljT2JqZWN0TWFwcGluZ3MiLCJzZW1hbnRpY09iamVjdE1hcHBpbmdzIiwiZ2V0U2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnMiLCJzZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9ucyIsImdldFByb3BlcnR5V2l0aFNlbWFudGljT2JqZWN0IiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsInByb3BlcnR5V2l0aFNlbWFudGljT2JqZWN0IiwidGFyZ2V0T2JqZWN0IiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJuYXZQcm9wZXJ0eSIsImNvbnRleHRMb2NhdGlvbiIsImZpbmQiLCJjb250ZXh0TmF2UHJvcCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImdldFNlbWFudGljT2JqZWN0c0FuZFF1YWxpZmllck1hcCIsInF1YWxpZmllck1hcCIsInNlbWFudGljT2JqZWN0c0xpc3QiLCJzZW1hbnRpY09iamVjdHNFeHByZXNzaW9uTGlzdCIsInVuZGVmaW5lZCIsInNlbWFudGljT2JqZWN0RXhwcmVzc2lvbiIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsImNvbXBpbGVkU2VtYW50aWNPYmplY3QiLCJjb21waWxlRXhwcmVzc2lvbiIsImluY2x1ZGVzIiwicXVhbGlmaWVyIiwiZ2V0UmVhY2hhYmxlU2VtYW50aWNPYmplY3RzU2V0dGluZ3MiLCJzZW1hbnRpY09iamVjdHNDdXJyZW50VXNlckNhbk5hdmlnYXRlVG8iLCJzZW1hbnRpY09iamVjdExpc3QiLCJkeW5hbWljU2VtYW50aWNPYmplY3RzTGlzdCIsInJlc3VsdCIsImFjdHVhbFNlbWFudGljT2JqZWN0IiwiZm9yRWFjaCIsIl90eXBlIiwiaGFzUmVhY2hhYmxlU3RhdGljU2VtYW50aWNPYmplY3QiLCJkeW5hbWljU2VtYW50aWNPYmplY3RzIiwibWFuYWdlU2VtYW50aWNPYmplY3RzRm9yQ3VycmVudFVzZXIiLCJkYXRhTW9kZWxQYXRoIiwiaW50ZXJuYWxEYXRhTW9kZWwiLCJnZXRQcm9wZXJ0eSIsInByb3BlcnR5U2VtYW50aWNPYmplY3RMaXN0IiwicHJvcGVydHlXaXRoU2VtYW50aWNPYmplY3RGcm9tTmF2aWdhdGlvbiIsImlzTmF2aWdhdGlvblByb3BlcnR5IiwiU2VtYW50aWNPYmplY3QiLCJzZW1hbnRpY09iamVjdFZhbHVlIiwiY3VzdG9tU2VtYW50aWNPYmplY3RzIiwiSlNPTiIsInBhcnNlIiwiaW50ZXJuYWxTZW1hbnRpY09iamVjdCIsImJpbmRpbmdTdHJpbmciLCJzZW1hbnRpY09iamVjdEV4cHJlc3Npb25Gcm9tRmllbGQiLCJyZXNvbHZlQmluZGluZ1N0cmluZyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiU2VtYW50aWNPYmplY3RIZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBOYXZpZ2F0aW9uUHJvcGVydHksIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdFNlbWFudGljT2JqZWN0LFxuXHRTZW1hbnRpY09iamVjdE1hcHBpbmcsXG5cdFNlbWFudGljT2JqZWN0VW5hdmFpbGFibGVBY3Rpb25zXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbW9uXCI7XG5pbXBvcnQgeyBDb21tb25Bbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vblwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhRmllbGRBYnN0cmFjdFR5cGVzLCBEYXRhUG9pbnRUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHtcblx0Y29tcGlsZUV4cHJlc3Npb24sXG5cdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbixcblx0cmVzb2x2ZUJpbmRpbmdTdHJpbmcsXG5cdHR5cGUgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLFxuXHR0eXBlIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uXG59IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgaXNBbm5vdGF0aW9uT2ZUZXJtLCBpc05hdmlnYXRpb25Qcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlCaW5kaW5nSW5mbyB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuXG50eXBlIFByb3BlcnR5T3JOYXZpZ2F0aW9uUHJvcGVydHkgPSBQcm9wZXJ0eSB8IE5hdmlnYXRpb25Qcm9wZXJ0eSB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBHZXQgdGhlIHBhdGggb2YgdGhlIHNlbWFudGljIG9iamVjdCBpZiBpdCBpcyBhIGR5bmFtaWMgU2VtYW50aWNPYmplY3QuXG4gKiBAcGFyYW0gc2VtYW50aWNPYmplY3QgVGhlIHZhbHVlIG9mIHRoZSBDb21tb24uU2VtYW50aWNPYmplY3QgYW5ub3RhdGlvbi5cbiAqIEByZXR1cm5zICBUaGUgcGF0aCBvZiB0aGUgc2VtYW50aWMgb2JqZWN0IGlmIGl0IGlzIGEgZHluYW1pYyBTZW1hbnRpY09iamVjdCwgbnVsbCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXREeW5hbWljUGF0aEZyb21TZW1hbnRpY09iamVjdCA9IChzZW1hbnRpY09iamVjdDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCA9PiB7XG5cdGNvbnN0IGR5bmFtaWNTZW1PYmplY3RSZWdleCA9IHNlbWFudGljT2JqZWN0Py5tYXRjaCgveyguKj8pfS8pO1xuXHRpZiAoc2VtYW50aWNPYmplY3Q/LnN0YXJ0c1dpdGgoXCJ7PVwiKSkge1xuXHRcdHJldHVybiBzZW1hbnRpY09iamVjdDtcblx0fVxuXHRpZiAoZHluYW1pY1NlbU9iamVjdFJlZ2V4Py5sZW5ndGggJiYgZHluYW1pY1NlbU9iamVjdFJlZ2V4Lmxlbmd0aCA+IDEpIHtcblx0XHRyZXR1cm4gZHluYW1pY1NlbU9iamVjdFJlZ2V4WzFdO1xuXHR9XG5cdHJldHVybiBudWxsO1xufTtcblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIGEgcHJvcGVydHkgb3IgYSBOYXZpZ2F0aW9uUHJvcGVydHkgaGFzIGEgc2VtYW50aWMgb2JqZWN0IGRlZmluZWQgb3Igbm90LlxuICogQHBhcmFtIHByb3BlcnR5IFRoZSB0YXJnZXQgcHJvcGVydHlcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBpdCBoYXMgYSBzZW1hbnRpYyBvYmplY3RcbiAqL1xuZXhwb3J0IGNvbnN0IGhhc1NlbWFudGljT2JqZWN0ID0gZnVuY3Rpb24gKHByb3BlcnR5OiBQcm9wZXJ0eSB8IE5hdmlnYXRpb25Qcm9wZXJ0eSB8IERhdGFGaWVsZEFic3RyYWN0VHlwZXMgfCBEYXRhUG9pbnRUeXBlKTogYm9vbGVhbiB7XG5cdGNvbnN0IF9wcm9wZXJ0eUNvbW1vbkFubm90YXRpb25zID0gcHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbiBhcyBSZWNvcmQ8c3RyaW5nLCB7IHRlcm0/OiBDb21tb25Bbm5vdGF0aW9uVGVybXM7IHF1YWxpZmllcj86IHN0cmluZyB9Pjtcblx0aWYgKF9wcm9wZXJ0eUNvbW1vbkFubm90YXRpb25zKSB7XG5cdFx0Zm9yIChjb25zdCBrZXkgaW4gX3Byb3BlcnR5Q29tbW9uQW5ub3RhdGlvbnMpIHtcblx0XHRcdGlmIChfcHJvcGVydHlDb21tb25Bbm5vdGF0aW9uc1trZXldPy50ZXJtID09PSBDb21tb25Bbm5vdGF0aW9uVGVybXMuU2VtYW50aWNPYmplY3QpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTZW1hbnRpY09iamVjdHMgPSBmdW5jdGlvbiAocHJvcGVydHk6IFByb3BlcnR5IHwgTmF2aWdhdGlvblByb3BlcnR5KTogU2VtYW50aWNPYmplY3RbXSB7XG5cdGNvbnN0IHNlbWFudGljT2JqZWN0czogU2VtYW50aWNPYmplY3RbXSA9IFtdO1xuXHRjb25zdCBfcHJvcGVydHlDb21tb25Bbm5vdGF0aW9ucyA9IHByb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24gYXMgUmVjb3JkPHN0cmluZywgeyB0ZXJtPzogQ29tbW9uQW5ub3RhdGlvblRlcm1zOyBxdWFsaWZpZXI/OiBzdHJpbmcgfT47XG5cdGlmIChfcHJvcGVydHlDb21tb25Bbm5vdGF0aW9ucykge1xuXHRcdGZvciAoY29uc3Qga2V5IGluIF9wcm9wZXJ0eUNvbW1vbkFubm90YXRpb25zKSB7XG5cdFx0XHRjb25zdCBhbm5vdGF0aW9uID0gX3Byb3BlcnR5Q29tbW9uQW5ub3RhdGlvbnNba2V5XTtcblx0XHRcdGlmIChpc0Fubm90YXRpb25PZlRlcm08U2VtYW50aWNPYmplY3Q+KGFubm90YXRpb24sIENvbW1vbkFubm90YXRpb25UZXJtcy5TZW1hbnRpY09iamVjdCkpIHtcblx0XHRcdFx0c2VtYW50aWNPYmplY3RzLnB1c2goYW5ub3RhdGlvbik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiBzZW1hbnRpY09iamVjdHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VtYW50aWNPYmplY3RNYXBwaW5ncyA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogUHJvcGVydHkgfCBOYXZpZ2F0aW9uUHJvcGVydHkpOiBTZW1hbnRpY09iamVjdE1hcHBpbmdbXSB7XG5cdGNvbnN0IHNlbWFudGljT2JqZWN0TWFwcGluZ3M6IFNlbWFudGljT2JqZWN0TWFwcGluZ1tdID0gW107XG5cdGNvbnN0IF9wcm9wZXJ0eUNvbW1vbkFubm90YXRpb25zID0gcHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbiBhcyBSZWNvcmQ8c3RyaW5nLCB7IHRlcm0/OiBDb21tb25Bbm5vdGF0aW9uVGVybXM7IHF1YWxpZmllcj86IHN0cmluZyB9Pjtcblx0aWYgKF9wcm9wZXJ0eUNvbW1vbkFubm90YXRpb25zKSB7XG5cdFx0Zm9yIChjb25zdCBrZXkgaW4gX3Byb3BlcnR5Q29tbW9uQW5ub3RhdGlvbnMpIHtcblx0XHRcdGNvbnN0IGFubm90YXRpb24gPSBfcHJvcGVydHlDb21tb25Bbm5vdGF0aW9uc1trZXldO1xuXHRcdFx0aWYgKGlzQW5ub3RhdGlvbk9mVGVybTxTZW1hbnRpY09iamVjdE1hcHBpbmc+KGFubm90YXRpb24sIENvbW1vbkFubm90YXRpb25UZXJtcy5TZW1hbnRpY09iamVjdE1hcHBpbmcpKSB7XG5cdFx0XHRcdHNlbWFudGljT2JqZWN0TWFwcGluZ3MucHVzaChhbm5vdGF0aW9uKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIHNlbWFudGljT2JqZWN0TWFwcGluZ3M7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnMgPSBmdW5jdGlvbiAocHJvcGVydHk6IFByb3BlcnR5IHwgTmF2aWdhdGlvblByb3BlcnR5KTogU2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnNbXSB7XG5cdGNvbnN0IHNlbWFudGljT2JqZWN0VW5hdmFpbGFibGVBY3Rpb25zOiBTZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9uc1tdID0gW107XG5cdGNvbnN0IF9wcm9wZXJ0eUNvbW1vbkFubm90YXRpb25zID0gcHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbiBhcyBSZWNvcmQ8c3RyaW5nLCB7IHRlcm0/OiBDb21tb25Bbm5vdGF0aW9uVGVybXM7IHF1YWxpZmllcj86IHN0cmluZyB9Pjtcblx0aWYgKF9wcm9wZXJ0eUNvbW1vbkFubm90YXRpb25zKSB7XG5cdFx0Zm9yIChjb25zdCBrZXkgaW4gX3Byb3BlcnR5Q29tbW9uQW5ub3RhdGlvbnMpIHtcblx0XHRcdGNvbnN0IGFubm90YXRpb24gPSBfcHJvcGVydHlDb21tb25Bbm5vdGF0aW9uc1trZXldO1xuXHRcdFx0aWYgKGlzQW5ub3RhdGlvbk9mVGVybTxTZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9ucz4oYW5ub3RhdGlvbiwgQ29tbW9uQW5ub3RhdGlvblRlcm1zLlNlbWFudGljT2JqZWN0VW5hdmFpbGFibGVBY3Rpb25zKSkge1xuXHRcdFx0XHRzZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9ucy5wdXNoKGFubm90YXRpb24pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gc2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnM7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgcHJvcGVydHkgb3IgdGhlIG5hdmlnYXRpb24gcHJvcGVydHkgaW4gIGl0cyByZWxhdGl2ZSBwYXRoIHRoYXQgaG9sZHMgc2VtYW50aWNPYmplY3QgYW5ub3RhdGlvbiBpZiBpdCBleGlzdHMuXG4gKiBAcGFyYW0gZGF0YU1vZGVsT2JqZWN0UGF0aFxuICogQHJldHVybnMgQSBwcm9wZXJ0eSBvciBhIE5hdlByb3BlcnR5IG9yIHVuZGVmaW5lZFxuICovXG5leHBvcnQgY29uc3QgZ2V0UHJvcGVydHlXaXRoU2VtYW50aWNPYmplY3QgPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHkgfCBOYXZpZ2F0aW9uUHJvcGVydHkgfCBEYXRhRmllbGRBYnN0cmFjdFR5cGVzIHwgRGF0YVBvaW50VHlwZT5cbik6IFByb3BlcnR5T3JOYXZpZ2F0aW9uUHJvcGVydHkge1xuXHRsZXQgcHJvcGVydHlXaXRoU2VtYW50aWNPYmplY3Q6IFByb3BlcnR5T3JOYXZpZ2F0aW9uUHJvcGVydHk7XG5cdGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCAmJiBoYXNTZW1hbnRpY09iamVjdChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkpIHtcblx0XHRwcm9wZXJ0eVdpdGhTZW1hbnRpY09iamVjdCA9IGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5IHwgTmF2aWdhdGlvblByb3BlcnR5O1xuXHR9IGVsc2UgaWYgKGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMubGVuZ3RoID4gMCkge1xuXHRcdC8vIHRoZXJlIGFyZSBubyBzZW1hbnRpYyBvYmplY3RzIG9uIHRoZSBwcm9wZXJ0eSBpdHNlbGYgc28gd2UgbG9vayBmb3Igc29tZSBvbiBuYXYgcHJvcGVydGllc1xuXHRcdGZvciAoY29uc3QgbmF2UHJvcGVydHkgb2YgZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcykge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHQhZGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24/Lm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZpbmQoXG5cdFx0XHRcdFx0KGNvbnRleHROYXZQcm9wKSA9PiBjb250ZXh0TmF2UHJvcC5mdWxseVF1YWxpZmllZE5hbWUgPT09IG5hdlByb3BlcnR5LmZ1bGx5UXVhbGlmaWVkTmFtZVxuXHRcdFx0XHQpICYmXG5cdFx0XHRcdCFwcm9wZXJ0eVdpdGhTZW1hbnRpY09iamVjdCAmJlxuXHRcdFx0XHRoYXNTZW1hbnRpY09iamVjdChuYXZQcm9wZXJ0eSlcblx0XHRcdCkge1xuXHRcdFx0XHRwcm9wZXJ0eVdpdGhTZW1hbnRpY09iamVjdCA9IG5hdlByb3BlcnR5O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gcHJvcGVydHlXaXRoU2VtYW50aWNPYmplY3Q7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgc2VtYW50aWNPYmplY3QgY29tcGlsZSBiaW5kaW5nIGZyb20gbWV0YWRhdGEgYW5kIGEgbWFwIHRvIHRoZSBxdWFsaWZpZXJzLlxuICogQHBhcmFtIHByb3BlcnR5V2l0aFNlbWFudGljT2JqZWN0IFRoZSBwcm9wZXJ0eSB0aGF0IGhvbGRzIHNlbWFudGljT2JqZWN0IGFubm90YXRhaW9ucyBpZiBpdCBleGlzdHNcbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHNlbWFudGljT2JqZWN0TGlzdCBhbmQgcXVhbGlmaWVyTWFwXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRTZW1hbnRpY09iamVjdHNBbmRRdWFsaWZpZXJNYXAgPSBmdW5jdGlvbiAocHJvcGVydHlXaXRoU2VtYW50aWNPYmplY3Q6IFByb3BlcnR5T3JOYXZpZ2F0aW9uUHJvcGVydHkpOiB7XG5cdHNlbWFudGljT2JqZWN0c0xpc3Q6IHN0cmluZ1tdO1xuXHRzZW1hbnRpY09iamVjdHNFeHByZXNzaW9uTGlzdDogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz5bXTtcblx0cXVhbGlmaWVyTWFwOiBSZWNvcmQ8c3RyaW5nLCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbj47XG59IHtcblx0Y29uc3QgcXVhbGlmaWVyTWFwOiBSZWNvcmQ8c3RyaW5nLCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbj4gPSB7fTtcblx0Y29uc3Qgc2VtYW50aWNPYmplY3RzTGlzdDogc3RyaW5nW10gPSBbXTtcblx0Y29uc3Qgc2VtYW50aWNPYmplY3RzRXhwcmVzc2lvbkxpc3Q6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+W10gPSBbXTtcblx0aWYgKHByb3BlcnR5V2l0aFNlbWFudGljT2JqZWN0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRmb3IgKGNvbnN0IHNlbWFudGljT2JqZWN0IG9mIGdldFNlbWFudGljT2JqZWN0cyhwcm9wZXJ0eVdpdGhTZW1hbnRpY09iamVjdCkpIHtcblx0XHRcdGNvbnN0IHNlbWFudGljT2JqZWN0RXhwcmVzc2lvbiA9IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihzZW1hbnRpY09iamVjdCk7XG5cdFx0XHRjb25zdCBjb21waWxlZFNlbWFudGljT2JqZWN0ID0gY29tcGlsZUV4cHJlc3Npb24oc2VtYW50aWNPYmplY3RFeHByZXNzaW9uKTtcblx0XHRcdC8vIHRoaXMgc2hvdWxkIG5vdCBoYXBwZW4sIGJ1dCB3ZSBtYWtlIHN1cmUgbm90IHRvIGFkZCB0d2ljZSB0aGUgc2VtYW50aWNPYmplY3Qgb3RoZXJ3aXNlIHRoZSBtZGNMaW5rIGNyYXNoZXNcblx0XHRcdGlmIChjb21waWxlZFNlbWFudGljT2JqZWN0ICYmICFzZW1hbnRpY09iamVjdHNMaXN0LmluY2x1ZGVzKGNvbXBpbGVkU2VtYW50aWNPYmplY3QpKSB7XG5cdFx0XHRcdHF1YWxpZmllck1hcFtzZW1hbnRpY09iamVjdC5xdWFsaWZpZXIgfHwgXCJcIl0gPSBjb21waWxlZFNlbWFudGljT2JqZWN0O1xuXHRcdFx0XHRzZW1hbnRpY09iamVjdHNMaXN0LnB1c2goY29tcGlsZWRTZW1hbnRpY09iamVjdCk7XG5cdFx0XHRcdHNlbWFudGljT2JqZWN0c0V4cHJlc3Npb25MaXN0LnB1c2goc2VtYW50aWNPYmplY3RFeHByZXNzaW9uKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIHsgc2VtYW50aWNPYmplY3RzTGlzdCwgc2VtYW50aWNPYmplY3RzRXhwcmVzc2lvbkxpc3QsIHF1YWxpZmllck1hcCB9O1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBjdXJyZW50IHVzZXIgY2FuIG5hdmlnYXRlIHRvIHNlbWFudGljIG9iamVjdHMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGxpc3RzLlxuICogQHBhcmFtIHNlbWFudGljT2JqZWN0c0N1cnJlbnRVc2VyQ2FuTmF2aWdhdGVUbyBUaGUgbGlzdCBvZiBzZW1hbnRpYyBvYmplY3RzIHRoZSBjdXJyZW50IHVzZXIgY2FuIG5hdmlnYXRlIHRvLlxuICogQHBhcmFtIHNlbWFudGljT2JqZWN0TGlzdCBBbiBvYmplY3QgY29udGFpbmluZyBsaXN0cyBhbmQgbWFwcyBvZiBzZW1hbnRpYyBvYmplY3RzLlxuICogQHBhcmFtIHNlbWFudGljT2JqZWN0TGlzdC5zZW1hbnRpY09iamVjdHNMaXN0IFRoZSBsaXN0IG9mIGFsbCBzZW1hbnRpYyBvYmplY3RzLlxuICogQHBhcmFtIHNlbWFudGljT2JqZWN0TGlzdC5zZW1hbnRpY09iamVjdHNFeHByZXNzaW9uTGlzdCBUaGUgbGlzdCBvZiBleHByZXNzaW9ucyBmb3Igc2VtYW50aWMgb2JqZWN0cy5cbiAqIEBwYXJhbSBzZW1hbnRpY09iamVjdExpc3QucXVhbGlmaWVyTWFwIEEgbWFwIG9mIHF1YWxpZmllcnMgdG8gY29tcGlsZWQgZXhwcmVzc2lvbnMuXG4gKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCBzdGF0aWMgYW5kIGR5bmFtaWMgc2VtYW50aWMgb2JqZWN0cy5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFJlYWNoYWJsZVNlbWFudGljT2JqZWN0c1NldHRpbmdzID0gZnVuY3Rpb24gKFxuXHRzZW1hbnRpY09iamVjdHNDdXJyZW50VXNlckNhbk5hdmlnYXRlVG86IHN0cmluZ1tdLFxuXHRzZW1hbnRpY09iamVjdExpc3Q6IHtcblx0XHRzZW1hbnRpY09iamVjdHNMaXN0OiBzdHJpbmdbXTtcblx0XHRzZW1hbnRpY09iamVjdHNFeHByZXNzaW9uTGlzdDogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz5bXTtcblx0XHRxdWFsaWZpZXJNYXA6IFJlY29yZDxzdHJpbmcsIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPjtcblx0fVxuKTogeyBoYXNSZWFjaGFibGVTdGF0aWNTZW1hbnRpY09iamVjdDogYm9vbGVhbjsgZHluYW1pY1NlbWFudGljT2JqZWN0czogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz5bXSB9IHtcblx0Y29uc3QgZHluYW1pY1NlbWFudGljT2JqZWN0c0xpc3Q6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+W10gPSBbXTtcblx0bGV0IHJlc3VsdCA9IGZhbHNlO1xuXHRpZiAoc2VtYW50aWNPYmplY3RzQ3VycmVudFVzZXJDYW5OYXZpZ2F0ZVRvKSB7XG5cdFx0Zm9yIChjb25zdCBzZW1hbnRpY09iamVjdCBvZiBzZW1hbnRpY09iamVjdHNDdXJyZW50VXNlckNhbk5hdmlnYXRlVG8pIHtcblx0XHRcdGZvciAoY29uc3QgYWN0dWFsU2VtYW50aWNPYmplY3Qgb2Ygc2VtYW50aWNPYmplY3RMaXN0LnNlbWFudGljT2JqZWN0c0xpc3QpIHtcblx0XHRcdFx0aWYgKHNlbWFudGljT2JqZWN0ID09PSBhY3R1YWxTZW1hbnRpY09iamVjdCkge1xuXHRcdFx0XHRcdHJlc3VsdCA9IHRydWU7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChyZXN1bHQpIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHNlbWFudGljT2JqZWN0TGlzdC5zZW1hbnRpY09iamVjdHNFeHByZXNzaW9uTGlzdC5mb3JFYWNoKChzZW1hbnRpY09iamVjdEV4cHJlc3Npb24pID0+IHtcblx0XHRcdGlmIChzZW1hbnRpY09iamVjdEV4cHJlc3Npb24uX3R5cGUgIT09IFwiQ29uc3RhbnRcIikge1xuXHRcdFx0XHRkeW5hbWljU2VtYW50aWNPYmplY3RzTGlzdC5wdXNoKHNlbWFudGljT2JqZWN0RXhwcmVzc2lvbik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIHsgaGFzUmVhY2hhYmxlU3RhdGljU2VtYW50aWNPYmplY3Q6IHJlc3VsdCwgZHluYW1pY1NlbWFudGljT2JqZWN0czogZHluYW1pY1NlbWFudGljT2JqZWN0c0xpc3QgfTtcbn07XG5cbi8qKlxuICogQ2hlY2sgdGhlIHVzZXIgcmlnaHRzIHRvIG5hdmlnYXRlIHRvIHRoZSBzZW1hbnRpYyBvYmplY3RzLlxuICogQHBhcmFtIHNlbWFudGljT2JqZWN0IFRoZSBzZW1hbnRpYyBvYmplY3QgbmFtZVxuICogQHBhcmFtIGRhdGFNb2RlbFBhdGggVGhlIERhdGFNb2RlbE9iamVjdFBhdGggb2YgdGhlIHByb3BlcnR5XG4gKiBAcGFyYW0gc2V0dGluZ3MgVGhlIFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3Mgb2YgdGhlIGludGVybmFsIGZpZWxkXG4gKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyBzZW1hbnRpY09iamVjdExpc3QgYW5kIHF1YWxpZmllck1hcFxuICovXG5leHBvcnQgY29uc3QgbWFuYWdlU2VtYW50aWNPYmplY3RzRm9yQ3VycmVudFVzZXIgPSBmdW5jdGlvbiAoXG5cdHNlbWFudGljT2JqZWN0OiBQcm9wZXJ0eUJpbmRpbmdJbmZvIHwgdW5kZWZpbmVkLFxuXHRkYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pixcblx0aW50ZXJuYWxEYXRhTW9kZWw6IEpTT05Nb2RlbFxuKTogeyBoYXNSZWFjaGFibGVTdGF0aWNTZW1hbnRpY09iamVjdDogYm9vbGVhbjsgZHluYW1pY1NlbWFudGljT2JqZWN0czogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz5bXSB9IHtcblx0Y29uc3QgcHJvcGVydHk6IFByb3BlcnR5ID0gZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QhO1xuXHRjb25zdCBzZW1hbnRpY09iamVjdHNDdXJyZW50VXNlckNhbk5hdmlnYXRlVG8gPSBpbnRlcm5hbERhdGFNb2RlbD8uZ2V0UHJvcGVydHkoXCIvc2VtYW50aWNPYmplY3RzXCIpO1xuXHRjb25zdCBwcm9wZXJ0eVNlbWFudGljT2JqZWN0TGlzdCA9IGdldFNlbWFudGljT2JqZWN0c0FuZFF1YWxpZmllck1hcChwcm9wZXJ0eSk7XG5cblx0Ly8gc2VtYW50aWMgb2JqZWN0IGlzIGluIG5hdmlnYXRpb25cblx0Y29uc3QgcHJvcGVydHlXaXRoU2VtYW50aWNPYmplY3RGcm9tTmF2aWdhdGlvbiA9IGdldFByb3BlcnR5V2l0aFNlbWFudGljT2JqZWN0KGRhdGFNb2RlbFBhdGgpO1xuXHRpZiAoaXNOYXZpZ2F0aW9uUHJvcGVydHkocHJvcGVydHlXaXRoU2VtYW50aWNPYmplY3RGcm9tTmF2aWdhdGlvbikpIHtcblx0XHRjb25zdCBzZW1hbnRpY09iamVjdEV4cHJlc3Npb24gPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oXG5cdFx0XHRwcm9wZXJ0eVdpdGhTZW1hbnRpY09iamVjdEZyb21OYXZpZ2F0aW9uPy5hbm5vdGF0aW9ucz8uQ29tbW9uPy5TZW1hbnRpY09iamVjdFxuXHRcdCk7XG5cdFx0Y29uc3Qgc2VtYW50aWNPYmplY3RWYWx1ZSA9IGNvbXBpbGVFeHByZXNzaW9uKHNlbWFudGljT2JqZWN0RXhwcmVzc2lvbik7XG5cdFx0cHJvcGVydHlTZW1hbnRpY09iamVjdExpc3Quc2VtYW50aWNPYmplY3RzRXhwcmVzc2lvbkxpc3QucHVzaChzZW1hbnRpY09iamVjdEV4cHJlc3Npb24pO1xuXHRcdHByb3BlcnR5U2VtYW50aWNPYmplY3RMaXN0LnNlbWFudGljT2JqZWN0c0xpc3QucHVzaChzZW1hbnRpY09iamVjdFZhbHVlIGFzIHN0cmluZyk7XG5cdH1cblxuXHQvLyBjdXN0b20gc2VtYW50aWNPYmplY3QgZnJvbSBmaWVsZCBwcm9wZXJ0eVxuXG5cdGlmIChzZW1hbnRpY09iamVjdCAhPT0gdW5kZWZpbmVkICYmIHNlbWFudGljT2JqZWN0ICE9PSBcIlwiKSB7XG5cdFx0aWYgKHNlbWFudGljT2JqZWN0WzBdID09PSBcIltcIikge1xuXHRcdFx0Y29uc3QgY3VzdG9tU2VtYW50aWNPYmplY3RzID0gSlNPTi5wYXJzZShzZW1hbnRpY09iamVjdCk7XG5cdFx0XHRjdXN0b21TZW1hbnRpY09iamVjdHMuZm9yRWFjaCgoaW50ZXJuYWxTZW1hbnRpY09iamVjdDogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdHByb3BlcnR5U2VtYW50aWNPYmplY3RMaXN0LnNlbWFudGljT2JqZWN0c0xpc3QucHVzaChpbnRlcm5hbFNlbWFudGljT2JqZWN0KTtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSBpZiAoc2VtYW50aWNPYmplY3QuYmluZGluZ1N0cmluZykge1xuXHRcdFx0Y29uc3Qgc2VtYW50aWNPYmplY3RFeHByZXNzaW9uRnJvbUZpZWxkID0gcmVzb2x2ZUJpbmRpbmdTdHJpbmcoXG5cdFx0XHRcdHNlbWFudGljT2JqZWN0LmJpbmRpbmdTdHJpbmdcblx0XHRcdCkgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz47XG5cdFx0XHRwcm9wZXJ0eVNlbWFudGljT2JqZWN0TGlzdC5zZW1hbnRpY09iamVjdHNFeHByZXNzaW9uTGlzdC5wdXNoKHNlbWFudGljT2JqZWN0RXhwcmVzc2lvbkZyb21GaWVsZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHByb3BlcnR5U2VtYW50aWNPYmplY3RMaXN0LnNlbWFudGljT2JqZWN0c0xpc3QucHVzaChzZW1hbnRpY09iamVjdCk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBnZXRSZWFjaGFibGVTZW1hbnRpY09iamVjdHNTZXR0aW5ncyhzZW1hbnRpY09iamVjdHNDdXJyZW50VXNlckNhbk5hdmlnYXRlVG8sIHByb3BlcnR5U2VtYW50aWNPYmplY3RMaXN0KTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7RUFzQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLE1BQU1BLGdDQUFnQyxHQUFJQyxjQUFz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
221
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXREeW5hbWljUGF0aEZyb21TZW1hbnRpY09iamVjdCIsInNlbWFudGljT2JqZWN0IiwiZHluYW1pY1NlbU9iamVjdFJlZ2V4IiwibWF0Y2giLCJzdGFydHNXaXRoIiwibGVuZ3RoIiwiX2V4cG9ydHMiLCJoYXNTZW1hbnRpY09iamVjdCIsInByb3BlcnR5IiwiX3Byb3BlcnR5Q29tbW9uQW5ub3RhdGlvbnMiLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsImtleSIsInRlcm0iLCJnZXRTZW1hbnRpY09iamVjdHMiLCJzZW1hbnRpY09iamVjdHMiLCJhbm5vdGF0aW9uIiwiaXNBbm5vdGF0aW9uT2ZUZXJtIiwicHVzaCIsImdldFNlbWFudGljT2JqZWN0TWFwcGluZ3MiLCJzZW1hbnRpY09iamVjdE1hcHBpbmdzIiwiZ2V0U2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnMiLCJzZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9ucyIsImdldFByb3BlcnR5V2l0aFNlbWFudGljT2JqZWN0IiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsInByb3BlcnR5V2l0aFNlbWFudGljT2JqZWN0IiwidGFyZ2V0T2JqZWN0IiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJuYXZQcm9wZXJ0eSIsImNvbnRleHRMb2NhdGlvbiIsImZpbmQiLCJjb250ZXh0TmF2UHJvcCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImdldFNlbWFudGljT2JqZWN0c0FuZFF1YWxpZmllck1hcCIsInF1YWxpZmllck1hcCIsInNlbWFudGljT2JqZWN0c0xpc3QiLCJzZW1hbnRpY09iamVjdHNFeHByZXNzaW9uTGlzdCIsInVuZGVmaW5lZCIsInNlbWFudGljT2JqZWN0RXhwcmVzc2lvbiIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsImNvbXBpbGVkU2VtYW50aWNPYmplY3QiLCJjb21waWxlRXhwcmVzc2lvbiIsImluY2x1ZGVzIiwicXVhbGlmaWVyIiwiZ2V0UmVhY2hhYmxlU2VtYW50aWNPYmplY3RzU2V0dGluZ3MiLCJzZW1hbnRpY09iamVjdHNDdXJyZW50VXNlckNhbk5hdmlnYXRlVG8iLCJzZW1hbnRpY09iamVjdExpc3QiLCJkeW5hbWljU2VtYW50aWNPYmplY3RzTGlzdCIsInJlc3VsdCIsImFjdHVhbFNlbWFudGljT2JqZWN0IiwiZm9yRWFjaCIsIl90eXBlIiwiaGFzUmVhY2hhYmxlU3RhdGljU2VtYW50aWNPYmplY3QiLCJkeW5hbWljU2VtYW50aWNPYmplY3RzIiwibWFuYWdlU2VtYW50aWNPYmplY3RzRm9yQ3VycmVudFVzZXIiLCJkYXRhTW9kZWxQYXRoIiwiaW50ZXJuYWxEYXRhTW9kZWwiLCJnZXRQcm9wZXJ0eSIsInByb3BlcnR5U2VtYW50aWNPYmplY3RMaXN0IiwicHJvcGVydHlXaXRoU2VtYW50aWNPYmplY3RGcm9tTmF2aWdhdGlvbiIsImlzTmF2aWdhdGlvblByb3BlcnR5IiwiU2VtYW50aWNPYmplY3QiLCJzZW1hbnRpY09iamVjdFZhbHVlIiwiY3VzdG9tU2VtYW50aWNPYmplY3RzIiwiSlNPTiIsInBhcnNlIiwiaW50ZXJuYWxTZW1hbnRpY09iamVjdCIsInNlbWFudGljT2JqZWN0RXhwcmVzc2lvbkZyb21GaWVsZCIsInJlc29sdmVCaW5kaW5nU3RyaW5nIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTZW1hbnRpY09iamVjdEhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25Qcm9wZXJ0eSwgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHtcblx0U2VtYW50aWNPYmplY3QsXG5cdFNlbWFudGljT2JqZWN0TWFwcGluZyxcblx0U2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnNcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tb25cIjtcbmltcG9ydCB7IENvbW1vbkFubm90YXRpb25UZXJtcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbW9uXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFGaWVsZEFic3RyYWN0VHlwZXMsIERhdGFQb2ludFR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQge1xuXHRjb21waWxlRXhwcmVzc2lvbixcblx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLFxuXHRyZXNvbHZlQmluZGluZ1N0cmluZyxcblx0dHlwZSBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sXG5cdHR5cGUgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb25cbn0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBpc0Fubm90YXRpb25PZlRlcm0sIGlzTmF2aWdhdGlvblByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5cbnR5cGUgUHJvcGVydHlPck5hdmlnYXRpb25Qcm9wZXJ0eSA9IFByb3BlcnR5IHwgTmF2aWdhdGlvblByb3BlcnR5IHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIEdldCB0aGUgcGF0aCBvZiB0aGUgc2VtYW50aWMgb2JqZWN0IGlmIGl0IGlzIGEgZHluYW1pYyBTZW1hbnRpY09iamVjdC5cbiAqIEBwYXJhbSBzZW1hbnRpY09iamVjdCBUaGUgdmFsdWUgb2YgdGhlIENvbW1vbi5TZW1hbnRpY09iamVjdCBhbm5vdGF0aW9uLlxuICogQHJldHVybnMgIFRoZSBwYXRoIG9mIHRoZSBzZW1hbnRpYyBvYmplY3QgaWYgaXQgaXMgYSBkeW5hbWljIFNlbWFudGljT2JqZWN0LCBudWxsIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldER5bmFtaWNQYXRoRnJvbVNlbWFudGljT2JqZWN0ID0gKHNlbWFudGljT2JqZWN0OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsID0+IHtcblx0Y29uc3QgZHluYW1pY1NlbU9iamVjdFJlZ2V4ID0gc2VtYW50aWNPYmplY3Q/Lm1hdGNoKC97KC4qPyl9Lyk7XG5cdGlmIChzZW1hbnRpY09iamVjdD8uc3RhcnRzV2l0aChcIns9XCIpKSB7XG5cdFx0cmV0dXJuIHNlbWFudGljT2JqZWN0O1xuXHR9XG5cdGlmIChkeW5hbWljU2VtT2JqZWN0UmVnZXg/Lmxlbmd0aCAmJiBkeW5hbWljU2VtT2JqZWN0UmVnZXgubGVuZ3RoID4gMSkge1xuXHRcdHJldHVybiBkeW5hbWljU2VtT2JqZWN0UmVnZXhbMV07XG5cdH1cblx0cmV0dXJuIG51bGw7XG59O1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYSBwcm9wZXJ0eSBvciBhIE5hdmlnYXRpb25Qcm9wZXJ0eSBoYXMgYSBzZW1hbnRpYyBvYmplY3QgZGVmaW5lZCBvciBub3QuXG4gKiBAcGFyYW0gcHJvcGVydHkgVGhlIHRhcmdldCBwcm9wZXJ0eVxuICogQHJldHVybnMgYHRydWVgIGlmIGl0IGhhcyBhIHNlbWFudGljIG9iamVjdFxuICovXG5leHBvcnQgY29uc3QgaGFzU2VtYW50aWNPYmplY3QgPSBmdW5jdGlvbiAocHJvcGVydHk6IFByb3BlcnR5IHwgTmF2aWdhdGlvblByb3BlcnR5IHwgRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IERhdGFQb2ludFR5cGUpOiBib29sZWFuIHtcblx0Y29uc3QgX3Byb3BlcnR5Q29tbW9uQW5ub3RhdGlvbnMgPSBwcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uIGFzIFJlY29yZDxzdHJpbmcsIHsgdGVybT86IENvbW1vbkFubm90YXRpb25UZXJtczsgcXVhbGlmaWVyPzogc3RyaW5nIH0+O1xuXHRpZiAoX3Byb3BlcnR5Q29tbW9uQW5ub3RhdGlvbnMpIHtcblx0XHRmb3IgKGNvbnN0IGtleSBpbiBfcHJvcGVydHlDb21tb25Bbm5vdGF0aW9ucykge1xuXHRcdFx0aWYgKF9wcm9wZXJ0eUNvbW1vbkFubm90YXRpb25zW2tleV0/LnRlcm0gPT09IENvbW1vbkFubm90YXRpb25UZXJtcy5TZW1hbnRpY09iamVjdCkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlbWFudGljT2JqZWN0cyA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogUHJvcGVydHkgfCBOYXZpZ2F0aW9uUHJvcGVydHkpOiBTZW1hbnRpY09iamVjdFtdIHtcblx0Y29uc3Qgc2VtYW50aWNPYmplY3RzOiBTZW1hbnRpY09iamVjdFtdID0gW107XG5cdGNvbnN0IF9wcm9wZXJ0eUNvbW1vbkFubm90YXRpb25zID0gcHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbiBhcyBSZWNvcmQ8c3RyaW5nLCB7IHRlcm0/OiBDb21tb25Bbm5vdGF0aW9uVGVybXM7IHF1YWxpZmllcj86IHN0cmluZyB9Pjtcblx0aWYgKF9wcm9wZXJ0eUNvbW1vbkFubm90YXRpb25zKSB7XG5cdFx0Zm9yIChjb25zdCBrZXkgaW4gX3Byb3BlcnR5Q29tbW9uQW5ub3RhdGlvbnMpIHtcblx0XHRcdGNvbnN0IGFubm90YXRpb24gPSBfcHJvcGVydHlDb21tb25Bbm5vdGF0aW9uc1trZXldO1xuXHRcdFx0aWYgKGlzQW5ub3RhdGlvbk9mVGVybTxTZW1hbnRpY09iamVjdD4oYW5ub3RhdGlvbiwgQ29tbW9uQW5ub3RhdGlvblRlcm1zLlNlbWFudGljT2JqZWN0KSkge1xuXHRcdFx0XHRzZW1hbnRpY09iamVjdHMucHVzaChhbm5vdGF0aW9uKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIHNlbWFudGljT2JqZWN0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTZW1hbnRpY09iamVjdE1hcHBpbmdzID0gZnVuY3Rpb24gKHByb3BlcnR5OiBQcm9wZXJ0eSB8IE5hdmlnYXRpb25Qcm9wZXJ0eSk6IFNlbWFudGljT2JqZWN0TWFwcGluZ1tdIHtcblx0Y29uc3Qgc2VtYW50aWNPYmplY3RNYXBwaW5nczogU2VtYW50aWNPYmplY3RNYXBwaW5nW10gPSBbXTtcblx0Y29uc3QgX3Byb3BlcnR5Q29tbW9uQW5ub3RhdGlvbnMgPSBwcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uIGFzIFJlY29yZDxzdHJpbmcsIHsgdGVybT86IENvbW1vbkFubm90YXRpb25UZXJtczsgcXVhbGlmaWVyPzogc3RyaW5nIH0+O1xuXHRpZiAoX3Byb3BlcnR5Q29tbW9uQW5ub3RhdGlvbnMpIHtcblx0XHRmb3IgKGNvbnN0IGtleSBpbiBfcHJvcGVydHlDb21tb25Bbm5vdGF0aW9ucykge1xuXHRcdFx0Y29uc3QgYW5ub3RhdGlvbiA9IF9wcm9wZXJ0eUNvbW1vbkFubm90YXRpb25zW2tleV07XG5cdFx0XHRpZiAoaXNBbm5vdGF0aW9uT2ZUZXJtPFNlbWFudGljT2JqZWN0TWFwcGluZz4oYW5ub3RhdGlvbiwgQ29tbW9uQW5ub3RhdGlvblRlcm1zLlNlbWFudGljT2JqZWN0TWFwcGluZykpIHtcblx0XHRcdFx0c2VtYW50aWNPYmplY3RNYXBwaW5ncy5wdXNoKGFubm90YXRpb24pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gc2VtYW50aWNPYmplY3RNYXBwaW5ncztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9ucyA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogUHJvcGVydHkgfCBOYXZpZ2F0aW9uUHJvcGVydHkpOiBTZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9uc1tdIHtcblx0Y29uc3Qgc2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnM6IFNlbWFudGljT2JqZWN0VW5hdmFpbGFibGVBY3Rpb25zW10gPSBbXTtcblx0Y29uc3QgX3Byb3BlcnR5Q29tbW9uQW5ub3RhdGlvbnMgPSBwcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uIGFzIFJlY29yZDxzdHJpbmcsIHsgdGVybT86IENvbW1vbkFubm90YXRpb25UZXJtczsgcXVhbGlmaWVyPzogc3RyaW5nIH0+O1xuXHRpZiAoX3Byb3BlcnR5Q29tbW9uQW5ub3RhdGlvbnMpIHtcblx0XHRmb3IgKGNvbnN0IGtleSBpbiBfcHJvcGVydHlDb21tb25Bbm5vdGF0aW9ucykge1xuXHRcdFx0Y29uc3QgYW5ub3RhdGlvbiA9IF9wcm9wZXJ0eUNvbW1vbkFubm90YXRpb25zW2tleV07XG5cdFx0XHRpZiAoaXNBbm5vdGF0aW9uT2ZUZXJtPFNlbWFudGljT2JqZWN0VW5hdmFpbGFibGVBY3Rpb25zPihhbm5vdGF0aW9uLCBDb21tb25Bbm5vdGF0aW9uVGVybXMuU2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnMpKSB7XG5cdFx0XHRcdHNlbWFudGljT2JqZWN0VW5hdmFpbGFibGVBY3Rpb25zLnB1c2goYW5ub3RhdGlvbik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiBzZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9ucztcbn07XG5cbi8qKlxuICogR2V0IHRoZSBwcm9wZXJ0eSBvciB0aGUgbmF2aWdhdGlvbiBwcm9wZXJ0eSBpbiAgaXRzIHJlbGF0aXZlIHBhdGggdGhhdCBob2xkcyBzZW1hbnRpY09iamVjdCBhbm5vdGF0aW9uIGlmIGl0IGV4aXN0cy5cbiAqIEBwYXJhbSBkYXRhTW9kZWxPYmplY3RQYXRoXG4gKiBAcmV0dXJucyBBIHByb3BlcnR5IG9yIGEgTmF2UHJvcGVydHkgb3IgdW5kZWZpbmVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRQcm9wZXJ0eVdpdGhTZW1hbnRpY09iamVjdCA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eSB8IE5hdmlnYXRpb25Qcm9wZXJ0eSB8IERhdGFGaWVsZEFic3RyYWN0VHlwZXMgfCBEYXRhUG9pbnRUeXBlPlxuKTogUHJvcGVydHlPck5hdmlnYXRpb25Qcm9wZXJ0eSB7XG5cdGxldCBwcm9wZXJ0eVdpdGhTZW1hbnRpY09iamVjdDogUHJvcGVydHlPck5hdmlnYXRpb25Qcm9wZXJ0eTtcblx0aWYgKGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ICYmIGhhc1NlbWFudGljT2JqZWN0KGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KSkge1xuXHRcdHByb3BlcnR5V2l0aFNlbWFudGljT2JqZWN0ID0gZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHkgfCBOYXZpZ2F0aW9uUHJvcGVydHk7XG5cdH0gZWxzZSBpZiAoZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5sZW5ndGggPiAwKSB7XG5cdFx0Ly8gdGhlcmUgYXJlIG5vIHNlbWFudGljIG9iamVjdHMgb24gdGhlIHByb3BlcnR5IGl0c2VsZiBzbyB3ZSBsb29rIGZvciBzb21lIG9uIG5hdiBwcm9wZXJ0aWVzXG5cdFx0Zm9yIChjb25zdCBuYXZQcm9wZXJ0eSBvZiBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdCFkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbj8ubmF2aWdhdGlvblByb3BlcnRpZXMuZmluZChcblx0XHRcdFx0XHQoY29udGV4dE5hdlByb3ApID0+IGNvbnRleHROYXZQcm9wLmZ1bGx5UXVhbGlmaWVkTmFtZSA9PT0gbmF2UHJvcGVydHkuZnVsbHlRdWFsaWZpZWROYW1lXG5cdFx0XHRcdCkgJiZcblx0XHRcdFx0IXByb3BlcnR5V2l0aFNlbWFudGljT2JqZWN0ICYmXG5cdFx0XHRcdGhhc1NlbWFudGljT2JqZWN0KG5hdlByb3BlcnR5KVxuXHRcdFx0KSB7XG5cdFx0XHRcdHByb3BlcnR5V2l0aFNlbWFudGljT2JqZWN0ID0gbmF2UHJvcGVydHk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiBwcm9wZXJ0eVdpdGhTZW1hbnRpY09iamVjdDtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBzZW1hbnRpY09iamVjdCBjb21waWxlIGJpbmRpbmcgZnJvbSBtZXRhZGF0YSBhbmQgYSBtYXAgdG8gdGhlIHF1YWxpZmllcnMuXG4gKiBAcGFyYW0gcHJvcGVydHlXaXRoU2VtYW50aWNPYmplY3QgVGhlIHByb3BlcnR5IHRoYXQgaG9sZHMgc2VtYW50aWNPYmplY3QgYW5ub3RhdGFpb25zIGlmIGl0IGV4aXN0c1xuICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgc2VtYW50aWNPYmplY3RMaXN0IGFuZCBxdWFsaWZpZXJNYXBcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFNlbWFudGljT2JqZWN0c0FuZFF1YWxpZmllck1hcCA9IGZ1bmN0aW9uIChwcm9wZXJ0eVdpdGhTZW1hbnRpY09iamVjdDogUHJvcGVydHlPck5hdmlnYXRpb25Qcm9wZXJ0eSk6IHtcblx0c2VtYW50aWNPYmplY3RzTGlzdDogc3RyaW5nW107XG5cdHNlbWFudGljT2JqZWN0c0V4cHJlc3Npb25MaXN0OiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPltdO1xuXHRxdWFsaWZpZXJNYXA6IFJlY29yZDxzdHJpbmcsIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPjtcbn0ge1xuXHRjb25zdCBxdWFsaWZpZXJNYXA6IFJlY29yZDxzdHJpbmcsIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPiA9IHt9O1xuXHRjb25zdCBzZW1hbnRpY09iamVjdHNMaXN0OiBzdHJpbmdbXSA9IFtdO1xuXHRjb25zdCBzZW1hbnRpY09iamVjdHNFeHByZXNzaW9uTGlzdDogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz5bXSA9IFtdO1xuXHRpZiAocHJvcGVydHlXaXRoU2VtYW50aWNPYmplY3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdGZvciAoY29uc3Qgc2VtYW50aWNPYmplY3Qgb2YgZ2V0U2VtYW50aWNPYmplY3RzKHByb3BlcnR5V2l0aFNlbWFudGljT2JqZWN0KSkge1xuXHRcdFx0Y29uc3Qgc2VtYW50aWNPYmplY3RFeHByZXNzaW9uID0gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKHNlbWFudGljT2JqZWN0KTtcblx0XHRcdGNvbnN0IGNvbXBpbGVkU2VtYW50aWNPYmplY3QgPSBjb21waWxlRXhwcmVzc2lvbihzZW1hbnRpY09iamVjdEV4cHJlc3Npb24pO1xuXHRcdFx0Ly8gdGhpcyBzaG91bGQgbm90IGhhcHBlbiwgYnV0IHdlIG1ha2Ugc3VyZSBub3QgdG8gYWRkIHR3aWNlIHRoZSBzZW1hbnRpY09iamVjdCBvdGhlcndpc2UgdGhlIG1kY0xpbmsgY3Jhc2hlc1xuXHRcdFx0aWYgKGNvbXBpbGVkU2VtYW50aWNPYmplY3QgJiYgIXNlbWFudGljT2JqZWN0c0xpc3QuaW5jbHVkZXMoY29tcGlsZWRTZW1hbnRpY09iamVjdCkpIHtcblx0XHRcdFx0cXVhbGlmaWVyTWFwW3NlbWFudGljT2JqZWN0LnF1YWxpZmllciB8fCBcIlwiXSA9IGNvbXBpbGVkU2VtYW50aWNPYmplY3Q7XG5cdFx0XHRcdHNlbWFudGljT2JqZWN0c0xpc3QucHVzaChjb21waWxlZFNlbWFudGljT2JqZWN0KTtcblx0XHRcdFx0c2VtYW50aWNPYmplY3RzRXhwcmVzc2lvbkxpc3QucHVzaChzZW1hbnRpY09iamVjdEV4cHJlc3Npb24pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4geyBzZW1hbnRpY09iamVjdHNMaXN0LCBzZW1hbnRpY09iamVjdHNFeHByZXNzaW9uTGlzdCwgcXVhbGlmaWVyTWFwIH07XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgaWYgdGhlIGN1cnJlbnQgdXNlciBjYW4gbmF2aWdhdGUgdG8gc2VtYW50aWMgb2JqZWN0cyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgbGlzdHMuXG4gKiBAcGFyYW0gc2VtYW50aWNPYmplY3RzQ3VycmVudFVzZXJDYW5OYXZpZ2F0ZVRvIFRoZSBsaXN0IG9mIHNlbWFudGljIG9iamVjdHMgdGhlIGN1cnJlbnQgdXNlciBjYW4gbmF2aWdhdGUgdG8uXG4gKiBAcGFyYW0gc2VtYW50aWNPYmplY3RMaXN0IEFuIG9iamVjdCBjb250YWluaW5nIGxpc3RzIGFuZCBtYXBzIG9mIHNlbWFudGljIG9iamVjdHMuXG4gKiBAcGFyYW0gc2VtYW50aWNPYmplY3RMaXN0LnNlbWFudGljT2JqZWN0c0xpc3QgVGhlIGxpc3Qgb2YgYWxsIHNlbWFudGljIG9iamVjdHMuXG4gKiBAcGFyYW0gc2VtYW50aWNPYmplY3RMaXN0LnNlbWFudGljT2JqZWN0c0V4cHJlc3Npb25MaXN0IFRoZSBsaXN0IG9mIGV4cHJlc3Npb25zIGZvciBzZW1hbnRpYyBvYmplY3RzLlxuICogQHBhcmFtIHNlbWFudGljT2JqZWN0TGlzdC5xdWFsaWZpZXJNYXAgQSBtYXAgb2YgcXVhbGlmaWVycyB0byBjb21waWxlZCBleHByZXNzaW9ucy5cbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHN0YXRpYyBhbmQgZHluYW1pYyBzZW1hbnRpYyBvYmplY3RzLlxuICovXG5leHBvcnQgY29uc3QgZ2V0UmVhY2hhYmxlU2VtYW50aWNPYmplY3RzU2V0dGluZ3MgPSBmdW5jdGlvbiAoXG5cdHNlbWFudGljT2JqZWN0c0N1cnJlbnRVc2VyQ2FuTmF2aWdhdGVUbzogc3RyaW5nW10sXG5cdHNlbWFudGljT2JqZWN0TGlzdDoge1xuXHRcdHNlbWFudGljT2JqZWN0c0xpc3Q6IHN0cmluZ1tdO1xuXHRcdHNlbWFudGljT2JqZWN0c0V4cHJlc3Npb25MaXN0OiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPltdO1xuXHRcdHF1YWxpZmllck1hcDogUmVjb3JkPHN0cmluZywgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24+O1xuXHR9XG4pOiB7IGhhc1JlYWNoYWJsZVN0YXRpY1NlbWFudGljT2JqZWN0OiBib29sZWFuOyBkeW5hbWljU2VtYW50aWNPYmplY3RzOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPltdIH0ge1xuXHRjb25zdCBkeW5hbWljU2VtYW50aWNPYmplY3RzTGlzdDogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz5bXSA9IFtdO1xuXHRsZXQgcmVzdWx0ID0gZmFsc2U7XG5cdGlmIChzZW1hbnRpY09iamVjdHNDdXJyZW50VXNlckNhbk5hdmlnYXRlVG8pIHtcblx0XHRmb3IgKGNvbnN0IHNlbWFudGljT2JqZWN0IG9mIHNlbWFudGljT2JqZWN0c0N1cnJlbnRVc2VyQ2FuTmF2aWdhdGVUbykge1xuXHRcdFx0Zm9yIChjb25zdCBhY3R1YWxTZW1hbnRpY09iamVjdCBvZiBzZW1hbnRpY09iamVjdExpc3Quc2VtYW50aWNPYmplY3RzTGlzdCkge1xuXHRcdFx0XHRpZiAoc2VtYW50aWNPYmplY3QgPT09IGFjdHVhbFNlbWFudGljT2JqZWN0KSB7XG5cdFx0XHRcdFx0cmVzdWx0ID0gdHJ1ZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKHJlc3VsdCkge1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdFx0c2VtYW50aWNPYmplY3RMaXN0LnNlbWFudGljT2JqZWN0c0V4cHJlc3Npb25MaXN0LmZvckVhY2goKHNlbWFudGljT2JqZWN0RXhwcmVzc2lvbikgPT4ge1xuXHRcdFx0aWYgKHNlbWFudGljT2JqZWN0RXhwcmVzc2lvbi5fdHlwZSAhPT0gXCJDb25zdGFudFwiKSB7XG5cdFx0XHRcdGR5bmFtaWNTZW1hbnRpY09iamVjdHNMaXN0LnB1c2goc2VtYW50aWNPYmplY3RFeHByZXNzaW9uKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRyZXR1cm4geyBoYXNSZWFjaGFibGVTdGF0aWNTZW1hbnRpY09iamVjdDogcmVzdWx0LCBkeW5hbWljU2VtYW50aWNPYmplY3RzOiBkeW5hbWljU2VtYW50aWNPYmplY3RzTGlzdCB9O1xufTtcblxuLyoqXG4gKiBDaGVjayB0aGUgdXNlciByaWdodHMgdG8gbmF2aWdhdGUgdG8gdGhlIHNlbWFudGljIG9iamVjdHMuXG4gKiBAcGFyYW0gc2VtYW50aWNPYmplY3QgVGhlIHNlbWFudGljIG9iamVjdCBuYW1lXG4gKiBAcGFyYW0gZGF0YU1vZGVsUGF0aCBUaGUgRGF0YU1vZGVsT2JqZWN0UGF0aCBvZiB0aGUgcHJvcGVydHlcbiAqIEBwYXJhbSBzZXR0aW5ncyBUaGUgVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyBvZiB0aGUgaW50ZXJuYWwgZmllbGRcbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHNlbWFudGljT2JqZWN0TGlzdCBhbmQgcXVhbGlmaWVyTWFwXG4gKi9cbmV4cG9ydCBjb25zdCBtYW5hZ2VTZW1hbnRpY09iamVjdHNGb3JDdXJyZW50VXNlciA9IGZ1bmN0aW9uIChcblx0c2VtYW50aWNPYmplY3Q6IFByb3BlcnR5QmluZGluZ0luZm8gfCB1bmRlZmluZWQsXG5cdGRhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+LFxuXHRpbnRlcm5hbERhdGFNb2RlbDogSlNPTk1vZGVsXG4pOiB7IGhhc1JlYWNoYWJsZVN0YXRpY1NlbWFudGljT2JqZWN0OiBib29sZWFuOyBkeW5hbWljU2VtYW50aWNPYmplY3RzOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPltdIH0ge1xuXHRjb25zdCBwcm9wZXJ0eTogUHJvcGVydHkgPSBkYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdCE7XG5cdGNvbnN0IHNlbWFudGljT2JqZWN0c0N1cnJlbnRVc2VyQ2FuTmF2aWdhdGVUbyA9IGludGVybmFsRGF0YU1vZGVsPy5nZXRQcm9wZXJ0eShcIi9zZW1hbnRpY09iamVjdHNcIik7XG5cdGNvbnN0IHByb3BlcnR5U2VtYW50aWNPYmplY3RMaXN0ID0gZ2V0U2VtYW50aWNPYmplY3RzQW5kUXVhbGlmaWVyTWFwKHByb3BlcnR5KTtcblxuXHQvLyBzZW1hbnRpYyBvYmplY3QgaXMgaW4gbmF2aWdhdGlvblxuXHRjb25zdCBwcm9wZXJ0eVdpdGhTZW1hbnRpY09iamVjdEZyb21OYXZpZ2F0aW9uID0gZ2V0UHJvcGVydHlXaXRoU2VtYW50aWNPYmplY3QoZGF0YU1vZGVsUGF0aCk7XG5cdGlmIChpc05hdmlnYXRpb25Qcm9wZXJ0eShwcm9wZXJ0eVdpdGhTZW1hbnRpY09iamVjdEZyb21OYXZpZ2F0aW9uKSkge1xuXHRcdGNvbnN0IHNlbWFudGljT2JqZWN0RXhwcmVzc2lvbiA9IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihcblx0XHRcdHByb3BlcnR5V2l0aFNlbWFudGljT2JqZWN0RnJvbU5hdmlnYXRpb24/LmFubm90YXRpb25zPy5Db21tb24/LlNlbWFudGljT2JqZWN0XG5cdFx0KTtcblx0XHRjb25zdCBzZW1hbnRpY09iamVjdFZhbHVlID0gY29tcGlsZUV4cHJlc3Npb24oc2VtYW50aWNPYmplY3RFeHByZXNzaW9uKTtcblx0XHRwcm9wZXJ0eVNlbWFudGljT2JqZWN0TGlzdC5zZW1hbnRpY09iamVjdHNFeHByZXNzaW9uTGlzdC5wdXNoKHNlbWFudGljT2JqZWN0RXhwcmVzc2lvbik7XG5cdFx0cHJvcGVydHlTZW1hbnRpY09iamVjdExpc3Quc2VtYW50aWNPYmplY3RzTGlzdC5wdXNoKHNlbWFudGljT2JqZWN0VmFsdWUgYXMgc3RyaW5nKTtcblx0fVxuXG5cdC8vIGN1c3RvbSBzZW1hbnRpY09iamVjdCBmcm9tIGZpZWxkIHByb3BlcnR5XG5cblx0aWYgKHNlbWFudGljT2JqZWN0ICE9PSB1bmRlZmluZWQgJiYgc2VtYW50aWNPYmplY3QgIT09IFwiXCIpIHtcblx0XHRpZiAoc2VtYW50aWNPYmplY3RbMF0gPT09IFwiW1wiKSB7XG5cdFx0XHRjb25zdCBjdXN0b21TZW1hbnRpY09iamVjdHMgPSBKU09OLnBhcnNlKHNlbWFudGljT2JqZWN0KTtcblx0XHRcdGN1c3RvbVNlbWFudGljT2JqZWN0cy5mb3JFYWNoKChpbnRlcm5hbFNlbWFudGljT2JqZWN0OiBzdHJpbmcpID0+IHtcblx0XHRcdFx0cHJvcGVydHlTZW1hbnRpY09iamVjdExpc3Quc2VtYW50aWNPYmplY3RzTGlzdC5wdXNoKGludGVybmFsU2VtYW50aWNPYmplY3QpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHByb3BlcnR5U2VtYW50aWNPYmplY3RMaXN0LnNlbWFudGljT2JqZWN0c0xpc3QucHVzaChzZW1hbnRpY09iamVjdCk7XG5cdFx0XHQvLyBUaGUgc2VtYW50aWNPYmplY3QgcHJvcGVydHkgb2YgdGhlIGZpZWxkIGNvbnRhaW5zIGEgZm9ybWF0dGVyIG9yIGEgYmluZGluZyBleHByZXNzaW9uXG5cdFx0XHRpZiAoc2VtYW50aWNPYmplY3Quc3RhcnRzV2l0aChcIntcIikgfHwgc2VtYW50aWNPYmplY3Quc3RhcnRzV2l0aChcIns9XCIpKSB7XG5cdFx0XHRcdGNvbnN0IHNlbWFudGljT2JqZWN0RXhwcmVzc2lvbkZyb21GaWVsZCA9IHJlc29sdmVCaW5kaW5nU3RyaW5nKHNlbWFudGljT2JqZWN0KSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPjtcblx0XHRcdFx0cHJvcGVydHlTZW1hbnRpY09iamVjdExpc3Quc2VtYW50aWNPYmplY3RzRXhwcmVzc2lvbkxpc3QucHVzaChzZW1hbnRpY09iamVjdEV4cHJlc3Npb25Gcm9tRmllbGQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gZ2V0UmVhY2hhYmxlU2VtYW50aWNPYmplY3RzU2V0dGluZ3Moc2VtYW50aWNPYmplY3RzQ3VycmVudFVzZXJDYW5OYXZpZ2F0ZVRvLCBwcm9wZXJ0eVNlbWFudGljT2Jq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
@@ -226,13 +226,13 @@ export const manageSemanticObjectsForCurrentUser = function (
226
226
  customSemanticObjects.forEach((internalSemanticObject: string) => {
227
227
  propertySemanticObjectList.semanticObjectsList.push(internalSemanticObject);
228
228
  });
229
- } else if (semanticObject.bindingString) {
230
- const semanticObjectExpressionFromField = resolveBindingString(
231
- semanticObject.bindingString
232
- ) as BindingToolkitExpression<string>;
233
- propertySemanticObjectList.semanticObjectsExpressionList.push(semanticObjectExpressionFromField);
234
229
  } else {
235
230
  propertySemanticObjectList.semanticObjectsList.push(semanticObject);
231
+ // The semanticObject property of the field contains a formatter or a binding expression
232
+ if (semanticObject.startsWith("{") || semanticObject.startsWith("{=")) {
233
+ const semanticObjectExpressionFromField = resolveBindingString(semanticObject) as BindingToolkitExpression<string>;
234
+ propertySemanticObjectList.semanticObjectsExpressionList.push(semanticObjectExpressionFromField);
235
+ }
236
236
  }
237
237
  }
238
238
  return getReachableSemanticObjectsSettings(semanticObjectsCurrentUserCanNavigateTo, propertySemanticObjectList);