@sapui5/sap.fe.macros 1.140.0 → 1.141.0

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 (199) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Chart.js +53 -2
  4. package/src/sap/fe/macros/Chart.tsx +55 -0
  5. package/src/sap/fe/macros/CollaborativeDraftHandler.js +230 -0
  6. package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +218 -0
  7. package/src/sap/fe/macros/CommonHelper.js +59 -15
  8. package/src/sap/fe/macros/CommonHelper.ts +65 -14
  9. package/src/sap/fe/macros/ConditionalSwitch.js +174 -0
  10. package/src/sap/fe/macros/ConditionalSwitch.tsx +141 -0
  11. package/src/sap/fe/macros/ConditionalSwitchProperty.js +78 -0
  12. package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +62 -0
  13. package/src/sap/fe/macros/Field.js +14 -10
  14. package/src/sap/fe/macros/Field.ts +15 -12
  15. package/src/sap/fe/macros/MacroAPI.js +9 -4
  16. package/src/sap/fe/macros/MacroAPI.ts +9 -4
  17. package/src/sap/fe/macros/MultiValueField.js +10 -5
  18. package/src/sap/fe/macros/MultiValueField.tsx +7 -1
  19. package/src/sap/fe/macros/Page.js +5 -7
  20. package/src/sap/fe/macros/Page.tsx +4 -6
  21. package/src/sap/fe/macros/Paginator.js +9 -4
  22. package/src/sap/fe/macros/Paginator.tsx +12 -3
  23. package/src/sap/fe/macros/RichTextEditor.js +3 -2
  24. package/src/sap/fe/macros/RichTextEditor.tsx +2 -1
  25. package/src/sap/fe/macros/Status.js +38 -13
  26. package/src/sap/fe/macros/Status.tsx +26 -6
  27. package/src/sap/fe/macros/ai/EasyFillDialog.js +11 -17
  28. package/src/sap/fe/macros/ai/EasyFillDialog.tsx +11 -16
  29. package/src/sap/fe/macros/ai/EasyFilterBar.js +195 -55
  30. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +234 -57
  31. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +76 -33
  32. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +89 -40
  33. package/src/sap/fe/macros/chart/Chart.js +2 -2
  34. package/src/sap/fe/macros/chart/Chart.tsx +1 -1
  35. package/src/sap/fe/macros/chart/MdcChartTemplate.js +4 -2
  36. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +4 -1
  37. package/src/sap/fe/macros/contentSwitcher/ContentSwitcher.js +9 -2
  38. package/src/sap/fe/macros/contentSwitcher/ContentSwitcher.tsx +8 -0
  39. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +5 -1
  40. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +4 -0
  41. package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.js +2 -2
  42. package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.ts +1 -1
  43. package/src/sap/fe/macros/controls/FilterBar.js +14 -5
  44. package/src/sap/fe/macros/controls/FilterBar.ts +3 -0
  45. package/src/sap/fe/macros/controls/RadioButtons.js +61 -38
  46. package/src/sap/fe/macros/controls/RadioButtons.tsx +39 -18
  47. package/src/sap/fe/macros/controls/Section.js +4 -3
  48. package/src/sap/fe/macros/controls/Section.ts +3 -2
  49. package/src/sap/fe/macros/controls/section/SubSection.js +63 -8
  50. package/src/sap/fe/macros/controls/section/SubSection.ts +67 -1
  51. package/src/sap/fe/macros/field/Field.js +2 -2
  52. package/src/sap/fe/macros/field/Field.tsx +1 -1
  53. package/src/sap/fe/macros/field/FieldFormatOptions.js +25 -2
  54. package/src/sap/fe/macros/field/FieldFormatOptions.ts +13 -0
  55. package/src/sap/fe/macros/field/FieldHelper.js +2 -2
  56. package/src/sap/fe/macros/field/FieldHelper.ts +1 -4
  57. package/src/sap/fe/macros/field/FieldTemplating.js +3 -3
  58. package/src/sap/fe/macros/field/FieldTemplating.ts +4 -2
  59. package/src/sap/fe/macros/filter/FilterUtils.js +232 -2
  60. package/src/sap/fe/macros/filter/FilterUtils.ts +290 -4
  61. package/src/sap/fe/macros/filterBar/FilterBar.block.js +5 -3
  62. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +4 -2
  63. package/src/sap/fe/macros/filterBar/FilterBar.js +2 -2
  64. package/src/sap/fe/macros/filterBar/FilterBar.tsx +1 -1
  65. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +63 -27
  66. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +49 -3
  67. package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +5 -3
  68. package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
  69. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +7 -2
  70. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +6 -1
  71. package/src/sap/fe/macros/form/Form.block.js +7 -8
  72. package/src/sap/fe/macros/form/Form.block.ts +4 -6
  73. package/src/sap/fe/macros/form/FormContainer.block.js +555 -4
  74. package/src/sap/fe/macros/form/FormContainer.block.ts +665 -6
  75. package/src/sap/fe/macros/form/FormContainer.fragment.xml +1 -0
  76. package/src/sap/fe/macros/form/FormDelegate.js +6 -9
  77. package/src/sap/fe/macros/form/FormDelegate.ts +5 -8
  78. package/src/sap/fe/macros/internal/DataPoint.js +3 -2
  79. package/src/sap/fe/macros/internal/DataPoint.tsx +10 -1
  80. package/src/sap/fe/macros/internal/FilterField.block.js +16 -8
  81. package/src/sap/fe/macros/internal/FilterField.block.ts +11 -7
  82. package/src/sap/fe/macros/internal/field/DisplayStyle.js +7 -1
  83. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +8 -0
  84. package/src/sap/fe/macros/internal/field/EditStyle.js +21 -4
  85. package/src/sap/fe/macros/internal/field/EditStyle.tsx +18 -4
  86. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +3 -2
  87. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +4 -1
  88. package/src/sap/fe/macros/internal/filterField/FilterFieldTemplate.fragment.xml +1 -0
  89. package/src/sap/fe/macros/internal/helpers/ActionHelper.js +36 -5
  90. package/src/sap/fe/macros/internal/helpers/ActionHelper.ts +34 -4
  91. package/src/sap/fe/macros/library.js +1 -1
  92. package/src/sap/fe/macros/mdc/adapter/StateFilterToSelectionVariant.js +2 -1
  93. package/src/sap/fe/macros/mdc/adapter/StateFilterToSelectionVariant.ts +1 -0
  94. package/src/sap/fe/macros/messagebundle.properties +20 -2
  95. package/src/sap/fe/macros/messagebundle_ar.properties +1 -1
  96. package/src/sap/fe/macros/messagebundle_bg.properties +1 -1
  97. package/src/sap/fe/macros/messagebundle_ca.properties +1 -1
  98. package/src/sap/fe/macros/messagebundle_cnr.properties +1 -1
  99. package/src/sap/fe/macros/messagebundle_cs.properties +1 -1
  100. package/src/sap/fe/macros/messagebundle_cy.properties +1 -1
  101. package/src/sap/fe/macros/messagebundle_da.properties +1 -1
  102. package/src/sap/fe/macros/messagebundle_de.properties +4 -4
  103. package/src/sap/fe/macros/messagebundle_el.properties +1 -1
  104. package/src/sap/fe/macros/messagebundle_en.properties +1 -1
  105. package/src/sap/fe/macros/messagebundle_en_GB.properties +1 -1
  106. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +1 -1
  107. package/src/sap/fe/macros/messagebundle_es.properties +2 -2
  108. package/src/sap/fe/macros/messagebundle_es_MX.properties +1 -1
  109. package/src/sap/fe/macros/messagebundle_et.properties +1 -1
  110. package/src/sap/fe/macros/messagebundle_fi.properties +1 -1
  111. package/src/sap/fe/macros/messagebundle_fr.properties +1 -1
  112. package/src/sap/fe/macros/messagebundle_fr_CA.properties +1 -1
  113. package/src/sap/fe/macros/messagebundle_hi.properties +1 -1
  114. package/src/sap/fe/macros/messagebundle_hr.properties +1 -1
  115. package/src/sap/fe/macros/messagebundle_hu.properties +1 -1
  116. package/src/sap/fe/macros/messagebundle_id.properties +5 -5
  117. package/src/sap/fe/macros/messagebundle_it.properties +1 -1
  118. package/src/sap/fe/macros/messagebundle_iw.properties +1 -1
  119. package/src/sap/fe/macros/messagebundle_ja.properties +5 -5
  120. package/src/sap/fe/macros/messagebundle_kk.properties +1 -1
  121. package/src/sap/fe/macros/messagebundle_ko.properties +2 -2
  122. package/src/sap/fe/macros/messagebundle_lt.properties +2 -2
  123. package/src/sap/fe/macros/messagebundle_lv.properties +1 -1
  124. package/src/sap/fe/macros/messagebundle_mk.properties +2 -2
  125. package/src/sap/fe/macros/messagebundle_ms.properties +1 -1
  126. package/src/sap/fe/macros/messagebundle_nl.properties +1 -1
  127. package/src/sap/fe/macros/messagebundle_no.properties +1 -1
  128. package/src/sap/fe/macros/messagebundle_pl.properties +1 -1
  129. package/src/sap/fe/macros/messagebundle_pt.properties +1 -1
  130. package/src/sap/fe/macros/messagebundle_pt_PT.properties +1 -1
  131. package/src/sap/fe/macros/messagebundle_ro.properties +1 -1
  132. package/src/sap/fe/macros/messagebundle_ru.properties +1 -1
  133. package/src/sap/fe/macros/messagebundle_sh.properties +1 -1
  134. package/src/sap/fe/macros/messagebundle_sk.properties +1 -1
  135. package/src/sap/fe/macros/messagebundle_sl.properties +1 -1
  136. package/src/sap/fe/macros/messagebundle_sr.properties +1 -1
  137. package/src/sap/fe/macros/messagebundle_sv.properties +1 -1
  138. package/src/sap/fe/macros/messagebundle_th.properties +1 -1
  139. package/src/sap/fe/macros/messagebundle_tr.properties +1 -1
  140. package/src/sap/fe/macros/messagebundle_uk.properties +1 -1
  141. package/src/sap/fe/macros/messagebundle_vi.properties +2 -2
  142. package/src/sap/fe/macros/messagebundle_zh_CN.properties +1 -1
  143. package/src/sap/fe/macros/messagebundle_zh_TW.properties +1 -1
  144. package/src/sap/fe/macros/messages/MessageButton.js +1 -1
  145. package/src/sap/fe/macros/messages/MessageButton.ts +2 -2
  146. package/src/sap/fe/macros/messages/MessagePopover.js +3 -1
  147. package/src/sap/fe/macros/messages/MessagePopover.ts +2 -0
  148. package/src/sap/fe/macros/microchart/MicroChart.js +2 -2
  149. package/src/sap/fe/macros/microchart/MicroChart.tsx +1 -1
  150. package/src/sap/fe/macros/microchart/MicroChartHelper.js +2 -2
  151. package/src/sap/fe/macros/microchart/MicroChartHelper.tsx +1 -1
  152. package/src/sap/fe/macros/table/ActionsTemplating.js +4 -8
  153. package/src/sap/fe/macros/table/ActionsTemplating.tsx +5 -8
  154. package/src/sap/fe/macros/table/BasicSearch.js +1 -1
  155. package/src/sap/fe/macros/table/BasicSearch.ts +2 -1
  156. package/src/sap/fe/macros/table/Column.js +14 -2
  157. package/src/sap/fe/macros/table/Column.ts +7 -0
  158. package/src/sap/fe/macros/table/ColumnExportSettings.js +83 -15
  159. package/src/sap/fe/macros/table/ColumnExportSettings.ts +44 -0
  160. package/src/sap/fe/macros/table/ColumnOverride.js +14 -2
  161. package/src/sap/fe/macros/table/ColumnOverride.ts +7 -0
  162. package/src/sap/fe/macros/table/MdcTableTemplate.js +5 -5
  163. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +15 -9
  164. package/src/sap/fe/macros/table/QuickFilterSelector.js +12 -3
  165. package/src/sap/fe/macros/table/QuickFilterSelector.tsx +15 -2
  166. package/src/sap/fe/macros/table/Table.block.js +188 -147
  167. package/src/sap/fe/macros/table/Table.block.tsx +41 -11
  168. package/src/sap/fe/macros/table/Table.js +16 -10
  169. package/src/sap/fe/macros/table/Table.tsx +16 -10
  170. package/src/sap/fe/macros/table/TableAPI.js +224 -184
  171. package/src/sap/fe/macros/table/TableAPI.ts +63 -19
  172. package/src/sap/fe/macros/table/TableEventHandlerProvider.js +6 -6
  173. package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +5 -4
  174. package/src/sap/fe/macros/table/TableHelper.js +2 -2
  175. package/src/sap/fe/macros/table/TableHelper.ts +1 -1
  176. package/src/sap/fe/macros/table/TreeTable.js +16 -10
  177. package/src/sap/fe/macros/table/TreeTable.tsx +16 -10
  178. package/src/sap/fe/macros/table/Utils.js +3 -2
  179. package/src/sap/fe/macros/table/Utils.ts +7 -2
  180. package/src/sap/fe/macros/table/delegates/TableDelegate.js +69 -33
  181. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +75 -32
  182. package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +10 -10
  183. package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +11 -9
  184. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +14 -12
  185. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +11 -10
  186. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +34 -4
  187. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +45 -2
  188. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +55 -12
  189. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +71 -9
  190. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +53 -2
  191. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +55 -0
  192. package/src/sap/fe/macros/table/mixin/TableExport.js +22 -3
  193. package/src/sap/fe/macros/table/mixin/TableExport.ts +25 -4
  194. package/src/sap/fe/macros/table/mixin/TableSharing.js +3 -2
  195. package/src/sap/fe/macros/table/mixin/TableSharing.ts +4 -3
  196. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +27 -10
  197. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +31 -13
  198. package/src/sap/fe/macros/visualfilters/VisualFilter.js +5 -3
  199. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +3 -1
@@ -2,7 +2,7 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/collaboration/CollaborationCommon", "sap/fe/core/converters/ManifestSettings", "sap/fe/core/converters/MetaModelConverter", "sap/ui/core/Lib", "sap/ui/core/Messaging", "sap/ui/core/message/Message", "sap/ui/core/message/MessageType"], function (Log, CommonUtils, CollaborationCommon, ManifestSettings, MetaModelConverter, Library, Messaging, Message, MessageType) {
5
+ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/collaboration/CollaborationCommon", "sap/fe/core/controllerextensions/editFlow/TransactionHelper", "sap/fe/core/converters/ManifestSettings", "sap/fe/core/converters/MetaModelConverter", "sap/ui/core/Lib", "sap/ui/core/Messaging", "sap/ui/core/message/Message", "sap/ui/core/message/MessageType"], function (Log, CommonUtils, CollaborationCommon, TransactionHelper, ManifestSettings, MetaModelConverter, Library, Messaging, Message, MessageType) {
6
6
  "use strict";
7
7
 
8
8
  var _exports = {};
@@ -13,6 +13,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
13
13
  function EmptyRowsHandler() {}
14
14
  _exports = EmptyRowsHandler;
15
15
  var _proto = EmptyRowsHandler.prototype;
16
+ /**
17
+ * Promise that resolves to the table's default values.
18
+ */
16
19
  _proto.setupMixin = function setupMixin(_baseClass) {
17
20
  // This method is needed to implement interface IInterfaceWithMixin
18
21
  }
@@ -106,7 +109,16 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
106
109
  } else {
107
110
  appComponent.getSideEffectsService().deregisterTargetCallback(navigationPath);
108
111
  }
109
- this.setUpEmptyRows(this.getContent());
112
+ if (this.tableDefaultsPromise) {
113
+ this.tableDefaultsPromise.then(tableDefaultData => {
114
+ this.setUpEmptyRows(this.getContent(), false, tableDefaultData);
115
+ return tableDefaultData;
116
+ }).catch(error => {
117
+ Log.error("Error while setting up empty rows:", error);
118
+ });
119
+ } else {
120
+ this.setUpEmptyRows(this.getContent());
121
+ }
110
122
  }
111
123
 
112
124
  /**
@@ -123,18 +135,23 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
123
135
  await this.createEmptyRows(binding, table);
124
136
  }
125
137
  return;
126
- };
127
- _proto.setUpEmptyRows = async function setUpEmptyRows(table) {
128
- let createButtonWasPressed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
138
+ }
139
+
140
+ /**
141
+ * Helper function to perform common checks for table defaults and empty rows setup.
142
+ * @param table The table being processed
143
+ * @returns The binding object if checks pass, or undefined if checks fail
144
+ */;
145
+ _proto._validateAndRetrieveBinding = async function _validateAndRetrieveBinding(table) {
129
146
  if (this.getTableDefinition().control?.creationMode !== CreationMode.InlineCreationRows) {
130
- return;
147
+ return undefined;
131
148
  }
132
149
  const uiModel = table.getModel("ui");
133
150
  if (!uiModel) {
134
- return;
151
+ return undefined;
135
152
  }
136
153
  if (uiModel.getProperty("/isEditablePending")) {
137
- // The edit mode is still being computed, so we wait until this computation is done before checking its value
154
+ // Wait until the edit mode computation is complete
138
155
  const watchBinding = uiModel.bindProperty("/isEditablePending");
139
156
  await new Promise(resolve => {
140
157
  const fnHandler = () => {
@@ -146,7 +163,31 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
146
163
  });
147
164
  }
148
165
  const binding = table.getRowBinding();
149
- const bindingHeaderContext = binding?.getHeaderContext();
166
+ if (!binding) {
167
+ return undefined;
168
+ }
169
+ return binding;
170
+ }
171
+
172
+ /**
173
+ * Gets the table defaults by validating and retrieving the binding, then fetching data from the DefaultValueFunction.
174
+ * @param table The table being processed
175
+ * @returns A promise that resolves to an object containing the default values, or undefined if no binding is available or the DefaultValueFunction returns no data
176
+ */;
177
+ _proto.getTableDefaults = async function getTableDefaults(table) {
178
+ const binding = await this._validateAndRetrieveBinding(table);
179
+ if (!binding) return undefined;
180
+ const appComponent = CommonUtils.getAppComponent(CommonUtils.getTargetView(table));
181
+ return appComponent ? TransactionHelper.getDataFromDefaultValueFunction(binding, appComponent) : undefined;
182
+ };
183
+ _proto.setUpEmptyRows = async function setUpEmptyRows(table) {
184
+ let createButtonWasPressed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
185
+ let tableDefaultData = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
186
+ const binding = await this._validateAndRetrieveBinding(table);
187
+ if (!binding) {
188
+ return;
189
+ }
190
+ const bindingHeaderContext = binding.getHeaderContext();
150
191
  if (binding && binding.isResolved() && binding.isLengthFinal() && bindingHeaderContext) {
151
192
  const contextPath = bindingHeaderContext.getPath();
152
193
  if (!this.emptyRowsEnabled) {
@@ -165,7 +206,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
165
206
  });
166
207
  if (!inactiveContext) {
167
208
  this.removeEmptyRowsMessages();
168
- await this.createEmptyRows(binding, table);
209
+ await this.createEmptyRows(binding, table, false, undefined, false, tableDefaultData);
169
210
  }
170
211
  }
171
212
  }
@@ -258,12 +299,14 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
258
299
  * @param recreateOneRow `true` if the call is to recreate an emptyLine
259
300
  * @param newInlineCreationRowFromPaste Number of new inactive rows to be created
260
301
  * @param forceCreateatEnd `true` if the new row is to be created at the end of the table
302
+ * @param defaultValueFunctionData Default values retrieved from the DefaultValuesFunction to be applied to the new rows
261
303
  * @returns A promise that resolves to the created contexts or void if the creation failed
262
304
  */;
263
305
  _proto.createEmptyRows = async function createEmptyRows(binding, table) {
264
306
  let recreateOneRow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
265
307
  let newInlineCreationRowFromPaste = arguments.length > 3 ? arguments[3] : undefined;
266
308
  let forceCreateatEnd = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
309
+ let defaultValueFunctionData = arguments.length > 5 ? arguments[5] : undefined;
267
310
  const inlineCreationRowCount = newInlineCreationRowFromPaste ?? (this.getTableDefinition().control?.inlineCreationRowCount || 1);
268
311
  if (this.creatingEmptyRows || this.getInactiveContextNumber(binding) > inlineCreationRowCount) {
269
312
  return;
@@ -284,7 +327,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
284
327
  // during a live change, only 1 new document is created
285
328
  dataForCreate,
286
329
  // When editing an empty row, the new empty row is to be created just below and not above
287
- recreateOneRow || forceCreateatEnd ? true : atEnd, false, controller.editFlow.onBeforeCreate, inactive);
330
+ recreateOneRow || forceCreateatEnd ? true : atEnd, false, controller.editFlow.onBeforeCreate, inactive, undefined, defaultValueFunctionData);
288
331
  appComponent.getSideEffectsService().requestSideEffectsForNavigationProperty(binding.getPath(), view.getBindingContext());
289
332
  contexts?.forEach(async function (context) {
290
333
  try {
@@ -307,4 +350,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
307
350
  _exports = EmptyRowsHandler;
308
351
  return _exports;
309
352
  }, false);
310
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFbXB0eVJvd3NIYW5kbGVyIiwiX2V4cG9ydHMiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJzZXR1cE1peGluIiwiX2Jhc2VDbGFzcyIsIl9vbkZpZWxkTGl2ZUNoYW5nZSIsInVpNUV2ZW50IiwiZmllbGQiLCJnZXRTb3VyY2UiLCJiaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwiYmluZGluZyIsImdldEJpbmRpbmciLCJpc0luYWN0aXZlIiwidGFibGUiLCJnZXRDb250ZW50IiwiY3JlYXRlRW1wdHlSb3dzIiwiX2hhbmRsZUNyZWF0ZUFjdGl2YXRlIiwiYWN0aXZhdGVFdmVudCIsImFjdGl2YXRlZENvbnRleHQiLCJnZXRQYXJhbWV0ZXIiLCJ2YWxpZGF0ZUVtcHR5Um93IiwicHJldmVudERlZmF1bHQiLCJ0cmFuc2llbnRQYXRoIiwiZ2V0UGF0aCIsInZpZXciLCJDb21tb25VdGlscyIsImdldFRhcmdldFZpZXciLCJjb250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsImVkaXRGbG93IiwiY3JlYXRlZCIsIlByb21pc2UiLCJyZXNvbHZlIiwib25BZnRlckNyZWF0ZSIsImNvbnRleHQiLCJlIiwiTG9nIiwid2FybmluZyIsImNvbnRlbnQiLCJjb2xsYWJvcmF0aXZlRHJhZnQiLCJzZW5kIiwiYWN0aW9uIiwiQWN0aXZpdHkiLCJDcmVhdGUiLCJ1cGRhdGVMb2Nrc0ZvckNvbnRleHRQYXRoIiwiZXJyb3IiLCJnZXREZWZhdWx0VmFsdWVzRnVuY3Rpb24iLCJsaXN0QmluZGluZyIsIm1vZGVsIiwiZ2V0TW9kZWwiLCJtZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJtZXRhQ29udGV4dCIsImdldE1ldGFDb250ZXh0IiwiZ2V0UmVzb2x2ZWRQYXRoIiwibGlzdEJpbmRpbmdPYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiZGVmYXVsdEZ1bmNPblRhcmdldE9iamVjdCIsInRhcmdldE9iamVjdCIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiRGVmYXVsdFZhbHVlc0Z1bmN0aW9uIiwiZGVmYXVsdEZ1bmNPblRhcmdldEVudGl0eVNldCIsInRhcmdldEVudGl0eVNldCIsInNldEVtcHR5Um93c0VuYWJsZWQiLCJlbmFibGVtZW50Iiwic2V0UHJvcGVydHkiLCJuYXZpZ2F0aW9uUGF0aCIsImRhdGEiLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRSb3dCaW5kaW5nIiwiZGVmYXVsdFZhbHVlc0Z1bmN0aW9uIiwidW5kZWZpbmVkIiwiZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlIiwicmVnaXN0ZXJUYXJnZXRDYWxsYmFjayIsInVwZGF0ZUVtcHR5Um93cyIsImJpbmQiLCJkZXJlZ2lzdGVyVGFyZ2V0Q2FsbGJhY2siLCJzZXRVcEVtcHR5Um93cyIsImJpbmRpbmdIZWFkZXJDb250ZXh0IiwiZ2V0SGVhZGVyQ29udGV4dCIsImlzUmVzb2x2ZWQiLCJpc0xlbmd0aEZpbmFsIiwiY29udGV4dFBhdGgiLCJfZGVsZXRlRW1wdHlSb3dzIiwiY3JlYXRlQnV0dG9uV2FzUHJlc3NlZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImdldFRhYmxlRGVmaW5pdGlvbiIsImNvbnRyb2wiLCJjcmVhdGlvbk1vZGUiLCJDcmVhdGlvbk1vZGUiLCJJbmxpbmVDcmVhdGlvblJvd3MiLCJ1aU1vZGVsIiwiZ2V0UHJvcGVydHkiLCJ3YXRjaEJpbmRpbmciLCJiaW5kUHJvcGVydHkiLCJmbkhhbmRsZXIiLCJkZXRhY2hDaGFuZ2UiLCJkZXN0cm95IiwiYXR0YWNoQ2hhbmdlIiwiZW1wdHlSb3dzRW5hYmxlZCIsInJlbW92ZUVtcHR5Um93c01lc3NhZ2VzIiwiZ2V0SXNFZGl0YWJsZSIsImlubGluZUNyZWF0aW9uUm93c0hpZGRlbkluRWRpdE1vZGUiLCJpbmFjdGl2ZUNvbnRleHQiLCJnZXRBbGxDdXJyZW50Q29udGV4dHMiLCJmaW5kIiwic3RhcnRzV2l0aCIsImRlbGV0ZSIsImdldEluYWN0aXZlQ29udGV4dE51bWJlciIsImZpbHRlciIsInJlcXVpcmVkUHJvcGVydGllcyIsImFubm90YXRpb24iLCJtaXNzaW5nUHJvcGVydGllcyIsInJlcXVpcmVkUHJvcGVydHkiLCJnZXRPYmplY3QiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYnJhcnkiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsIm1lc3NhZ2VzIiwiZGlzcGxheWVkQ29sdW1uIiwibWlzc2luZ1Byb3BlcnR5IiwiZXJyb3JNZXNzYWdlIiwibWlzc2luZ0NvbHVtbiIsImNvbHVtbnMiLCJ0YWJsZUNvbHVtbiIsInJlbGF0aXZlUGF0aCIsInByb3BlcnR5SW5mb3MiLCJpbmNsdWRlcyIsImdldFRleHQiLCJnZXRDb2x1bW5zIiwibWRjQ29sdW1uIiwiZ2V0UHJvcGVydHlLZXkiLCJuYW1lIiwiZ2V0SGVhZGVyIiwibGFiZWwiLCJwdXNoIiwiTWVzc2FnZSIsIm1lc3NhZ2UiLCJwcm9jZXNzb3IiLCJ0eXBlIiwiTWVzc2FnZVR5cGUiLCJFcnJvciIsInRlY2huaWNhbCIsInBlcnNpc3RlbnQiLCJ0ZWNobmljYWxEZXRhaWxzIiwidGFibGVJZCIsImdldElkIiwiZW1wdHlSb3dNZXNzYWdlIiwidGFyZ2V0IiwiTWVzc2FnaW5nIiwiYWRkTWVzc2FnZXMiLCJpbmFjdGl2ZUNvbnRleHRzIiwicmVtb3ZlTWVzc2FnZXMiLCJnZXRNZXNzYWdlTW9kZWwiLCJnZXREYXRhIiwibXNnIiwiZ2V0VGVjaG5pY2FsRGV0YWlscyIsImNvbnRleHRNYXRjaGVzIiwiQXJyYXkiLCJpc0FycmF5Iiwic29tZSIsImdldFRhcmdldHMiLCJ2YWx1ZSIsInJlY3JlYXRlT25lUm93IiwibmV3SW5saW5lQ3JlYXRpb25Sb3dGcm9tUGFzdGUiLCJmb3JjZUNyZWF0ZWF0RW5kIiwiaW5saW5lQ3JlYXRpb25Sb3dDb3VudCIsImNyZWF0aW5nRW1wdHlSb3dzIiwiZnJvbSIsImF0RW5kIiwiaW5hY3RpdmUiLCJkYXRhRm9yQ3JlYXRlIiwiY29udGV4dHMiLCJjcmVhdGVNdWx0aXBsZURvY3VtZW50cyIsIm9uQmVmb3JlQ3JlYXRlIiwicmVxdWVzdFNpZGVFZmZlY3RzRm9yTmF2aWdhdGlvblByb3BlcnR5IiwiZm9yRWFjaCIsImNhbmNlbGVkIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJFbXB0eVJvd3NIYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5U2V0LCBOYXZpZ2F0aW9uUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgRGVmYXVsdFZhbHVlc0Z1bmN0aW9uIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tb25cIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHsgdHlwZSBJSW50ZXJmYWNlV2l0aE1peGluIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHsgQWN0aXZpdHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvY29sbGFib3JhdGlvbi9Db2xsYWJvcmF0aW9uQ29tbW9uXCI7XG5pbXBvcnQgeyBDcmVhdGlvbk1vZGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQW5ub3RhdGlvblRhYmxlQ29sdW1uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL3RhYmxlL0NvbHVtbnNcIjtcbmltcG9ydCB0eXBlIFVJNUV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IE1lc3NhZ2luZyBmcm9tIFwic2FwL3VpL2NvcmUvTWVzc2FnaW5nXCI7XG5pbXBvcnQgTWVzc2FnZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlXCI7XG5pbXBvcnQgTWVzc2FnZVR5cGUgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVR5cGVcIjtcbmltcG9ydCB0eXBlIE1EQ1RhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBNRENDb2x1bW4gZnJvbSBcInNhcC91aS9tZGMvdGFibGUvQ29sdW1uXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgQ29udGV4dEVycm9yVHlwZSB9IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCB7IHR5cGUgSVRhYmxlQmxvY2sgfSBmcm9tIFwiLi4vVGFibGVBUElcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW1wdHlSb3dzSGFuZGxlciBpbXBsZW1lbnRzIElJbnRlcmZhY2VXaXRoTWl4aW4ge1xuXHRjcmVhdGluZ0VtcHR5Um93cz86IGJvb2xlYW47XG5cblx0c2V0dXBNaXhpbihfYmFzZUNsYXNzOiBGdW5jdGlvbik6IHZvaWQge1xuXHRcdC8vIFRoaXMgbWV0aG9kIGlzIG5lZWRlZCB0byBpbXBsZW1lbnQgaW50ZXJmYWNlIElJbnRlcmZhY2VXaXRoTWl4aW5cblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25GaWVsZExpdmVDaGFuZ2UgZXZlbnQuXG5cdCAqIEBwYXJhbSB1aTVFdmVudCBUaGUgZXZlbnQgb2JqZWN0IHBhc3NlZCBieSB0aGUgb25GaWVsZExpdmVDaGFuZ2UgZXZlbnRcblx0ICovXG5cdF9vbkZpZWxkTGl2ZUNoYW5nZSh0aGlzOiBJVGFibGVCbG9jayAmIEVtcHR5Um93c0hhbmRsZXIsIHVpNUV2ZW50OiBVSTVFdmVudDx7fSwgQ29udHJvbD4pOiB2b2lkIHtcblx0XHRjb25zdCBmaWVsZCA9IHVpNUV2ZW50LmdldFNvdXJjZSgpLFxuXHRcdFx0YmluZGluZ0NvbnRleHQgPSBmaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQsXG5cdFx0XHRiaW5kaW5nID0gYmluZGluZ0NvbnRleHQuZ2V0QmluZGluZygpO1xuXHRcdC8vIGNyZWF0aW9uIG9mIGEgbmV3IGluYWN0aXZlIHJvdyBpZiByZWxldmFudFxuXHRcdGlmIChiaW5kaW5nQ29udGV4dC5pc0luYWN0aXZlKCkpIHtcblx0XHRcdGNvbnN0IHRhYmxlID0gdGhpcz8uZ2V0Q29udGVudCgpO1xuXHRcdFx0dGhpcz8uY3JlYXRlRW1wdHlSb3dzKGJpbmRpbmcgYXMgT0RhdGFMaXN0QmluZGluZywgdGFibGUsIHRydWUpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBDcmVhdGVBY3RpdmF0ZSBldmVudCBmcm9tIHRoZSBPRGF0YUxpc3RCaW5kaW5nLlxuXHQgKiBAcGFyYW0gYWN0aXZhdGVFdmVudCBUaGUgZXZlbnQgc2VudCBieSB0aGUgYmluZGluZ1xuXHQgKi9cblx0YXN5bmMgX2hhbmRsZUNyZWF0ZUFjdGl2YXRlKFxuXHRcdHRoaXM6IElUYWJsZUJsb2NrICYgRW1wdHlSb3dzSGFuZGxlcixcblx0XHRhY3RpdmF0ZUV2ZW50OiBVSTVFdmVudDx7IGNvbnRleHQ6IENvbnRleHQgfSwgT0RhdGFMaXN0QmluZGluZz5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgYWN0aXZhdGVkQ29udGV4dCA9IGFjdGl2YXRlRXZlbnQuZ2V0UGFyYW1ldGVyKFwiY29udGV4dFwiKTtcblx0XHQvLyB3ZSBzdGFydCBieSBhc2tpbmcgdG8gcmVjcmVhdGUgYW4gZW1wdHkgcm93IChpZiBsaXZlIGNoYW5nZSBoYXMgYWxyZWFkeSBkb25lIGl0IHRoaXMgd29uJ3QgaGF2ZSBhbnkgZWZmZWN0KVxuXHRcdC8vIGJ1dCB3ZSBkbyBub3Qgd2FpdFxuXHRcdHRoaXMuY3JlYXRlRW1wdHlSb3dzKGFjdGl2YXRlRXZlbnQuZ2V0U291cmNlKCksIHRoaXMuZ2V0Q29udGVudCgpLCB0cnVlKTtcblx0XHRpZiAoIXRoaXMudmFsaWRhdGVFbXB0eVJvdyhhY3RpdmF0ZWRDb250ZXh0KSkge1xuXHRcdFx0YWN0aXZhdGVFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgdHJhbnNpZW50UGF0aCA9IGFjdGl2YXRlZENvbnRleHQuZ2V0UGF0aCgpLFxuXHRcdFx0XHR2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzKSxcblx0XHRcdFx0Y29udHJvbGxlciA9IHZpZXcuZ2V0Q29udHJvbGxlcigpLFxuXHRcdFx0XHRlZGl0RmxvdyA9IGNvbnRyb2xsZXIuZWRpdEZsb3c7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRhd2FpdCAoYWN0aXZhdGVkQ29udGV4dC5jcmVhdGVkKCkgPz8gUHJvbWlzZS5yZXNvbHZlKCkpO1xuXHRcdFx0XHRhd2FpdCBlZGl0Rmxvdy5vbkFmdGVyQ3JlYXRlKHsgY29udGV4dDogYWN0aXZhdGVkQ29udGV4dCB9KTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0TG9nLndhcm5pbmcoYEZhaWxlZCB0byBhY3RpdmF0ZSBjb250ZXh0ICR7YWN0aXZhdGVkQ29udGV4dC5nZXRQYXRoKCl9YCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNvbnRlbnQgPSBhY3RpdmF0ZWRDb250ZXh0LmdldFBhdGgoKTtcblx0XHRcdGNvbnN0IGNvbGxhYm9yYXRpdmVEcmFmdCA9IHZpZXcuZ2V0Q29udHJvbGxlcigpLmNvbGxhYm9yYXRpdmVEcmFmdDtcblx0XHRcdC8vIFNlbmQgbm90aWZpY2F0aW9uIHRvIG90aGVyIHVzZXJzIG9ubHkgYWZ0ZXIgdGhlIGNyZWF0aW9uIGhhcyBiZWVuIGZpbmFsaXplZFxuXHRcdFx0Y29sbGFib3JhdGl2ZURyYWZ0LnNlbmQoeyBhY3Rpb246IEFjdGl2aXR5LkNyZWF0ZSwgY29udGVudCB9KTtcblx0XHRcdC8vIFNpbmNlIHRoZSBwYXRoIG9mIHRoZSBjb250ZXh0IGhhcyBjaGFuZ2VkIGR1cmluZyBhY3RpdmF0aW9uLCB3ZSBuZWVkIHRvIHVwZGF0ZSBhbGwgY29sbGFib3JhdGlvbiBsb2Nrc1xuXHRcdFx0Ly8gdGhhdCB3ZXJlIHVzaW5nIHRoZSB0cmFuc2llbnQgcGF0aFxuXHRcdFx0Y29sbGFib3JhdGl2ZURyYWZ0LnVwZGF0ZUxvY2tzRm9yQ29udGV4dFBhdGgodHJhbnNpZW50UGF0aCwgYWN0aXZhdGVkQ29udGV4dC5nZXRQYXRoKCkpO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJGYWlsZWQgdG8gYWN0aXZhdGUgbmV3IHJvdyAtXCIsIGVycm9yIGFzIEVycm9yKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBkZWZhdWx0IHZhbHVlcyBmcm9tIHRoZSBEZWZhdWx0VmFsdWVzIGZ1bmN0aW9uLlxuXHQgKiBAcGFyYW0gbGlzdEJpbmRpbmcgVGhlIGN1cnJlbnQgbGlzdCBiaW5kaW5nXG5cdCAqIEByZXR1cm5zIFRoZSBEZWZhdWx0VmFsdWVzIGZ1bmN0aW9uIChvciB1bmRlZmluZWQgaWYgbm8gZnVuY3Rpb24gaXMgZm91bmQpXG5cdCAqL1xuXHRnZXREZWZhdWx0VmFsdWVzRnVuY3Rpb24obGlzdEJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcpOiBEZWZhdWx0VmFsdWVzRnVuY3Rpb24gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1vZGVsID0gbGlzdEJpbmRpbmcuZ2V0TW9kZWwoKTtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSBtb2RlbC5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBtZXRhQ29udGV4dCA9IG1ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChsaXN0QmluZGluZy5nZXRSZXNvbHZlZFBhdGgoKSBhcyBzdHJpbmcpO1xuXHRcdGNvbnN0IGxpc3RCaW5kaW5nT2JqZWN0UGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhtZXRhQ29udGV4dCk7XG5cblx0XHRjb25zdCBkZWZhdWx0RnVuY09uVGFyZ2V0T2JqZWN0ID0gKGxpc3RCaW5kaW5nT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgYXMgTmF2aWdhdGlvblByb3BlcnR5IHwgRW50aXR5U2V0KS5hbm5vdGF0aW9ucy5Db21tb25cblx0XHRcdD8uRGVmYXVsdFZhbHVlc0Z1bmN0aW9uO1xuXHRcdGNvbnN0IGRlZmF1bHRGdW5jT25UYXJnZXRFbnRpdHlTZXQgPSAobGlzdEJpbmRpbmdPYmplY3RQYXRoLnRhcmdldEVudGl0eVNldCBhcyBFbnRpdHlTZXQgfCB1bmRlZmluZWQpPy5hbm5vdGF0aW9ucy5Db21tb25cblx0XHRcdD8uRGVmYXVsdFZhbHVlc0Z1bmN0aW9uO1xuXG5cdFx0cmV0dXJuIGRlZmF1bHRGdW5jT25UYXJnZXRPYmplY3QgPz8gZGVmYXVsdEZ1bmNPblRhcmdldEVudGl0eVNldDtcblx0fVxuXG5cdC8qKlxuXHQgKiBFbXB0eVJvd3NFbmFibGVkIHNldHRlci5cblx0ICogQHBhcmFtIGVuYWJsZW1lbnRcblx0ICovXG5cdHNldEVtcHR5Um93c0VuYWJsZWQodGhpczogSVRhYmxlQmxvY2sgJiBFbXB0eVJvd3NIYW5kbGVyLCBlbmFibGVtZW50OiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcImVtcHR5Um93c0VuYWJsZWRcIiwgZW5hYmxlbWVudCk7XG5cdFx0Y29uc3QgbmF2aWdhdGlvblBhdGggPSB0aGlzLmdldENvbnRlbnQoKS5kYXRhKCkubmF2aWdhdGlvblBhdGgsXG5cdFx0XHRhcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5nZXRDb250ZW50KCkpO1xuXHRcdGlmIChlbmFibGVtZW50KSB7XG5cdFx0XHRjb25zdCBsaXN0QmluZGluZyA9IHRoaXMuZ2V0Q29udGVudCgpLmdldFJvd0JpbmRpbmcoKTtcblx0XHRcdGNvbnN0IGRlZmF1bHRWYWx1ZXNGdW5jdGlvbiA9IGxpc3RCaW5kaW5nPy5nZXRSZXNvbHZlZFBhdGgoKSA/IHRoaXMuZ2V0RGVmYXVsdFZhbHVlc0Z1bmN0aW9uKGxpc3RCaW5kaW5nKSA6IHVuZGVmaW5lZDtcblx0XHRcdGlmIChkZWZhdWx0VmFsdWVzRnVuY3Rpb24pIHtcblx0XHRcdFx0YXBwQ29tcG9uZW50LmdldFNpZGVFZmZlY3RzU2VydmljZSgpLnJlZ2lzdGVyVGFyZ2V0Q2FsbGJhY2sobmF2aWdhdGlvblBhdGgsIHRoaXMudXBkYXRlRW1wdHlSb3dzLmJpbmQodGhpcykpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRhcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCkuZGVyZWdpc3RlclRhcmdldENhbGxiYWNrKG5hdmlnYXRpb25QYXRoKTtcblx0XHR9XG5cdFx0dGhpcy5zZXRVcEVtcHR5Um93cyh0aGlzLmdldENvbnRlbnQoKSk7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlIGFuZCByZWNyZWF0ZSB0aGUgZW1wdHkgcm93cyBpbiBvcmRlciB0byBnZXQgYW55IHVwZGF0ZWQgZGVmYXVsdCB2YWx1ZXMuXG5cdCAqXG5cdCAqL1xuXHRhc3luYyB1cGRhdGVFbXB0eVJvd3ModGhpczogSVRhYmxlQmxvY2sgJiBFbXB0eVJvd3NIYW5kbGVyKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgdGFibGUgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRjb25zdCBiaW5kaW5nID0gdGFibGUuZ2V0Um93QmluZGluZygpO1xuXHRcdGNvbnN0IGJpbmRpbmdIZWFkZXJDb250ZXh0ID0gYmluZGluZy5nZXRIZWFkZXJDb250ZXh0KCk7XG5cdFx0aWYgKGJpbmRpbmcgJiYgYmluZGluZy5pc1Jlc29sdmVkKCkgJiYgYmluZGluZy5pc0xlbmd0aEZpbmFsKCkgJiYgYmluZGluZ0hlYWRlckNvbnRleHQpIHtcblx0XHRcdGNvbnN0IGNvbnRleHRQYXRoID0gYmluZGluZ0hlYWRlckNvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdFx0dGhpcy5fZGVsZXRlRW1wdHlSb3dzKGJpbmRpbmcsIGNvbnRleHRQYXRoKTtcblx0XHRcdGF3YWl0IHRoaXMuY3JlYXRlRW1wdHlSb3dzKGJpbmRpbmcsIHRhYmxlKTtcblx0XHR9XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0YXN5bmMgc2V0VXBFbXB0eVJvd3ModGhpczogSVRhYmxlQmxvY2sgJiBFbXB0eVJvd3NIYW5kbGVyLCB0YWJsZTogTURDVGFibGUsIGNyZWF0ZUJ1dHRvbldhc1ByZXNzZWQgPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICh0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpLmNvbnRyb2w/LmNyZWF0aW9uTW9kZSAhPT0gQ3JlYXRpb25Nb2RlLklubGluZUNyZWF0aW9uUm93cykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IHVpTW9kZWwgPSB0YWJsZS5nZXRNb2RlbChcInVpXCIpIGFzIEpTT05Nb2RlbCB8IHVuZGVmaW5lZDtcblx0XHRpZiAoIXVpTW9kZWwpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKHVpTW9kZWwuZ2V0UHJvcGVydHkoXCIvaXNFZGl0YWJsZVBlbmRpbmdcIikpIHtcblx0XHRcdC8vIFRoZSBlZGl0IG1vZGUgaXMgc3RpbGwgYmVpbmcgY29tcHV0ZWQsIHNvIHdlIHdhaXQgdW50aWwgdGhpcyBjb21wdXRhdGlvbiBpcyBkb25lIGJlZm9yZSBjaGVja2luZyBpdHMgdmFsdWVcblx0XHRcdGNvbnN0IHdhdGNoQmluZGluZyA9IHVpTW9kZWwuYmluZFByb3BlcnR5KFwiL2lzRWRpdGFibGVQZW5kaW5nXCIpO1xuXHRcdFx0YXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcblx0XHRcdFx0Y29uc3QgZm5IYW5kbGVyID0gKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdHdhdGNoQmluZGluZy5kZXRhY2hDaGFuZ2UoZm5IYW5kbGVyKTtcblx0XHRcdFx0XHR3YXRjaEJpbmRpbmcuZGVzdHJveSgpO1xuXHRcdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdFx0fTtcblx0XHRcdFx0d2F0Y2hCaW5kaW5nLmF0dGFjaENoYW5nZShmbkhhbmRsZXIpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGNvbnN0IGJpbmRpbmcgPSB0YWJsZS5nZXRSb3dCaW5kaW5nKCkgYXMgT0RhdGFMaXN0QmluZGluZyB8IHVuZGVmaW5lZDtcblx0XHRjb25zdCBiaW5kaW5nSGVhZGVyQ29udGV4dCA9IGJpbmRpbmc/LmdldEhlYWRlckNvbnRleHQoKTtcblx0XHRpZiAoYmluZGluZyAmJiBiaW5kaW5nLmlzUmVzb2x2ZWQoKSAmJiBiaW5kaW5nLmlzTGVuZ3RoRmluYWwoKSAmJiBiaW5kaW5nSGVhZGVyQ29udGV4dCkge1xuXHRcdFx0Y29uc3QgY29udGV4dFBhdGggPSBiaW5kaW5nSGVhZGVyQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0XHRpZiAoIXRoaXMuZW1wdHlSb3dzRW5hYmxlZCkge1xuXHRcdFx0XHR0aGlzLnJlbW92ZUVtcHR5Um93c01lc3NhZ2VzKCk7XG5cdFx0XHRcdHJldHVybiB0aGlzLl9kZWxldGVFbXB0eVJvd3MoYmluZGluZywgY29udGV4dFBhdGgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFDb21tb25VdGlscy5nZXRJc0VkaXRhYmxlKHRhYmxlKSkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoXG5cdFx0XHRcdHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCkuY29udHJvbD8uaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZSAmJlxuXHRcdFx0XHQhdGFibGUuZ2V0QmluZGluZ0NvbnRleHQoXCJwYWdlSW50ZXJuYWxcIik/LmdldFByb3BlcnR5KFwiY3JlYXRlTW9kZVwiKSAmJlxuXHRcdFx0XHQhY3JlYXRlQnV0dG9uV2FzUHJlc3NlZFxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGluYWN0aXZlQ29udGV4dCA9IGJpbmRpbmcuZ2V0QWxsQ3VycmVudENvbnRleHRzKCkuZmluZChmdW5jdGlvbiAoY29udGV4dCkge1xuXHRcdFx0XHQvLyB3aGVuIHRoaXMgaXMgY2FsbGVkIGZyb20gY29udHJvbGxlciBjb2RlIHdlIG5lZWQgdG8gY2hlY2sgdGhhdCBpbmFjdGl2ZSBjb250ZXh0cyBhcmUgc3RpbGwgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgdGFibGUgY29udGV4dFxuXHRcdFx0XHRyZXR1cm4gY29udGV4dC5pc0luYWN0aXZlKCkgJiYgY29udGV4dC5nZXRQYXRoKCkuc3RhcnRzV2l0aChjb250ZXh0UGF0aCk7XG5cdFx0XHR9KTtcblx0XHRcdGlmICghaW5hY3RpdmVDb250ZXh0KSB7XG5cdFx0XHRcdHRoaXMucmVtb3ZlRW1wdHlSb3dzTWVzc2FnZXMoKTtcblx0XHRcdFx0YXdhaXQgdGhpcy5jcmVhdGVFbXB0eVJvd3MoYmluZGluZywgdGFibGUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBEZWxldGVzIGluYWN0aXZlIHJvd3MgZnJvbSB0aGUgdGFibGUgbGlzdEJpbmRpbmcuXG5cdCAqIEBwYXJhbSBiaW5kaW5nXG5cdCAqIEBwYXJhbSBjb250ZXh0UGF0aFxuXHQgKi9cblx0X2RlbGV0ZUVtcHR5Um93cyhiaW5kaW5nOiBPRGF0YUxpc3RCaW5kaW5nLCBjb250ZXh0UGF0aDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Zm9yIChjb25zdCBjb250ZXh0IG9mIGJpbmRpbmcuZ2V0QWxsQ3VycmVudENvbnRleHRzKCkpIHtcblx0XHRcdGlmIChjb250ZXh0LmlzSW5hY3RpdmUoKSAmJiBjb250ZXh0LmdldFBhdGgoKS5zdGFydHNXaXRoKGNvbnRleHRQYXRoKSkge1xuXHRcdFx0XHRjb250ZXh0LmRlbGV0ZSgpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiBpbmFjdGl2ZSBjb250ZXh0cyB3aXRoaW4gdGhlIGxpc3QgYmluZGluZy5cblx0ICogQHBhcmFtIGJpbmRpbmcgRGF0YSBsaXN0IGJpbmRpbmdcblx0ICogQHJldHVybnMgVGhlIG51bWJlciBvZiBpbmFjdGl2ZSBjb250ZXh0c1xuXHQgKi9cblx0Z2V0SW5hY3RpdmVDb250ZXh0TnVtYmVyKGJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcpOiBudW1iZXIge1xuXHRcdHJldHVybiBiaW5kaW5nLmdldEFsbEN1cnJlbnRDb250ZXh0cygpLmZpbHRlcigoY29udGV4dCkgPT4gY29udGV4dC5pc0luYWN0aXZlKCkpLmxlbmd0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSB2YWxpZGF0aW9uIG9mIHRoZSBlbXB0eSByb3cuXG5cdCAqIEBwYXJhbSBjb250ZXh0IFRoZSBjb250ZXh0IG9mIHRoZSBlbXB0eSByb3dcblx0ICogQHJldHVybnMgVGhlIHZhbGlkYXRpb24gc3RhdHVzXG5cdCAqL1xuXHR2YWxpZGF0ZUVtcHR5Um93KHRoaXM6IElUYWJsZUJsb2NrICYgRW1wdHlSb3dzSGFuZGxlciwgY29udGV4dDogQ29udGV4dCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHJlcXVpcmVkUHJvcGVydGllcyA9IHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCkuYW5ub3RhdGlvbi5yZXF1aXJlZFByb3BlcnRpZXM7XG5cdFx0aWYgKHJlcXVpcmVkUHJvcGVydGllcz8ubGVuZ3RoKSB7XG5cdFx0XHR0aGlzLnJlbW92ZUVtcHR5Um93c01lc3NhZ2VzKGNvbnRleHQpO1xuXHRcdFx0Y29uc3QgbWlzc2luZ1Byb3BlcnRpZXMgPSByZXF1aXJlZFByb3BlcnRpZXMuZmlsdGVyKChyZXF1aXJlZFByb3BlcnR5KSA9PiAhY29udGV4dC5nZXRPYmplY3QocmVxdWlyZWRQcm9wZXJ0eSkpO1xuXHRcdFx0aWYgKG1pc3NpbmdQcm9wZXJ0aWVzLmxlbmd0aCkge1xuXHRcdFx0XHRjb25zdCByZXNvdXJjZUJ1bmRsZSA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpITtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZXM6IE1lc3NhZ2VbXSA9IFtdO1xuXHRcdFx0XHRsZXQgZGlzcGxheWVkQ29sdW1uOiBNRENDb2x1bW4gfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGZvciAoY29uc3QgbWlzc2luZ1Byb3BlcnR5IG9mIG1pc3NpbmdQcm9wZXJ0aWVzKSB7XG5cdFx0XHRcdFx0bGV0IGVycm9yTWVzc2FnZTogc3RyaW5nO1xuXHRcdFx0XHRcdGNvbnN0IG1pc3NpbmdDb2x1bW4gPSB0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpLmNvbHVtbnMuZmluZChcblx0XHRcdFx0XHRcdCh0YWJsZUNvbHVtbikgPT5cblx0XHRcdFx0XHRcdFx0KHRhYmxlQ29sdW1uIGFzIEFubm90YXRpb25UYWJsZUNvbHVtbikucmVsYXRpdmVQYXRoID09PSBtaXNzaW5nUHJvcGVydHkgfHxcblx0XHRcdFx0XHRcdFx0KHRhYmxlQ29sdW1uLnByb3BlcnR5SW5mb3MgJiYgdGFibGVDb2x1bW4ucHJvcGVydHlJbmZvcy5pbmNsdWRlcyhtaXNzaW5nUHJvcGVydHkpKVxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRpZiAoIW1pc3NpbmdDb2x1bW4pIHtcblx0XHRcdFx0XHRcdGVycm9yTWVzc2FnZSA9IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX1RBQkxFX0VNUFRZUk9XX01BTkRBVE9SWVwiLCBbbWlzc2luZ1Byb3BlcnR5XSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGRpc3BsYXllZENvbHVtbiA9IHRoaXMuZ2V0Q29udGVudCgpXG5cdFx0XHRcdFx0XHRcdC5nZXRDb2x1bW5zKClcblx0XHRcdFx0XHRcdFx0LmZpbmQoKG1kY0NvbHVtbikgPT4gbWRjQ29sdW1uLmdldFByb3BlcnR5S2V5KCkgPT09IG1pc3NpbmdDb2x1bW4ubmFtZSk7XG5cdFx0XHRcdFx0XHRlcnJvck1lc3NhZ2UgPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5ZWRDb2x1bW4gPyBcIk1fVEFCTEVfRU1QVFlST1dfTUFOREFUT1JZXCIgOiBcIk1fVEFCTEVfRU1QVFlST1dfTUFOREFUT1JZX0hJRERFTlwiLFxuXHRcdFx0XHRcdFx0XHRbZGlzcGxheWVkQ29sdW1uPy5nZXRIZWFkZXIoKSB8fCBtaXNzaW5nQ29sdW1uLmxhYmVsXVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRtZXNzYWdlcy5wdXNoKFxuXHRcdFx0XHRcdFx0bmV3IE1lc3NhZ2Uoe1xuXHRcdFx0XHRcdFx0XHRtZXNzYWdlOiBlcnJvck1lc3NhZ2UsXG5cdFx0XHRcdFx0XHRcdHByb2Nlc3NvcjogdGhpcy5nZXRNb2RlbCgpLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiBNZXNzYWdlVHlwZS5FcnJvcixcblx0XHRcdFx0XHRcdFx0dGVjaG5pY2FsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0cGVyc2lzdGVudDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0dGVjaG5pY2FsRGV0YWlsczoge1xuXHRcdFx0XHRcdFx0XHRcdHRhYmxlSWQ6IHRoaXMuZ2V0Q29udGVudCgpLmdldElkKCksIC8vIE5lZWQgdG8gZG8gaXQgc2luY2UgaGFuZGxlQ3JlYXRlQWN0aXZhdGUgY2FuIGJlIHRyaWdnZXJlZCBtdWx0aXBsZSB0aW1lcyAoZXh0cmEgcHJvcGVydGllcyBzZXQgYnkgdmFsdWUgaGVscCkgYmVmb3JlIGNvbnRyb2xJZHMgYXJlIHNldCBvbiB0aGUgbWVzc2FnZVxuXHRcdFx0XHRcdFx0XHRcdGVtcHR5Um93TWVzc2FnZTogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRtaXNzaW5nQ29sdW1uOiBkaXNwbGF5ZWRDb2x1bW4gPyB1bmRlZmluZWQgOiBtaXNzaW5nUHJvcGVydHkgLy8gbmVlZGVkIHRvIGNoYW5nZSB0aGUgbWVzc2FnZVN0cmlwIG1lc3NhZ2Vcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0dGFyZ2V0OiBgJHtjb250ZXh0Py5nZXRQYXRoKCl9LyR7bWlzc2luZ1Byb3BlcnR5fWBcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRNZXNzYWdpbmcuYWRkTWVzc2FnZXMobWVzc2FnZXMpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgdGhlIG1lc3NhZ2VzIHJlbGF0ZWQgdG8gdGhlIGVtcHR5IHJvd3MuXG5cdCAqIEBwYXJhbSBpbmFjdGl2ZUNvbnRleHRzIFRoZSBjb250ZXh0cyBvZiB0aGUgZW1wdHkgcm93cywgaWYgbm90IHByb3ZpZGVkLCB0aGUgbWVzc2FnZXMgb2YgYWxsIGVtcHR5IHJvd3MgYXJlIHJlbW92ZWRcblx0ICovXG5cdHJlbW92ZUVtcHR5Um93c01lc3NhZ2VzKHRoaXM6IElUYWJsZUJsb2NrICYgRW1wdHlSb3dzSGFuZGxlciwgaW5hY3RpdmVDb250ZXh0cz86IENvbnRleHQgfCBDb250ZXh0W10pOiB2b2lkIHtcblx0XHRNZXNzYWdpbmcucmVtb3ZlTWVzc2FnZXMoXG5cdFx0XHQoTWVzc2FnaW5nLmdldE1lc3NhZ2VNb2RlbCgpLmdldERhdGEoKSBhcyBNZXNzYWdlW10pLmZpbHRlcigobXNnKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHRlY2huaWNhbERldGFpbHMgPSAobXNnLmdldFRlY2huaWNhbERldGFpbHMoKSB8fCB7fSkgYXMgeyB0YWJsZUlkPzogc3RyaW5nOyBlbXB0eVJvd01lc3NhZ2U/OiBib29sZWFuIH07XG5cblx0XHRcdFx0Ly8gQ2hlY2sgaWYgbXNnIHRhcmdldCBzdGFydHMgd2l0aCBhbnkgcGF0aCBpbiB0aGUgaW5hY3RpdmVDb250ZXh0IGFycmF5XG5cdFx0XHRcdGNvbnN0IGNvbnRleHRNYXRjaGVzID0gQXJyYXkuaXNBcnJheShpbmFjdGl2ZUNvbnRleHRzKVxuXHRcdFx0XHRcdD8gaW5hY3RpdmVDb250ZXh0cy5zb21lKChjb250ZXh0KSA9PiBtc2cuZ2V0VGFyZ2V0cygpLnNvbWUoKHZhbHVlKSA9PiB2YWx1ZS5zdGFydHNXaXRoKGNvbnRleHQuZ2V0UGF0aCgpKSkpXG5cdFx0XHRcdFx0OiAhaW5hY3RpdmVDb250ZXh0cyB8fCBtc2cuZ2V0VGFyZ2V0cygpLnNvbWUoKHZhbHVlKSA9PiB2YWx1ZS5zdGFydHNXaXRoKGluYWN0aXZlQ29udGV4dHMuZ2V0UGF0aCgpKSk7XG5cblx0XHRcdFx0cmV0dXJuIGNvbnRleHRNYXRjaGVzICYmIHRlY2huaWNhbERldGFpbHMuZW1wdHlSb3dNZXNzYWdlICYmIHRlY2huaWNhbERldGFpbHMudGFibGVJZCA9PT0gdGhpcy5nZXRDb250ZW50KCkuZ2V0SWQoKTtcblx0XHRcdH0pXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGlvbiBvZiBpbmFjdGl2ZSByb3dzIGZvciB0aGUgdGFibGUgaW4gY3JlYXRpb24gbW9kZSBcIklubGluZUNyZWF0aW9uUm93c1wiLlxuXHQgKiBAcGFyYW0gYmluZGluZyBEYXRhIGxpc3QgYmluZGluZ1xuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIGJlaW5nIGVkaXRlZFxuXHQgKiBAcGFyYW0gcmVjcmVhdGVPbmVSb3cgYHRydWVgIGlmIHRoZSBjYWxsIGlzIHRvIHJlY3JlYXRlIGFuIGVtcHR5TGluZVxuXHQgKiBAcGFyYW0gbmV3SW5saW5lQ3JlYXRpb25Sb3dGcm9tUGFzdGUgTnVtYmVyIG9mIG5ldyBpbmFjdGl2ZSByb3dzIHRvIGJlIGNyZWF0ZWRcblx0ICogQHBhcmFtIGZvcmNlQ3JlYXRlYXRFbmQgYHRydWVgIGlmIHRoZSBuZXcgcm93IGlzIHRvIGJlIGNyZWF0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgdGFibGVcblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGNyZWF0ZWQgY29udGV4dHMgb3Igdm9pZCBpZiB0aGUgY3JlYXRpb24gZmFpbGVkXG5cdCAqL1xuXHRhc3luYyBjcmVhdGVFbXB0eVJvd3MoXG5cdFx0dGhpczogSVRhYmxlQmxvY2sgJiBFbXB0eVJvd3NIYW5kbGVyLFxuXHRcdGJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcsXG5cdFx0dGFibGU6IE1EQ1RhYmxlLFxuXHRcdHJlY3JlYXRlT25lUm93ID0gZmFsc2UsXG5cdFx0bmV3SW5saW5lQ3JlYXRpb25Sb3dGcm9tUGFzdGU/OiBudW1iZXIsXG5cdFx0Zm9yY2VDcmVhdGVhdEVuZCA9IGZhbHNlXG5cdCk6IFByb21pc2U8dm9pZCB8IENvbnRleHRbXT4ge1xuXHRcdGNvbnN0IGlubGluZUNyZWF0aW9uUm93Q291bnQgPSBuZXdJbmxpbmVDcmVhdGlvblJvd0Zyb21QYXN0ZSA/PyAodGhpcy5nZXRUYWJsZURlZmluaXRpb24oKS5jb250cm9sPy5pbmxpbmVDcmVhdGlvblJvd0NvdW50IHx8IDEpO1xuXHRcdGlmICh0aGlzLmNyZWF0aW5nRW1wdHlSb3dzIHx8IHRoaXMuZ2V0SW5hY3RpdmVDb250ZXh0TnVtYmVyKGJpbmRpbmcpID4gaW5saW5lQ3JlYXRpb25Sb3dDb3VudCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBkYXRhID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogaW5saW5lQ3JlYXRpb25Sb3dDb3VudCB9LCAoKSA9PiAoe30pKSxcblx0XHRcdGF0RW5kID0gdGFibGUuZGF0YShcInRhYmxlVHlwZVwiKSAhPT0gXCJSZXNwb25zaXZlVGFibGVcIixcblx0XHRcdGluYWN0aXZlID0gdHJ1ZSxcblx0XHRcdHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRhYmxlKSxcblx0XHRcdGNvbnRyb2xsZXIgPSB2aWV3LmdldENvbnRyb2xsZXIoKSxcblx0XHRcdGVkaXRGbG93ID0gY29udHJvbGxlci5lZGl0Rmxvdyxcblx0XHRcdGFwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0YWJsZSk7XG5cblx0XHR0aGlzLmNyZWF0aW5nRW1wdHlSb3dzID0gdHJ1ZTtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgZGF0YUZvckNyZWF0ZSA9IHJlY3JlYXRlT25lUm93ID8gW3t9XSA6IGRhdGE7XG5cdFx0XHRjb25zdCBjb250ZXh0cyA9IGF3YWl0IGVkaXRGbG93LmNyZWF0ZU11bHRpcGxlRG9jdW1lbnRzKFxuXHRcdFx0XHRiaW5kaW5nLFxuXHRcdFx0XHQvLyBkdXJpbmcgYSBsaXZlIGNoYW5nZSwgb25seSAxIG5ldyBkb2N1bWVudCBpcyBjcmVhdGVkXG5cdFx0XHRcdGRhdGFGb3JDcmVhdGUsXG5cdFx0XHRcdC8vIFdoZW4gZWRpdGluZyBhbiBlbXB0eSByb3csIHRoZSBuZXcgZW1wdHkgcm93IGlzIHRvIGJlIGNyZWF0ZWQganVzdCBiZWxvdyBhbmQgbm90IGFib3ZlXG5cdFx0XHRcdHJlY3JlYXRlT25lUm93IHx8IGZvcmNlQ3JlYXRlYXRFbmQgPyB0cnVlIDogYXRFbmQsXG5cdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRjb250cm9sbGVyLmVkaXRGbG93Lm9uQmVmb3JlQ3JlYXRlLFxuXHRcdFx0XHRpbmFjdGl2ZVxuXHRcdFx0KTtcblx0XHRcdGFwcENvbXBvbmVudC5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKS5yZXF1ZXN0U2lkZUVmZmVjdHNGb3JOYXZpZ2F0aW9uUHJvcGVydHkoYmluZGluZy5nZXRQYXRoKCksIHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSk7XG5cdFx0XHRjb250ZXh0cz8uZm9yRWFjaChhc3luYyBmdW5jdGlvbiAoY29udGV4dDogQ29udGV4dCkge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGF3YWl0IGNvbnRleHQuY3JlYXRlZCgpO1xuXHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRcdGlmICghKGVycm9yIGFzIENvbnRleHRFcnJvclR5cGUpLmNhbmNlbGVkKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBlcnJvcjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIGNvbnRleHRzO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdExvZy5lcnJvcihlIGFzIHN0cmluZyk7XG5cdFx0fSBmaW5hbGx5IHtcblx0XHRcdHRoaXMuY3JlYXRpbmdFbXB0eVJvd3MgPSBmYWxzZTtcblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7TUF1QnFCQSxnQkFBZ0I7SUFBQSxTQUFBQSxpQkFBQTtJQUFBQyxRQUFBLEdBQUFELGdCQUFBO0lBQUEsSUFBQUUsTUFBQSxHQUFBRixnQkFBQSxDQUFBRyxTQUFBO0lBQUFELE1BQUEsQ0FHcENFLFVBQVUsR0FBVixTQUFBQSxVQUFVQSxDQUFDQyxVQUFvQixFQUFRO01BQ3RDO0lBQUE7O0lBR0Q7QUFDRDtBQUNBO0FBQ0EsT0FIQztJQUFBSCxNQUFBLENBSUFJLGtCQUFrQixHQUFsQixTQUFBQSxrQkFBa0JBLENBQXVDQyxRQUErQixFQUFRO01BQy9GLE1BQU1DLEtBQUssR0FBR0QsUUFBUSxDQUFDRSxTQUFTLENBQUMsQ0FBQztRQUNqQ0MsY0FBYyxHQUFHRixLQUFLLENBQUNHLGlCQUFpQixDQUFDLENBQVk7UUFDckRDLE9BQU8sR0FBR0YsY0FBYyxDQUFDRyxVQUFVLENBQUMsQ0FBQztNQUN0QztNQUNBLElBQUlILGNBQWMsQ0FBQ0ksVUFBVSxDQUFDLENBQUMsRUFBRTtRQUNoQyxNQUFNQyxLQUFLLEdBQUcsSUFBSSxFQUFFQyxVQUFVLENB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
353
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFbXB0eVJvd3NIYW5kbGVyIiwiX2V4cG9ydHMiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJzZXR1cE1peGluIiwiX2Jhc2VDbGFzcyIsIl9vbkZpZWxkTGl2ZUNoYW5nZSIsInVpNUV2ZW50IiwiZmllbGQiLCJnZXRTb3VyY2UiLCJiaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwiYmluZGluZyIsImdldEJpbmRpbmciLCJpc0luYWN0aXZlIiwidGFibGUiLCJnZXRDb250ZW50IiwiY3JlYXRlRW1wdHlSb3dzIiwiX2hhbmRsZUNyZWF0ZUFjdGl2YXRlIiwiYWN0aXZhdGVFdmVudCIsImFjdGl2YXRlZENvbnRleHQiLCJnZXRQYXJhbWV0ZXIiLCJ2YWxpZGF0ZUVtcHR5Um93IiwicHJldmVudERlZmF1bHQiLCJ0cmFuc2llbnRQYXRoIiwiZ2V0UGF0aCIsInZpZXciLCJDb21tb25VdGlscyIsImdldFRhcmdldFZpZXciLCJjb250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsImVkaXRGbG93IiwiY3JlYXRlZCIsIlByb21pc2UiLCJyZXNvbHZlIiwib25BZnRlckNyZWF0ZSIsImNvbnRleHQiLCJlIiwiTG9nIiwid2FybmluZyIsImNvbnRlbnQiLCJjb2xsYWJvcmF0aXZlRHJhZnQiLCJzZW5kIiwiYWN0aW9uIiwiQWN0aXZpdHkiLCJDcmVhdGUiLCJ1cGRhdGVMb2Nrc0ZvckNvbnRleHRQYXRoIiwiZXJyb3IiLCJnZXREZWZhdWx0VmFsdWVzRnVuY3Rpb24iLCJsaXN0QmluZGluZyIsIm1vZGVsIiwiZ2V0TW9kZWwiLCJtZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJtZXRhQ29udGV4dCIsImdldE1ldGFDb250ZXh0IiwiZ2V0UmVzb2x2ZWRQYXRoIiwibGlzdEJpbmRpbmdPYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiZGVmYXVsdEZ1bmNPblRhcmdldE9iamVjdCIsInRhcmdldE9iamVjdCIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiRGVmYXVsdFZhbHVlc0Z1bmN0aW9uIiwiZGVmYXVsdEZ1bmNPblRhcmdldEVudGl0eVNldCIsInRhcmdldEVudGl0eVNldCIsInNldEVtcHR5Um93c0VuYWJsZWQiLCJlbmFibGVtZW50Iiwic2V0UHJvcGVydHkiLCJuYXZpZ2F0aW9uUGF0aCIsImRhdGEiLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRSb3dCaW5kaW5nIiwiZGVmYXVsdFZhbHVlc0Z1bmN0aW9uIiwidW5kZWZpbmVkIiwiZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlIiwicmVnaXN0ZXJUYXJnZXRDYWxsYmFjayIsInVwZGF0ZUVtcHR5Um93cyIsImJpbmQiLCJkZXJlZ2lzdGVyVGFyZ2V0Q2FsbGJhY2siLCJ0YWJsZURlZmF1bHRzUHJvbWlzZSIsInRoZW4iLCJ0YWJsZURlZmF1bHREYXRhIiwic2V0VXBFbXB0eVJvd3MiLCJjYXRjaCIsImJpbmRpbmdIZWFkZXJDb250ZXh0IiwiZ2V0SGVhZGVyQ29udGV4dCIsImlzUmVzb2x2ZWQiLCJpc0xlbmd0aEZpbmFsIiwiY29udGV4dFBhdGgiLCJfZGVsZXRlRW1wdHlSb3dzIiwiX3ZhbGlkYXRlQW5kUmV0cmlldmVCaW5kaW5nIiwiZ2V0VGFibGVEZWZpbml0aW9uIiwiY29udHJvbCIsImNyZWF0aW9uTW9kZSIsIkNyZWF0aW9uTW9kZSIsIklubGluZUNyZWF0aW9uUm93cyIsInVpTW9kZWwiLCJnZXRQcm9wZXJ0eSIsIndhdGNoQmluZGluZyIsImJpbmRQcm9wZXJ0eSIsImZuSGFuZGxlciIsImRldGFjaENoYW5nZSIsImRlc3Ryb3kiLCJhdHRhY2hDaGFuZ2UiLCJnZXRUYWJsZURlZmF1bHRzIiwiVHJhbnNhY3Rpb25IZWxwZXIiLCJnZXREYXRhRnJvbURlZmF1bHRWYWx1ZUZ1bmN0aW9uIiwiY3JlYXRlQnV0dG9uV2FzUHJlc3NlZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImVtcHR5Um93c0VuYWJsZWQiLCJyZW1vdmVFbXB0eVJvd3NNZXNzYWdlcyIsImdldElzRWRpdGFibGUiLCJpbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlIiwiaW5hY3RpdmVDb250ZXh0IiwiZ2V0QWxsQ3VycmVudENvbnRleHRzIiwiZmluZCIsInN0YXJ0c1dpdGgiLCJkZWxldGUiLCJnZXRJbmFjdGl2ZUNvbnRleHROdW1iZXIiLCJmaWx0ZXIiLCJyZXF1aXJlZFByb3BlcnRpZXMiLCJhbm5vdGF0aW9uIiwibWlzc2luZ1Byb3BlcnRpZXMiLCJyZXF1aXJlZFByb3BlcnR5IiwiZ2V0T2JqZWN0IiwicmVzb3VyY2VCdW5kbGUiLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJtZXNzYWdlcyIsImRpc3BsYXllZENvbHVtbiIsIm1pc3NpbmdQcm9wZXJ0eSIsImVycm9yTWVzc2FnZSIsIm1pc3NpbmdDb2x1bW4iLCJjb2x1bW5zIiwidGFibGVDb2x1bW4iLCJyZWxhdGl2ZVBhdGgiLCJwcm9wZXJ0eUluZm9zIiwiaW5jbHVkZXMiLCJnZXRUZXh0IiwiZ2V0Q29sdW1ucyIsIm1kY0NvbHVtbiIsImdldFByb3BlcnR5S2V5IiwibmFtZSIsImdldEhlYWRlciIsImxhYmVsIiwicHVzaCIsIk1lc3NhZ2UiLCJtZXNzYWdlIiwicHJvY2Vzc29yIiwidHlwZSIsIk1lc3NhZ2VUeXBlIiwiRXJyb3IiLCJ0ZWNobmljYWwiLCJwZXJzaXN0ZW50IiwidGVjaG5pY2FsRGV0YWlscyIsInRhYmxlSWQiLCJnZXRJZCIsImVtcHR5Um93TWVzc2FnZSIsInRhcmdldCIsIk1lc3NhZ2luZyIsImFkZE1lc3NhZ2VzIiwiaW5hY3RpdmVDb250ZXh0cyIsInJlbW92ZU1lc3NhZ2VzIiwiZ2V0TWVzc2FnZU1vZGVsIiwiZ2V0RGF0YSIsIm1zZyIsImdldFRlY2huaWNhbERldGFpbHMiLCJjb250ZXh0TWF0Y2hlcyIsIkFycmF5IiwiaXNBcnJheSIsInNvbWUiLCJnZXRUYXJnZXRzIiwidmFsdWUiLCJyZWNyZWF0ZU9uZVJvdyIsIm5ld0lubGluZUNyZWF0aW9uUm93RnJvbVBhc3RlIiwiZm9yY2VDcmVhdGVhdEVuZCIsImRlZmF1bHRWYWx1ZUZ1bmN0aW9uRGF0YSIsImlubGluZUNyZWF0aW9uUm93Q291bnQiLCJjcmVhdGluZ0VtcHR5Um93cyIsImZyb20iLCJhdEVuZCIsImluYWN0aXZlIiwiZGF0YUZvckNyZWF0ZSIsImNvbnRleHRzIiwiY3JlYXRlTXVsdGlwbGVEb2N1bWVudHMiLCJvbkJlZm9yZUNyZWF0ZSIsInJlcXVlc3RTaWRlRWZmZWN0c0Zvck5hdmlnYXRpb25Qcm9wZXJ0eSIsImZvckVhY2giLCJjYW5jZWxlZCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRW1wdHlSb3dzSGFuZGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudGl0eVNldCwgTmF2aWdhdGlvblByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IERlZmF1bHRWYWx1ZXNGdW5jdGlvbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbW9uXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IHR5cGUgSUludGVyZmFjZVdpdGhNaXhpbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB7IEFjdGl2aXR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IFRyYW5zYWN0aW9uSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9lZGl0Rmxvdy9UcmFuc2FjdGlvbkhlbHBlclwiO1xuaW1wb3J0IHsgQ3JlYXRpb25Nb2RlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IEFubm90YXRpb25UYWJsZUNvbHVtbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi90YWJsZS9Db2x1bW5zXCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCBNZXNzYWdpbmcgZnJvbSBcInNhcC91aS9jb3JlL01lc3NhZ2luZ1wiO1xuaW1wb3J0IE1lc3NhZ2UgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVwiO1xuaW1wb3J0IE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgdHlwZSBNRENUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IHR5cGUgTURDQ29sdW1uIGZyb20gXCJzYXAvdWkvbWRjL3RhYmxlL0NvbHVtblwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IENvbnRleHRFcnJvclR5cGUgfSBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgeyB0eXBlIElUYWJsZUJsb2NrIH0gZnJvbSBcIi4uL1RhYmxlQVBJXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVtcHR5Um93c0hhbmRsZXIgaW1wbGVtZW50cyBJSW50ZXJmYWNlV2l0aE1peGluIHtcblx0Y3JlYXRpbmdFbXB0eVJvd3M/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHRhYmxlJ3MgZGVmYXVsdCB2YWx1ZXMuXG5cdCAqL1xuXHRwdWJsaWMgdGFibGVEZWZhdWx0c1Byb21pc2U/OiBQcm9taXNlPG9iamVjdD47XG5cblx0c2V0dXBNaXhpbihfYmFzZUNsYXNzOiBGdW5jdGlvbik6IHZvaWQge1xuXHRcdC8vIFRoaXMgbWV0aG9kIGlzIG5lZWRlZCB0byBpbXBsZW1lbnQgaW50ZXJmYWNlIElJbnRlcmZhY2VXaXRoTWl4aW5cblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25GaWVsZExpdmVDaGFuZ2UgZXZlbnQuXG5cdCAqIEBwYXJhbSB1aTVFdmVudCBUaGUgZXZlbnQgb2JqZWN0IHBhc3NlZCBieSB0aGUgb25GaWVsZExpdmVDaGFuZ2UgZXZlbnRcblx0ICovXG5cdF9vbkZpZWxkTGl2ZUNoYW5nZSh0aGlzOiBJVGFibGVCbG9jayAmIEVtcHR5Um93c0hhbmRsZXIsIHVpNUV2ZW50OiBVSTVFdmVudDx7fSwgQ29udHJvbD4pOiB2b2lkIHtcblx0XHRjb25zdCBmaWVsZCA9IHVpNUV2ZW50LmdldFNvdXJjZSgpLFxuXHRcdFx0YmluZGluZ0NvbnRleHQgPSBmaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQsXG5cdFx0XHRiaW5kaW5nID0gYmluZGluZ0NvbnRleHQuZ2V0QmluZGluZygpO1xuXHRcdC8vIGNyZWF0aW9uIG9mIGEgbmV3IGluYWN0aXZlIHJvdyBpZiByZWxldmFudFxuXHRcdGlmIChiaW5kaW5nQ29udGV4dC5pc0luYWN0aXZlKCkpIHtcblx0XHRcdGNvbnN0IHRhYmxlID0gdGhpcz8uZ2V0Q29udGVudCgpO1xuXHRcdFx0dGhpcz8uY3JlYXRlRW1wdHlSb3dzKGJpbmRpbmcgYXMgT0RhdGFMaXN0QmluZGluZywgdGFibGUsIHRydWUpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBDcmVhdGVBY3RpdmF0ZSBldmVudCBmcm9tIHRoZSBPRGF0YUxpc3RCaW5kaW5nLlxuXHQgKiBAcGFyYW0gYWN0aXZhdGVFdmVudCBUaGUgZXZlbnQgc2VudCBieSB0aGUgYmluZGluZ1xuXHQgKi9cblx0YXN5bmMgX2hhbmRsZUNyZWF0ZUFjdGl2YXRlKFxuXHRcdHRoaXM6IElUYWJsZUJsb2NrICYgRW1wdHlSb3dzSGFuZGxlcixcblx0XHRhY3RpdmF0ZUV2ZW50OiBVSTVFdmVudDx7IGNvbnRleHQ6IENvbnRleHQgfSwgT0RhdGFMaXN0QmluZGluZz5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgYWN0aXZhdGVkQ29udGV4dCA9IGFjdGl2YXRlRXZlbnQuZ2V0UGFyYW1ldGVyKFwiY29udGV4dFwiKTtcblx0XHQvLyB3ZSBzdGFydCBieSBhc2tpbmcgdG8gcmVjcmVhdGUgYW4gZW1wdHkgcm93IChpZiBsaXZlIGNoYW5nZSBoYXMgYWxyZWFkeSBkb25lIGl0IHRoaXMgd29uJ3QgaGF2ZSBhbnkgZWZmZWN0KVxuXHRcdC8vIGJ1dCB3ZSBkbyBub3Qgd2FpdFxuXHRcdHRoaXMuY3JlYXRlRW1wdHlSb3dzKGFjdGl2YXRlRXZlbnQuZ2V0U291cmNlKCksIHRoaXMuZ2V0Q29udGVudCgpLCB0cnVlKTtcblx0XHRpZiAoIXRoaXMudmFsaWRhdGVFbXB0eVJvdyhhY3RpdmF0ZWRDb250ZXh0KSkge1xuXHRcdFx0YWN0aXZhdGVFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgdHJhbnNpZW50UGF0aCA9IGFjdGl2YXRlZENvbnRleHQuZ2V0UGF0aCgpLFxuXHRcdFx0XHR2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzKSxcblx0XHRcdFx0Y29udHJvbGxlciA9IHZpZXcuZ2V0Q29udHJvbGxlcigpLFxuXHRcdFx0XHRlZGl0RmxvdyA9IGNvbnRyb2xsZXIuZWRpdEZsb3c7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRhd2FpdCAoYWN0aXZhdGVkQ29udGV4dC5jcmVhdGVkKCkgPz8gUHJvbWlzZS5yZXNvbHZlKCkpO1xuXHRcdFx0XHRhd2FpdCBlZGl0Rmxvdy5vbkFmdGVyQ3JlYXRlKHsgY29udGV4dDogYWN0aXZhdGVkQ29udGV4dCB9KTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0TG9nLndhcm5pbmcoYEZhaWxlZCB0byBhY3RpdmF0ZSBjb250ZXh0ICR7YWN0aXZhdGVkQ29udGV4dC5nZXRQYXRoKCl9YCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNvbnRlbnQgPSBhY3RpdmF0ZWRDb250ZXh0LmdldFBhdGgoKTtcblx0XHRcdGNvbnN0IGNvbGxhYm9yYXRpdmVEcmFmdCA9IHZpZXcuZ2V0Q29udHJvbGxlcigpLmNvbGxhYm9yYXRpdmVEcmFmdDtcblx0XHRcdC8vIFNlbmQgbm90aWZpY2F0aW9uIHRvIG90aGVyIHVzZXJzIG9ubHkgYWZ0ZXIgdGhlIGNyZWF0aW9uIGhhcyBiZWVuIGZpbmFsaXplZFxuXHRcdFx0Y29sbGFib3JhdGl2ZURyYWZ0LnNlbmQoeyBhY3Rpb246IEFjdGl2aXR5LkNyZWF0ZSwgY29udGVudCB9KTtcblx0XHRcdC8vIFNpbmNlIHRoZSBwYXRoIG9mIHRoZSBjb250ZXh0IGhhcyBjaGFuZ2VkIGR1cmluZyBhY3RpdmF0aW9uLCB3ZSBuZWVkIHRvIHVwZGF0ZSBhbGwgY29sbGFib3JhdGlvbiBsb2Nrc1xuXHRcdFx0Ly8gdGhhdCB3ZXJlIHVzaW5nIHRoZSB0cmFuc2llbnQgcGF0aFxuXHRcdFx0Y29sbGFib3JhdGl2ZURyYWZ0LnVwZGF0ZUxvY2tzRm9yQ29udGV4dFBhdGgodHJhbnNpZW50UGF0aCwgYWN0aXZhdGVkQ29udGV4dC5nZXRQYXRoKCkpO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJGYWlsZWQgdG8gYWN0aXZhdGUgbmV3IHJvdyAtXCIsIGVycm9yIGFzIEVycm9yKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBkZWZhdWx0IHZhbHVlcyBmcm9tIHRoZSBEZWZhdWx0VmFsdWVzIGZ1bmN0aW9uLlxuXHQgKiBAcGFyYW0gbGlzdEJpbmRpbmcgVGhlIGN1cnJlbnQgbGlzdCBiaW5kaW5nXG5cdCAqIEByZXR1cm5zIFRoZSBEZWZhdWx0VmFsdWVzIGZ1bmN0aW9uIChvciB1bmRlZmluZWQgaWYgbm8gZnVuY3Rpb24gaXMgZm91bmQpXG5cdCAqL1xuXHRnZXREZWZhdWx0VmFsdWVzRnVuY3Rpb24obGlzdEJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcpOiBEZWZhdWx0VmFsdWVzRnVuY3Rpb24gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1vZGVsID0gbGlzdEJpbmRpbmcuZ2V0TW9kZWwoKTtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSBtb2RlbC5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBtZXRhQ29udGV4dCA9IG1ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChsaXN0QmluZGluZy5nZXRSZXNvbHZlZFBhdGgoKSBhcyBzdHJpbmcpO1xuXHRcdGNvbnN0IGxpc3RCaW5kaW5nT2JqZWN0UGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhtZXRhQ29udGV4dCk7XG5cblx0XHRjb25zdCBkZWZhdWx0RnVuY09uVGFyZ2V0T2JqZWN0ID0gKGxpc3RCaW5kaW5nT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgYXMgTmF2aWdhdGlvblByb3BlcnR5IHwgRW50aXR5U2V0KS5hbm5vdGF0aW9ucy5Db21tb25cblx0XHRcdD8uRGVmYXVsdFZhbHVlc0Z1bmN0aW9uO1xuXHRcdGNvbnN0IGRlZmF1bHRGdW5jT25UYXJnZXRFbnRpdHlTZXQgPSAobGlzdEJpbmRpbmdPYmplY3RQYXRoLnRhcmdldEVudGl0eVNldCBhcyBFbnRpdHlTZXQgfCB1bmRlZmluZWQpPy5hbm5vdGF0aW9ucy5Db21tb25cblx0XHRcdD8uRGVmYXVsdFZhbHVlc0Z1bmN0aW9uO1xuXG5cdFx0cmV0dXJuIGRlZmF1bHRGdW5jT25UYXJnZXRPYmplY3QgPz8gZGVmYXVsdEZ1bmNPblRhcmdldEVudGl0eVNldDtcblx0fVxuXG5cdC8qKlxuXHQgKiBFbXB0eVJvd3NFbmFibGVkIHNldHRlci5cblx0ICogQHBhcmFtIGVuYWJsZW1lbnRcblx0ICovXG5cdHNldEVtcHR5Um93c0VuYWJsZWQodGhpczogSVRhYmxlQmxvY2sgJiBFbXB0eVJvd3NIYW5kbGVyLCBlbmFibGVtZW50OiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcImVtcHR5Um93c0VuYWJsZWRcIiwgZW5hYmxlbWVudCk7XG5cdFx0Y29uc3QgbmF2aWdhdGlvblBhdGggPSB0aGlzLmdldENvbnRlbnQoKS5kYXRhKCkubmF2aWdhdGlvblBhdGgsXG5cdFx0XHRhcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5nZXRDb250ZW50KCkpO1xuXHRcdGlmIChlbmFibGVtZW50KSB7XG5cdFx0XHRjb25zdCBsaXN0QmluZGluZyA9IHRoaXMuZ2V0Q29udGVudCgpLmdldFJvd0JpbmRpbmcoKTtcblx0XHRcdGNvbnN0IGRlZmF1bHRWYWx1ZXNGdW5jdGlvbiA9IGxpc3RCaW5kaW5nPy5nZXRSZXNvbHZlZFBhdGgoKSA/IHRoaXMuZ2V0RGVmYXVsdFZhbHVlc0Z1bmN0aW9uKGxpc3RCaW5kaW5nKSA6IHVuZGVmaW5lZDtcblx0XHRcdGlmIChkZWZhdWx0VmFsdWVzRnVuY3Rpb24pIHtcblx0XHRcdFx0YXBwQ29tcG9uZW50LmdldFNpZGVFZmZlY3RzU2VydmljZSgpLnJlZ2lzdGVyVGFyZ2V0Q2FsbGJhY2sobmF2aWdhdGlvblBhdGgsIHRoaXMudXBkYXRlRW1wdHlSb3dzLmJpbmQodGhpcykpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRhcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCkuZGVyZWdpc3RlclRhcmdldENhbGxiYWNrKG5hdmlnYXRpb25QYXRoKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy50YWJsZURlZmF1bHRzUHJvbWlzZSkge1xuXHRcdFx0dGhpcy50YWJsZURlZmF1bHRzUHJvbWlzZVxuXHRcdFx0XHQudGhlbigodGFibGVEZWZhdWx0RGF0YSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuc2V0VXBFbXB0eVJvd3ModGhpcy5nZXRDb250ZW50KCksIGZhbHNlLCB0YWJsZURlZmF1bHREYXRhKTtcblx0XHRcdFx0XHRyZXR1cm4gdGFibGVEZWZhdWx0RGF0YTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKChlcnJvcikgPT4ge1xuXHRcdFx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoaWxlIHNldHRpbmcgdXAgZW1wdHkgcm93czpcIiwgZXJyb3IpO1xuXHRcdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXRVcEVtcHR5Um93cyh0aGlzLmdldENvbnRlbnQoKSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZSBhbmQgcmVjcmVhdGUgdGhlIGVtcHR5IHJvd3MgaW4gb3JkZXIgdG8gZ2V0IGFueSB1cGRhdGVkIGRlZmF1bHQgdmFsdWVzLlxuXHQgKlxuXHQgKi9cblx0YXN5bmMgdXBkYXRlRW1wdHlSb3dzKHRoaXM6IElUYWJsZUJsb2NrICYgRW1wdHlSb3dzSGFuZGxlcik6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0Y29uc3QgYmluZGluZyA9IHRhYmxlLmdldFJvd0JpbmRpbmcoKTtcblx0XHRjb25zdCBiaW5kaW5nSGVhZGVyQ29udGV4dCA9IGJpbmRpbmcuZ2V0SGVhZGVyQ29udGV4dCgpO1xuXHRcdGlmIChiaW5kaW5nICYmIGJpbmRpbmcuaXNSZXNvbHZlZCgpICYmIGJpbmRpbmcuaXNMZW5ndGhGaW5hbCgpICYmIGJpbmRpbmdIZWFkZXJDb250ZXh0KSB7XG5cdFx0XHRjb25zdCBjb250ZXh0UGF0aCA9IGJpbmRpbmdIZWFkZXJDb250ZXh0LmdldFBhdGgoKTtcblx0XHRcdHRoaXMuX2RlbGV0ZUVtcHR5Um93cyhiaW5kaW5nLCBjb250ZXh0UGF0aCk7XG5cdFx0XHRhd2FpdCB0aGlzLmNyZWF0ZUVtcHR5Um93cyhiaW5kaW5nLCB0YWJsZSk7XG5cdFx0fVxuXHRcdHJldHVybjtcblx0fVxuXG5cdC8qKlxuXHQgKiBIZWxwZXIgZnVuY3Rpb24gdG8gcGVyZm9ybSBjb21tb24gY2hlY2tzIGZvciB0YWJsZSBkZWZhdWx0cyBhbmQgZW1wdHkgcm93cyBzZXR1cC5cblx0ICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZSBiZWluZyBwcm9jZXNzZWRcblx0ICogQHJldHVybnMgVGhlIGJpbmRpbmcgb2JqZWN0IGlmIGNoZWNrcyBwYXNzLCBvciB1bmRlZmluZWQgaWYgY2hlY2tzIGZhaWxcblx0ICovXG5cdHByaXZhdGUgYXN5bmMgX3ZhbGlkYXRlQW5kUmV0cmlldmVCaW5kaW5nKFxuXHRcdHRoaXM6IElUYWJsZUJsb2NrICYgRW1wdHlSb3dzSGFuZGxlcixcblx0XHR0YWJsZTogTURDVGFibGVcblx0KTogUHJvbWlzZTxPRGF0YUxpc3RCaW5kaW5nIHwgdW5kZWZpbmVkPiB7XG5cdFx0aWYgKHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCkuY29udHJvbD8uY3JlYXRpb25Nb2RlICE9PSBDcmVhdGlvbk1vZGUuSW5saW5lQ3JlYXRpb25Sb3dzKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdGNvbnN0IHVpTW9kZWwgPSB0YWJsZS5nZXRNb2RlbChcInVpXCIpIGFzIEpTT05Nb2RlbCB8IHVuZGVmaW5lZDtcblx0XHRpZiAoIXVpTW9kZWwpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0aWYgKHVpTW9kZWwuZ2V0UHJvcGVydHkoXCIvaXNFZGl0YWJsZVBlbmRpbmdcIikpIHtcblx0XHRcdC8vIFdhaXQgdW50aWwgdGhlIGVkaXQgbW9kZSBjb21wdXRhdGlvbiBpcyBjb21wbGV0ZVxuXHRcdFx0Y29uc3Qgd2F0Y2hCaW5kaW5nID0gdWlNb2RlbC5iaW5kUHJvcGVydHkoXCIvaXNFZGl0YWJsZVBlbmRpbmdcIik7XG5cdFx0XHRhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuXHRcdFx0XHRjb25zdCBmbkhhbmRsZXIgPSAoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0d2F0Y2hCaW5kaW5nLmRldGFjaENoYW5nZShmbkhhbmRsZXIpO1xuXHRcdFx0XHRcdHdhdGNoQmluZGluZy5kZXN0cm95KCk7XG5cdFx0XHRcdFx0cmVzb2x2ZSgpO1xuXHRcdFx0XHR9O1xuXHRcdFx0XHR3YXRjaEJpbmRpbmcuYXR0YWNoQ2hhbmdlKGZuSGFuZGxlcik7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRjb25zdCBiaW5kaW5nID0gdGFibGUuZ2V0Um93QmluZGluZygpIGFzIE9EYXRhTGlzdEJpbmRpbmcgfCB1bmRlZmluZWQ7XG5cblx0XHRpZiAoIWJpbmRpbmcpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdHJldHVybiBiaW5kaW5nO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHRhYmxlIGRlZmF1bHRzIGJ5IHZhbGlkYXRpbmcgYW5kIHJldHJpZXZpbmcgdGhlIGJpbmRpbmcsIHRoZW4gZmV0Y2hpbmcgZGF0YSBmcm9tIHRoZSBEZWZhdWx0VmFsdWVGdW5jdGlvbi5cblx0ICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZSBiZWluZyBwcm9jZXNzZWRcblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGRlZmF1bHQgdmFsdWVzLCBvciB1bmRlZmluZWQgaWYgbm8gYmluZGluZyBpcyBhdmFpbGFibGUgb3IgdGhlIERlZmF1bHRWYWx1ZUZ1bmN0aW9uIHJldHVybnMgbm8gZGF0YVxuXHQgKi9cblx0YXN5bmMgZ2V0VGFibGVEZWZhdWx0cyh0aGlzOiBJVGFibGVCbG9jayAmIEVtcHR5Um93c0hhbmRsZXIsIHRhYmxlOiBNRENUYWJsZSk6IFByb21pc2U8b2JqZWN0IHwgdW5kZWZpbmVkPiB7XG5cdFx0Y29uc3QgYmluZGluZyA9IGF3YWl0IHRoaXMuX3ZhbGlkYXRlQW5kUmV0cmlldmVCaW5kaW5nKHRhYmxlKTtcblx0XHRpZiAoIWJpbmRpbmcpIHJldHVybiB1bmRlZmluZWQ7XG5cblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQoQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0YWJsZSkpO1xuXHRcdHJldHVybiBhcHBDb21wb25lbnQgPyBUcmFuc2FjdGlvbkhlbHBlci5nZXREYXRhRnJvbURlZmF1bHRWYWx1ZUZ1bmN0aW9uKGJpbmRpbmcsIGFwcENvbXBvbmVudCkgOiB1bmRlZmluZWQ7XG5cdH1cblxuXHRhc3luYyBzZXRVcEVtcHR5Um93cyhcblx0XHR0aGlzOiBJVGFibGVCbG9jayAmIEVtcHR5Um93c0hhbmRsZXIsXG5cdFx0dGFibGU6IE1EQ1RhYmxlLFxuXHRcdGNyZWF0ZUJ1dHRvbldhc1ByZXNzZWQgPSBmYWxzZSxcblx0XHR0YWJsZURlZmF1bHREYXRhID0ge31cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgYmluZGluZyA9IGF3YWl0IHRoaXMuX3ZhbGlkYXRlQW5kUmV0cmlldmVCaW5kaW5nKHRhYmxlKTtcblx0XHRpZiAoIWJpbmRpbmcpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgYmluZGluZ0hlYWRlckNvbnRleHQgPSBiaW5kaW5nLmdldEhlYWRlckNvbnRleHQoKTtcblx0XHRpZiAoYmluZGluZyAmJiBiaW5kaW5nLmlzUmVzb2x2ZWQoKSAmJiBiaW5kaW5nLmlzTGVuZ3RoRmluYWwoKSAmJiBiaW5kaW5nSGVhZGVyQ29udGV4dCkge1xuXHRcdFx0Y29uc3QgY29udGV4dFBhdGggPSBiaW5kaW5nSGVhZGVyQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0XHRpZiAoIXRoaXMuZW1wdHlSb3dzRW5hYmxlZCkge1xuXHRcdFx0XHR0aGlzLnJlbW92ZUVtcHR5Um93c01lc3NhZ2VzKCk7XG5cdFx0XHRcdHJldHVybiB0aGlzLl9kZWxldGVFbXB0eVJvd3MoYmluZGluZywgY29udGV4dFBhdGgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFDb21tb25VdGlscy5nZXRJc0VkaXRhYmxlKHRhYmxlKSkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoXG5cdFx0XHRcdHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCkuY29udHJvbD8uaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZSAmJlxuXHRcdFx0XHQhdGFibGUuZ2V0QmluZGluZ0NvbnRleHQoXCJwYWdlSW50ZXJuYWxcIik/LmdldFByb3BlcnR5KFwiY3JlYXRlTW9kZVwiKSAmJlxuXHRcdFx0XHQhY3JlYXRlQnV0dG9uV2FzUHJlc3NlZFxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGluYWN0aXZlQ29udGV4dCA9IGJpbmRpbmcuZ2V0QWxsQ3VycmVudENvbnRleHRzKCkuZmluZChmdW5jdGlvbiAoY29udGV4dCkge1xuXHRcdFx0XHQvLyB3aGVuIHRoaXMgaXMgY2FsbGVkIGZyb20gY29udHJvbGxlciBjb2RlIHdlIG5lZWQgdG8gY2hlY2sgdGhhdCBpbmFjdGl2ZSBjb250ZXh0cyBhcmUgc3RpbGwgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgdGFibGUgY29udGV4dFxuXHRcdFx0XHRyZXR1cm4gY29udGV4dC5pc0luYWN0aXZlKCkgJiYgY29udGV4dC5nZXRQYXRoKCkuc3RhcnRzV2l0aChjb250ZXh0UGF0aCk7XG5cdFx0XHR9KTtcblx0XHRcdGlmICghaW5hY3RpdmVDb250ZXh0KSB7XG5cdFx0XHRcdHRoaXMucmVtb3ZlRW1wdHlSb3dzTWVzc2FnZXMoKTtcblx0XHRcdFx0YXdhaXQgdGhpcy5jcmVhdGVFbXB0eVJvd3MoYmluZGluZywgdGFibGUsIGZhbHNlLCB1bmRlZmluZWQsIGZhbHNlLCB0YWJsZURlZmF1bHREYXRhKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRGVsZXRlcyBpbmFjdGl2ZSByb3dzIGZyb20gdGhlIHRhYmxlIGxpc3RCaW5kaW5nLlxuXHQgKiBAcGFyYW0gYmluZGluZ1xuXHQgKiBAcGFyYW0gY29udGV4dFBhdGhcblx0ICovXG5cdF9kZWxldGVFbXB0eVJvd3MoYmluZGluZzogT0RhdGFMaXN0QmluZGluZywgY29udGV4dFBhdGg6IHN0cmluZyk6IHZvaWQge1xuXHRcdGZvciAoY29uc3QgY29udGV4dCBvZiBiaW5kaW5nLmdldEFsbEN1cnJlbnRDb250ZXh0cygpKSB7XG5cdFx0XHRpZiAoY29udGV4dC5pc0luYWN0aXZlKCkgJiYgY29udGV4dC5nZXRQYXRoKCkuc3RhcnRzV2l0aChjb250ZXh0UGF0aCkpIHtcblx0XHRcdFx0Y29udGV4dC5kZWxldGUoKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY3VycmVudCBudW1iZXIgb2YgaW5hY3RpdmUgY29udGV4dHMgd2l0aGluIHRoZSBsaXN0IGJpbmRpbmcuXG5cdCAqIEBwYXJhbSBiaW5kaW5nIERhdGEgbGlzdCBiaW5kaW5nXG5cdCAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgaW5hY3RpdmUgY29udGV4dHNcblx0ICovXG5cdGdldEluYWN0aXZlQ29udGV4dE51bWJlcihiaW5kaW5nOiBPRGF0YUxpc3RCaW5kaW5nKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gYmluZGluZy5nZXRBbGxDdXJyZW50Q29udGV4dHMoKS5maWx0ZXIoKGNvbnRleHQpID0+IGNvbnRleHQuaXNJbmFjdGl2ZSgpKS5sZW5ndGg7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgdmFsaWRhdGlvbiBvZiB0aGUgZW1wdHkgcm93LlxuXHQgKiBAcGFyYW0gY29udGV4dCBUaGUgY29udGV4dCBvZiB0aGUgZW1wdHkgcm93XG5cdCAqIEByZXR1cm5zIFRoZSB2YWxpZGF0aW9uIHN0YXR1c1xuXHQgKi9cblx0dmFsaWRhdGVFbXB0eVJvdyh0aGlzOiBJVGFibGVCbG9jayAmIEVtcHR5Um93c0hhbmRsZXIsIGNvbnRleHQ6IENvbnRleHQpOiBib29sZWFuIHtcblx0XHRjb25zdCByZXF1aXJlZFByb3BlcnRpZXMgPSB0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpLmFubm90YXRpb24ucmVxdWlyZWRQcm9wZXJ0aWVzO1xuXHRcdGlmIChyZXF1aXJlZFByb3BlcnRpZXM/Lmxlbmd0aCkge1xuXHRcdFx0dGhpcy5yZW1vdmVFbXB0eVJvd3NNZXNzYWdlcyhjb250ZXh0KTtcblx0XHRcdGNvbnN0IG1pc3NpbmdQcm9wZXJ0aWVzID0gcmVxdWlyZWRQcm9wZXJ0aWVzLmZpbHRlcigocmVxdWlyZWRQcm9wZXJ0eSkgPT4gIWNvbnRleHQuZ2V0T2JqZWN0KHJlcXVpcmVkUHJvcGVydHkpKTtcblx0XHRcdGlmIChtaXNzaW5nUHJvcGVydGllcy5sZW5ndGgpIHtcblx0XHRcdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLm1hY3Jvc1wiKSE7XG5cdFx0XHRcdGNvbnN0IG1lc3NhZ2VzOiBNZXNzYWdlW10gPSBbXTtcblx0XHRcdFx0bGV0IGRpc3BsYXllZENvbHVtbjogTURDQ29sdW1uIHwgdW5kZWZpbmVkO1xuXHRcdFx0XHRmb3IgKGNvbnN0IG1pc3NpbmdQcm9wZXJ0eSBvZiBtaXNzaW5nUHJvcGVydGllcykge1xuXHRcdFx0XHRcdGxldCBlcnJvck1lc3NhZ2U6IHN0cmluZztcblx0XHRcdFx0XHRjb25zdCBtaXNzaW5nQ29sdW1uID0gdGhpcy5nZXRUYWJsZURlZmluaXRpb24oKS5jb2x1bW5zLmZpbmQoXG5cdFx0XHRcdFx0XHQodGFibGVDb2x1bW4pID0+XG5cdFx0XHRcdFx0XHRcdCh0YWJsZUNvbHVtbiBhcyBBbm5vdGF0aW9uVGFibGVDb2x1bW4pLnJlbGF0aXZlUGF0aCA9PT0gbWlzc2luZ1Byb3BlcnR5IHx8XG5cdFx0XHRcdFx0XHRcdCh0YWJsZUNvbHVtbi5wcm9wZXJ0eUluZm9zICYmIHRhYmxlQ29sdW1uLnByb3BlcnR5SW5mb3MuaW5jbHVkZXMobWlzc2luZ1Byb3BlcnR5KSlcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0aWYgKCFtaXNzaW5nQ29sdW1uKSB7XG5cdFx0XHRcdFx0XHRlcnJvck1lc3NhZ2UgPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9UQUJMRV9FTVBUWVJPV19NQU5EQVRPUllcIiwgW21pc3NpbmdQcm9wZXJ0eV0pO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRkaXNwbGF5ZWRDb2x1bW4gPSB0aGlzLmdldENvbnRlbnQoKVxuXHRcdFx0XHRcdFx0XHQuZ2V0Q29sdW1ucygpXG5cdFx0XHRcdFx0XHRcdC5maW5kKChtZGNDb2x1bW4pID0+IG1kY0NvbHVtbi5nZXRQcm9wZXJ0eUtleSgpID09PSBtaXNzaW5nQ29sdW1uLm5hbWUpO1xuXHRcdFx0XHRcdFx0ZXJyb3JNZXNzYWdlID0gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcblx0XHRcdFx0XHRcdFx0ZGlzcGxheWVkQ29sdW1uID8gXCJNX1RBQkxFX0VNUFRZUk9XX01BTkRBVE9SWVwiIDogXCJNX1RBQkxFX0VNUFRZUk9XX01BTkRBVE9SWV9ISURERU5cIixcblx0XHRcdFx0XHRcdFx0W2Rpc3BsYXllZENvbHVtbj8uZ2V0SGVhZGVyKCkgfHwgbWlzc2luZ0NvbHVtbi5sYWJlbF1cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0bWVzc2FnZXMucHVzaChcblx0XHRcdFx0XHRcdG5ldyBNZXNzYWdlKHtcblx0XHRcdFx0XHRcdFx0bWVzc2FnZTogZXJyb3JNZXNzYWdlLFxuXHRcdFx0XHRcdFx0XHRwcm9jZXNzb3I6IHRoaXMuZ2V0TW9kZWwoKSxcblx0XHRcdFx0XHRcdFx0dHlwZTogTWVzc2FnZVR5cGUuRXJyb3IsXG5cdFx0XHRcdFx0XHRcdHRlY2huaWNhbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdHBlcnNpc3RlbnQ6IHRydWUsXG5cdFx0XHRcdFx0XHRcdHRlY2huaWNhbERldGFpbHM6IHtcblx0XHRcdFx0XHRcdFx0XHR0YWJsZUlkOiB0aGlzLmdldENvbnRlbnQoKS5nZXRJZCgpLCAvLyBOZWVkIHRvIGRvIGl0IHNpbmNlIGhhbmRsZUNyZWF0ZUFjdGl2YXRlIGNhbiBiZSB0cmlnZ2VyZWQgbXVsdGlwbGUgdGltZXMgKGV4dHJhIHByb3BlcnRpZXMgc2V0IGJ5IHZhbHVlIGhlbHApIGJlZm9yZSBjb250cm9sSWRzIGFyZSBzZXQgb24gdGhlIG1lc3NhZ2Vcblx0XHRcdFx0XHRcdFx0XHRlbXB0eVJvd01lc3NhZ2U6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0bWlzc2luZ0NvbHVtbjogZGlzcGxheWVkQ29sdW1uID8gdW5kZWZpbmVkIDogbWlzc2luZ1Byb3BlcnR5IC8vIG5lZWRlZCB0byBjaGFuZ2UgdGhlIG1lc3NhZ2VTdHJpcCBtZXNzYWdlXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHRhcmdldDogYCR7Y29udGV4dD8uZ2V0UGF0aCgpfS8ke21pc3NpbmdQcm9wZXJ0eX1gXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0TWVzc2FnaW5nLmFkZE1lc3NhZ2VzKG1lc3NhZ2VzKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIHRoZSBtZXNzYWdlcyByZWxhdGVkIHRvIHRoZSBlbXB0eSByb3dzLlxuXHQgKiBAcGFyYW0gaW5hY3RpdmVDb250ZXh0cyBUaGUgY29udGV4dHMgb2YgdGhlIGVtcHR5IHJvd3MsIGlmIG5vdCBwcm92aWRlZCwgdGhlIG1lc3NhZ2VzIG9mIGFsbCBlbXB0eSByb3dzIGFyZSByZW1vdmVkXG5cdCAqL1xuXHRyZW1vdmVFbXB0eVJvd3NNZXNzYWdlcyh0aGlzOiBJVGFibGVCbG9jayAmIEVtcHR5Um93c0hhbmRsZXIsIGluYWN0aXZlQ29udGV4dHM/OiBDb250ZXh0IHwgQ29udGV4dFtdKTogdm9pZCB7XG5cdFx0TWVzc2FnaW5nLnJlbW92ZU1lc3NhZ2VzKFxuXHRcdFx0KE1lc3NhZ2luZy5nZXRNZXNzYWdlTW9kZWwoKS5nZXREYXRhKCkgYXMgTWVzc2FnZVtdKS5maWx0ZXIoKG1zZykgPT4ge1xuXHRcdFx0XHRjb25zdCB0ZWNobmljYWxEZXRhaWxzID0gKG1zZy5nZXRUZWNobmljYWxEZXRhaWxzKCkgfHwge30pIGFzIHsgdGFibGVJZD86IHN0cmluZzsgZW1wdHlSb3dNZXNzYWdlPzogYm9vbGVhbiB9O1xuXG5cdFx0XHRcdC8vIENoZWNrIGlmIG1zZyB0YXJnZXQgc3RhcnRzIHdpdGggYW55IHBhdGggaW4gdGhlIGluYWN0aXZlQ29udGV4dCBhcnJheVxuXHRcdFx0XHRjb25zdCBjb250ZXh0TWF0Y2hlcyA9IEFycmF5LmlzQXJyYXkoaW5hY3RpdmVDb250ZXh0cylcblx0XHRcdFx0XHQ/IGluYWN0aXZlQ29udGV4dHMuc29tZSgoY29udGV4dCkgPT4gbXNnLmdldFRhcmdldHMoKS5zb21lKCh2YWx1ZSkgPT4gdmFsdWUuc3RhcnRzV2l0aChjb250ZXh0LmdldFBhdGgoKSkpKVxuXHRcdFx0XHRcdDogIWluYWN0aXZlQ29udGV4dHMgfHwgbXNnLmdldFRhcmdldHMoKS5zb21lKCh2YWx1ZSkgPT4gdmFsdWUuc3RhcnRzV2l0aChpbmFjdGl2ZUNvbnRleHRzLmdldFBhdGgoKSkpO1xuXG5cdFx0XHRcdHJldHVybiBjb250ZXh0TWF0Y2hlcyAmJiB0ZWNobmljYWxEZXRhaWxzLmVtcHR5Um93TWVzc2FnZSAmJiB0ZWNobmljYWxEZXRhaWxzLnRhYmxlSWQgPT09IHRoaXMuZ2V0Q29udGVudCgpLmdldElkKCk7XG5cdFx0XHR9KVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRpb24gb2YgaW5hY3RpdmUgcm93cyBmb3IgdGhlIHRhYmxlIGluIGNyZWF0aW9uIG1vZGUgXCJJbmxpbmVDcmVhdGlvblJvd3NcIi5cblx0ICogQHBhcmFtIGJpbmRpbmcgRGF0YSBsaXN0IGJpbmRpbmdcblx0ICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZSBiZWluZyBlZGl0ZWRcblx0ICogQHBhcmFtIHJlY3JlYXRlT25lUm93IGB0cnVlYCBpZiB0aGUgY2FsbCBpcyB0byByZWNyZWF0ZSBhbiBlbXB0eUxpbmVcblx0ICogQHBhcmFtIG5ld0lubGluZUNyZWF0aW9uUm93RnJvbVBhc3RlIE51bWJlciBvZiBuZXcgaW5hY3RpdmUgcm93cyB0byBiZSBjcmVhdGVkXG5cdCAqIEBwYXJhbSBmb3JjZUNyZWF0ZWF0RW5kIGB0cnVlYCBpZiB0aGUgbmV3IHJvdyBpcyB0byBiZSBjcmVhdGVkIGF0IHRoZSBlbmQgb2YgdGhlIHRhYmxlXG5cdCAqIEBwYXJhbSBkZWZhdWx0VmFsdWVGdW5jdGlvbkRhdGEgRGVmYXVsdCB2YWx1ZXMgcmV0cmlldmVkIGZyb20gdGhlIERlZmF1bHRWYWx1ZXNGdW5jdGlvbiB0byBiZSBhcHBsaWVkIHRvIHRoZSBuZXcgcm93c1xuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgY3JlYXRlZCBjb250ZXh0cyBvciB2b2lkIGlmIHRoZSBjcmVhdGlvbiBmYWlsZWRcblx0ICovXG5cdGFzeW5jIGNyZWF0ZUVtcHR5Um93cyhcblx0XHR0aGlzOiBJVGFibGVCbG9jayAmIEVtcHR5Um93c0hhbmRsZXIsXG5cdFx0YmluZGluZzogT0RhdGFMaXN0QmluZGluZyxcblx0XHR0YWJsZTogTURDVGFibGUsXG5cdFx0cmVjcmVhdGVPbmVSb3cgPSBmYWxzZSxcblx0XHRuZXdJbmxpbmVDcmVhdGlvblJvd0Zyb21QYXN0ZT86IG51bWJlcixcblx0XHRmb3JjZUNyZWF0ZWF0RW5kID0gZmFsc2UsXG5cdFx0ZGVmYXVsdFZhbHVlRnVuY3Rpb25EYXRhPzogb2JqZWN0IHwgdW5kZWZpbmVkXG5cdCk6IFByb21pc2U8dm9pZCB8IENvbnRleHRbXT4ge1xuXHRcdGNvbnN0IGlubGluZUNyZWF0aW9uUm93Q291bnQgPSBuZXdJbmxpbmVDcmVhdGlvblJvd0Zyb21QYXN0ZSA/PyAodGhpcy5nZXRUYWJsZURlZmluaXRpb24oKS5jb250cm9sPy5pbmxpbmVDcmVhdGlvblJvd0NvdW50IHx8IDEpO1xuXHRcdGlmICh0aGlzLmNyZWF0aW5nRW1wdHlSb3dzIHx8IHRoaXMuZ2V0SW5hY3RpdmVDb250ZXh0TnVtYmVyKGJpbmRpbmcpID4gaW5saW5lQ3JlYXRpb25Sb3dDb3VudCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBkYXRhID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogaW5saW5lQ3JlYXRpb25Sb3dDb3VudCB9LCAoKSA9PiAoe30pKSxcblx0XHRcdGF0RW5kID0gdGFibGUuZGF0YShcInRhYmxlVHlwZVwiKSAhPT0gXCJSZXNwb25zaXZlVGFibGVcIixcblx0XHRcdGluYWN0aXZlID0gdHJ1ZSxcblx0XHRcdHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRhYmxlKSxcblx0XHRcdGNvbnRyb2xsZXIgPSB2aWV3LmdldENvbnRyb2xsZXIoKSxcblx0XHRcdGVkaXRGbG93ID0gY29udHJvbGxlci5lZGl0Rmxvdyxcblx0XHRcdGFwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0YWJsZSk7XG5cblx0XHR0aGlzLmNyZWF0aW5nRW1wdHlSb3dzID0gdHJ1ZTtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgZGF0YUZvckNyZWF0ZSA9IHJlY3JlYXRlT25lUm93ID8gW3t9XSA6IGRhdGE7XG5cdFx0XHRjb25zdCBjb250ZXh0cyA9IGF3YWl0IGVkaXRGbG93LmNyZWF0ZU11bHRpcGxlRG9jdW1lbnRzKFxuXHRcdFx0XHRiaW5kaW5nLFxuXHRcdFx0XHQvLyBkdXJpbmcgYSBsaXZlIGNoYW5nZSwgb25seSAxIG5ldyBkb2N1bWVudCBpcyBjcmVhdGVkXG5cdFx0XHRcdGRhdGFGb3JDcmVhdGUsXG5cdFx0XHRcdC8vIFdoZW4gZWRpdGluZyBhbiBlbXB0eSByb3csIHRoZSBuZXcgZW1wdHkgcm93IGlzIHRvIGJlIGNyZWF0ZWQganVzdCBiZWxvdyBhbmQgbm90IGFib3ZlXG5cdFx0XHRcdHJlY3JlYXRlT25lUm93IHx8IGZvcmNlQ3JlYXRlYXRFbmQgPyB0cnVlIDogYXRFbmQsXG5cdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRjb250cm9sbGVyLmVkaXRGbG93Lm9uQmVmb3JlQ3JlYXRlLFxuXHRcdFx0XHRpbmFjdGl2ZSxcblx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRkZWZhdWx0VmFsdWVGdW5jdGlvbkRhdGFcblx0XHRcdCk7XG5cdFx0XHRhcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCkucmVxdWVzdFNpZGVFZmZlY3RzRm9yTmF2aWdhdGlvblByb3BlcnR5KGJpbmRpbmcuZ2V0UGF0aCgpLCB2aWV3LmdldEJpbmRpbmdDb250ZXh0KCkpO1xuXHRcdFx0Y29udGV4dHM/LmZvckVhY2goYXN5bmMgZnVuY3Rpb24gKGNvbnRleHQ6IENvbnRleHQpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRhd2FpdCBjb250ZXh0LmNyZWF0ZWQoKTtcblx0XHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0XHRpZiAoIShlcnJvciBhcyBDb250ZXh0RXJyb3JUeXBlKS5jYW5jZWxlZCkge1xuXHRcdFx0XHRcdFx0dGhyb3cgZXJyb3I7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBjb250ZXh0cztcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRMb2cuZXJyb3IoZSBhcyBzdHJpbmcpO1xuXHRcdH0gZmluYWxseSB7XG5cdFx0XHR0aGlzLmNyZWF0aW5nRW1wdHlSb3dzID0gZmFsc2U7XG5cdFx0fVxuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O01Bd0JxQkEsZ0JBQWdCO0lBQUEsU0FBQUEsaUJBQUE7SUFBQUMsUUFBQSxHQUFBRCxnQkFBQTtJQUFBLElBQUFFLE1BQUEsR0FBQUYsZ0JBQUEsQ0FBQUcsU0FBQTtJQUdwQztBQUNEO0FBQ0E7SUFGQ0QsTUFBQSxDQUtBRSxVQUFVLEdBQVYsU0FBQUEsVUFBVUEsQ0FBQ0MsVUFBb0IsRUFBUTtNQUN0QztJQUFBOztJQUdEO0FBQ0Q7QUFDQTtBQUNBLE9BSEM7SUFBQUgsTUFBQSxDQUlBSSxrQkFBa0IsR0FBbEIsU0FBQUEsa0JBQWtCQSxDQUF1Q0MsUUFBK0IsRUFBUTtNQUMvRixNQUFNQyxLQUFLLEdBQUdELFFBQVEsQ0FBQ0UsU0FBUyxDQUFDLENBQUM7UUFDakNDLGNBQWMsR0FBR0YsS0FBSyxDQUFDRyxpQkFBaUIsQ0FBQyxDQUFZO1FBQ3JEQyxPQUFPLEdBQUdGLGNBQWMsQ0FBQ0csVUFBVSxDQUFDLENBQUM7TUFDdEM7TUFDQSxJQUFJSCxjQUFjLENBQUNJLFVBQVUsQ0FBQyxDQUFDLEVBQUU7UUFDaEMsTUFBTUMsS0FBSyxHQUFHLElBQUksRUFBRUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsSUFBSSxFQUFFQyxlQUFlLENBQUNMLE9BQU8sRUFBc0JHLEtBQUssRUFBRSxJQUFJLENBQUM7TUFDaEU7SUFDRDs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUFiLE1BQUEsQ0FJTWdCLHFCQUFxQixHQUEzQixlQUFNQSxxQkFBcUJBLENBRTFCQyxhQUErRCxFQUMvQztNQUNoQixNQUFNQyxnQkFBZ0IsR0FBR0QsYUFBYSxDQUFDRSxZQUFZLENBQUMsU0FBUyxDQUFDO01BQzlEO01BQ0E7TUFDQSxJQUFJLENBQUNKLGVBQWUsQ0FBQ0UsYUFBYSxD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
@@ -4,6 +4,7 @@ import Log from "sap/base/Log";
4
4
  import { type IInterfaceWithMixin } from "sap/fe/base/ClassSupport";
5
5
  import CommonUtils from "sap/fe/core/CommonUtils";
6
6
  import { Activity } from "sap/fe/core/controllerextensions/collaboration/CollaborationCommon";
7
+ import TransactionHelper from "sap/fe/core/controllerextensions/editFlow/TransactionHelper";
7
8
  import { CreationMode } from "sap/fe/core/converters/ManifestSettings";
8
9
  import { getInvolvedDataModelObjects } from "sap/fe/core/converters/MetaModelConverter";
9
10
  import type { AnnotationTableColumn } from "sap/fe/core/converters/controls/Common/table/Columns";
@@ -24,6 +25,11 @@ import { type ITableBlock } from "../TableAPI";
24
25
  export default class EmptyRowsHandler implements IInterfaceWithMixin {
25
26
  creatingEmptyRows?: boolean;
26
27
 
28
+ /**
29
+ * Promise that resolves to the table's default values.
30
+ */
31
+ public tableDefaultsPromise?: Promise<object>;
32
+
27
33
  setupMixin(_baseClass: Function): void {
28
34
  // This method is needed to implement interface IInterfaceWithMixin
29
35
  }
@@ -119,7 +125,19 @@ export default class EmptyRowsHandler implements IInterfaceWithMixin {
119
125
  } else {
120
126
  appComponent.getSideEffectsService().deregisterTargetCallback(navigationPath);
121
127
  }
122
- this.setUpEmptyRows(this.getContent());
128
+
129
+ if (this.tableDefaultsPromise) {
130
+ this.tableDefaultsPromise
131
+ .then((tableDefaultData) => {
132
+ this.setUpEmptyRows(this.getContent(), false, tableDefaultData);
133
+ return tableDefaultData;
134
+ })
135
+ .catch((error) => {
136
+ Log.error("Error while setting up empty rows:", error);
137
+ });
138
+ } else {
139
+ this.setUpEmptyRows(this.getContent());
140
+ }
123
141
  }
124
142
 
125
143
  /**
@@ -138,17 +156,26 @@ export default class EmptyRowsHandler implements IInterfaceWithMixin {
138
156
  return;
139
157
  }
140
158
 
141
- async setUpEmptyRows(this: ITableBlock & EmptyRowsHandler, table: MDCTable, createButtonWasPressed = false): Promise<void> {
159
+ /**
160
+ * Helper function to perform common checks for table defaults and empty rows setup.
161
+ * @param table The table being processed
162
+ * @returns The binding object if checks pass, or undefined if checks fail
163
+ */
164
+ private async _validateAndRetrieveBinding(
165
+ this: ITableBlock & EmptyRowsHandler,
166
+ table: MDCTable
167
+ ): Promise<ODataListBinding | undefined> {
142
168
  if (this.getTableDefinition().control?.creationMode !== CreationMode.InlineCreationRows) {
143
- return;
169
+ return undefined;
144
170
  }
145
171
 
146
172
  const uiModel = table.getModel("ui") as JSONModel | undefined;
147
173
  if (!uiModel) {
148
- return;
174
+ return undefined;
149
175
  }
176
+
150
177
  if (uiModel.getProperty("/isEditablePending")) {
151
- // The edit mode is still being computed, so we wait until this computation is done before checking its value
178
+ // Wait until the edit mode computation is complete
152
179
  const watchBinding = uiModel.bindProperty("/isEditablePending");
153
180
  await new Promise<void>((resolve) => {
154
181
  const fnHandler = (): void => {
@@ -159,8 +186,39 @@ export default class EmptyRowsHandler implements IInterfaceWithMixin {
159
186
  watchBinding.attachChange(fnHandler);
160
187
  });
161
188
  }
189
+
162
190
  const binding = table.getRowBinding() as ODataListBinding | undefined;
163
- const bindingHeaderContext = binding?.getHeaderContext();
191
+
192
+ if (!binding) {
193
+ return undefined;
194
+ }
195
+ return binding;
196
+ }
197
+
198
+ /**
199
+ * Gets the table defaults by validating and retrieving the binding, then fetching data from the DefaultValueFunction.
200
+ * @param table The table being processed
201
+ * @returns A promise that resolves to an object containing the default values, or undefined if no binding is available or the DefaultValueFunction returns no data
202
+ */
203
+ async getTableDefaults(this: ITableBlock & EmptyRowsHandler, table: MDCTable): Promise<object | undefined> {
204
+ const binding = await this._validateAndRetrieveBinding(table);
205
+ if (!binding) return undefined;
206
+
207
+ const appComponent = CommonUtils.getAppComponent(CommonUtils.getTargetView(table));
208
+ return appComponent ? TransactionHelper.getDataFromDefaultValueFunction(binding, appComponent) : undefined;
209
+ }
210
+
211
+ async setUpEmptyRows(
212
+ this: ITableBlock & EmptyRowsHandler,
213
+ table: MDCTable,
214
+ createButtonWasPressed = false,
215
+ tableDefaultData = {}
216
+ ): Promise<void> {
217
+ const binding = await this._validateAndRetrieveBinding(table);
218
+ if (!binding) {
219
+ return;
220
+ }
221
+ const bindingHeaderContext = binding.getHeaderContext();
164
222
  if (binding && binding.isResolved() && binding.isLengthFinal() && bindingHeaderContext) {
165
223
  const contextPath = bindingHeaderContext.getPath();
166
224
  if (!this.emptyRowsEnabled) {
@@ -183,7 +241,7 @@ export default class EmptyRowsHandler implements IInterfaceWithMixin {
183
241
  });
184
242
  if (!inactiveContext) {
185
243
  this.removeEmptyRowsMessages();
186
- await this.createEmptyRows(binding, table);
244
+ await this.createEmptyRows(binding, table, false, undefined, false, tableDefaultData);
187
245
  }
188
246
  }
189
247
  }
@@ -293,6 +351,7 @@ export default class EmptyRowsHandler implements IInterfaceWithMixin {
293
351
  * @param recreateOneRow `true` if the call is to recreate an emptyLine
294
352
  * @param newInlineCreationRowFromPaste Number of new inactive rows to be created
295
353
  * @param forceCreateatEnd `true` if the new row is to be created at the end of the table
354
+ * @param defaultValueFunctionData Default values retrieved from the DefaultValuesFunction to be applied to the new rows
296
355
  * @returns A promise that resolves to the created contexts or void if the creation failed
297
356
  */
298
357
  async createEmptyRows(
@@ -301,7 +360,8 @@ export default class EmptyRowsHandler implements IInterfaceWithMixin {
301
360
  table: MDCTable,
302
361
  recreateOneRow = false,
303
362
  newInlineCreationRowFromPaste?: number,
304
- forceCreateatEnd = false
363
+ forceCreateatEnd = false,
364
+ defaultValueFunctionData?: object | undefined
305
365
  ): Promise<void | Context[]> {
306
366
  const inlineCreationRowCount = newInlineCreationRowFromPaste ?? (this.getTableDefinition().control?.inlineCreationRowCount || 1);
307
367
  if (this.creatingEmptyRows || this.getInactiveContextNumber(binding) > inlineCreationRowCount) {
@@ -326,7 +386,9 @@ export default class EmptyRowsHandler implements IInterfaceWithMixin {
326
386
  recreateOneRow || forceCreateatEnd ? true : atEnd,
327
387
  false,
328
388
  controller.editFlow.onBeforeCreate,
329
- inactive
389
+ inactive,
390
+ undefined,
391
+ defaultValueFunctionData
330
392
  );
331
393
  appComponent.getSideEffectsService().requestSideEffectsForNavigationProperty(binding.getPath(), view.getBindingContext());
332
394
  contexts?.forEach(async function (context: Context) {