@kepler.gl/reducers 3.3.0-alpha.15 → 3.3.0-alpha.17
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/dist/cjs/column-edit-reconcile.js +100 -0
- package/dist/cjs/column-edit-updaters.spec.js +840 -0
- package/dist/cjs/combined-updaters.js +166 -8
- package/dist/cjs/composers.js +4 -5
- package/dist/cjs/dataset-ops-updaters.js +375 -0
- package/dist/cjs/dataset-ops-updaters.spec.js +382 -0
- package/dist/cjs/export-utils.js +118 -46
- package/dist/cjs/interaction-utils.js +166 -6
- package/dist/cjs/layer-utils.js +135 -9
- package/dist/cjs/ui-state-updaters.js +134 -51
- package/dist/cjs/ui-state.js +2 -2
- package/dist/cjs/vis-state-merger-text-label.spec.js +75 -0
- package/dist/cjs/vis-state-merger.js +99 -25
- package/dist/cjs/vis-state-selectors.js +5 -4
- package/dist/cjs/vis-state-updaters.js +1077 -256
- package/dist/cjs/vis-state.js +2 -2
- package/dist/column-edit-reconcile.d.ts +4 -0
- package/dist/column-edit-updaters.spec.d.ts +1 -0
- package/dist/combined-updaters.d.ts +21 -1
- package/dist/composers.d.ts +3 -0
- package/dist/dataset-ops-updaters.d.ts +21 -0
- package/dist/dataset-ops-updaters.spec.d.ts +1 -0
- package/dist/esm/column-edit-reconcile.js +95 -0
- package/dist/esm/column-edit-updaters.spec.js +839 -0
- package/dist/esm/combined-updaters.js +166 -8
- package/dist/esm/composers.js +3 -2
- package/dist/esm/dataset-ops-updaters.js +357 -0
- package/dist/esm/dataset-ops-updaters.spec.js +381 -0
- package/dist/esm/export-utils.js +117 -45
- package/dist/esm/interaction-utils.js +159 -3
- package/dist/esm/layer-utils.js +133 -9
- package/dist/esm/ui-state-updaters.js +133 -50
- package/dist/esm/ui-state.js +2 -2
- package/dist/esm/vis-state-merger-text-label.spec.js +74 -0
- package/dist/esm/vis-state-merger.js +99 -26
- package/dist/esm/vis-state-selectors.js +5 -4
- package/dist/esm/vis-state-updaters.js +1020 -263
- package/dist/esm/vis-state.js +2 -2
- package/dist/export-utils.d.ts +2 -2
- package/dist/interaction-utils.d.ts +25 -2
- package/dist/layer-utils.d.ts +17 -0
- package/dist/ui-state-updaters.d.ts +30 -0
- package/dist/vis-state-merger-text-label.spec.d.ts +1 -0
- package/dist/vis-state-merger.d.ts +10 -2
- package/dist/vis-state-updaters.d.ts +61 -15
- package/dist/vis-state.d.ts +20 -0
- package/package.json +17 -17
|
@@ -75,11 +75,17 @@ var DEFAULT_MAP_LEGEND_CONTROL = _objectSpread(_objectSpread({}, DEFAULT_MAP_CON
|
|
|
75
75
|
* @property mapLocale Default: `{show: true, active: false}`
|
|
76
76
|
* @property mapTheme Default: `{show: true, active: false}`
|
|
77
77
|
* @property viewportJson Default: `{show: true, active: false}`
|
|
78
|
+
* @property mapInfo Default: `{show: true, active: true}`. `show` hides the on-map name and description.
|
|
78
79
|
* @public
|
|
79
80
|
*/
|
|
80
|
-
export var DEFAULT_MAP_CONTROLS = Object.keys(MAP_CONTROLS).reduce(function (_final, current) {
|
|
81
|
+
export var DEFAULT_MAP_CONTROLS = _objectSpread(_objectSpread({}, Object.keys(MAP_CONTROLS).reduce(function (_final, current) {
|
|
81
82
|
return _objectSpread(_objectSpread({}, _final), {}, _defineProperty({}, current, current === MAP_CONTROLS.mapLegend ? DEFAULT_MAP_LEGEND_CONTROL : DEFAULT_MAP_CONTROLS_FEATURES));
|
|
82
|
-
}, {})
|
|
83
|
+
}, {})), {}, {
|
|
84
|
+
// Open by default so a saved title shows on load. An empty map still hides the card.
|
|
85
|
+
mapInfo: _objectSpread(_objectSpread({}, DEFAULT_MAP_CONTROLS_FEATURES), {}, {
|
|
86
|
+
active: true
|
|
87
|
+
})
|
|
88
|
+
});
|
|
83
89
|
|
|
84
90
|
/**
|
|
85
91
|
* Default image export config
|
|
@@ -89,6 +95,7 @@ export var DEFAULT_MAP_CONTROLS = Object.keys(MAP_CONTROLS).reduce(function (_fi
|
|
|
89
95
|
* @property resolution Default: `'ONE_X'`,
|
|
90
96
|
* @property legend Default: `false`,
|
|
91
97
|
* @property charts Default: `false`,
|
|
98
|
+
* @property transparentBackground Default: `false`,
|
|
92
99
|
* @property mapH Default: 0,
|
|
93
100
|
* @property mapW Default: 0,
|
|
94
101
|
* @property imageSize Default: {zoomOffset: 0, scale: 1, imageW: 0, imageH: 0},
|
|
@@ -105,6 +112,7 @@ export var DEFAULT_EXPORT_IMAGE = {
|
|
|
105
112
|
resolution: RESOLUTIONS.ONE_X,
|
|
106
113
|
legend: false,
|
|
107
114
|
charts: false,
|
|
115
|
+
transparentBackground: false,
|
|
108
116
|
mapH: 0,
|
|
109
117
|
mapW: 0,
|
|
110
118
|
imageSize: {
|
|
@@ -179,9 +187,10 @@ export var DEFAULT_EXPORT_JSON = {
|
|
|
179
187
|
* @property JSON - Default: 'DEFAULT_EXPORT_JSON',
|
|
180
188
|
* @property format - Default: 'HTML',
|
|
181
189
|
* @property fileName Default: `''`,
|
|
190
|
+
* @property includeLayerApiKeys Default: `false`,
|
|
182
191
|
* @public
|
|
183
192
|
*/
|
|
184
|
-
export var DEFAULT_EXPORT_MAP = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, EXPORT_MAP_FORMATS.HTML, DEFAULT_EXPORT_HTML), EXPORT_MAP_FORMATS.JSON, DEFAULT_EXPORT_JSON), "format", EXPORT_MAP_FORMATS.HTML), "fileName", '');
|
|
193
|
+
export var DEFAULT_EXPORT_MAP = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, EXPORT_MAP_FORMATS.HTML, DEFAULT_EXPORT_HTML), EXPORT_MAP_FORMATS.JSON, DEFAULT_EXPORT_JSON), "format", EXPORT_MAP_FORMATS.HTML), "fileName", ''), "includeLayerApiKeys", false);
|
|
185
194
|
|
|
186
195
|
/**
|
|
187
196
|
* Default initial `exportVideo` settings
|
|
@@ -214,6 +223,7 @@ export var DEFAULT_EXPORT_VIDEO = {
|
|
|
214
223
|
* @property activeSidePanel Default: `'layer'`
|
|
215
224
|
* @property currentModal Default: `'addData'`
|
|
216
225
|
* @property datasetKeyToRemove Default: `null`
|
|
226
|
+
* @property datasetToReplaceId Default: `null`
|
|
217
227
|
* @property visibleDropdown Default: `null`
|
|
218
228
|
* @property exportImage Default: [`DEFAULT_EXPORT_IMAGE`](#default_export_image)
|
|
219
229
|
* @property exportData Default: [`DEFAULT_EXPORT_DATA`](#default_export_data)
|
|
@@ -232,6 +242,7 @@ export var INITIAL_UI_STATE = {
|
|
|
232
242
|
activeSidePanel: DEFAULT_ACTIVE_SIDE_PANEL,
|
|
233
243
|
currentModal: DEFAULT_MODAL,
|
|
234
244
|
datasetKeyToRemove: null,
|
|
245
|
+
datasetToReplaceId: null,
|
|
235
246
|
visibleDropdown: null,
|
|
236
247
|
// export image modal ui
|
|
237
248
|
exportImage: DEFAULT_EXPORT_IMAGE,
|
|
@@ -305,7 +316,10 @@ export var toggleSidePanelUpdater = function toggleSidePanelUpdater(state, _ref)
|
|
|
305
316
|
export var toggleModalUpdater = function toggleModalUpdater(state, _ref2) {
|
|
306
317
|
var id = _ref2.payload;
|
|
307
318
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
308
|
-
currentModal: id
|
|
319
|
+
currentModal: id,
|
|
320
|
+
// Add Data and every other modal open leave replace mode.
|
|
321
|
+
// Replace mode is entered only through openReplaceDatasetModal.
|
|
322
|
+
datasetToReplaceId: null
|
|
309
323
|
});
|
|
310
324
|
};
|
|
311
325
|
|
|
@@ -462,6 +476,23 @@ export var openDeleteModalUpdater = function openDeleteModalUpdater(state, _ref8
|
|
|
462
476
|
});
|
|
463
477
|
};
|
|
464
478
|
|
|
479
|
+
/**
|
|
480
|
+
* Open the add-data modal so the next confirmed upload replaces one dataset.
|
|
481
|
+
* @memberof uiStateUpdaters
|
|
482
|
+
* @param state `uiState`
|
|
483
|
+
* @param action
|
|
484
|
+
* @param action.payload dataset id
|
|
485
|
+
* @returns nextState
|
|
486
|
+
* @public
|
|
487
|
+
*/
|
|
488
|
+
export var openReplaceDatasetModalUpdater = function openReplaceDatasetModalUpdater(state, _ref9) {
|
|
489
|
+
var datasetToReplaceId = _ref9.payload;
|
|
490
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
491
|
+
currentModal: ADD_DATA_ID,
|
|
492
|
+
datasetToReplaceId: datasetToReplaceId
|
|
493
|
+
});
|
|
494
|
+
};
|
|
495
|
+
|
|
465
496
|
/**
|
|
466
497
|
* Set `exportImage` options such as `legend` and `charts` to `true` or `false`
|
|
467
498
|
* @memberof uiStateUpdaters
|
|
@@ -469,8 +500,8 @@ export var openDeleteModalUpdater = function openDeleteModalUpdater(state, _ref8
|
|
|
469
500
|
* @returns nextState
|
|
470
501
|
* @public
|
|
471
502
|
*/
|
|
472
|
-
export var setExportImageSettingUpdater = function setExportImageSettingUpdater(state,
|
|
473
|
-
var newSetting =
|
|
503
|
+
export var setExportImageSettingUpdater = function setExportImageSettingUpdater(state, _ref0) {
|
|
504
|
+
var newSetting = _ref0.payload;
|
|
474
505
|
var updated = _objectSpread(_objectSpread({}, state.exportImage), newSetting);
|
|
475
506
|
var imageSize = calculateExportImageSize(updated) || state.exportImage.imageSize;
|
|
476
507
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
@@ -489,8 +520,8 @@ export var setExportImageSettingUpdater = function setExportImageSettingUpdater(
|
|
|
489
520
|
* @returns nextState
|
|
490
521
|
* @public
|
|
491
522
|
*/
|
|
492
|
-
export var setExportImageDataUriUpdater = function setExportImageDataUriUpdater(state,
|
|
493
|
-
var dataUri =
|
|
523
|
+
export var setExportImageDataUriUpdater = function setExportImageDataUriUpdater(state, _ref1) {
|
|
524
|
+
var dataUri = _ref1.payload;
|
|
494
525
|
if (dataUri === state.exportImage.imageDataUri) {
|
|
495
526
|
return state;
|
|
496
527
|
}
|
|
@@ -506,8 +537,8 @@ export var setExportImageDataUriUpdater = function setExportImageDataUriUpdater(
|
|
|
506
537
|
* @memberof uiStateUpdaters
|
|
507
538
|
* @public
|
|
508
539
|
*/
|
|
509
|
-
export var setExportImageErrorUpdater = function setExportImageErrorUpdater(state,
|
|
510
|
-
var error =
|
|
540
|
+
export var setExportImageErrorUpdater = function setExportImageErrorUpdater(state, _ref10) {
|
|
541
|
+
var error = _ref10.payload;
|
|
511
542
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
512
543
|
exportImage: _objectSpread(_objectSpread({}, state.exportImage), {}, {
|
|
513
544
|
processing: false,
|
|
@@ -542,8 +573,8 @@ export var cleanupExportImageUpdater = function cleanupExportImageUpdater(state)
|
|
|
542
573
|
* @returns nextState
|
|
543
574
|
* @public
|
|
544
575
|
*/
|
|
545
|
-
export var setExportVideoSettingUpdater = function setExportVideoSettingUpdater(state,
|
|
546
|
-
var newSetting =
|
|
576
|
+
export var setExportVideoSettingUpdater = function setExportVideoSettingUpdater(state, _ref11) {
|
|
577
|
+
var newSetting = _ref11.payload;
|
|
547
578
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
548
579
|
exportVideo: _objectSpread(_objectSpread({}, state.exportVideo), newSetting)
|
|
549
580
|
});
|
|
@@ -557,9 +588,9 @@ export var setExportVideoSettingUpdater = function setExportVideoSettingUpdater(
|
|
|
557
588
|
* @returns {UiState}
|
|
558
589
|
* @public
|
|
559
590
|
*/
|
|
560
|
-
export var startExportingImageUpdater = function startExportingImageUpdater(state,
|
|
561
|
-
var
|
|
562
|
-
options =
|
|
591
|
+
export var startExportingImageUpdater = function startExportingImageUpdater(state, _ref12) {
|
|
592
|
+
var _ref12$payload = _ref12.payload,
|
|
593
|
+
options = _ref12$payload === void 0 ? {} : _ref12$payload;
|
|
563
594
|
var imageSettings = _objectSpread(_objectSpread({}, options), {}, {
|
|
564
595
|
exporting: true
|
|
565
596
|
});
|
|
@@ -575,8 +606,8 @@ export var startExportingImageUpdater = function startExportingImageUpdater(stat
|
|
|
575
606
|
* @returns nextState
|
|
576
607
|
* @public
|
|
577
608
|
*/
|
|
578
|
-
export var setExportSelectedDatasetUpdater = function setExportSelectedDatasetUpdater(state,
|
|
579
|
-
var dataset =
|
|
609
|
+
export var setExportSelectedDatasetUpdater = function setExportSelectedDatasetUpdater(state, _ref13) {
|
|
610
|
+
var dataset = _ref13.payload;
|
|
580
611
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
581
612
|
exportData: _objectSpread(_objectSpread({}, state.exportData), {}, {
|
|
582
613
|
selectedDataset: dataset
|
|
@@ -593,8 +624,8 @@ export var setExportSelectedDatasetUpdater = function setExportSelectedDatasetUp
|
|
|
593
624
|
* @returns nextState
|
|
594
625
|
* @public
|
|
595
626
|
*/
|
|
596
|
-
export var setExportDataTypeUpdater = function setExportDataTypeUpdater(state,
|
|
597
|
-
var dataType =
|
|
627
|
+
export var setExportDataTypeUpdater = function setExportDataTypeUpdater(state, _ref14) {
|
|
628
|
+
var dataType = _ref14.payload;
|
|
598
629
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
599
630
|
exportData: _objectSpread(_objectSpread({}, state.exportData), {}, {
|
|
600
631
|
dataType: dataType
|
|
@@ -611,8 +642,8 @@ export var setExportDataTypeUpdater = function setExportDataTypeUpdater(state, _
|
|
|
611
642
|
* @returns nextState
|
|
612
643
|
* @public
|
|
613
644
|
*/
|
|
614
|
-
export var setExportFilteredUpdater = function setExportFilteredUpdater(state,
|
|
615
|
-
var filtered =
|
|
645
|
+
export var setExportFilteredUpdater = function setExportFilteredUpdater(state, _ref15) {
|
|
646
|
+
var filtered = _ref15.payload;
|
|
616
647
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
617
648
|
exportData: _objectSpread(_objectSpread({}, state.exportData), {}, {
|
|
618
649
|
filtered: filtered
|
|
@@ -643,8 +674,8 @@ export var setExportDataUpdater = function setExportDataUpdater(state) {
|
|
|
643
674
|
* @returns nextState
|
|
644
675
|
* @public
|
|
645
676
|
*/
|
|
646
|
-
export var setUserMapboxAccessTokenUpdater = function setUserMapboxAccessTokenUpdater(state,
|
|
647
|
-
var userMapboxToken =
|
|
677
|
+
export var setUserMapboxAccessTokenUpdater = function setUserMapboxAccessTokenUpdater(state, _ref16) {
|
|
678
|
+
var userMapboxToken = _ref16.payload;
|
|
648
679
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
649
680
|
exportMap: _objectSpread(_objectSpread({}, state.exportMap), {}, _defineProperty({}, EXPORT_MAP_FORMATS.HTML, _objectSpread(_objectSpread({}, state.exportMap[EXPORT_MAP_FORMATS.HTML]), {}, {
|
|
650
681
|
userMapboxToken: userMapboxToken
|
|
@@ -659,8 +690,8 @@ export var setUserMapboxAccessTokenUpdater = function setUserMapboxAccessTokenUp
|
|
|
659
690
|
* @param action.payload format to use to export the map into
|
|
660
691
|
* @return nextState
|
|
661
692
|
*/
|
|
662
|
-
export var setExportMapFormatUpdater = function setExportMapFormatUpdater(state,
|
|
663
|
-
var format =
|
|
693
|
+
export var setExportMapFormatUpdater = function setExportMapFormatUpdater(state, _ref17) {
|
|
694
|
+
var format = _ref17.payload;
|
|
664
695
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
665
696
|
exportMap: _objectSpread(_objectSpread({}, state.exportMap), {}, {
|
|
666
697
|
// @ts-expect-error
|
|
@@ -678,8 +709,8 @@ export var setExportMapFormatUpdater = function setExportMapFormatUpdater(state,
|
|
|
678
709
|
* @returns nextState
|
|
679
710
|
* @public
|
|
680
711
|
*/
|
|
681
|
-
export var setExportMapFileNameUpdater = function setExportMapFileNameUpdater(state,
|
|
682
|
-
var fileName =
|
|
712
|
+
export var setExportMapFileNameUpdater = function setExportMapFileNameUpdater(state, _ref18) {
|
|
713
|
+
var fileName = _ref18.payload;
|
|
683
714
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
684
715
|
exportMap: _objectSpread(_objectSpread({}, state.exportMap), {}, {
|
|
685
716
|
fileName: fileName
|
|
@@ -694,8 +725,8 @@ export var setExportMapFileNameUpdater = function setExportMapFileNameUpdater(st
|
|
|
694
725
|
* @param action.payload to be set (available modes: EXPORT_HTML_MAP_MODES)
|
|
695
726
|
* @return nextState
|
|
696
727
|
*/
|
|
697
|
-
export var setExportMapHTMLModeUpdater = function setExportMapHTMLModeUpdater(state,
|
|
698
|
-
var mode =
|
|
728
|
+
export var setExportMapHTMLModeUpdater = function setExportMapHTMLModeUpdater(state, _ref19) {
|
|
729
|
+
var mode = _ref19.payload;
|
|
699
730
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
700
731
|
exportMap: _objectSpread(_objectSpread({}, state.exportMap), {}, _defineProperty({}, EXPORT_MAP_FORMATS.HTML, _objectSpread(_objectSpread({}, state.exportMap[EXPORT_MAP_FORMATS.HTML]), {}, {
|
|
701
732
|
mode: mode
|
|
@@ -703,6 +734,36 @@ export var setExportMapHTMLModeUpdater = function setExportMapHTMLModeUpdater(st
|
|
|
703
734
|
});
|
|
704
735
|
};
|
|
705
736
|
|
|
737
|
+
/**
|
|
738
|
+
* Set application branding overrides for exported maps.
|
|
739
|
+
* @param state - `uiState`
|
|
740
|
+
* @param action
|
|
741
|
+
* @param action.payload application name and/or website overrides
|
|
742
|
+
* @return nextState
|
|
743
|
+
*/
|
|
744
|
+
export var setExportMapBrandingUpdater = function setExportMapBrandingUpdater(state, _ref20) {
|
|
745
|
+
var payload = _ref20.payload;
|
|
746
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
747
|
+
exportMap: _objectSpread(_objectSpread({}, state.exportMap), payload)
|
|
748
|
+
});
|
|
749
|
+
};
|
|
750
|
+
|
|
751
|
+
/**
|
|
752
|
+
* Whether to keep layer access tokens in exported HTML and JSON maps.
|
|
753
|
+
* @param state - `uiState`
|
|
754
|
+
* @param action
|
|
755
|
+
* @param action.payload - include layer API keys
|
|
756
|
+
* @return nextState
|
|
757
|
+
*/
|
|
758
|
+
export var setExportIncludeLayerApiKeysUpdater = function setExportIncludeLayerApiKeysUpdater(state, _ref21) {
|
|
759
|
+
var includeLayerApiKeys = _ref21.payload;
|
|
760
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
761
|
+
exportMap: _objectSpread(_objectSpread({}, state.exportMap), {}, {
|
|
762
|
+
includeLayerApiKeys: includeLayerApiKeys
|
|
763
|
+
})
|
|
764
|
+
});
|
|
765
|
+
};
|
|
766
|
+
|
|
706
767
|
/**
|
|
707
768
|
* Adds a new notification.
|
|
708
769
|
* Updates a notification in case of matching ids.
|
|
@@ -713,8 +774,8 @@ export var setExportMapHTMLModeUpdater = function setExportMapHTMLModeUpdater(st
|
|
|
713
774
|
* @returns nextState
|
|
714
775
|
* @public
|
|
715
776
|
*/
|
|
716
|
-
export var addNotificationUpdater = function addNotificationUpdater(state,
|
|
717
|
-
var payload =
|
|
777
|
+
export var addNotificationUpdater = function addNotificationUpdater(state, _ref22) {
|
|
778
|
+
var payload = _ref22.payload;
|
|
718
779
|
var oldNotifications = state.notifications || [];
|
|
719
780
|
// @ts-expect-error
|
|
720
781
|
var payloadId = payload === null || payload === void 0 ? void 0 : payload.id;
|
|
@@ -745,8 +806,8 @@ export var addNotificationUpdater = function addNotificationUpdater(state, _ref1
|
|
|
745
806
|
* @returns nextState
|
|
746
807
|
* @public
|
|
747
808
|
*/
|
|
748
|
-
export var removeNotificationUpdater = function removeNotificationUpdater(state,
|
|
749
|
-
var id =
|
|
809
|
+
export var removeNotificationUpdater = function removeNotificationUpdater(state, _ref23) {
|
|
810
|
+
var id = _ref23.payload;
|
|
750
811
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
751
812
|
notifications: state.notifications.filter(function (n) {
|
|
752
813
|
return n.id !== id;
|
|
@@ -792,8 +853,8 @@ export var loadFilesSuccessUpdater = function loadFilesSuccessUpdater(state) {
|
|
|
792
853
|
* @returns nextState
|
|
793
854
|
* @public
|
|
794
855
|
*/
|
|
795
|
-
export var loadFilesErrUpdater = function loadFilesErrUpdater(state,
|
|
796
|
-
var error =
|
|
856
|
+
export var loadFilesErrUpdater = function loadFilesErrUpdater(state, _ref24) {
|
|
857
|
+
var error = _ref24.error;
|
|
797
858
|
return addNotificationUpdater(_objectSpread(_objectSpread({}, state), {}, {
|
|
798
859
|
loadFiles: _objectSpread(_objectSpread({}, state.loadFiles), {}, {
|
|
799
860
|
fileLoading: false
|
|
@@ -846,8 +907,8 @@ export var showDatasetTableUpdater = function showDatasetTableUpdater(state) {
|
|
|
846
907
|
* @returns nextState
|
|
847
908
|
* @public
|
|
848
909
|
*/
|
|
849
|
-
export var setLocaleUpdater = function setLocaleUpdater(state,
|
|
850
|
-
var locale =
|
|
910
|
+
export var setLocaleUpdater = function setLocaleUpdater(state, _ref25) {
|
|
911
|
+
var locale = _ref25.payload.locale;
|
|
851
912
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
852
913
|
locale: locale
|
|
853
914
|
});
|
|
@@ -863,8 +924,8 @@ export var setLocaleUpdater = function setLocaleUpdater(state, _ref22) {
|
|
|
863
924
|
* @returns nextState
|
|
864
925
|
* @public
|
|
865
926
|
*/
|
|
866
|
-
export var setThemeUpdater = function setThemeUpdater(state,
|
|
867
|
-
var theme =
|
|
927
|
+
export var setThemeUpdater = function setThemeUpdater(state, _ref26) {
|
|
928
|
+
var theme = _ref26.payload.theme;
|
|
868
929
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
869
930
|
theme: theme
|
|
870
931
|
});
|
|
@@ -879,10 +940,10 @@ export var setThemeUpdater = function setThemeUpdater(state, _ref23) {
|
|
|
879
940
|
* @returns nextState
|
|
880
941
|
* @public
|
|
881
942
|
*/
|
|
882
|
-
export var togglePanelListViewUpdater = function togglePanelListViewUpdater(state,
|
|
883
|
-
var
|
|
884
|
-
panelId =
|
|
885
|
-
listView =
|
|
943
|
+
export var togglePanelListViewUpdater = function togglePanelListViewUpdater(state, _ref27) {
|
|
944
|
+
var _ref27$payload = _ref27.payload,
|
|
945
|
+
panelId = _ref27$payload.panelId,
|
|
946
|
+
listView = _ref27$payload.listView;
|
|
886
947
|
var stateProp = panelId === 'layer' ? 'layerPanelListView' : panelId === 'filter' ? 'filterPanelListView' : null;
|
|
887
948
|
if (!stateProp || state[stateProp] === listView) {
|
|
888
949
|
return state;
|
|
@@ -899,11 +960,11 @@ export var togglePanelListViewUpdater = function togglePanelListViewUpdater(stat
|
|
|
899
960
|
* @returns nextState
|
|
900
961
|
* @public
|
|
901
962
|
*/
|
|
902
|
-
export var receiveMapConfigUpdater = function receiveMapConfigUpdater(state,
|
|
903
|
-
var _uiState$mapControls, _uiState$mapControls2, _uiState$mapControls3;
|
|
904
|
-
var config =
|
|
905
|
-
var
|
|
906
|
-
uiState =
|
|
963
|
+
export var receiveMapConfigUpdater = function receiveMapConfigUpdater(state, _ref28) {
|
|
964
|
+
var _uiState$mapControls, _uiState$mapControls2, _uiState$mapControls3, _uiState$mapControls4;
|
|
965
|
+
var config = _ref28.payload.config;
|
|
966
|
+
var _ref29 = config || {},
|
|
967
|
+
uiState = _ref29.uiState;
|
|
907
968
|
if (!uiState) {
|
|
908
969
|
return state;
|
|
909
970
|
}
|
|
@@ -934,7 +995,29 @@ export var receiveMapConfigUpdater = function receiveMapConfigUpdater(state, _re
|
|
|
934
995
|
})
|
|
935
996
|
});
|
|
936
997
|
}
|
|
937
|
-
|
|
998
|
+
|
|
999
|
+
// Honor an explicit collapsed or hidden state. A missing key keeps the default (shown, open).
|
|
1000
|
+
var savedMapInfo = (_uiState$mapControls3 = uiState.mapControls) === null || _uiState$mapControls3 === void 0 ? void 0 : _uiState$mapControls3.mapInfo;
|
|
1001
|
+
var savedMapInfoActive = savedMapInfo === null || savedMapInfo === void 0 ? void 0 : savedMapInfo.active;
|
|
1002
|
+
var savedMapInfoShow = savedMapInfo === null || savedMapInfo === void 0 ? void 0 : savedMapInfo.show;
|
|
1003
|
+
if (typeof savedMapInfoActive === 'boolean' || typeof savedMapInfoShow === 'boolean') {
|
|
1004
|
+
var currentMapInfo = newState.mapControls.mapInfo;
|
|
1005
|
+
newState = _objectSpread(_objectSpread({}, newState), {}, {
|
|
1006
|
+
mapControls: _objectSpread(_objectSpread({}, newState.mapControls), {}, {
|
|
1007
|
+
mapInfo: _objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
1008
|
+
show: true,
|
|
1009
|
+
active: true
|
|
1010
|
+
}, currentMapInfo), typeof savedMapInfoShow === 'boolean' ? {
|
|
1011
|
+
show: savedMapInfoShow
|
|
1012
|
+
} : {}), typeof savedMapInfoActive === 'boolean' ? {
|
|
1013
|
+
active: savedMapInfoActive
|
|
1014
|
+
} : {}), {}, {
|
|
1015
|
+
activeMapIndex: 0
|
|
1016
|
+
})
|
|
1017
|
+
})
|
|
1018
|
+
});
|
|
1019
|
+
}
|
|
1020
|
+
if ((_uiState$mapControls4 = uiState.mapControls) !== null && _uiState$mapControls4 !== void 0 && (_uiState$mapControls4 = _uiState$mapControls4.mapLegend) !== null && _uiState$mapControls4 !== void 0 && _uiState$mapControls4.settings) {
|
|
938
1021
|
newState = setMapControlSettingsUpdater(newState, {
|
|
939
1022
|
payload: {
|
|
940
1023
|
panelId: 'mapLegend',
|
|
@@ -958,4 +1041,4 @@ export var receiveMapConfigUpdater = function receiveMapConfigUpdater(state, _re
|
|
|
958
1041
|
}
|
|
959
1042
|
return newState;
|
|
960
1043
|
};
|
|
961
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBRERfREFUQV9JRCIsIkRBVEFfVEFCTEVfSUQiLCJERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MiLCJERUxFVEVfREFUQV9JRCIsIkVYUE9SVF9EQVRBX1RZUEUiLCJFWFBPUlRfSFRNTF9NQVBfTU9ERVMiLCJFWFBPUlRfSU1HX1JBVElPUyIsIkVYUE9SVF9NQVBfRk9STUFUUyIsIlJFU09MVVRJT05TIiwiTUFQX0NPTlRST0xTIiwiVEhFTUUiLCJMT0NBTEVfQ09ERVMiLCJjcmVhdGVOb3RpZmljYXRpb24iLCJlcnJvck5vdGlmaWNhdGlvbiIsImNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiZ2V0Q29uZmlndXJlZFRoZW1lcyIsImdldERlZmF1bHRVaVRoZW1lIiwicGF5bG9hZF8iLCJhcHBseV8iLCJjb21wb3NlXyIsIkRFRkFVTFRfQUNUSVZFX1NJREVfUEFORUwiLCJERUZBVUxUX01PREFMIiwidWlTdGF0ZVVwZGF0ZXJzIiwiREVGQVVMVF9NQVBfQ09OVFJPTFNfRkVBVFVSRVMiLCJzaG93IiwiYWN0aXZlIiwiZGlzYWJsZUNsb3NlIiwiYWN0aXZlTWFwSW5kZXgiLCJERUZBVUxUX01BUF9MRUdFTkRfQ09OVFJPTCIsIl9vYmplY3RTcHJlYWQiLCJkaXNhYmxlRWRpdCIsIkRFRkFVTFRfTUFQX0NPTlRST0xTIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsImZpbmFsIiwiY3VycmVudCIsIl9kZWZpbmVQcm9wZXJ0eSIsIm1hcExlZ2VuZCIsIkRFRkFVTFRfRVhQT1JUX0lNQUdFIiwicmF0aW8iLCJTQ1JFRU4iLCJyZXNvbHV0aW9uIiwiT05FX1giLCJsZWdlbmQiLCJjaGFydHMiLCJtYXBIIiwibWFwVyIsImltYWdlU2l6ZSIsInpvb21PZmZzZXQiLCJzY2FsZSIsImltYWdlVyIsImltYWdlSCIsImNlbnRlciIsImltYWdlRGF0YVVyaSIsImV4cG9ydGluZyIsInByb2Nlc3NpbmciLCJlcnJvciIsImVzY2FwZVhodG1sRm9yV2VicGFjayIsImZpbGVOYW1lIiwiREVGQVVMVF9MT0FEX0ZJTEVTIiwiZmlsZUxvYWRpbmciLCJERUZBVUxUX0VYUE9SVF9EQVRBIiwic2VsZWN0ZWREYXRhc2V0IiwiZGF0YVR5cGUiLCJDU1YiLCJmaWx0ZXJlZCIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OUyIsIkRFRkFVTFRfRVhQT1JUX0hUTUwiLCJleHBvcnRNYXBib3hBY2Nlc3NUb2tlbiIsInVzZXJNYXBib3hUb2tlbiIsIm1vZGUiLCJSRUFEIiwiREVGQVVMVF9FWFBPUlRfSlNPTiIsImhhc0RhdGEiLCJERUZBVUxUX0VYUE9SVF9NQVAiLCJIVE1MIiwiSlNPTiIsIkRFRkFVTFRfRVhQT1JUX1ZJREVPIiwibWVkaWFUeXBlIiwiY2FtZXJhUHJlc2V0IiwiZHVyYXRpb25NcyIsInN3aXBlU3RhcnRQY3QiLCJzd2lwZUVuZFBjdCIsInN3aXBlRWFzaW5nIiwiSU5JVElBTF9VSV9TVEFURSIsInJlYWRPbmx5IiwiYWN0aXZlU2lkZVBhbmVsIiwiY3VycmVudE1vZGFsIiwiZGF0YXNldEtleVRvUmVtb3ZlIiwidmlzaWJsZURyb3Bkb3duIiwiZXhwb3J0SW1hZ2UiLCJleHBvcnREYXRhIiwiZXhwb3J0TWFwIiwiZXhwb3J0VmlkZW8iLCJtYXBDb250cm9scyIsIm5vdGlmaWNhdGlvbnMiLCJsb2FkRmlsZXMiLCJsb2NhbGUiLCJlbiIsInRoZW1lIiwiZGFyayIsImxheWVyUGFuZWxMaXN0VmlldyIsImZpbHRlclBhbmVsTGlzdFZpZXciLCJpc1NpZGVQYW5lbENsb3NlQnV0dG9uVmlzaWJsZSIsImluaXRVaVN0YXRlVXBkYXRlciIsInN0YXRlIiwiYWN0aW9uIiwiX2luaXRpYWxVaVN0YXRlJHRoZW1lIiwiaW5pdGlhbFVpU3RhdGUiLCJwYXlsb2FkIiwidGhlbWVzIiwicmVxdWVzdGVkIiwibGVuZ3RoIiwiaW5jbHVkZXMiLCJ0b2dnbGVTaWRlUGFuZWxVcGRhdGVyIiwiX3JlZiIsImlkIiwidG9nZ2xlTW9kYWxVcGRhdGVyIiwiX3JlZjIiLCJzaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyIiwiX3JlZjMiLCJoaWRlRXhwb3J0RHJvcGRvd25VcGRhdGVyIiwidG9nZ2xlU2lkZVBhbmVsQ2xvc2VCdXR0b25VcGRhdGVyIiwiX3JlZjQiLCJNVVRVQUxMWV9FWENMVVNJVkVfTUFQX0NPTlRST0xTIiwic3BsaXRNYXAiLCJ0b2dnbGUzZCIsIm1hcERyYXciLCJtYXBMb2NhbGUiLCJ0b2dnbGVNYXBDb250cm9sVXBkYXRlciIsIl9yZWY1IiwiX3VwZGF0ZWRTdGF0ZSRtYXBDb250IiwiX3VwZGF0ZWRTdGF0ZSRtYXBDb250MiIsIl9yZWY1JHBheWxvYWQiLCJwYW5lbElkIiwiX3JlZjUkcGF5bG9hZCRpbmRleCIsImluZGV4IiwidXBkYXRlZFN0YXRlIiwiaXNPcGVuaW5nIiwibmV4dE1hcENvbnRyb2xzIiwiZGlkRGVhY3RpdmF0ZSIsImZvckVhY2giLCJjb250cm9sSWQiLCJfbmV4dE1hcENvbnRyb2xzJGNvbnQiLCJzZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXIiLCJfcmVmNiIsIl9zdGF0ZSRtYXBDb250cm9scyIsIl9yZWY2JHBheWxvYWQiLCJCb29sZWFuIiwic2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlciIsIl9yZWY3IiwiX3N0YXRlJG1hcENvbnRyb2xzMiIsIl9yZWY3JHBheWxvYWQiLCJzZXR0aW5ncyIsIm1hcENvbnRyb2wiLCJvcGVuRGVsZXRlTW9kYWxVcGRhdGVyIiwiX3JlZjgiLCJzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyIiwiX3JlZjkiLCJuZXdTZXR0aW5nIiwidXBkYXRlZCIsInNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXIiLCJfcmVmMCIsImRhdGFVcmkiLCJzZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlciIsIl9yZWYxIiwiY2xlYW51cEV4cG9ydEltYWdlVXBkYXRlciIsInNldEV4cG9ydFZpZGVvU2V0dGluZ1VwZGF0ZXIiLCJfcmVmMTAiLCJzdGFydEV4cG9ydGluZ0ltYWdlVXBkYXRlciIsIl9yZWYxMSIsIl9yZWYxMSRwYXlsb2FkIiwib3B0aW9ucyIsImltYWdlU2V0dGluZ3MiLCJzZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyIiwiX3JlZjEyIiwiZGF0YXNldCIsInNldEV4cG9ydERhdGFUeXBlVXBkYXRlciIsIl9yZWYxMyIsInNldEV4cG9ydEZpbHRlcmVkVXBkYXRlciIsIl9yZWYxNCIsInNldEV4cG9ydERhdGFVcGRhdGVyIiwic2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlciIsIl9yZWYxNSIsInNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXIiLCJfcmVmMTYiLCJmb3JtYXQiLCJzZXRFeHBvcnRNYXBGaWxlTmFtZVVwZGF0ZXIiLCJfcmVmMTciLCJzZXRFeHBvcnRNYXBIVE1MTW9kZVVwZGF0ZXIiLCJfcmVmMTgiLCJhZGROb3RpZmljYXRpb25VcGRhdGVyIiwiX3JlZjE5Iiwib2xkTm90aWZpY2F0aW9ucyIsInBheWxvYWRJZCIsIm5vdGlmaWNhdGlvblRvVXBkYXRlIiwiZmluZCIsIm4iLCJtYXAiLCJjb3VudCIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsInJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXIiLCJfcmVmMjAiLCJmaWx0ZXIiLCJsb2FkRmlsZXNVcGRhdGVyIiwibG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIiLCJsb2FkRmlsZXNFcnJVcGRhdGVyIiwiX3JlZjIxIiwibWVzc2FnZSIsInRvcGljIiwiZ2xvYmFsIiwidG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwiZW50cmllcyIsImFjYyIsImVudHJ5Iiwic2hvd0RhdGFzZXRUYWJsZVVwZGF0ZXIiLCJzZXRMb2NhbGVVcGRhdGVyIiwiX3JlZjIyIiwic2V0VGhlbWVVcGRhdGVyIiwiX3JlZjIzIiwidG9nZ2xlUGFuZWxMaXN0Vmlld1VwZGF0ZXIiLCJfcmVmMjQiLCJfcmVmMjQkcGF5bG9hZCIsImxpc3RWaWV3Iiwic3RhdGVQcm9wIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJfcmVmMjUiLCJfdWlTdGF0ZSRtYXBDb250cm9scyIsIl91aVN0YXRlJG1hcENvbnRyb2xzMiIsIl91aVN0YXRlJG1hcENvbnRyb2xzMyIsImNvbmZpZyIsIl9yZWYyNiIsInVpU3RhdGUiLCJuZXdTdGF0ZSIsImN1cnJlbnRMZWdlbmQiLCJjaGFydCIsImN1cnJlbnRDaGFydCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91aS1zdGF0ZS11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1xuICBBRERfREFUQV9JRCxcbiAgREFUQV9UQUJMRV9JRCxcbiAgREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTLFxuICBERUxFVEVfREFUQV9JRCxcbiAgRVhQT1JUX0RBVEFfVFlQRSxcbiAgRVhQT1JUX0hUTUxfTUFQX01PREVTLFxuICBFWFBPUlRfSU1HX1JBVElPUyxcbiAgRVhQT1JUX01BUF9GT1JNQVRTLFxuICBSRVNPTFVUSU9OUyxcbiAgTUFQX0NPTlRST0xTLFxuICBUSEVNRVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0xPQ0FMRV9DT0RFU30gZnJvbSAnQGtlcGxlci5nbC9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IHtcbiAgY3JlYXRlTm90aWZpY2F0aW9uLFxuICBlcnJvck5vdGlmaWNhdGlvbixcbiAgY2FsY3VsYXRlRXhwb3J0SW1hZ2VTaXplLFxuICBnZXRBcHBsaWNhdGlvbkNvbmZpZyxcbiAgZ2V0Q29uZmlndXJlZFRoZW1lcyxcbiAgZ2V0RGVmYXVsdFVpVGhlbWVcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge3BheWxvYWRfLCBhcHBseV8sIGNvbXBvc2VffSBmcm9tICcuL2NvbXBvc2VyLWhlbHBlcnMnO1xuXG5pbXBvcnQge1xuICBBY3Rpb25UeXBlcyxcbiAgS2VwbGVyR2xJbml0UGF5bG9hZCxcbiAgTG9hZEZpbGVzRXJyVXBkYXRlckFjdGlvbixcbiAgUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQsXG4gIFVJU3RhdGVBY3Rpb25zXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge1xuICBFeHBvcnREYXRhLFxuICBFeHBvcnRIdG1sLFxuICBFeHBvcnRKc29uLFxuICBFeHBvcnRNYXAsXG4gIEV4cG9ydEltYWdlLFxuICBFeHBvcnRWaWRlbyxcbiAgTWFwQ29udHJvbEl0ZW0sXG4gIE1hcENvbnRyb2xNYXBMZWdlbmQsXG4gIE1hcENvbnRyb2xzLFxuICBVaVN0YXRlXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BQ1RJVkVfU0lERV9QQU5FTCA9ICdsYXllcic7XG5leHBvcnQgY29uc3QgREVGQVVMVF9NT0RBTCA9IEFERF9EQVRBX0lEO1xuXG4vKipcbiAqIFVwZGF0ZXJzIGZvciBgdWlTdGF0ZWAgcmVkdWNlci4gQ2FuIGJlIHVzZWQgaW4geW91ciByb290IHJlZHVjZXIgdG8gZGlyZWN0bHkgbW9kaWZ5IGtlcGxlci5nbCdzIHN0YXRlLlxuICogUmVhZCBtb3JlIGFib3V0IFtVc2luZyB1cGRhdGVyc10oLi4vYWR2YW5jZWQtdXNhZ2UvdXNpbmctdXBkYXRlcnMubWQpXG4gKlxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyLCB7dWlTdGF0ZVVwZGF0ZXJzfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbiAqIC8vIFJvb3QgUmVkdWNlclxuICogY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICogIGtlcGxlckdsOiBrZXBsZXJHbFJlZHVjZXIsXG4gKiAgYXBwOiBhcHBSZWR1Y2VyXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBjb21wb3NlZFJlZHVjZXIgPSAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICogIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAqICAgIC8vIGNsaWNrIGJ1dHRvbiB0byBjbG9zZSBzaWRlIHBhbmVsXG4gKiAgICBjYXNlICdDTElDS19CVVRUT04nOlxuICogICAgICByZXR1cm4ge1xuICogICAgICAgIC4uLnN0YXRlLFxuICogICAgICAgIGtlcGxlckdsOiB7XG4gKiAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbCxcbiAqICAgICAgICAgIGZvbzoge1xuICogICAgICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wuZm9vLFxuICogICAgICAgICAgICAgdWlTdGF0ZTogdWlTdGF0ZVVwZGF0ZXJzLnRvZ2dsZVNpZGVQYW5lbFVwZGF0ZXIoXG4gKiAgICAgICAgICAgICAgIHVpU3RhdGUsIHtwYXlsb2FkOiBudWxsfVxuICogICAgICAgICAgICAgKVxuICogICAgICAgICAgfVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgdWlTdGF0ZVVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5cbmNvbnN0IERFRkFVTFRfTUFQX0NPTlRST0xTX0ZFQVRVUkVTOiBNYXBDb250cm9sSXRlbSA9IHtcbiAgc2hvdzogdHJ1ZSxcbiAgYWN0aXZlOiBmYWxzZSxcbiAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcbiAgLy8gZGVmaW5lcyB3aGljaCBtYXAgaW5kZXggdXNlcnMgYXJlIGludGVyYWN0aW5nIHdpdGggKHRocm91Z2ggbWFwIGNvbnRyb2xzKVxuICBhY3RpdmVNYXBJbmRleDogMFxufTtcblxuY29uc3QgREVGQVVMVF9NQVBfTEVHRU5EX0NPTlRST0wgPSB7XG4gIC4uLkRFRkFVTFRfTUFQX0NPTlRST0xTX0ZFQVRVUkVTLFxuICBkaXNhYmxlRWRpdDogZmFsc2Vcbn07XG4vKipcbiAqIEEgbGlzdCBvZiBtYXAgY29udHJvbCB2aXNpYmlsaXR5IGFuZCB3aGV0aGVyIGlzIGl0IGFjdGl2ZS5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBjb25zdGFudFxuICogQHByb3BlcnR5IHZpc2libGVMYXllcnMgRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwcm9wZXJ0eSBtYXBMZWdlbmQgRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwcm9wZXJ0eSB0b2dnbGUzZCBEZWZhdWx0OiBge3Nob3c6IHRydWV9YFxuICogQHByb3BlcnR5IHNwbGl0TWFwIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZX1gXG4gKiBAcHJvcGVydHkgbWFwRHJhdyBEZWZhdWx0OiBge3Nob3c6IHRydWUsIGFjdGl2ZTogZmFsc2V9YFxuICogQHByb3BlcnR5IG1hcExvY2FsZSBEZWZhdWx0OiBge3Nob3c6IHRydWUsIGFjdGl2ZTogZmFsc2V9YFxuICogQHByb3BlcnR5IG1hcFRoZW1lIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHJvcGVydHkgdmlld3BvcnRKc29uIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUF9DT05UUk9MUzogTWFwQ29udHJvbHMgPSAoXG4gIE9iamVjdC5rZXlzKE1BUF9DT05UUk9MUykgYXMgQXJyYXk8a2V5b2YgdHlwZW9mIE1BUF9DT05UUk9MUz5cbikucmVkdWNlKFxuICAoZmluYWwsIGN1cnJlbnQpID0+ICh7XG4gICAgLi4uZmluYWwsXG4gICAgW2N1cnJlbnRdOlxuICAgICAgY3VycmVudCA9PT0gTUFQX0NPTlRST0xTLm1hcExlZ2VuZFxuICAgICAgICA/IERFRkFVTFRfTUFQX0xFR0VORF9DT05UUk9MXG4gICAgICAgIDogREVGQVVMVF9NQVBfQ09OVFJPTFNfRkVBVFVSRVNcbiAgfSksXG4gIHt9IGFzIE1hcENvbnRyb2xzXG4pO1xuXG4vKipcbiAqIERlZmF1bHQgaW1hZ2UgZXhwb3J0IGNvbmZpZ1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcmF0aW8gRGVmYXVsdDogYCdTQ1JFRU4nYCxcbiAqIEBwcm9wZXJ0eSByZXNvbHV0aW9uIERlZmF1bHQ6IGAnT05FX1gnYCxcbiAqIEBwcm9wZXJ0eSBsZWdlbmQgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBjaGFydHMgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBtYXBIIERlZmF1bHQ6IDAsXG4gKiBAcHJvcGVydHkgbWFwVyBEZWZhdWx0OiAwLFxuICogQHByb3BlcnR5IGltYWdlU2l6ZSBEZWZhdWx0OiB7em9vbU9mZnNldDogMCwgc2NhbGU6IDEsIGltYWdlVzogMCwgaW1hZ2VIOiAwfSxcbiAqIEBwcm9wZXJ0eSBpbWFnZURhdGFVcmkgRGVmYXVsdDogYCcnYCxcbiAqIEBwcm9wZXJ0eSBleHBvcnRpbmcgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGVycm9yIERlZmF1bHQ6IGBmYWxzZWBcbiAqIEBwcm9wZXJ0eSBlc2NhcGVYaHRtbEZvcldlYnBhY2sgRGVmYXVsdDogZnJvbSBhcHBsaWNhdGlvbiBjb25maWcgKGF1dG8tZGV0ZWN0ZWQ6IGB0cnVlYCBmb3Igd2VicGFjaylcbiAqIEBwcm9wZXJ0eSBmaWxlTmFtZSBEZWZhdWx0OiBgJydgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9JTUFHRTogRXhwb3J0SW1hZ2UgPSB7XG4gIC8vIHVzZXIgb3B0aW9uc1xuICByYXRpbzogRVhQT1JUX0lNR19SQVRJT1MuU0NSRUVOLFxuICByZXNvbHV0aW9uOiBSRVNPTFVUSU9OUy5PTkVfWCxcbiAgbGVnZW5kOiBmYWxzZSxcbiAgY2hhcnRzOiBmYWxzZSxcbiAgbWFwSDogMCxcbiAgbWFwVzogMCxcbiAgaW1hZ2VTaXplOiB7XG4gICAgem9vbU9mZnNldDogMCxcbiAgICBzY2FsZTogMSxcbiAgICBpbWFnZVc6IDAsXG4gICAgaW1hZ2VIOiAwXG4gIH0sXG4gIC8vIHdoZW4gdGhpcyBpcyBzZXQgdG8gdHJ1ZSwgdGhlIG1vY2sgbWFwIHZpZXdwb3J0IHdpbGwgbW92ZSB0byB0aGUgY2VudGVyIG9mIGRhdGFcbiAgY2VudGVyOiBmYWxzZSxcbiAgLy8gZXhwb3J0aW5nIHN0YXRlXG4gIGltYWdlRGF0YVVyaTogJycsXG4gIC8vIGV4cG9ydGluZzogdXNlZCB0byBhdHRhY2ggcGxvdC1jb250YWluZXIgdG8gZG9tXG4gIGV4cG9ydGluZzogZmFsc2UsXG4gIC8vIHByb2Nlc3Npbmc6IHVzZWQgYXMgbG9hZGluZyBpbmRpY2F0b3Igd2hlbiBleHBvcnQgaW1hZ2UgaXMgYmVpbmcgcHJvZHVjZWRcbiAgcHJvY2Vzc2luZzogZmFsc2UsXG4gIGVycm9yOiBmYWxzZSxcbiAgLy8gd2hldGhlciB0byBhcHBseSBmaXggZm9yIHVnbGlmeSBlcnJvciBpbiBkb20tdG8taW1hZ2UgKGZyb20gYXBwbGljYXRpb24gY29uZmlnLCBhdXRvLWRldGVjdHMgYnVpbGQgdG9vbClcbiAgZXNjYXBlWGh0bWxGb3JXZWJwYWNrOiBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmVzY2FwZVhodG1sRm9yV2VicGFjayxcbiAgZmlsZU5hbWU6ICcnXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MT0FEX0ZJTEVTID0ge1xuICBmaWxlTG9hZGluZzogZmFsc2Vcbn07XG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBleHBvcnREYXRhYCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgc2VsZWN0ZWREYXRhc2V0IERlZmF1bHQ6IGAnJ2AsXG4gKiBAcHJvcGVydHkgZGF0YVR5cGUgRGVmYXVsdDogYCdjc3YnYCxcbiAqIEBwcm9wZXJ0eSBmaWx0ZXJlZCBEZWZhdWx0OiBgdHJ1ZWAsXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9EQVRBOiBFeHBvcnREYXRhID0ge1xuICBzZWxlY3RlZERhdGFzZXQ6ICcnLFxuICBkYXRhVHlwZTogRVhQT1JUX0RBVEFfVFlQRS5DU1YsXG4gIGZpbHRlcmVkOiB0cnVlXG59O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05TID0gW107XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4gLSBEZWZhdWx0OiBudWxsLCB0aGlzIGlzIHVzZWQgd2hlbiB3ZSBwcm92aWRlIGEgZGVmYXVsdCBtYXBib3ggdG9rZW4gZm9yIHVzZXJzIHRvIHRha2UgYWR2YW50YWdlIG9mXG4gKiBAcHJvcGVydHkgdXNlck1hcGJveFRva2VuIC0gRGVmYXVsdDogJycsIG1hcGJveCB0b2tlbiBwcm92aWRlZCBieSB1c2VyIHRocm91Z2ggaW5wdXQgZmllbGRcbiAqIEBwcm9wZXJ0eSBtb2RlIC0gRGVmYXVsdDogJ1JFQUQnLCByZWFkIG9ubHkgb3IgZWRpdGFibGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX0hUTUw6IEV4cG9ydEh0bWwgPSB7XG4gIGV4cG9ydE1hcGJveEFjY2Vzc1Rva2VuOiBudWxsLFxuICB1c2VyTWFwYm94VG9rZW46ICcnLFxuICBtb2RlOiBFWFBPUlRfSFRNTF9NQVBfTU9ERVMuUkVBRFxufTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBoYXNEYXRhIC0gRGVmYXVsdDogJ3RydWUnLFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FWFBPUlRfSlNPTjogRXhwb3J0SnNvbiA9IHtcbiAgaGFzRGF0YTogdHJ1ZVxufTtcblxuLyoqXG4gKiBFeHBvcnQgTWFwIENvbmZpZ1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgSFRNTCAtIERlZmF1bHQ6ICdERUZBVUxUX0VYUE9SVF9IVE1MJyxcbiAqIEBwcm9wZXJ0eSBKU09OIC0gRGVmYXVsdDogJ0RFRkFVTFRfRVhQT1JUX0pTT04nLFxuICogQHByb3BlcnR5IGZvcm1hdCAtIERlZmF1bHQ6ICdIVE1MJyxcbiAqIEBwcm9wZXJ0eSBmaWxlTmFtZSBEZWZhdWx0OiBgJydgLFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FWFBPUlRfTUFQOiBFeHBvcnRNYXAgPSB7XG4gIFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF06IERFRkFVTFRfRVhQT1JUX0hUTUwsXG4gIFtFWFBPUlRfTUFQX0ZPUk1BVFMuSlNPTl06IERFRkFVTFRfRVhQT1JUX0pTT04sXG4gIGZvcm1hdDogRVhQT1JUX01BUF9GT1JNQVRTLkhUTUwsXG4gIGZpbGVOYW1lOiAnJ1xufTtcblxuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgYGV4cG9ydFZpZGVvYCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgbWVkaWFUeXBlIERlZmF1bHQ6IGAnd2VibSdgXG4gKiBAcHJvcGVydHkgY2FtZXJhUHJlc2V0IERlZmF1bHQ6IGAnTm9uZSdgXG4gKiBAcHJvcGVydHkgZmlsZU5hbWUgRGVmYXVsdDogYCdrZXBsZXIuZ2wnYFxuICogQHByb3BlcnR5IHJlc29sdXRpb24gRGVmYXVsdDogYCcxMjgweDcyMCdgXG4gKiBAcHJvcGVydHkgZHVyYXRpb25NcyBEZWZhdWx0OiBgMTAwMGBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX1ZJREVPOiBFeHBvcnRWaWRlbyA9IHtcbiAgbWVkaWFUeXBlOiAnd2VibScsIC8vIHVzZSB3ZWJtIGFzIGRlZmF1bHQgYXMgZ2lmIGV4cG9ydCB0ZW5kcyB0byBmcmVlemUgb24gbGFyZ2VyIHJlY29yZGluZ3NcbiAgY2FtZXJhUHJlc2V0OiAnTm9uZScsXG4gIGZpbGVOYW1lOiAna2VwbGVyLmdsJyxcbiAgcmVzb2x1dGlvbjogJzEyODB4NzIwJyxcbiAgZHVyYXRpb25NczogMTAwMCxcbiAgc3dpcGVTdGFydFBjdDogMCxcbiAgc3dpcGVFbmRQY3Q6IDEwMCxcbiAgc3dpcGVFYXNpbmc6ICdlYXNlLWluLW91dCdcbn07XG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGB1aVN0YXRlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcmVhZE9ubHkgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGFjdGl2ZVNpZGVQYW5lbCBEZWZhdWx0OiBgJ2xheWVyJ2BcbiAqIEBwcm9wZXJ0eSBjdXJyZW50TW9kYWwgRGVmYXVsdDogYCdhZGREYXRhJ2BcbiAqIEBwcm9wZXJ0eSBkYXRhc2V0S2V5VG9SZW1vdmUgRGVmYXVsdDogYG51bGxgXG4gKiBAcHJvcGVydHkgdmlzaWJsZURyb3Bkb3duIERlZmF1bHQ6IGBudWxsYFxuICogQHByb3BlcnR5IGV4cG9ydEltYWdlIERlZmF1bHQ6IFtgREVGQVVMVF9FWFBPUlRfSU1BR0VgXSgjZGVmYXVsdF9leHBvcnRfaW1hZ2UpXG4gKiBAcHJvcGVydHkgZXhwb3J0RGF0YSBEZWZhdWx0OiBbYERFRkFVTFRfRVhQT1JUX0RBVEFgXSgjZGVmYXVsdF9leHBvcnRfZGF0YSlcbiAqIEBwcm9wZXJ0eSBleHBvcnRNYXAgRGVmYXVsdDogW2BERUZBVUxUX0VYUE9SVF9NQVBgXSgjZGVmYXVsdF9leHBvcnRfbWFwKVxuICogQHByb3BlcnR5IG1hcENvbnRyb2xzIERlZmF1bHQ6IFtgREVGQVVMVF9NQVBfQ09OVFJPTFNgXSgjZGVmYXVsdF9tYXBfY29udHJvbHMpXG4gKiBAcHJvcGVydHkgbm90aWZpY2F0aW9ucyBEZWZhdWx0OiBgW11gXG4gKiBAcHJvcGVydHkgbm90aWZpY2F0aW9ucyBEZWZhdWx0OiBgW11gXG4gKiBAcHJvcGVydHkgbG9hZEZpbGVzXG4gKiBAcHJvcGVydHkgbG9jYWxlIERlZmF1bHQ6IGAnZW4nYFxuICogQHByb3BlcnR5IHRoZW1lIERlZmF1bHQ6IGAnZGFyaydgXG4gKiBAcHJvcGVydHkgaXNTaWRlUGFuZWxDbG9zZUJ1dHRvblZpc2libGUgRGVmYXVsdDogYHRydWVgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBJTklUSUFMX1VJX1NUQVRFOiBVaVN0YXRlID0ge1xuICByZWFkT25seTogZmFsc2UsXG4gIGFjdGl2ZVNpZGVQYW5lbDogREVGQVVMVF9BQ1RJVkVfU0lERV9QQU5FTCxcbiAgY3VycmVudE1vZGFsOiBERUZBVUxUX01PREFMLFxuICBkYXRhc2V0S2V5VG9SZW1vdmU6IG51bGwsXG4gIHZpc2libGVEcm9wZG93bjogbnVsbCxcbiAgLy8gZXhwb3J0IGltYWdlIG1vZGFsIHVpXG4gIGV4cG9ydEltYWdlOiBERUZBVUxUX0VYUE9SVF9JTUFHRSxcbiAgLy8gZXhwb3J0IGRhdGEgbW9kYWwgdWlcbiAgZXhwb3J0RGF0YTogREVGQVVMVF9FWFBPUlRfREFUQSxcbiAgLy8gaHRtbCBleHBvcnRcbiAgZXhwb3J0TWFwOiBERUZBVUxUX0VYUE9SVF9NQVAsXG4gIC8vIGV4cG9ydCB2aWRlbyBtb2RhbCB1aVxuICBleHBvcnRWaWRlbzogREVGQVVMVF9FWFBPUlRfVklERU8sXG4gIC8vIG1hcCBjb250cm9sIHBhbmVsc1xuICBtYXBDb250cm9sczogREVGQVVMVF9NQVBfQ09OVFJPTFMsXG4gIC8vIHVpIG5vdGlmaWNhdGlvbnNcbiAgbm90aWZpY2F0aW9uczogREVGQVVMVF9OT1RJRklDQVRJT05TLFxuICAvLyBsb2FkIGZpbGVzXG4gIGxvYWRGaWxlczogREVGQVVMVF9MT0FEX0ZJTEVTLFxuICAvLyBMb2NhbGUgb2YgdGhlIFVJXG4gIGxvY2FsZTogTE9DQUxFX0NPREVTLmVuLFxuICAvLyBUaGVtZSBvZiB0aGUgVUkgKGBsaWdodGAgfCBgZGFya2AgfCBgc3BhY2VgKS4gRmlyc3Qgb2YgYHRoZW1lc2AgaXMgdGhlIGRlZmF1bHQgd2hlbiBzZXQuXG4gIHRoZW1lOiBUSEVNRS5kYXJrLFxuICBsYXllclBhbmVsTGlzdFZpZXc6ICdsaXN0JyxcbiAgZmlsdGVyUGFuZWxMaXN0VmlldzogJ2xpc3QnLFxuICBpc1NpZGVQYW5lbENsb3NlQnV0dG9uVmlzaWJsZTogdHJ1ZVxufTtcblxuLyogVXBkYXRlcnMgKi9cbi8qKlxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICovXG5leHBvcnQgY29uc3QgaW5pdFVpU3RhdGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAgYWN0aW9uOiB7XG4gICAgdHlwZT86ICh0eXBlb2YgQWN0aW9uVHlwZXMpWydJTklUJ107XG4gICAgcGF5bG9hZDogS2VwbGVyR2xJbml0UGF5bG9hZDtcbiAgfVxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IGluaXRpYWxVaVN0YXRlID0gKGFjdGlvbi5wYXlsb2FkIHx8IHt9KS5pbml0aWFsVWlTdGF0ZSB8fCB7fTtcbiAgY29uc3QgdGhlbWVzID0gZ2V0Q29uZmlndXJlZFRoZW1lcygpO1xuICBjb25zdCByZXF1ZXN0ZWQgPSBpbml0aWFsVWlTdGF0ZS50aGVtZSA/PyBzdGF0ZS50aGVtZTtcbiAgY29uc3QgdGhlbWUgPVxuICAgIHRoZW1lcy5sZW5ndGggPT09IDAgPyByZXF1ZXN0ZWQgOiB0aGVtZXMuaW5jbHVkZXMocmVxdWVzdGVkKSA/IHJlcXVlc3RlZCA6IGdldERlZmF1bHRVaVRoZW1lKCk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICAuLi5pbml0aWFsVWlTdGF0ZSxcbiAgICB0aGVtZVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBpZCBvZiBzaWRlIHBhbmVsIHRvIGJlIHNob3duLCBvbmUgb2YgYGxheWVyYCwgYGZpbHRlcmAsIGBpbnRlcmFjdGlvbmAsIGBtYXBgLiBjbG9zZSBzaWRlIHBhbmVsIGlmIGBudWxsYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTaWRlUGFuZWxVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGlkfTogVUlTdGF0ZUFjdGlvbnMuVG9nZ2xlU2lkZVBhbmVsVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIHJldHVybiBpZCA9PT0gc3RhdGUuYWN0aXZlU2lkZVBhbmVsXG4gICAgPyBzdGF0ZVxuICAgIDoge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYWN0aXZlU2lkZVBhbmVsOiBpZFxuICAgICAgfTtcbn07XG5cbi8qKlxuICogU2hvdyBhbmQgaGlkZSBtb2RhbCBkaWFsb2dcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbWFjdGlvbi5wYXlsb2FkIGlkIG9mIG1vZGFsIHRvIGJlIHNob3duLCBudWxsIHRvIGhpZGUgbW9kYWxzLiBPbmUgb2Y6XG4gKiAgLSBbYERBVEFfVEFCTEVfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNkYXRhX3RhYmxlX2lkKVxuICogIC0gW2BERUxFVEVfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2RlbGV0ZV9kYXRhX2lkKVxuICogIC0gW2BBRERfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2FkZF9kYXRhX2lkKVxuICogIC0gW2BFWFBPUlRfSU1BR0VfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNleHBvcnRfaW1hZ2VfaWQpXG4gKiAgLSBbYEVYUE9SVF9EQVRBX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZXhwb3J0X2RhdGFfaWQpXG4gKiAgLSBbYEFERF9NQVBfU1RZTEVfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNhZGRfbWFwX3N0eWxlX2lkKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVNb2RhbFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogaWRcbn0pO1xuXG4vKipcbiAqIEhpZGUgYW5kIHNob3cgc2lkZSBwYW5lbCBoZWFkZXIgZHJvcGRvd24sIGFjdGl2YXRlZCBieSBjbGlja2luZyB0aGUgc2hhcmUgbGluayBvbiB0b3Agb2YgdGhlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNob3dFeHBvcnREcm9wZG93blVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5TaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICB2aXNpYmxlRHJvcGRvd246IGlkXG59KTtcblxuLyoqXG4gKiBIaWRlIHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBoaWRlRXhwb3J0RHJvcGRvd25VcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgdmlzaWJsZURyb3Bkb3duOiBudWxsXG59KTtcblxuLyoqXG4gKiBUb2dnbGUgc2lkZSBwYW5lbCBjbG9zZSBidXR0b24gb24gdG9wIGxlZnQgb2YgdGhlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNpZGVQYW5lbENsb3NlQnV0dG9uVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7c2hvd319OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVTaWRlUGFuZWxDbG9zZUJ1dHRvblVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGlzU2lkZVBhbmVsQ2xvc2VCdXR0b25WaXNpYmxlOiBzaG93XG59KTtcblxuLy8gTWFwIGNvbnRyb2wgZHJvcGRvd25zL21lbnVzIHRoYXQgb3ZlcmxhcCBlYWNoIG90aGVyIHZpc3VhbGx5IGFuZCB0aGVyZWZvcmVcbi8vIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmU6IG9wZW5pbmcgb25lIGNsb3NlcyBhbGwgdGhlIG90aGVycy5cbi8vIChzcGxpdC92aWV3LW1vZGUgbWVudSwgdG9wLzNkL2dsb2JlIG1lbnUsIHBvbHlnb24gZHJhdyB0b29sLCBsYW5ndWFnZSBtZW51KVxuZXhwb3J0IGNvbnN0IE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFM6IHN0cmluZ1tdID0gW1xuICBNQVBfQ09OVFJPTFMuc3BsaXRNYXAsXG4gIE1BUF9DT05UUk9MUy50b2dnbGUzZCxcbiAgTUFQX0NPTlRST0xTLm1hcERyYXcsXG4gIE1BUF9DT05UUk9MUy5tYXBMb2NhbGVcbl07XG5cbi8qKlxuICogVG9nZ2xlIGFjdGl2ZSBtYXAgY29udHJvbCBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvbiBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBtYXAgY29udHJvbCBwYW5lbCBpZCwgb25lIG9mIHRoZSBrZXlzIG9mOiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVNYXBDb250cm9sVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgaW5kZXggPSAwfX06IFVJU3RhdGVBY3Rpb25zLlRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgbGV0IHVwZGF0ZWRTdGF0ZSA9IHN0YXRlO1xuXG4gIC8vIFRoZSBvdmVybGFwcGluZyBtYXAgY29udHJvbCBtZW51cyBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlOiB3aGVuIG9uZSBvZlxuICAvLyB0aGVtIGlzIGJlaW5nIG9wZW5lZCwgZGVhY3RpdmF0ZSBldmVyeSBvdGhlciBvbmUgdGhhdCBpcyBjdXJyZW50bHkgYWN0aXZlXG4gIC8vIHNvIHRoZWlyIGRyb3Bkb3ducyBuZXZlciBvdmVybGFwIG9uIHNjcmVlbi5cbiAgY29uc3QgaXNPcGVuaW5nID0gIXVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXT8uYWN0aXZlO1xuICBpZiAoaXNPcGVuaW5nICYmIE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFMuaW5jbHVkZXMocGFuZWxJZCkpIHtcbiAgICBjb25zdCBuZXh0TWFwQ29udHJvbHMgPSB7Li4udXBkYXRlZFN0YXRlLm1hcENvbnRyb2xzfTtcbiAgICBsZXQgZGlkRGVhY3RpdmF0ZSA9IGZhbHNlO1xuICAgIE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFMuZm9yRWFjaChjb250cm9sSWQgPT4ge1xuICAgICAgaWYgKGNvbnRyb2xJZCAhPT0gcGFuZWxJZCAmJiBuZXh0TWFwQ29udHJvbHNbY29udHJvbElkXT8uYWN0aXZlKSB7XG4gICAgICAgIG5leHRNYXBDb250cm9sc1tjb250cm9sSWRdID0gey4uLm5leHRNYXBDb250cm9sc1tjb250cm9sSWRdLCBhY3RpdmU6IGZhbHNlfTtcbiAgICAgICAgZGlkRGVhY3RpdmF0ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGRpZERlYWN0aXZhdGUpIHtcbiAgICAgIHVwZGF0ZWRTdGF0ZSA9IHsuLi51cGRhdGVkU3RhdGUsIG1hcENvbnRyb2xzOiBuZXh0TWFwQ29udHJvbHN9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4udXBkYXRlZFN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi51cGRhdGVkU3RhdGUubWFwQ29udHJvbHMsXG4gICAgICBbcGFuZWxJZF06IHtcbiAgICAgICAgLi4uKHVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXSBhcyBNYXBDb250cm9sSXRlbSksXG4gICAgICAgIGFjdGl2ZTogIXVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXT8uYWN0aXZlLFxuICAgICAgICBhY3RpdmVNYXBJbmRleDogaW5kZXhcbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBtYXAgY29udHJvbCB2aXNpYmlsaXR5XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG1hcCBjb250cm9sIHBhbmVsIGlkLCBvbmUgb2YgdGhlIGtleXMgb2Y6IFtgREVGQVVMVF9NQVBfQ09OVFJPTFNgXSgjZGVmYXVsdF9tYXBfY29udHJvbHMpXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgc2hvd319OiBVSVN0YXRlQWN0aW9ucy5zZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBpZiAoIXN0YXRlLm1hcENvbnRyb2xzPy5bcGFuZWxJZF0pIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi5zdGF0ZS5tYXBDb250cm9scyxcbiAgICAgIFtwYW5lbElkXToge1xuICAgICAgICAuLi5zdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXSxcbiAgICAgICAgc2hvdzogQm9vbGVhbihzaG93KVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogVG9nZ2xlIG1hcCBjb250cm9sIHNldHRpbmdzXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG1hcCBjb250cm9sIHBhbmVsIGlkLCBvbmUgb2YgdGhlIGtleXMgb2Y6IFtgREVGQVVMVF9NQVBfQ09OVFJPTFNgXSgjZGVmYXVsdF9tYXBfY29udHJvbHMpXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge3BhbmVsSWQsIHNldHRpbmdzfX06IFVJU3RhdGVBY3Rpb25zLnNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBtYXBDb250cm9sID0gc3RhdGUubWFwQ29udHJvbHM/LltwYW5lbElkXSBhcyBNYXBDb250cm9sTWFwTGVnZW5kIHwgdW5kZWZpbmVkO1xuICBpZiAoIW1hcENvbnRyb2wpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi5zdGF0ZS5tYXBDb250cm9scyxcbiAgICAgIFtwYW5lbElkXToge1xuICAgICAgICAuLi5tYXBDb250cm9sLFxuICAgICAgICBzZXR0aW5nczogey4uLm1hcENvbnRyb2wuc2V0dGluZ3MsIC4uLnNldHRpbmdzfVxuICAgICAgfSBhcyBNYXBDb250cm9sTWFwTGVnZW5kXG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIG1hcCBjb250cm9sIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZGF0YXNldCBpZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBvcGVuRGVsZXRlTW9kYWxVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFzZXRLZXlUb1JlbW92ZX06IFVJU3RhdGVBY3Rpb25zLk9wZW5EZWxldGVNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogREVMRVRFX0RBVEFfSUQsXG4gIGRhdGFzZXRLZXlUb1JlbW92ZVxufSk7XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZWAgb3B0aW9ucyBzdWNoIGFzIGBsZWdlbmRgIGFuZCBgY2hhcnRzYCB0byBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG5ld1NldHRpbmd9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3QgdXBkYXRlZCA9IHsuLi5zdGF0ZS5leHBvcnRJbWFnZSwgLi4ubmV3U2V0dGluZ307XG4gIGNvbnN0IGltYWdlU2l6ZSA9IGNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSh1cGRhdGVkKSB8fCBzdGF0ZS5leHBvcnRJbWFnZS5pbWFnZVNpemU7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBleHBvcnRJbWFnZToge1xuICAgICAgLi4udXBkYXRlZCxcbiAgICAgIGltYWdlU2l6ZVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZS5zZXRFeHBvcnRJbWFnZURhdGFVcmlgIHRvIGEgaW1hZ2UgZGF0YVVyaVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGV4cG9ydCBpbWFnZSBkYXRhIHVyaVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZURhdGFVcmlVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFVcml9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbWFnZURhdGFVcmlVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgaWYgKGRhdGFVcmkgPT09IHN0YXRlLmV4cG9ydEltYWdlLmltYWdlRGF0YVVyaSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGV4cG9ydEltYWdlOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgICAgaW1hZ2VEYXRhVXJpOiBkYXRhVXJpXG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBlcnJvcn06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRJbWFnZToge1xuICAgIC4uLnN0YXRlLmV4cG9ydEltYWdlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGVycm9yXG4gIH1cbn0pO1xuXG4vKipcbiAqIERlbGV0ZSBjYWNoZWQgZXhwb3J0IGltYWdlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBjbGVhbnVwRXhwb3J0SW1hZ2VVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0SW1hZ2U6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICBleHBvcnRpbmc6IGZhbHNlLFxuICAgIGltYWdlRGF0YVVyaTogJycsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGNlbnRlcjogZmFsc2VcbiAgfVxufSk7XG5cbi8qKlxuICogU2V0IGBleHBvcnRWaWRlb2Agc2V0dGluZ3M6IG1lZGlhVHlwZSwgY2FtZXJhUHJlc2V0LCBmaWxlTmFtZSwgcmVzb2x1dGlvbiwgZHVyYXRpb25Nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG5ldyB2aWRlbyBleHBvcnQgc2V0dGluZ3NcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0VmlkZW9TZXR0aW5nVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBuZXdTZXR0aW5nfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0VmlkZW9TZXR0aW5nVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0VmlkZW86IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRWaWRlbyxcbiAgICAuLi5uZXdTZXR0aW5nXG4gIH1cbn0pO1xuXG4vKipcbiAqIFN0YXJ0IGltYWdlIGV4cG9ydGluZyBmbG93XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyB7VWlTdGF0ZX1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHN0YXJ0RXhwb3J0aW5nSW1hZ2VVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG9wdGlvbnMgPSB7fX06IHtwYXlsb2FkOiBQYXJ0aWFsPEV4cG9ydEltYWdlPn1cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBpbWFnZVNldHRpbmdzID0ge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgZXhwb3J0aW5nOiB0cnVlXG4gIH07XG5cbiAgcmV0dXJuIGNvbXBvc2VfKFtcbiAgICBjbGVhbnVwRXhwb3J0SW1hZ2VVcGRhdGVyLFxuICAgIGFwcGx5XyhzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyLCBwYXlsb2FkXyhpbWFnZVNldHRpbmdzKSlcbiAgXSkoc3RhdGUpO1xufTtcblxuLyoqXG4gKiBTZXQgc2VsZWN0ZWQgZGF0YXNldCBmb3IgZXhwb3J0XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZGF0YXNldCBpZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFzZXR9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnREYXRhOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0RGF0YSxcbiAgICBzZWxlY3RlZERhdGFzZXQ6IGRhdGFzZXRcbiAgfVxufSk7XG5cbi8qKlxuICogU2V0IGRhdGEgZm9ybWF0IGZvciBleHBvcnRpbmcgZGF0YVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG9uZSBvZiBgJ3RleHQvY3N2J2BcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RGF0YVR5cGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFUeXBlfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0RGF0YVR5cGVVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnREYXRhOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0RGF0YSxcbiAgICBkYXRhVHlwZVxuICB9XG59KTtcblxuLyoqXG4gKiBXaGV0aGVyIHRvIGV4cG9ydCBmaWx0ZXJlZCBkYXRhLCBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydEZpbHRlcmVkVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBmaWx0ZXJlZH06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEZpbHRlcmVkVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0RGF0YToge1xuICAgIC4uLnN0YXRlLmV4cG9ydERhdGEsXG4gICAgZmlsdGVyZWRcbiAgfVxufSk7XG5cbi8qKlxuICogV2hldGhlciB0byBpbmNsdWRpbmcgZGF0YSBpbiBtYXAgY29uZmlnLCB0b2dnbGUgYmV0d2VlbiBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnREYXRhVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRNYXBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dLFxuICAgICAgaGFzRGF0YTogIXN0YXRlLmV4cG9ydE1hcFtFWFBPUlRfTUFQX0ZPUk1BVFMuSlNPTl0uaGFzRGF0YVxuICAgIH1cbiAgfVxufSk7XG5cbi8qKlxuICogd2hldGhlciB0byBleHBvcnQgYSBtYXBib3ggYWNjZXNzIHRvIEhUTUwgc2luZ2xlIHBhZ2VcbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogdXNlck1hcGJveFRva2VufTogVUlTdGF0ZUFjdGlvbnMuU2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF06IHtcbiAgICAgIC4uLnN0YXRlLmV4cG9ydE1hcFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF0sXG4gICAgICB1c2VyTWFwYm94VG9rZW5cbiAgICB9XG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldHMgdGhlIGV4cG9ydCBtYXAgZm9ybWF0XG4gKiBAcGFyYW0gc3RhdGUgLSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBmb3JtYXQgdG8gdXNlIHRvIGV4cG9ydCB0aGUgbWFwIGludG9cbiAqIEByZXR1cm4gbmV4dFN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRNYXBGb3JtYXRVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGZvcm1hdH06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgZm9ybWF0XG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldCB0aGUgZmlsZW5hbWUgdXNlZCB3aGVuIGV4cG9ydGluZyBhbiBIVE1MIG9yIEpTT04gbWFwXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZmlsZSBuYW1lIHdpdGhvdXQgZXh0ZW5zaW9uXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydE1hcEZpbGVOYW1lVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBmaWxlTmFtZX06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydE1hcEZpbGVOYW1lVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIGZpbGVOYW1lXG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldCB0aGUgZXhwb3J0IGh0bWwgbWFwIG1vZGVcbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIHRvIGJlIHNldCAoYXZhaWxhYmxlIG1vZGVzOiBFWFBPUlRfSFRNTF9NQVBfTU9ERVMpXG4gKiBAcmV0dXJuIG5leHRTdGF0ZVxuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0TWFwSFRNTE1vZGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG1vZGV9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRIVE1MTWFwTW9kZVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRNYXBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdLFxuICAgICAgbW9kZVxuICAgIH1cbiAgfVxufSk7XG5cbi8qKlxuICogQWRkcyBhIG5ldyBub3RpZmljYXRpb24uXG4gKiBVcGRhdGVzIGEgbm90aWZpY2F0aW9uIGluIGNhc2Ugb2YgbWF0Y2hpbmcgaWRzLlxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIFBhcmFtcyBvZiBhIG5vdGlmaWNhdGlvblxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBhZGROb3RpZmljYXRpb25VcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWR9OiBVSVN0YXRlQWN0aW9ucy5BZGROb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3Qgb2xkTm90aWZpY2F0aW9ucyA9IHN0YXRlLm5vdGlmaWNhdGlvbnMgfHwgW107XG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgY29uc3QgcGF5bG9hZElkID0gcGF5bG9hZD8uaWQ7XG4gIGNvbnN0IG5vdGlmaWNhdGlvblRvVXBkYXRlID0gcGF5bG9hZElkID8gb2xkTm90aWZpY2F0aW9ucy5maW5kKG4gPT4gbi5pZCA9PT0gcGF5bG9hZElkKSA6IG51bGw7XG5cbiAgbGV0IG5vdGlmaWNhdGlvbnM7XG4gIGlmIChub3RpZmljYXRpb25Ub1VwZGF0ZSkge1xuICAgIG5vdGlmaWNhdGlvbnMgPSBvbGROb3RpZmljYXRpb25zLm1hcChuID0+XG4gICAgICBuLmlkID09PSBwYXlsb2FkSWQgPyBjcmVhdGVOb3RpZmljYXRpb24oey4uLnBheWxvYWQsIGNvdW50OiBuLmNvdW50ICsgMX0pIDogblxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgbm90aWZpY2F0aW9ucyA9IFsuLi5vbGROb3RpZmljYXRpb25zLCBjcmVhdGVOb3RpZmljYXRpb24ocGF5bG9hZCldO1xuICB9XG5cbiAgcmV0dXJuIHsuLi5zdGF0ZSwgbm90aWZpY2F0aW9uc307XG59O1xuXG4vKipcbiAqIFJlbW92ZSBhIG5vdGlmaWNhdGlvblxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGlkIG9mIHRoZSBub3RpZmljYXRpb24gdG8gYmUgcmVtb3ZlZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGlkfTogVUlTdGF0ZUFjdGlvbnMuUmVtb3ZlTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbm90aWZpY2F0aW9uczogc3RhdGUubm90aWZpY2F0aW9ucy5maWx0ZXIobiA9PiBuLmlkICE9PSBpZClcbn0pO1xuXG4vKipcbiAqIEZpcmVkIHdoZW4gZmlsZSBsb2FkaW5nIGJlZ2luXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRGaWxlc1VwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBsb2FkRmlsZXM6IHtcbiAgICAuLi5zdGF0ZS5sb2FkRmlsZXMsXG4gICAgZmlsZUxvYWRpbmc6IHRydWVcbiAgfVxufSk7XG5cbi8qKlxuICogSGFuZGxlcyBsb2FkaW5nIGZpbGUgc3VjY2VzcyBhbmQgc2V0IGZpbGVMb2FkaW5nIHByb3BlcnR5IHRvIGZhbHNlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbG9hZEZpbGVzOiB7XG4gICAgLi4uc3RhdGUubG9hZEZpbGVzLFxuICAgIGZpbGVMb2FkaW5nOiBmYWxzZVxuICB9XG59KTtcblxuLyoqXG4gKiBIYW5kbGVzIGxvYWQgZmlsZSBlcnJvciBhbmQgc2V0IGZpbGVMb2FkaW5nIHByb3BlcnR5IHRvIGZhbHNlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24uZXJyb3JcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzRXJyVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSwge2Vycm9yfTogTG9hZEZpbGVzRXJyVXBkYXRlckFjdGlvbik6IFVpU3RhdGUgPT5cbiAgYWRkTm90aWZpY2F0aW9uVXBkYXRlcihcbiAgICB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGxvYWRGaWxlczoge1xuICAgICAgICAuLi5zdGF0ZS5sb2FkRmlsZXMsXG4gICAgICAgIGZpbGVMb2FkaW5nOiBmYWxzZVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgcGF5bG9hZDogZXJyb3JOb3RpZmljYXRpb24oe1xuICAgICAgICBtZXNzYWdlOiAoZXJyb3IgfHwge30pLm1lc3NhZ2UgfHwgJ0ZhaWxlZCB0byB1cGxvYWQgZmlsZXMnLFxuICAgICAgICB0b3BpYzogREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTLmdsb2JhbFxuICAgICAgfSlcbiAgICB9XG4gICk7XG5cbi8qKlxuICogSGFuZGxlcyB0b2dnbGUgbWFwIHNwbGl0IGFuZCByZXNldCBhbGwgbWFwIGNvbnRyb2wgaW5kZXggdG8gMFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIG1hcENvbnRyb2xzOiBPYmplY3QuZW50cmllcyhzdGF0ZS5tYXBDb250cm9scykucmVkdWNlKFxuICAgIChhY2MsIGVudHJ5KSA9PiAoe1xuICAgICAgLi4uYWNjLFxuICAgICAgW2VudHJ5WzBdXToge1xuICAgICAgICAuLi4oZW50cnlbMV0gYXMgTWFwQ29udHJvbEl0ZW0pLFxuICAgICAgICBhY3RpdmVNYXBJbmRleDogMFxuICAgICAgfVxuICAgIH0pLFxuICAgIHt9IGFzIE1hcENvbnRyb2xzXG4gIClcbn0pO1xuXG4vKipcbiAqIFRvZ2dsZSBtb2RhbCBkYXRhXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2hvd0RhdGFzZXRUYWJsZVVwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+XG4gIHRvZ2dsZU1vZGFsVXBkYXRlcihzdGF0ZSwge3BheWxvYWQ6IERBVEFfVEFCTEVfSUR9KTtcblxuLyoqXG4gKiBTZXQgdGhlIGxvY2FsZSBvZiB0aGUgVUlcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZFxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkLmxvY2FsZSBsb2NhbGVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0TG9jYWxlVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7bG9jYWxlfX06IFVJU3RhdGVBY3Rpb25zLlNldExvY2FsZVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGxvY2FsZVxufSk7XG5cbi8qKlxuICogU2V0IHRoZSB0aGVtZSBvZiB0aGUgVUlcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZFxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkLnRoZW1lIHRoZW1lXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldFRoZW1lVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7dGhlbWV9fTogVUlTdGF0ZUFjdGlvbnMuU2V0VGhlbWVVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICB0aGVtZVxufSk7XG5cbi8qKlxuICogVG9nZ2xlIGxheWVyIHBhbmVsIGxpc3Qgdmlld1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGxheWVyIHBhbmVsIGxpc3RWaWV3IHZhbHVlLiBDYW4gYmUgJ2xpc3QnIG9yICdzb3J0QnlEYXRhc2V0J1xuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVQYW5lbExpc3RWaWV3VXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgbGlzdFZpZXd9fTogVUlTdGF0ZUFjdGlvbnMuVG9nZ2xlUGFuZWxMaXN0Vmlld0FjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IHN0YXRlUHJvcCA9XG4gICAgcGFuZWxJZCA9PT0gJ2xheWVyJ1xuICAgICAgPyAnbGF5ZXJQYW5lbExpc3RWaWV3J1xuICAgICAgOiBwYW5lbElkID09PSAnZmlsdGVyJ1xuICAgICAgPyAnZmlsdGVyUGFuZWxMaXN0VmlldydcbiAgICAgIDogbnVsbDtcbiAgaWYgKCFzdGF0ZVByb3AgfHwgc3RhdGVbc3RhdGVQcm9wXSA9PT0gbGlzdFZpZXcpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBbc3RhdGVQcm9wXTogbGlzdFZpZXdcbiAgfTtcbn07XG5cbi8qKlxuICogTWVyZ2UgcmVjZWl2ZWQgdWkgc3RhdGUgY29uZmlnIHdoZW4gbG9hZGluZyBhIHNhdmVkIG1hcFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIHNhdmVkIG1hcCBjb25maWcgYHttYXBTdHlsZSwgdmlzU3RhdGUsIG1hcFN0YXRlLCB1aVN0YXRlfWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7XG4gICAgcGF5bG9hZDoge2NvbmZpZ31cbiAgfToge1xuICAgIHR5cGU/OiAodHlwZW9mIEFjdGlvblR5cGVzKVsnUkVDRUlWRV9NQVBfQ09ORklHJ107XG4gICAgcGF5bG9hZDogUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQ7XG4gIH1cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCB7dWlTdGF0ZX0gPSBjb25maWcgfHwge307XG4gIGlmICghdWlTdGF0ZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGxldCBuZXdTdGF0ZSA9IHN0YXRlO1xuXG4gIGlmICh1aVN0YXRlLm1hcENvbnRyb2xzPy5tYXBMZWdlbmQ/LmFjdGl2ZSkge1xuICAgIGNvbnN0IGN1cnJlbnRMZWdlbmQgPSBuZXdTdGF0ZS5tYXBDb250cm9scy5tYXBMZWdlbmQ7XG4gICAgbmV3U3RhdGUgPSB7XG4gICAgICAuLi5uZXdTdGF0ZSxcbiAgICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAgIC4uLm5ld1N0YXRlLm1hcENvbnRyb2xzLFxuICAgICAgICBtYXBMZWdlbmQ6IHtcbiAgICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICAgIC4uLmN1cnJlbnRMZWdlbmQsXG4gICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgIGFjdGl2ZU1hcEluZGV4OiAwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgaWYgKHVpU3RhdGUubWFwQ29udHJvbHM/LmNoYXJ0Py5hY3RpdmUpIHtcbiAgICBjb25zdCBjdXJyZW50Q2hhcnQgPSBuZXdTdGF0ZS5tYXBDb250cm9scy5jaGFydDtcbiAgICBuZXdTdGF0ZSA9IHtcbiAgICAgIC4uLm5ld1N0YXRlLFxuICAgICAgbWFwQ29udHJvbHM6IHtcbiAgICAgICAgLi4ubmV3U3RhdGUubWFwQ29udHJvbHMsXG4gICAgICAgIGNoYXJ0OiB7XG4gICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICAuLi5jdXJyZW50Q2hhcnQsXG4gICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgIGFjdGl2ZU1hcEluZGV4OiAwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgaWYgKHVpU3RhdGUubWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uc2V0dGluZ3MpIHtcbiAgICBuZXdTdGF0ZSA9IHNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXIobmV3U3RhdGUsIHtcbiAgICAgIHBheWxvYWQ6IHtwYW5lbElkOiAnbWFwTGVnZW5kJywgc2V0dGluZ3M6IHVpU3RhdGUubWFwQ29udHJvbHMubWFwTGVnZW5kLnNldHRpbmdzfVxuICAgIH0gYXMgVUlTdGF0ZUFjdGlvbnMuc2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlckFjdGlvbik7XG4gIH1cblxuICBpZiAodWlTdGF0ZS5sb2NhbGUpIHtcbiAgICBuZXdTdGF0ZSA9IHNldExvY2FsZVVwZGF0ZXIobmV3U3RhdGUsIHtcbiAgICAgIHBheWxvYWQ6IHtsb2NhbGU6IHVpU3RhdGUubG9jYWxlfVxuICAgIH0gYXMgVUlTdGF0ZUFjdGlvbnMuU2V0TG9jYWxlVXBkYXRlckFjdGlvbik7XG4gIH1cblxuICBpZiAodWlTdGF0ZS50aGVtZSkge1xuICAgIG5ld1N0YXRlID0gc2V0VGhlbWVVcGRhdGVyKG5ld1N0YXRlLCB7XG4gICAgICBwYXlsb2FkOiB7dGhlbWU6IHVpU3RhdGUudGhlbWV9XG4gICAgfSBhcyBVSVN0YXRlQWN0aW9ucy5TZXRUaGVtZVVwZGF0ZXJBY3Rpb24pO1xuICB9XG5cbiAgcmV0dXJuIG5ld1N0YXRlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRUEsU0FDRUEsV0FBVyxFQUNYQyxhQUFhLEVBQ2JDLDJCQUEyQixFQUMzQkMsY0FBYyxFQUNkQyxnQkFBZ0IsRUFDaEJDLHFCQUFxQixFQUNyQkMsaUJBQWlCLEVBQ2pCQyxrQkFBa0IsRUFDbEJDLFdBQVcsRUFDWEMsWUFBWSxFQUNaQyxLQUFLLFFBQ0Esc0JBQXNCO0FBQzdCLFNBQVFDLFlBQVksUUFBTyx5QkFBeUI7QUFDcEQsU0FDRUMsa0JBQWtCLEVBQ2xCQyxpQkFBaUIsRUFDakJDLHdCQUF3QixFQUN4QkMsb0JBQW9CLEVBQ3BCQyxt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VUFDWkUsY0FBYyxFQUFFO1FBQUM7TUFDbEI7SUFDRixFQUNGO0VBQ0g7RUFFQSxLQUFBMk0scUJBQUEsR0FBSUksT0FBTyxDQUFDM0ksV0FBVyxjQUFBdUkscUJBQUEsZ0JBQUFBLHFCQUFBLEdBQW5CQSxxQkFBQSxDQUFxQk8sS0FBSyxjQUFBUCxxQkFBQSxlQUExQkEscUJBQUEsQ0FBNEI3TSxNQUFNLEVBQUU7SUFDdEMsSUFBTXFOLFlBQVksR0FBR0gsUUFBUSxDQUFDNUksV0FBVyxDQUFDOEksS0FBSztJQUMvQ0YsUUFBUSxHQUFBOU0sYUFBQSxDQUFBQSxhQUFBLEtBQ0g4TSxRQUFRO01BQ1g1SSxXQUFXLEVBQUFsRSxhQUFBLENBQUFBLGFBQUEsS0FDTjhNLFFBQVEsQ0FBQzVJLFdBQVc7UUFDdkI4SSxLQUFLLEVBQUFoTixhQUFBLENBQUFBLGFBQUE7VUFDSEwsSUFBSSxFQUFFO1FBQUksR0FDUHNOLFlBQVk7VUFDZnJOLE1BQU0sRUFBRSxJQUFJO1VBQ1pFLGNBQWMsRUFBRTtRQUFDO01BQ2xCO0lBQ0YsRUFDRjtFQUNIO0VBRUEsS0FBQTRNLHFCQUFBLEdBQUlHLE9BQU8sQ0FBQzNJLFdBQVcsY0FBQXdJLHFCQUFBLGdCQUFBQSxxQkFBQSxHQUFuQkEscUJBQUEsQ0FBcUJqTSxTQUFTLGNBQUFpTSxxQkFBQSxlQUE5QkEscUJBQUEsQ0FBZ0M3RSxRQUFRLEVBQUU7SUFDNUNpRixRQUFRLEdBQUdyRiw0QkFBNEIsQ0FBQ3FGLFFBQVEsRUFBRTtNQUNoRDdILE9BQU8sRUFBRTtRQUFDeUIsT0FBTyxFQUFFLFdBQVc7UUFBRW1CLFFBQVEsRUFBRWdGLE9BQU8sQ0FBQzNJLFdBQVcsQ0FBQ3pELFNBQVMsQ0FBQ29IO01BQVE7SUFDbEYsQ0FBc0QsQ0FBQztFQUN6RDtFQUVBLElBQUlnRixPQUFPLENBQUN4SSxNQUFNLEVBQUU7SUFDbEJ5SSxRQUFRLEdBQUdqQixnQkFBZ0IsQ0FBQ2lCLFFBQVEsRUFBRTtNQUNwQzdILE9BQU8sRUFBRTtRQUFDWixNQUFNLEVBQUV3SSxPQUFPLENBQUN4STtNQUFNO0lBQ2xDLENBQTBDLENBQUM7RUFDN0M7RUFFQSxJQUFJd0ksT0FBTyxDQUFDdEksS0FBSyxFQUFFO0lBQ2pCdUksUUFBUSxHQUFHZixlQUFlLENBQUNlLFFBQVEsRUFBRTtNQUNuQzdILE9BQU8sRUFBRTtRQUFDVixLQUFLLEVBQUVzSSxPQUFPLENBQUN0STtNQUFLO0lBQ2hDLENBQXlDLENBQUM7RUFDNUM7RUFFQSxPQUFPdUksUUFBUTtBQUNqQixDQUFDIiwiaWdub3JlTGlzdCI6W119
|
|
1044
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBRERfREFUQV9JRCIsIkRBVEFfVEFCTEVfSUQiLCJERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MiLCJERUxFVEVfREFUQV9JRCIsIkVYUE9SVF9EQVRBX1RZUEUiLCJFWFBPUlRfSFRNTF9NQVBfTU9ERVMiLCJFWFBPUlRfSU1HX1JBVElPUyIsIkVYUE9SVF9NQVBfRk9STUFUUyIsIlJFU09MVVRJT05TIiwiTUFQX0NPTlRST0xTIiwiVEhFTUUiLCJMT0NBTEVfQ09ERVMiLCJjcmVhdGVOb3RpZmljYXRpb24iLCJlcnJvck5vdGlmaWNhdGlvbiIsImNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiZ2V0Q29uZmlndXJlZFRoZW1lcyIsImdldERlZmF1bHRVaVRoZW1lIiwicGF5bG9hZF8iLCJhcHBseV8iLCJjb21wb3NlXyIsIkRFRkFVTFRfQUNUSVZFX1NJREVfUEFORUwiLCJERUZBVUxUX01PREFMIiwidWlTdGF0ZVVwZGF0ZXJzIiwiREVGQVVMVF9NQVBfQ09OVFJPTFNfRkVBVFVSRVMiLCJzaG93IiwiYWN0aXZlIiwiZGlzYWJsZUNsb3NlIiwiYWN0aXZlTWFwSW5kZXgiLCJERUZBVUxUX01BUF9MRUdFTkRfQ09OVFJPTCIsIl9vYmplY3RTcHJlYWQiLCJkaXNhYmxlRWRpdCIsIkRFRkFVTFRfTUFQX0NPTlRST0xTIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsImZpbmFsIiwiY3VycmVudCIsIl9kZWZpbmVQcm9wZXJ0eSIsIm1hcExlZ2VuZCIsIm1hcEluZm8iLCJERUZBVUxUX0VYUE9SVF9JTUFHRSIsInJhdGlvIiwiU0NSRUVOIiwicmVzb2x1dGlvbiIsIk9ORV9YIiwibGVnZW5kIiwiY2hhcnRzIiwidHJhbnNwYXJlbnRCYWNrZ3JvdW5kIiwibWFwSCIsIm1hcFciLCJpbWFnZVNpemUiLCJ6b29tT2Zmc2V0Iiwic2NhbGUiLCJpbWFnZVciLCJpbWFnZUgiLCJjZW50ZXIiLCJpbWFnZURhdGFVcmkiLCJleHBvcnRpbmciLCJwcm9jZXNzaW5nIiwiZXJyb3IiLCJlc2NhcGVYaHRtbEZvcldlYnBhY2siLCJmaWxlTmFtZSIsIkRFRkFVTFRfTE9BRF9GSUxFUyIsImZpbGVMb2FkaW5nIiwiREVGQVVMVF9FWFBPUlRfREFUQSIsInNlbGVjdGVkRGF0YXNldCIsImRhdGFUeXBlIiwiQ1NWIiwiZmlsdGVyZWQiLCJERUZBVUxUX05PVElGSUNBVElPTlMiLCJERUZBVUxUX0VYUE9SVF9IVE1MIiwiZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4iLCJ1c2VyTWFwYm94VG9rZW4iLCJtb2RlIiwiUkVBRCIsIkRFRkFVTFRfRVhQT1JUX0pTT04iLCJoYXNEYXRhIiwiREVGQVVMVF9FWFBPUlRfTUFQIiwiSFRNTCIsIkpTT04iLCJERUZBVUxUX0VYUE9SVF9WSURFTyIsIm1lZGlhVHlwZSIsImNhbWVyYVByZXNldCIsImR1cmF0aW9uTXMiLCJzd2lwZVN0YXJ0UGN0Iiwic3dpcGVFbmRQY3QiLCJzd2lwZUVhc2luZyIsIklOSVRJQUxfVUlfU1RBVEUiLCJyZWFkT25seSIsImFjdGl2ZVNpZGVQYW5lbCIsImN1cnJlbnRNb2RhbCIsImRhdGFzZXRLZXlUb1JlbW92ZSIsImRhdGFzZXRUb1JlcGxhY2VJZCIsInZpc2libGVEcm9wZG93biIsImV4cG9ydEltYWdlIiwiZXhwb3J0RGF0YSIsImV4cG9ydE1hcCIsImV4cG9ydFZpZGVvIiwibWFwQ29udHJvbHMiLCJub3RpZmljYXRpb25zIiwibG9hZEZpbGVzIiwibG9jYWxlIiwiZW4iLCJ0aGVtZSIsImRhcmsiLCJsYXllclBhbmVsTGlzdFZpZXciLCJmaWx0ZXJQYW5lbExpc3RWaWV3IiwiaXNTaWRlUGFuZWxDbG9zZUJ1dHRvblZpc2libGUiLCJpbml0VWlTdGF0ZVVwZGF0ZXIiLCJzdGF0ZSIsImFjdGlvbiIsIl9pbml0aWFsVWlTdGF0ZSR0aGVtZSIsImluaXRpYWxVaVN0YXRlIiwicGF5bG9hZCIsInRoZW1lcyIsInJlcXVlc3RlZCIsImxlbmd0aCIsImluY2x1ZGVzIiwidG9nZ2xlU2lkZVBhbmVsVXBkYXRlciIsIl9yZWYiLCJpZCIsInRvZ2dsZU1vZGFsVXBkYXRlciIsIl9yZWYyIiwic2hvd0V4cG9ydERyb3Bkb3duVXBkYXRlciIsIl9yZWYzIiwiaGlkZUV4cG9ydERyb3Bkb3duVXBkYXRlciIsInRvZ2dsZVNpZGVQYW5lbENsb3NlQnV0dG9uVXBkYXRlciIsIl9yZWY0IiwiTVVUVUFMTFlfRVhDTFVTSVZFX01BUF9DT05UUk9MUyIsInNwbGl0TWFwIiwidG9nZ2xlM2QiLCJtYXBEcmF3IiwibWFwTG9jYWxlIiwidG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIiLCJfcmVmNSIsIl91cGRhdGVkU3RhdGUkbWFwQ29udCIsIl91cGRhdGVkU3RhdGUkbWFwQ29udDIiLCJfcmVmNSRwYXlsb2FkIiwicGFuZWxJZCIsIl9yZWY1JHBheWxvYWQkaW5kZXgiLCJpbmRleCIsInVwZGF0ZWRTdGF0ZSIsImlzT3BlbmluZyIsIm5leHRNYXBDb250cm9scyIsImRpZERlYWN0aXZhdGUiLCJmb3JFYWNoIiwiY29udHJvbElkIiwiX25leHRNYXBDb250cm9scyRjb250Iiwic2V0TWFwQ29udHJvbFZpc2liaWxpdHlVcGRhdGVyIiwiX3JlZjYiLCJfc3RhdGUkbWFwQ29udHJvbHMiLCJfcmVmNiRwYXlsb2FkIiwiQm9vbGVhbiIsInNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXIiLCJfcmVmNyIsIl9zdGF0ZSRtYXBDb250cm9sczIiLCJfcmVmNyRwYXlsb2FkIiwic2V0dGluZ3MiLCJtYXBDb250cm9sIiwib3BlbkRlbGV0ZU1vZGFsVXBkYXRlciIsIl9yZWY4Iiwib3BlblJlcGxhY2VEYXRhc2V0TW9kYWxVcGRhdGVyIiwiX3JlZjkiLCJzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyIiwiX3JlZjAiLCJuZXdTZXR0aW5nIiwidXBkYXRlZCIsInNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXIiLCJfcmVmMSIsImRhdGFVcmkiLCJzZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlciIsIl9yZWYxMCIsImNsZWFudXBFeHBvcnRJbWFnZVVwZGF0ZXIiLCJzZXRFeHBvcnRWaWRlb1NldHRpbmdVcGRhdGVyIiwiX3JlZjExIiwic3RhcnRFeHBvcnRpbmdJbWFnZVVwZGF0ZXIiLCJfcmVmMTIiLCJfcmVmMTIkcGF5bG9hZCIsIm9wdGlvbnMiLCJpbWFnZVNldHRpbmdzIiwic2V0RXhwb3J0U2VsZWN0ZWREYXRhc2V0VXBkYXRlciIsIl9yZWYxMyIsImRhdGFzZXQiLCJzZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXIiLCJfcmVmMTQiLCJzZXRFeHBvcnRGaWx0ZXJlZFVwZGF0ZXIiLCJfcmVmMTUiLCJzZXRFeHBvcnREYXRhVXBkYXRlciIsInNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXIiLCJfcmVmMTYiLCJzZXRFeHBvcnRNYXBGb3JtYXRVcGRhdGVyIiwiX3JlZjE3IiwiZm9ybWF0Iiwic2V0RXhwb3J0TWFwRmlsZU5hbWVVcGRhdGVyIiwiX3JlZjE4Iiwic2V0RXhwb3J0TWFwSFRNTE1vZGVVcGRhdGVyIiwiX3JlZjE5Iiwic2V0RXhwb3J0TWFwQnJhbmRpbmdVcGRhdGVyIiwiX3JlZjIwIiwic2V0RXhwb3J0SW5jbHVkZUxheWVyQXBpS2V5c1VwZGF0ZXIiLCJfcmVmMjEiLCJpbmNsdWRlTGF5ZXJBcGlLZXlzIiwiYWRkTm90aWZpY2F0aW9uVXBkYXRlciIsIl9yZWYyMiIsIm9sZE5vdGlmaWNhdGlvbnMiLCJwYXlsb2FkSWQiLCJub3RpZmljYXRpb25Ub1VwZGF0ZSIsImZpbmQiLCJuIiwibWFwIiwiY291bnQiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJyZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyIiwiX3JlZjIzIiwiZmlsdGVyIiwibG9hZEZpbGVzVXBkYXRlciIsImxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyIiwibG9hZEZpbGVzRXJyVXBkYXRlciIsIl9yZWYyNCIsIm1lc3NhZ2UiLCJ0b3BpYyIsImdsb2JhbCIsInRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsImVudHJpZXMiLCJhY2MiLCJlbnRyeSIsInNob3dEYXRhc2V0VGFibGVVcGRhdGVyIiwic2V0TG9jYWxlVXBkYXRlciIsIl9yZWYyNSIsInNldFRoZW1lVXBkYXRlciIsIl9yZWYyNiIsInRvZ2dsZVBhbmVsTGlzdFZpZXdVcGRhdGVyIiwiX3JlZjI3IiwiX3JlZjI3JHBheWxvYWQiLCJsaXN0VmlldyIsInN0YXRlUHJvcCIsInJlY2VpdmVNYXBDb25maWdVcGRhdGVyIiwiX3JlZjI4IiwiX3VpU3RhdGUkbWFwQ29udHJvbHMiLCJfdWlTdGF0ZSRtYXBDb250cm9sczIiLCJfdWlTdGF0ZSRtYXBDb250cm9sczMiLCJfdWlTdGF0ZSRtYXBDb250cm9sczQiLCJjb25maWciLCJfcmVmMjkiLCJ1aVN0YXRlIiwibmV3U3RhdGUiLCJjdXJyZW50TGVnZW5kIiwiY2hhcnQiLCJjdXJyZW50Q2hhcnQiLCJzYXZlZE1hcEluZm8iLCJzYXZlZE1hcEluZm9BY3RpdmUiLCJzYXZlZE1hcEluZm9TaG93IiwiY3VycmVudE1hcEluZm8iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdWktc3RhdGUtdXBkYXRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtcbiAgQUREX0RBVEFfSUQsXG4gIERBVEFfVEFCTEVfSUQsXG4gIERFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUyxcbiAgREVMRVRFX0RBVEFfSUQsXG4gIEVYUE9SVF9EQVRBX1RZUEUsXG4gIEVYUE9SVF9IVE1MX01BUF9NT0RFUyxcbiAgRVhQT1JUX0lNR19SQVRJT1MsXG4gIEVYUE9SVF9NQVBfRk9STUFUUyxcbiAgUkVTT0xVVElPTlMsXG4gIE1BUF9DT05UUk9MUyxcbiAgVEhFTUVcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtMT0NBTEVfQ09ERVN9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7XG4gIGNyZWF0ZU5vdGlmaWNhdGlvbixcbiAgZXJyb3JOb3RpZmljYXRpb24sXG4gIGNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSxcbiAgZ2V0QXBwbGljYXRpb25Db25maWcsXG4gIGdldENvbmZpZ3VyZWRUaGVtZXMsXG4gIGdldERlZmF1bHRVaVRoZW1lXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtwYXlsb2FkXywgYXBwbHlfLCBjb21wb3NlX30gZnJvbSAnLi9jb21wb3Nlci1oZWxwZXJzJztcblxuaW1wb3J0IHtcbiAgQWN0aW9uVHlwZXMsXG4gIEtlcGxlckdsSW5pdFBheWxvYWQsXG4gIExvYWRGaWxlc0VyclVwZGF0ZXJBY3Rpb24sXG4gIFJlY2VpdmVNYXBDb25maWdQYXlsb2FkLFxuICBVSVN0YXRlQWN0aW9uc1xufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtcbiAgRXhwb3J0RGF0YSxcbiAgRXhwb3J0SHRtbCxcbiAgRXhwb3J0SnNvbixcbiAgRXhwb3J0TWFwLFxuICBFeHBvcnRJbWFnZSxcbiAgRXhwb3J0VmlkZW8sXG4gIE1hcENvbnRyb2xJdGVtLFxuICBNYXBDb250cm9sTWFwTGVnZW5kLFxuICBNYXBDb250cm9scyxcbiAgVWlTdGF0ZVxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQUNUSVZFX1NJREVfUEFORUwgPSAnbGF5ZXInO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTU9EQUwgPSBBRERfREFUQV9JRDtcblxuLyoqXG4gKiBVcGRhdGVycyBmb3IgYHVpU3RhdGVgIHJlZHVjZXIuIENhbiBiZSB1c2VkIGluIHlvdXIgcm9vdCByZWR1Y2VyIHRvIGRpcmVjdGx5IG1vZGlmeSBrZXBsZXIuZ2wncyBzdGF0ZS5cbiAqIFJlYWQgbW9yZSBhYm91dCBbVXNpbmcgdXBkYXRlcnNdKC4uL2FkdmFuY2VkLXVzYWdlL3VzaW5nLXVwZGF0ZXJzLm1kKVxuICpcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKlxuICogaW1wb3J0IGtlcGxlckdsUmVkdWNlciwge3VpU3RhdGVVcGRhdGVyc30gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBjbGljayBidXR0b24gdG8gY2xvc2Ugc2lkZSBwYW5lbFxuICogICAgY2FzZSAnQ0xJQ0tfQlVUVE9OJzpcbiAqICAgICAgcmV0dXJuIHtcbiAqICAgICAgICAuLi5zdGF0ZSxcbiAqICAgICAgICBrZXBsZXJHbDoge1xuICogICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wsXG4gKiAgICAgICAgICBmb286IHtcbiAqICAgICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLmZvbyxcbiAqICAgICAgICAgICAgIHVpU3RhdGU6IHVpU3RhdGVVcGRhdGVycy50b2dnbGVTaWRlUGFuZWxVcGRhdGVyKFxuICogICAgICAgICAgICAgICB1aVN0YXRlLCB7cGF5bG9hZDogbnVsbH1cbiAqICAgICAgICAgICAgIClcbiAqICAgICAgICAgIH1cbiAqICAgICAgICB9XG4gKiAgICAgIH07XG4gKiAgfVxuICogIHJldHVybiByZWR1Y2VycyhzdGF0ZSwgYWN0aW9uKTtcbiAqIH07XG4gKlxuICogZXhwb3J0IGRlZmF1bHQgY29tcG9zZWRSZWR1Y2VyO1xuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IHVpU3RhdGVVcGRhdGVycyA9IG51bGw7XG4vKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuXG5jb25zdCBERUZBVUxUX01BUF9DT05UUk9MU19GRUFUVVJFUzogTWFwQ29udHJvbEl0ZW0gPSB7XG4gIHNob3c6IHRydWUsXG4gIGFjdGl2ZTogZmFsc2UsXG4gIGRpc2FibGVDbG9zZTogZmFsc2UsXG4gIC8vIGRlZmluZXMgd2hpY2ggbWFwIGluZGV4IHVzZXJzIGFyZSBpbnRlcmFjdGluZyB3aXRoICh0aHJvdWdoIG1hcCBjb250cm9scylcbiAgYWN0aXZlTWFwSW5kZXg6IDBcbn07XG5cbmNvbnN0IERFRkFVTFRfTUFQX0xFR0VORF9DT05UUk9MID0ge1xuICAuLi5ERUZBVUxUX01BUF9DT05UUk9MU19GRUFUVVJFUyxcbiAgZGlzYWJsZUVkaXQ6IGZhbHNlXG59O1xuLyoqXG4gKiBBIGxpc3Qgb2YgbWFwIGNvbnRyb2wgdmlzaWJpbGl0eSBhbmQgd2hldGhlciBpcyBpdCBhY3RpdmUuXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSB2aXNpYmxlTGF5ZXJzIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHJvcGVydHkgbWFwTGVnZW5kIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHJvcGVydHkgdG9nZ2xlM2QgRGVmYXVsdDogYHtzaG93OiB0cnVlfWBcbiAqIEBwcm9wZXJ0eSBzcGxpdE1hcCBEZWZhdWx0OiBge3Nob3c6IHRydWV9YFxuICogQHByb3BlcnR5IG1hcERyYXcgRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwcm9wZXJ0eSBtYXBMb2NhbGUgRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwcm9wZXJ0eSBtYXBUaGVtZSBEZWZhdWx0OiBge3Nob3c6IHRydWUsIGFjdGl2ZTogZmFsc2V9YFxuICogQHByb3BlcnR5IHZpZXdwb3J0SnNvbiBEZWZhdWx0OiBge3Nob3c6IHRydWUsIGFjdGl2ZTogZmFsc2V9YFxuICogQHByb3BlcnR5IG1hcEluZm8gRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IHRydWV9YC4gYHNob3dgIGhpZGVzIHRoZSBvbi1tYXAgbmFtZSBhbmQgZGVzY3JpcHRpb24uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUF9DT05UUk9MUzogTWFwQ29udHJvbHMgPSB7XG4gIC4uLihPYmplY3Qua2V5cyhNQVBfQ09OVFJPTFMpIGFzIEFycmF5PGtleW9mIHR5cGVvZiBNQVBfQ09OVFJPTFM+KS5yZWR1Y2UoXG4gICAgKGZpbmFsLCBjdXJyZW50KSA9PiAoe1xuICAgICAgLi4uZmluYWwsXG4gICAgICBbY3VycmVudF06XG4gICAgICAgIGN1cnJlbnQgPT09IE1BUF9DT05UUk9MUy5tYXBMZWdlbmRcbiAgICAgICAgICA/IERFRkFVTFRfTUFQX0xFR0VORF9DT05UUk9MXG4gICAgICAgICAgOiBERUZBVUxUX01BUF9DT05UUk9MU19GRUFUVVJFU1xuICAgIH0pLFxuICAgIHt9IGFzIE1hcENvbnRyb2xzXG4gICksXG4gIC8vIE9wZW4gYnkgZGVmYXVsdCBzbyBhIHNhdmVkIHRpdGxlIHNob3dzIG9uIGxvYWQuIEFuIGVtcHR5IG1hcCBzdGlsbCBoaWRlcyB0aGUgY2FyZC5cbiAgbWFwSW5mbzoge1xuICAgIC4uLkRFRkFVTFRfTUFQX0NPTlRST0xTX0ZFQVRVUkVTLFxuICAgIGFjdGl2ZTogdHJ1ZVxuICB9XG59O1xuXG4vKipcbiAqIERlZmF1bHQgaW1hZ2UgZXhwb3J0IGNvbmZpZ1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcmF0aW8gRGVmYXVsdDogYCdTQ1JFRU4nYCxcbiAqIEBwcm9wZXJ0eSByZXNvbHV0aW9uIERlZmF1bHQ6IGAnT05FX1gnYCxcbiAqIEBwcm9wZXJ0eSBsZWdlbmQgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBjaGFydHMgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSB0cmFuc3BhcmVudEJhY2tncm91bmQgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBtYXBIIERlZmF1bHQ6IDAsXG4gKiBAcHJvcGVydHkgbWFwVyBEZWZhdWx0OiAwLFxuICogQHByb3BlcnR5IGltYWdlU2l6ZSBEZWZhdWx0OiB7em9vbU9mZnNldDogMCwgc2NhbGU6IDEsIGltYWdlVzogMCwgaW1hZ2VIOiAwfSxcbiAqIEBwcm9wZXJ0eSBpbWFnZURhdGFVcmkgRGVmYXVsdDogYCcnYCxcbiAqIEBwcm9wZXJ0eSBleHBvcnRpbmcgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGVycm9yIERlZmF1bHQ6IGBmYWxzZWBcbiAqIEBwcm9wZXJ0eSBlc2NhcGVYaHRtbEZvcldlYnBhY2sgRGVmYXVsdDogZnJvbSBhcHBsaWNhdGlvbiBjb25maWcgKGF1dG8tZGV0ZWN0ZWQ6IGB0cnVlYCBmb3Igd2VicGFjaylcbiAqIEBwcm9wZXJ0eSBmaWxlTmFtZSBEZWZhdWx0OiBgJydgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9JTUFHRTogRXhwb3J0SW1hZ2UgPSB7XG4gIC8vIHVzZXIgb3B0aW9uc1xuICByYXRpbzogRVhQT1JUX0lNR19SQVRJT1MuU0NSRUVOLFxuICByZXNvbHV0aW9uOiBSRVNPTFVUSU9OUy5PTkVfWCxcbiAgbGVnZW5kOiBmYWxzZSxcbiAgY2hhcnRzOiBmYWxzZSxcbiAgdHJhbnNwYXJlbnRCYWNrZ3JvdW5kOiBmYWxzZSxcbiAgbWFwSDogMCxcbiAgbWFwVzogMCxcbiAgaW1hZ2VTaXplOiB7XG4gICAgem9vbU9mZnNldDogMCxcbiAgICBzY2FsZTogMSxcbiAgICBpbWFnZVc6IDAsXG4gICAgaW1hZ2VIOiAwXG4gIH0sXG4gIC8vIHdoZW4gdGhpcyBpcyBzZXQgdG8gdHJ1ZSwgdGhlIG1vY2sgbWFwIHZpZXdwb3J0IHdpbGwgbW92ZSB0byB0aGUgY2VudGVyIG9mIGRhdGFcbiAgY2VudGVyOiBmYWxzZSxcbiAgLy8gZXhwb3J0aW5nIHN0YXRlXG4gIGltYWdlRGF0YVVyaTogJycsXG4gIC8vIGV4cG9ydGluZzogdXNlZCB0byBhdHRhY2ggcGxvdC1jb250YWluZXIgdG8gZG9tXG4gIGV4cG9ydGluZzogZmFsc2UsXG4gIC8vIHByb2Nlc3Npbmc6IHVzZWQgYXMgbG9hZGluZyBpbmRpY2F0b3Igd2hlbiBleHBvcnQgaW1hZ2UgaXMgYmVpbmcgcHJvZHVjZWRcbiAgcHJvY2Vzc2luZzogZmFsc2UsXG4gIGVycm9yOiBmYWxzZSxcbiAgLy8gd2hldGhlciB0byBhcHBseSBmaXggZm9yIHVnbGlmeSBlcnJvciBpbiBkb20tdG8taW1hZ2UgKGZyb20gYXBwbGljYXRpb24gY29uZmlnLCBhdXRvLWRldGVjdHMgYnVpbGQgdG9vbClcbiAgZXNjYXBlWGh0bWxGb3JXZWJwYWNrOiBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmVzY2FwZVhodG1sRm9yV2VicGFjayxcbiAgZmlsZU5hbWU6ICcnXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MT0FEX0ZJTEVTID0ge1xuICBmaWxlTG9hZGluZzogZmFsc2Vcbn07XG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBleHBvcnREYXRhYCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgc2VsZWN0ZWREYXRhc2V0IERlZmF1bHQ6IGAnJ2AsXG4gKiBAcHJvcGVydHkgZGF0YVR5cGUgRGVmYXVsdDogYCdjc3YnYCxcbiAqIEBwcm9wZXJ0eSBmaWx0ZXJlZCBEZWZhdWx0OiBgdHJ1ZWAsXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9EQVRBOiBFeHBvcnREYXRhID0ge1xuICBzZWxlY3RlZERhdGFzZXQ6ICcnLFxuICBkYXRhVHlwZTogRVhQT1JUX0RBVEFfVFlQRS5DU1YsXG4gIGZpbHRlcmVkOiB0cnVlXG59O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05TID0gW107XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4gLSBEZWZhdWx0OiBudWxsLCB0aGlzIGlzIHVzZWQgd2hlbiB3ZSBwcm92aWRlIGEgZGVmYXVsdCBtYXBib3ggdG9rZW4gZm9yIHVzZXJzIHRvIHRha2UgYWR2YW50YWdlIG9mXG4gKiBAcHJvcGVydHkgdXNlck1hcGJveFRva2VuIC0gRGVmYXVsdDogJycsIG1hcGJveCB0b2tlbiBwcm92aWRlZCBieSB1c2VyIHRocm91Z2ggaW5wdXQgZmllbGRcbiAqIEBwcm9wZXJ0eSBtb2RlIC0gRGVmYXVsdDogJ1JFQUQnLCByZWFkIG9ubHkgb3IgZWRpdGFibGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX0hUTUw6IEV4cG9ydEh0bWwgPSB7XG4gIGV4cG9ydE1hcGJveEFjY2Vzc1Rva2VuOiBudWxsLFxuICB1c2VyTWFwYm94VG9rZW46ICcnLFxuICBtb2RlOiBFWFBPUlRfSFRNTF9NQVBfTU9ERVMuUkVBRFxufTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBoYXNEYXRhIC0gRGVmYXVsdDogJ3RydWUnLFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FWFBPUlRfSlNPTjogRXhwb3J0SnNvbiA9IHtcbiAgaGFzRGF0YTogdHJ1ZVxufTtcblxuLyoqXG4gKiBFeHBvcnQgTWFwIENvbmZpZ1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgSFRNTCAtIERlZmF1bHQ6ICdERUZBVUxUX0VYUE9SVF9IVE1MJyxcbiAqIEBwcm9wZXJ0eSBKU09OIC0gRGVmYXVsdDogJ0RFRkFVTFRfRVhQT1JUX0pTT04nLFxuICogQHByb3BlcnR5IGZvcm1hdCAtIERlZmF1bHQ6ICdIVE1MJyxcbiAqIEBwcm9wZXJ0eSBmaWxlTmFtZSBEZWZhdWx0OiBgJydgLFxuICogQHByb3BlcnR5IGluY2x1ZGVMYXllckFwaUtleXMgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX01BUDogRXhwb3J0TWFwID0ge1xuICBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdOiBERUZBVUxUX0VYUE9SVF9IVE1MLFxuICBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dOiBERUZBVUxUX0VYUE9SVF9KU09OLFxuICBmb3JtYXQ6IEVYUE9SVF9NQVBfRk9STUFUUy5IVE1MLFxuICBmaWxlTmFtZTogJycsXG4gIC8vIFByaXZhdGUgbGF5ZXIgdG9rZW5zIHN0YXkgb3V0IG9mIHRoZSBmaWxlIHVubGVzcyB0aGUgdXNlciBvcHRzIGluLlxuICBpbmNsdWRlTGF5ZXJBcGlLZXlzOiBmYWxzZVxufTtcblxuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgYGV4cG9ydFZpZGVvYCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgbWVkaWFUeXBlIERlZmF1bHQ6IGAnd2VibSdgXG4gKiBAcHJvcGVydHkgY2FtZXJhUHJlc2V0IERlZmF1bHQ6IGAnTm9uZSdgXG4gKiBAcHJvcGVydHkgZmlsZU5hbWUgRGVmYXVsdDogYCdrZXBsZXIuZ2wnYFxuICogQHByb3BlcnR5IHJlc29sdXRpb24gRGVmYXVsdDogYCcxMjgweDcyMCdgXG4gKiBAcHJvcGVydHkgZHVyYXRpb25NcyBEZWZhdWx0OiBgMTAwMGBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX1ZJREVPOiBFeHBvcnRWaWRlbyA9IHtcbiAgbWVkaWFUeXBlOiAnd2VibScsIC8vIHVzZSB3ZWJtIGFzIGRlZmF1bHQgYXMgZ2lmIGV4cG9ydCB0ZW5kcyB0byBmcmVlemUgb24gbGFyZ2VyIHJlY29yZGluZ3NcbiAgY2FtZXJhUHJlc2V0OiAnTm9uZScsXG4gIGZpbGVOYW1lOiAna2VwbGVyLmdsJyxcbiAgcmVzb2x1dGlvbjogJzEyODB4NzIwJyxcbiAgZHVyYXRpb25NczogMTAwMCxcbiAgc3dpcGVTdGFydFBjdDogMCxcbiAgc3dpcGVFbmRQY3Q6IDEwMCxcbiAgc3dpcGVFYXNpbmc6ICdlYXNlLWluLW91dCdcbn07XG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGB1aVN0YXRlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcmVhZE9ubHkgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGFjdGl2ZVNpZGVQYW5lbCBEZWZhdWx0OiBgJ2xheWVyJ2BcbiAqIEBwcm9wZXJ0eSBjdXJyZW50TW9kYWwgRGVmYXVsdDogYCdhZGREYXRhJ2BcbiAqIEBwcm9wZXJ0eSBkYXRhc2V0S2V5VG9SZW1vdmUgRGVmYXVsdDogYG51bGxgXG4gKiBAcHJvcGVydHkgZGF0YXNldFRvUmVwbGFjZUlkIERlZmF1bHQ6IGBudWxsYFxuICogQHByb3BlcnR5IHZpc2libGVEcm9wZG93biBEZWZhdWx0OiBgbnVsbGBcbiAqIEBwcm9wZXJ0eSBleHBvcnRJbWFnZSBEZWZhdWx0OiBbYERFRkFVTFRfRVhQT1JUX0lNQUdFYF0oI2RlZmF1bHRfZXhwb3J0X2ltYWdlKVxuICogQHByb3BlcnR5IGV4cG9ydERhdGEgRGVmYXVsdDogW2BERUZBVUxUX0VYUE9SVF9EQVRBYF0oI2RlZmF1bHRfZXhwb3J0X2RhdGEpXG4gKiBAcHJvcGVydHkgZXhwb3J0TWFwIERlZmF1bHQ6IFtgREVGQVVMVF9FWFBPUlRfTUFQYF0oI2RlZmF1bHRfZXhwb3J0X21hcClcbiAqIEBwcm9wZXJ0eSBtYXBDb250cm9scyBEZWZhdWx0OiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHByb3BlcnR5IG5vdGlmaWNhdGlvbnMgRGVmYXVsdDogYFtdYFxuICogQHByb3BlcnR5IG5vdGlmaWNhdGlvbnMgRGVmYXVsdDogYFtdYFxuICogQHByb3BlcnR5IGxvYWRGaWxlc1xuICogQHByb3BlcnR5IGxvY2FsZSBEZWZhdWx0OiBgJ2VuJ2BcbiAqIEBwcm9wZXJ0eSB0aGVtZSBEZWZhdWx0OiBgJ2RhcmsnYFxuICogQHByb3BlcnR5IGlzU2lkZVBhbmVsQ2xvc2VCdXR0b25WaXNpYmxlIERlZmF1bHQ6IGB0cnVlYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9VSV9TVEFURTogVWlTdGF0ZSA9IHtcbiAgcmVhZE9ubHk6IGZhbHNlLFxuICBhY3RpdmVTaWRlUGFuZWw6IERFRkFVTFRfQUNUSVZFX1NJREVfUEFORUwsXG4gIGN1cnJlbnRNb2RhbDogREVGQVVMVF9NT0RBTCxcbiAgZGF0YXNldEtleVRvUmVtb3ZlOiBudWxsLFxuICBkYXRhc2V0VG9SZXBsYWNlSWQ6IG51bGwsXG4gIHZpc2libGVEcm9wZG93bjogbnVsbCxcbiAgLy8gZXhwb3J0IGltYWdlIG1vZGFsIHVpXG4gIGV4cG9ydEltYWdlOiBERUZBVUxUX0VYUE9SVF9JTUFHRSxcbiAgLy8gZXhwb3J0IGRhdGEgbW9kYWwgdWlcbiAgZXhwb3J0RGF0YTogREVGQVVMVF9FWFBPUlRfREFUQSxcbiAgLy8gaHRtbCBleHBvcnRcbiAgZXhwb3J0TWFwOiBERUZBVUxUX0VYUE9SVF9NQVAsXG4gIC8vIGV4cG9ydCB2aWRlbyBtb2RhbCB1aVxuICBleHBvcnRWaWRlbzogREVGQVVMVF9FWFBPUlRfVklERU8sXG4gIC8vIG1hcCBjb250cm9sIHBhbmVsc1xuICBtYXBDb250cm9sczogREVGQVVMVF9NQVBfQ09OVFJPTFMsXG4gIC8vIHVpIG5vdGlmaWNhdGlvbnNcbiAgbm90aWZpY2F0aW9uczogREVGQVVMVF9OT1RJRklDQVRJT05TLFxuICAvLyBsb2FkIGZpbGVzXG4gIGxvYWRGaWxlczogREVGQVVMVF9MT0FEX0ZJTEVTLFxuICAvLyBMb2NhbGUgb2YgdGhlIFVJXG4gIGxvY2FsZTogTE9DQUxFX0NPREVTLmVuLFxuICAvLyBUaGVtZSBvZiB0aGUgVUkgKGBsaWdodGAgfCBgZGFya2AgfCBgc3BhY2VgKS4gRmlyc3Qgb2YgYHRoZW1lc2AgaXMgdGhlIGRlZmF1bHQgd2hlbiBzZXQuXG4gIHRoZW1lOiBUSEVNRS5kYXJrLFxuICBsYXllclBhbmVsTGlzdFZpZXc6ICdsaXN0JyxcbiAgZmlsdGVyUGFuZWxMaXN0VmlldzogJ2xpc3QnLFxuICBpc1NpZGVQYW5lbENsb3NlQnV0dG9uVmlzaWJsZTogdHJ1ZVxufTtcblxuLyogVXBkYXRlcnMgKi9cbi8qKlxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICovXG5leHBvcnQgY29uc3QgaW5pdFVpU3RhdGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAgYWN0aW9uOiB7XG4gICAgdHlwZT86ICh0eXBlb2YgQWN0aW9uVHlwZXMpWydJTklUJ107XG4gICAgcGF5bG9hZDogS2VwbGVyR2xJbml0UGF5bG9hZDtcbiAgfVxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IGluaXRpYWxVaVN0YXRlID0gKGFjdGlvbi5wYXlsb2FkIHx8IHt9KS5pbml0aWFsVWlTdGF0ZSB8fCB7fTtcbiAgY29uc3QgdGhlbWVzID0gZ2V0Q29uZmlndXJlZFRoZW1lcygpO1xuICBjb25zdCByZXF1ZXN0ZWQgPSBpbml0aWFsVWlTdGF0ZS50aGVtZSA/PyBzdGF0ZS50aGVtZTtcbiAgY29uc3QgdGhlbWUgPVxuICAgIHRoZW1lcy5sZW5ndGggPT09IDAgPyByZXF1ZXN0ZWQgOiB0aGVtZXMuaW5jbHVkZXMocmVxdWVzdGVkKSA/IHJlcXVlc3RlZCA6IGdldERlZmF1bHRVaVRoZW1lKCk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICAuLi5pbml0aWFsVWlTdGF0ZSxcbiAgICB0aGVtZVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBpZCBvZiBzaWRlIHBhbmVsIHRvIGJlIHNob3duLCBvbmUgb2YgYGxheWVyYCwgYGZpbHRlcmAsIGBpbnRlcmFjdGlvbmAsIGBtYXBgLiBjbG9zZSBzaWRlIHBhbmVsIGlmIGBudWxsYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTaWRlUGFuZWxVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGlkfTogVUlTdGF0ZUFjdGlvbnMuVG9nZ2xlU2lkZVBhbmVsVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIHJldHVybiBpZCA9PT0gc3RhdGUuYWN0aXZlU2lkZVBhbmVsXG4gICAgPyBzdGF0ZVxuICAgIDoge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYWN0aXZlU2lkZVBhbmVsOiBpZFxuICAgICAgfTtcbn07XG5cbi8qKlxuICogU2hvdyBhbmQgaGlkZSBtb2RhbCBkaWFsb2dcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbWFjdGlvbi5wYXlsb2FkIGlkIG9mIG1vZGFsIHRvIGJlIHNob3duLCBudWxsIHRvIGhpZGUgbW9kYWxzLiBPbmUgb2Y6XG4gKiAgLSBbYERBVEFfVEFCTEVfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNkYXRhX3RhYmxlX2lkKVxuICogIC0gW2BERUxFVEVfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2RlbGV0ZV9kYXRhX2lkKVxuICogIC0gW2BBRERfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2FkZF9kYXRhX2lkKVxuICogIC0gW2BFWFBPUlRfSU1BR0VfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNleHBvcnRfaW1hZ2VfaWQpXG4gKiAgLSBbYEVYUE9SVF9EQVRBX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZXhwb3J0X2RhdGFfaWQpXG4gKiAgLSBbYEFERF9NQVBfU1RZTEVfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNhZGRfbWFwX3N0eWxlX2lkKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVNb2RhbFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogaWQsXG4gIC8vIEFkZCBEYXRhIGFuZCBldmVyeSBvdGhlciBtb2RhbCBvcGVuIGxlYXZlIHJlcGxhY2UgbW9kZS5cbiAgLy8gUmVwbGFjZSBtb2RlIGlzIGVudGVyZWQgb25seSB0aHJvdWdoIG9wZW5SZXBsYWNlRGF0YXNldE1vZGFsLlxuICBkYXRhc2V0VG9SZXBsYWNlSWQ6IG51bGxcbn0pO1xuXG4vKipcbiAqIEhpZGUgYW5kIHNob3cgc2lkZSBwYW5lbCBoZWFkZXIgZHJvcGRvd24sIGFjdGl2YXRlZCBieSBjbGlja2luZyB0aGUgc2hhcmUgbGluayBvbiB0b3Agb2YgdGhlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNob3dFeHBvcnREcm9wZG93blVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5TaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICB2aXNpYmxlRHJvcGRvd246IGlkXG59KTtcblxuLyoqXG4gKiBIaWRlIHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBoaWRlRXhwb3J0RHJvcGRvd25VcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgdmlzaWJsZURyb3Bkb3duOiBudWxsXG59KTtcblxuLyoqXG4gKiBUb2dnbGUgc2lkZSBwYW5lbCBjbG9zZSBidXR0b24gb24gdG9wIGxlZnQgb2YgdGhlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNpZGVQYW5lbENsb3NlQnV0dG9uVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7c2hvd319OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVTaWRlUGFuZWxDbG9zZUJ1dHRvblVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGlzU2lkZVBhbmVsQ2xvc2VCdXR0b25WaXNpYmxlOiBzaG93XG59KTtcblxuLy8gTWFwIGNvbnRyb2wgZHJvcGRvd25zL21lbnVzIHRoYXQgb3ZlcmxhcCBlYWNoIG90aGVyIHZpc3VhbGx5IGFuZCB0aGVyZWZvcmVcbi8vIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmU6IG9wZW5pbmcgb25lIGNsb3NlcyBhbGwgdGhlIG90aGVycy5cbi8vIChzcGxpdC92aWV3LW1vZGUgbWVudSwgdG9wLzNkL2dsb2JlIG1lbnUsIHBvbHlnb24gZHJhdyB0b29sLCBsYW5ndWFnZSBtZW51KVxuZXhwb3J0IGNvbnN0IE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFM6IHN0cmluZ1tdID0gW1xuICBNQVBfQ09OVFJPTFMuc3BsaXRNYXAsXG4gIE1BUF9DT05UUk9MUy50b2dnbGUzZCxcbiAgTUFQX0NPTlRST0xTLm1hcERyYXcsXG4gIE1BUF9DT05UUk9MUy5tYXBMb2NhbGVcbl07XG5cbi8qKlxuICogVG9nZ2xlIGFjdGl2ZSBtYXAgY29udHJvbCBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvbiBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBtYXAgY29udHJvbCBwYW5lbCBpZCwgb25lIG9mIHRoZSBrZXlzIG9mOiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVNYXBDb250cm9sVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgaW5kZXggPSAwfX06IFVJU3RhdGVBY3Rpb25zLlRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgbGV0IHVwZGF0ZWRTdGF0ZSA9IHN0YXRlO1xuXG4gIC8vIFRoZSBvdmVybGFwcGluZyBtYXAgY29udHJvbCBtZW51cyBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlOiB3aGVuIG9uZSBvZlxuICAvLyB0aGVtIGlzIGJlaW5nIG9wZW5lZCwgZGVhY3RpdmF0ZSBldmVyeSBvdGhlciBvbmUgdGhhdCBpcyBjdXJyZW50bHkgYWN0aXZlXG4gIC8vIHNvIHRoZWlyIGRyb3Bkb3ducyBuZXZlciBvdmVybGFwIG9uIHNjcmVlbi5cbiAgY29uc3QgaXNPcGVuaW5nID0gIXVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXT8uYWN0aXZlO1xuICBpZiAoaXNPcGVuaW5nICYmIE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFMuaW5jbHVkZXMocGFuZWxJZCkpIHtcbiAgICBjb25zdCBuZXh0TWFwQ29udHJvbHMgPSB7Li4udXBkYXRlZFN0YXRlLm1hcENvbnRyb2xzfTtcbiAgICBsZXQgZGlkRGVhY3RpdmF0ZSA9IGZhbHNlO1xuICAgIE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFMuZm9yRWFjaChjb250cm9sSWQgPT4ge1xuICAgICAgaWYgKGNvbnRyb2xJZCAhPT0gcGFuZWxJZCAmJiBuZXh0TWFwQ29udHJvbHNbY29udHJvbElkXT8uYWN0aXZlKSB7XG4gICAgICAgIG5leHRNYXBDb250cm9sc1tjb250cm9sSWRdID0gey4uLm5leHRNYXBDb250cm9sc1tjb250cm9sSWRdLCBhY3RpdmU6IGZhbHNlfTtcbiAgICAgICAgZGlkRGVhY3RpdmF0ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGRpZERlYWN0aXZhdGUpIHtcbiAgICAgIHVwZGF0ZWRTdGF0ZSA9IHsuLi51cGRhdGVkU3RhdGUsIG1hcENvbnRyb2xzOiBuZXh0TWFwQ29udHJvbHN9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4udXBkYXRlZFN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi51cGRhdGVkU3RhdGUubWFwQ29udHJvbHMsXG4gICAgICBbcGFuZWxJZF06IHtcbiAgICAgICAgLi4uKHVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXSBhcyBNYXBDb250cm9sSXRlbSksXG4gICAgICAgIGFjdGl2ZTogIXVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXT8uYWN0aXZlLFxuICAgICAgICBhY3RpdmVNYXBJbmRleDogaW5kZXhcbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBtYXAgY29udHJvbCB2aXNpYmlsaXR5XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG1hcCBjb250cm9sIHBhbmVsIGlkLCBvbmUgb2YgdGhlIGtleXMgb2Y6IFtgREVGQVVMVF9NQVBfQ09OVFJPTFNgXSgjZGVmYXVsdF9tYXBfY29udHJvbHMpXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgc2hvd319OiBVSVN0YXRlQWN0aW9ucy5zZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBpZiAoIXN0YXRlLm1hcENvbnRyb2xzPy5bcGFuZWxJZF0pIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi5zdGF0ZS5tYXBDb250cm9scyxcbiAgICAgIFtwYW5lbElkXToge1xuICAgICAgICAuLi5zdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXSxcbiAgICAgICAgc2hvdzogQm9vbGVhbihzaG93KVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogVG9nZ2xlIG1hcCBjb250cm9sIHNldHRpbmdzXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG1hcCBjb250cm9sIHBhbmVsIGlkLCBvbmUgb2YgdGhlIGtleXMgb2Y6IFtgREVGQVVMVF9NQVBfQ09OVFJPTFNgXSgjZGVmYXVsdF9tYXBfY29udHJvbHMpXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge3BhbmVsSWQsIHNldHRpbmdzfX06IFVJU3RhdGVBY3Rpb25zLnNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBtYXBDb250cm9sID0gc3RhdGUubWFwQ29udHJvbHM/LltwYW5lbElkXSBhcyBNYXBDb250cm9sTWFwTGVnZW5kIHwgdW5kZWZpbmVkO1xuICBpZiAoIW1hcENvbnRyb2wpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi5zdGF0ZS5tYXBDb250cm9scyxcbiAgICAgIFtwYW5lbElkXToge1xuICAgICAgICAuLi5tYXBDb250cm9sLFxuICAgICAgICBzZXR0aW5nczogey4uLm1hcENvbnRyb2wuc2V0dGluZ3MsIC4uLnNldHRpbmdzfVxuICAgICAgfSBhcyBNYXBDb250cm9sTWFwTGVnZW5kXG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIG1hcCBjb250cm9sIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZGF0YXNldCBpZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBvcGVuRGVsZXRlTW9kYWxVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFzZXRLZXlUb1JlbW92ZX06IFVJU3RhdGVBY3Rpb25zLk9wZW5EZWxldGVNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogREVMRVRFX0RBVEFfSUQsXG4gIGRhdGFzZXRLZXlUb1JlbW92ZVxufSk7XG5cbi8qKlxuICogT3BlbiB0aGUgYWRkLWRhdGEgbW9kYWwgc28gdGhlIG5leHQgY29uZmlybWVkIHVwbG9hZCByZXBsYWNlcyBvbmUgZGF0YXNldC5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBkYXRhc2V0IGlkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IG9wZW5SZXBsYWNlRGF0YXNldE1vZGFsVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBkYXRhc2V0VG9SZXBsYWNlSWR9OiBVSVN0YXRlQWN0aW9ucy5PcGVuUmVwbGFjZURhdGFzZXRNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogQUREX0RBVEFfSUQsXG4gIGRhdGFzZXRUb1JlcGxhY2VJZFxufSk7XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZWAgb3B0aW9ucyBzdWNoIGFzIGBsZWdlbmRgIGFuZCBgY2hhcnRzYCB0byBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG5ld1NldHRpbmd9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3QgdXBkYXRlZCA9IHsuLi5zdGF0ZS5leHBvcnRJbWFnZSwgLi4ubmV3U2V0dGluZ307XG4gIGNvbnN0IGltYWdlU2l6ZSA9IGNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSh1cGRhdGVkKSB8fCBzdGF0ZS5leHBvcnRJbWFnZS5pbWFnZVNpemU7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBleHBvcnRJbWFnZToge1xuICAgICAgLi4udXBkYXRlZCxcbiAgICAgIGltYWdlU2l6ZVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZS5zZXRFeHBvcnRJbWFnZURhdGFVcmlgIHRvIGEgaW1hZ2UgZGF0YVVyaVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGV4cG9ydCBpbWFnZSBkYXRhIHVyaVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZURhdGFVcmlVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFVcml9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbWFnZURhdGFVcmlVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgaWYgKGRhdGFVcmkgPT09IHN0YXRlLmV4cG9ydEltYWdlLmltYWdlRGF0YVVyaSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGV4cG9ydEltYWdlOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgICAgaW1hZ2VEYXRhVXJpOiBkYXRhVXJpXG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBlcnJvcn06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRJbWFnZToge1xuICAgIC4uLnN0YXRlLmV4cG9ydEltYWdlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGVycm9yXG4gIH1cbn0pO1xuXG4vKipcbiAqIERlbGV0ZSBjYWNoZWQgZXhwb3J0IGltYWdlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBjbGVhbnVwRXhwb3J0SW1hZ2VVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0SW1hZ2U6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICBleHBvcnRpbmc6IGZhbHNlLFxuICAgIGltYWdlRGF0YVVyaTogJycsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGNlbnRlcjogZmFsc2VcbiAgfVxufSk7XG5cbi8qKlxuICogU2V0IGBleHBvcnRWaWRlb2Agc2V0dGluZ3M6IG1lZGlhVHlwZSwgY2FtZXJhUHJlc2V0LCBmaWxlTmFtZSwgcmVzb2x1dGlvbiwgZHVyYXRpb25Nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG5ldyB2aWRlbyBleHBvcnQgc2V0dGluZ3NcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0VmlkZW9TZXR0aW5nVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBuZXdTZXR0aW5nfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0VmlkZW9TZXR0aW5nVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0VmlkZW86IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRWaWRlbyxcbiAgICAuLi5uZXdTZXR0aW5nXG4gIH1cbn0pO1xuXG4vKipcbiAqIFN0YXJ0IGltYWdlIGV4cG9ydGluZyBmbG93XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyB7VWlTdGF0ZX1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHN0YXJ0RXhwb3J0aW5nSW1hZ2VVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG9wdGlvbnMgPSB7fX06IHtwYXlsb2FkOiBQYXJ0aWFsPEV4cG9ydEltYWdlPn1cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBpbWFnZVNldHRpbmdzID0ge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgZXhwb3J0aW5nOiB0cnVlXG4gIH07XG5cbiAgcmV0dXJuIGNvbXBvc2VfKFtcbiAgICBjbGVhbnVwRXhwb3J0SW1hZ2VVcGRhdGVyLFxuICAgIGFwcGx5XyhzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyLCBwYXlsb2FkXyhpbWFnZVNldHRpbmdzKSlcbiAgXSkoc3RhdGUpO1xufTtcblxuLyoqXG4gKiBTZXQgc2VsZWN0ZWQgZGF0YXNldCBmb3IgZXhwb3J0XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZGF0YXNldCBpZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFzZXR9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnREYXRhOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0RGF0YSxcbiAgICBzZWxlY3RlZERhdGFzZXQ6IGRhdGFzZXRcbiAgfVxufSk7XG5cbi8qKlxuICogU2V0IGRhdGEgZm9ybWF0IGZvciBleHBvcnRpbmcgZGF0YVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG9uZSBvZiBgJ3RleHQvY3N2J2BcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RGF0YVR5cGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFUeXBlfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0RGF0YVR5cGVVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnREYXRhOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0RGF0YSxcbiAgICBkYXRhVHlwZVxuICB9XG59KTtcblxuLyoqXG4gKiBXaGV0aGVyIHRvIGV4cG9ydCBmaWx0ZXJlZCBkYXRhLCBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydEZpbHRlcmVkVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBmaWx0ZXJlZH06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEZpbHRlcmVkVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0RGF0YToge1xuICAgIC4uLnN0YXRlLmV4cG9ydERhdGEsXG4gICAgZmlsdGVyZWRcbiAgfVxufSk7XG5cbi8qKlxuICogV2hldGhlciB0byBpbmNsdWRpbmcgZGF0YSBpbiBtYXAgY29uZmlnLCB0b2dnbGUgYmV0d2VlbiBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnREYXRhVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRNYXBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dLFxuICAgICAgaGFzRGF0YTogIXN0YXRlLmV4cG9ydE1hcFtFWFBPUlRfTUFQX0ZPUk1BVFMuSlNPTl0uaGFzRGF0YVxuICAgIH1cbiAgfVxufSk7XG5cbi8qKlxuICogd2hldGhlciB0byBleHBvcnQgYSBtYXBib3ggYWNjZXNzIHRvIEhUTUwgc2luZ2xlIHBhZ2VcbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogdXNlck1hcGJveFRva2VufTogVUlTdGF0ZUFjdGlvbnMuU2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF06IHtcbiAgICAgIC4uLnN0YXRlLmV4cG9ydE1hcFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF0sXG4gICAgICB1c2VyTWFwYm94VG9rZW5cbiAgICB9XG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldHMgdGhlIGV4cG9ydCBtYXAgZm9ybWF0XG4gKiBAcGFyYW0gc3RhdGUgLSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBmb3JtYXQgdG8gdXNlIHRvIGV4cG9ydCB0aGUgbWFwIGludG9cbiAqIEByZXR1cm4gbmV4dFN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRNYXBGb3JtYXRVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGZvcm1hdH06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgZm9ybWF0XG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldCB0aGUgZmlsZW5hbWUgdXNlZCB3aGVuIGV4cG9ydGluZyBhbiBIVE1MIG9yIEpTT04gbWFwXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZmlsZSBuYW1lIHdpdGhvdXQgZXh0ZW5zaW9uXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydE1hcEZpbGVOYW1lVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBmaWxlTmFtZX06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydE1hcEZpbGVOYW1lVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIGZpbGVOYW1lXG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldCB0aGUgZXhwb3J0IGh0bWwgbWFwIG1vZGVcbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIHRvIGJlIHNldCAoYXZhaWxhYmxlIG1vZGVzOiBFWFBPUlRfSFRNTF9NQVBfTU9ERVMpXG4gKiBAcmV0dXJuIG5leHRTdGF0ZVxuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0TWFwSFRNTE1vZGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG1vZGV9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRIVE1MTWFwTW9kZVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRNYXBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdLFxuICAgICAgbW9kZVxuICAgIH1cbiAgfVxufSk7XG5cbi8qKlxuICogU2V0IGFwcGxpY2F0aW9uIGJyYW5kaW5nIG92ZXJyaWRlcyBmb3IgZXhwb3J0ZWQgbWFwcy5cbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGFwcGxpY2F0aW9uIG5hbWUgYW5kL29yIHdlYnNpdGUgb3ZlcnJpZGVzXG4gKiBAcmV0dXJuIG5leHRTdGF0ZVxuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0TWFwQnJhbmRpbmdVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWR9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRNYXBCcmFuZGluZ1VwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICAuLi5wYXlsb2FkXG4gIH1cbn0pO1xuXG4vKipcbiAqIFdoZXRoZXIgdG8ga2VlcCBsYXllciBhY2Nlc3MgdG9rZW5zIGluIGV4cG9ydGVkIEhUTUwgYW5kIEpTT04gbWFwcy5cbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIC0gaW5jbHVkZSBsYXllciBBUEkga2V5c1xuICogQHJldHVybiBuZXh0U3RhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydEluY2x1ZGVMYXllckFwaUtleXNVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGluY2x1ZGVMYXllckFwaUtleXN9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbmNsdWRlTGF5ZXJBcGlLZXlzVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIGluY2x1ZGVMYXllckFwaUtleXNcbiAgfVxufSk7XG5cbi8qKlxuICogQWRkcyBhIG5ldyBub3RpZmljYXRpb24uXG4gKiBVcGRhdGVzIGEgbm90aWZpY2F0aW9uIGluIGNhc2Ugb2YgbWF0Y2hpbmcgaWRzLlxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIFBhcmFtcyBvZiBhIG5vdGlmaWNhdGlvblxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBhZGROb3RpZmljYXRpb25VcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWR9OiBVSVN0YXRlQWN0aW9ucy5BZGROb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3Qgb2xkTm90aWZpY2F0aW9ucyA9IHN0YXRlLm5vdGlmaWNhdGlvbnMgfHwgW107XG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgY29uc3QgcGF5bG9hZElkID0gcGF5bG9hZD8uaWQ7XG4gIGNvbnN0IG5vdGlmaWNhdGlvblRvVXBkYXRlID0gcGF5bG9hZElkID8gb2xkTm90aWZpY2F0aW9ucy5maW5kKG4gPT4gbi5pZCA9PT0gcGF5bG9hZElkKSA6IG51bGw7XG5cbiAgbGV0IG5vdGlmaWNhdGlvbnM7XG4gIGlmIChub3RpZmljYXRpb25Ub1VwZGF0ZSkge1xuICAgIG5vdGlmaWNhdGlvbnMgPSBvbGROb3RpZmljYXRpb25zLm1hcChuID0+XG4gICAgICBuLmlkID09PSBwYXlsb2FkSWQgPyBjcmVhdGVOb3RpZmljYXRpb24oey4uLnBheWxvYWQsIGNvdW50OiBuLmNvdW50ICsgMX0pIDogblxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgbm90aWZpY2F0aW9ucyA9IFsuLi5vbGROb3RpZmljYXRpb25zLCBjcmVhdGVOb3RpZmljYXRpb24ocGF5bG9hZCldO1xuICB9XG5cbiAgcmV0dXJuIHsuLi5zdGF0ZSwgbm90aWZpY2F0aW9uc307XG59O1xuXG4vKipcbiAqIFJlbW92ZSBhIG5vdGlmaWNhdGlvblxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGlkIG9mIHRoZSBub3RpZmljYXRpb24gdG8gYmUgcmVtb3ZlZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGlkfTogVUlTdGF0ZUFjdGlvbnMuUmVtb3ZlTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbm90aWZpY2F0aW9uczogc3RhdGUubm90aWZpY2F0aW9ucy5maWx0ZXIobiA9PiBuLmlkICE9PSBpZClcbn0pO1xuXG4vKipcbiAqIEZpcmVkIHdoZW4gZmlsZSBsb2FkaW5nIGJlZ2luXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRGaWxlc1VwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBsb2FkRmlsZXM6IHtcbiAgICAuLi5zdGF0ZS5sb2FkRmlsZXMsXG4gICAgZmlsZUxvYWRpbmc6IHRydWVcbiAgfVxufSk7XG5cbi8qKlxuICogSGFuZGxlcyBsb2FkaW5nIGZpbGUgc3VjY2VzcyBhbmQgc2V0IGZpbGVMb2FkaW5nIHByb3BlcnR5IHRvIGZhbHNlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbG9hZEZpbGVzOiB7XG4gICAgLi4uc3RhdGUubG9hZEZpbGVzLFxuICAgIGZpbGVMb2FkaW5nOiBmYWxzZVxuICB9XG59KTtcblxuLyoqXG4gKiBIYW5kbGVzIGxvYWQgZmlsZSBlcnJvciBhbmQgc2V0IGZpbGVMb2FkaW5nIHByb3BlcnR5IHRvIGZhbHNlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24uZXJyb3JcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzRXJyVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSwge2Vycm9yfTogTG9hZEZpbGVzRXJyVXBkYXRlckFjdGlvbik6IFVpU3RhdGUgPT5cbiAgYWRkTm90aWZpY2F0aW9uVXBkYXRlcihcbiAgICB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGxvYWRGaWxlczoge1xuICAgICAgICAuLi5zdGF0ZS5sb2FkRmlsZXMsXG4gICAgICAgIGZpbGVMb2FkaW5nOiBmYWxzZVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgcGF5bG9hZDogZXJyb3JOb3RpZmljYXRpb24oe1xuICAgICAgICBtZXNzYWdlOiAoZXJyb3IgfHwge30pLm1lc3NhZ2UgfHwgJ0ZhaWxlZCB0byB1cGxvYWQgZmlsZXMnLFxuICAgICAgICB0b3BpYzogREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTLmdsb2JhbFxuICAgICAgfSlcbiAgICB9XG4gICk7XG5cbi8qKlxuICogSGFuZGxlcyB0b2dnbGUgbWFwIHNwbGl0IGFuZCByZXNldCBhbGwgbWFwIGNvbnRyb2wgaW5kZXggdG8gMFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIG1hcENvbnRyb2xzOiBPYmplY3QuZW50cmllcyhzdGF0ZS5tYXBDb250cm9scykucmVkdWNlKFxuICAgIChhY2MsIGVudHJ5KSA9PiAoe1xuICAgICAgLi4uYWNjLFxuICAgICAgW2VudHJ5WzBdXToge1xuICAgICAgICAuLi4oZW50cnlbMV0gYXMgTWFwQ29udHJvbEl0ZW0pLFxuICAgICAgICBhY3RpdmVNYXBJbmRleDogMFxuICAgICAgfVxuICAgIH0pLFxuICAgIHt9IGFzIE1hcENvbnRyb2xzXG4gIClcbn0pO1xuXG4vKipcbiAqIFRvZ2dsZSBtb2RhbCBkYXRhXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2hvd0RhdGFzZXRUYWJsZVVwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+XG4gIHRvZ2dsZU1vZGFsVXBkYXRlcihzdGF0ZSwge3BheWxvYWQ6IERBVEFfVEFCTEVfSUR9KTtcblxuLyoqXG4gKiBTZXQgdGhlIGxvY2FsZSBvZiB0aGUgVUlcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZFxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkLmxvY2FsZSBsb2NhbGVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0TG9jYWxlVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7bG9jYWxlfX06IFVJU3RhdGVBY3Rpb25zLlNldExvY2FsZVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGxvY2FsZVxufSk7XG5cbi8qKlxuICogU2V0IHRoZSB0aGVtZSBvZiB0aGUgVUlcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZFxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkLnRoZW1lIHRoZW1lXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldFRoZW1lVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7dGhlbWV9fTogVUlTdGF0ZUFjdGlvbnMuU2V0VGhlbWVVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICB0aGVtZVxufSk7XG5cbi8qKlxuICogVG9nZ2xlIGxheWVyIHBhbmVsIGxpc3Qgdmlld1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGxheWVyIHBhbmVsIGxpc3RWaWV3IHZhbHVlLiBDYW4gYmUgJ2xpc3QnIG9yICdzb3J0QnlEYXRhc2V0J1xuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVQYW5lbExpc3RWaWV3VXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgbGlzdFZpZXd9fTogVUlTdGF0ZUFjdGlvbnMuVG9nZ2xlUGFuZWxMaXN0Vmlld0FjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IHN0YXRlUHJvcCA9XG4gICAgcGFuZWxJZCA9PT0gJ2xheWVyJ1xuICAgICAgPyAnbGF5ZXJQYW5lbExpc3RWaWV3J1xuICAgICAgOiBwYW5lbElkID09PSAnZmlsdGVyJ1xuICAgICAgPyAnZmlsdGVyUGFuZWxMaXN0VmlldydcbiAgICAgIDogbnVsbDtcbiAgaWYgKCFzdGF0ZVByb3AgfHwgc3RhdGVbc3RhdGVQcm9wXSA9PT0gbGlzdFZpZXcpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBbc3RhdGVQcm9wXTogbGlzdFZpZXdcbiAgfTtcbn07XG5cbi8qKlxuICogTWVyZ2UgcmVjZWl2ZWQgdWkgc3RhdGUgY29uZmlnIHdoZW4gbG9hZGluZyBhIHNhdmVkIG1hcFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIHNhdmVkIG1hcCBjb25maWcgYHttYXBTdHlsZSwgdmlzU3RhdGUsIG1hcFN0YXRlLCB1aVN0YXRlfWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7XG4gICAgcGF5bG9hZDoge2NvbmZpZ31cbiAgfToge1xuICAgIHR5cGU/OiAodHlwZW9mIEFjdGlvblR5cGVzKVsnUkVDRUlWRV9NQVBfQ09ORklHJ107XG4gICAgcGF5bG9hZDogUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQ7XG4gIH1cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCB7dWlTdGF0ZX0gPSBjb25maWcgfHwge307XG4gIGlmICghdWlTdGF0ZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGxldCBuZXdTdGF0ZSA9IHN0YXRlO1xuXG4gIGlmICh1aVN0YXRlLm1hcENvbnRyb2xzPy5tYXBMZWdlbmQ/LmFjdGl2ZSkge1xuICAgIGNvbnN0IGN1cnJlbnRMZWdlbmQgPSBuZXdTdGF0ZS5tYXBDb250cm9scy5tYXBMZWdlbmQ7XG4gICAgbmV3U3RhdGUgPSB7XG4gICAgICAuLi5uZXdTdGF0ZSxcbiAgICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAgIC4uLm5ld1N0YXRlLm1hcENvbnRyb2xzLFxuICAgICAgICBtYXBMZWdlbmQ6IHtcbiAgICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICAgIC4uLmN1cnJlbnRMZWdlbmQsXG4gICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgIGFjdGl2ZU1hcEluZGV4OiAwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgaWYgKHVpU3RhdGUubWFwQ29udHJvbHM/LmNoYXJ0Py5hY3RpdmUpIHtcbiAgICBjb25zdCBjdXJyZW50Q2hhcnQgPSBuZXdTdGF0ZS5tYXBDb250cm9scy5jaGFydDtcbiAgICBuZXdTdGF0ZSA9IHtcbiAgICAgIC4uLm5ld1N0YXRlLFxuICAgICAgbWFwQ29udHJvbHM6IHtcbiAgICAgICAgLi4ubmV3U3RhdGUubWFwQ29udHJvbHMsXG4gICAgICAgIGNoYXJ0OiB7XG4gICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICAuLi5jdXJyZW50Q2hhcnQsXG4gICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgIGFjdGl2ZU1hcEluZGV4OiAwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gSG9ub3IgYW4gZXhwbGljaXQgY29sbGFwc2VkIG9yIGhpZGRlbiBzdGF0ZS4gQSBtaXNzaW5nIGtleSBrZWVwcyB0aGUgZGVmYXVsdCAoc2hvd24sIG9wZW4pLlxuICBjb25zdCBzYXZlZE1hcEluZm8gPSB1aVN0YXRlLm1hcENvbnRyb2xzPy5tYXBJbmZvO1xuICBjb25zdCBzYXZlZE1hcEluZm9BY3RpdmUgPSBzYXZlZE1hcEluZm8/LmFjdGl2ZTtcbiAgY29uc3Qgc2F2ZWRNYXBJbmZvU2hvdyA9IHNhdmVkTWFwSW5mbz8uc2hvdztcbiAgaWYgKHR5cGVvZiBzYXZlZE1hcEluZm9BY3RpdmUgPT09ICdib29sZWFuJyB8fCB0eXBlb2Ygc2F2ZWRNYXBJbmZvU2hvdyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgY29uc3QgY3VycmVudE1hcEluZm8gPSBuZXdTdGF0ZS5tYXBDb250cm9scy5tYXBJbmZvO1xuICAgIG5ld1N0YXRlID0ge1xuICAgICAgLi4ubmV3U3RhdGUsXG4gICAgICBtYXBDb250cm9sczoge1xuICAgICAgICAuLi5uZXdTdGF0ZS5tYXBDb250cm9scyxcbiAgICAgICAgbWFwSW5mbzoge1xuICAgICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgIC4uLmN1cnJlbnRNYXBJbmZvLFxuICAgICAgICAgIC4uLih0eXBlb2Ygc2F2ZWRNYXBJbmZvU2hvdyA9PT0gJ2Jvb2xlYW4nID8ge3Nob3c6IHNhdmVkTWFwSW5mb1Nob3d9IDoge30pLFxuICAgICAgICAgIC4uLih0eXBlb2Ygc2F2ZWRNYXBJbmZvQWN0aXZlID09PSAnYm9vbGVhbicgPyB7YWN0aXZlOiBzYXZlZE1hcEluZm9BY3RpdmV9IDoge30pLFxuICAgICAgICAgIGFjdGl2ZU1hcEluZGV4OiAwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgaWYgKHVpU3RhdGUubWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uc2V0dGluZ3MpIHtcbiAgICBuZXdTdGF0ZSA9IHNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXIobmV3U3RhdGUsIHtcbiAgICAgIHBheWxvYWQ6IHtwYW5lbElkOiAnbWFwTGVnZW5kJywgc2V0dGluZ3M6IHVpU3RhdGUubWFwQ29udHJvbHMubWFwTGVnZW5kLnNldHRpbmdzfVxuICAgIH0gYXMgVUlTdGF0ZUFjdGlvbnMuc2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlckFjdGlvbik7XG4gIH1cblxuICBpZiAodWlTdGF0ZS5sb2NhbGUpIHtcbiAgICBuZXdTdGF0ZSA9IHNldExvY2FsZVVwZGF0ZXIobmV3U3RhdGUsIHtcbiAgICAgIHBheWxvYWQ6IHtsb2NhbGU6IHVpU3RhdGUubG9jYWxlfVxuICAgIH0gYXMgVUlTdGF0ZUFjdGlvbnMuU2V0TG9jYWxlVXBkYXRlckFjdGlvbik7XG4gIH1cblxuICBpZiAodWlTdGF0ZS50aGVtZSkge1xuICAgIG5ld1N0YXRlID0gc2V0VGhlbWVVcGRhdGVyKG5ld1N0YXRlLCB7XG4gICAgICBwYXlsb2FkOiB7dGhlbWU6IHVpU3RhdGUudGhlbWV9XG4gICAgfSBhcyBVSVN0YXRlQWN0aW9ucy5TZXRUaGVtZVVwZGF0ZXJBY3Rpb24pO1xuICB9XG5cbiAgcmV0dXJuIG5ld1N0YXRlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRUEsU0FDRUEsV0FBVyxFQUNYQyxhQUFhLEVBQ2JDLDJCQUEyQixFQUMzQkMsY0FBYyxFQUNkQyxnQkFBZ0IsRUFDaEJDLHFCQUFxQixFQUNyQkMsaUJBQWlCLEVBQ2pCQyxrQkFBa0IsRUFDbEJDLFdBQVcsRUFDWEMsWUFBWSxFQUNaQyxLQUFLLFFBQ0Esc0JBQXNCO0FBQzdCLFNBQVFDLFlBQVksUUFBTyx5QkFBeUI7QUFDcEQsU0FDRUMsa0JBQWtCLEVBQ2xCQyxpQkFBaUIsRUFDakJDLHdCQUF3QixFQUN4QkMsb0JBQW9CLEVBQ3BCQyxtQkFBbUIsRUFDbkJDLGlCQUFpQixRQUNaLGtCQUFrQjtBQUN6QixTQUFRQyxRQUFRLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFPLG9CQUFvQjtBQXNCN0QsT0FBTyxJQUFNQyx5QkFBeUIsR0FBRyxPQUFPO0FBQ2hELE9BQU8sSUFBTUMsYUFBYSxHQUFHdEIsV0FBVzs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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
|