@sapui5/sap.fe.macros 1.141.1 → 1.142.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/Breadcrumbs.js +4 -10
- package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
- package/src/sap/fe/macros/Chart.js +34 -23
- package/src/sap/fe/macros/Chart.tsx +25 -11
- package/src/sap/fe/macros/CollaborativeDraftHandler.js +48 -31
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +51 -26
- package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
- package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
- package/src/sap/fe/macros/CommonHelper.js +14 -24
- package/src/sap/fe/macros/CommonHelper.ts +18 -25
- package/src/sap/fe/macros/Field.js +30 -13
- package/src/sap/fe/macros/Field.ts +60 -30
- package/src/sap/fe/macros/FooterContent.js +5 -2
- package/src/sap/fe/macros/FooterContent.tsx +6 -3
- package/src/sap/fe/macros/KPITag.js +1 -1
- package/src/sap/fe/macros/KPITag.tsx +3 -1
- package/src/sap/fe/macros/MacroAPI.js +3 -2
- package/src/sap/fe/macros/MacroAPI.ts +2 -2
- package/src/sap/fe/macros/MessageButton.js +3 -2
- package/src/sap/fe/macros/MessageButton.tsx +5 -2
- package/src/sap/fe/macros/MicroChart.js +10 -6
- package/src/sap/fe/macros/MicroChart.tsx +8 -2
- package/src/sap/fe/macros/MultiValueField.js +22 -36
- package/src/sap/fe/macros/MultiValueField.tsx +34 -66
- package/src/sap/fe/macros/RichTextEditor.js +3 -4
- package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
- package/src/sap/fe/macros/Status.js +35 -8
- package/src/sap/fe/macros/Status.tsx +23 -2
- package/src/sap/fe/macros/ValueHelp.js +5 -2
- package/src/sap/fe/macros/ValueHelp.tsx +5 -0
- package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
- package/src/sap/fe/macros/chart/Action.js +25 -2
- package/src/sap/fe/macros/chart/Action.ts +13 -0
- package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
- package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
- package/src/sap/fe/macros/chart/ChartDelegate.js +8 -8
- package/src/sap/fe/macros/chart/ChartDelegate.ts +17 -12
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +54 -11
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +70 -11
- package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
- package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
- package/src/sap/fe/macros/controls/FilterBar.js +39 -3
- package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
- package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
- package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
- package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +37 -9
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +45 -6
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
- package/src/sap/fe/macros/field/FieldFormatOptions.js +3 -3
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +1 -1
- package/src/sap/fe/macros/field/FieldHelper.js +4 -3
- package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
- package/src/sap/fe/macros/field/FieldRuntime.js +38 -8
- package/src/sap/fe/macros/field/FieldRuntime.ts +65 -7
- package/src/sap/fe/macros/field/FieldRuntimeHelper.js +3 -34
- package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
- package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
- package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
- package/src/sap/fe/macros/filter/FilterUtils.js +100 -36
- package/src/sap/fe/macros/filter/FilterUtils.ts +127 -39
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +10 -7
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +31 -16
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +4 -3
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
- package/src/sap/fe/macros/form/Form.block.js +27 -2
- package/src/sap/fe/macros/form/Form.block.ts +31 -11
- package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
- package/src/sap/fe/macros/form/FormContainer.block.js +96 -65
- package/src/sap/fe/macros/form/FormContainer.block.ts +104 -65
- package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
- package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
- package/src/sap/fe/macros/insights/InsightsService.js +3 -2
- package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
- package/src/sap/fe/macros/internal/DataPoint.js +7 -8
- package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
- package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
- package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
- package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
- package/src/sap/fe/macros/library.js +3 -3
- package/src/sap/fe/macros/library.ts +2 -0
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
- package/src/sap/fe/macros/messagebundle.properties +7 -5
- package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
- package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
- package/src/sap/fe/macros/messagebundle_da.properties +12 -3
- package/src/sap/fe/macros/messagebundle_de.properties +16 -7
- package/src/sap/fe/macros/messagebundle_el.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
- package/src/sap/fe/macros/messagebundle_et.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
- package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
- package/src/sap/fe/macros/messagebundle_id.properties +18 -9
- package/src/sap/fe/macros/messagebundle_it.properties +12 -3
- package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
- package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
- package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
- package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
- package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_no.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_th.properties +11 -2
- package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
- package/src/sap/fe/macros/table/Action.js +15 -2
- package/src/sap/fe/macros/table/Action.ts +11 -1
- package/src/sap/fe/macros/table/ActionGroup.js +15 -2
- package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
- package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
- package/src/sap/fe/macros/table/MdcTableTemplate.js +91 -10
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +131 -10
- package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
- package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
- package/src/sap/fe/macros/table/Table.block.js +70 -29
- package/src/sap/fe/macros/table/Table.block.tsx +65 -12
- package/src/sap/fe/macros/table/TableAPI.js +169 -131
- package/src/sap/fe/macros/table/TableAPI.ts +58 -28
- package/src/sap/fe/macros/table/TableDefinition.js +19 -2
- package/src/sap/fe/macros/table/TableDefinition.ts +17 -1
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +4 -3
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +8 -9
- package/src/sap/fe/macros/table/TableHelper.js +5 -2
- package/src/sap/fe/macros/table/TableHelper.ts +5 -2
- package/src/sap/fe/macros/table/TableRuntime.js +2 -2
- package/src/sap/fe/macros/table/TableRuntime.ts +4 -6
- package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
- package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +67 -26
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +108 -118
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +2 -2
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +1 -1
- package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
- package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +6 -5
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +10 -4
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
- package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
- package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/core/formatters/Scope", "sap/fe/macros/CommonHelper", "sap/fe/macros/controls/filterbar/utils/VisualFilterUtils", "sap/fe/macros/filter/FilterUtils", "sap/fe/macros/filterBar/FilterHelper", "sap/ui/core/Lib", "sap/ui/mdc/condition/Condition", "sap/ui/mdc/odata/v4/TypeMap", "sap/ui/mdc/util/FilterUtil", "sap/ui/model/Filter", "sap/ui/model/FilterOperator"], function (Log, Scope, CommonHelper, VisualFilterUtils, FilterUtils, FilterHelper, Library, Condition, TypeMap, MdcFilterUtil, Filter, FilterOperator) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var getFiltersConditionsFromSelectionVariant = FilterHelper.getFiltersConditionsFromSelectionVariant;
|
|
@@ -302,7 +302,10 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/macros/Common
|
|
|
302
302
|
oEvent.getSource().getParent()?.getParent()?.getParent()?.getParent()?.fireEvent("valueHelpRequest");
|
|
303
303
|
}
|
|
304
304
|
};
|
|
305
|
-
|
|
305
|
+
|
|
306
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
307
|
+
// @ts-ignore
|
|
308
|
+
Scope._formatters.VisualFilterRuntime = VisualFilterRuntime;
|
|
306
309
|
return VisualFilterRuntime;
|
|
307
310
|
}, false);
|
|
308
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWaXN1YWxGaWx0ZXJSdW50aW1lIiwic2VsZWN0aW9uQ2hhbmdlZCIsIm9FdmVudCIsIm9JbnRlcmFjdGl2ZUNoYXJ0IiwiZ2V0U291cmNlIiwic091dFBhcmFtZXRlciIsImRhdGEiLCJzVmFsdWVMaXN0UHJvcGVydHkiLCJzRGltZW5zaW9uIiwic0RpbWVuc2lvblRleHQiLCJiTXVsdGlwbGVTZWxlY3Rpb25BbGxvd2VkIiwic0RpbWVuc2lvblR5cGUiLCJvU2VsZWN0ZWRBZ2dyZWdhdGlvbiIsImdldFBhcmFtZXRlciIsImJJc0FnZ3JlZ2F0aW9uU2VsZWN0ZWQiLCJvQ29uZGl0aW9uTW9kZWwiLCJnZXRNb2RlbCIsImFDb25kaXRpb25zIiwiZ2V0UHJvcGVydHkiLCJMb2ciLCJlcnJvciIsInNTZWxlY3Rpb25DaGFuZ2VkVmFsdWUiLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldE9iamVjdCIsInNTZWxlY3Rpb25DaGFuZ2VkVmFsdWVUZXh0IiwiU3RyaW5nIiwidW5kZWZpbmVkIiwiVmlzdWFsRmlsdGVyVXRpbHMiLCJfcGFyc2VEYXRlVGltZSIsIm9Db25kaXRpb24iLCJDb25kaXRpb24iLCJjcmVhdGVJdGVtQ29uZGl0aW9uIiwicHVzaCIsImZpbHRlciIsIm9wZXJhdG9yIiwiRGF0ZSIsInBhcnNlIiwidmFsdWVzIiwic2V0UHJvcGVydHkiLCJnZXRBZ2dyZWdhdGlvblNlbGVjdGVkIiwiYVNlbGVjdGFibGVWYWx1ZXMiLCJpIiwibGVuZ3RoIiwiZ2V0UGFyZW50Iiwic0RpbWVuc2lvblZhbHVlIiwiaW5jbHVkZXMiLCJnZXRQYXJlbnRWaXN1YWxGaWx0ZXJDb250cm9sQkIiLCJwb3RlbnRpYWxWaXN1YWxGaWx0ZXIiLCJpc0EiLCJnZXRGaWx0ZXJzRnJvbUNvbmRpdGlvbnMiLCJfbGVuIiwiYXJndW1lbnRzIiwiYUFyZ3VtZW50cyIsIkFycmF5IiwiX2tleSIsIm9GaWx0ZXJCYXIiLCJhSW5QYXJhbWV0ZXJzIiwiY3VzdG9tRGF0YSIsImJJc0RyYWZ0U3VwcG9ydGVkIiwiYVByb3BlcnR5SW5mb1NldCIsIkZpbHRlclV0aWxzIiwiZ2V0RmlsdGVyUHJvcGVydHlJbmZvIiwibUNvbmRpdGlvbnMiLCJhVmFsdWVMaXN0UHJvcGVydHlJbmZvU2V0Iiwib0ZpbHRlcnMiLCJhRmlsdGVycyIsImFQYXJhbWV0ZXJzIiwib1NlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uIiwib0ludGVyYWN0aXZlQ2hhcnRMaXN0QmluZGluZyIsImdldEJpbmRpbmciLCJzUGF0aCIsImdldFBhdGgiLCJvTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwic0VudGl0eVNldFBhdGgiLCJmaWx0ZXJDb25kaXRpb25zIiwiZ2V0RmlsdGVyc0NvbmRpdGlvbnNGcm9tU2VsZWN0aW9uVmFyaWFudCIsImdldEN1c3RvbUNvbmRpdGlvbnMiLCJiaW5kIiwidHlwZUNvbmZpZyIsIlR5cGVNYXAiLCJnZXRUeXBlQ29uZmlnIiwiZGF0YVR5cGUiLCJvU2VsZWN0aW9uVmFyaWFudENvbmRpdGlvbnMiLCJjb252ZXJ0RmlsdGVyQ29uZGlvbnMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsInNLZXkiLCJpblBhcmFtZXRlckZvcktleSIsImZpbmQiLCJpblBhcmFtZXRlciIsInZhbHVlTGlzdFByb3BlcnR5IiwibG9jYWxEYXRhUHJvcGVydHkiLCJwcm9wZXJ0eUluZm9TZXQiLCJuYW1lIiwiYmFzZVR5cGUiLCJjb25kaXRpb24iLCJfZm9ybWF0RGF0ZVRpbWUiLCJvSW5QYXJhbWV0ZXIiLCJpbmRleCIsIm9JbnRlcm5hbE1vZGVsQ29udGV4dCIsInNJbmZvUGF0aCIsImJFbmFibGVCaW5kaW5nIiwib1Jlc291cmNlQnVuZGxlIiwiTGlicmFyeSIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiYVJlcXVpcmVkUHJvcGVydGllcyIsIkNvbW1vbkhlbHBlciIsInBhcnNlQ3VzdG9tRGF0YSIsImFOb3RNYXRjaGVkQ29uZGl0aW9ucyIsInJlcXVpcmVkUHJvcGVydHlQYXRoIiwiZXJyb3JNZXNzYWdlVGl0bGUiLCJlcnJvck1lc3NhZ2UiLCJzaG93RXJyb3IiLCJnZXRUZXh0Iiwic0xhYmVsIiwic0ZpbHRlckVudGl0eU5hbWUiLCJzcGxpdCIsInNDaGFydEVudGl0eU5hbWUiLCJzQmluZGluZ1BhdGgiLCJnZXRCaW5kaW5nUGF0aEZvclBhcmFtZXRlcnMiLCJwYXJhbWV0ZXIiLCJNZGNGaWx0ZXJVdGlsIiwiZ2V0RmlsdGVySW5mbyIsImZpbHRlcnMiLCJlIiwiZGVidWciLCJnZXRGaWx0ZXJzIiwiRmlsdGVyIiwiRmlsdGVyT3BlcmF0b3IiLCJFUSIsInZpc3VhbEZpbHRlckJCIiwiX3NldEludGVybmFsVXBkYXRlUGVuZGluZyIsImdldEZpbHRlckNvdW50cyIsIm9Db25kaXRpb25zIiwic2NhbGVWaXN1YWxGaWx0ZXJWYWx1ZSIsIm9WYWx1ZSIsInNjYWxlRmFjdG9yIiwibnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzIiwiY3VycmVuY3kiLCJvUmF3VmFsdWUiLCJnZXRGb3JtYXR0ZWROdW1iZXIiLCJmaXJlVmFsdWVIZWxwIiwiZmlyZUV2ZW50IiwiT2JqZWN0UGF0aCIsInNldCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVmlzdWFsRmlsdGVyUnVudGltZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNlbGVjdGlvblZhcmlhbnRUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgT2JqZWN0UGF0aCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9PYmplY3RQYXRoXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBDb21tb25IZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29tbW9uSGVscGVyXCI7XG5pbXBvcnQgVmlzdWFsRmlsdGVyVXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvZmlsdGVyYmFyL3V0aWxzL1Zpc3VhbEZpbHRlclV0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IElGaWx0ZXJDb250cm9sIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlclV0aWxzXCI7XG5pbXBvcnQgRmlsdGVyVXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlclV0aWxzXCI7XG5pbXBvcnQgeyBnZXRGaWx0ZXJzQ29uZGl0aW9uc0Zyb21TZWxlY3Rpb25WYXJpYW50IH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUluZm8gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC9Qcm9wZXJ0eUluZm9cIjtcbmltcG9ydCB0eXBlIFZpc3VhbEZpbHRlckJsb2NrIGZyb20gXCJzYXAvZmUvbWFjcm9zL3Zpc3VhbGZpbHRlcnMvVmlzdWFsRmlsdGVyXCI7XG5pbXBvcnQgdHlwZSB7IEludGVyYWN0aXZlQmFyQ2hhcnQkU2VsZWN0aW9uQ2hhbmdlZEV2ZW50IH0gZnJvbSBcInNhcC9zdWl0ZS91aS9taWNyb2NoYXJ0L0ludGVyYWN0aXZlQmFyQ2hhcnRcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJhY3RpdmVEb251dENoYXJ0JFNlbGVjdGlvbkNoYW5nZWRFdmVudCB9IGZyb20gXCJzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9JbnRlcmFjdGl2ZURvbnV0Q2hhcnRcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJhY3RpdmVMaW5lQ2hhcnQkU2VsZWN0aW9uQ2hhbmdlZEV2ZW50IH0gZnJvbSBcInNhcC9zdWl0ZS91aS9taWNyb2NoYXJ0L0ludGVyYWN0aXZlTGluZUNoYXJ0XCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIHsgQ29uZGl0aW9uT2JqZWN0IH0gZnJvbSBcInNhcC91aS9tZGMvY29uZGl0aW9uL0NvbmRpdGlvblwiO1xuaW1wb3J0IENvbmRpdGlvbiBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vQ29uZGl0aW9uXCI7XG5pbXBvcnQgVHlwZU1hcCBmcm9tIFwic2FwL3VpL21kYy9vZGF0YS92NC9UeXBlTWFwXCI7XG5pbXBvcnQgTWRjRmlsdGVyVXRpbCBmcm9tIFwic2FwL3VpL21kYy91dGlsL0ZpbHRlclV0aWxcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCBGaWx0ZXJPcGVyYXRvciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IE1ldGFNb2RlbFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdHlwZXMvbWV0YW1vZGVsX3R5cGVzXCI7XG5cbi8qKlxuICogU3RhdGljIGNsYXNzIHVzZWQgYnkgVmlzdWFsIEZpbHRlciBkdXJpbmcgcnVudGltZVxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgVmlzdWFsRmlsdGVyUnVudGltZSA9IHtcblx0c2VsZWN0aW9uQ2hhbmdlZChcblx0XHRvRXZlbnQ6XG5cdFx0XHR8IFVJNUV2ZW50XG5cdFx0XHR8IEludGVyYWN0aXZlQmFyQ2hhcnQkU2VsZWN0aW9uQ2hhbmdlZEV2ZW50XG5cdFx0XHR8IEludGVyYWN0aXZlTGluZUNoYXJ0JFNlbGVjdGlvbkNoYW5nZWRFdmVudFxuXHRcdFx0fCBJbnRlcmFjdGl2ZURvbnV0Q2hhcnQkU2VsZWN0aW9uQ2hhbmdlZEV2ZW50XG5cdCk6IHZvaWQge1xuXHRcdGNvbnN0IG9JbnRlcmFjdGl2ZUNoYXJ0OiBDb250cm9sID0gKG9FdmVudCBhcyBVSTVFdmVudCkuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3Qgc091dFBhcmFtZXRlciA9IG9JbnRlcmFjdGl2ZUNoYXJ0LmRhdGEoXCJvdXRQYXJhbWV0ZXJcIik7XG5cdFx0Y29uc3Qgc1ZhbHVlTGlzdFByb3BlcnR5ID0gb0ludGVyYWN0aXZlQ2hhcnQuZGF0YShcInZhbHVlbGlzdFByb3BlcnR5XCIpO1xuXHRcdGNvbnN0IHNEaW1lbnNpb24gPSBvSW50ZXJhY3RpdmVDaGFydC5kYXRhKFwiZGltZW5zaW9uXCIpO1xuXHRcdGNvbnN0IHNEaW1lbnNpb25UZXh0ID0gb0ludGVyYWN0aXZlQ2hhcnQuZGF0YShcImRpbWVuc2lvblRleHRcIik7XG5cdFx0Y29uc3QgYk11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZCA9IG9JbnRlcmFjdGl2ZUNoYXJ0LmRhdGEoXCJtdWx0aXBsZVNlbGVjdGlvbkFsbG93ZWRcIik7XG5cdFx0Y29uc3Qgc0RpbWVuc2lvblR5cGUgPSBvSW50ZXJhY3RpdmVDaGFydC5kYXRhKFwiZGltZW5zaW9uVHlwZVwiKTtcblx0XHRjb25zdCBvU2VsZWN0ZWRBZ2dyZWdhdGlvbiA9XG5cdFx0XHQob0V2ZW50IGFzIEludGVyYWN0aXZlQmFyQ2hhcnQkU2VsZWN0aW9uQ2hhbmdlZEV2ZW50KS5nZXRQYXJhbWV0ZXIoXCJiYXJcIikgfHxcblx0XHRcdChvRXZlbnQgYXMgSW50ZXJhY3RpdmVMaW5lQ2hhcnQkU2VsZWN0aW9uQ2hhbmdlZEV2ZW50KS5nZXRQYXJhbWV0ZXIoXCJwb2ludFwiKSB8fFxuXHRcdFx0KG9FdmVudCBhcyBJbnRlcmFjdGl2ZURvbnV0Q2hhcnQkU2VsZWN0aW9uQ2hhbmdlZEV2ZW50KS5nZXRQYXJhbWV0ZXIoXCJzZWdtZW50XCIpO1xuXHRcdGNvbnN0IGJJc0FnZ3JlZ2F0aW9uU2VsZWN0ZWQgPSAob0V2ZW50IGFzIEludGVyYWN0aXZlQmFyQ2hhcnQkU2VsZWN0aW9uQ2hhbmdlZEV2ZW50KS5nZXRQYXJhbWV0ZXIoXCJzZWxlY3RlZFwiKTtcblx0XHRjb25zdCBvQ29uZGl0aW9uTW9kZWwgPSBvSW50ZXJhY3RpdmVDaGFydC5nZXRNb2RlbChcIiRmaWVsZFwiKSBhcyBKU09OTW9kZWw7XG5cdFx0bGV0IGFDb25kaXRpb25zID0gb0NvbmRpdGlvbk1vZGVsLmdldFByb3BlcnR5KFwiL2NvbmRpdGlvbnNcIik7XG5cblx0XHRpZiAoIXNPdXRQYXJhbWV0ZXIgfHwgc1ZhbHVlTGlzdFByb3BlcnR5ICE9PSBzRGltZW5zaW9uKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJWaXN1YWxGaWx0ZXI6IENhbm5vdCBzeW5jIHZhbHVlcyB3aXRoIHJlZ3VsYXIgZmlsdGVyIGFzIG91dCBwYXJhbWV0ZXIgaXMgbm90IGNvbmZpZ3VyZWQgcHJvcGVybHkhXCIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRsZXQgc1NlbGVjdGlvbkNoYW5nZWRWYWx1ZSA9IG9TZWxlY3RlZEFnZ3JlZ2F0aW9uPy5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRPYmplY3Qoc1ZhbHVlTGlzdFByb3BlcnR5KTtcblx0XHRcdGlmIChzU2VsZWN0aW9uQ2hhbmdlZFZhbHVlKSB7XG5cdFx0XHRcdGxldCBzU2VsZWN0aW9uQ2hhbmdlZFZhbHVlVGV4dCA9IG9TZWxlY3RlZEFnZ3JlZ2F0aW9uPy5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRPYmplY3Qoc0RpbWVuc2lvblRleHQpO1xuXHRcdFx0XHRpZiAodHlwZW9mIHNTZWxlY3Rpb25DaGFuZ2VkVmFsdWVUZXh0ICE9PSBcInN0cmluZ1wiICYmICEoc1NlbGVjdGlvbkNoYW5nZWRWYWx1ZVRleHQgaW5zdGFuY2VvZiBTdHJpbmcpKSB7XG5cdFx0XHRcdFx0c1NlbGVjdGlvbkNoYW5nZWRWYWx1ZVRleHQgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gaWYgc2VsZWN0aW9uIGhhcyBiZWVuIGRvbmUgb24gdGhlIGFnZ3JlZ2F0aW9uIHRoZW4gYWRkIHRvIGNvbmRpdGlvbnNcblx0XHRcdFx0aWYgKGJJc0FnZ3JlZ2F0aW9uU2VsZWN0ZWQpIHtcblx0XHRcdFx0XHRpZiAoYk11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZCA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHRcdGFDb25kaXRpb25zID0gW107XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChzRGltZW5zaW9uVHlwZSA9PT0gXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIikge1xuXHRcdFx0XHRcdFx0c1NlbGVjdGlvbkNoYW5nZWRWYWx1ZSA9IFZpc3VhbEZpbHRlclV0aWxzLl9wYXJzZURhdGVUaW1lKHNTZWxlY3Rpb25DaGFuZ2VkVmFsdWUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zdCBvQ29uZGl0aW9uID0gQ29uZGl0aW9uLmNyZWF0ZUl0ZW1Db25kaXRpb24oXG5cdFx0XHRcdFx0XHRzU2VsZWN0aW9uQ2hhbmdlZFZhbHVlLFxuXHRcdFx0XHRcdFx0c1NlbGVjdGlvbkNoYW5nZWRWYWx1ZVRleHQgfHwgdW5kZWZpbmVkLFxuXHRcdFx0XHRcdFx0e30sXG5cdFx0XHRcdFx0XHR7fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0YUNvbmRpdGlvbnMucHVzaChvQ29uZGl0aW9uKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBiZWNhdXNlIHNlbGVjdGlvbiB3YXMgcmVtb3ZlZCBvbiB0aGUgYWdncmVnYXRpb24gaGVuY2UgcmVtb3ZlIHRoaXMgZnJvbSBjb25kaXRpb25zXG5cdFx0XHRcdFx0YUNvbmRpdGlvbnMgPSBhQ29uZGl0aW9ucy5maWx0ZXIoZnVuY3Rpb24gKG9Db25kaXRpb246IENvbmRpdGlvbk9iamVjdCkge1xuXHRcdFx0XHRcdFx0aWYgKHNEaW1lbnNpb25UeXBlID09PSBcIkVkbS5EYXRlVGltZU9mZnNldFwiKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvQ29uZGl0aW9uLm9wZXJhdG9yICE9PSBcIkVRXCIgfHwgRGF0ZS5wYXJzZShvQ29uZGl0aW9uLnZhbHVlc1swXSkgIT09IERhdGUucGFyc2Uoc1NlbGVjdGlvbkNoYW5nZWRWYWx1ZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm4gb0NvbmRpdGlvbi5vcGVyYXRvciAhPT0gXCJFUVwiIHx8IG9Db25kaXRpb24udmFsdWVzWzBdICE9PSBzU2VsZWN0aW9uQ2hhbmdlZFZhbHVlO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG9Db25kaXRpb25Nb2RlbC5zZXRQcm9wZXJ0eShcIi9jb25kaXRpb25zXCIsIGFDb25kaXRpb25zKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIlZpc3VhbEZpbHRlcjogTm8gdmF1ZSBmb3VuZCBmb3IgdGhlIG91dFBhcmFtZXRlclwiKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdC8vIFRISVMgSVMgQSBGT1JNQVRURVJcblx0Z2V0QWdncmVnYXRpb25TZWxlY3RlZCh0aGlzOiBNYW5hZ2VkT2JqZWN0LCBhQ29uZGl0aW9uczogQ29uZGl0aW9uT2JqZWN0W10pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgYVNlbGVjdGFibGVWYWx1ZXMgPSBbXTtcblx0XHRpZiAoIXRoaXMuZ2V0QmluZGluZ0NvbnRleHQoKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8PSBhQ29uZGl0aW9ucy5sZW5ndGggLSAxOyBpKyspIHtcblx0XHRcdGNvbnN0IG9Db25kaXRpb24gPSBhQ29uZGl0aW9uc1tpXTtcblx0XHRcdC8vIDEuIGdldCBjb25kaXRpb25zIHdpdGggRVEgb3BlcmF0b3IgKHNpbmNlIHZpc3VhbCBmaWx0ZXIgY2FuIG9ubHkgZGVhbCB3aXRoIEVRIG9wZXJhdG9ycykgYW5kIGdldCB0aGVpciB2YWx1ZXNcblx0XHRcdGlmIChvQ29uZGl0aW9uLm9wZXJhdG9yID09PSBcIkVRXCIpIHtcblx0XHRcdFx0YVNlbGVjdGFibGVWYWx1ZXMucHVzaChvQ29uZGl0aW9uLnZhbHVlc1swXSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gYWNjZXNzIHRoZSBpbnRlcmFjdGl2ZSBjaGFydCBmcm9tIHRoZSBjb250cm9sLlxuXHRcdGNvbnN0IG9JbnRlcmFjdGl2ZUNoYXJ0ID0gdGhpcy5nZXRQYXJlbnQoKSBhcyBDb250cm9sO1xuXHRcdGNvbnN0IHNEaW1lbnNpb24gPSBvSW50ZXJhY3RpdmVDaGFydC5kYXRhKFwiZGltZW5zaW9uXCIpO1xuXHRcdGNvbnN0IHNEaW1lbnNpb25UeXBlID0gb0ludGVyYWN0aXZlQ2hhcnQuZGF0YShcImRpbWVuc2lvblR5cGVcIik7XG5cdFx0bGV0IHNEaW1lbnNpb25WYWx1ZSA9IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0T2JqZWN0KHNEaW1lbnNpb24pO1xuXHRcdGlmIChzRGltZW5zaW9uVHlwZSA9PT0gXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIikge1xuXHRcdFx0c0RpbWVuc2lvblZhbHVlID0gVmlzdWFsRmlsdGVyVXRpbHMuX3BhcnNlRGF0ZVRpbWUoc0RpbWVuc2lvblZhbHVlKSBhcyB1bmtub3duO1xuXHRcdH1cblx0XHRpZiAob0ludGVyYWN0aXZlQ2hhcnQuZGF0YShcIm11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZFwiKSA9PT0gZmFsc2UgJiYgYVNlbGVjdGFibGVWYWx1ZXMubGVuZ3RoID4gMSkge1xuXHRcdFx0YVNlbGVjdGFibGVWYWx1ZXMgPSBbYVNlbGVjdGFibGVWYWx1ZXNbMF1dO1xuXHRcdH1cblx0XHRyZXR1cm4gYVNlbGVjdGFibGVWYWx1ZXMuaW5jbHVkZXMoc0RpbWVuc2lvblZhbHVlKTtcblx0fSxcblxuXHQvKipcblx0ICogR2V0IFZpc3VhbCBGaWx0ZXIgY29udHJvbCBmb3IgdGhlIGdpdmVuIGNoaWxkIGNvbnRyb2wuXG5cdCAqIEBwYXJhbSBwb3RlbnRpYWxWaXN1YWxGaWx0ZXIgRXhwZWN0ZWQgaW5zdGFuY2Ugb2YgVmlzdWFsIEZpbHRlciBjaGlsZCBjb250cm9sLlxuXHQgKiBAcmV0dXJucyBUaGUgcGFyZW50IFZpc3VhbCBGaWx0ZXIgQnVpbGRpbmdibG9jayBjb250cm9sIGluc3RhbmNlIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cblx0ICovXG5cdGdldFBhcmVudFZpc3VhbEZpbHRlckNvbnRyb2xCQihwb3RlbnRpYWxWaXN1YWxGaWx0ZXI6IE1hbmFnZWRPYmplY3QgfCBudWxsKTogVmlzdWFsRmlsdGVyQmxvY2sgfCBudWxsIHtcblx0XHR3aGlsZSAocG90ZW50aWFsVmlzdWFsRmlsdGVyICYmICFwb3RlbnRpYWxWaXN1YWxGaWx0ZXIuaXNBPFZpc3VhbEZpbHRlckJsb2NrPihcInNhcC5mZS5tYWNyb3MudmlzdWFsZmlsdGVycy5WaXN1YWxGaWx0ZXJcIikpIHtcblx0XHRcdHBvdGVudGlhbFZpc3VhbEZpbHRlciA9IHBvdGVudGlhbFZpc3VhbEZpbHRlci5nZXRQYXJlbnQoKTtcblx0XHR9XG5cdFx0cmV0dXJuIHBvdGVudGlhbFZpc3VhbEZpbHRlcjtcblx0fSxcblxuXHQvLyBUSElTIElTIEEgRk9STUFUVEVSXG5cdGdldEZpbHRlcnNGcm9tQ29uZGl0aW9ucyh0aGlzOiBNYW5hZ2VkT2JqZWN0LCAuLi5hQXJndW1lbnRzOiBDb25kaXRpb25PYmplY3RbXVtdKTogRmlsdGVyW10gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG9JbnRlcmFjdGl2ZUNoYXJ0ID0gdGhpcy5nZXRQYXJlbnQoKSBhcyBDb250cm9sO1xuXHRcdGNvbnN0IG9GaWx0ZXJCYXIgPSBvSW50ZXJhY3RpdmVDaGFydC5nZXRQYXJlbnQoKT8uZ2V0UGFyZW50KCk/LmdldFBhcmVudCgpPy5nZXRQYXJlbnQoKT8uZ2V0UGFyZW50KCkgYXMgSUZpbHRlckNvbnRyb2w7XG5cdFx0Y29uc3QgYUluUGFyYW1ldGVycyA9IG9JbnRlcmFjdGl2ZUNoYXJ0LmRhdGEoXCJpblBhcmFtZXRlcnNcIikuY3VzdG9tRGF0YTtcblx0XHRjb25zdCBiSXNEcmFmdFN1cHBvcnRlZCA9IG9JbnRlcmFjdGl2ZUNoYXJ0LmRhdGEoXCJkcmFmdFN1cHBvcnRlZFwiKSA9PT0gdHJ1ZTtcblx0XHRjb25zdCBhUHJvcGVydHlJbmZvU2V0ID0gRmlsdGVyVXRpbHMuZ2V0RmlsdGVyUHJvcGVydHlJbmZvKG9GaWx0ZXJCYXIpIGFzIFByb3BlcnR5SW5mb1tdO1xuXHRcdGNvbnN0IG1Db25kaXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBDb25kaXRpb25PYmplY3RbXT4gPSB7fTtcblx0XHRjb25zdCBhVmFsdWVMaXN0UHJvcGVydHlJbmZvU2V0OiB1bmtub3duW10gPSBbXTtcblx0XHRsZXQgb0ZpbHRlcnM7XG5cdFx0bGV0IGFGaWx0ZXJzOiBGaWx0ZXJbXSA9IFtdO1xuXHRcdGNvbnN0IGFQYXJhbWV0ZXJzID0gb0ludGVyYWN0aXZlQ2hhcnQuZGF0YShcInBhcmFtZXRlcnNcIikgYXMgc3RyaW5nW107XG5cdFx0Y29uc3Qgb1NlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uID0gb0ludGVyYWN0aXZlQ2hhcnQuZGF0YShcInNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uXCIpIGFzXG5cdFx0XHR8IE1ldGFNb2RlbFR5cGU8U2VsZWN0aW9uVmFyaWFudFR5cGU+XG5cdFx0XHR8IFNlbGVjdGlvblZhcmlhbnRUeXBlO1xuXHRcdGNvbnN0IG9JbnRlcmFjdGl2ZUNoYXJ0TGlzdEJpbmRpbmcgPVxuXHRcdFx0b0ludGVyYWN0aXZlQ2hhcnQuZ2V0QmluZGluZyhcImJhcnNcIikgfHwgb0ludGVyYWN0aXZlQ2hhcnQuZ2V0QmluZGluZyhcInBvaW50c1wiKSB8fCBvSW50ZXJhY3RpdmVDaGFydC5nZXRCaW5kaW5nKFwic2VnbWVudHNcIik7XG5cdFx0Y29uc3Qgc1BhdGggPSBvSW50ZXJhY3RpdmVDaGFydExpc3RCaW5kaW5nIS5nZXRQYXRoKCk7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IChvSW50ZXJhY3RpdmVDaGFydC5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWwpLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IHNFbnRpdHlTZXRQYXRoID0gb0ludGVyYWN0aXZlQ2hhcnRMaXN0QmluZGluZyEuZ2V0UGF0aCgpO1xuXHRcdGNvbnN0IGZpbHRlckNvbmRpdGlvbnMgPSBnZXRGaWx0ZXJzQ29uZGl0aW9uc0Zyb21TZWxlY3Rpb25WYXJpYW50KFxuXHRcdFx0c0VudGl0eVNldFBhdGgsXG5cdFx0XHRvTWV0YU1vZGVsLFxuXHRcdFx0b1NlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uLFxuXHRcdFx0VmlzdWFsRmlsdGVyVXRpbHMuZ2V0Q3VzdG9tQ29uZGl0aW9ucy5iaW5kKFZpc3VhbEZpbHRlclV0aWxzKVxuXHRcdCk7XG5cdFx0Zm9yIChjb25zdCBpIGluIGFQcm9wZXJ0eUluZm9TZXQpIHtcblx0XHRcdGFQcm9wZXJ0eUluZm9TZXRbaV0udHlwZUNvbmZpZyA9IFR5cGVNYXAuZ2V0VHlwZUNvbmZpZyhhUHJvcGVydHlJbmZvU2V0W2ldLmRhdGFUeXBlLCB7fSwge30pO1xuXHRcdH1cblx0XHRjb25zdCBvU2VsZWN0aW9uVmFyaWFudENvbmRpdGlvbnMgPSBWaXN1YWxGaWx0ZXJVdGlscy5jb252ZXJ0RmlsdGVyQ29uZGlvbnMoZmlsdGVyQ29uZGl0aW9ucyk7XG5cdFx0Ly8gYUluUGFyYW1ldGVycyBhbmQgdGhlIGJpbmRpbmdzIHRvIGluIHBhcmFtZXRlcnMgYXJlIGluIHRoZSBzYW1lIG9yZGVyIHNvIHdlIGNhbiByZWx5IG9uIGl0IHRvIGNyZWF0ZSBvdXIgY29uZGl0aW9uc1xuXHRcdE9iamVjdC5rZXlzKG9TZWxlY3Rpb25WYXJpYW50Q29uZGl0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAoc0tleTogc3RyaW5nKSB7XG5cdFx0XHRtQ29uZGl0aW9uc1tzS2V5XSA9IG9TZWxlY3Rpb25WYXJpYW50Q29uZGl0aW9uc1tzS2V5XTtcblx0XHRcdC8vZmV0Y2ggbG9jYWxEYXRhUHJvcGVydHkgaWYgc2VsZWN0aW9uIHZhcmlhbnQga2V5IGlzIGJhc2VkIG9uIHZhdWUgbGlzdCBwcm9wZXJ0eVxuXHRcdFx0Y29uc3QgaW5QYXJhbWV0ZXJGb3JLZXkgPSBhSW5QYXJhbWV0ZXJzLmZpbmQoZnVuY3Rpb24gKGluUGFyYW1ldGVyOiB7IHZhbHVlTGlzdFByb3BlcnR5OiBzdHJpbmcgfSkge1xuXHRcdFx0XHRyZXR1cm4gaW5QYXJhbWV0ZXIudmFsdWVMaXN0UHJvcGVydHkgPT09IHNLZXk7XG5cdFx0XHR9KTtcblx0XHRcdGNvbnN0IGxvY2FsRGF0YVByb3BlcnR5ID0gaW5QYXJhbWV0ZXJGb3JLZXkgPyBpblBhcmFtZXRlckZvcktleS5sb2NhbERhdGFQcm9wZXJ0eSA6IHNLZXk7XG5cdFx0XHRpZiAoIWFQYXJhbWV0ZXJzIHx8IChhUGFyYW1ldGVycyAmJiAhYVBhcmFtZXRlcnMuaW5jbHVkZXMoc0tleSkpKSB7XG5cdFx0XHRcdGZvciAoY29uc3QgaSBpbiBhUHJvcGVydHlJbmZvU2V0KSB7XG5cdFx0XHRcdFx0Y29uc3QgcHJvcGVydHlJbmZvU2V0ID0gYVByb3BlcnR5SW5mb1NldFtpXTtcblx0XHRcdFx0XHRpZiAobG9jYWxEYXRhUHJvcGVydHkgPT09IHByb3BlcnR5SW5mb1NldC5uYW1lKSB7XG5cdFx0XHRcdFx0XHRpZiAocHJvcGVydHlJbmZvU2V0Py50eXBlQ29uZmlnPy5iYXNlVHlwZSA9PT0gXCJEYXRlVGltZVwiKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChtQ29uZGl0aW9uc1tzS2V5XSkge1xuXHRcdFx0XHRcdFx0XHRcdG1Db25kaXRpb25zW3NLZXldLmZvckVhY2goZnVuY3Rpb24gKGNvbmRpdGlvbikge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uLnZhbHVlc1swXSA9IFZpc3VhbEZpbHRlclV0aWxzLl9mb3JtYXREYXRlVGltZShjb25kaXRpb24udmFsdWVzWzBdKTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YVZhbHVlTGlzdFByb3BlcnR5SW5mb1NldC5wdXNoKHtcblx0XHRcdFx0XHRcdFx0bmFtZTogc0tleSxcblx0XHRcdFx0XHRcdFx0dHlwZUNvbmZpZzogcHJvcGVydHlJbmZvU2V0LnR5cGVDb25maWdcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdGFJblBhcmFtZXRlcnMuZm9yRWFjaChmdW5jdGlvbiAob0luUGFyYW1ldGVyOiB7IHZhbHVlTGlzdFByb3BlcnR5OiBzdHJpbmc7IGxvY2FsRGF0YVByb3BlcnR5OiBzdHJpbmcgfSwgaW5kZXg6IG51bWJlcikge1xuXHRcdFx0aWYgKGFBcmd1bWVudHNbaW5kZXhdLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Ly8gc3RvcmUgY29uZGl0aW9ucyB3aXRoIHZhbHVlIGxpc3QgcHJvcGVydHkgc2luY2Ugd2UgYXJlIGZpbHRlcmluZyBvbiB0aGUgdmFsdWUgbGlzdCBjb2xsZWN0aW9uIHBhdGhcblx0XHRcdFx0bUNvbmRpdGlvbnNbb0luUGFyYW1ldGVyLnZhbHVlTGlzdFByb3BlcnR5XSA9IGFBcmd1bWVudHNbaW5kZXhdO1xuXHRcdFx0XHRpZiAoIWFQYXJhbWV0ZXJzIHx8IChhUGFyYW1ldGVycyAmJiAhYVBhcmFtZXRlcnMuaW5jbHVkZXMob0luUGFyYW1ldGVyLnZhbHVlTGlzdFByb3BlcnR5KSkpIHtcblx0XHRcdFx0XHQvLyBhUHJvcGVydHlJbmZvU2V0IGlzIGxpc3Qgb2YgcHJvcGVydGllcyBmcm9tIHRoZSBmaWx0ZXIgYmFyIGJ1dCB3ZSBuZWVkIHRvIGNyZWF0ZSBjb25kaXRpb25zIGZvciB0aGUgdmFsdWUgbGlzdFxuXHRcdFx0XHRcdC8vIHdoaWNoIGNvdWxkIGhhdmUgYSBkaWZmZXJlbnQgY29sbGVjdGlvblBhdGguXG5cdFx0XHRcdFx0Ly8gT25seSB0eXBlQ29uZmlnIGZyb20gYVByb3BlcnR5SW5mb1NldCBpcyByZXF1aXJlZCBmb3IgZ2V0dGluZyB0aGUgY29udmVydGVkIGZpbHRlcnMgZnJvbSBjb25kaXRpb25zXG5cdFx0XHRcdFx0Ly8gc28gd2UgdXBkYXRlIGFQcm9wZXJ0eUluZm9TZXQgdG8gaGF2ZSB0aGUgdmFsdWVMaXN0UHJvcGVydGllcyBvbmx5XG5cdFx0XHRcdFx0Ly8gVGhpcyB3YXkgY29uZGl0aW9ucyB3aWxsIGJlIGNvbnZlcnRlZCB0byBzYXAudWkubW9kZWwuRmlsdGVyIGZvciB0aGUgdmFsdWUgbGlzdFxuXHRcdFx0XHRcdC8vIFRoaXMgd29ya3MgYmVjYXVzZSBmb3IgaW4gcGFyYW1ldGVyIG1hcHBpbmcgdGhlIHByb3BlcnR5IGZyb20gdGhlIG1haW4gZW50aXR5IHR5cGUgc2hvdWxkIGJlIG9mIHRoZSBzYW1lIHR5cGUgYXMgdGhlIHZhbHVlIGxpc3QgZW50aXR5IHR5cGVcblx0XHRcdFx0XHQvLyBUT0RPOiBGb2xsb3cgdXAgd2l0aCBNREMgdG8gY2hlY2sgaWYgdGhleSBjYW4gcHJvdmlkZSBhIGNsZWFuIGFwaSB0byBjb252ZXJ0IGNvbmRpdGlvbnMgaW50byBmaWx0ZXJzXG5cdFx0XHRcdFx0Zm9yIChjb25zdCBpIGluIGFQcm9wZXJ0eUluZm9TZXQpIHtcblx0XHRcdFx0XHRcdC8vIHN0b3JlIGNvbmRpdGlvbnMgd2l0aCB2YWx1ZSBsaXN0IHByb3BlcnR5IHNpbmNlIHdlIGFyZSBmaWx0ZXJpbmcgb24gdGhlIHZhbHVlIGxpc3QgY29sbGVjdGlvbiBwYXRoXG5cdFx0XHRcdFx0XHRjb25zdCBwcm9wZXJ0eUluZm9TZXQgPSBhUHJvcGVydHlJbmZvU2V0W2ldO1xuXHRcdFx0XHRcdFx0aWYgKHByb3BlcnR5SW5mb1NldC5uYW1lID09PSBvSW5QYXJhbWV0ZXIubG9jYWxEYXRhUHJvcGVydHkpIHtcblx0XHRcdFx0XHRcdFx0aWYgKHByb3BlcnR5SW5mb1NldD8udHlwZUNvbmZpZz8uYmFzZVR5cGUgPT09IFwiRGF0ZVRpbWVcIikge1xuXHRcdFx0XHRcdFx0XHRcdGlmIChtQ29uZGl0aW9uc1tvSW5QYXJhbWV0ZXIudmFsdWVMaXN0UHJvcGVydHldKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRtQ29uZGl0aW9uc1tvSW5QYXJhbWV0ZXIudmFsdWVMaXN0UHJvcGVydHldLmZvckVhY2goZnVuY3Rpb24gKGNvbmRpdGlvbikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb25kaXRpb24udmFsdWVzWzBdID0gVmlzdWFsRmlsdGVyVXRpbHMuX2Zvcm1hdERhdGVUaW1lKGNvbmRpdGlvbi52YWx1ZXNbMF0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGFWYWx1ZUxpc3RQcm9wZXJ0eUluZm9TZXQucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogb0luUGFyYW1ldGVyLnZhbHVlTGlzdFByb3BlcnR5LFxuXHRcdFx0XHRcdFx0XHRcdHR5cGVDb25maWc6IHByb3BlcnR5SW5mb1NldC50eXBlQ29uZmlnXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb0ludGVyYWN0aXZlQ2hhcnQuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRjb25zdCBzSW5mb1BhdGggPSBvSW50ZXJhY3RpdmVDaGFydC5kYXRhKFwiaW5mb1BhdGhcIik7XG5cdFx0bGV0IGJFbmFibGVCaW5kaW5nO1xuXHRcdGNvbnN0IG9SZXNvdXJjZUJ1bmRsZSA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpITtcblx0XHRjb25zdCBhUmVxdWlyZWRQcm9wZXJ0aWVzID0gQ29tbW9uSGVscGVyLnBhcnNlQ3VzdG9tRGF0YShvSW50ZXJhY3RpdmVDaGFydC5kYXRhKFwicmVxdWlyZWRQcm9wZXJ0aWVzXCIpKSBhcyBzdHJpbmdbXTtcblx0XHRpZiAoYVJlcXVpcmVkUHJvcGVydGllcy5sZW5ndGgpIHtcblx0XHRcdGNvbnN0IGFDb25kaXRpb25zID0gT2JqZWN0LmtleXMobUNvbmRpdGlvbnMpIHx8IFtdO1xuXHRcdFx0Y29uc3QgYU5vdE1hdGNoZWRDb25kaXRpb25zOiBzdHJpbmdbXSA9IFtdO1xuXHRcdFx0YVJlcXVpcmVkUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uIChyZXF1aXJlZFByb3BlcnR5UGF0aDogc3RyaW5nKSB7XG5cdFx0XHRcdGlmICghYUNvbmRpdGlvbnMuaW5jbHVkZXMocmVxdWlyZWRQcm9wZXJ0eVBhdGgpKSB7XG5cdFx0XHRcdFx0YU5vdE1hdGNoZWRDb25kaXRpb25zLnB1c2gocmVxdWlyZWRQcm9wZXJ0eVBhdGgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdGlmICghYU5vdE1hdGNoZWRDb25kaXRpb25zLmxlbmd0aCkge1xuXHRcdFx0XHRiRW5hYmxlQmluZGluZyA9IG9JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShgJHtzSW5mb1BhdGh9L3Nob3dFcnJvcmApO1xuXHRcdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoc0luZm9QYXRoLCB7XG5cdFx0XHRcdFx0ZXJyb3JNZXNzYWdlVGl0bGU6IFwiXCIsXG5cdFx0XHRcdFx0ZXJyb3JNZXNzYWdlOiBcIlwiLFxuXHRcdFx0XHRcdHNob3dFcnJvcjogZmFsc2Vcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2UgaWYgKGFOb3RNYXRjaGVkQ29uZGl0aW9ucy5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShzSW5mb1BhdGgsIHtcblx0XHRcdFx0XHRlcnJvck1lc3NhZ2VUaXRsZTogb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX1ZJU1VBTF9GSUxURVJTX0VSUk9SX01FU1NBR0VfVElUTEVcIiksXG5cdFx0XHRcdFx0ZXJyb3JNZXNzYWdlOiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fVklTVUFMX0ZJTFRFUlNfUFJPVklERV9GSUxURVJfVkFMX01VTFRJUExFVkZcIiksXG5cdFx0XHRcdFx0c2hvd0Vycm9yOiB0cnVlXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBzTGFiZWwgPVxuXHRcdFx0XHRcdG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAke3NFbnRpdHlTZXRQYXRofS8ke2FOb3RNYXRjaGVkQ29uZGl0aW9uc1swXX1AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkxhYmVsYCkgfHxcblx0XHRcdFx0XHRhTm90TWF0Y2hlZENvbmRpdGlvbnNbMF07XG5cdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShzSW5mb1BhdGgsIHtcblx0XHRcdFx0XHRlcnJvck1lc3NhZ2VUaXRsZTogb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX1ZJU1VBTF9GSUxURVJTX0VSUk9SX01FU1NBR0VfVElUTEVcIiksXG5cdFx0XHRcdFx0ZXJyb3JNZXNzYWdlOiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fVklTVUFMX0ZJTFRFUlNfUFJPVklERV9GSUxURVJfVkFMX1NJTkdMRVZGXCIsIFtzTGFiZWxdKSxcblx0XHRcdFx0XHRzaG93RXJyb3I6IHRydWVcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0YkVuYWJsZUJpbmRpbmcgPSBvSW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoYCR7c0luZm9QYXRofS9zaG93RXJyb3JgKTtcblx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShzSW5mb1BhdGgsIHsgZXJyb3JNZXNzYWdlVGl0bGU6IFwiXCIsIGVycm9yTWVzc2FnZTogXCJcIiwgc2hvd0Vycm9yOiBmYWxzZSB9KTtcblx0XHR9XG5cblx0XHRjb25zdCBzRmlsdGVyRW50aXR5TmFtZSA9IG9GaWx0ZXJCYXIuZGF0YShcImVudGl0eVR5cGVcIikuc3BsaXQoXCIvXCIpWzFdO1xuXHRcdGNvbnN0IHNDaGFydEVudGl0eU5hbWUgPSBzUGF0aC5zcGxpdChcIi9cIilbMV0uc3BsaXQoXCIoXCIpWzBdO1xuXHRcdGlmIChhUGFyYW1ldGVycyAmJiBhUGFyYW1ldGVycy5sZW5ndGggJiYgc0ZpbHRlckVudGl0eU5hbWUgPT09IHNDaGFydEVudGl0eU5hbWUpIHtcblx0XHRcdGNvbnN0IHNCaW5kaW5nUGF0aCA9IGJFbmFibGVCaW5kaW5nXG5cdFx0XHRcdD8gRmlsdGVyVXRpbHMuZ2V0QmluZGluZ1BhdGhGb3JQYXJhbWV0ZXJzKG9GaWx0ZXJCYXIsIG1Db25kaXRpb25zLCBhUHJvcGVydHlJbmZvU2V0LCBhUGFyYW1ldGVycylcblx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cblx0XHRcdGlmIChzQmluZGluZ1BhdGgpIHtcblx0XHRcdFx0KG9JbnRlcmFjdGl2ZUNoYXJ0TGlzdEJpbmRpbmcgYXMgeyBzUGF0aD86IHN0cmluZyB9KS5zUGF0aCA9IHNCaW5kaW5nUGF0aDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoYVBhcmFtZXRlcnMgJiYgYVBhcmFtZXRlcnMubGVuZ3RoKSB7XG5cdFx0XHQvL1JlbW92ZSBwYXJhbWV0ZXJzIGZyb20gbUNvbmRpdGlvbnMgc2luY2UgaXQgc2hvdWxkIG5vdCBiZSBhIHBhcnQgb2YgJGZpbHRlclxuXHRcdFx0YVBhcmFtZXRlcnMuZm9yRWFjaChmdW5jdGlvbiAocGFyYW1ldGVyOiBzdHJpbmcpIHtcblx0XHRcdFx0aWYgKG1Db25kaXRpb25zW3BhcmFtZXRlcl0pIHtcblx0XHRcdFx0XHRkZWxldGUgbUNvbmRpdGlvbnNbcGFyYW1ldGVyXTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0Ly8gT24gSW5pdGlhbExvYWQgd2hlbiBpbml0aWFsbGF5b3V0IGlzIHZpc3VhbCwgYVByb3BlcnR5SW5mb1NldCBpcyBhbHdheXMgZW1wdHkgYW5kIHdlIGNhbm5vdCBnZXQgZmlsdGVycyBmcm9tIE1EQ0ZpbHRlclV0aWwuXG5cdFx0Ly8gQWxzbyB3aGVuIFNWUXVhbGlmaWVyIGlzIHRoZXJlIHRoZW4gd2Ugc2hvdWxkIG5vdCBjaGFuZ2UgdGhlIGxpc3RiaW5kaW5nIGZpbHRlcnMgdG8gZW1wdHkgYXMgd2UgYXJlIG5vdCBnZXR0aW5nIGZpbHRlcnMgZnJvbSBNRENGaWx0ZXJVdGlsIGJ1dFxuXHRcdC8vIGluc3RlYWQgd2UgbmVlZCB0byBub3QgY2FsbCBsaXN0YmluZGluZy5maWx0ZXIgYW5kIHVzZSB0aGUgdGVtcGxhdGUgdGltZSBiaW5kaW5nIGl0c2VsZi5cblx0XHRpZiAoT2JqZWN0LmtleXMobUNvbmRpdGlvbnMpLmxlbmd0aCA+IDAgJiYgYVZhbHVlTGlzdFByb3BlcnR5SW5mb1NldC5sZW5ndGgpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdG9GaWx0ZXJzID0gKE1kY0ZpbHRlclV0aWwuZ2V0RmlsdGVySW5mbyhvRmlsdGVyQmFyLCBtQ29uZGl0aW9ucywgYVZhbHVlTGlzdFByb3BlcnR5SW5mb1NldCwgW10pIGFzIHsgZmlsdGVyczogRmlsdGVyIH0pXG5cdFx0XHRcdFx0LmZpbHRlcnM7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdExvZy5kZWJ1ZyhcIlZpc3VhbEZpbHRlcjogRXJyb3Igd2hpbGUgZ2V0dGluZyBmaWx0ZXJzIGZyb20gTURDRmlsdGVyVXRpbFwiKTtcblx0XHRcdH1cblx0XHRcdGlmIChvRmlsdGVycykge1xuXHRcdFx0XHRpZiAoIW9GaWx0ZXJzLmdldEZpbHRlcnMoKSkge1xuXHRcdFx0XHRcdGFGaWx0ZXJzLnB1c2gob0ZpbHRlcnMpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKG9GaWx0ZXJzLmdldEZpbHRlcnMoKSkge1xuXHRcdFx0XHRcdGFGaWx0ZXJzID0gb0ZpbHRlcnMuZ2V0RmlsdGVycygpITtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoYklzRHJhZnRTdXBwb3J0ZWQpIHtcblx0XHRcdGFGaWx0ZXJzLnB1c2gobmV3IEZpbHRlcihcIklzQWN0aXZlRW50aXR5XCIsIEZpbHRlck9wZXJhdG9yLkVRLCB0cnVlKSk7XG5cdFx0fVxuXHRcdGlmIChhRmlsdGVycyAmJiBhRmlsdGVycy5sZW5ndGggPiAwKSB7XG5cdFx0XHQob0ludGVyYWN0aXZlQ2hhcnRMaXN0QmluZGluZyBhcyBPRGF0YUxpc3RCaW5kaW5nKT8uZmlsdGVyKGFGaWx0ZXJzKTtcblx0XHR9IGVsc2UgaWYgKCFPYmplY3Qua2V5cyhtQ29uZGl0aW9ucykubGVuZ3RoKSB7XG5cdFx0XHQob0ludGVyYWN0aXZlQ2hhcnRMaXN0QmluZGluZyBhcyBPRGF0YUxpc3RCaW5kaW5nKT8uZmlsdGVyKCk7XG5cdFx0fVxuXHRcdC8vIHVwZGF0ZSB0aGUgaW50ZXJhY3RpdmUgY2hhcnQgYmluZGluZ1xuXHRcdGlmIChiRW5hYmxlQmluZGluZykge1xuXHRcdFx0Y29uc3QgdmlzdWFsRmlsdGVyQkIgPSBWaXN1YWxGaWx0ZXJSdW50aW1lLmdldFBhcmVudFZpc3VhbEZpbHRlckNvbnRyb2xCQihvSW50ZXJhY3RpdmVDaGFydCk7XG5cdFx0XHR2aXN1YWxGaWx0ZXJCQj8uX3NldEludGVybmFsVXBkYXRlUGVuZGluZyhmYWxzZSk7XG5cdFx0fVxuXHRcdHJldHVybiBhRmlsdGVycztcblx0fSxcblx0Z2V0RmlsdGVyQ291bnRzKHRoaXM6IENvbnRyb2wsIG9Db25kaXRpb25zOiBDb25kaXRpb25PYmplY3RbXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRoaXMuZGF0YShcIm11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZFwiKSA9PT0gZmFsc2UgJiYgb0NvbmRpdGlvbnMubGVuZ3RoID4gMCkge1xuXHRcdFx0cmV0dXJuIGAoMSlgO1xuXHRcdH1cblx0XHRpZiAob0NvbmRpdGlvbnMubGVuZ3RoID4gMCkge1xuXHRcdFx0cmV0dXJuIGAoJHtvQ29uZGl0aW9ucy5sZW5ndGh9KWA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9LFxuXG5cdHNjYWxlVmlzdWFsRmlsdGVyVmFsdWUoXG5cdFx0b1ZhbHVlOiBzdHJpbmcsXG5cdFx0c2NhbGVGYWN0b3I6IG51bWJlcixcblx0XHRudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHM6IG51bWJlcixcblx0XHRjdXJyZW5jeTogc3RyaW5nLFxuXHRcdG9SYXdWYWx1ZTogc3RyaW5nIHwgbnVtYmVyXG5cdCk6IHN0cmluZyB7XG5cdFx0Ly8gU2NhbGVGYWN0b3IgaWYgZGVmaW5lZCBpcyBwcmlvcml0eSBmb3IgZm9ybWF0dGluZ1xuXHRcdGlmIChzY2FsZUZhY3Rvcikge1xuXHRcdFx0cmV0dXJuIFZpc3VhbEZpbHRlclV0aWxzLmdldEZvcm1hdHRlZE51bWJlcihvUmF3VmFsdWUsIHNjYWxlRmFjdG9yLCBudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMpO1xuXHRcdFx0Ly8gSWYgU2NhbGUgRmFjdG9yIGlzIG5vdCBkZWZpbmVkLCB1c2UgY3VycmVuY3kgZm9ybWF0dGluZ1xuXHRcdH0gZWxzZSBpZiAoY3VycmVuY3kpIHtcblx0XHRcdHJldHVybiBWaXN1YWxGaWx0ZXJVdGlscy5nZXRGb3JtYXR0ZWROdW1iZXIob1Jhd1ZhbHVlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY3VycmVuY3kpO1xuXHRcdFx0Ly8gTm8gU2NhbGVGYWN0b3IgYW5kIG5vIEN1cnJlbmN5LCB1c2UgbnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzIGRlZmluZWQgaW4gRGF0YVBvaW50XG5cdFx0fSBlbHNlIGlmIChudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMgPiAwKSB7XG5cdFx0XHQvLyBOdW1iZXIgb2YgZnJhY3Rpb25hbCBkaWdpdHMgc2hhbGwgbm90IGV4Y2VlZCAyLCB1bmxlc3MgcmVxdWlyZWQgYnkgY3VycmVuY3lcblx0XHRcdG51bWJlck9mRnJhY3Rpb25hbERpZ2l0cyA9IG51bWJlck9mRnJhY3Rpb25hbERpZ2l0cyA+IDIgPyAyIDogbnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzO1xuXHRcdFx0cmV0dXJuIFZpc3VhbEZpbHRlclV0aWxzLmdldEZvcm1hdHRlZE51bWJlcihvUmF3VmFsdWUsIHVuZGVmaW5lZCwgbnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIG9WYWx1ZTtcblx0XHR9XG5cdH0sXG5cdGZpcmVWYWx1ZUhlbHAob0V2ZW50OiBVSTVFdmVudDx7fSwgQ29udHJvbD4pOiB2b2lkIHtcblx0XHRvRXZlbnQuZ2V0U291cmNlKCkuZ2V0UGFyZW50KCk/LmdldFBhcmVudCgpPy5nZXRQYXJlbnQoKT8uZ2V0UGFyZW50KCk/LmZpcmVFdmVudChcInZhbHVlSGVscFJlcXVlc3RcIik7XG5cdH1cbn07XG5cbk9iamVjdFBhdGguc2V0KFwic2FwLmZlLm1hY3Jvcy52aXN1YWxmaWx0ZXJzLlZpc3VhbEZpbHRlclJ1bnRpbWVcIiwgVmlzdWFsRmlsdGVyUnVudGltZSk7XG5cbmV4cG9ydCBkZWZhdWx0IFZpc3VhbEZpbHRlclJ1bnRpbWU7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0VBNkJBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsTUFBTUEsbUJBQW1CLEdBQUc7SUFDM0JDLGdCQUFnQkEsQ0FDZkMsTUFJOEMsRUFDdkM7TUFDUCxNQUFNQyxpQkFBMEIsR0FBSUQsTUFBTSxDQUFjRSxTQUFTLENBQUMsQ0FBQztNQUNuRSxNQUFNQyxhQUFhLEdBQUdGLGlCQUFpQixDQUFDRyxJQUFJLENBQUMsY0FBYyxDQUFDO01BQzVELE1BQU1DLGtCQUFrQixHQUFHSixpQkFBaUIsQ0FBQ0csSUFBSSxDQUFDLG1CQUFtQixDQUFDO01BQ3RFLE1BQU1FLFVBQVUsR0FBR0wsaUJBQWlC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
|
|
311
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWaXN1YWxGaWx0ZXJSdW50aW1lIiwic2VsZWN0aW9uQ2hhbmdlZCIsIm9FdmVudCIsIm9JbnRlcmFjdGl2ZUNoYXJ0IiwiZ2V0U291cmNlIiwic091dFBhcmFtZXRlciIsImRhdGEiLCJzVmFsdWVMaXN0UHJvcGVydHkiLCJzRGltZW5zaW9uIiwic0RpbWVuc2lvblRleHQiLCJiTXVsdGlwbGVTZWxlY3Rpb25BbGxvd2VkIiwic0RpbWVuc2lvblR5cGUiLCJvU2VsZWN0ZWRBZ2dyZWdhdGlvbiIsImdldFBhcmFtZXRlciIsImJJc0FnZ3JlZ2F0aW9uU2VsZWN0ZWQiLCJvQ29uZGl0aW9uTW9kZWwiLCJnZXRNb2RlbCIsImFDb25kaXRpb25zIiwiZ2V0UHJvcGVydHkiLCJMb2ciLCJlcnJvciIsInNTZWxlY3Rpb25DaGFuZ2VkVmFsdWUiLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldE9iamVjdCIsInNTZWxlY3Rpb25DaGFuZ2VkVmFsdWVUZXh0IiwiU3RyaW5nIiwidW5kZWZpbmVkIiwiVmlzdWFsRmlsdGVyVXRpbHMiLCJfcGFyc2VEYXRlVGltZSIsIm9Db25kaXRpb24iLCJDb25kaXRpb24iLCJjcmVhdGVJdGVtQ29uZGl0aW9uIiwicHVzaCIsImZpbHRlciIsIm9wZXJhdG9yIiwiRGF0ZSIsInBhcnNlIiwidmFsdWVzIiwic2V0UHJvcGVydHkiLCJnZXRBZ2dyZWdhdGlvblNlbGVjdGVkIiwiYVNlbGVjdGFibGVWYWx1ZXMiLCJpIiwibGVuZ3RoIiwiZ2V0UGFyZW50Iiwic0RpbWVuc2lvblZhbHVlIiwiaW5jbHVkZXMiLCJnZXRQYXJlbnRWaXN1YWxGaWx0ZXJDb250cm9sQkIiLCJwb3RlbnRpYWxWaXN1YWxGaWx0ZXIiLCJpc0EiLCJnZXRGaWx0ZXJzRnJvbUNvbmRpdGlvbnMiLCJfbGVuIiwiYXJndW1lbnRzIiwiYUFyZ3VtZW50cyIsIkFycmF5IiwiX2tleSIsIm9GaWx0ZXJCYXIiLCJhSW5QYXJhbWV0ZXJzIiwiY3VzdG9tRGF0YSIsImJJc0RyYWZ0U3VwcG9ydGVkIiwiYVByb3BlcnR5SW5mb1NldCIsIkZpbHRlclV0aWxzIiwiZ2V0RmlsdGVyUHJvcGVydHlJbmZvIiwibUNvbmRpdGlvbnMiLCJhVmFsdWVMaXN0UHJvcGVydHlJbmZvU2V0Iiwib0ZpbHRlcnMiLCJhRmlsdGVycyIsImFQYXJhbWV0ZXJzIiwib1NlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uIiwib0ludGVyYWN0aXZlQ2hhcnRMaXN0QmluZGluZyIsImdldEJpbmRpbmciLCJzUGF0aCIsImdldFBhdGgiLCJvTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwic0VudGl0eVNldFBhdGgiLCJmaWx0ZXJDb25kaXRpb25zIiwiZ2V0RmlsdGVyc0NvbmRpdGlvbnNGcm9tU2VsZWN0aW9uVmFyaWFudCIsImdldEN1c3RvbUNvbmRpdGlvbnMiLCJiaW5kIiwidHlwZUNvbmZpZyIsIlR5cGVNYXAiLCJnZXRUeXBlQ29uZmlnIiwiZGF0YVR5cGUiLCJvU2VsZWN0aW9uVmFyaWFudENvbmRpdGlvbnMiLCJjb252ZXJ0RmlsdGVyQ29uZGlvbnMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsInNLZXkiLCJpblBhcmFtZXRlckZvcktleSIsImZpbmQiLCJpblBhcmFtZXRlciIsInZhbHVlTGlzdFByb3BlcnR5IiwibG9jYWxEYXRhUHJvcGVydHkiLCJwcm9wZXJ0eUluZm9TZXQiLCJuYW1lIiwiYmFzZVR5cGUiLCJjb25kaXRpb24iLCJfZm9ybWF0RGF0ZVRpbWUiLCJvSW5QYXJhbWV0ZXIiLCJpbmRleCIsIm9JbnRlcm5hbE1vZGVsQ29udGV4dCIsInNJbmZvUGF0aCIsImJFbmFibGVCaW5kaW5nIiwib1Jlc291cmNlQnVuZGxlIiwiTGlicmFyeSIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiYVJlcXVpcmVkUHJvcGVydGllcyIsIkNvbW1vbkhlbHBlciIsInBhcnNlQ3VzdG9tRGF0YSIsImFOb3RNYXRjaGVkQ29uZGl0aW9ucyIsInJlcXVpcmVkUHJvcGVydHlQYXRoIiwiZXJyb3JNZXNzYWdlVGl0bGUiLCJlcnJvck1lc3NhZ2UiLCJzaG93RXJyb3IiLCJnZXRUZXh0Iiwic0xhYmVsIiwic0ZpbHRlckVudGl0eU5hbWUiLCJzcGxpdCIsInNDaGFydEVudGl0eU5hbWUiLCJzQmluZGluZ1BhdGgiLCJnZXRCaW5kaW5nUGF0aEZvclBhcmFtZXRlcnMiLCJwYXJhbWV0ZXIiLCJNZGNGaWx0ZXJVdGlsIiwiZ2V0RmlsdGVySW5mbyIsImZpbHRlcnMiLCJlIiwiZGVidWciLCJnZXRGaWx0ZXJzIiwiRmlsdGVyIiwiRmlsdGVyT3BlcmF0b3IiLCJFUSIsInZpc3VhbEZpbHRlckJCIiwiX3NldEludGVybmFsVXBkYXRlUGVuZGluZyIsImdldEZpbHRlckNvdW50cyIsIm9Db25kaXRpb25zIiwic2NhbGVWaXN1YWxGaWx0ZXJWYWx1ZSIsIm9WYWx1ZSIsInNjYWxlRmFjdG9yIiwibnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzIiwiY3VycmVuY3kiLCJvUmF3VmFsdWUiLCJnZXRGb3JtYXR0ZWROdW1iZXIiLCJmaXJlVmFsdWVIZWxwIiwiZmlyZUV2ZW50IiwiU2NvcGUiLCJfZm9ybWF0dGVycyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVmlzdWFsRmlsdGVyUnVudGltZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNlbGVjdGlvblZhcmlhbnRUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgU2NvcGUgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvU2NvcGVcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IENvbW1vbkhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9Db21tb25IZWxwZXJcIjtcbmltcG9ydCBWaXN1YWxGaWx0ZXJVdGlscyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9maWx0ZXJiYXIvdXRpbHMvVmlzdWFsRmlsdGVyVXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgSUZpbHRlckNvbnRyb2wgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyVXRpbHNcIjtcbmltcG9ydCBGaWx0ZXJVdGlscyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyVXRpbHNcIjtcbmltcG9ydCB7IGdldEZpbHRlcnNDb25kaXRpb25zRnJvbVNlbGVjdGlvblZhcmlhbnQgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVySGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5SW5mbyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL1Byb3BlcnR5SW5mb1wiO1xuaW1wb3J0IHR5cGUgVmlzdWFsRmlsdGVyQmxvY2sgZnJvbSBcInNhcC9mZS9tYWNyb3MvdmlzdWFsZmlsdGVycy9WaXN1YWxGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJhY3RpdmVCYXJDaGFydCRTZWxlY3Rpb25DaGFuZ2VkRXZlbnQgfSBmcm9tIFwic2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvSW50ZXJhY3RpdmVCYXJDaGFydFwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcmFjdGl2ZURvbnV0Q2hhcnQkU2VsZWN0aW9uQ2hhbmdlZEV2ZW50IH0gZnJvbSBcInNhcC9zdWl0ZS91aS9taWNyb2NoYXJ0L0ludGVyYWN0aXZlRG9udXRDaGFydFwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcmFjdGl2ZUxpbmVDaGFydCRTZWxlY3Rpb25DaGFuZ2VkRXZlbnQgfSBmcm9tIFwic2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvSW50ZXJhY3RpdmVMaW5lQ2hhcnRcIjtcbmltcG9ydCB0eXBlIFVJNUV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgeyBDb25kaXRpb25PYmplY3QgfSBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vQ29uZGl0aW9uXCI7XG5pbXBvcnQgQ29uZGl0aW9uIGZyb20gXCJzYXAvdWkvbWRjL2NvbmRpdGlvbi9Db25kaXRpb25cIjtcbmltcG9ydCBUeXBlTWFwIGZyb20gXCJzYXAvdWkvbWRjL29kYXRhL3Y0L1R5cGVNYXBcIjtcbmltcG9ydCBNZGNGaWx0ZXJVdGlsIGZyb20gXCJzYXAvdWkvbWRjL3V0aWwvRmlsdGVyVXRpbFwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlclwiO1xuaW1wb3J0IEZpbHRlck9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgTWV0YU1vZGVsVHlwZSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi90eXBlcy9tZXRhbW9kZWxfdHlwZXNcIjtcbi8qKlxuICogU3RhdGljIGNsYXNzIHVzZWQgYnkgVmlzdWFsIEZpbHRlciBkdXJpbmcgcnVudGltZVxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgVmlzdWFsRmlsdGVyUnVudGltZSA9IHtcblx0c2VsZWN0aW9uQ2hhbmdlZChcblx0XHRvRXZlbnQ6XG5cdFx0XHR8IFVJNUV2ZW50XG5cdFx0XHR8IEludGVyYWN0aXZlQmFyQ2hhcnQkU2VsZWN0aW9uQ2hhbmdlZEV2ZW50XG5cdFx0XHR8IEludGVyYWN0aXZlTGluZUNoYXJ0JFNlbGVjdGlvbkNoYW5nZWRFdmVudFxuXHRcdFx0fCBJbnRlcmFjdGl2ZURvbnV0Q2hhcnQkU2VsZWN0aW9uQ2hhbmdlZEV2ZW50XG5cdCk6IHZvaWQge1xuXHRcdGNvbnN0IG9JbnRlcmFjdGl2ZUNoYXJ0OiBDb250cm9sID0gKG9FdmVudCBhcyBVSTVFdmVudCkuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3Qgc091dFBhcmFtZXRlciA9IG9JbnRlcmFjdGl2ZUNoYXJ0LmRhdGEoXCJvdXRQYXJhbWV0ZXJcIik7XG5cdFx0Y29uc3Qgc1ZhbHVlTGlzdFByb3BlcnR5ID0gb0ludGVyYWN0aXZlQ2hhcnQuZGF0YShcInZhbHVlbGlzdFByb3BlcnR5XCIpO1xuXHRcdGNvbnN0IHNEaW1lbnNpb24gPSBvSW50ZXJhY3RpdmVDaGFydC5kYXRhKFwiZGltZW5zaW9uXCIpO1xuXHRcdGNvbnN0IHNEaW1lbnNpb25UZXh0ID0gb0ludGVyYWN0aXZlQ2hhcnQuZGF0YShcImRpbWVuc2lvblRleHRcIik7XG5cdFx0Y29uc3QgYk11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZCA9IG9JbnRlcmFjdGl2ZUNoYXJ0LmRhdGEoXCJtdWx0aXBsZVNlbGVjdGlvbkFsbG93ZWRcIik7XG5cdFx0Y29uc3Qgc0RpbWVuc2lvblR5cGUgPSBvSW50ZXJhY3RpdmVDaGFydC5kYXRhKFwiZGltZW5zaW9uVHlwZVwiKTtcblx0XHRjb25zdCBvU2VsZWN0ZWRBZ2dyZWdhdGlvbiA9XG5cdFx0XHQob0V2ZW50IGFzIEludGVyYWN0aXZlQmFyQ2hhcnQkU2VsZWN0aW9uQ2hhbmdlZEV2ZW50KS5nZXRQYXJhbWV0ZXIoXCJiYXJcIikgfHxcblx0XHRcdChvRXZlbnQgYXMgSW50ZXJhY3RpdmVMaW5lQ2hhcnQkU2VsZWN0aW9uQ2hhbmdlZEV2ZW50KS5nZXRQYXJhbWV0ZXIoXCJwb2ludFwiKSB8fFxuXHRcdFx0KG9FdmVudCBhcyBJbnRlcmFjdGl2ZURvbnV0Q2hhcnQkU2VsZWN0aW9uQ2hhbmdlZEV2ZW50KS5nZXRQYXJhbWV0ZXIoXCJzZWdtZW50XCIpO1xuXHRcdGNvbnN0IGJJc0FnZ3JlZ2F0aW9uU2VsZWN0ZWQgPSAob0V2ZW50IGFzIEludGVyYWN0aXZlQmFyQ2hhcnQkU2VsZWN0aW9uQ2hhbmdlZEV2ZW50KS5nZXRQYXJhbWV0ZXIoXCJzZWxlY3RlZFwiKTtcblx0XHRjb25zdCBvQ29uZGl0aW9uTW9kZWwgPSBvSW50ZXJhY3RpdmVDaGFydC5nZXRNb2RlbChcIiRmaWVsZFwiKSBhcyBKU09OTW9kZWw7XG5cdFx0bGV0IGFDb25kaXRpb25zID0gb0NvbmRpdGlvbk1vZGVsLmdldFByb3BlcnR5KFwiL2NvbmRpdGlvbnNcIik7XG5cblx0XHRpZiAoIXNPdXRQYXJhbWV0ZXIgfHwgc1ZhbHVlTGlzdFByb3BlcnR5ICE9PSBzRGltZW5zaW9uKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJWaXN1YWxGaWx0ZXI6IENhbm5vdCBzeW5jIHZhbHVlcyB3aXRoIHJlZ3VsYXIgZmlsdGVyIGFzIG91dCBwYXJhbWV0ZXIgaXMgbm90IGNvbmZpZ3VyZWQgcHJvcGVybHkhXCIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRsZXQgc1NlbGVjdGlvbkNoYW5nZWRWYWx1ZSA9IG9TZWxlY3RlZEFnZ3JlZ2F0aW9uPy5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRPYmplY3Qoc1ZhbHVlTGlzdFByb3BlcnR5KTtcblx0XHRcdGlmIChzU2VsZWN0aW9uQ2hhbmdlZFZhbHVlKSB7XG5cdFx0XHRcdGxldCBzU2VsZWN0aW9uQ2hhbmdlZFZhbHVlVGV4dCA9IG9TZWxlY3RlZEFnZ3JlZ2F0aW9uPy5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRPYmplY3Qoc0RpbWVuc2lvblRleHQpO1xuXHRcdFx0XHRpZiAodHlwZW9mIHNTZWxlY3Rpb25DaGFuZ2VkVmFsdWVUZXh0ICE9PSBcInN0cmluZ1wiICYmICEoc1NlbGVjdGlvbkNoYW5nZWRWYWx1ZVRleHQgaW5zdGFuY2VvZiBTdHJpbmcpKSB7XG5cdFx0XHRcdFx0c1NlbGVjdGlvbkNoYW5nZWRWYWx1ZVRleHQgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gaWYgc2VsZWN0aW9uIGhhcyBiZWVuIGRvbmUgb24gdGhlIGFnZ3JlZ2F0aW9uIHRoZW4gYWRkIHRvIGNvbmRpdGlvbnNcblx0XHRcdFx0aWYgKGJJc0FnZ3JlZ2F0aW9uU2VsZWN0ZWQpIHtcblx0XHRcdFx0XHRpZiAoYk11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZCA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHRcdGFDb25kaXRpb25zID0gW107XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChzRGltZW5zaW9uVHlwZSA9PT0gXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIikge1xuXHRcdFx0XHRcdFx0c1NlbGVjdGlvbkNoYW5nZWRWYWx1ZSA9IFZpc3VhbEZpbHRlclV0aWxzLl9wYXJzZURhdGVUaW1lKHNTZWxlY3Rpb25DaGFuZ2VkVmFsdWUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zdCBvQ29uZGl0aW9uID0gQ29uZGl0aW9uLmNyZWF0ZUl0ZW1Db25kaXRpb24oXG5cdFx0XHRcdFx0XHRzU2VsZWN0aW9uQ2hhbmdlZFZhbHVlLFxuXHRcdFx0XHRcdFx0c1NlbGVjdGlvbkNoYW5nZWRWYWx1ZVRleHQgfHwgdW5kZWZpbmVkLFxuXHRcdFx0XHRcdFx0e30sXG5cdFx0XHRcdFx0XHR7fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0YUNvbmRpdGlvbnMucHVzaChvQ29uZGl0aW9uKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBiZWNhdXNlIHNlbGVjdGlvbiB3YXMgcmVtb3ZlZCBvbiB0aGUgYWdncmVnYXRpb24gaGVuY2UgcmVtb3ZlIHRoaXMgZnJvbSBjb25kaXRpb25zXG5cdFx0XHRcdFx0YUNvbmRpdGlvbnMgPSBhQ29uZGl0aW9ucy5maWx0ZXIoZnVuY3Rpb24gKG9Db25kaXRpb246IENvbmRpdGlvbk9iamVjdCkge1xuXHRcdFx0XHRcdFx0aWYgKHNEaW1lbnNpb25UeXBlID09PSBcIkVkbS5EYXRlVGltZU9mZnNldFwiKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvQ29uZGl0aW9uLm9wZXJhdG9yICE9PSBcIkVRXCIgfHwgRGF0ZS5wYXJzZShvQ29uZGl0aW9uLnZhbHVlc1swXSkgIT09IERhdGUucGFyc2Uoc1NlbGVjdGlvbkNoYW5nZWRWYWx1ZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm4gb0NvbmRpdGlvbi5vcGVyYXRvciAhPT0gXCJFUVwiIHx8IG9Db25kaXRpb24udmFsdWVzWzBdICE9PSBzU2VsZWN0aW9uQ2hhbmdlZFZhbHVlO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG9Db25kaXRpb25Nb2RlbC5zZXRQcm9wZXJ0eShcIi9jb25kaXRpb25zXCIsIGFDb25kaXRpb25zKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIlZpc3VhbEZpbHRlcjogTm8gdmF1ZSBmb3VuZCBmb3IgdGhlIG91dFBhcmFtZXRlclwiKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdC8vIFRISVMgSVMgQSBGT1JNQVRURVJcblx0Z2V0QWdncmVnYXRpb25TZWxlY3RlZCh0aGlzOiBNYW5hZ2VkT2JqZWN0LCBhQ29uZGl0aW9uczogQ29uZGl0aW9uT2JqZWN0W10pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgYVNlbGVjdGFibGVWYWx1ZXMgPSBbXTtcblx0XHRpZiAoIXRoaXMuZ2V0QmluZGluZ0NvbnRleHQoKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8PSBhQ29uZGl0aW9ucy5sZW5ndGggLSAxOyBpKyspIHtcblx0XHRcdGNvbnN0IG9Db25kaXRpb24gPSBhQ29uZGl0aW9uc1tpXTtcblx0XHRcdC8vIDEuIGdldCBjb25kaXRpb25zIHdpdGggRVEgb3BlcmF0b3IgKHNpbmNlIHZpc3VhbCBmaWx0ZXIgY2FuIG9ubHkgZGVhbCB3aXRoIEVRIG9wZXJhdG9ycykgYW5kIGdldCB0aGVpciB2YWx1ZXNcblx0XHRcdGlmIChvQ29uZGl0aW9uLm9wZXJhdG9yID09PSBcIkVRXCIpIHtcblx0XHRcdFx0YVNlbGVjdGFibGVWYWx1ZXMucHVzaChvQ29uZGl0aW9uLnZhbHVlc1swXSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gYWNjZXNzIHRoZSBpbnRlcmFjdGl2ZSBjaGFydCBmcm9tIHRoZSBjb250cm9sLlxuXHRcdGNvbnN0IG9JbnRlcmFjdGl2ZUNoYXJ0ID0gdGhpcy5nZXRQYXJlbnQoKSBhcyBDb250cm9sO1xuXHRcdGNvbnN0IHNEaW1lbnNpb24gPSBvSW50ZXJhY3RpdmVDaGFydC5kYXRhKFwiZGltZW5zaW9uXCIpO1xuXHRcdGNvbnN0IHNEaW1lbnNpb25UeXBlID0gb0ludGVyYWN0aXZlQ2hhcnQuZGF0YShcImRpbWVuc2lvblR5cGVcIik7XG5cdFx0bGV0IHNEaW1lbnNpb25WYWx1ZSA9IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0T2JqZWN0KHNEaW1lbnNpb24pO1xuXHRcdGlmIChzRGltZW5zaW9uVHlwZSA9PT0gXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIikge1xuXHRcdFx0c0RpbWVuc2lvblZhbHVlID0gVmlzdWFsRmlsdGVyVXRpbHMuX3BhcnNlRGF0ZVRpbWUoc0RpbWVuc2lvblZhbHVlKSBhcyB1bmtub3duO1xuXHRcdH1cblx0XHRpZiAob0ludGVyYWN0aXZlQ2hhcnQuZGF0YShcIm11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZFwiKSA9PT0gZmFsc2UgJiYgYVNlbGVjdGFibGVWYWx1ZXMubGVuZ3RoID4gMSkge1xuXHRcdFx0YVNlbGVjdGFibGVWYWx1ZXMgPSBbYVNlbGVjdGFibGVWYWx1ZXNbMF1dO1xuXHRcdH1cblx0XHRyZXR1cm4gYVNlbGVjdGFibGVWYWx1ZXMuaW5jbHVkZXMoc0RpbWVuc2lvblZhbHVlKTtcblx0fSxcblxuXHQvKipcblx0ICogR2V0IFZpc3VhbCBGaWx0ZXIgY29udHJvbCBmb3IgdGhlIGdpdmVuIGNoaWxkIGNvbnRyb2wuXG5cdCAqIEBwYXJhbSBwb3RlbnRpYWxWaXN1YWxGaWx0ZXIgRXhwZWN0ZWQgaW5zdGFuY2Ugb2YgVmlzdWFsIEZpbHRlciBjaGlsZCBjb250cm9sLlxuXHQgKiBAcmV0dXJucyBUaGUgcGFyZW50IFZpc3VhbCBGaWx0ZXIgQnVpbGRpbmdibG9jayBjb250cm9sIGluc3RhbmNlIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cblx0ICovXG5cdGdldFBhcmVudFZpc3VhbEZpbHRlckNvbnRyb2xCQihwb3RlbnRpYWxWaXN1YWxGaWx0ZXI6IE1hbmFnZWRPYmplY3QgfCBudWxsKTogVmlzdWFsRmlsdGVyQmxvY2sgfCBudWxsIHtcblx0XHR3aGlsZSAocG90ZW50aWFsVmlzdWFsRmlsdGVyICYmICFwb3RlbnRpYWxWaXN1YWxGaWx0ZXIuaXNBPFZpc3VhbEZpbHRlckJsb2NrPihcInNhcC5mZS5tYWNyb3MudmlzdWFsZmlsdGVycy5WaXN1YWxGaWx0ZXJcIikpIHtcblx0XHRcdHBvdGVudGlhbFZpc3VhbEZpbHRlciA9IHBvdGVudGlhbFZpc3VhbEZpbHRlci5nZXRQYXJlbnQoKTtcblx0XHR9XG5cdFx0cmV0dXJuIHBvdGVudGlhbFZpc3VhbEZpbHRlcjtcblx0fSxcblxuXHQvLyBUSElTIElTIEEgRk9STUFUVEVSXG5cdGdldEZpbHRlcnNGcm9tQ29uZGl0aW9ucyh0aGlzOiBNYW5hZ2VkT2JqZWN0LCAuLi5hQXJndW1lbnRzOiBDb25kaXRpb25PYmplY3RbXVtdKTogRmlsdGVyW10gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG9JbnRlcmFjdGl2ZUNoYXJ0ID0gdGhpcy5nZXRQYXJlbnQoKSBhcyBDb250cm9sO1xuXHRcdGNvbnN0IG9GaWx0ZXJCYXIgPSBvSW50ZXJhY3RpdmVDaGFydC5nZXRQYXJlbnQoKT8uZ2V0UGFyZW50KCk/LmdldFBhcmVudCgpPy5nZXRQYXJlbnQoKT8uZ2V0UGFyZW50KCkgYXMgSUZpbHRlckNvbnRyb2w7XG5cdFx0Y29uc3QgYUluUGFyYW1ldGVycyA9IG9JbnRlcmFjdGl2ZUNoYXJ0LmRhdGEoXCJpblBhcmFtZXRlcnNcIikuY3VzdG9tRGF0YTtcblx0XHRjb25zdCBiSXNEcmFmdFN1cHBvcnRlZCA9IG9JbnRlcmFjdGl2ZUNoYXJ0LmRhdGEoXCJkcmFmdFN1cHBvcnRlZFwiKSA9PT0gdHJ1ZTtcblx0XHRjb25zdCBhUHJvcGVydHlJbmZvU2V0ID0gRmlsdGVyVXRpbHMuZ2V0RmlsdGVyUHJvcGVydHlJbmZvKG9GaWx0ZXJCYXIpIGFzIFByb3BlcnR5SW5mb1tdO1xuXHRcdGNvbnN0IG1Db25kaXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBDb25kaXRpb25PYmplY3RbXT4gPSB7fTtcblx0XHRjb25zdCBhVmFsdWVMaXN0UHJvcGVydHlJbmZvU2V0OiB1bmtub3duW10gPSBbXTtcblx0XHRsZXQgb0ZpbHRlcnM7XG5cdFx0bGV0IGFGaWx0ZXJzOiBGaWx0ZXJbXSA9IFtdO1xuXHRcdGNvbnN0IGFQYXJhbWV0ZXJzID0gb0ludGVyYWN0aXZlQ2hhcnQuZGF0YShcInBhcmFtZXRlcnNcIikgYXMgc3RyaW5nW107XG5cdFx0Y29uc3Qgb1NlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uID0gb0ludGVyYWN0aXZlQ2hhcnQuZGF0YShcInNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uXCIpIGFzXG5cdFx0XHR8IE1ldGFNb2RlbFR5cGU8U2VsZWN0aW9uVmFyaWFudFR5cGU+XG5cdFx0XHR8IFNlbGVjdGlvblZhcmlhbnRUeXBlO1xuXHRcdGNvbnN0IG9JbnRlcmFjdGl2ZUNoYXJ0TGlzdEJpbmRpbmcgPVxuXHRcdFx0b0ludGVyYWN0aXZlQ2hhcnQuZ2V0QmluZGluZyhcImJhcnNcIikgfHwgb0ludGVyYWN0aXZlQ2hhcnQuZ2V0QmluZGluZyhcInBvaW50c1wiKSB8fCBvSW50ZXJhY3RpdmVDaGFydC5nZXRCaW5kaW5nKFwic2VnbWVudHNcIik7XG5cdFx0Y29uc3Qgc1BhdGggPSBvSW50ZXJhY3RpdmVDaGFydExpc3RCaW5kaW5nIS5nZXRQYXRoKCk7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IChvSW50ZXJhY3RpdmVDaGFydC5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWwpLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IHNFbnRpdHlTZXRQYXRoID0gb0ludGVyYWN0aXZlQ2hhcnRMaXN0QmluZGluZyEuZ2V0UGF0aCgpO1xuXHRcdGNvbnN0IGZpbHRlckNvbmRpdGlvbnMgPSBnZXRGaWx0ZXJzQ29uZGl0aW9uc0Zyb21TZWxlY3Rpb25WYXJpYW50KFxuXHRcdFx0c0VudGl0eVNldFBhdGgsXG5cdFx0XHRvTWV0YU1vZGVsLFxuXHRcdFx0b1NlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uLFxuXHRcdFx0VmlzdWFsRmlsdGVyVXRpbHMuZ2V0Q3VzdG9tQ29uZGl0aW9ucy5iaW5kKFZpc3VhbEZpbHRlclV0aWxzKVxuXHRcdCk7XG5cdFx0Zm9yIChjb25zdCBpIGluIGFQcm9wZXJ0eUluZm9TZXQpIHtcblx0XHRcdGFQcm9wZXJ0eUluZm9TZXRbaV0udHlwZUNvbmZpZyA9IFR5cGVNYXAuZ2V0VHlwZUNvbmZpZyhhUHJvcGVydHlJbmZvU2V0W2ldLmRhdGFUeXBlLCB7fSwge30pO1xuXHRcdH1cblx0XHRjb25zdCBvU2VsZWN0aW9uVmFyaWFudENvbmRpdGlvbnMgPSBWaXN1YWxGaWx0ZXJVdGlscy5jb252ZXJ0RmlsdGVyQ29uZGlvbnMoZmlsdGVyQ29uZGl0aW9ucyk7XG5cdFx0Ly8gYUluUGFyYW1ldGVycyBhbmQgdGhlIGJpbmRpbmdzIHRvIGluIHBhcmFtZXRlcnMgYXJlIGluIHRoZSBzYW1lIG9yZGVyIHNvIHdlIGNhbiByZWx5IG9uIGl0IHRvIGNyZWF0ZSBvdXIgY29uZGl0aW9uc1xuXHRcdE9iamVjdC5rZXlzKG9TZWxlY3Rpb25WYXJpYW50Q29uZGl0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAoc0tleTogc3RyaW5nKSB7XG5cdFx0XHRtQ29uZGl0aW9uc1tzS2V5XSA9IG9TZWxlY3Rpb25WYXJpYW50Q29uZGl0aW9uc1tzS2V5XTtcblx0XHRcdC8vZmV0Y2ggbG9jYWxEYXRhUHJvcGVydHkgaWYgc2VsZWN0aW9uIHZhcmlhbnQga2V5IGlzIGJhc2VkIG9uIHZhdWUgbGlzdCBwcm9wZXJ0eVxuXHRcdFx0Y29uc3QgaW5QYXJhbWV0ZXJGb3JLZXkgPSBhSW5QYXJhbWV0ZXJzLmZpbmQoZnVuY3Rpb24gKGluUGFyYW1ldGVyOiB7IHZhbHVlTGlzdFByb3BlcnR5OiBzdHJpbmcgfSkge1xuXHRcdFx0XHRyZXR1cm4gaW5QYXJhbWV0ZXIudmFsdWVMaXN0UHJvcGVydHkgPT09IHNLZXk7XG5cdFx0XHR9KTtcblx0XHRcdGNvbnN0IGxvY2FsRGF0YVByb3BlcnR5ID0gaW5QYXJhbWV0ZXJGb3JLZXkgPyBpblBhcmFtZXRlckZvcktleS5sb2NhbERhdGFQcm9wZXJ0eSA6IHNLZXk7XG5cdFx0XHRpZiAoIWFQYXJhbWV0ZXJzIHx8IChhUGFyYW1ldGVycyAmJiAhYVBhcmFtZXRlcnMuaW5jbHVkZXMoc0tleSkpKSB7XG5cdFx0XHRcdGZvciAoY29uc3QgaSBpbiBhUHJvcGVydHlJbmZvU2V0KSB7XG5cdFx0XHRcdFx0Y29uc3QgcHJvcGVydHlJbmZvU2V0ID0gYVByb3BlcnR5SW5mb1NldFtpXTtcblx0XHRcdFx0XHRpZiAobG9jYWxEYXRhUHJvcGVydHkgPT09IHByb3BlcnR5SW5mb1NldC5uYW1lKSB7XG5cdFx0XHRcdFx0XHRpZiAocHJvcGVydHlJbmZvU2V0Py50eXBlQ29uZmlnPy5iYXNlVHlwZSA9PT0gXCJEYXRlVGltZVwiKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChtQ29uZGl0aW9uc1tzS2V5XSkge1xuXHRcdFx0XHRcdFx0XHRcdG1Db25kaXRpb25zW3NLZXldLmZvckVhY2goZnVuY3Rpb24gKGNvbmRpdGlvbikge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uLnZhbHVlc1swXSA9IFZpc3VhbEZpbHRlclV0aWxzLl9mb3JtYXREYXRlVGltZShjb25kaXRpb24udmFsdWVzWzBdKTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YVZhbHVlTGlzdFByb3BlcnR5SW5mb1NldC5wdXNoKHtcblx0XHRcdFx0XHRcdFx0bmFtZTogc0tleSxcblx0XHRcdFx0XHRcdFx0dHlwZUNvbmZpZzogcHJvcGVydHlJbmZvU2V0LnR5cGVDb25maWdcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdGFJblBhcmFtZXRlcnMuZm9yRWFjaChmdW5jdGlvbiAob0luUGFyYW1ldGVyOiB7IHZhbHVlTGlzdFByb3BlcnR5OiBzdHJpbmc7IGxvY2FsRGF0YVByb3BlcnR5OiBzdHJpbmcgfSwgaW5kZXg6IG51bWJlcikge1xuXHRcdFx0aWYgKGFBcmd1bWVudHNbaW5kZXhdLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Ly8gc3RvcmUgY29uZGl0aW9ucyB3aXRoIHZhbHVlIGxpc3QgcHJvcGVydHkgc2luY2Ugd2UgYXJlIGZpbHRlcmluZyBvbiB0aGUgdmFsdWUgbGlzdCBjb2xsZWN0aW9uIHBhdGhcblx0XHRcdFx0bUNvbmRpdGlvbnNbb0luUGFyYW1ldGVyLnZhbHVlTGlzdFByb3BlcnR5XSA9IGFBcmd1bWVudHNbaW5kZXhdO1xuXHRcdFx0XHRpZiAoIWFQYXJhbWV0ZXJzIHx8IChhUGFyYW1ldGVycyAmJiAhYVBhcmFtZXRlcnMuaW5jbHVkZXMob0luUGFyYW1ldGVyLnZhbHVlTGlzdFByb3BlcnR5KSkpIHtcblx0XHRcdFx0XHQvLyBhUHJvcGVydHlJbmZvU2V0IGlzIGxpc3Qgb2YgcHJvcGVydGllcyBmcm9tIHRoZSBmaWx0ZXIgYmFyIGJ1dCB3ZSBuZWVkIHRvIGNyZWF0ZSBjb25kaXRpb25zIGZvciB0aGUgdmFsdWUgbGlzdFxuXHRcdFx0XHRcdC8vIHdoaWNoIGNvdWxkIGhhdmUgYSBkaWZmZXJlbnQgY29sbGVjdGlvblBhdGguXG5cdFx0XHRcdFx0Ly8gT25seSB0eXBlQ29uZmlnIGZyb20gYVByb3BlcnR5SW5mb1NldCBpcyByZXF1aXJlZCBmb3IgZ2V0dGluZyB0aGUgY29udmVydGVkIGZpbHRlcnMgZnJvbSBjb25kaXRpb25zXG5cdFx0XHRcdFx0Ly8gc28gd2UgdXBkYXRlIGFQcm9wZXJ0eUluZm9TZXQgdG8gaGF2ZSB0aGUgdmFsdWVMaXN0UHJvcGVydGllcyBvbmx5XG5cdFx0XHRcdFx0Ly8gVGhpcyB3YXkgY29uZGl0aW9ucyB3aWxsIGJlIGNvbnZlcnRlZCB0byBzYXAudWkubW9kZWwuRmlsdGVyIGZvciB0aGUgdmFsdWUgbGlzdFxuXHRcdFx0XHRcdC8vIFRoaXMgd29ya3MgYmVjYXVzZSBmb3IgaW4gcGFyYW1ldGVyIG1hcHBpbmcgdGhlIHByb3BlcnR5IGZyb20gdGhlIG1haW4gZW50aXR5IHR5cGUgc2hvdWxkIGJlIG9mIHRoZSBzYW1lIHR5cGUgYXMgdGhlIHZhbHVlIGxpc3QgZW50aXR5IHR5cGVcblx0XHRcdFx0XHQvLyBUT0RPOiBGb2xsb3cgdXAgd2l0aCBNREMgdG8gY2hlY2sgaWYgdGhleSBjYW4gcHJvdmlkZSBhIGNsZWFuIGFwaSB0byBjb252ZXJ0IGNvbmRpdGlvbnMgaW50byBmaWx0ZXJzXG5cdFx0XHRcdFx0Zm9yIChjb25zdCBpIGluIGFQcm9wZXJ0eUluZm9TZXQpIHtcblx0XHRcdFx0XHRcdC8vIHN0b3JlIGNvbmRpdGlvbnMgd2l0aCB2YWx1ZSBsaXN0IHByb3BlcnR5IHNpbmNlIHdlIGFyZSBmaWx0ZXJpbmcgb24gdGhlIHZhbHVlIGxpc3QgY29sbGVjdGlvbiBwYXRoXG5cdFx0XHRcdFx0XHRjb25zdCBwcm9wZXJ0eUluZm9TZXQgPSBhUHJvcGVydHlJbmZvU2V0W2ldO1xuXHRcdFx0XHRcdFx0aWYgKHByb3BlcnR5SW5mb1NldC5uYW1lID09PSBvSW5QYXJhbWV0ZXIubG9jYWxEYXRhUHJvcGVydHkpIHtcblx0XHRcdFx0XHRcdFx0aWYgKHByb3BlcnR5SW5mb1NldD8udHlwZUNvbmZpZz8uYmFzZVR5cGUgPT09IFwiRGF0ZVRpbWVcIikge1xuXHRcdFx0XHRcdFx0XHRcdGlmIChtQ29uZGl0aW9uc1tvSW5QYXJhbWV0ZXIudmFsdWVMaXN0UHJvcGVydHldKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRtQ29uZGl0aW9uc1tvSW5QYXJhbWV0ZXIudmFsdWVMaXN0UHJvcGVydHldLmZvckVhY2goZnVuY3Rpb24gKGNvbmRpdGlvbikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb25kaXRpb24udmFsdWVzWzBdID0gVmlzdWFsRmlsdGVyVXRpbHMuX2Zvcm1hdERhdGVUaW1lKGNvbmRpdGlvbi52YWx1ZXNbMF0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGFWYWx1ZUxpc3RQcm9wZXJ0eUluZm9TZXQucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogb0luUGFyYW1ldGVyLnZhbHVlTGlzdFByb3BlcnR5LFxuXHRcdFx0XHRcdFx0XHRcdHR5cGVDb25maWc6IHByb3BlcnR5SW5mb1NldC50eXBlQ29uZmlnXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb0ludGVyYWN0aXZlQ2hhcnQuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRjb25zdCBzSW5mb1BhdGggPSBvSW50ZXJhY3RpdmVDaGFydC5kYXRhKFwiaW5mb1BhdGhcIik7XG5cdFx0bGV0IGJFbmFibGVCaW5kaW5nO1xuXHRcdGNvbnN0IG9SZXNvdXJjZUJ1bmRsZSA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpITtcblx0XHRjb25zdCBhUmVxdWlyZWRQcm9wZXJ0aWVzID0gQ29tbW9uSGVscGVyLnBhcnNlQ3VzdG9tRGF0YShvSW50ZXJhY3RpdmVDaGFydC5kYXRhKFwicmVxdWlyZWRQcm9wZXJ0aWVzXCIpKSBhcyBzdHJpbmdbXTtcblx0XHRpZiAoYVJlcXVpcmVkUHJvcGVydGllcy5sZW5ndGgpIHtcblx0XHRcdGNvbnN0IGFDb25kaXRpb25zID0gT2JqZWN0LmtleXMobUNvbmRpdGlvbnMpIHx8IFtdO1xuXHRcdFx0Y29uc3QgYU5vdE1hdGNoZWRDb25kaXRpb25zOiBzdHJpbmdbXSA9IFtdO1xuXHRcdFx0YVJlcXVpcmVkUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uIChyZXF1aXJlZFByb3BlcnR5UGF0aDogc3RyaW5nKSB7XG5cdFx0XHRcdGlmICghYUNvbmRpdGlvbnMuaW5jbHVkZXMocmVxdWlyZWRQcm9wZXJ0eVBhdGgpKSB7XG5cdFx0XHRcdFx0YU5vdE1hdGNoZWRDb25kaXRpb25zLnB1c2gocmVxdWlyZWRQcm9wZXJ0eVBhdGgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdGlmICghYU5vdE1hdGNoZWRDb25kaXRpb25zLmxlbmd0aCkge1xuXHRcdFx0XHRiRW5hYmxlQmluZGluZyA9IG9JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShgJHtzSW5mb1BhdGh9L3Nob3dFcnJvcmApO1xuXHRcdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoc0luZm9QYXRoLCB7XG5cdFx0XHRcdFx0ZXJyb3JNZXNzYWdlVGl0bGU6IFwiXCIsXG5cdFx0XHRcdFx0ZXJyb3JNZXNzYWdlOiBcIlwiLFxuXHRcdFx0XHRcdHNob3dFcnJvcjogZmFsc2Vcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2UgaWYgKGFOb3RNYXRjaGVkQ29uZGl0aW9ucy5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShzSW5mb1BhdGgsIHtcblx0XHRcdFx0XHRlcnJvck1lc3NhZ2VUaXRsZTogb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX1ZJU1VBTF9GSUxURVJTX0VSUk9SX01FU1NBR0VfVElUTEVcIiksXG5cdFx0XHRcdFx0ZXJyb3JNZXNzYWdlOiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fVklTVUFMX0ZJTFRFUlNfUFJPVklERV9GSUxURVJfVkFMX01VTFRJUExFVkZcIiksXG5cdFx0XHRcdFx0c2hvd0Vycm9yOiB0cnVlXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBzTGFiZWwgPVxuXHRcdFx0XHRcdG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAke3NFbnRpdHlTZXRQYXRofS8ke2FOb3RNYXRjaGVkQ29uZGl0aW9uc1swXX1AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkxhYmVsYCkgfHxcblx0XHRcdFx0XHRhTm90TWF0Y2hlZENvbmRpdGlvbnNbMF07XG5cdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShzSW5mb1BhdGgsIHtcblx0XHRcdFx0XHRlcnJvck1lc3NhZ2VUaXRsZTogb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX1ZJU1VBTF9GSUxURVJTX0VSUk9SX01FU1NBR0VfVElUTEVcIiksXG5cdFx0XHRcdFx0ZXJyb3JNZXNzYWdlOiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fVklTVUFMX0ZJTFRFUlNfUFJPVklERV9GSUxURVJfVkFMX1NJTkdMRVZGXCIsIFtzTGFiZWxdKSxcblx0XHRcdFx0XHRzaG93RXJyb3I6IHRydWVcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0YkVuYWJsZUJpbmRpbmcgPSBvSW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoYCR7c0luZm9QYXRofS9zaG93RXJyb3JgKTtcblx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShzSW5mb1BhdGgsIHsgZXJyb3JNZXNzYWdlVGl0bGU6IFwiXCIsIGVycm9yTWVzc2FnZTogXCJcIiwgc2hvd0Vycm9yOiBmYWxzZSB9KTtcblx0XHR9XG5cblx0XHRjb25zdCBzRmlsdGVyRW50aXR5TmFtZSA9IG9GaWx0ZXJCYXIuZGF0YShcImVudGl0eVR5cGVcIikuc3BsaXQoXCIvXCIpWzFdO1xuXHRcdGNvbnN0IHNDaGFydEVudGl0eU5hbWUgPSBzUGF0aC5zcGxpdChcIi9cIilbMV0uc3BsaXQoXCIoXCIpWzBdO1xuXHRcdGlmIChhUGFyYW1ldGVycyAmJiBhUGFyYW1ldGVycy5sZW5ndGggJiYgc0ZpbHRlckVudGl0eU5hbWUgPT09IHNDaGFydEVudGl0eU5hbWUpIHtcblx0XHRcdGNvbnN0IHNCaW5kaW5nUGF0aCA9IGJFbmFibGVCaW5kaW5nXG5cdFx0XHRcdD8gRmlsdGVyVXRpbHMuZ2V0QmluZGluZ1BhdGhGb3JQYXJhbWV0ZXJzKG9GaWx0ZXJCYXIsIG1Db25kaXRpb25zLCBhUHJvcGVydHlJbmZvU2V0LCBhUGFyYW1ldGVycylcblx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cblx0XHRcdGlmIChzQmluZGluZ1BhdGgpIHtcblx0XHRcdFx0KG9JbnRlcmFjdGl2ZUNoYXJ0TGlzdEJpbmRpbmcgYXMgeyBzUGF0aD86IHN0cmluZyB9KS5zUGF0aCA9IHNCaW5kaW5nUGF0aDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoYVBhcmFtZXRlcnMgJiYgYVBhcmFtZXRlcnMubGVuZ3RoKSB7XG5cdFx0XHQvL1JlbW92ZSBwYXJhbWV0ZXJzIGZyb20gbUNvbmRpdGlvbnMgc2luY2UgaXQgc2hvdWxkIG5vdCBiZSBhIHBhcnQgb2YgJGZpbHRlclxuXHRcdFx0YVBhcmFtZXRlcnMuZm9yRWFjaChmdW5jdGlvbiAocGFyYW1ldGVyOiBzdHJpbmcpIHtcblx0XHRcdFx0aWYgKG1Db25kaXRpb25zW3BhcmFtZXRlcl0pIHtcblx0XHRcdFx0XHRkZWxldGUgbUNvbmRpdGlvbnNbcGFyYW1ldGVyXTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0Ly8gT24gSW5pdGlhbExvYWQgd2hlbiBpbml0aWFsbGF5b3V0IGlzIHZpc3VhbCwgYVByb3BlcnR5SW5mb1NldCBpcyBhbHdheXMgZW1wdHkgYW5kIHdlIGNhbm5vdCBnZXQgZmlsdGVycyBmcm9tIE1EQ0ZpbHRlclV0aWwuXG5cdFx0Ly8gQWxzbyB3aGVuIFNWUXVhbGlmaWVyIGlzIHRoZXJlIHRoZW4gd2Ugc2hvdWxkIG5vdCBjaGFuZ2UgdGhlIGxpc3RiaW5kaW5nIGZpbHRlcnMgdG8gZW1wdHkgYXMgd2UgYXJlIG5vdCBnZXR0aW5nIGZpbHRlcnMgZnJvbSBNRENGaWx0ZXJVdGlsIGJ1dFxuXHRcdC8vIGluc3RlYWQgd2UgbmVlZCB0byBub3QgY2FsbCBsaXN0YmluZGluZy5maWx0ZXIgYW5kIHVzZSB0aGUgdGVtcGxhdGUgdGltZSBiaW5kaW5nIGl0c2VsZi5cblx0XHRpZiAoT2JqZWN0LmtleXMobUNvbmRpdGlvbnMpLmxlbmd0aCA+IDAgJiYgYVZhbHVlTGlzdFByb3BlcnR5SW5mb1NldC5sZW5ndGgpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdG9GaWx0ZXJzID0gKE1kY0ZpbHRlclV0aWwuZ2V0RmlsdGVySW5mbyhvRmlsdGVyQmFyLCBtQ29uZGl0aW9ucywgYVZhbHVlTGlzdFByb3BlcnR5SW5mb1NldCwgW10pIGFzIHsgZmlsdGVyczogRmlsdGVyIH0pXG5cdFx0XHRcdFx0LmZpbHRlcnM7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdExvZy5kZWJ1ZyhcIlZpc3VhbEZpbHRlcjogRXJyb3Igd2hpbGUgZ2V0dGluZyBmaWx0ZXJzIGZyb20gTURDRmlsdGVyVXRpbFwiKTtcblx0XHRcdH1cblx0XHRcdGlmIChvRmlsdGVycykge1xuXHRcdFx0XHRpZiAoIW9GaWx0ZXJzLmdldEZpbHRlcnMoKSkge1xuXHRcdFx0XHRcdGFGaWx0ZXJzLnB1c2gob0ZpbHRlcnMpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKG9GaWx0ZXJzLmdldEZpbHRlcnMoKSkge1xuXHRcdFx0XHRcdGFGaWx0ZXJzID0gb0ZpbHRlcnMuZ2V0RmlsdGVycygpITtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoYklzRHJhZnRTdXBwb3J0ZWQpIHtcblx0XHRcdGFGaWx0ZXJzLnB1c2gobmV3IEZpbHRlcihcIklzQWN0aXZlRW50aXR5XCIsIEZpbHRlck9wZXJhdG9yLkVRLCB0cnVlKSk7XG5cdFx0fVxuXHRcdGlmIChhRmlsdGVycyAmJiBhRmlsdGVycy5sZW5ndGggPiAwKSB7XG5cdFx0XHQob0ludGVyYWN0aXZlQ2hhcnRMaXN0QmluZGluZyBhcyBPRGF0YUxpc3RCaW5kaW5nKT8uZmlsdGVyKGFGaWx0ZXJzKTtcblx0XHR9IGVsc2UgaWYgKCFPYmplY3Qua2V5cyhtQ29uZGl0aW9ucykubGVuZ3RoKSB7XG5cdFx0XHQob0ludGVyYWN0aXZlQ2hhcnRMaXN0QmluZGluZyBhcyBPRGF0YUxpc3RCaW5kaW5nKT8uZmlsdGVyKCk7XG5cdFx0fVxuXHRcdC8vIHVwZGF0ZSB0aGUgaW50ZXJhY3RpdmUgY2hhcnQgYmluZGluZ1xuXHRcdGlmIChiRW5hYmxlQmluZGluZykge1xuXHRcdFx0Y29uc3QgdmlzdWFsRmlsdGVyQkIgPSBWaXN1YWxGaWx0ZXJSdW50aW1lLmdldFBhcmVudFZpc3VhbEZpbHRlckNvbnRyb2xCQihvSW50ZXJhY3RpdmVDaGFydCk7XG5cdFx0XHR2aXN1YWxGaWx0ZXJCQj8uX3NldEludGVybmFsVXBkYXRlUGVuZGluZyhmYWxzZSk7XG5cdFx0fVxuXHRcdHJldHVybiBhRmlsdGVycztcblx0fSxcblx0Z2V0RmlsdGVyQ291bnRzKHRoaXM6IENvbnRyb2wsIG9Db25kaXRpb25zOiBDb25kaXRpb25PYmplY3RbXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRoaXMuZGF0YShcIm11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZFwiKSA9PT0gZmFsc2UgJiYgb0NvbmRpdGlvbnMubGVuZ3RoID4gMCkge1xuXHRcdFx0cmV0dXJuIGAoMSlgO1xuXHRcdH1cblx0XHRpZiAob0NvbmRpdGlvbnMubGVuZ3RoID4gMCkge1xuXHRcdFx0cmV0dXJuIGAoJHtvQ29uZGl0aW9ucy5sZW5ndGh9KWA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9LFxuXG5cdHNjYWxlVmlzdWFsRmlsdGVyVmFsdWUoXG5cdFx0b1ZhbHVlOiBzdHJpbmcsXG5cdFx0c2NhbGVGYWN0b3I6IG51bWJlcixcblx0XHRudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHM6IG51bWJlcixcblx0XHRjdXJyZW5jeTogc3RyaW5nLFxuXHRcdG9SYXdWYWx1ZTogc3RyaW5nIHwgbnVtYmVyXG5cdCk6IHN0cmluZyB7XG5cdFx0Ly8gU2NhbGVGYWN0b3IgaWYgZGVmaW5lZCBpcyBwcmlvcml0eSBmb3IgZm9ybWF0dGluZ1xuXHRcdGlmIChzY2FsZUZhY3Rvcikge1xuXHRcdFx0cmV0dXJuIFZpc3VhbEZpbHRlclV0aWxzLmdldEZvcm1hdHRlZE51bWJlcihvUmF3VmFsdWUsIHNjYWxlRmFjdG9yLCBudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMpO1xuXHRcdFx0Ly8gSWYgU2NhbGUgRmFjdG9yIGlzIG5vdCBkZWZpbmVkLCB1c2UgY3VycmVuY3kgZm9ybWF0dGluZ1xuXHRcdH0gZWxzZSBpZiAoY3VycmVuY3kpIHtcblx0XHRcdHJldHVybiBWaXN1YWxGaWx0ZXJVdGlscy5nZXRGb3JtYXR0ZWROdW1iZXIob1Jhd1ZhbHVlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY3VycmVuY3kpO1xuXHRcdFx0Ly8gTm8gU2NhbGVGYWN0b3IgYW5kIG5vIEN1cnJlbmN5LCB1c2UgbnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzIGRlZmluZWQgaW4gRGF0YVBvaW50XG5cdFx0fSBlbHNlIGlmIChudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMgPiAwKSB7XG5cdFx0XHQvLyBOdW1iZXIgb2YgZnJhY3Rpb25hbCBkaWdpdHMgc2hhbGwgbm90IGV4Y2VlZCAyLCB1bmxlc3MgcmVxdWlyZWQgYnkgY3VycmVuY3lcblx0XHRcdG51bWJlck9mRnJhY3Rpb25hbERpZ2l0cyA9IG51bWJlck9mRnJhY3Rpb25hbERpZ2l0cyA+IDIgPyAyIDogbnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzO1xuXHRcdFx0cmV0dXJuIFZpc3VhbEZpbHRlclV0aWxzLmdldEZvcm1hdHRlZE51bWJlcihvUmF3VmFsdWUsIHVuZGVmaW5lZCwgbnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIG9WYWx1ZTtcblx0XHR9XG5cdH0sXG5cdGZpcmVWYWx1ZUhlbHAob0V2ZW50OiBVSTVFdmVudDx7fSwgQ29udHJvbD4pOiB2b2lkIHtcblx0XHRvRXZlbnQuZ2V0U291cmNlKCkuZ2V0UGFyZW50KCk/LmdldFBhcmVudCgpPy5nZXRQYXJlbnQoKT8uZ2V0UGFyZW50KCk/LmZpcmVFdmVudChcInZhbHVlSGVscFJlcXVlc3RcIik7XG5cdH1cbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1pZ25vcmVcblNjb3BlLl9mb3JtYXR0ZXJzLlZpc3VhbEZpbHRlclJ1bnRpbWUgPSBWaXN1YWxGaWx0ZXJSdW50aW1lO1xuXG5leHBvcnQgZGVmYXVsdCBWaXN1YWxGaWx0ZXJSdW50aW1lO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztFQTRCQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLE1BQU1BLG1CQUFtQixHQUFHO0lBQzNCQyxnQkFBZ0JBLENBQ2ZDLE1BSThDLEVBQ3ZDO01BQ1AsTUFBTUMsaUJBQTBCLEdBQUlELE1BQU0sQ0FBY0UsU0FBUyxDQUFDLENBQUM7TUFDbkUsTUFBTUMsYUFBYSxHQUFHRixpQkFBaUIsQ0FBQ0csSUFBSSxDQUFDLGNBQWMsQ0FBQztNQUM1RCxNQUFNQyxrQkFBa0IsR0FBR0osaUJBQWlCLENBQUNHLElB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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { SelectionVariantType } from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
2
2
|
import Log from "sap/base/Log";
|
|
3
|
-
import
|
|
3
|
+
import Scope from "sap/fe/core/formatters/Scope";
|
|
4
4
|
import type { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
|
|
5
5
|
import CommonHelper from "sap/fe/macros/CommonHelper";
|
|
6
6
|
import VisualFilterUtils from "sap/fe/macros/controls/filterbar/utils/VisualFilterUtils";
|
|
@@ -26,7 +26,6 @@ import type JSONModel from "sap/ui/model/json/JSONModel";
|
|
|
26
26
|
import type ODataListBinding from "sap/ui/model/odata/v4/ODataListBinding";
|
|
27
27
|
import type ODataModel from "sap/ui/model/odata/v4/ODataModel";
|
|
28
28
|
import type { MetaModelType } from "../../../../../../../types/metamodel_types";
|
|
29
|
-
|
|
30
29
|
/**
|
|
31
30
|
* Static class used by Visual Filter during runtime
|
|
32
31
|
* @private
|
|
@@ -358,6 +357,8 @@ const VisualFilterRuntime = {
|
|
|
358
357
|
}
|
|
359
358
|
};
|
|
360
359
|
|
|
361
|
-
|
|
360
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
361
|
+
// @ts-ignore
|
|
362
|
+
Scope._formatters.VisualFilterRuntime = VisualFilterRuntime;
|
|
362
363
|
|
|
363
364
|
export default VisualFilterRuntime;
|
|
@@ -77,7 +77,7 @@ sap.ui.define(["sap/fe/core/helpers/StableIdHelper", "sap/fe/core/helpers/TypeGu
|
|
|
77
77
|
value: interactiveChartProperties.measure,
|
|
78
78
|
displayedValue: interactiveChartProperties.displayedValue,
|
|
79
79
|
color: interactiveChartProperties.color,
|
|
80
|
-
selected: "{path: '$field>/conditions', formatter: '
|
|
80
|
+
selected: "{path: '$field>/conditions', formatter: '._formatters.VisualFilterRuntime.getAggregationSelected.bind($control)'}"
|
|
81
81
|
});
|
|
82
82
|
return barChartAggregations;
|
|
83
83
|
}
|
|
@@ -88,7 +88,7 @@ sap.ui.define(["sap/fe/core/helpers/StableIdHelper", "sap/fe/core/helpers/TypeGu
|
|
|
88
88
|
value: interactiveChartProperties.measure,
|
|
89
89
|
displayedValue: interactiveChartProperties.displayedValue,
|
|
90
90
|
color: interactiveChartProperties.color,
|
|
91
|
-
selected: "{path: '$field>/conditions', formatter: '
|
|
91
|
+
selected: "{path: '$field>/conditions', formatter: '._formatters.VisualFilterRuntime.getAggregationSelected.bind($control)'}"
|
|
92
92
|
});
|
|
93
93
|
return lineChartAggregations;
|
|
94
94
|
}
|
|
@@ -135,4 +135,4 @@ sap.ui.define(["sap/fe/core/helpers/StableIdHelper", "sap/fe/core/helpers/TypeGu
|
|
|
135
135
|
}
|
|
136
136
|
return _exports;
|
|
137
137
|
}, false);
|
|
138
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRWaXN1YWxGaWx0ZXJDaGFydCIsInZpc3VhbEZpbHRlciIsInNob3dFcnJvciIsImdldEludGVyYWN0aXZlQ2hhcnRXaXRoRXJyb3IiLCJjaGFydFR5cGUiLCJnZXRJbnRlcmFjdGl2ZUNoYXJ0IiwiX2V4cG9ydHMiLCJjaGFydEFubm90YXRpb24iLCJjaGFydE1lYXN1cmUiLCJEaW1lbnNpb25zIiwiX2pzeCIsIkludGVyYWN0aXZlTGluZUNoYXJ0IiwiZXJyb3JNZXNzYWdlVGl0bGUiLCJlcnJvck1lc3NhZ2UiLCJpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcyIsIkludGVyYWN0aXZlQ2hhcnRIZWxwZXIiLCJnZXRJbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcyIsIl9qc3hzIiwiSW50ZXJhY3RpdmVCYXJDaGFydCIsInNlbGVjdGlvbkNoYW5nZWQiLCJldmVudCIsIlZpc3VhbEZpbHRlclJ1bnRpbWUiLCJnZXRDaGFydFByb3BlcnRpZXMiLCJjaGlsZHJlbiIsImdldEJhckNoYXJ0QWdncmVnYXRpb25zIiwiY3VzdG9tRGF0YSIsImdldEN1c3RvbURhdGEiLCJnZXRMaW5lQ2hhcnRBZ2dyZWdhdGlvbnMiLCJ2aXN1YWxGaWx0ZXJDaGFydFByb3BlcnRpZXMiLCJ2aXNpYmxlIiwic2hvd0Vycm9yRXhwcmVzc2lvbiIsImVycm9yTWVzc2FnZVRpdGxlRXhwcmVzc2lvbiIsImVycm9yTWVzc2FnZUV4cHJlc3Npb24iLCJiYXJzIiwiYWdncmVnYXRpb25CaW5kaW5nIiwicG9pbnRzIiwiYmFyQ2hhcnRBZ2dyZWdhdGlvbnMiLCJJbnRlcmFjdGl2ZUJhckNoYXJ0QmFyIiwibGFiZWwiLCJjaGFydExhYmVsIiwidmFsdWUiLCJtZWFzdXJlIiwiZGlzcGxheWVkVmFsdWUiLCJjb2xvciIsInNlbGVjdGVkIiwibGluZUNoYXJ0QWdncmVnYXRpb25zIiwiSW50ZXJhY3RpdmVMaW5lQ2hhcnRQb2ludCIsImlkIiwiZ2VuZXJhdGUiLCJtZXRhUGF0aCIsImRpbWVuc2lvbiIsIkN1c3RvbURhdGEiLCJvdXRQYXJhbWV0ZXIiLCJ2YWx1ZWxpc3RQcm9wZXJ0eSIsIm11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZCIsIiR0YXJnZXQiLCJuYW1lIiwiaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24iLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIlRleHQiLCJwYXRoIiwidW5kZWZpbmVkIiwic2NhbGVmYWN0b3IiLCJ1b20iLCJpblBhcmFtZXRlcnMiLCJpblBhcmFtZXRlckZpbHRlcnMiLCJ0eXBlIiwic2VsZWN0aW9uVmFyaWFudCIsInJlcXVpcmVkIiwic2hvd092ZXJsYXlJbml0aWFsbHkiLCJyZXF1aXJlZFByb3BlcnRpZXMiLCJzdHJpbmdpZmllZFBhcmFtZXRlcnMiLCJkcmFmdFN1cHBvcnRlZCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiSW50ZXJhY3RpdmVDaGFydHMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IEludGVyYWN0aXZlQmFyQ2hhcnQsIHsgSW50ZXJhY3RpdmVCYXJDaGFydCRTZWxlY3Rpb25DaGFuZ2VkRXZlbnQsIHR5cGUgJEludGVyYWN0aXZlQmFyQ2hhcnRTZXR0aW5ncyB9IGZyb20gXCJzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9JbnRlcmFjdGl2ZUJhckNoYXJ0XCI7XG5pbXBvcnQgSW50ZXJhY3RpdmVCYXJDaGFydEJhciBmcm9tIFwic2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvSW50ZXJhY3RpdmVCYXJDaGFydEJhclwiO1xuaW1wb3J0IEludGVyYWN0aXZlTGluZUNoYXJ0LCB7IEludGVyYWN0aXZlTGluZUNoYXJ0JFNlbGVjdGlvbkNoYW5nZWRFdmVudCwgdHlwZSAkSW50ZXJhY3RpdmVMaW5lQ2hhcnRTZXR0aW5ncyB9IGZyb20gXCJzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9JbnRlcmFjdGl2ZUxpbmVDaGFydFwiO1xuaW1wb3J0IEludGVyYWN0aXZlTGluZUNoYXJ0UG9pbnQsIHsgdHlwZSAkSW50ZXJhY3RpdmVMaW5lQ2hhcnRQb2ludFNldHRpbmdzIH0gZnJvbSBcInNhcC9zdWl0ZS91aS9taWNyb2NoYXJ0L0ludGVyYWN0aXZlTGluZUNoYXJ0UG9pbnRcIjtcbmltcG9ydCB7IEFnZ3JlZ2F0aW9uQmluZGluZ0luZm8gfSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL0N1c3RvbURhdGFcIjtcbmltcG9ydCBJbnRlcmFjdGl2ZUNoYXJ0SGVscGVyLCB7IHR5cGUgSW50ZXJhY3RpdmVDaGFydFR5cGUgfSBmcm9tIFwiLi4vSW50ZXJhY3RpdmVDaGFydEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgVmlzdWFsRmlsdGVyIGZyb20gXCIuLi9WaXN1YWxGaWx0ZXJcIjtcbmltcG9ydCBWaXN1YWxGaWx0ZXJSdW50aW1lIGZyb20gXCIuLi9WaXN1YWxGaWx0ZXJSdW50aW1lXCI7XG5cbnR5cGUgdmlzdWFsRmlsdGVyQ2hhcnRBZ2dyZWdhdGlvbnMgPSBQaWNrPCRJbnRlcmFjdGl2ZUJhckNoYXJ0U2V0dGluZ3MsIFwiYmFyc1wiPiB8IFBpY2s8JEludGVyYWN0aXZlTGluZUNoYXJ0U2V0dGluZ3MsIFwicG9pbnRzXCI+O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmlzdWFsRmlsdGVyQ2hhcnQodmlzdWFsRmlsdGVyOiBWaXN1YWxGaWx0ZXIpOiBzdHJpbmcge1xuXHRpZiAodmlzdWFsRmlsdGVyLnNob3dFcnJvcikge1xuXHRcdHJldHVybiBnZXRJbnRlcmFjdGl2ZUNoYXJ0V2l0aEVycm9yKHZpc3VhbEZpbHRlcik7XG5cdH0gZWxzZSBpZiAodmlzdWFsRmlsdGVyLmNoYXJ0VHlwZSkge1xuXHRcdHJldHVybiBnZXRJbnRlcmFjdGl2ZUNoYXJ0KHZpc3VhbEZpbHRlcik7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIFwiXCI7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEludGVyYWN0aXZlQ2hhcnRXaXRoRXJyb3IodmlzdWFsRmlsdGVyOiBWaXN1YWxGaWx0ZXIpOiBzdHJpbmcge1xuXHRjb25zdCBjaGFydEFubm90YXRpb24gPSB2aXN1YWxGaWx0ZXIuY2hhcnRBbm5vdGF0aW9uO1xuXHRpZiAodmlzdWFsRmlsdGVyLmNoYXJ0TWVhc3VyZSAmJiBjaGFydEFubm90YXRpb24/LkRpbWVuc2lvbnMgJiYgY2hhcnRBbm5vdGF0aW9uLkRpbWVuc2lvbnNbMF0pIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PEludGVyYWN0aXZlTGluZUNoYXJ0XG5cdFx0XHRcdHNob3dFcnJvcj17dmlzdWFsRmlsdGVyLnNob3dFcnJvcn1cblx0XHRcdFx0ZXJyb3JNZXNzYWdlVGl0bGU9e3Zpc3VhbEZpbHRlci5lcnJvck1lc3NhZ2VUaXRsZX1cblx0XHRcdFx0ZXJyb3JNZXNzYWdlPXt2aXN1YWxGaWx0ZXIuZXJyb3JNZXNzYWdlfVxuXHRcdFx0Lz5cblx0XHQpO1xuXHR9XG5cdHJldHVybiBcIlwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW50ZXJhY3RpdmVDaGFydCh2aXN1YWxGaWx0ZXI6IFZpc3VhbEZpbHRlcik6IHN0cmluZyB7XG5cdGNvbnN0IGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzID0gSW50ZXJhY3RpdmVDaGFydEhlbHBlci5nZXRJbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcyh2aXN1YWxGaWx0ZXIpO1xuXHRpZiAodmlzdWFsRmlsdGVyLmNoYXJ0VHlwZSA9PT0gXCJVSS5DaGFydFR5cGUvQmFyXCIpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PEludGVyYWN0aXZlQmFyQ2hhcnRcblx0XHRcdFx0c2VsZWN0aW9uQ2hhbmdlZD17KGV2ZW50OiBJbnRlcmFjdGl2ZUJhckNoYXJ0JFNlbGVjdGlvbkNoYW5nZWRFdmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFZpc3VhbEZpbHRlclJ1bnRpbWUuc2VsZWN0aW9uQ2hhbmdlZChldmVudCk7XG5cdFx0XHRcdH19XG5cdFx0XHRcdHsuLi5nZXRDaGFydFByb3BlcnRpZXMoaW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMsIHZpc3VhbEZpbHRlcil9XG5cdFx0XHQ+XG5cdFx0XHRcdHtnZXRCYXJDaGFydEFnZ3JlZ2F0aW9ucyhpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcyl9XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0Y3VzdG9tRGF0YTogZ2V0Q3VzdG9tRGF0YSh2aXN1YWxGaWx0ZXIsIGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzKVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9JbnRlcmFjdGl2ZUJhckNoYXJ0PlxuXHRcdCk7XG5cdH0gZWxzZSBpZiAodmlzdWFsRmlsdGVyLmNoYXJ0VHlwZSA9PT0gXCJVSS5DaGFydFR5cGUvTGluZVwiKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxJbnRlcmFjdGl2ZUxpbmVDaGFydFxuXHRcdFx0XHRzZWxlY3Rpb25DaGFuZ2VkPXsoZXZlbnQ6IEludGVyYWN0aXZlTGluZUNoYXJ0JFNlbGVjdGlvbkNoYW5nZWRFdmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFZpc3VhbEZpbHRlclJ1bnRpbWUuc2VsZWN0aW9uQ2hhbmdlZChldmVudCk7XG5cdFx0XHRcdH19XG5cdFx0XHRcdHsuLi5nZXRDaGFydFByb3BlcnRpZXMoaW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMsIHZpc3VhbEZpbHRlcil9XG5cdFx0XHQ+XG5cdFx0XHRcdHtnZXRMaW5lQ2hhcnRBZ2dyZWdhdGlvbnMoaW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMpfVxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGN1c3RvbURhdGE6IGdldEN1c3RvbURhdGEodmlzdWFsRmlsdGVyLCBpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcylcblx0XHRcdFx0fX1cblx0XHRcdDwvSW50ZXJhY3RpdmVMaW5lQ2hhcnQ+XG5cdFx0KTtcblx0fVxuXHRyZXR1cm4gXCJcIjtcbn1cblxuZnVuY3Rpb24gZ2V0Q2hhcnRQcm9wZXJ0aWVzKFxuXHRpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllczogSW50ZXJhY3RpdmVDaGFydFR5cGUsXG5cdHZpc3VhbEZpbHRlcjogVmlzdWFsRmlsdGVyXG4pOiBQYXJ0aWFsPFByb3BlcnRpZXNPZjwkSW50ZXJhY3RpdmVCYXJDaGFydFNldHRpbmdzIHwgJEludGVyYWN0aXZlTGluZUNoYXJ0UG9pbnRTZXR0aW5ncz4+IHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgdmlzdWFsRmlsdGVyQ2hhcnRQcm9wZXJ0aWVzOiAkSW50ZXJhY3RpdmVCYXJDaGFydFNldHRpbmdzIHwgJEludGVyYWN0aXZlTGluZUNoYXJ0UG9pbnRTZXR0aW5ncyA9IHtcblx0XHR2aXNpYmxlOiBpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcy5zaG93RXJyb3JFeHByZXNzaW9uLFxuXHRcdHNob3dFcnJvcjogaW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuc2hvd0Vycm9yRXhwcmVzc2lvbixcblx0XHRlcnJvck1lc3NhZ2VUaXRsZTogaW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuZXJyb3JNZXNzYWdlVGl0bGVFeHByZXNzaW9uLFxuXHRcdGVycm9yTWVzc2FnZTogaW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuZXJyb3JNZXNzYWdlRXhwcmVzc2lvblxuXHR9O1xuXHRpZiAodmlzdWFsRmlsdGVyLmNoYXJ0VHlwZSA9PT0gXCJVSS5DaGFydFR5cGUvQmFyXCIpIHtcblx0XHR2aXN1YWxGaWx0ZXJDaGFydFByb3BlcnRpZXMuYmFycyA9IGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLmFnZ3JlZ2F0aW9uQmluZGluZyBhcyB1bmtub3duIGFzIEFnZ3JlZ2F0aW9uQmluZGluZ0luZm87XG5cdH0gZWxzZSBpZiAodmlzdWFsRmlsdGVyLmNoYXJ0VHlwZSA9PT0gXCJVSS5DaGFydFR5cGUvTGluZVwiKSB7XG5cdFx0KHZpc3VhbEZpbHRlckNoYXJ0UHJvcGVydGllcyBhcyAkSW50ZXJhY3RpdmVMaW5lQ2hhcnRTZXR0aW5ncykucG9pbnRzID1cblx0XHRcdGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLmFnZ3JlZ2F0aW9uQmluZGluZyBhcyB1bmtub3duIGFzIEFnZ3JlZ2F0aW9uQmluZGluZ0luZm87XG5cdH1cblx0cmV0dXJuIHZpc3VhbEZpbHRlckNoYXJ0UHJvcGVydGllcztcbn1cblxuZnVuY3Rpb24gZ2V0QmFyQ2hhcnRBZ2dyZWdhdGlvbnMoaW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXM6IEludGVyYWN0aXZlQ2hhcnRUeXBlKTogdmlzdWFsRmlsdGVyQ2hhcnRBZ2dyZWdhdGlvbnMge1xuXHRjb25zdCBiYXJDaGFydEFnZ3JlZ2F0aW9ucyA9IHt9O1xuXHQoYmFyQ2hhcnRBZ2dyZWdhdGlvbnMgYXMgJEludGVyYWN0aXZlQmFyQ2hhcnRTZXR0aW5ncykuYmFycyA9IChcblx0XHQ8SW50ZXJhY3RpdmVCYXJDaGFydEJhclxuXHRcdFx0bGFiZWw9e2ludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLmNoYXJ0TGFiZWx9XG5cdFx0XHR2YWx1ZT17aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMubWVhc3VyZX1cblx0XHRcdGRpc3BsYXllZFZhbHVlPXtpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcy5kaXNwbGF5ZWRWYWx1ZX1cblx0XHRcdGNvbG9yPXtpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcy5jb2xvcn1cblx0XHRcdHNlbGVjdGVkPVwie3BhdGg6ICckZmllbGQ+L2NvbmRpdGlvbnMnLCBmb3JtYXR0ZXI6ICdzYXAuZmUubWFjcm9zLnZpc3VhbGZpbHRlcnMuVmlzdWFsRmlsdGVyUnVudGltZS5nZXRBZ2dyZWdhdGlvblNlbGVjdGVkJ31cIlxuXHRcdC8+XG5cdCk7XG5cdHJldHVybiBiYXJDaGFydEFnZ3JlZ2F0aW9ucztcbn1cblxuZnVuY3Rpb24gZ2V0TGluZUNoYXJ0QWdncmVnYXRpb25zKGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzOiBJbnRlcmFjdGl2ZUNoYXJ0VHlwZSk6IHZpc3VhbEZpbHRlckNoYXJ0QWdncmVnYXRpb25zIHtcblx0Y29uc3QgbGluZUNoYXJ0QWdncmVnYXRpb25zID0ge307XG5cdChsaW5lQ2hhcnRBZ2dyZWdhdGlvbnMgYXMgJEludGVyYWN0aXZlTGluZUNoYXJ0U2V0dGluZ3MpLnBvaW50cyA9IChcblx0XHQ8SW50ZXJhY3RpdmVMaW5lQ2hhcnRQb2ludFxuXHRcdFx0bGFiZWw9e2ludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLmNoYXJ0TGFiZWx9XG5cdFx0XHR2YWx1ZT17aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMubWVhc3VyZX1cblx0XHRcdGRpc3BsYXllZFZhbHVlPXtpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcy5kaXNwbGF5ZWRWYWx1ZX1cblx0XHRcdGNvbG9yPXtpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcy5jb2xvcn1cblx0XHRcdHNlbGVjdGVkPVwie3BhdGg6ICckZmllbGQ+L2NvbmRpdGlvbnMnLCBmb3JtYXR0ZXI6ICdzYXAuZmUubWFjcm9zLnZpc3VhbGZpbHRlcnMuVmlzdWFsRmlsdGVyUnVudGltZS5nZXRBZ2dyZWdhdGlvblNlbGVjdGVkJ31cIlxuXHRcdC8+XG5cdCk7XG5cdHJldHVybiBsaW5lQ2hhcnRBZ2dyZWdhdGlvbnM7XG59XG5cbmZ1bmN0aW9uIGdldEN1c3RvbURhdGEodmlzdWFsRmlsdGVyOiBWaXN1YWxGaWx0ZXIsIGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzOiBJbnRlcmFjdGl2ZUNoYXJ0VHlwZSk6IEN1c3RvbURhdGFbXSB7XG5cdGNvbnN0IGlkID0gZ2VuZXJhdGUoW3Zpc3VhbEZpbHRlci5tZXRhUGF0aF0pO1xuXHRjb25zdCBkaW1lbnNpb24gPSB2aXN1YWxGaWx0ZXIuY2hhcnRBbm5vdGF0aW9uPy5EaW1lbnNpb25zWzBdO1xuXHRyZXR1cm4gW1xuXHRcdDxDdXN0b21EYXRhIGtleT17XCJvdXRQYXJhbWV0ZXJcIn0gdmFsdWU9e3Zpc3VhbEZpbHRlci5vdXRQYXJhbWV0ZXJ9IC8+LFxuXHRcdDxDdXN0b21EYXRhIGtleT17XCJ2YWx1ZWxpc3RQcm9wZXJ0eVwifSB2YWx1ZT17dmlzdWFsRmlsdGVyLnZhbHVlbGlzdFByb3BlcnR5fSAvPixcblx0XHQ8Q3VzdG9tRGF0YSBrZXk9e1wibXVsdGlwbGVTZWxlY3Rpb25BbGxvd2VkXCJ9IHZhbHVlPXt2aXN1YWxGaWx0ZXIubXVsdGlwbGVTZWxlY3Rpb25BbGxvd2VkfSAvPixcblx0XHQ8Q3VzdG9tRGF0YSBrZXk9e1wiZGltZW5zaW9uXCJ9IHZhbHVlPXtkaW1lbnNpb24/LiR0YXJnZXQ/Lm5hbWV9IC8+LFxuXHRcdDxDdXN0b21EYXRhXG5cdFx0XHRrZXk9e1wiZGltZW5zaW9uVGV4dFwifVxuXHRcdFx0dmFsdWU9e1xuXHRcdFx0XHRpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbihkaW1lbnNpb24/LiR0YXJnZXQ/LmFubm90YXRpb25zLkNvbW1vbj8uVGV4dClcblx0XHRcdFx0XHQ/IGRpbWVuc2lvbj8uJHRhcmdldD8uYW5ub3RhdGlvbnMuQ29tbW9uPy5UZXh0LnBhdGhcblx0XHRcdFx0XHQ6IHVuZGVmaW5lZFxuXHRcdFx0fVxuXHRcdC8+LFxuXHRcdDxDdXN0b21EYXRhIGtleT17XCJzY2FsZWZhY3RvclwifSB2YWx1ZT17aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuc2NhbGVmYWN0b3J9IC8+LFxuXHRcdDxDdXN0b21EYXRhIGtleT17XCJtZWFzdXJlXCJ9IHZhbHVlPXt2aXN1YWxGaWx0ZXIuY2hhcnRNZWFzdXJlfSAvPixcblx0XHQ8Q3VzdG9tRGF0YSBrZXk9e1widW9tXCJ9IHZhbHVlPXtpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcy51b219IC8+LFxuXHRcdDxDdXN0b21EYXRhIGtleT17XCJpblBhcmFtZXRlcnNcIn0gdmFsdWU9e2ludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLmluUGFyYW1ldGVyc30gLz4sXG5cdFx0PEN1c3RvbURhdGEga2V5PXtcImluUGFyYW1ldGVyRmlsdGVyc1wifSB2YWx1ZT17aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuaW5QYXJhbWV0ZXJGaWx0ZXJzfSAvPixcblx0XHQ8Q3VzdG9tRGF0YSBrZXk9e1wiZGltZW5zaW9uVHlwZVwifSB2YWx1ZT17ZGltZW5zaW9uPy4kdGFyZ2V0Py50eXBlfSAvPixcblx0XHQ8Q3VzdG9tRGF0YSBrZXk9e1wic2VsZWN0aW9uVmFyaWFudEFubm90YXRpb25cIn0gdmFsdWU9e2ludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLnNlbGVjdGlvblZhcmlhbnR9IC8+LFxuXHRcdDxDdXN0b21EYXRhIGtleT17XCJyZXF1aXJlZFwifSB2YWx1ZT17dmlzdWFsRmlsdGVyLnJlcXVpcmVkfSAvPixcblx0XHQ8Q3VzdG9tRGF0YSBrZXk9e1wic2hvd092ZXJsYXlJbml0aWFsbHlcIn0gdmFsdWU9e3Zpc3VhbEZpbHRlci5zaG93T3ZlcmxheUluaXRpYWxseX0gLz4sXG5cdFx0PEN1c3RvbURhdGEga2V5PXtcInJlcXVpcmVkUHJvcGVydGllc1wifSB2YWx1ZT17dmlzdWFsRmlsdGVyLnJlcXVpcmVkUHJvcGVydGllc30gLz4sXG5cdFx0PEN1c3RvbURhdGEga2V5PXtcImluZm9QYXRoXCJ9IHZhbHVlPXtpZH0gLz4sXG5cdFx0PEN1c3RvbURhdGEga2V5PXtcInBhcmFtZXRlcnNcIn0gdmFsdWU9e2ludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLnN0cmluZ2lmaWVkUGFyYW1ldGVyc30gLz4sXG5cdFx0PEN1c3RvbURhdGEga2V5PXtcImRyYWZ0U3VwcG9ydGVkXCJ9IHZhbHVlPXt2aXN1YWxGaWx0ZXIuZHJhZnRTdXBwb3J0ZWR9IC8+XG5cdF07XG59XG4iXSwibWFwcGluZ3MiOiI7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
|
|
138
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRWaXN1YWxGaWx0ZXJDaGFydCIsInZpc3VhbEZpbHRlciIsInNob3dFcnJvciIsImdldEludGVyYWN0aXZlQ2hhcnRXaXRoRXJyb3IiLCJjaGFydFR5cGUiLCJnZXRJbnRlcmFjdGl2ZUNoYXJ0IiwiX2V4cG9ydHMiLCJjaGFydEFubm90YXRpb24iLCJjaGFydE1lYXN1cmUiLCJEaW1lbnNpb25zIiwiX2pzeCIsIkludGVyYWN0aXZlTGluZUNoYXJ0IiwiZXJyb3JNZXNzYWdlVGl0bGUiLCJlcnJvck1lc3NhZ2UiLCJpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcyIsIkludGVyYWN0aXZlQ2hhcnRIZWxwZXIiLCJnZXRJbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcyIsIl9qc3hzIiwiSW50ZXJhY3RpdmVCYXJDaGFydCIsInNlbGVjdGlvbkNoYW5nZWQiLCJldmVudCIsIlZpc3VhbEZpbHRlclJ1bnRpbWUiLCJnZXRDaGFydFByb3BlcnRpZXMiLCJjaGlsZHJlbiIsImdldEJhckNoYXJ0QWdncmVnYXRpb25zIiwiY3VzdG9tRGF0YSIsImdldEN1c3RvbURhdGEiLCJnZXRMaW5lQ2hhcnRBZ2dyZWdhdGlvbnMiLCJ2aXN1YWxGaWx0ZXJDaGFydFByb3BlcnRpZXMiLCJ2aXNpYmxlIiwic2hvd0Vycm9yRXhwcmVzc2lvbiIsImVycm9yTWVzc2FnZVRpdGxlRXhwcmVzc2lvbiIsImVycm9yTWVzc2FnZUV4cHJlc3Npb24iLCJiYXJzIiwiYWdncmVnYXRpb25CaW5kaW5nIiwicG9pbnRzIiwiYmFyQ2hhcnRBZ2dyZWdhdGlvbnMiLCJJbnRlcmFjdGl2ZUJhckNoYXJ0QmFyIiwibGFiZWwiLCJjaGFydExhYmVsIiwidmFsdWUiLCJtZWFzdXJlIiwiZGlzcGxheWVkVmFsdWUiLCJjb2xvciIsInNlbGVjdGVkIiwibGluZUNoYXJ0QWdncmVnYXRpb25zIiwiSW50ZXJhY3RpdmVMaW5lQ2hhcnRQb2ludCIsImlkIiwiZ2VuZXJhdGUiLCJtZXRhUGF0aCIsImRpbWVuc2lvbiIsIkN1c3RvbURhdGEiLCJvdXRQYXJhbWV0ZXIiLCJ2YWx1ZWxpc3RQcm9wZXJ0eSIsIm11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZCIsIiR0YXJnZXQiLCJuYW1lIiwiaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24iLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIlRleHQiLCJwYXRoIiwidW5kZWZpbmVkIiwic2NhbGVmYWN0b3IiLCJ1b20iLCJpblBhcmFtZXRlcnMiLCJpblBhcmFtZXRlckZpbHRlcnMiLCJ0eXBlIiwic2VsZWN0aW9uVmFyaWFudCIsInJlcXVpcmVkIiwic2hvd092ZXJsYXlJbml0aWFsbHkiLCJyZXF1aXJlZFByb3BlcnRpZXMiLCJzdHJpbmdpZmllZFBhcmFtZXRlcnMiLCJkcmFmdFN1cHBvcnRlZCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiSW50ZXJhY3RpdmVDaGFydHMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IEludGVyYWN0aXZlQmFyQ2hhcnQsIHtcblx0SW50ZXJhY3RpdmVCYXJDaGFydCRTZWxlY3Rpb25DaGFuZ2VkRXZlbnQsXG5cdHR5cGUgJEludGVyYWN0aXZlQmFyQ2hhcnRTZXR0aW5nc1xufSBmcm9tIFwic2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvSW50ZXJhY3RpdmVCYXJDaGFydFwiO1xuaW1wb3J0IEludGVyYWN0aXZlQmFyQ2hhcnRCYXIgZnJvbSBcInNhcC9zdWl0ZS91aS9taWNyb2NoYXJ0L0ludGVyYWN0aXZlQmFyQ2hhcnRCYXJcIjtcbmltcG9ydCBJbnRlcmFjdGl2ZUxpbmVDaGFydCwge1xuXHRJbnRlcmFjdGl2ZUxpbmVDaGFydCRTZWxlY3Rpb25DaGFuZ2VkRXZlbnQsXG5cdHR5cGUgJEludGVyYWN0aXZlTGluZUNoYXJ0U2V0dGluZ3Ncbn0gZnJvbSBcInNhcC9zdWl0ZS91aS9taWNyb2NoYXJ0L0ludGVyYWN0aXZlTGluZUNoYXJ0XCI7XG5pbXBvcnQgSW50ZXJhY3RpdmVMaW5lQ2hhcnRQb2ludCwgeyB0eXBlICRJbnRlcmFjdGl2ZUxpbmVDaGFydFBvaW50U2V0dGluZ3MgfSBmcm9tIFwic2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvSW50ZXJhY3RpdmVMaW5lQ2hhcnRQb2ludFwiO1xuaW1wb3J0IHsgQWdncmVnYXRpb25CaW5kaW5nSW5mbyB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgQ3VzdG9tRGF0YSBmcm9tIFwic2FwL3VpL2NvcmUvQ3VzdG9tRGF0YVwiO1xuaW1wb3J0IEludGVyYWN0aXZlQ2hhcnRIZWxwZXIsIHsgdHlwZSBJbnRlcmFjdGl2ZUNoYXJ0VHlwZSB9IGZyb20gXCIuLi9JbnRlcmFjdGl2ZUNoYXJ0SGVscGVyXCI7XG5pbXBvcnQgdHlwZSBWaXN1YWxGaWx0ZXIgZnJvbSBcIi4uL1Zpc3VhbEZpbHRlclwiO1xuaW1wb3J0IFZpc3VhbEZpbHRlclJ1bnRpbWUgZnJvbSBcIi4uL1Zpc3VhbEZpbHRlclJ1bnRpbWVcIjtcblxudHlwZSB2aXN1YWxGaWx0ZXJDaGFydEFnZ3JlZ2F0aW9ucyA9IFBpY2s8JEludGVyYWN0aXZlQmFyQ2hhcnRTZXR0aW5ncywgXCJiYXJzXCI+IHwgUGljazwkSW50ZXJhY3RpdmVMaW5lQ2hhcnRTZXR0aW5ncywgXCJwb2ludHNcIj47XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaXN1YWxGaWx0ZXJDaGFydCh2aXN1YWxGaWx0ZXI6IFZpc3VhbEZpbHRlcik6IHN0cmluZyB7XG5cdGlmICh2aXN1YWxGaWx0ZXIuc2hvd0Vycm9yKSB7XG5cdFx0cmV0dXJuIGdldEludGVyYWN0aXZlQ2hhcnRXaXRoRXJyb3IodmlzdWFsRmlsdGVyKTtcblx0fSBlbHNlIGlmICh2aXN1YWxGaWx0ZXIuY2hhcnRUeXBlKSB7XG5cdFx0cmV0dXJuIGdldEludGVyYWN0aXZlQ2hhcnQodmlzdWFsRmlsdGVyKTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gXCJcIjtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW50ZXJhY3RpdmVDaGFydFdpdGhFcnJvcih2aXN1YWxGaWx0ZXI6IFZpc3VhbEZpbHRlcik6IHN0cmluZyB7XG5cdGNvbnN0IGNoYXJ0QW5ub3RhdGlvbiA9IHZpc3VhbEZpbHRlci5jaGFydEFubm90YXRpb247XG5cdGlmICh2aXN1YWxGaWx0ZXIuY2hhcnRNZWFzdXJlICYmIGNoYXJ0QW5ub3RhdGlvbj8uRGltZW5zaW9ucyAmJiBjaGFydEFubm90YXRpb24uRGltZW5zaW9uc1swXSkge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8SW50ZXJhY3RpdmVMaW5lQ2hhcnRcblx0XHRcdFx0c2hvd0Vycm9yPXt2aXN1YWxGaWx0ZXIuc2hvd0Vycm9yfVxuXHRcdFx0XHRlcnJvck1lc3NhZ2VUaXRsZT17dmlzdWFsRmlsdGVyLmVycm9yTWVzc2FnZVRpdGxlfVxuXHRcdFx0XHRlcnJvck1lc3NhZ2U9e3Zpc3VhbEZpbHRlci5lcnJvck1lc3NhZ2V9XG5cdFx0XHQvPlxuXHRcdCk7XG5cdH1cblx0cmV0dXJuIFwiXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnRlcmFjdGl2ZUNoYXJ0KHZpc3VhbEZpbHRlcjogVmlzdWFsRmlsdGVyKTogc3RyaW5nIHtcblx0Y29uc3QgaW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMgPSBJbnRlcmFjdGl2ZUNoYXJ0SGVscGVyLmdldEludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzKHZpc3VhbEZpbHRlcik7XG5cdGlmICh2aXN1YWxGaWx0ZXIuY2hhcnRUeXBlID09PSBcIlVJLkNoYXJ0VHlwZS9CYXJcIikge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8SW50ZXJhY3RpdmVCYXJDaGFydFxuXHRcdFx0XHRzZWxlY3Rpb25DaGFuZ2VkPXsoZXZlbnQ6IEludGVyYWN0aXZlQmFyQ2hhcnQkU2VsZWN0aW9uQ2hhbmdlZEV2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0VmlzdWFsRmlsdGVyUnVudGltZS5zZWxlY3Rpb25DaGFuZ2VkKGV2ZW50KTtcblx0XHRcdFx0fX1cblx0XHRcdFx0ey4uLmdldENoYXJ0UHJvcGVydGllcyhpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcywgdmlzdWFsRmlsdGVyKX1cblx0XHRcdD5cblx0XHRcdFx0e2dldEJhckNoYXJ0QWdncmVnYXRpb25zKGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzKX1cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjdXN0b21EYXRhOiBnZXRDdXN0b21EYXRhKHZpc3VhbEZpbHRlciwgaW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L0ludGVyYWN0aXZlQmFyQ2hhcnQ+XG5cdFx0KTtcblx0fSBlbHNlIGlmICh2aXN1YWxGaWx0ZXIuY2hhcnRUeXBlID09PSBcIlVJLkNoYXJ0VHlwZS9MaW5lXCIpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PEludGVyYWN0aXZlTGluZUNoYXJ0XG5cdFx0XHRcdHNlbGVjdGlvbkNoYW5nZWQ9eyhldmVudDogSW50ZXJhY3RpdmVMaW5lQ2hhcnQkU2VsZWN0aW9uQ2hhbmdlZEV2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0VmlzdWFsRmlsdGVyUnVudGltZS5zZWxlY3Rpb25DaGFuZ2VkKGV2ZW50KTtcblx0XHRcdFx0fX1cblx0XHRcdFx0ey4uLmdldENoYXJ0UHJvcGVydGllcyhpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcywgdmlzdWFsRmlsdGVyKX1cblx0XHRcdD5cblx0XHRcdFx0e2dldExpbmVDaGFydEFnZ3JlZ2F0aW9ucyhpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcyl9XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0Y3VzdG9tRGF0YTogZ2V0Q3VzdG9tRGF0YSh2aXN1YWxGaWx0ZXIsIGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzKVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9JbnRlcmFjdGl2ZUxpbmVDaGFydD5cblx0XHQpO1xuXHR9XG5cdHJldHVybiBcIlwiO1xufVxuXG5mdW5jdGlvbiBnZXRDaGFydFByb3BlcnRpZXMoXG5cdGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzOiBJbnRlcmFjdGl2ZUNoYXJ0VHlwZSxcblx0dmlzdWFsRmlsdGVyOiBWaXN1YWxGaWx0ZXJcbik6IFBhcnRpYWw8UHJvcGVydGllc09mPCRJbnRlcmFjdGl2ZUJhckNoYXJ0U2V0dGluZ3MgfCAkSW50ZXJhY3RpdmVMaW5lQ2hhcnRQb2ludFNldHRpbmdzPj4gfCB1bmRlZmluZWQge1xuXHRjb25zdCB2aXN1YWxGaWx0ZXJDaGFydFByb3BlcnRpZXM6ICRJbnRlcmFjdGl2ZUJhckNoYXJ0U2V0dGluZ3MgfCAkSW50ZXJhY3RpdmVMaW5lQ2hhcnRQb2ludFNldHRpbmdzID0ge1xuXHRcdHZpc2libGU6IGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLnNob3dFcnJvckV4cHJlc3Npb24sXG5cdFx0c2hvd0Vycm9yOiBpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcy5zaG93RXJyb3JFeHByZXNzaW9uLFxuXHRcdGVycm9yTWVzc2FnZVRpdGxlOiBpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcy5lcnJvck1lc3NhZ2VUaXRsZUV4cHJlc3Npb24sXG5cdFx0ZXJyb3JNZXNzYWdlOiBpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcy5lcnJvck1lc3NhZ2VFeHByZXNzaW9uXG5cdH07XG5cdGlmICh2aXN1YWxGaWx0ZXIuY2hhcnRUeXBlID09PSBcIlVJLkNoYXJ0VHlwZS9CYXJcIikge1xuXHRcdHZpc3VhbEZpbHRlckNoYXJ0UHJvcGVydGllcy5iYXJzID0gaW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuYWdncmVnYXRpb25CaW5kaW5nIGFzIHVua25vd24gYXMgQWdncmVnYXRpb25CaW5kaW5nSW5mbztcblx0fSBlbHNlIGlmICh2aXN1YWxGaWx0ZXIuY2hhcnRUeXBlID09PSBcIlVJLkNoYXJ0VHlwZS9MaW5lXCIpIHtcblx0XHQodmlzdWFsRmlsdGVyQ2hhcnRQcm9wZXJ0aWVzIGFzICRJbnRlcmFjdGl2ZUxpbmVDaGFydFNldHRpbmdzKS5wb2ludHMgPVxuXHRcdFx0aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuYWdncmVnYXRpb25CaW5kaW5nIGFzIHVua25vd24gYXMgQWdncmVnYXRpb25CaW5kaW5nSW5mbztcblx0fVxuXHRyZXR1cm4gdmlzdWFsRmlsdGVyQ2hhcnRQcm9wZXJ0aWVzO1xufVxuXG5mdW5jdGlvbiBnZXRCYXJDaGFydEFnZ3JlZ2F0aW9ucyhpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllczogSW50ZXJhY3RpdmVDaGFydFR5cGUpOiB2aXN1YWxGaWx0ZXJDaGFydEFnZ3JlZ2F0aW9ucyB7XG5cdGNvbnN0IGJhckNoYXJ0QWdncmVnYXRpb25zID0ge307XG5cdChiYXJDaGFydEFnZ3JlZ2F0aW9ucyBhcyAkSW50ZXJhY3RpdmVCYXJDaGFydFNldHRpbmdzKS5iYXJzID0gKFxuXHRcdDxJbnRlcmFjdGl2ZUJhckNoYXJ0QmFyXG5cdFx0XHRsYWJlbD17aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuY2hhcnRMYWJlbH1cblx0XHRcdHZhbHVlPXtpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcy5tZWFzdXJlfVxuXHRcdFx0ZGlzcGxheWVkVmFsdWU9e2ludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLmRpc3BsYXllZFZhbHVlfVxuXHRcdFx0Y29sb3I9e2ludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLmNvbG9yfVxuXHRcdFx0c2VsZWN0ZWQ9XCJ7cGF0aDogJyRmaWVsZD4vY29uZGl0aW9ucycsIGZvcm1hdHRlcjogJy5fZm9ybWF0dGVycy5WaXN1YWxGaWx0ZXJSdW50aW1lLmdldEFnZ3JlZ2F0aW9uU2VsZWN0ZWQuYmluZCgkY29udHJvbCknfVwiXG5cdFx0Lz5cblx0KTtcblx0cmV0dXJuIGJhckNoYXJ0QWdncmVnYXRpb25zO1xufVxuXG5mdW5jdGlvbiBnZXRMaW5lQ2hhcnRBZ2dyZWdhdGlvbnMoaW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXM6IEludGVyYWN0aXZlQ2hhcnRUeXBlKTogdmlzdWFsRmlsdGVyQ2hhcnRBZ2dyZWdhdGlvbnMge1xuXHRjb25zdCBsaW5lQ2hhcnRBZ2dyZWdhdGlvbnMgPSB7fTtcblx0KGxpbmVDaGFydEFnZ3JlZ2F0aW9ucyBhcyAkSW50ZXJhY3RpdmVMaW5lQ2hhcnRTZXR0aW5ncykucG9pbnRzID0gKFxuXHRcdDxJbnRlcmFjdGl2ZUxpbmVDaGFydFBvaW50XG5cdFx0XHRsYWJlbD17aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuY2hhcnRMYWJlbH1cblx0XHRcdHZhbHVlPXtpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcy5tZWFzdXJlfVxuXHRcdFx0ZGlzcGxheWVkVmFsdWU9e2ludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLmRpc3BsYXllZFZhbHVlfVxuXHRcdFx0Y29sb3I9e2ludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLmNvbG9yfVxuXHRcdFx0c2VsZWN0ZWQ9XCJ7cGF0aDogJyRmaWVsZD4vY29uZGl0aW9ucycsIGZvcm1hdHRlcjogJy5fZm9ybWF0dGVycy5WaXN1YWxGaWx0ZXJSdW50aW1lLmdldEFnZ3JlZ2F0aW9uU2VsZWN0ZWQuYmluZCgkY29udHJvbCknfVwiXG5cdFx0Lz5cblx0KTtcblx0cmV0dXJuIGxpbmVDaGFydEFnZ3JlZ2F0aW9ucztcbn1cblxuZnVuY3Rpb24gZ2V0Q3VzdG9tRGF0YSh2aXN1YWxGaWx0ZXI6IFZpc3VhbEZpbHRlciwgaW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXM6IEludGVyYWN0aXZlQ2hhcnRUeXBlKTogQ3VzdG9tRGF0YVtdIHtcblx0Y29uc3QgaWQgPSBnZW5lcmF0ZShbdmlzdWFsRmlsdGVyLm1ldGFQYXRoXSk7XG5cdGNvbnN0IGRpbWVuc2lvbiA9IHZpc3VhbEZpbHRlci5jaGFydEFubm90YXRpb24/LkRpbWVuc2lvbnNbMF07XG5cdHJldHVybiBbXG5cdFx0PEN1c3RvbURhdGEga2V5PXtcIm91dFBhcmFtZXRlclwifSB2YWx1ZT17dmlzdWFsRmlsdGVyLm91dFBhcmFtZXRlcn0gLz4sXG5cdFx0PEN1c3RvbURhdGEga2V5PXtcInZhbHVlbGlzdFByb3BlcnR5XCJ9IHZhbHVlPXt2aXN1YWxGaWx0ZXIudmFsdWVsaXN0UHJvcGVydHl9IC8+LFxuXHRcdDxDdXN0b21EYXRhIGtleT17XCJtdWx0aXBsZVNlbGVjdGlvbkFsbG93ZWRcIn0gdmFsdWU9e3Zpc3VhbEZpbHRlci5tdWx0aXBsZVNlbGVjdGlvbkFsbG93ZWR9IC8+LFxuXHRcdDxDdXN0b21EYXRhIGtleT17XCJkaW1lbnNpb25cIn0gdmFsdWU9e2RpbWVuc2lvbj8uJHRhcmdldD8ubmFtZX0gLz4sXG5cdFx0PEN1c3RvbURhdGFcblx0XHRcdGtleT17XCJkaW1lbnNpb25UZXh0XCJ9XG5cdFx0XHR2YWx1ZT17XG5cdFx0XHRcdGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uKGRpbWVuc2lvbj8uJHRhcmdldD8uYW5ub3RhdGlvbnMuQ29tbW9uPy5UZXh0KVxuXHRcdFx0XHRcdD8gZGltZW5zaW9uPy4kdGFyZ2V0Py5hbm5vdGF0aW9ucy5Db21tb24/LlRleHQucGF0aFxuXHRcdFx0XHRcdDogdW5kZWZpbmVkXG5cdFx0XHR9XG5cdFx0Lz4sXG5cdFx0PEN1c3RvbURhdGEga2V5PXtcInNjYWxlZmFjdG9yXCJ9IHZhbHVlPXtpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcy5zY2FsZWZhY3Rvcn0gLz4sXG5cdFx0PEN1c3RvbURhdGEga2V5PXtcIm1lYXN1cmVcIn0gdmFsdWU9e3Zpc3VhbEZpbHRlci5jaGFydE1lYXN1cmV9IC8+LFxuXHRcdDxDdXN0b21EYXRhIGtleT17XCJ1b21cIn0gdmFsdWU9e2ludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLnVvbX0gLz4sXG5cdFx0PEN1c3RvbURhdGEga2V5PXtcImluUGFyYW1ldGVyc1wifSB2YWx1ZT17aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuaW5QYXJhbWV0ZXJzfSAvPixcblx0XHQ8Q3VzdG9tRGF0YSBrZXk9e1wiaW5QYXJhbWV0ZXJGaWx0ZXJzXCJ9IHZhbHVlPXtpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcy5pblBhcmFtZXRlckZpbHRlcnN9IC8+LFxuXHRcdDxDdXN0b21EYXRhIGtleT17XCJkaW1lbnNpb25UeXBlXCJ9IHZhbHVlPXtkaW1lbnNpb24/LiR0YXJnZXQ/LnR5cGV9IC8+LFxuXHRcdDxDdXN0b21EYXRhIGtleT17XCJzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvblwifSB2YWx1ZT17aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuc2VsZWN0aW9uVmFyaWFudH0gLz4sXG5cdFx0PEN1c3RvbURhdGEga2V5PXtcInJlcXVpcmVkXCJ9IHZhbHVlPXt2aXN1YWxGaWx0ZXIucmVxdWlyZWR9IC8+LFxuXHRcdDxDdXN0b21EYXRhIGtleT17XCJzaG93T3ZlcmxheUluaXRpYWxseVwifSB2YWx1ZT17dmlzdWFsRmlsdGVyLnNob3dPdmVybGF5SW5pdGlhbGx5fSAvPixcblx0XHQ8Q3VzdG9tRGF0YSBrZXk9e1wicmVxdWlyZWRQcm9wZXJ0aWVzXCJ9IHZhbHVlPXt2aXN1YWxGaWx0ZXIucmVxdWlyZWRQcm9wZXJ0aWVzfSAvPixcblx0XHQ8Q3VzdG9tRGF0YSBrZXk9e1wiaW5mb1BhdGhcIn0gdmFsdWU9e2lkfSAvPixcblx0XHQ8Q3VzdG9tRGF0YSBrZXk9e1wicGFyYW1ldGVyc1wifSB2YWx1ZT17aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuc3RyaW5naWZpZWRQYXJhbWV0ZXJzfSAvPixcblx0XHQ8Q3VzdG9tRGF0YSBrZXk9e1wiZHJhZnRTdXBwb3J0ZWRcIn0gdmFsdWU9e3Zpc3VhbEZpbHRlci5kcmFmdFN1cHBvcnRlZH0gLz5cblx0XTtcbn1cbiJd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
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { PropertiesOf } from "sap/fe/base/ClassSupport";
|
|
2
2
|
import { generate } from "sap/fe/core/helpers/StableIdHelper";
|
|
3
3
|
import { isPathAnnotationExpression } from "sap/fe/core/helpers/TypeGuards";
|
|
4
|
-
import InteractiveBarChart, {
|
|
4
|
+
import InteractiveBarChart, {
|
|
5
|
+
InteractiveBarChart$SelectionChangedEvent,
|
|
6
|
+
type $InteractiveBarChartSettings
|
|
7
|
+
} from "sap/suite/ui/microchart/InteractiveBarChart";
|
|
5
8
|
import InteractiveBarChartBar from "sap/suite/ui/microchart/InteractiveBarChartBar";
|
|
6
|
-
import InteractiveLineChart, {
|
|
9
|
+
import InteractiveLineChart, {
|
|
10
|
+
InteractiveLineChart$SelectionChangedEvent,
|
|
11
|
+
type $InteractiveLineChartSettings
|
|
12
|
+
} from "sap/suite/ui/microchart/InteractiveLineChart";
|
|
7
13
|
import InteractiveLineChartPoint, { type $InteractiveLineChartPointSettings } from "sap/suite/ui/microchart/InteractiveLineChartPoint";
|
|
8
14
|
import { AggregationBindingInfo } from "sap/ui/base/ManagedObject";
|
|
9
15
|
import CustomData from "sap/ui/core/CustomData";
|
|
@@ -98,7 +104,7 @@ function getBarChartAggregations(interactiveChartProperties: InteractiveChartTyp
|
|
|
98
104
|
value={interactiveChartProperties.measure}
|
|
99
105
|
displayedValue={interactiveChartProperties.displayedValue}
|
|
100
106
|
color={interactiveChartProperties.color}
|
|
101
|
-
selected="{path: '$field>/conditions', formatter: '
|
|
107
|
+
selected="{path: '$field>/conditions', formatter: '._formatters.VisualFilterRuntime.getAggregationSelected.bind($control)'}"
|
|
102
108
|
/>
|
|
103
109
|
);
|
|
104
110
|
return barChartAggregations;
|
|
@@ -112,7 +118,7 @@ function getLineChartAggregations(interactiveChartProperties: InteractiveChartTy
|
|
|
112
118
|
value={interactiveChartProperties.measure}
|
|
113
119
|
displayedValue={interactiveChartProperties.displayedValue}
|
|
114
120
|
color={interactiveChartProperties.color}
|
|
115
|
-
selected="{path: '$field>/conditions', formatter: '
|
|
121
|
+
selected="{path: '$field>/conditions', formatter: '._formatters.VisualFilterRuntime.getAggregationSelected.bind($control)'}"
|
|
116
122
|
/>
|
|
117
123
|
);
|
|
118
124
|
return lineChartAggregations;
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
value="{= ${Measure>$PropertyPath@@HELPER.getChartValue} }"
|
|
55
55
|
displayedValue="{parts:[ {path: 'Measure>$PropertyPath'}, {path: 'DataPoint>ValueFormat'}, {path: 'metaPath>@@MACRO.getPath'}], formatter: 'HELPER.getChartDisplayedValue'}"
|
|
56
56
|
color="{parts:[{path:'DataPoint>@@UI.getDataModelObjectPath'}, {path:'Dimension>'}], formatter: 'HELPER.getColorBinding'}"
|
|
57
|
-
selected="{path: '$field>/conditions', formatter: 'VisualFilterRuntime.getAggregationSelected
|
|
57
|
+
selected="{path: '$field>/conditions', formatter: 'VisualFilterRuntime.getAggregationSelected.bind($control)}"
|
|
58
58
|
/>
|
|
59
59
|
</segments>
|
|
60
60
|
</InteractiveDonutChart>
|