kepler.gl 3.1.0-alpha.6 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/actions/src/action-types.d.ts +2 -0
- package/dist/src/actions/src/ui-state-actions.d.ts +16 -0
- package/dist/src/ai-assistant/src/actions.d.ts +1 -1
- package/dist/src/ai-assistant/src/components/ai-assistant-component.d.ts +2 -1
- package/dist/src/ai-assistant/src/constants.d.ts +3 -3
- package/dist/src/ai-assistant/src/reducers/index.d.ts +1 -1
- package/dist/src/ai-assistant/src/tools/basemap-functions.d.ts +1 -1
- package/dist/src/ai-assistant/src/tools/filter-function.d.ts +1 -1
- package/dist/src/ai-assistant/src/tools/layer-creation-function.d.ts +1 -1
- package/dist/src/ai-assistant/src/tools/layer-style-function.d.ts +1 -1
- package/dist/src/ai-assistant/src/tools/loadurl-function.d.ts +1 -1
- package/dist/src/ai-assistant/src/tools/utils.d.ts +73 -0
- package/dist/src/components/src/common/data-table/index.d.ts +1 -1
- package/dist/src/components/src/common/data-table/option-dropdown.d.ts +3 -3
- package/dist/src/components/src/common/file-uploader/file-drop.d.ts +2 -2
- package/dist/src/components/src/kepler-gl.d.ts +5 -0
- package/dist/src/components/src/loading-indicator.d.ts +13 -0
- package/dist/src/components/src/map-container.d.ts +3 -0
- package/dist/src/constants/src/default-settings.d.ts +1 -0
- package/dist/src/duckdb/src/plugin.d.ts +1 -0
- package/dist/src/duckdb/src/table/duckdb-table-utils.d.ts +13 -0
- package/dist/src/duckdb/src/table/duckdb-table.d.ts +7 -2
- package/dist/src/reducers/src/ui-state-updaters.d.ts +10 -0
- package/dist/src/reducers/src/vis-state-updaters.d.ts +1 -0
- package/dist/src/reducers/src/vis-state.d.ts +4 -0
- package/dist/src/utils/src/application-config.d.ts +2 -0
- package/dist/src/utils/src/observe-dimensions.d.ts +2 -1
- package/package.json +5 -3
- package/src/actions/dist/action-types.d.ts +2 -0
- package/src/actions/dist/action-types.js +2 -1
- package/src/actions/dist/ui-state-actions.d.ts +16 -0
- package/src/actions/dist/ui-state-actions.js +17 -2
- package/src/actions/package.json +8 -8
- package/src/actions/src/action-types.ts +1 -0
- package/src/actions/src/ui-state-actions.ts +22 -0
- package/src/ai-assistant/README.md +76 -0
- package/src/ai-assistant/dist/actions.d.ts +1 -1
- package/src/ai-assistant/dist/actions.js +2 -2
- package/src/ai-assistant/dist/components/ai-assistant-component.d.ts +2 -1
- package/src/ai-assistant/dist/components/ai-assistant-component.js +64 -23
- package/src/ai-assistant/dist/components/ai-assistant-config.js +67 -54
- package/src/ai-assistant/dist/constants.d.ts +3 -3
- package/src/ai-assistant/dist/constants.js +4 -4
- package/src/ai-assistant/dist/reducers/index.d.ts +1 -1
- package/src/ai-assistant/dist/reducers/index.js +2 -2
- package/src/ai-assistant/dist/tools/basemap-functions.d.ts +1 -1
- package/src/ai-assistant/dist/tools/basemap-functions.js +1 -1
- package/src/ai-assistant/dist/tools/filter-function.d.ts +1 -1
- package/src/ai-assistant/dist/tools/filter-function.js +9 -6
- package/src/ai-assistant/dist/tools/layer-creation-function.d.ts +1 -1
- package/src/ai-assistant/dist/tools/layer-creation-function.js +1 -1
- package/src/ai-assistant/dist/tools/layer-style-function.d.ts +1 -1
- package/src/ai-assistant/dist/tools/layer-style-function.js +1 -1
- package/src/ai-assistant/dist/tools/loadurl-function.d.ts +1 -1
- package/src/ai-assistant/dist/tools/loadurl-function.js +1 -1
- package/src/ai-assistant/dist/tools/utils.d.ts +73 -0
- package/src/ai-assistant/dist/tools/utils.js +211 -3
- package/src/ai-assistant/package.json +13 -9
- package/src/ai-assistant/src/actions.ts +2 -2
- package/src/ai-assistant/src/components/ai-assistant-component.tsx +56 -23
- package/src/ai-assistant/src/components/ai-assistant-config.tsx +63 -46
- package/src/ai-assistant/src/config/models.json +32 -0
- package/src/ai-assistant/src/constants.ts +7 -2
- package/src/ai-assistant/src/reducers/index.ts +2 -2
- package/src/ai-assistant/src/tools/basemap-functions.tsx +1 -1
- package/src/ai-assistant/src/tools/filter-function.tsx +11 -7
- package/src/ai-assistant/src/tools/layer-creation-function.tsx +1 -1
- package/src/ai-assistant/src/tools/layer-style-function.tsx +1 -1
- package/src/ai-assistant/src/tools/loadurl-function.tsx +1 -1
- package/src/ai-assistant/src/tools/utils.ts +212 -2
- package/src/cloud-providers/package.json +2 -2
- package/src/common-utils/package.json +3 -3
- package/src/components/dist/common/data-table/header-cell.js +10 -10
- package/src/components/dist/common/data-table/index.d.ts +1 -1
- package/src/components/dist/common/data-table/index.js +1 -1
- package/src/components/dist/common/data-table/option-dropdown.d.ts +3 -3
- package/src/components/dist/common/data-table/option-dropdown.js +5 -5
- package/src/components/dist/common/file-uploader/file-drop.d.ts +2 -2
- package/src/components/dist/common/file-uploader/file-drop.js +1 -1
- package/src/components/dist/common/portaled.js +1 -1
- package/src/components/dist/editor/editor.js +1 -1
- package/src/components/dist/kepler-gl.d.ts +5 -0
- package/src/components/dist/kepler-gl.js +7 -2
- package/src/components/dist/loading-indicator.d.ts +13 -0
- package/src/components/dist/loading-indicator.js +40 -0
- package/src/components/dist/map-container.d.ts +3 -0
- package/src/components/dist/map-container.js +11 -3
- package/src/components/dist/modals/save-map-modal.js +4 -3
- package/src/components/package.json +15 -15
- package/src/components/src/common/data-table/header-cell.tsx +5 -3
- package/src/components/src/common/data-table/index.tsx +1 -1
- package/src/components/src/common/data-table/option-dropdown.tsx +7 -7
- package/src/components/src/common/file-uploader/file-drop.tsx +11 -11
- package/src/components/src/common/portaled.tsx +12 -12
- package/src/components/src/editor/editor.tsx +3 -3
- package/src/components/src/kepler-gl.tsx +7 -2
- package/src/components/src/loading-indicator.tsx +49 -0
- package/src/components/src/map-container.tsx +19 -1
- package/src/components/src/modals/save-map-modal.tsx +6 -2
- package/src/constants/dist/default-settings.d.ts +1 -0
- package/src/constants/dist/default-settings.js +13 -9
- package/src/constants/dist/keyevent.js +1 -1
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/72/80/7a7c561d7985e92aab7b9683e7baf5a0286b353a8f2609c4c71099f668d012be027929e4bbac937f9aa0c9a61be3bd4405136f582895f05aa0313c8efa42 +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/8f/f6/b66955867599392dc69ff1db64419e83c087a82c2e3d4b6418d49ac6bc80e3200dd6c86cdfd4a2cf98ce573f71a5281b86ba3df8a7210e02544f63054191 +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/bd/ba/47ea8fcb11ecd5cd47ad867052e58b1f7e0c8dc5f8918a36fe90eaf45981 +2 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/f0/6e/aadf3c48345aa72e7b2fb92e8c9788d04986b55caf83daa3fbd749c37c44 +2 -0
- package/src/constants/package.json +2 -2
- package/src/constants/src/default-settings.ts +11 -5
- package/src/constants/src/keyevent.ts +2 -2
- package/src/constants/umd/keplergl.min.js +1 -1
- package/src/deckgl-arrow-layers/package.json +1 -1
- package/src/deckgl-layers/package.json +4 -4
- package/src/duckdb/dist/components/preview-data-panel.js +2 -11
- package/src/duckdb/dist/components/sql-panel.js +7 -3
- package/src/duckdb/dist/components/tree.js +5 -4
- package/src/duckdb/dist/plugin.d.ts +1 -0
- package/src/duckdb/dist/plugin.js +9 -2
- package/src/duckdb/dist/processors/data-processor.js +4 -5
- package/src/duckdb/dist/table/duckdb-table-utils.d.ts +13 -0
- package/src/duckdb/dist/table/duckdb-table-utils.js +110 -0
- package/src/duckdb/dist/table/duckdb-table.d.ts +7 -2
- package/src/duckdb/dist/table/duckdb-table.js +189 -44
- package/src/duckdb/package.json +6 -6
- package/src/duckdb/src/components/preview-data-panel.tsx +0 -5
- package/src/duckdb/src/components/sql-panel.tsx +4 -2
- package/src/duckdb/src/components/tree.tsx +5 -1
- package/src/duckdb/src/plugin.ts +8 -1
- package/src/duckdb/src/processors/data-processor.ts +3 -4
- package/src/duckdb/src/table/duckdb-table-utils.ts +106 -0
- package/src/duckdb/src/table/duckdb-table.ts +134 -33
- package/src/effects/package.json +5 -5
- package/src/layers/dist/icon-layer/icon-layer.js +1 -1
- package/src/layers/dist/index.d.ts +3 -0
- package/src/layers/dist/index.js +6 -7
- package/src/layers/dist/point-layer/point-layer.d.ts +1 -1
- package/src/layers/dist/point-layer/point-layer.js +8 -2
- package/src/layers/package.json +9 -9
- package/src/layers/src/icon-layer/icon-layer.ts +8 -10
- package/src/layers/src/index.ts +5 -5
- package/src/layers/src/point-layer/point-layer.ts +6 -1
- package/src/localization/package.json +1 -1
- package/src/processors/dist/data-processor.js +2 -4
- package/src/processors/package.json +7 -7
- package/src/processors/src/data-processor.ts +1 -3
- package/src/reducers/dist/ui-state-updaters.d.ts +10 -0
- package/src/reducers/dist/ui-state-updaters.js +22 -2
- package/src/reducers/dist/ui-state.js +2 -2
- package/src/reducers/dist/vis-state-updaters.d.ts +1 -0
- package/src/reducers/dist/vis-state-updaters.js +21 -5
- package/src/reducers/dist/vis-state.d.ts +4 -0
- package/src/reducers/package.json +16 -16
- package/src/reducers/src/ui-state-updaters.ts +24 -0
- package/src/reducers/src/ui-state.ts +3 -1
- package/src/reducers/src/vis-state-updaters.ts +24 -5
- package/src/schemas/dist/dataset-schema.js +38 -2
- package/src/schemas/package.json +8 -7
- package/src/schemas/src/dataset-schema.ts +43 -1
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/5f/aa/96c67b383dbcd2b95625113a5389c6078fd8a53e6fc73a054229709f2dac1e0a409e7117049485a569fbebf8434a319451842671398904bfe1a7f7b5991c +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/af/aa/228fbff58007b23eea5eb6cc7d2da1f0af1d8a7024129a416ea88b4df0ad7afc7aec93b09f3dd42a98f1d6a6f4dce6b53204818da85ef5becc42f928a64d +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/40/72/cac221d8459e6b743bc62ecdb370ed854b21ec30d3f7f4c06c7d1d7ffde2 +2 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/c1/39/f7cd1d5947ec6e5d82bfa07041271344eb02f9e67bf5823acf2f22c2d01f +2 -0
- package/src/styles/package.json +2 -2
- package/src/styles/umd/keplergl.min.js +1 -1
- package/src/table/dist/dataset-utils.js +10 -4
- package/src/table/package.json +5 -5
- package/src/table/src/dataset-utils.ts +7 -1
- package/src/tasks/package.json +2 -2
- package/src/types/package.json +1 -1
- package/src/types/reducers.d.ts +2 -0
- package/src/utils/dist/application-config.d.ts +2 -0
- package/src/utils/dist/application-config.js +4 -2
- package/src/utils/dist/data-utils.js +14 -2
- package/src/utils/dist/dataset-utils.js +5 -3
- package/src/utils/dist/dom-to-image.js +1 -1
- package/src/utils/dist/dom-utils.js +1 -1
- package/src/utils/dist/map-style-utils/mapbox-gl-style-editor.js +7 -1
- package/src/utils/dist/observe-dimensions.d.ts +2 -1
- package/src/utils/dist/observe-dimensions.js +10 -4
- package/src/utils/dist/utils.js +1 -1
- package/src/utils/package.json +4 -4
- package/src/utils/src/application-config.ts +9 -1
- package/src/utils/src/data-utils.ts +13 -1
- package/src/utils/src/dataset-utils.ts +1 -1
- package/src/utils/src/dom-to-image.ts +5 -6
- package/src/utils/src/dom-utils.ts +15 -15
- package/src/utils/src/map-style-utils/mapbox-gl-style-editor.ts +6 -0
- package/src/utils/src/observe-dimensions.ts +9 -4
- package/src/utils/src/utils.ts +8 -8
- package/umd/keplergl.min.css +1 -1
- package/umd/keplergl.min.js +1499 -1428
|
@@ -311,9 +311,7 @@ function processRowObject(rawData) {
|
|
|
311
311
|
function processGeojson(rawData) {
|
|
312
312
|
var normalizedGeojson = (0, _geojsonNormalize["default"])(rawData);
|
|
313
313
|
if (!normalizedGeojson || !Array.isArray(normalizedGeojson.features)) {
|
|
314
|
-
|
|
315
|
-
throw error;
|
|
316
|
-
// fail to normalize geojson
|
|
314
|
+
throw new Error("Read File Failed: File is not a valid GeoJSON. Read more about [supported file format](".concat(_constants.GUIDES_FILE_FORMAT_DOC, ")"));
|
|
317
315
|
}
|
|
318
316
|
|
|
319
317
|
// getting all feature fields
|
|
@@ -454,4 +452,4 @@ var Processors = exports.Processors = {
|
|
|
454
452
|
getFieldsFromData: _commonUtils.getFieldsFromData,
|
|
455
453
|
parseCsvRowsByFieldType: parseCsvRowsByFieldType
|
|
456
454
|
};
|
|
457
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9kM0RzdiIsIl90eXBlQW5hbHl6ZXIiLCJfZ2VvanNvbk5vcm1hbGl6ZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY29uc3RhbnRzIiwiX3V0aWxzIiwiX2NvbW1vblV0aWxzIiwiX3NjaGVtYXMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJDU1ZfTlVMTFMiLCJleHBvcnRzIiwidHJ5UGFyc2VKc29uU3RyaW5nIiwic3RyIiwiSlNPTiIsInBhcnNlIiwiUEFSU0VfRklFTERfVkFMVUVfRlJPTV9TVFJJTkciLCJBTExfRklFTERfVFlQRVMiLCJ2YWxpZCIsImQiLCJpbnRlZ2VyIiwicGFyc2VJbnQiLCJ0aW1lc3RhbXAiLCJmaWVsZCIsImluY2x1ZGVzIiwiZm9ybWF0IiwiTnVtYmVyIiwicmVhbCIsInBhcnNlRmxvYXQiLCJvYmplY3QiLCJpc1BsYWluT2JqZWN0IiwiYXJyYXkiLCJBcnJheSIsImlzQXJyYXkiLCJoMyIsImgzSXNWYWxpZCIsInByb2Nlc3NDc3ZEYXRhIiwicmF3RGF0YSIsImhlYWRlciIsInJvd3MiLCJoZWFkZXJSb3ciLCJwYXJzZWRSb3dzIiwiY3N2UGFyc2VSb3dzIiwiRXJyb3IiLCJzbGljZSIsImNsZWFuVXBGYWxzeUNzdlZhbHVlIiwic2FtcGxlIiwiZ2V0U2FtcGxlRm9yVHlwZUFuYWx5emUiLCJmaWVsZHMiLCJnZXRGaWVsZHNGcm9tRGF0YSIsInBhcnNlUm93c0J5RmllbGRzIiwiZ2VvanNvbkZpZWxkSWR4IiwiZmluZEluZGV4IiwiZiIsIm5hbWUiLCJwYXJzZUNzdlJvd3NCeUZpZWxkVHlwZSIsImJpbmQiLCJyZSIsIlJlZ0V4cCIsImoiLCJtYXRjaCIsImdlb0ZpZWxkSWR4IiwicGFyc2VyIiwidHlwZSIsImZpcnN0IiwiZmluZCIsIm5vdE51bGxvclVuZGVmaW5lZCIsInJvdyIsInByb3BlcnRpZXMiLCJwcm9jZXNzUm93T2JqZWN0IiwibWFwIiwia2V5IiwicHJvY2Vzc0dlb2pzb24iLCJub3JtYWxpemVkR2VvanNvbiIsIm5vcm1hbGl6ZSIsImZlYXR1cmVzIiwiZXJyb3IiLCJjb25jYXQiLCJHVUlERVNfRklMRV9GT1JNQVRfRE9DIiwiYWxsRGF0YVJvd3MiLCJnZW9tZXRyeSIsIl9nZW9qc29uIiwicmVkdWNlIiwiYWNjdSIsImN1cnIiLCJwcm9jZXNzS2VwbGVyZ2xKU09OIiwic2NoZW1hIiwidW5kZWZpbmVkIiwiS2VwbGVyR2xTY2hlbWEiLCJsb2FkIiwiZGF0YXNldHMiLCJjb25maWciLCJwcm9jZXNzS2VwbGVyZ2xEYXRhc2V0IiwicmVzdWx0cyIsInBhcnNlU2F2ZWREYXRhIiwidG9BcnJheSIsInByb2Nlc3NBcnJvd1RhYmxlIiwiYXJyb3dUYWJsZSIsInByb2Nlc3NBcnJvd0JhdGNoZXMiLCJkYXRhIiwiYmF0Y2hlcyIsImFycm93U2NoZW1hVG9GaWVsZHMiLCJpbmRleCIsIl9maWVsZCRtZXRhZGF0YSRnZXQiLCJpc0dlb0Fycm93Q29sdW1uIiwibWV0YWRhdGEiLCJzdGFydHNXaXRoIiwiaWQiLCJkaXNwbGF5TmFtZSIsImZpZWxkSWR4IiwiZ2VvYXJyb3ciLCJhcnJvd0RhdGFUeXBlVG9GaWVsZFR5cGUiLCJhbmFseXplclR5cGUiLCJBbmFseXplckRBVEFfVFlQRVMiLCJHRU9NRVRSWSIsImFycm93RGF0YVR5cGVUb0FuYWx5emVyRGF0YVR5cGUiLCJ2YWx1ZUFjY2Vzc29yIiwiZGMiLCJ2YWx1ZUF0IiwiYXJyb3dCYXRjaGVzIiwiVGFibGUiLCJjb2xzIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsIm51bUNvbHMiLCJnZXRDaGlsZEF0IiwiREFUQVNFVF9IQU5ETEVSUyIsIkRBVEFTRVRfRk9STUFUUyIsImdlb2pzb24iLCJjc3YiLCJrZXBsZXJnbCIsIlByb2Nlc3NvcnMiLCJhbmFseXplclR5cGVUb0ZpZWxkVHlwZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhLXByb2Nlc3Nvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgKiBhcyBhcnJvdyBmcm9tICdhcGFjaGUtYXJyb3cnO1xuaW1wb3J0IHtjc3ZQYXJzZVJvd3N9IGZyb20gJ2QzLWRzdic7XG5pbXBvcnQge0RBVEFfVFlQRVMgYXMgQW5hbHl6ZXJEQVRBX1RZUEVTfSBmcm9tICd0eXBlLWFuYWx5emVyJztcbmltcG9ydCBub3JtYWxpemUgZnJvbSAnQG1hcGJveC9nZW9qc29uLW5vcm1hbGl6ZSc7XG5pbXBvcnQge0Fycm93VGFibGV9IGZyb20gJ0Bsb2FkZXJzLmdsL3NjaGVtYSc7XG5pbXBvcnQge0FMTF9GSUVMRF9UWVBFUywgREFUQVNFVF9GT1JNQVRTLCBHVUlERVNfRklMRV9GT1JNQVRfRE9DfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge1Byb2Nlc3NvclJlc3VsdCwgRmllbGR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtcbiAgYXJyb3dEYXRhVHlwZVRvQW5hbHl6ZXJEYXRhVHlwZSxcbiAgYXJyb3dEYXRhVHlwZVRvRmllbGRUeXBlLFxuICBoYXNPd25Qcm9wZXJ0eSxcbiAgaXNQbGFpbk9iamVjdFxufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7XG4gIGFuYWx5emVyVHlwZVRvRmllbGRUeXBlLFxuICBnZXRTYW1wbGVGb3JUeXBlQW5hbHl6ZSxcbiAgZ2V0RmllbGRzRnJvbURhdGEsXG4gIGgzSXNWYWxpZCxcbiAgbm90TnVsbG9yVW5kZWZpbmVkLFxuICB0b0FycmF5XG59IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7S2VwbGVyR2xTY2hlbWEsIFBhcnNlZERhdGFzZXQsIFNhdmVkTWFwLCBMb2FkZWRNYXB9IGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG5pbXBvcnQge0ZlYXR1cmV9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5cbi8vIGlmIGFueSBvZiB0aGVzZSB2YWx1ZSBvY2N1cnMgaW4gY3N2LCBwYXJzZSBpdCB0byBudWxsO1xuLy8gY29uc3QgQ1NWX05VTExTID0gWycnLCAnbnVsbCcsICdOVUxMJywgJ051bGwnLCAnTmFOJywgJy9OJ107XG4vLyBtYXRjaGVzIGVtcHR5IHN0cmluZ1xuZXhwb3J0IGNvbnN0IENTVl9OVUxMUyA9IC9eKG51bGx8TlVMTHxOdWxsfE5hTnxcXC9OfHwpJC87XG5cbmZ1bmN0aW9uIHRyeVBhcnNlSnNvblN0cmluZyhzdHIpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShzdHIpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFBBUlNFX0ZJRUxEX1ZBTFVFX0ZST01fU1RSSU5HID0ge1xuICBbQUxMX0ZJRUxEX1RZUEVTLmJvb2xlYW5dOiB7XG4gICAgdmFsaWQ6IChkOiB1bmtub3duKTogYm9vbGVhbiA9PiB0eXBlb2YgZCA9PT0gJ2Jvb2xlYW4nLFxuICAgIHBhcnNlOiAoZDogdW5rbm93bik6IGJvb2xlYW4gPT4gZCA9PT0gJ3RydWUnIHx8IGQgPT09ICdUcnVlJyB8fCBkID09PSAnVFJVRScgfHwgZCA9PT0gJzEnXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuaW50ZWdlcl06IHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFsaWQ6IChkOiB1bmtub3duKTogYm9vbGVhbiA9PiBwYXJzZUludChkLCAxMCkgPT09IGQsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHBhcnNlOiAoZDogdW5rbm93bik6IG51bWJlciA9PiBwYXJzZUludChkLCAxMClcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXBdOiB7XG4gICAgdmFsaWQ6IChkOiB1bmtub3duLCBmaWVsZDogRmllbGQpOiBib29sZWFuID0+XG4gICAgICBbJ3gnLCAnWCddLmluY2x1ZGVzKGZpZWxkLmZvcm1hdCkgPyB0eXBlb2YgZCA9PT0gJ251bWJlcicgOiB0eXBlb2YgZCA9PT0gJ3N0cmluZycsXG4gICAgcGFyc2U6IChkOiBhbnksIGZpZWxkOiBGaWVsZCkgPT4gKFsneCcsICdYJ10uaW5jbHVkZXMoZmllbGQuZm9ybWF0KSA/IE51bWJlcihkKSA6IGQpXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMucmVhbF06IHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFsaWQ6IChkOiB1bmtub3duKTogYm9vbGVhbiA9PiBwYXJzZUZsb2F0KGQpID09PSBkLFxuICAgIC8vIE5vdGUgdGhpcyB3aWxsIHJlc3VsdCBpbiBOYU4gZm9yIHNvbWUgc3RyaW5nXG4gICAgcGFyc2U6IHBhcnNlRmxvYXRcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5vYmplY3RdOiB7XG4gICAgdmFsaWQ6IGlzUGxhaW5PYmplY3QsXG4gICAgcGFyc2U6IHRyeVBhcnNlSnNvblN0cmluZ1xuICB9LFxuXG4gIFtBTExfRklFTERfVFlQRVMuYXJyYXldOiB7XG4gICAgdmFsaWQ6IEFycmF5LmlzQXJyYXksXG4gICAgcGFyc2U6IHRyeVBhcnNlSnNvblN0cmluZ1xuICB9LFxuXG4gIFtBTExfRklFTERfVFlQRVMuaDNdOiB7XG4gICAgdmFsaWQ6IGQgPT4gaDNJc1ZhbGlkKGQpLFxuICAgIHBhcnNlOiBkID0+IGRcbiAgfVxufTtcblxuLyoqXG4gKiBQcm9jZXNzIGNzdiBkYXRhLCBvdXRwdXQgYSBkYXRhIG9iamVjdCB3aXRoIGB7ZmllbGRzOiBbXSwgcm93czogW119YC5cbiAqIFRoZSBkYXRhIG9iamVjdCBjYW4gYmUgd3JhcHBlZCBpbiBhIGBkYXRhc2V0YCBhbmQgcGFzcyB0byBbYGFkZERhdGFUb01hcGBdKC4uL2FjdGlvbnMvYWN0aW9ucy5tZCNhZGRkYXRhdG9tYXApXG4gKiBAcGFyYW0gcmF3RGF0YSByYXcgY3N2IHN0cmluZ1xuICogQHJldHVybnMgZGF0YSBvYmplY3QgYHtmaWVsZHM6IFtdLCByb3dzOiBbXX1gIGNhbiBiZSBwYXNzZWQgdG8gYWRkRGF0YVRvTWFwc1xuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7cHJvY2Vzc0NzdkRhdGF9IGZyb20gJ2tlcGxlci5nbC9wcm9jZXNzb3JzJztcbiAqXG4gKiBjb25zdCB0ZXN0RGF0YSA9IGBncHNfZGF0YS51dGNfdGltZXN0YW1wLGdwc19kYXRhLmxhdCxncHNfZGF0YS5sbmcsZ3BzX2RhdGEudHlwZXMsZXBvY2gsaGFzX3Jlc3VsdCxpZCx0aW1lLGJlZ2ludHJpcF90c191dGMsYmVnaW50cmlwX3RzX2xvY2FsLGRhdGVcbiAqIDIwMTYtMDktMTcgMDA6MDk6NTUsMjkuOTkwMDkzNywzMS4yNTkwNTQyLGRyaXZlcl9hbmFseXRpY3MsMTQ3MjY4ODAwMDAwMCxGYWxzZSwxLDIwMTYtMDktMjNUMDA6MDA6MDAuMDAwWiwyMDE2LTEwLTAxIDA5OjQxOjM5KzAwOjAwLDIwMTYtMTAtMDEgMDk6NDE6MzkrMDA6MDAsMjAxNi0wOS0yM1xuICogMjAxNi0wOS0xNyAwMDoxMDo1NiwyOS45OTI3Njk5LDMxLjI0NjExNDIsZHJpdmVyX2FuYWx5dGljcywxNDcyNjg4MDAwMDAwLEZhbHNlLDIsMjAxNi0wOS0yM1QwMDowMDowMC4wMDBaLDIwMTYtMTAtMDEgMDk6NDY6MzcrMDA6MDAsMjAxNi0xMC0wMSAxNjo0NjozNyswMDowMCwyMDE2LTA5LTIzXG4gKiAyMDE2LTA5LTE3IDAwOjExOjU2LDI5Ljk5MDcyNjEsMzEuMjMxMjc0Mixkcml2ZXJfYW5hbHl0aWNzLDE0NzI2ODgwMDAwMDAsRmFsc2UsMywyMDE2LTA5LTIzVDAwOjAwOjAwLjAwMFosLCwyMDE2LTA5LTIzXG4gKiAyMDE2LTA5LTE3IDAwOjEyOjU4LDI5Ljk4NzAwNzQsMzEuMjE3NTgyNyxkcml2ZXJfYW5hbHl0aWNzLDE0NzI2ODgwMDAwMDAsRmFsc2UsNCwyMDE2LTA5LTIzVDAwOjAwOjAwLjAwMFosLCwyMDE2LTA5LTIzYFxuICpcbiAqIGNvbnN0IGRhdGFzZXQgPSB7XG4gKiAgaW5mbzoge2lkOiAndGVzdF9kYXRhJywgbGFiZWw6ICdNeSBDc3YnfSxcbiAqICBkYXRhOiBwcm9jZXNzQ3N2RGF0YSh0ZXN0RGF0YSlcbiAqIH07XG4gKlxuICogZGlzcGF0Y2goYWRkRGF0YVRvTWFwKHtcbiAqICBkYXRhc2V0czogW2RhdGFzZXRdLFxuICogIG9wdGlvbnM6IHtjZW50ZXJNYXA6IHRydWUsIHJlYWRPbmx5OiB0cnVlfVxuICogfSkpO1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc0NzdkRhdGEocmF3RGF0YTogdW5rbm93bltdW10gfCBzdHJpbmcsIGhlYWRlcj86IHN0cmluZ1tdKTogUHJvY2Vzc29yUmVzdWx0IHtcbiAgbGV0IHJvd3M6IHVua25vd25bXVtdIHwgdW5kZWZpbmVkO1xuICBsZXQgaGVhZGVyUm93OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcblxuICBpZiAodHlwZW9mIHJhd0RhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgcGFyc2VkUm93czogc3RyaW5nW11bXSA9IGNzdlBhcnNlUm93cyhyYXdEYXRhKTtcblxuICAgIGlmICghQXJyYXkuaXNBcnJheShwYXJzZWRSb3dzKSB8fCBwYXJzZWRSb3dzLmxlbmd0aCA8IDIpIHtcbiAgICAgIC8vIGxvb2tzIGxpa2UgYW4gZW1wdHkgZmlsZSwgdGhyb3cgZXJyb3IgdG8gYmUgY2F0Y2hcbiAgICAgIHRocm93IG5ldyBFcnJvcigncHJvY2VzcyBDc3YgRGF0YSBGYWlsZWQ6IENTViBpcyBlbXB0eScpO1xuICAgIH1cbiAgICBoZWFkZXJSb3cgPSBwYXJzZWRSb3dzWzBdO1xuICAgIHJvd3MgPSBwYXJzZWRSb3dzLnNsaWNlKDEpO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocmF3RGF0YSkgJiYgcmF3RGF0YS5sZW5ndGgpIHtcbiAgICByb3dzID0gcmF3RGF0YTtcbiAgICBoZWFkZXJSb3cgPSBoZWFkZXI7XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoaGVhZGVyUm93KSkge1xuICAgICAgLy8gaWYgZGF0YSBpcyBwYXNzZWQgaW4gYXMgYXJyYXkgb2Ygcm93cyBhbmQgbWlzc2luZyBoZWFkZXJcbiAgICAgIC8vIGFzc3VtZSBmaXJzdCByb3cgaXMgaGVhZGVyXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBoZWFkZXJSb3cgPSByYXdEYXRhWzBdO1xuICAgICAgcm93cyA9IHJhd0RhdGEuc2xpY2UoMSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFyb3dzIHx8ICFoZWFkZXJSb3cpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgaW5wdXQgcGFzc2VkIHRvIHByb2Nlc3NDc3ZEYXRhJyk7XG4gIH1cblxuICAvLyBoZXJlIHdlIGFzc3VtZSB0aGUgY3N2IGZpbGUgdGhhdCBwZW9wbGUgdXBsb2FkZWQgd2lsbCBoYXZlIGZpcnN0IHJvd1xuICAvLyBhcyBuYW1lIG9mIHRoZSBjb2x1bW5cblxuICBjbGVhblVwRmFsc3lDc3ZWYWx1ZShyb3dzKTtcbiAgLy8gTm8gbmVlZCB0byBydW4gdHlwZSBkZXRlY3Rpb24gb24gZXZlcnkgZGF0YSBwb2ludFxuICAvLyBoZXJlIHdlIGdldCBhIGxpc3Qgb2Ygbm9uZSBudWxsIHZhbHVlcyB0byBydW4gYW5hbHl6ZSBvblxuICBjb25zdCBzYW1wbGUgPSBnZXRTYW1wbGVGb3JUeXBlQW5hbHl6ZSh7ZmllbGRzOiBoZWFkZXJSb3csIHJvd3N9KTtcbiAgY29uc3QgZmllbGRzID0gZ2V0RmllbGRzRnJvbURhdGEoc2FtcGxlLCBoZWFkZXJSb3cpO1xuICBjb25zdCBwYXJzZWRSb3dzID0gcGFyc2VSb3dzQnlGaWVsZHMocm93cywgZmllbGRzKTtcblxuICByZXR1cm4ge2ZpZWxkcywgcm93czogcGFyc2VkUm93c307XG59XG5cbi8qKlxuICogUGFyc2Ugcm93cyBvZiBjc3YgYnkgYW5hbHl6ZWQgZmllbGQgdHlwZXMuIFNvIHRoYXQgYCcxJ2AgLT4gYDFgLCBgJ1RydWUnYCAtPiBgdHJ1ZWBcbiAqIEBwYXJhbSByb3dzXG4gKiBAcGFyYW0gZmllbGRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVJvd3NCeUZpZWxkcyhyb3dzOiBhbnlbXVtdLCBmaWVsZHM6IEZpZWxkW10pIHtcbiAgLy8gRWRpdCByb3dzIGluIHBsYWNlXG4gIGNvbnN0IGdlb2pzb25GaWVsZElkeCA9IGZpZWxkcy5maW5kSW5kZXgoZiA9PiBmLm5hbWUgPT09ICdfZ2VvanNvbicpO1xuICBmaWVsZHMuZm9yRWFjaChwYXJzZUNzdlJvd3NCeUZpZWxkVHlwZS5iaW5kKG51bGwsIHJvd3MsIGdlb2pzb25GaWVsZElkeCkpO1xuXG4gIHJldHVybiByb3dzO1xufVxuXG4vKipcbiAqIENvbnZlcnQgZmFsc3kgdmFsdWUgaW4gY3N2IGluY2x1ZGluZyBgJycsICdudWxsJywgJ05VTEwnLCAnTnVsbCcsICdOYU4nYCB0byBgbnVsbGAsXG4gKiBzbyB0aGF0IHR5cGUtYW5hbHl6ZXIgd29uJ3QgZGV0ZWN0IGl0IGFzIHN0cmluZ1xuICpcbiAqIEBwYXJhbSByb3dzXG4gKi9cbmZ1bmN0aW9uIGNsZWFuVXBGYWxzeUNzdlZhbHVlKHJvd3M6IHVua25vd25bXVtdKTogdm9pZCB7XG4gIGNvbnN0IHJlID0gbmV3IFJlZ0V4cChDU1ZfTlVMTFMsICdnJyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgcm93c1tpXS5sZW5ndGg7IGorKykge1xuICAgICAgLy8gYW5hbHl6ZXIgd2lsbCBzZXQgYW55IGZpZWxkcyB0byAnc3RyaW5nJyBpZiB0aGVyZSBhcmUgZW1wdHkgdmFsdWVzXG4gICAgICAvLyB3aGljaCB3aWxsIGJlIHBhcnNlZCBhcyAnJyBieSBkMy5jc3ZcbiAgICAgIC8vIGhlcmUgd2UgcGFyc2UgZW1wdHkgZGF0YSBhcyBudWxsXG4gICAgICAvLyBUT0RPOiBjcmVhdGUgd2FybmluZyB3aGVuIGRlbHRlY3QgYENTVl9OVUxMU2AgaW4gdGhlIGRhdGFcbiAgICAgIGlmICh0eXBlb2Ygcm93c1tpXVtqXSA9PT0gJ3N0cmluZycgJiYgKHJvd3NbaV1bal0gYXMgc3RyaW5nKS5tYXRjaChyZSkpIHtcbiAgICAgICAgcm93c1tpXVtqXSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUHJvY2VzcyB1cGxvYWRlZCBjc3YgZmlsZSB0byBwYXJzZSB2YWx1ZSBieSBmaWVsZCB0eXBlXG4gKlxuICogQHBhcmFtIHJvd3NcbiAqIEBwYXJhbSBnZW9GaWVsZElkeCBmaWVsZCBpbmRleFxuICogQHBhcmFtIGZpZWxkXG4gKiBAcGFyYW0gaVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDc3ZSb3dzQnlGaWVsZFR5cGUoXG4gIHJvd3M6IHVua25vd25bXVtdLFxuICBnZW9GaWVsZElkeDogbnVtYmVyLFxuICBmaWVsZDogRmllbGQsXG4gIGk6IG51bWJlclxuKTogdm9pZCB7XG4gIGNvbnN0IHBhcnNlciA9IFBBUlNFX0ZJRUxEX1ZBTFVFX0ZST01fU1RSSU5HW2ZpZWxkLnR5cGVdO1xuICBpZiAocGFyc2VyKSB7XG4gICAgLy8gY2hlY2sgZmlyc3Qgbm90IG51bGwgdmFsdWUgb2YgaXQncyBhbHJlYWR5IHBhcnNlZFxuICAgIGNvbnN0IGZpcnN0ID0gcm93cy5maW5kKHIgPT4gbm90TnVsbG9yVW5kZWZpbmVkKHJbaV0pKTtcbiAgICBpZiAoIWZpcnN0IHx8IHBhcnNlci52YWxpZChmaXJzdFtpXSwgZmllbGQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJvd3MuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgLy8gcGFyc2Ugc3RyaW5nIHZhbHVlIGJhc2VkIG9uIGZpZWxkIHR5cGVcbiAgICAgIGlmIChyb3dbaV0gIT09IG51bGwpIHtcbiAgICAgICAgcm93W2ldID0gcGFyc2VyLnBhcnNlKHJvd1tpXSwgZmllbGQpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZ2VvRmllbGRJZHggPiAtMSAmJlxuICAgICAgICAgIGlzUGxhaW5PYmplY3Qocm93W2dlb0ZpZWxkSWR4XSkgJiZcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgaGFzT3duUHJvcGVydHkocm93W2dlb0ZpZWxkSWR4XSwgJ3Byb3BlcnRpZXMnKVxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgcm93W2dlb0ZpZWxkSWR4XS5wcm9wZXJ0aWVzW2ZpZWxkLm5hbWVdID0gcm93W2ldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuLyogZXNsaW50LWVuYWJsZSBjb21wbGV4aXR5ICovXG5cbi8qKlxuICogUHJvY2VzcyBkYXRhIHdoZXJlIGVhY2ggcm93IGlzIGFuIG9iamVjdCwgb3V0cHV0IGNhbiBiZSBwYXNzZWQgdG8gW2BhZGREYXRhVG9NYXBgXSguLi9hY3Rpb25zL2FjdGlvbnMubWQjYWRkZGF0YXRvbWFwKVxuICogTk9URTogVGhpcyBmdW5jdGlvbiBtYXkgbXV0YXRlIGlucHV0LlxuICogQHBhcmFtIHJhd0RhdGEgYW4gYXJyYXkgb2Ygcm93IG9iamVjdCwgZWFjaCBvYmplY3Qgc2hvdWxkIGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGtleXNcbiAqIEByZXR1cm5zIGRhdGFzZXQgY29udGFpbmluZyBgZmllbGRzYCBhbmQgYHJvd3NgXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHthZGREYXRhVG9NYXB9IGZyb20gJ2tlcGxlci5nbC9hY3Rpb25zJztcbiAqIGltcG9ydCB7cHJvY2Vzc1Jvd09iamVjdH0gZnJvbSAna2VwbGVyLmdsL3Byb2Nlc3NvcnMnO1xuICpcbiAqIGNvbnN0IGRhdGEgPSBbXG4gKiAge2xhdDogMzEuMjcsIGxuZzogMTI3LjU2LCB2YWx1ZTogM30sXG4gKiAge2xhdDogMzEuMjIsIGxuZzogMTI2LjI2LCB2YWx1ZTogMX1cbiAqIF07XG4gKlxuICogZGlzcGF0Y2goYWRkRGF0YVRvTWFwKHtcbiAqICBkYXRhc2V0czoge1xuICogICAgaW5mbzoge2xhYmVsOiAnTXkgRGF0YScsIGlkOiAnbXlfZGF0YSd9LFxuICogICAgZGF0YTogcHJvY2Vzc1Jvd09iamVjdChkYXRhKVxuICogIH1cbiAqIH0pKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NSb3dPYmplY3QocmF3RGF0YTogdW5rbm93bltdKTogUHJvY2Vzc29yUmVzdWx0IHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHJhd0RhdGEpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gZWxzZSBpZiAoIXJhd0RhdGEubGVuZ3RoKSB7XG4gICAgLy8gZGF0YSBpcyBlbXB0eVxuICAgIHJldHVybiB7XG4gICAgICBmaWVsZHM6IFtdLFxuICAgICAgcm93czogW11cbiAgICB9O1xuICB9XG5cbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHJhd0RhdGFbMF0pOyAvLyBbbGF0LCBsbmcsIHZhbHVlXVxuICBjb25zdCByb3dzID0gcmF3RGF0YS5tYXAoZCA9PiBrZXlzLm1hcChrZXkgPT4gZFtrZXldKSk7IC8vIFtbMzEuMjcsIDEyNy41NiwgM11dXG5cbiAgLy8gcm93IG9iamVjdCBjYW4gc3RpbGwgY29udGFpbiB2YWx1ZXMgbGlrZSBgTnVsbGAgb3IgYE4vQWBcbiAgY2xlYW5VcEZhbHN5Q3N2VmFsdWUocm93cyk7XG5cbiAgcmV0dXJuIHByb2Nlc3NDc3ZEYXRhKHJvd3MsIGtleXMpO1xufVxuXG4vKipcbiAqIFByb2Nlc3MgR2VvSlNPTiBbYEZlYXR1cmVDb2xsZWN0aW9uYF0oaHR0cDovL3dpa2kuZ2VvanNvbi5vcmcvR2VvSlNPTl9kcmFmdF92ZXJzaW9uXzYjRmVhdHVyZUNvbGxlY3Rpb24pLFxuICogb3V0cHV0IGEgZGF0YSBvYmplY3Qgd2l0aCBge2ZpZWxkczogW10sIHJvd3M6IFtdfWAuXG4gKiBUaGUgZGF0YSBvYmplY3QgY2FuIGJlIHdyYXBwZWQgaW4gYSBgZGF0YXNldGAgYW5kIHBhc3NlZCB0byBbYGFkZERhdGFUb01hcGBdKC4uL2FjdGlvbnMvYWN0aW9ucy5tZCNhZGRkYXRhdG9tYXApXG4gKiBOT1RFOiBUaGlzIGZ1bmN0aW9uIG1heSBtdXRhdGUgaW5wdXQuXG4gKlxuICogQHBhcmFtIHJhd0RhdGEgcmF3IGdlb2pzb24gZmVhdHVyZSBjb2xsZWN0aW9uXG4gKiBAcmV0dXJucyBkYXRhc2V0IGNvbnRhaW5pbmcgYGZpZWxkc2AgYW5kIGByb3dzYFxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7YWRkRGF0YVRvTWFwfSBmcm9tICdrZXBsZXIuZ2wvYWN0aW9ucyc7XG4gKiBpbXBvcnQge3Byb2Nlc3NHZW9qc29ufSBmcm9tICdrZXBsZXIuZ2wvcHJvY2Vzc29ycyc7XG4gKlxuICogY29uc3QgZ2VvanNvbiA9IHtcbiAqIFx0XCJ0eXBlXCIgOiBcIkZlYXR1cmVDb2xsZWN0aW9uXCIsXG4gKiBcdFwiZmVhdHVyZXNcIiA6IFt7XG4gKiBcdFx0XCJ0eXBlXCIgOiBcIkZlYXR1cmVcIixcbiAqIFx0XHRcInByb3BlcnRpZXNcIiA6IHtcbiAqIFx0XHRcdFwiY2FwYWNpdHlcIiA6IFwiMTBcIixcbiAqIFx0XHRcdFwidHlwZVwiIDogXCJVLVJhY2tcIlxuICogXHRcdH0sXG4gKiBcdFx0XCJnZW9tZXRyeVwiIDoge1xuICogXHRcdFx0XCJ0eXBlXCIgOiBcIlBvaW50XCIsXG4gKiBcdFx0XHRcImNvb3JkaW5hdGVzXCIgOiBbIC03MS4wNzMyODMsIDQyLjQxNzUwMCBdXG4gKiBcdFx0fVxuICogXHR9XVxuICogfTtcbiAqXG4gKiBkaXNwYXRjaChhZGREYXRhVG9NYXAoe1xuICogIGRhdGFzZXRzOiB7XG4gKiAgICBpbmZvOiB7XG4gKiAgICAgIGxhYmVsOiAnU2FtcGxlIFRheGkgVHJpcHMgaW4gTmV3IFlvcmsgQ2l0eScsXG4gKiAgICAgIGlkOiAndGVzdF90cmlwX2RhdGEnXG4gKiAgICB9LFxuICogICAgZGF0YTogcHJvY2Vzc0dlb2pzb24oZ2VvanNvbilcbiAqICB9XG4gKiB9KSk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzR2VvanNvbihyYXdEYXRhOiB1bmtub3duKTogUHJvY2Vzc29yUmVzdWx0IHtcbiAgY29uc3Qgbm9ybWFsaXplZEdlb2pzb24gPSBub3JtYWxpemUocmF3RGF0YSk7XG5cbiAgaWYgKCFub3JtYWxpemVkR2VvanNvbiB8fCAhQXJyYXkuaXNBcnJheShub3JtYWxpemVkR2VvanNvbi5mZWF0dXJlcykpIHtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihcbiAgICAgIGBSZWFkIEZpbGUgRmFpbGVkOiBGaWxlIGlzIG5vdCBhIHZhbGlkIEdlb0pTT04uIFJlYWQgbW9yZSBhYm91dCBbc3VwcG9ydGVkIGZpbGUgZm9ybWF0XSgke0dVSURFU19GSUxFX0ZPUk1BVF9ET0N9KWBcbiAgICApO1xuICAgIHRocm93IGVycm9yO1xuICAgIC8vIGZhaWwgdG8gbm9ybWFsaXplIGdlb2pzb25cbiAgfVxuXG4gIC8vIGdldHRpbmcgYWxsIGZlYXR1cmUgZmllbGRzXG4gIGNvbnN0IGFsbERhdGFSb3dzOiBBcnJheTx7X2dlb2pzb246IEZlYXR1cmV9ICYga2V5b2YgRmVhdHVyZT4gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBub3JtYWxpemVkR2VvanNvbi5mZWF0dXJlcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGYgPSBub3JtYWxpemVkR2VvanNvbi5mZWF0dXJlc1tpXTtcbiAgICBpZiAoZi5nZW9tZXRyeSkge1xuICAgICAgYWxsRGF0YVJvd3MucHVzaCh7XG4gICAgICAgIC8vIGFkZCBmZWF0dXJlIHRvIF9nZW9qc29uIGZpZWxkXG4gICAgICAgIF9nZW9qc29uOiBmLFxuICAgICAgICAuLi4oZi5wcm9wZXJ0aWVzIHx8IHt9KVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIC8vIGdldCBhbGwgdGhlIGZpZWxkXG4gIGNvbnN0IGZpZWxkcyA9IGFsbERhdGFSb3dzLnJlZHVjZTxzdHJpbmdbXT4oKGFjY3UsIGN1cnIpID0+IHtcbiAgICBPYmplY3Qua2V5cyhjdXJyKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoIWFjY3UuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICBhY2N1LnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYWNjdTtcbiAgfSwgW10pO1xuXG4gIC8vIG1ha2Ugc3VyZSBlYWNoIGZlYXR1cmUgaGFzIGV4YWN0IHNhbWUgZmllbGRzXG4gIGFsbERhdGFSb3dzLmZvckVhY2goZCA9PiB7XG4gICAgZmllbGRzLmZvckVhY2goZiA9PiB7XG4gICAgICBpZiAoIShmIGluIGQpKSB7XG4gICAgICAgIGRbZl0gPSBudWxsO1xuICAgICAgICBpZiAoZC5fZ2VvanNvbi5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgZC5fZ2VvanNvbi5wcm9wZXJ0aWVzW2ZdID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gcHJvY2Vzc1Jvd09iamVjdChhbGxEYXRhUm93cyk7XG59XG5cbi8qKlxuICogUHJvY2VzcyBzYXZlZCBrZXBsZXIuZ2wganNvbiB0byBiZSBwYXNzIHRvIFtgYWRkRGF0YVRvTWFwYF0oLi4vYWN0aW9ucy9hY3Rpb25zLm1kI2FkZGRhdGF0b21hcCkuXG4gKiBUaGUganNvbiBvYmplY3Qgc2hvdWxkIGNvbnRhaW4gYGRhdGFzZXRzYCBhbmQgYGNvbmZpZ2AuXG4gKiBAcGFyYW0gcmF3RGF0YVxuICogQHBhcmFtIHNjaGVtYVxuICogQHJldHVybnMgZGF0YXNldHMgYW5kIGNvbmZpZyBge2RhdGFzZXRzOiB7fSwgY29uZmlnOiB7fX1gXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHthZGREYXRhVG9NYXB9IGZyb20gJ2tlcGxlci5nbC9hY3Rpb25zJztcbiAqIGltcG9ydCB7cHJvY2Vzc0tlcGxlcmdsSlNPTn0gZnJvbSAna2VwbGVyLmdsL3Byb2Nlc3NvcnMnO1xuICpcbiAqIGRpc3BhdGNoKGFkZERhdGFUb01hcChwcm9jZXNzS2VwbGVyZ2xKU09OKGtlcGxlckdsSnNvbikpKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NLZXBsZXJnbEpTT04ocmF3RGF0YTogU2F2ZWRNYXAsIHNjaGVtYSA9IEtlcGxlckdsU2NoZW1hKTogTG9hZGVkTWFwIHwgbnVsbCB7XG4gIHJldHVybiByYXdEYXRhID8gc2NoZW1hLmxvYWQocmF3RGF0YS5kYXRhc2V0cywgcmF3RGF0YS5jb25maWcpIDogbnVsbDtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIHNpbmdsZSBvciBhbiBhcnJheSBvZiBkYXRhc2V0cyBzYXZlZCB1c2luZyBrZXBsZXIuZ2wgc2NoZW1hXG4gKiBAcGFyYW0gcmF3RGF0YVxuICogQHBhcmFtIHNjaGVtYVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc0tlcGxlcmdsRGF0YXNldChcbiAgcmF3RGF0YTogb2JqZWN0IHwgb2JqZWN0W10sXG4gIHNjaGVtYSA9IEtlcGxlckdsU2NoZW1hXG4pOiBQYXJzZWREYXRhc2V0IHwgUGFyc2VkRGF0YXNldFtdIHwgbnVsbCB7XG4gIGlmICghcmF3RGF0YSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0cyA9IHNjaGVtYS5wYXJzZVNhdmVkRGF0YSh0b0FycmF5KHJhd0RhdGEpKTtcbiAgaWYgKCFyZXN1bHRzKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkocmF3RGF0YSkgPyByZXN1bHRzIDogcmVzdWx0c1swXTtcbn1cblxuLyoqXG4gKiBQYXJzZSBhcnJvdyB0YWJsZSBhbmQgcmV0dXJuIGEgZGF0YXNldFxuICpcbiAqIEBwYXJhbSBhcnJvd1RhYmxlIEFycm93VGFibGUgdG8gcGFyc2UsIHNlZSBsb2FkZXJzLmdsL3NjaGVtYVxuICogQHJldHVybnMgZGF0YXNldCBjb250YWluaW5nIGBmaWVsZHNgIGFuZCBgcm93c2Agb3IgbnVsbFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc0Fycm93VGFibGUoYXJyb3dUYWJsZTogQXJyb3dUYWJsZSk6IFByb2Nlc3NvclJlc3VsdCB8IG51bGwge1xuICAvLyBAdHMtaWdub3JlIC0gVW5rbm93biBkYXRhIHR5cGUgY2F1c2luZyBidWlsZCBmYWlsdXJlc1xuICByZXR1cm4gcHJvY2Vzc0Fycm93QmF0Y2hlcyhhcnJvd1RhYmxlLmRhdGEuYmF0Y2hlcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJvd1NjaGVtYVRvRmllbGRzKHNjaGVtYTogYXJyb3cuU2NoZW1hKTogRmllbGRbXSB7XG4gIHJldHVybiBzY2hlbWEuZmllbGRzLm1hcCgoZmllbGQ6IGFycm93LkZpZWxkLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaXNHZW9BcnJvd0NvbHVtbiA9IGZpZWxkLm1ldGFkYXRhLmdldCgnQVJST1c6ZXh0ZW5zaW9uOm5hbWUnKT8uc3RhcnRzV2l0aCgnZ2VvYXJyb3cnKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZmllbGQsXG4gICAgICBuYW1lOiBmaWVsZC5uYW1lLFxuICAgICAgaWQ6IGZpZWxkLm5hbWUsXG4gICAgICBkaXNwbGF5TmFtZTogZmllbGQubmFtZSxcbiAgICAgIGZvcm1hdDogJycsXG4gICAgICBmaWVsZElkeDogaW5kZXgsXG4gICAgICB0eXBlOiBpc0dlb0Fycm93Q29sdW1uID8gQUxMX0ZJRUxEX1RZUEVTLmdlb2Fycm93IDogYXJyb3dEYXRhVHlwZVRvRmllbGRUeXBlKGZpZWxkLnR5cGUpLFxuICAgICAgYW5hbHl6ZXJUeXBlOiBpc0dlb0Fycm93Q29sdW1uXG4gICAgICAgID8gQW5hbHl6ZXJEQVRBX1RZUEVTLkdFT01FVFJZXG4gICAgICAgIDogYXJyb3dEYXRhVHlwZVRvQW5hbHl6ZXJEYXRhVHlwZShmaWVsZC50eXBlKSxcbiAgICAgIHZhbHVlQWNjZXNzb3I6IChkYzogYW55KSA9PiBkID0+IHtcbiAgICAgICAgcmV0dXJuIGRjLnZhbHVlQXQoZC5pbmRleCwgaW5kZXgpO1xuICAgICAgfSxcbiAgICAgIG1ldGFkYXRhOiBmaWVsZC5tZXRhZGF0YVxuICAgIH07XG4gIH0pO1xufVxuLyoqXG4gKiBQYXJzZSBhcnJvdyBiYXRjaGVzIHJldHVybmVkIGZyb20gcGFyc2VJbkJhdGNoZXMoKVxuICpcbiAqIEBwYXJhbSBhcnJvd1RhYmxlIHRoZSBhcnJvdyB0YWJsZSB0byBwYXJzZVxuICogQHJldHVybnMgZGF0YXNldCBjb250YWluaW5nIGBmaWVsZHNgIGFuZCBgcm93c2Agb3IgbnVsbFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc0Fycm93QmF0Y2hlcyhhcnJvd0JhdGNoZXM6IGFycm93LlJlY29yZEJhdGNoW10pOiBQcm9jZXNzb3JSZXN1bHQgfCBudWxsIHtcbiAgaWYgKGFycm93QmF0Y2hlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBhcnJvd1RhYmxlID0gbmV3IGFycm93LlRhYmxlKGFycm93QmF0Y2hlcyk7XG4gIGNvbnN0IGZpZWxkcyA9IGFycm93U2NoZW1hVG9GaWVsZHMoYXJyb3dUYWJsZS5zY2hlbWEpO1xuXG4gIGNvbnN0IGNvbHMgPSBbLi4uQXJyYXkoYXJyb3dUYWJsZS5udW1Db2xzKS5rZXlzKCldLm1hcChpID0+IGFycm93VGFibGUuZ2V0Q2hpbGRBdChpKSk7XG5cbiAgLy8gcmV0dXJuIGVtcHR5IHJvd3MgYW5kIHVzZSByYXcgYXJyb3cgdGFibGUgdG8gY29uc3RydWN0IGNvbHVtbi13aXNlIGRhdGEgY29udGFpbmVyXG4gIHJldHVybiB7ZmllbGRzLCByb3dzOiBbXSwgY29scywgbWV0YWRhdGE6IGFycm93VGFibGUuc2NoZW1hLm1ldGFkYXRhfTtcbn1cblxuZXhwb3J0IGNvbnN0IERBVEFTRVRfSEFORExFUlMgPSB7XG4gIFtEQVRBU0VUX0ZPUk1BVFMucm93XTogcHJvY2Vzc1Jvd09iamVjdCxcbiAgW0RBVEFTRVRfRk9STUFUUy5nZW9qc29uXTogcHJvY2Vzc0dlb2pzb24sXG4gIFtEQVRBU0VUX0ZPUk1BVFMuY3N2XTogcHJvY2Vzc0NzdkRhdGEsXG4gIFtEQVRBU0VUX0ZPUk1BVFMuYXJyb3ddOiBwcm9jZXNzQXJyb3dUYWJsZSxcbiAgW0RBVEFTRVRfRk9STUFUUy5rZXBsZXJnbF06IHByb2Nlc3NLZXBsZXJnbERhdGFzZXRcbn07XG5cbmV4cG9ydCBjb25zdCBQcm9jZXNzb3JzOiB7XG4gIHByb2Nlc3NHZW9qc29uOiB0eXBlb2YgcHJvY2Vzc0dlb2pzb247XG4gIHByb2Nlc3NDc3ZEYXRhOiB0eXBlb2YgcHJvY2Vzc0NzdkRhdGE7XG4gIHByb2Nlc3NBcnJvd1RhYmxlOiB0eXBlb2YgcHJvY2Vzc0Fycm93VGFibGU7XG4gIHByb2Nlc3NBcnJvd0JhdGNoZXM6IHR5cGVvZiBwcm9jZXNzQXJyb3dCYXRjaGVzO1xuICBwcm9jZXNzUm93T2JqZWN0OiB0eXBlb2YgcHJvY2Vzc1Jvd09iamVjdDtcbiAgcHJvY2Vzc0tlcGxlcmdsSlNPTjogdHlwZW9mIHByb2Nlc3NLZXBsZXJnbEpTT047XG4gIHByb2Nlc3NLZXBsZXJnbERhdGFzZXQ6IHR5cGVvZiBwcm9jZXNzS2VwbGVyZ2xEYXRhc2V0O1xuICBhbmFseXplclR5cGVUb0ZpZWxkVHlwZTogdHlwZW9mIGFuYWx5emVyVHlwZVRvRmllbGRUeXBlO1xuICBnZXRGaWVsZHNGcm9tRGF0YTogdHlwZW9mIGdldEZpZWxkc0Zyb21EYXRhO1xuICBwYXJzZUNzdlJvd3NCeUZpZWxkVHlwZTogdHlwZW9mIHBhcnNlQ3N2Um93c0J5RmllbGRUeXBlO1xufSA9IHtcbiAgcHJvY2Vzc0dlb2pzb24sXG4gIHByb2Nlc3NDc3ZEYXRhLFxuICBwcm9jZXNzQXJyb3dUYWJsZSxcbiAgcHJvY2Vzc0Fycm93QmF0Y2hlcyxcbiAgcHJvY2Vzc1Jvd09iamVjdCxcbiAgcHJvY2Vzc0tlcGxlcmdsSlNPTixcbiAgcHJvY2Vzc0tlcGxlcmdsRGF0YXNldCxcbiAgYW5hbHl6ZXJUeXBlVG9GaWVsZFR5cGUsXG4gIGdldEZpZWxkc0Zyb21EYXRhLFxuICBwYXJzZUNzdlJvd3NCeUZpZWxkVHlwZVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxLQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxhQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBSixPQUFBO0FBRUEsSUFBQUssVUFBQSxHQUFBTCxPQUFBO0FBRUEsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBTUEsSUFBQU8sWUFBQSxHQUFBUCxPQUFBO0FBUUEsSUFBQVEsUUFBQSxHQUFBUixPQUFBO0FBQXNGLFNBQUFTLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBWCx3QkFBQVcsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENB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
|
|
455
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9kM0RzdiIsIl90eXBlQW5hbHl6ZXIiLCJfZ2VvanNvbk5vcm1hbGl6ZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY29uc3RhbnRzIiwiX3V0aWxzIiwiX2NvbW1vblV0aWxzIiwiX3NjaGVtYXMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJDU1ZfTlVMTFMiLCJleHBvcnRzIiwidHJ5UGFyc2VKc29uU3RyaW5nIiwic3RyIiwiSlNPTiIsInBhcnNlIiwiUEFSU0VfRklFTERfVkFMVUVfRlJPTV9TVFJJTkciLCJBTExfRklFTERfVFlQRVMiLCJ2YWxpZCIsImQiLCJpbnRlZ2VyIiwicGFyc2VJbnQiLCJ0aW1lc3RhbXAiLCJmaWVsZCIsImluY2x1ZGVzIiwiZm9ybWF0IiwiTnVtYmVyIiwicmVhbCIsInBhcnNlRmxvYXQiLCJvYmplY3QiLCJpc1BsYWluT2JqZWN0IiwiYXJyYXkiLCJBcnJheSIsImlzQXJyYXkiLCJoMyIsImgzSXNWYWxpZCIsInByb2Nlc3NDc3ZEYXRhIiwicmF3RGF0YSIsImhlYWRlciIsInJvd3MiLCJoZWFkZXJSb3ciLCJwYXJzZWRSb3dzIiwiY3N2UGFyc2VSb3dzIiwiRXJyb3IiLCJzbGljZSIsImNsZWFuVXBGYWxzeUNzdlZhbHVlIiwic2FtcGxlIiwiZ2V0U2FtcGxlRm9yVHlwZUFuYWx5emUiLCJmaWVsZHMiLCJnZXRGaWVsZHNGcm9tRGF0YSIsInBhcnNlUm93c0J5RmllbGRzIiwiZ2VvanNvbkZpZWxkSWR4IiwiZmluZEluZGV4IiwiZiIsIm5hbWUiLCJwYXJzZUNzdlJvd3NCeUZpZWxkVHlwZSIsImJpbmQiLCJyZSIsIlJlZ0V4cCIsImoiLCJtYXRjaCIsImdlb0ZpZWxkSWR4IiwicGFyc2VyIiwidHlwZSIsImZpcnN0IiwiZmluZCIsIm5vdE51bGxvclVuZGVmaW5lZCIsInJvdyIsInByb3BlcnRpZXMiLCJwcm9jZXNzUm93T2JqZWN0IiwibWFwIiwia2V5IiwicHJvY2Vzc0dlb2pzb24iLCJub3JtYWxpemVkR2VvanNvbiIsIm5vcm1hbGl6ZSIsImZlYXR1cmVzIiwiY29uY2F0IiwiR1VJREVTX0ZJTEVfRk9STUFUX0RPQyIsImFsbERhdGFSb3dzIiwiZ2VvbWV0cnkiLCJfZ2VvanNvbiIsInJlZHVjZSIsImFjY3UiLCJjdXJyIiwicHJvY2Vzc0tlcGxlcmdsSlNPTiIsInNjaGVtYSIsInVuZGVmaW5lZCIsIktlcGxlckdsU2NoZW1hIiwibG9hZCIsImRhdGFzZXRzIiwiY29uZmlnIiwicHJvY2Vzc0tlcGxlcmdsRGF0YXNldCIsInJlc3VsdHMiLCJwYXJzZVNhdmVkRGF0YSIsInRvQXJyYXkiLCJwcm9jZXNzQXJyb3dUYWJsZSIsImFycm93VGFibGUiLCJwcm9jZXNzQXJyb3dCYXRjaGVzIiwiZGF0YSIsImJhdGNoZXMiLCJhcnJvd1NjaGVtYVRvRmllbGRzIiwiaW5kZXgiLCJfZmllbGQkbWV0YWRhdGEkZ2V0IiwiaXNHZW9BcnJvd0NvbHVtbiIsIm1ldGFkYXRhIiwic3RhcnRzV2l0aCIsImlkIiwiZGlzcGxheU5hbWUiLCJmaWVsZElkeCIsImdlb2Fycm93IiwiYXJyb3dEYXRhVHlwZVRvRmllbGRUeXBlIiwiYW5hbHl6ZXJUeXBlIiwiQW5hbHl6ZXJEQVRBX1RZUEVTIiwiR0VPTUVUUlkiLCJhcnJvd0RhdGFUeXBlVG9BbmFseXplckRhdGFUeXBlIiwidmFsdWVBY2Nlc3NvciIsImRjIiwidmFsdWVBdCIsImFycm93QmF0Y2hlcyIsIlRhYmxlIiwiY29scyIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJudW1Db2xzIiwiZ2V0Q2hpbGRBdCIsIkRBVEFTRVRfSEFORExFUlMiLCJEQVRBU0VUX0ZPUk1BVFMiLCJnZW9qc29uIiwiY3N2Iiwia2VwbGVyZ2wiLCJQcm9jZXNzb3JzIiwiYW5hbHl6ZXJUeXBlVG9GaWVsZFR5cGUiXSwic291cmNlcyI6WyIuLi9zcmMvZGF0YS1wcm9jZXNzb3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcbmltcG9ydCB7Y3N2UGFyc2VSb3dzfSBmcm9tICdkMy1kc3YnO1xuaW1wb3J0IHtEQVRBX1RZUEVTIGFzIEFuYWx5emVyREFUQV9UWVBFU30gZnJvbSAndHlwZS1hbmFseXplcic7XG5pbXBvcnQgbm9ybWFsaXplIGZyb20gJ0BtYXBib3gvZ2VvanNvbi1ub3JtYWxpemUnO1xuaW1wb3J0IHtBcnJvd1RhYmxlfSBmcm9tICdAbG9hZGVycy5nbC9zY2hlbWEnO1xuaW1wb3J0IHtBTExfRklFTERfVFlQRVMsIERBVEFTRVRfRk9STUFUUywgR1VJREVTX0ZJTEVfRk9STUFUX0RPQ30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtQcm9jZXNzb3JSZXN1bHQsIEZpZWxkfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7XG4gIGFycm93RGF0YVR5cGVUb0FuYWx5emVyRGF0YVR5cGUsXG4gIGFycm93RGF0YVR5cGVUb0ZpZWxkVHlwZSxcbiAgaGFzT3duUHJvcGVydHksXG4gIGlzUGxhaW5PYmplY3Rcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge1xuICBhbmFseXplclR5cGVUb0ZpZWxkVHlwZSxcbiAgZ2V0U2FtcGxlRm9yVHlwZUFuYWx5emUsXG4gIGdldEZpZWxkc0Zyb21EYXRhLFxuICBoM0lzVmFsaWQsXG4gIG5vdE51bGxvclVuZGVmaW5lZCxcbiAgdG9BcnJheVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge0tlcGxlckdsU2NoZW1hLCBQYXJzZWREYXRhc2V0LCBTYXZlZE1hcCwgTG9hZGVkTWFwfSBmcm9tICdAa2VwbGVyLmdsL3NjaGVtYXMnO1xuaW1wb3J0IHtGZWF0dXJlfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuXG4vLyBpZiBhbnkgb2YgdGhlc2UgdmFsdWUgb2NjdXJzIGluIGNzdiwgcGFyc2UgaXQgdG8gbnVsbDtcbi8vIGNvbnN0IENTVl9OVUxMUyA9IFsnJywgJ251bGwnLCAnTlVMTCcsICdOdWxsJywgJ05hTicsICcvTiddO1xuLy8gbWF0Y2hlcyBlbXB0eSBzdHJpbmdcbmV4cG9ydCBjb25zdCBDU1ZfTlVMTFMgPSAvXihudWxsfE5VTEx8TnVsbHxOYU58XFwvTnx8KSQvO1xuXG5mdW5jdGlvbiB0cnlQYXJzZUpzb25TdHJpbmcoc3RyKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2Uoc3RyKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBQQVJTRV9GSUVMRF9WQUxVRV9GUk9NX1NUUklORyA9IHtcbiAgW0FMTF9GSUVMRF9UWVBFUy5ib29sZWFuXToge1xuICAgIHZhbGlkOiAoZDogdW5rbm93bik6IGJvb2xlYW4gPT4gdHlwZW9mIGQgPT09ICdib29sZWFuJyxcbiAgICBwYXJzZTogKGQ6IHVua25vd24pOiBib29sZWFuID0+IGQgPT09ICd0cnVlJyB8fCBkID09PSAnVHJ1ZScgfHwgZCA9PT0gJ1RSVUUnIHx8IGQgPT09ICcxJ1xuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJdOiB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhbGlkOiAoZDogdW5rbm93bik6IGJvb2xlYW4gPT4gcGFyc2VJbnQoZCwgMTApID09PSBkLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBwYXJzZTogKGQ6IHVua25vd24pOiBudW1iZXIgPT4gcGFyc2VJbnQoZCwgMTApXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMudGltZXN0YW1wXToge1xuICAgIHZhbGlkOiAoZDogdW5rbm93biwgZmllbGQ6IEZpZWxkKTogYm9vbGVhbiA9PlxuICAgICAgWyd4JywgJ1gnXS5pbmNsdWRlcyhmaWVsZC5mb3JtYXQpID8gdHlwZW9mIGQgPT09ICdudW1iZXInIDogdHlwZW9mIGQgPT09ICdzdHJpbmcnLFxuICAgIHBhcnNlOiAoZDogYW55LCBmaWVsZDogRmllbGQpID0+IChbJ3gnLCAnWCddLmluY2x1ZGVzKGZpZWxkLmZvcm1hdCkgPyBOdW1iZXIoZCkgOiBkKVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLnJlYWxdOiB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhbGlkOiAoZDogdW5rbm93bik6IGJvb2xlYW4gPT4gcGFyc2VGbG9hdChkKSA9PT0gZCxcbiAgICAvLyBOb3RlIHRoaXMgd2lsbCByZXN1bHQgaW4gTmFOIGZvciBzb21lIHN0cmluZ1xuICAgIHBhcnNlOiBwYXJzZUZsb2F0XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMub2JqZWN0XToge1xuICAgIHZhbGlkOiBpc1BsYWluT2JqZWN0LFxuICAgIHBhcnNlOiB0cnlQYXJzZUpzb25TdHJpbmdcbiAgfSxcblxuICBbQUxMX0ZJRUxEX1RZUEVTLmFycmF5XToge1xuICAgIHZhbGlkOiBBcnJheS5pc0FycmF5LFxuICAgIHBhcnNlOiB0cnlQYXJzZUpzb25TdHJpbmdcbiAgfSxcblxuICBbQUxMX0ZJRUxEX1RZUEVTLmgzXToge1xuICAgIHZhbGlkOiBkID0+IGgzSXNWYWxpZChkKSxcbiAgICBwYXJzZTogZCA9PiBkXG4gIH1cbn07XG5cbi8qKlxuICogUHJvY2VzcyBjc3YgZGF0YSwgb3V0cHV0IGEgZGF0YSBvYmplY3Qgd2l0aCBge2ZpZWxkczogW10sIHJvd3M6IFtdfWAuXG4gKiBUaGUgZGF0YSBvYmplY3QgY2FuIGJlIHdyYXBwZWQgaW4gYSBgZGF0YXNldGAgYW5kIHBhc3MgdG8gW2BhZGREYXRhVG9NYXBgXSguLi9hY3Rpb25zL2FjdGlvbnMubWQjYWRkZGF0YXRvbWFwKVxuICogQHBhcmFtIHJhd0RhdGEgcmF3IGNzdiBzdHJpbmdcbiAqIEByZXR1cm5zIGRhdGEgb2JqZWN0IGB7ZmllbGRzOiBbXSwgcm93czogW119YCBjYW4gYmUgcGFzc2VkIHRvIGFkZERhdGFUb01hcHNcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQge3Byb2Nlc3NDc3ZEYXRhfSBmcm9tICdrZXBsZXIuZ2wvcHJvY2Vzc29ycyc7XG4gKlxuICogY29uc3QgdGVzdERhdGEgPSBgZ3BzX2RhdGEudXRjX3RpbWVzdGFtcCxncHNfZGF0YS5sYXQsZ3BzX2RhdGEubG5nLGdwc19kYXRhLnR5cGVzLGVwb2NoLGhhc19yZXN1bHQsaWQsdGltZSxiZWdpbnRyaXBfdHNfdXRjLGJlZ2ludHJpcF90c19sb2NhbCxkYXRlXG4gKiAyMDE2LTA5LTE3IDAwOjA5OjU1LDI5Ljk5MDA5MzcsMzEuMjU5MDU0Mixkcml2ZXJfYW5hbHl0aWNzLDE0NzI2ODgwMDAwMDAsRmFsc2UsMSwyMDE2LTA5LTIzVDAwOjAwOjAwLjAwMFosMjAxNi0xMC0wMSAwOTo0MTozOSswMDowMCwyMDE2LTEwLTAxIDA5OjQxOjM5KzAwOjAwLDIwMTYtMDktMjNcbiAqIDIwMTYtMDktMTcgMDA6MTA6NTYsMjkuOTkyNzY5OSwzMS4yNDYxMTQyLGRyaXZlcl9hbmFseXRpY3MsMTQ3MjY4ODAwMDAwMCxGYWxzZSwyLDIwMTYtMDktMjNUMDA6MDA6MDAuMDAwWiwyMDE2LTEwLTAxIDA5OjQ2OjM3KzAwOjAwLDIwMTYtMTAtMDEgMTY6NDY6MzcrMDA6MDAsMjAxNi0wOS0yM1xuICogMjAxNi0wOS0xNyAwMDoxMTo1NiwyOS45OTA3MjYxLDMxLjIzMTI3NDIsZHJpdmVyX2FuYWx5dGljcywxNDcyNjg4MDAwMDAwLEZhbHNlLDMsMjAxNi0wOS0yM1QwMDowMDowMC4wMDBaLCwsMjAxNi0wOS0yM1xuICogMjAxNi0wOS0xNyAwMDoxMjo1OCwyOS45ODcwMDc0LDMxLjIxNzU4MjcsZHJpdmVyX2FuYWx5dGljcywxNDcyNjg4MDAwMDAwLEZhbHNlLDQsMjAxNi0wOS0yM1QwMDowMDowMC4wMDBaLCwsMjAxNi0wOS0yM2BcbiAqXG4gKiBjb25zdCBkYXRhc2V0ID0ge1xuICogIGluZm86IHtpZDogJ3Rlc3RfZGF0YScsIGxhYmVsOiAnTXkgQ3N2J30sXG4gKiAgZGF0YTogcHJvY2Vzc0NzdkRhdGEodGVzdERhdGEpXG4gKiB9O1xuICpcbiAqIGRpc3BhdGNoKGFkZERhdGFUb01hcCh7XG4gKiAgZGF0YXNldHM6IFtkYXRhc2V0XSxcbiAqICBvcHRpb25zOiB7Y2VudGVyTWFwOiB0cnVlLCByZWFkT25seTogdHJ1ZX1cbiAqIH0pKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NDc3ZEYXRhKHJhd0RhdGE6IHVua25vd25bXVtdIHwgc3RyaW5nLCBoZWFkZXI/OiBzdHJpbmdbXSk6IFByb2Nlc3NvclJlc3VsdCB7XG4gIGxldCByb3dzOiB1bmtub3duW11bXSB8IHVuZGVmaW5lZDtcbiAgbGV0IGhlYWRlclJvdzogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbiAgaWYgKHR5cGVvZiByYXdEYXRhID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IHBhcnNlZFJvd3M6IHN0cmluZ1tdW10gPSBjc3ZQYXJzZVJvd3MocmF3RGF0YSk7XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocGFyc2VkUm93cykgfHwgcGFyc2VkUm93cy5sZW5ndGggPCAyKSB7XG4gICAgICAvLyBsb29rcyBsaWtlIGFuIGVtcHR5IGZpbGUsIHRocm93IGVycm9yIHRvIGJlIGNhdGNoXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MgQ3N2IERhdGEgRmFpbGVkOiBDU1YgaXMgZW1wdHknKTtcbiAgICB9XG4gICAgaGVhZGVyUm93ID0gcGFyc2VkUm93c1swXTtcbiAgICByb3dzID0gcGFyc2VkUm93cy5zbGljZSgxKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJhd0RhdGEpICYmIHJhd0RhdGEubGVuZ3RoKSB7XG4gICAgcm93cyA9IHJhd0RhdGE7XG4gICAgaGVhZGVyUm93ID0gaGVhZGVyO1xuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGhlYWRlclJvdykpIHtcbiAgICAgIC8vIGlmIGRhdGEgaXMgcGFzc2VkIGluIGFzIGFycmF5IG9mIHJvd3MgYW5kIG1pc3NpbmcgaGVhZGVyXG4gICAgICAvLyBhc3N1bWUgZmlyc3Qgcm93IGlzIGhlYWRlclxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaGVhZGVyUm93ID0gcmF3RGF0YVswXTtcbiAgICAgIHJvd3MgPSByYXdEYXRhLnNsaWNlKDEpO1xuICAgIH1cbiAgfVxuXG4gIGlmICghcm93cyB8fCAhaGVhZGVyUm93KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGlucHV0IHBhc3NlZCB0byBwcm9jZXNzQ3N2RGF0YScpO1xuICB9XG5cbiAgLy8gaGVyZSB3ZSBhc3N1bWUgdGhlIGNzdiBmaWxlIHRoYXQgcGVvcGxlIHVwbG9hZGVkIHdpbGwgaGF2ZSBmaXJzdCByb3dcbiAgLy8gYXMgbmFtZSBvZiB0aGUgY29sdW1uXG5cbiAgY2xlYW5VcEZhbHN5Q3N2VmFsdWUocm93cyk7XG4gIC8vIE5vIG5lZWQgdG8gcnVuIHR5cGUgZGV0ZWN0aW9uIG9uIGV2ZXJ5IGRhdGEgcG9pbnRcbiAgLy8gaGVyZSB3ZSBnZXQgYSBsaXN0IG9mIG5vbmUgbnVsbCB2YWx1ZXMgdG8gcnVuIGFuYWx5emUgb25cbiAgY29uc3Qgc2FtcGxlID0gZ2V0U2FtcGxlRm9yVHlwZUFuYWx5emUoe2ZpZWxkczogaGVhZGVyUm93LCByb3dzfSk7XG4gIGNvbnN0IGZpZWxkcyA9IGdldEZpZWxkc0Zyb21EYXRhKHNhbXBsZSwgaGVhZGVyUm93KTtcbiAgY29uc3QgcGFyc2VkUm93cyA9IHBhcnNlUm93c0J5RmllbGRzKHJvd3MsIGZpZWxkcyk7XG5cbiAgcmV0dXJuIHtmaWVsZHMsIHJvd3M6IHBhcnNlZFJvd3N9O1xufVxuXG4vKipcbiAqIFBhcnNlIHJvd3Mgb2YgY3N2IGJ5IGFuYWx5emVkIGZpZWxkIHR5cGVzLiBTbyB0aGF0IGAnMSdgIC0+IGAxYCwgYCdUcnVlJ2AgLT4gYHRydWVgXG4gKiBAcGFyYW0gcm93c1xuICogQHBhcmFtIGZpZWxkc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSb3dzQnlGaWVsZHMocm93czogYW55W11bXSwgZmllbGRzOiBGaWVsZFtdKSB7XG4gIC8vIEVkaXQgcm93cyBpbiBwbGFjZVxuICBjb25zdCBnZW9qc29uRmllbGRJZHggPSBmaWVsZHMuZmluZEluZGV4KGYgPT4gZi5uYW1lID09PSAnX2dlb2pzb24nKTtcbiAgZmllbGRzLmZvckVhY2gocGFyc2VDc3ZSb3dzQnlGaWVsZFR5cGUuYmluZChudWxsLCByb3dzLCBnZW9qc29uRmllbGRJZHgpKTtcblxuICByZXR1cm4gcm93cztcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGZhbHN5IHZhbHVlIGluIGNzdiBpbmNsdWRpbmcgYCcnLCAnbnVsbCcsICdOVUxMJywgJ051bGwnLCAnTmFOJ2AgdG8gYG51bGxgLFxuICogc28gdGhhdCB0eXBlLWFuYWx5emVyIHdvbid0IGRldGVjdCBpdCBhcyBzdHJpbmdcbiAqXG4gKiBAcGFyYW0gcm93c1xuICovXG5mdW5jdGlvbiBjbGVhblVwRmFsc3lDc3ZWYWx1ZShyb3dzOiB1bmtub3duW11bXSk6IHZvaWQge1xuICBjb25zdCByZSA9IG5ldyBSZWdFeHAoQ1NWX05VTExTLCAnZycpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJvd3NbaV0ubGVuZ3RoOyBqKyspIHtcbiAgICAgIC8vIGFuYWx5emVyIHdpbGwgc2V0IGFueSBmaWVsZHMgdG8gJ3N0cmluZycgaWYgdGhlcmUgYXJlIGVtcHR5IHZhbHVlc1xuICAgICAgLy8gd2hpY2ggd2lsbCBiZSBwYXJzZWQgYXMgJycgYnkgZDMuY3N2XG4gICAgICAvLyBoZXJlIHdlIHBhcnNlIGVtcHR5IGRhdGEgYXMgbnVsbFxuICAgICAgLy8gVE9ETzogY3JlYXRlIHdhcm5pbmcgd2hlbiBkZWx0ZWN0IGBDU1ZfTlVMTFNgIGluIHRoZSBkYXRhXG4gICAgICBpZiAodHlwZW9mIHJvd3NbaV1bal0gPT09ICdzdHJpbmcnICYmIChyb3dzW2ldW2pdIGFzIHN0cmluZykubWF0Y2gocmUpKSB7XG4gICAgICAgIHJvd3NbaV1bal0gPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFByb2Nlc3MgdXBsb2FkZWQgY3N2IGZpbGUgdG8gcGFyc2UgdmFsdWUgYnkgZmllbGQgdHlwZVxuICpcbiAqIEBwYXJhbSByb3dzXG4gKiBAcGFyYW0gZ2VvRmllbGRJZHggZmllbGQgaW5kZXhcbiAqIEBwYXJhbSBmaWVsZFxuICogQHBhcmFtIGlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ3N2Um93c0J5RmllbGRUeXBlKFxuICByb3dzOiB1bmtub3duW11bXSxcbiAgZ2VvRmllbGRJZHg6IG51bWJlcixcbiAgZmllbGQ6IEZpZWxkLFxuICBpOiBudW1iZXJcbik6IHZvaWQge1xuICBjb25zdCBwYXJzZXIgPSBQQVJTRV9GSUVMRF9WQUxVRV9GUk9NX1NUUklOR1tmaWVsZC50eXBlXTtcbiAgaWYgKHBhcnNlcikge1xuICAgIC8vIGNoZWNrIGZpcnN0IG5vdCBudWxsIHZhbHVlIG9mIGl0J3MgYWxyZWFkeSBwYXJzZWRcbiAgICBjb25zdCBmaXJzdCA9IHJvd3MuZmluZChyID0+IG5vdE51bGxvclVuZGVmaW5lZChyW2ldKSk7XG4gICAgaWYgKCFmaXJzdCB8fCBwYXJzZXIudmFsaWQoZmlyc3RbaV0sIGZpZWxkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByb3dzLmZvckVhY2gocm93ID0+IHtcbiAgICAgIC8vIHBhcnNlIHN0cmluZyB2YWx1ZSBiYXNlZCBvbiBmaWVsZCB0eXBlXG4gICAgICBpZiAocm93W2ldICE9PSBudWxsKSB7XG4gICAgICAgIHJvd1tpXSA9IHBhcnNlci5wYXJzZShyb3dbaV0sIGZpZWxkKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGdlb0ZpZWxkSWR4ID4gLTEgJiZcbiAgICAgICAgICBpc1BsYWluT2JqZWN0KHJvd1tnZW9GaWVsZElkeF0pICYmXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGhhc093blByb3BlcnR5KHJvd1tnZW9GaWVsZElkeF0sICdwcm9wZXJ0aWVzJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHJvd1tnZW9GaWVsZElkeF0ucHJvcGVydGllc1tmaWVsZC5uYW1lXSA9IHJvd1tpXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbi8qIGVzbGludC1lbmFibGUgY29tcGxleGl0eSAqL1xuXG4vKipcbiAqIFByb2Nlc3MgZGF0YSB3aGVyZSBlYWNoIHJvdyBpcyBhbiBvYmplY3QsIG91dHB1dCBjYW4gYmUgcGFzc2VkIHRvIFtgYWRkRGF0YVRvTWFwYF0oLi4vYWN0aW9ucy9hY3Rpb25zLm1kI2FkZGRhdGF0b21hcClcbiAqIE5PVEU6IFRoaXMgZnVuY3Rpb24gbWF5IG11dGF0ZSBpbnB1dC5cbiAqIEBwYXJhbSByYXdEYXRhIGFuIGFycmF5IG9mIHJvdyBvYmplY3QsIGVhY2ggb2JqZWN0IHNob3VsZCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBrZXlzXG4gKiBAcmV0dXJucyBkYXRhc2V0IGNvbnRhaW5pbmcgYGZpZWxkc2AgYW5kIGByb3dzYFxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7YWRkRGF0YVRvTWFwfSBmcm9tICdrZXBsZXIuZ2wvYWN0aW9ucyc7XG4gKiBpbXBvcnQge3Byb2Nlc3NSb3dPYmplY3R9IGZyb20gJ2tlcGxlci5nbC9wcm9jZXNzb3JzJztcbiAqXG4gKiBjb25zdCBkYXRhID0gW1xuICogIHtsYXQ6IDMxLjI3LCBsbmc6IDEyNy41NiwgdmFsdWU6IDN9LFxuICogIHtsYXQ6IDMxLjIyLCBsbmc6IDEyNi4yNiwgdmFsdWU6IDF9XG4gKiBdO1xuICpcbiAqIGRpc3BhdGNoKGFkZERhdGFUb01hcCh7XG4gKiAgZGF0YXNldHM6IHtcbiAqICAgIGluZm86IHtsYWJlbDogJ015IERhdGEnLCBpZDogJ215X2RhdGEnfSxcbiAqICAgIGRhdGE6IHByb2Nlc3NSb3dPYmplY3QoZGF0YSlcbiAqICB9XG4gKiB9KSk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzUm93T2JqZWN0KHJhd0RhdGE6IHVua25vd25bXSk6IFByb2Nlc3NvclJlc3VsdCB7XG4gIGlmICghQXJyYXkuaXNBcnJheShyYXdEYXRhKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9IGVsc2UgaWYgKCFyYXdEYXRhLmxlbmd0aCkge1xuICAgIC8vIGRhdGEgaXMgZW1wdHlcbiAgICByZXR1cm4ge1xuICAgICAgZmllbGRzOiBbXSxcbiAgICAgIHJvd3M6IFtdXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhyYXdEYXRhWzBdKTsgLy8gW2xhdCwgbG5nLCB2YWx1ZV1cbiAgY29uc3Qgcm93cyA9IHJhd0RhdGEubWFwKGQgPT4ga2V5cy5tYXAoa2V5ID0+IGRba2V5XSkpOyAvLyBbWzMxLjI3LCAxMjcuNTYsIDNdXVxuXG4gIC8vIHJvdyBvYmplY3QgY2FuIHN0aWxsIGNvbnRhaW4gdmFsdWVzIGxpa2UgYE51bGxgIG9yIGBOL0FgXG4gIGNsZWFuVXBGYWxzeUNzdlZhbHVlKHJvd3MpO1xuXG4gIHJldHVybiBwcm9jZXNzQ3N2RGF0YShyb3dzLCBrZXlzKTtcbn1cblxuLyoqXG4gKiBQcm9jZXNzIEdlb0pTT04gW2BGZWF0dXJlQ29sbGVjdGlvbmBdKGh0dHA6Ly93aWtpLmdlb2pzb24ub3JnL0dlb0pTT05fZHJhZnRfdmVyc2lvbl82I0ZlYXR1cmVDb2xsZWN0aW9uKSxcbiAqIG91dHB1dCBhIGRhdGEgb2JqZWN0IHdpdGggYHtmaWVsZHM6IFtdLCByb3dzOiBbXX1gLlxuICogVGhlIGRhdGEgb2JqZWN0IGNhbiBiZSB3cmFwcGVkIGluIGEgYGRhdGFzZXRgIGFuZCBwYXNzZWQgdG8gW2BhZGREYXRhVG9NYXBgXSguLi9hY3Rpb25zL2FjdGlvbnMubWQjYWRkZGF0YXRvbWFwKVxuICogTk9URTogVGhpcyBmdW5jdGlvbiBtYXkgbXV0YXRlIGlucHV0LlxuICpcbiAqIEBwYXJhbSByYXdEYXRhIHJhdyBnZW9qc29uIGZlYXR1cmUgY29sbGVjdGlvblxuICogQHJldHVybnMgZGF0YXNldCBjb250YWluaW5nIGBmaWVsZHNgIGFuZCBgcm93c2BcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQge2FkZERhdGFUb01hcH0gZnJvbSAna2VwbGVyLmdsL2FjdGlvbnMnO1xuICogaW1wb3J0IHtwcm9jZXNzR2VvanNvbn0gZnJvbSAna2VwbGVyLmdsL3Byb2Nlc3NvcnMnO1xuICpcbiAqIGNvbnN0IGdlb2pzb24gPSB7XG4gKiBcdFwidHlwZVwiIDogXCJGZWF0dXJlQ29sbGVjdGlvblwiLFxuICogXHRcImZlYXR1cmVzXCIgOiBbe1xuICogXHRcdFwidHlwZVwiIDogXCJGZWF0dXJlXCIsXG4gKiBcdFx0XCJwcm9wZXJ0aWVzXCIgOiB7XG4gKiBcdFx0XHRcImNhcGFjaXR5XCIgOiBcIjEwXCIsXG4gKiBcdFx0XHRcInR5cGVcIiA6IFwiVS1SYWNrXCJcbiAqIFx0XHR9LFxuICogXHRcdFwiZ2VvbWV0cnlcIiA6IHtcbiAqIFx0XHRcdFwidHlwZVwiIDogXCJQb2ludFwiLFxuICogXHRcdFx0XCJjb29yZGluYXRlc1wiIDogWyAtNzEuMDczMjgzLCA0Mi40MTc1MDAgXVxuICogXHRcdH1cbiAqIFx0fV1cbiAqIH07XG4gKlxuICogZGlzcGF0Y2goYWRkRGF0YVRvTWFwKHtcbiAqICBkYXRhc2V0czoge1xuICogICAgaW5mbzoge1xuICogICAgICBsYWJlbDogJ1NhbXBsZSBUYXhpIFRyaXBzIGluIE5ldyBZb3JrIENpdHknLFxuICogICAgICBpZDogJ3Rlc3RfdHJpcF9kYXRhJ1xuICogICAgfSxcbiAqICAgIGRhdGE6IHByb2Nlc3NHZW9qc29uKGdlb2pzb24pXG4gKiAgfVxuICogfSkpO1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc0dlb2pzb24ocmF3RGF0YTogdW5rbm93bik6IFByb2Nlc3NvclJlc3VsdCB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRHZW9qc29uID0gbm9ybWFsaXplKHJhd0RhdGEpO1xuXG4gIGlmICghbm9ybWFsaXplZEdlb2pzb24gfHwgIUFycmF5LmlzQXJyYXkobm9ybWFsaXplZEdlb2pzb24uZmVhdHVyZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFJlYWQgRmlsZSBGYWlsZWQ6IEZpbGUgaXMgbm90IGEgdmFsaWQgR2VvSlNPTi4gUmVhZCBtb3JlIGFib3V0IFtzdXBwb3J0ZWQgZmlsZSBmb3JtYXRdKCR7R1VJREVTX0ZJTEVfRk9STUFUX0RPQ30pYFxuICAgICk7XG4gIH1cblxuICAvLyBnZXR0aW5nIGFsbCBmZWF0dXJlIGZpZWxkc1xuICBjb25zdCBhbGxEYXRhUm93czogQXJyYXk8e19nZW9qc29uOiBGZWF0dXJlfSAmIGtleW9mIEZlYXR1cmU+ID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbm9ybWFsaXplZEdlb2pzb24uZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBmID0gbm9ybWFsaXplZEdlb2pzb24uZmVhdHVyZXNbaV07XG4gICAgaWYgKGYuZ2VvbWV0cnkpIHtcbiAgICAgIGFsbERhdGFSb3dzLnB1c2goe1xuICAgICAgICAvLyBhZGQgZmVhdHVyZSB0byBfZ2VvanNvbiBmaWVsZFxuICAgICAgICBfZ2VvanNvbjogZixcbiAgICAgICAgLi4uKGYucHJvcGVydGllcyB8fCB7fSlcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICAvLyBnZXQgYWxsIHRoZSBmaWVsZFxuICBjb25zdCBmaWVsZHMgPSBhbGxEYXRhUm93cy5yZWR1Y2U8c3RyaW5nW10+KChhY2N1LCBjdXJyKSA9PiB7XG4gICAgT2JqZWN0LmtleXMoY3VycikuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKCFhY2N1LmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgYWNjdS5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjY3U7XG4gIH0sIFtdKTtcblxuICAvLyBtYWtlIHN1cmUgZWFjaCBmZWF0dXJlIGhhcyBleGFjdCBzYW1lIGZpZWxkc1xuICBhbGxEYXRhUm93cy5mb3JFYWNoKGQgPT4ge1xuICAgIGZpZWxkcy5mb3JFYWNoKGYgPT4ge1xuICAgICAgaWYgKCEoZiBpbiBkKSkge1xuICAgICAgICBkW2ZdID0gbnVsbDtcbiAgICAgICAgaWYgKGQuX2dlb2pzb24ucHJvcGVydGllcykge1xuICAgICAgICAgIGQuX2dlb2pzb24ucHJvcGVydGllc1tmXSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb2Nlc3NSb3dPYmplY3QoYWxsRGF0YVJvd3MpO1xufVxuXG4vKipcbiAqIFByb2Nlc3Mgc2F2ZWQga2VwbGVyLmdsIGpzb24gdG8gYmUgcGFzcyB0byBbYGFkZERhdGFUb01hcGBdKC4uL2FjdGlvbnMvYWN0aW9ucy5tZCNhZGRkYXRhdG9tYXApLlxuICogVGhlIGpzb24gb2JqZWN0IHNob3VsZCBjb250YWluIGBkYXRhc2V0c2AgYW5kIGBjb25maWdgLlxuICogQHBhcmFtIHJhd0RhdGFcbiAqIEBwYXJhbSBzY2hlbWFcbiAqIEByZXR1cm5zIGRhdGFzZXRzIGFuZCBjb25maWcgYHtkYXRhc2V0czoge30sIGNvbmZpZzoge319YFxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7YWRkRGF0YVRvTWFwfSBmcm9tICdrZXBsZXIuZ2wvYWN0aW9ucyc7XG4gKiBpbXBvcnQge3Byb2Nlc3NLZXBsZXJnbEpTT059IGZyb20gJ2tlcGxlci5nbC9wcm9jZXNzb3JzJztcbiAqXG4gKiBkaXNwYXRjaChhZGREYXRhVG9NYXAocHJvY2Vzc0tlcGxlcmdsSlNPTihrZXBsZXJHbEpzb24pKSk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzS2VwbGVyZ2xKU09OKHJhd0RhdGE6IFNhdmVkTWFwLCBzY2hlbWEgPSBLZXBsZXJHbFNjaGVtYSk6IExvYWRlZE1hcCB8IG51bGwge1xuICByZXR1cm4gcmF3RGF0YSA/IHNjaGVtYS5sb2FkKHJhd0RhdGEuZGF0YXNldHMsIHJhd0RhdGEuY29uZmlnKSA6IG51bGw7XG59XG5cbi8qKlxuICogUGFyc2UgYSBzaW5nbGUgb3IgYW4gYXJyYXkgb2YgZGF0YXNldHMgc2F2ZWQgdXNpbmcga2VwbGVyLmdsIHNjaGVtYVxuICogQHBhcmFtIHJhd0RhdGFcbiAqIEBwYXJhbSBzY2hlbWFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NLZXBsZXJnbERhdGFzZXQoXG4gIHJhd0RhdGE6IG9iamVjdCB8IG9iamVjdFtdLFxuICBzY2hlbWEgPSBLZXBsZXJHbFNjaGVtYVxuKTogUGFyc2VkRGF0YXNldCB8IFBhcnNlZERhdGFzZXRbXSB8IG51bGwge1xuICBpZiAoIXJhd0RhdGEpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdHMgPSBzY2hlbWEucGFyc2VTYXZlZERhdGEodG9BcnJheShyYXdEYXRhKSk7XG4gIGlmICghcmVzdWx0cykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHJhd0RhdGEpID8gcmVzdWx0cyA6IHJlc3VsdHNbMF07XG59XG5cbi8qKlxuICogUGFyc2UgYXJyb3cgdGFibGUgYW5kIHJldHVybiBhIGRhdGFzZXRcbiAqXG4gKiBAcGFyYW0gYXJyb3dUYWJsZSBBcnJvd1RhYmxlIHRvIHBhcnNlLCBzZWUgbG9hZGVycy5nbC9zY2hlbWFcbiAqIEByZXR1cm5zIGRhdGFzZXQgY29udGFpbmluZyBgZmllbGRzYCBhbmQgYHJvd3NgIG9yIG51bGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NBcnJvd1RhYmxlKGFycm93VGFibGU6IEFycm93VGFibGUpOiBQcm9jZXNzb3JSZXN1bHQgfCBudWxsIHtcbiAgLy8gQHRzLWlnbm9yZSAtIFVua25vd24gZGF0YSB0eXBlIGNhdXNpbmcgYnVpbGQgZmFpbHVyZXNcbiAgcmV0dXJuIHByb2Nlc3NBcnJvd0JhdGNoZXMoYXJyb3dUYWJsZS5kYXRhLmJhdGNoZXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyb3dTY2hlbWFUb0ZpZWxkcyhzY2hlbWE6IGFycm93LlNjaGVtYSk6IEZpZWxkW10ge1xuICByZXR1cm4gc2NoZW1hLmZpZWxkcy5tYXAoKGZpZWxkOiBhcnJvdy5GaWVsZCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGlzR2VvQXJyb3dDb2x1bW4gPSBmaWVsZC5tZXRhZGF0YS5nZXQoJ0FSUk9XOmV4dGVuc2lvbjpuYW1lJyk/LnN0YXJ0c1dpdGgoJ2dlb2Fycm93Jyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmZpZWxkLFxuICAgICAgbmFtZTogZmllbGQubmFtZSxcbiAgICAgIGlkOiBmaWVsZC5uYW1lLFxuICAgICAgZGlzcGxheU5hbWU6IGZpZWxkLm5hbWUsXG4gICAgICBmb3JtYXQ6ICcnLFxuICAgICAgZmllbGRJZHg6IGluZGV4LFxuICAgICAgdHlwZTogaXNHZW9BcnJvd0NvbHVtbiA/IEFMTF9GSUVMRF9UWVBFUy5nZW9hcnJvdyA6IGFycm93RGF0YVR5cGVUb0ZpZWxkVHlwZShmaWVsZC50eXBlKSxcbiAgICAgIGFuYWx5emVyVHlwZTogaXNHZW9BcnJvd0NvbHVtblxuICAgICAgICA/IEFuYWx5emVyREFUQV9UWVBFUy5HRU9NRVRSWVxuICAgICAgICA6IGFycm93RGF0YVR5cGVUb0FuYWx5emVyRGF0YVR5cGUoZmllbGQudHlwZSksXG4gICAgICB2YWx1ZUFjY2Vzc29yOiAoZGM6IGFueSkgPT4gZCA9PiB7XG4gICAgICAgIHJldHVybiBkYy52YWx1ZUF0KGQuaW5kZXgsIGluZGV4KTtcbiAgICAgIH0sXG4gICAgICBtZXRhZGF0YTogZmllbGQubWV0YWRhdGFcbiAgICB9O1xuICB9KTtcbn1cbi8qKlxuICogUGFyc2UgYXJyb3cgYmF0Y2hlcyByZXR1cm5lZCBmcm9tIHBhcnNlSW5CYXRjaGVzKClcbiAqXG4gKiBAcGFyYW0gYXJyb3dUYWJsZSB0aGUgYXJyb3cgdGFibGUgdG8gcGFyc2VcbiAqIEByZXR1cm5zIGRhdGFzZXQgY29udGFpbmluZyBgZmllbGRzYCBhbmQgYHJvd3NgIG9yIG51bGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NBcnJvd0JhdGNoZXMoYXJyb3dCYXRjaGVzOiBhcnJvdy5SZWNvcmRCYXRjaFtdKTogUHJvY2Vzc29yUmVzdWx0IHwgbnVsbCB7XG4gIGlmIChhcnJvd0JhdGNoZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgYXJyb3dUYWJsZSA9IG5ldyBhcnJvdy5UYWJsZShhcnJvd0JhdGNoZXMpO1xuICBjb25zdCBmaWVsZHMgPSBhcnJvd1NjaGVtYVRvRmllbGRzKGFycm93VGFibGUuc2NoZW1hKTtcblxuICBjb25zdCBjb2xzID0gWy4uLkFycmF5KGFycm93VGFibGUubnVtQ29scykua2V5cygpXS5tYXAoaSA9PiBhcnJvd1RhYmxlLmdldENoaWxkQXQoaSkpO1xuXG4gIC8vIHJldHVybiBlbXB0eSByb3dzIGFuZCB1c2UgcmF3IGFycm93IHRhYmxlIHRvIGNvbnN0cnVjdCBjb2x1bW4td2lzZSBkYXRhIGNvbnRhaW5lclxuICByZXR1cm4ge2ZpZWxkcywgcm93czogW10sIGNvbHMsIG1ldGFkYXRhOiBhcnJvd1RhYmxlLnNjaGVtYS5tZXRhZGF0YX07XG59XG5cbmV4cG9ydCBjb25zdCBEQVRBU0VUX0hBTkRMRVJTID0ge1xuICBbREFUQVNFVF9GT1JNQVRTLnJvd106IHByb2Nlc3NSb3dPYmplY3QsXG4gIFtEQVRBU0VUX0ZPUk1BVFMuZ2VvanNvbl06IHByb2Nlc3NHZW9qc29uLFxuICBbREFUQVNFVF9GT1JNQVRTLmNzdl06IHByb2Nlc3NDc3ZEYXRhLFxuICBbREFUQVNFVF9GT1JNQVRTLmFycm93XTogcHJvY2Vzc0Fycm93VGFibGUsXG4gIFtEQVRBU0VUX0ZPUk1BVFMua2VwbGVyZ2xdOiBwcm9jZXNzS2VwbGVyZ2xEYXRhc2V0XG59O1xuXG5leHBvcnQgY29uc3QgUHJvY2Vzc29yczoge1xuICBwcm9jZXNzR2VvanNvbjogdHlwZW9mIHByb2Nlc3NHZW9qc29uO1xuICBwcm9jZXNzQ3N2RGF0YTogdHlwZW9mIHByb2Nlc3NDc3ZEYXRhO1xuICBwcm9jZXNzQXJyb3dUYWJsZTogdHlwZW9mIHByb2Nlc3NBcnJvd1RhYmxlO1xuICBwcm9jZXNzQXJyb3dCYXRjaGVzOiB0eXBlb2YgcHJvY2Vzc0Fycm93QmF0Y2hlcztcbiAgcHJvY2Vzc1Jvd09iamVjdDogdHlwZW9mIHByb2Nlc3NSb3dPYmplY3Q7XG4gIHByb2Nlc3NLZXBsZXJnbEpTT046IHR5cGVvZiBwcm9jZXNzS2VwbGVyZ2xKU09OO1xuICBwcm9jZXNzS2VwbGVyZ2xEYXRhc2V0OiB0eXBlb2YgcHJvY2Vzc0tlcGxlcmdsRGF0YXNldDtcbiAgYW5hbHl6ZXJUeXBlVG9GaWVsZFR5cGU6IHR5cGVvZiBhbmFseXplclR5cGVUb0ZpZWxkVHlwZTtcbiAgZ2V0RmllbGRzRnJvbURhdGE6IHR5cGVvZiBnZXRGaWVsZHNGcm9tRGF0YTtcbiAgcGFyc2VDc3ZSb3dzQnlGaWVsZFR5cGU6IHR5cGVvZiBwYXJzZUNzdlJvd3NCeUZpZWxkVHlwZTtcbn0gPSB7XG4gIHByb2Nlc3NHZW9qc29uLFxuICBwcm9jZXNzQ3N2RGF0YSxcbiAgcHJvY2Vzc0Fycm93VGFibGUsXG4gIHByb2Nlc3NBcnJvd0JhdGNoZXMsXG4gIHByb2Nlc3NSb3dPYmplY3QsXG4gIHByb2Nlc3NLZXBsZXJnbEpTT04sXG4gIHByb2Nlc3NLZXBsZXJnbERhdGFzZXQsXG4gIGFuYWx5emVyVHlwZVRvRmllbGRUeXBlLFxuICBnZXRGaWVsZHNGcm9tRGF0YSxcbiAgcGFyc2VDc3ZSb3dzQnlGaWVsZFR5cGVcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsS0FBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsYUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUVBLElBQUFLLFVBQUEsR0FBQUwsT0FBQTtBQUVBLElBQUFNLE1BQUEsR0FBQU4sT0FBQTtBQU1BLElBQUFPLFlBQUEsR0FBQVAsT0FBQTtBQVFBLElBQUFRLFFBQUEsR0FBQVIsT0FBQTtBQUFzRixTQUFBUyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQVgsd0JBQUFXLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FB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
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kepler.gl/processors",
|
|
3
3
|
"author": "Shan He <shan@uber.com>",
|
|
4
|
-
"version": "3.1.0
|
|
4
|
+
"version": "3.1.0",
|
|
5
5
|
"description": "kepler.gl constants used by kepler.gl components, actions and reducers",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -31,12 +31,12 @@
|
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@danmarshall/deckgl-typings": "4.9.22",
|
|
34
|
-
"@kepler.gl/common-utils": "3.1.0
|
|
35
|
-
"@kepler.gl/constants": "3.1.0
|
|
36
|
-
"@kepler.gl/schemas": "3.1.0
|
|
37
|
-
"@kepler.gl/table": "3.1.0
|
|
38
|
-
"@kepler.gl/types": "3.1.0
|
|
39
|
-
"@kepler.gl/utils": "3.1.0
|
|
34
|
+
"@kepler.gl/common-utils": "3.1.0",
|
|
35
|
+
"@kepler.gl/constants": "3.1.0",
|
|
36
|
+
"@kepler.gl/schemas": "3.1.0",
|
|
37
|
+
"@kepler.gl/table": "3.1.0",
|
|
38
|
+
"@kepler.gl/types": "3.1.0",
|
|
39
|
+
"@kepler.gl/utils": "3.1.0",
|
|
40
40
|
"@loaders.gl/arrow": "^4.3.2",
|
|
41
41
|
"@loaders.gl/core": "^4.3.2",
|
|
42
42
|
"@loaders.gl/csv": "^4.3.2",
|
|
@@ -303,11 +303,9 @@ export function processGeojson(rawData: unknown): ProcessorResult {
|
|
|
303
303
|
const normalizedGeojson = normalize(rawData);
|
|
304
304
|
|
|
305
305
|
if (!normalizedGeojson || !Array.isArray(normalizedGeojson.features)) {
|
|
306
|
-
|
|
306
|
+
throw new Error(
|
|
307
307
|
`Read File Failed: File is not a valid GeoJSON. Read more about [supported file format](${GUIDES_FILE_FORMAT_DOC})`
|
|
308
308
|
);
|
|
309
|
-
throw error;
|
|
310
|
-
// fail to normalize geojson
|
|
311
309
|
}
|
|
312
310
|
|
|
313
311
|
// getting all feature fields
|
|
@@ -370,3 +370,13 @@ export declare const setLocaleUpdater: (state: UiState, { payload: { locale } }:
|
|
|
370
370
|
* @public
|
|
371
371
|
*/
|
|
372
372
|
export declare const togglePanelListViewUpdater: (state: UiState, { payload: { panelId, listView } }: UIStateActions.TogglePanelListViewAction) => UiState;
|
|
373
|
+
/**
|
|
374
|
+
* Update state of the loading indicator.
|
|
375
|
+
* @memberof uiStateUpdaters
|
|
376
|
+
* @param state uiState
|
|
377
|
+
* @param action
|
|
378
|
+
* @param action.payload Payload with change of number of active loading actions.
|
|
379
|
+
* @returns nextState
|
|
380
|
+
* @public
|
|
381
|
+
*/
|
|
382
|
+
export declare const setLoadingIndicatorUpdater: (state: UiState, { payload: { change } }: UIStateActions.SetLoadingIndicatorAction) => UiState;
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.toggleSplitMapUpdater = exports.toggleSidePanelUpdater = exports.toggleSidePanelCloseButtonUpdater = exports.togglePanelListViewUpdater = exports.toggleModalUpdater = exports.toggleMapControlUpdater = exports.startExportingImageUpdater = exports.showExportDropdownUpdater = exports.showDatasetTableUpdater = exports.setUserMapboxAccessTokenUpdater = exports.setMapControlVisibilityUpdater = exports.setMapControlSettingsUpdater = exports.setLocaleUpdater = exports.setExportSelectedDatasetUpdater = exports.setExportMapHTMLModeUpdater = exports.setExportMapFormatUpdater = exports.setExportImageSettingUpdater = exports.setExportImageErrorUpdater = exports.setExportImageDataUriUpdater = exports.setExportFilteredUpdater = exports.setExportDataUpdater = exports.setExportDataTypeUpdater = exports.removeNotificationUpdater = exports.openDeleteModalUpdater = exports.loadFilesUpdater = exports.loadFilesSuccessUpdater = exports.loadFilesErrUpdater = exports.initUiStateUpdater = exports.hideExportDropdownUpdater = exports.cleanupExportImageUpdater = exports.addNotificationUpdater = exports.INITIAL_UI_STATE = exports.DEFAULT_NOTIFICATIONS = exports.DEFAULT_MODAL = exports.DEFAULT_MAP_CONTROLS = exports.DEFAULT_LOAD_FILES = exports.DEFAULT_EXPORT_MAP = exports.DEFAULT_EXPORT_JSON = exports.DEFAULT_EXPORT_IMAGE = exports.DEFAULT_EXPORT_HTML = exports.DEFAULT_EXPORT_DATA = exports.DEFAULT_ACTIVE_SIDE_PANEL = void 0;
|
|
7
|
+
exports.toggleSplitMapUpdater = exports.toggleSidePanelUpdater = exports.toggleSidePanelCloseButtonUpdater = exports.togglePanelListViewUpdater = exports.toggleModalUpdater = exports.toggleMapControlUpdater = exports.startExportingImageUpdater = exports.showExportDropdownUpdater = exports.showDatasetTableUpdater = exports.setUserMapboxAccessTokenUpdater = exports.setMapControlVisibilityUpdater = exports.setMapControlSettingsUpdater = exports.setLocaleUpdater = exports.setLoadingIndicatorUpdater = exports.setExportSelectedDatasetUpdater = exports.setExportMapHTMLModeUpdater = exports.setExportMapFormatUpdater = exports.setExportImageSettingUpdater = exports.setExportImageErrorUpdater = exports.setExportImageDataUriUpdater = exports.setExportFilteredUpdater = exports.setExportDataUpdater = exports.setExportDataTypeUpdater = exports.removeNotificationUpdater = exports.openDeleteModalUpdater = exports.loadFilesUpdater = exports.loadFilesSuccessUpdater = exports.loadFilesErrUpdater = exports.initUiStateUpdater = exports.hideExportDropdownUpdater = exports.cleanupExportImageUpdater = exports.addNotificationUpdater = exports.INITIAL_UI_STATE = exports.DEFAULT_NOTIFICATIONS = exports.DEFAULT_MODAL = exports.DEFAULT_MAP_CONTROLS = exports.DEFAULT_LOAD_FILES = exports.DEFAULT_EXPORT_MAP = exports.DEFAULT_EXPORT_JSON = exports.DEFAULT_EXPORT_IMAGE = exports.DEFAULT_EXPORT_HTML = exports.DEFAULT_EXPORT_DATA = exports.DEFAULT_ACTIVE_SIDE_PANEL = void 0;
|
|
8
8
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
10
|
var _constants = require("@kepler.gl/constants");
|
|
@@ -784,4 +784,24 @@ var togglePanelListViewUpdater = exports.togglePanelListViewUpdater = function t
|
|
|
784
784
|
}
|
|
785
785
|
return _objectSpread(_objectSpread({}, state), {}, (0, _defineProperty2["default"])({}, stateProp, listView));
|
|
786
786
|
};
|
|
787
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl9sb2NhbGl6YXRpb24iLCJfdXRpbHMiLCJfY29tcG9zZXJIZWxwZXJzIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJERUZBVUxUX0FDVElWRV9TSURFX1BBTkVMIiwiZXhwb3J0cyIsIkRFRkFVTFRfTU9EQUwiLCJBRERfREFUQV9JRCIsInVpU3RhdGVVcGRhdGVycyIsIkRFRkFVTFRfTUFQX0NPTlRST0xTX0ZFQVRVUkVTIiwic2hvdyIsImFjdGl2ZSIsImRpc2FibGVDbG9zZSIsImFjdGl2ZU1hcEluZGV4IiwiREVGQVVMVF9NQVBfTEVHRU5EX0NPTlRST0wiLCJkaXNhYmxlRWRpdCIsIkRFRkFVTFRfTUFQX0NPTlRST0xTIiwiTUFQX0NPTlRST0xTIiwicmVkdWNlIiwiZmluYWwiLCJjdXJyZW50IiwibWFwTGVnZW5kIiwiREVGQVVMVF9FWFBPUlRfSU1BR0UiLCJyYXRpbyIsIkVYUE9SVF9JTUdfUkFUSU9TIiwiU0NSRUVOIiwicmVzb2x1dGlvbiIsIlJFU09MVVRJT05TIiwiT05FX1giLCJsZWdlbmQiLCJtYXBIIiwibWFwVyIsImltYWdlU2l6ZSIsInpvb21PZmZzZXQiLCJzY2FsZSIsImltYWdlVyIsImltYWdlSCIsImNlbnRlciIsImltYWdlRGF0YVVyaSIsImV4cG9ydGluZyIsInByb2Nlc3NpbmciLCJlcnJvciIsImVzY2FwZVhodG1sRm9yV2VicGFjayIsIkRFRkFVTFRfTE9BRF9GSUxFUyIsImZpbGVMb2FkaW5nIiwiREVGQVVMVF9FWFBPUlRfREFUQSIsInNlbGVjdGVkRGF0YXNldCIsImRhdGFUeXBlIiwiRVhQT1JUX0RBVEFfVFlQRSIsIkNTViIsImZpbHRlcmVkIiwiREVGQVVMVF9OT1RJRklDQVRJT05TIiwiREVGQVVMVF9FWFBPUlRfSFRNTCIsImV4cG9ydE1hcGJveEFjY2Vzc1Rva2VuIiwidXNlck1hcGJveFRva2VuIiwibW9kZSIsIkVYUE9SVF9IVE1MX01BUF9NT0RFUyIsIlJFQUQiLCJERUZBVUxUX0VYUE9SVF9KU09OIiwiaGFzRGF0YSIsIkRFRkFVTFRfRVhQT1JUX01BUCIsIkVYUE9SVF9NQVBfRk9STUFUUyIsIkhUTUwiLCJKU09OIiwiSU5JVElBTF9VSV9TVEFURSIsInJlYWRPbmx5IiwiYWN0aXZlU2lkZVBhbmVsIiwiY3VycmVudE1vZGFsIiwiZGF0YXNldEtleVRvUmVtb3ZlIiwidmlzaWJsZURyb3Bkb3duIiwiZXhwb3J0SW1hZ2UiLCJleHBvcnREYXRhIiwiZXhwb3J0TWFwIiwibWFwQ29udHJvbHMiLCJub3RpZmljYXRpb25zIiwibG9hZEZpbGVzIiwibG9jYWxlIiwiTE9DQUxFX0NPREVTIiwiZW4iLCJsYXllclBhbmVsTGlzdFZpZXciLCJmaWx0ZXJQYW5lbExpc3RWaWV3IiwiaXNTaWRlUGFuZWxDbG9zZUJ1dHRvblZpc2libGUiLCJpbml0VWlTdGF0ZVVwZGF0ZXIiLCJzdGF0ZSIsImFjdGlvbiIsInBheWxvYWQiLCJpbml0aWFsVWlTdGF0ZSIsInRvZ2dsZVNpZGVQYW5lbFVwZGF0ZXIiLCJfcmVmIiwiaWQiLCJ0b2dnbGVNb2RhbFVwZGF0ZXIiLCJfcmVmMiIsInNob3dFeHBvcnREcm9wZG93blVwZGF0ZXIiLCJfcmVmMyIsImhpZGVFeHBvcnREcm9wZG93blVwZGF0ZXIiLCJ0b2dnbGVTaWRlUGFuZWxDbG9zZUJ1dHRvblVwZGF0ZXIiLCJfcmVmNCIsInRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyIiwiX3JlZjUiLCJfc3RhdGUkbWFwQ29udHJvbHMkcGEiLCJfcmVmNSRwYXlsb2FkIiwicGFuZWxJZCIsIl9yZWY1JHBheWxvYWQkaW5kZXgiLCJpbmRleCIsInVwZGF0ZWRTdGF0ZSIsInBhbmVsVG9EZWFjdGl2YXRlIiwiZWZmZWN0IiwiYWlBc3Npc3RhbnQiLCJzZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXIiLCJfcmVmNiIsIl9zdGF0ZSRtYXBDb250cm9scyIsIl9yZWY2JHBheWxvYWQiLCJCb29sZWFuIiwic2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlciIsIl9yZWY3IiwiX3N0YXRlJG1hcENvbnRyb2xzMiIsIl9yZWY3JHBheWxvYWQiLCJzZXR0aW5ncyIsIm1hcENvbnRyb2wiLCJvcGVuRGVsZXRlTW9kYWxVcGRhdGVyIiwiX3JlZjgiLCJERUxFVEVfREFUQV9JRCIsInNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXIiLCJfcmVmOSIsIm5ld1NldHRpbmciLCJ1cGRhdGVkIiwiY2FsY3VsYXRlRXhwb3J0SW1hZ2VTaXplIiwic2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlciIsIl9yZWYxMCIsImRhdGFVcmkiLCJzZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlciIsIl9yZWYxMSIsImNsZWFudXBFeHBvcnRJbWFnZVVwZGF0ZXIiLCJzdGFydEV4cG9ydGluZ0ltYWdlVXBkYXRlciIsIl9yZWYxMiIsIl9yZWYxMiRwYXlsb2FkIiwib3B0aW9ucyIsImltYWdlU2V0dGluZ3MiLCJjb21wb3NlXyIsImFwcGx5XyIsInBheWxvYWRfIiwic2V0RXhwb3J0U2VsZWN0ZWREYXRhc2V0VXBkYXRlciIsIl9yZWYxMyIsImRhdGFzZXQiLCJzZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXIiLCJfcmVmMTQiLCJzZXRFeHBvcnRGaWx0ZXJlZFVwZGF0ZXIiLCJfcmVmMTUiLCJzZXRFeHBvcnREYXRhVXBkYXRlciIsInNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXIiLCJfcmVmMTYiLCJzZXRFeHBvcnRNYXBGb3JtYXRVcGRhdGVyIiwiX3JlZjE3IiwiZm9ybWF0Iiwic2V0RXhwb3J0TWFwSFRNTE1vZGVVcGRhdGVyIiwiX3JlZjE4IiwiYWRkTm90aWZpY2F0aW9uVXBkYXRlciIsIl9yZWYxOSIsIm9sZE5vdGlmaWNhdGlvbnMiLCJwYXlsb2FkSWQiLCJub3RpZmljYXRpb25Ub1VwZGF0ZSIsImZpbmQiLCJuIiwibWFwIiwiY3JlYXRlTm90aWZpY2F0aW9uIiwiY291bnQiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwicmVtb3ZlTm90aWZpY2F0aW9uVXBkYXRlciIsIl9yZWYyMCIsImxvYWRGaWxlc1VwZGF0ZXIiLCJsb2FkRmlsZXNTdWNjZXNzVXBkYXRlciIsImxvYWRGaWxlc0VyclVwZGF0ZXIiLCJfcmVmMjEiLCJlcnJvck5vdGlmaWNhdGlvbiIsIm1lc3NhZ2UiLCJ0b3BpYyIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUyIsImdsb2JhbCIsInRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsImVudHJpZXMiLCJhY2MiLCJlbnRyeSIsInNob3dEYXRhc2V0VGFibGVVcGRhdGVyIiwiREFUQV9UQUJMRV9JRCIsInNldExvY2FsZVVwZGF0ZXIiLCJfcmVmMjIiLCJ0b2dnbGVQYW5lbExpc3RWaWV3VXBkYXRlciIsIl9yZWYyMyIsIl9yZWYyMyRwYXlsb2FkIiwibGlzdFZpZXciLCJzdGF0ZVByb3AiXSwic291cmNlcyI6WyIuLi9zcmMvdWktc3RhdGUtdXBkYXRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtcbiAgQUREX0RBVEFfSUQsXG4gIERBVEFfVEFCTEVfSUQsXG4gIERFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUyxcbiAgREVMRVRFX0RBVEFfSUQsXG4gIEVYUE9SVF9EQVRBX1RZUEUsXG4gIEVYUE9SVF9IVE1MX01BUF9NT0RFUyxcbiAgRVhQT1JUX0lNR19SQVRJT1MsXG4gIEVYUE9SVF9NQVBfRk9STUFUUyxcbiAgUkVTT0xVVElPTlMsXG4gIE1BUF9DT05UUk9MUyxcbiAgRXhwb3J0SW1hZ2Vcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtMT0NBTEVfQ09ERVN9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7Y3JlYXRlTm90aWZpY2F0aW9uLCBlcnJvck5vdGlmaWNhdGlvbiwgY2FsY3VsYXRlRXhwb3J0SW1hZ2VTaXplfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7cGF5bG9hZF8sIGFwcGx5XywgY29tcG9zZV99IGZyb20gJy4vY29tcG9zZXItaGVscGVycyc7XG5cbmltcG9ydCB7XG4gIEFjdGlvblR5cGVzLFxuICBLZXBsZXJHbEluaXRQYXlsb2FkLFxuICBMb2FkRmlsZXNFcnJVcGRhdGVyQWN0aW9uLFxuICBVSVN0YXRlQWN0aW9uc1xufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtcbiAgRXhwb3J0RGF0YSxcbiAgRXhwb3J0SHRtbCxcbiAgRXhwb3J0SnNvbixcbiAgRXhwb3J0TWFwLFxuICBNYXBDb250cm9sSXRlbSxcbiAgTWFwQ29udHJvbHMsXG4gIFVpU3RhdGVcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0FDVElWRV9TSURFX1BBTkVMID0gJ2xheWVyJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX01PREFMID0gQUREX0RBVEFfSUQ7XG5cbi8qKlxuICogVXBkYXRlcnMgZm9yIGB1aVN0YXRlYCByZWR1Y2VyLiBDYW4gYmUgdXNlZCBpbiB5b3VyIHJvb3QgcmVkdWNlciB0byBkaXJlY3RseSBtb2RpZnkga2VwbGVyLmdsJ3Mgc3RhdGUuXG4gKiBSZWFkIG1vcmUgYWJvdXQgW1VzaW5nIHVwZGF0ZXJzXSguLi9hZHZhbmNlZC11c2FnZS91c2luZy11cGRhdGVycy5tZClcbiAqXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICpcbiAqIGltcG9ydCBrZXBsZXJHbFJlZHVjZXIsIHt1aVN0YXRlVXBkYXRlcnN9IGZyb20gJ2tlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBjbGljayBidXR0b24gdG8gY2xvc2Ugc2lkZSBwYW5lbFxuICogICAgY2FzZSAnQ0xJQ0tfQlVUVE9OJzpcbiAqICAgICAgcmV0dXJuIHtcbiAqICAgICAgICAuLi5zdGF0ZSxcbiAqICAgICAgICBrZXBsZXJHbDoge1xuICogICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wsXG4gKiAgICAgICAgICBmb286IHtcbiAqICAgICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLmZvbyxcbiAqICAgICAgICAgICAgIHVpU3RhdGU6IHVpU3RhdGVVcGRhdGVycy50b2dnbGVTaWRlUGFuZWxVcGRhdGVyKFxuICogICAgICAgICAgICAgICB1aVN0YXRlLCB7cGF5bG9hZDogbnVsbH1cbiAqICAgICAgICAgICAgIClcbiAqICAgICAgICAgIH1cbiAqICAgICAgICB9XG4gKiAgICAgIH07XG4gKiAgfVxuICogIHJldHVybiByZWR1Y2VycyhzdGF0ZSwgYWN0aW9uKTtcbiAqIH07XG4gKlxuICogZXhwb3J0IGRlZmF1bHQgY29tcG9zZWRSZWR1Y2VyO1xuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IHVpU3RhdGVVcGRhdGVycyA9IG51bGw7XG4vKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuXG5jb25zdCBERUZBVUxUX01BUF9DT05UUk9MU19GRUFUVVJFUzogTWFwQ29udHJvbEl0ZW0gPSB7XG4gIHNob3c6IHRydWUsXG4gIGFjdGl2ZTogZmFsc2UsXG4gIGRpc2FibGVDbG9zZTogZmFsc2UsXG4gIC8vIGRlZmluZXMgd2hpY2ggbWFwIGluZGV4IHVzZXJzIGFyZSBpbnRlcmFjdGluZyB3aXRoICh0aHJvdWdoIG1hcCBjb250cm9scylcbiAgYWN0aXZlTWFwSW5kZXg6IDBcbn07XG5cbmNvbnN0IERFRkFVTFRfTUFQX0xFR0VORF9DT05UUk9MID0ge1xuICAuLi5ERUZBVUxUX01BUF9DT05UUk9MU19GRUFUVVJFUyxcbiAgZGlzYWJsZUVkaXQ6IGZhbHNlXG59O1xuLyoqXG4gKiBBIGxpc3Qgb2YgbWFwIGNvbnRyb2wgdmlzaWJpbGl0eSBhbmQgd2hldGhlciBpcyBpdCBhY3RpdmUuXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSB2aXNpYmxlTGF5ZXJzIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHJvcGVydHkgbWFwTGVnZW5kIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHJvcGVydHkgdG9nZ2xlM2QgRGVmYXVsdDogYHtzaG93OiB0cnVlfWBcbiAqIEBwcm9wZXJ0eSBzcGxpdE1hcCBEZWZhdWx0OiBge3Nob3c6IHRydWV9YFxuICogQHByb3BlcnR5IG1hcERyYXcgRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwcm9wZXJ0eSBtYXBMb2NhbGUgRGVmYXVsdDogYHtzaG93OiBmYWxzZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUF9DT05UUk9MUzogTWFwQ29udHJvbHMgPSAoXG4gIE9iamVjdC5rZXlzKE1BUF9DT05UUk9MUykgYXMgQXJyYXk8a2V5b2YgdHlwZW9mIE1BUF9DT05UUk9MUz5cbikucmVkdWNlKFxuICAoZmluYWwsIGN1cnJlbnQpID0+ICh7XG4gICAgLi4uZmluYWwsXG4gICAgW2N1cnJlbnRdOlxuICAgICAgY3VycmVudCA9PT0gTUFQX0NPTlRST0xTLm1hcExlZ2VuZFxuICAgICAgICA/IERFRkFVTFRfTUFQX0xFR0VORF9DT05UUk9MXG4gICAgICAgIDogREVGQVVMVF9NQVBfQ09OVFJPTFNfRkVBVFVSRVNcbiAgfSksXG4gIHt9IGFzIE1hcENvbnRyb2xzXG4pO1xuXG4vKipcbiAqIERlZmF1bHQgaW1hZ2UgZXhwb3J0IGNvbmZpZ1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcmF0aW8gRGVmYXVsdDogYCdTQ1JFRU4nYCxcbiAqIEBwcm9wZXJ0eSByZXNvbHV0aW9uIERlZmF1bHQ6IGAnT05FX1gnYCxcbiAqIEBwcm9wZXJ0eSBsZWdlbmQgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBtYXBIIERlZmF1bHQ6IDAsXG4gKiBAcHJvcGVydHkgbWFwVyBEZWZhdWx0OiAwLFxuICogQHByb3BlcnR5IGltYWdlU2l6ZSBEZWZhdWx0OiB7em9vbU9mZnNldDogMCwgc2NhbGU6IDEsIGltYWdlVzogMCwgaW1hZ2VIOiAwfSxcbiAqIEBwcm9wZXJ0eSBpbWFnZURhdGFVcmkgRGVmYXVsdDogYCcnYCxcbiAqIEBwcm9wZXJ0eSBleHBvcnRpbmcgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGVycm9yIERlZmF1bHQ6IGBmYWxzZWBcbiAqIEBwcm9wZXJ0eSBlc2NhcGVYaHRtbEZvcldlYnBhY2sgRGVmYXVsdDogYHRydWVgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9JTUFHRTogRXhwb3J0SW1hZ2UgPSB7XG4gIC8vIHVzZXIgb3B0aW9uc1xuICByYXRpbzogRVhQT1JUX0lNR19SQVRJT1MuU0NSRUVOLFxuICByZXNvbHV0aW9uOiBSRVNPTFVUSU9OUy5PTkVfWCxcbiAgbGVnZW5kOiBmYWxzZSxcbiAgbWFwSDogMCxcbiAgbWFwVzogMCxcbiAgaW1hZ2VTaXplOiB7XG4gICAgem9vbU9mZnNldDogMCxcbiAgICBzY2FsZTogMSxcbiAgICBpbWFnZVc6IDAsXG4gICAgaW1hZ2VIOiAwXG4gIH0sXG4gIC8vIHdoZW4gdGhpcyBpcyBzZXQgdG8gdHJ1ZSwgdGhlIG1vY2sgbWFwIHZpZXdwb3J0IHdpbGwgbW92ZSB0byB0aGUgY2VudGVyIG9mIGRhdGFcbiAgY2VudGVyOiBmYWxzZSxcbiAgLy8gZXhwb3J0aW5nIHN0YXRlXG4gIGltYWdlRGF0YVVyaTogJycsXG4gIC8vIGV4cG9ydGluZzogdXNlZCB0byBhdHRhY2ggcGxvdC1jb250YWluZXIgdG8gZG9tXG4gIGV4cG9ydGluZzogZmFsc2UsXG4gIC8vIHByb2Nlc3Npbmc6IHVzZWQgYXMgbG9hZGluZyBpbmRpY2F0b3Igd2hlbiBleHBvcnQgaW1hZ2UgaXMgYmVpbmcgcHJvZHVjZWRcbiAgcHJvY2Vzc2luZzogZmFsc2UsXG4gIGVycm9yOiBmYWxzZSxcbiAgLy8gd2hldGhlciB0byBhcHBseSBmaXggZm9yIHVnbGlmeSBlcnJvciBpbiBkb20tdG8taW1hZ2UgKHNob3VsZCBiZSB0cnVlIGZvciB3ZWJwYWNrIGJ1aWxkcylcbiAgZXNjYXBlWGh0bWxGb3JXZWJwYWNrOiB0cnVlXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MT0FEX0ZJTEVTID0ge1xuICBmaWxlTG9hZGluZzogZmFsc2Vcbn07XG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBleHBvcnREYXRhYCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgc2VsZWN0ZWREYXRhc2V0IERlZmF1bHQ6IGAnJ2AsXG4gKiBAcHJvcGVydHkgZGF0YVR5cGUgRGVmYXVsdDogYCdjc3YnYCxcbiAqIEBwcm9wZXJ0eSBmaWx0ZXJlZCBEZWZhdWx0OiBgdHJ1ZWAsXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9EQVRBOiBFeHBvcnREYXRhID0ge1xuICBzZWxlY3RlZERhdGFzZXQ6ICcnLFxuICBkYXRhVHlwZTogRVhQT1JUX0RBVEFfVFlQRS5DU1YsXG4gIGZpbHRlcmVkOiB0cnVlXG59O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05TID0gW107XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4gLSBEZWZhdWx0OiBudWxsLCB0aGlzIGlzIHVzZWQgd2hlbiB3ZSBwcm92aWRlIGEgZGVmYXVsdCBtYXBib3ggdG9rZW4gZm9yIHVzZXJzIHRvIHRha2UgYWR2YW50YWdlIG9mXG4gKiBAcHJvcGVydHkgdXNlck1hcGJveFRva2VuIC0gRGVmYXVsdDogJycsIG1hcGJveCB0b2tlbiBwcm92aWRlZCBieSB1c2VyIHRocm91Z2ggaW5wdXQgZmllbGRcbiAqIEBwcm9wZXJ0eSBtb2RlIC0gRGVmYXVsdDogJ1JFQUQnLCByZWFkIG9ubHkgb3IgZWRpdGFibGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX0hUTUw6IEV4cG9ydEh0bWwgPSB7XG4gIGV4cG9ydE1hcGJveEFjY2Vzc1Rva2VuOiBudWxsLFxuICB1c2VyTWFwYm94VG9rZW46ICcnLFxuICBtb2RlOiBFWFBPUlRfSFRNTF9NQVBfTU9ERVMuUkVBRFxufTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBoYXNEYXRhIC0gRGVmYXVsdDogJ3RydWUnLFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FWFBPUlRfSlNPTjogRXhwb3J0SnNvbiA9IHtcbiAgaGFzRGF0YTogdHJ1ZVxufTtcblxuLyoqXG4gKiBFeHBvcnQgTWFwIENvbmZpZ1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgSFRNTCAtIERlZmF1bHQ6ICdERUZBVUxUX0VYUE9SVF9IVE1MJyxcbiAqIEBwcm9wZXJ0eSBKU09OIC0gRGVmYXVsdDogJ0RFRkFVTFRfRVhQT1JUX0pTT04nLFxuICogQHByb3BlcnR5IGZvcm1hdCAtIERlZmF1bHQ6ICdIVE1MJyxcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX01BUDogRXhwb3J0TWFwID0ge1xuICBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdOiBERUZBVUxUX0VYUE9SVF9IVE1MLFxuICBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dOiBERUZBVUxUX0VYUE9SVF9KU09OLFxuICBmb3JtYXQ6IEVYUE9SVF9NQVBfRk9STUFUUy5IVE1MXG59O1xuXG4vKipcbiAqIERlZmF1bHQgaW5pdGlhbCBgdWlTdGF0ZWBcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBjb25zdGFudFxuICogQHByb3BlcnR5IHJlYWRPbmx5IERlZmF1bHQ6IGBmYWxzZWBcbiAqIEBwcm9wZXJ0eSBhY3RpdmVTaWRlUGFuZWwgRGVmYXVsdDogYCdsYXllcidgXG4gKiBAcHJvcGVydHkgY3VycmVudE1vZGFsIERlZmF1bHQ6IGAnYWRkRGF0YSdgXG4gKiBAcHJvcGVydHkgZGF0YXNldEtleVRvUmVtb3ZlIERlZmF1bHQ6IGBudWxsYFxuICogQHByb3BlcnR5IHZpc2libGVEcm9wZG93biBEZWZhdWx0OiBgbnVsbGBcbiAqIEBwcm9wZXJ0eSBleHBvcnRJbWFnZSBEZWZhdWx0OiBbYERFRkFVTFRfRVhQT1JUX0lNQUdFYF0oI2RlZmF1bHRfZXhwb3J0X2ltYWdlKVxuICogQHByb3BlcnR5IGV4cG9ydERhdGEgRGVmYXVsdDogW2BERUZBVUxUX0VYUE9SVF9EQVRBYF0oI2RlZmF1bHRfZXhwb3J0X2RhdGEpXG4gKiBAcHJvcGVydHkgZXhwb3J0TWFwIERlZmF1bHQ6IFtgREVGQVVMVF9FWFBPUlRfTUFQYF0oI2RlZmF1bHRfZXhwb3J0X21hcClcbiAqIEBwcm9wZXJ0eSBtYXBDb250cm9scyBEZWZhdWx0OiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHByb3BlcnR5IG5vdGlmaWNhdGlvbnMgRGVmYXVsdDogYFtdYFxuICogQHByb3BlcnR5IG5vdGlmaWNhdGlvbnMgRGVmYXVsdDogYFtdYFxuICogQHByb3BlcnR5IGxvYWRGaWxlc1xuICogQHByb3BlcnR5IGlzU2lkZVBhbmVsQ2xvc2VCdXR0b25WaXNpYmxlIERlZmF1bHQ6IGB0cnVlYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9VSV9TVEFURTogVWlTdGF0ZSA9IHtcbiAgcmVhZE9ubHk6IGZhbHNlLFxuICBhY3RpdmVTaWRlUGFuZWw6IERFRkFVTFRfQUNUSVZFX1NJREVfUEFORUwsXG4gIGN1cnJlbnRNb2RhbDogREVGQVVMVF9NT0RBTCxcbiAgZGF0YXNldEtleVRvUmVtb3ZlOiBudWxsLFxuICB2aXNpYmxlRHJvcGRvd246IG51bGwsXG4gIC8vIGV4cG9ydCBpbWFnZSBtb2RhbCB1aVxuICBleHBvcnRJbWFnZTogREVGQVVMVF9FWFBPUlRfSU1BR0UsXG4gIC8vIGV4cG9ydCBkYXRhIG1vZGFsIHVpXG4gIGV4cG9ydERhdGE6IERFRkFVTFRfRVhQT1JUX0RBVEEsXG4gIC8vIGh0bWwgZXhwb3J0XG4gIGV4cG9ydE1hcDogREVGQVVMVF9FWFBPUlRfTUFQLFxuICAvLyBtYXAgY29udHJvbCBwYW5lbHNcbiAgbWFwQ29udHJvbHM6IERFRkFVTFRfTUFQX0NPTlRST0xTLFxuICAvLyB1aSBub3RpZmljYXRpb25zXG4gIG5vdGlmaWNhdGlvbnM6IERFRkFVTFRfTk9USUZJQ0FUSU9OUyxcbiAgLy8gbG9hZCBmaWxlc1xuICBsb2FkRmlsZXM6IERFRkFVTFRfTE9BRF9GSUxFUyxcbiAgLy8gTG9jYWxlIG9mIHRoZSBVSVxuICBsb2NhbGU6IExPQ0FMRV9DT0RFUy5lbixcbiAgbGF5ZXJQYW5lbExpc3RWaWV3OiAnbGlzdCcsXG4gIGZpbHRlclBhbmVsTGlzdFZpZXc6ICdsaXN0JyxcbiAgaXNTaWRlUGFuZWxDbG9zZUJ1dHRvblZpc2libGU6IHRydWVcbn07XG5cbi8qIFVwZGF0ZXJzICovXG4vKipcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IGluaXRVaVN0YXRlVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIGFjdGlvbjoge1xuICAgIHR5cGU/OiAodHlwZW9mIEFjdGlvblR5cGVzKVsnSU5JVCddO1xuICAgIHBheWxvYWQ6IEtlcGxlckdsSW5pdFBheWxvYWQ7XG4gIH1cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIC4uLihhY3Rpb24ucGF5bG9hZCB8fCB7fSkuaW5pdGlhbFVpU3RhdGVcbn0pO1xuXG4vKipcbiAqIFRvZ2dsZSBhY3RpdmUgc2lkZSBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGlkIG9mIHNpZGUgcGFuZWwgdG8gYmUgc2hvd24sIG9uZSBvZiBgbGF5ZXJgLCBgZmlsdGVyYCwgYGludGVyYWN0aW9uYCwgYG1hcGAuIGNsb3NlIHNpZGUgcGFuZWwgaWYgYG51bGxgXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNpZGVQYW5lbFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVTaWRlUGFuZWxVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgcmV0dXJuIGlkID09PSBzdGF0ZS5hY3RpdmVTaWRlUGFuZWxcbiAgICA/IHN0YXRlXG4gICAgOiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBhY3RpdmVTaWRlUGFuZWw6IGlkXG4gICAgICB9O1xufTtcblxuLyoqXG4gKiBTaG93IGFuZCBoaWRlIG1vZGFsIGRpYWxvZ1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtYWN0aW9uLnBheWxvYWQgaWQgb2YgbW9kYWwgdG8gYmUgc2hvd24sIG51bGwgdG8gaGlkZSBtb2RhbHMuIE9uZSBvZjpcbiAqICAtIFtgREFUQV9UQUJMRV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2RhdGFfdGFibGVfaWQpXG4gKiAgLSBbYERFTEVURV9EQVRBX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZGVsZXRlX2RhdGFfaWQpXG4gKiAgLSBbYEFERF9EQVRBX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjYWRkX2RhdGFfaWQpXG4gKiAgLSBbYEVYUE9SVF9JTUFHRV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2V4cG9ydF9pbWFnZV9pZClcbiAqICAtIFtgRVhQT1JUX0RBVEFfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNleHBvcnRfZGF0YV9pZClcbiAqICAtIFtgQUREX01BUF9TVFlMRV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2FkZF9tYXBfc3R5bGVfaWQpXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZU1vZGFsVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBpZH06IFVJU3RhdGVBY3Rpb25zLlRvZ2dsZU1vZGFsVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgY3VycmVudE1vZGFsOiBpZFxufSk7XG5cbi8qKlxuICogSGlkZSBhbmQgc2hvdyBzaWRlIHBhbmVsIGhlYWRlciBkcm9wZG93biwgYWN0aXZhdGVkIGJ5IGNsaWNraW5nIHRoZSBzaGFyZSBsaW5rIG9uIHRvcCBvZiB0aGUgc2lkZSBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2hvd0V4cG9ydERyb3Bkb3duVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBpZH06IFVJU3RhdGVBY3Rpb25zLlNob3dFeHBvcnREcm9wZG93blVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIHZpc2libGVEcm9wZG93bjogaWRcbn0pO1xuXG4vKipcbiAqIEhpZGUgc2lkZSBwYW5lbCBoZWFkZXIgZHJvcGRvd24sIGFjdGl2YXRlZCBieSBjbGlja2luZyB0aGUgc2hhcmUgbGluayBvbiB0b3Agb2YgdGhlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGhpZGVFeHBvcnREcm9wZG93blVwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICB2aXNpYmxlRHJvcGRvd246IG51bGxcbn0pO1xuXG4vKipcbiAqIFRvZ2dsZSBzaWRlIHBhbmVsIGNsb3NlIGJ1dHRvbiBvbiB0b3AgbGVmdCBvZiB0aGUgc2lkZSBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlU2lkZVBhbmVsQ2xvc2VCdXR0b25VcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IHtzaG93fX06IFVJU3RhdGVBY3Rpb25zLlRvZ2dsZVNpZGVQYW5lbENsb3NlQnV0dG9uVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgaXNTaWRlUGFuZWxDbG9zZUJ1dHRvblZpc2libGU6IHNob3dcbn0pO1xuXG4vKipcbiAqIFRvZ2dsZSBhY3RpdmUgbWFwIGNvbnRyb2wgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb24gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgbWFwIGNvbnRyb2wgcGFuZWwgaWQsIG9uZSBvZiB0aGUga2V5cyBvZjogW2BERUZBVUxUX01BUF9DT05UUk9MU2BdKCNkZWZhdWx0X21hcF9jb250cm9scylcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge3BhbmVsSWQsIGluZGV4ID0gMH19OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIGxldCB1cGRhdGVkU3RhdGUgPSBzdGF0ZTtcbiAgLy8gVGhlIGVmZmVjdCBwYW5lbCBhbmQgYWkgYXNzaXN0YW50IHBhbmVsIGNhbiBub3QgYmUgYWN0aXZlIGF0IHRoZSBzYW1lIHRpbWVcbiAgLy8gc28gd2UgbmVlZCB0byBkZWFjdGl2YXRlIHRoZSBvdGhlciBwYW5lbCB3aGVuIG9uZSBpcyBhY3RpdmF0ZWRcbiAgY29uc3QgcGFuZWxUb0RlYWN0aXZhdGUgPVxuICAgIHBhbmVsSWQgPT09IE1BUF9DT05UUk9MUy5lZmZlY3RcbiAgICAgID8gTUFQX0NPTlRST0xTLmFpQXNzaXN0YW50XG4gICAgICA6IHBhbmVsSWQgPT09IE1BUF9DT05UUk9MUy5haUFzc2lzdGFudFxuICAgICAgPyBNQVBfQ09OVFJPTFMuZWZmZWN0XG4gICAgICA6IG51bGw7XG5cbiAgLy8gSWYgd2UgbmVlZCB0byBkZWFjdGl2YXRlIGEgY29tcGV0aW5nIHBhbmVsIGFuZCBpdCdzIGN1cnJlbnRseSBhY3RpdmVcbiAgaWYgKHBhbmVsVG9EZWFjdGl2YXRlICYmIHN0YXRlLm1hcENvbnRyb2xzW3BhbmVsVG9EZWFjdGl2YXRlXT8uYWN0aXZlKSB7XG4gICAgdXBkYXRlZFN0YXRlID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBtYXBDb250cm9sczoge1xuICAgICAgICAuLi51cGRhdGVkU3RhdGUubWFwQ29udHJvbHMsXG4gICAgICAgIFtwYW5lbFRvRGVhY3RpdmF0ZV06IHtcbiAgICAgICAgICAuLi51cGRhdGVkU3RhdGUubWFwQ29udHJvbHNbcGFuZWxUb0RlYWN0aXZhdGVdLFxuICAgICAgICAgIGFjdGl2ZTogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnVwZGF0ZWRTdGF0ZSxcbiAgICBtYXBDb250cm9sczoge1xuICAgICAgLi4udXBkYXRlZFN0YXRlLm1hcENvbnRyb2xzLFxuICAgICAgW3BhbmVsSWRdOiB7XG4gICAgICAgIC4uLnVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXSxcbiAgICAgICAgYWN0aXZlOiAhdXBkYXRlZFN0YXRlLm1hcENvbnRyb2xzW3BhbmVsSWRdLmFjdGl2ZSxcbiAgICAgICAgYWN0aXZlTWFwSW5kZXg6IGluZGV4XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgbWFwIGNvbnRyb2wgdmlzaWJpbGl0eVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvbiBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBtYXAgY29udHJvbCBwYW5lbCBpZCwgb25lIG9mIHRoZSBrZXlzIG9mOiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge3BhbmVsSWQsIHNob3d9fTogVUlTdGF0ZUFjdGlvbnMuc2V0TWFwQ29udHJvbFZpc2liaWxpdHlVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgaWYgKCFzdGF0ZS5tYXBDb250cm9scz8uW3BhbmVsSWRdKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtYXBDb250cm9sczoge1xuICAgICAgLi4uc3RhdGUubWFwQ29udHJvbHMsXG4gICAgICBbcGFuZWxJZF06IHtcbiAgICAgICAgLi4uc3RhdGUubWFwQ29udHJvbHNbcGFuZWxJZF0sXG4gICAgICAgIHNob3c6IEJvb2xlYW4oc2hvdylcbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBtYXAgY29udHJvbCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvbiBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBtYXAgY29udHJvbCBwYW5lbCBpZCwgb25lIG9mIHRoZSBrZXlzIG9mOiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRNYXBDb250cm9sU2V0dGluZ3NVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IHtwYW5lbElkLCBzZXR0aW5nc319OiBVSVN0YXRlQWN0aW9ucy5zZXRNYXBDb250cm9sU2V0dGluZ3NVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3QgbWFwQ29udHJvbCA9IHN0YXRlLm1hcENvbnRyb2xzPy5bcGFuZWxJZF07XG4gIGlmICghbWFwQ29udHJvbCkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgbWFwQ29udHJvbHM6IHtcbiAgICAgIC4uLnN0YXRlLm1hcENvbnRyb2xzLFxuICAgICAgW3BhbmVsSWRdOiB7Li4ubWFwQ29udHJvbCwgc2V0dGluZ3M6IHsuLi5tYXBDb250cm9sLnNldHRpbmdzLCAuLi5zZXR0aW5nc319XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIG1hcCBjb250cm9sIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZGF0YXNldCBpZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBvcGVuRGVsZXRlTW9kYWxVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFzZXRLZXlUb1JlbW92ZX06IFVJU3RhdGVBY3Rpb25zLk9wZW5EZWxldGVNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogREVMRVRFX0RBVEFfSUQsXG4gIGRhdGFzZXRLZXlUb1JlbW92ZVxufSk7XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZS5sZWdlbmRgIHRvIGB0cnVlYCBvciBgZmFsc2VgXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogbmV3U2V0dGluZ306IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCB1cGRhdGVkID0gey4uLnN0YXRlLmV4cG9ydEltYWdlLCAuLi5uZXdTZXR0aW5nfTtcbiAgY29uc3QgaW1hZ2VTaXplID0gY2FsY3VsYXRlRXhwb3J0SW1hZ2VTaXplKHVwZGF0ZWQpIHx8IHN0YXRlLmV4cG9ydEltYWdlLmltYWdlU2l6ZTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGV4cG9ydEltYWdlOiB7XG4gICAgICAuLi51cGRhdGVkLFxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgLy8gVE9ETzogY2FsY3VsYXRlRXhwb3J0SW1hZ2VTaXplIGRvZXMgbm90IHJldHVybiBpbWFnZVNpemUuem9vbU9mZnNldCxcbiAgICAgIC8vIGRvIHdlIG5lZWQgdGFrZSB0aGlzIHZhbHVlIGZyb20gY3VycmVudCBzdGF0ZSwgb3IgcmV0dXJuIGRlZmF1bCB2YWx1ZSA9IDBcbiAgICAgIGltYWdlU2l6ZVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZS5zZXRFeHBvcnRJbWFnZURhdGFVcmlgIHRvIGEgaW1hZ2UgZGF0YVVyaVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGV4cG9ydCBpbWFnZSBkYXRhIHVyaVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZURhdGFVcmlVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFVcml9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbWFnZURhdGFVcmlVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRJbWFnZToge1xuICAgIC4uLnN0YXRlLmV4cG9ydEltYWdlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGltYWdlRGF0YVVyaTogZGF0YVVyaVxuICB9XG59KTtcblxuLyoqXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBlcnJvcn06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRJbWFnZToge1xuICAgIC4uLnN0YXRlLmV4cG9ydEltYWdlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGVycm9yXG4gIH1cbn0pO1xuXG4vKipcbiAqIERlbGV0ZSBjYWNoZWQgZXhwb3J0IGltYWdlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBjbGVhbnVwRXhwb3J0SW1hZ2VVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0SW1hZ2U6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICBleHBvcnRpbmc6IGZhbHNlLFxuICAgIGltYWdlRGF0YVVyaTogJycsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGNlbnRlcjogZmFsc2VcbiAgfVxufSk7XG5cbi8qKlxuICogU3RhcnQgaW1hZ2UgZXhwb3J0aW5nIGZsb3dcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZVxuICogQHBhcmFtIG9wdGlvbnNcbiAqIEByZXR1cm5zIHtVaVN0YXRlfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc3RhcnRFeHBvcnRpbmdJbWFnZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogb3B0aW9ucyA9IHt9fToge3BheWxvYWQ6IFBhcnRpYWw8RXhwb3J0SW1hZ2U+fVxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IGltYWdlU2V0dGluZ3MgPSB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBleHBvcnRpbmc6IHRydWVcbiAgfTtcblxuICByZXR1cm4gY29tcG9zZV8oW1xuICAgIGNsZWFudXBFeHBvcnRJbWFnZVVwZGF0ZXIsXG4gICAgYXBwbHlfKHNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXIsIHBheWxvYWRfKGltYWdlU2V0dGluZ3MpKVxuICBdKShzdGF0ZSk7XG59O1xuXG4vKipcbiAqIFNldCBzZWxlY3RlZCBkYXRhc2V0IGZvciBleHBvcnRcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBkYXRhc2V0IGlkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogZGF0YXNldH06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydERhdGE6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnREYXRhLFxuICAgIHNlbGVjdGVkRGF0YXNldDogZGF0YXNldFxuICB9XG59KTtcblxuLyoqXG4gKiBTZXQgZGF0YSBmb3JtYXQgZm9yIGV4cG9ydGluZyBkYXRhXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgb25lIG9mIGAndGV4dC9jc3YnYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogZGF0YVR5cGV9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydERhdGE6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnREYXRhLFxuICAgIGRhdGFUeXBlXG4gIH1cbn0pO1xuXG4vKipcbiAqIFdoZXRoZXIgdG8gZXhwb3J0IGZpbHRlcmVkIGRhdGEsIGB0cnVlYCBvciBgZmFsc2VgXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWRcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RmlsdGVyZWRVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGZpbHRlcmVkfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0RmlsdGVyZWRVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnREYXRhOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0RGF0YSxcbiAgICBmaWx0ZXJlZFxuICB9XG59KTtcblxuLyoqXG4gKiBXaGV0aGVyIHRvIGluY2x1ZGluZyBkYXRhIGluIG1hcCBjb25maWcsIHRvZ2dsZSBiZXR3ZWVuIGB0cnVlYCBvciBgZmFsc2VgXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydERhdGFVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIFtFWFBPUlRfTUFQX0ZPUk1BVFMuSlNPTl06IHtcbiAgICAgIC4uLnN0YXRlLmV4cG9ydE1hcFtFWFBPUlRfTUFQX0ZPUk1BVFMuSlNPTl0sXG4gICAgICBoYXNEYXRhOiAhc3RhdGUuZXhwb3J0TWFwW0VYUE9SVF9NQVBfRk9STUFUUy5KU09OXS5oYXNEYXRhXG4gICAgfVxuICB9XG59KTtcblxuLyoqXG4gKiB3aGV0aGVyIHRvIGV4cG9ydCBhIG1hcGJveCBhY2Nlc3MgdG8gSFRNTCBzaW5nbGUgcGFnZVxuICogQHBhcmFtIHN0YXRlIC0gYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWRcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB1c2VyTWFwYm94VG9rZW59OiBVSVN0YXRlQWN0aW9ucy5TZXRVc2VyTWFwYm94QWNjZXNzVG9rZW5VcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRNYXA6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRNYXAsXG4gICAgW0VYUE9SVF9NQVBfRk9STUFUUy5IVE1MXToge1xuICAgICAgLi4uc3RhdGUuZXhwb3J0TWFwW0VYUE9SVF9NQVBfRk9STUFUUy5IVE1MXSxcbiAgICAgIHVzZXJNYXBib3hUb2tlblxuICAgIH1cbiAgfVxufSk7XG5cbi8qKlxuICogU2V0cyB0aGUgZXhwb3J0IG1hcCBmb3JtYXRcbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGZvcm1hdCB0byB1c2UgdG8gZXhwb3J0IHRoZSBtYXAgaW50b1xuICogQHJldHVybiBuZXh0U3RhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogZm9ybWF0fTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0TWFwRm9ybWF0VXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBmb3JtYXRcbiAgfVxufSk7XG5cbi8qKlxuICogU2V0IHRoZSBleHBvcnQgaHRtbCBtYXAgbW9kZVxuICogQHBhcmFtIHN0YXRlIC0gYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgdG8gYmUgc2V0IChhdmFpbGFibGUgbW9kZXM6IEVYUE9SVF9IVE1MX01BUF9NT0RFUylcbiAqIEByZXR1cm4gbmV4dFN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRNYXBIVE1MTW9kZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogbW9kZX06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEhUTUxNYXBNb2RlVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF06IHtcbiAgICAgIC4uLnN0YXRlLmV4cG9ydE1hcFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF0sXG4gICAgICBtb2RlXG4gICAgfVxuICB9XG59KTtcblxuLyoqXG4gKiBBZGRzIGEgbmV3IG5vdGlmaWNhdGlvbi5cbiAqIFVwZGF0ZXMgYSBub3RpZmljYXRpb24gaW4gY2FzZSBvZiBtYXRjaGluZyBpZHMuXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgUGFyYW1zIG9mIGEgbm90aWZpY2F0aW9uXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZE5vdGlmaWNhdGlvblVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZH06IFVJU3RhdGVBY3Rpb25zLkFkZE5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBvbGROb3RpZmljYXRpb25zID0gc3RhdGUubm90aWZpY2F0aW9ucyB8fCBbXTtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICBjb25zdCBwYXlsb2FkSWQgPSBwYXlsb2FkPy5pZDtcbiAgY29uc3Qgbm90aWZpY2F0aW9uVG9VcGRhdGUgPSBwYXlsb2FkSWQgPyBvbGROb3RpZmljYXRpb25zLmZpbmQobiA9PiBuLmlkID09PSBwYXlsb2FkSWQpIDogbnVsbDtcblxuICBsZXQgbm90aWZpY2F0aW9ucztcbiAgaWYgKG5vdGlmaWNhdGlvblRvVXBkYXRlKSB7XG4gICAgbm90aWZpY2F0aW9ucyA9IG9sZE5vdGlmaWNhdGlvbnMubWFwKG4gPT5cbiAgICAgIG4uaWQgPT09IHBheWxvYWRJZCA/IGNyZWF0ZU5vdGlmaWNhdGlvbih7Li4ucGF5bG9hZCwgY291bnQ6IG4uY291bnQgKyAxfSkgOiBuXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBub3RpZmljYXRpb25zID0gWy4uLm9sZE5vdGlmaWNhdGlvbnMsIGNyZWF0ZU5vdGlmaWNhdGlvbihwYXlsb2FkKV07XG4gIH1cblxuICByZXR1cm4gey4uLnN0YXRlLCBub3RpZmljYXRpb25zfTtcbn07XG5cbi8qKlxuICogUmVtb3ZlIGEgbm90aWZpY2F0aW9uXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgaWQgb2YgdGhlIG5vdGlmaWNhdGlvbiB0byBiZSByZW1vdmVkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5SZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBub3RpZmljYXRpb25zOiBzdGF0ZS5ub3RpZmljYXRpb25zLmZpbHRlcihuID0+IG4uaWQgIT09IGlkKVxufSk7XG5cbi8qKlxuICogRmlyZWQgd2hlbiBmaWxlIGxvYWRpbmcgYmVnaW5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGxvYWRGaWxlczoge1xuICAgIC4uLnN0YXRlLmxvYWRGaWxlcyxcbiAgICBmaWxlTG9hZGluZzogdHJ1ZVxuICB9XG59KTtcblxuLyoqXG4gKiBIYW5kbGVzIGxvYWRpbmcgZmlsZSBzdWNjZXNzIGFuZCBzZXQgZmlsZUxvYWRpbmcgcHJvcGVydHkgdG8gZmFsc2VcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICovXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBsb2FkRmlsZXM6IHtcbiAgICAuLi5zdGF0ZS5sb2FkRmlsZXMsXG4gICAgZmlsZUxvYWRpbmc6IGZhbHNlXG4gIH1cbn0pO1xuXG4vKipcbiAqIEhhbmRsZXMgbG9hZCBmaWxlIGVycm9yIGFuZCBzZXQgZmlsZUxvYWRpbmcgcHJvcGVydHkgdG8gZmFsc2VcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZVxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5lcnJvclxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBsb2FkRmlsZXNFcnJVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlLCB7ZXJyb3J9OiBMb2FkRmlsZXNFcnJVcGRhdGVyQWN0aW9uKTogVWlTdGF0ZSA9PlxuICBhZGROb3RpZmljYXRpb25VcGRhdGVyKFxuICAgIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgbG9hZEZpbGVzOiB7XG4gICAgICAgIC4uLnN0YXRlLmxvYWRGaWxlcyxcbiAgICAgICAgZmlsZUxvYWRpbmc6IGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBwYXlsb2FkOiBlcnJvck5vdGlmaWNhdGlvbih7XG4gICAgICAgIG1lc3NhZ2U6IChlcnJvciB8fCB7fSkubWVzc2FnZSB8fCAnRmFpbGVkIHRvIHVwbG9hZCBmaWxlcycsXG4gICAgICAgIHRvcGljOiBERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MuZ2xvYmFsXG4gICAgICB9KVxuICAgIH1cbiAgKTtcblxuLyoqXG4gKiBIYW5kbGVzIHRvZ2dsZSBtYXAgc3BsaXQgYW5kIHJlc2V0IGFsbCBtYXAgY29udHJvbCBpbmRleCB0byAwXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlU3BsaXRNYXBVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbWFwQ29udHJvbHM6IE9iamVjdC5lbnRyaWVzKHN0YXRlLm1hcENvbnRyb2xzKS5yZWR1Y2UoXG4gICAgKGFjYywgZW50cnkpID0+ICh7XG4gICAgICAuLi5hY2MsXG4gICAgICBbZW50cnlbMF1dOiB7XG4gICAgICAgIC4uLmVudHJ5WzFdLFxuICAgICAgICBhY3RpdmVNYXBJbmRleDogMFxuICAgICAgfVxuICAgIH0pLFxuICAgIHt9IGFzIE1hcENvbnRyb2xzXG4gIClcbn0pO1xuXG4vKipcbiAqIFRvZ2dsZSBtb2RhbCBkYXRhXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2hvd0RhdGFzZXRUYWJsZVVwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+XG4gIHRvZ2dsZU1vZGFsVXBkYXRlcihzdGF0ZSwge3BheWxvYWQ6IERBVEFfVEFCTEVfSUR9KTtcblxuLyoqXG4gKiBTZXQgdGhlIGxvY2FsZSBvZiB0aGUgVUlcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZFxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkLmxvY2FsZSBsb2NhbGVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0TG9jYWxlVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7bG9jYWxlfX06IFVJU3RhdGVBY3Rpb25zLlNldExvY2FsZVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGxvY2FsZVxufSk7XG5cbi8qKlxuICogVG9nZ2xlIGxheWVyIHBhbmVsIGxpc3Qgdmlld1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGxheWVyIHBhbmVsIGxpc3RWaWV3IHZhbHVlLiBDYW4gYmUgJ2xpc3QnIG9yICdzb3J0QnlEYXRhc2V0J1xuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVQYW5lbExpc3RWaWV3VXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgbGlzdFZpZXd9fTogVUlTdGF0ZUFjdGlvbnMuVG9nZ2xlUGFuZWxMaXN0Vmlld0FjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IHN0YXRlUHJvcCA9XG4gICAgcGFuZWxJZCA9PT0gJ2xheWVyJ1xuICAgICAgPyAnbGF5ZXJQYW5lbExpc3RWaWV3J1xuICAgICAgOiBwYW5lbElkID09PSAnZmlsdGVyJ1xuICAgICAgPyAnZmlsdGVyUGFuZWxMaXN0VmlldydcbiAgICAgIDogbnVsbDtcbiAgaWYgKCFzdGF0ZVByb3AgfHwgc3RhdGVbc3RhdGVQcm9wXSA9PT0gbGlzdFZpZXcpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBbc3RhdGVQcm9wXTogbGlzdFZpZXdcbiAgfTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUdBLElBQUFBLFVBQUEsR0FB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
|
|
787
|
+
|
|
788
|
+
/**
|
|
789
|
+
* Update state of the loading indicator.
|
|
790
|
+
* @memberof uiStateUpdaters
|
|
791
|
+
* @param state uiState
|
|
792
|
+
* @param action
|
|
793
|
+
* @param action.payload Payload with change of number of active loading actions.
|
|
794
|
+
* @returns nextState
|
|
795
|
+
* @public
|
|
796
|
+
*/
|
|
797
|
+
var setLoadingIndicatorUpdater = exports.setLoadingIndicatorUpdater = function setLoadingIndicatorUpdater(state, _ref24) {
|
|
798
|
+
var change = _ref24.payload.change;
|
|
799
|
+
var loadingIndicatorValue = state.loadingIndicatorValue;
|
|
800
|
+
if (!loadingIndicatorValue) {
|
|
801
|
+
loadingIndicatorValue = 0;
|
|
802
|
+
}
|
|
803
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
804
|
+
loadingIndicatorValue: Math.max(loadingIndicatorValue + change, 0)
|
|
805
|
+
});
|
|
806
|
+
};
|
|
807
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl9sb2NhbGl6YXRpb24iLCJfdXRpbHMiLCJfY29tcG9zZXJIZWxwZXJzIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJERUZBVUxUX0FDVElWRV9TSURFX1BBTkVMIiwiZXhwb3J0cyIsIkRFRkFVTFRfTU9EQUwiLCJBRERfREFUQV9JRCIsInVpU3RhdGVVcGRhdGVycyIsIkRFRkFVTFRfTUFQX0NPTlRST0xTX0ZFQVRVUkVTIiwic2hvdyIsImFjdGl2ZSIsImRpc2FibGVDbG9zZSIsImFjdGl2ZU1hcEluZGV4IiwiREVGQVVMVF9NQVBfTEVHRU5EX0NPTlRST0wiLCJkaXNhYmxlRWRpdCIsIkRFRkFVTFRfTUFQX0NPTlRST0xTIiwiTUFQX0NPTlRST0xTIiwicmVkdWNlIiwiZmluYWwiLCJjdXJyZW50IiwibWFwTGVnZW5kIiwiREVGQVVMVF9FWFBPUlRfSU1BR0UiLCJyYXRpbyIsIkVYUE9SVF9JTUdfUkFUSU9TIiwiU0NSRUVOIiwicmVzb2x1dGlvbiIsIlJFU09MVVRJT05TIiwiT05FX1giLCJsZWdlbmQiLCJtYXBIIiwibWFwVyIsImltYWdlU2l6ZSIsInpvb21PZmZzZXQiLCJzY2FsZSIsImltYWdlVyIsImltYWdlSCIsImNlbnRlciIsImltYWdlRGF0YVVyaSIsImV4cG9ydGluZyIsInByb2Nlc3NpbmciLCJlcnJvciIsImVzY2FwZVhodG1sRm9yV2VicGFjayIsIkRFRkFVTFRfTE9BRF9GSUxFUyIsImZpbGVMb2FkaW5nIiwiREVGQVVMVF9FWFBPUlRfREFUQSIsInNlbGVjdGVkRGF0YXNldCIsImRhdGFUeXBlIiwiRVhQT1JUX0RBVEFfVFlQRSIsIkNTViIsImZpbHRlcmVkIiwiREVGQVVMVF9OT1RJRklDQVRJT05TIiwiREVGQVVMVF9FWFBPUlRfSFRNTCIsImV4cG9ydE1hcGJveEFjY2Vzc1Rva2VuIiwidXNlck1hcGJveFRva2VuIiwibW9kZSIsIkVYUE9SVF9IVE1MX01BUF9NT0RFUyIsIlJFQUQiLCJERUZBVUxUX0VYUE9SVF9KU09OIiwiaGFzRGF0YSIsIkRFRkFVTFRfRVhQT1JUX01BUCIsIkVYUE9SVF9NQVBfRk9STUFUUyIsIkhUTUwiLCJKU09OIiwiSU5JVElBTF9VSV9TVEFURSIsInJlYWRPbmx5IiwiYWN0aXZlU2lkZVBhbmVsIiwiY3VycmVudE1vZGFsIiwiZGF0YXNldEtleVRvUmVtb3ZlIiwidmlzaWJsZURyb3Bkb3duIiwiZXhwb3J0SW1hZ2UiLCJleHBvcnREYXRhIiwiZXhwb3J0TWFwIiwibWFwQ29udHJvbHMiLCJub3RpZmljYXRpb25zIiwibG9hZEZpbGVzIiwibG9jYWxlIiwiTE9DQUxFX0NPREVTIiwiZW4iLCJsYXllclBhbmVsTGlzdFZpZXciLCJmaWx0ZXJQYW5lbExpc3RWaWV3IiwiaXNTaWRlUGFuZWxDbG9zZUJ1dHRvblZpc2libGUiLCJpbml0VWlTdGF0ZVVwZGF0ZXIiLCJzdGF0ZSIsImFjdGlvbiIsInBheWxvYWQiLCJpbml0aWFsVWlTdGF0ZSIsInRvZ2dsZVNpZGVQYW5lbFVwZGF0ZXIiLCJfcmVmIiwiaWQiLCJ0b2dnbGVNb2RhbFVwZGF0ZXIiLCJfcmVmMiIsInNob3dFeHBvcnREcm9wZG93blVwZGF0ZXIiLCJfcmVmMyIsImhpZGVFeHBvcnREcm9wZG93blVwZGF0ZXIiLCJ0b2dnbGVTaWRlUGFuZWxDbG9zZUJ1dHRvblVwZGF0ZXIiLCJfcmVmNCIsInRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyIiwiX3JlZjUiLCJfc3RhdGUkbWFwQ29udHJvbHMkcGEiLCJfcmVmNSRwYXlsb2FkIiwicGFuZWxJZCIsIl9yZWY1JHBheWxvYWQkaW5kZXgiLCJpbmRleCIsInVwZGF0ZWRTdGF0ZSIsInBhbmVsVG9EZWFjdGl2YXRlIiwiZWZmZWN0IiwiYWlBc3Npc3RhbnQiLCJzZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXIiLCJfcmVmNiIsIl9zdGF0ZSRtYXBDb250cm9scyIsIl9yZWY2JHBheWxvYWQiLCJCb29sZWFuIiwic2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlciIsIl9yZWY3IiwiX3N0YXRlJG1hcENvbnRyb2xzMiIsIl9yZWY3JHBheWxvYWQiLCJzZXR0aW5ncyIsIm1hcENvbnRyb2wiLCJvcGVuRGVsZXRlTW9kYWxVcGRhdGVyIiwiX3JlZjgiLCJERUxFVEVfREFUQV9JRCIsInNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXIiLCJfcmVmOSIsIm5ld1NldHRpbmciLCJ1cGRhdGVkIiwiY2FsY3VsYXRlRXhwb3J0SW1hZ2VTaXplIiwic2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlciIsIl9yZWYxMCIsImRhdGFVcmkiLCJzZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlciIsIl9yZWYxMSIsImNsZWFudXBFeHBvcnRJbWFnZVVwZGF0ZXIiLCJzdGFydEV4cG9ydGluZ0ltYWdlVXBkYXRlciIsIl9yZWYxMiIsIl9yZWYxMiRwYXlsb2FkIiwib3B0aW9ucyIsImltYWdlU2V0dGluZ3MiLCJjb21wb3NlXyIsImFwcGx5XyIsInBheWxvYWRfIiwic2V0RXhwb3J0U2VsZWN0ZWREYXRhc2V0VXBkYXRlciIsIl9yZWYxMyIsImRhdGFzZXQiLCJzZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXIiLCJfcmVmMTQiLCJzZXRFeHBvcnRGaWx0ZXJlZFVwZGF0ZXIiLCJfcmVmMTUiLCJzZXRFeHBvcnREYXRhVXBkYXRlciIsInNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXIiLCJfcmVmMTYiLCJzZXRFeHBvcnRNYXBGb3JtYXRVcGRhdGVyIiwiX3JlZjE3IiwiZm9ybWF0Iiwic2V0RXhwb3J0TWFwSFRNTE1vZGVVcGRhdGVyIiwiX3JlZjE4IiwiYWRkTm90aWZpY2F0aW9uVXBkYXRlciIsIl9yZWYxOSIsIm9sZE5vdGlmaWNhdGlvbnMiLCJwYXlsb2FkSWQiLCJub3RpZmljYXRpb25Ub1VwZGF0ZSIsImZpbmQiLCJuIiwibWFwIiwiY3JlYXRlTm90aWZpY2F0aW9uIiwiY291bnQiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwicmVtb3ZlTm90aWZpY2F0aW9uVXBkYXRlciIsIl9yZWYyMCIsImxvYWRGaWxlc1VwZGF0ZXIiLCJsb2FkRmlsZXNTdWNjZXNzVXBkYXRlciIsImxvYWRGaWxlc0VyclVwZGF0ZXIiLCJfcmVmMjEiLCJlcnJvck5vdGlmaWNhdGlvbiIsIm1lc3NhZ2UiLCJ0b3BpYyIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUyIsImdsb2JhbCIsInRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsImVudHJpZXMiLCJhY2MiLCJlbnRyeSIsInNob3dEYXRhc2V0VGFibGVVcGRhdGVyIiwiREFUQV9UQUJMRV9JRCIsInNldExvY2FsZVVwZGF0ZXIiLCJfcmVmMjIiLCJ0b2dnbGVQYW5lbExpc3RWaWV3VXBkYXRlciIsIl9yZWYyMyIsIl9yZWYyMyRwYXlsb2FkIiwibGlzdFZpZXciLCJzdGF0ZVByb3AiLCJzZXRMb2FkaW5nSW5kaWNhdG9yVXBkYXRlciIsIl9yZWYyNCIsImNoYW5nZSIsImxvYWRpbmdJbmRpY2F0b3JWYWx1ZSIsIk1hdGgiLCJtYXgiXSwic291cmNlcyI6WyIuLi9zcmMvdWktc3RhdGUtdXBkYXRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtcbiAgQUREX0RBVEFfSUQsXG4gIERBVEFfVEFCTEVfSUQsXG4gIERFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUyxcbiAgREVMRVRFX0RBVEFfSUQsXG4gIEVYUE9SVF9EQVRBX1RZUEUsXG4gIEVYUE9SVF9IVE1MX01BUF9NT0RFUyxcbiAgRVhQT1JUX0lNR19SQVRJT1MsXG4gIEVYUE9SVF9NQVBfRk9STUFUUyxcbiAgUkVTT0xVVElPTlMsXG4gIE1BUF9DT05UUk9MUyxcbiAgRXhwb3J0SW1hZ2Vcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtMT0NBTEVfQ09ERVN9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7Y3JlYXRlTm90aWZpY2F0aW9uLCBlcnJvck5vdGlmaWNhdGlvbiwgY2FsY3VsYXRlRXhwb3J0SW1hZ2VTaXplfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7cGF5bG9hZF8sIGFwcGx5XywgY29tcG9zZV99IGZyb20gJy4vY29tcG9zZXItaGVscGVycyc7XG5cbmltcG9ydCB7XG4gIEFjdGlvblR5cGVzLFxuICBLZXBsZXJHbEluaXRQYXlsb2FkLFxuICBMb2FkRmlsZXNFcnJVcGRhdGVyQWN0aW9uLFxuICBVSVN0YXRlQWN0aW9uc1xufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtcbiAgRXhwb3J0RGF0YSxcbiAgRXhwb3J0SHRtbCxcbiAgRXhwb3J0SnNvbixcbiAgRXhwb3J0TWFwLFxuICBNYXBDb250cm9sSXRlbSxcbiAgTWFwQ29udHJvbHMsXG4gIFVpU3RhdGVcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0FDVElWRV9TSURFX1BBTkVMID0gJ2xheWVyJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX01PREFMID0gQUREX0RBVEFfSUQ7XG5cbi8qKlxuICogVXBkYXRlcnMgZm9yIGB1aVN0YXRlYCByZWR1Y2VyLiBDYW4gYmUgdXNlZCBpbiB5b3VyIHJvb3QgcmVkdWNlciB0byBkaXJlY3RseSBtb2RpZnkga2VwbGVyLmdsJ3Mgc3RhdGUuXG4gKiBSZWFkIG1vcmUgYWJvdXQgW1VzaW5nIHVwZGF0ZXJzXSguLi9hZHZhbmNlZC11c2FnZS91c2luZy11cGRhdGVycy5tZClcbiAqXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICpcbiAqIGltcG9ydCBrZXBsZXJHbFJlZHVjZXIsIHt1aVN0YXRlVXBkYXRlcnN9IGZyb20gJ2tlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBjbGljayBidXR0b24gdG8gY2xvc2Ugc2lkZSBwYW5lbFxuICogICAgY2FzZSAnQ0xJQ0tfQlVUVE9OJzpcbiAqICAgICAgcmV0dXJuIHtcbiAqICAgICAgICAuLi5zdGF0ZSxcbiAqICAgICAgICBrZXBsZXJHbDoge1xuICogICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wsXG4gKiAgICAgICAgICBmb286IHtcbiAqICAgICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLmZvbyxcbiAqICAgICAgICAgICAgIHVpU3RhdGU6IHVpU3RhdGVVcGRhdGVycy50b2dnbGVTaWRlUGFuZWxVcGRhdGVyKFxuICogICAgICAgICAgICAgICB1aVN0YXRlLCB7cGF5bG9hZDogbnVsbH1cbiAqICAgICAgICAgICAgIClcbiAqICAgICAgICAgIH1cbiAqICAgICAgICB9XG4gKiAgICAgIH07XG4gKiAgfVxuICogIHJldHVybiByZWR1Y2VycyhzdGF0ZSwgYWN0aW9uKTtcbiAqIH07XG4gKlxuICogZXhwb3J0IGRlZmF1bHQgY29tcG9zZWRSZWR1Y2VyO1xuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IHVpU3RhdGVVcGRhdGVycyA9IG51bGw7XG4vKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuXG5jb25zdCBERUZBVUxUX01BUF9DT05UUk9MU19GRUFUVVJFUzogTWFwQ29udHJvbEl0ZW0gPSB7XG4gIHNob3c6IHRydWUsXG4gIGFjdGl2ZTogZmFsc2UsXG4gIGRpc2FibGVDbG9zZTogZmFsc2UsXG4gIC8vIGRlZmluZXMgd2hpY2ggbWFwIGluZGV4IHVzZXJzIGFyZSBpbnRlcmFjdGluZyB3aXRoICh0aHJvdWdoIG1hcCBjb250cm9scylcbiAgYWN0aXZlTWFwSW5kZXg6IDBcbn07XG5cbmNvbnN0IERFRkFVTFRfTUFQX0xFR0VORF9DT05UUk9MID0ge1xuICAuLi5ERUZBVUxUX01BUF9DT05UUk9MU19GRUFUVVJFUyxcbiAgZGlzYWJsZUVkaXQ6IGZhbHNlXG59O1xuLyoqXG4gKiBBIGxpc3Qgb2YgbWFwIGNvbnRyb2wgdmlzaWJpbGl0eSBhbmQgd2hldGhlciBpcyBpdCBhY3RpdmUuXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSB2aXNpYmxlTGF5ZXJzIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHJvcGVydHkgbWFwTGVnZW5kIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHJvcGVydHkgdG9nZ2xlM2QgRGVmYXVsdDogYHtzaG93OiB0cnVlfWBcbiAqIEBwcm9wZXJ0eSBzcGxpdE1hcCBEZWZhdWx0OiBge3Nob3c6IHRydWV9YFxuICogQHByb3BlcnR5IG1hcERyYXcgRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwcm9wZXJ0eSBtYXBMb2NhbGUgRGVmYXVsdDogYHtzaG93OiBmYWxzZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUF9DT05UUk9MUzogTWFwQ29udHJvbHMgPSAoXG4gIE9iamVjdC5rZXlzKE1BUF9DT05UUk9MUykgYXMgQXJyYXk8a2V5b2YgdHlwZW9mIE1BUF9DT05UUk9MUz5cbikucmVkdWNlKFxuICAoZmluYWwsIGN1cnJlbnQpID0+ICh7XG4gICAgLi4uZmluYWwsXG4gICAgW2N1cnJlbnRdOlxuICAgICAgY3VycmVudCA9PT0gTUFQX0NPTlRST0xTLm1hcExlZ2VuZFxuICAgICAgICA/IERFRkFVTFRfTUFQX0xFR0VORF9DT05UUk9MXG4gICAgICAgIDogREVGQVVMVF9NQVBfQ09OVFJPTFNfRkVBVFVSRVNcbiAgfSksXG4gIHt9IGFzIE1hcENvbnRyb2xzXG4pO1xuXG4vKipcbiAqIERlZmF1bHQgaW1hZ2UgZXhwb3J0IGNvbmZpZ1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcmF0aW8gRGVmYXVsdDogYCdTQ1JFRU4nYCxcbiAqIEBwcm9wZXJ0eSByZXNvbHV0aW9uIERlZmF1bHQ6IGAnT05FX1gnYCxcbiAqIEBwcm9wZXJ0eSBsZWdlbmQgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBtYXBIIERlZmF1bHQ6IDAsXG4gKiBAcHJvcGVydHkgbWFwVyBEZWZhdWx0OiAwLFxuICogQHByb3BlcnR5IGltYWdlU2l6ZSBEZWZhdWx0OiB7em9vbU9mZnNldDogMCwgc2NhbGU6IDEsIGltYWdlVzogMCwgaW1hZ2VIOiAwfSxcbiAqIEBwcm9wZXJ0eSBpbWFnZURhdGFVcmkgRGVmYXVsdDogYCcnYCxcbiAqIEBwcm9wZXJ0eSBleHBvcnRpbmcgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGVycm9yIERlZmF1bHQ6IGBmYWxzZWBcbiAqIEBwcm9wZXJ0eSBlc2NhcGVYaHRtbEZvcldlYnBhY2sgRGVmYXVsdDogYHRydWVgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9JTUFHRTogRXhwb3J0SW1hZ2UgPSB7XG4gIC8vIHVzZXIgb3B0aW9uc1xuICByYXRpbzogRVhQT1JUX0lNR19SQVRJT1MuU0NSRUVOLFxuICByZXNvbHV0aW9uOiBSRVNPTFVUSU9OUy5PTkVfWCxcbiAgbGVnZW5kOiBmYWxzZSxcbiAgbWFwSDogMCxcbiAgbWFwVzogMCxcbiAgaW1hZ2VTaXplOiB7XG4gICAgem9vbU9mZnNldDogMCxcbiAgICBzY2FsZTogMSxcbiAgICBpbWFnZVc6IDAsXG4gICAgaW1hZ2VIOiAwXG4gIH0sXG4gIC8vIHdoZW4gdGhpcyBpcyBzZXQgdG8gdHJ1ZSwgdGhlIG1vY2sgbWFwIHZpZXdwb3J0IHdpbGwgbW92ZSB0byB0aGUgY2VudGVyIG9mIGRhdGFcbiAgY2VudGVyOiBmYWxzZSxcbiAgLy8gZXhwb3J0aW5nIHN0YXRlXG4gIGltYWdlRGF0YVVyaTogJycsXG4gIC8vIGV4cG9ydGluZzogdXNlZCB0byBhdHRhY2ggcGxvdC1jb250YWluZXIgdG8gZG9tXG4gIGV4cG9ydGluZzogZmFsc2UsXG4gIC8vIHByb2Nlc3Npbmc6IHVzZWQgYXMgbG9hZGluZyBpbmRpY2F0b3Igd2hlbiBleHBvcnQgaW1hZ2UgaXMgYmVpbmcgcHJvZHVjZWRcbiAgcHJvY2Vzc2luZzogZmFsc2UsXG4gIGVycm9yOiBmYWxzZSxcbiAgLy8gd2hldGhlciB0byBhcHBseSBmaXggZm9yIHVnbGlmeSBlcnJvciBpbiBkb20tdG8taW1hZ2UgKHNob3VsZCBiZSB0cnVlIGZvciB3ZWJwYWNrIGJ1aWxkcylcbiAgZXNjYXBlWGh0bWxGb3JXZWJwYWNrOiB0cnVlXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MT0FEX0ZJTEVTID0ge1xuICBmaWxlTG9hZGluZzogZmFsc2Vcbn07XG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBleHBvcnREYXRhYCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgc2VsZWN0ZWREYXRhc2V0IERlZmF1bHQ6IGAnJ2AsXG4gKiBAcHJvcGVydHkgZGF0YVR5cGUgRGVmYXVsdDogYCdjc3YnYCxcbiAqIEBwcm9wZXJ0eSBmaWx0ZXJlZCBEZWZhdWx0OiBgdHJ1ZWAsXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9EQVRBOiBFeHBvcnREYXRhID0ge1xuICBzZWxlY3RlZERhdGFzZXQ6ICcnLFxuICBkYXRhVHlwZTogRVhQT1JUX0RBVEFfVFlQRS5DU1YsXG4gIGZpbHRlcmVkOiB0cnVlXG59O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05TID0gW107XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4gLSBEZWZhdWx0OiBudWxsLCB0aGlzIGlzIHVzZWQgd2hlbiB3ZSBwcm92aWRlIGEgZGVmYXVsdCBtYXBib3ggdG9rZW4gZm9yIHVzZXJzIHRvIHRha2UgYWR2YW50YWdlIG9mXG4gKiBAcHJvcGVydHkgdXNlck1hcGJveFRva2VuIC0gRGVmYXVsdDogJycsIG1hcGJveCB0b2tlbiBwcm92aWRlZCBieSB1c2VyIHRocm91Z2ggaW5wdXQgZmllbGRcbiAqIEBwcm9wZXJ0eSBtb2RlIC0gRGVmYXVsdDogJ1JFQUQnLCByZWFkIG9ubHkgb3IgZWRpdGFibGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX0hUTUw6IEV4cG9ydEh0bWwgPSB7XG4gIGV4cG9ydE1hcGJveEFjY2Vzc1Rva2VuOiBudWxsLFxuICB1c2VyTWFwYm94VG9rZW46ICcnLFxuICBtb2RlOiBFWFBPUlRfSFRNTF9NQVBfTU9ERVMuUkVBRFxufTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBoYXNEYXRhIC0gRGVmYXVsdDogJ3RydWUnLFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FWFBPUlRfSlNPTjogRXhwb3J0SnNvbiA9IHtcbiAgaGFzRGF0YTogdHJ1ZVxufTtcblxuLyoqXG4gKiBFeHBvcnQgTWFwIENvbmZpZ1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgSFRNTCAtIERlZmF1bHQ6ICdERUZBVUxUX0VYUE9SVF9IVE1MJyxcbiAqIEBwcm9wZXJ0eSBKU09OIC0gRGVmYXVsdDogJ0RFRkFVTFRfRVhQT1JUX0pTT04nLFxuICogQHByb3BlcnR5IGZvcm1hdCAtIERlZmF1bHQ6ICdIVE1MJyxcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX01BUDogRXhwb3J0TWFwID0ge1xuICBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdOiBERUZBVUxUX0VYUE9SVF9IVE1MLFxuICBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dOiBERUZBVUxUX0VYUE9SVF9KU09OLFxuICBmb3JtYXQ6IEVYUE9SVF9NQVBfRk9STUFUUy5IVE1MXG59O1xuXG4vKipcbiAqIERlZmF1bHQgaW5pdGlhbCBgdWlTdGF0ZWBcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBjb25zdGFudFxuICogQHByb3BlcnR5IHJlYWRPbmx5IERlZmF1bHQ6IGBmYWxzZWBcbiAqIEBwcm9wZXJ0eSBhY3RpdmVTaWRlUGFuZWwgRGVmYXVsdDogYCdsYXllcidgXG4gKiBAcHJvcGVydHkgY3VycmVudE1vZGFsIERlZmF1bHQ6IGAnYWRkRGF0YSdgXG4gKiBAcHJvcGVydHkgZGF0YXNldEtleVRvUmVtb3ZlIERlZmF1bHQ6IGBudWxsYFxuICogQHByb3BlcnR5IHZpc2libGVEcm9wZG93biBEZWZhdWx0OiBgbnVsbGBcbiAqIEBwcm9wZXJ0eSBleHBvcnRJbWFnZSBEZWZhdWx0OiBbYERFRkFVTFRfRVhQT1JUX0lNQUdFYF0oI2RlZmF1bHRfZXhwb3J0X2ltYWdlKVxuICogQHByb3BlcnR5IGV4cG9ydERhdGEgRGVmYXVsdDogW2BERUZBVUxUX0VYUE9SVF9EQVRBYF0oI2RlZmF1bHRfZXhwb3J0X2RhdGEpXG4gKiBAcHJvcGVydHkgZXhwb3J0TWFwIERlZmF1bHQ6IFtgREVGQVVMVF9FWFBPUlRfTUFQYF0oI2RlZmF1bHRfZXhwb3J0X21hcClcbiAqIEBwcm9wZXJ0eSBtYXBDb250cm9scyBEZWZhdWx0OiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHByb3BlcnR5IG5vdGlmaWNhdGlvbnMgRGVmYXVsdDogYFtdYFxuICogQHByb3BlcnR5IG5vdGlmaWNhdGlvbnMgRGVmYXVsdDogYFtdYFxuICogQHByb3BlcnR5IGxvYWRGaWxlc1xuICogQHByb3BlcnR5IGlzU2lkZVBhbmVsQ2xvc2VCdXR0b25WaXNpYmxlIERlZmF1bHQ6IGB0cnVlYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9VSV9TVEFURTogVWlTdGF0ZSA9IHtcbiAgcmVhZE9ubHk6IGZhbHNlLFxuICBhY3RpdmVTaWRlUGFuZWw6IERFRkFVTFRfQUNUSVZFX1NJREVfUEFORUwsXG4gIGN1cnJlbnRNb2RhbDogREVGQVVMVF9NT0RBTCxcbiAgZGF0YXNldEtleVRvUmVtb3ZlOiBudWxsLFxuICB2aXNpYmxlRHJvcGRvd246IG51bGwsXG4gIC8vIGV4cG9ydCBpbWFnZSBtb2RhbCB1aVxuICBleHBvcnRJbWFnZTogREVGQVVMVF9FWFBPUlRfSU1BR0UsXG4gIC8vIGV4cG9ydCBkYXRhIG1vZGFsIHVpXG4gIGV4cG9ydERhdGE6IERFRkFVTFRfRVhQT1JUX0RBVEEsXG4gIC8vIGh0bWwgZXhwb3J0XG4gIGV4cG9ydE1hcDogREVGQVVMVF9FWFBPUlRfTUFQLFxuICAvLyBtYXAgY29udHJvbCBwYW5lbHNcbiAgbWFwQ29udHJvbHM6IERFRkFVTFRfTUFQX0NPTlRST0xTLFxuICAvLyB1aSBub3RpZmljYXRpb25zXG4gIG5vdGlmaWNhdGlvbnM6IERFRkFVTFRfTk9USUZJQ0FUSU9OUyxcbiAgLy8gbG9hZCBmaWxlc1xuICBsb2FkRmlsZXM6IERFRkFVTFRfTE9BRF9GSUxFUyxcbiAgLy8gTG9jYWxlIG9mIHRoZSBVSVxuICBsb2NhbGU6IExPQ0FMRV9DT0RFUy5lbixcbiAgbGF5ZXJQYW5lbExpc3RWaWV3OiAnbGlzdCcsXG4gIGZpbHRlclBhbmVsTGlzdFZpZXc6ICdsaXN0JyxcbiAgaXNTaWRlUGFuZWxDbG9zZUJ1dHRvblZpc2libGU6IHRydWVcbn07XG5cbi8qIFVwZGF0ZXJzICovXG4vKipcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IGluaXRVaVN0YXRlVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIGFjdGlvbjoge1xuICAgIHR5cGU/OiAodHlwZW9mIEFjdGlvblR5cGVzKVsnSU5JVCddO1xuICAgIHBheWxvYWQ6IEtlcGxlckdsSW5pdFBheWxvYWQ7XG4gIH1cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIC4uLihhY3Rpb24ucGF5bG9hZCB8fCB7fSkuaW5pdGlhbFVpU3RhdGVcbn0pO1xuXG4vKipcbiAqIFRvZ2dsZSBhY3RpdmUgc2lkZSBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGlkIG9mIHNpZGUgcGFuZWwgdG8gYmUgc2hvd24sIG9uZSBvZiBgbGF5ZXJgLCBgZmlsdGVyYCwgYGludGVyYWN0aW9uYCwgYG1hcGAuIGNsb3NlIHNpZGUgcGFuZWwgaWYgYG51bGxgXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNpZGVQYW5lbFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVTaWRlUGFuZWxVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgcmV0dXJuIGlkID09PSBzdGF0ZS5hY3RpdmVTaWRlUGFuZWxcbiAgICA/IHN0YXRlXG4gICAgOiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBhY3RpdmVTaWRlUGFuZWw6IGlkXG4gICAgICB9O1xufTtcblxuLyoqXG4gKiBTaG93IGFuZCBoaWRlIG1vZGFsIGRpYWxvZ1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtYWN0aW9uLnBheWxvYWQgaWQgb2YgbW9kYWwgdG8gYmUgc2hvd24sIG51bGwgdG8gaGlkZSBtb2RhbHMuIE9uZSBvZjpcbiAqICAtIFtgREFUQV9UQUJMRV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2RhdGFfdGFibGVfaWQpXG4gKiAgLSBbYERFTEVURV9EQVRBX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZGVsZXRlX2RhdGFfaWQpXG4gKiAgLSBbYEFERF9EQVRBX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjYWRkX2RhdGFfaWQpXG4gKiAgLSBbYEVYUE9SVF9JTUFHRV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2V4cG9ydF9pbWFnZV9pZClcbiAqICAtIFtgRVhQT1JUX0RBVEFfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNleHBvcnRfZGF0YV9pZClcbiAqICAtIFtgQUREX01BUF9TVFlMRV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2FkZF9tYXBfc3R5bGVfaWQpXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZU1vZGFsVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBpZH06IFVJU3RhdGVBY3Rpb25zLlRvZ2dsZU1vZGFsVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgY3VycmVudE1vZGFsOiBpZFxufSk7XG5cbi8qKlxuICogSGlkZSBhbmQgc2hvdyBzaWRlIHBhbmVsIGhlYWRlciBkcm9wZG93biwgYWN0aXZhdGVkIGJ5IGNsaWNraW5nIHRoZSBzaGFyZSBsaW5rIG9uIHRvcCBvZiB0aGUgc2lkZSBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2hvd0V4cG9ydERyb3Bkb3duVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBpZH06IFVJU3RhdGVBY3Rpb25zLlNob3dFeHBvcnREcm9wZG93blVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIHZpc2libGVEcm9wZG93bjogaWRcbn0pO1xuXG4vKipcbiAqIEhpZGUgc2lkZSBwYW5lbCBoZWFkZXIgZHJvcGRvd24sIGFjdGl2YXRlZCBieSBjbGlja2luZyB0aGUgc2hhcmUgbGluayBvbiB0b3Agb2YgdGhlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGhpZGVFeHBvcnREcm9wZG93blVwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICB2aXNpYmxlRHJvcGRvd246IG51bGxcbn0pO1xuXG4vKipcbiAqIFRvZ2dsZSBzaWRlIHBhbmVsIGNsb3NlIGJ1dHRvbiBvbiB0b3AgbGVmdCBvZiB0aGUgc2lkZSBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlU2lkZVBhbmVsQ2xvc2VCdXR0b25VcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IHtzaG93fX06IFVJU3RhdGVBY3Rpb25zLlRvZ2dsZVNpZGVQYW5lbENsb3NlQnV0dG9uVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgaXNTaWRlUGFuZWxDbG9zZUJ1dHRvblZpc2libGU6IHNob3dcbn0pO1xuXG4vKipcbiAqIFRvZ2dsZSBhY3RpdmUgbWFwIGNvbnRyb2wgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb24gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgbWFwIGNvbnRyb2wgcGFuZWwgaWQsIG9uZSBvZiB0aGUga2V5cyBvZjogW2BERUZBVUxUX01BUF9DT05UUk9MU2BdKCNkZWZhdWx0X21hcF9jb250cm9scylcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge3BhbmVsSWQsIGluZGV4ID0gMH19OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIGxldCB1cGRhdGVkU3RhdGUgPSBzdGF0ZTtcbiAgLy8gVGhlIGVmZmVjdCBwYW5lbCBhbmQgYWkgYXNzaXN0YW50IHBhbmVsIGNhbiBub3QgYmUgYWN0aXZlIGF0IHRoZSBzYW1lIHRpbWVcbiAgLy8gc28gd2UgbmVlZCB0byBkZWFjdGl2YXRlIHRoZSBvdGhlciBwYW5lbCB3aGVuIG9uZSBpcyBhY3RpdmF0ZWRcbiAgY29uc3QgcGFuZWxUb0RlYWN0aXZhdGUgPVxuICAgIHBhbmVsSWQgPT09IE1BUF9DT05UUk9MUy5lZmZlY3RcbiAgICAgID8gTUFQX0NPTlRST0xTLmFpQXNzaXN0YW50XG4gICAgICA6IHBhbmVsSWQgPT09IE1BUF9DT05UUk9MUy5haUFzc2lzdGFudFxuICAgICAgPyBNQVBfQ09OVFJPTFMuZWZmZWN0XG4gICAgICA6IG51bGw7XG5cbiAgLy8gSWYgd2UgbmVlZCB0byBkZWFjdGl2YXRlIGEgY29tcGV0aW5nIHBhbmVsIGFuZCBpdCdzIGN1cnJlbnRseSBhY3RpdmVcbiAgaWYgKHBhbmVsVG9EZWFjdGl2YXRlICYmIHN0YXRlLm1hcENvbnRyb2xzW3BhbmVsVG9EZWFjdGl2YXRlXT8uYWN0aXZlKSB7XG4gICAgdXBkYXRlZFN0YXRlID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBtYXBDb250cm9sczoge1xuICAgICAgICAuLi51cGRhdGVkU3RhdGUubWFwQ29udHJvbHMsXG4gICAgICAgIFtwYW5lbFRvRGVhY3RpdmF0ZV06IHtcbiAgICAgICAgICAuLi51cGRhdGVkU3RhdGUubWFwQ29udHJvbHNbcGFuZWxUb0RlYWN0aXZhdGVdLFxuICAgICAgICAgIGFjdGl2ZTogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnVwZGF0ZWRTdGF0ZSxcbiAgICBtYXBDb250cm9sczoge1xuICAgICAgLi4udXBkYXRlZFN0YXRlLm1hcENvbnRyb2xzLFxuICAgICAgW3BhbmVsSWRdOiB7XG4gICAgICAgIC4uLnVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXSxcbiAgICAgICAgYWN0aXZlOiAhdXBkYXRlZFN0YXRlLm1hcENvbnRyb2xzW3BhbmVsSWRdLmFjdGl2ZSxcbiAgICAgICAgYWN0aXZlTWFwSW5kZXg6IGluZGV4XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgbWFwIGNvbnRyb2wgdmlzaWJpbGl0eVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvbiBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBtYXAgY29udHJvbCBwYW5lbCBpZCwgb25lIG9mIHRoZSBrZXlzIG9mOiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge3BhbmVsSWQsIHNob3d9fTogVUlTdGF0ZUFjdGlvbnMuc2V0TWFwQ29udHJvbFZpc2liaWxpdHlVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgaWYgKCFzdGF0ZS5tYXBDb250cm9scz8uW3BhbmVsSWRdKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtYXBDb250cm9sczoge1xuICAgICAgLi4uc3RhdGUubWFwQ29udHJvbHMsXG4gICAgICBbcGFuZWxJZF06IHtcbiAgICAgICAgLi4uc3RhdGUubWFwQ29udHJvbHNbcGFuZWxJZF0sXG4gICAgICAgIHNob3c6IEJvb2xlYW4oc2hvdylcbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBtYXAgY29udHJvbCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvbiBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBtYXAgY29udHJvbCBwYW5lbCBpZCwgb25lIG9mIHRoZSBrZXlzIG9mOiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRNYXBDb250cm9sU2V0dGluZ3NVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IHtwYW5lbElkLCBzZXR0aW5nc319OiBVSVN0YXRlQWN0aW9ucy5zZXRNYXBDb250cm9sU2V0dGluZ3NVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3QgbWFwQ29udHJvbCA9IHN0YXRlLm1hcENvbnRyb2xzPy5bcGFuZWxJZF07XG4gIGlmICghbWFwQ29udHJvbCkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgbWFwQ29udHJvbHM6IHtcbiAgICAgIC4uLnN0YXRlLm1hcENvbnRyb2xzLFxuICAgICAgW3BhbmVsSWRdOiB7Li4ubWFwQ29udHJvbCwgc2V0dGluZ3M6IHsuLi5tYXBDb250cm9sLnNldHRpbmdzLCAuLi5zZXR0aW5nc319XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIG1hcCBjb250cm9sIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZGF0YXNldCBpZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBvcGVuRGVsZXRlTW9kYWxVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFzZXRLZXlUb1JlbW92ZX06IFVJU3RhdGVBY3Rpb25zLk9wZW5EZWxldGVNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogREVMRVRFX0RBVEFfSUQsXG4gIGRhdGFzZXRLZXlUb1JlbW92ZVxufSk7XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZS5sZWdlbmRgIHRvIGB0cnVlYCBvciBgZmFsc2VgXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogbmV3U2V0dGluZ306IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCB1cGRhdGVkID0gey4uLnN0YXRlLmV4cG9ydEltYWdlLCAuLi5uZXdTZXR0aW5nfTtcbiAgY29uc3QgaW1hZ2VTaXplID0gY2FsY3VsYXRlRXhwb3J0SW1hZ2VTaXplKHVwZGF0ZWQpIHx8IHN0YXRlLmV4cG9ydEltYWdlLmltYWdlU2l6ZTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGV4cG9ydEltYWdlOiB7XG4gICAgICAuLi51cGRhdGVkLFxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgLy8gVE9ETzogY2FsY3VsYXRlRXhwb3J0SW1hZ2VTaXplIGRvZXMgbm90IHJldHVybiBpbWFnZVNpemUuem9vbU9mZnNldCxcbiAgICAgIC8vIGRvIHdlIG5lZWQgdGFrZSB0aGlzIHZhbHVlIGZyb20gY3VycmVudCBzdGF0ZSwgb3IgcmV0dXJuIGRlZmF1bCB2YWx1ZSA9IDBcbiAgICAgIGltYWdlU2l6ZVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZS5zZXRFeHBvcnRJbWFnZURhdGFVcmlgIHRvIGEgaW1hZ2UgZGF0YVVyaVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGV4cG9ydCBpbWFnZSBkYXRhIHVyaVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZURhdGFVcmlVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFVcml9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbWFnZURhdGFVcmlVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRJbWFnZToge1xuICAgIC4uLnN0YXRlLmV4cG9ydEltYWdlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGltYWdlRGF0YVVyaTogZGF0YVVyaVxuICB9XG59KTtcblxuLyoqXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBlcnJvcn06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRJbWFnZToge1xuICAgIC4uLnN0YXRlLmV4cG9ydEltYWdlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGVycm9yXG4gIH1cbn0pO1xuXG4vKipcbiAqIERlbGV0ZSBjYWNoZWQgZXhwb3J0IGltYWdlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBjbGVhbnVwRXhwb3J0SW1hZ2VVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0SW1hZ2U6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICBleHBvcnRpbmc6IGZhbHNlLFxuICAgIGltYWdlRGF0YVVyaTogJycsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGNlbnRlcjogZmFsc2VcbiAgfVxufSk7XG5cbi8qKlxuICogU3RhcnQgaW1hZ2UgZXhwb3J0aW5nIGZsb3dcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZVxuICogQHBhcmFtIG9wdGlvbnNcbiAqIEByZXR1cm5zIHtVaVN0YXRlfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc3RhcnRFeHBvcnRpbmdJbWFnZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogb3B0aW9ucyA9IHt9fToge3BheWxvYWQ6IFBhcnRpYWw8RXhwb3J0SW1hZ2U+fVxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IGltYWdlU2V0dGluZ3MgPSB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBleHBvcnRpbmc6IHRydWVcbiAgfTtcblxuICByZXR1cm4gY29tcG9zZV8oW1xuICAgIGNsZWFudXBFeHBvcnRJbWFnZVVwZGF0ZXIsXG4gICAgYXBwbHlfKHNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXIsIHBheWxvYWRfKGltYWdlU2V0dGluZ3MpKVxuICBdKShzdGF0ZSk7XG59O1xuXG4vKipcbiAqIFNldCBzZWxlY3RlZCBkYXRhc2V0IGZvciBleHBvcnRcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBkYXRhc2V0IGlkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogZGF0YXNldH06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydERhdGE6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnREYXRhLFxuICAgIHNlbGVjdGVkRGF0YXNldDogZGF0YXNldFxuICB9XG59KTtcblxuLyoqXG4gKiBTZXQgZGF0YSBmb3JtYXQgZm9yIGV4cG9ydGluZyBkYXRhXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgb25lIG9mIGAndGV4dC9jc3YnYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogZGF0YVR5cGV9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydERhdGE6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnREYXRhLFxuICAgIGRhdGFUeXBlXG4gIH1cbn0pO1xuXG4vKipcbiAqIFdoZXRoZXIgdG8gZXhwb3J0IGZpbHRlcmVkIGRhdGEsIGB0cnVlYCBvciBgZmFsc2VgXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWRcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RmlsdGVyZWRVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGZpbHRlcmVkfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0RmlsdGVyZWRVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnREYXRhOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0RGF0YSxcbiAgICBmaWx0ZXJlZFxuICB9XG59KTtcblxuLyoqXG4gKiBXaGV0aGVyIHRvIGluY2x1ZGluZyBkYXRhIGluIG1hcCBjb25maWcsIHRvZ2dsZSBiZXR3ZWVuIGB0cnVlYCBvciBgZmFsc2VgXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydERhdGFVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIFtFWFBPUlRfTUFQX0ZPUk1BVFMuSlNPTl06IHtcbiAgICAgIC4uLnN0YXRlLmV4cG9ydE1hcFtFWFBPUlRfTUFQX0ZPUk1BVFMuSlNPTl0sXG4gICAgICBoYXNEYXRhOiAhc3RhdGUuZXhwb3J0TWFwW0VYUE9SVF9NQVBfRk9STUFUUy5KU09OXS5oYXNEYXRhXG4gICAgfVxuICB9XG59KTtcblxuLyoqXG4gKiB3aGV0aGVyIHRvIGV4cG9ydCBhIG1hcGJveCBhY2Nlc3MgdG8gSFRNTCBzaW5nbGUgcGFnZVxuICogQHBhcmFtIHN0YXRlIC0gYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWRcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB1c2VyTWFwYm94VG9rZW59OiBVSVN0YXRlQWN0aW9ucy5TZXRVc2VyTWFwYm94QWNjZXNzVG9rZW5VcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRNYXA6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRNYXAsXG4gICAgW0VYUE9SVF9NQVBfRk9STUFUUy5IVE1MXToge1xuICAgICAgLi4uc3RhdGUuZXhwb3J0TWFwW0VYUE9SVF9NQVBfRk9STUFUUy5IVE1MXSxcbiAgICAgIHVzZXJNYXBib3hUb2tlblxuICAgIH1cbiAgfVxufSk7XG5cbi8qKlxuICogU2V0cyB0aGUgZXhwb3J0IG1hcCBmb3JtYXRcbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGZvcm1hdCB0byB1c2UgdG8gZXhwb3J0IHRoZSBtYXAgaW50b1xuICogQHJldHVybiBuZXh0U3RhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogZm9ybWF0fTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0TWFwRm9ybWF0VXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBmb3JtYXRcbiAgfVxufSk7XG5cbi8qKlxuICogU2V0IHRoZSBleHBvcnQgaHRtbCBtYXAgbW9kZVxuICogQHBhcmFtIHN0YXRlIC0gYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgdG8gYmUgc2V0IChhdmFpbGFibGUgbW9kZXM6IEVYUE9SVF9IVE1MX01BUF9NT0RFUylcbiAqIEByZXR1cm4gbmV4dFN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRNYXBIVE1MTW9kZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogbW9kZX06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEhUTUxNYXBNb2RlVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF06IHtcbiAgICAgIC4uLnN0YXRlLmV4cG9ydE1hcFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF0sXG4gICAgICBtb2RlXG4gICAgfVxuICB9XG59KTtcblxuLyoqXG4gKiBBZGRzIGEgbmV3IG5vdGlmaWNhdGlvbi5cbiAqIFVwZGF0ZXMgYSBub3RpZmljYXRpb24gaW4gY2FzZSBvZiBtYXRjaGluZyBpZHMuXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgUGFyYW1zIG9mIGEgbm90aWZpY2F0aW9uXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZE5vdGlmaWNhdGlvblVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZH06IFVJU3RhdGVBY3Rpb25zLkFkZE5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBvbGROb3RpZmljYXRpb25zID0gc3RhdGUubm90aWZpY2F0aW9ucyB8fCBbXTtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICBjb25zdCBwYXlsb2FkSWQgPSBwYXlsb2FkPy5pZDtcbiAgY29uc3Qgbm90aWZpY2F0aW9uVG9VcGRhdGUgPSBwYXlsb2FkSWQgPyBvbGROb3RpZmljYXRpb25zLmZpbmQobiA9PiBuLmlkID09PSBwYXlsb2FkSWQpIDogbnVsbDtcblxuICBsZXQgbm90aWZpY2F0aW9ucztcbiAgaWYgKG5vdGlmaWNhdGlvblRvVXBkYXRlKSB7XG4gICAgbm90aWZpY2F0aW9ucyA9IG9sZE5vdGlmaWNhdGlvbnMubWFwKG4gPT5cbiAgICAgIG4uaWQgPT09IHBheWxvYWRJZCA/IGNyZWF0ZU5vdGlmaWNhdGlvbih7Li4ucGF5bG9hZCwgY291bnQ6IG4uY291bnQgKyAxfSkgOiBuXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBub3RpZmljYXRpb25zID0gWy4uLm9sZE5vdGlmaWNhdGlvbnMsIGNyZWF0ZU5vdGlmaWNhdGlvbihwYXlsb2FkKV07XG4gIH1cblxuICByZXR1cm4gey4uLnN0YXRlLCBub3RpZmljYXRpb25zfTtcbn07XG5cbi8qKlxuICogUmVtb3ZlIGEgbm90aWZpY2F0aW9uXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgaWQgb2YgdGhlIG5vdGlmaWNhdGlvbiB0byBiZSByZW1vdmVkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5SZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBub3RpZmljYXRpb25zOiBzdGF0ZS5ub3RpZmljYXRpb25zLmZpbHRlcihuID0+IG4uaWQgIT09IGlkKVxufSk7XG5cbi8qKlxuICogRmlyZWQgd2hlbiBmaWxlIGxvYWRpbmcgYmVnaW5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGxvYWRGaWxlczoge1xuICAgIC4uLnN0YXRlLmxvYWRGaWxlcyxcbiAgICBmaWxlTG9hZGluZzogdHJ1ZVxuICB9XG59KTtcblxuLyoqXG4gKiBIYW5kbGVzIGxvYWRpbmcgZmlsZSBzdWNjZXNzIGFuZCBzZXQgZmlsZUxvYWRpbmcgcHJvcGVydHkgdG8gZmFsc2VcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICovXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBsb2FkRmlsZXM6IHtcbiAgICAuLi5zdGF0ZS5sb2FkRmlsZXMsXG4gICAgZmlsZUxvYWRpbmc6IGZhbHNlXG4gIH1cbn0pO1xuXG4vKipcbiAqIEhhbmRsZXMgbG9hZCBmaWxlIGVycm9yIGFuZCBzZXQgZmlsZUxvYWRpbmcgcHJvcGVydHkgdG8gZmFsc2VcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZVxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5lcnJvclxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBsb2FkRmlsZXNFcnJVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlLCB7ZXJyb3J9OiBMb2FkRmlsZXNFcnJVcGRhdGVyQWN0aW9uKTogVWlTdGF0ZSA9PlxuICBhZGROb3RpZmljYXRpb25VcGRhdGVyKFxuICAgIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgbG9hZEZpbGVzOiB7XG4gICAgICAgIC4uLnN0YXRlLmxvYWRGaWxlcyxcbiAgICAgICAgZmlsZUxvYWRpbmc6IGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBwYXlsb2FkOiBlcnJvck5vdGlmaWNhdGlvbih7XG4gICAgICAgIG1lc3NhZ2U6IChlcnJvciB8fCB7fSkubWVzc2FnZSB8fCAnRmFpbGVkIHRvIHVwbG9hZCBmaWxlcycsXG4gICAgICAgIHRvcGljOiBERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MuZ2xvYmFsXG4gICAgICB9KVxuICAgIH1cbiAgKTtcblxuLyoqXG4gKiBIYW5kbGVzIHRvZ2dsZSBtYXAgc3BsaXQgYW5kIHJlc2V0IGFsbCBtYXAgY29udHJvbCBpbmRleCB0byAwXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlU3BsaXRNYXBVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbWFwQ29udHJvbHM6IE9iamVjdC5lbnRyaWVzKHN0YXRlLm1hcENvbnRyb2xzKS5yZWR1Y2UoXG4gICAgKGFjYywgZW50cnkpID0+ICh7XG4gICAgICAuLi5hY2MsXG4gICAgICBbZW50cnlbMF1dOiB7XG4gICAgICAgIC4uLmVudHJ5WzFdLFxuICAgICAgICBhY3RpdmVNYXBJbmRleDogMFxuICAgICAgfVxuICAgIH0pLFxuICAgIHt9IGFzIE1hcENvbnRyb2xzXG4gIClcbn0pO1xuXG4vKipcbiAqIFRvZ2dsZSBtb2RhbCBkYXRhXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2hvd0RhdGFzZXRUYWJsZVVwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+XG4gIHRvZ2dsZU1vZGFsVXBkYXRlcihzdGF0ZSwge3BheWxvYWQ6IERBVEFfVEFCTEVfSUR9KTtcblxuLyoqXG4gKiBTZXQgdGhlIGxvY2FsZSBvZiB0aGUgVUlcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZFxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkLmxvY2FsZSBsb2NhbGVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0TG9jYWxlVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7bG9jYWxlfX06IFVJU3RhdGVBY3Rpb25zLlNldExvY2FsZVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGxvY2FsZVxufSk7XG5cbi8qKlxuICogVG9nZ2xlIGxheWVyIHBhbmVsIGxpc3Qgdmlld1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGxheWVyIHBhbmVsIGxpc3RWaWV3IHZhbHVlLiBDYW4gYmUgJ2xpc3QnIG9yICdzb3J0QnlEYXRhc2V0J1xuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVQYW5lbExpc3RWaWV3VXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgbGlzdFZpZXd9fTogVUlTdGF0ZUFjdGlvbnMuVG9nZ2xlUGFuZWxMaXN0Vmlld0FjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IHN0YXRlUHJvcCA9XG4gICAgcGFuZWxJZCA9PT0gJ2xheWVyJ1xuICAgICAgPyAnbGF5ZXJQYW5lbExpc3RWaWV3J1xuICAgICAgOiBwYW5lbElkID09PSAnZmlsdGVyJ1xuICAgICAgPyAnZmlsdGVyUGFuZWxMaXN0VmlldydcbiAgICAgIDogbnVsbDtcbiAgaWYgKCFzdGF0ZVByb3AgfHwgc3RhdGVbc3RhdGVQcm9wXSA9PT0gbGlzdFZpZXcpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBbc3RhdGVQcm9wXTogbGlzdFZpZXdcbiAgfTtcbn07XG5cbi8qKlxuICogVXBkYXRlIHN0YXRlIG9mIHRoZSBsb2FkaW5nIGluZGljYXRvci5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSB1aVN0YXRlXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgUGF5bG9hZCB3aXRoIGNoYW5nZSBvZiBudW1iZXIgb2YgYWN0aXZlIGxvYWRpbmcgYWN0aW9ucy5cbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0TG9hZGluZ0luZGljYXRvclVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge2NoYW5nZX19OiBVSVN0YXRlQWN0aW9ucy5TZXRMb2FkaW5nSW5kaWNhdG9yQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgbGV0IHtsb2FkaW5nSW5kaWNhdG9yVmFsdWV9ID0gc3RhdGU7XG4gIGlmICghbG9hZGluZ0luZGljYXRvclZhbHVlKSB7XG4gICAgbG9hZGluZ0luZGljYXRvclZhbHVlID0gMDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgbG9hZGluZ0luZGljYXRvclZhbHVlOiBNYXRoLm1heChsb2FkaW5nSW5kaWNhdG9yVmFsdWUgKyBjaGFuZ2UsIDApXG4gIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFHQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFhQSxJQUFBQyxhQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxNQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxnQkFBQSxHQUFBSCxPQUFBO0FBQThELFNBQUFJLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxH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
|