@kepler.gl/utils 3.1.8 → 3.1.10
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/application-config.d.ts +12 -1
- package/dist/application-config.js +10 -3
- package/dist/data-scale-utils.d.ts +1 -1
- package/dist/data-scale-utils.js +36 -17
- package/dist/data-utils.d.ts +1 -0
- package/dist/data-utils.js +2 -1
- package/dist/export-utils.d.ts +2 -1
- package/dist/export-utils.js +1 -1
- package/dist/projection-utils.js +10 -2
- package/package.json +4 -4
|
@@ -32,12 +32,23 @@ export declare type KeplerApplicationConfig = {
|
|
|
32
32
|
useOnFilteredItemsChange?: boolean;
|
|
33
33
|
cdnUrl?: string;
|
|
34
34
|
enableRasterTileLayer?: boolean;
|
|
35
|
-
/** Titiler v0.
|
|
35
|
+
/** Whether to use Titiler v0.21 API endpoints instead of v0.11 */
|
|
36
36
|
rasterServerUseLatestTitiler?: boolean;
|
|
37
37
|
/** An array of URLs to shards of the raster tile server to be used by the raster tile layer. */
|
|
38
38
|
rasterServerUrls?: string[];
|
|
39
39
|
/** If true then try to fetch quantized elevation meshes from raster servers */
|
|
40
40
|
rasterServerSupportsElevation?: boolean;
|
|
41
|
+
/** How many times to retry a request if case of rasterServerServerErrorsToRetry errors */
|
|
42
|
+
rasterServerMaxRetries?: number;
|
|
43
|
+
/** How long between retries */
|
|
44
|
+
rasterServerRetryDelay?: number;
|
|
45
|
+
/** An array of HTTP status codes that should be retried when encountered. */
|
|
46
|
+
rasterServerServerErrorsToRetry?: number[];
|
|
47
|
+
/** Maximum number of simultaneous requests per raster server. 0 - no limit */
|
|
48
|
+
rasterServerMaxPerServerRequests?: number;
|
|
49
|
+
/** Whether to show the server input field in the raster tile layer setup form */
|
|
50
|
+
rasterServerShowServerInput?: boolean;
|
|
51
|
+
enableWMSLayer?: boolean;
|
|
41
52
|
};
|
|
42
53
|
export declare const getApplicationConfig: () => Required<KeplerApplicationConfig>;
|
|
43
54
|
export declare function initApplicationConfig(appConfig?: KeplerApplicationConfig): void;
|
|
@@ -61,8 +61,15 @@ var DEFAULT_APPLICATION_CONFIG = {
|
|
|
61
61
|
enableRasterTileLayer: false,
|
|
62
62
|
rasterServerUseLatestTitiler: true,
|
|
63
63
|
// TODO: provide a default free server or leave blank
|
|
64
|
-
rasterServerUrls: [
|
|
65
|
-
rasterServerSupportsElevation: true
|
|
64
|
+
rasterServerUrls: [],
|
|
65
|
+
rasterServerSupportsElevation: true,
|
|
66
|
+
rasterServerMaxRetries: 1,
|
|
67
|
+
rasterServerRetryDelay: 10000,
|
|
68
|
+
rasterServerServerErrorsToRetry: [503],
|
|
69
|
+
rasterServerMaxPerServerRequests: 0,
|
|
70
|
+
rasterServerShowServerInput: false,
|
|
71
|
+
// WMS layer config
|
|
72
|
+
enableWMSLayer: false
|
|
66
73
|
};
|
|
67
74
|
var applicationConfig = DEFAULT_APPLICATION_CONFIG;
|
|
68
75
|
var getApplicationConfig = exports.getApplicationConfig = function getApplicationConfig() {
|
|
@@ -72,4 +79,4 @@ function initApplicationConfig() {
|
|
|
72
79
|
var appConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
73
80
|
Object.assign(applicationConfig, appConfig);
|
|
74
81
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mMiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkRFRkFVTFRfQVBQTElDQVRJT05fQ09ORklHIiwiZGVmYXVsdEh0bWxOYW1lIiwiZGVmYXVsdEltYWdlTmFtZSIsImRlZmF1bHRKc29uTmFtZSIsImRlZmF1bHREYXRhTmFtZSIsImRlZmF1bHRFeHBvcnRKc29uU2V0dGluZ3MiLCJoYXNEYXRhIiwiYmFzZU1hcExpYnJhcnlDb25maWciLCJtYXBsaWJyZSIsImdldE1hcExpYiIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsIm1hcExpYkNzc0NsYXNzIiwibWFwTGliQXR0cmlidXRpb25Dc3NDbGFzcyIsIm1hcExpYk5hbWUiLCJtYXBMaWJVcmwiLCJtYXBib3giLCJjZG5VcmwiLCJLRVBMRVJfVU5GT0xERURfQlVDS0VUIiwicGx1Z2lucyIsInRhYmxlIiwiZGF0YWJhc2UiLCJ1c2VBcnJvd1Byb2dyZXNzaXZlTG9hZGluZyIsInNob3dSZWxlYXNlQmFubmVyIiwidXNlT25GaWx0ZXJlZEl0ZW1zQ2hhbmdlIiwiZW5hYmxlUmFzdGVyVGlsZUxheWVyIiwicmFzdGVyU2VydmVyVXNlTGF0ZXN0VGl0aWxlciIsInJhc3RlclNlcnZlclVybHMiLCJyYXN0ZXJTZXJ2ZXJTdXBwb3J0c0VsZXZhdGlvbiIsImFwcGxpY2F0aW9uQ29uZmlnIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJleHBvcnRzIiwiaW5pdEFwcGxpY2F0aW9uQ29uZmlnIiwiYXBwQ29uZmlnIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiYXNzaWduIl0sInNvdXJjZXMiOlsiLi4vc3JjL2FwcGxpY2F0aW9uLWNvbmZpZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge01hcExpYiwgTWFwUmVmfSBmcm9tICdyZWFjdC1tYXAtZ2wnO1xuXG5pbXBvcnQge0tFUExFUl9VTkZPTERFRF9CVUNLRVR9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHtCYXNlTWFwTGlicmFyeVR5cGV9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuaW1wb3J0IHR5cGUge0RhdGFiYXNlQWRhcHRlcn0gZnJvbSAnLi9hcHBsaWNhdGlvbi1jb25maWctdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBNYXBMaWJJbnN0YW5jZSA9IE1hcExpYjxhbnk+O1xuZXhwb3J0IHR5cGUgR2V0TWFwUmVmID0gUmV0dXJuVHlwZTxNYXBSZWZbJ2dldE1hcCddPjtcblxuZXhwb3J0IHR5cGUgQmFzZU1hcExpYnJhcnlDb25maWcgPSB7XG4gIGdldE1hcExpYjogKCkgPT4gUHJvbWlzZTxNYXBMaWJJbnN0YW5jZT47XG4gIG1hcExpYkF0dHJpYnV0aW9uQ3NzQ2xhc3M6IHN0cmluZztcbiAgbWFwTGliQ3NzQ2xhc3M6IHN0cmluZztcbiAgbWFwTGliTmFtZTogc3RyaW5nO1xuICBtYXBMaWJVcmw6IHN0cmluZztcbn07XG5cbi8qKlxuICogQSBtZWNoYW5pc20gdG8gb3ZlcnJpZGUgZGVmYXVsdCBLZXBsZXIgdmFsdWVzL3NldHRpbmdzIHNvIHRoYXQgd2VcbiAqIHdpdGhvdXQgaGF2aW5nIHRvIG1ha2UgYXBwbGljYXRpb24tc3BlY2lmaWMgY2hhbmdlcyB0byB0aGUga2VwbGVyIHJlcG8uXG4gKi9cbmV4cG9ydCB0eXBlIEtlcGxlckFwcGxpY2F0aW9uQ29uZmlnID0ge1xuICAvKiogRGVmYXVsdCBuYW1lIG9mIGV4cG9ydCBIVE1MIGZpbGUsIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHVzZXIgKi9cbiAgZGVmYXVsdEh0bWxOYW1lPzogc3RyaW5nO1xuICBkZWZhdWx0SW1hZ2VOYW1lPzogc3RyaW5nO1xuICBkZWZhdWx0SnNvbk5hbWU/OiBzdHJpbmc7XG4gIGRlZmF1bHREYXRhTmFtZT86IHN0cmluZztcbiAgZGVmYXVsdEV4cG9ydEpzb25TZXR0aW5ncz86IHtcbiAgICBoYXNEYXRhPzogYm9vbGVhbjtcbiAgfTtcbiAgYmFzZU1hcExpYnJhcnlDb25maWc/OiBSZWNvcmQ8QmFzZU1hcExpYnJhcnlUeXBlLCBCYXNlTWFwTGlicmFyeUNvbmZpZz47XG4gIHBsdWdpbnM/OiBhbnlbXTtcbiAgLy8gS2VwbGVyVGFibGUgYWx0ZXJuYXRpdmVcbiAgLy8gVE9ETyBpbXByb3ZlIHR5cGluZyBieSBleHBvcnRpbmcgS2VwbGVyVGFibGUgaW50ZXJmYWNlIHRvIEBrZXBsZXIuZ2wvdHlwZXNcbiAgdGFibGU/OiBhbnk7XG4gIGRhdGFiYXNlPzogRGF0YWJhc2VBZGFwdGVyIHwgbnVsbDtcblxuICAvLyBEaXNhYmxlIHByb2dyZXNzaXZlIGxvYWRpbmcgZm9yIGFycm93IGZpbGVzXG4gIHVzZUFycm93UHJvZ3Jlc3NpdmVMb2FkaW5nPzogYm9vbGVhbjtcbiAgLy8gU2hvdyBidWlsdC1pbiBiYW5uZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgS2VwbGVyLmdsXG4gIHNob3dSZWxlYXNlQmFubmVyPzogYm9vbGVhbjtcbiAgLy8gVXNlIHRoZSBvbkZpbHRlcmVkSXRlbXNDaGFuZ2UgY2FsbGJhY2sgZm9yIERhdGFGaWx0ZXJFeHRlbnNpb24uXG4gIC8vIEVuYWJsaW5nIHRoaXMgb3B0aW9uIG1heSBjYXVzZSBwZXJmb3JtYW5jZSBpc3N1ZXMgd2hlbiBkZWFsaW5nIHdpdGggYSBsYXJnZSBudW1iZXIgb2YgbGF5ZXJzIG9yIHN1YmxheWVycyxcbiAgLy8gZXNwZWNpYWxseSBpZiBsYXJnZSBBcnJvdyBmaWxlcyBhcmUgc3BsaXQgaW50byByZWxhdGl2ZWx5IHNtYWxsIGJhdGNoZXMgKHNob3VsZCBiZSBmaXhlZCBpbiB0aGUgZnV0dXJlKS5cbiAgdXNlT25GaWx0ZXJlZEl0ZW1zQ2hhbmdlPzogYm9vbGVhbjtcblxuICAvLyBBIFVSTCB0byB0aGUgQ0ROIHdoZXJlIHRoZSBrZXBsZXIuZ2wgYXNzZXRzIGFyZSBob3N0ZWQuXG4gIGNkblVybD86IHN0cmluZztcblxuICAvLyBSYXN0ZXIgVGlsZSBsYXllciBjb25maWdcbiAgLy8gUmFzdGVyIFRpbGUgbGF5ZXIgaXMgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIG5vdCByZWFkeSBmb3IgcHJvZHVjdGlvbiB1c2UuIERpc2FibGVkIGJ5IGRlZmF1bHQuXG4gIGVuYWJsZVJhc3RlclRpbGVMYXllcj86IGJvb2xlYW47XG4gIC8qKiBUaXRpbGVyIHYwLjExIHZzIHYwLjIxICovXG4gIHJhc3RlclNlcnZlclVzZUxhdGVzdFRpdGlsZXI/OiBib29sZWFuO1xuICAvKiogQW4gYXJyYXkgb2YgVVJMcyB0byBzaGFyZHMgb2YgdGhlIHJhc3RlciB0aWxlIHNlcnZlciB0byBiZSB1c2VkIGJ5IHRoZSByYXN0ZXIgdGlsZSBsYXllci4gKi9cbiAgcmFzdGVyU2VydmVyVXJscz86IHN0cmluZ1tdO1xuICAvKiogSWYgdHJ1ZSB0aGVuIHRyeSB0byBmZXRjaCBxdWFudGl6ZWQgZWxldmF0aW9uIG1lc2hlcyBmcm9tIHJhc3RlciBzZXJ2ZXJzICovXG4gIHJhc3RlclNlcnZlclN1cHBvcnRzRWxldmF0aW9uPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IERFRkFVTFRfQVBQTElDQVRJT05fQ09ORklHOiBSZXF1aXJlZDxLZXBsZXJBcHBsaWNhdGlvbkNvbmZpZz4gPSB7XG4gIGRlZmF1bHRIdG1sTmFtZTogJ2tlcGxlci5nbC5odG1sJyxcbiAgZGVmYXVsdEltYWdlTmFtZTogJ2tlcGxlci5nbC5wbmcnLFxuICBkZWZhdWx0SnNvbk5hbWU6ICdrZXBsZXIuZ2wuanNvbicsXG4gIGRlZmF1bHREYXRhTmFtZTogJ2tlcGxlci5nbCcsXG4gIGRlZmF1bHRFeHBvcnRKc29uU2V0dGluZ3M6IHtcbiAgICBoYXNEYXRhOiB0cnVlXG4gIH0sXG5cbiAgYmFzZU1hcExpYnJhcnlDb25maWc6IHtcbiAgICBtYXBsaWJyZToge1xuICAgICAgZ2V0TWFwTGliOiAoKSA9PiBpbXBvcnQoJ21hcGxpYnJlLWdsJyksXG4gICAgICBtYXBMaWJDc3NDbGFzczogJ21hcGxpYnJlZ2wnLFxuICAgICAgbWFwTGliQXR0cmlidXRpb25Dc3NDbGFzczogJ21hcGxpYnJlLWF0dHJpYnV0aW9uLWNvbnRhaW5lcicsXG4gICAgICBtYXBMaWJOYW1lOiAnTWFwTGlicmUnLFxuICAgICAgbWFwTGliVXJsOiAnaHR0cHM6Ly93d3cubWFwbGlicmUub3JnLydcbiAgICB9LFxuICAgIG1hcGJveDoge1xuICAgICAgZ2V0TWFwTGliOiAoKSA9PiBpbXBvcnQoJ21hcGJveC1nbCcpLFxuICAgICAgbWFwTGliQ3NzQ2xhc3M6ICdtYXBib3hnbCcsXG4gICAgICBtYXBMaWJBdHRyaWJ1dGlvbkNzc0NsYXNzOiAnbWFwYm94LWF0dHJpYnV0aW9uLWNvbnRhaW5lcicsXG4gICAgICBtYXBMaWJOYW1lOiAnTWFwYm94JyxcbiAgICAgIG1hcExpYlVybDogJ2h0dHBzOi8vd3d3Lm1hcGJveC5jb20vJ1xuICAgIH1cbiAgfSxcblxuICBjZG5Vcmw6IEtFUExFUl9VTkZPTERFRF9CVUNLRVQsXG5cbiAgcGx1Z2luczogW10sXG4gIC8vIFRoZSBkZWZhdWx0IHRhYmxlIGNsYXNzIGlzIEtlcGxlclRhYmxlLlxuICAvLyBUT0RPIGluY2x1ZGUgS2VwbGVyVGFibGUgaGVyZSB3aGVuIHRoZSBjaXJjdWxhciBkZXBlbmRlbmN5IHdpdGggQGtlcGxlci5nbC90YWJsZSBhbmQgQGtlcGxlci5nbC91dGlscyBhcmUgcmVzb2x2ZWQuXG4gIHRhYmxlOiBudWxsLFxuICBkYXRhYmFzZTogbnVsbCxcblxuICB1c2VBcnJvd1Byb2dyZXNzaXZlTG9hZGluZzogdHJ1ZSxcbiAgc2hvd1JlbGVhc2VCYW5uZXI6IHRydWUsXG4gIHVzZU9uRmlsdGVyZWRJdGVtc0NoYW5nZTogZmFsc2UsXG5cbiAgLy8gUmFzdGVyIFRpbGUgbGF5ZXIgY29uZmlnXG4gIGVuYWJsZVJhc3RlclRpbGVMYXllcjogZmFsc2UsXG4gIHJhc3RlclNlcnZlclVzZUxhdGVzdFRpdGlsZXI6IHRydWUsXG4gIC8vIFRPRE86IHByb3ZpZGUgYSBkZWZhdWx0IGZyZWUgc2VydmVyIG9yIGxlYXZlIGJsYW5rXG4gIHJhc3RlclNlcnZlclVybHM6IFsnaHR0cDovL2xvY2FsaG9zdDo4MDAwJ10sXG4gIHJhc3RlclNlcnZlclN1cHBvcnRzRWxldmF0aW9uOiB0cnVlXG59O1xuXG5jb25zdCBhcHBsaWNhdGlvbkNvbmZpZzogUmVxdWlyZWQ8S2VwbGVyQXBwbGljYXRpb25Db25maWc+ID0gREVGQVVMVF9BUFBMSUNBVElPTl9DT05GSUc7XG5cbmV4cG9ydCBjb25zdCBnZXRBcHBsaWNhdGlvbkNvbmZpZyA9ICgpOiBSZXF1aXJlZDxLZXBsZXJBcHBsaWNhdGlvbkNvbmZpZz4gPT4gYXBwbGljYXRpb25Db25maWc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0QXBwbGljYXRpb25Db25maWcoYXBwQ29uZmlnOiBLZXBsZXJBcHBsaWNhdGlvbkNvbmZpZyA9IHt9KSB7XG4gIE9iamVjdC5hc3NpZ24oYXBwbGljYXRpb25Db25maWcsIGFwcENvbmZpZyk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUtBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUE0RCxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUksd0JBQUFKLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLFNBQUFMLENBQUEsZUFBQUEsQ0FBQSxvQkFBQU0sUUFBQSxhQUFBTixDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLFVBQUFHLENBQUEsQ0FBQUssR0FBQSxDQUFBUixDQUFBLE9BQUFTLENBQUEsS0FBQUMsU0FBQSxVQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLENBQUEsSUFBQWYsQ0FBQSxvQkFBQWUsQ0FBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWpCLENBQUEsRUFBQWUsQ0FBQSxTQUFBRyxDQUFBLEdBQUFQLENBQUEsR0FBQUMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBZCxDQUFBLEVBQUFlLENBQUEsVUFBQUcsQ0FBQSxLQUFBQSxDQUFBLENBQUFWLEdBQUEsSUFBQVUsQ0FBQSxDQUFBQyxHQUFBLElBQUFQLE1BQUEsQ0FBQUMsY0FBQSxDQUFBSixDQUFBLEVBQUFNLENBQUEsRUFBQUcsQ0FBQSxJQUFBVCxDQUFBLENBQUFNLENBQUEsSUFBQWYsQ0FBQSxDQUFBZSxDQUFBLFlBQUFOLENBQUEsY0FBQVQsQ0FBQSxFQUFBRyxDQUFBLElBQUFBLENBQUEsQ0FBQWdCLEdBQUEsQ0FBQW5CLENBQUEsRUFBQVMsQ0FBQSxHQUFBQSxDQUFBLElBTDVEO0FBQ0E7QUFvQkE7QUFDQTtBQUNBO0FBQ0E7O0FBd0NBLElBQU1XLDBCQUE2RCxHQUFHO0VBQ3BFQyxlQUFlLEVBQUUsZ0JBQWdCO0VBQ2pDQyxnQkFBZ0IsRUFBRSxlQUFlO0VBQ2pDQyxlQUFlLEVBQUUsZ0JBQWdCO0VBQ2pDQyxlQUFlLEVBQUUsV0FBVztFQUM1QkMseUJBQXlCLEVBQUU7SUFDekJDLE9BQU8sRUFBRTtFQUNYLENBQUM7RUFFREMsb0JBQW9CLEVBQUU7SUFDcEJDLFFBQVEsRUFBRTtNQUNSQyxTQUFTLEVBQUUsU0FBWEEsU0FBU0EsQ0FBQTtRQUFBLE9BQUFDLE9BQUEsQ0FBQUMsT0FBQSxHQUFBQyxJQUFBO1VBQUEsT0FBQTVCLHVCQUFBLENBQUFOLE9BQUEsQ0FBZSxhQUFhO1FBQUE7TUFBQSxDQUFDO01BQ3RDbUMsY0FBYyxFQUFFLFlBQVk7TUFDNUJDLHlCQUF5QixFQUFFLGdDQUFnQztNQUMzREMsVUFBVSxFQUFFLFVBQVU7TUFDdEJDLFNBQVMsRUFBRTtJQUNiLENBQUM7SUFDREMsTUFBTSxFQUFFO01BQ05SLFNBQVMsRUFBRSxTQUFYQSxTQUFTQSxDQUFBO1FBQUEsT0FBQUMsT0FBQSxDQUFBQyxPQUFBLEdBQUFDLElBQUE7VUFBQSxPQUFBNUIsdUJBQUEsQ0FBQU4sT0FBQSxDQUFlLFdBQVc7UUFBQTtNQUFBLENBQUM7TUFDcENtQyxjQUFjLEVBQUUsVUFBVTtNQUMxQkMseUJBQXlCLEVBQUUsOEJBQThCO01BQ3pEQyxVQUFVLEVBQUUsUUFBUTtNQUNwQkMsU0FBUyxFQUFFO0lBQ2I7RUFDRixDQUFDO0VBRURFLE1BQU0sRUFBRUMsaUNBQXNCO0VBRTlCQyxPQUFPLEVBQUUsRUFBRTtFQUNYO0VBQ0E7RUFDQUMsS0FBSyxFQUFFLElBQUk7RUFDWEMsUUFBUSxFQUFFLElBQUk7RUFFZEMsMEJBQTBCLEVBQUUsSUFBSTtFQUNoQ0MsaUJBQWlCLEVBQUUsSUFBSTtFQUN2QkMsd0JBQXdCLEVBQUUsS0FBSztFQUUvQjtFQUNBQyxxQkFBcUIsRUFBRSxLQUFLO0VBQzVCQyw0QkFBNEIsRUFBRSxJQUFJO0VBQ2xDO0VBQ0FDLGdCQUFnQixFQUFFLENBQUMsdUJBQXVCLENBQUM7RUFDM0NDLDZCQUE2QixFQUFFO0FBQ2pDLENBQUM7QUFFRCxJQUFNQyxpQkFBb0QsR0FBRzlCLDBCQUEwQjtBQUVoRixJQUFNK0Isb0JBQW9CLEdBQUFDLE9BQUEsQ0FBQUQsb0JBQUEsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUFBO0VBQUEsT0FBNENELGlCQUFpQjtBQUFBO0FBRXZGLFNBQVNHLHFCQUFxQkEsQ0FBQSxFQUEwQztFQUFBLElBQXpDQyxTQUFrQyxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFDM0UzQyxNQUFNLENBQUM4QyxNQUFNLENBQUNSLGlCQUFpQixFQUFFSSxTQUFTLENBQUM7QUFDN0MiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
82
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mMiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkRFRkFVTFRfQVBQTElDQVRJT05fQ09ORklHIiwiZGVmYXVsdEh0bWxOYW1lIiwiZGVmYXVsdEltYWdlTmFtZSIsImRlZmF1bHRKc29uTmFtZSIsImRlZmF1bHREYXRhTmFtZSIsImRlZmF1bHRFeHBvcnRKc29uU2V0dGluZ3MiLCJoYXNEYXRhIiwiYmFzZU1hcExpYnJhcnlDb25maWciLCJtYXBsaWJyZSIsImdldE1hcExpYiIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsIm1hcExpYkNzc0NsYXNzIiwibWFwTGliQXR0cmlidXRpb25Dc3NDbGFzcyIsIm1hcExpYk5hbWUiLCJtYXBMaWJVcmwiLCJtYXBib3giLCJjZG5VcmwiLCJLRVBMRVJfVU5GT0xERURfQlVDS0VUIiwicGx1Z2lucyIsInRhYmxlIiwiZGF0YWJhc2UiLCJ1c2VBcnJvd1Byb2dyZXNzaXZlTG9hZGluZyIsInNob3dSZWxlYXNlQmFubmVyIiwidXNlT25GaWx0ZXJlZEl0ZW1zQ2hhbmdlIiwiZW5hYmxlUmFzdGVyVGlsZUxheWVyIiwicmFzdGVyU2VydmVyVXNlTGF0ZXN0VGl0aWxlciIsInJhc3RlclNlcnZlclVybHMiLCJyYXN0ZXJTZXJ2ZXJTdXBwb3J0c0VsZXZhdGlvbiIsInJhc3RlclNlcnZlck1heFJldHJpZXMiLCJyYXN0ZXJTZXJ2ZXJSZXRyeURlbGF5IiwicmFzdGVyU2VydmVyU2VydmVyRXJyb3JzVG9SZXRyeSIsInJhc3RlclNlcnZlck1heFBlclNlcnZlclJlcXVlc3RzIiwicmFzdGVyU2VydmVyU2hvd1NlcnZlcklucHV0IiwiZW5hYmxlV01TTGF5ZXIiLCJhcHBsaWNhdGlvbkNvbmZpZyIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiZXhwb3J0cyIsImluaXRBcHBsaWNhdGlvbkNvbmZpZyIsImFwcENvbmZpZyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImFzc2lnbiJdLCJzb3VyY2VzIjpbIi4uL3NyYy9hcHBsaWNhdGlvbi1jb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtNYXBMaWIsIE1hcFJlZn0gZnJvbSAncmVhY3QtbWFwLWdsJztcblxuaW1wb3J0IHtLRVBMRVJfVU5GT0xERURfQlVDS0VUfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7QmFzZU1hcExpYnJhcnlUeXBlfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmltcG9ydCB0eXBlIHtEYXRhYmFzZUFkYXB0ZXJ9IGZyb20gJy4vYXBwbGljYXRpb24tY29uZmlnLXR5cGVzJztcblxuZXhwb3J0IHR5cGUgTWFwTGliSW5zdGFuY2UgPSBNYXBMaWI8YW55PjtcbmV4cG9ydCB0eXBlIEdldE1hcFJlZiA9IFJldHVyblR5cGU8TWFwUmVmWydnZXRNYXAnXT47XG5cbmV4cG9ydCB0eXBlIEJhc2VNYXBMaWJyYXJ5Q29uZmlnID0ge1xuICBnZXRNYXBMaWI6ICgpID0+IFByb21pc2U8TWFwTGliSW5zdGFuY2U+O1xuICBtYXBMaWJBdHRyaWJ1dGlvbkNzc0NsYXNzOiBzdHJpbmc7XG4gIG1hcExpYkNzc0NsYXNzOiBzdHJpbmc7XG4gIG1hcExpYk5hbWU6IHN0cmluZztcbiAgbWFwTGliVXJsOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEEgbWVjaGFuaXNtIHRvIG92ZXJyaWRlIGRlZmF1bHQgS2VwbGVyIHZhbHVlcy9zZXR0aW5ncyBzbyB0aGF0IHdlXG4gKiB3aXRob3V0IGhhdmluZyB0byBtYWtlIGFwcGxpY2F0aW9uLXNwZWNpZmljIGNoYW5nZXMgdG8gdGhlIGtlcGxlciByZXBvLlxuICovXG5leHBvcnQgdHlwZSBLZXBsZXJBcHBsaWNhdGlvbkNvbmZpZyA9IHtcbiAgLyoqIERlZmF1bHQgbmFtZSBvZiBleHBvcnQgSFRNTCBmaWxlLCBjYW4gYmUgb3ZlcnJpZGRlbiBieSB1c2VyICovXG4gIGRlZmF1bHRIdG1sTmFtZT86IHN0cmluZztcbiAgZGVmYXVsdEltYWdlTmFtZT86IHN0cmluZztcbiAgZGVmYXVsdEpzb25OYW1lPzogc3RyaW5nO1xuICBkZWZhdWx0RGF0YU5hbWU/OiBzdHJpbmc7XG4gIGRlZmF1bHRFeHBvcnRKc29uU2V0dGluZ3M/OiB7XG4gICAgaGFzRGF0YT86IGJvb2xlYW47XG4gIH07XG4gIGJhc2VNYXBMaWJyYXJ5Q29uZmlnPzogUmVjb3JkPEJhc2VNYXBMaWJyYXJ5VHlwZSwgQmFzZU1hcExpYnJhcnlDb25maWc+O1xuICBwbHVnaW5zPzogYW55W107XG4gIC8vIEtlcGxlclRhYmxlIGFsdGVybmF0aXZlXG4gIC8vIFRPRE8gaW1wcm92ZSB0eXBpbmcgYnkgZXhwb3J0aW5nIEtlcGxlclRhYmxlIGludGVyZmFjZSB0byBAa2VwbGVyLmdsL3R5cGVzXG4gIHRhYmxlPzogYW55O1xuICBkYXRhYmFzZT86IERhdGFiYXNlQWRhcHRlciB8IG51bGw7XG5cbiAgLy8gRGlzYWJsZSBwcm9ncmVzc2l2ZSBsb2FkaW5nIGZvciBhcnJvdyBmaWxlc1xuICB1c2VBcnJvd1Byb2dyZXNzaXZlTG9hZGluZz86IGJvb2xlYW47XG4gIC8vIFNob3cgYnVpbHQtaW4gYmFubmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIEtlcGxlci5nbFxuICBzaG93UmVsZWFzZUJhbm5lcj86IGJvb2xlYW47XG4gIC8vIFVzZSB0aGUgb25GaWx0ZXJlZEl0ZW1zQ2hhbmdlIGNhbGxiYWNrIGZvciBEYXRhRmlsdGVyRXh0ZW5zaW9uLlxuICAvLyBFbmFibGluZyB0aGlzIG9wdGlvbiBtYXkgY2F1c2UgcGVyZm9ybWFuY2UgaXNzdWVzIHdoZW4gZGVhbGluZyB3aXRoIGEgbGFyZ2UgbnVtYmVyIG9mIGxheWVycyBvciBzdWJsYXllcnMsXG4gIC8vIGVzcGVjaWFsbHkgaWYgbGFyZ2UgQXJyb3cgZmlsZXMgYXJlIHNwbGl0IGludG8gcmVsYXRpdmVseSBzbWFsbCBiYXRjaGVzIChzaG91bGQgYmUgZml4ZWQgaW4gdGhlIGZ1dHVyZSkuXG4gIHVzZU9uRmlsdGVyZWRJdGVtc0NoYW5nZT86IGJvb2xlYW47XG5cbiAgLy8gQSBVUkwgdG8gdGhlIENETiB3aGVyZSB0aGUga2VwbGVyLmdsIGFzc2V0cyBhcmUgaG9zdGVkLlxuICBjZG5Vcmw/OiBzdHJpbmc7XG5cbiAgLy8gUmFzdGVyIFRpbGUgbGF5ZXIgY29uZmlnXG4gIC8vIFJhc3RlciBUaWxlIGxheWVyIGlzIHVuZGVyIGRldmVsb3BtZW50IGFuZCBub3QgcmVhZHkgZm9yIHByb2R1Y3Rpb24gdXNlLiBEaXNhYmxlZCBieSBkZWZhdWx0LlxuICBlbmFibGVSYXN0ZXJUaWxlTGF5ZXI/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0byB1c2UgVGl0aWxlciB2MC4yMSBBUEkgZW5kcG9pbnRzIGluc3RlYWQgb2YgdjAuMTEgKi9cbiAgcmFzdGVyU2VydmVyVXNlTGF0ZXN0VGl0aWxlcj86IGJvb2xlYW47XG4gIC8qKiBBbiBhcnJheSBvZiBVUkxzIHRvIHNoYXJkcyBvZiB0aGUgcmFzdGVyIHRpbGUgc2VydmVyIHRvIGJlIHVzZWQgYnkgdGhlIHJhc3RlciB0aWxlIGxheWVyLiAqL1xuICByYXN0ZXJTZXJ2ZXJVcmxzPzogc3RyaW5nW107XG4gIC8qKiBJZiB0cnVlIHRoZW4gdHJ5IHRvIGZldGNoIHF1YW50aXplZCBlbGV2YXRpb24gbWVzaGVzIGZyb20gcmFzdGVyIHNlcnZlcnMgKi9cbiAgcmFzdGVyU2VydmVyU3VwcG9ydHNFbGV2YXRpb24/OiBib29sZWFuO1xuICAvKiogSG93IG1hbnkgdGltZXMgdG8gcmV0cnkgYSByZXF1ZXN0IGlmIGNhc2Ugb2YgcmFzdGVyU2VydmVyU2VydmVyRXJyb3JzVG9SZXRyeSBlcnJvcnMgKi9cbiAgcmFzdGVyU2VydmVyTWF4UmV0cmllcz86IG51bWJlcjtcbiAgLyoqIEhvdyBsb25nIGJldHdlZW4gcmV0cmllcyAqL1xuICByYXN0ZXJTZXJ2ZXJSZXRyeURlbGF5PzogbnVtYmVyO1xuICAvKiogQW4gYXJyYXkgb2YgSFRUUCBzdGF0dXMgY29kZXMgdGhhdCBzaG91bGQgYmUgcmV0cmllZCB3aGVuIGVuY291bnRlcmVkLiAqL1xuICByYXN0ZXJTZXJ2ZXJTZXJ2ZXJFcnJvcnNUb1JldHJ5PzogbnVtYmVyW107XG4gIC8qKiBNYXhpbXVtIG51bWJlciBvZiBzaW11bHRhbmVvdXMgcmVxdWVzdHMgcGVyIHJhc3RlciBzZXJ2ZXIuIDAgLSBubyBsaW1pdCAqL1xuICByYXN0ZXJTZXJ2ZXJNYXhQZXJTZXJ2ZXJSZXF1ZXN0cz86IG51bWJlcjtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgc2VydmVyIGlucHV0IGZpZWxkIGluIHRoZSByYXN0ZXIgdGlsZSBsYXllciBzZXR1cCBmb3JtICovXG4gIHJhc3RlclNlcnZlclNob3dTZXJ2ZXJJbnB1dD86IGJvb2xlYW47XG5cbiAgLy8gV01TIGxheWVyIGNvbmZpZyAtLSBFeHBlcmltZW50YWxcbiAgLy8gV01TIGxheWVyIGlzIHVuZGVyIGRldmVsb3BtZW50IGFuZCBub3QgcmVhZHkgZm9yIHByb2R1Y3Rpb24gdXNlLiBEaXNhYmxlZCBieSBkZWZhdWx0LlxuICBlbmFibGVXTVNMYXllcj86IGJvb2xlYW47XG59O1xuXG5jb25zdCBERUZBVUxUX0FQUExJQ0FUSU9OX0NPTkZJRzogUmVxdWlyZWQ8S2VwbGVyQXBwbGljYXRpb25Db25maWc+ID0ge1xuICBkZWZhdWx0SHRtbE5hbWU6ICdrZXBsZXIuZ2wuaHRtbCcsXG4gIGRlZmF1bHRJbWFnZU5hbWU6ICdrZXBsZXIuZ2wucG5nJyxcbiAgZGVmYXVsdEpzb25OYW1lOiAna2VwbGVyLmdsLmpzb24nLFxuICBkZWZhdWx0RGF0YU5hbWU6ICdrZXBsZXIuZ2wnLFxuICBkZWZhdWx0RXhwb3J0SnNvblNldHRpbmdzOiB7XG4gICAgaGFzRGF0YTogdHJ1ZVxuICB9LFxuXG4gIGJhc2VNYXBMaWJyYXJ5Q29uZmlnOiB7XG4gICAgbWFwbGlicmU6IHtcbiAgICAgIGdldE1hcExpYjogKCkgPT4gaW1wb3J0KCdtYXBsaWJyZS1nbCcpLFxuICAgICAgbWFwTGliQ3NzQ2xhc3M6ICdtYXBsaWJyZWdsJyxcbiAgICAgIG1hcExpYkF0dHJpYnV0aW9uQ3NzQ2xhc3M6ICdtYXBsaWJyZS1hdHRyaWJ1dGlvbi1jb250YWluZXInLFxuICAgICAgbWFwTGliTmFtZTogJ01hcExpYnJlJyxcbiAgICAgIG1hcExpYlVybDogJ2h0dHBzOi8vd3d3Lm1hcGxpYnJlLm9yZy8nXG4gICAgfSxcbiAgICBtYXBib3g6IHtcbiAgICAgIGdldE1hcExpYjogKCkgPT4gaW1wb3J0KCdtYXBib3gtZ2wnKSxcbiAgICAgIG1hcExpYkNzc0NsYXNzOiAnbWFwYm94Z2wnLFxuICAgICAgbWFwTGliQXR0cmlidXRpb25Dc3NDbGFzczogJ21hcGJveC1hdHRyaWJ1dGlvbi1jb250YWluZXInLFxuICAgICAgbWFwTGliTmFtZTogJ01hcGJveCcsXG4gICAgICBtYXBMaWJVcmw6ICdodHRwczovL3d3dy5tYXBib3guY29tLydcbiAgICB9XG4gIH0sXG5cbiAgY2RuVXJsOiBLRVBMRVJfVU5GT0xERURfQlVDS0VULFxuXG4gIHBsdWdpbnM6IFtdLFxuICAvLyBUaGUgZGVmYXVsdCB0YWJsZSBjbGFzcyBpcyBLZXBsZXJUYWJsZS5cbiAgLy8gVE9ETyBpbmNsdWRlIEtlcGxlclRhYmxlIGhlcmUgd2hlbiB0aGUgY2lyY3VsYXIgZGVwZW5kZW5jeSB3aXRoIEBrZXBsZXIuZ2wvdGFibGUgYW5kIEBrZXBsZXIuZ2wvdXRpbHMgYXJlIHJlc29sdmVkLlxuICB0YWJsZTogbnVsbCxcbiAgZGF0YWJhc2U6IG51bGwsXG5cbiAgdXNlQXJyb3dQcm9ncmVzc2l2ZUxvYWRpbmc6IHRydWUsXG4gIHNob3dSZWxlYXNlQmFubmVyOiB0cnVlLFxuICB1c2VPbkZpbHRlcmVkSXRlbXNDaGFuZ2U6IGZhbHNlLFxuXG4gIC8vIFJhc3RlciBUaWxlIGxheWVyIGNvbmZpZ1xuICBlbmFibGVSYXN0ZXJUaWxlTGF5ZXI6IGZhbHNlLFxuICByYXN0ZXJTZXJ2ZXJVc2VMYXRlc3RUaXRpbGVyOiB0cnVlLFxuXG4gIC8vIFRPRE86IHByb3ZpZGUgYSBkZWZhdWx0IGZyZWUgc2VydmVyIG9yIGxlYXZlIGJsYW5rXG4gIHJhc3RlclNlcnZlclVybHM6IFtdLFxuICByYXN0ZXJTZXJ2ZXJTdXBwb3J0c0VsZXZhdGlvbjogdHJ1ZSxcbiAgcmFzdGVyU2VydmVyTWF4UmV0cmllczogMSxcbiAgcmFzdGVyU2VydmVyUmV0cnlEZWxheTogMTAwMDAsXG4gIHJhc3RlclNlcnZlclNlcnZlckVycm9yc1RvUmV0cnk6IFs1MDNdLFxuICByYXN0ZXJTZXJ2ZXJNYXhQZXJTZXJ2ZXJSZXF1ZXN0czogMCxcbiAgcmFzdGVyU2VydmVyU2hvd1NlcnZlcklucHV0OiBmYWxzZSxcblxuICAvLyBXTVMgbGF5ZXIgY29uZmlnXG4gIGVuYWJsZVdNU0xheWVyOiBmYWxzZVxufTtcblxuY29uc3QgYXBwbGljYXRpb25Db25maWc6IFJlcXVpcmVkPEtlcGxlckFwcGxpY2F0aW9uQ29uZmlnPiA9IERFRkFVTFRfQVBQTElDQVRJT05fQ09ORklHO1xuXG5leHBvcnQgY29uc3QgZ2V0QXBwbGljYXRpb25Db25maWcgPSAoKTogUmVxdWlyZWQ8S2VwbGVyQXBwbGljYXRpb25Db25maWc+ID0+IGFwcGxpY2F0aW9uQ29uZmlnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5pdEFwcGxpY2F0aW9uQ29uZmlnKGFwcENvbmZpZzogS2VwbGVyQXBwbGljYXRpb25Db25maWcgPSB7fSkge1xuICBPYmplY3QuYXNzaWduKGFwcGxpY2F0aW9uQ29uZmlnLCBhcHBDb25maWcpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFLQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFBNEQsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFJLHdCQUFBSixDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLGVBQUFBLENBQUEsb0JBQUFNLFFBQUEsYUFBQU4sQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLEdBQUEsQ0FBQVAsQ0FBQSxVQUFBRyxDQUFBLENBQUFLLEdBQUEsQ0FBQVIsQ0FBQSxPQUFBUyxDQUFBLEtBQUFDLFNBQUEsVUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxDQUFBLElBQUFmLENBQUEsb0JBQUFlLENBQUEsT0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFqQixDQUFBLEVBQUFlLENBQUEsU0FBQUcsQ0FBQSxHQUFBUCxDQUFBLEdBQUFDLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWQsQ0FBQSxFQUFBZSxDQUFBLFVBQUFHLENBQUEsS0FBQUEsQ0FBQSxDQUFBVixHQUFBLElBQUFVLENBQUEsQ0FBQUMsR0FBQSxJQUFBUCxNQUFBLENBQUFDLGNBQUEsQ0FBQUosQ0FBQSxFQUFBTSxDQUFBLEVBQUFHLENBQUEsSUFBQVQsQ0FBQSxDQUFBTSxDQUFBLElBQUFm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
|
|
@@ -155,7 +155,7 @@ export declare function getCategoricalColorScale(colorDomain: number[] | string[
|
|
|
155
155
|
*/
|
|
156
156
|
export declare function initCustomPaletteByCustomScale({ scale, field, ordinalDomain, range, colorBreaks }: {
|
|
157
157
|
scale: string;
|
|
158
|
-
field
|
|
158
|
+
field?: Field;
|
|
159
159
|
ordinalDomain?: number[] | string[];
|
|
160
160
|
range: ColorRange;
|
|
161
161
|
colorBreaks: ColorBreakOrdinal[] | null;
|
package/dist/data-scale-utils.js
CHANGED
|
@@ -300,24 +300,43 @@ function getVisualChannelScaleByZoom(_ref3) {
|
|
|
300
300
|
* Get categorical colorMap from colors and domain (unique values)
|
|
301
301
|
*/
|
|
302
302
|
function getCategoricalColorMap(colors, domain) {
|
|
303
|
-
|
|
304
|
-
var colorToUniqueValues = {};
|
|
305
|
-
var uniqueValues = (0, _dataUtils.unique)(domain).filter(_commonUtils.notNullorUndefined).sort();
|
|
306
|
-
// each unique value assign to a color, the rest unique values assign to last color
|
|
307
|
-
var lastColor = colors[colors.length - 1];
|
|
308
|
-
for (var i = 0; i < uniqueValues.length; ++i) {
|
|
309
|
-
if (i < colors.length) {
|
|
310
|
-
colorToUniqueValues[colors[i]] = uniqueValues[i];
|
|
311
|
-
} else {
|
|
312
|
-
colorToUniqueValues[lastColor] = [].concat((0, _toConsumableArray2["default"])(Array.isArray(colorToUniqueValues[lastColor]) ? colorToUniqueValues[lastColor] : [colorToUniqueValues[lastColor]]), [uniqueValues[i]]);
|
|
313
|
-
}
|
|
314
|
-
}
|
|
303
|
+
var uniqueValues = (0, _dataUtils.unique)(domain).sort();
|
|
315
304
|
var colorMap = colors.map(function (color) {
|
|
316
|
-
if (color in colorToUniqueValues) {
|
|
317
|
-
return [colorToUniqueValues[color], color];
|
|
318
|
-
}
|
|
319
305
|
return [null, color];
|
|
320
306
|
});
|
|
307
|
+
if (colors.length === 0 || uniqueValues.length === 0) {
|
|
308
|
+
return colorMap;
|
|
309
|
+
}
|
|
310
|
+
var lastIndex = colors.length - 1;
|
|
311
|
+
var assignCount = Math.min(lastIndex, uniqueValues.length);
|
|
312
|
+
|
|
313
|
+
// Assign first values one-to-one up to the penultimate color (if any)
|
|
314
|
+
for (var i = 0; i < assignCount; i++) {
|
|
315
|
+
// @ts-ignore tuple
|
|
316
|
+
colorMap[i][0] = uniqueValues[i];
|
|
317
|
+
}
|
|
318
|
+
if (uniqueValues.length > colors.length) {
|
|
319
|
+
// Aggregate the rest (including the value that would have gone to last color)
|
|
320
|
+
// Build aggregated array incrementally to match legacy behavior
|
|
321
|
+
var aggregatedValues = [];
|
|
322
|
+
for (var _i = lastIndex; _i < uniqueValues.length; _i++) {
|
|
323
|
+
var value = uniqueValues[_i];
|
|
324
|
+
if (Array.isArray(value)) {
|
|
325
|
+
// Spread array elements to match legacy flattening behavior
|
|
326
|
+
aggregatedValues.push.apply(aggregatedValues, (0, _toConsumableArray2["default"])(value));
|
|
327
|
+
} else {
|
|
328
|
+
aggregatedValues.push(value);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
// @ts-ignore tuple
|
|
332
|
+
colorMap[lastIndex][0] = aggregatedValues;
|
|
333
|
+
} else if (uniqueValues.length === colors.length) {
|
|
334
|
+
// Exactly one per color
|
|
335
|
+
// @ts-ignore tuple
|
|
336
|
+
colorMap[lastIndex][0] = uniqueValues[lastIndex];
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
// @ts-ignore tuple
|
|
321
340
|
return colorMap;
|
|
322
341
|
}
|
|
323
342
|
|
|
@@ -580,7 +599,7 @@ function initCustomPaletteByCustomScale(_ref9) {
|
|
|
580
599
|
ordinalDomain = _ref9.ordinalDomain,
|
|
581
600
|
range = _ref9.range,
|
|
582
601
|
colorBreaks = _ref9.colorBreaks;
|
|
583
|
-
var customPaletteName = "color.customPalette.".concat(scale, ".").concat(field.name);
|
|
602
|
+
var customPaletteName = "color.customPalette.".concat(scale, ".").concat((field === null || field === void 0 ? void 0 : field.name) || 'point-count');
|
|
584
603
|
// reuse range.colorMap if the field and scale not changed
|
|
585
604
|
var reuseColorMap = range.colorMap && range.name === customPaletteName && range.type === scale;
|
|
586
605
|
var colorMap = reuseColorMap ? range.colorMap : scale === _constants.SCALE_TYPES.customOrdinal && ordinalDomain ? getCategoricalColorMap(range.colors, ordinalDomain) : colorBreaks && isNumericColorBreaks(colorBreaks) ? colorBreaksToColorMap(colorBreaks) : null;
|
|
@@ -598,4 +617,4 @@ function initCustomPaletteByCustomScale(_ref9) {
|
|
|
598
617
|
};
|
|
599
618
|
return customPalette;
|
|
600
619
|
}
|
|
601
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZDNBcnJheSIsInJlcXVpcmUiLCJfdW5pcSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbW9tZW50IiwiX2NvbW1vblV0aWxzIiwiX2NvbnN0YW50cyIsIl9jb2xvclV0aWxzIiwiX2RhdGFVdGlscyIsIl9maWx0ZXJVdGlscyIsIl91dGlscyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiZ2V0UXVhbnRpbGVEb21haW4iLCJkYXRhIiwidmFsdWVBY2Nlc3NvciIsInNvcnRGdW5jIiwidmFsdWVzIiwibWFwIiwibm90TnVsbG9yVW5kZWZpbmVkIiwic29ydCIsImdldE9yZGluYWxEb21haW4iLCJkYXRhQ29udGFpbmVyIiwibWFwSW5kZXgiLCJ1bmlxdWUiLCJnZXRMaW5lYXJEb21haW4iLCJyYW5nZSIsImV4dGVudCIsImQiLCJpIiwidW5kZWZpbmVkIiwiZ2V0TG9nRG9tYWluIiwiX2dldExpbmVhckRvbWFpbiIsIl9nZXRMaW5lYXJEb21haW4yIiwiX3NsaWNlZFRvQXJyYXkyIiwiZDAiLCJkMSIsImlzRG9tYWluU3RvcHMiLCJkb21haW4iLCJpc1BsYWluT2JqZWN0IiwiQXJyYXkiLCJpc0FycmF5Iiwic3RvcHMiLCJ6IiwiaXNEb21haW5RdWFudGlsZSIsInF1YW50aWxlcyIsImdldFRocmVzaG9sZHNGcm9tUXVhbnRpbGVzIiwiYnVja2V0cyIsInRocmVzaG9sZHMiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsInBvc2l0aW9uIiwiZDNRdWFudGlsZSIsImdldERvbWFpblN0ZXBzYnlab29tIiwic3RlcHMiLCJiaXNlY3RMZWZ0IiwiTWF0aCIsIm1heCIsImdldFNjYWxlRnVuY3Rpb24iLCJzY2FsZSIsImZpeGVkIiwic2NhbGVGdW5jdGlvbiIsIlNDQUxFX0ZVTkMiLCJzY2FsZVR5cGUiLCJnZXRUaHJlc2hvbGRMYWJlbHMiLCJsYWJlbEZvcm1hdCIsImdlbkxlbmd0aCIsImludmVydCIsImludmVydEV4dGVudCIsImlucHV0cyIsInJldmVyc2VGb3JtYXROdW1iZXIiLCJsYWJlbCIsImNvbmNhdCIsImdldFNjYWxlTGFiZWxzIiwiY3VzdG9tU2NhbGVMYWJlbEZvcm1hdCIsIm4iLCJmb3JtYXROdW1iZXIiLCJnZXRRdWFudExlZ2VuZHMiLCJ0aHJlc2hvbGRMYWJlbEZvcm1hdCIsInR5cGUiLCJsYWJlbHMiLCJpbmRleCIsInJnYlRvSGV4IiwiZ2V0T3JkaW5hbExlZ2VuZHMiLCJkYXR1bSIsImlzUmdiQ29sb3IiLCJkZWZhdWx0Rm9ybWF0IiwiZ2V0VGltZUxhYmVsRm9ybWF0IiwiZm9ybWF0dGVyIiwiZ2V0VGltZVdpZGdldEhpbnRGb3JtYXR0ZXIiLCJ2YWwiLCJtb21lbnQiLCJ1dGMiLCJmb3JtYXQiLCJnZXRRdWFudExhYmVsRm9ybWF0IiwiZmllbGRUeXBlIiwiQUxMX0ZJRUxEX1RZUEVTIiwidGltZXN0YW1wIiwiaXNOdW1iZXIiLCJnZXRMZWdlbmRPZlNjYWxlIiwiX3JlZiIsImJ5Wm9vbSIsIlNDQUxFX1RZUEVTIiwib3JkaW5hbCIsImN1c3RvbU9yZGluYWwiLCJzdHJpbmciLCJmb3JtYXRMYWJlbCIsImdldExheWVyQ29sb3JTY2FsZSIsIl9yZWYyIiwibGF5ZXIiLCJnZXRDb2xvclNjYWxlIiwiaW5pdGlhbGl6ZUxheWVyQ29sb3JNYXAiLCJ2aXN1YWxDaGFubmVsIiwiY29uZmlnIiwidmlzQ29uZmlnIiwiZmllbGQiLCJjb2xvckJyZWFrcyIsImNvbG9yQnJlYWtzVG9Db2xvck1hcCIsImdldFZpc3VhbENoYW5uZWxTY2FsZUJ5Wm9vbSIsIl9yZWYzIiwiX3NjYWxlIiwibWFwU3RhdGUiLCJfbGF5ZXIkbWV0YSIsIm1ldGEiLCJnZXRab29tIiwiem9vbSIsImdldENhdGVnb3JpY2FsQ29sb3JNYXAiLCJjb2xvcnMiLCJjb2xvclRvVW5pcXVlVmFsdWVzIiwidW5pcXVlVmFsdWVzIiwibGFzdENvbG9yIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImNvbG9yTWFwIiwiY29sb3IiLCJjb2xvck1hcFRvQ2F0ZWdvcmljYWxDb2xvckJyZWFrcyIsIl9yZWY0IiwiX3JlZjUiLCJ2YWx1ZSIsImNvbG9yQnJlYWtzVG9DYXRlZ29yaWNhbENvbG9yTWFwIiwidW5pcSIsImNiIiwiY29sb3JCcmVhayIsImNvbG9yTWFwVG9Db2xvckJyZWFrcyIsIl9yZWY2IiwiX3JlZjciLCJJbmZpbml0eSIsImlzTnVtZXJpY0NvbG9yQnJlYWtzIiwiQm9vbGVhbiIsImdldEhpc3RvZ3JhbURvbWFpbiIsIl9yZWY4IiwiYWdncmVnYXRlZEJpbnMiLCJjb2x1bW5TdGF0cyIsImRhdGFzZXQiLCJmaWVsZFZhbHVlQWNjZXNzb3IiLCJkb21haW5NaW4iLCJQT1NJVElWRV9JTkZJTklUWSIsImRvbWFpbk1heCIsIk5FR0FUSVZFX0lORklOSVRZIiwiblZhbGlkIiwiZG9tYWluU3VtIiwiYmluIiwibWVhbiIsImFsbEluZGV4ZXMiLCJ4IiwiaGlzdG9ncmFtTWVhbiIsInJlc2V0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgiLCJuZXdDb2xvck1hcCIsImNtIiwic2VsZWN0UmVzdENhdGVnb3JpY2FsQ29sb3JNYXBCeUluZGV4IiwidW5pcVZhbHVlRGljdCIsImZyb21FbnRyaWVzIiwidG9BcnJheSIsInYiLCJyZXN0IiwicmVtb3ZlQ2F0ZWdvcmljYWxWYWx1ZUZyb21Db2xvck1hcCIsIml0ZW0iLCJjdXJyZW50VW5pcXVlVmFsdWVzIiwidXBkYXRlZFVuaXF1ZVZhbHVlcyIsImFkZENhdGVnb3JpY2FsVmFsdWVzVG9Db2xvck1hcCIsIml0ZW1zIiwiaW5jbHVkZXMiLCJnZXRDYXRlZ29yaWNhbENvbG9yU2NhbGUiLCJjb2xvckRvbWFpbiIsImNvbG9yUmFuZ2UiLCJ1c2VSZ2IiLCJjTWFwIiwiaGV4VG9SZ2IiLCJ1bmtub3duIiwiTk9fVkFMVUVfQ09MT1IiLCJpbml0Q3VzdG9tUGFsZXR0ZUJ5Q3VzdG9tU2NhbGUiLCJfcmVmOSIsIm9yZGluYWxEb21haW4iLCJjdXN0b21QYWxldHRlTmFtZSIsIm5hbWUiLCJyZXVzZUNvbG9yTWFwIiwiY3VzdG9tUGFsZXR0ZSIsImNhdGVnb3J5Il0sInNvdXJjZXMiOlsiLi4vc3JjL2RhdGEtc2NhbGUtdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtiaXNlY3RMZWZ0LCBxdWFudGlsZVNvcnRlZCBhcyBkM1F1YW50aWxlLCBleHRlbnR9IGZyb20gJ2QzLWFycmF5JztcbmltcG9ydCB1bmlxIGZyb20gJ2xvZGFzaC91bmlxJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuaW1wb3J0IHtub3ROdWxsb3JVbmRlZmluZWQsIHRvQXJyYXl9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7QUxMX0ZJRUxEX1RZUEVTLCBTQ0FMRV9GVU5DLCBTQ0FMRV9UWVBFUywgTk9fVkFMVUVfQ09MT1J9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbi8vIGltcG9ydCB7RmlsdGVyUHJvcHMsIEtlcGxlclRhYmxlfSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge1xuICBBZ2dyZWdhdGVkQmluLFxuICBDb2xvck1hcCxcbiAgQ29sb3JSYW5nZSxcbiAgSGV4Q29sb3IsXG4gIEtlcGxlckxheWVyIGFzIExheWVyLFxuICBNYXBTdGF0ZSxcbiAgVmlzdWFsQ2hhbm5lbCxcbiAgVmlzdWFsQ2hhbm5lbERvbWFpbixcbiAgUkdCQ29sb3IsXG4gIFJHQkFDb2xvcixcbiAgQ29sb3JVSSxcbiAgRmllbGRcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7aXNSZ2JDb2xvciwgcmdiVG9IZXgsIGhleFRvUmdifSBmcm9tICcuL2NvbG9yLXV0aWxzJztcbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZX0gZnJvbSAnLi9kYXRhLWNvbnRhaW5lci1pbnRlcmZhY2UnO1xuaW1wb3J0IHtmb3JtYXROdW1iZXIsIGlzTnVtYmVyLCByZXZlcnNlRm9ybWF0TnVtYmVyLCB1bmlxdWV9IGZyb20gJy4vZGF0YS11dGlscyc7XG5pbXBvcnQge2dldFRpbWVXaWRnZXRIaW50Rm9ybWF0dGVyfSBmcm9tICcuL2ZpbHRlci11dGlscyc7XG5pbXBvcnQge2lzUGxhaW5PYmplY3R9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBDb2xvckJyZWFrID0ge1xuICBkYXRhOiBIZXhDb2xvcjtcbiAgbGFiZWw6IHN0cmluZztcbiAgcmFuZ2U6IG51bWJlcltdO1xuICBpbnB1dHM6IG51bWJlcltdO1xufTtcbmV4cG9ydCB0eXBlIENvbG9yQnJlYWtPcmRpbmFsID0ge1xuICBkYXRhOiBIZXhDb2xvcjtcbiAgbGFiZWw6IHN0cmluZyB8IG51bWJlciB8IHN0cmluZ1tdIHwgbnVtYmVyW10gfCBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgRDNTY2FsZUZ1bmN0aW9uID0gUmVjb3JkPHN0cmluZywgYW55PiAmICgoeDogYW55KSA9PiBhbnkpO1xuXG4vLyBUT0RPIGlzb2xhdGUgdHlwZXMgLSBkZXBlbmRzIG9uIEBrZXBsZXIuZ2wvbGF5ZXJzXG50eXBlIEZpbHRlclByb3BzID0gYW55O1xudHlwZSBLZXBsZXJUYWJsZSA9IGFueTtcblxuZXhwb3J0IHR5cGUgTGFiZWxGb3JtYXQgPSAobjogbnVtYmVyLCB0eXBlPzogc3RyaW5nKSA9PiBzdHJpbmc7XG50eXBlIGRhdGFWYWx1ZUFjY2Vzc29yID0gPFQ+KHBhcmFtOiBUKSA9PiBUO1xudHlwZSBkYXRhQ29udGFpbmVyVmFsdWVBY2Nlc3NvciA9IChkOiB7aW5kZXg6IG51bWJlcn0sIGRjOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PiBhbnk7XG50eXBlIHNvcnQgPSAoYTogYW55LCBiOiBhbnkpID0+IGFueTtcbi8qKlxuICogcmV0dXJuIHF1YW50aWxlIGRvbWFpbiBmb3IgYW4gYXJyYXkgb2YgZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UXVhbnRpbGVEb21haW4oXG4gIGRhdGE6IGFueVtdLFxuICB2YWx1ZUFjY2Vzc29yPzogZGF0YVZhbHVlQWNjZXNzb3IsXG4gIHNvcnRGdW5jPzogc29ydFxuKTogbnVtYmVyW10ge1xuICBjb25zdCB2YWx1ZXMgPSB0eXBlb2YgdmFsdWVBY2Nlc3NvciA9PT0gJ2Z1bmN0aW9uJyA/IGRhdGEubWFwKHZhbHVlQWNjZXNzb3IpIDogZGF0YTtcblxuICByZXR1cm4gdmFsdWVzLmZpbHRlcihub3ROdWxsb3JVbmRlZmluZWQpLnNvcnQoc29ydEZ1bmMpO1xufVxuXG4vKipcbiAqIHJldHVybiBvcmRpbmFsIGRvbWFpbiBmb3IgYSBkYXRhIGNvbnRhaW5lclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3JkaW5hbERvbWFpbihcbiAgZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSxcbiAgdmFsdWVBY2Nlc3NvcjogZGF0YUNvbnRhaW5lclZhbHVlQWNjZXNzb3Jcbik6IHN0cmluZ1tdIHtcbiAgY29uc3QgdmFsdWVzID0gZGF0YUNvbnRhaW5lci5tYXBJbmRleCh2YWx1ZUFjY2Vzc29yKTtcblxuICByZXR1cm4gdW5pcXVlKHZhbHVlcykuZmlsdGVyKG5vdE51bGxvclVuZGVmaW5lZCkuc29ydCgpO1xufVxuXG4vKipcbiAqIHJldHVybiBsaW5lYXIgZG9tYWluIGZvciBhbiBhcnJheSBvZiBkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5lYXJEb21haW4oXG4gIGRhdGE6IG51bWJlcltdLFxuICB2YWx1ZUFjY2Vzc29yPzogZGF0YVZhbHVlQWNjZXNzb3Jcbik6IFtudW1iZXIsIG51bWJlcl0ge1xuICBjb25zdCByYW5nZSA9IHR5cGVvZiB2YWx1ZUFjY2Vzc29yID09PSAnZnVuY3Rpb24nID8gZXh0ZW50KGRhdGEsIHZhbHVlQWNjZXNzb3IpIDogZXh0ZW50KGRhdGEpO1xuICByZXR1cm4gcmFuZ2UubWFwKChkOiB1bmRlZmluZWQgfCBudW1iZXIsIGk6IG51bWJlcikgPT4gKGQgPT09IHVuZGVmaW5lZCA/IGkgOiBkKSkgYXMgW1xuICAgIG51bWJlcixcbiAgICBudW1iZXJcbiAgXTtcbn1cblxuLyoqXG4gKiByZXR1cm4gbGluZWFyIGRvbWFpbiBmb3IgYW4gYXJyYXkgb2YgZGF0YS4gQSBsb2cgc2NhbGUgZG9tYWluIGNhbm5vdCBjb250YWluIDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExvZ0RvbWFpbihkYXRhOiBhbnlbXSwgdmFsdWVBY2Nlc3NvcjogZGF0YVZhbHVlQWNjZXNzb3IpOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgY29uc3QgW2QwLCBkMV0gPSBnZXRMaW5lYXJEb21haW4oZGF0YSwgdmFsdWVBY2Nlc3Nvcik7XG4gIHJldHVybiBbZDAgPT09IDAgPyAxZS01IDogZDAsIGQxXTtcbn1cblxuZXhwb3J0IHR5cGUgRG9tYWluU3RvcHMgPSB7XG4gIHN0b3BzOiBudW1iZXJbXTtcbiAgejogbnVtYmVyW107XG59O1xuXG4vKipcbiAqIHdoZXRoZXIgZmllbGQgZG9tYWluIGlzIHN0b3BzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RvbWFpblN0b3BzKGRvbWFpbjogdW5rbm93bik6IGRvbWFpbiBpcyBEb21haW5TdG9wcyB7XG4gIHJldHVybiBpc1BsYWluT2JqZWN0KGRvbWFpbikgJiYgQXJyYXkuaXNBcnJheShkb21haW4uc3RvcHMpICYmIEFycmF5LmlzQXJyYXkoZG9tYWluLnopO1xufVxuXG5leHBvcnQgdHlwZSBEb21haW5RdWFudGlsZXMgPSB7XG4gIHF1YW50aWxlczogbnVtYmVyW107XG4gIHo6IG51bWJlcltdO1xufTtcblxuLyoqXG4gKiB3aGV0aGVyIGZpZWxkIGRvbWFpbiBpcyBxdWFudGlsZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRG9tYWluUXVhbnRpbGUoZG9tYWluOiBhbnkpOiBkb21haW4gaXMgRG9tYWluUXVhbnRpbGVzIHtcbiAgcmV0dXJuIGlzUGxhaW5PYmplY3QoZG9tYWluKSAmJiBBcnJheS5pc0FycmF5KGRvbWFpbi5xdWFudGlsZXMpICYmIEFycmF5LmlzQXJyYXkoZG9tYWluLnopO1xufVxuXG4vKipcbiAqIGdldCB0aGUgZG9tYWluIGF0IHpvb21cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRocmVzaG9sZHNGcm9tUXVhbnRpbGVzKFxuICBxdWFudGlsZXM6IG51bWJlcltdLFxuICBidWNrZXRzOiBudW1iZXJcbik6IChudW1iZXIgfCB1bmRlZmluZWQpW10ge1xuICBjb25zdCB0aHJlc2hvbGRzID0gW107XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKGJ1Y2tldHMpIHx8IGJ1Y2tldHMgPCAxKSB7XG4gICAgcmV0dXJuIFtxdWFudGlsZXNbMF0sIHF1YW50aWxlc1txdWFudGlsZXMubGVuZ3RoIC0gMV1dO1xuICB9XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYnVja2V0czsgaSsrKSB7XG4gICAgLy8gcG9zaXRpb24gaW4gc29ydGVkIGFycmF5XG4gICAgY29uc3QgcG9zaXRpb24gPSBpIC8gYnVja2V0cztcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhyZXNob2xkcy5wdXNoKGQzUXVhbnRpbGUocXVhbnRpbGVzLCBwb3NpdGlvbikpO1xuICB9XG5cbiAgcmV0dXJuIHRocmVzaG9sZHM7XG59XG5cbi8qKlxuICogZ2V0IHRoZSBkb21haW4gYXQgem9vbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RG9tYWluU3RlcHNieVpvb20oZG9tYWluOiBhbnlbXSwgc3RlcHM6IG51bWJlcltdLCB6OiBudW1iZXIpOiBhbnkge1xuICBjb25zdCBpID0gYmlzZWN0TGVmdChzdGVwcywgeik7XG5cbiAgaWYgKHN0ZXBzW2ldID09PSB6KSB7XG4gICAgLy8gSWYgeiBpcyBhbiBpbnRlZ2VyIHZhbHVlIGV4YWN0bHkgbWF0Y2hpbmcgYSBzdGVwLCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgZG9tYWluXG4gICAgcmV0dXJuIGRvbWFpbltpXTtcbiAgfVxuICAvLyBPdGhlcndpc2UsIHJldHVybiB0aGUgbmV4dCBjb2Fyc2VzdCBkb21haW5cbiAgcmV0dXJuIGRvbWFpbltNYXRoLm1heChpIC0gMSwgMCldO1xufVxuXG4vKipcbiAqIEdldCBkMyBzY2FsZSBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NhbGVGdW5jdGlvbihcbiAgc2NhbGU6IHN0cmluZyxcbiAgcmFuZ2U6IGFueVtdIHwgSXRlcmFibGVJdGVyYXRvcjxhbnk+LFxuICBkb21haW46IChudW1iZXIgfCB1bmRlZmluZWQpW10gfCBzdHJpbmdbXSB8IEl0ZXJhYmxlSXRlcmF0b3I8YW55PixcbiAgZml4ZWQ/OiBib29sZWFuXG4pOiBEM1NjYWxlRnVuY3Rpb24ge1xuICBjb25zdCBzY2FsZUZ1bmN0aW9uID0gU0NBTEVfRlVOQ1tmaXhlZCA/ICdsaW5lYXInIDogc2NhbGVdKClcbiAgICAuZG9tYWluKGRvbWFpbilcbiAgICAucmFuZ2UoZml4ZWQgPyBkb21haW4gOiByYW5nZSk7XG4gIHNjYWxlRnVuY3Rpb24uc2NhbGVUeXBlID0gZml4ZWQgPyAnbGluZWFyJyA6IHNjYWxlO1xuICByZXR1cm4gc2NhbGVGdW5jdGlvbjtcbn1cblxuLyoqXG4gKiBHZXQgdGhyZXNob2xkIHNjYWxlIGNvbG9yIGxhYmVsc1xuICovXG5mdW5jdGlvbiBnZXRUaHJlc2hvbGRMYWJlbHMoXG4gIHNjYWxlOiBEM1NjYWxlRnVuY3Rpb24sXG4gIGxhYmVsRm9ybWF0OiBMYWJlbEZvcm1hdFxuKTogT21pdDxDb2xvckJyZWFrLCAnZGF0YSc+W10ge1xuICBjb25zdCBnZW5MZW5ndGggPSBzY2FsZS5yYW5nZSgpLmxlbmd0aDtcbiAgcmV0dXJuIHNjYWxlLnJhbmdlKCkubWFwKChkLCBpKSA9PiB7XG4gICAgY29uc3QgaW52ZXJ0ID0gc2NhbGUuaW52ZXJ0RXh0ZW50KGQpO1xuICAgIGNvbnN0IGlucHV0cyA9IFtcbiAgICAgIGkgPT09IDAgPyBudWxsIDogcmV2ZXJzZUZvcm1hdE51bWJlcihsYWJlbEZvcm1hdChpbnZlcnRbMF0pKSxcbiAgICAgIGkgPT09IGdlbkxlbmd0aCAtIDEgPyBudWxsIDogcmV2ZXJzZUZvcm1hdE51bWJlcihsYWJlbEZvcm1hdChpbnZlcnRbMV0pKVxuICAgIF07XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIHJhdyB2YWx1ZVxuICAgICAgcmFuZ2U6IGludmVydCxcbiAgICAgIC8vIGZvcm1hdHRlZCB2YWx1ZVxuICAgICAgaW5wdXRzLFxuICAgICAgbGFiZWw6XG4gICAgICAgIGkgPT09IDBcbiAgICAgICAgICA/IGBMZXNzIHRoYW4gJHtsYWJlbEZvcm1hdChpbnZlcnRbMV0pfWBcbiAgICAgICAgICA6IGkgPT09IGdlbkxlbmd0aCAtIDFcbiAgICAgICAgICA/IGAke2xhYmVsRm9ybWF0KGludmVydFswXSl9IG9yIG1vcmVgXG4gICAgICAgICAgOiBgJHtsYWJlbEZvcm1hdChpbnZlcnRbMF0pfSB0byAke2xhYmVsRm9ybWF0KGludmVydFsxXSl9YFxuICAgIH07XG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCBsaW5lYXIgLyBxdWFudCBzY2FsZSBjb2xvciBsYWJlbHNcbiAqL1xuZnVuY3Rpb24gZ2V0U2NhbGVMYWJlbHMoXG4gIHNjYWxlOiBEM1NjYWxlRnVuY3Rpb24sXG4gIGxhYmVsRm9ybWF0OiBMYWJlbEZvcm1hdFxuKTogT21pdDxDb2xvckJyZWFrLCAnZGF0YSc+W10ge1xuICByZXR1cm4gc2NhbGUucmFuZ2UoKS5tYXAoZCA9PiB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGludmVydCA9IHNjYWxlLmludmVydEV4dGVudChkKTtcbiAgICBjb25zdCBpbnB1dHMgPSBbXG4gICAgICByZXZlcnNlRm9ybWF0TnVtYmVyKGxhYmVsRm9ybWF0KGludmVydFswXSkpLFxuICAgICAgcmV2ZXJzZUZvcm1hdE51bWJlcihsYWJlbEZvcm1hdChpbnZlcnRbMV0pKVxuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IGAke2xhYmVsRm9ybWF0KGludmVydFswXSl9IHRvICR7bGFiZWxGb3JtYXQoaW52ZXJ0WzFdKX1gLFxuICAgICAgLy8gcmF3IHZhbHVlXG4gICAgICByYW5nZTogaW52ZXJ0LFxuICAgICAgLy8gZm9ybWF0dGVkIHZhbHVlXG4gICAgICBpbnB1dHNcbiAgICB9O1xuICB9KTtcbn1cblxuY29uc3QgY3VzdG9tU2NhbGVMYWJlbEZvcm1hdCA9IG4gPT4gKG4gPyBmb3JtYXROdW1iZXIobiwgJ3JlYWwnKSA6ICdubyB2YWx1ZScpO1xuLyoqXG4gKiBHZXQgbGluZWFyIC8gcXVhbnQgc2NhbGUgY29sb3IgYnJlYWtzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRRdWFudExlZ2VuZHMoc2NhbGU6IEQzU2NhbGVGdW5jdGlvbiwgbGFiZWxGb3JtYXQ6IExhYmVsRm9ybWF0KTogQ29sb3JCcmVha1tdIHtcbiAgaWYgKHR5cGVvZiBzY2FsZS5pbnZlcnRFeHRlbnQgIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgY29uc3QgdGhyZXNob2xkTGFiZWxGb3JtYXQgPSAobiwgdHlwZSkgPT5cbiAgICBuICYmIGxhYmVsRm9ybWF0ID8gbGFiZWxGb3JtYXQobikgOiBuID8gZm9ybWF0TnVtYmVyKG4sIHR5cGUpIDogJ25vIHZhbHVlJztcbiAgY29uc3QgbGFiZWxzID1cbiAgICBzY2FsZS5zY2FsZVR5cGUgPT09ICd0aHJlc2hvbGQnXG4gICAgICA/IGdldFRocmVzaG9sZExhYmVscyhzY2FsZSwgdGhyZXNob2xkTGFiZWxGb3JtYXQpXG4gICAgICA6IHNjYWxlLnNjYWxlVHlwZSA9PT0gJ2N1c3RvbSdcbiAgICAgID8gZ2V0VGhyZXNob2xkTGFiZWxzKHNjYWxlLCBjdXN0b21TY2FsZUxhYmVsRm9ybWF0KVxuICAgICAgOiBnZXRTY2FsZUxhYmVscyhzY2FsZSwgbGFiZWxGb3JtYXQpO1xuXG4gIGNvbnN0IGRhdGEgPSBzY2FsZS5yYW5nZSgpO1xuXG4gIHJldHVybiBsYWJlbHMubWFwKChsYWJlbCwgaW5kZXgpID0+ICh7XG4gICAgZGF0YTogQXJyYXkuaXNBcnJheShkYXRhW2luZGV4XSkgPyByZ2JUb0hleChkYXRhW2luZGV4XSkgOiBkYXRhW2luZGV4XSxcbiAgICAuLi5sYWJlbFxuICB9KSk7XG59XG5cbi8qKlxuICogR2V0IG9yZGluYWwgY29sb3Igc2NhbGUgbGVnZW5kc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3JkaW5hbExlZ2VuZHMoc2NhbGU6IEQzU2NhbGVGdW5jdGlvbik6IENvbG9yQnJlYWtPcmRpbmFsW10ge1xuICBjb25zdCBkb21haW4gPSBzY2FsZS5kb21haW4oKTtcbiAgY29uc3QgbGFiZWxzID0gc2NhbGUuZG9tYWluKCk7XG4gIGNvbnN0IGRhdGEgPSBkb21haW4ubWFwKHNjYWxlKTtcblxuICByZXR1cm4gZGF0YS5tYXAoKGRhdHVtLCBpbmRleCkgPT4gKHtcbiAgICBkYXRhOiBpc1JnYkNvbG9yKGRhdHVtKSA/IHJnYlRvSGV4KGRhdHVtKSA6IGRhdHVtLFxuICAgIGxhYmVsOiBsYWJlbHNbaW5kZXhdXG4gIH0pKTtcbn1cblxuY29uc3QgZGVmYXVsdEZvcm1hdCA9IGQgPT4gZDtcblxuY29uc3QgZ2V0VGltZUxhYmVsRm9ybWF0ID0gZG9tYWluID0+IHtcbiAgY29uc3QgZm9ybWF0dGVyID0gZ2V0VGltZVdpZGdldEhpbnRGb3JtYXR0ZXIoZG9tYWluKTtcbiAgcmV0dXJuIHZhbCA9PiBtb21lbnQudXRjKHZhbCkuZm9ybWF0KGZvcm1hdHRlcik7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UXVhbnRMYWJlbEZvcm1hdChkb21haW4sIGZpZWxkVHlwZSkge1xuICAvLyBxdWFudCBzY2FsZSBjYW4gb25seSBiZSBhc3NpZ25lZCB0byBsaW5lYXIgRmllbGRzOiByZWFsLCB0aW1lc3RhbXAsIGludGVnZXJcbiAgcmV0dXJuIGZpZWxkVHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcFxuICAgID8gZ2V0VGltZUxhYmVsRm9ybWF0KGRvbWFpbilcbiAgICA6ICFmaWVsZFR5cGVcbiAgICA/IGRlZmF1bHRGb3JtYXRcbiAgICA6IG4gPT4gKGlzTnVtYmVyKG4pID8gZm9ybWF0TnVtYmVyKG4sIGZpZWxkVHlwZSkgOiAnbm8gdmFsdWUnKTtcbn1cblxuLyoqXG4gKiBHZXQgbGVnZW5kcyBmb3Igc2NhbGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExlZ2VuZE9mU2NhbGUoe1xuICBzY2FsZSxcbiAgc2NhbGVUeXBlLFxuICBsYWJlbEZvcm1hdCxcbiAgZmllbGRUeXBlXG59OiB7XG4gIHNjYWxlPzogRDNTY2FsZUZ1bmN0aW9uIHwgbnVsbDtcbiAgc2NhbGVUeXBlOiBzdHJpbmc7XG4gIGxhYmVsRm9ybWF0PzogTGFiZWxGb3JtYXQ7XG4gIGZpZWxkVHlwZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbn0pOiBDb2xvckJyZWFrW10gfCBDb2xvckJyZWFrT3JkaW5hbFtdIHtcbiAgaWYgKCFzY2FsZSB8fCBzY2FsZS5ieVpvb20pIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgaWYgKFxuICAgIHNjYWxlVHlwZSA9PT0gU0NBTEVfVFlQRVMub3JkaW5hbCB8fFxuICAgIHNjYWxlVHlwZSA9PT0gU0NBTEVfVFlQRVMuY3VzdG9tT3JkaW5hbCB8fFxuICAgIGZpZWxkVHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ1xuICApIHtcbiAgICByZXR1cm4gZ2V0T3JkaW5hbExlZ2VuZHMoc2NhbGUpO1xuICB9XG5cbiAgY29uc3QgZm9ybWF0TGFiZWwgPSBsYWJlbEZvcm1hdCB8fCBnZXRRdWFudExhYmVsRm9ybWF0KHNjYWxlLmRvbWFpbigpLCBmaWVsZFR5cGUpO1xuXG4gIHJldHVybiBnZXRRdWFudExlZ2VuZHMoc2NhbGUsIGZvcm1hdExhYmVsKTtcbn1cblxuLyoqXG4gKiBHZXQgY29sb3Igc2NhbGUgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExheWVyQ29sb3JTY2FsZSh7XG4gIHJhbmdlLFxuICBkb21haW4sXG4gIHNjYWxlVHlwZSxcbiAgbGF5ZXJcbn06IHtcbiAgcmFuZ2U6IENvbG9yUmFuZ2UgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBkb21haW46IFZpc3VhbENoYW5uZWxEb21haW47XG4gIHNjYWxlVHlwZTogc3RyaW5nO1xuICBsYXllcjogTGF5ZXI7XG4gIGlzRml4ZWQ/OiBib29sZWFuO1xufSk6IEQzU2NhbGVGdW5jdGlvbiB8IG51bGwge1xuICBpZiAocmFuZ2UgJiYgZG9tYWluICYmIHNjYWxlVHlwZSkge1xuICAgIHJldHVybiBsYXllci5nZXRDb2xvclNjYWxlKHNjYWxlVHlwZSwgZG9tYWluLCByYW5nZSk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQ29udmVydCBjb2xvclJhbmdlLmNvbG9yTWFwIGludG8gY29sb3IgYnJlYWtzIFVJIGlucHV0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplTGF5ZXJDb2xvck1hcChsYXllcjogTGF5ZXIsIHZpc3VhbENoYW5uZWw6IFZpc3VhbENoYW5uZWwpOiBDb2xvck1hcCB7XG4gIGNvbnN0IGRvbWFpbiA9IGxheWVyLmNvbmZpZ1t2aXN1YWxDaGFubmVsLmRvbWFpbl07XG4gIGNvbnN0IHJhbmdlID0gbGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1t2aXN1YWxDaGFubmVsLnJhbmdlXTtcbiAgY29uc3Qgc2NhbGVUeXBlID0gbGF5ZXIuY29uZmlnW3Zpc3VhbENoYW5uZWwuc2NhbGVdO1xuICBjb25zdCBmaWVsZCA9IGxheWVyLmNvbmZpZ1t2aXN1YWxDaGFubmVsLmZpZWxkXTtcblxuICBjb25zdCBzY2FsZSA9IGdldExheWVyQ29sb3JTY2FsZSh7XG4gICAgcmFuZ2UsXG4gICAgZG9tYWluLFxuICAgIHNjYWxlVHlwZSxcbiAgICBsYXllclxuICB9KTtcblxuICBjb25zdCBjb2xvckJyZWFrcyA9IGdldExlZ2VuZE9mU2NhbGUoe1xuICAgIHNjYWxlOiBzY2FsZT8uYnlab29tID8gc2NhbGUoMCkgOiBzY2FsZSxcbiAgICBzY2FsZVR5cGUsXG4gICAgZmllbGRUeXBlOiBmaWVsZC50eXBlXG4gIH0pO1xuICByZXR1cm4gY29sb3JCcmVha3NUb0NvbG9yTWFwKGNvbG9yQnJlYWtzKTtcbn1cblxuLyoqXG4gKiBHZXQgdmlzdWFsIGNoYW5lbCBzY2FsZSBmdW5jdGlvbiBpZiBpdCdzIGJhc2VkIG9uIHpvb21cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZpc3VhbENoYW5uZWxTY2FsZUJ5Wm9vbSh7XG4gIHNjYWxlLFxuICBsYXllcixcbiAgbWFwU3RhdGVcbn06IHtcbiAgc2NhbGU6IEQzU2NhbGVGdW5jdGlvbiB8IG51bGw7XG4gIGxheWVyOiBMYXllcjtcbiAgbWFwU3RhdGU/OiBNYXBTdGF0ZTtcbn0pOiBEM1NjYWxlRnVuY3Rpb24gfCBudWxsIHtcbiAgaWYgKHNjYWxlPy5ieVpvb20pIHtcbiAgICBjb25zdCB6ID0gbGF5ZXIubWV0YT8uZ2V0Wm9vbSA/IGxheWVyLm1ldGEuZ2V0Wm9vbShtYXBTdGF0ZSkgOiBtYXBTdGF0ZT8uem9vbTtcbiAgICBzY2FsZSA9IE51bWJlci5pc0Zpbml0ZSh6KSA/IHNjYWxlKHopIDogbnVsbDtcbiAgfVxuICByZXR1cm4gc2NhbGU7XG59XG5cbi8qKlxuICogR2V0IGNhdGVnb3JpY2FsIGNvbG9yTWFwIGZyb20gY29sb3JzIGFuZCBkb21haW4gKHVuaXF1ZSB2YWx1ZXMpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYXRlZ29yaWNhbENvbG9yTWFwKFxuICBjb2xvcnM6IHN0cmluZ1tdLFxuICBkb21haW46IChzdHJpbmcgfCBudW1iZXIgfCBzdHJpbmdbXSB8IG51bWJlcltdIHwgbnVsbClbXVxuKTogYW55IHtcbiAgLy8gY29sb3JNYXA6IFtzdHJpbmcgfCBzdHJpbmdbXSwgaGV4c3RyaW5nXVxuICBjb25zdCBjb2xvclRvVW5pcXVlVmFsdWVzID0ge307XG4gIGNvbnN0IHVuaXF1ZVZhbHVlcyA9IHVuaXF1ZShkb21haW4pLmZpbHRlcihub3ROdWxsb3JVbmRlZmluZWQpLnNvcnQoKTtcbiAgLy8gZWFjaCB1bmlxdWUgdmFsdWUgYXNzaWduIHRvIGEgY29sb3IsIHRoZSByZXN0IHVuaXF1ZSB2YWx1ZXMgYXNzaWduIHRvIGxhc3QgY29sb3JcbiAgY29uc3QgbGFzdENvbG9yID0gY29sb3JzW2NvbG9ycy5sZW5ndGggLSAxXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB1bmlxdWVWYWx1ZXMubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoaSA8IGNvbG9ycy5sZW5ndGgpIHtcbiAgICAgIGNvbG9yVG9VbmlxdWVWYWx1ZXNbY29sb3JzW2ldXSA9IHVuaXF1ZVZhbHVlc1tpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29sb3JUb1VuaXF1ZVZhbHVlc1tsYXN0Q29sb3JdID0gW1xuICAgICAgICAuLi4oQXJyYXkuaXNBcnJheShjb2xvclRvVW5pcXVlVmFsdWVzW2xhc3RDb2xvcl0pXG4gICAgICAgICAgPyBjb2xvclRvVW5pcXVlVmFsdWVzW2xhc3RDb2xvcl1cbiAgICAgICAgICA6IFtjb2xvclRvVW5pcXVlVmFsdWVzW2xhc3RDb2xvcl1dKSxcbiAgICAgICAgdW5pcXVlVmFsdWVzW2ldXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNvbG9yTWFwID0gY29sb3JzLm1hcChjb2xvciA9PiB7XG4gICAgaWYgKGNvbG9yIGluIGNvbG9yVG9VbmlxdWVWYWx1ZXMpIHtcbiAgICAgIHJldHVybiBbY29sb3JUb1VuaXF1ZVZhbHVlc1tjb2xvcl0sIGNvbG9yXTtcbiAgICB9XG4gICAgcmV0dXJuIFtudWxsLCBjb2xvcl07XG4gIH0pO1xuXG4gIHJldHVybiBjb2xvck1hcDtcbn1cblxuLyoqXG4gKiBHZXQgY2F0ZWdvcmljYWwgY29sb3JCcmVha3MgZnJvbSBjb2xvck1hcFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29sb3JNYXBUb0NhdGVnb3JpY2FsQ29sb3JCcmVha3MoXG4gIGNvbG9yTWFwPzogQ29sb3JNYXAgfCBudWxsXG4pOiBDb2xvckJyZWFrT3JkaW5hbFtdIHwgbnVsbCB7XG4gIGlmICghY29sb3JNYXApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBjb2xvckJyZWFrcyA9IGNvbG9yTWFwLm1hcCgoW3ZhbHVlLCBjb2xvcl0pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogY29sb3IsXG4gICAgICBsYWJlbDogdmFsdWVcbiAgICB9O1xuICB9KTtcblxuICByZXR1cm4gY29sb3JCcmVha3M7XG59XG5cbi8qKlxuICogY3JlYXRlIGNhdGVnb3JpY2FsIGNvbG9yTWFwIGZyb20gY29sb3JCcmVha3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbG9yQnJlYWtzVG9DYXRlZ29yaWNhbENvbG9yTWFwKGNvbG9yQnJlYWtzOiBDb2xvckJyZWFrT3JkaW5hbFtdKTogQ29sb3JNYXAge1xuICAvLyBjb2xvck1hcDogW3N0cmluZyB8IHN0cmluZ1tdLCBoZXhzdHJpbmddXG4gIGNvbnN0IGNvbG9ycyA9IHVuaXEoY29sb3JCcmVha3MubWFwKGNiID0+IGNiLmRhdGEpKTtcbiAgY29uc3QgdmFsdWVzID0gdW5pcShjb2xvckJyZWFrcy5tYXAoY2IgPT4gY2IubGFiZWwpKTtcblxuICByZXR1cm4gZ2V0Q2F0ZWdvcmljYWxDb2xvck1hcChjb2xvcnMsIHZhbHVlcyk7XG59XG5cbi8qKlxuICogQ29udmVydCBjb2xvciBicmVha3MgVUkgaW5wdXQgaW50byBjb2xvclJhbmdlLmNvbG9yTWFwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2xvckJyZWFrc1RvQ29sb3JNYXAoY29sb3JCcmVha3M6IENvbG9yQnJlYWtbXSB8IENvbG9yQnJlYWtPcmRpbmFsW10pOiBDb2xvck1hcCB7XG4gIGNvbnN0IGNvbG9yTWFwID0gY29sb3JCcmVha3MubWFwKChjb2xvckJyZWFrLCBpKSA9PiB7XG4gICAgLy8gW3ZhbHVlLCBoZXhdXG4gICAgcmV0dXJuIFtcbiAgICAgIGNvbG9yQnJlYWsuaW5wdXRzXG4gICAgICAgID8gaSA9PT0gY29sb3JCcmVha3MubGVuZ3RoIC0gMVxuICAgICAgICAgID8gbnVsbCAvLyBsYXN0XG4gICAgICAgICAgOiBjb2xvckJyZWFrLmlucHV0c1sxXVxuICAgICAgICA6IGNvbG9yQnJlYWsubGFiZWwsXG4gICAgICBjb2xvckJyZWFrLmRhdGFcbiAgICBdO1xuICB9KTtcblxuICAvLyBAdHMtaWdub3JlIHR1cGxlXG4gIHJldHVybiBjb2xvck1hcDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGNvbG9yUmFuZ2UuY29sb3JNYXAgaW50byBjb2xvciBicmVha3MgVUkgaW5wdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbG9yTWFwVG9Db2xvckJyZWFrcyhjb2xvck1hcD86IENvbG9yTWFwIHwgbnVsbCk6IENvbG9yQnJlYWtbXSB8IG51bGwge1xuICBpZiAoIWNvbG9yTWFwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgY29sb3JCcmVha3MgPSBjb2xvck1hcC5tYXAoKFt2YWx1ZSwgY29sb3JdLCBpKSA9PiB7XG4gICAgY29uc3QgcmFuZ2UgPVxuICAgICAgaSA9PT0gMFxuICAgICAgICA/IC8vIGZpcnN0XG4gICAgICAgICAgWy1JbmZpbml0eSwgdmFsdWVdXG4gICAgICAgIDogLy8gbGFzdFxuICAgICAgICBpID09PSBjb2xvck1hcC5sZW5ndGggLSAxXG4gICAgICAgID8gW2NvbG9yTWFwW2kgLSAxXVswXSwgSW5maW5pdHldXG4gICAgICAgIDogLy8gZWxzZVxuICAgICAgICAgIFtjb2xvck1hcFtpIC0gMV1bMF0sIHZhbHVlXTtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogY29sb3IsXG4gICAgICByYW5nZSxcbiAgICAgIGlucHV0czogcmFuZ2UsXG4gICAgICBsYWJlbDpcbiAgICAgICAgLy8gZmlyc3RcbiAgICAgICAgaSA9PT0gMFxuICAgICAgICAgID8gYExlc3MgdGhhbiAke3ZhbHVlfWBcbiAgICAgICAgICA6IC8vIGxhc3RcbiAgICAgICAgICBpID09PSBjb2xvck1hcC5sZW5ndGggLSAxXG4gICAgICAgICAgPyBgJHtjb2xvck1hcFtpIC0gMV1bMF19IG9yIG1vcmVgXG4gICAgICAgICAgOiBgJHtjb2xvck1hcFtpIC0gMV1bMF19IHRvICR7dmFsdWV9YFxuICAgIH07XG4gIH0pO1xuXG4gIC8vIEB0cy1pZ25vcmUgaW1wbGVtZW50IGNvbnZlcnNpb24gZm9yIG9yZGluYWxcbiAgcmV0dXJuIGNvbG9yQnJlYWtzO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgY29sb3IgYnJlYWtzIGlzIGZvciBudW1lcmljIGZpZWxkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc051bWVyaWNDb2xvckJyZWFrcyhjb2xvckJyZWFrczogdW5rbm93bik6IGNvbG9yQnJlYWtzIGlzIENvbG9yQnJlYWtbXSB7XG4gIHJldHVybiBCb29sZWFuKEFycmF5LmlzQXJyYXkoY29sb3JCcmVha3MpICYmIGNvbG9yQnJlYWtzLmxlbmd0aCAmJiBjb2xvckJyZWFrc1swXS5pbnB1dHMpO1xufVxuXG4vLyByZXR1cm4gZG9tYWluTWluLCBkb21haW5NYXgsIGhpc3RvZ3JhbU1lYW5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIaXN0b2dyYW1Eb21haW4oe1xuICBhZ2dyZWdhdGVkQmlucyxcbiAgY29sdW1uU3RhdHMsXG4gIGRhdGFzZXQsXG4gIGZpZWxkVmFsdWVBY2Nlc3NvclxufToge1xuICBhZ2dyZWdhdGVkQmlucz86IEFnZ3JlZ2F0ZWRCaW5bXTtcbiAgY29sdW1uU3RhdHM/OiBGaWx0ZXJQcm9wc1snY29sdW1uU3RhdHMnXTtcbiAgZGF0YXNldD86IEtlcGxlclRhYmxlO1xuICBmaWVsZFZhbHVlQWNjZXNzb3I6IChpZHg6IHVua25vd24pID0+IG51bWJlcjtcbn0pIHtcbiAgbGV0IGRvbWFpbk1pbiA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgbGV0IGRvbWFpbk1heCA9IE51bWJlci5ORUdBVElWRV9JTkZJTklUWTtcbiAgbGV0IG5WYWxpZCA9IDA7XG4gIGxldCBkb21haW5TdW0gPSAwO1xuXG4gIGlmIChhZ2dyZWdhdGVkQmlucykge1xuICAgIE9iamVjdC52YWx1ZXMoYWdncmVnYXRlZEJpbnMpLmZvckVhY2goYmluID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IGJpbi52YWx1ZTtcbiAgICAgIGlmIChpc051bWJlcih2YWwpKSB7XG4gICAgICAgIGlmICh2YWwgPCBkb21haW5NaW4pIGRvbWFpbk1pbiA9IHZhbDtcbiAgICAgICAgaWYgKHZhbCA+IGRvbWFpbk1heCkgZG9tYWluTWF4ID0gdmFsO1xuICAgICAgICBkb21haW5TdW0gKz0gdmFsO1xuICAgICAgICBuVmFsaWQgKz0gMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoY29sdW1uU3RhdHMgJiYgY29sdW1uU3RhdHMucXVhbnRpbGVzICYmIGNvbHVtblN0YXRzLm1lYW4pIHtcbiAgICAgIC8vIG5vIG5lZWQgdG8gcmVjYWxjdWF0ZSBtaW4vbWF4L21lYW4gaWYgaXRzIGFscmVhZHkgaW4gY29sdW1uU3RhdHNcbiAgICAgIHJldHVybiBbXG4gICAgICAgIGNvbHVtblN0YXRzLnF1YW50aWxlc1swXS52YWx1ZSxcbiAgICAgICAgY29sdW1uU3RhdHMucXVhbnRpbGVzW2NvbHVtblN0YXRzLnF1YW50aWxlcy5sZW5ndGggLSAxXS52YWx1ZSxcbiAgICAgICAgY29sdW1uU3RhdHMubWVhblxuICAgICAgXTtcbiAgICB9XG4gICAgaWYgKGRhdGFzZXQgJiYgZmllbGRWYWx1ZUFjY2Vzc29yKSB7XG4gICAgICBkYXRhc2V0LmFsbEluZGV4ZXMuZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgY29uc3QgdmFsID0gZmllbGRWYWx1ZUFjY2Vzc29yKHgpO1xuICAgICAgICBpZiAoaXNOdW1iZXIodmFsKSkge1xuICAgICAgICAgIGlmICh2YWwgPCBkb21haW5NaW4pIGRvbWFpbk1pbiA9IHZhbDtcbiAgICAgICAgICBpZiAodmFsID4gZG9tYWluTWF4KSBkb21haW5NYXggPSB2YWw7XG4gICAgICAgICAgZG9tYWluU3VtICs9IHZhbDtcbiAgICAgICAgICBuVmFsaWQgKz0gMTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGhpc3RvZ3JhbU1lYW4gPSBuVmFsaWQgPiAwID8gZG9tYWluU3VtIC8gblZhbGlkIDogMDtcbiAgcmV0dXJuIFtuVmFsaWQgPiAwID8gZG9tYWluTWluIDogMCwgblZhbGlkID4gMCA/IGRvbWFpbk1heCA6IDAsIGhpc3RvZ3JhbU1lYW5dO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleChjb2xvck1hcDogQ29sb3JNYXAsIGluZGV4OiBudW1iZXIpOiBhbnkge1xuICBpZiAoIWNvbG9yTWFwKSB7XG4gICAgcmV0dXJuIGNvbG9yTWFwO1xuICB9XG4gIGNvbnN0IG5ld0NvbG9yTWFwID0gY29sb3JNYXAubWFwKChjbSwgaSkgPT4ge1xuICAgIGlmIChpID09PSBpbmRleCkge1xuICAgICAgcmV0dXJuIFtudWxsLCBjbVsxXV07XG4gICAgfVxuICAgIHJldHVybiBjbTtcbiAgfSk7XG4gIHJldHVybiBuZXdDb2xvck1hcDtcbn1cblxuLyoqXG4gKiBzZWxlY3QgcmVzdCBjYXRlZ29yaWNhbCB2YWx1ZXMgZm9yIGEgY29sb3JNYXAgYnkgaXRzIGluZGV4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RSZXN0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgoXG4gIGNvbG9yTWFwOiBDb2xvck1hcCB8IG51bGwsXG4gIGluZGV4OiBudW1iZXIsXG4gIHVuaXF1ZVZhbHVlcz86IG51bWJlcltdIHwgc3RyaW5nW11cbik6IENvbG9yTWFwIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gIGlmICghY29sb3JNYXAgfHwgIXVuaXF1ZVZhbHVlcykge1xuICAgIHJldHVybiBjb2xvck1hcDtcbiAgfVxuXG4gIC8vIGZpbmQgdW5pcXVlIHZhbHVlcyB0aGF0IGhhcyBub3QgYmVlbiB1c2VkIGluIGN1cnJlbnQgY29sb3JNYXBcbiAgY29uc3QgdW5pcVZhbHVlRGljdCA9IE9iamVjdC5mcm9tRW50cmllcyh1bmlxdWVWYWx1ZXMubWFwKHZhbCA9PiBbdmFsLCBmYWxzZV0pKTtcbiAgY29sb3JNYXAuZm9yRWFjaChjbSA9PiB7XG4gICAgdG9BcnJheShjbVswXSkuZm9yRWFjaCh2ID0+IHtcbiAgICAgIGlmICh2KSB1bmlxVmFsdWVEaWN0W3ZdID0gdHJ1ZTtcbiAgICB9KTtcbiAgfSk7XG4gIGNvbnN0IHJlc3QgPSBPYmplY3Qua2V5cyh1bmlxVmFsdWVEaWN0KS5maWx0ZXIodiA9PiAhdW5pcVZhbHVlRGljdFt2XSk7XG5cbiAgLy8gdXNlIHRoZSBub3QgdXNlZCB1bmlxdWUgdmFsdWVzIGluIHRoZSBzZWxlY3RlZCBjb2xvciBtYXBcbiAgY29uc3QgbmV3Q29sb3JNYXAgPSBjb2xvck1hcC5tYXAoKGNtLCBpKSA9PiB7XG4gICAgaWYgKGkgPT09IGluZGV4KSB7XG4gICAgICByZXR1cm4gW1suLi5yZXN0LCAuLi50b0FycmF5KGNtWzBdKV0sIGNtWzFdXTtcbiAgICB9XG4gICAgcmV0dXJuIGNtO1xuICB9KSBhcyBDb2xvck1hcDtcblxuICByZXR1cm4gbmV3Q29sb3JNYXA7XG59XG5cbi8qKlxuICogcmVtb3ZlIGEgY2F0ZWdvcmljYWwgdmFsdWUgZnJvbSBhIGNvbG9yTWFwIGJ5IGl0cyBpbmRleFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQ2F0ZWdvcmljYWxWYWx1ZUZyb21Db2xvck1hcChcbiAgY29sb3JNYXA6IENvbG9yTWFwIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgaXRlbTogbnVtYmVyIHwgc3RyaW5nLFxuICBpbmRleDogbnVtYmVyXG4pOiBDb2xvck1hcCB8IG51bGwgfCB1bmRlZmluZWQge1xuICBpZiAoIWNvbG9yTWFwKSB7XG4gICAgcmV0dXJuIGNvbG9yTWFwO1xuICB9XG4gIGNvbnN0IG5ld0NvbG9yTWFwID0gY29sb3JNYXAubWFwKChjbSwgaSkgPT4ge1xuICAgIGlmIChpID09PSBpbmRleCkge1xuICAgICAgaWYgKCFjbVswXSkge1xuICAgICAgICByZXR1cm4gW251bGwsIGNtWzFdXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnRVbmlxdWVWYWx1ZXMgPSB0b0FycmF5KGNtWzBdKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRVbmlxdWVWYWx1ZXMgPSBjdXJyZW50VW5pcXVlVmFsdWVzLmZpbHRlcih2ID0+IHYgIT09IGl0ZW0pO1xuICAgICAgcmV0dXJuIFt1cGRhdGVkVW5pcXVlVmFsdWVzLCBjbVsxXV07XG4gICAgfVxuICAgIHJldHVybiBjbTtcbiAgfSkgYXMgQ29sb3JNYXA7XG5cbiAgcmV0dXJuIG5ld0NvbG9yTWFwO1xufVxuXG4vKipcbiAqIGFkZCBjYXRlZ29yaWNhbCB2YWx1ZXMgKGZyb20gbXVsdGlzZWwgZHJvcGRvd24pIHRvIGEgY29sb3JNYXAgYnkgaXRzIGluZGV4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRDYXRlZ29yaWNhbFZhbHVlc1RvQ29sb3JNYXAoXG4gIGNvbG9yTWFwOiBDb2xvck1hcCxcbiAgaXRlbXM6IChzdHJpbmcgfCBudW1iZXIpW10sXG4gIGluZGV4OiBudW1iZXJcbik6IENvbG9yTWFwIHtcbiAgaWYgKCFjb2xvck1hcCkge1xuICAgIHJldHVybiBjb2xvck1hcDtcbiAgfVxuXG4gIGNvbnN0IG5ld0NvbG9yTWFwID0gY29sb3JNYXAubWFwKChjbSwgaSkgPT4ge1xuICAgIGlmIChpID09PSBpbmRleCkge1xuICAgICAgaWYgKCFjbVswXSkge1xuICAgICAgICByZXR1cm4gW2l0ZW1zLCBjbVsxXV07XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50VW5pcXVlVmFsdWVzID0gdG9BcnJheShjbVswXSk7XG4gICAgICBjb25zdCB1cGRhdGVkVW5pcXVlVmFsdWVzID0gdW5pcShjdXJyZW50VW5pcXVlVmFsdWVzLmNvbmNhdChpdGVtcykpO1xuICAgICAgcmV0dXJuIFt1cGRhdGVkVW5pcXVlVmFsdWVzLCBjbVsxXV07XG4gICAgfVxuICAgIC8vIHJlbW92ZSB2YWx1ZSBmcm9tIG90aGVyIGNvbG9yTWFwXG4gICAgY29uc3QgY3VycmVudFVuaXF1ZVZhbHVlcyA9IGNtWzBdO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnRVbmlxdWVWYWx1ZXMpKSB7XG4gICAgICBjb25zdCB1cGRhdGVkVW5pcXVlVmFsdWVzOiBzdHJpbmdbXSB8IG51bWJlcltdID0gKGN1cnJlbnRVbmlxdWVWYWx1ZXMgYXMgYW55W10pLmZpbHRlcihcbiAgICAgICAgdiA9PiAhaXRlbXMuaW5jbHVkZXModilcbiAgICAgICk7XG4gICAgICByZXR1cm4gW3VwZGF0ZWRVbmlxdWVWYWx1ZXMsIGNtWzFdXTtcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRVbmlxdWVWYWx1ZXMgJiYgaXRlbXMuaW5jbHVkZXMoY3VycmVudFVuaXF1ZVZhbHVlcykpIHtcbiAgICAgIHJldHVybiBbbnVsbCwgY21bMV1dO1xuICAgIH1cblxuICAgIHJldHVybiBjbTtcbiAgfSkgYXMgQ29sb3JNYXA7XG5cbiAgcmV0dXJuIG5ld0NvbG9yTWFwO1xufVxuXG4vKipcbiAqIGdldCBhIGNvbG9yIHNjYWxlIGZ1bmMgZm9yIGNhdGVnb3JpY2FsIChjdXN0b20gb3JkaW5hbCkgc2NhbGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhdGVnb3JpY2FsQ29sb3JTY2FsZShcbiAgY29sb3JEb21haW46IG51bWJlcltdIHwgc3RyaW5nW10sXG4gIGNvbG9yUmFuZ2U6IENvbG9yUmFuZ2UsXG4gIHVzZVJnYiA9IHRydWVcbik6IChjYXRlZ29yeVZhbHVlOiBzdHJpbmcgfCBudW1iZXIpID0+IFJHQkNvbG9yIHwgUkdCQUNvbG9yIHtcbiAgY29uc3QgY01hcCA9IGNvbG9yUmFuZ2UuY29sb3JNYXBcbiAgICA/IGNvbG9yUmFuZ2UuY29sb3JNYXBcbiAgICA6IGdldENhdGVnb3JpY2FsQ29sb3JNYXAoY29sb3JSYW5nZS5jb2xvcnMsIGNvbG9yRG9tYWluKTtcblxuICBjb25zdCByYW5nZTogbnVtYmVyW11bXSA9IFtdO1xuICBjb25zdCBkb21haW46IHN0cmluZ1tdID0gW107XG4gIGNNYXAuZm9yRWFjaChjbSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY21bMF0pKSB7XG4gICAgICBjbVswXS5mb3JFYWNoKHZhbCA9PiB7XG4gICAgICAgIGRvbWFpbi5wdXNoKHZhbCk7XG4gICAgICAgIHJhbmdlLnB1c2godXNlUmdiID8gaGV4VG9SZ2IoY21bMV0pIDogY21bMV0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvbWFpbi5wdXNoKGNtWzBdKTtcbiAgICAgIHJhbmdlLnB1c2godXNlUmdiID8gaGV4VG9SZ2IoY21bMV0pIDogY21bMV0pO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3Qgc2NhbGUgPSBnZXRTY2FsZUZ1bmN0aW9uKFNDQUxFX1RZUEVTLmN1c3RvbU9yZGluYWwsIHJhbmdlLCBkb21haW4sIGZhbHNlKTtcbiAgc2NhbGUudW5rbm93bihOT19WQUxVRV9DT0xPUik7XG4gIHJldHVybiBzY2FsZSBhcyBhbnk7XG59XG5cbi8qKlxuICogaW5pdGlhbGl6ZSBjdXN0b21QYWxldHRlIGJ5IGN1c3RvbSBzY2FsZSBvciBjdXN0b21PcmRpbmFsIHNjYWxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0Q3VzdG9tUGFsZXR0ZUJ5Q3VzdG9tU2NhbGUoe1xuICBzY2FsZSxcbiAgZmllbGQsXG4gIG9yZGluYWxEb21haW4sXG4gIHJhbmdlLFxuICBjb2xvckJyZWFrc1xufToge1xuICBzY2FsZTogc3RyaW5nO1xuICBmaWVsZDogRmllbGQ7XG4gIG9yZGluYWxEb21haW4/OiBudW1iZXJbXSB8IHN0cmluZ1tdO1xuICByYW5nZTogQ29sb3JSYW5nZTtcbiAgY29sb3JCcmVha3M6IENvbG9yQnJlYWtPcmRpbmFsW10gfCBudWxsO1xufSk6IENvbG9yVUlbJ2N1c3RvbVBhbGV0dGUnXSB7XG4gIGNvbnN0IGN1c3RvbVBhbGV0dGVOYW1lID0gYGNvbG9yLmN1c3RvbVBhbGV0dGUuJHtzY2FsZX0uJHtmaWVsZC5uYW1lfWA7XG4gIC8vIHJldXNlIHJhbmdlLmNvbG9yTWFwIGlmIHRoZSBmaWVsZCBhbmQgc2NhbGUgbm90IGNoYW5nZWRcbiAgY29uc3QgcmV1c2VDb2xvck1hcCA9IHJhbmdlLmNvbG9yTWFwICYmIHJhbmdlLm5hbWUgPT09IGN1c3RvbVBhbGV0dGVOYW1lICYmIHJhbmdlLnR5cGUgPT09IHNjYWxlO1xuICBjb25zdCBjb2xvck1hcCA9IHJldXNlQ29sb3JNYXBcbiAgICA/IHJhbmdlLmNvbG9yTWFwXG4gICAgOiBzY2FsZSA9PT0gU0NBTEVfVFlQRVMuY3VzdG9tT3JkaW5hbCAmJiBvcmRpbmFsRG9tYWluXG4gICAgPyBnZXRDYXRlZ29yaWNhbENvbG9yTWFwKHJhbmdlLmNvbG9ycywgb3JkaW5hbERvbWFpbilcbiAgICA6IGNvbG9yQnJlYWtzICYmIGlzTnVtZXJpY0NvbG9yQnJlYWtzKGNvbG9yQnJlYWtzKVxuICAgID8gY29sb3JCcmVha3NUb0NvbG9yTWFwKGNvbG9yQnJlYWtzKVxuICAgIDogbnVsbDtcbiAgY29uc3QgY29sb3JzID0gcmV1c2VDb2xvck1hcCA/IHJhbmdlLmNvbG9ycyA6IGNvbG9yTWFwID8gY29sb3JNYXAubWFwKGNtID0+IGNtWzFdKSA6IHJhbmdlLmNvbG9ycztcblxuICAvLyB1cGRhdGUgY3VzdG9tIGJyZWFrc1xuICBjb25zdCBjdXN0b21QYWxldHRlOiBDb2xvclVJWydjdXN0b21QYWxldHRlJ10gPSB7XG4gICAgY2F0ZWdvcnk6ICdDdXN0b20nLFxuICAgIG5hbWU6IGN1c3RvbVBhbGV0dGVOYW1lLFxuICAgIHR5cGU6IHNjYWxlLFxuICAgIGNvbG9yTWFwLFxuICAgIGNvbG9yczogY29sb3JzIHx8IFtdXG4gIH07XG5cbiAgcmV0dXJuIGN1c3RvbVBhbGV0dGU7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUksWUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssVUFBQSxHQUFBTCxPQUFBO0FBaUJBLElBQUFNLFdBQUEsR0FBQU4sT0FBQTtBQUVBLElBQUFPLFVBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLFlBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLE1BQUEsR0FBQVQsT0FBQTtBQUFzQyxTQUFBVSxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFBSixDQUFBO0FBQUEsU0FBQVUsY0FBQVosQ0FBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEsVUFBQUMsQ0FBQSxXQUFBVyxTQUFBLENBQUFaLENBQUEsSUFBQVksU0FBQSxDQUFBWixDQUFBLFFBQUFBLENBQUEsT0FBQUYsT0FBQSxDQUFBSSxNQUFBLENBQUFELENB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
|
|
620
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZDNBcnJheSIsInJlcXVpcmUiLCJfdW5pcSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbW9tZW50IiwiX2NvbW1vblV0aWxzIiwiX2NvbnN0YW50cyIsIl9jb2xvclV0aWxzIiwiX2RhdGFVdGlscyIsIl9maWx0ZXJVdGlscyIsIl91dGlscyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiZ2V0UXVhbnRpbGVEb21haW4iLCJkYXRhIiwidmFsdWVBY2Nlc3NvciIsInNvcnRGdW5jIiwidmFsdWVzIiwibWFwIiwibm90TnVsbG9yVW5kZWZpbmVkIiwic29ydCIsImdldE9yZGluYWxEb21haW4iLCJkYXRhQ29udGFpbmVyIiwibWFwSW5kZXgiLCJ1bmlxdWUiLCJnZXRMaW5lYXJEb21haW4iLCJyYW5nZSIsImV4dGVudCIsImQiLCJpIiwidW5kZWZpbmVkIiwiZ2V0TG9nRG9tYWluIiwiX2dldExpbmVhckRvbWFpbiIsIl9nZXRMaW5lYXJEb21haW4yIiwiX3NsaWNlZFRvQXJyYXkyIiwiZDAiLCJkMSIsImlzRG9tYWluU3RvcHMiLCJkb21haW4iLCJpc1BsYWluT2JqZWN0IiwiQXJyYXkiLCJpc0FycmF5Iiwic3RvcHMiLCJ6IiwiaXNEb21haW5RdWFudGlsZSIsInF1YW50aWxlcyIsImdldFRocmVzaG9sZHNGcm9tUXVhbnRpbGVzIiwiYnVja2V0cyIsInRocmVzaG9sZHMiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsInBvc2l0aW9uIiwiZDNRdWFudGlsZSIsImdldERvbWFpblN0ZXBzYnlab29tIiwic3RlcHMiLCJiaXNlY3RMZWZ0IiwiTWF0aCIsIm1heCIsImdldFNjYWxlRnVuY3Rpb24iLCJzY2FsZSIsImZpeGVkIiwic2NhbGVGdW5jdGlvbiIsIlNDQUxFX0ZVTkMiLCJzY2FsZVR5cGUiLCJnZXRUaHJlc2hvbGRMYWJlbHMiLCJsYWJlbEZvcm1hdCIsImdlbkxlbmd0aCIsImludmVydCIsImludmVydEV4dGVudCIsImlucHV0cyIsInJldmVyc2VGb3JtYXROdW1iZXIiLCJsYWJlbCIsImNvbmNhdCIsImdldFNjYWxlTGFiZWxzIiwiY3VzdG9tU2NhbGVMYWJlbEZvcm1hdCIsIm4iLCJmb3JtYXROdW1iZXIiLCJnZXRRdWFudExlZ2VuZHMiLCJ0aHJlc2hvbGRMYWJlbEZvcm1hdCIsInR5cGUiLCJsYWJlbHMiLCJpbmRleCIsInJnYlRvSGV4IiwiZ2V0T3JkaW5hbExlZ2VuZHMiLCJkYXR1bSIsImlzUmdiQ29sb3IiLCJkZWZhdWx0Rm9ybWF0IiwiZ2V0VGltZUxhYmVsRm9ybWF0IiwiZm9ybWF0dGVyIiwiZ2V0VGltZVdpZGdldEhpbnRGb3JtYXR0ZXIiLCJ2YWwiLCJtb21lbnQiLCJ1dGMiLCJmb3JtYXQiLCJnZXRRdWFudExhYmVsRm9ybWF0IiwiZmllbGRUeXBlIiwiQUxMX0ZJRUxEX1RZUEVTIiwidGltZXN0YW1wIiwiaXNOdW1iZXIiLCJnZXRMZWdlbmRPZlNjYWxlIiwiX3JlZiIsImJ5Wm9vbSIsIlNDQUxFX1RZUEVTIiwib3JkaW5hbCIsImN1c3RvbU9yZGluYWwiLCJzdHJpbmciLCJmb3JtYXRMYWJlbCIsImdldExheWVyQ29sb3JTY2FsZSIsIl9yZWYyIiwibGF5ZXIiLCJnZXRDb2xvclNjYWxlIiwiaW5pdGlhbGl6ZUxheWVyQ29sb3JNYXAiLCJ2aXN1YWxDaGFubmVsIiwiY29uZmlnIiwidmlzQ29uZmlnIiwiZmllbGQiLCJjb2xvckJyZWFrcyIsImNvbG9yQnJlYWtzVG9Db2xvck1hcCIsImdldFZpc3VhbENoYW5uZWxTY2FsZUJ5Wm9vbSIsIl9yZWYzIiwiX3NjYWxlIiwibWFwU3RhdGUiLCJfbGF5ZXIkbWV0YSIsIm1ldGEiLCJnZXRab29tIiwiem9vbSIsImdldENhdGVnb3JpY2FsQ29sb3JNYXAiLCJjb2xvcnMiLCJ1bmlxdWVWYWx1ZXMiLCJjb2xvck1hcCIsImNvbG9yIiwibGFzdEluZGV4IiwiYXNzaWduQ291bnQiLCJtaW4iLCJhZ2dyZWdhdGVkVmFsdWVzIiwidmFsdWUiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiY29sb3JNYXBUb0NhdGVnb3JpY2FsQ29sb3JCcmVha3MiLCJfcmVmNCIsIl9yZWY1IiwiY29sb3JCcmVha3NUb0NhdGVnb3JpY2FsQ29sb3JNYXAiLCJ1bmlxIiwiY2IiLCJjb2xvckJyZWFrIiwiY29sb3JNYXBUb0NvbG9yQnJlYWtzIiwiX3JlZjYiLCJfcmVmNyIsIkluZmluaXR5IiwiaXNOdW1lcmljQ29sb3JCcmVha3MiLCJCb29sZWFuIiwiZ2V0SGlzdG9ncmFtRG9tYWluIiwiX3JlZjgiLCJhZ2dyZWdhdGVkQmlucyIsImNvbHVtblN0YXRzIiwiZGF0YXNldCIsImZpZWxkVmFsdWVBY2Nlc3NvciIsImRvbWFpbk1pbiIsIlBPU0lUSVZFX0lORklOSVRZIiwiZG9tYWluTWF4IiwiTkVHQVRJVkVfSU5GSU5JVFkiLCJuVmFsaWQiLCJkb21haW5TdW0iLCJiaW4iLCJtZWFuIiwiYWxsSW5kZXhlcyIsIngiLCJoaXN0b2dyYW1NZWFuIiwicmVzZXRDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleCIsIm5ld0NvbG9yTWFwIiwiY20iLCJzZWxlY3RSZXN0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgiLCJ1bmlxVmFsdWVEaWN0IiwiZnJvbUVudHJpZXMiLCJ0b0FycmF5IiwidiIsInJlc3QiLCJyZW1vdmVDYXRlZ29yaWNhbFZhbHVlRnJvbUNvbG9yTWFwIiwiaXRlbSIsImN1cnJlbnRVbmlxdWVWYWx1ZXMiLCJ1cGRhdGVkVW5pcXVlVmFsdWVzIiwiYWRkQ2F0ZWdvcmljYWxWYWx1ZXNUb0NvbG9yTWFwIiwiaXRlbXMiLCJpbmNsdWRlcyIsImdldENhdGVnb3JpY2FsQ29sb3JTY2FsZSIsImNvbG9yRG9tYWluIiwiY29sb3JSYW5nZSIsInVzZVJnYiIsImNNYXAiLCJoZXhUb1JnYiIsInVua25vd24iLCJOT19WQUxVRV9DT0xPUiIsImluaXRDdXN0b21QYWxldHRlQnlDdXN0b21TY2FsZSIsIl9yZWY5Iiwib3JkaW5hbERvbWFpbiIsImN1c3RvbVBhbGV0dGVOYW1lIiwibmFtZSIsInJldXNlQ29sb3JNYXAiLCJjdXN0b21QYWxldHRlIiwiY2F0ZWdvcnkiXSwic291cmNlcyI6WyIuLi9zcmMvZGF0YS1zY2FsZS11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge2Jpc2VjdExlZnQsIHF1YW50aWxlU29ydGVkIGFzIGQzUXVhbnRpbGUsIGV4dGVudH0gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoL3VuaXEnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5pbXBvcnQge25vdE51bGxvclVuZGVmaW5lZCwgdG9BcnJheX0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtBTExfRklFTERfVFlQRVMsIFNDQUxFX0ZVTkMsIFNDQUxFX1RZUEVTLCBOT19WQUxVRV9DT0xPUn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuLy8gaW1wb3J0IHtGaWx0ZXJQcm9wcywgS2VwbGVyVGFibGV9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0ZWRCaW4sXG4gIENvbG9yTWFwLFxuICBDb2xvclJhbmdlLFxuICBIZXhDb2xvcixcbiAgS2VwbGVyTGF5ZXIgYXMgTGF5ZXIsXG4gIE1hcFN0YXRlLFxuICBWaXN1YWxDaGFubmVsLFxuICBWaXN1YWxDaGFubmVsRG9tYWluLFxuICBSR0JDb2xvcixcbiAgUkdCQUNvbG9yLFxuICBDb2xvclVJLFxuICBGaWVsZFxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuaW1wb3J0IHtpc1JnYkNvbG9yLCByZ2JUb0hleCwgaGV4VG9SZ2J9IGZyb20gJy4vY29sb3ItdXRpbHMnO1xuaW1wb3J0IHtEYXRhQ29udGFpbmVySW50ZXJmYWNlfSBmcm9tICcuL2RhdGEtY29udGFpbmVyLWludGVyZmFjZSc7XG5pbXBvcnQge2Zvcm1hdE51bWJlciwgaXNOdW1iZXIsIHJldmVyc2VGb3JtYXROdW1iZXIsIHVuaXF1ZX0gZnJvbSAnLi9kYXRhLXV0aWxzJztcbmltcG9ydCB7Z2V0VGltZVdpZGdldEhpbnRGb3JtYXR0ZXJ9IGZyb20gJy4vZmlsdGVyLXV0aWxzJztcbmltcG9ydCB7aXNQbGFpbk9iamVjdH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCB0eXBlIENvbG9yQnJlYWsgPSB7XG4gIGRhdGE6IEhleENvbG9yO1xuICBsYWJlbDogc3RyaW5nO1xuICByYW5nZTogbnVtYmVyW107XG4gIGlucHV0czogbnVtYmVyW107XG59O1xuZXhwb3J0IHR5cGUgQ29sb3JCcmVha09yZGluYWwgPSB7XG4gIGRhdGE6IEhleENvbG9yO1xuICBsYWJlbDogc3RyaW5nIHwgbnVtYmVyIHwgc3RyaW5nW10gfCBudW1iZXJbXSB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBEM1NjYWxlRnVuY3Rpb24gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+ICYgKCh4OiBhbnkpID0+IGFueSk7XG5cbi8vIFRPRE8gaXNvbGF0ZSB0eXBlcyAtIGRlcGVuZHMgb24gQGtlcGxlci5nbC9sYXllcnNcbnR5cGUgRmlsdGVyUHJvcHMgPSBhbnk7XG50eXBlIEtlcGxlclRhYmxlID0gYW55O1xuXG5leHBvcnQgdHlwZSBMYWJlbEZvcm1hdCA9IChuOiBudW1iZXIsIHR5cGU/OiBzdHJpbmcpID0+IHN0cmluZztcbnR5cGUgZGF0YVZhbHVlQWNjZXNzb3IgPSA8VD4ocGFyYW06IFQpID0+IFQ7XG50eXBlIGRhdGFDb250YWluZXJWYWx1ZUFjY2Vzc29yID0gKGQ6IHtpbmRleDogbnVtYmVyfSwgZGM6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+IGFueTtcbnR5cGUgc29ydCA9IChhOiBhbnksIGI6IGFueSkgPT4gYW55O1xuLyoqXG4gKiByZXR1cm4gcXVhbnRpbGUgZG9tYWluIGZvciBhbiBhcnJheSBvZiBkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRRdWFudGlsZURvbWFpbihcbiAgZGF0YTogYW55W10sXG4gIHZhbHVlQWNjZXNzb3I/OiBkYXRhVmFsdWVBY2Nlc3NvcixcbiAgc29ydEZ1bmM/OiBzb3J0XG4pOiBudW1iZXJbXSB7XG4gIGNvbnN0IHZhbHVlcyA9IHR5cGVvZiB2YWx1ZUFjY2Vzc29yID09PSAnZnVuY3Rpb24nID8gZGF0YS5tYXAodmFsdWVBY2Nlc3NvcikgOiBkYXRhO1xuXG4gIHJldHVybiB2YWx1ZXMuZmlsdGVyKG5vdE51bGxvclVuZGVmaW5lZCkuc29ydChzb3J0RnVuYyk7XG59XG5cbi8qKlxuICogcmV0dXJuIG9yZGluYWwgZG9tYWluIGZvciBhIGRhdGEgY29udGFpbmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcmRpbmFsRG9tYWluKFxuICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLFxuICB2YWx1ZUFjY2Vzc29yOiBkYXRhQ29udGFpbmVyVmFsdWVBY2Nlc3NvclxuKTogc3RyaW5nW10ge1xuICBjb25zdCB2YWx1ZXMgPSBkYXRhQ29udGFpbmVyLm1hcEluZGV4KHZhbHVlQWNjZXNzb3IpO1xuXG4gIHJldHVybiB1bmlxdWUodmFsdWVzKS5maWx0ZXIobm90TnVsbG9yVW5kZWZpbmVkKS5zb3J0KCk7XG59XG5cbi8qKlxuICogcmV0dXJuIGxpbmVhciBkb21haW4gZm9yIGFuIGFycmF5IG9mIGRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpbmVhckRvbWFpbihcbiAgZGF0YTogbnVtYmVyW10sXG4gIHZhbHVlQWNjZXNzb3I/OiBkYXRhVmFsdWVBY2Nlc3NvclxuKTogW251bWJlciwgbnVtYmVyXSB7XG4gIGNvbnN0IHJhbmdlID0gdHlwZW9mIHZhbHVlQWNjZXNzb3IgPT09ICdmdW5jdGlvbicgPyBleHRlbnQoZGF0YSwgdmFsdWVBY2Nlc3NvcikgOiBleHRlbnQoZGF0YSk7XG4gIHJldHVybiByYW5nZS5tYXAoKGQ6IHVuZGVmaW5lZCB8IG51bWJlciwgaTogbnVtYmVyKSA9PiAoZCA9PT0gdW5kZWZpbmVkID8gaSA6IGQpKSBhcyBbXG4gICAgbnVtYmVyLFxuICAgIG51bWJlclxuICBdO1xufVxuXG4vKipcbiAqIHJldHVybiBsaW5lYXIgZG9tYWluIGZvciBhbiBhcnJheSBvZiBkYXRhLiBBIGxvZyBzY2FsZSBkb21haW4gY2Fubm90IGNvbnRhaW4gMFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9nRG9tYWluKGRhdGE6IGFueVtdLCB2YWx1ZUFjY2Vzc29yOiBkYXRhVmFsdWVBY2Nlc3Nvcik6IFtudW1iZXIsIG51bWJlcl0ge1xuICBjb25zdCBbZDAsIGQxXSA9IGdldExpbmVhckRvbWFpbihkYXRhLCB2YWx1ZUFjY2Vzc29yKTtcbiAgcmV0dXJuIFtkMCA9PT0gMCA/IDFlLTUgOiBkMCwgZDFdO1xufVxuXG5leHBvcnQgdHlwZSBEb21haW5TdG9wcyA9IHtcbiAgc3RvcHM6IG51bWJlcltdO1xuICB6OiBudW1iZXJbXTtcbn07XG5cbi8qKlxuICogd2hldGhlciBmaWVsZCBkb21haW4gaXMgc3RvcHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRG9tYWluU3RvcHMoZG9tYWluOiB1bmtub3duKTogZG9tYWluIGlzIERvbWFpblN0b3BzIHtcbiAgcmV0dXJuIGlzUGxhaW5PYmplY3QoZG9tYWluKSAmJiBBcnJheS5pc0FycmF5KGRvbWFpbi5zdG9wcykgJiYgQXJyYXkuaXNBcnJheShkb21haW4ueik7XG59XG5cbmV4cG9ydCB0eXBlIERvbWFpblF1YW50aWxlcyA9IHtcbiAgcXVhbnRpbGVzOiBudW1iZXJbXTtcbiAgejogbnVtYmVyW107XG59O1xuXG4vKipcbiAqIHdoZXRoZXIgZmllbGQgZG9tYWluIGlzIHF1YW50aWxlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEb21haW5RdWFudGlsZShkb21haW46IGFueSk6IGRvbWFpbiBpcyBEb21haW5RdWFudGlsZXMge1xuICByZXR1cm4gaXNQbGFpbk9iamVjdChkb21haW4pICYmIEFycmF5LmlzQXJyYXkoZG9tYWluLnF1YW50aWxlcykgJiYgQXJyYXkuaXNBcnJheShkb21haW4ueik7XG59XG5cbi8qKlxuICogZ2V0IHRoZSBkb21haW4gYXQgem9vbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGhyZXNob2xkc0Zyb21RdWFudGlsZXMoXG4gIHF1YW50aWxlczogbnVtYmVyW10sXG4gIGJ1Y2tldHM6IG51bWJlclxuKTogKG51bWJlciB8IHVuZGVmaW5lZClbXSB7XG4gIGNvbnN0IHRocmVzaG9sZHMgPSBbXTtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoYnVja2V0cykgfHwgYnVja2V0cyA8IDEpIHtcbiAgICByZXR1cm4gW3F1YW50aWxlc1swXSwgcXVhbnRpbGVzW3F1YW50aWxlcy5sZW5ndGggLSAxXV07XG4gIH1cbiAgZm9yIChsZXQgaSA9IDE7IGkgPCBidWNrZXRzOyBpKyspIHtcbiAgICAvLyBwb3NpdGlvbiBpbiBzb3J0ZWQgYXJyYXlcbiAgICBjb25zdCBwb3NpdGlvbiA9IGkgLyBidWNrZXRzO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aHJlc2hvbGRzLnB1c2goZDNRdWFudGlsZShxdWFudGlsZXMsIHBvc2l0aW9uKSk7XG4gIH1cblxuICByZXR1cm4gdGhyZXNob2xkcztcbn1cblxuLyoqXG4gKiBnZXQgdGhlIGRvbWFpbiBhdCB6b29tXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREb21haW5TdGVwc2J5Wm9vbShkb21haW46IGFueVtdLCBzdGVwczogbnVtYmVyW10sIHo6IG51bWJlcik6IGFueSB7XG4gIGNvbnN0IGkgPSBiaXNlY3RMZWZ0KHN0ZXBzLCB6KTtcblxuICBpZiAoc3RlcHNbaV0gPT09IHopIHtcbiAgICAvLyBJZiB6IGlzIGFuIGludGVnZXIgdmFsdWUgZXhhY3RseSBtYXRjaGluZyBhIHN0ZXAsIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBkb21haW5cbiAgICByZXR1cm4gZG9tYWluW2ldO1xuICB9XG4gIC8vIE90aGVyd2lzZSwgcmV0dXJuIHRoZSBuZXh0IGNvYXJzZXN0IGRvbWFpblxuICByZXR1cm4gZG9tYWluW01hdGgubWF4KGkgLSAxLCAwKV07XG59XG5cbi8qKlxuICogR2V0IGQzIHNjYWxlIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2FsZUZ1bmN0aW9uKFxuICBzY2FsZTogc3RyaW5nLFxuICByYW5nZTogYW55W10gfCBJdGVyYWJsZUl0ZXJhdG9yPGFueT4sXG4gIGRvbWFpbjogKG51bWJlciB8IHVuZGVmaW5lZClbXSB8IHN0cmluZ1tdIHwgSXRlcmFibGVJdGVyYXRvcjxhbnk+LFxuICBmaXhlZD86IGJvb2xlYW5cbik6IEQzU2NhbGVGdW5jdGlvbiB7XG4gIGNvbnN0IHNjYWxlRnVuY3Rpb24gPSBTQ0FMRV9GVU5DW2ZpeGVkID8gJ2xpbmVhcicgOiBzY2FsZV0oKVxuICAgIC5kb21haW4oZG9tYWluKVxuICAgIC5yYW5nZShmaXhlZCA/IGRvbWFpbiA6IHJhbmdlKTtcbiAgc2NhbGVGdW5jdGlvbi5zY2FsZVR5cGUgPSBmaXhlZCA/ICdsaW5lYXInIDogc2NhbGU7XG4gIHJldHVybiBzY2FsZUZ1bmN0aW9uO1xufVxuXG4vKipcbiAqIEdldCB0aHJlc2hvbGQgc2NhbGUgY29sb3IgbGFiZWxzXG4gKi9cbmZ1bmN0aW9uIGdldFRocmVzaG9sZExhYmVscyhcbiAgc2NhbGU6IEQzU2NhbGVGdW5jdGlvbixcbiAgbGFiZWxGb3JtYXQ6IExhYmVsRm9ybWF0XG4pOiBPbWl0PENvbG9yQnJlYWssICdkYXRhJz5bXSB7XG4gIGNvbnN0IGdlbkxlbmd0aCA9IHNjYWxlLnJhbmdlKCkubGVuZ3RoO1xuICByZXR1cm4gc2NhbGUucmFuZ2UoKS5tYXAoKGQsIGkpID0+IHtcbiAgICBjb25zdCBpbnZlcnQgPSBzY2FsZS5pbnZlcnRFeHRlbnQoZCk7XG4gICAgY29uc3QgaW5wdXRzID0gW1xuICAgICAgaSA9PT0gMCA/IG51bGwgOiByZXZlcnNlRm9ybWF0TnVtYmVyKGxhYmVsRm9ybWF0KGludmVydFswXSkpLFxuICAgICAgaSA9PT0gZ2VuTGVuZ3RoIC0gMSA/IG51bGwgOiByZXZlcnNlRm9ybWF0TnVtYmVyKGxhYmVsRm9ybWF0KGludmVydFsxXSkpXG4gICAgXTtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gcmF3IHZhbHVlXG4gICAgICByYW5nZTogaW52ZXJ0LFxuICAgICAgLy8gZm9ybWF0dGVkIHZhbHVlXG4gICAgICBpbnB1dHMsXG4gICAgICBsYWJlbDpcbiAgICAgICAgaSA9PT0gMFxuICAgICAgICAgID8gYExlc3MgdGhhbiAke2xhYmVsRm9ybWF0KGludmVydFsxXSl9YFxuICAgICAgICAgIDogaSA9PT0gZ2VuTGVuZ3RoIC0gMVxuICAgICAgICAgID8gYCR7bGFiZWxGb3JtYXQoaW52ZXJ0WzBdKX0gb3IgbW9yZWBcbiAgICAgICAgICA6IGAke2xhYmVsRm9ybWF0KGludmVydFswXSl9IHRvICR7bGFiZWxGb3JtYXQoaW52ZXJ0WzFdKX1gXG4gICAgfTtcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGxpbmVhciAvIHF1YW50IHNjYWxlIGNvbG9yIGxhYmVsc1xuICovXG5mdW5jdGlvbiBnZXRTY2FsZUxhYmVscyhcbiAgc2NhbGU6IEQzU2NhbGVGdW5jdGlvbixcbiAgbGFiZWxGb3JtYXQ6IExhYmVsRm9ybWF0XG4pOiBPbWl0PENvbG9yQnJlYWssICdkYXRhJz5bXSB7XG4gIHJldHVybiBzY2FsZS5yYW5nZSgpLm1hcChkID0+IHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgaW52ZXJ0ID0gc2NhbGUuaW52ZXJ0RXh0ZW50KGQpO1xuICAgIGNvbnN0IGlucHV0cyA9IFtcbiAgICAgIHJldmVyc2VGb3JtYXROdW1iZXIobGFiZWxGb3JtYXQoaW52ZXJ0WzBdKSksXG4gICAgICByZXZlcnNlRm9ybWF0TnVtYmVyKGxhYmVsRm9ybWF0KGludmVydFsxXSkpXG4gICAgXTtcblxuICAgIHJldHVybiB7XG4gICAgICBsYWJlbDogYCR7bGFiZWxGb3JtYXQoaW52ZXJ0WzBdKX0gdG8gJHtsYWJlbEZvcm1hdChpbnZlcnRbMV0pfWAsXG4gICAgICAvLyByYXcgdmFsdWVcbiAgICAgIHJhbmdlOiBpbnZlcnQsXG4gICAgICAvLyBmb3JtYXR0ZWQgdmFsdWVcbiAgICAgIGlucHV0c1xuICAgIH07XG4gIH0pO1xufVxuXG5jb25zdCBjdXN0b21TY2FsZUxhYmVsRm9ybWF0ID0gbiA9PiAobiA/IGZvcm1hdE51bWJlcihuLCAncmVhbCcpIDogJ25vIHZhbHVlJyk7XG4vKipcbiAqIEdldCBsaW5lYXIgLyBxdWFudCBzY2FsZSBjb2xvciBicmVha3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFF1YW50TGVnZW5kcyhzY2FsZTogRDNTY2FsZUZ1bmN0aW9uLCBsYWJlbEZvcm1hdDogTGFiZWxGb3JtYXQpOiBDb2xvckJyZWFrW10ge1xuICBpZiAodHlwZW9mIHNjYWxlLmludmVydEV4dGVudCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBjb25zdCB0aHJlc2hvbGRMYWJlbEZvcm1hdCA9IChuLCB0eXBlKSA9PlxuICAgIG4gJiYgbGFiZWxGb3JtYXQgPyBsYWJlbEZvcm1hdChuKSA6IG4gPyBmb3JtYXROdW1iZXIobiwgdHlwZSkgOiAnbm8gdmFsdWUnO1xuICBjb25zdCBsYWJlbHMgPVxuICAgIHNjYWxlLnNjYWxlVHlwZSA9PT0gJ3RocmVzaG9sZCdcbiAgICAgID8gZ2V0VGhyZXNob2xkTGFiZWxzKHNjYWxlLCB0aHJlc2hvbGRMYWJlbEZvcm1hdClcbiAgICAgIDogc2NhbGUuc2NhbGVUeXBlID09PSAnY3VzdG9tJ1xuICAgICAgPyBnZXRUaHJlc2hvbGRMYWJlbHMoc2NhbGUsIGN1c3RvbVNjYWxlTGFiZWxGb3JtYXQpXG4gICAgICA6IGdldFNjYWxlTGFiZWxzKHNjYWxlLCBsYWJlbEZvcm1hdCk7XG5cbiAgY29uc3QgZGF0YSA9IHNjYWxlLnJhbmdlKCk7XG5cbiAgcmV0dXJuIGxhYmVscy5tYXAoKGxhYmVsLCBpbmRleCkgPT4gKHtcbiAgICBkYXRhOiBBcnJheS5pc0FycmF5KGRhdGFbaW5kZXhdKSA/IHJnYlRvSGV4KGRhdGFbaW5kZXhdKSA6IGRhdGFbaW5kZXhdLFxuICAgIC4uLmxhYmVsXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBHZXQgb3JkaW5hbCBjb2xvciBzY2FsZSBsZWdlbmRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcmRpbmFsTGVnZW5kcyhzY2FsZTogRDNTY2FsZUZ1bmN0aW9uKTogQ29sb3JCcmVha09yZGluYWxbXSB7XG4gIGNvbnN0IGRvbWFpbiA9IHNjYWxlLmRvbWFpbigpO1xuICBjb25zdCBsYWJlbHMgPSBzY2FsZS5kb21haW4oKTtcbiAgY29uc3QgZGF0YSA9IGRvbWFpbi5tYXAoc2NhbGUpO1xuXG4gIHJldHVybiBkYXRhLm1hcCgoZGF0dW0sIGluZGV4KSA9PiAoe1xuICAgIGRhdGE6IGlzUmdiQ29sb3IoZGF0dW0pID8gcmdiVG9IZXgoZGF0dW0pIDogZGF0dW0sXG4gICAgbGFiZWw6IGxhYmVsc1tpbmRleF1cbiAgfSkpO1xufVxuXG5jb25zdCBkZWZhdWx0Rm9ybWF0ID0gZCA9PiBkO1xuXG5jb25zdCBnZXRUaW1lTGFiZWxGb3JtYXQgPSBkb21haW4gPT4ge1xuICBjb25zdCBmb3JtYXR0ZXIgPSBnZXRUaW1lV2lkZ2V0SGludEZvcm1hdHRlcihkb21haW4pO1xuICByZXR1cm4gdmFsID0+IG1vbWVudC51dGModmFsKS5mb3JtYXQoZm9ybWF0dGVyKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRRdWFudExhYmVsRm9ybWF0KGRvbWFpbiwgZmllbGRUeXBlKSB7XG4gIC8vIHF1YW50IHNjYWxlIGNhbiBvbmx5IGJlIGFzc2lnbmVkIHRvIGxpbmVhciBGaWVsZHM6IHJlYWwsIHRpbWVzdGFtcCwgaW50ZWdlclxuICByZXR1cm4gZmllbGRUeXBlID09PSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wXG4gICAgPyBnZXRUaW1lTGFiZWxGb3JtYXQoZG9tYWluKVxuICAgIDogIWZpZWxkVHlwZVxuICAgID8gZGVmYXVsdEZvcm1hdFxuICAgIDogbiA9PiAoaXNOdW1iZXIobikgPyBmb3JtYXROdW1iZXIobiwgZmllbGRUeXBlKSA6ICdubyB2YWx1ZScpO1xufVxuXG4vKipcbiAqIEdldCBsZWdlbmRzIGZvciBzY2FsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGVnZW5kT2ZTY2FsZSh7XG4gIHNjYWxlLFxuICBzY2FsZVR5cGUsXG4gIGxhYmVsRm9ybWF0LFxuICBmaWVsZFR5cGVcbn06IHtcbiAgc2NhbGU/OiBEM1NjYWxlRnVuY3Rpb24gfCBudWxsO1xuICBzY2FsZVR5cGU6IHN0cmluZztcbiAgbGFiZWxGb3JtYXQ/OiBMYWJlbEZvcm1hdDtcbiAgZmllbGRUeXBlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xufSk6IENvbG9yQnJlYWtbXSB8IENvbG9yQnJlYWtPcmRpbmFsW10ge1xuICBpZiAoIXNjYWxlIHx8IHNjYWxlLmJ5Wm9vbSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAoXG4gICAgc2NhbGVUeXBlID09PSBTQ0FMRV9UWVBFUy5vcmRpbmFsIHx8XG4gICAgc2NhbGVUeXBlID09PSBTQ0FMRV9UWVBFUy5jdXN0b21PcmRpbmFsIHx8XG4gICAgZmllbGRUeXBlID09PSBBTExfRklFTERfVFlQRVMuc3RyaW5nXG4gICkge1xuICAgIHJldHVybiBnZXRPcmRpbmFsTGVnZW5kcyhzY2FsZSk7XG4gIH1cblxuICBjb25zdCBmb3JtYXRMYWJlbCA9IGxhYmVsRm9ybWF0IHx8IGdldFF1YW50TGFiZWxGb3JtYXQoc2NhbGUuZG9tYWluKCksIGZpZWxkVHlwZSk7XG5cbiAgcmV0dXJuIGdldFF1YW50TGVnZW5kcyhzY2FsZSwgZm9ybWF0TGFiZWwpO1xufVxuXG4vKipcbiAqIEdldCBjb2xvciBzY2FsZSBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGF5ZXJDb2xvclNjYWxlKHtcbiAgcmFuZ2UsXG4gIGRvbWFpbixcbiAgc2NhbGVUeXBlLFxuICBsYXllclxufToge1xuICByYW5nZTogQ29sb3JSYW5nZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGRvbWFpbjogVmlzdWFsQ2hhbm5lbERvbWFpbjtcbiAgc2NhbGVUeXBlOiBzdHJpbmc7XG4gIGxheWVyOiBMYXllcjtcbiAgaXNGaXhlZD86IGJvb2xlYW47XG59KTogRDNTY2FsZUZ1bmN0aW9uIHwgbnVsbCB7XG4gIGlmIChyYW5nZSAmJiBkb21haW4gJiYgc2NhbGVUeXBlKSB7XG4gICAgcmV0dXJuIGxheWVyLmdldENvbG9yU2NhbGUoc2NhbGVUeXBlLCBkb21haW4sIHJhbmdlKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGNvbG9yUmFuZ2UuY29sb3JNYXAgaW50byBjb2xvciBicmVha3MgVUkgaW5wdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVMYXllckNvbG9yTWFwKGxheWVyOiBMYXllciwgdmlzdWFsQ2hhbm5lbDogVmlzdWFsQ2hhbm5lbCk6IENvbG9yTWFwIHtcbiAgY29uc3QgZG9tYWluID0gbGF5ZXIuY29uZmlnW3Zpc3VhbENoYW5uZWwuZG9tYWluXTtcbiAgY29uc3QgcmFuZ2UgPSBsYXllci5jb25maWcudmlzQ29uZmlnW3Zpc3VhbENoYW5uZWwucmFuZ2VdO1xuICBjb25zdCBzY2FsZVR5cGUgPSBsYXllci5jb25maWdbdmlzdWFsQ2hhbm5lbC5zY2FsZV07XG4gIGNvbnN0IGZpZWxkID0gbGF5ZXIuY29uZmlnW3Zpc3VhbENoYW5uZWwuZmllbGRdO1xuXG4gIGNvbnN0IHNjYWxlID0gZ2V0TGF5ZXJDb2xvclNjYWxlKHtcbiAgICByYW5nZSxcbiAgICBkb21haW4sXG4gICAgc2NhbGVUeXBlLFxuICAgIGxheWVyXG4gIH0pO1xuXG4gIGNvbnN0IGNvbG9yQnJlYWtzID0gZ2V0TGVnZW5kT2ZTY2FsZSh7XG4gICAgc2NhbGU6IHNjYWxlPy5ieVpvb20gPyBzY2FsZSgwKSA6IHNjYWxlLFxuICAgIHNjYWxlVHlwZSxcbiAgICBmaWVsZFR5cGU6IGZpZWxkLnR5cGVcbiAgfSk7XG4gIHJldHVybiBjb2xvckJyZWFrc1RvQ29sb3JNYXAoY29sb3JCcmVha3MpO1xufVxuXG4vKipcbiAqIEdldCB2aXN1YWwgY2hhbmVsIHNjYWxlIGZ1bmN0aW9uIGlmIGl0J3MgYmFzZWQgb24gem9vbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmlzdWFsQ2hhbm5lbFNjYWxlQnlab29tKHtcbiAgc2NhbGUsXG4gIGxheWVyLFxuICBtYXBTdGF0ZVxufToge1xuICBzY2FsZTogRDNTY2FsZUZ1bmN0aW9uIHwgbnVsbDtcbiAgbGF5ZXI6IExheWVyO1xuICBtYXBTdGF0ZT86IE1hcFN0YXRlO1xufSk6IEQzU2NhbGVGdW5jdGlvbiB8IG51bGwge1xuICBpZiAoc2NhbGU/LmJ5Wm9vbSkge1xuICAgIGNvbnN0IHogPSBsYXllci5tZXRhPy5nZXRab29tID8gbGF5ZXIubWV0YS5nZXRab29tKG1hcFN0YXRlKSA6IG1hcFN0YXRlPy56b29tO1xuICAgIHNjYWxlID0gTnVtYmVyLmlzRmluaXRlKHopID8gc2NhbGUoeikgOiBudWxsO1xuICB9XG4gIHJldHVybiBzY2FsZTtcbn1cblxuLyoqXG4gKiBHZXQgY2F0ZWdvcmljYWwgY29sb3JNYXAgZnJvbSBjb2xvcnMgYW5kIGRvbWFpbiAodW5pcXVlIHZhbHVlcylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhdGVnb3JpY2FsQ29sb3JNYXAoXG4gIGNvbG9yczogc3RyaW5nW10sXG4gIGRvbWFpbjogKHN0cmluZyB8IG51bWJlciB8IHN0cmluZ1tdIHwgbnVtYmVyW10gfCBudWxsKVtdXG4pOiBhbnkge1xuICBjb25zdCB1bmlxdWVWYWx1ZXMgPSB1bmlxdWUoZG9tYWluKS5zb3J0KCk7XG4gIGNvbnN0IGNvbG9yTWFwID0gY29sb3JzLm1hcChjb2xvciA9PiBbbnVsbCwgY29sb3JdKTtcblxuICBpZiAoY29sb3JzLmxlbmd0aCA9PT0gMCB8fCB1bmlxdWVWYWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGNvbG9yTWFwO1xuICB9XG5cbiAgY29uc3QgbGFzdEluZGV4ID0gY29sb3JzLmxlbmd0aCAtIDE7XG4gIGNvbnN0IGFzc2lnbkNvdW50ID0gTWF0aC5taW4obGFzdEluZGV4LCB1bmlxdWVWYWx1ZXMubGVuZ3RoKTtcblxuICAvLyBBc3NpZ24gZmlyc3QgdmFsdWVzIG9uZS10by1vbmUgdXAgdG8gdGhlIHBlbnVsdGltYXRlIGNvbG9yIChpZiBhbnkpXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXNzaWduQ291bnQ7IGkrKykge1xuICAgIC8vIEB0cy1pZ25vcmUgdHVwbGVcbiAgICBjb2xvck1hcFtpXVswXSA9IHVuaXF1ZVZhbHVlc1tpXTtcbiAgfVxuXG4gIGlmICh1bmlxdWVWYWx1ZXMubGVuZ3RoID4gY29sb3JzLmxlbmd0aCkge1xuICAgIC8vIEFnZ3JlZ2F0ZSB0aGUgcmVzdCAoaW5jbHVkaW5nIHRoZSB2YWx1ZSB0aGF0IHdvdWxkIGhhdmUgZ29uZSB0byBsYXN0IGNvbG9yKVxuICAgIC8vIEJ1aWxkIGFnZ3JlZ2F0ZWQgYXJyYXkgaW5jcmVtZW50YWxseSB0byBtYXRjaCBsZWdhY3kgYmVoYXZpb3JcbiAgICBjb25zdCBhZ2dyZWdhdGVkVmFsdWVzOiBhbnlbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSBsYXN0SW5kZXg7IGkgPCB1bmlxdWVWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdW5pcXVlVmFsdWVzW2ldO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIC8vIFNwcmVhZCBhcnJheSBlbGVtZW50cyB0byBtYXRjaCBsZWdhY3kgZmxhdHRlbmluZyBiZWhhdmlvclxuICAgICAgICBhZ2dyZWdhdGVkVmFsdWVzLnB1c2goLi4uKHZhbHVlIGFzIGFueVtdKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZ2dyZWdhdGVkVmFsdWVzLnB1c2godmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBAdHMtaWdub3JlIHR1cGxlXG4gICAgY29sb3JNYXBbbGFzdEluZGV4XVswXSA9IGFnZ3JlZ2F0ZWRWYWx1ZXM7XG4gIH0gZWxzZSBpZiAodW5pcXVlVmFsdWVzLmxlbmd0aCA9PT0gY29sb3JzLmxlbmd0aCkge1xuICAgIC8vIEV4YWN0bHkgb25lIHBlciBjb2xvclxuICAgIC8vIEB0cy1pZ25vcmUgdHVwbGVcbiAgICBjb2xvck1hcFtsYXN0SW5kZXhdWzBdID0gdW5pcXVlVmFsdWVzW2xhc3RJbmRleF07XG4gIH1cblxuICAvLyBAdHMtaWdub3JlIHR1cGxlXG4gIHJldHVybiBjb2xvck1hcDtcbn1cblxuLyoqXG4gKiBHZXQgY2F0ZWdvcmljYWwgY29sb3JCcmVha3MgZnJvbSBjb2xvck1hcFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29sb3JNYXBUb0NhdGVnb3JpY2FsQ29sb3JCcmVha3MoXG4gIGNvbG9yTWFwPzogQ29sb3JNYXAgfCBudWxsXG4pOiBDb2xvckJyZWFrT3JkaW5hbFtdIHwgbnVsbCB7XG4gIGlmICghY29sb3JNYXApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBjb2xvckJyZWFrcyA9IGNvbG9yTWFwLm1hcCgoW3ZhbHVlLCBjb2xvcl0pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogY29sb3IsXG4gICAgICBsYWJlbDogdmFsdWVcbiAgICB9O1xuICB9KTtcblxuICByZXR1cm4gY29sb3JCcmVha3M7XG59XG5cbi8qKlxuICogY3JlYXRlIGNhdGVnb3JpY2FsIGNvbG9yTWFwIGZyb20gY29sb3JCcmVha3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbG9yQnJlYWtzVG9DYXRlZ29yaWNhbENvbG9yTWFwKGNvbG9yQnJlYWtzOiBDb2xvckJyZWFrT3JkaW5hbFtdKTogQ29sb3JNYXAge1xuICAvLyBjb2xvck1hcDogW3N0cmluZyB8IHN0cmluZ1tdLCBoZXhzdHJpbmddXG4gIGNvbnN0IGNvbG9ycyA9IHVuaXEoY29sb3JCcmVha3MubWFwKGNiID0+IGNiLmRhdGEpKTtcbiAgY29uc3QgdmFsdWVzID0gdW5pcShjb2xvckJyZWFrcy5tYXAoY2IgPT4gY2IubGFiZWwpKTtcblxuICByZXR1cm4gZ2V0Q2F0ZWdvcmljYWxDb2xvck1hcChjb2xvcnMsIHZhbHVlcyk7XG59XG5cbi8qKlxuICogQ29udmVydCBjb2xvciBicmVha3MgVUkgaW5wdXQgaW50byBjb2xvclJhbmdlLmNvbG9yTWFwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2xvckJyZWFrc1RvQ29sb3JNYXAoY29sb3JCcmVha3M6IENvbG9yQnJlYWtbXSB8IENvbG9yQnJlYWtPcmRpbmFsW10pOiBDb2xvck1hcCB7XG4gIGNvbnN0IGNvbG9yTWFwID0gY29sb3JCcmVha3MubWFwKChjb2xvckJyZWFrLCBpKSA9PiB7XG4gICAgLy8gW3ZhbHVlLCBoZXhdXG4gICAgcmV0dXJuIFtcbiAgICAgIGNvbG9yQnJlYWsuaW5wdXRzXG4gICAgICAgID8gaSA9PT0gY29sb3JCcmVha3MubGVuZ3RoIC0gMVxuICAgICAgICAgID8gbnVsbCAvLyBsYXN0XG4gICAgICAgICAgOiBjb2xvckJyZWFrLmlucHV0c1sxXVxuICAgICAgICA6IGNvbG9yQnJlYWsubGFiZWwsXG4gICAgICBjb2xvckJyZWFrLmRhdGFcbiAgICBdO1xuICB9KTtcblxuICAvLyBAdHMtaWdub3JlIHR1cGxlXG4gIHJldHVybiBjb2xvck1hcDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGNvbG9yUmFuZ2UuY29sb3JNYXAgaW50byBjb2xvciBicmVha3MgVUkgaW5wdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbG9yTWFwVG9Db2xvckJyZWFrcyhjb2xvck1hcD86IENvbG9yTWFwIHwgbnVsbCk6IENvbG9yQnJlYWtbXSB8IG51bGwge1xuICBpZiAoIWNvbG9yTWFwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgY29sb3JCcmVha3MgPSBjb2xvck1hcC5tYXAoKFt2YWx1ZSwgY29sb3JdLCBpKSA9PiB7XG4gICAgY29uc3QgcmFuZ2UgPVxuICAgICAgaSA9PT0gMFxuICAgICAgICA/IC8vIGZpcnN0XG4gICAgICAgICAgWy1JbmZpbml0eSwgdmFsdWVdXG4gICAgICAgIDogLy8gbGFzdFxuICAgICAgICBpID09PSBjb2xvck1hcC5sZW5ndGggLSAxXG4gICAgICAgID8gW2NvbG9yTWFwW2kgLSAxXVswXSwgSW5maW5pdHldXG4gICAgICAgIDogLy8gZWxzZVxuICAgICAgICAgIFtjb2xvck1hcFtpIC0gMV1bMF0sIHZhbHVlXTtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogY29sb3IsXG4gICAgICByYW5nZSxcbiAgICAgIGlucHV0czogcmFuZ2UsXG4gICAgICBsYWJlbDpcbiAgICAgICAgLy8gZmlyc3RcbiAgICAgICAgaSA9PT0gMFxuICAgICAgICAgID8gYExlc3MgdGhhbiAke3ZhbHVlfWBcbiAgICAgICAgICA6IC8vIGxhc3RcbiAgICAgICAgICBpID09PSBjb2xvck1hcC5sZW5ndGggLSAxXG4gICAgICAgICAgPyBgJHtjb2xvck1hcFtpIC0gMV1bMF19IG9yIG1vcmVgXG4gICAgICAgICAgOiBgJHtjb2xvck1hcFtpIC0gMV1bMF19IHRvICR7dmFsdWV9YFxuICAgIH07XG4gIH0pO1xuXG4gIC8vIEB0cy1pZ25vcmUgaW1wbGVtZW50IGNvbnZlcnNpb24gZm9yIG9yZGluYWxcbiAgcmV0dXJuIGNvbG9yQnJlYWtzO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgY29sb3IgYnJlYWtzIGlzIGZvciBudW1lcmljIGZpZWxkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc051bWVyaWNDb2xvckJyZWFrcyhjb2xvckJyZWFrczogdW5rbm93bik6IGNvbG9yQnJlYWtzIGlzIENvbG9yQnJlYWtbXSB7XG4gIHJldHVybiBCb29sZWFuKEFycmF5LmlzQXJyYXkoY29sb3JCcmVha3MpICYmIGNvbG9yQnJlYWtzLmxlbmd0aCAmJiBjb2xvckJyZWFrc1swXS5pbnB1dHMpO1xufVxuXG4vLyByZXR1cm4gZG9tYWluTWluLCBkb21haW5NYXgsIGhpc3RvZ3JhbU1lYW5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIaXN0b2dyYW1Eb21haW4oe1xuICBhZ2dyZWdhdGVkQmlucyxcbiAgY29sdW1uU3RhdHMsXG4gIGRhdGFzZXQsXG4gIGZpZWxkVmFsdWVBY2Nlc3NvclxufToge1xuICBhZ2dyZWdhdGVkQmlucz86IEFnZ3JlZ2F0ZWRCaW5bXTtcbiAgY29sdW1uU3RhdHM/OiBGaWx0ZXJQcm9wc1snY29sdW1uU3RhdHMnXTtcbiAgZGF0YXNldD86IEtlcGxlclRhYmxlO1xuICBmaWVsZFZhbHVlQWNjZXNzb3I6IChpZHg6IHVua25vd24pID0+IG51bWJlcjtcbn0pIHtcbiAgbGV0IGRvbWFpbk1pbiA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgbGV0IGRvbWFpbk1heCA9IE51bWJlci5ORUdBVElWRV9JTkZJTklUWTtcbiAgbGV0IG5WYWxpZCA9IDA7XG4gIGxldCBkb21haW5TdW0gPSAwO1xuXG4gIGlmIChhZ2dyZWdhdGVkQmlucykge1xuICAgIE9iamVjdC52YWx1ZXMoYWdncmVnYXRlZEJpbnMpLmZvckVhY2goYmluID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IGJpbi52YWx1ZTtcbiAgICAgIGlmIChpc051bWJlcih2YWwpKSB7XG4gICAgICAgIGlmICh2YWwgPCBkb21haW5NaW4pIGRvbWFpbk1pbiA9IHZhbDtcbiAgICAgICAgaWYgKHZhbCA+IGRvbWFpbk1heCkgZG9tYWluTWF4ID0gdmFsO1xuICAgICAgICBkb21haW5TdW0gKz0gdmFsO1xuICAgICAgICBuVmFsaWQgKz0gMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoY29sdW1uU3RhdHMgJiYgY29sdW1uU3RhdHMucXVhbnRpbGVzICYmIGNvbHVtblN0YXRzLm1lYW4pIHtcbiAgICAgIC8vIG5vIG5lZWQgdG8gcmVjYWxjdWF0ZSBtaW4vbWF4L21lYW4gaWYgaXRzIGFscmVhZHkgaW4gY29sdW1uU3RhdHNcbiAgICAgIHJldHVybiBbXG4gICAgICAgIGNvbHVtblN0YXRzLnF1YW50aWxlc1swXS52YWx1ZSxcbiAgICAgICAgY29sdW1uU3RhdHMucXVhbnRpbGVzW2NvbHVtblN0YXRzLnF1YW50aWxlcy5sZW5ndGggLSAxXS52YWx1ZSxcbiAgICAgICAgY29sdW1uU3RhdHMubWVhblxuICAgICAgXTtcbiAgICB9XG4gICAgaWYgKGRhdGFzZXQgJiYgZmllbGRWYWx1ZUFjY2Vzc29yKSB7XG4gICAgICBkYXRhc2V0LmFsbEluZGV4ZXMuZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgY29uc3QgdmFsID0gZmllbGRWYWx1ZUFjY2Vzc29yKHgpO1xuICAgICAgICBpZiAoaXNOdW1iZXIodmFsKSkge1xuICAgICAgICAgIGlmICh2YWwgPCBkb21haW5NaW4pIGRvbWFpbk1pbiA9IHZhbDtcbiAgICAgICAgICBpZiAodmFsID4gZG9tYWluTWF4KSBkb21haW5NYXggPSB2YWw7XG4gICAgICAgICAgZG9tYWluU3VtICs9IHZhbDtcbiAgICAgICAgICBuVmFsaWQgKz0gMTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGhpc3RvZ3JhbU1lYW4gPSBuVmFsaWQgPiAwID8gZG9tYWluU3VtIC8gblZhbGlkIDogMDtcbiAgcmV0dXJuIFtuVmFsaWQgPiAwID8gZG9tYWluTWluIDogMCwgblZhbGlkID4gMCA/IGRvbWFpbk1heCA6IDAsIGhpc3RvZ3JhbU1lYW5dO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleChjb2xvck1hcDogQ29sb3JNYXAsIGluZGV4OiBudW1iZXIpOiBhbnkge1xuICBpZiAoIWNvbG9yTWFwKSB7XG4gICAgcmV0dXJuIGNvbG9yTWFwO1xuICB9XG4gIGNvbnN0IG5ld0NvbG9yTWFwID0gY29sb3JNYXAubWFwKChjbSwgaSkgPT4ge1xuICAgIGlmIChpID09PSBpbmRleCkge1xuICAgICAgcmV0dXJuIFtudWxsLCBjbVsxXV07XG4gICAgfVxuICAgIHJldHVybiBjbTtcbiAgfSk7XG4gIHJldHVybiBuZXdDb2xvck1hcDtcbn1cblxuLyoqXG4gKiBzZWxlY3QgcmVzdCBjYXRlZ29yaWNhbCB2YWx1ZXMgZm9yIGEgY29sb3JNYXAgYnkgaXRzIGluZGV4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RSZXN0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgoXG4gIGNvbG9yTWFwOiBDb2xvck1hcCB8IG51bGwsXG4gIGluZGV4OiBudW1iZXIsXG4gIHVuaXF1ZVZhbHVlcz86IG51bWJlcltdIHwgc3RyaW5nW11cbik6IENvbG9yTWFwIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gIGlmICghY29sb3JNYXAgfHwgIXVuaXF1ZVZhbHVlcykge1xuICAgIHJldHVybiBjb2xvck1hcDtcbiAgfVxuXG4gIC8vIGZpbmQgdW5pcXVlIHZhbHVlcyB0aGF0IGhhcyBub3QgYmVlbiB1c2VkIGluIGN1cnJlbnQgY29sb3JNYXBcbiAgY29uc3QgdW5pcVZhbHVlRGljdCA9IE9iamVjdC5mcm9tRW50cmllcyh1bmlxdWVWYWx1ZXMubWFwKHZhbCA9PiBbdmFsLCBmYWxzZV0pKTtcbiAgY29sb3JNYXAuZm9yRWFjaChjbSA9PiB7XG4gICAgdG9BcnJheShjbVswXSkuZm9yRWFjaCh2ID0+IHtcbiAgICAgIGlmICh2KSB1bmlxVmFsdWVEaWN0W3ZdID0gdHJ1ZTtcbiAgICB9KTtcbiAgfSk7XG4gIGNvbnN0IHJlc3QgPSBPYmplY3Qua2V5cyh1bmlxVmFsdWVEaWN0KS5maWx0ZXIodiA9PiAhdW5pcVZhbHVlRGljdFt2XSk7XG5cbiAgLy8gdXNlIHRoZSBub3QgdXNlZCB1bmlxdWUgdmFsdWVzIGluIHRoZSBzZWxlY3RlZCBjb2xvciBtYXBcbiAgY29uc3QgbmV3Q29sb3JNYXAgPSBjb2xvck1hcC5tYXAoKGNtLCBpKSA9PiB7XG4gICAgaWYgKGkgPT09IGluZGV4KSB7XG4gICAgICByZXR1cm4gW1suLi5yZXN0LCAuLi50b0FycmF5KGNtWzBdKV0sIGNtWzFdXTtcbiAgICB9XG4gICAgcmV0dXJuIGNtO1xuICB9KSBhcyBDb2xvck1hcDtcblxuICByZXR1cm4gbmV3Q29sb3JNYXA7XG59XG5cbi8qKlxuICogcmVtb3ZlIGEgY2F0ZWdvcmljYWwgdmFsdWUgZnJvbSBhIGNvbG9yTWFwIGJ5IGl0cyBpbmRleFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQ2F0ZWdvcmljYWxWYWx1ZUZyb21Db2xvck1hcChcbiAgY29sb3JNYXA6IENvbG9yTWFwIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgaXRlbTogbnVtYmVyIHwgc3RyaW5nLFxuICBpbmRleDogbnVtYmVyXG4pOiBDb2xvck1hcCB8IG51bGwgfCB1bmRlZmluZWQge1xuICBpZiAoIWNvbG9yTWFwKSB7XG4gICAgcmV0dXJuIGNvbG9yTWFwO1xuICB9XG4gIGNvbnN0IG5ld0NvbG9yTWFwID0gY29sb3JNYXAubWFwKChjbSwgaSkgPT4ge1xuICAgIGlmIChpID09PSBpbmRleCkge1xuICAgICAgaWYgKCFjbVswXSkge1xuICAgICAgICByZXR1cm4gW251bGwsIGNtWzFdXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnRVbmlxdWVWYWx1ZXMgPSB0b0FycmF5KGNtWzBdKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRVbmlxdWVWYWx1ZXMgPSBjdXJyZW50VW5pcXVlVmFsdWVzLmZpbHRlcih2ID0+IHYgIT09IGl0ZW0pO1xuICAgICAgcmV0dXJuIFt1cGRhdGVkVW5pcXVlVmFsdWVzLCBjbVsxXV07XG4gICAgfVxuICAgIHJldHVybiBjbTtcbiAgfSkgYXMgQ29sb3JNYXA7XG5cbiAgcmV0dXJuIG5ld0NvbG9yTWFwO1xufVxuXG4vKipcbiAqIGFkZCBjYXRlZ29yaWNhbCB2YWx1ZXMgKGZyb20gbXVsdGlzZWwgZHJvcGRvd24pIHRvIGEgY29sb3JNYXAgYnkgaXRzIGluZGV4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRDYXRlZ29yaWNhbFZhbHVlc1RvQ29sb3JNYXAoXG4gIGNvbG9yTWFwOiBDb2xvck1hcCxcbiAgaXRlbXM6IChzdHJpbmcgfCBudW1iZXIpW10sXG4gIGluZGV4OiBudW1iZXJcbik6IENvbG9yTWFwIHtcbiAgaWYgKCFjb2xvck1hcCkge1xuICAgIHJldHVybiBjb2xvck1hcDtcbiAgfVxuXG4gIGNvbnN0IG5ld0NvbG9yTWFwID0gY29sb3JNYXAubWFwKChjbSwgaSkgPT4ge1xuICAgIGlmIChpID09PSBpbmRleCkge1xuICAgICAgaWYgKCFjbVswXSkge1xuICAgICAgICByZXR1cm4gW2l0ZW1zLCBjbVsxXV07XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50VW5pcXVlVmFsdWVzID0gdG9BcnJheShjbVswXSk7XG4gICAgICBjb25zdCB1cGRhdGVkVW5pcXVlVmFsdWVzID0gdW5pcShjdXJyZW50VW5pcXVlVmFsdWVzLmNvbmNhdChpdGVtcykpO1xuICAgICAgcmV0dXJuIFt1cGRhdGVkVW5pcXVlVmFsdWVzLCBjbVsxXV07XG4gICAgfVxuICAgIC8vIHJlbW92ZSB2YWx1ZSBmcm9tIG90aGVyIGNvbG9yTWFwXG4gICAgY29uc3QgY3VycmVudFVuaXF1ZVZhbHVlcyA9IGNtWzBdO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnRVbmlxdWVWYWx1ZXMpKSB7XG4gICAgICBjb25zdCB1cGRhdGVkVW5pcXVlVmFsdWVzOiBzdHJpbmdbXSB8IG51bWJlcltdID0gKGN1cnJlbnRVbmlxdWVWYWx1ZXMgYXMgYW55W10pLmZpbHRlcihcbiAgICAgICAgdiA9PiAhaXRlbXMuaW5jbHVkZXModilcbiAgICAgICk7XG4gICAgICByZXR1cm4gW3VwZGF0ZWRVbmlxdWVWYWx1ZXMsIGNtWzFdXTtcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRVbmlxdWVWYWx1ZXMgJiYgaXRlbXMuaW5jbHVkZXMoY3VycmVudFVuaXF1ZVZhbHVlcykpIHtcbiAgICAgIHJldHVybiBbbnVsbCwgY21bMV1dO1xuICAgIH1cblxuICAgIHJldHVybiBjbTtcbiAgfSkgYXMgQ29sb3JNYXA7XG5cbiAgcmV0dXJuIG5ld0NvbG9yTWFwO1xufVxuXG4vKipcbiAqIGdldCBhIGNvbG9yIHNjYWxlIGZ1bmMgZm9yIGNhdGVnb3JpY2FsIChjdXN0b20gb3JkaW5hbCkgc2NhbGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhdGVnb3JpY2FsQ29sb3JTY2FsZShcbiAgY29sb3JEb21haW46IG51bWJlcltdIHwgc3RyaW5nW10sXG4gIGNvbG9yUmFuZ2U6IENvbG9yUmFuZ2UsXG4gIHVzZVJnYiA9IHRydWVcbik6IChjYXRlZ29yeVZhbHVlOiBzdHJpbmcgfCBudW1iZXIpID0+IFJHQkNvbG9yIHwgUkdCQUNvbG9yIHtcbiAgY29uc3QgY01hcCA9IGNvbG9yUmFuZ2UuY29sb3JNYXBcbiAgICA/IGNvbG9yUmFuZ2UuY29sb3JNYXBcbiAgICA6IGdldENhdGVnb3JpY2FsQ29sb3JNYXAoY29sb3JSYW5nZS5jb2xvcnMsIGNvbG9yRG9tYWluKTtcblxuICBjb25zdCByYW5nZTogbnVtYmVyW11bXSA9IFtdO1xuICBjb25zdCBkb21haW46IHN0cmluZ1tdID0gW107XG4gIGNNYXAuZm9yRWFjaChjbSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY21bMF0pKSB7XG4gICAgICBjbVswXS5mb3JFYWNoKHZhbCA9PiB7XG4gICAgICAgIGRvbWFpbi5wdXNoKHZhbCk7XG4gICAgICAgIHJhbmdlLnB1c2godXNlUmdiID8gaGV4VG9SZ2IoY21bMV0pIDogY21bMV0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvbWFpbi5wdXNoKGNtWzBdKTtcbiAgICAgIHJhbmdlLnB1c2godXNlUmdiID8gaGV4VG9SZ2IoY21bMV0pIDogY21bMV0pO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3Qgc2NhbGUgPSBnZXRTY2FsZUZ1bmN0aW9uKFNDQUxFX1RZUEVTLmN1c3RvbU9yZGluYWwsIHJhbmdlLCBkb21haW4sIGZhbHNlKTtcbiAgc2NhbGUudW5rbm93bihOT19WQUxVRV9DT0xPUik7XG4gIHJldHVybiBzY2FsZSBhcyBhbnk7XG59XG5cbi8qKlxuICogaW5pdGlhbGl6ZSBjdXN0b21QYWxldHRlIGJ5IGN1c3RvbSBzY2FsZSBvciBjdXN0b21PcmRpbmFsIHNjYWxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0Q3VzdG9tUGFsZXR0ZUJ5Q3VzdG9tU2NhbGUoe1xuICBzY2FsZSxcbiAgZmllbGQsXG4gIG9yZGluYWxEb21haW4sXG4gIHJhbmdlLFxuICBjb2xvckJyZWFrc1xufToge1xuICBzY2FsZTogc3RyaW5nO1xuICBmaWVsZD86IEZpZWxkO1xuICBvcmRpbmFsRG9tYWluPzogbnVtYmVyW10gfCBzdHJpbmdbXTtcbiAgcmFuZ2U6IENvbG9yUmFuZ2U7XG4gIGNvbG9yQnJlYWtzOiBDb2xvckJyZWFrT3JkaW5hbFtdIHwgbnVsbDtcbn0pOiBDb2xvclVJWydjdXN0b21QYWxldHRlJ10ge1xuICBjb25zdCBjdXN0b21QYWxldHRlTmFtZSA9IGBjb2xvci5jdXN0b21QYWxldHRlLiR7c2NhbGV9LiR7ZmllbGQ/Lm5hbWUgfHwgJ3BvaW50LWNvdW50J31gO1xuICAvLyByZXVzZSByYW5nZS5jb2xvck1hcCBpZiB0aGUgZmllbGQgYW5kIHNjYWxlIG5vdCBjaGFuZ2VkXG4gIGNvbnN0IHJldXNlQ29sb3JNYXAgPSByYW5nZS5jb2xvck1hcCAmJiByYW5nZS5uYW1lID09PSBjdXN0b21QYWxldHRlTmFtZSAmJiByYW5nZS50eXBlID09PSBzY2FsZTtcbiAgY29uc3QgY29sb3JNYXAgPSByZXVzZUNvbG9yTWFwXG4gICAgPyByYW5nZS5jb2xvck1hcFxuICAgIDogc2NhbGUgPT09IFNDQUxFX1RZUEVTLmN1c3RvbU9yZGluYWwgJiYgb3JkaW5hbERvbWFpblxuICAgID8gZ2V0Q2F0ZWdvcmljYWxDb2xvck1hcChyYW5nZS5jb2xvcnMsIG9yZGluYWxEb21haW4pXG4gICAgOiBjb2xvckJyZWFrcyAmJiBpc051bWVyaWNDb2xvckJyZWFrcyhjb2xvckJyZWFrcylcbiAgICA/IGNvbG9yQnJlYWtzVG9Db2xvck1hcChjb2xvckJyZWFrcylcbiAgICA6IG51bGw7XG4gIGNvbnN0IGNvbG9ycyA9IHJldXNlQ29sb3JNYXAgPyByYW5nZS5jb2xvcnMgOiBjb2xvck1hcCA/IGNvbG9yTWFwLm1hcChjbSA9PiBjbVsxXSkgOiByYW5nZS5jb2xvcnM7XG5cbiAgLy8gdXBkYXRlIGN1c3RvbSBicmVha3NcbiAgY29uc3QgY3VzdG9tUGFsZXR0ZTogQ29sb3JVSVsnY3VzdG9tUGFsZXR0ZSddID0ge1xuICAgIGNhdGVnb3J5OiAnQ3VzdG9tJyxcbiAgICBuYW1lOiBjdXN0b21QYWxldHRlTmFtZSxcbiAgICB0eXBlOiBzY2FsZSxcbiAgICBjb2xvck1hcCxcbiAgICBjb2xvcnM6IGNvbG9ycyB8fCBbXVxuICB9O1xuXG4gIHJldHVybiBjdXN0b21QYWxldHRlO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLE9BQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFJLFlBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFVBQUEsR0FBQUwsT0FBQTtBQWlCQSxJQUFBTSxXQUFBLEdBQUFOLE9BQUE7QUFFQSxJQUFBTyxVQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxZQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxNQUFBLEdBQUFULE9B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
|
package/dist/data-utils.d.ts
CHANGED
|
@@ -33,6 +33,7 @@ export declare function validateLongitude(longitude: number | undefined): number
|
|
|
33
33
|
export declare function validateCoordinate(value: number, minValue: number, maxValue: number): number;
|
|
34
34
|
/**
|
|
35
35
|
* simple getting unique values of an array
|
|
36
|
+
* Note: filters out null and undefined values
|
|
36
37
|
*
|
|
37
38
|
* @param values
|
|
38
39
|
* @returns unique values
|
package/dist/data-utils.js
CHANGED
|
@@ -103,6 +103,7 @@ function validateCoordinate(value, minValue, maxValue) {
|
|
|
103
103
|
|
|
104
104
|
/**
|
|
105
105
|
* simple getting unique values of an array
|
|
106
|
+
* Note: filters out null and undefined values
|
|
106
107
|
*
|
|
107
108
|
* @param values
|
|
108
109
|
* @returns unique values
|
|
@@ -531,4 +532,4 @@ function datetimeFormatter(timezone) {
|
|
|
531
532
|
};
|
|
532
533
|
};
|
|
533
534
|
}
|
|
534
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9hc3NlcnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2QzRm9ybWF0IiwiX21vbWVudFRpbWV6b25lIiwiX2Fycm93IiwiX2NvbnN0YW50cyIsIl9jb21tb25VdGlscyIsIl9wbG90IiwiX3V0aWxzIiwiX0ZJRUxEX0RJU1BMQVlfRk9STUFUIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mMyIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIk1BWF9MQVRJVFVERSIsImV4cG9ydHMiLCJNSU5fTEFUSVRVREUiLCJNQVhfTE9OR0lUVURFIiwiTUlOX0xPTkdJVFVERSIsInZhbGlkYXRlTGF0aXR1ZGUiLCJsYXRpdHVkZSIsInZhbGlkYXRlQ29vcmRpbmF0ZSIsInZhbGlkYXRlTG9uZ2l0dWRlIiwibG9uZ2l0dWRlIiwidmFsdWUiLCJtaW5WYWx1ZSIsIm1heFZhbHVlIiwidW5pcXVlIiwidmFsdWVzIiwicmVzdWx0cyIsInVuaXF1ZVNldCIsIlNldCIsImZvckVhY2giLCJ2Iiwibm90TnVsbG9yVW5kZWZpbmVkIiwicHVzaCIsImdldExhdExuZ0JvdW5kcyIsInBvaW50cyIsImlkeCIsImxpbWl0IiwibGF0cyIsIm1hcCIsImQiLCJOdW1iZXIiLCJBcnJheSIsImlzQXJyYXkiLCJmaWx0ZXIiLCJpc0Zpbml0ZSIsInNvcnQiLCJudW1iZXJTb3J0IiwibGVuZ3RoIiwiTWF0aCIsIm1heCIsIm1pbiIsImNsYW1wIiwiX3JlZiIsIl9yZWYyIiwiX3NsaWNlZFRvQXJyYXkyIiwidmFsIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiZ2V0U2FtcGxlRGF0YSIsImRhdGEiLCJzYW1wbGVTaXplIiwiZ2V0VmFsdWUiLCJzYW1wbGVTdGVwIiwiZmxvb3IiLCJvdXRwdXQiLCJ0aW1lVG9Vbml4TWlsbGkiLCJmb3JtYXQiLCJtb21lbnQiLCJ1dGMiLCJ2YWx1ZU9mIiwiRGF0ZSIsImlzTnVtYmVyIiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsImIiLCJnZXRTb3J0aW5nRnVuY3Rpb24iLCJmaWVsZFR5cGUiLCJBTExfRklFTERfVFlQRVMiLCJyZWFsIiwiaW50ZWdlciIsInRpbWVzdGFtcCIsInByZWNpc2VSb3VuZCIsIm51bSIsImRlY2ltYWxzIiwicG93Iiwicm91bmQiLCJzaWduIiwidG9GaXhlZCIsInJvdW5kVG9Gb3VyIiwiY29uY2F0IiwiZ2V0Um91bmRpbmdEZWNpbWFsRnJvbVN0ZXAiLCJzdGVwIiwiaXNOYU4iLCJhc3NlcnQiLCJzdGVwU3RyIiwidG9TdHJpbmciLCJzcGxpdEV4cG9uZW50aWFsIiwic3BsaXQiLCJjb2VmZlplcm8iLCJjb2VmZkRlY2ltYWwiLCJwYXJzZUludCIsInNwbGl0WmVybyIsIm5vcm1hbGl6ZVNsaWRlclZhbHVlIiwibWFya3MiLCJzbmFwVG9NYXJrcyIsInJvdW5kVmFsVG9TdGVwIiwiZGVjaW1hbCIsInN0ZXBzIiwicmVtYWluIiwiY2xvc2VzdCIsInJvdW5kZWQiLCJkZWZhdWx0Rm9ybWF0dGVyIiwiU3RyaW5nIiwiZmxvYXRGb3JtYXR0ZXIiLCJ1aW50OEFycmF5VG9IZXgiLCJmcm9tIiwiYnl0ZSIsInBhZFN0YXJ0Iiwiam9pbiIsIkZJRUxEX0RJU1BMQVlfRk9STUFUIiwiX2RlZmluZVByb3BlcnR5MiIsInN0cmluZyIsImRhdGUiLCJnZW9qc29uIiwiaXNQbGFpbk9iamVjdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJnZW9hcnJvdyIsImZpZWxkIiwiVmVjdG9yIiwiX2ZpZWxkJG1ldGFkYXRhIiwiZW5jb2RpbmciLCJtZXRhZGF0YSIsImdlb21ldHJ5IiwicGFyc2VHZW9tZXRyeUZyb21BcnJvdyIsImVycm9yIiwiVWludDhBcnJheSIsIm9iamVjdCIsImFycmF5IiwiaDMiLCJwYXJzZUZpZWxkVmFsdWUiLCJ0eXBlIiwiZ2V0Rm9ybWF0dGVyIiwidG9vbHRpcEZvcm1hdCIsIlRPT0xUSVBfRk9STUFUUyIsImZpbmQiLCJmIiwiVE9PTFRJUF9LRVkiLCJhcHBseURlZmF1bHRGb3JtYXQiLCJhcHBseUN1c3RvbUZvcm1hdCIsImdldENvbHVtbkZvcm1hdHRlciIsImRpc3BsYXlGb3JtYXQiLCJfdHlwZW9mMiIsImFwcGx5VmFsdWVNYXAiLCJUT09MVElQX0ZPUk1BVF9UWVBFUyIsIkRFQ0lNQUwiLCJkM0Zvcm1hdCIsIkRBVEUiLCJEQVRFX1RJTUUiLCJkYXRldGltZUZvcm1hdHRlciIsIlBFUkNFTlRBR0UiLCJERUNJTUFMX0RFQ0lNQUxfRklYRURfMiIsIkJPT0xFQU4iLCJnZXRCb29sZWFuRm9ybWF0dGVyIiwiZm9ybWF0TGFyZ2VOdW1iZXIiLCJmb3JtYXROdW1iZXIiLCJ0cmFuc2Zvcm1hdGlvbiIsIlkiLCJaIiwiRSIsIlAiLCJUIiwiRyIsIk0iLCJrIiwiaCIsImRhIiwiYyIsIm0iLCLOvCIsInAiLCJ6IiwieSIsInJldmVyc2VGb3JtYXROdW1iZXIiLCJzdHIiLCJyZXR1cm5WYWx1ZSIsInN0ck51bSIsInRyaW0iLCJyZXBsYWNlIiwiZW50cmllcyIsImluY2x1ZGVzIiwicGFyc2VGbG9hdCIsInRpbWV6b25lIiwidHMiLCJ0eiJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQge2Zvcm1hdCBhcyBkM0Zvcm1hdH0gZnJvbSAnZDMtZm9ybWF0JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcblxuaW1wb3J0IHtwYXJzZUdlb21ldHJ5RnJvbUFycm93fSBmcm9tICdAbG9hZGVycy5nbC9hcnJvdyc7XG5cbmltcG9ydCB7XG4gIEFMTF9GSUVMRF9UWVBFUyxcbiAgVE9PTFRJUF9GT1JNQVRTLFxuICBUT09MVElQX0ZPUk1BVF9UWVBFUyxcbiAgVE9PTFRJUF9LRVksXG4gIFRvb2x0aXBGb3JtYXRcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtub3ROdWxsb3JVbmRlZmluZWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7RmllbGQsIE1pbGxpc2Vjb25kLCBQcm90b0RhdGFzZXRGaWVsZH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7c25hcFRvTWFya3N9IGZyb20gJy4vcGxvdCc7XG5pbXBvcnQge2lzUGxhaW5PYmplY3R9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBGaWVsZEZvcm1hdHRlciA9ICh2YWx1ZTogYW55LCBmaWVsZD86IFByb3RvRGF0YXNldEZpZWxkKSA9PiBzdHJpbmc7XG5cbi8vIFdlIG5lZWQgdGhyZWF0IGxhdGl0dWRlIGRpZmZlcmVudGx5IG90aGVyd2lzZSBtZXJjYXRvciBwcm9qZWN0IHZpZXcgdGhyb3dzXG4vLyBhIHByb2plY3Rpb24gbWF0cml4IGVycm9yXG4vLyBVbmNhdWdodCBFcnJvcjogUGl4ZWwgcHJvamVjdCBtYXRyaXggbm90IGludmVydGlibGVcbi8vIGF0IFdlYk1lcmNhdG9yVmlld3BvcnQxNi5WaWV3cG9ydDYgKHZpZXdwb3J0LmpzOjgxOjEzKVxuZXhwb3J0IGNvbnN0IE1BWF9MQVRJVFVERSA9IDg5Ljk7XG5leHBvcnQgY29uc3QgTUlOX0xBVElUVURFID0gLTg5Ljk7XG5leHBvcnQgY29uc3QgTUFYX0xPTkdJVFVERSA9IDE4MDtcbmV4cG9ydCBjb25zdCBNSU5fTE9OR0lUVURFID0gLTE4MDtcblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBsYXRpdHVkZSB2YWx1ZS5cbiAqIEVuc3VyZXMgdGhhdCB0aGUgbGF0aXR1ZGUgaXMgd2l0aGluIHRoZSBkZWZpbmVkIG1pbmltdW0gYW5kIG1heGltdW0gbGF0aXR1ZGUgYm91bmRzLlxuICogSWYgdGhlIHZhbHVlIGlzIG91dCBvZiBib3VuZHMsIGl0IHJldHVybnMgdGhlIG5lYXJlc3QgYm91bmQgdmFsdWUuXG4gKiBAcGFyYW0gbGF0aXR1ZGUgLSBUaGUgbGF0aXR1ZGUgdmFsdWUgdG8gdmFsaWRhdGUuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIGxhdGl0dWRlIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMYXRpdHVkZShsYXRpdHVkZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgcmV0dXJuIHZhbGlkYXRlQ29vcmRpbmF0ZShsYXRpdHVkZSA/PyAwLCBNSU5fTEFUSVRVREUsIE1BWF9MQVRJVFVERSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgbG9uZ2l0dWRlIHZhbHVlLlxuICogRW5zdXJlcyB0aGF0IHRoZSBsb25naXR1ZGUgaXMgd2l0aGluIHRoZSBkZWZpbmVkIG1pbmltdW0gYW5kIG1heGltdW0gbG9uZ2l0dWRlIGJvdW5kcy5cbiAqIElmIHRoZSB2YWx1ZSBpcyBvdXQgb2YgYm91bmRzLCBpdCByZXR1cm5zIHRoZSBuZWFyZXN0IGJvdW5kIHZhbHVlLlxuICogQHBhcmFtIGxvbmdpdHVkZSAtIFRoZSBsb25naXR1ZGUgdmFsdWUgdG8gdmFsaWRhdGUuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIGxvbmdpdHVkZSB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTG9uZ2l0dWRlKGxvbmdpdHVkZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgcmV0dXJuIHZhbGlkYXRlQ29vcmRpbmF0ZShsb25naXR1ZGUgPz8gMCwgTUlOX0xPTkdJVFVERSwgTUFYX0xPTkdJVFVERSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgY29vcmRpbmF0ZSB2YWx1ZS5cbiAqIEVuc3VyZXMgdGhhdCB0aGUgdmFsdWUgaXMgd2l0aGluIHRoZSBzcGVjaWZpZWQgbWluaW11bSBhbmQgbWF4aW11bSBib3VuZHMuXG4gKiBJZiB0aGUgdmFsdWUgaXMgb3V0IG9mIGJvdW5kcywgaXQgcmV0dXJucyB0aGUgbmVhcmVzdCBib3VuZCB2YWx1ZS5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBjb29yZGluYXRlIHZhbHVlIHRvIHZhbGlkYXRlLlxuICogQHBhcmFtIG1pblZhbHVlIC0gVGhlIG1pbmltdW0gYm91bmQgZm9yIHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSBtYXhWYWx1ZSAtIFRoZSBtYXhpbXVtIGJvdW5kIGZvciB0aGUgdmFsdWUuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIGNvb3JkaW5hdGUgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNvb3JkaW5hdGUodmFsdWU6IG51bWJlciwgbWluVmFsdWU6IG51bWJlciwgbWF4VmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gIGlmICh2YWx1ZSA8PSBtaW5WYWx1ZSkge1xuICAgIHJldHVybiBtaW5WYWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgPj0gbWF4VmFsdWUpIHtcbiAgICByZXR1cm4gbWF4VmFsdWU7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKlxuICogc2ltcGxlIGdldHRpbmcgdW5pcXVlIHZhbHVlcyBvZiBhbiBhcnJheVxuICpcbiAqIEBwYXJhbSB2YWx1ZXNcbiAqIEByZXR1cm5zIHVuaXF1ZSB2YWx1ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuaXF1ZTxUPih2YWx1ZXM6IFRbXSkge1xuICBjb25zdCByZXN1bHRzOiBUW10gPSBbXTtcbiAgY29uc3QgdW5pcXVlU2V0ID0gbmV3IFNldCh2YWx1ZXMpO1xuICB1bmlxdWVTZXQuZm9yRWFjaCh2ID0+IHtcbiAgICBpZiAobm90TnVsbG9yVW5kZWZpbmVkKHYpKSB7XG4gICAgICByZXN1bHRzLnB1c2godik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXRMbmdCb3VuZHMoXG4gIHBvaW50czogbnVtYmVyW11bXSxcbiAgaWR4OiBudW1iZXIsXG4gIGxpbWl0OiBbbnVtYmVyLCBudW1iZXJdXG4pOiBbbnVtYmVyLCBudW1iZXJdIHwgbnVsbCB7XG4gIGNvbnN0IGxhdHMgPSBwb2ludHNcbiAgICAubWFwKGQgPT4gTnVtYmVyKEFycmF5LmlzQXJyYXkoZCkpICYmIGRbaWR4XSlcbiAgICAuZmlsdGVyKE51bWJlci5pc0Zpbml0ZSlcbiAgICAuc29ydChudW1iZXJTb3J0KTtcblxuICBpZiAoIWxhdHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBjbGFtcCB0byBsaW1pdFxuICByZXR1cm4gW01hdGgubWF4KGxhdHNbMF0sIGxpbWl0WzBdKSwgTWF0aC5taW4obGF0c1tsYXRzLmxlbmd0aCAtIDFdLCBsaW1pdFsxXSldO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xhbXAoW21pbiwgbWF4XTogW251bWJlciwgbnVtYmVyXSwgdmFsID0gMCk6IG51bWJlciB7XG4gIHJldHVybiB2YWwgPD0gbWluID8gbWluIDogdmFsID49IG1heCA/IG1heCA6IHZhbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNhbXBsZURhdGEoZGF0YSwgc2FtcGxlU2l6ZSA9IDUwMCwgZ2V0VmFsdWUgPSBkID0+IGQpIHtcbiAgY29uc3Qgc2FtcGxlU3RlcCA9IE1hdGgubWF4KE1hdGguZmxvb3IoZGF0YS5sZW5ndGggLyBzYW1wbGVTaXplKSwgMSk7XG4gIGNvbnN0IG91dHB1dDogYW55W10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSArPSBzYW1wbGVTdGVwKSB7XG4gICAgb3V0cHV0LnB1c2goZ2V0VmFsdWUoZGF0YVtpXSkpO1xuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGRpZmZlcmVudCB0aW1lIGZvcm1hdCB0byB1bml4IG1pbGxpc2Vjb25kc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdGltZVRvVW5peE1pbGxpKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IE1pbGxpc2Vjb25kIHwgbnVsbCB7XG4gIGlmIChub3ROdWxsb3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBtb21lbnQudXRjKHZhbHVlLCBmb3JtYXQpLnZhbHVlT2YoKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBmb3JtYXQgPT09ICd4JyA/IHZhbHVlICogMTAwMCA6IHZhbHVlO1xuICAgIH1cbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICByZXR1cm4gdmFsdWUudmFsdWVPZigpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGQgaXMgYSBudW1iZXIsIHRoaXMgZmlsdGVyZWQgb3V0IE5hTiBhcyB3ZWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlcihkOiB1bmtub3duKTogZCBpcyBudW1iZXIge1xuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKGQpO1xufVxuXG4vKipcbiAqIHdoZXRoZXIgb2JqZWN0IGhhcyBwcm9wZXJ0eVxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHllcyBvciBub1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzT3duUHJvcGVydHk8WCBleHRlbmRzIG9iamVjdCwgWSBleHRlbmRzIFByb3BlcnR5S2V5PihcbiAgb2JqOiBYLFxuICBwcm9wOiBZXG4pOiBvYmogaXMgWCAmIFJlY29yZDxZLCB1bmtub3duPiB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG51bWJlclNvcnQoYTogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gYSAtIGI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTb3J0aW5nRnVuY3Rpb24oZmllbGRUeXBlOiBzdHJpbmcpOiB0eXBlb2YgbnVtYmVyU29ydCB8IHVuZGVmaW5lZCB7XG4gIHN3aXRjaCAoZmllbGRUeXBlKSB7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMucmVhbDpcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcDpcbiAgICAgIHJldHVybiBudW1iZXJTb3J0O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogcm91bmQgbnVtYmVyIHdpdGggZXhhY3QgbnVtYmVyIG9mIGRlY2ltYWxzXG4gKiByZXR1cm4gYXMgYSBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWNpc2VSb3VuZChudW06IG51bWJlciwgZGVjaW1hbHM6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IHQgPSBNYXRoLnBvdygxMCwgZGVjaW1hbHMpO1xuICByZXR1cm4gKFxuICAgIE1hdGgucm91bmQoXG4gICAgICBudW0gKiB0ICsgKGRlY2ltYWxzID4gMCA/IDEgOiAwKSAqIChNYXRoLnNpZ24obnVtKSAqICgxMCAvIE1hdGgucG93KDEwMCwgZGVjaW1hbHMpKSlcbiAgICApIC8gdFxuICApLnRvRml4ZWQoZGVjaW1hbHMpO1xufVxuXG4vKipcbiAqIHJvdW5kIGEgZ2l2aW5nIG51bWJlciBhdCBtb3N0IDQgZGVjaW1hbCBwbGFjZXNcbiAqIGUuZy4gMTAgLT4gMTAsIDEuMTIzNDUgLT4gMS4yMzQ1LCAyLjAgLT4gMlxuICovXG5leHBvcnQgZnVuY3Rpb24gcm91bmRUb0ZvdXIobnVtOiBudW1iZXIpOiBudW1iZXIge1xuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIHJldHVybiBOdW1iZXIoYCR7TWF0aC5yb3VuZChgJHtudW19ZSs0YCl9ZS00YCk7XG59XG4vKipcbiAqIGdldCBudW1iZXIgb2YgZGVjaW1hbHMgdG8gcm91bmQgdG8gZm9yIHNsaWRlciBmcm9tIHN0ZXBcbiAqIEBwYXJhbSBzdGVwXG4gKiBAcmV0dXJucy0gbnVtYmVyIG9mIGRlY2ltYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdW5kaW5nRGVjaW1hbEZyb21TdGVwKHN0ZXA6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChpc05hTihzdGVwKSkge1xuICAgIGFzc2VydCgnc3RlcCBpcyBub3QgYSBudW1iZXInKTtcbiAgICBhc3NlcnQoc3RlcCk7XG4gIH1cblxuICBjb25zdCBzdGVwU3RyID0gc3RlcC50b1N0cmluZygpO1xuXG4gIC8vIGluIGNhc2UgdGhlIHN0ZXAgaXMgYSB2ZXJ5IHNtYWxsIG51bWJlciBlLmcuIDFlLTcsIHJldHVybiBkZWNpbWFsIGUuZy4gNyBkaXJlY3RseVxuICBjb25zdCBzcGxpdEV4cG9uZW50aWFsID0gc3RlcFN0ci5zcGxpdCgnZS0nKTtcbiAgaWYgKHNwbGl0RXhwb25lbnRpYWwubGVuZ3RoID09PSAyKSB7XG4gICAgY29uc3QgY29lZmZaZXJvID0gc3BsaXRFeHBvbmVudGlhbFswXS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGNvZWZmRGVjaW1hbCA9IGNvZWZmWmVyby5sZW5ndGggPT09IDEgPyAwIDogY29lZmZaZXJvWzFdLmxlbmd0aDtcbiAgICByZXR1cm4gcGFyc2VJbnQoc3BsaXRFeHBvbmVudGlhbFsxXSwgMTApICsgY29lZmZEZWNpbWFsO1xuICB9XG5cbiAgY29uc3Qgc3BsaXRaZXJvID0gc3RlcFN0ci5zcGxpdCgnLicpO1xuICBpZiAoc3BsaXRaZXJvLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIHJldHVybiBzcGxpdFplcm9bMV0ubGVuZ3RoO1xufVxuXG4vKipcbiAqIElmIG1hcmtzIGlzIHByb3ZpZGVkLCBzbmFwIHRvIG1hcmtzLCBpZiBub3Qgbm9ybWFsaXplIHRvIHN0ZXBcbiAqIEBwYXJhbSB2YWxcbiAqIEBwYXJhbSBtaW5WYWx1ZVxuICogQHBhcmFtIHN0ZXBcbiAqIEBwYXJhbSBtYXJrc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplU2xpZGVyVmFsdWUoXG4gIHZhbDogbnVtYmVyLFxuICBtaW5WYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBzdGVwOiBudW1iZXIsXG4gIG1hcmtzPzogbnVtYmVyW10gfCBudWxsXG4pOiBudW1iZXIge1xuICBpZiAobWFya3MgJiYgbWFya3MubGVuZ3RoKSB7XG4gICAgLy8gVXNlIGluIHNsaWRlciwgZ2l2ZW4gYSBudW1iZXIgYW5kIGFuIGFycmF5IG9mIG51bWJlcnMsIHJldHVybiB0aGUgbmVhcnMgbnVtYmVyIGZyb20gdGhlIGFycmF5XG4gICAgcmV0dXJuIHNuYXBUb01hcmtzKHZhbCwgbWFya3MpO1xuICB9XG5cbiAgcmV0dXJuIHJvdW5kVmFsVG9TdGVwKG1pblZhbHVlLCBzdGVwLCB2YWwpO1xufVxuXG4vKipcbiAqIHJvdW5kIHRoZSB2YWx1ZSB0byBzdGVwIGZvciB0aGUgc2xpZGVyXG4gKiBAcGFyYW0gbWluVmFsdWVcbiAqIEBwYXJhbSBzdGVwXG4gKiBAcGFyYW0gdmFsXG4gKiBAcmV0dXJucyAtIHJvdW5kZWQgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb3VuZFZhbFRvU3RlcChtaW5WYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkLCBzdGVwOiBudW1iZXIsIHZhbDogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKCFpc051bWJlcihzdGVwKSB8fCAhaXNOdW1iZXIobWluVmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIGNvbnN0IGRlY2ltYWwgPSBnZXRSb3VuZGluZ0RlY2ltYWxGcm9tU3RlcChzdGVwKTtcbiAgY29uc3Qgc3RlcHMgPSBNYXRoLmZsb29yKCh2YWwgLSBtaW5WYWx1ZSkgLyBzdGVwKTtcbiAgbGV0IHJlbWFpbiA9IHZhbCAtIChzdGVwcyAqIHN0ZXAgKyBtaW5WYWx1ZSk7XG5cbiAgLy8gaGFzIHRvIHJvdW5kIGJlY2F1c2UgamF2YXNjcmlwdCB0dXJucyAwLjEgaW50byAwLjk5OTk5OTk5OTk5OTk5ODdcbiAgcmVtYWluID0gTnVtYmVyKHByZWNpc2VSb3VuZChyZW1haW4sIDgpKTtcblxuICBsZXQgY2xvc2VzdDogbnVtYmVyO1xuICBpZiAocmVtYWluID09PSAwKSB7XG4gICAgY2xvc2VzdCA9IHZhbDtcbiAgfSBlbHNlIGlmIChyZW1haW4gPCBzdGVwIC8gMikge1xuICAgIGNsb3Nlc3QgPSBzdGVwcyAqIHN0ZXAgKyBtaW5WYWx1ZTtcbiAgfSBlbHNlIHtcbiAgICBjbG9zZXN0ID0gKHN0ZXBzICsgMSkgKiBzdGVwICsgbWluVmFsdWU7XG4gIH1cblxuICAvLyBwcmVjaXNlIHJvdW5kIHJldHVybiBhIHN0cmluZyByb3VuZGVkIHRvIHRoZSBkZWZpbmVkIGRlY2ltYWxcbiAgY29uc3Qgcm91bmRlZCA9IHByZWNpc2VSb3VuZChjbG9zZXN0LCBkZWNpbWFsKTtcblxuICByZXR1cm4gTnVtYmVyKHJvdW5kZWQpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgdmFsdWUgZm9ybWF0IGJhc2VkIG9uIGZpZWxkIGFuZCBmb3JtYXQgb3B0aW9uc1xuICogVXNlZCBpbiByZW5kZXIgdG9vbHRpcCB2YWx1ZVxuICovXG5leHBvcnQgY29uc3QgZGVmYXVsdEZvcm1hdHRlcjogRmllbGRGb3JtYXR0ZXIgPSB2ID0+IChub3ROdWxsb3JVbmRlZmluZWQodikgPyBTdHJpbmcodikgOiAnJyk7XG5cbmV4cG9ydCBjb25zdCBmbG9hdEZvcm1hdHRlciA9IHYgPT4gKGlzTnVtYmVyKHYpID8gU3RyaW5nKHJvdW5kVG9Gb3VyKHYpKSA6ICcnKTtcblxuLyoqXG4gKiBUcmFuc2Zvcm1zIGEgV0tCIGluIFVpbnQ4QXJyYXkgZm9ybSBpbnRvIGEgaGV4IFdLQiBzdHJpbmcuXG4gKiBAcGFyYW0gdWludDhBcnJheSBXS0IgaW4gVWludDhBcnJheSBmb3JtLlxuICogQHJldHVybnMgaGV4IFdLQiBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1aW50OEFycmF5VG9IZXgoZGF0YTogVWludDhBcnJheSk6IHN0cmluZyB7XG4gIHJldHVybiBBcnJheS5mcm9tKGRhdGEpXG4gICAgLm1hcChieXRlID0+IChieXRlIGFzIGFueSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJykpXG4gICAgLmpvaW4oJycpO1xufVxuXG5leHBvcnQgY29uc3QgRklFTERfRElTUExBWV9GT1JNQVQ6IHtcbiAgW2tleTogc3RyaW5nXTogRmllbGRGb3JtYXR0ZXI7XG59ID0ge1xuICBbQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ106IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMudGltZXN0YW1wXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5yZWFsXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5ib29sZWFuXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5kYXRlXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5nZW9qc29uXTogZCA9PlxuICAgIHR5cGVvZiBkID09PSAnc3RyaW5nJ1xuICAgICAgPyBkXG4gICAgICA6IGlzUGxhaW5PYmplY3QoZClcbiAgICAgID8gSlNPTi5zdHJpbmdpZnkoZClcbiAgICAgIDogQXJyYXkuaXNBcnJheShkKVxuICAgICAgPyBgWyR7U3RyaW5nKGQpfV1gXG4gICAgICA6ICcnLFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2Fycm93XTogKGRhdGEsIGZpZWxkKSA9PiB7XG4gICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBhcnJvdy5WZWN0b3IpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGVuY29kaW5nID0gZmllbGQ/Lm1ldGFkYXRhPy5nZXQoJ0FSUk9XOmV4dGVuc2lvbjpuYW1lJyk7XG4gICAgICAgIGlmIChlbmNvZGluZykge1xuICAgICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gcGFyc2VHZW9tZXRyeUZyb21BcnJvdyhkYXRhLCBlbmNvZGluZyk7XG4gICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGdlb21ldHJ5KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gaWdub3JlIGZvciBub3dcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICByZXR1cm4gdWludDhBcnJheVRvSGV4KGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5vYmplY3RdOiAodmFsdWU6IGFueSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5hcnJheV06IGQgPT4gSlNPTi5zdHJpbmdpZnkoZCksXG4gIFtBTExfRklFTERfVFlQRVMuaDNdOiBkZWZhdWx0Rm9ybWF0dGVyXG59O1xuXG4vKipcbiAqIFBhcnNlIGZpZWxkIHZhbHVlIGFuZCB0eXBlIGFuZCByZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlRmllbGRWYWx1ZSA9ICh2YWx1ZTogYW55LCB0eXBlOiBzdHJpbmcsIGZpZWxkPzogRmllbGQpOiBzdHJpbmcgPT4ge1xuICBpZiAoIW5vdE51bGxvclVuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgLy8gQmlnSW50IHZhbHVlcyBjYW5ub3QgYmUgc2VyaWFsaXplZCB3aXRoIEpTT04uc3RyaW5naWZ5KCkgZGlyZWN0bHlcbiAgLy8gV2UgbmVlZCB0byBleHBsaWNpdGx5IGNvbnZlcnQgdGhlbSB0byBzdHJpbmdzIHVzaW5nIC50b1N0cmluZygpXG4gIC8vIFNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvQmlnSW50I3VzZV93aXRoaW5fanNvblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnYmlnaW50Jykge1xuICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICB9XG4gIHJldHVybiBGSUVMRF9ESVNQTEFZX0ZPUk1BVFt0eXBlXSA/IEZJRUxEX0RJU1BMQVlfRk9STUFUW3R5cGVdKHZhbHVlLCBmaWVsZCkgOiBTdHJpbmcodmFsdWUpO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHZhbHVlIGZvcm1hdCBiYXNlZCBvbiBmaWVsZCBhbmQgZm9ybWF0IG9wdGlvbnNcbiAqIFVzZWQgaW4gcmVuZGVyIHRvb2x0aXAgdmFsdWVcbiAqIEBwYXJhbSBmb3JtYXRcbiAqIEBwYXJhbSBmaWVsZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybWF0dGVyKFxuICBmb3JtYXQ/OiBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbCxcbiAgZmllbGQ/OiBGaWVsZFxuKTogRmllbGRGb3JtYXR0ZXIge1xuICBpZiAoIWZvcm1hdCkge1xuICAgIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xuICB9XG4gIGNvbnN0IHRvb2x0aXBGb3JtYXQgPSBPYmplY3QudmFsdWVzKFRPT0xUSVBfRk9STUFUUykuZmluZChmID0+IGZbVE9PTFRJUF9LRVldID09PSBmb3JtYXQpO1xuXG4gIGlmICh0b29sdGlwRm9ybWF0KSB7XG4gICAgcmV0dXJuIGFwcGx5RGVmYXVsdEZvcm1hdCh0b29sdGlwRm9ybWF0IGFzIFRvb2x0aXBGb3JtYXQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBmb3JtYXQgPT09ICdzdHJpbmcnICYmIGZpZWxkKSB7XG4gICAgcmV0dXJuIGFwcGx5Q3VzdG9tRm9ybWF0KGZvcm1hdCwgZmllbGQpO1xuICB9XG5cbiAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2x1bW5Gb3JtYXR0ZXIoXG4gIGZpZWxkOiBQaWNrPEZpZWxkLCAndHlwZSc+ICYgUGFydGlhbDxQaWNrPEZpZWxkLCAnZm9ybWF0JyB8ICdkaXNwbGF5Rm9ybWF0Jz4+XG4pOiBGaWVsZEZvcm1hdHRlciB7XG4gIGNvbnN0IHtmb3JtYXQsIGRpc3BsYXlGb3JtYXR9ID0gZmllbGQ7XG5cbiAgaWYgKCFmb3JtYXQgJiYgIWRpc3BsYXlGb3JtYXQpIHtcbiAgICByZXR1cm4gRklFTERfRElTUExBWV9GT1JNQVRbZmllbGQudHlwZV07XG4gIH1cbiAgY29uc3QgdG9vbHRpcEZvcm1hdCA9IE9iamVjdC52YWx1ZXMoVE9PTFRJUF9GT1JNQVRTKS5maW5kKGYgPT4gZltUT09MVElQX0tFWV0gPT09IGRpc3BsYXlGb3JtYXQpO1xuXG4gIGlmICh0b29sdGlwRm9ybWF0KSB7XG4gICAgcmV0dXJuIGFwcGx5RGVmYXVsdEZvcm1hdCh0b29sdGlwRm9ybWF0KTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGlzcGxheUZvcm1hdCA9PT0gJ3N0cmluZycgJiYgZmllbGQpIHtcbiAgICByZXR1cm4gYXBwbHlDdXN0b21Gb3JtYXQoZGlzcGxheUZvcm1hdCwgZmllbGQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBkaXNwbGF5Rm9ybWF0ID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBhcHBseVZhbHVlTWFwKGRpc3BsYXlGb3JtYXQpO1xuICB9XG5cbiAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVZhbHVlTWFwKGZvcm1hdCkge1xuICByZXR1cm4gdiA9PiBmb3JtYXRbdl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseURlZmF1bHRGb3JtYXQodG9vbHRpcEZvcm1hdDogVG9vbHRpcEZvcm1hdCk6ICh2OiBhbnkpID0+IHN0cmluZyB7XG4gIGlmICghdG9vbHRpcEZvcm1hdCB8fCAhdG9vbHRpcEZvcm1hdC5mb3JtYXQpIHtcbiAgICByZXR1cm4gZGVmYXVsdEZvcm1hdHRlcjtcbiAgfVxuXG4gIHN3aXRjaCAodG9vbHRpcEZvcm1hdC50eXBlKSB7XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5ERUNJTUFMOlxuICAgICAgcmV0dXJuIGQzRm9ybWF0KHRvb2x0aXBGb3JtYXQuZm9ybWF0KTtcbiAgICBjYXNlIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEU6XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFX1RJTUU6XG4gICAgICByZXR1cm4gZGF0ZXRpbWVGb3JtYXR0ZXIobnVsbCkodG9vbHRpcEZvcm1hdC5mb3JtYXQpO1xuICAgIGNhc2UgVE9PTFRJUF9GT1JNQVRfVFlQRVMuUEVSQ0VOVEFHRTpcbiAgICAgIHJldHVybiB2ID0+IGAke2QzRm9ybWF0KFRPT0xUSVBfRk9STUFUUy5ERUNJTUFMX0RFQ0lNQUxfRklYRURfMi5mb3JtYXQpKHYpfSVgO1xuICAgIGNhc2UgVE9PTFRJUF9GT1JNQVRfVFlQRVMuQk9PTEVBTjpcbiAgICAgIHJldHVybiBnZXRCb29sZWFuRm9ybWF0dGVyKHRvb2x0aXBGb3JtYXQuZm9ybWF0KTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJvb2xlYW5Gb3JtYXR0ZXIoZm9ybWF0OiBzdHJpbmcpOiBGaWVsZEZvcm1hdHRlciB7XG4gIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgY2FzZSAnMDEnOlxuICAgICAgcmV0dXJuICh2OiBib29sZWFuKSA9PiAodiA/ICcxJyA6ICcwJyk7XG4gICAgY2FzZSAneW4nOlxuICAgICAgcmV0dXJuICh2OiBib29sZWFuKSA9PiAodiA/ICd5ZXMnIDogJ25vJyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xuICB9XG59XG4vLyBBbGxvdyB1c2VyIHRvIHNwZWNpZnkgY3VzdG9tIHRvb2x0aXAgZm9ybWF0IHZpYSBjb25maWdcbmV4cG9ydCBmdW5jdGlvbiBhcHBseUN1c3RvbUZvcm1hdChmb3JtYXQsIGZpZWxkOiB7dHlwZT86IHN0cmluZ30pOiBGaWVsZEZvcm1hdHRlciB7XG4gIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICAgIHJldHVybiBkM0Zvcm1hdChmb3JtYXQpO1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmRhdGU6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wOlxuICAgICAgcmV0dXJuIGRhdGV0aW1lRm9ybWF0dGVyKG51bGwpKGZvcm1hdCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB2ID0+IHY7XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9ybWF0TGFyZ2VOdW1iZXIobikge1xuICAvLyBTSS1wcmVmaXggd2l0aCA0IHNpZ25pZmljYW50IGRpZ2l0c1xuICByZXR1cm4gZDNGb3JtYXQoJy40fnMnKShuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE51bWJlcihuOiBudW1iZXIsIHR5cGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgICAgaWYgKG4gPCAwKSB7XG4gICAgICAgIHJldHVybiBgLSR7Zm9ybWF0TnVtYmVyKC1uLCAnaW50ZWdlcicpfWA7XG4gICAgICB9XG4gICAgICBpZiAobiA8IDEwMDApIHtcbiAgICAgICAgcmV0dXJuIGAke01hdGgucm91bmQobil9YDtcbiAgICAgIH1cbiAgICAgIGlmIChuIDwgMTAgKiAxMDAwKSB7XG4gICAgICAgIHJldHVybiBkM0Zvcm1hdCgnLCcpKE1hdGgucm91bmQobikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm1hdExhcmdlTnVtYmVyKG4pO1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgICBpZiAobiA8IDApIHtcbiAgICAgICAgcmV0dXJuIGAtJHtmb3JtYXROdW1iZXIoLW4sICdudW1iZXInKX1gO1xuICAgICAgfVxuICAgICAgaWYgKG4gPCAxMDAwKSB7XG4gICAgICAgIHJldHVybiBkM0Zvcm1hdCgnLjR+cicpKG4pO1xuICAgICAgfVxuICAgICAgaWYgKG4gPCAxMCAqIDEwMDApIHtcbiAgICAgICAgcmV0dXJuIGQzRm9ybWF0KCcsLjJ+ZicpKG4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm1hdExhcmdlTnVtYmVyKG4pO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmb3JtYXROdW1iZXIobiwgJ3JlYWwnKTtcbiAgfVxufVxuXG5jb25zdCB0cmFuc2Zvcm1hdGlvbiA9IHtcbiAgWTogTWF0aC5wb3coMTAsIDI0KSxcbiAgWjogTWF0aC5wb3coMTAsIDIxKSxcbiAgRTogTWF0aC5wb3coMTAsIDE4KSxcbiAgUDogTWF0aC5wb3coMTAsIDE1KSxcbiAgVDogTWF0aC5wb3coMTAsIDEyKSxcbiAgRzogTWF0aC5wb3coMTAsIDkpLFxuICBNOiBNYXRoLnBvdygxMCwgNiksXG4gIGs6IE1hdGgucG93KDEwLCAzKSxcbiAgaDogTWF0aC5wb3coMTAsIDIpLFxuICBkYTogTWF0aC5wb3coMTAsIDEpLFxuICBkOiBNYXRoLnBvdygxMCwgLTEpLFxuICBjOiBNYXRoLnBvdygxMCwgLTIpLFxuICBtOiBNYXRoLnBvdygxMCwgLTMpLFxuICDOvDogTWF0aC5wb3coMTAsIC02KSxcbiAgbjogTWF0aC5wb3coMTAsIC05KSxcbiAgcDogTWF0aC5wb3coMTAsIC0xMiksXG4gIGY6IE1hdGgucG93KDEwLCAtMTUpLFxuICBhOiBNYXRoLnBvdygxMCwgLTE4KSxcbiAgejogTWF0aC5wb3coMTAsIC0yMSksXG4gIHk6IE1hdGgucG93KDEwLCAtMjQpXG59O1xuXG4vKipcbiAqIENvbnZlcnQgYSBmb3JtYXR0ZWQgbnVtYmVyIGZyb20gc3RyaW5nIGJhY2sgdG8gbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXZlcnNlRm9ybWF0TnVtYmVyKHN0cjogc3RyaW5nKTogbnVtYmVyIHtcbiAgbGV0IHJldHVyblZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgY29uc3Qgc3RyTnVtID0gc3RyLnRyaW0oKS5yZXBsYWNlKC8sL2csICcnKTtcbiAgT2JqZWN0LmVudHJpZXModHJhbnNmb3JtYXRpb24pLmZvckVhY2goZCA9PiB7XG4gICAgaWYgKHN0ck51bS5pbmNsdWRlcyhkWzBdKSkge1xuICAgICAgcmV0dXJuVmFsdWUgPSBwYXJzZUZsb2F0KHN0ck51bSkgKiBkWzFdO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSk7XG5cbiAgLy8gaWYgbm8gdHJhbnNmb3JtZXIgZm91bmQsIGNvbnZlcnQgdG8gbnViZXIgcmVnYXJkbGVzc1xuICByZXR1cm4gcmV0dXJuVmFsdWUgPT09IG51bGwgPyBOdW1iZXIoc3RyTnVtKSA6IHJldHVyblZhbHVlO1xufVxuXG4vKipcbiAqIEZvcm1hdCBlcG9jaCBtaWxsaXNlY29uZHMgd2l0aCBhIGZvcm1hdCBzdHJpbmdcbiAqIEB0eXBlIHRpbWV6b25lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRldGltZUZvcm1hdHRlcihcbiAgdGltZXpvbmU/OiBzdHJpbmcgfCBudWxsXG4pOiAoZm9ybWF0Pzogc3RyaW5nKSA9PiAodHM6IG51bWJlcikgPT4gc3RyaW5nIHtcbiAgcmV0dXJuIHRpbWV6b25lXG4gICAgPyBmb3JtYXQgPT4gdHMgPT4gbW9tZW50LnV0Yyh0cykudHoodGltZXpvbmUpLmZvcm1hdChmb3JtYXQpXG4gICAgOiAvLyByZXR1cm4gZW1wdHkgc3RyaW5nIGluc3RlYWQgb2YgJ0ludmFsaWQgZGF0ZScgaWYgdHMgaXMgdW5kZWZpbmVkL251bGxcbiAgICAgIGZvcm1hdCA9PiB0cyA9PiB0cyA/IG1vbWVudC51dGModHMpLmZvcm1hdChmb3JtYXQpIDogJyc7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxLQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxTQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxlQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFFQSxJQUFBTSxVQUFBLEdBQUFOLE9BQUE7QUFPQSxJQUFBTyxZQUFBLEdBQUFQLE9BQUE7QUFHQSxJQUFBUSxLQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxNQUFBLEdBQUFULE9BQUE7QUFBc0MsSUFBQVUscUJBQUEsRUFyQnRDO0FBQ0E7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQWIsd0JBQUFhLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssUUFBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFB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
|
|
535
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9hc3NlcnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2QzRm9ybWF0IiwiX21vbWVudFRpbWV6b25lIiwiX2Fycm93IiwiX2NvbnN0YW50cyIsIl9jb21tb25VdGlscyIsIl9wbG90IiwiX3V0aWxzIiwiX0ZJRUxEX0RJU1BMQVlfRk9STUFUIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mMyIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIk1BWF9MQVRJVFVERSIsImV4cG9ydHMiLCJNSU5fTEFUSVRVREUiLCJNQVhfTE9OR0lUVURFIiwiTUlOX0xPTkdJVFVERSIsInZhbGlkYXRlTGF0aXR1ZGUiLCJsYXRpdHVkZSIsInZhbGlkYXRlQ29vcmRpbmF0ZSIsInZhbGlkYXRlTG9uZ2l0dWRlIiwibG9uZ2l0dWRlIiwidmFsdWUiLCJtaW5WYWx1ZSIsIm1heFZhbHVlIiwidW5pcXVlIiwidmFsdWVzIiwicmVzdWx0cyIsInVuaXF1ZVNldCIsIlNldCIsImZvckVhY2giLCJ2Iiwibm90TnVsbG9yVW5kZWZpbmVkIiwicHVzaCIsImdldExhdExuZ0JvdW5kcyIsInBvaW50cyIsImlkeCIsImxpbWl0IiwibGF0cyIsIm1hcCIsImQiLCJOdW1iZXIiLCJBcnJheSIsImlzQXJyYXkiLCJmaWx0ZXIiLCJpc0Zpbml0ZSIsInNvcnQiLCJudW1iZXJTb3J0IiwibGVuZ3RoIiwiTWF0aCIsIm1heCIsIm1pbiIsImNsYW1wIiwiX3JlZiIsIl9yZWYyIiwiX3NsaWNlZFRvQXJyYXkyIiwidmFsIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiZ2V0U2FtcGxlRGF0YSIsImRhdGEiLCJzYW1wbGVTaXplIiwiZ2V0VmFsdWUiLCJzYW1wbGVTdGVwIiwiZmxvb3IiLCJvdXRwdXQiLCJ0aW1lVG9Vbml4TWlsbGkiLCJmb3JtYXQiLCJtb21lbnQiLCJ1dGMiLCJ2YWx1ZU9mIiwiRGF0ZSIsImlzTnVtYmVyIiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsImIiLCJnZXRTb3J0aW5nRnVuY3Rpb24iLCJmaWVsZFR5cGUiLCJBTExfRklFTERfVFlQRVMiLCJyZWFsIiwiaW50ZWdlciIsInRpbWVzdGFtcCIsInByZWNpc2VSb3VuZCIsIm51bSIsImRlY2ltYWxzIiwicG93Iiwicm91bmQiLCJzaWduIiwidG9GaXhlZCIsInJvdW5kVG9Gb3VyIiwiY29uY2F0IiwiZ2V0Um91bmRpbmdEZWNpbWFsRnJvbVN0ZXAiLCJzdGVwIiwiaXNOYU4iLCJhc3NlcnQiLCJzdGVwU3RyIiwidG9TdHJpbmciLCJzcGxpdEV4cG9uZW50aWFsIiwic3BsaXQiLCJjb2VmZlplcm8iLCJjb2VmZkRlY2ltYWwiLCJwYXJzZUludCIsInNwbGl0WmVybyIsIm5vcm1hbGl6ZVNsaWRlclZhbHVlIiwibWFya3MiLCJzbmFwVG9NYXJrcyIsInJvdW5kVmFsVG9TdGVwIiwiZGVjaW1hbCIsInN0ZXBzIiwicmVtYWluIiwiY2xvc2VzdCIsInJvdW5kZWQiLCJkZWZhdWx0Rm9ybWF0dGVyIiwiU3RyaW5nIiwiZmxvYXRGb3JtYXR0ZXIiLCJ1aW50OEFycmF5VG9IZXgiLCJmcm9tIiwiYnl0ZSIsInBhZFN0YXJ0Iiwiam9pbiIsIkZJRUxEX0RJU1BMQVlfRk9STUFUIiwiX2RlZmluZVByb3BlcnR5MiIsInN0cmluZyIsImRhdGUiLCJnZW9qc29uIiwiaXNQbGFpbk9iamVjdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJnZW9hcnJvdyIsImZpZWxkIiwiVmVjdG9yIiwiX2ZpZWxkJG1ldGFkYXRhIiwiZW5jb2RpbmciLCJtZXRhZGF0YSIsImdlb21ldHJ5IiwicGFyc2VHZW9tZXRyeUZyb21BcnJvdyIsImVycm9yIiwiVWludDhBcnJheSIsIm9iamVjdCIsImFycmF5IiwiaDMiLCJwYXJzZUZpZWxkVmFsdWUiLCJ0eXBlIiwiZ2V0Rm9ybWF0dGVyIiwidG9vbHRpcEZvcm1hdCIsIlRPT0xUSVBfRk9STUFUUyIsImZpbmQiLCJmIiwiVE9PTFRJUF9LRVkiLCJhcHBseURlZmF1bHRGb3JtYXQiLCJhcHBseUN1c3RvbUZvcm1hdCIsImdldENvbHVtbkZvcm1hdHRlciIsImRpc3BsYXlGb3JtYXQiLCJfdHlwZW9mMiIsImFwcGx5VmFsdWVNYXAiLCJUT09MVElQX0ZPUk1BVF9UWVBFUyIsIkRFQ0lNQUwiLCJkM0Zvcm1hdCIsIkRBVEUiLCJEQVRFX1RJTUUiLCJkYXRldGltZUZvcm1hdHRlciIsIlBFUkNFTlRBR0UiLCJERUNJTUFMX0RFQ0lNQUxfRklYRURfMiIsIkJPT0xFQU4iLCJnZXRCb29sZWFuRm9ybWF0dGVyIiwiZm9ybWF0TGFyZ2VOdW1iZXIiLCJmb3JtYXROdW1iZXIiLCJ0cmFuc2Zvcm1hdGlvbiIsIlkiLCJaIiwiRSIsIlAiLCJUIiwiRyIsIk0iLCJrIiwiaCIsImRhIiwiYyIsIm0iLCLOvCIsInAiLCJ6IiwieSIsInJldmVyc2VGb3JtYXROdW1iZXIiLCJzdHIiLCJyZXR1cm5WYWx1ZSIsInN0ck51bSIsInRyaW0iLCJyZXBsYWNlIiwiZW50cmllcyIsImluY2x1ZGVzIiwicGFyc2VGbG9hdCIsInRpbWV6b25lIiwidHMiLCJ0eiJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQge2Zvcm1hdCBhcyBkM0Zvcm1hdH0gZnJvbSAnZDMtZm9ybWF0JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcblxuaW1wb3J0IHtwYXJzZUdlb21ldHJ5RnJvbUFycm93fSBmcm9tICdAbG9hZGVycy5nbC9hcnJvdyc7XG5cbmltcG9ydCB7XG4gIEFMTF9GSUVMRF9UWVBFUyxcbiAgVE9PTFRJUF9GT1JNQVRTLFxuICBUT09MVElQX0ZPUk1BVF9UWVBFUyxcbiAgVE9PTFRJUF9LRVksXG4gIFRvb2x0aXBGb3JtYXRcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtub3ROdWxsb3JVbmRlZmluZWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7RmllbGQsIE1pbGxpc2Vjb25kLCBQcm90b0RhdGFzZXRGaWVsZH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7c25hcFRvTWFya3N9IGZyb20gJy4vcGxvdCc7XG5pbXBvcnQge2lzUGxhaW5PYmplY3R9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBGaWVsZEZvcm1hdHRlciA9ICh2YWx1ZTogYW55LCBmaWVsZD86IFByb3RvRGF0YXNldEZpZWxkKSA9PiBzdHJpbmc7XG5cbi8vIFdlIG5lZWQgdGhyZWF0IGxhdGl0dWRlIGRpZmZlcmVudGx5IG90aGVyd2lzZSBtZXJjYXRvciBwcm9qZWN0IHZpZXcgdGhyb3dzXG4vLyBhIHByb2plY3Rpb24gbWF0cml4IGVycm9yXG4vLyBVbmNhdWdodCBFcnJvcjogUGl4ZWwgcHJvamVjdCBtYXRyaXggbm90IGludmVydGlibGVcbi8vIGF0IFdlYk1lcmNhdG9yVmlld3BvcnQxNi5WaWV3cG9ydDYgKHZpZXdwb3J0LmpzOjgxOjEzKVxuZXhwb3J0IGNvbnN0IE1BWF9MQVRJVFVERSA9IDg5Ljk7XG5leHBvcnQgY29uc3QgTUlOX0xBVElUVURFID0gLTg5Ljk7XG5leHBvcnQgY29uc3QgTUFYX0xPTkdJVFVERSA9IDE4MDtcbmV4cG9ydCBjb25zdCBNSU5fTE9OR0lUVURFID0gLTE4MDtcblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBsYXRpdHVkZSB2YWx1ZS5cbiAqIEVuc3VyZXMgdGhhdCB0aGUgbGF0aXR1ZGUgaXMgd2l0aGluIHRoZSBkZWZpbmVkIG1pbmltdW0gYW5kIG1heGltdW0gbGF0aXR1ZGUgYm91bmRzLlxuICogSWYgdGhlIHZhbHVlIGlzIG91dCBvZiBib3VuZHMsIGl0IHJldHVybnMgdGhlIG5lYXJlc3QgYm91bmQgdmFsdWUuXG4gKiBAcGFyYW0gbGF0aXR1ZGUgLSBUaGUgbGF0aXR1ZGUgdmFsdWUgdG8gdmFsaWRhdGUuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIGxhdGl0dWRlIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMYXRpdHVkZShsYXRpdHVkZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgcmV0dXJuIHZhbGlkYXRlQ29vcmRpbmF0ZShsYXRpdHVkZSA/PyAwLCBNSU5fTEFUSVRVREUsIE1BWF9MQVRJVFVERSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgbG9uZ2l0dWRlIHZhbHVlLlxuICogRW5zdXJlcyB0aGF0IHRoZSBsb25naXR1ZGUgaXMgd2l0aGluIHRoZSBkZWZpbmVkIG1pbmltdW0gYW5kIG1heGltdW0gbG9uZ2l0dWRlIGJvdW5kcy5cbiAqIElmIHRoZSB2YWx1ZSBpcyBvdXQgb2YgYm91bmRzLCBpdCByZXR1cm5zIHRoZSBuZWFyZXN0IGJvdW5kIHZhbHVlLlxuICogQHBhcmFtIGxvbmdpdHVkZSAtIFRoZSBsb25naXR1ZGUgdmFsdWUgdG8gdmFsaWRhdGUuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIGxvbmdpdHVkZSB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTG9uZ2l0dWRlKGxvbmdpdHVkZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgcmV0dXJuIHZhbGlkYXRlQ29vcmRpbmF0ZShsb25naXR1ZGUgPz8gMCwgTUlOX0xPTkdJVFVERSwgTUFYX0xPTkdJVFVERSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgY29vcmRpbmF0ZSB2YWx1ZS5cbiAqIEVuc3VyZXMgdGhhdCB0aGUgdmFsdWUgaXMgd2l0aGluIHRoZSBzcGVjaWZpZWQgbWluaW11bSBhbmQgbWF4aW11bSBib3VuZHMuXG4gKiBJZiB0aGUgdmFsdWUgaXMgb3V0IG9mIGJvdW5kcywgaXQgcmV0dXJucyB0aGUgbmVhcmVzdCBib3VuZCB2YWx1ZS5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBjb29yZGluYXRlIHZhbHVlIHRvIHZhbGlkYXRlLlxuICogQHBhcmFtIG1pblZhbHVlIC0gVGhlIG1pbmltdW0gYm91bmQgZm9yIHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSBtYXhWYWx1ZSAtIFRoZSBtYXhpbXVtIGJvdW5kIGZvciB0aGUgdmFsdWUuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIGNvb3JkaW5hdGUgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNvb3JkaW5hdGUodmFsdWU6IG51bWJlciwgbWluVmFsdWU6IG51bWJlciwgbWF4VmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gIGlmICh2YWx1ZSA8PSBtaW5WYWx1ZSkge1xuICAgIHJldHVybiBtaW5WYWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgPj0gbWF4VmFsdWUpIHtcbiAgICByZXR1cm4gbWF4VmFsdWU7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKlxuICogc2ltcGxlIGdldHRpbmcgdW5pcXVlIHZhbHVlcyBvZiBhbiBhcnJheVxuICogTm90ZTogZmlsdGVycyBvdXQgbnVsbCBhbmQgdW5kZWZpbmVkIHZhbHVlc1xuICpcbiAqIEBwYXJhbSB2YWx1ZXNcbiAqIEByZXR1cm5zIHVuaXF1ZSB2YWx1ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuaXF1ZTxUPih2YWx1ZXM6IFRbXSkge1xuICBjb25zdCByZXN1bHRzOiBUW10gPSBbXTtcbiAgY29uc3QgdW5pcXVlU2V0ID0gbmV3IFNldCh2YWx1ZXMpO1xuICB1bmlxdWVTZXQuZm9yRWFjaCh2ID0+IHtcbiAgICBpZiAobm90TnVsbG9yVW5kZWZpbmVkKHYpKSB7XG4gICAgICByZXN1bHRzLnB1c2godik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXRMbmdCb3VuZHMoXG4gIHBvaW50czogbnVtYmVyW11bXSxcbiAgaWR4OiBudW1iZXIsXG4gIGxpbWl0OiBbbnVtYmVyLCBudW1iZXJdXG4pOiBbbnVtYmVyLCBudW1iZXJdIHwgbnVsbCB7XG4gIGNvbnN0IGxhdHMgPSBwb2ludHNcbiAgICAubWFwKGQgPT4gTnVtYmVyKEFycmF5LmlzQXJyYXkoZCkpICYmIGRbaWR4XSlcbiAgICAuZmlsdGVyKE51bWJlci5pc0Zpbml0ZSlcbiAgICAuc29ydChudW1iZXJTb3J0KTtcblxuICBpZiAoIWxhdHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBjbGFtcCB0byBsaW1pdFxuICByZXR1cm4gW01hdGgubWF4KGxhdHNbMF0sIGxpbWl0WzBdKSwgTWF0aC5taW4obGF0c1tsYXRzLmxlbmd0aCAtIDFdLCBsaW1pdFsxXSldO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xhbXAoW21pbiwgbWF4XTogW251bWJlciwgbnVtYmVyXSwgdmFsID0gMCk6IG51bWJlciB7XG4gIHJldHVybiB2YWwgPD0gbWluID8gbWluIDogdmFsID49IG1heCA/IG1heCA6IHZhbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNhbXBsZURhdGEoZGF0YSwgc2FtcGxlU2l6ZSA9IDUwMCwgZ2V0VmFsdWUgPSBkID0+IGQpIHtcbiAgY29uc3Qgc2FtcGxlU3RlcCA9IE1hdGgubWF4KE1hdGguZmxvb3IoZGF0YS5sZW5ndGggLyBzYW1wbGVTaXplKSwgMSk7XG4gIGNvbnN0IG91dHB1dDogYW55W10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSArPSBzYW1wbGVTdGVwKSB7XG4gICAgb3V0cHV0LnB1c2goZ2V0VmFsdWUoZGF0YVtpXSkpO1xuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGRpZmZlcmVudCB0aW1lIGZvcm1hdCB0byB1bml4IG1pbGxpc2Vjb25kc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdGltZVRvVW5peE1pbGxpKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IE1pbGxpc2Vjb25kIHwgbnVsbCB7XG4gIGlmIChub3ROdWxsb3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBtb21lbnQudXRjKHZhbHVlLCBmb3JtYXQpLnZhbHVlT2YoKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBmb3JtYXQgPT09ICd4JyA/IHZhbHVlICogMTAwMCA6IHZhbHVlO1xuICAgIH1cbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICByZXR1cm4gdmFsdWUudmFsdWVPZigpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGQgaXMgYSBudW1iZXIsIHRoaXMgZmlsdGVyZWQgb3V0IE5hTiBhcyB3ZWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlcihkOiB1bmtub3duKTogZCBpcyBudW1iZXIge1xuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKGQpO1xufVxuXG4vKipcbiAqIHdoZXRoZXIgb2JqZWN0IGhhcyBwcm9wZXJ0eVxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHllcyBvciBub1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzT3duUHJvcGVydHk8WCBleHRlbmRzIG9iamVjdCwgWSBleHRlbmRzIFByb3BlcnR5S2V5PihcbiAgb2JqOiBYLFxuICBwcm9wOiBZXG4pOiBvYmogaXMgWCAmIFJlY29yZDxZLCB1bmtub3duPiB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG51bWJlclNvcnQoYTogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gYSAtIGI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTb3J0aW5nRnVuY3Rpb24oZmllbGRUeXBlOiBzdHJpbmcpOiB0eXBlb2YgbnVtYmVyU29ydCB8IHVuZGVmaW5lZCB7XG4gIHN3aXRjaCAoZmllbGRUeXBlKSB7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMucmVhbDpcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcDpcbiAgICAgIHJldHVybiBudW1iZXJTb3J0O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogcm91bmQgbnVtYmVyIHdpdGggZXhhY3QgbnVtYmVyIG9mIGRlY2ltYWxzXG4gKiByZXR1cm4gYXMgYSBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWNpc2VSb3VuZChudW06IG51bWJlciwgZGVjaW1hbHM6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IHQgPSBNYXRoLnBvdygxMCwgZGVjaW1hbHMpO1xuICByZXR1cm4gKFxuICAgIE1hdGgucm91bmQoXG4gICAgICBudW0gKiB0ICsgKGRlY2ltYWxzID4gMCA/IDEgOiAwKSAqIChNYXRoLnNpZ24obnVtKSAqICgxMCAvIE1hdGgucG93KDEwMCwgZGVjaW1hbHMpKSlcbiAgICApIC8gdFxuICApLnRvRml4ZWQoZGVjaW1hbHMpO1xufVxuXG4vKipcbiAqIHJvdW5kIGEgZ2l2aW5nIG51bWJlciBhdCBtb3N0IDQgZGVjaW1hbCBwbGFjZXNcbiAqIGUuZy4gMTAgLT4gMTAsIDEuMTIzNDUgLT4gMS4yMzQ1LCAyLjAgLT4gMlxuICovXG5leHBvcnQgZnVuY3Rpb24gcm91bmRUb0ZvdXIobnVtOiBudW1iZXIpOiBudW1iZXIge1xuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIHJldHVybiBOdW1iZXIoYCR7TWF0aC5yb3VuZChgJHtudW19ZSs0YCl9ZS00YCk7XG59XG4vKipcbiAqIGdldCBudW1iZXIgb2YgZGVjaW1hbHMgdG8gcm91bmQgdG8gZm9yIHNsaWRlciBmcm9tIHN0ZXBcbiAqIEBwYXJhbSBzdGVwXG4gKiBAcmV0dXJucy0gbnVtYmVyIG9mIGRlY2ltYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdW5kaW5nRGVjaW1hbEZyb21TdGVwKHN0ZXA6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChpc05hTihzdGVwKSkge1xuICAgIGFzc2VydCgnc3RlcCBpcyBub3QgYSBudW1iZXInKTtcbiAgICBhc3NlcnQoc3RlcCk7XG4gIH1cblxuICBjb25zdCBzdGVwU3RyID0gc3RlcC50b1N0cmluZygpO1xuXG4gIC8vIGluIGNhc2UgdGhlIHN0ZXAgaXMgYSB2ZXJ5IHNtYWxsIG51bWJlciBlLmcuIDFlLTcsIHJldHVybiBkZWNpbWFsIGUuZy4gNyBkaXJlY3RseVxuICBjb25zdCBzcGxpdEV4cG9uZW50aWFsID0gc3RlcFN0ci5zcGxpdCgnZS0nKTtcbiAgaWYgKHNwbGl0RXhwb25lbnRpYWwubGVuZ3RoID09PSAyKSB7XG4gICAgY29uc3QgY29lZmZaZXJvID0gc3BsaXRFeHBvbmVudGlhbFswXS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGNvZWZmRGVjaW1hbCA9IGNvZWZmWmVyby5sZW5ndGggPT09IDEgPyAwIDogY29lZmZaZXJvWzFdLmxlbmd0aDtcbiAgICByZXR1cm4gcGFyc2VJbnQoc3BsaXRFeHBvbmVudGlhbFsxXSwgMTApICsgY29lZmZEZWNpbWFsO1xuICB9XG5cbiAgY29uc3Qgc3BsaXRaZXJvID0gc3RlcFN0ci5zcGxpdCgnLicpO1xuICBpZiAoc3BsaXRaZXJvLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIHJldHVybiBzcGxpdFplcm9bMV0ubGVuZ3RoO1xufVxuXG4vKipcbiAqIElmIG1hcmtzIGlzIHByb3ZpZGVkLCBzbmFwIHRvIG1hcmtzLCBpZiBub3Qgbm9ybWFsaXplIHRvIHN0ZXBcbiAqIEBwYXJhbSB2YWxcbiAqIEBwYXJhbSBtaW5WYWx1ZVxuICogQHBhcmFtIHN0ZXBcbiAqIEBwYXJhbSBtYXJrc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplU2xpZGVyVmFsdWUoXG4gIHZhbDogbnVtYmVyLFxuICBtaW5WYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBzdGVwOiBudW1iZXIsXG4gIG1hcmtzPzogbnVtYmVyW10gfCBudWxsXG4pOiBudW1iZXIge1xuICBpZiAobWFya3MgJiYgbWFya3MubGVuZ3RoKSB7XG4gICAgLy8gVXNlIGluIHNsaWRlciwgZ2l2ZW4gYSBudW1iZXIgYW5kIGFuIGFycmF5IG9mIG51bWJlcnMsIHJldHVybiB0aGUgbmVhcnMgbnVtYmVyIGZyb20gdGhlIGFycmF5XG4gICAgcmV0dXJuIHNuYXBUb01hcmtzKHZhbCwgbWFya3MpO1xuICB9XG5cbiAgcmV0dXJuIHJvdW5kVmFsVG9TdGVwKG1pblZhbHVlLCBzdGVwLCB2YWwpO1xufVxuXG4vKipcbiAqIHJvdW5kIHRoZSB2YWx1ZSB0byBzdGVwIGZvciB0aGUgc2xpZGVyXG4gKiBAcGFyYW0gbWluVmFsdWVcbiAqIEBwYXJhbSBzdGVwXG4gKiBAcGFyYW0gdmFsXG4gKiBAcmV0dXJucyAtIHJvdW5kZWQgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb3VuZFZhbFRvU3RlcChtaW5WYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkLCBzdGVwOiBudW1iZXIsIHZhbDogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKCFpc051bWJlcihzdGVwKSB8fCAhaXNOdW1iZXIobWluVmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIGNvbnN0IGRlY2ltYWwgPSBnZXRSb3VuZGluZ0RlY2ltYWxGcm9tU3RlcChzdGVwKTtcbiAgY29uc3Qgc3RlcHMgPSBNYXRoLmZsb29yKCh2YWwgLSBtaW5WYWx1ZSkgLyBzdGVwKTtcbiAgbGV0IHJlbWFpbiA9IHZhbCAtIChzdGVwcyAqIHN0ZXAgKyBtaW5WYWx1ZSk7XG5cbiAgLy8gaGFzIHRvIHJvdW5kIGJlY2F1c2UgamF2YXNjcmlwdCB0dXJucyAwLjEgaW50byAwLjk5OTk5OTk5OTk5OTk5ODdcbiAgcmVtYWluID0gTnVtYmVyKHByZWNpc2VSb3VuZChyZW1haW4sIDgpKTtcblxuICBsZXQgY2xvc2VzdDogbnVtYmVyO1xuICBpZiAocmVtYWluID09PSAwKSB7XG4gICAgY2xvc2VzdCA9IHZhbDtcbiAgfSBlbHNlIGlmIChyZW1haW4gPCBzdGVwIC8gMikge1xuICAgIGNsb3Nlc3QgPSBzdGVwcyAqIHN0ZXAgKyBtaW5WYWx1ZTtcbiAgfSBlbHNlIHtcbiAgICBjbG9zZXN0ID0gKHN0ZXBzICsgMSkgKiBzdGVwICsgbWluVmFsdWU7XG4gIH1cblxuICAvLyBwcmVjaXNlIHJvdW5kIHJldHVybiBhIHN0cmluZyByb3VuZGVkIHRvIHRoZSBkZWZpbmVkIGRlY2ltYWxcbiAgY29uc3Qgcm91bmRlZCA9IHByZWNpc2VSb3VuZChjbG9zZXN0LCBkZWNpbWFsKTtcblxuICByZXR1cm4gTnVtYmVyKHJvdW5kZWQpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgdmFsdWUgZm9ybWF0IGJhc2VkIG9uIGZpZWxkIGFuZCBmb3JtYXQgb3B0aW9uc1xuICogVXNlZCBpbiByZW5kZXIgdG9vbHRpcCB2YWx1ZVxuICovXG5leHBvcnQgY29uc3QgZGVmYXVsdEZvcm1hdHRlcjogRmllbGRGb3JtYXR0ZXIgPSB2ID0+IChub3ROdWxsb3JVbmRlZmluZWQodikgPyBTdHJpbmcodikgOiAnJyk7XG5cbmV4cG9ydCBjb25zdCBmbG9hdEZvcm1hdHRlciA9IHYgPT4gKGlzTnVtYmVyKHYpID8gU3RyaW5nKHJvdW5kVG9Gb3VyKHYpKSA6ICcnKTtcblxuLyoqXG4gKiBUcmFuc2Zvcm1zIGEgV0tCIGluIFVpbnQ4QXJyYXkgZm9ybSBpbnRvIGEgaGV4IFdLQiBzdHJpbmcuXG4gKiBAcGFyYW0gdWludDhBcnJheSBXS0IgaW4gVWludDhBcnJheSBmb3JtLlxuICogQHJldHVybnMgaGV4IFdLQiBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1aW50OEFycmF5VG9IZXgoZGF0YTogVWludDhBcnJheSk6IHN0cmluZyB7XG4gIHJldHVybiBBcnJheS5mcm9tKGRhdGEpXG4gICAgLm1hcChieXRlID0+IChieXRlIGFzIGFueSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJykpXG4gICAgLmpvaW4oJycpO1xufVxuXG5leHBvcnQgY29uc3QgRklFTERfRElTUExBWV9GT1JNQVQ6IHtcbiAgW2tleTogc3RyaW5nXTogRmllbGRGb3JtYXR0ZXI7XG59ID0ge1xuICBbQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ106IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMudGltZXN0YW1wXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5yZWFsXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5ib29sZWFuXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5kYXRlXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5nZW9qc29uXTogZCA9PlxuICAgIHR5cGVvZiBkID09PSAnc3RyaW5nJ1xuICAgICAgPyBkXG4gICAgICA6IGlzUGxhaW5PYmplY3QoZClcbiAgICAgID8gSlNPTi5zdHJpbmdpZnkoZClcbiAgICAgIDogQXJyYXkuaXNBcnJheShkKVxuICAgICAgPyBgWyR7U3RyaW5nKGQpfV1gXG4gICAgICA6ICcnLFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2Fycm93XTogKGRhdGEsIGZpZWxkKSA9PiB7XG4gICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBhcnJvdy5WZWN0b3IpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGVuY29kaW5nID0gZmllbGQ/Lm1ldGFkYXRhPy5nZXQoJ0FSUk9XOmV4dGVuc2lvbjpuYW1lJyk7XG4gICAgICAgIGlmIChlbmNvZGluZykge1xuICAgICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gcGFyc2VHZW9tZXRyeUZyb21BcnJvdyhkYXRhLCBlbmNvZGluZyk7XG4gICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGdlb21ldHJ5KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gaWdub3JlIGZvciBub3dcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICByZXR1cm4gdWludDhBcnJheVRvSGV4KGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5vYmplY3RdOiAodmFsdWU6IGFueSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5hcnJheV06IGQgPT4gSlNPTi5zdHJpbmdpZnkoZCksXG4gIFtBTExfRklFTERfVFlQRVMuaDNdOiBkZWZhdWx0Rm9ybWF0dGVyXG59O1xuXG4vKipcbiAqIFBhcnNlIGZpZWxkIHZhbHVlIGFuZCB0eXBlIGFuZCByZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlRmllbGRWYWx1ZSA9ICh2YWx1ZTogYW55LCB0eXBlOiBzdHJpbmcsIGZpZWxkPzogRmllbGQpOiBzdHJpbmcgPT4ge1xuICBpZiAoIW5vdE51bGxvclVuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgLy8gQmlnSW50IHZhbHVlcyBjYW5ub3QgYmUgc2VyaWFsaXplZCB3aXRoIEpTT04uc3RyaW5naWZ5KCkgZGlyZWN0bHlcbiAgLy8gV2UgbmVlZCB0byBleHBsaWNpdGx5IGNvbnZlcnQgdGhlbSB0byBzdHJpbmdzIHVzaW5nIC50b1N0cmluZygpXG4gIC8vIFNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvQmlnSW50I3VzZV93aXRoaW5fanNvblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnYmlnaW50Jykge1xuICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICB9XG4gIHJldHVybiBGSUVMRF9ESVNQTEFZX0ZPUk1BVFt0eXBlXSA/IEZJRUxEX0RJU1BMQVlfRk9STUFUW3R5cGVdKHZhbHVlLCBmaWVsZCkgOiBTdHJpbmcodmFsdWUpO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHZhbHVlIGZvcm1hdCBiYXNlZCBvbiBmaWVsZCBhbmQgZm9ybWF0IG9wdGlvbnNcbiAqIFVzZWQgaW4gcmVuZGVyIHRvb2x0aXAgdmFsdWVcbiAqIEBwYXJhbSBmb3JtYXRcbiAqIEBwYXJhbSBmaWVsZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybWF0dGVyKFxuICBmb3JtYXQ/OiBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbCxcbiAgZmllbGQ/OiBGaWVsZFxuKTogRmllbGRGb3JtYXR0ZXIge1xuICBpZiAoIWZvcm1hdCkge1xuICAgIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xuICB9XG4gIGNvbnN0IHRvb2x0aXBGb3JtYXQgPSBPYmplY3QudmFsdWVzKFRPT0xUSVBfRk9STUFUUykuZmluZChmID0+IGZbVE9PTFRJUF9LRVldID09PSBmb3JtYXQpO1xuXG4gIGlmICh0b29sdGlwRm9ybWF0KSB7XG4gICAgcmV0dXJuIGFwcGx5RGVmYXVsdEZvcm1hdCh0b29sdGlwRm9ybWF0IGFzIFRvb2x0aXBGb3JtYXQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBmb3JtYXQgPT09ICdzdHJpbmcnICYmIGZpZWxkKSB7XG4gICAgcmV0dXJuIGFwcGx5Q3VzdG9tRm9ybWF0KGZvcm1hdCwgZmllbGQpO1xuICB9XG5cbiAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2x1bW5Gb3JtYXR0ZXIoXG4gIGZpZWxkOiBQaWNrPEZpZWxkLCAndHlwZSc+ICYgUGFydGlhbDxQaWNrPEZpZWxkLCAnZm9ybWF0JyB8ICdkaXNwbGF5Rm9ybWF0Jz4+XG4pOiBGaWVsZEZvcm1hdHRlciB7XG4gIGNvbnN0IHtmb3JtYXQsIGRpc3BsYXlGb3JtYXR9ID0gZmllbGQ7XG5cbiAgaWYgKCFmb3JtYXQgJiYgIWRpc3BsYXlGb3JtYXQpIHtcbiAgICByZXR1cm4gRklFTERfRElTUExBWV9GT1JNQVRbZmllbGQudHlwZV07XG4gIH1cbiAgY29uc3QgdG9vbHRpcEZvcm1hdCA9IE9iamVjdC52YWx1ZXMoVE9PTFRJUF9GT1JNQVRTKS5maW5kKGYgPT4gZltUT09MVElQX0tFWV0gPT09IGRpc3BsYXlGb3JtYXQpO1xuXG4gIGlmICh0b29sdGlwRm9ybWF0KSB7XG4gICAgcmV0dXJuIGFwcGx5RGVmYXVsdEZvcm1hdCh0b29sdGlwRm9ybWF0KTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGlzcGxheUZvcm1hdCA9PT0gJ3N0cmluZycgJiYgZmllbGQpIHtcbiAgICByZXR1cm4gYXBwbHlDdXN0b21Gb3JtYXQoZGlzcGxheUZvcm1hdCwgZmllbGQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBkaXNwbGF5Rm9ybWF0ID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBhcHBseVZhbHVlTWFwKGRpc3BsYXlGb3JtYXQpO1xuICB9XG5cbiAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVZhbHVlTWFwKGZvcm1hdCkge1xuICByZXR1cm4gdiA9PiBmb3JtYXRbdl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseURlZmF1bHRGb3JtYXQodG9vbHRpcEZvcm1hdDogVG9vbHRpcEZvcm1hdCk6ICh2OiBhbnkpID0+IHN0cmluZyB7XG4gIGlmICghdG9vbHRpcEZvcm1hdCB8fCAhdG9vbHRpcEZvcm1hdC5mb3JtYXQpIHtcbiAgICByZXR1cm4gZGVmYXVsdEZvcm1hdHRlcjtcbiAgfVxuXG4gIHN3aXRjaCAodG9vbHRpcEZvcm1hdC50eXBlKSB7XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5ERUNJTUFMOlxuICAgICAgcmV0dXJuIGQzRm9ybWF0KHRvb2x0aXBGb3JtYXQuZm9ybWF0KTtcbiAgICBjYXNlIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEU6XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFX1RJTUU6XG4gICAgICByZXR1cm4gZGF0ZXRpbWVGb3JtYXR0ZXIobnVsbCkodG9vbHRpcEZvcm1hdC5mb3JtYXQpO1xuICAgIGNhc2UgVE9PTFRJUF9GT1JNQVRfVFlQRVMuUEVSQ0VOVEFHRTpcbiAgICAgIHJldHVybiB2ID0+IGAke2QzRm9ybWF0KFRPT0xUSVBfRk9STUFUUy5ERUNJTUFMX0RFQ0lNQUxfRklYRURfMi5mb3JtYXQpKHYpfSVgO1xuICAgIGNhc2UgVE9PTFRJUF9GT1JNQVRfVFlQRVMuQk9PTEVBTjpcbiAgICAgIHJldHVybiBnZXRCb29sZWFuRm9ybWF0dGVyKHRvb2x0aXBGb3JtYXQuZm9ybWF0KTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJvb2xlYW5Gb3JtYXR0ZXIoZm9ybWF0OiBzdHJpbmcpOiBGaWVsZEZvcm1hdHRlciB7XG4gIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgY2FzZSAnMDEnOlxuICAgICAgcmV0dXJuICh2OiBib29sZWFuKSA9PiAodiA/ICcxJyA6ICcwJyk7XG4gICAgY2FzZSAneW4nOlxuICAgICAgcmV0dXJuICh2OiBib29sZWFuKSA9PiAodiA/ICd5ZXMnIDogJ25vJyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xuICB9XG59XG4vLyBBbGxvdyB1c2VyIHRvIHNwZWNpZnkgY3VzdG9tIHRvb2x0aXAgZm9ybWF0IHZpYSBjb25maWdcbmV4cG9ydCBmdW5jdGlvbiBhcHBseUN1c3RvbUZvcm1hdChmb3JtYXQsIGZpZWxkOiB7dHlwZT86IHN0cmluZ30pOiBGaWVsZEZvcm1hdHRlciB7XG4gIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICAgIHJldHVybiBkM0Zvcm1hdChmb3JtYXQpO1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmRhdGU6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wOlxuICAgICAgcmV0dXJuIGRhdGV0aW1lRm9ybWF0dGVyKG51bGwpKGZvcm1hdCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB2ID0+IHY7XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9ybWF0TGFyZ2VOdW1iZXIobikge1xuICAvLyBTSS1wcmVmaXggd2l0aCA0IHNpZ25pZmljYW50IGRpZ2l0c1xuICByZXR1cm4gZDNGb3JtYXQoJy40fnMnKShuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE51bWJlcihuOiBudW1iZXIsIHR5cGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgICAgaWYgKG4gPCAwKSB7XG4gICAgICAgIHJldHVybiBgLSR7Zm9ybWF0TnVtYmVyKC1uLCAnaW50ZWdlcicpfWA7XG4gICAgICB9XG4gICAgICBpZiAobiA8IDEwMDApIHtcbiAgICAgICAgcmV0dXJuIGAke01hdGgucm91bmQobil9YDtcbiAgICAgIH1cbiAgICAgIGlmIChuIDwgMTAgKiAxMDAwKSB7XG4gICAgICAgIHJldHVybiBkM0Zvcm1hdCgnLCcpKE1hdGgucm91bmQobikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm1hdExhcmdlTnVtYmVyKG4pO1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgICBpZiAobiA8IDApIHtcbiAgICAgICAgcmV0dXJuIGAtJHtmb3JtYXROdW1iZXIoLW4sICdudW1iZXInKX1gO1xuICAgICAgfVxuICAgICAgaWYgKG4gPCAxMDAwKSB7XG4gICAgICAgIHJldHVybiBkM0Zvcm1hdCgnLjR+cicpKG4pO1xuICAgICAgfVxuICAgICAgaWYgKG4gPCAxMCAqIDEwMDApIHtcbiAgICAgICAgcmV0dXJuIGQzRm9ybWF0KCcsLjJ+ZicpKG4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm1hdExhcmdlTnVtYmVyKG4pO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmb3JtYXROdW1iZXIobiwgJ3JlYWwnKTtcbiAgfVxufVxuXG5jb25zdCB0cmFuc2Zvcm1hdGlvbiA9IHtcbiAgWTogTWF0aC5wb3coMTAsIDI0KSxcbiAgWjogTWF0aC5wb3coMTAsIDIxKSxcbiAgRTogTWF0aC5wb3coMTAsIDE4KSxcbiAgUDogTWF0aC5wb3coMTAsIDE1KSxcbiAgVDogTWF0aC5wb3coMTAsIDEyKSxcbiAgRzogTWF0aC5wb3coMTAsIDkpLFxuICBNOiBNYXRoLnBvdygxMCwgNiksXG4gIGs6IE1hdGgucG93KDEwLCAzKSxcbiAgaDogTWF0aC5wb3coMTAsIDIpLFxuICBkYTogTWF0aC5wb3coMTAsIDEpLFxuICBkOiBNYXRoLnBvdygxMCwgLTEpLFxuICBjOiBNYXRoLnBvdygxMCwgLTIpLFxuICBtOiBNYXRoLnBvdygxMCwgLTMpLFxuICDOvDogTWF0aC5wb3coMTAsIC02KSxcbiAgbjogTWF0aC5wb3coMTAsIC05KSxcbiAgcDogTWF0aC5wb3coMTAsIC0xMiksXG4gIGY6IE1hdGgucG93KDEwLCAtMTUpLFxuICBhOiBNYXRoLnBvdygxMCwgLTE4KSxcbiAgejogTWF0aC5wb3coMTAsIC0yMSksXG4gIHk6IE1hdGgucG93KDEwLCAtMjQpXG59O1xuXG4vKipcbiAqIENvbnZlcnQgYSBmb3JtYXR0ZWQgbnVtYmVyIGZyb20gc3RyaW5nIGJhY2sgdG8gbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXZlcnNlRm9ybWF0TnVtYmVyKHN0cjogc3RyaW5nKTogbnVtYmVyIHtcbiAgbGV0IHJldHVyblZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgY29uc3Qgc3RyTnVtID0gc3RyLnRyaW0oKS5yZXBsYWNlKC8sL2csICcnKTtcbiAgT2JqZWN0LmVudHJpZXModHJhbnNmb3JtYXRpb24pLmZvckVhY2goZCA9PiB7XG4gICAgaWYgKHN0ck51bS5pbmNsdWRlcyhkWzBdKSkge1xuICAgICAgcmV0dXJuVmFsdWUgPSBwYXJzZUZsb2F0KHN0ck51bSkgKiBkWzFdO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSk7XG5cbiAgLy8gaWYgbm8gdHJhbnNmb3JtZXIgZm91bmQsIGNvbnZlcnQgdG8gbnViZXIgcmVnYXJkbGVzc1xuICByZXR1cm4gcmV0dXJuVmFsdWUgPT09IG51bGwgPyBOdW1iZXIoc3RyTnVtKSA6IHJldHVyblZhbHVlO1xufVxuXG4vKipcbiAqIEZvcm1hdCBlcG9jaCBtaWxsaXNlY29uZHMgd2l0aCBhIGZvcm1hdCBzdHJpbmdcbiAqIEB0eXBlIHRpbWV6b25lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRldGltZUZvcm1hdHRlcihcbiAgdGltZXpvbmU/OiBzdHJpbmcgfCBudWxsXG4pOiAoZm9ybWF0Pzogc3RyaW5nKSA9PiAodHM6IG51bWJlcikgPT4gc3RyaW5nIHtcbiAgcmV0dXJuIHRpbWV6b25lXG4gICAgPyBmb3JtYXQgPT4gdHMgPT4gbW9tZW50LnV0Yyh0cykudHoodGltZXpvbmUpLmZvcm1hdChmb3JtYXQpXG4gICAgOiAvLyByZXR1cm4gZW1wdHkgc3RyaW5nIGluc3RlYWQgb2YgJ0ludmFsaWQgZGF0ZScgaWYgdHMgaXMgdW5kZWZpbmVkL251bGxcbiAgICAgIGZvcm1hdCA9PiB0cyA9PiB0cyA/IG1vbWVudC51dGModHMpLmZvcm1hdChmb3JtYXQpIDogJyc7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxLQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxTQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxlQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFFQSxJQUFBTSxVQUFBLEdBQUFOLE9BQUE7QUFPQSxJQUFBTyxZQUFBLEdBQUFQLE9BQUE7QUFHQSxJQUFBUSxLQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxNQUFBLEdBQUFULE9BQUE7QUFBc0MsSUFBQVUscUJBQUEsRUFyQnRDO0FBQ0E7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQWIsd0JBQUFhLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxn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
|
package/dist/export-utils.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Blob } from 'global/window';
|
|
2
|
-
import { RESOLUTIONS, EXPORT_IMG_RATIOS
|
|
2
|
+
import { RESOLUTIONS, EXPORT_IMG_RATIOS } from '@kepler.gl/constants';
|
|
3
|
+
import { ExportImage } from '@kepler.gl/types';
|
|
3
4
|
export declare function isMSEdge(window: Window): boolean;
|
|
4
5
|
export declare function getScaleFromImageSize(imageW?: number, imageH?: number, mapW?: number, mapH?: number): number;
|
|
5
6
|
export declare function calculateExportImageSize({ mapW, mapH, ratio, resolution }: {
|
package/dist/export-utils.js
CHANGED
|
@@ -198,4 +198,4 @@ var exporters = {
|
|
|
198
198
|
exportHtml: exportHtml
|
|
199
199
|
};
|
|
200
200
|
var _default = exports["default"] = exporters;
|
|
201
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2luZG93IiwicmVxdWlyZSIsIl9nZXQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2NvbnN0YW50cyIsIl9jb21tb25VdGlscyIsIl9kb21Ub0ltYWdlIiwiX3V0aWxzIiwiX2V4cG9ydE1hcEh0bWwiLCJfYXBwbGljYXRpb25Db25maWciLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImRlZmF1bHRSZXNvbHV0aW9uIiwiT25lWFJlc29sdXRpb25PcHRpb24iLCJkZWZhdWx0UmF0aW8iLCJGb3VyQnlUaHJlZVJhdGlvT3B0aW9uIiwiaXNNU0VkZ2UiLCJ3aW5kb3ciLCJCb29sZWFuIiwibmF2aWdhdG9yIiwibXNTYXZlT3JPcGVuQmxvYiIsImdldFNjYWxlRnJvbUltYWdlU2l6ZSIsImltYWdlVyIsInVuZGVmaW5lZCIsImltYWdlSCIsIm1hcFciLCJtYXBIIiwic29tZSIsImQiLCJiYXNlIiwibWFwQmFzZSIsImNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSIsIl9yZWYiLCJyYXRpbyIsInJlc29sdXRpb24iLCJyYXRpb0l0ZW0iLCJFWFBPUlRfSU1HX1JBVElPX09QVElPTlMiLCJmaW5kIiwib3AiLCJpZCIsInJlc29sdXRpb25JdGVtIiwiRVhQT1JUX0lNR19SRVNPTFVUSU9OX09QVElPTlMiLCJfcmVzb2x1dGlvbkl0ZW0kZ2V0U2kiLCJnZXRTaXplIiwic2NhbGVkV2lkdGgiLCJ3aWR0aCIsInNjYWxlZEhlaWdodCIsImhlaWdodCIsIl9yYXRpb0l0ZW0kZ2V0U2l6ZSIsIl9yZWYyIiwiRVhQT1JUX0lNR19SQVRJT1MiLCJDVVNUT00iLCJzY2FsZSIsImNvbnZlcnRUb1BuZyIsInNvdXJjZUVsZW0iLCJvcHRpb25zIiwiZG9tdG9pbWFnZSIsInRvUG5nIiwiZGF0YVVSSXRvQmxvYiIsImRhdGFVUkkiLCJiaW5hcnkiLCJhdG9iIiwic3BsaXQiLCJtaW1lU3RyaW5nIiwiYWIiLCJBcnJheUJ1ZmZlciIsImlhIiwiVWludDhBcnJheSIsImkiLCJjaGFyQ29kZUF0IiwiQmxvYiIsInR5cGUiLCJkb3dubG9hZEZpbGUiLCJmaWxlQmxvYiIsImZpbGVOYW1lIiwidXJsIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwibGluayIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImV2dCIsIk1vdXNlRXZlbnQiLCJ2aWV3IiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJkaXNwYXRjaEV2ZW50IiwicmVtb3ZlQ2hpbGQiLCJyZXZva2VPYmplY3RVUkwiLCJleHBvcnRJbWFnZSIsInVpU3RhdGVFeHBvcnRJbWFnZSIsImZpbGVuYW1lIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJkZWZhdWx0SW1hZ2VOYW1lIiwiaW1hZ2VEYXRhVXJpIiwiZmlsZSIsImV4cG9ydFRvSnNvblN0cmluZyIsImRhdGEiLCJKU09OIiwic3RyaW5naWZ5IiwiVHlwZUVycm9yIiwibWVzc2FnZSIsImRlc2NyaXB0aW9uIiwiZ2V0TWFwSlNPTiIsInN0YXRlIiwiZGVmYXVsdEV4cG9ydEpzb25TZXR0aW5ncyIsImhhc0RhdGEiLCJzY2hlbWEiLCJ2aXNTdGF0ZSIsImdldENvbmZpZ1RvU2F2ZSIsIm1hcFRvU2F2ZSIsInNhdmUiLCJ0aXRsZSIsImdldCIsInNldCIsImNvbmNhdCIsImdlbmVyYXRlSGFzaElkIiwiZXhwb3J0SnNvbiIsIm1hcCIsImluZm8iLCJzb3VyY2UiLCJhcHBOYW1lIiwiZGVmYXVsdEpzb25OYW1lIiwiZXhwb3J0SHRtbCIsInVzZXJNYXBib3hUb2tlbiIsImV4cG9ydE1hcGJveEFjY2Vzc1Rva2VuIiwibW9kZSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiZXhwb3J0TWFwVG9IVE1MIiwiZGVmYXVsdEh0bWxOYW1lIiwiZXhwb3J0TWFwIiwidWlTdGF0ZSIsInRodW1ibmFpbCIsImV4cG9ydGVycyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9leHBvcnQtdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtCbG9iLCBVUkwsIGF0b2IsIFVpbnQ4QXJyYXksIEFycmF5QnVmZmVyLCBkb2N1bWVudH0gZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuXG5pbXBvcnQge1xuICBFWFBPUlRfSU1HX1JFU09MVVRJT05fT1BUSU9OUyxcbiAgRVhQT1JUX0lNR19SQVRJT19PUFRJT05TLFxuICBSRVNPTFVUSU9OUyxcbiAgRVhQT1JUX0lNR19SQVRJT1MsXG4gIEZvdXJCeVRocmVlUmF0aW9PcHRpb24sXG4gIE9uZVhSZXNvbHV0aW9uT3B0aW9uLFxuICBFeHBvcnRJbWFnZVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge2dlbmVyYXRlSGFzaElkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQgZG9tdG9pbWFnZSBmcm9tICcuL2RvbS10by1pbWFnZSc7XG5pbXBvcnQge3NldH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge2V4cG9ydE1hcFRvSFRNTH0gZnJvbSAnLi9leHBvcnQtbWFwLWh0bWwnO1xuaW1wb3J0IHtnZXRBcHBsaWNhdGlvbkNvbmZpZ30gZnJvbSAnLi9hcHBsaWNhdGlvbi1jb25maWcnO1xuXG5jb25zdCBkZWZhdWx0UmVzb2x1dGlvbiA9IE9uZVhSZXNvbHV0aW9uT3B0aW9uO1xuXG5jb25zdCBkZWZhdWx0UmF0aW8gPSBGb3VyQnlUaHJlZVJhdGlvT3B0aW9uO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNNU0VkZ2Uod2luZG93OiBXaW5kb3cpOiBib29sZWFuIHtcbiAgLy8gQHRzLWlnbm9yZSBtc1NhdmVPck9wZW5CbG9iIHdhcyBhIHByb3ByaWV0YXJ5IGFkZGl0aW9uIHRvIHRoZSBOYXZpZ2F0b3Igb2JqZWN0LCBhZGRlZCBieSBNaWNyb3NvZnQgZm9yIEludGVybmV0IEV4cGxvcmVyLlxuICByZXR1cm4gQm9vbGVhbih3aW5kb3cubmF2aWdhdG9yICYmIHdpbmRvdy5uYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2FsZUZyb21JbWFnZVNpemUoaW1hZ2VXID0gMCwgaW1hZ2VIID0gMCwgbWFwVyA9IDAsIG1hcEggPSAwKSB7XG4gIGlmIChbaW1hZ2VXLCBpbWFnZUgsIG1hcFcsIG1hcEhdLnNvbWUoZCA9PiBkIDw9IDApKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBjb25zdCBiYXNlID0gaW1hZ2VXIC8gaW1hZ2VIID4gMSA/IGltYWdlVyA6IGltYWdlSDtcbiAgY29uc3QgbWFwQmFzZSA9IGltYWdlVyAvIGltYWdlSCA+IDEgPyBtYXBXIDogbWFwSDtcbiAgcmV0dXJuIGJhc2UgLyBtYXBCYXNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlRXhwb3J0SW1hZ2VTaXplKHtcbiAgbWFwVyxcbiAgbWFwSCxcbiAgcmF0aW8sXG4gIHJlc29sdXRpb25cbn06IHtcbiAgbWFwVzogbnVtYmVyO1xuICBtYXBIOiBudW1iZXI7XG4gIHJhdGlvOiBrZXlvZiB0eXBlb2YgRVhQT1JUX0lNR19SQVRJT1M7XG4gIHJlc29sdXRpb246IGtleW9mIHR5cGVvZiBSRVNPTFVUSU9OUztcbn0pIHtcbiAgaWYgKG1hcFcgPD0gMCB8fCBtYXBIIDw9IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHJhdGlvSXRlbSA9IEVYUE9SVF9JTUdfUkFUSU9fT1BUSU9OUy5maW5kKG9wID0+IG9wLmlkID09PSByYXRpbykgfHwgZGVmYXVsdFJhdGlvO1xuXG4gIGNvbnN0IHJlc29sdXRpb25JdGVtID1cbiAgICBFWFBPUlRfSU1HX1JFU09MVVRJT05fT1BUSU9OUy5maW5kKG9wID0+IG9wLmlkID09PSByZXNvbHV0aW9uKSB8fCBkZWZhdWx0UmVzb2x1dGlvbjtcblxuICBjb25zdCB7d2lkdGg6IHNjYWxlZFdpZHRoLCBoZWlnaHQ6IHNjYWxlZEhlaWdodH0gPSByZXNvbHV0aW9uSXRlbS5nZXRTaXplKG1hcFcsIG1hcEgpO1xuXG4gIGNvbnN0IHt3aWR0aDogaW1hZ2VXLCBoZWlnaHQ6IGltYWdlSH0gPSByYXRpb0l0ZW0uZ2V0U2l6ZShzY2FsZWRXaWR0aCwgc2NhbGVkSGVpZ2h0KTtcblxuICBjb25zdCB7c2NhbGV9ID0gcmF0aW9JdGVtLmlkID09PSBFWFBPUlRfSU1HX1JBVElPUy5DVVNUT00gPyB7c2NhbGU6IHVuZGVmaW5lZH0gOiByZXNvbHV0aW9uSXRlbTtcblxuICByZXR1cm4ge1xuICAgIHNjYWxlLFxuICAgIGltYWdlVyxcbiAgICBpbWFnZUhcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb1BuZyhzb3VyY2VFbGVtOiBIVE1MRWxlbWVudCwgb3B0aW9ucykge1xuICByZXR1cm4gZG9tdG9pbWFnZS50b1BuZyhzb3VyY2VFbGVtLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGFVUkl0b0Jsb2IoZGF0YVVSSTogc3RyaW5nKTogQmxvYiB7XG4gIGNvbnN0IGJpbmFyeSA9IGF0b2IoZGF0YVVSSS5zcGxpdCgnLCcpWzFdKTtcblxuICAvLyBzZXBhcmF0ZSBvdXQgdGhlIG1pbWUgY29tcG9uZW50XG4gIGNvbnN0IG1pbWVTdHJpbmcgPSBkYXRhVVJJLnNwbGl0KCcsJylbMF0uc3BsaXQoJzonKVsxXS5zcGxpdCgnOycpWzBdO1xuXG4gIC8vIHdyaXRlIHRoZSBieXRlcyBvZiB0aGUgc3RyaW5nIHRvIGFuIEFycmF5QnVmZmVyXG4gIGNvbnN0IGFiID0gbmV3IEFycmF5QnVmZmVyKGJpbmFyeS5sZW5ndGgpO1xuXG4gIC8vIGNyZWF0ZSBhIHZpZXcgaW50byB0aGUgYnVmZmVyXG4gIGNvbnN0IGlhID0gbmV3IFVpbnQ4QXJyYXkoYWIpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYmluYXJ5Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWFbaV0gPSBiaW5hcnkuY2hhckNvZGVBdChpKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgQmxvYihbYWJdLCB7dHlwZTogbWltZVN0cmluZ30pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZG93bmxvYWRGaWxlKGZpbGVCbG9iOiBCbG9iLCBmaWxlTmFtZTogc3RyaW5nKSB7XG4gIGlmIChpc01TRWRnZSh3aW5kb3cpKSB7XG4gICAgKHdpbmRvdy5uYXZpZ2F0b3IgYXMgYW55KS5tc1NhdmVPck9wZW5CbG9iKGZpbGVCbG9iLCBmaWxlTmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlQmxvYik7XG5cbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgdXJsKTtcbiAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlTmFtZSk7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgIC8vIGluIHNvbWUgY2FzZXMgd2hlcmUgbWFwcyBhcmUgZW1iZWRkZWQsIGUuZy4gbmVlZCB0b1xuICAgIC8vIGNyZWF0ZSBhbmQgZGlzcGF0Y2ggYW4gZXZlbnQgc28gdGhhdCB0aGUgYnJvd3NlciBkb3dubG9hZHNcbiAgICAvLyB0aGUgZmlsZSBpbnN0ZWFkIG9mIG5hdmlnYXRpbmcgdG8gdGhlIHVybFxuICAgIGNvbnN0IGV2dCA9IG5ldyBNb3VzZUV2ZW50KCdjbGljaycsIHtcbiAgICAgIHZpZXc6IHdpbmRvdyxcbiAgICAgIGJ1YmJsZXM6IGZhbHNlLFxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIGxpbmsuZGlzcGF0Y2hFdmVudChldnQpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICB9XG59XG5cbi8qKlxuICogV2hldGhlciBjb2xvciBpcyByZ2JcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBvcnRJbWFnZShcbiAgdWlTdGF0ZUV4cG9ydEltYWdlOiBFeHBvcnRJbWFnZSxcbiAgZmlsZW5hbWUgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmRlZmF1bHRJbWFnZU5hbWVcbikge1xuICBjb25zdCB7aW1hZ2VEYXRhVXJpfSA9IHVpU3RhdGVFeHBvcnRJbWFnZTtcbiAgaWYgKGltYWdlRGF0YVVyaSkge1xuICAgIGNvbnN0IGZpbGUgPSBkYXRhVVJJdG9CbG9iKGltYWdlRGF0YVVyaSk7XG4gICAgZG93bmxvYWRGaWxlKGZpbGUsIGZpbGVuYW1lKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0VG9Kc29uU3RyaW5nKGRhdGEpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikgcmV0dXJuIGUubWVzc2FnZTtcbiAgICAvLyBOb24tU3RhbmRhcmQgRXJyb3IgT2JqZWN0IFByb3BlcnR5XG4gICAgcmV0dXJuIChlIGFzIGFueSkuZGVzY3JpcHRpb247XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcEpTT04oc3RhdGUsIG9wdGlvbnMgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmRlZmF1bHRFeHBvcnRKc29uU2V0dGluZ3MpIHtcbiAgY29uc3Qge2hhc0RhdGF9ID0gb3B0aW9ucztcbiAgY29uc3Qgc2NoZW1hID0gc3RhdGUudmlzU3RhdGUuc2NoZW1hO1xuXG4gIGlmICghaGFzRGF0YSkge1xuICAgIHJldHVybiBzY2hlbWEuZ2V0Q29uZmlnVG9TYXZlKHN0YXRlKTtcbiAgfVxuXG4gIGxldCBtYXBUb1NhdmUgPSBzY2hlbWEuc2F2ZShzdGF0ZSk7XG4gIC8vIGFkZCBmaWxlIG5hbWUgaWYgdGl0bGUgaXMgbm90IHByb3ZpZGVkXG4gIGNvbnN0IHRpdGxlID0gZ2V0KG1hcFRvU2F2ZSwgWydpbmZvJywgJ3RpdGxlJ10pO1xuICBpZiAoIXRpdGxlIHx8ICF0aXRsZS5sZW5ndGgpIHtcbiAgICBtYXBUb1NhdmUgPSBzZXQoWydpbmZvJywgJ3RpdGxlJ10sIGBrZXBsZXJnbF8ke2dlbmVyYXRlSGFzaElkKDYpfWAsIG1hcFRvU2F2ZSk7XG4gIH1cbiAgcmV0dXJuIG1hcFRvU2F2ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cG9ydEpzb24oc3RhdGUsIG9wdGlvbnM6IGFueSA9IHt9KSB7XG4gIGNvbnN0IG1hcCA9IGdldE1hcEpTT04oc3RhdGUsIG9wdGlvbnMpO1xuICBtYXAuaW5mby5zb3VyY2UgPSAna2VwbGVyLmdsJztcbiAgY29uc3QgZmlsZUJsb2IgPSBuZXcgQmxvYihbZXhwb3J0VG9Kc29uU3RyaW5nKG1hcCldLCB7dHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nfSk7XG4gIGNvbnN0IGZpbGVOYW1lID0gc3RhdGUuYXBwTmFtZSA/IGAke3N0YXRlLmFwcE5hbWV9Lmpzb25gIDogZ2V0QXBwbGljYXRpb25Db25maWcoKS5kZWZhdWx0SnNvbk5hbWU7XG4gIGRvd25sb2FkRmlsZShmaWxlQmxvYiwgZmlsZU5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0SHRtbChzdGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCB7dXNlck1hcGJveFRva2VuLCBleHBvcnRNYXBib3hBY2Nlc3NUb2tlbiwgbW9kZX0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IGRhdGEgPSB7XG4gICAgLi4uZ2V0TWFwSlNPTihzdGF0ZSksXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW46XG4gICAgICAodXNlck1hcGJveFRva2VuIHx8ICcnKSAhPT0gJycgPyB1c2VyTWFwYm94VG9rZW4gOiBleHBvcnRNYXBib3hBY2Nlc3NUb2tlbixcbiAgICBtb2RlXG4gIH07XG5cbiAgY29uc3QgZmlsZUJsb2IgPSBuZXcgQmxvYihbZXhwb3J0TWFwVG9IVE1MKGRhdGEpXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSk7XG4gIGRvd25sb2FkRmlsZShcbiAgICBmaWxlQmxvYixcbiAgICBzdGF0ZS5hcHBOYW1lID8gYCR7c3RhdGUuYXBwTmFtZX0uaHRtbGAgOiBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmRlZmF1bHRIdG1sTmFtZVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0TWFwKHN0YXRlLCBvcHRpb25zID0gZ2V0QXBwbGljYXRpb25Db25maWcoKS5kZWZhdWx0RXhwb3J0SnNvblNldHRpbmdzKSB7XG4gIGNvbnN0IHtpbWFnZURhdGFVcml9ID0gc3RhdGUudWlTdGF0ZS5leHBvcnRJbWFnZTtcbiAgY29uc3QgdGh1bWJuYWlsOiBCbG9iIHwgbnVsbCA9IGltYWdlRGF0YVVyaSA/IGRhdGFVUkl0b0Jsb2IoaW1hZ2VEYXRhVXJpKSA6IG51bGw7XG4gIGNvbnN0IG1hcFRvU2F2ZSA9IGdldE1hcEpTT04oc3RhdGUsIG9wdGlvbnMpO1xuXG4gIHJldHVybiB7XG4gICAgbWFwOiBtYXBUb1NhdmUsXG4gICAgdGh1bWJuYWlsXG4gIH07XG59XG5cbmNvbnN0IGV4cG9ydGVycyA9IHtcbiAgZXhwb3J0SW1hZ2UsXG4gIGV4cG9ydEpzb24sXG4gIGV4cG9ydEh0bWxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGV4cG9ydGVycztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJ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
|
|
201
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2luZG93IiwicmVxdWlyZSIsIl9nZXQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2NvbnN0YW50cyIsIl9jb21tb25VdGlscyIsIl9kb21Ub0ltYWdlIiwiX3V0aWxzIiwiX2V4cG9ydE1hcEh0bWwiLCJfYXBwbGljYXRpb25Db25maWciLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImRlZmF1bHRSZXNvbHV0aW9uIiwiT25lWFJlc29sdXRpb25PcHRpb24iLCJkZWZhdWx0UmF0aW8iLCJGb3VyQnlUaHJlZVJhdGlvT3B0aW9uIiwiaXNNU0VkZ2UiLCJ3aW5kb3ciLCJCb29sZWFuIiwibmF2aWdhdG9yIiwibXNTYXZlT3JPcGVuQmxvYiIsImdldFNjYWxlRnJvbUltYWdlU2l6ZSIsImltYWdlVyIsInVuZGVmaW5lZCIsImltYWdlSCIsIm1hcFciLCJtYXBIIiwic29tZSIsImQiLCJiYXNlIiwibWFwQmFzZSIsImNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSIsIl9yZWYiLCJyYXRpbyIsInJlc29sdXRpb24iLCJyYXRpb0l0ZW0iLCJFWFBPUlRfSU1HX1JBVElPX09QVElPTlMiLCJmaW5kIiwib3AiLCJpZCIsInJlc29sdXRpb25JdGVtIiwiRVhQT1JUX0lNR19SRVNPTFVUSU9OX09QVElPTlMiLCJfcmVzb2x1dGlvbkl0ZW0kZ2V0U2kiLCJnZXRTaXplIiwic2NhbGVkV2lkdGgiLCJ3aWR0aCIsInNjYWxlZEhlaWdodCIsImhlaWdodCIsIl9yYXRpb0l0ZW0kZ2V0U2l6ZSIsIl9yZWYyIiwiRVhQT1JUX0lNR19SQVRJT1MiLCJDVVNUT00iLCJzY2FsZSIsImNvbnZlcnRUb1BuZyIsInNvdXJjZUVsZW0iLCJvcHRpb25zIiwiZG9tdG9pbWFnZSIsInRvUG5nIiwiZGF0YVVSSXRvQmxvYiIsImRhdGFVUkkiLCJiaW5hcnkiLCJhdG9iIiwic3BsaXQiLCJtaW1lU3RyaW5nIiwiYWIiLCJBcnJheUJ1ZmZlciIsImlhIiwiVWludDhBcnJheSIsImkiLCJjaGFyQ29kZUF0IiwiQmxvYiIsInR5cGUiLCJkb3dubG9hZEZpbGUiLCJmaWxlQmxvYiIsImZpbGVOYW1lIiwidXJsIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwibGluayIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImV2dCIsIk1vdXNlRXZlbnQiLCJ2aWV3IiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJkaXNwYXRjaEV2ZW50IiwicmVtb3ZlQ2hpbGQiLCJyZXZva2VPYmplY3RVUkwiLCJleHBvcnRJbWFnZSIsInVpU3RhdGVFeHBvcnRJbWFnZSIsImZpbGVuYW1lIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJkZWZhdWx0SW1hZ2VOYW1lIiwiaW1hZ2VEYXRhVXJpIiwiZmlsZSIsImV4cG9ydFRvSnNvblN0cmluZyIsImRhdGEiLCJKU09OIiwic3RyaW5naWZ5IiwiVHlwZUVycm9yIiwibWVzc2FnZSIsImRlc2NyaXB0aW9uIiwiZ2V0TWFwSlNPTiIsInN0YXRlIiwiZGVmYXVsdEV4cG9ydEpzb25TZXR0aW5ncyIsImhhc0RhdGEiLCJzY2hlbWEiLCJ2aXNTdGF0ZSIsImdldENvbmZpZ1RvU2F2ZSIsIm1hcFRvU2F2ZSIsInNhdmUiLCJ0aXRsZSIsImdldCIsInNldCIsImNvbmNhdCIsImdlbmVyYXRlSGFzaElkIiwiZXhwb3J0SnNvbiIsIm1hcCIsImluZm8iLCJzb3VyY2UiLCJhcHBOYW1lIiwiZGVmYXVsdEpzb25OYW1lIiwiZXhwb3J0SHRtbCIsInVzZXJNYXBib3hUb2tlbiIsImV4cG9ydE1hcGJveEFjY2Vzc1Rva2VuIiwibW9kZSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiZXhwb3J0TWFwVG9IVE1MIiwiZGVmYXVsdEh0bWxOYW1lIiwiZXhwb3J0TWFwIiwidWlTdGF0ZSIsInRodW1ibmFpbCIsImV4cG9ydGVycyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9leHBvcnQtdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtCbG9iLCBVUkwsIGF0b2IsIFVpbnQ4QXJyYXksIEFycmF5QnVmZmVyLCBkb2N1bWVudH0gZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuXG5pbXBvcnQge1xuICBFWFBPUlRfSU1HX1JFU09MVVRJT05fT1BUSU9OUyxcbiAgRVhQT1JUX0lNR19SQVRJT19PUFRJT05TLFxuICBSRVNPTFVUSU9OUyxcbiAgRVhQT1JUX0lNR19SQVRJT1MsXG4gIEZvdXJCeVRocmVlUmF0aW9PcHRpb24sXG4gIE9uZVhSZXNvbHV0aW9uT3B0aW9uXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7RXhwb3J0SW1hZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtnZW5lcmF0ZUhhc2hJZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IGRvbXRvaW1hZ2UgZnJvbSAnLi9kb20tdG8taW1hZ2UnO1xuaW1wb3J0IHtzZXR9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHtleHBvcnRNYXBUb0hUTUx9IGZyb20gJy4vZXhwb3J0LW1hcC1odG1sJztcbmltcG9ydCB7Z2V0QXBwbGljYXRpb25Db25maWd9IGZyb20gJy4vYXBwbGljYXRpb24tY29uZmlnJztcblxuY29uc3QgZGVmYXVsdFJlc29sdXRpb24gPSBPbmVYUmVzb2x1dGlvbk9wdGlvbjtcblxuY29uc3QgZGVmYXVsdFJhdGlvID0gRm91ckJ5VGhyZWVSYXRpb09wdGlvbjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTVNFZGdlKHdpbmRvdzogV2luZG93KTogYm9vbGVhbiB7XG4gIC8vIEB0cy1pZ25vcmUgbXNTYXZlT3JPcGVuQmxvYiB3YXMgYSBwcm9wcmlldGFyeSBhZGRpdGlvbiB0byB0aGUgTmF2aWdhdG9yIG9iamVjdCwgYWRkZWQgYnkgTWljcm9zb2Z0IGZvciBJbnRlcm5ldCBFeHBsb3Jlci5cbiAgcmV0dXJuIEJvb2xlYW4od2luZG93Lm5hdmlnYXRvciAmJiB3aW5kb3cubmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NhbGVGcm9tSW1hZ2VTaXplKGltYWdlVyA9IDAsIGltYWdlSCA9IDAsIG1hcFcgPSAwLCBtYXBIID0gMCkge1xuICBpZiAoW2ltYWdlVywgaW1hZ2VILCBtYXBXLCBtYXBIXS5zb21lKGQgPT4gZCA8PSAwKSkge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgY29uc3QgYmFzZSA9IGltYWdlVyAvIGltYWdlSCA+IDEgPyBpbWFnZVcgOiBpbWFnZUg7XG4gIGNvbnN0IG1hcEJhc2UgPSBpbWFnZVcgLyBpbWFnZUggPiAxID8gbWFwVyA6IG1hcEg7XG4gIHJldHVybiBiYXNlIC8gbWFwQmFzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSh7XG4gIG1hcFcsXG4gIG1hcEgsXG4gIHJhdGlvLFxuICByZXNvbHV0aW9uXG59OiB7XG4gIG1hcFc6IG51bWJlcjtcbiAgbWFwSDogbnVtYmVyO1xuICByYXRpbzoga2V5b2YgdHlwZW9mIEVYUE9SVF9JTUdfUkFUSU9TO1xuICByZXNvbHV0aW9uOiBrZXlvZiB0eXBlb2YgUkVTT0xVVElPTlM7XG59KSB7XG4gIGlmIChtYXBXIDw9IDAgfHwgbWFwSCA8PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCByYXRpb0l0ZW0gPSBFWFBPUlRfSU1HX1JBVElPX09QVElPTlMuZmluZChvcCA9PiBvcC5pZCA9PT0gcmF0aW8pIHx8IGRlZmF1bHRSYXRpbztcblxuICBjb25zdCByZXNvbHV0aW9uSXRlbSA9XG4gICAgRVhQT1JUX0lNR19SRVNPTFVUSU9OX09QVElPTlMuZmluZChvcCA9PiBvcC5pZCA9PT0gcmVzb2x1dGlvbikgfHwgZGVmYXVsdFJlc29sdXRpb247XG5cbiAgY29uc3Qge3dpZHRoOiBzY2FsZWRXaWR0aCwgaGVpZ2h0OiBzY2FsZWRIZWlnaHR9ID0gcmVzb2x1dGlvbkl0ZW0uZ2V0U2l6ZShtYXBXLCBtYXBIKTtcblxuICBjb25zdCB7d2lkdGg6IGltYWdlVywgaGVpZ2h0OiBpbWFnZUh9ID0gcmF0aW9JdGVtLmdldFNpemUoc2NhbGVkV2lkdGgsIHNjYWxlZEhlaWdodCk7XG5cbiAgY29uc3Qge3NjYWxlfSA9IHJhdGlvSXRlbS5pZCA9PT0gRVhQT1JUX0lNR19SQVRJT1MuQ1VTVE9NID8ge3NjYWxlOiB1bmRlZmluZWR9IDogcmVzb2x1dGlvbkl0ZW07XG5cbiAgcmV0dXJuIHtcbiAgICBzY2FsZSxcbiAgICBpbWFnZVcsXG4gICAgaW1hZ2VIXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9Qbmcoc291cmNlRWxlbTogSFRNTEVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGRvbXRvaW1hZ2UudG9Qbmcoc291cmNlRWxlbSwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRhVVJJdG9CbG9iKGRhdGFVUkk6IHN0cmluZyk6IEJsb2Ige1xuICBjb25zdCBiaW5hcnkgPSBhdG9iKGRhdGFVUkkuc3BsaXQoJywnKVsxXSk7XG5cbiAgLy8gc2VwYXJhdGUgb3V0IHRoZSBtaW1lIGNvbXBvbmVudFxuICBjb25zdCBtaW1lU3RyaW5nID0gZGF0YVVSSS5zcGxpdCgnLCcpWzBdLnNwbGl0KCc6JylbMV0uc3BsaXQoJzsnKVswXTtcblxuICAvLyB3cml0ZSB0aGUgYnl0ZXMgb2YgdGhlIHN0cmluZyB0byBhbiBBcnJheUJ1ZmZlclxuICBjb25zdCBhYiA9IG5ldyBBcnJheUJ1ZmZlcihiaW5hcnkubGVuZ3RoKTtcblxuICAvLyBjcmVhdGUgYSB2aWV3IGludG8gdGhlIGJ1ZmZlclxuICBjb25zdCBpYSA9IG5ldyBVaW50OEFycmF5KGFiKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGJpbmFyeS5sZW5ndGg7IGkrKykge1xuICAgIGlhW2ldID0gYmluYXJ5LmNoYXJDb2RlQXQoaSk7XG4gIH1cblxuICByZXR1cm4gbmV3IEJsb2IoW2FiXSwge3R5cGU6IG1pbWVTdHJpbmd9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRvd25sb2FkRmlsZShmaWxlQmxvYjogQmxvYiwgZmlsZU5hbWU6IHN0cmluZykge1xuICBpZiAoaXNNU0VkZ2Uod2luZG93KSkge1xuICAgICh3aW5kb3cubmF2aWdhdG9yIGFzIGFueSkubXNTYXZlT3JPcGVuQmxvYihmaWxlQmxvYiwgZmlsZU5hbWUpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZUJsb2IpO1xuXG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIHVybCk7XG4gICAgbGluay5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgZmlsZU5hbWUpO1xuXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICAvLyBpbiBzb21lIGNhc2VzIHdoZXJlIG1hcHMgYXJlIGVtYmVkZGVkLCBlLmcuIG5lZWQgdG9cbiAgICAvLyBjcmVhdGUgYW5kIGRpc3BhdGNoIGFuIGV2ZW50IHNvIHRoYXQgdGhlIGJyb3dzZXIgZG93bmxvYWRzXG4gICAgLy8gdGhlIGZpbGUgaW5zdGVhZCBvZiBuYXZpZ2F0aW5nIHRvIHRoZSB1cmxcbiAgICBjb25zdCBldnQgPSBuZXcgTW91c2VFdmVudCgnY2xpY2snLCB7XG4gICAgICB2aWV3OiB3aW5kb3csXG4gICAgICBidWJibGVzOiBmYWxzZSxcbiAgICAgIGNhbmNlbGFibGU6IHRydWVcbiAgICB9KTtcbiAgICBsaW5rLmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xuICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgfVxufVxuXG4vKipcbiAqIFdoZXRoZXIgY29sb3IgaXMgcmdiXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0SW1hZ2UoXG4gIHVpU3RhdGVFeHBvcnRJbWFnZTogRXhwb3J0SW1hZ2UsXG4gIGZpbGVuYW1lID0gZ2V0QXBwbGljYXRpb25Db25maWcoKS5kZWZhdWx0SW1hZ2VOYW1lXG4pIHtcbiAgY29uc3Qge2ltYWdlRGF0YVVyaX0gPSB1aVN0YXRlRXhwb3J0SW1hZ2U7XG4gIGlmIChpbWFnZURhdGFVcmkpIHtcbiAgICBjb25zdCBmaWxlID0gZGF0YVVSSXRvQmxvYihpbWFnZURhdGFVcmkpO1xuICAgIGRvd25sb2FkRmlsZShmaWxlLCBmaWxlbmFtZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cG9ydFRvSnNvblN0cmluZyhkYXRhKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IpIHJldHVybiBlLm1lc3NhZ2U7XG4gICAgLy8gTm9uLVN0YW5kYXJkIEVycm9yIE9iamVjdCBQcm9wZXJ0eVxuICAgIHJldHVybiAoZSBhcyBhbnkpLmRlc2NyaXB0aW9uO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXBKU09OKHN0YXRlLCBvcHRpb25zID0gZ2V0QXBwbGljYXRpb25Db25maWcoKS5kZWZhdWx0RXhwb3J0SnNvblNldHRpbmdzKSB7XG4gIGNvbnN0IHtoYXNEYXRhfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHNjaGVtYSA9IHN0YXRlLnZpc1N0YXRlLnNjaGVtYTtcblxuICBpZiAoIWhhc0RhdGEpIHtcbiAgICByZXR1cm4gc2NoZW1hLmdldENvbmZpZ1RvU2F2ZShzdGF0ZSk7XG4gIH1cblxuICBsZXQgbWFwVG9TYXZlID0gc2NoZW1hLnNhdmUoc3RhdGUpO1xuICAvLyBhZGQgZmlsZSBuYW1lIGlmIHRpdGxlIGlzIG5vdCBwcm92aWRlZFxuICBjb25zdCB0aXRsZSA9IGdldChtYXBUb1NhdmUsIFsnaW5mbycsICd0aXRsZSddKTtcbiAgaWYgKCF0aXRsZSB8fCAhdGl0bGUubGVuZ3RoKSB7XG4gICAgbWFwVG9TYXZlID0gc2V0KFsnaW5mbycsICd0aXRsZSddLCBga2VwbGVyZ2xfJHtnZW5lcmF0ZUhhc2hJZCg2KX1gLCBtYXBUb1NhdmUpO1xuICB9XG4gIHJldHVybiBtYXBUb1NhdmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBvcnRKc29uKHN0YXRlLCBvcHRpb25zOiBhbnkgPSB7fSkge1xuICBjb25zdCBtYXAgPSBnZXRNYXBKU09OKHN0YXRlLCBvcHRpb25zKTtcbiAgbWFwLmluZm8uc291cmNlID0gJ2tlcGxlci5nbCc7XG4gIGNvbnN0IGZpbGVCbG9iID0gbmV3IEJsb2IoW2V4cG9ydFRvSnNvblN0cmluZyhtYXApXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9qc29uJ30pO1xuICBjb25zdCBmaWxlTmFtZSA9IHN0YXRlLmFwcE5hbWUgPyBgJHtzdGF0ZS5hcHBOYW1lfS5qc29uYCA6IGdldEFwcGxpY2F0aW9uQ29uZmlnKCkuZGVmYXVsdEpzb25OYW1lO1xuICBkb3dubG9hZEZpbGUoZmlsZUJsb2IsIGZpbGVOYW1lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cG9ydEh0bWwoc3RhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3Qge3VzZXJNYXBib3hUb2tlbiwgZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4sIG1vZGV9ID0gb3B0aW9ucztcblxuICBjb25zdCBkYXRhID0ge1xuICAgIC4uLmdldE1hcEpTT04oc3RhdGUpLFxuICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuOlxuICAgICAgKHVzZXJNYXBib3hUb2tlbiB8fCAnJykgIT09ICcnID8gdXNlck1hcGJveFRva2VuIDogZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4sXG4gICAgbW9kZVxuICB9O1xuXG4gIGNvbnN0IGZpbGVCbG9iID0gbmV3IEJsb2IoW2V4cG9ydE1hcFRvSFRNTChkYXRhKV0sIHt0eXBlOiAndGV4dC9odG1sJ30pO1xuICBkb3dubG9hZEZpbGUoXG4gICAgZmlsZUJsb2IsXG4gICAgc3RhdGUuYXBwTmFtZSA/IGAke3N0YXRlLmFwcE5hbWV9Lmh0bWxgIDogZ2V0QXBwbGljYXRpb25Db25maWcoKS5kZWZhdWx0SHRtbE5hbWVcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cG9ydE1hcChzdGF0ZSwgb3B0aW9ucyA9IGdldEFwcGxpY2F0aW9uQ29uZmlnKCkuZGVmYXVsdEV4cG9ydEpzb25TZXR0aW5ncykge1xuICBjb25zdCB7aW1hZ2VEYXRhVXJpfSA9IHN0YXRlLnVpU3RhdGUuZXhwb3J0SW1hZ2U7XG4gIGNvbnN0IHRodW1ibmFpbDogQmxvYiB8IG51bGwgPSBpbWFnZURhdGFVcmkgPyBkYXRhVVJJdG9CbG9iKGltYWdlRGF0YVVyaSkgOiBudWxsO1xuICBjb25zdCBtYXBUb1NhdmUgPSBnZXRNYXBKU09OKHN0YXRlLCBvcHRpb25zKTtcblxuICByZXR1cm4ge1xuICAgIG1hcDogbWFwVG9TYXZlLFxuICAgIHRodW1ibmFpbFxuICB9O1xufVxuXG5jb25zdCBleHBvcnRlcnMgPSB7XG4gIGV4cG9ydEltYWdlLFxuICBleHBvcnRKc29uLFxuICBleHBvcnRIdG1sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBleHBvcnRlcnM7XG4iXSwibWFwcGlu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
|
package/dist/projection-utils.js
CHANGED
|
@@ -43,12 +43,20 @@ function getCenterAndZoomFromBounds(bounds, _ref) {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
// viewport(bounds, dimensions, minzoom, maxzoom, tileSize, allowFloat)
|
|
46
|
-
var _geoViewport$viewport = _geoViewport["default"].viewport(bounds, [width, height], undefined, undefined, MAPBOX_TILE_SIZE),
|
|
46
|
+
var _geoViewport$viewport = _geoViewport["default"].viewport(bounds, [width, height], undefined, undefined, MAPBOX_TILE_SIZE, true),
|
|
47
47
|
zoom = _geoViewport$viewport.zoom;
|
|
48
48
|
// center being calculated by geo-vieweport.viewport has a complex logic that
|
|
49
49
|
// projects and then unprojects the coordinates to determine the center
|
|
50
50
|
// Calculating a simple average instead as that is the expected behavior in most of cases
|
|
51
51
|
var center = [(bounds[0] + bounds[2]) / 2, (bounds[1] + bounds[3]) / 2];
|
|
52
|
+
|
|
53
|
+
// NOTE: this logic is used in deck.gl normalizeViewportProps
|
|
54
|
+
// This is required in order to prevent projection matrix mismatch between basemap and layers
|
|
55
|
+
var minZoom = Math.log2(height / MAPBOX_TILE_SIZE);
|
|
56
|
+
if (zoom <= minZoom) {
|
|
57
|
+
zoom = minZoom;
|
|
58
|
+
center[1] = 0;
|
|
59
|
+
}
|
|
52
60
|
return {
|
|
53
61
|
zoom: zoom,
|
|
54
62
|
center: center
|
|
@@ -80,4 +88,4 @@ function normalizeEvent(event, viewport) {
|
|
|
80
88
|
event.lngLat = [location[0], location[1]];
|
|
81
89
|
return event;
|
|
82
90
|
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2VvVmlld3BvcnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jb25zb2xlIiwiTUFQQk9YX1RJTEVfU0laRSIsImV4cG9ydHMiLCJpc0xhdCIsIm51bSIsIk51bWJlciIsImlzRmluaXRlIiwiaXNMbmciLCJ2YWxpZGF0ZUJvdW5kcyIsImJvdW5kcyIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImV2ZXJ5IiwiZ2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHMiLCJfcmVmIiwid2lkdGgiLCJoZWlnaHQiLCJ2YWxpZEJvdW5kcyIsIkNvbnNvbGUiLCJ3YXJuIiwiX2dlb1ZpZXdwb3J0JHZpZXdwb3J0IiwiZ2VvVmlld3BvcnQiLCJ2aWV3cG9ydCIsInVuZGVmaW5lZCIsInpvb20iLCJjZW50ZXIiLCJtaW5ab29tIiwiTWF0aCIsImxvZzIiLCJub3JtYWxpemVFdmVudCIsImV2ZW50IiwiX2V2ZW50JHRhcmdldCIsInRhcmdldCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIngiLCJjbGllbnRYIiwibGVmdCIsInkiLCJjbGllbnRZIiwidG9wIiwicG9pbnQiLCJsb2NhdGlvbiIsInVucHJvamVjdCIsInRhcmdldFoiLCJsbmdMYXQiXSwic291cmNlcyI6WyIuLi9zcmMvcHJvamVjdGlvbi11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgZ2VvVmlld3BvcnQgZnJvbSAnQG1hcGJveC9nZW8tdmlld3BvcnQnO1xuXG5pbXBvcnQgV2ViTWVyY2F0b3JWaWV3cG9ydCBmcm9tICd2aWV3cG9ydC1tZXJjYXRvci1wcm9qZWN0JztcbmltcG9ydCBDb25zb2xlIGZyb20gJ2dsb2JhbC9jb25zb2xlJztcblxuZXhwb3J0IGNvbnN0IE1BUEJPWF9USUxFX1NJWkUgPSA1MTI7XG5cbmZ1bmN0aW9uIGlzTGF0KG51bSkge1xuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKG51bSkgJiYgbnVtIDw9IDkwICYmIG51bSA+PSAtOTA7XG59XG5mdW5jdGlvbiBpc0xuZyhudW0pIHtcbiAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShudW0pICYmIG51bSA8PSAxODAgJiYgbnVtID49IC0xODA7XG59XG5cbi8qKlxuICogYm91bmRzIHNob3VsZCBiZSBbbWluTG5nLCBtaW5MYXQsIG1heExuZywgbWF4TGF0XVxuICogQHBhcmFtIHsqfSBib3VuZHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQm91bmRzKGJvdW5kcykge1xuICAvLyBhcnJheTogWyAtMTgwLCAtODUuMDUxMTI4Nzc5ODA2NTksIDE4MCwgODUuMDUxMTI4Nzc5ODA2NiBdXG4gIC8vIHZhbGlkYXRlIGJvdW5kc1xuICBpZiAoXG4gICAgQXJyYXkuaXNBcnJheShib3VuZHMpICYmXG4gICAgYm91bmRzLmxlbmd0aCA9PT0gNCAmJlxuICAgIFtib3VuZHNbMF0sIGJvdW5kc1syXV0uZXZlcnkoaXNMbmcpICYmXG4gICAgW2JvdW5kc1sxXSwgYm91bmRzWzNdXS5ldmVyeShpc0xhdClcbiAgKSB7XG4gICAgcmV0dXJuIGJvdW5kcztcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENlbnRlckFuZFpvb21Gcm9tQm91bmRzKGJvdW5kcywge3dpZHRoLCBoZWlnaHR9KSB7XG4gIGNvbnN0IHZhbGlkQm91bmRzID0gdmFsaWRhdGVCb3VuZHMoYm91bmRzKTtcbiAgaWYgKCF2YWxpZEJvdW5kcykge1xuICAgIENvbnNvbGUud2FybignaW52YWxpZCBtYXAgYm91bmRzIHByb3ZpZGVkJyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyB2aWV3cG9ydChib3VuZHMsIGRpbWVuc2lvbnMsIG1pbnpvb20sIG1heHpvb20sIHRpbGVTaXplLCBhbGxvd0Zsb2F0KVxuICBsZXQge3pvb219ID0gZ2VvVmlld3BvcnQudmlld3BvcnQoXG4gICAgYm91bmRzLFxuICAgIFt3aWR0aCwgaGVpZ2h0XSxcbiAgICB1bmRlZmluZWQsXG4gICAgdW5kZWZpbmVkLFxuICAgIE1BUEJPWF9USUxFX1NJWkUsXG4gICAgdHJ1ZVxuICApO1xuICAvLyBjZW50ZXIgYmVpbmcgY2FsY3VsYXRlZCBieSBnZW8tdmlld2Vwb3J0LnZpZXdwb3J0IGhhcyBhIGNvbXBsZXggbG9naWMgdGhhdFxuICAvLyBwcm9qZWN0cyBhbmQgdGhlbiB1bnByb2plY3RzIHRoZSBjb29yZGluYXRlcyB0byBkZXRlcm1pbmUgdGhlIGNlbnRlclxuICAvLyBDYWxjdWxhdGluZyBhIHNpbXBsZSBhdmVyYWdlIGluc3RlYWQgYXMgdGhhdCBpcyB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IgaW4gbW9zdCBvZiBjYXNlc1xuICBjb25zdCBjZW50ZXIgPSBbKGJvdW5kc1swXSArIGJvdW5kc1syXSkgLyAyLCAoYm91bmRzWzFdICsgYm91bmRzWzNdKSAvIDJdO1xuXG4gIC8vIE5PVEU6IHRoaXMgbG9naWMgaXMgdXNlZCBpbiBkZWNrLmdsIG5vcm1hbGl6ZVZpZXdwb3J0UHJvcHNcbiAgLy8gVGhpcyBpcyByZXF1aXJlZCBpbiBvcmRlciB0byBwcmV2ZW50IHByb2plY3Rpb24gbWF0cml4IG1pc21hdGNoIGJldHdlZW4gYmFzZW1hcCBhbmQgbGF5ZXJzXG4gIGNvbnN0IG1pblpvb20gPSBNYXRoLmxvZzIoaGVpZ2h0IC8gTUFQQk9YX1RJTEVfU0laRSk7XG4gIGlmICh6b29tIDw9IG1pblpvb20pIHtcbiAgICB6b29tID0gbWluWm9vbTtcbiAgICBjZW50ZXJbMV0gPSAwO1xuICB9XG5cbiAgcmV0dXJuIHt6b29tLCBjZW50ZXJ9O1xufVxuXG4vKipcbiAqIEFkZCBleHRyYSBpbmZvIGFib3V0IHNjcmVlbiBzcGFjZSBwb3NpdGlvbiBhbmQgd29ybGQgcG9zaXRpb24gdG8gdGhlIGV2ZW50LlxuICogQHBhcmFtIHsqfSBldmVudCBFdmVudCB0byBub3JtYWxpemUuXG4gKiBAcGFyYW0geyp9IHZpZXdwb3J0IEN1cnJlbnQgdmlld3BvcnQuXG4gKiBAcmV0dXJucyBOb3JtYWxpemVkIGV2ZW50IHdpdGggZXh0cmEgaW5mb3JtYXRpb24gY29tcGF0aWJsZSB3aXRoIFJlYWN0LW1hcC1nbCBNYXBMYXllck1vdXNlRXZlbnRcbiAqIGh0dHBzOi8vdmlzZ2wuZ2l0aHViLmlvL3JlYWN0LW1hcC1nbC9kb2NzL2FwaS1yZWZlcmVuY2UvdHlwZXMjbWFwbGF5ZXJtb3VzZWV2ZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVFdmVudChldmVudDogYW55LCB2aWV3cG9ydDogV2ViTWVyY2F0b3JWaWV3cG9ydCkge1xuICBjb25zdCBib3VuZHMgPSBldmVudC50YXJnZXQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBpZiAoIWJvdW5kcykge1xuICAgIHJldHVybiBldmVudDtcbiAgfVxuXG4gIGNvbnN0IHggPSBldmVudC5jbGllbnRYIC0gYm91bmRzLmxlZnQ7XG4gIGNvbnN0IHkgPSBldmVudC5jbGllbnRZIC0gYm91bmRzLnRvcDtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoeCkgfHwgIU51bWJlci5pc0Zpbml0ZSh5KSkge1xuICAgIHJldHVybiBldmVudDtcbiAgfVxuXG4gIGV2ZW50LnBvaW50ID0gW3gsIHldO1xuICBjb25zdCBsb2NhdGlvbiA9IHZpZXdwb3J0LnVucHJvamVjdChldmVudC5wb2ludCwge3RhcmdldFo6IDB9KTtcbiAgZXZlbnQubG5nTGF0ID0gW2xvY2F0aW9uWzBdLCBsb2NhdGlvblsxXV07XG5cbiAgcmV0dXJuIGV2ZW50O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBR0EsSUFBQUEsWUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBR0EsSUFBQUMsUUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBTkE7QUFDQTs7QUFPTyxJQUFNRSxnQkFBZ0IsR0FBQUMsT0FBQSxDQUFBRCxnQkFB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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kepler.gl/utils",
|
|
3
3
|
"author": "Shan He <shan@uber.com>",
|
|
4
|
-
"version": "3.1.
|
|
4
|
+
"version": "3.1.10",
|
|
5
5
|
"description": "kepler.gl constants used by kepler.gl components, actions and reducers",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@deck.gl/core": "^8.9.27",
|
|
34
|
-
"@kepler.gl/common-utils": "3.1.
|
|
35
|
-
"@kepler.gl/constants": "3.1.
|
|
36
|
-
"@kepler.gl/types": "3.1.
|
|
34
|
+
"@kepler.gl/common-utils": "3.1.10",
|
|
35
|
+
"@kepler.gl/constants": "3.1.10",
|
|
36
|
+
"@kepler.gl/types": "3.1.10",
|
|
37
37
|
"@loaders.gl/arrow": "^4.3.2",
|
|
38
38
|
"@luma.gl/constants": "^8.5.20",
|
|
39
39
|
"@luma.gl/core": "^8.5.20",
|