@sapui5/sap.fe.macros 1.141.2 → 1.143.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 +47 -36
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +50 -31
- 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/ConditionalSwitch.js +1 -2
- package/src/sap/fe/macros/ConditionalSwitch.tsx +0 -1
- package/src/sap/fe/macros/ConditionalSwitchProperty.js +1 -3
- package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +0 -2
- package/src/sap/fe/macros/Field.js +34 -17
- package/src/sap/fe/macros/Field.ts +64 -32
- package/src/sap/fe/macros/FooterContent.js +7 -3
- package/src/sap/fe/macros/FooterContent.tsx +8 -13
- package/src/sap/fe/macros/KPITag.js +6 -6
- package/src/sap/fe/macros/KPITag.tsx +8 -6
- package/src/sap/fe/macros/MacroAPI.js +4 -3
- package/src/sap/fe/macros/MacroAPI.ts +3 -3
- package/src/sap/fe/macros/MessageButton.js +4 -3
- package/src/sap/fe/macros/MessageButton.tsx +7 -3
- package/src/sap/fe/macros/MicroChart.js +12 -7
- package/src/sap/fe/macros/MicroChart.tsx +9 -3
- 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/Share.js +7 -7
- package/src/sap/fe/macros/Share.tsx +9 -6
- package/src/sap/fe/macros/Status.js +39 -11
- package/src/sap/fe/macros/Status.tsx +25 -5
- package/src/sap/fe/macros/ValueHelp.js +5 -2
- package/src/sap/fe/macros/ValueHelp.tsx +5 -0
- package/src/sap/fe/macros/ai/EasyFillDialog.js +2 -1
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +1 -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/ai/SummarizationButton.js +6 -4
- package/src/sap/fe/macros/ai/SummarizationButton.tsx +5 -3
- 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 +29 -8
- package/src/sap/fe/macros/chart/ChartDelegate.ts +46 -14
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +58 -12
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +75 -13
- 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/BuildingBlockObjectProperty.js +7 -7
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +3 -2
- package/src/sap/fe/macros/controls/FileWrapper.js +11 -5
- package/src/sap/fe/macros/controls/FileWrapper.ts +10 -4
- 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/NumberWithUnitOrCurrency.js +3 -1
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -0
- 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 +3 -3
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +2 -2
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +40 -12
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -9
- 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 +4 -4
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +2 -2
- 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 +44 -9
- package/src/sap/fe/macros/field/FieldRuntime.ts +72 -8
- 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 +130 -40
- package/src/sap/fe/macros/filter/FilterUtils.ts +167 -45
- 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 +15 -9
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +36 -17
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +21 -10
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +81 -63
- package/src/sap/fe/macros/filterBar/UOMValidationDelegate.js +376 -0
- package/src/sap/fe/macros/filterBar/UOMValidationDelegate.ts +463 -0
- 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 +110 -63
- package/src/sap/fe/macros/form/FormContainer.block.ts +121 -64
- 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/internal/valuehelp/ValueListHelper.js +2 -2
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +2 -1
- package/src/sap/fe/macros/library.js +5 -6
- package/src/sap/fe/macros/{library.ts → library.tsx} +3 -1
- 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 +13 -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 +13 -4
- 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/messages/MessageButton.js +21 -12
- package/src/sap/fe/macros/messages/MessageButton.ts +21 -11
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.js +7 -3
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.ts +8 -2
- package/src/sap/fe/macros/quickView/QuickView.js +5 -4
- package/src/sap/fe/macros/quickView/QuickView.tsx +10 -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 +21 -5
- package/src/sap/fe/macros/table/Action.ts +14 -4
- 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/Column.js +3 -2
- package/src/sap/fe/macros/table/Column.ts +1 -1
- package/src/sap/fe/macros/table/MdcTableTemplate.js +96 -18
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +136 -17
- 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 +74 -30
- package/src/sap/fe/macros/table/Table.block.tsx +77 -14
- package/src/sap/fe/macros/table/TableAPI.js +175 -132
- package/src/sap/fe/macros/table/TableAPI.ts +67 -30
- package/src/sap/fe/macros/table/TableDefinition.js +20 -3
- package/src/sap/fe/macros/table/TableDefinition.ts +18 -2
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +6 -3
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +12 -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 +25 -13
- package/src/sap/fe/macros/table/TableRuntime.ts +31 -17
- 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/Utils.js +9 -3
- package/src/sap/fe/macros/table/Utils.ts +14 -8
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +72 -29
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +114 -123
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +41 -15
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +41 -22
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +15 -6
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +14 -5
- 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/ContextMenuHandler.js +2 -3
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +3 -2
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +42 -14
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +49 -19
- 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/table/mixin/TableHierarchy.js +3 -4
- package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +2 -3
- package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.js +5 -4
- package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.ts +6 -3
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +17 -10
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +24 -9
- 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
|
@@ -238,13 +238,13 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
238
238
|
}
|
|
239
239
|
|
|
240
240
|
/**
|
|
241
|
-
* Add Export as Excel option to menu button.
|
|
241
|
+
* Add the Export as Excel option to the menu button.
|
|
242
242
|
* @param controller Page controller
|
|
243
243
|
* @param view The view this building block is used in
|
|
244
244
|
*/;
|
|
245
245
|
_proto._addExportExcelOptions = function _addExportExcelOptions(controller, view) {
|
|
246
246
|
const viewData = view.getViewData();
|
|
247
|
-
if (viewData?.share?.hasOwnProperty("exportToSpreadsheet") === true && viewData?.share?.
|
|
247
|
+
if (viewData?.share?.hasOwnProperty("exportToSpreadsheet") === true && viewData?.share?.exportToSpreadsheet?.hasOwnProperty("press") === true) {
|
|
248
248
|
this?.menu?.current?.addItem(_jsx(MenuItem, {
|
|
249
249
|
ref: this.exportToSpreadsheetMenuItem,
|
|
250
250
|
text: this.getTranslatedText("T_SHARE_CONTROL_EXPORT_AS_EXCEL"),
|
|
@@ -257,13 +257,13 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
257
257
|
}
|
|
258
258
|
|
|
259
259
|
/**
|
|
260
|
-
* Add Export as CSV option to menu button.
|
|
260
|
+
* Add the Export as CSV option to the menu button.
|
|
261
261
|
* @param controller Page controller
|
|
262
262
|
* @param view The view this building block is used in
|
|
263
263
|
*/;
|
|
264
264
|
_proto._addExportCSVOptions = function _addExportCSVOptions(controller, view) {
|
|
265
265
|
const viewData = view.getViewData();
|
|
266
|
-
if (viewData?.share?.hasOwnProperty("exportToCSV") === true && viewData?.share?.
|
|
266
|
+
if (viewData?.share?.hasOwnProperty("exportToCSV") === true && viewData?.share?.exportToCSV?.hasOwnProperty("press") === true) {
|
|
267
267
|
this?.menu?.current?.addItem(_jsx(MenuItem, {
|
|
268
268
|
ref: this.exportToCSVMenuItem,
|
|
269
269
|
text: this.getTranslatedText("T_SHARE_CONTROL_EXPORT_AS_CSV"),
|
|
@@ -276,13 +276,13 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
276
276
|
}
|
|
277
277
|
|
|
278
278
|
/**
|
|
279
|
-
* Add Export as PDF option to menu button.
|
|
279
|
+
* Add the Export as PDF option to the menu button.
|
|
280
280
|
* @param controller Page controller
|
|
281
281
|
* @param view The view this building block is used in
|
|
282
282
|
*/;
|
|
283
283
|
_proto._addExportPDFOptions = function _addExportPDFOptions(controller, view) {
|
|
284
284
|
const viewData = view.getViewData();
|
|
285
|
-
if (viewData?.share?.hasOwnProperty("exportToPDF") === true && viewData?.share?.
|
|
285
|
+
if (viewData?.share?.hasOwnProperty("exportToPDF") === true && viewData?.share?.exportToPDF?.hasOwnProperty("press") === true) {
|
|
286
286
|
this?.menu?.current?.addItem(_jsx(MenuItem, {
|
|
287
287
|
ref: this.exportToPDFMenuItem,
|
|
288
288
|
text: this.getTranslatedText("T_SHARE_CONTROL_EXPORT_AS_PDF"),
|
|
@@ -966,4 +966,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
966
966
|
_exports = Share;
|
|
967
967
|
return _exports;
|
|
968
968
|
}, false);
|
|
969
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlbnVtTVNUZWFtc09wdGlvbiIsIkNPTExBQk9SQVRJT05fTVNURUFNU19DQVJEIiwiQ09MTEFCT1JBVElPTl9NU1RFQU1TX1RBQiIsIkNPTExBQk9SQVRJT05fTVNURUFNU19DSEFUIiwiZW51bVNoYXJlT3B0aW9uIiwiU0VORF9FTUFJTCIsIlNIQVJFX0pBTSIsIlNBVkVfQVNfVElMRSIsIk1TX1RFQU1TX0dST1VQIiwiU0hBUkVfQ09MTEFCT1JBVElPTl9NQU5BR0VSIiwiU2hhcmUiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsIl9kZWMzIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiX2RlYzQiLCJhZ2dyZWdhdGlvbiIsImRlZmF1bHRDbGFzcyIsIlNoYXJlT3B0aW9ucyIsImlzRGVmYXVsdCIsIl9kZWM1IiwiZGVmYXVsdFZhbHVlIiwiT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHkiLCJIaWdoIiwiX2RlYzYiLCJNc1RlYW1zT3B0aW9ucyIsIl9kZWM3IiwiZGVmaW5lUmVmZXJlbmNlIiwiX2RlYzgiLCJfZGVjOSIsIl9kZWMxMCIsIl9kZWMxMSIsIl9kZWMxMiIsIl9kZWMxMyIsIl9kZWMxNCIsIl9kZWMxNSIsIl9kZWMxNiIsIl9kZWMxNyIsIl9kZWMxOCIsIl9kZWMxOSIsIl9kZWMyMCIsIl9kZWMyMSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsImlkT3JQcm9wcyIsInByb3BzIiwiX3RoaXMiLCJzaGFyZUFQSUlkIiwiaWQiLCJ1bmRlZmluZWQiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2Rlc2NyaXB0b3IxMiIsIl9kZXNjcmlwdG9yMTMiLCJfZGVzY3JpcHRvcjE0IiwiX2Rlc2NyaXB0b3IxNSIsIl9kZXNjcmlwdG9yMTYiLCJfZGVzY3JpcHRvcjE3IiwiX2Rlc2NyaXB0b3IxOCIsIl9kZXNjcmlwdG9yMTkiLCJfZGVzY3JpcHRvcjIwIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJfb3duZXJDb21wb25lbnQiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsImdldEFwcENvbXBvbmVudCIsIl9pbml0aWFsaXplTWVudUl0ZW1zIiwidmlldyIsImFwcENvbXBvbmVudCIsImlzVGVhbXNNb2RlQWN0aXZlIiwiZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJnZXRDYXBhYmlsaXRpZXMiLCJDb2xsYWJvcmF0aW9uIiwiZGVmYXVsdCIsIkNvbGxhYm9yYXRpb25IZWxwZXIiLCJfX3VpNV9yZXF1aXJlX2FzeW5jIiwibWVudUJ1dHRvbiIsImN1cnJlbnQiLCJ1bmJpbmRQcm9wZXJ0eSIsInNldFZpc2libGUiLCJjb250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsInNoZWxsU2VydmljZXMiLCJnZXRTaGVsbFNlcnZpY2VzIiwiaXNQbHVnaW5JbmZvU3RhYmxlIiwid2FpdEZvclBsdWdpbnNMb2FkIiwiaW50ZXJuYWxCdXR0b24iLCJnZXRBZ2dyZWdhdGlvbiIsImF0dGFjaEV2ZW50T25jZSIsIl9ibG9ja0ludGVybmFsQ29uZmlnIiwiX2dldFNoYXJlQmxvY2tDb25maWciLCJfYWRkTWVudUl0ZW1zIiwic2V0U2hhcmVPcHRpb25zVmlzaWJpbGl0eSIsIl9hZGRTZW5kRW1haWxPcHRpb24iLCJfYWRkU2hlbGxCYXNlZE1lbnVJdGVtcyIsIl9hZGRQcmludE9wdGlvbnMiLCJfYWRkRXhwb3J0RXhjZWxPcHRpb25zIiwiX2FkZEV4cG9ydENTVk9wdGlvbnMiLCJfYWRkRXhwb3J0UERGT3B0aW9ucyIsIl9jYWxsTWFuaWZlc3RBY3Rpb25zRXZlbnRzIiwic2hhcmVPcHRpb25Qcm9wIiwidmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsInNoYXJlQWN0aW9uUHJvcHMiLCJzaGFyZSIsIm1vZHVsZSIsInByZXNzIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJyZXBsYWNlIiwibWV0aG9kIiwibGVuZ3RoIiwiRlBNSGVscGVyIiwibG9hZE1vZHVsZUFuZENhbGxNZXRob2QiLCJMb2ciLCJlcnJvciIsImhhc093blByb3BlcnR5IiwicHJpbnQiLCJtZW51IiwiYWRkSXRlbSIsIl9qc3giLCJNZW51SXRlbSIsInJlZiIsInByaW50TWVudUl0ZW0iLCJ0ZXh0IiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJpY29uIiwiUFJJTlRfSUNPTiIsImV4cG9ydFRvU3ByZWFkc2hlZXRNZW51SXRlbSIsIkVYUE9SVF9UT19TUFJFQURTSEVFVF9JQ09OIiwiZXhwb3J0VG9DU1ZNZW51SXRlbSIsIkVYUE9SVF9UT19DU1ZfSUNPTiIsImV4cG9ydFRvUERGTWVudUl0ZW0iLCJFWFBPUlRfVE9fUERGX0lDT04iLCJzaGFyZU9wdGlvbnMiLCJzaG93U2VuZEVtYWlsIiwic2VuZEVtYWlsTWVudUl0ZW0iLCJfdHJpZ2dlckVtYWlsIiwiaGFzVXNoZWxsIiwiaGFzVVNoZWxsIiwiX2FkZFNoYXJlVmlhSkFNT3B0aW9uIiwiX2FkZE1TVGVhbXNPcHRpb25zIiwiX2FkZENvbGxhYm9yYXRpb25NYW5hZ2VyT3B0aW9uIiwiX2FkZFNhdmVBc1RpbGVPcHRpb24iLCJjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlIiwiZ2V0Q29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSIsImNvbGxhYm9yYXRpb25PcHRpb24iLCJnZXRDb2xsYWJvcmF0aW9uTWFuYWdlck9wdGlvbiIsInNob3dDb2xsYWJvcmF0aW9uTWFuYWdlciIsIm1lbnVJdGVtIiwic2hhcmVBc0NvbGxhYm9yYXRpb25NYW5hZ2VyIiwiZXZlbnQiLCJfY29sbGFib3JhdGlvbk1hbmFnZXJCdXR0b25QcmVzcyIsIkZFU1JIZWxwZXIiLCJzZXRTZW1hbnRpY1N0ZXBuYW1lIiwiZmVzclN0ZXBOYW1lIiwiZXJyIiwibWVzc2FnZSIsIkVycm9yIiwiU3RyaW5nIiwiY29sbGFib3JhdGlvbkNhbGxCYWNrIiwiY2xpY2tlZE1lbnVJdGVtIiwiZ2V0U291cmNlIiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3IiwiX2FkYXB0U2hhcmVNZXRhZGF0YSIsInNoYXJlSW5mb01vZGVsIiwiZ2V0TW9kZWwiLCJzaGFyZUluZm8iLCJnZXREYXRhIiwiY29sbGFib3JhdGlvbkluZm8iLCJhcHBUaXRsZSIsInVybCIsImhhc0phbSIsImlzSmFtQWN0aXZlIiwic2hhcmVWaWFKQU1NZW51SXRlbSIsIl90cmlnZ2VyU2hhcmVUb0phbSIsInNob3dNc1RlYW1zT3B0aW9ucyIsInNoYXJlQ29sbGFib3JhdGlvbk9wdGlvbnMiLCJnZXRUZWFtc0NvbGxhYk9wdGlvbnNWaWFTaGFyZSIsImlzU2hhcmVBc0NhcmRFbmFibGVkIiwiX2dldElzU2hhcmVBc0NhcmRFbmFibGVkIiwibWVudUl0ZW1TZXR0aW5ncyIsIl9nZXRNc1RlYW1zTWVudUl0ZW1TZXR0aW5ncyIsInN1Yk9wdGlvbnMiLCJpdGVtcyIsIm1lbnVJdGVtS2V5IiwiQXJyYXkiLCJpc0FycmF5Iiwia2V5IiwiX2FkZE1zVGVhbXNNZW51SXRlbSIsIkFkZEJvb2ttYXJrQnV0dG9uIiwiYWRkQm9va21hcmtCdXR0b24iLCJnZXRFbmFibGVkIiwic2F2ZUFzVGlsZU1lbnVJdGVtIiwiZ2V0VGV4dCIsImdldEljb24iLCJfc2F2ZUFzVGlsZSIsImNoaWxkcmVuIiwiZGVwZW5kZW50cyIsImRlc3Ryb3kiLCJzaG93U2hhcmVBc0NhcmQiLCJtc1RlYW1zT3B0aW9ucyIsImVuYWJsZUNhcmQiLCJCb29sZWFuIiwiQmluZGluZ0luZm8iLCJwYXJzZSIsIl9nZXRNc1RlYW1zU3ViT3B0aW9ucyIsImNvbGxhYm9yYXRpb25NZW51SXRlbVByZXNzIiwiQ3VzdG9tRGF0YSIsInZhbHVlIiwiX2dldE1lbnVJdGVtUmVmZXJlbmNlIiwiY3VzdG9tRGF0YSIsImF0dGFjaFByZXNzIiwicmVkdWNlIiwibWVudUl0ZW1zIiwic3ViT3B0aW9uIiwic3ViTWVudUl0ZW0iLCJjb2xsYWJvcmF0aW9uRGF0YSIsImRhdGEiLCJ0ZWFtc0hlbHBlclNlcnZpY2UiLCJnZXRDb2xsYWJvcmF0aW9uU2VydmljZXMiLCJvVGVhbXNIZWxwZXJTZXJ2aWNlIiwiaXNGZWF0dXJlRmxhZ0VuYWJsZWQiLCJjYXJkRGVmaW5pdGlvbiIsImdldENhcmREZWZpbml0aW9uIiwiY2FyZElkIiwic2hlbGxTZXJ2aWNlSGVscGVyIiwic2VtYW50aWNPYmplY3QiLCJhY3Rpb24iLCJwYXJzZVNoZWxsSGFzaCIsImRvY3VtZW50IiwibG9jYXRpb24iLCJoYXNoIiwicmVhc29uIiwiaW5mbyIsIm9wdGlvbktleXMiLCJPYmplY3QiLCJrZXlzIiwidmlzaWJsZUJpbmRpbmdFeHBzIiwiYmluZGluZ1Rvb2xraXRFeHBzIiwib3B0aW9uIiwiZXhwIiwiX2dldFNoYXJlT3B0aW9uVmlzaWJpbGl0eUV4cHJlc3Npb24iLCJfc2V0U2hhcmVPcHRpb25WaXNpYmlsaXR5Iiwic2hhcmVCbG9ja1Zpc2libGVFeHAiLCJvciIsImNtZEV4ZWN1dGlvbiIsIl9iaW5kVUlWaXNpYmlsaXR5Iiwic2hhcmVBc0NhcmRNZW51SXRlbSIsInNoYXJlVmlhQ2hhdE1lbnVJdGVtIiwic2hhcmVBc1RhYk1lbnVJdGVtIiwibXNUZWFtc0dyb3VwTWVudUl0ZW0iLCJvcHRpb25NZW51SXRlbVJlZiIsImNvbnN0YW50IiwiX2dldE1TVGVhbXNTaGFyZU9wdGlvblZpc2liaWxpdHkiLCJfZ2V0Q29sbGFib3JhdGlvbk9wdGlvbkV4cHJlc3Npb24iLCJyZXNvbHZlQmluZGluZ1N0cmluZyIsImludGVybmFsT3B0aW9uIiwiaXNDb25zdGFudCIsImFuZCIsIm1zVGVhbXNDb25maWdFeHAiLCJfZ2V0U2hvd01zVGVhbXNPcHRpb25zRXhwcmVzc2lvbiIsIm1zVGVhbXNPcHRpb25zVmFsdWUiLCJhbGxNU1RlYW1zT3B0aW9uc0V4cHMiLCJiaW5kaW5nVG9vbGtpdEV4cCIsIm1zVGVhbXNPcHRpb24iLCJtc1RlYW1PcHRpb25FeHAiLCJvcHRpb25FeHAiLCJpbnRlcm5hbE9wdGlvbkV4cCIsIl9nZXRTaGFyZUFzQ2FyZFZpc2liaWxpdHkiLCJzaGFyZUFzQ2FyZE9wdGlvblJlZiIsImV4cFNob3dNU1RlYW1zT3B0aW9ucyIsImV4cFNob3dTaGFyZUFzQ2FyZCIsIm5vdCIsIlVJIiwiSXNFZGl0YWJsZSIsIm1zVGVhbXNPcHRpb25SZWYiLCJleHByZXNzaW9uIiwibWVudUl0ZW1SZWYiLCJpdGVtIiwiY29tcGlsZWRFeHAiLCJjb21waWxlRXhwcmVzc2lvbiIsInN0YXJ0c1dpdGgiLCJlbmRzV2l0aCIsInBhcnNlZEV4cCIsImJpbmRQcm9wZXJ0eSIsInZpZXdTaGFyZUNvbmZpZ3MiLCJmZUFwcFNoYXJlQ29uZmlncyIsImdldE1hbmlmZXN0RW50cnkiLCJhcHAiLCJfZ2V0T3B0aW9uQmxvY2tDb25maWciLCJ0ZWFtcyIsImFzQ2FyZCIsImZlQXBwU2V0dGluZyIsInZpZXdMZXZlbFNldHRpbmciLCJmZUFwcEV4cCIsInZpZXdMZXZlbEV4cCIsIlNoYXJlQVBJIiwiT3ZlcmZsb3dUb29sYmFyTWVudUJ1dHRvbiIsInRvb2x0aXAiLCJNZW51IiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJnZXRWaWV3IiwiYWRkRGVwZW5kZW50IiwiQ29tbWFuZEV4ZWN1dGlvbiIsImNvbW1hbmQiLCJleGVjdXRlIiwiZ2V0TWVudSIsIm9wZW5CeSIsImlzSW5pdGlhbGl6ZWQiLCJjYXRjaCIsInNldExheW91dERhdGEiLCJPdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhIiwicHJpb3JpdHkiLCJnZXRPdmVyZmxvd1Rvb2xiYXJDb25maWciLCJjYW5PdmVyZmxvdyIsIm9uQmVmb3JlRW50ZXJPdmVyZmxvdyIsIm9Db250cm9sIiwiZ2V0Q29udGVudCIsInJlc291cmNlTW9kZWwiLCJnZXRSZXNvdXJjZU1vZGVsIiwib25BZnRlckV4aXRPdmVyZmxvdyIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlNoYXJlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgRW1iZWRkZWRVSTVCaW5kaW5nRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgYW5kLCBjb21waWxlRXhwcmVzc2lvbiwgY29uc3RhbnQsIGlzQ29uc3RhbnQsIG5vdCwgb3IsIHJlc29sdmVCaW5kaW5nU3RyaW5nIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVSZWZlcmVuY2UsIGRlZmluZVVJNUNsYXNzLCBpbXBsZW1lbnRJbnRlcmZhY2UsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQ29tbWFuZEV4ZWN1dGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvQ29tbWFuZEV4ZWN1dGlvblwiO1xuaW1wb3J0IHsgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IElTaGVsbFNlcnZpY2VzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NoZWxsU2VydmljZXNGYWN0b3J5XCI7XG5pbXBvcnQgTWVudSBmcm9tIFwic2FwL20vTWVudVwiO1xuaW1wb3J0IHR5cGUgTWVudUJ1dHRvbiBmcm9tIFwic2FwL20vTWVudUJ1dHRvblwiO1xuaW1wb3J0IHR5cGUgeyAkTWVudUl0ZW1TZXR0aW5ncyB9IGZyb20gXCJzYXAvbS9NZW51SXRlbVwiO1xuaW1wb3J0IE1lbnVJdGVtIGZyb20gXCJzYXAvbS9NZW51SXRlbVwiO1xuaW1wb3J0IHR5cGUgeyBDb2xsYWJvcmF0aW9uT3B0aW9uS2V5LCBDb2xsYWJvcmF0aW9uT3B0aW9ucyB9IGZyb20gXCJzYXAvc3VpdGUvdWkvY29tbW9ucy9jb2xsYWJvcmF0aW9uL1RlYW1zSGVscGVyU2VydmljZVwiO1xuaW1wb3J0IHR5cGUgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgQ3VzdG9tRGF0YSBmcm9tIFwic2FwL3VpL2NvcmUvQ3VzdG9tRGF0YVwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgRkVTUkhlbHBlciBmcm9tIFwic2FwL3VpL3BlcmZvcm1hbmNlL3RyYWNlL0ZFU1JIZWxwZXJcIjtcblxuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHtcblx0RVhQT1JUX1RPX0NTVl9JQ09OLFxuXHRFWFBPUlRfVE9fUERGX0lDT04sXG5cdEVYUE9SVF9UT19TUFJFQURTSEVFVF9JQ09OLFxuXHRQUklOVF9JQ09OXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9BY3Rpb25cIjtcbmltcG9ydCBGUE1IZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvRlBNSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRSZXNvdXJjZU1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUmVzb3VyY2VNb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBWaWV3RGF0YSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9UZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBTaGFyZU9wdGlvbnMgZnJvbSBcInNhcC9mZS9tYWNyb3Mvc2hhcmUvU2hhcmVPcHRpb25zXCI7XG5pbXBvcnQgT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YSBmcm9tIFwic2FwL20vT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YVwiO1xuaW1wb3J0IE92ZXJmbG93VG9vbGJhck1lbnVCdXR0b24gZnJvbSBcInNhcC9tL092ZXJmbG93VG9vbGJhck1lbnVCdXR0b25cIjtcbmltcG9ydCB7IE92ZXJmbG93VG9vbGJhclByaW9yaXR5IH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCBCaW5kaW5nSW5mbyBmcm9tIFwic2FwL3VpL2Jhc2UvQmluZGluZ0luZm9cIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgTXNUZWFtc09wdGlvbnMgZnJvbSBcIi4vc2hhcmUvTXNUZWFtc09wdGlvbnNcIjtcbmltcG9ydCBTaGFyZUFQSSBmcm9tIFwiLi9zaGFyZS9TaGFyZUFQSVwiO1xuXG4vLyBNUyBUZWFtcyBvcHRpb25zIGFyZSBub3QgcHVibGljIHZpYSBTaGFyZSBidWlsZGluZyBibG9jay5cbi8vIFNvLCAnc2hvd01zVGVhbXNPcHRpb25zJyBpcyBpbnRlcm5hbCBhbmQgc2hhbGwgYmUgb25seSBwaWNrZWQgZnJvbSB0ZW1wbGF0ZSBtYW5pZmVzdC5cbnR5cGUgSW50ZXJuYWxTaGFyZU9wdGlvbnMgPSBQcm9wZXJ0aWVzT2Y8U2hhcmVPcHRpb25zPjtcblxudHlwZSBTaGFyZU9wdGlvbktleSA9XG5cdHwgQ29sbGFib3JhdGlvbk9wdGlvbktleVxuXHR8IFwiU0VORF9FTUFJTFwiXG5cdHwgXCJTSEFSRV9KQU1cIlxuXHR8IFwiU0FWRV9BU19USUxFXCJcblx0fCBcIk1TX1RFQU1TX0dST1VQXCJcblx0fCBcIlNIQVJFX0NPTExBQk9SQVRJT05fTUFOQUdFUlwiO1xuXG5jb25zdCBlbnVtTVNUZWFtc09wdGlvbjoge1xuXHRba2V5IGluIENvbGxhYm9yYXRpb25PcHRpb25LZXldOiBDb2xsYWJvcmF0aW9uT3B0aW9uS2V5O1xufSA9IHtcblx0Q09MTEFCT1JBVElPTl9NU1RFQU1TX0NBUkQ6IFwiQ09MTEFCT1JBVElPTl9NU1RFQU1TX0NBUkRcIixcblx0Q09MTEFCT1JBVElPTl9NU1RFQU1TX1RBQjogXCJDT0xMQUJPUkFUSU9OX01TVEVBTVNfVEFCXCIsXG5cdENPTExBQk9SQVRJT05fTVNURUFNU19DSEFUOiBcIkNPTExBQk9SQVRJT05fTVNURUFNU19DSEFUXCJcbn07XG5cbmNvbnN0IGVudW1TaGFyZU9wdGlvbjoge1xuXHRba2V5IGluIFNoYXJlT3B0aW9uS2V5XTogU2hhcmVPcHRpb25LZXk7XG59ID0ge1xuXHQuLi5lbnVtTVNUZWFtc09wdGlvbixcblx0Li4ue1xuXHRcdFNFTkRfRU1BSUw6IFwiU0VORF9FTUFJTFwiLFxuXHRcdFNIQVJFX0pBTTogXCJTSEFSRV9KQU1cIixcblx0XHRTQVZFX0FTX1RJTEU6IFwiU0FWRV9BU19USUxFXCIsXG5cdFx0TVNfVEVBTVNfR1JPVVA6IFwiTVNfVEVBTVNfR1JPVVBcIixcblx0XHRTSEFSRV9DT0xMQUJPUkFUSU9OX01BTkFHRVI6IFwiU0hBUkVfQ09MTEFCT1JBVElPTl9NQU5BR0VSXCJcblx0fVxufTtcblxudHlwZSBDb25maWdPcHRpb25zID0gSW50ZXJuYWxTaGFyZU9wdGlvbnMgJiBQcm9wZXJ0aWVzT2Y8TXNUZWFtc09wdGlvbnM+O1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIHVzZWQgdG8gY3JlYXRlIHRoZSDigJhTaGFyZeKAmSBmdW5jdGlvbmFsaXR5LlxuICogPGJyPlxuICogUGxlYXNlIG5vdGUgdGhhdCB0aGUgJ1NoYXJlIGluIFNBUCBKYW0nIG9wdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBwbGF0Zm9ybXMgdGhhdCBhcmUgaW50ZWdyYXRlZCB3aXRoIFNBUCBKYW0uXG4gKiA8YnI+XG4gKiBJZiB5b3UgYXJlIGNvbnN1bWluZyB0aGlzIG1hY3JvIGluIGFuIGVudmlyb25tZW50IHdoZXJlIHRoZSBTQVAgRmlvcmkgbGF1bmNocGFkIGlzIG5vdCBhdmFpbGFibGUsIHRoZW4gdGhlICdTYXZlIGFzIFRpbGUnIG9wdGlvbiBpcyBub3QgdmlzaWJsZS5cbiAqXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm9zOlNoYXJlXG4gKiBpZD1cInNvbWVJRFwiXG4gKiB2aXNpYmxlPVwidHJ1ZVwiXG4gKiAvJmd0O1xuICogPC9wcmU+XG4gKiB7QGxpbmsgZGVtbzpzYXAvZmUvY29yZS9mcG1FeHBsb3Jlci9pbmRleC5odG1sIy9idWlsZGluZ0Jsb2Nrcy9mZWF0dXJlcy9zaGFyZURlZmF1bHQgT3ZlcnZpZXcgb2YgQnVpbGRpbmcgQmxvY2tzfVxuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHB1YmxpY1xuICogQHNpbmNlIDEuOTMuMFxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLlNoYXJlXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaGFyZSBleHRlbmRzIEJ1aWxkaW5nQmxvY2s8U2hhcmVBUEk+IHtcblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRwdWJsaWMgc2hhcmVBUElJZD86IHN0cmluZztcblxuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLm0uSU92ZXJmbG93VG9vbGJhckNvbnRlbnRcIilcblx0X19pbXBsZW1lbnRzX19zYXBfbV9JT3ZlcmZsb3dUb29sYmFyQ29udGVudCA9IHRydWU7XG5cblx0LyoqXG5cdCAqIFN1cHBvcnRlZCBTaGFyZSBvcHRpb25zIHtAbGluayBzYXAuZmUubWFjcm9zLnNoYXJlLlNoYXJlT3B0aW9uc30uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBhZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnNoYXJlLlNoYXJlT3B0aW9uc1wiLFxuXHRcdGRlZmF1bHRDbGFzczogU2hhcmVPcHRpb25zLFxuXHRcdGlzRGVmYXVsdDogdHJ1ZVxuXHR9KVxuXHRwdWJsaWMgc2hhcmVPcHRpb25zPzogU2hhcmVPcHRpb25zO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRkZWZhdWx0VmFsdWU6IE92ZXJmbG93VG9vbGJhclByaW9yaXR5LkhpZ2hcblx0fSlcblx0cHJpb3JpdHk/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFN1cHBvcnRlZCBNaWNyb3NvZnQgVGVhbXMgb3B0aW9ucy5cblx0ICovXG5cdEBhZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnNoYXJlLk1zVGVhbXNPcHRpb25zXCIsXG5cdFx0ZGVmYXVsdENsYXNzOiBNc1RlYW1zT3B0aW9uc1xuXHR9KVxuXHRwdWJsaWMgbXNUZWFtc09wdGlvbnM/OiBNc1RlYW1zT3B0aW9ucztcblxuXHRAZGVmaW5lUmVmZXJlbmNlKClcblx0bWVudUJ1dHRvbiE6IFJlZjxNZW51QnV0dG9uPjtcblxuXHRAZGVmaW5lUmVmZXJlbmNlKClcblx0Y21kRXhlY3V0aW9uITogUmVmPENvbW1hbmRFeGVjdXRpb24+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRtZW51ITogUmVmPE1lbnU+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRzYXZlQXNUaWxlTWVudUl0ZW0hOiBSZWY8TWVudUl0ZW0+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRzaGFyZUFzQ29sbGFib3JhdGlvbk1hbmFnZXIhOiBSZWY8TWVudUl0ZW0+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRzaGFyZVZpYUpBTU1lbnVJdGVtITogUmVmPE1lbnVJdGVtPjtcblxuXHRAZGVmaW5lUmVmZXJlbmNlKClcblx0c2VuZEVtYWlsTWVudUl0ZW0hOiBSZWY8TWVudUl0ZW0+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRzaGFyZUFzQ2FyZE1lbnVJdGVtITogUmVmPE1lbnVJdGVtPjtcblxuXHRAZGVmaW5lUmVmZXJlbmNlKClcblx0c2hhcmVWaWFDaGF0TWVudUl0ZW0hOiBSZWY8TWVudUl0ZW0+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRzaGFyZUFzVGFiTWVudUl0ZW0hOiBSZWY8TWVudUl0ZW0+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRtc1RlYW1zR3JvdXBNZW51SXRlbSE6IFJlZjxNZW51SXRlbT47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdHByaW50TWVudUl0ZW0hOiBSZWY8TWVudUl0ZW0+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRleHBvcnRUb1NwcmVhZHNoZWV0TWVudUl0ZW0hOiBSZWY8TWVudUl0ZW0+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRleHBvcnRUb1BERk1lbnVJdGVtITogUmVmPE1lbnVJdGVtPjtcblxuXHRAZGVmaW5lUmVmZXJlbmNlKClcblx0ZXhwb3J0VG9DU1ZNZW51SXRlbSE6IFJlZjxNZW51SXRlbT47XG5cblx0cHVibGljIGlzSW5pdGlhbGl6ZWQ/OiBQcm9taXNlPHZvaWQ+O1xuXG5cdHByaXZhdGUgX2Jsb2NrSW50ZXJuYWxDb25maWchOiBDb25maWdPcHRpb25zO1xuXG5cdGNvbnN0cnVjdG9yKGlkT3JQcm9wczogc3RyaW5nIHwgKFByb3BlcnRpZXNPZjxTaGFyZT4gJiAkQ29udHJvbFNldHRpbmdzKSwgcHJvcHM/OiBQcm9wZXJ0aWVzT2Y8U2hhcmU+ICYgJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdGxldCBzaGFyZUFQSUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKHR5cGVvZiBpZE9yUHJvcHMgIT09IFwic3RyaW5nXCIpIHtcblx0XHRcdHByb3BzID0gaWRPclByb3BzO1xuXHRcdFx0c2hhcmVBUElJZCA9IHByb3BzLmlkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzaGFyZUFQSUlkID0gaWRPclByb3BzO1xuXHRcdH1cblx0XHRwcm9wcyA/Pz0ge307XG5cdFx0cHJvcHMuc2hhcmVBUElJZCA9IHNoYXJlQVBJSWQ7XG5cdFx0cHJvcHMuaWQgPSB1bmRlZmluZWQ7XG5cdFx0c3VwZXIodW5kZWZpbmVkLCBwcm9wcyk7XG5cdH1cblxuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKF9vd25lckNvbXBvbmVudDogVGVtcGxhdGVDb21wb25lbnQpOiB2b2lkIHtcblx0XHRzdXBlci5vbk1ldGFkYXRhQXZhaWxhYmxlKF9vd25lckNvbXBvbmVudCk7XG5cdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KF9vd25lckNvbXBvbmVudC5nZXRBcHBDb21wb25lbnQoKSk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBzaGFyZSBvcHRpb24gZnJvbSB0aGUgc2hlbGwgY29uZmlndXJhdGlvbiBhc3luY2hyb25vdXNseSBhbmQgcHJlcGFyZSB0aGUgY29udGVudCBvZiB0aGUgbWVudSBidXR0b24uXG5cdCAqIE9wdGlvbnMgb3JkZXIgYXJlOlxuXHQgKiAtIFNlbmQgYXMgRW1haWxcblx0ICogLSBTaGFyZSBhcyBKYW0gKGlmIGF2YWlsYWJsZSlcblx0ICogLSBUZWFtcyBvcHRpb25zIChpZiBhdmFpbGFibGUpXG5cdCAqIC0gU2F2ZSBhcyB0aWxlLlxuXHQgKiBAcGFyYW0gdmlldyBUaGUgdmlldyB0aGlzIGJ1aWxkaW5nIGJsb2NrIGlzIHVzZWQgaW5cblx0ICogQHBhcmFtIGFwcENvbXBvbmVudCBUaGUgQXBwQ29tcG9uZW50IGluc3RhbmNlXG5cdCAqL1xuXHRhc3luYyBfaW5pdGlhbGl6ZU1lbnVJdGVtcyh2aWV3OiBWaWV3LCBhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGxldCBpc1RlYW1zTW9kZUFjdGl2ZSA9IGZhbHNlO1xuXHRcdGlmIChhcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5Db2xsYWJvcmF0aW9uKSB7XG5cdFx0XHRjb25zdCB7IGRlZmF1bHQ6IENvbGxhYm9yYXRpb25IZWxwZXIgfSA9IGF3YWl0IGltcG9ydChcInNhcC9zdWl0ZS91aS9jb21tb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkhlbHBlclwiKTtcblx0XHRcdGlzVGVhbXNNb2RlQWN0aXZlID0gYXdhaXQgQ29sbGFib3JhdGlvbkhlbHBlci5pc1RlYW1zTW9kZUFjdGl2ZSgpO1xuXHRcdH1cblxuXHRcdGlmIChpc1RlYW1zTW9kZUFjdGl2ZSkge1xuXHRcdFx0Ly9uZWVkIHRvIGNsZWFyIHRoZSB2aXNpYmxlIHByb3BlcnR5IGJpbmRpbmdzIG90aGVyd2lzZSB3aGVuIHRoZSBiaW5kaW5nIHZhbHVlIGNoYW5nZXMgdGhlbiBpdCB3aWxsIHNldCBiYWNrIHRoZSB2aXNpYmxlIHRvIHRoZSByZXNvbHZlZCB2YWx1ZVxuXHRcdFx0dGhpcy5tZW51QnV0dG9uLmN1cnJlbnQ/LnVuYmluZFByb3BlcnR5KFwidmlzaWJsZVwiLCB0cnVlKTtcblx0XHRcdHRoaXMubWVudUJ1dHRvbi5jdXJyZW50Py5zZXRWaXNpYmxlKGZhbHNlKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgY29udHJvbGxlciA9IHZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyO1xuXHRcdGNvbnN0IHNoZWxsU2VydmljZXMgPSBhcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpO1xuXHRcdGNvbnN0IGlzUGx1Z2luSW5mb1N0YWJsZSA9IGF3YWl0IHNoZWxsU2VydmljZXMud2FpdEZvclBsdWdpbnNMb2FkKCk7XG5cdFx0aWYgKCFpc1BsdWdpbkluZm9TdGFibGUpIHtcblx0XHRcdC8vIEluIGNhc2UgdGhlIHBsdWdpbiBpbmZvIGlzIG5vdCB5ZXQgYXZhaWxhYmxlIHdlIG5lZWQgdG8gZG8gdGhpcyBjb21wdXRhdGlvbiBhZ2FpbiBvbiB0aGUgbmV4dCBidXR0b24gY2xpY2tcblx0XHRcdGNvbnN0IGludGVybmFsQnV0dG9uID0gdGhpcy5tZW51QnV0dG9uLmN1cnJlbnQ/LmdldEFnZ3JlZ2F0aW9uKFwiX2NvbnRyb2xcIikgYXMgTWFuYWdlZE9iamVjdDtcblx0XHRcdGludGVybmFsQnV0dG9uPy5hdHRhY2hFdmVudE9uY2UoXCJwcmVzc1wiLCB7fSwgKCkgPT4gdGhpcy5faW5pdGlhbGl6ZU1lbnVJdGVtcywgdGhpcyk7XG5cdFx0fVxuXG5cdFx0dGhpcy5fYmxvY2tJbnRlcm5hbENvbmZpZyA9IHRoaXMuX2dldFNoYXJlQmxvY2tDb25maWcodmlldyk7XG5cblx0XHRhd2FpdCB0aGlzLl9hZGRNZW51SXRlbXMoY29udHJvbGxlciwgc2hlbGxTZXJ2aWNlcywgdmlldyk7XG5cdFx0dGhpcy5zZXRTaGFyZU9wdGlvbnNWaXNpYmlsaXR5KCk7XG5cdH1cblxuXHQvKipcblx0ICogQWRkIHNoYXJlIG9wdGlvbnMgYXMgbWVudSBpdGVtcyB0byB0aGUgc2hhcmUgYnV0dG9uLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBQYWdlIGNvbnRyb2xsZXJcblx0ICogQHBhcmFtIHNoZWxsU2VydmljZXMgU2hlbGwgU2VydmljZXNcblx0ICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhpcyBidWlsZGluZyBibG9jayBpcyB1c2VkIGluXG5cdCAqL1xuXHRhc3luYyBfYWRkTWVudUl0ZW1zKGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCBzaGVsbFNlcnZpY2VzOiBJU2hlbGxTZXJ2aWNlcywgdmlldzogVmlldyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRoaXMuX2FkZFNlbmRFbWFpbE9wdGlvbihjb250cm9sbGVyKTtcblx0XHRhd2FpdCB0aGlzLl9hZGRTaGVsbEJhc2VkTWVudUl0ZW1zKGNvbnRyb2xsZXIsIHNoZWxsU2VydmljZXMpO1xuXHRcdHRoaXMuX2FkZFByaW50T3B0aW9ucyhjb250cm9sbGVyLCB2aWV3KTtcblx0XHR0aGlzLl9hZGRFeHBvcnRFeGNlbE9wdGlvbnMoY29udHJvbGxlciwgdmlldyk7XG5cdFx0dGhpcy5fYWRkRXhwb3J0Q1NWT3B0aW9ucyhjb250cm9sbGVyLCB2aWV3KTtcblx0XHR0aGlzLl9hZGRFeHBvcnRQREZPcHRpb25zKGNvbnRyb2xsZXIsIHZpZXcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENhbGwgdGhlIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGN1c3RvbSBoYW5kbGVycy5cblx0ICogQHBhcmFtIGNvbnRyb2xsZXIgUGFnZSBjb250cm9sbGVyXG5cdCAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoaXMgYnVpbGRpbmcgYmxvY2sgaXMgdXNlZCBpblxuXHQgKiBAcGFyYW0gc2hhcmVPcHRpb25Qcm9wIFRoZSBrZXkgb2YgdGhlIGFjdGlvbiB5b3Ugd2FudCB0byBjYWxsXG5cdCAqL1xuXHRfY2FsbE1hbmlmZXN0QWN0aW9uc0V2ZW50cyhcblx0XHRjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcixcblx0XHR2aWV3OiBWaWV3LFxuXHRcdHNoYXJlT3B0aW9uUHJvcDogXCJwcmludFwiIHwgXCJleHBvcnRUb0NTVlwiIHwgXCJleHBvcnRUb1NwcmVhZHNoZWV0XCIgfCBcImV4cG9ydFRvUERGXCJcblx0KTogdm9pZCB7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSB2aWV3LmdldFZpZXdEYXRhKCkgYXMgVmlld0RhdGE7XG5cdFx0Y29uc3Qgc2hhcmVBY3Rpb25Qcm9wcyA9IHZpZXdEYXRhPy5zaGFyZT8uW3NoYXJlT3B0aW9uUHJvcF07XG5cdFx0Y29uc3QgbW9kdWxlID0gc2hhcmVBY3Rpb25Qcm9wcz8ucHJlc3M/LnN1YnN0cmluZygwLCBzaGFyZUFjdGlvblByb3BzPy5wcmVzcz8ubGFzdEluZGV4T2YoXCIuXCIpKS5yZXBsYWNlKC9cXC4vZ2ksIFwiL1wiKTtcblx0XHRjb25zdCBtZXRob2QgPSBzaGFyZUFjdGlvblByb3BzPy5wcmVzcz8uc3Vic3RyaW5nKHNoYXJlQWN0aW9uUHJvcHM/LnByZXNzPy5sYXN0SW5kZXhPZihcIi5cIikgKyAxLCBzaGFyZUFjdGlvblByb3BzPy5wcmVzcz8ubGVuZ3RoKTtcblxuXHRcdGlmIChtb2R1bGUgJiYgbWV0aG9kKSB7XG5cdFx0XHRGUE1IZWxwZXIubG9hZE1vZHVsZUFuZENhbGxNZXRob2QobW9kdWxlLCBtZXRob2QsIHZpZXcsIGNvbnRyb2xsZXIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJGYWlsZWQgdG8gY2FsbCBldmVudCBoYW5kbGVyLCBNb2R1bGUgYW5kL29yIE1ldGhvZCBpcyBub3Qgc2V0IHByb3Blcmx5XCIpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgcHJpbnQgb3B0aW9uIHRvIG1lbnUgYnV0dG9uLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBQYWdlIGNvbnRyb2xsZXJcblx0ICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhpcyBidWlsZGluZyBibG9jayBpcyB1c2VkIGluXG5cdCAqL1xuXHRfYWRkUHJpbnRPcHRpb25zKGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCB2aWV3OiBWaWV3KTogdm9pZCB7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSB2aWV3LmdldFZpZXdEYXRhKCkgYXMgVmlld0RhdGE7XG5cdFx0aWYgKHZpZXdEYXRhPy5zaGFyZT8uaGFzT3duUHJvcGVydHkoXCJwcmludFwiKSA9PT0gdHJ1ZSAmJiB2aWV3RGF0YT8uc2hhcmU/LnByaW50Py5oYXNPd25Qcm9wZXJ0eShcInByZXNzXCIpID09PSB0cnVlKSB7XG5cdFx0XHR0aGlzPy5tZW51Py5jdXJyZW50Py5hZGRJdGVtKFxuXHRcdFx0XHQ8TWVudUl0ZW1cblx0XHRcdFx0XHRyZWY9e3RoaXMucHJpbnRNZW51SXRlbX1cblx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9TSEFSRV9DT05UUk9MX1BSSU5UXCIpfVxuXHRcdFx0XHRcdGljb249e1BSSU5UX0lDT059XG5cdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuX2NhbGxNYW5pZmVzdEFjdGlvbnNFdmVudHMoY29udHJvbGxlciwgdmlldywgXCJwcmludFwiKTtcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQWRkIEV4cG9ydCBhcyBFeGNlbCBvcHRpb24gdG8gbWVudSBidXR0b24uXG5cdCAqIEBwYXJhbSBjb250cm9sbGVyIFBhZ2UgY29udHJvbGxlclxuXHQgKiBAcGFyYW0gdmlldyBUaGUgdmlldyB0aGlzIGJ1aWxkaW5nIGJsb2NrIGlzIHVzZWQgaW5cblx0ICovXG5cdF9hZGRFeHBvcnRFeGNlbE9wdGlvbnMoY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsIHZpZXc6IFZpZXcpOiB2b2lkIHtcblx0XHRjb25zdCB2aWV3RGF0YSA9IHZpZXcuZ2V0Vmlld0RhdGEoKSBhcyBWaWV3RGF0YTtcblx0XHRpZiAodmlld0RhdGE/LnNoYXJlPy5oYXNPd25Qcm9wZXJ0eShcImV4cG9ydFRvU3ByZWFkc2hlZXRcIikgPT09IHRydWUgJiYgdmlld0RhdGE/LnNoYXJlPy5wcmludD8uaGFzT3duUHJvcGVydHkoXCJwcmVzc1wiKSA9PT0gdHJ1ZSkge1xuXHRcdFx0dGhpcz8ubWVudT8uY3VycmVudD8uYWRkSXRlbShcblx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0cmVmPXt0aGlzLmV4cG9ydFRvU3ByZWFkc2hlZXRNZW51SXRlbX1cblx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9TSEFSRV9DT05UUk9MX0VYUE9SVF9BU19FWENFTFwiKX1cblx0XHRcdFx0XHRpY29uPXtFWFBPUlRfVE9fU1BSRUFEU0hFRVRfSUNPTn1cblx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5fY2FsbE1hbmlmZXN0QWN0aW9uc0V2ZW50cyhjb250cm9sbGVyLCB2aWV3LCBcImV4cG9ydFRvU3ByZWFkc2hlZXRcIik7XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBFeHBvcnQgYXMgQ1NWIG9wdGlvbiB0byBtZW51IGJ1dHRvbi5cblx0ICogQHBhcmFtIGNvbnRyb2xsZXIgUGFnZSBjb250cm9sbGVyXG5cdCAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoaXMgYnVpbGRpbmcgYmxvY2sgaXMgdXNlZCBpblxuXHQgKi9cblx0X2FkZEV4cG9ydENTVk9wdGlvbnMoY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsIHZpZXc6IFZpZXcpOiB2b2lkIHtcblx0XHRjb25zdCB2aWV3RGF0YSA9IHZpZXcuZ2V0Vmlld0RhdGEoKSBhcyBWaWV3RGF0YTtcblx0XHRpZiAodmlld0RhdGE/LnNoYXJlPy5oYXNPd25Qcm9wZXJ0eShcImV4cG9ydFRvQ1NWXCIpID09PSB0cnVlICYmIHZpZXdEYXRhPy5zaGFyZT8ucHJpbnQ/Lmhhc093blByb3BlcnR5KFwicHJlc3NcIikgPT09IHRydWUpIHtcblx0XHRcdHRoaXM/Lm1lbnU/LmN1cnJlbnQ/LmFkZEl0ZW0oXG5cdFx0XHRcdDxNZW51SXRlbVxuXHRcdFx0XHRcdHJlZj17dGhpcy5leHBvcnRUb0NTVk1lbnVJdGVtfVxuXHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJUX1NIQVJFX0NPTlRST0xfRVhQT1JUX0FTX0NTVlwiKX1cblx0XHRcdFx0XHRpY29uPXtFWFBPUlRfVE9fQ1NWX0lDT059XG5cdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuX2NhbGxNYW5pZmVzdEFjdGlvbnNFdmVudHMoY29udHJvbGxlciwgdmlldywgXCJleHBvcnRUb0NTVlwiKTtcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQWRkIEV4cG9ydCBhcyBQREYgb3B0aW9uIHRvIG1lbnUgYnV0dG9uLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBQYWdlIGNvbnRyb2xsZXJcblx0ICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhpcyBidWlsZGluZyBibG9jayBpcyB1c2VkIGluXG5cdCAqL1xuXHRfYWRkRXhwb3J0UERGT3B0aW9ucyhjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgdmlldzogVmlldyk6IHZvaWQge1xuXHRcdGNvbnN0IHZpZXdEYXRhID0gdmlldy5nZXRWaWV3RGF0YSgpIGFzIFZpZXdEYXRhO1xuXHRcdGlmICh2aWV3RGF0YT8uc2hhcmU/Lmhhc093blByb3BlcnR5KFwiZXhwb3J0VG9QREZcIikgPT09IHRydWUgJiYgdmlld0RhdGE/LnNoYXJlPy5wcmludD8uaGFzT3duUHJvcGVydHkoXCJwcmVzc1wiKSA9PT0gdHJ1ZSkge1xuXHRcdFx0dGhpcz8ubWVudT8uY3VycmVudD8uYWRkSXRlbShcblx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0cmVmPXt0aGlzLmV4cG9ydFRvUERGTWVudUl0ZW19XG5cdFx0XHRcdFx0dGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIlRfU0hBUkVfQ09OVFJPTF9FWFBPUlRfQVNfUERGXCIpfVxuXHRcdFx0XHRcdGljb249e0VYUE9SVF9UT19QREZfSUNPTn1cblx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5fY2FsbE1hbmlmZXN0QWN0aW9uc0V2ZW50cyhjb250cm9sbGVyLCB2aWV3LCBcImV4cG9ydFRvUERGXCIpO1xuXHRcdFx0XHRcdH19XG5cdFx0XHRcdC8+XG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgc2VuZCBlbWFpbCBvcHRpb24gdG8gbWVudSBidXR0b24uXG5cdCAqIEBwYXJhbSBjb250cm9sbGVyIFBhZ2UgY29udHJvbGxlclxuXHQgKi9cblx0X2FkZFNlbmRFbWFpbE9wdGlvbihjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcik6IHZvaWQge1xuXHRcdGlmICh0aGlzLnNoYXJlT3B0aW9ucz8uc2hvd1NlbmRFbWFpbCA/PyB0cnVlKSB7XG5cdFx0XHR0aGlzPy5tZW51Py5jdXJyZW50Py5hZGRJdGVtKFxuXHRcdFx0XHQ8TWVudUl0ZW1cblx0XHRcdFx0XHRyZWY9e3RoaXMuc2VuZEVtYWlsTWVudUl0ZW19XG5cdFx0XHRcdFx0dGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIlRfU0VNQU5USUNfQ09OVFJPTF9TRU5EX0VNQUlMXCIpfVxuXHRcdFx0XHRcdGljb249e1wic2FwLWljb246Ly9lbWFpbFwifVxuXHRcdFx0XHRcdHByZXNzPXthc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiBjb250cm9sbGVyLnNoYXJlLl90cmlnZ2VyRW1haWwoKX1cblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBVU2hlbGwgYmFzZWQgc2hhcmUgb3B0aW9ucy5cblx0ICogQHBhcmFtIGNvbnRyb2xsZXIgUGFnZSBjb250cm9sbGVyXG5cdCAqIEBwYXJhbSBzaGVsbFNlcnZpY2VzIFNoZWxsIFNlcnZpY2VzXG5cdCAqL1xuXHRhc3luYyBfYWRkU2hlbGxCYXNlZE1lbnVJdGVtcyhjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgc2hlbGxTZXJ2aWNlczogSVNoZWxsU2VydmljZXMpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBoYXNVc2hlbGwgPSBzaGVsbFNlcnZpY2VzLmhhc1VTaGVsbCgpO1xuXHRcdGlmIChoYXNVc2hlbGwpIHtcblx0XHRcdC8vIHNoYXJlIHZpYSBKQU1cblx0XHRcdHRoaXMuX2FkZFNoYXJlVmlhSkFNT3B0aW9uKGNvbnRyb2xsZXIsIHNoZWxsU2VydmljZXMpO1xuXG5cdFx0XHQvLyBQcmVwYXJlIHRlYW1zIG1lbnUgaXRlbXNcblx0XHRcdGF3YWl0IHRoaXMuX2FkZE1TVGVhbXNPcHRpb25zKGNvbnRyb2xsZXIpO1xuXG5cdFx0XHQvLyBQcmVwYXJlIENvbGxhYm9yYXRpb24gTWFuYWdlciBPcHRpb25zXG5cdFx0XHRhd2FpdCB0aGlzLl9hZGRDb2xsYWJvcmF0aW9uTWFuYWdlck9wdGlvbihjb250cm9sbGVyKTtcblxuXHRcdFx0Ly8gU2F2ZSBhcyBUaWxlXG5cdFx0XHRhd2FpdCB0aGlzLl9hZGRTYXZlQXNUaWxlT3B0aW9uKGNvbnRyb2xsZXIpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgQ00gb3B0aW9uLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBUaGUgY29udHJvbGxlciBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBNZW51SXRlbXNcblx0ICovXG5cdGFzeW5jIF9hZGRDb2xsYWJvcmF0aW9uTWFuYWdlck9wdGlvbihjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcik6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlID0gY29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKS5nZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlKCk7XG5cdFx0XHRjb25zdCBjb2xsYWJvcmF0aW9uT3B0aW9uID0gYXdhaXQgY29sbGFib3JhdGl2ZVRvb2xzU2VydmljZS5nZXRDb2xsYWJvcmF0aW9uTWFuYWdlck9wdGlvbigpO1xuXHRcdFx0aWYgKGNvbGxhYm9yYXRpb25PcHRpb24gJiYgKHRoaXMuc2hhcmVPcHRpb25zPy5zaG93Q29sbGFib3JhdGlvbk1hbmFnZXIgPz8gZmFsc2UpKSB7XG5cdFx0XHRcdGNvbnN0IG1lbnVJdGVtID0gKFxuXHRcdFx0XHRcdDxNZW51SXRlbVxuXHRcdFx0XHRcdFx0cmVmPXt0aGlzLnNoYXJlQXNDb2xsYWJvcmF0aW9uTWFuYWdlcn1cblx0XHRcdFx0XHRcdHRleHQ9e2NvbGxhYm9yYXRpb25PcHRpb24udGV4dH1cblx0XHRcdFx0XHRcdGljb249e2NvbGxhYm9yYXRpb25PcHRpb24uaWNvbn1cblx0XHRcdFx0XHRcdHByZXNzPXthc3luYyAoZXZlbnQ6IFVJNUV2ZW50PHt9LCBNZW51SXRlbT4pOiBQcm9taXNlPHZvaWQ+ID0+XG5cdFx0XHRcdFx0XHRcdHRoaXMuX2NvbGxhYm9yYXRpb25NYW5hZ2VyQnV0dG9uUHJlc3MoY29sbGFib3JhdGlvbk9wdGlvbi5wcmVzcywgZXZlbnQpXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0PjwvTWVudUl0ZW0+XG5cdFx0XHRcdCk7XG5cdFx0XHRcdEZFU1JIZWxwZXIuc2V0U2VtYW50aWNTdGVwbmFtZShtZW51SXRlbSwgXCJwcmVzc1wiLCBjb2xsYWJvcmF0aW9uT3B0aW9uLmZlc3JTdGVwTmFtZSk7XG5cdFx0XHRcdHRoaXM/Lm1lbnU/LmN1cnJlbnQ/LmFkZEl0ZW0obWVudUl0ZW0pO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKTtcblx0XHRcdExvZy5lcnJvcihgRkUgOiBBZGRpbmcgQ29sbGFib3JhdGlvbiBNYW5hZ2VyIE9wdGlvbiA6ICR7bWVzc2FnZX1gKTtcblx0XHR9XG5cdH1cblxuXHRhc3luYyBfY29sbGFib3JhdGlvbk1hbmFnZXJCdXR0b25QcmVzcyhjb2xsYWJvcmF0aW9uQ2FsbEJhY2s6IEZ1bmN0aW9uLCBldmVudDogVUk1RXZlbnQ8e30sIE1lbnVJdGVtPik6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGNsaWNrZWRNZW51SXRlbSA9IGV2ZW50LmdldFNvdXJjZSgpO1xuXG5cdFx0Y29uc3QgdmlldzogVmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoY2xpY2tlZE1lbnVJdGVtKTtcblx0XHRjb25zdCBjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlciA9IHZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyO1xuXHRcdGF3YWl0IGNvbnRyb2xsZXIuc2hhcmUuX2FkYXB0U2hhcmVNZXRhZGF0YSgpO1xuXHRcdGNvbnN0IHNoYXJlSW5mb01vZGVsID0gdmlldy5nZXRNb2RlbChcInNoYXJlSW5mb1wiKSBhcyBKU09OTW9kZWwgfCB1bmRlZmluZWQ7XG5cblx0XHRpZiAoc2hhcmVJbmZvTW9kZWwpIHtcblx0XHRcdGNvbnN0IHNoYXJlSW5mbyA9IHNoYXJlSW5mb01vZGVsLmdldERhdGEoKTtcblx0XHRcdGNvbnN0IHsgY29sbGFib3JhdGlvbkluZm8gfSA9IHNoYXJlSW5mbztcblx0XHRcdGNvbGxhYm9yYXRpb25DYWxsQmFjayhjb2xsYWJvcmF0aW9uSW5mby5hcHBUaXRsZSwgY29sbGFib3JhdGlvbkluZm8udXJsKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQWRkIHNoYXJlIHZpYSBKQU0gb3B0aW9uLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBQYWdlIGNvbnRyb2xsZXJcblx0ICogQHBhcmFtIHNoZWxsU2VydmljZXMgU2hlbGwgU2VydmljZXNcblx0ICovXG5cdF9hZGRTaGFyZVZpYUpBTU9wdGlvbihjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgc2hlbGxTZXJ2aWNlczogSVNoZWxsU2VydmljZXMpOiB2b2lkIHtcblx0XHRjb25zdCBoYXNKYW0gPSAhIXNoZWxsU2VydmljZXMuaXNKYW1BY3RpdmU/LigpO1xuXHRcdGlmIChoYXNKYW0pIHtcblx0XHRcdHRoaXM/Lm1lbnU/LmN1cnJlbnQ/LmFkZEl0ZW0oXG5cdFx0XHRcdDxNZW51SXRlbVxuXHRcdFx0XHRcdHJlZj17dGhpcy5zaGFyZVZpYUpBTU1lbnVJdGVtfVxuXHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJUX0NPTU1PTl9TQVBGRV9TSEFSRV9KQU1cIil9XG5cdFx0XHRcdFx0aWNvbj17XCJzYXAtaWNvbjovL3NoYXJlLTJcIn1cblx0XHRcdFx0XHRwcmVzcz17YXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4gY29udHJvbGxlci5zaGFyZS5fdHJpZ2dlclNoYXJlVG9KYW0oKX1cblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBvcHRpb25zIHRvIHNoYXJlIHZpYSBNaWNyb3NvZnQgVGVhbXMuXG5cdCAqIEBwYXJhbSBjb250cm9sbGVyIFBhZ2VDb250cm9sbGVyXG5cdCAqL1xuXHRhc3luYyBfYWRkTVNUZWFtc09wdGlvbnMoY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0aWYgKHRoaXMuX2Jsb2NrSW50ZXJuYWxDb25maWc/LnNob3dNc1RlYW1zT3B0aW9ucyA9PT0gZmFsc2UpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlID0gY29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKS5nZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlKCk7XG5cdFx0XHRjb25zdCBzaGFyZUNvbGxhYm9yYXRpb25PcHRpb25zID0gYXdhaXQgY29sbGFib3JhdGl2ZVRvb2xzU2VydmljZS5nZXRUZWFtc0NvbGxhYk9wdGlvbnNWaWFTaGFyZSh7XG5cdFx0XHRcdGlzU2hhcmVBc0NhcmRFbmFibGVkOiB0aGlzLl9nZXRJc1NoYXJlQXNDYXJkRW5hYmxlZCgpXG5cdFx0XHR9KTtcblxuXHRcdFx0aWYgKCFzaGFyZUNvbGxhYm9yYXRpb25PcHRpb25zKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Zm9yIChjb25zdCBjb2xsYWJvcmF0aW9uT3B0aW9uIG9mIHNoYXJlQ29sbGFib3JhdGlvbk9wdGlvbnMpIHtcblx0XHRcdFx0Y29uc3QgbWVudUl0ZW1TZXR0aW5nczogJE1lbnVJdGVtU2V0dGluZ3MgPSB0aGlzLl9nZXRNc1RlYW1zTWVudUl0ZW1TZXR0aW5ncyhjb2xsYWJvcmF0aW9uT3B0aW9uKTtcblx0XHRcdFx0Y29uc3Qgc3ViT3B0aW9ucyA9IG1lbnVJdGVtU2V0dGluZ3MuaXRlbXM7XG5cdFx0XHRcdC8vIE11bHRpcGxlIHN1YiBvcHRpb25zIGFyZSBncm91cGVkIGludG8gc2luZ2xlIHRlYW1zIGdyb3VwIG1lbnUgaXRlbS5cblx0XHRcdFx0Y29uc3QgbWVudUl0ZW1LZXkgPVxuXHRcdFx0XHRcdEFycmF5LmlzQXJyYXkoc3ViT3B0aW9ucykgJiYgc3ViT3B0aW9ucy5sZW5ndGggPyBlbnVtU2hhcmVPcHRpb24uTVNfVEVBTVNfR1JPVVAgOiBjb2xsYWJvcmF0aW9uT3B0aW9uLmtleTtcblxuXHRcdFx0XHR0aGlzLl9hZGRNc1RlYW1zTWVudUl0ZW0obWVudUl0ZW1TZXR0aW5ncywgbWVudUl0ZW1LZXksIGNvbGxhYm9yYXRpb25PcHRpb24uZmVzclN0ZXBOYW1lKTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlcnI6IHVua25vd24pIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycik7XG5cdFx0XHRMb2cuZXJyb3IoYEZFIDogQnVpbGRpbmdibG9jayA6IFNoYXJlIDogYWRkaW5nIE1TIHRlYW1zIG9wdGlvbnMgOiAke21lc3NhZ2V9YCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBzYXZlIGFzIHRpbGUgb3B0aW9uLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBQYWdlIGNvbnRyb2xsZXJcblx0ICovXG5cdGFzeW5jIF9hZGRTYXZlQXNUaWxlT3B0aW9uKGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdC8vIHNldCBzYXZlIGFzIHRpbGVcblx0XHRcdC8vIGZvciBub3cgd2UgbmVlZCB0byBjcmVhdGUgYWRkQm9va21hcmtCdXR0b24gdG8gdXNlIHRoZSBzYXZlIGFzIHRpbGUgZmVhdHVyZS5cblx0XHRcdC8vIEluIHRoZSBmdXR1cmUgc2F2ZSBhcyB0aWxlIHNob3VsZCBiZSBhdmFpbGFibGUgYXMgYW4gQVBJIG9yIGEgTWVudUl0ZW0gc28gdGhhdCBpdCBjYW4gYmUgYWRkZWQgdG8gdGhlIE1lbnUgYnV0dG9uLlxuXHRcdFx0Ly8gVGhpcyBuZWVkcyB0byBiZSBkaXNjdXNzZWQgd2l0aCBBZGRCb29rbWFya0J1dHRvbiB0ZWFtLlxuXHRcdFx0Ly8gSW5jbHVkZWQgaW4gYSBoYXNVc2hlbGwgYnJhbmNoXG5cdFx0XHRjb25zdCB7IGRlZmF1bHQ6IEFkZEJvb2ttYXJrQnV0dG9uIH0gPSBhd2FpdCBpbXBvcnQoXCJzYXAvdXNoZWxsL3VpL2Zvb3RlcmJhci9BZGRCb29rbWFya0J1dHRvblwiKTtcblx0XHRcdGNvbnN0IGFkZEJvb2ttYXJrQnV0dG9uID0gbmV3IEFkZEJvb2ttYXJrQnV0dG9uKCk7XG5cdFx0XHRpZiAoYWRkQm9va21hcmtCdXR0b24uZ2V0RW5hYmxlZCgpKSB7XG5cdFx0XHRcdHRoaXM/Lm1lbnU/LmN1cnJlbnQ/LmFkZEl0ZW0oXG5cdFx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0XHRyZWY9e3RoaXMuc2F2ZUFzVGlsZU1lbnVJdGVtfVxuXHRcdFx0XHRcdFx0dGV4dD17YWRkQm9va21hcmtCdXR0b24uZ2V0VGV4dCgpfVxuXHRcdFx0XHRcdFx0aWNvbj17YWRkQm9va21hcmtCdXR0b24uZ2V0SWNvbigpfVxuXHRcdFx0XHRcdFx0cHJlc3M9e2FzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IGNvbnRyb2xsZXIuc2hhcmUuX3NhdmVBc1RpbGUodGhpcy5zYXZlQXNUaWxlTWVudUl0ZW0uY3VycmVudCEpfVxuXHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdHt7IGRlcGVuZGVudHM6IFthZGRCb29rbWFya0J1dHRvbl0gfX1cblx0XHRcdFx0XHQ8L01lbnVJdGVtPlxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YWRkQm9va21hcmtCdXR0b24uZGVzdHJveSgpO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKTtcblx0XHRcdExvZy5lcnJvcihgRkUgOiBCdWlsZGluZ2Jsb2NrIDogU2hhcmUgOiBhZGRpbmcgU2F2ZSBhcyB0aWxlIG9wdGlvbiA6ICR7bWVzc2FnZX1gKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGlzU2hhcmVBc0NhcmRFbmFibGVkIHRvIGZldGNoIHN1cHBvcnRlZCBjb2xsYWJvcmF0aW9uIG9wdGlvbnMuXG5cdCAqIEByZXR1cm5zIEJvb2xlYW4uXG5cdCAqL1xuXHRfZ2V0SXNTaGFyZUFzQ2FyZEVuYWJsZWQoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3Qgc2hvd1NoYXJlQXNDYXJkID0gdGhpcy5tc1RlYW1zT3B0aW9ucz8uZW5hYmxlQ2FyZCA/PyBmYWxzZTtcblxuXHRcdGlmICh0eXBlb2Ygc2hvd1NoYXJlQXNDYXJkID09PSBcImJvb2xlYW5cIikge1xuXHRcdFx0cmV0dXJuIHNob3dTaGFyZUFzQ2FyZDtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBzaG93U2hhcmVBc0NhcmQgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdC8vIFwidHJ1ZVwiIG9yIGEgYmluZGluZyBleHByZXNzaW9uXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRyZXR1cm4gc2hvd1NoYXJlQXNDYXJkID09PSBcInRydWVcIiB8fCBCb29sZWFuKEJpbmRpbmdJbmZvLnBhcnNlKHNob3dTaGFyZUFzQ2FyZCkpO1xuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdExvZy5lcnJvcihlcnIgYXMgc3RyaW5nKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IE1lbnUgSXRlbSBzZXR0aW5ncyBmb3IgbWFpbiBNUyB0ZWFtcyBvcHRpb24uXG5cdCAqIEBwYXJhbSBjb2xsYWJvcmF0aW9uT3B0aW9uIFJvb3QgQ29sbGFib3JhdGlvbiBPcHRpb25cblx0ICogQHJldHVybnMgTWVudUl0ZW1TZXR0aW5nc1xuXHQgKi9cblx0X2dldE1zVGVhbXNNZW51SXRlbVNldHRpbmdzKGNvbGxhYm9yYXRpb25PcHRpb246IENvbGxhYm9yYXRpb25PcHRpb25zKTogJE1lbnVJdGVtU2V0dGluZ3Mge1xuXHRcdGNvbnN0IGl0ZW1zID0gdGhpcy5fZ2V0TXNUZWFtc1N1Yk9wdGlvbnMoY29sbGFib3JhdGlvbk9wdGlvbj8uc3ViT3B0aW9ucyk7XG5cdFx0Y29uc3QgbWVudUl0ZW1TZXR0aW5nczogJE1lbnVJdGVtU2V0dGluZ3MgPSB7XG5cdFx0XHR0ZXh0OiBjb2xsYWJvcmF0aW9uT3B0aW9uLnRleHQsXG5cdFx0XHRpY29uOiBjb2xsYWJvcmF0aW9uT3B0aW9uLmljb24sXG5cdFx0XHRpdGVtc1xuXHRcdH07XG5cblx0XHRpZiAoaXRlbXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHQvLyBpZiB0aGVyZSBhcmUgbm8gc3ViIG9wdGlvbiB0aGVuIHRoZSBtYWluIG9wdGlvbiBzaG91bGQgYmUgY2xpY2thYmxlXG5cdFx0XHQvLyBzbyBhZGQgYSBwcmVzcyBoYW5kbGVyLlxuXHRcdFx0bWVudUl0ZW1TZXR0aW5ncy5wcmVzcyA9IGFzeW5jIChldmVudDogVUk1RXZlbnQ8e30sIE1lbnVJdGVtPik6IFByb21pc2U8dm9pZD4gPT4gdGhpcy5jb2xsYWJvcmF0aW9uTWVudUl0ZW1QcmVzcyhldmVudCk7XG5cdFx0XHRtZW51SXRlbVNldHRpbmdzW1wiY3VzdG9tRGF0YVwiXSA9IG5ldyBDdXN0b21EYXRhKHtcblx0XHRcdFx0a2V5OiBcImNvbGxhYm9yYXRpb25EYXRhXCIsXG5cdFx0XHRcdHZhbHVlOiBjb2xsYWJvcmF0aW9uT3B0aW9uXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIG1lbnVJdGVtU2V0dGluZ3M7XG5cdH1cblxuXHQvKipcblx0ICogQWRkIG1haW4gTVMgVGVhbXMgTWVudSBJdGVtIHRvIHRoZSBTaGFyZSBidWlsZGluZyBibG9jayBtZW51LlxuXHQgKiBAcGFyYW0gbWVudUl0ZW1TZXR0aW5ncyBNZW51IEl0ZW0gc2V0dGluZ3Ncblx0ICogQHBhcmFtIG1lbnVJdGVtS2V5IE1TIHRlYW1zIG9wdGlvbiBrZXlcblx0ICogQHBhcmFtIGZlc3JTdGVwTmFtZSBTdGVwIG5hbWVcblx0ICovXG5cdF9hZGRNc1RlYW1zTWVudUl0ZW0obWVudUl0ZW1TZXR0aW5nczogJE1lbnVJdGVtU2V0dGluZ3MsIG1lbnVJdGVtS2V5PzogU2hhcmVPcHRpb25LZXksIGZlc3JTdGVwTmFtZT86IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IG1lbnVJdGVtOiBNZW51SXRlbSA9IChcblx0XHRcdDxNZW51SXRlbVxuXHRcdFx0XHRyZWY9e3RoaXMuX2dldE1lbnVJdGVtUmVmZXJlbmNlKG1lbnVJdGVtS2V5KX1cblx0XHRcdFx0dGV4dD17bWVudUl0ZW1TZXR0aW5ncy50ZXh0fVxuXHRcdFx0XHRpY29uPXttZW51SXRlbVNldHRpbmdzLmljb259XG5cdFx0XHRcdGN1c3RvbURhdGE9e21lbnVJdGVtU2V0dGluZ3MuY3VzdG9tRGF0YX1cblx0XHRcdFx0aXRlbXM9e21lbnVJdGVtU2V0dGluZ3MuaXRlbXN9XG5cdFx0XHQ+PC9NZW51SXRlbT5cblx0XHQpO1xuXHRcdGlmIChtZW51SXRlbVNldHRpbmdzLnByZXNzKSB7XG5cdFx0XHQvL1xuXHRcdFx0bWVudUl0ZW0uYXR0YWNoUHJlc3MobWVudUl0ZW1TZXR0aW5ncy5wcmVzcyk7XG5cdFx0XHRpZiAoZmVzclN0ZXBOYW1lKSB7XG5cdFx0XHRcdEZFU1JIZWxwZXIuc2V0U2VtYW50aWNTdGVwbmFtZShtZW51SXRlbSwgXCJwcmVzc1wiLCBmZXNyU3RlcE5hbWUpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHR0aGlzPy5tZW51Py5jdXJyZW50Py5hZGRJdGVtKG1lbnVJdGVtKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgTWVudSBJdGVtcyBjb3JyZXNwb25kaW5nIHRvIE1TIHRlYW1zIHN1YiBvcHRpb25zLlxuXHQgKiBAcGFyYW0gc3ViT3B0aW9ucyBBcnJheSBvZiBjb2xsYWJvcmF0aW9uIG9wdGlvbnNcblx0ICogQHJldHVybnMgTWVudUl0ZW1zXG5cdCAqL1xuXHRfZ2V0TXNUZWFtc1N1Yk9wdGlvbnMoc3ViT3B0aW9ucz86IENvbGxhYm9yYXRpb25PcHRpb25zW10pOiBNZW51SXRlbVtdIHtcblx0XHRpZiAoIUFycmF5LmlzQXJyYXkoc3ViT3B0aW9ucykpIHtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cblx0XHRyZXR1cm4gc3ViT3B0aW9ucy5yZWR1Y2UoKG1lbnVJdGVtczogTWVudUl0ZW1bXSwgc3ViT3B0aW9uOiBDb2xsYWJvcmF0aW9uT3B0aW9ucykgPT4ge1xuXHRcdFx0Y29uc3Qgc3ViTWVudUl0ZW0gPSAoXG5cdFx0XHRcdDxNZW51SXRlbVxuXHRcdFx0XHRcdHJlZj17dGhpcy5fZ2V0TWVudUl0ZW1SZWZlcmVuY2Uoc3ViT3B0aW9uLmtleSl9XG5cdFx0XHRcdFx0dGV4dD17c3ViT3B0aW9uLnRleHR9XG5cdFx0XHRcdFx0aWNvbj17c3ViT3B0aW9uLmljb259XG5cdFx0XHRcdFx0cHJlc3M9e2FzeW5jIChldmVudDogVUk1RXZlbnQ8e30sIE1lbnVJdGVtPik6IFByb21pc2U8dm9pZD4gPT4gdGhpcy5jb2xsYWJvcmF0aW9uTWVudUl0ZW1QcmVzcyhldmVudCl9XG5cdFx0XHRcdFx0Y3VzdG9tRGF0YT17XG5cdFx0XHRcdFx0XHRuZXcgQ3VzdG9tRGF0YSh7XG5cdFx0XHRcdFx0XHRcdGtleTogXCJjb2xsYWJvcmF0aW9uRGF0YVwiLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogc3ViT3B0aW9uXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0PjwvTWVudUl0ZW0+XG5cdFx0XHQpO1xuXHRcdFx0aWYgKHN1Yk9wdGlvbi5mZXNyU3RlcE5hbWUpIHtcblx0XHRcdFx0RkVTUkhlbHBlci5zZXRTZW1hbnRpY1N0ZXBuYW1lKHN1Yk1lbnVJdGVtLCBcInByZXNzXCIsIHN1Yk9wdGlvbi5mZXNyU3RlcE5hbWUpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIFsuLi5tZW51SXRlbXMsIHN1Yk1lbnVJdGVtXTtcblx0XHR9LCBbXSk7XG5cdH1cblxuXHQvKipcblx0ICogUHJlc3MgaGFuZGxlciBmb3IgY29sbGFib3JhdGlvbiBtZW51IGl0ZW1zLlxuXHQgKmBcblx0ICogQHBhcmFtIGV2ZW50IEV2ZW50IG9iamVjdFxuXHQgKi9cblx0YXN5bmMgY29sbGFib3JhdGlvbk1lbnVJdGVtUHJlc3MoZXZlbnQ6IFVJNUV2ZW50PHt9LCBNZW51SXRlbT4pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBjbGlja2VkTWVudUl0ZW0gPSBldmVudC5nZXRTb3VyY2UoKTtcblxuXHRcdGNvbnN0IHZpZXc6IFZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KGNsaWNrZWRNZW51SXRlbSk7XG5cdFx0Y29uc3QgY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIgPSB2aWV3LmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlcjtcblx0XHRhd2FpdCBjb250cm9sbGVyLnNoYXJlLl9hZGFwdFNoYXJlTWV0YWRhdGEoKTtcblx0XHRjb25zdCBzaGFyZUluZm9Nb2RlbCA9IHZpZXcuZ2V0TW9kZWwoXCJzaGFyZUluZm9cIikgYXMgSlNPTk1vZGVsIHwgdW5kZWZpbmVkO1xuXG5cdFx0aWYgKHNoYXJlSW5mb01vZGVsKSB7XG5cdFx0XHRjb25zdCBzaGFyZUluZm8gPSBzaGFyZUluZm9Nb2RlbC5nZXREYXRhKCk7XG5cdFx0XHRjb25zdCB7IGNvbGxhYm9yYXRpb25JbmZvIH0gPSBzaGFyZUluZm87XG5cblx0XHRcdGNvbnN0IGNvbGxhYm9yYXRpb25EYXRhID0gY2xpY2tlZE1lbnVJdGVtLmRhdGEoXCJjb2xsYWJvcmF0aW9uRGF0YVwiKTtcblx0XHRcdGNvbnN0IGNvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UgPSBjb250cm9sbGVyLmdldEFwcENvbXBvbmVudCgpLmdldENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UoKTtcblx0XHRcdGNvbnN0IHRlYW1zSGVscGVyU2VydmljZSA9IChhd2FpdCBjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlLmdldENvbGxhYm9yYXRpb25TZXJ2aWNlcygpKS5vVGVhbXNIZWxwZXJTZXJ2aWNlO1xuXHRcdFx0aWYgKGNvbGxhYm9yYXRpb25EYXRhW1wia2V5XCJdID09PSBlbnVtTVNUZWFtc09wdGlvbi5DT0xMQUJPUkFUSU9OX01TVEVBTVNfQ0FSRCkge1xuXHRcdFx0XHRjb25zdCBpc1NoYXJlQXNDYXJkRW5hYmxlZCA9IHRlYW1zSGVscGVyU2VydmljZS5pc0ZlYXR1cmVGbGFnRW5hYmxlZCgpO1xuXHRcdFx0XHRjb25zdCBjYXJkRGVmaW5pdGlvbiA9IGlzU2hhcmVBc0NhcmRFbmFibGVkID8gYXdhaXQgY29udHJvbGxlci5zaGFyZS5nZXRDYXJkRGVmaW5pdGlvbigpIDogdW5kZWZpbmVkO1xuXHRcdFx0XHRsZXQgY2FyZElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGlmIChjYXJkRGVmaW5pdGlvbikge1xuXHRcdFx0XHRcdGNvbnN0IHNoZWxsU2VydmljZUhlbHBlciA9IGNvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0U2hlbGxTZXJ2aWNlcygpO1xuXHRcdFx0XHRcdGNvbnN0IHsgc2VtYW50aWNPYmplY3QsIGFjdGlvbiB9ID0gc2hlbGxTZXJ2aWNlSGVscGVyLnBhcnNlU2hlbGxIYXNoKGRvY3VtZW50LmxvY2F0aW9uLmhhc2gpO1xuXHRcdFx0XHRcdGNhcmRJZCA9IGAke3NlbWFudGljT2JqZWN0fV8ke2FjdGlvbn1gO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnN0IHJlYXNvbiA9ICFpc1NoYXJlQXNDYXJkRW5hYmxlZFxuXHRcdFx0XHRcdFx0PyBcIkZlYXR1cmUgZmxhZyBkaXNhYmxlZCBpbiBjb2xsYWJvcmF0aW9uIHRlYW1zIGhlbHBlclwiXG5cdFx0XHRcdFx0XHQ6IFwiQ2FyZCBkZWZpbml0aW9uIHdhcyBub3QgY3JlYXRlZFwiO1xuXHRcdFx0XHRcdExvZy5pbmZvKGBGRSBWNCA6IFNoYXJlIGJsb2NrIDogc2hhcmUgYXMgQ2FyZCA6ICR7cmVhc29ufWApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbGxhYm9yYXRpb25JbmZvW1wiY2FyZE1hbmlmZXN0XCJdID0gY2FyZERlZmluaXRpb247XG5cdFx0XHRcdGNvbGxhYm9yYXRpb25JbmZvW1wiY2FyZElkXCJdID0gY2FyZElkO1xuXHRcdFx0fVxuXHRcdFx0dGVhbXNIZWxwZXJTZXJ2aWNlLnNoYXJlKGNvbGxhYm9yYXRpb25EYXRhLCBjb2xsYWJvcmF0aW9uSW5mbyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldCB0aGUgdmlzaWJpbGl0eSBvZiBpbmRpdmlkdWFsIFVJIGVsZW1lbnRzIG9mIHRoZSBTaGFyZSBidWlsZGluZyBibG9jay4gTGlrZSwgTWVudUl0ZW1zLCBNZW51QnV0dG9uIGFuZCBDb21tYW5kIGV4ZWN1dGlvbi5cblx0ICovXG5cdHNldFNoYXJlT3B0aW9uc1Zpc2liaWxpdHkoKTogdm9pZCB7XG5cdFx0Y29uc3Qgb3B0aW9uS2V5cyA9IE9iamVjdC5rZXlzKGVudW1TaGFyZU9wdGlvbikgYXMgU2hhcmVPcHRpb25LZXlbXTtcblx0XHRjb25zdCB2aXNpYmxlQmluZGluZ0V4cHMgPSBvcHRpb25LZXlzLnJlZHVjZSgoYmluZGluZ1Rvb2xraXRFeHBzOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj5bXSwgb3B0aW9uOiBTaGFyZU9wdGlvbktleSkgPT4ge1xuXHRcdFx0Y29uc3QgZXhwID0gdGhpcy5fZ2V0U2hhcmVPcHRpb25WaXNpYmlsaXR5RXhwcmVzc2lvbihvcHRpb24pO1xuXHRcdFx0dGhpcy5fc2V0U2hhcmVPcHRpb25WaXNpYmlsaXR5KG9wdGlvbiwgZXhwKTtcblx0XHRcdHJldHVybiBbLi4uYmluZGluZ1Rvb2xraXRFeHBzLCBleHBdO1xuXHRcdH0sIFtdKTtcblx0XHRjb25zdCBzaGFyZUJsb2NrVmlzaWJsZUV4cCA9IG9yKC4uLnZpc2libGVCaW5kaW5nRXhwcyk7XG5cdFx0aWYgKHRoaXMubWVudUJ1dHRvbi5jdXJyZW50ICYmIHRoaXMuY21kRXhlY3V0aW9uLmN1cnJlbnQpIHtcblx0XHRcdHRoaXMuX2JpbmRVSVZpc2liaWxpdHkodGhpcy5tZW51QnV0dG9uLmN1cnJlbnQsIHNoYXJlQmxvY2tWaXNpYmxlRXhwKTtcblx0XHRcdHRoaXMuX2JpbmRVSVZpc2liaWxpdHkodGhpcy5jbWRFeGVjdXRpb24uY3VycmVudCwgc2hhcmVCbG9ja1Zpc2libGVFeHApO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgTWVudSBJdGVtIHJlZmVyZW5jZSBvZiB0aGUgY29ycmVzcG9uZGluZyBTaGFyZSBvcHRpb24uXG5cdCAqYFxuXHQgKiBAcGFyYW0gb3B0aW9uIFNoYXJlIG9wdGlvbiBrZXlcblx0ICogQHJldHVybnMgUmVmZXJlbmNlIHRvIHRoZSBNZW51IEl0ZW1cblx0ICovXG5cdF9nZXRNZW51SXRlbVJlZmVyZW5jZShvcHRpb24/OiBTaGFyZU9wdGlvbktleSk6IFJlZjxNZW51SXRlbT4gfCB1bmRlZmluZWQge1xuXHRcdGxldCByZWY6IFJlZjxNZW51SXRlbT4gfCB1bmRlZmluZWQ7XG5cdFx0c3dpdGNoIChvcHRpb24pIHtcblx0XHRcdGNhc2UgZW51bVNoYXJlT3B0aW9uLkNPTExBQk9SQVRJT05fTVNURUFNU19DQVJEOlxuXHRcdFx0XHRyZWYgPSB0aGlzLnNoYXJlQXNDYXJkTWVudUl0ZW07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uQ09MTEFCT1JBVElPTl9NU1RFQU1TX0NIQVQ6XG5cdFx0XHRcdHJlZiA9IHRoaXMuc2hhcmVWaWFDaGF0TWVudUl0ZW07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uQ09MTEFCT1JBVElPTl9NU1RFQU1TX1RBQjpcblx0XHRcdFx0cmVmID0gdGhpcy5zaGFyZUFzVGFiTWVudUl0ZW07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uU0VORF9FTUFJTDpcblx0XHRcdFx0cmVmID0gdGhpcy5zZW5kRW1haWxNZW51SXRlbTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIGVudW1TaGFyZU9wdGlvbi5TSEFSRV9KQU06XG5cdFx0XHRcdHJlZiA9IHRoaXMuc2hhcmVWaWFKQU1NZW51SXRlbTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIGVudW1TaGFyZU9wdGlvbi5TQVZFX0FTX1RJTEU6XG5cdFx0XHRcdHJlZiA9IHRoaXMuc2F2ZUFzVGlsZU1lbnVJdGVtO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgZW51bVNoYXJlT3B0aW9uLk1TX1RFQU1TX0dST1VQOlxuXHRcdFx0XHRyZWYgPSB0aGlzLm1zVGVhbXNHcm91cE1lbnVJdGVtO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgZW51bVNoYXJlT3B0aW9uLlNIQVJFX0NPTExBQk9SQVRJT05fTUFOQUdFUjpcblx0XHRcdFx0cmVmID0gdGhpcy5zaGFyZUFzQ29sbGFib3JhdGlvbk1hbmFnZXI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlZjtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHZpc2liaWxpdHkgZXhwcmVzc2lvbiBvZiBzaGFyZSBvcHRpb24gYmFzZWQgb24gdGhlIGJ1aWxkaW5nIGJsb2NrIGNvbmZpZ3VyYXRpb24uXG5cdCAqIEBwYXJhbSBvcHRpb24gU2hhcmUgb3B0aW9uIG5hbWUgb2YgdGhlIHZpc2libGUgZXhwcmVzc2lvbiB0aGF0IG5lZWRzIHRvIGJlIGZldGNoZWQuXG5cdCAqIEByZXR1cm5zIEJpbmRpbmcgdG9vbGtpdCBleHByZXNzaW9uLlxuXHQgKi9cblx0X2dldFNoYXJlT3B0aW9uVmlzaWJpbGl0eUV4cHJlc3Npb24ob3B0aW9uPzogU2hhcmVPcHRpb25LZXkpOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRcdGNvbnN0IG9wdGlvbk1lbnVJdGVtUmVmID0gdGhpcy5fZ2V0TWVudUl0ZW1SZWZlcmVuY2Uob3B0aW9uKTtcblx0XHRpZiAoIW9wdGlvbk1lbnVJdGVtUmVmPy5jdXJyZW50KSB7XG5cdFx0XHRyZXR1cm4gY29uc3RhbnQoZmFsc2UpO1xuXHRcdH1cblxuXHRcdGxldCBleHA6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPjtcblx0XHRzd2l0Y2ggKG9wdGlvbikge1xuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uQ09MTEFCT1JBVElPTl9NU1RFQU1TX0NBUkQ6XG5cdFx0XHRjYXNlIGVudW1TaGFyZU9wdGlvbi5DT0xMQUJPUkFUSU9OX01TVEVBTVNfQ0hBVDpcblx0XHRcdGNhc2UgZW51bVNoYXJlT3B0aW9uLkNPTExBQk9SQVRJT05fTVNURUFNU19UQUI6XG5cdFx0XHRcdGV4cCA9IHRoaXMuX2dldE1TVGVhbXNTaGFyZU9wdGlvblZpc2liaWxpdHkob3B0aW9uKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIGVudW1TaGFyZU9wdGlvbi5TSEFSRV9DT0xMQUJPUkFUSU9OX01BTkFHRVI6XG5cdFx0XHRcdGV4cCA9IHRoaXMuX2dldENvbGxhYm9yYXRpb25PcHRpb25FeHByZXNzaW9uKCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uU0VORF9FTUFJTDoge1xuXHRcdFx0XHRjb25zdCBzaG93U2VuZEVtYWlsID0gcmVzb2x2ZUJpbmRpbmdTdHJpbmc8Ym9vbGVhbj4odGhpcy5zaGFyZU9wdGlvbnM/LnNob3dTZW5kRW1haWwgPz8gdHJ1ZSwgXCJib29sZWFuXCIpO1xuXHRcdFx0XHRjb25zdCBpbnRlcm5hbE9wdGlvbiA9IHJlc29sdmVCaW5kaW5nU3RyaW5nKFxuXHRcdFx0XHRcdHRoaXMuX2Jsb2NrSW50ZXJuYWxDb25maWcuc2hvd1NlbmRFbWFpbCA/PyB0cnVlLFxuXHRcdFx0XHRcdFwiYm9vbGVhblwiXG5cdFx0XHRcdCkgYXMgdW5rbm93biBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG5cdFx0XHRcdGlmIChpc0NvbnN0YW50KGludGVybmFsT3B0aW9uKSAmJiBpbnRlcm5hbE9wdGlvbi52YWx1ZSA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHRleHAgPSBjb25zdGFudChmYWxzZSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoaXNDb25zdGFudChpbnRlcm5hbE9wdGlvbikgJiYgaW50ZXJuYWxPcHRpb24udmFsdWUgPT09IHRydWUpIHtcblx0XHRcdFx0XHRleHAgPSAodGhpcy5zaGFyZU9wdGlvbnM/LnNob3dTZW5kRW1haWwgPz8gdHJ1ZSkgYXMgdW5rbm93biBhcyBFbWJlZGRlZFVJNUJpbmRpbmdFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGV4cCA9IGFuZChzaG93U2VuZEVtYWlsLCBpbnRlcm5hbE9wdGlvbikgYXMgdW5rbm93biBhcyBFbWJlZGRlZFVJNUJpbmRpbmdFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uU0hBUkVfSkFNOlxuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uU0FWRV9BU19USUxFOiB7XG5cdFx0XHRcdC8vIE5vIG92ZXJyaWRlcyBmb3IgU2hhcmUgdmlhIEphbSBhbmQgU2F2ZSBhcyB0aWxlIHlldC5cblx0XHRcdFx0ZXhwID0gY29uc3RhbnQodHJ1ZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uTVNfVEVBTVNfR1JPVVA6IHtcblx0XHRcdFx0Y29uc3QgbXNUZWFtc0NvbmZpZ0V4cCA9IHRoaXMuX2dldFNob3dNc1RlYW1zT3B0aW9uc0V4cHJlc3Npb24oKTtcblx0XHRcdFx0Y29uc3QgbXNUZWFtc09wdGlvbnNWYWx1ZSA9IE9iamVjdC5rZXlzKGVudW1NU1RlYW1zT3B0aW9uKSBhcyBTaGFyZU9wdGlvbktleVtdO1xuXHRcdFx0XHRjb25zdCBhbGxNU1RlYW1zT3B0aW9uc0V4cHMgPSBtc1RlYW1zT3B0aW9uc1ZhbHVlLnJlZHVjZShcblx0XHRcdFx0XHQoYmluZGluZ1Rvb2xraXRFeHA6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPltdLCBtc1RlYW1zT3B0aW9uOiBTaGFyZU9wdGlvbktleSkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgbXNUZWFtT3B0aW9uRXhwID0gdGhpcy5fZ2V0TVNUZWFtc1NoYXJlT3B0aW9uVmlzaWJpbGl0eShtc1RlYW1zT3B0aW9uKTtcblx0XHRcdFx0XHRcdHJldHVybiBbLi4uYmluZGluZ1Rvb2xraXRFeHAsIG1zVGVhbU9wdGlvbkV4cF07XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRbXSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj5bXVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRleHAgPSBhbmQobXNUZWFtc0NvbmZpZ0V4cCwgb3IoLi4uYWxsTVNUZWFtc09wdGlvbnNFeHBzKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0ZXhwID0gY29uc3RhbnQoZmFsc2UpO1xuXHRcdH1cblxuXHRcdHJldHVybiBleHA7XG5cdH1cblxuXHRfZ2V0Q29sbGFib3JhdGlvbk9wdGlvbkV4cHJlc3Npb24oKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0XHRjb25zdCBzaG93Q29sbGFib3JhdGlvbk1hbmFnZXIgPSB0aGlzLnNoYXJlT3B0aW9ucz8uc2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyID8/IGZhbHNlO1xuXHRcdGNvbnN0IG9wdGlvbkV4cCA9IHJlc29sdmVCaW5kaW5nU3RyaW5nPGJvb2xlYW4+KHNob3dDb2xsYWJvcmF0aW9uTWFuYWdlciwgXCJib29sZWFuXCIpO1xuXHRcdGNvbnN0IGludGVybmFsT3B0aW9uID0gdGhpcy5fYmxvY2tJbnRlcm5hbENvbmZpZy5zaG93Q29sbGFib3JhdGlvbk1hbmFnZXIgPz8gdHJ1ZTtcblx0XHRjb25zdCBpbnRlcm5hbE9wdGlvbkV4cCA9IHJlc29sdmVCaW5kaW5nU3RyaW5nPGJvb2xlYW4+KGludGVybmFsT3B0aW9uLCBcImJvb2xlYW5cIik7XG5cdFx0cmV0dXJuIGFuZChvcHRpb25FeHAsIGludGVybmFsT3B0aW9uRXhwKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgZXhwcmVzc2lvbiBmb3Igc2hvd01zVGVhbXNPcHRpb25zIHNoYXJlIG9wdGlvbiBiYXNlZCBvbiB0aGUgYnVpbGRpbmcgYmxvY2sgY29uZmlndXJhdGlvbi5cblx0ICogQHJldHVybnMgQmluZGluZyB0b29sa2l0IGV4cHJlc3Npb24uXG5cdCAqL1xuXHRfZ2V0U2hvd01zVGVhbXNPcHRpb25zRXhwcmVzc2lvbigpOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRcdGNvbnN0IGludGVybmFsT3B0aW9uID0gdGhpcy5fYmxvY2tJbnRlcm5hbENvbmZpZy5zaG93TXNUZWFtc09wdGlvbnMgPz8gdHJ1ZTtcblx0XHRyZXR1cm4gcmVzb2x2ZUJpbmRpbmdTdHJpbmc8Ym9vbGVhbj4oaW50ZXJuYWxPcHRpb24sIFwiYm9vbGVhblwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYmluZGluZyB0b29sa2l0IGV4cHJlc3Npb24gZm9yIHNoYXJlIGFzIGNhcmQgdmlzaWJpbGl0eS5cblx0ICogQHJldHVybnMgQmluZGluZyB0b29sa2l0IGV4cHJlc3Npb24uXG5cdCAqL1xuXHRfZ2V0U2hhcmVBc0NhcmRWaXNpYmlsaXR5KCk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdFx0bGV0IGV4cDogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHRcdGNvbnN0IHNoYXJlQXNDYXJkT3B0aW9uUmVmID0gdGhpcy5fZ2V0TWVudUl0ZW1SZWZlcmVuY2UoZW51bVNoYXJlT3B0aW9uLkNPTExBQk9SQVRJT05fTVNURUFNU19DQVJEKTtcblx0XHRpZiAoc2hhcmVBc0NhcmRPcHRpb25SZWY/LmN1cnJlbnQpIHtcblx0XHRcdGNvbnN0IGV4cFNob3dNU1RlYW1zT3B0aW9ucyA9IHRoaXMuX2dldFNob3dNc1RlYW1zT3B0aW9uc0V4cHJlc3Npb24oKTtcblx0XHRcdGNvbnN0IHNob3dTaGFyZUFzQ2FyZCA9IHRoaXMubXNUZWFtc09wdGlvbnM/LmVuYWJsZUNhcmQgPz8gdHJ1ZTtcblx0XHRcdGNvbnN0IG9wdGlvbkV4cCA9IHJlc29sdmVCaW5kaW5nU3RyaW5nPGJvb2xlYW4+KHNob3dTaGFyZUFzQ2FyZCwgXCJib29sZWFuXCIpO1xuXHRcdFx0Y29uc3QgaW50ZXJuYWxPcHRpb24gPSB0aGlzLl9ibG9ja0ludGVybmFsQ29uZmlnLmVuYWJsZUNhcmQgPz8gdHJ1ZTtcblx0XHRcdGNvbnN0IGludGVybmFsT3B0aW9uRXhwID0gcmVzb2x2ZUJpbmRpbmdTdHJpbmc8Ym9vbGVhbj4oaW50ZXJuYWxPcHRpb24sIFwiYm9vbGVhblwiKTtcblx0XHRcdGNvbnN0IGV4cFNob3dTaGFyZUFzQ2FyZCA9IGFuZChvcHRpb25FeHAsIGludGVybmFsT3B0aW9uRXhwKTtcblx0XHRcdGV4cCA9IGFuZChub3QoVUkuSXNFZGl0YWJsZSksIGV4cFNob3dNU1RlYW1zT3B0aW9ucywgZXhwU2hvd1NoYXJlQXNDYXJkKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZXhwID0gY29uc3RhbnQoZmFsc2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gZXhwO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBiaW5kaW5nIHRvb2xraXQgZXhwcmVzc2lvbiBmb3Igc2hhcmUgb3B0aW9uJ3MgdmlzaWJpbGl0eS5cblx0ICogQHBhcmFtIG9wdGlvbiBTaGFyZSBvcHRpb24ga2V5XG5cdCAqIEByZXR1cm5zIEJpbmRpbmcgdG9vbGtpdCBleHByZXNzaW9uLlxuXHQgKi9cblx0X2dldE1TVGVhbXNTaGFyZU9wdGlvblZpc2liaWxpdHkob3B0aW9uOiBTaGFyZU9wdGlvbktleSk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdFx0aWYgKG9wdGlvbiA9PT0gZW51bVNoYXJlT3B0aW9uLkNPTExBQk9SQVRJT05fTVNURUFNU19DQVJEKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fZ2V0U2hhcmVBc0NhcmRWaXNpYmlsaXR5KCk7XG5cdFx0fVxuXHRcdC8vIE5vIG92ZXJyaWRlcyBmb3IgU2hhcmUgYXMgVGFiIGFuZCBDaGF0IHlldC5cblxuXHRcdGNvbnN0IG1zVGVhbXNPcHRpb25SZWYgPSB0aGlzLl9nZXRNZW51SXRlbVJlZmVyZW5jZShvcHRpb24pO1xuXHRcdHJldHVybiBtc1RlYW1zT3B0aW9uUmVmPy5jdXJyZW50ID8gdGhpcy5fZ2V0U2hvd01zVGVhbXNPcHRpb25zRXhwcmVzc2lvbigpIDogY29uc3RhbnQoZmFsc2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldCB2aXNpYmxpdHkgb2YgaW5kaXZpZHVhbCBzaGFyZSBvcHRpb24ncyBNZW51SXRlbS5cblx0ICogQHBhcmFtIG9wdGlvbiBTaGFyZSBvcHRpb24ga2V5XG5cdCAqIEBwYXJhbSBleHByZXNzaW9uIFZpc2liaWxpdHkgYmluZGluZyB0b29sa2l0IGV4cHJlc3Npb25cblx0ICovXG5cdF9zZXRTaGFyZU9wdGlvblZpc2liaWxpdHkob3B0aW9uOiBTaGFyZU9wdGlvbktleSwgZXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+KTogdm9pZCB7XG5cdFx0Y29uc3QgbWVudUl0ZW1SZWYgPSB0aGlzLl9nZXRNZW51SXRlbVJlZmVyZW5jZShvcHRpb24pO1xuXHRcdGlmIChtZW51SXRlbVJlZj8uY3VycmVudCkge1xuXHRcdFx0dGhpcy5fYmluZFVJVmlzaWJpbGl0eShtZW51SXRlbVJlZi5jdXJyZW50LCBleHByZXNzaW9uKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQmluZCB0aGUgVUkgZWxlbWVudCdzIHZpc2liaWxpdHkgcHJvcGVydHkuXG5cdCAqIEBwYXJhbSBpdGVtIFVJIGVsZW1lbnRcblx0ICogQHBhcmFtIGV4cHJlc3Npb24gRXhwcmVzc2lvbiB0byBiaW5kLlxuXHQgKi9cblx0X2JpbmRVSVZpc2liaWxpdHkoaXRlbTogTWVudUJ1dHRvbiB8IE1lbnVJdGVtIHwgQ29tbWFuZEV4ZWN1dGlvbiwgZXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+KTogdm9pZCB7XG5cdFx0Ly8gTk9URTogV2UgbmVlZCBjb252ZXJ0IHRoZSBiaW5kaW5nIHRvb2xraXQgZXhwcmVzc2lvbiB0byB0aGUgZm9ybWF0IHRoYXQgY2FuIGJlIGNvbnN1bWVkIGJ5IHRoZSBVSSBlbGVtZW50LlxuXHRcdC8vIEF0IHJ1bnRpbWUsIHdlIGNhbid0IHVzZSBiaW5kaW5nIHRvb2xraXQgZXhwcmVzc2lvbiBvciBjb21waWxlZCBleHByZXNzaW9uIGRpcmVjdGx5IHRvIGJpbmQgdGhlIHZpc2liaWxpdHkgb3Igc2V0IHRoZSB2aXNpYmxlIHByb3BlcnR5IG9yIHRoZSBVSSBlbGVtZW50LlxuXHRcdC8vIFdlIHdvdWxkIG5lZWQgdG8gY29udmVydCB0aGUgYmluZGluZyB0b29sa2l0IGV4cHJlc3Npb24gLT4gVUk1IEJpbmRpbmdJbmZvIHRvIGJpbmQgdGhlIFVJIGVsZW1lbnQuXG5cdFx0Y29uc3QgY29tcGlsZWRFeHAgPSBjb21waWxlRXhwcmVzc2lvbihleHByZXNzaW9uKTtcblxuXHRcdGlmIChjb21waWxlZEV4cCAmJiBjb21waWxlZEV4cC5zdGFydHNXaXRoKFwie1wiKSAmJiBjb21waWxlZEV4cD8uZW5kc1dpdGgoXCJ9XCIpKSB7XG5cdFx0XHQvLyBQcm9iYWJsZSBiaW5kaW5nXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBwYXJzZWRFeHAgPSBCaW5kaW5nSW5mby5wYXJzZShjb21waWxlZEV4cCk7XG5cdFx0XHRcdGl0ZW0uYmluZFByb3BlcnR5KFwidmlzaWJsZVwiLCBwYXJzZWRFeHApO1xuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdExvZy5lcnJvcihlcnIgYXMgc3RyaW5nKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGNvbXBpbGVkRXhwID09PSBcImZhbHNlXCIpIHtcblx0XHRcdC8vIFN0YXRpY2FsbHkgZmFsc2Vcblx0XHRcdGl0ZW0udW5iaW5kUHJvcGVydHkoXCJ2aXNpYmxlXCIsIHRydWUpO1xuXHRcdFx0aXRlbS5zZXRWaXNpYmxlKGZhbHNlKTtcblx0XHR9XG5cdH1cblxuXHRfZ2V0U2hhcmVCbG9ja0NvbmZpZyh2aWV3OiBWaWV3KTogQ29uZmlnT3B0aW9ucyB7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSB2aWV3LmdldFZpZXdEYXRhKCkgYXMgVmlld0RhdGE7XG5cdFx0Y29uc3Qgdmlld1NoYXJlQ29uZmlncyA9IHZpZXdEYXRhPy5zaGFyZTtcblx0XHRjb25zdCBjb250cm9sbGVyID0gdmlldy5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXI7XG5cdFx0Y29uc3QgZmVBcHBTaGFyZUNvbmZpZ3MgPSBjb250cm9sbGVyLmdldEFwcENvbXBvbmVudCgpLmdldE1hbmlmZXN0RW50cnkoXCJzYXAuZmVcIik/LmFwcD8uc2hhcmU7XG5cblx0XHRjb25zdCBzaG93U2VuZEVtYWlsID0gdGhpcy5fZ2V0T3B0aW9uQmxvY2tDb25maWcoZmVBcHBTaGFyZUNvbmZpZ3M/LnNob3dTZW5kRW1haWwsIHZpZXdTaGFyZUNvbmZpZ3M/LnNob3dTZW5kRW1haWwpO1xuXHRcdGNvbnN0IHNob3dDb2xsYWJvcmF0aW9uTWFuYWdlciA9IHRoaXMuX2dldE9wdGlvbkJsb2NrQ29uZmlnKFxuXHRcdFx0ZmVBcHBTaGFyZUNvbmZpZ3M/LnNob3dDb2xsYWJvcmF0aW9uTWFuYWdlcixcblx0XHRcdHZpZXdTaGFyZUNvbmZpZ3M/LnNob3dDb2xsYWJvcmF0aW9uTWFuYWdlclxuXHRcdCk7XG5cblx0XHRjb25zdCBzaG93TXNUZWFtc09wdGlvbnMgPSB0aGlzLl9nZXRPcHRpb25CbG9ja0NvbmZpZyhcblx0XHRcdGZlQXBwU2hhcmVDb25maWdzPy50ZWFtcz8uc2hvd01zVGVhbXNPcHRpb25zLFxuXHRcdFx0dmlld1NoYXJlQ29uZmlncz8udGVhbXM/LnNob3dNc1RlYW1zT3B0aW9uc1xuXHRcdCk7XG5cdFx0Y29uc3QgZW5hYmxlQ2FyZCA9IHRoaXMuX2dldE9wdGlvbkJsb2NrQ29uZmlnKGZlQXBwU2hhcmVDb25maWdzPy50ZWFtcz8uYXNDYXJkLCB2aWV3U2hhcmVDb25maWdzPy50ZWFtcz8uYXNDYXJkKTtcblxuXHRcdHJldHVybiB7IHNob3dTZW5kRW1haWwsIHNob3dNc1RlYW1zT3B0aW9ucywgZW5hYmxlQ2FyZCwgc2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyIH07XG5cdH1cblxuXHRfZ2V0T3B0aW9uQmxvY2tDb25maWcoZmVBcHBTZXR0aW5nPzogYm9vbGVhbiB8IHN0cmluZywgdmlld0xldmVsU2V0dGluZz86IGJvb2xlYW4gfCBzdHJpbmcpOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB7XG5cdFx0Y29uc3QgZmVBcHBFeHAgPSB0eXBlb2YgZmVBcHBTZXR0aW5nID09PSBcInN0cmluZ1wiID8gcmVzb2x2ZUJpbmRpbmdTdHJpbmc8Ym9vbGVhbj4oZmVBcHBTZXR0aW5nKSA6IGNvbnN0YW50KGZlQXBwU2V0dGluZyA/PyB0cnVlKTtcblx0XHRjb25zdCB2aWV3TGV2ZWxFeHAgPVxuXHRcdFx0dHlwZW9mIHZpZXdMZXZlbFNldHRpbmcgPT09IFwic3RyaW5nXCIgPyByZXNvbHZlQmluZGluZ1N0cmluZzxib29sZWFuPih2aWV3TGV2ZWxTZXR0aW5nKSA6IGNvbnN0YW50KHZpZXdMZXZlbFNldHRpbmcgPz8gdHJ1ZSk7XG5cdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGFuZChmZUFwcEV4cCwgdmlld0xldmVsRXhwKSk7XG5cdH1cblxuXHRjcmVhdGVDb250ZW50KGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50KTogU2hhcmVBUEkge1xuXHRcdC8vIEN0cmwrU2hpZnQrUyBpcyBuZWVkZWQgZm9yIHRoZSB0aW1lIGJlaW5nIGJ1dCB0aGlzIG5lZWRzIHRvIGJlIHJlbW92ZWQgYWZ0ZXIgYmFja2xvZyBmcm9tIG1lbnUgYnV0dG9uXG5cdFx0Y29uc3QgbWVudUJ1dHRvbiA9IChcblx0XHRcdDxTaGFyZUFQSSBpZD17dGhpcy5zaGFyZUFQSUlkfT5cblx0XHRcdFx0PE92ZXJmbG93VG9vbGJhck1lbnVCdXR0b25cblx0XHRcdFx0XHR0ZXh0PXtcIntzYXAuZmUuaTE4bj5NX0NPTU1PTl9TQVBGRV9BQ1RJT05fU0hBUkV9XCJ9XG5cdFx0XHRcdFx0cmVmPXt0aGlzLm1lbnVCdXR0b259XG5cdFx0XHRcdFx0aWNvbj17XCJzYXAtaWNvbjovL2FjdGlvblwifVxuXHRcdFx0XHRcdHRvb2x0aXA9e1wie3NhcC5mZS5pMThuPk1fQ09NTU9OX1NBUEZFX0FDVElPTl9TSEFSRX0gKEN0cmwrU2hpZnQrUylcIn1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdDxNZW51IHJlZj17dGhpcy5tZW51fT48L01lbnU+XG5cdFx0XHRcdDwvT3ZlcmZsb3dUb29sYmFyTWVudUJ1dHRvbj5cblx0XHRcdDwvU2hhcmVBUEk+XG5cdFx0KSBhcyBTaGFyZUFQSTtcblx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKClcblx0XHRcdC5nZXRWaWV3KClcblx0XHRcdC5hZGREZXBlbmRlbnQoXG5cdFx0XHRcdDxDb21tYW5kRXhlY3V0aW9uXG5cdFx0XHRcdFx0cmVmPXt0aGlzLmNtZEV4ZWN1dGlvbn1cblx0XHRcdFx0XHRjb21tYW5kPVwiU2hhcmVcIlxuXHRcdFx0XHRcdGV4ZWN1dGU9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdHRoaXMubWVudUJ1dHRvbi5jdXJyZW50Py5nZXRNZW51KCkub3BlbkJ5KHRoaXMubWVudUJ1dHRvbi5jdXJyZW50LCB0cnVlKTtcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHQvLyBUaGUgaW5pdGlhbGl6YXRpb24gaXMgYXN5bmNocm9ub3VzLCBzbyB3ZSBqdXN0IHRyaWdnZXIgaXQgYW5kIGhvcGUgZm9yIHRoZSBiZXN0IDpEXG5cdFx0dGhpcy5pc0luaXRpYWxpemVkID0gdGhpcy5faW5pdGlhbGl6ZU1lbnVJdGVtcyh0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkuZ2V0VmlldygpLCBhcHBDb21wb25lbnQpLmNhdGNoKChlcnJvcikgPT4ge1xuXHRcdFx0TG9nLmVycm9yKGVycm9yIGFzIHN0cmluZyk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLnNldExheW91dERhdGEoXG5cdFx0XHRuZXcgT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YSh7XG5cdFx0XHRcdHByaW9yaXR5OiB0aGlzLnByaW9yaXR5XG5cdFx0XHR9KVxuXHRcdCk7XG5cdFx0cmV0dXJuIG1lbnVCdXR0b247XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBwcm9wZXJ0aWVzIGZvciB0aGUgaW50ZXJmYWNlIElPdmVyZmxvd1Rvb2xiYXJDb250ZW50LlxuXHQgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBjb25maWd1cmF0aW9uIG9mIElPdmVyZmxvd1Rvb2xiYXJDb250ZW50XG5cdCAqL1xuXHRnZXRPdmVyZmxvd1Rvb2xiYXJDb25maWcoKTogb2JqZWN0IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Y2FuT3ZlcmZsb3c6IHRydWUsXG5cdFx0XHRvbkJlZm9yZUVudGVyT3ZlcmZsb3c6IGZ1bmN0aW9uIChvQ29udHJvbDogU2hhcmUpOiB2b2lkIHtcblx0XHRcdFx0KG9Db250cm9sPy5nZXRDb250ZW50KCk/LmdldENvbnRlbnQoKSBhcyBPdmVyZmxvd1Rvb2xiYXJNZW51QnV0dG9uKS5nZXRUZXh0ID0gZnVuY3Rpb24gKCk6IHN0cmluZyB7XG5cdFx0XHRcdFx0Y29uc3QgcmVzb3VyY2VNb2RlbCA9IGdldFJlc291cmNlTW9kZWwob0NvbnRyb2wgYXMgQ29udHJvbCk7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc291cmNlTW9kZWwuZ2V0VGV4dChcIk1fQ09NTU9OX1NBUEZFX0FDVElPTl9TSEFSRVwiKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHRvbkFmdGVyRXhpdE92ZXJmbG93OiBmdW5jdGlvbiAob0NvbnRyb2w6IFNoYXJlKTogdm9pZCB7XG5cdFx0XHRcdChvQ29udHJvbD8uZ2V0Q29udGVudCgpPy5nZXRDb250ZW50KCkgYXMgT3ZlcmZsb3dUb29sYmFyTWVudUJ1dHRvbikuZ2V0VGV4dCA9IGZ1bmN0aW9uICgpOiBzdHJpbmcge1xuXHRcdFx0XHRcdHJldHVybiBcIlwiO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdHByaW9yaXR5OiB0aGlzLnByaW9yaXR5XG5cdFx0fTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
969
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlbnVtTVNUZWFtc09wdGlvbiIsIkNPTExBQk9SQVRJT05fTVNURUFNU19DQVJEIiwiQ09MTEFCT1JBVElPTl9NU1RFQU1TX1RBQiIsIkNPTExBQk9SQVRJT05fTVNURUFNU19DSEFUIiwiZW51bVNoYXJlT3B0aW9uIiwiU0VORF9FTUFJTCIsIlNIQVJFX0pBTSIsIlNBVkVfQVNfVElMRSIsIk1TX1RFQU1TX0dST1VQIiwiU0hBUkVfQ09MTEFCT1JBVElPTl9NQU5BR0VSIiwiU2hhcmUiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsIl9kZWMzIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiX2RlYzQiLCJhZ2dyZWdhdGlvbiIsImRlZmF1bHRDbGFzcyIsIlNoYXJlT3B0aW9ucyIsImlzRGVmYXVsdCIsIl9kZWM1IiwiZGVmYXVsdFZhbHVlIiwiT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHkiLCJIaWdoIiwiX2RlYzYiLCJNc1RlYW1zT3B0aW9ucyIsIl9kZWM3IiwiZGVmaW5lUmVmZXJlbmNlIiwiX2RlYzgiLCJfZGVjOSIsIl9kZWMxMCIsIl9kZWMxMSIsIl9kZWMxMiIsIl9kZWMxMyIsIl9kZWMxNCIsIl9kZWMxNSIsIl9kZWMxNiIsIl9kZWMxNyIsIl9kZWMxOCIsIl9kZWMxOSIsIl9kZWMyMCIsIl9kZWMyMSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsImlkT3JQcm9wcyIsInByb3BzIiwiX3RoaXMiLCJzaGFyZUFQSUlkIiwiaWQiLCJ1bmRlZmluZWQiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2Rlc2NyaXB0b3IxMiIsIl9kZXNjcmlwdG9yMTMiLCJfZGVzY3JpcHRvcjE0IiwiX2Rlc2NyaXB0b3IxNSIsIl9kZXNjcmlwdG9yMTYiLCJfZGVzY3JpcHRvcjE3IiwiX2Rlc2NyaXB0b3IxOCIsIl9kZXNjcmlwdG9yMTkiLCJfZGVzY3JpcHRvcjIwIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJfb3duZXJDb21wb25lbnQiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsImdldEFwcENvbXBvbmVudCIsIl9pbml0aWFsaXplTWVudUl0ZW1zIiwidmlldyIsImFwcENvbXBvbmVudCIsImlzVGVhbXNNb2RlQWN0aXZlIiwiZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJnZXRDYXBhYmlsaXRpZXMiLCJDb2xsYWJvcmF0aW9uIiwiZGVmYXVsdCIsIkNvbGxhYm9yYXRpb25IZWxwZXIiLCJfX3VpNV9yZXF1aXJlX2FzeW5jIiwibWVudUJ1dHRvbiIsImN1cnJlbnQiLCJ1bmJpbmRQcm9wZXJ0eSIsInNldFZpc2libGUiLCJjb250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsInNoZWxsU2VydmljZXMiLCJnZXRTaGVsbFNlcnZpY2VzIiwiaXNQbHVnaW5JbmZvU3RhYmxlIiwid2FpdEZvclBsdWdpbnNMb2FkIiwiaW50ZXJuYWxCdXR0b24iLCJnZXRBZ2dyZWdhdGlvbiIsImF0dGFjaEV2ZW50T25jZSIsIl9ibG9ja0ludGVybmFsQ29uZmlnIiwiX2dldFNoYXJlQmxvY2tDb25maWciLCJfYWRkTWVudUl0ZW1zIiwic2V0U2hhcmVPcHRpb25zVmlzaWJpbGl0eSIsIl9hZGRTZW5kRW1haWxPcHRpb24iLCJfYWRkU2hlbGxCYXNlZE1lbnVJdGVtcyIsIl9hZGRQcmludE9wdGlvbnMiLCJfYWRkRXhwb3J0RXhjZWxPcHRpb25zIiwiX2FkZEV4cG9ydENTVk9wdGlvbnMiLCJfYWRkRXhwb3J0UERGT3B0aW9ucyIsIl9jYWxsTWFuaWZlc3RBY3Rpb25zRXZlbnRzIiwic2hhcmVPcHRpb25Qcm9wIiwidmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsInNoYXJlQWN0aW9uUHJvcHMiLCJzaGFyZSIsIm1vZHVsZSIsInByZXNzIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJyZXBsYWNlIiwibWV0aG9kIiwibGVuZ3RoIiwiRlBNSGVscGVyIiwibG9hZE1vZHVsZUFuZENhbGxNZXRob2QiLCJMb2ciLCJlcnJvciIsImhhc093blByb3BlcnR5IiwicHJpbnQiLCJtZW51IiwiYWRkSXRlbSIsIl9qc3giLCJNZW51SXRlbSIsInJlZiIsInByaW50TWVudUl0ZW0iLCJ0ZXh0IiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJpY29uIiwiUFJJTlRfSUNPTiIsImV4cG9ydFRvU3ByZWFkc2hlZXQiLCJleHBvcnRUb1NwcmVhZHNoZWV0TWVudUl0ZW0iLCJFWFBPUlRfVE9fU1BSRUFEU0hFRVRfSUNPTiIsImV4cG9ydFRvQ1NWIiwiZXhwb3J0VG9DU1ZNZW51SXRlbSIsIkVYUE9SVF9UT19DU1ZfSUNPTiIsImV4cG9ydFRvUERGIiwiZXhwb3J0VG9QREZNZW51SXRlbSIsIkVYUE9SVF9UT19QREZfSUNPTiIsInNoYXJlT3B0aW9ucyIsInNob3dTZW5kRW1haWwiLCJzZW5kRW1haWxNZW51SXRlbSIsIl90cmlnZ2VyRW1haWwiLCJoYXNVc2hlbGwiLCJoYXNVU2hlbGwiLCJfYWRkU2hhcmVWaWFKQU1PcHRpb24iLCJfYWRkTVNUZWFtc09wdGlvbnMiLCJfYWRkQ29sbGFib3JhdGlvbk1hbmFnZXJPcHRpb24iLCJfYWRkU2F2ZUFzVGlsZU9wdGlvbiIsImNvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UiLCJnZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlIiwiY29sbGFib3JhdGlvbk9wdGlvbiIsImdldENvbGxhYm9yYXRpb25NYW5hZ2VyT3B0aW9uIiwic2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyIiwibWVudUl0ZW0iLCJzaGFyZUFzQ29sbGFib3JhdGlvbk1hbmFnZXIiLCJldmVudCIsIl9jb2xsYWJvcmF0aW9uTWFuYWdlckJ1dHRvblByZXNzIiwiRkVTUkhlbHBlciIsInNldFNlbWFudGljU3RlcG5hbWUiLCJmZXNyU3RlcE5hbWUiLCJlcnIiLCJtZXNzYWdlIiwiRXJyb3IiLCJTdHJpbmciLCJjb2xsYWJvcmF0aW9uQ2FsbEJhY2siLCJjbGlja2VkTWVudUl0ZW0iLCJnZXRTb3VyY2UiLCJDb21tb25VdGlscyIsImdldFRhcmdldFZpZXciLCJfYWRhcHRTaGFyZU1ldGFkYXRhIiwic2hhcmVJbmZvTW9kZWwiLCJnZXRNb2RlbCIsInNoYXJlSW5mbyIsImdldERhdGEiLCJjb2xsYWJvcmF0aW9uSW5mbyIsImFwcFRpdGxlIiwidXJsIiwiaGFzSmFtIiwiaXNKYW1BY3RpdmUiLCJzaGFyZVZpYUpBTU1lbnVJdGVtIiwiX3RyaWdnZXJTaGFyZVRvSmFtIiwic2hvd01zVGVhbXNPcHRpb25zIiwic2hhcmVDb2xsYWJvcmF0aW9uT3B0aW9ucyIsImdldFRlYW1zQ29sbGFiT3B0aW9uc1ZpYVNoYXJlIiwiaXNTaGFyZUFzQ2FyZEVuYWJsZWQiLCJfZ2V0SXNTaGFyZUFzQ2FyZEVuYWJsZWQiLCJtZW51SXRlbVNldHRpbmdzIiwiX2dldE1zVGVhbXNNZW51SXRlbVNldHRpbmdzIiwic3ViT3B0aW9ucyIsIml0ZW1zIiwibWVudUl0ZW1LZXkiLCJBcnJheSIsImlzQXJyYXkiLCJrZXkiLCJfYWRkTXNUZWFtc01lbnVJdGVtIiwiQWRkQm9va21hcmtCdXR0b24iLCJhZGRCb29rbWFya0J1dHRvbiIsImdldEVuYWJsZWQiLCJzYXZlQXNUaWxlTWVudUl0ZW0iLCJnZXRUZXh0IiwiZ2V0SWNvbiIsIl9zYXZlQXNUaWxlIiwiY2hpbGRyZW4iLCJkZXBlbmRlbnRzIiwiZGVzdHJveSIsInNob3dTaGFyZUFzQ2FyZCIsIm1zVGVhbXNPcHRpb25zIiwiZW5hYmxlQ2FyZCIsIkJvb2xlYW4iLCJCaW5kaW5nSW5mbyIsInBhcnNlIiwiX2dldE1zVGVhbXNTdWJPcHRpb25zIiwiY29sbGFib3JhdGlvbk1lbnVJdGVtUHJlc3MiLCJDdXN0b21EYXRhIiwidmFsdWUiLCJfZ2V0TWVudUl0ZW1SZWZlcmVuY2UiLCJjdXN0b21EYXRhIiwiYXR0YWNoUHJlc3MiLCJyZWR1Y2UiLCJtZW51SXRlbXMiLCJzdWJPcHRpb24iLCJzdWJNZW51SXRlbSIsImNvbGxhYm9yYXRpb25EYXRhIiwiZGF0YSIsInRlYW1zSGVscGVyU2VydmljZSIsImdldENvbGxhYm9yYXRpb25TZXJ2aWNlcyIsIm9UZWFtc0hlbHBlclNlcnZpY2UiLCJpc0ZlYXR1cmVGbGFnRW5hYmxlZCIsImNhcmREZWZpbml0aW9uIiwiZ2V0Q2FyZERlZmluaXRpb24iLCJjYXJkSWQiLCJzaGVsbFNlcnZpY2VIZWxwZXIiLCJzZW1hbnRpY09iamVjdCIsImFjdGlvbiIsInBhcnNlU2hlbGxIYXNoIiwiZG9jdW1lbnQiLCJsb2NhdGlvbiIsImhhc2giLCJyZWFzb24iLCJpbmZvIiwib3B0aW9uS2V5cyIsIk9iamVjdCIsImtleXMiLCJ2aXNpYmxlQmluZGluZ0V4cHMiLCJiaW5kaW5nVG9vbGtpdEV4cHMiLCJvcHRpb24iLCJleHAiLCJfZ2V0U2hhcmVPcHRpb25WaXNpYmlsaXR5RXhwcmVzc2lvbiIsIl9zZXRTaGFyZU9wdGlvblZpc2liaWxpdHkiLCJzaGFyZUJsb2NrVmlzaWJsZUV4cCIsIm9yIiwiY21kRXhlY3V0aW9uIiwiX2JpbmRVSVZpc2liaWxpdHkiLCJzaGFyZUFzQ2FyZE1lbnVJdGVtIiwic2hhcmVWaWFDaGF0TWVudUl0ZW0iLCJzaGFyZUFzVGFiTWVudUl0ZW0iLCJtc1RlYW1zR3JvdXBNZW51SXRlbSIsIm9wdGlvbk1lbnVJdGVtUmVmIiwiY29uc3RhbnQiLCJfZ2V0TVNUZWFtc1NoYXJlT3B0aW9uVmlzaWJpbGl0eSIsIl9nZXRDb2xsYWJvcmF0aW9uT3B0aW9uRXhwcmVzc2lvbiIsInJlc29sdmVCaW5kaW5nU3RyaW5nIiwiaW50ZXJuYWxPcHRpb24iLCJpc0NvbnN0YW50IiwiYW5kIiwibXNUZWFtc0NvbmZpZ0V4cCIsIl9nZXRTaG93TXNUZWFtc09wdGlvbnNFeHByZXNzaW9uIiwibXNUZWFtc09wdGlvbnNWYWx1ZSIsImFsbE1TVGVhbXNPcHRpb25zRXhwcyIsImJpbmRpbmdUb29sa2l0RXhwIiwibXNUZWFtc09wdGlvbiIsIm1zVGVhbU9wdGlvbkV4cCIsIm9wdGlvbkV4cCIsImludGVybmFsT3B0aW9uRXhwIiwiX2dldFNoYXJlQXNDYXJkVmlzaWJpbGl0eSIsInNoYXJlQXNDYXJkT3B0aW9uUmVmIiwiZXhwU2hvd01TVGVhbXNPcHRpb25zIiwiZXhwU2hvd1NoYXJlQXNDYXJkIiwibm90IiwiVUkiLCJJc0VkaXRhYmxlIiwibXNUZWFtc09wdGlvblJlZiIsImV4cHJlc3Npb24iLCJtZW51SXRlbVJlZiIsIml0ZW0iLCJjb21waWxlZEV4cCIsImNvbXBpbGVFeHByZXNzaW9uIiwic3RhcnRzV2l0aCIsImVuZHNXaXRoIiwicGFyc2VkRXhwIiwiYmluZFByb3BlcnR5Iiwidmlld1NoYXJlQ29uZmlncyIsImZlQXBwU2hhcmVDb25maWdzIiwiZ2V0TWFuaWZlc3RFbnRyeSIsImFwcCIsIl9nZXRPcHRpb25CbG9ja0NvbmZpZyIsInRlYW1zIiwiYXNDYXJkIiwiZmVBcHBTZXR0aW5nIiwidmlld0xldmVsU2V0dGluZyIsImZlQXBwRXhwIiwidmlld0xldmVsRXhwIiwiU2hhcmVBUEkiLCJPdmVyZmxvd1Rvb2xiYXJNZW51QnV0dG9uIiwidG9vbHRpcCIsIk1lbnUiLCJnZXRQYWdlQ29udHJvbGxlciIsImdldFZpZXciLCJhZGREZXBlbmRlbnQiLCJDb21tYW5kRXhlY3V0aW9uIiwiY29tbWFuZCIsImV4ZWN1dGUiLCJnZXRNZW51Iiwib3BlbkJ5IiwiaXNJbml0aWFsaXplZCIsImNhdGNoIiwic2V0TGF5b3V0RGF0YSIsIk92ZXJmbG93VG9vbGJhckxheW91dERhdGEiLCJwcmlvcml0eSIsImdldE92ZXJmbG93VG9vbGJhckNvbmZpZyIsImNhbk92ZXJmbG93Iiwib25CZWZvcmVFbnRlck92ZXJmbG93Iiwib0NvbnRyb2wiLCJnZXRDb250ZW50IiwicmVzb3VyY2VNb2RlbCIsImdldFJlc291cmNlTW9kZWwiLCJvbkFmdGVyRXhpdE92ZXJmbG93IiwiQnVpbGRpbmdCbG9jayIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiU2hhcmUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCBFbWJlZGRlZFVJNUJpbmRpbmdFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBhbmQsIGNvbXBpbGVFeHByZXNzaW9uLCBjb25zdGFudCwgaXNDb25zdGFudCwgbm90LCBvciwgcmVzb2x2ZUJpbmRpbmdTdHJpbmcgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGRlZmluZVJlZmVyZW5jZSwgZGVmaW5lVUk1Q2xhc3MsIGltcGxlbWVudEludGVyZmFjZSwgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9qc3gtcnVudGltZS9qc3hcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBDb21tYW5kRXhlY3V0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9scy9Db21tYW5kRXhlY3V0aW9uXCI7XG5pbXBvcnQgeyBVSSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgSVNoZWxsU2VydmljZXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvU2hlbGxTZXJ2aWNlc0ZhY3RvcnlcIjtcbmltcG9ydCBNZW51IGZyb20gXCJzYXAvbS9NZW51XCI7XG5pbXBvcnQgdHlwZSBNZW51QnV0dG9uIGZyb20gXCJzYXAvbS9NZW51QnV0dG9uXCI7XG5pbXBvcnQgdHlwZSB7ICRNZW51SXRlbVNldHRpbmdzIH0gZnJvbSBcInNhcC9tL01lbnVJdGVtXCI7XG5pbXBvcnQgTWVudUl0ZW0gZnJvbSBcInNhcC9tL01lbnVJdGVtXCI7XG5pbXBvcnQgdHlwZSB7IENvbGxhYm9yYXRpb25PcHRpb25LZXksIENvbGxhYm9yYXRpb25PcHRpb25zIH0gZnJvbSBcInNhcC9zdWl0ZS91aS9jb21tb25zL2NvbGxhYm9yYXRpb24vVGVhbXNIZWxwZXJTZXJ2aWNlXCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCBDdXN0b21EYXRhIGZyb20gXCJzYXAvdWkvY29yZS9DdXN0b21EYXRhXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCBGRVNSSGVscGVyIGZyb20gXCJzYXAvdWkvcGVyZm9ybWFuY2UvdHJhY2UvRkVTUkhlbHBlclwiO1xuXG5pbXBvcnQgdHlwZSBUZW1wbGF0ZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQge1xuXHRFWFBPUlRfVE9fQ1NWX0lDT04sXG5cdEVYUE9SVF9UT19QREZfSUNPTixcblx0RVhQT1JUX1RPX1NQUkVBRFNIRUVUX0lDT04sXG5cdFBSSU5UX0lDT05cbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IEZQTUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9GUE1IZWxwZXJcIjtcbmltcG9ydCB7IGdldFJlc291cmNlTW9kZWwgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9SZXNvdXJjZU1vZGVsSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IFZpZXdEYXRhIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1RlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IFNoYXJlT3B0aW9ucyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9zaGFyZS9TaGFyZU9wdGlvbnNcIjtcbmltcG9ydCBPdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhIGZyb20gXCJzYXAvbS9PdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhXCI7XG5pbXBvcnQgT3ZlcmZsb3dUb29sYmFyTWVudUJ1dHRvbiBmcm9tIFwic2FwL20vT3ZlcmZsb3dUb29sYmFyTWVudUJ1dHRvblwiO1xuaW1wb3J0IHsgT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHkgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IEJpbmRpbmdJbmZvIGZyb20gXCJzYXAvdWkvYmFzZS9CaW5kaW5nSW5mb1wiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBNc1RlYW1zT3B0aW9ucyBmcm9tIFwiLi9zaGFyZS9Nc1RlYW1zT3B0aW9uc1wiO1xuaW1wb3J0IFNoYXJlQVBJIGZyb20gXCIuL3NoYXJlL1NoYXJlQVBJXCI7XG5cbi8vIE1TIFRlYW1zIG9wdGlvbnMgYXJlIG5vdCBwdWJsaWMgdmlhIFNoYXJlIGJ1aWxkaW5nIGJsb2NrLlxuLy8gU28sICdzaG93TXNUZWFtc09wdGlvbnMnIGlzIGludGVybmFsIGFuZCBzaGFsbCBiZSBvbmx5IHBpY2tlZCBmcm9tIHRlbXBsYXRlIG1hbmlmZXN0LlxudHlwZSBJbnRlcm5hbFNoYXJlT3B0aW9ucyA9IFByb3BlcnRpZXNPZjxTaGFyZU9wdGlvbnM+O1xuXG50eXBlIFNoYXJlT3B0aW9uS2V5ID1cblx0fCBDb2xsYWJvcmF0aW9uT3B0aW9uS2V5XG5cdHwgXCJTRU5EX0VNQUlMXCJcblx0fCBcIlNIQVJFX0pBTVwiXG5cdHwgXCJTQVZFX0FTX1RJTEVcIlxuXHR8IFwiTVNfVEVBTVNfR1JPVVBcIlxuXHR8IFwiU0hBUkVfQ09MTEFCT1JBVElPTl9NQU5BR0VSXCI7XG5cbmNvbnN0IGVudW1NU1RlYW1zT3B0aW9uOiB7XG5cdFtrZXkgaW4gQ29sbGFib3JhdGlvbk9wdGlvbktleV06IENvbGxhYm9yYXRpb25PcHRpb25LZXk7XG59ID0ge1xuXHRDT0xMQUJPUkFUSU9OX01TVEVBTVNfQ0FSRDogXCJDT0xMQUJPUkFUSU9OX01TVEVBTVNfQ0FSRFwiLFxuXHRDT0xMQUJPUkFUSU9OX01TVEVBTVNfVEFCOiBcIkNPTExBQk9SQVRJT05fTVNURUFNU19UQUJcIixcblx0Q09MTEFCT1JBVElPTl9NU1RFQU1TX0NIQVQ6IFwiQ09MTEFCT1JBVElPTl9NU1RFQU1TX0NIQVRcIlxufTtcblxuY29uc3QgZW51bVNoYXJlT3B0aW9uOiB7XG5cdFtrZXkgaW4gU2hhcmVPcHRpb25LZXldOiBTaGFyZU9wdGlvbktleTtcbn0gPSB7XG5cdC4uLmVudW1NU1RlYW1zT3B0aW9uLFxuXHQuLi57XG5cdFx0U0VORF9FTUFJTDogXCJTRU5EX0VNQUlMXCIsXG5cdFx0U0hBUkVfSkFNOiBcIlNIQVJFX0pBTVwiLFxuXHRcdFNBVkVfQVNfVElMRTogXCJTQVZFX0FTX1RJTEVcIixcblx0XHRNU19URUFNU19HUk9VUDogXCJNU19URUFNU19HUk9VUFwiLFxuXHRcdFNIQVJFX0NPTExBQk9SQVRJT05fTUFOQUdFUjogXCJTSEFSRV9DT0xMQUJPUkFUSU9OX01BTkFHRVJcIlxuXHR9XG59O1xuXG50eXBlIENvbmZpZ09wdGlvbnMgPSBJbnRlcm5hbFNoYXJlT3B0aW9ucyAmIFByb3BlcnRpZXNPZjxNc1RlYW1zT3B0aW9ucz47XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBjcmVhdGUgdGhlIOKAmFNoYXJl4oCZIGZ1bmN0aW9uYWxpdHkuXG4gKiA8YnI+XG4gKiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSAnU2hhcmUgaW4gU0FQIEphbScgb3B0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIHBsYXRmb3JtcyB0aGF0IGFyZSBpbnRlZ3JhdGVkIHdpdGggU0FQIEphbS5cbiAqIDxicj5cbiAqIElmIHlvdSBhcmUgY29uc3VtaW5nIHRoaXMgbWFjcm8gaW4gYW4gZW52aXJvbm1lbnQgd2hlcmUgdGhlIFNBUCBGaW9yaSBsYXVuY2hwYWQgaXMgbm90IGF2YWlsYWJsZSwgdGhlbiB0aGUgJ1NhdmUgYXMgVGlsZScgb3B0aW9uIGlzIG5vdCB2aXNpYmxlLlxuICpcbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICogPHByZT5cbiAqICZsdDttYWNyb3M6U2hhcmVcbiAqIGlkPVwic29tZUlEXCJcbiAqIHZpc2libGU9XCJ0cnVlXCJcbiAqIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqIHtAbGluayBkZW1vOnNhcC9mZS9jb3JlL2ZwbUV4cGxvcmVyL2luZGV4Lmh0bWwjL2J1aWxkaW5nQmxvY2tzL2ZlYXR1cmVzL3NoYXJlRGVmYXVsdCBPdmVydmlldyBvZiBCdWlsZGluZyBCbG9ja3N9XG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKiBAc2luY2UgMS45My4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuU2hhcmVcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNoYXJlIGV4dGVuZHMgQnVpbGRpbmdCbG9jazxTaGFyZUFQST4ge1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHB1YmxpYyBzaGFyZUFQSUlkPzogc3RyaW5nO1xuXG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAubS5JT3ZlcmZsb3dUb29sYmFyQ29udGVudFwiKVxuXHRfX2ltcGxlbWVudHNfX3NhcF9tX0lPdmVyZmxvd1Rvb2xiYXJDb250ZW50ID0gdHJ1ZTtcblxuXHQvKipcblx0ICogU3VwcG9ydGVkIFNoYXJlIG9wdGlvbnMge0BsaW5rIHNhcC5mZS5tYWNyb3Muc2hhcmUuU2hhcmVPcHRpb25zfS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3Muc2hhcmUuU2hhcmVPcHRpb25zXCIsXG5cdFx0ZGVmYXVsdENsYXNzOiBTaGFyZU9wdGlvbnMsXG5cdFx0aXNEZWZhdWx0OiB0cnVlXG5cdH0pXG5cdHB1YmxpYyBzaGFyZU9wdGlvbnM/OiBTaGFyZU9wdGlvbnM7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGRlZmF1bHRWYWx1ZTogT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHkuSGlnaFxuXHR9KVxuXHRwcmlvcml0eT86IHN0cmluZztcblxuXHQvKipcblx0ICogU3VwcG9ydGVkIE1pY3Jvc29mdCBUZWFtcyBvcHRpb25zLlxuXHQgKi9cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3Muc2hhcmUuTXNUZWFtc09wdGlvbnNcIixcblx0XHRkZWZhdWx0Q2xhc3M6IE1zVGVhbXNPcHRpb25zXG5cdH0pXG5cdHB1YmxpYyBtc1RlYW1zT3B0aW9ucz86IE1zVGVhbXNPcHRpb25zO1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRtZW51QnV0dG9uITogUmVmPE1lbnVCdXR0b24+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRjbWRFeGVjdXRpb24hOiBSZWY8Q29tbWFuZEV4ZWN1dGlvbj47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdG1lbnUhOiBSZWY8TWVudT47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdHNhdmVBc1RpbGVNZW51SXRlbSE6IFJlZjxNZW51SXRlbT47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdHNoYXJlQXNDb2xsYWJvcmF0aW9uTWFuYWdlciE6IFJlZjxNZW51SXRlbT47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdHNoYXJlVmlhSkFNTWVudUl0ZW0hOiBSZWY8TWVudUl0ZW0+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRzZW5kRW1haWxNZW51SXRlbSE6IFJlZjxNZW51SXRlbT47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdHNoYXJlQXNDYXJkTWVudUl0ZW0hOiBSZWY8TWVudUl0ZW0+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRzaGFyZVZpYUNoYXRNZW51SXRlbSE6IFJlZjxNZW51SXRlbT47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdHNoYXJlQXNUYWJNZW51SXRlbSE6IFJlZjxNZW51SXRlbT47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdG1zVGVhbXNHcm91cE1lbnVJdGVtITogUmVmPE1lbnVJdGVtPjtcblxuXHRAZGVmaW5lUmVmZXJlbmNlKClcblx0cHJpbnRNZW51SXRlbSE6IFJlZjxNZW51SXRlbT47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdGV4cG9ydFRvU3ByZWFkc2hlZXRNZW51SXRlbSE6IFJlZjxNZW51SXRlbT47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdGV4cG9ydFRvUERGTWVudUl0ZW0hOiBSZWY8TWVudUl0ZW0+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRleHBvcnRUb0NTVk1lbnVJdGVtITogUmVmPE1lbnVJdGVtPjtcblxuXHRwdWJsaWMgaXNJbml0aWFsaXplZD86IFByb21pc2U8dm9pZD47XG5cblx0cHJpdmF0ZSBfYmxvY2tJbnRlcm5hbENvbmZpZyE6IENvbmZpZ09wdGlvbnM7XG5cblx0Y29uc3RydWN0b3IoaWRPclByb3BzOiBzdHJpbmcgfCAoUHJvcGVydGllc09mPFNoYXJlPiAmICRDb250cm9sU2V0dGluZ3MpLCBwcm9wcz86IFByb3BlcnRpZXNPZjxTaGFyZT4gJiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0bGV0IHNoYXJlQVBJSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRpZiAodHlwZW9mIGlkT3JQcm9wcyAhPT0gXCJzdHJpbmdcIikge1xuXHRcdFx0cHJvcHMgPSBpZE9yUHJvcHM7XG5cdFx0XHRzaGFyZUFQSUlkID0gcHJvcHMuaWQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNoYXJlQVBJSWQgPSBpZE9yUHJvcHM7XG5cdFx0fVxuXHRcdHByb3BzID8/PSB7fTtcblx0XHRwcm9wcy5zaGFyZUFQSUlkID0gc2hhcmVBUElJZDtcblx0XHRwcm9wcy5pZCA9IHVuZGVmaW5lZDtcblx0XHRzdXBlcih1bmRlZmluZWQsIHByb3BzKTtcblx0fVxuXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoX293bmVyQ29tcG9uZW50OiBUZW1wbGF0ZUNvbXBvbmVudCk6IHZvaWQge1xuXHRcdHN1cGVyLm9uTWV0YWRhdGFBdmFpbGFibGUoX293bmVyQ29tcG9uZW50KTtcblx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoX293bmVyQ29tcG9uZW50LmdldEFwcENvbXBvbmVudCgpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIHNoYXJlIG9wdGlvbiBmcm9tIHRoZSBzaGVsbCBjb25maWd1cmF0aW9uIGFzeW5jaHJvbm91c2x5IGFuZCBwcmVwYXJlIHRoZSBjb250ZW50IG9mIHRoZSBtZW51IGJ1dHRvbi5cblx0ICogT3B0aW9ucyBvcmRlciBhcmU6XG5cdCAqIC0gU2VuZCBhcyBFbWFpbFxuXHQgKiAtIFNoYXJlIGFzIEphbSAoaWYgYXZhaWxhYmxlKVxuXHQgKiAtIFRlYW1zIG9wdGlvbnMgKGlmIGF2YWlsYWJsZSlcblx0ICogLSBTYXZlIGFzIHRpbGUuXG5cdCAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoaXMgYnVpbGRpbmcgYmxvY2sgaXMgdXNlZCBpblxuXHQgKiBAcGFyYW0gYXBwQ29tcG9uZW50IFRoZSBBcHBDb21wb25lbnQgaW5zdGFuY2Vcblx0ICovXG5cdGFzeW5jIF9pbml0aWFsaXplTWVudUl0ZW1zKHZpZXc6IFZpZXcsIGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0bGV0IGlzVGVhbXNNb2RlQWN0aXZlID0gZmFsc2U7XG5cdFx0aWYgKGFwcENvbXBvbmVudC5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpLkNvbGxhYm9yYXRpb24pIHtcblx0XHRcdGNvbnN0IHsgZGVmYXVsdDogQ29sbGFib3JhdGlvbkhlbHBlciB9ID0gYXdhaXQgaW1wb3J0KFwic2FwL3N1aXRlL3VpL2NvbW1vbnMvY29sbGFib3JhdGlvbi9Db2xsYWJvcmF0aW9uSGVscGVyXCIpO1xuXHRcdFx0aXNUZWFtc01vZGVBY3RpdmUgPSBhd2FpdCBDb2xsYWJvcmF0aW9uSGVscGVyLmlzVGVhbXNNb2RlQWN0aXZlKCk7XG5cdFx0fVxuXG5cdFx0aWYgKGlzVGVhbXNNb2RlQWN0aXZlKSB7XG5cdFx0XHQvL25lZWQgdG8gY2xlYXIgdGhlIHZpc2libGUgcHJvcGVydHkgYmluZGluZ3Mgb3RoZXJ3aXNlIHdoZW4gdGhlIGJpbmRpbmcgdmFsdWUgY2hhbmdlcyB0aGVuIGl0IHdpbGwgc2V0IGJhY2sgdGhlIHZpc2libGUgdG8gdGhlIHJlc29sdmVkIHZhbHVlXG5cdFx0XHR0aGlzLm1lbnVCdXR0b24uY3VycmVudD8udW5iaW5kUHJvcGVydHkoXCJ2aXNpYmxlXCIsIHRydWUpO1xuXHRcdFx0dGhpcy5tZW51QnV0dG9uLmN1cnJlbnQ/LnNldFZpc2libGUoZmFsc2UpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBjb250cm9sbGVyID0gdmlldy5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXI7XG5cdFx0Y29uc3Qgc2hlbGxTZXJ2aWNlcyA9IGFwcENvbXBvbmVudC5nZXRTaGVsbFNlcnZpY2VzKCk7XG5cdFx0Y29uc3QgaXNQbHVnaW5JbmZvU3RhYmxlID0gYXdhaXQgc2hlbGxTZXJ2aWNlcy53YWl0Rm9yUGx1Z2luc0xvYWQoKTtcblx0XHRpZiAoIWlzUGx1Z2luSW5mb1N0YWJsZSkge1xuXHRcdFx0Ly8gSW4gY2FzZSB0aGUgcGx1Z2luIGluZm8gaXMgbm90IHlldCBhdmFpbGFibGUgd2UgbmVlZCB0byBkbyB0aGlzIGNvbXB1dGF0aW9uIGFnYWluIG9uIHRoZSBuZXh0IGJ1dHRvbiBjbGlja1xuXHRcdFx0Y29uc3QgaW50ZXJuYWxCdXR0b24gPSB0aGlzLm1lbnVCdXR0b24uY3VycmVudD8uZ2V0QWdncmVnYXRpb24oXCJfY29udHJvbFwiKSBhcyBNYW5hZ2VkT2JqZWN0O1xuXHRcdFx0aW50ZXJuYWxCdXR0b24/LmF0dGFjaEV2ZW50T25jZShcInByZXNzXCIsIHt9LCAoKSA9PiB0aGlzLl9pbml0aWFsaXplTWVudUl0ZW1zLCB0aGlzKTtcblx0XHR9XG5cblx0XHR0aGlzLl9ibG9ja0ludGVybmFsQ29uZmlnID0gdGhpcy5fZ2V0U2hhcmVCbG9ja0NvbmZpZyh2aWV3KTtcblxuXHRcdGF3YWl0IHRoaXMuX2FkZE1lbnVJdGVtcyhjb250cm9sbGVyLCBzaGVsbFNlcnZpY2VzLCB2aWV3KTtcblx0XHR0aGlzLnNldFNoYXJlT3B0aW9uc1Zpc2liaWxpdHkoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgc2hhcmUgb3B0aW9ucyBhcyBtZW51IGl0ZW1zIHRvIHRoZSBzaGFyZSBidXR0b24uXG5cdCAqIEBwYXJhbSBjb250cm9sbGVyIFBhZ2UgY29udHJvbGxlclxuXHQgKiBAcGFyYW0gc2hlbGxTZXJ2aWNlcyBTaGVsbCBTZXJ2aWNlc1xuXHQgKiBAcGFyYW0gdmlldyBUaGUgdmlldyB0aGlzIGJ1aWxkaW5nIGJsb2NrIGlzIHVzZWQgaW5cblx0ICovXG5cdGFzeW5jIF9hZGRNZW51SXRlbXMoY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsIHNoZWxsU2VydmljZXM6IElTaGVsbFNlcnZpY2VzLCB2aWV3OiBWaWV3KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dGhpcy5fYWRkU2VuZEVtYWlsT3B0aW9uKGNvbnRyb2xsZXIpO1xuXHRcdGF3YWl0IHRoaXMuX2FkZFNoZWxsQmFzZWRNZW51SXRlbXMoY29udHJvbGxlciwgc2hlbGxTZXJ2aWNlcyk7XG5cdFx0dGhpcy5fYWRkUHJpbnRPcHRpb25zKGNvbnRyb2xsZXIsIHZpZXcpO1xuXHRcdHRoaXMuX2FkZEV4cG9ydEV4Y2VsT3B0aW9ucyhjb250cm9sbGVyLCB2aWV3KTtcblx0XHR0aGlzLl9hZGRFeHBvcnRDU1ZPcHRpb25zKGNvbnRyb2xsZXIsIHZpZXcpO1xuXHRcdHRoaXMuX2FkZEV4cG9ydFBERk9wdGlvbnMoY29udHJvbGxlciwgdmlldyk7XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbCB0aGUgZnVuY3Rpb25zIHdpdGhpbiB0aGUgY3VzdG9tIGhhbmRsZXJzLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBQYWdlIGNvbnRyb2xsZXJcblx0ICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhpcyBidWlsZGluZyBibG9jayBpcyB1c2VkIGluXG5cdCAqIEBwYXJhbSBzaGFyZU9wdGlvblByb3AgVGhlIGtleSBvZiB0aGUgYWN0aW9uIHlvdSB3YW50IHRvIGNhbGxcblx0ICovXG5cdF9jYWxsTWFuaWZlc3RBY3Rpb25zRXZlbnRzKFxuXHRcdGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLFxuXHRcdHZpZXc6IFZpZXcsXG5cdFx0c2hhcmVPcHRpb25Qcm9wOiBcInByaW50XCIgfCBcImV4cG9ydFRvQ1NWXCIgfCBcImV4cG9ydFRvU3ByZWFkc2hlZXRcIiB8IFwiZXhwb3J0VG9QREZcIlxuXHQpOiB2b2lkIHtcblx0XHRjb25zdCB2aWV3RGF0YSA9IHZpZXcuZ2V0Vmlld0RhdGEoKSBhcyBWaWV3RGF0YTtcblx0XHRjb25zdCBzaGFyZUFjdGlvblByb3BzID0gdmlld0RhdGE/LnNoYXJlPy5bc2hhcmVPcHRpb25Qcm9wXTtcblx0XHRjb25zdCBtb2R1bGUgPSBzaGFyZUFjdGlvblByb3BzPy5wcmVzcz8uc3Vic3RyaW5nKDAsIHNoYXJlQWN0aW9uUHJvcHM/LnByZXNzPy5sYXN0SW5kZXhPZihcIi5cIikpLnJlcGxhY2UoL1xcLi9naSwgXCIvXCIpO1xuXHRcdGNvbnN0IG1ldGhvZCA9IHNoYXJlQWN0aW9uUHJvcHM/LnByZXNzPy5zdWJzdHJpbmcoc2hhcmVBY3Rpb25Qcm9wcz8ucHJlc3M/Lmxhc3RJbmRleE9mKFwiLlwiKSArIDEsIHNoYXJlQWN0aW9uUHJvcHM/LnByZXNzPy5sZW5ndGgpO1xuXG5cdFx0aWYgKG1vZHVsZSAmJiBtZXRob2QpIHtcblx0XHRcdEZQTUhlbHBlci5sb2FkTW9kdWxlQW5kQ2FsbE1ldGhvZChtb2R1bGUsIG1ldGhvZCwgdmlldywgY29udHJvbGxlcik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdExvZy5lcnJvcihcIkZhaWxlZCB0byBjYWxsIGV2ZW50IGhhbmRsZXIsIE1vZHVsZSBhbmQvb3IgTWV0aG9kIGlzIG5vdCBzZXQgcHJvcGVybHlcIik7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBwcmludCBvcHRpb24gdG8gbWVudSBidXR0b24uXG5cdCAqIEBwYXJhbSBjb250cm9sbGVyIFBhZ2UgY29udHJvbGxlclxuXHQgKiBAcGFyYW0gdmlldyBUaGUgdmlldyB0aGlzIGJ1aWxkaW5nIGJsb2NrIGlzIHVzZWQgaW5cblx0ICovXG5cdF9hZGRQcmludE9wdGlvbnMoY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsIHZpZXc6IFZpZXcpOiB2b2lkIHtcblx0XHRjb25zdCB2aWV3RGF0YSA9IHZpZXcuZ2V0Vmlld0RhdGEoKSBhcyBWaWV3RGF0YTtcblx0XHRpZiAodmlld0RhdGE/LnNoYXJlPy5oYXNPd25Qcm9wZXJ0eShcInByaW50XCIpID09PSB0cnVlICYmIHZpZXdEYXRhPy5zaGFyZT8ucHJpbnQ/Lmhhc093blByb3BlcnR5KFwicHJlc3NcIikgPT09IHRydWUpIHtcblx0XHRcdHRoaXM/Lm1lbnU/LmN1cnJlbnQ/LmFkZEl0ZW0oXG5cdFx0XHRcdDxNZW51SXRlbVxuXHRcdFx0XHRcdHJlZj17dGhpcy5wcmludE1lbnVJdGVtfVxuXHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJUX1NIQVJFX0NPTlRST0xfUFJJTlRcIil9XG5cdFx0XHRcdFx0aWNvbj17UFJJTlRfSUNPTn1cblx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5fY2FsbE1hbmlmZXN0QWN0aW9uc0V2ZW50cyhjb250cm9sbGVyLCB2aWV3LCBcInByaW50XCIpO1xuXHRcdFx0XHRcdH19XG5cdFx0XHRcdC8+XG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgdGhlIEV4cG9ydCBhcyBFeGNlbCBvcHRpb24gdG8gdGhlIG1lbnUgYnV0dG9uLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBQYWdlIGNvbnRyb2xsZXJcblx0ICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhpcyBidWlsZGluZyBibG9jayBpcyB1c2VkIGluXG5cdCAqL1xuXHRfYWRkRXhwb3J0RXhjZWxPcHRpb25zKGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCB2aWV3OiBWaWV3KTogdm9pZCB7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSB2aWV3LmdldFZpZXdEYXRhKCkgYXMgVmlld0RhdGE7XG5cdFx0aWYgKFxuXHRcdFx0dmlld0RhdGE/LnNoYXJlPy5oYXNPd25Qcm9wZXJ0eShcImV4cG9ydFRvU3ByZWFkc2hlZXRcIikgPT09IHRydWUgJiZcblx0XHRcdHZpZXdEYXRhPy5zaGFyZT8uZXhwb3J0VG9TcHJlYWRzaGVldD8uaGFzT3duUHJvcGVydHkoXCJwcmVzc1wiKSA9PT0gdHJ1ZVxuXHRcdCkge1xuXHRcdFx0dGhpcz8ubWVudT8uY3VycmVudD8uYWRkSXRlbShcblx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0cmVmPXt0aGlzLmV4cG9ydFRvU3ByZWFkc2hlZXRNZW51SXRlbX1cblx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9TSEFSRV9DT05UUk9MX0VYUE9SVF9BU19FWENFTFwiKX1cblx0XHRcdFx0XHRpY29uPXtFWFBPUlRfVE9fU1BSRUFEU0hFRVRfSUNPTn1cblx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5fY2FsbE1hbmlmZXN0QWN0aW9uc0V2ZW50cyhjb250cm9sbGVyLCB2aWV3LCBcImV4cG9ydFRvU3ByZWFkc2hlZXRcIik7XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCB0aGUgRXhwb3J0IGFzIENTViBvcHRpb24gdG8gdGhlIG1lbnUgYnV0dG9uLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBQYWdlIGNvbnRyb2xsZXJcblx0ICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhpcyBidWlsZGluZyBibG9jayBpcyB1c2VkIGluXG5cdCAqL1xuXHRfYWRkRXhwb3J0Q1NWT3B0aW9ucyhjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgdmlldzogVmlldyk6IHZvaWQge1xuXHRcdGNvbnN0IHZpZXdEYXRhID0gdmlldy5nZXRWaWV3RGF0YSgpIGFzIFZpZXdEYXRhO1xuXHRcdGlmICh2aWV3RGF0YT8uc2hhcmU/Lmhhc093blByb3BlcnR5KFwiZXhwb3J0VG9DU1ZcIikgPT09IHRydWUgJiYgdmlld0RhdGE/LnNoYXJlPy5leHBvcnRUb0NTVj8uaGFzT3duUHJvcGVydHkoXCJwcmVzc1wiKSA9PT0gdHJ1ZSkge1xuXHRcdFx0dGhpcz8ubWVudT8uY3VycmVudD8uYWRkSXRlbShcblx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0cmVmPXt0aGlzLmV4cG9ydFRvQ1NWTWVudUl0ZW19XG5cdFx0XHRcdFx0dGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIlRfU0hBUkVfQ09OVFJPTF9FWFBPUlRfQVNfQ1NWXCIpfVxuXHRcdFx0XHRcdGljb249e0VYUE9SVF9UT19DU1ZfSUNPTn1cblx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5fY2FsbE1hbmlmZXN0QWN0aW9uc0V2ZW50cyhjb250cm9sbGVyLCB2aWV3LCBcImV4cG9ydFRvQ1NWXCIpO1xuXHRcdFx0XHRcdH19XG5cdFx0XHRcdC8+XG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgdGhlIEV4cG9ydCBhcyBQREYgb3B0aW9uIHRvIHRoZSBtZW51IGJ1dHRvbi5cblx0ICogQHBhcmFtIGNvbnRyb2xsZXIgUGFnZSBjb250cm9sbGVyXG5cdCAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoaXMgYnVpbGRpbmcgYmxvY2sgaXMgdXNlZCBpblxuXHQgKi9cblx0X2FkZEV4cG9ydFBERk9wdGlvbnMoY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsIHZpZXc6IFZpZXcpOiB2b2lkIHtcblx0XHRjb25zdCB2aWV3RGF0YSA9IHZpZXcuZ2V0Vmlld0RhdGEoKSBhcyBWaWV3RGF0YTtcblx0XHRpZiAodmlld0RhdGE/LnNoYXJlPy5oYXNPd25Qcm9wZXJ0eShcImV4cG9ydFRvUERGXCIpID09PSB0cnVlICYmIHZpZXdEYXRhPy5zaGFyZT8uZXhwb3J0VG9QREY/Lmhhc093blByb3BlcnR5KFwicHJlc3NcIikgPT09IHRydWUpIHtcblx0XHRcdHRoaXM/Lm1lbnU/LmN1cnJlbnQ/LmFkZEl0ZW0oXG5cdFx0XHRcdDxNZW51SXRlbVxuXHRcdFx0XHRcdHJlZj17dGhpcy5leHBvcnRUb1BERk1lbnVJdGVtfVxuXHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJUX1NIQVJFX0NPTlRST0xfRVhQT1JUX0FTX1BERlwiKX1cblx0XHRcdFx0XHRpY29uPXtFWFBPUlRfVE9fUERGX0lDT059XG5cdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuX2NhbGxNYW5pZmVzdEFjdGlvbnNFdmVudHMoY29udHJvbGxlciwgdmlldywgXCJleHBvcnRUb1BERlwiKTtcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQWRkIHNlbmQgZW1haWwgb3B0aW9uIHRvIG1lbnUgYnV0dG9uLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBQYWdlIGNvbnRyb2xsZXJcblx0ICovXG5cdF9hZGRTZW5kRW1haWxPcHRpb24oY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5zaGFyZU9wdGlvbnM/LnNob3dTZW5kRW1haWwgPz8gdHJ1ZSkge1xuXHRcdFx0dGhpcz8ubWVudT8uY3VycmVudD8uYWRkSXRlbShcblx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0cmVmPXt0aGlzLnNlbmRFbWFpbE1lbnVJdGVtfVxuXHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJUX1NFTUFOVElDX0NPTlRST0xfU0VORF9FTUFJTFwiKX1cblx0XHRcdFx0XHRpY29uPXtcInNhcC1pY29uOi8vZW1haWxcIn1cblx0XHRcdFx0XHRwcmVzcz17YXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4gY29udHJvbGxlci5zaGFyZS5fdHJpZ2dlckVtYWlsKCl9XG5cdFx0XHRcdC8+XG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgVVNoZWxsIGJhc2VkIHNoYXJlIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSBjb250cm9sbGVyIFBhZ2UgY29udHJvbGxlclxuXHQgKiBAcGFyYW0gc2hlbGxTZXJ2aWNlcyBTaGVsbCBTZXJ2aWNlc1xuXHQgKi9cblx0YXN5bmMgX2FkZFNoZWxsQmFzZWRNZW51SXRlbXMoY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsIHNoZWxsU2VydmljZXM6IElTaGVsbFNlcnZpY2VzKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgaGFzVXNoZWxsID0gc2hlbGxTZXJ2aWNlcy5oYXNVU2hlbGwoKTtcblx0XHRpZiAoaGFzVXNoZWxsKSB7XG5cdFx0XHQvLyBzaGFyZSB2aWEgSkFNXG5cdFx0XHR0aGlzLl9hZGRTaGFyZVZpYUpBTU9wdGlvbihjb250cm9sbGVyLCBzaGVsbFNlcnZpY2VzKTtcblxuXHRcdFx0Ly8gUHJlcGFyZSB0ZWFtcyBtZW51IGl0ZW1zXG5cdFx0XHRhd2FpdCB0aGlzLl9hZGRNU1RlYW1zT3B0aW9ucyhjb250cm9sbGVyKTtcblxuXHRcdFx0Ly8gUHJlcGFyZSBDb2xsYWJvcmF0aW9uIE1hbmFnZXIgT3B0aW9uc1xuXHRcdFx0YXdhaXQgdGhpcy5fYWRkQ29sbGFib3JhdGlvbk1hbmFnZXJPcHRpb24oY29udHJvbGxlcik7XG5cblx0XHRcdC8vIFNhdmUgYXMgVGlsZVxuXHRcdFx0YXdhaXQgdGhpcy5fYWRkU2F2ZUFzVGlsZU9wdGlvbihjb250cm9sbGVyKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQWRkIENNIG9wdGlvbi5cblx0ICogQHBhcmFtIGNvbnRyb2xsZXIgVGhlIGNvbnRyb2xsZXIgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgTWVudUl0ZW1zXG5cdCAqL1xuXHRhc3luYyBfYWRkQ29sbGFib3JhdGlvbk1hbmFnZXJPcHRpb24oY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgY29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSA9IGNvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0Q29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSgpO1xuXHRcdFx0Y29uc3QgY29sbGFib3JhdGlvbk9wdGlvbiA9IGF3YWl0IGNvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UuZ2V0Q29sbGFib3JhdGlvbk1hbmFnZXJPcHRpb24oKTtcblx0XHRcdGlmIChjb2xsYWJvcmF0aW9uT3B0aW9uICYmICh0aGlzLnNoYXJlT3B0aW9ucz8uc2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyID8/IGZhbHNlKSkge1xuXHRcdFx0XHRjb25zdCBtZW51SXRlbSA9IChcblx0XHRcdFx0XHQ8TWVudUl0ZW1cblx0XHRcdFx0XHRcdHJlZj17dGhpcy5zaGFyZUFzQ29sbGFib3JhdGlvbk1hbmFnZXJ9XG5cdFx0XHRcdFx0XHR0ZXh0PXtjb2xsYWJvcmF0aW9uT3B0aW9uLnRleHR9XG5cdFx0XHRcdFx0XHRpY29uPXtjb2xsYWJvcmF0aW9uT3B0aW9uLmljb259XG5cdFx0XHRcdFx0XHRwcmVzcz17YXN5bmMgKGV2ZW50OiBVSTVFdmVudDx7fSwgTWVudUl0ZW0+KTogUHJvbWlzZTx2b2lkPiA9PlxuXHRcdFx0XHRcdFx0XHR0aGlzLl9jb2xsYWJvcmF0aW9uTWFuYWdlckJ1dHRvblByZXNzKGNvbGxhYm9yYXRpb25PcHRpb24ucHJlc3MsIGV2ZW50KVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdD48L01lbnVJdGVtPlxuXHRcdFx0XHQpO1xuXHRcdFx0XHRGRVNSSGVscGVyLnNldFNlbWFudGljU3RlcG5hbWUobWVudUl0ZW0sIFwicHJlc3NcIiwgY29sbGFib3JhdGlvbk9wdGlvbi5mZXNyU3RlcE5hbWUpO1xuXHRcdFx0XHR0aGlzPy5tZW51Py5jdXJyZW50Py5hZGRJdGVtKG1lbnVJdGVtKTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlcnI6IHVua25vd24pIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycik7XG5cdFx0XHRMb2cuZXJyb3IoYEZFIDogQWRkaW5nIENvbGxhYm9yYXRpb24gTWFuYWdlciBPcHRpb24gOiAke21lc3NhZ2V9YCk7XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgX2NvbGxhYm9yYXRpb25NYW5hZ2VyQnV0dG9uUHJlc3MoY29sbGFib3JhdGlvbkNhbGxCYWNrOiBGdW5jdGlvbiwgZXZlbnQ6IFVJNUV2ZW50PHt9LCBNZW51SXRlbT4pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBjbGlja2VkTWVudUl0ZW0gPSBldmVudC5nZXRTb3VyY2UoKTtcblxuXHRcdGNvbnN0IHZpZXc6IFZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KGNsaWNrZWRNZW51SXRlbSk7XG5cdFx0Y29uc3QgY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIgPSB2aWV3LmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlcjtcblx0XHRhd2FpdCBjb250cm9sbGVyLnNoYXJlLl9hZGFwdFNoYXJlTWV0YWRhdGEoKTtcblx0XHRjb25zdCBzaGFyZUluZm9Nb2RlbCA9IHZpZXcuZ2V0TW9kZWwoXCJzaGFyZUluZm9cIikgYXMgSlNPTk1vZGVsIHwgdW5kZWZpbmVkO1xuXG5cdFx0aWYgKHNoYXJlSW5mb01vZGVsKSB7XG5cdFx0XHRjb25zdCBzaGFyZUluZm8gPSBzaGFyZUluZm9Nb2RlbC5nZXREYXRhKCk7XG5cdFx0XHRjb25zdCB7IGNvbGxhYm9yYXRpb25JbmZvIH0gPSBzaGFyZUluZm87XG5cdFx0XHRjb2xsYWJvcmF0aW9uQ2FsbEJhY2soY29sbGFib3JhdGlvbkluZm8uYXBwVGl0bGUsIGNvbGxhYm9yYXRpb25JbmZvLnVybCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBzaGFyZSB2aWEgSkFNIG9wdGlvbi5cblx0ICogQHBhcmFtIGNvbnRyb2xsZXIgUGFnZSBjb250cm9sbGVyXG5cdCAqIEBwYXJhbSBzaGVsbFNlcnZpY2VzIFNoZWxsIFNlcnZpY2VzXG5cdCAqL1xuXHRfYWRkU2hhcmVWaWFKQU1PcHRpb24oY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsIHNoZWxsU2VydmljZXM6IElTaGVsbFNlcnZpY2VzKTogdm9pZCB7XG5cdFx0Y29uc3QgaGFzSmFtID0gISFzaGVsbFNlcnZpY2VzLmlzSmFtQWN0aXZlPy4oKTtcblx0XHRpZiAoaGFzSmFtKSB7XG5cdFx0XHR0aGlzPy5tZW51Py5jdXJyZW50Py5hZGRJdGVtKFxuXHRcdFx0XHQ8TWVudUl0ZW1cblx0XHRcdFx0XHRyZWY9e3RoaXMuc2hhcmVWaWFKQU1NZW51SXRlbX1cblx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9DT01NT05fU0FQRkVfU0hBUkVfSkFNXCIpfVxuXHRcdFx0XHRcdGljb249e1wic2FwLWljb246Ly9zaGFyZS0yXCJ9XG5cdFx0XHRcdFx0cHJlc3M9e2FzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IGNvbnRyb2xsZXIuc2hhcmUuX3RyaWdnZXJTaGFyZVRvSmFtKCl9XG5cdFx0XHRcdC8+XG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgb3B0aW9ucyB0byBzaGFyZSB2aWEgTWljcm9zb2Z0IFRlYW1zLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBQYWdlQ29udHJvbGxlclxuXHQgKi9cblx0YXN5bmMgX2FkZE1TVGVhbXNPcHRpb25zKGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGlmICh0aGlzLl9ibG9ja0ludGVybmFsQ29uZmlnPy5zaG93TXNUZWFtc09wdGlvbnMgPT09IGZhbHNlKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgY29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSA9IGNvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0Q29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSgpO1xuXHRcdFx0Y29uc3Qgc2hhcmVDb2xsYWJvcmF0aW9uT3B0aW9ucyA9IGF3YWl0IGNvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UuZ2V0VGVhbXNDb2xsYWJPcHRpb25zVmlhU2hhcmUoe1xuXHRcdFx0XHRpc1NoYXJlQXNDYXJkRW5hYmxlZDogdGhpcy5fZ2V0SXNTaGFyZUFzQ2FyZEVuYWJsZWQoKVxuXHRcdFx0fSk7XG5cblx0XHRcdGlmICghc2hhcmVDb2xsYWJvcmF0aW9uT3B0aW9ucykge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGZvciAoY29uc3QgY29sbGFib3JhdGlvbk9wdGlvbiBvZiBzaGFyZUNvbGxhYm9yYXRpb25PcHRpb25zKSB7XG5cdFx0XHRcdGNvbnN0IG1lbnVJdGVtU2V0dGluZ3M6ICRNZW51SXRlbVNldHRpbmdzID0gdGhpcy5fZ2V0TXNUZWFtc01lbnVJdGVtU2V0dGluZ3MoY29sbGFib3JhdGlvbk9wdGlvbik7XG5cdFx0XHRcdGNvbnN0IHN1Yk9wdGlvbnMgPSBtZW51SXRlbVNldHRpbmdzLml0ZW1zO1xuXHRcdFx0XHQvLyBNdWx0aXBsZSBzdWIgb3B0aW9ucyBhcmUgZ3JvdXBlZCBpbnRvIHNpbmdsZSB0ZWFtcyBncm91cCBtZW51IGl0ZW0uXG5cdFx0XHRcdGNvbnN0IG1lbnVJdGVtS2V5ID1cblx0XHRcdFx0XHRBcnJheS5pc0FycmF5KHN1Yk9wdGlvbnMpICYmIHN1Yk9wdGlvbnMubGVuZ3RoID8gZW51bVNoYXJlT3B0aW9uLk1TX1RFQU1TX0dST1VQIDogY29sbGFib3JhdGlvbk9wdGlvbi5rZXk7XG5cblx0XHRcdFx0dGhpcy5fYWRkTXNUZWFtc01lbnVJdGVtKG1lbnVJdGVtU2V0dGluZ3MsIG1lbnVJdGVtS2V5LCBjb2xsYWJvcmF0aW9uT3B0aW9uLmZlc3JTdGVwTmFtZSk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpO1xuXHRcdFx0TG9nLmVycm9yKGBGRSA6IEJ1aWxkaW5nYmxvY2sgOiBTaGFyZSA6IGFkZGluZyBNUyB0ZWFtcyBvcHRpb25zIDogJHttZXNzYWdlfWApO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgc2F2ZSBhcyB0aWxlIG9wdGlvbi5cblx0ICogQHBhcmFtIGNvbnRyb2xsZXIgUGFnZSBjb250cm9sbGVyXG5cdCAqL1xuXHRhc3luYyBfYWRkU2F2ZUFzVGlsZU9wdGlvbihjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcik6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHQvLyBzZXQgc2F2ZSBhcyB0aWxlXG5cdFx0XHQvLyBmb3Igbm93IHdlIG5lZWQgdG8gY3JlYXRlIGFkZEJvb2ttYXJrQnV0dG9uIHRvIHVzZSB0aGUgc2F2ZSBhcyB0aWxlIGZlYXR1cmUuXG5cdFx0XHQvLyBJbiB0aGUgZnV0dXJlIHNhdmUgYXMgdGlsZSBzaG91bGQgYmUgYXZhaWxhYmxlIGFzIGFuIEFQSSBvciBhIE1lbnVJdGVtIHNvIHRoYXQgaXQgY2FuIGJlIGFkZGVkIHRvIHRoZSBNZW51IGJ1dHRvbi5cblx0XHRcdC8vIFRoaXMgbmVlZHMgdG8gYmUgZGlzY3Vzc2VkIHdpdGggQWRkQm9va21hcmtCdXR0b24gdGVhbS5cblx0XHRcdC8vIEluY2x1ZGVkIGluIGEgaGFzVXNoZWxsIGJyYW5jaFxuXHRcdFx0Y29uc3QgeyBkZWZhdWx0OiBBZGRCb29rbWFya0J1dHRvbiB9ID0gYXdhaXQgaW1wb3J0KFwic2FwL3VzaGVsbC91aS9mb290ZXJiYXIvQWRkQm9va21hcmtCdXR0b25cIik7XG5cdFx0XHRjb25zdCBhZGRCb29rbWFya0J1dHRvbiA9IG5ldyBBZGRCb29rbWFya0J1dHRvbigpO1xuXHRcdFx0aWYgKGFkZEJvb2ttYXJrQnV0dG9uLmdldEVuYWJsZWQoKSkge1xuXHRcdFx0XHR0aGlzPy5tZW51Py5jdXJyZW50Py5hZGRJdGVtKFxuXHRcdFx0XHRcdDxNZW51SXRlbVxuXHRcdFx0XHRcdFx0cmVmPXt0aGlzLnNhdmVBc1RpbGVNZW51SXRlbX1cblx0XHRcdFx0XHRcdHRleHQ9e2FkZEJvb2ttYXJrQnV0dG9uLmdldFRleHQoKX1cblx0XHRcdFx0XHRcdGljb249e2FkZEJvb2ttYXJrQnV0dG9uLmdldEljb24oKX1cblx0XHRcdFx0XHRcdHByZXNzPXthc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiBjb250cm9sbGVyLnNoYXJlLl9zYXZlQXNUaWxlKHRoaXMuc2F2ZUFzVGlsZU1lbnVJdGVtLmN1cnJlbnQhKX1cblx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHR7eyBkZXBlbmRlbnRzOiBbYWRkQm9va21hcmtCdXR0b25dIH19XG5cdFx0XHRcdFx0PC9NZW51SXRlbT5cblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGFkZEJvb2ttYXJrQnV0dG9uLmRlc3Ryb3koKTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlcnI6IHVua25vd24pIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycik7XG5cdFx0XHRMb2cuZXJyb3IoYEZFIDogQnVpbGRpbmdibG9jayA6IFNoYXJlIDogYWRkaW5nIFNhdmUgYXMgdGlsZSBvcHRpb24gOiAke21lc3NhZ2V9YCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBpc1NoYXJlQXNDYXJkRW5hYmxlZCB0byBmZXRjaCBzdXBwb3J0ZWQgY29sbGFib3JhdGlvbiBvcHRpb25zLlxuXHQgKiBAcmV0dXJucyBCb29sZWFuLlxuXHQgKi9cblx0X2dldElzU2hhcmVBc0NhcmRFbmFibGVkKCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHNob3dTaGFyZUFzQ2FyZCA9IHRoaXMubXNUZWFtc09wdGlvbnM/LmVuYWJsZUNhcmQgPz8gZmFsc2U7XG5cblx0XHRpZiAodHlwZW9mIHNob3dTaGFyZUFzQ2FyZCA9PT0gXCJib29sZWFuXCIpIHtcblx0XHRcdHJldHVybiBzaG93U2hhcmVBc0NhcmQ7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2Ygc2hvd1NoYXJlQXNDYXJkID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHQvLyBcInRydWVcIiBvciBhIGJpbmRpbmcgZXhwcmVzc2lvblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cmV0dXJuIHNob3dTaGFyZUFzQ2FyZCA9PT0gXCJ0cnVlXCIgfHwgQm9vbGVhbihCaW5kaW5nSW5mby5wYXJzZShzaG93U2hhcmVBc0NhcmQpKTtcblx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRMb2cuZXJyb3IoZXJyIGFzIHN0cmluZyk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBNZW51IEl0ZW0gc2V0dGluZ3MgZm9yIG1haW4gTVMgdGVhbXMgb3B0aW9uLlxuXHQgKiBAcGFyYW0gY29sbGFib3JhdGlvbk9wdGlvbiBSb290IENvbGxhYm9yYXRpb24gT3B0aW9uXG5cdCAqIEByZXR1cm5zIE1lbnVJdGVtU2V0dGluZ3Ncblx0ICovXG5cdF9nZXRNc1RlYW1zTWVudUl0ZW1TZXR0aW5ncyhjb2xsYWJvcmF0aW9uT3B0aW9uOiBDb2xsYWJvcmF0aW9uT3B0aW9ucyk6ICRNZW51SXRlbVNldHRpbmdzIHtcblx0XHRjb25zdCBpdGVtcyA9IHRoaXMuX2dldE1zVGVhbXNTdWJPcHRpb25zKGNvbGxhYm9yYXRpb25PcHRpb24/LnN1Yk9wdGlvbnMpO1xuXHRcdGNvbnN0IG1lbnVJdGVtU2V0dGluZ3M6ICRNZW51SXRlbVNldHRpbmdzID0ge1xuXHRcdFx0dGV4dDogY29sbGFib3JhdGlvbk9wdGlvbi50ZXh0LFxuXHRcdFx0aWNvbjogY29sbGFib3JhdGlvbk9wdGlvbi5pY29uLFxuXHRcdFx0aXRlbXNcblx0XHR9O1xuXG5cdFx0aWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0Ly8gaWYgdGhlcmUgYXJlIG5vIHN1YiBvcHRpb24gdGhlbiB0aGUgbWFpbiBvcHRpb24gc2hvdWxkIGJlIGNsaWNrYWJsZVxuXHRcdFx0Ly8gc28gYWRkIGEgcHJlc3MgaGFuZGxlci5cblx0XHRcdG1lbnVJdGVtU2V0dGluZ3MucHJlc3MgPSBhc3luYyAoZXZlbnQ6IFVJNUV2ZW50PHt9LCBNZW51SXRlbT4pOiBQcm9taXNlPHZvaWQ+ID0+IHRoaXMuY29sbGFib3JhdGlvbk1lbnVJdGVtUHJlc3MoZXZlbnQpO1xuXHRcdFx0bWVudUl0ZW1TZXR0aW5nc1tcImN1c3RvbURhdGFcIl0gPSBuZXcgQ3VzdG9tRGF0YSh7XG5cdFx0XHRcdGtleTogXCJjb2xsYWJvcmF0aW9uRGF0YVwiLFxuXHRcdFx0XHR2YWx1ZTogY29sbGFib3JhdGlvbk9wdGlvblxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBtZW51SXRlbVNldHRpbmdzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBtYWluIE1TIFRlYW1zIE1lbnUgSXRlbSB0byB0aGUgU2hhcmUgYnVpbGRpbmcgYmxvY2sgbWVudS5cblx0ICogQHBhcmFtIG1lbnVJdGVtU2V0dGluZ3MgTWVudSBJdGVtIHNldHRpbmdzXG5cdCAqIEBwYXJhbSBtZW51SXRlbUtleSBNUyB0ZWFtcyBvcHRpb24ga2V5XG5cdCAqIEBwYXJhbSBmZXNyU3RlcE5hbWUgU3RlcCBuYW1lXG5cdCAqL1xuXHRfYWRkTXNUZWFtc01lbnVJdGVtKG1lbnVJdGVtU2V0dGluZ3M6ICRNZW51SXRlbVNldHRpbmdzLCBtZW51SXRlbUtleT86IFNoYXJlT3B0aW9uS2V5LCBmZXNyU3RlcE5hbWU/OiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCBtZW51SXRlbTogTWVudUl0ZW0gPSAoXG5cdFx0XHQ8TWVudUl0ZW1cblx0XHRcdFx0cmVmPXt0aGlzLl9nZXRNZW51SXRlbVJlZmVyZW5jZShtZW51SXRlbUtleSl9XG5cdFx0XHRcdHRleHQ9e21lbnVJdGVtU2V0dGluZ3MudGV4dH1cblx0XHRcdFx0aWNvbj17bWVudUl0ZW1TZXR0aW5ncy5pY29ufVxuXHRcdFx0XHRjdXN0b21EYXRhPXttZW51SXRlbVNldHRpbmdzLmN1c3RvbURhdGF9XG5cdFx0XHRcdGl0ZW1zPXttZW51SXRlbVNldHRpbmdzLml0ZW1zfVxuXHRcdFx0PjwvTWVudUl0ZW0+XG5cdFx0KTtcblx0XHRpZiAobWVudUl0ZW1TZXR0aW5ncy5wcmVzcykge1xuXHRcdFx0Ly9cblx0XHRcdG1lbnVJdGVtLmF0dGFjaFByZXNzKG1lbnVJdGVtU2V0dGluZ3MucHJlc3MpO1xuXHRcdFx0aWYgKGZlc3JTdGVwTmFtZSkge1xuXHRcdFx0XHRGRVNSSGVscGVyLnNldFNlbWFudGljU3RlcG5hbWUobWVudUl0ZW0sIFwicHJlc3NcIiwgZmVzclN0ZXBOYW1lKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0dGhpcz8ubWVudT8uY3VycmVudD8uYWRkSXRlbShtZW51SXRlbSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IE1lbnUgSXRlbXMgY29ycmVzcG9uZGluZyB0byBNUyB0ZWFtcyBzdWIgb3B0aW9ucy5cblx0ICogQHBhcmFtIHN1Yk9wdGlvbnMgQXJyYXkgb2YgY29sbGFib3JhdGlvbiBvcHRpb25zXG5cdCAqIEByZXR1cm5zIE1lbnVJdGVtc1xuXHQgKi9cblx0X2dldE1zVGVhbXNTdWJPcHRpb25zKHN1Yk9wdGlvbnM/OiBDb2xsYWJvcmF0aW9uT3B0aW9uc1tdKTogTWVudUl0ZW1bXSB7XG5cdFx0aWYgKCFBcnJheS5pc0FycmF5KHN1Yk9wdGlvbnMpKSB7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHN1Yk9wdGlvbnMucmVkdWNlKChtZW51SXRlbXM6IE1lbnVJdGVtW10sIHN1Yk9wdGlvbjogQ29sbGFib3JhdGlvbk9wdGlvbnMpID0+IHtcblx0XHRcdGNvbnN0IHN1Yk1lbnVJdGVtID0gKFxuXHRcdFx0XHQ8TWVudUl0ZW1cblx0XHRcdFx0XHRyZWY9e3RoaXMuX2dldE1lbnVJdGVtUmVmZXJlbmNlKHN1Yk9wdGlvbi5rZXkpfVxuXHRcdFx0XHRcdHRleHQ9e3N1Yk9wdGlvbi50ZXh0fVxuXHRcdFx0XHRcdGljb249e3N1Yk9wdGlvbi5pY29ufVxuXHRcdFx0XHRcdHByZXNzPXthc3luYyAoZXZlbnQ6IFVJNUV2ZW50PHt9LCBNZW51SXRlbT4pOiBQcm9taXNlPHZvaWQ+ID0+IHRoaXMuY29sbGFib3JhdGlvbk1lbnVJdGVtUHJlc3MoZXZlbnQpfVxuXHRcdFx0XHRcdGN1c3RvbURhdGE9e1xuXHRcdFx0XHRcdFx0bmV3IEN1c3RvbURhdGEoe1xuXHRcdFx0XHRcdFx0XHRrZXk6IFwiY29sbGFib3JhdGlvbkRhdGFcIixcblx0XHRcdFx0XHRcdFx0dmFsdWU6IHN1Yk9wdGlvblxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHR9XG5cdFx0XHRcdD48L01lbnVJdGVtPlxuXHRcdFx0KTtcblx0XHRcdGlmIChzdWJPcHRpb24uZmVzclN0ZXBOYW1lKSB7XG5cdFx0XHRcdEZFU1JIZWxwZXIuc2V0U2VtYW50aWNTdGVwbmFtZShzdWJNZW51SXRlbSwgXCJwcmVzc1wiLCBzdWJPcHRpb24uZmVzclN0ZXBOYW1lKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBbLi4ubWVudUl0ZW1zLCBzdWJNZW51SXRlbV07XG5cdFx0fSwgW10pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFByZXNzIGhhbmRsZXIgZm9yIGNvbGxhYm9yYXRpb24gbWVudSBpdGVtcy5cblx0ICpgXG5cdCAqIEBwYXJhbSBldmVudCBFdmVudCBvYmplY3Rcblx0ICovXG5cdGFzeW5jIGNvbGxhYm9yYXRpb25NZW51SXRlbVByZXNzKGV2ZW50OiBVSTVFdmVudDx7fSwgTWVudUl0ZW0+KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgY2xpY2tlZE1lbnVJdGVtID0gZXZlbnQuZ2V0U291cmNlKCk7XG5cblx0XHRjb25zdCB2aWV3OiBWaWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0VmlldyhjbGlja2VkTWVudUl0ZW0pO1xuXHRcdGNvbnN0IGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyID0gdmlldy5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXI7XG5cdFx0YXdhaXQgY29udHJvbGxlci5zaGFyZS5fYWRhcHRTaGFyZU1ldGFkYXRhKCk7XG5cdFx0Y29uc3Qgc2hhcmVJbmZvTW9kZWwgPSB2aWV3LmdldE1vZGVsKFwic2hhcmVJbmZvXCIpIGFzIEpTT05Nb2RlbCB8IHVuZGVmaW5lZDtcblxuXHRcdGlmIChzaGFyZUluZm9Nb2RlbCkge1xuXHRcdFx0Y29uc3Qgc2hhcmVJbmZvID0gc2hhcmVJbmZvTW9kZWwuZ2V0RGF0YSgpO1xuXHRcdFx0Y29uc3QgeyBjb2xsYWJvcmF0aW9uSW5mbyB9ID0gc2hhcmVJbmZvO1xuXG5cdFx0XHRjb25zdCBjb2xsYWJvcmF0aW9uRGF0YSA9IGNsaWNrZWRNZW51SXRlbS5kYXRhKFwiY29sbGFib3JhdGlvbkRhdGFcIik7XG5cdFx0XHRjb25zdCBjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlID0gY29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKS5nZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlKCk7XG5cdFx0XHRjb25zdCB0ZWFtc0hlbHBlclNlcnZpY2UgPSAoYXdhaXQgY29sbGFib3JhdGl2ZVRvb2xzU2VydmljZS5nZXRDb2xsYWJvcmF0aW9uU2VydmljZXMoKSkub1RlYW1zSGVscGVyU2VydmljZTtcblx0XHRcdGlmIChjb2xsYWJvcmF0aW9uRGF0YVtcImtleVwiXSA9PT0gZW51bU1TVGVhbXNPcHRpb24uQ09MTEFCT1JBVElPTl9NU1RFQU1TX0NBUkQpIHtcblx0XHRcdFx0Y29uc3QgaXNTaGFyZUFzQ2FyZEVuYWJsZWQgPSB0ZWFtc0hlbHBlclNlcnZpY2UuaXNGZWF0dXJlRmxhZ0VuYWJsZWQoKTtcblx0XHRcdFx0Y29uc3QgY2FyZERlZmluaXRpb24gPSBpc1NoYXJlQXNDYXJkRW5hYmxlZCA/IGF3YWl0IGNvbnRyb2xsZXIuc2hhcmUuZ2V0Q2FyZERlZmluaXRpb24oKSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0bGV0IGNhcmRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdFx0XHRpZiAoY2FyZERlZmluaXRpb24pIHtcblx0XHRcdFx0XHRjb25zdCBzaGVsbFNlcnZpY2VIZWxwZXIgPSBjb250cm9sbGVyLmdldEFwcENvbXBvbmVudCgpLmdldFNoZWxsU2VydmljZXMoKTtcblx0XHRcdFx0XHRjb25zdCB7IHNlbWFudGljT2JqZWN0LCBhY3Rpb24gfSA9IHNoZWxsU2VydmljZUhlbHBlci5wYXJzZVNoZWxsSGFzaChkb2N1bWVudC5sb2NhdGlvbi5oYXNoKTtcblx0XHRcdFx0XHRjYXJkSWQgPSBgJHtzZW1hbnRpY09iamVjdH1fJHthY3Rpb259YDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb25zdCByZWFzb24gPSAhaXNTaGFyZUFzQ2FyZEVuYWJsZWRcblx0XHRcdFx0XHRcdD8gXCJGZWF0dXJlIGZsYWcgZGlzYWJsZWQgaW4gY29sbGFib3JhdGlvbiB0ZWFtcyBoZWxwZXJcIlxuXHRcdFx0XHRcdFx0OiBcIkNhcmQgZGVmaW5pdGlvbiB3YXMgbm90IGNyZWF0ZWRcIjtcblx0XHRcdFx0XHRMb2cuaW5mbyhgRkUgVjQgOiBTaGFyZSBibG9jayA6IHNoYXJlIGFzIENhcmQgOiAke3JlYXNvbn1gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb2xsYWJvcmF0aW9uSW5mb1tcImNhcmRNYW5pZmVzdFwiXSA9IGNhcmREZWZpbml0aW9uO1xuXHRcdFx0XHRjb2xsYWJvcmF0aW9uSW5mb1tcImNhcmRJZFwiXSA9IGNhcmRJZDtcblx0XHRcdH1cblx0XHRcdHRlYW1zSGVscGVyU2VydmljZS5zaGFyZShjb2xsYWJvcmF0aW9uRGF0YSwgY29sbGFib3JhdGlvbkluZm8pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdGhlIHZpc2liaWxpdHkgb2YgaW5kaXZpZHVhbCBVSSBlbGVtZW50cyBvZiB0aGUgU2hhcmUgYnVpbGRpbmcgYmxvY2suIExpa2UsIE1lbnVJdGVtcywgTWVudUJ1dHRvbiBhbmQgQ29tbWFuZCBleGVjdXRpb24uXG5cdCAqL1xuXHRzZXRTaGFyZU9wdGlvbnNWaXNpYmlsaXR5KCk6IHZvaWQge1xuXHRcdGNvbnN0IG9wdGlvbktleXMgPSBPYmplY3Qua2V5cyhlbnVtU2hhcmVPcHRpb24pIGFzIFNoYXJlT3B0aW9uS2V5W107XG5cdFx0Y29uc3QgdmlzaWJsZUJpbmRpbmdFeHBzID0gb3B0aW9uS2V5cy5yZWR1Y2UoKGJpbmRpbmdUb29sa2l0RXhwczogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+W10sIG9wdGlvbjogU2hhcmVPcHRpb25LZXkpID0+IHtcblx0XHRcdGNvbnN0IGV4cCA9IHRoaXMuX2dldFNoYXJlT3B0aW9uVmlzaWJpbGl0eUV4cHJlc3Npb24ob3B0aW9uKTtcblx0XHRcdHRoaXMuX3NldFNoYXJlT3B0aW9uVmlzaWJpbGl0eShvcHRpb24sIGV4cCk7XG5cdFx0XHRyZXR1cm4gWy4uLmJpbmRpbmdUb29sa2l0RXhwcywgZXhwXTtcblx0XHR9LCBbXSk7XG5cdFx0Y29uc3Qgc2hhcmVCbG9ja1Zpc2libGVFeHAgPSBvciguLi52aXNpYmxlQmluZGluZ0V4cHMpO1xuXHRcdGlmICh0aGlzLm1lbnVCdXR0b24uY3VycmVudCAmJiB0aGlzLmNtZEV4ZWN1dGlvbi5jdXJyZW50KSB7XG5cdFx0XHR0aGlzLl9iaW5kVUlWaXNpYmlsaXR5KHRoaXMubWVudUJ1dHRvbi5jdXJyZW50LCBzaGFyZUJsb2NrVmlzaWJsZUV4cCk7XG5cdFx0XHR0aGlzLl9iaW5kVUlWaXNpYmlsaXR5KHRoaXMuY21kRXhlY3V0aW9uLmN1cnJlbnQsIHNoYXJlQmxvY2tWaXNpYmxlRXhwKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IE1lbnUgSXRlbSByZWZlcmVuY2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcgU2hhcmUgb3B0aW9uLlxuXHQgKmBcblx0ICogQHBhcmFtIG9wdGlvbiBTaGFyZSBvcHRpb24ga2V5XG5cdCAqIEByZXR1cm5zIFJlZmVyZW5jZSB0byB0aGUgTWVudSBJdGVtXG5cdCAqL1xuXHRfZ2V0TWVudUl0ZW1SZWZlcmVuY2Uob3B0aW9uPzogU2hhcmVPcHRpb25LZXkpOiBSZWY8TWVudUl0ZW0+IHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgcmVmOiBSZWY8TWVudUl0ZW0+IHwgdW5kZWZpbmVkO1xuXHRcdHN3aXRjaCAob3B0aW9uKSB7XG5cdFx0XHRjYXNlIGVudW1TaGFyZU9wdGlvbi5DT0xMQUJPUkFUSU9OX01TVEVBTVNfQ0FSRDpcblx0XHRcdFx0cmVmID0gdGhpcy5zaGFyZUFzQ2FyZE1lbnVJdGVtO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgZW51bVNoYXJlT3B0aW9uLkNPTExBQk9SQVRJT05fTVNURUFNU19DSEFUOlxuXHRcdFx0XHRyZWYgPSB0aGlzLnNoYXJlVmlhQ2hhdE1lbnVJdGVtO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgZW51bVNoYXJlT3B0aW9uLkNPTExBQk9SQVRJT05fTVNURUFNU19UQUI6XG5cdFx0XHRcdHJlZiA9IHRoaXMuc2hhcmVBc1RhYk1lbnVJdGVtO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgZW51bVNoYXJlT3B0aW9uLlNFTkRfRU1BSUw6XG5cdFx0XHRcdHJlZiA9IHRoaXMuc2VuZEVtYWlsTWVudUl0ZW07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uU0hBUkVfSkFNOlxuXHRcdFx0XHRyZWYgPSB0aGlzLnNoYXJlVmlhSkFNTWVudUl0ZW07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uU0FWRV9BU19USUxFOlxuXHRcdFx0XHRyZWYgPSB0aGlzLnNhdmVBc1RpbGVNZW51SXRlbTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIGVudW1TaGFyZU9wdGlvbi5NU19URUFNU19HUk9VUDpcblx0XHRcdFx0cmVmID0gdGhpcy5tc1RlYW1zR3JvdXBNZW51SXRlbTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIGVudW1TaGFyZU9wdGlvbi5TSEFSRV9DT0xMQUJPUkFUSU9OX01BTkFHRVI6XG5cdFx0XHRcdHJlZiA9IHRoaXMuc2hhcmVBc0NvbGxhYm9yYXRpb25NYW5hZ2VyO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdHJldHVybiByZWY7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSB2aXNpYmlsaXR5IGV4cHJlc3Npb24gb2Ygc2hhcmUgb3B0aW9uIGJhc2VkIG9uIHRoZSBidWlsZGluZyBibG9jayBjb25maWd1cmF0aW9uLlxuXHQgKiBAcGFyYW0gb3B0aW9uIFNoYXJlIG9wdGlvbiBuYW1lIG9mIHRoZSB2aXNpYmxlIGV4cHJlc3Npb24gdGhhdCBuZWVkcyB0byBiZSBmZXRjaGVkLlxuXHQgKiBAcmV0dXJucyBCaW5kaW5nIHRvb2xraXQgZXhwcmVzc2lvbi5cblx0ICovXG5cdF9nZXRTaGFyZU9wdGlvblZpc2liaWxpdHlFeHByZXNzaW9uKG9wdGlvbj86IFNoYXJlT3B0aW9uS2V5KTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0XHRjb25zdCBvcHRpb25NZW51SXRlbVJlZiA9IHRoaXMuX2dldE1lbnVJdGVtUmVmZXJlbmNlKG9wdGlvbik7XG5cdFx0aWYgKCFvcHRpb25NZW51SXRlbVJlZj8uY3VycmVudCkge1xuXHRcdFx0cmV0dXJuIGNvbnN0YW50KGZhbHNlKTtcblx0XHR9XG5cblx0XHRsZXQgZXhwOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG5cdFx0c3dpdGNoIChvcHRpb24pIHtcblx0XHRcdGNhc2UgZW51bVNoYXJlT3B0aW9uLkNPTExBQk9SQVRJT05fTVNURUFNU19DQVJEOlxuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uQ09MTEFCT1JBVElPTl9NU1RFQU1TX0NIQVQ6XG5cdFx0XHRjYXNlIGVudW1TaGFyZU9wdGlvbi5DT0xMQUJPUkFUSU9OX01TVEVBTVNfVEFCOlxuXHRcdFx0XHRleHAgPSB0aGlzLl9nZXRNU1RlYW1zU2hhcmVPcHRpb25WaXNpYmlsaXR5KG9wdGlvbik7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uU0hBUkVfQ09MTEFCT1JBVElPTl9NQU5BR0VSOlxuXHRcdFx0XHRleHAgPSB0aGlzLl9nZXRDb2xsYWJvcmF0aW9uT3B0aW9uRXhwcmVzc2lvbigpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgZW51bVNoYXJlT3B0aW9uLlNFTkRfRU1BSUw6IHtcblx0XHRcdFx0Y29uc3Qgc2hvd1NlbmRFbWFpbCA9IHJlc29sdmVCaW5kaW5nU3RyaW5nPGJvb2xlYW4+KHRoaXMuc2hhcmVPcHRpb25zPy5zaG93U2VuZEVtYWlsID8/IHRydWUsIFwiYm9vbGVhblwiKTtcblx0XHRcdFx0Y29uc3QgaW50ZXJuYWxPcHRpb24gPSByZXNvbHZlQmluZGluZ1N0cmluZyhcblx0XHRcdFx0XHR0aGlzLl9ibG9ja0ludGVybmFsQ29uZmlnLnNob3dTZW5kRW1haWwgPz8gdHJ1ZSxcblx0XHRcdFx0XHRcImJvb2xlYW5cIlxuXHRcdFx0XHQpIGFzIHVua25vd24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHRcdFx0XHRpZiAoaXNDb25zdGFudChpbnRlcm5hbE9wdGlvbikgJiYgaW50ZXJuYWxPcHRpb24udmFsdWUgPT09IGZhbHNlKSB7XG5cdFx0XHRcdFx0ZXhwID0gY29uc3RhbnQoZmFsc2UpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGlzQ29uc3RhbnQoaW50ZXJuYWxPcHRpb24pICYmIGludGVybmFsT3B0aW9uLnZhbHVlID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0ZXhwID0gKHRoaXMuc2hhcmVPcHRpb25zPy5zaG93U2VuZEVtYWlsID8/IHRydWUpIGFzIHVua25vd24gYXMgRW1iZWRkZWRVSTVCaW5kaW5nRXhwcmVzc2lvbjxib29sZWFuPjtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRleHAgPSBhbmQoc2hvd1NlbmRFbWFpbCwgaW50ZXJuYWxPcHRpb24pIGFzIHVua25vd24gYXMgRW1iZWRkZWRVSTVCaW5kaW5nRXhwcmVzc2lvbjxib29sZWFuPjtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNhc2UgZW51bVNoYXJlT3B0aW9uLlNIQVJFX0pBTTpcblx0XHRcdGNhc2UgZW51bVNoYXJlT3B0aW9uLlNBVkVfQVNfVElMRToge1xuXHRcdFx0XHQvLyBObyBvdmVycmlkZXMgZm9yIFNoYXJlIHZpYSBKYW0gYW5kIFNhdmUgYXMgdGlsZSB5ZXQuXG5cdFx0XHRcdGV4cCA9IGNvbnN0YW50KHRydWUpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNhc2UgZW51bVNoYXJlT3B0aW9uLk1TX1RFQU1TX0dST1VQOiB7XG5cdFx0XHRcdGNvbnN0IG1zVGVhbXNDb25maWdFeHAgPSB0aGlzLl9nZXRTaG93TXNUZWFtc09wdGlvbnNFeHByZXNzaW9uKCk7XG5cdFx0XHRcdGNvbnN0IG1zVGVhbXNPcHRpb25zVmFsdWUgPSBPYmplY3Qua2V5cyhlbnVtTVNUZWFtc09wdGlvbikgYXMgU2hhcmVPcHRpb25LZXlbXTtcblx0XHRcdFx0Y29uc3QgYWxsTVNUZWFtc09wdGlvbnNFeHBzID0gbXNUZWFtc09wdGlvbnNWYWx1ZS5yZWR1Y2UoXG5cdFx0XHRcdFx0KGJpbmRpbmdUb29sa2l0RXhwOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj5bXSwgbXNUZWFtc09wdGlvbjogU2hhcmVPcHRpb25LZXkpID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IG1zVGVhbU9wdGlvbkV4cCA9IHRoaXMuX2dldE1TVGVhbXNTaGFyZU9wdGlvblZpc2liaWxpdHkobXNUZWFtc09wdGlvbik7XG5cdFx0XHRcdFx0XHRyZXR1cm4gWy4uLmJpbmRpbmdUb29sa2l0RXhwLCBtc1RlYW1PcHRpb25FeHBdO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0W10gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+W11cblx0XHRcdFx0KTtcblx0XHRcdFx0ZXhwID0gYW5kKG1zVGVhbXNDb25maWdFeHAsIG9yKC4uLmFsbE1TVGVhbXNPcHRpb25zRXhwcykpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGV4cCA9IGNvbnN0YW50KGZhbHNlKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZXhwO1xuXHR9XG5cblx0X2dldENvbGxhYm9yYXRpb25PcHRpb25FeHByZXNzaW9uKCk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdFx0Y29uc3Qgc2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyID0gdGhpcy5zaGFyZU9wdGlvbnM/LnNob3dDb2xsYWJvcmF0aW9uTWFuYWdlciA/PyBmYWxzZTtcblx0XHRjb25zdCBvcHRpb25FeHAgPSByZXNvbHZlQmluZGluZ1N0cmluZzxib29sZWFuPihzaG93Q29sbGFib3JhdGlvbk1hbmFnZXIsIFwiYm9vbGVhblwiKTtcblx0XHRjb25zdCBpbnRlcm5hbE9wdGlvbiA9IHRoaXMuX2Jsb2NrSW50ZXJuYWxDb25maWcuc2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyID8/IHRydWU7XG5cdFx0Y29uc3QgaW50ZXJuYWxPcHRpb25FeHAgPSByZXNvbHZlQmluZGluZ1N0cmluZzxib29sZWFuPihpbnRlcm5hbE9wdGlvbiwgXCJib29sZWFuXCIpO1xuXHRcdHJldHVybiBhbmQob3B0aW9uRXhwLCBpbnRlcm5hbE9wdGlvbkV4cCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGV4cHJlc3Npb24gZm9yIHNob3dNc1RlYW1zT3B0aW9ucyBzaGFyZSBvcHRpb24gYmFzZWQgb24gdGhlIGJ1aWxkaW5nIGJsb2NrIGNvbmZpZ3VyYXRpb24uXG5cdCAqIEByZXR1cm5zIEJpbmRpbmcgdG9vbGtpdCBleHByZXNzaW9uLlxuXHQgKi9cblx0X2dldFNob3dNc1RlYW1zT3B0aW9uc0V4cHJlc3Npb24oKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0XHRjb25zdCBpbnRlcm5hbE9wdGlvbiA9IHRoaXMuX2Jsb2NrSW50ZXJuYWxDb25maWcuc2hvd01zVGVhbXNPcHRpb25zID8/IHRydWU7XG5cdFx0cmV0dXJuIHJlc29sdmVCaW5kaW5nU3RyaW5nPGJvb2xlYW4+KGludGVybmFsT3B0aW9uLCBcImJvb2xlYW5cIik7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGJpbmRpbmcgdG9vbGtpdCBleHByZXNzaW9uIGZvciBzaGFyZSBhcyBjYXJkIHZpc2liaWxpdHkuXG5cdCAqIEByZXR1cm5zIEJpbmRpbmcgdG9vbGtpdCBleHByZXNzaW9uLlxuXHQgKi9cblx0X2dldFNoYXJlQXNDYXJkVmlzaWJpbGl0eSgpOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRcdGxldCBleHA6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPjtcblx0XHRjb25zdCBzaGFyZUFzQ2FyZE9wdGlvblJlZiA9IHRoaXMuX2dldE1lbnVJdGVtUmVmZXJlbmNlKGVudW1TaGFyZU9wdGlvbi5DT0xMQUJPUkFUSU9OX01TVEVBTVNfQ0FSRCk7XG5cdFx0aWYgKHNoYXJlQXNDYXJkT3B0aW9uUmVmPy5jdXJyZW50KSB7XG5cdFx0XHRjb25zdCBleHBTaG93TVNUZWFtc09wdGlvbnMgPSB0aGlzLl9nZXRTaG93TXNUZWFtc09wdGlvbnNFeHByZXNzaW9uKCk7XG5cdFx0XHRjb25zdCBzaG93U2hhcmVBc0NhcmQgPSB0aGlzLm1zVGVhbXNPcHRpb25zPy5lbmFibGVDYXJkID8/IHRydWU7XG5cdFx0XHRjb25zdCBvcHRpb25FeHAgPSByZXNvbHZlQmluZGluZ1N0cmluZzxib29sZWFuPihzaG93U2hhcmVBc0NhcmQsIFwiYm9vbGVhblwiKTtcblx0XHRcdGNvbnN0IGludGVybmFsT3B0aW9uID0gdGhpcy5fYmxvY2tJbnRlcm5hbENvbmZpZy5lbmFibGVDYXJkID8/IHRydWU7XG5cdFx0XHRjb25zdCBpbnRlcm5hbE9wdGlvbkV4cCA9IHJlc29sdmVCaW5kaW5nU3RyaW5nPGJvb2xlYW4+KGludGVybmFsT3B0aW9uLCBcImJvb2xlYW5cIik7XG5cdFx0XHRjb25zdCBleHBTaG93U2hhcmVBc0NhcmQgPSBhbmQob3B0aW9uRXhwLCBpbnRlcm5hbE9wdGlvbkV4cCk7XG5cdFx0XHRleHAgPSBhbmQobm90KFVJLklzRWRpdGFibGUpLCBleHBTaG93TVNUZWFtc09wdGlvbnMsIGV4cFNob3dTaGFyZUFzQ2FyZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGV4cCA9IGNvbnN0YW50KGZhbHNlKTtcblx0XHR9XG5cdFx0cmV0dXJuIGV4cDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYmluZGluZyB0b29sa2l0IGV4cHJlc3Npb24gZm9yIHNoYXJlIG9wdGlvbidzIHZpc2liaWxpdHkuXG5cdCAqIEBwYXJhbSBvcHRpb24gU2hhcmUgb3B0aW9uIGtleVxuXHQgKiBAcmV0dXJucyBCaW5kaW5nIHRvb2xraXQgZXhwcmVzc2lvbi5cblx0ICovXG5cdF9nZXRNU1RlYW1zU2hhcmVPcHRpb25WaXNpYmlsaXR5KG9wdGlvbjogU2hhcmVPcHRpb25LZXkpOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRcdGlmIChvcHRpb24gPT09IGVudW1TaGFyZU9wdGlvbi5DT0xMQUJPUkFUSU9OX01TVEVBTVNfQ0FSRCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuX2dldFNoYXJlQXNDYXJkVmlzaWJpbGl0eSgpO1xuXHRcdH1cblx0XHQvLyBObyBvdmVycmlkZXMgZm9yIFNoYXJlIGFzIFRhYiBhbmQgQ2hhdCB5ZXQuXG5cblx0XHRjb25zdCBtc1RlYW1zT3B0aW9uUmVmID0gdGhpcy5fZ2V0TWVudUl0ZW1SZWZlcmVuY2Uob3B0aW9uKTtcblx0XHRyZXR1cm4gbXNUZWFtc09wdGlvblJlZj8uY3VycmVudCA/IHRoaXMuX2dldFNob3dNc1RlYW1zT3B0aW9uc0V4cHJlc3Npb24oKSA6IGNvbnN0YW50KGZhbHNlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdmlzaWJsaXR5IG9mIGluZGl2aWR1YWwgc2hhcmUgb3B0aW9uJ3MgTWVudUl0ZW0uXG5cdCAqIEBwYXJhbSBvcHRpb24gU2hhcmUgb3B0aW9uIGtleVxuXHQgKiBAcGFyYW0gZXhwcmVzc2lvbiBWaXNpYmlsaXR5IGJpbmRpbmcgdG9vbGtpdCBleHByZXNzaW9uXG5cdCAqL1xuXHRfc2V0U2hhcmVPcHRpb25WaXNpYmlsaXR5KG9wdGlvbjogU2hhcmVPcHRpb25LZXksIGV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPik6IHZvaWQge1xuXHRcdGNvbnN0IG1lbnVJdGVtUmVmID0gdGhpcy5fZ2V0TWVudUl0ZW1SZWZlcmVuY2Uob3B0aW9uKTtcblx0XHRpZiAobWVudUl0ZW1SZWY/LmN1cnJlbnQpIHtcblx0XHRcdHRoaXMuX2JpbmRVSVZpc2liaWxpdHkobWVudUl0ZW1SZWYuY3VycmVudCwgZXhwcmVzc2lvbik7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEJpbmQgdGhlIFVJIGVsZW1lbnQncyB2aXNpYmlsaXR5IHByb3BlcnR5LlxuXHQgKiBAcGFyYW0gaXRlbSBVSSBlbGVtZW50XG5cdCAqIEBwYXJhbSBleHByZXNzaW9uIEV4cHJlc3Npb24gdG8gYmluZC5cblx0ICovXG5cdF9iaW5kVUlWaXNpYmlsaXR5KGl0ZW06IE1lbnVCdXR0b24gfCBNZW51SXRlbSB8IENvbW1hbmRFeGVjdXRpb24sIGV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPik6IHZvaWQge1xuXHRcdC8vIE5PVEU6IFdlIG5lZWQgY29udmVydCB0aGUgYmluZGluZyB0b29sa2l0IGV4cHJlc3Npb24gdG8gdGhlIGZvcm1hdCB0aGF0IGNhbiBiZSBjb25zdW1lZCBieSB0aGUgVUkgZWxlbWVudC5cblx0XHQvLyBBdCBydW50aW1lLCB3ZSBjYW4ndCB1c2UgYmluZGluZyB0b29sa2l0IGV4cHJlc3Npb24gb3IgY29tcGlsZWQgZXhwcmVzc2lvbiBkaXJlY3RseSB0byBiaW5kIHRoZSB2aXNpYmlsaXR5IG9yIHNldCB0aGUgdmlzaWJsZSBwcm9wZXJ0eSBvciB0aGUgVUkgZWxlbWVudC5cblx0XHQvLyBXZSB3b3VsZCBuZWVkIHRvIGNvbnZlcnQgdGhlIGJpbmRpbmcgdG9vbGtpdCBleHByZXNzaW9uIC0+IFVJNSBCaW5kaW5nSW5mbyB0byBiaW5kIHRoZSBVSSBlbGVtZW50LlxuXHRcdGNvbnN0IGNvbXBpbGVkRXhwID0gY29tcGlsZUV4cHJlc3Npb24oZXhwcmVzc2lvbik7XG5cblx0XHRpZiAoY29tcGlsZWRFeHAgJiYgY29tcGlsZWRFeHAuc3RhcnRzV2l0aChcIntcIikgJiYgY29tcGlsZWRFeHA/LmVuZHNXaXRoKFwifVwiKSkge1xuXHRcdFx0Ly8gUHJvYmFibGUgYmluZGluZ1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgcGFyc2VkRXhwID0gQmluZGluZ0luZm8ucGFyc2UoY29tcGlsZWRFeHApO1xuXHRcdFx0XHRpdGVtLmJpbmRQcm9wZXJ0eShcInZpc2libGVcIiwgcGFyc2VkRXhwKTtcblx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRMb2cuZXJyb3IoZXJyIGFzIHN0cmluZyk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChjb21waWxlZEV4cCA9PT0gXCJmYWxzZVwiKSB7XG5cdFx0XHQvLyBTdGF0aWNhbGx5IGZhbHNlXG5cdFx0XHRpdGVtLnVuYmluZFByb3BlcnR5KFwidmlzaWJsZVwiLCB0cnVlKTtcblx0XHRcdGl0ZW0uc2V0VmlzaWJsZShmYWxzZSk7XG5cdFx0fVxuXHR9XG5cblx0X2dldFNoYXJlQmxvY2tDb25maWcodmlldzogVmlldyk6IENvbmZpZ09wdGlvbnMge1xuXHRcdGNvbnN0IHZpZXdEYXRhID0gdmlldy5nZXRWaWV3RGF0YSgpIGFzIFZpZXdEYXRhO1xuXHRcdGNvbnN0IHZpZXdTaGFyZUNvbmZpZ3MgPSB2aWV3RGF0YT8uc2hhcmU7XG5cdFx0Y29uc3QgY29udHJvbGxlciA9IHZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyO1xuXHRcdGNvbnN0IGZlQXBwU2hhcmVDb25maWdzID0gY29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKS5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLmZlXCIpPy5hcHA/LnNoYXJlO1xuXG5cdFx0Y29uc3Qgc2hvd1NlbmRFbWFpbCA9IHRoaXMuX2dldE9wdGlvbkJsb2NrQ29uZmlnKGZlQXBwU2hhcmVDb25maWdzPy5zaG93U2VuZEVtYWlsLCB2aWV3U2hhcmVDb25maWdzPy5zaG93U2VuZEVtYWlsKTtcblx0XHRjb25zdCBzaG93Q29sbGFib3JhdGlvbk1hbmFnZXIgPSB0aGlzLl9nZXRPcHRpb25CbG9ja0NvbmZpZyhcblx0XHRcdGZlQXBwU2hhcmVDb25maWdzPy5zaG93Q29sbGFib3JhdGlvbk1hbmFnZXIsXG5cdFx0XHR2aWV3U2hhcmVDb25maWdzPy5zaG93Q29sbGFib3JhdGlvbk1hbmFnZXJcblx0XHQpO1xuXG5cdFx0Y29uc3Qgc2hvd01zVGVhbXNPcHRpb25zID0gdGhpcy5fZ2V0T3B0aW9uQmxvY2tDb25maWcoXG5cdFx0XHRmZUFwcFNoYXJlQ29uZmlncz8udGVhbXM/LnNob3dNc1RlYW1zT3B0aW9ucyxcblx0XHRcdHZpZXdTaGFyZUNvbmZpZ3M/LnRlYW1zPy5zaG93TXNUZWFtc09wdGlvbnNcblx0XHQpO1xuXHRcdGNvbnN0IGVuYWJsZUNhcmQgPSB0aGlzLl9nZXRPcHRpb25CbG9ja0NvbmZpZyhmZUFwcFNoYXJlQ29uZmlncz8udGVhbXM/LmFzQ2FyZCwgdmlld1NoYXJlQ29uZmlncz8udGVhbXM/LmFzQ2FyZCk7XG5cblx0XHRyZXR1cm4geyBzaG93U2VuZEVtYWlsLCBzaG93TXNUZWFtc09wdGlvbnMsIGVuYWJsZUNhcmQsIHNob3dDb2xsYWJvcmF0aW9uTWFuYWdlciB9O1xuXHR9XG5cblx0X2dldE9wdGlvbkJsb2NrQ29uZmlnKGZlQXBwU2V0dGluZz86IGJvb2xlYW4gfCBzdHJpbmcsIHZpZXdMZXZlbFNldHRpbmc/OiBib29sZWFuIHwgc3RyaW5nKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRcdGNvbnN0IGZlQXBwRXhwID0gdHlwZW9mIGZlQXBwU2V0dGluZyA9PT0gXCJzdHJpbmdcIiA/IHJlc29sdmVCaW5kaW5nU3RyaW5nPGJvb2xlYW4+KGZlQXBwU2V0dGluZykgOiBjb25zdGFudChmZUFwcFNldHRpbmcgPz8gdHJ1ZSk7XG5cdFx0Y29uc3Qgdmlld0xldmVsRXhwID1cblx0XHRcdHR5cGVvZiB2aWV3TGV2ZWxTZXR0aW5nID09PSBcInN0cmluZ1wiID8gcmVzb2x2ZUJpbmRpbmdTdHJpbmc8Ym9vbGVhbj4odmlld0xldmVsU2V0dGluZykgOiBjb25zdGFudCh2aWV3TGV2ZWxTZXR0aW5nID8/IHRydWUpO1xuXHRcdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihhbmQoZmVBcHBFeHAsIHZpZXdMZXZlbEV4cCkpO1xuXHR9XG5cblx0Y3JlYXRlQ29udGVudChhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCk6IFNoYXJlQVBJIHtcblx0XHQvLyBDdHJsK1NoaWZ0K1MgaXMgbmVlZGVkIGZvciB0aGUgdGltZSBiZWluZyBidXQgdGhpcyBuZWVkcyB0byBiZSByZW1vdmVkIGFmdGVyIGJhY2tsb2cgZnJvbSBtZW51IGJ1dHRvblxuXHRcdGNvbnN0IG1lbnVCdXR0b24gPSAoXG5cdFx0XHQ8U2hhcmVBUEkgaWQ9e3RoaXMuc2hhcmVBUElJZH0+XG5cdFx0XHRcdDxPdmVyZmxvd1Rvb2xiYXJNZW51QnV0dG9uXG5cdFx0XHRcdFx0dGV4dD17XCJ7c2FwLmZlLmkxOG4+TV9DT01NT05fU0FQRkVfQUNUSU9OX1NIQVJFfVwifVxuXHRcdFx0XHRcdHJlZj17dGhpcy5tZW51QnV0dG9ufVxuXHRcdFx0XHRcdGljb249e1wic2FwLWljb246Ly9hY3Rpb25cIn1cblx0XHRcdFx0XHR0b29sdGlwPXtcIntzYXAuZmUuaTE4bj5NX0NPTU1PTl9TQVBGRV9BQ1RJT05fU0hBUkV9IChDdHJsK1NoaWZ0K1MpXCJ9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHQ8TWVudSByZWY9e3RoaXMubWVudX0+PC9NZW51PlxuXHRcdFx0XHQ8L092ZXJmbG93VG9vbGJhck1lbnVCdXR0b24+XG5cdFx0XHQ8L1NoYXJlQVBJPlxuXHRcdCkgYXMgU2hhcmVBUEk7XG5cdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpXG5cdFx0XHQuZ2V0VmlldygpXG5cdFx0XHQuYWRkRGVwZW5kZW50KFxuXHRcdFx0XHQ8Q29tbWFuZEV4ZWN1dGlvblxuXHRcdFx0XHRcdHJlZj17dGhpcy5jbWRFeGVjdXRpb259XG5cdFx0XHRcdFx0Y29tbWFuZD1cIlNoYXJlXCJcblx0XHRcdFx0XHRleGVjdXRlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLm1lbnVCdXR0b24uY3VycmVudD8uZ2V0TWVudSgpLm9wZW5CeSh0aGlzLm1lbnVCdXR0b24uY3VycmVudCwgdHJ1ZSk7XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0Ly8gVGhlIGluaXRpYWxpemF0aW9uIGlzIGFzeW5jaHJvbm91cywgc28gd2UganVzdCB0cmlnZ2VyIGl0IGFuZCBob3BlIGZvciB0aGUgYmVzdCA6RFxuXHRcdHRoaXMuaXNJbml0aWFsaXplZCA9IHRoaXMuX2luaXRpYWxpemVNZW51SXRlbXModGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLmdldFZpZXcoKSwgYXBwQ29tcG9uZW50KS5jYXRjaCgoZXJyb3IpID0+IHtcblx0XHRcdExvZy5lcnJvcihlcnJvciBhcyBzdHJpbmcpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5zZXRMYXlvdXREYXRhKFxuXHRcdFx0bmV3IE92ZXJmbG93VG9vbGJhckxheW91dERhdGEoe1xuXHRcdFx0XHRwcmlvcml0eTogdGhpcy5wcmlvcml0eVxuXHRcdFx0fSlcblx0XHQpO1xuXHRcdHJldHVybiBtZW51QnV0dG9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgcHJvcGVydGllcyBmb3IgdGhlIGludGVyZmFjZSBJT3ZlcmZsb3dUb29sYmFyQ29udGVudC5cblx0ICogQHJldHVybnMgUmV0dXJucyB0aGUgY29uZmlndXJhdGlvbiBvZiBJT3ZlcmZsb3dUb29sYmFyQ29udGVudFxuXHQgKi9cblx0Z2V0T3ZlcmZsb3dUb29sYmFyQ29uZmlnKCk6IG9iamVjdCB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGNhbk92ZXJmbG93OiB0cnVlLFxuXHRcdFx0b25CZWZvcmVFbnRlck92ZXJmbG93OiBmdW5jdGlvbiAob0NvbnRyb2w6IFNoYXJlKTogdm9pZCB7XG5cdFx0XHRcdChvQ29udHJvbD8uZ2V0Q29udGVudCgpPy5nZXRDb250ZW50KCkgYXMgT3ZlcmZsb3dUb29sYmFyTWVudUJ1dHRvbikuZ2V0VGV4dCA9IGZ1bmN0aW9uICgpOiBzdHJpbmcge1xuXHRcdFx0XHRcdGNvbnN0IHJlc291cmNlTW9kZWwgPSBnZXRSZXNvdXJjZU1vZGVsKG9Db250cm9sIGFzIENvbnRyb2wpO1xuXHRcdFx0XHRcdHJldHVybiByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJNX0NPTU1PTl9TQVBGRV9BQ1RJT05fU0hBUkVcIik7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0b25BZnRlckV4aXRPdmVyZmxvdzogZnVuY3Rpb24gKG9Db250cm9sOiBTaGFyZSk6IHZvaWQge1xuXHRcdFx0XHQob0NvbnRyb2w/LmdldENvbnRlbnQoKT8uZ2V0Q29udGVudCgpIGFzIE92ZXJmbG93VG9vbGJhck1lbnVCdXR0b24pLmdldFRleHQgPSBmdW5jdGlvbiAoKTogc3RyaW5nIHtcblx0XHRcdFx0XHRyZXR1cm4gXCJcIjtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHRwcmlvcml0eTogdGhpcy5wcmlvcml0eVxuXHRcdH07XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE2Q0E7RUFDQTtFQVdBLE1BQU1BLGlCQUVMLEdBQUc7SUFDSEMsMEJBQTBCLEVBQUUsNEJBQTRCO0lBQ3hEQyx5QkFBeUIsRUFBRSwyQkFBMkI7SUFDdERDLDBCQUEwQixFQUFFO0VBQzdCLENBQUM7RUFFRCxNQUFNQyxlQUVMLEdBQUc7SUFDSCxHQUFHSixpQkFBaUI7SUFDcEIsR0FBRztNQUNGSyxVQUFVLEVBQUUsWUFBWTtNQUN4QkMsU0FBUyxFQUFFLFdBQVc7TUFDdEJDLFlBQVksRUFBRSxjQUFjO01BQzVCQyxjQUFjLEVBQUUsZ0JBQWdCO01BQ2hDQywyQkFBMkIsRUFBRTtJQUM5QjtFQUNELENBQUM7RUFJRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBbkJBLElBcUJxQkMsS0FBSyxJQUFBQyxJQUFBLEdBRHpCQyxjQUFjLENBQUMscUJBQXFCLENBQUMsRUFBQUMsS0FBQSxHQUVwQ0MsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBRzVCQyxrQkFBa0IsQ0FBQywrQkFBK0IsQ0FBQyxFQUFBQyxLQUFBLEdBT25EQyxXQUFXLENBQUM7SUFDWkosSUFBSSxFQUFFLGtDQUFrQztJQUN4Q0ssWUFBWSxFQUFFQyxZQUFZO0lBQzFCQyxTQUFTLEVBQUU7RUFDWixDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUdEVCxRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFLFFBQVE7SUFDZFMsWUFBWSxFQUFFQyx1QkFBdUIsQ0FBQ0M7RUFDdkMsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FNRFIsV0FBVyxDQUFDO0lB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YUFBQSxHQUFBdVIseUJBQUEsQ0FBQTVTLE9BQUEsQ0FBQWlDLFNBQUEsd0JBQUEzQyxNQUFBO0lBQUF1VCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTFSLGFBQUEsR0FBQXNSLHlCQUFBLENBQUE1UyxPQUFBLENBQUFpQyxTQUFBLDBCQUFBMUMsTUFBQTtJQUFBc1QsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF6UixhQUFBLEdBQUFxUix5QkFBQSxDQUFBNVMsT0FBQSxDQUFBaUMsU0FBQSwyQkFBQXpDLE1BQUE7SUFBQXFULFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBeFIsYUFBQSxHQUFBb1IseUJBQUEsQ0FBQTVTLE9BQUEsQ0FBQWlDLFNBQUEseUJBQUF4QyxNQUFBO0lBQUFvVCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXZSLGFBQUEsR0FBQW1SLHlCQUFBLENBQUE1UyxPQUFBLENBQUFpQyxTQUFBLDJCQUFBdkMsTUFBQTtJQUFBbVQsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF0UixhQUFBLEdBQUFrUix5QkFBQSxDQUFBNVMsT0FBQSxDQUFBaUMsU0FBQSxvQkFBQXRDLE1BQUE7SUFBQWtULFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBclIsYUFBQSxHQUFBaVIseUJBQUEsQ0FBQTVTLE9BQUEsQ0FBQWlDLFNBQUEsa0NBQUFyQyxNQUFBO0lBQUFpVCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXBSLGFBQUEsR0FBQWdSLHlCQUFBLENBQUE1UyxPQUFBLENBQUFpQyxTQUFBLDBCQUFBcEMsTUFBQTtJQUFBZ1QsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFuUixhQUFBLEdBQUErUSx5QkFBQSxDQUFBNVMsT0FBQSxDQUFBaUMsU0FBQSwwQkFBQW5DLE1BQUE7SUFBQStTLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBaFQsT0FBQSxNQUFBRCxNQUFBO0VBQUErQixRQUFBLEdBQUFsRSxLQUFBO0VBQUEsT0FBQWtFLFFBQUE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -298,13 +298,16 @@ export default class Share extends BuildingBlock<ShareAPI> {
|
|
|
298
298
|
}
|
|
299
299
|
|
|
300
300
|
/**
|
|
301
|
-
* Add Export as Excel option to menu button.
|
|
301
|
+
* Add the Export as Excel option to the menu button.
|
|
302
302
|
* @param controller Page controller
|
|
303
303
|
* @param view The view this building block is used in
|
|
304
304
|
*/
|
|
305
305
|
_addExportExcelOptions(controller: PageController, view: View): void {
|
|
306
306
|
const viewData = view.getViewData() as ViewData;
|
|
307
|
-
if (
|
|
307
|
+
if (
|
|
308
|
+
viewData?.share?.hasOwnProperty("exportToSpreadsheet") === true &&
|
|
309
|
+
viewData?.share?.exportToSpreadsheet?.hasOwnProperty("press") === true
|
|
310
|
+
) {
|
|
308
311
|
this?.menu?.current?.addItem(
|
|
309
312
|
<MenuItem
|
|
310
313
|
ref={this.exportToSpreadsheetMenuItem}
|
|
@@ -319,13 +322,13 @@ export default class Share extends BuildingBlock<ShareAPI> {
|
|
|
319
322
|
}
|
|
320
323
|
|
|
321
324
|
/**
|
|
322
|
-
* Add Export as CSV option to menu button.
|
|
325
|
+
* Add the Export as CSV option to the menu button.
|
|
323
326
|
* @param controller Page controller
|
|
324
327
|
* @param view The view this building block is used in
|
|
325
328
|
*/
|
|
326
329
|
_addExportCSVOptions(controller: PageController, view: View): void {
|
|
327
330
|
const viewData = view.getViewData() as ViewData;
|
|
328
|
-
if (viewData?.share?.hasOwnProperty("exportToCSV") === true && viewData?.share?.
|
|
331
|
+
if (viewData?.share?.hasOwnProperty("exportToCSV") === true && viewData?.share?.exportToCSV?.hasOwnProperty("press") === true) {
|
|
329
332
|
this?.menu?.current?.addItem(
|
|
330
333
|
<MenuItem
|
|
331
334
|
ref={this.exportToCSVMenuItem}
|
|
@@ -340,13 +343,13 @@ export default class Share extends BuildingBlock<ShareAPI> {
|
|
|
340
343
|
}
|
|
341
344
|
|
|
342
345
|
/**
|
|
343
|
-
* Add Export as PDF option to menu button.
|
|
346
|
+
* Add the Export as PDF option to the menu button.
|
|
344
347
|
* @param controller Page controller
|
|
345
348
|
* @param view The view this building block is used in
|
|
346
349
|
*/
|
|
347
350
|
_addExportPDFOptions(controller: PageController, view: View): void {
|
|
348
351
|
const viewData = view.getViewData() as ViewData;
|
|
349
|
-
if (viewData?.share?.hasOwnProperty("exportToPDF") === true && viewData?.share?.
|
|
352
|
+
if (viewData?.share?.hasOwnProperty("exportToPDF") === true && viewData?.share?.exportToPDF?.hasOwnProperty("press") === true) {
|
|
350
353
|
this?.menu?.current?.addItem(
|
|
351
354
|
<MenuItem
|
|
352
355
|
ref={this.exportToPDFMenuItem}
|