@carto/kepler.gl 0.0.75-alpha.deckv9.1 → 0.0.75-alpha.deckv9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/action-wrapper.js +3 -3
- package/dist/components/common/checkbox.js +4 -4
- package/dist/components/common/data-table/grid.js +3 -3
- package/dist/components/common/data-table/index.js +6 -6
- package/dist/components/common/item-selector/item-selector.js +3 -3
- package/dist/components/common/portaled.js +6 -6
- package/dist/components/common/time-range-slider.js +3 -3
- package/dist/components/container.js +4 -4
- package/dist/components/editor/editor.js +6 -6
- package/dist/components/editor/feature-styles.js +3 -3
- package/dist/components/editor/handle-style.js +3 -3
- package/dist/components/filters/filter-panels/polygon-filter-panel.js +4 -4
- package/dist/components/modal-container.js +3 -3
- package/dist/components/modals/image-modal-container.js +4 -4
- package/dist/components/modals/load-data-modal.js +3 -3
- package/dist/components/notification-panel/notification-item.js +5 -5
- package/dist/components/notification-panel.js +5 -5
- package/dist/components/plot-container.js +3 -3
- package/dist/components/side-panel/filter-panel/filter-panel.js +7 -7
- package/dist/components/side-panel/interaction-panel/interaction-panel.js +5 -5
- package/dist/components/side-panel/layer-panel/color-range-selector.js +4 -4
- package/dist/components/side-panel/panel-header.js +6 -6
- package/dist/components/side-panel/side-bar.js +6 -6
- package/dist/components/side-panel.js +3 -3
- package/dist/constants/default-settings.js +1 -1
- package/dist/deckgl-layers/layer-utils/cluster-utils.js +3 -3
- package/dist/layers/aggregation-layer.js +4 -4
- package/dist/layers/base-layer.js +2 -2
- package/dist/layers/geojson-layer/geojson-layer.js +3 -3
- package/dist/layers/heatmap-layer/heatmap-layer.js +3 -3
- package/dist/layers/layer-text-label.js +2 -2
- package/dist/layers/trip-layer/trip-layer.js +5 -5
- package/dist/reducers/map-style-updaters.js +3 -3
- package/dist/reducers/vis-state-merger.js +6 -6
- package/dist/reducers/vis-state-updaters.js +13 -13
- package/dist/schemas/dataset-schema.js +4 -4
- package/dist/schemas/vis-state-schema.js +7 -7
- package/dist/utils/dataset-utils.js +3 -3
- package/dist/utils/export-utils.js +3 -3
- package/dist/utils/filter-utils.js +7 -7
- package/dist/utils/map-style-utils/mapbox-gl-style-editor.js +6 -6
- package/dist/utils/observe-dimensions.js +3 -3
- package/dist/utils/split-map-utils.js +3 -3
- package/package.json +2 -13
- package/src/actions/action-wrapper.js +1 -1
- package/src/components/common/checkbox.js +1 -1
- package/src/components/common/data-table/grid.js +1 -1
- package/src/components/common/data-table/index.js +2 -2
- package/src/components/common/item-selector/item-selector.js +1 -1
- package/src/components/common/portaled.js +2 -2
- package/src/components/common/time-range-slider.js +1 -1
- package/src/components/container.js +1 -1
- package/src/components/editor/editor.js +1 -1
- package/src/components/editor/feature-styles.js +1 -1
- package/src/components/editor/handle-style.js +1 -1
- package/src/components/filters/filter-panels/polygon-filter-panel.js +1 -1
- package/src/components/modal-container.js +1 -1
- package/src/components/modals/image-modal-container.js +1 -1
- package/src/components/modals/load-data-modal.js +1 -1
- package/src/components/plot-container.js +1 -1
- package/src/components/side-panel/filter-panel/filter-panel.js +1 -1
- package/src/components/side-panel/layer-panel/color-range-selector.js +1 -1
- package/src/components/side-panel.js +1 -1
- package/src/deckgl-layers/layer-utils/cluster-utils.js +1 -1
- package/src/layers/aggregation-layer.js +1 -1
- package/src/layers/base-layer.js +1 -1
- package/src/layers/geojson-layer/geojson-layer.js +1 -1
- package/src/layers/heatmap-layer/heatmap-layer.js +1 -1
- package/src/layers/layer-text-label.js +1 -1
- package/src/layers/trip-layer/trip-layer.js +2 -2
- package/src/reducers/map-style-updaters.js +1 -1
- package/src/reducers/vis-state-merger.js +3 -3
- package/src/reducers/vis-state-updaters.js +4 -4
- package/src/schemas/dataset-schema.js +1 -1
- package/src/schemas/vis-state-schema.js +2 -2
- package/src/utils/dataset-utils.js +1 -1
- package/src/utils/export-utils.js +1 -1
- package/src/utils/filter-utils.js +2 -2
- package/src/utils/map-style-utils/mapbox-gl-style-editor.js +3 -3
- package/src/utils/observe-dimensions.js +1 -1
- package/src/utils/split-map-utils.js +1 -1
|
@@ -49,8 +49,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
49
49
|
var _d3Array = require("d3-array");
|
|
50
50
|
var _keymirror = _interopRequireDefault(require("keymirror"));
|
|
51
51
|
var _console = require("global/console");
|
|
52
|
-
var
|
|
53
|
-
var
|
|
52
|
+
var _get = _interopRequireDefault(require("lodash/get"));
|
|
53
|
+
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
54
54
|
var _booleanWithin = _interopRequireDefault(require("@turf/boolean-within"));
|
|
55
55
|
var _helpers = require("@turf/helpers");
|
|
56
56
|
var _decimal = require("decimal.js");
|
|
@@ -442,7 +442,7 @@ function getFilterFunction(field, dataId, filter, layers, dataContainer) {
|
|
|
442
442
|
if (!field) {
|
|
443
443
|
return defaultFunc;
|
|
444
444
|
}
|
|
445
|
-
var mappedValue = (0,
|
|
445
|
+
var mappedValue = (0, _get["default"])(field, ['filterProps', 'mappedValue']);
|
|
446
446
|
var accessor = Array.isArray(mappedValue) ? function (data) {
|
|
447
447
|
return mappedValue[data.index];
|
|
448
448
|
} : function (data) {
|
|
@@ -825,7 +825,7 @@ function isValidFilterValue(type, value) {
|
|
|
825
825
|
case _defaultSettings.FILTER_TYPES.input:
|
|
826
826
|
return Boolean(value.length);
|
|
827
827
|
case _defaultSettings.FILTER_TYPES.polygon:
|
|
828
|
-
var coordinates = (0,
|
|
828
|
+
var coordinates = (0, _get["default"])(value, ['geometry', 'coordinates']);
|
|
829
829
|
return Boolean(value && value.id && coordinates);
|
|
830
830
|
default:
|
|
831
831
|
return true;
|
|
@@ -1010,7 +1010,7 @@ var featureToFilterValue = exports.featureToFilterValue = function featureToFilt
|
|
|
1010
1010
|
* @type {typeof import('./filter-utils').getFilterIdInFeature}
|
|
1011
1011
|
*/
|
|
1012
1012
|
var getFilterIdInFeature = exports.getFilterIdInFeature = function getFilterIdInFeature(f) {
|
|
1013
|
-
return (0,
|
|
1013
|
+
return (0, _get["default"])(f, ['properties', 'filterId']);
|
|
1014
1014
|
};
|
|
1015
1015
|
|
|
1016
1016
|
/**
|
|
@@ -1104,7 +1104,7 @@ function validateFiltersUpdateDatasets(state) {
|
|
|
1104
1104
|
validatedFilter = _datasetIds$reduce.filter,
|
|
1105
1105
|
applyToDatasets = _datasetIds$reduce.applyToDatasets,
|
|
1106
1106
|
augmentedDatasets = _datasetIds$reduce.augmentedDatasets;
|
|
1107
|
-
if (validatedFilter && (0,
|
|
1107
|
+
if (validatedFilter && (0, _isEqual["default"])(datasetIds, applyToDatasets)) {
|
|
1108
1108
|
validated.push(validatedFilter);
|
|
1109
1109
|
updatedDatasets = _objectSpread(_objectSpread({}, updatedDatasets), augmentedDatasets);
|
|
1110
1110
|
}
|
|
@@ -1133,4 +1133,4 @@ function getIntervalBins(filter) {
|
|
|
1133
1133
|
var values = Object.values(bins);
|
|
1134
1134
|
return values[0] ? values[0][interval] : null;
|
|
1135
1135
|
}
|
|
1136
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZDNBcnJheSIsInJlcXVpcmUiLCJfa2V5bWlycm9yIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb25zb2xlIiwiX2xvZGFzaCIsIl9sb2Rhc2gyIiwiX2Jvb2xlYW5XaXRoaW4iLCJfaGVscGVycyIsIl9kZWNpbWFsIiwiX2RlZmF1bHRTZXR0aW5ncyIsIl9kYXRhVXRpbHMiLCJTY2FsZVV0aWxzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdHlwZXMiLCJfdXRpbHMiLCJfaDNVdGlscyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIlRpbWVzdGFtcFN0ZXBNYXAiLCJleHBvcnRzIiwibWF4Iiwic3RlcCIsIk51bWJlciIsIlBPU0lUSVZFX0lORklOSVRZIiwiaGlzdG9ncmFtQmlucyIsImVubGFyZ2VkSGlzdG9ncmFtQmlucyIsImR1cmF0aW9uU2Vjb25kIiwiZHVyYXRpb25NaW51dGUiLCJkdXJhdGlvbkhvdXIiLCJkdXJhdGlvbkRheSIsImR1cmF0aW9uV2VlayIsImR1cmF0aW9uWWVhciIsIlBMT1RfVFlQRVMiLCJrZXlNaXJyb3IiLCJoaXN0b2dyYW0iLCJsaW5lQ2hhcnQiLCJGSUxURVJfVVBEQVRFUl9QUk9QUyIsImRhdGFJZCIsIm5hbWUiLCJsYXllcklkIiwiTElNSVRFRF9GSUxURVJfRUZGRUNUX1BST1BTIiwiU3VwcG9ydGVkUGxvdFR5cGUiLCJGSUxURVJfVFlQRVMiLCJ0aW1lUmFuZ2UiLCJBTExfRklFTERfVFlQRVMiLCJpbnRlZ2VyIiwicmVhbCIsInJhbmdlIiwiRklMVEVSX0NPTVBPTkVOVFMiLCJzZWxlY3QiLCJtdWx0aVNlbGVjdCIsInBvbHlnb24iLCJERUZBVUxUX0ZJTFRFUl9TVFJVQ1RVUkUiLCJmcmVlemUiLCJpZCIsImZpeGVkRG9tYWluIiwiZW5sYXJnZWQiLCJpc0FuaW1hdGluZyIsImFuaW1hdGlvbldpbmRvdyIsIkFOSU1BVElPTl9XSU5ET1ciLCJmcmVlIiwic3BlZWQiLCJ0eXBlIiwiZmllbGRJZHgiLCJkb21haW4iLCJ2YWx1ZSIsInBsb3RUeXBlIiwieUF4aXMiLCJpbnRlcnZhbCIsImdwdSIsIkZJTFRFUl9JRF9MRU5HVEgiLCJMQVlFUl9GSUxURVJTIiwiZ2V0RGVmYXVsdEZpbHRlciIsInRvQXJyYXkiLCJnZW5lcmF0ZUhhc2hJZCIsInNob3VsZEFwcGx5RmlsdGVyIiwiZGF0YXNldElkIiwiZGF0YUlkcyIsImluY2x1ZGVzIiwidmFsaWRhdGVQb2x5Z29uRmlsdGVyIiwiZGF0YXNldCIsImxheWVycyIsImZhaWxlZCIsImlzVmFsaWRGaWx0ZXJWYWx1ZSIsImlzVmFsaWREYXRhc2V0IiwibGF5ZXIiLCJmaW5kIiwibCIsImZpbHRlclZhbGlkYXRvcnMiLCJ2YWxpZGF0ZUZpbHRlciIsImZpbHRlckRhdGFJZCIsImZpbHRlckRhdGFzZXRJbmRleCIsImluZGV4T2YiLCJpbml0aWFsaXplRmlsdGVyIiwiZmllbGROYW1lIiwiX2FwcGx5RmlsdGVyRmllbGROYW1lIiwiYXBwbHlGaWx0ZXJGaWVsZE5hbWUiLCJtZXJnZURvbWFpbiIsInVwZGF0ZWRGaWx0ZXIiLCJ1cGRhdGVkRGF0YXNldCIsImFkanVzdFZhbHVlVG9GaWx0ZXJEb21haW4iLCJ2YWxpZGF0ZUZpbHRlcllBeGlzIiwidmFsaWRhdGVGaWx0ZXJXaXRoRGF0YSIsImZpZWxkcyIsIl9maWx0ZXIiLCJtYXRjaGVkQXhpcyIsIl9yZWYiLCJnZXRGaWx0ZXJQbG90IiwiZ2V0RmlsdGVyUHJvcHMiLCJmaWVsZCIsImZpZWxkRG9tYWluIiwiZmlsdGVyUHJvcHMiLCJmaWVsZFR5cGUiLCJ0eXBlT3B0aW9ucyIsInN0cmluZyIsImRhdGUiLCJ0aW1lc3RhbXAiLCJnZXRQb2x5Z29uRmlsdGVyRnVuY3RvciIsImRhdGFDb250YWluZXIiLCJnZXRQb3NpdGlvbiIsImdldFBvc2l0aW9uQWNjZXNzb3IiLCJMQVlFUl9UWVBFUyIsInBvaW50IiwiaWNvbiIsImRhdGEiLCJwb3MiLCJldmVyeSIsImlzRmluaXRlIiwiaXNJblBvbHlnb24iLCJhcmMiLCJsaW5lIiwiaGV4YWdvbklkIiwiZGF0YVRvRmVhdHVyZSIsImNlbnRyb2lkcyIsImNlbnRyb2lkIiwiaW5kZXgiLCJoM0lzVmFsaWQiLCJnZXRDZW50cm9pZCIsImdldEZpbHRlckZ1bmN0aW9uIiwidmFsdWVBY2Nlc3NvciIsImRlZmF1bHRGdW5jIiwiZCIsImlzSW5SYW5nZSIsIm1hcHBlZFZhbHVlIiwiYWNjZXNzb3IiLCJBcnJheSIsImlzQXJyYXkiLCJ0aW1lVG9Vbml4TWlsbGkiLCJmb3JtYXQiLCJsYXllckZpbHRlckZ1bmN0aW9ucyIsIm1hcCIsImNvbmZpZyIsImZpbHRlckZ1bmMiLCJ1cGRhdGVGaWx0ZXJEYXRhSWQiLCJmaWx0ZXJEYXRhQnlGaWx0ZXJUeXBlcyIsIl9yZWYyIiwiZHluYW1pY0RvbWFpbkZpbHRlcnMiLCJjcHVGaWx0ZXJzIiwiZmlsdGVyRnVuY3MiLCJyZXN1bHQiLCJmaWx0ZXJlZEluZGV4Rm9yRG9tYWluIiwiZmlsdGVyZWRJbmRleCIsImZpbHRlckNvbnRleHQiLCJmaWx0ZXJGdW5jQ2FsbGVyIiwibnVtUm93cyIsIm1hdGNoRm9yRG9tYWluIiwibWF0Y2hGb3JSZW5kZXIiLCJnZXRGaWx0ZXJSZWNvcmQiLCJmaWx0ZXJzIiwib3B0IiwidW5kZWZpbmVkIiwiZmlsdGVyUmVjb3JkIiwiZHluYW1pY0RvbWFpbiIsImNwdSIsImYiLCJpZ25vcmVEb21haW4iLCJjcHVPbmx5IiwiZGlmZkZpbHRlcnMiLCJvbGRGaWx0ZXJSZWNvcmQiLCJmaWx0ZXJDaGFuZ2VkIiwiZW50cmllcyIsIl9yZWYzIiwiX3JlZjQiLCJfc2xpY2VkVG9BcnJheTIiLCJyZWNvcmQiLCJpdGVtcyIsIm9sZEZpbHRlciIsInByb3AiLCJjb25jYXQiLCJfcmVmNSIsIm5vdE51bGxvclVuZGVmaW5lZCIsImZpbHRlcmVkVmFsdWUiLCJnZXROdW1lcmljRmllbGREb21haW4iLCJtYXBJbmRleCIsImdldExpbmVhckRvbWFpbiIsImRpZmYiLCJnZXROdW1lcmljU3RlcFNpemUiLCJmb3JtYXROdW1iZXJCeVN0ZXAiLCJfZ2V0SGlzdG9ncmFtIiwiZ2V0SGlzdG9ncmFtIiwiZW5sYXJnZWRIaXN0b2dyYW0iLCJNYXRoIiwiYWJzIiwieCIsImV4cG9uZW50aWFsRm9ybSIsInRvRXhwb25lbnRpYWwiLCJleHBvbmVudCIsInBhcnNlRmxvYXQiLCJzcGxpdCIsIkRlY2ltYWwiLCJwb3ciLCJ0b051bWJlciIsImdldFRpbWVzdGFtcEZpZWxkRG9tYWluIiwiZGVmYXVsdFRpbWVGb3JtYXQiLCJnZXRUaW1lV2lkZ2V0VGl0bGVGb3JtYXR0ZXIiLCJlbnRyeSIsIl9nZXRIaXN0b2dyYW0yIiwiaGlzdG9ncmFtQ29uc3RydWN0IiwiYmlucyIsImQzSGlzdG9ncmFtIiwidGhyZXNob2xkcyIsInRpY2tzIiwiYmluIiwiY291bnQiLCJ4MCIsIngxIiwidmFsIiwiYm91bmQiLCJmbG9vciIsImNlaWwiLCJib29sZWFuV2l0aGluIiwidHVyZlBvaW50IiwiaXNWYWxpZFRpbWVEb21haW4iLCJnZXRUaW1lV2lkZ2V0SGludEZvcm1hdHRlciIsInYiLCJpc05hTiIsIkJvb2xlYW4iLCJpbnB1dCIsImNvb3JkaW5hdGVzIiwiX2ZpbHRlciRtYXBwZWRWYWx1ZSIsImdldENvbHVtbkZpZWxkSWR4IiwiQ29uc29sZSIsIndhcm4iLCJzZXJpZXMiLCJyb3ciLCJyb3dJbmRleCIsInkiLCJ2YWx1ZUF0IiwiX3JlZjYiLCJzb3J0IiwiYiIsImFzY2VuZGluZyIsInlEb21haW4iLCJleHRlbnQiLCJ4RG9tYWluIiwiZ2V0RGVmYXVsdEZpbHRlclBsb3RUeXBlIiwiZmlsdGVyUGxvdFR5cGVzIiwiYXBwbHlGaWx0ZXJzVG9EYXRhc2V0cyIsImRhdGFzZXRJZHMiLCJkYXRhc2V0cyIsInJlZHVjZSIsImFjYyIsImxheWVyc1RvRmlsdGVyIiwiYXBwbGllZEZpbHRlcnMiLCJ0YWJsZSIsImZpbHRlclRhYmxlIiwib3B0aW9uIiwiZmllbGRJbmRleCIsImdldENvbHVtbkZpbHRlclByb3BzIiwibmV3RmlsdGVyIiwibWVyZ2VGaWx0ZXJEb21haW5TdGVwIiwiYXNzaWduIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImNvbWJpbmVkRG9tYWluIiwidW5pcXVlIiwiZmVhdHVyZVRvRmlsdGVyVmFsdWUiLCJmZWF0dXJlIiwiZmlsdGVySWQiLCJwcm9wZXJ0aWVzIiwiZ2V0RmlsdGVySWRJbkZlYXR1cmUiLCJnZW5lcmF0ZVBvbHlnb25GaWx0ZXIiLCJsYWJlbCIsImlzVmlzaWJsZSIsImZpbHRlckRhdGFzZXRDUFUiLCJzdGF0ZSIsImRhdGFzZXRGaWx0ZXJzIiwiY3B1RmlsdGVyZWREYXRhc2V0IiwiZmlsdGVyVGFibGVDUFUiLCJ2YWxpZGF0ZUZpbHRlcnNVcGRhdGVEYXRhc2V0cyIsImZpbHRlcnNUb1ZhbGlkYXRlIiwidmFsaWRhdGVkIiwidXBkYXRlZERhdGFzZXRzIiwiX2RhdGFzZXRJZHMkcmVkdWNlIiwiX3ZhbGlkYXRlRmlsdGVyV2l0aERhIiwiYXVnbWVudGVkRGF0YXNldHMiLCJhcHBseVRvRGF0YXNldHMiLCJ2YWxpZGF0ZWRGaWx0ZXIiLCJpc0VxdWFsIiwiZ2V0SW50ZXJ2YWxCaW5zIiwiX2ZpbHRlciRwbG90VHlwZSIsInZhbHVlcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9maWx0ZXItdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHthc2NlbmRpbmcsIGV4dGVudCwgaGlzdG9ncmFtIGFzIGQzSGlzdG9ncmFtLCB0aWNrc30gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IGtleU1pcnJvciBmcm9tICdrZXltaXJyb3InO1xuaW1wb3J0IHtjb25zb2xlIGFzIENvbnNvbGV9IGZyb20gJ2dsb2JhbC9jb25zb2xlJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoLmdldCc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2guaXNlcXVhbCc7XG5cbmltcG9ydCBib29sZWFuV2l0aGluIGZyb20gJ0B0dXJmL2Jvb2xlYW4td2l0aGluJztcbmltcG9ydCB7cG9pbnQgYXMgdHVyZlBvaW50fSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCB7RGVjaW1hbH0gZnJvbSAnZGVjaW1hbC5qcyc7XG5pbXBvcnQge0FMTF9GSUVMRF9UWVBFUywgRklMVEVSX1RZUEVTLCBBTklNQVRJT05fV0lORE9XfSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5pbXBvcnQge25vdE51bGxvclVuZGVmaW5lZCwgdW5pcXVlLCB0aW1lVG9Vbml4TWlsbGl9IGZyb20gJy4vZGF0YS11dGlscyc7XG5pbXBvcnQgKiBhcyBTY2FsZVV0aWxzIGZyb20gJy4vZGF0YS1zY2FsZS11dGlscyc7XG5pbXBvcnQge0xBWUVSX1RZUEVTfSBmcm9tICdsYXllcnMvdHlwZXMnO1xuaW1wb3J0IHtnZW5lcmF0ZUhhc2hJZCwgc2V0LCB0b0FycmF5fSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7Z2V0Q2VudHJvaWQsIGgzSXNWYWxpZH0gZnJvbSAnbGF5ZXJzL2gzLWhleGFnb24tbGF5ZXIvaDMtdXRpbHMnO1xuXG4vLyBUWVBFXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnLi90YWJsZS11dGlscy9rZXBsZXItdGFibGUnKS5GaWx0ZXJSZWNvcmR9IEZpbHRlclJlY29yZCAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuRmlsdGVyUmVzdWx0fSBGaWx0ZXJSZXN1bHQgKi9cblxuZXhwb3J0IGNvbnN0IFRpbWVzdGFtcFN0ZXBNYXAgPSBbXG4gIHttYXg6IDEsIHN0ZXA6IDAuMDV9LFxuICB7bWF4OiAxMCwgc3RlcDogMC4xfSxcbiAge21heDogMTAwLCBzdGVwOiAxfSxcbiAge21heDogNTAwLCBzdGVwOiA1fSxcbiAge21heDogMTAwMCwgc3RlcDogMTB9LFxuICB7bWF4OiA1MDAwLCBzdGVwOiA1MH0sXG4gIHttYXg6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSwgc3RlcDogMTAwMH1cbl07XG5cbmV4cG9ydCBjb25zdCBoaXN0b2dyYW1CaW5zID0gMzA7XG5leHBvcnQgY29uc3QgZW5sYXJnZWRIaXN0b2dyYW1CaW5zID0gMTAwO1xuXG5jb25zdCBkdXJhdGlvblNlY29uZCA9IDEwMDA7XG5jb25zdCBkdXJhdGlvbk1pbnV0ZSA9IGR1cmF0aW9uU2Vjb25kICogNjA7XG5jb25zdCBkdXJhdGlvbkhvdXIgPSBkdXJhdGlvbk1pbnV0ZSAqIDYwO1xuY29uc3QgZHVyYXRpb25EYXkgPSBkdXJhdGlvbkhvdXIgKiAyNDtcbmNvbnN0IGR1cmF0aW9uV2VlayA9IGR1cmF0aW9uRGF5ICogNztcbmNvbnN0IGR1cmF0aW9uWWVhciA9IGR1cmF0aW9uRGF5ICogMzY1O1xuXG5leHBvcnQgY29uc3QgUExPVF9UWVBFUyA9IGtleU1pcnJvcih7XG4gIGhpc3RvZ3JhbTogbnVsbCxcbiAgbGluZUNoYXJ0OiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9VUERBVEVSX1BST1BTID0ga2V5TWlycm9yKHtcbiAgZGF0YUlkOiBudWxsLFxuICBuYW1lOiBudWxsLFxuICBsYXllcklkOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IExJTUlURURfRklMVEVSX0VGRkVDVF9QUk9QUyA9IGtleU1pcnJvcih7XG4gIFtGSUxURVJfVVBEQVRFUl9QUk9QUy5uYW1lXTogbnVsbFxufSk7XG4vKipcbiAqIE1heCBudW1iZXIgb2YgZmlsdGVyIHZhbHVlIGJ1ZmZlcnMgdGhhdCBkZWNrLmdsIHByb3ZpZGVzXG4gKi9cblxuY29uc3QgU3VwcG9ydGVkUGxvdFR5cGUgPSB7XG4gIFtGSUxURVJfVFlQRVMudGltZVJhbmdlXToge1xuICAgIGRlZmF1bHQ6ICdoaXN0b2dyYW0nLFxuICAgIFtBTExfRklFTERfVFlQRVMuaW50ZWdlcl06ICdsaW5lQ2hhcnQnLFxuICAgIFtBTExfRklFTERfVFlQRVMucmVhbF06ICdsaW5lQ2hhcnQnXG4gIH0sXG4gIFtGSUxURVJfVFlQRVMucmFuZ2VdOiB7XG4gICAgZGVmYXVsdDogJ2hpc3RvZ3JhbScsXG4gICAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXTogJ2xpbmVDaGFydCcsXG4gICAgW0FMTF9GSUVMRF9UWVBFUy5yZWFsXTogJ2xpbmVDaGFydCdcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9DT01QT05FTlRTID0ge1xuICBbRklMVEVSX1RZUEVTLnNlbGVjdF06ICdTaW5nbGVTZWxlY3RGaWx0ZXInLFxuICBbRklMVEVSX1RZUEVTLm11bHRpU2VsZWN0XTogJ011bHRpU2VsZWN0RmlsdGVyJyxcbiAgW0ZJTFRFUl9UWVBFUy50aW1lUmFuZ2VdOiAnVGltZVJhbmdlRmlsdGVyJyxcbiAgW0ZJTFRFUl9UWVBFUy5yYW5nZV06ICdSYW5nZUZpbHRlcicsXG4gIFtGSUxURVJfVFlQRVMucG9seWdvbl06ICdQb2x5Z29uRmlsdGVyJ1xufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfRklMVEVSX1NUUlVDVFVSRSA9IHtcbiAgZGF0YUlkOiBbXSwgLy8gW3N0cmluZ11cbiAgZnJlZXplOiBmYWxzZSxcbiAgaWQ6IG51bGwsXG5cbiAgLy8gdGltZSByYW5nZSBmaWx0ZXIgc3BlY2lmaWNcbiAgZml4ZWREb21haW46IGZhbHNlLFxuICBlbmxhcmdlZDogZmFsc2UsXG4gIGlzQW5pbWF0aW5nOiBmYWxzZSxcbiAgYW5pbWF0aW9uV2luZG93OiBBTklNQVRJT05fV0lORE9XLmZyZWUsXG4gIHNwZWVkOiAxLFxuXG4gIC8vIGZpZWxkIHNwZWNpZmljXG4gIG5hbWU6IFtdLCAvLyBzdHJpbmdcbiAgdHlwZTogbnVsbCxcbiAgZmllbGRJZHg6IFtdLCAvLyBbaW50ZWdlcl1cbiAgZG9tYWluOiBudWxsLFxuICB2YWx1ZTogbnVsbCxcblxuICAvLyBwbG90XG4gIHBsb3RUeXBlOiBQTE9UX1RZUEVTLmhpc3RvZ3JhbSxcbiAgeUF4aXM6IG51bGwsXG4gIGludGVydmFsOiBudWxsLFxuXG4gIC8vIG1vZGVcbiAgZ3B1OiBmYWxzZVxufTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9JRF9MRU5HVEggPSA0O1xuXG5leHBvcnQgY29uc3QgTEFZRVJfRklMVEVSUyA9IFtGSUxURVJfVFlQRVMucG9seWdvbl07XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgZmlsdGVyIHdpdGggYSBkYXRhc2V0IGlkIGFzIGRhdGFJZFxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuZ2V0RGVmYXVsdEZpbHRlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRGaWx0ZXIoZGF0YUlkKSB7XG4gIHJldHVybiB7XG4gICAgLi4uREVGQVVMVF9GSUxURVJfU1RSVUNUVVJFLFxuICAgIC8vIHN0b3JlIGl0IGFzIGRhdGFJZCBhbmQgaXQgY291bGQgYmUgb25lIG9yIG1hbnlcbiAgICBkYXRhSWQ6IHRvQXJyYXkoZGF0YUlkKSxcbiAgICBpZDogZ2VuZXJhdGVIYXNoSWQoRklMVEVSX0lEX0xFTkdUSClcbiAgfTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIGZpbHRlciBpcyB2YWxpZCBiYXNlZCBvbiB0aGUgZ2l2ZW4gZGF0YUlkXG4gKiBAcGFyYW0gIGZpbHRlciB0byB2YWxpZGF0ZVxuICogQHBhcmFtICBkYXRhc2V0SWQgaWQgdG8gdmFsaWRhdGUgZmlsdGVyIGFnYWluc3RcbiAqIEByZXR1cm4gdHJ1ZSBpZiBhIGZpbHRlciBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9maWx0ZXItdXRpbHMnKS5zaG91bGRBcHBseUZpbHRlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZEFwcGx5RmlsdGVyKGZpbHRlciwgZGF0YXNldElkKSB7XG4gIGNvbnN0IGRhdGFJZHMgPSB0b0FycmF5KGZpbHRlci5kYXRhSWQpO1xuICByZXR1cm4gZGF0YUlkcy5pbmNsdWRlcyhkYXRhc2V0SWQpICYmIGZpbHRlci52YWx1ZSAhPT0gbnVsbDtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYW5kIG1vZGlmaWVzIHBvbHlnb24gZmlsdGVyIHN0cnVjdHVyZVxuICogQHBhcmFtIGRhdGFzZXRcbiAqIEBwYXJhbSBmaWx0ZXJcbiAqIEBwYXJhbSBsYXllcnNcbiAqIEByZXR1cm4gLSB7ZmlsdGVyLCBkYXRhc2V0fVxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykudmFsaWRhdGVQb2x5Z29uRmlsdGVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQb2x5Z29uRmlsdGVyKGRhdGFzZXQsIGZpbHRlciwgbGF5ZXJzKSB7XG4gIGNvbnN0IGZhaWxlZCA9IHtkYXRhc2V0LCBmaWx0ZXI6IG51bGx9O1xuICBjb25zdCB7dmFsdWUsIGxheWVySWQsIHR5cGUsIGRhdGFJZH0gPSBmaWx0ZXI7XG5cbiAgaWYgKCFsYXllcklkIHx8ICFpc1ZhbGlkRmlsdGVyVmFsdWUodHlwZSwgdmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhaWxlZDtcbiAgfVxuXG4gIGNvbnN0IGlzVmFsaWREYXRhc2V0ID0gZGF0YUlkLmluY2x1ZGVzKGRhdGFzZXQuaWQpO1xuXG4gIGlmICghaXNWYWxpZERhdGFzZXQpIHtcbiAgICByZXR1cm4gZmFpbGVkO1xuICB9XG5cbiAgY29uc3QgbGF5ZXIgPSBsYXllcnMuZmluZChsID0+IGxheWVySWQuaW5jbHVkZXMobC5pZCkpO1xuXG4gIGlmICghbGF5ZXIpIHtcbiAgICByZXR1cm4gZmFpbGVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBmaWx0ZXI6IHtcbiAgICAgIC4uLmZpbHRlcixcbiAgICAgIGZyZWV6ZTogdHJ1ZSxcbiAgICAgIGZpZWxkSWR4OiBbXVxuICAgIH0sXG4gICAgZGF0YXNldFxuICB9O1xufVxuXG4vKipcbiAqIEN1c3RvbSBmaWx0ZXIgdmFsaWRhdG9yc1xuICovXG5jb25zdCBmaWx0ZXJWYWxpZGF0b3JzID0ge1xuICBbRklMVEVSX1RZUEVTLnBvbHlnb25dOiB2YWxpZGF0ZVBvbHlnb25GaWx0ZXJcbn07XG5cbi8qKlxuICogRGVmYXVsdCB2YWxpZGF0ZSBmaWx0ZXIgZnVuY3Rpb25cbiAqIEBwYXJhbSBkYXRhc2V0XG4gKiBAcGFyYW0gZmlsdGVyXG4gKiBAcmV0dXJuIC0ge2ZpbHRlciwgZGF0YXNldH1cbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLnZhbGlkYXRlRmlsdGVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGaWx0ZXIoZGF0YXNldCwgZmlsdGVyKSB7XG4gIC8vIG1hdGNoIGZpbHRlci5kYXRhSWRcbiAgY29uc3QgZmFpbGVkID0ge2RhdGFzZXQsIGZpbHRlcjogbnVsbH07XG4gIGNvbnN0IGZpbHRlckRhdGFJZCA9IHRvQXJyYXkoZmlsdGVyLmRhdGFJZCk7XG5cbiAgY29uc3QgZmlsdGVyRGF0YXNldEluZGV4ID0gZmlsdGVyRGF0YUlkLmluZGV4T2YoZGF0YXNldC5pZCk7XG4gIGlmIChmaWx0ZXJEYXRhc2V0SW5kZXggPCAwKSB7XG4gICAgLy8gdGhlIGN1cnJlbnQgZmlsdGVyIGlzIG5vdCBtYXBwZWQgYWdhaW5zdCB0aGUgY3VycmVudCBkYXRhc2V0XG4gICAgcmV0dXJuIGZhaWxlZDtcbiAgfVxuXG4gIGNvbnN0IGluaXRpYWxpemVGaWx0ZXIgPSB7XG4gICAgLi4uZ2V0RGVmYXVsdEZpbHRlcihmaWx0ZXIuZGF0YUlkKSxcbiAgICAuLi5maWx0ZXIsXG4gICAgZGF0YUlkOiBmaWx0ZXJEYXRhSWQsXG4gICAgbmFtZTogdG9BcnJheShmaWx0ZXIubmFtZSlcbiAgfTtcblxuICBjb25zdCBmaWVsZE5hbWUgPSBpbml0aWFsaXplRmlsdGVyLm5hbWVbZmlsdGVyRGF0YXNldEluZGV4XTtcbiAgY29uc3Qge2ZpbHRlcjogdXBkYXRlZEZpbHRlciwgZGF0YXNldDogdXBkYXRlZERhdGFzZXR9ID0gYXBwbHlGaWx0ZXJGaWVsZE5hbWUoXG4gICAgaW5pdGlhbGl6ZUZpbHRlcixcbiAgICBkYXRhc2V0LFxuICAgIGZpZWxkTmFtZSxcbiAgICBmaWx0ZXJEYXRhc2V0SW5kZXgsXG4gICAge21lcmdlRG9tYWluOiB0cnVlfVxuICApO1xuXG4gIGlmICghdXBkYXRlZEZpbHRlcikge1xuICAgIHJldHVybiBmYWlsZWQ7XG4gIH1cblxuICB1cGRhdGVkRmlsdGVyLnZhbHVlID0gYWRqdXN0VmFsdWVUb0ZpbHRlckRvbWFpbihmaWx0ZXIudmFsdWUsIHVwZGF0ZWRGaWx0ZXIpO1xuICB1cGRhdGVkRmlsdGVyLmVubGFyZ2VkID1cbiAgICB0eXBlb2YgZmlsdGVyLmVubGFyZ2VkID09PSAnYm9vbGVhbicgPyBmaWx0ZXIuZW5sYXJnZWQgOiB1cGRhdGVkRmlsdGVyLmVubGFyZ2VkO1xuXG4gIGlmICh1cGRhdGVkRmlsdGVyLnZhbHVlID09PSBudWxsKSB7XG4gICAgLy8gY2Fubm90IGFkanVzdCBzYXZlZCB2YWx1ZSB0byBmaWx0ZXJcbiAgICByZXR1cm4gZmFpbGVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBmaWx0ZXI6IHZhbGlkYXRlRmlsdGVyWUF4aXModXBkYXRlZEZpbHRlciwgdXBkYXRlZERhdGFzZXQpLFxuICAgIGRhdGFzZXQ6IHVwZGF0ZWREYXRhc2V0XG4gIH07XG59XG5cbi8qKlxuICogVmFsaWRhdGUgc2F2ZWQgZmlsdGVyIGNvbmZpZyB3aXRoIG5ldyBkYXRhLFxuICogY2FsY3VsYXRlIGRvbWFpbiBhbmQgZmllbGRJZHggYmFzZWQgbmV3IGZpZWxkcyBhbmQgZGF0YVxuICpcbiAqIEBwYXJhbSBkYXRhc2V0XG4gKiBAcGFyYW0gZmlsdGVyIC0gZmlsdGVyIHRvIGJlIHZhbGlkYXRlXG4gKiBAcGFyYW0gbGF5ZXJzIC0gbGF5ZXJzXG4gKiBAcmV0dXJuIHZhbGlkYXRlZCBmaWx0ZXJcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLnZhbGlkYXRlRmlsdGVyV2l0aERhdGF9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZpbHRlcldpdGhEYXRhKGRhdGFzZXQsIGZpbHRlciwgbGF5ZXJzKSB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIGZpbHRlclZhbGlkYXRvcnMuaGFzT3duUHJvcGVydHkoZmlsdGVyLnR5cGUpXG4gICAgPyBmaWx0ZXJWYWxpZGF0b3JzW2ZpbHRlci50eXBlXShkYXRhc2V0LCBmaWx0ZXIsIGxheWVycylcbiAgICA6IHZhbGlkYXRlRmlsdGVyKGRhdGFzZXQsIGZpbHRlcik7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgWUF4aXNcbiAqIEBwYXJhbSBmaWx0ZXJcbiAqIEBwYXJhbSBkYXRhc2V0XG4gKiBAcmV0dXJuIHsqfVxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUZpbHRlcllBeGlzKGZpbHRlciwgZGF0YXNldCkge1xuICAvLyBUT0RPOiB2YWxpZGF0ZSB5QXhpcyBhZ2FpbnN0IG90aGVyIGRhdGFzZXRzXG5cbiAgY29uc3Qge2ZpZWxkc30gPSBkYXRhc2V0O1xuICBjb25zdCB7eUF4aXN9ID0gZmlsdGVyO1xuICAvLyBUT0RPOiB2YWxpZGF0ZSB5QXhpcyBhZ2FpbnN0IG90aGVyIGRhdGFzZXRzXG4gIGlmICh5QXhpcykge1xuICAgIGNvbnN0IG1hdGNoZWRBeGlzID0gZmllbGRzLmZpbmQoKHtuYW1lLCB0eXBlfSkgPT4gbmFtZSA9PT0geUF4aXMubmFtZSAmJiB0eXBlID09PSB5QXhpcy50eXBlKTtcblxuICAgIGZpbHRlciA9IG1hdGNoZWRBeGlzXG4gICAgICA/IHtcbiAgICAgICAgICAuLi5maWx0ZXIsXG4gICAgICAgICAgeUF4aXM6IG1hdGNoZWRBeGlzLFxuICAgICAgICAgIC4uLmdldEZpbHRlclBsb3Qoey4uLmZpbHRlciwgeUF4aXM6IG1hdGNoZWRBeGlzfSwgZGF0YXNldClcbiAgICAgICAgfVxuICAgICAgOiBmaWx0ZXI7XG4gIH1cblxuICByZXR1cm4gZmlsdGVyO1xufVxuXG4vKipcbiAqIEdldCBkZWZhdWx0IGZpbHRlciBwcm9wIGJhc2VkIG9uIGZpZWxkIHR5cGVcbiAqXG4gKiBAcGFyYW0gZmllbGRcbiAqIEBwYXJhbSBmaWVsZERvbWFpblxuICogQHJldHVybnMgZGVmYXVsdCBmaWx0ZXJcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLmdldEZpbHRlclByb3BzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsdGVyUHJvcHMoZmllbGQsIGZpZWxkRG9tYWluKSB7XG4gIGNvbnN0IGZpbHRlclByb3BzID0ge1xuICAgIC4uLmZpZWxkRG9tYWluLFxuICAgIGZpZWxkVHlwZTogZmllbGQudHlwZVxuICB9O1xuXG4gIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmZpbHRlclByb3BzLFxuICAgICAgICB2YWx1ZTogZmllbGREb21haW4uZG9tYWluLFxuICAgICAgICB0eXBlOiBGSUxURVJfVFlQRVMucmFuZ2UsXG4gICAgICAgIHR5cGVPcHRpb25zOiBbRklMVEVSX1RZUEVTLnJhbmdlXSxcbiAgICAgICAgZ3B1OiB0cnVlXG4gICAgICB9O1xuXG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuYm9vbGVhbjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmZpbHRlclByb3BzLFxuICAgICAgICB0eXBlOiBGSUxURVJfVFlQRVMuc2VsZWN0LFxuICAgICAgICB2YWx1ZTogdHJ1ZSxcbiAgICAgICAgZ3B1OiBmYWxzZVxuICAgICAgfTtcblxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZzpcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5kYXRlOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZmlsdGVyUHJvcHMsXG4gICAgICAgIHR5cGU6IEZJTFRFUl9UWVBFUy5tdWx0aVNlbGVjdCxcbiAgICAgICAgdmFsdWU6IFtdLFxuICAgICAgICBncHU6IGZhbHNlXG4gICAgICB9O1xuXG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZmlsdGVyUHJvcHMsXG4gICAgICAgIHR5cGU6IEZJTFRFUl9UWVBFUy50aW1lUmFuZ2UsXG4gICAgICAgIGVubGFyZ2VkOiB0cnVlLFxuICAgICAgICBmaXhlZERvbWFpbjogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IGZpbHRlclByb3BzLmRvbWFpbixcbiAgICAgICAgZ3B1OiB0cnVlXG4gICAgICB9O1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB7fTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZ2V0UG9seWdvbkZpbHRlckZ1bmN0b3IgPSAobGF5ZXIsIGZpbHRlciwgZGF0YUNvbnRhaW5lcikgPT4ge1xuICBjb25zdCBnZXRQb3NpdGlvbiA9IGxheWVyLmdldFBvc2l0aW9uQWNjZXNzb3IoZGF0YUNvbnRhaW5lcik7XG5cbiAgc3dpdGNoIChsYXllci50eXBlKSB7XG4gICAgY2FzZSBMQVlFUl9UWVBFUy5wb2ludDpcbiAgICBjYXNlIExBWUVSX1RZUEVTLmljb246XG4gICAgICByZXR1cm4gZGF0YSA9PiB7XG4gICAgICAgIGNvbnN0IHBvcyA9IGdldFBvc2l0aW9uKGRhdGEpO1xuICAgICAgICByZXR1cm4gcG9zLmV2ZXJ5KE51bWJlci5pc0Zpbml0ZSkgJiYgaXNJblBvbHlnb24ocG9zLCBmaWx0ZXIudmFsdWUpO1xuICAgICAgfTtcbiAgICBjYXNlIExBWUVSX1RZUEVTLmFyYzpcbiAgICBjYXNlIExBWUVSX1RZUEVTLmxpbmU6XG4gICAgICByZXR1cm4gZGF0YSA9PiB7XG4gICAgICAgIGNvbnN0IHBvcyA9IGdldFBvc2l0aW9uKGRhdGEpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHBvcy5ldmVyeShOdW1iZXIuaXNGaW5pdGUpICYmXG4gICAgICAgICAgW1xuICAgICAgICAgICAgW3Bvc1swXSwgcG9zWzFdXSxcbiAgICAgICAgICAgIFtwb3NbM10sIHBvc1s0XV1cbiAgICAgICAgICBdLmV2ZXJ5KHBvaW50ID0+IGlzSW5Qb2x5Z29uKHBvaW50LCBmaWx0ZXIudmFsdWUpKVxuICAgICAgICApO1xuICAgICAgfTtcbiAgICBjYXNlIExBWUVSX1RZUEVTLmhleGFnb25JZDpcbiAgICAgIGlmIChsYXllci5kYXRhVG9GZWF0dXJlICYmIGxheWVyLmRhdGFUb0ZlYXR1cmUuY2VudHJvaWRzKSB7XG4gICAgICAgIHJldHVybiBkYXRhID0+IHtcbiAgICAgICAgICAvLyBudWxsIG9yIGdldENlbnRyb2lkKHtpZH0pXG4gICAgICAgICAgY29uc3QgY2VudHJvaWQgPSBsYXllci5kYXRhVG9GZWF0dXJlLmNlbnRyb2lkc1tkYXRhLmluZGV4XTtcbiAgICAgICAgICByZXR1cm4gY2VudHJvaWQgJiYgaXNJblBvbHlnb24oY2VudHJvaWQsIGZpbHRlci52YWx1ZSk7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0YSA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gZ2V0UG9zaXRpb24oZGF0YSk7XG4gICAgICAgIGlmICghaDNJc1ZhbGlkKGlkKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwb3MgPSBnZXRDZW50cm9pZCh7aWR9KTtcbiAgICAgICAgcmV0dXJuIHBvcy5ldmVyeShOdW1iZXIuaXNGaW5pdGUpICYmIGlzSW5Qb2x5Z29uKHBvcywgZmlsdGVyLnZhbHVlKTtcbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAoKSA9PiB0cnVlO1xuICB9XG59O1xuXG4vKipcbiAqIEBwYXJhbSBmaWVsZCBkYXRhc2V0IEZpZWxkXG4gKiBAcGFyYW0gZGF0YUlkIERhdGFzZXQgaWRcbiAqIEBwYXJhbSBmaWx0ZXIgRmlsdGVyIG9iamVjdFxuICogQHBhcmFtIGxheWVycyBsaXN0IG9mIGxheWVycyB0byBmaWx0ZXIgdXBvblxuICogQHBhcmFtIGRhdGFDb250YWluZXIgRGF0YSBjb250YWluZXJcbiAqIEByZXR1cm4gZmlsdGVyRnVuY3Rpb25cbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLmdldEZpbHRlckZ1bmN0aW9ufVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsdGVyRnVuY3Rpb24oZmllbGQsIGRhdGFJZCwgZmlsdGVyLCBsYXllcnMsIGRhdGFDb250YWluZXIpIHtcbiAgLy8gZmllbGQgY291bGQgYmUgbnVsbCBpbiBwb2x5Z29uIGZpbHRlclxuICBjb25zdCB2YWx1ZUFjY2Vzc29yID0gZmllbGQgPyBmaWVsZC52YWx1ZUFjY2Vzc29yIDogZGF0YSA9PiBudWxsO1xuICBjb25zdCBkZWZhdWx0RnVuYyA9IGQgPT4gdHJ1ZTtcblxuICBzd2l0Y2ggKGZpbHRlci50eXBlKSB7XG4gICAgY2FzZSBGSUxURVJfVFlQRVMucmFuZ2U6XG4gICAgICByZXR1cm4gZGF0YSA9PiBpc0luUmFuZ2UodmFsdWVBY2Nlc3NvcihkYXRhKSwgZmlsdGVyLnZhbHVlKTtcbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5tdWx0aVNlbGVjdDpcbiAgICAgIHJldHVybiBkYXRhID0+IGZpbHRlci52YWx1ZS5pbmNsdWRlcyh2YWx1ZUFjY2Vzc29yKGRhdGEpKTtcbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5zZWxlY3Q6XG4gICAgICByZXR1cm4gZGF0YSA9PiB2YWx1ZUFjY2Vzc29yKGRhdGEpID09PSBmaWx0ZXIudmFsdWU7XG4gICAgY2FzZSBGSUxURVJfVFlQRVMudGltZVJhbmdlOlxuICAgICAgaWYgKCFmaWVsZCkge1xuICAgICAgICByZXR1cm4gZGVmYXVsdEZ1bmM7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXBwZWRWYWx1ZSA9IGdldChmaWVsZCwgWydmaWx0ZXJQcm9wcycsICdtYXBwZWRWYWx1ZSddKTtcbiAgICAgIGNvbnN0IGFjY2Vzc29yID0gQXJyYXkuaXNBcnJheShtYXBwZWRWYWx1ZSlcbiAgICAgICAgPyBkYXRhID0+IG1hcHBlZFZhbHVlW2RhdGEuaW5kZXhdXG4gICAgICAgIDogZGF0YSA9PiB0aW1lVG9Vbml4TWlsbGkodmFsdWVBY2Nlc3NvcihkYXRhKSwgZmllbGQuZm9ybWF0KTtcbiAgICAgIHJldHVybiBkYXRhID0+IGlzSW5SYW5nZShhY2Nlc3NvcihkYXRhKSwgZmlsdGVyLnZhbHVlKTtcbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5wb2x5Z29uOlxuICAgICAgaWYgKCFsYXllcnMgfHwgIWxheWVycy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRGdW5jO1xuICAgICAgfVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgbGF5ZXJGaWx0ZXJGdW5jdGlvbnMgPSBmaWx0ZXIubGF5ZXJJZFxuICAgICAgICAubWFwKGlkID0+IGxheWVycy5maW5kKGwgPT4gbC5pZCA9PT0gaWQpKVxuICAgICAgICAuZmlsdGVyKGwgPT4gbCAmJiBsLmNvbmZpZy5kYXRhSWQgPT09IGRhdGFJZClcbiAgICAgICAgLm1hcChsYXllciA9PiBnZXRQb2x5Z29uRmlsdGVyRnVuY3RvcihsYXllciwgZmlsdGVyLCBkYXRhQ29udGFpbmVyKSk7XG5cbiAgICAgIHJldHVybiBkYXRhID0+IGxheWVyRmlsdGVyRnVuY3Rpb25zLmV2ZXJ5KGZpbHRlckZ1bmMgPT4gZmlsdGVyRnVuYyhkYXRhKSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkZWZhdWx0RnVuYztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlRmlsdGVyRGF0YUlkKGRhdGFJZCkge1xuICByZXR1cm4gZ2V0RGVmYXVsdEZpbHRlcihkYXRhSWQpO1xufVxuXG4vKipcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLmZpbHRlckRhdGFCeUZpbHRlclR5cGVzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyRGF0YUJ5RmlsdGVyVHlwZXMoXG4gIHtkeW5hbWljRG9tYWluRmlsdGVycywgY3B1RmlsdGVycywgZmlsdGVyRnVuY3N9LFxuICBkYXRhQ29udGFpbmVyXG4pIHtcbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIC4uLihkeW5hbWljRG9tYWluRmlsdGVycyA/IHtmaWx0ZXJlZEluZGV4Rm9yRG9tYWluOiBbXX0gOiB7fSksXG4gICAgLi4uKGNwdUZpbHRlcnMgPyB7ZmlsdGVyZWRJbmRleDogW119IDoge30pXG4gIH07XG5cbiAgY29uc3QgZmlsdGVyQ29udGV4dCA9IHtpbmRleDogLTEsIGRhdGFDb250YWluZXJ9O1xuICBjb25zdCBmaWx0ZXJGdW5jQ2FsbGVyID0gZmlsdGVyID0+IGZpbHRlckZ1bmNzW2ZpbHRlci5pZF0oZmlsdGVyQ29udGV4dCk7XG5cbiAgY29uc3QgbnVtUm93cyA9IGRhdGFDb250YWluZXIubnVtUm93cygpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVJvd3M7ICsraSkge1xuICAgIGZpbHRlckNvbnRleHQuaW5kZXggPSBpO1xuXG4gICAgY29uc3QgbWF0Y2hGb3JEb21haW4gPSBkeW5hbWljRG9tYWluRmlsdGVycyAmJiBkeW5hbWljRG9tYWluRmlsdGVycy5ldmVyeShmaWx0ZXJGdW5jQ2FsbGVyKTtcbiAgICBpZiAobWF0Y2hGb3JEb21haW4pIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJlc3VsdC5maWx0ZXJlZEluZGV4Rm9yRG9tYWluLnB1c2goZmlsdGVyQ29udGV4dC5pbmRleCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2hGb3JSZW5kZXIgPSBjcHVGaWx0ZXJzICYmIGNwdUZpbHRlcnMuZXZlcnkoZmlsdGVyRnVuY0NhbGxlcik7XG4gICAgaWYgKG1hdGNoRm9yUmVuZGVyKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXN1bHQuZmlsdGVyZWRJbmRleC5wdXNoKGZpbHRlckNvbnRleHQuaW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogR2V0IGEgcmVjb3JkIG9mIGZpbHRlcnMgYmFzZWQgb24gZG9tYWluIHR5cGUgYW5kIGdwdSAvIGNwdVxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuZ2V0RmlsdGVyUmVjb3JkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsdGVyUmVjb3JkKGRhdGFJZCwgZmlsdGVycywgb3B0ID0ge30pIHtcbiAgLyoqXG4gICAqIEB0eXBlIHtGaWx0ZXJSZWNvcmR9XG4gICAqL1xuICBjb25zdCBmaWx0ZXJSZWNvcmQgPSB7XG4gICAgZHluYW1pY0RvbWFpbjogW10sXG4gICAgZml4ZWREb21haW46IFtdLFxuICAgIGNwdTogW10sXG4gICAgZ3B1OiBbXVxuICB9O1xuXG4gIGZpbHRlcnMuZm9yRWFjaChmID0+IHtcbiAgICBpZiAoaXNWYWxpZEZpbHRlclZhbHVlKGYudHlwZSwgZi52YWx1ZSkgJiYgdG9BcnJheShmLmRhdGFJZCkuaW5jbHVkZXMoZGF0YUlkKSkge1xuICAgICAgKGYuZml4ZWREb21haW4gfHwgb3B0Lmlnbm9yZURvbWFpblxuICAgICAgICA/IGZpbHRlclJlY29yZC5maXhlZERvbWFpblxuICAgICAgICA6IGZpbHRlclJlY29yZC5keW5hbWljRG9tYWluXG4gICAgICApLnB1c2goZik7XG5cbiAgICAgIChmLmdwdSAmJiAhb3B0LmNwdU9ubHkgPyBmaWx0ZXJSZWNvcmQuZ3B1IDogZmlsdGVyUmVjb3JkLmNwdSkucHVzaChmKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBmaWx0ZXJSZWNvcmQ7XG59XG5cbi8qKlxuICogQ29tcGFyZSBmaWx0ZXIgcmVjb3JkcyB0byBnZXQgd2hhdCBoYXMgY2hhbmdlZFxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuZGlmZkZpbHRlcnN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmRmlsdGVycyhmaWx0ZXJSZWNvcmQsIG9sZEZpbHRlclJlY29yZCA9IHt9KSB7XG4gIGxldCBmaWx0ZXJDaGFuZ2VkID0ge307XG5cbiAgT2JqZWN0LmVudHJpZXMoZmlsdGVyUmVjb3JkKS5mb3JFYWNoKChbcmVjb3JkLCBpdGVtc10pID0+IHtcbiAgICBpdGVtcy5mb3JFYWNoKGZpbHRlciA9PiB7XG4gICAgICBjb25zdCBvbGRGaWx0ZXIgPSAob2xkRmlsdGVyUmVjb3JkW3JlY29yZF0gfHwgW10pLmZpbmQoZiA9PiBmLmlkID09PSBmaWx0ZXIuaWQpO1xuXG4gICAgICBpZiAoIW9sZEZpbHRlcikge1xuICAgICAgICAvLyBhZGRlZFxuICAgICAgICBmaWx0ZXJDaGFuZ2VkID0gc2V0KFtyZWNvcmQsIGZpbHRlci5pZF0sICdhZGRlZCcsIGZpbHRlckNoYW5nZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY2hlY2sgIHdoYXQgaGFzIGNoYW5nZWRcbiAgICAgICAgWyduYW1lJywgJ3ZhbHVlJywgJ2RhdGFJZCddLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICAgICAgaWYgKGZpbHRlcltwcm9wXSAhPT0gb2xkRmlsdGVyW3Byb3BdKSB7XG4gICAgICAgICAgICBmaWx0ZXJDaGFuZ2VkID0gc2V0KFtyZWNvcmQsIGZpbHRlci5pZF0sIGAke3Byb3B9X2NoYW5nZWRgLCBmaWx0ZXJDaGFuZ2VkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgKG9sZEZpbHRlclJlY29yZFtyZWNvcmRdIHx8IFtdKS5mb3JFYWNoKG9sZEZpbHRlciA9PiB7XG4gICAgICAvLyBkZWxldGVkXG4gICAgICBpZiAoIWl0ZW1zLmZpbmQoZiA9PiBmLmlkID09PSBvbGRGaWx0ZXIuaWQpKSB7XG4gICAgICAgIGZpbHRlckNoYW5nZWQgPSBzZXQoW3JlY29yZCwgb2xkRmlsdGVyLmlkXSwgJ2RlbGV0ZWQnLCBmaWx0ZXJDaGFuZ2VkKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghZmlsdGVyQ2hhbmdlZFtyZWNvcmRdKSB7XG4gICAgICBmaWx0ZXJDaGFuZ2VkW3JlY29yZF0gPSBudWxsO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gZmlsdGVyQ2hhbmdlZDtcbn1cbi8qKlxuICogQ2FsbCBieSBwYXJzaW5nIGZpbHRlcnMgZnJvbSBVUkxcbiAqIENoZWNrIGlmIHZhbHVlIG9mIGZpbHRlciB3aXRoaW4gZmlsdGVyIGRvbWFpbiwgaWYgbm90IGFkanVzdCBpdCB0byBtYXRjaFxuICogZmlsdGVyIGRvbWFpblxuICpcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLmFkanVzdFZhbHVlVG9GaWx0ZXJEb21haW59XG4gKiBAcmV0dXJucyB2YWx1ZSAtIGFkanVzdGVkIHZhbHVlIHRvIG1hdGNoIGZpbHRlciBvciBudWxsIHRvIHJlbW92ZSBmaWx0ZXJcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkanVzdFZhbHVlVG9GaWx0ZXJEb21haW4odmFsdWUsIHtkb21haW4sIHR5cGV9KSB7XG4gIGlmICghZG9tYWluIHx8ICF0eXBlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBGSUxURVJfVFlQRVMucmFuZ2U6XG4gICAgY2FzZSBGSUxURVJfVFlQRVMudGltZVJhbmdlOlxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSB8fCB2YWx1ZS5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgcmV0dXJuIGRvbWFpbi5tYXAoZCA9PiBkKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbHVlLm1hcCgoZCwgaSkgPT4gKG5vdE51bGxvclVuZGVmaW5lZChkKSAmJiBpc0luUmFuZ2UoZCwgZG9tYWluKSA/IGQgOiBkb21haW5baV0pKTtcblxuICAgIGNhc2UgRklMVEVSX1RZUEVTLm11bHRpU2VsZWN0OlxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBjb25zdCBmaWx0ZXJlZFZhbHVlID0gdmFsdWUuZmlsdGVyKGQgPT4gZG9tYWluLmluY2x1ZGVzKGQpKTtcbiAgICAgIHJldHVybiBmaWx0ZXJlZFZhbHVlLmxlbmd0aCA/IGZpbHRlcmVkVmFsdWUgOiBbXTtcblxuICAgIGNhc2UgRklMVEVSX1RZUEVTLnNlbGVjdDpcbiAgICAgIHJldHVybiBkb21haW4uaW5jbHVkZXModmFsdWUpID8gdmFsdWUgOiB0cnVlO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG4vKiBlc2xpbnQtZW5hYmxlIGNvbXBsZXhpdHkgKi9cblxuLyoqXG4gKiBDYWxjdWxhdGUgbnVtZXJpYyBkb21haW4gYW5kIHN1aXRhYmxlIHN0ZXBcbiAqXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9maWx0ZXItdXRpbHMnKS5nZXROdW1lcmljRmllbGREb21haW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROdW1lcmljRmllbGREb21haW4oZGF0YUNvbnRhaW5lciwgdmFsdWVBY2Nlc3Nvcikge1xuICBsZXQgZG9tYWluID0gWzAsIDFdO1xuICBsZXQgc3RlcCA9IDAuMTtcblxuICBjb25zdCBtYXBwZWRWYWx1ZSA9IGRhdGFDb250YWluZXIubWFwSW5kZXgodmFsdWVBY2Nlc3Nvcik7XG5cbiAgaWYgKGRhdGFDb250YWluZXIubnVtUm93cygpID4gMSkge1xuICAgIGRvbWFpbiA9IFNjYWxlVXRpbHMuZ2V0TGluZWFyRG9tYWluKG1hcHBlZFZhbHVlKTtcbiAgICBjb25zdCBkaWZmID0gZG9tYWluWzFdIC0gZG9tYWluWzBdO1xuXG4gICAgLy8gaW4gY2FzZSBlcXVhbCBkb21haW4sIFs5NiwgOTZdLCB3aGljaCB3aWxsIGJyZWFrIHF1YW50aXplIHNjYWxlXG4gICAgaWYgKCFkaWZmKSB7XG4gICAgICBkb21haW5bMV0gPSBkb21haW5bMF0gKyAxO1xuICAgIH1cblxuICAgIHN0ZXAgPSBnZXROdW1lcmljU3RlcFNpemUoZGlmZikgfHwgc3RlcDtcbiAgICBkb21haW5bMF0gPSBmb3JtYXROdW1iZXJCeVN0ZXAoZG9tYWluWzBdLCBzdGVwLCAnZmxvb3InKTtcbiAgICBkb21haW5bMV0gPSBmb3JtYXROdW1iZXJCeVN0ZXAoZG9tYWluWzFdLCBzdGVwLCAnY2VpbCcpO1xuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCB7aGlzdG9ncmFtLCBlbmxhcmdlZEhpc3RvZ3JhbX0gPSBnZXRIaXN0b2dyYW0oZG9tYWluLCBtYXBwZWRWYWx1ZSk7XG5cbiAgcmV0dXJuIHtkb21haW4sIHN0ZXAsIGhpc3RvZ3JhbSwgZW5sYXJnZWRIaXN0b2dyYW19O1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBzdGVwIHNpemUgZm9yIHJhbmdlIGFuZCB0aW1lcmFuZ2UgZmlsdGVyXG4gKlxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuZ2V0TnVtZXJpY1N0ZXBTaXplfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TnVtZXJpY1N0ZXBTaXplKGRpZmYpIHtcbiAgZGlmZiA9IE1hdGguYWJzKGRpZmYpO1xuXG4gIGlmIChkaWZmID4gMTAwKSB7XG4gICAgcmV0dXJuIDE7XG4gIH0gZWxzZSBpZiAoZGlmZiA+IDMpIHtcbiAgICByZXR1cm4gMC4wMTtcbiAgfSBlbHNlIGlmIChkaWZmID4gMSkge1xuICAgIHJldHVybiAwLjAwMTtcbiAgfVxuICAvLyBUcnkgdG8gZ2V0IGF0IGxlYXN0IDEwMDAgc3RlcHMgLSBhbmQga2VlcCB0aGUgc3RlcCBzaXplIGJlbG93IHRoYXQgb2ZcbiAgLy8gdGhlIChkaWZmID4gMSkgY2FzZS5cbiAgY29uc3QgeCA9IGRpZmYgLyAxMDAwO1xuICAvLyBGaW5kIHRoZSBleHBvbmVudCBhbmQgdHJ1bmNhdGUgdG8gMTAgdG8gdGhlIHBvd2VyIG9mIHRoYXQgZXhwb25lbnRcblxuICBjb25zdCBleHBvbmVudGlhbEZvcm0gPSB4LnRvRXhwb25lbnRpYWwoKTtcbiAgY29uc3QgZXhwb25lbnQgPSBwYXJzZUZsb2F0KGV4cG9uZW50aWFsRm9ybS5zcGxpdCgnZScpWzFdKTtcblxuICAvLyBHZXR0aW5nIHJlYWR5IGZvciBub2RlIDEyXG4gIC8vIHRoaXMgaXMgd2h5IHdlIG5lZWQgZGVjaW1hbC5qc1xuICAvLyBNYXRoLnBvdygxMCwgLTUpID0gMC4wMDAwMDk5OTk5OTk5OTk5OTk5OTlcbiAgLy8gdGhlIGFib3ZlIHJlc3VsdCBzaG93cyBpbiBicm93c2VyIGFuZCBub2RlIDEwXG4gIC8vIG5vZGUgMTIgYmVoYXZlcyBjb3JyZWN0bHlcbiAgcmV0dXJuIG5ldyBEZWNpbWFsKDEwKS5wb3coZXhwb25lbnQpLnRvTnVtYmVyKCk7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHRpbWVzdGFtcCBkb21haW4gYW5kIHN1aXRhYmxlIHN0ZXBcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLmdldFRpbWVzdGFtcEZpZWxkRG9tYWlufVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGltZXN0YW1wRmllbGREb21haW4oZGF0YUNvbnRhaW5lciwgdmFsdWVBY2Nlc3Nvcikge1xuICAvLyB0byBhdm9pZCBjb252ZXJ0aW5nIHN0cmluZyBmb3JtYXQgdGltZSB0byBlcG9jaFxuICAvLyBldmVyeSB0aW1lIHdlIGNvbXBhcmUgd2Ugc3RvcmUgYSB2YWx1ZSBtYXBwZWQgdG8gaW50IGluIGZpbHRlciBkb21haW5cblxuICBjb25zdCBtYXBwZWRWYWx1ZSA9IGRhdGFDb250YWluZXIubWFwSW5kZXgodmFsdWVBY2Nlc3Nvcik7XG4gIGNvbnN0IGRvbWFpbiA9IFNjYWxlVXRpbHMuZ2V0TGluZWFyRG9tYWluKG1hcHBlZFZhbHVlKTtcbiAgY29uc3QgZGVmYXVsdFRpbWVGb3JtYXQgPSBnZXRUaW1lV2lkZ2V0VGl0bGVGb3JtYXR0ZXIoZG9tYWluKTtcblxuICBsZXQgc3RlcCA9IDAuMDE7XG5cbiAgY29uc3QgZGlmZiA9IGRvbWFpblsxXSAtIGRvbWFpblswXTtcbiAgY29uc3QgZW50cnkgPSBUaW1lc3RhbXBTdGVwTWFwLmZpbmQoZiA9PiBmLm1heCA+PSBkaWZmKTtcbiAgaWYgKGVudHJ5KSB7XG4gICAgc3RlcCA9IGVudHJ5LnN0ZXA7XG4gIH1cblxuICBjb25zdCB7aGlzdG9ncmFtLCBlbmxhcmdlZEhpc3RvZ3JhbX0gPSBnZXRIaXN0b2dyYW0oZG9tYWluLCBtYXBwZWRWYWx1ZSk7XG5cbiAgcmV0dXJuIHtcbiAgICBkb21haW4sXG4gICAgc3RlcCxcbiAgICBtYXBwZWRWYWx1ZSxcbiAgICBoaXN0b2dyYW0sXG4gICAgZW5sYXJnZWRIaXN0b2dyYW0sXG4gICAgZGVmYXVsdFRpbWVGb3JtYXRcbiAgfTtcbn1cblxuLyoqXG4gKlxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuaGlzdG9ncmFtQ29uc3RydWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gaGlzdG9ncmFtQ29uc3RydWN0KGRvbWFpbiwgbWFwcGVkVmFsdWUsIGJpbnMpIHtcbiAgcmV0dXJuIGQzSGlzdG9ncmFtKClcbiAgICAudGhyZXNob2xkcyh0aWNrcyhkb21haW5bMF0sIGRvbWFpblsxXSwgYmlucykpXG4gICAgLmRvbWFpbihkb21haW4pKG1hcHBlZFZhbHVlKVxuICAgIC5tYXAoYmluID0+ICh7XG4gICAgICBjb3VudDogYmluLmxlbmd0aCxcbiAgICAgIHgwOiBiaW4ueDAsXG4gICAgICB4MTogYmluLngxXG4gICAgfSkpO1xufVxuLyoqXG4gKiBDYWxjdWxhdGUgaGlzdG9ncmFtIGZyb20gZG9tYWluIGFuZCBhcnJheSBvZiB2YWx1ZXNcbiAqXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9maWx0ZXItdXRpbHMnKS5nZXRIaXN0b2dyYW19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIaXN0b2dyYW0oZG9tYWluLCBtYXBwZWRWYWx1ZSkge1xuICBjb25zdCBoaXN0b2dyYW0gPSBoaXN0b2dyYW1Db25zdHJ1Y3QoZG9tYWluLCBtYXBwZWRWYWx1ZSwgaGlzdG9ncmFtQmlucyk7XG4gIGNvbnN0IGVubGFyZ2VkSGlzdG9ncmFtID0gaGlzdG9ncmFtQ29uc3RydWN0KGRvbWFpbiwgbWFwcGVkVmFsdWUsIGVubGFyZ2VkSGlzdG9ncmFtQmlucyk7XG5cbiAgcmV0dXJuIHtoaXN0b2dyYW0sIGVubGFyZ2VkSGlzdG9ncmFtfTtcbn1cblxuLyoqXG4gKiByb3VuZCBudW1iZXIgYmFzZWQgb24gc3RlcFxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSB2YWxcbiAqIEBwYXJhbSB7TnVtYmVyfSBzdGVwXG4gKiBAcGFyYW0ge3N0cmluZ30gYm91bmRcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHJvdW5kZWQgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXROdW1iZXJCeVN0ZXAodmFsLCBzdGVwLCBib3VuZCkge1xuICBpZiAoYm91bmQgPT09ICdmbG9vcicpIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcih2YWwgKiAoMSAvIHN0ZXApKSAvICgxIC8gc3RlcCk7XG4gIH1cblxuICByZXR1cm4gTWF0aC5jZWlsKHZhbCAqICgxIC8gc3RlcCkpIC8gKDEgLyBzdGVwKTtcbn1cblxuLyoqXG4gKlxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuaXNJblJhbmdlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJblJhbmdlKHZhbCwgZG9tYWluKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShkb21haW4pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHZhbCA+PSBkb21haW5bMF0gJiYgdmFsIDw9IGRvbWFpblsxXTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBwb2ludCBpcyB3aXRoaW4gdGhlIHByb3ZpZGVkIHBvbHlnb25cbiAqXG4gKiBAcGFyYW0gcG9pbnQgYXMgaW5wdXQgc2VhcmNoIFtsYXQsIGxuZ11cbiAqIEBwYXJhbSBwb2x5Z29uIFBvaW50cyBtdXN0IGJlIHdpdGhpbiB0aGVzZSAoTXVsdGkpUG9seWdvbihzKVxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW5Qb2x5Z29uKHBvaW50LCBwb2x5Z29uKSB7XG4gIHJldHVybiBib29sZWFuV2l0aGluKHR1cmZQb2ludChwb2ludCksIHBvbHlnb24pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRUaW1lRG9tYWluKGRvbWFpbikge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShkb21haW4pICYmIGRvbWFpbi5ldmVyeShOdW1iZXIuaXNGaW5pdGUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFRpbWVXaWRnZXRUaXRsZUZvcm1hdHRlcihkb21haW4pIHtcbiAgaWYgKCFpc1ZhbGlkVGltZURvbWFpbihkb21haW4pKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZG9tYWluWzFdIC0gZG9tYWluWzBdO1xuXG4gIC8vIExvY2FsIGF3YXJlIGZvcm1hdHNcbiAgLy8gaHR0cHM6Ly9tb21lbnRqcy5jb20vZG9jcy8jL3BhcnNpbmcvc3RyaW5nLWZvcm1hdFxuICByZXR1cm4gZGlmZiA+IGR1cmF0aW9uWWVhciA/ICdMJyA6IGRpZmYgPiBkdXJhdGlvbkRheSA/ICdMIExUJyA6ICdMIExUUyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaW1lV2lkZ2V0SGludEZvcm1hdHRlcihkb21haW4pIHtcbiAgaWYgKCFpc1ZhbGlkVGltZURvbWFpbihkb21haW4pKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZG9tYWluWzFdIC0gZG9tYWluWzBdO1xuICByZXR1cm4gZGlmZiA+IGR1cmF0aW9uV2Vla1xuICAgID8gJ0wnXG4gICAgOiBkaWZmID4gZHVyYXRpb25EYXlcbiAgICA/ICdMIExUJ1xuICAgIDogZGlmZiA+IGR1cmF0aW9uSG91clxuICAgID8gJ0xUJ1xuICAgIDogJ0xUUyc7XG59XG5cbi8qKlxuICogU2FuaXR5IGNoZWNrIG9uIGZpbHRlcnMgdG8gcHJlcGFyZSBmb3Igc2F2ZVxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuaXNWYWxpZEZpbHRlclZhbHVlfVxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEZpbHRlclZhbHVlKHR5cGUsIHZhbHVlKSB7XG4gIGlmICghdHlwZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5zZWxlY3Q6XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlO1xuXG4gICAgY2FzZSBGSUxURVJfVFlQRVMucmFuZ2U6XG4gICAgY2FzZSBGSUxURVJfVFlQRVMudGltZVJhbmdlOlxuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmV2ZXJ5KHYgPT4gdiAhPT0gbnVsbCAmJiAhaXNOYU4odikpO1xuXG4gICAgY2FzZSBGSUxURVJfVFlQRVMubXVsdGlTZWxlY3Q6XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgQm9vbGVhbih2YWx1ZS5sZW5ndGgpO1xuXG4gICAgY2FzZSBGSUxURVJfVFlQRVMuaW5wdXQ6XG4gICAgICByZXR1cm4gQm9vbGVhbih2YWx1ZS5sZW5ndGgpO1xuXG4gICAgY2FzZSBGSUxURVJfVFlQRVMucG9seWdvbjpcbiAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZ2V0KHZhbHVlLCBbJ2dlb21ldHJ5JywgJ2Nvb3JkaW5hdGVzJ10pO1xuICAgICAgcmV0dXJuIEJvb2xlYW4odmFsdWUgJiYgdmFsdWUuaWQgJiYgY29vcmRpbmF0ZXMpO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKlxuICpcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLmdldEZpbHRlclBsb3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWx0ZXJQbG90KGZpbHRlciwgZGF0YXNldCkge1xuICBpZiAoZmlsdGVyLnBsb3RUeXBlID09PSBQTE9UX1RZUEVTLmhpc3RvZ3JhbSB8fCAhZmlsdGVyLnlBeGlzKSB7XG4gICAgLy8gaGlzdG9ncmFtIHNob3VsZCBiZSBjYWxjdWxhdGVkIHdoZW4gY3JlYXRlIGZpbHRlclxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IHttYXBwZWRWYWx1ZSA9IFtdfSA9IGZpbHRlcjtcbiAgY29uc3Qge3lBeGlzfSA9IGZpbHRlcjtcbiAgY29uc3QgZmllbGRJZHggPSBkYXRhc2V0LmdldENvbHVtbkZpZWxkSWR4KHlBeGlzLm5hbWUpO1xuICBpZiAoZmllbGRJZHggPCAwKSB7XG4gICAgQ29uc29sZS53YXJuKGB5QXhpcyAke3lBeGlzLm5hbWV9IGRvZXMgbm90IGV4aXN0IGluIGRhdGFzZXRgKTtcbiAgICByZXR1cm4ge2xpbmVDaGFydDoge30sIHlBeGlzfTtcbiAgfVxuXG4gIC8vIHJldHVybiBsaW5lQ2hhcnRcbiAgY29uc3Qgc2VyaWVzID0gZGF0YXNldC5kYXRhQ29udGFpbmVyXG4gICAgLm1hcChcbiAgICAgIChyb3csIHJvd0luZGV4KSA9PiAoe1xuICAgICAgICB4OiBtYXBwZWRWYWx1ZVtyb3dJbmRleF0sXG4gICAgICAgIHk6IHJvdy52YWx1ZUF0KGZpZWxkSWR4KVxuICAgICAgfSksXG4gICAgICB0cnVlXG4gICAgKVxuICAgIC5maWx0ZXIoKHt4LCB5fSkgPT4gTnVtYmVyLmlzRmluaXRlKHgpICYmIE51bWJlci5pc0Zpbml0ZSh5KSlcbiAgICAuc29ydCgoYSwgYikgPT4gYXNjZW5kaW5nKGEueCwgYi54KSk7XG5cbiAgY29uc3QgeURvbWFpbiA9IGV4dGVudChzZXJpZXMsIGQgPT4gZC55KTtcbiAgY29uc3QgeERvbWFpbiA9IFtzZXJpZXNbMF0ueCwgc2VyaWVzW3Nlcmllcy5sZW5ndGggLSAxXS54XTtcblxuICByZXR1cm4ge2xpbmVDaGFydDoge3NlcmllcywgeURvbWFpbiwgeERvbWFpbn0sIHlBeGlzfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRGaWx0ZXJQbG90VHlwZShmaWx0ZXIpIHtcbiAgY29uc3QgZmlsdGVyUGxvdFR5cGVzID0gU3VwcG9ydGVkUGxvdFR5cGVbZmlsdGVyLnR5cGVdO1xuICBpZiAoIWZpbHRlclBsb3RUeXBlcykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKCFmaWx0ZXIueUF4aXMpIHtcbiAgICByZXR1cm4gZmlsdGVyUGxvdFR5cGVzLmRlZmF1bHQ7XG4gIH1cblxuICByZXR1cm4gZmlsdGVyUGxvdFR5cGVzW2ZpbHRlci55QXhpcy50eXBlXSB8fCBudWxsO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gZGF0YXNldElkcyBsaXN0IG9mIGRhdGFzZXQgaWRzIHRvIGJlIGZpbHRlcmVkXG4gKiBAcGFyYW0gZGF0YXNldHMgYWxsIGRhdGFzZXRzXG4gKiBAcGFyYW0gZmlsdGVycyBhbGwgZmlsdGVycyB0byBiZSBhcHBsaWVkIHRvIGRhdGFzZXRzXG4gKiBAcmV0dXJuIGRhdGFzZXRzIC0gbmV3IHVwZGF0ZWQgZGF0YXNldHNcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLmFwcGx5RmlsdGVyc1RvRGF0YXNldHN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUZpbHRlcnNUb0RhdGFzZXRzKGRhdGFzZXRJZHMsIGRhdGFzZXRzLCBmaWx0ZXJzLCBsYXllcnMpIHtcbiAgY29uc3QgZGF0YUlkcyA9IHRvQXJyYXkoZGF0YXNldElkcyk7XG4gIHJldHVybiBkYXRhSWRzLnJlZHVjZSgoYWNjLCBkYXRhSWQpID0+IHtcbiAgICBjb25zdCBsYXllcnNUb0ZpbHRlciA9IChsYXllcnMgfHwgW10pLmZpbHRlcihsID0+IGwuY29uZmlnLmRhdGFJZCA9PT0gZGF0YUlkKTtcbiAgICBjb25zdCBhcHBsaWVkRmlsdGVycyA9IGZpbHRlcnMuZmlsdGVyKGQgPT4gc2hvdWxkQXBwbHlGaWx0ZXIoZCwgZGF0YUlkKSk7XG4gICAgY29uc3QgdGFibGUgPSBkYXRhc2V0c1tkYXRhSWRdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmFjYyxcbiAgICAgIFtkYXRhSWRdOiB0YWJsZS5maWx0ZXJUYWJsZShhcHBsaWVkRmlsdGVycywgbGF5ZXJzVG9GaWx0ZXIsIHt9KVxuICAgIH07XG4gIH0sIGRhdGFzZXRzKTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgbmV3IGZpZWxkIG5hbWUgdmFsdWUgdG8gZmllbHRlciBhbmQgdXBkYXRlIGJvdGggZmlsdGVyIGFuZCBkYXRhc2V0XG4gKiBAcGFyYW0gZmlsdGVyIC0gdG8gYmUgYXBwbGllZCB0aGUgbmV3IGZpZWxkIG5hbWUgb25cbiAqIEBwYXJhbSBkYXRhc2V0IC0gZGF0YXNldCB0aGUgZmllbGQgYmVsb25ncyB0b1xuICogQHBhcmFtIGZpZWxkTmFtZSAtIGZpZWxkLm5hbWVcbiAqIEBwYXJhbSBmaWx0ZXJEYXRhc2V0SW5kZXggLSBmaWVsZC5uYW1lXG4gKiBAcGFyYW0gb3B0aW9uXG4gKiBAcmV0dXJuIC0ge2ZpbHRlciwgZGF0YXNldHN9XG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9maWx0ZXItdXRpbHMnKS5hcHBseUZpbHRlckZpZWxkTmFtZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RmlsdGVyRmllbGROYW1lKGZpbHRlciwgZGF0YXNldCwgZmllbGROYW1lLCBmaWx0ZXJEYXRhc2V0SW5kZXggPSAwLCBvcHRpb24pIHtcbiAgLy8gdXNpbmcgZmlsdGVyRGF0YXNldEluZGV4IHdlIGNhbiBmaWx0ZXIgb25seSB0aGUgc3BlY2lmaWVkIGRhdGFzZXRcbiAgY29uc3QgbWVyZ2VEb21haW4gPSBvcHRpb24gJiYgb3B0aW9uLmhhc093blByb3BlcnR5KCdtZXJnZURvbWFpbicpID8gb3B0aW9uLm1lcmdlRG9tYWluIDogZmFsc2U7XG5cbiAgY29uc3QgZmllbGRJbmRleCA9IGRhdGFzZXQuZ2V0Q29sdW1uRmllbGRJZHgoZmllbGROYW1lKTtcbiAgLy8gaWYgbm8gZmllbGQgd2l0aCBzYW1lIG5hbWUgaXMgZm91bmQsIG1vdmUgdG8gdGhlIG5leHQgZGF0YXNldHNcbiAgaWYgKGZpZWxkSW5kZXggPT09IC0xKSB7XG4gICAgLy8gdGhyb3cgbmV3IEVycm9yKGBmaWVsZEluZGV4IG5vdCBmb3VuZC4gRGF0YXNldCBtdXN0IGNvbnRhaW4gYSBwcm9wZXJ0eSB3aXRoIG5hbWU6ICR7ZmllbGROYW1lfWApO1xuICAgIHJldHVybiB7ZmlsdGVyOiBudWxsLCBkYXRhc2V0fTtcbiAgfVxuXG4gIC8vIFRPRE86IHZhbGlkYXRlIGZpZWxkIHR5cGVcbiAgY29uc3QgZmlsdGVyUHJvcHMgPSBkYXRhc2V0LmdldENvbHVtbkZpbHRlclByb3BzKGZpZWxkTmFtZSk7XG5cbiAgY29uc3QgbmV3RmlsdGVyID0ge1xuICAgIC4uLihtZXJnZURvbWFpbiA/IG1lcmdlRmlsdGVyRG9tYWluU3RlcChmaWx0ZXIsIGZpbHRlclByb3BzKSA6IHsuLi5maWx0ZXIsIC4uLmZpbHRlclByb3BzfSksXG4gICAgbmFtZTogT2JqZWN0LmFzc2lnbihbLi4udG9BcnJheShmaWx0ZXIubmFtZSldLCB7W2ZpbHRlckRhdGFzZXRJbmRleF06IGZpZWxkTmFtZX0pLFxuICAgIGZpZWxkSWR4OiBPYmplY3QuYXNzaWduKFsuLi50b0FycmF5KGZpbHRlci5maWVsZElkeCldLCB7XG4gICAgICBbZmlsdGVyRGF0YXNldEluZGV4XTogZmllbGRJbmRleFxuICAgIH0pLFxuICAgIC8vIFRPRE8sIHNpbmNlIHdlIGFsbG93IHRvIGFkZCBtdWx0aXBsZSBmaWVsZHMgdG8gYSBmaWx0ZXIgd2UgY2FuIG5vIGxvbmdlciBmcmVlemUgdGhlIGZpbHRlclxuICAgIGZyZWV6ZTogdHJ1ZVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgZmlsdGVyOiBuZXdGaWx0ZXIsXG4gICAgZGF0YXNldFxuICB9O1xufVxuXG4vKipcbiAqIE1lcmdlIG9uZSBmaWx0ZXIgd2l0aCBvdGhlciBmaWx0ZXIgcHJvcCBkb21haW5cbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLm1lcmdlRmlsdGVyRG9tYWluU3RlcH1cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRmlsdGVyRG9tYWluU3RlcChmaWx0ZXIsIGZpbHRlclByb3BzKSB7XG4gIGlmICghZmlsdGVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoIWZpbHRlclByb3BzKSB7XG4gICAgcmV0dXJuIGZpbHRlcjtcbiAgfVxuXG4gIGlmICgoZmlsdGVyLmZpZWxkVHlwZSAmJiBmaWx0ZXIuZmllbGRUeXBlICE9PSBmaWx0ZXJQcm9wcy5maWVsZFR5cGUpIHx8ICFmaWx0ZXJQcm9wcy5kb21haW4pIHtcbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgY29uc3QgY29tYmluZWREb21haW4gPSAhZmlsdGVyLmRvbWFpblxuICAgID8gZmlsdGVyUHJvcHMuZG9tYWluXG4gICAgOiBbLi4uKGZpbHRlci5kb21haW4gfHwgW10pLCAuLi4oZmlsdGVyUHJvcHMuZG9tYWluIHx8IFtdKV0uc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuXG4gIGNvbnN0IG5ld0ZpbHRlciA9IHtcbiAgICAuLi5maWx0ZXIsXG4gICAgLi4uZmlsdGVyUHJvcHMsXG4gICAgZG9tYWluOiBbY29tYmluZWREb21haW5bMF0sIGNvbWJpbmVkRG9tYWluW2NvbWJpbmVkRG9tYWluLmxlbmd0aCAtIDFdXVxuICB9O1xuXG4gIHN3aXRjaCAoZmlsdGVyUHJvcHMuZmllbGRUeXBlKSB7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuc3RyaW5nOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmRhdGU6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5uZXdGaWx0ZXIsXG4gICAgICAgIGRvbWFpbjogdW5pcXVlKGNvbWJpbmVkRG9tYWluKS5zb3J0KClcbiAgICAgIH07XG5cbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXA6XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBzdGVwID0gZmlsdGVyLnN0ZXAgPCBmaWx0ZXJQcm9wcy5zdGVwID8gZmlsdGVyLnN0ZXAgOiBmaWx0ZXJQcm9wcy5zdGVwO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5uZXdGaWx0ZXIsXG4gICAgICAgIHN0ZXBcbiAgICAgIH07XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMucmVhbDpcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbmV3RmlsdGVyO1xuICB9XG59XG4vKiBlc2xpbnQtZW5hYmxlIGNvbXBsZXhpdHkgKi9cblxuLyoqXG4gKiBHZW5lcmF0ZXMgcG9seWdvbiBmaWx0ZXJcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLmZlYXR1cmVUb0ZpbHRlclZhbHVlfVxuICovXG5leHBvcnQgY29uc3QgZmVhdHVyZVRvRmlsdGVyVmFsdWUgPSAoZmVhdHVyZSwgZmlsdGVySWQsIHByb3BlcnRpZXMgPSB7fSkgPT4gKHtcbiAgLi4uZmVhdHVyZSxcbiAgaWQ6IGZlYXR1cmUuaWQsXG4gIHByb3BlcnRpZXM6IHtcbiAgICAuLi5mZWF0dXJlLnByb3BlcnRpZXMsXG4gICAgLi4ucHJvcGVydGllcyxcbiAgICBmaWx0ZXJJZFxuICB9XG59KTtcblxuLyoqXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9maWx0ZXItdXRpbHMnKS5nZXRGaWx0ZXJJZEluRmVhdHVyZX1cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEZpbHRlcklkSW5GZWF0dXJlID0gZiA9PiBnZXQoZiwgWydwcm9wZXJ0aWVzJywgJ2ZpbHRlcklkJ10pO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBwb2x5Z29uIGZpbHRlclxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuZ2VuZXJhdGVQb2x5Z29uRmlsdGVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVQb2x5Z29uRmlsdGVyKGxheWVycywgZmVhdHVyZSkge1xuICBjb25zdCBkYXRhSWQgPSBsYXllcnMubWFwKGwgPT4gbC5jb25maWcuZGF0YUlkKS5maWx0ZXIoZCA9PiBkKTtcbiAgY29uc3QgbGF5ZXJJZCA9IGxheWVycy5tYXAobCA9PiBsLmlkKTtcbiAgY29uc3QgbmFtZSA9IGxheWVycy5tYXAobCA9PiBsLmNvbmZpZy5sYWJlbCk7XG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgZmlsdGVyID0gZ2V0RGVmYXVsdEZpbHRlcihkYXRhSWQpO1xuICByZXR1cm4ge1xuICAgIC4uLmZpbHRlcixcbiAgICBmaXhlZERvbWFpbjogdHJ1ZSxcbiAgICB0eXBlOiBGSUxURVJfVFlQRVMucG9seWdvbixcbiAgICBuYW1lLFxuICAgIGxheWVySWQsXG4gICAgdmFsdWU6IGZlYXR1cmVUb0ZpbHRlclZhbHVlKGZlYXR1cmUsIGZpbHRlci5pZCwge2lzVmlzaWJsZTogdHJ1ZX0pXG4gIH07XG59XG5cbi8qKlxuICogUnVuIGZpbHRlciBlbnRpcmVseSBvbiBDUFVcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLmZpbHRlckRhdGFzZXRDUFV9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJEYXRhc2V0Q1BVKHN0YXRlLCBkYXRhSWQpIHtcbiAgY29uc3QgZGF0YXNldEZpbHRlcnMgPSBzdGF0ZS5maWx0ZXJzLmZpbHRlcihmID0+IGYuZGF0YUlkLmluY2x1ZGVzKGRhdGFJZCkpO1xuICBjb25zdCBkYXRhc2V0ID0gc3RhdGUuZGF0YXNldHNbZGF0YUlkXTtcblxuICBpZiAoIWRhdGFzZXQpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBjb25zdCBjcHVGaWx0ZXJlZERhdGFzZXQgPSBkYXRhc2V0LmZpbHRlclRhYmxlQ1BVKGRhdGFzZXRGaWx0ZXJzLCBzdGF0ZS5sYXllcnMpO1xuXG4gIHJldHVybiBzZXQoWydkYXRhc2V0cycsIGRhdGFJZF0sIGNwdUZpbHRlcmVkRGF0YXNldCwgc3RhdGUpO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHBhcnNlZCBmaWx0ZXJzIHdpdGggZGF0YXNldHMgYW5kIGFkZCBmaWx0ZXJQcm9wcyB0byBmaWVsZFxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykudmFsaWRhdGVGaWx0ZXJzVXBkYXRlRGF0YXNldHN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZpbHRlcnNVcGRhdGVEYXRhc2V0cyhzdGF0ZSwgZmlsdGVyc1RvVmFsaWRhdGUgPSBbXSkge1xuICBjb25zdCB2YWxpZGF0ZWQgPSBbXTtcbiAgY29uc3QgZmFpbGVkID0gW107XG4gIGNvbnN0IHtkYXRhc2V0c30gPSBzdGF0ZTtcbiAgbGV0IHVwZGF0ZWREYXRhc2V0cyA9IGRhdGFzZXRzO1xuXG4gIC8vIG1lcmdlIGZpbHRlcnNcbiAgZmlsdGVyc1RvVmFsaWRhdGUuZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgIC8vIHdlIGNhbiBvbmx5IGxvb2sgZm9yIGRhdGFzZXRzIGRlZmluZSBpbiB0aGUgZmlsdGVyIGRhdGFJZFxuICAgIGNvbnN0IGRhdGFzZXRJZHMgPSB0b0FycmF5KGZpbHRlci5kYXRhSWQpO1xuXG4gICAgLy8gd2UgY2FuIG1lcmdlIGEgZmlsdGVyIG9ubHkgaWYgYWxsIGRhdGFzZXRzIGluIGZpbHRlci5kYXRhSWQgYXJlIGxvYWRlZFxuICAgIGlmIChkYXRhc2V0SWRzLmV2ZXJ5KGQgPT4gZGF0YXNldHNbZF0pKSB7XG4gICAgICAvLyBhbGwgZGF0YXNldElkcyBpbiBmaWx0ZXIgbXVzdCBiZSBwcmVzZW50IHRoZSBzdGF0ZSBkYXRhc2V0c1xuICAgICAgY29uc3Qge2ZpbHRlcjogdmFsaWRhdGVkRmlsdGVyLCBhcHBseVRvRGF0YXNldHMsIGF1Z21lbnRlZERhdGFzZXRzfSA9IGRhdGFzZXRJZHMucmVkdWNlKFxuICAgICAgICAoYWNjLCBkYXRhc2V0SWQpID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRhc2V0ID0gdXBkYXRlZERhdGFzZXRzW2RhdGFzZXRJZF07XG4gICAgICAgICAgY29uc3QgbGF5ZXJzID0gc3RhdGUubGF5ZXJzLmZpbHRlcihsID0+IGwuY29uZmlnLmRhdGFJZCA9PT0gZGF0YXNldC5pZCk7XG4gICAgICAgICAgY29uc3Qge2ZpbHRlcjogdXBkYXRlZEZpbHRlciwgZGF0YXNldDogdXBkYXRlZERhdGFzZXR9ID0gdmFsaWRhdGVGaWx0ZXJXaXRoRGF0YShcbiAgICAgICAgICAgIGFjYy5hdWdtZW50ZWREYXRhc2V0c1tkYXRhc2V0SWRdIHx8IGRhdGFzZXQsXG4gICAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgICBsYXllcnNcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKHVwZGF0ZWRGaWx0ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgLy8gbWVyZ2UgZmlsdGVyIHByb3BzXG4gICAgICAgICAgICAgIGZpbHRlcjogYWNjLmZpbHRlclxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAuLi5hY2MuZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAuLi5tZXJnZUZpbHRlckRvbWFpblN0ZXAoYWNjLCB1cGRhdGVkRmlsdGVyKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogdXBkYXRlZEZpbHRlcixcblxuICAgICAgICAgICAgICBhcHBseVRvRGF0YXNldHM6IFsuLi5hY2MuYXBwbHlUb0RhdGFzZXRzLCBkYXRhc2V0SWRdLFxuXG4gICAgICAgICAgICAgIGF1Z21lbnRlZERhdGFzZXRzOiB7XG4gICAgICAgICAgICAgICAgLi4uYWNjLmF1Z21lbnRlZERhdGFzZXRzLFxuICAgICAgICAgICAgICAgIFtkYXRhc2V0SWRdOiB1cGRhdGVkRGF0YXNldFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBmaWx0ZXI6IG51bGwsXG4gICAgICAgICAgYXBwbHlUb0RhdGFzZXRzOiBbXSxcbiAgICAgICAgICBhdWdtZW50ZWREYXRhc2V0czoge31cbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgaWYgKHZhbGlkYXRlZEZpbHRlciAmJiBpc0VxdWFsKGRhdGFzZXRJZHMsIGFwcGx5VG9EYXRhc2V0cykpIHtcbiAgICAgICAgdmFsaWRhdGVkLnB1c2godmFsaWRhdGVkRmlsdGVyKTtcbiAgICAgICAgdXBkYXRlZERhdGFzZXRzID0ge1xuICAgICAgICAgIC4uLnVwZGF0ZWREYXRhc2V0cyxcbiAgICAgICAgICAuLi5hdWdtZW50ZWREYXRhc2V0c1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmYWlsZWQucHVzaChmaWx0ZXIpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHt2YWxpZGF0ZWQsIGZhaWxlZCwgdXBkYXRlZERhdGFzZXRzfTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZSBpbnRlcnZhbCBiaW5zIGZvciB0aW1lIGZpbHRlclxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuZ2V0SW50ZXJ2YWxCaW5zfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW50ZXJ2YWxCaW5zKGZpbHRlcikge1xuICBjb25zdCB7Ymluc30gPSBmaWx0ZXI7XG4gIGNvbnN0IGludGVydmFsID0gZmlsdGVyLnBsb3RUeXBlPy5pbnRlcnZhbDtcbiAgaWYgKCFpbnRlcnZhbCB8fCAhYmlucyB8fCBPYmplY3Qua2V5cyhiaW5zKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCB2YWx1ZXMgPSBPYmplY3QudmFsdWVzKGJpbnMpO1xuICByZXR1cm4gdmFsdWVzWzBdID8gdmFsdWVzWzBdW2ludGVydmFsXSA6IG51bGw7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxRQUFBLEdBQUFILHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBTSxjQUFBLEdBQUFKLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTyxRQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxRQUFBLEdBQUFSLE9BQUE7QUFD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
|
|
1136
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZDNBcnJheSIsInJlcXVpcmUiLCJfa2V5bWlycm9yIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb25zb2xlIiwiX2dldCIsIl9pc0VxdWFsIiwiX2Jvb2xlYW5XaXRoaW4iLCJfaGVscGVycyIsIl9kZWNpbWFsIiwiX2RlZmF1bHRTZXR0aW5ncyIsIl9kYXRhVXRpbHMiLCJTY2FsZVV0aWxzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdHlwZXMiLCJfdXRpbHMiLCJfaDNVdGlscyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIlRpbWVzdGFtcFN0ZXBNYXAiLCJleHBvcnRzIiwibWF4Iiwic3RlcCIsIk51bWJlciIsIlBPU0lUSVZFX0lORklOSVRZIiwiaGlzdG9ncmFtQmlucyIsImVubGFyZ2VkSGlzdG9ncmFtQmlucyIsImR1cmF0aW9uU2Vjb25kIiwiZHVyYXRpb25NaW51dGUiLCJkdXJhdGlvbkhvdXIiLCJkdXJhdGlvbkRheSIsImR1cmF0aW9uV2VlayIsImR1cmF0aW9uWWVhciIsIlBMT1RfVFlQRVMiLCJrZXlNaXJyb3IiLCJoaXN0b2dyYW0iLCJsaW5lQ2hhcnQiLCJGSUxURVJfVVBEQVRFUl9QUk9QUyIsImRhdGFJZCIsIm5hbWUiLCJsYXllcklkIiwiTElNSVRFRF9GSUxURVJfRUZGRUNUX1BST1BTIiwiU3VwcG9ydGVkUGxvdFR5cGUiLCJGSUxURVJfVFlQRVMiLCJ0aW1lUmFuZ2UiLCJBTExfRklFTERfVFlQRVMiLCJpbnRlZ2VyIiwicmVhbCIsInJhbmdlIiwiRklMVEVSX0NPTVBPTkVOVFMiLCJzZWxlY3QiLCJtdWx0aVNlbGVjdCIsInBvbHlnb24iLCJERUZBVUxUX0ZJTFRFUl9TVFJVQ1RVUkUiLCJmcmVlemUiLCJpZCIsImZpeGVkRG9tYWluIiwiZW5sYXJnZWQiLCJpc0FuaW1hdGluZyIsImFuaW1hdGlvbldpbmRvdyIsIkFOSU1BVElPTl9XSU5ET1ciLCJmcmVlIiwic3BlZWQiLCJ0eXBlIiwiZmllbGRJZHgiLCJkb21haW4iLCJ2YWx1ZSIsInBsb3RUeXBlIiwieUF4aXMiLCJpbnRlcnZhbCIsImdwdSIsIkZJTFRFUl9JRF9MRU5HVEgiLCJMQVlFUl9GSUxURVJTIiwiZ2V0RGVmYXVsdEZpbHRlciIsInRvQXJyYXkiLCJnZW5lcmF0ZUhhc2hJZCIsInNob3VsZEFwcGx5RmlsdGVyIiwiZGF0YXNldElkIiwiZGF0YUlkcyIsImluY2x1ZGVzIiwidmFsaWRhdGVQb2x5Z29uRmlsdGVyIiwiZGF0YXNldCIsImxheWVycyIsImZhaWxlZCIsImlzVmFsaWRGaWx0ZXJWYWx1ZSIsImlzVmFsaWREYXRhc2V0IiwibGF5ZXIiLCJmaW5kIiwibCIsImZpbHRlclZhbGlkYXRvcnMiLCJ2YWxpZGF0ZUZpbHRlciIsImZpbHRlckRhdGFJZCIsImZpbHRlckRhdGFzZXRJbmRleCIsImluZGV4T2YiLCJpbml0aWFsaXplRmlsdGVyIiwiZmllbGROYW1lIiwiX2FwcGx5RmlsdGVyRmllbGROYW1lIiwiYXBwbHlGaWx0ZXJGaWVsZE5hbWUiLCJtZXJnZURvbWFpbiIsInVwZGF0ZWRGaWx0ZXIiLCJ1cGRhdGVkRGF0YXNldCIsImFkanVzdFZhbHVlVG9GaWx0ZXJEb21haW4iLCJ2YWxpZGF0ZUZpbHRlcllBeGlzIiwidmFsaWRhdGVGaWx0ZXJXaXRoRGF0YSIsImZpZWxkcyIsIl9maWx0ZXIiLCJtYXRjaGVkQXhpcyIsIl9yZWYiLCJnZXRGaWx0ZXJQbG90IiwiZ2V0RmlsdGVyUHJvcHMiLCJmaWVsZCIsImZpZWxkRG9tYWluIiwiZmlsdGVyUHJvcHMiLCJmaWVsZFR5cGUiLCJ0eXBlT3B0aW9ucyIsInN0cmluZyIsImRhdGUiLCJ0aW1lc3RhbXAiLCJnZXRQb2x5Z29uRmlsdGVyRnVuY3RvciIsImRhdGFDb250YWluZXIiLCJnZXRQb3NpdGlvbiIsImdldFBvc2l0aW9uQWNjZXNzb3IiLCJMQVlFUl9UWVBFUyIsInBvaW50IiwiaWNvbiIsImRhdGEiLCJwb3MiLCJldmVyeSIsImlzRmluaXRlIiwiaXNJblBvbHlnb24iLCJhcmMiLCJsaW5lIiwiaGV4YWdvbklkIiwiZGF0YVRvRmVhdHVyZSIsImNlbnRyb2lkcyIsImNlbnRyb2lkIiwiaW5kZXgiLCJoM0lzVmFsaWQiLCJnZXRDZW50cm9pZCIsImdldEZpbHRlckZ1bmN0aW9uIiwidmFsdWVBY2Nlc3NvciIsImRlZmF1bHRGdW5jIiwiZCIsImlzSW5SYW5nZSIsIm1hcHBlZFZhbHVlIiwiYWNjZXNzb3IiLCJBcnJheSIsImlzQXJyYXkiLCJ0aW1lVG9Vbml4TWlsbGkiLCJmb3JtYXQiLCJsYXllckZpbHRlckZ1bmN0aW9ucyIsIm1hcCIsImNvbmZpZyIsImZpbHRlckZ1bmMiLCJ1cGRhdGVGaWx0ZXJEYXRhSWQiLCJmaWx0ZXJEYXRhQnlGaWx0ZXJUeXBlcyIsIl9yZWYyIiwiZHluYW1pY0RvbWFpbkZpbHRlcnMiLCJjcHVGaWx0ZXJzIiwiZmlsdGVyRnVuY3MiLCJyZXN1bHQiLCJmaWx0ZXJlZEluZGV4Rm9yRG9tYWluIiwiZmlsdGVyZWRJbmRleCIsImZpbHRlckNvbnRleHQiLCJmaWx0ZXJGdW5jQ2FsbGVyIiwibnVtUm93cyIsIm1hdGNoRm9yRG9tYWluIiwibWF0Y2hGb3JSZW5kZXIiLCJnZXRGaWx0ZXJSZWNvcmQiLCJmaWx0ZXJzIiwib3B0IiwidW5kZWZpbmVkIiwiZmlsdGVyUmVjb3JkIiwiZHluYW1pY0RvbWFpbiIsImNwdSIsImYiLCJpZ25vcmVEb21haW4iLCJjcHVPbmx5IiwiZGlmZkZpbHRlcnMiLCJvbGRGaWx0ZXJSZWNvcmQiLCJmaWx0ZXJDaGFuZ2VkIiwiZW50cmllcyIsIl9yZWYzIiwiX3JlZjQiLCJfc2xpY2VkVG9BcnJheTIiLCJyZWNvcmQiLCJpdGVtcyIsIm9sZEZpbHRlciIsInByb3AiLCJjb25jYXQiLCJfcmVmNSIsIm5vdE51bGxvclVuZGVmaW5lZCIsImZpbHRlcmVkVmFsdWUiLCJnZXROdW1lcmljRmllbGREb21haW4iLCJtYXBJbmRleCIsImdldExpbmVhckRvbWFpbiIsImRpZmYiLCJnZXROdW1lcmljU3RlcFNpemUiLCJmb3JtYXROdW1iZXJCeVN0ZXAiLCJfZ2V0SGlzdG9ncmFtIiwiZ2V0SGlzdG9ncmFtIiwiZW5sYXJnZWRIaXN0b2dyYW0iLCJNYXRoIiwiYWJzIiwieCIsImV4cG9uZW50aWFsRm9ybSIsInRvRXhwb25lbnRpYWwiLCJleHBvbmVudCIsInBhcnNlRmxvYXQiLCJzcGxpdCIsIkRlY2ltYWwiLCJwb3ciLCJ0b051bWJlciIsImdldFRpbWVzdGFtcEZpZWxkRG9tYWluIiwiZGVmYXVsdFRpbWVGb3JtYXQiLCJnZXRUaW1lV2lkZ2V0VGl0bGVGb3JtYXR0ZXIiLCJlbnRyeSIsIl9nZXRIaXN0b2dyYW0yIiwiaGlzdG9ncmFtQ29uc3RydWN0IiwiYmlucyIsImQzSGlzdG9ncmFtIiwidGhyZXNob2xkcyIsInRpY2tzIiwiYmluIiwiY291bnQiLCJ4MCIsIngxIiwidmFsIiwiYm91bmQiLCJmbG9vciIsImNlaWwiLCJib29sZWFuV2l0aGluIiwidHVyZlBvaW50IiwiaXNWYWxpZFRpbWVEb21haW4iLCJnZXRUaW1lV2lkZ2V0SGludEZvcm1hdHRlciIsInYiLCJpc05hTiIsIkJvb2xlYW4iLCJpbnB1dCIsImNvb3JkaW5hdGVzIiwiX2ZpbHRlciRtYXBwZWRWYWx1ZSIsImdldENvbHVtbkZpZWxkSWR4IiwiQ29uc29sZSIsIndhcm4iLCJzZXJpZXMiLCJyb3ciLCJyb3dJbmRleCIsInkiLCJ2YWx1ZUF0IiwiX3JlZjYiLCJzb3J0IiwiYiIsImFzY2VuZGluZyIsInlEb21haW4iLCJleHRlbnQiLCJ4RG9tYWluIiwiZ2V0RGVmYXVsdEZpbHRlclBsb3RUeXBlIiwiZmlsdGVyUGxvdFR5cGVzIiwiYXBwbHlGaWx0ZXJzVG9EYXRhc2V0cyIsImRhdGFzZXRJZHMiLCJkYXRhc2V0cyIsInJlZHVjZSIsImFjYyIsImxheWVyc1RvRmlsdGVyIiwiYXBwbGllZEZpbHRlcnMiLCJ0YWJsZSIsImZpbHRlclRhYmxlIiwib3B0aW9uIiwiZmllbGRJbmRleCIsImdldENvbHVtbkZpbHRlclByb3BzIiwibmV3RmlsdGVyIiwibWVyZ2VGaWx0ZXJEb21haW5TdGVwIiwiYXNzaWduIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImNvbWJpbmVkRG9tYWluIiwidW5pcXVlIiwiZmVhdHVyZVRvRmlsdGVyVmFsdWUiLCJmZWF0dXJlIiwiZmlsdGVySWQiLCJwcm9wZXJ0aWVzIiwiZ2V0RmlsdGVySWRJbkZlYXR1cmUiLCJnZW5lcmF0ZVBvbHlnb25GaWx0ZXIiLCJsYWJlbCIsImlzVmlzaWJsZSIsImZpbHRlckRhdGFzZXRDUFUiLCJzdGF0ZSIsImRhdGFzZXRGaWx0ZXJzIiwiY3B1RmlsdGVyZWREYXRhc2V0IiwiZmlsdGVyVGFibGVDUFUiLCJ2YWxpZGF0ZUZpbHRlcnNVcGRhdGVEYXRhc2V0cyIsImZpbHRlcnNUb1ZhbGlkYXRlIiwidmFsaWRhdGVkIiwidXBkYXRlZERhdGFzZXRzIiwiX2RhdGFzZXRJZHMkcmVkdWNlIiwiX3ZhbGlkYXRlRmlsdGVyV2l0aERhIiwiYXVnbWVudGVkRGF0YXNldHMiLCJhcHBseVRvRGF0YXNldHMiLCJ2YWxpZGF0ZWRGaWx0ZXIiLCJpc0VxdWFsIiwiZ2V0SW50ZXJ2YWxCaW5zIiwiX2ZpbHRlciRwbG90VHlwZSIsInZhbHVlcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9maWx0ZXItdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHthc2NlbmRpbmcsIGV4dGVudCwgaGlzdG9ncmFtIGFzIGQzSGlzdG9ncmFtLCB0aWNrc30gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IGtleU1pcnJvciBmcm9tICdrZXltaXJyb3InO1xuaW1wb3J0IHtjb25zb2xlIGFzIENvbnNvbGV9IGZyb20gJ2dsb2JhbC9jb25zb2xlJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5cbmltcG9ydCBib29sZWFuV2l0aGluIGZyb20gJ0B0dXJmL2Jvb2xlYW4td2l0aGluJztcbmltcG9ydCB7cG9pbnQgYXMgdHVyZlBvaW50fSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCB7RGVjaW1hbH0gZnJvbSAnZGVjaW1hbC5qcyc7XG5pbXBvcnQge0FMTF9GSUVMRF9UWVBFUywgRklMVEVSX1RZUEVTLCBBTklNQVRJT05fV0lORE9XfSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5pbXBvcnQge25vdE51bGxvclVuZGVmaW5lZCwgdW5pcXVlLCB0aW1lVG9Vbml4TWlsbGl9IGZyb20gJy4vZGF0YS11dGlscyc7XG5pbXBvcnQgKiBhcyBTY2FsZVV0aWxzIGZyb20gJy4vZGF0YS1zY2FsZS11dGlscyc7XG5pbXBvcnQge0xBWUVSX1RZUEVTfSBmcm9tICdsYXllcnMvdHlwZXMnO1xuaW1wb3J0IHtnZW5lcmF0ZUhhc2hJZCwgc2V0LCB0b0FycmF5fSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7Z2V0Q2VudHJvaWQsIGgzSXNWYWxpZH0gZnJvbSAnbGF5ZXJzL2gzLWhleGFnb24tbGF5ZXIvaDMtdXRpbHMnO1xuXG4vLyBUWVBFXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnLi90YWJsZS11dGlscy9rZXBsZXItdGFibGUnKS5GaWx0ZXJSZWNvcmR9IEZpbHRlclJlY29yZCAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuRmlsdGVyUmVzdWx0fSBGaWx0ZXJSZXN1bHQgKi9cblxuZXhwb3J0IGNvbnN0IFRpbWVzdGFtcFN0ZXBNYXAgPSBbXG4gIHttYXg6IDEsIHN0ZXA6IDAuMDV9LFxuICB7bWF4OiAxMCwgc3RlcDogMC4xfSxcbiAge21heDogMTAwLCBzdGVwOiAxfSxcbiAge21heDogNTAwLCBzdGVwOiA1fSxcbiAge21heDogMTAwMCwgc3RlcDogMTB9LFxuICB7bWF4OiA1MDAwLCBzdGVwOiA1MH0sXG4gIHttYXg6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSwgc3RlcDogMTAwMH1cbl07XG5cbmV4cG9ydCBjb25zdCBoaXN0b2dyYW1CaW5zID0gMzA7XG5leHBvcnQgY29uc3QgZW5sYXJnZWRIaXN0b2dyYW1CaW5zID0gMTAwO1xuXG5jb25zdCBkdXJhdGlvblNlY29uZCA9IDEwMDA7XG5jb25zdCBkdXJhdGlvbk1pbnV0ZSA9IGR1cmF0aW9uU2Vjb25kICogNjA7XG5jb25zdCBkdXJhdGlvbkhvdXIgPSBkdXJhdGlvbk1pbnV0ZSAqIDYwO1xuY29uc3QgZHVyYXRpb25EYXkgPSBkdXJhdGlvbkhvdXIgKiAyNDtcbmNvbnN0IGR1cmF0aW9uV2VlayA9IGR1cmF0aW9uRGF5ICogNztcbmNvbnN0IGR1cmF0aW9uWWVhciA9IGR1cmF0aW9uRGF5ICogMzY1O1xuXG5leHBvcnQgY29uc3QgUExPVF9UWVBFUyA9IGtleU1pcnJvcih7XG4gIGhpc3RvZ3JhbTogbnVsbCxcbiAgbGluZUNoYXJ0OiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9VUERBVEVSX1BST1BTID0ga2V5TWlycm9yKHtcbiAgZGF0YUlkOiBudWxsLFxuICBuYW1lOiBudWxsLFxuICBsYXllcklkOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IExJTUlURURfRklMVEVSX0VGRkVDVF9QUk9QUyA9IGtleU1pcnJvcih7XG4gIFtGSUxURVJfVVBEQVRFUl9QUk9QUy5uYW1lXTogbnVsbFxufSk7XG4vKipcbiAqIE1heCBudW1iZXIgb2YgZmlsdGVyIHZhbHVlIGJ1ZmZlcnMgdGhhdCBkZWNrLmdsIHByb3ZpZGVzXG4gKi9cblxuY29uc3QgU3VwcG9ydGVkUGxvdFR5cGUgPSB7XG4gIFtGSUxURVJfVFlQRVMudGltZVJhbmdlXToge1xuICAgIGRlZmF1bHQ6ICdoaXN0b2dyYW0nLFxuICAgIFtBTExfRklFTERfVFlQRVMuaW50ZWdlcl06ICdsaW5lQ2hhcnQnLFxuICAgIFtBTExfRklFTERfVFlQRVMucmVhbF06ICdsaW5lQ2hhcnQnXG4gIH0sXG4gIFtGSUxURVJfVFlQRVMucmFuZ2VdOiB7XG4gICAgZGVmYXVsdDogJ2hpc3RvZ3JhbScsXG4gICAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXTogJ2xpbmVDaGFydCcsXG4gICAgW0FMTF9GSUVMRF9UWVBFUy5yZWFsXTogJ2xpbmVDaGFydCdcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9DT01QT05FTlRTID0ge1xuICBbRklMVEVSX1RZUEVTLnNlbGVjdF06ICdTaW5nbGVTZWxlY3RGaWx0ZXInLFxuICBbRklMVEVSX1RZUEVTLm11bHRpU2VsZWN0XTogJ011bHRpU2VsZWN0RmlsdGVyJyxcbiAgW0ZJTFRFUl9UWVBFUy50aW1lUmFuZ2VdOiAnVGltZVJhbmdlRmlsdGVyJyxcbiAgW0ZJTFRFUl9UWVBFUy5yYW5nZV06ICdSYW5nZUZpbHRlcicsXG4gIFtGSUxURVJfVFlQRVMucG9seWdvbl06ICdQb2x5Z29uRmlsdGVyJ1xufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfRklMVEVSX1NUUlVDVFVSRSA9IHtcbiAgZGF0YUlkOiBbXSwgLy8gW3N0cmluZ11cbiAgZnJlZXplOiBmYWxzZSxcbiAgaWQ6IG51bGwsXG5cbiAgLy8gdGltZSByYW5nZSBmaWx0ZXIgc3BlY2lmaWNcbiAgZml4ZWREb21haW46IGZhbHNlLFxuICBlbmxhcmdlZDogZmFsc2UsXG4gIGlzQW5pbWF0aW5nOiBmYWxzZSxcbiAgYW5pbWF0aW9uV2luZG93OiBBTklNQVRJT05fV0lORE9XLmZyZWUsXG4gIHNwZWVkOiAxLFxuXG4gIC8vIGZpZWxkIHNwZWNpZmljXG4gIG5hbWU6IFtdLCAvLyBzdHJpbmdcbiAgdHlwZTogbnVsbCxcbiAgZmllbGRJZHg6IFtdLCAvLyBbaW50ZWdlcl1cbiAgZG9tYWluOiBudWxsLFxuICB2YWx1ZTogbnVsbCxcblxuICAvLyBwbG90XG4gIHBsb3RUeXBlOiBQTE9UX1RZUEVTLmhpc3RvZ3JhbSxcbiAgeUF4aXM6IG51bGwsXG4gIGludGVydmFsOiBudWxsLFxuXG4gIC8vIG1vZGVcbiAgZ3B1OiBmYWxzZVxufTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9JRF9MRU5HVEggPSA0O1xuXG5leHBvcnQgY29uc3QgTEFZRVJfRklMVEVSUyA9IFtGSUxURVJfVFlQRVMucG9seWdvbl07XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgZmlsdGVyIHdpdGggYSBkYXRhc2V0IGlkIGFzIGRhdGFJZFxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuZ2V0RGVmYXVsdEZpbHRlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRGaWx0ZXIoZGF0YUlkKSB7XG4gIHJldHVybiB7XG4gICAgLi4uREVGQVVMVF9GSUxURVJfU1RSVUNUVVJFLFxuICAgIC8vIHN0b3JlIGl0IGFzIGRhdGFJZCBhbmQgaXQgY291bGQgYmUgb25lIG9yIG1hbnlcbiAgICBkYXRhSWQ6IHRvQXJyYXkoZGF0YUlkKSxcbiAgICBpZDogZ2VuZXJhdGVIYXNoSWQoRklMVEVSX0lEX0xFTkdUSClcbiAgfTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIGZpbHRlciBpcyB2YWxpZCBiYXNlZCBvbiB0aGUgZ2l2ZW4gZGF0YUlkXG4gKiBAcGFyYW0gIGZpbHRlciB0byB2YWxpZGF0ZVxuICogQHBhcmFtICBkYXRhc2V0SWQgaWQgdG8gdmFsaWRhdGUgZmlsdGVyIGFnYWluc3RcbiAqIEByZXR1cm4gdHJ1ZSBpZiBhIGZpbHRlciBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9maWx0ZXItdXRpbHMnKS5zaG91bGRBcHBseUZpbHRlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZEFwcGx5RmlsdGVyKGZpbHRlciwgZGF0YXNldElkKSB7XG4gIGNvbnN0IGRhdGFJZHMgPSB0b0FycmF5KGZpbHRlci5kYXRhSWQpO1xuICByZXR1cm4gZGF0YUlkcy5pbmNsdWRlcyhkYXRhc2V0SWQpICYmIGZpbHRlci52YWx1ZSAhPT0gbnVsbDtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYW5kIG1vZGlmaWVzIHBvbHlnb24gZmlsdGVyIHN0cnVjdHVyZVxuICogQHBhcmFtIGRhdGFzZXRcbiAqIEBwYXJhbSBmaWx0ZXJcbiAqIEBwYXJhbSBsYXllcnNcbiAqIEByZXR1cm4gLSB7ZmlsdGVyLCBkYXRhc2V0fVxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykudmFsaWRhdGVQb2x5Z29uRmlsdGVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQb2x5Z29uRmlsdGVyKGRhdGFzZXQsIGZpbHRlciwgbGF5ZXJzKSB7XG4gIGNvbnN0IGZhaWxlZCA9IHtkYXRhc2V0LCBmaWx0ZXI6IG51bGx9O1xuICBjb25zdCB7dmFsdWUsIGxheWVySWQsIHR5cGUsIGRhdGFJZH0gPSBmaWx0ZXI7XG5cbiAgaWYgKCFsYXllcklkIHx8ICFpc1ZhbGlkRmlsdGVyVmFsdWUodHlwZSwgdmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhaWxlZDtcbiAgfVxuXG4gIGNvbnN0IGlzVmFsaWREYXRhc2V0ID0gZGF0YUlkLmluY2x1ZGVzKGRhdGFzZXQuaWQpO1xuXG4gIGlmICghaXNWYWxpZERhdGFzZXQpIHtcbiAgICByZXR1cm4gZmFpbGVkO1xuICB9XG5cbiAgY29uc3QgbGF5ZXIgPSBsYXllcnMuZmluZChsID0+IGxheWVySWQuaW5jbHVkZXMobC5pZCkpO1xuXG4gIGlmICghbGF5ZXIpIHtcbiAgICByZXR1cm4gZmFpbGVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBmaWx0ZXI6IHtcbiAgICAgIC4uLmZpbHRlcixcbiAgICAgIGZyZWV6ZTogdHJ1ZSxcbiAgICAgIGZpZWxkSWR4OiBbXVxuICAgIH0sXG4gICAgZGF0YXNldFxuICB9O1xufVxuXG4vKipcbiAqIEN1c3RvbSBmaWx0ZXIgdmFsaWRhdG9yc1xuICovXG5jb25zdCBmaWx0ZXJWYWxpZGF0b3JzID0ge1xuICBbRklMVEVSX1RZUEVTLnBvbHlnb25dOiB2YWxpZGF0ZVBvbHlnb25GaWx0ZXJcbn07XG5cbi8qKlxuICogRGVmYXVsdCB2YWxpZGF0ZSBmaWx0ZXIgZnVuY3Rpb25cbiAqIEBwYXJhbSBkYXRhc2V0XG4gKiBAcGFyYW0gZmlsdGVyXG4gKiBAcmV0dXJuIC0ge2ZpbHRlciwgZGF0YXNldH1cbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLnZhbGlkYXRlRmlsdGVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGaWx0ZXIoZGF0YXNldCwgZmlsdGVyKSB7XG4gIC8vIG1hdGNoIGZpbHRlci5kYXRhSWRcbiAgY29uc3QgZmFpbGVkID0ge2RhdGFzZXQsIGZpbHRlcjogbnVsbH07XG4gIGNvbnN0IGZpbHRlckRhdGFJZCA9IHRvQXJyYXkoZmlsdGVyLmRhdGFJZCk7XG5cbiAgY29uc3QgZmlsdGVyRGF0YXNldEluZGV4ID0gZmlsdGVyRGF0YUlkLmluZGV4T2YoZGF0YXNldC5pZCk7XG4gIGlmIChmaWx0ZXJEYXRhc2V0SW5kZXggPCAwKSB7XG4gICAgLy8gdGhlIGN1cnJlbnQgZmlsdGVyIGlzIG5vdCBtYXBwZWQgYWdhaW5zdCB0aGUgY3VycmVudCBkYXRhc2V0XG4gICAgcmV0dXJuIGZhaWxlZDtcbiAgfVxuXG4gIGNvbnN0IGluaXRpYWxpemVGaWx0ZXIgPSB7XG4gICAgLi4uZ2V0RGVmYXVsdEZpbHRlcihmaWx0ZXIuZGF0YUlkKSxcbiAgICAuLi5maWx0ZXIsXG4gICAgZGF0YUlkOiBmaWx0ZXJEYXRhSWQsXG4gICAgbmFtZTogdG9BcnJheShmaWx0ZXIubmFtZSlcbiAgfTtcblxuICBjb25zdCBmaWVsZE5hbWUgPSBpbml0aWFsaXplRmlsdGVyLm5hbWVbZmlsdGVyRGF0YXNldEluZGV4XTtcbiAgY29uc3Qge2ZpbHRlcjogdXBkYXRlZEZpbHRlciwgZGF0YXNldDogdXBkYXRlZERhdGFzZXR9ID0gYXBwbHlGaWx0ZXJGaWVsZE5hbWUoXG4gICAgaW5pdGlhbGl6ZUZpbHRlcixcbiAgICBkYXRhc2V0LFxuICAgIGZpZWxkTmFtZSxcbiAgICBmaWx0ZXJEYXRhc2V0SW5kZXgsXG4gICAge21lcmdlRG9tYWluOiB0cnVlfVxuICApO1xuXG4gIGlmICghdXBkYXRlZEZpbHRlcikge1xuICAgIHJldHVybiBmYWlsZWQ7XG4gIH1cblxuICB1cGRhdGVkRmlsdGVyLnZhbHVlID0gYWRqdXN0VmFsdWVUb0ZpbHRlckRvbWFpbihmaWx0ZXIudmFsdWUsIHVwZGF0ZWRGaWx0ZXIpO1xuICB1cGRhdGVkRmlsdGVyLmVubGFyZ2VkID1cbiAgICB0eXBlb2YgZmlsdGVyLmVubGFyZ2VkID09PSAnYm9vbGVhbicgPyBmaWx0ZXIuZW5sYXJnZWQgOiB1cGRhdGVkRmlsdGVyLmVubGFyZ2VkO1xuXG4gIGlmICh1cGRhdGVkRmlsdGVyLnZhbHVlID09PSBudWxsKSB7XG4gICAgLy8gY2Fubm90IGFkanVzdCBzYXZlZCB2YWx1ZSB0byBmaWx0ZXJcbiAgICByZXR1cm4gZmFpbGVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBmaWx0ZXI6IHZhbGlkYXRlRmlsdGVyWUF4aXModXBkYXRlZEZpbHRlciwgdXBkYXRlZERhdGFzZXQpLFxuICAgIGRhdGFzZXQ6IHVwZGF0ZWREYXRhc2V0XG4gIH07XG59XG5cbi8qKlxuICogVmFsaWRhdGUgc2F2ZWQgZmlsdGVyIGNvbmZpZyB3aXRoIG5ldyBkYXRhLFxuICogY2FsY3VsYXRlIGRvbWFpbiBhbmQgZmllbGRJZHggYmFzZWQgbmV3IGZpZWxkcyBhbmQgZGF0YVxuICpcbiAqIEBwYXJhbSBkYXRhc2V0XG4gKiBAcGFyYW0gZmlsdGVyIC0gZmlsdGVyIHRvIGJlIHZhbGlkYXRlXG4gKiBAcGFyYW0gbGF5ZXJzIC0gbGF5ZXJzXG4gKiBAcmV0dXJuIHZhbGlkYXRlZCBmaWx0ZXJcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLnZhbGlkYXRlRmlsdGVyV2l0aERhdGF9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZpbHRlcldpdGhEYXRhKGRhdGFzZXQsIGZpbHRlciwgbGF5ZXJzKSB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIGZpbHRlclZhbGlkYXRvcnMuaGFzT3duUHJvcGVydHkoZmlsdGVyLnR5cGUpXG4gICAgPyBmaWx0ZXJWYWxpZGF0b3JzW2ZpbHRlci50eXBlXShkYXRhc2V0LCBmaWx0ZXIsIGxheWVycylcbiAgICA6IHZhbGlkYXRlRmlsdGVyKGRhdGFzZXQsIGZpbHRlcik7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgWUF4aXNcbiAqIEBwYXJhbSBmaWx0ZXJcbiAqIEBwYXJhbSBkYXRhc2V0XG4gKiBAcmV0dXJuIHsqfVxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUZpbHRlcllBeGlzKGZpbHRlciwgZGF0YXNldCkge1xuICAvLyBUT0RPOiB2YWxpZGF0ZSB5QXhpcyBhZ2FpbnN0IG90aGVyIGRhdGFzZXRzXG5cbiAgY29uc3Qge2ZpZWxkc30gPSBkYXRhc2V0O1xuICBjb25zdCB7eUF4aXN9ID0gZmlsdGVyO1xuICAvLyBUT0RPOiB2YWxpZGF0ZSB5QXhpcyBhZ2FpbnN0IG90aGVyIGRhdGFzZXRzXG4gIGlmICh5QXhpcykge1xuICAgIGNvbnN0IG1hdGNoZWRBeGlzID0gZmllbGRzLmZpbmQoKHtuYW1lLCB0eXBlfSkgPT4gbmFtZSA9PT0geUF4aXMubmFtZSAmJiB0eXBlID09PSB5QXhpcy50eXBlKTtcblxuICAgIGZpbHRlciA9IG1hdGNoZWRBeGlzXG4gICAgICA/IHtcbiAgICAgICAgICAuLi5maWx0ZXIsXG4gICAgICAgICAgeUF4aXM6IG1hdGNoZWRBeGlzLFxuICAgICAgICAgIC4uLmdldEZpbHRlclBsb3Qoey4uLmZpbHRlciwgeUF4aXM6IG1hdGNoZWRBeGlzfSwgZGF0YXNldClcbiAgICAgICAgfVxuICAgICAgOiBmaWx0ZXI7XG4gIH1cblxuICByZXR1cm4gZmlsdGVyO1xufVxuXG4vKipcbiAqIEdldCBkZWZhdWx0IGZpbHRlciBwcm9wIGJhc2VkIG9uIGZpZWxkIHR5cGVcbiAqXG4gKiBAcGFyYW0gZmllbGRcbiAqIEBwYXJhbSBmaWVsZERvbWFpblxuICogQHJldHVybnMgZGVmYXVsdCBmaWx0ZXJcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLmdldEZpbHRlclByb3BzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsdGVyUHJvcHMoZmllbGQsIGZpZWxkRG9tYWluKSB7XG4gIGNvbnN0IGZpbHRlclByb3BzID0ge1xuICAgIC4uLmZpZWxkRG9tYWluLFxuICAgIGZpZWxkVHlwZTogZmllbGQudHlwZVxuICB9O1xuXG4gIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmZpbHRlclByb3BzLFxuICAgICAgICB2YWx1ZTogZmllbGREb21haW4uZG9tYWluLFxuICAgICAgICB0eXBlOiBGSUxURVJfVFlQRVMucmFuZ2UsXG4gICAgICAgIHR5cGVPcHRpb25zOiBbRklMVEVSX1RZUEVTLnJhbmdlXSxcbiAgICAgICAgZ3B1OiB0cnVlXG4gICAgICB9O1xuXG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuYm9vbGVhbjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmZpbHRlclByb3BzLFxuICAgICAgICB0eXBlOiBGSUxURVJfVFlQRVMuc2VsZWN0LFxuICAgICAgICB2YWx1ZTogdHJ1ZSxcbiAgICAgICAgZ3B1OiBmYWxzZVxuICAgICAgfTtcblxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZzpcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5kYXRlOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZmlsdGVyUHJvcHMsXG4gICAgICAgIHR5cGU6IEZJTFRFUl9UWVBFUy5tdWx0aVNlbGVjdCxcbiAgICAgICAgdmFsdWU6IFtdLFxuICAgICAgICBncHU6IGZhbHNlXG4gICAgICB9O1xuXG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZmlsdGVyUHJvcHMsXG4gICAgICAgIHR5cGU6IEZJTFRFUl9UWVBFUy50aW1lUmFuZ2UsXG4gICAgICAgIGVubGFyZ2VkOiB0cnVlLFxuICAgICAgICBmaXhlZERvbWFpbjogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IGZpbHRlclByb3BzLmRvbWFpbixcbiAgICAgICAgZ3B1OiB0cnVlXG4gICAgICB9O1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB7fTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZ2V0UG9seWdvbkZpbHRlckZ1bmN0b3IgPSAobGF5ZXIsIGZpbHRlciwgZGF0YUNvbnRhaW5lcikgPT4ge1xuICBjb25zdCBnZXRQb3NpdGlvbiA9IGxheWVyLmdldFBvc2l0aW9uQWNjZXNzb3IoZGF0YUNvbnRhaW5lcik7XG5cbiAgc3dpdGNoIChsYXllci50eXBlKSB7XG4gICAgY2FzZSBMQVlFUl9UWVBFUy5wb2ludDpcbiAgICBjYXNlIExBWUVSX1RZUEVTLmljb246XG4gICAgICByZXR1cm4gZGF0YSA9PiB7XG4gICAgICAgIGNvbnN0IHBvcyA9IGdldFBvc2l0aW9uKGRhdGEpO1xuICAgICAgICByZXR1cm4gcG9zLmV2ZXJ5KE51bWJlci5pc0Zpbml0ZSkgJiYgaXNJblBvbHlnb24ocG9zLCBmaWx0ZXIudmFsdWUpO1xuICAgICAgfTtcbiAgICBjYXNlIExBWUVSX1RZUEVTLmFyYzpcbiAgICBjYXNlIExBWUVSX1RZUEVTLmxpbmU6XG4gICAgICByZXR1cm4gZGF0YSA9PiB7XG4gICAgICAgIGNvbnN0IHBvcyA9IGdldFBvc2l0aW9uKGRhdGEpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHBvcy5ldmVyeShOdW1iZXIuaXNGaW5pdGUpICYmXG4gICAgICAgICAgW1xuICAgICAgICAgICAgW3Bvc1swXSwgcG9zWzFdXSxcbiAgICAgICAgICAgIFtwb3NbM10sIHBvc1s0XV1cbiAgICAgICAgICBdLmV2ZXJ5KHBvaW50ID0+IGlzSW5Qb2x5Z29uKHBvaW50LCBmaWx0ZXIudmFsdWUpKVxuICAgICAgICApO1xuICAgICAgfTtcbiAgICBjYXNlIExBWUVSX1RZUEVTLmhleGFnb25JZDpcbiAgICAgIGlmIChsYXllci5kYXRhVG9GZWF0dXJlICYmIGxheWVyLmRhdGFUb0ZlYXR1cmUuY2VudHJvaWRzKSB7XG4gICAgICAgIHJldHVybiBkYXRhID0+IHtcbiAgICAgICAgICAvLyBudWxsIG9yIGdldENlbnRyb2lkKHtpZH0pXG4gICAgICAgICAgY29uc3QgY2VudHJvaWQgPSBsYXllci5kYXRhVG9GZWF0dXJlLmNlbnRyb2lkc1tkYXRhLmluZGV4XTtcbiAgICAgICAgICByZXR1cm4gY2VudHJvaWQgJiYgaXNJblBvbHlnb24oY2VudHJvaWQsIGZpbHRlci52YWx1ZSk7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0YSA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gZ2V0UG9zaXRpb24oZGF0YSk7XG4gICAgICAgIGlmICghaDNJc1ZhbGlkKGlkKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwb3MgPSBnZXRDZW50cm9pZCh7aWR9KTtcbiAgICAgICAgcmV0dXJuIHBvcy5ldmVyeShOdW1iZXIuaXNGaW5pdGUpICYmIGlzSW5Qb2x5Z29uKHBvcywgZmlsdGVyLnZhbHVlKTtcbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAoKSA9PiB0cnVlO1xuICB9XG59O1xuXG4vKipcbiAqIEBwYXJhbSBmaWVsZCBkYXRhc2V0IEZpZWxkXG4gKiBAcGFyYW0gZGF0YUlkIERhdGFzZXQgaWRcbiAqIEBwYXJhbSBmaWx0ZXIgRmlsdGVyIG9iamVjdFxuICogQHBhcmFtIGxheWVycyBsaXN0IG9mIGxheWVycyB0byBmaWx0ZXIgdXBvblxuICogQHBhcmFtIGRhdGFDb250YWluZXIgRGF0YSBjb250YWluZXJcbiAqIEByZXR1cm4gZmlsdGVyRnVuY3Rpb25cbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLmdldEZpbHRlckZ1bmN0aW9ufVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsdGVyRnVuY3Rpb24oZmllbGQsIGRhdGFJZCwgZmlsdGVyLCBsYXllcnMsIGRhdGFDb250YWluZXIpIHtcbiAgLy8gZmllbGQgY291bGQgYmUgbnVsbCBpbiBwb2x5Z29uIGZpbHRlclxuICBjb25zdCB2YWx1ZUFjY2Vzc29yID0gZmllbGQgPyBmaWVsZC52YWx1ZUFjY2Vzc29yIDogZGF0YSA9PiBudWxsO1xuICBjb25zdCBkZWZhdWx0RnVuYyA9IGQgPT4gdHJ1ZTtcblxuICBzd2l0Y2ggKGZpbHRlci50eXBlKSB7XG4gICAgY2FzZSBGSUxURVJfVFlQRVMucmFuZ2U6XG4gICAgICByZXR1cm4gZGF0YSA9PiBpc0luUmFuZ2UodmFsdWVBY2Nlc3NvcihkYXRhKSwgZmlsdGVyLnZhbHVlKTtcbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5tdWx0aVNlbGVjdDpcbiAgICAgIHJldHVybiBkYXRhID0+IGZpbHRlci52YWx1ZS5pbmNsdWRlcyh2YWx1ZUFjY2Vzc29yKGRhdGEpKTtcbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5zZWxlY3Q6XG4gICAgICByZXR1cm4gZGF0YSA9PiB2YWx1ZUFjY2Vzc29yKGRhdGEpID09PSBmaWx0ZXIudmFsdWU7XG4gICAgY2FzZSBGSUxURVJfVFlQRVMudGltZVJhbmdlOlxuICAgICAgaWYgKCFmaWVsZCkge1xuICAgICAgICByZXR1cm4gZGVmYXVsdEZ1bmM7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXBwZWRWYWx1ZSA9IGdldChmaWVsZCwgWydmaWx0ZXJQcm9wcycsICdtYXBwZWRWYWx1ZSddKTtcbiAgICAgIGNvbnN0IGFjY2Vzc29yID0gQXJyYXkuaXNBcnJheShtYXBwZWRWYWx1ZSlcbiAgICAgICAgPyBkYXRhID0+IG1hcHBlZFZhbHVlW2RhdGEuaW5kZXhdXG4gICAgICAgIDogZGF0YSA9PiB0aW1lVG9Vbml4TWlsbGkodmFsdWVBY2Nlc3NvcihkYXRhKSwgZmllbGQuZm9ybWF0KTtcbiAgICAgIHJldHVybiBkYXRhID0+IGlzSW5SYW5nZShhY2Nlc3NvcihkYXRhKSwgZmlsdGVyLnZhbHVlKTtcbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5wb2x5Z29uOlxuICAgICAgaWYgKCFsYXllcnMgfHwgIWxheWVycy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRGdW5jO1xuICAgICAgfVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgbGF5ZXJGaWx0ZXJGdW5jdGlvbnMgPSBmaWx0ZXIubGF5ZXJJZFxuICAgICAgICAubWFwKGlkID0+IGxheWVycy5maW5kKGwgPT4gbC5pZCA9PT0gaWQpKVxuICAgICAgICAuZmlsdGVyKGwgPT4gbCAmJiBsLmNvbmZpZy5kYXRhSWQgPT09IGRhdGFJZClcbiAgICAgICAgLm1hcChsYXllciA9PiBnZXRQb2x5Z29uRmlsdGVyRnVuY3RvcihsYXllciwgZmlsdGVyLCBkYXRhQ29udGFpbmVyKSk7XG5cbiAgICAgIHJldHVybiBkYXRhID0+IGxheWVyRmlsdGVyRnVuY3Rpb25zLmV2ZXJ5KGZpbHRlckZ1bmMgPT4gZmlsdGVyRnVuYyhkYXRhKSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkZWZhdWx0RnVuYztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlRmlsdGVyRGF0YUlkKGRhdGFJZCkge1xuICByZXR1cm4gZ2V0RGVmYXVsdEZpbHRlcihkYXRhSWQpO1xufVxuXG4vKipcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLmZpbHRlckRhdGFCeUZpbHRlclR5cGVzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyRGF0YUJ5RmlsdGVyVHlwZXMoXG4gIHtkeW5hbWljRG9tYWluRmlsdGVycywgY3B1RmlsdGVycywgZmlsdGVyRnVuY3N9LFxuICBkYXRhQ29udGFpbmVyXG4pIHtcbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIC4uLihkeW5hbWljRG9tYWluRmlsdGVycyA/IHtmaWx0ZXJlZEluZGV4Rm9yRG9tYWluOiBbXX0gOiB7fSksXG4gICAgLi4uKGNwdUZpbHRlcnMgPyB7ZmlsdGVyZWRJbmRleDogW119IDoge30pXG4gIH07XG5cbiAgY29uc3QgZmlsdGVyQ29udGV4dCA9IHtpbmRleDogLTEsIGRhdGFDb250YWluZXJ9O1xuICBjb25zdCBmaWx0ZXJGdW5jQ2FsbGVyID0gZmlsdGVyID0+IGZpbHRlckZ1bmNzW2ZpbHRlci5pZF0oZmlsdGVyQ29udGV4dCk7XG5cbiAgY29uc3QgbnVtUm93cyA9IGRhdGFDb250YWluZXIubnVtUm93cygpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVJvd3M7ICsraSkge1xuICAgIGZpbHRlckNvbnRleHQuaW5kZXggPSBpO1xuXG4gICAgY29uc3QgbWF0Y2hGb3JEb21haW4gPSBkeW5hbWljRG9tYWluRmlsdGVycyAmJiBkeW5hbWljRG9tYWluRmlsdGVycy5ldmVyeShmaWx0ZXJGdW5jQ2FsbGVyKTtcbiAgICBpZiAobWF0Y2hGb3JEb21haW4pIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJlc3VsdC5maWx0ZXJlZEluZGV4Rm9yRG9tYWluLnB1c2goZmlsdGVyQ29udGV4dC5pbmRleCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2hGb3JSZW5kZXIgPSBjcHVGaWx0ZXJzICYmIGNwdUZpbHRlcnMuZXZlcnkoZmlsdGVyRnVuY0NhbGxlcik7XG4gICAgaWYgKG1hdGNoRm9yUmVuZGVyKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXN1bHQuZmlsdGVyZWRJbmRleC5wdXNoKGZpbHRlckNvbnRleHQuaW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogR2V0IGEgcmVjb3JkIG9mIGZpbHRlcnMgYmFzZWQgb24gZG9tYWluIHR5cGUgYW5kIGdwdSAvIGNwdVxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuZ2V0RmlsdGVyUmVjb3JkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsdGVyUmVjb3JkKGRhdGFJZCwgZmlsdGVycywgb3B0ID0ge30pIHtcbiAgLyoqXG4gICAqIEB0eXBlIHtGaWx0ZXJSZWNvcmR9XG4gICAqL1xuICBjb25zdCBmaWx0ZXJSZWNvcmQgPSB7XG4gICAgZHluYW1pY0RvbWFpbjogW10sXG4gICAgZml4ZWREb21haW46IFtdLFxuICAgIGNwdTogW10sXG4gICAgZ3B1OiBbXVxuICB9O1xuXG4gIGZpbHRlcnMuZm9yRWFjaChmID0+IHtcbiAgICBpZiAoaXNWYWxpZEZpbHRlclZhbHVlKGYudHlwZSwgZi52YWx1ZSkgJiYgdG9BcnJheShmLmRhdGFJZCkuaW5jbHVkZXMoZGF0YUlkKSkge1xuICAgICAgKGYuZml4ZWREb21haW4gfHwgb3B0Lmlnbm9yZURvbWFpblxuICAgICAgICA/IGZpbHRlclJlY29yZC5maXhlZERvbWFpblxuICAgICAgICA6IGZpbHRlclJlY29yZC5keW5hbWljRG9tYWluXG4gICAgICApLnB1c2goZik7XG5cbiAgICAgIChmLmdwdSAmJiAhb3B0LmNwdU9ubHkgPyBmaWx0ZXJSZWNvcmQuZ3B1IDogZmlsdGVyUmVjb3JkLmNwdSkucHVzaChmKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBmaWx0ZXJSZWNvcmQ7XG59XG5cbi8qKlxuICogQ29tcGFyZSBmaWx0ZXIgcmVjb3JkcyB0byBnZXQgd2hhdCBoYXMgY2hhbmdlZFxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuZGlmZkZpbHRlcnN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmRmlsdGVycyhmaWx0ZXJSZWNvcmQsIG9sZEZpbHRlclJlY29yZCA9IHt9KSB7XG4gIGxldCBmaWx0ZXJDaGFuZ2VkID0ge307XG5cbiAgT2JqZWN0LmVudHJpZXMoZmlsdGVyUmVjb3JkKS5mb3JFYWNoKChbcmVjb3JkLCBpdGVtc10pID0+IHtcbiAgICBpdGVtcy5mb3JFYWNoKGZpbHRlciA9PiB7XG4gICAgICBjb25zdCBvbGRGaWx0ZXIgPSAob2xkRmlsdGVyUmVjb3JkW3JlY29yZF0gfHwgW10pLmZpbmQoZiA9PiBmLmlkID09PSBmaWx0ZXIuaWQpO1xuXG4gICAgICBpZiAoIW9sZEZpbHRlcikge1xuICAgICAgICAvLyBhZGRlZFxuICAgICAgICBmaWx0ZXJDaGFuZ2VkID0gc2V0KFtyZWNvcmQsIGZpbHRlci5pZF0sICdhZGRlZCcsIGZpbHRlckNoYW5nZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY2hlY2sgIHdoYXQgaGFzIGNoYW5nZWRcbiAgICAgICAgWyduYW1lJywgJ3ZhbHVlJywgJ2RhdGFJZCddLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICAgICAgaWYgKGZpbHRlcltwcm9wXSAhPT0gb2xkRmlsdGVyW3Byb3BdKSB7XG4gICAgICAgICAgICBmaWx0ZXJDaGFuZ2VkID0gc2V0KFtyZWNvcmQsIGZpbHRlci5pZF0sIGAke3Byb3B9X2NoYW5nZWRgLCBmaWx0ZXJDaGFuZ2VkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgKG9sZEZpbHRlclJlY29yZFtyZWNvcmRdIHx8IFtdKS5mb3JFYWNoKG9sZEZpbHRlciA9PiB7XG4gICAgICAvLyBkZWxldGVkXG4gICAgICBpZiAoIWl0ZW1zLmZpbmQoZiA9PiBmLmlkID09PSBvbGRGaWx0ZXIuaWQpKSB7XG4gICAgICAgIGZpbHRlckNoYW5nZWQgPSBzZXQoW3JlY29yZCwgb2xkRmlsdGVyLmlkXSwgJ2RlbGV0ZWQnLCBmaWx0ZXJDaGFuZ2VkKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghZmlsdGVyQ2hhbmdlZFtyZWNvcmRdKSB7XG4gICAgICBmaWx0ZXJDaGFuZ2VkW3JlY29yZF0gPSBudWxsO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gZmlsdGVyQ2hhbmdlZDtcbn1cbi8qKlxuICogQ2FsbCBieSBwYXJzaW5nIGZpbHRlcnMgZnJvbSBVUkxcbiAqIENoZWNrIGlmIHZhbHVlIG9mIGZpbHRlciB3aXRoaW4gZmlsdGVyIGRvbWFpbiwgaWYgbm90IGFkanVzdCBpdCB0byBtYXRjaFxuICogZmlsdGVyIGRvbWFpblxuICpcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLmFkanVzdFZhbHVlVG9GaWx0ZXJEb21haW59XG4gKiBAcmV0dXJucyB2YWx1ZSAtIGFkanVzdGVkIHZhbHVlIHRvIG1hdGNoIGZpbHRlciBvciBudWxsIHRvIHJlbW92ZSBmaWx0ZXJcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkanVzdFZhbHVlVG9GaWx0ZXJEb21haW4odmFsdWUsIHtkb21haW4sIHR5cGV9KSB7XG4gIGlmICghZG9tYWluIHx8ICF0eXBlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBGSUxURVJfVFlQRVMucmFuZ2U6XG4gICAgY2FzZSBGSUxURVJfVFlQRVMudGltZVJhbmdlOlxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSB8fCB2YWx1ZS5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgcmV0dXJuIGRvbWFpbi5tYXAoZCA9PiBkKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbHVlLm1hcCgoZCwgaSkgPT4gKG5vdE51bGxvclVuZGVmaW5lZChkKSAmJiBpc0luUmFuZ2UoZCwgZG9tYWluKSA/IGQgOiBkb21haW5baV0pKTtcblxuICAgIGNhc2UgRklMVEVSX1RZUEVTLm11bHRpU2VsZWN0OlxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBjb25zdCBmaWx0ZXJlZFZhbHVlID0gdmFsdWUuZmlsdGVyKGQgPT4gZG9tYWluLmluY2x1ZGVzKGQpKTtcbiAgICAgIHJldHVybiBmaWx0ZXJlZFZhbHVlLmxlbmd0aCA/IGZpbHRlcmVkVmFsdWUgOiBbXTtcblxuICAgIGNhc2UgRklMVEVSX1RZUEVTLnNlbGVjdDpcbiAgICAgIHJldHVybiBkb21haW4uaW5jbHVkZXModmFsdWUpID8gdmFsdWUgOiB0cnVlO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG4vKiBlc2xpbnQtZW5hYmxlIGNvbXBsZXhpdHkgKi9cblxuLyoqXG4gKiBDYWxjdWxhdGUgbnVtZXJpYyBkb21haW4gYW5kIHN1aXRhYmxlIHN0ZXBcbiAqXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9maWx0ZXItdXRpbHMnKS5nZXROdW1lcmljRmllbGREb21haW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROdW1lcmljRmllbGREb21haW4oZGF0YUNvbnRhaW5lciwgdmFsdWVBY2Nlc3Nvcikge1xuICBsZXQgZG9tYWluID0gWzAsIDFdO1xuICBsZXQgc3RlcCA9IDAuMTtcblxuICBjb25zdCBtYXBwZWRWYWx1ZSA9IGRhdGFDb250YWluZXIubWFwSW5kZXgodmFsdWVBY2Nlc3Nvcik7XG5cbiAgaWYgKGRhdGFDb250YWluZXIubnVtUm93cygpID4gMSkge1xuICAgIGRvbWFpbiA9IFNjYWxlVXRpbHMuZ2V0TGluZWFyRG9tYWluKG1hcHBlZFZhbHVlKTtcbiAgICBjb25zdCBkaWZmID0gZG9tYWluWzFdIC0gZG9tYWluWzBdO1xuXG4gICAgLy8gaW4gY2FzZSBlcXVhbCBkb21haW4sIFs5NiwgOTZdLCB3aGljaCB3aWxsIGJyZWFrIHF1YW50aXplIHNjYWxlXG4gICAgaWYgKCFkaWZmKSB7XG4gICAgICBkb21haW5bMV0gPSBkb21haW5bMF0gKyAxO1xuICAgIH1cblxuICAgIHN0ZXAgPSBnZXROdW1lcmljU3RlcFNpemUoZGlmZikgfHwgc3RlcDtcbiAgICBkb21haW5bMF0gPSBmb3JtYXROdW1iZXJCeVN0ZXAoZG9tYWluWzBdLCBzdGVwLCAnZmxvb3InKTtcbiAgICBkb21haW5bMV0gPSBmb3JtYXROdW1iZXJCeVN0ZXAoZG9tYWluWzFdLCBzdGVwLCAnY2VpbCcpO1xuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCB7aGlzdG9ncmFtLCBlbmxhcmdlZEhpc3RvZ3JhbX0gPSBnZXRIaXN0b2dyYW0oZG9tYWluLCBtYXBwZWRWYWx1ZSk7XG5cbiAgcmV0dXJuIHtkb21haW4sIHN0ZXAsIGhpc3RvZ3JhbSwgZW5sYXJnZWRIaXN0b2dyYW19O1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBzdGVwIHNpemUgZm9yIHJhbmdlIGFuZCB0aW1lcmFuZ2UgZmlsdGVyXG4gKlxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuZ2V0TnVtZXJpY1N0ZXBTaXplfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TnVtZXJpY1N0ZXBTaXplKGRpZmYpIHtcbiAgZGlmZiA9IE1hdGguYWJzKGRpZmYpO1xuXG4gIGlmIChkaWZmID4gMTAwKSB7XG4gICAgcmV0dXJuIDE7XG4gIH0gZWxzZSBpZiAoZGlmZiA+IDMpIHtcbiAgICByZXR1cm4gMC4wMTtcbiAgfSBlbHNlIGlmIChkaWZmID4gMSkge1xuICAgIHJldHVybiAwLjAwMTtcbiAgfVxuICAvLyBUcnkgdG8gZ2V0IGF0IGxlYXN0IDEwMDAgc3RlcHMgLSBhbmQga2VlcCB0aGUgc3RlcCBzaXplIGJlbG93IHRoYXQgb2ZcbiAgLy8gdGhlIChkaWZmID4gMSkgY2FzZS5cbiAgY29uc3QgeCA9IGRpZmYgLyAxMDAwO1xuICAvLyBGaW5kIHRoZSBleHBvbmVudCBhbmQgdHJ1bmNhdGUgdG8gMTAgdG8gdGhlIHBvd2VyIG9mIHRoYXQgZXhwb25lbnRcblxuICBjb25zdCBleHBvbmVudGlhbEZvcm0gPSB4LnRvRXhwb25lbnRpYWwoKTtcbiAgY29uc3QgZXhwb25lbnQgPSBwYXJzZUZsb2F0KGV4cG9uZW50aWFsRm9ybS5zcGxpdCgnZScpWzFdKTtcblxuICAvLyBHZXR0aW5nIHJlYWR5IGZvciBub2RlIDEyXG4gIC8vIHRoaXMgaXMgd2h5IHdlIG5lZWQgZGVjaW1hbC5qc1xuICAvLyBNYXRoLnBvdygxMCwgLTUpID0gMC4wMDAwMDk5OTk5OTk5OTk5OTk5OTlcbiAgLy8gdGhlIGFib3ZlIHJlc3VsdCBzaG93cyBpbiBicm93c2VyIGFuZCBub2RlIDEwXG4gIC8vIG5vZGUgMTIgYmVoYXZlcyBjb3JyZWN0bHlcbiAgcmV0dXJuIG5ldyBEZWNpbWFsKDEwKS5wb3coZXhwb25lbnQpLnRvTnVtYmVyKCk7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHRpbWVzdGFtcCBkb21haW4gYW5kIHN1aXRhYmxlIHN0ZXBcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLmdldFRpbWVzdGFtcEZpZWxkRG9tYWlufVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGltZXN0YW1wRmllbGREb21haW4oZGF0YUNvbnRhaW5lciwgdmFsdWVBY2Nlc3Nvcikge1xuICAvLyB0byBhdm9pZCBjb252ZXJ0aW5nIHN0cmluZyBmb3JtYXQgdGltZSB0byBlcG9jaFxuICAvLyBldmVyeSB0aW1lIHdlIGNvbXBhcmUgd2Ugc3RvcmUgYSB2YWx1ZSBtYXBwZWQgdG8gaW50IGluIGZpbHRlciBkb21haW5cblxuICBjb25zdCBtYXBwZWRWYWx1ZSA9IGRhdGFDb250YWluZXIubWFwSW5kZXgodmFsdWVBY2Nlc3Nvcik7XG4gIGNvbnN0IGRvbWFpbiA9IFNjYWxlVXRpbHMuZ2V0TGluZWFyRG9tYWluKG1hcHBlZFZhbHVlKTtcbiAgY29uc3QgZGVmYXVsdFRpbWVGb3JtYXQgPSBnZXRUaW1lV2lkZ2V0VGl0bGVGb3JtYXR0ZXIoZG9tYWluKTtcblxuICBsZXQgc3RlcCA9IDAuMDE7XG5cbiAgY29uc3QgZGlmZiA9IGRvbWFpblsxXSAtIGRvbWFpblswXTtcbiAgY29uc3QgZW50cnkgPSBUaW1lc3RhbXBTdGVwTWFwLmZpbmQoZiA9PiBmLm1heCA+PSBkaWZmKTtcbiAgaWYgKGVudHJ5KSB7XG4gICAgc3RlcCA9IGVudHJ5LnN0ZXA7XG4gIH1cblxuICBjb25zdCB7aGlzdG9ncmFtLCBlbmxhcmdlZEhpc3RvZ3JhbX0gPSBnZXRIaXN0b2dyYW0oZG9tYWluLCBtYXBwZWRWYWx1ZSk7XG5cbiAgcmV0dXJuIHtcbiAgICBkb21haW4sXG4gICAgc3RlcCxcbiAgICBtYXBwZWRWYWx1ZSxcbiAgICBoaXN0b2dyYW0sXG4gICAgZW5sYXJnZWRIaXN0b2dyYW0sXG4gICAgZGVmYXVsdFRpbWVGb3JtYXRcbiAgfTtcbn1cblxuLyoqXG4gKlxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuaGlzdG9ncmFtQ29uc3RydWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gaGlzdG9ncmFtQ29uc3RydWN0KGRvbWFpbiwgbWFwcGVkVmFsdWUsIGJpbnMpIHtcbiAgcmV0dXJuIGQzSGlzdG9ncmFtKClcbiAgICAudGhyZXNob2xkcyh0aWNrcyhkb21haW5bMF0sIGRvbWFpblsxXSwgYmlucykpXG4gICAgLmRvbWFpbihkb21haW4pKG1hcHBlZFZhbHVlKVxuICAgIC5tYXAoYmluID0+ICh7XG4gICAgICBjb3VudDogYmluLmxlbmd0aCxcbiAgICAgIHgwOiBiaW4ueDAsXG4gICAgICB4MTogYmluLngxXG4gICAgfSkpO1xufVxuLyoqXG4gKiBDYWxjdWxhdGUgaGlzdG9ncmFtIGZyb20gZG9tYWluIGFuZCBhcnJheSBvZiB2YWx1ZXNcbiAqXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9maWx0ZXItdXRpbHMnKS5nZXRIaXN0b2dyYW19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIaXN0b2dyYW0oZG9tYWluLCBtYXBwZWRWYWx1ZSkge1xuICBjb25zdCBoaXN0b2dyYW0gPSBoaXN0b2dyYW1Db25zdHJ1Y3QoZG9tYWluLCBtYXBwZWRWYWx1ZSwgaGlzdG9ncmFtQmlucyk7XG4gIGNvbnN0IGVubGFyZ2VkSGlzdG9ncmFtID0gaGlzdG9ncmFtQ29uc3RydWN0KGRvbWFpbiwgbWFwcGVkVmFsdWUsIGVubGFyZ2VkSGlzdG9ncmFtQmlucyk7XG5cbiAgcmV0dXJuIHtoaXN0b2dyYW0sIGVubGFyZ2VkSGlzdG9ncmFtfTtcbn1cblxuLyoqXG4gKiByb3VuZCBudW1iZXIgYmFzZWQgb24gc3RlcFxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSB2YWxcbiAqIEBwYXJhbSB7TnVtYmVyfSBzdGVwXG4gKiBAcGFyYW0ge3N0cmluZ30gYm91bmRcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHJvdW5kZWQgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXROdW1iZXJCeVN0ZXAodmFsLCBzdGVwLCBib3VuZCkge1xuICBpZiAoYm91bmQgPT09ICdmbG9vcicpIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcih2YWwgKiAoMSAvIHN0ZXApKSAvICgxIC8gc3RlcCk7XG4gIH1cblxuICByZXR1cm4gTWF0aC5jZWlsKHZhbCAqICgxIC8gc3RlcCkpIC8gKDEgLyBzdGVwKTtcbn1cblxuLyoqXG4gKlxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuaXNJblJhbmdlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJblJhbmdlKHZhbCwgZG9tYWluKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShkb21haW4pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHZhbCA+PSBkb21haW5bMF0gJiYgdmFsIDw9IGRvbWFpblsxXTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBwb2ludCBpcyB3aXRoaW4gdGhlIHByb3ZpZGVkIHBvbHlnb25cbiAqXG4gKiBAcGFyYW0gcG9pbnQgYXMgaW5wdXQgc2VhcmNoIFtsYXQsIGxuZ11cbiAqIEBwYXJhbSBwb2x5Z29uIFBvaW50cyBtdXN0IGJlIHdpdGhpbiB0aGVzZSAoTXVsdGkpUG9seWdvbihzKVxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW5Qb2x5Z29uKHBvaW50LCBwb2x5Z29uKSB7XG4gIHJldHVybiBib29sZWFuV2l0aGluKHR1cmZQb2ludChwb2ludCksIHBvbHlnb24pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRUaW1lRG9tYWluKGRvbWFpbikge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShkb21haW4pICYmIGRvbWFpbi5ldmVyeShOdW1iZXIuaXNGaW5pdGUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFRpbWVXaWRnZXRUaXRsZUZvcm1hdHRlcihkb21haW4pIHtcbiAgaWYgKCFpc1ZhbGlkVGltZURvbWFpbihkb21haW4pKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZG9tYWluWzFdIC0gZG9tYWluWzBdO1xuXG4gIC8vIExvY2FsIGF3YXJlIGZvcm1hdHNcbiAgLy8gaHR0cHM6Ly9tb21lbnRqcy5jb20vZG9jcy8jL3BhcnNpbmcvc3RyaW5nLWZvcm1hdFxuICByZXR1cm4gZGlmZiA+IGR1cmF0aW9uWWVhciA/ICdMJyA6IGRpZmYgPiBkdXJhdGlvbkRheSA/ICdMIExUJyA6ICdMIExUUyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaW1lV2lkZ2V0SGludEZvcm1hdHRlcihkb21haW4pIHtcbiAgaWYgKCFpc1ZhbGlkVGltZURvbWFpbihkb21haW4pKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZG9tYWluWzFdIC0gZG9tYWluWzBdO1xuICByZXR1cm4gZGlmZiA+IGR1cmF0aW9uV2Vla1xuICAgID8gJ0wnXG4gICAgOiBkaWZmID4gZHVyYXRpb25EYXlcbiAgICA/ICdMIExUJ1xuICAgIDogZGlmZiA+IGR1cmF0aW9uSG91clxuICAgID8gJ0xUJ1xuICAgIDogJ0xUUyc7XG59XG5cbi8qKlxuICogU2FuaXR5IGNoZWNrIG9uIGZpbHRlcnMgdG8gcHJlcGFyZSBmb3Igc2F2ZVxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuaXNWYWxpZEZpbHRlclZhbHVlfVxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEZpbHRlclZhbHVlKHR5cGUsIHZhbHVlKSB7XG4gIGlmICghdHlwZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5zZWxlY3Q6XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlO1xuXG4gICAgY2FzZSBGSUxURVJfVFlQRVMucmFuZ2U6XG4gICAgY2FzZSBGSUxURVJfVFlQRVMudGltZVJhbmdlOlxuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmV2ZXJ5KHYgPT4gdiAhPT0gbnVsbCAmJiAhaXNOYU4odikpO1xuXG4gICAgY2FzZSBGSUxURVJfVFlQRVMubXVsdGlTZWxlY3Q6XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgQm9vbGVhbih2YWx1ZS5sZW5ndGgpO1xuXG4gICAgY2FzZSBGSUxURVJfVFlQRVMuaW5wdXQ6XG4gICAgICByZXR1cm4gQm9vbGVhbih2YWx1ZS5sZW5ndGgpO1xuXG4gICAgY2FzZSBGSUxURVJfVFlQRVMucG9seWdvbjpcbiAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZ2V0KHZhbHVlLCBbJ2dlb21ldHJ5JywgJ2Nvb3JkaW5hdGVzJ10pO1xuICAgICAgcmV0dXJuIEJvb2xlYW4odmFsdWUgJiYgdmFsdWUuaWQgJiYgY29vcmRpbmF0ZXMpO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKlxuICpcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLmdldEZpbHRlclBsb3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWx0ZXJQbG90KGZpbHRlciwgZGF0YXNldCkge1xuICBpZiAoZmlsdGVyLnBsb3RUeXBlID09PSBQTE9UX1RZUEVTLmhpc3RvZ3JhbSB8fCAhZmlsdGVyLnlBeGlzKSB7XG4gICAgLy8gaGlzdG9ncmFtIHNob3VsZCBiZSBjYWxjdWxhdGVkIHdoZW4gY3JlYXRlIGZpbHRlclxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IHttYXBwZWRWYWx1ZSA9IFtdfSA9IGZpbHRlcjtcbiAgY29uc3Qge3lBeGlzfSA9IGZpbHRlcjtcbiAgY29uc3QgZmllbGRJZHggPSBkYXRhc2V0LmdldENvbHVtbkZpZWxkSWR4KHlBeGlzLm5hbWUpO1xuICBpZiAoZmllbGRJZHggPCAwKSB7XG4gICAgQ29uc29sZS53YXJuKGB5QXhpcyAke3lBeGlzLm5hbWV9IGRvZXMgbm90IGV4aXN0IGluIGRhdGFzZXRgKTtcbiAgICByZXR1cm4ge2xpbmVDaGFydDoge30sIHlBeGlzfTtcbiAgfVxuXG4gIC8vIHJldHVybiBsaW5lQ2hhcnRcbiAgY29uc3Qgc2VyaWVzID0gZGF0YXNldC5kYXRhQ29udGFpbmVyXG4gICAgLm1hcChcbiAgICAgIChyb3csIHJvd0luZGV4KSA9PiAoe1xuICAgICAgICB4OiBtYXBwZWRWYWx1ZVtyb3dJbmRleF0sXG4gICAgICAgIHk6IHJvdy52YWx1ZUF0KGZpZWxkSWR4KVxuICAgICAgfSksXG4gICAgICB0cnVlXG4gICAgKVxuICAgIC5maWx0ZXIoKHt4LCB5fSkgPT4gTnVtYmVyLmlzRmluaXRlKHgpICYmIE51bWJlci5pc0Zpbml0ZSh5KSlcbiAgICAuc29ydCgoYSwgYikgPT4gYXNjZW5kaW5nKGEueCwgYi54KSk7XG5cbiAgY29uc3QgeURvbWFpbiA9IGV4dGVudChzZXJpZXMsIGQgPT4gZC55KTtcbiAgY29uc3QgeERvbWFpbiA9IFtzZXJpZXNbMF0ueCwgc2VyaWVzW3Nlcmllcy5sZW5ndGggLSAxXS54XTtcblxuICByZXR1cm4ge2xpbmVDaGFydDoge3NlcmllcywgeURvbWFpbiwgeERvbWFpbn0sIHlBeGlzfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRGaWx0ZXJQbG90VHlwZShmaWx0ZXIpIHtcbiAgY29uc3QgZmlsdGVyUGxvdFR5cGVzID0gU3VwcG9ydGVkUGxvdFR5cGVbZmlsdGVyLnR5cGVdO1xuICBpZiAoIWZpbHRlclBsb3RUeXBlcykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKCFmaWx0ZXIueUF4aXMpIHtcbiAgICByZXR1cm4gZmlsdGVyUGxvdFR5cGVzLmRlZmF1bHQ7XG4gIH1cblxuICByZXR1cm4gZmlsdGVyUGxvdFR5cGVzW2ZpbHRlci55QXhpcy50eXBlXSB8fCBudWxsO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gZGF0YXNldElkcyBsaXN0IG9mIGRhdGFzZXQgaWRzIHRvIGJlIGZpbHRlcmVkXG4gKiBAcGFyYW0gZGF0YXNldHMgYWxsIGRhdGFzZXRzXG4gKiBAcGFyYW0gZmlsdGVycyBhbGwgZmlsdGVycyB0byBiZSBhcHBsaWVkIHRvIGRhdGFzZXRzXG4gKiBAcmV0dXJuIGRhdGFzZXRzIC0gbmV3IHVwZGF0ZWQgZGF0YXNldHNcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLmFwcGx5RmlsdGVyc1RvRGF0YXNldHN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUZpbHRlcnNUb0RhdGFzZXRzKGRhdGFzZXRJZHMsIGRhdGFzZXRzLCBmaWx0ZXJzLCBsYXllcnMpIHtcbiAgY29uc3QgZGF0YUlkcyA9IHRvQXJyYXkoZGF0YXNldElkcyk7XG4gIHJldHVybiBkYXRhSWRzLnJlZHVjZSgoYWNjLCBkYXRhSWQpID0+IHtcbiAgICBjb25zdCBsYXllcnNUb0ZpbHRlciA9IChsYXllcnMgfHwgW10pLmZpbHRlcihsID0+IGwuY29uZmlnLmRhdGFJZCA9PT0gZGF0YUlkKTtcbiAgICBjb25zdCBhcHBsaWVkRmlsdGVycyA9IGZpbHRlcnMuZmlsdGVyKGQgPT4gc2hvdWxkQXBwbHlGaWx0ZXIoZCwgZGF0YUlkKSk7XG4gICAgY29uc3QgdGFibGUgPSBkYXRhc2V0c1tkYXRhSWRdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmFjYyxcbiAgICAgIFtkYXRhSWRdOiB0YWJsZS5maWx0ZXJUYWJsZShhcHBsaWVkRmlsdGVycywgbGF5ZXJzVG9GaWx0ZXIsIHt9KVxuICAgIH07XG4gIH0sIGRhdGFzZXRzKTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgbmV3IGZpZWxkIG5hbWUgdmFsdWUgdG8gZmllbHRlciBhbmQgdXBkYXRlIGJvdGggZmlsdGVyIGFuZCBkYXRhc2V0XG4gKiBAcGFyYW0gZmlsdGVyIC0gdG8gYmUgYXBwbGllZCB0aGUgbmV3IGZpZWxkIG5hbWUgb25cbiAqIEBwYXJhbSBkYXRhc2V0IC0gZGF0YXNldCB0aGUgZmllbGQgYmVsb25ncyB0b1xuICogQHBhcmFtIGZpZWxkTmFtZSAtIGZpZWxkLm5hbWVcbiAqIEBwYXJhbSBmaWx0ZXJEYXRhc2V0SW5kZXggLSBmaWVsZC5uYW1lXG4gKiBAcGFyYW0gb3B0aW9uXG4gKiBAcmV0dXJuIC0ge2ZpbHRlciwgZGF0YXNldHN9XG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9maWx0ZXItdXRpbHMnKS5hcHBseUZpbHRlckZpZWxkTmFtZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RmlsdGVyRmllbGROYW1lKGZpbHRlciwgZGF0YXNldCwgZmllbGROYW1lLCBmaWx0ZXJEYXRhc2V0SW5kZXggPSAwLCBvcHRpb24pIHtcbiAgLy8gdXNpbmcgZmlsdGVyRGF0YXNldEluZGV4IHdlIGNhbiBmaWx0ZXIgb25seSB0aGUgc3BlY2lmaWVkIGRhdGFzZXRcbiAgY29uc3QgbWVyZ2VEb21haW4gPSBvcHRpb24gJiYgb3B0aW9uLmhhc093blByb3BlcnR5KCdtZXJnZURvbWFpbicpID8gb3B0aW9uLm1lcmdlRG9tYWluIDogZmFsc2U7XG5cbiAgY29uc3QgZmllbGRJbmRleCA9IGRhdGFzZXQuZ2V0Q29sdW1uRmllbGRJZHgoZmllbGROYW1lKTtcbiAgLy8gaWYgbm8gZmllbGQgd2l0aCBzYW1lIG5hbWUgaXMgZm91bmQsIG1vdmUgdG8gdGhlIG5leHQgZGF0YXNldHNcbiAgaWYgKGZpZWxkSW5kZXggPT09IC0xKSB7XG4gICAgLy8gdGhyb3cgbmV3IEVycm9yKGBmaWVsZEluZGV4IG5vdCBmb3VuZC4gRGF0YXNldCBtdXN0IGNvbnRhaW4gYSBwcm9wZXJ0eSB3aXRoIG5hbWU6ICR7ZmllbGROYW1lfWApO1xuICAgIHJldHVybiB7ZmlsdGVyOiBudWxsLCBkYXRhc2V0fTtcbiAgfVxuXG4gIC8vIFRPRE86IHZhbGlkYXRlIGZpZWxkIHR5cGVcbiAgY29uc3QgZmlsdGVyUHJvcHMgPSBkYXRhc2V0LmdldENvbHVtbkZpbHRlclByb3BzKGZpZWxkTmFtZSk7XG5cbiAgY29uc3QgbmV3RmlsdGVyID0ge1xuICAgIC4uLihtZXJnZURvbWFpbiA/IG1lcmdlRmlsdGVyRG9tYWluU3RlcChmaWx0ZXIsIGZpbHRlclByb3BzKSA6IHsuLi5maWx0ZXIsIC4uLmZpbHRlclByb3BzfSksXG4gICAgbmFtZTogT2JqZWN0LmFzc2lnbihbLi4udG9BcnJheShmaWx0ZXIubmFtZSldLCB7W2ZpbHRlckRhdGFzZXRJbmRleF06IGZpZWxkTmFtZX0pLFxuICAgIGZpZWxkSWR4OiBPYmplY3QuYXNzaWduKFsuLi50b0FycmF5KGZpbHRlci5maWVsZElkeCldLCB7XG4gICAgICBbZmlsdGVyRGF0YXNldEluZGV4XTogZmllbGRJbmRleFxuICAgIH0pLFxuICAgIC8vIFRPRE8sIHNpbmNlIHdlIGFsbG93IHRvIGFkZCBtdWx0aXBsZSBmaWVsZHMgdG8gYSBmaWx0ZXIgd2UgY2FuIG5vIGxvbmdlciBmcmVlemUgdGhlIGZpbHRlclxuICAgIGZyZWV6ZTogdHJ1ZVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgZmlsdGVyOiBuZXdGaWx0ZXIsXG4gICAgZGF0YXNldFxuICB9O1xufVxuXG4vKipcbiAqIE1lcmdlIG9uZSBmaWx0ZXIgd2l0aCBvdGhlciBmaWx0ZXIgcHJvcCBkb21haW5cbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLm1lcmdlRmlsdGVyRG9tYWluU3RlcH1cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRmlsdGVyRG9tYWluU3RlcChmaWx0ZXIsIGZpbHRlclByb3BzKSB7XG4gIGlmICghZmlsdGVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoIWZpbHRlclByb3BzKSB7XG4gICAgcmV0dXJuIGZpbHRlcjtcbiAgfVxuXG4gIGlmICgoZmlsdGVyLmZpZWxkVHlwZSAmJiBmaWx0ZXIuZmllbGRUeXBlICE9PSBmaWx0ZXJQcm9wcy5maWVsZFR5cGUpIHx8ICFmaWx0ZXJQcm9wcy5kb21haW4pIHtcbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgY29uc3QgY29tYmluZWREb21haW4gPSAhZmlsdGVyLmRvbWFpblxuICAgID8gZmlsdGVyUHJvcHMuZG9tYWluXG4gICAgOiBbLi4uKGZpbHRlci5kb21haW4gfHwgW10pLCAuLi4oZmlsdGVyUHJvcHMuZG9tYWluIHx8IFtdKV0uc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuXG4gIGNvbnN0IG5ld0ZpbHRlciA9IHtcbiAgICAuLi5maWx0ZXIsXG4gICAgLi4uZmlsdGVyUHJvcHMsXG4gICAgZG9tYWluOiBbY29tYmluZWREb21haW5bMF0sIGNvbWJpbmVkRG9tYWluW2NvbWJpbmVkRG9tYWluLmxlbmd0aCAtIDFdXVxuICB9O1xuXG4gIHN3aXRjaCAoZmlsdGVyUHJvcHMuZmllbGRUeXBlKSB7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuc3RyaW5nOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmRhdGU6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5uZXdGaWx0ZXIsXG4gICAgICAgIGRvbWFpbjogdW5pcXVlKGNvbWJpbmVkRG9tYWluKS5zb3J0KClcbiAgICAgIH07XG5cbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXA6XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBzdGVwID0gZmlsdGVyLnN0ZXAgPCBmaWx0ZXJQcm9wcy5zdGVwID8gZmlsdGVyLnN0ZXAgOiBmaWx0ZXJQcm9wcy5zdGVwO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5uZXdGaWx0ZXIsXG4gICAgICAgIHN0ZXBcbiAgICAgIH07XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMucmVhbDpcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbmV3RmlsdGVyO1xuICB9XG59XG4vKiBlc2xpbnQtZW5hYmxlIGNvbXBsZXhpdHkgKi9cblxuLyoqXG4gKiBHZW5lcmF0ZXMgcG9seWdvbiBmaWx0ZXJcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLmZlYXR1cmVUb0ZpbHRlclZhbHVlfVxuICovXG5leHBvcnQgY29uc3QgZmVhdHVyZVRvRmlsdGVyVmFsdWUgPSAoZmVhdHVyZSwgZmlsdGVySWQsIHByb3BlcnRpZXMgPSB7fSkgPT4gKHtcbiAgLi4uZmVhdHVyZSxcbiAgaWQ6IGZlYXR1cmUuaWQsXG4gIHByb3BlcnRpZXM6IHtcbiAgICAuLi5mZWF0dXJlLnByb3BlcnRpZXMsXG4gICAgLi4ucHJvcGVydGllcyxcbiAgICBmaWx0ZXJJZFxuICB9XG59KTtcblxuLyoqXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9maWx0ZXItdXRpbHMnKS5nZXRGaWx0ZXJJZEluRmVhdHVyZX1cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEZpbHRlcklkSW5GZWF0dXJlID0gZiA9PiBnZXQoZiwgWydwcm9wZXJ0aWVzJywgJ2ZpbHRlcklkJ10pO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBwb2x5Z29uIGZpbHRlclxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuZ2VuZXJhdGVQb2x5Z29uRmlsdGVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVQb2x5Z29uRmlsdGVyKGxheWVycywgZmVhdHVyZSkge1xuICBjb25zdCBkYXRhSWQgPSBsYXllcnMubWFwKGwgPT4gbC5jb25maWcuZGF0YUlkKS5maWx0ZXIoZCA9PiBkKTtcbiAgY29uc3QgbGF5ZXJJZCA9IGxheWVycy5tYXAobCA9PiBsLmlkKTtcbiAgY29uc3QgbmFtZSA9IGxheWVycy5tYXAobCA9PiBsLmNvbmZpZy5sYWJlbCk7XG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgZmlsdGVyID0gZ2V0RGVmYXVsdEZpbHRlcihkYXRhSWQpO1xuICByZXR1cm4ge1xuICAgIC4uLmZpbHRlcixcbiAgICBmaXhlZERvbWFpbjogdHJ1ZSxcbiAgICB0eXBlOiBGSUxURVJfVFlQRVMucG9seWdvbixcbiAgICBuYW1lLFxuICAgIGxheWVySWQsXG4gICAgdmFsdWU6IGZlYXR1cmVUb0ZpbHRlclZhbHVlKGZlYXR1cmUsIGZpbHRlci5pZCwge2lzVmlzaWJsZTogdHJ1ZX0pXG4gIH07XG59XG5cbi8qKlxuICogUnVuIGZpbHRlciBlbnRpcmVseSBvbiBDUFVcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2ZpbHRlci11dGlscycpLmZpbHRlckRhdGFzZXRDUFV9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJEYXRhc2V0Q1BVKHN0YXRlLCBkYXRhSWQpIHtcbiAgY29uc3QgZGF0YXNldEZpbHRlcnMgPSBzdGF0ZS5maWx0ZXJzLmZpbHRlcihmID0+IGYuZGF0YUlkLmluY2x1ZGVzKGRhdGFJZCkpO1xuICBjb25zdCBkYXRhc2V0ID0gc3RhdGUuZGF0YXNldHNbZGF0YUlkXTtcblxuICBpZiAoIWRhdGFzZXQpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBjb25zdCBjcHVGaWx0ZXJlZERhdGFzZXQgPSBkYXRhc2V0LmZpbHRlclRhYmxlQ1BVKGRhdGFzZXRGaWx0ZXJzLCBzdGF0ZS5sYXllcnMpO1xuXG4gIHJldHVybiBzZXQoWydkYXRhc2V0cycsIGRhdGFJZF0sIGNwdUZpbHRlcmVkRGF0YXNldCwgc3RhdGUpO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHBhcnNlZCBmaWx0ZXJzIHdpdGggZGF0YXNldHMgYW5kIGFkZCBmaWx0ZXJQcm9wcyB0byBmaWVsZFxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykudmFsaWRhdGVGaWx0ZXJzVXBkYXRlRGF0YXNldHN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZpbHRlcnNVcGRhdGVEYXRhc2V0cyhzdGF0ZSwgZmlsdGVyc1RvVmFsaWRhdGUgPSBbXSkge1xuICBjb25zdCB2YWxpZGF0ZWQgPSBbXTtcbiAgY29uc3QgZmFpbGVkID0gW107XG4gIGNvbnN0IHtkYXRhc2V0c30gPSBzdGF0ZTtcbiAgbGV0IHVwZGF0ZWREYXRhc2V0cyA9IGRhdGFzZXRzO1xuXG4gIC8vIG1lcmdlIGZpbHRlcnNcbiAgZmlsdGVyc1RvVmFsaWRhdGUuZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgIC8vIHdlIGNhbiBvbmx5IGxvb2sgZm9yIGRhdGFzZXRzIGRlZmluZSBpbiB0aGUgZmlsdGVyIGRhdGFJZFxuICAgIGNvbnN0IGRhdGFzZXRJZHMgPSB0b0FycmF5KGZpbHRlci5kYXRhSWQpO1xuXG4gICAgLy8gd2UgY2FuIG1lcmdlIGEgZmlsdGVyIG9ubHkgaWYgYWxsIGRhdGFzZXRzIGluIGZpbHRlci5kYXRhSWQgYXJlIGxvYWRlZFxuICAgIGlmIChkYXRhc2V0SWRzLmV2ZXJ5KGQgPT4gZGF0YXNldHNbZF0pKSB7XG4gICAgICAvLyBhbGwgZGF0YXNldElkcyBpbiBmaWx0ZXIgbXVzdCBiZSBwcmVzZW50IHRoZSBzdGF0ZSBkYXRhc2V0c1xuICAgICAgY29uc3Qge2ZpbHRlcjogdmFsaWRhdGVkRmlsdGVyLCBhcHBseVRvRGF0YXNldHMsIGF1Z21lbnRlZERhdGFzZXRzfSA9IGRhdGFzZXRJZHMucmVkdWNlKFxuICAgICAgICAoYWNjLCBkYXRhc2V0SWQpID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRhc2V0ID0gdXBkYXRlZERhdGFzZXRzW2RhdGFzZXRJZF07XG4gICAgICAgICAgY29uc3QgbGF5ZXJzID0gc3RhdGUubGF5ZXJzLmZpbHRlcihsID0+IGwuY29uZmlnLmRhdGFJZCA9PT0gZGF0YXNldC5pZCk7XG4gICAgICAgICAgY29uc3Qge2ZpbHRlcjogdXBkYXRlZEZpbHRlciwgZGF0YXNldDogdXBkYXRlZERhdGFzZXR9ID0gdmFsaWRhdGVGaWx0ZXJXaXRoRGF0YShcbiAgICAgICAgICAgIGFjYy5hdWdtZW50ZWREYXRhc2V0c1tkYXRhc2V0SWRdIHx8IGRhdGFzZXQsXG4gICAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgICBsYXllcnNcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKHVwZGF0ZWRGaWx0ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgLy8gbWVyZ2UgZmlsdGVyIHByb3BzXG4gICAgICAgICAgICAgIGZpbHRlcjogYWNjLmZpbHRlclxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAuLi5hY2MuZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAuLi5tZXJnZUZpbHRlckRvbWFpblN0ZXAoYWNjLCB1cGRhdGVkRmlsdGVyKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogdXBkYXRlZEZpbHRlcixcblxuICAgICAgICAgICAgICBhcHBseVRvRGF0YXNldHM6IFsuLi5hY2MuYXBwbHlUb0RhdGFzZXRzLCBkYXRhc2V0SWRdLFxuXG4gICAgICAgICAgICAgIGF1Z21lbnRlZERhdGFzZXRzOiB7XG4gICAgICAgICAgICAgICAgLi4uYWNjLmF1Z21lbnRlZERhdGFzZXRzLFxuICAgICAgICAgICAgICAgIFtkYXRhc2V0SWRdOiB1cGRhdGVkRGF0YXNldFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBmaWx0ZXI6IG51bGwsXG4gICAgICAgICAgYXBwbHlUb0RhdGFzZXRzOiBbXSxcbiAgICAgICAgICBhdWdtZW50ZWREYXRhc2V0czoge31cbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgaWYgKHZhbGlkYXRlZEZpbHRlciAmJiBpc0VxdWFsKGRhdGFzZXRJZHMsIGFwcGx5VG9EYXRhc2V0cykpIHtcbiAgICAgICAgdmFsaWRhdGVkLnB1c2godmFsaWRhdGVkRmlsdGVyKTtcbiAgICAgICAgdXBkYXRlZERhdGFzZXRzID0ge1xuICAgICAgICAgIC4uLnVwZGF0ZWREYXRhc2V0cyxcbiAgICAgICAgICAuLi5hdWdtZW50ZWREYXRhc2V0c1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmYWlsZWQucHVzaChmaWx0ZXIpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHt2YWxpZGF0ZWQsIGZhaWxlZCwgdXBkYXRlZERhdGFzZXRzfTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZSBpbnRlcnZhbCBiaW5zIGZvciB0aW1lIGZpbHRlclxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuZ2V0SW50ZXJ2YWxCaW5zfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW50ZXJ2YWxCaW5zKGZpbHRlcikge1xuICBjb25zdCB7Ymluc30gPSBmaWx0ZXI7XG4gIGNvbnN0IGludGVydmFsID0gZmlsdGVyLnBsb3RUeXBlPy5pbnRlcnZhbDtcbiAgaWYgKCFpbnRlcnZhbCB8fCAhYmlucyB8fCBPYmplY3Qua2V5cyhiaW5zKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCB2YWx1ZXMgPSBPYmplY3QudmFsdWVzKGJpbnMpO1xuICByZXR1cm4gdmFsdWVzWzBdID8gdmFsdWVzWzBdW2ludGVydmFsXSA6IG51bGw7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxJQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxRQUFBLEdBQUFILHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBTSxjQUFBLEdBQUFKLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTyxRQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxRQUFBLEdBQUFSLE9BQUE7QUFDQSxJ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
|
|
@@ -12,8 +12,8 @@ exports.isValidStyleUrl = isValidStyleUrl;
|
|
|
12
12
|
exports.mergeLayerGroupVisibility = mergeLayerGroupVisibility;
|
|
13
13
|
exports.scaleMapStyleByResolution = scaleMapStyleByResolution;
|
|
14
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
-
var
|
|
16
|
-
var
|
|
15
|
+
var _memoize = _interopRequireDefault(require("lodash/memoize"));
|
|
16
|
+
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
17
17
|
var _defaultSettings = require("../../constants/default-settings");
|
|
18
18
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
19
19
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // Copyright (c) 2022 Uber Technologies, Inc.
|
|
@@ -61,7 +61,7 @@ var resolver = function resolver(_ref2) {
|
|
|
61
61
|
* @param {Object} visibleLayerGroups - visible layers of top map
|
|
62
62
|
* @returns {Object} top map style
|
|
63
63
|
*/
|
|
64
|
-
var editTopMapStyle = exports.editTopMapStyle = (0,
|
|
64
|
+
var editTopMapStyle = exports.editTopMapStyle = (0, _memoize["default"])(function (_ref3) {
|
|
65
65
|
var id = _ref3.id,
|
|
66
66
|
mapStyle = _ref3.mapStyle,
|
|
67
67
|
visibleLayerGroups = _ref3.visibleLayerGroups;
|
|
@@ -90,7 +90,7 @@ var editTopMapStyle = exports.editTopMapStyle = (0, _lodash["default"])(function
|
|
|
90
90
|
* @param {Object} visibleLayerGroups - visible layers of bottom map
|
|
91
91
|
* @returns {Object} bottom map style
|
|
92
92
|
*/
|
|
93
|
-
var editBottomMapStyle = exports.editBottomMapStyle = (0,
|
|
93
|
+
var editBottomMapStyle = exports.editBottomMapStyle = (0, _memoize["default"])(function (_ref4) {
|
|
94
94
|
var id = _ref4.id,
|
|
95
95
|
mapStyle = _ref4.mapStyle,
|
|
96
96
|
visibleLayerGroups = _ref4.visibleLayerGroups;
|
|
@@ -171,7 +171,7 @@ function scaleMapStyleByResolution(mapboxStyle, scale) {
|
|
|
171
171
|
// @ts-ignore
|
|
172
172
|
var labelLayerFilter = labelLayerGroup.filter;
|
|
173
173
|
var zoomOffset = Math.log2(scale);
|
|
174
|
-
var copyStyle = (0,
|
|
174
|
+
var copyStyle = (0, _cloneDeep["default"])(mapboxStyle);
|
|
175
175
|
(copyStyle.layers || []).forEach(function (d) {
|
|
176
176
|
// edit minzoom and maxzoom
|
|
177
177
|
if (d.maxzoom) {
|
|
@@ -210,4 +210,4 @@ function mergeLayerGroupVisibility(defaultLayerGroup, currentLayerGroup) {
|
|
|
210
210
|
return _objectSpread(_objectSpread({}, accu), currentLayerGroup.hasOwnProperty(key) ? (0, _defineProperty2["default"])({}, key, currentLayerGroup[key]) : {});
|
|
211
211
|
}, defaultLayerGroup);
|
|
212
212
|
}
|
|
213
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbG9kYXNoMiIsIl9kZWZhdWx0U2V0dGluZ3MiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm1hcFVybFJnIiwiaHR0cFJnIiwiZ2V0RGVmYXVsdExheWVyR3JvdXBWaXNpYmlsaXR5IiwiX3JlZiIsIl9yZWYkbGF5ZXJHcm91cHMiLCJsYXllckdyb3VwcyIsInJlZHVjZSIsImFjY3UiLCJsYXllciIsInNsdWciLCJkZWZhdWx0VmlzaWJpbGl0eSIsInJlc29sdmVyIiwiX3JlZjIiLCJpZCIsIm1hcFN0eWxlIiwiX3JlZjIkdmlzaWJsZUxheWVyR3JvIiwidmlzaWJsZUxheWVyR3JvdXBzIiwiY29uY2F0IiwiZCIsInNvcnQiLCJqb2luIiwiZWRpdFRvcE1hcFN0eWxlIiwiZXhwb3J0cyIsIm1lbW9pemUiLCJfcmVmMyIsInZpc2libGVGaWx0ZXJzIiwibGciLCJtYXAiLCJmaWx0ZXJlZExheWVycyIsInN0eWxlIiwibGF5ZXJzIiwic29tZSIsIm1hdGNoIiwiZWRpdEJvdHRvbU1hcFN0eWxlIiwiX3JlZjQiLCJpbnZpc2libGVGaWx0ZXJzIiwiZXZlcnkiLCJpc1ZhbGlkU3R5bGVVcmwiLCJ1cmwiLCJCb29sZWFuIiwiZ2V0U3R5bGVEb3dubG9hZFVybCIsInN0eWxlVXJsIiwiYWNjZXNzVG9rZW4iLCJtYXBib3hBcGlVcmwiLCJzdGFydHNXaXRoIiwic3R5bGVJZCIsInJlcGxhY2UiLCJERUZBVUxUX01BUEJPWF9BUElfVVJMIiwiZ2V0U3R5bGVJbWFnZUljb24iLCJfcmVmNSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiX3JlZjUkbWFwYm94QXBpVXJsIiwiX3JlZjUkbWFwU3RhdGUiLCJtYXBTdGF0ZSIsImxvbmdpdHVkZSIsImxhdGl0dWRlIiwiem9vbSIsIl9yZWY1JG1hcFciLCJtYXBXIiwiX3JlZjUkbWFwSCIsIm1hcEgiLCJzY2FsZU1hcFN0eWxlQnlSZXNvbHV0aW9uIiwibWFwYm94U3R5bGUiLCJzY2FsZSIsImxhYmVsTGF5ZXJHcm91cCIsIkRFRkFVTFRfTEFZRVJfR1JPVVBTIiwiZmluZCIsImxhYmVsTGF5ZXJGaWx0ZXIiLCJ6b29tT2Zmc2V0IiwiTWF0aCIsImxvZzIiLCJjb3B5U3R5bGUiLCJjbG9uZERlZXAiLCJtYXh6b29tIiwibWF4IiwibWluem9vbSIsImxheW91dCIsIkFycmF5IiwiaXNBcnJheSIsInN0b3BzIiwic3RvcCIsIm1lcmdlTGF5ZXJHcm91cFZpc2liaWxpdHkiLCJkZWZhdWx0TGF5ZXJHcm91cCIsImN1cnJlbnRMYXllckdyb3VwIiwia2V5IiwiaGFzT3duUHJvcGVydHkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvbWFwLXN0eWxlLXV0aWxzL21hcGJveC1nbC1zdHlsZS1lZGl0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IG1lbW9pemUgZnJvbSAnbG9kYXNoLm1lbW9pemUnO1xuaW1wb3J0IGNsb25kRGVlcCBmcm9tICdsb2Rhc2guY2xvbmVkZWVwJztcbmltcG9ydCB7REVGQVVMVF9MQVlFUl9HUk9VUFMsIERFRkFVTFRfTUFQQk9YX0FQSV9VUkx9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcblxuY29uc3QgbWFwVXJsUmcgPSAvXm1hcGJveDpcXC9cXC9zdHlsZXNcXC9bLWEtejAtOV17MiwyNTZ9XFwvWy1hLXowLTldezIsMjU2fS87XG5jb25zdCBodHRwUmcgPSAvXig/PShodHRwOnxodHRwczopKS87XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0TGF5ZXJHcm91cFZpc2liaWxpdHkoe2xheWVyR3JvdXBzID0gW119KSB7XG4gIHJldHVybiBsYXllckdyb3Vwcy5yZWR1Y2UoXG4gICAgKGFjY3UsIGxheWVyKSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIFtsYXllci5zbHVnXTogbGF5ZXIuZGVmYXVsdFZpc2liaWxpdHlcbiAgICB9KSxcbiAgICB7fVxuICApO1xufVxuXG5jb25zdCByZXNvbHZlciA9ICh7aWQsIG1hcFN0eWxlLCB2aXNpYmxlTGF5ZXJHcm91cHMgPSB7fX0pID0+XG4gIGAke2lkfToke09iamVjdC5rZXlzKHZpc2libGVMYXllckdyb3VwcylcbiAgICAuZmlsdGVyKGQgPT4gdmlzaWJsZUxheWVyR3JvdXBzW2RdKVxuICAgIC5zb3J0KClcbiAgICAuam9pbignLScpfWA7XG5cbi8qKlxuICogRWRpdCBwcmVzZXQgbWFwIHN0eWxlIHRvIGtlZXAgb25seSB2aXNpYmxlIGxheWVyc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXBTdHlsZSAtIHByZXNldCBtYXAgc3R5bGVcbiAqIEBwYXJhbSB7T2JqZWN0fSB2aXNpYmxlTGF5ZXJHcm91cHMgLSB2aXNpYmxlIGxheWVycyBvZiB0b3AgbWFwXG4gKiBAcmV0dXJucyB7T2JqZWN0fSB0b3AgbWFwIHN0eWxlXG4gKi9cbmV4cG9ydCBjb25zdCBlZGl0VG9wTWFwU3R5bGUgPSBtZW1vaXplKCh7aWQsIG1hcFN0eWxlLCB2aXNpYmxlTGF5ZXJHcm91cHN9KSA9PiB7XG4gIGNvbnN0IHZpc2libGVGaWx0ZXJzID0gKG1hcFN0eWxlLmxheWVyR3JvdXBzIHx8IFtdKVxuICAgIC5maWx0ZXIobGcgPT4gdmlzaWJsZUxheWVyR3JvdXBzW2xnLnNsdWddKVxuICAgIC5tYXAobGcgPT4gbGcuZmlsdGVyKTtcblxuICAvLyBpZiB0b3AgbWFwXG4gIC8vIGtlZXAgb25seSB2aXNpYmxlIGxheWVyc1xuICBjb25zdCBmaWx0ZXJlZExheWVycyA9IG1hcFN0eWxlLnN0eWxlLmxheWVycy5maWx0ZXIobGF5ZXIgPT5cbiAgICB2aXNpYmxlRmlsdGVycy5zb21lKG1hdGNoID0+IG1hdGNoKGxheWVyKSlcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIC4uLm1hcFN0eWxlLnN0eWxlLFxuICAgIGxheWVyczogZmlsdGVyZWRMYXllcnNcbiAgfTtcbn0sIHJlc29sdmVyKTtcblxuLyoqXG4gKiBFZGl0IHByZXNldCBtYXAgc3R5bGUgdG8gZmlsdGVyIG91dCBpbnZpc2libGUgbGF5ZXJzXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG1hcFN0eWxlIC0gcHJlc2V0IG1hcCBzdHlsZVxuICogQHBhcmFtIHtPYmplY3R9IHZpc2libGVMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIGJvdHRvbSBtYXBcbiAqIEByZXR1cm5zIHtPYmplY3R9IGJvdHRvbSBtYXAgc3R5bGVcbiAqL1xuZXhwb3J0IGNvbnN0IGVkaXRCb3R0b21NYXBTdHlsZSA9IG1lbW9pemUoKHtpZCwgbWFwU3R5bGUsIHZpc2libGVMYXllckdyb3Vwc30pID0+IHtcbiAgY29uc3QgaW52aXNpYmxlRmlsdGVycyA9IChtYXBTdHlsZS5sYXllckdyb3VwcyB8fCBbXSlcbiAgICAuZmlsdGVyKGxnID0+ICF2aXNpYmxlTGF5ZXJHcm91cHNbbGcuc2x1Z10pXG4gICAgLm1hcChsZyA9PiBsZy5maWx0ZXIpO1xuXG4gIC8vIGlmIGJvdHRvbSBtYXBcbiAgLy8gZmlsdGVyIG91dCBpbnZpc2libGUgbGF5ZXJzXG4gIGNvbnN0IGZpbHRlcmVkTGF5ZXJzID0gbWFwU3R5bGUuc3R5bGUubGF5ZXJzLmZpbHRlcihsYXllciA9PlxuICAgIGludmlzaWJsZUZpbHRlcnMuZXZlcnkobWF0Y2ggPT4gIW1hdGNoKGxheWVyKSlcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIC4uLm1hcFN0eWxlLnN0eWxlLFxuICAgIGxheWVyczogZmlsdGVyZWRMYXllcnNcbiAgfTtcbn0sIHJlc29sdmVyKTtcblxuLy8gdmFsaWQgc3R5bGUgdXJsXG4vLyBtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pmeWwwM2twMXR1bDJzbWY1djJ0YmRkNFxuLy8gbG93ZXJjYXNlIGxldHRlcnMsIG51bWJlcnMgYW5kIGRhc2hlcyBvbmx5LlxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRTdHlsZVVybCh1cmwpIHtcbiAgcmV0dXJuIHR5cGVvZiB1cmwgPT09ICdzdHJpbmcnICYmIEJvb2xlYW4odXJsLm1hdGNoKG1hcFVybFJnKSB8fCB1cmwubWF0Y2goaHR0cFJnKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdHlsZURvd25sb2FkVXJsKHN0eWxlVXJsLCBhY2Nlc3NUb2tlbiwgbWFwYm94QXBpVXJsKSB7XG4gIGlmIChzdHlsZVVybC5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICByZXR1cm4gc3R5bGVVcmw7XG4gIH1cblxuICAvLyBtYXBib3g6Ly9zdHlsZXMvamNrci9jamhjbDBseHYxM2RpMnJwZm95dGRiZHlqXG4gIGlmIChzdHlsZVVybC5zdGFydHNXaXRoKCdtYXBib3g6Ly9zdHlsZXMnKSkge1xuICAgIGNvbnN0IHN0eWxlSWQgPSBzdHlsZVVybC5yZXBsYWNlKCdtYXBib3g6Ly9zdHlsZXMvJywgJycpO1xuXG4gICAgLy8gaHR0cHM6Ly9hcGkubWFwYm94LmNvbS9zdHlsZXMvdjEvaGVzaGFuMDEzMS9jamcxYmZ1bW8xY3dtMnJscmp4a2luZmd3P3BsdWdpbk5hbWU9S2VwbGVyZ2wmYWNjZXNzX3Rva2VuPTx0b2tlbj5cbiAgICByZXR1cm4gYCR7bWFwYm94QXBpVXJsIHx8XG4gICAgICBERUZBVUxUX01BUEJPWF9BUElfVVJMfS9zdHlsZXMvdjEvJHtzdHlsZUlkfT9wbHVnaW5OYW1lPUtlcGxlcmdsJmFjY2Vzc190b2tlbj0ke2FjY2Vzc1Rva2VufWA7XG4gIH1cblxuICAvLyBzdHlsZSB1cmwgbm90IHJlY29nbml6ZWRcbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgc3RhdGljIG1hcCBpbWFnZSBmcm9tIHN0eWxlIFVybCB0byBiZSB1c2VkIGFzIGljb25cbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbVxuICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtLnN0eWxlVXJsXG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyYW0ubWFwYm94QXBpQWNjZXNzVG9rZW5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbS5tYXBib3hBcGlVcmxcbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbS5tYXBTdGF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHBhcmFtLm1hcFdcbiAqIEBwYXJhbSB7bnVtYmVyfSBwYXJhbS5tYXBIXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdHlsZUltYWdlSWNvbih7XG4gIHN0eWxlVXJsLFxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgbWFwYm94QXBpVXJsID0gREVGQVVMVF9NQVBCT1hfQVBJX1VSTCxcbiAgbWFwU3RhdGUgPSB7XG4gICAgbG9uZ2l0dWRlOiAtMTIyLjMzOTEsXG4gICAgbGF0aXR1ZGU6IDM3Ljc5MjIsXG4gICAgem9vbTogOVxuICB9LFxuICBtYXBXID0gNDAwLFxuICBtYXBIID0gMzAwXG59KSB7XG4gIGNvbnN0IHN0eWxlSWQgPSBzdHlsZVVybC5yZXBsYWNlKCdtYXBib3g6Ly9zdHlsZXMvJywgJycpO1xuXG4gIHJldHVybiAoXG4gICAgYCR7bWFwYm94QXBpVXJsfS9zdHlsZXMvdjEvJHtzdHlsZUlkfS9zdGF0aWMvYCArXG4gICAgYCR7bWFwU3RhdGUubG9uZ2l0dWRlfSwke21hcFN0YXRlLmxhdGl0dWRlfSwke21hcFN0YXRlLnpvb219LDAsMC9gICtcbiAgICBgJHttYXBXfXgke21hcEh9YCArXG4gICAgYD9hY2Nlc3NfdG9rZW49JHttYXBib3hBcGlBY2Nlc3NUb2tlbn0mbG9nbz1mYWxzZSZhdHRyaWJ1dGlvbj1mYWxzZWBcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlTWFwU3R5bGVCeVJlc29sdXRpb24obWFwYm94U3R5bGUsIHNjYWxlKSB7XG4gIGlmIChzY2FsZSAhPT0gMSAmJiBtYXBib3hTdHlsZSkge1xuICAgIGNvbnN0IGxhYmVsTGF5ZXJHcm91cCA9IERFRkFVTFRfTEFZRVJfR1JPVVBTLmZpbmQobGcgPT4gbGcuc2x1ZyA9PT0gJ2xhYmVsJyk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHtmaWx0ZXI6IGxhYmVsTGF5ZXJGaWx0ZXJ9ID0gbGFiZWxMYXllckdyb3VwO1xuICAgIGNvbnN0IHpvb21PZmZzZXQgPSBNYXRoLmxvZzIoc2NhbGUpO1xuXG4gICAgY29uc3QgY29weVN0eWxlID0gY2xvbmREZWVwKG1hcGJveFN0eWxlKTtcbiAgICAoY29weVN0eWxlLmxheWVycyB8fCBbXSkuZm9yRWFjaChkID0+IHtcbiAgICAgIC8vIGVkaXQgbWluem9vbSBhbmQgbWF4em9vbVxuICAgICAgaWYgKGQubWF4em9vbSkge1xuICAgICAgICBkLm1heHpvb20gPSBNYXRoLm1heChkLm1heHpvb20gKyB6b29tT2Zmc2V0LCAxKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGQubWluem9vbSkge1xuICAgICAgICBkLm1pbnpvb20gPSBNYXRoLm1heChkLm1pbnpvb20gKyB6b29tT2Zmc2V0LCAxKTtcbiAgICAgIH1cblxuICAgICAgLy8gZWRpdCB0ZXh0IHNpemVcbiAgICAgIGlmIChsYWJlbExheWVyRmlsdGVyKGQpKSB7XG4gICAgICAgIGlmIChkLmxheW91dCAmJiBkLmxheW91dFsndGV4dC1zaXplJ10gJiYgQXJyYXkuaXNBcnJheShkLmxheW91dFsndGV4dC1zaXplJ10uc3RvcHMpKSB7XG4gICAgICAgICAgZC5sYXlvdXRbJ3RleHQtc2l6ZSddLnN0b3BzLmZvckVhY2goc3RvcCA9PiB7XG4gICAgICAgICAgICAvLyB6b29tXG4gICAgICAgICAgICBzdG9wWzBdID0gTWF0aC5tYXgoc3RvcFswXSArIHpvb21PZmZzZXQsIDEpO1xuICAgICAgICAgICAgLy8gc2l6ZVxuICAgICAgICAgICAgc3RvcFsxXSAqPSBzY2FsZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvcHlTdHlsZTtcbiAgfVxuXG4gIHJldHVybiBtYXBib3hTdHlsZTtcbn1cblxuLyoqXG4gKiBXaGVuIHN3aXRjaCB0byBhIG5ldyBzdHlsZSwgdHJ5IHRvIGtlZXAgY3VycmVudCBsYXllciBncm91cCB2aXNpYmlsaXR5XG4gKiBieSBtZXJnaW5nIGRlZmF1bHQgYW5kIGN1cnJlbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0TGF5ZXJHcm91cFxuICogQHBhcmFtIHtPYmplY3R9IGN1cnJlbnRMYXllckdyb3VwXG4gKiBAcmV0dXJuIHtPYmplY3R9IG1lcmdlZExheWVyR3JvdXBzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUxheWVyR3JvdXBWaXNpYmlsaXR5KGRlZmF1bHRMYXllckdyb3VwLCBjdXJyZW50TGF5ZXJHcm91cCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMoZGVmYXVsdExheWVyR3JvdXApLnJlZHVjZShcbiAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIC4uLihjdXJyZW50TGF5ZXJHcm91cC5oYXNPd25Qcm9wZXJ0eShrZXkpID8ge1trZXldOiBjdXJyZW50TGF5ZXJHcm91cFtrZXldfSA6IHt9KVxuICAgIH0pLFxuICAgIGRlZmF1bHRM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
|
|
213
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWVtb2l6ZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2Nsb25lRGVlcCIsIl9kZWZhdWx0U2V0dGluZ3MiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm1hcFVybFJnIiwiaHR0cFJnIiwiZ2V0RGVmYXVsdExheWVyR3JvdXBWaXNpYmlsaXR5IiwiX3JlZiIsIl9yZWYkbGF5ZXJHcm91cHMiLCJsYXllckdyb3VwcyIsInJlZHVjZSIsImFjY3UiLCJsYXllciIsInNsdWciLCJkZWZhdWx0VmlzaWJpbGl0eSIsInJlc29sdmVyIiwiX3JlZjIiLCJpZCIsIm1hcFN0eWxlIiwiX3JlZjIkdmlzaWJsZUxheWVyR3JvIiwidmlzaWJsZUxheWVyR3JvdXBzIiwiY29uY2F0IiwiZCIsInNvcnQiLCJqb2luIiwiZWRpdFRvcE1hcFN0eWxlIiwiZXhwb3J0cyIsIm1lbW9pemUiLCJfcmVmMyIsInZpc2libGVGaWx0ZXJzIiwibGciLCJtYXAiLCJmaWx0ZXJlZExheWVycyIsInN0eWxlIiwibGF5ZXJzIiwic29tZSIsIm1hdGNoIiwiZWRpdEJvdHRvbU1hcFN0eWxlIiwiX3JlZjQiLCJpbnZpc2libGVGaWx0ZXJzIiwiZXZlcnkiLCJpc1ZhbGlkU3R5bGVVcmwiLCJ1cmwiLCJCb29sZWFuIiwiZ2V0U3R5bGVEb3dubG9hZFVybCIsInN0eWxlVXJsIiwiYWNjZXNzVG9rZW4iLCJtYXBib3hBcGlVcmwiLCJzdGFydHNXaXRoIiwic3R5bGVJZCIsInJlcGxhY2UiLCJERUZBVUxUX01BUEJPWF9BUElfVVJMIiwiZ2V0U3R5bGVJbWFnZUljb24iLCJfcmVmNSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiX3JlZjUkbWFwYm94QXBpVXJsIiwiX3JlZjUkbWFwU3RhdGUiLCJtYXBTdGF0ZSIsImxvbmdpdHVkZSIsImxhdGl0dWRlIiwiem9vbSIsIl9yZWY1JG1hcFciLCJtYXBXIiwiX3JlZjUkbWFwSCIsIm1hcEgiLCJzY2FsZU1hcFN0eWxlQnlSZXNvbHV0aW9uIiwibWFwYm94U3R5bGUiLCJzY2FsZSIsImxhYmVsTGF5ZXJHcm91cCIsIkRFRkFVTFRfTEFZRVJfR1JPVVBTIiwiZmluZCIsImxhYmVsTGF5ZXJGaWx0ZXIiLCJ6b29tT2Zmc2V0IiwiTWF0aCIsImxvZzIiLCJjb3B5U3R5bGUiLCJjbG9uZURlZXAiLCJtYXh6b29tIiwibWF4IiwibWluem9vbSIsImxheW91dCIsIkFycmF5IiwiaXNBcnJheSIsInN0b3BzIiwic3RvcCIsIm1lcmdlTGF5ZXJHcm91cFZpc2liaWxpdHkiLCJkZWZhdWx0TGF5ZXJHcm91cCIsImN1cnJlbnRMYXllckdyb3VwIiwia2V5IiwiaGFzT3duUHJvcGVydHkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvbWFwLXN0eWxlLXV0aWxzL21hcGJveC1nbC1zdHlsZS1lZGl0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IG1lbW9pemUgZnJvbSAnbG9kYXNoL21lbW9pemUnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVEZWVwJztcbmltcG9ydCB7REVGQVVMVF9MQVlFUl9HUk9VUFMsIERFRkFVTFRfTUFQQk9YX0FQSV9VUkx9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcblxuY29uc3QgbWFwVXJsUmcgPSAvXm1hcGJveDpcXC9cXC9zdHlsZXNcXC9bLWEtejAtOV17MiwyNTZ9XFwvWy1hLXowLTldezIsMjU2fS87XG5jb25zdCBodHRwUmcgPSAvXig/PShodHRwOnxodHRwczopKS87XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0TGF5ZXJHcm91cFZpc2liaWxpdHkoe2xheWVyR3JvdXBzID0gW119KSB7XG4gIHJldHVybiBsYXllckdyb3Vwcy5yZWR1Y2UoXG4gICAgKGFjY3UsIGxheWVyKSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIFtsYXllci5zbHVnXTogbGF5ZXIuZGVmYXVsdFZpc2liaWxpdHlcbiAgICB9KSxcbiAgICB7fVxuICApO1xufVxuXG5jb25zdCByZXNvbHZlciA9ICh7aWQsIG1hcFN0eWxlLCB2aXNpYmxlTGF5ZXJHcm91cHMgPSB7fX0pID0+XG4gIGAke2lkfToke09iamVjdC5rZXlzKHZpc2libGVMYXllckdyb3VwcylcbiAgICAuZmlsdGVyKGQgPT4gdmlzaWJsZUxheWVyR3JvdXBzW2RdKVxuICAgIC5zb3J0KClcbiAgICAuam9pbignLScpfWA7XG5cbi8qKlxuICogRWRpdCBwcmVzZXQgbWFwIHN0eWxlIHRvIGtlZXAgb25seSB2aXNpYmxlIGxheWVyc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXBTdHlsZSAtIHByZXNldCBtYXAgc3R5bGVcbiAqIEBwYXJhbSB7T2JqZWN0fSB2aXNpYmxlTGF5ZXJHcm91cHMgLSB2aXNpYmxlIGxheWVycyBvZiB0b3AgbWFwXG4gKiBAcmV0dXJucyB7T2JqZWN0fSB0b3AgbWFwIHN0eWxlXG4gKi9cbmV4cG9ydCBjb25zdCBlZGl0VG9wTWFwU3R5bGUgPSBtZW1vaXplKCh7aWQsIG1hcFN0eWxlLCB2aXNpYmxlTGF5ZXJHcm91cHN9KSA9PiB7XG4gIGNvbnN0IHZpc2libGVGaWx0ZXJzID0gKG1hcFN0eWxlLmxheWVyR3JvdXBzIHx8IFtdKVxuICAgIC5maWx0ZXIobGcgPT4gdmlzaWJsZUxheWVyR3JvdXBzW2xnLnNsdWddKVxuICAgIC5tYXAobGcgPT4gbGcuZmlsdGVyKTtcblxuICAvLyBpZiB0b3AgbWFwXG4gIC8vIGtlZXAgb25seSB2aXNpYmxlIGxheWVyc1xuICBjb25zdCBmaWx0ZXJlZExheWVycyA9IG1hcFN0eWxlLnN0eWxlLmxheWVycy5maWx0ZXIobGF5ZXIgPT5cbiAgICB2aXNpYmxlRmlsdGVycy5zb21lKG1hdGNoID0+IG1hdGNoKGxheWVyKSlcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIC4uLm1hcFN0eWxlLnN0eWxlLFxuICAgIGxheWVyczogZmlsdGVyZWRMYXllcnNcbiAgfTtcbn0sIHJlc29sdmVyKTtcblxuLyoqXG4gKiBFZGl0IHByZXNldCBtYXAgc3R5bGUgdG8gZmlsdGVyIG91dCBpbnZpc2libGUgbGF5ZXJzXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG1hcFN0eWxlIC0gcHJlc2V0IG1hcCBzdHlsZVxuICogQHBhcmFtIHtPYmplY3R9IHZpc2libGVMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIGJvdHRvbSBtYXBcbiAqIEByZXR1cm5zIHtPYmplY3R9IGJvdHRvbSBtYXAgc3R5bGVcbiAqL1xuZXhwb3J0IGNvbnN0IGVkaXRCb3R0b21NYXBTdHlsZSA9IG1lbW9pemUoKHtpZCwgbWFwU3R5bGUsIHZpc2libGVMYXllckdyb3Vwc30pID0+IHtcbiAgY29uc3QgaW52aXNpYmxlRmlsdGVycyA9IChtYXBTdHlsZS5sYXllckdyb3VwcyB8fCBbXSlcbiAgICAuZmlsdGVyKGxnID0+ICF2aXNpYmxlTGF5ZXJHcm91cHNbbGcuc2x1Z10pXG4gICAgLm1hcChsZyA9PiBsZy5maWx0ZXIpO1xuXG4gIC8vIGlmIGJvdHRvbSBtYXBcbiAgLy8gZmlsdGVyIG91dCBpbnZpc2libGUgbGF5ZXJzXG4gIGNvbnN0IGZpbHRlcmVkTGF5ZXJzID0gbWFwU3R5bGUuc3R5bGUubGF5ZXJzLmZpbHRlcihsYXllciA9PlxuICAgIGludmlzaWJsZUZpbHRlcnMuZXZlcnkobWF0Y2ggPT4gIW1hdGNoKGxheWVyKSlcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIC4uLm1hcFN0eWxlLnN0eWxlLFxuICAgIGxheWVyczogZmlsdGVyZWRMYXllcnNcbiAgfTtcbn0sIHJlc29sdmVyKTtcblxuLy8gdmFsaWQgc3R5bGUgdXJsXG4vLyBtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pmeWwwM2twMXR1bDJzbWY1djJ0YmRkNFxuLy8gbG93ZXJjYXNlIGxldHRlcnMsIG51bWJlcnMgYW5kIGRhc2hlcyBvbmx5LlxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRTdHlsZVVybCh1cmwpIHtcbiAgcmV0dXJuIHR5cGVvZiB1cmwgPT09ICdzdHJpbmcnICYmIEJvb2xlYW4odXJsLm1hdGNoKG1hcFVybFJnKSB8fCB1cmwubWF0Y2goaHR0cFJnKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdHlsZURvd25sb2FkVXJsKHN0eWxlVXJsLCBhY2Nlc3NUb2tlbiwgbWFwYm94QXBpVXJsKSB7XG4gIGlmIChzdHlsZVVybC5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICByZXR1cm4gc3R5bGVVcmw7XG4gIH1cblxuICAvLyBtYXBib3g6Ly9zdHlsZXMvamNrci9jamhjbDBseHYxM2RpMnJwZm95dGRiZHlqXG4gIGlmIChzdHlsZVVybC5zdGFydHNXaXRoKCdtYXBib3g6Ly9zdHlsZXMnKSkge1xuICAgIGNvbnN0IHN0eWxlSWQgPSBzdHlsZVVybC5yZXBsYWNlKCdtYXBib3g6Ly9zdHlsZXMvJywgJycpO1xuXG4gICAgLy8gaHR0cHM6Ly9hcGkubWFwYm94LmNvbS9zdHlsZXMvdjEvaGVzaGFuMDEzMS9jamcxYmZ1bW8xY3dtMnJscmp4a2luZmd3P3BsdWdpbk5hbWU9S2VwbGVyZ2wmYWNjZXNzX3Rva2VuPTx0b2tlbj5cbiAgICByZXR1cm4gYCR7bWFwYm94QXBpVXJsIHx8XG4gICAgICBERUZBVUxUX01BUEJPWF9BUElfVVJMfS9zdHlsZXMvdjEvJHtzdHlsZUlkfT9wbHVnaW5OYW1lPUtlcGxlcmdsJmFjY2Vzc190b2tlbj0ke2FjY2Vzc1Rva2VufWA7XG4gIH1cblxuICAvLyBzdHlsZSB1cmwgbm90IHJlY29nbml6ZWRcbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgc3RhdGljIG1hcCBpbWFnZSBmcm9tIHN0eWxlIFVybCB0byBiZSB1c2VkIGFzIGljb25cbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbVxuICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtLnN0eWxlVXJsXG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyYW0ubWFwYm94QXBpQWNjZXNzVG9rZW5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbS5tYXBib3hBcGlVcmxcbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbS5tYXBTdGF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHBhcmFtLm1hcFdcbiAqIEBwYXJhbSB7bnVtYmVyfSBwYXJhbS5tYXBIXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdHlsZUltYWdlSWNvbih7XG4gIHN0eWxlVXJsLFxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgbWFwYm94QXBpVXJsID0gREVGQVVMVF9NQVBCT1hfQVBJX1VSTCxcbiAgbWFwU3RhdGUgPSB7XG4gICAgbG9uZ2l0dWRlOiAtMTIyLjMzOTEsXG4gICAgbGF0aXR1ZGU6IDM3Ljc5MjIsXG4gICAgem9vbTogOVxuICB9LFxuICBtYXBXID0gNDAwLFxuICBtYXBIID0gMzAwXG59KSB7XG4gIGNvbnN0IHN0eWxlSWQgPSBzdHlsZVVybC5yZXBsYWNlKCdtYXBib3g6Ly9zdHlsZXMvJywgJycpO1xuXG4gIHJldHVybiAoXG4gICAgYCR7bWFwYm94QXBpVXJsfS9zdHlsZXMvdjEvJHtzdHlsZUlkfS9zdGF0aWMvYCArXG4gICAgYCR7bWFwU3RhdGUubG9uZ2l0dWRlfSwke21hcFN0YXRlLmxhdGl0dWRlfSwke21hcFN0YXRlLnpvb219LDAsMC9gICtcbiAgICBgJHttYXBXfXgke21hcEh9YCArXG4gICAgYD9hY2Nlc3NfdG9rZW49JHttYXBib3hBcGlBY2Nlc3NUb2tlbn0mbG9nbz1mYWxzZSZhdHRyaWJ1dGlvbj1mYWxzZWBcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlTWFwU3R5bGVCeVJlc29sdXRpb24obWFwYm94U3R5bGUsIHNjYWxlKSB7XG4gIGlmIChzY2FsZSAhPT0gMSAmJiBtYXBib3hTdHlsZSkge1xuICAgIGNvbnN0IGxhYmVsTGF5ZXJHcm91cCA9IERFRkFVTFRfTEFZRVJfR1JPVVBTLmZpbmQobGcgPT4gbGcuc2x1ZyA9PT0gJ2xhYmVsJyk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHtmaWx0ZXI6IGxhYmVsTGF5ZXJGaWx0ZXJ9ID0gbGFiZWxMYXllckdyb3VwO1xuICAgIGNvbnN0IHpvb21PZmZzZXQgPSBNYXRoLmxvZzIoc2NhbGUpO1xuXG4gICAgY29uc3QgY29weVN0eWxlID0gY2xvbmVEZWVwKG1hcGJveFN0eWxlKTtcbiAgICAoY29weVN0eWxlLmxheWVycyB8fCBbXSkuZm9yRWFjaChkID0+IHtcbiAgICAgIC8vIGVkaXQgbWluem9vbSBhbmQgbWF4em9vbVxuICAgICAgaWYgKGQubWF4em9vbSkge1xuICAgICAgICBkLm1heHpvb20gPSBNYXRoLm1heChkLm1heHpvb20gKyB6b29tT2Zmc2V0LCAxKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGQubWluem9vbSkge1xuICAgICAgICBkLm1pbnpvb20gPSBNYXRoLm1heChkLm1pbnpvb20gKyB6b29tT2Zmc2V0LCAxKTtcbiAgICAgIH1cblxuICAgICAgLy8gZWRpdCB0ZXh0IHNpemVcbiAgICAgIGlmIChsYWJlbExheWVyRmlsdGVyKGQpKSB7XG4gICAgICAgIGlmIChkLmxheW91dCAmJiBkLmxheW91dFsndGV4dC1zaXplJ10gJiYgQXJyYXkuaXNBcnJheShkLmxheW91dFsndGV4dC1zaXplJ10uc3RvcHMpKSB7XG4gICAgICAgICAgZC5sYXlvdXRbJ3RleHQtc2l6ZSddLnN0b3BzLmZvckVhY2goc3RvcCA9PiB7XG4gICAgICAgICAgICAvLyB6b29tXG4gICAgICAgICAgICBzdG9wWzBdID0gTWF0aC5tYXgoc3RvcFswXSArIHpvb21PZmZzZXQsIDEpO1xuICAgICAgICAgICAgLy8gc2l6ZVxuICAgICAgICAgICAgc3RvcFsxXSAqPSBzY2FsZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvcHlTdHlsZTtcbiAgfVxuXG4gIHJldHVybiBtYXBib3hTdHlsZTtcbn1cblxuLyoqXG4gKiBXaGVuIHN3aXRjaCB0byBhIG5ldyBzdHlsZSwgdHJ5IHRvIGtlZXAgY3VycmVudCBsYXllciBncm91cCB2aXNpYmlsaXR5XG4gKiBieSBtZXJnaW5nIGRlZmF1bHQgYW5kIGN1cnJlbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0TGF5ZXJHcm91cFxuICogQHBhcmFtIHtPYmplY3R9IGN1cnJlbnRMYXllckdyb3VwXG4gKiBAcmV0dXJuIHtPYmplY3R9IG1lcmdlZExheWVyR3JvdXBzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUxheWVyR3JvdXBWaXNpYmlsaXR5KGRlZmF1bHRMYXllckdyb3VwLCBjdXJyZW50TGF5ZXJHcm91cCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMoZGVmYXVsdExheWVyR3JvdXApLnJlZHVjZShcbiAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIC4uLihjdXJyZW50TGF5ZXJHcm91cC5oYXNPd25Qcm9wZXJ0eShrZXkpID8ge1trZXldOiBjdXJyZW50TGF5ZXJHcm91cFtrZXldfSA6IHt9KVxuICAgIH0pLFxuICAgIGRlZmF1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
|