Upload folder using huggingface_hub
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- run.sh +72 -0
- web/app.js +78 -0
- web/appSettings.js +145 -0
- web/config/basePath.json +1 -0
- web/config/settings.json +8 -0
- web/json_rpc.js +137 -0
- web/jupyter.js +214 -0
- web/logging.js +130 -0
- web/lsp/capabilities_node.js +3 -0
- web/lsp/extensions_node.js +3 -0
- web/lsp/protocol_node.js +186 -0
- web/lsp/settings_node.js +44 -0
- web/lsp/text_document_node.js +313 -0
- web/lsp/window_node.js +24 -0
- web/lsp/workspace_node.js +41 -0
- web/node_modules/.bin/bunyan +3 -0
- web/node_modules/.bin/mkdirp +3 -0
- web/node_modules/.bin/ncp +3 -0
- web/node_modules/.bin/rimraf +3 -0
- web/node_modules/.bin/semver +3 -0
- web/node_modules/accepts/HISTORY.md +224 -0
- web/node_modules/accepts/LICENSE +23 -0
- web/node_modules/accepts/README.md +143 -0
- web/node_modules/accepts/index.js +238 -0
- web/node_modules/accepts/package.json +50 -0
- web/node_modules/after/.npmignore +2 -0
- web/node_modules/after/.travis.yml +12 -0
- web/node_modules/after/LICENCE +19 -0
- web/node_modules/after/README.md +115 -0
- web/node_modules/after/index.js +28 -0
- web/node_modules/after/package.json +32 -0
- web/node_modules/after/test/after-test.js +120 -0
- web/node_modules/arraybuffer.slice/.npmignore +17 -0
- web/node_modules/arraybuffer.slice/LICENCE +18 -0
- web/node_modules/arraybuffer.slice/Makefile +8 -0
- web/node_modules/arraybuffer.slice/README.md +17 -0
- web/node_modules/arraybuffer.slice/index.js +29 -0
- web/node_modules/arraybuffer.slice/package.json +20 -0
- web/node_modules/arraybuffer.slice/test/slice-buffer.js +227 -0
- web/node_modules/async-limiter/.travis.yml +7 -0
- web/node_modules/async-limiter/LICENSE +8 -0
- web/node_modules/async-limiter/coverage/coverage.json +1 -0
- web/node_modules/async-limiter/coverage/lcov-report/async-throttle/index.html +73 -0
- web/node_modules/async-limiter/coverage/lcov-report/async-throttle/index.js.html +246 -0
- web/node_modules/async-limiter/coverage/lcov-report/base.css +182 -0
- web/node_modules/async-limiter/coverage/lcov-report/index.html +73 -0
- web/node_modules/async-limiter/coverage/lcov-report/prettify.css +1 -0
- web/node_modules/async-limiter/coverage/lcov-report/prettify.js +1 -0
- web/node_modules/async-limiter/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- web/node_modules/async-limiter/coverage/lcov-report/sorter.js +156 -0
run.sh
ADDED
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/bin/bash -e
|
2 |
+
|
3 |
+
# Copyright 2017 Google Inc. All rights reserved.
|
4 |
+
#
|
5 |
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
# you may not use this file except in compliance with the License.
|
7 |
+
# You may obtain a copy of the License at
|
8 |
+
#
|
9 |
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10 |
+
#
|
11 |
+
# Unless required by applicable law or agreed to in writing, software
|
12 |
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13 |
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
# See the License for the specific language governing permissions and
|
15 |
+
# limitations under the License.
|
16 |
+
|
17 |
+
# At least one GPU is considered available iff COLAB_GPU=1.
|
18 |
+
export COLAB_GPU="$([[ -c /dev/nvidiactl ]] && echo 1)"
|
19 |
+
|
20 |
+
if [[ -e /customize_for_vm_type.sh ]]; then
|
21 |
+
/customize_for_vm_type.sh
|
22 |
+
fi
|
23 |
+
|
24 |
+
/usr/local/colab/bin/oom_monitor.sh &
|
25 |
+
|
26 |
+
# Start the Colab proxy to the Jupyter kernel manager.
|
27 |
+
# TODO(b/267667580): Evaluate use of tcmalloc here and possibly other places.
|
28 |
+
( while true; do
|
29 |
+
GCE_METADATA_HOST="${VM_GCE_METADATA_HOST}" \
|
30 |
+
LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libtcmalloc.so.4' \
|
31 |
+
/usr/colab/bin/kernel_manager_proxy \
|
32 |
+
--listen_port="${KMP_LISTEN_PORT}" \
|
33 |
+
--target_port="${KMP_TARGET_PORT}" \
|
34 |
+
${KMP_EXTRA_ARGS} || true
|
35 |
+
sleep 1
|
36 |
+
done & )
|
37 |
+
|
38 |
+
# Start fresh to isolate user-initiated actions from VM build & startup events.
|
39 |
+
for f in /var/log/apt/history.log /var/log/pip.log; do
|
40 |
+
mv "$f" "${f}.bak-run.sh" 2>/dev/null || true # Ignore missing files.
|
41 |
+
done
|
42 |
+
|
43 |
+
# Warm disk buffers for modules we need for kernel startup. (cf: b/116536906)
|
44 |
+
if [[ "${COLAB_WARMUP_DEFAULTS}" == "1" ]]; then
|
45 |
+
python3 -c "import google.colab._kernel"
|
46 |
+
python3 -c "import matplotlib"
|
47 |
+
python3 -c "import tensorflow" &
|
48 |
+
fi
|
49 |
+
|
50 |
+
# Start the server to handle /files and /api/contents requests.
|
51 |
+
/usr/local/bin/colab-fileshim.py ${COLAB_FILESHIM_EXTRA_ARGS} &
|
52 |
+
|
53 |
+
# Link NVidia tools from a read-only volume mount.
|
54 |
+
for f in $(ls /opt/bin/.nvidia 2>/dev/null); do
|
55 |
+
ln -st /opt/bin "/opt/bin/.nvidia/${f}"
|
56 |
+
ln -st /usr/bin "/opt/bin/.nvidia/${f}"
|
57 |
+
done
|
58 |
+
|
59 |
+
cd /
|
60 |
+
|
61 |
+
# Start the node server.
|
62 |
+
if [[ "${COLAB_HUMAN_READABLE_NODE_LOGS}" == "1" ]]; then
|
63 |
+
PIPE=/tmp/.node.out
|
64 |
+
if ! [[ -p "${PIPE}" ]]; then
|
65 |
+
mkfifo "${PIPE}"
|
66 |
+
fi
|
67 |
+
/datalab/web/node_modules/bunyan/bin/bunyan \
|
68 |
+
-l "${COLAB_NODE_LOG_LEVEL:-info}" < "${PIPE}" &
|
69 |
+
exec >& "${PIPE}"
|
70 |
+
fi
|
71 |
+
exec /tools/node/bin/node /datalab/web/app.js
|
72 |
+
|
web/app.js
ADDED
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"use strict";
|
2 |
+
/*
|
3 |
+
* Copyright 2015 Google Inc. All rights reserved.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
6 |
+
* use this file except in compliance with the License. You may obtain a copy of
|
7 |
+
* the License at
|
8 |
+
*
|
9 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10 |
+
*
|
11 |
+
* Unless required by applicable law or agreed to in writing, software
|
12 |
+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
13 |
+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
14 |
+
* License for the specific language governing permissions and limitations under
|
15 |
+
* the License.
|
16 |
+
*/
|
17 |
+
Object.defineProperty(exports, "__esModule", { value: true });
|
18 |
+
var fs = require("fs");
|
19 |
+
var path = require("path");
|
20 |
+
var appSettings_1 = require("./appSettings");
|
21 |
+
var logging = require("./logging");
|
22 |
+
var server = require("./server");
|
23 |
+
/**
|
24 |
+
* Loads the configuration settings for the application to use.
|
25 |
+
* On first run, this generates any dynamic settings and merges them into the
|
26 |
+
* settings result.
|
27 |
+
* @return the settings object for the application to use.
|
28 |
+
*/
|
29 |
+
function loadAppSettings() {
|
30 |
+
var settingsPath = path.join(__dirname, 'config', 'settings.json');
|
31 |
+
if (!fs.existsSync(settingsPath)) {
|
32 |
+
var msg = "App settings file \"".concat(settingsPath, "\" not found.");
|
33 |
+
console.error(msg);
|
34 |
+
throw new Error(msg);
|
35 |
+
}
|
36 |
+
try {
|
37 |
+
var settings = JSON.parse(fs.readFileSync(settingsPath, 'utf8') || '{}');
|
38 |
+
(0, appSettings_1.applyEnvironmentVariables)(settings);
|
39 |
+
return settings;
|
40 |
+
}
|
41 |
+
catch (e) {
|
42 |
+
console.error(e);
|
43 |
+
throw new Error("Error parsing settings overrides: ".concat(e));
|
44 |
+
}
|
45 |
+
}
|
46 |
+
/**
|
47 |
+
* Load the configuration settings, and then start the server, which
|
48 |
+
* runs indefinitely, listening to and processing incoming HTTP requests.
|
49 |
+
*/
|
50 |
+
var appSettings = loadAppSettings();
|
51 |
+
if (appSettings != null) {
|
52 |
+
logging.initializeLoggers(appSettings);
|
53 |
+
logging.getLogger().info('app: starting with settings: %s', JSON.stringify(appSettings));
|
54 |
+
server.run(appSettings);
|
55 |
+
}
|
56 |
+
/**
|
57 |
+
* Handle shutdown of this process, to also stop the server, which will in turn
|
58 |
+
* stop the associated Jupyter server process.
|
59 |
+
*/
|
60 |
+
function exit() {
|
61 |
+
logging.getLogger().info('app: exit');
|
62 |
+
server.stop();
|
63 |
+
logging.getLogger().info('app: exit: stopped');
|
64 |
+
process.exit(0);
|
65 |
+
}
|
66 |
+
/**
|
67 |
+
* Handle uncaught exceptions to log them.
|
68 |
+
*/
|
69 |
+
function errorHandler(e) {
|
70 |
+
console.error(e.stack);
|
71 |
+
logging.getLogger().error(e, 'Unhandled exception');
|
72 |
+
process.exit(1);
|
73 |
+
}
|
74 |
+
process.on('uncaughtException', errorHandler);
|
75 |
+
process.on('exit', exit);
|
76 |
+
process.on('SIGINT', exit);
|
77 |
+
process.on('SIGTERM', exit);
|
78 |
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGhpcmRfcGFydHkvY29sYWIvc291cmNlcy9hcHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHOztBQUVILHVCQUF5QjtBQUN6QiwyQkFBNkI7QUFFN0IsNkNBQXFFO0FBQ3JFLG1DQUFxQztBQUNyQyxpQ0FBbUM7QUFFbkM7Ozs7O0dBS0c7QUFDSCxTQUFTLGVBQWU7SUFDdEIsSUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBRXJFLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDakMsSUFBTSxHQUFHLEdBQUcsOEJBQXNCLFlBQVksa0JBQWMsQ0FBQztRQUM3RCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILElBQU0sUUFBUSxHQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxDQUM3QyxDQUFDO1FBQ2hCLElBQUEsdUNBQXlCLEVBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEMsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQXFDLENBQUMsQ0FBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztBQUNILENBQUM7QUFFRDs7O0dBR0c7QUFDSCxJQUFNLFdBQVcsR0FBRyxlQUFlLEVBQUUsQ0FBQztBQUN0QyxJQUFJLFdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUN4QixPQUFPLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FDcEIsaUNBQWlDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUdEOzs7R0FHRztBQUNILFNBQVMsSUFBSTtJQUNYLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQy9DLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxZQUFZLENBQUMsQ0FBUTtJQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUV2QixPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3BELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQztBQUVELE9BQU8sQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDOUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDekIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDM0IsT0FBTyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdFxuICogdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2ZcbiAqIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUXG4gKiBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGVcbiAqIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyXG4gKiB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge2FwcGx5RW52aXJvbm1lbnRWYXJpYWJsZXMsIEFwcFNldHRpbmdzfSBmcm9tICcuL2FwcFNldHRpbmdzJztcbmltcG9ydCAqIGFzIGxvZ2dpbmcgZnJvbSAnLi9sb2dnaW5nJztcbmltcG9ydCAqIGFzIHNlcnZlciBmcm9tICcuL3NlcnZlcic7XG5cbi8qKlxuICogTG9hZHMgdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIHRoZSBhcHBsaWNhdGlvbiB0byB1c2UuXG4gKiBPbiBmaXJzdCBydW4sIHRoaXMgZ2VuZXJhdGVzIGFueSBkeW5hbWljIHNldHRpbmdzIGFuZCBtZXJnZXMgdGhlbSBpbnRvIHRoZVxuICogc2V0dGluZ3MgcmVzdWx0LlxuICogQHJldHVybiB0aGUgc2V0dGluZ3Mgb2JqZWN0IGZvciB0aGUgYXBwbGljYXRpb24gdG8gdXNlLlxuICovXG5mdW5jdGlvbiBsb2FkQXBwU2V0dGluZ3MoKTogQXBwU2V0dGluZ3Mge1xuICBjb25zdCBzZXR0aW5nc1BhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnY29uZmlnJywgJ3NldHRpbmdzLmpzb24nKTtcblxuICBpZiAoIWZzLmV4aXN0c1N5bmMoc2V0dGluZ3NQYXRoKSkge1xuICAgIGNvbnN0IG1zZyA9IGBBcHAgc2V0dGluZ3MgZmlsZSBcIiR7c2V0dGluZ3NQYXRofVwiIG5vdCBmb3VuZC5gO1xuICAgIGNvbnNvbGUuZXJyb3IobXNnKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3Qgc2V0dGluZ3MgPVxuICAgICAgICBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhzZXR0aW5nc1BhdGgsICd1dGY4JykgfHwgJ3t9JykgYXNcbiAgICAgICAgQXBwU2V0dGluZ3M7XG4gICAgYXBwbHlFbnZpcm9ubWVudFZhcmlhYmxlcyhzZXR0aW5ncyk7XG4gICAgcmV0dXJuIHNldHRpbmdzO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIHBhcnNpbmcgc2V0dGluZ3Mgb3ZlcnJpZGVzOiAke2V9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBMb2FkIHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzLCBhbmQgdGhlbiBzdGFydCB0aGUgc2VydmVyLCB3aGljaFxuICogcnVucyBpbmRlZmluaXRlbHksIGxpc3RlbmluZyB0byBhbmQgcHJvY2Vzc2luZyBpbmNvbWluZyBIVFRQIHJlcXVlc3RzLlxuICovXG5jb25zdCBhcHBTZXR0aW5ncyA9IGxvYWRBcHBTZXR0aW5ncygpO1xuaWYgKGFwcFNldHRpbmdzICE9IG51bGwpIHtcbiAgbG9nZ2luZy5pbml0aWFsaXplTG9nZ2VycyhhcHBTZXR0aW5ncyk7XG4gIGxvZ2dpbmcuZ2V0TG9nZ2VyKCkuaW5mbyhcbiAgICAgICdhcHA6IHN0YXJ0aW5nIHdpdGggc2V0dGluZ3M6ICVzJywgSlNPTi5zdHJpbmdpZnkoYXBwU2V0dGluZ3MpKTtcbiAgc2VydmVyLnJ1bihhcHBTZXR0aW5ncyk7XG59XG5cblxuLyoqXG4gKiBIYW5kbGUgc2h1dGRvd24gb2YgdGhpcyBwcm9jZXNzLCB0byBhbHNvIHN0b3AgdGhlIHNlcnZlciwgd2hpY2ggd2lsbCBpbiB0dXJuXG4gKiBzdG9wIHRoZSBhc3NvY2lhdGVkIEp1cHl0ZXIgc2VydmVyIHByb2Nlc3MuXG4gKi9cbmZ1bmN0aW9uIGV4aXQoKSB7XG4gIGxvZ2dpbmcuZ2V0TG9nZ2VyKCkuaW5mbygnYXBwOiBleGl0Jyk7XG4gIHNlcnZlci5zdG9wKCk7XG4gIGxvZ2dpbmcuZ2V0TG9nZ2VyKCkuaW5mbygnYXBwOiBleGl0OiBzdG9wcGVkJyk7XG4gIHByb2Nlc3MuZXhpdCgwKTtcbn1cblxuLyoqXG4gKiBIYW5kbGUgdW5jYXVnaHQgZXhjZXB0aW9ucyB0byBsb2cgdGhlbS5cbiAqL1xuZnVuY3Rpb24gZXJyb3JIYW5kbGVyKGU6IEVycm9yKTogdm9pZCB7XG4gIGNvbnNvbGUuZXJyb3IoZS5zdGFjayk7XG5cbiAgbG9nZ2luZy5nZXRMb2dnZXIoKS5lcnJvcihlLCAnVW5oYW5kbGVkIGV4Y2VwdGlvbicpO1xuICBwcm9jZXNzLmV4aXQoMSk7XG59XG5cbnByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZXJyb3JIYW5kbGVyKTtcbnByb2Nlc3Mub24oJ2V4aXQnLCBleGl0KTtcbnByb2Nlc3Mub24oJ1NJR0lOVCcsIGV4aXQpO1xucHJvY2Vzcy5vbignU0lHVEVSTScsIGV4aXQpO1xuIl19
|
web/appSettings.js
ADDED
@@ -0,0 +1,145 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"use strict";
|
2 |
+
/*
|
3 |
+
* Copyright 2018 Google Inc. All rights reserved.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
6 |
+
* use this file except in compliance with the License. You may obtain a copy of
|
7 |
+
* the License at
|
8 |
+
*
|
9 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10 |
+
*
|
11 |
+
* Unless required by applicable law or agreed to in writing, software
|
12 |
+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
13 |
+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
14 |
+
* License for the specific language governing permissions and limitations under
|
15 |
+
* the License.
|
16 |
+
*/
|
17 |
+
var __values = (this && this.__values) || function(o) {
|
18 |
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
19 |
+
if (m) return m.call(o);
|
20 |
+
if (o && typeof o.length === "number") return {
|
21 |
+
next: function () {
|
22 |
+
if (o && i >= o.length) o = void 0;
|
23 |
+
return { value: o && o[i++], done: !o };
|
24 |
+
}
|
25 |
+
};
|
26 |
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
27 |
+
};
|
28 |
+
var __read = (this && this.__read) || function (o, n) {
|
29 |
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
30 |
+
if (!m) return o;
|
31 |
+
var i = m.call(o), r, ar = [], e;
|
32 |
+
try {
|
33 |
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
34 |
+
}
|
35 |
+
catch (error) { e = { error: error }; }
|
36 |
+
finally {
|
37 |
+
try {
|
38 |
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
39 |
+
}
|
40 |
+
finally { if (e) throw e.error; }
|
41 |
+
}
|
42 |
+
return ar;
|
43 |
+
};
|
44 |
+
Object.defineProperty(exports, "__esModule", { value: true });
|
45 |
+
exports.applyEnvironmentVariables = void 0;
|
46 |
+
var environmentVariables = {
|
47 |
+
'COLAB_ROOT_REDIRECT': function (settings, value) {
|
48 |
+
settings.colabRedirect = value;
|
49 |
+
},
|
50 |
+
'COLAB_SERVER_PORT': function (settings, value) {
|
51 |
+
settings.serverPort = Number(value);
|
52 |
+
},
|
53 |
+
'COLAB_LANGUAGE_SERVER_PROXY': function (settings, value) {
|
54 |
+
settings.languageServerProxy = value;
|
55 |
+
},
|
56 |
+
'COLAB_SERVER_HOST': function (settings, value) {
|
57 |
+
settings.serverHost = value;
|
58 |
+
},
|
59 |
+
'COLAB_NEXT_JUPYTER_PORT': function (settings, value) {
|
60 |
+
settings.nextJupyterPort = Number(value);
|
61 |
+
},
|
62 |
+
'COLAB_DEBUG_ADAPTER_MUX_PATH': function (settings, value) {
|
63 |
+
settings.debugAdapterMultiplexerPath = value;
|
64 |
+
},
|
65 |
+
'COLAB_DATALAB_ROOT': function (settings, value) {
|
66 |
+
settings.datalabRoot = value;
|
67 |
+
},
|
68 |
+
'COLAB_KERNEL_MANAGER_PROXY_PORT': function (settings, value) {
|
69 |
+
settings.kernelManagerProxyPort = Number(value);
|
70 |
+
},
|
71 |
+
'COLAB_KERNEL_MANAGER_PROXY_HOST': function (settings, value) {
|
72 |
+
settings.kernelManagerProxyHost = value;
|
73 |
+
},
|
74 |
+
'COLAB_LANGUAGE_SERVER_PROXY_LSP_DIRS': function (settings, value) {
|
75 |
+
settings.languageServerProxyArgs = settings.languageServerProxyArgs || [];
|
76 |
+
settings.languageServerProxyArgs.push("--lsp_search_dirs=".concat(value));
|
77 |
+
},
|
78 |
+
'COLAB_LANGUAGE_SERVER_PROXY_ROOT_URL': function (settings, value) {
|
79 |
+
settings.languageServerProxyArgs = settings.languageServerProxyArgs || [];
|
80 |
+
settings.languageServerProxyArgs.push("--language_services_request_root_url=".concat(value));
|
81 |
+
},
|
82 |
+
'COLAB_LANGUAGE_SERVER_PROXY_REQUEST_TIMEOUT': function (settings, value) {
|
83 |
+
settings.languageServerProxyArgs = settings.languageServerProxyArgs || [];
|
84 |
+
settings.languageServerProxyArgs.push("--language_services_request_timeout=".concat(value));
|
85 |
+
},
|
86 |
+
'COLAB_JUPYTER_ALLOW_ORIGIN_PAT': function (settings, value) {
|
87 |
+
settings.jupyterArgs = settings.jupyterArgs || [];
|
88 |
+
settings.jupyterArgs.push("--NotebookApp.allow_origin_pat=\"".concat(value, "\""));
|
89 |
+
settings.jupyterArgs.push("--NotebookApp.allow_origin=");
|
90 |
+
settings.jupyterArgs.push("--NotebookApp.allow_credentials=True");
|
91 |
+
},
|
92 |
+
'COLAB_JUPYTER_DEBUG': function (settings) {
|
93 |
+
settings.jupyterArgs = settings.jupyterArgs || [];
|
94 |
+
settings.jupyterArgs.push("--debug");
|
95 |
+
},
|
96 |
+
'COLAB_JUPYTER_TRANSPORT': function (settings, value) {
|
97 |
+
settings.jupyterArgs = settings.jupyterArgs || [];
|
98 |
+
settings.jupyterArgs.push("--transport=\"".concat(value, "\""));
|
99 |
+
},
|
100 |
+
'COLAB_JUPYTER_IP': function (settings, value) {
|
101 |
+
settings.jupyterArgs = settings.jupyterArgs || [];
|
102 |
+
settings.jupyterArgs.push("--ip=".concat(value));
|
103 |
+
},
|
104 |
+
'COLAB_GATEWAY_CLIENT_URL': function (settings, value) {
|
105 |
+
settings.jupyterArgs = settings.jupyterArgs || [];
|
106 |
+
settings.jupyterArgs.push("--GatewayClient.url=".concat(value));
|
107 |
+
},
|
108 |
+
'COLAB_JUPYTER_ALLOW_REMOTE_ACCESS': function (settings, value) {
|
109 |
+
settings.jupyterArgs = settings.jupyterArgs || [];
|
110 |
+
settings.jupyterArgs.push("--NotebookApp.allow_remote_access=".concat(value));
|
111 |
+
},
|
112 |
+
'COLAB_JUPYTER_TOKEN': function (settings, value) {
|
113 |
+
settings.jupyterArgs = settings.jupyterArgs || [];
|
114 |
+
settings.jupyterArgs.push("--NotebookApp.token=".concat(value));
|
115 |
+
},
|
116 |
+
'COLAB_JUPYTER_DISABLE_CHECK_XSRF': function (settings, value) {
|
117 |
+
settings.jupyterArgs = settings.jupyterArgs || [];
|
118 |
+
settings.jupyterArgs.push("--NotebookApp.disable_check_xsrf=".concat(value));
|
119 |
+
},
|
120 |
+
'COLAB_FILE_HANDLER_ADDR': function (settings, value) {
|
121 |
+
settings.fileHandlerAddr = value;
|
122 |
+
},
|
123 |
+
};
|
124 |
+
/** Applies any environment variable overrides. */
|
125 |
+
function applyEnvironmentVariables(settings) {
|
126 |
+
var e_1, _a;
|
127 |
+
try {
|
128 |
+
for (var _b = __values(Object.entries(environmentVariables)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
129 |
+
var _d = __read(_c.value, 2), key = _d[0], apply = _d[1];
|
130 |
+
var override = process.env[key];
|
131 |
+
if (override !== undefined) {
|
132 |
+
apply(settings, override);
|
133 |
+
}
|
134 |
+
}
|
135 |
+
}
|
136 |
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
137 |
+
finally {
|
138 |
+
try {
|
139 |
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
140 |
+
}
|
141 |
+
finally { if (e_1) throw e_1.error; }
|
142 |
+
}
|
143 |
+
}
|
144 |
+
exports.applyEnvironmentVariables = applyEnvironmentVariables;
|
145 |
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwU2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90aGlyZF9wYXJ0eS9jb2xhYi9zb3VyY2VzL2FwcFNldHRpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0VILElBQU0sb0JBQW9CLEdBQUc7SUFDM0IscUJBQXFCLEVBQUUsVUFBQyxRQUFxQixFQUFFLEtBQWE7UUFDMUQsUUFBUSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDakMsQ0FBQztJQUNELG1CQUFtQixFQUFFLFVBQUMsUUFBcUIsRUFBRSxLQUFhO1FBQ3hELFFBQVEsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCw2QkFBNkIsRUFBRSxVQUFDLFFBQXFCLEVBQUUsS0FBYTtRQUNsRSxRQUFRLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxtQkFBbUIsRUFBRSxVQUFDLFFBQXFCLEVBQUUsS0FBYTtRQUN4RCxRQUFRLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBQ0QseUJBQXlCLEVBQUUsVUFBQyxRQUFxQixFQUFFLEtBQWE7UUFDOUQsUUFBUSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELDhCQUE4QixFQUFFLFVBQUMsUUFBcUIsRUFBRSxLQUFhO1FBQ25FLFFBQVEsQ0FBQywyQkFBMkIsR0FBRyxLQUFLLENBQUM7SUFDL0MsQ0FBQztJQUNELG9CQUFvQixFQUFFLFVBQUMsUUFBcUIsRUFBRSxLQUFhO1FBQ3pELFFBQVEsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFDRCxpQ0FBaUMsRUFBRSxVQUFDLFFBQXFCLEVBQUUsS0FBYTtRQUN0RSxRQUFRLENBQUMsc0JBQXNCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRCxpQ0FBaUMsRUFBRSxVQUFDLFFBQXFCLEVBQUUsS0FBYTtRQUN0RSxRQUFRLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFDRCxzQ0FBc0MsRUFBRSxVQUNwQyxRQUFxQixFQUFFLEtBQWE7UUFDdEMsUUFBUSxDQUFDLHVCQUF1QixHQUFHLFFBQVEsQ0FBQyx1QkFBdUIsSUFBSSxFQUFFLENBQUM7UUFDMUUsUUFBUSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyw0QkFBcUIsS0FBSyxDQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQ0Qsc0NBQXNDLEVBQUUsVUFDcEMsUUFBcUIsRUFBRSxLQUFhO1FBQ3RDLFFBQVEsQ0FBQyx1QkFBdUIsR0FBRyxRQUFRLENBQUMsdUJBQXVCLElBQUksRUFBRSxDQUFDO1FBQzFFLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQ2pDLCtDQUF3QyxLQUFLLENBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRCw2Q0FBNkMsRUFBRSxVQUMzQyxRQUFxQixFQUFFLEtBQWE7UUFDdEMsUUFBUSxDQUFDLHVCQUF1QixHQUFHLFFBQVEsQ0FBQyx1QkFBdUIsSUFBSSxFQUFFLENBQUM7UUFDMUUsUUFBUSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FDakMsOENBQXVDLEtBQUssQ0FBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELGdDQUFnQyxFQUFFLFVBQUMsUUFBcUIsRUFBRSxLQUFhO1FBQ3JFLFFBQVEsQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDbEQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsMkNBQW1DLEtBQUssT0FBRyxDQUFDLENBQUM7UUFDdkUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUN6RCxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFDRCxxQkFBcUIsRUFBRSxVQUFDLFFBQXFCO1FBQzNDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDbEQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNELHlCQUF5QixFQUFFLFVBQUMsUUFBcUIsRUFBRSxLQUFhO1FBQzlELFFBQVEsQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDbEQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsd0JBQWdCLEtBQUssT0FBRyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELGtCQUFrQixFQUFFLFVBQUMsUUFBcUIsRUFBRSxLQUFhO1FBQ3ZELFFBQVEsQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDbEQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBUSxLQUFLLENBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCwwQkFBMEIsRUFBRSxVQUFDLFFBQXFCLEVBQUUsS0FBYTtRQUMvRCxRQUFRLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1FBQ2xELFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLDhCQUF1QixLQUFLLENBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCxtQ0FBbUMsRUFDL0IsVUFBQyxRQUFxQixFQUFFLEtBQWE7UUFDbkMsUUFBUSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztRQUNsRCxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyw0Q0FBcUMsS0FBSyxDQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBQ0wscUJBQXFCLEVBQUUsVUFBQyxRQUFxQixFQUFFLEtBQWE7UUFDMUQsUUFBUSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztRQUNsRCxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyw4QkFBdUIsS0FBSyxDQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBQ0Qsa0NBQWtDLEVBQzlCLFVBQUMsUUFBcUIsRUFBRSxLQUFhO1FBQ25DLFFBQVEsQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDbEQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsMkNBQW9DLEtBQUssQ0FBRSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUNMLHlCQUF5QixFQUFFLFVBQUMsUUFBcUIsRUFBRSxLQUFhO1FBQzlELFFBQVEsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQ25DLENBQUM7Q0FDRixDQUFDO0FBRUYsa0RBQWtEO0FBQ2xELFNBQWdCLHlCQUF5QixDQUFDLFFBQXFCOzs7UUFDN0QsS0FBMkIsSUFBQSxLQUFBLFNBQUEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBLGdCQUFBLDRCQUFFLENBQUM7WUFBdkQsSUFBQSxLQUFBLG1CQUFZLEVBQVgsR0FBRyxRQUFBLEVBQUUsS0FBSyxRQUFBO1lBQ3BCLElBQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEMsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzNCLEtBQUssQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUM7Ozs7Ozs7OztBQUNILENBQUM7QUFQRCw4REFPQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxOCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90XG4gKiB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZlxuICogdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVRcbiAqIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZVxuICogTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXJcbiAqIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqIENvbmZpZ3VyYXRpb24gdmFsdWVzIHNoYXJlZCBhY3Jvc3MgdGhlIHdob2xlIGFwcC4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBBcHBTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBUaGUgcG9ydCB0aGF0IHRoZSBzZXJ2ZXIgc2hvdWxkIGxpc3RlbiB0by5cbiAgICovXG4gIHNlcnZlclBvcnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogSWYgc2V0LCBsaXN0ZW4gb24gdGhpcyBob3N0bmFtZS5cbiAgICovXG4gIHNlcnZlckhvc3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHN0YXRpYyBhcmd1bWVudHMgdG8gYmUgdXNlZCB3aGVuIGxhdW5jaGluZyBganVweXRlciBub3RlYm9va2AuXG4gICAqL1xuICBqdXB5dGVyQXJncz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJZiBwcm92aWRlZCwgdXNlIHRoaXMgYXMgYSBwcmVmaXggdG8gYWxsIGZpbGUgcGF0aHMgb3BlbmVkIG9uIHRoZVxuICAgKiBzZXJ2ZXIgc2lkZS4gVXNlZnVsIGZvciB0ZXN0aW5nIG91dHNpZGUgYSBEb2NrZXIgY29udGFpbmVyLlxuICAgKi9cbiAgZGF0YWxhYlJvb3Q6IHN0cmluZztcblxuICAvKipcbiAgICogSW5pdGlhbCBwb3J0IHRvIHVzZSB3aGVuIHNlYXJjaGluZyBmb3IgYSBmcmVlIEp1cHl0ZXIgcG9ydC5cbiAgICovXG4gIG5leHRKdXB5dGVyUG9ydDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBMb2NhbCBkaXJlY3Rvcnkgd2hlcmUga2VybmVscyBhcmUgc3RhcnRlZC5cbiAgICovXG4gIGNvbnRlbnREaXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBvcnQgdG8gdXNlIHRvIHByb3h5IGtlcm5lbCBtYW5hZ2VyIHdlYnNvY2tldCByZXF1ZXN0cy4gQSB2YWx1ZSBvZiAwXG4gICAqIGRpc2FibGVzIHByb3h5aW5nLlxuICAgKi9cbiAga2VybmVsTWFuYWdlclByb3h5UG9ydDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgaG9zdG5hbWUgKG9yIElQKSB0byB1c2UgdG8gcHJveHkga2VybmVsIG1hbmFnZXIgd2Vic29ja2V0IHJlcXVlc3RzLlxuICAgKiBBbiBlbXB0eSB2YWx1ZSB1c2VzIGxvY2FsaG9zdC5cbiAgICovXG4gIGtlcm5lbE1hbmFnZXJQcm94eUhvc3Q6IHN0cmluZztcblxuICAvKipcbiAgICogSWYgc2V0LCB0aGUgcGF0aCB0byB0aGUgREFQIG11bHRpcGxleGVyLlxuICAgKi9cbiAgZGVidWdBZGFwdGVyTXVsdGlwbGV4ZXJQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHNldCwgcmVkaXJlY3QgLyByZXF1ZXN0cyB0byBDb2xhYiwgd2l0aCB7anVweXRlcl9ob3N0fSByZXBsYWNlZCB3aXRoIHRoZVxuICAgKiBzZXJ2ZXIgaG9zdC5cbiAgICovXG4gIGNvbGFiUmVkaXJlY3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHNldCwgdGhlIHBhdGggYSBsYW5ndWFnZSBzZXJ2ZXIgcHJveHkgd2hpY2ggY2FuIGV4dGVuZCB0aGUgY2FwYWJpbGl0aWVzXG4gICAqIG9mIHRoZSBkZWZhdWx0IGxhbmd1YWdlIHNlcnZlci5cbiAgICovXG4gIGxhbmd1YWdlU2VydmVyUHJveHk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHNldCwgdGhlIGFyZ3MgdG8gcGFzcyB0byB0aGUgbGFuZ3VhZ2Ugc2VydmVyIHByb3h5LlxuICAgKiBUaGlzIGlzIG9ubHkgY29uc3VtZWQgaWYgYSBub24tZW1wdHkgcGF0aCBpcyBzZXQgZm9yIHRoZVxuICAgKiBsYW5ndWFnZVNlcnZlclByb3h5IHNldHRpbmcuXG4gICAqL1xuICBsYW5ndWFnZVNlcnZlclByb3h5QXJncz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgaG9zdDpwb3J0IGFkZHJlc3MgdG8gdXNlIGZvciBzZXJ2aW5nIGZpbGUgcmVxdWVzdHMuIEFuIGVtcHR5IHZhbHVlIHVzZXNcbiAgICogSnVweXRlcidzIGZpbGUgc2VydmVyLlxuICAgKi9cbiAgZmlsZUhhbmRsZXJBZGRyOiBzdHJpbmc7XG59XG5cbmNvbnN0IGVudmlyb25tZW50VmFyaWFibGVzID0ge1xuICAnQ09MQUJfUk9PVF9SRURJUkVDVCc6IChzZXR0aW5nczogQXBwU2V0dGluZ3MsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBzZXR0aW5ncy5jb2xhYlJlZGlyZWN0ID0gdmFsdWU7XG4gIH0sXG4gICdDT0xBQl9TRVJWRVJfUE9SVCc6IChzZXR0aW5nczogQXBwU2V0dGluZ3MsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBzZXR0aW5ncy5zZXJ2ZXJQb3J0ID0gTnVtYmVyKHZhbHVlKTtcbiAgfSxcbiAgJ0NPTEFCX0xBTkdVQUdFX1NFUlZFUl9QUk9YWSc6IChzZXR0aW5nczogQXBwU2V0dGluZ3MsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBzZXR0aW5ncy5sYW5ndWFnZVNlcnZlclByb3h5ID0gdmFsdWU7XG4gIH0sXG4gICdDT0xBQl9TRVJWRVJfSE9TVCc6IChzZXR0aW5nczogQXBwU2V0dGluZ3MsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBzZXR0aW5ncy5zZXJ2ZXJIb3N0ID0gdmFsdWU7XG4gIH0sXG4gICdDT0xBQl9ORVhUX0pVUFlURVJfUE9SVCc6IChzZXR0aW5nczogQXBwU2V0dGluZ3MsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBzZXR0aW5ncy5uZXh0SnVweXRlclBvcnQgPSBOdW1iZXIodmFsdWUpO1xuICB9LFxuICAnQ09MQUJfREVCVUdfQURBUFRFUl9NVVhfUEFUSCc6IChzZXR0aW5nczogQXBwU2V0dGluZ3MsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBzZXR0aW5ncy5kZWJ1Z0FkYXB0ZXJNdWx0aXBsZXhlclBhdGggPSB2YWx1ZTtcbiAgfSxcbiAgJ0NPTEFCX0RBVEFMQUJfUk9PVCc6IChzZXR0aW5nczogQXBwU2V0dGluZ3MsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBzZXR0aW5ncy5kYXRhbGFiUm9vdCA9IHZhbHVlO1xuICB9LFxuICAnQ09MQUJfS0VSTkVMX01BTkFHRVJfUFJPWFlfUE9SVCc6IChzZXR0aW5nczogQXBwU2V0dGluZ3MsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBzZXR0aW5ncy5rZXJuZWxNYW5hZ2VyUHJveHlQb3J0ID0gTnVtYmVyKHZhbHVlKTtcbiAgfSxcbiAgJ0NPTEFCX0tFUk5FTF9NQU5BR0VSX1BST1hZX0hPU1QnOiAoc2V0dGluZ3M6IEFwcFNldHRpbmdzLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgc2V0dGluZ3Mua2VybmVsTWFuYWdlclByb3h5SG9zdCA9IHZhbHVlO1xuICB9LFxuICAnQ09MQUJfTEFOR1VBR0VfU0VSVkVSX1BST1hZX0xTUF9ESVJTJzogKFxuICAgICAgc2V0dGluZ3M6IEFwcFNldHRpbmdzLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgc2V0dGluZ3MubGFuZ3VhZ2VTZXJ2ZXJQcm94eUFyZ3MgPSBzZXR0aW5ncy5sYW5ndWFnZVNlcnZlclByb3h5QXJncyB8fCBbXTtcbiAgICBzZXR0aW5ncy5sYW5ndWFnZVNlcnZlclByb3h5QXJncy5wdXNoKGAtLWxzcF9zZWFyY2hfZGlycz0ke3ZhbHVlfWApO1xuICB9LFxuICAnQ09MQUJfTEFOR1VBR0VfU0VSVkVSX1BST1hZX1JPT1RfVVJMJzogKFxuICAgICAgc2V0dGluZ3M6IEFwcFNldHRpbmdzLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgc2V0dGluZ3MubGFuZ3VhZ2VTZXJ2ZXJQcm94eUFyZ3MgPSBzZXR0aW5ncy5sYW5ndWFnZVNlcnZlclByb3h5QXJncyB8fCBbXTtcbiAgICBzZXR0aW5ncy5sYW5ndWFnZVNlcnZlclByb3h5QXJncy5wdXNoKFxuICAgICAgICBgLS1sYW5ndWFnZV9zZXJ2aWNlc19yZXF1ZXN0X3Jvb3RfdXJsPSR7dmFsdWV9YCk7XG4gIH0sXG4gICdDT0xBQl9MQU5HVUFHRV9TRVJWRVJfUFJPWFlfUkVRVUVTVF9USU1FT1VUJzogKFxuICAgICAgc2V0dGluZ3M6IEFwcFNldHRpbmdzLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgc2V0dGluZ3MubGFuZ3VhZ2VTZXJ2ZXJQcm94eUFyZ3MgPSBzZXR0aW5ncy5sYW5ndWFnZVNlcnZlclByb3h5QXJncyB8fCBbXTtcbiAgICBzZXR0aW5ncy5sYW5ndWFnZVNlcnZlclByb3h5QXJncy5wdXNoKFxuICAgICAgICBgLS1sYW5ndWFnZV9zZXJ2aWNlc19yZXF1ZXN0X3RpbWVvdXQ9JHt2YWx1ZX1gKTtcbiAgfSxcbiAgJ0NPTEFCX0pVUFlURVJfQUxMT1dfT1JJR0lOX1BBVCc6IChzZXR0aW5nczogQXBwU2V0dGluZ3MsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBzZXR0aW5ncy5qdXB5dGVyQXJncyA9IHNldHRpbmdzLmp1cHl0ZXJBcmdzIHx8IFtdO1xuICAgIHNldHRpbmdzLmp1cHl0ZXJBcmdzLnB1c2goYC0tTm90ZWJvb2tBcHAuYWxsb3dfb3JpZ2luX3BhdD1cIiR7dmFsdWV9XCJgKTtcbiAgICBzZXR0aW5ncy5qdXB5dGVyQXJncy5wdXNoKGAtLU5vdGVib29rQXBwLmFsbG93X29yaWdpbj1gKTtcbiAgICBzZXR0aW5ncy5qdXB5dGVyQXJncy5wdXNoKGAtLU5vdGVib29rQXBwLmFsbG93X2NyZWRlbnRpYWxzPVRydWVgKTtcbiAgfSxcbiAgJ0NPTEFCX0pVUFlURVJfREVCVUcnOiAoc2V0dGluZ3M6IEFwcFNldHRpbmdzKSA9PiB7XG4gICAgc2V0dGluZ3MuanVweXRlckFyZ3MgPSBzZXR0aW5ncy5qdXB5dGVyQXJncyB8fCBbXTtcbiAgICBzZXR0aW5ncy5qdXB5dGVyQXJncy5wdXNoKGAtLWRlYnVnYCk7XG4gIH0sXG4gICdDT0xBQl9KVVBZVEVSX1RSQU5TUE9SVCc6IChzZXR0aW5nczogQXBwU2V0dGluZ3MsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBzZXR0aW5ncy5qdXB5dGVyQXJncyA9IHNldHRpbmdzLmp1cHl0ZXJBcmdzIHx8IFtdO1xuICAgIHNldHRpbmdzLmp1cHl0ZXJBcmdzLnB1c2goYC0tdHJhbnNwb3J0PVwiJHt2YWx1ZX1cImApO1xuICB9LFxuICAnQ09MQUJfSlVQWVRFUl9JUCc6IChzZXR0aW5nczogQXBwU2V0dGluZ3MsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBzZXR0aW5ncy5qdXB5dGVyQXJncyA9IHNldHRpbmdzLmp1cHl0ZXJBcmdzIHx8IFtdO1xuICAgIHNldHRpbmdzLmp1cHl0ZXJBcmdzLnB1c2goYC0taXA9JHt2YWx1ZX1gKTtcbiAgfSxcbiAgJ0NPTEFCX0dBVEVXQVlfQ0xJRU5UX1VSTCc6IChzZXR0aW5nczogQXBwU2V0dGluZ3MsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBzZXR0aW5ncy5qdXB5dGVyQXJncyA9IHNldHRpbmdzLmp1cHl0ZXJBcmdzIHx8IFtdO1xuICAgIHNldHRpbmdzLmp1cHl0ZXJBcmdzLnB1c2goYC0tR2F0ZXdheUNsaWVudC51cmw9JHt2YWx1ZX1gKTtcbiAgfSxcbiAgJ0NPTEFCX0pVUFlURVJfQUxMT1dfUkVNT1RFX0FDQ0VTUyc6XG4gICAgICAoc2V0dGluZ3M6IEFwcFNldHRpbmdzLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHNldHRpbmdzLmp1cHl0ZXJBcmdzID0gc2V0dGluZ3MuanVweXRlckFyZ3MgfHwgW107XG4gICAgICAgIHNldHRpbmdzLmp1cHl0ZXJBcmdzLnB1c2goYC0tTm90ZWJvb2tBcHAuYWxsb3dfcmVtb3RlX2FjY2Vzcz0ke3ZhbHVlfWApO1xuICAgICAgfSxcbiAgJ0NPTEFCX0pVUFlURVJfVE9LRU4nOiAoc2V0dGluZ3M6IEFwcFNldHRpbmdzLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgc2V0dGluZ3MuanVweXRlckFyZ3MgPSBzZXR0aW5ncy5qdXB5dGVyQXJncyB8fCBbXTtcbiAgICBzZXR0aW5ncy5qdXB5dGVyQXJncy5wdXNoKGAtLU5vdGVib29rQXBwLnRva2VuPSR7dmFsdWV9YCk7XG4gIH0sXG4gICdDT0xBQl9KVVBZVEVSX0RJU0FCTEVfQ0hFQ0tfWFNSRic6XG4gICAgICAoc2V0dGluZ3M6IEFwcFNldHRpbmdzLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHNldHRpbmdzLmp1cHl0ZXJBcmdzID0gc2V0dGluZ3MuanVweXRlckFyZ3MgfHwgW107XG4gICAgICAgIHNldHRpbmdzLmp1cHl0ZXJBcmdzLnB1c2goYC0tTm90ZWJvb2tBcHAuZGlzYWJsZV9jaGVja194c3JmPSR7dmFsdWV9YCk7XG4gICAgICB9LFxuICAnQ09MQUJfRklMRV9IQU5ETEVSX0FERFInOiAoc2V0dGluZ3M6IEFwcFNldHRpbmdzLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgc2V0dGluZ3MuZmlsZUhhbmRsZXJBZGRyID0gdmFsdWU7XG4gIH0sXG59O1xuXG4vKiogQXBwbGllcyBhbnkgZW52aXJvbm1lbnQgdmFyaWFibGUgb3ZlcnJpZGVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RW52aXJvbm1lbnRWYXJpYWJsZXMoc2V0dGluZ3M6IEFwcFNldHRpbmdzKSB7XG4gIGZvciAoY29uc3QgW2tleSwgYXBwbHldIG9mIE9iamVjdC5lbnRyaWVzKGVudmlyb25tZW50VmFyaWFibGVzKSkge1xuICAgIGNvbnN0IG92ZXJyaWRlID0gcHJvY2Vzcy5lbnZba2V5XTtcbiAgICBpZiAob3ZlcnJpZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXBwbHkoc2V0dGluZ3MsIG92ZXJyaWRlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
web/config/basePath.json
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
""
|
web/config/settings.json
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"contentDir": "/content",
|
3 |
+
"datalabRoot": "",
|
4 |
+
"jupyterArgs": ["--debug"],
|
5 |
+
"nextJupyterPort": 9000,
|
6 |
+
"serverHost": "",
|
7 |
+
"serverPort": 8080
|
8 |
+
}
|
web/json_rpc.js
ADDED
@@ -0,0 +1,137 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"use strict";
|
2 |
+
var __values = (this && this.__values) || function(o) {
|
3 |
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
4 |
+
if (m) return m.call(o);
|
5 |
+
if (o && typeof o.length === "number") return {
|
6 |
+
next: function () {
|
7 |
+
if (o && i >= o.length) o = void 0;
|
8 |
+
return { value: o && o[i++], done: !o };
|
9 |
+
}
|
10 |
+
};
|
11 |
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
12 |
+
};
|
13 |
+
Object.defineProperty(exports, "__esModule", { value: true });
|
14 |
+
exports.encodeJsonRpc = exports.JsonRpcReader = void 0;
|
15 |
+
var CR = 13;
|
16 |
+
var LF = 10;
|
17 |
+
/**
|
18 |
+
* JSON RPC reader following the Debug Adapter Protocol message
|
19 |
+
* format which itself follows Chrome's V8 debugger protocol, originally
|
20 |
+
* documented at
|
21 |
+
* https://github.com/buggerjs/bugger-v8-client/blob/master/PROTOCOL.md#v8-debugger-protocol
|
22 |
+
*/
|
23 |
+
var JsonRpcReader = /** @class */ (function () {
|
24 |
+
function JsonRpcReader(callback) {
|
25 |
+
this.callback = callback;
|
26 |
+
this.position = 0;
|
27 |
+
this.allocationSize = 4096;
|
28 |
+
this.decoder = new TextDecoder();
|
29 |
+
this.buffer = new Uint8Array(this.allocationSize);
|
30 |
+
}
|
31 |
+
JsonRpcReader.prototype.append = function (data) {
|
32 |
+
// Grow the buffer if necessary to hold the data.
|
33 |
+
if (data.byteLength > (this.buffer.byteLength - this.position)) {
|
34 |
+
var requiredSize = this.position + data.byteLength;
|
35 |
+
var newSize = Math.ceil(requiredSize / this.allocationSize) * this.allocationSize;
|
36 |
+
var newBuffer = new Uint8Array(newSize);
|
37 |
+
newBuffer.set(this.buffer, 0);
|
38 |
+
this.buffer = newBuffer;
|
39 |
+
}
|
40 |
+
// Push new data onto end of the buffer.
|
41 |
+
this.buffer.set(data, this.position);
|
42 |
+
this.position += data.byteLength;
|
43 |
+
var parsedMessages = [];
|
44 |
+
while (true) {
|
45 |
+
// Parse all messages out of the buffer.
|
46 |
+
var message = this.tryReadMessage();
|
47 |
+
if (!message) {
|
48 |
+
break;
|
49 |
+
}
|
50 |
+
parsedMessages.push(message);
|
51 |
+
this.callback(message);
|
52 |
+
}
|
53 |
+
return parsedMessages;
|
54 |
+
};
|
55 |
+
JsonRpcReader.prototype.tryReadMessage = function () {
|
56 |
+
var e_1, _a;
|
57 |
+
// Loop through looking for \r\n\r\n in the buffer.
|
58 |
+
for (var i = 0; i < this.position - 4; ++i) {
|
59 |
+
// First \r\n indicates the end of the headers.
|
60 |
+
if (this.buffer[i] === CR && this.buffer[i + 1] === LF &&
|
61 |
+
this.buffer[i + 2] === CR && this.buffer[i + 3] === LF) {
|
62 |
+
// Parse each of the header lines out of the header block.
|
63 |
+
var headerLength = i + 4;
|
64 |
+
var headerBytes = this.buffer.subarray(0, headerLength);
|
65 |
+
var headerString = this.decoder.decode(headerBytes);
|
66 |
+
var headerLines = headerString.split('\r\n');
|
67 |
+
var headers = {};
|
68 |
+
try {
|
69 |
+
for (var headerLines_1 = (e_1 = void 0, __values(headerLines)), headerLines_1_1 = headerLines_1.next(); !headerLines_1_1.done; headerLines_1_1 = headerLines_1.next()) {
|
70 |
+
var line = headerLines_1_1.value;
|
71 |
+
if (!line.trim()) {
|
72 |
+
continue;
|
73 |
+
}
|
74 |
+
var pair = line.split(':');
|
75 |
+
if (pair.length !== 2) {
|
76 |
+
throw new Error("Illegal header value: ".concat(line));
|
77 |
+
}
|
78 |
+
headers[pair[0]] = pair[1].trim();
|
79 |
+
}
|
80 |
+
}
|
81 |
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
82 |
+
finally {
|
83 |
+
try {
|
84 |
+
if (headerLines_1_1 && !headerLines_1_1.done && (_a = headerLines_1.return)) _a.call(headerLines_1);
|
85 |
+
}
|
86 |
+
finally { if (e_1) throw e_1.error; }
|
87 |
+
}
|
88 |
+
var contentLengthString = headers['Content-Length'];
|
89 |
+
if (!contentLengthString) {
|
90 |
+
throw new Error('Missing Content-Length header.');
|
91 |
+
}
|
92 |
+
var contentLength = Number(contentLengthString);
|
93 |
+
if (isNaN(contentLength)) {
|
94 |
+
throw new Error("Header Content-Length not a number: ".concat(contentLengthString, "."));
|
95 |
+
}
|
96 |
+
var requiredLength = headerLength + contentLength;
|
97 |
+
if (requiredLength <= this.position) {
|
98 |
+
// This is just a view onto the current buffer.
|
99 |
+
var contentBytes = this.buffer.subarray(headerLength, headerLength + contentLength);
|
100 |
+
var content = this.decoder.decode(contentBytes);
|
101 |
+
this.buffer.copyWithin(0, headerLength + contentLength, this.position);
|
102 |
+
this.position = this.position - (headerLength + contentLength);
|
103 |
+
return { headers: headers, content: content };
|
104 |
+
}
|
105 |
+
}
|
106 |
+
}
|
107 |
+
return null;
|
108 |
+
};
|
109 |
+
return JsonRpcReader;
|
110 |
+
}());
|
111 |
+
exports.JsonRpcReader = JsonRpcReader;
|
112 |
+
/** Encodes the string content to a JSON RPC message. */
|
113 |
+
function encodeJsonRpc(content) {
|
114 |
+
var e_2, _a;
|
115 |
+
var headers = {
|
116 |
+
'Content-Length': String(new TextEncoder().encode(content).byteLength),
|
117 |
+
};
|
118 |
+
var requestString = '';
|
119 |
+
try {
|
120 |
+
for (var _b = __values(Object.keys(headers)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
121 |
+
var key = _c.value;
|
122 |
+
requestString += "".concat(key, ": ").concat(headers[key], "\r\n");
|
123 |
+
}
|
124 |
+
}
|
125 |
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
126 |
+
finally {
|
127 |
+
try {
|
128 |
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
129 |
+
}
|
130 |
+
finally { if (e_2) throw e_2.error; }
|
131 |
+
}
|
132 |
+
requestString += '\r\n';
|
133 |
+
requestString += content;
|
134 |
+
return requestString;
|
135 |
+
}
|
136 |
+
exports.encodeJsonRpc = encodeJsonRpc;
|
137 |
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbl9ycGMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90aGlyZF9wYXJ0eS9jb2xhYi9zb3VyY2VzL2pzb25fcnBjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ2QsSUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBUWQ7Ozs7O0dBS0c7QUFDSDtJQU1FLHVCQUFxQixRQUEyQztRQUEzQyxhQUFRLEdBQVIsUUFBUSxDQUFtQztRQUp4RCxhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQ1osbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsWUFBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFHM0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELDhCQUFNLEdBQU4sVUFBTyxJQUFnQjtRQUNyQixpREFBaUQ7UUFDakQsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDL0QsSUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ3JELElBQU0sT0FBTyxHQUNULElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQ3hFLElBQU0sU0FBUyxHQUFHLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUMxQixDQUFDO1FBQ0Qsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRWpDLElBQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUMxQixPQUFPLElBQUksRUFBRSxDQUFDO1lBQ1osd0NBQXdDO1lBQ3hDLElBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2IsTUFBTTtZQUNSLENBQUM7WUFDRCxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUNELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxzQ0FBYyxHQUFkOztRQUNFLG1EQUFtRDtRQUNuRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMzQywrQ0FBK0M7WUFDL0MsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFO2dCQUNsRCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQzNELDBEQUEwRDtnQkFDMUQsSUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDM0IsSUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUMxRCxJQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDdEQsSUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDL0MsSUFBTSxPQUFPLEdBQTRCLEVBQUUsQ0FBQzs7b0JBQzVDLEtBQW1CLElBQUEsK0JBQUEsU0FBQSxXQUFXLENBQUEsQ0FBQSx3Q0FBQSxpRUFBRSxDQUFDO3dCQUE1QixJQUFNLElBQUksd0JBQUE7d0JBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDOzRCQUNqQixTQUFTO3dCQUNYLENBQUM7d0JBQ0QsSUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDN0IsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDOzRCQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUF5QixJQUFJLENBQUUsQ0FBQyxDQUFDO3dCQUNuRCxDQUFDO3dCQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ3BDLENBQUM7Ozs7Ozs7OztnQkFDRCxJQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztvQkFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO2dCQUNwRCxDQUFDO2dCQUNELElBQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUNsRCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO29CQUN6QixNQUFNLElBQUksS0FBSyxDQUNYLDhDQUF1QyxtQkFBbUIsTUFBRyxDQUFDLENBQUM7Z0JBQ3JFLENBQUM7Z0JBQ0QsSUFBTSxjQUFjLEdBQUcsWUFBWSxHQUFHLGFBQWEsQ0FBQztnQkFDcEQsSUFBSSxjQUFjLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNwQywrQ0FBK0M7b0JBQy9DLElBQU0sWUFBWSxHQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxZQUFZLEdBQUcsYUFBYSxDQUFDLENBQUM7b0JBQ3JFLElBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNsRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FDbEIsQ0FBQyxFQUFFLFlBQVksR0FBRyxhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxZQUFZLEdBQUcsYUFBYSxDQUFDLENBQUM7b0JBQy9ELE9BQU8sRUFBQyxPQUFPLFNBQUEsRUFBRSxPQUFPLFNBQUEsRUFBQyxDQUFDO2dCQUM1QixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDSCxvQkFBQztBQUFELENBQUMsQUFuRkQsSUFtRkM7QUFuRlksc0NBQWE7QUFxRjFCLHdEQUF3RDtBQUN4RCxTQUFnQixhQUFhLENBQUMsT0FBZTs7SUFDM0MsSUFBTSxPQUFPLEdBQTRCO1FBQ3ZDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUM7S0FDdkUsQ0FBQztJQUNGLElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQzs7UUFDdkIsS0FBa0IsSUFBQSxLQUFBLFNBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQSxnQkFBQSw0QkFBRSxDQUFDO1lBQXBDLElBQU0sR0FBRyxXQUFBO1lBQ1osYUFBYSxJQUFJLFVBQUcsR0FBRyxlQUFLLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBTSxDQUFDO1FBQ2pELENBQUM7Ozs7Ozs7OztJQUNELGFBQWEsSUFBSSxNQUFNLENBQUM7SUFDeEIsYUFBYSxJQUFJLE9BQU8sQ0FBQztJQUN6QixPQUFPLGFBQWEsQ0FBQztBQUN2QixDQUFDO0FBWEQsc0NBV0MiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBDUiA9IDEzO1xuY29uc3QgTEYgPSAxMDtcblxuLyoqIE1lc3NhZ2VzIHJlY2VpdmVkIHZpYSB0aGUgcmVhZGVyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBKc29uUnBjTWVzc2FnZSB7XG4gIHJlYWRvbmx5IGhlYWRlcnM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9O1xuICByZWFkb25seSBjb250ZW50OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSlNPTiBSUEMgcmVhZGVyIGZvbGxvd2luZyB0aGUgRGVidWcgQWRhcHRlciBQcm90b2NvbCBtZXNzYWdlXG4gKiBmb3JtYXQgd2hpY2ggaXRzZWxmIGZvbGxvd3MgQ2hyb21lJ3MgVjggZGVidWdnZXIgcHJvdG9jb2wsIG9yaWdpbmFsbHlcbiAqIGRvY3VtZW50ZWQgYXRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9idWdnZXJqcy9idWdnZXItdjgtY2xpZW50L2Jsb2IvbWFzdGVyL1BST1RPQ09MLm1kI3Y4LWRlYnVnZ2VyLXByb3RvY29sXG4gKi9cbmV4cG9ydCBjbGFzcyBKc29uUnBjUmVhZGVyIHtcbiAgcHJpdmF0ZSBidWZmZXI6IFVpbnQ4QXJyYXk7XG4gIHByaXZhdGUgcG9zaXRpb246IG51bWJlciA9IDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsb2NhdGlvblNpemUgPSA0MDk2O1xuICBwcml2YXRlIHJlYWRvbmx5IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBjYWxsYmFjazogKG1lc3NhZ2U6IEpzb25ScGNNZXNzYWdlKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5idWZmZXIgPSBuZXcgVWludDhBcnJheSh0aGlzLmFsbG9jYXRpb25TaXplKTtcbiAgfVxuXG4gIGFwcGVuZChkYXRhOiBVaW50OEFycmF5KTogSnNvblJwY01lc3NhZ2VbXSB7XG4gICAgLy8gR3JvdyB0aGUgYnVmZmVyIGlmIG5lY2Vzc2FyeSB0byBob2xkIHRoZSBkYXRhLlxuICAgIGlmIChkYXRhLmJ5dGVMZW5ndGggPiAodGhpcy5idWZmZXIuYnl0ZUxlbmd0aCAtIHRoaXMucG9zaXRpb24pKSB7XG4gICAgICBjb25zdCByZXF1aXJlZFNpemUgPSB0aGlzLnBvc2l0aW9uICsgZGF0YS5ieXRlTGVuZ3RoO1xuICAgICAgY29uc3QgbmV3U2l6ZSA9XG4gICAgICAgICAgTWF0aC5jZWlsKHJlcXVpcmVkU2l6ZSAvIHRoaXMuYWxsb2NhdGlvblNpemUpICogdGhpcy5hbGxvY2F0aW9uU2l6ZTtcbiAgICAgIGNvbnN0IG5ld0J1ZmZlciA9IG5ldyBVaW50OEFycmF5KG5ld1NpemUpO1xuICAgICAgbmV3QnVmZmVyLnNldCh0aGlzLmJ1ZmZlciwgMCk7XG4gICAgICB0aGlzLmJ1ZmZlciA9IG5ld0J1ZmZlcjtcbiAgICB9XG4gICAgLy8gUHVzaCBuZXcgZGF0YSBvbnRvIGVuZCBvZiB0aGUgYnVmZmVyLlxuICAgIHRoaXMuYnVmZmVyLnNldChkYXRhLCB0aGlzLnBvc2l0aW9uKTtcbiAgICB0aGlzLnBvc2l0aW9uICs9IGRhdGEuYnl0ZUxlbmd0aDtcblxuICAgIGNvbnN0IHBhcnNlZE1lc3NhZ2VzID0gW107XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIC8vIFBhcnNlIGFsbCBtZXNzYWdlcyBvdXQgb2YgdGhlIGJ1ZmZlci5cbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnRyeVJlYWRNZXNzYWdlKCk7XG4gICAgICBpZiAoIW1lc3NhZ2UpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBwYXJzZWRNZXNzYWdlcy5wdXNoKG1lc3NhZ2UpO1xuICAgICAgdGhpcy5jYWxsYmFjayhtZXNzYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlZE1lc3NhZ2VzO1xuICB9XG5cbiAgdHJ5UmVhZE1lc3NhZ2UoKTogSnNvblJwY01lc3NhZ2V8bnVsbCB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIGxvb2tpbmcgZm9yIFxcclxcblxcclxcbiBpbiB0aGUgYnVmZmVyLlxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wb3NpdGlvbiAtIDQ7ICsraSkge1xuICAgICAgLy8gRmlyc3QgXFxyXFxuIGluZGljYXRlcyB0aGUgZW5kIG9mIHRoZSBoZWFkZXJzLlxuICAgICAgaWYgKHRoaXMuYnVmZmVyW2ldID09PSBDUiAmJiB0aGlzLmJ1ZmZlcltpICsgMV0gPT09IExGICYmXG4gICAgICAgICAgdGhpcy5idWZmZXJbaSArIDJdID09PSBDUiAmJiB0aGlzLmJ1ZmZlcltpICsgM10gPT09IExGKSB7XG4gICAgICAgIC8vIFBhcnNlIGVhY2ggb2YgdGhlIGhlYWRlciBsaW5lcyBvdXQgb2YgdGhlIGhlYWRlciBibG9jay5cbiAgICAgICAgY29uc3QgaGVhZGVyTGVuZ3RoID0gaSArIDQ7XG4gICAgICAgIGNvbnN0IGhlYWRlckJ5dGVzID0gdGhpcy5idWZmZXIuc3ViYXJyYXkoMCwgaGVhZGVyTGVuZ3RoKTtcbiAgICAgICAgY29uc3QgaGVhZGVyU3RyaW5nID0gdGhpcy5kZWNvZGVyLmRlY29kZShoZWFkZXJCeXRlcyk7XG4gICAgICAgIGNvbnN0IGhlYWRlckxpbmVzID0gaGVhZGVyU3RyaW5nLnNwbGl0KCdcXHJcXG4nKTtcbiAgICAgICAgY29uc3QgaGVhZGVyczoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGhlYWRlckxpbmVzKSB7XG4gICAgICAgICAgaWYgKCFsaW5lLnRyaW0oKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHBhaXIgPSBsaW5lLnNwbGl0KCc6Jyk7XG4gICAgICAgICAgaWYgKHBhaXIubGVuZ3RoICE9PSAyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYElsbGVnYWwgaGVhZGVyIHZhbHVlOiAke2xpbmV9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGhlYWRlcnNbcGFpclswXV0gPSBwYWlyWzFdLnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb250ZW50TGVuZ3RoU3RyaW5nID0gaGVhZGVyc1snQ29udGVudC1MZW5ndGgnXTtcbiAgICAgICAgaWYgKCFjb250ZW50TGVuZ3RoU3RyaW5nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIENvbnRlbnQtTGVuZ3RoIGhlYWRlci4nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb250ZW50TGVuZ3RoID0gTnVtYmVyKGNvbnRlbnRMZW5ndGhTdHJpbmcpO1xuICAgICAgICBpZiAoaXNOYU4oY29udGVudExlbmd0aCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBIZWFkZXIgQ29udGVudC1MZW5ndGggbm90IGEgbnVtYmVyOiAke2NvbnRlbnRMZW5ndGhTdHJpbmd9LmApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlcXVpcmVkTGVuZ3RoID0gaGVhZGVyTGVuZ3RoICsgY29udGVudExlbmd0aDtcbiAgICAgICAgaWYgKHJlcXVpcmVkTGVuZ3RoIDw9IHRoaXMucG9zaXRpb24pIHtcbiAgICAgICAgICAvLyBUaGlzIGlzIGp1c3QgYSB2aWV3IG9udG8gdGhlIGN1cnJlbnQgYnVmZmVyLlxuICAgICAgICAgIGNvbnN0IGNvbnRlbnRCeXRlcyA9XG4gICAgICAgICAgICAgIHRoaXMuYnVmZmVyLnN1YmFycmF5KGhlYWRlckxlbmd0aCwgaGVhZGVyTGVuZ3RoICsgY29udGVudExlbmd0aCk7XG4gICAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMuZGVjb2Rlci5kZWNvZGUoY29udGVudEJ5dGVzKTtcbiAgICAgICAgICB0aGlzLmJ1ZmZlci5jb3B5V2l0aGluKFxuICAgICAgICAgICAgICAwLCBoZWFkZXJMZW5ndGggKyBjb250ZW50TGVuZ3RoLCB0aGlzLnBvc2l0aW9uKTtcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbiAtIChoZWFkZXJMZW5ndGggKyBjb250ZW50TGVuZ3RoKTtcbiAgICAgICAgICByZXR1cm4ge2hlYWRlcnMsIGNvbnRlbnR9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKiBFbmNvZGVzIHRoZSBzdHJpbmcgY29udGVudCB0byBhIEpTT04gUlBDIG1lc3NhZ2UuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlSnNvblJwYyhjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBoZWFkZXJzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSA9IHtcbiAgICAnQ29udGVudC1MZW5ndGgnOiBTdHJpbmcobmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKGNvbnRlbnQpLmJ5dGVMZW5ndGgpLFxuICB9O1xuICBsZXQgcmVxdWVzdFN0cmluZyA9ICcnO1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhoZWFkZXJzKSkge1xuICAgIHJlcXVlc3RTdHJpbmcgKz0gYCR7a2V5fTogJHtoZWFkZXJzW2tleV19XFxyXFxuYDtcbiAgfVxuICByZXF1ZXN0U3RyaW5nICs9ICdcXHJcXG4nO1xuICByZXF1ZXN0U3RyaW5nICs9IGNvbnRlbnQ7XG4gIHJldHVybiByZXF1ZXN0U3RyaW5nO1xufVxuIl19
|
web/jupyter.js
ADDED
@@ -0,0 +1,214 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"use strict";
|
2 |
+
/*
|
3 |
+
* Copyright 2015 Google Inc. All rights reserved.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
6 |
+
* use this file except in compliance with the License. You may obtain a copy of
|
7 |
+
* the License at
|
8 |
+
*
|
9 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10 |
+
*
|
11 |
+
* Unless required by applicable law or agreed to in writing, software
|
12 |
+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
13 |
+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
14 |
+
* License for the specific language governing permissions and limitations under
|
15 |
+
* the License.
|
16 |
+
*/
|
17 |
+
var __values = (this && this.__values) || function(o) {
|
18 |
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
19 |
+
if (m) return m.call(o);
|
20 |
+
if (o && typeof o.length === "number") return {
|
21 |
+
next: function () {
|
22 |
+
if (o && i >= o.length) o = void 0;
|
23 |
+
return { value: o && o[i++], done: !o };
|
24 |
+
}
|
25 |
+
};
|
26 |
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
27 |
+
};
|
28 |
+
Object.defineProperty(exports, "__esModule", { value: true });
|
29 |
+
exports.handleRequest = exports.handleSocket = exports.close = exports.init = void 0;
|
30 |
+
var childProcess = require("child_process");
|
31 |
+
var httpProxy = require("http-proxy");
|
32 |
+
var path = require("path");
|
33 |
+
var logging = require("./logging");
|
34 |
+
/**
|
35 |
+
* Singleton tracking the jupyter server instance we manage.
|
36 |
+
*/
|
37 |
+
var jupyterServer = null;
|
38 |
+
/**
|
39 |
+
* The maximum number of times we'll restart jupyter; we set a limit to avoid
|
40 |
+
* users being stuck with a slow-crash-looping server.
|
41 |
+
*/
|
42 |
+
var remainingJupyterServerRestarts = 20;
|
43 |
+
/**
|
44 |
+
* The application settings instance.
|
45 |
+
*/
|
46 |
+
var appSettings;
|
47 |
+
/*
|
48 |
+
* This list of levels should match the ones used by Python:
|
49 |
+
* https://docs.python.org/3/library/logging.html#logging-levels
|
50 |
+
*/
|
51 |
+
var LogLevels;
|
52 |
+
(function (LogLevels) {
|
53 |
+
LogLevels["CRITICAL"] = "CRITICAL";
|
54 |
+
LogLevels["ERROR"] = "ERROR";
|
55 |
+
LogLevels["WARNING"] = "WARNING";
|
56 |
+
LogLevels["INFO"] = "INFO";
|
57 |
+
LogLevels["DEBUG"] = "DEBUG";
|
58 |
+
LogLevels["NOTSET"] = "NOTSET";
|
59 |
+
})(LogLevels || (LogLevels = {}));
|
60 |
+
function pipeOutput(stream) {
|
61 |
+
stream.setEncoding('utf8');
|
62 |
+
// The format we parse here corresponds to the log format we set in our
|
63 |
+
// jupyter configuration.
|
64 |
+
var logger = logging.getJupyterLogger();
|
65 |
+
stream.on('data', function (data) {
|
66 |
+
var e_1, _a;
|
67 |
+
try {
|
68 |
+
for (var _b = __values(data.split('\n')), _c = _b.next(); !_c.done; _c = _b.next()) {
|
69 |
+
var line = _c.value;
|
70 |
+
if (line.trim().length === 0) {
|
71 |
+
continue;
|
72 |
+
}
|
73 |
+
var parts = line.split('|', 3);
|
74 |
+
if (parts.length !== 3) {
|
75 |
+
// Non-logging messages (eg tracebacks) get logged as warnings.
|
76 |
+
logger.warn(line);
|
77 |
+
continue;
|
78 |
+
}
|
79 |
+
var level = parts[1];
|
80 |
+
var message = parts[2];
|
81 |
+
// We need to map Python's log levels to those used by bunyan.
|
82 |
+
if (level === LogLevels.CRITICAL || level === LogLevels.ERROR) {
|
83 |
+
logger.error(message);
|
84 |
+
}
|
85 |
+
else if (level === LogLevels.WARNING) {
|
86 |
+
logger.warn(message);
|
87 |
+
}
|
88 |
+
else if (level === LogLevels.INFO) {
|
89 |
+
logger.info(message);
|
90 |
+
}
|
91 |
+
else {
|
92 |
+
// We map DEBUG, NOTSET, and any unknown log levels to debug.
|
93 |
+
logger.debug(message);
|
94 |
+
}
|
95 |
+
}
|
96 |
+
}
|
97 |
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
98 |
+
finally {
|
99 |
+
try {
|
100 |
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
101 |
+
}
|
102 |
+
finally { if (e_1) throw e_1.error; }
|
103 |
+
}
|
104 |
+
});
|
105 |
+
}
|
106 |
+
function createJupyterServer() {
|
107 |
+
var e_2, _a;
|
108 |
+
if (!remainingJupyterServerRestarts) {
|
109 |
+
logging.getLogger().error('No jupyter restart attempts remaining.');
|
110 |
+
return;
|
111 |
+
}
|
112 |
+
remainingJupyterServerRestarts -= 1;
|
113 |
+
var port = appSettings.nextJupyterPort;
|
114 |
+
logging.getLogger().info('Launching Jupyter server at %d', port);
|
115 |
+
var jupyterArgs = appSettings.jupyterArgs || [];
|
116 |
+
function exitHandler(code, signal) {
|
117 |
+
if (jupyterServer) {
|
118 |
+
logging.getLogger().error('Jupyter process %d exited due to signal: %s', jupyterServer.childProcess.pid, signal);
|
119 |
+
}
|
120 |
+
else {
|
121 |
+
logging.getLogger().error('Jupyter process exit before server creation finished due to signal: %s', signal);
|
122 |
+
}
|
123 |
+
// We want to restart jupyter whenever it terminates.
|
124 |
+
createJupyterServer();
|
125 |
+
}
|
126 |
+
var contentDir = path.join(appSettings.datalabRoot, appSettings.contentDir);
|
127 |
+
var processArgs = ['notebook'].concat(jupyterArgs || []).concat([
|
128 |
+
"--port=".concat(port),
|
129 |
+
"--FileContentsManager.root_dir=".concat(appSettings.datalabRoot, "/"),
|
130 |
+
// TODO(b/136659627): Delete this line.
|
131 |
+
"--MappingKernelManager.root_dir=".concat(contentDir),
|
132 |
+
]);
|
133 |
+
var jupyterServerAddr = 'localhost';
|
134 |
+
try {
|
135 |
+
for (var jupyterArgs_1 = __values(jupyterArgs), jupyterArgs_1_1 = jupyterArgs_1.next(); !jupyterArgs_1_1.done; jupyterArgs_1_1 = jupyterArgs_1.next()) {
|
136 |
+
var flag = jupyterArgs_1_1.value;
|
137 |
+
// Extracts a string like '1.2.3.4' from the string '--ip=1.2.3.4'
|
138 |
+
var match = flag.match(/--ip=([^ ]+)/);
|
139 |
+
if (match) {
|
140 |
+
jupyterServerAddr = match[1];
|
141 |
+
break;
|
142 |
+
}
|
143 |
+
}
|
144 |
+
}
|
145 |
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
146 |
+
finally {
|
147 |
+
try {
|
148 |
+
if (jupyterArgs_1_1 && !jupyterArgs_1_1.done && (_a = jupyterArgs_1.return)) _a.call(jupyterArgs_1);
|
149 |
+
}
|
150 |
+
finally { if (e_2) throw e_2.error; }
|
151 |
+
}
|
152 |
+
logging.getLogger().info('Using jupyter server address %s', jupyterServerAddr);
|
153 |
+
var processOptions = {
|
154 |
+
detached: false,
|
155 |
+
env: process.env,
|
156 |
+
};
|
157 |
+
var serverProcess = childProcess.spawn('jupyter', processArgs, processOptions);
|
158 |
+
serverProcess.on('exit', exitHandler);
|
159 |
+
logging.getLogger().info('Jupyter process started with pid %d and args %j', serverProcess.pid, processArgs);
|
160 |
+
// Capture the output, so it can be piped for logging.
|
161 |
+
pipeOutput(serverProcess.stdout);
|
162 |
+
pipeOutput(serverProcess.stderr);
|
163 |
+
// Create the proxy.
|
164 |
+
var proxyTargetHost = appSettings.kernelManagerProxyHost || jupyterServerAddr;
|
165 |
+
var proxyTargetPort = appSettings.kernelManagerProxyPort || port;
|
166 |
+
var proxy = httpProxy.createProxyServer({ target: "http://".concat(proxyTargetHost, ":").concat(proxyTargetPort) });
|
167 |
+
proxy.on('error', errorHandler);
|
168 |
+
jupyterServer = { port: port, proxy: proxy, childProcess: serverProcess };
|
169 |
+
}
|
170 |
+
/**
|
171 |
+
* Initializes the Jupyter server manager.
|
172 |
+
*/
|
173 |
+
function init(settings) {
|
174 |
+
appSettings = settings;
|
175 |
+
createJupyterServer();
|
176 |
+
}
|
177 |
+
exports.init = init;
|
178 |
+
/**
|
179 |
+
* Closes the Jupyter server manager.
|
180 |
+
*/
|
181 |
+
function close() {
|
182 |
+
if (!jupyterServer) {
|
183 |
+
return;
|
184 |
+
}
|
185 |
+
var pid = jupyterServer.childProcess.pid;
|
186 |
+
logging.getLogger().info("jupyter close: PID: ".concat(pid));
|
187 |
+
jupyterServer.childProcess.kill('SIGHUP');
|
188 |
+
}
|
189 |
+
exports.close = close;
|
190 |
+
/** Proxy this socket request to jupyter. */
|
191 |
+
function handleSocket(request, socket, head) {
|
192 |
+
if (!jupyterServer) {
|
193 |
+
logging.getLogger().error('Jupyter server is not running.');
|
194 |
+
return;
|
195 |
+
}
|
196 |
+
jupyterServer.proxy.ws(request, socket, head);
|
197 |
+
}
|
198 |
+
exports.handleSocket = handleSocket;
|
199 |
+
/** Proxy this HTTP request to jupyter. */
|
200 |
+
function handleRequest(request, response) {
|
201 |
+
if (!jupyterServer) {
|
202 |
+
response.statusCode = 500;
|
203 |
+
response.end();
|
204 |
+
return;
|
205 |
+
}
|
206 |
+
jupyterServer.proxy.web(request, response, null);
|
207 |
+
}
|
208 |
+
exports.handleRequest = handleRequest;
|
209 |
+
function errorHandler(error, request, response) {
|
210 |
+
logging.getLogger().error(error, 'Jupyter server returned error.');
|
211 |
+
response.writeHead(500, 'Internal Server Error');
|
212 |
+
response.end();
|
213 |
+
}
|
214 |
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianVweXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RoaXJkX3BhcnR5L2NvbGFiL3NvdXJjZXMvanVweXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7Ozs7Ozs7Ozs7Ozs7O0FBRUgsNENBQThDO0FBRTlDLHNDQUF3QztBQUV4QywyQkFBNkI7QUFHN0IsbUNBQXFDO0FBUXJDOztHQUVHO0FBQ0gsSUFBSSxhQUFhLEdBQXVCLElBQUksQ0FBQztBQUU3Qzs7O0dBR0c7QUFDSCxJQUFJLDhCQUE4QixHQUFXLEVBQUUsQ0FBQztBQUVoRDs7R0FFRztBQUNILElBQUksV0FBd0IsQ0FBQztBQUU3Qjs7O0dBR0c7QUFDSCxJQUFLLFNBT0o7QUFQRCxXQUFLLFNBQVM7SUFDWixrQ0FBcUIsQ0FBQTtJQUNyQiw0QkFBZSxDQUFBO0lBQ2YsZ0NBQW1CLENBQUE7SUFDbkIsMEJBQWEsQ0FBQTtJQUNiLDRCQUFlLENBQUE7SUFDZiw4QkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBUEksU0FBUyxLQUFULFNBQVMsUUFPYjtBQUVELFNBQVMsVUFBVSxDQUFDLE1BQTZCO0lBQy9DLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFM0IsdUVBQXVFO0lBQ3ZFLHlCQUF5QjtJQUN6QixJQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFDLElBQVk7OztZQUM3QixLQUFtQixJQUFBLEtBQUEsU0FBQSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBLGdCQUFBLDRCQUFFLENBQUM7Z0JBQWpDLElBQU0sSUFBSSxXQUFBO2dCQUNiLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDN0IsU0FBUztnQkFDWCxDQUFDO2dCQUNELElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3ZCLCtEQUErRDtvQkFDL0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDbEIsU0FBUztnQkFDWCxDQUFDO2dCQUNELElBQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6Qiw4REFBOEQ7Z0JBQzlELElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQyxRQUFRLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDOUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDeEIsQ0FBQztxQkFBTSxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ3ZDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3ZCLENBQUM7cUJBQU0sSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNwQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN2QixDQUFDO3FCQUFNLENBQUM7b0JBQ04sNkRBQTZEO29CQUM3RCxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN4QixDQUFDO1lBQ0gsQ0FBQzs7Ozs7Ozs7O0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyxtQkFBbUI7O0lBQzFCLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUNwRSxPQUFPO0lBQ1QsQ0FBQztJQUNELDhCQUE4QixJQUFJLENBQUMsQ0FBQztJQUNwQyxJQUFNLElBQUksR0FBRyxXQUFXLENBQUMsZUFBZSxDQUFDO0lBQ3pDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakUsSUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7SUFFbEQsU0FBUyxXQUFXLENBQUMsSUFBWSxFQUFFLE1BQWM7UUFDL0MsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUNyQiw2Q0FBNkMsRUFDN0MsYUFBYSxDQUFDLFlBQVksQ0FBQyxHQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0MsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUNyQix3RUFBd0UsRUFDeEUsTUFBTSxDQUFDLENBQUM7UUFDZCxDQUFDO1FBQ0QscURBQXFEO1FBQ3JELG1CQUFtQixFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUUsSUFBTSxXQUFXLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNoRSxpQkFBVSxJQUFJLENBQUU7UUFDaEIseUNBQWtDLFdBQVcsQ0FBQyxXQUFXLE1BQUc7UUFDNUQsdUNBQXVDO1FBQ3ZDLDBDQUFtQyxVQUFVLENBQUU7S0FDaEQsQ0FBQyxDQUFDO0lBRUgsSUFBSSxpQkFBaUIsR0FBRyxXQUFXLENBQUM7O1FBQ3BDLEtBQW1CLElBQUEsZ0JBQUEsU0FBQSxXQUFXLENBQUEsd0NBQUEsaUVBQUUsQ0FBQztZQUE1QixJQUFNLElBQUksd0JBQUE7WUFDYixrRUFBa0U7WUFDbEUsSUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN6QyxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0IsTUFBTTtZQUNSLENBQUM7UUFDSCxDQUFDOzs7Ozs7Ozs7SUFDRCxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUNwQixpQ0FBaUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBRTFELElBQU0sY0FBYyxHQUFHO1FBQ3JCLFFBQVEsRUFBRSxLQUFLO1FBQ2YsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHO0tBQ2pCLENBQUM7SUFFRixJQUFNLGFBQWEsR0FDZixZQUFZLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDL0QsYUFBYSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdEMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FDcEIsaURBQWlELEVBQUUsYUFBYSxDQUFDLEdBQUksRUFDckUsV0FBVyxDQUFDLENBQUM7SUFFakIsc0RBQXNEO0lBQ3RELFVBQVUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVqQyxvQkFBb0I7SUFDcEIsSUFBTSxlQUFlLEdBQ2pCLFdBQVcsQ0FBQyxzQkFBc0IsSUFBSSxpQkFBaUIsQ0FBQztJQUM1RCxJQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsc0JBQXNCLElBQUksSUFBSSxDQUFDO0lBRW5FLElBQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxpQkFBaUIsQ0FDckMsRUFBQyxNQUFNLEVBQUUsaUJBQVUsZUFBZSxjQUFJLGVBQWUsQ0FBRSxFQUFDLENBQUMsQ0FBQztJQUM5RCxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUVoQyxhQUFhLEdBQUcsRUFBQyxJQUFJLE1BQUEsRUFBRSxLQUFLLE9BQUEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsSUFBSSxDQUFDLFFBQXFCO0lBQ3hDLFdBQVcsR0FBRyxRQUFRLENBQUM7SUFDdkIsbUJBQW1CLEVBQUUsQ0FBQztBQUN4QixDQUFDO0FBSEQsb0JBR0M7QUFFRDs7R0FFRztBQUNILFNBQWdCLEtBQUs7SUFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ25CLE9BQU87SUFDVCxDQUFDO0lBRUQsSUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUM7SUFDM0MsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyw4QkFBdUIsR0FBRyxDQUFFLENBQUMsQ0FBQztJQUN2RCxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBUkQsc0JBUUM7QUFFRCw0Q0FBNEM7QUFDNUMsU0FBZ0IsWUFBWSxDQUN4QixPQUE2QixFQUFFLE1BQWtCLEVBQUUsSUFBWTtJQUNqRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbkIsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQzVELE9BQU87SUFDVCxDQUFDO0lBQ0QsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNoRCxDQUFDO0FBUEQsb0NBT0M7QUFFRCwwQ0FBMEM7QUFDMUMsU0FBZ0IsYUFBYSxDQUN6QixPQUE2QixFQUFFLFFBQTZCO0lBQzlELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNuQixRQUFRLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztRQUMxQixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZixPQUFPO0lBQ1QsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQVRELHNDQVNDO0FBRUQsU0FBUyxZQUFZLENBQ2pCLEtBQVksRUFBRSxPQUE2QixFQUMzQyxRQUE2QjtJQUMvQixPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxnQ0FBZ0MsQ0FBQyxDQUFDO0lBRW5FLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLHVCQUF1QixDQUFDLENBQUM7SUFDakQsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdFxuICogdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2ZcbiAqIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUXG4gKiBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGVcbiAqIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyXG4gKiB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBjaGlsZFByb2Nlc3MgZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgKiBhcyBodHRwIGZyb20gJ2h0dHAnO1xuaW1wb3J0ICogYXMgaHR0cFByb3h5IGZyb20gJ2h0dHAtcHJveHknO1xuaW1wb3J0ICogYXMgbmV0IGZyb20gJ25ldCc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge0FwcFNldHRpbmdzfSBmcm9tICcuL2FwcFNldHRpbmdzJztcbmltcG9ydCAqIGFzIGxvZ2dpbmcgZnJvbSAnLi9sb2dnaW5nJztcblxuaW50ZXJmYWNlIEp1cHl0ZXJTZXJ2ZXIge1xuICBwb3J0OiBudW1iZXI7XG4gIGNoaWxkUHJvY2VzczogY2hpbGRQcm9jZXNzLkNoaWxkUHJvY2VzcztcbiAgcHJveHk6IGh0dHBQcm94eS5Qcm94eVNlcnZlcjtcbn1cblxuLyoqXG4gKiBTaW5nbGV0b24gdHJhY2tpbmcgdGhlIGp1cHl0ZXIgc2VydmVyIGluc3RhbmNlIHdlIG1hbmFnZS5cbiAqL1xubGV0IGp1cHl0ZXJTZXJ2ZXI6IEp1cHl0ZXJTZXJ2ZXJ8bnVsbCA9IG51bGw7XG5cbi8qKlxuICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHRpbWVzIHdlJ2xsIHJlc3RhcnQganVweXRlcjsgd2Ugc2V0IGEgbGltaXQgdG8gYXZvaWRcbiAqIHVzZXJzIGJlaW5nIHN0dWNrIHdpdGggYSBzbG93LWNyYXNoLWxvb3Bpbmcgc2VydmVyLlxuICovXG5sZXQgcmVtYWluaW5nSnVweXRlclNlcnZlclJlc3RhcnRzOiBudW1iZXIgPSAyMDtcblxuLyoqXG4gKiBUaGUgYXBwbGljYXRpb24gc2V0dGluZ3MgaW5zdGFuY2UuXG4gKi9cbmxldCBhcHBTZXR0aW5nczogQXBwU2V0dGluZ3M7XG5cbi8qXG4gKiBUaGlzIGxpc3Qgb2YgbGV2ZWxzIHNob3VsZCBtYXRjaCB0aGUgb25lcyB1c2VkIGJ5IFB5dGhvbjpcbiAqICAgaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2xvZ2dpbmcuaHRtbCNsb2dnaW5nLWxldmVsc1xuICovXG5lbnVtIExvZ0xldmVscyB7XG4gIENSSVRJQ0FMID0gJ0NSSVRJQ0FMJyxcbiAgRVJST1IgPSAnRVJST1InLFxuICBXQVJOSU5HID0gJ1dBUk5JTkcnLFxuICBJTkZPID0gJ0lORk8nLFxuICBERUJVRyA9ICdERUJVRycsXG4gIE5PVFNFVCA9ICdOT1RTRVQnLFxufVxuXG5mdW5jdGlvbiBwaXBlT3V0cHV0KHN0cmVhbTogTm9kZUpTLlJlYWRhYmxlU3RyZWFtKSB7XG4gIHN0cmVhbS5zZXRFbmNvZGluZygndXRmOCcpO1xuXG4gIC8vIFRoZSBmb3JtYXQgd2UgcGFyc2UgaGVyZSBjb3JyZXNwb25kcyB0byB0aGUgbG9nIGZvcm1hdCB3ZSBzZXQgaW4gb3VyXG4gIC8vIGp1cHl0ZXIgY29uZmlndXJhdGlvbi5cbiAgY29uc3QgbG9nZ2VyID0gbG9nZ2luZy5nZXRKdXB5dGVyTG9nZ2VyKCk7XG4gIHN0cmVhbS5vbignZGF0YScsIChkYXRhOiBzdHJpbmcpID0+IHtcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgZGF0YS5zcGxpdCgnXFxuJykpIHtcbiAgICAgIGlmIChsaW5lLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJ0cyA9IGxpbmUuc3BsaXQoJ3wnLCAzKTtcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDMpIHtcbiAgICAgICAgLy8gTm9uLWxvZ2dpbmcgbWVzc2FnZXMgKGVnIHRyYWNlYmFja3MpIGdldCBsb2dnZWQgYXMgd2FybmluZ3MuXG4gICAgICAgIGxvZ2dlci53YXJuKGxpbmUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxldmVsID0gcGFydHNbMV07XG4gICAgICBjb25zdCBtZXNzYWdlID0gcGFydHNbMl07XG4gICAgICAvLyBXZSBuZWVkIHRvIG1hcCBQeXRob24ncyBsb2cgbGV2ZWxzIHRvIHRob3NlIHVzZWQgYnkgYnVueWFuLlxuICAgICAgaWYgKGxldmVsID09PSBMb2dMZXZlbHMuQ1JJVElDQUwgfHwgbGV2ZWwgPT09IExvZ0xldmVscy5FUlJPUikge1xuICAgICAgICBsb2dnZXIuZXJyb3IobWVzc2FnZSk7XG4gICAgICB9IGVsc2UgaWYgKGxldmVsID09PSBMb2dMZXZlbHMuV0FSTklORykge1xuICAgICAgICBsb2dnZXIud2FybihtZXNzYWdlKTtcbiAgICAgIH0gZWxzZSBpZiAobGV2ZWwgPT09IExvZ0xldmVscy5JTkZPKSB7XG4gICAgICAgIGxvZ2dlci5pbmZvKG1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gV2UgbWFwIERFQlVHLCBOT1RTRVQsIGFuZCBhbnkgdW5rbm93biBsb2cgbGV2ZWxzIHRvIGRlYnVnLlxuICAgICAgICBsb2dnZXIuZGVidWcobWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlSnVweXRlclNlcnZlcigpIHtcbiAgaWYgKCFyZW1haW5pbmdKdXB5dGVyU2VydmVyUmVzdGFydHMpIHtcbiAgICBsb2dnaW5nLmdldExvZ2dlcigpLmVycm9yKCdObyBqdXB5dGVyIHJlc3RhcnQgYXR0ZW1wdHMgcmVtYWluaW5nLicpO1xuICAgIHJldHVybjtcbiAgfVxuICByZW1haW5pbmdKdXB5dGVyU2VydmVyUmVzdGFydHMgLT0gMTtcbiAgY29uc3QgcG9ydCA9IGFwcFNldHRpbmdzLm5leHRKdXB5dGVyUG9ydDtcbiAgbG9nZ2luZy5nZXRMb2dnZXIoKS5pbmZvKCdMYXVuY2hpbmcgSnVweXRlciBzZXJ2ZXIgYXQgJWQnLCBwb3J0KTtcbiAgY29uc3QganVweXRlckFyZ3MgPSBhcHBTZXR0aW5ncy5qdXB5dGVyQXJncyB8fCBbXTtcblxuICBmdW5jdGlvbiBleGl0SGFuZGxlcihjb2RlOiBudW1iZXIsIHNpZ25hbDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGp1cHl0ZXJTZXJ2ZXIpIHtcbiAgICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKCkuZXJyb3IoXG4gICAgICAgICAgJ0p1cHl0ZXIgcHJvY2VzcyAlZCBleGl0ZWQgZHVlIHRvIHNpZ25hbDogJXMnLFxuICAgICAgICAgIGp1cHl0ZXJTZXJ2ZXIuY2hpbGRQcm9jZXNzLnBpZCEsIHNpZ25hbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKCkuZXJyb3IoXG4gICAgICAgICAgJ0p1cHl0ZXIgcHJvY2VzcyBleGl0IGJlZm9yZSBzZXJ2ZXIgY3JlYXRpb24gZmluaXNoZWQgZHVlIHRvIHNpZ25hbDogJXMnLFxuICAgICAgICAgIHNpZ25hbCk7XG4gICAgfVxuICAgIC8vIFdlIHdhbnQgdG8gcmVzdGFydCBqdXB5dGVyIHdoZW5ldmVyIGl0IHRlcm1pbmF0ZXMuXG4gICAgY3JlYXRlSnVweXRlclNlcnZlcigpO1xuICB9XG5cbiAgY29uc3QgY29udGVudERpciA9IHBhdGguam9pbihhcHBTZXR0aW5ncy5kYXRhbGFiUm9vdCwgYXBwU2V0dGluZ3MuY29udGVudERpcik7XG4gIGNvbnN0IHByb2Nlc3NBcmdzID0gWydub3RlYm9vayddLmNvbmNhdChqdXB5dGVyQXJncyB8fCBbXSkuY29uY2F0KFtcbiAgICBgLS1wb3J0PSR7cG9ydH1gLFxuICAgIGAtLUZpbGVDb250ZW50c01hbmFnZXIucm9vdF9kaXI9JHthcHBTZXR0aW5ncy5kYXRhbGFiUm9vdH0vYCxcbiAgICAvLyBUT0RPKGIvMTM2NjU5NjI3KTogRGVsZXRlIHRoaXMgbGluZS5cbiAgICBgLS1NYXBwaW5nS2VybmVsTWFuYWdlci5yb290X2Rpcj0ke2NvbnRlbnREaXJ9YCxcbiAgXSk7XG5cbiAgbGV0IGp1cHl0ZXJTZXJ2ZXJBZGRyID0gJ2xvY2FsaG9zdCc7XG4gIGZvciAoY29uc3QgZmxhZyBvZiBqdXB5dGVyQXJncykge1xuICAgIC8vIEV4dHJhY3RzIGEgc3RyaW5nIGxpa2UgJzEuMi4zLjQnIGZyb20gdGhlIHN0cmluZyAnLS1pcD0xLjIuMy40J1xuICAgIGNvbnN0IG1hdGNoID0gZmxhZy5tYXRjaCgvLS1pcD0oW14gXSspLyk7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICBqdXB5dGVyU2VydmVyQWRkciA9IG1hdGNoWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGxvZ2dpbmcuZ2V0TG9nZ2VyKCkuaW5mbyhcbiAgICAgICdVc2luZyBqdXB5dGVyIHNlcnZlciBhZGRyZXNzICVzJywganVweXRlclNlcnZlckFkZHIpO1xuXG4gIGNvbnN0IHByb2Nlc3NPcHRpb25zID0ge1xuICAgIGRldGFjaGVkOiBmYWxzZSxcbiAgICBlbnY6IHByb2Nlc3MuZW52LFxuICB9O1xuXG4gIGNvbnN0IHNlcnZlclByb2Nlc3MgPVxuICAgICAgY2hpbGRQcm9jZXNzLnNwYXduKCdqdXB5dGVyJywgcHJvY2Vzc0FyZ3MsIHByb2Nlc3NPcHRpb25zKTtcbiAgc2VydmVyUHJvY2Vzcy5vbignZXhpdCcsIGV4aXRIYW5kbGVyKTtcbiAgbG9nZ2luZy5nZXRMb2dnZXIoKS5pbmZvKFxuICAgICAgJ0p1cHl0ZXIgcHJvY2VzcyBzdGFydGVkIHdpdGggcGlkICVkIGFuZCBhcmdzICVqJywgc2VydmVyUHJvY2Vzcy5waWQhLFxuICAgICAgcHJvY2Vzc0FyZ3MpO1xuXG4gIC8vIENhcHR1cmUgdGhlIG91dHB1dCwgc28gaXQgY2FuIGJlIHBpcGVkIGZvciBsb2dnaW5nLlxuICBwaXBlT3V0cHV0KHNlcnZlclByb2Nlc3Muc3Rkb3V0KTtcbiAgcGlwZU91dHB1dChzZXJ2ZXJQcm9jZXNzLnN0ZGVycik7XG5cbiAgLy8gQ3JlYXRlIHRoZSBwcm94eS5cbiAgY29uc3QgcHJveHlUYXJnZXRIb3N0ID1cbiAgICAgIGFwcFNldHRpbmdzLmtlcm5lbE1hbmFnZXJQcm94eUhvc3QgfHwganVweXRlclNlcnZlckFkZHI7XG4gIGNvbnN0IHByb3h5VGFyZ2V0UG9ydCA9IGFwcFNldHRpbmdzLmtlcm5lbE1hbmFnZXJQcm94eVBvcnQgfHwgcG9ydDtcblxuICBjb25zdCBwcm94eSA9IGh0dHBQcm94eS5jcmVhdGVQcm94eVNlcnZlcihcbiAgICAgIHt0YXJnZXQ6IGBodHRwOi8vJHtwcm94eVRhcmdldEhvc3R9OiR7cHJveHlUYXJnZXRQb3J0fWB9KTtcbiAgcHJveHkub24oJ2Vycm9yJywgZXJyb3JIYW5kbGVyKTtcblxuICBqdXB5dGVyU2VydmVyID0ge3BvcnQsIHByb3h5LCBjaGlsZFByb2Nlc3M6IHNlcnZlclByb2Nlc3N9O1xufVxuXG4vKipcbiAqIEluaXRpYWxpemVzIHRoZSBKdXB5dGVyIHNlcnZlciBtYW5hZ2VyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5pdChzZXR0aW5nczogQXBwU2V0dGluZ3MpOiB2b2lkIHtcbiAgYXBwU2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgY3JlYXRlSnVweXRlclNlcnZlcigpO1xufVxuXG4vKipcbiAqIENsb3NlcyB0aGUgSnVweXRlciBzZXJ2ZXIgbWFuYWdlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlKCk6IHZvaWQge1xuICBpZiAoIWp1cHl0ZXJTZXJ2ZXIpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwaWQgPSBqdXB5dGVyU2VydmVyLmNoaWxkUHJvY2Vzcy5waWQ7XG4gIGxvZ2dpbmcuZ2V0TG9nZ2VyKCkuaW5mbyhganVweXRlciBjbG9zZTogUElEOiAke3BpZH1gKTtcbiAganVweXRlclNlcnZlci5jaGlsZFByb2Nlc3Mua2lsbCgnU0lHSFVQJyk7XG59XG5cbi8qKiBQcm94eSB0aGlzIHNvY2tldCByZXF1ZXN0IHRvIGp1cHl0ZXIuICovXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlU29ja2V0KFxuICAgIHJlcXVlc3Q6IGh0dHAuSW5jb21pbmdNZXNzYWdlLCBzb2NrZXQ6IG5ldC5Tb2NrZXQsIGhlYWQ6IEJ1ZmZlcikge1xuICBpZiAoIWp1cHl0ZXJTZXJ2ZXIpIHtcbiAgICBsb2dnaW5nLmdldExvZ2dlcigpLmVycm9yKCdKdXB5dGVyIHNlcnZlciBpcyBub3QgcnVubmluZy4nKTtcbiAgICByZXR1cm47XG4gIH1cbiAganVweXRlclNlcnZlci5wcm94eS53cyhyZXF1ZXN0LCBzb2NrZXQsIGhlYWQpO1xufVxuXG4vKiogUHJveHkgdGhpcyBIVFRQIHJlcXVlc3QgdG8ganVweXRlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVSZXF1ZXN0KFxuICAgIHJlcXVlc3Q6IGh0dHAuSW5jb21pbmdNZXNzYWdlLCByZXNwb25zZTogaHR0cC5TZXJ2ZXJSZXNwb25zZSkge1xuICBpZiAoIWp1cHl0ZXJTZXJ2ZXIpIHtcbiAgICByZXNwb25zZS5zdGF0dXNDb2RlID0gNTAwO1xuICAgIHJlc3BvbnNlLmVuZCgpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGp1cHl0ZXJTZXJ2ZXIucHJveHkud2ViKHJlcXVlc3QsIHJlc3BvbnNlLCBudWxsKTtcbn1cblxuZnVuY3Rpb24gZXJyb3JIYW5kbGVyKFxuICAgIGVycm9yOiBFcnJvciwgcmVxdWVzdDogaHR0cC5JbmNvbWluZ01lc3NhZ2UsXG4gICAgcmVzcG9uc2U6IGh0dHAuU2VydmVyUmVzcG9uc2UpIHtcbiAgbG9nZ2luZy5nZXRMb2dnZXIoKS5lcnJvcihlcnJvciwgJ0p1cHl0ZXIgc2VydmVyIHJldHVybmVkIGVycm9yLicpO1xuXG4gIHJlc3BvbnNlLndyaXRlSGVhZCg1MDAsICdJbnRlcm5hbCBTZXJ2ZXIgRXJyb3InKTtcbiAgcmVzcG9uc2UuZW5kKCk7XG59XG4iXX0=
|
web/logging.js
ADDED
@@ -0,0 +1,130 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"use strict";
|
2 |
+
/*
|
3 |
+
* Copyright 2015 Google Inc. All rights reserved.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
6 |
+
* use this file except in compliance with the License. You may obtain a copy of
|
7 |
+
* the License at
|
8 |
+
*
|
9 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10 |
+
*
|
11 |
+
* Unless required by applicable law or agreed to in writing, software
|
12 |
+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
13 |
+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
14 |
+
* License for the specific language governing permissions and limitations under
|
15 |
+
* the License.
|
16 |
+
*/
|
17 |
+
var __values = (this && this.__values) || function(o) {
|
18 |
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
19 |
+
if (m) return m.call(o);
|
20 |
+
if (o && typeof o.length === "number") return {
|
21 |
+
next: function () {
|
22 |
+
if (o && i >= o.length) o = void 0;
|
23 |
+
return { value: o && o[i++], done: !o };
|
24 |
+
}
|
25 |
+
};
|
26 |
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
27 |
+
};
|
28 |
+
Object.defineProperty(exports, "__esModule", { value: true });
|
29 |
+
exports.initializeLoggers = exports.logRequest = exports.getJupyterLogger = exports.getLogger = void 0;
|
30 |
+
var bunyan = require("bunyan");
|
31 |
+
var path = require("path");
|
32 |
+
// We import the bunyan-rotating-file-stream package, which exports a
|
33 |
+
// constructor as a single object; we use lint disables here to make the usage
|
34 |
+
// below look reasonable.
|
35 |
+
//
|
36 |
+
// tslint:disable-next-line:no-require-imports variable-name enforce-name-casing
|
37 |
+
var RotatingFileStream = require('bunyan-rotating-file-stream');
|
38 |
+
var logger = null;
|
39 |
+
var requestLogger = null;
|
40 |
+
var jupyterLogger = null;
|
41 |
+
/**
|
42 |
+
* Gets the logger for generating debug logs.
|
43 |
+
* @returns the logger configured for debugging logging.
|
44 |
+
*/
|
45 |
+
function getLogger() {
|
46 |
+
return logger;
|
47 |
+
}
|
48 |
+
exports.getLogger = getLogger;
|
49 |
+
/**
|
50 |
+
* Gets the logger for generating Jupyter logs.
|
51 |
+
* @returns the logger configured for Jupyter logging.
|
52 |
+
*/
|
53 |
+
function getJupyterLogger() {
|
54 |
+
return jupyterLogger;
|
55 |
+
}
|
56 |
+
exports.getJupyterLogger = getJupyterLogger;
|
57 |
+
/**
|
58 |
+
* Logs a request and the corresponding response.
|
59 |
+
* @param request the request to be logged.
|
60 |
+
* @param response the response to be logged.
|
61 |
+
*/
|
62 |
+
function logRequest(request, response) {
|
63 |
+
requestLogger.debug({ url: request.url, method: request.method }, 'Received a new request');
|
64 |
+
response.on('finish', function () {
|
65 |
+
requestLogger.debug({
|
66 |
+
url: request.url,
|
67 |
+
method: request.method,
|
68 |
+
status: response.statusCode
|
69 |
+
});
|
70 |
+
});
|
71 |
+
}
|
72 |
+
exports.logRequest = logRequest;
|
73 |
+
/**
|
74 |
+
* Initializes loggers used within the application.
|
75 |
+
*/
|
76 |
+
function initializeLoggers(settings) {
|
77 |
+
var e_1, _a;
|
78 |
+
// We configure our loggers as follows:
|
79 |
+
// * our base logger tags all log records with `"name":"app"`, and sends logs
|
80 |
+
// to stderr (including logs of all children)
|
81 |
+
// * one child logger adds `"type":"request"`, and records method/URL for all
|
82 |
+
// HTTP requests to the app, and method/URL/response code for all responses
|
83 |
+
// * one child logger adds `"type":"jupyter"`, and records all messages from
|
84 |
+
// the jupyter notebook server. These logs are also sent to a file on disk
|
85 |
+
// (to assist user debugging).
|
86 |
+
//
|
87 |
+
// For more about bunyan, see:
|
88 |
+
// https://github.com/trentm/node-bunyan/tree/f21007d46c0e64072617380b70d3f542368318a8
|
89 |
+
var jupyterLogPath = path.join(settings.datalabRoot, '/var/colab/app.log');
|
90 |
+
logger = bunyan.createLogger({
|
91 |
+
name: 'app',
|
92 |
+
streams: [
|
93 |
+
{ level: 'debug', type: 'stream', stream: process.stderr },
|
94 |
+
]
|
95 |
+
});
|
96 |
+
requestLogger = logger.child({ type: 'request' });
|
97 |
+
jupyterLogger = logger.child({
|
98 |
+
type: 'jupyter',
|
99 |
+
streams: [{
|
100 |
+
level: 'info',
|
101 |
+
type: 'stream',
|
102 |
+
stream: new RotatingFileStream({
|
103 |
+
path: jupyterLogPath,
|
104 |
+
rotateExisting: false,
|
105 |
+
threshold: '2m',
|
106 |
+
totalSize: '20m'
|
107 |
+
}),
|
108 |
+
}]
|
109 |
+
});
|
110 |
+
// Omit superfluous fields, unless using the bunyan CLI to make logs human
|
111 |
+
// readable, because the CLI requires them.
|
112 |
+
if (process.env['COLAB_HUMAN_READABLE_NODE_LOGS'] !== '1') {
|
113 |
+
try {
|
114 |
+
for (var _b = __values([logger, jupyterLogger, requestLogger]), _c = _b.next(); !_c.done; _c = _b.next()) {
|
115 |
+
var logs = _c.value;
|
116 |
+
delete logs.fields['hostname'];
|
117 |
+
delete logs.fields['name'];
|
118 |
+
}
|
119 |
+
}
|
120 |
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
121 |
+
finally {
|
122 |
+
try {
|
123 |
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
124 |
+
}
|
125 |
+
finally { if (e_1) throw e_1.error; }
|
126 |
+
}
|
127 |
+
}
|
128 |
+
}
|
129 |
+
exports.initializeLoggers = initializeLoggers;
|
130 |
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RoaXJkX3BhcnR5L2NvbGFiL3NvdXJjZXMvbG9nZ2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7Ozs7Ozs7Ozs7Ozs7O0FBRUgsK0JBQWlDO0FBRWpDLDJCQUE2QjtBQUk3QixxRUFBcUU7QUFDckUsOEVBQThFO0FBQzlFLHlCQUF5QjtBQUN6QixFQUFFO0FBQ0YsZ0ZBQWdGO0FBQ2hGLElBQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLDZCQUE2QixDQUFDLENBQUM7QUFFbEUsSUFBSSxNQUFNLEdBQXdCLElBQUksQ0FBQztBQUN2QyxJQUFJLGFBQWEsR0FBd0IsSUFBSSxDQUFDO0FBQzlDLElBQUksYUFBYSxHQUF3QixJQUFJLENBQUM7QUFFOUM7OztHQUdHO0FBQ0gsU0FBZ0IsU0FBUztJQUN2QixPQUFPLE1BQU8sQ0FBQztBQUNqQixDQUFDO0FBRkQsOEJBRUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixnQkFBZ0I7SUFDOUIsT0FBTyxhQUFjLENBQUM7QUFDeEIsQ0FBQztBQUZELDRDQUVDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLFVBQVUsQ0FDdEIsT0FBNkIsRUFBRSxRQUE2QjtJQUM5RCxhQUFjLENBQUMsS0FBSyxDQUNoQixFQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFDLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztJQUMxRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRTtRQUNwQixhQUFjLENBQUMsS0FBSyxDQUFDO1lBQ25CLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztZQUNoQixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDdEIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxVQUFVO1NBQzVCLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQVhELGdDQVdDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxRQUFxQjs7SUFDckQsdUNBQXVDO0lBQ3ZDLDhFQUE4RTtJQUM5RSxnREFBZ0Q7SUFDaEQsOEVBQThFO0lBQzlFLDhFQUE4RTtJQUM5RSw2RUFBNkU7SUFDN0UsNkVBQTZFO0lBQzdFLGlDQUFpQztJQUNqQyxFQUFFO0lBQ0YsOEJBQThCO0lBQzlCLHdGQUF3RjtJQUN4RixJQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUM3RSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUMzQixJQUFJLEVBQUUsS0FBSztRQUNYLE9BQU8sRUFBRTtZQUNQLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFDO1NBQ3pEO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsYUFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQztJQUNoRCxhQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMzQixJQUFJLEVBQUUsU0FBUztRQUNmLE9BQU8sRUFBRSxDQUFDO2dCQUNSLEtBQUssRUFBRSxNQUFNO2dCQUNiLElBQUksRUFBRSxRQUFRO2dCQUNkLE1BQU0sRUFBRSxJQUFJLGtCQUFrQixDQUFDO29CQUM3QixJQUFJLEVBQUUsY0FBYztvQkFDcEIsY0FBYyxFQUFFLEtBQUs7b0JBQ3JCLFNBQVMsRUFBRSxJQUFJO29CQUNmLFNBQVMsRUFBRSxLQUFLO2lCQUNqQixDQUFDO2FBQ0gsQ0FBQztLQUNILENBQUMsQ0FBQztJQUNILDBFQUEwRTtJQUMxRSwyQ0FBMkM7SUFDM0MsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7O1lBQzFELEtBQW1CLElBQUEsS0FBQSxTQUFBLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQSxnQkFBQSw0QkFBRSxDQUFDO2dCQUF2RCxJQUFNLElBQUksV0FBQTtnQkFDYixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQy9CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3QixDQUFDOzs7Ozs7Ozs7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQXpDRCw4Q0F5Q0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdFxuICogdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2ZcbiAqIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUXG4gKiBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGVcbiAqIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyXG4gKiB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBidW55YW4gZnJvbSAnYnVueWFuJztcbmltcG9ydCAqIGFzIGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge0FwcFNldHRpbmdzfSBmcm9tICcuL2FwcFNldHRpbmdzJztcblxuLy8gV2UgaW1wb3J0IHRoZSBidW55YW4tcm90YXRpbmctZmlsZS1zdHJlYW0gcGFja2FnZSwgd2hpY2ggZXhwb3J0cyBhXG4vLyBjb25zdHJ1Y3RvciBhcyBhIHNpbmdsZSBvYmplY3Q7IHdlIHVzZSBsaW50IGRpc2FibGVzIGhlcmUgdG8gbWFrZSB0aGUgdXNhZ2Vcbi8vIGJlbG93IGxvb2sgcmVhc29uYWJsZS5cbi8vXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tcmVxdWlyZS1pbXBvcnRzIHZhcmlhYmxlLW5hbWUgZW5mb3JjZS1uYW1lLWNhc2luZ1xuY29uc3QgUm90YXRpbmdGaWxlU3RyZWFtID0gcmVxdWlyZSgnYnVueWFuLXJvdGF0aW5nLWZpbGUtc3RyZWFtJyk7XG5cbmxldCBsb2dnZXI6IGJ1bnlhbi5JTG9nZ2VyfG51bGwgPSBudWxsO1xubGV0IHJlcXVlc3RMb2dnZXI6IGJ1bnlhbi5JTG9nZ2VyfG51bGwgPSBudWxsO1xubGV0IGp1cHl0ZXJMb2dnZXI6IGJ1bnlhbi5JTG9nZ2VyfG51bGwgPSBudWxsO1xuXG4vKipcbiAqIEdldHMgdGhlIGxvZ2dlciBmb3IgZ2VuZXJhdGluZyBkZWJ1ZyBsb2dzLlxuICogQHJldHVybnMgdGhlIGxvZ2dlciBjb25maWd1cmVkIGZvciBkZWJ1Z2dpbmcgbG9nZ2luZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExvZ2dlcigpOiBidW55YW4uSUxvZ2dlciB7XG4gIHJldHVybiBsb2dnZXIhO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGxvZ2dlciBmb3IgZ2VuZXJhdGluZyBKdXB5dGVyIGxvZ3MuXG4gKiBAcmV0dXJucyB0aGUgbG9nZ2VyIGNvbmZpZ3VyZWQgZm9yIEp1cHl0ZXIgbG9nZ2luZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEp1cHl0ZXJMb2dnZXIoKTogYnVueWFuLklMb2dnZXIge1xuICByZXR1cm4ganVweXRlckxvZ2dlciE7XG59XG5cbi8qKlxuICogTG9ncyBhIHJlcXVlc3QgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlLlxuICogQHBhcmFtIHJlcXVlc3QgdGhlIHJlcXVlc3QgdG8gYmUgbG9nZ2VkLlxuICogQHBhcmFtIHJlc3BvbnNlIHRoZSByZXNwb25zZSB0byBiZSBsb2dnZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2dSZXF1ZXN0KFxuICAgIHJlcXVlc3Q6IGh0dHAuSW5jb21pbmdNZXNzYWdlLCByZXNwb25zZTogaHR0cC5TZXJ2ZXJSZXNwb25zZSk6IHZvaWQge1xuICByZXF1ZXN0TG9nZ2VyIS5kZWJ1ZyhcbiAgICAgIHt1cmw6IHJlcXVlc3QudXJsLCBtZXRob2Q6IHJlcXVlc3QubWV0aG9kfSwgJ1JlY2VpdmVkIGEgbmV3IHJlcXVlc3QnKTtcbiAgcmVzcG9uc2Uub24oJ2ZpbmlzaCcsICgpID0+IHtcbiAgICByZXF1ZXN0TG9nZ2VyIS5kZWJ1Zyh7XG4gICAgICB1cmw6IHJlcXVlc3QudXJsLFxuICAgICAgbWV0aG9kOiByZXF1ZXN0Lm1ldGhvZCxcbiAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzQ29kZVxuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyBsb2dnZXJzIHVzZWQgd2l0aGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVMb2dnZXJzKHNldHRpbmdzOiBBcHBTZXR0aW5ncyk6IHZvaWQge1xuICAvLyBXZSBjb25maWd1cmUgb3VyIGxvZ2dlcnMgYXMgZm9sbG93czpcbiAgLy8gICogb3VyIGJhc2UgbG9nZ2VyIHRhZ3MgYWxsIGxvZyByZWNvcmRzIHdpdGggYFwibmFtZVwiOlwiYXBwXCJgLCBhbmQgc2VuZHMgbG9nc1xuICAvLyAgICB0byBzdGRlcnIgKGluY2x1ZGluZyBsb2dzIG9mIGFsbCBjaGlsZHJlbilcbiAgLy8gICogb25lIGNoaWxkIGxvZ2dlciBhZGRzIGBcInR5cGVcIjpcInJlcXVlc3RcImAsIGFuZCByZWNvcmRzIG1ldGhvZC9VUkwgZm9yIGFsbFxuICAvLyAgICBIVFRQIHJlcXVlc3RzIHRvIHRoZSBhcHAsIGFuZCBtZXRob2QvVVJML3Jlc3BvbnNlIGNvZGUgZm9yIGFsbCByZXNwb25zZXNcbiAgLy8gICogb25lIGNoaWxkIGxvZ2dlciBhZGRzIGBcInR5cGVcIjpcImp1cHl0ZXJcImAsIGFuZCByZWNvcmRzIGFsbCBtZXNzYWdlcyBmcm9tXG4gIC8vICAgIHRoZSBqdXB5dGVyIG5vdGVib29rIHNlcnZlci4gVGhlc2UgbG9ncyBhcmUgYWxzbyBzZW50IHRvIGEgZmlsZSBvbiBkaXNrXG4gIC8vICAgICh0byBhc3Npc3QgdXNlciBkZWJ1Z2dpbmcpLlxuICAvL1xuICAvLyBGb3IgbW9yZSBhYm91dCBidW55YW4sIHNlZTpcbiAgLy8gICBodHRwczovL2dpdGh1Yi5jb20vdHJlbnRtL25vZGUtYnVueWFuL3RyZWUvZjIxMDA3ZDQ2YzBlNjQwNzI2MTczODBiNzBkM2Y1NDIzNjgzMThhOFxuICBjb25zdCBqdXB5dGVyTG9nUGF0aCA9IHBhdGguam9pbihzZXR0aW5ncy5kYXRhbGFiUm9vdCwgJy92YXIvY29sYWIvYXBwLmxvZycpO1xuICBsb2dnZXIgPSBidW55YW4uY3JlYXRlTG9nZ2VyKHtcbiAgICBuYW1lOiAnYXBwJyxcbiAgICBzdHJlYW1zOiBbXG4gICAgICB7bGV2ZWw6ICdkZWJ1ZycsIHR5cGU6ICdzdHJlYW0nLCBzdHJlYW06IHByb2Nlc3Muc3RkZXJyfSxcbiAgICBdXG4gIH0pO1xuICByZXF1ZXN0TG9nZ2VyID0gbG9nZ2VyLmNoaWxkKHt0eXBlOiAncmVxdWVzdCd9KTtcbiAganVweXRlckxvZ2dlciA9IGxvZ2dlci5jaGlsZCh7XG4gICAgdHlwZTogJ2p1cHl0ZXInLFxuICAgIHN0cmVhbXM6IFt7XG4gICAgICBsZXZlbDogJ2luZm8nLFxuICAgICAgdHlwZTogJ3N0cmVhbScsXG4gICAgICBzdHJlYW06IG5ldyBSb3RhdGluZ0ZpbGVTdHJlYW0oe1xuICAgICAgICBwYXRoOiBqdXB5dGVyTG9nUGF0aCxcbiAgICAgICAgcm90YXRlRXhpc3Rpbmc6IGZhbHNlLFxuICAgICAgICB0aHJlc2hvbGQ6ICcybScsXG4gICAgICAgIHRvdGFsU2l6ZTogJzIwbSdcbiAgICAgIH0pLFxuICAgIH1dXG4gIH0pO1xuICAvLyBPbWl0IHN1cGVyZmx1b3VzIGZpZWxkcywgdW5sZXNzIHVzaW5nIHRoZSBidW55YW4gQ0xJIHRvIG1ha2UgbG9ncyBodW1hblxuICAvLyByZWFkYWJsZSwgYmVjYXVzZSB0aGUgQ0xJIHJlcXVpcmVzIHRoZW0uXG4gIGlmIChwcm9jZXNzLmVudlsnQ09MQUJfSFVNQU5fUkVBREFCTEVfTk9ERV9MT0dTJ10gIT09ICcxJykge1xuICAgIGZvciAoY29uc3QgbG9ncyBvZiBbbG9nZ2VyLCBqdXB5dGVyTG9nZ2VyLCByZXF1ZXN0TG9nZ2VyXSkge1xuICAgICAgZGVsZXRlIGxvZ3MuZmllbGRzWydob3N0bmFtZSddO1xuICAgICAgZGVsZXRlIGxvZ3MuZmllbGRzWyduYW1lJ107XG4gICAgfVxuICB9XG59XG4iXX0=
|
web/lsp/capabilities_node.js
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
"use strict";
|
2 |
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3 |
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwYWJpbGl0aWVzX25vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9nZW5maWxlcy90aGlyZF9wYXJ0eS9jb2xhYi9zb3VyY2VzL2xzcC9jYXBhYmlsaXRpZXNfbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcHJvdG9jb2wgZnJvbSAnLi9wcm90b2NvbF9ub2RlJztcbmltcG9ydCAqIGFzIHRleHREb2N1bWVudCBmcm9tICcuL3RleHRfZG9jdW1lbnRfbm9kZSc7XG5pbXBvcnQgKiBhcyB3b3Jrc3BhY2UgZnJvbSAnLi93b3Jrc3BhY2Vfbm9kZSc7XG5cbmludGVyZmFjZSBDbGllbnRDYXBhYmlsaXRpZXMge1xuICAvKipcbiAgICogV29ya3NwYWNlIHNwZWNpZmljIGNsaWVudCBjYXBhYmlsaXRpZXMuXG4gICAqL1xuICB3b3Jrc3BhY2U/OiB7XG4gICAgLyoqXG4gICAgICogVGhlIGNsaWVudCBzdXBwb3J0cyBhcHBseWluZyBiYXRjaCBlZGl0c1xuICAgICAqIHRvIHRoZSB3b3Jrc3BhY2UgYnkgc3VwcG9ydGluZyB0aGUgcmVxdWVzdFxuICAgICAqICd3b3Jrc3BhY2UvYXBwbHlFZGl0J1xuICAgICAqL1xuICAgIGFwcGx5RWRpdD86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBDYXBhYmlsaXRpZXMgc3BlY2lmaWMgdG8gYFdvcmtzcGFjZUVkaXRgc1xuICAgICAqL1xuICAgIHdvcmtzcGFjZUVkaXQ/OiBwcm90b2NvbC5Xb3Jrc3BhY2VFZGl0Q2xpZW50Q2FwYWJpbGl0aWVzO1xuXG4gICAgLyoqXG4gICAgICogQ2FwYWJpbGl0aWVzIHNwZWNpZmljIHRvIHRoZSBgd29ya3NwYWNlL2RpZENoYW5nZUNvbmZpZ3VyYXRpb25gXG4gICAgICogbm90aWZpY2F0aW9uLlxuICAgICAqL1xuICAgIGRpZENoYW5nZUNvbmZpZ3VyYXRpb24/OiB3b3Jrc3BhY2UuRGlkQ2hhbmdlQ29uZmlndXJhdGlvbkNsaWVudENhcGFiaWxpdGllcztcblxuICAgIC8qKlxuICAgICAqIENhcGFiaWxpdGllcyBzcGVjaWZpYyB0byB0aGUgYHdvcmtzcGFjZS9kaWRDaGFuZ2VXYXRjaGVkRmlsZXNgXG4gICAgICogbm90aWZpY2F0aW9uLlxuICAgICAqL1xuICAgIGRpZENoYW5nZVdhdGNoZWRGaWxlcz86IHdvcmtzcGFjZS5EaWRDaGFuZ2VXYXRjaGVkRmlsZXNDbGllbnRDYXBhYmlsaXRpZXM7XG5cbiAgICAvKipcbiAgICAgKiBDYXBhYmlsaXRpZXMgc3BlY2lmaWMgdG8gdGhlIGB3b3Jrc3BhY2Uvc3ltYm9sYCByZXF1ZXN0LlxuICAgICAqL1xuICAgIHN5bWJvbD86IHdvcmtzcGFjZS5Xb3Jrc3BhY2VTeW1ib2xDbGllbnRDYXBhYmlsaXRpZXM7XG5cbiAgICAvKipcbiAgICAgKiBDYXBhYmlsaXRpZXMgc3BlY2lmaWMgdG8gdGhlIGB3b3Jrc3BhY2UvZXhlY3V0ZUNvbW1hbmRgIHJlcXVlc3QuXG4gICAgICovXG4gICAgZXhlY3V0ZUNvbW1hbmQ/OiBwcm90b2NvbC5FeGVjdXRlQ29tbWFuZENsaWVudENhcGFiaWxpdGllcztcblxuICAgIC8qKlxuICAgICAqIFRoZSBjbGllbnQgaGFzIHN1cHBvcnQgZm9yIHdvcmtzcGFjZSBmb2xkZXJzLlxuICAgICAqXG4gICAgICogU2luY2UgMy42LjBcbiAgICAgKi9cbiAgICB3b3Jrc3BhY2VGb2xkZXJzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjbGllbnQgc3VwcG9ydHMgYHdvcmtzcGFjZS9jb25maWd1cmF0aW9uYCByZXF1ZXN0cy5cbiAgICAgKlxuICAgICAqIFNpbmNlIDMuNi4wXG4gICAgICovXG4gICAgY29uZmlndXJhdGlvbj86IGJvb2xlYW47XG4gIH07XG5cbiAgLyoqXG4gICAqIFRleHQgZG9jdW1lbnQgc3BlY2lmaWMgY2xpZW50IGNhcGFiaWxpdGllcy5cbiAgICovXG4gIHRleHREb2N1bWVudD86IHRleHREb2N1bWVudC5UZXh0RG9jdW1lbnRDbGllbnRDYXBhYmlsaXRpZXM7XG5cbiAgLyoqXG4gICAqIFdpbmRvdyBzcGVjaWZpYyBjbGllbnQgY2FwYWJpbGl0aWVzLlxuICAgKi9cbiAgd2luZG93Pzoge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgY2xpZW50IHN1cHBvcnRzIGhhbmRsaW5nIHByb2dyZXNzIG5vdGlmaWNhdGlvbnMuXG4gICAgICogSWYgc2V0LCBzZXJ2ZXJzIGFyZSBhbGxvd2VkIHRvIHJlcG9ydCBpbiBgd29ya0RvbmVQcm9ncmVzc2AgcHJvcGVydHlcbiAgICAgKiBpbiB0aGUgcmVxdWVzdCBzcGVjaWZpYyBzZXJ2ZXIgY2FwYWJpbGl0aWVzLlxuICAgICAqXG4gICAgICogU2luY2UgMy4xNS4wXG4gICAgICovXG4gICAgd29ya0RvbmVQcm9ncmVzcz86IGJvb2xlYW47XG4gIH07XG5cbiAgLyoqXG4gICAqIEV4cGVyaW1lbnRhbCBjbGllbnQgY2FwYWJpbGl0aWVzLlxuICAgKi9cbiAgZXhwZXJpbWVudGFsPzogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jaW5pdGlhbGl6ZVxuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW5pdGlhbGl6ZSBleHRlbmRzXG4gICAgcHJvdG9jb2wuUmVxdWVzdE1lc3NhZ2U8SW5pdGlhbGl6ZVBhcmFtcz4ge1xuICBtZXRob2Q6IHByb3RvY29sLk1ldGhvZC5Jbml0aWFsaXplO1xufVxuXG4vKipcbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbnMvc3BlY2lmaWNhdGlvbi1jdXJyZW50LyNpbml0aWFsaXplXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJbml0aWFsaXplUGFyYW1zIGV4dGVuZHNcbiAgICBwcm90b2NvbC5Xb3JrRG9uZVByb2dyZXNzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwcm9jZXNzIElEIG9mIHRoZSBwYXJlbnQgcHJvY2VzcyB0aGF0IHN0YXJ0ZWQgdGhlIHNlcnZlci5cbiAgICogSXMgbnVsbCBpZiB0aGUgcHJvY2VzcyBoYXMgbm90IGJlZW4gc3RhcnRlZCBieSBhbm90aGVyIHByb2Nlc3MuXG4gICAqIElmIHRoZSBwYXJlbnQgcHJvY2VzcyBpcyBub3QgYWxpdmUsIHRoZW4gdGhlIHNlcnZlciBzaG91bGQgZXhpdFxuICAgKiAoc2VlIGV4aXQgbm90aWZpY2F0aW9uKSBpdHMgcHJvY2Vzcy5cbiAgICovXG4gIHByb2Nlc3NJZDogbnVtYmVyfG51bGw7XG5cbiAgLyoqXG4gICAqIEluZm9ybWF0aW9uIGFib3V0IHRoZSBjbGllbnRcbiAgICpcbiAgICogQHNpbmNlIDMuMTUuMFxuICAgKi9cbiAgY2xpZW50SW5mbz86IHtcbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgY2xpZW50IGFzIGRlZmluZWQgYnkgdGhlIGNsaWVudC5cbiAgICAgKi9cbiAgICBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY2xpZW50J3MgdmVyc2lvbiBhcyBkZWZpbmVkIGJ5IHRoZSBjbGllbnQuXG4gICAgICovXG4gICAgdmVyc2lvbj86IHN0cmluZztcbiAgfTtcblxuICAvKipcbiAgICogVGhlIHJvb3RQYXRoIG9mIHRoZSB3b3Jrc3BhY2UuIElzIG51bGxcbiAgICogaWYgbm8gZm9sZGVyIGlzIG9wZW4uXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIGluIGZhdm91ciBvZiByb290VXJpLlxuICAgKi9cbiAgcm9vdFBhdGg/OiBzdHJpbmd8bnVsbDtcblxuICAvKipcbiAgICogVGhlIHJvb3RVcmkgb2YgdGhlIHdvcmtzcGFjZS4gSXMgbnVsbCBpZiBub1xuICAgKiBmb2xkZXIgaXMgb3Blbi4gSWYgYm90aCBgcm9vdFBhdGhgIGFuZCBgcm9vdFVyaWAgYXJlIHNldFxuICAgKiBgcm9vdFVyaWAgd2lucy5cbiAgICovXG4gIHJvb3RVcmk6IHByb3RvY29sLkRvY3VtZW50VXJpfG51bGw7XG5cbiAgLyoqXG4gICAqIFVzZXIgcHJvdmlkZWQgaW5pdGlhbGl6YXRpb24gb3B0aW9ucy5cbiAgICovXG4gIGluaXRpYWxpemF0aW9uT3B0aW9ucz86IHVua25vd247XG5cbiAgLyoqXG4gICAqIFRoZSBjYXBhYmlsaXRpZXMgcHJvdmlkZWQgYnkgdGhlIGNsaWVudCAoZWRpdG9yIG9yIHRvb2wpXG4gICAqL1xuICBjYXBhYmlsaXRpZXM6IENsaWVudENhcGFiaWxpdGllcztcblxuICAvKipcbiAgICogVGhlIGluaXRpYWwgdHJhY2Ugc2V0dGluZy4gSWYgb21pdHRlZCB0cmFjZSBpcyBkaXNhYmxlZCAoJ29mZicpLlxuICAgKi9cbiAgdHJhY2U/OiAnb2ZmJ3wnbWVzc2FnZXMnfCd2ZXJib3NlJztcblxuICAvKipcbiAgICogVGhlIHdvcmtzcGFjZSBmb2xkZXJzIGNvbmZpZ3VyZWQgaW4gdGhlIGNsaWVudCB3aGVuIHRoZSBzZXJ2ZXIgc3RhcnRzLlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIG9ubHkgYXZhaWxhYmxlIGlmIHRoZSBjbGllbnQgc3VwcG9ydHMgd29ya3NwYWNlIGZvbGRlcnMuXG4gICAqIEl0IGNhbiBiZSBgbnVsbGAgaWYgdGhlIGNsaWVudCBzdXBwb3J0cyB3b3Jrc3BhY2UgZm9sZGVycyBidXQgbm9uZSBhcmVcbiAgICogY29uZmlndXJlZC5cbiAgICpcbiAgICogQHNpbmNlIDMuNi4wXG4gICAqL1xuICB3b3Jrc3BhY2VGb2xkZXJzPzogd29ya3NwYWNlLldvcmtzcGFjZUZvbGRlcltdfG51bGw7XG59XG4iXX0=
|
web/lsp/extensions_node.js
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
"use strict";
|
2 |
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3 |
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9uc19ub2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZ2VuZmlsZXMvdGhpcmRfcGFydHkvY29sYWIvc291cmNlcy9sc3AvZXh0ZW5zaW9uc19ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCAqIGFzIGNhcGFiaWxpdGllcyBmcm9tICcuL2NhcGFiaWxpdGllc19ub2RlJztcbmltcG9ydCAqIGFzIHRleHREb2N1bWVudCBmcm9tICcuL3RleHRfZG9jdW1lbnRfbm9kZSc7XG5cbi8vIHRzbGludDpkaXNhYmxlOmVuZm9yY2UtbmFtZS1jYXNpbmdcblxuLyoqXG4gKiBQYXJhbWV0ZXIgZm9yIGBpbml0aWFsaXplYCBtZXNzYWdlcy5cbiAqIEFkZHMgYSBmbGFnIGNvbnRyb2xsaW5nIHdoZXRoZXIgd2UgcnVuIEF1dG9GaXguXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJbml0aWFsaXplUGFyYW1zIGV4dGVuZHNcbiAgICBjYXBhYmlsaXRpZXMuSW5pdGlhbGl6ZVBhcmFtcyB7XG4gIGF1dG9GaXg6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1ldGVyIGZvciBgdGV4dERvY3VtZW50L2RpZE9wZW5gIG1lc3NhZ2VzLlxuICogQWRkcyBhIHByZWFtYmxlIHN0cmluZy5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIERpZE9wZW5UZXh0RG9jdW1lbnRQYXJhbXMgZXh0ZW5kc1xuICAgIHRleHREb2N1bWVudC5EaWRPcGVuVGV4dERvY3VtZW50UGFyYW1zIHtcbiAgcmVhZG9ubHkgcHJlYW1ibGU6IHN0cmluZztcbn1cbiJdfQ==
|
web/lsp/protocol_node.js
ADDED
@@ -0,0 +1,186 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"use strict";
|
2 |
+
// tslint:disable:enforce-name-casing
|
3 |
+
Object.defineProperty(exports, "__esModule", { value: true });
|
4 |
+
exports.SymbolTag = exports.SymbolKind = exports.DiagnosticSeverity = exports.DiagnosticTag = exports.FailureHandlingKind = exports.ResourceOperationKind = exports.ErrorCode = exports.Method = void 0;
|
5 |
+
/**
|
6 |
+
* JSON-RPC Methods.
|
7 |
+
*/
|
8 |
+
var Method;
|
9 |
+
(function (Method) {
|
10 |
+
Method["CancelRequest"] = "$/cancelRequest";
|
11 |
+
Method["ClientRegisterCapability"] = "client/registerCapability";
|
12 |
+
Method["ColabPipLogChanged"] = "colab/pipLogChanged";
|
13 |
+
Method["CompletionItemResolve"] = "completionItem/resolve";
|
14 |
+
Method["Initialize"] = "initialize";
|
15 |
+
Method["Initialized"] = "initialized";
|
16 |
+
Method["TextDocumentAutoExecuteCheck"] = "textDocument/autoExecuteCheck";
|
17 |
+
Method["TextDocumentCodeAction"] = "textDocument/codeAction";
|
18 |
+
Method["TextDocumentCompletion"] = "textDocument/completion";
|
19 |
+
Method["TextDocumentDefinition"] = "textDocument/definition";
|
20 |
+
Method["TextDocumentDidChange"] = "textDocument/didChange";
|
21 |
+
Method["TextDocumentDidClose"] = "textDocument/didClose";
|
22 |
+
Method["TextDocumentDidOpen"] = "textDocument/didOpen";
|
23 |
+
Method["TextDocumentEchoDocument"] = "textDocument/echoDocument";
|
24 |
+
Method["TextDocumentHover"] = "textDocument/hover";
|
25 |
+
Method["TextDocumentPublishDiagnostics"] = "textDocument/publishDiagnostics";
|
26 |
+
Method["TextDocumentRename"] = "textDocument/rename";
|
27 |
+
Method["TextDocumentSignatureHelp"] = "textDocument/signatureHelp";
|
28 |
+
Method["WindowLogMessage"] = "window/logMessage";
|
29 |
+
Method["WorkspaceConfiguration"] = "workspace/configuration";
|
30 |
+
Method["WorkspaceDidChangeConfiguration"] = "workspace/didChangeConfiguration";
|
31 |
+
Method["WorkspaceDidChangeWatchedFiles"] = "workspace/didChangeWatchedFiles";
|
32 |
+
})(Method || (exports.Method = Method = {}));
|
33 |
+
/**
|
34 |
+
* https://microsoft.github.io/language-server-protocol/specifications/specification-current/#responseMessage
|
35 |
+
*/
|
36 |
+
var ErrorCode;
|
37 |
+
(function (ErrorCode) {
|
38 |
+
// Defined by JSON RPC
|
39 |
+
ErrorCode[ErrorCode["ParseError"] = -32700] = "ParseError";
|
40 |
+
ErrorCode[ErrorCode["InvalidRequest"] = -32600] = "InvalidRequest";
|
41 |
+
ErrorCode[ErrorCode["MethodNotFound"] = -32601] = "MethodNotFound";
|
42 |
+
ErrorCode[ErrorCode["InvalidParams"] = -32602] = "InvalidParams";
|
43 |
+
ErrorCode[ErrorCode["InternalError"] = -32603] = "InternalError";
|
44 |
+
ErrorCode[ErrorCode["ServerErrorStart"] = -32099] = "ServerErrorStart";
|
45 |
+
ErrorCode[ErrorCode["ServerErrorEnd"] = -32000] = "ServerErrorEnd";
|
46 |
+
ErrorCode[ErrorCode["ServerNotInitialized"] = -32002] = "ServerNotInitialized";
|
47 |
+
ErrorCode[ErrorCode["UnknownErrorCode"] = -32001] = "UnknownErrorCode";
|
48 |
+
// Defined by the protocol.
|
49 |
+
ErrorCode[ErrorCode["RequestCancelled"] = -32800] = "RequestCancelled";
|
50 |
+
ErrorCode[ErrorCode["ContentModified"] = -32801] = "ContentModified";
|
51 |
+
})(ErrorCode || (exports.ErrorCode = ErrorCode = {}));
|
52 |
+
/**
|
53 |
+
* The kind of resource operations supported by the client.
|
54 |
+
*/
|
55 |
+
var ResourceOperationKind;
|
56 |
+
(function (ResourceOperationKind) {
|
57 |
+
/**
|
58 |
+
* Supports creating new files and folders.
|
59 |
+
*/
|
60 |
+
ResourceOperationKind["CREATE"] = "create";
|
61 |
+
/**
|
62 |
+
* Supports renaming existing files and folders.
|
63 |
+
*/
|
64 |
+
ResourceOperationKind["RENAME"] = "rename";
|
65 |
+
/**
|
66 |
+
* Supports deleting existing files and folders.
|
67 |
+
*/
|
68 |
+
ResourceOperationKind["DELETE"] = "delete";
|
69 |
+
})(ResourceOperationKind || (exports.ResourceOperationKind = ResourceOperationKind = {}));
|
70 |
+
/**
|
71 |
+
* https://microsoft.github.io/language-server-protocol/specifications/specification-current/#workspaceEditClientCapabilities
|
72 |
+
*/
|
73 |
+
var FailureHandlingKind;
|
74 |
+
(function (FailureHandlingKind) {
|
75 |
+
/**
|
76 |
+
* Applying the workspace change is simply aborted if one of the changes
|
77 |
+
* provided fails.
|
78 |
+
* All operations executed before the failing operation stay executed.
|
79 |
+
*/
|
80 |
+
FailureHandlingKind["Abort"] = "abort";
|
81 |
+
/**
|
82 |
+
* All operations are executed transactional. That means they either all
|
83 |
+
* succeed or no changes at all are applied to the workspace.
|
84 |
+
*/
|
85 |
+
FailureHandlingKind["Transactional"] = "transactional";
|
86 |
+
/**
|
87 |
+
* If the workspace edit contains only textual file changes, they are
|
88 |
+
* executed transactionally.
|
89 |
+
* If resource changes (create, rename or delete file) are part of the
|
90 |
+
* change, the failure handling strategy is abort.
|
91 |
+
*/
|
92 |
+
FailureHandlingKind["TextOnlyTransactional"] = "textOnlyTransactional";
|
93 |
+
/**
|
94 |
+
* The client tries to undo the operations already executed. But there is no
|
95 |
+
* guarantee that this is succeeding.
|
96 |
+
*/
|
97 |
+
FailureHandlingKind["Undo"] = "undo";
|
98 |
+
})(FailureHandlingKind || (exports.FailureHandlingKind = FailureHandlingKind = {}));
|
99 |
+
/**
|
100 |
+
* The diagnostic tags.
|
101 |
+
*
|
102 |
+
* @since 3.15.0
|
103 |
+
*/
|
104 |
+
var DiagnosticTag;
|
105 |
+
(function (DiagnosticTag) {
|
106 |
+
/**
|
107 |
+
* Unused or unnecessary code.
|
108 |
+
*
|
109 |
+
* Clients are allowed to render diagnostics with this tag faded out
|
110 |
+
* instead of having an error squiggle.
|
111 |
+
*/
|
112 |
+
DiagnosticTag[DiagnosticTag["Unnecessary"] = 1] = "Unnecessary";
|
113 |
+
/**
|
114 |
+
* Deprecated or obsolete code.
|
115 |
+
*
|
116 |
+
* Clients are allowed to rendered diagnostics with this tag strike through.
|
117 |
+
*/
|
118 |
+
DiagnosticTag[DiagnosticTag["Deprecated"] = 2] = "Deprecated";
|
119 |
+
})(DiagnosticTag || (exports.DiagnosticTag = DiagnosticTag = {}));
|
120 |
+
/**
|
121 |
+
* https://microsoft.github.io/language-server-protocol/specifications/specification-current/#diagnostic
|
122 |
+
*/
|
123 |
+
var DiagnosticSeverity;
|
124 |
+
(function (DiagnosticSeverity) {
|
125 |
+
/**
|
126 |
+
* Reports an error.
|
127 |
+
*/
|
128 |
+
DiagnosticSeverity[DiagnosticSeverity["Error"] = 1] = "Error";
|
129 |
+
/**
|
130 |
+
* Reports a warning.
|
131 |
+
*/
|
132 |
+
DiagnosticSeverity[DiagnosticSeverity["Warning"] = 2] = "Warning";
|
133 |
+
/**
|
134 |
+
* Reports an information.
|
135 |
+
*/
|
136 |
+
DiagnosticSeverity[DiagnosticSeverity["Information"] = 3] = "Information";
|
137 |
+
/**
|
138 |
+
* Reports a hint.
|
139 |
+
*/
|
140 |
+
DiagnosticSeverity[DiagnosticSeverity["Hint"] = 4] = "Hint";
|
141 |
+
})(DiagnosticSeverity || (exports.DiagnosticSeverity = DiagnosticSeverity = {}));
|
142 |
+
/**
|
143 |
+
* A symbol kind.
|
144 |
+
*/
|
145 |
+
var SymbolKind;
|
146 |
+
(function (SymbolKind) {
|
147 |
+
SymbolKind[SymbolKind["File"] = 1] = "File";
|
148 |
+
SymbolKind[SymbolKind["Module"] = 2] = "Module";
|
149 |
+
SymbolKind[SymbolKind["Namespace"] = 3] = "Namespace";
|
150 |
+
SymbolKind[SymbolKind["Package"] = 4] = "Package";
|
151 |
+
SymbolKind[SymbolKind["Class"] = 5] = "Class";
|
152 |
+
SymbolKind[SymbolKind["Method"] = 6] = "Method";
|
153 |
+
SymbolKind[SymbolKind["Property"] = 7] = "Property";
|
154 |
+
SymbolKind[SymbolKind["Field"] = 8] = "Field";
|
155 |
+
SymbolKind[SymbolKind["Constructor"] = 9] = "Constructor";
|
156 |
+
SymbolKind[SymbolKind["Enum"] = 10] = "Enum";
|
157 |
+
SymbolKind[SymbolKind["Interface"] = 11] = "Interface";
|
158 |
+
SymbolKind[SymbolKind["Function"] = 12] = "Function";
|
159 |
+
SymbolKind[SymbolKind["Variable"] = 13] = "Variable";
|
160 |
+
SymbolKind[SymbolKind["Constant"] = 14] = "Constant";
|
161 |
+
SymbolKind[SymbolKind["String"] = 15] = "String";
|
162 |
+
SymbolKind[SymbolKind["Number"] = 16] = "Number";
|
163 |
+
SymbolKind[SymbolKind["Boolean"] = 17] = "Boolean";
|
164 |
+
SymbolKind[SymbolKind["Array"] = 18] = "Array";
|
165 |
+
SymbolKind[SymbolKind["Object"] = 19] = "Object";
|
166 |
+
SymbolKind[SymbolKind["Key"] = 20] = "Key";
|
167 |
+
SymbolKind[SymbolKind["Null"] = 21] = "Null";
|
168 |
+
SymbolKind[SymbolKind["EnumMember"] = 22] = "EnumMember";
|
169 |
+
SymbolKind[SymbolKind["Struct"] = 23] = "Struct";
|
170 |
+
SymbolKind[SymbolKind["Event"] = 24] = "Event";
|
171 |
+
SymbolKind[SymbolKind["Operator"] = 25] = "Operator";
|
172 |
+
SymbolKind[SymbolKind["TypeParameter"] = 26] = "TypeParameter";
|
173 |
+
})(SymbolKind || (exports.SymbolKind = SymbolKind = {}));
|
174 |
+
/**
|
175 |
+
* Symbol tags are extra annotations that tweak the rendering of a symbol.
|
176 |
+
*
|
177 |
+
* @since 3.16
|
178 |
+
*/
|
179 |
+
var SymbolTag;
|
180 |
+
(function (SymbolTag) {
|
181 |
+
/**
|
182 |
+
* Render a symbol as obsolete, usually using a strike-out.
|
183 |
+
*/
|
184 |
+
SymbolTag[SymbolTag["Deprecated"] = 1] = "Deprecated";
|
185 |
+
})(SymbolTag || (exports.SymbolTag = SymbolTag = {}));
|
186 |
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9jb2xfbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2dlbmZpbGVzL3RoaXJkX3BhcnR5L2NvbGFiL3NvdXJjZXMvbHNwL3Byb3RvY29sX25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFDQUFxQzs7O0FBRXJDOztHQUVHO0FBQ0gsSUFBWSxNQXVCWDtBQXZCRCxXQUFZLE1BQU07SUFDaEIsMkNBQWlDLENBQUE7SUFDakMsZ0VBQXNELENBQUE7SUFDdEQsb0RBQTBDLENBQUE7SUFDMUMsMERBQWdELENBQUE7SUFDaEQsbUNBQXlCLENBQUE7SUFDekIscUNBQTJCLENBQUE7SUFDM0Isd0VBQThELENBQUE7SUFDOUQsNERBQWtELENBQUE7SUFDbEQsNERBQWtELENBQUE7SUFDbEQsNERBQWtELENBQUE7SUFDbEQsMERBQWdELENBQUE7SUFDaEQsd0RBQThDLENBQUE7SUFDOUMsc0RBQTRDLENBQUE7SUFDNUMsZ0VBQXNELENBQUE7SUFDdEQsa0RBQXdDLENBQUE7SUFDeEMsNEVBQWtFLENBQUE7SUFDbEUsb0RBQTBDLENBQUE7SUFDMUMsa0VBQXdELENBQUE7SUFDeEQsZ0RBQXNDLENBQUE7SUFDdEMsNERBQWtELENBQUE7SUFDbEQsOEVBQW9FLENBQUE7SUFDcEUsNEVBQWtFLENBQUE7QUFDcEUsQ0FBQyxFQXZCVyxNQUFNLHNCQUFOLE1BQU0sUUF1QmpCO0FBcUVEOztHQUVHO0FBQ0gsSUFBWSxTQWVYO0FBZkQsV0FBWSxTQUFTO0lBQ25CLHNCQUFzQjtJQUN0QiwwREFBbUIsQ0FBQTtJQUNuQixrRUFBdUIsQ0FBQTtJQUN2QixrRUFBdUIsQ0FBQTtJQUN2QixnRUFBc0IsQ0FBQTtJQUN0QixnRUFBc0IsQ0FBQTtJQUN0QixzRUFBeUIsQ0FBQTtJQUN6QixrRUFBdUIsQ0FBQTtJQUN2Qiw4RUFBNkIsQ0FBQTtJQUM3QixzRUFBeUIsQ0FBQTtJQUV6QiwyQkFBMkI7SUFDM0Isc0VBQXlCLENBQUE7SUFDekIsb0VBQXdCLENBQUE7QUFDMUIsQ0FBQyxFQWZXLFNBQVMseUJBQVQsU0FBUyxRQWVwQjtBQStLRDs7R0FFRztBQUNILElBQVkscUJBYVg7QUFiRCxXQUFZLHFCQUFxQjtJQUMvQjs7T0FFRztJQUNILDBDQUFpQixDQUFBO0lBQ2pCOztPQUVHO0lBQ0gsMENBQWlCLENBQUE7SUFDakI7O09BRUc7SUFDSCwwQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBYlcscUJBQXFCLHFDQUFyQixxQkFBcUIsUUFhaEM7QUFFRDs7R0FFRztBQUNILElBQVksbUJBMkJYO0FBM0JELFdBQVksbUJBQW1CO0lBQzdCOzs7O09BSUc7SUFDSCxzQ0FBZSxDQUFBO0lBRWY7OztPQUdHO0lBQ0gsc0RBQStCLENBQUE7SUFFL0I7Ozs7O09BS0c7SUFDSCxzRUFBK0MsQ0FBQTtJQUUvQzs7O09BR0c7SUFDSCxvQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQTNCVyxtQkFBbUIsbUNBQW5CLG1CQUFtQixRQTJCOUI7QUF3RUQ7Ozs7R0FJRztBQUNILElBQVksYUFjWDtBQWRELFdBQVksYUFBYTtJQUN2Qjs7Ozs7T0FLRztJQUNILCtEQUFlLENBQUE7SUFDZjs7OztPQUlHO0lBQ0gsNkRBQWMsQ0FBQTtBQUNoQixDQUFDLEVBZFcsYUFBYSw2QkFBYixhQUFhLFFBY3hCO0FBK0NEOztHQUVHO0FBQ0gsSUFBWSxrQkFpQlg7QUFqQkQsV0FBWSxrQkFBa0I7SUFDNUI7O09BRUc7SUFDSCw2REFBUyxDQUFBO0lBQ1Q7O09BRUc7SUFDSCxpRUFBVyxDQUFBO0lBQ1g7O09BRUc7SUFDSCx5RUFBZSxDQUFBO0lBQ2Y7O09BRUc7SUFDSCwyREFBUSxDQUFBO0FBQ1YsQ0FBQyxFQWpCVyxrQkFBa0Isa0NBQWxCLGtCQUFrQixRQWlCN0I7QUFtQkQ7O0dBRUc7QUFDSCxJQUFZLFVBMkJYO0FBM0JELFdBQVksVUFBVTtJQUNwQiwyQ0FBUSxDQUFBO0lBQ1IsK0NBQVUsQ0FBQTtJQUNWLHFEQUFhLENBQUE7SUFDYixpREFBVyxDQUFBO0lBQ1gsNkNBQVMsQ0FBQTtJQUNULCtDQUFVLENBQUE7SUFDVixtREFBWSxDQUFBO0lBQ1osNkNBQVMsQ0FBQTtJQUNULHlEQUFlLENBQUE7SUFDZiw0Q0FBUyxDQUFBO0lBQ1Qsc0RBQWMsQ0FBQTtJQUNkLG9EQUFhLENBQUE7SUFDYixvREFBYSxDQUFBO0lBQ2Isb0RBQWEsQ0FBQTtJQUNiLGdEQUFXLENBQUE7SUFDWCxnREFBVyxDQUFBO0lBQ1gsa0RBQVksQ0FBQTtJQUNaLDhDQUFVLENBQUE7SUFDVixnREFBVyxDQUFBO0lBQ1gsMENBQVEsQ0FBQTtJQUNSLDRDQUFTLENBQUE7SUFDVCx3REFBZSxDQUFBO0lBQ2YsZ0RBQVcsQ0FBQTtJQUNYLDhDQUFVLENBQUE7SUFDVixvREFBYSxDQUFBO0lBQ2IsOERBQWtCLENBQUE7QUFDcEIsQ0FBQyxFQTNCVyxVQUFVLDBCQUFWLFVBQVUsUUEyQnJCO0FBRUQ7Ozs7R0FJRztBQUNILElBQVksU0FNWDtBQU5ELFdBQVksU0FBUztJQUVuQjs7T0FFRztJQUNILHFEQUFjLENBQUE7QUFDaEIsQ0FBQyxFQU5XLFNBQVMseUJBQVQsU0FBUyxRQU1wQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlOmVuZm9yY2UtbmFtZS1jYXNpbmdcblxuLyoqXG4gKiBKU09OLVJQQyBNZXRob2RzLlxuICovXG5leHBvcnQgZW51bSBNZXRob2Qge1xuICBDYW5jZWxSZXF1ZXN0ID0gJyQvY2FuY2VsUmVxdWVzdCcsXG4gIENsaWVudFJlZ2lzdGVyQ2FwYWJpbGl0eSA9ICdjbGllbnQvcmVnaXN0ZXJDYXBhYmlsaXR5JyxcbiAgQ29sYWJQaXBMb2dDaGFuZ2VkID0gJ2NvbGFiL3BpcExvZ0NoYW5nZWQnLFxuICBDb21wbGV0aW9uSXRlbVJlc29sdmUgPSAnY29tcGxldGlvbkl0ZW0vcmVzb2x2ZScsXG4gIEluaXRpYWxpemUgPSAnaW5pdGlhbGl6ZScsXG4gIEluaXRpYWxpemVkID0gJ2luaXRpYWxpemVkJyxcbiAgVGV4dERvY3VtZW50QXV0b0V4ZWN1dGVDaGVjayA9ICd0ZXh0RG9jdW1lbnQvYXV0b0V4ZWN1dGVDaGVjaycsXG4gIFRleHREb2N1bWVudENvZGVBY3Rpb24gPSAndGV4dERvY3VtZW50L2NvZGVBY3Rpb24nLFxuICBUZXh0RG9jdW1lbnRDb21wbGV0aW9uID0gJ3RleHREb2N1bWVudC9jb21wbGV0aW9uJyxcbiAgVGV4dERvY3VtZW50RGVmaW5pdGlvbiA9ICd0ZXh0RG9jdW1lbnQvZGVmaW5pdGlvbicsXG4gIFRleHREb2N1bWVudERpZENoYW5nZSA9ICd0ZXh0RG9jdW1lbnQvZGlkQ2hhbmdlJyxcbiAgVGV4dERvY3VtZW50RGlkQ2xvc2UgPSAndGV4dERvY3VtZW50L2RpZENsb3NlJyxcbiAgVGV4dERvY3VtZW50RGlkT3BlbiA9ICd0ZXh0RG9jdW1lbnQvZGlkT3BlbicsXG4gIFRleHREb2N1bWVudEVjaG9Eb2N1bWVudCA9ICd0ZXh0RG9jdW1lbnQvZWNob0RvY3VtZW50JyxcbiAgVGV4dERvY3VtZW50SG92ZXIgPSAndGV4dERvY3VtZW50L2hvdmVyJyxcbiAgVGV4dERvY3VtZW50UHVibGlzaERpYWdub3N0aWNzID0gJ3RleHREb2N1bWVudC9wdWJsaXNoRGlhZ25vc3RpY3MnLFxuICBUZXh0RG9jdW1lbnRSZW5hbWUgPSAndGV4dERvY3VtZW50L3JlbmFtZScsXG4gIFRleHREb2N1bWVudFNpZ25hdHVyZUhlbHAgPSAndGV4dERvY3VtZW50L3NpZ25hdHVyZUhlbHAnLFxuICBXaW5kb3dMb2dNZXNzYWdlID0gJ3dpbmRvdy9sb2dNZXNzYWdlJyxcbiAgV29ya3NwYWNlQ29uZmlndXJhdGlvbiA9ICd3b3Jrc3BhY2UvY29uZmlndXJhdGlvbicsXG4gIFdvcmtzcGFjZURpZENoYW5nZUNvbmZpZ3VyYXRpb24gPSAnd29ya3NwYWNlL2RpZENoYW5nZUNvbmZpZ3VyYXRpb24nLFxuICBXb3Jrc3BhY2VEaWRDaGFuZ2VXYXRjaGVkRmlsZXMgPSAnd29ya3NwYWNlL2RpZENoYW5nZVdhdGNoZWRGaWxlcycsXG59XG5cbi8qKiBCYXNlIEpTT04tUlBDIDIuMCB0eXBlLiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1lc3NhZ2Uge1xuICBqc29ucnBjOiAnMi4wJztcbn1cblxuLyoqXG4gKiBKU09OLVJQQyAyLjAgcmVxdWVzdC5cbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbnMvc3BlY2lmaWNhdGlvbi1jdXJyZW50LyNyZXF1ZXN0TWVzc2FnZVxuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgUmVxdWVzdE1lc3NhZ2U8VD4gZXh0ZW5kcyBNZXNzYWdlIHtcbiAgLyoqXG4gICAqIFRoZSByZXF1ZXN0IGlkLlxuICAgKi9cbiAgaWQ6IG51bWJlcnxzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbWV0aG9kIHRvIGJlIGludm9rZWQuXG4gICAqL1xuICBtZXRob2Q6IE1ldGhvZDtcbiAgLyoqXG4gICAqIFRoZSBtZXRob2QncyBwYXJhbXMuXG4gICAqL1xuICBwYXJhbXM6IFQ7XG59XG5cbi8qKlxuICogSlNPTi1SUEMgMi4wIHJlc3BvbnNlLlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3Jlc3BvbnNlTWVzc2FnZVxuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgUmVzcG9uc2VNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSB7XG4gIC8qKlxuICAgKiBUaGUgcmVxdWVzdCBpZC5cbiAgICovXG4gIGlkOiBudW1iZXJ8c3RyaW5nfG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSByZXN1bHQgb2YgYSByZXF1ZXN0LiBUaGlzIG1lbWJlciBpcyBSRVFVSVJFRCBvbiBzdWNjZXNzLlxuICAgKiBUaGlzIG1lbWJlciBNVVNUIE5PVCBleGlzdCBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgaW52b2tpbmcgdGhlIG1ldGhvZC5cbiAgICovXG4gIHJlc3VsdD86IHN0cmluZ3xudW1iZXJ8Ym9vbGVhbnxvYmplY3R8bnVsbDtcblxuICAvKipcbiAgICogVGhlIGVycm9yIG9iamVjdCBpbiBjYXNlIGEgcmVxdWVzdCBmYWlscy5cbiAgICovXG4gIGVycm9yPzogUmVzcG9uc2VFcnJvcjtcbn1cblxuLyoqXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jcmVzcG9uc2VNZXNzYWdlXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBSZXNwb25zZUVycm9yIHtcbiAgLyoqXG4gICAqIEEgbnVtYmVyIGluZGljYXRpbmcgdGhlIGVycm9yIHR5cGUgdGhhdCBvY2N1cnJlZC5cbiAgICovXG4gIGNvZGU6IG51bWJlcjtcblxuICAvKipcbiAgICogQSBzdHJpbmcgcHJvdmlkaW5nIGEgc2hvcnQgZGVzY3JpcHRpb24gb2YgdGhlIGVycm9yLlxuICAgKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHByaW1pdGl2ZSBvciBzdHJ1Y3R1cmVkIHZhbHVlIHRoYXQgY29udGFpbnMgYWRkaXRpb25hbFxuICAgKiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXJyb3IuIENhbiBiZSBvbWl0dGVkLlxuICAgKi9cbiAgZGF0YT86IHN0cmluZ3xudW1iZXJ8Ym9vbGVhbnx1bmtub3duW118b2JqZWN0fG51bGw7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3Jlc3BvbnNlTWVzc2FnZVxuICovXG5leHBvcnQgZW51bSBFcnJvckNvZGUge1xuICAvLyBEZWZpbmVkIGJ5IEpTT04gUlBDXG4gIFBhcnNlRXJyb3IgPSAtMzI3MDAsXG4gIEludmFsaWRSZXF1ZXN0ID0gLTMyNjAwLFxuICBNZXRob2ROb3RGb3VuZCA9IC0zMjYwMSxcbiAgSW52YWxpZFBhcmFtcyA9IC0zMjYwMixcbiAgSW50ZXJuYWxFcnJvciA9IC0zMjYwMyxcbiAgU2VydmVyRXJyb3JTdGFydCA9IC0zMjA5OSxcbiAgU2VydmVyRXJyb3JFbmQgPSAtMzIwMDAsXG4gIFNlcnZlck5vdEluaXRpYWxpemVkID0gLTMyMDAyLFxuICBVbmtub3duRXJyb3JDb2RlID0gLTMyMDAxLFxuXG4gIC8vIERlZmluZWQgYnkgdGhlIHByb3RvY29sLlxuICBSZXF1ZXN0Q2FuY2VsbGVkID0gLTMyODAwLFxuICBDb250ZW50TW9kaWZpZWQgPSAtMzI4MDEsXG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI25vdGlmaWNhdGlvbk1lc3NhZ2VcbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbk1lc3NhZ2U8VD4gZXh0ZW5kcyBNZXNzYWdlIHtcbiAgLyoqXG4gICAqIFRoZSBtZXRob2QgdG8gYmUgaW52b2tlZC5cbiAgICovXG4gIG1ldGhvZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbm90aWZpY2F0aW9uJ3MgcGFyYW1zLlxuICAgKi9cbiAgcGFyYW1zOiBUO1xufVxuXG4vKipcbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbnMvc3BlY2lmaWNhdGlvbi1jdXJyZW50LyNjYW5jZWxSZXF1ZXN0XG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBDYW5jZWxQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHJlcXVlc3QgaWQgdG8gY2FuY2VsLlxuICAgKi9cbiAgaWQ6IG51bWJlcnxzdHJpbmc7XG59XG5cbnR5cGUgUHJvZ3Jlc3NUb2tlbiA9IG51bWJlcnxzdHJpbmc7XG4vKipcbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbnMvc3BlY2lmaWNhdGlvbi1jdXJyZW50LyNwcm9ncmVzc1xuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgUHJvZ3Jlc3NQYXJhbXM8VD4ge1xuICAvKipcbiAgICogVGhlIHByb2dyZXNzIHRva2VuIHByb3ZpZGVkIGJ5IHRoZSBjbGllbnQgb3Igc2VydmVyLlxuICAgKi9cbiAgdG9rZW46IFByb2dyZXNzVG9rZW47XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9ncmVzcyBkYXRhLlxuICAgKi9cbiAgdmFsdWU6IFQ7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3VyaVxuICovXG5leHBvcnQgdHlwZSBEb2N1bWVudFVyaSA9IHN0cmluZztcblxuLyoqXG4gKiBQb3NpdGlvbiBpbiBhIHRleHQgZG9jdW1lbnQgZXhwcmVzc2VkIGFzIHplcm8tYmFzZWQgbGluZSBhbmQgemVyby1iYXNlZFxuICogY2hhcmFjdGVyIG9mZnNldC4gQSBwb3NpdGlvbiBpcyBiZXR3ZWVuIHR3byBjaGFyYWN0ZXJzIGxpa2UgYW4g4oCYaW5zZXJ04oCZXG4gKiBjdXJzb3IgaW4gYSBlZGl0b3IuIFNwZWNpYWwgdmFsdWVzIGxpa2UgZm9yIGV4YW1wbGUgLTEgdG8gZGVub3RlIHRoZSBlbmQgb2ZcbiAqIGEgbGluZSBhcmUgbm90IHN1cHBvcnRlZC5cbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbnMvc3BlY2lmaWNhdGlvbi1jdXJyZW50LyNwb3NpdGlvblxuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgUG9zaXRpb24ge1xuICAvKipcbiAgICogTGluZSBwb3NpdGlvbiBpbiBhIGRvY3VtZW50ICh6ZXJvLWJhc2VkKS5cbiAgICovXG4gIGxpbmU6IG51bWJlcjtcblxuICAvKipcbiAgICogQ2hhcmFjdGVyIG9mZnNldCBvbiBhIGxpbmUgaW4gYSBkb2N1bWVudCAoemVyby1iYXNlZCkuIEFzc3VtaW5nIHRoYXQgdGhlXG4gICAqIGxpbmUgaXMgcmVwcmVzZW50ZWQgYXMgYSBzdHJpbmcsIHRoZSBgY2hhcmFjdGVyYCB2YWx1ZSByZXByZXNlbnRzIHRoZSBnYXBcbiAgICogYmV0d2VlbiB0aGUgYGNoYXJhY3RlcmAgYW5kIGBjaGFyYWN0ZXIgKyAxYC5cbiAgICpcbiAgICogSWYgdGhlIGNoYXJhY3RlciB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gdGhlIGxpbmUgbGVuZ3RoIGl0IGRlZmF1bHRzIGJhY2tcbiAgICogdG8gdGhlIGxpbmUgbGVuZ3RoLlxuICAgKi9cbiAgY2hhcmFjdGVyOiBudW1iZXI7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3JhbmdlXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBSYW5nZSB7XG4gIC8qKlxuICAgKiBUaGUgcmFuZ2UncyBzdGFydCBwb3NpdGlvbi5cbiAgICovXG4gIHN0YXJ0OiBQb3NpdGlvbjtcblxuICAvKipcbiAgICogVGhlIHJhbmdlJ3MgZW5kIHBvc2l0aW9uLlxuICAgKi9cbiAgZW5kOiBQb3NpdGlvbjtcbn1cblxuLyoqXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jbG9jYXRpb25cbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIExvY2F0aW9uIHtcbiAgdXJpOiBEb2N1bWVudFVyaTtcbiAgcmFuZ2U6IFJhbmdlO1xufVxuXG4vKipcbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbnMvc3BlY2lmaWNhdGlvbi1jdXJyZW50LyNsb2NhdGlvbkxpbmtcbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIExvY2F0aW9uTGluayB7XG4gIC8qKlxuICAgKiBTcGFuIG9mIHRoZSBvcmlnaW4gb2YgdGhpcyBsaW5rLlxuICAgKlxuICAgKiBVc2VkIGFzIHRoZSB1bmRlcmxpbmVkIHNwYW4gZm9yIG1vdXNlIGludGVyYWN0aW9uLlxuICAgKiBEZWZhdWx0cyB0byB0aGUgd29yZCByYW5nZSBhdCB0aGUgbW91c2UgcG9zaXRpb24uXG4gICAqL1xuICBvcmlnaW5TZWxlY3Rpb25SYW5nZT86IFJhbmdlO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IHJlc291cmNlIGlkZW50aWZpZXIgb2YgdGhpcyBsaW5rLlxuICAgKi9cbiAgdGFyZ2V0VXJpOiBEb2N1bWVudFVyaTtcblxuICAvKipcbiAgICogVGhlIGZ1bGwgdGFyZ2V0IHJhbmdlIG9mIHRoaXMgbGluay5cbiAgICogRm9yIGV4YW1wbGUsIGlmIHRoZSB0YXJnZXQgaXMgYSBzeW1ib2wsIHRoZW4gdGFyZ2V0IHJhbmdlIGlzIHRoZSByYW5nZVxuICAgKiBlbmNsb3NpbmcgdGhpcyBzeW1ib2wgbm90IGluY2x1ZGluZyBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2UgYnV0XG4gICAqIGV2ZXJ5dGhpbmcgZWxzZSBsaWtlIGNvbW1lbnRzLlxuICAgKiBUaGlzIGluZm9ybWF0aW9uIGlzIHR5cGljYWxseSB1c2VkIHRvIGhpZ2hsaWdodCB0aGUgcmFuZ2UgaW4gdGhlIGVkaXRvci5cbiAgICovXG4gIHRhcmdldFJhbmdlOiBSYW5nZTtcblxuICAvKipcbiAgICogVGhlIHJhbmdlIHRoYXQgc2hvdWxkIGJlIHNlbGVjdGVkIGFuZCByZXZlYWxlZCB3aGVuIHRoaXMgbGluayBpcyBiZWluZ1xuICAgKiBmb2xsb3dlZCwgZm9yIGV4YW1wbGUsIHRoZSBuYW1lIG9mIGEgZnVuY3Rpb24uXG4gICAqIE11c3QgYmUgY29udGFpbmVkIGJ5IHRoZSBgdGFyZ2V0UmFuZ2VgLlxuICAgKiBTZWUgYWxzbyBgRG9jdW1lbnRTeW1ib2wjcmFuZ2VgXG4gICAqL1xuICB0YXJnZXRTZWxlY3Rpb25SYW5nZTogUmFuZ2U7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI2NvbW1hbmRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tYW5kIHtcbiAgLyoqXG4gICAqIFRpdGxlIG9mIHRoZSBjb21tYW5kLCBsaWtlIGBzYXZlYC5cbiAgICovXG4gIHRpdGxlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYWN0dWFsIGNvbW1hbmQgaGFuZGxlci5cbiAgICovXG4gIGNvbW1hbmQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEFyZ3VtZW50cyB0aGF0IHRoZSBjb21tYW5kIGhhbmRsZXIgc2hvdWxkIGJlXG4gICAqIGludm9rZWQgd2l0aC5cbiAgICovXG4gIGFyZ3VtZW50cz86IHVua25vd25bXTtcbn1cblxuLyoqXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jd29ya3NwYWNlRWRpdENsaWVudENhcGFiaWxpdGllc1xuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgV29ya3NwYWNlRWRpdENsaWVudENhcGFiaWxpdGllcyB7XG4gIC8qKlxuICAgKiBUaGUgY2xpZW50IHN1cHBvcnRzIHZlcnNpb25lZCBkb2N1bWVudCBjaGFuZ2VzIGluIGBXb3Jrc3BhY2VFZGl0YHNcbiAgICovXG4gIGRvY3VtZW50Q2hhbmdlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBvcGVyYXRpb25zIHRoZSBjbGllbnQgc3VwcG9ydHMuIENsaWVudHMgc2hvdWxkIGF0IGxlYXN0XG4gICAqIHN1cHBvcnQgJ2NyZWF0ZScsICdyZW5hbWUnIGFuZCAnZGVsZXRlJyBmaWxlcyBhbmQgZm9sZGVycy5cbiAgICpcbiAgICogQHNpbmNlIDMuMTMuMFxuICAgKi9cbiAgcmVzb3VyY2VPcGVyYXRpb25zPzogUmVzb3VyY2VPcGVyYXRpb25LaW5kW107XG5cbiAgLyoqXG4gICAqIFRoZSBmYWlsdXJlIGhhbmRsaW5nIHN0cmF0ZWd5IG9mIGEgY2xpZW50IGlmIGFwcGx5aW5nIHRoZSB3b3Jrc3BhY2UgZWRpdFxuICAgKiBmYWlscy5cbiAgICpcbiAgICogQHNpbmNlIDMuMTMuMFxuICAgKi9cbiAgZmFpbHVyZUhhbmRsaW5nPzogRmFpbHVyZUhhbmRsaW5nS2luZDtcbn1cblxuLyoqXG4gKiBUaGUga2luZCBvZiByZXNvdXJjZSBvcGVyYXRpb25zIHN1cHBvcnRlZCBieSB0aGUgY2xpZW50LlxuICovXG5leHBvcnQgZW51bSBSZXNvdXJjZU9wZXJhdGlvbktpbmQge1xuICAvKipcbiAgICogU3VwcG9ydHMgY3JlYXRpbmcgbmV3IGZpbGVzIGFuZCBmb2xkZXJzLlxuICAgKi9cbiAgQ1JFQVRFID0gJ2NyZWF0ZScsXG4gIC8qKlxuICAgKiBTdXBwb3J0cyByZW5hbWluZyBleGlzdGluZyBmaWxlcyBhbmQgZm9sZGVycy5cbiAgICovXG4gIFJFTkFNRSA9ICdyZW5hbWUnLFxuICAvKipcbiAgICogU3VwcG9ydHMgZGVsZXRpbmcgZXhpc3RpbmcgZmlsZXMgYW5kIGZvbGRlcnMuXG4gICAqL1xuICBERUxFVEUgPSAnZGVsZXRlJyxcbn1cblxuLyoqXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jd29ya3NwYWNlRWRpdENsaWVudENhcGFiaWxpdGllc1xuICovXG5leHBvcnQgZW51bSBGYWlsdXJlSGFuZGxpbmdLaW5kIHtcbiAgLyoqXG4gICAqIEFwcGx5aW5nIHRoZSB3b3Jrc3BhY2UgY2hhbmdlIGlzIHNpbXBseSBhYm9ydGVkIGlmIG9uZSBvZiB0aGUgY2hhbmdlc1xuICAgKiBwcm92aWRlZCBmYWlscy5cbiAgICogQWxsIG9wZXJhdGlvbnMgZXhlY3V0ZWQgYmVmb3JlIHRoZSBmYWlsaW5nIG9wZXJhdGlvbiBzdGF5IGV4ZWN1dGVkLlxuICAgKi9cbiAgQWJvcnQgPSAnYWJvcnQnLFxuXG4gIC8qKlxuICAgKiBBbGwgb3BlcmF0aW9ucyBhcmUgZXhlY3V0ZWQgdHJhbnNhY3Rpb25hbC4gVGhhdCBtZWFucyB0aGV5IGVpdGhlciBhbGxcbiAgICogc3VjY2VlZCBvciBubyBjaGFuZ2VzIGF0IGFsbCBhcmUgYXBwbGllZCB0byB0aGUgd29ya3NwYWNlLlxuICAgKi9cbiAgVHJhbnNhY3Rpb25hbCA9ICd0cmFuc2FjdGlvbmFsJyxcblxuICAvKipcbiAgICogSWYgdGhlIHdvcmtzcGFjZSBlZGl0IGNvbnRhaW5zIG9ubHkgdGV4dHVhbCBmaWxlIGNoYW5nZXMsIHRoZXkgYXJlXG4gICAqIGV4ZWN1dGVkIHRyYW5zYWN0aW9uYWxseS5cbiAgICogSWYgcmVzb3VyY2UgY2hhbmdlcyAoY3JlYXRlLCByZW5hbWUgb3IgZGVsZXRlIGZpbGUpIGFyZSBwYXJ0IG9mIHRoZVxuICAgKiBjaGFuZ2UsIHRoZSBmYWlsdXJlIGhhbmRsaW5nIHN0cmF0ZWd5IGlzIGFib3J0LlxuICAgKi9cbiAgVGV4dE9ubHlUcmFuc2FjdGlvbmFsID0gJ3RleHRPbmx5VHJhbnNhY3Rpb25hbCcsXG5cbiAgLyoqXG4gICAqIFRoZSBjbGllbnQgdHJpZXMgdG8gdW5kbyB0aGUgb3BlcmF0aW9ucyBhbHJlYWR5IGV4ZWN1dGVkLiBCdXQgdGhlcmUgaXMgbm9cbiAgICogZ3VhcmFudGVlIHRoYXQgdGhpcyBpcyBzdWNjZWVkaW5nLlxuICAgKi9cbiAgVW5kbyA9ICd1bmRvJyxcbn1cblxuLyoqXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jZG9jdW1lbnRGaWx0ZXJcbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIERvY3VtZW50RmlsdGVyIHtcbiAgLyoqXG4gICAqIEEgbGFuZ3VhZ2UgaWQsIGxpa2UgYHR5cGVzY3JpcHRgLlxuICAgKi9cbiAgbGFuZ3VhZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgVXJpIFtzY2hlbWVdKCNVcmkuc2NoZW1lKSwgbGlrZSBgZmlsZWAgb3IgYHVudGl0bGVkYC5cbiAgICovXG4gIHNjaGVtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBnbG9iIHBhdHRlcm4sIGxpa2UgYCoue3RzLGpzfWAuXG4gICAqXG4gICAqIEdsb2IgcGF0dGVybnMgY2FuIGhhdmUgdGhlIGZvbGxvd2luZyBzeW50YXg6XG4gICAqIC0gYCpgIHRvIG1hdGNoIG9uZSBvciBtb3JlIGNoYXJhY3RlcnMgaW4gYSBwYXRoIHNlZ21lbnRcbiAgICogLSBgP2AgdG8gbWF0Y2ggb24gb25lIGNoYXJhY3RlciBpbiBhIHBhdGggc2VnbWVudFxuICAgKiAtIGAqKmAgdG8gbWF0Y2ggYW55IG51bWJlciBvZiBwYXRoIHNlZ21lbnRzLCBpbmNsdWRpbmcgbm9uZVxuICAgKiAtIGB7fWAgdG8gZ3JvdXAgY29uZGl0aW9uc1xuICAgKiAgIChlLmcuIGAqKuKAiy8qLnt0cyxqc31gIG1hdGNoZXMgYWxsIFR5cGVTY3JpcHQgYW5kIEphdmFTY3JpcHQgZmlsZXMpXG4gICAqIC0gYFtdYCB0byBkZWNsYXJlIGEgcmFuZ2Ugb2YgY2hhcmFjdGVycyB0byBtYXRjaCBpbiBhIHBhdGggc2VnbWVudFxuICAgKiAgIChlLmcuLCBgZXhhbXBsZS5bMC05XWAgdG8gbWF0Y2ggb24gYGV4YW1wbGUuMGAsIGBleGFtcGxlLjFgLCDigKYpXG4gICAqIC0gYFshLi4uXWAgdG8gbmVnYXRlIGEgcmFuZ2Ugb2YgY2hhcmFjdGVycyB0byBtYXRjaCBpbiBhIHBhdGggc2VnbWVudFxuICAgKiAgIChlLmcuLCBgZXhhbXBsZS5bITAtOV1gIHRvIG1hdGNoIG9uIGBleGFtcGxlLmFgLCBgZXhhbXBsZS5iYCxcbiAgICogICAgYnV0IG5vdCBgZXhhbXBsZS4wYClcbiAgICovXG4gIHBhdHRlcm4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI2RvY3VtZW50RmlsdGVyXG4gKi9cbmV4cG9ydCB0eXBlIERvY3VtZW50U2VsZWN0b3IgPSBEb2N1bWVudEZpbHRlcltdO1xuXG4vKipcbiAqIFN0YXRpYyByZWdpc3RyYXRpb24gb3B0aW9ucyB0byBiZSByZXR1cm5lZCBpbiB0aGUgaW5pdGlhbGl6ZSByZXF1ZXN0LlxuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgU3RhdGljUmVnaXN0cmF0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgaWQgdXNlZCB0byByZWdpc3RlciB0aGUgcmVxdWVzdC4gVGhlIGlkIGNhbiBiZSB1c2VkIHRvIGRlcmVnaXN0ZXJcbiAgICogdGhlIHJlcXVlc3QgYWdhaW4uIFNlZSBhbHNvIFJlZ2lzdHJhdGlvbiNpZC5cbiAgICovXG4gIGlkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEdlbmVyYWwgdGV4dCBkb2N1bWVudCByZWdpc3RyYXRpb24gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFRleHREb2N1bWVudFJlZ2lzdHJhdGlvbk9wdGlvbnMge1xuICAvKipcbiAgICogQSBkb2N1bWVudCBzZWxlY3RvciB0byBpZGVudGlmeSB0aGUgc2NvcGUgb2YgdGhlIHJlZ2lzdHJhdGlvbi5cbiAgICogSWYgc2V0IHRvIG51bGwsIHRoZSBkb2N1bWVudCBzZWxlY3RvciBwcm92aWRlZCBvbiB0aGUgY2xpZW50IHNpZGVcbiAgICogd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgZG9jdW1lbnRTZWxlY3RvcjogRG9jdW1lbnRTZWxlY3RvcnxudWxsO1xufVxuXG4vKipcbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbnMvc3BlY2lmaWNhdGlvbi1jdXJyZW50LyNpbml0aWF0aW5nV29ya0RvbmVQcm9ncmVzc1xuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgV29ya0RvbmVQcm9ncmVzc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCB0b2tlbiB0aGF0IGEgc2VydmVyIGNhbiB1c2UgdG8gcmVwb3J0IHdvcmsgZG9uZSBwcm9ncmVzcy5cbiAgICovXG4gIHdvcmtEb25lVG9rZW4/OiBQcm9ncmVzc1Rva2VuO1xufVxuXG4vKipcbiAqIFRoZSBkaWFnbm9zdGljIHRhZ3MuXG4gKlxuICogQHNpbmNlIDMuMTUuMFxuICovXG5leHBvcnQgZW51bSBEaWFnbm9zdGljVGFnIHtcbiAgLyoqXG4gICAqIFVudXNlZCBvciB1bm5lY2Vzc2FyeSBjb2RlLlxuICAgKlxuICAgKiBDbGllbnRzIGFyZSBhbGxvd2VkIHRvIHJlbmRlciBkaWFnbm9zdGljcyB3aXRoIHRoaXMgdGFnIGZhZGVkIG91dFxuICAgKiBpbnN0ZWFkIG9mIGhhdmluZyBhbiBlcnJvciBzcXVpZ2dsZS5cbiAgICovXG4gIFVubmVjZXNzYXJ5ID0gMSxcbiAgLyoqXG4gICAqIERlcHJlY2F0ZWQgb3Igb2Jzb2xldGUgY29kZS5cbiAgICpcbiAgICogQ2xpZW50cyBhcmUgYWxsb3dlZCB0byByZW5kZXJlZCBkaWFnbm9zdGljcyB3aXRoIHRoaXMgdGFnIHN0cmlrZSB0aHJvdWdoLlxuICAgKi9cbiAgRGVwcmVjYXRlZCA9IDIsXG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI2RpYWdub3N0aWNcbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIERpYWdub3N0aWMge1xuICAvKipcbiAgICogVGhlIHJhbmdlIGF0IHdoaWNoIHRoZSBtZXNzYWdlIGFwcGxpZXMuXG4gICAqL1xuICByYW5nZTogUmFuZ2U7XG5cbiAgLyoqXG4gICAqIFRoZSBkaWFnbm9zdGljJ3Mgc2V2ZXJpdHkuIENhbiBiZSBvbWl0dGVkLiBJZiBvbWl0dGVkIGl0IGlzIHVwIHRvIHRoZVxuICAgKiBjbGllbnQgdG8gaW50ZXJwcmV0IGRpYWdub3N0aWNzIGFzIGVycm9yLCB3YXJuaW5nLCBpbmZvIG9yIGhpbnQuXG4gICAqL1xuICBzZXZlcml0eT86IERpYWdub3N0aWNTZXZlcml0eTtcblxuICAvKipcbiAgICogVGhlIGRpYWdub3N0aWMncyBjb2RlLCB3aGljaCBtaWdodCBhcHBlYXIgaW4gdGhlIHVzZXIgaW50ZXJmYWNlLlxuICAgKi9cbiAgY29kZT86IG51bWJlcnxzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgaHVtYW4tcmVhZGFibGUgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIHNvdXJjZSBvZiB0aGlzXG4gICAqIGRpYWdub3N0aWMsIGUuZy4gJ3R5cGVzY3JpcHQnIG9yICdzdXBlciBsaW50Jy5cbiAgICovXG4gIHNvdXJjZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRpYWdub3N0aWMncyBtZXNzYWdlLlxuICAgKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIG1ldGFkYXRhIGFib3V0IHRoZSBkaWFnbm9zdGljLlxuICAgKlxuICAgKiBAc2luY2UgMy4xNS4wXG4gICAqL1xuICB0YWdzPzogRGlhZ25vc3RpY1RhZ1tdO1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiByZWxhdGVkIGRpYWdub3N0aWMgaW5mb3JtYXRpb24sIGUuZy4gd2hlbiBzeW1ib2wtbmFtZXMgd2l0aGluXG4gICAqIGEgc2NvcGUgY29sbGlkZSBhbGwgZGVmaW5pdGlvbnMgY2FuIGJlIG1hcmtlZCB2aWEgdGhpcyBwcm9wZXJ0eS5cbiAgICovXG4gIHJlbGF0ZWRJbmZvcm1hdGlvbj86IERpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb25bXTtcbn1cblxuLyoqXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jZGlhZ25vc3RpY1xuICovXG5leHBvcnQgZW51bSBEaWFnbm9zdGljU2V2ZXJpdHkge1xuICAvKipcbiAgICogUmVwb3J0cyBhbiBlcnJvci5cbiAgICovXG4gIEVycm9yID0gMSxcbiAgLyoqXG4gICAqIFJlcG9ydHMgYSB3YXJuaW5nLlxuICAgKi9cbiAgV2FybmluZyA9IDIsXG4gIC8qKlxuICAgKiBSZXBvcnRzIGFuIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgSW5mb3JtYXRpb24gPSAzLFxuICAvKipcbiAgICogUmVwb3J0cyBhIGhpbnQuXG4gICAqL1xuICBIaW50ID0gNCxcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcmVsYXRlZCBtZXNzYWdlIGFuZCBzb3VyY2UgY29kZSBsb2NhdGlvbiBmb3IgYSBkaWFnbm9zdGljLlxuICogVGhpcyBzaG91bGQgYmUgdXNlZCB0byBwb2ludCB0byBjb2RlIGxvY2F0aW9ucyB0aGF0IGNhdXNlIG9yIGFyZSByZWxhdGVkXG4gKiB0byBhIGRpYWdub3N0aWNzLCBmb3IgZXhhbXBsZSwgd2hlbiBkdXBsaWNhdGluZyBhIHN5bWJvbCBpbiBhIHNjb3BlLlxuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRGlhZ25vc3RpY1JlbGF0ZWRJbmZvcm1hdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gb2YgdGhpcyByZWxhdGVkIGRpYWdub3N0aWMgaW5mb3JtYXRpb24uXG4gICAqL1xuICBsb2NhdGlvbjogTG9jYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIG9mIHRoaXMgcmVsYXRlZCBkaWFnbm9zdGljIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgc3ltYm9sIGtpbmQuXG4gKi9cbmV4cG9ydCBlbnVtIFN5bWJvbEtpbmQge1xuICBGaWxlID0gMSxcbiAgTW9kdWxlID0gMixcbiAgTmFtZXNwYWNlID0gMyxcbiAgUGFja2FnZSA9IDQsXG4gIENsYXNzID0gNSxcbiAgTWV0aG9kID0gNixcbiAgUHJvcGVydHkgPSA3LFxuICBGaWVsZCA9IDgsXG4gIENvbnN0cnVjdG9yID0gOSxcbiAgRW51bSA9IDEwLFxuICBJbnRlcmZhY2UgPSAxMSxcbiAgRnVuY3Rpb24gPSAxMixcbiAgVmFyaWFibGUgPSAxMyxcbiAgQ29uc3RhbnQgPSAxNCxcbiAgU3RyaW5nID0gMTUsXG4gIE51bWJlciA9IDE2LFxuICBCb29sZWFuID0gMTcsXG4gIEFycmF5ID0gMTgsXG4gIE9iamVjdCA9IDE5LFxuICBLZXkgPSAyMCxcbiAgTnVsbCA9IDIxLFxuICBFbnVtTWVtYmVyID0gMjIsXG4gIFN0cnVjdCA9IDIzLFxuICBFdmVudCA9IDI0LFxuICBPcGVyYXRvciA9IDI1LFxuICBUeXBlUGFyYW1ldGVyID0gMjYsXG59XG5cbi8qKlxuICogU3ltYm9sIHRhZ3MgYXJlIGV4dHJhIGFubm90YXRpb25zIHRoYXQgdHdlYWsgdGhlIHJlbmRlcmluZyBvZiBhIHN5bWJvbC5cbiAqXG4gKiBAc2luY2UgMy4xNlxuICovXG5leHBvcnQgZW51bSBTeW1ib2xUYWcge1xuXG4gIC8qKlxuICAgKiBSZW5kZXIgYSBzeW1ib2wgYXMgb2Jzb2xldGUsIHVzdWFsbHkgdXNpbmcgYSBzdHJpa2Utb3V0LlxuICAgKi9cbiAgRGVwcmVjYXRlZCA9IDEsXG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3dvcmtzcGFjZV9leGVjdXRlQ29tbWFuZFxuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRXhlY3V0ZUNvbW1hbmRDbGllbnRDYXBhYmlsaXRpZXMge1xuICAvKipcbiAgICogRXhlY3V0ZSBjb21tYW5kIHN1cHBvcnRzIGR5bmFtaWMgcmVnaXN0cmF0aW9uLlxuICAgKi9cbiAgZHluYW1pY1JlZ2lzdHJhdGlvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3BhcnRpYWxSZXN1bHRQYXJhbXNcbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFBhcnRpYWxSZXN1bHRQYXJhbXMge1xuICAvKipcbiAgICogQW4gb3B0aW9uYWwgdG9rZW4gdGhhdCBhIHNlcnZlciBjYW4gdXNlIHRvIHJlcG9ydCBwYXJ0aWFsIHJlc3VsdHMgKGUuZy5cbiAgICogc3RyZWFtaW5nKSB0byB0aGUgY2xpZW50LlxuICAgKi9cbiAgcGFydGlhbFJlc3VsdFRva2VuPzogUHJvZ3Jlc3NUb2tlbjtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGFuIGludGVnZXIgbnVtYmVyIGluIHRoZSByYW5nZSBvZiAtMl4zMSB0byAyXjMxIC0gMS5cbiAqL1xuZXhwb3J0IHR5cGUgaW50ZWdlciA9IG51bWJlcjtcbi8qKlxuICogRGVmaW5lcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIG51bWJlciBpbiB0aGUgcmFuZ2Ugb2YgMCB0byAyXjMxIC0gMS5cbiAqL1xuZXhwb3J0IHR5cGUgdWludGVnZXIgPSBudW1iZXI7XG4vKipcbiAqIERlZmluZXMgYSBkZWNpbWFsIG51bWJlci4gU2luY2UgZGVjaW1hbCBudW1iZXJzIGFyZSB2ZXJ5XG4gKiByYXJlIGluIHRoZSBsYW5ndWFnZSBzZXJ2ZXIgc3BlY2lmaWNhdGlvbiB3ZSBkZW5vdGUgdGhlXG4gKiBleGFjdCByYW5nZSB3aXRoIGV2ZXJ5IGRlY2ltYWwgdXNpbmcgdGhlIG1hdGhlbWF0aWNzXG4gKiBpbnRlcnZhbCBub3RhdGlvbiAoZS5nLiBbMCwgMV0gZGVub3RlcyBhbGwgZGVjaW1hbHMgZCB3aXRoXG4gKiAwIDw9IGQgPD0gMS5cbiAqL1xuZXhwb3J0IHR5cGUgZGVjaW1hbCA9IG51bWJlcjtcblxuLyoqXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jaW5pdGlhbGl6ZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbml0aWFsaXplZCBleHRlbmRzIE5vdGlmaWNhdGlvbk1lc3NhZ2U8SW5pdGlhbGl6ZWRQYXJhbXM+IHtcbiAgbWV0aG9kOiBNZXRob2QuSW5pdGlhbGl6ZWQ7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI2luaXRpYWxpemVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5pdGlhbGl6ZWRQYXJhbXMge31cblxuLyoqXG4gKiBHZW5lcmFsIHBhcmFtZXRlcnMgdG8gcmVnaXN0ZXIgZm9yIGEgY2FwYWJpbGl0eS5cbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbnMvc3BlY2lmaWNhdGlvbi1jdXJyZW50LyNjbGllbnRfcmVnaXN0ZXJDYXBhYmlsaXR5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0cmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBpZCB1c2VkIHRvIHJlZ2lzdGVyIHRoZSByZXF1ZXN0LiBUaGUgaWQgY2FuIGJlIHVzZWQgdG8gZGVyZWdpc3RlclxuICAgKiB0aGUgcmVxdWVzdCBhZ2Fpbi5cbiAgICovXG4gIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRob2QgLyBjYXBhYmlsaXR5IHRvIHJlZ2lzdGVyIGZvci5cbiAgICovXG4gIG1ldGhvZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIG5lY2Vzc2FyeSBmb3IgdGhlIHJlZ2lzdHJhdGlvbi5cbiAgICovXG4gIHJlZ2lzdGVyT3B0aW9ucz86IHVua25vd247XG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI2NsaWVudF9yZWdpc3RlckNhcGFiaWxpdHlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyYXRpb25QYXJhbXMge1xuICByZWdpc3RyYXRpb25zOiBSZWdpc3RyYXRpb25bXTtcbn1cbiJdfQ==
|
web/lsp/settings_node.js
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"use strict";
|
2 |
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3 |
+
exports.all = void 0;
|
4 |
+
/**
|
5 |
+
* Settings which may be used by the Python language server.
|
6 |
+
* These are from the default preferences from a VSCode client, culled
|
7 |
+
* to the LSP-related values.
|
8 |
+
*
|
9 |
+
* The difficulty here is that LSP only defines a mechanism to provide
|
10 |
+
* generic settings and the server expects the client to send all necessary
|
11 |
+
* settings. VSCode sends all Python settings to every Python language server.
|
12 |
+
* Furthermore the language server may request specific settings later.
|
13 |
+
*
|
14 |
+
* See:
|
15 |
+
* https://github.com/microsoft/pyright/blob/9d4e58d06643dccbfe0f450070334675b6b64724/docs/settings.md
|
16 |
+
*/
|
17 |
+
exports.all = {
|
18 |
+
'python': {
|
19 |
+
'analysis': {
|
20 |
+
'diagnosticPublishDelay': 1000,
|
21 |
+
'errors': [],
|
22 |
+
'warnings': [],
|
23 |
+
'information': [],
|
24 |
+
'disabled': [],
|
25 |
+
'typeshedPaths': [],
|
26 |
+
'cacheFolderPath': '',
|
27 |
+
'memory': { 'keepLibraryAst': false },
|
28 |
+
'logLevel': 'Warning',
|
29 |
+
'symbolsHierarchyDepthLimit': 10,
|
30 |
+
'completeFunctionParens': false,
|
31 |
+
'autoImportCompletions': true,
|
32 |
+
'autoSearchPaths': true,
|
33 |
+
'stubPath': 'typings',
|
34 |
+
'diagnosticMode': 'openFilesOnly',
|
35 |
+
'extraPaths': [],
|
36 |
+
'useLibraryCodeForTypes': true,
|
37 |
+
'typeCheckingMode': 'basic',
|
38 |
+
// See diagnostics explanation at:
|
39 |
+
// https://github.com/microsoft/pyright/blob/main/docs/configuration.md
|
40 |
+
'diagnosticSeverityOverrides': {},
|
41 |
+
},
|
42 |
+
},
|
43 |
+
};
|
44 |
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3Nfbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2dlbmZpbGVzL3RoaXJkX3BhcnR5L2NvbGFiL3NvdXJjZXMvbHNwL3NldHRpbmdzX25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7Ozs7Ozs7OztHQVlHO0FBQ1UsUUFBQSxHQUFHLEdBQTZCO0lBQzNDLFFBQVEsRUFBRTtRQUNSLFVBQVUsRUFBRTtZQUNWLHdCQUF3QixFQUFFLElBQUk7WUFDOUIsUUFBUSxFQUFFLEVBQUU7WUFDWixVQUFVLEVBQUUsRUFBRTtZQUNkLGFBQWEsRUFBRSxFQUFFO1lBQ2pCLFVBQVUsRUFBRSxFQUFFO1lBQ2QsZUFBZSxFQUFFLEVBQUU7WUFDbkIsaUJBQWlCLEVBQUUsRUFBRTtZQUNyQixRQUFRLEVBQUUsRUFBQyxnQkFBZ0IsRUFBRSxLQUFLLEVBQUM7WUFDbkMsVUFBVSxFQUFFLFNBQVM7WUFDckIsNEJBQTRCLEVBQUUsRUFBRTtZQUNoQyx3QkFBd0IsRUFBRSxLQUFLO1lBQy9CLHVCQUF1QixFQUFFLElBQUk7WUFDN0IsaUJBQWlCLEVBQUUsSUFBSTtZQUN2QixVQUFVLEVBQUUsU0FBUztZQUNyQixnQkFBZ0IsRUFBRSxlQUFlO1lBQ2pDLFlBQVksRUFBRSxFQUFFO1lBQ2hCLHdCQUF3QixFQUFFLElBQUk7WUFDOUIsa0JBQWtCLEVBQUUsT0FBTztZQUMzQixrQ0FBa0M7WUFDbEMsdUVBQXVFO1lBQ3ZFLDZCQUE2QixFQUFFLEVBQUU7U0FDbEM7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNldHRpbmdzIHdoaWNoIG1heSBiZSB1c2VkIGJ5IHRoZSBQeXRob24gbGFuZ3VhZ2Ugc2VydmVyLlxuICogVGhlc2UgYXJlIGZyb20gdGhlIGRlZmF1bHQgcHJlZmVyZW5jZXMgZnJvbSBhIFZTQ29kZSBjbGllbnQsIGN1bGxlZFxuICogdG8gdGhlIExTUC1yZWxhdGVkIHZhbHVlcy5cbiAqXG4gKiBUaGUgZGlmZmljdWx0eSBoZXJlIGlzIHRoYXQgTFNQIG9ubHkgZGVmaW5lcyBhIG1lY2hhbmlzbSB0byBwcm92aWRlXG4gKiBnZW5lcmljIHNldHRpbmdzIGFuZCB0aGUgc2VydmVyIGV4cGVjdHMgdGhlIGNsaWVudCB0byBzZW5kIGFsbCBuZWNlc3NhcnlcbiAqIHNldHRpbmdzLiBWU0NvZGUgc2VuZHMgYWxsIFB5dGhvbiBzZXR0aW5ncyB0byBldmVyeSBQeXRob24gbGFuZ3VhZ2Ugc2VydmVyLlxuICogRnVydGhlcm1vcmUgdGhlIGxhbmd1YWdlIHNlcnZlciBtYXkgcmVxdWVzdCBzcGVjaWZpYyBzZXR0aW5ncyBsYXRlci5cbiAqXG4gKiBTZWU6XG4gKiBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L3B5cmlnaHQvYmxvYi85ZDRlNThkMDY2NDNkY2NiZmUwZjQ1MDA3MDMzNDY3NWI2YjY0NzI0L2RvY3Mvc2V0dGluZ3MubWRcbiAqL1xuZXhwb3J0IGNvbnN0IGFsbDoge1trZXk6IHN0cmluZ106IHVua25vd259ID0ge1xuICAncHl0aG9uJzoge1xuICAgICdhbmFseXNpcyc6IHtcbiAgICAgICdkaWFnbm9zdGljUHVibGlzaERlbGF5JzogMTAwMCxcbiAgICAgICdlcnJvcnMnOiBbXSxcbiAgICAgICd3YXJuaW5ncyc6IFtdLFxuICAgICAgJ2luZm9ybWF0aW9uJzogW10sXG4gICAgICAnZGlzYWJsZWQnOiBbXSxcbiAgICAgICd0eXBlc2hlZFBhdGhzJzogW10sXG4gICAgICAnY2FjaGVGb2xkZXJQYXRoJzogJycsXG4gICAgICAnbWVtb3J5JzogeydrZWVwTGlicmFyeUFzdCc6IGZhbHNlfSxcbiAgICAgICdsb2dMZXZlbCc6ICdXYXJuaW5nJyxcbiAgICAgICdzeW1ib2xzSGllcmFyY2h5RGVwdGhMaW1pdCc6IDEwLFxuICAgICAgJ2NvbXBsZXRlRnVuY3Rpb25QYXJlbnMnOiBmYWxzZSxcbiAgICAgICdhdXRvSW1wb3J0Q29tcGxldGlvbnMnOiB0cnVlLFxuICAgICAgJ2F1dG9TZWFyY2hQYXRocyc6IHRydWUsXG4gICAgICAnc3R1YlBhdGgnOiAndHlwaW5ncycsXG4gICAgICAnZGlhZ25vc3RpY01vZGUnOiAnb3BlbkZpbGVzT25seScsXG4gICAgICAnZXh0cmFQYXRocyc6IFtdLFxuICAgICAgJ3VzZUxpYnJhcnlDb2RlRm9yVHlwZXMnOiB0cnVlLFxuICAgICAgJ3R5cGVDaGVja2luZ01vZGUnOiAnYmFzaWMnLFxuICAgICAgLy8gU2VlIGRpYWdub3N0aWNzIGV4cGxhbmF0aW9uIGF0OlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9weXJpZ2h0L2Jsb2IvbWFpbi9kb2NzL2NvbmZpZ3VyYXRpb24ubWRcbiAgICAgICdkaWFnbm9zdGljU2V2ZXJpdHlPdmVycmlkZXMnOiB7fSxcbiAgICB9LFxuICB9LFxufTtcbiJdfQ==
|
web/lsp/text_document_node.js
ADDED
@@ -0,0 +1,313 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"use strict";
|
2 |
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3 |
+
exports.SignatureHelpTriggerKind = exports.InsertTextMode = exports.InsertTextFormat = exports.CodeActionKind = exports.TextDocumentSyncKind = exports.CompletionTriggerKind = exports.LanguageIdentifier = exports.CompletionItemKind = exports.CompletionItemTag = exports.MarkupKind = void 0;
|
4 |
+
/**
|
5 |
+
* Describes the content type that a client supports in various
|
6 |
+
* result literals like `Hover`, `ParameterInfo` or `CompletionItem`.
|
7 |
+
*
|
8 |
+
* Please note that `MarkupKinds` must not start with a `$`. This kinds
|
9 |
+
* are reserved for internal usage.
|
10 |
+
*/
|
11 |
+
var MarkupKind;
|
12 |
+
(function (MarkupKind) {
|
13 |
+
/**
|
14 |
+
* Plain text is supported as a content format
|
15 |
+
*/
|
16 |
+
MarkupKind["PlainText"] = "plaintext";
|
17 |
+
/**
|
18 |
+
* Markdown is supported as a content format
|
19 |
+
*/
|
20 |
+
MarkupKind["Markdown"] = "markdown";
|
21 |
+
})(MarkupKind || (exports.MarkupKind = MarkupKind = {}));
|
22 |
+
/**
|
23 |
+
* Completion item tags are extra annotations that tweak the rendering of
|
24 |
+
* a completion item.
|
25 |
+
*
|
26 |
+
* @since 3.15.0
|
27 |
+
*/
|
28 |
+
var CompletionItemTag;
|
29 |
+
(function (CompletionItemTag) {
|
30 |
+
/**
|
31 |
+
* Render a completion as obsolete, usually using a strike-out.
|
32 |
+
*/
|
33 |
+
CompletionItemTag[CompletionItemTag["Deprecated"] = 1] = "Deprecated";
|
34 |
+
})(CompletionItemTag || (exports.CompletionItemTag = CompletionItemTag = {}));
|
35 |
+
/**
|
36 |
+
* The kind of a completion entry.
|
37 |
+
*/
|
38 |
+
var CompletionItemKind;
|
39 |
+
(function (CompletionItemKind) {
|
40 |
+
CompletionItemKind[CompletionItemKind["Text"] = 1] = "Text";
|
41 |
+
CompletionItemKind[CompletionItemKind["Method"] = 2] = "Method";
|
42 |
+
CompletionItemKind[CompletionItemKind["Function"] = 3] = "Function";
|
43 |
+
CompletionItemKind[CompletionItemKind["Constructor"] = 4] = "Constructor";
|
44 |
+
CompletionItemKind[CompletionItemKind["Field"] = 5] = "Field";
|
45 |
+
CompletionItemKind[CompletionItemKind["Variable"] = 6] = "Variable";
|
46 |
+
CompletionItemKind[CompletionItemKind["Class"] = 7] = "Class";
|
47 |
+
CompletionItemKind[CompletionItemKind["Interface"] = 8] = "Interface";
|
48 |
+
CompletionItemKind[CompletionItemKind["Module"] = 9] = "Module";
|
49 |
+
CompletionItemKind[CompletionItemKind["Property"] = 10] = "Property";
|
50 |
+
CompletionItemKind[CompletionItemKind["Unit"] = 11] = "Unit";
|
51 |
+
CompletionItemKind[CompletionItemKind["Value"] = 12] = "Value";
|
52 |
+
CompletionItemKind[CompletionItemKind["Enum"] = 13] = "Enum";
|
53 |
+
CompletionItemKind[CompletionItemKind["Keyword"] = 14] = "Keyword";
|
54 |
+
CompletionItemKind[CompletionItemKind["Snippet"] = 15] = "Snippet";
|
55 |
+
CompletionItemKind[CompletionItemKind["Color"] = 16] = "Color";
|
56 |
+
CompletionItemKind[CompletionItemKind["File"] = 17] = "File";
|
57 |
+
CompletionItemKind[CompletionItemKind["Reference"] = 18] = "Reference";
|
58 |
+
CompletionItemKind[CompletionItemKind["Folder"] = 19] = "Folder";
|
59 |
+
CompletionItemKind[CompletionItemKind["EnumMember"] = 20] = "EnumMember";
|
60 |
+
CompletionItemKind[CompletionItemKind["Constant"] = 21] = "Constant";
|
61 |
+
CompletionItemKind[CompletionItemKind["Struct"] = 22] = "Struct";
|
62 |
+
CompletionItemKind[CompletionItemKind["Event"] = 23] = "Event";
|
63 |
+
CompletionItemKind[CompletionItemKind["Operator"] = 24] = "Operator";
|
64 |
+
CompletionItemKind[CompletionItemKind["TypeParameter"] = 25] = "TypeParameter";
|
65 |
+
})(CompletionItemKind || (exports.CompletionItemKind = CompletionItemKind = {}));
|
66 |
+
/**
|
67 |
+
* Known language identifiers.
|
68 |
+
* https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocumentItem
|
69 |
+
*/
|
70 |
+
var LanguageIdentifier;
|
71 |
+
(function (LanguageIdentifier) {
|
72 |
+
LanguageIdentifier["ABAP"] = "abap";
|
73 |
+
LanguageIdentifier["WindowsBat"] = "bat";
|
74 |
+
LanguageIdentifier["BibTeX"] = "bibtex";
|
75 |
+
LanguageIdentifier["Clojure"] = "clojure";
|
76 |
+
LanguageIdentifier["Coffeescript"] = "coffeescript";
|
77 |
+
LanguageIdentifier["C"] = "c";
|
78 |
+
LanguageIdentifier["CPlusPlus"] = "cpp";
|
79 |
+
LanguageIdentifier["CSharp"] = "csharp";
|
80 |
+
LanguageIdentifier["CSS"] = "css";
|
81 |
+
LanguageIdentifier["Diff"] = "diff";
|
82 |
+
LanguageIdentifier["Dart"] = "dart";
|
83 |
+
LanguageIdentifier["Dockerfile"] = "dockerfile";
|
84 |
+
LanguageIdentifier["Elixir"] = "elixir";
|
85 |
+
LanguageIdentifier["Erlang"] = "erlang";
|
86 |
+
LanguageIdentifier["FSharp"] = "fsharp";
|
87 |
+
LanguageIdentifier["GitCommit"] = "git-commit";
|
88 |
+
LanguageIdentifier["GitRebase"] = "git-rebase";
|
89 |
+
LanguageIdentifier["Go"] = "go";
|
90 |
+
LanguageIdentifier["Groovy"] = "groovy";
|
91 |
+
LanguageIdentifier["Handlebars"] = "handlebars";
|
92 |
+
LanguageIdentifier["HTML"] = "html";
|
93 |
+
LanguageIdentifier["Ini"] = "ini";
|
94 |
+
LanguageIdentifier["Java"] = "java";
|
95 |
+
LanguageIdentifier["JavaScript"] = "javascript";
|
96 |
+
LanguageIdentifier["JavaScriptReact"] = "javascriptreact";
|
97 |
+
LanguageIdentifier["JSON"] = "json";
|
98 |
+
LanguageIdentifier["LaTeX"] = "latex";
|
99 |
+
LanguageIdentifier["Less"] = "less";
|
100 |
+
LanguageIdentifier["Lua"] = "lua";
|
101 |
+
LanguageIdentifier["Makefile"] = "makefile";
|
102 |
+
LanguageIdentifier["Markdown"] = "markdown";
|
103 |
+
LanguageIdentifier["ObjectiveC"] = "c";
|
104 |
+
LanguageIdentifier["ObjectiveCPlusPlus"] = "cpp";
|
105 |
+
LanguageIdentifier["Perl"] = "perl";
|
106 |
+
LanguageIdentifier["Perl6"] = "perl6";
|
107 |
+
LanguageIdentifier["PHP"] = "php";
|
108 |
+
LanguageIdentifier["Powershell"] = "powershell";
|
109 |
+
LanguageIdentifier["Pug"] = "jade";
|
110 |
+
LanguageIdentifier["Python"] = "python";
|
111 |
+
LanguageIdentifier["R"] = "r";
|
112 |
+
LanguageIdentifier["Razor"] = "razor";
|
113 |
+
LanguageIdentifier["Ruby"] = "ruby";
|
114 |
+
LanguageIdentifier["Rust"] = "rust";
|
115 |
+
LanguageIdentifier["SCSS"] = "scss";
|
116 |
+
LanguageIdentifier["Sass"] = "syntax";
|
117 |
+
LanguageIdentifier["Scala"] = "scala";
|
118 |
+
LanguageIdentifier["ShaderLab"] = "shaderlab";
|
119 |
+
LanguageIdentifier["Shell"] = "shellscript";
|
120 |
+
LanguageIdentifier["SQL"] = "sql";
|
121 |
+
LanguageIdentifier["Swift"] = "swift";
|
122 |
+
LanguageIdentifier["TypeScript"] = "typescript";
|
123 |
+
LanguageIdentifier["TypeScriptReact"] = "typescriptreact";
|
124 |
+
LanguageIdentifier["TeX"] = "tex";
|
125 |
+
LanguageIdentifier["VisualBasic"] = "vb";
|
126 |
+
LanguageIdentifier["XML"] = "xml";
|
127 |
+
LanguageIdentifier["XSL"] = "xsl";
|
128 |
+
LanguageIdentifier["YAML"] = "yaml";
|
129 |
+
})(LanguageIdentifier || (exports.LanguageIdentifier = LanguageIdentifier = {}));
|
130 |
+
/**
|
131 |
+
* How a completion was triggered
|
132 |
+
* https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_completion
|
133 |
+
*/
|
134 |
+
var CompletionTriggerKind;
|
135 |
+
(function (CompletionTriggerKind) {
|
136 |
+
/**
|
137 |
+
* Completion was triggered by typing an identifier (24x7 code
|
138 |
+
* complete), manual invocation (e.g Ctrl+Space) or via API.
|
139 |
+
*/
|
140 |
+
CompletionTriggerKind[CompletionTriggerKind["Invoked"] = 1] = "Invoked";
|
141 |
+
/**
|
142 |
+
* Completion was triggered by a trigger character specified by
|
143 |
+
* the `triggerCharacters` properties of the
|
144 |
+
* `CompletionRegistrationOptions`.
|
145 |
+
*/
|
146 |
+
CompletionTriggerKind[CompletionTriggerKind["TriggerCharacter"] = 2] = "TriggerCharacter";
|
147 |
+
/**
|
148 |
+
* Completion was re-triggered as the current completion list is incomplete.
|
149 |
+
*/
|
150 |
+
CompletionTriggerKind[CompletionTriggerKind["TriggerForIncompleteCompletions"] = 3] = "TriggerForIncompleteCompletions";
|
151 |
+
})(CompletionTriggerKind || (exports.CompletionTriggerKind = CompletionTriggerKind = {}));
|
152 |
+
/**
|
153 |
+
* Defines how the host (editor) should sync document changes
|
154 |
+
* to the language server.
|
155 |
+
*/
|
156 |
+
var TextDocumentSyncKind;
|
157 |
+
(function (TextDocumentSyncKind) {
|
158 |
+
/**
|
159 |
+
* Documents should not be synced at all.
|
160 |
+
*/
|
161 |
+
TextDocumentSyncKind[TextDocumentSyncKind["None"] = 0] = "None";
|
162 |
+
/**
|
163 |
+
* Documents are synced by always sending the full content
|
164 |
+
* of the document.
|
165 |
+
*/
|
166 |
+
TextDocumentSyncKind[TextDocumentSyncKind["Full"] = 1] = "Full";
|
167 |
+
/**
|
168 |
+
* Documents are synced by sending the full content on open.
|
169 |
+
* After that only incremental updates to the document are
|
170 |
+
* send.
|
171 |
+
*/
|
172 |
+
TextDocumentSyncKind[TextDocumentSyncKind["Incremental"] = 2] = "Incremental";
|
173 |
+
})(TextDocumentSyncKind || (exports.TextDocumentSyncKind = TextDocumentSyncKind = {}));
|
174 |
+
/**
|
175 |
+
* The kind of a code action.
|
176 |
+
*
|
177 |
+
* Kinds are a hierarchical list of identifiers separated by `.`,
|
178 |
+
* e.g. `"refactor.extract.function"`.
|
179 |
+
*
|
180 |
+
* The set of kinds is open and the client needs to announce the kinds it
|
181 |
+
* supports to the server during initialization.
|
182 |
+
*/
|
183 |
+
var CodeActionKind;
|
184 |
+
(function (CodeActionKind) {
|
185 |
+
/**
|
186 |
+
* Empty kind.
|
187 |
+
*/
|
188 |
+
CodeActionKind["Empty"] = "";
|
189 |
+
/**
|
190 |
+
* Base kind for quickfix actions: 'quickfix'.
|
191 |
+
*/
|
192 |
+
CodeActionKind["QuickFix"] = "quickfix";
|
193 |
+
/**
|
194 |
+
* Base kind for refactoring actions: 'refactor'.
|
195 |
+
*/
|
196 |
+
CodeActionKind["Refactor"] = "refactor";
|
197 |
+
/**
|
198 |
+
* Base kind for refactoring extraction actions: 'refactor.extract'.
|
199 |
+
*
|
200 |
+
* Example extract actions:
|
201 |
+
*
|
202 |
+
* - Extract method
|
203 |
+
* - Extract function
|
204 |
+
* - Extract variable
|
205 |
+
* - Extract interface from class
|
206 |
+
* - ...
|
207 |
+
*/
|
208 |
+
CodeActionKind["RefactorExtract"] = "refactor.extract";
|
209 |
+
/**
|
210 |
+
* Base kind for refactoring inline actions: 'refactor.inline'.
|
211 |
+
*
|
212 |
+
* Example inline actions:
|
213 |
+
*
|
214 |
+
* - Inline function
|
215 |
+
* - Inline variable
|
216 |
+
* - Inline constant
|
217 |
+
* - ...
|
218 |
+
*/
|
219 |
+
CodeActionKind["RefactorInline"] = "refactor.inline";
|
220 |
+
/**
|
221 |
+
* Base kind for refactoring rewrite actions: 'refactor.rewrite'.
|
222 |
+
*
|
223 |
+
* Example rewrite actions:
|
224 |
+
*
|
225 |
+
* - Convert JavaScript function to class
|
226 |
+
* - Add or remove parameter
|
227 |
+
* - Encapsulate field
|
228 |
+
* - Make method static
|
229 |
+
* - Move method to base class
|
230 |
+
* - ...
|
231 |
+
*/
|
232 |
+
CodeActionKind["RefactorRewrite"] = "refactor.rewrite";
|
233 |
+
/**
|
234 |
+
* Base kind for source actions: `source`.
|
235 |
+
*
|
236 |
+
* Source code actions apply to the entire file.
|
237 |
+
*/
|
238 |
+
CodeActionKind["Source"] = "source";
|
239 |
+
/**
|
240 |
+
* Base kind for an organize imports source action `source.organizeImports`.
|
241 |
+
*/
|
242 |
+
CodeActionKind["SourceOrganizeImports"] = "source.organizeImports";
|
243 |
+
})(CodeActionKind || (exports.CodeActionKind = CodeActionKind = {}));
|
244 |
+
/**
|
245 |
+
* Defines whether the insert text in a completion item should be interpreted as
|
246 |
+
* plain text or a snippet.
|
247 |
+
*/
|
248 |
+
var InsertTextFormat;
|
249 |
+
(function (InsertTextFormat) {
|
250 |
+
/**
|
251 |
+
* The primary text to be inserted is treated as a plain string.
|
252 |
+
*/
|
253 |
+
InsertTextFormat[InsertTextFormat["PlainText"] = 1] = "PlainText";
|
254 |
+
/**
|
255 |
+
* The primary text to be inserted is treated as a snippet.
|
256 |
+
*
|
257 |
+
* A snippet can define tab stops and placeholders with `$1`, `$2`
|
258 |
+
* and `${3:foo}`. `$0` defines the final tab stop, it defaults to
|
259 |
+
* the end of the snippet. Placeholders with equal identifiers are linked,
|
260 |
+
* that is typing in one will update others too.
|
261 |
+
*/
|
262 |
+
InsertTextFormat[InsertTextFormat["Snippet"] = 2] = "Snippet";
|
263 |
+
})(InsertTextFormat || (exports.InsertTextFormat = InsertTextFormat = {}));
|
264 |
+
/**
|
265 |
+
* How whitespace and indentation is handled during completion
|
266 |
+
* item insertion.
|
267 |
+
*
|
268 |
+
* @since 3.16.0
|
269 |
+
*/
|
270 |
+
var InsertTextMode;
|
271 |
+
(function (InsertTextMode) {
|
272 |
+
/**
|
273 |
+
* The insertion or replace strings is taken as it is. If the
|
274 |
+
* value is multi line the lines below the cursor will be
|
275 |
+
* inserted using the indentation defined in the string value.
|
276 |
+
* The client will not apply any kind of adjustments to the
|
277 |
+
* string.
|
278 |
+
*/
|
279 |
+
InsertTextMode[InsertTextMode["asIs"] = 1] = "asIs";
|
280 |
+
/**
|
281 |
+
* The editor adjusts leading whitespace of new lines so that
|
282 |
+
* they match the indentation up to the cursor of the line for
|
283 |
+
* which the item is accepted.
|
284 |
+
*
|
285 |
+
* Consider a line like this: <2tabs><cursor><3tabs>foo. Accepting a
|
286 |
+
* multi line completion item is indented using 2 tabs and all
|
287 |
+
* following lines inserted will be indented using 2 tabs as well.
|
288 |
+
*/
|
289 |
+
InsertTextMode[InsertTextMode["adjustIndentation"] = 2] = "adjustIndentation";
|
290 |
+
})(InsertTextMode || (exports.InsertTextMode = InsertTextMode = {}));
|
291 |
+
/**
|
292 |
+
* How a signature help was triggered.
|
293 |
+
*
|
294 |
+
* @since 3.15.0
|
295 |
+
*/
|
296 |
+
var SignatureHelpTriggerKind;
|
297 |
+
(function (SignatureHelpTriggerKind) {
|
298 |
+
/**
|
299 |
+
* Signature help was invoked manually by the user or by a command.
|
300 |
+
*/
|
301 |
+
SignatureHelpTriggerKind[SignatureHelpTriggerKind["Invoked"] = 1] = "Invoked";
|
302 |
+
/**
|
303 |
+
* Signature help was triggered by a trigger character.
|
304 |
+
*/
|
305 |
+
SignatureHelpTriggerKind[SignatureHelpTriggerKind["TriggerCharacter"] = 2] = "TriggerCharacter";
|
306 |
+
/**
|
307 |
+
* Signature help was triggered by the cursor moving or by the document
|
308 |
+
* content changing.
|
309 |
+
*/
|
310 |
+
SignatureHelpTriggerKind[SignatureHelpTriggerKind["ContentChange"] = 3] = "ContentChange";
|
311 |
+
})(SignatureHelpTriggerKind || (exports.SignatureHelpTriggerKind = SignatureHelpTriggerKind = {}));
|
312 |
+
// tslint:enable:enforce-name-casing
|
313 |
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dF9kb2N1bWVudF9ub2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZ2VuZmlsZXMvdGhpcmRfcGFydHkvY29sYWIvc291cmNlcy9sc3AvdGV4dF9kb2N1bWVudF9ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXVOQTs7Ozs7O0dBTUc7QUFDSCxJQUFZLFVBVVg7QUFWRCxXQUFZLFVBQVU7SUFDcEI7O09BRUc7SUFDSCxxQ0FBdUIsQ0FBQTtJQUV2Qjs7T0FFRztJQUNILG1DQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFWVyxVQUFVLDBCQUFWLFVBQVUsUUFVckI7QUFrQkQ7Ozs7O0dBS0c7QUFDSCxJQUFZLGlCQUtYO0FBTEQsV0FBWSxpQkFBaUI7SUFDM0I7O09BRUc7SUFDSCxxRUFBYyxDQUFBO0FBQ2hCLENBQUMsRUFMVyxpQkFBaUIsaUNBQWpCLGlCQUFpQixRQUs1QjtBQUVEOztHQUVHO0FBQ0gsSUFBWSxrQkEwQlg7QUExQkQsV0FBWSxrQkFBa0I7SUFDNUIsMkRBQVEsQ0FBQTtJQUNSLCtEQUFVLENBQUE7SUFDVixtRUFBWSxDQUFBO0lBQ1oseUVBQWUsQ0FBQTtJQUNmLDZEQUFTLENBQUE7SUFDVCxtRUFBWSxDQUFBO0lBQ1osNkRBQVMsQ0FBQTtJQUNULHFFQUFhLENBQUE7SUFDYiwrREFBVSxDQUFBO0lBQ1Ysb0VBQWEsQ0FBQTtJQUNiLDREQUFTLENBQUE7SUFDVCw4REFBVSxDQUFBO0lBQ1YsNERBQVMsQ0FBQTtJQUNULGtFQUFZLENBQUE7SUFDWixrRUFBWSxDQUFBO0lBQ1osOERBQVUsQ0FBQTtJQUNWLDREQUFTLENBQUE7SUFDVCxzRUFBYyxDQUFBO0lBQ2QsZ0VBQVcsQ0FBQTtJQUNYLHdFQUFlLENBQUE7SUFDZixvRUFBYSxDQUFBO0lBQ2IsZ0VBQVcsQ0FBQTtJQUNYLDhEQUFVLENBQUE7SUFDVixvRUFBYSxDQUFBO0lBQ2IsOEVBQWtCLENBQUE7QUFDcEIsQ0FBQyxFQTFCVyxrQkFBa0Isa0NBQWxCLGtCQUFrQixRQTBCN0I7QUEwREQ7OztHQUdHO0FBQ0gsSUFBWSxrQkEwRFg7QUExREQsV0FBWSxrQkFBa0I7SUFDNUIsbUNBQWEsQ0FBQTtJQUNiLHdDQUFrQixDQUFBO0lBQ2xCLHVDQUFpQixDQUFBO0lBQ2pCLHlDQUFtQixDQUFBO0lBQ25CLG1EQUE2QixDQUFBO0lBQzdCLDZCQUFPLENBQUE7SUFDUCx1Q0FBaUIsQ0FBQTtJQUNqQix1Q0FBaUIsQ0FBQTtJQUNqQixpQ0FBVyxDQUFBO0lBQ1gsbUNBQWEsQ0FBQTtJQUNiLG1DQUFhLENBQUE7SUFDYiwrQ0FBeUIsQ0FBQTtJQUN6Qix1Q0FBaUIsQ0FBQTtJQUNqQix1Q0FBaUIsQ0FBQTtJQUNqQix1Q0FBaUIsQ0FBQTtJQUNqQiw4Q0FBd0IsQ0FBQTtJQUN4Qiw4Q0FBd0IsQ0FBQTtJQUN4QiwrQkFBUyxDQUFBO0lBQ1QsdUNBQWlCLENBQUE7SUFDakIsK0NBQXlCLENBQUE7SUFDekIsbUNBQWEsQ0FBQTtJQUNiLGlDQUFXLENBQUE7SUFDWCxtQ0FBYSxDQUFBO0lBQ2IsK0NBQXlCLENBQUE7SUFDekIseURBQW1DLENBQUE7SUFDbkMsbUNBQWEsQ0FBQTtJQUNiLHFDQUFlLENBQUE7SUFDZixtQ0FBYSxDQUFBO0lBQ2IsaUNBQVcsQ0FBQTtJQUNYLDJDQUFxQixDQUFBO0lBQ3JCLDJDQUFxQixDQUFBO0lBQ3JCLHNDQUFnQixDQUFBO0lBQ2hCLGdEQUEwQixDQUFBO0lBQzFCLG1DQUFhLENBQUE7SUFDYixxQ0FBZSxDQUFBO0lBQ2YsaUNBQVcsQ0FBQTtJQUNYLCtDQUF5QixDQUFBO0lBQ3pCLGtDQUFZLENBQUE7SUFDWix1Q0FBaUIsQ0FBQTtJQUNqQiw2QkFBTyxDQUFBO0lBQ1AscUNBQWUsQ0FBQTtJQUNmLG1DQUFhLENBQUE7SUFDYixtQ0FBYSxDQUFBO0lBQ2IsbUNBQWEsQ0FBQTtJQUNiLHFDQUFlLENBQUE7SUFDZixxQ0FBZSxDQUFBO0lBQ2YsNkNBQXVCLENBQUE7SUFDdkIsMkNBQXFCLENBQUE7SUFDckIsaUNBQVcsQ0FBQTtJQUNYLHFDQUFlLENBQUE7SUFDZiwrQ0FBeUIsQ0FBQTtJQUN6Qix5REFBbUMsQ0FBQTtJQUNuQyxpQ0FBVyxDQUFBO0lBQ1gsd0NBQWtCLENBQUE7SUFDbEIsaUNBQVcsQ0FBQTtJQUNYLGlDQUFXLENBQUE7SUFDWCxtQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQTFEVyxrQkFBa0Isa0NBQWxCLGtCQUFrQixRQTBEN0I7QUF1TEQ7OztHQUdHO0FBQ0gsSUFBWSxxQkFrQlg7QUFsQkQsV0FBWSxxQkFBcUI7SUFDL0I7OztPQUdHO0lBQ0gsdUVBQVcsQ0FBQTtJQUVYOzs7O09BSUc7SUFDSCx5RkFBb0IsQ0FBQTtJQUVwQjs7T0FFRztJQUNILHVIQUFtQyxDQUFBO0FBQ3JDLENBQUMsRUFsQlcscUJBQXFCLHFDQUFyQixxQkFBcUIsUUFrQmhDO0FBb1REOzs7R0FHRztBQUNILElBQVksb0JBa0JYO0FBbEJELFdBQVksb0JBQW9CO0lBQzlCOztPQUVHO0lBQ0gsK0RBQVEsQ0FBQTtJQUVSOzs7T0FHRztJQUNILCtEQUFRLENBQUE7SUFFUjs7OztPQUlHO0lBQ0gsNkVBQWUsQ0FBQTtBQUNqQixDQUFDLEVBbEJXLG9CQUFvQixvQ0FBcEIsb0JBQW9CLFFBa0IvQjtBQW1RRDs7Ozs7Ozs7R0FRRztBQUNILElBQVksY0FtRVg7QUFuRUQsV0FBWSxjQUFjO0lBRXhCOztPQUVHO0lBQ0gsNEJBQVUsQ0FBQTtJQUVWOztPQUVHO0lBQ0gsdUNBQXFCLENBQUE7SUFFckI7O09BRUc7SUFDSCx1Q0FBcUIsQ0FBQTtJQUVyQjs7Ozs7Ozs7OztPQVVHO0lBQ0gsc0RBQW9DLENBQUE7SUFFcEM7Ozs7Ozs7OztPQVNHO0lBQ0gsb0RBQWtDLENBQUE7SUFFbEM7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxzREFBb0MsQ0FBQTtJQUVwQzs7OztPQUlHO0lBQ0gsbUNBQWlCLENBQUE7SUFFakI7O09BRUc7SUFDSCxrRUFBZ0QsQ0FBQTtBQUNsRCxDQUFDLEVBbkVXLGNBQWMsOEJBQWQsY0FBYyxRQW1FekI7QUEwRUQ7OztHQUdHO0FBQ0gsSUFBWSxnQkFlWDtBQWZELFdBQVksZ0JBQWdCO0lBQzFCOztPQUVHO0lBQ0gsaUVBQWEsQ0FBQTtJQUViOzs7Ozs7O09BT0c7SUFDSCw2REFBVyxDQUFBO0FBQ2IsQ0FBQyxFQWZXLGdCQUFnQixnQ0FBaEIsZ0JBQWdCLFFBZTNCO0FBd0JEOzs7OztHQUtHO0FBQ0gsSUFBWSxjQW9CWDtBQXBCRCxXQUFZLGNBQWM7SUFDeEI7Ozs7OztPQU1HO0lBQ0gsbURBQVEsQ0FBQTtJQUVSOzs7Ozs7OztPQVFHO0lBQ0gsNkVBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQXBCVyxjQUFjLDhCQUFkLGNBQWMsUUFvQnpCO0FBbU5EOzs7O0dBSUc7QUFDSCxJQUFZLHdCQWNYO0FBZEQsV0FBWSx3QkFBd0I7SUFDbEM7O09BRUc7SUFDSCw2RUFBVyxDQUFBO0lBQ1g7O09BRUc7SUFDSCwrRkFBb0IsQ0FBQTtJQUNwQjs7O09BR0c7SUFDSCx5RkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBZFcsd0JBQXdCLHdDQUF4Qix3QkFBd0IsUUFjbkM7QUFvU0Qsb0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcHJvdG9jb2wgZnJvbSAnLi9wcm90b2NvbF9ub2RlJztcbmltcG9ydCAqIGFzIHdvcmtzcGFjZSBmcm9tICcuL3dvcmtzcGFjZV9ub2RlJztcblxuLy8gdHNsaW50OmRpc2FibGU6ZW5mb3JjZS1uYW1lLWNhc2luZ1xuXG4vKipcbiAqIFRleHQgZG9jdW1lbnQgc3BlY2lmaWMgY2xpZW50IGNhcGFiaWxpdGllcy5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFRleHREb2N1bWVudENsaWVudENhcGFiaWxpdGllcyB7XG4gIHN5bmNocm9uaXphdGlvbj86IFRleHREb2N1bWVudFN5bmNDbGllbnRDYXBhYmlsaXRpZXM7XG5cbiAgLyoqXG4gICAqIENhcGFiaWxpdGllcyBzcGVjaWZpYyB0byB0aGUgYHRleHREb2N1bWVudC9jb21wbGV0aW9uYCByZXF1ZXN0LlxuICAgKi9cbiAgY29tcGxldGlvbj86IENvbXBsZXRpb25DbGllbnRDYXBhYmlsaXRpZXM7XG5cbiAgLyoqXG4gICAqIENhcGFiaWxpdGllcyBzcGVjaWZpYyB0byB0aGUgYHRleHREb2N1bWVudC9ob3ZlcmAgcmVxdWVzdC5cbiAgICovXG4gIGhvdmVyPzogSG92ZXJDbGllbnRDYXBhYmlsaXRpZXM7XG5cbiAgLyoqXG4gICAqIENhcGFiaWxpdGllcyBzcGVjaWZpYyB0byB0aGUgYHRleHREb2N1bWVudC9zaWduYXR1cmVIZWxwYCByZXF1ZXN0LlxuICAgKi9cbiAgc2lnbmF0dXJlSGVscD86IFNpZ25hdHVyZUhlbHBDbGllbnRDYXBhYmlsaXRpZXM7XG5cbiAgLyoqXG4gICAqIENhcGFiaWxpdGllcyBzcGVjaWZpYyB0byB0aGUgYHRleHREb2N1bWVudC9kZWNsYXJhdGlvbmAgcmVxdWVzdC5cbiAgICpcbiAgICogQHNpbmNlIDMuMTQuMFxuICAgKi9cbiAgZGVjbGFyYXRpb24/OiBEZWNsYXJhdGlvbkNsaWVudENhcGFiaWxpdGllcztcblxuICAvKipcbiAgICogQ2FwYWJpbGl0aWVzIHNwZWNpZmljIHRvIHRoZSBgdGV4dERvY3VtZW50L2RlZmluaXRpb25gIHJlcXVlc3QuXG4gICAqL1xuICBkZWZpbml0aW9uPzogRGVmaW5pdGlvbkNsaWVudENhcGFiaWxpdGllcztcblxuICAvKipcbiAgICogQ2FwYWJpbGl0aWVzIHNwZWNpZmljIHRvIHRoZSBgdGV4dERvY3VtZW50L3R5cGVEZWZpbml0aW9uYCByZXF1ZXN0LlxuICAgKlxuICAgKiBAc2luY2UgMy42LjBcbiAgICovXG4gIHR5cGVEZWZpbml0aW9uPzogVHlwZURlZmluaXRpb25DbGllbnRDYXBhYmlsaXRpZXM7XG5cbiAgLyoqXG4gICAqIENhcGFiaWxpdGllcyBzcGVjaWZpYyB0byB0aGUgYHRleHREb2N1bWVudC9pbXBsZW1lbnRhdGlvbmAgcmVxdWVzdC5cbiAgICpcbiAgICogQHNpbmNlIDMuNi4wXG4gICAqL1xuICBpbXBsZW1lbnRhdGlvbj86IEltcGxlbWVudGF0aW9uQ2xpZW50Q2FwYWJpbGl0aWVzO1xuXG4gIC8qKlxuICAgKiBDYXBhYmlsaXRpZXMgc3BlY2lmaWMgdG8gdGhlIGB0ZXh0RG9jdW1lbnQvcmVmZXJlbmNlc2AgcmVxdWVzdC5cbiAgICovXG4gIHJlZmVyZW5jZXM/OiBSZWZlcmVuY2VDbGllbnRDYXBhYmlsaXRpZXM7XG5cbiAgLyoqXG4gICAqIENhcGFiaWxpdGllcyBzcGVjaWZpYyB0byB0aGUgYHRleHREb2N1bWVudC9kb2N1bWVudEhpZ2hsaWdodGAgcmVxdWVzdC5cbiAgICovXG4gIGRvY3VtZW50SGlnaGxpZ2h0PzogRG9jdW1lbnRIaWdobGlnaHRDbGllbnRDYXBhYmlsaXRpZXM7XG5cbiAgLyoqXG4gICAqIENhcGFiaWxpdGllcyBzcGVjaWZpYyB0byB0aGUgYHRleHREb2N1bWVudC9kb2N1bWVudFN5bWJvbGAgcmVxdWVzdC5cbiAgICovXG4gIGRvY3VtZW50U3ltYm9sPzogRG9jdW1lbnRTeW1ib2xDbGllbnRDYXBhYmlsaXRpZXM7XG5cbiAgLyoqXG4gICAqIENhcGFiaWxpdGllcyBzcGVjaWZpYyB0byB0aGUgYHRleHREb2N1bWVudC9jb2RlQWN0aW9uYCByZXF1ZXN0LlxuICAgKi9cbiAgY29kZUFjdGlvbj86IENvZGVBY3Rpb25DbGllbnRDYXBhYmlsaXRpZXM7XG5cbiAgLyoqXG4gICAqIENhcGFiaWxpdGllcyBzcGVjaWZpYyB0byB0aGUgYHRleHREb2N1bWVudC9jb2RlTGVuc2AgcmVxdWVzdC5cbiAgICovXG4gIGNvZGVMZW5zPzogQ29kZUxlbnNDbGllbnRDYXBhYmlsaXRpZXM7XG5cbiAgLyoqXG4gICAqIENhcGFiaWxpdGllcyBzcGVjaWZpYyB0byB0aGUgYHRleHREb2N1bWVudC9kb2N1bWVudExpbmtgIHJlcXVlc3QuXG4gICAqL1xuICBkb2N1bWVudExpbms/OiBEb2N1bWVudExpbmtDbGllbnRDYXBhYmlsaXRpZXM7XG5cbiAgLyoqXG4gICAqIENhcGFiaWxpdGllcyBzcGVjaWZpYyB0byB0aGUgYHRleHREb2N1bWVudC9kb2N1bWVudENvbG9yYCBhbmQgdGhlXG4gICAqIGB0ZXh0RG9jdW1lbnQvY29sb3JQcmVzZW50YXRpb25gIHJlcXVlc3QuXG4gICAqXG4gICAqIEBzaW5jZSAzLjYuMFxuICAgKi9cbiAgY29sb3JQcm92aWRlcj86IERvY3VtZW50Q29sb3JDbGllbnRDYXBhYmlsaXRpZXM7XG5cbiAgLyoqXG4gICAqIENhcGFiaWxpdGllcyBzcGVjaWZpYyB0byB0aGUgYHRleHREb2N1bWVudC9mb3JtYXR0aW5nYCByZXF1ZXN0LlxuICAgKi9cbiAgZm9ybWF0dGluZz86IERvY3VtZW50Rm9ybWF0dGluZ0NsaWVudENhcGFiaWxpdGllcztcblxuICAvKipcbiAgICogQ2FwYWJpbGl0aWVzIHNwZWNpZmljIHRvIHRoZSBgdGV4dERvY3VtZW50L3JhbmdlRm9ybWF0dGluZ2AgcmVxdWVzdC5cbiAgICovXG4gIHJhbmdlRm9ybWF0dGluZz86IERvY3VtZW50UmFuZ2VGb3JtYXR0aW5nQ2xpZW50Q2FwYWJpbGl0aWVzO1xuXG4gIC8qKlxuICAgKiByZXF1ZXN0LlxuICAgKiBDYXBhYmlsaXRpZXMgc3BlY2lmaWMgdG8gdGhlIGB0ZXh0RG9jdW1lbnQvb25UeXBlRm9ybWF0dGluZ2AgcmVxdWVzdC5cbiAgICovXG4gIG9uVHlwZUZvcm1hdHRpbmc/OiBEb2N1bWVudE9uVHlwZUZvcm1hdHRpbmdDbGllbnRDYXBhYmlsaXRpZXM7XG5cbiAgLyoqXG4gICAqIENhcGFiaWxpdGllcyBzcGVjaWZpYyB0byB0aGUgYHRleHREb2N1bWVudC9yZW5hbWVgIHJlcXVlc3QuXG4gICAqL1xuICByZW5hbWU/OiBSZW5hbWVDbGllbnRDYXBhYmlsaXRpZXM7XG5cbiAgLyoqXG4gICAqIENhcGFiaWxpdGllcyBzcGVjaWZpYyB0byB0aGUgYHRleHREb2N1bWVudC9wdWJsaXNoRGlhZ25vc3RpY3NgXG4gICAqIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIHB1Ymxpc2hEaWFnbm9zdGljcz86IFB1Ymxpc2hEaWFnbm9zdGljc0NsaWVudENhcGFiaWxpdGllcztcblxuICAvKipcbiAgICogQ2FwYWJpbGl0aWVzIHNwZWNpZmljIHRvIHRoZSBgdGV4dERvY3VtZW50L2ZvbGRpbmdSYW5nZWAgcmVxdWVzdC5cbiAgICpcbiAgICogQHNpbmNlIDMuMTAuMFxuICAgKi9cbiAgZm9sZGluZ1JhbmdlPzogRm9sZGluZ1JhbmdlQ2xpZW50Q2FwYWJpbGl0aWVzO1xuXG4gIC8qKlxuICAgKiBDYXBhYmlsaXRpZXMgc3BlY2lmaWMgdG8gdGhlIGB0ZXh0RG9jdW1lbnQvc2VsZWN0aW9uUmFuZ2VgIHJlcXVlc3QuXG4gICAqXG4gICAqIEBzaW5jZSAzLjE1LjBcbiAgICovXG4gIHNlbGVjdGlvblJhbmdlPzogU2VsZWN0aW9uUmFuZ2VDbGllbnRDYXBhYmlsaXRpZXM7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3RleHREb2N1bWVudF9jb21wbGV0aW9uXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBDb21wbGV0aW9uQ2xpZW50Q2FwYWJpbGl0aWVzIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgY29tcGxldGlvbiBzdXBwb3J0cyBkeW5hbWljIHJlZ2lzdHJhdGlvbi5cbiAgICovXG4gIGR5bmFtaWNSZWdpc3RyYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgY2xpZW50IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgYENvbXBsZXRpb25JdGVtYCBzcGVjaWZpY1xuICAgKiBjYXBhYmlsaXRpZXMuXG4gICAqL1xuICBjb21wbGV0aW9uSXRlbT86IHtcbiAgICAvKipcbiAgICAgKiBDbGllbnQgc3VwcG9ydHMgc25pcHBldHMgYXMgaW5zZXJ0IHRleHQuXG4gICAgICpcbiAgICAgKiBBIHNuaXBwZXQgY2FuIGRlZmluZSB0YWIgc3RvcHMgYW5kIHBsYWNlaG9sZGVycyB3aXRoIGAkMWAsIGAkMmBcbiAgICAgKiBhbmQgYCR7Mzpmb299YC4gYCQwYCBkZWZpbmVzIHRoZSBmaW5hbCB0YWIgc3RvcCwgaXQgZGVmYXVsdHMgdG9cbiAgICAgKiB0aGUgZW5kIG9mIHRoZSBzbmlwcGV0LlxuICAgICAqIFBsYWNlaG9sZGVycyB3aXRoIGVxdWFsIGlkZW50aWZpZXJzIGFyZSBsaW5rZWQsIHNvIHRoYXQgdHlwaW5nIGluXG4gICAgICogb25lIHdpbGwgdXBkYXRlIG90aGVycyBhcyB3ZWxsLlxuICAgICAqL1xuICAgIHNuaXBwZXRTdXBwb3J0PzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIENsaWVudCBzdXBwb3J0cyBjb21taXQgY2hhcmFjdGVycyBvbiBhIGNvbXBsZXRpb24gaXRlbS5cbiAgICAgKi9cbiAgICBjb21taXRDaGFyYWN0ZXJzU3VwcG9ydD86IGJvb2xlYW5cblxuICAvKipcbiAgICogQ2xpZW50IHN1cHBvcnRzIHRoZSBmb2xsb3cgY29udGVudCBmb3JtYXRzIGZvciB0aGUgZG9jdW1lbnRhdGlvblxuICAgKiBwcm9wZXJ0eS4gVGhlIG9yZGVyIGRlc2NyaWJlcyB0aGUgcHJlZmVycmVkIGZvcm1hdCBvZiB0aGUgY2xpZW50LlxuICAgKi9cbiAgICBkb2N1bWVudGF0aW9uRm9ybWF0PzogTWFya3VwS2luZFtdO1xuXG4gICAgLyoqXG4gICAgICogQ2xpZW50IHN1cHBvcnRzIHRoZSBkZXByZWNhdGVkIHByb3BlcnR5IG9uIGEgY29tcGxldGlvbiBpdGVtLlxuICAgICAqL1xuICAgIGRlcHJlY2F0ZWRTdXBwb3J0PzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIENsaWVudCBzdXBwb3J0cyB0aGUgcHJlc2VsZWN0IHByb3BlcnR5IG9uIGEgY29tcGxldGlvbiBpdGVtLlxuICAgICAqL1xuICAgIHByZXNlbGVjdFN1cHBvcnQ/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQ2xpZW50IHN1cHBvcnRzIHRoZSB0YWcgcHJvcGVydHkgb24gYSBjb21wbGV0aW9uIGl0ZW0uXG4gICAgICogQ2xpZW50cyBzdXBwb3J0aW5nIHRhZ3MgaGF2ZSB0byBoYW5kbGUgdW5rbm93biB0YWdzIGdyYWNlZnVsbHkuXG4gICAgICogQ2xpZW50cyBlc3BlY2lhbGx5IG5lZWQgdG8gcHJlc2VydmUgdW5rbm93biB0YWdzIHdoZW4gc2VuZGluZ1xuICAgICAqIGEgY29tcGxldGlvbiBpdGVtIGJhY2sgdG8gdGhlIHNlcnZlciBpbiBhIHJlc29sdmUgY2FsbC5cbiAgICAgKlxuICAgICAqIEBzaW5jZSAzLjE1LjBcbiAgICAgKi9cbiAgICB0YWdTdXBwb3J0Pzoge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgdGFncyBzdXBwb3J0ZWQgYnkgdGhlIGNsaWVudC5cbiAgICAgICAqL1xuICAgICAgdmFsdWVTZXQ6IENvbXBsZXRpb25JdGVtVGFnW11cbiAgICB9XG4gIH07XG5cbiAgICBjb21wbGV0aW9uSXRlbUtpbmQ/OiB7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBjb21wbGV0aW9uIGl0ZW0ga2luZCB2YWx1ZXMgdGhlIGNsaWVudCBzdXBwb3J0cy4gV2hlbiB0aGlzXG4gICAgICAgKiBwcm9wZXJ0eSBleGlzdHMgdGhlIGNsaWVudCBhbHNvIGd1YXJhbnRlZXMgdGhhdCBpdCB3aWxsXG4gICAgICAgKiBoYW5kbGUgdmFsdWVzIG91dHNpZGUgaXRzIHNldCBncmFjZWZ1bGx5IGFuZCBmYWxscyBiYWNrXG4gICAgICAgKiB0byBhIGRlZmF1bHQgdmFsdWUgd2hlbiB1bmtub3duLlxuICAgICAgICpcbiAgICAgICAqIElmIHRoaXMgcHJvcGVydHkgaXMgbm90IHByZXNlbnQgdGhlIGNsaWVudCBvbmx5IHN1cHBvcnRzXG4gICAgICAgKiB0aGUgY29tcGxldGlvbiBpdGVtcyBraW5kcyBmcm9tIGBUZXh0YCB0byBgUmVmZXJlbmNlYCBhcyBkZWZpbmVkIGluXG4gICAgICAgKiB0aGUgaW5pdGlhbCB2ZXJzaW9uIG9mIHRoZSBwcm90b2NvbC5cbiAgICAgICAqL1xuICAgICAgdmFsdWVTZXQ/OiBDb21wbGV0aW9uSXRlbUtpbmRbXTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogVGhlIGNsaWVudCBzdXBwb3J0cyB0byBzZW5kIGFkZGl0aW9uYWwgY29udGV4dCBpbmZvcm1hdGlvbiBmb3IgYVxuICAgICAqIGB0ZXh0RG9jdW1lbnQvY29tcGxldGlvbmAgcmVxdWVzdC5cbiAgICAgKi9cbiAgICBjb250ZXh0U3VwcG9ydD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIHRoZSBjb250ZW50IHR5cGUgdGhhdCBhIGNsaWVudCBzdXBwb3J0cyBpbiB2YXJpb3VzXG4gKiByZXN1bHQgbGl0ZXJhbHMgbGlrZSBgSG92ZXJgLCBgUGFyYW1ldGVySW5mb2Agb3IgYENvbXBsZXRpb25JdGVtYC5cbiAqXG4gKiBQbGVhc2Ugbm90ZSB0aGF0IGBNYXJrdXBLaW5kc2AgbXVzdCBub3Qgc3RhcnQgd2l0aCBhIGAkYC4gVGhpcyBraW5kc1xuICogYXJlIHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2FnZS5cbiAqL1xuZXhwb3J0IGVudW0gTWFya3VwS2luZCB7XG4gIC8qKlxuICAgKiBQbGFpbiB0ZXh0IGlzIHN1cHBvcnRlZCBhcyBhIGNvbnRlbnQgZm9ybWF0XG4gICAqL1xuICBQbGFpblRleHQgPSAncGxhaW50ZXh0JyxcblxuICAvKipcbiAgICogTWFya2Rvd24gaXMgc3VwcG9ydGVkIGFzIGEgY29udGVudCBmb3JtYXRcbiAgICovXG4gIE1hcmtkb3duID0gJ21hcmtkb3duJyxcbn1cblxuLyoqXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jdGV4dERvY3VtZW50X2hvdmVyXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBIb3ZlckNsaWVudENhcGFiaWxpdGllcyB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBob3ZlciBzdXBwb3J0cyBkeW5hbWljIHJlZ2lzdHJhdGlvbi5cbiAgICAgKi9cbiAgICBkeW5hbWljUmVnaXN0cmF0aW9uPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIENsaWVudCBzdXBwb3J0cyB0aGUgZm9sbG93IGNvbnRlbnQgZm9ybWF0cyBmb3IgdGhlIGNvbnRlbnRcbiAgICAgKiBwcm9wZXJ0eS4gVGhlIG9yZGVyIGRlc2NyaWJlcyB0aGUgcHJlZmVycmVkIGZvcm1hdCBvZiB0aGUgY2xpZW50LlxuICAgICAqL1xuICAgIGNvbnRlbnRGb3JtYXQ/OiBNYXJrdXBLaW5kW107XG59XG5cbi8qKlxuICogQ29tcGxldGlvbiBpdGVtIHRhZ3MgYXJlIGV4dHJhIGFubm90YXRpb25zIHRoYXQgdHdlYWsgdGhlIHJlbmRlcmluZyBvZlxuICogYSBjb21wbGV0aW9uIGl0ZW0uXG4gKlxuICogQHNpbmNlIDMuMTUuMFxuICovXG5leHBvcnQgZW51bSBDb21wbGV0aW9uSXRlbVRhZyB7XG4gIC8qKlxuICAgKiBSZW5kZXIgYSBjb21wbGV0aW9uIGFzIG9ic29sZXRlLCB1c3VhbGx5IHVzaW5nIGEgc3RyaWtlLW91dC5cbiAgICovXG4gIERlcHJlY2F0ZWQgPSAxLFxufVxuXG4vKipcbiAqIFRoZSBraW5kIG9mIGEgY29tcGxldGlvbiBlbnRyeS5cbiAqL1xuZXhwb3J0IGVudW0gQ29tcGxldGlvbkl0ZW1LaW5kIHtcbiAgVGV4dCA9IDEsXG4gIE1ldGhvZCA9IDIsXG4gIEZ1bmN0aW9uID0gMyxcbiAgQ29uc3RydWN0b3IgPSA0LFxuICBGaWVsZCA9IDUsXG4gIFZhcmlhYmxlID0gNixcbiAgQ2xhc3MgPSA3LFxuICBJbnRlcmZhY2UgPSA4LFxuICBNb2R1bGUgPSA5LFxuICBQcm9wZXJ0eSA9IDEwLFxuICBVbml0ID0gMTEsXG4gIFZhbHVlID0gMTIsXG4gIEVudW0gPSAxMyxcbiAgS2V5d29yZCA9IDE0LFxuICBTbmlwcGV0ID0gMTUsXG4gIENvbG9yID0gMTYsXG4gIEZpbGUgPSAxNyxcbiAgUmVmZXJlbmNlID0gMTgsXG4gIEZvbGRlciA9IDE5LFxuICBFbnVtTWVtYmVyID0gMjAsXG4gIENvbnN0YW50ID0gMjEsXG4gIFN0cnVjdCA9IDIyLFxuICBFdmVudCA9IDIzLFxuICBPcGVyYXRvciA9IDI0LFxuICBUeXBlUGFyYW1ldGVyID0gMjUsXG59XG5cblxuLyoqXG4gKiBBbiBpdGVtIHRvIHRyYW5zZmVyIGEgdGV4dCBkb2N1bWVudCBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlci5cbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbnMvc3BlY2lmaWNhdGlvbi1jdXJyZW50LyN0ZXh0RG9jdW1lbnRJdGVtXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBUZXh0RG9jdW1lbnRJdGVtIHtcbiAgICAvKipcbiAgICAgKiBUaGUgdGV4dCBkb2N1bWVudCdzIFVSSS5cbiAgICAgKi9cbiAgICB1cmk6IHByb3RvY29sLkRvY3VtZW50VXJpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRleHQgZG9jdW1lbnQncyBsYW5ndWFnZSBpZGVudGlmaWVyLlxuICAgICAqL1xuICAgIGxhbmd1YWdlSWQ6IExhbmd1YWdlSWRlbnRpZmllcjtcblxuICAgIC8qKlxuICAgICAqIFRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIGRvY3VtZW50IChpdCB3aWxsIGluY3JlYXNlIGFmdGVyIGVhY2hcbiAgICAgKiBjaGFuZ2UsIGluY2x1ZGluZyB1bmRvL3JlZG8pLlxuICAgICAqL1xuICAgIHZlcnNpb246IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjb250ZW50IG9mIHRoZSBvcGVuZWQgdGV4dCBkb2N1bWVudC5cbiAgICAgKi9cbiAgICB0ZXh0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3RleHREb2N1bWVudF9kaWRPcGVuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBEaWRPcGVuVGV4dERvY3VtZW50UGFyYW1zIHtcbiAgICAvKipcbiAgICAgKiBUaGUgZG9jdW1lbnQgdGhhdCB3YXMgb3BlbmVkLlxuICAgICAqL1xuICAgIHRleHREb2N1bWVudDogVGV4dERvY3VtZW50SXRlbTtcbn1cblxuLyoqXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jdGV4dERvY3VtZW50X2RpZE9wZW5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIERpZE9wZW5UZXh0RG9jdW1lbnQgZXh0ZW5kc1xuICAgIHByb3RvY29sLk5vdGlmaWNhdGlvbk1lc3NhZ2U8RGlkT3BlblRleHREb2N1bWVudFBhcmFtcz4ge1xuICAgIG1ldGhvZDogcHJvdG9jb2wuTWV0aG9kLlRleHREb2N1bWVudERpZE9wZW47XG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3RleHREb2N1bWVudF9kaWRDbG9zZVxuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRGlkQ2xvc2VUZXh0RG9jdW1lbnRQYXJhbXMge1xuICAgIC8qKlxuICAgICAqIFRoZSBkb2N1bWVudCB0aGF0IHdhcyBjbG9zZWQuXG4gICAgICovXG4gICAgdGV4dERvY3VtZW50OiBUZXh0RG9jdW1lbnRJZGVudGlmaWVyO1xufVxuXG4vKipcbiAqIEtub3duIGxhbmd1YWdlIGlkZW50aWZpZXJzLlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3RleHREb2N1bWVudEl0ZW1cbiAqL1xuZXhwb3J0IGVudW0gTGFuZ3VhZ2VJZGVudGlmaWVyIHtcbiAgQUJBUCA9ICdhYmFwJyxcbiAgV2luZG93c0JhdCA9ICdiYXQnLFxuICBCaWJUZVggPSAnYmlidGV4JyxcbiAgQ2xvanVyZSA9ICdjbG9qdXJlJyxcbiAgQ29mZmVlc2NyaXB0ID0gJ2NvZmZlZXNjcmlwdCcsXG4gIEMgPSAnYycsXG4gIENQbHVzUGx1cyA9ICdjcHAnLFxuICBDU2hhcnAgPSAnY3NoYXJwJyxcbiAgQ1NTID0gJ2NzcycsXG4gIERpZmYgPSAnZGlmZicsXG4gIERhcnQgPSAnZGFydCcsXG4gIERvY2tlcmZpbGUgPSAnZG9ja2VyZmlsZScsXG4gIEVsaXhpciA9ICdlbGl4aXInLFxuICBFcmxhbmcgPSAnZXJsYW5nJyxcbiAgRlNoYXJwID0gJ2ZzaGFycCcsXG4gIEdpdENvbW1pdCA9ICdnaXQtY29tbWl0JyxcbiAgR2l0UmViYXNlID0gJ2dpdC1yZWJhc2UnLFxuICBHbyA9ICdnbycsXG4gIEdyb292eSA9ICdncm9vdnknLFxuICBIYW5kbGViYXJzID0gJ2hhbmRsZWJhcnMnLFxuICBIVE1MID0gJ2h0bWwnLFxuICBJbmkgPSAnaW5pJyxcbiAgSmF2YSA9ICdqYXZhJyxcbiAgSmF2YVNjcmlwdCA9ICdqYXZhc2NyaXB0JyxcbiAgSmF2YVNjcmlwdFJlYWN0ID0gJ2phdmFzY3JpcHRyZWFjdCcsXG4gIEpTT04gPSAnanNvbicsXG4gIExhVGVYID0gJ2xhdGV4JyxcbiAgTGVzcyA9ICdsZXNzJyxcbiAgTHVhID0gJ2x1YScsXG4gIE1ha2VmaWxlID0gJ21ha2VmaWxlJyxcbiAgTWFya2Rvd24gPSAnbWFya2Rvd24nLFxuICBPYmplY3RpdmVDID0gJ2MnLFxuICBPYmplY3RpdmVDUGx1c1BsdXMgPSAnY3BwJyxcbiAgUGVybCA9ICdwZXJsJyxcbiAgUGVybDYgPSAncGVybDYnLFxuICBQSFAgPSAncGhwJyxcbiAgUG93ZXJzaGVsbCA9ICdwb3dlcnNoZWxsJyxcbiAgUHVnID0gJ2phZGUnLFxuICBQeXRob24gPSAncHl0aG9uJyxcbiAgUiA9ICdyJyxcbiAgUmF6b3IgPSAncmF6b3InLFxuICBSdWJ5ID0gJ3J1YnknLFxuICBSdXN0ID0gJ3J1c3QnLFxuICBTQ1NTID0gJ3Njc3MnLFxuICBTYXNzID0gJ3N5bnRheCcsXG4gIFNjYWxhID0gJ3NjYWxhJyxcbiAgU2hhZGVyTGFiID0gJ3NoYWRlcmxhYicsXG4gIFNoZWxsID0gJ3NoZWxsc2NyaXB0JyxcbiAgU1FMID0gJ3NxbCcsXG4gIFN3aWZ0ID0gJ3N3aWZ0JyxcbiAgVHlwZVNjcmlwdCA9ICd0eXBlc2NyaXB0JyxcbiAgVHlwZVNjcmlwdFJlYWN0ID0gJ3R5cGVzY3JpcHRyZWFjdCcsXG4gIFRlWCA9ICd0ZXgnLFxuICBWaXN1YWxCYXNpYyA9ICd2YicsXG4gIFhNTCA9ICd4bWwnLFxuICBYU0wgPSAneHNsJyxcbiAgWUFNTCA9ICd5YW1sJyxcbn1cblxuLyoqXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jdGV4dERvY3VtZW50X3B1Ymxpc2hEaWFnbm9zdGljc1xuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgUHVibGlzaERpYWdub3N0aWNzQ2xpZW50Q2FwYWJpbGl0aWVzIHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBjbGllbnRzIGFjY2VwdHMgZGlhZ25vc3RpY3Mgd2l0aCByZWxhdGVkIGluZm9ybWF0aW9uLlxuICAgICAqL1xuICAgIHJlbGF0ZWRJbmZvcm1hdGlvbj86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBDbGllbnQgc3VwcG9ydHMgdGhlIHRhZyBwcm9wZXJ0eSB0byBwcm92aWRlIG1ldGEgZGF0YSBhYm91dCBhIGRpYWdub3N0aWMuXG4gICAgICogQ2xpZW50cyBzdXBwb3J0aW5nIHRhZ3MgaGF2ZSB0byBoYW5kbGUgdW5rbm93biB0YWdzIGdyYWNlZnVsbHkuXG4gICAgICpcbiAgICAgKiBAc2luY2UgMy4xNS4wXG4gICAgICovXG4gICAgdGFnU3VwcG9ydD86IHtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIHRhZ3Mgc3VwcG9ydGVkIGJ5IHRoZSBjbGllbnQuXG4gICAgICAgKi9cbiAgICAgIHZhbHVlU2V0OiBwcm90b2NvbC5EaWFnbm9zdGljVGFnW107XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGNsaWVudCBpbnRlcnByZXRzIHRoZSB2ZXJzaW9uIHByb3BlcnR5IG9mIHRoZVxuICAgICAqIGB0ZXh0RG9jdW1lbnQvcHVibGlzaERpYWdub3N0aWNzYCBub3RpZmljYXRpb24ncyBwYXJhbWV0ZXIuXG4gICAgICpcbiAgICAgKiBAc2luY2UgMy4xNS4wXG4gICAgICovXG4gICAgdmVyc2lvblN1cHBvcnQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIERpYWdub3N0aWNzIG5vdGlmaWNhdGlvbiBhcmUgc2VudCBmcm9tIHRoZSBzZXJ2ZXIgdG8gdGhlIGNsaWVudCB0byBzaWduYWxcbiAqIHJlc3VsdHMgb2YgdmFsaWRhdGlvbiBydW5zLlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3RleHREb2N1bWVudF9wdWJsaXNoRGlhZ25vc3RpY3NcbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFB1Ymxpc2hEaWFnbm9zdGljcyBleHRlbmRzXG4gICAgcHJvdG9jb2wuTm90aWZpY2F0aW9uTWVzc2FnZTxQdWJsaXNoRGlhZ25vc3RpY3NQYXJhbXM+IHtcbiAgICBtZXRob2Q6IHByb3RvY29sLk1ldGhvZC5UZXh0RG9jdW1lbnRQdWJsaXNoRGlhZ25vc3RpY3M7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3RleHREb2N1bWVudF9wdWJsaXNoRGlhZ25vc3RpY3NcbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFB1Ymxpc2hEaWFnbm9zdGljc1BhcmFtcyB7XG4gICAgLyoqXG4gICAgICogVGhlIFVSSSBmb3Igd2hpY2ggZGlhZ25vc3RpYyBpbmZvcm1hdGlvbiBpcyByZXBvcnRlZC5cbiAgICAgKi9cbiAgICB1cmk6IHByb3RvY29sLkRvY3VtZW50VXJpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBkb2N1bWVudCB0aGUgZGlhZ25vc3RpY3MgYXJlIHB1Ymxpc2hlZCBmb3IuXG4gICAgICogT3B0aW9uYWwuXG4gICAgICogQHNpbmNlIDMuMTUuMFxuICAgICAqL1xuICAgIHZlcnNpb24/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBBbiBhcnJheSBvZiBkaWFnbm9zdGljIGluZm9ybWF0aW9uIGl0ZW1zLlxuICAgICAqL1xuICAgIGRpYWdub3N0aWNzOiBwcm90b2NvbC5EaWFnbm9zdGljW107XG59XG5cbi8qKlxuICogVGV4dCBkb2N1bWVudHMgYXJlIGlkZW50aWZpZWQgdXNpbmcgYSBVUkkuIE9uIHRoZSBwcm90b2NvbCBsZXZlbCwgVVJJcyBhcmVcbiAqIHBhc3NlZCBhcyBzdHJpbmdzLiBUaGUgY29ycmVzcG9uZGluZyBKU09OIHN0cnVjdHVyZSBsb29rcyBsaWtlIHRoaXM6XG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jdGV4dERvY3VtZW50SWRlbnRpZmllclxuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVGV4dERvY3VtZW50SWRlbnRpZmllciB7XG4gICAgLyoqXG4gICAgICogVGhlIHRleHQgZG9jdW1lbnQncyBVUkkuXG4gICAgICovXG4gICAgdXJpOiBwcm90b2NvbC5Eb2N1bWVudFVyaTtcbn1cblxuLyoqXG4gKiBBbiBpZGVudGlmaWVyIHRvIGRlbm90ZSBhIHNwZWNpZmljIHZlcnNpb24gb2YgYSB0ZXh0IGRvY3VtZW50LiBUaGlzXG4gKiBpbmZvcm1hdGlvbiB1c3VhbGx5IGZsb3dzIGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyLlxuICovXG5pbnRlcmZhY2UgVmVyc2lvbmVkVGV4dERvY3VtZW50SWRlbnRpZmllciBleHRlbmRzIFRleHREb2N1bWVudElkZW50aWZpZXIge1xuICAgIC8qKlxuICAgICAqIFRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIGRvY3VtZW50LlxuICAgICAqXG4gICAgICogVGhlIHZlcnNpb24gbnVtYmVyIG9mIGEgZG9jdW1lbnQgd2lsbCBpbmNyZWFzZSBhZnRlciBlYWNoIGNoYW5nZSxcbiAgICAgKiBpbmNsdWRpbmcgdW5kby9yZWRvLiBUaGUgbnVtYmVyIGRvZXNuJ3QgbmVlZCB0byBiZSBjb25zZWN1dGl2ZS5cbiAgICAgKi9cbiAgICB2ZXJzaW9uOiBwcm90b2NvbC5pbnRlZ2VyO1xufVxuXG4vKipcbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbnMvc3BlY2lmaWNhdGlvbi1jdXJyZW50LyN0ZXh0RG9jdW1lbnRQb3NpdGlvblBhcmFtc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFRleHREb2N1bWVudFBvc2l0aW9uUGFyYW1zIHtcbiAgICAvKipcbiAgICAgKiBUaGUgdGV4dCBkb2N1bWVudC5cbiAgICAgKi9cbiAgICB0ZXh0RG9jdW1lbnQ6IFRleHREb2N1bWVudElkZW50aWZpZXI7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgcG9zaXRpb24gaW5zaWRlIHRoZSB0ZXh0IGRvY3VtZW50LlxuICAgICAqL1xuICAgIHBvc2l0aW9uOiBwcm90b2NvbC5Qb3NpdGlvbjtcbn1cblxuLyoqXG4gKiBUaGUgQ29tcGxldGlvbiByZXF1ZXN0IGlzIHNlbnQgZnJvbSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXIgdG8gY29tcHV0ZVxuICogY29tcGxldGlvbiBpdGVtcyBhdCBhIGdpdmVuIGN1cnNvciBwb3NpdGlvbi4gQ29tcGxldGlvbiBpdGVtcyBhcmUgcHJlc2VudGVkXG4gKiBpbiB0aGUgSW50ZWxsaVNlbnNlIHVzZXIgaW50ZXJmYWNlLiBJZiBjb21wdXRpbmcgZnVsbCBjb21wbGV0aW9uIGl0ZW1zIGlzXG4gKiBleHBlbnNpdmUsIHNlcnZlcnMgY2FuIGFkZGl0aW9uYWxseSBwcm92aWRlIGEgaGFuZGxlciBmb3IgdGhlIGNvbXBsZXRpb25cbiAqIGl0ZW0gcmVzb2x2ZSByZXF1ZXN0IChgY29tcGxldGlvbkl0ZW0vcmVzb2x2ZWApLiBUaGlzIHJlcXVlc3QgaXMgc2VudCB3aGVuIGFcbiAqIGNvbXBsZXRpb24gaXRlbSBpcyBzZWxlY3RlZCBpbiB0aGUgdXNlciBpbnRlcmZhY2UuIEEgdHlwaWNhbCB1c2UgY2FzZSBpcyBmb3JcbiAqIGV4YW1wbGU6IHRoZSBgdGV4dERvY3VtZW50L2NvbXBsZXRpb25gIHJlcXVlc3QgZG9lc27igJl0IGZpbGwgaW4gdGhlXG4gKiBkb2N1bWVudGF0aW9uIHByb3BlcnR5IGZvciByZXR1cm5lZCBjb21wbGV0aW9uIGl0ZW1zIHNpbmNlIGl0IGlzIGV4cGVuc2l2ZVxuICogdG8gY29tcHV0ZS4gV2hlbiB0aGUgaXRlbSBpcyBzZWxlY3RlZCBpbiB0aGUgdXNlciBpbnRlcmZhY2UgdGhlbiBhXG4gKiBgY29tcGxldGlvbkl0ZW0vcmVzb2x2ZWAgcmVxdWVzdCBpcyBzZW50IHdpdGggdGhlIHNlbGVjdGVkIGNvbXBsZXRpb24gaXRlbVxuICogYXMgYSBwYXJhbWV0ZXIuIFRoZSByZXR1cm5lZCBjb21wbGV0aW9uIGl0ZW0gc2hvdWxkIGhhdmUgdGhlIGRvY3VtZW50YXRpb25cbiAqIHByb3BlcnR5IGZpbGxlZCBpbi4gQnkgZGVmYXVsdCB0aGUgcmVxdWVzdCBjYW4gb25seSBkZWxheSB0aGUgY29tcHV0YXRpb24gb2ZcbiAqIHRoZSBkZXRhaWwgYW5kIGRvY3VtZW50YXRpb24gcHJvcGVydGllcy4gU2luY2UgMy4xNi4wIHRoZSBjbGllbnQgY2FuIHNpZ25hbFxuICogdGhhdCBpdCBjYW4gcmVzb2x2ZSBtb3JlIHByb3BlcnRpZXMgbGF6aWx5LiBUaGlzIGlzIGRvbmUgdXNpbmcgdGhlXG4gKiBjb21wbGV0aW9uSXRlbSNyZXNvbHZlU3VwcG9ydCBjbGllbnQgY2FwYWJpbGl0eSB3aGljaCBsaXN0cyBhbGwgcHJvcGVydGllc1xuICogdGhhdCBjYW4gYmUgZmlsbGVkIGluIGR1cmluZyBhIGBjb21wbGV0aW9uSXRlbS9yZXNvbHZlYCByZXF1ZXN0LiBBbGwgb3RoZXJcbiAqIHByb3BlcnRpZXMgKHVzdWFsbHkgc29ydFRleHQsIGZpbHRlclRleHQsIGluc2VydFRleHQgYW5kIHRleHRFZGl0KSBtdXN0IGJlXG4gKiBwcm92aWRlZCBpbiB0aGUgdGV4dERvY3VtZW50L2NvbXBsZXRpb24gcmVzcG9uc2UgYW5kIG11c3Qgbm90IGJlIGNoYW5nZWRcbiAqIGR1cmluZyByZXNvbHZlLlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3RleHREb2N1bWVudF9jb21wbGV0aW9uXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBDb21wbGV0aW9uIGV4dGVuZHNcbiAgICBwcm90b2NvbC5SZXF1ZXN0TWVzc2FnZTxDb21wbGV0aW9uUGFyYW1zPiB7XG4gICAgbWV0aG9kOiBwcm90b2NvbC5NZXRob2QuVGV4dERvY3VtZW50Q29tcGxldGlvbjtcbn1cblxuLyoqXG4gKiBQYXJhbXMgZm9yIHRoZSBhdXRvRXhlY3V0ZUNoZWNrIGNhbGwuIFRoaXMgaXMgYSBjdXN0b20gTFNQIGNvbW1hbmQgdGhhdFxuICogdmVyaWZpZXMgdGhhdCB0aGUgcHJvdmlkZWQgY29kZSBwYXNzZXMgYSBudW1iZXIgb2YgTFNQLXJlbGF0ZWQgY2hlY2tzLlxuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQXV0b0V4ZWN1dGVDaGVja1BhcmFtcyBleHRlbmRzIFRleHREb2N1bWVudElkZW50aWZpZXIge1xuICAgIC8qKlxuICAgICAqIFRoZSBjb2RlIHRvIGNoZWNrIHdoZXRoZXIgaXQgY2FuIGJlIGF1dG8gZXhlY3V0ZWQgaW4gdGhlIGN1cnJlbnRcbiAgICAgKiBkb2N1bWVudC5cbiAgICAgKi9cbiAgICBjb2RlVG9DaGVjazogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHBvc2l0aW9uIHRvIGluc2VydCB0aGUgY29kZSBhdC4gSWYgbm90IHNldCwgYXBwZW5kIHRvIHRoZSBlbmQgb2YgdGhlXG4gICAgICogbm90ZWJvb2suXG4gICAgICovXG4gICAgcG9zaXRpb24/OiBwcm90b2NvbC5Qb3NpdGlvbjtcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBmb3IgdGhlIGF1dG9FeGVjdXRlQ2hlY2sgY2FsbC5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEF1dG9FeGVjdXRlQ2hlY2tSZXNwb25zZSB7XG4gICAgLyoqXG4gICAgICogRXJyb3JzIGZvdW5kIHdoZW4gY2hlY2tpbmcgdGhlIGNvZGUgaW4gdGhlIHJlcXVlc3QuIEFuIGVtcHR5IGxpc3QgbWVhbnNcbiAgICAgKiB0aGF0IGFsbCBjaGVja3MgcGFzc2VkIGFuZCB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQgYXV0b21hdGljYWxseS5cbiAgICAgKi9cbiAgICBlcnJvcnM6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGFjdHVhbCBjb2RlIHRoYXQgc2hvdWxkIGJlIGV4ZWN1dGVkLiBUaGlzIHdpbGwgdXN1YWxseSBiZSB0aGUgY29kZVxuICAgICAqIHRoYXQgd2FzIHBhc3NlZCBpbiB0aGUgcmVxdWVzdCwgYnV0IG1heSBpbmNsdWRlIGFkZGl0aW9uYWwgZWRpdHMgdG8gbWFrZVxuICAgICAqIHRoZSBjb2RlIHNhZmVyIHRvIHJ1bi5cbiAgICAgKi9cbiAgICBjb2RlVG9FeGVjdXRlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3RleHREb2N1bWVudF9jb21wbGV0aW9uXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBDb21wbGV0aW9uUGFyYW1zIGV4dGVuZHNcbiAgICBUZXh0RG9jdW1lbnRQb3NpdGlvblBhcmFtcywgcHJvdG9jb2wuV29ya0RvbmVQcm9ncmVzc1BhcmFtcyxcbiAgICBwcm90b2NvbC5QYXJ0aWFsUmVzdWx0UGFyYW1zIHtcbiAgICAvKipcbiAgICAgKiBUaGUgY29tcGxldGlvbiBjb250ZXh0LiBUaGlzIGlzIG9ubHkgYXZhaWxhYmxlIGlmIHRoZSBjbGllbnQgc3BlY2lmaWVzXG4gICAgICogdG8gc2VuZCB0aGlzIHVzaW5nIHRoZSBjbGllbnQgY2FwYWJpbGl0eVxuICAgICAqIGBjb21wbGV0aW9uLmNvbnRleHRTdXBwb3J0ID09PSB0cnVlYFxuICAgICAqL1xuICAgIGNvbnRleHQ/OiBDb21wbGV0aW9uQ29udGV4dDtcbn1cblxuLyoqXG4gKiBIb3cgYSBjb21wbGV0aW9uIHdhcyB0cmlnZ2VyZWRcbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbnMvc3BlY2lmaWNhdGlvbi1jdXJyZW50LyN0ZXh0RG9jdW1lbnRfY29tcGxldGlvblxuICovXG5leHBvcnQgZW51bSBDb21wbGV0aW9uVHJpZ2dlcktpbmQge1xuICAvKipcbiAgICogQ29tcGxldGlvbiB3YXMgdHJpZ2dlcmVkIGJ5IHR5cGluZyBhbiBpZGVudGlmaWVyICgyNHg3IGNvZGVcbiAgICogY29tcGxldGUpLCBtYW51YWwgaW52b2NhdGlvbiAoZS5nIEN0cmwrU3BhY2UpIG9yIHZpYSBBUEkuXG4gICAqL1xuICBJbnZva2VkID0gMSxcblxuICAvKipcbiAgICogQ29tcGxldGlvbiB3YXMgdHJpZ2dlcmVkIGJ5IGEgdHJpZ2dlciBjaGFyYWN0ZXIgc3BlY2lmaWVkIGJ5XG4gICAqIHRoZSBgdHJpZ2dlckNoYXJhY3RlcnNgIHByb3BlcnRpZXMgb2YgdGhlXG4gICAqIGBDb21wbGV0aW9uUmVnaXN0cmF0aW9uT3B0aW9uc2AuXG4gICAqL1xuICBUcmlnZ2VyQ2hhcmFjdGVyID0gMixcblxuICAvKipcbiAgICogQ29tcGxldGlvbiB3YXMgcmUtdHJpZ2dlcmVkIGFzIHRoZSBjdXJyZW50IGNvbXBsZXRpb24gbGlzdCBpcyBpbmNvbXBsZXRlLlxuICAgKi9cbiAgVHJpZ2dlckZvckluY29tcGxldGVDb21wbGV0aW9ucyA9IDMsXG59XG5cblxuLyoqXG4gKiBDb250YWlucyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb250ZXh0IGluIHdoaWNoIGEgY29tcGxldGlvblxuICogcmVxdWVzdCBpcyB0cmlnZ2VyZWQuXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jdGV4dERvY3VtZW50X2NvbXBsZXRpb25cbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIENvbXBsZXRpb25Db250ZXh0IHtcbiAgICAvKipcbiAgICAgKiBIb3cgdGhlIGNvbXBsZXRpb24gd2FzIHRyaWdnZXJlZC5cbiAgICAgKi9cbiAgICB0cmlnZ2VyS2luZDogQ29tcGxldGlvblRyaWdnZXJLaW5kO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRyaWdnZXIgY2hhcmFjdGVyIChhIHNpbmdsZSBjaGFyYWN0ZXIpIHRoYXQgaGFzIHRyaWdnZXIgY29kZVxuICAgICAqIGNvbXBsZXRlLiBJcyB1bmRlZmluZWQgaWZcbiAgICAgKiBgdHJpZ2dlcktpbmQgIT09IENvbXBsZXRpb25UcmlnZ2VyS2luZC5UcmlnZ2VyQ2hhcmFjdGVyYFxuICAgICAqL1xuICAgIHRyaWdnZXJDaGFyYWN0ZXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGRvY3VtZW50IGNoYW5nZSBub3RpZmljYXRpb24gaXMgc2VudCBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlciB0b1xuICogc2lnbmFsIGNoYW5nZXMgdG8gYSB0ZXh0IGRvY3VtZW50LiBCZWZvcmUgYSBjbGllbnQgY2FuIGNoYW5nZSBhIHRleHRcbiAqIGRvY3VtZW50IGl0IG11c3QgY2xhaW0gb3duZXJzaGlwIG9mIGl0cyBjb250ZW50IHVzaW5nIHRoZVxuICogdGV4dERvY3VtZW50L2RpZE9wZW4gbm90aWZpY2F0aW9uLiBJbiAyLjAgdGhlIHNoYXBlIG9mIHRoZSBwYXJhbXMgaGFzXG4gKiBjaGFuZ2VkIHRvIGluY2x1ZGUgcHJvcGVyIHZlcnNpb24gbnVtYmVycyBhbmQgbGFuZ3VhZ2UgaWRzLlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3RleHREb2N1bWVudF9kaWRDaGFuZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaWRDaGFuZ2VUZXh0RG9jdW1lbnRQYXJhbXMge1xuICAgIC8qKlxuICAgICAqIFRoZSBkb2N1bWVudCB0aGF0IGRpZCBjaGFuZ2UuIFRoZSB2ZXJzaW9uIG51bWJlciBwb2ludHNcbiAgICAgKiB0byB0aGUgdmVyc2lvbiBhZnRlciBhbGwgcHJvdmlkZWQgY29udGVudCBjaGFuZ2VzIGhhdmVcbiAgICAgKiBiZWVuIGFwcGxpZWQuXG4gICAgICovXG4gICAgdGV4dERvY3VtZW50OiBWZXJzaW9uZWRUZXh0RG9jdW1lbnRJZGVudGlmaWVyO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGFjdHVhbCBjb250ZW50IGNoYW5nZXMuIFRoZSBjb250ZW50IGNoYW5nZXMgZGVzY3JpYmUgc2luZ2xlIHN0YXRlXG4gICAgICogY2hhbmdlcyB0byB0aGUgZG9jdW1lbnQuIFNvIGlmIHRoZXJlIGFyZSB0d28gY29udGVudCBjaGFuZ2VzIGMxIChhdFxuICAgICAqIGFycmF5IGluZGV4IDApIGFuZCBjMiAoYXQgYXJyYXkgaW5kZXggMSkgZm9yIGEgZG9jdW1lbnQgaW4gc3RhdGUgUyB0aGVuXG4gICAgICogYzEgbW92ZXMgdGhlIGRvY3VtZW50IGZyb20gUyB0byBTJyBhbmQgYzIgZnJvbSBTJyB0byBTJycuIFNvIGMxIGlzXG4gICAgICogY29tcHV0ZWQgb24gdGhlIHN0YXRlIFMgYW5kIGMyIGlzIGNvbXB1dGVkIG9uIHRoZSBzdGF0ZSBTJy5cbiAgICAgKlxuICAgICAqIFRvIG1pcnJvciB0aGUgY29udGVudCBvZiBhIGRvY3VtZW50IHVzaW5nIGNoYW5nZSBldmVudHMgdXNlIHRoZSBmb2xsb3dpbmdcbiAgICAgKiBhcHByb2FjaDpcbiAgICAgKiAtIHN0YXJ0IHdpdGggdGhlIHNhbWUgaW5pdGlhbCBjb250ZW50XG4gICAgICogLSBhcHBseSB0aGUgJ3RleHREb2N1bWVudC9kaWRDaGFuZ2UnIG5vdGlmaWNhdGlvbnMgaW4gdGhlIG9yZGVyIHlvdVxuICAgICAqICAgcmVjZWl2ZSB0aGVtLlxuICAgICAqIC0gYXBwbHkgdGhlIGBUZXh0RG9jdW1lbnRDb250ZW50Q2hhbmdlRXZlbnRgcyBpbiBhIHNpbmdsZSBub3RpZmljYXRpb25cbiAgICAgKiAgIGluIHRoZSBvcmRlciB5b3UgcmVjZWl2ZSB0aGVtLlxuICAgICAqL1xuICAgIGNvbnRlbnRDaGFuZ2VzOiBUZXh0RG9jdW1lbnRDb250ZW50Q2hhbmdlRXZlbnRbXTtcbn1cblxuLyoqXG4gKiBBbiBldmVudCBkZXNjcmliaW5nIGEgY2hhbmdlIHRvIGEgdGV4dCBkb2N1bWVudC4gSWYgcmFuZ2UgYW5kIHJhbmdlTGVuZ3RoIGFyZVxuICogb21pdHRlZCB0aGUgbmV3IHRleHQgaXMgY29uc2lkZXJlZCB0byBiZSB0aGUgZnVsbCBjb250ZW50IG9mIHRoZSBkb2N1bWVudC5cbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbnMvc3BlY2lmaWNhdGlvbi1jdXJyZW50LyN0ZXh0RG9jdW1lbnRfZGlkQ2hhbmdlXG4gKi9cbmV4cG9ydCB0eXBlIFRleHREb2N1bWVudENvbnRlbnRDaGFuZ2VFdmVudCA9IHtcbiAgLyoqXG4gICAqIFRoZSByYW5nZSBvZiB0aGUgZG9jdW1lbnQgdGhhdCBjaGFuZ2VkLlxuICAgKi9cbiAgcmFuZ2U6IHByb3RvY29sLlJhbmdlO1xuXG4gIC8qKlxuICAgKiBUaGUgb3B0aW9uYWwgbGVuZ3RoIG9mIHRoZSByYW5nZSB0aGF0IGdvdCByZXBsYWNlZC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIHJhbmdlIGluc3RlYWQuXG4gICAqL1xuICByYW5nZUxlbmd0aD86IHByb3RvY29sLnVpbnRlZ2VyO1xuXG4gIC8qKlxuICAgKiBUaGUgbmV3IHRleHQgZm9yIHRoZSBwcm92aWRlZCByYW5nZS5cbiAgICovXG4gIHRleHQ6IHN0cmluZztcbn18e1xuICAgIC8qKlxuICAgICAqIFRoZSBuZXcgdGV4dCBvZiB0aGUgd2hvbGUgZG9jdW1lbnQuXG4gICAgICovXG4gICAgdGV4dDogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jdGV4dERvY3VtZW50RWRpdFxuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVGV4dERvY3VtZW50RWRpdCB7XG4gICAgLyoqXG4gICAgICogVGhlIHRleHQgZG9jdW1lbnQgdG8gY2hhbmdlLlxuICAgICAqL1xuICAgIHRleHREb2N1bWVudDogVmVyc2lvbmVkVGV4dERvY3VtZW50SWRlbnRpZmllcjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBlZGl0cyB0byBiZSBhcHBsaWVkLlxuICAgICAqL1xuICAgIGVkaXRzOiBUZXh0RWRpdFtdO1xufVxuXG4vKipcbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbnMvc3BlY2lmaWNhdGlvbi1jdXJyZW50LyN0ZXh0RWRpdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRleHRFZGl0IHtcbiAgICAvKipcbiAgICAgKiBUaGUgcmFuZ2Ugb2YgdGhlIHRleHQgZG9jdW1lbnQgdG8gYmUgbWFuaXB1bGF0ZWQuIFRvIGluc2VydFxuICAgICAqIHRleHQgaW50byBhIGRvY3VtZW50IGNyZWF0ZSBhIHJhbmdlIHdoZXJlIHN0YXJ0ID09PSBlbmQuXG4gICAgICovXG4gICAgcmFuZ2U6IHByb3RvY29sLlJhbmdlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHN0cmluZyB0byBiZSBpbnNlcnRlZC4gRm9yIGRlbGV0ZSBvcGVyYXRpb25zIHVzZSBhblxuICAgICAqIGVtcHR5IHN0cmluZy5cbiAgICAgKi9cbiAgICBuZXdUZXh0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3RleHREb2N1bWVudF9mb2xkaW5nUmFuZ2VcbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEZvbGRpbmdSYW5nZUNsaWVudENhcGFiaWxpdGllcyB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgZHluYW1pYyByZWdpc3RyYXRpb24gZm9yXG4gICAgICogZm9sZGluZyByYW5nZSBwcm92aWRlcnMuXG4gICAgICogSWYgdGhpcyBpcyBzZXQgdG8gYHRydWVgLCB0aGUgY2xpZW50IHN1cHBvcnRzIHRoZSBuZXdcbiAgICAgKiBgRm9sZGluZ1JhbmdlUmVnaXN0cmF0aW9uT3B0aW9uc2AgcmV0dXJuIHZhbHVlIGZvciB0aGUgY29ycmVzcG9uZGluZ1xuICAgICAqIHNlcnZlciBjYXBhYmlsaXR5IGFzIHdlbGwuXG4gICAgICovXG4gICAgZHluYW1pY1JlZ2lzdHJhdGlvbj86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGZvbGRpbmcgcmFuZ2VzIHRoYXQgdGhlIGNsaWVudCBwcmVmZXJzIHRvXG4gICAgICogcmVjZWl2ZSBwZXIgZG9jdW1lbnQuXG4gICAgICogVGhlIHZhbHVlIHNlcnZlcyBhcyBhIGhpbnQsIHNlcnZlcnMgYXJlIGZyZWUgdG8gZm9sbG93IHRoZSBsaW1pdC5cbiAgICAgKi9cbiAgICByYW5nZUxpbWl0PzogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIElmIHNldCwgdGhlIGNsaWVudCBzaWduYWxzIHRoYXQgaXQgb25seSBzdXBwb3J0cyBmb2xkaW5nIGNvbXBsZXRlIGxpbmVzLlxuICAgICAqIElmIHNldCwgdGhlIGNsaWVudCB3aWxsIGlnbm9yZSBzcGVjaWZpZWQgYHN0YXJ0Q2hhcmFjdGVyYCBhbmRcbiAgICAgKiBgZW5kQ2hhcmFjdGVyYCBwcm9wZXJ0aWVzIGluIGEgRm9sZGluZ1JhbmdlLlxuICAgICAqL1xuICAgIGxpbmVGb2xkaW5nT25seT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIGRvY3VtZW50IHJhbmdlIGZvcm1hdHRpbmcgcmVxdWVzdCBpcyBzZW50IGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyXG4gKiB0byBmb3JtYXQgYSBnaXZlbiByYW5nZSBpbiBhIGRvY3VtZW50LlxuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRG9jdW1lbnRSYW5nZUZvcm1hdHRpbmdDbGllbnRDYXBhYmlsaXRpZXMge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgZm9ybWF0dGluZyBzdXBwb3J0cyBkeW5hbWljIHJlZ2lzdHJhdGlvbi5cbiAgICAgKi9cbiAgICBkeW5hbWljUmVnaXN0cmF0aW9uPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jdGV4dERvY3VtZW50X3NlbGVjdGlvblJhbmdlXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBTZWxlY3Rpb25SYW5nZUNsaWVudENhcGFiaWxpdGllcyB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyBkeW5hbWljIHJlZ2lzdHJhdGlvbiBmb3Igc2VsZWN0aW9uXG4gICAgICogcmFuZ2UgcHJvdmlkZXJzLlxuICAgICAqIElmIHNldCB0byBgdHJ1ZWAsIHRoZSBjbGllbnQgc3VwcG9ydHMgdGhlIG5ld1xuICAgICAqIGBTZWxlY3Rpb25SYW5nZVJlZ2lzdHJhdGlvbk9wdGlvbnNgIHJldHVybiB2YWx1ZSBmb3IgdGhlIGNvcnJlc3BvbmRpbmdcbiAgICAgKiBzZXJ2ZXIgY2FwYWJpbGl0eSBhcyB3ZWxsLlxuICAgICAqL1xuICAgIGR5bmFtaWNSZWdpc3RyYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbnMvc3BlY2lmaWNhdGlvbi1jdXJyZW50LyN0ZXh0RG9jdW1lbnRfc2lnbmF0dXJlSGVscFxuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgU2lnbmF0dXJlSGVscENsaWVudENhcGFiaWxpdGllcyB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBzaWduYXR1cmUgaGVscCBzdXBwb3J0cyBkeW5hbWljIHJlZ2lzdHJhdGlvbi5cbiAgICAgKi9cbiAgICBkeW5hbWljUmVnaXN0cmF0aW9uPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjbGllbnQgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBgU2lnbmF0dXJlSW5mb3JtYXRpb25gXG4gICAgICogc3BlY2lmaWMgcHJvcGVydGllcy5cbiAgICAgKi9cbiAgICBzaWduYXR1cmVJbmZvcm1hdGlvbj86IHtcbiAgICAgIC8qKlxuICAgICAgICogQ2xpZW50IHN1cHBvcnRzIHRoZSBmb2xsb3cgY29udGVudCBmb3JtYXRzIGZvciB0aGUgZG9jdW1lbnRhdGlvblxuICAgICAgICogcHJvcGVydHkuIFRoZSBvcmRlciBkZXNjcmliZXMgdGhlIHByZWZlcnJlZCBmb3JtYXQgb2YgdGhlIGNsaWVudC5cbiAgICAgICAqL1xuICAgICAgZG9jdW1lbnRhdGlvbkZvcm1hdD86IE1hcmt1cEtpbmRbXTtcblxuICAgICAgLyoqXG4gICAgICAgKiBDbGllbnQgY2FwYWJpbGl0aWVzIHNwZWNpZmljIHRvIHBhcmFtZXRlciBpbmZvcm1hdGlvbi5cbiAgICAgICAqL1xuICAgICAgcGFyYW1ldGVySW5mb3JtYXRpb24/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgY2xpZW50IHN1cHBvcnRzIHByb2Nlc3NpbmcgbGFiZWwgb2Zmc2V0cyBpbnN0ZWFkIG9mIGFcbiAgICAgICAgICogc2ltcGxlIGxhYmVsIHN0cmluZy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHNpbmNlIDMuMTQuMFxuICAgICAgICAgKi9cbiAgICAgICAgbGFiZWxPZmZzZXRTdXBwb3J0PzogYm9vbGVhbjtcbiAgICAgIH07XG5cbiAgICAgIC8qKlxuICAgICAgICogVGhlIGNsaWVudCBzdXBwb3J0cyB0aGUgYGFjdGl2ZVBhcmFtZXRlcmAgcHJvcGVydHkgb25cbiAgICAgICAqIGBTaWduYXR1cmVJbmZvcm1hdGlvbmAgbGl0ZXJhbC5cbiAgICAgICAqXG4gICAgICAgKiBAc2luY2UgMy4xNi4wIC0gcHJvcG9zZWQgc3RhdGVcbiAgICAgICAqL1xuICAgICAgYWN0aXZlUGFyYW1ldGVyU3VwcG9ydD86IGJvb2xlYW47XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjbGllbnQgc3VwcG9ydHMgdG8gc2VuZCBhZGRpdGlvbmFsIGNvbnRleHQgaW5mb3JtYXRpb24gZm9yIGFcbiAgICAgKiBgdGV4dERvY3VtZW50L3NpZ25hdHVyZUhlbHBgIHJlcXVlc3QuIEEgY2xpZW50IHRoYXQgb3B0cyBpbnRvXG4gICAgICogY29udGV4dFN1cHBvcnQgd2lsbCBhbHNvIHN1cHBvcnQgdGhlIGByZXRyaWdnZXJDaGFyYWN0ZXJzYCBvblxuICAgICAqIGBTaWduYXR1cmVIZWxwT3B0aW9uc2AuXG4gICAgICpcbiAgICAgKiBAc2luY2UgMy4xNS4wXG4gICAgICovXG4gICAgY29udGV4dFN1cHBvcnQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbnMvc3BlY2lmaWNhdGlvbi1jdXJyZW50LyN0ZXh0RG9jdW1lbnRfaW1wbGVtZW50YXRpb25cbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEltcGxlbWVudGF0aW9uQ2xpZW50Q2FwYWJpbGl0aWVzIHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIGR5bmFtaWMgcmVnaXN0cmF0aW9uLlxuICAgICAqIElmIHRoaXMgaXMgc2V0IHRvIGB0cnVlYCwgdGhlIGNsaWVudCBzdXBwb3J0cyB0aGUgbmV3XG4gICAgICogYEltcGxlbWVudGF0aW9uUmVnaXN0cmF0aW9uT3B0aW9uc2AgcmV0dXJuIHZhbHVlIGZvciB0aGVcbiAgICAgKiBjb3JyZXNwb25kaW5nIHNlcnZlciBjYXBhYmlsaXR5IGFzIHdlbGwuXG4gICAgICovXG4gICAgZHluYW1pY1JlZ2lzdHJhdGlvbj86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY2xpZW50IHN1cHBvcnRzIGFkZGl0aW9uYWwgbWV0YWRhdGEgaW4gdGhlIGZvcm0gb2YgZGVmaW5pdGlvbiBsaW5rcy5cbiAgICAgKlxuICAgICAqIEBzaW5jZSAzLjE0LjBcbiAgICAgKi9cbiAgICBsaW5rU3VwcG9ydD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIHJlbmFtZSByZXF1ZXN0IGlzIHNlbnQgZnJvbSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXIgdG8gYXNrIHRoZSBzZXJ2ZXIgdG9cbiAqIGNvbXB1dGUgYSB3b3Jrc3BhY2UgY2hhbmdlIHNvIHRoYXQgdGhlIGNsaWVudCBjYW4gcGVyZm9ybSBhIHdvcmtzcGFjZS13aWRlXG4gKiByZW5hbWUgb2YgYSBzeW1ib2wuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBSZW5hbWVDbGllbnRDYXBhYmlsaXRpZXMge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgcmVuYW1lIHN1cHBvcnRzIGR5bmFtaWMgcmVnaXN0cmF0aW9uLlxuICAgICAqL1xuICAgIGR5bmFtaWNSZWdpc3RyYXRpb24/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQ2xpZW50IHN1cHBvcnRzIHRlc3RpbmcgZm9yIHZhbGlkaXR5IG9mIHJlbmFtZSBvcGVyYXRpb25zXG4gICAgICogYmVmb3JlIGV4ZWN1dGlvbi5cbiAgICAgKlxuICAgICAqIEBzaW5jZSB2ZXJzaW9uIDMuMTIuMFxuICAgICAqL1xuICAgIHByZXBhcmVTdXBwb3J0PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jdGV4dERvY3VtZW50X3R5cGVEZWZpbml0aW9uXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBUeXBlRGVmaW5pdGlvbkNsaWVudENhcGFiaWxpdGllcyB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyBkeW5hbWljIHJlZ2lzdHJhdGlvbi5cbiAgICAgKiBJZiB0aGlzIGlzIHNldCB0byBgdHJ1ZWAsIHRoZSBjbGllbnQgc3VwcG9ydHMgdGhlIG5ldyBgXG4gICAgICogVHlwZURlZmluaXRpb25SZWdpc3RyYXRpb25PcHRpb25zYCByZXR1cm4gdmFsdWUgZm9yIHRoZVxuICAgICAqIGNvcnJlc3BvbmRpbmcgc2VydmVyIGNhcGFiaWxpdHkgYXMgd2VsbC5cbiAgICAgKi9cbiAgICBkeW5hbWljUmVnaXN0cmF0aW9uPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjbGllbnQgc3VwcG9ydHMgYWRkaXRpb25hbCBtZXRhZGF0YSBpbiB0aGUgZm9ybSBvZiBkZWZpbml0aW9uIGxpbmtzLlxuICAgICAqXG4gICAgICogQHNpbmNlIDMuMTQuMFxuICAgICAqL1xuICAgIGxpbmtTdXBwb3J0PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jdGV4dERvY3VtZW50X2RpZENsb3NlXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBUZXh0RG9jdW1lbnRTeW5jQ2xpZW50Q2FwYWJpbGl0aWVzIHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRleHQgZG9jdW1lbnQgc3luY2hyb25pemF0aW9uIHN1cHBvcnRzIGR5bmFtaWMgcmVnaXN0cmF0aW9uLlxuICAgICAqL1xuICAgIGR5bmFtaWNSZWdpc3RyYXRpb24/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGNsaWVudCBzdXBwb3J0cyBzZW5kaW5nIHdpbGwgc2F2ZSBub3RpZmljYXRpb25zLlxuICAgICAqL1xuICAgIHdpbGxTYXZlPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjbGllbnQgc3VwcG9ydHMgc2VuZGluZyBhIHdpbGwgc2F2ZSByZXF1ZXN0IGFuZFxuICAgICAqIHdhaXRzIGZvciBhIHJlc3BvbnNlIHByb3ZpZGluZyB0ZXh0IGVkaXRzIHdoaWNoIHdpbGxcbiAgICAgKiBiZSBhcHBsaWVkIHRvIHRoZSBkb2N1bWVudCBiZWZvcmUgaXQgaXMgc2F2ZWQuXG4gICAgICovXG4gICAgd2lsbFNhdmVXYWl0VW50aWw/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGNsaWVudCBzdXBwb3J0cyBkaWQgc2F2ZSBub3RpZmljYXRpb25zLlxuICAgICAqL1xuICAgIGRpZFNhdmU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIERlZmluZXMgaG93IHRoZSBob3N0IChlZGl0b3IpIHNob3VsZCBzeW5jIGRvY3VtZW50IGNoYW5nZXNcbiAqIHRvIHRoZSBsYW5ndWFnZSBzZXJ2ZXIuXG4gKi9cbmV4cG9ydCBlbnVtIFRleHREb2N1bWVudFN5bmNLaW5kIHtcbiAgLyoqXG4gICAqIERvY3VtZW50cyBzaG91bGQgbm90IGJlIHN5bmNlZCBhdCBhbGwuXG4gICAqL1xuICBOb25lID0gMCxcblxuICAvKipcbiAgICogRG9jdW1lbnRzIGFyZSBzeW5jZWQgYnkgYWx3YXlzIHNlbmRpbmcgdGhlIGZ1bGwgY29udGVudFxuICAgKiBvZiB0aGUgZG9jdW1lbnQuXG4gICAqL1xuICBGdWxsID0gMSxcblxuICAvKipcbiAgICogRG9jdW1lbnRzIGFyZSBzeW5jZWQgYnkgc2VuZGluZyB0aGUgZnVsbCBjb250ZW50IG9uIG9wZW4uXG4gICAqIEFmdGVyIHRoYXQgb25seSBpbmNyZW1lbnRhbCB1cGRhdGVzIHRvIHRoZSBkb2N1bWVudCBhcmVcbiAgICogc2VuZC5cbiAgICovXG4gIEluY3JlbWVudGFsID0gMixcbn1cblxuLyoqXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jdGV4dERvY3VtZW50X2RpZENsb3NlXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBUZXh0RG9jdW1lbnRTeW5jT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogT3BlbiBhbmQgY2xvc2Ugbm90aWZpY2F0aW9ucyBhcmUgc2VudCB0byB0aGUgc2VydmVyLlxuICAgICAqIElmIG9taXR0ZWQsIG9wZW4gY2xvc2Ugbm90aWZpY2F0aW9uIHNob3VsZCBub3QgYmUgc2VudC5cbiAgICAgKi9cbiAgICBvcGVuQ2xvc2U/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIENoYW5nZSBub3RpZmljYXRpb25zIGFyZSBzZW50IHRvIHRoZSBzZXJ2ZXIuXG4gICAgICogU2VlIFRleHREb2N1bWVudFN5bmNLaW5kLk5vbmUsIFRleHREb2N1bWVudFN5bmNLaW5kLkZ1bGwsXG4gICAgICogYW5kIFRleHREb2N1bWVudFN5bmNLaW5kLkluY3JlbWVudGFsLlxuICAgICAqIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIFRleHREb2N1bWVudFN5bmNLaW5kLk5vbmUuXG4gICAgICovXG4gICAgY2hhbmdlPzogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIElmIHByZXNlbnQgd2lsbCBzYXZlIG5vdGlmaWNhdGlvbnMgYXJlIHNlbnQgdG8gdGhlIHNlcnZlci5cbiAgICAgKiBJZiBvbWl0dGVkLCB0aGUgbm90aWZpY2F0aW9uIHNob3VsZCBub3QgYmUgc2VudC5cbiAgICAgKi9cbiAgICB3aWxsU2F2ZT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogSWYgcHJlc2VudCB3aWxsIHNhdmUgd2FpdCB1bnRpbCByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2VydmVyLlxuICAgICAqIElmIG9taXR0ZWQsIHRoZSByZXF1ZXN0IHNob3VsZCBub3QgYmUgc2VudC5cbiAgICAgKi9cbiAgICB3aWxsU2F2ZVdhaXRVbnRpbD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogSWYgcHJlc2VudCBzYXZlIG5vdGlmaWNhdGlvbnMgYXJlIHNlbnQgdG8gdGhlIHNlcnZlci5cbiAgICAgKiBJZiBvbWl0dGVkLCB0aGUgbm90aWZpY2F0aW9uIHNob3VsZCBub3QgYmUgc2VudC5cbiAgICAgKi9cbiAgICBzYXZlPzogYm9vbGVhbnxTYXZlT3B0aW9ucztcbn1cblxuLyoqXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jdGV4dERvY3VtZW50X2RpZFNhdmVcbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFNhdmVPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBUaGUgY2xpZW50IGlzIHN1cHBvc2VkIHRvIGluY2x1ZGUgdGhlIGNvbnRlbnQgb24gc2F2ZS5cbiAgICAgKi9cbiAgICBpbmNsdWRlVGV4dD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3RleHREb2N1bWVudF9kZWZpbml0aW9uXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBEZWZpbml0aW9uQ2xpZW50Q2FwYWJpbGl0aWVzIHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGRlZmluaXRpb24gc3VwcG9ydHMgZHluYW1pYyByZWdpc3RyYXRpb24uXG4gICAgICovXG4gICAgZHluYW1pY1JlZ2lzdHJhdGlvbj86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY2xpZW50IHN1cHBvcnRzIGFkZGl0aW9uYWwgbWV0YWRhdGEgaW4gdGhlIGZvcm0gb2YgZGVmaW5pdGlvbiBsaW5rcy5cbiAgICAgKlxuICAgICAqIEBzaW5jZSAzLjE0LjBcbiAgICAgKi9cbiAgICBsaW5rU3VwcG9ydD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3RleHREb2N1bWVudF9kZWNsYXJhdGlvblxuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRGVjbGFyYXRpb25DbGllbnRDYXBhYmlsaXRpZXMge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgZGVjbGFyYXRpb24gc3VwcG9ydHMgZHluYW1pYyByZWdpc3RyYXRpb24uXG4gICAgICogSWYgdGhpcyBpcyBzZXQgdG8gYHRydWVgLCB0aGUgY2xpZW50IHN1cHBvcnRzIHRoZSBuZXdcbiAgICAgKiBgRGVjbGFyYXRpb25SZWdpc3RyYXRpb25PcHRpb25zYCByZXR1cm4gdmFsdWUgZm9yIHRoZVxuICAgICAqIGNvcnJlc3BvbmRpbmcgc2VydmVyIGNhcGFiaWxpdHkgYXMgd2VsbC5cbiAgICAgKi9cbiAgICBkeW5hbWljUmVnaXN0cmF0aW9uPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjbGllbnQgc3VwcG9ydHMgYWRkaXRpb25hbCBtZXRhZGF0YSBpbiB0aGUgZm9ybSBvZiBkZWNsYXJhdGlvbiBsaW5rcy5cbiAgICAgKi9cbiAgICBsaW5rU3VwcG9ydD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3RleHREb2N1bWVudF9kb2N1bWVudEhpZ2hsaWdodFxuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRG9jdW1lbnRIaWdobGlnaHRDbGllbnRDYXBhYmlsaXRpZXMge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgZG9jdW1lbnQgaGlnaGxpZ2h0IHN1cHBvcnRzIGR5bmFtaWMgcmVnaXN0cmF0aW9uLlxuICAgICAqL1xuICAgIGR5bmFtaWNSZWdpc3RyYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbnMvc3BlY2lmaWNhdGlvbi1jdXJyZW50LyN0ZXh0RG9jdW1lbnRfcmVmZXJlbmNlc1xuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgUmVmZXJlbmNlQ2xpZW50Q2FwYWJpbGl0aWVzIHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHJlZmVyZW5jZXMgc3VwcG9ydHMgZHluYW1pYyByZWdpc3RyYXRpb24uXG4gICAgICovXG4gICAgZHluYW1pY1JlZ2lzdHJhdGlvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3RleHREb2N1bWVudF9kb2N1bWVudFN5bWJvbFxuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRG9jdW1lbnRTeW1ib2xDbGllbnRDYXBhYmlsaXRpZXMge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgZG9jdW1lbnQgc3ltYm9sIHN1cHBvcnRzIGR5bmFtaWMgcmVnaXN0cmF0aW9uLlxuICAgICAqL1xuICAgIGR5bmFtaWNSZWdpc3RyYXRpb24/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogU3BlY2lmaWMgY2FwYWJpbGl0aWVzIGZvciB0aGUgYFN5bWJvbEtpbmRgIGluIHRoZVxuICAgICAqIGB0ZXh0RG9jdW1lbnQvZG9jdW1lbnRTeW1ib2xgIHJlcXVlc3QuXG4gICAgICovXG4gICAgc3ltYm9sS2luZD86IHtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIHN5bWJvbCBraW5kIHZhbHVlcyB0aGUgY2xpZW50IHN1cHBvcnRzLiBXaGVuIHRoaXNcbiAgICAgICAqIHByb3BlcnR5IGV4aXN0cyB0aGUgY2xpZW50IGFsc28gZ3VhcmFudGVlcyB0aGF0IGl0IHdpbGxcbiAgICAgICAqIGhhbmRsZSB2YWx1ZXMgb3V0c2lkZSBpdHMgc2V0IGdyYWNlZnVsbHkgYW5kIGZhbGxzIGJhY2tcbiAgICAgICAqIHRvIGEgZGVmYXVsdCB2YWx1ZSB3aGVuIHVua25vd24uXG4gICAgICAgKlxuICAgICAgICogSWYgdGhpcyBwcm9wZXJ0eSBpcyBub3QgcHJlc2VudCB0aGUgY2xpZW50IG9ubHkgc3VwcG9ydHNcbiAgICAgICAqIHRoZSBzeW1ib2wga2luZHMgZnJvbSBgRmlsZWAgdG8gYEFycmF5YCBhcyBkZWZpbmVkIGluXG4gICAgICAgKiB0aGUgaW5pdGlhbCB2ZXJzaW9uIG9mIHRoZSBwcm90b2NvbC5cbiAgICAgICAqL1xuICAgICAgdmFsdWVTZXQ/OiBwcm90b2NvbC5TeW1ib2xLaW5kW107XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjbGllbnQgc3VwcG9ydHMgaGllcmFyY2hpY2FsIGRvY3VtZW50IHN5bWJvbHMuXG4gICAgICovXG4gICAgaGllcmFyY2hpY2FsRG9jdW1lbnRTeW1ib2xTdXBwb3J0PzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjbGllbnQgc3VwcG9ydHMgdGFncyBvbiBgU3ltYm9sSW5mb3JtYXRpb25gLiBUYWdzIGFyZSBzdXBwb3J0ZWQgb25cbiAgICAgKiBgRG9jdW1lbnRTeW1ib2xgIGlmIGBoaWVyYXJjaGljYWxEb2N1bWVudFN5bWJvbFN1cHBvcnRgIGlzIHNldCB0byB0cnVlLlxuICAgICAqIENsaWVudHMgc3VwcG9ydGluZyB0YWdzIGhhdmUgdG8gaGFuZGxlIHVua25vd24gdGFncyBncmFjZWZ1bGx5LlxuICAgICAqXG4gICAgICogQHNpbmNlIDMuMTYuMFxuICAgICAqL1xuICAgIHRhZ1N1cHBvcnQ/OiB7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSB0YWdzIHN1cHBvcnRlZCBieSB0aGUgY2xpZW50LlxuICAgICAgICovXG4gICAgICB2YWx1ZVNldDogcHJvdG9jb2wuU3ltYm9sVGFnW11cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogVGhlIGNsaWVudCBzdXBwb3J0cyBhbiBhZGRpdGlvbmFsIGxhYmVsIHByZXNlbnRlZCBpbiB0aGUgVUkgd2hlblxuICAgICAqIHJlZ2lzdGVyaW5nIGEgZG9jdW1lbnQgc3ltYm9sIHByb3ZpZGVyLlxuICAgICAqXG4gICAgICogQHNpbmNlIDMuMTYuMFxuICAgICAqL1xuICAgIGxhYmVsU3VwcG9ydD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIGRvY3VtZW50IG9uIHR5cGUgZm9ybWF0dGluZyByZXF1ZXN0IGlzIHNlbnQgZnJvbSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXJcbiAqIHRvIGZvcm1hdCBwYXJ0cyBvZiB0aGUgZG9jdW1lbnQgZHVyaW5nIHR5cGluZy5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIERvY3VtZW50T25UeXBlRm9ybWF0dGluZ0NsaWVudENhcGFiaWxpdGllcyB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBvbiB0eXBlIGZvcm1hdHRpbmcgc3VwcG9ydHMgZHluYW1pYyByZWdpc3RyYXRpb24uXG4gICAgICovXG4gICAgZHluYW1pY1JlZ2lzdHJhdGlvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIGRvY3VtZW50IGZvcm1hdHRpbmcgcmVxdWVzdCBpcyBzZW50IGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyIHRvXG4gKiBmb3JtYXQgYSB3aG9sZSBkb2N1bWVudC5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIERvY3VtZW50Rm9ybWF0dGluZ0NsaWVudENhcGFiaWxpdGllcyB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBmb3JtYXR0aW5nIHN1cHBvcnRzIGR5bmFtaWMgcmVnaXN0cmF0aW9uLlxuICAgICAqL1xuICAgIGR5bmFtaWNSZWdpc3RyYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBkb2N1bWVudCBjb2xvciByZXF1ZXN0IGlzIHNlbnQgZnJvbSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXIgdG8gbGlzdCBhbGxcbiAqIGNvbG9yIHJlZmVyZW5jZXMgZm91bmQgaW4gYSBnaXZlbiB0ZXh0IGRvY3VtZW50LiBBbG9uZyB3aXRoIHRoZSByYW5nZSwgYVxuICogY29sb3IgdmFsdWUgaW4gUkdCIGlzIHJldHVybmVkLiBDbGllbnRzIGNhbiB1c2UgdGhlIHJlc3VsdCB0byBkZWNvcmF0ZSBjb2xvclxuICogcmVmZXJlbmNlcyBpbiBhbiBlZGl0b3IuIEZvciBleGFtcGxlOiBDb2xvciBib3hlcyBzaG93aW5nIHRoZSBhY3R1YWwgY29sb3JcbiAqIG5leHQgdG8gdGhlIHJlZmVyZW5jZSBTaG93IGEgY29sb3IgcGlja2VyIHdoZW4gYSBjb2xvciByZWZlcmVuY2UgaXMgZWRpdGVkXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBEb2N1bWVudENvbG9yQ2xpZW50Q2FwYWJpbGl0aWVzIHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGRvY3VtZW50IGNvbG9yIHN1cHBvcnRzIGR5bmFtaWMgcmVnaXN0cmF0aW9uLlxuICAgICAqL1xuICAgIGR5bmFtaWNSZWdpc3RyYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBkb2N1bWVudCBsaW5rcyByZXF1ZXN0IGlzIHNlbnQgZnJvbSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXIgdG8gcmVxdWVzdFxuICogdGhlIGxvY2F0aW9uIG9mIGxpbmtzIGluIGEgZG9jdW1lbnQuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBEb2N1bWVudExpbmtDbGllbnRDYXBhYmlsaXRpZXMge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgZG9jdW1lbnQgbGluayBzdXBwb3J0cyBkeW5hbWljIHJlZ2lzdHJhdGlvbi5cbiAgICAgKi9cbiAgICBkeW5hbWljUmVnaXN0cmF0aW9uPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGNsaWVudCBzdXBwb3J0cyB0aGUgYHRvb2x0aXBgIHByb3BlcnR5IG9uIGBEb2N1bWVudExpbmtgLlxuICAgICAqXG4gICAgICogQHNpbmNlIDMuMTUuMFxuICAgICAqL1xuICAgIHRvb2x0aXBTdXBwb3J0PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgQ29kZUxlbnMgcmVxdWVzdCBpcyBzZW50IGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyIHRvIGNvbXB1dGVcbiAqIENvZGVMZW5zIGZvciBhIGdpdmVuIHRleHQgZG9jdW1lbnQuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBDb2RlTGVuc0NsaWVudENhcGFiaWxpdGllcyB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBDb2RlTGVucyBzdXBwb3J0cyBkeW5hbWljIHJlZ2lzdHJhdGlvbi5cbiAgICAgKi9cbiAgICBkeW5hbWljUmVnaXN0cmF0aW9uPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jdGV4dERvY3VtZW50X2NvZGVBY3Rpb25cbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIENvZGVBY3Rpb25DbGllbnRDYXBhYmlsaXRpZXMge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgY29kZSBhY3Rpb24gc3VwcG9ydHMgZHluYW1pYyByZWdpc3RyYXRpb24uXG4gICAgICovXG4gICAgZHluYW1pY1JlZ2lzdHJhdGlvbj86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY2xpZW50IHN1cHBvcnRzIGNvZGUgYWN0aW9uIGxpdGVyYWxzIGFzIGEgdmFsaWRcbiAgICAgKiByZXNwb25zZSBvZiB0aGUgYHRleHREb2N1bWVudC9jb2RlQWN0aW9uYCByZXF1ZXN0LlxuICAgICAqXG4gICAgICogQHNpbmNlIDMuOC4wXG4gICAgICovXG4gICAgY29kZUFjdGlvbkxpdGVyYWxTdXBwb3J0Pzoge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgY29kZSBhY3Rpb24ga2luZCBpcyBzdXBwb3J0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIHZhbHVlXG4gICAgICAgKiBzZXQuXG4gICAgICAgKi9cbiAgICAgIGNvZGVBY3Rpb25LaW5kOiB7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBjb2RlIGFjdGlvbiBraW5kIHZhbHVlcyB0aGUgY2xpZW50IHN1cHBvcnRzLiBXaGVuIHRoaXNcbiAgICAgICAgICogcHJvcGVydHkgZXhpc3RzIHRoZSBjbGllbnQgYWxzbyBndWFyYW50ZWVzIHRoYXQgaXQgd2lsbFxuICAgICAgICAgKiBoYW5kbGUgdmFsdWVzIG91dHNpZGUgaXRzIHNldCBncmFjZWZ1bGx5IGFuZCBmYWxscyBiYWNrXG4gICAgICAgICAqIHRvIGEgZGVmYXVsdCB2YWx1ZSB3aGVuIHVua25vd24uXG4gICAgICAgICAqL1xuICAgICAgICB2YWx1ZVNldDogQ29kZUFjdGlvbktpbmRbXTtcbiAgICAgIH07XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgY29kZSBhY3Rpb24gc3VwcG9ydHMgdGhlIGBpc1ByZWZlcnJlZGAgcHJvcGVydHkuXG4gICAgICogQHNpbmNlIDMuMTUuMFxuICAgICAqL1xuICAgIGlzUHJlZmVycmVkU3VwcG9ydD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIGtpbmQgb2YgYSBjb2RlIGFjdGlvbi5cbiAqXG4gKiBLaW5kcyBhcmUgYSBoaWVyYXJjaGljYWwgbGlzdCBvZiBpZGVudGlmaWVycyBzZXBhcmF0ZWQgYnkgYC5gLFxuICogZS5nLiBgXCJyZWZhY3Rvci5leHRyYWN0LmZ1bmN0aW9uXCJgLlxuICpcbiAqIFRoZSBzZXQgb2Yga2luZHMgaXMgb3BlbiBhbmQgdGhlIGNsaWVudCBuZWVkcyB0byBhbm5vdW5jZSB0aGUga2luZHMgaXRcbiAqIHN1cHBvcnRzIHRvIHRoZSBzZXJ2ZXIgZHVyaW5nIGluaXRpYWxpemF0aW9uLlxuICovXG5leHBvcnQgZW51bSBDb2RlQWN0aW9uS2luZCB7XG5cbiAgLyoqXG4gICAqIEVtcHR5IGtpbmQuXG4gICAqL1xuICBFbXB0eSA9ICcnLFxuXG4gIC8qKlxuICAgKiBCYXNlIGtpbmQgZm9yIHF1aWNrZml4IGFjdGlvbnM6ICdxdWlja2ZpeCcuXG4gICAqL1xuICBRdWlja0ZpeCA9ICdxdWlja2ZpeCcsXG5cbiAgLyoqXG4gICAqIEJhc2Uga2luZCBmb3IgcmVmYWN0b3JpbmcgYWN0aW9uczogJ3JlZmFjdG9yJy5cbiAgICovXG4gIFJlZmFjdG9yID0gJ3JlZmFjdG9yJyxcblxuICAvKipcbiAgICogQmFzZSBraW5kIGZvciByZWZhY3RvcmluZyBleHRyYWN0aW9uIGFjdGlvbnM6ICdyZWZhY3Rvci5leHRyYWN0Jy5cbiAgICpcbiAgICogRXhhbXBsZSBleHRyYWN0IGFjdGlvbnM6XG4gICAqXG4gICAqIC0gRXh0cmFjdCBtZXRob2RcbiAgICogLSBFeHRyYWN0IGZ1bmN0aW9uXG4gICAqIC0gRXh0cmFjdCB2YXJpYWJsZVxuICAgKiAtIEV4dHJhY3QgaW50ZXJmYWNlIGZyb20gY2xhc3NcbiAgICogLSAuLi5cbiAgICovXG4gIFJlZmFjdG9yRXh0cmFjdCA9ICdyZWZhY3Rvci5leHRyYWN0JyxcblxuICAvKipcbiAgICogQmFzZSBraW5kIGZvciByZWZhY3RvcmluZyBpbmxpbmUgYWN0aW9uczogJ3JlZmFjdG9yLmlubGluZScuXG4gICAqXG4gICAqIEV4YW1wbGUgaW5saW5lIGFjdGlvbnM6XG4gICAqXG4gICAqIC0gSW5saW5lIGZ1bmN0aW9uXG4gICAqIC0gSW5saW5lIHZhcmlhYmxlXG4gICAqIC0gSW5saW5lIGNvbnN0YW50XG4gICAqIC0gLi4uXG4gICAqL1xuICBSZWZhY3RvcklubGluZSA9ICdyZWZhY3Rvci5pbmxpbmUnLFxuXG4gIC8qKlxuICAgKiBCYXNlIGtpbmQgZm9yIHJlZmFjdG9yaW5nIHJld3JpdGUgYWN0aW9uczogJ3JlZmFjdG9yLnJld3JpdGUnLlxuICAgKlxuICAgKiBFeGFtcGxlIHJld3JpdGUgYWN0aW9uczpcbiAgICpcbiAgICogLSBDb252ZXJ0IEphdmFTY3JpcHQgZnVuY3Rpb24gdG8gY2xhc3NcbiAgICogLSBBZGQgb3IgcmVtb3ZlIHBhcmFtZXRlclxuICAgKiAtIEVuY2Fwc3VsYXRlIGZpZWxkXG4gICAqIC0gTWFrZSBtZXRob2Qgc3RhdGljXG4gICAqIC0gTW92ZSBtZXRob2QgdG8gYmFzZSBjbGFzc1xuICAgKiAtIC4uLlxuICAgKi9cbiAgUmVmYWN0b3JSZXdyaXRlID0gJ3JlZmFjdG9yLnJld3JpdGUnLFxuXG4gIC8qKlxuICAgKiBCYXNlIGtpbmQgZm9yIHNvdXJjZSBhY3Rpb25zOiBgc291cmNlYC5cbiAgICpcbiAgICogU291cmNlIGNvZGUgYWN0aW9ucyBhcHBseSB0byB0aGUgZW50aXJlIGZpbGUuXG4gICAqL1xuICBTb3VyY2UgPSAnc291cmNlJyxcblxuICAvKipcbiAgICogQmFzZSBraW5kIGZvciBhbiBvcmdhbml6ZSBpbXBvcnRzIHNvdXJjZSBhY3Rpb24gYHNvdXJjZS5vcmdhbml6ZUltcG9ydHNgLlxuICAgKi9cbiAgU291cmNlT3JnYW5pemVJbXBvcnRzID0gJ3NvdXJjZS5vcmdhbml6ZUltcG9ydHMnLFxufVxuXG4vKipcbiAqIENvbnRhaW5zIGFkZGl0aW9uYWwgZGlhZ25vc3RpYyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udGV4dCBpbiB3aGljaFxuICogYSBjb2RlIGFjdGlvbiBpcyBydW4uXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBDb2RlQWN0aW9uQ29udGV4dCB7XG4gICAgLyoqXG4gICAgICogQW4gYXJyYXkgb2YgZGlhZ25vc3RpY3Mga25vd24gb24gdGhlIGNsaWVudCBzaWRlIG92ZXJsYXBwaW5nIHRoZSByYW5nZVxuICAgICAqIHByb3ZpZGVkIHRvIHRoZSBgdGV4dERvY3VtZW50L2NvZGVBY3Rpb25gIHJlcXVlc3QuXG4gICAgICogVGhleSBhcmUgcHJvdmlkZWQgc28gdGhhdCB0aGUgc2VydmVyIGtub3dzIHdoaWNoIGVycm9ycyBhcmUgY3VycmVudGx5XG4gICAgICogcHJlc2VudGVkIHRvIHRoZSB1c2VyIGZvciB0aGUgZ2l2ZW4gcmFuZ2UuIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0XG4gICAgICogdGhlc2UgYWNjdXJhdGVseSByZWZsZWN0IHRoZSBlcnJvciBzdGF0ZSBvZiB0aGUgcmVzb3VyY2UuXG4gICAgICogVGhlIHByaW1hcnkgcGFyYW1ldGVyIHRvIGNvbXB1dGUgY29kZSBhY3Rpb25zIGlzIHRoZSBwcm92aWRlZCByYW5nZS5cbiAgICAgKi9cbiAgICBkaWFnbm9zdGljczogcHJvdG9jb2wuRGlhZ25vc3RpY1tdO1xuXG4gICAgLyoqXG4gICAgICogUmVxdWVzdGVkIGtpbmQgb2YgYWN0aW9ucyB0byByZXR1cm4uXG4gICAgICpcbiAgICAgKiBBY3Rpb25zIG5vdCBvZiB0aGlzIGtpbmQgYXJlIGZpbHRlcmVkIG91dCBieSB0aGUgY2xpZW50IGJlZm9yZVxuICAgICAqIGJlaW5nIHNob3duLCBzbyBzZXJ2ZXJzIGNhbiBvbWl0IGNvbXB1dGluZyB0aGVtLlxuICAgICAqL1xuICAgIG9ubHk/OiBDb2RlQWN0aW9uS2luZFtdO1xufVxuXG4vKipcbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbnMvc3BlY2lmaWNhdGlvbi1jdXJyZW50LyN0ZXh0RG9jdW1lbnRfcHVibGlzaERpYWdub3N0aWNzXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBQdWJsaXNoRGlhZ25vc3RpY3NDbGllbnRDYXBhYmlsaXRpZXMge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGNsaWVudHMgYWNjZXB0cyBkaWFnbm9zdGljcyB3aXRoIHJlbGF0ZWQgaW5mb3JtYXRpb24uXG4gICAgICovXG4gICAgcmVsYXRlZEluZm9ybWF0aW9uPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIENsaWVudCBzdXBwb3J0cyB0aGUgdGFnIHByb3BlcnR5IHRvIHByb3ZpZGUgbWV0YSBkYXRhIGFib3V0IGEgZGlhZ25vc3RpYy5cbiAgICAgKiBDbGllbnRzIHN1cHBvcnRpbmcgdGFncyBoYXZlIHRvIGhhbmRsZSB1bmtub3duIHRhZ3MgZ3JhY2VmdWxseS5cbiAgICAgKlxuICAgICAqIEBzaW5jZSAzLjE1LjBcbiAgICAgKi9cbiAgICB0YWdTdXBwb3J0Pzoge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgdGFncyBzdXBwb3J0ZWQgYnkgdGhlIGNsaWVudC5cbiAgICAgICAqL1xuICAgICAgdmFsdWVTZXQ6IHByb3RvY29sLkRpYWdub3N0aWNUYWdbXTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgY2xpZW50IGludGVycHJldHMgdGhlIHZlcnNpb24gcHJvcGVydHkgb2YgdGhlXG4gICAgICogYHRleHREb2N1bWVudC9wdWJsaXNoRGlhZ25vc3RpY3NgIG5vdGlmaWNhdGlvbidzIHBhcmFtZXRlci5cbiAgICAgKlxuICAgICAqIEBzaW5jZSAzLjE1LjBcbiAgICAgKi9cbiAgICB2ZXJzaW9uU3VwcG9ydD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGNvbGxlY3Rpb24gb2YgW2NvbXBsZXRpb24gaXRlbXNdKCNDb21wbGV0aW9uSXRlbSkgdG8gYmVcbiAqIHByZXNlbnRlZCBpbiB0aGUgZWRpdG9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBsZXRpb25MaXN0IHtcbiAgICAvKipcbiAgICAgKiBUaGlzIGxpc3QgaXQgbm90IGNvbXBsZXRlLiBGdXJ0aGVyIHR5cGluZyBzaG91bGQgcmVzdWx0IGluIHJlY29tcHV0aW5nXG4gICAgICogdGhpcyBsaXN0LlxuICAgICAqL1xuICAgIGlzSW5jb21wbGV0ZTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjb21wbGV0aW9uIGl0ZW1zLlxuICAgICAqL1xuICAgIGl0ZW1zOiBDb21wbGV0aW9uSXRlbVtdO1xufVxuXG4vKipcbiAqIERlZmluZXMgd2hldGhlciB0aGUgaW5zZXJ0IHRleHQgaW4gYSBjb21wbGV0aW9uIGl0ZW0gc2hvdWxkIGJlIGludGVycHJldGVkIGFzXG4gKiBwbGFpbiB0ZXh0IG9yIGEgc25pcHBldC5cbiAqL1xuZXhwb3J0IGVudW0gSW5zZXJ0VGV4dEZvcm1hdCB7XG4gIC8qKlxuICAgKiBUaGUgcHJpbWFyeSB0ZXh0IHRvIGJlIGluc2VydGVkIGlzIHRyZWF0ZWQgYXMgYSBwbGFpbiBzdHJpbmcuXG4gICAqL1xuICBQbGFpblRleHQgPSAxLFxuXG4gIC8qKlxuICAgKiBUaGUgcHJpbWFyeSB0ZXh0IHRvIGJlIGluc2VydGVkIGlzIHRyZWF0ZWQgYXMgYSBzbmlwcGV0LlxuICAgKlxuICAgKiBBIHNuaXBwZXQgY2FuIGRlZmluZSB0YWIgc3RvcHMgYW5kIHBsYWNlaG9sZGVycyB3aXRoIGAkMWAsIGAkMmBcbiAgICogYW5kIGAkezM6Zm9vfWAuIGAkMGAgZGVmaW5lcyB0aGUgZmluYWwgdGFiIHN0b3AsIGl0IGRlZmF1bHRzIHRvXG4gICAqIHRoZSBlbmQgb2YgdGhlIHNuaXBwZXQuIFBsYWNlaG9sZGVycyB3aXRoIGVxdWFsIGlkZW50aWZpZXJzIGFyZSBsaW5rZWQsXG4gICAqIHRoYXQgaXMgdHlwaW5nIGluIG9uZSB3aWxsIHVwZGF0ZSBvdGhlcnMgdG9vLlxuICAgKi9cbiAgU25pcHBldCA9IDIsXG59XG5cbi8qKlxuICogQSBzcGVjaWFsIHRleHQgZWRpdCB0byBwcm92aWRlIGFuIGluc2VydCBhbmQgYSByZXBsYWNlIG9wZXJhdGlvbi5cbiAqXG4gKiBAc2luY2UgMy4xNi4wXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zZXJ0UmVwbGFjZUVkaXQge1xuICAgIC8qKlxuICAgICAqIFRoZSBzdHJpbmcgdG8gYmUgaW5zZXJ0ZWQuXG4gICAgICovXG4gICAgbmV3VGV4dDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHJhbmdlIGlmIHRoZSBpbnNlcnQgaXMgcmVxdWVzdGVkXG4gICAgICovXG4gICAgaW5zZXJ0OiBwcm90b2NvbC5SYW5nZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSByYW5nZSBpZiB0aGUgcmVwbGFjZSBpcyByZXF1ZXN0ZWQuXG4gICAgICovXG4gICAgcmVwbGFjZTogcHJvdG9jb2wuUmFuZ2U7XG59XG5cbi8qKlxuICogSG93IHdoaXRlc3BhY2UgYW5kIGluZGVudGF0aW9uIGlzIGhhbmRsZWQgZHVyaW5nIGNvbXBsZXRpb25cbiAqIGl0ZW0gaW5zZXJ0aW9uLlxuICpcbiAqIEBzaW5jZSAzLjE2LjBcbiAqL1xuZXhwb3J0IGVudW0gSW5zZXJ0VGV4dE1vZGUge1xuICAvKipcbiAgICogVGhlIGluc2VydGlvbiBvciByZXBsYWNlIHN0cmluZ3MgaXMgdGFrZW4gYXMgaXQgaXMuIElmIHRoZVxuICAgKiB2YWx1ZSBpcyBtdWx0aSBsaW5lIHRoZSBsaW5lcyBiZWxvdyB0aGUgY3Vyc29yIHdpbGwgYmVcbiAgICogaW5zZXJ0ZWQgdXNpbmcgdGhlIGluZGVudGF0aW9uIGRlZmluZWQgaW4gdGhlIHN0cmluZyB2YWx1ZS5cbiAgICogVGhlIGNsaWVudCB3aWxsIG5vdCBhcHBseSBhbnkga2luZCBvZiBhZGp1c3RtZW50cyB0byB0aGVcbiAgICogc3RyaW5nLlxuICAgKi9cbiAgYXNJcyA9IDEsXG5cbiAgLyoqXG4gICAqIFRoZSBlZGl0b3IgYWRqdXN0cyBsZWFkaW5nIHdoaXRlc3BhY2Ugb2YgbmV3IGxpbmVzIHNvIHRoYXRcbiAgICogdGhleSBtYXRjaCB0aGUgaW5kZW50YXRpb24gdXAgdG8gdGhlIGN1cnNvciBvZiB0aGUgbGluZSBmb3JcbiAgICogd2hpY2ggdGhlIGl0ZW0gaXMgYWNjZXB0ZWQuXG4gICAqXG4gICAqIENvbnNpZGVyIGEgbGluZSBsaWtlIHRoaXM6IDwydGFicz48Y3Vyc29yPjwzdGFicz5mb28uIEFjY2VwdGluZyBhXG4gICAqIG11bHRpIGxpbmUgY29tcGxldGlvbiBpdGVtIGlzIGluZGVudGVkIHVzaW5nIDIgdGFicyBhbmQgYWxsXG4gICAqIGZvbGxvd2luZyBsaW5lcyBpbnNlcnRlZCB3aWxsIGJlIGluZGVudGVkIHVzaW5nIDIgdGFicyBhcyB3ZWxsLlxuICAgKi9cbiAgYWRqdXN0SW5kZW50YXRpb24gPSAyLFxufVxuXG4vKipcbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbnMvc3BlY2lmaWNhdGlvbi1jdXJyZW50LyN0ZXh0RG9jdW1lbnRfY29tcGxldGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBsZXRpb25JdGVtIHtcbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgb2YgdGhpcyBjb21wbGV0aW9uIGl0ZW0uIEJ5IGRlZmF1bHRcbiAgICAgKiBhbHNvIHRoZSB0ZXh0IHRoYXQgaXMgaW5zZXJ0ZWQgd2hlbiBzZWxlY3RpbmdcbiAgICAgKiB0aGlzIGNvbXBsZXRpb24uXG4gICAgICovXG4gICAgbGFiZWw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoZSBraW5kIG9mIHRoaXMgY29tcGxldGlvbiBpdGVtLiBCYXNlZCBvZiB0aGUga2luZFxuICAgICAqIGFuIGljb24gaXMgY2hvc2VuIGJ5IHRoZSBlZGl0b3IuIFRoZSBzdGFuZGFyZGl6ZWQgc2V0XG4gICAgICogb2YgYXZhaWxhYmxlIHZhbHVlcyBpcyBkZWZpbmVkIGluIGBDb21wbGV0aW9uSXRlbUtpbmRgLlxuICAgICAqL1xuICAgIGtpbmQ/OiBDb21wbGV0aW9uSXRlbUtpbmQ7XG5cbiAgICAvKipcbiAgICAgKiBUYWdzIGZvciB0aGlzIGNvbXBsZXRpb24gaXRlbS5cbiAgICAgKlxuICAgICAqIEBzaW5jZSAzLjE1LjBcbiAgICAgKi9cbiAgICB0YWdzPzogQ29tcGxldGlvbkl0ZW1UYWdbXTtcblxuICAgIC8qKlxuICAgICAqIEEgaHVtYW4tcmVhZGFibGUgc3RyaW5nIHdpdGggYWRkaXRpb25hbCBpbmZvcm1hdGlvblxuICAgICAqIGFib3V0IHRoaXMgaXRlbSwgbGlrZSB0eXBlIG9yIHN5bWJvbCBpbmZvcm1hdGlvbi5cbiAgICAgKi9cbiAgICBkZXRhaWw/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBBIGh1bWFuLXJlYWRhYmxlIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgYSBkb2MtY29tbWVudC5cbiAgICAgKi9cbiAgICBkb2N1bWVudGF0aW9uPzogc3RyaW5nfE1hcmt1cENvbnRlbnQ7XG5cbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgaWYgdGhpcyBpdGVtIGlzIGRlcHJlY2F0ZWQuXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgYHRhZ3NgIGluc3RlYWQgaWYgc3VwcG9ydGVkLlxuICAgICAqL1xuICAgIGRlcHJlY2F0ZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IHRoaXMgaXRlbSB3aGVuIHNob3dpbmcuXG4gICAgICpcbiAgICAgKiAqTm90ZSogdGhhdCBvbmx5IG9uZSBjb21wbGV0aW9uIGl0ZW0gY2FuIGJlIHNlbGVjdGVkIGFuZCB0aGF0IHRoZVxuICAgICAqIHRvb2wgLyBjbGllbnQgZGVjaWRlcyB3aGljaCBpdGVtIHRoYXQgaXMuIFRoZSBydWxlIGlzIHRoYXQgdGhlICpmaXJzdCpcbiAgICAgKiBpdGVtIG9mIHRob3NlIHRoYXQgbWF0Y2ggYmVzdCBpcyBzZWxlY3RlZC5cbiAgICAgKi9cbiAgICBwcmVzZWxlY3Q/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQSBzdHJpbmcgdGhhdCBzaG91bGQgYmUgdXNlZCB3aGVuIGNvbXBhcmluZyB0aGlzIGl0ZW1cbiAgICAgKiB3aXRoIG90aGVyIGl0ZW1zLiBXaGVuIGBmYWxzeWAgdGhlIGxhYmVsIGlzIHVzZWQuXG4gICAgICovXG4gICAgc29ydFRleHQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBBIHN0cmluZyB0aGF0IHNob3VsZCBiZSB1c2VkIHdoZW4gZmlsdGVyaW5nIGEgc2V0IG9mXG4gICAgICogY29tcGxldGlvbiBpdGVtcy4gV2hlbiBgZmFsc3lgIHRoZSBsYWJlbCBpcyB1c2VkLlxuICAgICAqL1xuICAgIGZpbHRlclRleHQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBBIHN0cmluZyB0aGF0IHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIGEgZG9jdW1lbnQgd2hlbiBzZWxlY3RpbmdcbiAgICAgKiB0aGlzIGNvbXBsZXRpb24uIFdoZW4gYGZhbHN5YCB0aGUgbGFiZWwgaXMgdXNlZC5cbiAgICAgKlxuICAgICAqIFRoZSBgaW5zZXJ0VGV4dGAgaXMgc3ViamVjdCB0byBpbnRlcnByZXRhdGlvbiBieSB0aGUgY2xpZW50IHNpZGUuXG4gICAgICogU29tZSB0b29scyBtaWdodCBub3QgdGFrZSB0aGUgc3RyaW5nIGxpdGVyYWxseS4gRm9yIGV4YW1wbGVcbiAgICAgKiBWUyBDb2RlIHdoZW4gY29kZSBjb21wbGV0ZSBpcyByZXF1ZXN0ZWQgaW4gdGhpcyBleGFtcGxlXG4gICAgICogYGNvbjxjdXJzb3IgcG9zaXRpb24+YCBhbmQgYSBjb21wbGV0aW9uIGl0ZW0gd2l0aCBhbiBgaW5zZXJ0VGV4dGAgb2ZcbiAgICAgKiBgY29uc29sZWAgaXMgcHJvdmlkZWQgaXQgd2lsbCBvbmx5IGluc2VydCBgc29sZWAuIFRoZXJlZm9yZSBpdCBpc1xuICAgICAqIHJlY29tbWVuZGVkIHRvIHVzZSBgdGV4dEVkaXRgIGluc3RlYWQgc2luY2UgaXQgYXZvaWRzIGFkZGl0aW9uYWwgY2xpZW50XG4gICAgICogc2lkZSBpbnRlcnByZXRhdGlvbi5cbiAgICAgKi9cbiAgICBpbnNlcnRUZXh0Pzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGZvcm1hdCBvZiB0aGUgaW5zZXJ0IHRleHQuIFRoZSBmb3JtYXQgYXBwbGllcyB0byBib3RoIHRoZVxuICAgICAqIGBpbnNlcnRUZXh0YCBwcm9wZXJ0eSBhbmQgdGhlIGBuZXdUZXh0YCBwcm9wZXJ0eSBvZiBhIHByb3ZpZGVkXG4gICAgICogYHRleHRFZGl0YC4gSWYgb21pdHRlZCBkZWZhdWx0cyB0byBgSW5zZXJ0VGV4dEZvcm1hdC5QbGFpblRleHRgLlxuICAgICAqL1xuICAgIGluc2VydFRleHRGb3JtYXQ/OiBJbnNlcnRUZXh0Rm9ybWF0O1xuXG4gICAgLyoqXG4gICAgICogSG93IHdoaXRlc3BhY2UgYW5kIGluZGVudGF0aW9uIGlzIGhhbmRsZWQgZHVyaW5nIGNvbXBsZXRpb25cbiAgICAgKiBpdGVtIGluc2VydGlvbi4gSWYgbm90IHByb3ZpZGVkIHRoZSBjbGllbnQncyBkZWZhdWx0IHZhbHVlIGRlcGVuZHMgb25cbiAgICAgKiB0aGUgYHRleHREb2N1bWVudC5jb21wbGV0aW9uLmluc2VydFRleHRNb2RlYCBjbGllbnQgY2FwYWJpbGl0eS5cbiAgICAgKlxuICAgICAqIEBzaW5jZSAzLjE2LjBcbiAgICAgKi9cbiAgICBpbnNlcnRUZXh0TW9kZT86IEluc2VydFRleHRNb2RlO1xuXG4gICAgLyoqXG4gICAgICogQW4gZWRpdCB3aGljaCBpcyBhcHBsaWVkIHRvIGEgZG9jdW1lbnQgd2hlbiBzZWxlY3RpbmcgdGhpcyBjb21wbGV0aW9uLlxuICAgICAqIFdoZW4gYW4gZWRpdCBpcyBwcm92aWRlZCB0aGUgdmFsdWUgb2YgYGluc2VydFRleHRgIGlzIGlnbm9yZWQuXG4gICAgICpcbiAgICAgKiAqTm90ZToqIFRoZSByYW5nZSBvZiB0aGUgZWRpdCBtdXN0IGJlIGEgc2luZ2xlIGxpbmUgcmFuZ2UgYW5kIGl0IG11c3RcbiAgICAgKiBjb250YWluIHRoZSBwb3NpdGlvbiBhdCB3aGljaCBjb21wbGV0aW9uIGhhcyBiZWVuIHJlcXVlc3RlZC5cbiAgICAgKlxuICAgICAqIE1vc3QgZWRpdG9ycyBzdXBwb3J0IHR3byBkaWZmZXJlbnQgb3BlcmF0aW9ucyB3aGVuIGFjY2VwdGluZyBhIGNvbXBsZXRpb25cbiAgICAgKiBpdGVtLiBPbmUgaXMgdG8gaW5zZXJ0IGEgY29tcGxldGlvbiB0ZXh0IGFuZCB0aGUgb3RoZXIgaXMgdG8gcmVwbGFjZSBhblxuICAgICAqIGV4aXN0aW5nIHRleHQgd2l0aCBhIGNvbXBsZXRpb24gdGV4dC4gU2luY2UgdGhpcyBjYW4gdXN1YWxseSBub3QgYmVcbiAgICAgKiBwcmVkZXRlcm1pbmVkIGJ5IGEgc2VydmVyIGl0IGNhbiByZXBvcnQgYm90aCByYW5nZXMuIENsaWVudHMgbmVlZCB0b1xuICAgICAqIHNpZ25hbCBzdXBwb3J0IGZvciBgSW5zZXJ0UmVwbGFjZUVkaXRzYCB2aWEgdGhlXG4gICAgICogYHRleHREb2N1bWVudC5jb21wbGV0aW9uLmluc2VydFJlcGxhY2VTdXBwb3J0YCBjbGllbnQgY2FwYWJpbGl0eVxuICAgICAqIHByb3BlcnR5LlxuICAgICAqXG4gICAgICogKk5vdGUgMToqIFRoZSB0ZXh0IGVkaXQncyByYW5nZSBhcyB3ZWxsIGFzIGJvdGggcmFuZ2VzIGZyb20gYW4gaW5zZXJ0XG4gICAgICogcmVwbGFjZSBlZGl0IG11c3QgYmUgYSBbc2luZ2xlIGxpbmVdIGFuZCB0aGV5IG11c3QgY29udGFpbiB0aGUgcG9zaXRpb25cbiAgICAgKiBhdCB3aGljaCBjb21wbGV0aW9uIGhhcyBiZWVuIHJlcXVlc3RlZC5cbiAgICAgKiAqTm90ZSAyOiogSWYgYW4gYEluc2VydFJlcGxhY2VFZGl0YCBpcyByZXR1cm5lZCB0aGUgZWRpdCdzIGluc2VydCByYW5nZVxuICAgICAqIG11c3QgYmUgYSBwcmVmaXggb2YgdGhlIGVkaXQncyByZXBsYWNlIHJhbmdlLCB0aGF0IG1lYW5zIGl0IG11c3QgYmVcbiAgICAgKiBjb250YWluZWQgYW5kIHN0YXJ0aW5nIGF0IHRoZSBzYW1lIHBvc2l0aW9uLlxuICAgICAqXG4gICAgICogQHNpbmNlIDMuMTYuMCBhZGRpdGlvbmFsIHR5cGUgYEluc2VydFJlcGxhY2VFZGl0YFxuICAgICAqL1xuICAgIHRleHRFZGl0PzogVGV4dEVkaXR8SW5zZXJ0UmVwbGFjZUVkaXQ7XG5cbiAgICAvKipcbiAgICAgKiBBbiBvcHRpb25hbCBhcnJheSBvZiBhZGRpdGlvbmFsIHRleHQgZWRpdHMgdGhhdCBhcmUgYXBwbGllZCB3aGVuXG4gICAgICogc2VsZWN0aW5nIHRoaXMgY29tcGxldGlvbi4gRWRpdHMgbXVzdCBub3Qgb3ZlcmxhcCAoaW5jbHVkaW5nIHRoZSBzYW1lXG4gICAgICogaW5zZXJ0IHBvc2l0aW9uKSB3aXRoIHRoZSBtYWluIGVkaXQgbm9yIHdpdGggdGhlbXNlbHZlcy5cbiAgICAgKlxuICAgICAqIEFkZGl0aW9uYWwgdGV4dCBlZGl0cyBzaG91bGQgYmUgdXNlZCB0byBjaGFuZ2UgdGV4dCB1bnJlbGF0ZWQgdG8gdGhlXG4gICAgICogY3VycmVudCBjdXJzb3IgcG9zaXRpb24gKGZvciBleGFtcGxlIGFkZGluZyBhbiBpbXBvcnQgc3RhdGVtZW50IGF0IHRoZVxuICAgICAqIHRvcCBvZiB0aGUgZmlsZSBpZiB0aGUgY29tcGxldGlvbiBpdGVtIHdpbGwgaW5zZXJ0IGFuIHVucXVhbGlmaWVkIHR5cGUpLlxuICAgICAqL1xuICAgIGFkZGl0aW9uYWxUZXh0RWRpdHM/OiBUZXh0RWRpdFtdO1xuXG4gICAgLyoqXG4gICAgICogQW4gb3B0aW9uYWwgc2V0IG9mIGNoYXJhY3RlcnMgdGhhdCB3aGVuIHByZXNzZWQgd2hpbGUgdGhpcyBjb21wbGV0aW9uIGlzXG4gICAgICogYWN0aXZlIHdpbGwgYWNjZXB0IGl0IGZpcnN0IGFuZCB0aGVuIHR5cGUgdGhhdCBjaGFyYWN0ZXIuICpOb3RlKiB0aGF0IGFsbFxuICAgICAqIGNvbW1pdCBjaGFyYWN0ZXJzIHNob3VsZCBoYXZlIGBsZW5ndGg9MWAgYW5kIHRoYXQgc3VwZXJmbHVvdXMgY2hhcmFjdGVyc1xuICAgICAqIHdpbGwgYmUgaWdub3JlZC5cbiAgICAgKi9cbiAgICBjb21taXRDaGFyYWN0ZXJzPzogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBBbiBvcHRpb25hbCBjb21tYW5kIHRoYXQgaXMgZXhlY3V0ZWQgKmFmdGVyKiBpbnNlcnRpbmcgdGhpcyBjb21wbGV0aW9uLlxuICAgICAqICpOb3RlKiB0aGF0IGFkZGl0aW9uYWwgbW9kaWZpY2F0aW9ucyB0byB0aGUgY3VycmVudCBkb2N1bWVudCBzaG91bGQgYmVcbiAgICAgKiBkZXNjcmliZWQgd2l0aCB0aGUgYWRkaXRpb25hbFRleHRFZGl0cy1wcm9wZXJ0eS5cbiAgICAgKi9cbiAgICBjb21tYW5kPzogcHJvdG9jb2wuQ29tbWFuZDtcblxuICAgIC8qKlxuICAgICAqIEEgZGF0YSBlbnRyeSBmaWVsZCB0aGF0IGlzIHByZXNlcnZlZCBvbiBhIGNvbXBsZXRpb24gaXRlbSBiZXR3ZWVuXG4gICAgICogYSBjb21wbGV0aW9uIGFuZCBhIGNvbXBsZXRpb24gcmVzb2x2ZSByZXF1ZXN0LlxuICAgICAqL1xuICAgIGRhdGE/OiB1bmtub3duO1xufVxuXG5cbi8vIHRzbGludDpkaXNhYmxlOmpzZG9jLWZvcm1hdFxuLyoqXG4gKiBBIGBNYXJrdXBDb250ZW50YCBsaXRlcmFsIHJlcHJlc2VudHMgYSBzdHJpbmcgdmFsdWUgd2hpY2ggY29udGVudCBpc1xuICogaW50ZXJwcmV0ZWQgYmFzZSBvbiBpdHMga2luZCBmbGFnLiBDdXJyZW50bHkgdGhlIHByb3RvY29sIHN1cHBvcnRzXG4gKiBgcGxhaW50ZXh0YCBhbmQgYG1hcmtkb3duYCBhcyBtYXJrdXAga2luZHMuXG4gKlxuICogSWYgdGhlIGtpbmQgaXMgYG1hcmtkb3duYCB0aGVuIHRoZSB2YWx1ZSBjYW4gY29udGFpbiBmZW5jZWQgY29kZSBibG9ja3MgbGlrZVxuICogaW4gR2l0SHViIGlzc3Vlcy5cbiAqXG4gKiBIZXJlIGlzIGFuIGV4YW1wbGUgaG93IHN1Y2ggYSBzdHJpbmcgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nXG4gKiBKYXZhU2NyaXB0IC8gVHlwZVNjcmlwdDpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGxldCBtYXJrZG93bjogTWFya2Rvd25Db250ZW50ID0ge1xuICogIGtpbmQ6IE1hcmt1cEtpbmQuTWFya2Rvd24sXG4gKiAgdmFsdWU6IFtcbiAqICAgICcjIEhlYWRlcicsXG4gKiAgICAnU29tZSB0ZXh0JyxcbiAqICAgICdgYGB0eXBlc2NyaXB0JyxcbiAqICAgICdzb21lQ29kZSgpOycsXG4gKiAgICAnYGBgJ1xuICogIF0uam9pbignXFxuJylcbiAqIH07XG4gKiBgYGBcbiAqXG4gKiAqUGxlYXNlIE5vdGUqIHRoYXQgY2xpZW50cyBtaWdodCBzYW5pdGl6ZSB0aGUgcmV0dXJuIG1hcmtkb3duLiBBIGNsaWVudCBjb3VsZFxuICogZGVjaWRlIHRvIHJlbW92ZSBIVE1MIGZyb20gdGhlIG1hcmtkb3duIHRvIGF2b2lkIHNjcmlwdCBleGVjdXRpb24uXG4gKi9cbi8vIHRzbGludDplbmFibGU6anNkb2MtZm9ybWF0XG5leHBvcnQgaW50ZXJmYWNlIE1hcmt1cENvbnRlbnQge1xuICAgIC8qKlxuICAgICAqIFRoZSB0eXBlIG9mIHRoZSBNYXJrdXBcbiAgICAgKi9cbiAgICBraW5kOiBNYXJrdXBLaW5kO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGNvbnRlbnQgaXRzZWxmXG4gICAgICovXG4gICAgdmFsdWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jdGV4dERvY3VtZW50X3NpZ25hdHVyZUhlbHBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaWduYXR1cmVIZWxwUGFyYW1zIGV4dGVuZHMgVGV4dERvY3VtZW50UG9zaXRpb25QYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b2NvbC5Xb3JrRG9uZVByb2dyZXNzUGFyYW1zIHtcbiAgICAvKipcbiAgICAgKiBUaGUgc2lnbmF0dXJlIGhlbHAgY29udGV4dC4gVGhpcyBpcyBvbmx5IGF2YWlsYWJsZSBpZiB0aGUgY2xpZW50XG4gICAgICogc3BlY2lmaWVzIHRvIHNlbmQgdGhpcyB1c2luZyB0aGUgY2xpZW50IGNhcGFiaWxpdHlcbiAgICAgKiBgdGV4dERvY3VtZW50LnNpZ25hdHVyZUhlbHAuY29udGV4dFN1cHBvcnQgPT09IHRydWVgXG4gICAgICpcbiAgICAgKiBAc2luY2UgMy4xNS4wXG4gICAgICovXG4gICAgY29udGV4dD86IFNpZ25hdHVyZUhlbHBDb250ZXh0O1xufVxuXG4vKipcbiAqIEhvdyBhIHNpZ25hdHVyZSBoZWxwIHdhcyB0cmlnZ2VyZWQuXG4gKlxuICogQHNpbmNlIDMuMTUuMFxuICovXG5leHBvcnQgZW51bSBTaWduYXR1cmVIZWxwVHJpZ2dlcktpbmQge1xuICAvKipcbiAgICogU2lnbmF0dXJlIGhlbHAgd2FzIGludm9rZWQgbWFudWFsbHkgYnkgdGhlIHVzZXIgb3IgYnkgYSBjb21tYW5kLlxuICAgKi9cbiAgSW52b2tlZCA9IDEsXG4gIC8qKlxuICAgKiBTaWduYXR1cmUgaGVscCB3YXMgdHJpZ2dlcmVkIGJ5IGEgdHJpZ2dlciBjaGFyYWN0ZXIuXG4gICAqL1xuICBUcmlnZ2VyQ2hhcmFjdGVyID0gMixcbiAgLyoqXG4gICAqIFNpZ25hdHVyZSBoZWxwIHdhcyB0cmlnZ2VyZWQgYnkgdGhlIGN1cnNvciBtb3Zpbmcgb3IgYnkgdGhlIGRvY3VtZW50XG4gICAqIGNvbnRlbnQgY2hhbmdpbmcuXG4gICAqL1xuICBDb250ZW50Q2hhbmdlID0gMyxcbn1cblxuLyoqXG4gKiBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb250ZXh0IGluIHdoaWNoIGEgc2lnbmF0dXJlIGhlbHAgcmVxdWVzdFxuICogd2FzIHRyaWdnZXJlZC5cbiAqXG4gKiBAc2luY2UgMy4xNS4wXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmF0dXJlSGVscENvbnRleHQge1xuICAgIC8qKlxuICAgICAqIEFjdGlvbiB0aGF0IGNhdXNlZCBzaWduYXR1cmUgaGVscCB0byBiZSB0cmlnZ2VyZWQuXG4gICAgICovXG4gICAgdHJpZ2dlcktpbmQ6IFNpZ25hdHVyZUhlbHBUcmlnZ2VyS2luZDtcblxuICAgIC8qKlxuICAgICAqIENoYXJhY3RlciB0aGF0IGNhdXNlZCBzaWduYXR1cmUgaGVscCB0byBiZSB0cmlnZ2VyZWQuXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIHVuZGVmaW5lZCB3aGVuIHRyaWdnZXJLaW5kICE9PVxuICAgICAqIFNpZ25hdHVyZUhlbHBUcmlnZ2VyS2luZC5UcmlnZ2VyQ2hhcmFjdGVyXG4gICAgICovXG4gICAgdHJpZ2dlckNoYXJhY3Rlcj86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIGB0cnVlYCBpZiBzaWduYXR1cmUgaGVscCB3YXMgYWxyZWFkeSBzaG93aW5nIHdoZW4gaXQgd2FzIHRyaWdnZXJlZC5cbiAgICAgKlxuICAgICAqIFJldHJpZ2dlcnMgb2NjdXIgd2hlbiB0aGUgc2lnbmF0dXJlIGhlbHAgaXMgYWxyZWFkeSBhY3RpdmUgYW5kIGNhbiBiZVxuICAgICAqIGNhdXNlZCBieSBhY3Rpb25zIHN1Y2ggYXMgdHlwaW5nIGEgdHJpZ2dlciBjaGFyYWN0ZXIsIGEgY3Vyc29yIG1vdmUsIG9yXG4gICAgICogZG9jdW1lbnQgY29udGVudCBjaGFuZ2VzLlxuICAgICAqL1xuICAgIGlzUmV0cmlnZ2VyOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGN1cnJlbnRseSBhY3RpdmUgYFNpZ25hdHVyZUhlbHBgLlxuICAgICAqXG4gICAgICogVGhlIGBhY3RpdmVTaWduYXR1cmVIZWxwYCBoYXMgaXRzIGBTaWduYXR1cmVIZWxwLmFjdGl2ZVNpZ25hdHVyZWAgZmllbGRcbiAgICAgKiB1cGRhdGVkIGJhc2VkIG9uIHRoZSB1c2VyIG5hdmlnYXRpbmcgdGhyb3VnaCBhdmFpbGFibGUgc2lnbmF0dXJlcy5cbiAgICAgKi9cbiAgICBhY3RpdmVTaWduYXR1cmVIZWxwPzogU2lnbmF0dXJlSGVscDtcbn1cblxuLyoqXG4gKiBTaWduYXR1cmUgaGVscCByZXByZXNlbnRzIHRoZSBzaWduYXR1cmUgb2Ygc29tZXRoaW5nXG4gKiBjYWxsYWJsZS4gVGhlcmUgY2FuIGJlIG11bHRpcGxlIHNpZ25hdHVyZSBidXQgb25seSBvbmVcbiAqIGFjdGl2ZSBhbmQgb25seSBvbmUgYWN0aXZlIHBhcmFtZXRlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaWduYXR1cmVIZWxwIHtcbiAgICAvKipcbiAgICAgKiBPbmUgb3IgbW9yZSBzaWduYXR1cmVzLiBJZiBubyBzaWduYXR1cmVzIGFyZSBhdmFpbGFibGUgdGhlIHNpZ25hdHVyZSBoZWxwXG4gICAgICogcmVxdWVzdCBzaG91bGQgcmV0dXJuIGBudWxsYC5cbiAgICAgKi9cbiAgICBzaWduYXR1cmVzOiBTaWduYXR1cmVJbmZvcm1hdGlvbltdO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGFjdGl2ZSBzaWduYXR1cmUuIElmIG9taXR0ZWQgb3IgdGhlIHZhbHVlIGxpZXMgb3V0c2lkZSB0aGVcbiAgICAgKiByYW5nZSBvZiBgc2lnbmF0dXJlc2AgdGhlIHZhbHVlIGRlZmF1bHRzIHRvIHplcm8gb3IgaXMgaWdub3JlZCBpZlxuICAgICAqIHRoZSBgU2lnbmF0dXJlSGVscGAgaGFzIG5vIHNpZ25hdHVyZXMuXG4gICAgICpcbiAgICAgKiBXaGVuZXZlciBwb3NzaWJsZSBpbXBsZW1lbnRvcnMgc2hvdWxkIG1ha2UgYW4gYWN0aXZlIGRlY2lzaW9uIGFib3V0XG4gICAgICogdGhlIGFjdGl2ZSBzaWduYXR1cmUgYW5kIHNob3VsZG4ndCByZWx5IG9uIGEgZGVmYXVsdCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEluIGZ1dHVyZSB2ZXJzaW9uIG9mIHRoZSBwcm90b2NvbCB0aGlzIHByb3BlcnR5IG1pZ2h0IGJlY29tZVxuICAgICAqIG1hbmRhdG9yeSB0byBiZXR0ZXIgZXhwcmVzcyB0aGlzLlxuICAgICAqL1xuICAgIGFjdGl2ZVNpZ25hdHVyZT86IHByb3RvY29sLnVpbnRlZ2VyO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGFjdGl2ZSBwYXJhbWV0ZXIgb2YgdGhlIGFjdGl2ZSBzaWduYXR1cmUuIElmIG9taXR0ZWQgb3IgdGhlIHZhbHVlXG4gICAgICogbGllcyBvdXRzaWRlIHRoZSByYW5nZSBvZiBgc2lnbmF0dXJlc1thY3RpdmVTaWduYXR1cmVdLnBhcmFtZXRlcnNgXG4gICAgICogZGVmYXVsdHMgdG8gMCBpZiB0aGUgYWN0aXZlIHNpZ25hdHVyZSBoYXMgcGFyYW1ldGVycy4gSWZcbiAgICAgKiB0aGUgYWN0aXZlIHNpZ25hdHVyZSBoYXMgbm8gcGFyYW1ldGVycyBpdCBpcyBpZ25vcmVkLlxuICAgICAqIEluIGZ1dHVyZSB2ZXJzaW9uIG9mIHRoZSBwcm90b2NvbCB0aGlzIHByb3BlcnR5IG1pZ2h0IGJlY29tZVxuICAgICAqIG1hbmRhdG9yeSB0byBiZXR0ZXIgZXhwcmVzcyB0aGUgYWN0aXZlIHBhcmFtZXRlciBpZiB0aGVcbiAgICAgKiBhY3RpdmUgc2lnbmF0dXJlIGRvZXMgaGF2ZSBhbnkuXG4gICAgICovXG4gICAgYWN0aXZlUGFyYW1ldGVyPzogcHJvdG9jb2wudWludGVnZXI7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgc2lnbmF0dXJlIG9mIHNvbWV0aGluZyBjYWxsYWJsZS4gQSBzaWduYXR1cmVcbiAqIGNhbiBoYXZlIGEgbGFiZWwsIGxpa2UgYSBmdW5jdGlvbi1uYW1lLCBhIGRvYy1jb21tZW50LCBhbmRcbiAqIGEgc2V0IG9mIHBhcmFtZXRlcnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmF0dXJlSW5mb3JtYXRpb24ge1xuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBvZiB0aGlzIHNpZ25hdHVyZS4gV2lsbCBiZSBzaG93biBpblxuICAgICAqIHRoZSBVSS5cbiAgICAgKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGh1bWFuLXJlYWRhYmxlIGRvYy1jb21tZW50IG9mIHRoaXMgc2lnbmF0dXJlLiBXaWxsIGJlIHNob3duXG4gICAgICogaW4gdGhlIFVJIGJ1dCBjYW4gYmUgb21pdHRlZC5cbiAgICAgKi9cbiAgICBkb2N1bWVudGF0aW9uPzogc3RyaW5nfE1hcmt1cENvbnRlbnQ7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgcGFyYW1ldGVycyBvZiB0aGlzIHNpZ25hdHVyZS5cbiAgICAgKi9cbiAgICBwYXJhbWV0ZXJzPzogUGFyYW1ldGVySW5mb3JtYXRpb25bXTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBpbmRleCBvZiB0aGUgYWN0aXZlIHBhcmFtZXRlci5cbiAgICAgKlxuICAgICAqIElmIHByb3ZpZGVkLCB0aGlzIGlzIHVzZWQgaW4gcGxhY2Ugb2YgYFNpZ25hdHVyZUhlbHAuYWN0aXZlUGFyYW1ldGVyYC5cbiAgICAgKlxuICAgICAqIEBzaW5jZSAzLjE2LjBcbiAgICAgKi9cbiAgICBhY3RpdmVQYXJhbWV0ZXI/OiBwcm90b2NvbC51aW50ZWdlcjtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcGFyYW1ldGVyIG9mIGEgY2FsbGFibGUtc2lnbmF0dXJlLiBBIHBhcmFtZXRlciBjYW5cbiAqIGhhdmUgYSBsYWJlbCBhbmQgYSBkb2MtY29tbWVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJhbWV0ZXJJbmZvcm1hdGlvbiB7XG4gICAgLyoqXG4gICAgICogVGhlIGxhYmVsIG9mIHRoaXMgcGFyYW1ldGVyIGluZm9ybWF0aW9uLlxuICAgICAqXG4gICAgICogRWl0aGVyIGEgc3RyaW5nIG9yIGFuIGluY2x1c2l2ZSBzdGFydCBhbmQgZXhjbHVzaXZlIGVuZCBvZmZzZXRzIHdpdGhpblxuICAgICAqIGl0cyBjb250YWluaW5nIHNpZ25hdHVyZSBsYWJlbC4gKHNlZSBTaWduYXR1cmVJbmZvcm1hdGlvbi5sYWJlbCkuIFRoZVxuICAgICAqIG9mZnNldHMgYXJlIGJhc2VkIG9uIGEgVVRGLTE2IHN0cmluZyByZXByZXNlbnRhdGlvbiBhcyBgUG9zaXRpb25gIGFuZFxuICAgICAqIGBSYW5nZWAgZG9lcy5cbiAgICAgKlxuICAgICAqICpOb3RlKjogYSBsYWJlbCBvZiB0eXBlIHN0cmluZyBzaG91bGQgYmUgYSBzdWJzdHJpbmcgb2YgaXRzIGNvbnRhaW5pbmdcbiAgICAgKiBzaWduYXR1cmUgbGFiZWwuIEl0cyBpbnRlbmRlZCB1c2UgY2FzZSBpcyB0byBoaWdobGlnaHQgdGhlIHBhcmFtZXRlclxuICAgICAqIGxhYmVsIHBhcnQgaW4gdGhlIGBTaWduYXR1cmVJbmZvcm1hdGlvbi5sYWJlbGAuXG4gICAgICovXG4gICAgbGFiZWw6IHN0cmluZ3xbcHJvdG9jb2wudWludGVnZXIsIHByb3RvY29sLnVpbnRlZ2VyXTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBodW1hbi1yZWFkYWJsZSBkb2MtY29tbWVudCBvZiB0aGlzIHBhcmFtZXRlci4gV2lsbCBiZSBzaG93blxuICAgICAqIGluIHRoZSBVSSBidXQgY2FuIGJlIG9taXR0ZWQuXG4gICAgICovXG4gICAgZG9jdW1lbnRhdGlvbj86IHN0cmluZ3xNYXJrdXBDb250ZW50O1xufVxuXG4vKipcbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbnMvc3BlY2lmaWNhdGlvbi1jdXJyZW50LyN0ZXh0RG9jdW1lbnRfaG92ZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIb3ZlclBhcmFtcyBleHRlbmRzIFRleHREb2N1bWVudFBvc2l0aW9uUGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvY29sLldvcmtEb25lUHJvZ3Jlc3NQYXJhbXMge31cblxuLyoqXG4gKiBUaGUgcmVzdWx0IG9mIGEgaG92ZXIgcmVxdWVzdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIb3ZlciB7XG4gICAgLyoqXG4gICAgICogVGhlIGhvdmVyJ3MgY29udGVudFxuICAgICAqL1xuICAgIGNvbnRlbnRzOiBNYXJrdXBDb250ZW50O1xuXG4gICAgLyoqXG4gICAgICogQW4gb3B0aW9uYWwgcmFuZ2UgaXMgYSByYW5nZSBpbnNpZGUgYSB0ZXh0IGRvY3VtZW50XG4gICAgICogdGhhdCBpcyB1c2VkIHRvIHZpc3VhbGl6ZSBhIGhvdmVyLCBlLmcuIGJ5IGNoYW5naW5nIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgICAqL1xuICAgIHJhbmdlPzogcHJvdG9jb2wuUmFuZ2U7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLTMtMTcvI2RlZmluaXRpb25QYXJhbXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZpbml0aW9uUGFyYW1zIGV4dGVuZHMgVGV4dERvY3VtZW50UG9zaXRpb25QYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b2NvbC5Xb3JrRG9uZVByb2dyZXNzUGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2wuUGFydGlhbFJlc3VsdFBhcmFtcyB7fVxuXG4vKipcbiAqIFBhcmFtcyBmb3IgdGhlIGN1c3RvbSAnZWNob0RvY3VtZW50JyBjb21tZW50IHdoaWNoIHJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGVcbiAqIG9mIHRoZSBzZXJ2ZXIncyB2aWV3IG9mIHRoZSBMU1AgZG9jdW1lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWNob0RvY3VtZW50UGFyYW1zIHt9XG5cbi8qKlxuICogUGFyYW1zIGZvciB0aGUgQ29kZUFjdGlvblJlcXVlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2RlQWN0aW9uUGFyYW1zIGV4dGVuZHMgcHJvdG9jb2wuV29ya0RvbmVQcm9ncmVzc1BhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvY29sLlBhcnRpYWxSZXN1bHRQYXJhbXMge1xuICAgIC8qKlxuICAgICAqIFRoZSBkb2N1bWVudCBpbiB3aGljaCB0aGUgY29tbWFuZCB3YXMgaW52b2tlZC5cbiAgICAgKi9cbiAgICB0ZXh0RG9jdW1lbnQ6IFRleHREb2N1bWVudElkZW50aWZpZXI7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgcmFuZ2UgZm9yIHdoaWNoIHRoZSBjb21tYW5kIHdhcyBpbnZva2VkLlxuICAgICAqL1xuICAgIHJhbmdlOiBwcm90b2NvbC5SYW5nZTtcblxuICAgIC8qKlxuICAgICAqIENvbnRleHQgY2FycnlpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi5cbiAgICAgKi9cbiAgICBjb250ZXh0OiBDb2RlQWN0aW9uQ29udGV4dDtcbn1cblxuLyoqXG4gKiBQYXJhbXMgZm9yIHRoZSBSZW5hbWVSZXF1ZXN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuYW1lUGFyYW1zIGV4dGVuZHMgVGV4dERvY3VtZW50UG9zaXRpb25QYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvY29sLldvcmtEb25lUHJvZ3Jlc3NQYXJhbXMge1xuICAvKipcbiAgICogVGhlIG5ldyBuYW1lIG9mIHRoZSBzeW1ib2wuIElmIHRoZSBnaXZlbiBuYW1lIGlzIG5vdCB2YWxpZCB0aGVcbiAgICogcmVxdWVzdCBtdXN0IHJldHVybiBhIFtSZXNwb25zZUVycm9yXSgjUmVzcG9uc2VFcnJvcikgd2l0aCBhblxuICAgKiBhcHByb3ByaWF0ZSBtZXNzYWdlIHNldC5cbiAgICovXG4gIG5ld05hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIGNvZGUgYWN0aW9uIHJlcHJlc2VudHMgYSBjaGFuZ2UgdGhhdCBjYW4gYmUgcGVyZm9ybWVkIGluIGNvZGUsIGUuZy4gdG8gZml4XG4gKiBhIHByb2JsZW0gb3IgdG8gcmVmYWN0b3IgY29kZS5cbiAqXG4gKiBBIENvZGVBY3Rpb24gbXVzdCBzZXQgZWl0aGVyIGBlZGl0YCBhbmQvb3IgYSBgY29tbWFuZGAuIElmIGJvdGggYXJlIHN1cHBsaWVkLFxuICogdGhlIGBlZGl0YCBpcyBhcHBsaWVkIGZpcnN0LCB0aGVuIHRoZSBgY29tbWFuZGAgaXMgZXhlY3V0ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZUFjdGlvbiB7XG4gICAgLyoqXG4gICAgICogQSBzaG9ydCwgaHVtYW4tcmVhZGFibGUsIHRpdGxlIGZvciB0aGlzIGNvZGUgYWN0aW9uLlxuICAgICAqL1xuICAgIHRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUga2luZCBvZiB0aGUgY29kZSBhY3Rpb24uXG4gICAgICpcbiAgICAgKiBVc2VkIHRvIGZpbHRlciBjb2RlIGFjdGlvbnMuXG4gICAgICovXG4gICAga2luZD86IENvZGVBY3Rpb25LaW5kO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGRpYWdub3N0aWNzIHRoYXQgdGhpcyBjb2RlIGFjdGlvbiByZXNvbHZlcy5cbiAgICAgKi9cbiAgICBkaWFnbm9zdGljcz86IHByb3RvY29sLkRpYWdub3N0aWNbXTtcblxuICAgIC8qKlxuICAgICAqIE1hcmtzIHRoaXMgYXMgYSBwcmVmZXJyZWQgYWN0aW9uLiBQcmVmZXJyZWQgYWN0aW9ucyBhcmUgdXNlZCBieSB0aGVcbiAgICAgKiBgYXV0byBmaXhgIGNvbW1hbmQgYW5kIGNhbiBiZSB0YXJnZXRlZCBieSBrZXliaW5kaW5ncy5cbiAgICAgKlxuICAgICAqIEEgcXVpY2sgZml4IHNob3VsZCBiZSBtYXJrZWQgcHJlZmVycmVkIGlmIGl0IHByb3Blcmx5IGFkZHJlc3NlcyB0aGVcbiAgICAgKiB1bmRlcmx5aW5nIGVycm9yLiBBIHJlZmFjdG9yaW5nIHNob3VsZCBiZSBtYXJrZWQgcHJlZmVycmVkIGlmIGl0IGlzIHRoZVxuICAgICAqIG1vc3QgcmVhc29uYWJsZSBjaG9pY2Ugb2YgYWN0aW9ucyB0byB0YWtlLlxuICAgICAqXG4gICAgICogQHNpbmNlIDMuMTUuMFxuICAgICAqL1xuICAgIGlzUHJlZmVycmVkPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIE1hcmtzIHRoYXQgdGhlIGNvZGUgYWN0aW9uIGNhbm5vdCBjdXJyZW50bHkgYmUgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIENsaWVudHMgc2hvdWxkIGZvbGxvdyB0aGUgZm9sbG93aW5nIGd1aWRlbGluZXMgcmVnYXJkaW5nIGRpc2FibGVkIGNvZGVcbiAgICAgKiBhY3Rpb25zOlxuICAgICAqXG4gICAgICogLSBEaXNhYmxlZCBjb2RlIGFjdGlvbnMgYXJlIG5vdCBzaG93biBpbiBhdXRvbWF0aWMgbGlnaHRidWxicyBjb2RlXG4gICAgICogICBhY3Rpb24gbWVudXMuXG4gICAgICpcbiAgICAgKiAtIERpc2FibGVkIGFjdGlvbnMgYXJlIHNob3duIGFzIGZhZGVkIG91dCBpbiB0aGUgY29kZSBhY3Rpb24gbWVudSB3aGVuXG4gICAgICogICB0aGUgdXNlciByZXF1ZXN0IGEgbW9yZSBzcGVjaWZpYyB0eXBlIG9mIGNvZGUgYWN0aW9uLCBzdWNoIGFzXG4gICAgICogICByZWZhY3RvcmluZ3MuXG4gICAgICpcbiAgICAgKiAtIElmIHRoZSB1c2VyIGhhcyBhIGtleWJpbmRpbmcgdGhhdCBhdXRvIGFwcGxpZXMgYSBjb2RlIGFjdGlvbiBhbmQgb25seVxuICAgICAqICAgYSBkaXNhYmxlZCBjb2RlIGFjdGlvbnMgYXJlIHJldHVybmVkLCB0aGUgY2xpZW50IHNob3VsZCBzaG93IHRoZSB1c2VyXG4gICAgICogICBhbiBlcnJvciBtZXNzYWdlIHdpdGggYHJlYXNvbmAgaW4gdGhlIGVkaXRvci5cbiAgICAgKlxuICAgICAqIEBzaW5jZSAzLjE2LjBcbiAgICAgKi9cbiAgICBkaXNhYmxlZD86IHtcblxuICAgICAgLyoqXG4gICAgICAgKiBIdW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB3aHkgdGhlIGNvZGUgYWN0aW9uIGlzIGN1cnJlbnRseVxuICAgICAgICogZGlzYWJsZWQuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBpcyBkaXNwbGF5ZWQgaW4gdGhlIGNvZGUgYWN0aW9ucyBVSS5cbiAgICAgICAqL1xuICAgICAgcmVhc29uOiBzdHJpbmc7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFRoZSB3b3Jrc3BhY2UgZWRpdCB0aGlzIGNvZGUgYWN0aW9uIHBlcmZvcm1zLlxuICAgICAqL1xuICAgIGVkaXQ/OiB3b3Jrc3BhY2UuV29ya3NwYWNlRWRpdDtcblxuICAgIC8qKlxuICAgICAqIEEgY29tbWFuZCB0aGlzIGNvZGUgYWN0aW9uIGV4ZWN1dGVzLiBJZiBhIGNvZGUgYWN0aW9uXG4gICAgICogcHJvdmlkZXMgYW4gZWRpdCBhbmQgYSBjb21tYW5kLCBmaXJzdCB0aGUgZWRpdCBpc1xuICAgICAqIGV4ZWN1dGVkIGFuZCB0aGVuIHRoZSBjb21tYW5kLlxuICAgICAqL1xuICAgIGNvbW1hbmQ/OiBwcm90b2NvbC5Db21tYW5kO1xuXG4gICAgLyoqXG4gICAgICogQSBkYXRhIGVudHJ5IGZpZWxkIHRoYXQgaXMgcHJlc2VydmVkIG9uIGEgY29kZSBhY3Rpb24gYmV0d2VlblxuICAgICAqIGEgYHRleHREb2N1bWVudC9jb2RlQWN0aW9uYCBhbmQgYSBgY29kZUFjdGlvbi9yZXNvbHZlYCByZXF1ZXN0LlxuICAgICAqXG4gICAgICogQHNpbmNlIDMuMTYuMFxuICAgICAqL1xuICAgIGRhdGE/OiB1bmtub3duO1xufVxuLy8gdHNsaW50OmVuYWJsZTplbmZvcmNlLW5hbWUtY2FzaW5nXG4iXX0=
|
web/lsp/window_node.js
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"use strict";
|
2 |
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3 |
+
exports.MessageType = void 0;
|
4 |
+
/** Log message type. */
|
5 |
+
var MessageType;
|
6 |
+
(function (MessageType) {
|
7 |
+
/**
|
8 |
+
* An error message.
|
9 |
+
*/
|
10 |
+
MessageType[MessageType["Error"] = 1] = "Error";
|
11 |
+
/**
|
12 |
+
* A warning message.
|
13 |
+
*/
|
14 |
+
MessageType[MessageType["Warning"] = 2] = "Warning";
|
15 |
+
/**
|
16 |
+
* An information message.
|
17 |
+
*/
|
18 |
+
MessageType[MessageType["Info"] = 3] = "Info";
|
19 |
+
/**
|
20 |
+
* A log message.
|
21 |
+
*/
|
22 |
+
MessageType[MessageType["Log"] = 4] = "Log";
|
23 |
+
})(MessageType || (exports.MessageType = MessageType = {}));
|
24 |
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93X25vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9nZW5maWxlcy90aGlyZF9wYXJ0eS9jb2xhYi9zb3VyY2VzL2xzcC93aW5kb3dfbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUErQkEsd0JBQXdCO0FBQ3hCLElBQVksV0FpQlg7QUFqQkQsV0FBWSxXQUFXO0lBQ3JCOztPQUVHO0lBQ0gsK0NBQVMsQ0FBQTtJQUNUOztPQUVHO0lBQ0gsbURBQVcsQ0FBQTtJQUNYOztPQUVHO0lBQ0gsNkNBQVEsQ0FBQTtJQUNSOztPQUVHO0lBQ0gsMkNBQU8sQ0FBQTtBQUNULENBQUMsRUFqQlcsV0FBVywyQkFBWCxXQUFXLFFBaUJ0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHByb3RvY29sIGZyb20gJy4vcHJvdG9jb2xfbm9kZSc7XG5cbi8vIHRzbGludDpkaXNhYmxlOmVuZm9yY2UtbmFtZS1jYXNpbmdcblxuLyoqXG4gKiBUaGUgbG9nIG1lc3NhZ2Ugbm90aWZpY2F0aW9uIGlzIHNlbnQgZnJvbSB0aGUgc2VydmVyIHRvIHRoZSBjbGllbnQgdG8gYXNrIHRoZVxuICogY2xpZW50IHRvIGxvZyBhIHBhcnRpY3VsYXIgbWVzc2FnZS5cbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbnMvc3BlY2lmaWNhdGlvbi1jdXJyZW50LyN3aW5kb3dfbG9nTWVzc2FnZVxuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTG9nTWVzc2FnZSBleHRlbmRzXG4gICAgcHJvdG9jb2wuTm90aWZpY2F0aW9uTWVzc2FnZTxMb2dNZXNzYWdlUGFyYW1zPiB7XG4gIG1ldGhvZDogcHJvdG9jb2wuTWV0aG9kLldpbmRvd0xvZ01lc3NhZ2U7XG59XG5cbi8qKlxuICogVGhlIGxvZyBtZXNzYWdlIG5vdGlmaWNhdGlvbiBpcyBzZW50IGZyb20gdGhlIHNlcnZlciB0byB0aGUgY2xpZW50IHRvIGFzayB0aGVcbiAqIGNsaWVudCB0byBsb2cgYSBwYXJ0aWN1bGFyIG1lc3NhZ2UuXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jd2luZG93X2xvZ01lc3NhZ2VcbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIExvZ01lc3NhZ2VQYXJhbXMge1xuICAvKipcbiAgICogVGhlIG1lc3NhZ2UgdHlwZS4gU2VlIHtAbGluayBNZXNzYWdlVHlwZX1cbiAgICovXG4gIHR5cGU6IE1lc3NhZ2VUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgYWN0dWFsIG1lc3NhZ2VcbiAgICovXG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqIExvZyBtZXNzYWdlIHR5cGUuICovXG5leHBvcnQgZW51bSBNZXNzYWdlVHlwZSB7XG4gIC8qKlxuICAgKiBBbiBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgRXJyb3IgPSAxLFxuICAvKipcbiAgICogQSB3YXJuaW5nIG1lc3NhZ2UuXG4gICAqL1xuICBXYXJuaW5nID0gMixcbiAgLyoqXG4gICAqIEFuIGluZm9ybWF0aW9uIG1lc3NhZ2UuXG4gICAqL1xuICBJbmZvID0gMyxcbiAgLyoqXG4gICAqIEEgbG9nIG1lc3NhZ2UuXG4gICAqL1xuICBMb2cgPSA0LFxufVxuIl19
|
web/lsp/workspace_node.js
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"use strict";
|
2 |
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3 |
+
exports.FileChangeType = exports.WatchKind = void 0;
|
4 |
+
/**
|
5 |
+
* See:
|
6 |
+
* https://microsoft.github.io/language-server-protocol/specification#workspace_didChangeWatchedFiles
|
7 |
+
*/
|
8 |
+
var WatchKind;
|
9 |
+
(function (WatchKind) {
|
10 |
+
/**
|
11 |
+
* Interested in create events.
|
12 |
+
*/
|
13 |
+
WatchKind[WatchKind["Create"] = 1] = "Create";
|
14 |
+
/**
|
15 |
+
* Interested in change events
|
16 |
+
*/
|
17 |
+
WatchKind[WatchKind["Change"] = 2] = "Change";
|
18 |
+
/**
|
19 |
+
* Interested in delete events
|
20 |
+
*/
|
21 |
+
WatchKind[WatchKind["Delete"] = 4] = "Delete";
|
22 |
+
})(WatchKind || (exports.WatchKind = WatchKind = {}));
|
23 |
+
/**
|
24 |
+
* The file event type.
|
25 |
+
*/
|
26 |
+
var FileChangeType;
|
27 |
+
(function (FileChangeType) {
|
28 |
+
/**
|
29 |
+
* The file got created.
|
30 |
+
*/
|
31 |
+
FileChangeType[FileChangeType["Created"] = 1] = "Created";
|
32 |
+
/**
|
33 |
+
* The file got changed.
|
34 |
+
*/
|
35 |
+
FileChangeType[FileChangeType["Changed"] = 2] = "Changed";
|
36 |
+
/**
|
37 |
+
* The file got deleted.
|
38 |
+
*/
|
39 |
+
FileChangeType[FileChangeType["Deleted"] = 3] = "Deleted";
|
40 |
+
})(FileChangeType || (exports.FileChangeType = FileChangeType = {}));
|
41 |
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlX25vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9nZW5maWxlcy90aGlyZF9wYXJ0eS9jb2xhYi9zb3VyY2VzL2xzcC93b3Jrc3BhY2Vfbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFpVEE7OztHQUdHO0FBQ0gsSUFBWSxTQWVYO0FBZkQsV0FBWSxTQUFTO0lBQ25COztPQUVHO0lBQ0gsNkNBQVUsQ0FBQTtJQUVWOztPQUVHO0lBQ0gsNkNBQVUsQ0FBQTtJQUVWOztPQUVHO0lBQ0gsNkNBQVUsQ0FBQTtBQUNaLENBQUMsRUFmVyxTQUFTLHlCQUFULFNBQVMsUUFlcEI7QUEyQkQ7O0dBRUc7QUFDSCxJQUFZLGNBYVg7QUFiRCxXQUFZLGNBQWM7SUFDeEI7O09BRUc7SUFDSCx5REFBVyxDQUFBO0lBQ1g7O09BRUc7SUFDSCx5REFBVyxDQUFBO0lBQ1g7O09BRUc7SUFDSCx5REFBVyxDQUFBO0FBQ2IsQ0FBQyxFQWJXLGNBQWMsOEJBQWQsY0FBYyxRQWF6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHByb3RvY29sIGZyb20gJy4vcHJvdG9jb2xfbm9kZSc7XG5pbXBvcnQgKiBhcyB0ZXh0RG9jdW1lbnQgZnJvbSAnLi90ZXh0X2RvY3VtZW50X25vZGUnO1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZTplbmZvcmNlLW5hbWUtY2FzaW5nXG5cbi8qKlxuICogVGhlIHdvcmtzcGFjZS9jb25maWd1cmF0aW9uIHJlcXVlc3QgaXMgc2VudCBmcm9tIHRoZSBzZXJ2ZXIgdG8gdGhlIGNsaWVudCB0b1xuICogZmV0Y2ggY29uZmlndXJhdGlvbiBzZXR0aW5ncyBmcm9tIHRoZSBjbGllbnQuIFRoZSByZXF1ZXN0IGNhbiBmZXRjaCBzZXZlcmFsXG4gKiBjb25maWd1cmF0aW9uIHNldHRpbmdzIGluIG9uZSByb3VuZHRyaXAuIFRoZSBvcmRlciBvZiB0aGUgcmV0dXJuZWRcbiAqIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgY29ycmVzcG9uZCB0byB0aGUgb3JkZXIgb2YgdGhlIHBhc3NlZFxuICogQ29uZmlndXJhdGlvbkl0ZW1zIChlLmcuIHRoZSBmaXJzdCBpdGVtIGluIHRoZSByZXNwb25zZSBpcyB0aGUgcmVzdWx0IGZvclxuICogdGhlIGZpcnN0IGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgcGFyYW1zKS5cbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbnMvc3BlY2lmaWNhdGlvbi1jdXJyZW50LyN3b3Jrc3BhY2VfY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQ29uZmlndXJhdGlvblBhcmFtcyB7XG4gIGl0ZW1zOiBDb25maWd1cmF0aW9uSXRlbVtdO1xufVxuXG4vKipcbiAqIFNwZWNpZmljIHBhcnQgb2YgdGhlIENvbmZpZ3VyYXRpb24gd2hpY2ggaXMgYmVpbmcgcmVxdWVzdGVkLlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3dvcmtzcGFjZV9jb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBDb25maWd1cmF0aW9uSXRlbSB7XG4gIC8qKlxuICAgKiBUaGUgc2NvcGUgdG8gZ2V0IHRoZSBjb25maWd1cmF0aW9uIHNlY3Rpb24gZm9yLlxuICAgKi9cbiAgc2NvcGVVcmk/OiBwcm90b2NvbC5Eb2N1bWVudFVyaTtcblxuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gc2VjdGlvbiBhc2tlZCBmb3IuXG4gICAqL1xuICBzZWN0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgbm90aWZpY2F0aW9uIHNlbnQgZnJvbSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXIgdG8gc2lnbmFsIHRoZSBjaGFuZ2Ugb2ZcbiAqIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MuXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jd29ya3NwYWNlX2RpZENoYW5nZUNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIERpZENoYW5nZUNvbmZpZ3VyYXRpb24gZXh0ZW5kc1xuICAgIHByb3RvY29sLk5vdGlmaWNhdGlvbk1lc3NhZ2U8RGlkQ2hhbmdlQ29uZmlndXJhdGlvblBhcmFtcz4ge1xuICBtZXRob2Q6IHByb3RvY29sLk1ldGhvZC5Xb3Jrc3BhY2VEaWRDaGFuZ2VDb25maWd1cmF0aW9uO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIERpZENoYW5nZUNvbmZpZ3VyYXRpb24uXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jd29ya3NwYWNlX2RpZENoYW5nZUNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIERpZENoYW5nZUNvbmZpZ3VyYXRpb25QYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFjdHVhbCBjaGFuZ2VkIHNldHRpbmdzXG4gICAqL1xuICBzZXR0aW5nczogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jd29ya3NwYWNlRWRpdFxuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgV29ya3NwYWNlRWRpdCB7XG4gIC8qKlxuICAgKiBIb2xkcyBjaGFuZ2VzIHRvIGV4aXN0aW5nIHJlc291cmNlcy5cbiAgICovXG4gIGNoYW5nZXM/OiB7W3VyaTogc3RyaW5nXTogdGV4dERvY3VtZW50LlRleHRFZGl0W107fTtcblxuICAvKipcbiAgICogVGhlIGNsaWVudCBjYXBhYmlsaXR5IGB3b3Jrc3BhY2Uud29ya3NwYWNlRWRpdC5yZXNvdXJjZU9wZXJhdGlvbnNgXG4gICAqIGRldGVybWluZXMgd2hldGhlciBkb2N1bWVudCBjaGFuZ2VzIGFyZSBlaXRoZXIgYW4gYXJyYXkgb2ZcbiAgICogYFRleHREb2N1bWVudEVkaXRgcyB0byBleHByZXNzIGNoYW5nZXMgdG8gZGlmZmVyZW50IHRleHQgZG9jdW1lbnRzLFxuICAgKiB3aGVyZSBlYWNoIHRleHQgZG9jdW1lbnQgZWRpdCBhZGRyZXNzZXMgYSBzcGVjaWZpYyB2ZXJzaW9uXG4gICAqIG9mIGEgdGV4dCBkb2N1bWVudCwgb3IgaXQgY2FuIGNvbnRhaW5zIHRoZSBhYm92ZSBgVGV4dERvY3VtZW50RWRpdGBzXG4gICAqIG1peGVkIHdpdGggY3JlYXRlLCByZW5hbWUsIGFuZCBkZWxldGUgZmlsZSAvIGZvbGRlciBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBXaGV0aGVyIGEgY2xpZW50IHN1cHBvcnRzIHZlcnNpb25lZCBkb2N1bWVudCBlZGl0cyBpcyBleHByZXNzZWQgdmlhXG4gICAqIGB3b3Jrc3BhY2Uud29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXNgIGNsaWVudCBjYXBhYmlsaXR5LlxuICAgKlxuICAgKiBJZiBhIGNsaWVudCBkb2Vzbid0IHN1cHBvcnQgYGRvY3VtZW50Q2hhbmdlc2Agb3JcbiAgICogYHdvcmtzcGFjZS53b3Jrc3BhY2VFZGl0LnJlc291cmNlT3BlcmF0aW9uc2AsIHRoZW4gb25seSBwbGFpblxuICAgKiBgVGV4dEVkaXRgcyB1c2luZyB0aGUgYGNoYW5nZXNgIHByb3BlcnR5IGFyZSBzdXBwb3J0ZWQuXG4gICAqL1xuICBkb2N1bWVudENoYW5nZXM/OlxuICAgICAgKHRleHREb2N1bWVudC5UZXh0RG9jdW1lbnRFZGl0W118XG4gICAgICAgQXJyYXk8dGV4dERvY3VtZW50LlRleHREb2N1bWVudEVkaXR8Q3JlYXRlRmlsZXxSZW5hbWVGaWxlfERlbGV0ZUZpbGU+KTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIHRvIGNyZWF0ZSBhIGZpbGUuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBDcmVhdGVGaWxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBPdmVyd3JpdGUgZXhpc3RpbmcgZmlsZS4gT3ZlcndyaXRlIHdpbnMgb3ZlciBgaWdub3JlSWZFeGlzdHNgXG4gICAqL1xuICBvdmVyd3JpdGU/OiBib29sZWFuO1xuICAvKipcbiAgICogSWdub3JlIGlmIGV4aXN0cy5cbiAgICovXG4gIGlnbm9yZUlmRXhpc3RzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgZmlsZSBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIENyZWF0ZUZpbGUge1xuICAvKipcbiAgICogQSBjcmVhdGVcbiAgICovXG4gIGtpbmQ6ICdjcmVhdGUnO1xuICAvKipcbiAgICogVGhlIHJlc291cmNlIHRvIGNyZWF0ZS5cbiAgICovXG4gIHVyaTogcHJvdG9jb2wuRG9jdW1lbnRVcmk7XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIG9wdGlvbnNcbiAgICovXG4gIG9wdGlvbnM/OiBDcmVhdGVGaWxlT3B0aW9ucztcbn1cblxuXG4vKipcbiAqIFJlbmFtZSBmaWxlIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFJlbmFtZUZpbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIE92ZXJ3cml0ZSB0YXJnZXQgaWYgZXhpc3RpbmcuIE92ZXJ3cml0ZSB3aW5zIG92ZXIgYGlnbm9yZUlmRXhpc3RzYFxuICAgKi9cbiAgb3ZlcndyaXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIElnbm9yZXMgaWYgdGFyZ2V0IGV4aXN0cy5cbiAgICovXG4gIGlnbm9yZUlmRXhpc3RzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZW5hbWUgZmlsZSBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFJlbmFtZUZpbGUge1xuICAvKipcbiAgICogQSByZW5hbWVcbiAgICovXG4gIGtpbmQ6ICdyZW5hbWUnO1xuICAvKipcbiAgICogVGhlIG9sZCAoZXhpc3RpbmcpIGxvY2F0aW9uLlxuICAgKi9cbiAgb2xkVXJpOiBwcm90b2NvbC5Eb2N1bWVudFVyaTtcbiAgLyoqXG4gICAqIFRoZSBuZXcgbG9jYXRpb24uXG4gICAqL1xuICBuZXdVcmk6IHByb3RvY29sLkRvY3VtZW50VXJpO1xuICAvKipcbiAgICogUmVuYW1lIG9wdGlvbnMuXG4gICAqL1xuICBvcHRpb25zPzogUmVuYW1lRmlsZU9wdGlvbnM7XG59XG5cbi8qKlxuICogRGVsZXRlIGZpbGUgb3B0aW9uc1xuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRGVsZXRlRmlsZU9wdGlvbnMge1xuICAvKipcbiAgICogRGVsZXRlIHRoZSBjb250ZW50IHJlY3Vyc2l2ZWx5IGlmIGEgZm9sZGVyIGlzIGRlbm90ZWQuXG4gICAqL1xuICByZWN1cnNpdmU/OiBib29sZWFuO1xuICAvKipcbiAgICogSWdub3JlIHRoZSBvcGVyYXRpb24gaWYgdGhlIGZpbGUgZG9lc24ndCBleGlzdC5cbiAgICovXG4gIGlnbm9yZUlmTm90RXhpc3RzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBEZWxldGUgZmlsZSBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIERlbGV0ZUZpbGUge1xuICAvKipcbiAgICogQSBkZWxldGVcbiAgICovXG4gIGtpbmQ6ICdkZWxldGUnO1xuICAvKipcbiAgICogVGhlIGZpbGUgdG8gZGVsZXRlLlxuICAgKi9cbiAgdXJpOiBwcm90b2NvbC5Eb2N1bWVudFVyaTtcbiAgLyoqXG4gICAqIERlbGV0ZSBvcHRpb25zLlxuICAgKi9cbiAgb3B0aW9ucz86IERlbGV0ZUZpbGVPcHRpb25zO1xufVxuXG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3dvcmtzcGFjZV9zeW1ib2xcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VTeW1ib2xDbGllbnRDYXBhYmlsaXRpZXMge1xuICAvKipcbiAgICogU3ltYm9sIHJlcXVlc3Qgc3VwcG9ydHMgZHluYW1pYyByZWdpc3RyYXRpb24uXG4gICAqL1xuICBkeW5hbWljUmVnaXN0cmF0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3BlY2lmaWMgY2FwYWJpbGl0aWVzIGZvciB0aGUgYFN5bWJvbEtpbmRgIGluIHRoZVxuICAgKiBgd29ya3NwYWNlL3N5bWJvbGAgcmVxdWVzdC5cbiAgICovXG4gIHN5bWJvbEtpbmQ/OiB7XG4gICAgLyoqXG4gICAgICogVGhlIHN5bWJvbCBraW5kIHZhbHVlcyB0aGUgY2xpZW50IHN1cHBvcnRzLiBXaGVuIHRoaXNcbiAgICAgKiBwcm9wZXJ0eSBleGlzdHMgdGhlIGNsaWVudCBhbHNvIGd1YXJhbnRlZXMgdGhhdCBpdCB3aWxsXG4gICAgICogaGFuZGxlIHZhbHVlcyBvdXRzaWRlIGl0cyBzZXQgZ3JhY2VmdWxseSBhbmQgZmFsbHMgYmFja1xuICAgICAqIHRvIGEgZGVmYXVsdCB2YWx1ZSB3aGVuIHVua25vd24uXG4gICAgICpcbiAgICAgKiBJZiB0aGlzIHByb3BlcnR5IGlzIG5vdCBwcmVzZW50IHRoZSBjbGllbnQgb25seSBzdXBwb3J0c1xuICAgICAqIHRoZSBzeW1ib2wga2luZHMgZnJvbSBgRmlsZWAgdG8gYEFycmF5YCBhcyBkZWZpbmVkIGluXG4gICAgICogdGhlIGluaXRpYWwgdmVyc2lvbiBvZiB0aGUgcHJvdG9jb2wuXG4gICAgICovXG4gICAgdmFsdWVTZXQ/OiBwcm90b2NvbC5TeW1ib2xLaW5kW107XG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBjbGllbnQgc3VwcG9ydHMgdGFncyBvbiBgU3ltYm9sSW5mb3JtYXRpb25gLlxuICAgKiBDbGllbnRzIHN1cHBvcnRpbmcgdGFncyBoYXZlIHRvIGhhbmRsZSB1bmtub3duIHRhZ3MgZ3JhY2VmdWxseS5cbiAgICpcbiAgICogQHNpbmNlIDMuMTYuMFxuICAgKi9cbiAgdGFnU3VwcG9ydD86IHtcbiAgICAvKipcbiAgICAgKiBUaGUgdGFncyBzdXBwb3J0ZWQgYnkgdGhlIGNsaWVudC5cbiAgICAgKi9cbiAgICB2YWx1ZVNldDogcHJvdG9jb2wuU3ltYm9sVGFnW10sXG4gIH07XG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3dvcmtzcGFjZV9kaWRDaGFuZ2VXYXRjaGVkRmlsZXNcbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIERpZENoYW5nZVdhdGNoZWRGaWxlc0NsaWVudENhcGFiaWxpdGllcyB7XG4gIC8qKlxuICAgKiBEaWQgY2hhbmdlIHdhdGNoZWQgZmlsZXMgbm90aWZpY2F0aW9uIHN1cHBvcnRzIGR5bmFtaWMgcmVnaXN0cmF0aW9uLlxuICAgKiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBjdXJyZW50IHByb3RvY29sIGRvZXNuJ3Qgc3VwcG9ydCBzdGF0aWNcbiAgICogY29uZmlndXJhdGlvbiBmb3IgZmlsZSBjaGFuZ2VzIGZyb20gdGhlIHNlcnZlciBzaWRlLlxuICAgKi9cbiAgZHluYW1pY1JlZ2lzdHJhdGlvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9zcGVjaWZpY2F0aW9ucy9zcGVjaWZpY2F0aW9uLWN1cnJlbnQvI3dvcmtzcGFjZV9kaWRDaGFuZ2VDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBEaWRDaGFuZ2VDb25maWd1cmF0aW9uQ2xpZW50Q2FwYWJpbGl0aWVzIHtcbiAgLyoqXG4gICAqIERpZCBjaGFuZ2UgY29uZmlndXJhdGlvbiBub3RpZmljYXRpb24gc3VwcG9ydHMgZHluYW1pYyByZWdpc3RyYXRpb24uXG4gICAqL1xuICBkeW5hbWljUmVnaXN0cmF0aW9uPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb25zL3NwZWNpZmljYXRpb24tY3VycmVudC8jd29ya3NwYWNlX3dvcmtzcGFjZUZvbGRlcnNcbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFdvcmtzcGFjZUZvbGRlciB7XG4gIC8qKlxuICAgKiBUaGUgYXNzb2NpYXRlZCBVUkkgZm9yIHRoaXMgd29ya3NwYWNlIGZvbGRlci5cbiAgICovXG4gIHVyaTogcHJvdG9jb2wuRG9jdW1lbnRVcmk7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB3b3Jrc3BhY2UgZm9sZGVyLiBVc2VkIHRvIHJlZmVyIHRvIHRoaXNcbiAgICogd29ya3NwYWNlIGZvbGRlciBpbiB0aGUgdXNlciBpbnRlcmZhY2UuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVzY3JpYmUgb3B0aW9ucyB0byBiZSB1c2VkIHdoZW4gcmVnaXN0ZXJpbmcgZm9yIGZpbGUgc3lzdGVtIGNoYW5nZSBldmVudHMuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBEaWRDaGFuZ2VXYXRjaGVkRmlsZXNSZWdpc3RyYXRpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB3YXRjaGVycyB0byByZWdpc3Rlci5cbiAgICovXG4gIHdhdGNoZXJzOiBGaWxlU3lzdGVtV2F0Y2hlcltdO1xufVxuXG4vKipcbiAqIFNlZTpcbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbiN3b3Jrc3BhY2VfZGlkQ2hhbmdlV2F0Y2hlZEZpbGVzXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBGaWxlU3lzdGVtV2F0Y2hlciB7XG4gIC8qKlxuICAgKiBUaGUgZ2xvYiBwYXR0ZXJuIHRvIHdhdGNoLlxuICAgKlxuICAgKiBHbG9iIHBhdHRlcm5zIGNhbiBoYXZlIHRoZSBmb2xsb3dpbmcgc3ludGF4OlxuICAgKiAtIGAqYCB0byBtYXRjaCBvbmUgb3IgbW9yZSBjaGFyYWN0ZXJzIGluIGEgcGF0aCBzZWdtZW50XG4gICAqIC0gYD9gIHRvIG1hdGNoIG9uIG9uZSBjaGFyYWN0ZXIgaW4gYSBwYXRoIHNlZ21lbnRcbiAgICogLSBgKipgIHRvIG1hdGNoIGFueSBudW1iZXIgb2YgcGF0aCBzZWdtZW50cywgaW5jbHVkaW5nIG5vbmVcbiAgICogLSBge31gIHRvIGdyb3VwIHN1YiBwYXR0ZXJucyBpbnRvIGFuIE9SIGV4cHJlc3Npb24uIChlLmcuIGAqKuKAiy8qLnt0cyxqc31gXG4gICAqICAgbWF0Y2hlcyBhbGwgVHlwZVNjcmlwdCBhbmQgSmF2YVNjcmlwdCBmaWxlcylcbiAgICogLSBgW11gIHRvIGRlY2xhcmUgYSByYW5nZSBvZiBjaGFyYWN0ZXJzIHRvIG1hdGNoIGluIGEgcGF0aCBzZWdtZW50XG4gICAqICAgKGUuZy4sIGBleGFtcGxlLlswLTldYCB0byBtYXRjaCBvbiBgZXhhbXBsZS4wYCwgYGV4YW1wbGUuMWAsIOKApilcbiAgICogLSBgWyEuLi5dYCB0byBuZWdhdGUgYSByYW5nZSBvZiBjaGFyYWN0ZXJzIHRvIG1hdGNoIGluIGEgcGF0aCBzZWdtZW50XG4gICAqICAgKGUuZy4sIGBleGFtcGxlLlshMC05XWAgdG8gbWF0Y2ggb24gYGV4YW1wbGUuYWAsIGBleGFtcGxlLmJgLCBidXQgbm90XG4gICAqICAgYGV4YW1wbGUuMGApXG4gICAqL1xuICBnbG9iUGF0dGVybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUga2luZCBvZiBldmVudHMgb2YgaW50ZXJlc3QuIElmIG9taXR0ZWQgaXQgZGVmYXVsdHNcbiAgICogdG8gV2F0Y2hLaW5kLkNyZWF0ZSB8IFdhdGNoS2luZC5DaGFuZ2UgfCBXYXRjaEtpbmQuRGVsZXRlXG4gICAqIHdoaWNoIGlzIDcuXG4gICAqL1xuICBraW5kPzogV2F0Y2hLaW5kO1xufVxuXG4vKipcbiAqIFNlZTpcbiAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9sYW5ndWFnZS1zZXJ2ZXItcHJvdG9jb2wvc3BlY2lmaWNhdGlvbiN3b3Jrc3BhY2VfZGlkQ2hhbmdlV2F0Y2hlZEZpbGVzXG4gKi9cbmV4cG9ydCBlbnVtIFdhdGNoS2luZCB7XG4gIC8qKlxuICAgKiBJbnRlcmVzdGVkIGluIGNyZWF0ZSBldmVudHMuXG4gICAqL1xuICBDcmVhdGUgPSAxLFxuXG4gIC8qKlxuICAgKiBJbnRlcmVzdGVkIGluIGNoYW5nZSBldmVudHNcbiAgICovXG4gIENoYW5nZSA9IDIsXG5cbiAgLyoqXG4gICAqIEludGVyZXN0ZWQgaW4gZGVsZXRlIGV2ZW50c1xuICAgKi9cbiAgRGVsZXRlID0gNCxcbn1cblxuLyoqXG4gKiBTZWU6XG4gKiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL3NwZWNpZmljYXRpb24jd29ya3NwYWNlX2RpZENoYW5nZVdhdGNoZWRGaWxlc1xuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRGlkQ2hhbmdlV2F0Y2hlZEZpbGVzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBhY3R1YWwgZmlsZSBldmVudHMuXG4gICAqL1xuICBjaGFuZ2VzOiBGaWxlRXZlbnRbXTtcbn1cblxuLyoqXG4gKiBBbiBldmVudCBkZXNjcmliaW5nIGEgZmlsZSBjaGFuZ2UuXG4gKi9cbmludGVyZmFjZSBGaWxlRXZlbnQge1xuICAvKipcbiAgICogVGhlIGZpbGUncyBVUkkuXG4gICAqL1xuICB1cmk6IHByb3RvY29sLkRvY3VtZW50VXJpO1xuICAvKipcbiAgICogVGhlIGNoYW5nZSB0eXBlLlxuICAgKi9cbiAgdHlwZTogRmlsZUNoYW5nZVR5cGU7XG59XG5cbi8qKlxuICogVGhlIGZpbGUgZXZlbnQgdHlwZS5cbiAqL1xuZXhwb3J0IGVudW0gRmlsZUNoYW5nZVR5cGUge1xuICAvKipcbiAgICogVGhlIGZpbGUgZ290IGNyZWF0ZWQuXG4gICAqL1xuICBDcmVhdGVkID0gMSxcbiAgLyoqXG4gICAqIFRoZSBmaWxlIGdvdCBjaGFuZ2VkLlxuICAgKi9cbiAgQ2hhbmdlZCA9IDIsXG4gIC8qKlxuICAgKiBUaGUgZmlsZSBnb3QgZGVsZXRlZC5cbiAgICovXG4gIERlbGV0ZWQgPSAzLFxufVxuIl19
|
web/node_modules/.bin/bunyan
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:cb97ac3eee1e35dfbaa2025aa5bb391bbe5adcbe7305a32d6f6e6cdbe1879ac9
|
3 |
+
size 56829
|
web/node_modules/.bin/mkdirp
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:24b028bccb1773f02cf0d0fb3dca5468f1b5d22a06cbc5cbf351e1eb3accefb1
|
3 |
+
size 731
|
web/node_modules/.bin/ncp
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:c7ca0417a675931d7d4f549009af66f25b47ea5a07e6ddcd85efb712afba3178
|
3 |
+
size 1084
|
web/node_modules/.bin/rimraf
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:3a1557fb195dd6ba967235a93927f74e0452b913425c713bcabdeaee9f62d189
|
3 |
+
size 838
|
web/node_modules/.bin/semver
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:e5c53c713df57d8bdfd03f00e758b5b6a3f51e91a44eb888065394c0deb0da51
|
3 |
+
size 4784
|
web/node_modules/accepts/HISTORY.md
ADDED
@@ -0,0 +1,224 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
1.3.5 / 2018-02-28
|
2 |
+
==================
|
3 |
+
|
4 |
+
* deps: mime-types@~2.1.18
|
5 |
+
- deps: mime-db@~1.33.0
|
6 |
+
|
7 |
+
1.3.4 / 2017-08-22
|
8 |
+
==================
|
9 |
+
|
10 |
+
* deps: mime-types@~2.1.16
|
11 |
+
- deps: mime-db@~1.29.0
|
12 |
+
|
13 |
+
1.3.3 / 2016-05-02
|
14 |
+
==================
|
15 |
+
|
16 |
+
* deps: mime-types@~2.1.11
|
17 |
+
- deps: mime-db@~1.23.0
|
18 |
+
* deps: [email protected]
|
19 |
+
- perf: improve `Accept` parsing speed
|
20 |
+
- perf: improve `Accept-Charset` parsing speed
|
21 |
+
- perf: improve `Accept-Encoding` parsing speed
|
22 |
+
- perf: improve `Accept-Language` parsing speed
|
23 |
+
|
24 |
+
1.3.2 / 2016-03-08
|
25 |
+
==================
|
26 |
+
|
27 |
+
* deps: mime-types@~2.1.10
|
28 |
+
- Fix extension of `application/dash+xml`
|
29 |
+
- Update primary extension for `audio/mp4`
|
30 |
+
- deps: mime-db@~1.22.0
|
31 |
+
|
32 |
+
1.3.1 / 2016-01-19
|
33 |
+
==================
|
34 |
+
|
35 |
+
* deps: mime-types@~2.1.9
|
36 |
+
- deps: mime-db@~1.21.0
|
37 |
+
|
38 |
+
1.3.0 / 2015-09-29
|
39 |
+
==================
|
40 |
+
|
41 |
+
* deps: mime-types@~2.1.7
|
42 |
+
- deps: mime-db@~1.19.0
|
43 |
+
* deps: [email protected]
|
44 |
+
- Fix including type extensions in parameters in `Accept` parsing
|
45 |
+
- Fix parsing `Accept` parameters with quoted equals
|
46 |
+
- Fix parsing `Accept` parameters with quoted semicolons
|
47 |
+
- Lazy-load modules from main entry point
|
48 |
+
- perf: delay type concatenation until needed
|
49 |
+
- perf: enable strict mode
|
50 |
+
- perf: hoist regular expressions
|
51 |
+
- perf: remove closures getting spec properties
|
52 |
+
- perf: remove a closure from media type parsing
|
53 |
+
- perf: remove property delete from media type parsing
|
54 |
+
|
55 |
+
1.2.13 / 2015-09-06
|
56 |
+
===================
|
57 |
+
|
58 |
+
* deps: mime-types@~2.1.6
|
59 |
+
- deps: mime-db@~1.18.0
|
60 |
+
|
61 |
+
1.2.12 / 2015-07-30
|
62 |
+
===================
|
63 |
+
|
64 |
+
* deps: mime-types@~2.1.4
|
65 |
+
- deps: mime-db@~1.16.0
|
66 |
+
|
67 |
+
1.2.11 / 2015-07-16
|
68 |
+
===================
|
69 |
+
|
70 |
+
* deps: mime-types@~2.1.3
|
71 |
+
- deps: mime-db@~1.15.0
|
72 |
+
|
73 |
+
1.2.10 / 2015-07-01
|
74 |
+
===================
|
75 |
+
|
76 |
+
* deps: mime-types@~2.1.2
|
77 |
+
- deps: mime-db@~1.14.0
|
78 |
+
|
79 |
+
1.2.9 / 2015-06-08
|
80 |
+
==================
|
81 |
+
|
82 |
+
* deps: mime-types@~2.1.1
|
83 |
+
- perf: fix deopt during mapping
|
84 |
+
|
85 |
+
1.2.8 / 2015-06-07
|
86 |
+
==================
|
87 |
+
|
88 |
+
* deps: mime-types@~2.1.0
|
89 |
+
- deps: mime-db@~1.13.0
|
90 |
+
* perf: avoid argument reassignment & argument slice
|
91 |
+
* perf: avoid negotiator recursive construction
|
92 |
+
* perf: enable strict mode
|
93 |
+
* perf: remove unnecessary bitwise operator
|
94 |
+
|
95 |
+
1.2.7 / 2015-05-10
|
96 |
+
==================
|
97 |
+
|
98 |
+
* deps: [email protected]
|
99 |
+
- Fix media type parameter matching to be case-insensitive
|
100 |
+
|
101 |
+
1.2.6 / 2015-05-07
|
102 |
+
==================
|
103 |
+
|
104 |
+
* deps: mime-types@~2.0.11
|
105 |
+
- deps: mime-db@~1.9.1
|
106 |
+
* deps: [email protected]
|
107 |
+
- Fix comparing media types with quoted values
|
108 |
+
- Fix splitting media types with quoted commas
|
109 |
+
|
110 |
+
1.2.5 / 2015-03-13
|
111 |
+
==================
|
112 |
+
|
113 |
+
* deps: mime-types@~2.0.10
|
114 |
+
- deps: mime-db@~1.8.0
|
115 |
+
|
116 |
+
1.2.4 / 2015-02-14
|
117 |
+
==================
|
118 |
+
|
119 |
+
* Support Node.js 0.6
|
120 |
+
* deps: mime-types@~2.0.9
|
121 |
+
- deps: mime-db@~1.7.0
|
122 |
+
* deps: [email protected]
|
123 |
+
- Fix preference sorting to be stable for long acceptable lists
|
124 |
+
|
125 |
+
1.2.3 / 2015-01-31
|
126 |
+
==================
|
127 |
+
|
128 |
+
* deps: mime-types@~2.0.8
|
129 |
+
- deps: mime-db@~1.6.0
|
130 |
+
|
131 |
+
1.2.2 / 2014-12-30
|
132 |
+
==================
|
133 |
+
|
134 |
+
* deps: mime-types@~2.0.7
|
135 |
+
- deps: mime-db@~1.5.0
|
136 |
+
|
137 |
+
1.2.1 / 2014-12-30
|
138 |
+
==================
|
139 |
+
|
140 |
+
* deps: mime-types@~2.0.5
|
141 |
+
- deps: mime-db@~1.3.1
|
142 |
+
|
143 |
+
1.2.0 / 2014-12-19
|
144 |
+
==================
|
145 |
+
|
146 |
+
* deps: [email protected]
|
147 |
+
- Fix list return order when large accepted list
|
148 |
+
- Fix missing identity encoding when q=0 exists
|
149 |
+
- Remove dynamic building of Negotiator class
|
150 |
+
|
151 |
+
1.1.4 / 2014-12-10
|
152 |
+
==================
|
153 |
+
|
154 |
+
* deps: mime-types@~2.0.4
|
155 |
+
- deps: mime-db@~1.3.0
|
156 |
+
|
157 |
+
1.1.3 / 2014-11-09
|
158 |
+
==================
|
159 |
+
|
160 |
+
* deps: mime-types@~2.0.3
|
161 |
+
- deps: mime-db@~1.2.0
|
162 |
+
|
163 |
+
1.1.2 / 2014-10-14
|
164 |
+
==================
|
165 |
+
|
166 |
+
* deps: [email protected]
|
167 |
+
- Fix error when media type has invalid parameter
|
168 |
+
|
169 |
+
1.1.1 / 2014-09-28
|
170 |
+
==================
|
171 |
+
|
172 |
+
* deps: mime-types@~2.0.2
|
173 |
+
- deps: mime-db@~1.1.0
|
174 |
+
* deps: [email protected]
|
175 |
+
- Fix all negotiations to be case-insensitive
|
176 |
+
- Stable sort preferences of same quality according to client order
|
177 |
+
|
178 |
+
1.1.0 / 2014-09-02
|
179 |
+
==================
|
180 |
+
|
181 |
+
* update `mime-types`
|
182 |
+
|
183 |
+
1.0.7 / 2014-07-04
|
184 |
+
==================
|
185 |
+
|
186 |
+
* Fix wrong type returned from `type` when match after unknown extension
|
187 |
+
|
188 |
+
1.0.6 / 2014-06-24
|
189 |
+
==================
|
190 |
+
|
191 |
+
* deps: [email protected]
|
192 |
+
|
193 |
+
1.0.5 / 2014-06-20
|
194 |
+
==================
|
195 |
+
|
196 |
+
* fix crash when unknown extension given
|
197 |
+
|
198 |
+
1.0.4 / 2014-06-19
|
199 |
+
==================
|
200 |
+
|
201 |
+
* use `mime-types`
|
202 |
+
|
203 |
+
1.0.3 / 2014-06-11
|
204 |
+
==================
|
205 |
+
|
206 |
+
* deps: [email protected]
|
207 |
+
- Order by specificity when quality is the same
|
208 |
+
|
209 |
+
1.0.2 / 2014-05-29
|
210 |
+
==================
|
211 |
+
|
212 |
+
* Fix interpretation when header not in request
|
213 |
+
* deps: pin [email protected]
|
214 |
+
|
215 |
+
1.0.1 / 2014-01-18
|
216 |
+
==================
|
217 |
+
|
218 |
+
* Identity encoding isn't always acceptable
|
219 |
+
* deps: negotiator@~0.4.0
|
220 |
+
|
221 |
+
1.0.0 / 2013-12-27
|
222 |
+
==================
|
223 |
+
|
224 |
+
* Genesis
|
web/node_modules/accepts/LICENSE
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
(The MIT License)
|
2 |
+
|
3 |
+
Copyright (c) 2014 Jonathan Ong <[email protected]>
|
4 |
+
Copyright (c) 2015 Douglas Christopher Wilson <[email protected]>
|
5 |
+
|
6 |
+
Permission is hereby granted, free of charge, to any person obtaining
|
7 |
+
a copy of this software and associated documentation files (the
|
8 |
+
'Software'), to deal in the Software without restriction, including
|
9 |
+
without limitation the rights to use, copy, modify, merge, publish,
|
10 |
+
distribute, sublicense, and/or sell copies of the Software, and to
|
11 |
+
permit persons to whom the Software is furnished to do so, subject to
|
12 |
+
the following conditions:
|
13 |
+
|
14 |
+
The above copyright notice and this permission notice shall be
|
15 |
+
included in all copies or substantial portions of the Software.
|
16 |
+
|
17 |
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
18 |
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
19 |
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
20 |
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
21 |
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
22 |
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
23 |
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
web/node_modules/accepts/README.md
ADDED
@@ -0,0 +1,143 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# accepts
|
2 |
+
|
3 |
+
[![NPM Version][npm-image]][npm-url]
|
4 |
+
[![NPM Downloads][downloads-image]][downloads-url]
|
5 |
+
[![Node.js Version][node-version-image]][node-version-url]
|
6 |
+
[![Build Status][travis-image]][travis-url]
|
7 |
+
[![Test Coverage][coveralls-image]][coveralls-url]
|
8 |
+
|
9 |
+
Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator).
|
10 |
+
Extracted from [koa](https://www.npmjs.com/package/koa) for general use.
|
11 |
+
|
12 |
+
In addition to negotiator, it allows:
|
13 |
+
|
14 |
+
- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])`
|
15 |
+
as well as `('text/html', 'application/json')`.
|
16 |
+
- Allows type shorthands such as `json`.
|
17 |
+
- Returns `false` when no types match
|
18 |
+
- Treats non-existent headers as `*`
|
19 |
+
|
20 |
+
## Installation
|
21 |
+
|
22 |
+
This is a [Node.js](https://nodejs.org/en/) module available through the
|
23 |
+
[npm registry](https://www.npmjs.com/). Installation is done using the
|
24 |
+
[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
|
25 |
+
|
26 |
+
```sh
|
27 |
+
$ npm install accepts
|
28 |
+
```
|
29 |
+
|
30 |
+
## API
|
31 |
+
|
32 |
+
<!-- eslint-disable no-unused-vars -->
|
33 |
+
|
34 |
+
```js
|
35 |
+
var accepts = require('accepts')
|
36 |
+
```
|
37 |
+
|
38 |
+
### accepts(req)
|
39 |
+
|
40 |
+
Create a new `Accepts` object for the given `req`.
|
41 |
+
|
42 |
+
#### .charset(charsets)
|
43 |
+
|
44 |
+
Return the first accepted charset. If nothing in `charsets` is accepted,
|
45 |
+
then `false` is returned.
|
46 |
+
|
47 |
+
#### .charsets()
|
48 |
+
|
49 |
+
Return the charsets that the request accepts, in the order of the client's
|
50 |
+
preference (most preferred first).
|
51 |
+
|
52 |
+
#### .encoding(encodings)
|
53 |
+
|
54 |
+
Return the first accepted encoding. If nothing in `encodings` is accepted,
|
55 |
+
then `false` is returned.
|
56 |
+
|
57 |
+
#### .encodings()
|
58 |
+
|
59 |
+
Return the encodings that the request accepts, in the order of the client's
|
60 |
+
preference (most preferred first).
|
61 |
+
|
62 |
+
#### .language(languages)
|
63 |
+
|
64 |
+
Return the first accepted language. If nothing in `languages` is accepted,
|
65 |
+
then `false` is returned.
|
66 |
+
|
67 |
+
#### .languages()
|
68 |
+
|
69 |
+
Return the languages that the request accepts, in the order of the client's
|
70 |
+
preference (most preferred first).
|
71 |
+
|
72 |
+
#### .type(types)
|
73 |
+
|
74 |
+
Return the first accepted type (and it is returned as the same text as what
|
75 |
+
appears in the `types` array). If nothing in `types` is accepted, then `false`
|
76 |
+
is returned.
|
77 |
+
|
78 |
+
The `types` array can contain full MIME types or file extensions. Any value
|
79 |
+
that is not a full MIME types is passed to `require('mime-types').lookup`.
|
80 |
+
|
81 |
+
#### .types()
|
82 |
+
|
83 |
+
Return the types that the request accepts, in the order of the client's
|
84 |
+
preference (most preferred first).
|
85 |
+
|
86 |
+
## Examples
|
87 |
+
|
88 |
+
### Simple type negotiation
|
89 |
+
|
90 |
+
This simple example shows how to use `accepts` to return a different typed
|
91 |
+
respond body based on what the client wants to accept. The server lists it's
|
92 |
+
preferences in order and will get back the best match between the client and
|
93 |
+
server.
|
94 |
+
|
95 |
+
```js
|
96 |
+
var accepts = require('accepts')
|
97 |
+
var http = require('http')
|
98 |
+
|
99 |
+
function app (req, res) {
|
100 |
+
var accept = accepts(req)
|
101 |
+
|
102 |
+
// the order of this list is significant; should be server preferred order
|
103 |
+
switch (accept.type(['json', 'html'])) {
|
104 |
+
case 'json':
|
105 |
+
res.setHeader('Content-Type', 'application/json')
|
106 |
+
res.write('{"hello":"world!"}')
|
107 |
+
break
|
108 |
+
case 'html':
|
109 |
+
res.setHeader('Content-Type', 'text/html')
|
110 |
+
res.write('<b>hello, world!</b>')
|
111 |
+
break
|
112 |
+
default:
|
113 |
+
// the fallback is text/plain, so no need to specify it above
|
114 |
+
res.setHeader('Content-Type', 'text/plain')
|
115 |
+
res.write('hello, world!')
|
116 |
+
break
|
117 |
+
}
|
118 |
+
|
119 |
+
res.end()
|
120 |
+
}
|
121 |
+
|
122 |
+
http.createServer(app).listen(3000)
|
123 |
+
```
|
124 |
+
|
125 |
+
You can test this out with the cURL program:
|
126 |
+
```sh
|
127 |
+
curl -I -H'Accept: text/html' http://localhost:3000/
|
128 |
+
```
|
129 |
+
|
130 |
+
## License
|
131 |
+
|
132 |
+
[MIT](LICENSE)
|
133 |
+
|
134 |
+
[npm-image]: https://img.shields.io/npm/v/accepts.svg
|
135 |
+
[npm-url]: https://npmjs.org/package/accepts
|
136 |
+
[node-version-image]: https://img.shields.io/node/v/accepts.svg
|
137 |
+
[node-version-url]: https://nodejs.org/en/download/
|
138 |
+
[travis-image]: https://img.shields.io/travis/jshttp/accepts/master.svg
|
139 |
+
[travis-url]: https://travis-ci.org/jshttp/accepts
|
140 |
+
[coveralls-image]: https://img.shields.io/coveralls/jshttp/accepts/master.svg
|
141 |
+
[coveralls-url]: https://coveralls.io/r/jshttp/accepts
|
142 |
+
[downloads-image]: https://img.shields.io/npm/dm/accepts.svg
|
143 |
+
[downloads-url]: https://npmjs.org/package/accepts
|
web/node_modules/accepts/index.js
ADDED
@@ -0,0 +1,238 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* accepts
|
3 |
+
* Copyright(c) 2014 Jonathan Ong
|
4 |
+
* Copyright(c) 2015 Douglas Christopher Wilson
|
5 |
+
* MIT Licensed
|
6 |
+
*/
|
7 |
+
|
8 |
+
'use strict'
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Module dependencies.
|
12 |
+
* @private
|
13 |
+
*/
|
14 |
+
|
15 |
+
var Negotiator = require('negotiator')
|
16 |
+
var mime = require('mime-types')
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Module exports.
|
20 |
+
* @public
|
21 |
+
*/
|
22 |
+
|
23 |
+
module.exports = Accepts
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Create a new Accepts object for the given req.
|
27 |
+
*
|
28 |
+
* @param {object} req
|
29 |
+
* @public
|
30 |
+
*/
|
31 |
+
|
32 |
+
function Accepts (req) {
|
33 |
+
if (!(this instanceof Accepts)) {
|
34 |
+
return new Accepts(req)
|
35 |
+
}
|
36 |
+
|
37 |
+
this.headers = req.headers
|
38 |
+
this.negotiator = new Negotiator(req)
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Check if the given `type(s)` is acceptable, returning
|
43 |
+
* the best match when true, otherwise `undefined`, in which
|
44 |
+
* case you should respond with 406 "Not Acceptable".
|
45 |
+
*
|
46 |
+
* The `type` value may be a single mime type string
|
47 |
+
* such as "application/json", the extension name
|
48 |
+
* such as "json" or an array `["json", "html", "text/plain"]`. When a list
|
49 |
+
* or array is given the _best_ match, if any is returned.
|
50 |
+
*
|
51 |
+
* Examples:
|
52 |
+
*
|
53 |
+
* // Accept: text/html
|
54 |
+
* this.types('html');
|
55 |
+
* // => "html"
|
56 |
+
*
|
57 |
+
* // Accept: text/*, application/json
|
58 |
+
* this.types('html');
|
59 |
+
* // => "html"
|
60 |
+
* this.types('text/html');
|
61 |
+
* // => "text/html"
|
62 |
+
* this.types('json', 'text');
|
63 |
+
* // => "json"
|
64 |
+
* this.types('application/json');
|
65 |
+
* // => "application/json"
|
66 |
+
*
|
67 |
+
* // Accept: text/*, application/json
|
68 |
+
* this.types('image/png');
|
69 |
+
* this.types('png');
|
70 |
+
* // => undefined
|
71 |
+
*
|
72 |
+
* // Accept: text/*;q=.5, application/json
|
73 |
+
* this.types(['html', 'json']);
|
74 |
+
* this.types('html', 'json');
|
75 |
+
* // => "json"
|
76 |
+
*
|
77 |
+
* @param {String|Array} types...
|
78 |
+
* @return {String|Array|Boolean}
|
79 |
+
* @public
|
80 |
+
*/
|
81 |
+
|
82 |
+
Accepts.prototype.type =
|
83 |
+
Accepts.prototype.types = function (types_) {
|
84 |
+
var types = types_
|
85 |
+
|
86 |
+
// support flattened arguments
|
87 |
+
if (types && !Array.isArray(types)) {
|
88 |
+
types = new Array(arguments.length)
|
89 |
+
for (var i = 0; i < types.length; i++) {
|
90 |
+
types[i] = arguments[i]
|
91 |
+
}
|
92 |
+
}
|
93 |
+
|
94 |
+
// no types, return all requested types
|
95 |
+
if (!types || types.length === 0) {
|
96 |
+
return this.negotiator.mediaTypes()
|
97 |
+
}
|
98 |
+
|
99 |
+
// no accept header, return first given type
|
100 |
+
if (!this.headers.accept) {
|
101 |
+
return types[0]
|
102 |
+
}
|
103 |
+
|
104 |
+
var mimes = types.map(extToMime)
|
105 |
+
var accepts = this.negotiator.mediaTypes(mimes.filter(validMime))
|
106 |
+
var first = accepts[0]
|
107 |
+
|
108 |
+
return first
|
109 |
+
? types[mimes.indexOf(first)]
|
110 |
+
: false
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
* Return accepted encodings or best fit based on `encodings`.
|
115 |
+
*
|
116 |
+
* Given `Accept-Encoding: gzip, deflate`
|
117 |
+
* an array sorted by quality is returned:
|
118 |
+
*
|
119 |
+
* ['gzip', 'deflate']
|
120 |
+
*
|
121 |
+
* @param {String|Array} encodings...
|
122 |
+
* @return {String|Array}
|
123 |
+
* @public
|
124 |
+
*/
|
125 |
+
|
126 |
+
Accepts.prototype.encoding =
|
127 |
+
Accepts.prototype.encodings = function (encodings_) {
|
128 |
+
var encodings = encodings_
|
129 |
+
|
130 |
+
// support flattened arguments
|
131 |
+
if (encodings && !Array.isArray(encodings)) {
|
132 |
+
encodings = new Array(arguments.length)
|
133 |
+
for (var i = 0; i < encodings.length; i++) {
|
134 |
+
encodings[i] = arguments[i]
|
135 |
+
}
|
136 |
+
}
|
137 |
+
|
138 |
+
// no encodings, return all requested encodings
|
139 |
+
if (!encodings || encodings.length === 0) {
|
140 |
+
return this.negotiator.encodings()
|
141 |
+
}
|
142 |
+
|
143 |
+
return this.negotiator.encodings(encodings)[0] || false
|
144 |
+
}
|
145 |
+
|
146 |
+
/**
|
147 |
+
* Return accepted charsets or best fit based on `charsets`.
|
148 |
+
*
|
149 |
+
* Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5`
|
150 |
+
* an array sorted by quality is returned:
|
151 |
+
*
|
152 |
+
* ['utf-8', 'utf-7', 'iso-8859-1']
|
153 |
+
*
|
154 |
+
* @param {String|Array} charsets...
|
155 |
+
* @return {String|Array}
|
156 |
+
* @public
|
157 |
+
*/
|
158 |
+
|
159 |
+
Accepts.prototype.charset =
|
160 |
+
Accepts.prototype.charsets = function (charsets_) {
|
161 |
+
var charsets = charsets_
|
162 |
+
|
163 |
+
// support flattened arguments
|
164 |
+
if (charsets && !Array.isArray(charsets)) {
|
165 |
+
charsets = new Array(arguments.length)
|
166 |
+
for (var i = 0; i < charsets.length; i++) {
|
167 |
+
charsets[i] = arguments[i]
|
168 |
+
}
|
169 |
+
}
|
170 |
+
|
171 |
+
// no charsets, return all requested charsets
|
172 |
+
if (!charsets || charsets.length === 0) {
|
173 |
+
return this.negotiator.charsets()
|
174 |
+
}
|
175 |
+
|
176 |
+
return this.negotiator.charsets(charsets)[0] || false
|
177 |
+
}
|
178 |
+
|
179 |
+
/**
|
180 |
+
* Return accepted languages or best fit based on `langs`.
|
181 |
+
*
|
182 |
+
* Given `Accept-Language: en;q=0.8, es, pt`
|
183 |
+
* an array sorted by quality is returned:
|
184 |
+
*
|
185 |
+
* ['es', 'pt', 'en']
|
186 |
+
*
|
187 |
+
* @param {String|Array} langs...
|
188 |
+
* @return {Array|String}
|
189 |
+
* @public
|
190 |
+
*/
|
191 |
+
|
192 |
+
Accepts.prototype.lang =
|
193 |
+
Accepts.prototype.langs =
|
194 |
+
Accepts.prototype.language =
|
195 |
+
Accepts.prototype.languages = function (languages_) {
|
196 |
+
var languages = languages_
|
197 |
+
|
198 |
+
// support flattened arguments
|
199 |
+
if (languages && !Array.isArray(languages)) {
|
200 |
+
languages = new Array(arguments.length)
|
201 |
+
for (var i = 0; i < languages.length; i++) {
|
202 |
+
languages[i] = arguments[i]
|
203 |
+
}
|
204 |
+
}
|
205 |
+
|
206 |
+
// no languages, return all requested languages
|
207 |
+
if (!languages || languages.length === 0) {
|
208 |
+
return this.negotiator.languages()
|
209 |
+
}
|
210 |
+
|
211 |
+
return this.negotiator.languages(languages)[0] || false
|
212 |
+
}
|
213 |
+
|
214 |
+
/**
|
215 |
+
* Convert extnames to mime.
|
216 |
+
*
|
217 |
+
* @param {String} type
|
218 |
+
* @return {String}
|
219 |
+
* @private
|
220 |
+
*/
|
221 |
+
|
222 |
+
function extToMime (type) {
|
223 |
+
return type.indexOf('/') === -1
|
224 |
+
? mime.lookup(type)
|
225 |
+
: type
|
226 |
+
}
|
227 |
+
|
228 |
+
/**
|
229 |
+
* Check if mime is valid.
|
230 |
+
*
|
231 |
+
* @param {String} type
|
232 |
+
* @return {String}
|
233 |
+
* @private
|
234 |
+
*/
|
235 |
+
|
236 |
+
function validMime (type) {
|
237 |
+
return typeof type === 'string'
|
238 |
+
}
|
web/node_modules/accepts/package.json
ADDED
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"name": "accepts",
|
3 |
+
"description": "Higher-level content negotiation",
|
4 |
+
"version": "1.3.5",
|
5 |
+
"contributors": [
|
6 |
+
"Douglas Christopher Wilson <[email protected]>",
|
7 |
+
"Jonathan Ong <[email protected]> (http://jongleberry.com)"
|
8 |
+
],
|
9 |
+
"license": "MIT",
|
10 |
+
"repository": "jshttp/accepts",
|
11 |
+
"dependencies": {
|
12 |
+
"mime-types": "~2.1.18",
|
13 |
+
"negotiator": "0.6.1"
|
14 |
+
},
|
15 |
+
"devDependencies": {
|
16 |
+
"eslint": "4.18.1",
|
17 |
+
"eslint-config-standard": "11.0.0",
|
18 |
+
"eslint-plugin-import": "2.9.0",
|
19 |
+
"eslint-plugin-markdown": "1.0.0-beta.6",
|
20 |
+
"eslint-plugin-node": "6.0.1",
|
21 |
+
"eslint-plugin-promise": "3.6.0",
|
22 |
+
"eslint-plugin-standard": "3.0.1",
|
23 |
+
"istanbul": "0.4.5",
|
24 |
+
"mocha": "~1.21.5"
|
25 |
+
},
|
26 |
+
"files": [
|
27 |
+
"LICENSE",
|
28 |
+
"HISTORY.md",
|
29 |
+
"index.js"
|
30 |
+
],
|
31 |
+
"engines": {
|
32 |
+
"node": ">= 0.6"
|
33 |
+
},
|
34 |
+
"scripts": {
|
35 |
+
"lint": "eslint --plugin markdown --ext js,md .",
|
36 |
+
"test": "mocha --reporter spec --check-leaks --bail test/",
|
37 |
+
"test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
|
38 |
+
"test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
|
39 |
+
},
|
40 |
+
"keywords": [
|
41 |
+
"content",
|
42 |
+
"negotiation",
|
43 |
+
"accept",
|
44 |
+
"accepts"
|
45 |
+
]
|
46 |
+
|
47 |
+
,"_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz"
|
48 |
+
,"_integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I="
|
49 |
+
,"_from": "[email protected]"
|
50 |
+
}
|
web/node_modules/after/.npmignore
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
1 |
+
node_modules
|
2 |
+
.monitor
|
web/node_modules/after/.travis.yml
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
language: node_js
|
2 |
+
node_js:
|
3 |
+
- 0.6
|
4 |
+
- 0.8
|
5 |
+
- 0.9
|
6 |
+
- 0.10
|
7 |
+
- 0.12
|
8 |
+
- 4.2.4
|
9 |
+
- 5.4.1
|
10 |
+
- iojs-1
|
11 |
+
- iojs-2
|
12 |
+
- iojs-3
|
web/node_modules/after/LICENCE
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Copyright (c) 2011 Raynos.
|
2 |
+
|
3 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4 |
+
of this software and associated documentation files (the "Software"), to deal
|
5 |
+
in the Software without restriction, including without limitation the rights
|
6 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7 |
+
copies of the Software, and to permit persons to whom the Software is
|
8 |
+
furnished to do so, subject to the following conditions:
|
9 |
+
|
10 |
+
The above copyright notice and this permission notice shall be included in
|
11 |
+
all copies or substantial portions of the Software.
|
12 |
+
|
13 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19 |
+
THE SOFTWARE.
|
web/node_modules/after/README.md
ADDED
@@ -0,0 +1,115 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# After [![Build Status][1]][2]
|
2 |
+
|
3 |
+
Invoke callback after n calls
|
4 |
+
|
5 |
+
## Status: production ready
|
6 |
+
|
7 |
+
## Example
|
8 |
+
|
9 |
+
```js
|
10 |
+
var after = require("after")
|
11 |
+
var db = require("./db") // some db.
|
12 |
+
|
13 |
+
var updateUser = function (req, res) {
|
14 |
+
// use after to run two tasks in parallel,
|
15 |
+
// namely get request body and get session
|
16 |
+
// then run updateUser with the results
|
17 |
+
var next = after(2, updateUser)
|
18 |
+
var results = {}
|
19 |
+
|
20 |
+
getJSONBody(req, res, function (err, body) {
|
21 |
+
if (err) return next(err)
|
22 |
+
|
23 |
+
results.body = body
|
24 |
+
next(null, results)
|
25 |
+
})
|
26 |
+
|
27 |
+
getSessionUser(req, res, function (err, user) {
|
28 |
+
if (err) return next(err)
|
29 |
+
|
30 |
+
results.user = user
|
31 |
+
next(null, results)
|
32 |
+
})
|
33 |
+
|
34 |
+
// now do the thing!
|
35 |
+
function updateUser(err, result) {
|
36 |
+
if (err) {
|
37 |
+
res.statusCode = 500
|
38 |
+
return res.end("Unexpected Error")
|
39 |
+
}
|
40 |
+
|
41 |
+
if (!result.user || result.user.role !== "admin") {
|
42 |
+
res.statusCode = 403
|
43 |
+
return res.end("Permission Denied")
|
44 |
+
}
|
45 |
+
|
46 |
+
db.put("users:" + req.params.userId, result.body, function (err) {
|
47 |
+
if (err) {
|
48 |
+
res.statusCode = 500
|
49 |
+
return res.end("Unexpected Error")
|
50 |
+
}
|
51 |
+
|
52 |
+
res.statusCode = 200
|
53 |
+
res.end("Ok")
|
54 |
+
})
|
55 |
+
}
|
56 |
+
}
|
57 |
+
```
|
58 |
+
|
59 |
+
## Naive Example
|
60 |
+
|
61 |
+
```js
|
62 |
+
var after = require("after")
|
63 |
+
, next = after(3, logItWorks)
|
64 |
+
|
65 |
+
next()
|
66 |
+
next()
|
67 |
+
next() // it works
|
68 |
+
|
69 |
+
function logItWorks() {
|
70 |
+
console.log("it works!")
|
71 |
+
}
|
72 |
+
```
|
73 |
+
|
74 |
+
## Example with error handling
|
75 |
+
|
76 |
+
```js
|
77 |
+
var after = require("after")
|
78 |
+
, next = after(3, logError)
|
79 |
+
|
80 |
+
next()
|
81 |
+
next(new Error("oops")) // logs oops
|
82 |
+
next() // does nothing
|
83 |
+
|
84 |
+
// This callback is only called once.
|
85 |
+
// If there is an error the callback gets called immediately
|
86 |
+
// this avoids the situation where errors get lost.
|
87 |
+
function logError(err) {
|
88 |
+
console.log(err)
|
89 |
+
}
|
90 |
+
```
|
91 |
+
|
92 |
+
## Installation
|
93 |
+
|
94 |
+
`npm install after`
|
95 |
+
|
96 |
+
## Tests
|
97 |
+
|
98 |
+
`npm test`
|
99 |
+
|
100 |
+
## Contributors
|
101 |
+
|
102 |
+
- Raynos
|
103 |
+
- defunctzombie
|
104 |
+
|
105 |
+
## MIT Licenced
|
106 |
+
|
107 |
+
[1]: https://secure.travis-ci.org/Raynos/after.png
|
108 |
+
[2]: http://travis-ci.org/Raynos/after
|
109 |
+
[3]: http://raynos.org/blog/2/Flow-control-in-node.js
|
110 |
+
[4]: http://stackoverflow.com/questions/6852059/determining-the-end-of-asynchronous-operations-javascript/6852307#6852307
|
111 |
+
[5]: http://stackoverflow.com/questions/6869872/in-javascript-what-are-best-practices-for-executing-multiple-asynchronous-functi/6870031#6870031
|
112 |
+
[6]: http://stackoverflow.com/questions/6864397/javascript-performance-long-running-tasks/6889419#6889419
|
113 |
+
[7]: http://stackoverflow.com/questions/6597493/synchronous-database-queries-with-node-js/6620091#6620091
|
114 |
+
[8]: http://github.com/Raynos/iterators
|
115 |
+
[9]: http://github.com/Raynos/composite
|
web/node_modules/after/index.js
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
module.exports = after
|
2 |
+
|
3 |
+
function after(count, callback, err_cb) {
|
4 |
+
var bail = false
|
5 |
+
err_cb = err_cb || noop
|
6 |
+
proxy.count = count
|
7 |
+
|
8 |
+
return (count === 0) ? callback() : proxy
|
9 |
+
|
10 |
+
function proxy(err, result) {
|
11 |
+
if (proxy.count <= 0) {
|
12 |
+
throw new Error('after called too many times')
|
13 |
+
}
|
14 |
+
--proxy.count
|
15 |
+
|
16 |
+
// after first error, rest are passed to err_cb
|
17 |
+
if (err) {
|
18 |
+
bail = true
|
19 |
+
callback(err)
|
20 |
+
// future error callbacks will go to error handler
|
21 |
+
callback = err_cb
|
22 |
+
} else if (proxy.count === 0 && !bail) {
|
23 |
+
callback(null, result)
|
24 |
+
}
|
25 |
+
}
|
26 |
+
}
|
27 |
+
|
28 |
+
function noop() {}
|
web/node_modules/after/package.json
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"name": "after",
|
3 |
+
"description": "after - tiny flow control",
|
4 |
+
"version": "0.8.2",
|
5 |
+
"author": "Raynos <[email protected]>",
|
6 |
+
"contributors": [
|
7 |
+
{
|
8 |
+
"name": "Raynos",
|
9 |
+
"email": "[email protected]",
|
10 |
+
"url": "http://raynos.org"
|
11 |
+
}
|
12 |
+
],
|
13 |
+
"scripts": {
|
14 |
+
"test": "mocha --ui tdd --reporter spec test/*.js"
|
15 |
+
},
|
16 |
+
"devDependencies": {
|
17 |
+
"mocha": "~1.8.1"
|
18 |
+
},
|
19 |
+
"keywords": [
|
20 |
+
"flowcontrol",
|
21 |
+
"after",
|
22 |
+
"flow",
|
23 |
+
"control",
|
24 |
+
"arch"
|
25 |
+
],
|
26 |
+
"license": "MIT",
|
27 |
+
"repository": "git://github.com/Raynos/after.git"
|
28 |
+
|
29 |
+
,"_resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz"
|
30 |
+
,"_integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8="
|
31 |
+
,"_from": "[email protected]"
|
32 |
+
}
|
web/node_modules/after/test/after-test.js
ADDED
@@ -0,0 +1,120 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*global suite, test*/
|
2 |
+
|
3 |
+
var assert = require("assert")
|
4 |
+
, after = require("../")
|
5 |
+
|
6 |
+
test("exists", function () {
|
7 |
+
assert(typeof after === "function", "after is not a function")
|
8 |
+
})
|
9 |
+
|
10 |
+
test("after when called with 0 invokes", function (done) {
|
11 |
+
after(0, done)
|
12 |
+
});
|
13 |
+
|
14 |
+
test("after 1", function (done) {
|
15 |
+
var next = after(1, done)
|
16 |
+
next()
|
17 |
+
})
|
18 |
+
|
19 |
+
test("after 5", function (done) {
|
20 |
+
var next = after(5, done)
|
21 |
+
, i = 5
|
22 |
+
|
23 |
+
while (i--) {
|
24 |
+
next()
|
25 |
+
}
|
26 |
+
})
|
27 |
+
|
28 |
+
test("manipulate count", function (done) {
|
29 |
+
var next = after(1, done)
|
30 |
+
, i = 5
|
31 |
+
|
32 |
+
next.count = i
|
33 |
+
while (i--) {
|
34 |
+
next()
|
35 |
+
}
|
36 |
+
})
|
37 |
+
|
38 |
+
test("after terminates on error", function (done) {
|
39 |
+
var next = after(2, function(err) {
|
40 |
+
assert.equal(err.message, 'test');
|
41 |
+
done();
|
42 |
+
})
|
43 |
+
next(new Error('test'))
|
44 |
+
next(new Error('test2'))
|
45 |
+
})
|
46 |
+
|
47 |
+
test('gee', function(done) {
|
48 |
+
done = after(2, done)
|
49 |
+
|
50 |
+
function cb(err) {
|
51 |
+
assert.equal(err.message, 1);
|
52 |
+
done()
|
53 |
+
}
|
54 |
+
|
55 |
+
var next = after(3, cb, function(err) {
|
56 |
+
assert.equal(err.message, 2)
|
57 |
+
done()
|
58 |
+
});
|
59 |
+
|
60 |
+
next()
|
61 |
+
next(new Error(1))
|
62 |
+
next(new Error(2))
|
63 |
+
})
|
64 |
+
|
65 |
+
test('eee', function(done) {
|
66 |
+
done = after(3, done)
|
67 |
+
|
68 |
+
function cb(err) {
|
69 |
+
assert.equal(err.message, 1);
|
70 |
+
done()
|
71 |
+
}
|
72 |
+
|
73 |
+
var next = after(3, cb, function(err) {
|
74 |
+
assert.equal(err.message, 2)
|
75 |
+
done()
|
76 |
+
});
|
77 |
+
|
78 |
+
next(new Error(1))
|
79 |
+
next(new Error(2))
|
80 |
+
next(new Error(2))
|
81 |
+
})
|
82 |
+
|
83 |
+
test('gge', function(done) {
|
84 |
+
function cb(err) {
|
85 |
+
assert.equal(err.message, 1);
|
86 |
+
done()
|
87 |
+
}
|
88 |
+
|
89 |
+
var next = after(3, cb, function(err) {
|
90 |
+
// should not happen
|
91 |
+
assert.ok(false);
|
92 |
+
});
|
93 |
+
|
94 |
+
next()
|
95 |
+
next()
|
96 |
+
next(new Error(1))
|
97 |
+
})
|
98 |
+
|
99 |
+
test('egg', function(done) {
|
100 |
+
function cb(err) {
|
101 |
+
assert.equal(err.message, 1);
|
102 |
+
done()
|
103 |
+
}
|
104 |
+
|
105 |
+
var next = after(3, cb, function(err) {
|
106 |
+
// should not happen
|
107 |
+
assert.ok(false);
|
108 |
+
});
|
109 |
+
|
110 |
+
next(new Error(1))
|
111 |
+
next()
|
112 |
+
next()
|
113 |
+
})
|
114 |
+
|
115 |
+
test('throws on too many calls', function(done) {
|
116 |
+
var next = after(1, done);
|
117 |
+
next()
|
118 |
+
assert.throws(next, /after called too many times/);
|
119 |
+
});
|
120 |
+
|
web/node_modules/arraybuffer.slice/.npmignore
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
lib-cov
|
2 |
+
lcov.info
|
3 |
+
*.seed
|
4 |
+
*.log
|
5 |
+
*.csv
|
6 |
+
*.dat
|
7 |
+
*.out
|
8 |
+
*.pid
|
9 |
+
*.gz
|
10 |
+
|
11 |
+
pids
|
12 |
+
logs
|
13 |
+
results
|
14 |
+
build
|
15 |
+
.grunt
|
16 |
+
|
17 |
+
node_modules
|
web/node_modules/arraybuffer.slice/LICENCE
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Copyright (C) 2013 Rase-
|
2 |
+
|
3 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
4 |
+
this software and associated documentation files (the "Software"), to deal in
|
5 |
+
the Software without restriction, including without limitation the rights to
|
6 |
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
7 |
+
of the Software, and to permit persons to whom the Software is furnished to do
|
8 |
+
so, subject to the following conditions:
|
9 |
+
|
10 |
+
The above copyright notice and this permission notice shall be included in all
|
11 |
+
copies or substantial portions of the Software.
|
12 |
+
|
13 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
15 |
+
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
16 |
+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
17 |
+
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
18 |
+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
web/node_modules/arraybuffer.slice/Makefile
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
REPORTER = dot
|
3 |
+
|
4 |
+
test:
|
5 |
+
@./node_modules/.bin/mocha \
|
6 |
+
--reporter $(REPORTER)
|
7 |
+
|
8 |
+
.PHONY: test
|
web/node_modules/arraybuffer.slice/README.md
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# How to
|
2 |
+
```javascript
|
3 |
+
var sliceBuffer = require('arraybuffer.slice');
|
4 |
+
var ab = (new Int8Array(5)).buffer;
|
5 |
+
var sliced = sliceBuffer(ab, 1, 3);
|
6 |
+
sliced = sliceBuffer(ab, 1);
|
7 |
+
```
|
8 |
+
|
9 |
+
# Licence (MIT)
|
10 |
+
Copyright (C) 2013 Rase-
|
11 |
+
|
12 |
+
|
13 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
14 |
+
|
15 |
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
16 |
+
|
17 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
web/node_modules/arraybuffer.slice/index.js
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* An abstraction for slicing an arraybuffer even when
|
3 |
+
* ArrayBuffer.prototype.slice is not supported
|
4 |
+
*
|
5 |
+
* @api public
|
6 |
+
*/
|
7 |
+
|
8 |
+
module.exports = function(arraybuffer, start, end) {
|
9 |
+
var bytes = arraybuffer.byteLength;
|
10 |
+
start = start || 0;
|
11 |
+
end = end || bytes;
|
12 |
+
|
13 |
+
if (arraybuffer.slice) { return arraybuffer.slice(start, end); }
|
14 |
+
|
15 |
+
if (start < 0) { start += bytes; }
|
16 |
+
if (end < 0) { end += bytes; }
|
17 |
+
if (end > bytes) { end = bytes; }
|
18 |
+
|
19 |
+
if (start >= bytes || start >= end || bytes === 0) {
|
20 |
+
return new ArrayBuffer(0);
|
21 |
+
}
|
22 |
+
|
23 |
+
var abv = new Uint8Array(arraybuffer);
|
24 |
+
var result = new Uint8Array(end - start);
|
25 |
+
for (var i = start, ii = 0; i < end; i++, ii++) {
|
26 |
+
result[ii] = abv[i];
|
27 |
+
}
|
28 |
+
return result.buffer;
|
29 |
+
};
|
web/node_modules/arraybuffer.slice/package.json
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"name": "arraybuffer.slice",
|
3 |
+
"description": "Exports a function for slicing ArrayBuffers (no polyfilling)",
|
4 |
+
"version": "0.0.7",
|
5 |
+
"license": "MIT",
|
6 |
+
"homepage": "https://github.com/rase-/arraybuffer.slice",
|
7 |
+
"dependencies": {},
|
8 |
+
"devDependencies": {
|
9 |
+
"mocha": "1.17.1",
|
10 |
+
"expect.js": "0.2.0"
|
11 |
+
},
|
12 |
+
"repository": {
|
13 |
+
"type": "git",
|
14 |
+
"url": "[email protected]:rase-/arraybuffer.slice.git"
|
15 |
+
}
|
16 |
+
|
17 |
+
,"_resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz"
|
18 |
+
,"_integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog=="
|
19 |
+
,"_from": "[email protected]"
|
20 |
+
}
|
web/node_modules/arraybuffer.slice/test/slice-buffer.js
ADDED
@@ -0,0 +1,227 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* Test dependencies
|
3 |
+
*/
|
4 |
+
|
5 |
+
var sliceBuffer = require('../index.js');
|
6 |
+
var expect = require('expect.js');
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Tests
|
10 |
+
*/
|
11 |
+
|
12 |
+
describe('sliceBuffer', function() {
|
13 |
+
describe('using standard slice', function() {
|
14 |
+
it('should slice correctly with only start provided', function() {
|
15 |
+
var abv = new Uint8Array(10);
|
16 |
+
for (var i = 0; i < abv.length; i++) {
|
17 |
+
abv[i] = i;
|
18 |
+
}
|
19 |
+
|
20 |
+
var sliced = sliceBuffer(abv.buffer, 3);
|
21 |
+
var sabv = new Uint8Array(sliced);
|
22 |
+
for (var i = 3, ii = 0; i < abv.length; i++, ii++) {
|
23 |
+
expect(abv[i]).to.equal(sabv[ii]);
|
24 |
+
}
|
25 |
+
});
|
26 |
+
|
27 |
+
it('should slice correctly with start and end provided', function() {
|
28 |
+
var abv = new Uint8Array(10);
|
29 |
+
for (var i = 0; i < abv.length; i++) {
|
30 |
+
abv[i] = i;
|
31 |
+
}
|
32 |
+
|
33 |
+
var sliced = sliceBuffer(abv.buffer, 3, 8);
|
34 |
+
var sabv = new Uint8Array(sliced);
|
35 |
+
for (var i = 3, ii = 0; i < 8; i++, ii++) {
|
36 |
+
expect(abv[i]).to.equal(sabv[ii]);
|
37 |
+
}
|
38 |
+
});
|
39 |
+
|
40 |
+
it('should slice correctly with negative start', function() {
|
41 |
+
var abv = new Uint8Array(10);
|
42 |
+
for (var i = 0; i < abv.length; i++) {
|
43 |
+
abv[i] = i;
|
44 |
+
}
|
45 |
+
|
46 |
+
var sliced = sliceBuffer(abv.buffer, -3);
|
47 |
+
var sabv = new Uint8Array(sliced);
|
48 |
+
for (var i = abv.length - 3, ii = 0; i < abv.length; i++, ii++) {
|
49 |
+
expect(abv[i]).to.equal(sabv[ii]);
|
50 |
+
}
|
51 |
+
});
|
52 |
+
|
53 |
+
it('should slice correctly with negative end', function() {
|
54 |
+
var abv = new Uint8Array(10);
|
55 |
+
for (var i = 0; i < abv.length; i++) {
|
56 |
+
abv[i] = i;
|
57 |
+
}
|
58 |
+
|
59 |
+
var sliced = sliceBuffer(abv.buffer, 0, -3);
|
60 |
+
var sabv = new Uint8Array(sliced);
|
61 |
+
for (var i = 0, ii = 0; i < abv.length - 3; i++, ii++) {
|
62 |
+
expect(abv[i]).to.equal(sabv[ii]);
|
63 |
+
}
|
64 |
+
});
|
65 |
+
|
66 |
+
it('should slice correctly with negative start and end', function() {
|
67 |
+
var abv = new Uint8Array(10);
|
68 |
+
for (var i = 0; i < abv.length; i++) {
|
69 |
+
abv[i] = i;
|
70 |
+
}
|
71 |
+
|
72 |
+
var sliced = sliceBuffer(abv.buffer, -6, -3);
|
73 |
+
var sabv = new Uint8Array(sliced);
|
74 |
+
for (var i = abv.length - 6, ii = 0; i < abv.length - 3; i++, ii++) {
|
75 |
+
expect(abv[i]).to.equal(sabv[ii]);
|
76 |
+
}
|
77 |
+
});
|
78 |
+
|
79 |
+
it('should slice correctly with equal start and end', function() {
|
80 |
+
var abv = new Uint8Array(10);
|
81 |
+
for (var i = 0; i < abv.length; i++) {
|
82 |
+
abv[i] = i;
|
83 |
+
}
|
84 |
+
|
85 |
+
var sliced = sliceBuffer(abv.buffer, 1, 1);
|
86 |
+
expect(sliced.byteLength).to.equal(0);
|
87 |
+
});
|
88 |
+
|
89 |
+
it('should slice correctly when end larger than buffer', function() {
|
90 |
+
var abv = new Uint8Array(10);
|
91 |
+
for (var i = 0; i < abv.length; i++) {
|
92 |
+
abv[i] = i;
|
93 |
+
}
|
94 |
+
|
95 |
+
var sliced = sliceBuffer(abv.buffer, 0, 100);
|
96 |
+
expect(new Uint8Array(sliced)).to.eql(abv);
|
97 |
+
});
|
98 |
+
|
99 |
+
it('shoud slice correctly when start larger than end', function() {
|
100 |
+
var abv = new Uint8Array(10);
|
101 |
+
for (var i = 0; i < abv.length; i++) {
|
102 |
+
abv[i] = i;
|
103 |
+
}
|
104 |
+
|
105 |
+
var sliced = sliceBuffer(abv.buffer, 6, 5);
|
106 |
+
expect(sliced.byteLength).to.equal(0);
|
107 |
+
});
|
108 |
+
});
|
109 |
+
|
110 |
+
describe('using fallback', function() {
|
111 |
+
it('should slice correctly with only start provided', function() {
|
112 |
+
var abv = new Uint8Array(10);
|
113 |
+
for (var i = 0; i < abv.length; i++) {
|
114 |
+
abv[i] = i;
|
115 |
+
}
|
116 |
+
var ab = abv.buffer;
|
117 |
+
ab.slice = undefined;
|
118 |
+
|
119 |
+
var sliced = sliceBuffer(ab, 3);
|
120 |
+
var sabv = new Uint8Array(sliced);
|
121 |
+
for (var i = 3, ii = 0; i < abv.length; i++, ii++) {
|
122 |
+
expect(abv[i]).to.equal(sabv[ii]);
|
123 |
+
}
|
124 |
+
});
|
125 |
+
|
126 |
+
it('should slice correctly with start and end provided', function() {
|
127 |
+
var abv = new Uint8Array(10);
|
128 |
+
for (var i = 0; i < abv.length; i++) {
|
129 |
+
abv[i] = i;
|
130 |
+
}
|
131 |
+
var ab = abv.buffer;
|
132 |
+
ab.slice = undefined;
|
133 |
+
|
134 |
+
|
135 |
+
var sliced = sliceBuffer(ab, 3, 8);
|
136 |
+
var sabv = new Uint8Array(sliced);
|
137 |
+
for (var i = 3, ii = 0; i < 8; i++, ii++) {
|
138 |
+
expect(abv[i]).to.equal(sabv[ii]);
|
139 |
+
}
|
140 |
+
});
|
141 |
+
|
142 |
+
it('should slice correctly with negative start', function() {
|
143 |
+
var abv = new Uint8Array(10);
|
144 |
+
for (var i = 0; i < abv.length; i++) {
|
145 |
+
abv[i] = i;
|
146 |
+
}
|
147 |
+
var ab = abv.buffer;
|
148 |
+
ab.slice = undefined;
|
149 |
+
|
150 |
+
|
151 |
+
var sliced = sliceBuffer(ab, -3);
|
152 |
+
var sabv = new Uint8Array(sliced);
|
153 |
+
for (var i = abv.length - 3, ii = 0; i < abv.length; i++, ii++) {
|
154 |
+
expect(abv[i]).to.equal(sabv[ii]);
|
155 |
+
}
|
156 |
+
});
|
157 |
+
|
158 |
+
it('should slice correctly with negative end', function() {
|
159 |
+
var abv = new Uint8Array(10);
|
160 |
+
for (var i = 0; i < abv.length; i++) {
|
161 |
+
abv[i] = i;
|
162 |
+
}
|
163 |
+
var ab = abv.buffer;
|
164 |
+
ab.slice = undefined;
|
165 |
+
|
166 |
+
var sliced = sliceBuffer(ab, 0, -3);
|
167 |
+
var sabv = new Uint8Array(sliced);
|
168 |
+
for (var i = 0, ii = 0; i < abv.length - 3; i++, ii++) {
|
169 |
+
expect(abv[i]).to.equal(sabv[ii]);
|
170 |
+
}
|
171 |
+
});
|
172 |
+
|
173 |
+
it('should slice correctly with negative start and end', function() {
|
174 |
+
var abv = new Uint8Array(10);
|
175 |
+
for (var i = 0; i < abv.length; i++) {
|
176 |
+
abv[i] = i;
|
177 |
+
}
|
178 |
+
var ab = abv.buffer;
|
179 |
+
ab.slice = undefined;
|
180 |
+
|
181 |
+
var sliced = sliceBuffer(ab, -6, -3);
|
182 |
+
var sabv = new Uint8Array(sliced);
|
183 |
+
for (var i = abv.length - 6, ii = 0; i < abv.length - 3; i++, ii++) {
|
184 |
+
expect(abv[i]).to.equal(sabv[ii]);
|
185 |
+
}
|
186 |
+
});
|
187 |
+
|
188 |
+
it('should slice correctly with equal start and end', function() {
|
189 |
+
var abv = new Uint8Array(10);
|
190 |
+
for (var i = 0; i < abv.length; i++) {
|
191 |
+
abv[i] = i;
|
192 |
+
}
|
193 |
+
var ab = abv.buffer;
|
194 |
+
ab.slice = undefined;
|
195 |
+
|
196 |
+
var sliced = sliceBuffer(ab, 1, 1);
|
197 |
+
expect(sliced.byteLength).to.equal(0);
|
198 |
+
});
|
199 |
+
|
200 |
+
it('should slice correctly when end larger than buffer', function() {
|
201 |
+
var abv = new Uint8Array(10);
|
202 |
+
for (var i = 0; i < abv.length; i++) {
|
203 |
+
abv[i] = i;
|
204 |
+
}
|
205 |
+
var ab = abv.buffer;
|
206 |
+
ab.slice = undefined;
|
207 |
+
|
208 |
+
var sliced = sliceBuffer(ab, 0, 100);
|
209 |
+
var sabv = new Uint8Array(sliced);
|
210 |
+
for (var i = 0; i < abv.length; i++) {
|
211 |
+
expect(abv[i]).to.equal(sabv[i]);
|
212 |
+
}
|
213 |
+
});
|
214 |
+
|
215 |
+
it('shoud slice correctly when start larger than end', function() {
|
216 |
+
var abv = new Uint8Array(10);
|
217 |
+
for (var i = 0; i < abv.length; i++) {
|
218 |
+
abv[i] = i;
|
219 |
+
}
|
220 |
+
var ab = abv.buffer;
|
221 |
+
ab.slice = undefined;
|
222 |
+
|
223 |
+
var sliced = sliceBuffer(ab, 6, 5);
|
224 |
+
expect(sliced.byteLength).to.equal(0);
|
225 |
+
});
|
226 |
+
});
|
227 |
+
});
|
web/node_modules/async-limiter/.travis.yml
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
language: node_js
|
2 |
+
node_js:
|
3 |
+
- "6"
|
4 |
+
- "node"
|
5 |
+
script: npm run travis
|
6 |
+
cache:
|
7 |
+
yarn: true
|
web/node_modules/async-limiter/LICENSE
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
The MIT License (MIT)
|
2 |
+
Copyright (c) 2017 Samuel Reed <[email protected]>
|
3 |
+
|
4 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
5 |
+
|
6 |
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
7 |
+
|
8 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
web/node_modules/async-limiter/coverage/coverage.json
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
{"/Users/samuelreed/git/forks/async-throttle/index.js":{"path":"/Users/samuelreed/git/forks/async-throttle/index.js","s":{"1":1,"2":7,"3":1,"4":6,"5":6,"6":6,"7":6,"8":6,"9":6,"10":1,"11":1,"12":3,"13":13,"14":13,"15":13,"16":1,"17":19,"18":1,"19":45,"20":6,"21":39,"22":13,"23":13,"24":13,"25":13,"26":39,"27":18,"28":6,"29":6,"30":1,"31":6,"32":6,"33":6,"34":1,"35":13,"36":13,"37":1},"b":{"1":[1,6],"2":[6,5],"3":[6,5],"4":[6,39],"5":[13,26],"6":[18,21],"7":[6,0]},"f":{"1":7,"2":3,"3":13,"4":19,"5":45,"6":6,"7":13},"fnMap":{"1":{"name":"Queue","line":3,"loc":{"start":{"line":3,"column":0},"end":{"line":3,"column":24}}},"2":{"name":"(anonymous_2)","line":22,"loc":{"start":{"line":22,"column":24},"end":{"line":22,"column":41}}},"3":{"name":"(anonymous_3)","line":23,"loc":{"start":{"line":23,"column":28},"end":{"line":23,"column":39}}},"4":{"name":"(anonymous_4)","line":31,"loc":{"start":{"line":31,"column":7},"end":{"line":31,"column":18}}},"5":{"name":"(anonymous_5)","line":36,"loc":{"start":{"line":36,"column":23},"end":{"line":36,"column":34}}},"6":{"name":"(anonymous_6)","line":55,"loc":{"start":{"line":55,"column":25},"end":{"line":55,"column":38}}},"7":{"name":"done","line":62,"loc":{"start":{"line":62,"column":0},"end":{"line":62,"column":16}}}},"statementMap":{"1":{"start":{"line":3,"column":0},"end":{"line":14,"column":1}},"2":{"start":{"line":4,"column":2},"end":{"line":6,"column":3}},"3":{"start":{"line":5,"column":4},"end":{"line":5,"column":30}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":26}},"5":{"start":{"line":9,"column":2},"end":{"line":9,"column":53}},"6":{"start":{"line":10,"column":2},"end":{"line":10,"column":19}},"7":{"start":{"line":11,"column":2},"end":{"line":11,"column":17}},"8":{"start":{"line":12,"column":2},"end":{"line":12,"column":16}},"9":{"start":{"line":13,"column":2},"end":{"line":13,"column":31}},"10":{"start":{"line":16,"column":0},"end":{"line":20,"column":2}},"11":{"start":{"line":22,"column":0},"end":{"line":28,"column":3}},"12":{"start":{"line":23,"column":2},"end":{"line":27,"column":4}},"13":{"start":{"line":24,"column":4},"end":{"line":24,"column":75}},"14":{"start":{"line":25,"column":4},"end":{"line":25,"column":16}},"15":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"16":{"start":{"line":30,"column":0},"end":{"line":34,"column":3}},"17":{"start":{"line":32,"column":4},"end":{"line":32,"column":43}},"18":{"start":{"line":36,"column":0},"end":{"line":53,"column":2}},"19":{"start":{"line":37,"column":2},"end":{"line":39,"column":3}},"20":{"start":{"line":38,"column":4},"end":{"line":38,"column":11}},"21":{"start":{"line":40,"column":2},"end":{"line":45,"column":3}},"22":{"start":{"line":41,"column":4},"end":{"line":41,"column":32}},"23":{"start":{"line":42,"column":4},"end":{"line":42,"column":19}},"24":{"start":{"line":43,"column":4},"end":{"line":43,"column":20}},"25":{"start":{"line":44,"column":4},"end":{"line":44,"column":16}},"26":{"start":{"line":47,"column":2},"end":{"line":52,"column":3}},"27":{"start":{"line":48,"column":4},"end":{"line":51,"column":5}},"28":{"start":{"line":49,"column":6},"end":{"line":49,"column":30}},"29":{"start":{"line":50,"column":6},"end":{"line":50,"column":27}},"30":{"start":{"line":55,"column":0},"end":{"line":60,"column":2}},"31":{"start":{"line":56,"column":2},"end":{"line":59,"column":3}},"32":{"start":{"line":57,"column":4},"end":{"line":57,"column":22}},"33":{"start":{"line":58,"column":4},"end":{"line":58,"column":16}},"34":{"start":{"line":62,"column":0},"end":{"line":65,"column":1}},"35":{"start":{"line":63,"column":2},"end":{"line":63,"column":17}},"36":{"start":{"line":64,"column":2},"end":{"line":64,"column":14}},"37":{"start":{"line":67,"column":0},"end":{"line":67,"column":23}}},"branchMap":{"1":{"line":4,"type":"if","locations":[{"start":{"line":4,"column":2},"end":{"line":4,"column":2}},{"start":{"line":4,"column":2},"end":{"line":4,"column":2}}]},"2":{"line":8,"type":"binary-expr","locations":[{"start":{"line":8,"column":12},"end":{"line":8,"column":19}},{"start":{"line":8,"column":23},"end":{"line":8,"column":25}}]},"3":{"line":9,"type":"binary-expr","locations":[{"start":{"line":9,"column":21},"end":{"line":9,"column":40}},{"start":{"line":9,"column":44},"end":{"line":9,"column":52}}]},"4":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":2},"end":{"line":37,"column":2}},{"start":{"line":37,"column":2},"end":{"line":37,"column":2}}]},"5":{"line":40,"type":"if","locations":[{"start":{"line":40,"column":2},"end":{"line":40,"column":2}},{"start":{"line":40,"column":2},"end":{"line":40,"column":2}}]},"6":{"line":47,"type":"if","locations":[{"start":{"line":47,"column":2},"end":{"line":47,"column":2}},{"start":{"line":47,"column":2},"end":{"line":47,"column":2}}]},"7":{"line":56,"type":"if","locations":[{"start":{"line":56,"column":2},"end":{"line":56,"column":2}},{"start":{"line":56,"column":2},"end":{"line":56,"column":2}}]}}}}
|
web/node_modules/async-limiter/coverage/lcov-report/async-throttle/index.html
ADDED
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!doctype html>
|
2 |
+
<html lang="en">
|
3 |
+
<head>
|
4 |
+
<title>Code coverage report for async-throttle/</title>
|
5 |
+
<meta charset="utf-8">
|
6 |
+
<link rel="stylesheet" href="../prettify.css">
|
7 |
+
<link rel="stylesheet" href="../base.css">
|
8 |
+
<style type='text/css'>
|
9 |
+
div.coverage-summary .sorter {
|
10 |
+
background-image: url(../sort-arrow-sprite.png);
|
11 |
+
}
|
12 |
+
</style>
|
13 |
+
</head>
|
14 |
+
<body>
|
15 |
+
<div class="header high">
|
16 |
+
<h1>Code coverage report for <span class="entity">async-throttle/</span></h1>
|
17 |
+
<h2>
|
18 |
+
Statements: <span class="metric">100% <small>(37 / 37)</small></span>
|
19 |
+
Branches: <span class="metric">92.86% <small>(13 / 14)</small></span>
|
20 |
+
Functions: <span class="metric">100% <small>(7 / 7)</small></span>
|
21 |
+
Lines: <span class="metric">100% <small>(37 / 37)</small></span>
|
22 |
+
Ignored: <span class="metric"><span class="ignore-none">none</span></span>
|
23 |
+
</h2>
|
24 |
+
<div class="path"><a href="../index.html">All files</a> » async-throttle/</div>
|
25 |
+
</div>
|
26 |
+
<div class="body">
|
27 |
+
<div class="coverage-summary">
|
28 |
+
<table>
|
29 |
+
<thead>
|
30 |
+
<tr>
|
31 |
+
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
|
32 |
+
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
|
33 |
+
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
|
34 |
+
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
|
35 |
+
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
|
36 |
+
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
|
37 |
+
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
|
38 |
+
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
|
39 |
+
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
|
40 |
+
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
|
41 |
+
</tr>
|
42 |
+
</thead>
|
43 |
+
<tbody><tr>
|
44 |
+
<td class="file high" data-value="index.js"><a href="index.js.html">index.js</a></td>
|
45 |
+
<td data-value="100" class="pic high"><span class="cover-fill cover-full" style="width: 100px;"></span><span class="cover-empty" style="width:0px;"></span></td>
|
46 |
+
<td data-value="100" class="pct high">100%</td>
|
47 |
+
<td data-value="37" class="abs high">(37 / 37)</td>
|
48 |
+
<td data-value="92.86" class="pct high">92.86%</td>
|
49 |
+
<td data-value="14" class="abs high">(13 / 14)</td>
|
50 |
+
<td data-value="100" class="pct high">100%</td>
|
51 |
+
<td data-value="7" class="abs high">(7 / 7)</td>
|
52 |
+
<td data-value="100" class="pct high">100%</td>
|
53 |
+
<td data-value="37" class="abs high">(37 / 37)</td>
|
54 |
+
</tr>
|
55 |
+
|
56 |
+
</tbody>
|
57 |
+
</table>
|
58 |
+
</div>
|
59 |
+
</div>
|
60 |
+
<div class="footer">
|
61 |
+
<div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Sep 11 2017 11:14:14 GMT-0500 (CDT)</div>
|
62 |
+
</div>
|
63 |
+
<script src="../prettify.js"></script>
|
64 |
+
<script>
|
65 |
+
window.onload = function () {
|
66 |
+
if (typeof prettyPrint === 'function') {
|
67 |
+
prettyPrint();
|
68 |
+
}
|
69 |
+
};
|
70 |
+
</script>
|
71 |
+
<script src="../sorter.js"></script>
|
72 |
+
</body>
|
73 |
+
</html>
|
web/node_modules/async-limiter/coverage/lcov-report/async-throttle/index.js.html
ADDED
@@ -0,0 +1,246 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!doctype html>
|
2 |
+
<html lang="en">
|
3 |
+
<head>
|
4 |
+
<title>Code coverage report for async-throttle/index.js</title>
|
5 |
+
<meta charset="utf-8">
|
6 |
+
<link rel="stylesheet" href="../prettify.css">
|
7 |
+
<link rel="stylesheet" href="../base.css">
|
8 |
+
<style type='text/css'>
|
9 |
+
div.coverage-summary .sorter {
|
10 |
+
background-image: url(../sort-arrow-sprite.png);
|
11 |
+
}
|
12 |
+
</style>
|
13 |
+
</head>
|
14 |
+
<body>
|
15 |
+
<div class="header high">
|
16 |
+
<h1>Code coverage report for <span class="entity">async-throttle/index.js</span></h1>
|
17 |
+
<h2>
|
18 |
+
Statements: <span class="metric">100% <small>(37 / 37)</small></span>
|
19 |
+
Branches: <span class="metric">92.86% <small>(13 / 14)</small></span>
|
20 |
+
Functions: <span class="metric">100% <small>(7 / 7)</small></span>
|
21 |
+
Lines: <span class="metric">100% <small>(37 / 37)</small></span>
|
22 |
+
Ignored: <span class="metric"><span class="ignore-none">none</span></span>
|
23 |
+
</h2>
|
24 |
+
<div class="path"><a href="../index.html">All files</a> » <a href="index.html">async-throttle/</a> » index.js</div>
|
25 |
+
</div>
|
26 |
+
<div class="body">
|
27 |
+
<pre><table class="coverage">
|
28 |
+
<tr><td class="line-count">1
|
29 |
+
2
|
30 |
+
3
|
31 |
+
4
|
32 |
+
5
|
33 |
+
6
|
34 |
+
7
|
35 |
+
8
|
36 |
+
9
|
37 |
+
10
|
38 |
+
11
|
39 |
+
12
|
40 |
+
13
|
41 |
+
14
|
42 |
+
15
|
43 |
+
16
|
44 |
+
17
|
45 |
+
18
|
46 |
+
19
|
47 |
+
20
|
48 |
+
21
|
49 |
+
22
|
50 |
+
23
|
51 |
+
24
|
52 |
+
25
|
53 |
+
26
|
54 |
+
27
|
55 |
+
28
|
56 |
+
29
|
57 |
+
30
|
58 |
+
31
|
59 |
+
32
|
60 |
+
33
|
61 |
+
34
|
62 |
+
35
|
63 |
+
36
|
64 |
+
37
|
65 |
+
38
|
66 |
+
39
|
67 |
+
40
|
68 |
+
41
|
69 |
+
42
|
70 |
+
43
|
71 |
+
44
|
72 |
+
45
|
73 |
+
46
|
74 |
+
47
|
75 |
+
48
|
76 |
+
49
|
77 |
+
50
|
78 |
+
51
|
79 |
+
52
|
80 |
+
53
|
81 |
+
54
|
82 |
+
55
|
83 |
+
56
|
84 |
+
57
|
85 |
+
58
|
86 |
+
59
|
87 |
+
60
|
88 |
+
61
|
89 |
+
62
|
90 |
+
63
|
91 |
+
64
|
92 |
+
65
|
93 |
+
66
|
94 |
+
67
|
95 |
+
68</td><td class="line-coverage"><span class="cline-any cline-neutral"> </span>
|
96 |
+
<span class="cline-any cline-neutral"> </span>
|
97 |
+
<span class="cline-any cline-yes">1</span>
|
98 |
+
<span class="cline-any cline-yes">7</span>
|
99 |
+
<span class="cline-any cline-yes">1</span>
|
100 |
+
<span class="cline-any cline-neutral"> </span>
|
101 |
+
<span class="cline-any cline-neutral"> </span>
|
102 |
+
<span class="cline-any cline-yes">6</span>
|
103 |
+
<span class="cline-any cline-yes">6</span>
|
104 |
+
<span class="cline-any cline-yes">6</span>
|
105 |
+
<span class="cline-any cline-yes">6</span>
|
106 |
+
<span class="cline-any cline-yes">6</span>
|
107 |
+
<span class="cline-any cline-yes">6</span>
|
108 |
+
<span class="cline-any cline-neutral"> </span>
|
109 |
+
<span class="cline-any cline-neutral"> </span>
|
110 |
+
<span class="cline-any cline-yes">1</span>
|
111 |
+
<span class="cline-any cline-neutral"> </span>
|
112 |
+
<span class="cline-any cline-neutral"> </span>
|
113 |
+
<span class="cline-any cline-neutral"> </span>
|
114 |
+
<span class="cline-any cline-neutral"> </span>
|
115 |
+
<span class="cline-any cline-neutral"> </span>
|
116 |
+
<span class="cline-any cline-yes">1</span>
|
117 |
+
<span class="cline-any cline-yes">3</span>
|
118 |
+
<span class="cline-any cline-yes">13</span>
|
119 |
+
<span class="cline-any cline-yes">13</span>
|
120 |
+
<span class="cline-any cline-yes">13</span>
|
121 |
+
<span class="cline-any cline-neutral"> </span>
|
122 |
+
<span class="cline-any cline-neutral"> </span>
|
123 |
+
<span class="cline-any cline-neutral"> </span>
|
124 |
+
<span class="cline-any cline-yes">1</span>
|
125 |
+
<span class="cline-any cline-neutral"> </span>
|
126 |
+
<span class="cline-any cline-yes">19</span>
|
127 |
+
<span class="cline-any cline-neutral"> </span>
|
128 |
+
<span class="cline-any cline-neutral"> </span>
|
129 |
+
<span class="cline-any cline-neutral"> </span>
|
130 |
+
<span class="cline-any cline-yes">1</span>
|
131 |
+
<span class="cline-any cline-yes">45</span>
|
132 |
+
<span class="cline-any cline-yes">6</span>
|
133 |
+
<span class="cline-any cline-neutral"> </span>
|
134 |
+
<span class="cline-any cline-yes">39</span>
|
135 |
+
<span class="cline-any cline-yes">13</span>
|
136 |
+
<span class="cline-any cline-yes">13</span>
|
137 |
+
<span class="cline-any cline-yes">13</span>
|
138 |
+
<span class="cline-any cline-yes">13</span>
|
139 |
+
<span class="cline-any cline-neutral"> </span>
|
140 |
+
<span class="cline-any cline-neutral"> </span>
|
141 |
+
<span class="cline-any cline-yes">39</span>
|
142 |
+
<span class="cline-any cline-yes">18</span>
|
143 |
+
<span class="cline-any cline-yes">6</span>
|
144 |
+
<span class="cline-any cline-yes">6</span>
|
145 |
+
<span class="cline-any cline-neutral"> </span>
|
146 |
+
<span class="cline-any cline-neutral"> </span>
|
147 |
+
<span class="cline-any cline-neutral"> </span>
|
148 |
+
<span class="cline-any cline-neutral"> </span>
|
149 |
+
<span class="cline-any cline-yes">1</span>
|
150 |
+
<span class="cline-any cline-yes">6</span>
|
151 |
+
<span class="cline-any cline-yes">6</span>
|
152 |
+
<span class="cline-any cline-yes">6</span>
|
153 |
+
<span class="cline-any cline-neutral"> </span>
|
154 |
+
<span class="cline-any cline-neutral"> </span>
|
155 |
+
<span class="cline-any cline-neutral"> </span>
|
156 |
+
<span class="cline-any cline-yes">1</span>
|
157 |
+
<span class="cline-any cline-yes">13</span>
|
158 |
+
<span class="cline-any cline-yes">13</span>
|
159 |
+
<span class="cline-any cline-neutral"> </span>
|
160 |
+
<span class="cline-any cline-neutral"> </span>
|
161 |
+
<span class="cline-any cline-yes">1</span>
|
162 |
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">'use strict';
|
163 |
+
|
164 |
+
function Queue(options) {
|
165 |
+
if (!(this instanceof Queue)) {
|
166 |
+
return new Queue(options);
|
167 |
+
}
|
168 |
+
|
169 |
+
options = options || {};
|
170 |
+
this.concurrency = options.concurrency || Infinity;
|
171 |
+
this.pending = 0;
|
172 |
+
this.jobs = [];
|
173 |
+
this.cbs = [];
|
174 |
+
this._done = done.bind(this);
|
175 |
+
}
|
176 |
+
|
177 |
+
var arrayAddMethods = [
|
178 |
+
'push',
|
179 |
+
'unshift',
|
180 |
+
'splice'
|
181 |
+
];
|
182 |
+
|
183 |
+
arrayAddMethods.forEach(function(method) {
|
184 |
+
Queue.prototype[method] = function() {
|
185 |
+
var methodResult = Array.prototype[method].apply(this.jobs, arguments);
|
186 |
+
this._run();
|
187 |
+
return methodResult;
|
188 |
+
};
|
189 |
+
});
|
190 |
+
|
191 |
+
Object.defineProperty(Queue.prototype, 'length', {
|
192 |
+
get: function() {
|
193 |
+
return this.pending + this.jobs.length;
|
194 |
+
}
|
195 |
+
});
|
196 |
+
|
197 |
+
Queue.prototype._run = function() {
|
198 |
+
if (this.pending === this.concurrency) {
|
199 |
+
return;
|
200 |
+
}
|
201 |
+
if (this.jobs.length) {
|
202 |
+
var job = this.jobs.shift();
|
203 |
+
this.pending++;
|
204 |
+
job(this._done);
|
205 |
+
this._run();
|
206 |
+
}
|
207 |
+
|
208 |
+
if (this.pending === 0) {
|
209 |
+
while (this.cbs.length !== 0) {
|
210 |
+
var cb = this.cbs.pop();
|
211 |
+
process.nextTick(cb);
|
212 |
+
}
|
213 |
+
}
|
214 |
+
};
|
215 |
+
|
216 |
+
Queue.prototype.onDone = function(cb) {
|
217 |
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (typeof cb === 'function') {
|
218 |
+
this.cbs.push(cb);
|
219 |
+
this._run();
|
220 |
+
}
|
221 |
+
};
|
222 |
+
|
223 |
+
function done() {
|
224 |
+
this.pending--;
|
225 |
+
this._run();
|
226 |
+
}
|
227 |
+
|
228 |
+
module.exports = Queue;
|
229 |
+
</pre></td></tr>
|
230 |
+
</table></pre>
|
231 |
+
|
232 |
+
</div>
|
233 |
+
<div class="footer">
|
234 |
+
<div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Sep 11 2017 11:14:14 GMT-0500 (CDT)</div>
|
235 |
+
</div>
|
236 |
+
<script src="../prettify.js"></script>
|
237 |
+
<script>
|
238 |
+
window.onload = function () {
|
239 |
+
if (typeof prettyPrint === 'function') {
|
240 |
+
prettyPrint();
|
241 |
+
}
|
242 |
+
};
|
243 |
+
</script>
|
244 |
+
<script src="../sorter.js"></script>
|
245 |
+
</body>
|
246 |
+
</html>
|
web/node_modules/async-limiter/coverage/lcov-report/base.css
ADDED
@@ -0,0 +1,182 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
body, html {
|
2 |
+
margin:0; padding: 0;
|
3 |
+
}
|
4 |
+
body {
|
5 |
+
font-family: Helvetica Neue, Helvetica,Arial;
|
6 |
+
font-size: 10pt;
|
7 |
+
}
|
8 |
+
div.header, div.footer {
|
9 |
+
background: #eee;
|
10 |
+
padding: 1em;
|
11 |
+
}
|
12 |
+
div.header {
|
13 |
+
z-index: 100;
|
14 |
+
position: fixed;
|
15 |
+
top: 0;
|
16 |
+
border-bottom: 1px solid #666;
|
17 |
+
width: 100%;
|
18 |
+
}
|
19 |
+
div.footer {
|
20 |
+
border-top: 1px solid #666;
|
21 |
+
}
|
22 |
+
div.body {
|
23 |
+
margin-top: 10em;
|
24 |
+
}
|
25 |
+
div.meta {
|
26 |
+
font-size: 90%;
|
27 |
+
text-align: center;
|
28 |
+
}
|
29 |
+
h1, h2, h3 {
|
30 |
+
font-weight: normal;
|
31 |
+
}
|
32 |
+
h1 {
|
33 |
+
font-size: 12pt;
|
34 |
+
}
|
35 |
+
h2 {
|
36 |
+
font-size: 10pt;
|
37 |
+
}
|
38 |
+
pre {
|
39 |
+
font-family: Consolas, Menlo, Monaco, monospace;
|
40 |
+
margin: 0;
|
41 |
+
padding: 0;
|
42 |
+
line-height: 1.3;
|
43 |
+
font-size: 14px;
|
44 |
+
-moz-tab-size: 2;
|
45 |
+
-o-tab-size: 2;
|
46 |
+
tab-size: 2;
|
47 |
+
}
|
48 |
+
|
49 |
+
div.path { font-size: 110%; }
|
50 |
+
div.path a:link, div.path a:visited { color: #000; }
|
51 |
+
table.coverage { border-collapse: collapse; margin:0; padding: 0 }
|
52 |
+
|
53 |
+
table.coverage td {
|
54 |
+
margin: 0;
|
55 |
+
padding: 0;
|
56 |
+
color: #111;
|
57 |
+
vertical-align: top;
|
58 |
+
}
|
59 |
+
table.coverage td.line-count {
|
60 |
+
width: 50px;
|
61 |
+
text-align: right;
|
62 |
+
padding-right: 5px;
|
63 |
+
}
|
64 |
+
table.coverage td.line-coverage {
|
65 |
+
color: #777 !important;
|
66 |
+
text-align: right;
|
67 |
+
border-left: 1px solid #666;
|
68 |
+
border-right: 1px solid #666;
|
69 |
+
}
|
70 |
+
|
71 |
+
table.coverage td.text {
|
72 |
+
}
|
73 |
+
|
74 |
+
table.coverage td span.cline-any {
|
75 |
+
display: inline-block;
|
76 |
+
padding: 0 5px;
|
77 |
+
width: 40px;
|
78 |
+
}
|
79 |
+
table.coverage td span.cline-neutral {
|
80 |
+
background: #eee;
|
81 |
+
}
|
82 |
+
table.coverage td span.cline-yes {
|
83 |
+
background: #b5d592;
|
84 |
+
color: #999;
|
85 |
+
}
|
86 |
+
table.coverage td span.cline-no {
|
87 |
+
background: #fc8c84;
|
88 |
+
}
|
89 |
+
|
90 |
+
.cstat-yes { color: #111; }
|
91 |
+
.cstat-no { background: #fc8c84; color: #111; }
|
92 |
+
.fstat-no { background: #ffc520; color: #111 !important; }
|
93 |
+
.cbranch-no { background: yellow !important; color: #111; }
|
94 |
+
|
95 |
+
.cstat-skip { background: #ddd; color: #111; }
|
96 |
+
.fstat-skip { background: #ddd; color: #111 !important; }
|
97 |
+
.cbranch-skip { background: #ddd !important; color: #111; }
|
98 |
+
|
99 |
+
.missing-if-branch {
|
100 |
+
display: inline-block;
|
101 |
+
margin-right: 10px;
|
102 |
+
position: relative;
|
103 |
+
padding: 0 4px;
|
104 |
+
background: black;
|
105 |
+
color: yellow;
|
106 |
+
}
|
107 |
+
|
108 |
+
.skip-if-branch {
|
109 |
+
display: none;
|
110 |
+
margin-right: 10px;
|
111 |
+
position: relative;
|
112 |
+
padding: 0 4px;
|
113 |
+
background: #ccc;
|
114 |
+
color: white;
|
115 |
+
}
|
116 |
+
|
117 |
+
.missing-if-branch .typ, .skip-if-branch .typ {
|
118 |
+
color: inherit !important;
|
119 |
+
}
|
120 |
+
|
121 |
+
.entity, .metric { font-weight: bold; }
|
122 |
+
.metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
|
123 |
+
.metric small { font-size: 80%; font-weight: normal; color: #666; }
|
124 |
+
|
125 |
+
div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
|
126 |
+
div.coverage-summary td, div.coverage-summary table th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
|
127 |
+
div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
|
128 |
+
div.coverage-summary th.file { border-right: none !important; }
|
129 |
+
div.coverage-summary th.pic { border-left: none !important; text-align: right; }
|
130 |
+
div.coverage-summary th.pct { border-right: none !important; }
|
131 |
+
div.coverage-summary th.abs { border-left: none !important; text-align: right; }
|
132 |
+
div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
|
133 |
+
div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
|
134 |
+
div.coverage-summary td.file { border-left: 1px solid #666; white-space: nowrap; }
|
135 |
+
div.coverage-summary td.pic { min-width: 120px !important; }
|
136 |
+
div.coverage-summary a:link { text-decoration: none; color: #000; }
|
137 |
+
div.coverage-summary a:visited { text-decoration: none; color: #777; }
|
138 |
+
div.coverage-summary a:hover { text-decoration: underline; }
|
139 |
+
div.coverage-summary tfoot td { border-top: 1px solid #666; }
|
140 |
+
|
141 |
+
div.coverage-summary .sorter {
|
142 |
+
height: 10px;
|
143 |
+
width: 7px;
|
144 |
+
display: inline-block;
|
145 |
+
margin-left: 0.5em;
|
146 |
+
background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
|
147 |
+
}
|
148 |
+
div.coverage-summary .sorted .sorter {
|
149 |
+
background-position: 0 -20px;
|
150 |
+
}
|
151 |
+
div.coverage-summary .sorted-desc .sorter {
|
152 |
+
background-position: 0 -10px;
|
153 |
+
}
|
154 |
+
|
155 |
+
.high { background: #b5d592 !important; }
|
156 |
+
.medium { background: #ffe87c !important; }
|
157 |
+
.low { background: #fc8c84 !important; }
|
158 |
+
|
159 |
+
span.cover-fill, span.cover-empty {
|
160 |
+
display:inline-block;
|
161 |
+
border:1px solid #444;
|
162 |
+
background: white;
|
163 |
+
height: 12px;
|
164 |
+
}
|
165 |
+
span.cover-fill {
|
166 |
+
background: #ccc;
|
167 |
+
border-right: 1px solid #444;
|
168 |
+
}
|
169 |
+
span.cover-empty {
|
170 |
+
background: white;
|
171 |
+
border-left: none;
|
172 |
+
}
|
173 |
+
span.cover-full {
|
174 |
+
border-right: none !important;
|
175 |
+
}
|
176 |
+
pre.prettyprint {
|
177 |
+
border: none !important;
|
178 |
+
padding: 0 !important;
|
179 |
+
margin: 0 !important;
|
180 |
+
}
|
181 |
+
.com { color: #999 !important; }
|
182 |
+
.ignore-none { color: #999; font-weight: normal; }
|
web/node_modules/async-limiter/coverage/lcov-report/index.html
ADDED
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!doctype html>
|
2 |
+
<html lang="en">
|
3 |
+
<head>
|
4 |
+
<title>Code coverage report for All files</title>
|
5 |
+
<meta charset="utf-8">
|
6 |
+
<link rel="stylesheet" href="prettify.css">
|
7 |
+
<link rel="stylesheet" href="base.css">
|
8 |
+
<style type='text/css'>
|
9 |
+
div.coverage-summary .sorter {
|
10 |
+
background-image: url(sort-arrow-sprite.png);
|
11 |
+
}
|
12 |
+
</style>
|
13 |
+
</head>
|
14 |
+
<body>
|
15 |
+
<div class="header high">
|
16 |
+
<h1>Code coverage report for <span class="entity">All files</span></h1>
|
17 |
+
<h2>
|
18 |
+
Statements: <span class="metric">100% <small>(37 / 37)</small></span>
|
19 |
+
Branches: <span class="metric">92.86% <small>(13 / 14)</small></span>
|
20 |
+
Functions: <span class="metric">100% <small>(7 / 7)</small></span>
|
21 |
+
Lines: <span class="metric">100% <small>(37 / 37)</small></span>
|
22 |
+
Ignored: <span class="metric"><span class="ignore-none">none</span></span>
|
23 |
+
</h2>
|
24 |
+
<div class="path"></div>
|
25 |
+
</div>
|
26 |
+
<div class="body">
|
27 |
+
<div class="coverage-summary">
|
28 |
+
<table>
|
29 |
+
<thead>
|
30 |
+
<tr>
|
31 |
+
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
|
32 |
+
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
|
33 |
+
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
|
34 |
+
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
|
35 |
+
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
|
36 |
+
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
|
37 |
+
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
|
38 |
+
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
|
39 |
+
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
|
40 |
+
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
|
41 |
+
</tr>
|
42 |
+
</thead>
|
43 |
+
<tbody><tr>
|
44 |
+
<td class="file high" data-value="async-throttle/"><a href="async-throttle/index.html">async-throttle/</a></td>
|
45 |
+
<td data-value="100" class="pic high"><span class="cover-fill cover-full" style="width: 100px;"></span><span class="cover-empty" style="width:0px;"></span></td>
|
46 |
+
<td data-value="100" class="pct high">100%</td>
|
47 |
+
<td data-value="37" class="abs high">(37 / 37)</td>
|
48 |
+
<td data-value="92.86" class="pct high">92.86%</td>
|
49 |
+
<td data-value="14" class="abs high">(13 / 14)</td>
|
50 |
+
<td data-value="100" class="pct high">100%</td>
|
51 |
+
<td data-value="7" class="abs high">(7 / 7)</td>
|
52 |
+
<td data-value="100" class="pct high">100%</td>
|
53 |
+
<td data-value="37" class="abs high">(37 / 37)</td>
|
54 |
+
</tr>
|
55 |
+
|
56 |
+
</tbody>
|
57 |
+
</table>
|
58 |
+
</div>
|
59 |
+
</div>
|
60 |
+
<div class="footer">
|
61 |
+
<div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Sep 11 2017 11:14:14 GMT-0500 (CDT)</div>
|
62 |
+
</div>
|
63 |
+
<script src="prettify.js"></script>
|
64 |
+
<script>
|
65 |
+
window.onload = function () {
|
66 |
+
if (typeof prettyPrint === 'function') {
|
67 |
+
prettyPrint();
|
68 |
+
}
|
69 |
+
};
|
70 |
+
</script>
|
71 |
+
<script src="sorter.js"></script>
|
72 |
+
</body>
|
73 |
+
</html>
|
web/node_modules/async-limiter/coverage/lcov-report/prettify.css
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
|
web/node_modules/async-limiter/coverage/lcov-report/prettify.js
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V<U;++V){var ae=Z[V];if(ae.ignoreCase){ac=true}else{if(/[a-z]/i.test(ae.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi,""))){S=true;ac=false;break}}}var Y={b:8,t:9,n:10,v:11,f:12,r:13};function ab(ah){var ag=ah.charCodeAt(0);if(ag!==92){return ag}var af=ah.charAt(1);ag=Y[af];if(ag){return ag}else{if("0"<=af&&af<="7"){return parseInt(ah.substring(1),8)}else{if(af==="u"||af==="x"){return parseInt(ah.substring(2),16)}else{return ah.charCodeAt(1)}}}}function T(af){if(af<32){return(af<16?"\\x0":"\\x")+af.toString(16)}var ag=String.fromCharCode(af);if(ag==="\\"||ag==="-"||ag==="["||ag==="]"){ag="\\"+ag}return ag}function X(am){var aq=am.substring(1,am.length-1).match(new RegExp("\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]","g"));var ak=[];var af=[];var ao=aq[0]==="^";for(var ar=ao?1:0,aj=aq.length;ar<aj;++ar){var ah=aq[ar];if(/\\[bdsw]/i.test(ah)){ak.push(ah)}else{var ag=ab(ah);var al;if(ar+2<aj&&"-"===aq[ar+1]){al=ab(aq[ar+2]);ar+=2}else{al=ag}af.push([ag,al]);if(!(al<65||ag>122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;ar<af.length;++ar){var at=af[ar];if(at[0]<=ap[1]+1){ap[1]=Math.max(ap[1],at[1])}else{ai.push(ap=at)}}var an=["["];if(ao){an.push("^")}an.push.apply(an,ak);for(var ar=0;ar<ai.length;++ar){var at=ai[ar];an.push(T(at[0]));if(at[1]>at[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak<ah;++ak){var ag=aj[ak];if(ag==="("){++am}else{if("\\"===ag.charAt(0)){var af=+ag.substring(1);if(af&&af<=am){an[af]=-1}}}}for(var ak=1;ak<an.length;++ak){if(-1===an[ak]){an[ak]=++ad}}for(var ak=0,am=0;ak<ah;++ak){var ag=aj[ak];if(ag==="("){++am;if(an[am]===undefined){aj[ak]="(?:"}}else{if("\\"===ag.charAt(0)){var af=+ag.substring(1);if(af&&af<=am){aj[ak]="\\"+an[am]}}}}for(var ak=0,am=0;ak<ah;++ak){if("^"===aj[ak]&&"^"!==aj[ak+1]){aj[ak]=""}}if(al.ignoreCase&&S){for(var ak=0;ak<ah;++ak){var ag=aj[ak];var ai=ag.charAt(0);if(ag.length>=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V<U;++V){var ae=Z[V];if(ae.global||ae.multiline){throw new Error(""+ae)}aa.push("(?:"+W(ae)+")")}return new RegExp(aa.join("|"),ac?"gi":"g")}function a(V){var U=/(?:^|\s)nocode(?:\s|$)/;var X=[];var T=0;var Z=[];var W=0;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=document.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Y=S&&"pre"===S.substring(0,3);function aa(ab){switch(ab.nodeType){case 1:if(U.test(ab.className)){return}for(var ae=ab.firstChild;ae;ae=ae.nextSibling){aa(ae)}var ad=ab.nodeName;if("BR"===ad||"LI"===ad){X[W]="\n";Z[W<<1]=T++;Z[(W++<<1)|1]=ab}break;case 3:case 4:var ac=ab.nodeValue;if(ac.length){if(!Y){ac=ac.replace(/[ \t\r\n]+/g," ")}else{ac=ac.replace(/\r\n?/g,"\n")}X[W]=ac;Z[W<<1]=T;T+=ac.length;Z[(W++<<1)|1]=ab}break}}aa(V);return{sourceCode:X.join("").replace(/\n$/,""),spans:Z}}function B(S,U,W,T){if(!U){return}var V={sourceCode:U,basePos:S};W(V);T.push.apply(T,V.decorations)}var v=/\S/;function o(S){var V=undefined;for(var U=S.firstChild;U;U=U.nextSibling){var T=U.nodeType;V=(T===1)?(V?S:U):(T===3)?(v.test(U.nodeValue)?S:V):V}return V===S?undefined:V}function g(U,T){var S={};var V;(function(){var ad=U.concat(T);var ah=[];var ag={};for(var ab=0,Z=ad.length;ab<Z;++ab){var Y=ad[ab];var ac=Y[3];if(ac){for(var ae=ac.length;--ae>=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae<aq;++ae){var ag=an[ae];var ap=aj[ag];var ai=void 0;var am;if(typeof ap==="string"){am=false}else{var aa=S[ag.charAt(0)];if(aa){ai=ag.match(aa[1]);ap=aa[0]}else{for(var ao=0;ao<X;++ao){aa=T[ao];ai=ag.match(aa[1]);if(ai){ap=aa[0];break}}if(!ai){ap=F}}am=ap.length>=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y<W.length;++Y){ae(W[Y])}if(ag===(ag|0)){W[0].setAttribute("value",ag)}var aa=ac.createElement("OL");aa.className="linenums";var X=Math.max(0,((ag-1))|0)||0;for(var Y=0,T=W.length;Y<T;++Y){af=W[Y];af.className="L"+((Y+X)%10);if(!af.firstChild){af.appendChild(ac.createTextNode("\xA0"))}aa.appendChild(af)}V.appendChild(aa)}function D(ac){var aj=/\bMSIE\b/.test(navigator.userAgent);var am=/\n/g;var al=ac.sourceCode;var an=al.length;var V=0;var aa=ac.spans;var T=aa.length;var ah=0;var X=ac.decorations;var Y=X.length;var Z=0;X[Y]=an;var ar,aq;for(aq=ar=0;aq<Y;){if(X[aq]!==X[aq+2]){X[ar++]=X[aq++];X[ar++]=X[aq++]}else{aq+=2}}Y=ar;for(aq=ar=0;aq<Y;){var at=X[aq];var ab=X[aq+1];var W=aq+2;while(W+2<=Y&&X[W+1]===ab){W+=2}X[ar++]=at;X[ar++]=ab;aq=W}Y=X.length=ar;var ae=null;while(ah<T){var af=aa[ah];var S=aa[ah+2]||an;var ag=X[Z];var ap=X[Z+2]||an;var W=Math.min(S,ap);var ak=aa[ah+1];var U;if(ak.nodeType!==1&&(U=al.substring(V,W))){if(aj){U=U.replace(am,"\r")}ak.nodeValue=U;var ai=ak.ownerDocument;var ao=ai.createElement("SPAN");ao.className=X[Z+1];var ad=ak.parentNode;ad.replaceChild(ao,ak);ao.appendChild(ak);if(V<S){aa[ah+1]=ak=ai.createTextNode(al.substring(W,S));ad.insertBefore(ak,ao.nextSibling)}}V=W;if(V>=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*</.test(S)?"default-markup":"default-code"}return t[T]}c(K,["default-code"]);c(g([],[[F,/^[^<?]+/],[E,/^<!\w[^>]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa<ac.length;++aa){for(var Z=0,V=ac[aa].length;Z<V;++Z){T.push(ac[aa][Z])}}ac=null;var W=Date;if(!W.now){W={now:function(){return +(new Date)}}}var X=0;var S;var ab=/\blang(?:uage)?-([\w.]+)(?!\S)/;var ae=/\bprettyprint\b/;function U(){var ag=(window.PR_SHOULD_USE_CONTINUATION?W.now()+250:Infinity);for(;X<T.length&&W.now()<ag;X++){var aj=T[X];var ai=aj.className;if(ai.indexOf("prettyprint")>=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X<T.length){setTimeout(U,250)}else{if(ad){ad()}}}U()}window.prettyPrintOne=y;window.prettyPrint=b;window.PR={createSimpleLexer:g,registerLangHandler:c,sourceDecorator:i,PR_ATTRIB_NAME:P,PR_ATTRIB_VALUE:n,PR_COMMENT:j,PR_DECLARATION:E,PR_KEYWORD:z,PR_LITERAL:G,PR_NOCODE:N,PR_PLAIN:F,PR_PUNCTUATION:L,PR_SOURCE:J,PR_STRING:C,PR_TAG:m,PR_TYPE:O}})();PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_DECLARATION,/^<!\w[^>]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^<script\b[^>]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:<!--|-->)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]);
|
web/node_modules/async-limiter/coverage/lcov-report/sort-arrow-sprite.png
ADDED
![]() |
web/node_modules/async-limiter/coverage/lcov-report/sorter.js
ADDED
@@ -0,0 +1,156 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var addSorting = (function () {
|
2 |
+
"use strict";
|
3 |
+
var cols,
|
4 |
+
currentSort = {
|
5 |
+
index: 0,
|
6 |
+
desc: false
|
7 |
+
};
|
8 |
+
|
9 |
+
// returns the summary table element
|
10 |
+
function getTable() { return document.querySelector('.coverage-summary table'); }
|
11 |
+
// returns the thead element of the summary table
|
12 |
+
function getTableHeader() { return getTable().querySelector('thead tr'); }
|
13 |
+
// returns the tbody element of the summary table
|
14 |
+
function getTableBody() { return getTable().querySelector('tbody'); }
|
15 |
+
// returns the th element for nth column
|
16 |
+
function getNthColumn(n) { return getTableHeader().querySelectorAll('th')[n]; }
|
17 |
+
|
18 |
+
// loads all columns
|
19 |
+
function loadColumns() {
|
20 |
+
var colNodes = getTableHeader().querySelectorAll('th'),
|
21 |
+
colNode,
|
22 |
+
cols = [],
|
23 |
+
col,
|
24 |
+
i;
|
25 |
+
|
26 |
+
for (i = 0; i < colNodes.length; i += 1) {
|
27 |
+
colNode = colNodes[i];
|
28 |
+
col = {
|
29 |
+
key: colNode.getAttribute('data-col'),
|
30 |
+
sortable: !colNode.getAttribute('data-nosort'),
|
31 |
+
type: colNode.getAttribute('data-type') || 'string'
|
32 |
+
};
|
33 |
+
cols.push(col);
|
34 |
+
if (col.sortable) {
|
35 |
+
col.defaultDescSort = col.type === 'number';
|
36 |
+
colNode.innerHTML = colNode.innerHTML + '<span class="sorter"></span>';
|
37 |
+
}
|
38 |
+
}
|
39 |
+
return cols;
|
40 |
+
}
|
41 |
+
// attaches a data attribute to every tr element with an object
|
42 |
+
// of data values keyed by column name
|
43 |
+
function loadRowData(tableRow) {
|
44 |
+
var tableCols = tableRow.querySelectorAll('td'),
|
45 |
+
colNode,
|
46 |
+
col,
|
47 |
+
data = {},
|
48 |
+
i,
|
49 |
+
val;
|
50 |
+
for (i = 0; i < tableCols.length; i += 1) {
|
51 |
+
colNode = tableCols[i];
|
52 |
+
col = cols[i];
|
53 |
+
val = colNode.getAttribute('data-value');
|
54 |
+
if (col.type === 'number') {
|
55 |
+
val = Number(val);
|
56 |
+
}
|
57 |
+
data[col.key] = val;
|
58 |
+
}
|
59 |
+
return data;
|
60 |
+
}
|
61 |
+
// loads all row data
|
62 |
+
function loadData() {
|
63 |
+
var rows = getTableBody().querySelectorAll('tr'),
|
64 |
+
i;
|
65 |
+
|
66 |
+
for (i = 0; i < rows.length; i += 1) {
|
67 |
+
rows[i].data = loadRowData(rows[i]);
|
68 |
+
}
|
69 |
+
}
|
70 |
+
// sorts the table using the data for the ith column
|
71 |
+
function sortByIndex(index, desc) {
|
72 |
+
var key = cols[index].key,
|
73 |
+
sorter = function (a, b) {
|
74 |
+
a = a.data[key];
|
75 |
+
b = b.data[key];
|
76 |
+
return a < b ? -1 : a > b ? 1 : 0;
|
77 |
+
},
|
78 |
+
finalSorter = sorter,
|
79 |
+
tableBody = document.querySelector('.coverage-summary tbody'),
|
80 |
+
rowNodes = tableBody.querySelectorAll('tr'),
|
81 |
+
rows = [],
|
82 |
+
i;
|
83 |
+
|
84 |
+
if (desc) {
|
85 |
+
finalSorter = function (a, b) {
|
86 |
+
return -1 * sorter(a, b);
|
87 |
+
};
|
88 |
+
}
|
89 |
+
|
90 |
+
for (i = 0; i < rowNodes.length; i += 1) {
|
91 |
+
rows.push(rowNodes[i]);
|
92 |
+
tableBody.removeChild(rowNodes[i]);
|
93 |
+
}
|
94 |
+
|
95 |
+
rows.sort(finalSorter);
|
96 |
+
|
97 |
+
for (i = 0; i < rows.length; i += 1) {
|
98 |
+
tableBody.appendChild(rows[i]);
|
99 |
+
}
|
100 |
+
}
|
101 |
+
// removes sort indicators for current column being sorted
|
102 |
+
function removeSortIndicators() {
|
103 |
+
var col = getNthColumn(currentSort.index),
|
104 |
+
cls = col.className;
|
105 |
+
|
106 |
+
cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, '');
|
107 |
+
col.className = cls;
|
108 |
+
}
|
109 |
+
// adds sort indicators for current column being sorted
|
110 |
+
function addSortIndicators() {
|
111 |
+
getNthColumn(currentSort.index).className += currentSort.desc ? ' sorted-desc' : ' sorted';
|
112 |
+
}
|
113 |
+
// adds event listeners for all sorter widgets
|
114 |
+
function enableUI() {
|
115 |
+
var i,
|
116 |
+
el,
|
117 |
+
ithSorter = function ithSorter(i) {
|
118 |
+
var col = cols[i];
|
119 |
+
|
120 |
+
return function () {
|
121 |
+
var desc = col.defaultDescSort;
|
122 |
+
|
123 |
+
if (currentSort.index === i) {
|
124 |
+
desc = !currentSort.desc;
|
125 |
+
}
|
126 |
+
sortByIndex(i, desc);
|
127 |
+
removeSortIndicators();
|
128 |
+
currentSort.index = i;
|
129 |
+
currentSort.desc = desc;
|
130 |
+
addSortIndicators();
|
131 |
+
};
|
132 |
+
};
|
133 |
+
for (i =0 ; i < cols.length; i += 1) {
|
134 |
+
if (cols[i].sortable) {
|
135 |
+
el = getNthColumn(i).querySelector('.sorter');
|
136 |
+
if (el.addEventListener) {
|
137 |
+
el.addEventListener('click', ithSorter(i));
|
138 |
+
} else {
|
139 |
+
el.attachEvent('onclick', ithSorter(i));
|
140 |
+
}
|
141 |
+
}
|
142 |
+
}
|
143 |
+
}
|
144 |
+
// adds sorting functionality to the UI
|
145 |
+
return function () {
|
146 |
+
if (!getTable()) {
|
147 |
+
return;
|
148 |
+
}
|
149 |
+
cols = loadColumns();
|
150 |
+
loadData(cols);
|
151 |
+
addSortIndicators();
|
152 |
+
enableUI();
|
153 |
+
};
|
154 |
+
})();
|
155 |
+
|
156 |
+
window.addEventListener('load', addSorting);
|