@sapui5/sap.fe.macros 1.138.0 → 1.139.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 (210) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Breadcrumbs.js +269 -0
  4. package/src/sap/fe/macros/Breadcrumbs.tsx +243 -0
  5. package/src/sap/fe/macros/Chart.js +1 -1
  6. package/src/sap/fe/macros/Chart.tsx +1 -1
  7. package/src/sap/fe/macros/CommonHelper.js +2 -2
  8. package/src/sap/fe/macros/CommonHelper.ts +1 -1
  9. package/src/sap/fe/macros/Field.js +21 -4
  10. package/src/sap/fe/macros/Field.ts +21 -3
  11. package/src/sap/fe/macros/FooterContent.js +40 -10
  12. package/src/sap/fe/macros/FooterContent.tsx +44 -8
  13. package/src/sap/fe/macros/FormElement.js +2 -2
  14. package/src/sap/fe/macros/FormElement.ts +1 -2
  15. package/src/sap/fe/macros/MultiValueField.js +17 -4
  16. package/src/sap/fe/macros/MultiValueField.tsx +7 -2
  17. package/src/sap/fe/macros/RichTextEditor.js +30 -6
  18. package/src/sap/fe/macros/RichTextEditor.tsx +34 -7
  19. package/src/sap/fe/macros/Share.js +73 -40
  20. package/src/sap/fe/macros/Share.tsx +29 -1
  21. package/src/sap/fe/macros/ValueHelp.js +4 -29
  22. package/src/sap/fe/macros/ValueHelp.tsx +2 -43
  23. package/src/sap/fe/macros/ai/EasyFillButton.js +10 -4
  24. package/src/sap/fe/macros/ai/EasyFillButton.tsx +8 -1
  25. package/src/sap/fe/macros/ai/EasyFillDialog.js +25 -10
  26. package/src/sap/fe/macros/ai/EasyFillDialog.tsx +32 -23
  27. package/src/sap/fe/macros/ai/EasyFilterBar.js +30 -30
  28. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +40 -43
  29. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +11 -5
  30. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +14 -5
  31. package/src/sap/fe/macros/chart/ChartDelegate.js +4 -4
  32. package/src/sap/fe/macros/chart/ChartDelegate.ts +3 -3
  33. package/src/sap/fe/macros/chart/MdcChartTemplate.js +20 -6
  34. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +16 -8
  35. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +5 -1
  36. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +4 -0
  37. package/src/sap/fe/macros/controls/FieldWrapper.js +9 -3
  38. package/src/sap/fe/macros/controls/FieldWrapper.ts +11 -2
  39. package/src/sap/fe/macros/controls/FilterBar.js +86 -3
  40. package/src/sap/fe/macros/controls/FilterBar.ts +97 -2
  41. package/src/sap/fe/macros/controls/RequiredFlexBox.js +62 -0
  42. package/src/sap/fe/macros/controls/RequiredFlexBox.tsx +20 -0
  43. package/src/sap/fe/macros/controls/Section.js +3 -2
  44. package/src/sap/fe/macros/controls/Section.ts +2 -1
  45. package/src/sap/fe/macros/controls/filterbar/VisualFilter.js +21 -11
  46. package/src/sap/fe/macros/controls/filterbar/VisualFilter.ts +25 -11
  47. package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.js +11 -2
  48. package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.ts +12 -1
  49. package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.js +18 -1
  50. package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.ts +20 -0
  51. package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
  52. package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
  53. package/src/sap/fe/macros/designtime/Designtime.helper.js +12 -2
  54. package/src/sap/fe/macros/designtime/Designtime.helper.ts +12 -0
  55. package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +16 -5
  56. package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +6 -1
  57. package/src/sap/fe/macros/field/FieldBaseDelegate.js +20 -8
  58. package/src/sap/fe/macros/field/FieldBaseDelegate.ts +34 -9
  59. package/src/sap/fe/macros/field/FieldFormatOptions.js +73 -44
  60. package/src/sap/fe/macros/field/FieldFormatOptions.ts +20 -2
  61. package/src/sap/fe/macros/field/FieldRuntime.js +38 -8
  62. package/src/sap/fe/macros/field/FieldRuntime.ts +65 -7
  63. package/src/sap/fe/macros/filter/FilterUtils.js +7 -1
  64. package/src/sap/fe/macros/filter/FilterUtils.ts +7 -0
  65. package/src/sap/fe/macros/filterBar/FilterBar.block.js +8 -2
  66. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +2 -5
  67. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +8 -8
  68. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +8 -8
  69. package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.js +3 -1
  70. package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.ts +2 -0
  71. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +1 -1
  72. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +1 -1
  73. package/src/sap/fe/macros/form/Form.block.js +6 -2
  74. package/src/sap/fe/macros/form/Form.block.ts +4 -1
  75. package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -2
  76. package/src/sap/fe/macros/form/FormContainer.fragment.xml +40 -0
  77. package/src/sap/fe/macros/form/FormContainerAPI.js +14 -16
  78. package/src/sap/fe/macros/form/FormContainerAPI.ts +13 -15
  79. package/src/sap/fe/macros/form/FormDelegate.js +20 -1
  80. package/src/sap/fe/macros/form/FormDelegate.ts +25 -0
  81. package/src/sap/fe/macros/formatters/TableFormatter.js +10 -1
  82. package/src/sap/fe/macros/formatters/TableFormatter.ts +14 -5
  83. package/src/sap/fe/macros/inlineEdit/InlineEdit.js +15 -3
  84. package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +14 -2
  85. package/src/sap/fe/macros/internal/DataPoint.js +2 -1
  86. package/src/sap/fe/macros/internal/DataPoint.tsx +1 -0
  87. package/src/sap/fe/macros/internal/DataPointFormatOptions.js +11 -2
  88. package/src/sap/fe/macros/internal/DataPointFormatOptions.ts +3 -0
  89. package/src/sap/fe/macros/internal/FilterField.block.js +4 -2
  90. package/src/sap/fe/macros/internal/FilterField.block.ts +3 -1
  91. package/src/sap/fe/macros/internal/field/CheckBoxGroup.fragment.xml +25 -0
  92. package/src/sap/fe/macros/internal/field/DisplayStyle.js +52 -12
  93. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +54 -5
  94. package/src/sap/fe/macros/internal/field/EditStyle.js +5 -1
  95. package/src/sap/fe/macros/internal/field/EditStyle.tsx +4 -0
  96. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +9 -2
  97. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +10 -0
  98. package/src/sap/fe/macros/internal/field/FieldStyles.js +1 -1
  99. package/src/sap/fe/macros/internal/field/FieldStyles.tsx +2 -1
  100. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
  101. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +3 -3
  102. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +1 -0
  103. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +11 -3
  104. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +12 -7
  105. package/src/sap/fe/macros/internal/valuehelp/ValueListTable.fragment.xml +1 -0
  106. package/src/sap/fe/macros/library.js +1 -1
  107. package/src/sap/fe/macros/mdc/adapter/StateHelper.js +11 -6
  108. package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +12 -7
  109. package/src/sap/fe/macros/messagebundle.properties +37 -29
  110. package/src/sap/fe/macros/messagebundle_ar.properties +5 -3
  111. package/src/sap/fe/macros/messagebundle_bg.properties +6 -4
  112. package/src/sap/fe/macros/messagebundle_ca.properties +8 -6
  113. package/src/sap/fe/macros/messagebundle_cnr.properties +5 -3
  114. package/src/sap/fe/macros/messagebundle_cs.properties +4 -2
  115. package/src/sap/fe/macros/messagebundle_cy.properties +7 -5
  116. package/src/sap/fe/macros/messagebundle_da.properties +6 -4
  117. package/src/sap/fe/macros/messagebundle_de.properties +11 -9
  118. package/src/sap/fe/macros/messagebundle_el.properties +7 -5
  119. package/src/sap/fe/macros/messagebundle_en.properties +8 -6
  120. package/src/sap/fe/macros/messagebundle_en_GB.properties +8 -6
  121. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +8 -6
  122. package/src/sap/fe/macros/messagebundle_es.properties +6 -4
  123. package/src/sap/fe/macros/messagebundle_es_MX.properties +6 -4
  124. package/src/sap/fe/macros/messagebundle_et.properties +5 -3
  125. package/src/sap/fe/macros/messagebundle_fi.properties +8 -6
  126. package/src/sap/fe/macros/messagebundle_fr.properties +6 -4
  127. package/src/sap/fe/macros/messagebundle_fr_CA.properties +8 -6
  128. package/src/sap/fe/macros/messagebundle_hi.properties +6 -4
  129. package/src/sap/fe/macros/messagebundle_hr.properties +6 -4
  130. package/src/sap/fe/macros/messagebundle_hu.properties +4 -2
  131. package/src/sap/fe/macros/messagebundle_id.properties +8 -6
  132. package/src/sap/fe/macros/messagebundle_it.properties +4 -2
  133. package/src/sap/fe/macros/messagebundle_iw.properties +5 -3
  134. package/src/sap/fe/macros/messagebundle_ja.properties +5 -3
  135. package/src/sap/fe/macros/messagebundle_kk.properties +5 -3
  136. package/src/sap/fe/macros/messagebundle_ko.properties +4 -2
  137. package/src/sap/fe/macros/messagebundle_lt.properties +6 -4
  138. package/src/sap/fe/macros/messagebundle_lv.properties +5 -3
  139. package/src/sap/fe/macros/messagebundle_mk.properties +5 -3
  140. package/src/sap/fe/macros/messagebundle_ms.properties +8 -6
  141. package/src/sap/fe/macros/messagebundle_nl.properties +7 -5
  142. package/src/sap/fe/macros/messagebundle_no.properties +6 -4
  143. package/src/sap/fe/macros/messagebundle_pl.properties +6 -4
  144. package/src/sap/fe/macros/messagebundle_pt.properties +7 -5
  145. package/src/sap/fe/macros/messagebundle_pt_PT.properties +6 -4
  146. package/src/sap/fe/macros/messagebundle_ro.properties +7 -5
  147. package/src/sap/fe/macros/messagebundle_ru.properties +4 -2
  148. package/src/sap/fe/macros/messagebundle_sh.properties +5 -3
  149. package/src/sap/fe/macros/messagebundle_sk.properties +5 -3
  150. package/src/sap/fe/macros/messagebundle_sl.properties +6 -4
  151. package/src/sap/fe/macros/messagebundle_sr.properties +5 -3
  152. package/src/sap/fe/macros/messagebundle_sv.properties +5 -3
  153. package/src/sap/fe/macros/messagebundle_th.properties +4 -2
  154. package/src/sap/fe/macros/messagebundle_tr.properties +4 -2
  155. package/src/sap/fe/macros/messagebundle_uk.properties +10 -8
  156. package/src/sap/fe/macros/messagebundle_vi.properties +6 -4
  157. package/src/sap/fe/macros/messagebundle_zh_CN.properties +5 -3
  158. package/src/sap/fe/macros/messagebundle_zh_TW.properties +5 -3
  159. package/src/sap/fe/macros/messages/MessageButton.js +17 -19
  160. package/src/sap/fe/macros/messages/MessageButton.ts +24 -22
  161. package/src/sap/fe/macros/table/Action.js +24 -2
  162. package/src/sap/fe/macros/table/Action.ts +13 -0
  163. package/src/sap/fe/macros/table/ActionGroup.js +24 -2
  164. package/src/sap/fe/macros/table/ActionGroup.ts +13 -0
  165. package/src/sap/fe/macros/table/ActionGroupOverride.js +24 -2
  166. package/src/sap/fe/macros/table/ActionGroupOverride.ts +13 -0
  167. package/src/sap/fe/macros/table/ActionOverride.js +24 -2
  168. package/src/sap/fe/macros/table/ActionOverride.ts +13 -0
  169. package/src/sap/fe/macros/table/ActionsTemplating.js +73 -12
  170. package/src/sap/fe/macros/table/ActionsTemplating.tsx +69 -13
  171. package/src/sap/fe/macros/table/Column.js +3 -3
  172. package/src/sap/fe/macros/table/Column.ts +2 -2
  173. package/src/sap/fe/macros/table/MdcTableTemplate.js +20 -8
  174. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +32 -6
  175. package/src/sap/fe/macros/table/QuickFilterSelector.js +35 -14
  176. package/src/sap/fe/macros/table/QuickFilterSelector.tsx +22 -3
  177. package/src/sap/fe/macros/table/Table.block.js +137 -108
  178. package/src/sap/fe/macros/table/Table.block.tsx +29 -2
  179. package/src/sap/fe/macros/table/Table.js +7 -1
  180. package/src/sap/fe/macros/table/Table.tsx +7 -1
  181. package/src/sap/fe/macros/table/TableAPI.js +150 -133
  182. package/src/sap/fe/macros/table/TableAPI.ts +20 -3
  183. package/src/sap/fe/macros/table/TableDefinition.js +4 -2
  184. package/src/sap/fe/macros/table/TableDefinition.ts +3 -1
  185. package/src/sap/fe/macros/table/TableRuntime.js +3 -3
  186. package/src/sap/fe/macros/table/TableRuntime.ts +2 -2
  187. package/src/sap/fe/macros/table/TableSizeHelper.js +3 -3
  188. package/src/sap/fe/macros/table/TableSizeHelper.ts +5 -2
  189. package/src/sap/fe/macros/table/TreeTable.js +7 -1
  190. package/src/sap/fe/macros/table/TreeTable.tsx +7 -1
  191. package/src/sap/fe/macros/table/delegates/TableDelegate.js +27 -20
  192. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +35 -26
  193. package/src/sap/fe/macros/table/designtime/Table.designtime.js +3 -1
  194. package/src/sap/fe/macros/table/designtime/Table.designtime.ts +2 -0
  195. package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +10 -10
  196. package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +11 -9
  197. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +8 -8
  198. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +7 -6
  199. package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.js +3 -1
  200. package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.ts +2 -1
  201. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -1
  202. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +1 -0
  203. package/src/sap/fe/macros/table/mixin/TableHierarchy.js +4 -1
  204. package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +3 -0
  205. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +37 -8
  206. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +47 -16
  207. package/src/sap/fe/macros/visualfilters/VisualFilter.js +95 -6
  208. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +93 -2
  209. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +15 -3
  210. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +17 -2
@@ -936,10 +936,7 @@ const ValueListHelper = {
936
936
  ): void {
937
937
  if (
938
938
  !path.key &&
939
- ValueListHelper._parameterIsA(parameter, [
940
- CommonAnnotationTypes.ValueListParameterOut,
941
- CommonAnnotationTypes.ValueListParameterInOut
942
- ]) &&
939
+ ValueListHelper._parameterIsA(parameter, [CommonAnnotationTypes.ValueListParameterInOut]) &&
943
940
  localDataPropertyPath === propertyName
944
941
  ) {
945
942
  /* EXTERNALID */
@@ -1009,6 +1006,7 @@ const ValueListHelper = {
1009
1006
  if ("$Key" in entityType && entityType.$Key) {
1010
1007
  vhKeys = [...(entityType.$Key as string[])];
1011
1008
  }
1009
+ const firstKey = vhKeys[0];
1012
1010
 
1013
1011
  for (const parameter of annotationValueListType.Parameters) {
1014
1012
  //All String fields are allowed for filter
@@ -1049,12 +1047,13 @@ const ValueListHelper = {
1049
1047
 
1050
1048
  //In and InOut and Out
1051
1049
  if (
1052
- ValueListHelper._parameterIsA(parameter, [
1050
+ (ValueListHelper._parameterIsA(parameter, [
1053
1051
  CommonAnnotationTypes.ValueListParameterIn,
1054
1052
  CommonAnnotationTypes.ValueListParameterOut,
1055
1053
  CommonAnnotationTypes.ValueListParameterInOut
1056
1054
  ]) &&
1057
- localDataPropertyPath !== propertyName
1055
+ localDataPropertyPath !== propertyName) ||
1056
+ ValueListHelper._parameterIsA(parameter, [CommonAnnotationTypes.ValueListParameterOut])
1058
1057
  ) {
1059
1058
  const vhParameter = ValueListHelper._getVhParameter(
1060
1059
  conditionModel,
@@ -1087,6 +1086,13 @@ const ValueListHelper = {
1087
1086
  // Enrich keys with out-parameters
1088
1087
  ValueListHelper._enrichKeys(vhKeys, parameter);
1089
1088
  }
1089
+ if (!path.key) {
1090
+ path.key = firstKey;
1091
+ const propertyPath = `/${annotationValueListType.CollectionPath}/${firstKey}`;
1092
+ const propertyAnnotations = (metaModelVH.getObject(`${propertyPath}@`) || {}) as AnnotationsForProperty;
1093
+ // We update path.descriptionPath for the key property
1094
+ path.descriptionPath = propertyAnnotations[AnnotationText]?.$Path || "";
1095
+ }
1090
1096
 
1091
1097
  /* Ensure that vhKeys are part of the columnDefs, otherwise it is not considered in $select (BCP 2270141154) */
1092
1098
  for (const vhKey of vhKeys) {
@@ -1154,7 +1160,6 @@ const ValueListHelper = {
1154
1160
  const metaModelVH = annotationValueListType.$model.getMetaModel(),
1155
1161
  entitySetPath = `/${annotationValueListType.CollectionPath}`;
1156
1162
  const entityType = await ValueListHelper._getEntityType(metaModelVH, entitySetPath);
1157
-
1158
1163
  const valueListInfo = ValueListHelper._processParameters(
1159
1164
  annotationValueListType,
1160
1165
  propertyName,
@@ -65,6 +65,7 @@
65
65
  vhIdPrefix="FieldValueHelp"
66
66
  >
67
67
  <formatOptions
68
+ showEmptyIndicator="false"
68
69
  displayMode="{= ValueHelpTemplating.getValueHelpTableDisplayMode(${property>@@Property.getPropertyObjectPath}, ${source>valueHelpWithFixedValues}) }"
69
70
  />
70
71
  </macro:Field>
@@ -24,7 +24,7 @@ sap.ui.define(["sap/base/Log", "sap/f/library", "sap/fe/controls/library", "sap/
24
24
  controls: [],
25
25
  elements: [],
26
26
  // eslint-disable-next-line no-template-curly-in-string
27
- version: "1.138.0",
27
+ version: "1.139.1",
28
28
  noLibraryCSS: true,
29
29
  extensions: {
30
30
  flChangeHandlers: {
@@ -99,7 +99,9 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/core/templatin
99
99
  * @returns Supported filter fields.
100
100
  */
101
101
  async _getSupportedFilterFields(control) {
102
- if (control.isA("sap.ui.mdc.Filterbar")) {
102
+ if (control.isA("sap.ui.mdc.Table")) {
103
+ return control.getParent().getEnhancedFetchedPropertyInfos();
104
+ } else if (control.isA("sap.ui.mdc.Filterbar")) {
103
105
  await control.waitForInitialization();
104
106
  return control.getControlDelegate().fetchFilterProperties(control);
105
107
  } else if (control.isA("sap.fe.macros.controls.FilterBar")) {
@@ -110,7 +112,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/core/templatin
110
112
  return control.getControlDelegate().fetchProperties(control);
111
113
  },
112
114
  /**
113
- * Clears all input values of visible filter fields in the table, chart, or filter bar..
115
+ * Clears all input values of visible filter fields in the table, chart, or filter bar.
114
116
  * @param controlInstance This can be a filter bar, chart, or table.
115
117
  */
116
118
  async clearFilterValues(controlInstance) {
@@ -183,9 +185,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/core/templatin
183
185
  propertyInfos.forEach(propertyInfo => {
184
186
  if (control.isA("sap.ui.mdc.Table")) {
185
187
  propertyInfo["conditionPath"] = propertyInfo.name;
186
- propertyInfo["annotationPath"] = propertyInfo.metadataPath ? propertyInfo.metadataPath : "";
187
188
  propertyInfo["hasValueHelp"] = PropertyHelper.hasValueHelp(control.getPropertyHelper().getProperty(propertyInfo.name));
188
- propertyInfo["dataType"] = propertyInfo?.typeConfig?.className;
189
189
  } else if (control.isA("sap.ui.mdc.Chart")) {
190
190
  if (propertyInfo.path) {
191
191
  propertyInfo["name"] = propertyInfo.path;
@@ -225,7 +225,12 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/core/templatin
225
225
  if (controlInstance?.isA("sap.ui.mdc.Chart")) {
226
226
  this.convertConditionsForChart(stateToApply);
227
227
  }
228
- return await StateUtil.applyExternalState(controlInstance, stateToApply);
228
+ const diffState = await StateUtil.diffState(controlInstance, state, stateToApply);
229
+ const applyStateResult = await StateUtil.applyExternalState(controlInstance, stateToApply);
230
+ return {
231
+ diffState,
232
+ applyStateResult
233
+ };
229
234
  } catch (err) {
230
235
  const id = controlInstance?.getId();
231
236
  const message = err instanceof Error ? err.message : String(err);
@@ -252,4 +257,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/core/templatin
252
257
  };
253
258
  return StateHelper;
254
259
  }, false);
255
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdGF0ZUhlbHBlciIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJjb250cm9sIiwiY29udHJvbFN0YXRlIiwiU3RhdGVVdGlsIiwicmV0cmlldmVFeHRlcm5hbFN0YXRlIiwiY29udHJvbE9iamVjdCIsImZpbHRlciIsInBhcmFtZXRlcnMiLCJnZXRQYXJlbnQiLCJpc0EiLCJnZXRQYXJhbWV0ZXJzIiwidW5kZWZpbmVkIiwic2VsZWN0aW9uVmFyaWFudCIsIlN0YXRlRmlsdGVyc1RvU2VsZWN0aW9uVmFyaWFudCIsImdldFNlbGVjdGlvblZhcmlhbnRGcm9tQ29uZGl0aW9ucyIsImdldFByb3BlcnR5SGVscGVyIiwiZXh0ZXJuYWxTViIsIlNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3RPcHRpb25zIiwiX2dldFNlbGVjdE9wdGlvbnMiLCJwcm9wZXJ0eSIsIm1hc3NBZGRTZWxlY3RPcHRpb24iLCJzcGxpdCIsImVycm9yIiwiaWQiLCJnZXRJZCIsIm1lc3NhZ2UiLCJFcnJvciIsIlN0cmluZyIsIkxvZyIsImNvbnZlcnRTZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMiLCJwcmVmaWxsRGVzY3JpcHRpb25zIiwibW9kZWwiLCJwcm9wZXJ0eUluZm9zIiwiX2dldFN1cHBvcnRlZEZpbHRlckZpZWxkcyIsImxlbmd0aCIsImZpbHRlckJhckluZm9Gb3JDb252ZXJzaW9uIiwiX2dldENvbnRyb2xJbmZvRm9yQ29udmVyc2lvbiIsIm1ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsImNvcHlvZlByb3BlcnR5SW5mb3MiLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJ1cGRhdGVkUHJvcGVydHlJbmZvcyIsIl91cGRhdGVQcm9wZXJ0eUluZm9Ub1N1cHBvcnRTViIsImNvbmRpdGlvbnMiLCJzdlRvU3RhdGVGaWx0ZXJzIiwiZ2V0U3RhdGVGaWx0ZXJzRnJvbVNWIiwiZ2V0TW9kZWwiLCJjb250ZXh0UGF0aCIsImRhdGEiLCJ1c2VTZW1hbnRpY0RhdGVSYW5nZSIsInZpZXdEYXRhSW5zdGFuY2UiLCJ2aWV3RGF0YSIsImdldERhdGEiLCJjb25maWciLCJjb250cm9sQ29uZmlndXJhdGlvbiIsInNlbGVjdGlvbkZpZWxkc0NvbmZpZ3MiLCJmaWx0ZXJGaWVsZHNDb25maWciLCJmaWx0ZXJGaWVsZHMiLCJ3YWl0Rm9ySW5pdGlhbGl6YXRpb24iLCJnZXRDb250cm9sRGVsZWdhdGUiLCJmZXRjaEZpbHRlclByb3BlcnRpZXMiLCJhd2FpdENvbnRyb2xEZWxlZ2F0ZSIsImZldGNoUHJvcGVydGllcyIsImNsZWFyRmlsdGVyVmFsdWVzIiwiY29udHJvbEluc3RhbmNlIiwiX2NsZWFyRmlsdGVyVmFsdWVzV2l0aE9wdGlvbnMiLCJjb250ZW50IiwiZmlyZUV2ZW50Iiwib3B0aW9ucyIsInN0YXRlIiwiZWRpdFN0YXRlUGF0aCIsImN1cnJlbnRFZGl0U3RhdGVDb25kaXRpb24iLCJlZGl0U3RhdGVEZWZhdWx0VmFsdWUiLCJjdXJyZW50RWRpdFN0YXRlSXNEZWZhdWx0Iiwic2hvdWxkQ2xlYXJFZGl0RmlsdGVyIiwiRHJhZnRFZGl0U3RhdGUiLCJBTEwiLCJkZWVwQ2xvbmUiLCJ2YWx1ZXMiLCJPYmplY3QiLCJrZXlzIiwiY2xlYXJFZGl0RmlsdGVyIiwiY29uZGl0aW9uUGF0aCIsImNvbmRpdGlvbiIsImZpbHRlcmVkIiwiYXBwbHlFeHRlcm5hbFN0YXRlIiwiY2xlYW5VcEFsbEZpbHRlckZpZWxkc0luRXJyb3JTdGF0ZSIsImZvckVhY2giLCJwcm9wZXJ0eUluZm8iLCJuYW1lIiwibWV0YWRhdGFQYXRoIiwiUHJvcGVydHlIZWxwZXIiLCJoYXNWYWx1ZUhlbHAiLCJnZXRQcm9wZXJ0eSIsInR5cGVDb25maWciLCJjbGFzc05hbWUiLCJwYXRoIiwiZ2V0UHJvcGVydHlEYXRhTW9kZWwiLCJ0YXJnZXRPYmplY3QiLCJkYXRhVHlwZSIsInNldFNlbGVjdGlvblZhcmlhbnRUb01kY0NvbnRyb2wiLCJhcmd1bWVudHMiLCJzdGF0ZVRvQXBwbHkiLCJnZXRTdGF0ZVRvQXBwbHkiLCJjb252ZXJ0Q29uZGl0aW9uc0ZvckNoYXJ0IiwiZXJyIiwiYXNzaWduIiwiaXRlbXMiLCJwcm9wZXJ0eU9iaiJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiU3RhdGVIZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgZGVlcENsb25lIGZyb20gXCJzYXAvYmFzZS91dGlsL2RlZXBDbG9uZVwiO1xuaW1wb3J0IHR5cGUgeyBWaWV3RGF0YSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9UZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCAqIGFzIFByb3BlcnR5SGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQgRHJhZnRFZGl0U3RhdGUgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0RyYWZ0RWRpdFN0YXRlXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXJBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckJhckFQSVwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUluZm8gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC9Qcm9wZXJ0eUluZm9cIjtcbmltcG9ydCB0eXBlIHsgQ29udmVyc2lvbkluZm8gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9tZGMvYWRhcHRlci9TZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnNcIjtcbmltcG9ydCBzdlRvU3RhdGVGaWx0ZXJzIGZyb20gXCJzYXAvZmUvbWFjcm9zL21kYy9hZGFwdGVyL1NlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVyc1wiO1xuaW1wb3J0IFN0YXRlRmlsdGVyc1RvU2VsZWN0aW9uVmFyaWFudCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9tZGMvYWRhcHRlci9TdGF0ZUZpbHRlclRvU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IHR5cGUgeyBFeHRlcm5hbFN0YXRlVHlwZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3ZhbHVlaGVscC9WYWx1ZUhlbHBEZWxlZ2F0ZVwiO1xuaW1wb3J0IFNlbGVjdGlvblZhcmlhbnQgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1NlbGVjdGlvblZhcmlhbnRcIjtcbmltcG9ydCB0eXBlIENvcmVDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBDaGFydCBmcm9tIFwic2FwL3VpL21kYy9DaGFydFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL21kYy9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXIgZnJvbSBcInNhcC91aS9tZGMvRmlsdGVyQmFyXCI7XG5pbXBvcnQgdHlwZSBUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBTdGF0ZVRvQXBwbHksIEZpbHRlciBhcyBTdGF0ZVV0aWxGaWx0ZXIgfSBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IFN0YXRlVXRpbCBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IHR5cGUgTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIENoYXJ0VHlwZSBmcm9tIFwiLi4vLi4vQ2hhcnRcIjtcbmltcG9ydCB0eXBlIE1hY3JvQVBJIGZyb20gXCIuLi8uLi9NYWNyb0FQSVwiO1xuXG4vKipcbiAqIFRoaXMgaXMgdG8gZXh0ZW5kIE1EQyBjb250cm9sIEFQSXMgZm9yIGZpbHRlciwgdGFibGUsIGNoYXJ0IGJ1aWxkaW5nIGJsb2Nrcy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5jb25zdCBTdGF0ZUhlbHBlciA9IHtcblx0LyoqXG5cdCAqIEdldHMgc2VsZWN0aW9uIHZhcmlhbnQgZnJvbSB0aGUgbWRjIGNvbnRyb2wuXG5cdCAqIEBwYXJhbSBjb250cm9sIFRoZSBjb250cm9sIGZvciB3aGljaCBTZWxlY3Rpb24gVmFyaWFudCBpcyB0byBiZSBmZXRjaGVkXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB3aGljaCByZXNvbHZlcyB3aXRoIGEge0BsaW5rIHNhcC5mZS5uYXZpZ2F0aW9uLlNlbGVjdGlvblZhcmlhbnR9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGdldFNlbGVjdGlvblZhcmlhbnQoY29udHJvbDogQ29yZUNvbnRyb2wgfCB1bmRlZmluZWQpOiBQcm9taXNlPFNlbGVjdGlvblZhcmlhbnQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgY29udHJvbFN0YXRlID0gYXdhaXQgU3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZShjb250cm9sIGFzIENvbnRyb2wpO1xuXHRcdFx0Y29uc3QgY29udHJvbE9iamVjdCA9IGNvbnRyb2xTdGF0ZS5maWx0ZXIgYXMgU3RhdGVVdGlsRmlsdGVyO1xuXHRcdFx0bGV0IHBhcmFtZXRlcnM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkID0gW107XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGNvbnRyb2w/LmdldFBhcmVudCgpPy5pc0EoXCJzYXAuZmUubWFjcm9zLmZpbHRlckJhci5GaWx0ZXJCYXJBUElcIikgJiZcblx0XHRcdFx0KGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgRmlsdGVyQmFyQVBJKS5nZXRQYXJhbWV0ZXJzICE9PSB1bmRlZmluZWRcblx0XHRcdCkge1xuXHRcdFx0XHRwYXJhbWV0ZXJzID0gKGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgRmlsdGVyQmFyQVBJKS5nZXRQYXJhbWV0ZXJzKCk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBzZWxlY3Rpb25WYXJpYW50ID0gU3RhdGVGaWx0ZXJzVG9TZWxlY3Rpb25WYXJpYW50LmdldFNlbGVjdGlvblZhcmlhbnRGcm9tQ29uZGl0aW9ucyhcblx0XHRcdFx0Y29udHJvbE9iamVjdCxcblx0XHRcdFx0KGNvbnRyb2wgYXMgQ29udHJvbCkuZ2V0UHJvcGVydHlIZWxwZXIoKSxcblx0XHRcdFx0cGFyYW1ldGVyc1xuXHRcdFx0KTtcblx0XHRcdGlmIChjb250cm9sPy5pc0EoXCJzYXAudWkubWRjLkNoYXJ0XCIpKSB7XG5cdFx0XHRcdGNvbnN0IGV4dGVybmFsU1YgPSBuZXcgU2VsZWN0aW9uVmFyaWFudCgpO1xuXHRcdFx0XHRjb25zdCBzZWxlY3RPcHRpb25zID0gc2VsZWN0aW9uVmFyaWFudC5fZ2V0U2VsZWN0T3B0aW9ucygpO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHByb3BlcnR5IGluIHNlbGVjdE9wdGlvbnMpIHtcblx0XHRcdFx0XHRleHRlcm5hbFNWLm1hc3NBZGRTZWxlY3RPcHRpb24ocHJvcGVydHkuc3BsaXQoXCJfZmVfZ3JvdXBhYmxlX1wiKVsxXSwgc2VsZWN0T3B0aW9uc1twcm9wZXJ0eV0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBleHRlcm5hbFNWO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIHNlbGVjdGlvblZhcmlhbnQ7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRcdGNvbnN0IGlkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBjb250cm9sPy5nZXRJZCgpO1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcblx0XHRcdExvZy5lcnJvcihgQnVpbGRpbmcgQmxvY2sgKCR7aWR9KSAtIGdldCBzZWxlY3Rpb24gdmFyaWFudCBmYWlsZWQgOiAke21lc3NhZ2V9YCk7XG5cdFx0XHR0aHJvdyBFcnJvcihtZXNzYWdlKTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIENvbnZlcnQgc2VsZWN0aW9uIHZhcmlhbnQgdG8gY29uZGl0aW9ucy5cblx0ICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBjYW4gYmUgYSB0YWJsZSwgY2hhcnQgb3IgZmlsdGVyIGJhclxuXHQgKiBAcGFyYW0gc2VsZWN0aW9uVmFyaWFudCBUaGUgc2VsZWN0aW9uIHZhcmlhbnQgdG8gYXBwbHkgdG8gdGhlIHRhYmxlIG9yIGNoYXJ0IG9yIGZpbHRlciBiYXIuXG5cdCAqIEBwYXJhbSBwcmVmaWxsRGVzY3JpcHRpb25zIElmIHRydWUsIHdlIHRyeSB0byBmaW5kIHRoZSBhc3NvY2lhdGVkIFRleHQgdmFsdWUgZm9yIGVhY2ggcHJvcGVydHkgaW4gdGhlIHNlbGVjdGlvblZhcmlhbnQgKHRvIGF2b2lkIGZldGNoaW5nIGl0IGZyb20gdGhlIHNlcnZlcilcblx0ICogQHBhcmFtIG1vZGVsIFRoZSBjb250cm9sIG1vZGVsXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSByZXNvbHZpbmcgdG8gY29uZGl0aW9uc1xuXHQgKi9cblx0YXN5bmMgY29udmVydFNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycyhcblx0XHRjb250cm9sOiBDb250cm9sLFxuXHRcdHNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0cHJlZmlsbERlc2NyaXB0aW9uczogYm9vbGVhbixcblx0XHRtb2RlbD86IE1vZGVsXG5cdCk6IFByb21pc2U8U3RhdGVVdGlsRmlsdGVyPiB7XG5cdFx0Ly8gTm90ZTogVGhpcyBtZXRob2QgaXMgcHJpdmF0ZSBhbmQgcmVzdHJpY3RlZCB0byB1c2FnZSBieSBzYXAuZmUoVmlld1N0YXRlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uKSBmb3IgZmlsdGVyIGJhci8gY2hhcnQgLyB0YWJsZSBzdGF0ZSBzY2VuYXJpb3MuXG5cdFx0Y29uc3QgcHJvcGVydHlJbmZvcyA9IGF3YWl0IHRoaXMuX2dldFN1cHBvcnRlZEZpbHRlckZpZWxkcyhjb250cm9sKTtcblxuXHRcdGlmICghcHJvcGVydHlJbmZvcy5sZW5ndGgpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIk5vIHZhbGlkIG1ldGFkYXRhIHByb3BlcnRpZXMgcHJlc2VudCBmb3IgZmlsdGVyIGJhclwiKTtcblx0XHR9XG5cblx0XHRjb25zdCBmaWx0ZXJCYXJJbmZvRm9yQ29udmVyc2lvbiA9IHRoaXMuX2dldENvbnRyb2xJbmZvRm9yQ29udmVyc2lvbihjb250cm9sKTtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSBtb2RlbD8uZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cdFx0Y29uc3QgY29weW9mUHJvcGVydHlJbmZvcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocHJvcGVydHlJbmZvcykpO1xuXHRcdGNvbnN0IHVwZGF0ZWRQcm9wZXJ0eUluZm9zID0gdGhpcy5fdXBkYXRlUHJvcGVydHlJbmZvVG9TdXBwb3J0U1YoY29udHJvbCwgY29weW9mUHJvcGVydHlJbmZvcyk7XG5cdFx0Y29uc3QgY29uZGl0aW9uczogU3RhdGVVdGlsRmlsdGVyID0gc3ZUb1N0YXRlRmlsdGVycy5nZXRTdGF0ZUZpbHRlcnNGcm9tU1YoXG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50LFxuXHRcdFx0ZmlsdGVyQmFySW5mb0ZvckNvbnZlcnNpb24sXG5cdFx0XHR1cGRhdGVkUHJvcGVydHlJbmZvcyA/PyBjb3B5b2ZQcm9wZXJ0eUluZm9zLFxuXHRcdFx0cHJlZmlsbERlc2NyaXB0aW9ucyxcblx0XHRcdG1ldGFNb2RlbFxuXHRcdCk7XG5cblx0XHRyZXR1cm4gY29uZGl0aW9ucztcblx0fSxcblxuXHQvKipcblx0ICogR2V0IHRoZSBmaWx0ZXIgaW5mb3JtYXRpb24gbmVlZGVkIGZvciB0aGUgY29udmVyc2lvbiBvZiBzZWxlY3Rpb24gdmFyaWFudCB0byBjb25kaXRpb25zLlxuXHQgKiBAcGFyYW0gY29udHJvbCBUaGlzIGNhbiBiZSBhIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyYmFyXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIGluZm9ybWF0aW9uIChtZXRhTW9kZWwsIGNvbnRleHRQYXRoLCB1c2Ugb2Ygc2VtYW50aWMgZGF0ZSByYW5nZSwgYWxsIGZpbHRlciBmaWVsZHMgY29uZmlnKVxuXHQgKi9cblx0X2dldENvbnRyb2xJbmZvRm9yQ29udmVyc2lvbihjb250cm9sOiBDb250cm9sKTogQ29udmVyc2lvbkluZm8ge1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IGNvbnRyb2wuZ2V0TW9kZWwoKT8uZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWwsXG5cdFx0XHRjb250ZXh0UGF0aCA9IGNvbnRyb2wuZGF0YShcImVudGl0eVR5cGVcIikgYXMgc3RyaW5nO1xuXHRcdGlmIChjb250cm9sLmlzQShcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmlsdGVyQmFyXCIpKSB7XG5cdFx0XHRjb25zdCB1c2VTZW1hbnRpY0RhdGVSYW5nZTogYm9vbGVhbiA9XG5cdFx0XHRcdFx0Y29udHJvbC5kYXRhKFwidXNlU2VtYW50aWNEYXRlUmFuZ2VcIikgPT09IFwidHJ1ZVwiIHx8IGNvbnRyb2wuZGF0YShcInVzZVNlbWFudGljRGF0ZVJhbmdlXCIpID09PSB0cnVlLFxuXHRcdFx0XHR2aWV3RGF0YUluc3RhbmNlID0gY29udHJvbC5nZXRNb2RlbChcInZpZXdEYXRhXCIpIGFzIEpTT05Nb2RlbCxcblx0XHRcdFx0dmlld0RhdGEgPSB2aWV3RGF0YUluc3RhbmNlLmdldERhdGEoKSBhcyBWaWV3RGF0YSxcblx0XHRcdFx0Y29uZmlnID0gdmlld0RhdGE/LmNvbnRyb2xDb25maWd1cmF0aW9uLFxuXHRcdFx0XHRzZWxlY3Rpb25GaWVsZHNDb25maWdzID0gY29uZmlnPy5bXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uRmllbGRzXCJdLFxuXHRcdFx0XHRmaWx0ZXJGaWVsZHNDb25maWcgPSBzZWxlY3Rpb25GaWVsZHNDb25maWdzPy5maWx0ZXJGaWVsZHM7XG5cdFx0XHRyZXR1cm4geyBtZXRhTW9kZWwsIGNvbnRleHRQYXRoLCB1c2VTZW1hbnRpY0RhdGVSYW5nZSwgZmlsdGVyRmllbGRzQ29uZmlnLCBzZWxlY3Rpb25GaWVsZHNDb25maWdzIH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB7IG1ldGFNb2RlbCwgY29udGV4dFBhdGggfTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldCBzdXBwb3J0ZWQgZmlsdGVyIGZpZWxkIHByb3BlcnRpZXMgZnJvbSB0aGUgdGFibGUsIGNoYXJ0LCBvciBmaWx0ZXIgYmFyLlxuXHQgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIGNhbiBiZSBhIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhclxuXHQgKiBAcmV0dXJucyBTdXBwb3J0ZWQgZmlsdGVyIGZpZWxkcy5cblx0ICovXG5cdGFzeW5jIF9nZXRTdXBwb3J0ZWRGaWx0ZXJGaWVsZHMoY29udHJvbDogQ29udHJvbCk6IFByb21pc2U8Q29udHJvbFByb3BlcnR5SW5mb1tdPiB7XG5cdFx0aWYgKGNvbnRyb2wuaXNBKFwic2FwLnVpLm1kYy5GaWx0ZXJiYXJcIikpIHtcblx0XHRcdGF3YWl0IChjb250cm9sIGFzIEZpbHRlckJhcikud2FpdEZvckluaXRpYWxpemF0aW9uKCk7XG5cdFx0XHRyZXR1cm4gKGNvbnRyb2wgYXMgRmlsdGVyQmFyKS5nZXRDb250cm9sRGVsZWdhdGUoKS5mZXRjaEZpbHRlclByb3BlcnRpZXMoY29udHJvbCk7XG5cdFx0fSBlbHNlIGlmICgoY29udHJvbCBhcyBGaWx0ZXJCYXIpLmlzQShcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmlsdGVyQmFyXCIpKSB7XG5cdFx0XHRyZXR1cm4gKGNvbnRyb2wgYXMgRmlsdGVyQmFyKS5nZXRDb250cm9sRGVsZWdhdGUoKS5mZXRjaEZpbHRlclByb3BlcnRpZXMoY29udHJvbCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGF3YWl0IChjb250cm9sIGFzIFRhYmxlIHwgQ2hhcnQpLmF3YWl0Q29udHJvbERlbGVnYXRlKCk7XG5cdFx0fVxuXHRcdHJldHVybiAoY29udHJvbCBhcyBUYWJsZSB8IENoYXJ0IHwgRmlsdGVyQmFyKS5nZXRDb250cm9sRGVsZWdhdGUoKS5mZXRjaFByb3BlcnRpZXMoY29udHJvbCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENsZWFycyBhbGwgaW5wdXQgdmFsdWVzIG9mIHZpc2libGUgZmlsdGVyIGZpZWxkcyBpbiB0aGUgdGFibGUsIGNoYXJ0LCBvciBmaWx0ZXIgYmFyLi5cblx0ICogQHBhcmFtIGNvbnRyb2xJbnN0YW5jZSBUaGlzIGNhbiBiZSBhIGZpbHRlciBiYXIsIGNoYXJ0LCBvciB0YWJsZS5cblx0ICovXG5cdGFzeW5jIGNsZWFyRmlsdGVyVmFsdWVzKGNvbnRyb2xJbnN0YW5jZTogTWFjcm9BUEkpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCB0aGlzLl9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zKGNvbnRyb2xJbnN0YW5jZS5jb250ZW50IGFzIENvbnRyb2wpO1xuXHRcdC8vIEFsbG93IGFwcCBkZXZlbG9wZXJzIHRvIHVwZGF0ZSBmaWx0ZXJzIGFmdGVyIGNsZWFyaW5nXG5cdFx0Y29udHJvbEluc3RhbmNlLmZpcmVFdmVudChcImFmdGVyQ2xlYXJcIik7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENsZWFycyBhbGwgaW5wdXQgdmFsdWVzIG9mIHZpc2libGUgZmlsdGVyIGZpZWxkcyBpbiB0aGUgdGFibGUsIGNoYXJ0LCBvciBmaWx0ZXIgYmFyLlxuXHQgKiBAcGFyYW0gY29udHJvbCBUaGlzIGNhbiBiZSBhIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhclxuXHQgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBmaWx0ZXJpbmcgdGhlIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIG9wdGlvbnMuY2xlYXJFZGl0RmlsdGVyIFdoZXRoZXIgdG8gY2xlYXIgdGhlIGVkaXQgZmlsdGVyIG9yIHJldGFpbiB0aGUgZGVmYXVsdCB2YWx1ZSAnQWxsJ1xuXHQgKi9cblx0YXN5bmMgX2NsZWFyRmlsdGVyVmFsdWVzV2l0aE9wdGlvbnMoY29udHJvbDogQ29udHJvbCwgb3B0aW9ucz86IHsgY2xlYXJFZGl0RmlsdGVyOiBib29sZWFuIH0pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoIWNvbnRyb2wpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3Qgc3RhdGU6IEV4dGVybmFsU3RhdGVUeXBlID0gYXdhaXQgU3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZShjb250cm9sKTtcblx0XHRsZXQgZWRpdFN0YXRlUGF0aCA9IFwiXCIsXG5cdFx0XHRjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uLFxuXHRcdFx0ZWRpdFN0YXRlRGVmYXVsdFZhbHVlLFxuXHRcdFx0Y3VycmVudEVkaXRTdGF0ZUlzRGVmYXVsdDogYm9vbGVhbiB8IHVuZGVmaW5lZCxcblx0XHRcdHNob3VsZENsZWFyRWRpdEZpbHRlcjogdW5kZWZpbmVkIHwgYm9vbGVhbjtcblx0XHRpZiAoY29udHJvbC5pc0E8RmlsdGVyQmFyPihcInNhcC51aS5tZGMuRmlsdGVyQmFyXCIpKSB7XG5cdFx0XHRlZGl0U3RhdGVQYXRoID0gXCIkZWRpdFN0YXRlXCI7XG5cdFx0XHRlZGl0U3RhdGVEZWZhdWx0VmFsdWUgPSBEcmFmdEVkaXRTdGF0ZS5BTEwuaWQ7XG5cdFx0XHRjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uID0gZGVlcENsb25lKHN0YXRlLmZpbHRlcltlZGl0U3RhdGVQYXRoXT8uWzBdKTtcblx0XHRcdGN1cnJlbnRFZGl0U3RhdGVJc0RlZmF1bHQgPSBjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uPy52YWx1ZXNbMF0gPT09IGVkaXRTdGF0ZURlZmF1bHRWYWx1ZTtcblx0XHRcdHNob3VsZENsZWFyRWRpdEZpbHRlciA9IG9wdGlvbnMgJiYgT2JqZWN0LmtleXMob3B0aW9ucykubGVuZ3RoID4gMCAmJiBvcHRpb25zLmNsZWFyRWRpdEZpbHRlcjtcblx0XHR9XG5cblx0XHQvLyBDbGVhciBhbGwgY29uZGl0aW9uc1xuXHRcdGZvciAoY29uc3QgY29uZGl0aW9uUGF0aCBvZiBPYmplY3Qua2V5cyhzdGF0ZS5maWx0ZXIpKSB7XG5cdFx0XHRpZiAoIXNob3VsZENsZWFyRWRpdEZpbHRlciAmJiBjb25kaXRpb25QYXRoID09PSBlZGl0U3RhdGVQYXRoICYmIGN1cnJlbnRFZGl0U3RhdGVJc0RlZmF1bHQpIHtcblx0XHRcdFx0Ly8gRG8gbm90IGNsZWFyIGVkaXQgc3RhdGUgY29uZGl0aW9uIGlmIGl0IGlzIGFscmVhZHkgXCJBTExcIlxuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGZvciAoY29uc3QgY29uZGl0aW9uIG9mIHN0YXRlLmZpbHRlcltjb25kaXRpb25QYXRoXSkge1xuXHRcdFx0XHRjb25kaXRpb24uZmlsdGVyZWQgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0YXdhaXQgU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZShjb250cm9sLCB7IGZpbHRlcjogc3RhdGUuZmlsdGVyIH0pO1xuXG5cdFx0aWYgKGNvbnRyb2wuaXNBPEZpbHRlckJhcj4oXCJzYXAudWkubWRjLkZpbHRlckJhclwiKSkge1xuXHRcdFx0Ly8gU2V0IGVkaXQgc3RhdGUgdG8gJ0FMTCcgaWYgaXQgd2Fzbid0IGJlZm9yZVxuXHRcdFx0aWYgKCFzaG91bGRDbGVhckVkaXRGaWx0ZXIgJiYgY3VycmVudEVkaXRTdGF0ZUNvbmRpdGlvbiAmJiAhY3VycmVudEVkaXRTdGF0ZUlzRGVmYXVsdCkge1xuXHRcdFx0XHRjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uLnZhbHVlcyA9IFtlZGl0U3RhdGVEZWZhdWx0VmFsdWVdO1xuXHRcdFx0XHRhd2FpdCBTdGF0ZVV0aWwuYXBwbHlFeHRlcm5hbFN0YXRlKGNvbnRyb2wsIHsgZmlsdGVyOiB7IFtlZGl0U3RhdGVQYXRoXTogW2N1cnJlbnRFZGl0U3RhdGVDb25kaXRpb25dIH0gfSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vY2xlYXIgZmlsdGVyIGZpZWxkcyBpbiBlcnJvciBzdGF0ZVxuXHRcdFx0Y29udHJvbC5jbGVhblVwQWxsRmlsdGVyRmllbGRzSW5FcnJvclN0YXRlKCk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBNZXRob2QgcmV0dXJucyB0aGUgY29weSBvZiBwcm9wZXJ0eUluZm8gYnkgYWRkaW5nIG5lY2Vzc2FyeSBmaWVsZHMgc28gdGhhdCBzZWxlY3Rpb24gdmFyaWFudCBjYW4gYmUgc2V0IHRvIGEgY29udHJvbCBsaWtlIHRhYmxlIGFuZCBjaGFydC5cblx0ICogQHBhcmFtIGNvbnRyb2wgVGhpcyBjb3VsZCBiZSBhIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhclxuXHQgKiBAcGFyYW0gcHJvcGVydHlJbmZvcyBBcnJheSBvZiBQcm9wZXJ0eUluZm8gb2YgdGhlIGNvbnRyb2xcblx0ICogQHJldHVybnMgVGhlIGRlZXAgY2xvbmUgb2YgcHJvcGVydHlJbmZvcyB3aXRoIHNvbWUgYWRkaXRpb25hbCBmaWVsZHNcblx0ICovXG5cdF91cGRhdGVQcm9wZXJ0eUluZm9Ub1N1cHBvcnRTVihjb250cm9sOiBDb250cm9sLCBwcm9wZXJ0eUluZm9zOiBDb250cm9sUHJvcGVydHlJbmZvW10pOiBDb250cm9sUHJvcGVydHlJbmZvW10ge1xuXHRcdGlmIChjb250cm9sLmlzQShcInNhcC51aS5tZGMuRmlsdGVyQmFyXCIpKSB7XG5cdFx0XHRyZXR1cm4gcHJvcGVydHlJbmZvcztcblx0XHR9XG5cdFx0cHJvcGVydHlJbmZvcy5mb3JFYWNoKChwcm9wZXJ0eUluZm86IENvbnRyb2xQcm9wZXJ0eUluZm8pID0+IHtcblx0XHRcdGlmICgoY29udHJvbCBhcyBDb250cm9sKS5pc0EoXCJzYXAudWkubWRjLlRhYmxlXCIpKSB7XG5cdFx0XHRcdHByb3BlcnR5SW5mb1tcImNvbmRpdGlvblBhdGhcIl0gPSBwcm9wZXJ0eUluZm8ubmFtZTtcblx0XHRcdFx0cHJvcGVydHlJbmZvW1wiYW5ub3RhdGlvblBhdGhcIl0gPSBwcm9wZXJ0eUluZm8ubWV0YWRhdGFQYXRoID8gcHJvcGVydHlJbmZvLm1ldGFkYXRhUGF0aCA6IFwiXCI7XG5cdFx0XHRcdHByb3BlcnR5SW5mb1tcImhhc1ZhbHVlSGVscFwiXSA9IFByb3BlcnR5SGVscGVyLmhhc1ZhbHVlSGVscChcblx0XHRcdFx0XHQoY29udHJvbCBhcyBUYWJsZSkuZ2V0UHJvcGVydHlIZWxwZXIoKS5nZXRQcm9wZXJ0eShwcm9wZXJ0eUluZm8ubmFtZSlcblx0XHRcdFx0KTtcblx0XHRcdFx0cHJvcGVydHlJbmZvW1wiZGF0YVR5cGVcIl0gPSBwcm9wZXJ0eUluZm8/LnR5cGVDb25maWc/LmNsYXNzTmFtZSBhcyBzdHJpbmc7XG5cdFx0XHR9IGVsc2UgaWYgKChjb250cm9sIGFzIENvbnRyb2wpLmlzQShcInNhcC51aS5tZGMuQ2hhcnRcIikpIHtcblx0XHRcdFx0aWYgKHByb3BlcnR5SW5mby5wYXRoKSB7XG5cdFx0XHRcdFx0cHJvcGVydHlJbmZvW1wibmFtZVwiXSA9IHByb3BlcnR5SW5mby5wYXRoO1xuXHRcdFx0XHRcdHByb3BlcnR5SW5mb1tcImNvbmRpdGlvblBhdGhcIl0gPSBwcm9wZXJ0eUluZm8ucGF0aDtcblx0XHRcdFx0XHRjb25zdCBwcm9wZXJ0eSA9ICgoY29udHJvbCBhcyBDaGFydCkuZ2V0UGFyZW50KCkgYXMgQ2hhcnRUeXBlKT8uZ2V0UHJvcGVydHlEYXRhTW9kZWwocHJvcGVydHlJbmZvLnBhdGgpPy50YXJnZXRPYmplY3Q7XG5cdFx0XHRcdFx0cHJvcGVydHlJbmZvW1wiaGFzVmFsdWVIZWxwXCJdID0gcHJvcGVydHkgPyBQcm9wZXJ0eUhlbHBlci5oYXNWYWx1ZUhlbHAocHJvcGVydHkpIDogZmFsc2U7XG5cdFx0XHRcdFx0cHJvcGVydHlJbmZvW1wiZGF0YVR5cGVcIl0gPSAocHJvcGVydHlJbmZvPy50eXBlQ29uZmlnPy5jbGFzc05hbWUgYXMgc3RyaW5nKSB8fCBwcm9wZXJ0eUluZm8uZGF0YVR5cGU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0XHRyZXR1cm4gcHJvcGVydHlJbmZvcztcblx0fSxcblxuXHQvKipcblx0ICogU2V0cyBzZWxlY3Rpb24gdmFyaWFudCB0byB0aGUgdGFibGUuIE5vdGU6IHNldFNlbGVjdGlvblZhcmlhbnQgd2lsbCBjbGVhciB0aGUgZXhpc3RpbmcgZmlsdGVycyBhbmQgdGhlbiBhcHBseSB0aGUgU2VsZWN0aW9uVmFyaWFudCB2YWx1ZXMuXG5cdCAqIEBwYXJhbSBjb250cm9sSW5zdGFuY2UgVGhpcyBjb3VsZCBiZSBhIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhclxuXHQgKiBAcGFyYW0gc2VsZWN0aW9uVmFyaWFudCBUaGUgc2VsZWN0aW9uIHZhcmlhbnQgdG8gYXBwbHkgdG8gdGhlIHJlc3BlY3RpdmUgbWRjIGNvbnRyb2xzXG5cdCAqIEBwYXJhbSBwcmVmaWxsRGVzY3JpcHRpb25zIE9wdGlvbmFsLiBJZiB0cnVlLCB3ZSB3aWxsIHVzZSB0aGUgYXNzb2NpYXRlZCB0ZXh0IHByb3BlcnR5IHZhbHVlcyAoaWYgdGhleSdyZSBhdmFpbGFibGUgaW4gdGhlIHNlbGVjdGlvblZhcmlhbnQpIHRvIGRpc3BsYXkgdGhlIGZpbHRlciB2YWx1ZSBkZXNjcmlwdGlvbnMsIGluc3RlYWQgb2YgbG9hZGluZyB0aGVtIGZyb20gdGhlIGJhY2tlbmRcblx0ICogQHJldHVybnMgQSBwcm9taXNlIGZvciBhc3luY2hyb25vdXMgaGFuZGxpbmdcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgc2V0U2VsZWN0aW9uVmFyaWFudFRvTWRjQ29udHJvbChcblx0XHRjb250cm9sSW5zdGFuY2U6IENvcmVDb250cm9sIHwgdW5kZWZpbmVkLFxuXHRcdHNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0cHJlZmlsbERlc2NyaXB0aW9ucyA9IGZhbHNlXG5cdCk6IFByb21pc2U8dW5rbm93bj4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBzdGF0ZTogRXh0ZXJuYWxTdGF0ZVR5cGUgPSBhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKGNvbnRyb2xJbnN0YW5jZSBhcyBDb250cm9sKTtcblx0XHRcdGlmICghc3RhdGUuZmlsdGVyKSB7XG5cdFx0XHRcdExvZy5lcnJvcihgRkUgOiBzZXRTZWxlY3Rpb25WYXJpYW50IEFQSSBjYW5ub3QgYmUgYXBwbGllZCBvbiA6ICR7Y29udHJvbEluc3RhbmNlPy5nZXRJZCgpfWApO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBjb25kaXRpb25zOiBTdGF0ZVV0aWxGaWx0ZXIgPSBhd2FpdCB0aGlzLmNvbnZlcnRTZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMoXG5cdFx0XHRcdGNvbnRyb2xJbnN0YW5jZSBhcyBDb250cm9sLFxuXHRcdFx0XHRzZWxlY3Rpb25WYXJpYW50LFxuXHRcdFx0XHRwcmVmaWxsRGVzY3JpcHRpb25zLFxuXHRcdFx0XHRjb250cm9sSW5zdGFuY2U/LmdldE1vZGVsKClcblx0XHRcdCk7XG5cblx0XHRcdC8vIENsZWFyIGZpbHRlciBvZiB0YWJsZSBiZWZvcmUgYXBwbHlpbmcgc2VsZWN0aW9uIHZhcmlhbnRcblx0XHRcdGF3YWl0IHRoaXMuY2xlYXJGaWx0ZXJWYWx1ZXMoY29udHJvbEluc3RhbmNlPy5nZXRQYXJlbnQoKSBhcyBNYWNyb0FQSSk7XG5cblx0XHRcdC8vIFN0YXRlIHRvIGFwcGx5XG5cdFx0XHRjb25zdCBwcm9wZXJ0eUluZm9zID0gYXdhaXQgdGhpcy5fZ2V0U3VwcG9ydGVkRmlsdGVyRmllbGRzKGNvbnRyb2xJbnN0YW5jZSBhcyBDb250cm9sKTtcblx0XHRcdGNvbnN0IHN0YXRlVG9BcHBseSA9IHN2VG9TdGF0ZUZpbHRlcnMuZ2V0U3RhdGVUb0FwcGx5KHByb3BlcnR5SW5mb3MsIGNvbmRpdGlvbnMpO1xuXHRcdFx0aWYgKGNvbnRyb2xJbnN0YW5jZT8uaXNBKFwic2FwLnVpLm1kYy5DaGFydFwiKSkge1xuXHRcdFx0XHR0aGlzLmNvbnZlcnRDb25kaXRpb25zRm9yQ2hhcnQoc3RhdGVUb0FwcGx5KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBhd2FpdCBTdGF0ZVV0aWwuYXBwbHlFeHRlcm5hbFN0YXRlKGNvbnRyb2xJbnN0YW5jZSBhcyBDb250cm9sLCBzdGF0ZVRvQXBwbHkpO1xuXHRcdH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuXHRcdFx0Y29uc3QgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGNvbnRyb2xJbnN0YW5jZT8uZ2V0SWQoKTtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycik7XG5cdFx0XHRMb2cuZXJyb3IoYEZFIDogQnVpbGRpbmdCbG9jayAoJHtpZH0pIC0gc2V0IHNlbGVjdGlvbiB2YXJpYW50IGZhaWxlZCAgOiAke21lc3NhZ2V9YCk7XG5cdFx0XHR0aHJvdyBFcnJvcihtZXNzYWdlKTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIENvbnZlcnQgdGhlIGNoYXJ0IHByb3BlcnRpZXMgdG8gaW50ZXJuYWwgcHJvcGVydGllcyBiZWZvcmUgYXBwbHlpbmcgdGhlIGNvbmRpdGlvbnMuXG5cdCAqIEBwYXJhbSBzdGF0ZVRvQXBwbHkgVGhpcyBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGZpbHRlciBhbmQgY29uZGl0aW9uc1xuXHQgKi9cblx0Y29udmVydENvbmRpdGlvbnNGb3JDaGFydChzdGF0ZVRvQXBwbHk6IFN0YXRlVG9BcHBseSk6IHZvaWQge1xuXHRcdC8vIHJlcGxhY2Uga2V5cyBvZiBmaWx0ZXIgb2JqZWN0IGZyb20gXCJTYWxlc09kZXJcIiB0byBpbnRlcm5hbCBmb3JtYXQgXCJfZmVfZ3JvdXBhYmxlX1NhbGVzT3JkZXJcIlxuXHRcdGZvciAoY29uc3QgcHJvcGVydHkgaW4gc3RhdGVUb0FwcGx5LmZpbHRlcikge1xuXHRcdFx0ZGVsZXRlIE9iamVjdC5hc3NpZ24oc3RhdGVUb0FwcGx5LmZpbHRlciwgeyBbXCJfZmVfZ3JvdXBhYmxlX1wiICsgcHJvcGVydHldOiBzdGF0ZVRvQXBwbHkuZmlsdGVyW3Byb3BlcnR5XSB9KVtwcm9wZXJ0eV07XG5cdFx0fVxuXHRcdC8vIHJlcGxhY2Uga2V5cyBvZiBpdGVtcyBhcnJheSBmcm9tIFwiU2FsZXNPZGVyXCIgdG8gaW50ZXJuYWwgZm9ybWF0IFwiX2ZlX2dyb3VwYWJsZV9TYWxlc09yZGVyXCJcblx0XHRzdGF0ZVRvQXBwbHkuaXRlbXMuZm9yRWFjaCgocHJvcGVydHlPYmo6IHsgbmFtZTogc3RyaW5nIH0pID0+IHtcblx0XHRcdHByb3BlcnR5T2JqLm5hbWUgPSBcIl9mZV9ncm91cGFibGVfXCIgKyBwcm9wZXJ0eU9iai5uYW1lO1xuXHRcdH0pO1xuXHR9XG59O1xuXG5leHBvcnQgdHlwZSBDb250cm9sUHJvcGVydHlJbmZvID0gUHJvcGVydHlJbmZvICYge1xuXHRjb25kaXRpb25QYXRoOiBzdHJpbmc7XG5cdGRhdGFUeXBlOiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoPzogc3RyaW5nO1xuXHRtZXRhZGF0YVBhdGg/OiBzdHJpbmc7XG5cdGlzUGFyYW1ldGVyPzogYm9vbGVhbjtcblx0aGlkZGVuRmlsdGVyPzogYm9vbGVhbjtcblx0aGFzVmFsdWVIZWxwPzogYm9vbGVhbjtcblx0cmVxdWlyZWQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3RhdGVIZWxwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7RUF5QkE7QUFDQTtBQUNBO0FBQ0E7O0VBRUEsTUFBTUEsV0FBVyxHQUFHO0lBQ25CO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDLE1BQU1DLG1CQUFtQkEsQ0FBQ0MsT0FBZ0MsRUFBNkI7TUFDdEYsSUFBSTtRQUNILE1BQU1DLFlBQVksR0FBRyxNQUFNQyxTQUFTLENBQUNDLHFCQUFxQixDQUFDSCxPQUFrQixDQUFDO1FBQzlFLE1BQU1JLGFBQWEsR0FBR0gsWUFBWSxDQUFDSSxNQUF5QjtRQUM1RCxJQUFJQyxVQUFnQyxHQUFHLEVBQUU7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
260
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdGF0ZUhlbHBlciIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJjb250cm9sIiwiY29udHJvbFN0YXRlIiwiU3RhdGVVdGlsIiwicmV0cmlldmVFeHRlcm5hbFN0YXRlIiwiY29udHJvbE9iamVjdCIsImZpbHRlciIsInBhcmFtZXRlcnMiLCJnZXRQYXJlbnQiLCJpc0EiLCJnZXRQYXJhbWV0ZXJzIiwidW5kZWZpbmVkIiwic2VsZWN0aW9uVmFyaWFudCIsIlN0YXRlRmlsdGVyc1RvU2VsZWN0aW9uVmFyaWFudCIsImdldFNlbGVjdGlvblZhcmlhbnRGcm9tQ29uZGl0aW9ucyIsImdldFByb3BlcnR5SGVscGVyIiwiZXh0ZXJuYWxTViIsIlNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3RPcHRpb25zIiwiX2dldFNlbGVjdE9wdGlvbnMiLCJwcm9wZXJ0eSIsIm1hc3NBZGRTZWxlY3RPcHRpb24iLCJzcGxpdCIsImVycm9yIiwiaWQiLCJnZXRJZCIsIm1lc3NhZ2UiLCJFcnJvciIsIlN0cmluZyIsIkxvZyIsImNvbnZlcnRTZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMiLCJwcmVmaWxsRGVzY3JpcHRpb25zIiwibW9kZWwiLCJwcm9wZXJ0eUluZm9zIiwiX2dldFN1cHBvcnRlZEZpbHRlckZpZWxkcyIsImxlbmd0aCIsImZpbHRlckJhckluZm9Gb3JDb252ZXJzaW9uIiwiX2dldENvbnRyb2xJbmZvRm9yQ29udmVyc2lvbiIsIm1ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsImNvcHlvZlByb3BlcnR5SW5mb3MiLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJ1cGRhdGVkUHJvcGVydHlJbmZvcyIsIl91cGRhdGVQcm9wZXJ0eUluZm9Ub1N1cHBvcnRTViIsImNvbmRpdGlvbnMiLCJzdlRvU3RhdGVGaWx0ZXJzIiwiZ2V0U3RhdGVGaWx0ZXJzRnJvbVNWIiwiZ2V0TW9kZWwiLCJjb250ZXh0UGF0aCIsImRhdGEiLCJ1c2VTZW1hbnRpY0RhdGVSYW5nZSIsInZpZXdEYXRhSW5zdGFuY2UiLCJ2aWV3RGF0YSIsImdldERhdGEiLCJjb25maWciLCJjb250cm9sQ29uZmlndXJhdGlvbiIsInNlbGVjdGlvbkZpZWxkc0NvbmZpZ3MiLCJmaWx0ZXJGaWVsZHNDb25maWciLCJmaWx0ZXJGaWVsZHMiLCJnZXRFbmhhbmNlZEZldGNoZWRQcm9wZXJ0eUluZm9zIiwid2FpdEZvckluaXRpYWxpemF0aW9uIiwiZ2V0Q29udHJvbERlbGVnYXRlIiwiZmV0Y2hGaWx0ZXJQcm9wZXJ0aWVzIiwiYXdhaXRDb250cm9sRGVsZWdhdGUiLCJmZXRjaFByb3BlcnRpZXMiLCJjbGVhckZpbHRlclZhbHVlcyIsImNvbnRyb2xJbnN0YW5jZSIsIl9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zIiwiY29udGVudCIsImZpcmVFdmVudCIsIm9wdGlvbnMiLCJzdGF0ZSIsImVkaXRTdGF0ZVBhdGgiLCJjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uIiwiZWRpdFN0YXRlRGVmYXVsdFZhbHVlIiwiY3VycmVudEVkaXRTdGF0ZUlzRGVmYXVsdCIsInNob3VsZENsZWFyRWRpdEZpbHRlciIsIkRyYWZ0RWRpdFN0YXRlIiwiQUxMIiwiZGVlcENsb25lIiwidmFsdWVzIiwiT2JqZWN0Iiwia2V5cyIsImNsZWFyRWRpdEZpbHRlciIsImNvbmRpdGlvblBhdGgiLCJjb25kaXRpb24iLCJmaWx0ZXJlZCIsImFwcGx5RXh0ZXJuYWxTdGF0ZSIsImNsZWFuVXBBbGxGaWx0ZXJGaWVsZHNJbkVycm9yU3RhdGUiLCJmb3JFYWNoIiwicHJvcGVydHlJbmZvIiwibmFtZSIsIlByb3BlcnR5SGVscGVyIiwiaGFzVmFsdWVIZWxwIiwiZ2V0UHJvcGVydHkiLCJwYXRoIiwiZ2V0UHJvcGVydHlEYXRhTW9kZWwiLCJ0YXJnZXRPYmplY3QiLCJ0eXBlQ29uZmlnIiwiY2xhc3NOYW1lIiwiZGF0YVR5cGUiLCJzZXRTZWxlY3Rpb25WYXJpYW50VG9NZGNDb250cm9sIiwiYXJndW1lbnRzIiwic3RhdGVUb0FwcGx5IiwiZ2V0U3RhdGVUb0FwcGx5IiwiY29udmVydENvbmRpdGlvbnNGb3JDaGFydCIsImRpZmZTdGF0ZSIsImFwcGx5U3RhdGVSZXN1bHQiLCJlcnIiLCJhc3NpZ24iLCJpdGVtcyIsInByb3BlcnR5T2JqIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTdGF0ZUhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBkZWVwQ2xvbmUgZnJvbSBcInNhcC9iYXNlL3V0aWwvZGVlcENsb25lXCI7XG5pbXBvcnQgdHlwZSB7IFZpZXdEYXRhIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1RlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0ICogYXMgUHJvcGVydHlIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcbmltcG9ydCB0eXBlIFRhYmxlQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL1RhYmxlXCI7XG5pbXBvcnQgRHJhZnRFZGl0U3RhdGUgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0RyYWZ0RWRpdFN0YXRlXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXJBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckJhckFQSVwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUluZm8gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC9Qcm9wZXJ0eUluZm9cIjtcbmltcG9ydCB0eXBlIHsgQ29udmVyc2lvbkluZm8gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9tZGMvYWRhcHRlci9TZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnNcIjtcbmltcG9ydCBzdlRvU3RhdGVGaWx0ZXJzIGZyb20gXCJzYXAvZmUvbWFjcm9zL21kYy9hZGFwdGVyL1NlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVyc1wiO1xuaW1wb3J0IFN0YXRlRmlsdGVyc1RvU2VsZWN0aW9uVmFyaWFudCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9tZGMvYWRhcHRlci9TdGF0ZUZpbHRlclRvU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IHR5cGUgeyBFeHRlcm5hbFN0YXRlVHlwZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3ZhbHVlaGVscC9WYWx1ZUhlbHBEZWxlZ2F0ZVwiO1xuaW1wb3J0IFNlbGVjdGlvblZhcmlhbnQgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1NlbGVjdGlvblZhcmlhbnRcIjtcbmltcG9ydCB0eXBlIENvcmVDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBDaGFydCBmcm9tIFwic2FwL3VpL21kYy9DaGFydFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL21kYy9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXIgZnJvbSBcInNhcC91aS9tZGMvRmlsdGVyQmFyXCI7XG5pbXBvcnQgdHlwZSBUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBTdGF0ZVRvQXBwbHksIEZpbHRlciBhcyBTdGF0ZVV0aWxGaWx0ZXIgfSBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IFN0YXRlVXRpbCBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IHR5cGUgTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIENoYXJ0VHlwZSBmcm9tIFwiLi4vLi4vQ2hhcnRcIjtcbmltcG9ydCB0eXBlIE1hY3JvQVBJIGZyb20gXCIuLi8uLi9NYWNyb0FQSVwiO1xuXG4vKipcbiAqIFRoaXMgaXMgdG8gZXh0ZW5kIE1EQyBjb250cm9sIEFQSXMgZm9yIGZpbHRlciwgdGFibGUsIGNoYXJ0IGJ1aWxkaW5nIGJsb2Nrcy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5jb25zdCBTdGF0ZUhlbHBlciA9IHtcblx0LyoqXG5cdCAqIEdldHMgc2VsZWN0aW9uIHZhcmlhbnQgZnJvbSB0aGUgbWRjIGNvbnRyb2wuXG5cdCAqIEBwYXJhbSBjb250cm9sIFRoZSBjb250cm9sIGZvciB3aGljaCBTZWxlY3Rpb24gVmFyaWFudCBpcyB0byBiZSBmZXRjaGVkXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB3aGljaCByZXNvbHZlcyB3aXRoIGEge0BsaW5rIHNhcC5mZS5uYXZpZ2F0aW9uLlNlbGVjdGlvblZhcmlhbnR9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGdldFNlbGVjdGlvblZhcmlhbnQoY29udHJvbDogQ29yZUNvbnRyb2wgfCB1bmRlZmluZWQpOiBQcm9taXNlPFNlbGVjdGlvblZhcmlhbnQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgY29udHJvbFN0YXRlID0gYXdhaXQgU3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZShjb250cm9sIGFzIENvbnRyb2wpO1xuXHRcdFx0Y29uc3QgY29udHJvbE9iamVjdCA9IGNvbnRyb2xTdGF0ZS5maWx0ZXIgYXMgU3RhdGVVdGlsRmlsdGVyO1xuXHRcdFx0bGV0IHBhcmFtZXRlcnM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkID0gW107XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGNvbnRyb2w/LmdldFBhcmVudCgpPy5pc0EoXCJzYXAuZmUubWFjcm9zLmZpbHRlckJhci5GaWx0ZXJCYXJBUElcIikgJiZcblx0XHRcdFx0KGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgRmlsdGVyQmFyQVBJKS5nZXRQYXJhbWV0ZXJzICE9PSB1bmRlZmluZWRcblx0XHRcdCkge1xuXHRcdFx0XHRwYXJhbWV0ZXJzID0gKGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgRmlsdGVyQmFyQVBJKS5nZXRQYXJhbWV0ZXJzKCk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBzZWxlY3Rpb25WYXJpYW50ID0gU3RhdGVGaWx0ZXJzVG9TZWxlY3Rpb25WYXJpYW50LmdldFNlbGVjdGlvblZhcmlhbnRGcm9tQ29uZGl0aW9ucyhcblx0XHRcdFx0Y29udHJvbE9iamVjdCxcblx0XHRcdFx0KGNvbnRyb2wgYXMgQ29udHJvbCkuZ2V0UHJvcGVydHlIZWxwZXIoKSxcblx0XHRcdFx0cGFyYW1ldGVyc1xuXHRcdFx0KTtcblx0XHRcdGlmIChjb250cm9sPy5pc0EoXCJzYXAudWkubWRjLkNoYXJ0XCIpKSB7XG5cdFx0XHRcdGNvbnN0IGV4dGVybmFsU1YgPSBuZXcgU2VsZWN0aW9uVmFyaWFudCgpO1xuXHRcdFx0XHRjb25zdCBzZWxlY3RPcHRpb25zID0gc2VsZWN0aW9uVmFyaWFudC5fZ2V0U2VsZWN0T3B0aW9ucygpO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHByb3BlcnR5IGluIHNlbGVjdE9wdGlvbnMpIHtcblx0XHRcdFx0XHRleHRlcm5hbFNWLm1hc3NBZGRTZWxlY3RPcHRpb24ocHJvcGVydHkuc3BsaXQoXCJfZmVfZ3JvdXBhYmxlX1wiKVsxXSwgc2VsZWN0T3B0aW9uc1twcm9wZXJ0eV0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBleHRlcm5hbFNWO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIHNlbGVjdGlvblZhcmlhbnQ7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRcdGNvbnN0IGlkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBjb250cm9sPy5nZXRJZCgpO1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcblx0XHRcdExvZy5lcnJvcihgQnVpbGRpbmcgQmxvY2sgKCR7aWR9KSAtIGdldCBzZWxlY3Rpb24gdmFyaWFudCBmYWlsZWQgOiAke21lc3NhZ2V9YCk7XG5cdFx0XHR0aHJvdyBFcnJvcihtZXNzYWdlKTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIENvbnZlcnQgc2VsZWN0aW9uIHZhcmlhbnQgdG8gY29uZGl0aW9ucy5cblx0ICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBjYW4gYmUgYSB0YWJsZSwgY2hhcnQgb3IgZmlsdGVyIGJhclxuXHQgKiBAcGFyYW0gc2VsZWN0aW9uVmFyaWFudCBUaGUgc2VsZWN0aW9uIHZhcmlhbnQgdG8gYXBwbHkgdG8gdGhlIHRhYmxlIG9yIGNoYXJ0IG9yIGZpbHRlciBiYXIuXG5cdCAqIEBwYXJhbSBwcmVmaWxsRGVzY3JpcHRpb25zIElmIHRydWUsIHdlIHRyeSB0byBmaW5kIHRoZSBhc3NvY2lhdGVkIFRleHQgdmFsdWUgZm9yIGVhY2ggcHJvcGVydHkgaW4gdGhlIHNlbGVjdGlvblZhcmlhbnQgKHRvIGF2b2lkIGZldGNoaW5nIGl0IGZyb20gdGhlIHNlcnZlcilcblx0ICogQHBhcmFtIG1vZGVsIFRoZSBjb250cm9sIG1vZGVsXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSByZXNvbHZpbmcgdG8gY29uZGl0aW9uc1xuXHQgKi9cblx0YXN5bmMgY29udmVydFNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycyhcblx0XHRjb250cm9sOiBDb250cm9sLFxuXHRcdHNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0cHJlZmlsbERlc2NyaXB0aW9uczogYm9vbGVhbixcblx0XHRtb2RlbD86IE1vZGVsXG5cdCk6IFByb21pc2U8U3RhdGVVdGlsRmlsdGVyPiB7XG5cdFx0Ly8gTm90ZTogVGhpcyBtZXRob2QgaXMgcHJpdmF0ZSBhbmQgcmVzdHJpY3RlZCB0byB1c2FnZSBieSBzYXAuZmUoVmlld1N0YXRlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uKSBmb3IgZmlsdGVyIGJhci8gY2hhcnQgLyB0YWJsZSBzdGF0ZSBzY2VuYXJpb3MuXG5cdFx0Y29uc3QgcHJvcGVydHlJbmZvcyA9IGF3YWl0IHRoaXMuX2dldFN1cHBvcnRlZEZpbHRlckZpZWxkcyhjb250cm9sKTtcblxuXHRcdGlmICghcHJvcGVydHlJbmZvcy5sZW5ndGgpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIk5vIHZhbGlkIG1ldGFkYXRhIHByb3BlcnRpZXMgcHJlc2VudCBmb3IgZmlsdGVyIGJhclwiKTtcblx0XHR9XG5cblx0XHRjb25zdCBmaWx0ZXJCYXJJbmZvRm9yQ29udmVyc2lvbiA9IHRoaXMuX2dldENvbnRyb2xJbmZvRm9yQ29udmVyc2lvbihjb250cm9sKTtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSBtb2RlbD8uZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cdFx0Y29uc3QgY29weW9mUHJvcGVydHlJbmZvcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocHJvcGVydHlJbmZvcykpO1xuXHRcdGNvbnN0IHVwZGF0ZWRQcm9wZXJ0eUluZm9zID0gdGhpcy5fdXBkYXRlUHJvcGVydHlJbmZvVG9TdXBwb3J0U1YoY29udHJvbCwgY29weW9mUHJvcGVydHlJbmZvcyk7XG5cdFx0Y29uc3QgY29uZGl0aW9uczogU3RhdGVVdGlsRmlsdGVyID0gc3ZUb1N0YXRlRmlsdGVycy5nZXRTdGF0ZUZpbHRlcnNGcm9tU1YoXG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50LFxuXHRcdFx0ZmlsdGVyQmFySW5mb0ZvckNvbnZlcnNpb24sXG5cdFx0XHR1cGRhdGVkUHJvcGVydHlJbmZvcyA/PyBjb3B5b2ZQcm9wZXJ0eUluZm9zLFxuXHRcdFx0cHJlZmlsbERlc2NyaXB0aW9ucyxcblx0XHRcdG1ldGFNb2RlbFxuXHRcdCk7XG5cblx0XHRyZXR1cm4gY29uZGl0aW9ucztcblx0fSxcblxuXHQvKipcblx0ICogR2V0IHRoZSBmaWx0ZXIgaW5mb3JtYXRpb24gbmVlZGVkIGZvciB0aGUgY29udmVyc2lvbiBvZiBzZWxlY3Rpb24gdmFyaWFudCB0byBjb25kaXRpb25zLlxuXHQgKiBAcGFyYW0gY29udHJvbCBUaGlzIGNhbiBiZSBhIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyYmFyXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIGluZm9ybWF0aW9uIChtZXRhTW9kZWwsIGNvbnRleHRQYXRoLCB1c2Ugb2Ygc2VtYW50aWMgZGF0ZSByYW5nZSwgYWxsIGZpbHRlciBmaWVsZHMgY29uZmlnKVxuXHQgKi9cblx0X2dldENvbnRyb2xJbmZvRm9yQ29udmVyc2lvbihjb250cm9sOiBDb250cm9sKTogQ29udmVyc2lvbkluZm8ge1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IGNvbnRyb2wuZ2V0TW9kZWwoKT8uZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWwsXG5cdFx0XHRjb250ZXh0UGF0aCA9IGNvbnRyb2wuZGF0YShcImVudGl0eVR5cGVcIikgYXMgc3RyaW5nO1xuXHRcdGlmIChjb250cm9sLmlzQShcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmlsdGVyQmFyXCIpKSB7XG5cdFx0XHRjb25zdCB1c2VTZW1hbnRpY0RhdGVSYW5nZTogYm9vbGVhbiA9XG5cdFx0XHRcdFx0Y29udHJvbC5kYXRhKFwidXNlU2VtYW50aWNEYXRlUmFuZ2VcIikgPT09IFwidHJ1ZVwiIHx8IGNvbnRyb2wuZGF0YShcInVzZVNlbWFudGljRGF0ZVJhbmdlXCIpID09PSB0cnVlLFxuXHRcdFx0XHR2aWV3RGF0YUluc3RhbmNlID0gY29udHJvbC5nZXRNb2RlbChcInZpZXdEYXRhXCIpIGFzIEpTT05Nb2RlbCxcblx0XHRcdFx0dmlld0RhdGEgPSB2aWV3RGF0YUluc3RhbmNlLmdldERhdGEoKSBhcyBWaWV3RGF0YSxcblx0XHRcdFx0Y29uZmlnID0gdmlld0RhdGE/LmNvbnRyb2xDb25maWd1cmF0aW9uLFxuXHRcdFx0XHRzZWxlY3Rpb25GaWVsZHNDb25maWdzID0gY29uZmlnPy5bXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uRmllbGRzXCJdLFxuXHRcdFx0XHRmaWx0ZXJGaWVsZHNDb25maWcgPSBzZWxlY3Rpb25GaWVsZHNDb25maWdzPy5maWx0ZXJGaWVsZHM7XG5cdFx0XHRyZXR1cm4geyBtZXRhTW9kZWwsIGNvbnRleHRQYXRoLCB1c2VTZW1hbnRpY0RhdGVSYW5nZSwgZmlsdGVyRmllbGRzQ29uZmlnLCBzZWxlY3Rpb25GaWVsZHNDb25maWdzIH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB7IG1ldGFNb2RlbCwgY29udGV4dFBhdGggfTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldCBzdXBwb3J0ZWQgZmlsdGVyIGZpZWxkIHByb3BlcnRpZXMgZnJvbSB0aGUgdGFibGUsIGNoYXJ0LCBvciBmaWx0ZXIgYmFyLlxuXHQgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIGNhbiBiZSBhIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhclxuXHQgKiBAcmV0dXJucyBTdXBwb3J0ZWQgZmlsdGVyIGZpZWxkcy5cblx0ICovXG5cdGFzeW5jIF9nZXRTdXBwb3J0ZWRGaWx0ZXJGaWVsZHMoY29udHJvbDogQ29udHJvbCk6IFByb21pc2U8Q29udHJvbFByb3BlcnR5SW5mb1tdPiB7XG5cdFx0aWYgKChjb250cm9sIGFzIFRhYmxlKS5pc0EoXCJzYXAudWkubWRjLlRhYmxlXCIpKSB7XG5cdFx0XHRyZXR1cm4gKChjb250cm9sIGFzIFRhYmxlKS5nZXRQYXJlbnQoKSBhcyBUYWJsZUFQSSkuZ2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcygpIGFzIHVua25vd24gYXMgQ29udHJvbFByb3BlcnR5SW5mb1tdO1xuXHRcdH0gZWxzZSBpZiAoY29udHJvbC5pc0EoXCJzYXAudWkubWRjLkZpbHRlcmJhclwiKSkge1xuXHRcdFx0YXdhaXQgKGNvbnRyb2wgYXMgRmlsdGVyQmFyKS53YWl0Rm9ySW5pdGlhbGl6YXRpb24oKTtcblx0XHRcdHJldHVybiAoY29udHJvbCBhcyBGaWx0ZXJCYXIpLmdldENvbnRyb2xEZWxlZ2F0ZSgpLmZldGNoRmlsdGVyUHJvcGVydGllcyhjb250cm9sKTtcblx0XHR9IGVsc2UgaWYgKChjb250cm9sIGFzIEZpbHRlckJhcikuaXNBKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5GaWx0ZXJCYXJcIikpIHtcblx0XHRcdHJldHVybiAoY29udHJvbCBhcyBGaWx0ZXJCYXIpLmdldENvbnRyb2xEZWxlZ2F0ZSgpLmZldGNoRmlsdGVyUHJvcGVydGllcyhjb250cm9sKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YXdhaXQgKGNvbnRyb2wgYXMgVGFibGUgfCBDaGFydCkuYXdhaXRDb250cm9sRGVsZWdhdGUoKTtcblx0XHR9XG5cdFx0cmV0dXJuIChjb250cm9sIGFzIFRhYmxlIHwgQ2hhcnQgfCBGaWx0ZXJCYXIpLmdldENvbnRyb2xEZWxlZ2F0ZSgpLmZldGNoUHJvcGVydGllcyhjb250cm9sKTtcblx0fSxcblxuXHQvKipcblx0ICogQ2xlYXJzIGFsbCBpbnB1dCB2YWx1ZXMgb2YgdmlzaWJsZSBmaWx0ZXIgZmllbGRzIGluIHRoZSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlciBiYXIuXG5cdCAqIEBwYXJhbSBjb250cm9sSW5zdGFuY2UgVGhpcyBjYW4gYmUgYSBmaWx0ZXIgYmFyLCBjaGFydCwgb3IgdGFibGUuXG5cdCAqL1xuXHRhc3luYyBjbGVhckZpbHRlclZhbHVlcyhjb250cm9sSW5zdGFuY2U6IE1hY3JvQVBJKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0YXdhaXQgdGhpcy5fY2xlYXJGaWx0ZXJWYWx1ZXNXaXRoT3B0aW9ucyhjb250cm9sSW5zdGFuY2UuY29udGVudCBhcyBDb250cm9sKTtcblx0XHQvLyBBbGxvdyBhcHAgZGV2ZWxvcGVycyB0byB1cGRhdGUgZmlsdGVycyBhZnRlciBjbGVhcmluZ1xuXHRcdGNvbnRyb2xJbnN0YW5jZS5maXJlRXZlbnQoXCJhZnRlckNsZWFyXCIpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDbGVhcnMgYWxsIGlucHV0IHZhbHVlcyBvZiB2aXNpYmxlIGZpbHRlciBmaWVsZHMgaW4gdGhlIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhci5cblx0ICogQHBhcmFtIGNvbnRyb2wgVGhpcyBjYW4gYmUgYSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgZmlsdGVyaW5nIHRoZSBmaWx0ZXIgYmFyXG5cdCAqIEBwYXJhbSBvcHRpb25zLmNsZWFyRWRpdEZpbHRlciBXaGV0aGVyIHRvIGNsZWFyIHRoZSBlZGl0IGZpbHRlciBvciByZXRhaW4gdGhlIGRlZmF1bHQgdmFsdWUgJ0FsbCdcblx0ICovXG5cdGFzeW5jIF9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zKGNvbnRyb2w6IENvbnRyb2wsIG9wdGlvbnM/OiB7IGNsZWFyRWRpdEZpbHRlcjogYm9vbGVhbiB9KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKCFjb250cm9sKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHN0YXRlOiBFeHRlcm5hbFN0YXRlVHlwZSA9IGF3YWl0IFN0YXRlVXRpbC5yZXRyaWV2ZUV4dGVybmFsU3RhdGUoY29udHJvbCk7XG5cdFx0bGV0IGVkaXRTdGF0ZVBhdGggPSBcIlwiLFxuXHRcdFx0Y3VycmVudEVkaXRTdGF0ZUNvbmRpdGlvbixcblx0XHRcdGVkaXRTdGF0ZURlZmF1bHRWYWx1ZSxcblx0XHRcdGN1cnJlbnRFZGl0U3RhdGVJc0RlZmF1bHQ6IGJvb2xlYW4gfCB1bmRlZmluZWQsXG5cdFx0XHRzaG91bGRDbGVhckVkaXRGaWx0ZXI6IHVuZGVmaW5lZCB8IGJvb2xlYW47XG5cdFx0aWYgKGNvbnRyb2wuaXNBPEZpbHRlckJhcj4oXCJzYXAudWkubWRjLkZpbHRlckJhclwiKSkge1xuXHRcdFx0ZWRpdFN0YXRlUGF0aCA9IFwiJGVkaXRTdGF0ZVwiO1xuXHRcdFx0ZWRpdFN0YXRlRGVmYXVsdFZhbHVlID0gRHJhZnRFZGl0U3RhdGUuQUxMLmlkO1xuXHRcdFx0Y3VycmVudEVkaXRTdGF0ZUNvbmRpdGlvbiA9IGRlZXBDbG9uZShzdGF0ZS5maWx0ZXJbZWRpdFN0YXRlUGF0aF0/LlswXSk7XG5cdFx0XHRjdXJyZW50RWRpdFN0YXRlSXNEZWZhdWx0ID0gY3VycmVudEVkaXRTdGF0ZUNvbmRpdGlvbj8udmFsdWVzWzBdID09PSBlZGl0U3RhdGVEZWZhdWx0VmFsdWU7XG5cdFx0XHRzaG91bGRDbGVhckVkaXRGaWx0ZXIgPSBvcHRpb25zICYmIE9iamVjdC5rZXlzKG9wdGlvbnMpLmxlbmd0aCA+IDAgJiYgb3B0aW9ucy5jbGVhckVkaXRGaWx0ZXI7XG5cdFx0fVxuXG5cdFx0Ly8gQ2xlYXIgYWxsIGNvbmRpdGlvbnNcblx0XHRmb3IgKGNvbnN0IGNvbmRpdGlvblBhdGggb2YgT2JqZWN0LmtleXMoc3RhdGUuZmlsdGVyKSkge1xuXHRcdFx0aWYgKCFzaG91bGRDbGVhckVkaXRGaWx0ZXIgJiYgY29uZGl0aW9uUGF0aCA9PT0gZWRpdFN0YXRlUGF0aCAmJiBjdXJyZW50RWRpdFN0YXRlSXNEZWZhdWx0KSB7XG5cdFx0XHRcdC8vIERvIG5vdCBjbGVhciBlZGl0IHN0YXRlIGNvbmRpdGlvbiBpZiBpdCBpcyBhbHJlYWR5IFwiQUxMXCJcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiBzdGF0ZS5maWx0ZXJbY29uZGl0aW9uUGF0aF0pIHtcblx0XHRcdFx0Y29uZGl0aW9uLmZpbHRlcmVkID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGF3YWl0IFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUoY29udHJvbCwgeyBmaWx0ZXI6IHN0YXRlLmZpbHRlciB9KTtcblxuXHRcdGlmIChjb250cm9sLmlzQTxGaWx0ZXJCYXI+KFwic2FwLnVpLm1kYy5GaWx0ZXJCYXJcIikpIHtcblx0XHRcdC8vIFNldCBlZGl0IHN0YXRlIHRvICdBTEwnIGlmIGl0IHdhc24ndCBiZWZvcmVcblx0XHRcdGlmICghc2hvdWxkQ2xlYXJFZGl0RmlsdGVyICYmIGN1cnJlbnRFZGl0U3RhdGVDb25kaXRpb24gJiYgIWN1cnJlbnRFZGl0U3RhdGVJc0RlZmF1bHQpIHtcblx0XHRcdFx0Y3VycmVudEVkaXRTdGF0ZUNvbmRpdGlvbi52YWx1ZXMgPSBbZWRpdFN0YXRlRGVmYXVsdFZhbHVlXTtcblx0XHRcdFx0YXdhaXQgU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZShjb250cm9sLCB7IGZpbHRlcjogeyBbZWRpdFN0YXRlUGF0aF06IFtjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uXSB9IH0pO1xuXHRcdFx0fVxuXG5cdFx0XHQvL2NsZWFyIGZpbHRlciBmaWVsZHMgaW4gZXJyb3Igc3RhdGVcblx0XHRcdGNvbnRyb2wuY2xlYW5VcEFsbEZpbHRlckZpZWxkc0luRXJyb3JTdGF0ZSgpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogTWV0aG9kIHJldHVybnMgdGhlIGNvcHkgb2YgcHJvcGVydHlJbmZvIGJ5IGFkZGluZyBuZWNlc3NhcnkgZmllbGRzIHNvIHRoYXQgc2VsZWN0aW9uIHZhcmlhbnQgY2FuIGJlIHNldCB0byBhIGNvbnRyb2wgbGlrZSB0YWJsZSBhbmQgY2hhcnQuXG5cdCAqIEBwYXJhbSBjb250cm9sIFRoaXMgY291bGQgYmUgYSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIHByb3BlcnR5SW5mb3MgQXJyYXkgb2YgUHJvcGVydHlJbmZvIG9mIHRoZSBjb250cm9sXG5cdCAqIEByZXR1cm5zIFRoZSBkZWVwIGNsb25lIG9mIHByb3BlcnR5SW5mb3Mgd2l0aCBzb21lIGFkZGl0aW9uYWwgZmllbGRzXG5cdCAqL1xuXHRfdXBkYXRlUHJvcGVydHlJbmZvVG9TdXBwb3J0U1YoY29udHJvbDogQ29udHJvbCwgcHJvcGVydHlJbmZvczogQ29udHJvbFByb3BlcnR5SW5mb1tdKTogQ29udHJvbFByb3BlcnR5SW5mb1tdIHtcblx0XHRpZiAoY29udHJvbC5pc0EoXCJzYXAudWkubWRjLkZpbHRlckJhclwiKSkge1xuXHRcdFx0cmV0dXJuIHByb3BlcnR5SW5mb3M7XG5cdFx0fVxuXHRcdHByb3BlcnR5SW5mb3MuZm9yRWFjaCgocHJvcGVydHlJbmZvOiBDb250cm9sUHJvcGVydHlJbmZvKSA9PiB7XG5cdFx0XHRpZiAoKGNvbnRyb2wgYXMgQ29udHJvbCkuaXNBKFwic2FwLnVpLm1kYy5UYWJsZVwiKSkge1xuXHRcdFx0XHRwcm9wZXJ0eUluZm9bXCJjb25kaXRpb25QYXRoXCJdID0gcHJvcGVydHlJbmZvLm5hbWU7XG5cdFx0XHRcdHByb3BlcnR5SW5mb1tcImhhc1ZhbHVlSGVscFwiXSA9IFByb3BlcnR5SGVscGVyLmhhc1ZhbHVlSGVscChcblx0XHRcdFx0XHQoY29udHJvbCBhcyBUYWJsZSkuZ2V0UHJvcGVydHlIZWxwZXIoKS5nZXRQcm9wZXJ0eShwcm9wZXJ0eUluZm8ubmFtZSlcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSBpZiAoKGNvbnRyb2wgYXMgQ29udHJvbCkuaXNBKFwic2FwLnVpLm1kYy5DaGFydFwiKSkge1xuXHRcdFx0XHRpZiAocHJvcGVydHlJbmZvLnBhdGgpIHtcblx0XHRcdFx0XHRwcm9wZXJ0eUluZm9bXCJuYW1lXCJdID0gcHJvcGVydHlJbmZvLnBhdGg7XG5cdFx0XHRcdFx0cHJvcGVydHlJbmZvW1wiY29uZGl0aW9uUGF0aFwiXSA9IHByb3BlcnR5SW5mby5wYXRoO1xuXHRcdFx0XHRcdGNvbnN0IHByb3BlcnR5ID0gKChjb250cm9sIGFzIENoYXJ0KS5nZXRQYXJlbnQoKSBhcyBDaGFydFR5cGUpPy5nZXRQcm9wZXJ0eURhdGFNb2RlbChwcm9wZXJ0eUluZm8ucGF0aCk/LnRhcmdldE9iamVjdDtcblx0XHRcdFx0XHRwcm9wZXJ0eUluZm9bXCJoYXNWYWx1ZUhlbHBcIl0gPSBwcm9wZXJ0eSA/IFByb3BlcnR5SGVscGVyLmhhc1ZhbHVlSGVscChwcm9wZXJ0eSkgOiBmYWxzZTtcblx0XHRcdFx0XHRwcm9wZXJ0eUluZm9bXCJkYXRhVHlwZVwiXSA9IChwcm9wZXJ0eUluZm8/LnR5cGVDb25maWc/LmNsYXNzTmFtZSBhcyBzdHJpbmcpIHx8IHByb3BlcnR5SW5mby5kYXRhVHlwZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiBwcm9wZXJ0eUluZm9zO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBTZXRzIHNlbGVjdGlvbiB2YXJpYW50IHRvIHRoZSB0YWJsZS4gTm90ZTogc2V0U2VsZWN0aW9uVmFyaWFudCB3aWxsIGNsZWFyIHRoZSBleGlzdGluZyBmaWx0ZXJzIGFuZCB0aGVuIGFwcGx5IHRoZSBTZWxlY3Rpb25WYXJpYW50IHZhbHVlcy5cblx0ICogQHBhcmFtIGNvbnRyb2xJbnN0YW5jZSBUaGlzIGNvdWxkIGJlIGEgdGFibGUsIGNoYXJ0LCBvciBmaWx0ZXIgYmFyXG5cdCAqIEBwYXJhbSBzZWxlY3Rpb25WYXJpYW50IFRoZSBzZWxlY3Rpb24gdmFyaWFudCB0byBhcHBseSB0byB0aGUgcmVzcGVjdGl2ZSBtZGMgY29udHJvbHNcblx0ICogQHBhcmFtIHByZWZpbGxEZXNjcmlwdGlvbnMgT3B0aW9uYWwuIElmIHRydWUsIHdlIHdpbGwgdXNlIHRoZSBhc3NvY2lhdGVkIHRleHQgcHJvcGVydHkgdmFsdWVzIChpZiB0aGV5J3JlIGF2YWlsYWJsZSBpbiB0aGUgc2VsZWN0aW9uVmFyaWFudCkgdG8gZGlzcGxheSB0aGUgZmlsdGVyIHZhbHVlIGRlc2NyaXB0aW9ucywgaW5zdGVhZCBvZiBsb2FkaW5nIHRoZW0gZnJvbSB0aGUgYmFja2VuZFxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgZm9yIGFzeW5jaHJvbm91cyBoYW5kbGluZ1xuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyBzZXRTZWxlY3Rpb25WYXJpYW50VG9NZGNDb250cm9sKFxuXHRcdGNvbnRyb2xJbnN0YW5jZTogQ29yZUNvbnRyb2wgfCB1bmRlZmluZWQsXG5cdFx0c2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudCxcblx0XHRwcmVmaWxsRGVzY3JpcHRpb25zID0gZmFsc2Vcblx0KTogUHJvbWlzZTx7IGRpZmZTdGF0ZTogRXh0ZXJuYWxTdGF0ZVR5cGU7IGFwcGx5U3RhdGVSZXN1bHQ6IHVua25vd24gfSB8IHVuZGVmaW5lZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBzdGF0ZTogRXh0ZXJuYWxTdGF0ZVR5cGUgPSBhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKGNvbnRyb2xJbnN0YW5jZSBhcyBDb250cm9sKTtcblx0XHRcdGlmICghc3RhdGUuZmlsdGVyKSB7XG5cdFx0XHRcdExvZy5lcnJvcihgRkUgOiBzZXRTZWxlY3Rpb25WYXJpYW50IEFQSSBjYW5ub3QgYmUgYXBwbGllZCBvbiA6ICR7Y29udHJvbEluc3RhbmNlPy5nZXRJZCgpfWApO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBjb25kaXRpb25zOiBTdGF0ZVV0aWxGaWx0ZXIgPSBhd2FpdCB0aGlzLmNvbnZlcnRTZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMoXG5cdFx0XHRcdGNvbnRyb2xJbnN0YW5jZSBhcyBDb250cm9sLFxuXHRcdFx0XHRzZWxlY3Rpb25WYXJpYW50LFxuXHRcdFx0XHRwcmVmaWxsRGVzY3JpcHRpb25zLFxuXHRcdFx0XHRjb250cm9sSW5zdGFuY2U/LmdldE1vZGVsKClcblx0XHRcdCk7XG5cblx0XHRcdC8vIENsZWFyIGZpbHRlciBvZiB0YWJsZSBiZWZvcmUgYXBwbHlpbmcgc2VsZWN0aW9uIHZhcmlhbnRcblx0XHRcdGF3YWl0IHRoaXMuY2xlYXJGaWx0ZXJWYWx1ZXMoY29udHJvbEluc3RhbmNlPy5nZXRQYXJlbnQoKSBhcyBNYWNyb0FQSSk7XG5cblx0XHRcdC8vIFN0YXRlIHRvIGFwcGx5XG5cdFx0XHRjb25zdCBwcm9wZXJ0eUluZm9zID0gYXdhaXQgdGhpcy5fZ2V0U3VwcG9ydGVkRmlsdGVyRmllbGRzKGNvbnRyb2xJbnN0YW5jZSBhcyBDb250cm9sKTtcblx0XHRcdGNvbnN0IHN0YXRlVG9BcHBseSA9IHN2VG9TdGF0ZUZpbHRlcnMuZ2V0U3RhdGVUb0FwcGx5KHByb3BlcnR5SW5mb3MsIGNvbmRpdGlvbnMpO1xuXHRcdFx0aWYgKGNvbnRyb2xJbnN0YW5jZT8uaXNBKFwic2FwLnVpLm1kYy5DaGFydFwiKSkge1xuXHRcdFx0XHR0aGlzLmNvbnZlcnRDb25kaXRpb25zRm9yQ2hhcnQoc3RhdGVUb0FwcGx5KTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGRpZmZTdGF0ZTogRXh0ZXJuYWxTdGF0ZVR5cGUgPSBhd2FpdCBTdGF0ZVV0aWwuZGlmZlN0YXRlKGNvbnRyb2xJbnN0YW5jZSBhcyBDb250cm9sLCBzdGF0ZSwgc3RhdGVUb0FwcGx5KTtcblx0XHRcdGNvbnN0IGFwcGx5U3RhdGVSZXN1bHQgPSBhd2FpdCBTdGF0ZVV0aWwuYXBwbHlFeHRlcm5hbFN0YXRlKGNvbnRyb2xJbnN0YW5jZSBhcyBDb250cm9sLCBzdGF0ZVRvQXBwbHkpO1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0ZGlmZlN0YXRlLFxuXHRcdFx0XHRhcHBseVN0YXRlUmVzdWx0XG5cdFx0XHR9O1xuXHRcdH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuXHRcdFx0Y29uc3QgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGNvbnRyb2xJbnN0YW5jZT8uZ2V0SWQoKTtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycik7XG5cdFx0XHRMb2cuZXJyb3IoYEZFIDogQnVpbGRpbmdCbG9jayAoJHtpZH0pIC0gc2V0IHNlbGVjdGlvbiB2YXJpYW50IGZhaWxlZCAgOiAke21lc3NhZ2V9YCk7XG5cdFx0XHR0aHJvdyBFcnJvcihtZXNzYWdlKTtcblx0XHR9XG5cdH0sXG5cdC8qKlxuXHQgKiBDb252ZXJ0IHRoZSBjaGFydCBwcm9wZXJ0aWVzIHRvIGludGVybmFsIHByb3BlcnRpZXMgYmVmb3JlIGFwcGx5aW5nIHRoZSBjb25kaXRpb25zLlxuXHQgKiBAcGFyYW0gc3RhdGVUb0FwcGx5IFRoaXMgY29udGFpbnMgdGhlIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBmaWx0ZXIgYW5kIGNvbmRpdGlvbnNcblx0ICovXG5cdGNvbnZlcnRDb25kaXRpb25zRm9yQ2hhcnQoc3RhdGVUb0FwcGx5OiBTdGF0ZVRvQXBwbHkpOiB2b2lkIHtcblx0XHQvLyByZXBsYWNlIGtleXMgb2YgZmlsdGVyIG9iamVjdCBmcm9tIFwiU2FsZXNPZGVyXCIgdG8gaW50ZXJuYWwgZm9ybWF0IFwiX2ZlX2dyb3VwYWJsZV9TYWxlc09yZGVyXCJcblx0XHRmb3IgKGNvbnN0IHByb3BlcnR5IGluIHN0YXRlVG9BcHBseS5maWx0ZXIpIHtcblx0XHRcdGRlbGV0ZSBPYmplY3QuYXNzaWduKHN0YXRlVG9BcHBseS5maWx0ZXIsIHsgW1wiX2ZlX2dyb3VwYWJsZV9cIiArIHByb3BlcnR5XTogc3RhdGVUb0FwcGx5LmZpbHRlcltwcm9wZXJ0eV0gfSlbcHJvcGVydHldO1xuXHRcdH1cblx0XHQvLyByZXBsYWNlIGtleXMgb2YgaXRlbXMgYXJyYXkgZnJvbSBcIlNhbGVzT2RlclwiIHRvIGludGVybmFsIGZvcm1hdCBcIl9mZV9ncm91cGFibGVfU2FsZXNPcmRlclwiXG5cdFx0c3RhdGVUb0FwcGx5Lml0ZW1zLmZvckVhY2goKHByb3BlcnR5T2JqOiB7IG5hbWU6IHN0cmluZyB9KSA9PiB7XG5cdFx0XHRwcm9wZXJ0eU9iai5uYW1lID0gXCJfZmVfZ3JvdXBhYmxlX1wiICsgcHJvcGVydHlPYmoubmFtZTtcblx0XHR9KTtcblx0fVxufTtcblxuZXhwb3J0IHR5cGUgQ29udHJvbFByb3BlcnR5SW5mbyA9IFByb3BlcnR5SW5mbyAmIHtcblx0Y29uZGl0aW9uUGF0aDogc3RyaW5nO1xuXHRkYXRhVHlwZTogc3RyaW5nO1xuXHRhbm5vdGF0aW9uUGF0aD86IHN0cmluZztcblx0bWV0YWRhdGFQYXRoPzogc3RyaW5nO1xuXHRpc1BhcmFtZXRlcj86IGJvb2xlYW47XG5cdGhpZGRlbkZpbHRlcj86IGJvb2xlYW47XG5cdGhhc1ZhbHVlSGVscD86IGJvb2xlYW47XG5cdHJlcXVpcmVkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFN0YXRlSGVscGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0VBMEJBO0FBQ0E7QUFDQTtBQUNBOztFQUVBLE1BQU1BLFdBQVcsR0FBRztJQUNuQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQyxNQUFNQyxtQkFBbUJBLENBQUNDLE9BQWdDLEVBQTZCO01BQ3RGLElBQUk7UUFDSCxNQUFNQyxZQUFZLEdBQUcsTUFBTUMsU0FBUyxDQUFDQyxxQkFBcUIsQ0FBQ0gsT0FBa0IsQ0FBQztRQUM5RSxNQUFNSSxhQUFhLEdBQUdILFlBQVksQ0FBQ0ksTUFBeUI7UUFDNUQsSUFBSUMsVUFBZ0MsR0FBRyxFQUFFO1FBQ3pDLElBQ0NOLE9BQU8sRUFBRU8sU0FBUyxDQUFDLENBQUMsRUFBRUMsR0FBRyxDQUFDLHNDQUFzQyxDQUFDLElBQ2hFUixPQUFPLENBQUNPLFNBQVMsQ0FBQyxDQUFDLENBQWtCRSxhQUFhLEtBQUtDLFNBQVMsRUFDaEU7VUFDREosVUFBVSxHQUFJTixPQUFPLENBQUNPLFNBQVMsQ0FBQyxDQUFDLENBQWtCRSxhQUFhLENBQUMsQ0FBQztRQUNuRTtRQUNBLE1BQU1FLGdCQUFnQixHQUFHQyw4QkFBOEIsQ0FBQ0MsaUNBQWlDLENBQ3hGVCxhQUFhLEVBQ1pKLE9BQU8sQ0FBYWMsaUJBQWlCLENBQUMsQ0FBQyxFQUN4Q1IsVUFDRCxDQUFDO1FBQ0QsSUFBSU4sT0FBTyxFQUFFUSxHQUFHLENBQUMsa0JBQWtCLENBQUMsRUFBRTtVQUNyQyxNQUFNTyxVQUFVLEdBQUcsSUFBSUMsZ0JBQWdCLENBQUMsQ0FBQztVQUN6QyxNQUFNQyxhQUFhLEdBQUdOLGdCQUFnQixDQUFDTyxpQkFBaUIsQ0FBQyxDQUFDO1VBQzFELEtBQUssTUFBTUMsUUFBUSxJQUFJRixhQUFhLEVBQUU7WUFDckNGLFVBQVUsQ0FBQ0ssbUJBQW1CLENBQUNELFFB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
@@ -2,6 +2,7 @@ import Log from "sap/base/Log";
2
2
  import deepClone from "sap/base/util/deepClone";
3
3
  import type { ViewData } from "sap/fe/core/services/TemplatedViewServiceFactory";
4
4
  import * as PropertyHelper from "sap/fe/core/templating/PropertyHelper";
5
+ import type TableAPI from "sap/fe/macros/Table";
5
6
  import DraftEditState from "sap/fe/macros/filterBar/DraftEditState";
6
7
  import type FilterBarAPI from "sap/fe/macros/filterBar/FilterBarAPI";
7
8
  import type { PropertyInfo } from "sap/fe/macros/internal/PropertyInfo";
@@ -133,7 +134,9 @@ const StateHelper = {
133
134
  * @returns Supported filter fields.
134
135
  */
135
136
  async _getSupportedFilterFields(control: Control): Promise<ControlPropertyInfo[]> {
136
- if (control.isA("sap.ui.mdc.Filterbar")) {
137
+ if ((control as Table).isA("sap.ui.mdc.Table")) {
138
+ return ((control as Table).getParent() as TableAPI).getEnhancedFetchedPropertyInfos() as unknown as ControlPropertyInfo[];
139
+ } else if (control.isA("sap.ui.mdc.Filterbar")) {
137
140
  await (control as FilterBar).waitForInitialization();
138
141
  return (control as FilterBar).getControlDelegate().fetchFilterProperties(control);
139
142
  } else if ((control as FilterBar).isA("sap.fe.macros.controls.FilterBar")) {
@@ -145,7 +148,7 @@ const StateHelper = {
145
148
  },
146
149
 
147
150
  /**
148
- * Clears all input values of visible filter fields in the table, chart, or filter bar..
151
+ * Clears all input values of visible filter fields in the table, chart, or filter bar.
149
152
  * @param controlInstance This can be a filter bar, chart, or table.
150
153
  */
151
154
  async clearFilterValues(controlInstance: MacroAPI): Promise<void> {
@@ -215,11 +218,9 @@ const StateHelper = {
215
218
  propertyInfos.forEach((propertyInfo: ControlPropertyInfo) => {
216
219
  if ((control as Control).isA("sap.ui.mdc.Table")) {
217
220
  propertyInfo["conditionPath"] = propertyInfo.name;
218
- propertyInfo["annotationPath"] = propertyInfo.metadataPath ? propertyInfo.metadataPath : "";
219
221
  propertyInfo["hasValueHelp"] = PropertyHelper.hasValueHelp(
220
222
  (control as Table).getPropertyHelper().getProperty(propertyInfo.name)
221
223
  );
222
- propertyInfo["dataType"] = propertyInfo?.typeConfig?.className as string;
223
224
  } else if ((control as Control).isA("sap.ui.mdc.Chart")) {
224
225
  if (propertyInfo.path) {
225
226
  propertyInfo["name"] = propertyInfo.path;
@@ -245,7 +246,7 @@ const StateHelper = {
245
246
  controlInstance: CoreControl | undefined,
246
247
  selectionVariant: SelectionVariant,
247
248
  prefillDescriptions = false
248
- ): Promise<unknown> {
249
+ ): Promise<{ diffState: ExternalStateType; applyStateResult: unknown } | undefined> {
249
250
  try {
250
251
  const state: ExternalStateType = await StateUtil.retrieveExternalState(controlInstance as Control);
251
252
  if (!state.filter) {
@@ -268,7 +269,12 @@ const StateHelper = {
268
269
  if (controlInstance?.isA("sap.ui.mdc.Chart")) {
269
270
  this.convertConditionsForChart(stateToApply);
270
271
  }
271
- return await StateUtil.applyExternalState(controlInstance as Control, stateToApply);
272
+ const diffState: ExternalStateType = await StateUtil.diffState(controlInstance as Control, state, stateToApply);
273
+ const applyStateResult = await StateUtil.applyExternalState(controlInstance as Control, stateToApply);
274
+ return {
275
+ diffState,
276
+ applyStateResult
277
+ };
272
278
  } catch (err: unknown) {
273
279
  const id: string | undefined = controlInstance?.getId();
274
280
  const message = err instanceof Error ? err.message : String(err);
@@ -276,7 +282,6 @@ const StateHelper = {
276
282
  throw Error(message);
277
283
  }
278
284
  },
279
-
280
285
  /**
281
286
  * Convert the chart properties to internal properties before applying the conditions.
282
287
  * @param stateToApply This contains the information regarding filter and conditions
@@ -16,22 +16,22 @@ M_DRAFT_POPOVER_ADMIN_UNSAVED_OBJECT=Unsaved Changes
16
16
  M_FIELD_RUNTIME_DRAFT_POPOVER_NO_DATA_TEXT=No detailed information available.
17
17
 
18
18
  # XMSG,70: Date and time when the last change happened ("Last changed on <date and time>")
19
- M_DRAFT_POPOVER_ADMIN_LAST_CHANGE_TEXT=Last changed on {0}
19
+ M_DRAFT_POPOVER_ADMIN_LAST_CHANGE_TEXT=Last changed on {0}.
20
20
 
21
21
  # XMSG,70: Another user started editing, but did not save the changes
22
- M_FIELD_RUNTIME_DRAFT_POPOVER_UNSAVED_CHANGES_BY_KNOWN=This object has unsaved changes made by {0}
22
+ M_FIELD_RUNTIME_DRAFT_POPOVER_UNSAVED_CHANGES_BY_KNOWN=This object has unsaved changes made by {0}.
23
23
 
24
24
  # XMSG,70: An unknown started editing, but did not save the changes
25
- M_FIELD_RUNTIME_DRAFT_POPOVER_UNSAVED_CHANGES_BY_UNKNOWN=This object has unsaved changes made by another user
25
+ M_FIELD_RUNTIME_DRAFT_POPOVER_UNSAVED_CHANGES_BY_UNKNOWN=This object has unsaved changes made by another user.
26
26
 
27
27
  # XMSG,70
28
- M_DRAFT_POPOVER_ADMIN_GENERIC_LOCKED_OBJECT_POPOVER_TEXT=This object is being edited
28
+ M_DRAFT_POPOVER_ADMIN_GENERIC_LOCKED_OBJECT_POPOVER_TEXT=This object is being edited.
29
29
 
30
30
  # XTIT,50: Draft status column label and tooltip
31
31
  C_DRAFT_STATUS_COLUMN_LABEL_TOOLTIP=Editing Status
32
32
 
33
33
  # XMSG,70: Another user is currently editing the object
34
- M_FIELD_RUNTIME_DRAFT_POPOVER_LOCKED_BY_KNOWN=This object is being edited by {0}
34
+ M_FIELD_RUNTIME_DRAFT_POPOVER_LOCKED_BY_KNOWN=This object is being edited by {0}.
35
35
 
36
36
  # XFLD: Label for Search Field
37
37
  M_FILTERBAR_SEARCH=Search
@@ -40,7 +40,7 @@ M_FILTERBAR_SEARCH=Search
40
40
  M_BASIC_SEARCH=Basic Search
41
41
 
42
42
  # XFLD: Label for Table Action Toolbar Full Screen Action
43
- M_FULL_SCREEN=Enable Fullscreen
43
+ M_FULL_SCREEN=Enable Full Screen
44
44
 
45
45
  # XTIT,30
46
46
  FILTERBAR_EDITING_STATUS=Editing Status
@@ -87,19 +87,19 @@ T_TABLE_SHARE_TO_COLLABORATION_MANAGER_TOO_MANY_ITEMS_SELECTED=You can only shar
87
87
  T_TABLE_SHARE_TO_COLLABORATION_MANAGER_NO_NAVIGATION_POSSIBLE=The creation of a share link for this item is not possible.
88
88
 
89
89
  # XTOL: Tooltip for Table Segmented Button Item
90
- M_COMMON_TABLE_SEGMENTED_BUTTON_ITEM_TOOLTIP=table
90
+ M_COMMON_TABLE_SEGMENTED_BUTTON_ITEM_TOOLTIP=Table
91
91
 
92
92
  # XTOL: Tooltip for Chart Segmented Button Item
93
- M_COMMON_CHART_SEGMENTED_BUTTON_ITEM_TOOLTIP=chart
93
+ M_COMMON_CHART_SEGMENTED_BUTTON_ITEM_TOOLTIP=Chart
94
94
 
95
95
  # XTOL: Tooltip for Hybrid Segmented Button Item
96
- M_COMMON_HYBRID_SEGMENTED_BUTTON_ITEM_TOOLTIP=chart and table
96
+ M_COMMON_HYBRID_SEGMENTED_BUTTON_ITEM_TOOLTIP=Chart and Table
97
97
 
98
98
  # XMSG, 130: Message on accessing header datapoint title link for external-page navigation
99
- M_MICROCHART_TITLE_FRAGMENT_HEADER_MICROCHART_LINK_ARIA=Click here to navigate to the external App
99
+ M_MICROCHART_TITLE_FRAGMENT_HEADER_MICROCHART_LINK_ARIA=Click here to navigate to the external app
100
100
 
101
101
  # XMSG, 130: Message on accessing header datapoint title link for in-page navigation
102
- T_COMMON_HEADERDP_TITLE_LINK_INPAGE_ARIA=Click here to jump to the respective section on the current page
102
+ T_COMMON_HEADERDP_TITLE_LINK_INPAGE_ARIA=Click here to jump to the relevant section on the current page.
103
103
 
104
104
  # XBUT: Button to display details of a form container
105
105
  T_COMMON_OBJECT_PAGE_SHOW_FORM_CONTAINER_DETAILS=Show Details
@@ -111,19 +111,19 @@ T_COMMON_OBJECT_PAGE_HIDE_FORM_CONTAINER_DETAILS=Hide Details
111
111
  M_FIELD_TEXTAREA_TEXT_TOO_LONG=Your text is too long.
112
112
 
113
113
  # XMSG: Message on QuickFitlers for accessibility
114
- M_TABLE_QUICKFILTER_ARIA=Select one of the predefined table views
114
+ M_TABLE_QUICKFILTER_ARIA=Select one of the predefined table views.
115
115
 
116
116
  # XMSG: Message's Table MessageStrip, when an error is raised on empty row due to an hidden mandatory field
117
- M_MESSAGESTRIP_EMPTYROW_MANDATORY_HIDDEN=The table contains errors. {0} is a required property but is not displayed in the table. Please add it through the table settings.
117
+ M_MESSAGESTRIP_EMPTYROW_MANDATORY_HIDDEN=The table contains errors. {0} is a required property but is not displayed in the table. Please add it using the table settings.
118
118
 
119
119
  # XMSG: Message's Table MessageStrip, when several errors are raised on empty row due to hidden mandatory fields
120
- M_MESSAGESTRIP_EMPTYROW_MANDATORY_HIDDEN_PLURAL=The table contains errors. {0} are required properties but are not displayed in the table. Please add them through the table settings.
120
+ M_MESSAGESTRIP_EMPTYROW_MANDATORY_HIDDEN_PLURAL=The table contains errors. {0} are required properties but are not displayed in the table. Please add them using the table settings.
121
121
 
122
122
  # XMSG: Message on empty row for a mandatory field
123
123
  M_TABLE_EMPTYROW_MANDATORY={0} is a required field (*).
124
124
 
125
125
  # XMSG: Message on empty row for an hidden mandatory field
126
- M_TABLE_EMPTYROW_MANDATORY_HIDDEN={0} is a required field (*) but this field is not displayed in the table. Please add it by clicking the Settings button.
126
+ M_TABLE_EMPTYROW_MANDATORY_HIDDEN={0} is a required field (*), but this field is not displayed in the table. Please add it by clicking the Settings button.
127
127
 
128
128
  # XFLD: Label for fields on the object page header form
129
129
  HEADER_FORM_LABEL={0}:
@@ -134,10 +134,10 @@ HEADER_FORM_LABEL={0}:
134
134
  C_MASS_EDIT_DIALOG_TITLE=Edit ({0})
135
135
 
136
136
  # XTIT,30: Default Type Name
137
- C_MASS_EDIT_DIALOG_DEFAULT_TYPENAME=object
137
+ C_MASS_EDIT_DIALOG_DEFAULT_TYPENAME=Object
138
138
 
139
139
  # XTIT,30: Default Type Name Plural
140
- C_MASS_EDIT_DIALOG_DEFAULT_TYPENAME_PLURAL=objects
140
+ C_MASS_EDIT_DIALOG_DEFAULT_TYPENAME_PLURAL=Objects
141
141
 
142
142
  # XFLD - The Keep Values text for the Select/ComboBox
143
143
  C_MASS_EDIT_COMBOBOX_KEEP_VALUES=< Keep Values >
@@ -168,7 +168,7 @@ C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_REASON_DRAFT=Somebody is working on the {0} (
168
168
  C_MASS_EDIT_NO_EDITABLE_FIELDS_DEFAULT=You can only edit values that are displayed in the table, so go to the View Settings to display the columns containing editable fields.
169
169
 
170
170
  # XMSG: Message to confirm non-editable contexts detail header with specific config into the manifest to disply fields
171
- C_MASS_EDIT_NO_EDITABLE_FIELDS_WITH_MANIFEST=It''s not possible to change the values of any of the editable fields listed below base on your current {0} selection:
171
+ C_MASS_EDIT_NO_EDITABLE_FIELDS_WITH_MANIFEST=It''s not possible to change the values of any of the editable fields listed below based on your current {0} selection:
172
172
 
173
173
 
174
174
  # XMSG: Message to inform key user on adaptation mode
@@ -181,16 +181,16 @@ C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_REASON_NON_EDITABLE=Editing isn''t allowed fo
181
181
  C_MASS_EDIT_CONFIRM_BUTTON_TEXT=Edit
182
182
 
183
183
  # YMSG,100: Used in the Toast message box on the list report
184
- C_MASS_EDIT_SUCCESS_TOAST=Your changes have been saved
184
+ C_MASS_EDIT_SUCCESS_TOAST=Your changes have been saved.
185
185
 
186
186
  # YMSG,100: Used in the Toast message box on the object page
187
- C_OBJECT_PAGE_MASS_EDIT_SUCCESS_TOAST=Your changes have been applied.
187
+ C_OBJECT_PAGE_MASS_EDIT_SUCCESS_TOAST=Your changes have been saved.
188
188
 
189
189
  # YMSG,100: Mass edit changes with errors
190
190
  C_MASS_EDIT_CHANGES_WITH_ERROR={0} of {1} objects updated.
191
191
 
192
192
  # YMSG,100: Used in the Toast message box for mass edit with no change
193
- C_MASS_EDIT_NO_CHANGE=You haven't made any changes
193
+ C_MASS_EDIT_NO_CHANGE=You haven''t made any changes.
194
194
 
195
195
  # XTIT,50: Title of the mass edit design dialog
196
196
  C_MASS_EDIT_DESIGN_DIALOG_TITLE=View Settings
@@ -253,7 +253,7 @@ M_TABLE_SHOW_DETAILS=Show Details
253
253
  M_TABLE_GROUP_HEADER_TITLE={0}: {1}
254
254
 
255
255
  # XFLD: Default text for a table group header title value when this one is null
256
- M_TABLE_GROUP_HEADER_TITLE_VALUE=empty value
256
+ M_TABLE_GROUP_HEADER_TITLE_VALUE=Empty Value
257
257
 
258
258
  # XMSG,100: Overlay text shown for the visual filters when an error occurred in the back end
259
259
  M_VISUAL_FILTERS_ERROR_DATA_TEXT=Unable to load data due to a technical issue.
@@ -271,7 +271,7 @@ M_VISUAL_FILTERS_MULTIPLE_CURRENCY=To see this chart, set only one currency for
271
271
  M_VISUAL_FILTERS_MULTIPLE_UNIT=To see this chart, set only one value for {0}
272
272
 
273
273
  # XFLD,150: Text appearing for visual filters for the Not Supported chartTypes
274
- M_VISUAL_FILTER_UNSUPPORTED_CHART_TYPE=Chart type is not supported for visual filters. Use a line or bar chart.
274
+ M_VISUAL_FILTER_UNSUPPORTED_CHART_TYPE=Chart type is not supported for visual filters. Use a line chart or a bar chart.
275
275
 
276
276
  # XFLD,100: Text appearing for visual filters for the Hidden Measures
277
277
  M_VISUAL_FILTER_HIDDEN_MEASURE=Unable to load visual filter. Measure {0} is marked with UI.Hidden.
@@ -415,7 +415,7 @@ M_CARD_FAILURE_TABLE_REASON_UNSUPPORTED_COLUMNS=At least one text-based column w
415
415
  M_CARD_CREATION_FAILURE_CHART_REASON_DATE_RANGE_FILTERS=Card creation isn't possible. Please retry after ensuring no relative date filters (like "Yesterday") are used.
416
416
 
417
417
  # XMSG,300: Error message to indicate to end user that row level navigation would be disabled for apps where external navigation is configured
418
- M_ROW_LEVEL_NAVIGATION_DISABLED_MSG_REASON_EXTERNAL_NAVIGATION_CONFIGURED=Direct navigation to the object details isn\u2019t possible from this insights card.
418
+ M_ROW_LEVEL_NAVIGATION_DISABLED_MSG_REASON_EXTERNAL_NAVIGATION_CONFIGURED=Direct navigation to the object details isn''t possible from this insights card.
419
419
 
420
420
  # ----------------Contact quick view --------------------------------
421
421
 
@@ -498,7 +498,7 @@ M_EASY_FILTER_FILTER_MODE_AI=SAP Business AI
498
498
  M_EASY_FILTER_FILTER_MODE_CLASSIC=Classic
499
499
  M_EASY_FILTER_NOTICE=Prompt-based filtering creates completely new filter criteria. Generated content may not always be accurate. Consider verifying it.
500
500
  M_EASY_FILTER_GO=Go
501
- M_EASY_FILTER_PLACEHOLDER=Enter your query using natural language to filter the list OR type in IDs in quotation marks to execute a search like example \u201c123456\u201d
501
+ M_EASY_FILTER_PLACEHOLDER=To execute a search, enter your query using natural language to filter the list or type in IDs in quotation marks, for example "123456".
502
502
  M_EASY_FILTER_SHOW_RESULTS_FOR=Showing results for:
503
503
  M_EASY_FILTER_MANDATORY_FILTER_SINGULAR={0} is a mandatory filter.
504
504
  M_EASY_FILTER_MANDATORY_FILTER_PLURAL={0} are mandatory filters.
@@ -540,7 +540,7 @@ RTA_CONFIGURATION_FILTERBAR_USESEMANTICDATERANGE_DESC=Decide whether a Semantic
540
540
  RTA_CONFIGURATION_FILTERBAR_NAVIGATIONPROPS_NAME=Navigation Properties
541
541
 
542
542
  # XTIT: Label for Configuration dialog setting description
543
- RTA_CONFIGURATION_FILTERBAR_NAVIGATIONPROPS_DESC=Navigation Properties in the filter bar
543
+ RTA_CONFIGURATION_FILTERBAR_NAVIGATIONPROPS_DESC=Navigation Properties in the Filter Bar
544
544
 
545
545
  # XFLD: Label for Configuration dialog setting
546
546
  RTA_CONFIGURATION_TABLE_ENABLEEXPORT_NAME=Enable Table Export
@@ -615,7 +615,7 @@ RTA_CONFIGURATION_TABLE_WIDTHCOLUMNHEADER_DESC=Define whether the width should i
615
615
  RTA_CONFIGURATION_TABLE_SELECTALL_NAME=Enable Select All
616
616
 
617
617
  # XTIT: Label for Configuration dialog setting description
618
- RTA_CONFIGURATION_TABLE_SELECTALL_DESC=Define whether the select all button should be shown
618
+ RTA_CONFIGURATION_TABLE_SELECTALL_DESC=Define whether the Select All button should be shown
619
619
 
620
620
  # XFLD: Label for Configuration dialog setting
621
621
  RTA_CONFIGURATION_TABLE_THRESHOLD_NAME=Threshold
@@ -663,7 +663,7 @@ RTA_CONFIGURATION_TABLE_TYPE_ENUM_ANLT=Analytical Table
663
663
  RTA_CONFIGURATION_TABLE_HEADER_TEXT_NAME=Header Text
664
664
 
665
665
  # XTIT: Label for Configuration dialog setting description
666
- RTA_CONFIGURATION_HEADER_TEXT_DESC=Define the header
666
+ RTA_CONFIGURATION_HEADER_TEXT_DESC=Define the Header
667
667
 
668
668
  # XFLD: Label for Configuration dialog setting
669
669
  RTA_CONFIGURATION_TABLE_FULL_SCREEN_NAME=Show Full Screen
@@ -759,7 +759,7 @@ RTA_CONFIGURATION_TABLE_HIERQUALIF_DESC=Define the hierarchy qualifier
759
759
  RTA_CONFIGURATION_TABLE_BEFOREREBIND_NAME=Event beforeRebindTable
760
760
 
761
761
  # XTIT: Label for Configuration dialog setting description
762
- RTA_CONFIGURATION_TABLE_BEFOREREBIND_DESC=The event triggered when the table is about to be rebinded
762
+ RTA_CONFIGURATION_TABLE_BEFOREREBIND_DESC=The event triggered when the table is about to be rebound
763
763
 
764
764
  # XFLD: Label for Configuration dialog setting
765
765
  RTA_CONFIGURATION_TABLE_SELECTIONCHANGE_NAME=Event selectionChange
@@ -835,3 +835,11 @@ C_EASYEDIT_THUMBS_UP=Thumbs up for the easy fill
835
835
  C_EASYEDIT_THUMBS_DOWN=Thumbs down for the easy fill
836
836
 
837
837
  C_EASYEDIT_FEEDBACK_SENT=Feedback sent
838
+
839
+ C_EASYEDIT_VH_ERROR=Value "{0}" does not exist.
840
+
841
+ # XTIT: Title of the template breadcrumbs
842
+ T_BREADCRUMBS_TITLE_LONG_TEMPLATE={0}: {1}
843
+
844
+ # XTIT: Title for first breadcrumb in the Ariba application
845
+ T_APP_HOME=Home
@@ -81,7 +81,7 @@ M_MESSAGESTRIP_EMPTYROW_MANDATORY_HIDDEN_PLURAL=\u064A\u062D\u062A\u0648\u064A \
81
81
 
82
82
  M_TABLE_EMPTYROW_MANDATORY=\u0627\u0644\u062D\u0642\u0644 {0} \u0645\u0637\u0644\u0648\u0628 (*).
83
83
 
84
- M_TABLE_EMPTYROW_MANDATORY_HIDDEN=\u0627\u0644\u062D\u0642\u0644 {0} \u0645\u0637\u0644\u0648\u0628 (*) \u0644\u0643\u0646 \u0644\u0645 \u064A\u062A\u0645 \u0639\u0631\u0636\u0647 \u0641\u064A \u0627\u0644\u062C\u062F\u0648\u0644. \u064A\u064F\u0631\u062C\u0649 \u0625\u0636\u0627\u0641\u062A\u0647 \u0628\u0627\u0644\u0646\u0642\u0631 \u0641\u0648\u0642 \u0627\u0644\u0632\u0631 ''\u0625\u0639\u062F\u0627\u062F\u0627\u062A''.
84
+ M_TABLE_EMPTYROW_MANDATORY_HIDDEN=\u0627\u0644\u062D\u0642\u0644 {0} \u0645\u0637\u0644\u0648\u0628 (*)\u060C \u0648\u0644\u0643\u0646 \u0644\u0645 \u064A\u062A\u0645 \u0639\u0631\u0636\u0647 \u0641\u064A \u0647\u0630\u0627 \u0627\u0644\u062D\u0642\u0644 \u0641\u064A \u0627\u0644\u062C\u062F\u0648\u0644. \u064A\u0631\u062C\u0649 \u0625\u0636\u0627\u0641\u062A\u0647 \u0628\u0627\u0644\u0646\u0642\u0631 \u0641\u0648\u0642 \u0632\u0631 \u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A.
85
85
 
86
86
  HEADER_FORM_LABEL={0}\:
87
87
 
@@ -121,7 +121,7 @@ C_MASS_EDIT_CONFIRM_BUTTON_TEXT=\u062A\u062D\u0631\u064A\u0631
121
121
 
122
122
  C_MASS_EDIT_SUCCESS_TOAST=\u062A\u0645 \u062D\u0641\u0638 \u0627\u0644\u062A\u063A\u064A\u064A\u0631\u0627\u062A \u0627\u0644\u062E\u0627\u0635\u0629 \u0628\u0643.
123
123
 
124
- C_OBJECT_PAGE_MASS_EDIT_SUCCESS_TOAST=\u062A\u0645 \u062A\u0637\u0628\u064A\u0642 \u0627\u0644\u062A\u063A\u064A\u064A\u0631\u0627\u062A \u0627\u0644\u062A\u064A \u0642\u0645\u062A \u0628\u0647\u0627.
124
+ C_OBJECT_PAGE_MASS_EDIT_SUCCESS_TOAST=\u062A\u0645 \u062D\u0641\u0638 \u0627\u0644\u062A\u063A\u064A\u064A\u0631\u0627\u062A \u0627\u0644\u062E\u0627\u0635\u0629 \u0628\u0643.
125
125
 
126
126
  C_MASS_EDIT_CHANGES_WITH_ERROR=\u062A\u0645 \u062A\u062D\u062F\u064A\u062B {0} \u0645\u0646 {1} \u0645\u0646 \u0627\u0644\u0643\u0627\u0626\u0646\u0627\u062A.
127
127
 
@@ -338,7 +338,7 @@ M_EASY_FILTER_FILTER_MODE_AI=SAP Business AI
338
338
  M_EASY_FILTER_FILTER_MODE_CLASSIC=\u062A\u0642\u0644\u064A\u062F\u064A
339
339
  M_EASY_FILTER_NOTICE=\u062A\u0642\u0648\u0645 \u0627\u0644\u062A\u0635\u0641\u064A\u0629 \u0639\u0644\u0649 \u0623\u0633\u0627\u0633 \u0627\u0644\u0637\u0644\u0628 \u0627\u0644\u0641\u0648\u0631\u064A \u0628\u0625\u0646\u0634\u0627\u0621 \u0645\u0639\u0627\u064A\u064A\u0631 \u062A\u0635\u0641\u064A\u0629 \u062C\u062F\u064A\u062F\u0629 \u062A\u0645\u0627\u0645\u064B\u0627. \u0642\u062F \u0644\u0627 \u064A\u0643\u0648\u0646 \u0627\u0644\u0645\u062D\u062A\u0648\u0649 \u0627\u0644\u0630\u064A \u062A\u0645 \u0625\u0646\u0634\u0627\u0624\u0647 \u062F\u0642\u064A\u0642\u064B\u0627 \u062F\u0627\u0626\u0645\u064B\u0627. \u0641\u0643\u0631 \u0641\u064A \u0627\u0644\u062A\u062D\u0642\u0642 \u0645\u0646 \u0635\u062D\u062A\u0647.
340
340
  M_EASY_FILTER_GO=\u0627\u0646\u062A\u0642\u0627\u0644
341
- M_EASY_FILTER_PLACEHOLDER=\u0644\u062A\u0646\u0641\u064A\u0630 \u0623\u064A \u0628\u062D\u062B\u060C \u0623\u062F\u062E\u0644 \u0627\u0633\u062A\u0639\u0644\u0627\u0645\u0643 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0627\u0644\u0644\u063A\u0629 \u0627\u0644\u0637\u0628\u064A\u0639\u064A\u0629 \u0644\u062A\u0635\u0641\u064A\u0629 \u0627\u0644\u0642\u0627\u0626\u0645\u0629 \u0623\u0648 \u0627\u0643\u062A\u0628 \u0627\u0644\u0645\u0639\u0631\u0641\u0627\u062A \u0641\u064A \u0639\u0644\u0627\u0645\u0627\u062A \u0627\u0644\u0627\u0642\u062A\u0628\u0627\u0633\u060C \u0639\u0644\u0649 \u0633\u0628\u064A\u0644 \u0627\u0644\u0645\u062B\u0627\u0644 "123456".
341
+ M_EASY_FILTER_PLACEHOLDER=\u0644\u062A\u0646\u0641\u064A\u0630 \u0628\u062D\u062B\u060C \u0623\u062F\u062E\u0644 \u0627\u0633\u062A\u0639\u0644\u0627\u0645\u0643 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0627\u0644\u0644\u063A\u0629 \u0627\u0644\u0637\u0628\u064A\u0639\u064A\u0629 \u0644\u062A\u0635\u0641\u064A\u0629 \u0627\u0644\u0642\u0627\u0626\u0645\u0629 \u0623\u0648 \u0627\u0643\u062A\u0628 \u0627\u0644\u0645\u0639\u0631\u0641\u0627\u062A \u0628\u064A\u0646 \u0639\u0644\u0627\u0645\u062A\u064A \u0627\u0642\u062A\u0628\u0627\u0633\u060C \u0639\u0644\u0649 \u0633\u0628\u064A\u0644 \u0627\u0644\u0645\u062B\u0627\u0644 "123456".
342
342
  M_EASY_FILTER_SHOW_RESULTS_FOR=\u0625\u0638\u0647\u0627\u0631 \u0646\u062A\u0627\u0626\u062C\:
343
343
  M_EASY_FILTER_MANDATORY_FILTER_SINGULAR={0} \u0639\u0627\u0645\u0644 \u062A\u0635\u0641\u064A\u0629 \u0625\u0644\u0632\u0627\u0645\u064A.
344
344
  M_EASY_FILTER_MANDATORY_FILTER_PLURAL={0} \u0639\u0648\u0627\u0645\u0644 \u062A\u0635\u0641\u064A\u0629 \u0625\u0644\u0632\u0627\u0645\u064A\u0629.
@@ -565,3 +565,5 @@ C_EASYEDIT_THUMBS_UP=\u0625\u0628\u0647\u0627\u0645 \u0644\u0623\u0639\u0644\u06
565
565
  C_EASYEDIT_THUMBS_DOWN=\u0625\u0628\u0647\u0627\u0645 \u0644\u0623\u0633\u0641\u0644 \u0644\u0633\u0647\u0648\u0644\u0629 \u0627\u0644\u0645\u0644\u0621
566
566
 
567
567
  C_EASYEDIT_FEEDBACK_SENT=\u062A\u0645 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0645\u0644\u0627\u062D\u0638\u0627\u062A
568
+
569
+ C_EASYEDIT_VH_ERROR=\u0627\u0644\u0642\u064A\u0645\u0629 "{0}" \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\u0629.