kepler.gl 3.1.7 → 3.1.8
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/ui-state-actions.d.ts +0 -16
- package/dist/src/actions/src/vis-state-actions.d.ts +26 -0
- package/dist/src/ai-assistant/src/constants.d.ts +2 -5
- package/dist/src/ai-assistant/src/tools/geo-tools.d.ts +76 -25
- package/dist/src/ai-assistant/src/tools/tools.d.ts +76 -25
- package/dist/src/components/src/side-panel/add-by-dataset-button.d.ts +0 -1
- package/dist/src/duckdb/src/table/duckdb-table-utils.d.ts +8 -9
- package/dist/src/localization/src/translations/ca.d.ts +2 -0
- package/dist/src/localization/src/translations/cn.d.ts +2 -0
- package/dist/src/localization/src/translations/en.d.ts +2 -0
- package/dist/src/localization/src/translations/es.d.ts +2 -0
- package/dist/src/localization/src/translations/fi.d.ts +2 -0
- package/dist/src/localization/src/translations/ja.d.ts +2 -0
- package/dist/src/localization/src/translations/pt.d.ts +2 -0
- package/dist/src/localization/src/translations/ru.d.ts +2 -0
- package/dist/src/reducers/src/ui-state-updaters.d.ts +0 -10
- package/dist/src/reducers/src/vis-state-updaters.d.ts +16 -1
- package/dist/src/reducers/src/vis-state.d.ts +4 -0
- package/dist/src/schemas/src/vis-state-schema.d.ts +1 -0
- package/package.json +2 -2
- package/src/actions/dist/ui-state-actions.d.ts +0 -16
- package/src/actions/dist/ui-state-actions.js +2 -17
- package/src/actions/dist/vis-state-actions.d.ts +26 -0
- package/src/actions/dist/vis-state-actions.js +25 -1
- package/src/actions/package.json +8 -8
- package/src/actions/src/ui-state-actions.ts +0 -22
- package/src/actions/src/vis-state-actions.ts +30 -0
- package/src/ai-assistant/dist/components/ai-assistant-component.js +63 -4
- package/src/ai-assistant/dist/components/ai-assistant-config.js +55 -17
- package/src/ai-assistant/dist/constants.d.ts +2 -5
- package/src/ai-assistant/dist/constants.js +3 -21
- package/src/ai-assistant/dist/reducers/index.js +2 -2
- package/src/ai-assistant/dist/tools/geo-tools.d.ts +76 -25
- package/src/ai-assistant/dist/tools/geo-tools.js +44 -8
- package/src/ai-assistant/dist/tools/lisa-tool.js +17 -6
- package/src/ai-assistant/dist/tools/tools.d.ts +76 -25
- package/src/ai-assistant/package.json +19 -14
- package/src/ai-assistant/src/components/ai-assistant-component.tsx +34 -4
- package/src/ai-assistant/src/components/ai-assistant-config.tsx +64 -18
- package/src/ai-assistant/src/config/models.json +5 -24
- package/src/ai-assistant/src/constants.ts +21 -26
- package/src/ai-assistant/src/reducers/index.ts +1 -1
- package/src/ai-assistant/src/tools/geo-tools.tsx +70 -9
- package/src/ai-assistant/src/tools/lisa-tool.tsx +15 -4
- package/src/cloud-providers/package.json +2 -2
- package/src/common-utils/package.json +3 -3
- package/src/components/dist/kepler-gl.js +2 -2
- package/src/components/dist/map/map-popover.js +2 -2
- package/src/components/dist/map-container.js +2 -2
- package/src/components/dist/side-panel/add-by-dataset-button.d.ts +0 -1
- package/src/components/dist/side-panel/add-by-dataset-button.js +1 -3
- package/src/components/dist/side-panel/filter-panel/add-filter-button.js +1 -2
- package/src/components/dist/side-panel/layer-panel/add-layer-button.js +1 -2
- package/src/components/dist/side-panel/layer-panel/custom-picker.js +18 -5
- package/src/components/package.json +15 -15
- package/src/components/src/kepler-gl.tsx +1 -1
- package/src/components/src/map/map-popover.tsx +1 -1
- package/src/components/src/map-container.tsx +1 -1
- package/src/components/src/side-panel/add-by-dataset-button.tsx +0 -3
- package/src/components/src/side-panel/filter-panel/add-filter-button.tsx +0 -1
- package/src/components/src/side-panel/layer-panel/add-layer-button.tsx +0 -1
- package/src/components/src/side-panel/layer-panel/custom-picker.tsx +15 -1
- package/src/constants/dist/default-settings.js +1 -1
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/e6/16/9fd3750f7cfc51cf980ec6937f88e24e5b03b144d0439efabdec6a028ce7442883abce42b76f97bffa8d37bfb65c10508e48d68a2b019c4b750a48374080 +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/b6/51/9b3488269917e0404a46b4db6235f226deef2d5b5b5ffb7414dafaa60b52 +2 -0
- package/src/constants/package.json +2 -2
- package/src/constants/umd/keplergl.min.js +1 -1
- package/src/deckgl-arrow-layers/package.json +2 -2
- package/src/deckgl-layers/package.json +4 -4
- package/src/duckdb/dist/components/sql-panel.js +34 -33
- package/src/duckdb/dist/table/duckdb-table-utils.d.ts +8 -9
- package/src/duckdb/dist/table/duckdb-table-utils.js +21 -23
- package/src/duckdb/dist/table/duckdb-table.js +20 -17
- package/src/duckdb/package.json +6 -6
- package/src/duckdb/src/components/sql-panel.tsx +3 -5
- package/src/duckdb/src/table/duckdb-table-utils.ts +19 -18
- package/src/duckdb/src/table/duckdb-table.ts +7 -4
- package/src/effects/package.json +5 -5
- package/src/layers/dist/geojson-layer/geojson-layer.js +5 -2
- package/src/layers/package.json +9 -9
- package/src/layers/src/geojson-layer/geojson-layer.ts +4 -1
- package/src/localization/dist/translations/ca.d.ts +2 -0
- package/src/localization/dist/translations/ca.js +3 -1
- package/src/localization/dist/translations/cn.d.ts +2 -0
- package/src/localization/dist/translations/cn.js +3 -1
- package/src/localization/dist/translations/en.d.ts +2 -0
- package/src/localization/dist/translations/en.js +4 -2
- package/src/localization/dist/translations/es.d.ts +2 -0
- package/src/localization/dist/translations/es.js +3 -1
- package/src/localization/dist/translations/fi.d.ts +2 -0
- package/src/localization/dist/translations/fi.js +3 -1
- package/src/localization/dist/translations/ja.d.ts +2 -0
- package/src/localization/dist/translations/ja.js +3 -1
- package/src/localization/dist/translations/pt.d.ts +2 -0
- package/src/localization/dist/translations/pt.js +3 -1
- package/src/localization/dist/translations/ru.d.ts +2 -0
- package/src/localization/dist/translations/ru.js +3 -1
- package/src/localization/package.json +1 -1
- package/src/localization/src/translations/ca.ts +2 -0
- package/src/localization/src/translations/cn.ts +2 -0
- package/src/localization/src/translations/en.ts +4 -2
- package/src/localization/src/translations/es.ts +2 -0
- package/src/localization/src/translations/fi.ts +2 -0
- package/src/localization/src/translations/ja.ts +2 -0
- package/src/localization/src/translations/pt.ts +2 -0
- package/src/localization/src/translations/ru.ts +2 -0
- package/src/processors/dist/file-handler.js +13 -14
- package/src/processors/package.json +7 -7
- package/src/processors/src/file-handler.ts +0 -1
- package/src/reducers/dist/combined-updaters.js +4 -2
- package/src/reducers/dist/ui-state-updaters.d.ts +0 -10
- package/src/reducers/dist/ui-state-updaters.js +2 -22
- package/src/reducers/dist/ui-state.js +2 -2
- package/src/reducers/dist/vis-state-updaters.d.ts +16 -1
- package/src/reducers/dist/vis-state-updaters.js +79 -45
- package/src/reducers/dist/vis-state.d.ts +4 -0
- package/src/reducers/dist/vis-state.js +2 -2
- package/src/reducers/package.json +16 -16
- package/src/reducers/src/combined-updaters.ts +1 -0
- package/src/reducers/src/ui-state-updaters.ts +0 -24
- package/src/reducers/src/ui-state.ts +1 -3
- package/src/reducers/src/vis-state-updaters.ts +74 -22
- package/src/reducers/src/vis-state.ts +3 -1
- package/src/schemas/dist/vis-state-schema.d.ts +1 -0
- package/src/schemas/dist/vis-state-schema.js +1 -1
- package/src/schemas/package.json +7 -7
- package/src/schemas/src/vis-state-schema.ts +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/f9/fc/86ccce4fa2c3e73042785814bc24476cb7cc9531d16a7c2ecb66bfc154f7b35d7416d852faa175d172da177931675cd2ba82e3b7898e8f4bf499921b00c2 +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/ba/31/d609a3a75657c3640471d5a925a4a64689ea3853d9379bdcd675dba816a2 +2 -0
- package/src/styles/package.json +2 -2
- package/src/styles/umd/keplergl.min.js +1 -1
- package/src/table/package.json +5 -5
- package/src/tasks/package.json +2 -2
- package/src/types/package.json +1 -1
- package/src/utils/package.json +4 -4
- package/umd/keplergl.min.js +1350 -1312
|
@@ -6,12 +6,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.SUPPORTED_DUCKDB_DROP_EXTENSIONS = void 0;
|
|
9
|
+
exports.castDuckDBTypesForKepler = castDuckDBTypesForKepler;
|
|
9
10
|
exports.checkIsSelectQuery = checkIsSelectQuery;
|
|
10
|
-
exports.constructST_asWKBQuery = constructST_asWKBQuery;
|
|
11
11
|
exports.dropTableIfExists = void 0;
|
|
12
12
|
exports.getDuckDBColumnTypes = getDuckDBColumnTypes;
|
|
13
13
|
exports.getDuckDBColumnTypesMap = getDuckDBColumnTypesMap;
|
|
14
|
-
exports.getGeometryColumns = getGeometryColumns;
|
|
15
14
|
exports.isGeoArrowLineString = isGeoArrowLineString;
|
|
16
15
|
exports.isGeoArrowMultiLineString = isGeoArrowMultiLineString;
|
|
17
16
|
exports.isGeoArrowMultiPoint = isGeoArrowMultiPoint;
|
|
@@ -97,30 +96,29 @@ function getDuckDBColumnTypesMap(columns) {
|
|
|
97
96
|
|
|
98
97
|
/**
|
|
99
98
|
* Constructs an SQL query to select all columns from a given table,
|
|
100
|
-
* converting specified columns to Well-Known Binary (WKB) format using ST_AsWKB
|
|
99
|
+
* converting specified columns to Well-Known Binary (WKB) format using ST_AsWKB,
|
|
100
|
+
* and casting BIGINT columns to DOUBLE if specified.
|
|
101
101
|
* @param tableName The name of the table from which to select data.
|
|
102
|
-
* @param
|
|
102
|
+
* @param columns An array of column descriptors, each with a type and name.
|
|
103
|
+
* @param options Optional parameters to control the conversion behavior.
|
|
103
104
|
* @returns The constructed SQL query.
|
|
104
105
|
*/
|
|
105
|
-
function
|
|
106
|
-
var
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
return columns.filter(function (column) {
|
|
120
|
-
return column.type === 'GEOMETRY';
|
|
121
|
-
}).map(function (column) {
|
|
122
|
-
return column.name;
|
|
106
|
+
function castDuckDBTypesForKepler(tableName, columns) {
|
|
107
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
|
|
108
|
+
geometryToWKB: true,
|
|
109
|
+
bigIntToDouble: true
|
|
110
|
+
};
|
|
111
|
+
var modifiedColumns = columns.map(function (column) {
|
|
112
|
+
var name = column.name,
|
|
113
|
+
type = column.type;
|
|
114
|
+
if (type === 'GEOMETRY' && options.geometryToWKB) {
|
|
115
|
+
return "ST_AsWKB(".concat(name, ") as ").concat(name);
|
|
116
|
+
} else if (type === 'BIGINT' && options.bigIntToDouble) {
|
|
117
|
+
return "CAST(".concat(name, " AS DOUBLE) as ").concat(name);
|
|
118
|
+
}
|
|
119
|
+
return name;
|
|
123
120
|
});
|
|
121
|
+
return "SELECT ".concat(modifiedColumns.join(', '), " FROM '").concat(tableName, "'");
|
|
124
122
|
}
|
|
125
123
|
|
|
126
124
|
/**
|
|
@@ -604,4 +602,4 @@ function sanitizeDuckDBTableName(fileName) {
|
|
|
604
602
|
}
|
|
605
603
|
return name || 'default_table';
|
|
606
604
|
}
|
|
607
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl90eXBlIiwiX2R1Y2tkYldhc20iLCJfY29uc3RhbnRzIiwiX3V0aWxzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiU1VQUE9SVEVEX0RVQ0tEQl9EUk9QX0VYVEVOU0lPTlMiLCJleHBvcnRzIiwiZ2V0RHVja0RCQ29sdW1uVHlwZXMiLCJfeCIsIl94MiIsIl9nZXREdWNrREJDb2x1bW5UeXBlcyIsImFwcGx5IiwiYXJndW1lbnRzIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUyIiwiY29ubmVjdGlvbiIsInRhYmxlTmFtZSIsInJlc0Rlc2NyaWJlIiwiZHVja0RiVHlwZXMiLCJudW1Sb3dzIiwiX3Jlc0Rlc2NyaWJlJGdldENoaWxkIiwiX3Jlc0Rlc2NyaWJlJGdldENoaWxkMiIsImNvbHVtbk5hbWUiLCJjb2x1bW5UeXBlIiwid3JhcCIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInByZXYiLCJuZXh0IiwicXVlcnkiLCJjb25jYXQiLCJzZW50IiwiZ2V0Q2hpbGRBdCIsInB1c2giLCJuYW1lIiwidHlwZSIsImFicnVwdCIsInN0b3AiLCJnZXREdWNrREJDb2x1bW5UeXBlc01hcCIsImNvbHVtbnMiLCJyZWR1Y2UiLCJhY2MiLCJ2YWx1ZSIsImNvbnN0cnVjdFNUX2FzV0tCUXVlcnkiLCJjb2x1bW5zVG9Db252ZXJ0VG9XS0IiLCJleGNsdWRlIiwibGVuZ3RoIiwiam9pbiIsImFzV0tCIiwibWFwIiwiY29sdW1uIiwiZ2V0R2VvbWV0cnlDb2x1bW5zIiwiZmlsdGVyIiwic2V0R2VvQXJyb3dXS0JFeHRlbnNpb24iLCJ0YWJsZSIsInNjaGVtYSIsImZpZWxkcyIsImZvckVhY2giLCJmaWVsZCIsImluZm8iLCJmaW5kIiwibWV0YWRhdGEiLCJHRU9BUlJPV19NRVRBREFUQV9LRVkiLCJHRU9BUlJPV19FWFRFTlNJT05TIiwiV0tCIiwicmVzdG9yZUFycm93VGFibGUiLCJhcnJvd1NjaGVtYSIsImNyZWFPcHRzIiwiaW5kZXgiLCJUYWJsZSIsInJlbW92ZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyIsInJlbW92ZWRNZXRhZGF0YSIsImV4dGVuc2lvbiIsInN0YXJ0c1dpdGgiLCJyZXN0b3JlVW5zdXBwb3J0ZWRFeHRlbnNpb25zIiwicmVtb3ZlZEV4dGVuc2lvbnMiLCJpc0dlb0Fycm93UG9pbnQiLCJEYXRhVHlwZSIsImlzRml4ZWRTaXplTGlzdCIsImluY2x1ZGVzIiwibGlzdFNpemUiLCJpc0Zsb2F0IiwiY2hpbGRyZW4iLCJpc0dlb0Fycm93TGluZVN0cmluZyIsImlzTGlzdCIsImlzR2VvQXJyb3dQb2x5Z29uIiwiaXNHZW9BcnJvd011bHRpUG9pbnQiLCJpc0dlb0Fycm93TXVsdGlMaW5lU3RyaW5nIiwiaXNHZW9BcnJvd011bHRpUG9seWdvbiIsImNoZWNrSXNTZWxlY3RRdWVyeSIsIl94MyIsIl94NCIsIl9jaGVja0lzU2VsZWN0UXVlcnkiLCJfY2FsbGVlMyIsInJlc3VsdCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsInQwIiwic3BsaXRTcWxTdGF0ZW1lbnRzIiwiaW5wdXQiLCJxdWVyaWVzIiwiY3VycmVudFF1ZXJ5IiwiaW5TaW5nbGVRdW90ZSIsImluRG91YmxlUXVvdGUiLCJpbkxpbmVDb21tZW50IiwiaW5CbG9ja0NvbW1lbnQiLCJjaGFyIiwidHJpbW1lZCIsInRyaW0iLCJyZW1vdmVTUUxDb21tZW50cyIsInNxbCIsInJlcGxhY2UiLCJkcm9wVGFibGVJZkV4aXN0cyIsIl9yZWYiLCJfY2FsbGVlIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImNvbnNvbGUiLCJlcnJvciIsIl94NSIsIl94NiIsInRhYmxlRnJvbUZpbGUiLCJfeDciLCJfdGFibGVGcm9tRmlsZSIsIl9jYWxsZWU0IiwiZmlsZSIsImZpbGVFeHQiLCJkYiIsImMiLCJzb3VyY2VOYW1lIiwiYXJyYXlCdWZmZXIiLCJ1aW50OEFycmF5IiwiYXJyb3dUYWJsZSIsIm1lc3NhZ2UiLCJfY2FsbGVlNCQiLCJfY29udGV4dDQiLCJFcnJvciIsImV4dCIsImVuZHNXaXRoIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJkYXRhYmFzZSIsImNvbm5lY3QiLCJzYW5pdGl6ZUR1Y2tEQlRhYmxlTmFtZSIsIlVpbnQ4QXJyYXkiLCJ0YWJsZUZyb21JUEMiLCJpbnNlcnRBcnJvd1RhYmxlIiwicmVnaXN0ZXJGaWxlSGFuZGxlIiwiRHVja0RCRGF0YVByb3RvY29sIiwiQlJPV1NFUl9GSUxFUkVBREVSIiwiY2xvc2UiLCJmaWxlTmFtZSIsInRlc3QiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFibGUvZHVja2RiLXRhYmxlLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbi8vIGxvYWRlcnMuZ2xcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCAoYykgdmlzLmdsIGNvbnRyaWJ1dG9yc1xuXG4vLyBDb3BpZWQgZnJvbSBsb2FkZXJzLmdsL2dlb2Fycm93XG5cbi8vIFRPRE86IFJlbW92ZSBpc0dlb0Fycm93KiBvbmNlIEtlcGxlci5nbCBpcyB1cGdyYWRlZCB0byBsb2FkZXJzLmdsIDQuNCtcblxuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcbmltcG9ydCB7RGF0YVR5cGV9IGZyb20gJ2FwYWNoZS1hcnJvdy90eXBlJztcbmltcG9ydCB7RHVja0RCRGF0YVByb3RvY29sfSBmcm9tICdAZHVja2RiL2R1Y2tkYi13YXNtJztcblxuaW1wb3J0IHtHRU9BUlJPV19FWFRFTlNJT05TLCBHRU9BUlJPV19NRVRBREFUQV9LRVl9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7UHJvdG9EYXRhc2V0RmllbGR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtEYXRhYmFzZUNvbm5lY3Rpb24sIGdldEFwcGxpY2F0aW9uQ29uZmlnfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9EVUNLREJfRFJPUF9FWFRFTlNJT05TID0gWydhcnJvdycsICdjc3YnLCAnZ2VvanNvbicsICdqc29uJywgJ3BhcnF1ZXQnXTtcblxuZXhwb3J0IHR5cGUgRHVja0RCQ29sdW1uRGVzYyA9IHtuYW1lOiBzdHJpbmc7IHR5cGU6IHN0cmluZ307XG5cbi8qKlxuICogUXVlcmllcyBhIER1Y2tEQiB0YWJsZSBmb3IgdGhlIHNjaGVtYSBkZXNjcmlwdGlvbi5cbiAqIEBwYXJhbSBjb25uZWN0aW9uIEFuIGFjdGl2ZSBEdWNrREIgY29ubmVjdGlvbi5cbiAqIEBwYXJhbSB0YWJsZU5hbWUgQSBuYW1lIG9mIER1Y2tEQiB0YWJsZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGNvbHVtbiBuYW1lcyBhbmQgRHVja0RCIHR5cGVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RHVja0RCQ29sdW1uVHlwZXMoXG4gIGNvbm5lY3Rpb246IERhdGFiYXNlQ29ubmVjdGlvbixcbiAgdGFibGVOYW1lOiBzdHJpbmdcbik6IFByb21pc2U8RHVja0RCQ29sdW1uRGVzY1tdPiB7XG4gIGNvbnN0IHJlc0Rlc2NyaWJlID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShgREVTQ1JJQkUgXCIke3RhYmxlTmFtZX1cImApO1xuXG4gIGNvbnN0IGR1Y2tEYlR5cGVzOiBEdWNrREJDb2x1bW5EZXNjW10gPSBbXTtcbiAgY29uc3QgbnVtUm93cyA9IHJlc0Rlc2NyaWJlLm51bVJvd3M7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtUm93czsgKytpKSB7XG4gICAgY29uc3QgY29sdW1uTmFtZSA9IHJlc0Rlc2NyaWJlLmdldENoaWxkQXQoMCk/LmdldChpKTtcbiAgICBjb25zdCBjb2x1bW5UeXBlID0gcmVzRGVzY3JpYmUuZ2V0Q2hpbGRBdCgxKT8uZ2V0KGkpO1xuXG4gICAgZHVja0RiVHlwZXMucHVzaCh7XG4gICAgICBuYW1lOiBjb2x1bW5OYW1lLFxuICAgICAgdHlwZTogY29sdW1uVHlwZVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGR1Y2tEYlR5cGVzO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIG1hcHBpbmcgb2YgY29sdW1uIG5hbWVzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgRHVja0RCIGRhdGEgdHlwZXMuXG4gKiBAcGFyYW0gY29sdW1ucyBBbiBhcnJheSBvZiBjb2x1bW4gZGVzY3JpcHRpb25zIGZyb20gRHVja0RCLiBDaGVjayBnZXREdWNrREJDb2x1bW5UeXBlcy5cbiAqIEByZXR1cm5zIEEgcmVjb3JkIHdoZXJlIGtleXMgYXJlIGNvbHVtbiBuYW1lcyBhbmQgdmFsdWVzIGFyZSB0aGVpciBkYXRhIHR5cGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RHVja0RCQ29sdW1uVHlwZXNNYXAoY29sdW1uczogRHVja0RCQ29sdW1uRGVzY1tdKSB7XG4gIHJldHVybiBjb2x1bW5zLnJlZHVjZSgoYWNjLCB2YWx1ZSkgPT4ge1xuICAgIGFjY1t2YWx1ZS5uYW1lXSA9IHZhbHVlLnR5cGU7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPik7XG59XG5cbi8qKlxuICogQ29uc3RydWN0cyBhbiBTUUwgcXVlcnkgdG8gc2VsZWN0IGFsbCBjb2x1bW5zIGZyb20gYSBnaXZlbiB0YWJsZSxcbiAqIGNvbnZlcnRpbmcgc3BlY2lmaWVkIGNvbHVtbnMgdG8gV2VsbC1Lbm93biBCaW5hcnkgKFdLQikgZm9ybWF0IHVzaW5nIFNUX0FzV0tCLlxuICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgZnJvbSB3aGljaCB0byBzZWxlY3QgZGF0YS5cbiAqIEBwYXJhbSBjb2x1bW5zVG9Db252ZXJ0VG9XS0IgQW4gYXJyYXkgb2YgY29sdW1uIG5hbWVzIHRoYXQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBXS0IgZm9ybWF0LlxuICogQHJldHVybnMgVGhlIGNvbnN0cnVjdGVkIFNRTCBxdWVyeS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdFNUX2FzV0tCUXVlcnkodGFibGVOYW1lOiBzdHJpbmcsIGNvbHVtbnNUb0NvbnZlcnRUb1dLQjogc3RyaW5nW10pOiBzdHJpbmcge1xuICBjb25zdCBleGNsdWRlID1cbiAgICBjb2x1bW5zVG9Db252ZXJ0VG9XS0IubGVuZ3RoID4gMCA/IGBFWENMVURFICR7Y29sdW1uc1RvQ29udmVydFRvV0tCLmpvaW4oJywgJyl9YCA6ICcnO1xuICBjb25zdCBhc1dLQiA9XG4gICAgY29sdW1uc1RvQ29udmVydFRvV0tCLmxlbmd0aCA+IDBcbiAgICAgID8gYCwgJHtjb2x1bW5zVG9Db252ZXJ0VG9XS0IubWFwKGNvbHVtbiA9PiBgU1RfQXNXS0IoJHtjb2x1bW59KSBhcyAke2NvbHVtbn1gKS5qb2luKCcsICcpfWBcbiAgICAgIDogJyc7XG4gIHJldHVybiBgU0VMRUNUICogJHtleGNsdWRlfSAke2FzV0tCfSBGUk9NICcke3RhYmxlTmFtZX0nYDtcbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgbmFtZXMgb2YgY29sdW1ucyB0aGF0IGhhdmUgYSBHRU9NRVRSWSB0eXBlLlxuICogQHBhcmFtIGNvbHVtbnMgQW4gYXJyYXkgb2YgY29sdW1uIGRlc2NyaXB0b3JzIGZyb20gYSBEdWNrREIgdGFibGUuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBjb2x1bW4gbmFtZXMgdGhhdCBhcmUgb2YgdHlwZSBHRU9NRVRSWS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdlb21ldHJ5Q29sdW1ucyhjb2x1bW5zOiBEdWNrREJDb2x1bW5EZXNjW10pOiBzdHJpbmdbXSB7XG4gIHJldHVybiBjb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnR5cGUgPT09ICdHRU9NRVRSWScpLm1hcChjb2x1bW4gPT4gY29sdW1uLm5hbWUpO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIEdlb0Fycm93IFdLQiBleHRlbnNpb24gbWV0YWRhdGEgZm9yIGNvbHVtbnMgb2YgdHlwZSBHRU9NRVRSWSBpbiBhbiBBcnJvdyB0YWJsZS5cbiAqIEBwYXJhbSB0YWJsZSBUaGUgQXBhY2hlIEFycm93IHRhYmxlIHdob3NlIHNjaGVtYSBmaWVsZHMgd2lsbCBiZSBtb2RpZmllZC5cbiAqIEBwYXJhbSBjb2x1bW5zIEFuIGFycmF5IG9mIGNvbHVtbiBkZXNjcmlwdG9ycyBmcm9tIGEgRHVja0RCIHRhYmxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0R2VvQXJyb3dXS0JFeHRlbnNpb24odGFibGU6IGFycm93LlRhYmxlLCBjb2x1bW5zOiBEdWNrREJDb2x1bW5EZXNjW10pIHtcbiAgdGFibGUuc2NoZW1hLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICBjb25zdCBpbmZvID0gY29sdW1ucy5maW5kKHQgPT4gdC5uYW1lID09PSBmaWVsZC5uYW1lKTtcbiAgICBpZiAoaW5mbz8udHlwZSA9PT0gJ0dFT01FVFJZJykge1xuICAgICAgZmllbGQubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgR0VPQVJST1dfRVhURU5TSU9OUy5XS0IpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJvdyB0YWJsZSBmcm9tIGFuIGFycmF5IG9mIGFycm93IHZlY3RvcnMgYW5kIGZpZWxkcy5cbiAqIEBwYXJhbSBjb2x1bW5zIEFuIGFycmF5IG9mIGFycm93IHZlY3RvcnMuXG4gKiBAcGFyYW0gZmllbGRzIEFuIGFycmF5IG9mIGZpZWxkcyBwZXIgYXJyb3cgdmVjdG9yLlxuICogQHBhcmFtIGFycm93U2NoZW1hIE9wdGlvbmFsIGFycm93IHRhYmxlIHNjaGVtYSB3aGVuIGF2YWlsYWJsZS5cbiAqIEByZXR1cm5zIEFuIGFycm93IHRhYmxlLlxuICovXG5leHBvcnQgY29uc3QgcmVzdG9yZUFycm93VGFibGUgPSAoXG4gIGNvbHVtbnM6IGFycm93LlZlY3RvcltdLFxuICBmaWVsZHM6IFByb3RvRGF0YXNldEZpZWxkW10sXG4gIGFycm93U2NoZW1hPzogYXJyb3cuU2NoZW1hXG4pID0+IHtcbiAgY29uc3QgY3JlYU9wdHMgPSB7fTtcbiAgZmllbGRzLm1hcCgoZmllbGQsIGluZGV4KSA9PiB7XG4gICAgY3JlYU9wdHNbZmllbGQubmFtZV0gPSBjb2x1bW5zW2luZGV4XTtcbiAgfSk7XG5cbiAgcmV0dXJuIGFycm93U2NoZW1hID8gbmV3IGFycm93LlRhYmxlKGFycm93U2NoZW1hLCBjcmVhT3B0cykgOiBuZXcgYXJyb3cuVGFibGUoY3JlYU9wdHMpO1xufTtcblxuLyoqXG4gKiBEdWNrRGIgdGhyb3dzIHdoZW4gZ2VvYXJyb3cgZXh0ZW5zaW9ucyBhcmUgcHJlc2VudCBpbiBtZXRhZGF0YS5cbiAqIEBwYXJhbSB0YWJsZSBBbiBhcnJvdyB0YWJsZSB0byBjbGVhciBmcm9tIGV4dGVuc2lvbnMuXG4gKiBAcmV0dXJucyBBIG1hcCBvZiByZW1vdmVkIHBlciBmaWVsZCBnZW9hcnJvdyBleHRlbnNpb25zLlxuICovXG5leHBvcnQgY29uc3QgcmVtb3ZlVW5zdXBwb3J0ZWRFeHRlbnNpb25zID0gKHRhYmxlOiBhcnJvdy5UYWJsZSk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPT4ge1xuICBjb25zdCByZW1vdmVkTWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgdGFibGUuc2NoZW1hLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICBjb25zdCBleHRlbnNpb24gPSBmaWVsZC5tZXRhZGF0YS5nZXQoR0VPQVJST1dfTUVUQURBVEFfS0VZKTtcbiAgICBpZiAoZXh0ZW5zaW9uPy5zdGFydHNXaXRoKCdnZW9hcnJvdycpKSB7XG4gICAgICByZW1vdmVkTWV0YWRhdGFbZmllbGQubmFtZV0gPSBleHRlbnNpb247XG4gICAgICBmaWVsZC5tZXRhZGF0YS5kZWxldGUoR0VPQVJST1dfTUVUQURBVEFfS0VZKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVtb3ZlZE1ldGFkYXRhO1xufTtcblxuLyoqXG4gKiBSZXN0b3JlIHJlbW92ZWQgbWV0YWRhdGEgZXh0ZW5zaW9ucyBhZnRlciBhIGNhbGwgdG8gcmVtb3ZlVW5zdXBwb3J0ZWRFeHRlbnNpb25zLlxuICogQHBhcmFtIHRhYmxlIEFuIGFycm93IHRhYmxlIHRvIHJlc3RvcmUgZ2VvYXJyb3cgZXh0ZW5zaW9ucy5cbiAqIEBwYXJhbSByZW1vdmVkRXh0ZW5zaW9ucyBBIG1hcCBvZiBwZXIgZmllbGQgZ2VvYXJyb3cgZXh0ZW5zaW9ucyB0byByZXN0b3JlLlxuICovXG5leHBvcnQgY29uc3QgcmVzdG9yZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyA9IChcbiAgdGFibGU6IGFycm93LlRhYmxlLFxuICByZW1vdmVkRXh0ZW5zaW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuKSA9PiB7XG4gIHRhYmxlLnNjaGVtYS5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gcmVtb3ZlZEV4dGVuc2lvbnNbZmllbGQubmFtZV07XG4gICAgaWYgKGV4dGVuc2lvbikge1xuICAgICAgZmllbGQubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgZXh0ZW5zaW9uKTtcbiAgICB9XG4gIH0pO1xufTtcblxuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBBcGFjaGUgQXJyb3cgSlMgdHlwZSBpcyBhIFBvaW50IGRhdGEgdHlwZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzR2VvQXJyb3dQb2ludCh0eXBlOiBEYXRhVHlwZSkge1xuICBpZiAoRGF0YVR5cGUuaXNGaXhlZFNpemVMaXN0KHR5cGUpKSB7XG4gICAgLy8gQ2hlY2sgbGlzdCBzaXplXG4gICAgaWYgKCFbMiwgMywgNF0uaW5jbHVkZXModHlwZS5saXN0U2l6ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBjaGlsZCBvZiBGaXhlZFNpemVMaXN0IGlzIGZsb2F0aW5nIHR5cGVcbiAgICBpZiAoIURhdGFUeXBlLmlzRmxvYXQodHlwZS5jaGlsZHJlblswXSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBBcGFjaGUgQXJyb3cgSlMgdHlwZSBpcyBhIFBvaW50IGRhdGEgdHlwZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzR2VvQXJyb3dMaW5lU3RyaW5nKHR5cGU6IERhdGFUeXBlKSB7XG4gIC8vIENoZWNrIHRoZSBvdXRlciB0eXBlIGlzIGEgTGlzdFxuICBpZiAoIURhdGFUeXBlLmlzTGlzdCh0eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIHRoZSBjaGlsZCBpcyBhIHBvaW50IHR5cGVcbiAgaWYgKCFpc0dlb0Fycm93UG9pbnQodHlwZS5jaGlsZHJlblswXS50eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIEFwYWNoZSBBcnJvdyBKUyB0eXBlIGlzIGEgUG9seWdvbiBkYXRhIHR5cGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0dlb0Fycm93UG9seWdvbih0eXBlOiBEYXRhVHlwZSkge1xuICAvLyBDaGVjayB0aGUgb3V0ZXIgdmVjdG9yIGlzIGEgTGlzdFxuICBpZiAoIURhdGFUeXBlLmlzTGlzdCh0eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIHRoZSBjaGlsZCBpcyBhIGxpbmVzdHJpbmcgdmVjdG9yXG4gIGlmICghaXNHZW9BcnJvd0xpbmVTdHJpbmcodHlwZS5jaGlsZHJlblswXS50eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIEFwYWNoZSBBcnJvdyBKUyB0eXBlIGlzIGEgUG9seWdvbiBkYXRhIHR5cGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0dlb0Fycm93TXVsdGlQb2ludCh0eXBlOiBEYXRhVHlwZSkge1xuICAvLyBDaGVjayB0aGUgb3V0ZXIgdmVjdG9yIGlzIGEgTGlzdFxuICBpZiAoIURhdGFUeXBlLmlzTGlzdCh0eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIHRoZSBjaGlsZCBpcyBhIHBvaW50IHZlY3RvclxuICBpZiAoIWlzR2VvQXJyb3dQb2ludCh0eXBlLmNoaWxkcmVuWzBdLnR5cGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gQXBhY2hlIEFycm93IEpTIHR5cGUgaXMgYSBQb2x5Z29uIGRhdGEgdHlwZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzR2VvQXJyb3dNdWx0aUxpbmVTdHJpbmcodHlwZTogRGF0YVR5cGUpIHtcbiAgLy8gQ2hlY2sgdGhlIG91dGVyIHZlY3RvciBpcyBhIExpc3RcbiAgaWYgKCFEYXRhVHlwZS5pc0xpc3QodHlwZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBDaGVjayB0aGUgY2hpbGQgaXMgYSBsaW5lc3RyaW5nIHZlY3RvclxuICBpZiAoIWlzR2VvQXJyb3dMaW5lU3RyaW5nKHR5cGUuY2hpbGRyZW5bMF0udHlwZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBBcGFjaGUgQXJyb3cgSlMgdHlwZSBpcyBhIFBvbHlnb24gZGF0YSB0eXBlICovXG5leHBvcnQgZnVuY3Rpb24gaXNHZW9BcnJvd011bHRpUG9seWdvbih0eXBlOiBEYXRhVHlwZSkge1xuICAvLyBDaGVjayB0aGUgb3V0ZXIgdmVjdG9yIGlzIGEgTGlzdFxuICBpZiAoIURhdGFUeXBlLmlzTGlzdCh0eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIHRoZSBjaGlsZCBpcyBhIHBvbHlnb24gdmVjdG9yXG4gIGlmICghaXNHZW9BcnJvd1BvbHlnb24odHlwZS5jaGlsZHJlblswXS50eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gU1FMIHF1ZXJ5IGlzIGEgU0VMRUNUIHF1ZXJ5IGJ5IHVzaW5nIHRoZSBFWFBMQUlOIGNvbW1hbmQuXG4gKiBAcGFyYW0gY29ubmVjdGlvbiBUaGUgRHVja0RCIGNvbm5lY3Rpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcXVlcnkgVGhlIFNRTCBxdWVyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFJlc29sdmVzIHRvIGB0cnVlYCBpZiB0aGUgcXVlcnkgaXMgYSBTRUxFQ1Qgc3RhdGVtZW50LCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrSXNTZWxlY3RRdWVyeShcbiAgY29ubmVjdGlvbjogRGF0YWJhc2VDb25uZWN0aW9uLFxuICBxdWVyeTogc3RyaW5nXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KGBFWFBMQUlOICgke3F1ZXJ5fSlgKTtcbiAgICByZXR1cm4gcmVzdWx0Lm51bVJvd3MgPiAwO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFNwbGl0IGEgc3RyaW5nIHdpdGggcG90ZW50aWFsbHkgbXVsdGlwbGUgU1FMIHF1ZXJpZXMgKHNlcGFyYXRlZCBhcyB1c3VhbCBieSAnOycpIGludG8gYW4gYXJyYXkgb2YgcXVlcmllcy5cbiAqIFRoaXMgaW1wbGVtZW50YXRpb246XG4gKiAgLSBIYW5kbGVzIHNpbmdsZSBhbmQgZG91YmxlIHF1b3RlZCBzdHJpbmdzIHdpdGggcHJvcGVyIGVzY2FwaW5nXG4gKiAgLSBJZ25vcmVzIHNlbWljb2xvbnMgaW4gbGluZSBjb21tZW50cyAoLS0pIGFuZCBibG9jayBjb21tZW50cyAoc2xhc2ggYXN0ZXJpc2spXG4gKiAgLSBUcmltcyB3aGl0ZXNwYWNlIGZyb20gcXVlcmllc1xuICogIC0gSGFuZGxlcyBTUUwtc3R5bGUgZXNjYXBlZCBxdW90ZXMgKCcnIGluc2lkZSBzdHJpbmdzKVxuICogIC0gUmV0dXJucyBvbmx5IG5vbi1lbXB0eSBxdWVyaWVzXG4gKiBAcGFyYW0gaW5wdXQgQSBzdHJpbmcgd2l0aCBwb3RlbnRpYWxseSBtdWx0aXBsZSBTUUwgcXVlcmllcy5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHF1ZXJpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdFNxbFN0YXRlbWVudHMoaW5wdXQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcXVlcmllczogc3RyaW5nW10gPSBbXTtcbiAgbGV0IGN1cnJlbnRRdWVyeSA9ICcnO1xuICBsZXQgaW5TaW5nbGVRdW90ZSA9IGZhbHNlO1xuICBsZXQgaW5Eb3VibGVRdW90ZSA9IGZhbHNlO1xuICBsZXQgaW5MaW5lQ29tbWVudCA9IGZhbHNlO1xuICBsZXQgaW5CbG9ja0NvbW1lbnQgPSBmYWxzZTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY2hhciA9IGlucHV0W2ldO1xuXG4gICAgaWYgKGluTGluZUNvbW1lbnQpIHtcbiAgICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICAgICAgaWYgKGNoYXIgPT09ICdcXG4nKSB7XG4gICAgICAgIGluTGluZUNvbW1lbnQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChpbkJsb2NrQ29tbWVudCkge1xuICAgICAgY3VycmVudFF1ZXJ5ICs9IGNoYXI7XG4gICAgICBpZiAoY2hhciA9PT0gJyonICYmIGlucHV0W2kgKyAxXSA9PT0gJy8nKSB7XG4gICAgICAgIGluQmxvY2tDb21tZW50ID0gZmFsc2U7XG4gICAgICAgIGN1cnJlbnRRdWVyeSArPSBpbnB1dFsrK2ldOyAvLyBDb25zdW1lICcvJ1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGluU2luZ2xlUXVvdGUpIHtcbiAgICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICAgICAgaWYgKGNoYXIgPT09IFwiJ1wiKSB7XG4gICAgICAgIC8vIEhhbmRsZSBlc2NhcGVkIHNpbmdsZSBxdW90ZXMgaW4gU1FMXG4gICAgICAgIGlmIChpICsgMSA8IGlucHV0Lmxlbmd0aCAmJiBpbnB1dFtpICsgMV0gPT09IFwiJ1wiKSB7XG4gICAgICAgICAgY3VycmVudFF1ZXJ5ICs9IGlucHV0WysraV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5TaW5nbGVRdW90ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoaW5Eb3VibGVRdW90ZSkge1xuICAgICAgY3VycmVudFF1ZXJ5ICs9IGNoYXI7XG4gICAgICBpZiAoY2hhciA9PT0gJ1wiJykge1xuICAgICAgICAvLyBIYW5kbGUgZXNjYXBlZCBkb3VibGUgcXVvdGVzXG4gICAgICAgIGlmIChpICsgMSA8IGlucHV0Lmxlbmd0aCAmJiBpbnB1dFtpICsgMV0gPT09ICdcIicpIHtcbiAgICAgICAgICBjdXJyZW50UXVlcnkgKz0gaW5wdXRbKytpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbkRvdWJsZVF1b3RlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBjb21tZW50IHN0YXJ0c1xuICAgIGlmIChjaGFyID09PSAnLScgJiYgaW5wdXRbaSArIDFdID09PSAnLScpIHtcbiAgICAgIGluTGluZUNvbW1lbnQgPSB0cnVlO1xuICAgICAgY3VycmVudFF1ZXJ5ICs9IGNoYXIgKyBpbnB1dFsrK2ldO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGNoYXIgPT09ICcvJyAmJiBpbnB1dFtpICsgMV0gPT09ICcqJykge1xuICAgICAgaW5CbG9ja0NvbW1lbnQgPSB0cnVlO1xuICAgICAgY3VycmVudFF1ZXJ5ICs9IGNoYXIgKyBpbnB1dFsrK2ldO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIHF1b3RlIHN0YXJ0c1xuICAgIGlmIChjaGFyID09PSBcIidcIikge1xuICAgICAgaW5TaW5nbGVRdW90ZSA9IHRydWU7XG4gICAgICBjdXJyZW50UXVlcnkgKz0gY2hhcjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjaGFyID09PSAnXCInKSB7XG4gICAgICBpbkRvdWJsZVF1b3RlID0gdHJ1ZTtcbiAgICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHF1ZXJ5IHNlcGFyYXRvclxuICAgIGlmIChjaGFyID09PSAnOycpIHtcbiAgICAgIGNvbnN0IHRyaW1tZWQgPSBjdXJyZW50UXVlcnkudHJpbSgpO1xuICAgICAgaWYgKHRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgICBxdWVyaWVzLnB1c2godHJpbW1lZCk7XG4gICAgICB9XG4gICAgICBjdXJyZW50UXVlcnkgPSAnJztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICB9XG5cbiAgLy8gQWRkIHRoZSBmaW5hbCBxdWVyeVxuICBjb25zdCB0cmltbWVkID0gY3VycmVudFF1ZXJ5LnRyaW0oKTtcbiAgaWYgKHRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgIHF1ZXJpZXMucHVzaCh0cmltbWVkKTtcbiAgfVxuXG4gIHJldHVybiBxdWVyaWVzO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgU1FMIGNvbW1lbnRzIGZyb20gYSBnaXZlbiBTUUwgc3RyaW5nLlxuICogQHBhcmFtIHNxbCBUaGUgU1FMIHF1ZXJ5IHN0cmluZyBmcm9tIHdoaWNoIGNvbW1lbnRzIHNob3VsZCBiZSByZW1vdmVkLlxuICogQHJldHVybnMgVGhlIGNsZWFuZWQgU1FMIHN0cmluZyB3aXRob3V0IGNvbW1lbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlU1FMQ29tbWVudHMoc3FsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBSZW1vdmUgbXVsdGktbGluZSBjb21tZW50cyAoLyogLi4uICovKVxuICBzcWwgPSBzcWwucmVwbGFjZSgvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nLCAnJyk7XG4gIC8vIFJlbW92ZSBzaW5nbGUtbGluZSBjb21tZW50cyAoLS0gLi4uKVxuICBzcWwgPSBzcWwucmVwbGFjZSgvLS0uKiQvZ20sICcnKTtcbiAgcmV0dXJuIHNxbC50cmltKCk7XG59XG5cbi8qKlxuICogRHJvcHMgYSB0YWJsZSBpZiBpdCBleGlzdHMgaW4gdGhlIER1Y2tEQiBkYXRhYmFzZS5cbiAqIEBwYXJhbSBjb25uZWN0aW9uIFRoZSBEdWNrREIgY29ubmVjdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSB0YWJsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGRyb3AuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGUuXG4gKiBAdGhyb3dzIExvZ3MgYW4gZXJyb3IgaWYgdGhlIHRhYmxlIGRyb3Agb3BlcmF0aW9uIGZhaWxzLlxuICovXG5leHBvcnQgY29uc3QgZHJvcFRhYmxlSWZFeGlzdHMgPSBhc3luYyAoY29ubmVjdGlvbjogRGF0YWJhc2VDb25uZWN0aW9uLCB0YWJsZU5hbWU6IHN0cmluZykgPT4ge1xuICB0cnkge1xuICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoYERST1AgVEFCTEUgSUYgRVhJU1RTIFwiJHt0YWJsZU5hbWV9XCI7YCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRHJvcHBpbmcgdGFibGUgZmFpbGVkJywgdGFibGVOYW1lLCBlcnJvcik7XG4gIH1cbn07XG5cbi8qKlxuICogSW1wb3J0cyBhIGZpbGUgaW50byBEdWNrREIgYXMgYSB0YWJsZSwgc3VwcG9ydGluZyBtdWx0aXBsZSBmb3JtYXRzIGZyb20gU1VQUE9SVEVEX0RVQ0tEQl9EUk9QX0VYVEVOU0lPTlMuXG4gKiBAcGFyYW0gZmlsZSBUaGUgZmlsZSB0byBiZSBpbXBvcnRlZC5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZpbGUgaGFzIGJlZW4gcHJvY2Vzc2VkIGludG8gYSBEdWNrREIgdGFibGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0YWJsZUZyb21GaWxlKGZpbGU6IEZpbGUgfCBudWxsKTogUHJvbWlzZTxudWxsIHwgRXJyb3I+IHtcbiAgaWYgKCFmaWxlKSByZXR1cm4gbmV3IEVycm9yKCdGaWxlIERyYWcgJiBEcm9wOiBObyBmaWxlJyk7XG5cbiAgY29uc3QgZmlsZUV4dCA9IFNVUFBPUlRFRF9EVUNLREJfRFJPUF9FWFRFTlNJT05TLmZpbmQoZXh0ID0+IGZpbGUubmFtZS5lbmRzV2l0aChleHQpKTtcbiAgaWYgKCFmaWxlRXh0KSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcihcIkZpbGUgRHJhZyAmIERyb3A6IEZpbGUgZXh0ZW5zaW9uIGlzbid0IHN1cHBvcnRlZFwiKTtcbiAgfVxuXG4gIGNvbnN0IGRiID0gYXdhaXQgZ2V0QXBwbGljYXRpb25Db25maWcoKS5kYXRhYmFzZTtcbiAgaWYgKCFkYikge1xuICAgIHJldHVybiBuZXcgRXJyb3IoJ1RoZSBkYXRhYmFzZSBpcyBub3QgY29uZmlndXJlZCBwcm9wZXJseS4nKTtcbiAgfVxuICBjb25zdCBjID0gYXdhaXQgZGIuY29ubmVjdCgpO1xuXG4gIGxldCBlcnJvcjogRXJyb3IgfCBudWxsID0gbnVsbDtcblxuICB0cnkge1xuICAgIGNvbnN0IHRhYmxlTmFtZSA9IHNhbml0aXplRHVja0RCVGFibGVOYW1lKGZpbGUubmFtZSk7XG4gICAgY29uc3Qgc291cmNlTmFtZSA9ICd0ZW1wX2ZpbGVfaGFuZGxlJztcblxuICAgIGMucXVlcnkoYGluc3RhbGwgc3BhdGlhbDtcbiAgICAgIGxvYWQgc3BhdGlhbDtgKTtcblxuICAgIGlmIChmaWxlRXh0ID09PSAnYXJyb3cnKSB7XG4gICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IGF3YWl0IGZpbGUuYXJyYXlCdWZmZXIoKTtcbiAgICAgIGNvbnN0IHVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcik7XG4gICAgICBjb25zdCBhcnJvd1RhYmxlID0gYXJyb3cudGFibGVGcm9tSVBDKHVpbnQ4QXJyYXkpO1xuXG4gICAgICBhd2FpdCBjLmluc2VydEFycm93VGFibGUoYXJyb3dUYWJsZSwge25hbWU6IHRhYmxlTmFtZX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBkYi5yZWdpc3RlckZpbGVIYW5kbGUoc291cmNlTmFtZSwgZmlsZSwgRHVja0RCRGF0YVByb3RvY29sLkJST1dTRVJfRklMRVJFQURFUiwgdHJ1ZSk7XG5cbiAgICAgIGlmIChmaWxlRXh0ID09PSAnY3N2Jykge1xuICAgICAgICBhd2FpdCBjLnF1ZXJ5KGBcbiAgICAgICAgICAgIENSRUFURSBUQUJMRSAnJHt0YWJsZU5hbWV9JyBBU1xuICAgICAgICAgICAgU0VMRUNUICpcbiAgICAgICAgICAgIEZST00gcmVhZF9jc3YoJyR7c291cmNlTmFtZX0nLCBoZWFkZXIgPSB0cnVlLCBhdXRvX2RldGVjdCA9IHRydWUsIHNhbXBsZV9zaXplID0gLTEpO1xuICAgICAgICAgIGApO1xuICAgICAgfSBlbHNlIGlmIChmaWxlRXh0ID09PSAnanNvbicpIHtcbiAgICAgICAgYXdhaXQgYy5xdWVyeShgXG4gICAgICAgICAgICBDUkVBVEUgVEFCTEUgJyR7dGFibGVOYW1lfScgQVNcbiAgICAgICAgICAgIFNFTEVDVCAqXG4gICAgICAgICAgICBGUk9NIHJlYWRfanNvbl9hdXRvKCcke3NvdXJjZU5hbWV9Jyk7XG4gICAgICAgICAgYCk7XG4gICAgICB9IGVsc2UgaWYgKGZpbGVFeHQgPT09ICdnZW9qc29uJykge1xuICAgICAgICBhd2FpdCBjLnF1ZXJ5KGBcbiAgICAgICAgICAgIENSRUFURSBUQUJMRSAnJHt0YWJsZU5hbWV9JyBBU1xuICAgICAgICAgICAgU0VMRUNUICpcbiAgICAgICAgICAgIEZST00gU1RfUkVBRCgnJHtzb3VyY2VOYW1lfScsIGtlZXBfd2tiID0gVFJVRSk7XG4gICAgICAgICAgYCk7XG4gICAgICB9IGVsc2UgaWYgKGZpbGVFeHQgPT09ICdwYXJxdWV0Jykge1xuICAgICAgICBhd2FpdCBjLnF1ZXJ5KGBcbiAgICAgICAgICAgIENSRUFURSBUQUJMRSAnJHt0YWJsZU5hbWV9JyBBU1xuICAgICAgICAgICAgU0VMRUNUICpcbiAgICAgICAgICAgIEZST00gcmVhZF9wYXJxdWV0KCcke3NvdXJjZU5hbWV9JylcbiAgICAgICAgICBgKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yRGF0YSkge1xuICAgIGlmIChlcnJvckRhdGEgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGVycm9yRGF0YS5tZXNzYWdlIHx8ICcnO1xuICAgICAgLy8gb3V0cHV0IG1vcmUgcmVhZGFibGUgZXJyb3JzIGZvciBrbm93biBpc3N1ZXNcbiAgICAgIGlmIChtZXNzYWdlLmluY2x1ZGVzKCdBcnJvdyBUeXBlIHdpdGggZXh0ZW5zaW9uIG5hbWU6IGdlb2Fycm93JykpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1RoZSBHZW9BcnJvdyBleHRlbnNpb25zIGFyZSBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbm5lY3RlZCBEdWNrREIgdmVyc2lvbi4nXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoXCJHZW9wYXJxdWV0IGNvbHVtbiAnZ2VvbWV0cnknIGRvZXMgbm90IGhhdmUgZ2VvbWV0cnkgdHlwZXNcIikpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgYEludmFsaWQgSW5wdXQgRXJyb3I6IEdlb3BhcnF1ZXQgY29sdW1uICdnZW9tZXRyeScgZG9lcyBub3QgaGF2ZSBnZW9tZXRyeSB0eXBlcy5cblBvc3NpYmxlIHJlYXNvbnM6XG4gIC0gT2xkIC5wYXJxdWV0IGZpbGVzIHRoYXQgZG9uJ3QgbWF0Y2ggdGhlIFBhcnF1ZXQgZm9ybWF0IHNwZWNpZmljYXRpb24uXG4gIC0gVW5zdXBwb3J0ZWQgY29tcHJlc3Npb24uYFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghZXJyb3IpIHtcbiAgICAgIGVycm9yID0gZXJyb3JEYXRhIGFzIEVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGF3YWl0IGMuY2xvc2UoKTtcblxuICByZXR1cm4gZXJyb3I7XG59XG5cbi8qKlxuICogU2FuaXRpemVzIGEgZmlsZSBuYW1lIHRvIGJlIGEgdmFsaWQgRHVja0RCIHRhYmxlIG5hbWUuXG4gKiBAcGFyYW0gZmlsZU5hbWUgVGhlIGlucHV0IGZpbGUgbmFtZSB0byBiZSBzYW5pdGl6ZWQuXG4gKiBAcmV0dXJucyBBIHZhbGlkIER1Y2tEQiB0YWJsZSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2FuaXRpemVEdWNrREJUYWJsZU5hbWUoZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFJlcGxhY2UgaW52YWxpZCBjaGFyYWN0ZXJzIHdpdGggdW5kZXJzY29yZXNcbiAgbGV0IG5hbWUgPSBmaWxlTmFtZS5yZXBsYWNlKC9bXmEtekEtWjAtOV9dL2csICdfJyk7XG4gIC8vIEVuc3VyZSBpdCBkb2Vzbid0IHN0YXJ0IHdpdGggYSBkaWdpdFxuICBpZiAoL15cXGQvLnRlc3QobmFtZSkpIHtcbiAgICBuYW1lID0gYHRfJHtuYW1lfWA7XG4gIH1cbiAgcmV0dXJuIG5hbWUgfHwgJ2RlZmF1bHRfdGFibGUnO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV0EsSUFBQUEsS0FBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsV0FBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsVUFBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBQTBFLFNBQUFLLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBUCx3QkFBQU8sQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFB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QTNHLElBQUE7VUFBQSxPQUN4Qm9HLENBQUMsQ0FBQ25HLEtBQUssZ0NBQUFDLE1BQUEsQ0FDT2QsU0FBUyxpRUFBQWMsTUFBQSxDQUVKbUcsVUFBVSxtQkFDaEMsQ0FBQztRQUFBO1VBQUFNLFNBQUEsQ0FBQTNHLElBQUE7VUFBQTtRQUFBO1VBQUEyRyxTQUFBLENBQUE1RyxJQUFBO1VBQUE0RyxTQUFBLENBQUF0QyxFQUFBLEdBQUFzQyxTQUFBO1VBSVIsSUFBSUEsU0FBQSxDQUFBdEMsRUFBQSxZQUFxQnVDLEtBQUssRUFBRTtZQUN4QkgsT0FBTyxHQUFHRSxTQUFBLENBQUF0QyxFQUFBLENBQVVvQyxPQUFPLElBQUksRUFBRSxFQUN2QztZQUNBLElBQUlBLE9BQU8sQ0FBQ3RELFFBQVEsQ0FBQywwQ0FBMEMsQ0FBQyxFQUFFO2NBQ2hFdUMsS0FBSyxHQUFHLElBQUlrQixLQUFLLENBQ2YsOEVBQ0YsQ0FBQztZQUNILENBQUMsTUFBTSxJQUFJSCxPQUFPLENBQUN0RCxRQUFRLENBQUMsMkRBQTJELENBQUMsRUFBRTtjQUN4RnVDLEtBQUssR0FBRyxJQUFJa0IsS0FBSyw4TUFLakIsQ0FBQztZQUNIO1VBQ0Y7VUFFQSxJQUFJLENBQUNsQixLQUFLLEVBQUU7WUFDVkEsS0FBSyxHQUFBaUIsU0FBQSxDQUFBdEMsRUFBcUI7VUFDNUI7UUFBQztVQUFBc0MsU0FBQSxDQUFBM0csSUFBQTtVQUFBLE9BR0dvRyxDQUFDLENBQUNxQixLQUFLLENBQUMsQ0FBQztRQUFBO1VBQUEsT0FBQWQsU0FBQSxDQUFBbkcsTUFBQSxXQUVSa0YsS0FBSztRQUFBO1FBQUE7VUFBQSxPQUFBaUIsU0FBQSxDQUFBbEcsSUFBQTtNQUFBO0lBQUEsR0FBQXVGLFFBQUE7RUFBQSxDQUNiO0VBQUEsT0FBQUQsY0FBQSxDQUFBbEgsS0FBQSxPQUFBQyxTQUFBO0FBQUE7QUFPTSxTQUFTb0ksdUJBQXVCQSxDQUFDUSxRQUFnQixFQUFVO0VBQ2hFO0VBQ0EsSUFBSXBILElBQUksR0FBR29ILFFBQVEsQ0FBQ3ZDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUM7RUFDbEQ7RUFDQSxJQUFJLEtBQUssQ0FBQ3dDLElBQUksQ0FBQ3JILElBQUksQ0FBQyxFQUFFO0lBQ3BCQSxJQUFJLFFBQUFKLE1BQUEsQ0FBUUksSUFBSSxDQUFFO0VBQ3BCO0VBQ0EsT0FBT0EsSUFBSSxJQUFJLGVBQWU7QUFDaEMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
605
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl90eXBlIiwiX2R1Y2tkYldhc20iLCJfY29uc3RhbnRzIiwiX3V0aWxzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiU1VQUE9SVEVEX0RVQ0tEQl9EUk9QX0VYVEVOU0lPTlMiLCJleHBvcnRzIiwiZ2V0RHVja0RCQ29sdW1uVHlwZXMiLCJfeCIsIl94MiIsIl9nZXREdWNrREJDb2x1bW5UeXBlcyIsImFwcGx5IiwiYXJndW1lbnRzIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUyIiwiY29ubmVjdGlvbiIsInRhYmxlTmFtZSIsInJlc0Rlc2NyaWJlIiwiZHVja0RiVHlwZXMiLCJudW1Sb3dzIiwiX3Jlc0Rlc2NyaWJlJGdldENoaWxkIiwiX3Jlc0Rlc2NyaWJlJGdldENoaWxkMiIsImNvbHVtbk5hbWUiLCJjb2x1bW5UeXBlIiwid3JhcCIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInByZXYiLCJuZXh0IiwicXVlcnkiLCJjb25jYXQiLCJzZW50IiwiZ2V0Q2hpbGRBdCIsInB1c2giLCJuYW1lIiwidHlwZSIsImFicnVwdCIsInN0b3AiLCJnZXREdWNrREJDb2x1bW5UeXBlc01hcCIsImNvbHVtbnMiLCJyZWR1Y2UiLCJhY2MiLCJ2YWx1ZSIsImNhc3REdWNrREJUeXBlc0ZvcktlcGxlciIsIm9wdGlvbnMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJnZW9tZXRyeVRvV0tCIiwiYmlnSW50VG9Eb3VibGUiLCJtb2RpZmllZENvbHVtbnMiLCJtYXAiLCJjb2x1bW4iLCJqb2luIiwic2V0R2VvQXJyb3dXS0JFeHRlbnNpb24iLCJ0YWJsZSIsInNjaGVtYSIsImZpZWxkcyIsImZvckVhY2giLCJmaWVsZCIsImluZm8iLCJmaW5kIiwibWV0YWRhdGEiLCJHRU9BUlJPV19NRVRBREFUQV9LRVkiLCJHRU9BUlJPV19FWFRFTlNJT05TIiwiV0tCIiwicmVzdG9yZUFycm93VGFibGUiLCJhcnJvd1NjaGVtYSIsImNyZWFPcHRzIiwiaW5kZXgiLCJUYWJsZSIsInJlbW92ZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyIsInJlbW92ZWRNZXRhZGF0YSIsImV4dGVuc2lvbiIsInN0YXJ0c1dpdGgiLCJyZXN0b3JlVW5zdXBwb3J0ZWRFeHRlbnNpb25zIiwicmVtb3ZlZEV4dGVuc2lvbnMiLCJpc0dlb0Fycm93UG9pbnQiLCJEYXRhVHlwZSIsImlzRml4ZWRTaXplTGlzdCIsImluY2x1ZGVzIiwibGlzdFNpemUiLCJpc0Zsb2F0IiwiY2hpbGRyZW4iLCJpc0dlb0Fycm93TGluZVN0cmluZyIsImlzTGlzdCIsImlzR2VvQXJyb3dQb2x5Z29uIiwiaXNHZW9BcnJvd011bHRpUG9pbnQiLCJpc0dlb0Fycm93TXVsdGlMaW5lU3RyaW5nIiwiaXNHZW9BcnJvd011bHRpUG9seWdvbiIsImNoZWNrSXNTZWxlY3RRdWVyeSIsIl94MyIsIl94NCIsIl9jaGVja0lzU2VsZWN0UXVlcnkiLCJfY2FsbGVlMyIsInJlc3VsdCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsInQwIiwic3BsaXRTcWxTdGF0ZW1lbnRzIiwiaW5wdXQiLCJxdWVyaWVzIiwiY3VycmVudFF1ZXJ5IiwiaW5TaW5nbGVRdW90ZSIsImluRG91YmxlUXVvdGUiLCJpbkxpbmVDb21tZW50IiwiaW5CbG9ja0NvbW1lbnQiLCJjaGFyIiwidHJpbW1lZCIsInRyaW0iLCJyZW1vdmVTUUxDb21tZW50cyIsInNxbCIsInJlcGxhY2UiLCJkcm9wVGFibGVJZkV4aXN0cyIsIl9yZWYiLCJfY2FsbGVlIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImNvbnNvbGUiLCJlcnJvciIsIl94NSIsIl94NiIsInRhYmxlRnJvbUZpbGUiLCJfeDciLCJfdGFibGVGcm9tRmlsZSIsIl9jYWxsZWU0IiwiZmlsZSIsImZpbGVFeHQiLCJkYiIsImMiLCJzb3VyY2VOYW1lIiwiYXJyYXlCdWZmZXIiLCJ1aW50OEFycmF5IiwiYXJyb3dUYWJsZSIsIm1lc3NhZ2UiLCJfY2FsbGVlNCQiLCJfY29udGV4dDQiLCJFcnJvciIsImV4dCIsImVuZHNXaXRoIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJkYXRhYmFzZSIsImNvbm5lY3QiLCJzYW5pdGl6ZUR1Y2tEQlRhYmxlTmFtZSIsIlVpbnQ4QXJyYXkiLCJ0YWJsZUZyb21JUEMiLCJpbnNlcnRBcnJvd1RhYmxlIiwicmVnaXN0ZXJGaWxlSGFuZGxlIiwiRHVja0RCRGF0YVByb3RvY29sIiwiQlJPV1NFUl9GSUxFUkVBREVSIiwiY2xvc2UiLCJmaWxlTmFtZSIsInRlc3QiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFibGUvZHVja2RiLXRhYmxlLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbi8vIGxvYWRlcnMuZ2xcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCAoYykgdmlzLmdsIGNvbnRyaWJ1dG9yc1xuXG4vLyBDb3BpZWQgZnJvbSBsb2FkZXJzLmdsL2dlb2Fycm93XG5cbi8vIFRPRE86IFJlbW92ZSBpc0dlb0Fycm93KiBvbmNlIEtlcGxlci5nbCBpcyB1cGdyYWRlZCB0byBsb2FkZXJzLmdsIDQuNCtcblxuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcbmltcG9ydCB7RGF0YVR5cGV9IGZyb20gJ2FwYWNoZS1hcnJvdy90eXBlJztcbmltcG9ydCB7RHVja0RCRGF0YVByb3RvY29sfSBmcm9tICdAZHVja2RiL2R1Y2tkYi13YXNtJztcblxuaW1wb3J0IHtHRU9BUlJPV19FWFRFTlNJT05TLCBHRU9BUlJPV19NRVRBREFUQV9LRVl9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7UHJvdG9EYXRhc2V0RmllbGR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtEYXRhYmFzZUNvbm5lY3Rpb24sIGdldEFwcGxpY2F0aW9uQ29uZmlnfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9EVUNLREJfRFJPUF9FWFRFTlNJT05TID0gWydhcnJvdycsICdjc3YnLCAnZ2VvanNvbicsICdqc29uJywgJ3BhcnF1ZXQnXTtcblxuZXhwb3J0IHR5cGUgRHVja0RCQ29sdW1uRGVzYyA9IHtuYW1lOiBzdHJpbmc7IHR5cGU6IHN0cmluZ307XG5cbi8qKlxuICogUXVlcmllcyBhIER1Y2tEQiB0YWJsZSBmb3IgdGhlIHNjaGVtYSBkZXNjcmlwdGlvbi5cbiAqIEBwYXJhbSBjb25uZWN0aW9uIEFuIGFjdGl2ZSBEdWNrREIgY29ubmVjdGlvbi5cbiAqIEBwYXJhbSB0YWJsZU5hbWUgQSBuYW1lIG9mIER1Y2tEQiB0YWJsZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGNvbHVtbiBuYW1lcyBhbmQgRHVja0RCIHR5cGVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RHVja0RCQ29sdW1uVHlwZXMoXG4gIGNvbm5lY3Rpb246IERhdGFiYXNlQ29ubmVjdGlvbixcbiAgdGFibGVOYW1lOiBzdHJpbmdcbik6IFByb21pc2U8RHVja0RCQ29sdW1uRGVzY1tdPiB7XG4gIGNvbnN0IHJlc0Rlc2NyaWJlID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShgREVTQ1JJQkUgXCIke3RhYmxlTmFtZX1cImApO1xuXG4gIGNvbnN0IGR1Y2tEYlR5cGVzOiBEdWNrREJDb2x1bW5EZXNjW10gPSBbXTtcbiAgY29uc3QgbnVtUm93cyA9IHJlc0Rlc2NyaWJlLm51bVJvd3M7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtUm93czsgKytpKSB7XG4gICAgY29uc3QgY29sdW1uTmFtZSA9IHJlc0Rlc2NyaWJlLmdldENoaWxkQXQoMCk/LmdldChpKTtcbiAgICBjb25zdCBjb2x1bW5UeXBlID0gcmVzRGVzY3JpYmUuZ2V0Q2hpbGRBdCgxKT8uZ2V0KGkpO1xuXG4gICAgZHVja0RiVHlwZXMucHVzaCh7XG4gICAgICBuYW1lOiBjb2x1bW5OYW1lLFxuICAgICAgdHlwZTogY29sdW1uVHlwZVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGR1Y2tEYlR5cGVzO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIG1hcHBpbmcgb2YgY29sdW1uIG5hbWVzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgRHVja0RCIGRhdGEgdHlwZXMuXG4gKiBAcGFyYW0gY29sdW1ucyBBbiBhcnJheSBvZiBjb2x1bW4gZGVzY3JpcHRpb25zIGZyb20gRHVja0RCLiBDaGVjayBnZXREdWNrREJDb2x1bW5UeXBlcy5cbiAqIEByZXR1cm5zIEEgcmVjb3JkIHdoZXJlIGtleXMgYXJlIGNvbHVtbiBuYW1lcyBhbmQgdmFsdWVzIGFyZSB0aGVpciBkYXRhIHR5cGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RHVja0RCQ29sdW1uVHlwZXNNYXAoY29sdW1uczogRHVja0RCQ29sdW1uRGVzY1tdKSB7XG4gIHJldHVybiBjb2x1bW5zLnJlZHVjZSgoYWNjLCB2YWx1ZSkgPT4ge1xuICAgIGFjY1t2YWx1ZS5uYW1lXSA9IHZhbHVlLnR5cGU7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPik7XG59XG5cbi8qKlxuICogQ29uc3RydWN0cyBhbiBTUUwgcXVlcnkgdG8gc2VsZWN0IGFsbCBjb2x1bW5zIGZyb20gYSBnaXZlbiB0YWJsZSxcbiAqIGNvbnZlcnRpbmcgc3BlY2lmaWVkIGNvbHVtbnMgdG8gV2VsbC1Lbm93biBCaW5hcnkgKFdLQikgZm9ybWF0IHVzaW5nIFNUX0FzV0tCLFxuICogYW5kIGNhc3RpbmcgQklHSU5UIGNvbHVtbnMgdG8gRE9VQkxFIGlmIHNwZWNpZmllZC5cbiAqIEBwYXJhbSB0YWJsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIGZyb20gd2hpY2ggdG8gc2VsZWN0IGRhdGEuXG4gKiBAcGFyYW0gY29sdW1ucyBBbiBhcnJheSBvZiBjb2x1bW4gZGVzY3JpcHRvcnMsIGVhY2ggd2l0aCBhIHR5cGUgYW5kIG5hbWUuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBwYXJhbWV0ZXJzIHRvIGNvbnRyb2wgdGhlIGNvbnZlcnNpb24gYmVoYXZpb3IuXG4gKiBAcmV0dXJucyBUaGUgY29uc3RydWN0ZWQgU1FMIHF1ZXJ5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FzdER1Y2tEQlR5cGVzRm9yS2VwbGVyKFxuICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgY29sdW1uczogRHVja0RCQ29sdW1uRGVzY1tdLFxuICBvcHRpb25zID0ge2dlb21ldHJ5VG9XS0I6IHRydWUsIGJpZ0ludFRvRG91YmxlOiB0cnVlfVxuKTogc3RyaW5nIHtcbiAgY29uc3QgbW9kaWZpZWRDb2x1bW5zID0gY29sdW1ucy5tYXAoY29sdW1uID0+IHtcbiAgICBjb25zdCB7bmFtZSwgdHlwZX0gPSBjb2x1bW47XG4gICAgaWYgKHR5cGUgPT09ICdHRU9NRVRSWScgJiYgb3B0aW9ucy5nZW9tZXRyeVRvV0tCKSB7XG4gICAgICByZXR1cm4gYFNUX0FzV0tCKCR7bmFtZX0pIGFzICR7bmFtZX1gO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ0JJR0lOVCcgJiYgb3B0aW9ucy5iaWdJbnRUb0RvdWJsZSkge1xuICAgICAgcmV0dXJuIGBDQVNUKCR7bmFtZX0gQVMgRE9VQkxFKSBhcyAke25hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIG5hbWU7XG4gIH0pO1xuXG4gIHJldHVybiBgU0VMRUNUICR7bW9kaWZpZWRDb2x1bW5zLmpvaW4oJywgJyl9IEZST00gJyR7dGFibGVOYW1lfSdgO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIEdlb0Fycm93IFdLQiBleHRlbnNpb24gbWV0YWRhdGEgZm9yIGNvbHVtbnMgb2YgdHlwZSBHRU9NRVRSWSBpbiBhbiBBcnJvdyB0YWJsZS5cbiAqIEBwYXJhbSB0YWJsZSBUaGUgQXBhY2hlIEFycm93IHRhYmxlIHdob3NlIHNjaGVtYSBmaWVsZHMgd2lsbCBiZSBtb2RpZmllZC5cbiAqIEBwYXJhbSBjb2x1bW5zIEFuIGFycmF5IG9mIGNvbHVtbiBkZXNjcmlwdG9ycyBmcm9tIGEgRHVja0RCIHRhYmxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0R2VvQXJyb3dXS0JFeHRlbnNpb24odGFibGU6IGFycm93LlRhYmxlLCBjb2x1bW5zOiBEdWNrREJDb2x1bW5EZXNjW10pIHtcbiAgdGFibGUuc2NoZW1hLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICBjb25zdCBpbmZvID0gY29sdW1ucy5maW5kKHQgPT4gdC5uYW1lID09PSBmaWVsZC5uYW1lKTtcbiAgICBpZiAoaW5mbz8udHlwZSA9PT0gJ0dFT01FVFJZJykge1xuICAgICAgZmllbGQubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgR0VPQVJST1dfRVhURU5TSU9OUy5XS0IpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJvdyB0YWJsZSBmcm9tIGFuIGFycmF5IG9mIGFycm93IHZlY3RvcnMgYW5kIGZpZWxkcy5cbiAqIEBwYXJhbSBjb2x1bW5zIEFuIGFycmF5IG9mIGFycm93IHZlY3RvcnMuXG4gKiBAcGFyYW0gZmllbGRzIEFuIGFycmF5IG9mIGZpZWxkcyBwZXIgYXJyb3cgdmVjdG9yLlxuICogQHBhcmFtIGFycm93U2NoZW1hIE9wdGlvbmFsIGFycm93IHRhYmxlIHNjaGVtYSB3aGVuIGF2YWlsYWJsZS5cbiAqIEByZXR1cm5zIEFuIGFycm93IHRhYmxlLlxuICovXG5leHBvcnQgY29uc3QgcmVzdG9yZUFycm93VGFibGUgPSAoXG4gIGNvbHVtbnM6IGFycm93LlZlY3RvcltdLFxuICBmaWVsZHM6IFByb3RvRGF0YXNldEZpZWxkW10sXG4gIGFycm93U2NoZW1hPzogYXJyb3cuU2NoZW1hXG4pID0+IHtcbiAgY29uc3QgY3JlYU9wdHMgPSB7fTtcbiAgZmllbGRzLm1hcCgoZmllbGQsIGluZGV4KSA9PiB7XG4gICAgY3JlYU9wdHNbZmllbGQubmFtZV0gPSBjb2x1bW5zW2luZGV4XTtcbiAgfSk7XG5cbiAgcmV0dXJuIGFycm93U2NoZW1hID8gbmV3IGFycm93LlRhYmxlKGFycm93U2NoZW1hLCBjcmVhT3B0cykgOiBuZXcgYXJyb3cuVGFibGUoY3JlYU9wdHMpO1xufTtcblxuLyoqXG4gKiBEdWNrRGIgdGhyb3dzIHdoZW4gZ2VvYXJyb3cgZXh0ZW5zaW9ucyBhcmUgcHJlc2VudCBpbiBtZXRhZGF0YS5cbiAqIEBwYXJhbSB0YWJsZSBBbiBhcnJvdyB0YWJsZSB0byBjbGVhciBmcm9tIGV4dGVuc2lvbnMuXG4gKiBAcmV0dXJucyBBIG1hcCBvZiByZW1vdmVkIHBlciBmaWVsZCBnZW9hcnJvdyBleHRlbnNpb25zLlxuICovXG5leHBvcnQgY29uc3QgcmVtb3ZlVW5zdXBwb3J0ZWRFeHRlbnNpb25zID0gKHRhYmxlOiBhcnJvdy5UYWJsZSk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPT4ge1xuICBjb25zdCByZW1vdmVkTWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgdGFibGUuc2NoZW1hLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICBjb25zdCBleHRlbnNpb24gPSBmaWVsZC5tZXRhZGF0YS5nZXQoR0VPQVJST1dfTUVUQURBVEFfS0VZKTtcbiAgICBpZiAoZXh0ZW5zaW9uPy5zdGFydHNXaXRoKCdnZW9hcnJvdycpKSB7XG4gICAgICByZW1vdmVkTWV0YWRhdGFbZmllbGQubmFtZV0gPSBleHRlbnNpb247XG4gICAgICBmaWVsZC5tZXRhZGF0YS5kZWxldGUoR0VPQVJST1dfTUVUQURBVEFfS0VZKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVtb3ZlZE1ldGFkYXRhO1xufTtcblxuLyoqXG4gKiBSZXN0b3JlIHJlbW92ZWQgbWV0YWRhdGEgZXh0ZW5zaW9ucyBhZnRlciBhIGNhbGwgdG8gcmVtb3ZlVW5zdXBwb3J0ZWRFeHRlbnNpb25zLlxuICogQHBhcmFtIHRhYmxlIEFuIGFycm93IHRhYmxlIHRvIHJlc3RvcmUgZ2VvYXJyb3cgZXh0ZW5zaW9ucy5cbiAqIEBwYXJhbSByZW1vdmVkRXh0ZW5zaW9ucyBBIG1hcCBvZiBwZXIgZmllbGQgZ2VvYXJyb3cgZXh0ZW5zaW9ucyB0byByZXN0b3JlLlxuICovXG5leHBvcnQgY29uc3QgcmVzdG9yZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyA9IChcbiAgdGFibGU6IGFycm93LlRhYmxlLFxuICByZW1vdmVkRXh0ZW5zaW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuKSA9PiB7XG4gIHRhYmxlLnNjaGVtYS5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gcmVtb3ZlZEV4dGVuc2lvbnNbZmllbGQubmFtZV07XG4gICAgaWYgKGV4dGVuc2lvbikge1xuICAgICAgZmllbGQubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgZXh0ZW5zaW9uKTtcbiAgICB9XG4gIH0pO1xufTtcblxuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBBcGFjaGUgQXJyb3cgSlMgdHlwZSBpcyBhIFBvaW50IGRhdGEgdHlwZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzR2VvQXJyb3dQb2ludCh0eXBlOiBEYXRhVHlwZSkge1xuICBpZiAoRGF0YVR5cGUuaXNGaXhlZFNpemVMaXN0KHR5cGUpKSB7XG4gICAgLy8gQ2hlY2sgbGlzdCBzaXplXG4gICAgaWYgKCFbMiwgMywgNF0uaW5jbHVkZXModHlwZS5saXN0U2l6ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBjaGlsZCBvZiBGaXhlZFNpemVMaXN0IGlzIGZsb2F0aW5nIHR5cGVcbiAgICBpZiAoIURhdGFUeXBlLmlzRmxvYXQodHlwZS5jaGlsZHJlblswXSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBBcGFjaGUgQXJyb3cgSlMgdHlwZSBpcyBhIFBvaW50IGRhdGEgdHlwZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzR2VvQXJyb3dMaW5lU3RyaW5nKHR5cGU6IERhdGFUeXBlKSB7XG4gIC8vIENoZWNrIHRoZSBvdXRlciB0eXBlIGlzIGEgTGlzdFxuICBpZiAoIURhdGFUeXBlLmlzTGlzdCh0eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIHRoZSBjaGlsZCBpcyBhIHBvaW50IHR5cGVcbiAgaWYgKCFpc0dlb0Fycm93UG9pbnQodHlwZS5jaGlsZHJlblswXS50eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIEFwYWNoZSBBcnJvdyBKUyB0eXBlIGlzIGEgUG9seWdvbiBkYXRhIHR5cGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0dlb0Fycm93UG9seWdvbih0eXBlOiBEYXRhVHlwZSkge1xuICAvLyBDaGVjayB0aGUgb3V0ZXIgdmVjdG9yIGlzIGEgTGlzdFxuICBpZiAoIURhdGFUeXBlLmlzTGlzdCh0eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIHRoZSBjaGlsZCBpcyBhIGxpbmVzdHJpbmcgdmVjdG9yXG4gIGlmICghaXNHZW9BcnJvd0xpbmVTdHJpbmcodHlwZS5jaGlsZHJlblswXS50eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIEFwYWNoZSBBcnJvdyBKUyB0eXBlIGlzIGEgUG9seWdvbiBkYXRhIHR5cGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0dlb0Fycm93TXVsdGlQb2ludCh0eXBlOiBEYXRhVHlwZSkge1xuICAvLyBDaGVjayB0aGUgb3V0ZXIgdmVjdG9yIGlzIGEgTGlzdFxuICBpZiAoIURhdGFUeXBlLmlzTGlzdCh0eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIHRoZSBjaGlsZCBpcyBhIHBvaW50IHZlY3RvclxuICBpZiAoIWlzR2VvQXJyb3dQb2ludCh0eXBlLmNoaWxkcmVuWzBdLnR5cGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gQXBhY2hlIEFycm93IEpTIHR5cGUgaXMgYSBQb2x5Z29uIGRhdGEgdHlwZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzR2VvQXJyb3dNdWx0aUxpbmVTdHJpbmcodHlwZTogRGF0YVR5cGUpIHtcbiAgLy8gQ2hlY2sgdGhlIG91dGVyIHZlY3RvciBpcyBhIExpc3RcbiAgaWYgKCFEYXRhVHlwZS5pc0xpc3QodHlwZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBDaGVjayB0aGUgY2hpbGQgaXMgYSBsaW5lc3RyaW5nIHZlY3RvclxuICBpZiAoIWlzR2VvQXJyb3dMaW5lU3RyaW5nKHR5cGUuY2hpbGRyZW5bMF0udHlwZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBBcGFjaGUgQXJyb3cgSlMgdHlwZSBpcyBhIFBvbHlnb24gZGF0YSB0eXBlICovXG5leHBvcnQgZnVuY3Rpb24gaXNHZW9BcnJvd011bHRpUG9seWdvbih0eXBlOiBEYXRhVHlwZSkge1xuICAvLyBDaGVjayB0aGUgb3V0ZXIgdmVjdG9yIGlzIGEgTGlzdFxuICBpZiAoIURhdGFUeXBlLmlzTGlzdCh0eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIHRoZSBjaGlsZCBpcyBhIHBvbHlnb24gdmVjdG9yXG4gIGlmICghaXNHZW9BcnJvd1BvbHlnb24odHlwZS5jaGlsZHJlblswXS50eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gU1FMIHF1ZXJ5IGlzIGEgU0VMRUNUIHF1ZXJ5IGJ5IHVzaW5nIHRoZSBFWFBMQUlOIGNvbW1hbmQuXG4gKiBAcGFyYW0gY29ubmVjdGlvbiBUaGUgRHVja0RCIGNvbm5lY3Rpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcXVlcnkgVGhlIFNRTCBxdWVyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFJlc29sdmVzIHRvIGB0cnVlYCBpZiB0aGUgcXVlcnkgaXMgYSBTRUxFQ1Qgc3RhdGVtZW50LCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrSXNTZWxlY3RRdWVyeShcbiAgY29ubmVjdGlvbjogRGF0YWJhc2VDb25uZWN0aW9uLFxuICBxdWVyeTogc3RyaW5nXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KGBFWFBMQUlOICgke3F1ZXJ5fSlgKTtcbiAgICByZXR1cm4gcmVzdWx0Lm51bVJvd3MgPiAwO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFNwbGl0IGEgc3RyaW5nIHdpdGggcG90ZW50aWFsbHkgbXVsdGlwbGUgU1FMIHF1ZXJpZXMgKHNlcGFyYXRlZCBhcyB1c3VhbCBieSAnOycpIGludG8gYW4gYXJyYXkgb2YgcXVlcmllcy5cbiAqIFRoaXMgaW1wbGVtZW50YXRpb246XG4gKiAgLSBIYW5kbGVzIHNpbmdsZSBhbmQgZG91YmxlIHF1b3RlZCBzdHJpbmdzIHdpdGggcHJvcGVyIGVzY2FwaW5nXG4gKiAgLSBJZ25vcmVzIHNlbWljb2xvbnMgaW4gbGluZSBjb21tZW50cyAoLS0pIGFuZCBibG9jayBjb21tZW50cyAoc2xhc2ggYXN0ZXJpc2spXG4gKiAgLSBUcmltcyB3aGl0ZXNwYWNlIGZyb20gcXVlcmllc1xuICogIC0gSGFuZGxlcyBTUUwtc3R5bGUgZXNjYXBlZCBxdW90ZXMgKCcnIGluc2lkZSBzdHJpbmdzKVxuICogIC0gUmV0dXJucyBvbmx5IG5vbi1lbXB0eSBxdWVyaWVzXG4gKiBAcGFyYW0gaW5wdXQgQSBzdHJpbmcgd2l0aCBwb3RlbnRpYWxseSBtdWx0aXBsZSBTUUwgcXVlcmllcy5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHF1ZXJpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdFNxbFN0YXRlbWVudHMoaW5wdXQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcXVlcmllczogc3RyaW5nW10gPSBbXTtcbiAgbGV0IGN1cnJlbnRRdWVyeSA9ICcnO1xuICBsZXQgaW5TaW5nbGVRdW90ZSA9IGZhbHNlO1xuICBsZXQgaW5Eb3VibGVRdW90ZSA9IGZhbHNlO1xuICBsZXQgaW5MaW5lQ29tbWVudCA9IGZhbHNlO1xuICBsZXQgaW5CbG9ja0NvbW1lbnQgPSBmYWxzZTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY2hhciA9IGlucHV0W2ldO1xuXG4gICAgaWYgKGluTGluZUNvbW1lbnQpIHtcbiAgICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICAgICAgaWYgKGNoYXIgPT09ICdcXG4nKSB7XG4gICAgICAgIGluTGluZUNvbW1lbnQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChpbkJsb2NrQ29tbWVudCkge1xuICAgICAgY3VycmVudFF1ZXJ5ICs9IGNoYXI7XG4gICAgICBpZiAoY2hhciA9PT0gJyonICYmIGlucHV0W2kgKyAxXSA9PT0gJy8nKSB7XG4gICAgICAgIGluQmxvY2tDb21tZW50ID0gZmFsc2U7XG4gICAgICAgIGN1cnJlbnRRdWVyeSArPSBpbnB1dFsrK2ldOyAvLyBDb25zdW1lICcvJ1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGluU2luZ2xlUXVvdGUpIHtcbiAgICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICAgICAgaWYgKGNoYXIgPT09IFwiJ1wiKSB7XG4gICAgICAgIC8vIEhhbmRsZSBlc2NhcGVkIHNpbmdsZSBxdW90ZXMgaW4gU1FMXG4gICAgICAgIGlmIChpICsgMSA8IGlucHV0Lmxlbmd0aCAmJiBpbnB1dFtpICsgMV0gPT09IFwiJ1wiKSB7XG4gICAgICAgICAgY3VycmVudFF1ZXJ5ICs9IGlucHV0WysraV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5TaW5nbGVRdW90ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoaW5Eb3VibGVRdW90ZSkge1xuICAgICAgY3VycmVudFF1ZXJ5ICs9IGNoYXI7XG4gICAgICBpZiAoY2hhciA9PT0gJ1wiJykge1xuICAgICAgICAvLyBIYW5kbGUgZXNjYXBlZCBkb3VibGUgcXVvdGVzXG4gICAgICAgIGlmIChpICsgMSA8IGlucHV0Lmxlbmd0aCAmJiBpbnB1dFtpICsgMV0gPT09ICdcIicpIHtcbiAgICAgICAgICBjdXJyZW50UXVlcnkgKz0gaW5wdXRbKytpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbkRvdWJsZVF1b3RlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBjb21tZW50IHN0YXJ0c1xuICAgIGlmIChjaGFyID09PSAnLScgJiYgaW5wdXRbaSArIDFdID09PSAnLScpIHtcbiAgICAgIGluTGluZUNvbW1lbnQgPSB0cnVlO1xuICAgICAgY3VycmVudFF1ZXJ5ICs9IGNoYXIgKyBpbnB1dFsrK2ldO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGNoYXIgPT09ICcvJyAmJiBpbnB1dFtpICsgMV0gPT09ICcqJykge1xuICAgICAgaW5CbG9ja0NvbW1lbnQgPSB0cnVlO1xuICAgICAgY3VycmVudFF1ZXJ5ICs9IGNoYXIgKyBpbnB1dFsrK2ldO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIHF1b3RlIHN0YXJ0c1xuICAgIGlmIChjaGFyID09PSBcIidcIikge1xuICAgICAgaW5TaW5nbGVRdW90ZSA9IHRydWU7XG4gICAgICBjdXJyZW50UXVlcnkgKz0gY2hhcjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjaGFyID09PSAnXCInKSB7XG4gICAgICBpbkRvdWJsZVF1b3RlID0gdHJ1ZTtcbiAgICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHF1ZXJ5IHNlcGFyYXRvclxuICAgIGlmIChjaGFyID09PSAnOycpIHtcbiAgICAgIGNvbnN0IHRyaW1tZWQgPSBjdXJyZW50UXVlcnkudHJpbSgpO1xuICAgICAgaWYgKHRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgICBxdWVyaWVzLnB1c2godHJpbW1lZCk7XG4gICAgICB9XG4gICAgICBjdXJyZW50UXVlcnkgPSAnJztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICB9XG5cbiAgLy8gQWRkIHRoZSBmaW5hbCBxdWVyeVxuICBjb25zdCB0cmltbWVkID0gY3VycmVudFF1ZXJ5LnRyaW0oKTtcbiAgaWYgKHRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgIHF1ZXJpZXMucHVzaCh0cmltbWVkKTtcbiAgfVxuXG4gIHJldHVybiBxdWVyaWVzO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgU1FMIGNvbW1lbnRzIGZyb20gYSBnaXZlbiBTUUwgc3RyaW5nLlxuICogQHBhcmFtIHNxbCBUaGUgU1FMIHF1ZXJ5IHN0cmluZyBmcm9tIHdoaWNoIGNvbW1lbnRzIHNob3VsZCBiZSByZW1vdmVkLlxuICogQHJldHVybnMgVGhlIGNsZWFuZWQgU1FMIHN0cmluZyB3aXRob3V0IGNvbW1lbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlU1FMQ29tbWVudHMoc3FsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBSZW1vdmUgbXVsdGktbGluZSBjb21tZW50cyAoLyogLi4uICovKVxuICBzcWwgPSBzcWwucmVwbGFjZSgvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nLCAnJyk7XG4gIC8vIFJlbW92ZSBzaW5nbGUtbGluZSBjb21tZW50cyAoLS0gLi4uKVxuICBzcWwgPSBzcWwucmVwbGFjZSgvLS0uKiQvZ20sICcnKTtcbiAgcmV0dXJuIHNxbC50cmltKCk7XG59XG5cbi8qKlxuICogRHJvcHMgYSB0YWJsZSBpZiBpdCBleGlzdHMgaW4gdGhlIER1Y2tEQiBkYXRhYmFzZS5cbiAqIEBwYXJhbSBjb25uZWN0aW9uIFRoZSBEdWNrREIgY29ubmVjdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSB0YWJsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGRyb3AuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGUuXG4gKiBAdGhyb3dzIExvZ3MgYW4gZXJyb3IgaWYgdGhlIHRhYmxlIGRyb3Agb3BlcmF0aW9uIGZhaWxzLlxuICovXG5leHBvcnQgY29uc3QgZHJvcFRhYmxlSWZFeGlzdHMgPSBhc3luYyAoY29ubmVjdGlvbjogRGF0YWJhc2VDb25uZWN0aW9uLCB0YWJsZU5hbWU6IHN0cmluZykgPT4ge1xuICB0cnkge1xuICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoYERST1AgVEFCTEUgSUYgRVhJU1RTIFwiJHt0YWJsZU5hbWV9XCI7YCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRHJvcHBpbmcgdGFibGUgZmFpbGVkJywgdGFibGVOYW1lLCBlcnJvcik7XG4gIH1cbn07XG5cbi8qKlxuICogSW1wb3J0cyBhIGZpbGUgaW50byBEdWNrREIgYXMgYSB0YWJsZSwgc3VwcG9ydGluZyBtdWx0aXBsZSBmb3JtYXRzIGZyb20gU1VQUE9SVEVEX0RVQ0tEQl9EUk9QX0VYVEVOU0lPTlMuXG4gKiBAcGFyYW0gZmlsZSBUaGUgZmlsZSB0byBiZSBpbXBvcnRlZC5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZpbGUgaGFzIGJlZW4gcHJvY2Vzc2VkIGludG8gYSBEdWNrREIgdGFibGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0YWJsZUZyb21GaWxlKGZpbGU6IEZpbGUgfCBudWxsKTogUHJvbWlzZTxudWxsIHwgRXJyb3I+IHtcbiAgaWYgKCFmaWxlKSByZXR1cm4gbmV3IEVycm9yKCdGaWxlIERyYWcgJiBEcm9wOiBObyBmaWxlJyk7XG5cbiAgY29uc3QgZmlsZUV4dCA9IFNVUFBPUlRFRF9EVUNLREJfRFJPUF9FWFRFTlNJT05TLmZpbmQoZXh0ID0+IGZpbGUubmFtZS5lbmRzV2l0aChleHQpKTtcbiAgaWYgKCFmaWxlRXh0KSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcihcIkZpbGUgRHJhZyAmIERyb3A6IEZpbGUgZXh0ZW5zaW9uIGlzbid0IHN1cHBvcnRlZFwiKTtcbiAgfVxuXG4gIGNvbnN0IGRiID0gYXdhaXQgZ2V0QXBwbGljYXRpb25Db25maWcoKS5kYXRhYmFzZTtcbiAgaWYgKCFkYikge1xuICAgIHJldHVybiBuZXcgRXJyb3IoJ1RoZSBkYXRhYmFzZSBpcyBub3QgY29uZmlndXJlZCBwcm9wZXJseS4nKTtcbiAgfVxuICBjb25zdCBjID0gYXdhaXQgZGIuY29ubmVjdCgpO1xuXG4gIGxldCBlcnJvcjogRXJyb3IgfCBudWxsID0gbnVsbDtcblxuICB0cnkge1xuICAgIGNvbnN0IHRhYmxlTmFtZSA9IHNhbml0aXplRHVja0RCVGFibGVOYW1lKGZpbGUubmFtZSk7XG4gICAgY29uc3Qgc291cmNlTmFtZSA9ICd0ZW1wX2ZpbGVfaGFuZGxlJztcblxuICAgIGMucXVlcnkoYGluc3RhbGwgc3BhdGlhbDtcbiAgICAgIGxvYWQgc3BhdGlhbDtgKTtcblxuICAgIGlmIChmaWxlRXh0ID09PSAnYXJyb3cnKSB7XG4gICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IGF3YWl0IGZpbGUuYXJyYXlCdWZmZXIoKTtcbiAgICAgIGNvbnN0IHVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcik7XG4gICAgICBjb25zdCBhcnJvd1RhYmxlID0gYXJyb3cudGFibGVGcm9tSVBDKHVpbnQ4QXJyYXkpO1xuXG4gICAgICBhd2FpdCBjLmluc2VydEFycm93VGFibGUoYXJyb3dUYWJsZSwge25hbWU6IHRhYmxlTmFtZX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBkYi5yZWdpc3RlckZpbGVIYW5kbGUoc291cmNlTmFtZSwgZmlsZSwgRHVja0RCRGF0YVByb3RvY29sLkJST1dTRVJfRklMRVJFQURFUiwgdHJ1ZSk7XG5cbiAgICAgIGlmIChmaWxlRXh0ID09PSAnY3N2Jykge1xuICAgICAgICBhd2FpdCBjLnF1ZXJ5KGBcbiAgICAgICAgICAgIENSRUFURSBUQUJMRSAnJHt0YWJsZU5hbWV9JyBBU1xuICAgICAgICAgICAgU0VMRUNUICpcbiAgICAgICAgICAgIEZST00gcmVhZF9jc3YoJyR7c291cmNlTmFtZX0nLCBoZWFkZXIgPSB0cnVlLCBhdXRvX2RldGVjdCA9IHRydWUsIHNhbXBsZV9zaXplID0gLTEpO1xuICAgICAgICAgIGApO1xuICAgICAgfSBlbHNlIGlmIChmaWxlRXh0ID09PSAnanNvbicpIHtcbiAgICAgICAgYXdhaXQgYy5xdWVyeShgXG4gICAgICAgICAgICBDUkVBVEUgVEFCTEUgJyR7dGFibGVOYW1lfScgQVNcbiAgICAgICAgICAgIFNFTEVDVCAqXG4gICAgICAgICAgICBGUk9NIHJlYWRfanNvbl9hdXRvKCcke3NvdXJjZU5hbWV9Jyk7XG4gICAgICAgICAgYCk7XG4gICAgICB9IGVsc2UgaWYgKGZpbGVFeHQgPT09ICdnZW9qc29uJykge1xuICAgICAgICBhd2FpdCBjLnF1ZXJ5KGBcbiAgICAgICAgICAgIENSRUFURSBUQUJMRSAnJHt0YWJsZU5hbWV9JyBBU1xuICAgICAgICAgICAgU0VMRUNUICpcbiAgICAgICAgICAgIEZST00gU1RfUkVBRCgnJHtzb3VyY2VOYW1lfScsIGtlZXBfd2tiID0gVFJVRSk7XG4gICAgICAgICAgYCk7XG4gICAgICB9IGVsc2UgaWYgKGZpbGVFeHQgPT09ICdwYXJxdWV0Jykge1xuICAgICAgICBhd2FpdCBjLnF1ZXJ5KGBcbiAgICAgICAgICAgIENSRUFURSBUQUJMRSAnJHt0YWJsZU5hbWV9JyBBU1xuICAgICAgICAgICAgU0VMRUNUICpcbiAgICAgICAgICAgIEZST00gcmVhZF9wYXJxdWV0KCcke3NvdXJjZU5hbWV9JylcbiAgICAgICAgICBgKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yRGF0YSkge1xuICAgIGlmIChlcnJvckRhdGEgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGVycm9yRGF0YS5tZXNzYWdlIHx8ICcnO1xuICAgICAgLy8gb3V0cHV0IG1vcmUgcmVhZGFibGUgZXJyb3JzIGZvciBrbm93biBpc3N1ZXNcbiAgICAgIGlmIChtZXNzYWdlLmluY2x1ZGVzKCdBcnJvdyBUeXBlIHdpdGggZXh0ZW5zaW9uIG5hbWU6IGdlb2Fycm93JykpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1RoZSBHZW9BcnJvdyBleHRlbnNpb25zIGFyZSBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbm5lY3RlZCBEdWNrREIgdmVyc2lvbi4nXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoXCJHZW9wYXJxdWV0IGNvbHVtbiAnZ2VvbWV0cnknIGRvZXMgbm90IGhhdmUgZ2VvbWV0cnkgdHlwZXNcIikpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgYEludmFsaWQgSW5wdXQgRXJyb3I6IEdlb3BhcnF1ZXQgY29sdW1uICdnZW9tZXRyeScgZG9lcyBub3QgaGF2ZSBnZW9tZXRyeSB0eXBlcy5cblBvc3NpYmxlIHJlYXNvbnM6XG4gIC0gT2xkIC5wYXJxdWV0IGZpbGVzIHRoYXQgZG9uJ3QgbWF0Y2ggdGhlIFBhcnF1ZXQgZm9ybWF0IHNwZWNpZmljYXRpb24uXG4gIC0gVW5zdXBwb3J0ZWQgY29tcHJlc3Npb24uYFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghZXJyb3IpIHtcbiAgICAgIGVycm9yID0gZXJyb3JEYXRhIGFzIEVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGF3YWl0IGMuY2xvc2UoKTtcblxuICByZXR1cm4gZXJyb3I7XG59XG5cbi8qKlxuICogU2FuaXRpemVzIGEgZmlsZSBuYW1lIHRvIGJlIGEgdmFsaWQgRHVja0RCIHRhYmxlIG5hbWUuXG4gKiBAcGFyYW0gZmlsZU5hbWUgVGhlIGlucHV0IGZpbGUgbmFtZSB0byBiZSBzYW5pdGl6ZWQuXG4gKiBAcmV0dXJucyBBIHZhbGlkIER1Y2tEQiB0YWJsZSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2FuaXRpemVEdWNrREJUYWJsZU5hbWUoZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFJlcGxhY2UgaW52YWxpZCBjaGFyYWN0ZXJzIHdpdGggdW5kZXJzY29yZXNcbiAgbGV0IG5hbWUgPSBmaWxlTmFtZS5yZXBsYWNlKC9bXmEtekEtWjAtOV9dL2csICdfJyk7XG4gIC8vIEVuc3VyZSBpdCBkb2Vzbid0IHN0YXJ0IHdpdGggYSBkaWdpdFxuICBpZiAoL15cXGQvLnRlc3QobmFtZSkpIHtcbiAgICBuYW1lID0gYHRfJHtuYW1lfWA7XG4gIH1cbiAgcmV0dXJuIG5hbWUgfHwgJ2RlZmF1bHRfdGFibGUnO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXQSxJQUFBQSxLQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxXQUFBLEdBQUFGLE9BQUE7QUFFQSxJQUFBRyxVQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFBMEUsU0FBQUsseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFQLHdCQUFBTyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFHLEdBQUEsQ0FBQU4sQ0FBQSxVQUFBRyxDQUFBLENBQUFJLEdBQUEsQ0FBQVAsQ0FBQSxPQUFBUSxDQUFBLEtBQUFDLFNBQUEsVUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxDQUFBLElBQUFkLENBQUEsb0JBQUFjLENBQUEsT0FBQUMsY0FB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
|
|
@@ -88,13 +88,14 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
|
|
|
88
88
|
_context.next = 10;
|
|
89
89
|
return c.query(createTableSql);
|
|
90
90
|
case 10:
|
|
91
|
-
_context.next =
|
|
91
|
+
_context.next = 16;
|
|
92
92
|
break;
|
|
93
93
|
case 12:
|
|
94
94
|
_context.prev = 12;
|
|
95
95
|
_context.t0 = _context["catch"](1);
|
|
96
96
|
console.log('importRowData', _context.t0);
|
|
97
|
-
|
|
97
|
+
throw _context.t0;
|
|
98
|
+
case 16:
|
|
98
99
|
case "end":
|
|
99
100
|
return _context.stop();
|
|
100
101
|
}
|
|
@@ -123,18 +124,19 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
|
|
|
123
124
|
_context2.next = 8;
|
|
124
125
|
return c.query(createTableSql);
|
|
125
126
|
case 8:
|
|
126
|
-
_context2.next =
|
|
127
|
+
_context2.next = 14;
|
|
127
128
|
break;
|
|
128
129
|
case 10:
|
|
129
130
|
_context2.prev = 10;
|
|
130
131
|
_context2.t0 = _context2["catch"](1);
|
|
131
132
|
console.error('importGeoJsonData', _context2.t0);
|
|
132
|
-
|
|
133
|
+
throw _context2.t0;
|
|
134
|
+
case 14:
|
|
133
135
|
return _context2.abrupt("return", {
|
|
134
136
|
// _geojson column is created from geometry with keep_wkb flag and contains valid WKB data.
|
|
135
137
|
geoarrowMetadata: (0, _defineProperty2["default"])({}, KEPLER_GEOM_FROM_GEOJSON_COLUMN, _constants.GEOARROW_EXTENSIONS.WKB)
|
|
136
138
|
});
|
|
137
|
-
case
|
|
139
|
+
case 15:
|
|
138
140
|
case "end":
|
|
139
141
|
return _context2.stop();
|
|
140
142
|
}
|
|
@@ -171,7 +173,7 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
|
|
|
171
173
|
case 10:
|
|
172
174
|
// restore unsupported extensions that throw exceptions in DuckDb
|
|
173
175
|
(0, _duckdbTableUtils2.restoreUnsupportedExtensions)(arrowTable, adjustedMetadata);
|
|
174
|
-
_context3.next =
|
|
176
|
+
_context3.next = 17;
|
|
175
177
|
break;
|
|
176
178
|
case 13:
|
|
177
179
|
_context3.prev = 13;
|
|
@@ -179,13 +181,14 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
|
|
|
179
181
|
// Known issues:
|
|
180
182
|
// 1) Arrow Type with extension name: geoarrow.point and format: +w:2 is not currently supported in DuckDB.
|
|
181
183
|
console.error('importArrowData', _context3.t0);
|
|
182
|
-
|
|
184
|
+
throw _context3.t0;
|
|
185
|
+
case 17:
|
|
183
186
|
return _context3.abrupt("return", {
|
|
184
187
|
geoarrowMetadata: _objectSpread(_objectSpread({}, SUGGESTED_GEOM_COLUMNS), adjustedMetadata),
|
|
185
188
|
// use fields generated from the created arrow table
|
|
186
189
|
useNewFields: true
|
|
187
190
|
});
|
|
188
|
-
case
|
|
191
|
+
case 18:
|
|
189
192
|
case "end":
|
|
190
193
|
return _context3.stop();
|
|
191
194
|
}
|
|
@@ -205,7 +208,7 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
|
|
|
205
208
|
key: "createTableAndGetArrow",
|
|
206
209
|
value: (function () {
|
|
207
210
|
var _createTableAndGetArrow = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(data) {
|
|
208
|
-
var db, c, tableName, format, _data$rows, _data$rows2, _data$rows3, _data$cols, importDetails, fields, cols, _data$fields, _ref4, _ref4$geoarrowMetadat, geoarrowMetadata, _ref4$useNewFields, useNewFields, duckDbColumns, tableDuckDBTypes,
|
|
211
|
+
var db, c, tableName, format, _data$rows, _data$rows2, _data$rows3, _data$cols, importDetails, fields, cols, _data$fields, _ref4, _ref4$geoarrowMetadat, geoarrowMetadata, _ref4$useNewFields, useNewFields, duckDbColumns, tableDuckDBTypes, adjustedQuery, arrowResult;
|
|
209
212
|
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
210
213
|
while (1) switch (_context4.prev = _context4.next) {
|
|
211
214
|
case 0:
|
|
@@ -297,11 +300,10 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
|
|
|
297
300
|
case 38:
|
|
298
301
|
duckDbColumns = _context4.sent;
|
|
299
302
|
tableDuckDBTypes = (0, _duckdbTableUtils2.getDuckDBColumnTypesMap)(duckDbColumns);
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
_context4.next = 44;
|
|
303
|
+
adjustedQuery = (0, _duckdbTableUtils2.castDuckDBTypesForKepler)(tableName, duckDbColumns);
|
|
304
|
+
_context4.next = 43;
|
|
303
305
|
return c.query(adjustedQuery);
|
|
304
|
-
case
|
|
306
|
+
case 43:
|
|
305
307
|
arrowResult = _context4.sent;
|
|
306
308
|
// TODO if format is an arrow table then just use the original one, instead of the new table from the query?
|
|
307
309
|
|
|
@@ -314,10 +316,11 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
|
|
|
314
316
|
});
|
|
315
317
|
_context4.next = 53;
|
|
316
318
|
break;
|
|
317
|
-
case
|
|
318
|
-
_context4.prev =
|
|
319
|
+
case 49:
|
|
320
|
+
_context4.prev = 49;
|
|
319
321
|
_context4.t0 = _context4["catch"](34);
|
|
320
322
|
console.error('DuckDB table: createTableAndGetArrow', _context4.t0);
|
|
323
|
+
throw _context4.t0;
|
|
321
324
|
case 53:
|
|
322
325
|
_context4.next = 55;
|
|
323
326
|
return c.close();
|
|
@@ -330,7 +333,7 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
|
|
|
330
333
|
case "end":
|
|
331
334
|
return _context4.stop();
|
|
332
335
|
}
|
|
333
|
-
}, _callee4, this, [[34,
|
|
336
|
+
}, _callee4, this, [[34, 49]]);
|
|
334
337
|
}));
|
|
335
338
|
function createTableAndGetArrow(_x4) {
|
|
336
339
|
return _createTableAndGetArrow.apply(this, arguments);
|
|
@@ -474,4 +477,4 @@ var restoreGeoarrowMetadata = exports.restoreGeoarrowMetadata = function restore
|
|
|
474
477
|
}
|
|
475
478
|
});
|
|
476
479
|
};
|
|
477
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9jb25zdGFudHMiLCJfcHJvY2Vzc29ycyIsIl90YWJsZSIsIl91dGlscyIsIl9kYXRhUHJvY2Vzc29yIiwiX2R1Y2tkYlRhYmxlVXRpbHMiLCJfZHVja2RiVGFibGVVdGlsczIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YzIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJfc3VwZXJQcm9wR2V0IiwicCIsIl9nZXQyIiwiRFVDS0RCX0dFT01fQ09MVU1OIiwiRFVDS0RCX1dLQl9DT0xVTU4iLCJLRVBMRVJfR0VPTV9GUk9NX0dFT0pTT05fQ09MVU1OIiwiU1VHR0VTVEVEX0dFT01fQ09MVU1OUyIsIkdFT0FSUk9XX0VYVEVOU0lPTlMiLCJXS0IiLCJLZXBsZXJHbER1Y2tEYlRhYmxlIiwiZXhwb3J0cyIsIl9LZXBsZXJUYWJsZSIsInByb3BzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJfaW1wb3J0Um93RGF0YSIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiX3JlZiIsImRhdGEiLCJkYiIsImMiLCJmaWVsZHMiLCJyb3dzIiwicm93c0ZvckRiIiwiY29sdW1ucyIsImNyZWF0ZVRhYmxlU3FsIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsInJvdyIsIm5ld1JvdyIsImluZGV4IiwibmFtZSIsInJlZ2lzdGVyRmlsZVRleHQiLCJpZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZWR1Y2UiLCJhY2MiLCJmaWVsZCIsImNvbmNhdCIsImR1Y2tEQkNvbHVtblR5cGUiLCJsYWJlbCIsInF1ZXJ5IiwidDAiLCJjb25zb2xlIiwibG9nIiwic3RvcCIsImltcG9ydFJvd0RhdGEiLCJfeCIsIl9pbXBvcnRHZW9Kc29uRGF0YSIsIl9jYWxsZWUyIiwiX3JlZjIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJlcnJvciIsImFicnVwdCIsImdlb2Fycm93TWV0YWRhdGEiLCJpbXBvcnRHZW9Kc29uRGF0YSIsIl94MiIsIl9pbXBvcnRBcnJvd0RhdGEiLCJfY2FsbGVlMyIsIl9yZWYzIiwiYWRqdXN0ZWRNZXRhZGF0YSIsImFycm93VGFibGUiLCJzZXR1cFNxbCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsIlRhYmxlIiwicmVzdG9yZUFycm93VGFibGUiLCJjb2xzIiwiYXJyb3dTY2hlbWEiLCJyZW1vdmVVbnN1cHBvcnRlZEV4dGVuc2lvbnMiLCJpbnNlcnRBcnJvd1RhYmxlIiwicmVzdG9yZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyIsInVzZU5ld0ZpZWxkcyIsImltcG9ydEFycm93RGF0YSIsIl94MyIsIl9jcmVhdGVUYWJsZUFuZEdldEFycm93IiwiX2NhbGxlZTQiLCJ0YWJsZU5hbWUiLCJmb3JtYXQiLCJfZGF0YSRyb3dzIiwiX2RhdGEkcm93czIiLCJfZGF0YSRyb3dzMyIsIl9kYXRhJGNvbHMiLCJpbXBvcnREZXRhaWxzIiwiX2RhdGEkZmllbGRzIiwiX3JlZjQiLCJfcmVmNCRnZW9hcnJvd01ldGFkYXQiLCJfcmVmNCR1c2VOZXdGaWVsZHMiLCJkdWNrRGJDb2x1bW5zIiwidGFibGVEdWNrREJUeXBlcyIsImNvbHVtbnNUb0NvbnZlcnRUb1dLQiIsImFkanVzdGVkUXVlcnkiLCJhcnJvd1Jlc3VsdCIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiZGF0YWJhc2UiLCJzZW50IiwiY29ubmVjdCIsImRyb3BUYWJsZUlmRXhpc3RzIiwibWV0YWRhdGEiLCJfdHlwZW9mMiIsIkRBVEFTRVRfRk9STUFUUyIsInR5cGUiLCJnZW9qc29uIiwiVmVjdG9yIiwiZ2V0RHVja0RCQ29sdW1uVHlwZXMiLCJnZXREdWNrREJDb2x1bW5UeXBlc01hcCIsImdldEdlb21ldHJ5Q29sdW1ucyIsImNvbnN0cnVjdFNUX2FzV0tCUXVlcnkiLCJyZXN0b3JlR2VvYXJyb3dNZXRhZGF0YSIsImFycm93U2NoZW1hVG9GaWVsZHMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwibnVtQ29scyIsImdldENoaWxkQXQiLCJjb2wiLCJjbG9zZSIsImNyZWF0ZVRhYmxlQW5kR2V0QXJyb3ciLCJfeDQiLCJfaW1wb3J0RGF0YSIsIl9jYWxsZWU1IiwiX3JlZjUiLCJfeWllbGQkdGhpcyRjcmVhdGVUYWIiLCJfY2FsbGVlNSQiLCJfY29udGV4dDUiLCJEYXRhc2V0VHlwZSIsIlZFQ1RPUl9USUxFIiwiaW1wb3J0RGF0YSIsIl94NSIsIl91cGRhdGUiLCJfY2FsbGVlNiIsIl95aWVsZCR0aGlzJGNyZWF0ZVRhYjIiLCJfY2FsbGVlNiQiLCJfY29udGV4dDYiLCJ1cGRhdGUiLCJfeDYiLCJLZXBsZXJUYWJsZSIsImlucHV0Rm9ybWF0IiwicHJvY2Vzc29yIiwiaXNBcnJvd0RhdGEiLCJwcm9jZXNzQXJyb3dCYXRjaGVzIiwia2VwbGVyZ2wiLCJpc0tlcGxlckdsTWFwIiwicHJvY2Vzc0tlcGxlcmdsSlNPTmZvckR1Y2tEYiIsImlzUm93T2JqZWN0IiwicHJvY2Vzc0NzdlJvd09iamVjdCIsImlzR2VvSnNvbiIsInByb2Nlc3NHZW9qc29uIiwiZCIsInNjaGVtYSIsImYiLCJEYXRhVHlwZSIsImlzQmluYXJ5IiwiR0VPQVJST1dfTUVUQURBVEFfS0VZIiwiaXNHZW9BcnJvd1BvaW50IiwiUE9JTlQiLCJpc0dlb0Fycm93TGluZVN0cmluZyIsIkxJTkVTVFJJTkciLCJpc0dlb0Fycm93UG9seWdvbiIsIlBPTFlHT04iLCJpc0dlb0Fycm93TXVsdGlQb2ludCIsIk1VTFRJUE9JTlQiLCJpc0dlb0Fycm93TXVsdGlMaW5lU3RyaW5nIiwiTVVMVElMSU5FU1RSSU5HIiwiaXNHZW9BcnJvd011bHRpUG9seWdvbiIsIk1VTFRJUE9MWUdPTiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YWJsZS9kdWNrZGItdGFibGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcblxuaW1wb3J0IHtcbiAgRGF0YXNldFR5cGUsXG4gIERBVEFTRVRfRk9STUFUUyxcbiAgR0VPQVJST1dfRVhURU5TSU9OUyxcbiAgR0VPQVJST1dfTUVUQURBVEFfS0VZXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIGFycm93U2NoZW1hVG9GaWVsZHMsXG4gIGlzQXJyb3dEYXRhLFxuICBpc0dlb0pzb24sXG4gIGlzS2VwbGVyR2xNYXAsXG4gIGlzUm93T2JqZWN0LFxuICBwcm9jZXNzQXJyb3dCYXRjaGVzXG59IGZyb20gJ0BrZXBsZXIuZ2wvcHJvY2Vzc29ycyc7XG5pbXBvcnQge0tlcGxlclRhYmxlfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7RmllbGR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtnZXRBcHBsaWNhdGlvbkNvbmZpZywgRGF0YWJhc2VBZGFwdGVyLCBEYXRhYmFzZUNvbm5lY3Rpb259IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG5pbXBvcnQge1xuICBwcm9jZXNzQ3N2Um93T2JqZWN0LFxuICBwcm9jZXNzR2VvanNvbixcbiAgcHJvY2Vzc0tlcGxlcmdsSlNPTmZvckR1Y2tEYixcbiAgUHJvY2Vzc29yUmVzdWx0XG59IGZyb20gJy4uL3Byb2Nlc3NvcnMvZGF0YS1wcm9jZXNzb3InO1xuXG5pbXBvcnQge1xuICBpc0dlb0Fycm93UG9pbnQsXG4gIGlzR2VvQXJyb3dMaW5lU3RyaW5nLFxuICBpc0dlb0Fycm93UG9seWdvbixcbiAgaXNHZW9BcnJvd011bHRpUG9pbnQsXG4gIGlzR2VvQXJyb3dNdWx0aUxpbmVTdHJpbmcsXG4gIGlzR2VvQXJyb3dNdWx0aVBvbHlnb25cbn0gZnJvbSAnLi9kdWNrZGItdGFibGUtdXRpbHMnO1xuXG5pbXBvcnQge1xuICBjb25zdHJ1Y3RTVF9hc1dLQlF1ZXJ5LFxuICBkcm9wVGFibGVJZkV4aXN0cyxcbiAgZ2V0RHVja0RCQ29sdW1uVHlwZXMsXG4gIGdldER1Y2tEQkNvbHVtblR5cGVzTWFwLFxuICBnZXRHZW9tZXRyeUNvbHVtbnMsXG4gIHJlbW92ZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyxcbiAgcmVzdG9yZUFycm93VGFibGUsXG4gIHJlc3RvcmVVbnN1cHBvcnRlZEV4dGVuc2lvbnNcbn0gZnJvbSAnLi4vdGFibGUvZHVja2RiLXRhYmxlLXV0aWxzJztcblxuLy8gVE9ETyB1c2UgZmlsZXMgZnJvbSBkaXNrIG9yIHVybCBkaXJlY3RseSwgd2l0aG91dCBwYXJzaW5nIGJ5IGxvYWRlcnMgYW5kIHRoZW4gaW5nZWN0aW9uIGludG8gRGVja0RiXG5cbi8qKlxuICogRGVmYXVsdCBEdWNrRGIgZ2VvbWV0cnkgY29sdW1ucyBjcmVhdGVkIGJ5IFNUX1JFQURcbiAqL1xuY29uc3QgRFVDS0RCX0dFT01fQ09MVU1OID0gJ2dlb20nO1xuY29uc3QgRFVDS0RCX1dLQl9DT0xVTU4gPSAnd2tiX2dlb21ldHJ5JztcblxuLyoqXG4gRGVmYXVsdCBjb2x1bW4gbmFtZSBmb3IgcHJvY2Vzc2VkIGdlb2pzb24gaW4gS2VwbGVyLlxuIFVzZSB0aGlzIG5hbWUgdG8gcmVuYW1lIGRlZmF1bHQgJ2dlb20nIGNvbHVtbiBmcm9tIER1Y2tEYlxuIGluIG9yZGVyIHRvIHN1cHBvcnQgS2VwbGVyIG1hcHMgc2F2ZWQgYmVmb3JlIGludHJvZHVjdGlvbiBvZiBEdWNrRGIgcGx1Z2luLlxuICovXG5jb25zdCBLRVBMRVJfR0VPTV9GUk9NX0dFT0pTT05fQ09MVU1OID0gJ19nZW9qc29uJztcblxuLyoqXG4gKiBOYW1lcyBvZiBjb2x1bW5zIHRoYXQgbW9zdCBsaWtlbHkgY29udGFpbiBiaW5hcnkgd2tiIGdlb21ldHJ5XG4gKi9cbmNvbnN0IFNVR0dFU1RFRF9HRU9NX0NPTFVNTlMgPSB7XG4gIFtLRVBMRVJfR0VPTV9GUk9NX0dFT0pTT05fQ09MVU1OXTogR0VPQVJST1dfRVhURU5TSU9OUy5XS0IsXG4gIFtEVUNLREJfR0VPTV9DT0xVTU5dOiBHRU9BUlJPV19FWFRFTlNJT05TLldLQixcbiAgZ2VvbWV0cnk6IEdFT0FSUk9XX0VYVEVOU0lPTlMuV0tCXG59O1xuXG50eXBlIEltcG9ydERhdGFUb0R1Y2tQcm9wcyA9IHtcbiAgZGF0YTogUHJvY2Vzc29yUmVzdWx0ICYge2Fycm93U2NoZW1hOiBhcnJvdy5TY2hlbWF9O1xuICBkYjogRGF0YWJhc2VBZGFwdGVyO1xuICBjOiBEYXRhYmFzZUNvbm5lY3Rpb247XG59O1xuXG50eXBlIEltcG9ydERhdGFUb0R1Y2tSZXN1bHQgPSB7XG4gIC8vIER1Y2tEYiBkcm9wcyBnZW9hcnJvdyBtZXRhZGF0YSwgc28gdHJ5IHRvIHByZXNlcnZlIGFuZCB0aGVuIHJlc3RvcmUgdGhlIGV4dGVuc2lvbiBuYW1lXG4gIGdlb2Fycm93TWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvLyBVc2UgZmllbGRzIGZyb20gYXJyb3cgdGFibGUgZXZlbiBpZiBmaWVsZHMgYXJlIHByb3ZpZGVkXG4gIHVzZU5ld0ZpZWxkcz86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY2xhc3MgS2VwbGVyR2xEdWNrRGJUYWJsZSBleHRlbmRzIEtlcGxlclRhYmxlIHtcbiAgZGVjbGFyZSByZWFkb25seSBpZDogc3RyaW5nO1xuICBkZWNsYXJlIGxhYmVsOiBzdHJpbmc7XG4gIGRlY2xhcmUgdHlwZTogc3RyaW5nO1xuICBkZWNsYXJlIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICB9XG5cbiAgYXN5bmMgaW1wb3J0Um93RGF0YSh7ZGF0YSwgZGIsIGN9OiBJbXBvcnREYXRhVG9EdWNrUHJvcHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge2ZpZWxkcywgcm93c30gPSBkYXRhO1xuXG4gICAgICAvLyBEQVRBU0VUX0ZPUk1BVFMua2VwbGVyZ2wgbG9hZHMgZGF0YSBhcyBhbnlbXVtdIGluc3RlYWQgb2YgW3t9XVxuICAgICAgLy8gVE9ETyBwb3RlbnRpYWwgbWVtb3J5IHVzYWdlIGV4cGxvc2lvbjogb3JpZ2luYWwgZGF0YSwgbmV3IG9iamVjdCBhbmQgdGhlbiBEdWNrRGIgdGFibGVcbiAgICAgIGNvbnN0IHJvd3NGb3JEYiA9IEFycmF5LmlzQXJyYXkocm93c1swXSlcbiAgICAgICAgPyByb3dzLm1hcChyb3cgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3Um93ID0ge307XG4gICAgICAgICAgICByb3cuZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIG5ld1Jvd1tmaWVsZHNbaW5kZXhdLm5hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBuZXdSb3c7XG4gICAgICAgICAgfSlcbiAgICAgICAgOiByb3dzO1xuXG4gICAgICBhd2FpdCBkYi5yZWdpc3RlckZpbGVUZXh0KHRoaXMuaWQsIEpTT04uc3RyaW5naWZ5KHJvd3NGb3JEYikpO1xuXG4gICAgICBjb25zdCBjb2x1bW5zID0gZmllbGRzLnJlZHVjZSgoYWNjLCBmaWVsZCwgaW5kZXgpID0+IHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPIGV4dGVuZCBmaWVsZHMgdG8gY29udGFpbiBkdWNrREJDb2x1bW5UeXBlXG4gICAgICAgIHJldHVybiBgJHthY2N9JHtpbmRleCA+IDAgPyAnLCcgOiAnJ30gJyR7ZmllbGQubmFtZX0nOiAnJHtmaWVsZC5kdWNrREJDb2x1bW5UeXBlfSdgO1xuICAgICAgfSwgJycpO1xuXG4gICAgICBjb25zdCBjcmVhdGVUYWJsZVNxbCA9IGBcbiAgICAgICAgQ1JFQVRFIFRBQkxFICcke3RoaXMubGFiZWx9JyBBU1xuICAgICAgICBTRUxFQ1QgKlxuICAgICAgICBGUk9NIHJlYWRfanNvbignJHt0aGlzLmlkfScsXG4gICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMgPSB7JHtjb2x1bW5zfX0pO1xuICAgICAgYDtcbiAgICAgIGF3YWl0IGMucXVlcnkoY3JlYXRlVGFibGVTcWwpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZygnaW1wb3J0Um93RGF0YScsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbXBvcnRHZW9Kc29uRGF0YSh7ZGF0YSwgZGIsIGN9OiBJbXBvcnREYXRhVG9EdWNrUHJvcHMpOiBQcm9taXNlPEltcG9ydERhdGFUb0R1Y2tSZXN1bHQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge3Jvd3N9ID0gZGF0YTtcbiAgICAgIGF3YWl0IGRiLnJlZ2lzdGVyRmlsZVRleHQodGhpcy5pZCwgSlNPTi5zdHJpbmdpZnkocm93cykpO1xuXG4gICAgICBjb25zdCBjcmVhdGVUYWJsZVNxbCA9IGBcbiAgICAgICAgaW5zdGFsbCBzcGF0aWFsO1xuICAgICAgICBsb2FkIHNwYXRpYWw7XG4gICAgICAgIENSRUFURSBUQUJMRSAnJHt0aGlzLmxhYmVsfScgQVMgXG4gICAgICAgIFNFTEVDVCAqXG4gICAgICAgIEZST00gU1RfUkVBRCgnJHt0aGlzLmlkfScsIGtlZXBfd2tiID0gVFJVRSk7XG4gICAgICAgIEFMVEVSIFRBQkxFICcke3RoaXMubGFiZWx9JyBSRU5BTUUgJyR7RFVDS0RCX1dLQl9DT0xVTU59JyBUTyAnJHtLRVBMRVJfR0VPTV9GUk9NX0dFT0pTT05fQ09MVU1OfSc7XG4gICAgICBgO1xuICAgICAgYXdhaXQgYy5xdWVyeShjcmVhdGVUYWJsZVNxbCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2ltcG9ydEdlb0pzb25EYXRhJywgZXJyb3IpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAvLyBfZ2VvanNvbiBjb2x1bW4gaXMgY3JlYXRlZCBmcm9tIGdlb21ldHJ5IHdpdGgga2VlcF93a2IgZmxhZyBhbmQgY29udGFpbnMgdmFsaWQgV0tCIGRhdGEuXG4gICAgICBnZW9hcnJvd01ldGFkYXRhOiB7W0tFUExFUl9HRU9NX0ZST01fR0VPSlNPTl9DT0xVTU5dOiBHRU9BUlJPV19FWFRFTlNJT05TLldLQn1cbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgaW1wb3J0QXJyb3dEYXRhKHtkYXRhLCBjfTogSW1wb3J0RGF0YVRvRHVja1Byb3BzKTogUHJvbWlzZTxJbXBvcnREYXRhVG9EdWNrUmVzdWx0PiB7XG4gICAgbGV0IGFkanVzdGVkTWV0YWRhdGEgPSB7fTtcbiAgICB0cnkge1xuICAgICAgLy8gMSkgZGF0YS5yb3dzIGNvbnRhaW5zIGFuIGFycm93IHRhYmxlIGNyZWF0ZWQgYnkgQWRkIHRvIE1hcCBkYXRhIGZyb20gRHVja0RiIHF1ZXJ5LlxuICAgICAgLy8gMikgYXJyb3cgdGFibGUgaXMgaW4gY29scyAmIGZpZWxkcyB3aGVuIGEgZmlsZSBpcyBkcmFnZ2VkICYgZHJvcHBlZCBpbnRvIEFkZCBEYXRhIFRvIE1hcCBkaWFsb2cuXG4gICAgICBjb25zdCBhcnJvd1RhYmxlID1cbiAgICAgICAgZGF0YS5yb3dzIGluc3RhbmNlb2YgYXJyb3cuVGFibGVcbiAgICAgICAgICA/IGRhdGEucm93c1xuICAgICAgICAgIDogcmVzdG9yZUFycm93VGFibGUoZGF0YS5jb2xzIHx8IFtdLCBkYXRhLmZpZWxkcywgZGF0YS5hcnJvd1NjaGVtYSk7XG5cbiAgICAgIC8vIHJlbW92ZSB1bnN1cHBvcnRlZCBleHRlbnNpb25zIGZyb20gYW4gYXJyb3cgdGFibGUgdGhhdCB0aHJvdyBleGNlcHRpb25zIGluIER1Y2tEQi5cbiAgICAgIGFkanVzdGVkTWV0YWRhdGEgPSByZW1vdmVVbnN1cHBvcnRlZEV4dGVuc2lvbnMoYXJyb3dUYWJsZSk7XG5cbiAgICAgIGNvbnN0IHNldHVwU3FsID0gYFxuICAgICAgICBpbnN0YWxsIHNwYXRpYWw7XG4gICAgICAgIGxvYWQgc3BhdGlhbDtcbiAgICAgIGA7XG4gICAgICBhd2FpdCBjLnF1ZXJ5KHNldHVwU3FsKTtcbiAgICAgIGF3YWl0IGMuaW5zZXJ0QXJyb3dUYWJsZShhcnJvd1RhYmxlLCB7bmFtZTogdGhpcy5sYWJlbH0pO1xuXG4gICAgICAvLyByZXN0b3JlIHVuc3VwcG9ydGVkIGV4dGVuc2lvbnMgdGhhdCB0aHJvdyBleGNlcHRpb25zIGluIER1Y2tEYlxuICAgICAgcmVzdG9yZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyhhcnJvd1RhYmxlLCBhZGp1c3RlZE1ldGFkYXRhKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gS25vd24gaXNzdWVzOlxuICAgICAgLy8gMSkgQXJyb3cgVHlwZSB3aXRoIGV4dGVuc2lvbiBuYW1lOiBnZW9hcnJvdy5wb2ludCBhbmQgZm9ybWF0OiArdzoyIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGluIER1Y2tEQi5cbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2ltcG9ydEFycm93RGF0YScsIGVycm9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2VvYXJyb3dNZXRhZGF0YTogey4uLlNVR0dFU1RFRF9HRU9NX0NPTFVNTlMsIC4uLmFkanVzdGVkTWV0YWRhdGF9LFxuICAgICAgLy8gdXNlIGZpZWxkcyBnZW5lcmF0ZWQgZnJvbSB0aGUgY3JlYXRlZCBhcnJvdyB0YWJsZVxuICAgICAgdXNlTmV3RmllbGRzOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdGFibGUgZnJvbSBkYXRhLCByZXR1cm5zIGFuIGFycm93IHRhYmxlIHdpdGggdGhlIGRhdGFcbiAgICogQHBhcmFtIGRhdGFcbiAgICogQHJldHVybnMge1Byb21pc2U8e2ZpZWxkczogRmllbGRbXSwgY29sczogYW55W119Pn1cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBjcmVhdGVUYWJsZUFuZEdldEFycm93KGRhdGEpOiBQcm9taXNlPHtmaWVsZHM6IGFueVtdOyBjb2xzOiBhcnJvdy5WZWN0b3JbXX0+IHtcbiAgICBjb25zdCBkYiA9IGF3YWl0IGdldEFwcGxpY2F0aW9uQ29uZmlnKCkuZGF0YWJhc2U7XG4gICAgaWYgKCFkYikge1xuICAgICAgY29uc29sZS5lcnJvcignVGhlIGRhdGFiYXNlIGlzIG5vdCBjb25maWd1cmVkIHByb3Blcmx5LicpO1xuICAgICAgcmV0dXJuIHtmaWVsZHM6IFtdLCBjb2xzOiBbXX07XG4gICAgfVxuICAgIGNvbnN0IGMgPSBhd2FpdCBkYi5jb25uZWN0KCk7XG5cbiAgICBjb25zdCB0YWJsZU5hbWUgPSB0aGlzLmxhYmVsO1xuICAgIGF3YWl0IGRyb3BUYWJsZUlmRXhpc3RzKGMsIHRhYmxlTmFtZSk7XG5cbiAgICBsZXQgZm9ybWF0ID0gdGhpcy5tZXRhZGF0YS5mb3JtYXQ7XG4gICAgaWYgKCFmb3JtYXQpIHtcbiAgICAgIC8vIGZvcm1hdCBpcyBtaXNzaW5nIHdoZW4gd2UgbG9hZCBLZXBsZXIuZ2wgZXhhbXBsZXNcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEucm93cz8uWzBdKSB8fCB0eXBlb2YgZGF0YS5yb3dzPy5bMF0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGZvcm1hdCA9IERBVEFTRVRfRk9STUFUUy5yb3c7XG4gICAgICB9IGVsc2UgaWYgKGRhdGEucm93cz8udHlwZSA9PT0gJ0ZlYXR1cmVDb2xsZWN0aW9uJykge1xuICAgICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMuZ2VvanNvbjtcbiAgICAgIH0gZWxzZSBpZiAoZGF0YS5jb2xzPy5bMF0gaW5zdGFuY2VvZiBhcnJvdy5WZWN0b3IpIHtcbiAgICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLmFycm93O1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBpbXBvcnREZXRhaWxzOiBJbXBvcnREYXRhVG9EdWNrUmVzdWx0IHwgdW5kZWZpbmVkO1xuICAgIGlmIChmb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5yb3cpIHtcbiAgICAgIGF3YWl0IHRoaXMuaW1wb3J0Um93RGF0YSh7ZGF0YSwgZGIsIGN9KTtcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmdlb2pzb24pIHtcbiAgICAgIGltcG9ydERldGFpbHMgPSBhd2FpdCB0aGlzLmltcG9ydEdlb0pzb25EYXRhKHtkYXRhLCBkYiwgY30pO1xuICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSBEQVRBU0VUX0ZPUk1BVFMuYXJyb3cpIHtcbiAgICAgIGltcG9ydERldGFpbHMgPSBhd2FpdCB0aGlzLmltcG9ydEFycm93RGF0YSh7ZGF0YSwgZGIsIGN9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignVW5yZWNvZ25pemVkIGZvcm1hdCcsIGZvcm1hdCk7XG4gICAgfVxuXG4gICAgbGV0IGZpZWxkczogRmllbGRbXSA9IFtdO1xuICAgIGxldCBjb2xzOiBhcnJvdy5WZWN0b3JbXSA9IFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHtnZW9hcnJvd01ldGFkYXRhID0ge30sIHVzZU5ld0ZpZWxkcyA9IGZhbHNlfSA9IGltcG9ydERldGFpbHMgfHwge307XG5cbiAgICAgIGNvbnN0IGR1Y2tEYkNvbHVtbnMgPSBhd2FpdCBnZXREdWNrREJDb2x1bW5UeXBlcyhjLCB0YWJsZU5hbWUpO1xuICAgICAgY29uc3QgdGFibGVEdWNrREJUeXBlcyA9IGdldER1Y2tEQkNvbHVtblR5cGVzTWFwKGR1Y2tEYkNvbHVtbnMpO1xuICAgICAgY29uc3QgY29sdW1uc1RvQ29udmVydFRvV0tCID0gZ2V0R2VvbWV0cnlDb2x1bW5zKGR1Y2tEYkNvbHVtbnMpO1xuICAgICAgY29uc3QgYWRqdXN0ZWRRdWVyeSA9IGNvbnN0cnVjdFNUX2FzV0tCUXVlcnkodGFibGVOYW1lLCBjb2x1bW5zVG9Db252ZXJ0VG9XS0IpO1xuICAgICAgY29uc3QgYXJyb3dSZXN1bHQgPSBhd2FpdCBjLnF1ZXJ5KGFkanVzdGVkUXVlcnkpO1xuXG4gICAgICAvLyBUT0RPIGlmIGZvcm1hdCBpcyBhbiBhcnJvdyB0YWJsZSB0aGVuIGp1c3QgdXNlIHRoZSBvcmlnaW5hbCBvbmUsIGluc3RlYWQgb2YgdGhlIG5ldyB0YWJsZSBmcm9tIHRoZSBxdWVyeT9cblxuICAgICAgcmVzdG9yZUdlb2Fycm93TWV0YWRhdGEoYXJyb3dSZXN1bHQsIGdlb2Fycm93TWV0YWRhdGEpO1xuXG4gICAgICBmaWVsZHMgPSB1c2VOZXdGaWVsZHNcbiAgICAgICAgPyBhcnJvd1NjaGVtYVRvRmllbGRzKGFycm93UmVzdWx0LCB0YWJsZUR1Y2tEQlR5cGVzKVxuICAgICAgICA6IGRhdGEuZmllbGRzID8/IGFycm93U2NoZW1hVG9GaWVsZHMoYXJyb3dSZXN1bHQsIHRhYmxlRHVja0RCVHlwZXMpO1xuICAgICAgY29scyA9IFsuLi5BcnJheShhcnJvd1Jlc3VsdC5udW1Db2xzKS5rZXlzKCldXG4gICAgICAgIC5tYXAoaSA9PiBhcnJvd1Jlc3VsdC5nZXRDaGlsZEF0KGkpKVxuICAgICAgICAuZmlsdGVyKGNvbCA9PiBjb2wpIGFzIGFycm93LlZlY3RvcltdO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdEdWNrREIgdGFibGU6IGNyZWF0ZVRhYmxlQW5kR2V0QXJyb3cnLCBlcnJvcik7XG4gICAgfVxuXG4gICAgYXdhaXQgYy5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIHtmaWVsZHMsIGNvbHN9O1xuICB9XG5cbiAgYXN5bmMgaW1wb3J0RGF0YSh7ZGF0YX06IHtkYXRhOiBQcm9jZXNzb3JSZXN1bHR9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gVmVjdG9yVGlsZSBpcyBhIHNwZWNpYWwgY2FzZSwgaWdub3JlIGZvciBub3dcbiAgICBpZiAodGhpcy50eXBlID09PSBEYXRhc2V0VHlwZS5WRUNUT1JfVElMRSkge1xuICAgICAgc3VwZXIuaW1wb3J0RGF0YSh7ZGF0YTogey4uLmRhdGEsIHJvd3M6IFtdfX0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHtmaWVsZHMsIGNvbHN9ID0gYXdhaXQgdGhpcy5jcmVhdGVUYWJsZUFuZEdldEFycm93KGRhdGEpO1xuXG4gICAgc3VwZXIuaW1wb3J0RGF0YSh7ZGF0YToge2ZpZWxkcywgY29scywgcm93czogW119fSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGUoZGF0YSkge1xuICAgIC8vIFZlY3RvclRpbGUgaXMgYSBzcGVjaWFsIGNhc2UsIGlnbm9yZSBmb3Igbm93XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gRGF0YXNldFR5cGUuVkVDVE9SX1RJTEUpIHtcbiAgICAgIHN1cGVyLmltcG9ydERhdGEoe2RhdGF9KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNvbnN0IHtjb2xzfSA9IGF3YWl0IHRoaXMuY3JlYXRlVGFibGVBbmRHZXRBcnJvdyhkYXRhKTtcblxuICAgIHJldHVybiBzdXBlci51cGRhdGUoe2NvbHMsIHJvd3M6IFtdLCBmaWVsZHM6IFtdfSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0RmlsZVByb2Nlc3NvciA9IGZ1bmN0aW9uIChkYXRhOiBhbnksIGlucHV0Rm9ybWF0Pzogc3RyaW5nKSB7XG4gICAgbGV0IHByb2Nlc3NvcjtcbiAgICBsZXQgZm9ybWF0O1xuICAgIGlmIChpbnB1dEZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmFycm93IHx8IGlzQXJyb3dEYXRhKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMuYXJyb3c7XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzQXJyb3dCYXRjaGVzO1xuICAgIH0gZWxzZSBpZiAoaW5wdXRGb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5rZXBsZXJnbCB8fCBpc0tlcGxlckdsTWFwKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMua2VwbGVyZ2w7XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzS2VwbGVyZ2xKU09OZm9yRHVja0RiO1xuICAgIH0gZWxzZSBpZiAoaW5wdXRGb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5yb3cgfHwgaXNSb3dPYmplY3QoZGF0YSkpIHtcbiAgICAgIC8vIGNzdiBmaWxlIGdvZXMgaGVyZVxuICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLnJvdztcbiAgICAgIHByb2Nlc3NvciA9IHByb2Nlc3NDc3ZSb3dPYmplY3Q7IC8vIGRpcmVjdGx5IGltcG9ydCBqc29uIG9iamVjdCBpbnRvIGR1Y2tkYi13YXNtXG4gICAgfSBlbHNlIGlmIChpbnB1dEZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmdlb2pzb24gfHwgaXNHZW9Kc29uKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMuZ2VvanNvbjtcbiAgICAgIHByb2Nlc3NvciA9IHByb2Nlc3NHZW9qc29uO1xuICAgIH1cbiAgICByZXR1cm4ge3Byb2Nlc3NvciwgZm9ybWF0fTtcbiAgfTtcblxuICBzdGF0aWMgZ2V0SW5wdXREYXRhVmFsaWRhdG9yID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIEluIER1Y2tEQiBtb2RlIGRhdGEgaXMgdmFsaWRhdGVkIGxhdGVyIGR1cmluZyBpbXBvcnQuXG4gICAgcmV0dXJuIGQgPT4gZDtcbiAgfTtcbn1cblxuLyoqXG4gKiBUcnkgdG8gcmVzdG9yZSBnZW9hcnJvdyBtZXRhZGF0YSBsb3N0IGR1cmluZyBEdWNrRGIgaW5nZXN0aW9uLlxuICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gY2FuIGdlbmVyYXRlIHdyb25nIGdlb21ldHJ5IHR5cGVzLlxuICogQHBhcmFtIGFycm93VGFibGUgQXJyb3cgdGFibGUgdG8gdXBkYXRlLlxuICogQHBhcmFtIGdlb2Fycm93TWV0YWRhdGEgQSBtYXAgd2l0aCBmaWVsZCBuYW1lcyB0aGF0IHVzdWFsbHkgdXNlZCB0byBzdG9yZSBnZW9hcnJvdyBnZW9tZXRyeS5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlc3RvcmVHZW9hcnJvd01ldGFkYXRhID0gKFxuICBhcnJvd1RhYmxlOiBhcnJvdy5UYWJsZSxcbiAgZ2VvYXJyb3dNZXRhZGF0YTogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuKSA9PiB7XG4gIGFycm93VGFibGUuc2NoZW1hLmZpZWxkcy5mb3JFYWNoKGYgPT4ge1xuICAgIGlmIChhcnJvdy5EYXRhVHlwZS5pc0JpbmFyeShmLnR5cGUpICYmIGdlb2Fycm93TWV0YWRhdGFbZi5uYW1lXSkge1xuICAgICAgZi5tZXRhZGF0YS5zZXQoR0VPQVJST1dfTUVUQURBVEFfS0VZLCBnZW9hcnJvd01ldGFkYXRhW2YubmFtZV0pO1xuICAgIH0gZWxzZSBpZiAoaXNHZW9BcnJvd1BvaW50KGYudHlwZSkpIHtcbiAgICAgIGYubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgR0VPQVJST1dfRVhURU5TSU9OUy5QT0lOVCk7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93TGluZVN0cmluZyhmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuTElORVNUUklORyk7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93UG9seWdvbihmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuUE9MWUdPTik7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93TXVsdGlQb2ludChmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuTVVMVElQT0lOVCk7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93TXVsdGlMaW5lU3RyaW5nKGYudHlwZSkpIHtcbiAgICAgIGYubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgR0VPQVJST1dfRVhURU5TSU9OUy5NVUxUSUxJTkVTVFJJTkcpO1xuICAgIH0gZWxzZSBpZiAoaXNHZW9BcnJvd011bHRpUG9seWdvbihmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuTVVMVElQT0xZR09OKTtcbiAgICB9XG4gIH0pO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQU1BLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQVFBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLGNBQUEsR0FBQUwsT0FBQTtBQU9BLElBQUFNLGlCQUFBLEdBQUFOLE9BQUE7QUFTQSxJQUFBTyxr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
|
|
480
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9jb25zdGFudHMiLCJfcHJvY2Vzc29ycyIsIl90YWJsZSIsIl91dGlscyIsIl9kYXRhUHJvY2Vzc29yIiwiX2R1Y2tkYlRhYmxlVXRpbHMiLCJfZHVja2RiVGFibGVVdGlsczIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YzIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJfc3VwZXJQcm9wR2V0IiwicCIsIl9nZXQyIiwiRFVDS0RCX0dFT01fQ09MVU1OIiwiRFVDS0RCX1dLQl9DT0xVTU4iLCJLRVBMRVJfR0VPTV9GUk9NX0dFT0pTT05fQ09MVU1OIiwiU1VHR0VTVEVEX0dFT01fQ09MVU1OUyIsIkdFT0FSUk9XX0VYVEVOU0lPTlMiLCJXS0IiLCJLZXBsZXJHbER1Y2tEYlRhYmxlIiwiZXhwb3J0cyIsIl9LZXBsZXJUYWJsZSIsInByb3BzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJfaW1wb3J0Um93RGF0YSIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiX3JlZiIsImRhdGEiLCJkYiIsImMiLCJmaWVsZHMiLCJyb3dzIiwicm93c0ZvckRiIiwiY29sdW1ucyIsImNyZWF0ZVRhYmxlU3FsIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsInJvdyIsIm5ld1JvdyIsImluZGV4IiwibmFtZSIsInJlZ2lzdGVyRmlsZVRleHQiLCJpZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZWR1Y2UiLCJhY2MiLCJmaWVsZCIsImNvbmNhdCIsImR1Y2tEQkNvbHVtblR5cGUiLCJsYWJlbCIsInF1ZXJ5IiwidDAiLCJjb25zb2xlIiwibG9nIiwic3RvcCIsImltcG9ydFJvd0RhdGEiLCJfeCIsIl9pbXBvcnRHZW9Kc29uRGF0YSIsIl9jYWxsZWUyIiwiX3JlZjIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJlcnJvciIsImFicnVwdCIsImdlb2Fycm93TWV0YWRhdGEiLCJpbXBvcnRHZW9Kc29uRGF0YSIsIl94MiIsIl9pbXBvcnRBcnJvd0RhdGEiLCJfY2FsbGVlMyIsIl9yZWYzIiwiYWRqdXN0ZWRNZXRhZGF0YSIsImFycm93VGFibGUiLCJzZXR1cFNxbCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsIlRhYmxlIiwicmVzdG9yZUFycm93VGFibGUiLCJjb2xzIiwiYXJyb3dTY2hlbWEiLCJyZW1vdmVVbnN1cHBvcnRlZEV4dGVuc2lvbnMiLCJpbnNlcnRBcnJvd1RhYmxlIiwicmVzdG9yZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyIsInVzZU5ld0ZpZWxkcyIsImltcG9ydEFycm93RGF0YSIsIl94MyIsIl9jcmVhdGVUYWJsZUFuZEdldEFycm93IiwiX2NhbGxlZTQiLCJ0YWJsZU5hbWUiLCJmb3JtYXQiLCJfZGF0YSRyb3dzIiwiX2RhdGEkcm93czIiLCJfZGF0YSRyb3dzMyIsIl9kYXRhJGNvbHMiLCJpbXBvcnREZXRhaWxzIiwiX2RhdGEkZmllbGRzIiwiX3JlZjQiLCJfcmVmNCRnZW9hcnJvd01ldGFkYXQiLCJfcmVmNCR1c2VOZXdGaWVsZHMiLCJkdWNrRGJDb2x1bW5zIiwidGFibGVEdWNrREJUeXBlcyIsImFkanVzdGVkUXVlcnkiLCJhcnJvd1Jlc3VsdCIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiZGF0YWJhc2UiLCJzZW50IiwiY29ubmVjdCIsImRyb3BUYWJsZUlmRXhpc3RzIiwibWV0YWRhdGEiLCJfdHlwZW9mMiIsIkRBVEFTRVRfRk9STUFUUyIsInR5cGUiLCJnZW9qc29uIiwiVmVjdG9yIiwiZ2V0RHVja0RCQ29sdW1uVHlwZXMiLCJnZXREdWNrREJDb2x1bW5UeXBlc01hcCIsImNhc3REdWNrREJUeXBlc0ZvcktlcGxlciIsInJlc3RvcmVHZW9hcnJvd01ldGFkYXRhIiwiYXJyb3dTY2hlbWFUb0ZpZWxkcyIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJudW1Db2xzIiwiZ2V0Q2hpbGRBdCIsImNvbCIsImNsb3NlIiwiY3JlYXRlVGFibGVBbmRHZXRBcnJvdyIsIl94NCIsIl9pbXBvcnREYXRhIiwiX2NhbGxlZTUiLCJfcmVmNSIsIl95aWVsZCR0aGlzJGNyZWF0ZVRhYiIsIl9jYWxsZWU1JCIsIl9jb250ZXh0NSIsIkRhdGFzZXRUeXBlIiwiVkVDVE9SX1RJTEUiLCJpbXBvcnREYXRhIiwiX3g1IiwiX3VwZGF0ZSIsIl9jYWxsZWU2IiwiX3lpZWxkJHRoaXMkY3JlYXRlVGFiMiIsIl9jYWxsZWU2JCIsIl9jb250ZXh0NiIsInVwZGF0ZSIsIl94NiIsIktlcGxlclRhYmxlIiwiaW5wdXRGb3JtYXQiLCJwcm9jZXNzb3IiLCJpc0Fycm93RGF0YSIsInByb2Nlc3NBcnJvd0JhdGNoZXMiLCJrZXBsZXJnbCIsImlzS2VwbGVyR2xNYXAiLCJwcm9jZXNzS2VwbGVyZ2xKU09OZm9yRHVja0RiIiwiaXNSb3dPYmplY3QiLCJwcm9jZXNzQ3N2Um93T2JqZWN0IiwiaXNHZW9Kc29uIiwicHJvY2Vzc0dlb2pzb24iLCJkIiwic2NoZW1hIiwiZiIsIkRhdGFUeXBlIiwiaXNCaW5hcnkiLCJHRU9BUlJPV19NRVRBREFUQV9LRVkiLCJpc0dlb0Fycm93UG9pbnQiLCJQT0lOVCIsImlzR2VvQXJyb3dMaW5lU3RyaW5nIiwiTElORVNUUklORyIsImlzR2VvQXJyb3dQb2x5Z29uIiwiUE9MWUdPTiIsImlzR2VvQXJyb3dNdWx0aVBvaW50IiwiTVVMVElQT0lOVCIsImlzR2VvQXJyb3dNdWx0aUxpbmVTdHJpbmciLCJNVUxUSUxJTkVTVFJJTkciLCJpc0dlb0Fycm93TXVsdGlQb2x5Z29uIiwiTVVMVElQT0xZR09OIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RhYmxlL2R1Y2tkYi10YWJsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgKiBhcyBhcnJvdyBmcm9tICdhcGFjaGUtYXJyb3cnO1xuXG5pbXBvcnQge1xuICBEYXRhc2V0VHlwZSxcbiAgREFUQVNFVF9GT1JNQVRTLFxuICBHRU9BUlJPV19FWFRFTlNJT05TLFxuICBHRU9BUlJPV19NRVRBREFUQV9LRVlcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgYXJyb3dTY2hlbWFUb0ZpZWxkcyxcbiAgaXNBcnJvd0RhdGEsXG4gIGlzR2VvSnNvbixcbiAgaXNLZXBsZXJHbE1hcCxcbiAgaXNSb3dPYmplY3QsXG4gIHByb2Nlc3NBcnJvd0JhdGNoZXNcbn0gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcbmltcG9ydCB7S2VwbGVyVGFibGV9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtGaWVsZH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge2dldEFwcGxpY2F0aW9uQ29uZmlnLCBEYXRhYmFzZUFkYXB0ZXIsIERhdGFiYXNlQ29ubmVjdGlvbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmltcG9ydCB7XG4gIHByb2Nlc3NDc3ZSb3dPYmplY3QsXG4gIHByb2Nlc3NHZW9qc29uLFxuICBwcm9jZXNzS2VwbGVyZ2xKU09OZm9yRHVja0RiLFxuICBQcm9jZXNzb3JSZXN1bHRcbn0gZnJvbSAnLi4vcHJvY2Vzc29ycy9kYXRhLXByb2Nlc3Nvcic7XG5cbmltcG9ydCB7XG4gIGlzR2VvQXJyb3dQb2ludCxcbiAgaXNHZW9BcnJvd0xpbmVTdHJpbmcsXG4gIGlzR2VvQXJyb3dQb2x5Z29uLFxuICBpc0dlb0Fycm93TXVsdGlQb2ludCxcbiAgaXNHZW9BcnJvd011bHRpTGluZVN0cmluZyxcbiAgaXNHZW9BcnJvd011bHRpUG9seWdvblxufSBmcm9tICcuL2R1Y2tkYi10YWJsZS11dGlscyc7XG5cbmltcG9ydCB7XG4gIGNhc3REdWNrREJUeXBlc0ZvcktlcGxlcixcbiAgZHJvcFRhYmxlSWZFeGlzdHMsXG4gIGdldER1Y2tEQkNvbHVtblR5cGVzLFxuICBnZXREdWNrREJDb2x1bW5UeXBlc01hcCxcbiAgcmVtb3ZlVW5zdXBwb3J0ZWRFeHRlbnNpb25zLFxuICByZXN0b3JlQXJyb3dUYWJsZSxcbiAgcmVzdG9yZVVuc3VwcG9ydGVkRXh0ZW5zaW9uc1xufSBmcm9tICcuLi90YWJsZS9kdWNrZGItdGFibGUtdXRpbHMnO1xuXG4vLyBUT0RPIHVzZSBmaWxlcyBmcm9tIGRpc2sgb3IgdXJsIGRpcmVjdGx5LCB3aXRob3V0IHBhcnNpbmcgYnkgbG9hZGVycyBhbmQgdGhlbiBpbmdlY3Rpb24gaW50byBEZWNrRGJcblxuLyoqXG4gKiBEZWZhdWx0IER1Y2tEYiBnZW9tZXRyeSBjb2x1bW5zIGNyZWF0ZWQgYnkgU1RfUkVBRFxuICovXG5jb25zdCBEVUNLREJfR0VPTV9DT0xVTU4gPSAnZ2VvbSc7XG5jb25zdCBEVUNLREJfV0tCX0NPTFVNTiA9ICd3a2JfZ2VvbWV0cnknO1xuXG4vKipcbiBEZWZhdWx0IGNvbHVtbiBuYW1lIGZvciBwcm9jZXNzZWQgZ2VvanNvbiBpbiBLZXBsZXIuXG4gVXNlIHRoaXMgbmFtZSB0byByZW5hbWUgZGVmYXVsdCAnZ2VvbScgY29sdW1uIGZyb20gRHVja0RiXG4gaW4gb3JkZXIgdG8gc3VwcG9ydCBLZXBsZXIgbWFwcyBzYXZlZCBiZWZvcmUgaW50cm9kdWN0aW9uIG9mIER1Y2tEYiBwbHVnaW4uXG4gKi9cbmNvbnN0IEtFUExFUl9HRU9NX0ZST01fR0VPSlNPTl9DT0xVTU4gPSAnX2dlb2pzb24nO1xuXG4vKipcbiAqIE5hbWVzIG9mIGNvbHVtbnMgdGhhdCBtb3N0IGxpa2VseSBjb250YWluIGJpbmFyeSB3a2IgZ2VvbWV0cnlcbiAqL1xuY29uc3QgU1VHR0VTVEVEX0dFT01fQ09MVU1OUyA9IHtcbiAgW0tFUExFUl9HRU9NX0ZST01fR0VPSlNPTl9DT0xVTU5dOiBHRU9BUlJPV19FWFRFTlNJT05TLldLQixcbiAgW0RVQ0tEQl9HRU9NX0NPTFVNTl06IEdFT0FSUk9XX0VYVEVOU0lPTlMuV0tCLFxuICBnZW9tZXRyeTogR0VPQVJST1dfRVhURU5TSU9OUy5XS0Jcbn07XG5cbnR5cGUgSW1wb3J0RGF0YVRvRHVja1Byb3BzID0ge1xuICBkYXRhOiBQcm9jZXNzb3JSZXN1bHQgJiB7YXJyb3dTY2hlbWE6IGFycm93LlNjaGVtYX07XG4gIGRiOiBEYXRhYmFzZUFkYXB0ZXI7XG4gIGM6IERhdGFiYXNlQ29ubmVjdGlvbjtcbn07XG5cbnR5cGUgSW1wb3J0RGF0YVRvRHVja1Jlc3VsdCA9IHtcbiAgLy8gRHVja0RiIGRyb3BzIGdlb2Fycm93IG1ldGFkYXRhLCBzbyB0cnkgdG8gcHJlc2VydmUgYW5kIHRoZW4gcmVzdG9yZSB0aGUgZXh0ZW5zaW9uIG5hbWVcbiAgZ2VvYXJyb3dNZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8vIFVzZSBmaWVsZHMgZnJvbSBhcnJvdyB0YWJsZSBldmVuIGlmIGZpZWxkcyBhcmUgcHJvdmlkZWRcbiAgdXNlTmV3RmllbGRzPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjbGFzcyBLZXBsZXJHbER1Y2tEYlRhYmxlIGV4dGVuZHMgS2VwbGVyVGFibGUge1xuICBkZWNsYXJlIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIGRlY2xhcmUgbGFiZWw6IHN0cmluZztcbiAgZGVjbGFyZSB0eXBlOiBzdHJpbmc7XG4gIGRlY2xhcmUgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gIH1cblxuICBhc3luYyBpbXBvcnRSb3dEYXRhKHtkYXRhLCBkYiwgY306IEltcG9ydERhdGFUb0R1Y2tQcm9wcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7ZmllbGRzLCByb3dzfSA9IGRhdGE7XG5cbiAgICAgIC8vIERBVEFTRVRfRk9STUFUUy5rZXBsZXJnbCBsb2FkcyBkYXRhIGFzIGFueVtdW10gaW5zdGVhZCBvZiBbe31dXG4gICAgICAvLyBUT0RPIHBvdGVudGlhbCBtZW1vcnkgdXNhZ2UgZXhwbG9zaW9uOiBvcmlnaW5hbCBkYXRhLCBuZXcgb2JqZWN0IGFuZCB0aGVuIER1Y2tEYiB0YWJsZVxuICAgICAgY29uc3Qgcm93c0ZvckRiID0gQXJyYXkuaXNBcnJheShyb3dzWzBdKVxuICAgICAgICA/IHJvd3MubWFwKHJvdyA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdSb3cgPSB7fTtcbiAgICAgICAgICAgIHJvdy5mb3JFYWNoKCh2YWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgbmV3Um93W2ZpZWxkc1tpbmRleF0ubmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIG5ld1JvdztcbiAgICAgICAgICB9KVxuICAgICAgICA6IHJvd3M7XG5cbiAgICAgIGF3YWl0IGRiLnJlZ2lzdGVyRmlsZVRleHQodGhpcy5pZCwgSlNPTi5zdHJpbmdpZnkocm93c0ZvckRiKSk7XG5cbiAgICAgIGNvbnN0IGNvbHVtbnMgPSBmaWVsZHMucmVkdWNlKChhY2MsIGZpZWxkLCBpbmRleCkgPT4ge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE8gZXh0ZW5kIGZpZWxkcyB0byBjb250YWluIGR1Y2tEQkNvbHVtblR5cGVcbiAgICAgICAgcmV0dXJuIGAke2FjY30ke2luZGV4ID4gMCA/ICcsJyA6ICcnfSAnJHtmaWVsZC5uYW1lfSc6ICcke2ZpZWxkLmR1Y2tEQkNvbHVtblR5cGV9J2A7XG4gICAgICB9LCAnJyk7XG5cbiAgICAgIGNvbnN0IGNyZWF0ZVRhYmxlU3FsID0gYFxuICAgICAgICBDUkVBVEUgVEFCTEUgJyR7dGhpcy5sYWJlbH0nIEFTXG4gICAgICAgIFNFTEVDVCAqXG4gICAgICAgIEZST00gcmVhZF9qc29uKCcke3RoaXMuaWR9JyxcbiAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA9IHske2NvbHVtbnN9fSk7XG4gICAgICBgO1xuICAgICAgYXdhaXQgYy5xdWVyeShjcmVhdGVUYWJsZVNxbCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdpbXBvcnRSb3dEYXRhJywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW1wb3J0R2VvSnNvbkRhdGEoe2RhdGEsIGRiLCBjfTogSW1wb3J0RGF0YVRvRHVja1Byb3BzKTogUHJvbWlzZTxJbXBvcnREYXRhVG9EdWNrUmVzdWx0PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHtyb3dzfSA9IGRhdGE7XG4gICAgICBhd2FpdCBkYi5yZWdpc3RlckZpbGVUZXh0KHRoaXMuaWQsIEpTT04uc3RyaW5naWZ5KHJvd3MpKTtcblxuICAgICAgY29uc3QgY3JlYXRlVGFibGVTcWwgPSBgXG4gICAgICAgIGluc3RhbGwgc3BhdGlhbDtcbiAgICAgICAgbG9hZCBzcGF0aWFsO1xuICAgICAgICBDUkVBVEUgVEFCTEUgJyR7dGhpcy5sYWJlbH0nIEFTIFxuICAgICAgICBTRUxFQ1QgKlxuICAgICAgICBGUk9NIFNUX1JFQUQoJyR7dGhpcy5pZH0nLCBrZWVwX3drYiA9IFRSVUUpO1xuICAgICAgICBBTFRFUiBUQUJMRSAnJHt0aGlzLmxhYmVsfScgUkVOQU1FICcke0RVQ0tEQl9XS0JfQ09MVU1OfScgVE8gJyR7S0VQTEVSX0dFT01fRlJPTV9HRU9KU09OX0NPTFVNTn0nO1xuICAgICAgYDtcblxuICAgICAgYXdhaXQgYy5xdWVyeShjcmVhdGVUYWJsZVNxbCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2ltcG9ydEdlb0pzb25EYXRhJywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIF9nZW9qc29uIGNvbHVtbiBpcyBjcmVhdGVkIGZyb20gZ2VvbWV0cnkgd2l0aCBrZWVwX3drYiBmbGFnIGFuZCBjb250YWlucyB2YWxpZCBXS0IgZGF0YS5cbiAgICAgIGdlb2Fycm93TWV0YWRhdGE6IHtbS0VQTEVSX0dFT01fRlJPTV9HRU9KU09OX0NPTFVNTl06IEdFT0FSUk9XX0VYVEVOU0lPTlMuV0tCfVxuICAgIH07XG4gIH1cblxuICBhc3luYyBpbXBvcnRBcnJvd0RhdGEoe2RhdGEsIGN9OiBJbXBvcnREYXRhVG9EdWNrUHJvcHMpOiBQcm9taXNlPEltcG9ydERhdGFUb0R1Y2tSZXN1bHQ+IHtcbiAgICBsZXQgYWRqdXN0ZWRNZXRhZGF0YSA9IHt9O1xuICAgIHRyeSB7XG4gICAgICAvLyAxKSBkYXRhLnJvd3MgY29udGFpbnMgYW4gYXJyb3cgdGFibGUgY3JlYXRlZCBieSBBZGQgdG8gTWFwIGRhdGEgZnJvbSBEdWNrRGIgcXVlcnkuXG4gICAgICAvLyAyKSBhcnJvdyB0YWJsZSBpcyBpbiBjb2xzICYgZmllbGRzIHdoZW4gYSBmaWxlIGlzIGRyYWdnZWQgJiBkcm9wcGVkIGludG8gQWRkIERhdGEgVG8gTWFwIGRpYWxvZy5cbiAgICAgIGNvbnN0IGFycm93VGFibGUgPVxuICAgICAgICBkYXRhLnJvd3MgaW5zdGFuY2VvZiBhcnJvdy5UYWJsZVxuICAgICAgICAgID8gZGF0YS5yb3dzXG4gICAgICAgICAgOiByZXN0b3JlQXJyb3dUYWJsZShkYXRhLmNvbHMgfHwgW10sIGRhdGEuZmllbGRzLCBkYXRhLmFycm93U2NoZW1hKTtcblxuICAgICAgLy8gcmVtb3ZlIHVuc3VwcG9ydGVkIGV4dGVuc2lvbnMgZnJvbSBhbiBhcnJvdyB0YWJsZSB0aGF0IHRocm93IGV4Y2VwdGlvbnMgaW4gRHVja0RCLlxuICAgICAgYWRqdXN0ZWRNZXRhZGF0YSA9IHJlbW92ZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyhhcnJvd1RhYmxlKTtcblxuICAgICAgY29uc3Qgc2V0dXBTcWwgPSBgXG4gICAgICAgIGluc3RhbGwgc3BhdGlhbDtcbiAgICAgICAgbG9hZCBzcGF0aWFsO1xuICAgICAgYDtcbiAgICAgIGF3YWl0IGMucXVlcnkoc2V0dXBTcWwpO1xuICAgICAgYXdhaXQgYy5pbnNlcnRBcnJvd1RhYmxlKGFycm93VGFibGUsIHtuYW1lOiB0aGlzLmxhYmVsfSk7XG5cbiAgICAgIC8vIHJlc3RvcmUgdW5zdXBwb3J0ZWQgZXh0ZW5zaW9ucyB0aGF0IHRocm93IGV4Y2VwdGlvbnMgaW4gRHVja0RiXG4gICAgICByZXN0b3JlVW5zdXBwb3J0ZWRFeHRlbnNpb25zKGFycm93VGFibGUsIGFkanVzdGVkTWV0YWRhdGEpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBLbm93biBpc3N1ZXM6XG4gICAgICAvLyAxKSBBcnJvdyBUeXBlIHdpdGggZXh0ZW5zaW9uIG5hbWU6IGdlb2Fycm93LnBvaW50IGFuZCBmb3JtYXQ6ICt3OjIgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgaW4gRHVja0RCLlxuICAgICAgY29uc29sZS5lcnJvcignaW1wb3J0QXJyb3dEYXRhJywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGdlb2Fycm93TWV0YWRhdGE6IHsuLi5TVUdHRVNURURfR0VPTV9DT0xVTU5TLCAuLi5hZGp1c3RlZE1ldGFkYXRhfSxcbiAgICAgIC8vIHVzZSBmaWVsZHMgZ2VuZXJhdGVkIGZyb20gdGhlIGNyZWF0ZWQgYXJyb3cgdGFibGVcbiAgICAgIHVzZU5ld0ZpZWxkczogdHJ1ZVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHRhYmxlIGZyb20gZGF0YSwgcmV0dXJucyBhbiBhcnJvdyB0YWJsZSB3aXRoIHRoZSBkYXRhXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHtmaWVsZHM6IEZpZWxkW10sIGNvbHM6IGFueVtdfT59XG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgY3JlYXRlVGFibGVBbmRHZXRBcnJvdyhkYXRhKTogUHJvbWlzZTx7ZmllbGRzOiBhbnlbXTsgY29sczogYXJyb3cuVmVjdG9yW119PiB7XG4gICAgY29uc3QgZGIgPSBhd2FpdCBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmRhdGFiYXNlO1xuICAgIGlmICghZGIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSBkYXRhYmFzZSBpcyBub3QgY29uZmlndXJlZCBwcm9wZXJseS4nKTtcbiAgICAgIHJldHVybiB7ZmllbGRzOiBbXSwgY29sczogW119O1xuICAgIH1cbiAgICBjb25zdCBjID0gYXdhaXQgZGIuY29ubmVjdCgpO1xuXG4gICAgY29uc3QgdGFibGVOYW1lID0gdGhpcy5sYWJlbDtcbiAgICBhd2FpdCBkcm9wVGFibGVJZkV4aXN0cyhjLCB0YWJsZU5hbWUpO1xuXG4gICAgbGV0IGZvcm1hdCA9IHRoaXMubWV0YWRhdGEuZm9ybWF0O1xuICAgIGlmICghZm9ybWF0KSB7XG4gICAgICAvLyBmb3JtYXQgaXMgbWlzc2luZyB3aGVuIHdlIGxvYWQgS2VwbGVyLmdsIGV4YW1wbGVzXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhLnJvd3M/LlswXSkgfHwgdHlwZW9mIGRhdGEucm93cz8uWzBdID09PSAnb2JqZWN0Jykge1xuICAgICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMucm93O1xuICAgICAgfSBlbHNlIGlmIChkYXRhLnJvd3M/LnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbicpIHtcbiAgICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLmdlb2pzb247XG4gICAgICB9IGVsc2UgaWYgKGRhdGEuY29scz8uWzBdIGluc3RhbmNlb2YgYXJyb3cuVmVjdG9yKSB7XG4gICAgICAgIGZvcm1hdCA9IERBVEFTRVRfRk9STUFUUy5hcnJvdztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgaW1wb3J0RGV0YWlsczogSW1wb3J0RGF0YVRvRHVja1Jlc3VsdCB8IHVuZGVmaW5lZDtcbiAgICBpZiAoZm9ybWF0ID09PSBEQVRBU0VUX0ZPUk1BVFMucm93KSB7XG4gICAgICBhd2FpdCB0aGlzLmltcG9ydFJvd0RhdGEoe2RhdGEsIGRiLCBjfSk7XG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5nZW9qc29uKSB7XG4gICAgICBpbXBvcnREZXRhaWxzID0gYXdhaXQgdGhpcy5pbXBvcnRHZW9Kc29uRGF0YSh7ZGF0YSwgZGIsIGN9KTtcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmFycm93KSB7XG4gICAgICBpbXBvcnREZXRhaWxzID0gYXdhaXQgdGhpcy5pbXBvcnRBcnJvd0RhdGEoe2RhdGEsIGRiLCBjfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1VucmVjb2duaXplZCBmb3JtYXQnLCBmb3JtYXQpO1xuICAgIH1cblxuICAgIGxldCBmaWVsZHM6IEZpZWxkW10gPSBbXTtcbiAgICBsZXQgY29sczogYXJyb3cuVmVjdG9yW10gPSBbXTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7Z2VvYXJyb3dNZXRhZGF0YSA9IHt9LCB1c2VOZXdGaWVsZHMgPSBmYWxzZX0gPSBpbXBvcnREZXRhaWxzIHx8IHt9O1xuXG4gICAgICBjb25zdCBkdWNrRGJDb2x1bW5zID0gYXdhaXQgZ2V0RHVja0RCQ29sdW1uVHlwZXMoYywgdGFibGVOYW1lKTtcbiAgICAgIGNvbnN0IHRhYmxlRHVja0RCVHlwZXMgPSBnZXREdWNrREJDb2x1bW5UeXBlc01hcChkdWNrRGJDb2x1bW5zKTtcbiAgICAgIGNvbnN0IGFkanVzdGVkUXVlcnkgPSBjYXN0RHVja0RCVHlwZXNGb3JLZXBsZXIodGFibGVOYW1lLCBkdWNrRGJDb2x1bW5zKTtcbiAgICAgIGNvbnN0IGFycm93UmVzdWx0ID0gYXdhaXQgYy5xdWVyeShhZGp1c3RlZFF1ZXJ5KTtcblxuICAgICAgLy8gVE9ETyBpZiBmb3JtYXQgaXMgYW4gYXJyb3cgdGFibGUgdGhlbiBqdXN0IHVzZSB0aGUgb3JpZ2luYWwgb25lLCBpbnN0ZWFkIG9mIHRoZSBuZXcgdGFibGUgZnJvbSB0aGUgcXVlcnk/XG5cbiAgICAgIHJlc3RvcmVHZW9hcnJvd01ldGFkYXRhKGFycm93UmVzdWx0LCBnZW9hcnJvd01ldGFkYXRhKTtcblxuICAgICAgZmllbGRzID0gdXNlTmV3RmllbGRzXG4gICAgICAgID8gYXJyb3dTY2hlbWFUb0ZpZWxkcyhhcnJvd1Jlc3VsdCwgdGFibGVEdWNrREJUeXBlcylcbiAgICAgICAgOiBkYXRhLmZpZWxkcyA/PyBhcnJvd1NjaGVtYVRvRmllbGRzKGFycm93UmVzdWx0LCB0YWJsZUR1Y2tEQlR5cGVzKTtcbiAgICAgIGNvbHMgPSBbLi4uQXJyYXkoYXJyb3dSZXN1bHQubnVtQ29scykua2V5cygpXVxuICAgICAgICAubWFwKGkgPT4gYXJyb3dSZXN1bHQuZ2V0Q2hpbGRBdChpKSlcbiAgICAgICAgLmZpbHRlcihjb2wgPT4gY29sKSBhcyBhcnJvdy5WZWN0b3JbXTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRHVja0RCIHRhYmxlOiBjcmVhdGVUYWJsZUFuZEdldEFycm93JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgYXdhaXQgYy5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIHtmaWVsZHMsIGNvbHN9O1xuICB9XG5cbiAgYXN5bmMgaW1wb3J0RGF0YSh7ZGF0YX06IHtkYXRhOiBQcm9jZXNzb3JSZXN1bHR9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gVmVjdG9yVGlsZSBpcyBhIHNwZWNpYWwgY2FzZSwgaWdub3JlIGZvciBub3dcbiAgICBpZiAodGhpcy50eXBlID09PSBEYXRhc2V0VHlwZS5WRUNUT1JfVElMRSkge1xuICAgICAgc3VwZXIuaW1wb3J0RGF0YSh7ZGF0YTogey4uLmRhdGEsIHJvd3M6IFtdfX0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHtmaWVsZHMsIGNvbHN9ID0gYXdhaXQgdGhpcy5jcmVhdGVUYWJsZUFuZEdldEFycm93KGRhdGEpO1xuXG4gICAgc3VwZXIuaW1wb3J0RGF0YSh7ZGF0YToge2ZpZWxkcywgY29scywgcm93czogW119fSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGUoZGF0YSkge1xuICAgIC8vIFZlY3RvclRpbGUgaXMgYSBzcGVjaWFsIGNhc2UsIGlnbm9yZSBmb3Igbm93XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gRGF0YXNldFR5cGUuVkVDVE9SX1RJTEUpIHtcbiAgICAgIHN1cGVyLmltcG9ydERhdGEoe2RhdGF9KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNvbnN0IHtjb2xzfSA9IGF3YWl0IHRoaXMuY3JlYXRlVGFibGVBbmRHZXRBcnJvdyhkYXRhKTtcblxuICAgIHJldHVybiBzdXBlci51cGRhdGUoe2NvbHMsIHJvd3M6IFtdLCBmaWVsZHM6IFtdfSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0RmlsZVByb2Nlc3NvciA9IGZ1bmN0aW9uIChkYXRhOiBhbnksIGlucHV0Rm9ybWF0Pzogc3RyaW5nKSB7XG4gICAgbGV0IHByb2Nlc3NvcjtcbiAgICBsZXQgZm9ybWF0O1xuICAgIGlmIChpbnB1dEZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmFycm93IHx8IGlzQXJyb3dEYXRhKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMuYXJyb3c7XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzQXJyb3dCYXRjaGVzO1xuICAgIH0gZWxzZSBpZiAoaW5wdXRGb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5rZXBsZXJnbCB8fCBpc0tlcGxlckdsTWFwKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMua2VwbGVyZ2w7XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzS2VwbGVyZ2xKU09OZm9yRHVja0RiO1xuICAgIH0gZWxzZSBpZiAoaW5wdXRGb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5yb3cgfHwgaXNSb3dPYmplY3QoZGF0YSkpIHtcbiAgICAgIC8vIGNzdiBmaWxlIGdvZXMgaGVyZVxuICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLnJvdztcbiAgICAgIHByb2Nlc3NvciA9IHByb2Nlc3NDc3ZSb3dPYmplY3Q7IC8vIGRpcmVjdGx5IGltcG9ydCBqc29uIG9iamVjdCBpbnRvIGR1Y2tkYi13YXNtXG4gICAgfSBlbHNlIGlmIChpbnB1dEZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmdlb2pzb24gfHwgaXNHZW9Kc29uKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMuZ2VvanNvbjtcbiAgICAgIHByb2Nlc3NvciA9IHByb2Nlc3NHZW9qc29uO1xuICAgIH1cbiAgICByZXR1cm4ge3Byb2Nlc3NvciwgZm9ybWF0fTtcbiAgfTtcblxuICBzdGF0aWMgZ2V0SW5wdXREYXRhVmFsaWRhdG9yID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIEluIER1Y2tEQiBtb2RlIGRhdGEgaXMgdmFsaWRhdGVkIGxhdGVyIGR1cmluZyBpbXBvcnQuXG4gICAgcmV0dXJuIGQgPT4gZDtcbiAgfTtcbn1cblxuLyoqXG4gKiBUcnkgdG8gcmVzdG9yZSBnZW9hcnJvdyBtZXRhZGF0YSBsb3N0IGR1cmluZyBEdWNrRGIgaW5nZXN0aW9uLlxuICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gY2FuIGdlbmVyYXRlIHdyb25nIGdlb21ldHJ5IHR5cGVzLlxuICogQHBhcmFtIGFycm93VGFibGUgQXJyb3cgdGFibGUgdG8gdXBkYXRlLlxuICogQHBhcmFtIGdlb2Fycm93TWV0YWRhdGEgQSBtYXAgd2l0aCBmaWVsZCBuYW1lcyB0aGF0IHVzdWFsbHkgdXNlZCB0byBzdG9yZSBnZW9hcnJvdyBnZW9tZXRyeS5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlc3RvcmVHZW9hcnJvd01ldGFkYXRhID0gKFxuICBhcnJvd1RhYmxlOiBhcnJvdy5UYWJsZSxcbiAgZ2VvYXJyb3dNZXRhZGF0YTogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuKSA9PiB7XG4gIGFycm93VGFibGUuc2NoZW1hLmZpZWxkcy5mb3JFYWNoKGYgPT4ge1xuICAgIGlmIChhcnJvdy5EYXRhVHlwZS5pc0JpbmFyeShmLnR5cGUpICYmIGdlb2Fycm93TWV0YWRhdGFbZi5uYW1lXSkge1xuICAgICAgZi5tZXRhZGF0YS5zZXQoR0VPQVJST1dfTUVUQURBVEFfS0VZLCBnZW9hcnJvd01ldGFkYXRhW2YubmFtZV0pO1xuICAgIH0gZWxzZSBpZiAoaXNHZW9BcnJvd1BvaW50KGYudHlwZSkpIHtcbiAgICAgIGYubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgR0VPQVJST1dfRVhURU5TSU9OUy5QT0lOVCk7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93TGluZVN0cmluZyhmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuTElORVNUUklORyk7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93UG9seWdvbihmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuUE9MWUdPTik7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93TXVsdGlQb2ludChmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuTVVMVElQT0lOVCk7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93TXVsdGlMaW5lU3RyaW5nKGYudHlwZSkpIHtcbiAgICAgIGYubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgR0VPQVJST1dfRVhURU5TSU9OUy5NVUxUSUxJTkVTVFJJTkcpO1xuICAgIH0gZWxzZSBpZiAoaXNHZW9BcnJvd011bHRpUG9seWdvbihmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuTVVMVElQT0xZR09OKTtcbiAgICB9XG4gIH0pO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQU1BLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQVFBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLGNBQUEsR0FBQUwsT0FBQTtBQU9BLElBQUFNLGlCQUFBLEdBQUFOLE9BQUE7QUFTQSxJQUFBTyxrQkFBQSxHQUFBUCxPQUFBO0FBUXFDLFNBQUFRLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxD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
|
package/src/duckdb/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kepler.gl/duckdb",
|
|
3
3
|
"author": "Shan He <heshan0131@gmail.com>",
|
|
4
|
-
"version": "3.1.
|
|
4
|
+
"version": "3.1.8",
|
|
5
5
|
"description": "DuckDB plugin for Kepler.gl",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -26,11 +26,11 @@
|
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@duckdb/duckdb-wasm": "^1.28.0",
|
|
29
|
-
"@kepler.gl/common-utils": "3.1.
|
|
30
|
-
"@kepler.gl/constants": "3.1.
|
|
31
|
-
"@kepler.gl/processors": "3.1.
|
|
32
|
-
"@kepler.gl/table": "3.1.
|
|
33
|
-
"@kepler.gl/types": "3.1.
|
|
29
|
+
"@kepler.gl/common-utils": "3.1.8",
|
|
30
|
+
"@kepler.gl/constants": "3.1.8",
|
|
31
|
+
"@kepler.gl/processors": "3.1.8",
|
|
32
|
+
"@kepler.gl/table": "3.1.8",
|
|
33
|
+
"@kepler.gl/types": "3.1.8",
|
|
34
34
|
"@monaco-editor/react": "^4.6.0",
|
|
35
35
|
"@radix-ui/react-collapsible": "^1.1.0",
|
|
36
36
|
"apache-arrow": ">=15.0.0",
|