@sapui5/sap.fe.templates 1.145.0 → 1.145.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.
@@ -54,6 +54,7 @@ import type InputBase from "sap/m/InputBase";
54
54
  import InstanceManager from "sap/m/InstanceManager";
55
55
  import type NavContainer from "sap/m/NavContainer";
56
56
  import type Popover from "sap/m/Popover";
57
+ import type SearchField from "sap/m/SearchField";
57
58
  import type ToolbarSpacer from "sap/m/ToolbarSpacer";
58
59
  import Device from "sap/ui/Device";
59
60
  import type UI5Event from "sap/ui/base/Event";
@@ -296,12 +297,13 @@ class ObjectPageController extends PageController {
296
297
  }
297
298
 
298
299
  /**
299
- * Find the last visible subsection and add the sapUxAPObjectPageSubSectionFitContainer CSS class if it contains only a GridTable or a TreeTable.
300
+ * Add the sapUxAPObjectPageSubSectionFitContainer CSS class to every visible subsection that contains only a single GridTable or TreeTable.
301
+ * This makes the table fill the full height of its container so that the scrollbar appears on the table itself rather than on the page.
300
302
  * @param subSections The sub sections to look for
301
303
  */
302
304
  private checkSectionsForNonResponsiveTable(subSections: ObjectPageSubSection[]): void {
303
- const changeClassForTables = (event: Event, lastVisibleSubSection: ObjectPageSubSection): void => {
304
- const blocks = [...lastVisibleSubSection.getBlocks(), ...lastVisibleSubSection.getMoreBlocks()];
305
+ const changeClassForTables = (event: Event, visibleSubSection: ObjectPageSubSection): void => {
306
+ const blocks = [...visibleSubSection.getBlocks(), ...visibleSubSection.getMoreBlocks()];
305
307
  if (blocks.length === 1) {
306
308
  const table = this.searchTableInBlock(blocks[0] as SubSectionBlock);
307
309
  if (!table) {
@@ -315,17 +317,15 @@ class ObjectPageController extends PageController {
315
317
  tableAPI?.getTableDefinition().control.rowCountMode === "Auto"
316
318
  ) {
317
319
  //In case there is only a single table in a subSection we fit that to the whole page so that the scrollbar comes only on table and not on page
318
- lastVisibleSubSection.addStyleClass("sapUxAPObjectPageSubSectionFitContainer");
319
- lastVisibleSubSection.detachEvent("modelContextChange", changeClassForTables, this);
320
+ visibleSubSection.addStyleClass("sapUxAPObjectPageSubSectionFitContainer");
321
+ visibleSubSection.detachEvent("modelContextChange", changeClassForTables, this);
320
322
  }
321
323
  }
322
324
  };
323
- for (let subSectionIndex = subSections.length - 1; subSectionIndex >= 0; subSectionIndex--) {
324
- if (subSections[subSectionIndex].getVisible()) {
325
- const lastVisibleSubSection = subSections[subSectionIndex];
325
+ for (const subSection of subSections) {
326
+ if (subSection.getVisible()) {
326
327
  // We need to attach this event in order to manage the Object Page Lazy Loading mechanism
327
- lastVisibleSubSection.attachEvent("modelContextChange", lastVisibleSubSection, changeClassForTables, this);
328
- break;
328
+ subSection.attachEvent("modelContextChange", subSection, changeClassForTables, this);
329
329
  }
330
330
  }
331
331
  }
@@ -563,9 +563,15 @@ class ObjectPageController extends PageController {
563
563
  const oSubSection = aSubSections[iSubSection];
564
564
  // SubSection's binding is enabled.
565
565
  oSubSection.setBindingContext(undefined);
566
- const blocks = oSubSection.getBlocks() as SubSectionBlock[];
566
+ const blocks = oSubSection.getBlocks();
567
567
  // SubSection's contents binding is disabled.
568
- blocks.forEach((block) => block.setBindingContext(null));
568
+ blocks.forEach((block) => {
569
+ if (block.isA<SubSectionBlock>("sap.fe.templates.ObjectPage.controls.SubSectionBlock")) {
570
+ block.content.setBindingContext(null);
571
+ } else {
572
+ block.setBindingContext(null);
573
+ }
574
+ });
569
575
  oSubSection.getMoreBlocks().forEach((subBlock) => subBlock.setBindingContext(null));
570
576
  oSubSection.getActions().forEach((actions) => actions.setBindingContext(null));
571
577
  }
@@ -640,6 +646,7 @@ class ObjectPageController extends PageController {
640
646
  /**
641
647
  * Set the initial focus in edit mode.
642
648
  * @param aSubSections Object page sub sections
649
+ * @param fromTabNavigation Indicates if the focus is set after a tab navigation
643
650
  */
644
651
  _updateFocusInEditMode(aSubSections: ObjectPageSubSection[], fromTabNavigation = false): void {
645
652
  setTimeout(
@@ -647,7 +654,7 @@ class ObjectPageController extends PageController {
647
654
  // We set the focus in a timeeout, otherwise the focus sometimes goes to the TabBar
648
655
  const oObjectPage = this._getObjectPageLayoutControl();
649
656
  const oMandatoryField = this._getFirstEmptyMandatoryFieldFromSubSection(aSubSections);
650
- let oFieldToFocus;
657
+ let oFieldToFocus: UI5Element | undefined;
651
658
  if (oMandatoryField) {
652
659
  if (oMandatoryField.isA("sap.fe.macros.MultiValueField")) {
653
660
  oFieldToFocus = (oMandatoryField as unknown as MultiValueFieldBlock).getMultiValueField();
@@ -663,9 +670,22 @@ class ObjectPageController extends PageController {
663
670
  const focusInfo = oFieldToFocus.getFocusInfo() as { targetInfo: object };
664
671
  focusInfo.targetInfo = { silent: true };
665
672
  if (oFieldToFocus.isA("sap.ui.mdc.field.FieldInput")) {
666
- oFieldToFocus = oFieldToFocus.getParent();
673
+ oFieldToFocus = oFieldToFocus.getParent() as UI5Element | undefined;
674
+ }
675
+
676
+ if (
677
+ oFieldToFocus?.isA<SearchField>("sap.m.SearchField") &&
678
+ oFieldToFocus.getEnableSuggestions() &&
679
+ !oFieldToFocus.isBound("enableSuggestions")
680
+ ) {
681
+ // In case the focus is set on a search field with suggestions, we temporarily disable the suggestions to avoid triggering them on focus
682
+ // unless this property is bound (to avoid modifying something in a model)
683
+ oFieldToFocus.setEnableSuggestions(false);
684
+ oFieldToFocus.focus(focusInfo);
685
+ oFieldToFocus.setEnableSuggestions(true);
686
+ } else {
687
+ oFieldToFocus?.focus(focusInfo);
667
688
  }
668
- oFieldToFocus.focus(focusInfo);
669
689
  }
670
690
  }.bind(this),
671
691
  fromTabNavigation ? 300 : 0
@@ -710,8 +730,14 @@ class ObjectPageController extends PageController {
710
730
  if (oSubSection.isA<SubSection>("sap.fe.macros.controls.section.SubSection")) {
711
731
  oSubSection.handleSubSectionCreated(this.getView());
712
732
  }
713
- const blocks = oSubSection.getBlocks() as SubSectionBlock[];
714
- blocks.forEach((block) => block.setBindingContext(undefined));
733
+ const blocks = oSubSection.getBlocks();
734
+ blocks.forEach((block) => {
735
+ if (block.isA<SubSectionBlock>("sap.fe.templates.ObjectPage.controls.SubSectionBlock")) {
736
+ block.content.setBindingContext(undefined);
737
+ } else {
738
+ block.setBindingContext(undefined);
739
+ }
740
+ });
715
741
  oSubSection.getMoreBlocks().forEach((subBlock) => subBlock.setBindingContext(undefined));
716
742
  oSubSection.getActions().forEach((actions) => actions.setBindingContext(undefined));
717
743
  }
@@ -425,7 +425,7 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
425
425
  value: "{internal>UserID}",
426
426
  additionalValue: "{internal>UserDescription}",
427
427
  display: "DescriptionValue",
428
- width: "20em",
428
+ width: "100%",
429
429
  required: true,
430
430
  valueHelp: "userValueHelp",
431
431
  placeholder: this.getTranslatedText("C_COLLABORATIONDRAFT_INVITATION_INPUT_PLACEHOLDER"),
@@ -636,4 +636,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
636
636
  _exports = CollaborationDraft;
637
637
  return _exports;
638
638
  }, false);
639
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVU0VSU19QQVJBTUVURVJTIiwiVVNFUl9JRF9QQVJBTUVURVIiLCJDb2xsYWJvcmF0aW9uRHJhZnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsInJlcXVpcmVkIiwiX2RlYzMiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJwcm9wcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJzaG93Q29sbGFib3JhdGlvblVzZXJEZXRhaWxzIiwiZXZlbnQiLCJzb3VyY2UiLCJnZXRTb3VyY2UiLCJ1c2VyRGV0YWlsc1BvcG92ZXIiLCJnZXRVc2VyRGV0YWlsc1BvcG92ZXIiLCJzZXRCaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwib3BlbkJ5IiwibWFuYWdlQ29sbGFib3JhdGlvbiIsIm1hbmFnZURpYWxvZyIsImdldE1hbmFnZURpYWxvZyIsInJlYWRJbnZpdGVkVXNlcnMiLCJvcGVuIiwiZm9ybWF0VXNlclN0YXR1cyIsInVzZXJTdGF0dXMiLCJVc2VyU3RhdHVzIiwiQ3VycmVudGx5RWRpdGluZyIsImdldFRyYW5zbGF0ZWRUZXh0IiwiQ2hhbmdlc01hZGUiLCJOb0NoYW5nZXNNYWRlIiwiTm90WWV0SW52aXRlZCIsImFkZFVzZXJGaWVsZENoYW5nZWQiLCJ1c2VySW5wdXQiLCJnZXRQYXJhbWV0ZXIiLCJ0aGVuIiwibmV3VXNlcklkIiwiaW50ZXJuYWxNb2RlbENvbnRleHQiLCJpbnZpdGVkVXNlcnMiLCJnZXRQcm9wZXJ0eSIsIm5ld1VzZXIiLCJpZCIsIm5hbWUiLCJmaW5kSW5kZXgiLCJ1c2VyIiwic2V0VmFsdWVTdGF0ZSIsInNldFZhbHVlU3RhdGVUZXh0IiwiYWRkVXNlciIsImJpbmQiLCJjYXRjaCIsImludml0ZVVzZXIiLCJ1c2VycyIsIm5ld2x5SW52aXRlZFVzZXJzIiwiYmluZGluZ0NvbnRleHQiLCJjb250ZXh0cyIsIm1hbmFnZURpYWxvZ1VzZXJUYWJsZSIsImdldEJpbmRpbmciLCJnZXRDb250ZXh0cyIsImZvckVhY2giLCJjb250ZXh0IiwicHVzaCIsIlVzZXJJRCIsIlVzZXJBY2Nlc3NSb2xlIiwicmVzdWx0cyIsIlByb21pc2UiLCJhbGwiLCJzaGFyZU9iamVjdCIsInJlcXVlc3RJbnZpdGVkVXNlcnNJbkRyYWZ0IiwibmV3VXNlcnMiLCJpbnZpdGVkVXNlciIsImluY2x1ZGVzIiwibWVzc2FnZUhhbmRsZXIiLCJnZXRQYWdlQ29udHJvbGxlciIsInNob3dNZXNzYWdlRGlhbG9nIiwibGVuZ3RoIiwiTWVzc2FnZVRvYXN0Iiwic2hvdyIsImdldFNoYXJlZEl0ZW1OYW1lIiwidG9TdHJpbmciLCJjbG9zZU1hbmFnZURpYWxvZyIsImN1cnJlbnRVc2VyTGlzdCIsImFjdGl2ZVVzZXJzIiwiZ2V0TW9kZWwiLCJtZSIsIkNvbGxhYm9yYXRpb25VdGlscyIsImdldE1lIiwiZ2V0QXBwQ29tcG9uZW50IiwidXNlckNvbnRleHQiLCJ1c2VyRGF0YSIsImdldE9iamVjdCIsImlzTWUiLCJpc0FjdGl2ZSIsImZpbmQiLCJ1IiwidXNlckRlc2NyaXB0aW9uIiwiVXNlckRlc2NyaXB0aW9uIiwiaW5pdGlhbHMiLCJmb3JtYXRJbml0aWFscyIsImdldFRleHQiLCJVc2VyRWRpdGluZ1N0YXRlIiwiSW5Qcm9ncmVzcyIsInN0YXR1cyIsImNvbG9yIiwiZ2V0VXNlckNvbG9yIiwic2V0UHJvcGVydHkiLCJlIiwiY2xvc2UiLCJkZXN0cm95IiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJfb3duZXJDb21wb25lbnQiLCJfY29udHJvbExvYWRlZCIsIlByb21pc2VLZWVwZXIiLCJHcmlkVGFibGVDb250cm9sIiwidW5kZWZpbmVkIiwiTGliIiwibG9hZCIsImRlZmF1bHQiLCJfX3VpNV9yZXF1aXJlX2FzeW5jIiwiR3JpZFRhYmxlQ29sdW1uQ29udHJvbCIsImNvbnRleHRPYmplY3QiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwiY29udGV4dFBhdGgiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsInJlc29sdmUiLCJfanN4IiwiUmVzcG9uc2l2ZVBvcG92ZXIiLCJzaG93SGVhZGVyIiwiY2xhc3MiLCJwbGFjZW1lbnQiLCJjaGlsZHJlbiIsIl9qc3hzIiwiSEJveCIsIkF2YXRhciIsImRpc3BsYXlTaXplIiwiYmFja2dyb3VuZENvbG9yIiwiVkJveCIsIkxhYmVsIiwidGV4dCIsImFkZERlcGVuZGVudCIsIkRpYWxvZyIsInRpdGxlIiwiZ2V0SW52aXRhdGlvbkRpYWxvZ1RpdGxlRXhwQmluZGluZyIsImhvcml6b250YWxTY3JvbGxpbmciLCJ2ZXJ0aWNhbFNjcm9sbGluZyIsImNvbnRlbnRXaWR0aCIsInN0cmV0Y2giLCJDb21tb25IZWxwZXIiLCJpc0Rlc2t0b3AiLCJiZWdpbkJ1dHRvbiIsIkJ1dHRvbiIsInByZXNzIiwiZW5hYmxlZCIsInBhcnRzIiwicGF0aCIsImZvcm1hdHRlciIsImZvcm1hdEludml0ZUJ1dHRvbiIsImVuZEJ1dHRvbiIsIndpZHRoIiwiTWVzc2FnZVN0cmlwIiwic2hvd0ljb24iLCJzaG93Q2xvc2VCdXR0b24iLCJnZXRNYW5hZ2VEaWFsb2dBZGRVc2VyU2VjdGlvbiIsImdldE1hbmFnZURpYWxvZ1VzZXJUYWJsZSIsImJpbmRFbGVtZW50IiwibW9kZWwiLCJnZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGVDb2x1bW5zIiwiX0ZyYWdtZW50IiwidGVtcGxhdGUiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJsYWJlbCIsIlRleHQiLCJPYmplY3RTdGF0dXMiLCJzdGF0ZSIsImZvcm1hdFVzZXJTdGF0dXNDb2xvciIsImljb24iLCJyZW1vdmVVc2VyIiwidmlzaWJsZSIsInJvd3MiLCJ2aXNpYmxlUm93Q291bnQiLCJ2aXNpYmxlUm93Q291bnRNb2RlIiwic2VsZWN0aW9uTW9kZSIsImNvbHVtbnMiLCJGaWVsZCIsInZhbHVlIiwiYWRkaXRpb25hbFZhbHVlIiwiZGlzcGxheSIsInZhbHVlSGVscCIsInBsYWNlaG9sZGVyIiwiY2hhbmdlIiwiZGVwZW5kZW50cyIsIlZhbHVlSGVscCIsImRlbGVnYXRlIiwiZ2V0VmFsdWVIZWxwRGVsZWdhdGUiLCJ2YWxpZGF0ZUlucHV0IiwidHlwZWFoZWFkIiwiTURDUG9wb3ZlciIsIk1UYWJsZSIsImNhc2VTZW5zaXRpdmUiLCJ1c2VBc1ZhbHVlSGVscCIsImRpYWxvZyIsIk1EQ0RpYWxvZyIsIlZhbHVlU3RhdGUiLCJTdWNjZXNzIiwiV2FybmluZyIsIkluZm9ybWF0aW9uIiwibmJVc2VycyIsInNvbWUiLCJ0cmFuc2llbnQiLCJpdGVtIiwiZGVsZXRlVXNlcklEIiwiZmlsdGVyIiwicGFyYW1ldGVycyIsIiRzZWxlY3QiLCIkJGdyb3VwSWQiLCJpbnZpdGVkVXNlckxpc3QiLCJiaW5kTGlzdCIsImdldFBhdGgiLCJyZXF1ZXN0Q29udGV4dHMiLCJoZWFkZXJJbmZvIiwidGFyZ2V0RW50aXR5VHlwZSIsImFubm90YXRpb25zIiwiVUkiLCJIZWFkZXJJbmZvIiwic2hhcmVkSXRlbU5hbWUiLCJUaXRsZSIsImlzQW5ub3RhdGlvbk9mVHlwZSIsImlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIiwiVmFsdWUiLCJUeXBlTmFtZSIsImFjdGlvbk5hbWUiLCJ0YXJnZXRFbnRpdHlTZXQiLCJDb21tb24iLCJEcmFmdFJvb3QiLCJTaGFyZUFjdGlvbiIsImFjdGlvbiIsInJlc29sdmVQYXRoIiwidXNlclBhcmFtZXRlcnMiLCJwYXJhbSIsInBheWxvYWQiLCJwcm9wZXJ0eVBhdGgiLCJxdWFsaWZpZXJzIiwidmFsdWVIZWxwUXVhbGlmaWVyIiwiaXNBY3Rpb25QYXJhbWV0ZXJEaWFsb2ciLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJwYXJhbXMiLCJ0aXRsZUV4cHJlc3Npb24iLCJmb3JtYXRSZXN1bHQiLCJjb2xsYWJvcmF0aW9uRm9ybWF0dGVyIiwiZ2V0Rm9ybWF0dGVkVGV4dCIsImNvbXBpbGVFeHByZXNzaW9uIiwiZ2V0SW52aXRlQnV0dG9uIiwic3JjIiwiX2dldE93bmVyIiwiZ2V0TWV0YU1vZGVsIiwiTW9kZWxIZWxwZXIiLCJpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCIsIml0ZW1zIiwiQnVpbGRpbmdCbG9jayIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQ29sbGFib3JhdGlvbkRyYWZ0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudGl0eVNldCwgQWN0aW9uIGFzIFZvY2FidWxhcnlBY3Rpb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvRWRtXCI7XG5pbXBvcnQgdHlwZSB7IEVudGl0eVNldEFubm90YXRpb25zX0NvbW1vbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbW9uX0VkbVwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhRmllbGQsIERhdGFGaWVsZFR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgZm9ybWF0UmVzdWx0LCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHR5cGUgeyBCYWNrZW5kVXNlciwgVXNlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCB7XG5cdENvbGxhYm9yYXRpb25VdGlscyxcblx0VXNlckVkaXRpbmdTdGF0ZSxcblx0VXNlclN0YXR1cyxcblx0c2hhcmVPYmplY3Rcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IGNvbGxhYm9yYXRpb25Gb3JtYXR0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvQ29sbGFib3JhdGlvbkZvcm1hdHRlclwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBQcm9taXNlS2VlcGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Byb21pc2VLZWVwZXJcIjtcbmltcG9ydCB7IGlzQW5ub3RhdGlvbk9mVHlwZSwgaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgQ29tbW9uSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZUhlbHBQYXlsb2FkIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvdmFsdWVoZWxwL1ZhbHVlTGlzdEhlbHBlclwiO1xuaW1wb3J0IEF2YXRhciBmcm9tIFwic2FwL20vQXZhdGFyXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBEaWFsb2cgZnJvbSBcInNhcC9tL0RpYWxvZ1wiO1xuaW1wb3J0IEhCb3ggZnJvbSBcInNhcC9tL0hCb3hcIjtcbmltcG9ydCBMYWJlbCBmcm9tIFwic2FwL20vTGFiZWxcIjtcbmltcG9ydCBNZXNzYWdlU3RyaXAgZnJvbSBcInNhcC9tL01lc3NhZ2VTdHJpcFwiO1xuaW1wb3J0IE1lc3NhZ2VUb2FzdCBmcm9tIFwic2FwL20vTWVzc2FnZVRvYXN0XCI7XG5pbXBvcnQgT2JqZWN0U3RhdHVzIGZyb20gXCJzYXAvbS9PYmplY3RTdGF0dXNcIjtcbmltcG9ydCBSZXNwb25zaXZlUG9wb3ZlciBmcm9tIFwic2FwL20vUmVzcG9uc2l2ZVBvcG92ZXJcIjtcbmltcG9ydCB0eXBlIFRhYmxlIGZyb20gXCJzYXAvbS9UYWJsZVwiO1xuaW1wb3J0IFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCBWQm94IGZyb20gXCJzYXAvbS9WQm94XCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHsgVmFsdWVTdGF0ZSB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkJENoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC91aS9tZGMvRmllbGRcIjtcbmltcG9ydCBGaWVsZCBmcm9tIFwic2FwL3VpL21kYy9GaWVsZFwiO1xuaW1wb3J0IFZhbHVlSGVscCBmcm9tIFwic2FwL3VpL21kYy9WYWx1ZUhlbHBcIjtcbmltcG9ydCBNRENEaWFsb2cgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL0RpYWxvZ1wiO1xuaW1wb3J0IE1EQ1BvcG92ZXIgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL1BvcG92ZXJcIjtcbmltcG9ydCBNVGFibGUgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL2NvbnRlbnQvTVRhYmxlXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBJbnRlZ2VyIGZyb20gXCJzYXAvdWkvbW9kZWwvdHlwZS9JbnRlZ2VyXCI7XG5pbXBvcnQgdHlwZSBHcmlkVGFibGVDb2x1bW4gZnJvbSBcInNhcC91aS90YWJsZS9Db2x1bW5cIjtcbmltcG9ydCB0eXBlIEdyaWRUYWJsZSBmcm9tIFwic2FwL3VpL3RhYmxlL1RhYmxlXCI7XG5cbmNvbnN0IFVTRVJTX1BBUkFNRVRFUlMgPSBcIlVzZXJzXCI7XG5jb25zdCBVU0VSX0lEX1BBUkFNRVRFUiA9IFwiVXNlcklEXCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5jb21wb25lbnRzLkNvbGxhYm9yYXRpb25EcmFmdFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sbGFib3JhdGlvbkRyYWZ0IGV4dGVuZHMgQnVpbGRpbmdCbG9jayB7XG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIHJlcXVpcmVkOiB0cnVlIH0pXG5cdHB1YmxpYyBjb250ZXh0UGF0aCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHB1YmxpYyBpZD86IHN0cmluZztcblxuXHRwcml2YXRlIGNvbnRleHRPYmplY3Q/OiBEYXRhTW9kZWxPYmplY3RQYXRoPEVudGl0eVNldD47XG5cblx0cHJpdmF0ZSB1c2VyRGV0YWlsc1BvcG92ZXI/OiBSZXNwb25zaXZlUG9wb3ZlcjtcblxuXHRwcml2YXRlIG1hbmFnZURpYWxvZz86IERpYWxvZztcblxuXHRwcml2YXRlIG1hbmFnZURpYWxvZ1VzZXJUYWJsZT86IFRhYmxlO1xuXG5cdHByaXZhdGUgc3RhdGljIEdyaWRUYWJsZUNvbnRyb2w6IHR5cGVvZiBHcmlkVGFibGU7XG5cblx0cHJpdmF0ZSBzdGF0aWMgR3JpZFRhYmxlQ29sdW1uQ29udHJvbDogdHlwZW9mIEdyaWRUYWJsZUNvbHVtbjtcblxuXHRwcml2YXRlIF9jb250cm9sTG9hZGVkPzogUHJvbWlzZUtlZXBlcjx2b2lkPjtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wczogUHJvcGVydGllc09mPENvbGxhYm9yYXRpb25EcmFmdD4sIG90aGVycz86IFByb3BlcnRpZXNPZjxDb2xsYWJvcmF0aW9uRHJhZnQ+KSB7XG5cdFx0c3VwZXIocHJvcHMsIG90aGVycyk7XG5cdH1cblxuXHRhc3luYyBvbk1ldGFkYXRhQXZhaWxhYmxlKF9vd25lckNvbXBvbmVudDogVGVtcGxhdGVDb21wb25lbnQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0aGlzLl9jb250cm9sTG9hZGVkID0gbmV3IFByb21pc2VLZWVwZXIoKTtcblx0XHRpZiAoQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbnRyb2wgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0YXdhaXQgTGliLmxvYWQoeyBuYW1lOiBcInNhcC51aS50YWJsZVwiIH0pO1xuXHRcdFx0Y29uc3QgeyBkZWZhdWx0OiBHcmlkVGFibGVDb250cm9sIH0gPSBhd2FpdCBpbXBvcnQoXCJzYXAvdWkvdGFibGUvVGFibGVcIik7XG5cdFx0XHRDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29udHJvbCA9IEdyaWRUYWJsZUNvbnRyb2w7XG5cdFx0XHRjb25zdCB7IGRlZmF1bHQ6IEdyaWRUYWJsZUNvbHVtbkNvbnRyb2wgfSA9IGF3YWl0IGltcG9ydChcInNhcC91aS90YWJsZS9Db2x1bW5cIik7XG5cdFx0XHRDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCA9IEdyaWRUYWJsZUNvbHVtbkNvbnRyb2w7XG5cdFx0fVxuXHRcdHRoaXMuY29udGV4dE9iamVjdCA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCh0aGlzLmNvbnRleHRQYXRoKTtcblx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHR0aGlzLl9jb250cm9sTG9hZGVkLnJlc29sdmUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBhbmQgc2hvdyB0aGUgdXNlciBkZXRhaWxzIHBvcG92ZXIuXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgb2JqZWN0XG5cdCAqL1xuXHRzaG93Q29sbGFib3JhdGlvblVzZXJEZXRhaWxzID0gKGV2ZW50OiBFdmVudDx7fSwgQ29udHJvbD4pOiB2b2lkID0+IHtcblx0XHRjb25zdCBzb3VyY2UgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRpZiAoIXRoaXMudXNlckRldGFpbHNQb3BvdmVyKSB7XG5cdFx0XHR0aGlzLnVzZXJEZXRhaWxzUG9wb3ZlciA9IHRoaXMuZ2V0VXNlckRldGFpbHNQb3BvdmVyKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy51c2VyRGV0YWlsc1BvcG92ZXI/LnNldEJpbmRpbmdDb250ZXh0KHNvdXJjZS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0LCBcImludGVybmFsXCIpO1xuXHRcdHRoaXMudXNlckRldGFpbHNQb3BvdmVyPy5vcGVuQnkoc291cmNlKTtcblx0fTtcblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgdXNlciBkZXRhaWxzIHBvcG92ZXIuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIHRyZWVcblx0ICovXG5cdGdldFVzZXJEZXRhaWxzUG9wb3ZlcigpOiBSZXNwb25zaXZlUG9wb3ZlciB7XG5cdFx0Y29uc3QgdXNlckRldGFpbHNQb3BvdmVyID0gKFxuXHRcdFx0PFJlc3BvbnNpdmVQb3BvdmVyIHNob3dIZWFkZXI9e2ZhbHNlfSBjbGFzcz1cInNhcFVpQ29udGVudFBhZGRpbmdcIiBwbGFjZW1lbnQ9XCJCb3R0b21cIj5cblx0XHRcdFx0PEhCb3g+XG5cdFx0XHRcdFx0PEF2YXRhciBpbml0aWFscz1cIntpbnRlcm5hbD5pbml0aWFsc31cIiBkaXNwbGF5U2l6ZT1cIlNcIiBiYWNrZ3JvdW5kQ29sb3I9XCJ7aW50ZXJuYWw+Y29sb3J9XCIgLz5cblx0XHRcdFx0XHQ8VkJveD5cblx0XHRcdFx0XHRcdDxMYWJlbCBjbGFzcz1cInNhcFVpTWVkaXVtTWFyZ2luQmVnaW5cIiB0ZXh0PVwie2ludGVybmFsPm5hbWV9XCIgLz5cblx0XHRcdFx0XHRcdDxMYWJlbCBjbGFzcz1cInNhcFVpTWVkaXVtTWFyZ2luQmVnaW5cIiB0ZXh0PVwie2ludGVybmFsPmlkfVwiIC8+XG5cdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHQ8L0hCb3g+XG5cdFx0XHQ8L1Jlc3BvbnNpdmVQb3BvdmVyPlxuXHRcdCk7XG5cblx0XHR0aGlzLmFkZERlcGVuZGVudCh1c2VyRGV0YWlsc1BvcG92ZXIpO1xuXG5cdFx0cmV0dXJuIHVzZXJEZXRhaWxzUG9wb3Zlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBhbmQgb3BlbiB0aGUgbWFuYWdlIGRpYWxvZy5cblx0ICpcblx0ICovXG5cdG1hbmFnZUNvbGxhYm9yYXRpb24gPSAoKTogdm9pZCA9PiB7XG5cdFx0aWYgKCF0aGlzLm1hbmFnZURpYWxvZykge1xuXHRcdFx0dGhpcy5tYW5hZ2VEaWFsb2cgPSB0aGlzLmdldE1hbmFnZURpYWxvZygpO1xuXHRcdH1cblxuXHRcdHRoaXMucmVhZEludml0ZWRVc2VycygpO1xuXHRcdHRoaXMubWFuYWdlRGlhbG9nPy5vcGVuKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIG1hbmFnZSBkaWFsb2cgdXNlZCB0byBpbnZpdGUgZnVydGhlciB1c2Vycy5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0TWFuYWdlRGlhbG9nKCk6IERpYWxvZyB7XG5cdFx0Y29uc3QgbWFuYWdlRGlhbG9nID0gKFxuXHRcdFx0PERpYWxvZ1xuXHRcdFx0XHR0aXRsZT17dGhpcy5nZXRJbnZpdGF0aW9uRGlhbG9nVGl0bGVFeHBCaW5kaW5nKCl9XG5cdFx0XHRcdGhvcml6b250YWxTY3JvbGxpbmc9XCJGYWxzZVwiXG5cdFx0XHRcdHZlcnRpY2FsU2Nyb2xsaW5nPVwiRmFsc2VcIlxuXHRcdFx0XHRjb250ZW50V2lkdGg9XCIzNWVtXCJcblx0XHRcdFx0c3RyZXRjaD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCJmYWxzZVwiIDogXCJ0cnVlXCJ9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0YmVnaW5CdXR0b246IChcblx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fRElBTE9HX0NPTkZJUk1BVElPTlwiKX1cblx0XHRcdFx0XHRcdFx0cHJlc3M9e3RoaXMuaW52aXRlVXNlcn1cblx0XHRcdFx0XHRcdFx0dHlwZT1cIkVtcGhhc2l6ZWRcIlxuXHRcdFx0XHRcdFx0XHRlbmFibGVkPXt7XG5cdFx0XHRcdFx0XHRcdFx0cGFydHM6IFt7IHBhdGg6IFwiaW50ZXJuYWw+aW52aXRlZFVzZXJzL2xlbmd0aFwiIH0sIHsgcGF0aDogXCJpbnRlcm5hbD5pbnZpdGVkVXNlcnNcIiB9XSxcblx0XHRcdFx0XHRcdFx0XHRmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0SW52aXRlQnV0dG9uXG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0ZW5kQnV0dG9uOiAoXG5cdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX0RJQUxPR19DQU5DRUxcIil9XG5cdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLmNsb3NlTWFuYWdlRGlhbG9nfVxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IChcblx0XHRcdFx0XHRcdDxWQm94IGNsYXNzPVwic2FwVWlTbWFsbE1hcmdpblwiPlxuXHRcdFx0XHRcdFx0XHQ8VkJveCB3aWR0aD1cIjEwMCVcIj5cblx0XHRcdFx0XHRcdFx0XHQ8TWVzc2FnZVN0cmlwXG5cdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9NRVNTQUdFU1RSSVBcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwiSW5mb3JtYXRpb25cIlxuXHRcdFx0XHRcdFx0XHRcdFx0c2hvd0ljb249e3RydWV9XG5cdFx0XHRcdFx0XHRcdFx0XHRzaG93Q2xvc2VCdXR0b249e2ZhbHNlfVxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBVaU1lZGl1bU1hcmdpbkJvdHRvbVwiXG5cdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHRcdFx0XHQ8TGFiZWwgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fSU5QVVRfTEFCRUxcIil9IHJlcXVpcmVkPXt0cnVlfSAvPlxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRNYW5hZ2VEaWFsb2dBZGRVc2VyU2VjdGlvbigpfVxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGUoKX1cblx0XHRcdFx0XHRcdDwvVkJveD5cblx0XHRcdFx0XHQpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L0RpYWxvZz5cblx0XHQpO1xuXG5cdFx0dGhpcy5hZGREZXBlbmRlbnQobWFuYWdlRGlhbG9nKTtcblx0XHRtYW5hZ2VEaWFsb2cuYmluZEVsZW1lbnQoe1xuXHRcdFx0bW9kZWw6IFwiaW50ZXJuYWxcIixcblx0XHRcdHBhdGg6IFwiY29sbGFib3JhdGlvblwiXG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gbWFuYWdlRGlhbG9nO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybmluZyB0aGUgdGFibGUgY29sdW1uIHdpdGggdGhlIGxpc3Qgb2YgaW52aXRlZCB1c2Vycy5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0TWFuYWdlRGlhbG9nVXNlclRhYmxlQ29sdW1ucygpOiBHcmlkVGFibGVDb2x1bW5bXSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDw+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCIxMCVcIiA6IFwiM2VtXCJ9PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHR0ZW1wbGF0ZTogKFxuXHRcdFx0XHRcdFx0XHQ8SEJveCBhbGlnbkl0ZW1zPVwiQ2VudGVyXCIganVzdGlmeUNvbnRlbnQ9XCJTcGFjZUJldHdlZW5cIj5cblx0XHRcdFx0XHRcdFx0XHQ8QXZhdGFyIGRpc3BsYXlTaXplPVwiWFNcIiBiYWNrZ3JvdW5kQ29sb3I9XCJ7aW50ZXJuYWw+Y29sb3J9XCIgaW5pdGlhbHM9XCJ7aW50ZXJuYWw+aW5pdGlhbHN9XCIgLz5cblx0XHRcdFx0XHRcdFx0PC9IQm94PlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCIzNSVcIiA6IFwiNmVtXCJ9PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRsYWJlbDogPFRleHQgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fVEFCTEVfVVNFUl9DT0xVTU5cIil9IC8+LFxuXHRcdFx0XHRcdFx0dGVtcGxhdGU6IDxUZXh0IHRleHQ9XCJ7aW50ZXJuYWw+bmFtZX1cIiAvPlxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCI0NiVcIiA6IFwiOWVtXCJ9PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRsYWJlbDogPFRleHQgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fVEFCTEVfVVNFUl9TVEFUVVNfQ09MVU1OXCIpfSAvPixcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiAoXG5cdFx0XHRcdFx0XHRcdDxPYmplY3RTdGF0dXNcblx0XHRcdFx0XHRcdFx0XHRzdGF0ZT17eyBwYXRoOiBcImludGVybmFsPnN0YXR1c1wiLCBmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0VXNlclN0YXR1c0NvbG9yIH19XG5cdFx0XHRcdFx0XHRcdFx0dGV4dD17eyBwYXRoOiBcImludGVybmFsPnN0YXR1c1wiLCBmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0VXNlclN0YXR1cyB9fVxuXHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCI4JVwiIDogXCIzZW1cIn0+XG5cdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiAoXG5cdFx0XHRcdFx0XHRcdDxIQm94PlxuXHRcdFx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0XHRcdGljb249XCJzYXAtaWNvbjovL2RlY2xpbmVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZT1cIlRyYW5zcGFyZW50XCJcblx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLnJlbW92ZVVzZXJ9XG5cdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPVwiez0gISEke2ludGVybmFsPnRyYW5zaWVudH0gfVwiXG5cdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PC9IQm94PlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHQ8Lz5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIHRhYmxlIHdpdGggdGhlIGxpc3Qgb2YgaW52aXRlZCB1c2Vycy5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0TWFuYWdlRGlhbG9nVXNlclRhYmxlKCk6IFRhYmxlIHwgdW5kZWZpbmVkIHtcblx0XHR0aGlzLm1hbmFnZURpYWxvZ1VzZXJUYWJsZSA9IChcblx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29udHJvbFxuXHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRyb3dzPXt7IHBhdGg6IFwiaW50ZXJuYWw+aW52aXRlZFVzZXJzXCIgfX1cblx0XHRcdFx0dmlzaWJsZVJvd0NvdW50PXtDb21tb25IZWxwZXIuaXNEZXNrdG9wKCkgPyBcIjVcIiA6IFwiM1wifVxuXHRcdFx0XHR2aXNpYmxlUm93Q291bnRNb2RlPVwiRml4ZWRcIlxuXHRcdFx0XHRzZWxlY3Rpb25Nb2RlPVwiTm9uZVwiXG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0Y29sdW1uczogdGhpcy5nZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGVDb2x1bW5zKClcblx0XHRcdFx0fX1cblx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbnRyb2w+XG5cdFx0KTtcblx0XHRyZXR1cm4gdGhpcy5tYW5hZ2VEaWFsb2dVc2VyVGFibGU7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgc2VjdGlvbiBvbiB0aGUgZGlhbG9nIHJlbGF0ZWQgdG8gdGhlIHVzZXIgZmllbGQuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIHRyZWVcblx0ICovXG5cdGdldE1hbmFnZURpYWxvZ0FkZFVzZXJTZWN0aW9uKCk6IEhCb3gge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8SEJveCBjbGFzcz1cInNhcFVpTWVkaXVtTWFyZ2luQm90dG9tXCIgd2lkdGg9XCIxMDAlXCI+XG5cdFx0XHRcdDxGaWVsZFxuXHRcdFx0XHRcdHZhbHVlPVwie2ludGVybmFsPlVzZXJJRH1cIlxuXHRcdFx0XHRcdGFkZGl0aW9uYWxWYWx1ZT1cIntpbnRlcm5hbD5Vc2VyRGVzY3JpcHRpb259XCJcblx0XHRcdFx0XHRkaXNwbGF5PVwiRGVzY3JpcHRpb25WYWx1ZVwiXG5cdFx0XHRcdFx0d2lkdGg9XCIyMGVtXCJcblx0XHRcdFx0XHRyZXF1aXJlZD17dHJ1ZX1cblx0XHRcdFx0XHR2YWx1ZUhlbHA9XCJ1c2VyVmFsdWVIZWxwXCJcblx0XHRcdFx0XHRwbGFjZWhvbGRlcj17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fSU5QVVRfUExBQ0VIT0xERVJcIil9XG5cdFx0XHRcdFx0Y2hhbmdlPXt0aGlzLmFkZFVzZXJGaWVsZENoYW5nZWR9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0ZGVwZW5kZW50czogKFxuXHRcdFx0XHRcdFx0XHQ8VmFsdWVIZWxwIGlkPVwidXNlclZhbHVlSGVscFwiIGRlbGVnYXRlPXt0aGlzLmdldFZhbHVlSGVscERlbGVnYXRlKCl9IHZhbGlkYXRlSW5wdXQ9e3RydWV9PlxuXHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlYWhlYWQ6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0PE1EQ1BvcG92ZXI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PE1UYWJsZSBjYXNlU2Vuc2l0aXZlPVwidHJ1ZVwiIHVzZUFzVmFsdWVIZWxwPVwiZmFsc2VcIiAvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L01EQ1BvcG92ZXI+XG5cdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZGlhbG9nOiA8TURDRGlhbG9nIC8+XG5cdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0PC9WYWx1ZUhlbHA+XG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9GaWVsZD5cblx0XHRcdDwvSEJveD5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZvcm1hdHRlciB0byBzZXQgdGhlIHVzZXIgc3RhdHVzIGRlcGVuZGluZyBvbiB0aGUgZWRpdGluZyBzdGF0dXMuXG5cdCAqIEBwYXJhbSB1c2VyU3RhdHVzIFRoZSBlZGl0aW5nIHN0YXR1cyBvZiB0aGUgdXNlclxuXHQgKiBAcmV0dXJucyBUaGUgdXNlciBzdGF0dXNcblx0ICovXG5cdGZvcm1hdFVzZXJTdGF0dXMgPSAodXNlclN0YXR1czogVXNlclN0YXR1cyk6IHN0cmluZyA9PiB7XG5cdFx0c3dpdGNoICh1c2VyU3RhdHVzKSB7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuQ3VycmVudGx5RWRpdGluZzpcblx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9VU0VSX0NVUlJFTlRMWV9FRElUSU5HXCIpO1xuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLkNoYW5nZXNNYWRlOlxuXHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX1VTRVJfQ0hBTkdFU19NQURFXCIpO1xuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLk5vQ2hhbmdlc01hZGU6XG5cdFx0XHRcdHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfVVNFUl9OT19DSEFOR0VTX01BREVcIik7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuTm90WWV0SW52aXRlZDpcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfVVNFUl9OT1RfWUVUX0lOVklURURcIik7XG5cdFx0fVxuXHR9O1xuXG5cdC8qKlxuXHQgKiBGb3JtYXR0ZXIgdG8gc2V0IHRoZSB1c2VyIGNvbG9yIGRlcGVuZGluZyBvbiB0aGUgZWRpdGluZyBzdGF0dXMuXG5cdCAqIEBwYXJhbSB1c2VyU3RhdHVzIFRoZSBlZGl0aW5nIHN0YXR1cyBvZiB0aGUgdXNlclxuXHQgKiBAcmV0dXJucyBUaGUgdXNlciBzdGF0dXMgY29sb3Jcblx0ICovXG5cdGZvcm1hdFVzZXJTdGF0dXNDb2xvcih1c2VyU3RhdHVzOiBVc2VyU3RhdHVzKTogVmFsdWVTdGF0ZSB7XG5cdFx0c3dpdGNoICh1c2VyU3RhdHVzKSB7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuQ3VycmVudGx5RWRpdGluZzpcblx0XHRcdFx0cmV0dXJuIFZhbHVlU3RhdGUuU3VjY2Vzcztcblx0XHRcdGNhc2UgVXNlclN0YXR1cy5DaGFuZ2VzTWFkZTpcblx0XHRcdFx0cmV0dXJuIFZhbHVlU3RhdGUuV2FybmluZztcblx0XHRcdGNhc2UgVXNlclN0YXR1cy5Ob0NoYW5nZXNNYWRlOlxuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLk5vdFlldEludml0ZWQ6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXR1cm4gVmFsdWVTdGF0ZS5JbmZvcm1hdGlvbjtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRm9ybWF0dGVyIHRvIGVuYWJsZSB0aGUgaW52aXRlIGJ1dHRvbiBkZXBlbmRpbmcgb24gdGhlIGludml0ZWQgdXNlcnMgc3RhdHVzLlxuXHQgKiBAcGFyYW0gbmJVc2VycyBOdW1iZXIgb2YgdXNlcnNcblx0ICogQHBhcmFtIGludml0ZWRVc2VycyBMaXN0IG9mIHRoZSBpbnZpdGVkIHVzZXJzXG5cdCAqIEByZXR1cm5zIFRydWUgb3IgRmFsc2Vcblx0ICovXG5cdGZvcm1hdEludml0ZUJ1dHRvbihuYlVzZXJzOiBJbnRlZ2VyIHwgdW5kZWZpbmVkLCBpbnZpdGVkVXNlcnM6IFVzZXJbXSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuXHRcdGlmICghbmJVc2Vycykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gISFpbnZpdGVkVXNlcnM/LnNvbWUoKHVzZXIpID0+IHVzZXIuc3RhdHVzID09PSAwKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgdGhlIGFkZGVkIHVzZXIgdG8gdGhlIGxpc3Qgb2YgaW52aXRlZCB1c2Vycy5cblx0ICogQHBhcmFtIHVzZXJJbnB1dCBUaGUgdXNlciB0byBiZSBpbnZpdGVkXG5cdCAqIEBwYXJhbSBpbnZpdGVkVXNlcnMgVGhlIHVzZXJzIGFscmVhZHkgaW52aXRlZFxuXHQgKiBAcGFyYW0gbmV3VXNlciBUaGUgdXNlciB0byBiZSBpbnZpdGVkXG5cdCAqL1xuXHRhZGRVc2VyKHVzZXJJbnB1dDogRmllbGQsIGludml0ZWRVc2VyczogVXNlcltdLCBuZXdVc2VyOiBVc2VyKTogdm9pZCB7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSB1c2VySW5wdXQuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRjb25zdCBhY3RpdmVVc2VycyA9ICh1c2VySW5wdXQuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWwpLmdldFByb3BlcnR5KFwiL2NvbGxhYm9yYXRpb24vYWN0aXZlVXNlcnNcIik7XG5cdFx0bmV3VXNlci5uYW1lID0gbmV3VXNlci5uYW1lIHx8IG5ld1VzZXIuaWQ7XG5cdFx0bmV3VXNlci5pbml0aWFscyA9IENvbGxhYm9yYXRpb25VdGlscy5mb3JtYXRJbml0aWFscyhuZXdVc2VyLm5hbWUpO1xuXHRcdG5ld1VzZXIuY29sb3IgPSBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0VXNlckNvbG9yKG5ld1VzZXIuaWQsIGFjdGl2ZVVzZXJzLCBpbnZpdGVkVXNlcnMpO1xuXHRcdG5ld1VzZXIudHJhbnNpZW50ID0gdHJ1ZTtcblx0XHRuZXdVc2VyLnN0YXR1cyA9IFVzZXJTdGF0dXMuTm90WWV0SW52aXRlZDtcblx0XHRpbnZpdGVkVXNlcnMucHVzaChuZXdVc2VyKTtcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImludml0ZWRVc2Vyc1wiLCBpbnZpdGVkVXNlcnMpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiVXNlcklEXCIsIFwiXCIpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiVXNlckRlc2NyaXB0aW9uXCIsIFwiXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIHZhbHVlIHN0YXRlIG9mIHRoZSB1c2VyIGZpZWxkIHdoZW5ldmVyIGNoYW5nZWQuXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgb2JqZWN0IG9mIHRoZSB1c2VyIGlucHV0XG5cdCAqIEByZXR1cm5zIFByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSB2YWx1ZSBzdGF0ZSB3YXMgc2V0LlxuXHQgKi9cblx0YWRkVXNlckZpZWxkQ2hhbmdlZCA9IGFzeW5jIChldmVudDogRmllbGQkQ2hhbmdlRXZlbnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRjb25zdCB1c2VySW5wdXQgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRyZXR1cm4gZXZlbnRcblx0XHRcdC5nZXRQYXJhbWV0ZXIoXCJwcm9taXNlXCIpXG5cdFx0XHQ/LnRoZW4oXG5cdFx0XHRcdGZ1bmN0aW9uICh0aGlzOiBDb2xsYWJvcmF0aW9uRHJhZnQsIG5ld1VzZXJJZDogc3RyaW5nKTogdm9pZCB7XG5cdFx0XHRcdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSB1c2VySW5wdXQuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdFx0XHRjb25zdCBpbnZpdGVkVXNlcnM6IFVzZXJbXSA9IGludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwiaW52aXRlZFVzZXJzXCIpIHx8IFtdO1xuXHRcdFx0XHRcdGNvbnN0IG5ld1VzZXI6IFVzZXIgPSB7XG5cdFx0XHRcdFx0XHRpZDogaW50ZXJuYWxNb2RlbENvbnRleHQ/LmdldFByb3BlcnR5KFwiVXNlcklEXCIpLFxuXHRcdFx0XHRcdFx0bmFtZTogaW50ZXJuYWxNb2RlbENvbnRleHQ/LmdldFByb3BlcnR5KFwiVXNlckRlc2NyaXB0aW9uXCIpXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRpZiAoaW52aXRlZFVzZXJzLmZpbmRJbmRleCgodXNlcikgPT4gdXNlci5pZCA9PT0gbmV3VXNlcklkKSA+IC0xKSB7XG5cdFx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZShcIkVycm9yXCIpO1xuXHRcdFx0XHRcdFx0dXNlcklucHV0LnNldFZhbHVlU3RhdGVUZXh0KHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX1VTRVJfRVJST1JcIikpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0XHQhKFxuXHRcdFx0XHRcdFx0XHRpbnZpdGVkVXNlcnMuZmluZEluZGV4KCh1c2VyKSA9PiB1c2VyLmlkID09PSBuZXdVc2VyLmlkKSA+IC0xIHx8XG5cdFx0XHRcdFx0XHRcdChuZXdVc2VyLmlkID09PSBuZXdVc2VyLm5hbWUgJiYgbmV3VXNlci5pZCA9PT0gXCJcIilcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdHRoaXMuYWRkVXNlcih1c2VySW5wdXQsIGludml0ZWRVc2VycywgbmV3VXNlcik7XG5cdFx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZShcIk5vbmVcIik7XG5cdFx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZVRleHQoXCJcIik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LmJpbmQodGhpcylcblx0XHRcdClcblx0XHRcdC5jYXRjaChcblx0XHRcdFx0ZnVuY3Rpb24gKHRoaXM6IENvbGxhYm9yYXRpb25EcmFmdCk6IHZvaWQge1xuXHRcdFx0XHRcdHVzZXJJbnB1dC5zZXRWYWx1ZVN0YXRlKFwiV2FybmluZ1wiKTtcblx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZVRleHQodGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fVVNFUl9OT1RfRk9VTkRcIikpO1xuXHRcdFx0XHR9LmJpbmQodGhpcylcblx0XHRcdCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gcmVtb3ZlIGEgdXNlciBmcm9tIHRoZSBsaXN0IG9mIGludml0ZWQgdXNlci5cblx0ICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCBvYmplY3Qgb2YgdGhlIHJlbW92ZSBidXR0b25cblx0ICovXG5cdHJlbW92ZVVzZXIoZXZlbnQ6IEV2ZW50PHt9LCBCdXR0b24+KTogdm9pZCB7XG5cdFx0Y29uc3QgaXRlbSA9IGV2ZW50LmdldFNvdXJjZSgpO1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWxDb250ZXh0ID0gaXRlbT8uZ2V0QmluZGluZ0NvbnRleHQoXCJwYWdlSW50ZXJuYWxcIik7XG5cdFx0Y29uc3QgZGVsZXRlVXNlcklEID0gaXRlbT8uZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKT8uZ2V0UHJvcGVydHkoXCJpZFwiKTtcblx0XHRsZXQgaW52aXRlZFVzZXJzOiBVc2VyW10gPSBpbnRlcm5hbE1vZGVsQ29udGV4dD8uZ2V0UHJvcGVydHkoXCJjb2xsYWJvcmF0aW9uL2ludml0ZWRVc2Vyc1wiKTtcblx0XHRpbnZpdGVkVXNlcnMgPSBpbnZpdGVkVXNlcnMuZmlsdGVyKCh1c2VyKSA9PiB1c2VyLmlkICE9PSBkZWxldGVVc2VySUQpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0Py5zZXRQcm9wZXJ0eShcImNvbGxhYm9yYXRpb24vaW52aXRlZFVzZXJzXCIsIGludml0ZWRVc2Vycyk7XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbCB0aGUgc2hhcmUgYWN0aW9uIHRvIHVwZGF0ZSB0aGUgbGlzdCBvZiBpbnZpdGVkIHVzZXJzLlxuXHQgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IG9iamVjdCBvZiB0aGUgaW52aXRlIGJ1dHRvblxuXHQgKi9cblx0aW52aXRlVXNlciA9IGFzeW5jIChldmVudDogRXZlbnQ8e30sIEJ1dHRvbj4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRjb25zdCB1c2VyczogQmFja2VuZFVzZXJbXSA9IFtdLFxuXHRcdFx0bmV3bHlJbnZpdGVkVXNlcnM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3Qgc291cmNlID0gZXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3QgYmluZGluZ0NvbnRleHQgPSBzb3VyY2UuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdGNvbnN0IGNvbnRleHRzID0gKHRoaXMubWFuYWdlRGlhbG9nVXNlclRhYmxlPy5nZXRCaW5kaW5nKFwicm93c1wiKSBhcyBPRGF0YUxpc3RCaW5kaW5nKS5nZXRDb250ZXh0cygpO1xuXHRcdGNvbnRleHRzLmZvckVhY2goZnVuY3Rpb24gKGNvbnRleHQpIHtcblx0XHRcdHVzZXJzLnB1c2goe1xuXHRcdFx0XHRVc2VySUQ6IGNvbnRleHQuZ2V0UHJvcGVydHkoXCJpZFwiKSxcblx0XHRcdFx0VXNlckFjY2Vzc1JvbGU6IFwiT1wiIC8vIEZvciBub3cgYWNjb3JkaW5nIHRvIFVYIGV2ZXJ5IHVzZXIgcmV0cmlldmVzIHRoZSBvd25lciByb2xlXG5cdFx0XHR9KTtcblx0XHRcdGlmIChjb250ZXh0LmdldFByb3BlcnR5KFwic3RhdHVzXCIpID09PSBVc2VyU3RhdHVzLk5vdFlldEludml0ZWQpIHtcblx0XHRcdFx0bmV3bHlJbnZpdGVkVXNlcnMucHVzaChjb250ZXh0LmdldFByb3BlcnR5KFwiaWRcIikpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dHJ5IHtcblx0XHRcdC8vIFdlIHJlcXVlc3QgdGhlIG51bWJlciBvZiBpbnZpdGVkIHVzZXJzIGFmdGVyIHRoZSBzaGFyZSBhY3Rpb24gdG8gc2VlIGhvdyBtYW55IHVzZXJzIHdlcmUgcmVhbGx5IGludml0ZWRcblx0XHRcdGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChbc2hhcmVPYmplY3QoYmluZGluZ0NvbnRleHQsIHVzZXJzKSwgdGhpcy5yZXF1ZXN0SW52aXRlZFVzZXJzSW5EcmFmdCgpXSk7XG5cdFx0XHRjb25zdCBuZXdVc2VyczogQ29udGV4dFtdID0gW107XG5cdFx0XHRyZXN1bHRzWzFdLmZvckVhY2goKGludml0ZWRVc2VyKSA9PiB7XG5cdFx0XHRcdGlmIChuZXdseUludml0ZWRVc2Vycy5pbmNsdWRlcyhpbnZpdGVkVXNlci5nZXRQcm9wZXJ0eShcIlVzZXJJRFwiKSkpIHtcblx0XHRcdFx0XHRuZXdVc2Vycy5wdXNoKGludml0ZWRVc2VyKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBtZXNzYWdlSGFuZGxlciA9IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSEubWVzc2FnZUhhbmRsZXI7XG5cdFx0XHRhd2FpdCBtZXNzYWdlSGFuZGxlci5zaG93TWVzc2FnZURpYWxvZygpO1xuXG5cdFx0XHRzd2l0Y2ggKG5ld1VzZXJzLmxlbmd0aCkge1xuXHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0TWVzc2FnZVRvYXN0LnNob3coXG5cdFx0XHRcdFx0XHR0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9TVUNDRVNTX1RPQVNUX05PX1VTRVJcIiwgW1xuXHRcdFx0XHRcdFx0XHR0aGlzLmdldFNoYXJlZEl0ZW1OYW1lKGJpbmRpbmdDb250ZXh0KVxuXHRcdFx0XHRcdFx0XSlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDE6XG5cdFx0XHRcdFx0TWVzc2FnZVRvYXN0LnNob3coXG5cdFx0XHRcdFx0XHR0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9TVUNDRVNTX1RPQVNUXCIsIFt0aGlzLmdldFNoYXJlZEl0ZW1OYW1lKGJpbmRpbmdDb250ZXh0KV0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyhcblx0XHRcdFx0XHRcdHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX1NVQ0NFU1NfVE9BU1RfUExVUkFMXCIsIFtcblx0XHRcdFx0XHRcdFx0bmV3VXNlcnMubGVuZ3RoLnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdHRoaXMuZ2V0U2hhcmVkSXRlbU5hbWUoYmluZGluZ0NvbnRleHQpXG5cdFx0XHRcdFx0XHRdKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyh0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9GQUlMRURfVE9BU1RcIikpO1xuXHRcdH1cblx0XHR0aGlzLmNsb3NlTWFuYWdlRGlhbG9nKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIEZldGNoZXMgdGhlIGxpc3Qgb2YgdXNlcnMgdGhhdCBhcmUgYWxyZWFkeSBpbnZpdGVkIGluIHRoZSBkcmFmdC5cblx0ICogQHJldHVybnMgUHJvbWlzZSB3aXRoIHRoZSBsaXN0IG9mIHVzZXIgY29udGV4dHMuXG5cdCAqL1xuXHRwcml2YXRlIGFzeW5jIHJlcXVlc3RJbnZpdGVkVXNlcnNJbkRyYWZ0KCk6IFByb21pc2U8Q29udGV4dFtdPiB7XG5cdFx0Y29uc3QgbW9kZWwgPSB0aGlzLmdldE1vZGVsKCk7XG5cdFx0Y29uc3QgcGFyYW1ldGVycyA9IHtcblx0XHRcdCRzZWxlY3Q6IFwiVXNlcklELFVzZXJEZXNjcmlwdGlvbixVc2VyRWRpdGluZ1N0YXRlXCIsXG5cdFx0XHQkJGdyb3VwSWQ6IFwiJGF1dG8uV29ya2Vyc1wiXG5cdFx0fTtcblx0XHRjb25zdCBpbnZpdGVkVXNlckxpc3QgPSBtb2RlbD8uYmluZExpc3QoXG5cdFx0XHRgJHt0aGlzLmdldEJpbmRpbmdDb250ZXh0KCk/LmdldFBhdGgoKX0vRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvRHJhZnRBZG1pbmlzdHJhdGl2ZVVzZXJgLFxuXHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0W10sXG5cdFx0XHRbXSxcblx0XHRcdHBhcmFtZXRlcnNcblx0XHQpIGFzIE9EYXRhTGlzdEJpbmRpbmc7XG5cblx0XHQvLyBmb3Igbm93IHdlIHNldCBhIGxpbWl0IHRvIDEwMC4gdGhlcmUgc2hvdWxkbid0IGJlIG1vcmUgdGhhbiBhIGZld1xuXHRcdHJldHVybiBpbnZpdGVkVXNlckxpc3QucmVxdWVzdENvbnRleHRzKDAsIDEwMCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVhZHMgdGhlIGN1cnJlbnRseSBpbnZpdGVkIHVzZXIgYW5kIHN0b3JlIGl0IGluIHRoZSBpbnRlcm5hbCBtb2RlbC5cblx0ICogQHJldHVybnMgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIG9uY2UgdGhlIHVzZXJzIGFyZSByZWFkLlxuXHQgKi9cblx0cmVhZEludml0ZWRVc2VycyA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblxuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBjdXJyZW50VXNlckxpc3QgPSBhd2FpdCB0aGlzLnJlcXVlc3RJbnZpdGVkVXNlcnNJbkRyYWZ0KCk7XG5cdFx0XHRjb25zdCBpbnZpdGVkVXNlcnM6IFVzZXJbXSA9IFtdO1xuXHRcdFx0Y29uc3QgYWN0aXZlVXNlcnMgPSB0aGlzLmdldE1vZGVsKFwiaW50ZXJuYWxcIik/LmdldFByb3BlcnR5KFwiL2NvbGxhYm9yYXRpb24vYWN0aXZlVXNlcnNcIikgfHwgW107XG5cdFx0XHRjb25zdCBtZSA9IENvbGxhYm9yYXRpb25VdGlscy5nZXRNZSh0aGlzLmdldEFwcENvbXBvbmVudCgpISk7XG5cdFx0XHRsZXQgdXNlclN0YXR1czogVXNlclN0YXR1cztcblx0XHRcdGlmIChjdXJyZW50VXNlckxpc3QubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRjdXJyZW50VXNlckxpc3QuZm9yRWFjaCgodXNlckNvbnRleHQpID0+IHtcblx0XHRcdFx0XHRjb25zdCB1c2VyRGF0YSA9IHVzZXJDb250ZXh0LmdldE9iamVjdCgpIGFzIEJhY2tlbmRVc2VyO1xuXHRcdFx0XHRcdGNvbnN0IGlzTWU6IGJvb2xlYW4gPSBtZT8uaWQgPT09IHVzZXJEYXRhLlVzZXJJRDtcblx0XHRcdFx0XHRjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZVVzZXJzLmZpbmQoKHU6IFVzZXIpID0+IHUuaWQgPT09IHVzZXJEYXRhLlVzZXJJRCk7XG5cdFx0XHRcdFx0bGV0IHVzZXJEZXNjcmlwdGlvbiA9IHVzZXJEYXRhLlVzZXJEZXNjcmlwdGlvbiB8fCB1c2VyRGF0YS5Vc2VySUQ7XG5cdFx0XHRcdFx0Y29uc3QgaW5pdGlhbHMgPSBDb2xsYWJvcmF0aW9uVXRpbHMuZm9ybWF0SW5pdGlhbHModXNlckRlc2NyaXB0aW9uKTtcblx0XHRcdFx0XHR1c2VyRGVzY3JpcHRpb24gPSBpc01lID8gYCR7Q29sbGFib3JhdGlvblV0aWxzLmdldFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9NRVwiLCB1c2VyRGVzY3JpcHRpb24pfWAgOiB1c2VyRGVzY3JpcHRpb247XG5cdFx0XHRcdFx0aWYgKGlzQWN0aXZlKSB7XG5cdFx0XHRcdFx0XHR1c2VyU3RhdHVzID0gVXNlclN0YXR1cy5DdXJyZW50bHlFZGl0aW5nO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodXNlckRhdGEuVXNlckVkaXRpbmdTdGF0ZSA9PT0gVXNlckVkaXRpbmdTdGF0ZS5JblByb2dyZXNzKSB7XG5cdFx0XHRcdFx0XHR1c2VyU3RhdHVzID0gVXNlclN0YXR1cy5DaGFuZ2VzTWFkZTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dXNlclN0YXR1cyA9IFVzZXJTdGF0dXMuTm9DaGFuZ2VzTWFkZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRjb25zdCB1c2VyOiBVc2VyID0ge1xuXHRcdFx0XHRcdFx0aWQ6IHVzZXJEYXRhLlVzZXJJRCxcblx0XHRcdFx0XHRcdG5hbWU6IHVzZXJEZXNjcmlwdGlvbixcblx0XHRcdFx0XHRcdHN0YXR1czogdXNlclN0YXR1cyxcblx0XHRcdFx0XHRcdGNvbG9yOiBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0VXNlckNvbG9yKHVzZXJEYXRhLlVzZXJJRCwgYWN0aXZlVXNlcnMsIGludml0ZWRVc2VycyksXG5cdFx0XHRcdFx0XHRpbml0aWFsczogaW5pdGlhbHMsXG5cdFx0XHRcdFx0XHRtZTogaXNNZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0aW52aXRlZFVzZXJzLnB1c2godXNlcik7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly9ub3QgeWV0IHNoYXJlZCwganVzdCBhZGQgbWVcblx0XHRcdFx0aW52aXRlZFVzZXJzLnB1c2gobWUpO1xuXHRcdFx0fVxuXHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJjb2xsYWJvcmF0aW9uL1VzZXJJRFwiLCBcIlwiKTtcblx0XHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiY29sbGFib3JhdGlvbi9Vc2VyRGVzY3JpcHRpb25cIiwgXCJcIik7XG5cdFx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImNvbGxhYm9yYXRpb24vaW52aXRlZFVzZXJzXCIsIGludml0ZWRVc2Vycyk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TWVzc2FnZVRvYXN0LnNob3codGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX1JFQURJTkdfVVNFUl9GQUlMRURcIikpO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogR2V0IHRoZSBuYW1lIG9mIHRoZSBvYmplY3QgdG8gYmUgc2hhcmVkLlxuXHQgKiBAcGFyYW0gYmluZGluZ0NvbnRleHQgVGhlIGNvbnRleHQgb2YgdGhlIHBhZ2UuXG5cdCAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSBvYmplY3QgdG8gYmUgc2hhcmVkLlxuXHQgKi9cblx0Z2V0U2hhcmVkSXRlbU5hbWUoYmluZGluZ0NvbnRleHQ6IENvbnRleHQpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGhlYWRlckluZm8gPSB0aGlzLmNvbnRleHRPYmplY3Q/LnRhcmdldEVudGl0eVR5cGUuYW5ub3RhdGlvbnMuVUk/LkhlYWRlckluZm87XG5cdFx0bGV0IHNoYXJlZEl0ZW1OYW1lID0gXCJcIjtcblx0XHRjb25zdCB0aXRsZSA9IGhlYWRlckluZm8/LlRpdGxlO1xuXHRcdGlmIChcblx0XHRcdHRpdGxlICYmXG5cdFx0XHRpc0Fubm90YXRpb25PZlR5cGU8RGF0YUZpZWxkVHlwZXM+KHRpdGxlLCBbXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZCxcblx0XHRcdFx0VUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEFjdGlvbixcblx0XHRcdFx0VUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEFjdGlvbkdyb3VwLFxuXHRcdFx0XHRVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGgsXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhJbnRlbnRCYXNlZE5hdmlnYXRpb24sXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhVcmwsXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aFxuXHRcdFx0XSlcblx0XHQpIHtcblx0XHRcdHNoYXJlZEl0ZW1OYW1lID0gaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24odGl0bGUuVmFsdWUpID8gYmluZGluZ0NvbnRleHQuZ2V0UHJvcGVydHkodGl0bGUuVmFsdWUucGF0aCkgOiB0aXRsZS5WYWx1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIHNoYXJlZEl0ZW1OYW1lIHx8IChoZWFkZXJJbmZvPy5UeXBlTmFtZSBhcyB1bmtub3duIGFzIHN0cmluZykgfHwgXCJcIjtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgdGhlIGRlbGVnYXRlIHBheWxvYWQgZm9yIHRoZSB1c2VyIGZpZWxkIHZhbHVlIGhlbHAuXG5cdCAqIEByZXR1cm5zIFRoZSB2YWx1ZSBoZWxwIGRlbGVnYXRlIHBheWxvYWRcblx0ICovXG5cdGdldFZhbHVlSGVscERlbGVnYXRlKCk6IHsgbmFtZTogc3RyaW5nOyBwYXlsb2FkOiBWYWx1ZUhlbHBQYXlsb2FkIH0ge1xuXHRcdC8vIFRoZSBub24gbnVsbCBhc3NlcnRpb24gaXMgc2FmZSBoZXJlLCBiZWNhdXNlIHRoZSBhY3Rpb24gaXMgb25seSBhdmFpbGFibGUgaWYgdGhlIGFubm90YXRpb24gaXMgcHJlc2VudFxuXHRcdGNvbnN0IGFjdGlvbk5hbWUgPSAoXG5cdFx0XHR0aGlzLmNvbnRleHRPYmplY3Q/LnRhcmdldEVudGl0eVNldCEuYW5ub3RhdGlvbnMuQ29tbW9uIGFzIEVudGl0eVNldEFubm90YXRpb25zX0NvbW1vblxuXHRcdCkuRHJhZnRSb290IS5TaGFyZUFjdGlvbiEudG9TdHJpbmcoKTtcblx0XHQvLyBXZSBhcmUgYWxzbyBzdXJlIHRoYXQgdGhlIGFjdGlvbiBleGlzdFxuXHRcdGNvbnN0IGFjdGlvbiA9IHRoaXMuY29udGV4dE9iamVjdD8udGFyZ2V0RW50aXR5VHlwZS5yZXNvbHZlUGF0aChhY3Rpb25OYW1lKSBhcyBWb2NhYnVsYXJ5QWN0aW9uO1xuXHRcdC8vIEJ5IGRlZmluaXRpb24gdGhlIGFjdGlvbiBoYXMgYSBwYXJhbWV0ZXIgd2l0aCB0aGUgbmFtZSBcIlVzZXJzXCJcblx0XHRjb25zdCB1c2VyUGFyYW1ldGVycyA9IGFjdGlvbi5wYXJhbWV0ZXJzLmZpbmQoKHBhcmFtKSA9PiBwYXJhbS5uYW1lID09PSBVU0VSU19QQVJBTUVURVJTKSE7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0bmFtZTogXCJzYXAvZmUvbWFjcm9zL3ZhbHVlaGVscC9WYWx1ZUhlbHBEZWxlZ2F0ZVwiLFxuXHRcdFx0cGF5bG9hZDoge1xuXHRcdFx0XHRwcm9wZXJ0eVBhdGg6IGAvJHt1c2VyUGFyYW1ldGVycy50eXBlfS8ke1VTRVJfSURfUEFSQU1FVEVSfWAsXG5cdFx0XHRcdHF1YWxpZmllcnM6IHt9LFxuXHRcdFx0XHR2YWx1ZUhlbHBRdWFsaWZpZXI6IFwiXCIsXG5cdFx0XHRcdGlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nOiB0cnVlXG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZSB0aGUgZXhwcmVzc2lvbiBiaW5kaW5nIG9mIHRoZSBJbnZpdGF0aW9uIGRpYWxvZy5cblx0ICogQHJldHVybnMgVGhlIGRpYWxvZyB0aXRsZSBiaW5kaW5nIGV4cHJlc3Npb25cblx0ICovXG5cdGdldEludml0YXRpb25EaWFsb2dUaXRsZUV4cEJpbmRpbmcoKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRcdGNvbnN0IGhlYWRlckluZm8gPSB0aGlzLmNvbnRleHRPYmplY3Q/LnRhcmdldEVudGl0eVR5cGUuYW5ub3RhdGlvbnMuVUk/LkhlYWRlckluZm87XG5cdFx0Y29uc3QgdGl0bGUgPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oKGhlYWRlckluZm8/LlRpdGxlIGFzIERhdGFGaWVsZCB8IHVuZGVmaW5lZCk/LlZhbHVlLCBbXSwgXCJcIik7XG5cdFx0Y29uc3QgcGFyYW1zID0gW1wiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9ESUFMT0dcIiwgaGVhZGVySW5mbz8uVHlwZU5hbWUudG9TdHJpbmcoKSwgdGl0bGVdO1xuXHRcdGNvbnN0IHRpdGxlRXhwcmVzc2lvbiA9IGZvcm1hdFJlc3VsdChwYXJhbXMsIGNvbGxhYm9yYXRpb25Gb3JtYXR0ZXIuZ2V0Rm9ybWF0dGVkVGV4dCk7XG5cdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKHRpdGxlRXhwcmVzc2lvbik7XG5cdH1cblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byBjbG9zZSB0aGUgbWFuYWdlIGRpYWxvZy5cblx0ICpcblx0ICovXG5cdGNsb3NlTWFuYWdlRGlhbG9nID0gKCk6IHZvaWQgPT4ge1xuXHRcdHRoaXMubWFuYWdlRGlhbG9nPy5jbG9zZSgpO1xuXHRcdHRoaXMubWFuYWdlRGlhbG9nPy5kZXN0cm95KCk7XG5cdFx0ZGVsZXRlIHRoaXMubWFuYWdlRGlhbG9nO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBpbnZpdGUgYnV0dG9uIGlmIHRoZXJlJ3MgYSBzaGFyZSBhY3Rpb24gb24gcm9vdCBsZXZlbC5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0SW52aXRlQnV0dG9uKCk6IEhCb3gge1xuXHRcdGlmICgodGhpcy5jb250ZXh0T2JqZWN0Py50YXJnZXRFbnRpdHlTZXQ/LmFubm90YXRpb25zLkNvbW1vbiBhcyBFbnRpdHlTZXRBbm5vdGF0aW9uc19Db21tb24pPy5EcmFmdFJvb3Q/LlNoYXJlQWN0aW9uKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8SEJveCB2aXNpYmxlPVwie3VpPi9pc0VkaXRhYmxlfVwiIGFsaWduSXRlbXM9XCJDZW50ZXJcIiBqdXN0aWZ5Q29udGVudD1cIlN0YXJ0XCI+XG5cdFx0XHRcdFx0PEF2YXRhciBiYWNrZ3JvdW5kQ29sb3I9XCJUaWxlSWNvblwiIHNyYz1cInNhcC1pY29uOi8vYWRkLWVtcGxveWVlXCIgZGlzcGxheVNpemU9XCJYU1wiIHByZXNzPXt0aGlzLm1hbmFnZUNvbGxhYm9yYXRpb259IC8+XG5cdFx0XHRcdDwvSEJveD5cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiA8SEJveCAvPjtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY29udGVudCBvZiB0aGUgY29sbGFib3JhdGlvbiBkcmFmdCBidWlsZGluZyBibG9jay5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Y3JlYXRlQ29udGVudCgpOiBDb250cm9sIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAodGhpcy5fZ2V0T3duZXIoKT8uZ2V0TWV0YU1vZGVsKCkgJiYgTW9kZWxIZWxwZXIuaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQodGhpcy5fZ2V0T3duZXIoKSEuZ2V0TWV0YU1vZGVsKCkpKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8SEJveD5cblx0XHRcdFx0XHQ8SEJveFxuXHRcdFx0XHRcdFx0aXRlbXM9e3sgcGF0aDogXCJpbnRlcm5hbD4vY29sbGFib3JhdGlvbi9hY3RpdmVVc2Vyc1wiIH19XG5cdFx0XHRcdFx0XHRjbGFzcz1cInNhcFVpVGlueU1hcmdpbkJlZ2luXCJcblx0XHRcdFx0XHRcdHZpc2libGU9XCJ7PSAke3VpPi9pc0VkaXRhYmxlfSAmYW1wOyZhbXA7ICR7aW50ZXJuYWw+L2NvbGxhYm9yYXRpb24vY29ubmVjdGVkfSB9XCJcblx0XHRcdFx0XHRcdGFsaWduSXRlbXM9XCJDZW50ZXJcIlxuXHRcdFx0XHRcdFx0anVzdGlmeUNvbnRlbnQ9XCJTdGFydFwiXG5cdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0PEF2YXRhclxuXHRcdFx0XHRcdFx0XHRpbml0aWFscz1cIntpbnRlcm5hbD5pbml0aWFsc31cIlxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5U2l6ZT1cIlhTXCJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yPVwie2ludGVybmFsPmNvbG9yfVwiXG5cdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLnNob3dDb2xsYWJvcmF0aW9uVXNlckRldGFpbHN9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvSEJveD5cblx0XHRcdFx0XHR7dGhpcy5nZXRJbnZpdGVCdXR0b24oKX1cblx0XHRcdFx0PC9IQm94PlxuXHRcdFx0KTtcblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
639
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVU0VSU19QQVJBTUVURVJTIiwiVVNFUl9JRF9QQVJBTUVURVIiLCJDb2xsYWJvcmF0aW9uRHJhZnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsInJlcXVpcmVkIiwiX2RlYzMiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJwcm9wcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJzaG93Q29sbGFib3JhdGlvblVzZXJEZXRhaWxzIiwiZXZlbnQiLCJzb3VyY2UiLCJnZXRTb3VyY2UiLCJ1c2VyRGV0YWlsc1BvcG92ZXIiLCJnZXRVc2VyRGV0YWlsc1BvcG92ZXIiLCJzZXRCaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwib3BlbkJ5IiwibWFuYWdlQ29sbGFib3JhdGlvbiIsIm1hbmFnZURpYWxvZyIsImdldE1hbmFnZURpYWxvZyIsInJlYWRJbnZpdGVkVXNlcnMiLCJvcGVuIiwiZm9ybWF0VXNlclN0YXR1cyIsInVzZXJTdGF0dXMiLCJVc2VyU3RhdHVzIiwiQ3VycmVudGx5RWRpdGluZyIsImdldFRyYW5zbGF0ZWRUZXh0IiwiQ2hhbmdlc01hZGUiLCJOb0NoYW5nZXNNYWRlIiwiTm90WWV0SW52aXRlZCIsImFkZFVzZXJGaWVsZENoYW5nZWQiLCJ1c2VySW5wdXQiLCJnZXRQYXJhbWV0ZXIiLCJ0aGVuIiwibmV3VXNlcklkIiwiaW50ZXJuYWxNb2RlbENvbnRleHQiLCJpbnZpdGVkVXNlcnMiLCJnZXRQcm9wZXJ0eSIsIm5ld1VzZXIiLCJpZCIsIm5hbWUiLCJmaW5kSW5kZXgiLCJ1c2VyIiwic2V0VmFsdWVTdGF0ZSIsInNldFZhbHVlU3RhdGVUZXh0IiwiYWRkVXNlciIsImJpbmQiLCJjYXRjaCIsImludml0ZVVzZXIiLCJ1c2VycyIsIm5ld2x5SW52aXRlZFVzZXJzIiwiYmluZGluZ0NvbnRleHQiLCJjb250ZXh0cyIsIm1hbmFnZURpYWxvZ1VzZXJUYWJsZSIsImdldEJpbmRpbmciLCJnZXRDb250ZXh0cyIsImZvckVhY2giLCJjb250ZXh0IiwicHVzaCIsIlVzZXJJRCIsIlVzZXJBY2Nlc3NSb2xlIiwicmVzdWx0cyIsIlByb21pc2UiLCJhbGwiLCJzaGFyZU9iamVjdCIsInJlcXVlc3RJbnZpdGVkVXNlcnNJbkRyYWZ0IiwibmV3VXNlcnMiLCJpbnZpdGVkVXNlciIsImluY2x1ZGVzIiwibWVzc2FnZUhhbmRsZXIiLCJnZXRQYWdlQ29udHJvbGxlciIsInNob3dNZXNzYWdlRGlhbG9nIiwibGVuZ3RoIiwiTWVzc2FnZVRvYXN0Iiwic2hvdyIsImdldFNoYXJlZEl0ZW1OYW1lIiwidG9TdHJpbmciLCJjbG9zZU1hbmFnZURpYWxvZyIsImN1cnJlbnRVc2VyTGlzdCIsImFjdGl2ZVVzZXJzIiwiZ2V0TW9kZWwiLCJtZSIsIkNvbGxhYm9yYXRpb25VdGlscyIsImdldE1lIiwiZ2V0QXBwQ29tcG9uZW50IiwidXNlckNvbnRleHQiLCJ1c2VyRGF0YSIsImdldE9iamVjdCIsImlzTWUiLCJpc0FjdGl2ZSIsImZpbmQiLCJ1IiwidXNlckRlc2NyaXB0aW9uIiwiVXNlckRlc2NyaXB0aW9uIiwiaW5pdGlhbHMiLCJmb3JtYXRJbml0aWFscyIsImdldFRleHQiLCJVc2VyRWRpdGluZ1N0YXRlIiwiSW5Qcm9ncmVzcyIsInN0YXR1cyIsImNvbG9yIiwiZ2V0VXNlckNvbG9yIiwic2V0UHJvcGVydHkiLCJlIiwiY2xvc2UiLCJkZXN0cm95IiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJfb3duZXJDb21wb25lbnQiLCJfY29udHJvbExvYWRlZCIsIlByb21pc2VLZWVwZXIiLCJHcmlkVGFibGVDb250cm9sIiwidW5kZWZpbmVkIiwiTGliIiwibG9hZCIsImRlZmF1bHQiLCJfX3VpNV9yZXF1aXJlX2FzeW5jIiwiR3JpZFRhYmxlQ29sdW1uQ29udHJvbCIsImNvbnRleHRPYmplY3QiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwiY29udGV4dFBhdGgiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsInJlc29sdmUiLCJfanN4IiwiUmVzcG9uc2l2ZVBvcG92ZXIiLCJzaG93SGVhZGVyIiwiY2xhc3MiLCJwbGFjZW1lbnQiLCJjaGlsZHJlbiIsIl9qc3hzIiwiSEJveCIsIkF2YXRhciIsImRpc3BsYXlTaXplIiwiYmFja2dyb3VuZENvbG9yIiwiVkJveCIsIkxhYmVsIiwidGV4dCIsImFkZERlcGVuZGVudCIsIkRpYWxvZyIsInRpdGxlIiwiZ2V0SW52aXRhdGlvbkRpYWxvZ1RpdGxlRXhwQmluZGluZyIsImhvcml6b250YWxTY3JvbGxpbmciLCJ2ZXJ0aWNhbFNjcm9sbGluZyIsImNvbnRlbnRXaWR0aCIsInN0cmV0Y2giLCJDb21tb25IZWxwZXIiLCJpc0Rlc2t0b3AiLCJiZWdpbkJ1dHRvbiIsIkJ1dHRvbiIsInByZXNzIiwiZW5hYmxlZCIsInBhcnRzIiwicGF0aCIsImZvcm1hdHRlciIsImZvcm1hdEludml0ZUJ1dHRvbiIsImVuZEJ1dHRvbiIsIndpZHRoIiwiTWVzc2FnZVN0cmlwIiwic2hvd0ljb24iLCJzaG93Q2xvc2VCdXR0b24iLCJnZXRNYW5hZ2VEaWFsb2dBZGRVc2VyU2VjdGlvbiIsImdldE1hbmFnZURpYWxvZ1VzZXJUYWJsZSIsImJpbmRFbGVtZW50IiwibW9kZWwiLCJnZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGVDb2x1bW5zIiwiX0ZyYWdtZW50IiwidGVtcGxhdGUiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJsYWJlbCIsIlRleHQiLCJPYmplY3RTdGF0dXMiLCJzdGF0ZSIsImZvcm1hdFVzZXJTdGF0dXNDb2xvciIsImljb24iLCJyZW1vdmVVc2VyIiwidmlzaWJsZSIsInJvd3MiLCJ2aXNpYmxlUm93Q291bnQiLCJ2aXNpYmxlUm93Q291bnRNb2RlIiwic2VsZWN0aW9uTW9kZSIsImNvbHVtbnMiLCJGaWVsZCIsInZhbHVlIiwiYWRkaXRpb25hbFZhbHVlIiwiZGlzcGxheSIsInZhbHVlSGVscCIsInBsYWNlaG9sZGVyIiwiY2hhbmdlIiwiZGVwZW5kZW50cyIsIlZhbHVlSGVscCIsImRlbGVnYXRlIiwiZ2V0VmFsdWVIZWxwRGVsZWdhdGUiLCJ2YWxpZGF0ZUlucHV0IiwidHlwZWFoZWFkIiwiTURDUG9wb3ZlciIsIk1UYWJsZSIsImNhc2VTZW5zaXRpdmUiLCJ1c2VBc1ZhbHVlSGVscCIsImRpYWxvZyIsIk1EQ0RpYWxvZyIsIlZhbHVlU3RhdGUiLCJTdWNjZXNzIiwiV2FybmluZyIsIkluZm9ybWF0aW9uIiwibmJVc2VycyIsInNvbWUiLCJ0cmFuc2llbnQiLCJpdGVtIiwiZGVsZXRlVXNlcklEIiwiZmlsdGVyIiwicGFyYW1ldGVycyIsIiRzZWxlY3QiLCIkJGdyb3VwSWQiLCJpbnZpdGVkVXNlckxpc3QiLCJiaW5kTGlzdCIsImdldFBhdGgiLCJyZXF1ZXN0Q29udGV4dHMiLCJoZWFkZXJJbmZvIiwidGFyZ2V0RW50aXR5VHlwZSIsImFubm90YXRpb25zIiwiVUkiLCJIZWFkZXJJbmZvIiwic2hhcmVkSXRlbU5hbWUiLCJUaXRsZSIsImlzQW5ub3RhdGlvbk9mVHlwZSIsImlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIiwiVmFsdWUiLCJUeXBlTmFtZSIsImFjdGlvbk5hbWUiLCJ0YXJnZXRFbnRpdHlTZXQiLCJDb21tb24iLCJEcmFmdFJvb3QiLCJTaGFyZUFjdGlvbiIsImFjdGlvbiIsInJlc29sdmVQYXRoIiwidXNlclBhcmFtZXRlcnMiLCJwYXJhbSIsInBheWxvYWQiLCJwcm9wZXJ0eVBhdGgiLCJxdWFsaWZpZXJzIiwidmFsdWVIZWxwUXVhbGlmaWVyIiwiaXNBY3Rpb25QYXJhbWV0ZXJEaWFsb2ciLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJwYXJhbXMiLCJ0aXRsZUV4cHJlc3Npb24iLCJmb3JtYXRSZXN1bHQiLCJjb2xsYWJvcmF0aW9uRm9ybWF0dGVyIiwiZ2V0Rm9ybWF0dGVkVGV4dCIsImNvbXBpbGVFeHByZXNzaW9uIiwiZ2V0SW52aXRlQnV0dG9uIiwic3JjIiwiX2dldE93bmVyIiwiZ2V0TWV0YU1vZGVsIiwiTW9kZWxIZWxwZXIiLCJpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCIsIml0ZW1zIiwiQnVpbGRpbmdCbG9jayIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQ29sbGFib3JhdGlvbkRyYWZ0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudGl0eVNldCwgQWN0aW9uIGFzIFZvY2FidWxhcnlBY3Rpb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvRWRtXCI7XG5pbXBvcnQgdHlwZSB7IEVudGl0eVNldEFubm90YXRpb25zX0NvbW1vbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbW9uX0VkbVwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhRmllbGQsIERhdGFGaWVsZFR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgZm9ybWF0UmVzdWx0LCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHR5cGUgeyBCYWNrZW5kVXNlciwgVXNlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCB7XG5cdENvbGxhYm9yYXRpb25VdGlscyxcblx0VXNlckVkaXRpbmdTdGF0ZSxcblx0VXNlclN0YXR1cyxcblx0c2hhcmVPYmplY3Rcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IGNvbGxhYm9yYXRpb25Gb3JtYXR0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvQ29sbGFib3JhdGlvbkZvcm1hdHRlclwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBQcm9taXNlS2VlcGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Byb21pc2VLZWVwZXJcIjtcbmltcG9ydCB7IGlzQW5ub3RhdGlvbk9mVHlwZSwgaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgQ29tbW9uSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZUhlbHBQYXlsb2FkIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvdmFsdWVoZWxwL1ZhbHVlTGlzdEhlbHBlclwiO1xuaW1wb3J0IEF2YXRhciBmcm9tIFwic2FwL20vQXZhdGFyXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBEaWFsb2cgZnJvbSBcInNhcC9tL0RpYWxvZ1wiO1xuaW1wb3J0IEhCb3ggZnJvbSBcInNhcC9tL0hCb3hcIjtcbmltcG9ydCBMYWJlbCBmcm9tIFwic2FwL20vTGFiZWxcIjtcbmltcG9ydCBNZXNzYWdlU3RyaXAgZnJvbSBcInNhcC9tL01lc3NhZ2VTdHJpcFwiO1xuaW1wb3J0IE1lc3NhZ2VUb2FzdCBmcm9tIFwic2FwL20vTWVzc2FnZVRvYXN0XCI7XG5pbXBvcnQgT2JqZWN0U3RhdHVzIGZyb20gXCJzYXAvbS9PYmplY3RTdGF0dXNcIjtcbmltcG9ydCBSZXNwb25zaXZlUG9wb3ZlciBmcm9tIFwic2FwL20vUmVzcG9uc2l2ZVBvcG92ZXJcIjtcbmltcG9ydCB0eXBlIFRhYmxlIGZyb20gXCJzYXAvbS9UYWJsZVwiO1xuaW1wb3J0IFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCBWQm94IGZyb20gXCJzYXAvbS9WQm94XCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHsgVmFsdWVTdGF0ZSB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkJENoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC91aS9tZGMvRmllbGRcIjtcbmltcG9ydCBGaWVsZCBmcm9tIFwic2FwL3VpL21kYy9GaWVsZFwiO1xuaW1wb3J0IFZhbHVlSGVscCBmcm9tIFwic2FwL3VpL21kYy9WYWx1ZUhlbHBcIjtcbmltcG9ydCBNRENEaWFsb2cgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL0RpYWxvZ1wiO1xuaW1wb3J0IE1EQ1BvcG92ZXIgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL1BvcG92ZXJcIjtcbmltcG9ydCBNVGFibGUgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL2NvbnRlbnQvTVRhYmxlXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBJbnRlZ2VyIGZyb20gXCJzYXAvdWkvbW9kZWwvdHlwZS9JbnRlZ2VyXCI7XG5pbXBvcnQgdHlwZSBHcmlkVGFibGVDb2x1bW4gZnJvbSBcInNhcC91aS90YWJsZS9Db2x1bW5cIjtcbmltcG9ydCB0eXBlIEdyaWRUYWJsZSBmcm9tIFwic2FwL3VpL3RhYmxlL1RhYmxlXCI7XG5cbmNvbnN0IFVTRVJTX1BBUkFNRVRFUlMgPSBcIlVzZXJzXCI7XG5jb25zdCBVU0VSX0lEX1BBUkFNRVRFUiA9IFwiVXNlcklEXCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5jb21wb25lbnRzLkNvbGxhYm9yYXRpb25EcmFmdFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sbGFib3JhdGlvbkRyYWZ0IGV4dGVuZHMgQnVpbGRpbmdCbG9jayB7XG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIHJlcXVpcmVkOiB0cnVlIH0pXG5cdHB1YmxpYyBjb250ZXh0UGF0aCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHB1YmxpYyBpZD86IHN0cmluZztcblxuXHRwcml2YXRlIGNvbnRleHRPYmplY3Q/OiBEYXRhTW9kZWxPYmplY3RQYXRoPEVudGl0eVNldD47XG5cblx0cHJpdmF0ZSB1c2VyRGV0YWlsc1BvcG92ZXI/OiBSZXNwb25zaXZlUG9wb3ZlcjtcblxuXHRwcml2YXRlIG1hbmFnZURpYWxvZz86IERpYWxvZztcblxuXHRwcml2YXRlIG1hbmFnZURpYWxvZ1VzZXJUYWJsZT86IFRhYmxlO1xuXG5cdHByaXZhdGUgc3RhdGljIEdyaWRUYWJsZUNvbnRyb2w6IHR5cGVvZiBHcmlkVGFibGU7XG5cblx0cHJpdmF0ZSBzdGF0aWMgR3JpZFRhYmxlQ29sdW1uQ29udHJvbDogdHlwZW9mIEdyaWRUYWJsZUNvbHVtbjtcblxuXHRwcml2YXRlIF9jb250cm9sTG9hZGVkPzogUHJvbWlzZUtlZXBlcjx2b2lkPjtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wczogUHJvcGVydGllc09mPENvbGxhYm9yYXRpb25EcmFmdD4sIG90aGVycz86IFByb3BlcnRpZXNPZjxDb2xsYWJvcmF0aW9uRHJhZnQ+KSB7XG5cdFx0c3VwZXIocHJvcHMsIG90aGVycyk7XG5cdH1cblxuXHRhc3luYyBvbk1ldGFkYXRhQXZhaWxhYmxlKF9vd25lckNvbXBvbmVudDogVGVtcGxhdGVDb21wb25lbnQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0aGlzLl9jb250cm9sTG9hZGVkID0gbmV3IFByb21pc2VLZWVwZXIoKTtcblx0XHRpZiAoQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbnRyb2wgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0YXdhaXQgTGliLmxvYWQoeyBuYW1lOiBcInNhcC51aS50YWJsZVwiIH0pO1xuXHRcdFx0Y29uc3QgeyBkZWZhdWx0OiBHcmlkVGFibGVDb250cm9sIH0gPSBhd2FpdCBpbXBvcnQoXCJzYXAvdWkvdGFibGUvVGFibGVcIik7XG5cdFx0XHRDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29udHJvbCA9IEdyaWRUYWJsZUNvbnRyb2w7XG5cdFx0XHRjb25zdCB7IGRlZmF1bHQ6IEdyaWRUYWJsZUNvbHVtbkNvbnRyb2wgfSA9IGF3YWl0IGltcG9ydChcInNhcC91aS90YWJsZS9Db2x1bW5cIik7XG5cdFx0XHRDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCA9IEdyaWRUYWJsZUNvbHVtbkNvbnRyb2w7XG5cdFx0fVxuXHRcdHRoaXMuY29udGV4dE9iamVjdCA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCh0aGlzLmNvbnRleHRQYXRoKTtcblx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHR0aGlzLl9jb250cm9sTG9hZGVkLnJlc29sdmUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBhbmQgc2hvdyB0aGUgdXNlciBkZXRhaWxzIHBvcG92ZXIuXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgb2JqZWN0XG5cdCAqL1xuXHRzaG93Q29sbGFib3JhdGlvblVzZXJEZXRhaWxzID0gKGV2ZW50OiBFdmVudDx7fSwgQ29udHJvbD4pOiB2b2lkID0+IHtcblx0XHRjb25zdCBzb3VyY2UgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRpZiAoIXRoaXMudXNlckRldGFpbHNQb3BvdmVyKSB7XG5cdFx0XHR0aGlzLnVzZXJEZXRhaWxzUG9wb3ZlciA9IHRoaXMuZ2V0VXNlckRldGFpbHNQb3BvdmVyKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy51c2VyRGV0YWlsc1BvcG92ZXI/LnNldEJpbmRpbmdDb250ZXh0KHNvdXJjZS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0LCBcImludGVybmFsXCIpO1xuXHRcdHRoaXMudXNlckRldGFpbHNQb3BvdmVyPy5vcGVuQnkoc291cmNlKTtcblx0fTtcblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgdXNlciBkZXRhaWxzIHBvcG92ZXIuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIHRyZWVcblx0ICovXG5cdGdldFVzZXJEZXRhaWxzUG9wb3ZlcigpOiBSZXNwb25zaXZlUG9wb3ZlciB7XG5cdFx0Y29uc3QgdXNlckRldGFpbHNQb3BvdmVyID0gKFxuXHRcdFx0PFJlc3BvbnNpdmVQb3BvdmVyIHNob3dIZWFkZXI9e2ZhbHNlfSBjbGFzcz1cInNhcFVpQ29udGVudFBhZGRpbmdcIiBwbGFjZW1lbnQ9XCJCb3R0b21cIj5cblx0XHRcdFx0PEhCb3g+XG5cdFx0XHRcdFx0PEF2YXRhciBpbml0aWFscz1cIntpbnRlcm5hbD5pbml0aWFsc31cIiBkaXNwbGF5U2l6ZT1cIlNcIiBiYWNrZ3JvdW5kQ29sb3I9XCJ7aW50ZXJuYWw+Y29sb3J9XCIgLz5cblx0XHRcdFx0XHQ8VkJveD5cblx0XHRcdFx0XHRcdDxMYWJlbCBjbGFzcz1cInNhcFVpTWVkaXVtTWFyZ2luQmVnaW5cIiB0ZXh0PVwie2ludGVybmFsPm5hbWV9XCIgLz5cblx0XHRcdFx0XHRcdDxMYWJlbCBjbGFzcz1cInNhcFVpTWVkaXVtTWFyZ2luQmVnaW5cIiB0ZXh0PVwie2ludGVybmFsPmlkfVwiIC8+XG5cdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHQ8L0hCb3g+XG5cdFx0XHQ8L1Jlc3BvbnNpdmVQb3BvdmVyPlxuXHRcdCk7XG5cblx0XHR0aGlzLmFkZERlcGVuZGVudCh1c2VyRGV0YWlsc1BvcG92ZXIpO1xuXG5cdFx0cmV0dXJuIHVzZXJEZXRhaWxzUG9wb3Zlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBhbmQgb3BlbiB0aGUgbWFuYWdlIGRpYWxvZy5cblx0ICpcblx0ICovXG5cdG1hbmFnZUNvbGxhYm9yYXRpb24gPSAoKTogdm9pZCA9PiB7XG5cdFx0aWYgKCF0aGlzLm1hbmFnZURpYWxvZykge1xuXHRcdFx0dGhpcy5tYW5hZ2VEaWFsb2cgPSB0aGlzLmdldE1hbmFnZURpYWxvZygpO1xuXHRcdH1cblxuXHRcdHRoaXMucmVhZEludml0ZWRVc2VycygpO1xuXHRcdHRoaXMubWFuYWdlRGlhbG9nPy5vcGVuKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIG1hbmFnZSBkaWFsb2cgdXNlZCB0byBpbnZpdGUgZnVydGhlciB1c2Vycy5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0TWFuYWdlRGlhbG9nKCk6IERpYWxvZyB7XG5cdFx0Y29uc3QgbWFuYWdlRGlhbG9nID0gKFxuXHRcdFx0PERpYWxvZ1xuXHRcdFx0XHR0aXRsZT17dGhpcy5nZXRJbnZpdGF0aW9uRGlhbG9nVGl0bGVFeHBCaW5kaW5nKCl9XG5cdFx0XHRcdGhvcml6b250YWxTY3JvbGxpbmc9XCJGYWxzZVwiXG5cdFx0XHRcdHZlcnRpY2FsU2Nyb2xsaW5nPVwiRmFsc2VcIlxuXHRcdFx0XHRjb250ZW50V2lkdGg9XCIzNWVtXCJcblx0XHRcdFx0c3RyZXRjaD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCJmYWxzZVwiIDogXCJ0cnVlXCJ9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0YmVnaW5CdXR0b246IChcblx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fRElBTE9HX0NPTkZJUk1BVElPTlwiKX1cblx0XHRcdFx0XHRcdFx0cHJlc3M9e3RoaXMuaW52aXRlVXNlcn1cblx0XHRcdFx0XHRcdFx0dHlwZT1cIkVtcGhhc2l6ZWRcIlxuXHRcdFx0XHRcdFx0XHRlbmFibGVkPXt7XG5cdFx0XHRcdFx0XHRcdFx0cGFydHM6IFt7IHBhdGg6IFwiaW50ZXJuYWw+aW52aXRlZFVzZXJzL2xlbmd0aFwiIH0sIHsgcGF0aDogXCJpbnRlcm5hbD5pbnZpdGVkVXNlcnNcIiB9XSxcblx0XHRcdFx0XHRcdFx0XHRmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0SW52aXRlQnV0dG9uXG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0ZW5kQnV0dG9uOiAoXG5cdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX0RJQUxPR19DQU5DRUxcIil9XG5cdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLmNsb3NlTWFuYWdlRGlhbG9nfVxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IChcblx0XHRcdFx0XHRcdDxWQm94IGNsYXNzPVwic2FwVWlTbWFsbE1hcmdpblwiPlxuXHRcdFx0XHRcdFx0XHQ8VkJveCB3aWR0aD1cIjEwMCVcIj5cblx0XHRcdFx0XHRcdFx0XHQ8TWVzc2FnZVN0cmlwXG5cdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9NRVNTQUdFU1RSSVBcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwiSW5mb3JtYXRpb25cIlxuXHRcdFx0XHRcdFx0XHRcdFx0c2hvd0ljb249e3RydWV9XG5cdFx0XHRcdFx0XHRcdFx0XHRzaG93Q2xvc2VCdXR0b249e2ZhbHNlfVxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBVaU1lZGl1bU1hcmdpbkJvdHRvbVwiXG5cdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHRcdFx0XHQ8TGFiZWwgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fSU5QVVRfTEFCRUxcIil9IHJlcXVpcmVkPXt0cnVlfSAvPlxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRNYW5hZ2VEaWFsb2dBZGRVc2VyU2VjdGlvbigpfVxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGUoKX1cblx0XHRcdFx0XHRcdDwvVkJveD5cblx0XHRcdFx0XHQpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L0RpYWxvZz5cblx0XHQpO1xuXG5cdFx0dGhpcy5hZGREZXBlbmRlbnQobWFuYWdlRGlhbG9nKTtcblx0XHRtYW5hZ2VEaWFsb2cuYmluZEVsZW1lbnQoe1xuXHRcdFx0bW9kZWw6IFwiaW50ZXJuYWxcIixcblx0XHRcdHBhdGg6IFwiY29sbGFib3JhdGlvblwiXG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gbWFuYWdlRGlhbG9nO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybmluZyB0aGUgdGFibGUgY29sdW1uIHdpdGggdGhlIGxpc3Qgb2YgaW52aXRlZCB1c2Vycy5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0TWFuYWdlRGlhbG9nVXNlclRhYmxlQ29sdW1ucygpOiBHcmlkVGFibGVDb2x1bW5bXSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDw+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCIxMCVcIiA6IFwiM2VtXCJ9PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHR0ZW1wbGF0ZTogKFxuXHRcdFx0XHRcdFx0XHQ8SEJveCBhbGlnbkl0ZW1zPVwiQ2VudGVyXCIganVzdGlmeUNvbnRlbnQ9XCJTcGFjZUJldHdlZW5cIj5cblx0XHRcdFx0XHRcdFx0XHQ8QXZhdGFyIGRpc3BsYXlTaXplPVwiWFNcIiBiYWNrZ3JvdW5kQ29sb3I9XCJ7aW50ZXJuYWw+Y29sb3J9XCIgaW5pdGlhbHM9XCJ7aW50ZXJuYWw+aW5pdGlhbHN9XCIgLz5cblx0XHRcdFx0XHRcdFx0PC9IQm94PlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCIzNSVcIiA6IFwiNmVtXCJ9PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRsYWJlbDogPFRleHQgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fVEFCTEVfVVNFUl9DT0xVTU5cIil9IC8+LFxuXHRcdFx0XHRcdFx0dGVtcGxhdGU6IDxUZXh0IHRleHQ9XCJ7aW50ZXJuYWw+bmFtZX1cIiAvPlxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCI0NiVcIiA6IFwiOWVtXCJ9PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRsYWJlbDogPFRleHQgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fVEFCTEVfVVNFUl9TVEFUVVNfQ09MVU1OXCIpfSAvPixcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiAoXG5cdFx0XHRcdFx0XHRcdDxPYmplY3RTdGF0dXNcblx0XHRcdFx0XHRcdFx0XHRzdGF0ZT17eyBwYXRoOiBcImludGVybmFsPnN0YXR1c1wiLCBmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0VXNlclN0YXR1c0NvbG9yIH19XG5cdFx0XHRcdFx0XHRcdFx0dGV4dD17eyBwYXRoOiBcImludGVybmFsPnN0YXR1c1wiLCBmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0VXNlclN0YXR1cyB9fVxuXHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCI4JVwiIDogXCIzZW1cIn0+XG5cdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiAoXG5cdFx0XHRcdFx0XHRcdDxIQm94PlxuXHRcdFx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0XHRcdGljb249XCJzYXAtaWNvbjovL2RlY2xpbmVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZT1cIlRyYW5zcGFyZW50XCJcblx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLnJlbW92ZVVzZXJ9XG5cdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPVwiez0gISEke2ludGVybmFsPnRyYW5zaWVudH0gfVwiXG5cdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PC9IQm94PlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHQ8Lz5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIHRhYmxlIHdpdGggdGhlIGxpc3Qgb2YgaW52aXRlZCB1c2Vycy5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0TWFuYWdlRGlhbG9nVXNlclRhYmxlKCk6IFRhYmxlIHwgdW5kZWZpbmVkIHtcblx0XHR0aGlzLm1hbmFnZURpYWxvZ1VzZXJUYWJsZSA9IChcblx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29udHJvbFxuXHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRyb3dzPXt7IHBhdGg6IFwiaW50ZXJuYWw+aW52aXRlZFVzZXJzXCIgfX1cblx0XHRcdFx0dmlzaWJsZVJvd0NvdW50PXtDb21tb25IZWxwZXIuaXNEZXNrdG9wKCkgPyBcIjVcIiA6IFwiM1wifVxuXHRcdFx0XHR2aXNpYmxlUm93Q291bnRNb2RlPVwiRml4ZWRcIlxuXHRcdFx0XHRzZWxlY3Rpb25Nb2RlPVwiTm9uZVwiXG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0Y29sdW1uczogdGhpcy5nZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGVDb2x1bW5zKClcblx0XHRcdFx0fX1cblx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbnRyb2w+XG5cdFx0KTtcblx0XHRyZXR1cm4gdGhpcy5tYW5hZ2VEaWFsb2dVc2VyVGFibGU7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgc2VjdGlvbiBvbiB0aGUgZGlhbG9nIHJlbGF0ZWQgdG8gdGhlIHVzZXIgZmllbGQuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIHRyZWVcblx0ICovXG5cdGdldE1hbmFnZURpYWxvZ0FkZFVzZXJTZWN0aW9uKCk6IEhCb3gge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8SEJveCBjbGFzcz1cInNhcFVpTWVkaXVtTWFyZ2luQm90dG9tXCIgd2lkdGg9XCIxMDAlXCI+XG5cdFx0XHRcdDxGaWVsZFxuXHRcdFx0XHRcdHZhbHVlPVwie2ludGVybmFsPlVzZXJJRH1cIlxuXHRcdFx0XHRcdGFkZGl0aW9uYWxWYWx1ZT1cIntpbnRlcm5hbD5Vc2VyRGVzY3JpcHRpb259XCJcblx0XHRcdFx0XHRkaXNwbGF5PVwiRGVzY3JpcHRpb25WYWx1ZVwiXG5cdFx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0XHRyZXF1aXJlZD17dHJ1ZX1cblx0XHRcdFx0XHR2YWx1ZUhlbHA9XCJ1c2VyVmFsdWVIZWxwXCJcblx0XHRcdFx0XHRwbGFjZWhvbGRlcj17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fSU5QVVRfUExBQ0VIT0xERVJcIil9XG5cdFx0XHRcdFx0Y2hhbmdlPXt0aGlzLmFkZFVzZXJGaWVsZENoYW5nZWR9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0ZGVwZW5kZW50czogKFxuXHRcdFx0XHRcdFx0XHQ8VmFsdWVIZWxwIGlkPVwidXNlclZhbHVlSGVscFwiIGRlbGVnYXRlPXt0aGlzLmdldFZhbHVlSGVscERlbGVnYXRlKCl9IHZhbGlkYXRlSW5wdXQ9e3RydWV9PlxuXHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlYWhlYWQ6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0PE1EQ1BvcG92ZXI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PE1UYWJsZSBjYXNlU2Vuc2l0aXZlPVwidHJ1ZVwiIHVzZUFzVmFsdWVIZWxwPVwiZmFsc2VcIiAvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L01EQ1BvcG92ZXI+XG5cdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZGlhbG9nOiA8TURDRGlhbG9nIC8+XG5cdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0PC9WYWx1ZUhlbHA+XG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9GaWVsZD5cblx0XHRcdDwvSEJveD5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZvcm1hdHRlciB0byBzZXQgdGhlIHVzZXIgc3RhdHVzIGRlcGVuZGluZyBvbiB0aGUgZWRpdGluZyBzdGF0dXMuXG5cdCAqIEBwYXJhbSB1c2VyU3RhdHVzIFRoZSBlZGl0aW5nIHN0YXR1cyBvZiB0aGUgdXNlclxuXHQgKiBAcmV0dXJucyBUaGUgdXNlciBzdGF0dXNcblx0ICovXG5cdGZvcm1hdFVzZXJTdGF0dXMgPSAodXNlclN0YXR1czogVXNlclN0YXR1cyk6IHN0cmluZyA9PiB7XG5cdFx0c3dpdGNoICh1c2VyU3RhdHVzKSB7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuQ3VycmVudGx5RWRpdGluZzpcblx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9VU0VSX0NVUlJFTlRMWV9FRElUSU5HXCIpO1xuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLkNoYW5nZXNNYWRlOlxuXHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX1VTRVJfQ0hBTkdFU19NQURFXCIpO1xuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLk5vQ2hhbmdlc01hZGU6XG5cdFx0XHRcdHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfVVNFUl9OT19DSEFOR0VTX01BREVcIik7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuTm90WWV0SW52aXRlZDpcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfVVNFUl9OT1RfWUVUX0lOVklURURcIik7XG5cdFx0fVxuXHR9O1xuXG5cdC8qKlxuXHQgKiBGb3JtYXR0ZXIgdG8gc2V0IHRoZSB1c2VyIGNvbG9yIGRlcGVuZGluZyBvbiB0aGUgZWRpdGluZyBzdGF0dXMuXG5cdCAqIEBwYXJhbSB1c2VyU3RhdHVzIFRoZSBlZGl0aW5nIHN0YXR1cyBvZiB0aGUgdXNlclxuXHQgKiBAcmV0dXJucyBUaGUgdXNlciBzdGF0dXMgY29sb3Jcblx0ICovXG5cdGZvcm1hdFVzZXJTdGF0dXNDb2xvcih1c2VyU3RhdHVzOiBVc2VyU3RhdHVzKTogVmFsdWVTdGF0ZSB7XG5cdFx0c3dpdGNoICh1c2VyU3RhdHVzKSB7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuQ3VycmVudGx5RWRpdGluZzpcblx0XHRcdFx0cmV0dXJuIFZhbHVlU3RhdGUuU3VjY2Vzcztcblx0XHRcdGNhc2UgVXNlclN0YXR1cy5DaGFuZ2VzTWFkZTpcblx0XHRcdFx0cmV0dXJuIFZhbHVlU3RhdGUuV2FybmluZztcblx0XHRcdGNhc2UgVXNlclN0YXR1cy5Ob0NoYW5nZXNNYWRlOlxuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLk5vdFlldEludml0ZWQ6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXR1cm4gVmFsdWVTdGF0ZS5JbmZvcm1hdGlvbjtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRm9ybWF0dGVyIHRvIGVuYWJsZSB0aGUgaW52aXRlIGJ1dHRvbiBkZXBlbmRpbmcgb24gdGhlIGludml0ZWQgdXNlcnMgc3RhdHVzLlxuXHQgKiBAcGFyYW0gbmJVc2VycyBOdW1iZXIgb2YgdXNlcnNcblx0ICogQHBhcmFtIGludml0ZWRVc2VycyBMaXN0IG9mIHRoZSBpbnZpdGVkIHVzZXJzXG5cdCAqIEByZXR1cm5zIFRydWUgb3IgRmFsc2Vcblx0ICovXG5cdGZvcm1hdEludml0ZUJ1dHRvbihuYlVzZXJzOiBJbnRlZ2VyIHwgdW5kZWZpbmVkLCBpbnZpdGVkVXNlcnM6IFVzZXJbXSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuXHRcdGlmICghbmJVc2Vycykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gISFpbnZpdGVkVXNlcnM/LnNvbWUoKHVzZXIpID0+IHVzZXIuc3RhdHVzID09PSAwKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgdGhlIGFkZGVkIHVzZXIgdG8gdGhlIGxpc3Qgb2YgaW52aXRlZCB1c2Vycy5cblx0ICogQHBhcmFtIHVzZXJJbnB1dCBUaGUgdXNlciB0byBiZSBpbnZpdGVkXG5cdCAqIEBwYXJhbSBpbnZpdGVkVXNlcnMgVGhlIHVzZXJzIGFscmVhZHkgaW52aXRlZFxuXHQgKiBAcGFyYW0gbmV3VXNlciBUaGUgdXNlciB0byBiZSBpbnZpdGVkXG5cdCAqL1xuXHRhZGRVc2VyKHVzZXJJbnB1dDogRmllbGQsIGludml0ZWRVc2VyczogVXNlcltdLCBuZXdVc2VyOiBVc2VyKTogdm9pZCB7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSB1c2VySW5wdXQuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRjb25zdCBhY3RpdmVVc2VycyA9ICh1c2VySW5wdXQuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWwpLmdldFByb3BlcnR5KFwiL2NvbGxhYm9yYXRpb24vYWN0aXZlVXNlcnNcIik7XG5cdFx0bmV3VXNlci5uYW1lID0gbmV3VXNlci5uYW1lIHx8IG5ld1VzZXIuaWQ7XG5cdFx0bmV3VXNlci5pbml0aWFscyA9IENvbGxhYm9yYXRpb25VdGlscy5mb3JtYXRJbml0aWFscyhuZXdVc2VyLm5hbWUpO1xuXHRcdG5ld1VzZXIuY29sb3IgPSBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0VXNlckNvbG9yKG5ld1VzZXIuaWQsIGFjdGl2ZVVzZXJzLCBpbnZpdGVkVXNlcnMpO1xuXHRcdG5ld1VzZXIudHJhbnNpZW50ID0gdHJ1ZTtcblx0XHRuZXdVc2VyLnN0YXR1cyA9IFVzZXJTdGF0dXMuTm90WWV0SW52aXRlZDtcblx0XHRpbnZpdGVkVXNlcnMucHVzaChuZXdVc2VyKTtcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImludml0ZWRVc2Vyc1wiLCBpbnZpdGVkVXNlcnMpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiVXNlcklEXCIsIFwiXCIpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiVXNlckRlc2NyaXB0aW9uXCIsIFwiXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIHZhbHVlIHN0YXRlIG9mIHRoZSB1c2VyIGZpZWxkIHdoZW5ldmVyIGNoYW5nZWQuXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgb2JqZWN0IG9mIHRoZSB1c2VyIGlucHV0XG5cdCAqIEByZXR1cm5zIFByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSB2YWx1ZSBzdGF0ZSB3YXMgc2V0LlxuXHQgKi9cblx0YWRkVXNlckZpZWxkQ2hhbmdlZCA9IGFzeW5jIChldmVudDogRmllbGQkQ2hhbmdlRXZlbnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRjb25zdCB1c2VySW5wdXQgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRyZXR1cm4gZXZlbnRcblx0XHRcdC5nZXRQYXJhbWV0ZXIoXCJwcm9taXNlXCIpXG5cdFx0XHQ/LnRoZW4oXG5cdFx0XHRcdGZ1bmN0aW9uICh0aGlzOiBDb2xsYWJvcmF0aW9uRHJhZnQsIG5ld1VzZXJJZDogc3RyaW5nKTogdm9pZCB7XG5cdFx0XHRcdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSB1c2VySW5wdXQuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdFx0XHRjb25zdCBpbnZpdGVkVXNlcnM6IFVzZXJbXSA9IGludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwiaW52aXRlZFVzZXJzXCIpIHx8IFtdO1xuXHRcdFx0XHRcdGNvbnN0IG5ld1VzZXI6IFVzZXIgPSB7XG5cdFx0XHRcdFx0XHRpZDogaW50ZXJuYWxNb2RlbENvbnRleHQ/LmdldFByb3BlcnR5KFwiVXNlcklEXCIpLFxuXHRcdFx0XHRcdFx0bmFtZTogaW50ZXJuYWxNb2RlbENvbnRleHQ/LmdldFByb3BlcnR5KFwiVXNlckRlc2NyaXB0aW9uXCIpXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRpZiAoaW52aXRlZFVzZXJzLmZpbmRJbmRleCgodXNlcikgPT4gdXNlci5pZCA9PT0gbmV3VXNlcklkKSA+IC0xKSB7XG5cdFx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZShcIkVycm9yXCIpO1xuXHRcdFx0XHRcdFx0dXNlcklucHV0LnNldFZhbHVlU3RhdGVUZXh0KHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX1VTRVJfRVJST1JcIikpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0XHQhKFxuXHRcdFx0XHRcdFx0XHRpbnZpdGVkVXNlcnMuZmluZEluZGV4KCh1c2VyKSA9PiB1c2VyLmlkID09PSBuZXdVc2VyLmlkKSA+IC0xIHx8XG5cdFx0XHRcdFx0XHRcdChuZXdVc2VyLmlkID09PSBuZXdVc2VyLm5hbWUgJiYgbmV3VXNlci5pZCA9PT0gXCJcIilcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdHRoaXMuYWRkVXNlcih1c2VySW5wdXQsIGludml0ZWRVc2VycywgbmV3VXNlcik7XG5cdFx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZShcIk5vbmVcIik7XG5cdFx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZVRleHQoXCJcIik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LmJpbmQodGhpcylcblx0XHRcdClcblx0XHRcdC5jYXRjaChcblx0XHRcdFx0ZnVuY3Rpb24gKHRoaXM6IENvbGxhYm9yYXRpb25EcmFmdCk6IHZvaWQge1xuXHRcdFx0XHRcdHVzZXJJbnB1dC5zZXRWYWx1ZVN0YXRlKFwiV2FybmluZ1wiKTtcblx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZVRleHQodGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fVVNFUl9OT1RfRk9VTkRcIikpO1xuXHRcdFx0XHR9LmJpbmQodGhpcylcblx0XHRcdCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gcmVtb3ZlIGEgdXNlciBmcm9tIHRoZSBsaXN0IG9mIGludml0ZWQgdXNlci5cblx0ICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCBvYmplY3Qgb2YgdGhlIHJlbW92ZSBidXR0b25cblx0ICovXG5cdHJlbW92ZVVzZXIoZXZlbnQ6IEV2ZW50PHt9LCBCdXR0b24+KTogdm9pZCB7XG5cdFx0Y29uc3QgaXRlbSA9IGV2ZW50LmdldFNvdXJjZSgpO1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWxDb250ZXh0ID0gaXRlbT8uZ2V0QmluZGluZ0NvbnRleHQoXCJwYWdlSW50ZXJuYWxcIik7XG5cdFx0Y29uc3QgZGVsZXRlVXNlcklEID0gaXRlbT8uZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKT8uZ2V0UHJvcGVydHkoXCJpZFwiKTtcblx0XHRsZXQgaW52aXRlZFVzZXJzOiBVc2VyW10gPSBpbnRlcm5hbE1vZGVsQ29udGV4dD8uZ2V0UHJvcGVydHkoXCJjb2xsYWJvcmF0aW9uL2ludml0ZWRVc2Vyc1wiKTtcblx0XHRpbnZpdGVkVXNlcnMgPSBpbnZpdGVkVXNlcnMuZmlsdGVyKCh1c2VyKSA9PiB1c2VyLmlkICE9PSBkZWxldGVVc2VySUQpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0Py5zZXRQcm9wZXJ0eShcImNvbGxhYm9yYXRpb24vaW52aXRlZFVzZXJzXCIsIGludml0ZWRVc2Vycyk7XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbCB0aGUgc2hhcmUgYWN0aW9uIHRvIHVwZGF0ZSB0aGUgbGlzdCBvZiBpbnZpdGVkIHVzZXJzLlxuXHQgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IG9iamVjdCBvZiB0aGUgaW52aXRlIGJ1dHRvblxuXHQgKi9cblx0aW52aXRlVXNlciA9IGFzeW5jIChldmVudDogRXZlbnQ8e30sIEJ1dHRvbj4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRjb25zdCB1c2VyczogQmFja2VuZFVzZXJbXSA9IFtdLFxuXHRcdFx0bmV3bHlJbnZpdGVkVXNlcnM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3Qgc291cmNlID0gZXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3QgYmluZGluZ0NvbnRleHQgPSBzb3VyY2UuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdGNvbnN0IGNvbnRleHRzID0gKHRoaXMubWFuYWdlRGlhbG9nVXNlclRhYmxlPy5nZXRCaW5kaW5nKFwicm93c1wiKSBhcyBPRGF0YUxpc3RCaW5kaW5nKS5nZXRDb250ZXh0cygpO1xuXHRcdGNvbnRleHRzLmZvckVhY2goZnVuY3Rpb24gKGNvbnRleHQpIHtcblx0XHRcdHVzZXJzLnB1c2goe1xuXHRcdFx0XHRVc2VySUQ6IGNvbnRleHQuZ2V0UHJvcGVydHkoXCJpZFwiKSxcblx0XHRcdFx0VXNlckFjY2Vzc1JvbGU6IFwiT1wiIC8vIEZvciBub3cgYWNjb3JkaW5nIHRvIFVYIGV2ZXJ5IHVzZXIgcmV0cmlldmVzIHRoZSBvd25lciByb2xlXG5cdFx0XHR9KTtcblx0XHRcdGlmIChjb250ZXh0LmdldFByb3BlcnR5KFwic3RhdHVzXCIpID09PSBVc2VyU3RhdHVzLk5vdFlldEludml0ZWQpIHtcblx0XHRcdFx0bmV3bHlJbnZpdGVkVXNlcnMucHVzaChjb250ZXh0LmdldFByb3BlcnR5KFwiaWRcIikpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dHJ5IHtcblx0XHRcdC8vIFdlIHJlcXVlc3QgdGhlIG51bWJlciBvZiBpbnZpdGVkIHVzZXJzIGFmdGVyIHRoZSBzaGFyZSBhY3Rpb24gdG8gc2VlIGhvdyBtYW55IHVzZXJzIHdlcmUgcmVhbGx5IGludml0ZWRcblx0XHRcdGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChbc2hhcmVPYmplY3QoYmluZGluZ0NvbnRleHQsIHVzZXJzKSwgdGhpcy5yZXF1ZXN0SW52aXRlZFVzZXJzSW5EcmFmdCgpXSk7XG5cdFx0XHRjb25zdCBuZXdVc2VyczogQ29udGV4dFtdID0gW107XG5cdFx0XHRyZXN1bHRzWzFdLmZvckVhY2goKGludml0ZWRVc2VyKSA9PiB7XG5cdFx0XHRcdGlmIChuZXdseUludml0ZWRVc2Vycy5pbmNsdWRlcyhpbnZpdGVkVXNlci5nZXRQcm9wZXJ0eShcIlVzZXJJRFwiKSkpIHtcblx0XHRcdFx0XHRuZXdVc2Vycy5wdXNoKGludml0ZWRVc2VyKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBtZXNzYWdlSGFuZGxlciA9IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSEubWVzc2FnZUhhbmRsZXI7XG5cdFx0XHRhd2FpdCBtZXNzYWdlSGFuZGxlci5zaG93TWVzc2FnZURpYWxvZygpO1xuXG5cdFx0XHRzd2l0Y2ggKG5ld1VzZXJzLmxlbmd0aCkge1xuXHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0TWVzc2FnZVRvYXN0LnNob3coXG5cdFx0XHRcdFx0XHR0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9TVUNDRVNTX1RPQVNUX05PX1VTRVJcIiwgW1xuXHRcdFx0XHRcdFx0XHR0aGlzLmdldFNoYXJlZEl0ZW1OYW1lKGJpbmRpbmdDb250ZXh0KVxuXHRcdFx0XHRcdFx0XSlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDE6XG5cdFx0XHRcdFx0TWVzc2FnZVRvYXN0LnNob3coXG5cdFx0XHRcdFx0XHR0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9TVUNDRVNTX1RPQVNUXCIsIFt0aGlzLmdldFNoYXJlZEl0ZW1OYW1lKGJpbmRpbmdDb250ZXh0KV0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyhcblx0XHRcdFx0XHRcdHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX1NVQ0NFU1NfVE9BU1RfUExVUkFMXCIsIFtcblx0XHRcdFx0XHRcdFx0bmV3VXNlcnMubGVuZ3RoLnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdHRoaXMuZ2V0U2hhcmVkSXRlbU5hbWUoYmluZGluZ0NvbnRleHQpXG5cdFx0XHRcdFx0XHRdKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyh0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9GQUlMRURfVE9BU1RcIikpO1xuXHRcdH1cblx0XHR0aGlzLmNsb3NlTWFuYWdlRGlhbG9nKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIEZldGNoZXMgdGhlIGxpc3Qgb2YgdXNlcnMgdGhhdCBhcmUgYWxyZWFkeSBpbnZpdGVkIGluIHRoZSBkcmFmdC5cblx0ICogQHJldHVybnMgUHJvbWlzZSB3aXRoIHRoZSBsaXN0IG9mIHVzZXIgY29udGV4dHMuXG5cdCAqL1xuXHRwcml2YXRlIGFzeW5jIHJlcXVlc3RJbnZpdGVkVXNlcnNJbkRyYWZ0KCk6IFByb21pc2U8Q29udGV4dFtdPiB7XG5cdFx0Y29uc3QgbW9kZWwgPSB0aGlzLmdldE1vZGVsKCk7XG5cdFx0Y29uc3QgcGFyYW1ldGVycyA9IHtcblx0XHRcdCRzZWxlY3Q6IFwiVXNlcklELFVzZXJEZXNjcmlwdGlvbixVc2VyRWRpdGluZ1N0YXRlXCIsXG5cdFx0XHQkJGdyb3VwSWQ6IFwiJGF1dG8uV29ya2Vyc1wiXG5cdFx0fTtcblx0XHRjb25zdCBpbnZpdGVkVXNlckxpc3QgPSBtb2RlbD8uYmluZExpc3QoXG5cdFx0XHRgJHt0aGlzLmdldEJpbmRpbmdDb250ZXh0KCk/LmdldFBhdGgoKX0vRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvRHJhZnRBZG1pbmlzdHJhdGl2ZVVzZXJgLFxuXHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0W10sXG5cdFx0XHRbXSxcblx0XHRcdHBhcmFtZXRlcnNcblx0XHQpIGFzIE9EYXRhTGlzdEJpbmRpbmc7XG5cblx0XHQvLyBmb3Igbm93IHdlIHNldCBhIGxpbWl0IHRvIDEwMC4gdGhlcmUgc2hvdWxkbid0IGJlIG1vcmUgdGhhbiBhIGZld1xuXHRcdHJldHVybiBpbnZpdGVkVXNlckxpc3QucmVxdWVzdENvbnRleHRzKDAsIDEwMCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVhZHMgdGhlIGN1cnJlbnRseSBpbnZpdGVkIHVzZXIgYW5kIHN0b3JlIGl0IGluIHRoZSBpbnRlcm5hbCBtb2RlbC5cblx0ICogQHJldHVybnMgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIG9uY2UgdGhlIHVzZXJzIGFyZSByZWFkLlxuXHQgKi9cblx0cmVhZEludml0ZWRVc2VycyA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblxuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBjdXJyZW50VXNlckxpc3QgPSBhd2FpdCB0aGlzLnJlcXVlc3RJbnZpdGVkVXNlcnNJbkRyYWZ0KCk7XG5cdFx0XHRjb25zdCBpbnZpdGVkVXNlcnM6IFVzZXJbXSA9IFtdO1xuXHRcdFx0Y29uc3QgYWN0aXZlVXNlcnMgPSB0aGlzLmdldE1vZGVsKFwiaW50ZXJuYWxcIik/LmdldFByb3BlcnR5KFwiL2NvbGxhYm9yYXRpb24vYWN0aXZlVXNlcnNcIikgfHwgW107XG5cdFx0XHRjb25zdCBtZSA9IENvbGxhYm9yYXRpb25VdGlscy5nZXRNZSh0aGlzLmdldEFwcENvbXBvbmVudCgpISk7XG5cdFx0XHRsZXQgdXNlclN0YXR1czogVXNlclN0YXR1cztcblx0XHRcdGlmIChjdXJyZW50VXNlckxpc3QubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRjdXJyZW50VXNlckxpc3QuZm9yRWFjaCgodXNlckNvbnRleHQpID0+IHtcblx0XHRcdFx0XHRjb25zdCB1c2VyRGF0YSA9IHVzZXJDb250ZXh0LmdldE9iamVjdCgpIGFzIEJhY2tlbmRVc2VyO1xuXHRcdFx0XHRcdGNvbnN0IGlzTWU6IGJvb2xlYW4gPSBtZT8uaWQgPT09IHVzZXJEYXRhLlVzZXJJRDtcblx0XHRcdFx0XHRjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZVVzZXJzLmZpbmQoKHU6IFVzZXIpID0+IHUuaWQgPT09IHVzZXJEYXRhLlVzZXJJRCk7XG5cdFx0XHRcdFx0bGV0IHVzZXJEZXNjcmlwdGlvbiA9IHVzZXJEYXRhLlVzZXJEZXNjcmlwdGlvbiB8fCB1c2VyRGF0YS5Vc2VySUQ7XG5cdFx0XHRcdFx0Y29uc3QgaW5pdGlhbHMgPSBDb2xsYWJvcmF0aW9uVXRpbHMuZm9ybWF0SW5pdGlhbHModXNlckRlc2NyaXB0aW9uKTtcblx0XHRcdFx0XHR1c2VyRGVzY3JpcHRpb24gPSBpc01lID8gYCR7Q29sbGFib3JhdGlvblV0aWxzLmdldFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9NRVwiLCB1c2VyRGVzY3JpcHRpb24pfWAgOiB1c2VyRGVzY3JpcHRpb247XG5cdFx0XHRcdFx0aWYgKGlzQWN0aXZlKSB7XG5cdFx0XHRcdFx0XHR1c2VyU3RhdHVzID0gVXNlclN0YXR1cy5DdXJyZW50bHlFZGl0aW5nO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodXNlckRhdGEuVXNlckVkaXRpbmdTdGF0ZSA9PT0gVXNlckVkaXRpbmdTdGF0ZS5JblByb2dyZXNzKSB7XG5cdFx0XHRcdFx0XHR1c2VyU3RhdHVzID0gVXNlclN0YXR1cy5DaGFuZ2VzTWFkZTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dXNlclN0YXR1cyA9IFVzZXJTdGF0dXMuTm9DaGFuZ2VzTWFkZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRjb25zdCB1c2VyOiBVc2VyID0ge1xuXHRcdFx0XHRcdFx0aWQ6IHVzZXJEYXRhLlVzZXJJRCxcblx0XHRcdFx0XHRcdG5hbWU6IHVzZXJEZXNjcmlwdGlvbixcblx0XHRcdFx0XHRcdHN0YXR1czogdXNlclN0YXR1cyxcblx0XHRcdFx0XHRcdGNvbG9yOiBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0VXNlckNvbG9yKHVzZXJEYXRhLlVzZXJJRCwgYWN0aXZlVXNlcnMsIGludml0ZWRVc2VycyksXG5cdFx0XHRcdFx0XHRpbml0aWFsczogaW5pdGlhbHMsXG5cdFx0XHRcdFx0XHRtZTogaXNNZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0aW52aXRlZFVzZXJzLnB1c2godXNlcik7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly9ub3QgeWV0IHNoYXJlZCwganVzdCBhZGQgbWVcblx0XHRcdFx0aW52aXRlZFVzZXJzLnB1c2gobWUpO1xuXHRcdFx0fVxuXHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJjb2xsYWJvcmF0aW9uL1VzZXJJRFwiLCBcIlwiKTtcblx0XHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiY29sbGFib3JhdGlvbi9Vc2VyRGVzY3JpcHRpb25cIiwgXCJcIik7XG5cdFx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImNvbGxhYm9yYXRpb24vaW52aXRlZFVzZXJzXCIsIGludml0ZWRVc2Vycyk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TWVzc2FnZVRvYXN0LnNob3codGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX1JFQURJTkdfVVNFUl9GQUlMRURcIikpO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogR2V0IHRoZSBuYW1lIG9mIHRoZSBvYmplY3QgdG8gYmUgc2hhcmVkLlxuXHQgKiBAcGFyYW0gYmluZGluZ0NvbnRleHQgVGhlIGNvbnRleHQgb2YgdGhlIHBhZ2UuXG5cdCAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSBvYmplY3QgdG8gYmUgc2hhcmVkLlxuXHQgKi9cblx0Z2V0U2hhcmVkSXRlbU5hbWUoYmluZGluZ0NvbnRleHQ6IENvbnRleHQpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGhlYWRlckluZm8gPSB0aGlzLmNvbnRleHRPYmplY3Q/LnRhcmdldEVudGl0eVR5cGUuYW5ub3RhdGlvbnMuVUk/LkhlYWRlckluZm87XG5cdFx0bGV0IHNoYXJlZEl0ZW1OYW1lID0gXCJcIjtcblx0XHRjb25zdCB0aXRsZSA9IGhlYWRlckluZm8/LlRpdGxlO1xuXHRcdGlmIChcblx0XHRcdHRpdGxlICYmXG5cdFx0XHRpc0Fubm90YXRpb25PZlR5cGU8RGF0YUZpZWxkVHlwZXM+KHRpdGxlLCBbXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZCxcblx0XHRcdFx0VUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEFjdGlvbixcblx0XHRcdFx0VUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEFjdGlvbkdyb3VwLFxuXHRcdFx0XHRVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGgsXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhJbnRlbnRCYXNlZE5hdmlnYXRpb24sXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhVcmwsXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aFxuXHRcdFx0XSlcblx0XHQpIHtcblx0XHRcdHNoYXJlZEl0ZW1OYW1lID0gaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24odGl0bGUuVmFsdWUpID8gYmluZGluZ0NvbnRleHQuZ2V0UHJvcGVydHkodGl0bGUuVmFsdWUucGF0aCkgOiB0aXRsZS5WYWx1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIHNoYXJlZEl0ZW1OYW1lIHx8IChoZWFkZXJJbmZvPy5UeXBlTmFtZSBhcyB1bmtub3duIGFzIHN0cmluZykgfHwgXCJcIjtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgdGhlIGRlbGVnYXRlIHBheWxvYWQgZm9yIHRoZSB1c2VyIGZpZWxkIHZhbHVlIGhlbHAuXG5cdCAqIEByZXR1cm5zIFRoZSB2YWx1ZSBoZWxwIGRlbGVnYXRlIHBheWxvYWRcblx0ICovXG5cdGdldFZhbHVlSGVscERlbGVnYXRlKCk6IHsgbmFtZTogc3RyaW5nOyBwYXlsb2FkOiBWYWx1ZUhlbHBQYXlsb2FkIH0ge1xuXHRcdC8vIFRoZSBub24gbnVsbCBhc3NlcnRpb24gaXMgc2FmZSBoZXJlLCBiZWNhdXNlIHRoZSBhY3Rpb24gaXMgb25seSBhdmFpbGFibGUgaWYgdGhlIGFubm90YXRpb24gaXMgcHJlc2VudFxuXHRcdGNvbnN0IGFjdGlvbk5hbWUgPSAoXG5cdFx0XHR0aGlzLmNvbnRleHRPYmplY3Q/LnRhcmdldEVudGl0eVNldCEuYW5ub3RhdGlvbnMuQ29tbW9uIGFzIEVudGl0eVNldEFubm90YXRpb25zX0NvbW1vblxuXHRcdCkuRHJhZnRSb290IS5TaGFyZUFjdGlvbiEudG9TdHJpbmcoKTtcblx0XHQvLyBXZSBhcmUgYWxzbyBzdXJlIHRoYXQgdGhlIGFjdGlvbiBleGlzdFxuXHRcdGNvbnN0IGFjdGlvbiA9IHRoaXMuY29udGV4dE9iamVjdD8udGFyZ2V0RW50aXR5VHlwZS5yZXNvbHZlUGF0aChhY3Rpb25OYW1lKSBhcyBWb2NhYnVsYXJ5QWN0aW9uO1xuXHRcdC8vIEJ5IGRlZmluaXRpb24gdGhlIGFjdGlvbiBoYXMgYSBwYXJhbWV0ZXIgd2l0aCB0aGUgbmFtZSBcIlVzZXJzXCJcblx0XHRjb25zdCB1c2VyUGFyYW1ldGVycyA9IGFjdGlvbi5wYXJhbWV0ZXJzLmZpbmQoKHBhcmFtKSA9PiBwYXJhbS5uYW1lID09PSBVU0VSU19QQVJBTUVURVJTKSE7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0bmFtZTogXCJzYXAvZmUvbWFjcm9zL3ZhbHVlaGVscC9WYWx1ZUhlbHBEZWxlZ2F0ZVwiLFxuXHRcdFx0cGF5bG9hZDoge1xuXHRcdFx0XHRwcm9wZXJ0eVBhdGg6IGAvJHt1c2VyUGFyYW1ldGVycy50eXBlfS8ke1VTRVJfSURfUEFSQU1FVEVSfWAsXG5cdFx0XHRcdHF1YWxpZmllcnM6IHt9LFxuXHRcdFx0XHR2YWx1ZUhlbHBRdWFsaWZpZXI6IFwiXCIsXG5cdFx0XHRcdGlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nOiB0cnVlXG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZSB0aGUgZXhwcmVzc2lvbiBiaW5kaW5nIG9mIHRoZSBJbnZpdGF0aW9uIGRpYWxvZy5cblx0ICogQHJldHVybnMgVGhlIGRpYWxvZyB0aXRsZSBiaW5kaW5nIGV4cHJlc3Npb25cblx0ICovXG5cdGdldEludml0YXRpb25EaWFsb2dUaXRsZUV4cEJpbmRpbmcoKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRcdGNvbnN0IGhlYWRlckluZm8gPSB0aGlzLmNvbnRleHRPYmplY3Q/LnRhcmdldEVudGl0eVR5cGUuYW5ub3RhdGlvbnMuVUk/LkhlYWRlckluZm87XG5cdFx0Y29uc3QgdGl0bGUgPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oKGhlYWRlckluZm8/LlRpdGxlIGFzIERhdGFGaWVsZCB8IHVuZGVmaW5lZCk/LlZhbHVlLCBbXSwgXCJcIik7XG5cdFx0Y29uc3QgcGFyYW1zID0gW1wiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9ESUFMT0dcIiwgaGVhZGVySW5mbz8uVHlwZU5hbWUudG9TdHJpbmcoKSwgdGl0bGVdO1xuXHRcdGNvbnN0IHRpdGxlRXhwcmVzc2lvbiA9IGZvcm1hdFJlc3VsdChwYXJhbXMsIGNvbGxhYm9yYXRpb25Gb3JtYXR0ZXIuZ2V0Rm9ybWF0dGVkVGV4dCk7XG5cdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKHRpdGxlRXhwcmVzc2lvbik7XG5cdH1cblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byBjbG9zZSB0aGUgbWFuYWdlIGRpYWxvZy5cblx0ICpcblx0ICovXG5cdGNsb3NlTWFuYWdlRGlhbG9nID0gKCk6IHZvaWQgPT4ge1xuXHRcdHRoaXMubWFuYWdlRGlhbG9nPy5jbG9zZSgpO1xuXHRcdHRoaXMubWFuYWdlRGlhbG9nPy5kZXN0cm95KCk7XG5cdFx0ZGVsZXRlIHRoaXMubWFuYWdlRGlhbG9nO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBpbnZpdGUgYnV0dG9uIGlmIHRoZXJlJ3MgYSBzaGFyZSBhY3Rpb24gb24gcm9vdCBsZXZlbC5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0SW52aXRlQnV0dG9uKCk6IEhCb3gge1xuXHRcdGlmICgodGhpcy5jb250ZXh0T2JqZWN0Py50YXJnZXRFbnRpdHlTZXQ/LmFubm90YXRpb25zLkNvbW1vbiBhcyBFbnRpdHlTZXRBbm5vdGF0aW9uc19Db21tb24pPy5EcmFmdFJvb3Q/LlNoYXJlQWN0aW9uKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8SEJveCB2aXNpYmxlPVwie3VpPi9pc0VkaXRhYmxlfVwiIGFsaWduSXRlbXM9XCJDZW50ZXJcIiBqdXN0aWZ5Q29udGVudD1cIlN0YXJ0XCI+XG5cdFx0XHRcdFx0PEF2YXRhciBiYWNrZ3JvdW5kQ29sb3I9XCJUaWxlSWNvblwiIHNyYz1cInNhcC1pY29uOi8vYWRkLWVtcGxveWVlXCIgZGlzcGxheVNpemU9XCJYU1wiIHByZXNzPXt0aGlzLm1hbmFnZUNvbGxhYm9yYXRpb259IC8+XG5cdFx0XHRcdDwvSEJveD5cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiA8SEJveCAvPjtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY29udGVudCBvZiB0aGUgY29sbGFib3JhdGlvbiBkcmFmdCBidWlsZGluZyBibG9jay5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Y3JlYXRlQ29udGVudCgpOiBDb250cm9sIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAodGhpcy5fZ2V0T3duZXIoKT8uZ2V0TWV0YU1vZGVsKCkgJiYgTW9kZWxIZWxwZXIuaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQodGhpcy5fZ2V0T3duZXIoKSEuZ2V0TWV0YU1vZGVsKCkpKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8SEJveD5cblx0XHRcdFx0XHQ8SEJveFxuXHRcdFx0XHRcdFx0aXRlbXM9e3sgcGF0aDogXCJpbnRlcm5hbD4vY29sbGFib3JhdGlvbi9hY3RpdmVVc2Vyc1wiIH19XG5cdFx0XHRcdFx0XHRjbGFzcz1cInNhcFVpVGlueU1hcmdpbkJlZ2luXCJcblx0XHRcdFx0XHRcdHZpc2libGU9XCJ7PSAke3VpPi9pc0VkaXRhYmxlfSAmYW1wOyZhbXA7ICR7aW50ZXJuYWw+L2NvbGxhYm9yYXRpb24vY29ubmVjdGVkfSB9XCJcblx0XHRcdFx0XHRcdGFsaWduSXRlbXM9XCJDZW50ZXJcIlxuXHRcdFx0XHRcdFx0anVzdGlmeUNvbnRlbnQ9XCJTdGFydFwiXG5cdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0PEF2YXRhclxuXHRcdFx0XHRcdFx0XHRpbml0aWFscz1cIntpbnRlcm5hbD5pbml0aWFsc31cIlxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5U2l6ZT1cIlhTXCJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yPVwie2ludGVybmFsPmNvbG9yfVwiXG5cdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLnNob3dDb2xsYWJvcmF0aW9uVXNlckRldGFpbHN9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvSEJveD5cblx0XHRcdFx0XHR7dGhpcy5nZXRJbnZpdGVCdXR0b24oKX1cblx0XHRcdFx0PC9IQm94PlxuXHRcdFx0KTtcblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -287,7 +287,7 @@ export default class CollaborationDraft extends BuildingBlock {
287
287
  value="{internal>UserID}"
288
288
  additionalValue="{internal>UserDescription}"
289
289
  display="DescriptionValue"
290
- width="20em"
290
+ width="100%"
291
291
  required={true}
292
292
  valueHelp="userValueHelp"
293
293
  placeholder={this.getTranslatedText("C_COLLABORATIONDRAFT_INVITATION_INPUT_PLACEHOLDER")}
@@ -4,7 +4,7 @@
4
4
  "id": "sap.fe.templates.ObjectPage",
5
5
  "type": "component",
6
6
  "applicationVersion": {
7
- "version": "1.145.0"
7
+ "version": "1.145.2"
8
8
  },
9
9
  "title": "Object Page",
10
10
  "tags": {
@@ -14,9 +14,10 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/navigation/SelectionVariant"],
14
14
  const oAppComponent = CommonUtils.getAppComponent(oView);
15
15
  const oMetaModel = oAppComponent.getModel().getMetaModel();
16
16
  const oPageContext = oView.getBindingContext();
17
+
17
18
  //If the link context is same as page context merging of context should not happen
18
- const mergeLinkContext = oTargetInfo?.linkContextPath ? oPageContext.getPath() !== oTargetInfo?.linkContextPath : true;
19
- if (oExternalNavigationContext?.page && mergeLinkContext) {
19
+ const mergeLinkContext = oTargetInfo?.linkContextPath ? oPageContext?.getPath() !== oTargetInfo?.linkContextPath : true;
20
+ if (oExternalNavigationContext?.page && mergeLinkContext && oPageContext) {
20
21
  const sMetaPath = oMetaModel.getMetaPath(oPageContext.getPath());
21
22
  let pageAttributes = oPageContext.getObject();
22
23
  pageAttributes = oController._intentBasedNavigation.processSemanticAttributes(oPageContext, oPageContext.getObject());
@@ -55,4 +56,4 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/navigation/SelectionVariant"],
55
56
  };
56
57
  return IntentBasedNavigationOverride;
57
58
  }, false);
58
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZSIsImFkYXB0TmF2aWdhdGlvbkNvbnRleHQiLCJvU2VsZWN0aW9uVmFyaWFudCIsIm9UYXJnZXRJbmZvIiwib1ZpZXciLCJnZXRWaWV3Iiwib0NvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJvRXh0ZXJuYWxOYXZpZ2F0aW9uQ29udGV4dCIsImdldFByb3BlcnR5Iiwib0FwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50Iiwib01ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwib1BhZ2VDb250ZXh0IiwibWVyZ2VMaW5rQ29udGV4dCIsImxpbmtDb250ZXh0UGF0aCIsImdldFBhdGgiLCJwYWdlIiwic01ldGFQYXRoIiwiZ2V0TWV0YVBhdGgiLCJwYWdlQXR0cmlidXRlcyIsImdldE9iamVjdCIsIl9pbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJwcm9jZXNzU2VtYW50aWNBdHRyaWJ1dGVzIiwib1BhZ2VDb250ZXh0RGF0YSIsInJlbW92ZVNlbnNpdGl2ZURhdGEiLCJvUGFnZURhdGEiLCJwcmVwYXJlQ29udGV4dEZvckV4dGVybmFsTmF2aWdhdGlvbiIsIm9QYWdlUHJvcGVydGllc1dpdGhvdXRDb25mbGljdCIsInByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QiLCJvUGFnZVNWIiwiYWRkUGFnZUNvbnRleHRUb1NlbGVjdGlvblZhcmlhbnQiLCJTZWxlY3Rpb25WYXJpYW50Iiwic2VtYW50aWNBdHRyaWJ1dGVzIiwib1Byb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QiLCJhU2VsZWN0T3B0aW9uUHJvcGVydHlOYW1lcyIsImdldFNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzIiwiZm9yRWFjaCIsInNQcm9wZXJ0eU5hbWUiLCJnZXRTZWxlY3RPcHRpb24iLCJtYXNzQWRkU2VsZWN0T3B0aW9uIiwibGlua0NvbnRleHQiLCJzZXRQcm9wZXJ0eSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiSW50ZW50QmFzZWROYXZpZ2F0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIEludGVudEJhc2VkTmF2aWdhdGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZW50QmFzZWROYXZpZ2F0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IFNlbGVjdGlvblZhcmlhbnQgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1NlbGVjdGlvblZhcmlhbnRcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5cbmNvbnN0IEludGVudEJhc2VkTmF2aWdhdGlvbk92ZXJyaWRlID0ge1xuXHRhZGFwdE5hdmlnYXRpb25Db250ZXh0OiBmdW5jdGlvbiAoXG5cdFx0dGhpczogSW50ZW50QmFzZWROYXZpZ2F0aW9uLFxuXHRcdG9TZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50LFxuXHRcdG9UYXJnZXRJbmZvPzogeyBsaW5rQ29udGV4dFBhdGg6IHN0cmluZzsgbGlua0NvbnRleHQ/OiB1bmtub3duOyBwcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB9XG5cdCk6IHZvaWQge1xuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlcixcblx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRvRXh0ZXJuYWxOYXZpZ2F0aW9uQ29udGV4dCA9IG9JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShcImV4dGVybmFsTmF2aWdhdGlvbkNvbnRleHRcIik7XG5cdFx0Y29uc3Qgb0FwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudChvVmlldyk7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9BcHBDb21wb25lbnQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBvUGFnZUNvbnRleHQgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQ7XG5cdFx0Ly9JZiB0aGUgbGluayBjb250ZXh0IGlzIHNhbWUgYXMgcGFnZSBjb250ZXh0IG1lcmdpbmcgb2YgY29udGV4dCBzaG91bGQgbm90IGhhcHBlblxuXHRcdGNvbnN0IG1lcmdlTGlua0NvbnRleHQgPSBvVGFyZ2V0SW5mbz8ubGlua0NvbnRleHRQYXRoID8gb1BhZ2VDb250ZXh0LmdldFBhdGgoKSAhPT0gb1RhcmdldEluZm8/LmxpbmtDb250ZXh0UGF0aCA6IHRydWU7XG5cdFx0aWYgKG9FeHRlcm5hbE5hdmlnYXRpb25Db250ZXh0Py5wYWdlICYmIG1lcmdlTGlua0NvbnRleHQpIHtcblx0XHRcdGNvbnN0IHNNZXRhUGF0aCA9IG9NZXRhTW9kZWwuZ2V0TWV0YVBhdGgob1BhZ2VDb250ZXh0LmdldFBhdGgoKSk7XG5cdFx0XHRsZXQgcGFnZUF0dHJpYnV0ZXMgPSBvUGFnZUNvbnRleHQuZ2V0T2JqZWN0KCk7XG5cdFx0XHRwYWdlQXR0cmlidXRlcyA9IG9Db250cm9sbGVyLl9pbnRlbnRCYXNlZE5hdmlnYXRpb24ucHJvY2Vzc1NlbWFudGljQXR0cmlidXRlcyhvUGFnZUNvbnRleHQsIG9QYWdlQ29udGV4dC5nZXRPYmplY3QoKSk7XG5cdFx0XHRjb25zdCBvUGFnZUNvbnRleHREYXRhID0gb0NvbnRyb2xsZXIuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5yZW1vdmVTZW5zaXRpdmVEYXRhKHBhZ2VBdHRyaWJ1dGVzLCBzTWV0YVBhdGgpLFxuXHRcdFx0XHRvUGFnZURhdGEgPSBvQ29udHJvbGxlci5faW50ZW50QmFzZWROYXZpZ2F0aW9uLnByZXBhcmVDb250ZXh0Rm9yRXh0ZXJuYWxOYXZpZ2F0aW9uKG9QYWdlQ29udGV4dERhdGEsIG9QYWdlQ29udGV4dCksXG5cdFx0XHRcdG9QYWdlUHJvcGVydGllc1dpdGhvdXRDb25mbGljdCA9IG9QYWdlRGF0YS5wcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0LFxuXHRcdFx0XHQvLyBUT0RPOiBtb3ZlIHRoaXMgYWxzbyBpbnRvIHRoZSBpbnRlbnQgYmFzZWQgbmF2aWdhdGlvbiBjb250cm9sbGVyIGV4dGVuc2lvblxuXHRcdFx0XHRvUGFnZVNWID0gQ29tbW9uVXRpbHMuYWRkUGFnZUNvbnRleHRUb1NlbGVjdGlvblZhcmlhbnQoXG5cdFx0XHRcdFx0bmV3IFNlbGVjdGlvblZhcmlhbnQoKSxcblx0XHRcdFx0XHRvUGFnZURhdGEuc2VtYW50aWNBdHRyaWJ1dGVzIGFzIHVua25vd25bXSxcblx0XHRcdFx0XHRvVmlld1xuXHRcdFx0XHQpLFxuXHRcdFx0XHRvUHJvcGVydGllc1dpdGhvdXRDb25mbGljdCA9IG9UYXJnZXRJbmZvPy5wcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0O1xuXHRcdFx0Y29uc3QgYVNlbGVjdE9wdGlvblByb3BlcnR5TmFtZXMgPSBvUGFnZVNWLmdldFNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzKCk7XG5cdFx0XHRhU2VsZWN0T3B0aW9uUHJvcGVydHlOYW1lcy5mb3JFYWNoKGZ1bmN0aW9uIChzUHJvcGVydHlOYW1lOiBzdHJpbmcpIHtcblx0XHRcdFx0aWYgKCFvU2VsZWN0aW9uVmFyaWFudC5nZXRTZWxlY3RPcHRpb24oc1Byb3BlcnR5TmFtZSkpIHtcblx0XHRcdFx0XHRvU2VsZWN0aW9uVmFyaWFudC5tYXNzQWRkU2VsZWN0T3B0aW9uKHNQcm9wZXJ0eU5hbWUsIG9QYWdlU1YuZ2V0U2VsZWN0T3B0aW9uKHNQcm9wZXJ0eU5hbWUpISk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gT25seSB3aGVuIHRoZXJlIGlzIG5vIGNvbmZsaWN0IGRvIHdlIG5lZWQgdG8gYWRkIHNvbWV0aGluZ1xuXHRcdFx0XHRcdC8vIGluIGFsbCBvdGhlciBjYXNlIHRoZSBjb25mbGljdGVkIHBhdGhzIGFyZSBhbHJlYWR5IGFkZGVkIGluIHByZXBhcmVDb250ZXh0Rm9yRXh0ZXJuYWxOYXZpZ2F0aW9uXG5cdFx0XHRcdFx0Ly8gaWYgcHJvcGVydHkgd2FzIHdpdGhvdXQgY29uZmxpY3QgaW4gaW5jb21pbmcgY29udGV4dCB0aGVuIGFkZCBwYXRoIGZyb20gaW5jb21pbmcgY29udGV4dCB0byBTVlxuXHRcdFx0XHRcdC8vIFRPLURPLiBSZW1vdmUgdGhlIGNoZWNrIGZvciBvUHJvcGVydGllc1dpdGhvdXRDb25mbGljdCBvbmNlIHNlbWFudGljIGxpbmtzIGZ1bmN0aW9uYWxpdHkgaXMgY292ZXJlZFxuXHRcdFx0XHRcdGlmIChvUHJvcGVydGllc1dpdGhvdXRDb25mbGljdCAmJiBzUHJvcGVydHlOYW1lIGluIG9Qcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0KSB7XG5cdFx0XHRcdFx0XHRvU2VsZWN0aW9uVmFyaWFudC5tYXNzQWRkU2VsZWN0T3B0aW9uKFxuXHRcdFx0XHRcdFx0XHRvUHJvcGVydGllc1dpdGhvdXRDb25mbGljdFtzUHJvcGVydHlOYW1lXSxcblx0XHRcdFx0XHRcdFx0b1NlbGVjdGlvblZhcmlhbnQuZ2V0U2VsZWN0T3B0aW9uKHNQcm9wZXJ0eU5hbWUpIVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gaWYgcHJvcGVydHkgd2FzIHdpdGhvdXQgY29uZmxpY3QgaW4gcGFnZSBjb250ZXh0IHRoZW4gYWRkIHBhdGggZnJvbSBwYWdlIGNvbnRleHQgdG8gU1Zcblx0XHRcdFx0XHRpZiAoc1Byb3BlcnR5TmFtZSBpbiBvUGFnZVByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QpIHtcblx0XHRcdFx0XHRcdG9TZWxlY3Rpb25WYXJpYW50Lm1hc3NBZGRTZWxlY3RPcHRpb24oXG5cdFx0XHRcdFx0XHRcdG9QYWdlUHJvcGVydGllc1dpdGhvdXRDb25mbGljdFtzUHJvcGVydHlOYW1lXSxcblx0XHRcdFx0XHRcdFx0b1BhZ2VTVi5nZXRTZWxlY3RPcHRpb24oc1Byb3BlcnR5TmFtZSkhXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdC8vIHJlbW92ZSBub24gcHVibGljIHByb3BlcnRpZXMgZnJvbSB0YXJnZXRJbmZvXG5cdFx0ZGVsZXRlIG9UYXJnZXRJbmZvPy5wcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0O1xuXHRcdGRlbGV0ZSBvVGFyZ2V0SW5mbz8ubGlua0NvbnRleHQ7XG5cdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiZXh0ZXJuYWxOYXZpZ2F0aW9uQ29udGV4dFwiLCB7IHBhZ2U6IHRydWUgfSk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEludGVudEJhc2VkTmF2aWdhdGlvbk92ZXJyaWRlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0VBT0EsTUFBTUEsNkJBQTZCLEdBQUc7SUFDckNDLHNCQUFzQixFQUFFLFNBQUFBLENBRXZCQyxpQkFBbUMsRUFDbkNDLFdBQW9ILEVBQzdHO01BQ1AsTUFBTUMsS0FBSyxHQUFHLElBQUksQ0FBQ0MsT0FBTyxDQUFDLENBQUM7UUFDM0JDLFdBQVcsR0FBR0YsS0FBSyxDQUFDRyxhQUFhLENBQUMsQ0FBbUI7UUFDckRDLHFCQUFxQixHQUFHLElBQUksQ0FBQ0gsT0FBTyxDQUFDLENBQUMsQ0FBQ0ksaUJBQWlC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
59
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZSIsImFkYXB0TmF2aWdhdGlvbkNvbnRleHQiLCJvU2VsZWN0aW9uVmFyaWFudCIsIm9UYXJnZXRJbmZvIiwib1ZpZXciLCJnZXRWaWV3Iiwib0NvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJvRXh0ZXJuYWxOYXZpZ2F0aW9uQ29udGV4dCIsImdldFByb3BlcnR5Iiwib0FwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50Iiwib01ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwib1BhZ2VDb250ZXh0IiwibWVyZ2VMaW5rQ29udGV4dCIsImxpbmtDb250ZXh0UGF0aCIsImdldFBhdGgiLCJwYWdlIiwic01ldGFQYXRoIiwiZ2V0TWV0YVBhdGgiLCJwYWdlQXR0cmlidXRlcyIsImdldE9iamVjdCIsIl9pbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJwcm9jZXNzU2VtYW50aWNBdHRyaWJ1dGVzIiwib1BhZ2VDb250ZXh0RGF0YSIsInJlbW92ZVNlbnNpdGl2ZURhdGEiLCJvUGFnZURhdGEiLCJwcmVwYXJlQ29udGV4dEZvckV4dGVybmFsTmF2aWdhdGlvbiIsIm9QYWdlUHJvcGVydGllc1dpdGhvdXRDb25mbGljdCIsInByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QiLCJvUGFnZVNWIiwiYWRkUGFnZUNvbnRleHRUb1NlbGVjdGlvblZhcmlhbnQiLCJTZWxlY3Rpb25WYXJpYW50Iiwic2VtYW50aWNBdHRyaWJ1dGVzIiwib1Byb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QiLCJhU2VsZWN0T3B0aW9uUHJvcGVydHlOYW1lcyIsImdldFNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzIiwiZm9yRWFjaCIsInNQcm9wZXJ0eU5hbWUiLCJnZXRTZWxlY3RPcHRpb24iLCJtYXNzQWRkU2VsZWN0T3B0aW9uIiwibGlua0NvbnRleHQiLCJzZXRQcm9wZXJ0eSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiSW50ZW50QmFzZWROYXZpZ2F0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIEludGVudEJhc2VkTmF2aWdhdGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZW50QmFzZWROYXZpZ2F0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IFNlbGVjdGlvblZhcmlhbnQgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1NlbGVjdGlvblZhcmlhbnRcIjtcblxuY29uc3QgSW50ZW50QmFzZWROYXZpZ2F0aW9uT3ZlcnJpZGUgPSB7XG5cdGFkYXB0TmF2aWdhdGlvbkNvbnRleHQ6IGZ1bmN0aW9uIChcblx0XHR0aGlzOiBJbnRlbnRCYXNlZE5hdmlnYXRpb24sXG5cdFx0b1NlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0b1RhcmdldEluZm8/OiB7IGxpbmtDb250ZXh0UGF0aDogc3RyaW5nOyBsaW5rQ29udGV4dD86IHVua25vd247IHByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3Q/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IH1cblx0KTogdm9pZCB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyLFxuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0ID0gdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRcdG9FeHRlcm5hbE5hdmlnYXRpb25Db250ZXh0ID0gb0ludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwiZXh0ZXJuYWxOYXZpZ2F0aW9uQ29udGV4dFwiKTtcblx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KG9WaWV3KTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb0FwcENvbXBvbmVudC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IG9QYWdlQ29udGV4dCA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KCk7XG5cblx0XHQvL0lmIHRoZSBsaW5rIGNvbnRleHQgaXMgc2FtZSBhcyBwYWdlIGNvbnRleHQgbWVyZ2luZyBvZiBjb250ZXh0IHNob3VsZCBub3QgaGFwcGVuXG5cdFx0Y29uc3QgbWVyZ2VMaW5rQ29udGV4dCA9IG9UYXJnZXRJbmZvPy5saW5rQ29udGV4dFBhdGggPyBvUGFnZUNvbnRleHQ/LmdldFBhdGgoKSAhPT0gb1RhcmdldEluZm8/LmxpbmtDb250ZXh0UGF0aCA6IHRydWU7XG5cdFx0aWYgKG9FeHRlcm5hbE5hdmlnYXRpb25Db250ZXh0Py5wYWdlICYmIG1lcmdlTGlua0NvbnRleHQgJiYgb1BhZ2VDb250ZXh0KSB7XG5cdFx0XHRjb25zdCBzTWV0YVBhdGggPSBvTWV0YU1vZGVsLmdldE1ldGFQYXRoKG9QYWdlQ29udGV4dC5nZXRQYXRoKCkpO1xuXHRcdFx0bGV0IHBhZ2VBdHRyaWJ1dGVzID0gb1BhZ2VDb250ZXh0LmdldE9iamVjdCgpO1xuXHRcdFx0cGFnZUF0dHJpYnV0ZXMgPSBvQ29udHJvbGxlci5faW50ZW50QmFzZWROYXZpZ2F0aW9uLnByb2Nlc3NTZW1hbnRpY0F0dHJpYnV0ZXMob1BhZ2VDb250ZXh0LCBvUGFnZUNvbnRleHQuZ2V0T2JqZWN0KCkpO1xuXHRcdFx0Y29uc3Qgb1BhZ2VDb250ZXh0RGF0YSA9IG9Db250cm9sbGVyLl9pbnRlbnRCYXNlZE5hdmlnYXRpb24ucmVtb3ZlU2Vuc2l0aXZlRGF0YShwYWdlQXR0cmlidXRlcywgc01ldGFQYXRoKSxcblx0XHRcdFx0b1BhZ2VEYXRhID0gb0NvbnRyb2xsZXIuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5wcmVwYXJlQ29udGV4dEZvckV4dGVybmFsTmF2aWdhdGlvbihvUGFnZUNvbnRleHREYXRhLCBvUGFnZUNvbnRleHQpLFxuXHRcdFx0XHRvUGFnZVByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QgPSBvUGFnZURhdGEucHJvcGVydGllc1dpdGhvdXRDb25mbGljdCxcblx0XHRcdFx0Ly8gVE9ETzogbW92ZSB0aGlzIGFsc28gaW50byB0aGUgaW50ZW50IGJhc2VkIG5hdmlnYXRpb24gY29udHJvbGxlciBleHRlbnNpb25cblx0XHRcdFx0b1BhZ2VTViA9IENvbW1vblV0aWxzLmFkZFBhZ2VDb250ZXh0VG9TZWxlY3Rpb25WYXJpYW50KFxuXHRcdFx0XHRcdG5ldyBTZWxlY3Rpb25WYXJpYW50KCksXG5cdFx0XHRcdFx0b1BhZ2VEYXRhLnNlbWFudGljQXR0cmlidXRlcyBhcyB1bmtub3duW10sXG5cdFx0XHRcdFx0b1ZpZXdcblx0XHRcdFx0KSxcblx0XHRcdFx0b1Byb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QgPSBvVGFyZ2V0SW5mbz8ucHJvcGVydGllc1dpdGhvdXRDb25mbGljdDtcblx0XHRcdGNvbnN0IGFTZWxlY3RPcHRpb25Qcm9wZXJ0eU5hbWVzID0gb1BhZ2VTVi5nZXRTZWxlY3RPcHRpb25zUHJvcGVydHlOYW1lcygpO1xuXHRcdFx0YVNlbGVjdE9wdGlvblByb3BlcnR5TmFtZXMuZm9yRWFjaChmdW5jdGlvbiAoc1Byb3BlcnR5TmFtZTogc3RyaW5nKSB7XG5cdFx0XHRcdGlmICghb1NlbGVjdGlvblZhcmlhbnQuZ2V0U2VsZWN0T3B0aW9uKHNQcm9wZXJ0eU5hbWUpKSB7XG5cdFx0XHRcdFx0b1NlbGVjdGlvblZhcmlhbnQubWFzc0FkZFNlbGVjdE9wdGlvbihzUHJvcGVydHlOYW1lLCBvUGFnZVNWLmdldFNlbGVjdE9wdGlvbihzUHJvcGVydHlOYW1lKSEpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIE9ubHkgd2hlbiB0aGVyZSBpcyBubyBjb25mbGljdCBkbyB3ZSBuZWVkIHRvIGFkZCBzb21ldGhpbmdcblx0XHRcdFx0XHQvLyBpbiBhbGwgb3RoZXIgY2FzZSB0aGUgY29uZmxpY3RlZCBwYXRocyBhcmUgYWxyZWFkeSBhZGRlZCBpbiBwcmVwYXJlQ29udGV4dEZvckV4dGVybmFsTmF2aWdhdGlvblxuXHRcdFx0XHRcdC8vIGlmIHByb3BlcnR5IHdhcyB3aXRob3V0IGNvbmZsaWN0IGluIGluY29taW5nIGNvbnRleHQgdGhlbiBhZGQgcGF0aCBmcm9tIGluY29taW5nIGNvbnRleHQgdG8gU1Zcblx0XHRcdFx0XHQvLyBUTy1ETy4gUmVtb3ZlIHRoZSBjaGVjayBmb3Igb1Byb3BlcnRpZXNXaXRob3V0Q29uZmxpY3Qgb25jZSBzZW1hbnRpYyBsaW5rcyBmdW5jdGlvbmFsaXR5IGlzIGNvdmVyZWRcblx0XHRcdFx0XHRpZiAob1Byb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QgJiYgc1Byb3BlcnR5TmFtZSBpbiBvUHJvcGVydGllc1dpdGhvdXRDb25mbGljdCkge1xuXHRcdFx0XHRcdFx0b1NlbGVjdGlvblZhcmlhbnQubWFzc0FkZFNlbGVjdE9wdGlvbihcblx0XHRcdFx0XHRcdFx0b1Byb3BlcnRpZXNXaXRob3V0Q29uZmxpY3Rbc1Byb3BlcnR5TmFtZV0sXG5cdFx0XHRcdFx0XHRcdG9TZWxlY3Rpb25WYXJpYW50LmdldFNlbGVjdE9wdGlvbihzUHJvcGVydHlOYW1lKSFcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIGlmIHByb3BlcnR5IHdhcyB3aXRob3V0IGNvbmZsaWN0IGluIHBhZ2UgY29udGV4dCB0aGVuIGFkZCBwYXRoIGZyb20gcGFnZSBjb250ZXh0IHRvIFNWXG5cdFx0XHRcdFx0aWYgKHNQcm9wZXJ0eU5hbWUgaW4gb1BhZ2VQcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0KSB7XG5cdFx0XHRcdFx0XHRvU2VsZWN0aW9uVmFyaWFudC5tYXNzQWRkU2VsZWN0T3B0aW9uKFxuXHRcdFx0XHRcdFx0XHRvUGFnZVByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3Rbc1Byb3BlcnR5TmFtZV0sXG5cdFx0XHRcdFx0XHRcdG9QYWdlU1YuZ2V0U2VsZWN0T3B0aW9uKHNQcm9wZXJ0eU5hbWUpIVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0XHQvLyByZW1vdmUgbm9uIHB1YmxpYyBwcm9wZXJ0aWVzIGZyb20gdGFyZ2V0SW5mb1xuXHRcdGRlbGV0ZSBvVGFyZ2V0SW5mbz8ucHJvcGVydGllc1dpdGhvdXRDb25mbGljdDtcblx0XHRkZWxldGUgb1RhcmdldEluZm8/LmxpbmtDb250ZXh0O1xuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImV4dGVybmFsTmF2aWdhdGlvbkNvbnRleHRcIiwgeyBwYWdlOiB0cnVlIH0pO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztFQU1BLE1BQU1BLDZCQUE2QixHQUFHO0lBQ3JDQyxzQkFBc0IsRUFBRSxTQUFBQSxDQUV2QkMsaUJBQW1DLEVBQ25DQyxXQUFvSCxFQUM3RztNQUNQLE1BQU1DLEtBQUssR0FBRyxJQUFJLENBQUNDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCQyxXQUFXLEdBQUdGLEtBQUssQ0FBQ0csYUFBYSxDQUFDLENBQW1CO1FBQ3JEQyxxQkFBcUIsR0FBRyxJQUFJLENBQUNILE9BQU8sQ0FBQyxDQUFDLENBQUNJLGlCQUFpQixDQUFDLFVBQVUsQ0FBeUI7UUFDNUZDLDBCQUEwQixHQUFHRixxQkFBcUIsQ0FBQ0csV0FBVyxDQUFDLDJCQUEyQixDQUFDO01BQzVGLE1BQU1DLGFBQWEsR0FBR0MsV0FBVyxDQUFDQyxlQUFlLENBQUNWLEtBQUssQ0FBQztNQUN4RCxNQUFNVyxVQUFVLEdBQUdILGFBQWEsQ0FBQ0ksUUFBUSxDQUFDLENBQUMsQ0FBQ0MsWUFBWSxDQUFDLENBQUM7TUFDMUQsTUFBTUMsWUFBWSxHQUFHZCxLQUFLLENBQUNLLGlCQUFpQixDQUFDLENBQUM7O01BRTlDO01BQ0EsTUFBTVUsZ0JBQWdCLEdBQUdoQixXQUFXLEVBQUVpQixlQUFlLEdBQUdGLFlBQVksRUFBRUcsT0FBTyxDQUFDLENBQUMsS0FBS2xCLFdBQVcsRUFBRWlCLGVBQWUsR0FBRyxJQUFJO01BQ3ZILElBQUlWLDBCQUEwQixFQUFFWSxJQUFJLElBQUlILGdCQUFnQixJQUFJRCxZQUFZLEVBQUU7UUFDekUsTUFBTUssU0FBUyxHQUFHUixVQUFVLENBQUNTLFdBQVcsQ0FBQ04sWUFBWSxDQUFDRyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLElBQUlJLGNBQWMsR0FBR1AsWUFBWSxDQUFDUSxTQUFTLENBQUMsQ0FBQztRQUM3Q0QsY0FBYyxHQUFHbkIsV0FBVyxDQUFDcUIsc0JBQXNCLENBQUNDLHlCQUF5QixDQUFDVixZQUFZLEVBQUVBLFlBQVksQ0FBQ1EsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNySCxNQUFNRyxnQkFBZ0IsR0FBR3ZCLFdBQVcsQ0FBQ3FCLHNCQUFzQixDQUFDRyxtQkFBbUIsQ0FBQ0wsY0FBYyxFQUFFRixTQUFTLENBQUM7VUFDekdRLFNBQVMsR0FBR3pCLFdBQVcsQ0FBQ3FCLHNCQUFzQixDQUFDSyxtQ0FBbUMsQ0FBQ0gsZ0JBQWdCLEVBQUVYLFlBQVksQ0FBQztVQUNsSGUsOEJBQThCLEdBQUdGLFNBQVMsQ0FBQ0cseUJBQXlCO1VBQ3BFO1VBQ0FDLE9BQU8sR0FBR3RCLFdBQVcsQ0FBQ3VCLGdDQUFnQyxDQUNyRCxJQUFJQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQ3RCTixTQUFTLENBQUNPLGtCQUFrQixFQUM1QmxDLEtBQ0QsQ0FBQztVQUNEbUMsMEJBQTBCLEdBQUdwQyxXQUFXLEVBQUUrQix5QkFBeUI7UUFDcEUsTUFBTU0sMEJBQTBCLEdBQUdMLE9BQU8sQ0FBQ00sNkJBQTZCLENBQUMsQ0FBQztRQUMxRUQsMEJBQTBCLENBQUNFLE9BQU8sQ0FBQyxVQUFVQyxhQUFxQixFQUFFO1VBQ25FLElBQUksQ0FBQ3pDLGlCQUFpQixDQUFDMEMsZUFBZSxDQUFDRCxhQUFhLENBQUMsRUFBRTtZQUN0RHpDLGlCQUFpQixDQUFDMkMsbUJBQW1CLENBQUNGLGFBQWEsRUFBRVIsT0FBTyxDQUFDUyxlQUFlLENBQUNELGFBQWEsQ0FBRSxDQUFDO1VBQzlGLENBQUMsTUFBTTtZQUNOO1lBQ0E7WUFDQTtZQUNBO1lBQ0EsSUFBSUosMEJBQTBCLElBQUlJLGFBQWEsSUFBSUosMEJBQTBCLEVBQUU7Y0FDOUVyQyxpQkFBaUIsQ0FBQzJDLG1CQUFtQixDQUNwQ04sMEJBQTBCLENBQUNJLGFBQWEsQ0FBQyxFQUN6Q3pDLGlCQUFpQixDQUFDMEMsZUFBZSxDQUFDRCxhQUFhLENBQ2hELENBQUM7WUFDRjtZQUNBO1lBQ0EsSUFBSUEsYUFBYSxJQUFJViw4QkFBOEIsRUFBRTtjQUNwRC9CLGlCQUFpQixDQUFDMkMsbUJBQW1CLENBQ3BDWiw4QkFBOEIsQ0FBQ1UsYUFBYSxDQUFDLEVBQzdDUixPQUFPLENBQUNTLGVBQWUsQ0FBQ0QsYUFBYSxDQUN0QyxDQUFDO1lBQ0Y7VUFDRDtRQUNELENBQUMsQ0FBQztNQUNIO01BQ0E7TUFDQSxPQUFPeEMsV0FBVyxFQUFFK0IseUJBQXlCO01BQzdDLE9BQU8vQixXQUFXLEVBQUUyQyxXQUFXO01BQy9CdEMscUJBQXFCLENBQUN1QyxXQUFXLENBQUMsMkJBQTJCLEVBQUU7UUFBRXpCLElBQUksRUFBRTtNQUFLLENBQUMsQ0FBQztJQUMvRTtFQUNELENBQUM7RUFBQyxPQUVhdEIsNkJBQTZCO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -3,7 +3,6 @@ import type IntentBasedNavigation from "sap/fe/core/controllerextensions/IntentB
3
3
  import type { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
4
4
  import type PageController from "sap/fe/core/PageController";
5
5
  import SelectionVariant from "sap/fe/navigation/SelectionVariant";
6
- import type Context from "sap/ui/model/Context";
7
6
 
8
7
  const IntentBasedNavigationOverride = {
9
8
  adaptNavigationContext: function (
@@ -17,10 +16,11 @@ const IntentBasedNavigationOverride = {
17
16
  oExternalNavigationContext = oInternalModelContext.getProperty("externalNavigationContext");
18
17
  const oAppComponent = CommonUtils.getAppComponent(oView);
19
18
  const oMetaModel = oAppComponent.getModel().getMetaModel();
20
- const oPageContext = oView.getBindingContext() as Context;
19
+ const oPageContext = oView.getBindingContext();
20
+
21
21
  //If the link context is same as page context merging of context should not happen
22
- const mergeLinkContext = oTargetInfo?.linkContextPath ? oPageContext.getPath() !== oTargetInfo?.linkContextPath : true;
23
- if (oExternalNavigationContext?.page && mergeLinkContext) {
22
+ const mergeLinkContext = oTargetInfo?.linkContextPath ? oPageContext?.getPath() !== oTargetInfo?.linkContextPath : true;
23
+ if (oExternalNavigationContext?.page && mergeLinkContext && oPageContext) {
24
24
  const sMetaPath = oMetaModel.getMetaPath(oPageContext.getPath());
25
25
  let pageAttributes = oPageContext.getObject();
26
26
  pageAttributes = oController._intentBasedNavigation.processSemanticAttributes(oPageContext, oPageContext.getObject());
@@ -14,7 +14,11 @@ sap.ui.define(["sap/fe/core/CommonUtils"], function (CommonUtils) {
14
14
  const boundContextMessages = [];
15
15
  transitionMessages?.forEach(message => {
16
16
  if (message.getTargets().length === 1 && message.getTargets()[0] === context?.getPath() && message.getPersistent() === true) {
17
- boundContextMessages.push(message);
17
+ // Do not filter out ETag messages (412 with concurrent modification) as they are critical for user awareness
18
+ const technicalDetails = message.getTechnicalDetails();
19
+ if (!(technicalDetails?.httpStatus === 412 && technicalDetails?.isConcurrentModification)) {
20
+ boundContextMessages.push(message);
21
+ }
18
22
  }
19
23
  });
20
24
  if (boundContextMessages.length === 1) {
@@ -27,4 +31,4 @@ sap.ui.define(["sap/fe/core/CommonUtils"], function (CommonUtils) {
27
31
  };
28
32
  return MessageHandlerExtension;
29
33
  }, false);
30
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNZXNzYWdlSGFuZGxlckV4dGVuc2lvbiIsImdldFNob3dCb3VuZE1lc3NhZ2VzSW5NZXNzYWdlRGlhbG9nIiwiQ29tbW9uVXRpbHMiLCJnZXRJc0VkaXRhYmxlIiwiYmFzZSIsImdldFZpZXciLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldFByb3BlcnR5IiwiZmlsdGVyQ29udGV4dEJvdW5kTWVzc2FnZXMiLCJ0cmFuc2l0aW9uTWVzc2FnZXMiLCJjb250ZXh0IiwiYm91bmRDb250ZXh0TWVzc2FnZXMiLCJmb3JFYWNoIiwibWVzc2FnZSIsImdldFRhcmdldHMiLCJsZW5ndGgiLCJnZXRQYXRoIiwiZ2V0UGVyc2lzdGVudCIsInB1c2giLCJmaWx0ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk1lc3NhZ2VIYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2VIYW5kbGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9NZXNzYWdlSGFuZGxlclwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5cbmNvbnN0IE1lc3NhZ2VIYW5kbGVyRXh0ZW5zaW9uID0ge1xuXHRnZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZzogZnVuY3Rpb24gKHRoaXM6IE1lc3NhZ2VIYW5kbGVyKTogYm9vbGVhbiB7XG5cdFx0Ly8gaW4gY2FzZSBvZiBlZGl0IG1vZGUgd2Ugc2hvdyB0aGUgbWVzc2FnZXMgaW4gdGhlIG1lc3NhZ2UgcG9wb3ZlclxuXHRcdHJldHVybiAoXG5cdFx0XHQhQ29tbW9uVXRpbHMuZ2V0SXNFZGl0YWJsZSh0aGlzLmJhc2UpIHx8XG5cdFx0XHQodGhpcy5iYXNlLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0KS5nZXRQcm9wZXJ0eShcImlzT3BlcmF0aW9uRGlhbG9nT3BlblwiKSB8fFxuXHRcdFx0KHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCkuZ2V0UHJvcGVydHkoXCJnZXRCb3VuZE1lc3NhZ2VzRm9yTWFzc0VkaXRcIilcblx0XHQpO1xuXHR9LFxuXHRmaWx0ZXJDb250ZXh0Qm91bmRNZXNzYWdlcyh0cmFuc2l0aW9uTWVzc2FnZXM6IE1lc3NhZ2VbXSwgY29udGV4dDogQ29udGV4dCk6IE1lc3NhZ2VbXSB7XG5cdFx0Y29uc3QgYm91bmRDb250ZXh0TWVzc2FnZXM6IE1lc3NhZ2VbXSA9IFtdO1xuXHRcdHRyYW5zaXRpb25NZXNzYWdlcz8uZm9yRWFjaCgobWVzc2FnZTogTWVzc2FnZSkgPT4ge1xuXHRcdFx0aWYgKG1lc3NhZ2UuZ2V0VGFyZ2V0cygpLmxlbmd0aCA9PT0gMSAmJiBtZXNzYWdlLmdldFRhcmdldHMoKVswXSA9PT0gY29udGV4dD8uZ2V0UGF0aCgpICYmIG1lc3NhZ2UuZ2V0UGVyc2lzdGVudCgpID09PSB0cnVlKSB7XG5cdFx0XHRcdGJvdW5kQ29udGV4dE1lc3NhZ2VzLnB1c2gobWVzc2FnZSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0aWYgKGJvdW5kQ29udGV4dE1lc3NhZ2VzLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0dHJhbnNpdGlvbk1lc3NhZ2VzID0gdHJhbnNpdGlvbk1lc3NhZ2VzPy5maWx0ZXIoZnVuY3Rpb24gKG1lc3NhZ2U6IE1lc3NhZ2UpIHtcblx0XHRcdFx0cmV0dXJuIG1lc3NhZ2UgIT09IGJvdW5kQ29udGV4dE1lc3NhZ2VzWzBdO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiB0cmFuc2l0aW9uTWVzc2FnZXM7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1lc3NhZ2VIYW5kbGVyRXh0ZW5zaW9uO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0VBTUEsTUFBTUEsdUJBQXVCLEdBQUc7SUFDL0JDLG1DQUFtQyxFQUFFLFNBQUFBLENBQUEsRUFBeUM7TUFDN0U7TUFDQSxPQUNDLENBQUNDLFdBQVcsQ0FBQ0MsYUFBYSxDQUFDLElBQUksQ0FBQ0MsSUFBSSxDQUFDLElBQ3BDLElBQUksQ0FBQ0EsSUFBSSxDQUFDQyxPQUFPLENBQUMsQ0FBQyxDQUFDQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBMEJDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxJQUMvRyxJQUFJLENBQUNILElBQUksQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQ0MsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQTBCQyxXQUFXLENBQUMsNkJBQTZCLENBQUM7SUFFeEgsQ0FBQztJQUNEQywwQkFBMEJBLENBQUNDLGtCQUE2QixFQUFFQyxPQUFnQixFQUFhO01BQ3RGLE1BQU1DLG9CQUErQixHQUFHLEVBQUU7TUFDMUNGLGtCQUFrQixFQUFFRyxPQUFPLENBQUVDLE9BQWdCLElBQUs7UUFDakQsSUFBSUEsT0FBTyxDQUFDQyxVQUFVLENBQUMsQ0FBQyxDQUFDQyxNQUFNLEtBQUssQ0FBQyxJQUFJRixPQUFPLENBQUNDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUtKLE9BQU8sRUFBRU0sT0FBTyxDQUFDLENBQUMsSUFBSUgsT0FBTyxDQUFDSSxhQUFhLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTtVQUM1SE4sb0JBQW9CLENBQUNPLElBQUksQ0FBQ0wsT0FBTyxDQUFDO1FBQ25DO01BQ0QsQ0FBQyxDQUFDO01BQ0YsSUFBSUYsb0JBQW9CLENBQUNJLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDdENOLGtCQUFrQixHQUFHQSxrQkFBa0IsRUFBRVUsTUFBTSxDQUFDLFVBQVVOLE9BQWdCLEVBQUU7VUFDM0UsT0FBT0EsT0FBTyxLQUFLRixvQkFBb0IsQ0FBQyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDO01BQ0g7TUFDQSxPQUFPRixrQkFBa0I7SUFDMUI7RUFDRCxDQUFDO0VBQUMsT0FFYVQsdUJBQXVCO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
34
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNZXNzYWdlSGFuZGxlckV4dGVuc2lvbiIsImdldFNob3dCb3VuZE1lc3NhZ2VzSW5NZXNzYWdlRGlhbG9nIiwiQ29tbW9uVXRpbHMiLCJnZXRJc0VkaXRhYmxlIiwiYmFzZSIsImdldFZpZXciLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldFByb3BlcnR5IiwiZmlsdGVyQ29udGV4dEJvdW5kTWVzc2FnZXMiLCJ0cmFuc2l0aW9uTWVzc2FnZXMiLCJjb250ZXh0IiwiYm91bmRDb250ZXh0TWVzc2FnZXMiLCJmb3JFYWNoIiwibWVzc2FnZSIsImdldFRhcmdldHMiLCJsZW5ndGgiLCJnZXRQYXRoIiwiZ2V0UGVyc2lzdGVudCIsInRlY2huaWNhbERldGFpbHMiLCJnZXRUZWNobmljYWxEZXRhaWxzIiwiaHR0cFN0YXR1cyIsImlzQ29uY3VycmVudE1vZGlmaWNhdGlvbiIsInB1c2giLCJmaWx0ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk1lc3NhZ2VIYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2VIYW5kbGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9NZXNzYWdlSGFuZGxlclwiO1xuaW1wb3J0IHR5cGUgeyBNZXNzYWdlVGVjaG5pY2FsRGV0YWlscyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9tZXNzYWdlSGFuZGxlci9tZXNzYWdlSGFuZGxpbmdcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgTWVzc2FnZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuXG5jb25zdCBNZXNzYWdlSGFuZGxlckV4dGVuc2lvbiA9IHtcblx0Z2V0U2hvd0JvdW5kTWVzc2FnZXNJbk1lc3NhZ2VEaWFsb2c6IGZ1bmN0aW9uICh0aGlzOiBNZXNzYWdlSGFuZGxlcik6IGJvb2xlYW4ge1xuXHRcdC8vIGluIGNhc2Ugb2YgZWRpdCBtb2RlIHdlIHNob3cgdGhlIG1lc3NhZ2VzIGluIHRoZSBtZXNzYWdlIHBvcG92ZXJcblx0XHRyZXR1cm4gKFxuXHRcdFx0IUNvbW1vblV0aWxzLmdldElzRWRpdGFibGUodGhpcy5iYXNlKSB8fFxuXHRcdFx0KHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCkuZ2V0UHJvcGVydHkoXCJpc09wZXJhdGlvbkRpYWxvZ09wZW5cIikgfHxcblx0XHRcdCh0aGlzLmJhc2UuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQpLmdldFByb3BlcnR5KFwiZ2V0Qm91bmRNZXNzYWdlc0Zvck1hc3NFZGl0XCIpXG5cdFx0KTtcblx0fSxcblx0ZmlsdGVyQ29udGV4dEJvdW5kTWVzc2FnZXModHJhbnNpdGlvbk1lc3NhZ2VzOiBNZXNzYWdlW10sIGNvbnRleHQ6IENvbnRleHQpOiBNZXNzYWdlW10ge1xuXHRcdGNvbnN0IGJvdW5kQ29udGV4dE1lc3NhZ2VzOiBNZXNzYWdlW10gPSBbXTtcblx0XHR0cmFuc2l0aW9uTWVzc2FnZXM/LmZvckVhY2goKG1lc3NhZ2U6IE1lc3NhZ2UpID0+IHtcblx0XHRcdGlmIChtZXNzYWdlLmdldFRhcmdldHMoKS5sZW5ndGggPT09IDEgJiYgbWVzc2FnZS5nZXRUYXJnZXRzKClbMF0gPT09IGNvbnRleHQ/LmdldFBhdGgoKSAmJiBtZXNzYWdlLmdldFBlcnNpc3RlbnQoKSA9PT0gdHJ1ZSkge1xuXHRcdFx0XHQvLyBEbyBub3QgZmlsdGVyIG91dCBFVGFnIG1lc3NhZ2VzICg0MTIgd2l0aCBjb25jdXJyZW50IG1vZGlmaWNhdGlvbikgYXMgdGhleSBhcmUgY3JpdGljYWwgZm9yIHVzZXIgYXdhcmVuZXNzXG5cdFx0XHRcdGNvbnN0IHRlY2huaWNhbERldGFpbHMgPSBtZXNzYWdlLmdldFRlY2huaWNhbERldGFpbHMoKSBhcyBNZXNzYWdlVGVjaG5pY2FsRGV0YWlscztcblx0XHRcdFx0aWYgKCEodGVjaG5pY2FsRGV0YWlscz8uaHR0cFN0YXR1cyA9PT0gNDEyICYmIHRlY2huaWNhbERldGFpbHM/LmlzQ29uY3VycmVudE1vZGlmaWNhdGlvbikpIHtcblx0XHRcdFx0XHRib3VuZENvbnRleHRNZXNzYWdlcy5wdXNoKG1lc3NhZ2UpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0aWYgKGJvdW5kQ29udGV4dE1lc3NhZ2VzLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0dHJhbnNpdGlvbk1lc3NhZ2VzID0gdHJhbnNpdGlvbk1lc3NhZ2VzPy5maWx0ZXIoZnVuY3Rpb24gKG1lc3NhZ2U6IE1lc3NhZ2UpIHtcblx0XHRcdFx0cmV0dXJuIG1lc3NhZ2UgIT09IGJvdW5kQ29udGV4dE1lc3NhZ2VzWzBdO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiB0cmFuc2l0aW9uTWVzc2FnZXM7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1lc3NhZ2VIYW5kbGVyRXh0ZW5zaW9uO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0VBT0EsTUFBTUEsdUJBQXVCLEdBQUc7SUFDL0JDLG1DQUFtQyxFQUFFLFNBQUFBLENBQUEsRUFBeUM7TUFDN0U7TUFDQSxPQUNDLENBQUNDLFdBQVcsQ0FBQ0MsYUFBYSxDQUFDLElBQUksQ0FBQ0MsSUFBSSxDQUFDLElBQ3BDLElBQUksQ0FBQ0EsSUFBSSxDQUFDQyxPQUFPLENBQUMsQ0FBQyxDQUFDQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBMEJDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxJQUMvRyxJQUFJLENBQUNILElBQUksQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQ0MsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQTBCQyxXQUFXLENBQUMsNkJBQTZCLENBQUM7SUFFeEgsQ0FBQztJQUNEQywwQkFBMEJBLENBQUNDLGtCQUE2QixFQUFFQyxPQUFnQixFQUFhO01BQ3RGLE1BQU1DLG9CQUErQixHQUFHLEVBQUU7TUFDMUNGLGtCQUFrQixFQUFFRyxPQUFPLENBQUVDLE9BQWdCLElBQUs7UUFDakQsSUFBSUEsT0FBTyxDQUFDQyxVQUFVLENBQUMsQ0FBQyxDQUFDQyxNQUFNLEtBQUssQ0FBQyxJQUFJRixPQUFPLENBQUNDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUtKLE9BQU8sRUFBRU0sT0FBTyxDQUFDLENBQUMsSUFBSUgsT0FBTyxDQUFDSSxhQUFhLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTtVQUM1SDtVQUNBLE1BQU1DLGdCQUFnQixHQUFHTCxPQUFPLENBQUNNLG1CQUFtQixDQUFDLENBQTRCO1VBQ2pGLElBQUksRUFBRUQsZ0JBQWdCLEVBQUVFLFVBQVUsS0FBSyxHQUFHLElBQUlGLGdCQUFnQixFQUFFRyx3QkFBd0IsQ0FBQyxFQUFFO1lBQzFGVixvQkFBb0IsQ0FBQ1csSUFBSSxDQUFDVCxPQUFPLENBQUM7VUFDbkM7UUFDRDtNQUNELENBQUMsQ0FBQztNQUNGLElBQUlGLG9CQUFvQixDQUFDSSxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3RDTixrQkFBa0IsR0FBR0Esa0JBQWtCLEVBQUVjLE1BQU0sQ0FBQyxVQUFVVixPQUFnQixFQUFFO1VBQzNFLE9BQU9BLE9BQU8sS0FBS0Ysb0JBQW9CLENBQUMsQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQztNQUNIO01BQ0EsT0FBT0Ysa0JBQWtCO0lBQzFCO0VBQ0QsQ0FBQztFQUFDLE9BRWFULHVCQUF1QjtBQUFBIiwiaWdub3JlTGlzdCI6W119
@@ -1,5 +1,6 @@
1
1
  import CommonUtils from "sap/fe/core/CommonUtils";
2
2
  import type MessageHandler from "sap/fe/core/controllerextensions/MessageHandler";
3
+ import type { MessageTechnicalDetails } from "sap/fe/core/controllerextensions/messageHandler/messageHandling";
3
4
  import type { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
4
5
  import type Message from "sap/ui/core/message/Message";
5
6
  import type Context from "sap/ui/model/Context";
@@ -17,7 +18,11 @@ const MessageHandlerExtension = {
17
18
  const boundContextMessages: Message[] = [];
18
19
  transitionMessages?.forEach((message: Message) => {
19
20
  if (message.getTargets().length === 1 && message.getTargets()[0] === context?.getPath() && message.getPersistent() === true) {
20
- boundContextMessages.push(message);
21
+ // Do not filter out ETag messages (412 with concurrent modification) as they are critical for user awareness
22
+ const technicalDetails = message.getTechnicalDetails() as MessageTechnicalDetails;
23
+ if (!(technicalDetails?.httpStatus === 412 && technicalDetails?.isConcurrentModification)) {
24
+ boundContextMessages.push(message);
25
+ }
21
26
  }
22
27
  });
23
28
  if (boundContextMessages.length === 1) {