@sapui5/sap.fe.macros 1.140.0 → 1.141.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Chart.js +53 -2
- package/src/sap/fe/macros/Chart.tsx +55 -0
- package/src/sap/fe/macros/CollaborativeDraftHandler.js +230 -0
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +218 -0
- package/src/sap/fe/macros/CommonHelper.js +59 -15
- package/src/sap/fe/macros/CommonHelper.ts +65 -14
- package/src/sap/fe/macros/ConditionalSwitch.js +174 -0
- package/src/sap/fe/macros/ConditionalSwitch.tsx +141 -0
- package/src/sap/fe/macros/ConditionalSwitchProperty.js +78 -0
- package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +62 -0
- package/src/sap/fe/macros/Field.js +14 -10
- package/src/sap/fe/macros/Field.ts +15 -12
- package/src/sap/fe/macros/MacroAPI.js +9 -4
- package/src/sap/fe/macros/MacroAPI.ts +9 -4
- package/src/sap/fe/macros/MultiValueField.js +10 -5
- package/src/sap/fe/macros/MultiValueField.tsx +7 -1
- package/src/sap/fe/macros/Page.js +5 -7
- package/src/sap/fe/macros/Page.tsx +4 -6
- package/src/sap/fe/macros/Paginator.js +9 -4
- package/src/sap/fe/macros/Paginator.tsx +12 -3
- package/src/sap/fe/macros/RichTextEditor.js +3 -2
- package/src/sap/fe/macros/RichTextEditor.tsx +2 -1
- package/src/sap/fe/macros/Status.js +38 -13
- package/src/sap/fe/macros/Status.tsx +26 -6
- package/src/sap/fe/macros/ai/EasyFillDialog.js +11 -17
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +11 -16
- package/src/sap/fe/macros/ai/EasyFilterBar.js +195 -55
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +234 -57
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +76 -33
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +89 -40
- package/src/sap/fe/macros/chart/Chart.js +2 -2
- package/src/sap/fe/macros/chart/Chart.tsx +1 -1
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +4 -2
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +4 -1
- package/src/sap/fe/macros/contentSwitcher/ContentSwitcher.js +9 -2
- package/src/sap/fe/macros/contentSwitcher/ContentSwitcher.tsx +8 -0
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +5 -1
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +4 -0
- package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.js +2 -2
- package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.ts +1 -1
- package/src/sap/fe/macros/controls/FilterBar.js +14 -5
- package/src/sap/fe/macros/controls/FilterBar.ts +3 -0
- package/src/sap/fe/macros/controls/RadioButtons.js +61 -38
- package/src/sap/fe/macros/controls/RadioButtons.tsx +39 -18
- package/src/sap/fe/macros/controls/Section.js +4 -3
- package/src/sap/fe/macros/controls/Section.ts +3 -2
- package/src/sap/fe/macros/controls/section/SubSection.js +63 -8
- package/src/sap/fe/macros/controls/section/SubSection.ts +67 -1
- package/src/sap/fe/macros/field/Field.js +2 -2
- package/src/sap/fe/macros/field/Field.tsx +1 -1
- package/src/sap/fe/macros/field/FieldFormatOptions.js +25 -2
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +13 -0
- package/src/sap/fe/macros/field/FieldHelper.js +2 -2
- package/src/sap/fe/macros/field/FieldHelper.ts +1 -4
- package/src/sap/fe/macros/field/FieldTemplating.js +3 -3
- package/src/sap/fe/macros/field/FieldTemplating.ts +4 -2
- package/src/sap/fe/macros/filter/FilterUtils.js +232 -2
- package/src/sap/fe/macros/filter/FilterUtils.ts +290 -4
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +5 -3
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +4 -2
- package/src/sap/fe/macros/filterBar/FilterBar.js +2 -2
- package/src/sap/fe/macros/filterBar/FilterBar.tsx +1 -1
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +63 -27
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +49 -3
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +5 -3
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +7 -2
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +6 -1
- package/src/sap/fe/macros/form/Form.block.js +7 -8
- package/src/sap/fe/macros/form/Form.block.ts +4 -6
- package/src/sap/fe/macros/form/FormContainer.block.js +555 -4
- package/src/sap/fe/macros/form/FormContainer.block.ts +665 -6
- package/src/sap/fe/macros/form/FormContainer.fragment.xml +1 -0
- package/src/sap/fe/macros/form/FormDelegate.js +6 -9
- package/src/sap/fe/macros/form/FormDelegate.ts +5 -8
- package/src/sap/fe/macros/internal/DataPoint.js +3 -2
- package/src/sap/fe/macros/internal/DataPoint.tsx +10 -1
- package/src/sap/fe/macros/internal/FilterField.block.js +16 -8
- package/src/sap/fe/macros/internal/FilterField.block.ts +11 -7
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +7 -1
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +8 -0
- package/src/sap/fe/macros/internal/field/EditStyle.js +21 -4
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +18 -4
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +3 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +4 -1
- package/src/sap/fe/macros/internal/filterField/FilterFieldTemplate.fragment.xml +1 -0
- package/src/sap/fe/macros/internal/helpers/ActionHelper.js +36 -5
- package/src/sap/fe/macros/internal/helpers/ActionHelper.ts +34 -4
- package/src/sap/fe/macros/library.js +1 -1
- package/src/sap/fe/macros/mdc/adapter/StateFilterToSelectionVariant.js +2 -1
- package/src/sap/fe/macros/mdc/adapter/StateFilterToSelectionVariant.ts +1 -0
- package/src/sap/fe/macros/messagebundle.properties +20 -2
- package/src/sap/fe/macros/messagebundle_ar.properties +1 -1
- package/src/sap/fe/macros/messagebundle_bg.properties +1 -1
- package/src/sap/fe/macros/messagebundle_ca.properties +1 -1
- package/src/sap/fe/macros/messagebundle_cnr.properties +1 -1
- package/src/sap/fe/macros/messagebundle_cs.properties +1 -1
- package/src/sap/fe/macros/messagebundle_cy.properties +1 -1
- package/src/sap/fe/macros/messagebundle_da.properties +1 -1
- package/src/sap/fe/macros/messagebundle_de.properties +4 -4
- package/src/sap/fe/macros/messagebundle_el.properties +1 -1
- package/src/sap/fe/macros/messagebundle_en.properties +1 -1
- package/src/sap/fe/macros/messagebundle_en_GB.properties +1 -1
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +1 -1
- package/src/sap/fe/macros/messagebundle_es.properties +2 -2
- package/src/sap/fe/macros/messagebundle_es_MX.properties +1 -1
- package/src/sap/fe/macros/messagebundle_et.properties +1 -1
- package/src/sap/fe/macros/messagebundle_fi.properties +1 -1
- package/src/sap/fe/macros/messagebundle_fr.properties +1 -1
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +1 -1
- package/src/sap/fe/macros/messagebundle_hi.properties +1 -1
- package/src/sap/fe/macros/messagebundle_hr.properties +1 -1
- package/src/sap/fe/macros/messagebundle_hu.properties +1 -1
- package/src/sap/fe/macros/messagebundle_id.properties +5 -5
- package/src/sap/fe/macros/messagebundle_it.properties +1 -1
- package/src/sap/fe/macros/messagebundle_iw.properties +1 -1
- package/src/sap/fe/macros/messagebundle_ja.properties +5 -5
- package/src/sap/fe/macros/messagebundle_kk.properties +1 -1
- package/src/sap/fe/macros/messagebundle_ko.properties +2 -2
- package/src/sap/fe/macros/messagebundle_lt.properties +2 -2
- package/src/sap/fe/macros/messagebundle_lv.properties +1 -1
- package/src/sap/fe/macros/messagebundle_mk.properties +2 -2
- package/src/sap/fe/macros/messagebundle_ms.properties +1 -1
- package/src/sap/fe/macros/messagebundle_nl.properties +1 -1
- package/src/sap/fe/macros/messagebundle_no.properties +1 -1
- package/src/sap/fe/macros/messagebundle_pl.properties +1 -1
- package/src/sap/fe/macros/messagebundle_pt.properties +1 -1
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +1 -1
- package/src/sap/fe/macros/messagebundle_ro.properties +1 -1
- package/src/sap/fe/macros/messagebundle_ru.properties +1 -1
- package/src/sap/fe/macros/messagebundle_sh.properties +1 -1
- package/src/sap/fe/macros/messagebundle_sk.properties +1 -1
- package/src/sap/fe/macros/messagebundle_sl.properties +1 -1
- package/src/sap/fe/macros/messagebundle_sr.properties +1 -1
- package/src/sap/fe/macros/messagebundle_sv.properties +1 -1
- package/src/sap/fe/macros/messagebundle_th.properties +1 -1
- package/src/sap/fe/macros/messagebundle_tr.properties +1 -1
- package/src/sap/fe/macros/messagebundle_uk.properties +1 -1
- package/src/sap/fe/macros/messagebundle_vi.properties +2 -2
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +1 -1
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +1 -1
- package/src/sap/fe/macros/messages/MessageButton.js +1 -1
- package/src/sap/fe/macros/messages/MessageButton.ts +2 -2
- package/src/sap/fe/macros/messages/MessagePopover.js +3 -1
- package/src/sap/fe/macros/messages/MessagePopover.ts +2 -0
- package/src/sap/fe/macros/microchart/MicroChart.js +2 -2
- package/src/sap/fe/macros/microchart/MicroChart.tsx +1 -1
- package/src/sap/fe/macros/microchart/MicroChartHelper.js +2 -2
- package/src/sap/fe/macros/microchart/MicroChartHelper.tsx +1 -1
- package/src/sap/fe/macros/table/ActionsTemplating.js +4 -8
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +5 -8
- package/src/sap/fe/macros/table/BasicSearch.js +1 -1
- package/src/sap/fe/macros/table/BasicSearch.ts +2 -1
- package/src/sap/fe/macros/table/Column.js +14 -2
- package/src/sap/fe/macros/table/Column.ts +7 -0
- package/src/sap/fe/macros/table/ColumnExportSettings.js +83 -15
- package/src/sap/fe/macros/table/ColumnExportSettings.ts +44 -0
- package/src/sap/fe/macros/table/ColumnOverride.js +14 -2
- package/src/sap/fe/macros/table/ColumnOverride.ts +7 -0
- package/src/sap/fe/macros/table/MdcTableTemplate.js +5 -5
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +15 -9
- package/src/sap/fe/macros/table/QuickFilterSelector.js +12 -3
- package/src/sap/fe/macros/table/QuickFilterSelector.tsx +15 -2
- package/src/sap/fe/macros/table/Table.block.js +188 -147
- package/src/sap/fe/macros/table/Table.block.tsx +41 -11
- package/src/sap/fe/macros/table/Table.js +16 -10
- package/src/sap/fe/macros/table/Table.tsx +16 -10
- package/src/sap/fe/macros/table/TableAPI.js +224 -184
- package/src/sap/fe/macros/table/TableAPI.ts +63 -19
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +6 -6
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +5 -4
- package/src/sap/fe/macros/table/TableHelper.js +2 -2
- package/src/sap/fe/macros/table/TableHelper.ts +1 -1
- package/src/sap/fe/macros/table/TreeTable.js +16 -10
- package/src/sap/fe/macros/table/TreeTable.tsx +16 -10
- package/src/sap/fe/macros/table/Utils.js +3 -2
- package/src/sap/fe/macros/table/Utils.ts +7 -2
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +69 -33
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +75 -32
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +10 -10
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +11 -9
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +14 -12
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +11 -10
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +34 -4
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +45 -2
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +55 -12
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +71 -9
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +53 -2
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +55 -0
- package/src/sap/fe/macros/table/mixin/TableExport.js +22 -3
- package/src/sap/fe/macros/table/mixin/TableExport.ts +25 -4
- package/src/sap/fe/macros/table/mixin/TableSharing.js +3 -2
- package/src/sap/fe/macros/table/mixin/TableSharing.ts +4 -3
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +27 -10
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +31 -13
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +5 -3
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +3 -1
|
@@ -144,8 +144,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
144
144
|
}
|
|
145
145
|
if (entityType !== undefined) {
|
|
146
146
|
for (const entityProperty of entityType.entityProperties) {
|
|
147
|
-
if (!isImmutable(entityProperty) && !isComputed(entityProperty) && entityProperty.annotations.UI?.Hidden?.valueOf() !== true) {
|
|
148
|
-
// If not immutable, computed or hidden add to the field mapping
|
|
147
|
+
if (!isImmutable(entityProperty) && !isComputed(entityProperty) && entityProperty.annotations.UI?.Hidden?.valueOf() !== true && !entityProperty.targetType) {
|
|
148
|
+
// If not immutable, computed or hidden, or a complex type add to the field mapping
|
|
149
149
|
fieldMapping[entityProperty.name] = {
|
|
150
150
|
description: getLabel(entityProperty) ?? entityProperty.name,
|
|
151
151
|
dataType: entityProperty.type
|
|
@@ -274,7 +274,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
274
274
|
FESRHelper.setSemanticStepname(thumbDownButton, "press", "fe4:ef:thumbDown");
|
|
275
275
|
const aiNoticeText = _jsxs(HBox, {
|
|
276
276
|
alignItems: "Center",
|
|
277
|
-
visible: this.bindState("
|
|
277
|
+
visible: equal(this.bindState("stateType"), "HasEntries"),
|
|
278
278
|
children: [_jsx(AILinkNotice, {}), _jsx(Text, {
|
|
279
279
|
text: this.getTranslatedText("C_EASYEDIT_AI_NOTICE_TEXT"),
|
|
280
280
|
class: "sapUiTinyMarginBegin"
|
|
@@ -331,20 +331,14 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
331
331
|
ref: $vBox,
|
|
332
332
|
children: {
|
|
333
333
|
items: [_jsxs(HBox, {
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
children: _jsx(Title, {
|
|
338
|
-
text: this.getTranslatedText("C_EASYEDIT_FILLED_FIELDS"),
|
|
339
|
-
visible: this.bindState("hasValues")
|
|
334
|
+
children: [{
|
|
335
|
+
layoutData: _jsx(FlexItemData, {
|
|
336
|
+
alignSelf: "End"
|
|
340
337
|
})
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
})
|
|
346
|
-
}, aiNoticeText]
|
|
347
|
-
}), ","]
|
|
338
|
+
}, aiNoticeText]
|
|
339
|
+
}), _jsx(Title, {
|
|
340
|
+
text: this.getTranslatedText("C_EASYEDIT_FILLED_FIELDS"),
|
|
341
|
+
visible: this.bindState("hasValues")
|
|
348
342
|
}), reviewAreaForm, _jsx(Title, {
|
|
349
343
|
text: this.getTranslatedText("C_EASYEDIT_INCORRECT_FIELDS"),
|
|
350
344
|
class: "sapUiSmallMarginTopBottom",
|
|
@@ -638,4 +632,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
638
632
|
_exports = EasyFillDialog;
|
|
639
633
|
return _exports;
|
|
640
634
|
}, false);
|
|
641
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQVhfTEVOR1RIIiwiRWFzeUZpbGxEaWFsb2ciLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImRlZmluZVJlZmVyZW5jZSIsIl9kZWMzIiwiX2RlYzQiLCJwcm9wZXJ0eSIsInR5cGUiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJpZE9yUHJvcHMiLCJwcm9wcyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwib25NZXRhZGF0YUF2YWlsYWJsZSIsIl9vd25lckNvbXBvbmVudCIsInN0YXRlIiwibmV3VmFsdWVzIiwiaGFzVmFsdWVzIiwiaGFzRXJyb3IiLCJzdGF0ZVR5cGUiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsIm9uQ29uZmlybSIsIl9lIiwibWFpblBhZ2VCaW5kaW5nQ29udGV4dCIsImdldFBhZ2VDb250cm9sbGVyIiwiZ2V0VmlldyIsImdldEJpbmRpbmdDb250ZXh0IiwiYWxsUHJvcHMiLCJfYmluZGluZ0NvbnRleHQiLCJnZXRPYmplY3QiLCJuZXdWYWx1ZXNLZXkiLCJzdGFydHNXaXRoIiwic2V0UHJvcGVydHkiLCJwdXNoIiwiYXBwbHlVcGRhdGVzRm9yQ2hhbmdlIiwiZ2V0UGF0aCIsIlByb21pc2UiLCJhbGwiLCJyZWZyZXNoIiwiZXJyIiwiTG9nIiwiZXJyb3IiLCJjbG9zZSIsInZpZXciLCJwcm9wZXJ0eVBhdGhGb3JVcGRhdGUiLCJtZXRhTW9kZWwiLCJnZXRNb2RlbCIsImdldE1ldGFNb2RlbCIsIm1ldGFDb250ZXh0IiwiZ2V0TWV0YUNvbnRleHQiLCJkYXRhTW9kZWxPYmplY3QiLCJNZXRhTW9kZWxDb252ZXJ0ZXIiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJ0YXJnZXRDb250ZXh0Iiwic2lkZUVmZmVjdHNQcm9taXNlcyIsInNpZGVFZmZlY3RzU2VydmljZSIsIkNvbGxhYm9yYXRpb25VdGlscyIsImdldEFwcENvbXBvbmVudCIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsInRhcmdldE1ldGFQYXRoIiwiZ2V0TWV0YVBhdGgiLCJyZWxhdGl2ZU1ldGFQYXRoRm9yVXBkYXRlIiwicmVwbGFjZSIsInNsaWNlIiwicmVxdWVzdFNpZGVFZmZlY3RzIiwiZmllbGRHcm91cElkcyIsImNvbXB1dGVGaWVsZEdyb3VwSWRzIiwidGFyZ2V0RW50aXR5VHlwZSIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInRhcmdldE9iamVjdCIsImxlbmd0aCIsInBhZ2VDb250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsInNpZGVFZmZlY3RzTWFwRm9yRmllbGRHcm91cCIsIl9zaWRlRWZmZWN0cyIsImdldFNpZGVFZmZlY3RzTWFwRm9yRmllbGRHcm91cHMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsInNpZGVFZmZlY3ROYW1lIiwic2lkZUVmZmVjdCIsInNpZGVFZmZlY3RzIiwiY29udGV4dCIsInVuZGVmaW5lZCIsIm9uQ2FuY2VsIiwib3BlbiIsIl9nZXRGaWVsZE1hcHBpbmciLCJkZWZpbml0aW9uUGFnZSIsImZpZWxkTWFwcGluZyIsInBhZ2VUYXJnZXQiLCJnZXRUYXJnZXQiLCJlbnRpdHlUeXBlIiwiX3R5cGUiLCJ0YXJnZXRUeXBlIiwiZW50aXR5UHJvcGVydHkiLCJlbnRpdHlQcm9wZXJ0aWVzIiwiaXNJbW11dGFibGUiLCJpc0NvbXB1dGVkIiwiYW5ub3RhdGlvbnMiLCJVSSIsIkhpZGRlbiIsInZhbHVlT2YiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJnZXRMYWJlbCIsImRhdGFUeXBlIiwiZ2VuZXJhdGVMaXN0QmluZGluZyIsInBhdGgiLCJtb2RlbCIsInRyYW5zaWVudExpc3RCaW5kaW5nIiwiYmluZExpc3QiLCIkJHVwZGF0ZUdyb3VwSWQiLCJyZWZyZXNoSW50ZXJuYWwiLCJvblRodW1iUHJlc3MiLCJ0aHVtYlVwQnV0dG9uIiwidGh1bWJEb3duQnV0dG9uIiwic2V0RW5hYmxlZCIsIk1lc3NhZ2VUb2FzdCIsInNob3ciLCJnZXRUcmFuc2xhdGVkVGV4dCIsImZvcm1hdFJlbWFpbmluZ0NoYXJhY3RlcnMiLCJ2YWx1ZSIsIm9uQ2xlYXJBbGwiLCJoYXNJbmNvcnJlY3RWYWx1ZXMiLCJlbnRlcmVkVGV4dCIsImN1cnJlbnRseUVudGVyZWRUZXh0IiwiaW5jb3JyZWN0VmFsdWVzIiwib25WYWxpZGF0ZUZpZWxkR3JvdXBzIiwiYWxsRmllbGRzIiwiJHJldmlld0FyZWEiLCJjdXJyZW50IiwiZ2V0Q29udHJvbHNCeUZpZWxkR3JvdXBJZCIsInNvbWUiLCJmaWVsZCIsImRhdGEiLCJnZXRWYWx1ZVN0YXRlIiwib25GaWVsZENoYW5nZSIsImV2IiwiZ2V0U291cmNlIiwicmVtb3ZlTWVzc2FnZSIsIm9uRWFzeUVkaXRQcmVzc2VkIiwibWV0YVBhdGgiLCJnZXRPd25lclBhZ2VEZWZpbml0aW9uIiwiZWFzeUZpbGxMaWJyYXJ5IiwiX191aTVfcmVxdWlyZV9hc3luYyIsIm9kYXRhTW9kZWwiLCJjcmVhdGUiLCJpc0J1c3kiLCJhaUNhbGxSZXN1bHQiLCJleHRyYWN0RmllbGRWYWx1ZXNGcm9tVGV4dCIsInN1Y2Nlc3MiLCJ1cGRhdGVkRmllbGRzIiwiZWRpdGFibGVGaWVsZHMiLCJnZXRFZGl0YWJsZUZpZWxkcyIsIiRzY3JvbGxDb250YWluZXIiLCJkZXN0cm95IiwicmV2aWV3QXJlYUZvcm0iLCJfanN4IiwiRm9ybSIsImVkaXRhYmxlIiwiY2xhc3MiLCJ2aXNpYmxlIiwiYmluZFN0YXRlIiwiY2hpbGRyZW4iLCJsYXlvdXQiLCJDb2x1bW5MYXlvdXQiLCJjb2x1bW5zTSIsImNvbHVtbnNMIiwiY29sdW1uc1hMIiwibGFiZWxDZWxsc0xhcmdlIiwiZW1wdHlDZWxsc0xhcmdlIiwiaW5jb3JyZWN0VmFsdWVzRm9ybSIsIndhcm5pbmdNZXNzYWdlIiwiTWVzc2FnZVN0cmlwIiwidGV4dCIsInNob3dJY29uIiwiVG9nZ2xlQnV0dG9uIiwiaWNvbiIsInRvb2x0aXAiLCJwcmVzcyIsIkZFU1JIZWxwZXIiLCJzZXRTZW1hbnRpY1N0ZXBuYW1lIiwiYWlOb3RpY2VUZXh0IiwiX2pzeHMiLCJIQm94IiwiYWxpZ25JdGVtcyIsIkFJTGlua05vdGljZSIsIlRleHQiLCJwcmV2aW91c1ZhbHVlc0Zvcm1Db250YWluZXIiLCJGb3JtQ29udGFpbmVyIiwidGl0bGUiLCJDb3JlVGl0bGUiLCJwcmV2aW91c1ZhbHVlc0Zvcm1Db250YWluZXIyIiwibmV3VmFsdWVzRm9ybUNvbnRhaW5lciIsIm5ld1ZhbHVlc0Zvcm1Db250YWluZXIyIiwidWlDb250ZXh0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJzZXRCaW5kaW5nQ29udGV4dCIsImFkZEZvcm1Db250YWluZXIiLCJzZXRNb2RlbCIsIiR2Qm94IiwiY3JlYXRlUmVmZXJlbmNlIiwiYWRkSXRlbSIsIlNjcm9sbENvbnRhaW5lciIsInJlZiIsInZlcnRpY2FsIiwiVkJveCIsIml0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJUaXRsZSIsImxheW91dERhdGEiLCJGbGV4SXRlbURhdGEiLCJhbGlnblNlbGYiLCJ1cGRhdGVkRmllbGQiLCJpc0VkaXRhYmxlIiwiYWRkRm9ybUVsZW1lbnQiLCJGb3JtRWxlbWVudCIsImxhYmVsIiwiRmllbGQiLCJjb250ZXh0UGF0aCIsImdldE93bmVyQ29udGV4dFBhdGgiLCJyZWFkT25seSIsInJlcXVpcmVkIiwibmV3RmllbGQiLCJfZ2V0T3duZXIiLCJydW5Bc093bmVyIiwiX3JlcXVpcmVzVmFsaWRhdGlvbiIsInZhbGlkYXRlRmllbGRHcm91cCIsImJpbmQiLCJjaGFuZ2UiLCJmaWVsZHMiLCJtZXRhTW9kZWxPYmoiLCJ2YWx1ZUV4cHJlc3Npb24iLCJBbm5vdGF0aW9uSGVscGVyIiwiZm9ybWF0IiwicGFyc2VkQmluZGluZyIsIkJpbmRpbmdJbmZvIiwicGFyc2UiLCJlcnJvck1lc3NhZ2UiLCJ2YWxpZGF0ZVZhbHVlIiwiZSIsIm1lc3NhZ2UiLCJ2YWx1ZUxpc3QiLCJfZ2V0VmFsdWVMaXN0IiwiaGFzVkhFcnJvciIsIlZhbHVlTGlzdEhlbHBlciIsImlzVmFsdWVMaXN0U2VhcmNoYWJsZSIsInZhbHVlcyIsInJlc29sdmVUb2tlblZhbHVlIiwib3BlcmF0b3IiLCJGaWx0ZXJPcGVyYXRvciIsIkVRIiwic2VsZWN0ZWRWYWx1ZXMiLCJub01hdGNoIiwic2V0VGltZW91dCIsInNldFZhbHVlIiwibWVzc2FnZUlkIiwiYWRkTWVzc2FnZSIsIk1lc3NhZ2VUeXBlIiwiRXJyb3IiLCJlYXN5RWRpdERlc2NyaXB0aW9uIiwiSW52aXNpYmxlVGV4dCIsIiRlYXN5RmlsbEJ1dHRvbiIsIiRlYXN5RmlsbFNhdmVCdXR0b24iLCIkZWFzeUZpbGxDYW5jZWxCdXR0b24iLCIkZWFzeUZpbGxDbGVhckFsbEJ1dHRvbiIsImRpYWxvZyIsIkRpYWxvZyIsInJlc2l6YWJsZSIsImhvcml6b250YWxTY3JvbGxpbmciLCJ2ZXJ0aWNhbFNjcm9sbGluZyIsImNvbnRlbnRXaWR0aCIsImNvbnRlbnRIZWlnaHQiLCJlc2NhcGVIYW5kbGVyIiwiYWZ0ZXJDbG9zZSIsIkZsZXhCb3giLCJkaXJlY3Rpb24iLCJGbGV4RGlyZWN0aW9uIiwiUm93IiwicmVuZGVyVHlwZSIsIndpZHRoIiwiaGVpZ2h0IiwiaWQiLCJjcmVhdGVJZCIsIkNvbHVtbiIsIkZvcm1hdHRlZFRleHQiLCJodG1sVGV4dCIsIlRleHRBcmVhIiwibGl2ZUNoYW5nZSIsImdldFBhcmFtZXRlciIsInBsYWNlaG9sZGVyIiwicm93cyIsImdyb3dpbmciLCJncm93aW5nTWF4TGluZXMiLCJtYXhMZW5ndGgiLCJhcmlhTGFiZWxsZWRCeSIsImZvcm1hdHRlciIsIkJ1dHRvbiIsImVuYWJsZWQiLCJub3QiLCJpc0VtcHR5IiwiQnV0dG9uVHlwZSIsIlRyYW5zcGFyZW50IiwiYnVzeSIsIklsbHVzdHJhdGVkTWVzc2FnZSIsImlsbHVzdHJhdGlvblR5cGUiLCJJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlIiwiTm9TZWFyY2hSZXN1bHRzIiwiaWxsdXN0cmF0aW9uU2l6ZSIsIklsbHVzdHJhdGVkTWVzc2FnZVNpemUiLCJMYXJnZSIsImVxdWFsIiwiTm9FbnRyaWVzIiwiVW5hYmxlVG9Mb2FkIiwiZm9vdGVyIiwiT3ZlcmZsb3dUb29sYmFyIiwiVG9vbGJhclNwYWNlciIsImFuZCIsInByb3BlcnR5UGF0aCIsInZhbHVlTGlzdHMiLCJnZXRWYWx1ZUxpc3RJbmZvIiwiQnVpbGRpbmdCbG9jayIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRWFzeUZpbGxEaWFsb2cudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5VHlwZSwgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHsgYW5kLCBlcXVhbCwgaXNFbXB0eSwgbm90IH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IEVuaGFuY2VXaXRoVUk1LCBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBjcmVhdGVSZWZlcmVuY2UsIGRlZmluZVJlZmVyZW5jZSwgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgeyBBSUxpbmtOb3RpY2UgfSBmcm9tIFwic2FwL2ZlL2NvbnRyb2xzL2Vhc3lGaWx0ZXIvQUlOb3RpY2VcIjtcbmltcG9ydCB0eXBlIHsgRkVWaWV3IH0gZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBUZW1wbGF0ZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkU2lkZUVmZmVjdERpY3Rpb25hcnkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2lkZUVmZmVjdHNcIjtcbmltcG9ydCB7IENvbGxhYm9yYXRpb25VdGlscyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCAqIGFzIE1ldGFNb2RlbENvbnZlcnRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlIHsgRGVmaW5pdGlvblBhZ2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvZGVmaW5pdGlvbi9GRURlZmluaXRpb25cIjtcbmltcG9ydCB7IGdldExhYmVsLCBpc0NvbXB1dGVkLCBpc0ltbXV0YWJsZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQgRmllbGQgZnJvbSBcInNhcC9mZS9tYWNyb3MvRmllbGRcIjtcbmltcG9ydCB7IHJlc29sdmVUb2tlblZhbHVlIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvYWkvRWFzeUZpbHRlckRhdGFGZXRjaGVyXCI7XG5pbXBvcnQgVmFsdWVMaXN0SGVscGVyLCB7IHR5cGUgVmFsdWVMaXN0SW5mbyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL3ZhbHVlaGVscC9WYWx1ZUxpc3RIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgQnV0dG9uJFByZXNzRXZlbnQgfSBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBEaWFsb2cgZnJvbSBcInNhcC9tL0RpYWxvZ1wiO1xuaW1wb3J0IEZsZXhCb3ggZnJvbSBcInNhcC9tL0ZsZXhCb3hcIjtcbmltcG9ydCBGbGV4SXRlbURhdGEgZnJvbSBcInNhcC9tL0ZsZXhJdGVtRGF0YVwiO1xuaW1wb3J0IEZvcm1hdHRlZFRleHQgZnJvbSBcInNhcC9tL0Zvcm1hdHRlZFRleHRcIjtcbmltcG9ydCBIQm94IGZyb20gXCJzYXAvbS9IQm94XCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2VTaXplIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VTaXplXCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZSBmcm9tIFwic2FwL20vSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZVwiO1xuaW1wb3J0IE1lc3NhZ2VTdHJpcCBmcm9tIFwic2FwL20vTWVzc2FnZVN0cmlwXCI7XG5pbXBvcnQgTWVzc2FnZVRvYXN0IGZyb20gXCJzYXAvbS9NZXNzYWdlVG9hc3RcIjtcbmltcG9ydCBPdmVyZmxvd1Rvb2xiYXIgZnJvbSBcInNhcC9tL092ZXJmbG93VG9vbGJhclwiO1xuaW1wb3J0IFNjcm9sbENvbnRhaW5lciBmcm9tIFwic2FwL20vU2Nyb2xsQ29udGFpbmVyXCI7XG5pbXBvcnQgVGV4dCBmcm9tIFwic2FwL20vVGV4dFwiO1xuaW1wb3J0IFRleHRBcmVhIGZyb20gXCJzYXAvbS9UZXh0QXJlYVwiO1xuaW1wb3J0IFRpdGxlIGZyb20gXCJzYXAvbS9UaXRsZVwiO1xuaW1wb3J0IFRvZ2dsZUJ1dHRvbiBmcm9tIFwic2FwL20vVG9nZ2xlQnV0dG9uXCI7XG5pbXBvcnQgVG9vbGJhclNwYWNlciBmcm9tIFwic2FwL20vVG9vbGJhclNwYWNlclwiO1xuaW1wb3J0IFZCb3ggZnJvbSBcInNhcC9tL1ZCb3hcIjtcbmltcG9ydCB7IEJ1dHRvblR5cGUsIEZsZXhEaXJlY3Rpb24gfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IEJpbmRpbmdJbmZvIGZyb20gXCJzYXAvdWkvYmFzZS9CaW5kaW5nSW5mb1wiO1xuaW1wb3J0IHR5cGUgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSB7IENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEludmlzaWJsZVRleHQgZnJvbSBcInNhcC91aS9jb3JlL0ludmlzaWJsZVRleHRcIjtcbmltcG9ydCBDb3JlVGl0bGUgZnJvbSBcInNhcC91aS9jb3JlL1RpdGxlXCI7XG5pbXBvcnQgTWVzc2FnZVR5cGUgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVR5cGVcIjtcbmltcG9ydCBDb2x1bW5MYXlvdXQgZnJvbSBcInNhcC91aS9sYXlvdXQvZm9ybS9Db2x1bW5MYXlvdXRcIjtcbmltcG9ydCBGb3JtIGZyb20gXCJzYXAvdWkvbGF5b3V0L2Zvcm0vRm9ybVwiO1xuaW1wb3J0IEZvcm1Db250YWluZXIgZnJvbSBcInNhcC91aS9sYXlvdXQvZm9ybS9Gb3JtQ29udGFpbmVyXCI7XG5pbXBvcnQgRm9ybUVsZW1lbnQgZnJvbSBcInNhcC91aS9sYXlvdXQvZm9ybS9Gb3JtRWxlbWVudFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCBGaWx0ZXJPcGVyYXRvciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5pbXBvcnQgQW5ub3RhdGlvbkhlbHBlciBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0Fubm90YXRpb25IZWxwZXJcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IEZFU1JIZWxwZXIgZnJvbSBcInNhcC91aS9wZXJmb3JtYW5jZS90cmFjZS9GRVNSSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkTWV0YWRhdGEgfSBmcm9tIFwidXgvZW5nL2Zpb3JpYWkvcmV1c2UvZWFzeWZpbGwvRWFzeUZpbGxcIjtcblxuY29uc3QgTUFYX0xFTkdUSCA9IDIwMDA7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuYWkuRWFzeUZpbGxEaWFsb2dcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc3lGaWxsRGlhbG9nIGV4dGVuZHMgQnVpbGRpbmdCbG9jazxcblx0RGlhbG9nLFxuXHR7XG5cdFx0ZW50ZXJlZFRleHQ6IHN0cmluZztcblx0XHRpc0J1c3k6IGJvb2xlYW47XG5cdFx0Y3VycmVudGx5RW50ZXJlZFRleHQ6IHN0cmluZztcblx0XHRpbmNvcnJlY3RWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXHRcdG5ld1ZhbHVlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cdFx0aGFzVmFsdWVzOiBib29sZWFuO1xuXHRcdGhhc0Vycm9yOiBib29sZWFuO1xuXHRcdGhhc0luY29ycmVjdFZhbHVlczogYm9vbGVhbjtcblx0XHRzdGF0ZVR5cGU6IFwiSW5pdGlhbFwiIHwgXCJOb0VudHJpZXNcIiB8IFwiRXJyb3JcIiB8IFwiSGFzRW50cmllc1wiO1xuXHR9XG4+IHtcblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdCRyZXZpZXdBcmVhITogUmVmPEZsZXhCb3g+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHQkc2Nyb2xsQ29udGFpbmVyITogUmVmPEZsZXhCb3g+O1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiRnVuY3Rpb25cIiB9KVxuXHRnZXRFZGl0YWJsZUZpZWxkcz86IEZ1bmN0aW9uO1xuXG5cdHByaXZhdGUgX2JpbmRpbmdDb250ZXh0PzogQ29udGV4dDtcblxuXHRjb25zdHJ1Y3RvcihpZE9yUHJvcHM6IHN0cmluZyB8IFByb3BlcnRpZXNPZjxFYXN5RmlsbERpYWxvZz4sIHByb3BzPzogUHJvcGVydGllc09mPEVhc3lGaWxsRGlhbG9nPikge1xuXHRcdHN1cGVyKGlkT3JQcm9wcywgcHJvcHMpO1xuXHR9XG5cblx0b25NZXRhZGF0YUF2YWlsYWJsZShfb3duZXJDb21wb25lbnQ6IFRlbXBsYXRlQ29tcG9uZW50KTogdm9pZCB7XG5cdFx0c3VwZXIub25NZXRhZGF0YUF2YWlsYWJsZShfb3duZXJDb21wb25lbnQpO1xuXHRcdHRoaXMuc3RhdGUubmV3VmFsdWVzID0ge307XG5cdFx0dGhpcy5zdGF0ZS5oYXNWYWx1ZXMgPSBmYWxzZTtcblx0XHR0aGlzLnN0YXRlLmhhc0Vycm9yID0gZmFsc2U7XG5cdFx0dGhpcy5zdGF0ZS5zdGF0ZVR5cGUgPSBcIkluaXRpYWxcIjtcblx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0fVxuXG5cdGFzeW5jIG9uQ29uZmlybShfZTogQnV0dG9uJFByZXNzRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHQvLyBWYWxpZGF0ZSB0aGUgZGF0YSBoYW5kbGluZ1xuXHRcdGNvbnN0IG1haW5QYWdlQmluZGluZ0NvbnRleHQgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkuZ2V0VmlldygpPy5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdGNvbnN0IGFsbFByb3BzID0gW107XG5cdFx0Y29uc3QgbmV3VmFsdWVzID0gdGhpcy5fYmluZGluZ0NvbnRleHQ/LmdldE9iamVjdCgpID8/IHRoaXMuc3RhdGUubmV3VmFsdWVzO1xuXHRcdGZvciAoY29uc3QgbmV3VmFsdWVzS2V5IGluIG5ld1ZhbHVlcykge1xuXHRcdFx0aWYgKG5ld1ZhbHVlc0tleSAhPT0gXCJfX2JpbmRpbmdJbmZvXCIgJiYgIW5ld1ZhbHVlc0tleS5zdGFydHNXaXRoKFwiQCRcIikpIHtcblx0XHRcdFx0aWYgKHR5cGVvZiBuZXdWYWx1ZXNbbmV3VmFsdWVzS2V5XSAhPT0gXCJvYmplY3RcIikge1xuXHRcdFx0XHRcdG1haW5QYWdlQmluZGluZ0NvbnRleHQ/LnNldFByb3BlcnR5KG5ld1ZhbHVlc0tleSwgbmV3VmFsdWVzW25ld1ZhbHVlc0tleV0pO1xuXHRcdFx0XHRcdGFsbFByb3BzLnB1c2goXG5cdFx0XHRcdFx0XHR0aGlzLmFwcGx5VXBkYXRlc0ZvckNoYW5nZSh0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkuZ2V0VmlldygpLCBtYWluUGFnZUJpbmRpbmdDb250ZXh0LmdldFBhdGgobmV3VmFsdWVzS2V5KSlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRyeSB7XG5cdFx0XHRhd2FpdCBQcm9taXNlLmFsbChhbGxQcm9wcyk7XG5cdFx0XHRtYWluUGFnZUJpbmRpbmdDb250ZXh0LnJlZnJlc2goKTtcblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdExvZy5lcnJvcihcIkZhaWxlZCB0byB1cGRhdGUgZGF0YSBhZnRlciBjaGFuZ2U6XCIgKyBlcnIpO1xuXHRcdH1cblx0XHQvLyBDbG9zZSBub25ldGhlbGVzc1xuXHRcdHRoaXMuY29udGVudD8uY2xvc2UoKTtcblx0fVxuXG5cdGFzeW5jIGFwcGx5VXBkYXRlc0ZvckNoYW5nZSh2aWV3OiBGRVZpZXcsIHByb3BlcnR5UGF0aEZvclVwZGF0ZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gdmlldy5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IG1ldGFDb250ZXh0ID0gbWV0YU1vZGVsLmdldE1ldGFDb250ZXh0KHByb3BlcnR5UGF0aEZvclVwZGF0ZSk7XG5cdFx0Y29uc3QgZGF0YU1vZGVsT2JqZWN0ID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxQcm9wZXJ0eT4obWV0YUNvbnRleHQpO1xuXHRcdGNvbnN0IHRhcmdldENvbnRleHQgPSB2aWV3LmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHNpZGVFZmZlY3RzUHJvbWlzZXM6IFByb21pc2U8dW5rbm93bj5bXSA9IFtdO1xuXHRcdFx0Y29uc3Qgc2lkZUVmZmVjdHNTZXJ2aWNlID0gQ29sbGFib3JhdGlvblV0aWxzLmdldEFwcENvbXBvbmVudCh2aWV3KS5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKTtcblxuXHRcdFx0Ly8gV2UgaGF2ZSBhIHRhcmdldCBjb250ZXh0LCBzbyB3ZSBjYW4gcmV0cmlldmUgdGhlIHVwZGF0ZWQgcHJvcGVydHlcblx0XHRcdGNvbnN0IHRhcmdldE1ldGFQYXRoID0gbWV0YU1vZGVsLmdldE1ldGFQYXRoKHRhcmdldENvbnRleHQuZ2V0UGF0aCgpKTtcblx0XHRcdGNvbnN0IHJlbGF0aXZlTWV0YVBhdGhGb3JVcGRhdGUgPSBtZXRhTW9kZWwuZ2V0TWV0YVBhdGgocHJvcGVydHlQYXRoRm9yVXBkYXRlKS5yZXBsYWNlKHRhcmdldE1ldGFQYXRoLCBcIlwiKS5zbGljZSgxKTtcblx0XHRcdHNpZGVFZmZlY3RzUHJvbWlzZXMucHVzaChzaWRlRWZmZWN0c1NlcnZpY2UucmVxdWVzdFNpZGVFZmZlY3RzKFtyZWxhdGl2ZU1ldGFQYXRoRm9yVXBkYXRlXSwgdGFyZ2V0Q29udGV4dCwgXCIkYXV0b1wiKSk7XG5cblx0XHRcdC8vIEdldCB0aGUgZmllbGRHcm91cElkcyBjb3JyZXNwb25kaW5nIHRvIHBhdGhGb3JVcGRhdGVcblx0XHRcdGNvbnN0IGZpZWxkR3JvdXBJZHMgPSBzaWRlRWZmZWN0c1NlcnZpY2UuY29tcHV0ZUZpZWxkR3JvdXBJZHMoXG5cdFx0XHRcdGRhdGFNb2RlbE9iamVjdC50YXJnZXRFbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZSxcblx0XHRcdFx0ZGF0YU1vZGVsT2JqZWN0LnRhcmdldE9iamVjdCEuZnVsbHlRdWFsaWZpZWROYW1lXG5cdFx0XHQpO1xuXG5cdFx0XHQvLyBFeGVjdXRlIHRoZSBzaWRlIGVmZmVjdHMgZm9yIHRoZSBmaWVsZEdyb3VwSWRzXG5cdFx0XHRpZiAoZmllbGRHcm91cElkcy5sZW5ndGgpIHtcblx0XHRcdFx0Y29uc3QgcGFnZUNvbnRyb2xsZXIgPSB2aWV3LmdldENvbnRyb2xsZXIoKTtcblx0XHRcdFx0Y29uc3Qgc2lkZUVmZmVjdHNNYXBGb3JGaWVsZEdyb3VwID0gcGFnZUNvbnRyb2xsZXIuX3NpZGVFZmZlY3RzLmdldFNpZGVFZmZlY3RzTWFwRm9yRmllbGRHcm91cHMoXG5cdFx0XHRcdFx0ZmllbGRHcm91cElkcyxcblx0XHRcdFx0XHR0YXJnZXRDb250ZXh0XG5cdFx0XHRcdCkgYXMgRmllbGRTaWRlRWZmZWN0RGljdGlvbmFyeTtcblx0XHRcdFx0T2JqZWN0LmtleXMoc2lkZUVmZmVjdHNNYXBGb3JGaWVsZEdyb3VwKS5mb3JFYWNoKChzaWRlRWZmZWN0TmFtZSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHNpZGVFZmZlY3QgPSBzaWRlRWZmZWN0c01hcEZvckZpZWxkR3JvdXBbc2lkZUVmZmVjdE5hbWVdO1xuXHRcdFx0XHRcdHNpZGVFZmZlY3RzUHJvbWlzZXMucHVzaChcblx0XHRcdFx0XHRcdHBhZ2VDb250cm9sbGVyLl9zaWRlRWZmZWN0cy5yZXF1ZXN0U2lkZUVmZmVjdHMoc2lkZUVmZmVjdC5zaWRlRWZmZWN0cywgc2lkZUVmZmVjdC5jb250ZXh0LCBcIiRhdXRvXCIsIHVuZGVmaW5lZCwgdHJ1ZSlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblxuXHRcdFx0YXdhaXQgUHJvbWlzZS5hbGwoc2lkZUVmZmVjdHNQcm9taXNlcyk7XG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJGYWlsZWQgdG8gdXBkYXRlIGRhdGEgYWZ0ZXIgY2hhbmdlOlwiICsgZXJyKTtcblx0XHRcdHRocm93IGVycjtcblx0XHR9XG5cdH1cblxuXHRvbkNhbmNlbCgpOiB2b2lkIHtcblx0XHR0aGlzLmNvbnRlbnQ/LmNsb3NlKCk7XG5cdH1cblxuXHRvcGVuKCk6IHZvaWQge1xuXHRcdHRoaXMuY29udGVudD8ub3BlbigpO1xuXHR9XG5cblx0X2dldEZpZWxkTWFwcGluZyhkZWZpbml0aW9uUGFnZTogRGVmaW5pdGlvblBhZ2UgfCB1bmRlZmluZWQpOiBGaWVsZE1ldGFkYXRhIHtcblx0XHRjb25zdCBmaWVsZE1hcHBpbmc6IEZpZWxkTWV0YWRhdGEgPSB7fTtcblx0XHRpZiAoZGVmaW5pdGlvblBhZ2UpIHtcblx0XHRcdGNvbnN0IHBhZ2VUYXJnZXQgPSBkZWZpbml0aW9uUGFnZS5nZXRNZXRhUGF0aCgpLmdldFRhcmdldCgpO1xuXHRcdFx0bGV0IGVudGl0eVR5cGU6IEVudGl0eVR5cGUgfCB1bmRlZmluZWQ7XG5cdFx0XHRzd2l0Y2ggKHBhZ2VUYXJnZXQuX3R5cGUpIHtcblx0XHRcdFx0Y2FzZSBcIkVudGl0eVNldFwiOlxuXHRcdFx0XHRjYXNlIFwiU2luZ2xldG9uXCI6XG5cdFx0XHRcdFx0ZW50aXR5VHlwZSA9IHBhZ2VUYXJnZXQuZW50aXR5VHlwZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiOlxuXHRcdFx0XHRcdGVudGl0eVR5cGUgPSBwYWdlVGFyZ2V0LnRhcmdldFR5cGU7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChlbnRpdHlUeXBlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBlbnRpdHlQcm9wZXJ0eSBvZiBlbnRpdHlUeXBlLmVudGl0eVByb3BlcnRpZXMpIHtcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHQhaXNJbW11dGFibGUoZW50aXR5UHJvcGVydHkpICYmXG5cdFx0XHRcdFx0XHQhaXNDb21wdXRlZChlbnRpdHlQcm9wZXJ0eSkgJiZcblx0XHRcdFx0XHRcdGVudGl0eVByb3BlcnR5LmFubm90YXRpb25zLlVJPy5IaWRkZW4/LnZhbHVlT2YoKSAhPT0gdHJ1ZVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0Ly8gSWYgbm90IGltbXV0YWJsZSwgY29tcHV0ZWQgb3IgaGlkZGVuIGFkZCB0byB0aGUgZmllbGQgbWFwcGluZ1xuXHRcdFx0XHRcdFx0ZmllbGRNYXBwaW5nW2VudGl0eVByb3BlcnR5Lm5hbWVdID0ge1xuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogZ2V0TGFiZWwoZW50aXR5UHJvcGVydHkpID8/IGVudGl0eVByb3BlcnR5Lm5hbWUsXG5cdFx0XHRcdFx0XHRcdGRhdGFUeXBlOiBlbnRpdHlQcm9wZXJ0eS50eXBlXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZmllbGRNYXBwaW5nO1xuXHR9XG5cblx0cHJpdmF0ZSBnZW5lcmF0ZUxpc3RCaW5kaW5nKHBhdGg6IHN0cmluZywgbW9kZWw6IE9EYXRhTW9kZWwpOiBPRGF0YUxpc3RCaW5kaW5nIHtcblx0XHRjb25zdCB0cmFuc2llbnRMaXN0QmluZGluZyA9IG1vZGVsLmJpbmRMaXN0KFxuXHRcdFx0cGF0aCxcblx0XHRcdHVuZGVmaW5lZCxcblxuXHRcdFx0W10sXG5cdFx0XHRbXSxcblx0XHRcdHtcblx0XHRcdFx0JCR1cGRhdGVHcm91cElkOiBcInN1Ym1pdExhdGVyXCJcblx0XHRcdH1cblx0XHQpO1xuXHRcdHRyYW5zaWVudExpc3RCaW5kaW5nLnJlZnJlc2hJbnRlcm5hbCA9ICgpOiB2b2lkID0+IHtcblx0XHRcdC8qICovXG5cdFx0fTtcblx0XHRyZXR1cm4gdHJhbnNpZW50TGlzdEJpbmRpbmc7XG5cdH1cblxuXHRwcml2YXRlIG9uVGh1bWJQcmVzcyh0aHVtYlVwQnV0dG9uOiBUb2dnbGVCdXR0b24sIHRodW1iRG93bkJ1dHRvbjogVG9nZ2xlQnV0dG9uKTogdm9pZCB7XG5cdFx0dGh1bWJVcEJ1dHRvbi5zZXRFbmFibGVkKGZhbHNlKTtcblx0XHR0aHVtYkRvd25CdXR0b24uc2V0RW5hYmxlZChmYWxzZSk7XG5cdFx0TWVzc2FnZVRvYXN0LnNob3codGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfRUFTWUVESVRfRkVFREJBQ0tfU0VOVFwiKSk7XG5cdH1cblxuXHRmb3JtYXRSZW1haW5pbmdDaGFyYWN0ZXJzKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9SRU1BSU5JTkdfQ0hBUkFDVEVSU1wiLCBbTUFYX0xFTkdUSCAtICh2YWx1ZT8ubGVuZ3RoID8/IDApXSk7XG5cdH1cblxuXHRvbkNsZWFyQWxsKCk6IHZvaWQge1xuXHRcdHRoaXMuc3RhdGUubmV3VmFsdWVzID0ge307XG5cdFx0dGhpcy5zdGF0ZS5oYXNWYWx1ZXMgPSBmYWxzZTtcblx0XHR0aGlzLnN0YXRlLmhhc0luY29ycmVjdFZhbHVlcyA9IGZhbHNlO1xuXHRcdHRoaXMuc3RhdGUuZW50ZXJlZFRleHQgPSBcIlwiO1xuXHRcdHRoaXMuc3RhdGUuaGFzRXJyb3IgPSBmYWxzZTtcblx0XHR0aGlzLnN0YXRlLnN0YXRlVHlwZSA9IFwiSW5pdGlhbFwiO1xuXHRcdHRoaXMuc3RhdGUuY3VycmVudGx5RW50ZXJlZFRleHQgPSBcIlwiO1xuXHRcdHRoaXMuc3RhdGUuaW5jb3JyZWN0VmFsdWVzID0ge307XG5cdH1cblxuXHRvblZhbGlkYXRlRmllbGRHcm91cHMoX2U/OiBDb250cm9sJFZhbGlkYXRlRmllbGRHcm91cEV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3QgYWxsRmllbGRzID0gKHRoaXMuJHJldmlld0FyZWEuY3VycmVudD8uZ2V0Q29udHJvbHNCeUZpZWxkR3JvdXBJZChcIkVhc3lGaWxsRmllbGRcIikgYXMgRW5oYW5jZVdpdGhVSTU8RmllbGQ+W10pID8/IFtdO1xuXHRcdHRoaXMuc3RhdGUuaGFzRXJyb3IgPSBhbGxGaWVsZHMuc29tZSgoZmllbGQ6IEVuaGFuY2VXaXRoVUk1PEZpZWxkPik6IGJvb2xlYW4gPT4ge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0ISFmaWVsZC5kYXRhKFwibWVzc2FnZUlkXCIpIHx8XG5cdFx0XHRcdCghIShmaWVsZCBhcyB7IGdldFZhbHVlU3RhdGU/OiBGdW5jdGlvbiB9KS5nZXRWYWx1ZVN0YXRlICYmXG5cdFx0XHRcdFx0KGZpZWxkIGFzIHsgZ2V0VmFsdWVTdGF0ZT86IEZ1bmN0aW9uIH0pLmdldFZhbHVlU3RhdGU/LigpID09PSBcIkVycm9yXCIpXG5cdFx0XHQpO1xuXHRcdH0pO1xuXHR9XG5cblx0b25GaWVsZENoYW5nZShldjogVUk1RXZlbnQ8e30sIEZpZWxkPik6IHZvaWQge1xuXHRcdGV2LmdldFNvdXJjZSgpLnJlbW92ZU1lc3NhZ2UoZXYuZ2V0U291cmNlKCkuZGF0YShcIm1lc3NhZ2VJZFwiKSk7XG5cdFx0ZXYuZ2V0U291cmNlKCkuZGF0YShcIm1lc3NhZ2VJZFwiLCB1bmRlZmluZWQpO1xuXHR9XG5cblx0YXN5bmMgb25FYXN5RWRpdFByZXNzZWQoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gQ2FsbCB0aGUgQUkgc2VydmljZVxuXHRcdC8vIFByb2Nlc3MgdGhyb3VnaCBjaGF0IGNvbXBsZXRpb24gQVBJXG5cdFx0Y29uc3QgbWV0YVBhdGggPSB0aGlzLmdldE93bmVyUGFnZURlZmluaXRpb24oKTtcblx0XHRjb25zdCBmaWVsZE1hcHBpbmcgPSB0aGlzLl9nZXRGaWVsZE1hcHBpbmcobWV0YVBhdGgpO1xuXHRcdGNvbnN0IGVhc3lGaWxsTGlicmFyeSA9IGF3YWl0IGltcG9ydChcInV4L2VuZy9maW9yaWFpL3JldXNlL2Vhc3lmaWxsL0Vhc3lGaWxsXCIpO1xuXHRcdGNvbnN0IG9kYXRhTW9kZWwgPSB0aGlzLmdldE1vZGVsKCkgYXMgT0RhdGFNb2RlbDtcblx0XHRjb25zdCB0cmFuc2llbnRMaXN0QmluZGluZyA9IHRoaXMuZ2VuZXJhdGVMaXN0QmluZGluZyhcblx0XHRcdG9kYXRhTW9kZWwuZ2V0TWV0YU1vZGVsKCkuZ2V0TWV0YVBhdGgodGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLmdldFZpZXcoKT8uZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpKSxcblx0XHRcdHRoaXMuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsXG5cdFx0KTtcblx0XHR0aGlzLl9iaW5kaW5nQ29udGV4dCA9IHRyYW5zaWVudExpc3RCaW5kaW5nLmNyZWF0ZSh7fSwgdHJ1ZSk7XG5cblx0XHR0aGlzLnN0YXRlLmlzQnVzeSA9IHRydWU7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGFpQ2FsbFJlc3VsdCA9IGF3YWl0IGVhc3lGaWxsTGlicmFyeS5leHRyYWN0RmllbGRWYWx1ZXNGcm9tVGV4dCh0aGlzLnN0YXRlLmVudGVyZWRUZXh0LCBmaWVsZE1hcHBpbmcpO1xuXHRcdFx0dGhpcy5zdGF0ZS5pc0J1c3kgPSBmYWxzZTtcblx0XHRcdGlmIChhaUNhbGxSZXN1bHQuc3VjY2Vzcykge1xuXHRcdFx0XHRjb25zdCB1cGRhdGVkRmllbGRzID0gYWlDYWxsUmVzdWx0LmRhdGE7XG5cdFx0XHRcdGlmIChPYmplY3Qua2V5cyh1cGRhdGVkRmllbGRzKS5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0XHR0aGlzLnN0YXRlLmhhc1ZhbHVlcyA9IGZhbHNlO1xuXHRcdFx0XHRcdHRoaXMuc3RhdGUuaGFzSW5jb3JyZWN0VmFsdWVzID0gZmFsc2U7XG5cdFx0XHRcdFx0dGhpcy5zdGF0ZS5zdGF0ZVR5cGUgPSBcIk5vRW50cmllc1wiO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLnN0YXRlLnN0YXRlVHlwZSA9IFwiSGFzRW50cmllc1wiO1xuXHRcdFx0XHR0aGlzLnN0YXRlLmhhc0Vycm9yID0gZmFsc2U7XG5cdFx0XHRcdGNvbnN0IGVkaXRhYmxlRmllbGRzID0gKGF3YWl0IHRoaXMuZ2V0RWRpdGFibGVGaWVsZHM/LigpKSA/PyB7fTtcblx0XHRcdFx0dGhpcy5zdGF0ZS5oYXNWYWx1ZXMgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5zdGF0ZS5oYXNJbmNvcnJlY3RWYWx1ZXMgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy4kc2Nyb2xsQ29udGFpbmVyLmN1cnJlbnQ/LmRlc3Ryb3koKTtcblxuXHRcdFx0XHRjb25zdCByZXZpZXdBcmVhRm9ybSA9IChcblx0XHRcdFx0XHQ8Rm9ybSBlZGl0YWJsZT17dHJ1ZX0gY2xhc3M9e1wic2FwVWlTbWFsbE1hcmdpblRvcEJvdHRvbVwifSB2aXNpYmxlPXt0aGlzLmJpbmRTdGF0ZShcImhhc1ZhbHVlc1wiKX0+XG5cdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRsYXlvdXQ6IDxDb2x1bW5MYXlvdXQgY29sdW1uc009ezJ9IGNvbHVtbnNMPXsyfSBjb2x1bW5zWEw9ezJ9IGxhYmVsQ2VsbHNMYXJnZT17MX0gZW1wdHlDZWxsc0xhcmdlPXsxfSAvPlxuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQ8L0Zvcm0+XG5cdFx0XHRcdCkgYXMgRm9ybTtcblx0XHRcdFx0Y29uc3QgaW5jb3JyZWN0VmFsdWVzRm9ybSA9IChcblx0XHRcdFx0XHQ8Rm9ybSBlZGl0YWJsZT17ZmFsc2V9IGNsYXNzPXtcInNhcFVpU21hbGxNYXJnaW5Ub3BCb3R0b21cIn0gdmlzaWJsZT17dGhpcy5iaW5kU3RhdGUoXCJoYXNJbmNvcnJlY3RWYWx1ZXNcIil9PlxuXHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0bGF5b3V0OiA8Q29sdW1uTGF5b3V0IGNvbHVtbnNNPXsyfSBjb2x1bW5zTD17Mn0gY29sdW1uc1hMPXsyfSBsYWJlbENlbGxzTGFyZ2U9ezF9IGVtcHR5Q2VsbHNMYXJnZT17MX0gLz5cblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0PC9Gb3JtPlxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCB3YXJuaW5nTWVzc2FnZSA9IChcblx0XHRcdFx0XHQ8TWVzc2FnZVN0cmlwXG5cdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9ESUFMT0dfV0FSTklOR19NU0dcIil9XG5cdFx0XHRcdFx0XHR0eXBlPXtcIldhcm5pbmdcIn1cblx0XHRcdFx0XHRcdHNob3dJY29uPXt0cnVlfVxuXHRcdFx0XHRcdFx0dmlzaWJsZT17dGhpcy5iaW5kU3RhdGUoXCJoYXNJbmNvcnJlY3RWYWx1ZXNcIil9XG5cdFx0XHRcdFx0PjwvTWVzc2FnZVN0cmlwPlxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCB0aHVtYlVwQnV0dG9uID0gKFxuXHRcdFx0XHRcdDxUb2dnbGVCdXR0b25cblx0XHRcdFx0XHRcdGljb249e1wic2FwLWljb246Ly90aHVtYi11cFwifVxuXHRcdFx0XHRcdFx0dG9vbHRpcD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfRUFTWUVESVRfVEhVTUJTX1VQXCIpfVxuXHRcdFx0XHRcdFx0dHlwZT17XCJUcmFuc3BhcmVudFwifVxuXHRcdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMub25UaHVtYlByZXNzKHRodW1iVXBCdXR0b24sIHRodW1iRG93bkJ1dHRvbik7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdCk7XG5cdFx0XHRcdEZFU1JIZWxwZXIuc2V0U2VtYW50aWNTdGVwbmFtZSh0aHVtYlVwQnV0dG9uLCBcInByZXNzXCIsIFwiZmU0OmVmOnRodW1iVXBcIik7XG5cdFx0XHRcdGNvbnN0IHRodW1iRG93bkJ1dHRvbiA9IChcblx0XHRcdFx0XHQ8VG9nZ2xlQnV0dG9uXG5cdFx0XHRcdFx0XHRpY29uPXtcInNhcC1pY29uOi8vdGh1bWItZG93blwifVxuXHRcdFx0XHRcdFx0dG9vbHRpcD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfRUFTWUVESVRfVEhVTUJTX0RPV05cIil9XG5cdFx0XHRcdFx0XHR0eXBlPXtcIlRyYW5zcGFyZW50XCJ9XG5cdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5vblRodW1iUHJlc3ModGh1bWJVcEJ1dHRvbiwgdGh1bWJEb3duQnV0dG9uKTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0KTtcblx0XHRcdFx0RkVTUkhlbHBlci5zZXRTZW1hbnRpY1N0ZXBuYW1lKHRodW1iRG93bkJ1dHRvbiwgXCJwcmVzc1wiLCBcImZlNDplZjp0aHVtYkRvd25cIik7XG5cdFx0XHRcdGNvbnN0IGFpTm90aWNlVGV4dCA9IChcblx0XHRcdFx0XHQ8SEJveCBhbGlnbkl0ZW1zPXtcIkNlbnRlclwifSB2aXNpYmxlPXt0aGlzLmJpbmRTdGF0ZShcImhhc1ZhbHVlc1wiKX0+XG5cdFx0XHRcdFx0XHQ8QUlMaW5rTm90aWNlIC8+XG5cdFx0XHRcdFx0XHQ8VGV4dCB0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9BSV9OT1RJQ0VfVEVYVFwiKX0gY2xhc3M9e1wic2FwVWlUaW55TWFyZ2luQmVnaW5cIn0gLz5cblx0XHRcdFx0XHRcdHt0aHVtYlVwQnV0dG9ufSwge3RodW1iRG93bkJ1dHRvbn1cblx0XHRcdFx0XHQ8L0hCb3g+XG5cdFx0XHRcdCk7XG5cdFx0XHRcdGNvbnN0IHByZXZpb3VzVmFsdWVzRm9ybUNvbnRhaW5lciA9IChcblx0XHRcdFx0XHQ8Rm9ybUNvbnRhaW5lcj57eyB0aXRsZTogPENvcmVUaXRsZSB0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9QUkVWSU9VU19WQUxVRVNcIil9IC8+IH19PC9Gb3JtQ29udGFpbmVyPlxuXHRcdFx0XHQpIGFzIEZvcm1Db250YWluZXI7XG5cdFx0XHRcdGNvbnN0IHByZXZpb3VzVmFsdWVzRm9ybUNvbnRhaW5lcjIgPSAoXG5cdFx0XHRcdFx0PEZvcm1Db250YWluZXI+e3sgdGl0bGU6IDxDb3JlVGl0bGUgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfRUFTWUVESVRfUFJFVklPVVNfVkFMVUVTXCIpfSAvPiB9fTwvRm9ybUNvbnRhaW5lcj5cblx0XHRcdFx0KSBhcyBGb3JtQ29udGFpbmVyO1xuXHRcdFx0XHRjb25zdCBuZXdWYWx1ZXNGb3JtQ29udGFpbmVyID0gKFxuXHRcdFx0XHRcdDxGb3JtQ29udGFpbmVyPnt7IHRpdGxlOiA8Q29yZVRpdGxlIHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0VBU1lFRElUX05FV19WQUxVRVNcIil9IC8+IH19PC9Gb3JtQ29udGFpbmVyPlxuXHRcdFx0XHQpIGFzIEZvcm1Db250YWluZXI7XG5cdFx0XHRcdGNvbnN0IG5ld1ZhbHVlc0Zvcm1Db250YWluZXIyID0gKFxuXHRcdFx0XHRcdDxGb3JtQ29udGFpbmVyPnt7IHRpdGxlOiA8Q29yZVRpdGxlIHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0VBU1lFRElUX05FV19WQUxVRVNcIil9IC8+IH19PC9Gb3JtQ29udGFpbmVyPlxuXHRcdFx0XHQpIGFzIEZvcm1Db250YWluZXI7XG5cdFx0XHRcdGNvbnN0IHVpQ29udGV4dCA9IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKS5nZXRNb2RlbChcInVpXCIpPy5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9lYXN5RWRpdERpYWxvZ1wiKTtcblxuXHRcdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkuZ2V0TW9kZWwoXCJ1aVwiKS5zZXRQcm9wZXJ0eShcIi9lYXN5RWRpdERpYWxvZ1wiLCB7fSk7XG5cdFx0XHRcdHVpQ29udGV4dC5zZXRQcm9wZXJ0eShcImlzRWRpdGFibGVcIiwgdHJ1ZSk7XG5cdFx0XHRcdG5ld1ZhbHVlc0Zvcm1Db250YWluZXIuc2V0QmluZGluZ0NvbnRleHQodWlDb250ZXh0LCBcInVpXCIpO1xuXG5cdFx0XHRcdHJldmlld0FyZWFGb3JtLmFkZEZvcm1Db250YWluZXIocHJldmlvdXNWYWx1ZXNGb3JtQ29udGFpbmVyKTtcblx0XHRcdFx0cmV2aWV3QXJlYUZvcm0uYWRkRm9ybUNvbnRhaW5lcihuZXdWYWx1ZXNGb3JtQ29udGFpbmVyKTtcblx0XHRcdFx0aW5jb3JyZWN0VmFsdWVzRm9ybS5hZGRGb3JtQ29udGFpbmVyKHByZXZpb3VzVmFsdWVzRm9ybUNvbnRhaW5lcjIpO1xuXHRcdFx0XHRpbmNvcnJlY3RWYWx1ZXNGb3JtLmFkZEZvcm1Db250YWluZXIobmV3VmFsdWVzRm9ybUNvbnRhaW5lcjIpO1xuXHRcdFx0XHRjb25zdCBuZXdWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0XHRcdGNvbnN0IGluY29ycmVjdFZhbHVlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFx0bmV3VmFsdWVzRm9ybUNvbnRhaW5lci5zZXRCaW5kaW5nQ29udGV4dCh0aGlzLl9iaW5kaW5nQ29udGV4dCk7XG5cdFx0XHRcdG5ld1ZhbHVlc0Zvcm1Db250YWluZXIyLnNldEJpbmRpbmdDb250ZXh0KHRoaXMuZ2V0TW9kZWwoXCIkY29tcG9uZW50U3RhdGVcIik/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL2luY29ycmVjdFZhbHVlc1wiKSk7XG5cdFx0XHRcdG5ld1ZhbHVlc0Zvcm1Db250YWluZXIyLnNldE1vZGVsKHRoaXMuZ2V0TW9kZWwoXCIkY29tcG9uZW50U3RhdGVcIikpO1xuXG5cdFx0XHRcdGNvbnN0ICR2Qm94ID0gY3JlYXRlUmVmZXJlbmNlPFZCb3g+KCk7XG5cdFx0XHRcdHRoaXMuJHJldmlld0FyZWEuY3VycmVudD8uYWRkSXRlbShcblx0XHRcdFx0XHQ8U2Nyb2xsQ29udGFpbmVyIHJlZj17dGhpcy4kc2Nyb2xsQ29udGFpbmVyfSB2ZXJ0aWNhbD17dHJ1ZX0gY2xhc3M9e1wic2FwVWlDb250ZW50UGFkZGluZ1wifT5cblx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IChcblx0XHRcdFx0XHRcdFx0XHQ8VkJveCByZWY9eyR2Qm94fT5cblx0XHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiBbXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEhCb3gganVzdGlmeUNvbnRlbnQ9e1wiU3BhY2VCZXR3ZWVuXCJ9IGFsaWduSXRlbXM9e1wiQ2VudGVyXCJ9PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEhCb3g+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxUaXRsZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0VBU1lFRElUX0ZJTExFRF9GSUVMRFNcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17dGhpcy5iaW5kU3RhdGUoXCJoYXNWYWx1ZXNcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L0hCb3g+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8SEJveD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3sgbGF5b3V0RGF0YTogPEZsZXhJdGVtRGF0YSBhbGlnblNlbGY9XCJFbmRcIiAvPiB9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7YWlOb3RpY2VUZXh0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9IQm94PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvSEJveD4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV2aWV3QXJlYUZvcm0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PFRpdGxlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9JTkNPUlJFQ1RfRklFTERTXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlTbWFsbE1hcmdpblRvcEJvdHRvbVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17dGhpcy5iaW5kU3RhdGUoXCJoYXNJbmNvcnJlY3RWYWx1ZXNcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0d2FybmluZ01lc3NhZ2UsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aW5jb3JyZWN0VmFsdWVzRm9ybVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdDwvVkJveD5cblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQ8L1Njcm9sbENvbnRhaW5lcj5cblx0XHRcdFx0KTtcblxuXHRcdFx0XHRmb3IgKGNvbnN0IHVwZGF0ZWRGaWVsZCBpbiB1cGRhdGVkRmllbGRzKSB7XG5cdFx0XHRcdFx0aWYgKGVkaXRhYmxlRmllbGRzW3VwZGF0ZWRGaWVsZF0gJiYgZWRpdGFibGVGaWVsZHNbdXBkYXRlZEZpZWxkXS5pc0VkaXRhYmxlID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnN0YXRlLmhhc1ZhbHVlcyA9IHRydWU7XG5cdFx0XHRcdFx0XHRwcmV2aW91c1ZhbHVlc0Zvcm1Db250YWluZXIuYWRkRm9ybUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdDxGb3JtRWxlbWVudCBsYWJlbD17ZmllbGRNYXBwaW5nW3VwZGF0ZWRGaWVsZF0uZGVzY3JpcHRpb259PlxuXHRcdFx0XHRcdFx0XHRcdDxGaWVsZFxuXHRcdFx0XHRcdFx0XHRcdFx0bWV0YVBhdGg9e3VwZGF0ZWRGaWVsZH1cblx0XHRcdFx0XHRcdFx0XHRcdGNvbnRleHRQYXRoPXt0aGlzLmdldE93bmVyQ29udGV4dFBhdGgoKX1cblx0XHRcdFx0XHRcdFx0XHRcdHJlYWRPbmx5PXt0cnVlfVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxdWlyZWQ9e2ZhbHNlfVxuXHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17dHJ1ZX1cblx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHQ8L0Zvcm1FbGVtZW50PlxuXHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0Y29uc3QgbmV3RmllbGQgPSB0aGlzLl9nZXRPd25lcigpPy5ydW5Bc093bmVyKCgpID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHQ8RmllbGRcblx0XHRcdFx0XHRcdFx0XHRcdF9yZXF1aXJlc1ZhbGlkYXRpb249e3RydWV9XG5cdFx0XHRcdFx0XHRcdFx0XHR2YWxpZGF0ZUZpZWxkR3JvdXA9e3RoaXMub25WYWxpZGF0ZUZpZWxkR3JvdXBzLmJpbmQodGhpcyl9XG5cdFx0XHRcdFx0XHRcdFx0XHRmaWVsZEdyb3VwSWRzPXtcIkVhc3lGaWxsRmllbGRcIn1cblx0XHRcdFx0XHRcdFx0XHRcdG1ldGFQYXRoPXt1cGRhdGVkRmllbGR9XG5cdFx0XHRcdFx0XHRcdFx0XHRjb250ZXh0UGF0aD17dGhpcy5nZXRPd25lckNvbnRleHRQYXRoKCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRjaGFuZ2U9e3RoaXMub25GaWVsZENoYW5nZS5iaW5kKHRoaXMpfVxuXHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdCkgYXMgRmllbGQ7XG5cdFx0XHRcdFx0XHR9KSBhcyBFbmhhbmNlV2l0aFVJNTxGaWVsZD47XG5cdFx0XHRcdFx0XHRuZXdWYWx1ZXNGb3JtQ29udGFpbmVyLmFkZEZvcm1FbGVtZW50KFxuXHRcdFx0XHRcdFx0XHQ8Rm9ybUVsZW1lbnQgbGFiZWw9e2ZpZWxkTWFwcGluZ1t1cGRhdGVkRmllbGRdLmRlc2NyaXB0aW9ufT57eyBmaWVsZHM6IG5ld0ZpZWxkIH19PC9Gb3JtRWxlbWVudD5cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRjb25zdCBtZXRhTW9kZWwgPSB0aGlzLmdldE1ldGFNb2RlbCgpITtcblx0XHRcdFx0XHRcdGNvbnN0IHRhcmdldE1ldGFQYXRoID0gbWV0YU1vZGVsLmdldE1ldGFQYXRoKHRoaXMuX2JpbmRpbmdDb250ZXh0LmdldFBhdGgodXBkYXRlZEZpZWxkKSk7XG5cdFx0XHRcdFx0XHRjb25zdCBtZXRhTW9kZWxPYmogPSBtZXRhTW9kZWwuZ2V0T2JqZWN0KHRhcmdldE1ldGFQYXRoKTtcblx0XHRcdFx0XHRcdGNvbnN0IHZhbHVlRXhwcmVzc2lvbiA9IEFubm90YXRpb25IZWxwZXIuZm9ybWF0KG1ldGFNb2RlbE9iaiwge1xuXHRcdFx0XHRcdFx0XHRjb250ZXh0OiBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQodGFyZ2V0TWV0YVBhdGgpIVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRjb25zdCBwYXJzZWRCaW5kaW5nID0gQmluZGluZ0luZm8ucGFyc2UodmFsdWVFeHByZXNzaW9uKTtcblx0XHRcdFx0XHRcdGxldCBlcnJvck1lc3NhZ2UgPSBcIlwiO1xuXHRcdFx0XHRcdFx0aWYgKHBhcnNlZEJpbmRpbmcgJiYgcGFyc2VkQmluZGluZy50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0cGFyc2VkQmluZGluZy50eXBlLnZhbGlkYXRlVmFsdWUodXBkYXRlZEZpZWxkc1t1cGRhdGVkRmllbGRdKTtcblx0XHRcdFx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUuaGFzRXJyb3IgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdGVycm9yTWVzc2FnZSA9IChlIGFzIEVycm9yKS5tZXNzYWdlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIEZldGNoIHRoZSB2YWx1ZSBsaXN0IGZvciB0aGUgZ2l2ZW4gcHJvcGVydHkgcGF0aFxuXHRcdFx0XHRcdFx0Y29uc3QgdmFsdWVMaXN0ID0gYXdhaXQgdGhpcy5fZ2V0VmFsdWVMaXN0KHRhcmdldE1ldGFQYXRoKTtcblxuXHRcdFx0XHRcdFx0Ly8gSW5pdGlhbGl6ZSBhIGZsYWcgdG8gdHJhY2sgdmFsaWRhdGlvbiBlcnJvcnNcblx0XHRcdFx0XHRcdGxldCBoYXNWSEVycm9yID0gZmFsc2U7XG5cblx0XHRcdFx0XHRcdC8vIENoZWNrIGlmIHRoZSB2YWx1ZSBsaXN0IGlzIHNlYXJjaGFibGUgYW5kIHZhbGlkYXRlIHRoZSB1cGRhdGVkIGZpZWxkIHZhbHVlc1xuXHRcdFx0XHRcdFx0aWYgKHZhbHVlTGlzdCAmJiBWYWx1ZUxpc3RIZWxwZXIuaXNWYWx1ZUxpc3RTZWFyY2hhYmxlKHRhcmdldE1ldGFQYXRoLCB2YWx1ZUxpc3QpKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHZhbHVlcyA9IGF3YWl0IHJlc29sdmVUb2tlblZhbHVlKFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlTGlzdCxcblx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IuRVEsXG5cdFx0XHRcdFx0XHRcdFx0XHRzZWxlY3RlZFZhbHVlczogW3VwZGF0ZWRGaWVsZHNbdXBkYXRlZEZpZWxkXSBhcyBzdHJpbmddXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gVXBkYXRlIHRoZSBmaWVsZCB2YWx1ZSBpZiBpdCBkaWZmZXJzIGZyb20gdGhlIHJlc29sdmVkIHZhbHVlXG5cdFx0XHRcdFx0XHRcdGlmICghdmFsdWVzWzBdLm5vTWF0Y2gpIHtcblx0XHRcdFx0XHRcdFx0XHR1cGRhdGVkRmllbGRzW3VwZGF0ZWRGaWVsZF0gPSB2YWx1ZXNbMF0uc2VsZWN0ZWRWYWx1ZXNbMF0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0ZXJyb3JNZXNzYWdlID0gXCJcIjtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLmhhc0Vycm9yID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRoYXNWSEVycm9yID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRlcnJvck1lc3NhZ2UgPSB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9WSF9FUlJPUlwiLCB2YWx1ZXNbMF0uc2VsZWN0ZWRWYWx1ZXNbMF0udmFsdWUpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIFVzZSBhIHRpbWVvdXQgdG8gZW5zdXJlIHZhbGlkYXRpb24gcnVucyBjb3JyZWN0bHkgZm9yIHRoZSB1cGRhdGVkIGZpZWxkXG5cdFx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0bmV3RmllbGQuc2V0VmFsdWUodXBkYXRlZEZpZWxkc1t1cGRhdGVkRmllbGRdIGFzIHN0cmluZyk7XG5cdFx0XHRcdFx0XHRcdGlmIChlcnJvck1lc3NhZ2UubGVuZ3RoID4gMCB8fCBoYXNWSEVycm9yKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbWVzc2FnZUlkID0gbmV3RmllbGQuYWRkTWVzc2FnZSh7IHR5cGU6IE1lc3NhZ2VUeXBlLkVycm9yLCBtZXNzYWdlOiBlcnJvck1lc3NhZ2UgfSk7XG5cdFx0XHRcdFx0XHRcdFx0bmV3RmllbGQuZGF0YShcIm1lc3NhZ2VJZFwiLCBtZXNzYWdlSWQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LCAyMDApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRpbmNvcnJlY3RWYWx1ZXNbdXBkYXRlZEZpZWxkXSA9IHVwZGF0ZWRGaWVsZHNbdXBkYXRlZEZpZWxkXTtcblx0XHRcdFx0XHRcdHRoaXMuc3RhdGUuaGFzSW5jb3JyZWN0VmFsdWVzID0gdHJ1ZTtcblx0XHRcdFx0XHRcdHByZXZpb3VzVmFsdWVzRm9ybUNvbnRhaW5lcjIuYWRkRm9ybUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdDxGb3JtRWxlbWVudCBsYWJlbD17ZmllbGRNYXBwaW5nW3VwZGF0ZWRGaWVsZF0/LmRlc2NyaXB0aW9uID8/IHVwZGF0ZWRGaWVsZH0+XG5cdFx0XHRcdFx0XHRcdFx0PEZpZWxkXG5cdFx0XHRcdFx0XHRcdFx0XHRtZXRhUGF0aD17dXBkYXRlZEZpZWxkfVxuXHRcdFx0XHRcdFx0XHRcdFx0Y29udGV4dFBhdGg9e3RoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpfVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVhZE9ubHk9e3RydWV9XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZD17ZmFsc2V9XG5cdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXt0cnVlfVxuXHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdDwvRm9ybUVsZW1lbnQ+XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0bmV3VmFsdWVzRm9ybUNvbnRhaW5lcjIuYWRkRm9ybUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdDxGb3JtRWxlbWVudCBsYWJlbD17ZmllbGRNYXBwaW5nW3VwZGF0ZWRGaWVsZF0/LmRlc2NyaXB0aW9uID8/IHVwZGF0ZWRGaWVsZH0+XG5cdFx0XHRcdFx0XHRcdFx0PEZpZWxkIG1ldGFQYXRoPXt1cGRhdGVkRmllbGR9IGNvbnRleHRQYXRoPXt0aGlzLmdldE93bmVyQ29udGV4dFBhdGgoKX0gcmVhZE9ubHk9e3RydWV9IC8+XG5cdFx0XHRcdFx0XHRcdDwvRm9ybUVsZW1lbnQ+XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdCR2Qm94LmN1cnJlbnQ/LnNldEJpbmRpbmdDb250ZXh0KHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKS5nZXRWaWV3KCk/LmdldEJpbmRpbmdDb250ZXh0KCkpO1xuXHRcdFx0XHQkdkJveC5jdXJyZW50Py5zZXRNb2RlbCh0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkuZ2V0TW9kZWwoKSk7XG5cdFx0XHRcdCR2Qm94LmN1cnJlbnQ/LnNldE1vZGVsKHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKS5nZXRNb2RlbChcInVpXCIpLCBcInVpXCIpO1xuXHRcdFx0XHRzZXRUaW1lb3V0KCgpOiB2b2lkID0+IHtcblx0XHRcdFx0XHR0aGlzLm9uVmFsaWRhdGVGaWVsZEdyb3VwcygpO1xuXHRcdFx0XHR9LCAxMDAwKTtcblxuXHRcdFx0XHR0aGlzLnN0YXRlLm5ld1ZhbHVlcyA9IG5ld1ZhbHVlcztcblx0XHRcdFx0dGhpcy5zdGF0ZS5pbmNvcnJlY3RWYWx1ZXMgPSBpbmNvcnJlY3RWYWx1ZXM7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLnN0YXRlLmhhc1ZhbHVlcyA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLnN0YXRlLmhhc0luY29ycmVjdFZhbHVlcyA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLnN0YXRlLnN0YXRlVHlwZSA9IFwiRXJyb3JcIjtcblx0XHRcdFx0dGhpcy5zdGF0ZS5uZXdWYWx1ZXMgPSB7fTtcblx0XHRcdFx0dGhpcy5zdGF0ZS5pbmNvcnJlY3RWYWx1ZXMgPSB7fTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHR0aGlzLnN0YXRlLmlzQnVzeSA9IGZhbHNlO1xuXHRcdFx0dGhpcy5zdGF0ZS5oYXNWYWx1ZXMgPSBmYWxzZTtcblx0XHRcdHRoaXMuc3RhdGUuaGFzSW5jb3JyZWN0VmFsdWVzID0gZmFsc2U7XG5cdFx0XHR0aGlzLnN0YXRlLnN0YXRlVHlwZSA9IFwiRXJyb3JcIjtcblx0XHRcdHRoaXMuc3RhdGUubmV3VmFsdWVzID0ge307XG5cdFx0XHR0aGlzLnN0YXRlLmluY29ycmVjdFZhbHVlcyA9IHt9O1xuXHRcdH1cblx0fVxuXG5cdGNyZWF0ZUNvbnRlbnQoKTogRGlhbG9nIHtcblx0XHRjb25zdCBlYXN5RWRpdERlc2NyaXB0aW9uID0gPEludmlzaWJsZVRleHQgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfRUFTWUVESVRfRElBTE9HX0RFU0NSSVBUSU9OXCIpfSAvPjtcblxuXHRcdGNvbnN0ICRlYXN5RmlsbEJ1dHRvbiA9IGNyZWF0ZVJlZmVyZW5jZTxCdXR0b24+KCk7XG5cdFx0Y29uc3QgJGVhc3lGaWxsU2F2ZUJ1dHRvbiA9IGNyZWF0ZVJlZmVyZW5jZTxCdXR0b24+KCk7XG5cdFx0Y29uc3QgJGVhc3lGaWxsQ2FuY2VsQnV0dG9uID0gY3JlYXRlUmVmZXJlbmNlPEJ1dHRvbj4oKTtcblx0XHRjb25zdCAkZWFzeUZpbGxDbGVhckFsbEJ1dHRvbiA9IGNyZWF0ZVJlZmVyZW5jZTxCdXR0b24+KCk7XG5cdFx0Y29uc3QgZGlhbG9nID0gKFxuXHRcdFx0PERpYWxvZ1xuXHRcdFx0XHR0aXRsZT17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfRUFTWUVESVRfRElBTE9HX1RJVExFXCIpfVxuXHRcdFx0XHRyZXNpemFibGU9e3RydWV9XG5cdFx0XHRcdGhvcml6b250YWxTY3JvbGxpbmc9e2ZhbHNlfVxuXHRcdFx0XHR2ZXJ0aWNhbFNjcm9sbGluZz17ZmFsc2V9XG5cdFx0XHRcdGNvbnRlbnRXaWR0aD1cIjExMDBweFwiXG5cdFx0XHRcdGNvbnRlbnRIZWlnaHQ9e1wiODAwcHhcIn1cblx0XHRcdFx0ZXNjYXBlSGFuZGxlcj17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdHRoaXMub25DYW5jZWwoKTtcblx0XHRcdFx0fX1cblx0XHRcdFx0YWZ0ZXJDbG9zZT17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdHRoaXMuZGVzdHJveSgpO1xuXHRcdFx0XHR9fVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGNvbnRlbnQ6IChcblx0XHRcdFx0XHRcdDxGbGV4Qm94IGRpcmVjdGlvbj17RmxleERpcmVjdGlvbi5Sb3d9IHJlbmRlclR5cGU9e1wiQmFyZVwifSB3aWR0aD17XCIxMDAlXCJ9IGhlaWdodD17XCIxMDAlXCJ9PlxuXHRcdFx0XHRcdFx0XHQ8RmxleEJveFxuXHRcdFx0XHRcdFx0XHRcdHdpZHRoPXtcIjQwJVwifVxuXHRcdFx0XHRcdFx0XHRcdGlkPXt0aGlzLmNyZWF0ZUlkKFwiaW5wdXRBcmVhXCIpfVxuXHRcdFx0XHRcdFx0XHRcdGRpcmVjdGlvbj17RmxleERpcmVjdGlvbi5Db2x1bW59XG5cdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlDb250ZW50UGFkZGluZ1wifVxuXHRcdFx0XHRcdFx0XHRcdHJlbmRlclR5cGU9e1wiQmFyZVwifVxuXHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0PEZvcm1hdHRlZFRleHRcblx0XHRcdFx0XHRcdFx0XHRcdGh0bWxUZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9ESUFMT0dfREVTQ1JJUFRJT05cIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBVaVRpbnlNYXJnaW5Cb3R0b21cIn1cblx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdHtlYXN5RWRpdERlc2NyaXB0aW9ufVxuXHRcdFx0XHRcdFx0XHRcdDxUZXh0QXJlYVxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU9e3RoaXMuYmluZFN0YXRlKFwiZW50ZXJlZFRleHRcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBVaVRpbnlNYXJnaW5Cb3R0b21cIn1cblx0XHRcdFx0XHRcdFx0XHRcdGxpdmVDaGFuZ2U9eyhlKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUuY3VycmVudGx5RW50ZXJlZFRleHQgPSBlLmdldFBhcmFtZXRlcihcInZhbHVlXCIpID8/IFwiXCI7XG5cdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9URVhUQVJFQV9QTEFDRUhPTERFUlwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdHJvd3M9ezIwfVxuXHRcdFx0XHRcdFx0XHRcdFx0Z3Jvd2luZz17dHJ1ZX1cblx0XHRcdFx0XHRcdFx0XHRcdGdyb3dpbmdNYXhMaW5lcz17MzB9XG5cdFx0XHRcdFx0XHRcdFx0XHRtYXhMZW5ndGg9e01BWF9MRU5HVEh9XG5cdFx0XHRcdFx0XHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17ZWFzeUVkaXREZXNjcmlwdGlvbn1cblx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdDxUZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBVaVRpbnlNYXJnaW5Cb3R0b21cIn1cblx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0cGF0aDogXCIvY3VycmVudGx5RW50ZXJlZFRleHRcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0bW9kZWw6IFwiJGNvbXBvbmVudFN0YXRlXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvcm1hdHRlcjogdGhpcy5mb3JtYXRSZW1haW5pbmdDaGFyYWN0ZXJzLmJpbmQodGhpcylcblx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0e3sgbGF5b3V0RGF0YTogPEZsZXhJdGVtRGF0YSBhbGlnblNlbGY9XCJFbmRcIiAvPiB9fVxuXHRcdFx0XHRcdFx0XHRcdDwvVGV4dD5cblx0XHRcdFx0XHRcdFx0XHQ8SEJveD5cblx0XHRcdFx0XHRcdFx0XHRcdHt7IGxheW91dERhdGE6IDxGbGV4SXRlbURhdGEgYWxpZ25TZWxmPVwiRW5kXCIgLz4gfX1cblx0XHRcdFx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfRUFTWUVESVRfQlVUVE9OXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpY29uPXtcInNhcC1pY29uOi8vYWlcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0ZW5hYmxlZD17bm90KGlzRW1wdHkodGhpcy5iaW5kU3RhdGUoXCJjdXJyZW50bHlFbnRlcmVkVGV4dFwiKSkpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17dGhpcy5vbkVhc3lFZGl0UHJlc3NlZC5iaW5kKHRoaXMpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZWY9eyRlYXN5RmlsbEJ1dHRvbn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlTbWFsbE1hcmdpbkVuZFwifVxuXHRcdFx0XHRcdFx0XHRcdFx0PjwvQnV0dG9uPlxuXHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9ESUFMT0dfQ0xFQVJfQUxMXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlPXtCdXR0b25UeXBlLlRyYW5zcGFyZW50fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17dGhpcy5vbkNsZWFyQWxsLmJpbmQodGhpcyl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlZj17JGVhc3lGaWxsQ2xlYXJBbGxCdXR0b259XG5cdFx0XHRcdFx0XHRcdFx0XHQ+PC9CdXR0b24+XG5cdFx0XHRcdFx0XHRcdFx0PC9IQm94PlxuXHRcdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0XHRcdDxGbGV4Qm94XG5cdFx0XHRcdFx0XHRcdFx0aWQ9e3RoaXMuY3JlYXRlSWQoXCJyZXZpZXdBcmVhXCIpfVxuXHRcdFx0XHRcdFx0XHRcdHJlZj17dGhpcy4kcmV2aWV3QXJlYX1cblx0XHRcdFx0XHRcdFx0XHR3aWR0aD17XCI2MCVcIn1cblx0XHRcdFx0XHRcdFx0XHRyZW5kZXJUeXBlPXtcIkJhcmVcIn1cblx0XHRcdFx0XHRcdFx0XHRidXN5PXt0aGlzLmJpbmRTdGF0ZShcImlzQnVzeVwiKX1cblx0XHRcdFx0XHRcdFx0XHRkaXJlY3Rpb249e0ZsZXhEaXJlY3Rpb24uQ29sdW1ufVxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcEZlRWFzeUZpbGxSZXZpZXdBcmVhXCJ9XG5cdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHQ8SWxsdXN0cmF0ZWRNZXNzYWdlXG5cdFx0XHRcdFx0XHRcdFx0XHRpbGx1c3RyYXRpb25UeXBlPXtJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlLk5vU2VhcmNoUmVzdWx0c31cblx0XHRcdFx0XHRcdFx0XHRcdGlsbHVzdHJhdGlvblNpemU9e0lsbHVzdHJhdGVkTWVzc2FnZVNpemUuTGFyZ2V9XG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZT17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfRUFTWUVESVRfRElBTE9HX1JFVklFV19USVRMRVwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uPXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9ESUFMT0dfUkVWSUVXX0RFU0NSSVBUSU9OXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17ZXF1YWwodGhpcy5iaW5kU3RhdGUoXCJzdGF0ZVR5cGVcIiksIFwiSW5pdGlhbFwiKX1cblx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdDxJbGx1c3RyYXRlZE1lc3NhZ2Vcblx0XHRcdFx0XHRcdFx0XHRcdGlsbHVzdHJhdGlvblR5cGU9e0lsbHVzdHJhdGVkTWVzc2FnZVR5cGUuTm9FbnRyaWVzfVxuXHRcdFx0XHRcdFx0XHRcdFx0aWxsdXN0cmF0aW9uU2l6ZT17SWxsdXN0cmF0ZWRNZXNzYWdlU2l6ZS5MYXJnZX1cblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlPXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9ESUFMT0dfTk9fRU5UUklFU19USVRMRVwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uPXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9ESUFMT0dfTk9fRU5UUklFU19ERVNDUklQVElPTlwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e2VxdWFsKHRoaXMuYmluZFN0YXRlKFwic3RhdGVUeXBlXCIpLCBcIk5vRW50cmllc1wiKX1cblx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdDxJbGx1c3RyYXRlZE1lc3NhZ2Vcblx0XHRcdFx0XHRcdFx0XHRcdGlsbHVzdHJhdGlvblR5cGU9e0lsbHVzdHJhdGVkTWVzc2FnZVR5cGUuVW5hYmxlVG9Mb2FkfVxuXHRcdFx0XHRcdFx0XHRcdFx0aWxsdXN0cmF0aW9uU2l6ZT17SWxsdXN0cmF0ZWRNZXNzYWdlU2l6ZS5MYXJnZX1cblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlPXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9ESUFMT0dfRVJST1JfVElUTEVcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbj17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfRUFTWUVESVRfRElBTE9HX0VSUk9SX0RFU0NSSVBUSU9OXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17ZXF1YWwodGhpcy5iaW5kU3RhdGUoXCJzdGF0ZVR5cGVcIiksIFwiRXJyb3JcIil9XG5cdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PC9GbGV4Qm94PlxuXHRcdFx0XHRcdFx0PC9GbGV4Qm94PlxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0Zm9vdGVyOiAoXG5cdFx0XHRcdFx0XHQ8T3ZlcmZsb3dUb29sYmFyPlxuXHRcdFx0XHRcdFx0XHQ8VG9vbGJhclNwYWNlciAvPlxuXHRcdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfRUFTWUVESVRfRElBTE9HX1NBVkVcIil9XG5cdFx0XHRcdFx0XHRcdFx0dHlwZT1cIkVtcGhhc2l6ZWRcIlxuXHRcdFx0XHRcdFx0XHRcdGVuYWJsZWQ9e2FuZCh0aGlzLmJpbmRTdGF0ZShcImhhc1ZhbHVlc1wiKSwgbm90KHRoaXMuYmluZFN0YXRlKFwiaGFzRXJyb3JcIikpKX1cblx0XHRcdFx0XHRcdFx0XHRwcmVzcz17dGhpcy5vbkNvbmZpcm0uYmluZCh0aGlzKX1cblx0XHRcdFx0XHRcdFx0XHRyZWY9eyRlYXN5RmlsbFNhdmVCdXR0b259XG5cdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9ESUFMT0dfQ0FOQ0VMXCIpfVxuXHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJUcmFuc3BhcmVudFwiXG5cdFx0XHRcdFx0XHRcdFx0cHJlc3M9e3RoaXMub25DYW5jZWwuYmluZCh0aGlzKX1cblx0XHRcdFx0XHRcdFx0XHRyZWY9eyRlYXN5RmlsbENhbmNlbEJ1dHRvbn1cblx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdDwvT3ZlcmZsb3dUb29sYmFyPlxuXHRcdFx0XHRcdClcblx0XHRcdFx0fX1cblx0XHRcdDwvRGlhbG9nPlxuXHRcdCk7XG5cdFx0RkVTUkhlbHBlci5zZXRTZW1hbnRpY1N0ZXBuYW1lKCRlYXN5RmlsbEJ1dHRvbi5jdXJyZW50ISwgXCJwcmVzc1wiLCBcImZhaTplZjphbmFseXplVGV4dFwiKTtcblx0XHRGRVNSSGVscGVyLnNldFNlbWFudGljU3RlcG5hbWUoJGVhc3lGaWxsU2F2ZUJ1dHRvbi5jdXJyZW50ISwgXCJwcmVzc1wiLCBcImZhaTplZjpzYXZlXCIpO1xuXHRcdEZFU1JIZWxwZXIuc2V0U2VtYW50aWNTdGVwbmFtZSgkZWFzeUZpbGxDYW5jZWxCdXR0b24uY3VycmVudCEsIFwicHJlc3NcIiwgXCJmYWk6ZWY6Y2FuY2VsXCIpO1xuXHRcdEZFU1JIZWxwZXIuc2V0U2VtYW50aWNTdGVwbmFtZSgkZWFzeUZpbGxDbGVhckFsbEJ1dHRvbi5jdXJyZW50ISwgXCJwcmVzc1wiLCBcImZhaTplZjpjbGVhckFsbFwiKTtcblx0XHRyZXR1cm4gZGlhbG9nO1xuXHR9XG5cblx0YXN5bmMgX2dldFZhbHVlTGlzdChwcm9wZXJ0eVBhdGg6IHN0cmluZyk6IFByb21pc2U8VmFsdWVMaXN0SW5mbyB8IHVuZGVmaW5lZD4ge1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHRoaXMuZ2V0TWV0YU1vZGVsKCkhO1xuXHRcdGNvbnN0IHZhbHVlTGlzdHMgPSBhd2FpdCBWYWx1ZUxpc3RIZWxwZXIuZ2V0VmFsdWVMaXN0SW5mbyh1bmRlZmluZWQsIHByb3BlcnR5UGF0aCwgdW5kZWZpbmVkLCBtZXRhTW9kZWwpO1xuXHRcdHJldHVybiB2YWx1ZUxpc3RzWzBdO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBeURBLE1BQU1BLFVBQVUsR0FBRyxJQUFJO0VBQUMsSUFHSEMsY0FBYyxJQUFBQyxJQUFBLEdBRGxDQyxjQUFjLENBQUMsaUNBQWlDLENBQUMsRUFBQUMsS0FBQSxHQWVoREMsZUFBZSxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUdqQkQsZUFBZSxDQUFDLENBQUMsRUFBQUUsS0FBQSxHQUdqQkMsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFXLENBQUMsQ0FBQyxFQUFBUCxJQUFBLENBQUFRLE1BQUEsSUFBQUMsT0FBQSwwQkFBQUMsY0FBQTtJQUsvQixTQUFBWCxlQUFZWSxTQUFnRCxFQUFFQyxLQUFvQyxFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUNuR0EsS0FBQSxHQUFBSCxjQUFBLENBQUFJLElBQUEsT0FBTUgsU0FBUyxFQUFFQyxLQUFLLENBQUM7TUFBQ0csMEJBQUEsQ0FBQUYsS0FBQSxpQkFBQUcsV0FBQSxFQUFBSCxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsc0JBQUFJLFlBQUEsRUFBQUosS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLHVCQUFBSyxZQUFBLEVBQUFMLEtBQUE7TUFBQSxPQUFBQSxLQUFBO0lBQ3pCO0lBQUNNLFFBQUEsR0FBQXBCLGNBQUE7SUFBQXFCLGNBQUEsQ0FBQXJCLGNBQUEsRUFBQVcsY0FBQTtJQUFBLElBQUFXLE1BQUEsR0FBQXRCLGNBQUEsQ0FBQXVCLFNBQUE7SUFBQUQsTUFBQSxDQUVERSxtQkFBbUIsR0FBbkIsU0FBQUEsbUJBQW1CQSxDQUFDQyxlQUFrQyxFQUFRO01BQzdEZCxjQUFBLENBQUFZLFNBQUEsQ0FBTUMsbUJBQW1CLENBQUFULElBQUEsT0FBQ1UsZUFBZTtN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
|
|
635
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQVhfTEVOR1RIIiwiRWFzeUZpbGxEaWFsb2ciLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImRlZmluZVJlZmVyZW5jZSIsIl9kZWMzIiwiX2RlYzQiLCJwcm9wZXJ0eSIsInR5cGUiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJpZE9yUHJvcHMiLCJwcm9wcyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwib25NZXRhZGF0YUF2YWlsYWJsZSIsIl9vd25lckNvbXBvbmVudCIsInN0YXRlIiwibmV3VmFsdWVzIiwiaGFzVmFsdWVzIiwiaGFzRXJyb3IiLCJzdGF0ZVR5cGUiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsIm9uQ29uZmlybSIsIl9lIiwibWFpblBhZ2VCaW5kaW5nQ29udGV4dCIsImdldFBhZ2VDb250cm9sbGVyIiwiZ2V0VmlldyIsImdldEJpbmRpbmdDb250ZXh0IiwiYWxsUHJvcHMiLCJfYmluZGluZ0NvbnRleHQiLCJnZXRPYmplY3QiLCJuZXdWYWx1ZXNLZXkiLCJzdGFydHNXaXRoIiwic2V0UHJvcGVydHkiLCJwdXNoIiwiYXBwbHlVcGRhdGVzRm9yQ2hhbmdlIiwiZ2V0UGF0aCIsIlByb21pc2UiLCJhbGwiLCJyZWZyZXNoIiwiZXJyIiwiTG9nIiwiZXJyb3IiLCJjbG9zZSIsInZpZXciLCJwcm9wZXJ0eVBhdGhGb3JVcGRhdGUiLCJtZXRhTW9kZWwiLCJnZXRNb2RlbCIsImdldE1ldGFNb2RlbCIsIm1ldGFDb250ZXh0IiwiZ2V0TWV0YUNvbnRleHQiLCJkYXRhTW9kZWxPYmplY3QiLCJNZXRhTW9kZWxDb252ZXJ0ZXIiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJ0YXJnZXRDb250ZXh0Iiwic2lkZUVmZmVjdHNQcm9taXNlcyIsInNpZGVFZmZlY3RzU2VydmljZSIsIkNvbGxhYm9yYXRpb25VdGlscyIsImdldEFwcENvbXBvbmVudCIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsInRhcmdldE1ldGFQYXRoIiwiZ2V0TWV0YVBhdGgiLCJyZWxhdGl2ZU1ldGFQYXRoRm9yVXBkYXRlIiwicmVwbGFjZSIsInNsaWNlIiwicmVxdWVzdFNpZGVFZmZlY3RzIiwiZmllbGRHcm91cElkcyIsImNvbXB1dGVGaWVsZEdyb3VwSWRzIiwidGFyZ2V0RW50aXR5VHlwZSIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInRhcmdldE9iamVjdCIsImxlbmd0aCIsInBhZ2VDb250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsInNpZGVFZmZlY3RzTWFwRm9yRmllbGRHcm91cCIsIl9zaWRlRWZmZWN0cyIsImdldFNpZGVFZmZlY3RzTWFwRm9yRmllbGRHcm91cHMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsInNpZGVFZmZlY3ROYW1lIiwic2lkZUVmZmVjdCIsInNpZGVFZmZlY3RzIiwiY29udGV4dCIsInVuZGVmaW5lZCIsIm9uQ2FuY2VsIiwib3BlbiIsIl9nZXRGaWVsZE1hcHBpbmciLCJkZWZpbml0aW9uUGFnZSIsImZpZWxkTWFwcGluZyIsInBhZ2VUYXJnZXQiLCJnZXRUYXJnZXQiLCJlbnRpdHlUeXBlIiwiX3R5cGUiLCJ0YXJnZXRUeXBlIiwiZW50aXR5UHJvcGVydHkiLCJlbnRpdHlQcm9wZXJ0aWVzIiwiaXNJbW11dGFibGUiLCJpc0NvbXB1dGVkIiwiYW5ub3RhdGlvbnMiLCJVSSIsIkhpZGRlbiIsInZhbHVlT2YiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJnZXRMYWJlbCIsImRhdGFUeXBlIiwiZ2VuZXJhdGVMaXN0QmluZGluZyIsInBhdGgiLCJtb2RlbCIsInRyYW5zaWVudExpc3RCaW5kaW5nIiwiYmluZExpc3QiLCIkJHVwZGF0ZUdyb3VwSWQiLCJyZWZyZXNoSW50ZXJuYWwiLCJvblRodW1iUHJlc3MiLCJ0aHVtYlVwQnV0dG9uIiwidGh1bWJEb3duQnV0dG9uIiwic2V0RW5hYmxlZCIsIk1lc3NhZ2VUb2FzdCIsInNob3ciLCJnZXRUcmFuc2xhdGVkVGV4dCIsImZvcm1hdFJlbWFpbmluZ0NoYXJhY3RlcnMiLCJ2YWx1ZSIsIm9uQ2xlYXJBbGwiLCJoYXNJbmNvcnJlY3RWYWx1ZXMiLCJlbnRlcmVkVGV4dCIsImN1cnJlbnRseUVudGVyZWRUZXh0IiwiaW5jb3JyZWN0VmFsdWVzIiwib25WYWxpZGF0ZUZpZWxkR3JvdXBzIiwiYWxsRmllbGRzIiwiJHJldmlld0FyZWEiLCJjdXJyZW50IiwiZ2V0Q29udHJvbHNCeUZpZWxkR3JvdXBJZCIsInNvbWUiLCJmaWVsZCIsImRhdGEiLCJnZXRWYWx1ZVN0YXRlIiwib25GaWVsZENoYW5nZSIsImV2IiwiZ2V0U291cmNlIiwicmVtb3ZlTWVzc2FnZSIsIm9uRWFzeUVkaXRQcmVzc2VkIiwibWV0YVBhdGgiLCJnZXRPd25lclBhZ2VEZWZpbml0aW9uIiwiZWFzeUZpbGxMaWJyYXJ5IiwiX191aTVfcmVxdWlyZV9hc3luYyIsIm9kYXRhTW9kZWwiLCJjcmVhdGUiLCJpc0J1c3kiLCJhaUNhbGxSZXN1bHQiLCJleHRyYWN0RmllbGRWYWx1ZXNGcm9tVGV4dCIsInN1Y2Nlc3MiLCJ1cGRhdGVkRmllbGRzIiwiZWRpdGFibGVGaWVsZHMiLCJnZXRFZGl0YWJsZUZpZWxkcyIsIiRzY3JvbGxDb250YWluZXIiLCJkZXN0cm95IiwicmV2aWV3QXJlYUZvcm0iLCJfanN4IiwiRm9ybSIsImVkaXRhYmxlIiwiY2xhc3MiLCJ2aXNpYmxlIiwiYmluZFN0YXRlIiwiY2hpbGRyZW4iLCJsYXlvdXQiLCJDb2x1bW5MYXlvdXQiLCJjb2x1bW5zTSIsImNvbHVtbnNMIiwiY29sdW1uc1hMIiwibGFiZWxDZWxsc0xhcmdlIiwiZW1wdHlDZWxsc0xhcmdlIiwiaW5jb3JyZWN0VmFsdWVzRm9ybSIsIndhcm5pbmdNZXNzYWdlIiwiTWVzc2FnZVN0cmlwIiwidGV4dCIsInNob3dJY29uIiwiVG9nZ2xlQnV0dG9uIiwiaWNvbiIsInRvb2x0aXAiLCJwcmVzcyIsIkZFU1JIZWxwZXIiLCJzZXRTZW1hbnRpY1N0ZXBuYW1lIiwiYWlOb3RpY2VUZXh0IiwiX2pzeHMiLCJIQm94IiwiYWxpZ25JdGVtcyIsImVxdWFsIiwiQUlMaW5rTm90aWNlIiwiVGV4dCIsInByZXZpb3VzVmFsdWVzRm9ybUNvbnRhaW5lciIsIkZvcm1Db250YWluZXIiLCJ0aXRsZSIsIkNvcmVUaXRsZSIsInByZXZpb3VzVmFsdWVzRm9ybUNvbnRhaW5lcjIiLCJuZXdWYWx1ZXNGb3JtQ29udGFpbmVyIiwibmV3VmFsdWVzRm9ybUNvbnRhaW5lcjIiLCJ1aUNvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsInNldEJpbmRpbmdDb250ZXh0IiwiYWRkRm9ybUNvbnRhaW5lciIsInNldE1vZGVsIiwiJHZCb3giLCJjcmVhdGVSZWZlcmVuY2UiLCJhZGRJdGVtIiwiU2Nyb2xsQ29udGFpbmVyIiwicmVmIiwidmVydGljYWwiLCJWQm94IiwiaXRlbXMiLCJsYXlvdXREYXRhIiwiRmxleEl0ZW1EYXRhIiwiYWxpZ25TZWxmIiwiVGl0bGUiLCJ1cGRhdGVkRmllbGQiLCJpc0VkaXRhYmxlIiwiYWRkRm9ybUVsZW1lbnQiLCJGb3JtRWxlbWVudCIsImxhYmVsIiwiRmllbGQiLCJjb250ZXh0UGF0aCIsImdldE93bmVyQ29udGV4dFBhdGgiLCJyZWFkT25seSIsInJlcXVpcmVkIiwibmV3RmllbGQiLCJfZ2V0T3duZXIiLCJydW5Bc093bmVyIiwiX3JlcXVpcmVzVmFsaWRhdGlvbiIsInZhbGlkYXRlRmllbGRHcm91cCIsImJpbmQiLCJjaGFuZ2UiLCJmaWVsZHMiLCJtZXRhTW9kZWxPYmoiLCJ2YWx1ZUV4cHJlc3Npb24iLCJBbm5vdGF0aW9uSGVscGVyIiwiZm9ybWF0IiwicGFyc2VkQmluZGluZyIsIkJpbmRpbmdJbmZvIiwicGFyc2UiLCJlcnJvck1lc3NhZ2UiLCJ2YWxpZGF0ZVZhbHVlIiwiZSIsIm1lc3NhZ2UiLCJ2YWx1ZUxpc3QiLCJfZ2V0VmFsdWVMaXN0IiwiaGFzVkhFcnJvciIsIlZhbHVlTGlzdEhlbHBlciIsImlzVmFsdWVMaXN0U2VhcmNoYWJsZSIsInZhbHVlcyIsInJlc29sdmVUb2tlblZhbHVlIiwib3BlcmF0b3IiLCJGaWx0ZXJPcGVyYXRvciIsIkVRIiwic2VsZWN0ZWRWYWx1ZXMiLCJub01hdGNoIiwic2V0VGltZW91dCIsInNldFZhbHVlIiwibWVzc2FnZUlkIiwiYWRkTWVzc2FnZSIsIk1lc3NhZ2VUeXBlIiwiRXJyb3IiLCJlYXN5RWRpdERlc2NyaXB0aW9uIiwiSW52aXNpYmxlVGV4dCIsIiRlYXN5RmlsbEJ1dHRvbiIsIiRlYXN5RmlsbFNhdmVCdXR0b24iLCIkZWFzeUZpbGxDYW5jZWxCdXR0b24iLCIkZWFzeUZpbGxDbGVhckFsbEJ1dHRvbiIsImRpYWxvZyIsIkRpYWxvZyIsInJlc2l6YWJsZSIsImhvcml6b250YWxTY3JvbGxpbmciLCJ2ZXJ0aWNhbFNjcm9sbGluZyIsImNvbnRlbnRXaWR0aCIsImNvbnRlbnRIZWlnaHQiLCJlc2NhcGVIYW5kbGVyIiwiYWZ0ZXJDbG9zZSIsIkZsZXhCb3giLCJkaXJlY3Rpb24iLCJGbGV4RGlyZWN0aW9uIiwiUm93IiwicmVuZGVyVHlwZSIsIndpZHRoIiwiaGVpZ2h0IiwiaWQiLCJjcmVhdGVJZCIsIkNvbHVtbiIsIkZvcm1hdHRlZFRleHQiLCJodG1sVGV4dCIsIlRleHRBcmVhIiwibGl2ZUNoYW5nZSIsImdldFBhcmFtZXRlciIsInBsYWNlaG9sZGVyIiwicm93cyIsImdyb3dpbmciLCJncm93aW5nTWF4TGluZXMiLCJtYXhMZW5ndGgiLCJhcmlhTGFiZWxsZWRCeSIsImZvcm1hdHRlciIsIkJ1dHRvbiIsImVuYWJsZWQiLCJub3QiLCJpc0VtcHR5IiwiQnV0dG9uVHlwZSIsIlRyYW5zcGFyZW50IiwiYnVzeSIsIklsbHVzdHJhdGVkTWVzc2FnZSIsImlsbHVzdHJhdGlvblR5cGUiLCJJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlIiwiTm9TZWFyY2hSZXN1bHRzIiwiaWxsdXN0cmF0aW9uU2l6ZSIsIklsbHVzdHJhdGVkTWVzc2FnZVNpemUiLCJMYXJnZSIsIk5vRW50cmllcyIsIlVuYWJsZVRvTG9hZCIsImZvb3RlciIsIk92ZXJmbG93VG9vbGJhciIsIlRvb2xiYXJTcGFjZXIiLCJhbmQiLCJwcm9wZXJ0eVBhdGgiLCJ2YWx1ZUxpc3RzIiwiZ2V0VmFsdWVMaXN0SW5mbyIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkVhc3lGaWxsRGlhbG9nLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudGl0eVR5cGUsIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IGFuZCwgZXF1YWwsIGlzRW1wdHksIG5vdCB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBFbmhhbmNlV2l0aFVJNSwgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgY3JlYXRlUmVmZXJlbmNlLCBkZWZpbmVSZWZlcmVuY2UsIGRlZmluZVVJNUNsYXNzLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IHsgQUlMaW5rTm90aWNlIH0gZnJvbSBcInNhcC9mZS9jb250cm9scy9lYXN5RmlsdGVyL0FJTm90aWNlXCI7XG5pbXBvcnQgdHlwZSB7IEZFVmlldyB9IGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHR5cGUgeyBGaWVsZFNpZGVFZmZlY3REaWN0aW9uYXJ5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1NpZGVFZmZlY3RzXCI7XG5pbXBvcnQgeyBDb2xsYWJvcmF0aW9uVXRpbHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvY29sbGFib3JhdGlvbi9Db2xsYWJvcmF0aW9uQ29tbW9uXCI7XG5pbXBvcnQgKiBhcyBNZXRhTW9kZWxDb252ZXJ0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IERlZmluaXRpb25QYWdlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2RlZmluaXRpb24vRkVEZWZpbml0aW9uXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgaXNDb21wdXRlZCwgaXNJbW11dGFibGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IEZpZWxkIGZyb20gXCJzYXAvZmUvbWFjcm9zL0ZpZWxkXCI7XG5pbXBvcnQgeyByZXNvbHZlVG9rZW5WYWx1ZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2FpL0Vhc3lGaWx0ZXJEYXRhRmV0Y2hlclwiO1xuaW1wb3J0IFZhbHVlTGlzdEhlbHBlciwgeyB0eXBlIFZhbHVlTGlzdEluZm8gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC92YWx1ZWhlbHAvVmFsdWVMaXN0SGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IEJ1dHRvbiRQcmVzc0V2ZW50IH0gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgRGlhbG9nIGZyb20gXCJzYXAvbS9EaWFsb2dcIjtcbmltcG9ydCBGbGV4Qm94IGZyb20gXCJzYXAvbS9GbGV4Qm94XCI7XG5pbXBvcnQgRmxleEl0ZW1EYXRhIGZyb20gXCJzYXAvbS9GbGV4SXRlbURhdGFcIjtcbmltcG9ydCBGb3JtYXR0ZWRUZXh0IGZyb20gXCJzYXAvbS9Gb3JtYXR0ZWRUZXh0XCI7XG5pbXBvcnQgSEJveCBmcm9tIFwic2FwL20vSEJveFwiO1xuaW1wb3J0IElsbHVzdHJhdGVkTWVzc2FnZSBmcm9tIFwic2FwL20vSWxsdXN0cmF0ZWRNZXNzYWdlXCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlU2l6ZSBmcm9tIFwic2FwL20vSWxsdXN0cmF0ZWRNZXNzYWdlU2l6ZVwiO1xuaW1wb3J0IElsbHVzdHJhdGVkTWVzc2FnZVR5cGUgZnJvbSBcInNhcC9tL0lsbHVzdHJhdGVkTWVzc2FnZVR5cGVcIjtcbmltcG9ydCBNZXNzYWdlU3RyaXAgZnJvbSBcInNhcC9tL01lc3NhZ2VTdHJpcFwiO1xuaW1wb3J0IE1lc3NhZ2VUb2FzdCBmcm9tIFwic2FwL20vTWVzc2FnZVRvYXN0XCI7XG5pbXBvcnQgT3ZlcmZsb3dUb29sYmFyIGZyb20gXCJzYXAvbS9PdmVyZmxvd1Rvb2xiYXJcIjtcbmltcG9ydCBTY3JvbGxDb250YWluZXIgZnJvbSBcInNhcC9tL1Njcm9sbENvbnRhaW5lclwiO1xuaW1wb3J0IFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCBUZXh0QXJlYSBmcm9tIFwic2FwL20vVGV4dEFyZWFcIjtcbmltcG9ydCBUaXRsZSBmcm9tIFwic2FwL20vVGl0bGVcIjtcbmltcG9ydCBUb2dnbGVCdXR0b24gZnJvbSBcInNhcC9tL1RvZ2dsZUJ1dHRvblwiO1xuaW1wb3J0IFRvb2xiYXJTcGFjZXIgZnJvbSBcInNhcC9tL1Rvb2xiYXJTcGFjZXJcIjtcbmltcG9ydCBWQm94IGZyb20gXCJzYXAvbS9WQm94XCI7XG5pbXBvcnQgeyBCdXR0b25UeXBlLCBGbGV4RGlyZWN0aW9uIH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCBCaW5kaW5nSW5mbyBmcm9tIFwic2FwL3VpL2Jhc2UvQmluZGluZ0luZm9cIjtcbmltcG9ydCB0eXBlIFVJNUV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sJFZhbGlkYXRlRmllbGRHcm91cEV2ZW50IH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBJbnZpc2libGVUZXh0IGZyb20gXCJzYXAvdWkvY29yZS9JbnZpc2libGVUZXh0XCI7XG5pbXBvcnQgQ29yZVRpdGxlIGZyb20gXCJzYXAvdWkvY29yZS9UaXRsZVwiO1xuaW1wb3J0IE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgQ29sdW1uTGF5b3V0IGZyb20gXCJzYXAvdWkvbGF5b3V0L2Zvcm0vQ29sdW1uTGF5b3V0XCI7XG5pbXBvcnQgRm9ybSBmcm9tIFwic2FwL3VpL2xheW91dC9mb3JtL0Zvcm1cIjtcbmltcG9ydCBGb3JtQ29udGFpbmVyIGZyb20gXCJzYXAvdWkvbGF5b3V0L2Zvcm0vRm9ybUNvbnRhaW5lclwiO1xuaW1wb3J0IEZvcm1FbGVtZW50IGZyb20gXCJzYXAvdWkvbGF5b3V0L2Zvcm0vRm9ybUVsZW1lbnRcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgRmlsdGVyT3BlcmF0b3IgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJPcGVyYXRvclwiO1xuaW1wb3J0IEFubm90YXRpb25IZWxwZXIgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Bbm5vdGF0aW9uSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcbmltcG9ydCBGRVNSSGVscGVyIGZyb20gXCJzYXAvdWkvcGVyZm9ybWFuY2UvdHJhY2UvRkVTUkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBGaWVsZE1ldGFkYXRhIH0gZnJvbSBcInV4L2VuZy9maW9yaWFpL3JldXNlL2Vhc3lmaWxsL0Vhc3lGaWxsXCI7XG5cbmNvbnN0IE1BWF9MRU5HVEggPSAyMDAwO1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLmFpLkVhc3lGaWxsRGlhbG9nXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFYXN5RmlsbERpYWxvZyBleHRlbmRzIEJ1aWxkaW5nQmxvY2s8XG5cdERpYWxvZyxcblx0e1xuXHRcdGVudGVyZWRUZXh0OiBzdHJpbmc7XG5cdFx0aXNCdXN5OiBib29sZWFuO1xuXHRcdGN1cnJlbnRseUVudGVyZWRUZXh0OiBzdHJpbmc7XG5cdFx0aW5jb3JyZWN0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblx0XHRuZXdWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXHRcdGhhc1ZhbHVlczogYm9vbGVhbjtcblx0XHRoYXNFcnJvcjogYm9vbGVhbjtcblx0XHRoYXNJbmNvcnJlY3RWYWx1ZXM6IGJvb2xlYW47XG5cdFx0c3RhdGVUeXBlOiBcIkluaXRpYWxcIiB8IFwiTm9FbnRyaWVzXCIgfCBcIkVycm9yXCIgfCBcIkhhc0VudHJpZXNcIjtcblx0fVxuPiB7XG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHQkcmV2aWV3QXJlYSE6IFJlZjxGbGV4Qm94PjtcblxuXHRAZGVmaW5lUmVmZXJlbmNlKClcblx0JHNjcm9sbENvbnRhaW5lciE6IFJlZjxGbGV4Qm94PjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcIkZ1bmN0aW9uXCIgfSlcblx0Z2V0RWRpdGFibGVGaWVsZHM/OiBGdW5jdGlvbjtcblxuXHRwcml2YXRlIF9iaW5kaW5nQ29udGV4dD86IENvbnRleHQ7XG5cblx0Y29uc3RydWN0b3IoaWRPclByb3BzOiBzdHJpbmcgfCBQcm9wZXJ0aWVzT2Y8RWFzeUZpbGxEaWFsb2c+LCBwcm9wcz86IFByb3BlcnRpZXNPZjxFYXN5RmlsbERpYWxvZz4pIHtcblx0XHRzdXBlcihpZE9yUHJvcHMsIHByb3BzKTtcblx0fVxuXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoX293bmVyQ29tcG9uZW50OiBUZW1wbGF0ZUNvbXBvbmVudCk6IHZvaWQge1xuXHRcdHN1cGVyLm9uTWV0YWRhdGFBdmFpbGFibGUoX293bmVyQ29tcG9uZW50KTtcblx0XHR0aGlzLnN0YXRlLm5ld1ZhbHVlcyA9IHt9O1xuXHRcdHRoaXMuc3RhdGUuaGFzVmFsdWVzID0gZmFsc2U7XG5cdFx0dGhpcy5zdGF0ZS5oYXNFcnJvciA9IGZhbHNlO1xuXHRcdHRoaXMuc3RhdGUuc3RhdGVUeXBlID0gXCJJbml0aWFsXCI7XG5cdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdH1cblxuXHRhc3luYyBvbkNvbmZpcm0oX2U6IEJ1dHRvbiRQcmVzc0V2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gVmFsaWRhdGUgdGhlIGRhdGEgaGFuZGxpbmdcblx0XHRjb25zdCBtYWluUGFnZUJpbmRpbmdDb250ZXh0ID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLmdldFZpZXcoKT8uZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0XHRjb25zdCBhbGxQcm9wcyA9IFtdO1xuXHRcdGNvbnN0IG5ld1ZhbHVlcyA9IHRoaXMuX2JpbmRpbmdDb250ZXh0Py5nZXRPYmplY3QoKSA/PyB0aGlzLnN0YXRlLm5ld1ZhbHVlcztcblx0XHRmb3IgKGNvbnN0IG5ld1ZhbHVlc0tleSBpbiBuZXdWYWx1ZXMpIHtcblx0XHRcdGlmIChuZXdWYWx1ZXNLZXkgIT09IFwiX19iaW5kaW5nSW5mb1wiICYmICFuZXdWYWx1ZXNLZXkuc3RhcnRzV2l0aChcIkAkXCIpKSB7XG5cdFx0XHRcdGlmICh0eXBlb2YgbmV3VmFsdWVzW25ld1ZhbHVlc0tleV0gIT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0XHRtYWluUGFnZUJpbmRpbmdDb250ZXh0Py5zZXRQcm9wZXJ0eShuZXdWYWx1ZXNLZXksIG5ld1ZhbHVlc1tuZXdWYWx1ZXNLZXldKTtcblx0XHRcdFx0XHRhbGxQcm9wcy5wdXNoKFxuXHRcdFx0XHRcdFx0dGhpcy5hcHBseVVwZGF0ZXNGb3JDaGFuZ2UodGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLmdldFZpZXcoKSwgbWFpblBhZ2VCaW5kaW5nQ29udGV4dC5nZXRQYXRoKG5ld1ZhbHVlc0tleSkpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHR0cnkge1xuXHRcdFx0YXdhaXQgUHJvbWlzZS5hbGwoYWxsUHJvcHMpO1xuXHRcdFx0bWFpblBhZ2VCaW5kaW5nQ29udGV4dC5yZWZyZXNoKCk7XG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJGYWlsZWQgdG8gdXBkYXRlIGRhdGEgYWZ0ZXIgY2hhbmdlOlwiICsgZXJyKTtcblx0XHR9XG5cdFx0Ly8gQ2xvc2Ugbm9uZXRoZWxlc3Ncblx0XHR0aGlzLmNvbnRlbnQ/LmNsb3NlKCk7XG5cdH1cblxuXHRhc3luYyBhcHBseVVwZGF0ZXNGb3JDaGFuZ2UodmlldzogRkVWaWV3LCBwcm9wZXJ0eVBhdGhGb3JVcGRhdGU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHZpZXcuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBtZXRhQ29udGV4dCA9IG1ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChwcm9wZXJ0eVBhdGhGb3JVcGRhdGUpO1xuXHRcdGNvbnN0IGRhdGFNb2RlbE9iamVjdCA9IE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8UHJvcGVydHk+KG1ldGFDb250ZXh0KTtcblx0XHRjb25zdCB0YXJnZXRDb250ZXh0ID0gdmlldy5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBzaWRlRWZmZWN0c1Byb21pc2VzOiBQcm9taXNlPHVua25vd24+W10gPSBbXTtcblx0XHRcdGNvbnN0IHNpZGVFZmZlY3RzU2VydmljZSA9IENvbGxhYm9yYXRpb25VdGlscy5nZXRBcHBDb21wb25lbnQodmlldykuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk7XG5cblx0XHRcdC8vIFdlIGhhdmUgYSB0YXJnZXQgY29udGV4dCwgc28gd2UgY2FuIHJldHJpZXZlIHRoZSB1cGRhdGVkIHByb3BlcnR5XG5cdFx0XHRjb25zdCB0YXJnZXRNZXRhUGF0aCA9IG1ldGFNb2RlbC5nZXRNZXRhUGF0aCh0YXJnZXRDb250ZXh0LmdldFBhdGgoKSk7XG5cdFx0XHRjb25zdCByZWxhdGl2ZU1ldGFQYXRoRm9yVXBkYXRlID0gbWV0YU1vZGVsLmdldE1ldGFQYXRoKHByb3BlcnR5UGF0aEZvclVwZGF0ZSkucmVwbGFjZSh0YXJnZXRNZXRhUGF0aCwgXCJcIikuc2xpY2UoMSk7XG5cdFx0XHRzaWRlRWZmZWN0c1Byb21pc2VzLnB1c2goc2lkZUVmZmVjdHNTZXJ2aWNlLnJlcXVlc3RTaWRlRWZmZWN0cyhbcmVsYXRpdmVNZXRhUGF0aEZvclVwZGF0ZV0sIHRhcmdldENvbnRleHQsIFwiJGF1dG9cIikpO1xuXG5cdFx0XHQvLyBHZXQgdGhlIGZpZWxkR3JvdXBJZHMgY29ycmVzcG9uZGluZyB0byBwYXRoRm9yVXBkYXRlXG5cdFx0XHRjb25zdCBmaWVsZEdyb3VwSWRzID0gc2lkZUVmZmVjdHNTZXJ2aWNlLmNvbXB1dGVGaWVsZEdyb3VwSWRzKFxuXHRcdFx0XHRkYXRhTW9kZWxPYmplY3QudGFyZ2V0RW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHRcdGRhdGFNb2RlbE9iamVjdC50YXJnZXRPYmplY3QhLmZ1bGx5UXVhbGlmaWVkTmFtZVxuXHRcdFx0KTtcblxuXHRcdFx0Ly8gRXhlY3V0ZSB0aGUgc2lkZSBlZmZlY3RzIGZvciB0aGUgZmllbGRHcm91cElkc1xuXHRcdFx0aWYgKGZpZWxkR3JvdXBJZHMubGVuZ3RoKSB7XG5cdFx0XHRcdGNvbnN0IHBhZ2VDb250cm9sbGVyID0gdmlldy5nZXRDb250cm9sbGVyKCk7XG5cdFx0XHRcdGNvbnN0IHNpZGVFZmZlY3RzTWFwRm9yRmllbGRHcm91cCA9IHBhZ2VDb250cm9sbGVyLl9zaWRlRWZmZWN0cy5nZXRTaWRlRWZmZWN0c01hcEZvckZpZWxkR3JvdXBzKFxuXHRcdFx0XHRcdGZpZWxkR3JvdXBJZHMsXG5cdFx0XHRcdFx0dGFyZ2V0Q29udGV4dFxuXHRcdFx0XHQpIGFzIEZpZWxkU2lkZUVmZmVjdERpY3Rpb25hcnk7XG5cdFx0XHRcdE9iamVjdC5rZXlzKHNpZGVFZmZlY3RzTWFwRm9yRmllbGRHcm91cCkuZm9yRWFjaCgoc2lkZUVmZmVjdE5hbWUpID0+IHtcblx0XHRcdFx0XHRjb25zdCBzaWRlRWZmZWN0ID0gc2lkZUVmZmVjdHNNYXBGb3JGaWVsZEdyb3VwW3NpZGVFZmZlY3ROYW1lXTtcblx0XHRcdFx0XHRzaWRlRWZmZWN0c1Byb21pc2VzLnB1c2goXG5cdFx0XHRcdFx0XHRwYWdlQ29udHJvbGxlci5fc2lkZUVmZmVjdHMucmVxdWVzdFNpZGVFZmZlY3RzKHNpZGVFZmZlY3Quc2lkZUVmZmVjdHMsIHNpZGVFZmZlY3QuY29udGV4dCwgXCIkYXV0b1wiLCB1bmRlZmluZWQsIHRydWUpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cblx0XHRcdGF3YWl0IFByb21pc2UuYWxsKHNpZGVFZmZlY3RzUHJvbWlzZXMpO1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0TG9nLmVycm9yKFwiRmFpbGVkIHRvIHVwZGF0ZSBkYXRhIGFmdGVyIGNoYW5nZTpcIiArIGVycik7XG5cdFx0XHR0aHJvdyBlcnI7XG5cdFx0fVxuXHR9XG5cblx0b25DYW5jZWwoKTogdm9pZCB7XG5cdFx0dGhpcy5jb250ZW50Py5jbG9zZSgpO1xuXHR9XG5cblx0b3BlbigpOiB2b2lkIHtcblx0XHR0aGlzLmNvbnRlbnQ/Lm9wZW4oKTtcblx0fVxuXG5cdF9nZXRGaWVsZE1hcHBpbmcoZGVmaW5pdGlvblBhZ2U6IERlZmluaXRpb25QYWdlIHwgdW5kZWZpbmVkKTogRmllbGRNZXRhZGF0YSB7XG5cdFx0Y29uc3QgZmllbGRNYXBwaW5nOiBGaWVsZE1ldGFkYXRhID0ge307XG5cdFx0aWYgKGRlZmluaXRpb25QYWdlKSB7XG5cdFx0XHRjb25zdCBwYWdlVGFyZ2V0ID0gZGVmaW5pdGlvblBhZ2UuZ2V0TWV0YVBhdGgoKS5nZXRUYXJnZXQoKTtcblx0XHRcdGxldCBlbnRpdHlUeXBlOiBFbnRpdHlUeXBlIHwgdW5kZWZpbmVkO1xuXHRcdFx0c3dpdGNoIChwYWdlVGFyZ2V0Ll90eXBlKSB7XG5cdFx0XHRcdGNhc2UgXCJFbnRpdHlTZXRcIjpcblx0XHRcdFx0Y2FzZSBcIlNpbmdsZXRvblwiOlxuXHRcdFx0XHRcdGVudGl0eVR5cGUgPSBwYWdlVGFyZ2V0LmVudGl0eVR5cGU7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIjpcblx0XHRcdFx0XHRlbnRpdHlUeXBlID0gcGFnZVRhcmdldC50YXJnZXRUeXBlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoZW50aXR5VHlwZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGZvciAoY29uc3QgZW50aXR5UHJvcGVydHkgb2YgZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzKSB7XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0IWlzSW1tdXRhYmxlKGVudGl0eVByb3BlcnR5KSAmJlxuXHRcdFx0XHRcdFx0IWlzQ29tcHV0ZWQoZW50aXR5UHJvcGVydHkpICYmXG5cdFx0XHRcdFx0XHRlbnRpdHlQcm9wZXJ0eS5hbm5vdGF0aW9ucy5VST8uSGlkZGVuPy52YWx1ZU9mKCkgIT09IHRydWUgJiZcblx0XHRcdFx0XHRcdCFlbnRpdHlQcm9wZXJ0eS50YXJnZXRUeXBlXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHQvLyBJZiBub3QgaW1tdXRhYmxlLCBjb21wdXRlZCBvciBoaWRkZW4sIG9yIGEgY29tcGxleCB0eXBlIGFkZCB0byB0aGUgZmllbGQgbWFwcGluZ1xuXHRcdFx0XHRcdFx0ZmllbGRNYXBwaW5nW2VudGl0eVByb3BlcnR5Lm5hbWVdID0ge1xuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogZ2V0TGFiZWwoZW50aXR5UHJvcGVydHkpID8/IGVudGl0eVByb3BlcnR5Lm5hbWUsXG5cdFx0XHRcdFx0XHRcdGRhdGFUeXBlOiBlbnRpdHlQcm9wZXJ0eS50eXBlXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZmllbGRNYXBwaW5nO1xuXHR9XG5cblx0cHJpdmF0ZSBnZW5lcmF0ZUxpc3RCaW5kaW5nKHBhdGg6IHN0cmluZywgbW9kZWw6IE9EYXRhTW9kZWwpOiBPRGF0YUxpc3RCaW5kaW5nIHtcblx0XHRjb25zdCB0cmFuc2llbnRMaXN0QmluZGluZyA9IG1vZGVsLmJpbmRMaXN0KFxuXHRcdFx0cGF0aCxcblx0XHRcdHVuZGVmaW5lZCxcblxuXHRcdFx0W10sXG5cdFx0XHRbXSxcblx0XHRcdHtcblx0XHRcdFx0JCR1cGRhdGVHcm91cElkOiBcInN1Ym1pdExhdGVyXCJcblx0XHRcdH1cblx0XHQpO1xuXHRcdHRyYW5zaWVudExpc3RCaW5kaW5nLnJlZnJlc2hJbnRlcm5hbCA9ICgpOiB2b2lkID0+IHtcblx0XHRcdC8qICovXG5cdFx0fTtcblx0XHRyZXR1cm4gdHJhbnNpZW50TGlzdEJpbmRpbmc7XG5cdH1cblxuXHRwcml2YXRlIG9uVGh1bWJQcmVzcyh0aHVtYlVwQnV0dG9uOiBUb2dnbGVCdXR0b24sIHRodW1iRG93bkJ1dHRvbjogVG9nZ2xlQnV0dG9uKTogdm9pZCB7XG5cdFx0dGh1bWJVcEJ1dHRvbi5zZXRFbmFibGVkKGZhbHNlKTtcblx0XHR0aHVtYkRvd25CdXR0b24uc2V0RW5hYmxlZChmYWxzZSk7XG5cdFx0TWVzc2FnZVRvYXN0LnNob3codGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfRUFTWUVESVRfRkVFREJBQ0tfU0VOVFwiKSk7XG5cdH1cblxuXHRmb3JtYXRSZW1haW5pbmdDaGFyYWN0ZXJzKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9SRU1BSU5JTkdfQ0hBUkFDVEVSU1wiLCBbTUFYX0xFTkdUSCAtICh2YWx1ZT8ubGVuZ3RoID8/IDApXSk7XG5cdH1cblxuXHRvbkNsZWFyQWxsKCk6IHZvaWQge1xuXHRcdHRoaXMuc3RhdGUubmV3VmFsdWVzID0ge307XG5cdFx0dGhpcy5zdGF0ZS5oYXNWYWx1ZXMgPSBmYWxzZTtcblx0XHR0aGlzLnN0YXRlLmhhc0luY29ycmVjdFZhbHVlcyA9IGZhbHNlO1xuXHRcdHRoaXMuc3RhdGUuZW50ZXJlZFRleHQgPSBcIlwiO1xuXHRcdHRoaXMuc3RhdGUuaGFzRXJyb3IgPSBmYWxzZTtcblx0XHR0aGlzLnN0YXRlLnN0YXRlVHlwZSA9IFwiSW5pdGlhbFwiO1xuXHRcdHRoaXMuc3RhdGUuY3VycmVudGx5RW50ZXJlZFRleHQgPSBcIlwiO1xuXHRcdHRoaXMuc3RhdGUuaW5jb3JyZWN0VmFsdWVzID0ge307XG5cdH1cblxuXHRvblZhbGlkYXRlRmllbGRHcm91cHMoX2U/OiBDb250cm9sJFZhbGlkYXRlRmllbGRHcm91cEV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3QgYWxsRmllbGRzID0gKHRoaXMuJHJldmlld0FyZWEuY3VycmVudD8uZ2V0Q29udHJvbHNCeUZpZWxkR3JvdXBJZChcIkVhc3lGaWxsRmllbGRcIikgYXMgRW5oYW5jZVdpdGhVSTU8RmllbGQ+W10pID8/IFtdO1xuXHRcdHRoaXMuc3RhdGUuaGFzRXJyb3IgPSBhbGxGaWVsZHMuc29tZSgoZmllbGQ6IEVuaGFuY2VXaXRoVUk1PEZpZWxkPik6IGJvb2xlYW4gPT4ge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0ISFmaWVsZC5kYXRhKFwibWVzc2FnZUlkXCIpIHx8XG5cdFx0XHRcdCghIShmaWVsZCBhcyB7IGdldFZhbHVlU3RhdGU/OiBGdW5jdGlvbiB9KS5nZXRWYWx1ZVN0YXRlICYmXG5cdFx0XHRcdFx0KGZpZWxkIGFzIHsgZ2V0VmFsdWVTdGF0ZT86IEZ1bmN0aW9uIH0pLmdldFZhbHVlU3RhdGU/LigpID09PSBcIkVycm9yXCIpXG5cdFx0XHQpO1xuXHRcdH0pO1xuXHR9XG5cblx0b25GaWVsZENoYW5nZShldjogVUk1RXZlbnQ8e30sIEZpZWxkPik6IHZvaWQge1xuXHRcdGV2LmdldFNvdXJjZSgpLnJlbW92ZU1lc3NhZ2UoZXYuZ2V0U291cmNlKCkuZGF0YShcIm1lc3NhZ2VJZFwiKSk7XG5cdFx0ZXYuZ2V0U291cmNlKCkuZGF0YShcIm1lc3NhZ2VJZFwiLCB1bmRlZmluZWQpO1xuXHR9XG5cblx0YXN5bmMgb25FYXN5RWRpdFByZXNzZWQoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gQ2FsbCB0aGUgQUkgc2VydmljZVxuXHRcdC8vIFByb2Nlc3MgdGhyb3VnaCBjaGF0IGNvbXBsZXRpb24gQVBJXG5cdFx0Y29uc3QgbWV0YVBhdGggPSB0aGlzLmdldE93bmVyUGFnZURlZmluaXRpb24oKTtcblx0XHRjb25zdCBmaWVsZE1hcHBpbmcgPSB0aGlzLl9nZXRGaWVsZE1hcHBpbmcobWV0YVBhdGgpO1xuXHRcdGNvbnN0IGVhc3lGaWxsTGlicmFyeSA9IGF3YWl0IGltcG9ydChcInV4L2VuZy9maW9yaWFpL3JldXNlL2Vhc3lmaWxsL0Vhc3lGaWxsXCIpO1xuXHRcdGNvbnN0IG9kYXRhTW9kZWwgPSB0aGlzLmdldE1vZGVsKCkgYXMgT0RhdGFNb2RlbDtcblx0XHRjb25zdCB0cmFuc2llbnRMaXN0QmluZGluZyA9IHRoaXMuZ2VuZXJhdGVMaXN0QmluZGluZyhcblx0XHRcdG9kYXRhTW9kZWwuZ2V0TWV0YU1vZGVsKCkuZ2V0TWV0YVBhdGgodGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLmdldFZpZXcoKT8uZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpKSxcblx0XHRcdHRoaXMuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsXG5cdFx0KTtcblx0XHR0aGlzLl9iaW5kaW5nQ29udGV4dCA9IHRyYW5zaWVudExpc3RCaW5kaW5nLmNyZWF0ZSh7fSwgdHJ1ZSk7XG5cblx0XHR0aGlzLnN0YXRlLmlzQnVzeSA9IHRydWU7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGFpQ2FsbFJlc3VsdCA9IGF3YWl0IGVhc3lGaWxsTGlicmFyeS5leHRyYWN0RmllbGRWYWx1ZXNGcm9tVGV4dCh0aGlzLnN0YXRlLmVudGVyZWRUZXh0LCBmaWVsZE1hcHBpbmcpO1xuXHRcdFx0dGhpcy5zdGF0ZS5pc0J1c3kgPSBmYWxzZTtcblx0XHRcdGlmIChhaUNhbGxSZXN1bHQuc3VjY2Vzcykge1xuXHRcdFx0XHRjb25zdCB1cGRhdGVkRmllbGRzID0gYWlDYWxsUmVzdWx0LmRhdGE7XG5cdFx0XHRcdGlmIChPYmplY3Qua2V5cyh1cGRhdGVkRmllbGRzKS5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0XHR0aGlzLnN0YXRlLmhhc1ZhbHVlcyA9IGZhbHNlO1xuXHRcdFx0XHRcdHRoaXMuc3RhdGUuaGFzSW5jb3JyZWN0VmFsdWVzID0gZmFsc2U7XG5cdFx0XHRcdFx0dGhpcy5zdGF0ZS5zdGF0ZVR5cGUgPSBcIk5vRW50cmllc1wiO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLnN0YXRlLnN0YXRlVHlwZSA9IFwiSGFzRW50cmllc1wiO1xuXHRcdFx0XHR0aGlzLnN0YXRlLmhhc0Vycm9yID0gZmFsc2U7XG5cdFx0XHRcdGNvbnN0IGVkaXRhYmxlRmllbGRzID0gKGF3YWl0IHRoaXMuZ2V0RWRpdGFibGVGaWVsZHM/LigpKSA/PyB7fTtcblx0XHRcdFx0dGhpcy5zdGF0ZS5oYXNWYWx1ZXMgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5zdGF0ZS5oYXNJbmNvcnJlY3RWYWx1ZXMgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy4kc2Nyb2xsQ29udGFpbmVyLmN1cnJlbnQ/LmRlc3Ryb3koKTtcblxuXHRcdFx0XHRjb25zdCByZXZpZXdBcmVhRm9ybSA9IChcblx0XHRcdFx0XHQ8Rm9ybSBlZGl0YWJsZT17dHJ1ZX0gY2xhc3M9e1wic2FwVWlTbWFsbE1hcmdpblRvcEJvdHRvbVwifSB2aXNpYmxlPXt0aGlzLmJpbmRTdGF0ZShcImhhc1ZhbHVlc1wiKX0+XG5cdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRsYXlvdXQ6IDxDb2x1bW5MYXlvdXQgY29sdW1uc009ezJ9IGNvbHVtbnNMPXsyfSBjb2x1bW5zWEw9ezJ9IGxhYmVsQ2VsbHNMYXJnZT17MX0gZW1wdHlDZWxsc0xhcmdlPXsxfSAvPlxuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQ8L0Zvcm0+XG5cdFx0XHRcdCkgYXMgRm9ybTtcblx0XHRcdFx0Y29uc3QgaW5jb3JyZWN0VmFsdWVzRm9ybSA9IChcblx0XHRcdFx0XHQ8Rm9ybSBlZGl0YWJsZT17ZmFsc2V9IGNsYXNzPXtcInNhcFVpU21hbGxNYXJnaW5Ub3BCb3R0b21cIn0gdmlzaWJsZT17dGhpcy5iaW5kU3RhdGUoXCJoYXNJbmNvcnJlY3RWYWx1ZXNcIil9PlxuXHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0bGF5b3V0OiA8Q29sdW1uTGF5b3V0IGNvbHVtbnNNPXsyfSBjb2x1bW5zTD17Mn0gY29sdW1uc1hMPXsyfSBsYWJlbENlbGxzTGFyZ2U9ezF9IGVtcHR5Q2VsbHNMYXJnZT17MX0gLz5cblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0PC9Gb3JtPlxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCB3YXJuaW5nTWVzc2FnZSA9IChcblx0XHRcdFx0XHQ8TWVzc2FnZVN0cmlwXG5cdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9ESUFMT0dfV0FSTklOR19NU0dcIil9XG5cdFx0XHRcdFx0XHR0eXBlPXtcIldhcm5pbmdcIn1cblx0XHRcdFx0XHRcdHNob3dJY29uPXt0cnVlfVxuXHRcdFx0XHRcdFx0dmlzaWJsZT17dGhpcy5iaW5kU3RhdGUoXCJoYXNJbmNvcnJlY3RWYWx1ZXNcIil9XG5cdFx0XHRcdFx0PjwvTWVzc2FnZVN0cmlwPlxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCB0aHVtYlVwQnV0dG9uID0gKFxuXHRcdFx0XHRcdDxUb2dnbGVCdXR0b25cblx0XHRcdFx0XHRcdGljb249e1wic2FwLWljb246Ly90aHVtYi11cFwifVxuXHRcdFx0XHRcdFx0dG9vbHRpcD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfRUFTWUVESVRfVEhVTUJTX1VQXCIpfVxuXHRcdFx0XHRcdFx0dHlwZT17XCJUcmFuc3BhcmVudFwifVxuXHRcdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMub25UaHVtYlByZXNzKHRodW1iVXBCdXR0b24sIHRodW1iRG93bkJ1dHRvbik7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdCk7XG5cdFx0XHRcdEZFU1JIZWxwZXIuc2V0U2VtYW50aWNTdGVwbmFtZSh0aHVtYlVwQnV0dG9uLCBcInByZXNzXCIsIFwiZmU0OmVmOnRodW1iVXBcIik7XG5cdFx0XHRcdGNvbnN0IHRodW1iRG93bkJ1dHRvbiA9IChcblx0XHRcdFx0XHQ8VG9nZ2xlQnV0dG9uXG5cdFx0XHRcdFx0XHRpY29uPXtcInNhcC1pY29uOi8vdGh1bWItZG93blwifVxuXHRcdFx0XHRcdFx0dG9vbHRpcD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfRUFTWUVESVRfVEhVTUJTX0RPV05cIil9XG5cdFx0XHRcdFx0XHR0eXBlPXtcIlRyYW5zcGFyZW50XCJ9XG5cdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5vblRodW1iUHJlc3ModGh1bWJVcEJ1dHRvbiwgdGh1bWJEb3duQnV0dG9uKTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0KTtcblx0XHRcdFx0RkVTUkhlbHBlci5zZXRTZW1hbnRpY1N0ZXBuYW1lKHRodW1iRG93bkJ1dHRvbiwgXCJwcmVzc1wiLCBcImZlNDplZjp0aHVtYkRvd25cIik7XG5cdFx0XHRcdGNvbnN0IGFpTm90aWNlVGV4dCA9IChcblx0XHRcdFx0XHQ8SEJveCBhbGlnbkl0ZW1zPXtcIkNlbnRlclwifSB2aXNpYmxlPXtlcXVhbCh0aGlzLmJpbmRTdGF0ZShcInN0YXRlVHlwZVwiKSwgXCJIYXNFbnRyaWVzXCIpfT5cblx0XHRcdFx0XHRcdDxBSUxpbmtOb3RpY2UgLz5cblx0XHRcdFx0XHRcdDxUZXh0IHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0VBU1lFRElUX0FJX05PVElDRV9URVhUXCIpfSBjbGFzcz17XCJzYXBVaVRpbnlNYXJnaW5CZWdpblwifSAvPlxuXHRcdFx0XHRcdFx0e3RodW1iVXBCdXR0b259LCB7dGh1bWJEb3duQnV0dG9ufVxuXHRcdFx0XHRcdDwvSEJveD5cblx0XHRcdFx0KTtcblx0XHRcdFx0Y29uc3QgcHJldmlvdXNWYWx1ZXNGb3JtQ29udGFpbmVyID0gKFxuXHRcdFx0XHRcdDxGb3JtQ29udGFpbmVyPnt7IHRpdGxlOiA8Q29yZVRpdGxlIHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0VBU1lFRElUX1BSRVZJT1VTX1ZBTFVFU1wiKX0gLz4gfX08L0Zvcm1Db250YWluZXI+XG5cdFx0XHRcdCkgYXMgRm9ybUNvbnRhaW5lcjtcblx0XHRcdFx0Y29uc3QgcHJldmlvdXNWYWx1ZXNGb3JtQ29udGFpbmVyMiA9IChcblx0XHRcdFx0XHQ8Rm9ybUNvbnRhaW5lcj57eyB0aXRsZTogPENvcmVUaXRsZSB0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9QUkVWSU9VU19WQUxVRVNcIil9IC8+IH19PC9Gb3JtQ29udGFpbmVyPlxuXHRcdFx0XHQpIGFzIEZvcm1Db250YWluZXI7XG5cdFx0XHRcdGNvbnN0IG5ld1ZhbHVlc0Zvcm1Db250YWluZXIgPSAoXG5cdFx0XHRcdFx0PEZvcm1Db250YWluZXI+e3sgdGl0bGU6IDxDb3JlVGl0bGUgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfRUFTWUVESVRfTkVXX1ZBTFVFU1wiKX0gLz4gfX08L0Zvcm1Db250YWluZXI+XG5cdFx0XHRcdCkgYXMgRm9ybUNvbnRhaW5lcjtcblx0XHRcdFx0Y29uc3QgbmV3VmFsdWVzRm9ybUNvbnRhaW5lcjIgPSAoXG5cdFx0XHRcdFx0PEZvcm1Db250YWluZXI+e3sgdGl0bGU6IDxDb3JlVGl0bGUgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfRUFTWUVESVRfTkVXX1ZBTFVFU1wiKX0gLz4gfX08L0Zvcm1Db250YWluZXI+XG5cdFx0XHRcdCkgYXMgRm9ybUNvbnRhaW5lcjtcblx0XHRcdFx0Y29uc3QgdWlDb250ZXh0ID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLmdldE1vZGVsKFwidWlcIik/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL2Vhc3lFZGl0RGlhbG9nXCIpO1xuXG5cdFx0XHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKS5nZXRNb2RlbChcInVpXCIpLnNldFByb3BlcnR5KFwiL2Vhc3lFZGl0RGlhbG9nXCIsIHt9KTtcblx0XHRcdFx0dWlDb250ZXh0LnNldFByb3BlcnR5KFwiaXNFZGl0YWJsZVwiLCB0cnVlKTtcblx0XHRcdFx0bmV3VmFsdWVzRm9ybUNvbnRhaW5lci5zZXRCaW5kaW5nQ29udGV4dCh1aUNvbnRleHQsIFwidWlcIik7XG5cblx0XHRcdFx0cmV2aWV3QXJlYUZvcm0uYWRkRm9ybUNvbnRhaW5lcihwcmV2aW91c1ZhbHVlc0Zvcm1Db250YWluZXIpO1xuXHRcdFx0XHRyZXZpZXdBcmVhRm9ybS5hZGRGb3JtQ29udGFpbmVyKG5ld1ZhbHVlc0Zvcm1Db250YWluZXIpO1xuXHRcdFx0XHRpbmNvcnJlY3RWYWx1ZXNGb3JtLmFkZEZvcm1Db250YWluZXIocHJldmlvdXNWYWx1ZXNGb3JtQ29udGFpbmVyMik7XG5cdFx0XHRcdGluY29ycmVjdFZhbHVlc0Zvcm0uYWRkRm9ybUNvbnRhaW5lcihuZXdWYWx1ZXNGb3JtQ29udGFpbmVyMik7XG5cdFx0XHRcdGNvbnN0IG5ld1ZhbHVlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFx0Y29uc3QgaW5jb3JyZWN0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFx0XHRuZXdWYWx1ZXNGb3JtQ29udGFpbmVyLnNldEJpbmRpbmdDb250ZXh0KHRoaXMuX2JpbmRpbmdDb250ZXh0KTtcblx0XHRcdFx0bmV3VmFsdWVzRm9ybUNvbnRhaW5lcjIuc2V0QmluZGluZ0NvbnRleHQodGhpcy5nZXRNb2RlbChcIiRjb21wb25lbnRTdGF0ZVwiKT8uY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvaW5jb3JyZWN0VmFsdWVzXCIpKTtcblx0XHRcdFx0bmV3VmFsdWVzRm9ybUNvbnRhaW5lcjIuc2V0TW9kZWwodGhpcy5nZXRNb2RlbChcIiRjb21wb25lbnRTdGF0ZVwiKSk7XG5cblx0XHRcdFx0Y29uc3QgJHZCb3ggPSBjcmVhdGVSZWZlcmVuY2U8VkJveD4oKTtcblx0XHRcdFx0dGhpcy4kcmV2aWV3QXJlYS5jdXJyZW50Py5hZGRJdGVtKFxuXHRcdFx0XHRcdDxTY3JvbGxDb250YWluZXIgcmVmPXt0aGlzLiRzY3JvbGxDb250YWluZXJ9IHZlcnRpY2FsPXt0cnVlfSBjbGFzcz17XCJzYXBVaUNvbnRlbnRQYWRkaW5nXCJ9PlxuXHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0XHRcdDxWQm94IHJlZj17JHZCb3h9PlxuXHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM6IFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8SEJveD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt7IGxheW91dERhdGE6IDxGbGV4SXRlbURhdGEgYWxpZ25TZWxmPVwiRW5kXCIgLz4gfX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHthaU5vdGljZVRleHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9IQm94Pixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8VGl0bGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0VBU1lFRElUX0ZJTExFRF9GSUVMRFNcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXt0aGlzLmJpbmRTdGF0ZShcImhhc1ZhbHVlc1wiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXZpZXdBcmVhRm9ybSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8VGl0bGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0VBU1lFRElUX0lOQ09SUkVDVF9GSUVMRFNcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBVaVNtYWxsTWFyZ2luVG9wQm90dG9tXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXt0aGlzLmJpbmRTdGF0ZShcImhhc0luY29ycmVjdFZhbHVlc1wiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3YXJuaW5nTWVzc2FnZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpbmNvcnJlY3RWYWx1ZXNGb3JtXG5cdFx0XHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdDwvU2Nyb2xsQ29udGFpbmVyPlxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGZvciAoY29uc3QgdXBkYXRlZEZpZWxkIGluIHVwZGF0ZWRGaWVsZHMpIHtcblx0XHRcdFx0XHRpZiAoZWRpdGFibGVGaWVsZHNbdXBkYXRlZEZpZWxkXSAmJiBlZGl0YWJsZUZpZWxkc1t1cGRhdGVkRmllbGRdLmlzRWRpdGFibGUgPT09IHRydWUpIHtcblx0XHRcdFx0XHRcdHRoaXMuc3RhdGUuaGFzVmFsdWVzID0gdHJ1ZTtcblx0XHRcdFx0XHRcdHByZXZpb3VzVmFsdWVzRm9ybUNvbnRhaW5lci5hZGRGb3JtRWxlbWVudChcblx0XHRcdFx0XHRcdFx0PEZvcm1FbGVtZW50IGxhYmVsPXtmaWVsZE1hcHBpbmdbdXBkYXRlZEZpZWxkXS5kZXNjcmlwdGlvbn0+XG5cdFx0XHRcdFx0XHRcdFx0PEZpZWxkXG5cdFx0XHRcdFx0XHRcdFx0XHRtZXRhUGF0aD17dXBkYXRlZEZpZWxkfVxuXHRcdFx0XHRcdFx0XHRcdFx0Y29udGV4dFBhdGg9e3RoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpfVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVhZE9ubHk9e3RydWV9XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZD17ZmFsc2V9XG5cdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXt0cnVlfVxuXHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdDwvRm9ybUVsZW1lbnQ+XG5cdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHRjb25zdCBuZXdGaWVsZCA9IHRoaXMuX2dldE93bmVyKCk/LnJ1bkFzT3duZXIoKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdDxGaWVsZFxuXHRcdFx0XHRcdFx0XHRcdFx0X3JlcXVpcmVzVmFsaWRhdGlvbj17dHJ1ZX1cblx0XHRcdFx0XHRcdFx0XHRcdHZhbGlkYXRlRmllbGRHcm91cD17dGhpcy5vblZhbGlkYXRlRmllbGRHcm91cHMuYmluZCh0aGlzKX1cblx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkR3JvdXBJZHM9e1wiRWFzeUZpbGxGaWVsZFwifVxuXHRcdFx0XHRcdFx0XHRcdFx0bWV0YVBhdGg9e3VwZGF0ZWRGaWVsZH1cblx0XHRcdFx0XHRcdFx0XHRcdGNvbnRleHRQYXRoPXt0aGlzLmdldE93bmVyQ29udGV4dFBhdGgoKX1cblx0XHRcdFx0XHRcdFx0XHRcdGNoYW5nZT17dGhpcy5vbkZpZWxkQ2hhbmdlLmJpbmQodGhpcyl9XG5cdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0KSBhcyBGaWVsZDtcblx0XHRcdFx0XHRcdH0pIGFzIEVuaGFuY2VXaXRoVUk1PEZpZWxkPjtcblx0XHRcdFx0XHRcdG5ld1ZhbHVlc0Zvcm1Db250YWluZXIuYWRkRm9ybUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdDxGb3JtRWxlbWVudCBsYWJlbD17ZmllbGRNYXBwaW5nW3VwZGF0ZWRGaWVsZF0uZGVzY3JpcHRpb259Pnt7IGZpZWxkczogbmV3RmllbGQgfX08L0Zvcm1FbGVtZW50PlxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdGNvbnN0IG1ldGFNb2RlbCA9IHRoaXMuZ2V0TWV0YU1vZGVsKCkhO1xuXHRcdFx0XHRcdFx0Y29uc3QgdGFyZ2V0TWV0YVBhdGggPSBtZXRhTW9kZWwuZ2V0TWV0YVBhdGgodGhpcy5fYmluZGluZ0NvbnRleHQuZ2V0UGF0aCh1cGRhdGVkRmllbGQpKTtcblx0XHRcdFx0XHRcdGNvbnN0IG1ldGFNb2RlbE9iaiA9IG1ldGFNb2RlbC5nZXRPYmplY3QodGFyZ2V0TWV0YVBhdGgpO1xuXHRcdFx0XHRcdFx0Y29uc3QgdmFsdWVFeHByZXNzaW9uID0gQW5ub3RhdGlvbkhlbHBlci5mb3JtYXQobWV0YU1vZGVsT2JqLCB7XG5cdFx0XHRcdFx0XHRcdGNvbnRleHQ6IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dCh0YXJnZXRNZXRhUGF0aCkhXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGNvbnN0IHBhcnNlZEJpbmRpbmcgPSBCaW5kaW5nSW5mby5wYXJzZSh2YWx1ZUV4cHJlc3Npb24pO1xuXHRcdFx0XHRcdFx0bGV0IGVycm9yTWVzc2FnZSA9IFwiXCI7XG5cdFx0XHRcdFx0XHRpZiAocGFyc2VkQmluZGluZyAmJiBwYXJzZWRCaW5kaW5nLnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRwYXJzZWRCaW5kaW5nLnR5cGUudmFsaWRhdGVWYWx1ZSh1cGRhdGVkRmllbGRzW3VwZGF0ZWRGaWVsZF0pO1xuXHRcdFx0XHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZS5oYXNFcnJvciA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0ZXJyb3JNZXNzYWdlID0gKGUgYXMgRXJyb3IpLm1lc3NhZ2U7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gRmV0Y2ggdGhlIHZhbHVlIGxpc3QgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eSBwYXRoXG5cdFx0XHRcdFx0XHRjb25zdCB2YWx1ZUxpc3QgPSBhd2FpdCB0aGlzLl9nZXRWYWx1ZUxpc3QodGFyZ2V0TWV0YVBhdGgpO1xuXG5cdFx0XHRcdFx0XHQvLyBJbml0aWFsaXplIGEgZmxhZyB0byB0cmFjayB2YWxpZGF0aW9uIGVycm9yc1xuXHRcdFx0XHRcdFx0bGV0IGhhc1ZIRXJyb3IgPSBmYWxzZTtcblxuXHRcdFx0XHRcdFx0Ly8gQ2hlY2sgaWYgdGhlIHZhbHVlIGxpc3QgaXMgc2VhcmNoYWJsZSBhbmQgdmFsaWRhdGUgdGhlIHVwZGF0ZWQgZmllbGQgdmFsdWVzXG5cdFx0XHRcdFx0XHRpZiAodmFsdWVMaXN0ICYmIFZhbHVlTGlzdEhlbHBlci5pc1ZhbHVlTGlzdFNlYXJjaGFibGUodGFyZ2V0TWV0YVBhdGgsIHZhbHVlTGlzdCkpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdmFsdWVzID0gYXdhaXQgcmVzb2x2ZVRva2VuVmFsdWUoXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWVMaXN0LFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvci5FUSxcblx0XHRcdFx0XHRcdFx0XHRcdHNlbGVjdGVkVmFsdWVzOiBbdXBkYXRlZEZpZWxkc1t1cGRhdGVkRmllbGRdIGFzIHN0cmluZ11cblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0XHQvLyBVcGRhdGUgdGhlIGZpZWxkIHZhbHVlIGlmIGl0IGRpZmZlcnMgZnJvbSB0aGUgcmVzb2x2ZWQgdmFsdWVcblx0XHRcdFx0XHRcdFx0aWYgKCF2YWx1ZXNbMF0ubm9NYXRjaCkge1xuXHRcdFx0XHRcdFx0XHRcdHVwZGF0ZWRGaWVsZHNbdXBkYXRlZEZpZWxkXSA9IHZhbHVlc1swXS5zZWxlY3RlZFZhbHVlc1swXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRlcnJvck1lc3NhZ2UgPSBcIlwiO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUuaGFzRXJyb3IgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdGhhc1ZIRXJyb3IgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdGVycm9yTWVzc2FnZSA9IHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0VBU1lFRElUX1ZIX0VSUk9SXCIsIHZhbHVlc1swXS5zZWxlY3RlZFZhbHVlc1swXS52YWx1ZSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gVXNlIGEgdGltZW91dCB0byBlbnN1cmUgdmFsaWRhdGlvbiBydW5zIGNvcnJlY3RseSBmb3IgdGhlIHVwZGF0ZWQgZmllbGRcblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRuZXdGaWVsZC5zZXRWYWx1ZSh1cGRhdGVkRmllbGRzW3VwZGF0ZWRGaWVsZF0gYXMgc3RyaW5nKTtcblx0XHRcdFx0XHRcdFx0aWYgKGVycm9yTWVzc2FnZS5sZW5ndGggPiAwIHx8IGhhc1ZIRXJyb3IpIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBtZXNzYWdlSWQgPSBuZXdGaWVsZC5hZGRNZXNzYWdlKHsgdHlwZTogTWVzc2FnZVR5cGUuRXJyb3IsIG1lc3NhZ2U6IGVycm9yTWVzc2FnZSB9KTtcblx0XHRcdFx0XHRcdFx0XHRuZXdGaWVsZC5kYXRhKFwibWVzc2FnZUlkXCIsIG1lc3NhZ2VJZCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sIDIwMCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGluY29ycmVjdFZhbHVlc1t1cGRhdGVkRmllbGRdID0gdXBkYXRlZEZpZWxkc1t1cGRhdGVkRmllbGRdO1xuXHRcdFx0XHRcdFx0dGhpcy5zdGF0ZS5oYXNJbmNvcnJlY3RWYWx1ZXMgPSB0cnVlO1xuXHRcdFx0XHRcdFx0cHJldmlvdXNWYWx1ZXNGb3JtQ29udGFpbmVyMi5hZGRGb3JtRWxlbWVudChcblx0XHRcdFx0XHRcdFx0PEZvcm1FbGVtZW50IGxhYmVsPXtmaWVsZE1hcHBpbmdbdXBkYXRlZEZpZWxkXT8uZGVzY3JpcHRpb24gPz8gdXBkYXRlZEZpZWxkfT5cblx0XHRcdFx0XHRcdFx0XHQ8RmllbGRcblx0XHRcdFx0XHRcdFx0XHRcdG1ldGFQYXRoPXt1cGRhdGVkRmllbGR9XG5cdFx0XHRcdFx0XHRcdFx0XHRjb250ZXh0UGF0aD17dGhpcy5nZXRPd25lckNvbnRleHRQYXRoKCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRyZWFkT25seT17dHJ1ZX1cblx0XHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkPXtmYWxzZX1cblx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e3RydWV9XG5cdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PC9Gb3JtRWxlbWVudD5cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRuZXdWYWx1ZXNGb3JtQ29udGFpbmVyMi5hZGRGb3JtRWxlbWVudChcblx0XHRcdFx0XHRcdFx0PEZvcm1FbGVtZW50IGxhYmVsPXtmaWVsZE1hcHBpbmdbdXBkYXRlZEZpZWxkXT8uZGVzY3JpcHRpb24gPz8gdXBkYXRlZEZpZWxkfT5cblx0XHRcdFx0XHRcdFx0XHQ8RmllbGQgbWV0YVBhdGg9e3VwZGF0ZWRGaWVsZH0gY29udGV4dFBhdGg9e3RoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpfSByZWFkT25seT17dHJ1ZX0gLz5cblx0XHRcdFx0XHRcdFx0PC9Gb3JtRWxlbWVudD5cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0JHZCb3guY3VycmVudD8uc2V0QmluZGluZ0NvbnRleHQodGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLmdldFZpZXcoKT8uZ2V0QmluZGluZ0NvbnRleHQoKSk7XG5cdFx0XHRcdCR2Qm94LmN1cnJlbnQ/LnNldE1vZGVsKHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKS5nZXRNb2RlbCgpKTtcblx0XHRcdFx0JHZCb3guY3VycmVudD8uc2V0TW9kZWwodGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLmdldE1vZGVsKFwidWlcIiksIFwidWlcIik7XG5cdFx0XHRcdHNldFRpbWVvdXQoKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdHRoaXMub25WYWxpZGF0ZUZpZWxkR3JvdXBzKCk7XG5cdFx0XHRcdH0sIDEwMDApO1xuXG5cdFx0XHRcdHRoaXMuc3RhdGUubmV3VmFsdWVzID0gbmV3VmFsdWVzO1xuXHRcdFx0XHR0aGlzLnN0YXRlLmluY29ycmVjdFZhbHVlcyA9IGluY29ycmVjdFZhbHVlcztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuc3RhdGUuaGFzVmFsdWVzID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMuc3RhdGUuaGFzSW5jb3JyZWN0VmFsdWVzID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMuc3RhdGUuc3RhdGVUeXBlID0gXCJFcnJvclwiO1xuXHRcdFx0XHR0aGlzLnN0YXRlLm5ld1ZhbHVlcyA9IHt9O1xuXHRcdFx0XHR0aGlzLnN0YXRlLmluY29ycmVjdFZhbHVlcyA9IHt9O1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdHRoaXMuc3RhdGUuaXNCdXN5ID0gZmFsc2U7XG5cdFx0XHR0aGlzLnN0YXRlLmhhc1ZhbHVlcyA9IGZhbHNlO1xuXHRcdFx0dGhpcy5zdGF0ZS5oYXNJbmNvcnJlY3RWYWx1ZXMgPSBmYWxzZTtcblx0XHRcdHRoaXMuc3RhdGUuc3RhdGVUeXBlID0gXCJFcnJvclwiO1xuXHRcdFx0dGhpcy5zdGF0ZS5uZXdWYWx1ZXMgPSB7fTtcblx0XHRcdHRoaXMuc3RhdGUuaW5jb3JyZWN0VmFsdWVzID0ge307XG5cdFx0fVxuXHR9XG5cblx0Y3JlYXRlQ29udGVudCgpOiBEaWFsb2cge1xuXHRcdGNvbnN0IGVhc3lFZGl0RGVzY3JpcHRpb24gPSA8SW52aXNpYmxlVGV4dCB0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9ESUFMT0dfREVTQ1JJUFRJT05cIil9IC8+O1xuXG5cdFx0Y29uc3QgJGVhc3lGaWxsQnV0dG9uID0gY3JlYXRlUmVmZXJlbmNlPEJ1dHRvbj4oKTtcblx0XHRjb25zdCAkZWFzeUZpbGxTYXZlQnV0dG9uID0gY3JlYXRlUmVmZXJlbmNlPEJ1dHRvbj4oKTtcblx0XHRjb25zdCAkZWFzeUZpbGxDYW5jZWxCdXR0b24gPSBjcmVhdGVSZWZlcmVuY2U8QnV0dG9uPigpO1xuXHRcdGNvbnN0ICRlYXN5RmlsbENsZWFyQWxsQnV0dG9uID0gY3JlYXRlUmVmZXJlbmNlPEJ1dHRvbj4oKTtcblx0XHRjb25zdCBkaWFsb2cgPSAoXG5cdFx0XHQ8RGlhbG9nXG5cdFx0XHRcdHRpdGxlPXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9ESUFMT0dfVElUTEVcIil9XG5cdFx0XHRcdHJlc2l6YWJsZT17dHJ1ZX1cblx0XHRcdFx0aG9yaXpvbnRhbFNjcm9sbGluZz17ZmFsc2V9XG5cdFx0XHRcdHZlcnRpY2FsU2Nyb2xsaW5nPXtmYWxzZX1cblx0XHRcdFx0Y29udGVudFdpZHRoPVwiMTEwMHB4XCJcblx0XHRcdFx0Y29udGVudEhlaWdodD17XCI4MDBweFwifVxuXHRcdFx0XHRlc2NhcGVIYW5kbGVyPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0dGhpcy5vbkNhbmNlbCgpO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHRhZnRlckNsb3NlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0dGhpcy5kZXN0cm95KCk7XG5cdFx0XHRcdH19XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0PEZsZXhCb3ggZGlyZWN0aW9uPXtGbGV4RGlyZWN0aW9uLlJvd30gcmVuZGVyVHlwZT17XCJCYXJlXCJ9IHdpZHRoPXtcIjEwMCVcIn0gaGVpZ2h0PXtcIjEwMCVcIn0+XG5cdFx0XHRcdFx0XHRcdDxGbGV4Qm94XG5cdFx0XHRcdFx0XHRcdFx0d2lkdGg9e1wiNDAlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0aWQ9e3RoaXMuY3JlYXRlSWQoXCJpbnB1dEFyZWFcIil9XG5cdFx0XHRcdFx0XHRcdFx0ZGlyZWN0aW9uPXtGbGV4RGlyZWN0aW9uLkNvbHVtbn1cblx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBVaUNvbnRlbnRQYWRkaW5nXCJ9XG5cdFx0XHRcdFx0XHRcdFx0cmVuZGVyVHlwZT17XCJCYXJlXCJ9XG5cdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHQ8Rm9ybWF0dGVkVGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0aHRtbFRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0VBU1lFRElUX0RJQUxPR19ERVNDUklQVElPTlwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpVGlueU1hcmdpbkJvdHRvbVwifVxuXHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0e2Vhc3lFZGl0RGVzY3JpcHRpb259XG5cdFx0XHRcdFx0XHRcdFx0PFRleHRBcmVhXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17dGhpcy5iaW5kU3RhdGUoXCJlbnRlcmVkVGV4dFwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpVGlueU1hcmdpbkJvdHRvbVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0bGl2ZUNoYW5nZT17KGUpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZS5jdXJyZW50bHlFbnRlcmVkVGV4dCA9IGUuZ2V0UGFyYW1ldGVyKFwidmFsdWVcIikgPz8gXCJcIjtcblx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0VBU1lFRElUX1RFWFRBUkVBX1BMQUNFSE9MREVSXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0cm93cz17MjB9XG5cdFx0XHRcdFx0XHRcdFx0XHRncm93aW5nPXt0cnVlfVxuXHRcdFx0XHRcdFx0XHRcdFx0Z3Jvd2luZ01heExpbmVzPXszMH1cblx0XHRcdFx0XHRcdFx0XHRcdG1heExlbmd0aD17TUFYX0xFTkdUSH1cblx0XHRcdFx0XHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtlYXN5RWRpdERlc2NyaXB0aW9ufVxuXHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0PFRleHRcblx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpVGlueU1hcmdpbkJvdHRvbVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYXRoOiBcIi9jdXJyZW50bHlFbnRlcmVkVGV4dFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRtb2RlbDogXCIkY29tcG9uZW50U3RhdGVcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0dGVyOiB0aGlzLmZvcm1hdFJlbWFpbmluZ0NoYXJhY3RlcnMuYmluZCh0aGlzKVxuXHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHR7eyBsYXlvdXREYXRhOiA8RmxleEl0ZW1EYXRhIGFsaWduU2VsZj1cIkVuZFwiIC8+IH19XG5cdFx0XHRcdFx0XHRcdFx0PC9UZXh0PlxuXHRcdFx0XHRcdFx0XHRcdDxIQm94PlxuXHRcdFx0XHRcdFx0XHRcdFx0e3sgbGF5b3V0RGF0YTogPEZsZXhJdGVtRGF0YSBhbGlnblNlbGY9XCJFbmRcIiAvPiB9fVxuXHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9CVVRUT05cIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGljb249e1wic2FwLWljb246Ly9haVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRlbmFibGVkPXtub3QoaXNFbXB0eSh0aGlzLmJpbmRTdGF0ZShcImN1cnJlbnRseUVudGVyZWRUZXh0XCIpKSl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLm9uRWFzeUVkaXRQcmVzc2VkLmJpbmQodGhpcyl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlZj17JGVhc3lGaWxsQnV0dG9ufVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBVaVNtYWxsTWFyZ2luRW5kXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHQ+PC9CdXR0b24+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0VBU1lFRElUX0RJQUxPR19DTEVBUl9BTExcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9e0J1dHRvblR5cGUuVHJhbnNwYXJlbnR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLm9uQ2xlYXJBbGwuYmluZCh0aGlzKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVmPXskZWFzeUZpbGxDbGVhckFsbEJ1dHRvbn1cblx0XHRcdFx0XHRcdFx0XHRcdD48L0J1dHRvbj5cblx0XHRcdFx0XHRcdFx0XHQ8L0hCb3g+XG5cdFx0XHRcdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0XHRcdFx0PEZsZXhCb3hcblx0XHRcdFx0XHRcdFx0XHRpZD17dGhpcy5jcmVhdGVJZChcInJldmlld0FyZWFcIil9XG5cdFx0XHRcdFx0XHRcdFx0cmVmPXt0aGlzLiRyZXZpZXdBcmVhfVxuXHRcdFx0XHRcdFx0XHRcdHdpZHRoPXtcIjYwJVwifVxuXHRcdFx0XHRcdFx0XHRcdHJlbmRlclR5cGU9e1wiQmFyZVwifVxuXHRcdFx0XHRcdFx0XHRcdGJ1c3k9e3RoaXMuYmluZFN0YXRlKFwiaXNCdXN5XCIpfVxuXHRcdFx0XHRcdFx0XHRcdGRpcmVjdGlvbj17RmxleERpcmVjdGlvbi5Db2x1bW59XG5cdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwRmVFYXN5RmlsbFJldmlld0FyZWFcIn1cblx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdDxJbGx1c3RyYXRlZE1lc3NhZ2Vcblx0XHRcdFx0XHRcdFx0XHRcdGlsbHVzdHJhdGlvblR5cGU9e0lsbHVzdHJhdGVkTWVzc2FnZVR5cGUuTm9TZWFyY2hSZXN1bHRzfVxuXHRcdFx0XHRcdFx0XHRcdFx0aWxsdXN0cmF0aW9uU2l6ZT17SWxsdXN0cmF0ZWRNZXNzYWdlU2l6ZS5MYXJnZX1cblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlPXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9ESUFMT0dfUkVWSUVXX1RJVExFXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb249e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0VBU1lFRElUX0RJQUxPR19SRVZJRVdfREVTQ1JJUFRJT05cIil9XG5cdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXtlcXVhbCh0aGlzLmJpbmRTdGF0ZShcInN0YXRlVHlwZVwiKSwgXCJJbml0aWFsXCIpfVxuXHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0PElsbHVzdHJhdGVkTWVzc2FnZVxuXHRcdFx0XHRcdFx0XHRcdFx0aWxsdXN0cmF0aW9uVHlwZT17SWxsdXN0cmF0ZWRNZXNzYWdlVHlwZS5Ob0VudHJpZXN9XG5cdFx0XHRcdFx0XHRcdFx0XHRpbGx1c3RyYXRpb25TaXplPXtJbGx1c3RyYXRlZE1lc3NhZ2VTaXplLkxhcmdlfVxuXHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0VBU1lFRElUX0RJQUxPR19OT19FTlRSSUVTX1RJVExFXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb249e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0VBU1lFRElUX0RJQUxPR19OT19FTlRSSUVTX0RFU0NSSVBUSU9OXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17ZXF1YWwodGhpcy5iaW5kU3RhdGUoXCJzdGF0ZVR5cGVcIiksIFwiTm9FbnRyaWVzXCIpfVxuXHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0PElsbHVzdHJhdGVkTWVzc2FnZVxuXHRcdFx0XHRcdFx0XHRcdFx0aWxsdXN0cmF0aW9uVHlwZT17SWxsdXN0cmF0ZWRNZXNzYWdlVHlwZS5VbmFibGVUb0xvYWR9XG5cdFx0XHRcdFx0XHRcdFx0XHRpbGx1c3RyYXRpb25TaXplPXtJbGx1c3RyYXRlZE1lc3NhZ2VTaXplLkxhcmdlfVxuXHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0VBU1lFRElUX0RJQUxPR19FUlJPUl9USVRMRVwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uPXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9ESUFMT0dfRVJST1JfREVTQ1JJUFRJT05cIil9XG5cdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXtlcXVhbCh0aGlzLmJpbmRTdGF0ZShcInN0YXRlVHlwZVwiKSwgXCJFcnJvclwiKX1cblx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRmb290ZXI6IChcblx0XHRcdFx0XHRcdDxPdmVyZmxvd1Rvb2xiYXI+XG5cdFx0XHRcdFx0XHRcdDxUb29sYmFyU3BhY2VyIC8+XG5cdFx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19FQVNZRURJVF9ESUFMT0dfU0FWRVwiKX1cblx0XHRcdFx0XHRcdFx0XHR0eXBlPVwiRW1waGFzaXplZFwiXG5cdFx0XHRcdFx0XHRcdFx0ZW5hYmxlZD17YW5kKHRoaXMuYmluZFN0YXRlKFwiaGFzVmFsdWVzXCIpLCBub3QodGhpcy5iaW5kU3RhdGUoXCJoYXNFcnJvclwiKSkpfVxuXHRcdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLm9uQ29uZmlybS5iaW5kKHRoaXMpfVxuXHRcdFx0XHRcdFx0XHRcdHJlZj17JGVhc3lGaWxsU2F2ZUJ1dHRvbn1cblx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0VBU1lFRElUX0RJQUxPR19DQU5DRUxcIil9XG5cdFx0XHRcdFx0XHRcdFx0dHlwZT1cIlRyYW5zcGFyZW50XCJcblx0XHRcdFx0XHRcdFx0XHRwcmVzcz17dGhpcy5vbkNhbmNlbC5iaW5kKHRoaXMpfVxuXHRcdFx0XHRcdFx0XHRcdHJlZj17JGVhc3lGaWxsQ2FuY2VsQnV0dG9ufVxuXHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0PC9PdmVyZmxvd1Rvb2xiYXI+XG5cdFx0XHRcdFx0KVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9EaWFsb2c+XG5cdFx0KTtcblx0XHRGRVNSSGVscGVyLnNldFNlbWFudGljU3RlcG5hbWUoJGVhc3lGaWxsQnV0dG9uLmN1cnJlbnQhLCBcInByZXNzXCIsIFwiZmFpOmVmOmFuYWx5emVUZXh0XCIpO1xuXHRcdEZFU1JIZWxwZXIuc2V0U2VtYW50aWNTdGVwbmFtZSgkZWFzeUZpbGxTYXZlQnV0dG9uLmN1cnJlbnQhLCBcInByZXNzXCIsIFwiZmFpOmVmOnNhdmVcIik7XG5cdFx0RkVTUkhlbHBlci5zZXRTZW1hbnRpY1N0ZXBuYW1lKCRlYXN5RmlsbENhbmNlbEJ1dHRvbi5jdXJyZW50ISwgXCJwcmVzc1wiLCBcImZhaTplZjpjYW5jZWxcIik7XG5cdFx0RkVTUkhlbHBlci5zZXRTZW1hbnRpY1N0ZXBuYW1lKCRlYXN5RmlsbENsZWFyQWxsQnV0dG9uLmN1cnJlbnQhLCBcInByZXNzXCIsIFwiZmFpOmVmOmNsZWFyQWxsXCIpO1xuXHRcdHJldHVybiBkaWFsb2c7XG5cdH1cblxuXHRhc3luYyBfZ2V0VmFsdWVMaXN0KHByb3BlcnR5UGF0aDogc3RyaW5nKTogUHJvbWlzZTxWYWx1ZUxpc3RJbmZvIHwgdW5kZWZpbmVkPiB7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gdGhpcy5nZXRNZXRhTW9kZWwoKSE7XG5cdFx0Y29uc3QgdmFsdWVMaXN0cyA9IGF3YWl0IFZhbHVlTGlzdEhlbHBlci5nZXRWYWx1ZUxpc3RJbmZvKHVuZGVmaW5lZCwgcHJvcGVydHlQYXRoLCB1bmRlZmluZWQsIG1ldGFNb2RlbCk7XG5cdFx0cmV0dXJuIHZhbHVlTGlzdHNbMF07XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF5REEsTUFBTUEsVUFBVSxHQUFHLElBQUk7RUFBQyxJQUdIQyxjQUFj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
|
|
@@ -191,9 +191,10 @@ export default class EasyFillDialog extends BuildingBlock<
|
|
|
191
191
|
if (
|
|
192
192
|
!isImmutable(entityProperty) &&
|
|
193
193
|
!isComputed(entityProperty) &&
|
|
194
|
-
entityProperty.annotations.UI?.Hidden?.valueOf() !== true
|
|
194
|
+
entityProperty.annotations.UI?.Hidden?.valueOf() !== true &&
|
|
195
|
+
!entityProperty.targetType
|
|
195
196
|
) {
|
|
196
|
-
// If not immutable, computed or hidden add to the field mapping
|
|
197
|
+
// If not immutable, computed or hidden, or a complex type add to the field mapping
|
|
197
198
|
fieldMapping[entityProperty.name] = {
|
|
198
199
|
description: getLabel(entityProperty) ?? entityProperty.name,
|
|
199
200
|
dataType: entityProperty.type
|
|
@@ -336,7 +337,7 @@ export default class EasyFillDialog extends BuildingBlock<
|
|
|
336
337
|
);
|
|
337
338
|
FESRHelper.setSemanticStepname(thumbDownButton, "press", "fe4:ef:thumbDown");
|
|
338
339
|
const aiNoticeText = (
|
|
339
|
-
<HBox alignItems={"Center"} visible={this.bindState("
|
|
340
|
+
<HBox alignItems={"Center"} visible={equal(this.bindState("stateType"), "HasEntries")}>
|
|
340
341
|
<AILinkNotice />
|
|
341
342
|
<Text text={this.getTranslatedText("C_EASYEDIT_AI_NOTICE_TEXT")} class={"sapUiTinyMarginBegin"} />
|
|
342
343
|
{thumbUpButton}, {thumbDownButton}
|
|
@@ -378,20 +379,14 @@ export default class EasyFillDialog extends BuildingBlock<
|
|
|
378
379
|
<VBox ref={$vBox}>
|
|
379
380
|
{{
|
|
380
381
|
items: [
|
|
381
|
-
<HBox
|
|
382
|
-
<
|
|
383
|
-
|
|
384
|
-
text={this.getTranslatedText("C_EASYEDIT_FILLED_FIELDS")}
|
|
385
|
-
visible={this.bindState("hasValues")}
|
|
386
|
-
/>
|
|
387
|
-
</HBox>
|
|
388
|
-
,
|
|
389
|
-
<HBox>
|
|
390
|
-
{{ layoutData: <FlexItemData alignSelf="End" /> }}
|
|
391
|
-
{aiNoticeText}
|
|
392
|
-
</HBox>
|
|
393
|
-
,
|
|
382
|
+
<HBox>
|
|
383
|
+
{{ layoutData: <FlexItemData alignSelf="End" /> }}
|
|
384
|
+
{aiNoticeText}
|
|
394
385
|
</HBox>,
|
|
386
|
+
<Title
|
|
387
|
+
text={this.getTranslatedText("C_EASYEDIT_FILLED_FIELDS")}
|
|
388
|
+
visible={this.bindState("hasValues")}
|
|
389
|
+
/>,
|
|
395
390
|
reviewAreaForm,
|
|
396
391
|
<Title
|
|
397
392
|
text={this.getTranslatedText("C_EASYEDIT_INCORRECT_FIELDS")}
|