@sapui5/sap.fe.macros 1.124.2 → 1.124.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.macros",
3
- "version": "1.124.2",
3
+ "version": "1.124.3",
4
4
  "description": "SAPUI5 Library sap.fe.macros",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -6,7 +6,7 @@
6
6
  SAP UI development toolkit for HTML5 (SAPUI5)
7
7
  (c) Copyright 2009-2021 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.124.2</version>
9
+ <version>1.124.3</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.macros</documentation>
12
12
 
@@ -2,7 +2,7 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2024 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/BuildingBlockBase", "sap/fe/core/controllerextensions/BusyLocker", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/templating/PropertyHelper", "sap/fe/macros/filter/FilterUtils", "sap/m/Button", "sap/m/FlexBox", "sap/m/Input", "sap/m/Label", "sap/m/MessageStrip", "sap/m/Token", "sap/m/Tokenizer", "sap/m/VBox", "sap/m/library", "sap/ui/core/Element", "sap/ui/model/json/JSONModel", "sap/ui/performance/trace/FESRHelper", "sap/fe/core/jsx-runtime/jsx", "sap/fe/core/jsx-runtime/jsxs"], function (Log, BuildingBlockBase, BusyLocker, ClassSupport, PropertyHelper, FilterUtils, Button, FlexBox, Input, Label, MessageStrip, Token, Tokenizer, VBox, library, UI5Element, JSONModel, FESRHelper, _jsx, _jsxs) {
5
+ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/BuildingBlockBase", "sap/fe/core/controllerextensions/BusyLocker", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/templating/PropertyHelper", "sap/fe/macros/filter/FilterUtils", "sap/fe/macros/filterBar/DraftEditState", "sap/m/Button", "sap/m/FlexBox", "sap/m/Input", "sap/m/Label", "sap/m/MessageStrip", "sap/m/Token", "sap/m/Tokenizer", "sap/m/VBox", "sap/m/library", "sap/ui/core/Element", "sap/ui/model/json/JSONModel", "sap/ui/performance/trace/FESRHelper", "sap/fe/core/jsx-runtime/jsx", "sap/fe/core/jsx-runtime/jsxs"], function (Log, BuildingBlockBase, BusyLocker, ClassSupport, ModelHelper, PropertyHelper, FilterUtils, DraftEditState, Button, FlexBox, Input, Label, MessageStrip, Token, Tokenizer, VBox, library, UI5Element, JSONModel, FESRHelper, _jsx, _jsxs) {
6
6
  "use strict";
7
7
 
8
8
  var _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3;
@@ -36,12 +36,14 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/BuildingBlockBase", "
36
36
  function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
37
37
  function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
38
38
  function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.'); }
39
- let EasyFilterBar = (
39
+ // Editing status filter field key
40
+ const $editState = "$editState";
41
+
40
42
  /**
41
43
  * Delivery for beta release for the easy filter feature.
42
44
  * @experimental
43
45
  */
44
- _dec = defineUI5Class("sap.fe.macros.EasyFilterBar"), _dec2 = association({
46
+ let EasyFilterBar = (_dec = defineUI5Class("sap.fe.macros.EasyFilterBar"), _dec2 = association({
45
47
  type: "sap.fe.macros.filterBar.FilterBarAPI"
46
48
  }), _dec3 = property({
47
49
  type: "string"
@@ -75,7 +77,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/BuildingBlockBase", "
75
77
  const metaModel = (_owner$preprocessorCo = owner.preprocessorContext) === null || _owner$preprocessorCo === void 0 ? void 0 : _owner$preprocessorCo.models.metaModel;
76
78
  const filterBar = UI5Element.getElementById(this.filterBar);
77
79
  const fields = FilterUtils.getConvertedFilterFields(filterBar, undefined, undefined, metaModel);
78
- return fields.filter(field => field.availability !== "Hidden") // Exclude hidden filter fields. It is not possible to set a value for hidden filters, and users would not understand anyway as they cannot see these values.
80
+ const result = fields.filter(field => field.availability !== "Hidden") // Exclude hidden filter fields. It is not possible to set a value for hidden filters, and users would not understand anyway as they cannot see these values.
79
81
  .map(field => {
80
82
  var _propertyObject$targe;
81
83
  const propertyObject = this.getDataModelObjectPath(field.annotationPath);
@@ -99,6 +101,29 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/BuildingBlockBase", "
99
101
  codeList: codeList
100
102
  };
101
103
  });
104
+
105
+ // [Editing Status]
106
+ const editingStatusFilterFieldInfo = FilterUtils.getFilterPropertyInfo(filterBar).find(propertyInfo => propertyInfo.key === $editState && propertyInfo.availability !== "Hidden");
107
+ if (editingStatusFilterFieldInfo) {
108
+ // Assemble the code list for the editing status filter values:
109
+ const props = new JSONModel({
110
+ isDraftCollaborative: ModelHelper.isCollaborationDraftSupported(metaModel)
111
+ }).createBindingContext("/");
112
+ const editingStatusCodeList = DraftEditState.getEditStatesContext(props).getObject("/").map(state => ({
113
+ value: state.id,
114
+ description: state.display
115
+ }));
116
+ result.push({
117
+ name: $editState,
118
+ label: editingStatusFilterFieldInfo.label,
119
+ dataType: "Edm.String",
120
+ required: false,
121
+ filterable: true,
122
+ sortable: false,
123
+ codeList: editingStatusCodeList
124
+ });
125
+ }
126
+ return result;
102
127
  };
103
128
  _proto.getCodeListForProperty = async function getCodeListForProperty(key, propertyPath) {
104
129
  // Fetch and cache the codeList for valueListWithFixedValues
@@ -174,14 +199,24 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/BuildingBlockBase", "
174
199
  Log.debug("Filter criteria generated: ", JSON.stringify(easyFilterResult.data.filter, null, 2));
175
200
 
176
201
  // Validate and apply the filter criteria
177
- await filterBarAPI._clearFilterValuesWithOptions(filterBar);
202
+
203
+ // If the returned conditions include the $editState filter, we need to clear the existing filter values for it (otherwise the new values will be added to the existing ones)
204
+ const clearEditFilter = easyFilterResult.data.filter.some(filterValue => filterValue.name === $editState);
205
+ await filterBarAPI._clearFilterValuesWithOptions(filterBar, {
206
+ clearEditFilter
207
+ });
178
208
  const tokens = [];
179
209
  for (const filterValue of easyFilterResult.data.filter) {
180
210
  tokens.push({
181
211
  key: filterValue.name,
182
212
  text: `${filterValue.operator} ${filterValue.values}`
183
213
  });
184
- await FilterUtils.addFilterValues(filterBarAPI.content, filterValue.name, filterValue.operator, filterValue.values);
214
+ if (filterValue.name === $editState) {
215
+ // convert the $editState filter condition
216
+ await FilterUtils.addFilterValues(filterBarAPI.content, $editState, "DRAFT_EDIT_STATE", filterValue.values);
217
+ } else {
218
+ await FilterUtils.addFilterValues(filterBarAPI.content, filterValue.name, filterValue.operator, filterValue.values);
219
+ }
185
220
  }
186
221
  await filterBarAPI.triggerSearch();
187
222
  this.stateModel.setProperty("/tokens", tokens);
@@ -299,4 +334,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/BuildingBlockBase", "
299
334
  _exports = EasyFilterBar;
300
335
  return _exports;
301
336
  }, false);
302
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFYXN5RmlsdGVyQmFyIiwiZGVmaW5lVUk1Q2xhc3MiLCJhc3NvY2lhdGlvbiIsInR5cGUiLCJwcm9wZXJ0eSIsImRlZmluZVJlZmVyZW5jZSIsInByb3BlcnRpZXMiLCJvdGhlcnMiLCJmZXNyU3RlcE5hbWUiLCJlYXN5ZmlsdGVyIiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJwcmVwYXJlRmVhdHVyZSIsInRoZW4iLCJvbk1ldGFkYXRhQXZhaWxhYmxlIiwiX2ZldGNoZWRDb2RlTGlzdCIsInN0YXRlTW9kZWwiLCJKU09OTW9kZWwiLCJzaG93UmVzdWx0Iiwic2V0TW9kZWwiLCJmaWx0ZXJCYXJNZXRhZGF0YSIsInByZXBhcmVGaWx0ZXJCYXJNZXRhZGF0YSIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50Iiwib3duZXIiLCJfZ2V0T3duZXIiLCJtZXRhTW9kZWwiLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwibW9kZWxzIiwiZmlsdGVyQmFyIiwiVUk1RWxlbWVudCIsImdldEVsZW1lbnRCeUlkIiwiZmllbGRzIiwiRmlsdGVyVXRpbHMiLCJnZXRDb252ZXJ0ZWRGaWx0ZXJGaWVsZHMiLCJ1bmRlZmluZWQiLCJmaWx0ZXIiLCJmaWVsZCIsImF2YWlsYWJpbGl0eSIsIm1hcCIsInByb3BlcnR5T2JqZWN0IiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsImFubm90YXRpb25QYXRoIiwiY29kZUxpc3QiLCJ0YXJnZXRPYmplY3QiLCJoYXNDb2RlTGlzdCIsImhhc1ZhbHVlSGVscFdpdGhGaXhlZFZhbHVlcyIsImtleSIsImdldENvZGVMaXN0Rm9yUHJvcGVydHkiLCJuYW1lIiwibGFiZWwiLCJkYXRhVHlwZSIsInJlcXVpcmVkIiwiZmlsdGVyYWJsZSIsInNvcnRhYmxlIiwiaXNQYXJhbWV0ZXIiLCJwcm9wZXJ0eVBhdGgiLCJvZGF0YU1vZGVsIiwiZ2V0TW9kZWwiLCJ2YWx1ZUxpc3QiLCJnZXRNZXRhTW9kZWwiLCJyZXF1ZXN0VmFsdWVMaXN0SW5mbyIsImRlZmF1bHRWYWx1ZUxpc3QiLCJzZWxlY3QiLCJQYXJhbWV0ZXJzIiwicGFyYW0iLCJWYWx1ZUxpc3RQcm9wZXJ0eSIsImpvaW4iLCJsaXN0QmluZGluZyIsIiRtb2RlbCIsImJpbmRMaXN0IiwiQ29sbGVjdGlvblBhdGgiLCIkc2VsZWN0IiwiZGF0YSIsInJlcXVlc3RDb250ZXh0cyIsInZhbHVlUHJvcGVydHkiLCJkZXNjcmlwdGlvblByb3BlcnR5IiwicGFyYW1ldGVyIiwiTG9jYWxEYXRhUHJvcGVydHkiLCIkUHJvcGVydHlQYXRoIiwiZmlsdGVyR3JvdXBWYWx1ZXMiLCJkYXR1bSIsImRhdGFvYmoiLCJnZXRPYmplY3QiLCJwdXNoIiwidmFsdWUiLCJkZXNjcmlwdGlvbiIsImNvZGVMaXN0UHJvcGVydHkiLCJmaW5kIiwib25Hb1ByZXNzIiwibWFnaWNRdWVyeSIsInNlYXJjaElucHV0IiwiY3VycmVudCIsImdldFZhbHVlIiwic2V0VmFsdWVTdGF0ZVRleHQiLCJzZXRWYWx1ZVN0YXRlIiwiZmlsdGVyQmFyQVBJIiwiZ2V0UGFyZW50IiwiX2NsZWFyRmlsdGVyVmFsdWVzV2l0aE9wdGlvbnMiLCJ0cmlnZ2VyU2VhcmNoIiwidWlNb2RlbCIsIkJ1c3lMb2NrZXIiLCJsb2NrIiwiZWFzeUZpbHRlck1ldGFkYXRhIiwidmVyc2lvbiIsImVudGl0eVNldCIsImNvbnRleHRQYXRoIiwiZ2V0T3duZXJDb250ZXh0UGF0aCIsImVhc3lGaWx0ZXJSZXN1bHQiLCJlYXN5RmlsdGVyIiwic3VjY2VzcyIsInVuY2xlYXIiLCJMb2ciLCJkZWJ1ZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0b2tlbnMiLCJmaWx0ZXJWYWx1ZSIsInRleHQiLCJvcGVyYXRvciIsInZhbHVlcyIsImFkZEZpbHRlclZhbHVlcyIsInNldFByb3BlcnR5IiwibWVzc2FnZSIsImVycm9yIiwidW5sb2NrIiwib25Ub2tlbkRlbGV0ZSIsIl9lIiwib25RdWVyeUNoYW5nZWQiLCJmaXJlRmlsdGVyc0NoYW5nZWQiLCJjb25kaXRpb25zQmFzZWQiLCJ2Qm94IiwiZSIsIkJ1dHRvblR5cGUiLCJFbXBoYXNpemVkIiwiZXZlbnQiLCJGRVNSSGVscGVyIiwic2V0U2VtYW50aWNTdGVwbmFtZSIsImdldFNvdXJjZSIsImlkeCIsImN0eCIsIm9iamVjdCIsImFkZEV2ZW50RGVsZWdhdGUiLCJvbmtleXVwIiwib25mb2N1c2luIiwiZ2V0VmFsdWVTdGF0ZSIsInJlcXVpcmVkRmllbGRzIiwicmVxdWlyZWRGaWVsZHNUZXh0IiwibGVuZ3RoIiwiQnVpbGRpbmdCbG9ja0Jhc2UiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkVhc3lGaWx0ZXJCYXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2tCYXNlIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrQmFzZVwiO1xuaW1wb3J0IEJ1c3lMb2NrZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0J1c3lMb2NrZXJcIjtcbmltcG9ydCB7IGFzc29jaWF0aW9uLCBkZWZpbmVSZWZlcmVuY2UsIGRlZmluZVVJNUNsYXNzLCBwcm9wZXJ0eSwgdHlwZSBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSBcInNhcC9mZS9jb3JlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IHsgaGFzVmFsdWVIZWxwV2l0aEZpeGVkVmFsdWVzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcbmltcG9ydCBGaWx0ZXJVdGlscyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyVXRpbHNcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhckFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyQmFyQVBJXCI7XG5pbXBvcnQgdHlwZSB7IEJ1dHRvbiRQcmVzc0V2ZW50IH0gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgRmxleEJveCBmcm9tIFwic2FwL20vRmxleEJveFwiO1xuaW1wb3J0IElucHV0IGZyb20gXCJzYXAvbS9JbnB1dFwiO1xuaW1wb3J0IHR5cGUgeyBJbnB1dEJhc2UkQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL20vSW5wdXRCYXNlXCI7XG5pbXBvcnQgTGFiZWwgZnJvbSBcInNhcC9tL0xhYmVsXCI7XG5pbXBvcnQgTWVzc2FnZVN0cmlwIGZyb20gXCJzYXAvbS9NZXNzYWdlU3RyaXBcIjtcbmltcG9ydCBUb2tlbiBmcm9tIFwic2FwL20vVG9rZW5cIjtcbmltcG9ydCBUb2tlbml6ZXIgZnJvbSBcInNhcC9tL1Rva2VuaXplclwiO1xuaW1wb3J0IFZCb3ggZnJvbSBcInNhcC9tL1ZCb3hcIjtcbmltcG9ydCB7IEJ1dHRvblR5cGUgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL3VpL21kYy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgRkVTUkhlbHBlciBmcm9tIFwic2FwL3VpL3BlcmZvcm1hbmNlL3RyYWNlL0ZFU1JIZWxwZXJcIjtcbmltcG9ydCB0eXBlIEVhc3lGaWx0ZXIgZnJvbSBcInV4L2VuZy9maW9yaWFpL3JldXNlL2Vhc3lmaWx0ZXIvRWFzeUZpbHRlclwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eU1ldGFkYXRhIGFzIEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhIH0gZnJvbSBcInV4L2VuZy9maW9yaWFpL3JldXNlL2Vhc3lmaWx0ZXIvRWFzeUZpbHRlclwiO1xuXG4vKipcbiAqIERlbGl2ZXJ5IGZvciBiZXRhIHJlbGVhc2UgZm9yIHRoZSBlYXN5IGZpbHRlciBmZWF0dXJlLlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLkVhc3lGaWx0ZXJCYXJcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc3lGaWx0ZXJCYXIgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrQmFzZSB7XG5cdGZlc3JTdGVwTmFtZSA9IFwiZmU0OmFpOnNlYXJjaFwiO1xuXG5cdEBhc3NvY2lhdGlvbih7IHR5cGU6IFwic2FwLmZlLm1hY3Jvcy5maWx0ZXJCYXIuRmlsdGVyQmFyQVBJXCIgfSlcblx0ZmlsdGVyQmFyITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0Y29udGV4dFBhdGg/OiBzdHJpbmc7XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdHNlYXJjaElucHV0ITogUmVmPElucHV0PjtcblxuXHRlYXN5ZmlsdGVyOiBQcm9taXNlPHR5cGVvZiBFYXN5RmlsdGVyPiB8IHVuZGVmaW5lZDtcblxuXHRfZmV0Y2hlZENvZGVMaXN0ITogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cblx0cHJpdmF0ZSBmaWx0ZXJCYXJNZXRhZGF0YSE6IEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhW107XG5cblx0cHJpdmF0ZSBzdGF0ZU1vZGVsITogSlNPTk1vZGVsO1xuXG5cdGNvbnN0cnVjdG9yKHByb3BlcnRpZXM6ICRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8RWFzeUZpbHRlckJhcj4sIG90aGVycz86ICRDb250cm9sU2V0dGluZ3MpIHtcblx0XHRzdXBlcihwcm9wZXJ0aWVzLCBvdGhlcnMpO1xuXHRcdHRoaXMuZWFzeWZpbHRlciA9IHRoaXMuZ2V0QXBwQ29tcG9uZW50KClcblx0XHRcdD8uZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKVxuXHRcdFx0LnByZXBhcmVGZWF0dXJlKFwiTWFnaWNGaWx0ZXJpbmdcIilcblx0XHRcdC50aGVuKGFzeW5jICgpID0+IGltcG9ydChcInV4L2VuZy9maW9yaWFpL3JldXNlL2Vhc3lmaWx0ZXIvRWFzeUZpbHRlclwiKSk7XG5cdH1cblxuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKCk6IHZvaWQge1xuXHRcdHRoaXMuX2ZldGNoZWRDb2RlTGlzdCA/Pz0ge307XG5cdFx0dGhpcy5zdGF0ZU1vZGVsID0gbmV3IEpTT05Nb2RlbCh7IHNob3dSZXN1bHQ6IGZhbHNlIH0pO1xuXHRcdHRoaXMuc2V0TW9kZWwodGhpcy5zdGF0ZU1vZGVsLCBcInN0YXRlXCIpO1xuXHRcdHRoaXMuZmlsdGVyQmFyTWV0YWRhdGEgPSB0aGlzLnByZXBhcmVGaWx0ZXJCYXJNZXRhZGF0YSgpO1xuXHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHR9XG5cblx0cHJlcGFyZUZpbHRlckJhck1ldGFkYXRhKCk6IEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhW10ge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKSE7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gb3duZXIucHJlcHJvY2Vzc29yQ29udGV4dD8ubW9kZWxzLm1ldGFNb2RlbCBhcyBPRGF0YU1ldGFNb2RlbDtcblx0XHRjb25zdCBmaWx0ZXJCYXIgPSBVSTVFbGVtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuZmlsdGVyQmFyKSBhcyBGaWx0ZXJCYXI7XG5cdFx0Y29uc3QgZmllbGRzID0gRmlsdGVyVXRpbHMuZ2V0Q29udmVydGVkRmlsdGVyRmllbGRzKGZpbHRlckJhciwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIG1ldGFNb2RlbCk7XG5cblx0XHRyZXR1cm4gZmllbGRzXG5cdFx0XHQuZmlsdGVyKChmaWVsZCkgPT4gZmllbGQuYXZhaWxhYmlsaXR5ICE9PSBcIkhpZGRlblwiKSAvLyBFeGNsdWRlIGhpZGRlbiBmaWx0ZXIgZmllbGRzLiBJdCBpcyBub3QgcG9zc2libGUgdG8gc2V0IGEgdmFsdWUgZm9yIGhpZGRlbiBmaWx0ZXJzLCBhbmQgdXNlcnMgd291bGQgbm90IHVuZGVyc3RhbmQgYW55d2F5IGFzIHRoZXkgY2Fubm90IHNlZSB0aGVzZSB2YWx1ZXMuXG5cdFx0XHQubWFwKChmaWVsZCk6IEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhID0+IHtcblx0XHRcdFx0Y29uc3QgcHJvcGVydHlPYmplY3QgPSB0aGlzLmdldERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+KGZpZWxkLmFubm90YXRpb25QYXRoKTtcblx0XHRcdFx0bGV0IGNvZGVMaXN0O1xuXHRcdFx0XHRpZiAocHJvcGVydHlPYmplY3Q/LnRhcmdldE9iamVjdCkge1xuXHRcdFx0XHRcdGNvbnN0IGhhc0NvZGVMaXN0ID0gaGFzVmFsdWVIZWxwV2l0aEZpeGVkVmFsdWVzKHByb3BlcnR5T2JqZWN0Py50YXJnZXRPYmplY3QpO1xuXHRcdFx0XHRcdGlmIChoYXNDb2RlTGlzdCkge1xuXHRcdFx0XHRcdFx0Y29kZUxpc3QgPSB0aGlzLl9mZXRjaGVkQ29kZUxpc3RbZmllbGQua2V5XTtcblx0XHRcdFx0XHRcdGlmICghY29kZUxpc3QpIHtcblx0XHRcdFx0XHRcdFx0Y29kZUxpc3QgPSBhc3luYyAoKTogUHJvbWlzZTx1bmtub3duPiA9PiB0aGlzLmdldENvZGVMaXN0Rm9yUHJvcGVydHkoZmllbGQua2V5LCBmaWVsZC5hbm5vdGF0aW9uUGF0aCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0bmFtZTogZmllbGQua2V5LFxuXHRcdFx0XHRcdGxhYmVsOiBmaWVsZC5sYWJlbCxcblx0XHRcdFx0XHRkYXRhVHlwZTogcHJvcGVydHlPYmplY3Q/LnRhcmdldE9iamVjdD8udHlwZSxcblx0XHRcdFx0XHRyZXF1aXJlZDogISFmaWVsZC5yZXF1aXJlZCxcblx0XHRcdFx0XHRmaWx0ZXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHNvcnRhYmxlOiAhZmllbGQuaXNQYXJhbWV0ZXIsXG5cdFx0XHRcdFx0Y29kZUxpc3Q6IGNvZGVMaXN0XG5cdFx0XHRcdH0gYXMgRWFzeUZpbHRlclByb3BlcnR5TWV0YWRhdGE7XG5cdFx0XHR9KTtcblx0fVxuXG5cdGFzeW5jIGdldENvZGVMaXN0Rm9yUHJvcGVydHkoa2V5OiBzdHJpbmcsIHByb3BlcnR5UGF0aDogc3RyaW5nKTogUHJvbWlzZTx1bmtub3duPiB7XG5cdFx0Ly8gRmV0Y2ggYW5kIGNhY2hlIHRoZSBjb2RlTGlzdCBmb3IgdmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzXG5cdFx0Y29uc3Qgb2RhdGFNb2RlbCA9IHRoaXMuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsO1xuXHRcdGNvbnN0IHZhbHVlTGlzdCA9IGF3YWl0IG9kYXRhTW9kZWwuZ2V0TWV0YU1vZGVsKCkucmVxdWVzdFZhbHVlTGlzdEluZm8ocHJvcGVydHlQYXRoKTtcblx0XHRjb25zdCBkZWZhdWx0VmFsdWVMaXN0ID0gdmFsdWVMaXN0W1wiXCJdO1xuXHRcdGNvbnN0IHNlbGVjdCA9IGRlZmF1bHRWYWx1ZUxpc3QuUGFyYW1ldGVycy5tYXAoKHBhcmFtOiB7IFZhbHVlTGlzdFByb3BlcnR5OiBzdHJpbmcgfSkgPT4gcGFyYW0uVmFsdWVMaXN0UHJvcGVydHkpLmpvaW4oXCIsXCIpO1xuXHRcdGNvbnN0IGxpc3RCaW5kaW5nID0gZGVmYXVsdFZhbHVlTGlzdC4kbW9kZWwuYmluZExpc3QoXCIvXCIgKyBkZWZhdWx0VmFsdWVMaXN0LkNvbGxlY3Rpb25QYXRoLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB7XG5cdFx0XHQkc2VsZWN0OiBzZWxlY3Rcblx0XHR9KTtcblx0XHRjb25zdCBkYXRhID0gYXdhaXQgbGlzdEJpbmRpbmcucmVxdWVzdENvbnRleHRzKCk7XG5cdFx0bGV0IHZhbHVlUHJvcGVydHk6IHN0cmluZztcblx0XHRsZXQgZGVzY3JpcHRpb25Qcm9wZXJ0eTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdGZvciAoY29uc3QgcGFyYW1ldGVyIG9mIGRlZmF1bHRWYWx1ZUxpc3QuUGFyYW1ldGVycykge1xuXHRcdFx0aWYgKHBhcmFtZXRlci5Mb2NhbERhdGFQcm9wZXJ0eT8uJFByb3BlcnR5UGF0aCA9PT0ga2V5KSB7XG5cdFx0XHRcdHZhbHVlUHJvcGVydHkgPSBwYXJhbWV0ZXIuVmFsdWVMaXN0UHJvcGVydHk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkZXNjcmlwdGlvblByb3BlcnR5ID0gcGFyYW1ldGVyLlZhbHVlTGlzdFByb3BlcnR5O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNvbnN0IGZpbHRlckdyb3VwVmFsdWVzID0gW107XG5cdFx0Zm9yIChjb25zdCBkYXR1bSBvZiBkYXRhKSB7XG5cdFx0XHRjb25zdCBkYXRhb2JqID0gZGF0dW0uZ2V0T2JqZWN0KCk7XG5cdFx0XHRmaWx0ZXJHcm91cFZhbHVlcy5wdXNoKHtcblx0XHRcdFx0dmFsdWU6IGRhdGFvYmpbdmFsdWVQcm9wZXJ0eSFdLFxuXHRcdFx0XHRkZXNjcmlwdGlvbjogZGVzY3JpcHRpb25Qcm9wZXJ0eSA/IGRhdGFvYmpbZGVzY3JpcHRpb25Qcm9wZXJ0eV0gOiB1bmRlZmluZWRcblx0XHRcdH0pO1xuXHRcdH1cblx0XHR0aGlzLl9mZXRjaGVkQ29kZUxpc3Rba2V5XSA9IGZpbHRlckdyb3VwVmFsdWVzO1xuXHRcdGNvbnN0IGNvZGVMaXN0UHJvcGVydHkgPSB0aGlzLmZpbHRlckJhck1ldGFkYXRhLmZpbmQoKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSBrZXkpO1xuXHRcdGlmIChjb2RlTGlzdFByb3BlcnR5KSB7XG5cdFx0XHRjb2RlTGlzdFByb3BlcnR5LmNvZGVMaXN0ID0gZmlsdGVyR3JvdXBWYWx1ZXM7XG5cdFx0fVxuXHRcdHJldHVybiBmaWx0ZXJHcm91cFZhbHVlcztcblx0fVxuXG5cdGFzeW5jIG9uR29QcmVzcygpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBtYWdpY1F1ZXJ5ID0gdGhpcy5zZWFyY2hJbnB1dC5jdXJyZW50Py5nZXRWYWx1ZSgpO1xuXG5cdFx0dGhpcy5zZWFyY2hJbnB1dC5jdXJyZW50Py5zZXRWYWx1ZVN0YXRlVGV4dChcIlwiKTtcblx0XHR0aGlzLnNlYXJjaElucHV0LmN1cnJlbnQ/LnNldFZhbHVlU3RhdGUoXCJOb25lXCIpO1xuXG5cdFx0Y29uc3QgZmlsdGVyQmFyID0gVUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmZpbHRlckJhcikgYXMgRmlsdGVyQmFyO1xuXHRcdGNvbnN0IGZpbHRlckJhckFQSSA9IGZpbHRlckJhci5nZXRQYXJlbnQoKSBhcyBGaWx0ZXJCYXJBUEk7XG5cblx0XHRpZiAoIW1hZ2ljUXVlcnkpIHtcblx0XHRcdC8vIEVtcHR5IGlucHV0OiBjbGVhciB0aGUgZmlsdGVycyBhbmQgcmVmcmVzaCB0aGUgbGlzdFxuXHRcdFx0YXdhaXQgZmlsdGVyQmFyQVBJLl9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zKGZpbHRlckJhcik7XG5cdFx0XHRhd2FpdCBmaWx0ZXJCYXJBUEkudHJpZ2dlclNlYXJjaCgpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IHVpTW9kZWwgPSB0aGlzLmdldE1vZGVsKFwidWlcIikgYXMgSlNPTk1vZGVsO1xuXHRcdEJ1c3lMb2NrZXIubG9jayh1aU1vZGVsKTtcblx0XHQvLyBDYWxsIEFJIHNlcnZpY2UgdG8gZ2V0IHRoZSBmaWx0ZXIgY3JpdGVyaWFcblx0XHRjb25zdCBlYXN5ZmlsdGVyID0gYXdhaXQgdGhpcy5lYXN5ZmlsdGVyO1xuXHRcdGlmICghZWFzeWZpbHRlcikge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IGVhc3lGaWx0ZXJNZXRhZGF0YSA9IHtcblx0XHRcdHZlcnNpb246IDEsXG5cdFx0XHRlbnRpdHlTZXQ6IHRoaXMuY29udGV4dFBhdGggPz8gdGhpcy5nZXRPd25lckNvbnRleHRQYXRoKCkgPz8gXCJcIixcblx0XHRcdGZpZWxkczogdGhpcy5maWx0ZXJCYXJNZXRhZGF0YVxuXHRcdH07XG5cblx0XHRjb25zdCBlYXN5RmlsdGVyUmVzdWx0ID0gYXdhaXQgZWFzeWZpbHRlci5lYXN5RmlsdGVyKG1hZ2ljUXVlcnksIGVhc3lGaWx0ZXJNZXRhZGF0YSk7XG5cblx0XHRpZiAoZWFzeUZpbHRlclJlc3VsdC5zdWNjZXNzKSB7XG5cdFx0XHRpZiAoZWFzeUZpbHRlclJlc3VsdC5kYXRhLnZlcnNpb24gPT09IDEpIHtcblx0XHRcdFx0aWYgKGVhc3lGaWx0ZXJSZXN1bHQuZGF0YS51bmNsZWFyKSB7XG5cdFx0XHRcdFx0dGhpcy5zZWFyY2hJbnB1dC5jdXJyZW50Py5zZXRWYWx1ZVN0YXRlKFwiV2FybmluZ1wiKTtcblx0XHRcdFx0XHR0aGlzLnNlYXJjaElucHV0LmN1cnJlbnQ/LnNldFZhbHVlU3RhdGVUZXh0KFwiVW5jbGVhciBpbnB1dDogXCIgKyBlYXN5RmlsdGVyUmVzdWx0LmRhdGEudW5jbGVhcik7IC8vIFRPRE86IERvZXMgdGhpcyBtYWtlIHNlbnNlP1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChlYXN5RmlsdGVyUmVzdWx0LmRhdGEuZmlsdGVyKSB7XG5cdFx0XHRcdFx0Ly8gV2UgbmVlZCB0byBzaG93IGEgbWVzc2FnZSB0byB0aGUgdXNlciB0aGF0IHRoZSBmaWx0ZXIgY3JpdGVyaWEgaGFzIGJlZW4gZ2VuZXJhdGVkXG5cdFx0XHRcdFx0TG9nLmRlYnVnKFwiRmlsdGVyIGNyaXRlcmlhIGdlbmVyYXRlZDogXCIsIEpTT04uc3RyaW5naWZ5KGVhc3lGaWx0ZXJSZXN1bHQuZGF0YS5maWx0ZXIsIG51bGwsIDIpKTtcblxuXHRcdFx0XHRcdC8vIFZhbGlkYXRlIGFuZCBhcHBseSB0aGUgZmlsdGVyIGNyaXRlcmlhXG5cdFx0XHRcdFx0YXdhaXQgZmlsdGVyQmFyQVBJLl9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zKGZpbHRlckJhcik7XG5cblx0XHRcdFx0XHRjb25zdCB0b2tlbnMgPSBbXTtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IGZpbHRlclZhbHVlIG9mIGVhc3lGaWx0ZXJSZXN1bHQuZGF0YS5maWx0ZXIpIHtcblx0XHRcdFx0XHRcdHRva2Vucy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0a2V5OiBmaWx0ZXJWYWx1ZS5uYW1lLFxuXHRcdFx0XHRcdFx0XHR0ZXh0OiBgJHtmaWx0ZXJWYWx1ZS5vcGVyYXRvcn0gJHtmaWx0ZXJWYWx1ZS52YWx1ZXN9YFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRhd2FpdCBGaWx0ZXJVdGlscy5hZGRGaWx0ZXJWYWx1ZXMoZmlsdGVyQmFyQVBJLmNvbnRlbnQsIGZpbHRlclZhbHVlLm5hbWUsIGZpbHRlclZhbHVlLm9wZXJhdG9yLCBmaWx0ZXJWYWx1ZS52YWx1ZXMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRhd2FpdCBmaWx0ZXJCYXJBUEkudHJpZ2dlclNlYXJjaCgpO1xuXHRcdFx0XHRcdHRoaXMuc3RhdGVNb2RlbC5zZXRQcm9wZXJ0eShcIi90b2tlbnNcIiwgdG9rZW5zKTtcblx0XHRcdFx0XHR0aGlzLnN0YXRlTW9kZWwuc2V0UHJvcGVydHkoXCIvc2hvd1Jlc3VsdFwiLCB0cnVlKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChlYXN5RmlsdGVyUmVzdWx0LmRhdGEudmVyc2lvbiA9PT0gMikge1xuXHRcdFx0XHQvLyBDcmVhdGUgdGhlIHNhcC51aS5tb2RlbC5GaWx0ZXIgZnJvbSB0aGUgZmlsdGVyIGFuZCBhcHBseSBpdCBkaXJlY3RseSB0byB0aGUgbGlzdCBiaW5kaW5nXG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGVycm9yXG5cdFx0XHR0aGlzLnNlYXJjaElucHV0LmN1cnJlbnQ/LnNldFZhbHVlU3RhdGUoXCJXYXJuaW5nXCIpO1xuXHRcdFx0dGhpcy5zZWFyY2hJbnB1dC5jdXJyZW50Py5zZXRWYWx1ZVN0YXRlVGV4dChlYXN5RmlsdGVyUmVzdWx0Lm1lc3NhZ2UpO1xuXHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgZ2VuZXJhdGluZyBmaWx0ZXIgY3JpdGVyaWE6IFwiLCBlYXN5RmlsdGVyUmVzdWx0Lm1lc3NhZ2UpO1xuXHRcdH1cblxuXHRcdEJ1c3lMb2NrZXIudW5sb2NrKHVpTW9kZWwpO1xuXHR9XG5cblx0b25Ub2tlbkRlbGV0ZShfZTogVUk1RXZlbnQ8eyB0b2tlbnM6IFRva2VuW10gfSwgVG9rZW5pemVyPik6IHZvaWQge1xuXHRcdHRoaXMuc3RhdGVNb2RlbC5zZXRQcm9wZXJ0eShcIi9zaG93UmVzdWx0XCIsIGZhbHNlKTtcblx0fVxuXG5cdG9uUXVlcnlDaGFuZ2VkKF9lOiBJbnB1dEJhc2UkQ2hhbmdlRXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCBmaWx0ZXJCYXIgPSBVSTVFbGVtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuZmlsdGVyQmFyKSBhcyBGaWx0ZXJCYXI7XG5cdFx0ZmlsdGVyQmFyLmZpcmVGaWx0ZXJzQ2hhbmdlZCh7IGNvbmRpdGlvbnNCYXNlZDogdHJ1ZSB9KTtcblx0fVxuXG5cdGNyZWF0ZUNvbnRlbnQoKTogVkJveCB7XG5cdFx0Y29uc3QgdkJveCA9IChcblx0XHRcdDxWQm94PlxuXHRcdFx0XHQ8TWVzc2FnZVN0cmlwXG5cdFx0XHRcdFx0dGV4dD1cIlByb21wdC1iYXNlZCBmaWx0ZXJpbmcgY3JlYXRlcyBjb21wbGV0ZWx5IG5ldyBmaWx0ZXIgY3JpdGVyaWEuIEdlbmVyYXRlZCBjb250ZW50IG1heSBub3QgYWx3YXlzIGJlIGFjY3VyYXRlLiBDb25zaWRlciB2ZXJpZnlpbmcgaXQuXCJcblx0XHRcdFx0XHRzaG93SWNvbj17dHJ1ZX1cblx0XHRcdFx0XHRzaG93Q2xvc2VCdXR0b249e3RydWV9XG5cdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlTbWFsbE1hcmdpbkJvdHRvbVwifVxuXHRcdFx0XHQvPlxuXHRcdFx0XHQ8RmxleEJveCByZW5kZXJUeXBlPVwiQmFyZVwiPlxuXHRcdFx0XHRcdDxJbnB1dFxuXHRcdFx0XHRcdFx0cmVmPXt0aGlzLnNlYXJjaElucHV0fVxuXHRcdFx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0XHRcdHNob3dDbGVhckljb249e3RydWV9XG5cdFx0XHRcdFx0XHRjaGFuZ2U9eyhlKTogdm9pZCA9PiB0aGlzLm9uUXVlcnlDaGFuZ2VkKGUpfVxuXHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJFbnRlciB5b3VyIHF1ZXJ5IGluIG5hdHVyYWwgbGFuZ3VhZ2UgdG8gZmlsdGVyIHRoZSBsaXN0XCJcblx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpU21hbGxNYXJnaW5FbmRcIn1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdGljb249e1wic2FwLWljb246Ly9haVwifVxuXHRcdFx0XHRcdFx0dGV4dD17XCJHb1wifVxuXHRcdFx0XHRcdFx0dHlwZT17QnV0dG9uVHlwZS5FbXBoYXNpemVkfVxuXHRcdFx0XHRcdFx0cHJlc3M9eyhldmVudDogQnV0dG9uJFByZXNzRXZlbnQpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0RkVTUkhlbHBlci5zZXRTZW1hbnRpY1N0ZXBuYW1lKGV2ZW50LmdldFNvdXJjZSgpLCBcInByZXNzXCIsIHRoaXMuZmVzclN0ZXBOYW1lKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5vbkdvUHJlc3MoKTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PC9GbGV4Qm94PlxuXHRcdFx0XHQ8RmxleEJveCByZW5kZXJUeXBlPVwiQmFyZVwiIHZpc2libGU9e2ZhbHNlfT5cblx0XHRcdFx0XHQ8TGFiZWwgdGV4dD1cIlNob3dpbmcgcmVzdWx0cyBmb3I6IFwiIGNsYXNzPXtcInNhcFVpU21hbGxNYXJnaW5Ub3BcIn0gLz5cblx0XHRcdFx0XHQ8VG9rZW5pemVyXG5cdFx0XHRcdFx0XHR0b2tlbnM9e1wie3N0YXRlPi90b2tlbnN9XCJ9XG5cdFx0XHRcdFx0XHR0b2tlbkRlbGV0ZT17KGUpOiB2b2lkID0+IHRoaXMub25Ub2tlbkRlbGV0ZShlIGFzIFVJNUV2ZW50PHsgdG9rZW5zOiBUb2tlbltdIH0sIFRva2VuaXplcj4pfVxuXHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdHRva2VuczogKGlkeDogbnVtYmVyLCBjdHg6IENvbnRleHQpOiBUb2tlbiA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qgb2JqZWN0ID0gY3R4LmdldE9iamVjdCgpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiA8VG9rZW4ga2V5PXtvYmplY3Qua2V5fSB0ZXh0PXtvYmplY3QudGV4dH0gLz47XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0PC9Ub2tlbml6ZXI+XG5cdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdDwvVkJveD5cblx0XHQpO1xuXHRcdHRoaXMuc2VhcmNoSW5wdXQuY3VycmVudD8uYWRkRXZlbnREZWxlZ2F0ZSh7XG5cdFx0XHRvbmtleXVwOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuXHRcdFx0XHRpZiAoZS5rZXkgPT09IFwiRW50ZXJcIikge1xuXHRcdFx0XHRcdHRoaXMub25Hb1ByZXNzKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRvbmZvY3VzaW46ICgpID0+IHtcblx0XHRcdFx0aWYgKHRoaXMuc2VhcmNoSW5wdXQuY3VycmVudD8uZ2V0VmFsdWVTdGF0ZSgpID09PSBcIk5vbmVcIiAmJiB0aGlzLmZpbHRlckJhck1ldGFkYXRhLmZpbmQoKGZpZWxkKSA9PiBmaWVsZC5yZXF1aXJlZCkpIHtcblx0XHRcdFx0XHR0aGlzLnNlYXJjaElucHV0LmN1cnJlbnQ/LnNldFZhbHVlU3RhdGUoXCJJbmZvcm1hdGlvblwiKTtcblx0XHRcdFx0XHRjb25zdCByZXF1aXJlZEZpZWxkcyA9IHRoaXMuZmlsdGVyQmFyTWV0YWRhdGEuZmlsdGVyKChmaWVsZCkgPT4gZmllbGQucmVxdWlyZWQpO1xuXHRcdFx0XHRcdGNvbnN0IHJlcXVpcmVkRmllbGRzVGV4dCA9IHJlcXVpcmVkRmllbGRzLm1hcCgoZmllbGQpID0+IGZpZWxkLmxhYmVsKS5qb2luKFwiLCBcIik7XG5cdFx0XHRcdFx0aWYgKHJlcXVpcmVkRmllbGRzLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHRcdFx0dGhpcy5zZWFyY2hJbnB1dC5jdXJyZW50Py5zZXRWYWx1ZVN0YXRlVGV4dChgJHtyZXF1aXJlZEZpZWxkc1RleHR9IGlzIGEgbWFuZGF0b3J5IGZpbHRlci5gKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpcy5zZWFyY2hJbnB1dC5jdXJyZW50Py5zZXRWYWx1ZVN0YXRlVGV4dChgJHtyZXF1aXJlZEZpZWxkc1RleHR9IGFyZSBtYW5kYXRvcnkgZmlsdGVycy5gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0XHRyZXR1cm4gdkJveDtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQXFDcUJBLGFBQWE7RUFMbEM7QUFDQTtBQUNBO0FBQ0E7RUFIQSxPQUlDQyxjQUFjLENBQUMsNkJBQTZCLENBQUMsVUFJNUNDLFdB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
337
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyIkZWRpdFN0YXRlIiwiRWFzeUZpbHRlckJhciIsImRlZmluZVVJNUNsYXNzIiwiYXNzb2NpYXRpb24iLCJ0eXBlIiwicHJvcGVydHkiLCJkZWZpbmVSZWZlcmVuY2UiLCJwcm9wZXJ0aWVzIiwib3RoZXJzIiwiZmVzclN0ZXBOYW1lIiwiZWFzeWZpbHRlciIsImdldEFwcENvbXBvbmVudCIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwicHJlcGFyZUZlYXR1cmUiLCJ0aGVuIiwib25NZXRhZGF0YUF2YWlsYWJsZSIsIl9mZXRjaGVkQ29kZUxpc3QiLCJzdGF0ZU1vZGVsIiwiSlNPTk1vZGVsIiwic2hvd1Jlc3VsdCIsInNldE1vZGVsIiwiZmlsdGVyQmFyTWV0YWRhdGEiLCJwcmVwYXJlRmlsdGVyQmFyTWV0YWRhdGEiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsIm93bmVyIiwiX2dldE93bmVyIiwibWV0YU1vZGVsIiwicHJlcHJvY2Vzc29yQ29udGV4dCIsIm1vZGVscyIsImZpbHRlckJhciIsIlVJNUVsZW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImZpZWxkcyIsIkZpbHRlclV0aWxzIiwiZ2V0Q29udmVydGVkRmlsdGVyRmllbGRzIiwidW5kZWZpbmVkIiwicmVzdWx0IiwiZmlsdGVyIiwiZmllbGQiLCJhdmFpbGFiaWxpdHkiLCJtYXAiLCJwcm9wZXJ0eU9iamVjdCIsImdldERhdGFNb2RlbE9iamVjdFBhdGgiLCJhbm5vdGF0aW9uUGF0aCIsImNvZGVMaXN0IiwidGFyZ2V0T2JqZWN0IiwiaGFzQ29kZUxpc3QiLCJoYXNWYWx1ZUhlbHBXaXRoRml4ZWRWYWx1ZXMiLCJrZXkiLCJnZXRDb2RlTGlzdEZvclByb3BlcnR5IiwibmFtZSIsImxhYmVsIiwiZGF0YVR5cGUiLCJyZXF1aXJlZCIsImZpbHRlcmFibGUiLCJzb3J0YWJsZSIsImlzUGFyYW1ldGVyIiwiZWRpdGluZ1N0YXR1c0ZpbHRlckZpZWxkSW5mbyIsImdldEZpbHRlclByb3BlcnR5SW5mbyIsImZpbmQiLCJwcm9wZXJ0eUluZm8iLCJwcm9wcyIsImlzRHJhZnRDb2xsYWJvcmF0aXZlIiwiTW9kZWxIZWxwZXIiLCJpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiZWRpdGluZ1N0YXR1c0NvZGVMaXN0IiwiRHJhZnRFZGl0U3RhdGUiLCJnZXRFZGl0U3RhdGVzQ29udGV4dCIsImdldE9iamVjdCIsInN0YXRlIiwidmFsdWUiLCJpZCIsImRlc2NyaXB0aW9uIiwiZGlzcGxheSIsInB1c2giLCJwcm9wZXJ0eVBhdGgiLCJvZGF0YU1vZGVsIiwiZ2V0TW9kZWwiLCJ2YWx1ZUxpc3QiLCJnZXRNZXRhTW9kZWwiLCJyZXF1ZXN0VmFsdWVMaXN0SW5mbyIsImRlZmF1bHRWYWx1ZUxpc3QiLCJzZWxlY3QiLCJQYXJhbWV0ZXJzIiwicGFyYW0iLCJWYWx1ZUxpc3RQcm9wZXJ0eSIsImpvaW4iLCJsaXN0QmluZGluZyIsIiRtb2RlbCIsImJpbmRMaXN0IiwiQ29sbGVjdGlvblBhdGgiLCIkc2VsZWN0IiwiZGF0YSIsInJlcXVlc3RDb250ZXh0cyIsInZhbHVlUHJvcGVydHkiLCJkZXNjcmlwdGlvblByb3BlcnR5IiwicGFyYW1ldGVyIiwiTG9jYWxEYXRhUHJvcGVydHkiLCIkUHJvcGVydHlQYXRoIiwiZmlsdGVyR3JvdXBWYWx1ZXMiLCJkYXR1bSIsImRhdGFvYmoiLCJjb2RlTGlzdFByb3BlcnR5Iiwib25Hb1ByZXNzIiwibWFnaWNRdWVyeSIsInNlYXJjaElucHV0IiwiY3VycmVudCIsImdldFZhbHVlIiwic2V0VmFsdWVTdGF0ZVRleHQiLCJzZXRWYWx1ZVN0YXRlIiwiZmlsdGVyQmFyQVBJIiwiZ2V0UGFyZW50IiwiX2NsZWFyRmlsdGVyVmFsdWVzV2l0aE9wdGlvbnMiLCJ0cmlnZ2VyU2VhcmNoIiwidWlNb2RlbCIsIkJ1c3lMb2NrZXIiLCJsb2NrIiwiZWFzeUZpbHRlck1ldGFkYXRhIiwidmVyc2lvbiIsImVudGl0eVNldCIsImNvbnRleHRQYXRoIiwiZ2V0T3duZXJDb250ZXh0UGF0aCIsImVhc3lGaWx0ZXJSZXN1bHQiLCJlYXN5RmlsdGVyIiwic3VjY2VzcyIsInVuY2xlYXIiLCJMb2ciLCJkZWJ1ZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJjbGVhckVkaXRGaWx0ZXIiLCJzb21lIiwiZmlsdGVyVmFsdWUiLCJ0b2tlbnMiLCJ0ZXh0Iiwib3BlcmF0b3IiLCJ2YWx1ZXMiLCJhZGRGaWx0ZXJWYWx1ZXMiLCJzZXRQcm9wZXJ0eSIsIm1lc3NhZ2UiLCJlcnJvciIsInVubG9jayIsIm9uVG9rZW5EZWxldGUiLCJfZSIsIm9uUXVlcnlDaGFuZ2VkIiwiZmlyZUZpbHRlcnNDaGFuZ2VkIiwiY29uZGl0aW9uc0Jhc2VkIiwidkJveCIsImUiLCJCdXR0b25UeXBlIiwiRW1waGFzaXplZCIsImV2ZW50IiwiRkVTUkhlbHBlciIsInNldFNlbWFudGljU3RlcG5hbWUiLCJnZXRTb3VyY2UiLCJpZHgiLCJjdHgiLCJvYmplY3QiLCJhZGRFdmVudERlbGVnYXRlIiwib25rZXl1cCIsIm9uZm9jdXNpbiIsImdldFZhbHVlU3RhdGUiLCJyZXF1aXJlZEZpZWxkcyIsInJlcXVpcmVkRmllbGRzVGV4dCIsImxlbmd0aCIsIkJ1aWxkaW5nQmxvY2tCYXNlIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJFYXN5RmlsdGVyQmFyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrQmFzZSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja0Jhc2VcIjtcbmltcG9ydCBCdXN5TG9ja2VyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9CdXN5TG9ja2VyXCI7XG5pbXBvcnQgeyBhc3NvY2lhdGlvbiwgZGVmaW5lUmVmZXJlbmNlLCBkZWZpbmVVSTVDbGFzcywgcHJvcGVydHksIHR5cGUgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSBcInNhcC9mZS9jb3JlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IHsgaGFzVmFsdWVIZWxwV2l0aEZpeGVkVmFsdWVzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcbmltcG9ydCBGaWx0ZXJVdGlscyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyVXRpbHNcIjtcbmltcG9ydCBEcmFmdEVkaXRTdGF0ZSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRHJhZnRFZGl0U3RhdGVcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhckFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyQmFyQVBJXCI7XG5pbXBvcnQgdHlwZSB7IEJ1dHRvbiRQcmVzc0V2ZW50IH0gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgRmxleEJveCBmcm9tIFwic2FwL20vRmxleEJveFwiO1xuaW1wb3J0IElucHV0IGZyb20gXCJzYXAvbS9JbnB1dFwiO1xuaW1wb3J0IHR5cGUgeyBJbnB1dEJhc2UkQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL20vSW5wdXRCYXNlXCI7XG5pbXBvcnQgTGFiZWwgZnJvbSBcInNhcC9tL0xhYmVsXCI7XG5pbXBvcnQgTWVzc2FnZVN0cmlwIGZyb20gXCJzYXAvbS9NZXNzYWdlU3RyaXBcIjtcbmltcG9ydCBUb2tlbiBmcm9tIFwic2FwL20vVG9rZW5cIjtcbmltcG9ydCBUb2tlbml6ZXIgZnJvbSBcInNhcC9tL1Rva2VuaXplclwiO1xuaW1wb3J0IFZCb3ggZnJvbSBcInNhcC9tL1ZCb3hcIjtcbmltcG9ydCB7IEJ1dHRvblR5cGUgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL3VpL21kYy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgRkVTUkhlbHBlciBmcm9tIFwic2FwL3VpL3BlcmZvcm1hbmNlL3RyYWNlL0ZFU1JIZWxwZXJcIjtcbmltcG9ydCB0eXBlIEVhc3lGaWx0ZXIgZnJvbSBcInV4L2VuZy9maW9yaWFpL3JldXNlL2Vhc3lmaWx0ZXIvRWFzeUZpbHRlclwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eU1ldGFkYXRhIGFzIEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhIH0gZnJvbSBcInV4L2VuZy9maW9yaWFpL3JldXNlL2Vhc3lmaWx0ZXIvRWFzeUZpbHRlclwiO1xuXG4vLyBFZGl0aW5nIHN0YXR1cyBmaWx0ZXIgZmllbGQga2V5XG5jb25zdCAkZWRpdFN0YXRlID0gXCIkZWRpdFN0YXRlXCI7XG5cbi8qKlxuICogRGVsaXZlcnkgZm9yIGJldGEgcmVsZWFzZSBmb3IgdGhlIGVhc3kgZmlsdGVyIGZlYXR1cmUuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuRWFzeUZpbHRlckJhclwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWFzeUZpbHRlckJhciBleHRlbmRzIEJ1aWxkaW5nQmxvY2tCYXNlIHtcblx0ZmVzclN0ZXBOYW1lID0gXCJmZTQ6YWk6c2VhcmNoXCI7XG5cblx0QGFzc29jaWF0aW9uKHsgdHlwZTogXCJzYXAuZmUubWFjcm9zLmZpbHRlckJhci5GaWx0ZXJCYXJBUElcIiB9KVxuXHRmaWx0ZXJCYXIhOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRjb250ZXh0UGF0aD86IHN0cmluZztcblxuXHRAZGVmaW5lUmVmZXJlbmNlKClcblx0c2VhcmNoSW5wdXQhOiBSZWY8SW5wdXQ+O1xuXG5cdGVhc3lmaWx0ZXI6IFByb21pc2U8dHlwZW9mIEVhc3lGaWx0ZXI+IHwgdW5kZWZpbmVkO1xuXG5cdF9mZXRjaGVkQ29kZUxpc3QhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuXHRwcml2YXRlIGZpbHRlckJhck1ldGFkYXRhITogRWFzeUZpbHRlclByb3BlcnR5TWV0YWRhdGFbXTtcblxuXHRwcml2YXRlIHN0YXRlTW9kZWwhOiBKU09OTW9kZWw7XG5cblx0Y29uc3RydWN0b3IocHJvcGVydGllczogJENvbnRyb2xTZXR0aW5ncyAmIFByb3BlcnRpZXNPZjxFYXN5RmlsdGVyQmFyPiwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdHN1cGVyKHByb3BlcnRpZXMsIG90aGVycyk7XG5cdFx0dGhpcy5lYXN5ZmlsdGVyID0gdGhpcy5nZXRBcHBDb21wb25lbnQoKVxuXHRcdFx0Py5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpXG5cdFx0XHQucHJlcGFyZUZlYXR1cmUoXCJNYWdpY0ZpbHRlcmluZ1wiKVxuXHRcdFx0LnRoZW4oYXN5bmMgKCkgPT4gaW1wb3J0KFwidXgvZW5nL2Zpb3JpYWkvcmV1c2UvZWFzeWZpbHRlci9FYXN5RmlsdGVyXCIpKTtcblx0fVxuXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoKTogdm9pZCB7XG5cdFx0dGhpcy5fZmV0Y2hlZENvZGVMaXN0ID8/PSB7fTtcblx0XHR0aGlzLnN0YXRlTW9kZWwgPSBuZXcgSlNPTk1vZGVsKHsgc2hvd1Jlc3VsdDogZmFsc2UgfSk7XG5cdFx0dGhpcy5zZXRNb2RlbCh0aGlzLnN0YXRlTW9kZWwsIFwic3RhdGVcIik7XG5cdFx0dGhpcy5maWx0ZXJCYXJNZXRhZGF0YSA9IHRoaXMucHJlcGFyZUZpbHRlckJhck1ldGFkYXRhKCk7XG5cdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdH1cblxuXHRwcmVwYXJlRmlsdGVyQmFyTWV0YWRhdGEoKTogRWFzeUZpbHRlclByb3BlcnR5TWV0YWRhdGFbXSB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpITtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSBvd25lci5wcmVwcm9jZXNzb3JDb250ZXh0Py5tb2RlbHMubWV0YU1vZGVsIGFzIE9EYXRhTWV0YU1vZGVsO1xuXHRcdGNvbnN0IGZpbHRlckJhciA9IFVJNUVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5maWx0ZXJCYXIpIGFzIEZpbHRlckJhcjtcblx0XHRjb25zdCBmaWVsZHMgPSBGaWx0ZXJVdGlscy5nZXRDb252ZXJ0ZWRGaWx0ZXJGaWVsZHMoZmlsdGVyQmFyLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgbWV0YU1vZGVsKTtcblxuXHRcdGNvbnN0IHJlc3VsdCA9IGZpZWxkc1xuXHRcdFx0LmZpbHRlcigoZmllbGQpID0+IGZpZWxkLmF2YWlsYWJpbGl0eSAhPT0gXCJIaWRkZW5cIikgLy8gRXhjbHVkZSBoaWRkZW4gZmlsdGVyIGZpZWxkcy4gSXQgaXMgbm90IHBvc3NpYmxlIHRvIHNldCBhIHZhbHVlIGZvciBoaWRkZW4gZmlsdGVycywgYW5kIHVzZXJzIHdvdWxkIG5vdCB1bmRlcnN0YW5kIGFueXdheSBhcyB0aGV5IGNhbm5vdCBzZWUgdGhlc2UgdmFsdWVzLlxuXHRcdFx0Lm1hcCgoZmllbGQpOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSA9PiB7XG5cdFx0XHRcdGNvbnN0IHByb3BlcnR5T2JqZWN0ID0gdGhpcy5nZXREYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5PihmaWVsZC5hbm5vdGF0aW9uUGF0aCk7XG5cdFx0XHRcdGxldCBjb2RlTGlzdDtcblx0XHRcdFx0aWYgKHByb3BlcnR5T2JqZWN0Py50YXJnZXRPYmplY3QpIHtcblx0XHRcdFx0XHRjb25zdCBoYXNDb2RlTGlzdCA9IGhhc1ZhbHVlSGVscFdpdGhGaXhlZFZhbHVlcyhwcm9wZXJ0eU9iamVjdD8udGFyZ2V0T2JqZWN0KTtcblx0XHRcdFx0XHRpZiAoaGFzQ29kZUxpc3QpIHtcblx0XHRcdFx0XHRcdGNvZGVMaXN0ID0gdGhpcy5fZmV0Y2hlZENvZGVMaXN0W2ZpZWxkLmtleV07XG5cdFx0XHRcdFx0XHRpZiAoIWNvZGVMaXN0KSB7XG5cdFx0XHRcdFx0XHRcdGNvZGVMaXN0ID0gYXN5bmMgKCk6IFByb21pc2U8dW5rbm93bj4gPT4gdGhpcy5nZXRDb2RlTGlzdEZvclByb3BlcnR5KGZpZWxkLmtleSwgZmllbGQuYW5ub3RhdGlvblBhdGgpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdG5hbWU6IGZpZWxkLmtleSxcblx0XHRcdFx0XHRsYWJlbDogZmllbGQubGFiZWwsXG5cdFx0XHRcdFx0ZGF0YVR5cGU6IHByb3BlcnR5T2JqZWN0Py50YXJnZXRPYmplY3Q/LnR5cGUsXG5cdFx0XHRcdFx0cmVxdWlyZWQ6ICEhZmllbGQucmVxdWlyZWQsXG5cdFx0XHRcdFx0ZmlsdGVyYWJsZTogdHJ1ZSxcblx0XHRcdFx0XHRzb3J0YWJsZTogIWZpZWxkLmlzUGFyYW1ldGVyLFxuXHRcdFx0XHRcdGNvZGVMaXN0OiBjb2RlTGlzdFxuXHRcdFx0XHR9IGFzIEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhO1xuXHRcdFx0fSk7XG5cblx0XHQvLyBbRWRpdGluZyBTdGF0dXNdXG5cdFx0Y29uc3QgZWRpdGluZ1N0YXR1c0ZpbHRlckZpZWxkSW5mbyA9IEZpbHRlclV0aWxzLmdldEZpbHRlclByb3BlcnR5SW5mbyhmaWx0ZXJCYXIpLmZpbmQoXG5cdFx0XHQocHJvcGVydHlJbmZvKSA9PiBwcm9wZXJ0eUluZm8ua2V5ID09PSAkZWRpdFN0YXRlICYmIHByb3BlcnR5SW5mby5hdmFpbGFiaWxpdHkgIT09IFwiSGlkZGVuXCJcblx0XHQpO1xuXG5cdFx0aWYgKGVkaXRpbmdTdGF0dXNGaWx0ZXJGaWVsZEluZm8pIHtcblx0XHRcdC8vIEFzc2VtYmxlIHRoZSBjb2RlIGxpc3QgZm9yIHRoZSBlZGl0aW5nIHN0YXR1cyBmaWx0ZXIgdmFsdWVzOlxuXHRcdFx0Y29uc3QgcHJvcHMgPSBuZXcgSlNPTk1vZGVsKHtcblx0XHRcdFx0aXNEcmFmdENvbGxhYm9yYXRpdmU6IE1vZGVsSGVscGVyLmlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkKG1ldGFNb2RlbClcblx0XHRcdH0pLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiKTtcblxuXHRcdFx0Y29uc3QgZWRpdGluZ1N0YXR1c0NvZGVMaXN0ID0gRHJhZnRFZGl0U3RhdGUuZ2V0RWRpdFN0YXRlc0NvbnRleHQocHJvcHMpXG5cdFx0XHRcdC5nZXRPYmplY3QoXCIvXCIpXG5cdFx0XHRcdC5tYXAoKHN0YXRlOiB7IGlkOiBzdHJpbmc7IGRpc3BsYXk6IHN0cmluZyB9KSA9PiAoeyB2YWx1ZTogc3RhdGUuaWQsIGRlc2NyaXB0aW9uOiBzdGF0ZS5kaXNwbGF5IH0pKTtcblxuXHRcdFx0cmVzdWx0LnB1c2goe1xuXHRcdFx0XHRuYW1lOiAkZWRpdFN0YXRlLFxuXHRcdFx0XHRsYWJlbDogZWRpdGluZ1N0YXR1c0ZpbHRlckZpZWxkSW5mby5sYWJlbCxcblx0XHRcdFx0ZGF0YVR5cGU6IFwiRWRtLlN0cmluZ1wiLFxuXHRcdFx0XHRyZXF1aXJlZDogZmFsc2UsXG5cdFx0XHRcdGZpbHRlcmFibGU6IHRydWUsXG5cdFx0XHRcdHNvcnRhYmxlOiBmYWxzZSxcblx0XHRcdFx0Y29kZUxpc3Q6IGVkaXRpbmdTdGF0dXNDb2RlTGlzdFxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdGFzeW5jIGdldENvZGVMaXN0Rm9yUHJvcGVydHkoa2V5OiBzdHJpbmcsIHByb3BlcnR5UGF0aDogc3RyaW5nKTogUHJvbWlzZTx1bmtub3duPiB7XG5cdFx0Ly8gRmV0Y2ggYW5kIGNhY2hlIHRoZSBjb2RlTGlzdCBmb3IgdmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzXG5cdFx0Y29uc3Qgb2RhdGFNb2RlbCA9IHRoaXMuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsO1xuXHRcdGNvbnN0IHZhbHVlTGlzdCA9IGF3YWl0IG9kYXRhTW9kZWwuZ2V0TWV0YU1vZGVsKCkucmVxdWVzdFZhbHVlTGlzdEluZm8ocHJvcGVydHlQYXRoKTtcblx0XHRjb25zdCBkZWZhdWx0VmFsdWVMaXN0ID0gdmFsdWVMaXN0W1wiXCJdO1xuXHRcdGNvbnN0IHNlbGVjdCA9IGRlZmF1bHRWYWx1ZUxpc3QuUGFyYW1ldGVycy5tYXAoKHBhcmFtOiB7IFZhbHVlTGlzdFByb3BlcnR5OiBzdHJpbmcgfSkgPT4gcGFyYW0uVmFsdWVMaXN0UHJvcGVydHkpLmpvaW4oXCIsXCIpO1xuXHRcdGNvbnN0IGxpc3RCaW5kaW5nID0gZGVmYXVsdFZhbHVlTGlzdC4kbW9kZWwuYmluZExpc3QoXCIvXCIgKyBkZWZhdWx0VmFsdWVMaXN0LkNvbGxlY3Rpb25QYXRoLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB7XG5cdFx0XHQkc2VsZWN0OiBzZWxlY3Rcblx0XHR9KTtcblx0XHRjb25zdCBkYXRhID0gYXdhaXQgbGlzdEJpbmRpbmcucmVxdWVzdENvbnRleHRzKCk7XG5cdFx0bGV0IHZhbHVlUHJvcGVydHk6IHN0cmluZztcblx0XHRsZXQgZGVzY3JpcHRpb25Qcm9wZXJ0eTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdGZvciAoY29uc3QgcGFyYW1ldGVyIG9mIGRlZmF1bHRWYWx1ZUxpc3QuUGFyYW1ldGVycykge1xuXHRcdFx0aWYgKHBhcmFtZXRlci5Mb2NhbERhdGFQcm9wZXJ0eT8uJFByb3BlcnR5UGF0aCA9PT0ga2V5KSB7XG5cdFx0XHRcdHZhbHVlUHJvcGVydHkgPSBwYXJhbWV0ZXIuVmFsdWVMaXN0UHJvcGVydHk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkZXNjcmlwdGlvblByb3BlcnR5ID0gcGFyYW1ldGVyLlZhbHVlTGlzdFByb3BlcnR5O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNvbnN0IGZpbHRlckdyb3VwVmFsdWVzID0gW107XG5cdFx0Zm9yIChjb25zdCBkYXR1bSBvZiBkYXRhKSB7XG5cdFx0XHRjb25zdCBkYXRhb2JqID0gZGF0dW0uZ2V0T2JqZWN0KCk7XG5cdFx0XHRmaWx0ZXJHcm91cFZhbHVlcy5wdXNoKHtcblx0XHRcdFx0dmFsdWU6IGRhdGFvYmpbdmFsdWVQcm9wZXJ0eSFdLFxuXHRcdFx0XHRkZXNjcmlwdGlvbjogZGVzY3JpcHRpb25Qcm9wZXJ0eSA/IGRhdGFvYmpbZGVzY3JpcHRpb25Qcm9wZXJ0eV0gOiB1bmRlZmluZWRcblx0XHRcdH0pO1xuXHRcdH1cblx0XHR0aGlzLl9mZXRjaGVkQ29kZUxpc3Rba2V5XSA9IGZpbHRlckdyb3VwVmFsdWVzO1xuXHRcdGNvbnN0IGNvZGVMaXN0UHJvcGVydHkgPSB0aGlzLmZpbHRlckJhck1ldGFkYXRhLmZpbmQoKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSBrZXkpO1xuXHRcdGlmIChjb2RlTGlzdFByb3BlcnR5KSB7XG5cdFx0XHRjb2RlTGlzdFByb3BlcnR5LmNvZGVMaXN0ID0gZmlsdGVyR3JvdXBWYWx1ZXM7XG5cdFx0fVxuXHRcdHJldHVybiBmaWx0ZXJHcm91cFZhbHVlcztcblx0fVxuXG5cdGFzeW5jIG9uR29QcmVzcygpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBtYWdpY1F1ZXJ5ID0gdGhpcy5zZWFyY2hJbnB1dC5jdXJyZW50Py5nZXRWYWx1ZSgpO1xuXG5cdFx0dGhpcy5zZWFyY2hJbnB1dC5jdXJyZW50Py5zZXRWYWx1ZVN0YXRlVGV4dChcIlwiKTtcblx0XHR0aGlzLnNlYXJjaElucHV0LmN1cnJlbnQ/LnNldFZhbHVlU3RhdGUoXCJOb25lXCIpO1xuXG5cdFx0Y29uc3QgZmlsdGVyQmFyID0gVUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmZpbHRlckJhcikgYXMgRmlsdGVyQmFyO1xuXHRcdGNvbnN0IGZpbHRlckJhckFQSSA9IGZpbHRlckJhci5nZXRQYXJlbnQoKSBhcyBGaWx0ZXJCYXJBUEk7XG5cblx0XHRpZiAoIW1hZ2ljUXVlcnkpIHtcblx0XHRcdC8vIEVtcHR5IGlucHV0OiBjbGVhciB0aGUgZmlsdGVycyBhbmQgcmVmcmVzaCB0aGUgbGlzdFxuXHRcdFx0YXdhaXQgZmlsdGVyQmFyQVBJLl9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zKGZpbHRlckJhcik7XG5cdFx0XHRhd2FpdCBmaWx0ZXJCYXJBUEkudHJpZ2dlclNlYXJjaCgpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IHVpTW9kZWwgPSB0aGlzLmdldE1vZGVsKFwidWlcIikgYXMgSlNPTk1vZGVsO1xuXHRcdEJ1c3lMb2NrZXIubG9jayh1aU1vZGVsKTtcblx0XHQvLyBDYWxsIEFJIHNlcnZpY2UgdG8gZ2V0IHRoZSBmaWx0ZXIgY3JpdGVyaWFcblx0XHRjb25zdCBlYXN5ZmlsdGVyID0gYXdhaXQgdGhpcy5lYXN5ZmlsdGVyO1xuXHRcdGlmICghZWFzeWZpbHRlcikge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IGVhc3lGaWx0ZXJNZXRhZGF0YSA9IHtcblx0XHRcdHZlcnNpb246IDEsXG5cdFx0XHRlbnRpdHlTZXQ6IHRoaXMuY29udGV4dFBhdGggPz8gdGhpcy5nZXRPd25lckNvbnRleHRQYXRoKCkgPz8gXCJcIixcblx0XHRcdGZpZWxkczogdGhpcy5maWx0ZXJCYXJNZXRhZGF0YVxuXHRcdH07XG5cblx0XHRjb25zdCBlYXN5RmlsdGVyUmVzdWx0ID0gYXdhaXQgZWFzeWZpbHRlci5lYXN5RmlsdGVyKG1hZ2ljUXVlcnksIGVhc3lGaWx0ZXJNZXRhZGF0YSk7XG5cblx0XHRpZiAoZWFzeUZpbHRlclJlc3VsdC5zdWNjZXNzKSB7XG5cdFx0XHRpZiAoZWFzeUZpbHRlclJlc3VsdC5kYXRhLnZlcnNpb24gPT09IDEpIHtcblx0XHRcdFx0aWYgKGVhc3lGaWx0ZXJSZXN1bHQuZGF0YS51bmNsZWFyKSB7XG5cdFx0XHRcdFx0dGhpcy5zZWFyY2hJbnB1dC5jdXJyZW50Py5zZXRWYWx1ZVN0YXRlKFwiV2FybmluZ1wiKTtcblx0XHRcdFx0XHR0aGlzLnNlYXJjaElucHV0LmN1cnJlbnQ/LnNldFZhbHVlU3RhdGVUZXh0KFwiVW5jbGVhciBpbnB1dDogXCIgKyBlYXN5RmlsdGVyUmVzdWx0LmRhdGEudW5jbGVhcik7IC8vIFRPRE86IERvZXMgdGhpcyBtYWtlIHNlbnNlP1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChlYXN5RmlsdGVyUmVzdWx0LmRhdGEuZmlsdGVyKSB7XG5cdFx0XHRcdFx0Ly8gV2UgbmVlZCB0byBzaG93IGEgbWVzc2FnZSB0byB0aGUgdXNlciB0aGF0IHRoZSBmaWx0ZXIgY3JpdGVyaWEgaGFzIGJlZW4gZ2VuZXJhdGVkXG5cdFx0XHRcdFx0TG9nLmRlYnVnKFwiRmlsdGVyIGNyaXRlcmlhIGdlbmVyYXRlZDogXCIsIEpTT04uc3RyaW5naWZ5KGVhc3lGaWx0ZXJSZXN1bHQuZGF0YS5maWx0ZXIsIG51bGwsIDIpKTtcblxuXHRcdFx0XHRcdC8vIFZhbGlkYXRlIGFuZCBhcHBseSB0aGUgZmlsdGVyIGNyaXRlcmlhXG5cblx0XHRcdFx0XHQvLyBJZiB0aGUgcmV0dXJuZWQgY29uZGl0aW9ucyBpbmNsdWRlIHRoZSAkZWRpdFN0YXRlIGZpbHRlciwgd2UgbmVlZCB0byBjbGVhciB0aGUgZXhpc3RpbmcgZmlsdGVyIHZhbHVlcyBmb3IgaXQgKG90aGVyd2lzZSB0aGUgbmV3IHZhbHVlcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBleGlzdGluZyBvbmVzKVxuXHRcdFx0XHRcdGNvbnN0IGNsZWFyRWRpdEZpbHRlciA9IGVhc3lGaWx0ZXJSZXN1bHQuZGF0YS5maWx0ZXIuc29tZSgoZmlsdGVyVmFsdWUpID0+IGZpbHRlclZhbHVlLm5hbWUgPT09ICRlZGl0U3RhdGUpO1xuXHRcdFx0XHRcdGF3YWl0IGZpbHRlckJhckFQSS5fY2xlYXJGaWx0ZXJWYWx1ZXNXaXRoT3B0aW9ucyhmaWx0ZXJCYXIsIHsgY2xlYXJFZGl0RmlsdGVyIH0pO1xuXG5cdFx0XHRcdFx0Y29uc3QgdG9rZW5zID0gW107XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBmaWx0ZXJWYWx1ZSBvZiBlYXN5RmlsdGVyUmVzdWx0LmRhdGEuZmlsdGVyKSB7XG5cdFx0XHRcdFx0XHR0b2tlbnMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGtleTogZmlsdGVyVmFsdWUubmFtZSxcblx0XHRcdFx0XHRcdFx0dGV4dDogYCR7ZmlsdGVyVmFsdWUub3BlcmF0b3J9ICR7ZmlsdGVyVmFsdWUudmFsdWVzfWBcblx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRpZiAoZmlsdGVyVmFsdWUubmFtZSA9PT0gJGVkaXRTdGF0ZSkge1xuXHRcdFx0XHRcdFx0XHQvLyBjb252ZXJ0IHRoZSAkZWRpdFN0YXRlIGZpbHRlciBjb25kaXRpb25cblx0XHRcdFx0XHRcdFx0YXdhaXQgRmlsdGVyVXRpbHMuYWRkRmlsdGVyVmFsdWVzKGZpbHRlckJhckFQSS5jb250ZW50LCAkZWRpdFN0YXRlLCBcIkRSQUZUX0VESVRfU1RBVEVcIiwgZmlsdGVyVmFsdWUudmFsdWVzKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGF3YWl0IEZpbHRlclV0aWxzLmFkZEZpbHRlclZhbHVlcyhcblx0XHRcdFx0XHRcdFx0XHRmaWx0ZXJCYXJBUEkuY29udGVudCxcblx0XHRcdFx0XHRcdFx0XHRmaWx0ZXJWYWx1ZS5uYW1lLFxuXHRcdFx0XHRcdFx0XHRcdGZpbHRlclZhbHVlLm9wZXJhdG9yLFxuXHRcdFx0XHRcdFx0XHRcdGZpbHRlclZhbHVlLnZhbHVlc1xuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRhd2FpdCBmaWx0ZXJCYXJBUEkudHJpZ2dlclNlYXJjaCgpO1xuXHRcdFx0XHRcdHRoaXMuc3RhdGVNb2RlbC5zZXRQcm9wZXJ0eShcIi90b2tlbnNcIiwgdG9rZW5zKTtcblx0XHRcdFx0XHR0aGlzLnN0YXRlTW9kZWwuc2V0UHJvcGVydHkoXCIvc2hvd1Jlc3VsdFwiLCB0cnVlKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChlYXN5RmlsdGVyUmVzdWx0LmRhdGEudmVyc2lvbiA9PT0gMikge1xuXHRcdFx0XHQvLyBDcmVhdGUgdGhlIHNhcC51aS5tb2RlbC5GaWx0ZXIgZnJvbSB0aGUgZmlsdGVyIGFuZCBhcHBseSBpdCBkaXJlY3RseSB0byB0aGUgbGlzdCBiaW5kaW5nXG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGVycm9yXG5cdFx0XHR0aGlzLnNlYXJjaElucHV0LmN1cnJlbnQ/LnNldFZhbHVlU3RhdGUoXCJXYXJuaW5nXCIpO1xuXHRcdFx0dGhpcy5zZWFyY2hJbnB1dC5jdXJyZW50Py5zZXRWYWx1ZVN0YXRlVGV4dChlYXN5RmlsdGVyUmVzdWx0Lm1lc3NhZ2UpO1xuXHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgZ2VuZXJhdGluZyBmaWx0ZXIgY3JpdGVyaWE6IFwiLCBlYXN5RmlsdGVyUmVzdWx0Lm1lc3NhZ2UpO1xuXHRcdH1cblxuXHRcdEJ1c3lMb2NrZXIudW5sb2NrKHVpTW9kZWwpO1xuXHR9XG5cblx0b25Ub2tlbkRlbGV0ZShfZTogVUk1RXZlbnQ8eyB0b2tlbnM6IFRva2VuW10gfSwgVG9rZW5pemVyPik6IHZvaWQge1xuXHRcdHRoaXMuc3RhdGVNb2RlbC5zZXRQcm9wZXJ0eShcIi9zaG93UmVzdWx0XCIsIGZhbHNlKTtcblx0fVxuXG5cdG9uUXVlcnlDaGFuZ2VkKF9lOiBJbnB1dEJhc2UkQ2hhbmdlRXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCBmaWx0ZXJCYXIgPSBVSTVFbGVtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuZmlsdGVyQmFyKSBhcyBGaWx0ZXJCYXI7XG5cdFx0ZmlsdGVyQmFyLmZpcmVGaWx0ZXJzQ2hhbmdlZCh7IGNvbmRpdGlvbnNCYXNlZDogdHJ1ZSB9KTtcblx0fVxuXG5cdGNyZWF0ZUNvbnRlbnQoKTogVkJveCB7XG5cdFx0Y29uc3QgdkJveCA9IChcblx0XHRcdDxWQm94PlxuXHRcdFx0XHQ8TWVzc2FnZVN0cmlwXG5cdFx0XHRcdFx0dGV4dD1cIlByb21wdC1iYXNlZCBmaWx0ZXJpbmcgY3JlYXRlcyBjb21wbGV0ZWx5IG5ldyBmaWx0ZXIgY3JpdGVyaWEuIEdlbmVyYXRlZCBjb250ZW50IG1heSBub3QgYWx3YXlzIGJlIGFjY3VyYXRlLiBDb25zaWRlciB2ZXJpZnlpbmcgaXQuXCJcblx0XHRcdFx0XHRzaG93SWNvbj17dHJ1ZX1cblx0XHRcdFx0XHRzaG93Q2xvc2VCdXR0b249e3RydWV9XG5cdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlTbWFsbE1hcmdpbkJvdHRvbVwifVxuXHRcdFx0XHQvPlxuXHRcdFx0XHQ8RmxleEJveCByZW5kZXJUeXBlPVwiQmFyZVwiPlxuXHRcdFx0XHRcdDxJbnB1dFxuXHRcdFx0XHRcdFx0cmVmPXt0aGlzLnNlYXJjaElucHV0fVxuXHRcdFx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0XHRcdHNob3dDbGVhckljb249e3RydWV9XG5cdFx0XHRcdFx0XHRjaGFuZ2U9eyhlKTogdm9pZCA9PiB0aGlzLm9uUXVlcnlDaGFuZ2VkKGUpfVxuXHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJFbnRlciB5b3VyIHF1ZXJ5IGluIG5hdHVyYWwgbGFuZ3VhZ2UgdG8gZmlsdGVyIHRoZSBsaXN0XCJcblx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpU21hbGxNYXJnaW5FbmRcIn1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdGljb249e1wic2FwLWljb246Ly9haVwifVxuXHRcdFx0XHRcdFx0dGV4dD17XCJHb1wifVxuXHRcdFx0XHRcdFx0dHlwZT17QnV0dG9uVHlwZS5FbXBoYXNpemVkfVxuXHRcdFx0XHRcdFx0cHJlc3M9eyhldmVudDogQnV0dG9uJFByZXNzRXZlbnQpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0RkVTUkhlbHBlci5zZXRTZW1hbnRpY1N0ZXBuYW1lKGV2ZW50LmdldFNvdXJjZSgpLCBcInByZXNzXCIsIHRoaXMuZmVzclN0ZXBOYW1lKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5vbkdvUHJlc3MoKTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PC9GbGV4Qm94PlxuXHRcdFx0XHQ8RmxleEJveCByZW5kZXJUeXBlPVwiQmFyZVwiIHZpc2libGU9e2ZhbHNlfT5cblx0XHRcdFx0XHQ8TGFiZWwgdGV4dD1cIlNob3dpbmcgcmVzdWx0cyBmb3I6IFwiIGNsYXNzPXtcInNhcFVpU21hbGxNYXJnaW5Ub3BcIn0gLz5cblx0XHRcdFx0XHQ8VG9rZW5pemVyXG5cdFx0XHRcdFx0XHR0b2tlbnM9e1wie3N0YXRlPi90b2tlbnN9XCJ9XG5cdFx0XHRcdFx0XHR0b2tlbkRlbGV0ZT17KGUpOiB2b2lkID0+IHRoaXMub25Ub2tlbkRlbGV0ZShlIGFzIFVJNUV2ZW50PHsgdG9rZW5zOiBUb2tlbltdIH0sIFRva2VuaXplcj4pfVxuXHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdHRva2VuczogKGlkeDogbnVtYmVyLCBjdHg6IENvbnRleHQpOiBUb2tlbiA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qgb2JqZWN0ID0gY3R4LmdldE9iamVjdCgpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiA8VG9rZW4ga2V5PXtvYmplY3Qua2V5fSB0ZXh0PXtvYmplY3QudGV4dH0gLz47XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0PC9Ub2tlbml6ZXI+XG5cdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdDwvVkJveD5cblx0XHQpO1xuXHRcdHRoaXMuc2VhcmNoSW5wdXQuY3VycmVudD8uYWRkRXZlbnREZWxlZ2F0ZSh7XG5cdFx0XHRvbmtleXVwOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuXHRcdFx0XHRpZiAoZS5rZXkgPT09IFwiRW50ZXJcIikge1xuXHRcdFx0XHRcdHRoaXMub25Hb1ByZXNzKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRvbmZvY3VzaW46ICgpID0+IHtcblx0XHRcdFx0aWYgKHRoaXMuc2VhcmNoSW5wdXQuY3VycmVudD8uZ2V0VmFsdWVTdGF0ZSgpID09PSBcIk5vbmVcIiAmJiB0aGlzLmZpbHRlckJhck1ldGFkYXRhLmZpbmQoKGZpZWxkKSA9PiBmaWVsZC5yZXF1aXJlZCkpIHtcblx0XHRcdFx0XHR0aGlzLnNlYXJjaElucHV0LmN1cnJlbnQ/LnNldFZhbHVlU3RhdGUoXCJJbmZvcm1hdGlvblwiKTtcblx0XHRcdFx0XHRjb25zdCByZXF1aXJlZEZpZWxkcyA9IHRoaXMuZmlsdGVyQmFyTWV0YWRhdGEuZmlsdGVyKChmaWVsZCkgPT4gZmllbGQucmVxdWlyZWQpO1xuXHRcdFx0XHRcdGNvbnN0IHJlcXVpcmVkRmllbGRzVGV4dCA9IHJlcXVpcmVkRmllbGRzLm1hcCgoZmllbGQpID0+IGZpZWxkLmxhYmVsKS5qb2luKFwiLCBcIik7XG5cdFx0XHRcdFx0aWYgKHJlcXVpcmVkRmllbGRzLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHRcdFx0dGhpcy5zZWFyY2hJbnB1dC5jdXJyZW50Py5zZXRWYWx1ZVN0YXRlVGV4dChgJHtyZXF1aXJlZEZpZWxkc1RleHR9IGlzIGEgbWFuZGF0b3J5IGZpbHRlci5gKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpcy5zZWFyY2hJbnB1dC5jdXJyZW50Py5zZXRWYWx1ZVN0YXRlVGV4dChgJHtyZXF1aXJlZEZpZWxkc1RleHR9IGFyZSBtYW5kYXRvcnkgZmlsdGVycy5gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0XHRyZXR1cm4gdkJveDtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWtDQTtFQUNBLE1BQU1BLFVBQVUsR0FBRyxZQUFZOztFQUUvQjtBQUNBO0FBQ0E7QUFDQTtFQUhBLElBS3FCQyxhQUFhLFdBRGpDQyxjQUFjLENBQUMsNkJBQTZCLENBQUMsVUFJNUNDLFdBQVcsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBdUMsQ0FBQyxDQUFDLFVBRzdEQyxRQUFRLENBQUM7SUFBRUQsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLFVBRzVCRSxlQUFlLEVBQUU7SUFBQTtJQVdsQix1QkFBWUMsVUFBMEQsRUFBRUMsTUFBeUIsRUFBRTtNQUFBO01BQUE7TUFDbEcsc0NBQU1ELFVBQVUsRUFBRUMsTUFBTSxDQUFDO01BQUMsTUFwQjNCQyxZQUFZLEdBQUcsZUFBZTtNQUFBO01BQUE7TUFBQTtNQXFCN0IsTUFBS0MsVUFBVSw0QkFBRyxNQUFLQyxlQUFlLEVBQUUsMERBQXRCLHNCQUNmQywwQkFBMEIsRUFBRSxDQUM3QkMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQ2hDQyxJQUFJLENBQUMsWUFBWSxvQkFBTyw0Q0FBNEMsQ0FBQyxDQUFDO01BQUM7SUFDMUU7SUFBQztJQUFBO0lBQUEsT0FFREMsbUJBQW1CLEdBQW5CLCtCQUE0QjtNQUMzQixJQUFJLENB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
@@ -3,9 +3,11 @@ import Log from "sap/base/Log";
3
3
  import BuildingBlockBase from "sap/fe/core/buildingBlocks/BuildingBlockBase";
4
4
  import BusyLocker from "sap/fe/core/controllerextensions/BusyLocker";
5
5
  import { association, defineReference, defineUI5Class, property, type PropertiesOf } from "sap/fe/core/helpers/ClassSupport";
6
+ import ModelHelper from "sap/fe/core/helpers/ModelHelper";
6
7
  import type { Ref } from "sap/fe/core/jsx-runtime/jsx";
7
8
  import { hasValueHelpWithFixedValues } from "sap/fe/core/templating/PropertyHelper";
8
9
  import FilterUtils from "sap/fe/macros/filter/FilterUtils";
10
+ import DraftEditState from "sap/fe/macros/filterBar/DraftEditState";
9
11
  import type FilterBarAPI from "sap/fe/macros/filterBar/FilterBarAPI";
10
12
  import type { Button$PressEvent } from "sap/m/Button";
11
13
  import Button from "sap/m/Button";
@@ -30,6 +32,9 @@ import FESRHelper from "sap/ui/performance/trace/FESRHelper";
30
32
  import type EasyFilter from "ux/eng/fioriai/reuse/easyfilter/EasyFilter";
31
33
  import type { PropertyMetadata as EasyFilterPropertyMetadata } from "ux/eng/fioriai/reuse/easyfilter/EasyFilter";
32
34
 
35
+ // Editing status filter field key
36
+ const $editState = "$editState";
37
+
33
38
  /**
34
39
  * Delivery for beta release for the easy filter feature.
35
40
  * @experimental
@@ -77,7 +82,7 @@ export default class EasyFilterBar extends BuildingBlockBase {
77
82
  const filterBar = UI5Element.getElementById(this.filterBar) as FilterBar;
78
83
  const fields = FilterUtils.getConvertedFilterFields(filterBar, undefined, undefined, metaModel);
79
84
 
80
- return fields
85
+ const result = fields
81
86
  .filter((field) => field.availability !== "Hidden") // Exclude hidden filter fields. It is not possible to set a value for hidden filters, and users would not understand anyway as they cannot see these values.
82
87
  .map((field): EasyFilterPropertyMetadata => {
83
88
  const propertyObject = this.getDataModelObjectPath<Property>(field.annotationPath);
@@ -101,6 +106,34 @@ export default class EasyFilterBar extends BuildingBlockBase {
101
106
  codeList: codeList
102
107
  } as EasyFilterPropertyMetadata;
103
108
  });
109
+
110
+ // [Editing Status]
111
+ const editingStatusFilterFieldInfo = FilterUtils.getFilterPropertyInfo(filterBar).find(
112
+ (propertyInfo) => propertyInfo.key === $editState && propertyInfo.availability !== "Hidden"
113
+ );
114
+
115
+ if (editingStatusFilterFieldInfo) {
116
+ // Assemble the code list for the editing status filter values:
117
+ const props = new JSONModel({
118
+ isDraftCollaborative: ModelHelper.isCollaborationDraftSupported(metaModel)
119
+ }).createBindingContext("/");
120
+
121
+ const editingStatusCodeList = DraftEditState.getEditStatesContext(props)
122
+ .getObject("/")
123
+ .map((state: { id: string; display: string }) => ({ value: state.id, description: state.display }));
124
+
125
+ result.push({
126
+ name: $editState,
127
+ label: editingStatusFilterFieldInfo.label,
128
+ dataType: "Edm.String",
129
+ required: false,
130
+ filterable: true,
131
+ sortable: false,
132
+ codeList: editingStatusCodeList
133
+ });
134
+ }
135
+
136
+ return result;
104
137
  }
105
138
 
106
139
  async getCodeListForProperty(key: string, propertyPath: string): Promise<unknown> {
@@ -182,7 +215,10 @@ export default class EasyFilterBar extends BuildingBlockBase {
182
215
  Log.debug("Filter criteria generated: ", JSON.stringify(easyFilterResult.data.filter, null, 2));
183
216
 
184
217
  // Validate and apply the filter criteria
185
- await filterBarAPI._clearFilterValuesWithOptions(filterBar);
218
+
219
+ // If the returned conditions include the $editState filter, we need to clear the existing filter values for it (otherwise the new values will be added to the existing ones)
220
+ const clearEditFilter = easyFilterResult.data.filter.some((filterValue) => filterValue.name === $editState);
221
+ await filterBarAPI._clearFilterValuesWithOptions(filterBar, { clearEditFilter });
186
222
 
187
223
  const tokens = [];
188
224
  for (const filterValue of easyFilterResult.data.filter) {
@@ -190,7 +226,18 @@ export default class EasyFilterBar extends BuildingBlockBase {
190
226
  key: filterValue.name,
191
227
  text: `${filterValue.operator} ${filterValue.values}`
192
228
  });
193
- await FilterUtils.addFilterValues(filterBarAPI.content, filterValue.name, filterValue.operator, filterValue.values);
229
+
230
+ if (filterValue.name === $editState) {
231
+ // convert the $editState filter condition
232
+ await FilterUtils.addFilterValues(filterBarAPI.content, $editState, "DRAFT_EDIT_STATE", filterValue.values);
233
+ } else {
234
+ await FilterUtils.addFilterValues(
235
+ filterBarAPI.content,
236
+ filterValue.name,
237
+ filterValue.operator,
238
+ filterValue.values
239
+ );
240
+ }
194
241
  }
195
242
  await filterBarAPI.triggerSearch();
196
243
  this.stateModel.setProperty("/tokens", tokens);
@@ -103,7 +103,7 @@ sap.ui.define(["sap/fe/core/buildingBlocks/BuildingBlockBase", "sap/fe/core/help
103
103
  this.visible = constant(true);
104
104
  }
105
105
  if (!this.linkEnabled) this.linkEnabled = true;
106
- this.createContent();
106
+ this.content = this.createContent();
107
107
  }
108
108
  }
109
109
 
@@ -146,12 +146,10 @@ sap.ui.define(["sap/fe/core/buildingBlocks/BuildingBlockBase", "sap/fe/core/help
146
146
  enabled: this.linkEnabled,
147
147
  emptyIndicatorMode: this.emptyIndicatorMode,
148
148
  class: "sapMTextRenderWhitespaceWrap",
149
- press: async event => this.openPopover(event)
149
+ press: async event => this.openPopover(event),
150
+ ariaLabelledBy: this.ariaLabelledBy
150
151
  });
151
- if (this.ariaLabelledBy) {
152
- link.addAriaLabelledBy(this.ariaLabelledBy);
153
- }
154
- this.content = link;
152
+ return link;
155
153
  };
156
154
  return Email;
157
155
  }(BuildingBlockBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "visible", [_dec2], {
@@ -194,4 +192,4 @@ sap.ui.define(["sap/fe/core/buildingBlocks/BuildingBlockBase", "sap/fe/core/help
194
192
  _exports = Email;
195
193
  return _exports;
196
194
  }, false);
197
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFbWFpbCIsImRlZmluZVVJNUNsYXNzIiwicHJvcGVydHkiLCJ0eXBlIiwiaXNCaW5kaW5nSW5mbyIsImFzc29jaWF0aW9uIiwibXVsdGlwbGUiLCJzaW5ndWxhck5hbWUiLCJwcm9wZXJ0aWVzIiwib3RoZXJzIiwidmlzaWJsZSIsInVuZGVmaW5lZCIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJjb25zdGFudCIsImxpbmtFbmFibGVkIiwiaXNUZWFtc0Nvbm5lY3Rpb25BY3RpdmUiLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlIiwiaXNDb250YWN0c0NvbGxhYm9yYXRpb25TdXBwb3J0ZWQiLCJnZXRNYWlsUG9wb3ZlckZyb21Nc1RlYW1zSW50ZWdyYXRpb24iLCJtYWlsIiwic2V0TGlua0VuYWJsZWQiLCJlbmFibGVkIiwiY29udGVudCIsInNldEVuYWJsZWQiLCJvbk1ldGFkYXRhQXZhaWxhYmxlIiwiY3JlYXRlQ29udGVudCIsIm9wZW5Qb3BvdmVyIiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsInJldmVydFRvRGVmYXVsdEJlaGF2aW91ciIsImxpbmsiLCJnZXRTb3VyY2UiLCJtYWlsQkJ2NCIsImdldFBhcmVudCIsInBvcG92ZXIiLCJvcGVuQnkiLCJNTGlicmFyeSIsIlVSTEhlbHBlciIsInJlZGlyZWN0IiwidGV4dCIsImVtcHR5SW5kaWNhdG9yTW9kZSIsImFyaWFMYWJlbGxlZEJ5IiwiYWRkQXJpYUxhYmVsbGVkQnkiLCJCdWlsZGluZ0Jsb2NrQmFzZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRW1haWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsZGluZ0Jsb2NrQmFzZSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja0Jhc2VcIjtcbmltcG9ydCB7IGNvbnN0YW50IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGFzc29jaWF0aW9uLCBkZWZpbmVVSTVDbGFzcywgcHJvcGVydHksIHR5cGUgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IExpbmskUHJlc3NFdmVudCB9IGZyb20gXCJzYXAvbS9MaW5rXCI7XG5pbXBvcnQgTGluayBmcm9tIFwic2FwL20vTGlua1wiO1xuaW1wb3J0IHR5cGUgUG9wb3ZlciBmcm9tIFwic2FwL20vUG9wb3ZlclwiO1xuaW1wb3J0IE1MaWJyYXJ5IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5QmluZGluZ0luZm8gfSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5jb250YWN0LkVtYWlsXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbWFpbCBleHRlbmRzIEJ1aWxkaW5nQmxvY2tCYXNlPExpbms+IHtcblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImFueVwiLFxuXHRcdGlzQmluZGluZ0luZm86IHRydWVcblx0fSlcblx0dmlzaWJsZTogUHJvcGVydHlCaW5kaW5nSW5mbyA9IGNvbnN0YW50KHRydWUpO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJhbnlcIixcblx0XHRpc0JpbmRpbmdJbmZvOiB0cnVlXG5cdH0pXG5cdHRleHQhOiBQcm9wZXJ0eUJpbmRpbmdJbmZvO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGxpbmtFbmFibGVkID0gdHJ1ZTtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdG1haWwhOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRlbXB0eUluZGljYXRvck1vZGUgPSBcIk9mZlwiO1xuXG5cdC8qKlxuXHQgKiBBc3NvY2lhdGlvbiB0byBjb250cm9scyAvIElEcyB0aGF0IGxhYmVsIHRoaXMgY29udHJvbCAoc2VlIFdBSS1BUklBIGF0dHJpYnV0ZSBhcmlhLWxhYmVsbGVkYnkpLlxuXHQgKi9cblx0QGFzc29jaWF0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIsIG11bHRpcGxlOiB0cnVlLCBzaW5ndWxhck5hbWU6IFwiYXJpYUxhYmVsbGVkQnlcIiB9KVxuXHRhcmlhTGFiZWxsZWRCeSE6IEFycmF5PENvbnRyb2wgfCBzdHJpbmc+O1xuXG5cdGNvbnN0cnVjdG9yKHByb3BlcnRpZXM6ICRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8RW1haWw+LCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcGVydGllcywgb3RoZXJzKTtcblx0XHRpZiAodGhpcy52aXNpYmxlID09PSB1bmRlZmluZWQgfHwgKHR5cGVvZiB0aGlzLnZpc2libGUgPT09IFwib2JqZWN0XCIgJiYgT2JqZWN0LmtleXModGhpcy52aXNpYmxlKS5sZW5ndGggPT09IDApKSB7XG5cdFx0XHR0aGlzLnZpc2libGUgPSBjb25zdGFudCh0cnVlKTtcblx0XHR9XG5cdFx0aWYgKCF0aGlzLmxpbmtFbmFibGVkKSB0aGlzLmxpbmtFbmFibGVkID0gdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIFRlYW1zIGNvbm5lY3Rpb24gaXMgYWN0aXZlLlxuXHQgKiBAcmV0dXJucyBCb29sZWFuIHZhbHVlXG5cdCAqL1xuXHRhc3luYyBpc1RlYW1zQ29ubmVjdGlvbkFjdGl2ZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLmdldEFwcENvbXBvbmVudCgpO1xuXHRcdGlmIChhcHBDb21wb25lbnQpIHtcblx0XHRcdHJldHVybiBhcHBDb21wb25lbnQuZ2V0Q29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSgpLmlzQ29udGFjdHNDb2xsYWJvcmF0aW9uU3VwcG9ydGVkKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBtYWlsIFBvcG92ZXIgZnJvbSB0aGUgVGVhbXMgaW50ZWdyYXRpb24uXG5cdCAqIEBwYXJhbSBtYWlsXG5cdCAqIEByZXR1cm5zIFBvcG92ZXIgb3IgdW5kZWZpbmVkXG5cdCAqL1xuXHRnZXRNYWlsUG9wb3ZlckZyb21Nc1RlYW1zSW50ZWdyYXRpb24obWFpbDogc3RyaW5nKTogUHJvbWlzZTxQb3BvdmVyIHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5nZXRBcHBDb21wb25lbnQoKTtcblx0XHRpZiAoYXBwQ29tcG9uZW50KSB7XG5cdFx0XHRyZXR1cm4gYXBwQ29tcG9uZW50LmdldENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UoKS5nZXRNYWlsUG9wb3ZlckZyb21Nc1RlYW1zSW50ZWdyYXRpb24obWFpbCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldHRlciBmb3IgdGhlIGxpbmtFbmFibGVkIHByb3BlcnR5LlxuXHQgKiBAcGFyYW0gZW5hYmxlZFxuXHQgKi9cblx0c2V0TGlua0VuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMubGlua0VuYWJsZWQgPSBlbmFibGVkO1xuXHRcdHRoaXMuY29udGVudD8uc2V0RW5hYmxlZChlbmFibGVkKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25NZXRhZGF0YUF2YWlsYWJsZSBldmVudC5cblx0ICovXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdGlmICh0aGlzLnZpc2libGUgPT09IHVuZGVmaW5lZCB8fCAodHlwZW9mIHRoaXMudmlzaWJsZSA9PT0gXCJvYmplY3RcIiAmJiBPYmplY3Qua2V5cyh0aGlzLnZpc2libGUpLmxlbmd0aCA9PT0gMCkpIHtcblx0XHRcdFx0dGhpcy52aXNpYmxlID0gY29uc3RhbnQodHJ1ZSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIXRoaXMubGlua0VuYWJsZWQpIHRoaXMubGlua0VuYWJsZWQgPSB0cnVlO1xuXHRcdFx0dGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIE9wZW4gYSBwb3BvdmVyIGlmIHRoZSBUZWFtcyBjb25uZWN0aW9uIGlzIGFjdGl2ZSBvciBhIGNsYXNzaWMgbWFpbC5cblx0ICogQHBhcmFtIGV2ZW50XG5cdCAqL1xuXHRhc3luYyBvcGVuUG9wb3ZlcihldmVudDogTGluayRQcmVzc0V2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gc3RvcCBkZWZhdWx0IGJlaGF2aW9yIGJhc2VkIG9uIGhyZWZcblx0XHRsZXQgcmV2ZXJ0VG9EZWZhdWx0QmVoYXZpb3VyID0gZmFsc2U7XG5cdFx0Y29uc3QgbGluayA9IGV2ZW50LmdldFNvdXJjZSgpO1xuXHRcdC8vIFwidGhpc1wiIGRvZXNuJ3QgY29udGFpbiB0aGUgRW1haWwgaW5zdGFuY2UgY29ycmVzcG9uZGluZyB0byB0aGUgbGluayBzbyB3ZSBuZWVkIHRvIHJldHJpZXZlIGl0IGluIG9yZGVyIHRvIHJlYWQgdGhlIG1haWxcblx0XHRjb25zdCBtYWlsQkJ2NCA9IGxpbmsuZ2V0UGFyZW50KCkgYXMgRW1haWw7XG5cblx0XHQvLyB3ZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSB0ZWFtcyBjb25uZWN0aW9uIGlzIGFjdGl2ZSBub3cgYmVjYXVzZSBhdCB0ZW1wbGF0aW5nIHRoZSB0ZWFtc2hlbHBlciBzZXJ2aWNlIG1pZ2h0IG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgeWV0XG5cdFx0aWYgKGF3YWl0IHRoaXMuaXNUZWFtc0Nvbm5lY3Rpb25BY3RpdmUoKSkge1xuXHRcdFx0aWYgKG1haWxCQnY0Lm1haWwpIHtcblx0XHRcdFx0Y29uc3QgcG9wb3ZlciA9IGF3YWl0IHRoaXMuZ2V0TWFpbFBvcG92ZXJGcm9tTXNUZWFtc0ludGVncmF0aW9uKG1haWxCQnY0Lm1haWwpO1xuXHRcdFx0XHRpZiAocG9wb3Zlcikge1xuXHRcdFx0XHRcdHBvcG92ZXIub3BlbkJ5KGxpbmspO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJldmVydFRvRGVmYXVsdEJlaGF2aW91ciA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV2ZXJ0VG9EZWZhdWx0QmVoYXZpb3VyID0gdHJ1ZTtcblx0XHR9XG5cdFx0aWYgKHJldmVydFRvRGVmYXVsdEJlaGF2aW91cikge1xuXHRcdFx0TUxpYnJhcnkuVVJMSGVscGVyLnJlZGlyZWN0KGBtYWlsdG86JHttYWlsQkJ2NC5tYWlsfWApO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGUgdGhlIGNvbnRlbnQuXG5cdCAqL1xuXHRjcmVhdGVDb250ZW50KCk6IHZvaWQge1xuXHRcdGNvbnN0IGxpbmsgPSAoXG5cdFx0XHQ8TGlua1xuXHRcdFx0XHR2aXNpYmxlPXt0aGlzLnZpc2libGV9XG5cdFx0XHRcdHRleHQ9e3RoaXMudGV4dH1cblx0XHRcdFx0ZW5hYmxlZD17dGhpcy5saW5rRW5hYmxlZH1cblx0XHRcdFx0ZW1wdHlJbmRpY2F0b3JNb2RlPXt0aGlzLmVtcHR5SW5kaWNhdG9yTW9kZX1cblx0XHRcdFx0Y2xhc3M9XCJzYXBNVGV4dFJlbmRlcldoaXRlc3BhY2VXcmFwXCJcblx0XHRcdFx0cHJlc3M9e2FzeW5jIChldmVudDogTGluayRQcmVzc0V2ZW50KTogUHJvbWlzZTx2b2lkPiA9PiB0aGlzLm9wZW5Qb3BvdmVyKGV2ZW50KX1cblx0XHRcdC8+XG5cdFx0KTtcblx0XHRpZiAodGhpcy5hcmlhTGFiZWxsZWRCeSkge1xuXHRcdFx0bGluay5hZGRBcmlhTGFiZWxsZWRCeSh0aGlzLmFyaWFMYWJlbGxlZEJ5KTtcblx0XHR9XG5cdFx0dGhpcy5jb250ZW50ID0gbGluaztcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O01BWXFCQSxLQUFLLFdBRHpCQyxjQUFjLENBQUMsNkJBQTZCLENBQUMsVUFFNUNDLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUUsS0FBSztJQUNYQyxhQUFhLEVBQUU7RUFDaEIsQ0FBQyxDQUFDLFVBR0RGLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUUsS0FBSztJQUNYQyxhQUFhLEVBQUU7RUFDaEIsQ0FBQyxDQUFDLFVBR0RGLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBVSxDQUFDLENBQUMsVUFHN0JELFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsVUFHNUJELFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsVUFNNUJFLFdBQVcsQ0FBQztJQUFFRixJQUFJLEVBQUUscUJBQXFCO0lBQUVHLFFBQVEsRUFBRSxJQUFJO0lBQUVDLFlBQVksRUFBRTtFQUFpQixDQUFDLENBQUM7SUFBQTtJQUg3RjtBQUNEO0FBQ0E7O0lBSUMsZUFBWUMsVUFBa0QsRUFBRUMsTUFBeUIsRUFBRTtNQUFBO01BQzFGLHNDQUFNRCxVQUFVLEVBQUVDLE1BQU0sQ0FBQztNQUFDO01BQUE7TUFBQTtNQUFBO01BQUE7TUFBQTtNQUMxQixJQUFJLE1BQUtDLE9BQU8sS0FBS0MsU0FBUyxJQUFLLE9BQU8sTUFBS0QsT0FBTyxLQUFLLFFBQVEsSUFBSUUsTUFBTSxDQUFDQyxJQUFJLENBQUMsTUFBS0gsT0FBTyxD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
195
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFbWFpbCIsImRlZmluZVVJNUNsYXNzIiwicHJvcGVydHkiLCJ0eXBlIiwiaXNCaW5kaW5nSW5mbyIsImFzc29jaWF0aW9uIiwibXVsdGlwbGUiLCJzaW5ndWxhck5hbWUiLCJwcm9wZXJ0aWVzIiwib3RoZXJzIiwidmlzaWJsZSIsInVuZGVmaW5lZCIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJjb25zdGFudCIsImxpbmtFbmFibGVkIiwiaXNUZWFtc0Nvbm5lY3Rpb25BY3RpdmUiLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlIiwiaXNDb250YWN0c0NvbGxhYm9yYXRpb25TdXBwb3J0ZWQiLCJnZXRNYWlsUG9wb3ZlckZyb21Nc1RlYW1zSW50ZWdyYXRpb24iLCJtYWlsIiwic2V0TGlua0VuYWJsZWQiLCJlbmFibGVkIiwiY29udGVudCIsInNldEVuYWJsZWQiLCJvbk1ldGFkYXRhQXZhaWxhYmxlIiwiY3JlYXRlQ29udGVudCIsIm9wZW5Qb3BvdmVyIiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsInJldmVydFRvRGVmYXVsdEJlaGF2aW91ciIsImxpbmsiLCJnZXRTb3VyY2UiLCJtYWlsQkJ2NCIsImdldFBhcmVudCIsInBvcG92ZXIiLCJvcGVuQnkiLCJNTGlicmFyeSIsIlVSTEhlbHBlciIsInJlZGlyZWN0IiwidGV4dCIsImVtcHR5SW5kaWNhdG9yTW9kZSIsImFyaWFMYWJlbGxlZEJ5IiwiQnVpbGRpbmdCbG9ja0Jhc2UiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkVtYWlsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbGRpbmdCbG9ja0Jhc2UgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0J1aWxkaW5nQmxvY2tCYXNlXCI7XG5pbXBvcnQgeyBjb25zdGFudCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBhc3NvY2lhdGlvbiwgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5LCB0eXBlIFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBMaW5rJFByZXNzRXZlbnQgfSBmcm9tIFwic2FwL20vTGlua1wiO1xuaW1wb3J0IExpbmsgZnJvbSBcInNhcC9tL0xpbmtcIjtcbmltcG9ydCB0eXBlIFBvcG92ZXIgZnJvbSBcInNhcC9tL1BvcG92ZXJcIjtcbmltcG9ydCBNTGlicmFyeSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuY29udGFjdC5FbWFpbFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW1haWwgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrQmFzZTxMaW5rPiB7XG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJhbnlcIixcblx0XHRpc0JpbmRpbmdJbmZvOiB0cnVlXG5cdH0pXG5cdHZpc2libGU6IFByb3BlcnR5QmluZGluZ0luZm8gPSBjb25zdGFudCh0cnVlKTtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwiYW55XCIsXG5cdFx0aXNCaW5kaW5nSW5mbzogdHJ1ZVxuXHR9KVxuXHR0ZXh0ITogUHJvcGVydHlCaW5kaW5nSW5mbztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRsaW5rRW5hYmxlZCA9IHRydWU7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRtYWlsITogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0ZW1wdHlJbmRpY2F0b3JNb2RlID0gXCJPZmZcIjtcblxuXHQvKipcblx0ICogQXNzb2NpYXRpb24gdG8gY29udHJvbHMgLyBJRHMgdGhhdCBsYWJlbCB0aGlzIGNvbnRyb2wgKHNlZSBXQUktQVJJQSBhdHRyaWJ1dGUgYXJpYS1sYWJlbGxlZGJ5KS5cblx0ICovXG5cdEBhc3NvY2lhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiLCBtdWx0aXBsZTogdHJ1ZSwgc2luZ3VsYXJOYW1lOiBcImFyaWFMYWJlbGxlZEJ5XCIgfSlcblx0YXJpYUxhYmVsbGVkQnkhOiBBcnJheTxDb250cm9sIHwgc3RyaW5nPjtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzOiAkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPEVtYWlsPiwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdHN1cGVyKHByb3BlcnRpZXMsIG90aGVycyk7XG5cdFx0aWYgKHRoaXMudmlzaWJsZSA9PT0gdW5kZWZpbmVkIHx8ICh0eXBlb2YgdGhpcy52aXNpYmxlID09PSBcIm9iamVjdFwiICYmIE9iamVjdC5rZXlzKHRoaXMudmlzaWJsZSkubGVuZ3RoID09PSAwKSkge1xuXHRcdFx0dGhpcy52aXNpYmxlID0gY29uc3RhbnQodHJ1ZSk7XG5cdFx0fVxuXHRcdGlmICghdGhpcy5saW5rRW5hYmxlZCkgdGhpcy5saW5rRW5hYmxlZCA9IHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHRoZSBUZWFtcyBjb25uZWN0aW9uIGlzIGFjdGl2ZS5cblx0ICogQHJldHVybnMgQm9vbGVhbiB2YWx1ZVxuXHQgKi9cblx0YXN5bmMgaXNUZWFtc0Nvbm5lY3Rpb25BY3RpdmUoKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5nZXRBcHBDb21wb25lbnQoKTtcblx0XHRpZiAoYXBwQ29tcG9uZW50KSB7XG5cdFx0XHRyZXR1cm4gYXBwQ29tcG9uZW50LmdldENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UoKS5pc0NvbnRhY3RzQ29sbGFib3JhdGlvblN1cHBvcnRlZCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgbWFpbCBQb3BvdmVyIGZyb20gdGhlIFRlYW1zIGludGVncmF0aW9uLlxuXHQgKiBAcGFyYW0gbWFpbFxuXHQgKiBAcmV0dXJucyBQb3BvdmVyIG9yIHVuZGVmaW5lZFxuXHQgKi9cblx0Z2V0TWFpbFBvcG92ZXJGcm9tTXNUZWFtc0ludGVncmF0aW9uKG1haWw6IHN0cmluZyk6IFByb21pc2U8UG9wb3ZlciB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IHRoaXMuZ2V0QXBwQ29tcG9uZW50KCk7XG5cdFx0aWYgKGFwcENvbXBvbmVudCkge1xuXHRcdFx0cmV0dXJuIGFwcENvbXBvbmVudC5nZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlKCkuZ2V0TWFpbFBvcG92ZXJGcm9tTXNUZWFtc0ludGVncmF0aW9uKG1haWwpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXR0ZXIgZm9yIHRoZSBsaW5rRW5hYmxlZCBwcm9wZXJ0eS5cblx0ICogQHBhcmFtIGVuYWJsZWRcblx0ICovXG5cdHNldExpbmtFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHR0aGlzLmxpbmtFbmFibGVkID0gZW5hYmxlZDtcblx0XHR0aGlzLmNvbnRlbnQ/LnNldEVuYWJsZWQoZW5hYmxlZCk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIG9uTWV0YWRhdGFBdmFpbGFibGUgZXZlbnQuXG5cdCAqL1xuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5jb250ZW50KSB7XG5cdFx0XHRpZiAodGhpcy52aXNpYmxlID09PSB1bmRlZmluZWQgfHwgKHR5cGVvZiB0aGlzLnZpc2libGUgPT09IFwib2JqZWN0XCIgJiYgT2JqZWN0LmtleXModGhpcy52aXNpYmxlKS5sZW5ndGggPT09IDApKSB7XG5cdFx0XHRcdHRoaXMudmlzaWJsZSA9IGNvbnN0YW50KHRydWUpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCF0aGlzLmxpbmtFbmFibGVkKSB0aGlzLmxpbmtFbmFibGVkID0gdHJ1ZTtcblx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBPcGVuIGEgcG9wb3ZlciBpZiB0aGUgVGVhbXMgY29ubmVjdGlvbiBpcyBhY3RpdmUgb3IgYSBjbGFzc2ljIG1haWwuXG5cdCAqIEBwYXJhbSBldmVudFxuXHQgKi9cblx0YXN5bmMgb3BlblBvcG92ZXIoZXZlbnQ6IExpbmskUHJlc3NFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIHN0b3AgZGVmYXVsdCBiZWhhdmlvciBiYXNlZCBvbiBocmVmXG5cdFx0bGV0IHJldmVydFRvRGVmYXVsdEJlaGF2aW91ciA9IGZhbHNlO1xuXHRcdGNvbnN0IGxpbmsgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHQvLyBcInRoaXNcIiBkb2Vzbid0IGNvbnRhaW4gdGhlIEVtYWlsIGluc3RhbmNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGxpbmsgc28gd2UgbmVlZCB0byByZXRyaWV2ZSBpdCBpbiBvcmRlciB0byByZWFkIHRoZSBtYWlsXG5cdFx0Y29uc3QgbWFpbEJCdjQgPSBsaW5rLmdldFBhcmVudCgpIGFzIEVtYWlsO1xuXG5cdFx0Ly8gd2UgbmVlZCB0byBjaGVjayBpZiB0aGUgdGVhbXMgY29ubmVjdGlvbiBpcyBhY3RpdmUgbm93IGJlY2F1c2UgYXQgdGVtcGxhdGluZyB0aGUgdGVhbXNoZWxwZXIgc2VydmljZSBtaWdodCBub3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkIHlldFxuXHRcdGlmIChhd2FpdCB0aGlzLmlzVGVhbXNDb25uZWN0aW9uQWN0aXZlKCkpIHtcblx0XHRcdGlmIChtYWlsQkJ2NC5tYWlsKSB7XG5cdFx0XHRcdGNvbnN0IHBvcG92ZXIgPSBhd2FpdCB0aGlzLmdldE1haWxQb3BvdmVyRnJvbU1zVGVhbXNJbnRlZ3JhdGlvbihtYWlsQkJ2NC5tYWlsKTtcblx0XHRcdFx0aWYgKHBvcG92ZXIpIHtcblx0XHRcdFx0XHRwb3BvdmVyLm9wZW5CeShsaW5rKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXZlcnRUb0RlZmF1bHRCZWhhdmlvdXIgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldmVydFRvRGVmYXVsdEJlaGF2aW91ciA9IHRydWU7XG5cdFx0fVxuXHRcdGlmIChyZXZlcnRUb0RlZmF1bHRCZWhhdmlvdXIpIHtcblx0XHRcdE1MaWJyYXJ5LlVSTEhlbHBlci5yZWRpcmVjdChgbWFpbHRvOiR7bWFpbEJCdjQubWFpbH1gKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlIHRoZSBjb250ZW50LlxuXHQgKi9cblx0Y3JlYXRlQ29udGVudCgpOiBMaW5rIHtcblx0XHRjb25zdCBsaW5rID0gKFxuXHRcdFx0PExpbmtcblx0XHRcdFx0dmlzaWJsZT17dGhpcy52aXNpYmxlfVxuXHRcdFx0XHR0ZXh0PXt0aGlzLnRleHR9XG5cdFx0XHRcdGVuYWJsZWQ9e3RoaXMubGlua0VuYWJsZWR9XG5cdFx0XHRcdGVtcHR5SW5kaWNhdG9yTW9kZT17dGhpcy5lbXB0eUluZGljYXRvck1vZGV9XG5cdFx0XHRcdGNsYXNzPVwic2FwTVRleHRSZW5kZXJXaGl0ZXNwYWNlV3JhcFwiXG5cdFx0XHRcdHByZXNzPXthc3luYyAoZXZlbnQ6IExpbmskUHJlc3NFdmVudCk6IFByb21pc2U8dm9pZD4gPT4gdGhpcy5vcGVuUG9wb3ZlcihldmVudCl9XG5cdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXt0aGlzLmFyaWFMYWJlbGxlZEJ5fVxuXHRcdFx0Lz5cblx0XHQpIGFzIExpbms7XG5cdFx0cmV0dXJuIGxpbms7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7OztNQVlxQkEsS0FBSyxXQUR6QkMsY0FBYyxDQUFDLDZCQUE2QixDQUFDLFVBRTVDQyxRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFLEtBQUs7SUFDWEMsYUFBYSxFQUFFO0VBQ2hCLENBQUMsQ0FBQyxVQUdERixRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFLEtBQUs7SUFDWEMsYUFBYSxFQUFFO0VBQ2hCLENBQUMsQ0FBQyxVQUdERixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVUsQ0FBQyxDQUFDLFVBRzdCRCxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLFVBRzVCRCxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLFVBTTVCRSxXQUFXLENBQUM7SUFBRUYsSUFBSSxFQUFFLHFCQUFxQjtJQUFFRyxRQUFRLEVBQUUsSUFBSTtJQUFFQyxZQUFZLEVBQUU7RUFBaUIsQ0FBQyxDQUFDO0lBQUE7SUFIN0Y7QUFDRDtBQUNBOztJQUlDLGVBQVlDLFVBQWtELEVBQUVDLE1BQXlCLEVBQUU7TUFBQTtNQUMxRixzQ0FBTUQsVUFBVSxFQUFFQyxNQUFNLENBQUM7TUFBQztNQUFBO01BQUE7TUFBQTtNQUFBO01BQUE7TUFDMUIsSUFBSSxNQUFLQyxPQUFPLEtBQUtDLFNBQVMsSUFBSyxPQUFPLE1BQUtELE9BQU8sS0FBSyxRQUFRLElBQUlFLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLE1BQUtILE9BQU8sQ0FBQyxDQUFDSSxNQUFNLEtBQUssQ0FBRSxFQUFFO1FBQy9HLE1BQUtKLE9BQU8sR0FB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
@@ -91,7 +91,7 @@ export default class Email extends BuildingBlockBase<Link> {
91
91
  this.visible = constant(true);
92
92
  }
93
93
  if (!this.linkEnabled) this.linkEnabled = true;
94
- this.createContent();
94
+ this.content = this.createContent();
95
95
  }
96
96
  }
97
97
 
@@ -127,7 +127,7 @@ export default class Email extends BuildingBlockBase<Link> {
127
127
  /**
128
128
  * Create the content.
129
129
  */
130
- createContent(): void {
130
+ createContent(): Link {
131
131
  const link = (
132
132
  <Link
133
133
  visible={this.visible}
@@ -136,11 +136,9 @@ export default class Email extends BuildingBlockBase<Link> {
136
136
  emptyIndicatorMode={this.emptyIndicatorMode}
137
137
  class="sapMTextRenderWhitespaceWrap"
138
138
  press={async (event: Link$PressEvent): Promise<void> => this.openPopover(event)}
139
+ ariaLabelledBy={this.ariaLabelledBy}
139
140
  />
140
- );
141
- if (this.ariaLabelledBy) {
142
- link.addAriaLabelledBy(this.ariaLabelledBy);
143
- }
144
- this.content = link;
141
+ ) as Link;
142
+ return link;
145
143
  }
146
144
  }