@sapui5/sap.fe.core 1.101.1 → 1.102.2

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 (217) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +5 -5
  4. package/src/sap/fe/core/AppComponent.ts +19 -18
  5. package/src/sap/fe/core/AppStateHandler.js +4 -4
  6. package/src/sap/fe/core/AppStateHandler.ts +9 -9
  7. package/src/sap/fe/core/CommonUtils.js +59 -93
  8. package/src/sap/fe/core/CommonUtils.ts +80 -99
  9. package/src/sap/fe/core/ExtensionAPI.js +2 -4
  10. package/src/sap/fe/core/ExtensionAPI.ts +1 -3
  11. package/src/sap/fe/core/PageController.js +14 -9
  12. package/src/sap/fe/core/PageController.ts +8 -2
  13. package/src/sap/fe/core/TemplateComponent.js +6 -6
  14. package/src/sap/fe/core/TemplateComponent.ts +5 -5
  15. package/src/sap/fe/core/TemplateModel.js +2 -2
  16. package/src/sap/fe/core/TemplateModel.ts +2 -2
  17. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +303 -75
  18. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +273 -64
  19. package/src/sap/fe/core/{BusyLocker.js → controllerextensions/BusyLocker.js} +1 -1
  20. package/src/sap/fe/core/{BusyLocker.ts → controllerextensions/BusyLocker.ts} +7 -7
  21. package/src/sap/fe/core/controllerextensions/EditFlow.js +234 -123
  22. package/src/sap/fe/core/controllerextensions/EditFlow.ts +176 -114
  23. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +34 -10
  24. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +44 -12
  25. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +30 -28
  26. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +38 -31
  27. package/src/sap/fe/core/controllerextensions/InternalRouting.js +157 -102
  28. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +155 -103
  29. package/src/sap/fe/core/controllerextensions/MassEdit.js +4 -3
  30. package/src/sap/fe/core/controllerextensions/MassEdit.ts +15 -14
  31. package/src/sap/fe/core/controllerextensions/MessageHandler.js +3 -3
  32. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +10 -2
  33. package/src/sap/fe/core/controllerextensions/Paginator.js +12 -3
  34. package/src/sap/fe/core/controllerextensions/Paginator.ts +11 -2
  35. package/src/sap/fe/core/controllerextensions/Share.js +19 -1
  36. package/src/sap/fe/core/controllerextensions/Share.ts +18 -0
  37. package/src/sap/fe/core/controllerextensions/SideEffects.js +2 -2
  38. package/src/sap/fe/core/controllerextensions/SideEffects.ts +2 -2
  39. package/src/sap/fe/core/controllerextensions/ViewState.js +11 -1
  40. package/src/sap/fe/core/controllerextensions/ViewState.ts +10 -0
  41. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +105 -0
  42. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +98 -0
  43. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +360 -0
  44. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/ActivitySync.ts +57 -106
  45. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +146 -0
  46. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/CollaborationCommon.ts +6 -6
  47. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/Manage.js +4 -4
  48. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/Manage.ts +3 -3
  49. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/ManageDialog.fragment.xml +0 -0
  50. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/UserDetails.fragment.xml +5 -7
  51. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1587 -0
  52. package/src/sap/fe/core/{TransactionHelper.ts → controllerextensions/editFlow/TransactionHelper.ts} +26 -13
  53. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +785 -0
  54. package/src/sap/fe/core/{actions → controllerextensions/editFlow}/draft.ts +179 -22
  55. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1175 -0
  56. package/src/sap/fe/core/{actions → controllerextensions/editFlow}/operations.ts +203 -98
  57. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +190 -0
  58. package/src/sap/fe/core/{actions → controllerextensions/editFlow}/sticky.ts +76 -12
  59. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +597 -0
  60. package/src/sap/fe/core/{actions → controllerextensions/messageHandler}/messageHandling.ts +46 -27
  61. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +940 -0
  62. package/src/sap/fe/core/{RouterProxy.ts → controllerextensions/routing/RouterProxy.ts} +20 -18
  63. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +21 -18
  64. package/src/sap/fe/core/controls/CommandExecution.js +14 -3
  65. package/src/sap/fe/core/controls/CommandExecution.ts +11 -2
  66. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +34 -29
  67. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +33 -29
  68. package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -1
  69. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +1 -0
  70. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +11 -3
  71. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +17 -7
  72. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +9 -3
  73. package/src/sap/fe/core/controls/FileWrapper.js +49 -2
  74. package/src/sap/fe/core/controls/FileWrapper.ts +34 -1
  75. package/src/sap/fe/core/controls/FormElementWrapper.js +12 -2
  76. package/src/sap/fe/core/controls/FormElementWrapper.ts +12 -1
  77. package/src/sap/fe/core/controls/MassEditSelect.js +33 -0
  78. package/src/sap/fe/core/controls/MassEditSelect.ts +45 -0
  79. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +2 -2
  80. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +23 -28
  81. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +28 -63
  82. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +107 -0
  83. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +550 -36
  84. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +604 -36
  85. package/src/sap/fe/core/converters/ManifestSettings.js +2 -1
  86. package/src/sap/fe/core/converters/ManifestSettings.ts +4 -1
  87. package/src/sap/fe/core/converters/MetaModelConverter.js +11 -40
  88. package/src/sap/fe/core/converters/MetaModelConverter.ts +56 -84
  89. package/src/sap/fe/core/converters/annotations/DataField.js +20 -4
  90. package/src/sap/fe/core/converters/annotations/DataField.ts +24 -2
  91. package/src/sap/fe/core/converters/controls/Common/Action.js +5 -12
  92. package/src/sap/fe/core/converters/controls/Common/Action.ts +3 -9
  93. package/src/sap/fe/core/converters/controls/Common/Chart.js +10 -3
  94. package/src/sap/fe/core/converters/controls/Common/Chart.ts +8 -3
  95. package/src/sap/fe/core/converters/controls/Common/Form.js +12 -14
  96. package/src/sap/fe/core/converters/controls/Common/Form.ts +17 -19
  97. package/src/sap/fe/core/converters/controls/Common/Table.js +149 -66
  98. package/src/sap/fe/core/converters/controls/Common/Table.ts +136 -52
  99. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +22 -12
  100. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +23 -12
  101. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +7 -5
  102. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +15 -10
  103. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +26 -24
  104. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +35 -33
  105. package/src/sap/fe/core/converters/helpers/Aggregation.js +10 -2
  106. package/src/sap/fe/core/converters/helpers/Aggregation.ts +18 -13
  107. package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -2
  108. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +6 -5
  109. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +25 -25
  110. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +35 -38
  111. package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -3
  112. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +8 -6
  113. package/src/sap/fe/core/formatters/TableFormatter.js +73 -12
  114. package/src/sap/fe/core/formatters/TableFormatter.ts +70 -15
  115. package/src/sap/fe/core/fpm/Component.js +2 -2
  116. package/src/sap/fe/core/fpm/Component.ts +1 -1
  117. package/src/sap/fe/core/helpers/BindingExpression.js +10 -7
  118. package/src/sap/fe/core/helpers/BindingExpression.ts +37 -35
  119. package/src/sap/fe/core/helpers/ClassSupport.js +1 -1
  120. package/src/sap/fe/core/helpers/ClassSupport.ts +1 -0
  121. package/src/sap/fe/core/helpers/FPMHelper.js +3 -2
  122. package/src/sap/fe/core/helpers/FPMHelper.ts +9 -8
  123. package/src/sap/fe/core/helpers/MassEditHelper.js +399 -152
  124. package/src/sap/fe/core/helpers/MassEditHelper.ts +385 -163
  125. package/src/sap/fe/core/helpers/ModelHelper.js +1 -1
  126. package/src/sap/fe/core/helpers/ModelHelper.ts +20 -30
  127. package/src/sap/fe/core/helpers/StableIdHelper.js +5 -1
  128. package/src/sap/fe/core/helpers/StableIdHelper.ts +8 -4
  129. package/src/sap/fe/core/{Synchronization.js → helpers/Synchronization.js} +1 -1
  130. package/src/sap/fe/core/{Synchronization.ts → helpers/Synchronization.ts} +1 -1
  131. package/src/sap/fe/core/library.js +12 -3
  132. package/src/sap/fe/core/library.ts +9 -0
  133. package/src/sap/fe/core/messagebundle.properties +125 -180
  134. package/src/sap/fe/core/messagebundle_ar.properties +30 -63
  135. package/src/sap/fe/core/messagebundle_bg.properties +30 -63
  136. package/src/sap/fe/core/messagebundle_ca.properties +30 -63
  137. package/src/sap/fe/core/messagebundle_cs.properties +30 -63
  138. package/src/sap/fe/core/messagebundle_cy.properties +30 -63
  139. package/src/sap/fe/core/messagebundle_da.properties +31 -64
  140. package/src/sap/fe/core/messagebundle_de.properties +30 -63
  141. package/src/sap/fe/core/messagebundle_el.properties +31 -64
  142. package/src/sap/fe/core/messagebundle_en.properties +31 -64
  143. package/src/sap/fe/core/messagebundle_en_GB.properties +31 -64
  144. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +40 -73
  145. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +31 -64
  146. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +49 -82
  147. package/src/sap/fe/core/messagebundle_es.properties +30 -63
  148. package/src/sap/fe/core/messagebundle_es_MX.properties +30 -63
  149. package/src/sap/fe/core/messagebundle_et.properties +30 -63
  150. package/src/sap/fe/core/messagebundle_fi.properties +30 -63
  151. package/src/sap/fe/core/messagebundle_fr.properties +33 -66
  152. package/src/sap/fe/core/messagebundle_fr_CA.properties +30 -63
  153. package/src/sap/fe/core/messagebundle_hi.properties +30 -63
  154. package/src/sap/fe/core/messagebundle_hr.properties +30 -63
  155. package/src/sap/fe/core/messagebundle_hu.properties +29 -62
  156. package/src/sap/fe/core/messagebundle_id.properties +31 -64
  157. package/src/sap/fe/core/messagebundle_it.properties +30 -63
  158. package/src/sap/fe/core/messagebundle_iw.properties +30 -63
  159. package/src/sap/fe/core/messagebundle_ja.properties +30 -63
  160. package/src/sap/fe/core/messagebundle_kk.properties +30 -63
  161. package/src/sap/fe/core/messagebundle_ko.properties +30 -63
  162. package/src/sap/fe/core/messagebundle_lt.properties +30 -63
  163. package/src/sap/fe/core/messagebundle_lv.properties +30 -63
  164. package/src/sap/fe/core/messagebundle_ms.properties +31 -64
  165. package/src/sap/fe/core/messagebundle_nl.properties +31 -64
  166. package/src/sap/fe/core/messagebundle_no.properties +30 -63
  167. package/src/sap/fe/core/messagebundle_pl.properties +31 -64
  168. package/src/sap/fe/core/messagebundle_pt.properties +31 -64
  169. package/src/sap/fe/core/messagebundle_pt_PT.properties +30 -63
  170. package/src/sap/fe/core/messagebundle_ro.properties +30 -63
  171. package/src/sap/fe/core/messagebundle_ru.properties +30 -63
  172. package/src/sap/fe/core/messagebundle_sh.properties +30 -63
  173. package/src/sap/fe/core/messagebundle_sk.properties +30 -63
  174. package/src/sap/fe/core/messagebundle_sl.properties +32 -65
  175. package/src/sap/fe/core/messagebundle_sv.properties +30 -63
  176. package/src/sap/fe/core/messagebundle_th.properties +30 -63
  177. package/src/sap/fe/core/messagebundle_tr.properties +30 -63
  178. package/src/sap/fe/core/messagebundle_uk.properties +31 -64
  179. package/src/sap/fe/core/messagebundle_vi.properties +31 -64
  180. package/src/sap/fe/core/messagebundle_zh_CN.properties +30 -63
  181. package/src/sap/fe/core/messagebundle_zh_TW.properties +31 -64
  182. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +6 -3
  183. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +10 -9
  184. package/src/sap/fe/core/services/NavigationServiceFactory.js +2 -2
  185. package/src/sap/fe/core/services/NavigationServiceFactory.ts +8 -4
  186. package/src/sap/fe/core/services/RoutingServiceFactory.js +9 -6
  187. package/src/sap/fe/core/services/RoutingServiceFactory.ts +10 -9
  188. package/src/sap/fe/core/services/ShellServicesFactory.js +36 -1
  189. package/src/sap/fe/core/services/ShellServicesFactory.ts +38 -1
  190. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +5 -4
  191. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +34 -36
  192. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  193. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +1 -1
  194. package/src/sap/fe/core/templating/EntitySetHelper.js +1 -9
  195. package/src/sap/fe/core/templating/EntitySetHelper.ts +11 -13
  196. package/src/sap/fe/core/templating/FilterHelper.js +4 -4
  197. package/src/sap/fe/core/templating/FilterHelper.ts +6 -5
  198. package/src/sap/fe/core/templating/PropertyHelper.js +58 -35
  199. package/src/sap/fe/core/templating/PropertyHelper.ts +19 -4
  200. package/src/sap/fe/core/templating/UIFormatters.js +16 -5
  201. package/src/sap/fe/core/templating/UIFormatters.ts +14 -5
  202. package/src/sap/fe/core/type/DateTimeWithTimezone.js +47 -0
  203. package/src/sap/fe/core/type/DateTimeWithTimezone.ts +23 -0
  204. package/src/sap/fe/core/AnnotationHelper.js +0 -331
  205. package/src/sap/fe/core/AnnotationHelper.ts +0 -321
  206. package/src/sap/fe/core/RouterProxy.js +0 -938
  207. package/src/sap/fe/core/TransactionHelper.js +0 -1577
  208. package/src/sap/fe/core/actions/collaboration/ActivitySync.js +0 -406
  209. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +0 -146
  210. package/src/sap/fe/core/actions/draft.js +0 -665
  211. package/src/sap/fe/core/actions/messageHandling.js +0 -579
  212. package/src/sap/fe/core/actions/nonDraft.js +0 -20
  213. package/src/sap/fe/core/actions/nonDraft.ts +0 -12
  214. package/src/sap/fe/core/actions/operations.js +0 -1096
  215. package/src/sap/fe/core/actions/sticky.js +0 -130
  216. package/src/sap/fe/core/formatters/CriticalityFormatter.js +0 -77
  217. package/src/sap/fe/core/formatters/CriticalityFormatter.ts +0 -58
@@ -1,13 +1,13 @@
1
+ import ResourceBundle from "sap/base/i18n/ResourceBundle";
1
2
  import Log from "sap/base/Log";
2
- import BaseObject from "sap/ui/base/Object";
3
- import Synchronization from "sap/fe/core/Synchronization";
4
- import URI from "sap/ui/thirdparty/URI";
3
+ import { defineUI5Class } from "sap/fe/core/helpers/ClassSupport";
4
+ import Synchronization from "sap/fe/core/helpers/Synchronization";
5
5
  import { IShellServices } from "sap/fe/core/services/ShellServicesFactory";
6
+ import BaseObject from "sap/ui/base/Object";
7
+ import Core from "sap/ui/core/Core";
6
8
  import Router from "sap/ui/core/routing/Router";
7
- import { defineUI5Class } from "sap/fe/core/helpers/ClassSupport";
8
- import ResourceBundle from "sap/base/i18n/ResourceBundle";
9
+ import URI from "sap/ui/thirdparty/URI";
9
10
  import { CoreEx } from "types/extension_types";
10
- import Core from "sap/ui/core/Core";
11
11
 
12
12
  const enumState = {
13
13
  EQUAL: 0,
@@ -29,7 +29,7 @@ const enumURLParams = {
29
29
  function createGuardFromHash(sGuardHash: string) {
30
30
  return {
31
31
  _guardHash: sGuardHash.replace(/\?[^\?]*$/, ""), // Remove query part
32
- check: function(sHash: any) {
32
+ check: function (sHash: any) {
33
33
  return sHash.indexOf(this._guardHash) === 0;
34
34
  }
35
35
  };
@@ -129,7 +129,7 @@ class RouterProxy extends BaseObject {
129
129
  this._fnBlockingNavFilter = this._blockingNavigationFilter.bind(this);
130
130
  this._oShellServices.registerNavigationFilter(this._fnBlockingNavFilter);
131
131
  })
132
- .catch(function(oError: any) {
132
+ .catch(function (oError: any) {
133
133
  Log.error("Cannot retrieve the shell services", oError);
134
134
  });
135
135
  this._fnHashGuard = this.hashGuard.bind(this);
@@ -208,7 +208,7 @@ class RouterProxy extends BaseObject {
208
208
  bDisablePreservationCache?: boolean,
209
209
  bForceFocus?: boolean,
210
210
  bPreserveShellBackNavigationHandler?: boolean
211
- ) {
211
+ ): Promise<boolean> {
212
212
  if (bPreserveShellBackNavigationHandler !== false) {
213
213
  this._oShellServices.setBackNavigation();
214
214
  }
@@ -225,7 +225,7 @@ class RouterProxy extends BaseObject {
225
225
  }
226
226
  }
227
227
 
228
- _internalNavToHash(sHash: any, bPreserveHistory: any, bDisablePreservationCache: any, bForceFocus?: boolean) {
228
+ _internalNavToHash(sHash: any, bPreserveHistory: any, bDisablePreservationCache: any, bForceFocus?: boolean): Promise<boolean> {
229
229
  // Add the app state in the hash if needed
230
230
  if (this.fclEnabled && this.sIAppStateKey && !findAppStateInHash(sHash)) {
231
231
  sHash = setAppStateInHash(sHash, this.sIAppStateKey);
@@ -255,7 +255,7 @@ class RouterProxy extends BaseObject {
255
255
  this._bForceFocus =
256
256
  bForceFocus ||
257
257
  (aCurrentHashKeys.length < oNewState.keys.length &&
258
- aCurrentHashKeys.every(function(key: any, index: any) {
258
+ aCurrentHashKeys.every(function (key: any, index: any) {
259
259
  return key === oNewState.keys[index];
260
260
  }));
261
261
  }
@@ -441,7 +441,7 @@ class RouterProxy extends BaseObject {
441
441
  const aTokens = sHashNoParams.split("/");
442
442
  const aKeys: any[] = [];
443
443
 
444
- aTokens.forEach(function(sToken: any) {
444
+ aTokens.forEach(function (sToken: any) {
445
445
  const regexKey = /[^\(\)]+\([^\(\)]+\)/; // abc(def)
446
446
  if (regexKey.test(sToken)) {
447
447
  aKeys.push(sToken.split("(")[0]);
@@ -633,10 +633,10 @@ class RouterProxy extends BaseObject {
633
633
  * @ui5-restricted
634
634
  * @final
635
635
  */
636
- _rebuildBrowserHistory(oHistoryAction: any, bRebuildOnly: boolean) {
636
+ _rebuildBrowserHistory(oHistoryAction: any, bRebuildOnly: boolean): Promise<boolean> {
637
637
  // eslint-disable-next-line @typescript-eslint/no-this-alias
638
638
  const that = this;
639
- return new Promise(resolve => {
639
+ return new Promise((resolve) => {
640
640
  this.bIsRebuildHistoryRunning = true;
641
641
  const oTargetState = this._oManagedHistory[this._oManagedHistory.length - 1],
642
642
  newLevel = this._oManagedHistory.length - 1;
@@ -650,7 +650,7 @@ class RouterProxy extends BaseObject {
650
650
  history.replaceState(Object.assign({ feLevel: newLevel }, history.state), "");
651
651
 
652
652
  if (bRebuildOnly) {
653
- setTimeout(function() {
653
+ setTimeout(function () {
654
654
  // Timeout to let 'hashchange' event be processed before by the HashChanger, so that
655
655
  // onRouteMatched notification isn't raised
656
656
  that._enableEventOnHashChange(true);
@@ -664,7 +664,7 @@ class RouterProxy extends BaseObject {
664
664
  // Async callbacks when navigating back, in order to let all notifications and events get processed
665
665
  function backReplaceAsync() {
666
666
  window.removeEventListener("popstate", backReplaceAsync);
667
- setTimeout(function() {
667
+ setTimeout(function () {
668
668
  // Timeout to let 'hashchange' event be processed before by the HashChanger
669
669
  replaceAsync();
670
670
  }, 0);
@@ -717,7 +717,9 @@ class RouterProxy extends BaseObject {
717
717
  }
718
718
 
719
719
  setPathMapping(mappings: { oldPath: string; newPath: string }[]) {
720
- this._pathMappings = mappings;
720
+ this._pathMappings = mappings.filter((mapping) => {
721
+ return mapping.oldPath !== mapping.newPath;
722
+ });
721
723
  }
722
724
 
723
725
  hashGuard() {
@@ -727,7 +729,7 @@ class RouterProxy extends BaseObject {
727
729
  this._bApplyRestore = true;
728
730
  } else if (!this.bIsRebuildHistoryRunning) {
729
731
  // Check if the hash needs to be changed (this happens in FCL when switching b/w edit and read-only with 3 columns open)
730
- const mapping = this._pathMappings.find(m => {
732
+ const mapping = this._pathMappings.find((m) => {
731
733
  return sHash.indexOf(m.oldPath) >= 0;
732
734
  });
733
735
  if (mapping) {
@@ -18,27 +18,27 @@
18
18
  Property: 'sap/fe/core/templating/PropertyFormatters'
19
19
  }"
20
20
  >
21
- <form:SimpleForm binding="{$Parameter}">
22
- <template:repeat list="{action>$Parameter}" var="parameter">
23
- <template:with path="parameter>" helper="COMMON.gotoActionParameter" var="actionParameter">
24
- <!-- In case of bound actions the first parameter shall be ignored -->
25
- <template:if test="{= !${action>$IsBound} || ${parameter>$Name} !== ${action>$Parameter/0/$Name} }">
26
- <Label
21
+ <form:SimpleForm binding="{$Parameter}">
22
+ <template:repeat list="{action>$Parameter}" var="parameter">
23
+ <template:with path="parameter>" helper="COMMON.gotoActionParameter" var="actionParameter">
24
+ <!-- In case of bound actions the first parameter shall be ignored -->
25
+ <template:if test="{= !${action>$IsBound} || ${parameter>$Name} !== ${action>$Parameter/0/$Name} }">
26
+ <Label
27
27
  unittest:id="ActionParameterDialogLabelExpressionTest"
28
28
  text="{= ${actionParameter>@com.sap.vocabularies.Common.v1.Label} ? ${actionParameter>@com.sap.vocabularies.Common.v1.Label} : ${parameter>$Name}}"
29
29
  />
30
- <!-- TODOs:
30
+ <!-- TODOs:
31
31
  edit mode, can there be also field control?
32
32
  value help
33
33
  additional value? (= text annotation)
34
34
  text arrangement?
35
35
  multipleLines?
36
36
  -->
37
- <!-- TODO: use new value helper -->
37
+ <!-- TODO: use new value helper -->
38
38
 
39
- <template:if test="{= !${parameter>$isCollection} }">
39
+ <template:if test="{= !${parameter>$isCollection} }">
40
40
  <template:then>
41
- <!--The payload of FieldBaseDelegate is used to control the fallback feature 'retrieveTextFromValueList' -->
41
+ <!--The payload of FieldBaseDelegate is used to control the fallback feature 'retrieveTextFromValueList' -->
42
42
  <mdc:Field
43
43
  delegate="{name:'sap/fe/macros/FieldBaseDelegate', payload:{retrieveTextFromValueList:true}}"
44
44
  unittest:id="ActionParameterDialogFieldExpressionTest"
@@ -51,9 +51,9 @@
51
51
  required="{= FIELD.isRequired(${actionParameter>@@FIELD.fieldControl}, 'Editable')}"
52
52
  change="{= '.handleChange($event, \'' + ${parameter>$Name} + '\')' }"
53
53
  fieldHelp="{= FIELD.getActionParameterDialogFieldHelp(${actionParameter>@}, ${actionName>@sapui.name}, ${parameter>$Name}) }"
54
- visible="{actionParameter>@com.sap.vocabularies.UI.v1.Hidden@@FIELD.getActionParameterVisibility}"
54
+ visible="{= (${actionParameter>$Name} === 'ResultIsActiveEntity') ? false : ${actionParameter>@com.sap.vocabularies.UI.v1.Hidden@@FIELD.getActionParameterVisibility} }"
55
55
  >
56
- <core:Fragment fragmentName="sap.fe.core.controls.ActionParameterDialogValueHelp" type="XML" />
56
+ <core:Fragment fragmentName="sap.fe.core.controls.ActionParameterDialogValueHelp" type="XML" />
57
57
  </mdc:Field>
58
58
  </template:then>
59
59
  <template:else>
@@ -70,13 +70,16 @@
70
70
  fieldHelp="{= FIELD.getActionParameterDialogFieldHelp(${actionParameter>@}, ${actionName>@sapui.name}, ${parameter>$Name}) }"
71
71
  visible="{actionParameter>@com.sap.vocabularies.UI.v1.Hidden@@FIELD.getActionParameterVisibility}"
72
72
  >
73
- <mdcField:MultiValueFieldItem key="{path: 'mvfview>Key', type:'sap.ui.model.type.String'}" description="{mvfview>Desc}" />
74
- <core:Fragment fragmentName="sap.fe.core.controls.ActionParameterDialogValueHelp" type="XML" />
73
+ <mdcField:MultiValueFieldItem
74
+ key="{path: 'mvfview>Key', type:'sap.ui.model.type.String'}"
75
+ description="{mvfview>Desc}"
76
+ />
77
+ <core:Fragment fragmentName="sap.fe.core.controls.ActionParameterDialogValueHelp" type="XML" />
75
78
  </mdc:MultiValueField>
76
79
  </template:else>
77
- </template:if>
78
80
  </template:if>
79
- </template:with>
80
- </template:repeat>
81
- </form:SimpleForm>
81
+ </template:if>
82
+ </template:with>
83
+ </template:repeat>
84
+ </form:SimpleForm>
82
85
  </core:FragmentDefinition>
@@ -2,7 +2,7 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/ui/core/CommandExecution", "sap/ui/core/Element", "sap/ui/core/Shortcut"], function (Log, ClassSupport, CommandExecution, Element, Shortcut) {
5
+ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/ui/core/CommandExecution", "sap/ui/core/Component", "sap/ui/core/Element", "sap/ui/core/Shortcut"], function (Log, ClassSupport, CommandExecution, Component, Element, Shortcut) {
6
6
  "use strict";
7
7
 
8
8
  var _dec, _class;
@@ -77,7 +77,18 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/ui/core/
77
77
  };
78
78
 
79
79
  _proto.setVisible = function setVisible(bValue) {
80
- var oCommand = this._getCommandInfo();
80
+ var oCommand,
81
+ oParentControl = this.getParent(),
82
+ oComponent = Component.getOwnerComponentFor(this.getParent());
83
+
84
+ while (!oComponent && oParentControl && oParentControl.getParent()) {
85
+ oComponent = Component.getOwnerComponentFor(oParentControl);
86
+ oParentControl = oParentControl.getParent();
87
+ }
88
+
89
+ if (oComponent) {
90
+ oCommand = oComponent.getCommand(this.getCommand());
91
+ }
81
92
 
82
93
  if (oCommand) {
83
94
  _CommandExecution.prototype.setVisible.call(this, bValue);
@@ -92,4 +103,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/ui/core/
92
103
  }(CommandExecution)) || _class);
93
104
  return CustomCommandExecution;
94
105
  }, false);
95
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbW1hbmRFeGVjdXRpb24udHMiXSwibmFtZXMiOlsiQ3VzdG9tQ29tbWFuZEV4ZWN1dGlvbiIsImRlZmluZVVJNUNsYXNzIiwic2V0UGFyZW50Iiwib1BhcmVudCIsImFFeGNsdWRlZFNpbmdsZUtleSIsImFDb21tYW5kcyIsImRhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJvQ29tbWFuZCIsIm9TaG9ydGN1dCIsInNob3J0Y3V0U3BlYyIsImluZGV4T2YiLCJrZXkiLCJhZGREZWxlZ2F0ZSIsIm9FdmVudCIsInRvTG93ZXJDYXNlIiwic0VsZW1lbnQiLCJ0YXJnZXQiLCJ0YWdOYW1lIiwidW5kZWZpbmVkIiwic2V0TWFya2VkIiwiZGVzdHJveSIsImJTdXBwcmVzc0ludmFsaWRhdGUiLCJnZXRQYXJlbnQiLCJfZ2V0Q29tbWFuZEluZm8iLCJTaG9ydGN1dCIsInVucmVnaXN0ZXIiLCJzaG9ydGN1dCIsIl9jbGVhbnVwQ29udGV4dCIsIkVsZW1lbnQiLCJwcm90b3R5cGUiLCJhcHBseSIsInNldFZpc2libGUiLCJiVmFsdWUiLCJMb2ciLCJpbmZvIiwiZ2V0Q29tbWFuZCIsIkNvbW1hbmRFeGVjdXRpb24iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztNQUtNQSxzQixXQURMQyxjQUFjLENBQUMsdUNBQUQsQzs7Ozs7Ozs7O1dBRWRDLFMsR0FBQSxtQkFBVUMsT0FBVixFQUF3QjtBQUN2QixVQUFNQyxrQkFBa0IsR0FBRyxDQUFDLFFBQUQsQ0FBM0IsQ0FEdUIsQ0FFdkI7QUFDQTs7QUFDQSxrQ0FBTUYsU0FBTixZQUFnQkMsT0FBaEI7O0FBQ0EsVUFBTUUsU0FBUyxHQUFHRixPQUFPLENBQUNHLElBQVIsQ0FBYSxzQkFBYixDQUFsQjs7QUFDQSxVQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0gsU0FBZCxLQUE0QkEsU0FBUyxDQUFDSSxNQUFWLEdBQW1CLENBQW5ELEVBQXNEO0FBQ3JELFlBQU1DLFFBQVEsR0FBR1AsT0FBTyxDQUFDRyxJQUFSLENBQWEsc0JBQWIsRUFBcUNELFNBQVMsQ0FBQ0ksTUFBVixHQUFtQixDQUF4RCxDQUFqQjtBQUFBLFlBQ0NFLFNBQVMsR0FBR0QsUUFBUSxDQUFDRSxZQUR0Qjs7QUFFQSxZQUFJRCxTQUFTLElBQUlQLGtCQUFrQixDQUFDUyxPQUFuQixDQUEyQkYsU0FBUyxDQUFDRyxHQUFyQyxJQUE0QyxDQUFDLENBQTlELEVBQWlFO0FBQ2hFO0FBQ0EsZUFBSyxJQUFNQSxHQUFYLElBQWtCSCxTQUFsQixFQUE2QjtBQUM1QixnQkFBSUEsU0FBUyxDQUFDRyxHQUFELENBQVQsSUFBa0JBLEdBQUcsS0FBSyxLQUE5QixFQUFxQztBQUNwQyxxQkFBTyxJQUFQO0FBQ0E7QUFDRCxXQU4rRCxDQU9oRTs7O0FBQ0FYLFVBQUFBLE9BQU8sQ0FBQ1ksV0FBUixDQUNDO0FBQ0MseUJBQWEsVUFBVUMsTUFBVixFQUF1QjtBQUNuQyxrQkFBSVosa0JBQWtCLENBQUNTLE9BQW5CLENBQTJCRyxNQUFNLENBQUNGLEdBQVAsQ0FBV0csV0FBWCxFQUEzQixJQUF1RCxDQUFDLENBQTVELEVBQStEO0FBQzlELG9CQUFNQyxRQUFRLEdBQUdGLE1BQU0sQ0FBQ0csTUFBUCxHQUFnQkgsTUFBTSxDQUFDRyxNQUFQLENBQWNDLE9BQWQsQ0FBc0JILFdBQXRCLEVBQWhCLEdBQXNESSxTQUF2RTs7QUFDQSxvQkFBSUgsUUFBUSxLQUFLLE9BQWpCLEVBQTBCO0FBQ3pCRixrQkFBQUEsTUFBTSxDQUFDTSxTQUFQO0FBQ0E7QUFDRDtBQUNEO0FBUkYsV0FERCxFQVdDLElBWEQsRUFZQ0QsU0FaRCxFQWFDLElBYkQ7QUFlQTs7QUFDRCxlQUFPLElBQVA7QUFDQTtBQUNELEs7O1dBRURFLE8sR0FBQSxpQkFBUUMsbUJBQVIsRUFBc0M7QUFDckMsVUFBTXJCLE9BQU8sR0FBRyxLQUFLc0IsU0FBTCxFQUFoQjs7QUFDQSxVQUFJdEIsT0FBSixFQUFhO0FBQ1osWUFBTU8sUUFBUSxHQUFHLEtBQUtnQixlQUFMLEVBQWpCOztBQUNBLFlBQUloQixRQUFKLEVBQWM7QUFDYmlCLFVBQUFBLFFBQVEsQ0FBQ0MsVUFBVCxDQUFvQixLQUFLSCxTQUFMLEVBQXBCLEVBQXNDZixRQUFRLENBQUNtQixRQUEvQztBQUNBOztBQUNELGFBQUtDLGVBQUwsQ0FBcUIzQixPQUFyQjtBQUNBOztBQUNENEIsTUFBQUEsT0FBTyxDQUFDQyxTQUFSLENBQWtCVCxPQUFsQixDQUEwQlUsS0FBMUIsQ0FBZ0MsSUFBaEMsRUFBc0MsQ0FBQ1QsbUJBQUQsQ0FBdEM7QUFDQSxLOztXQUVEVSxVLEdBQUEsb0JBQVdDLE1BQVgsRUFBNEI7QUFDM0IsVUFBTXpCLFFBQVEsR0FBRyxLQUFLZ0IsZUFBTCxFQUFqQjs7QUFDQSxVQUFJaEIsUUFBSixFQUFjO0FBQ2Isb0NBQU13QixVQUFOLFlBQWlCQyxNQUFqQjtBQUNBLE9BRkQsTUFFTztBQUNOQyxRQUFBQSxHQUFHLENBQUNDLElBQUosQ0FBUyxrRkFBa0YsS0FBS0MsVUFBTCxFQUEzRjtBQUNBOztBQUNELGFBQU8sSUFBUDtBQUNBLEs7OztJQTFEbUNDLGdCO1NBZ0V0QnZDLHNCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ29tbWFuZEV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvQ29tbWFuZEV4ZWN1dGlvblwiO1xuaW1wb3J0IEVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCBTaG9ydGN1dCBmcm9tIFwic2FwL3VpL2NvcmUvU2hvcnRjdXRcIjtcblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuY29udHJvbHMuQ29tbWFuZEV4ZWN1dGlvblwiKVxuY2xhc3MgQ3VzdG9tQ29tbWFuZEV4ZWN1dGlvbiBleHRlbmRzIENvbW1hbmRFeGVjdXRpb24ge1xuXHRzZXRQYXJlbnQob1BhcmVudDogYW55KSB7XG5cdFx0Y29uc3QgYUV4Y2x1ZGVkU2luZ2xlS2V5ID0gW1wiZXNjYXBlXCJdO1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0c3VwZXIuc2V0UGFyZW50KG9QYXJlbnQpO1xuXHRcdGNvbnN0IGFDb21tYW5kcyA9IG9QYXJlbnQuZGF0YShcInNhcC51aS5jb3JlLlNob3J0Y3V0XCIpO1xuXHRcdGlmIChBcnJheS5pc0FycmF5KGFDb21tYW5kcykgJiYgYUNvbW1hbmRzLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnN0IG9Db21tYW5kID0gb1BhcmVudC5kYXRhKFwic2FwLnVpLmNvcmUuU2hvcnRjdXRcIilbYUNvbW1hbmRzLmxlbmd0aCAtIDFdLFxuXHRcdFx0XHRvU2hvcnRjdXQgPSBvQ29tbWFuZC5zaG9ydGN1dFNwZWM7XG5cdFx0XHRpZiAob1Nob3J0Y3V0ICYmIGFFeGNsdWRlZFNpbmdsZUtleS5pbmRleE9mKG9TaG9ydGN1dC5rZXkpID4gLTEpIHtcblx0XHRcdFx0Ly8gQ2hlY2sgaWYgc2luZ2xlIGtleSBzaG9ydGN1dFxuXHRcdFx0XHRmb3IgKGNvbnN0IGtleSBpbiBvU2hvcnRjdXQpIHtcblx0XHRcdFx0XHRpZiAob1Nob3J0Y3V0W2tleV0gJiYga2V5ICE9PSBcImtleVwiKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gTmVlZCB0byBkaXNhYmxlIFNob3J0Q3V0IHdoZW4gdXNlciBwcmVzcyBzaW5nbGUgc2hvcnRjdXQga2V5IGludG8gYW4gaW5wdXRcblx0XHRcdFx0b1BhcmVudC5hZGREZWxlZ2F0ZShcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcIm9ua2V5ZG93blwiOiBmdW5jdGlvbiAob0V2ZW50OiBhbnkpIHtcblx0XHRcdFx0XHRcdFx0aWYgKGFFeGNsdWRlZFNpbmdsZUtleS5pbmRleE9mKG9FdmVudC5rZXkudG9Mb3dlckNhc2UoKSkgPiAtMSkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNFbGVtZW50ID0gb0V2ZW50LnRhcmdldCA/IG9FdmVudC50YXJnZXQudGFnTmFtZS50b0xvd2VyQ2FzZSgpIDogdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChzRWxlbWVudCA9PT0gXCJpbnB1dFwiKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRvRXZlbnQuc2V0TWFya2VkKCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR0cnVlLFxuXHRcdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cdH1cblxuXHRkZXN0cm95KGJTdXBwcmVzc0ludmFsaWRhdGU6IGJvb2xlYW4pIHtcblx0XHRjb25zdCBvUGFyZW50ID0gdGhpcy5nZXRQYXJlbnQoKTtcblx0XHRpZiAob1BhcmVudCkge1xuXHRcdFx0Y29uc3Qgb0NvbW1hbmQgPSB0aGlzLl9nZXRDb21tYW5kSW5mbygpO1xuXHRcdFx0aWYgKG9Db21tYW5kKSB7XG5cdFx0XHRcdFNob3J0Y3V0LnVucmVnaXN0ZXIodGhpcy5nZXRQYXJlbnQoKSwgb0NvbW1hbmQuc2hvcnRjdXQpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5fY2xlYW51cENvbnRleHQob1BhcmVudCk7XG5cdFx0fVxuXHRcdEVsZW1lbnQucHJvdG90eXBlLmRlc3Ryb3kuYXBwbHkodGhpcywgW2JTdXBwcmVzc0ludmFsaWRhdGVdKTtcblx0fVxuXG5cdHNldFZpc2libGUoYlZhbHVlOiBib29sZWFuKSB7XG5cdFx0Y29uc3Qgb0NvbW1hbmQgPSB0aGlzLl9nZXRDb21tYW5kSW5mbygpO1xuXHRcdGlmIChvQ29tbWFuZCkge1xuXHRcdFx0c3VwZXIuc2V0VmlzaWJsZShiVmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRMb2cuaW5mbyhcIlRoZXJlIGlzIG5vIHNob3J0Y3V0IGRlZmluaXRpb24gcmVnaXN0ZXJlZCBpbiB0aGUgbWFuaWZlc3QgZm9yIHRoZSBjb21tYW5kIDogXCIgKyB0aGlzLmdldENvbW1hbmQoKSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG5pbnRlcmZhY2UgQ3VzdG9tQ29tbWFuZEV4ZWN1dGlvbiB7XG5cdF9nZXRDb21tYW5kSW5mbygpOiBhbnk7XG5cdF9jbGVhbnVwQ29udGV4dChvUGFyZW50OiBhbnkpOiB2b2lkO1xufVxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tQ29tbWFuZEV4ZWN1dGlvbjtcbiJdfQ==
106
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbW1hbmRFeGVjdXRpb24udHMiXSwibmFtZXMiOlsiQ3VzdG9tQ29tbWFuZEV4ZWN1dGlvbiIsImRlZmluZVVJNUNsYXNzIiwic2V0UGFyZW50Iiwib1BhcmVudCIsImFFeGNsdWRlZFNpbmdsZUtleSIsImFDb21tYW5kcyIsImRhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJvQ29tbWFuZCIsIm9TaG9ydGN1dCIsInNob3J0Y3V0U3BlYyIsImluZGV4T2YiLCJrZXkiLCJhZGREZWxlZ2F0ZSIsIm9FdmVudCIsInRvTG93ZXJDYXNlIiwic0VsZW1lbnQiLCJ0YXJnZXQiLCJ0YWdOYW1lIiwidW5kZWZpbmVkIiwic2V0TWFya2VkIiwiZGVzdHJveSIsImJTdXBwcmVzc0ludmFsaWRhdGUiLCJnZXRQYXJlbnQiLCJfZ2V0Q29tbWFuZEluZm8iLCJTaG9ydGN1dCIsInVucmVnaXN0ZXIiLCJzaG9ydGN1dCIsIl9jbGVhbnVwQ29udGV4dCIsIkVsZW1lbnQiLCJwcm90b3R5cGUiLCJhcHBseSIsInNldFZpc2libGUiLCJiVmFsdWUiLCJvUGFyZW50Q29udHJvbCIsIm9Db21wb25lbnQiLCJDb21wb25lbnQiLCJnZXRPd25lckNvbXBvbmVudEZvciIsImdldENvbW1hbmQiLCJMb2ciLCJpbmZvIiwiQ29tbWFuZEV4ZWN1dGlvbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O01BTU1BLHNCLFdBRExDLGNBQWMsQ0FBQyx1Q0FBRCxDOzs7Ozs7Ozs7V0FFZEMsUyxHQUFBLG1CQUFVQyxPQUFWLEVBQXdCO0FBQ3ZCLFVBQU1DLGtCQUFrQixHQUFHLENBQUMsUUFBRCxDQUEzQixDQUR1QixDQUV2QjtBQUNBOztBQUNBLGtDQUFNRixTQUFOLFlBQWdCQyxPQUFoQjs7QUFDQSxVQUFNRSxTQUFTLEdBQUdGLE9BQU8sQ0FBQ0csSUFBUixDQUFhLHNCQUFiLENBQWxCOztBQUNBLFVBQUlDLEtBQUssQ0FBQ0MsT0FBTixDQUFjSCxT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LGdCO1NBd0V0QjNDLHNCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ29tbWFuZEV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvQ29tbWFuZEV4ZWN1dGlvblwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgRWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IFNob3J0Y3V0IGZyb20gXCJzYXAvdWkvY29yZS9TaG9ydGN1dFwiO1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9scy5Db21tYW5kRXhlY3V0aW9uXCIpXG5jbGFzcyBDdXN0b21Db21tYW5kRXhlY3V0aW9uIGV4dGVuZHMgQ29tbWFuZEV4ZWN1dGlvbiB7XG5cdHNldFBhcmVudChvUGFyZW50OiBhbnkpIHtcblx0XHRjb25zdCBhRXhjbHVkZWRTaW5nbGVLZXkgPSBbXCJlc2NhcGVcIl07XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRzdXBlci5zZXRQYXJlbnQob1BhcmVudCk7XG5cdFx0Y29uc3QgYUNvbW1hbmRzID0gb1BhcmVudC5kYXRhKFwic2FwLnVpLmNvcmUuU2hvcnRjdXRcIik7XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkoYUNvbW1hbmRzKSAmJiBhQ29tbWFuZHMubGVuZ3RoID4gMCkge1xuXHRcdFx0Y29uc3Qgb0NvbW1hbmQgPSBvUGFyZW50LmRhdGEoXCJzYXAudWkuY29yZS5TaG9ydGN1dFwiKVthQ29tbWFuZHMubGVuZ3RoIC0gMV0sXG5cdFx0XHRcdG9TaG9ydGN1dCA9IG9Db21tYW5kLnNob3J0Y3V0U3BlYztcblx0XHRcdGlmIChvU2hvcnRjdXQgJiYgYUV4Y2x1ZGVkU2luZ2xlS2V5LmluZGV4T2Yob1Nob3J0Y3V0LmtleSkgPiAtMSkge1xuXHRcdFx0XHQvLyBDaGVjayBpZiBzaW5nbGUga2V5IHNob3J0Y3V0XG5cdFx0XHRcdGZvciAoY29uc3Qga2V5IGluIG9TaG9ydGN1dCkge1xuXHRcdFx0XHRcdGlmIChvU2hvcnRjdXRba2V5XSAmJiBrZXkgIT09IFwia2V5XCIpIHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBOZWVkIHRvIGRpc2FibGUgU2hvcnRDdXQgd2hlbiB1c2VyIHByZXNzIHNpbmdsZSBzaG9ydGN1dCBrZXkgaW50byBhbiBpbnB1dFxuXHRcdFx0XHRvUGFyZW50LmFkZERlbGVnYXRlKFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFwib25rZXlkb3duXCI6IGZ1bmN0aW9uIChvRXZlbnQ6IGFueSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoYUV4Y2x1ZGVkU2luZ2xlS2V5LmluZGV4T2Yob0V2ZW50LmtleS50b0xvd2VyQ2FzZSgpKSA+IC0xKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qgc0VsZW1lbnQgPSBvRXZlbnQudGFyZ2V0ID8gb0V2ZW50LnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgOiB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHNFbGVtZW50ID09PSBcImlucHV0XCIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdG9FdmVudC5zZXRNYXJrZWQoKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHRydWUsXG5cdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdHRydWVcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0fVxuXG5cdGRlc3Ryb3koYlN1cHByZXNzSW52YWxpZGF0ZTogYm9vbGVhbikge1xuXHRcdGNvbnN0IG9QYXJlbnQgPSB0aGlzLmdldFBhcmVudCgpO1xuXHRcdGlmIChvUGFyZW50KSB7XG5cdFx0XHRjb25zdCBvQ29tbWFuZCA9IHRoaXMuX2dldENvbW1hbmRJbmZvKCk7XG5cdFx0XHRpZiAob0NvbW1hbmQpIHtcblx0XHRcdFx0U2hvcnRjdXQudW5yZWdpc3Rlcih0aGlzLmdldFBhcmVudCgpLCBvQ29tbWFuZC5zaG9ydGN1dCk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9jbGVhbnVwQ29udGV4dChvUGFyZW50KTtcblx0XHR9XG5cdFx0RWxlbWVudC5wcm90b3R5cGUuZGVzdHJveS5hcHBseSh0aGlzLCBbYlN1cHByZXNzSW52YWxpZGF0ZV0pO1xuXHR9XG5cdHNldFZpc2libGUoYlZhbHVlOiBib29sZWFuKSB7XG5cdFx0bGV0IG9Db21tYW5kLFxuXHRcdFx0b1BhcmVudENvbnRyb2wgPSB0aGlzLmdldFBhcmVudCgpLFxuXHRcdFx0b0NvbXBvbmVudDogYW55ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKHRoaXMuZ2V0UGFyZW50KCkpO1xuXHRcdHdoaWxlICghb0NvbXBvbmVudCAmJiBvUGFyZW50Q29udHJvbCAmJiBvUGFyZW50Q29udHJvbC5nZXRQYXJlbnQoKSkge1xuXHRcdFx0b0NvbXBvbmVudCA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcihvUGFyZW50Q29udHJvbCk7XG5cdFx0XHRvUGFyZW50Q29udHJvbCA9IG9QYXJlbnRDb250cm9sLmdldFBhcmVudCgpO1xuXHRcdH1cblx0XHRpZiAob0NvbXBvbmVudCkge1xuXHRcdFx0b0NvbW1hbmQgPSBvQ29tcG9uZW50LmdldENvbW1hbmQodGhpcy5nZXRDb21tYW5kKCkpO1xuXHRcdH1cblx0XHRpZiAob0NvbW1hbmQpIHtcblx0XHRcdHN1cGVyLnNldFZpc2libGUoYlZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TG9nLmluZm8oXCJUaGVyZSBpcyBubyBzaG9ydGN1dCBkZWZpbml0aW9uIHJlZ2lzdGVyZWQgaW4gdGhlIG1hbmlmZXN0IGZvciB0aGUgY29tbWFuZCA6IFwiICsgdGhpcy5nZXRDb21tYW5kKCkpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuaW50ZXJmYWNlIEN1c3RvbUNvbW1hbmRFeGVjdXRpb24ge1xuXHRfZ2V0Q29tbWFuZEluZm8oKTogYW55O1xuXHRfY2xlYW51cENvbnRleHQob1BhcmVudDogYW55KTogdm9pZDtcbn1cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbUNvbW1hbmRFeGVjdXRpb247XG4iXX0=
@@ -1,6 +1,7 @@
1
1
  import Log from "sap/base/Log";
2
2
  import { defineUI5Class } from "sap/fe/core/helpers/ClassSupport";
3
3
  import CommandExecution from "sap/ui/core/CommandExecution";
4
+ import Component from "sap/ui/core/Component";
4
5
  import Element from "sap/ui/core/Element";
5
6
  import Shortcut from "sap/ui/core/Shortcut";
6
7
 
@@ -54,9 +55,17 @@ class CustomCommandExecution extends CommandExecution {
54
55
  }
55
56
  Element.prototype.destroy.apply(this, [bSuppressInvalidate]);
56
57
  }
57
-
58
58
  setVisible(bValue: boolean) {
59
- const oCommand = this._getCommandInfo();
59
+ let oCommand,
60
+ oParentControl = this.getParent(),
61
+ oComponent: any = Component.getOwnerComponentFor(this.getParent());
62
+ while (!oComponent && oParentControl && oParentControl.getParent()) {
63
+ oComponent = Component.getOwnerComponentFor(oParentControl);
64
+ oParentControl = oParentControl.getParent();
65
+ }
66
+ if (oComponent) {
67
+ oCommand = oComponent.getCommand(this.getCommand());
68
+ }
60
69
  if (oCommand) {
61
70
  super.setVisible(bValue);
62
71
  } else {
@@ -193,34 +193,46 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
193
193
  this._conditionsObserver.observe(this, {
194
194
  properties: ["conditions"]
195
195
  });
196
+
197
+ this._filterModel = new JSONModel();
198
+
199
+ this._filterModel.attachPropertyChange(this._handleFilterModelChange, this);
200
+
201
+ this.setModel(this._filterModel, CustomFilterFieldContentWrapper.FILTER_MODEL_ALIAS);
196
202
  }
197
203
  /**
198
- * Listens to property changes.
204
+ * Overrides {@link sap.ui.core.Control#clone Control.clone} to clone additional
205
+ * internal states.
199
206
  *
200
- * @param {any} changes Property changes
201
- * @private
207
+ * @param {string} [sIdSuffix] A suffix to be appended to the cloned control id
208
+ * @param {string[]} [aLocalIds] An array of local IDs within the cloned hierarchy (internally used)
209
+ * @returns {CustomFilterFieldContentWrapper} Reference to the newly created clone
210
+ * @protected
202
211
  */
203
212
  ;
204
213
 
205
- _proto._observeChanges = function _observeChanges(changes) {
206
- if (changes.name === "conditions") {
207
- this._handleConditionsChange(changes.current);
208
- }
214
+ _proto.clone = function clone(sIdSuffix, aLocalIds) {
215
+ var clone = _Control.prototype.clone.call(this, sIdSuffix, aLocalIds); // During cloning, the old model will be copied and overwrites any new model (same alias) that
216
+ // you introduce during init(); hence you need to overwrite it again by the new one that you've
217
+ // created during init() (i.e. clone._filterModel); that standard behaviour of super.clone()
218
+ // can't even be suppressed in an own constructor; for a detailed investigation of the cloning,
219
+ // please overwrite the setModel() method and check the list of callers and steps induced by them.
220
+
221
+
222
+ clone.setModel(clone._filterModel, CustomFilterFieldContentWrapper.FILTER_MODEL_ALIAS);
223
+ return clone;
209
224
  }
210
225
  /**
211
- * Registers the internal filter model (alias 'filterValues').
226
+ * Listens to property changes.
212
227
  *
228
+ * @param {any} changes Property changes
213
229
  * @private
214
230
  */
215
231
  ;
216
232
 
217
- _proto._registerFilterModel = function _registerFilterModel() {
218
- if (!this._filterModel) {
219
- this._filterModel = new JSONModel();
220
-
221
- this._filterModel.attachPropertyChange(this._handleFilterModelChange, this);
222
-
223
- this.setModel(this._filterModel, CustomFilterFieldContentWrapper.FILTER_MODEL_ALIAS);
233
+ _proto._observeChanges = function _observeChanges(changes) {
234
+ if (changes.name === "conditions") {
235
+ this._handleConditionsChange(changes.current);
224
236
  }
225
237
  }
226
238
  /**
@@ -232,8 +244,6 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
232
244
  ;
233
245
 
234
246
  _proto.getContent = function getContent() {
235
- this._registerFilterModel();
236
-
237
247
  return this.getAggregation("content");
238
248
  }
239
249
  /**
@@ -250,13 +260,15 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
250
260
  /**
251
261
  * Sets the value for control property 'conditions'.
252
262
  *
253
- * @param {Array} conditions Array of filter conditions
263
+ * @param {object[]} [conditions] Array of filter conditions
264
+ * @returns {CustomFilterFieldContentWrapper} Reference to this wrapper
254
265
  * @private
255
266
  */
256
267
  ;
257
268
 
258
269
  _proto.setConditions = function setConditions(conditions) {
259
- this.setProperty("conditions", conditions);
270
+ this.setProperty("conditions", conditions || []);
271
+ return this;
260
272
  }
261
273
  /**
262
274
  * Gets the filter model alias 'filterValues'.
@@ -274,7 +286,7 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
274
286
  * sent by ExtensionAPI#setFilterValues().
275
287
  *
276
288
  * @param {any} values The filter values
277
- * @param {string} operator The operator name
289
+ * @param {string} [operator] The operator name
278
290
  * @private
279
291
  */
280
292
  ;
@@ -296,12 +308,6 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
296
308
  _proto.updateFilterModelByConditions = function updateFilterModelByConditions(conditions) {
297
309
  var _conditions$;
298
310
 
299
- // When the filter field is created via "Adapt Filter"
300
- // this handler is fired before the filter model is created
301
- // -> in general, create it, if needed!
302
- // TODO: Consider using method Control#clone() to register filter model
303
- this._registerFilterModel();
304
-
305
311
  var operator = ((_conditions$ = conditions[0]) === null || _conditions$ === void 0 ? void 0 : _conditions$.operator) || "";
306
312
  var formatOptions = operator !== "" ? {
307
313
  operators: [operator]
@@ -316,8 +322,7 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
316
322
 
317
323
  this._filterModel.setProperty((_this$getBindingConte = this.getBindingContext(CustomFilterFieldContentWrapper.FILTER_MODEL_ALIAS)) === null || _this$getBindingConte === void 0 ? void 0 : _this$getBindingConte.getPath(), stringValue);
318
324
  }
319
- } // TODO: Check, if implementation of _setAriaLabelledBy() is needed ?
320
- ;
325
+ };
321
326
 
322
327
  _proto.getAccessibilityInfo = function getAccessibilityInfo() {
323
328
  var _content$getAccessibi;
@@ -363,4 +368,4 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/Semantic
363
368
  _exports = CustomFilterFieldContentWrapper;
364
369
  return _exports;
365
370
  }, false);
366
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXIudHMiXSwibmFtZXMiOlsiQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlciIsImRlZmluZVVJNUNsYXNzIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwicHJvcGVydHkiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwiYWdncmVnYXRpb24iLCJtdWx0aXBsZSIsImlzRGVmYXVsdCIsImV2ZW50IiwicmVuZGVyIiwicmVuZGVyTWFuYWdlciIsImNvbnRyb2wiLCJvcGVuU3RhcnQiLCJzdHlsZSIsIndpZHRoIiwib3BlbkVuZCIsInJlbmRlckNvbnRyb2wiLCJnZXRDb250ZW50IiwiY2xvc2UiLCJfZmlsdGVyVmFsdWVzVG9Db25kaXRpb25zIiwiZmlsdGVyVmFsdWVzIiwib3BlcmF0b3IiLCJmb3JtYXRPcHRpb25zIiwib3BlcmF0b3JzIiwiY29uZGl0aW9ucyIsImhhc093blByb3BlcnR5IiwidmFsdWVzIiwidW5kZWZpbmVkIiwiRXJyb3IiLCJjb25kaXRpb25zVHlwZSIsIkNvbmRpdGlvbnNUeXBlIiwiY29uZGl0aW9uVmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiU2VtYW50aWNEYXRlT3BlcmF0b3JzIiwiZ2V0U2VtYW50aWNEYXRlT3BlcmF0aW9ucyIsImluY2x1ZGVzIiwiQ29uZGl0aW9uIiwiY3JlYXRlQ29uZGl0aW9uIiwiQ29uZGl0aW9uVmFsaWRhdGVkIiwiTm90VmFsaWRhdGVkIiwibWFwIiwiY29uZGl0aW9uVmFsdWUiLCJzdHJpbmdWYWx1ZSIsInRvU3RyaW5nIiwicGFyc2VkQ29uZGl0aW9ucyIsInBhcnNlVmFsdWUiLCJmaWx0ZXIiLCJfY29uZGl0aW9uc1RvRmlsdGVyTW9kZWxTdHJpbmciLCJjb25kaXRpb24iLCJmb3JtYXRWYWx1ZSIsImpvaW4iLCJfaGFuZGxlRmlsdGVyTW9kZWxDaGFuZ2UiLCJjaGFuZ2VFdmVudCIsInByb3BlcnR5UGF0aCIsImdldE9iamVjdEJpbmRpbmciLCJnZXRQYXRoIiwiZ2V0U291cmNlIiwiZ2V0UHJvcGVydHkiLCJ1cGRhdGVDb25kaXRpb25zQnlGaWx0ZXJWYWx1ZXMiLCJfaGFuZGxlQ29uZGl0aW9uc0NoYW5nZSIsInVwZGF0ZUZpbHRlck1vZGVsQnlDb25kaXRpb25zIiwiaW5pdCIsIl9jb25kaXRpb25zT2JzZXJ2ZXIiLCJNYW5hZ2VkT2JqZWN0T2JzZXJ2ZXIiLCJfb2JzZXJ2ZUNoYW5nZXMiLCJiaW5kIiwib2JzZXJ2ZSIsInByb3BlcnRpZXMiLCJjaGFuZ2VzIiwibmFtZSIsImN1cnJlbnQiLCJfcmVnaXN0ZXJGaWx0ZXJNb2RlbCIsIl9maWx0ZXJNb2RlbCIsIkpTT05Nb2RlbCIsImF0dGFjaFByb3BlcnR5Q2hhbmdlIiwic2V0TW9kZWwiLCJGSUxURVJfTU9ERUxfQUxJQVMiLCJnZXRBZ2dyZWdhdGlvbiIsImdldENvbmRpdGlvbnMiLCJzZXRDb25kaXRpb25zIiwic2V0UHJvcGVydHkiLCJnZXRGaWx0ZXJNb2RlbEFsaWFzIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRBY2Nlc3NpYmlsaXR5SW5mbyIsImNvbnRlbnQiLCJDb250cm9sIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BOEJxQkEsK0I7QUFUckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtTQUNDQyxjQUFjLENBQUMsc0RBQUQsQyxVQUViQyxrQkFBa0IsQ0FBQywwQkFBRCxDLFVBSWxCQyxRQUFRLENBQUM7QUFBRUMsSUFBQUEsSUFBSSxFQUFFLHFCQUFSO0FBQStCQyxJQUFBQSxZQUFZLEVBQUU7QUFBN0MsR0FBRCxDLFVBR1JGLFFBQVEsQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUUsU0FBUjtBQUFtQkMsSUFBQUEsWUFBWSxFQUFFO0FBQWpDLEdBQUQsQyxVQUdSRixRQUFRLENBQUM7QUFBRUMsSUFBQUEsSUFBSSxFQUFFLFVBQVI7QUFBb0JDLElBQUFBLFlBQVksRUFBRTtB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Qy9FLFlBQU1sQyxXQUFXLEdBQUc3QywrQkFBK0IsQ0FBQ2tELDhCQUFoQyxDQUErRHpCLFVBQS9ELEVBQTJFRixhQUEzRSxDQUFwQjs7QUFDQSxhQUFLb0QsWUFBTCxDQUFrQlEsV0FBbEIsMEJBQ0MsS0FBS0UsaUJBQUwsQ0FBdUJyRiwrQkFBK0IsQ0FBQytFLGtCQUF2RCxDQURELDBEQUNDLHNCQUE0RXJCLE9BQTVFLEVBREQsRUFFQ2IsV0FGRDtBQUlBO0FBQ0QsSyxDQUVEOzs7V0FFQXlDLG9CLEdBQUEsZ0NBQTRCO0FBQUE7O0FBQzNCLFVBQU1DLE9BQU8sR0FBRyxLQUFLckUsVUFBTCxFQUFoQjtBQUNBLGFBQU8sQ0FBQXFFLE9BQU8sU0FBUCxJQUFBQSxPQUFPLFdBQVAscUNBQUFBLE9BQU8sQ0FBRUQsb0JBQVQscUZBQUFDLE9BQU8sTUFBOEIsRUFBNUM7QUFDQSxLOzs7SUFwUDJEQyxPLFdBeUJwQ1Qsa0IsR0FBcUIsYzs7Ozs7YUF0QkosSSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiAke2NvcHlyaWdodH1cbiAqL1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGRlZmluZVVJNUNsYXNzLCBldmVudCwgaW1wbGVtZW50SW50ZXJmYWNlLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IFNlbWFudGljRGF0ZU9wZXJhdG9ycyBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TZW1hbnRpY0RhdGVPcGVyYXRvcnNcIjtcbmltcG9ydCBNYW5hZ2VkT2JqZWN0T2JzZXJ2ZXIgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RPYnNlcnZlclwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB7IElGb3JtQ29udGVudCB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgUmVuZGVyTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyTWFuYWdlclwiO1xuaW1wb3J0IENvbmRpdGlvbiwgeyBDb25kaXRpb25PYmplY3QgfSBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vQ29uZGl0aW9uXCI7XG5pbXBvcnQgQ29uZGl0aW9uVmFsaWRhdGVkIGZyb20gXCJzYXAvdWkvbWRjL2VudW0vQ29uZGl0aW9uVmFsaWRhdGVkXCI7XG5pbXBvcnQgQ29uZGl0aW9uc1R5cGUgZnJvbSBcInNhcC91aS9tZGMvZmllbGQvQ29uZGl0aW9uc1R5cGVcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuXG4vKipcbiAqIFR5cGUgdXNlZCBmb3IgZm9ybWF0IG9wdGlvbnNcbiAqXG4gKiBAdHlwZWRlZiBGb3JtYXRPcHRpb25zVHlwZVxuICovXG50eXBlIEZvcm1hdE9wdGlvbnNUeXBlID0ge1xuXHRvcGVyYXRvcnM6IHN0cmluZ1tdO1xufTtcblxuLyoqXG4gKiBAY2xhc3NcbiAqIENyZWF0ZXMgYW4gPGNvZGU+c2FwLmZlLmNvcmUuY29udHJvbHMuQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlcjwvY29kZT4gb2JqZWN0LlxuICogVGhpcyBpcyB1c2VkIGluIHRoZSB7QGxpbmsgc2FwLnVpLm1kYy5GaWx0ZXJGaWVsZCBGaWx0ZXJGaWVsZH0gYXMgYSBmaWx0ZXIgY29udGVudC5cbiAqIEBleHRlbmRzIHNhcC51aS5jb3JlLkNvbnRyb2xcbiAqIEBwcml2YXRlXG4gKiBAYWxpYXMgc2FwLmZlLmNvcmUuY29udHJvbHMuQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlclxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9scy5DdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyIGV4dGVuZHMgQ29udHJvbCBpbXBsZW1lbnRzIElGb3JtQ29udGVudCB7XG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAudWkuY29yZS5JRm9ybUNvbnRlbnRcIilcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNhbWVsY2FzZVxuXHRfX2ltcGxlbWVudHNfX3NhcF91aV9jb3JlX0lGb3JtQ29udGVudCA9IHRydWU7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAudWkuY29yZS5DU1NTaXplXCIsIGRlZmF1bHRWYWx1ZTogbnVsbCB9KVxuXHR3aWR0aCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRmb3JtRG9Ob3RBZGp1c3RXaWR0aCE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RbXVwiLCBkZWZhdWx0VmFsdWU6IFtdIH0pXG5cdGNvbmRpdGlvbnMhOiBDb25kaXRpb25PYmplY3RbXTtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiwgbXVsdGlwbGU6IGZhbHNlLCBpc0RlZmF1bHQ6IHRydWUgfSlcblx0Y29udGVudCE6IENvbnRyb2w7XG5cblx0QGV2ZW50KClcblx0Y29uZGl0aW9uc0NoYW5nZSE6IEZ1bmN0aW9uO1xuXG5cdC8vIFRPRE86IENvbnNpZGVyIHVzaW5nIEZpZWxkQmFzZSBhcyBiYXNlIGNvbnRyb2wgKGluc3RlYWQgb2YgQ29udHJvbClcblx0Ly8gVE9ETzogSWYgRmllbGRCYXNlIGlzIHVzZWQsIGFkZCAnY2hhbmdlJyBldmVudCAmIGNvcnJlc3BvbmRpbmcgaGFuZGxlciB0byBidWJibGUgaXRcblxuXHRwcml2YXRlIF9maWx0ZXJNb2RlbDogYW55O1xuXHRwcml2YXRlIF9jb25kaXRpb25zT2JzZXJ2ZXI6IGFueTtcblx0cHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRklMVEVSX01PREVMX0FMSUFTID0gXCJmaWx0ZXJWYWx1ZXNcIjtcblxuXHRzdGF0aWMgcmVuZGVyKHJlbmRlck1hbmFnZXI6IFJlbmRlck1hbmFnZXIsIGNvbnRyb2w6IEN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXIpOiB2b2lkIHtcblx0XHRyZW5kZXJNYW5hZ2VyLm9wZW5TdGFydChcImRpdlwiLCBjb250cm9sKTtcblx0XHRyZW5kZXJNYW5hZ2VyLnN0eWxlKFwibWluLWhlaWdodFwiLCBcIjFyZW1cIik7XG5cdFx0cmVuZGVyTWFuYWdlci5zdHlsZShcIndpZHRoXCIsIGNvbnRyb2wud2lkdGgpO1xuXHRcdHJlbmRlck1hbmFnZXIub3BlbkVuZCgpO1xuXHRcdHJlbmRlck1hbmFnZXIucmVuZGVyQ29udHJvbChjb250cm9sLmdldENvbnRlbnQoKSk7IC8vIHJlbmRlciB0aGUgY2hpbGQgQ29udHJvbFxuXHRcdHJlbmRlck1hbmFnZXIuY2xvc2UoXCJkaXZcIik7IC8vIGVuZCBvZiB0aGUgY29tcGxldGUgQ29udHJvbFxuXHR9XG5cblx0LyoqXG5cdCAqIE1hcHMgYW4gYXJyYXkgb2YgZmlsdGVyIHZhbHVlcyB0byBhbiBhcnJheSBvZiBjb25kaXRpb25zLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5IHwgc3RyaW5nfSBmaWx0ZXJWYWx1ZXMgQXJyYXkgb2YgZmlsdGVyIHZhbHVlIGJpbmRpbmdzIG9yIGEgZmlsdGVyIHZhbHVlIHN0cmluZ1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gW29wZXJhdG9yXSBUaGUgb3BlcmF0b3IgdG8gYmUgdXNlZCAob3B0aW9uYWwpIC0gaWYgbm90IHNldCwgdGhlIGRlZmF1bHQgb3BlcmF0b3IgKEVRKSB3aWxsIGJlIHVzZWRcblx0ICogQHByaXZhdGVcblx0ICogQHJldHVybnMge0FycmF5fSBBcnJheSBvZiBmaWx0ZXIgY29uZGl0aW9uc1xuXHQgKi9cblx0c3RhdGljIF9maWx0ZXJWYWx1ZXNUb0NvbmRpdGlvbnMoZmlsdGVyVmFsdWVzOiBhbnkgfCBhbnlbXSwgb3BlcmF0b3I/OiBzdHJpbmcpOiBDb25kaXRpb25PYmplY3RbXSB7XG5cdFx0bGV0IGZvcm1hdE9wdGlvbnM6IEZvcm1hdE9wdGlvbnNUeXBlID0geyBvcGVyYXRvcnM6IFtdIH0sXG5cdFx0XHRjb25kaXRpb25zID0gW107XG5cblx0XHRpZiAob3BlcmF0b3IpIHtcblx0XHRcdGZvcm1hdE9wdGlvbnMgPSB7IG9wZXJhdG9yczogW29wZXJhdG9yXSB9O1xuXHRcdH1cblx0XHRpZiAoZmlsdGVyVmFsdWVzID09PSBcIlwiKSB7XG5cdFx0XHRmaWx0ZXJWYWx1ZXMgPSBbXTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBmaWx0ZXJWYWx1ZXMgPT09IFwib2JqZWN0XCIgJiYgZmlsdGVyVmFsdWVzLmhhc093blByb3BlcnR5KFwib3BlcmF0b3JcIikgJiYgZmlsdGVyVmFsdWVzLmhhc093blByb3BlcnR5KFwidmFsdWVzXCIpKSB7XG5cdFx0XHRmb3JtYXRPcHRpb25zID0geyBvcGVyYXRvcnM6IFtmaWx0ZXJWYWx1ZXMub3BlcmF0b3JdIH07XG5cdFx0XHRmaWx0ZXJWYWx1ZXMgPSBmaWx0ZXJWYWx1ZXMudmFsdWVzO1xuXHRcdH0gZWxzZSBpZiAoZmlsdGVyVmFsdWVzICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGZpbHRlclZhbHVlcyAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgZmlsdGVyVmFsdWVzICE9PSBcInN0cmluZ1wiKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJGaWx0ZXJVdGlscy5qcyNfZmlsdGVyVmFsdWVzVG9Db25kaXRpb25zOiBVbmV4cGVjdGVkIHR5cGUgb2YgaW5wdXQgcGFyYW1ldGVyIHZWYWx1ZXM6IFwiICsgdHlwZW9mIGZpbHRlclZhbHVlcyk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgY29uZGl0aW9uc1R5cGU6IGFueSA9IG5ldyBDb25kaXRpb25zVHlwZShmb3JtYXRPcHRpb25zKTtcblx0XHRjb25zdCBjb25kaXRpb25WYWx1ZXMgPSBBcnJheS5pc0FycmF5KGZpbHRlclZhbHVlcykgPyBmaWx0ZXJWYWx1ZXMgOiBbZmlsdGVyVmFsdWVzXTtcblxuXHRcdC8vIFNob3J0Y3V0IGZvciBvcGVyYXRvciB3aXRob3V0IHZhbHVlcyBhbmQgc2VtYW50aWMgZGF0ZSBvcGVyYXRpb25zXG5cdFx0aWYgKFxuXHRcdFx0dHlwZW9mIG9wZXJhdG9yID09PSBcInN0cmluZ1wiICYmXG5cdFx0XHQoY29uZGl0aW9uVmFsdWVzLmxlbmd0aCA9PT0gMCB8fCBTZW1hbnRpY0RhdGVPcGVyYXRvcnMuZ2V0U2VtYW50aWNEYXRlT3BlcmF0aW9ucygpLmluY2x1ZGVzKG9wZXJhdG9yKSlcblx0XHQpIHtcblx0XHRcdGNvbmRpdGlvbnMgPSBbQ29uZGl0aW9uLmNyZWF0ZUNvbmRpdGlvbihvcGVyYXRvciwgY29uZGl0aW9uVmFsdWVzLCBudWxsLCBudWxsLCBDb25kaXRpb25WYWxpZGF0ZWQuTm90VmFsaWRhdGVkKV07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbmRpdGlvbnMgPSBjb25kaXRpb25WYWx1ZXNcblx0XHRcdFx0Lm1hcCgoY29uZGl0aW9uVmFsdWUpID0+IHtcblx0XHRcdFx0XHRjb25zdCBzdHJpbmdWYWx1ZSA9IGNvbmRpdGlvblZhbHVlPy50b1N0cmluZygpLFxuXHRcdFx0XHRcdFx0cGFyc2VkQ29uZGl0aW9ucyA9IGNvbmRpdGlvbnNUeXBlLnBhcnNlVmFsdWUoc3RyaW5nVmFsdWUsIFwiYW55XCIpO1xuXHRcdFx0XHRcdHJldHVybiBwYXJzZWRDb25kaXRpb25zPy5bMF07XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5maWx0ZXIoKGNvbmRpdGlvblZhbHVlKSA9PiBjb25kaXRpb25WYWx1ZSAhPT0gdW5kZWZpbmVkKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gY29uZGl0aW9ucztcblx0fVxuXG5cdC8qKlxuXHQgKiBNYXBzIGFuIGFycmF5IG9mIGNvbmRpdGlvbnMgdG8gYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBmaWx0ZXIgdmFsdWVzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdFtdfSBjb25kaXRpb25zIEFycmF5IG9mIGZpbHRlciBjb25kaXRpb25zXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBmb3JtYXRPcHRpb25zIEZvcm1hdCBvcHRpb25zIHRoYXQgc3BlY2lmaWVzIGEgY29uZGl0aW9uIHR5cGVcblx0ICogQHByaXZhdGVcblx0ICogQHJldHVybnMge3N0cmluZ30gQ29uY2F0ZW5hdGVkIHN0cmluZyBvZiBmaWx0ZXIgdmFsdWVzXG5cdCAqL1xuXHRzdGF0aWMgX2NvbmRpdGlvbnNUb0ZpbHRlck1vZGVsU3RyaW5nKGNvbmRpdGlvbnM6IG9iamVjdFtdLCBmb3JtYXRPcHRpb25zOiBGb3JtYXRPcHRpb25zVHlwZSk6IHN0cmluZyB7XG5cdFx0Y29uc3QgY29uZGl0aW9uc1R5cGUgPSBuZXcgQ29uZGl0aW9uc1R5cGUoZm9ybWF0T3B0aW9ucyk7XG5cblx0XHRyZXR1cm4gY29uZGl0aW9uc1xuXHRcdFx0Lm1hcCgoY29uZGl0aW9uKSA9PiB7XG5cdFx0XHRcdHJldHVybiBjb25kaXRpb25zVHlwZS5mb3JtYXRWYWx1ZShbY29uZGl0aW9uXSwgXCJhbnlcIikgfHwgXCJcIjtcblx0XHRcdH0pXG5cdFx0XHQuZmlsdGVyKChzdHJpbmdWYWx1ZSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gc3RyaW5nVmFsdWUgIT09IFwiXCI7XG5cdFx0XHR9KVxuXHRcdFx0LmpvaW4oXCIsXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExpc3RlbnMgdG8gZmlsdGVyIG1vZGVsIGNoYW5nZXMgYW5kIHVwZGF0ZXMgd3JhcHBlciBwcm9wZXJ0eSBcImNvbmRpdGlvbnNcIi5cblx0ICpcblx0ICogQHBhcmFtIHtvYmplY3R9IGNoYW5nZUV2ZW50IEV2ZW50IHRyaWdnZXJlZCBieSBhIGZpbHRlciBtb2RlbCBjaGFuZ2Vcblx0ICogQHByaXZhdGVcblx0ICovXG5cdF9oYW5kbGVGaWx0ZXJNb2RlbENoYW5nZShjaGFuZ2VFdmVudDogYW55KTogdm9pZCB7XG5cdFx0Y29uc3QgcHJvcGVydHlQYXRoID0gdGhpcy5nZXRPYmplY3RCaW5kaW5nKFwiZmlsdGVyVmFsdWVzXCIpLmdldFBhdGgoKSxcblx0XHRcdHZhbHVlcyA9IGNoYW5nZUV2ZW50LmdldFNvdXJjZSgpLmdldFByb3BlcnR5KHByb3BlcnR5UGF0aCk7XG5cdFx0dGhpcy51cGRhdGVDb25kaXRpb25zQnlGaWx0ZXJWYWx1ZXModmFsdWVzLCBcIlwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBMaXN0ZW5zIHRvIFwiY29uZGl0aW9uc1wiIGNoYW5nZXMgYW5kIHVwZGF0ZXMgdGhlIGZpbHRlciBtb2RlbC5cblx0ICpcblx0ICogQHBhcmFtIHtvYmplY3R9IGNvbmRpdGlvbnMgRXZlbnQgdHJpZ2dlcmVkIGJ5IGEgXCJjb25kaXRpb25zXCIgY2hhbmdlXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfaGFuZGxlQ29uZGl0aW9uc0NoYW5nZShjb25kaXRpb25zOiBhbnkpOiB2b2lkIHtcblx0XHR0aGlzLnVwZGF0ZUZpbHRlck1vZGVsQnlDb25kaXRpb25zKGNvbmRpdGlvbnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemUgQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlciBjb250cm9sIGFuZCByZWdpc3RlciBvYnNlcnZlci5cblx0ICovXG5cdGluaXQoKTogdm9pZCB7XG5cdFx0c3VwZXIuaW5pdCgpO1xuXHRcdHRoaXMuX2NvbmRpdGlvbnNPYnNlcnZlciA9IG5ldyBNYW5hZ2VkT2JqZWN0T2JzZXJ2ZXIodGhpcy5fb2JzZXJ2ZUNoYW5nZXMuYmluZCh0aGlzKSk7XG5cdFx0dGhpcy5fY29uZGl0aW9uc09ic2VydmVyLm9ic2VydmUodGhpcywge1xuXHRcdFx0cHJvcGVydGllczogW1wiY29uZGl0aW9uc1wiXVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIExpc3RlbnMgdG8gcHJvcGVydHkgY2hhbmdlcy5cblx0ICpcblx0ICogQHBhcmFtIHthbnl9IGNoYW5nZXMgUHJvcGVydHkgY2hhbmdlc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0X29ic2VydmVDaGFuZ2VzKGNoYW5nZXM6IGFueSk6IHZvaWQge1xuXHRcdGlmIChjaGFuZ2VzLm5hbWUgPT09IFwiY29uZGl0aW9uc1wiKSB7XG5cdFx0XHR0aGlzLl9oYW5kbGVDb25kaXRpb25zQ2hhbmdlKGNoYW5nZXMuY3VycmVudCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVycyB0aGUgaW50ZXJuYWwgZmlsdGVyIG1vZGVsIChhbGlhcyAnZmlsdGVyVmFsdWVzJykuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfcmVnaXN0ZXJGaWx0ZXJNb2RlbCgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuX2ZpbHRlck1vZGVsKSB7XG5cdFx0XHR0aGlzLl9maWx0ZXJNb2RlbCA9IG5ldyBKU09OTW9kZWwoKTtcblx0XHRcdHRoaXMuX2ZpbHRlck1vZGVsLmF0dGFjaFByb3BlcnR5Q2hhbmdlKHRoaXMuX2hhbmRsZUZpbHRlck1vZGVsQ2hhbmdlLCB0aGlzKTtcblx0XHRcdHRoaXMuc2V0TW9kZWwodGhpcy5fZmlsdGVyTW9kZWwsIEN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXIuRklMVEVSX01PREVMX0FMSUFTKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgY29udGVudCBvZiB0aGlzIHdyYXBwZXIgY29udHJvbC5cblx0ICpcblx0ICogQHJldHVybnMge3NhcC51aS5jb3JlLkNvbnRyb2x9IFRoZSB3cmFwcGVyIGNvbnRlbnRcblx0ICogQHByaXZhdGVcblx0ICovXG5cdGdldENvbnRlbnQoKTogQ29udHJvbCB7XG5cdFx0dGhpcy5fcmVnaXN0ZXJGaWx0ZXJNb2RlbCgpO1xuXHRcdHJldHVybiB0aGlzLmdldEFnZ3JlZ2F0aW9uKFwiY29udGVudFwiKSBhcyBDb250cm9sO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHZhbHVlIGZvciBjb250cm9sIHByb3BlcnR5ICdjb25kaXRpb25zJy5cblx0ICpcblx0ICogQHJldHVybnMge29iamVjdFtdfSBBcnJheSBvZiBmaWx0ZXIgY29uZGl0aW9uc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0Z2V0Q29uZGl0aW9ucygpOiBvYmplY3RbXSB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0UHJvcGVydHkoXCJjb25kaXRpb25zXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIHZhbHVlIGZvciBjb250cm9sIHByb3BlcnR5ICdjb25kaXRpb25zJy5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheX0gY29uZGl0aW9ucyBBcnJheSBvZiBmaWx0ZXIgY29uZGl0aW9uc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0c2V0Q29uZGl0aW9ucyhjb25kaXRpb25zOiBvYmplY3RbXSk6IHZvaWQge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJjb25kaXRpb25zXCIsIGNvbmRpdGlvbnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGZpbHRlciBtb2RlbCBhbGlhcyAnZmlsdGVyVmFsdWVzJy5cblx0ICpcblx0ICogQHJldHVybnMge3N0cmluZ30gVGhlIGZpbHRlciBtb2RlbFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0Z2V0RmlsdGVyTW9kZWxBbGlhcygpOiBzdHJpbmcge1xuXHRcdHJldHVybiBDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyLkZJTFRFUl9NT0RFTF9BTElBUztcblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIHRoZSBwcm9wZXJ0eSBcImNvbmRpdGlvbnNcIiB3aXRoIGZpbHRlciB2YWx1ZXNcblx0ICogc2VudCBieSBFeHRlbnNpb25BUEkjc2V0RmlsdGVyVmFsdWVzKCkuXG5cdCAqXG5cdCAqIEBwYXJhbSB7YW55fSB2YWx1ZXMgVGhlIGZpbHRlciB2YWx1ZXNcblx0ICogQHBhcmFtIHtzdHJpbmd9IG9wZXJhdG9yIFRoZSBvcGVyYXRvciBuYW1lXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHR1cGRhdGVDb25kaXRpb25zQnlGaWx0ZXJWYWx1ZXModmFsdWVzOiBhbnksIG9wZXJhdG9yOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCBjb25kaXRpb25zID0gQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlci5fZmlsdGVyVmFsdWVzVG9Db25kaXRpb25zKHZhbHVlcywgb3BlcmF0b3IpO1xuXHRcdHRoaXMuc2V0Q29uZGl0aW9ucyhjb25kaXRpb25zKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIGZpbHRlciBtb2RlbCB3aXRoIGNvbmRpdGlvbnNcblx0ICogc2VudCBieSB0aGUge0BsaW5rIHNhcC51aS5tZGMuRmlsdGVyRmllbGQgRmlsdGVyRmllbGR9LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5fSBjb25kaXRpb25zIEFycmF5IG9mIGZpbHRlciBjb25kaXRpb25zXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHR1cGRhdGVGaWx0ZXJNb2RlbEJ5Q29uZGl0aW9ucyhjb25kaXRpb25zOiBhbnlbXSk6IHZvaWQge1xuXHRcdC8vIFdoZW4gdGhlIGZpbHRlciBmaWVsZCBpcyBjcmVhdGVkIHZpYSBcIkFkYXB0IEZpbHRlclwiXG5cdFx0Ly8gdGhpcyBoYW5kbGVyIGlzIGZpcmVkIGJlZm9yZSB0aGUgZmlsdGVyIG1vZGVsIGlzIGNyZWF0ZWRcblx0XHQvLyAtPiBpbiBnZW5lcmFsLCBjcmVhdGUgaXQsIGlmIG5lZWRlZCFcblx0XHQvLyBUT0RPOiBDb25zaWRlciB1c2luZyBtZXRob2QgQ29udHJvbCNjbG9uZSgpIHRvIHJlZ2lzdGVyIGZpbHRlciBtb2RlbFxuXHRcdHRoaXMuX3JlZ2lzdGVyRmlsdGVyTW9kZWwoKTtcblx0XHRjb25zdCBvcGVyYXRvciA9IGNvbmRpdGlvbnNbMF0/Lm9wZXJhdG9yIHx8IFwiXCI7XG5cdFx0Y29uc3QgZm9ybWF0T3B0aW9uczogRm9ybWF0T3B0aW9uc1R5cGUgPSBvcGVyYXRvciAhPT0gXCJcIiA/IHsgb3BlcmF0b3JzOiBbb3BlcmF0b3JdIH0gOiB7IG9wZXJhdG9yczogW10gfTtcblx0XHRpZiAodGhpcy5nZXRCaW5kaW5nQ29udGV4dChDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyLkZJTFRFUl9NT0RFTF9BTElBUykpIHtcblx0XHRcdGNvbnN0IHN0cmluZ1ZhbHVlID0gQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlci5fY29uZGl0aW9uc1RvRmlsdGVyTW9kZWxTdHJpbmcoY29uZGl0aW9ucywgZm9ybWF0T3B0aW9ucyk7XG5cdFx0XHR0aGlzLl9maWx0ZXJNb2RlbC5zZXRQcm9wZXJ0eShcblx0XHRcdFx0dGhpcy5nZXRCaW5kaW5nQ29udGV4dChDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyLkZJTFRFUl9NT0RFTF9BTElBUyk/LmdldFBhdGgoKSxcblx0XHRcdFx0c3RyaW5nVmFsdWVcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gVE9ETzogQ2hlY2ssIGlmIGltcGxlbWVudGF0aW9uIG9mIF9zZXRBcmlhTGFiZWxsZWRCeSgpIGlzIG5lZWRlZCA/XG5cblx0Z2V0QWNjZXNzaWJpbGl0eUluZm8oKTogYW55IHtcblx0XHRjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0cmV0dXJuIGNvbnRlbnQ/LmdldEFjY2Vzc2liaWxpdHlJbmZvPy4oKSB8fCB7fTtcblx0fVxufVxuIl19
371
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXIudHMiXSwibmFtZXMiOlsiQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlciIsImRlZmluZVVJNUNsYXNzIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwicHJvcGVydHkiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwiYWdncmVnYXRpb24iLCJtdWx0aXBsZSIsImlzRGVmYXVsdCIsImV2ZW50IiwicmVuZGVyIiwicmVuZGVyTWFuYWdlciIsImNvbnRyb2wiLCJvcGVuU3RhcnQiLCJzdHlsZSIsIndpZHRoIiwib3BlbkVuZCIsInJlbmRlckNvbnRyb2wiLCJnZXRDb250ZW50IiwiY2xvc2UiLCJfZmlsdGVyVmFsdWVzVG9Db25kaXRpb25zIiwiZmlsdGVyVmFsdWVzIiwib3BlcmF0b3IiLCJmb3JtYXRPcHRpb25zIiwib3BlcmF0b3JzIiwiY29uZGl0aW9ucyIsImhhc093blByb3BlcnR5IiwidmFsdWVzIiwidW5kZWZpbmVkIiwiRXJyb3IiLCJjb25kaXRpb25zVHlwZSIsIkNvbmRpdGlvbnNUeXBlIiwiY29uZGl0aW9uVmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiU2VtYW50aWNEYXRlT3BlcmF0b3JzIiwiZ2V0U2VtYW50aWNEYXRlT3BlcmF0aW9ucyIsImluY2x1ZGVzIiwiQ29uZGl0aW9uIiwiY3JlYXRlQ29uZGl0aW9uIiwiQ29uZGl0aW9uVmFsaWRhdGVkIiwiTm90VmFsaWRhdGVkIiwibWFwIiwiY29uZGl0aW9uVmFsdWUiLCJzdHJpbmdWYWx1ZSIsInRvU3RyaW5nIiwicGFyc2VkQ29uZGl0aW9ucyIsInBhcnNlVmFsdWUiLCJmaWx0ZXIiLCJfY29uZGl0aW9uc1RvRmlsdGVyTW9kZWxTdHJpbmciLCJjb25kaXRpb24iLCJmb3JtYXRWYWx1ZSIsImpvaW4iLCJfaGFuZGxlRmlsdGVyTW9kZWxDaGFuZ2UiLCJjaGFuZ2VFdmVudCIsInByb3BlcnR5UGF0aCIsImdldE9iamVjdEJpbmRpbmciLCJnZXRQYXRoIiwiZ2V0U291cmNlIiwiZ2V0UHJvcGVydHkiLCJ1cGRhdGVDb25kaXRpb25zQnlGaWx0ZXJWYWx1ZXMiLCJfaGFuZGxlQ29uZGl0aW9uc0NoYW5nZSIsInVwZGF0ZUZpbHRlck1vZGVsQnlDb25kaXRpb25zIiwiaW5pdCIsIl9jb25kaXRpb25zT2JzZXJ2ZXIiLCJNYW5hZ2VkT2JqZWN0T2JzZXJ2ZXIiLCJfb2JzZXJ2ZUNoYW5nZXMiLCJiaW5kIiwib2JzZXJ2ZSIsInByb3BlcnRpZXMiLCJfZmlsdGVyTW9kZWwiLCJKU09OTW9kZWwiLCJhdHRhY2hQcm9wZXJ0eUNoYW5nZSIsInNldE1vZGVsIiwiRklMVEVSX01PREVMX0FMSUFTIiwiY2xvbmUiLCJzSWRTdWZmaXgiLCJhTG9jYWxJZHMiLCJjaGFuZ2VzIiwibmFtZSIsImN1cnJlbnQiLCJnZXRBZ2dyZWdhdGlvbiIsImdldENvbmRpdGlvbnMiLCJzZXRDb25kaXRpb25zIiwic2V0UHJvcGVydHkiLCJnZXRGaWx0ZXJNb2RlbEFsaWFzIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRBY2Nlc3NpYmlsaXR5SW5mbyIsImNvbnRlbnQiLCJDb250cm9sIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BOEJxQkEsK0I7QUFUckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtTQUNDQyxjQUFjLENBQUMsc0RBQUQsQyxVQUViQyxrQkFBa0IsQ0FBQywwQkFBRCxDLFVBSWxCQyxRQUFRLENBQUM7QUFBRUMsSUFBQUEsSUFBSSxFQUFFLHFCQUFSO0FBQStCQyxJQUFBQSxZQUFZLEVBQUU7QUFBN0MsR0FBRCxDLFVBR1JGLFFBQVEsQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUUsU0FBUjtBQUFtQkMsSUFBQUEsWUFBWSxFQUFFO0FBQWpDLEdBQUQsQyxVQUdSRixRQUFRLENBQUM7QUFBRUMsSUFBQUEsSUFBSSxFQUFFLFVBQVI7QUFBb0JDLElBQUFBLFlB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QVEsS0FBSyxFQUFiLEdBQWtCO0FBQUVFLFFBQUFBLFNBQVMsRUFBRSxDQUFDRixRQUFEO0FBQWIsT0FBbEIsR0FBOEM7QUFBRUUsUUFBQUEsU0FBUyxFQUFFO0FBQWIsT0FBdkY7O0FBQ0EsVUFBSSxLQUFLK0QsaUJBQUwsQ0FBdUJ2RiwrQkFBK0IsQ0FBQzJFLGtCQUF2RCxDQUFKLEVBQWdGO0FBQUE7O0FBQy9FLFlBQU05QixXQUFXLEdBQUc3QywrQkFBK0IsQ0FBQ2tELDhCQUFoQyxDQUErRHpCLFVBQS9ELEVBQTJFRixhQUEzRSxDQUFwQjs7QUFDQSxhQUFLZ0QsWUFBTCxDQUFrQmMsV0FBbEIsMEJBQ0MsS0FBS0UsaUJBQUwsQ0FBdUJ2RiwrQkFBK0IsQ0FBQzJFLGtCQUF2RCxDQURELDBEQUNDLHNCQUE0RWpCLE9BQTVFLEVBREQsRUFFQ2IsV0FGRDtBQUlBO0FBQ0QsSzs7V0FFRDJDLG9CLEdBQUEsZ0NBQTRCO0FBQUE7O0FBQzNCLFVBQU1DLE9BQU8sR0FBRyxLQUFLdkUsVUFBTCxFQUFoQjtBQUNBLGFBQU8sQ0FBQXVFLE9BQU8sU0FBUCxJQUFBQSxPQUFPLFdBQVAscUNBQUFBLE9BQU8sQ0FBRUQsb0JBQVQscUZBQUFDLE9BQU8sTUFBOEIsRUFBNUM7QUFDQSxLOzs7SUF4UDJEQyxPLFdBeUJwQ2Ysa0IsR0FBcUIsYzs7Ozs7YUF0QkosSSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiAke2NvcHlyaWdodH1cbiAqL1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGRlZmluZVVJNUNsYXNzLCBldmVudCwgaW1wbGVtZW50SW50ZXJmYWNlLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IFNlbWFudGljRGF0ZU9wZXJhdG9ycyBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TZW1hbnRpY0RhdGVPcGVyYXRvcnNcIjtcbmltcG9ydCBNYW5hZ2VkT2JqZWN0T2JzZXJ2ZXIgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RPYnNlcnZlclwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjsgLy9pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL21kYy9maWVsZC9GaWVsZEJhc2VcIjtcbmltcG9ydCB7IElGb3JtQ29udGVudCB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgUmVuZGVyTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyTWFuYWdlclwiO1xuaW1wb3J0IENvbmRpdGlvbiwgeyBDb25kaXRpb25PYmplY3QgfSBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vQ29uZGl0aW9uXCI7XG5pbXBvcnQgQ29uZGl0aW9uVmFsaWRhdGVkIGZyb20gXCJzYXAvdWkvbWRjL2VudW0vQ29uZGl0aW9uVmFsaWRhdGVkXCI7XG5pbXBvcnQgQ29uZGl0aW9uc1R5cGUgZnJvbSBcInNhcC91aS9tZGMvZmllbGQvQ29uZGl0aW9uc1R5cGVcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuXG4vKipcbiAqIFR5cGUgdXNlZCBmb3IgZm9ybWF0IG9wdGlvbnNcbiAqXG4gKiBAdHlwZWRlZiBGb3JtYXRPcHRpb25zVHlwZVxuICovXG50eXBlIEZvcm1hdE9wdGlvbnNUeXBlID0ge1xuXHRvcGVyYXRvcnM6IHN0cmluZ1tdO1xufTtcblxuLyoqXG4gKiBAY2xhc3NcbiAqIENyZWF0ZXMgYW4gPGNvZGU+c2FwLmZlLmNvcmUuY29udHJvbHMuQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlcjwvY29kZT4gb2JqZWN0LlxuICogVGhpcyBpcyB1c2VkIGluIHRoZSB7QGxpbmsgc2FwLnVpLm1kYy5GaWx0ZXJGaWVsZCBGaWx0ZXJGaWVsZH0gYXMgYSBmaWx0ZXIgY29udGVudC5cbiAqIEBleHRlbmRzIHNhcC51aS5jb3JlLkNvbnRyb2xcbiAqIEBwcml2YXRlXG4gKiBAYWxpYXMgc2FwLmZlLmNvcmUuY29udHJvbHMuQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlclxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9scy5DdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyIGV4dGVuZHMgQ29udHJvbCBpbXBsZW1lbnRzIElGb3JtQ29udGVudCB7XG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAudWkuY29yZS5JRm9ybUNvbnRlbnRcIilcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNhbWVsY2FzZVxuXHRfX2ltcGxlbWVudHNfX3NhcF91aV9jb3JlX0lGb3JtQ29udGVudCA9IHRydWU7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAudWkuY29yZS5DU1NTaXplXCIsIGRlZmF1bHRWYWx1ZTogbnVsbCB9KVxuXHR3aWR0aCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRmb3JtRG9Ob3RBZGp1c3RXaWR0aCE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RbXVwiLCBkZWZhdWx0VmFsdWU6IFtdIH0pXG5cdGNvbmRpdGlvbnMhOiBDb25kaXRpb25PYmplY3RbXTtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiwgbXVsdGlwbGU6IGZhbHNlLCBpc0RlZmF1bHQ6IHRydWUgfSlcblx0Y29udGVudCE6IENvbnRyb2w7XG5cblx0QGV2ZW50KClcblx0Y29uZGl0aW9uc0NoYW5nZSE6IEZ1bmN0aW9uO1xuXG5cdC8vIE5vdGU6IEZpZWxkQmFzZSBtaWdodCBiZSB1c2VkIGFzIGJhc2UgY29udHJvbCAoaW5zdGVhZCBvZiBDb250cm9sKSBpbiBhIGxhdGVyIHZlcnNpb247XG5cdC8vIGluIHRoYXQgY2FzZSwgeW91IHNob3VsZCBhZGQgYSAnY2hhbmdlJyBldmVudCBhbmQgYnViYmxlIGl0IHRvIHRoZSBjb3JyZXNwb25kaW5nIGhhbmRsZXJzXG5cblx0cHJpdmF0ZSBfZmlsdGVyTW9kZWw6IGFueTtcblx0cHJpdmF0ZSBfY29uZGl0aW9uc09ic2VydmVyOiBhbnk7XG5cdHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEZJTFRFUl9NT0RFTF9BTElBUyA9IFwiZmlsdGVyVmFsdWVzXCI7XG5cblx0c3RhdGljIHJlbmRlcihyZW5kZXJNYW5hZ2VyOiBSZW5kZXJNYW5hZ2VyLCBjb250cm9sOiBDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyKTogdm9pZCB7XG5cdFx0cmVuZGVyTWFuYWdlci5vcGVuU3RhcnQoXCJkaXZcIiwgY29udHJvbCk7XG5cdFx0cmVuZGVyTWFuYWdlci5zdHlsZShcIm1pbi1oZWlnaHRcIiwgXCIxcmVtXCIpO1xuXHRcdHJlbmRlck1hbmFnZXIuc3R5bGUoXCJ3aWR0aFwiLCBjb250cm9sLndpZHRoKTtcblx0XHRyZW5kZXJNYW5hZ2VyLm9wZW5FbmQoKTtcblx0XHRyZW5kZXJNYW5hZ2VyLnJlbmRlckNvbnRyb2woY29udHJvbC5nZXRDb250ZW50KCkpOyAvLyByZW5kZXIgdGhlIGNoaWxkIENvbnRyb2xcblx0XHRyZW5kZXJNYW5hZ2VyLmNsb3NlKFwiZGl2XCIpOyAvLyBlbmQgb2YgdGhlIGNvbXBsZXRlIENvbnRyb2xcblx0fVxuXG5cdC8qKlxuXHQgKiBNYXBzIGFuIGFycmF5IG9mIGZpbHRlciB2YWx1ZXMgdG8gYW4gYXJyYXkgb2YgY29uZGl0aW9ucy5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheSB8IHN0cmluZ30gZmlsdGVyVmFsdWVzIEFycmF5IG9mIGZpbHRlciB2YWx1ZSBiaW5kaW5ncyBvciBhIGZpbHRlciB2YWx1ZSBzdHJpbmdcblx0ICogQHBhcmFtIHtzdHJpbmd9IFtvcGVyYXRvcl0gVGhlIG9wZXJhdG9yIHRvIGJlIHVzZWQgKG9wdGlvbmFsKSAtIGlmIG5vdCBzZXQsIHRoZSBkZWZhdWx0IG9wZXJhdG9yIChFUSkgd2lsbCBiZSB1c2VkXG5cdCAqIEBwcml2YXRlXG5cdCAqIEByZXR1cm5zIHtBcnJheX0gQXJyYXkgb2YgZmlsdGVyIGNvbmRpdGlvbnNcblx0ICovXG5cdHN0YXRpYyBfZmlsdGVyVmFsdWVzVG9Db25kaXRpb25zKGZpbHRlclZhbHVlczogYW55IHwgYW55W10sIG9wZXJhdG9yPzogc3RyaW5nKTogQ29uZGl0aW9uT2JqZWN0W10ge1xuXHRcdGxldCBmb3JtYXRPcHRpb25zOiBGb3JtYXRPcHRpb25zVHlwZSA9IHsgb3BlcmF0b3JzOiBbXSB9LFxuXHRcdFx0Y29uZGl0aW9ucyA9IFtdO1xuXG5cdFx0aWYgKG9wZXJhdG9yKSB7XG5cdFx0XHRmb3JtYXRPcHRpb25zID0geyBvcGVyYXRvcnM6IFtvcGVyYXRvcl0gfTtcblx0XHR9XG5cdFx0aWYgKGZpbHRlclZhbHVlcyA9PT0gXCJcIikge1xuXHRcdFx0ZmlsdGVyVmFsdWVzID0gW107XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgZmlsdGVyVmFsdWVzID09PSBcIm9iamVjdFwiICYmIGZpbHRlclZhbHVlcy5oYXNPd25Qcm9wZXJ0eShcIm9wZXJhdG9yXCIpICYmIGZpbHRlclZhbHVlcy5oYXNPd25Qcm9wZXJ0eShcInZhbHVlc1wiKSkge1xuXHRcdFx0Zm9ybWF0T3B0aW9ucyA9IHsgb3BlcmF0b3JzOiBbZmlsdGVyVmFsdWVzLm9wZXJhdG9yXSB9O1xuXHRcdFx0ZmlsdGVyVmFsdWVzID0gZmlsdGVyVmFsdWVzLnZhbHVlcztcblx0XHR9IGVsc2UgaWYgKGZpbHRlclZhbHVlcyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBmaWx0ZXJWYWx1ZXMgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIGZpbHRlclZhbHVlcyAhPT0gXCJzdHJpbmdcIikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiRmlsdGVyVXRpbHMuanMjX2ZpbHRlclZhbHVlc1RvQ29uZGl0aW9uczogVW5leHBlY3RlZCB0eXBlIG9mIGlucHV0IHBhcmFtZXRlciB2VmFsdWVzOiBcIiArIHR5cGVvZiBmaWx0ZXJWYWx1ZXMpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGNvbmRpdGlvbnNUeXBlOiBhbnkgPSBuZXcgQ29uZGl0aW9uc1R5cGUoZm9ybWF0T3B0aW9ucyk7XG5cdFx0Y29uc3QgY29uZGl0aW9uVmFsdWVzID0gQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZXMpID8gZmlsdGVyVmFsdWVzIDogW2ZpbHRlclZhbHVlc107XG5cblx0XHQvLyBTaG9ydGN1dCBmb3Igb3BlcmF0b3Igd2l0aG91dCB2YWx1ZXMgYW5kIHNlbWFudGljIGRhdGUgb3BlcmF0aW9uc1xuXHRcdGlmIChcblx0XHRcdHR5cGVvZiBvcGVyYXRvciA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0KGNvbmRpdGlvblZhbHVlcy5sZW5ndGggPT09IDAgfHwgU2VtYW50aWNEYXRlT3BlcmF0b3JzLmdldFNlbWFudGljRGF0ZU9wZXJhdGlvbnMoKS5pbmNsdWRlcyhvcGVyYXRvcikpXG5cdFx0KSB7XG5cdFx0XHRjb25kaXRpb25zID0gW0NvbmRpdGlvbi5jcmVhdGVDb25kaXRpb24ob3BlcmF0b3IsIGNvbmRpdGlvblZhbHVlcywgbnVsbCwgbnVsbCwgQ29uZGl0aW9uVmFsaWRhdGVkLk5vdFZhbGlkYXRlZCldO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25kaXRpb25zID0gY29uZGl0aW9uVmFsdWVzXG5cdFx0XHRcdC5tYXAoKGNvbmRpdGlvblZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgc3RyaW5nVmFsdWUgPSBjb25kaXRpb25WYWx1ZT8udG9TdHJpbmcoKSxcblx0XHRcdFx0XHRcdHBhcnNlZENvbmRpdGlvbnMgPSBjb25kaXRpb25zVHlwZS5wYXJzZVZhbHVlKHN0cmluZ1ZhbHVlLCBcImFueVwiKTtcblx0XHRcdFx0XHRyZXR1cm4gcGFyc2VkQ29uZGl0aW9ucz8uWzBdO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuZmlsdGVyKChjb25kaXRpb25WYWx1ZSkgPT4gY29uZGl0aW9uVmFsdWUgIT09IHVuZGVmaW5lZCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNvbmRpdGlvbnM7XG5cdH1cblxuXHQvKipcblx0ICogTWFwcyBhbiBhcnJheSBvZiBjb25kaXRpb25zIHRvIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgZmlsdGVyIHZhbHVlcy5cblx0ICpcblx0ICogQHBhcmFtIHtvYmplY3RbXX0gY29uZGl0aW9ucyBBcnJheSBvZiBmaWx0ZXIgY29uZGl0aW9uc1xuXHQgKiBAcGFyYW0ge29iamVjdH0gZm9ybWF0T3B0aW9ucyBGb3JtYXQgb3B0aW9ucyB0aGF0IHNwZWNpZmllcyBhIGNvbmRpdGlvbiB0eXBlXG5cdCAqIEBwcml2YXRlXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IENvbmNhdGVuYXRlZCBzdHJpbmcgb2YgZmlsdGVyIHZhbHVlc1xuXHQgKi9cblx0c3RhdGljIF9jb25kaXRpb25zVG9GaWx0ZXJNb2RlbFN0cmluZyhjb25kaXRpb25zOiBvYmplY3RbXSwgZm9ybWF0T3B0aW9uczogRm9ybWF0T3B0aW9uc1R5cGUpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGNvbmRpdGlvbnNUeXBlID0gbmV3IENvbmRpdGlvbnNUeXBlKGZvcm1hdE9wdGlvbnMpO1xuXG5cdFx0cmV0dXJuIGNvbmRpdGlvbnNcblx0XHRcdC5tYXAoKGNvbmRpdGlvbikgPT4ge1xuXHRcdFx0XHRyZXR1cm4gY29uZGl0aW9uc1R5cGUuZm9ybWF0VmFsdWUoW2NvbmRpdGlvbl0sIFwiYW55XCIpIHx8IFwiXCI7XG5cdFx0XHR9KVxuXHRcdFx0LmZpbHRlcigoc3RyaW5nVmFsdWUpID0+IHtcblx0XHRcdFx0cmV0dXJuIHN0cmluZ1ZhbHVlICE9PSBcIlwiO1xuXHRcdFx0fSlcblx0XHRcdC5qb2luKFwiLFwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBMaXN0ZW5zIHRvIGZpbHRlciBtb2RlbCBjaGFuZ2VzIGFuZCB1cGRhdGVzIHdyYXBwZXIgcHJvcGVydHkgXCJjb25kaXRpb25zXCIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBjaGFuZ2VFdmVudCBFdmVudCB0cmlnZ2VyZWQgYnkgYSBmaWx0ZXIgbW9kZWwgY2hhbmdlXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfaGFuZGxlRmlsdGVyTW9kZWxDaGFuZ2UoY2hhbmdlRXZlbnQ6IGFueSk6IHZvaWQge1xuXHRcdGNvbnN0IHByb3BlcnR5UGF0aCA9IHRoaXMuZ2V0T2JqZWN0QmluZGluZyhcImZpbHRlclZhbHVlc1wiKS5nZXRQYXRoKCksXG5cdFx0XHR2YWx1ZXMgPSBjaGFuZ2VFdmVudC5nZXRTb3VyY2UoKS5nZXRQcm9wZXJ0eShwcm9wZXJ0eVBhdGgpO1xuXHRcdHRoaXMudXBkYXRlQ29uZGl0aW9uc0J5RmlsdGVyVmFsdWVzKHZhbHVlcywgXCJcIik7XG5cdH1cblxuXHQvKipcblx0ICogTGlzdGVucyB0byBcImNvbmRpdGlvbnNcIiBjaGFuZ2VzIGFuZCB1cGRhdGVzIHRoZSBmaWx0ZXIgbW9kZWwuXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBjb25kaXRpb25zIEV2ZW50IHRyaWdnZXJlZCBieSBhIFwiY29uZGl0aW9uc1wiIGNoYW5nZVxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0X2hhbmRsZUNvbmRpdGlvbnNDaGFuZ2UoY29uZGl0aW9uczogYW55KTogdm9pZCB7XG5cdFx0dGhpcy51cGRhdGVGaWx0ZXJNb2RlbEJ5Q29uZGl0aW9ucyhjb25kaXRpb25zKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplIEN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXIgY29udHJvbCBhbmQgcmVnaXN0ZXIgb2JzZXJ2ZXIuXG5cdCAqL1xuXHRpbml0KCk6IHZvaWQge1xuXHRcdHN1cGVyLmluaXQoKTtcblx0XHR0aGlzLl9jb25kaXRpb25zT2JzZXJ2ZXIgPSBuZXcgTWFuYWdlZE9iamVjdE9ic2VydmVyKHRoaXMuX29ic2VydmVDaGFuZ2VzLmJpbmQodGhpcykpO1xuXHRcdHRoaXMuX2NvbmRpdGlvbnNPYnNlcnZlci5vYnNlcnZlKHRoaXMsIHtcblx0XHRcdHByb3BlcnRpZXM6IFtcImNvbmRpdGlvbnNcIl1cblx0XHR9KTtcblx0XHR0aGlzLl9maWx0ZXJNb2RlbCA9IG5ldyBKU09OTW9kZWwoKTtcblx0XHR0aGlzLl9maWx0ZXJNb2RlbC5hdHRhY2hQcm9wZXJ0eUNoYW5nZSh0aGlzLl9oYW5kbGVGaWx0ZXJNb2RlbENoYW5nZSwgdGhpcyk7XG5cdFx0dGhpcy5zZXRNb2RlbCh0aGlzLl9maWx0ZXJNb2RlbCwgQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlci5GSUxURVJfTU9ERUxfQUxJQVMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE92ZXJyaWRlcyB7QGxpbmsgc2FwLnVpLmNvcmUuQ29udHJvbCNjbG9uZSBDb250cm9sLmNsb25lfSB0byBjbG9uZSBhZGRpdGlvbmFsXG5cdCAqIGludGVybmFsIHN0YXRlcy5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IFtzSWRTdWZmaXhdIEEgc3VmZml4IHRvIGJlIGFwcGVuZGVkIHRvIHRoZSBjbG9uZWQgY29udHJvbCBpZFxuXHQgKiBAcGFyYW0ge3N0cmluZ1tdfSBbYUxvY2FsSWRzXSBBbiBhcnJheSBvZiBsb2NhbCBJRHMgd2l0aGluIHRoZSBjbG9uZWQgaGllcmFyY2h5IChpbnRlcm5hbGx5IHVzZWQpXG5cdCAqIEByZXR1cm5zIHtDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyfSBSZWZlcmVuY2UgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgY2xvbmVcblx0ICogQHByb3RlY3RlZFxuXHQgKi9cblx0Y2xvbmUoc0lkU3VmZml4OiBzdHJpbmcgfCB1bmRlZmluZWQsIGFMb2NhbElkczogc3RyaW5nW10gfCB1bmRlZmluZWQpOiB0aGlzIHtcblx0XHRjb25zdCBjbG9uZSA9IHN1cGVyLmNsb25lKHNJZFN1ZmZpeCwgYUxvY2FsSWRzKTtcblx0XHQvLyBEdXJpbmcgY2xvbmluZywgdGhlIG9sZCBtb2RlbCB3aWxsIGJlIGNvcGllZCBhbmQgb3ZlcndyaXRlcyBhbnkgbmV3IG1vZGVsIChzYW1lIGFsaWFzKSB0aGF0XG5cdFx0Ly8geW91IGludHJvZHVjZSBkdXJpbmcgaW5pdCgpOyBoZW5jZSB5b3UgbmVlZCB0byBvdmVyd3JpdGUgaXQgYWdhaW4gYnkgdGhlIG5ldyBvbmUgdGhhdCB5b3UndmVcblx0XHQvLyBjcmVhdGVkIGR1cmluZyBpbml0KCkgKGkuZS4gY2xvbmUuX2ZpbHRlck1vZGVsKTsgdGhhdCBzdGFuZGFyZCBiZWhhdmlvdXIgb2Ygc3VwZXIuY2xvbmUoKVxuXHRcdC8vIGNhbid0IGV2ZW4gYmUgc3VwcHJlc3NlZCBpbiBhbiBvd24gY29uc3RydWN0b3I7IGZvciBhIGRldGFpbGVkIGludmVzdGlnYXRpb24gb2YgdGhlIGNsb25pbmcsXG5cdFx0Ly8gcGxlYXNlIG92ZXJ3cml0ZSB0aGUgc2V0TW9kZWwoKSBtZXRob2QgYW5kIGNoZWNrIHRoZSBsaXN0IG9mIGNhbGxlcnMgYW5kIHN0ZXBzIGluZHVjZWQgYnkgdGhlbS5cblx0XHRjbG9uZS5zZXRNb2RlbChjbG9uZS5fZmlsdGVyTW9kZWwsIEN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXIuRklMVEVSX01PREVMX0FMSUFTKTtcblx0XHRyZXR1cm4gY2xvbmU7XG5cdH1cblxuXHQvKipcblx0ICogTGlzdGVucyB0byBwcm9wZXJ0eSBjaGFuZ2VzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge2FueX0gY2hhbmdlcyBQcm9wZXJ0eSBjaGFuZ2VzXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfb2JzZXJ2ZUNoYW5nZXMoY2hhbmdlczogYW55KTogdm9pZCB7XG5cdFx0aWYgKGNoYW5nZXMubmFtZSA9PT0gXCJjb25kaXRpb25zXCIpIHtcblx0XHRcdHRoaXMuX2hhbmRsZUNvbmRpdGlvbnNDaGFuZ2UoY2hhbmdlcy5jdXJyZW50KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgY29udGVudCBvZiB0aGlzIHdyYXBwZXIgY29udHJvbC5cblx0ICpcblx0ICogQHJldHVybnMge3NhcC51aS5jb3JlLkNvbnRyb2x9IFRoZSB3cmFwcGVyIGNvbnRlbnRcblx0ICogQHByaXZhdGVcblx0ICovXG5cdGdldENvbnRlbnQoKTogQ29udHJvbCB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0QWdncmVnYXRpb24oXCJjb250ZW50XCIpIGFzIENvbnRyb2w7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgdmFsdWUgZm9yIGNvbnRyb2wgcHJvcGVydHkgJ2NvbmRpdGlvbnMnLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7b2JqZWN0W119IEFycmF5IG9mIGZpbHRlciBjb25kaXRpb25zXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRnZXRDb25kaXRpb25zKCk6IG9iamVjdFtdIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRQcm9wZXJ0eShcImNvbmRpdGlvbnNcIik7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgdmFsdWUgZm9yIGNvbnRyb2wgcHJvcGVydHkgJ2NvbmRpdGlvbnMnLlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdFtdfSBbY29uZGl0aW9uc10gQXJyYXkgb2YgZmlsdGVyIGNvbmRpdGlvbnNcblx0ICogQHJldHVybnMge0N1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXJ9IFJlZmVyZW5jZSB0byB0aGlzIHdyYXBwZXJcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHNldENvbmRpdGlvbnMoY29uZGl0aW9uczogb2JqZWN0W10pOiB0aGlzIHtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwiY29uZGl0aW9uc1wiLCBjb25kaXRpb25zIHx8IFtdKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBmaWx0ZXIgbW9kZWwgYWxpYXMgJ2ZpbHRlclZhbHVlcycuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBmaWx0ZXIgbW9kZWxcblx0ICogQHByaXZhdGVcblx0ICovXG5cdGdldEZpbHRlck1vZGVsQWxpYXMoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlci5GSUxURVJfTU9ERUxfQUxJQVM7XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgcHJvcGVydHkgXCJjb25kaXRpb25zXCIgd2l0aCBmaWx0ZXIgdmFsdWVzXG5cdCAqIHNlbnQgYnkgRXh0ZW5zaW9uQVBJI3NldEZpbHRlclZhbHVlcygpLlxuXHQgKlxuXHQgKiBAcGFyYW0ge2FueX0gdmFsdWVzIFRoZSBmaWx0ZXIgdmFsdWVzXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBbb3BlcmF0b3JdIFRoZSBvcGVyYXRvciBuYW1lXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHR1cGRhdGVDb25kaXRpb25zQnlGaWx0ZXJWYWx1ZXModmFsdWVzOiBhbnksIG9wZXJhdG9yPzogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgY29uZGl0aW9ucyA9IEN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXIuX2ZpbHRlclZhbHVlc1RvQ29uZGl0aW9ucyh2YWx1ZXMsIG9wZXJhdG9yKTtcblx0XHR0aGlzLnNldENvbmRpdGlvbnMoY29uZGl0aW9ucyk7XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlcyBmaWx0ZXIgbW9kZWwgd2l0aCBjb25kaXRpb25zXG5cdCAqIHNlbnQgYnkgdGhlIHtAbGluayBzYXAudWkubWRjLkZpbHRlckZpZWxkIEZpbHRlckZpZWxkfS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheX0gY29uZGl0aW9ucyBBcnJheSBvZiBmaWx0ZXIgY29uZGl0aW9uc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0dXBkYXRlRmlsdGVyTW9kZWxCeUNvbmRpdGlvbnMoY29uZGl0aW9uczogYW55W10pOiB2b2lkIHtcblx0XHRjb25zdCBvcGVyYXRvciA9IGNvbmRpdGlvbnNbMF0/Lm9wZXJhdG9yIHx8IFwiXCI7XG5cdFx0Y29uc3QgZm9ybWF0T3B0aW9uczogRm9ybWF0T3B0aW9uc1R5cGUgPSBvcGVyYXRvciAhPT0gXCJcIiA/IHsgb3BlcmF0b3JzOiBbb3BlcmF0b3JdIH0gOiB7IG9wZXJhdG9yczogW10gfTtcblx0XHRpZiAodGhpcy5nZXRCaW5kaW5nQ29udGV4dChDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyLkZJTFRFUl9NT0RFTF9BTElBUykpIHtcblx0XHRcdGNvbnN0IHN0cmluZ1ZhbHVlID0gQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlci5fY29uZGl0aW9uc1RvRmlsdGVyTW9kZWxTdHJpbmcoY29uZGl0aW9ucywgZm9ybWF0T3B0aW9ucyk7XG5cdFx0XHR0aGlzLl9maWx0ZXJNb2RlbC5zZXRQcm9wZXJ0eShcblx0XHRcdFx0dGhpcy5nZXRCaW5kaW5nQ29udGV4dChDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyLkZJTFRFUl9NT0RFTF9BTElBUyk/LmdldFBhdGgoKSxcblx0XHRcdFx0c3RyaW5nVmFsdWVcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0Z2V0QWNjZXNzaWJpbGl0eUluZm8oKTogYW55IHtcblx0XHRjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0cmV0dXJuIGNvbnRlbnQ/LmdldEFjY2Vzc2liaWxpdHlJbmZvPy4oKSB8fCB7fTtcblx0fVxufVxuIl19