@sapui5/sap.fe.controls 1.148.1 → 1.148.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.controls",
3
- "version": "1.148.1",
3
+ "version": "1.148.2",
4
4
  "description": "SAPUI5 Library sap.fe.controls",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -6,7 +6,7 @@
6
6
  SAP UI development toolkit for HTML5 (SAPUI5)
7
7
  (c) Copyright 2009-2026 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.148.1</version>
9
+ <version>1.148.2</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.controls</documentation>
12
12
 
@@ -72,11 +72,17 @@ sap.ui.define(["sap/base/util/deepEqual", "sap/ui/core/Lib", "sap/ui/core/format
72
72
  return dateTimeOffset.formatValue(value, "string");
73
73
  }
74
74
  switch (tokenType) {
75
+ // Edm.Date / Edm.TimeOfDay are timezone-free; UTC: true avoids
76
+ // off-by-one in negative-offset zones.
75
77
  case "Calendar":
76
- formattedDateTime = DateFormat.getDateInstance().format(value);
78
+ formattedDateTime = DateFormat.getDateInstance({
79
+ UTC: true
80
+ }).format(value);
77
81
  break;
78
82
  case "Time":
79
- formattedDateTime = DateFormat.getTimeInstance().format(value);
83
+ formattedDateTime = DateFormat.getTimeInstance({
84
+ UTC: true
85
+ }).format(value);
80
86
  break;
81
87
  default:
82
88
  break;
@@ -260,4 +266,4 @@ sap.ui.define(["sap/base/util/deepEqual", "sap/ui/core/Lib", "sap/ui/core/format
260
266
  };
261
267
  return EasyFilterUtils;
262
268
  }, false);
263
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZGF0ZVRpbWVPZmZzZXQiLCJEYXRlVGltZU9mZnNldCIsImFyZUl0ZW1zU2FtZSIsImFycjEiLCJhcnIyIiwibGVuZ3RoIiwiaSIsIm9wZXJhdG9yIiwic2VsZWN0ZWRWYWx1ZXMiLCJldmVyeSIsImZpcnN0VmFsdWUiLCJpbmRleCIsIm90aGVyVmFsdWUiLCJEYXRlIiwiZGVlcEVxdWFsIiwidmFsdWUiLCJkZXNjcmlwdGlvbiIsImFyZUFycmF5U2FtZSIsImFyZUNvZGVMaXN0c1NhbWUiLCJhcnJOZXcxIiwiZ2V0Q29kZUxpc3RBcnJheSIsImFyck5ldzIiLCJkZXNjcmlwdGlvbk5ldzEiLCJtYXAiLCJkYXRhIiwiZGVzY3JpcHRpb25OZXcyIiwidmFsdWUxIiwidmFsdWUyIiwiYXJyIiwiY29udmVydERhdGVUb1N0cmluZyIsInRva2VuVHlwZSIsImlzRGF0ZVRpbWVPZmZzZXQiLCJmb3JtYXR0ZWREYXRlVGltZSIsImZvcm1hdFZhbHVlIiwiRGF0ZUZvcm1hdCIsImdldERhdGVJbnN0YW5jZSIsImZvcm1hdCIsImdldFRpbWVJbnN0YW5jZSIsIm1hcE9wZXJhdG9yIiwibmV3VmFsdWUiLCJjb252ZXJ0Qm9vbFRvU3RyaW5nIiwiRmlsdGVyT3BlcmF0b3IiLCJHVCIsIkxUIiwiR0UiLCJMRSIsIkVRIiwiQ29udGFpbnMiLCJFbmRzV2l0aCIsIlN0YXJ0c1dpdGgiLCJORSIsIk5vdENvbnRhaW5zIiwiTm90RW5kc1dpdGgiLCJOb3RTdGFydHNXaXRoIiwidG9TdHJpbmciLCJtYXBPcGVyYXRvckZvclZhbHVlSGVscCIsIm1hcE9wZXJhdG9yRm9yQmV0d2Vlbk9wZXJhdG9yIiwidmFsdWVzIiwibmV3VmFsdWUxIiwibmV3VmFsdWUyIiwiQlQiLCJpc0JldHdlZW5TZWxlY3RlZFZhbHVlcyIsIk5CIiwiZ2V0VGV4dCIsImZvcm1hdERhdGEiLCJ0b2tlbnMiLCJmaWx0ZXJWYWx1ZXMiLCJmaWx0ZXJCYXJNZXRhZGF0YSIsInNldE1lc3NhZ2VTdHJpcEZvclZhbGlkYXRlZEZpbHRlcnMiLCJ2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zIiwiZXJyb3JNZXNzYWdlSGFuZGxlciIsIkVycm9yTWVzc2FnZUhhbmRsZXIiLCJmaWx0ZXJWYWx1ZSIsImZpbHRlckNyaXRlcmlhIiwiZmluZCIsImZpZWxkIiwibmFtZSIsImlzRmlsdGVyYWJsZVByb3BlcnR5IiwiaXNJblZhbGlkVG9rZW4iLCJ2YWxpZGF0ZSIsInVwZGF0ZVRva2VucyIsImhhc0Vycm9ycyIsImdldEVycm9yTWVzc2FnZSIsInRva2VuSW5kZXgiLCJmaW5kSW5kZXgiLCJ0b2tlbiIsImtleSIsImtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMiLCJjcmVhdGVLZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzIiwicHVzaCIsImxhYmVsIiwidHlwZSIsImJ1c3kiLCJjdXJyZW50VG9rZW4iLCJpc1JlcXVpcmVkIiwiRWFzeUZpbHRlclV0aWxzIiwicmVzb2x2ZVByb3BlcnR5TmFtZSIsInBhdGgiLCJpbmNsdWRlcyIsInNwbGl0IiwiZmlsdGVyIiwiQm9vbGVhbiIsInBvcCIsIl9leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJ1dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByaW1pdGl2ZVR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvRWRtXCI7XG5pbXBvcnQgZGVlcEVxdWFsIGZyb20gXCJzYXAvYmFzZS91dGlsL2RlZXBFcXVhbFwiO1xuaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgRGF0ZUZvcm1hdCBmcm9tIFwic2FwL3VpL2NvcmUvZm9ybWF0L0RhdGVGb3JtYXRcIjtcbmltcG9ydCBGaWx0ZXJPcGVyYXRvciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5pbXBvcnQgRGF0ZVRpbWVPZmZzZXQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS90eXBlL0RhdGVUaW1lT2Zmc2V0XCI7XG5pbXBvcnQgdHlwZSB7IEVhc3lGaWx0ZXJSZXN1bHQsIFByb3BlcnR5TWV0YWRhdGEgfSBmcm9tIFwidXgvZW5nL2Zpb3JpYWkvcmV1c2UvZWFzeWZpbHRlci9FYXN5RmlsdGVyXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEJldHdlZW5TZWxlY3RlZFZhbHVlcyxcblx0Q29kZUxpc3RUeXBlLFxuXHRFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSxcblx0VG9rZW5EZWZpbml0aW9uLFxuXHRUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbixcblx0VG9rZW5UeXBlLFxuXHRWYWx1ZUhlbHBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMsXG5cdFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvblxufSBmcm9tIFwiLi9FYXN5RmlsdGVyQmFyQ29udGFpbmVyXCI7XG5pbXBvcnQgRXJyb3JNZXNzYWdlSGFuZGxlciBmcm9tIFwiLi9FcnJvck1lc3NhZ2VIYW5kbGVyXCI7XG5cbnR5cGUgY29kZUxpc3RUeXBlID0gUHJvcGVydHlNZXRhZGF0YVtcImNvZGVMaXN0XCJdO1xudHlwZSBmaW5hbENvZGVMaXN0VHlwZSA9IHsgdmFsdWU6IFByaW1pdGl2ZVR5cGU7IGRlc2NyaXB0aW9uPzogc3RyaW5nIH1bXTtcbmNvbnN0IHJlc291cmNlQnVuZGxlID0gTGliLmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvbnRyb2xzXCIpITtcbmNvbnN0IGRhdGVUaW1lT2Zmc2V0ID0gbmV3IERhdGVUaW1lT2Zmc2V0KCk7XG5cbmZ1bmN0aW9uIGFyZUl0ZW1zU2FtZShcblx0YXJyMTogcmVhZG9ubHkgVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSB8IFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdLFxuXHRhcnIyOiByZWFkb25seSBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdIHwgVmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW11cbik6IGJvb2xlYW4ge1xuXHRpZiAoYXJyMS5sZW5ndGggIT09IGFycjIubGVuZ3RoKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Ly8gQ29tcGFyZSBlbGVtZW50cyBvZiBib3RoIGFycmF5c1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGFycjEubGVuZ3RoOyBpKyspIHtcblx0XHRpZiAoXG5cdFx0XHRhcnIxW2ldLm9wZXJhdG9yICE9PSBhcnIyW2ldLm9wZXJhdG9yIHx8XG5cdFx0XHQhYXJyMVtpXS5zZWxlY3RlZFZhbHVlcy5ldmVyeSgoZmlyc3RWYWx1ZSwgaW5kZXgpID0+IHtcblx0XHRcdFx0Y29uc3Qgb3RoZXJWYWx1ZSA9IGFycjJbaV0uc2VsZWN0ZWRWYWx1ZXNbaW5kZXhdO1xuXG5cdFx0XHRcdC8vIEhhbmRsZSBEYXRlIG9iamVjdHNcblx0XHRcdFx0aWYgKGZpcnN0VmFsdWUgaW5zdGFuY2VvZiBEYXRlIHx8IG90aGVyVmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRlZXBFcXVhbChmaXJzdFZhbHVlLCBvdGhlclZhbHVlKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEhhbmRsZSBvYmplY3RzIHdpdGggZGVlcCBlcXVhbGl0eVxuXHRcdFx0XHRpZiAodHlwZW9mIGZpcnN0VmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG90aGVyVmFsdWUgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0XHRyZXR1cm4gZGVlcEVxdWFsKGZpcnN0VmFsdWUudmFsdWUsIG90aGVyVmFsdWUudmFsdWUpICYmIGZpcnN0VmFsdWUuZGVzY3JpcHRpb24gPT09IG90aGVyVmFsdWUuZGVzY3JpcHRpb247XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBGYWxsYmFjayB0byBkaXJlY3QgY29tcGFyaXNvblxuXHRcdFx0XHRyZXR1cm4gZmlyc3RWYWx1ZSA9PT0gb3RoZXJWYWx1ZTtcblx0XHRcdH0pXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRydWU7IC8vIEFycmF5cyBhcmUgdGhlIHNhbWVcbn1cblxuZnVuY3Rpb24gYXJlQXJyYXlTYW1lKGFycjE6IHJlYWRvbmx5IHVua25vd25bXSwgYXJyMjogcmVhZG9ubHkgdW5rbm93bltdKTogYm9vbGVhbiB7XG5cdGlmIChhcnIxLmxlbmd0aCAhPT0gYXJyMi5sZW5ndGgpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0Ly8gQ29tcGFyZSBlbGVtZW50cyBvZiBib3RoIGFycmF5c1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGFycjEubGVuZ3RoOyBpKyspIHtcblx0XHRpZiAoYXJyMVtpXSAhPT0gYXJyMltpXSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdHJ1ZTsgLy8gQXJyYXlzIGFyZSB0aGUgc2FtZVxufVxuXG5hc3luYyBmdW5jdGlvbiBhcmVDb2RlTGlzdHNTYW1lKGFycjE6IGNvZGVMaXN0VHlwZSwgYXJyMjogY29kZUxpc3RUeXBlKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdGNvbnN0IGFyck5ldzE6IGZpbmFsQ29kZUxpc3RUeXBlIHwgdW5kZWZpbmVkID0gYXdhaXQgZ2V0Q29kZUxpc3RBcnJheShhcnIxKTtcblx0Y29uc3QgYXJyTmV3MjogZmluYWxDb2RlTGlzdFR5cGUgfCB1bmRlZmluZWQgPSBhd2FpdCBnZXRDb2RlTGlzdEFycmF5KGFycjIpO1xuXHRjb25zdCBkZXNjcmlwdGlvbk5ldzEgPSBhcnJOZXcxPy5tYXAoKGRhdGEpID0+IGRhdGEuZGVzY3JpcHRpb24pO1xuXHRjb25zdCBkZXNjcmlwdGlvbk5ldzIgPSBhcnJOZXcyPy5tYXAoKGRhdGEpID0+IGRhdGEuZGVzY3JpcHRpb24pO1xuXG5cdGNvbnN0IHZhbHVlMSA9IGFyck5ldzE/Lm1hcCgoZGF0YSkgPT4gZGF0YS52YWx1ZSk7XG5cdGNvbnN0IHZhbHVlMiA9IGFyck5ldzI/Lm1hcCgoZGF0YSkgPT4gZGF0YS52YWx1ZSk7XG5cdGlmICghZGVzY3JpcHRpb25OZXcxIHx8ICFkZXNjcmlwdGlvbk5ldzIpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0cmV0dXJuIGFyZUFycmF5U2FtZShkZXNjcmlwdGlvbk5ldzEsIGRlc2NyaXB0aW9uTmV3MikgJiYgYXJlQXJyYXlTYW1lKHZhbHVlMSBhcyBQcmltaXRpdmVUeXBlLCB2YWx1ZTIgYXMgUHJpbWl0aXZlVHlwZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvZGVMaXN0QXJyYXkoYXJyOiBjb2RlTGlzdFR5cGUpOiBQcm9taXNlPGZpbmFsQ29kZUxpc3RUeXBlIHwgdW5kZWZpbmVkPiB7XG5cdGlmICh0eXBlb2YgYXJyID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRyZXR1cm4gYXJyKCk7XG5cdH1cblx0cmV0dXJuIGFycjtcbn1cblxuZnVuY3Rpb24gY29udmVydERhdGVUb1N0cmluZyh2YWx1ZTogRGF0ZSwgdG9rZW5UeXBlOiBUb2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuXHRsZXQgZm9ybWF0dGVkRGF0ZVRpbWUgPSBcIlwiO1xuXHRpZiAoaXNEYXRlVGltZU9mZnNldCkge1xuXHRcdHJldHVybiBkYXRlVGltZU9mZnNldC5mb3JtYXRWYWx1ZSh2YWx1ZSwgXCJzdHJpbmdcIikgYXMgc3RyaW5nO1xuXHR9XG5cdHN3aXRjaCAodG9rZW5UeXBlKSB7XG5cdFx0Y2FzZSBcIkNhbGVuZGFyXCI6XG5cdFx0XHRmb3JtYXR0ZWREYXRlVGltZSA9IERhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKCkuZm9ybWF0KHZhbHVlKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJUaW1lXCI6XG5cdFx0XHRmb3JtYXR0ZWREYXRlVGltZSA9IERhdGVGb3JtYXQuZ2V0VGltZUluc3RhbmNlKCkuZm9ybWF0KHZhbHVlKTtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRicmVhaztcblx0fVxuXHRyZXR1cm4gZm9ybWF0dGVkRGF0ZVRpbWU7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvcGVyYXRvciBhbmQgdmFsdWUuXG4gKiBAcGFyYW0gb3BlcmF0b3IgVGhlIG9wZXJhdG9yIHRvIHJlcHJlc2VudFxuICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byByZXByZXNlbnRcbiAqIEBwYXJhbSB0b2tlblR5cGUgVGhlIHRva2VuJ3MgdHlwZVxuICogQHBhcmFtIGlzRGF0ZVRpbWVPZmZzZXQgQ2hlY2tzIGlmIHRoZSBkYXRhIHR5cGUgaXMgb2YgRGF0ZVRpbWVPZmZzZXRcbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9wZXJhdG9yIGFuZCB2YWx1ZVxuICovXG5mdW5jdGlvbiBtYXBPcGVyYXRvcihcblx0b3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLFxuXHR2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUsXG5cdHRva2VuVHlwZTogVG9rZW5UeXBlLFxuXHRpc0RhdGVUaW1lT2Zmc2V0OiBib29sZWFuXG4pOiBzdHJpbmcge1xuXHRsZXQgbmV3VmFsdWU6IG51bWJlciB8IHN0cmluZyA9IFwiXCI7XG5cdGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0bmV3VmFsdWUgPSBjb252ZXJ0Qm9vbFRvU3RyaW5nKHZhbHVlKTtcblx0fSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRuZXdWYWx1ZSA9IGNvbnZlcnREYXRlVG9TdHJpbmcodmFsdWUsIHRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldCk7XG5cdH0gZWxzZSB7XG5cdFx0bmV3VmFsdWUgPSB2YWx1ZTtcblx0fVxuXG5cdHN3aXRjaCAob3BlcmF0b3IpIHtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkdUOlxuXHRcdFx0cmV0dXJuIGA+ICR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkxUOlxuXHRcdFx0cmV0dXJuIGA8ICR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkdFOlxuXHRcdFx0cmV0dXJuIGA+PSAke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5MRTpcblx0XHRcdHJldHVybiBgPD0gJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuRVE6XG5cdFx0XHRyZXR1cm4gYCR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkNvbnRhaW5zOlxuXHRcdFx0cmV0dXJuIGAqJHtuZXdWYWx1ZX0qYDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkVuZHNXaXRoOlxuXHRcdFx0cmV0dXJuIGAqJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuU3RhcnRzV2l0aDpcblx0XHRcdHJldHVybiBgJHtuZXdWYWx1ZX0qYDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLk5FOlxuXHRcdFx0cmV0dXJuIGAhPSgke25ld1ZhbHVlfSlgO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTm90Q29udGFpbnM6XG5cdFx0XHRyZXR1cm4gYCEoKiR7bmV3VmFsdWV9KilgO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTm90RW5kc1dpdGg6XG5cdFx0XHRyZXR1cm4gYCEoKiR7bmV3VmFsdWV9KWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5Ob3RTdGFydHNXaXRoOlxuXHRcdFx0cmV0dXJuIGAhKCR7bmV3VmFsdWV9KilgO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gbmV3VmFsdWU/LnRvU3RyaW5nKCk7XG5cdH1cbn1cblxuZnVuY3Rpb24gbWFwT3BlcmF0b3JGb3JWYWx1ZUhlbHAob3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLCB2YWx1ZTogQ29kZUxpc3RUeXBlLCB0b2tlblR5cGU6IFRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldDogYm9vbGVhbik6IHN0cmluZyB7XG5cdHJldHVybiBtYXBPcGVyYXRvcihvcGVyYXRvciwgdmFsdWUuZGVzY3JpcHRpb24sIHRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldCk7XG59XG5cbmZ1bmN0aW9uIG1hcE9wZXJhdG9yRm9yQmV0d2Vlbk9wZXJhdG9yKFxuXHRvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IsXG5cdHZhbHVlczogQmV0d2VlblNlbGVjdGVkVmFsdWVzIHwgVmFsdWVIZWxwQmV0d2VlblNlbGVjdGVkVmFsdWVzLFxuXHR0b2tlblR5cGU6IFRva2VuVHlwZSxcblx0aXNEYXRlVGltZU9mZnNldDogYm9vbGVhblxuKTogc3RyaW5nIHtcblx0bGV0IG5ld1ZhbHVlMTogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9IFwiXCI7XG5cdGxldCBuZXdWYWx1ZTI6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSBcIlwiO1xuXHRpZiAodHlwZW9mIHZhbHVlc1swXSA9PT0gXCJib29sZWFuXCIpIHtcblx0XHRuZXdWYWx1ZTEgPSBjb252ZXJ0Qm9vbFRvU3RyaW5nKHZhbHVlc1swXSk7XG5cdH0gZWxzZSBpZiAodmFsdWVzWzBdIGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdG5ld1ZhbHVlMSA9IGNvbnZlcnREYXRlVG9TdHJpbmcodmFsdWVzWzBdLCB0b2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQpO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZXNbMF0gPT09IFwib2JqZWN0XCIpIHtcblx0XHRuZXdWYWx1ZTEgPSB2YWx1ZXNbMF0uZGVzY3JpcHRpb24gYXMgc3RyaW5nO1xuXHR9IGVsc2Uge1xuXHRcdG5ld1ZhbHVlMSA9IHZhbHVlc1swXTtcblx0fVxuXG5cdGlmICh0eXBlb2YgdmFsdWVzWzFdID09PSBcImJvb2xlYW5cIikge1xuXHRcdG5ld1ZhbHVlMiA9IGNvbnZlcnRCb29sVG9TdHJpbmcodmFsdWVzWzFdKTtcblx0fSBlbHNlIGlmICh2YWx1ZXNbMV0gaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0bmV3VmFsdWUyID0gY29udmVydERhdGVUb1N0cmluZyh2YWx1ZXNbMV0sIHRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldCk7XG5cdH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlc1swXSA9PT0gXCJvYmplY3RcIikge1xuXHRcdG5ld1ZhbHVlMiA9IHZhbHVlc1sxXS5kZXNjcmlwdGlvbiBhcyBzdHJpbmc7XG5cdH0gZWxzZSB7XG5cdFx0bmV3VmFsdWUyID0gdmFsdWVzWzFdO1xuXHR9XG5cdGlmIChvcGVyYXRvciA9PT0gRmlsdGVyT3BlcmF0b3IuQlQpIHtcblx0XHRyZXR1cm4gYCR7bmV3VmFsdWUxfS4uLiR7bmV3VmFsdWUyfWA7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGAhKCR7bmV3VmFsdWUxfS4uLiR7bmV3VmFsdWUyfSlgO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGlzQmV0d2VlblNlbGVjdGVkVmFsdWVzKG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcik6IGJvb2xlYW4ge1xuXHRyZXR1cm4gb3BlcmF0b3IgPT09IEZpbHRlck9wZXJhdG9yLkJUIHx8IG9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5OQjtcbn1cblxuZnVuY3Rpb24gY29udmVydEJvb2xUb1N0cmluZyh2YWx1ZTogYm9vbGVhbik6IHN0cmluZyB7XG5cdHJldHVybiB2YWx1ZVxuXHRcdD8gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfU0VMRUNURURfVkFMVUVTX1RSVUVcIilcblx0XHQ6IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1NFTEVDVEVEX1ZBTFVFU19GQUxTRVwiKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0RGF0YShcblx0dG9rZW5zOiBUb2tlbkRlZmluaXRpb25bXSxcblx0ZmlsdGVyVmFsdWVzOiBFYXN5RmlsdGVyUmVzdWx0W1wiZmlsdGVyXCJdLFxuXHRmaWx0ZXJCYXJNZXRhZGF0YTogRWFzeUZpbHRlclByb3BlcnR5TWV0YWRhdGFbXSxcblx0c2V0TWVzc2FnZVN0cmlwRm9yVmFsaWRhdGVkRmlsdGVyczogKG1zZzogc3RyaW5nKSA9PiB2b2lkXG4pOiB2b2lkIHtcblx0aWYgKCFmaWx0ZXJWYWx1ZXMpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCB2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xuXHRjb25zdCBlcnJvck1lc3NhZ2VIYW5kbGVyID0gbmV3IEVycm9yTWVzc2FnZUhhbmRsZXIoKTtcblxuXHRmb3IgKGNvbnN0IGZpbHRlclZhbHVlIG9mIGZpbHRlclZhbHVlcykge1xuXHRcdGNvbnN0IGZpbHRlckNyaXRlcmlhID0gZmlsdGVyQmFyTWV0YWRhdGEuZmluZCgoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09IGZpbHRlclZhbHVlLm5hbWUpO1xuXHRcdGlmICghZmlsdGVyQ3JpdGVyaWEpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdC8vIEhhbmRsZSBub24tZmlsdGVyYWJsZSBhbmQgaGlkZGVuIGZpbHRlcnNcblx0XHRpZiAoIWVycm9yTWVzc2FnZUhhbmRsZXIuaXNGaWx0ZXJhYmxlUHJvcGVydHkoZmlsdGVyQ3JpdGVyaWEpKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHQvLyBWYWxpZGF0ZSBmb3IgZmlsdGVyIHZhbHVlIHJlc3RyaWN0aW9uXG5cdFx0Y29uc3QgaXNJblZhbGlkVG9rZW4gPSAhZXJyb3JNZXNzYWdlSGFuZGxlci52YWxpZGF0ZShmaWx0ZXJDcml0ZXJpYSwgZmlsdGVyVmFsdWUpO1xuXG5cdFx0Ly8gVXBkYXRlIHRva2Vuc1xuXHRcdHVwZGF0ZVRva2Vucyh0b2tlbnMsIGZpbHRlclZhbHVlLCBmaWx0ZXJDcml0ZXJpYSwgdmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2VucywgaXNJblZhbGlkVG9rZW4pO1xuXHR9XG5cblx0Ly8gSGFuZGxlIHZhbGlkYXRpb24gbWVzc2FnZXNcblx0aWYgKGVycm9yTWVzc2FnZUhhbmRsZXIuaGFzRXJyb3JzKCkpIHtcblx0XHRzZXRNZXNzYWdlU3RyaXBGb3JWYWxpZGF0ZWRGaWx0ZXJzKGVycm9yTWVzc2FnZUhhbmRsZXIuZ2V0RXJyb3JNZXNzYWdlKCkpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVRva2Vucyhcblx0dG9rZW5zOiBUb2tlbkRlZmluaXRpb25bXSxcblx0ZmlsdGVyVmFsdWU6IEVhc3lGaWx0ZXJSZXN1bHRbXCJmaWx0ZXJcIl1bMF0sXG5cdGZpbHRlckNyaXRlcmlhOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSxcblx0dmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2VuczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4sXG5cdGlzSW5WYWxpZFRva2VuOiBib29sZWFuXG4pOiB2b2lkIHtcblx0Y29uc3QgdG9rZW5JbmRleCA9IHRva2Vucy5maW5kSW5kZXgoKHRva2VuKSA9PiB0b2tlbi5rZXkgPT09IGZpbHRlclZhbHVlLm5hbWUpO1xuXHRjb25zdCBrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzID0gY3JlYXRlS2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyhmaWx0ZXJWYWx1ZSk7XG5cblx0aWYgKHRva2VuSW5kZXggPT09IC0xKSB7XG5cdFx0Ly8gQWRkIG5ldyB0b2tlblxuXHRcdHRva2Vucy5wdXNoKHtcblx0XHRcdGtleTogZmlsdGVyVmFsdWUubmFtZSxcblx0XHRcdGxhYmVsOiBmaWx0ZXJDcml0ZXJpYS5sYWJlbCBhcyBzdHJpbmcsXG5cdFx0XHRrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzOiBpc0luVmFsaWRUb2tlbiA/IFtdIDogW2tleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXNdLFxuXHRcdFx0dHlwZTogZmlsdGVyQ3JpdGVyaWEudHlwZSBhcyBFeGNsdWRlPFRva2VuVHlwZSwgXCJWYWx1ZUhlbHBcIj4sXG5cdFx0XHRidXN5OiBmaWx0ZXJDcml0ZXJpYS50eXBlID09PSBcIlZhbHVlSGVscFwiXG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gVXBkYXRlIGV4aXN0aW5nIHRva2VuXG5cdFx0Y29uc3QgY3VycmVudFRva2VuID0gdG9rZW5zW3Rva2VuSW5kZXhdO1xuXHRcdGlmIChpc0luVmFsaWRUb2tlbikge1xuXHRcdFx0Y3VycmVudFRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgPSBbXTtcblx0XHR9IGVsc2UgaWYgKChjdXJyZW50VG9rZW4uaXNSZXF1aXJlZCA/PyBmYWxzZSkgJiYgIXZpc2l0ZWRNYXBGb3JNYW5kYXRvcnlUb2tlbnNbY3VycmVudFRva2VuLmtleV0pIHtcblx0XHRcdGN1cnJlbnRUb2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzID0gW2tleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXNdO1xuXHRcdFx0dmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2Vuc1tjdXJyZW50VG9rZW4ua2V5XSA9IHRydWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdChjdXJyZW50VG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyBhcyBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdKS5wdXNoKGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMpO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBjcmVhdGVLZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzKGZpbHRlclZhbHVlOiBFYXN5RmlsdGVyUmVzdWx0W1wiZmlsdGVyXCJdWzBdKTogVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb24ge1xuXHRjb25zdCB7IG9wZXJhdG9yLCB2YWx1ZXMgfSA9IGZpbHRlclZhbHVlO1xuXG5cdGlmIChFYXN5RmlsdGVyVXRpbHMuaXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMob3BlcmF0b3IpKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG9wZXJhdG9yLFxuXHRcdFx0c2VsZWN0ZWRWYWx1ZXM6IHZhbHVlcyBhcyBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXNcblx0XHR9O1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHRvcGVyYXRvcjogb3BlcmF0b3IgYXMgRXhjbHVkZTxGaWx0ZXJPcGVyYXRvciwgRmlsdGVyT3BlcmF0b3IuQlQgfCBGaWx0ZXJPcGVyYXRvci5OQj4sXG5cdFx0c2VsZWN0ZWRWYWx1ZXM6IHZhbHVlcyBhcyBzdHJpbmdbXSB8IERhdGVbXSB8IG51bWJlcltdIHwgYm9vbGVhbltdXG5cdH07XG59XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIHBsYWluIHByb3BlcnR5IG5hbWUgZnJvbSBhbiBPRGF0YS1zdHlsZSBwYXRoIChlLmcuIFwiL1NhbGVzT3JkZXJNYW5hZ2UvU29sZFRvUGFydHlcIiDihpIgXCJTb2xkVG9QYXJ0eVwiKS5cbiAqIEBwYXJhbSBwYXRoIFRoZSBPRGF0YS1zdHlsZSBwYXRoIG9yIHBsYWluIHByb3BlcnR5IG5hbWUgdG8gcmVzb2x2ZS5cbiAqIEByZXR1cm5zIFRoZSBsYXN0IHBhdGggc2VnbWVudCwgb3IgdGhlIG9yaWdpbmFsIHN0cmluZyBpZiBubyBcIi9cIiBpcyBwcmVzZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVByb3BlcnR5TmFtZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4gcGF0aC5pbmNsdWRlcyhcIi9cIikgPyBwYXRoLnNwbGl0KFwiL1wiKS5maWx0ZXIoQm9vbGVhbikucG9wKCkgPz8gcGF0aCA6IHBhdGg7XG59XG5cbmNvbnN0IEVhc3lGaWx0ZXJVdGlscyA9IHtcblx0YXJlSXRlbXNTYW1lLFxuXHRhcmVDb2RlTGlzdHNTYW1lLFxuXHRnZXRDb2RlTGlzdEFycmF5LFxuXHRhcmVBcnJheVNhbWUsXG5cdG1hcE9wZXJhdG9yLFxuXHRtYXBPcGVyYXRvckZvckJldHdlZW5PcGVyYXRvcixcblx0aXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMsXG5cdGZvcm1hdERhdGEsXG5cdG1hcE9wZXJhdG9yRm9yVmFsdWVIZWxwLFxuXHRyZXNvbHZlUHJvcGVydHlOYW1lXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFYXN5RmlsdGVyVXRpbHM7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
269
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZGF0ZVRpbWVPZmZzZXQiLCJEYXRlVGltZU9mZnNldCIsImFyZUl0ZW1zU2FtZSIsImFycjEiLCJhcnIyIiwibGVuZ3RoIiwiaSIsIm9wZXJhdG9yIiwic2VsZWN0ZWRWYWx1ZXMiLCJldmVyeSIsImZpcnN0VmFsdWUiLCJpbmRleCIsIm90aGVyVmFsdWUiLCJEYXRlIiwiZGVlcEVxdWFsIiwidmFsdWUiLCJkZXNjcmlwdGlvbiIsImFyZUFycmF5U2FtZSIsImFyZUNvZGVMaXN0c1NhbWUiLCJhcnJOZXcxIiwiZ2V0Q29kZUxpc3RBcnJheSIsImFyck5ldzIiLCJkZXNjcmlwdGlvbk5ldzEiLCJtYXAiLCJkYXRhIiwiZGVzY3JpcHRpb25OZXcyIiwidmFsdWUxIiwidmFsdWUyIiwiYXJyIiwiY29udmVydERhdGVUb1N0cmluZyIsInRva2VuVHlwZSIsImlzRGF0ZVRpbWVPZmZzZXQiLCJmb3JtYXR0ZWREYXRlVGltZSIsImZvcm1hdFZhbHVlIiwiRGF0ZUZvcm1hdCIsImdldERhdGVJbnN0YW5jZSIsIlVUQyIsImZvcm1hdCIsImdldFRpbWVJbnN0YW5jZSIsIm1hcE9wZXJhdG9yIiwibmV3VmFsdWUiLCJjb252ZXJ0Qm9vbFRvU3RyaW5nIiwiRmlsdGVyT3BlcmF0b3IiLCJHVCIsIkxUIiwiR0UiLCJMRSIsIkVRIiwiQ29udGFpbnMiLCJFbmRzV2l0aCIsIlN0YXJ0c1dpdGgiLCJORSIsIk5vdENvbnRhaW5zIiwiTm90RW5kc1dpdGgiLCJOb3RTdGFydHNXaXRoIiwidG9TdHJpbmciLCJtYXBPcGVyYXRvckZvclZhbHVlSGVscCIsIm1hcE9wZXJhdG9yRm9yQmV0d2Vlbk9wZXJhdG9yIiwidmFsdWVzIiwibmV3VmFsdWUxIiwibmV3VmFsdWUyIiwiQlQiLCJpc0JldHdlZW5TZWxlY3RlZFZhbHVlcyIsIk5CIiwiZ2V0VGV4dCIsImZvcm1hdERhdGEiLCJ0b2tlbnMiLCJmaWx0ZXJWYWx1ZXMiLCJmaWx0ZXJCYXJNZXRhZGF0YSIsInNldE1lc3NhZ2VTdHJpcEZvclZhbGlkYXRlZEZpbHRlcnMiLCJ2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zIiwiZXJyb3JNZXNzYWdlSGFuZGxlciIsIkVycm9yTWVzc2FnZUhhbmRsZXIiLCJmaWx0ZXJWYWx1ZSIsImZpbHRlckNyaXRlcmlhIiwiZmluZCIsImZpZWxkIiwibmFtZSIsImlzRmlsdGVyYWJsZVByb3BlcnR5IiwiaXNJblZhbGlkVG9rZW4iLCJ2YWxpZGF0ZSIsInVwZGF0ZVRva2VucyIsImhhc0Vycm9ycyIsImdldEVycm9yTWVzc2FnZSIsInRva2VuSW5kZXgiLCJmaW5kSW5kZXgiLCJ0b2tlbiIsImtleSIsImtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMiLCJjcmVhdGVLZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzIiwicHVzaCIsImxhYmVsIiwidHlwZSIsImJ1c3kiLCJjdXJyZW50VG9rZW4iLCJpc1JlcXVpcmVkIiwiRWFzeUZpbHRlclV0aWxzIiwicmVzb2x2ZVByb3BlcnR5TmFtZSIsInBhdGgiLCJpbmNsdWRlcyIsInNwbGl0IiwiZmlsdGVyIiwiQm9vbGVhbiIsInBvcCIsIl9leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJ1dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByaW1pdGl2ZVR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvRWRtXCI7XG5pbXBvcnQgZGVlcEVxdWFsIGZyb20gXCJzYXAvYmFzZS91dGlsL2RlZXBFcXVhbFwiO1xuaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgRGF0ZUZvcm1hdCBmcm9tIFwic2FwL3VpL2NvcmUvZm9ybWF0L0RhdGVGb3JtYXRcIjtcbmltcG9ydCBGaWx0ZXJPcGVyYXRvciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5pbXBvcnQgRGF0ZVRpbWVPZmZzZXQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS90eXBlL0RhdGVUaW1lT2Zmc2V0XCI7XG5pbXBvcnQgdHlwZSB7IEVhc3lGaWx0ZXJSZXN1bHQsIFByb3BlcnR5TWV0YWRhdGEgfSBmcm9tIFwidXgvZW5nL2Zpb3JpYWkvcmV1c2UvZWFzeWZpbHRlci9FYXN5RmlsdGVyXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEJldHdlZW5TZWxlY3RlZFZhbHVlcyxcblx0Q29kZUxpc3RUeXBlLFxuXHRFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSxcblx0VG9rZW5EZWZpbml0aW9uLFxuXHRUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbixcblx0VG9rZW5UeXBlLFxuXHRWYWx1ZUhlbHBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMsXG5cdFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvblxufSBmcm9tIFwiLi9FYXN5RmlsdGVyQmFyQ29udGFpbmVyXCI7XG5pbXBvcnQgRXJyb3JNZXNzYWdlSGFuZGxlciBmcm9tIFwiLi9FcnJvck1lc3NhZ2VIYW5kbGVyXCI7XG5cbnR5cGUgY29kZUxpc3RUeXBlID0gUHJvcGVydHlNZXRhZGF0YVtcImNvZGVMaXN0XCJdO1xudHlwZSBmaW5hbENvZGVMaXN0VHlwZSA9IHsgdmFsdWU6IFByaW1pdGl2ZVR5cGU7IGRlc2NyaXB0aW9uPzogc3RyaW5nIH1bXTtcbmNvbnN0IHJlc291cmNlQnVuZGxlID0gTGliLmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvbnRyb2xzXCIpITtcbmNvbnN0IGRhdGVUaW1lT2Zmc2V0ID0gbmV3IERhdGVUaW1lT2Zmc2V0KCk7XG5cbmZ1bmN0aW9uIGFyZUl0ZW1zU2FtZShcblx0YXJyMTogcmVhZG9ubHkgVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSB8IFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdLFxuXHRhcnIyOiByZWFkb25seSBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdIHwgVmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW11cbik6IGJvb2xlYW4ge1xuXHRpZiAoYXJyMS5sZW5ndGggIT09IGFycjIubGVuZ3RoKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Ly8gQ29tcGFyZSBlbGVtZW50cyBvZiBib3RoIGFycmF5c1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGFycjEubGVuZ3RoOyBpKyspIHtcblx0XHRpZiAoXG5cdFx0XHRhcnIxW2ldLm9wZXJhdG9yICE9PSBhcnIyW2ldLm9wZXJhdG9yIHx8XG5cdFx0XHQhYXJyMVtpXS5zZWxlY3RlZFZhbHVlcy5ldmVyeSgoZmlyc3RWYWx1ZSwgaW5kZXgpID0+IHtcblx0XHRcdFx0Y29uc3Qgb3RoZXJWYWx1ZSA9IGFycjJbaV0uc2VsZWN0ZWRWYWx1ZXNbaW5kZXhdO1xuXG5cdFx0XHRcdC8vIEhhbmRsZSBEYXRlIG9iamVjdHNcblx0XHRcdFx0aWYgKGZpcnN0VmFsdWUgaW5zdGFuY2VvZiBEYXRlIHx8IG90aGVyVmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRlZXBFcXVhbChmaXJzdFZhbHVlLCBvdGhlclZhbHVlKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEhhbmRsZSBvYmplY3RzIHdpdGggZGVlcCBlcXVhbGl0eVxuXHRcdFx0XHRpZiAodHlwZW9mIGZpcnN0VmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG90aGVyVmFsdWUgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0XHRyZXR1cm4gZGVlcEVxdWFsKGZpcnN0VmFsdWUudmFsdWUsIG90aGVyVmFsdWUudmFsdWUpICYmIGZpcnN0VmFsdWUuZGVzY3JpcHRpb24gPT09IG90aGVyVmFsdWUuZGVzY3JpcHRpb247XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBGYWxsYmFjayB0byBkaXJlY3QgY29tcGFyaXNvblxuXHRcdFx0XHRyZXR1cm4gZmlyc3RWYWx1ZSA9PT0gb3RoZXJWYWx1ZTtcblx0XHRcdH0pXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRydWU7IC8vIEFycmF5cyBhcmUgdGhlIHNhbWVcbn1cblxuZnVuY3Rpb24gYXJlQXJyYXlTYW1lKGFycjE6IHJlYWRvbmx5IHVua25vd25bXSwgYXJyMjogcmVhZG9ubHkgdW5rbm93bltdKTogYm9vbGVhbiB7XG5cdGlmIChhcnIxLmxlbmd0aCAhPT0gYXJyMi5sZW5ndGgpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0Ly8gQ29tcGFyZSBlbGVtZW50cyBvZiBib3RoIGFycmF5c1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGFycjEubGVuZ3RoOyBpKyspIHtcblx0XHRpZiAoYXJyMVtpXSAhPT0gYXJyMltpXSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdHJ1ZTsgLy8gQXJyYXlzIGFyZSB0aGUgc2FtZVxufVxuXG5hc3luYyBmdW5jdGlvbiBhcmVDb2RlTGlzdHNTYW1lKGFycjE6IGNvZGVMaXN0VHlwZSwgYXJyMjogY29kZUxpc3RUeXBlKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdGNvbnN0IGFyck5ldzE6IGZpbmFsQ29kZUxpc3RUeXBlIHwgdW5kZWZpbmVkID0gYXdhaXQgZ2V0Q29kZUxpc3RBcnJheShhcnIxKTtcblx0Y29uc3QgYXJyTmV3MjogZmluYWxDb2RlTGlzdFR5cGUgfCB1bmRlZmluZWQgPSBhd2FpdCBnZXRDb2RlTGlzdEFycmF5KGFycjIpO1xuXHRjb25zdCBkZXNjcmlwdGlvbk5ldzEgPSBhcnJOZXcxPy5tYXAoKGRhdGEpID0+IGRhdGEuZGVzY3JpcHRpb24pO1xuXHRjb25zdCBkZXNjcmlwdGlvbk5ldzIgPSBhcnJOZXcyPy5tYXAoKGRhdGEpID0+IGRhdGEuZGVzY3JpcHRpb24pO1xuXG5cdGNvbnN0IHZhbHVlMSA9IGFyck5ldzE/Lm1hcCgoZGF0YSkgPT4gZGF0YS52YWx1ZSk7XG5cdGNvbnN0IHZhbHVlMiA9IGFyck5ldzI/Lm1hcCgoZGF0YSkgPT4gZGF0YS52YWx1ZSk7XG5cdGlmICghZGVzY3JpcHRpb25OZXcxIHx8ICFkZXNjcmlwdGlvbk5ldzIpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0cmV0dXJuIGFyZUFycmF5U2FtZShkZXNjcmlwdGlvbk5ldzEsIGRlc2NyaXB0aW9uTmV3MikgJiYgYXJlQXJyYXlTYW1lKHZhbHVlMSBhcyBQcmltaXRpdmVUeXBlLCB2YWx1ZTIgYXMgUHJpbWl0aXZlVHlwZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvZGVMaXN0QXJyYXkoYXJyOiBjb2RlTGlzdFR5cGUpOiBQcm9taXNlPGZpbmFsQ29kZUxpc3RUeXBlIHwgdW5kZWZpbmVkPiB7XG5cdGlmICh0eXBlb2YgYXJyID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRyZXR1cm4gYXJyKCk7XG5cdH1cblx0cmV0dXJuIGFycjtcbn1cblxuZnVuY3Rpb24gY29udmVydERhdGVUb1N0cmluZyh2YWx1ZTogRGF0ZSwgdG9rZW5UeXBlOiBUb2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuXHRsZXQgZm9ybWF0dGVkRGF0ZVRpbWUgPSBcIlwiO1xuXHRpZiAoaXNEYXRlVGltZU9mZnNldCkge1xuXHRcdHJldHVybiBkYXRlVGltZU9mZnNldC5mb3JtYXRWYWx1ZSh2YWx1ZSwgXCJzdHJpbmdcIikgYXMgc3RyaW5nO1xuXHR9XG5cdHN3aXRjaCAodG9rZW5UeXBlKSB7XG5cdFx0Ly8gRWRtLkRhdGUgLyBFZG0uVGltZU9mRGF5IGFyZSB0aW1lem9uZS1mcmVlOyBVVEM6IHRydWUgYXZvaWRzXG5cdFx0Ly8gb2ZmLWJ5LW9uZSBpbiBuZWdhdGl2ZS1vZmZzZXQgem9uZXMuXG5cdFx0Y2FzZSBcIkNhbGVuZGFyXCI6XG5cdFx0XHRmb3JtYXR0ZWREYXRlVGltZSA9IERhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKHsgVVRDOiB0cnVlIH0pLmZvcm1hdCh2YWx1ZSk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiVGltZVwiOlxuXHRcdFx0Zm9ybWF0dGVkRGF0ZVRpbWUgPSBEYXRlRm9ybWF0LmdldFRpbWVJbnN0YW5jZSh7IFVUQzogdHJ1ZSB9KS5mb3JtYXQodmFsdWUpO1xuXHRcdFx0YnJlYWs7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdGJyZWFrO1xuXHR9XG5cdHJldHVybiBmb3JtYXR0ZWREYXRlVGltZTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9wZXJhdG9yIGFuZCB2YWx1ZS5cbiAqIEBwYXJhbSBvcGVyYXRvciBUaGUgb3BlcmF0b3IgdG8gcmVwcmVzZW50XG4gKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHJlcHJlc2VudFxuICogQHBhcmFtIHRva2VuVHlwZSBUaGUgdG9rZW4ncyB0eXBlXG4gKiBAcGFyYW0gaXNEYXRlVGltZU9mZnNldCBDaGVja3MgaWYgdGhlIGRhdGEgdHlwZSBpcyBvZiBEYXRlVGltZU9mZnNldFxuICogQHJldHVybnMgVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgb3BlcmF0b3IgYW5kIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIG1hcE9wZXJhdG9yKFxuXHRvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IsXG5cdHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgRGF0ZSxcblx0dG9rZW5UeXBlOiBUb2tlblR5cGUsXG5cdGlzRGF0ZVRpbWVPZmZzZXQ6IGJvb2xlYW5cbik6IHN0cmluZyB7XG5cdGxldCBuZXdWYWx1ZTogbnVtYmVyIHwgc3RyaW5nID0gXCJcIjtcblx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcblx0XHRuZXdWYWx1ZSA9IGNvbnZlcnRCb29sVG9TdHJpbmcodmFsdWUpO1xuXHR9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdG5ld1ZhbHVlID0gY29udmVydERhdGVUb1N0cmluZyh2YWx1ZSwgdG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0KTtcblx0fSBlbHNlIHtcblx0XHRuZXdWYWx1ZSA9IHZhbHVlO1xuXHR9XG5cblx0c3dpdGNoIChvcGVyYXRvcikge1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuR1Q6XG5cdFx0XHRyZXR1cm4gYD4gJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTFQ6XG5cdFx0XHRyZXR1cm4gYDwgJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuR0U6XG5cdFx0XHRyZXR1cm4gYD49ICR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkxFOlxuXHRcdFx0cmV0dXJuIGA8PSAke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5FUTpcblx0XHRcdHJldHVybiBgJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuQ29udGFpbnM6XG5cdFx0XHRyZXR1cm4gYCoke25ld1ZhbHVlfSpgO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuRW5kc1dpdGg6XG5cdFx0XHRyZXR1cm4gYCoke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5TdGFydHNXaXRoOlxuXHRcdFx0cmV0dXJuIGAke25ld1ZhbHVlfSpgO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTkU6XG5cdFx0XHRyZXR1cm4gYCE9KCR7bmV3VmFsdWV9KWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5Ob3RDb250YWluczpcblx0XHRcdHJldHVybiBgISgqJHtuZXdWYWx1ZX0qKWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5Ob3RFbmRzV2l0aDpcblx0XHRcdHJldHVybiBgISgqJHtuZXdWYWx1ZX0pYDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLk5vdFN0YXJ0c1dpdGg6XG5cdFx0XHRyZXR1cm4gYCEoJHtuZXdWYWx1ZX0qKWA7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiBuZXdWYWx1ZT8udG9TdHJpbmcoKTtcblx0fVxufVxuXG5mdW5jdGlvbiBtYXBPcGVyYXRvckZvclZhbHVlSGVscChvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IsIHZhbHVlOiBDb2RlTGlzdFR5cGUsIHRva2VuVHlwZTogVG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0OiBib29sZWFuKTogc3RyaW5nIHtcblx0cmV0dXJuIG1hcE9wZXJhdG9yKG9wZXJhdG9yLCB2YWx1ZS5kZXNjcmlwdGlvbiwgdG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0KTtcbn1cblxuZnVuY3Rpb24gbWFwT3BlcmF0b3JGb3JCZXR3ZWVuT3BlcmF0b3IoXG5cdG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcixcblx0dmFsdWVzOiBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMgfCBWYWx1ZUhlbHBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMsXG5cdHRva2VuVHlwZTogVG9rZW5UeXBlLFxuXHRpc0RhdGVUaW1lT2Zmc2V0OiBib29sZWFuXG4pOiBzdHJpbmcge1xuXHRsZXQgbmV3VmFsdWUxOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlID0gXCJcIjtcblx0bGV0IG5ld1ZhbHVlMjogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9IFwiXCI7XG5cdGlmICh0eXBlb2YgdmFsdWVzWzBdID09PSBcImJvb2xlYW5cIikge1xuXHRcdG5ld1ZhbHVlMSA9IGNvbnZlcnRCb29sVG9TdHJpbmcodmFsdWVzWzBdKTtcblx0fSBlbHNlIGlmICh2YWx1ZXNbMF0gaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0bmV3VmFsdWUxID0gY29udmVydERhdGVUb1N0cmluZyh2YWx1ZXNbMF0sIHRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldCk7XG5cdH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlc1swXSA9PT0gXCJvYmplY3RcIikge1xuXHRcdG5ld1ZhbHVlMSA9IHZhbHVlc1swXS5kZXNjcmlwdGlvbiBhcyBzdHJpbmc7XG5cdH0gZWxzZSB7XG5cdFx0bmV3VmFsdWUxID0gdmFsdWVzWzBdO1xuXHR9XG5cblx0aWYgKHR5cGVvZiB2YWx1ZXNbMV0gPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0bmV3VmFsdWUyID0gY29udmVydEJvb2xUb1N0cmluZyh2YWx1ZXNbMV0pO1xuXHR9IGVsc2UgaWYgKHZhbHVlc1sxXSBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRuZXdWYWx1ZTIgPSBjb252ZXJ0RGF0ZVRvU3RyaW5nKHZhbHVlc1sxXSwgdG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0KTtcblx0fSBlbHNlIGlmICh0eXBlb2YgdmFsdWVzWzBdID09PSBcIm9iamVjdFwiKSB7XG5cdFx0bmV3VmFsdWUyID0gdmFsdWVzWzFdLmRlc2NyaXB0aW9uIGFzIHN0cmluZztcblx0fSBlbHNlIHtcblx0XHRuZXdWYWx1ZTIgPSB2YWx1ZXNbMV07XG5cdH1cblx0aWYgKG9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5CVCkge1xuXHRcdHJldHVybiBgJHtuZXdWYWx1ZTF9Li4uJHtuZXdWYWx1ZTJ9YDtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gYCEoJHtuZXdWYWx1ZTF9Li4uJHtuZXdWYWx1ZTJ9KWA7XG5cdH1cbn1cblxuZnVuY3Rpb24gaXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMob3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yKTogYm9vbGVhbiB7XG5cdHJldHVybiBvcGVyYXRvciA9PT0gRmlsdGVyT3BlcmF0b3IuQlQgfHwgb3BlcmF0b3IgPT09IEZpbHRlck9wZXJhdG9yLk5CO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0Qm9vbFRvU3RyaW5nKHZhbHVlOiBib29sZWFuKTogc3RyaW5nIHtcblx0cmV0dXJuIHZhbHVlXG5cdFx0PyByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9TRUxFQ1RFRF9WQUxVRVNfVFJVRVwiKVxuXHRcdDogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfU0VMRUNURURfVkFMVUVTX0ZBTFNFXCIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXREYXRhKFxuXHR0b2tlbnM6IFRva2VuRGVmaW5pdGlvbltdLFxuXHRmaWx0ZXJWYWx1ZXM6IEVhc3lGaWx0ZXJSZXN1bHRbXCJmaWx0ZXJcIl0sXG5cdGZpbHRlckJhck1ldGFkYXRhOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YVtdLFxuXHRzZXRNZXNzYWdlU3RyaXBGb3JWYWxpZGF0ZWRGaWx0ZXJzOiAobXNnOiBzdHJpbmcpID0+IHZvaWRcbik6IHZvaWQge1xuXHRpZiAoIWZpbHRlclZhbHVlcykge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IHZpc2l0ZWRNYXBGb3JNYW5kYXRvcnlUb2tlbnM6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG5cdGNvbnN0IGVycm9yTWVzc2FnZUhhbmRsZXIgPSBuZXcgRXJyb3JNZXNzYWdlSGFuZGxlcigpO1xuXG5cdGZvciAoY29uc3QgZmlsdGVyVmFsdWUgb2YgZmlsdGVyVmFsdWVzKSB7XG5cdFx0Y29uc3QgZmlsdGVyQ3JpdGVyaWEgPSBmaWx0ZXJCYXJNZXRhZGF0YS5maW5kKChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0gZmlsdGVyVmFsdWUubmFtZSk7XG5cdFx0aWYgKCFmaWx0ZXJDcml0ZXJpYSkge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0Ly8gSGFuZGxlIG5vbi1maWx0ZXJhYmxlIGFuZCBoaWRkZW4gZmlsdGVyc1xuXHRcdGlmICghZXJyb3JNZXNzYWdlSGFuZGxlci5pc0ZpbHRlcmFibGVQcm9wZXJ0eShmaWx0ZXJDcml0ZXJpYSkpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdC8vIFZhbGlkYXRlIGZvciBmaWx0ZXIgdmFsdWUgcmVzdHJpY3Rpb25cblx0XHRjb25zdCBpc0luVmFsaWRUb2tlbiA9ICFlcnJvck1lc3NhZ2VIYW5kbGVyLnZhbGlkYXRlKGZpbHRlckNyaXRlcmlhLCBmaWx0ZXJWYWx1ZSk7XG5cblx0XHQvLyBVcGRhdGUgdG9rZW5zXG5cdFx0dXBkYXRlVG9rZW5zKHRva2VucywgZmlsdGVyVmFsdWUsIGZpbHRlckNyaXRlcmlhLCB2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zLCBpc0luVmFsaWRUb2tlbik7XG5cdH1cblxuXHQvLyBIYW5kbGUgdmFsaWRhdGlvbiBtZXNzYWdlc1xuXHRpZiAoZXJyb3JNZXNzYWdlSGFuZGxlci5oYXNFcnJvcnMoKSkge1xuXHRcdHNldE1lc3NhZ2VTdHJpcEZvclZhbGlkYXRlZEZpbHRlcnMoZXJyb3JNZXNzYWdlSGFuZGxlci5nZXRFcnJvck1lc3NhZ2UoKSk7XG5cdH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlVG9rZW5zKFxuXHR0b2tlbnM6IFRva2VuRGVmaW5pdGlvbltdLFxuXHRmaWx0ZXJWYWx1ZTogRWFzeUZpbHRlclJlc3VsdFtcImZpbHRlclwiXVswXSxcblx0ZmlsdGVyQ3JpdGVyaWE6IEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhLFxuXHR2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPixcblx0aXNJblZhbGlkVG9rZW46IGJvb2xlYW5cbik6IHZvaWQge1xuXHRjb25zdCB0b2tlbkluZGV4ID0gdG9rZW5zLmZpbmRJbmRleCgodG9rZW4pID0+IHRva2VuLmtleSA9PT0gZmlsdGVyVmFsdWUubmFtZSk7XG5cdGNvbnN0IGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgPSBjcmVhdGVLZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzKGZpbHRlclZhbHVlKTtcblxuXHRpZiAodG9rZW5JbmRleCA9PT0gLTEpIHtcblx0XHQvLyBBZGQgbmV3IHRva2VuXG5cdFx0dG9rZW5zLnB1c2goe1xuXHRcdFx0a2V5OiBmaWx0ZXJWYWx1ZS5uYW1lLFxuXHRcdFx0bGFiZWw6IGZpbHRlckNyaXRlcmlhLmxhYmVsIGFzIHN0cmluZyxcblx0XHRcdGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXM6IGlzSW5WYWxpZFRva2VuID8gW10gOiBba2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlc10sXG5cdFx0XHR0eXBlOiBmaWx0ZXJDcml0ZXJpYS50eXBlIGFzIEV4Y2x1ZGU8VG9rZW5UeXBlLCBcIlZhbHVlSGVscFwiPixcblx0XHRcdGJ1c3k6IGZpbHRlckNyaXRlcmlhLnR5cGUgPT09IFwiVmFsdWVIZWxwXCJcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHQvLyBVcGRhdGUgZXhpc3RpbmcgdG9rZW5cblx0XHRjb25zdCBjdXJyZW50VG9rZW4gPSB0b2tlbnNbdG9rZW5JbmRleF07XG5cdFx0aWYgKGlzSW5WYWxpZFRva2VuKSB7XG5cdFx0XHRjdXJyZW50VG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyA9IFtdO1xuXHRcdH0gZWxzZSBpZiAoKGN1cnJlbnRUb2tlbi5pc1JlcXVpcmVkID8/IGZhbHNlKSAmJiAhdmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2Vuc1tjdXJyZW50VG9rZW4ua2V5XSkge1xuXHRcdFx0Y3VycmVudFRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgPSBba2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlc107XG5cdFx0XHR2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zW2N1cnJlbnRUb2tlbi5rZXldID0gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0KGN1cnJlbnRUb2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzIGFzIFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10pLnB1c2goa2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyk7XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMoZmlsdGVyVmFsdWU6IEVhc3lGaWx0ZXJSZXN1bHRbXCJmaWx0ZXJcIl1bMF0pOiBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbiB7XG5cdGNvbnN0IHsgb3BlcmF0b3IsIHZhbHVlcyB9ID0gZmlsdGVyVmFsdWU7XG5cblx0aWYgKEVhc3lGaWx0ZXJVdGlscy5pc0JldHdlZW5TZWxlY3RlZFZhbHVlcyhvcGVyYXRvcikpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0b3BlcmF0b3IsXG5cdFx0XHRzZWxlY3RlZFZhbHVlczogdmFsdWVzIGFzIEJldHdlZW5TZWxlY3RlZFZhbHVlc1xuXHRcdH07XG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdG9wZXJhdG9yOiBvcGVyYXRvciBhcyBFeGNsdWRlPEZpbHRlck9wZXJhdG9yLCBGaWx0ZXJPcGVyYXRvci5CVCB8IEZpbHRlck9wZXJhdG9yLk5CPixcblx0XHRzZWxlY3RlZFZhbHVlczogdmFsdWVzIGFzIHN0cmluZ1tdIHwgRGF0ZVtdIHwgbnVtYmVyW10gfCBib29sZWFuW11cblx0fTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgcGxhaW4gcHJvcGVydHkgbmFtZSBmcm9tIGFuIE9EYXRhLXN0eWxlIHBhdGggKGUuZy4gXCIvU2FsZXNPcmRlck1hbmFnZS9Tb2xkVG9QYXJ0eVwiIOKGkiBcIlNvbGRUb1BhcnR5XCIpLlxuICogQHBhcmFtIHBhdGggVGhlIE9EYXRhLXN0eWxlIHBhdGggb3IgcGxhaW4gcHJvcGVydHkgbmFtZSB0byByZXNvbHZlLlxuICogQHJldHVybnMgVGhlIGxhc3QgcGF0aCBzZWdtZW50LCBvciB0aGUgb3JpZ2luYWwgc3RyaW5nIGlmIG5vIFwiL1wiIGlzIHByZXNlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUHJvcGVydHlOYW1lKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBwYXRoLmluY2x1ZGVzKFwiL1wiKSA/IHBhdGguc3BsaXQoXCIvXCIpLmZpbHRlcihCb29sZWFuKS5wb3AoKSA/PyBwYXRoIDogcGF0aDtcbn1cblxuY29uc3QgRWFzeUZpbHRlclV0aWxzID0ge1xuXHRhcmVJdGVtc1NhbWUsXG5cdGFyZUNvZGVMaXN0c1NhbWUsXG5cdGdldENvZGVMaXN0QXJyYXksXG5cdGFyZUFycmF5U2FtZSxcblx0bWFwT3BlcmF0b3IsXG5cdG1hcE9wZXJhdG9yRm9yQmV0d2Vlbk9wZXJhdG9yLFxuXHRpc0JldHdlZW5TZWxlY3RlZFZhbHVlcyxcblx0Zm9ybWF0RGF0YSxcblx0bWFwT3BlcmF0b3JGb3JWYWx1ZUhlbHAsXG5cdHJlc29sdmVQcm9wZXJ0eU5hbWVcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEVhc3lGaWx0ZXJVdGlscztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7RUFxQkEsTUFBTUEsY0FBYyxHQUFHQyxHQUFHLENBQUNDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFFO0VBQ25FLE1BQU1DLGNBQWMsR0FBRyxJQUFJQyxjQUFjLENBQUMsQ0FBQztFQUUzQyxTQUFTQyxZQUFZQSxDQUNwQkMsSUFBb0YsRUFDcEZDLElBQW9GLEVBQzFFO0lBQ1YsSUFBSUQsSUFBSSxDQUFDRSxNQUFNLEtBQUtELElBQUksQ0FBQ0MsTUFBTSxFQUFFO01BQ2hDLE9BQU8sS0FBSztJQUNiOztJQUVBO0lBQ0EsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdILElBQUksQ0FBQ0UsTUFBTSxFQUFFQyxDQUFDLEVBQUUsRUFBRTtNQUNyQyxJQUNDSCxJQUFJLENBQUNHLENBQUMsQ0FBQyxDQUFDQyxRQUFRLEtBQUtILElBQUksQ0FBQ0UsQ0FBQyxDQUFDLENBQUNDLFFBQVEsSUFDckMsQ0FBQ0osSUFBSSxDQUFDRyxDQUFDLENBQUMsQ0FBQ0UsY0FBYyxDQUFDQyxLQUFLLENBQUMsQ0FBQ0MsVUFBVSxFQUFFQyxLQUFLLEtBQUs7UUFDcEQsTUFBTUMsVUFBVSxHQUFHUixJQUFJLENBQUNFLENBQUMsQ0FBQyxDQUFDRSxjQUFjLENBQUNHLEtBQUssQ0FBQzs7UUFFaEQ7UUFDQSxJQUFJRCxVQUFVLFlBQVlHLElBQUksSUFBSUQsVUFBVSxZQUFZQyxJQUFJLEVBQUU7VUFDN0QsT0FBT0MsU0FBUyxDQUFDSixVQUFVLEVBQUVFLFVBQVUsQ0FBQztRQUN6Qzs7UUFFQTtRQUNBLElBQUksT0FBT0YsVUFBVSxLQUFLLFFBQVEsSUFBSSxPQUFPRSxVQUFVLEtBQUssUUFB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
@@ -98,11 +98,13 @@ function convertDateToString(value: Date, tokenType: TokenType, isDateTimeOffset
98
98
  return dateTimeOffset.formatValue(value, "string") as string;
99
99
  }
100
100
  switch (tokenType) {
101
+ // Edm.Date / Edm.TimeOfDay are timezone-free; UTC: true avoids
102
+ // off-by-one in negative-offset zones.
101
103
  case "Calendar":
102
- formattedDateTime = DateFormat.getDateInstance().format(value);
104
+ formattedDateTime = DateFormat.getDateInstance({ UTC: true }).format(value);
103
105
  break;
104
106
  case "Time":
105
- formattedDateTime = DateFormat.getTimeInstance().format(value);
107
+ formattedDateTime = DateFormat.getTimeInstance({ UTC: true }).format(value);
106
108
  break;
107
109
  default:
108
110
  break;
@@ -22,7 +22,7 @@ sap.ui.define(["sap/fe/base/library", "sap/fe/controls/shortcuts/ShortcutExplana
22
22
  controls: [],
23
23
  elements: [],
24
24
  // eslint-disable-next-line no-template-curly-in-string
25
- version: "1.148.1",
25
+ version: "1.148.2",
26
26
  noLibraryCSS: false
27
27
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
28
  });
@@ -148,6 +148,12 @@ sap.ui.define(["sap/base/Log", "sap/base/security/encodeURL", "sap/fe/base/Class
148
148
  try {
149
149
  const resourceBundle = Lib.getResourceBundleFor("sap.fe.controls");
150
150
  const shellHistoryDialog = new ShortcutExplanationProvider();
151
+
152
+ // Destroy previous user action before creating a new one to prevent duplicates in keep-alive navigation
153
+ if (this._userAction) {
154
+ this._userAction.destroy();
155
+ this._userAction = undefined;
156
+ }
151
157
  const userAction = await shellExtensionService.createUserAction({
152
158
  text: resourceBundle.getText("C_SHORTCUT_TITLE"),
153
159
  icon: IconPool.getIconURI("keyboard-and-mouse"),
@@ -162,7 +168,7 @@ sap.ui.define(["sap/base/Log", "sap/base/security/encodeURL", "sap/fe/base/Class
162
168
  if (!this._cleanupAttached) {
163
169
  this._cleanupAttached = true;
164
170
  window.addEventListener("pagehide", () => {
165
- this._userAction.destroy();
171
+ this._userAction?.destroy();
166
172
  });
167
173
  }
168
174
  userAction.showForCurrentApp();
@@ -176,4 +182,4 @@ sap.ui.define(["sap/base/Log", "sap/base/security/encodeURL", "sap/fe/base/Class
176
182
  _exports = ShortcutExplanationProvider;
177
183
  return _exports;
178
184
  }, false);
179
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfY2xhc3MiLCJfU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIiwiX01hbmFnZWRPYmplY3QiLCJfdGhpcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsIl9wb3B1cElkeCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRTaGVsbERpYWxvZ0NvbnRlbnQiLCJ3aW5kb3dXaWR0aCIsImxlZnQiLCJ3aW5kb3ciLCJzY3JlZW5MZWZ0Iiwib3V0ZXJXaWR0aCIsInNjcmVlbiIsImF2YWlsV2lkdGgiLCJ0aGVtZSIsIlRoZW1pbmciLCJnZXRUaGVtZSIsIl9zYW5pdGl6ZVRoZW1lIiwidXJsIiwic2FwIiwidWkiLCJyZXF1aXJlIiwidG9VcmwiLCJsb2NhbE9yaWdpbiIsImxvY2F0aW9uIiwicHJvdG9jb2wiLCJob3N0IiwicGFyYW1zIiwiZW5jb2RlVVJMIiwibXlXaW4iLCJvcGVuIiwic2NyZWVuVG9wIiwiaGFuZGxlTWVzc2FnZVJlY2VpdmVkIiwibWVzc2FnZUV2ZW50Iiwib3JpZ2luIiwibWVzc2FnZURhdGEiLCJkYXRhIiwic2VydmljZSIsIm1lc3NhZ2VQb3J0IiwicG9ydHMiLCJwb3N0TWVzc2FnZSIsInN0YXJ0c1dpdGgiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwib3BlbmVyIiwiZSIsIkxvZyIsImRlYnVnIiwiRXJyb3IiLCJtZXNzYWdlIiwiU3RyaW5nIiwic2V0VGltZW91dCIsImFkZEV2ZW50TGlzdGVuZXIiLCJpZCIsIm9udW5sb2FkIiwiY2xvc2UiLCJjb21wdXRlZFN0eWxlcyIsImdldENvbXB1dGVkU3R5bGUiLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsImdldFByb3BlcnR5VmFsdWUiLCJ0aGVtZU1ldGFkYXRhIiwidGhlbWVNYXRjaCIsIkpTT04iLCJwYXJzZSIsIkV4dGVuZHMiLCJpbmZvIiwiZ2V0SW5zdGFuY2UiLCJzaGVsbENvbnRhaW5lciIsInJlc29sdmVDcmVhdGlvbiIsImluc3RhbmNlIiwiaW5zdGFuY2VQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJhcHBMaWZlQ3ljbGUiLCJnZXRTZXJ2aWNlQXN5bmMiLCJleHRlbnNpb25TZXJ2aWNlIiwiYXR0YWNoQXBwTG9hZGVkIiwic2hlbGxIaXN0b3J5UHJvdmlkZXIiLCJyZWdpc3RlclVzZXJBY3Rpb24iLCJlcnJvciIsInVuZGVmaW5lZCIsInNoZWxsRXh0ZW5zaW9uU2VydmljZSIsInJlc291cmNlQnVuZGxlIiwiTGliIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJzaGVsbEhpc3RvcnlEaWFsb2ciLCJ1c2VyQWN0aW9uIiwiY3JlYXRlVXNlckFjdGlvbiIsInRleHQiLCJnZXRUZXh0IiwiaWNvbiIsIkljb25Qb29sIiwiZ2V0SWNvblVSSSIsInByZXNzIiwiY29udHJvbFR5cGUiLCJfdXNlckFjdGlvbiIsIl9jbGVhbnVwQXR0YWNoZWQiLCJkZXN0cm95Iiwic2hvd0ZvckN1cnJlbnRBcHAiLCJlcnIiLCJNYW5hZ2VkT2JqZWN0IiwiaXNEaWFsb2dBZGRlZCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBlbmNvZGVVUkwgZnJvbSBcInNhcC9iYXNlL3NlY3VyaXR5L2VuY29kZVVSTFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IEljb25Qb29sIGZyb20gXCJzYXAvdWkvY29yZS9JY29uUG9vbFwiO1xuaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgVGhlbWluZyBmcm9tIFwic2FwL3VpL2NvcmUvVGhlbWluZ1wiO1xuaW1wb3J0IHR5cGUgQ29udGFpbmVyIGZyb20gXCJzYXAvdXNoZWxsL0NvbnRhaW5lclwiO1xuaW1wb3J0IHR5cGUgQXBwTGlmZUN5Y2xlIGZyb20gXCJzYXAvdXNoZWxsL3NlcnZpY2VzL0FwcExpZmVDeWNsZVwiO1xuaW1wb3J0IHR5cGUgRXh0ZW5zaW9uIGZyb20gXCJzYXAvdXNoZWxsL3NlcnZpY2VzL0V4dGVuc2lvblwiO1xuaW1wb3J0IHR5cGUgSXRlbSBmcm9tIFwic2FwL3VzaGVsbC9zZXJ2aWNlcy9FeHRlbnNpb24vSXRlbVwiO1xuXG4vKipcbiAqIFByb3ZpZGVzIGEgZGlhbG9nIHRvIGV4cGxhaW4gdGhlIHNob3J0Y3V0cyB0byB0aGUgdXNlci5cbiAqIFRoaXMgZGlhbG9nIHdpbGwgYmUgcmVnaXN0ZXJlZCBpbiB0aGUgc2hlbGwgdXNlciBtZW51IGFuZCB3aWxsIG9wZW4gYXMgYW4gaW5kZXBlbmRlbnQgd2luZG93LlxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29udHJvbHMuc2hvcnRjdXRzLlNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlclwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIGV4dGVuZHMgTWFuYWdlZE9iamVjdCB7XG5cdHByaXZhdGUgX3BvcHVwSWR4ID0gMDtcblxuXHRnZXRTaGVsbERpYWxvZ0NvbnRlbnQoKTogdm9pZCB7XG5cdFx0Ly8gUG9zaXRpb24gdG8gdG9wIHJpZ2h0IG9mIHRoZSBtYWluIHdpbmRvdyBpZiBwb3NzaWJsZVxuXHRcdGNvbnN0IHdpbmRvd1dpZHRoID0gNjIwO1xuXHRcdGxldCBsZWZ0ID0gd2luZG93LnNjcmVlbkxlZnQgKyB3aW5kb3cub3V0ZXJXaWR0aDtcblx0XHRpZiAobGVmdCArIHdpbmRvd1dpZHRoID4gd2luZG93LnNjcmVlbi5hdmFpbFdpZHRoKSB7XG5cdFx0XHRsZWZ0ID0gd2luZG93LnNjcmVlbi5hdmFpbFdpZHRoIC0gd2luZG93V2lkdGg7XG5cdFx0fVxuXHRcdGxldCB0aGVtZSA9IFRoZW1pbmcuZ2V0VGhlbWUoKTtcblx0XHR0aGVtZSA9IHRoaXMuX3Nhbml0aXplVGhlbWUodGhlbWUpO1xuXHRcdGNvbnN0IHVybCA9IHNhcC51aS5yZXF1aXJlLnRvVXJsKFwic2FwL2ZlL2NvbnRyb2xzL3Nob3J0Y3V0cy9wb3B1cC9pbmRleC5odG1sXCIpO1xuXHRcdGNvbnN0IGxvY2FsT3JpZ2luID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgXCIvL1wiICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XG5cdFx0Ly8gV2UgcGFzcyB0aGUgdGhlbWUgYW5kIHRoZSBvcmlnaW4gdG8gdGhlIHBvcHVwIHNvIHRoYXQgaXQgY2FuIGNvbW11bmljYXRlIHNhZmVseSB3aXRoIHRoZSBwYXJlbnRcblx0XHRjb25zdCBwYXJhbXMgPSBcIj9zYXAtdWkteHgtc2hvcnRjdXQtb3JpZ2luPVwiICsgZW5jb2RlVVJMKGxvY2FsT3JpZ2luKSArIFwiJnNhcC11aS10aGVtZT1cIiArIHRoZW1lO1xuXHRcdGNvbnN0IG15V2luID0gd2luZG93Lm9wZW4oXG5cdFx0XHR1cmwgKyBwYXJhbXMsXG5cdFx0XHRcIl9ibGFua1wiLFxuXHRcdFx0YHBvcHVwLHRvb2xiYXI9bm8sbWVudWJhcj1ubyxzY3JvbGxiYXJzPW5vLGxvY2F0aW9uPW5vLHdpZHRoPSR7d2luZG93V2lkdGh9LGhlaWdodD01NTAsdG9wPSR7d2luZG93LnNjcmVlblRvcH0sbGVmdD0ke2xlZnR9YFxuXHRcdCk7XG5cdFx0aWYgKG15V2luKSB7XG5cdFx0XHRjb25zdCBoYW5kbGVNZXNzYWdlUmVjZWl2ZWQgPSAobWVzc2FnZUV2ZW50OiBNZXNzYWdlRXZlbnQpOiB2b2lkID0+IHtcblx0XHRcdFx0aWYgKGxvY2FsT3JpZ2luID09PSBtZXNzYWdlRXZlbnQub3JpZ2luKSB7XG5cdFx0XHRcdFx0Y29uc3QgbWVzc2FnZURhdGEgPSBtZXNzYWdlRXZlbnQ/LmRhdGE7XG5cdFx0XHRcdFx0aWYgKG1lc3NhZ2VEYXRhLnNlcnZpY2UgPT09IFwic2FwLnVpLmludGVyYWN0aW9uLk1lc3NhZ2VQb3J0UmVhZHlcIikge1xuXHRcdFx0XHRcdFx0Y29uc3QgbWVzc2FnZVBvcnQgPSBtZXNzYWdlRXZlbnQucG9ydHNbMF07IC8vIFJlbWVtYmVyIHRoZSBwb3J0XG5cdFx0XHRcdFx0XHRteVdpbi5wb3N0TWVzc2FnZSh7IHNlcnZpY2U6IFwic2FwLnVpLmludGVyYWN0aW9uLk1lc3NhZ2VQb3J0UmVhZHlcIiB9LCB1cmwuc3RhcnRzV2l0aChcIi9cIikgPyBsb2NhbE9yaWdpbiA6IHVybCwgW1xuXHRcdFx0XHRcdFx0XHRtZXNzYWdlUG9ydFxuXHRcdFx0XHRcdFx0XSk7XG5cdFx0XHRcdFx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgaGFuZGxlTWVzc2FnZVJlY2VpdmVkKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRteVdpbi5vcGVuZXIgPSBudWxsO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHQvLyBUaGlzIG1pZ2h0IGZhaWwgd2hlbiB0aGVyZSBpcyBDT1JTIGludm9sdmVkIGFueXdheSBhbmQgd2UgY2FuJ3QgYWNjZXNzIHRoZSBvcGVuZXIgYW55d2F5XG5cdFx0XHRcdExvZy5kZWJ1ZyhcIkNhbm5vdCBzZXQgb3BlbmVyIHRvIG51bGxcIiwgZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpKTtcblx0XHRcdH1cblxuXHRcdFx0c2V0VGltZW91dCgoKTogdm9pZCA9PiB7XG5cdFx0XHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVNZXNzYWdlUmVjZWl2ZWQpO1xuXHRcdFx0XHR3aW5kb3cucG9zdE1lc3NhZ2UoXG5cdFx0XHRcdFx0eyBpZDogXCJzYXAuZmUuaW50ZXJhY3Rpb24uUG9wdXBcIiArIHRoaXMuX3BvcHVwSWR4KyssIHNlcnZpY2U6IFwic2FwLnVpLmludGVyYWN0aW9uLlJlcXVlc3RNZXNzYWdlUG9ydFwiIH0sXG5cdFx0XHRcdFx0bG9jYWxPcmlnaW5cblx0XHRcdFx0KTtcblx0XHRcdH0sIDE1MDApOyAvLyBnaXZlIGEgYml0IG9mIHRpbWUgZm9yIHRoZSBwb3B1cCB0byBiZSByZWFkeVxuXHRcdFx0Ly8gV2UgY2FuJ3QgcmVseSBvbiB0aGUgb25sb2FkIG9mIHRoZSBwb3B1cCBiZWNhdXNlIGl0IGlzIG5vdCBhbHdheXMgYXZhaWxibGUgaW4gQ09SUyBzY2VuYXJpb3Ncblx0XHRcdHdpbmRvdy5vbnVubG9hZCA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcblx0XHRcdFx0bXlXaW4uY2xvc2UoKTtcblx0XHRcdH07XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNhbml0aXplcyB0aGUgdGhlbWUgbmFtZSB0byBlbnN1cmUgaXQgc3RhcnRzIHdpdGggXCJzYXAtXCIuXG5cdCAqIElmIHRoZSB0aGVtZSBkb2VzIG5vdCBzdGFydCB3aXRoIFwic2FwLVwiLCBpdCB0cmllcyB0byBnZXQgdGhlIHRoZW1lIGZyb20gdGhlIGNvbXB1dGVkIHN0eWxlcy5cblx0ICogSWYgaXQgc3RpbGwgZG9lcyBub3QgZmluZCBhIHZhbGlkIHRoZW1lLCBpdCBkZWZhdWx0cyB0byBcInNhcF9ob3Jpem9uXCIuXG5cdCAqIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIHBvcHVwIGFsd2F5cyB1c2VzIGEgdmFsaWQgdGhlbWUuXG5cdCAqIEBwYXJhbSB0aGVtZSBUaGUgdGhlbWUgbmFtZSB0byBzYW5pdGl6ZVxuXHQgKiBAcmV0dXJucyBUaGUgc2FuaXRpemVkIHRoZW1lIG5hbWVcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHByaXZhdGUgX3Nhbml0aXplVGhlbWUodGhlbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0aWYgKCF0aGVtZS5zdGFydHNXaXRoKFwic2FwX1wiKSkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgY29tcHV0ZWRTdHlsZXMgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7XG5cdFx0XHRcdHRoZW1lID0gY29tcHV0ZWRTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZShcIi0tc2FwU2FwVGhlbWVJZFwiKTtcblx0XHRcdFx0aWYgKCF0aGVtZSkge1xuXHRcdFx0XHRcdGNvbnN0IHRoZW1lTWV0YWRhdGEgPSBjb21wdXRlZFN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1zYXBUaGVtZU1ldGFEYXRhLVVJNS1zYXAtdWktY29yZVwiKTtcblx0XHRcdFx0XHRpZiAodGhlbWVNZXRhZGF0YSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgdGhlbWVNYXRjaCA9IEpTT04ucGFyc2UodGhlbWVNZXRhZGF0YSk7XG5cdFx0XHRcdFx0XHRpZiAodGhlbWVNYXRjaCAmJiB0aGVtZU1hdGNoLkV4dGVuZHMgJiYgdGhlbWVNYXRjaC5FeHRlbmRzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdFx0dGhlbWUgPSB0aGVtZU1hdGNoLkV4dGVuZHNbMF07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdExvZy5pbmZvKFwiQ2Fubm90IGdldCB0aGVtZSBmcm9tIGNvbXB1dGVkIHN0eWxlc1wiLCBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSkpO1xuXHRcdFx0XHR0aGVtZSA9IFwic2FwX2hvcml6b25cIjtcblx0XHRcdH1cblx0XHRcdGlmICghdGhlbWUgfHwgIXRoZW1lLnN0YXJ0c1dpdGgoXCJzYXBfXCIpKSB7XG5cdFx0XHRcdC8vIEZpbmFsIGZhbGxiYWNrIHRvIHNhcF9ob3Jpem9uXG5cdFx0XHRcdHRoZW1lID0gXCJzYXBfaG9yaXpvblwiO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdGhlbWU7XG5cdH1cblxuXHRzdGF0aWMgaW5zdGFuY2VQcm9taXNlOiBQcm9taXNlPFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlciB8IHVuZGVmaW5lZD47XG5cblx0c3RhdGljIGluc3RhbmNlOiBTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIgfCB1bmRlZmluZWQ7XG5cblx0c3RhdGljIGlzRGlhbG9nQWRkZWQgPSBmYWxzZTtcblxuXHQvLyBLZWVwIHJlZmVyZW5jZSB0byB0aGUgY3JlYXRlZCB1c2VyIGFjdGlvbiBzbyB3ZSBjYW4gY2xlYW4gaXQgdXAgb24gaWZyYW1lIHJlbG9hZCB0byBhdm9pZCBkdXBsaWNhdGVcblx0c3RhdGljIF91c2VyQWN0aW9uOiBJdGVtO1xuXG5cdHN0YXRpYyBfY2xlYW51cEF0dGFjaGVkID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgb3IgcmV0dXJucyB0aGUgaW5zdGFuY2Ugb2YgdGhlIFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlci5cblx0ICogVGhpcyBpcyBhIHNpbmdsZXRvbiB0byBlbnN1cmUgd2Ugb25seSBoYXZlIG9uZSBpbnN0YW5jZSBvZiB0aGUgZGlhbG9nLlxuXHQgKiBAcmV0dXJucyBUaGUgaW5zdGFuY2Ugb2YgdGhlIFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlclxuXHQgKi9cblx0c3RhdGljIGFzeW5jIGdldEluc3RhbmNlKCk6IFByb21pc2U8U2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIHwgdW5kZWZpbmVkPiB7XG5cdFx0Ly8gVGVzdCB0aGUgc2hlbGwgZXhpc3RlbmNlIGFuZCByZWdpc3RlciB0aGUgZXh0ZW5zaW9uXG5cdFx0Y29uc3Qgc2hlbGxDb250YWluZXIgPSBzYXAudWkucmVxdWlyZShcInNhcC91c2hlbGwvQ29udGFpbmVyXCIpIGFzIENvbnRhaW5lciB8IHVuZGVmaW5lZDtcblx0XHRsZXQgcmVzb2x2ZUNyZWF0aW9uOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcblx0XHR0cnkge1xuXHRcdFx0aWYgKHNoZWxsQ29udGFpbmVyICYmICF0aGlzLmluc3RhbmNlKSB7XG5cdFx0XHRcdHRoaXMuaW5zdGFuY2VQcm9taXNlID0gbmV3IFByb21pc2U8U2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIHwgdW5kZWZpbmVkPigocmVzb2x2ZSkgPT4ge1xuXHRcdFx0XHRcdHJlc29sdmVDcmVhdGlvbiA9IHJlc29sdmU7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRjb25zdCBhcHBMaWZlQ3ljbGUgPSAoYXdhaXQgc2hlbGxDb250YWluZXIuZ2V0U2VydmljZUFzeW5jKFwiQXBwTGlmZUN5Y2xlXCIpKSBhcyBBcHBMaWZlQ3ljbGUgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGNvbnN0IGV4dGVuc2lvblNlcnZpY2UgPSAoYXdhaXQgc2hlbGxDb250YWluZXIuZ2V0U2VydmljZUFzeW5jKFwiRXh0ZW5zaW9uXCIpKSBhcyBFeHRlbnNpb24gfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGlmIChleHRlbnNpb25TZXJ2aWNlKSB7XG5cdFx0XHRcdFx0YXBwTGlmZUN5Y2xlPy5hdHRhY2hBcHBMb2FkZWQoXG5cdFx0XHRcdFx0XHR7fSxcblx0XHRcdFx0XHRcdGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgc2hlbGxIaXN0b3J5UHJvdmlkZXIgPSBhd2FpdCBTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIucmVnaXN0ZXJVc2VyQWN0aW9uKGV4dGVuc2lvblNlcnZpY2UpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmluc3RhbmNlID0gc2hlbGxIaXN0b3J5UHJvdmlkZXI7XG5cdFx0XHRcdFx0XHRcdHJlc29sdmVDcmVhdGlvbiEoc2hlbGxIaXN0b3J5UHJvdmlkZXIpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHRoaXNcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TG9nLmVycm9yKFwiQ2Fubm90IHJlZ2lzdGVyIGV4dGVuc2lvblwiLCBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSkpO1xuXHRcdFx0cmVzb2x2ZUNyZWF0aW9uPy4odW5kZWZpbmVkKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuaW5zdGFuY2VQcm9taXNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgdGhlIHVzZXIgYWN0aW9uIHRvIHRoZSBzaGVsbCwgdGhlIGFjdGlvbiB3aWxsIG9wZW4gdGhlIGRpYWxvZyB3aXRoIHRoZSBzaG9ydGN1dHMuXG5cdCAqIEBwYXJhbSBzaGVsbEV4dGVuc2lvblNlcnZpY2UgVGhlIGV4dGVuc2lvbiBzZXJ2aWNlIHRvIGFkZCB0aGUgdXNlciBhY3Rpb24gdG8gdGhlIHNoZWxsXG5cdCAqIEByZXR1cm5zIFRoZSBkaWFsb2cgd2l0aCB0aGUgc2hvcnRjdXRzXG5cdCAqL1xuXHRzdGF0aWMgYXN5bmMgcmVnaXN0ZXJVc2VyQWN0aW9uKHNoZWxsRXh0ZW5zaW9uU2VydmljZTogRXh0ZW5zaW9uKTogUHJvbWlzZTxTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIgfCB1bmRlZmluZWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXG5cdFx0XHRjb25zdCBzaGVsbEhpc3RvcnlEaWFsb2cgPSBuZXcgU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyKCk7XG5cdFx0XHRjb25zdCB1c2VyQWN0aW9uID0gYXdhaXQgc2hlbGxFeHRlbnNpb25TZXJ2aWNlLmNyZWF0ZVVzZXJBY3Rpb24oXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0ZXh0OiByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19TSE9SVENVVF9USVRMRVwiKSxcblx0XHRcdFx0XHRpY29uOiBJY29uUG9vbC5nZXRJY29uVVJJKFwia2V5Ym9hcmQtYW5kLW1vdXNlXCIpLFxuXHRcdFx0XHRcdHByZXNzOiAoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRzaGVsbEhpc3RvcnlEaWFsb2cuZ2V0U2hlbGxEaWFsb2dDb250ZW50KCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0Y29udHJvbFR5cGU6IFwic2FwLm0uQnV0dG9uXCJcblx0XHRcdFx0fVxuXHRcdFx0KTtcblx0XHRcdC8vIFN0b3JlIHJlZmVyZW5jZSBmb3IgY2xlYW51cCB3aGVuIHRoZSBpZnJhbWUgaXMgcmVsb2FkZWQvdW5sb2FkZWRcblx0XHRcdHRoaXMuX3VzZXJBY3Rpb24gPSB1c2VyQWN0aW9uO1xuXG5cdFx0XHRpZiAoIXRoaXMuX2NsZWFudXBBdHRhY2hlZCkge1xuXHRcdFx0XHR0aGlzLl9jbGVhbnVwQXR0YWNoZWQgPSB0cnVlO1xuXHRcdFx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInBhZ2VoaWRlXCIsICgpID0+IHtcblx0XHRcdFx0XHR0aGlzLl91c2VyQWN0aW9uLmRlc3Ryb3koKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cblx0XHRcdHVzZXJBY3Rpb24uc2hvd0ZvckN1cnJlbnRBcHAoKTtcblx0XHRcdHJldHVybiBzaGVsbEhpc3RvcnlEaWFsb2c7XG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJDYW5ub3QgYWRkIHVzZXIgYWN0aW9uXCIsIGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKSk7XG5cdFx0fVxuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztFQVlBO0FBQ0E7QUFDQTtBQUNBO0VBSEEsSUFLcUJBLDJCQUEyQixJQUFBQyxJQUFBLEdBRC9DQyxjQUFjLENBQUMsdURBQXVELENBQUMsRUFBQUQsSUFBQSxDQUFBRSxNQUFBLElBQUFDLDRCQUFBLDBCQUFBQyxjQUFBO0lBQUEsU0FBQUwsNEJBQUE7TUFBQSxJQUFBTSxLQUFBO01BQUEsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsRUFBQUMsSUFBQSxPQUFBQyxLQUFBLENBQUFKLElBQUEsR0FBQUssSUFBQSxNQUFBQSxJQUFBLEdBQUFMLElBQUEsRUFBQUssSUFBQTtRQUFBRixJQUFBLENBQUFFLElBQUEsSUFBQUosU0FBQSxDQUFBSSxJQUFBO01BQUE7TUFBQU4sS0FBQSxHQUFBRCxjQUFBLENBQUFRLElBQUEsVUFBQUgsSUFBQTtNQUFBSixLQUFBLENBRS9EUSxTQUFTLEdBQUcsQ0FBQztNQUFBLE9BQUFSLEtBQUE7SUFBQTtJQUFBUyxRQUFBLEdBQUFmLDJCQUFBO0lBQUFnQixjQUFBLENBQUFoQiwyQkFBQSxFQUFBSyxjQUFBO0lBQUEsSUFBQVksTUFBQSxHQUFBakIsMkJBQUEsQ0FBQWtCLFNBQUE7SUFBQUQsTUFBQSxDQUVyQkUscUJBQXFCLEdBQXJCLFNBQUFBLHFCQUFxQkEsQ0FBQSxFQUFTO01BQzdCO01BQ0EsTUFBTUMsV0FBVyxHQUFHLEdBQUc7TUFDdkIsSUFBSUMsSUFBSSxHQUFHQyxNQUFNLENBQUNDLFVBQVUsR0FBR0QsTUFBTSxDQUFDRSxVQUFVO01BQ2hELElBQUlILElBQUksR0FBR0QsV0FBVyxHQUFHRSxNQUFNLENBQUNHLE1BQU0sQ0FBQ0MsVUFBVSxFQUFFO1FBQ2xETCxJQUFJLEdBQUdDLE1BQU0sQ0FBQ0csTUFBTSxDQUFDQyxVQUFVLEdBQUdOLFdBQVc7TUFDOUM7TUFDQSxJQUFJTyxLQUFLLEdBQUdDLE9BQU8sQ0FBQ0MsUUFBUSxDQUFDLENBQUM7TUFDOUJGLEtBQUssR0FBRyxJQUFJLENBQUNHLGNBQWMsQ0FBQ0gsS0FBSyxDQUFDO01BQ2xDLE1BQU1JLEdBQUcsR0FBR0MsR0FBRyxDQUFDQyxFQUFFLENBQUNDLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLDRDQUE0QyxDQUFDO01BQzlFLE1BQU1DLFdBQVcsR0FBR2QsTUFBTSxDQUFDZSxRQUFRLENBQUNDLFFBQVEsR0FBRyxJQUFJLEdBQUdoQixNQUFNLENBQUNlLFFBQVEsQ0FBQ0UsSUFBSTtNQUMxRTtNQUNBLE1BQU1DLE1BQU0sR0FBRyw2QkFBNkIsR0FBR0MsU0FBUyxDQUFDTCxXQUFXLENBQUMsR0FBRyxnQkFBZ0IsR0FBR1QsS0FBSztNQUNoRyxNQUFNZSxLQUFLLEdBQUdwQixNQUFNLENBQUNxQixJQUFJLENBQ3hCWixHQUFHLEdBQUdTLE1BQU0sRUFDWixRQUFRLEVBQ1IsK0RBQStEcEIsV0FBVyxtQkFBbUJFLE1BQU0sQ0FBQ3NCLFNBQVMsU0FBU3ZCLElBQUksRUFDM0gsQ0FBQztNQUNELElBQUlxQixLQUFLLEVBQUU7UUFDVixNQUFNRyxxQkFBcUIsR0FBSUMsWUFBMEIsSUFBVztVQUNuRSxJQUFJVixXQUFXLEtBQUtVLFlBQVksQ0FBQ0MsTUFBTSxFQUFFO1lBQ3hDLE1BQU1DLFdBQVcsR0FBR0YsWUFBWSxFQUFFRyxJQUFJO1lBQ3RDLElBQUlELFdBQVcsQ0FBQ0UsT0FBTyxLQUFLLHFDQUFxQyxFQUFFO2NBQ2xFLE1BQU1DLFdBQVcsR0FBR0wsWUFBWSxDQUFDTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztjQUMzQ1YsS0FBSyxDQUFDVyxXQUFXLENBQUM7Z0JBQUVILE9BQU8sRUFBRTtjQUFzQyxDQUFDLEVBQUVuQixHQUFHLENBQUN1QixVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUdsQixXQUFXLEdBQUdMLEdBQUcsRUFBRSxDQUM5R29CLFdBQVcsQ0FDWCxDQUFDO2NBQ0Y3QixNQUFNLENBQUNpQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUVWLHFCQUFxQixDQUFDO1lBQzdEO1VBQ0Q7UUFDRCxDQUFDO1FBQ0QsSUFBSTtVQUNISCxLQUFLLENBQUNjLE1BQU0sR0FBRyxJQUFJO1FBQ3BCLENBQUMsQ0FBQyxPQUFPQyxDQUFDLEVBQUU7VUFDWDtVQUNBQyxHQUFHLENBQUNDLEtBQUssQ0FBQywyQkFBMkIsRUFBRUYsQ0FBQyxZQUFZRyxLQUFLLEdBQUdILENBQUMsQ0FBQ0ksT0FBTyxHQUFHQyxNQUFNLENBQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ25GO1FBRUFNLFVBQVUsQ0FBQyxNQUFZO1VBQ3RCekMsTUFBTSxDQUFDMEMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFbkIscUJBQXFCLENBQUM7VUFDekR2QixNQUFNLENBQUMrQixXQUFXLENBQ2pCO1lBQUVZLEVBQUUsRUFBRSwwQkFBMEIsR0FBRyxJQUFJLENBQUNuRCxTQUFTLEVBQUU7WUFBRW9DLE9BQU8sRUFBRTtVQUF3QyxDQUFDLEVBQ3ZHZCxXQUNELENBQUM7UUFDRixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNWO1FBQ0FkLE1BQU0sQ0FBQzRDLFFBQVEsR0FBRyxZQUFrQjtVQUNuQ3hCLEtBQUssQ0FBQ3lCLEtBQUssQ0FBQyxDQUFDO1FBQ2QsQ0FBQztNQUNGO0lBQ0Q7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BUkM7SUFBQWxELE1BQUEsQ0FTUWEsY0FBYyxHQUF0QixTQUFRQSxjQUFjQSxDQUFDSCxLQUFhLEVBQVU7TUFDN0MsSUFBSSxDQUFDQSxLQUFLLENBQUMyQixVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDOUIsSUFBSTtVQUNILE1BQU1jLGNBQWMsR0FBR0MsZ0JBQWdCLENBQUNDLFFBQVEsQ0FBQ0MsZUFBZSxDQUFDO1VBQ2pFNUMsS0FBSyxHQUFHeUMsY0FBYyxDQUFDSSxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQztVQUMxRCxJQUFJLENBQUM3QyxLQUFLLEVBQUU7WUFDWCxNQUFNOEMsYUFBYSxHQUFHTCxjQUFjLENBQUNJLGdCQUFnQixDQUFDLG9DQUFvQyxDQUFDO1lBQzNGLElBQUlDLGFBQWEsRUFBRTtjQUNsQixNQUFNQyxVQUFVLEdBQUdDLElBQUksQ0FBQ0MsS0FBSyxDQUFDSCxhQUFhLENBQUM7Y0FDNUMsSUFBSUMsVUFBVSxJQUFJQSxVQUFVLENBQUNHLE9BQU8sSUFBSUgsVUFBVSxDQUFDRyxPQUFPLENBQUNwRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN0RWtCLEtBQUssR0FBRytDLFVBQVUsQ0FBQ0csT0FBTyxDQUFDLENBQUMsQ0FBQztjQUM5QjtZQUNEO1VBQ0Q7UUFDRCxDQUFDLENBQUMsT0FBT3BCLENBQUMsRUFBRTtVQUNYQyxHQUFHLENBQUNvQixJQUFJLENBQUMsdUNBQXVDLEVBQUVyQixDQUFDLFlBQVlHLEtBQUssR0FBR0gsQ0FBQyxDQUFDSSxPQUFPLEdBQUdDLE1BQU0sQ0FBQ0wsQ0FBQyxDQUFDLENBQUM7VUFDN0Y5QixLQUFLLEdBQUcsYUFBYTtRQUN0QjtRQUNBLElBQUksQ0FBQ0EsS0FBSyxJQUFJLENBQUNBLEtBQUssQ0FBQzJCLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtVQUN4QztVQUNBM0IsS0FBSyxHQUFHLGFBQWE7UUFDdEI7TUFDRDtNQUNBLE9BQU9BLEtBQUs7SUFDYixDQUFDO0lBYUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUpDM0IsMkJBQUEsQ0FLYStFLFdBQVcsR0FBeEIsZUFBYUEsV0FBV0EsQ0FBQSxFQUFxRDtNQUM1RTtNQUNBLE1BQU1DLGNBQWMsR0FBR2hELEdBQUcsQ0FBQ0MsRUFBRSxDQUFDQyxPQUFPLENBQUMsc0JBQXNCLENBQTBCO01BQ3RGLElBQUkrQyxlQUFxQztNQUN6QyxJQUFJO1FBQ0gsSUFBSUQsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDRSxRQUFRLEVBQUU7VUFDckMsSUFBSSxDQUFDQyxlQUFlLEdBQUcsSUFBSUMsT0FBTyxDQUEyQ0MsT0FBTyxJQUFLO1lBQ3hGSixlQUFlLEdBQUdJLE9BQU87VUFDMUIsQ0FBQyxDQUFDO1VBQ0YsTUFBTUMsWUFBWSxHQUFJLE1BQU1OLGNBQWMsQ0FBQ08sZUFBZSxDQUFDLGNBQWMsQ0FBOEI7VUFDdkcsTUFBTUMsZ0JBQWdCLEdBQUksTUFBTVIsY0FBYyxDQUFDTyxlQUFlLENBQUMsV0FBVyxDQUEyQjtVQUNyRyxJQUFJQyxnQkFBZ0IsRUFBRTtZQUNyQkYsWUFBWSxFQUFFRyxlQUFlLENBQzVCLENBQUMsQ0FBQyxFQUNGLFlBQTJCO2NBQzFCLE1BQU1DLG9CQUFvQixHQUFHLE1BQU0xRiwyQkFBMkIsQ0FBQzJGLGtCQUFrQixDQUFDSCxnQkFBZ0IsQ0FBQztjQUNuRyxJQUFJLENBQUNOLFFBQVEsR0FBR1Esb0JBQW9CO2NBQ3BDVCxlQUFlLENBQUVTLG9CQUFvQixDQUFDO1lBQ3ZDLENBQUMsRUFDRCxJQUNELENBQUM7VUFDRjtRQUNEO01BQ0QsQ0FBQyxDQUFDLE9BQU9qQyxDQUFDLEVBQUU7UUFDWEMsR0FBRyxDQUFDa0MsS0FBSyxDQUFDLDJCQUEyQixFQUFFbkMsQ0FBQyxZQUFZRyxLQUFLLEdBQUdILENBQUMsQ0FBQ0ksT0FBTyxHQUFHQyxNQUFNLENBQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ2xGd0IsZUFBZSxHQUFHWSxTQUFTLENBQUM7TUFDN0I7TUFDQSxPQUFPLElBQUksQ0FBQ1YsZUFBZTtJQUM1Qjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQW5GLDJCQUFBLENBS2EyRixrQkFBa0IsR0FBL0IsZUFBYUEsa0JBQWtCQSxDQUFDRyxxQkFBZ0MsRUFBb0Q7TUFDbkgsSUFBSTtRQUNILE1BQU1DLGNBQWMsR0FBR0MsR0FBRyxDQUFDQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBRTtRQUVuRSxNQUFNQyxrQkFBa0IsR0FBRyxJQUFJbEcsMkJBQTJCLENBQUMsQ0FBQztRQUM1RCxNQUFNbUcsVUFBVSxHQUFHLE1BQU1MLHFCQUFxQixDQUFDTSxnQkFBZ0IsQ0FDOUQ7VUFDQ0MsSUFBSSxFQUFFTixjQUFjLENBQUNPLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztVQUNoREMsSUFBSSxFQUFFQyxRQUFRLENBQUNDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQztVQUMvQ0MsS0FBSyxFQUFFQSxDQUFBLEtBQVk7WUFDbEJSLGtCQUFrQixDQUFDL0UscUJBQXFCLENBQUMsQ0FBQztVQUMzQztRQUNELENBQUMsRUFDRDtVQUNDd0YsV0FBVyxFQUFFO1FBQ2QsQ0FDRCxDQUFDO1FBQ0Q7UUFDQSxJQUFJLENBQUNDLFdBQVcsR0FBR1QsVUFBVTtRQUU3QixJQUFJLENBQUMsSUFBSSxDQUFDVSxnQkFBZ0IsRUFBRTtVQUMzQixJQUFJLENBQUNBLGdCQUFnQixHQUFHLElBQUk7VUFDNUJ2RixNQUFNLENBQUMwQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsTUFBTTtZQUN6QyxJQUFJLENBQUM0QyxXQUFXLENBQUNFLE9BQU8sQ0FBQyxDQUFDO1VBQzNCLENBQUMsQ0FBQztRQUNIO1FBRUFYLFVBQVUsQ0FBQ1ksaUJBQWlCLENBQUMsQ0FBQztRQUM5QixPQUFPYixrQkFBa0I7TUFDMUIsQ0FBQyxDQUFDLE9BQU9jLEdBQUcsRUFBRTtRQUNidEQsR0FBRyxDQUFDa0MsS0FBSyxDQUFDLHdCQUF3QixFQUFFb0IsR0FBRyxZQUFZcEQsS0FBSyxHQUFHb0QsR0FBRyxDQUFDbkQsT0FBTyxHQUFHQyxNQUFNLENBQUNrRCxHQUFHLENBQUMsQ0FBQztNQUN0RjtJQUNELENBQUM7SUFBQSxPQUFBaEgsMkJBQUE7RUFBQSxFQTdLdURpSCxhQUFhLEdBQUE3Ryw0QkFBQSxDQThGOUQ4RyxhQUFhLEdBQUcsS0FBSyxFQUFBOUcsNEJBQUEsQ0FLckJ5RyxnQkFBZ0IsR0FBRyxLQUFLLEVBQUF6Ryw0QkFBQSxNQUFBRCxNQUFBO0VBQUFZLFFBQUEsR0FBQWYsMkJBQUE7RUFBQSxPQUFBZSxRQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
185
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfY2xhc3MiLCJfU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIiwiX01hbmFnZWRPYmplY3QiLCJfdGhpcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsIl9wb3B1cElkeCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRTaGVsbERpYWxvZ0NvbnRlbnQiLCJ3aW5kb3dXaWR0aCIsImxlZnQiLCJ3aW5kb3ciLCJzY3JlZW5MZWZ0Iiwib3V0ZXJXaWR0aCIsInNjcmVlbiIsImF2YWlsV2lkdGgiLCJ0aGVtZSIsIlRoZW1pbmciLCJnZXRUaGVtZSIsIl9zYW5pdGl6ZVRoZW1lIiwidXJsIiwic2FwIiwidWkiLCJyZXF1aXJlIiwidG9VcmwiLCJsb2NhbE9yaWdpbiIsImxvY2F0aW9uIiwicHJvdG9jb2wiLCJob3N0IiwicGFyYW1zIiwiZW5jb2RlVVJMIiwibXlXaW4iLCJvcGVuIiwic2NyZWVuVG9wIiwiaGFuZGxlTWVzc2FnZVJlY2VpdmVkIiwibWVzc2FnZUV2ZW50Iiwib3JpZ2luIiwibWVzc2FnZURhdGEiLCJkYXRhIiwic2VydmljZSIsIm1lc3NhZ2VQb3J0IiwicG9ydHMiLCJwb3N0TWVzc2FnZSIsInN0YXJ0c1dpdGgiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwib3BlbmVyIiwiZSIsIkxvZyIsImRlYnVnIiwiRXJyb3IiLCJtZXNzYWdlIiwiU3RyaW5nIiwic2V0VGltZW91dCIsImFkZEV2ZW50TGlzdGVuZXIiLCJpZCIsIm9udW5sb2FkIiwiY2xvc2UiLCJjb21wdXRlZFN0eWxlcyIsImdldENvbXB1dGVkU3R5bGUiLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsImdldFByb3BlcnR5VmFsdWUiLCJ0aGVtZU1ldGFkYXRhIiwidGhlbWVNYXRjaCIsIkpTT04iLCJwYXJzZSIsIkV4dGVuZHMiLCJpbmZvIiwiZ2V0SW5zdGFuY2UiLCJzaGVsbENvbnRhaW5lciIsInJlc29sdmVDcmVhdGlvbiIsImluc3RhbmNlIiwiaW5zdGFuY2VQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJhcHBMaWZlQ3ljbGUiLCJnZXRTZXJ2aWNlQXN5bmMiLCJleHRlbnNpb25TZXJ2aWNlIiwiYXR0YWNoQXBwTG9hZGVkIiwic2hlbGxIaXN0b3J5UHJvdmlkZXIiLCJyZWdpc3RlclVzZXJBY3Rpb24iLCJlcnJvciIsInVuZGVmaW5lZCIsInNoZWxsRXh0ZW5zaW9uU2VydmljZSIsInJlc291cmNlQnVuZGxlIiwiTGliIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJzaGVsbEhpc3RvcnlEaWFsb2ciLCJfdXNlckFjdGlvbiIsImRlc3Ryb3kiLCJ1c2VyQWN0aW9uIiwiY3JlYXRlVXNlckFjdGlvbiIsInRleHQiLCJnZXRUZXh0IiwiaWNvbiIsIkljb25Qb29sIiwiZ2V0SWNvblVSSSIsInByZXNzIiwiY29udHJvbFR5cGUiLCJfY2xlYW51cEF0dGFjaGVkIiwic2hvd0ZvckN1cnJlbnRBcHAiLCJlcnIiLCJNYW5hZ2VkT2JqZWN0IiwiaXNEaWFsb2dBZGRlZCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBlbmNvZGVVUkwgZnJvbSBcInNhcC9iYXNlL3NlY3VyaXR5L2VuY29kZVVSTFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IEljb25Qb29sIGZyb20gXCJzYXAvdWkvY29yZS9JY29uUG9vbFwiO1xuaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgVGhlbWluZyBmcm9tIFwic2FwL3VpL2NvcmUvVGhlbWluZ1wiO1xuaW1wb3J0IHR5cGUgQ29udGFpbmVyIGZyb20gXCJzYXAvdXNoZWxsL0NvbnRhaW5lclwiO1xuaW1wb3J0IHR5cGUgQXBwTGlmZUN5Y2xlIGZyb20gXCJzYXAvdXNoZWxsL3NlcnZpY2VzL0FwcExpZmVDeWNsZVwiO1xuaW1wb3J0IHR5cGUgRXh0ZW5zaW9uIGZyb20gXCJzYXAvdXNoZWxsL3NlcnZpY2VzL0V4dGVuc2lvblwiO1xuaW1wb3J0IHR5cGUgSXRlbSBmcm9tIFwic2FwL3VzaGVsbC9zZXJ2aWNlcy9FeHRlbnNpb24vSXRlbVwiO1xuXG4vKipcbiAqIFByb3ZpZGVzIGEgZGlhbG9nIHRvIGV4cGxhaW4gdGhlIHNob3J0Y3V0cyB0byB0aGUgdXNlci5cbiAqIFRoaXMgZGlhbG9nIHdpbGwgYmUgcmVnaXN0ZXJlZCBpbiB0aGUgc2hlbGwgdXNlciBtZW51IGFuZCB3aWxsIG9wZW4gYXMgYW4gaW5kZXBlbmRlbnQgd2luZG93LlxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29udHJvbHMuc2hvcnRjdXRzLlNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlclwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIGV4dGVuZHMgTWFuYWdlZE9iamVjdCB7XG5cdHByaXZhdGUgX3BvcHVwSWR4ID0gMDtcblxuXHRnZXRTaGVsbERpYWxvZ0NvbnRlbnQoKTogdm9pZCB7XG5cdFx0Ly8gUG9zaXRpb24gdG8gdG9wIHJpZ2h0IG9mIHRoZSBtYWluIHdpbmRvdyBpZiBwb3NzaWJsZVxuXHRcdGNvbnN0IHdpbmRvd1dpZHRoID0gNjIwO1xuXHRcdGxldCBsZWZ0ID0gd2luZG93LnNjcmVlbkxlZnQgKyB3aW5kb3cub3V0ZXJXaWR0aDtcblx0XHRpZiAobGVmdCArIHdpbmRvd1dpZHRoID4gd2luZG93LnNjcmVlbi5hdmFpbFdpZHRoKSB7XG5cdFx0XHRsZWZ0ID0gd2luZG93LnNjcmVlbi5hdmFpbFdpZHRoIC0gd2luZG93V2lkdGg7XG5cdFx0fVxuXHRcdGxldCB0aGVtZSA9IFRoZW1pbmcuZ2V0VGhlbWUoKTtcblx0XHR0aGVtZSA9IHRoaXMuX3Nhbml0aXplVGhlbWUodGhlbWUpO1xuXHRcdGNvbnN0IHVybCA9IHNhcC51aS5yZXF1aXJlLnRvVXJsKFwic2FwL2ZlL2NvbnRyb2xzL3Nob3J0Y3V0cy9wb3B1cC9pbmRleC5odG1sXCIpO1xuXHRcdGNvbnN0IGxvY2FsT3JpZ2luID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgXCIvL1wiICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XG5cdFx0Ly8gV2UgcGFzcyB0aGUgdGhlbWUgYW5kIHRoZSBvcmlnaW4gdG8gdGhlIHBvcHVwIHNvIHRoYXQgaXQgY2FuIGNvbW11bmljYXRlIHNhZmVseSB3aXRoIHRoZSBwYXJlbnRcblx0XHRjb25zdCBwYXJhbXMgPSBcIj9zYXAtdWkteHgtc2hvcnRjdXQtb3JpZ2luPVwiICsgZW5jb2RlVVJMKGxvY2FsT3JpZ2luKSArIFwiJnNhcC11aS10aGVtZT1cIiArIHRoZW1lO1xuXHRcdGNvbnN0IG15V2luID0gd2luZG93Lm9wZW4oXG5cdFx0XHR1cmwgKyBwYXJhbXMsXG5cdFx0XHRcIl9ibGFua1wiLFxuXHRcdFx0YHBvcHVwLHRvb2xiYXI9bm8sbWVudWJhcj1ubyxzY3JvbGxiYXJzPW5vLGxvY2F0aW9uPW5vLHdpZHRoPSR7d2luZG93V2lkdGh9LGhlaWdodD01NTAsdG9wPSR7d2luZG93LnNjcmVlblRvcH0sbGVmdD0ke2xlZnR9YFxuXHRcdCk7XG5cdFx0aWYgKG15V2luKSB7XG5cdFx0XHRjb25zdCBoYW5kbGVNZXNzYWdlUmVjZWl2ZWQgPSAobWVzc2FnZUV2ZW50OiBNZXNzYWdlRXZlbnQpOiB2b2lkID0+IHtcblx0XHRcdFx0aWYgKGxvY2FsT3JpZ2luID09PSBtZXNzYWdlRXZlbnQub3JpZ2luKSB7XG5cdFx0XHRcdFx0Y29uc3QgbWVzc2FnZURhdGEgPSBtZXNzYWdlRXZlbnQ/LmRhdGE7XG5cdFx0XHRcdFx0aWYgKG1lc3NhZ2VEYXRhLnNlcnZpY2UgPT09IFwic2FwLnVpLmludGVyYWN0aW9uLk1lc3NhZ2VQb3J0UmVhZHlcIikge1xuXHRcdFx0XHRcdFx0Y29uc3QgbWVzc2FnZVBvcnQgPSBtZXNzYWdlRXZlbnQucG9ydHNbMF07IC8vIFJlbWVtYmVyIHRoZSBwb3J0XG5cdFx0XHRcdFx0XHRteVdpbi5wb3N0TWVzc2FnZSh7IHNlcnZpY2U6IFwic2FwLnVpLmludGVyYWN0aW9uLk1lc3NhZ2VQb3J0UmVhZHlcIiB9LCB1cmwuc3RhcnRzV2l0aChcIi9cIikgPyBsb2NhbE9yaWdpbiA6IHVybCwgW1xuXHRcdFx0XHRcdFx0XHRtZXNzYWdlUG9ydFxuXHRcdFx0XHRcdFx0XSk7XG5cdFx0XHRcdFx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgaGFuZGxlTWVzc2FnZVJlY2VpdmVkKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRteVdpbi5vcGVuZXIgPSBudWxsO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHQvLyBUaGlzIG1pZ2h0IGZhaWwgd2hlbiB0aGVyZSBpcyBDT1JTIGludm9sdmVkIGFueXdheSBhbmQgd2UgY2FuJ3QgYWNjZXNzIHRoZSBvcGVuZXIgYW55d2F5XG5cdFx0XHRcdExvZy5kZWJ1ZyhcIkNhbm5vdCBzZXQgb3BlbmVyIHRvIG51bGxcIiwgZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpKTtcblx0XHRcdH1cblxuXHRcdFx0c2V0VGltZW91dCgoKTogdm9pZCA9PiB7XG5cdFx0XHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVNZXNzYWdlUmVjZWl2ZWQpO1xuXHRcdFx0XHR3aW5kb3cucG9zdE1lc3NhZ2UoXG5cdFx0XHRcdFx0eyBpZDogXCJzYXAuZmUuaW50ZXJhY3Rpb24uUG9wdXBcIiArIHRoaXMuX3BvcHVwSWR4KyssIHNlcnZpY2U6IFwic2FwLnVpLmludGVyYWN0aW9uLlJlcXVlc3RNZXNzYWdlUG9ydFwiIH0sXG5cdFx0XHRcdFx0bG9jYWxPcmlnaW5cblx0XHRcdFx0KTtcblx0XHRcdH0sIDE1MDApOyAvLyBnaXZlIGEgYml0IG9mIHRpbWUgZm9yIHRoZSBwb3B1cCB0byBiZSByZWFkeVxuXHRcdFx0Ly8gV2UgY2FuJ3QgcmVseSBvbiB0aGUgb25sb2FkIG9mIHRoZSBwb3B1cCBiZWNhdXNlIGl0IGlzIG5vdCBhbHdheXMgYXZhaWxibGUgaW4gQ09SUyBzY2VuYXJpb3Ncblx0XHRcdHdpbmRvdy5vbnVubG9hZCA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcblx0XHRcdFx0bXlXaW4uY2xvc2UoKTtcblx0XHRcdH07XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNhbml0aXplcyB0aGUgdGhlbWUgbmFtZSB0byBlbnN1cmUgaXQgc3RhcnRzIHdpdGggXCJzYXAtXCIuXG5cdCAqIElmIHRoZSB0aGVtZSBkb2VzIG5vdCBzdGFydCB3aXRoIFwic2FwLVwiLCBpdCB0cmllcyB0byBnZXQgdGhlIHRoZW1lIGZyb20gdGhlIGNvbXB1dGVkIHN0eWxlcy5cblx0ICogSWYgaXQgc3RpbGwgZG9lcyBub3QgZmluZCBhIHZhbGlkIHRoZW1lLCBpdCBkZWZhdWx0cyB0byBcInNhcF9ob3Jpem9uXCIuXG5cdCAqIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIHBvcHVwIGFsd2F5cyB1c2VzIGEgdmFsaWQgdGhlbWUuXG5cdCAqIEBwYXJhbSB0aGVtZSBUaGUgdGhlbWUgbmFtZSB0byBzYW5pdGl6ZVxuXHQgKiBAcmV0dXJucyBUaGUgc2FuaXRpemVkIHRoZW1lIG5hbWVcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHByaXZhdGUgX3Nhbml0aXplVGhlbWUodGhlbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0aWYgKCF0aGVtZS5zdGFydHNXaXRoKFwic2FwX1wiKSkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgY29tcHV0ZWRTdHlsZXMgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7XG5cdFx0XHRcdHRoZW1lID0gY29tcHV0ZWRTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZShcIi0tc2FwU2FwVGhlbWVJZFwiKTtcblx0XHRcdFx0aWYgKCF0aGVtZSkge1xuXHRcdFx0XHRcdGNvbnN0IHRoZW1lTWV0YWRhdGEgPSBjb21wdXRlZFN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1zYXBUaGVtZU1ldGFEYXRhLVVJNS1zYXAtdWktY29yZVwiKTtcblx0XHRcdFx0XHRpZiAodGhlbWVNZXRhZGF0YSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgdGhlbWVNYXRjaCA9IEpTT04ucGFyc2UodGhlbWVNZXRhZGF0YSk7XG5cdFx0XHRcdFx0XHRpZiAodGhlbWVNYXRjaCAmJiB0aGVtZU1hdGNoLkV4dGVuZHMgJiYgdGhlbWVNYXRjaC5FeHRlbmRzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdFx0dGhlbWUgPSB0aGVtZU1hdGNoLkV4dGVuZHNbMF07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdExvZy5pbmZvKFwiQ2Fubm90IGdldCB0aGVtZSBmcm9tIGNvbXB1dGVkIHN0eWxlc1wiLCBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSkpO1xuXHRcdFx0XHR0aGVtZSA9IFwic2FwX2hvcml6b25cIjtcblx0XHRcdH1cblx0XHRcdGlmICghdGhlbWUgfHwgIXRoZW1lLnN0YXJ0c1dpdGgoXCJzYXBfXCIpKSB7XG5cdFx0XHRcdC8vIEZpbmFsIGZhbGxiYWNrIHRvIHNhcF9ob3Jpem9uXG5cdFx0XHRcdHRoZW1lID0gXCJzYXBfaG9yaXpvblwiO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdGhlbWU7XG5cdH1cblxuXHRzdGF0aWMgaW5zdGFuY2VQcm9taXNlOiBQcm9taXNlPFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlciB8IHVuZGVmaW5lZD47XG5cblx0c3RhdGljIGluc3RhbmNlOiBTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIgfCB1bmRlZmluZWQ7XG5cblx0c3RhdGljIGlzRGlhbG9nQWRkZWQgPSBmYWxzZTtcblxuXHQvLyBLZWVwIHJlZmVyZW5jZSB0byB0aGUgY3JlYXRlZCB1c2VyIGFjdGlvbiBzbyB3ZSBjYW4gY2xlYW4gaXQgdXAgb24gaWZyYW1lIHJlbG9hZCB0byBhdm9pZCBkdXBsaWNhdGVcblx0c3RhdGljIF91c2VyQWN0aW9uOiBJdGVtIHwgdW5kZWZpbmVkO1xuXG5cdHN0YXRpYyBfY2xlYW51cEF0dGFjaGVkID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgb3IgcmV0dXJucyB0aGUgaW5zdGFuY2Ugb2YgdGhlIFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlci5cblx0ICogVGhpcyBpcyBhIHNpbmdsZXRvbiB0byBlbnN1cmUgd2Ugb25seSBoYXZlIG9uZSBpbnN0YW5jZSBvZiB0aGUgZGlhbG9nLlxuXHQgKiBAcmV0dXJucyBUaGUgaW5zdGFuY2Ugb2YgdGhlIFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlclxuXHQgKi9cblx0c3RhdGljIGFzeW5jIGdldEluc3RhbmNlKCk6IFByb21pc2U8U2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIHwgdW5kZWZpbmVkPiB7XG5cdFx0Ly8gVGVzdCB0aGUgc2hlbGwgZXhpc3RlbmNlIGFuZCByZWdpc3RlciB0aGUgZXh0ZW5zaW9uXG5cdFx0Y29uc3Qgc2hlbGxDb250YWluZXIgPSBzYXAudWkucmVxdWlyZShcInNhcC91c2hlbGwvQ29udGFpbmVyXCIpIGFzIENvbnRhaW5lciB8IHVuZGVmaW5lZDtcblx0XHRsZXQgcmVzb2x2ZUNyZWF0aW9uOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcblx0XHR0cnkge1xuXHRcdFx0aWYgKHNoZWxsQ29udGFpbmVyICYmICF0aGlzLmluc3RhbmNlKSB7XG5cdFx0XHRcdHRoaXMuaW5zdGFuY2VQcm9taXNlID0gbmV3IFByb21pc2U8U2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIHwgdW5kZWZpbmVkPigocmVzb2x2ZSkgPT4ge1xuXHRcdFx0XHRcdHJlc29sdmVDcmVhdGlvbiA9IHJlc29sdmU7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRjb25zdCBhcHBMaWZlQ3ljbGUgPSAoYXdhaXQgc2hlbGxDb250YWluZXIuZ2V0U2VydmljZUFzeW5jKFwiQXBwTGlmZUN5Y2xlXCIpKSBhcyBBcHBMaWZlQ3ljbGUgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGNvbnN0IGV4dGVuc2lvblNlcnZpY2UgPSAoYXdhaXQgc2hlbGxDb250YWluZXIuZ2V0U2VydmljZUFzeW5jKFwiRXh0ZW5zaW9uXCIpKSBhcyBFeHRlbnNpb24gfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGlmIChleHRlbnNpb25TZXJ2aWNlKSB7XG5cdFx0XHRcdFx0YXBwTGlmZUN5Y2xlPy5hdHRhY2hBcHBMb2FkZWQoXG5cdFx0XHRcdFx0XHR7fSxcblx0XHRcdFx0XHRcdGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgc2hlbGxIaXN0b3J5UHJvdmlkZXIgPSBhd2FpdCBTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIucmVnaXN0ZXJVc2VyQWN0aW9uKGV4dGVuc2lvblNlcnZpY2UpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmluc3RhbmNlID0gc2hlbGxIaXN0b3J5UHJvdmlkZXI7XG5cdFx0XHRcdFx0XHRcdHJlc29sdmVDcmVhdGlvbiEoc2hlbGxIaXN0b3J5UHJvdmlkZXIpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHRoaXNcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TG9nLmVycm9yKFwiQ2Fubm90IHJlZ2lzdGVyIGV4dGVuc2lvblwiLCBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSkpO1xuXHRcdFx0cmVzb2x2ZUNyZWF0aW9uPy4odW5kZWZpbmVkKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuaW5zdGFuY2VQcm9taXNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgdGhlIHVzZXIgYWN0aW9uIHRvIHRoZSBzaGVsbCwgdGhlIGFjdGlvbiB3aWxsIG9wZW4gdGhlIGRpYWxvZyB3aXRoIHRoZSBzaG9ydGN1dHMuXG5cdCAqIEBwYXJhbSBzaGVsbEV4dGVuc2lvblNlcnZpY2UgVGhlIGV4dGVuc2lvbiBzZXJ2aWNlIHRvIGFkZCB0aGUgdXNlciBhY3Rpb24gdG8gdGhlIHNoZWxsXG5cdCAqIEByZXR1cm5zIFRoZSBkaWFsb2cgd2l0aCB0aGUgc2hvcnRjdXRzXG5cdCAqL1xuXHRzdGF0aWMgYXN5bmMgcmVnaXN0ZXJVc2VyQWN0aW9uKHNoZWxsRXh0ZW5zaW9uU2VydmljZTogRXh0ZW5zaW9uKTogUHJvbWlzZTxTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIgfCB1bmRlZmluZWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXG5cdFx0XHRjb25zdCBzaGVsbEhpc3RvcnlEaWFsb2cgPSBuZXcgU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyKCk7XG5cblx0XHRcdC8vIERlc3Ryb3kgcHJldmlvdXMgdXNlciBhY3Rpb24gYmVmb3JlIGNyZWF0aW5nIGEgbmV3IG9uZSB0byBwcmV2ZW50IGR1cGxpY2F0ZXMgaW4ga2VlcC1hbGl2ZSBuYXZpZ2F0aW9uXG5cdFx0XHRpZiAodGhpcy5fdXNlckFjdGlvbikge1xuXHRcdFx0XHR0aGlzLl91c2VyQWN0aW9uLmRlc3Ryb3koKTtcblx0XHRcdFx0dGhpcy5fdXNlckFjdGlvbiA9IHVuZGVmaW5lZDtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgdXNlckFjdGlvbiA9IGF3YWl0IHNoZWxsRXh0ZW5zaW9uU2VydmljZS5jcmVhdGVVc2VyQWN0aW9uKFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGV4dDogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfU0hPUlRDVVRfVElUTEVcIiksXG5cdFx0XHRcdFx0aWNvbjogSWNvblBvb2wuZ2V0SWNvblVSSShcImtleWJvYXJkLWFuZC1tb3VzZVwiKSxcblx0XHRcdFx0XHRwcmVzczogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0c2hlbGxIaXN0b3J5RGlhbG9nLmdldFNoZWxsRGlhbG9nQ29udGVudCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGNvbnRyb2xUeXBlOiBcInNhcC5tLkJ1dHRvblwiXG5cdFx0XHRcdH1cblx0XHRcdCk7XG5cdFx0XHQvLyBTdG9yZSByZWZlcmVuY2UgZm9yIGNsZWFudXAgd2hlbiB0aGUgaWZyYW1lIGlzIHJlbG9hZGVkL3VubG9hZGVkXG5cdFx0XHR0aGlzLl91c2VyQWN0aW9uID0gdXNlckFjdGlvbjtcblxuXHRcdFx0aWYgKCF0aGlzLl9jbGVhbnVwQXR0YWNoZWQpIHtcblx0XHRcdFx0dGhpcy5fY2xlYW51cEF0dGFjaGVkID0gdHJ1ZTtcblx0XHRcdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJwYWdlaGlkZVwiLCAoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5fdXNlckFjdGlvbj8uZGVzdHJveSgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblxuXHRcdFx0dXNlckFjdGlvbi5zaG93Rm9yQ3VycmVudEFwcCgpO1xuXHRcdFx0cmV0dXJuIHNoZWxsSGlzdG9yeURpYWxvZztcblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdExvZy5lcnJvcihcIkNhbm5vdCBhZGQgdXNlciBhY3Rpb25cIiwgZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2Fn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W119
@@ -112,7 +112,7 @@ export default class ShortcutExplanationProvider extends ManagedObject {
112
112
  static isDialogAdded = false;
113
113
 
114
114
  // Keep reference to the created user action so we can clean it up on iframe reload to avoid duplicate
115
- static _userAction: Item;
115
+ static _userAction: Item | undefined;
116
116
 
117
117
  static _cleanupAttached = false;
118
118
 
@@ -161,6 +161,13 @@ export default class ShortcutExplanationProvider extends ManagedObject {
161
161
  const resourceBundle = Lib.getResourceBundleFor("sap.fe.controls")!;
162
162
 
163
163
  const shellHistoryDialog = new ShortcutExplanationProvider();
164
+
165
+ // Destroy previous user action before creating a new one to prevent duplicates in keep-alive navigation
166
+ if (this._userAction) {
167
+ this._userAction.destroy();
168
+ this._userAction = undefined;
169
+ }
170
+
164
171
  const userAction = await shellExtensionService.createUserAction(
165
172
  {
166
173
  text: resourceBundle.getText("C_SHORTCUT_TITLE"),
@@ -179,7 +186,7 @@ export default class ShortcutExplanationProvider extends ManagedObject {
179
186
  if (!this._cleanupAttached) {
180
187
  this._cleanupAttached = true;
181
188
  window.addEventListener("pagehide", () => {
182
- this._userAction.destroy();
189
+ this._userAction?.destroy();
183
190
  });
184
191
  }
185
192
 
@@ -7,6 +7,15 @@
7
7
  background-color: var(--sapShell_Background);
8
8
  }
9
9
 
10
+ .sapFeEasyFillReviewPaneWrapper {
11
+ overflow: hidden;
12
+ }
13
+
14
+ .sapFeEasyFillReviewPaneContainer {
15
+ min-height: 0;
16
+ overflow-y: auto;
17
+ }
18
+
10
19
  .sapFeEasyFillReviewArea > .sapMFlexItem.sapUiContentPadding {
11
20
  padding: 0;
12
21
  }
@@ -25,30 +34,72 @@
25
34
  color: var(--sapContent_LabelColor);
26
35
  }
27
36
 
28
- .sapFeEasyFillDialog .sapUiFormCLContainer {
29
- padding-bottom: 0 !important;
30
- }
31
-
32
37
  .sapFeEasyFillDialog .sapUiFormCL.sapUiFormCLSmallColumns .sapUiFormCLElement > .sapUiFormCLCellsS6 {
33
- width: 100% !important;
38
+ width: 100%;
34
39
  }
35
40
 
36
- #easyFillObjectPageLayout {
41
+ #sapFeEasyFillObjectPageLayout {
37
42
  min-width: 20rem;
38
43
  }
39
44
 
40
- #easyFillObjectPageLayout-spacer {
41
- display: none !important;
45
+ #sapFeEasyFillObjectPageLayout-spacer {
46
+ display: none;
42
47
  }
43
48
 
44
- .sapUiEasyFillPreviewTable {
49
+ .sapFeEasyFillPreviewTable {
45
50
  border-radius: 0.5rem;
46
- border: 1px solid var(--sapList_BorderColor, #e5e5e5);
51
+ border: 1px solid var(--sapList_BorderColor);
47
52
  }
48
- .sapUiEasyFillPreviewTable .sapMListTblRow:first-child {
53
+
54
+ .sapFeEasyFillPreviewTable .sapMListTblRow:first-child {
49
55
  border-top: none;
50
56
  }
51
- .sapUiEasyFillWarningCell .sapMInputBaseContentWrapper {
52
- background-color: var(--sapField_WarningBackground, #fff3b0) !important;
53
- border-color: var(--sapField_WarningColor, #e9730c) !important;
57
+ .sapFeEasyFillWarningCell .sapMInputBaseContentWrapper {
58
+ background-color: var(--sapField_WarningBackground) !important;
59
+ border-color: var(--sapField_WarningColor) !important;
60
+ }
61
+ .sapFeEasyFillWarningCell .sapMText,
62
+ .sapFeEasyFillWarningCell .sapMLabel {
63
+ background-color: var(--sapField_WarningBackground) !important;
64
+ }
65
+
66
+ // do not display header details when it is collapsed, as it takes up space
67
+ .sapFeEasyFillDialog .sapUxAPObjectPageHeaderDetailsHidden {
68
+ display: none;
69
+ }
70
+
71
+ .sapFeEasyFillDialog {
72
+ // unnecessary padding for the inner grid of the section content
73
+ .sapFeEasyFillSubsection [id$="-innerGrid"] {
74
+ padding: 0;
75
+ }
76
+ // unnecessary margin bottom for the last element in the inner grid of the section content
77
+ .sapFeEasyFillSubsection [id$="-innerGrid"] > :first-child {
78
+ margin-bottom: 0;
79
+ }
80
+ }
81
+
82
+ // padding for the form containers for fields subsection
83
+ .sapFeEasyFillDialog .sapFeEasyFillForm .sapUiFormCLContainer {
84
+ padding: 1rem !important;
85
+ }
86
+
87
+ // unnecessary margin top for table titles which have a margin-top 2rem by default
88
+ .sapFeEasyFillDialog .sapFeEasyFillSectionDetailed {
89
+ margin-top: 0 !important;
90
+ }
91
+
92
+ // margin bottom for the last section (detailed layout)
93
+ .sapFeEasyFillDialog .sapFeEasyFillSectionDetailed:last-child {
94
+ margin-bottom: 2rem;
95
+ }
96
+
97
+ // margin bottom for the last section (condensed layout)
98
+ .sapFeEasyFillDialog .sapFeEasyFillSectionCondensed:last-child {
99
+ margin-bottom: 2rem;
100
+ }
101
+
102
+ // padding top for the first section (condensed layout)
103
+ .sapFeEasyFillDialog .sapFeEasyFillSectionCondensed:first-child {
104
+ padding-top: 2rem;
54
105
  }