@appium/base-driver 8.2.0 → 8.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/basedriver/capabilities.js +3 -1
- package/build/lib/basedriver/commands/index.js +2 -4
- package/build/lib/basedriver/driver.js +5 -5
- package/build/lib/basedriver/helpers.js +137 -81
- package/build/lib/express/express-logging.js +2 -2
- package/build/lib/index.js +126 -0
- package/build/lib/jsonwp-proxy/protocol-converter.js +2 -5
- package/build/lib/jsonwp-proxy/proxy.js +2 -5
- package/build/lib/protocol/errors.js +4 -2
- package/build/lib/protocol/helpers.js +3 -20
- package/build/lib/protocol/protocol.js +9 -19
- package/build/lib/protocol/routes.js +1 -10
- package/build/test/basedriver/capability-specs.js +10 -10
- package/build/test/basedriver/commands/event-specs.js +10 -10
- package/build/test/basedriver/driver-e2e-specs.js +3 -3
- package/build/test/basedriver/driver-e2e-tests.js +6 -223
- package/build/test/basedriver/driver-specs.js +3 -3
- package/build/test/basedriver/driver-tests.js +4 -4
- package/build/test/basedriver/helpers-specs.js +5 -1
- package/build/test/basedriver/timeout-specs.js +7 -7
- package/build/test/basedriver/websockets-e2e-specs.js +5 -5
- package/build/test/express/server-e2e-specs.js +156 -0
- package/build/test/express/server-specs.js +151 -0
- package/build/test/express/static-specs.js +23 -0
- package/build/test/helpers.js +57 -0
- package/build/test/jsonwp-proxy/mock-request.js +93 -0
- package/build/test/jsonwp-proxy/protocol-converter-specs.js +173 -0
- package/build/test/jsonwp-proxy/proxy-e2e-specs.js +61 -0
- package/build/test/jsonwp-proxy/proxy-specs.js +294 -0
- package/build/test/jsonwp-proxy/url-specs.js +167 -0
- package/build/test/jsonwp-status/status-specs.js +36 -0
- package/build/test/protocol/errors-specs.js +388 -0
- package/build/test/protocol/fake-driver.js +168 -0
- package/build/test/protocol/helpers.js +27 -0
- package/build/test/protocol/protocol-e2e-specs.js +1182 -0
- package/build/test/protocol/routes-specs.js +82 -0
- package/build/test/protocol/validator-specs.js +151 -0
- package/index.d.ts +0 -1
- package/index.js +1 -62
- package/lib/basedriver/capabilities.js +3 -0
- package/lib/basedriver/commands/index.js +0 -2
- package/lib/basedriver/driver.js +5 -5
- package/lib/basedriver/helpers.js +197 -81
- package/lib/express/express-logging.js +1 -1
- package/lib/index.js +64 -0
- package/lib/jsonwp-proxy/protocol-converter.js +1 -5
- package/lib/jsonwp-proxy/proxy.js +1 -3
- package/lib/protocol/errors.js +1 -1
- package/lib/protocol/helpers.js +5 -25
- package/lib/protocol/protocol.js +9 -25
- package/lib/protocol/routes.js +0 -3
- package/package.json +7 -15
- package/test/basedriver/capability-specs.js +1 -1
- package/test/basedriver/commands/event-specs.js +1 -1
- package/test/basedriver/driver-e2e-specs.js +1 -1
- package/test/basedriver/driver-e2e-tests.js +1 -179
- package/test/basedriver/driver-specs.js +1 -1
- package/test/basedriver/driver-tests.js +1 -1
- package/test/basedriver/helpers-specs.js +4 -0
- package/test/basedriver/timeout-specs.js +1 -1
- package/test/basedriver/websockets-e2e-specs.js +1 -1
- package/build/index.js +0 -124
- package/build/lib/basedriver/commands/execute-child.js +0 -137
- package/build/lib/basedriver/commands/execute.js +0 -119
- package/build/test/basedriver/fixtures/custom-element-finder-bad.js +0 -12
- package/build/test/basedriver/fixtures/custom-element-finder.js +0 -36
- package/lib/basedriver/commands/execute-child.js +0 -132
- package/lib/basedriver/commands/execute.js +0 -126
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.CREATE_SESSION_COMMAND = exports.BaseDriver = exports.BASEDRIVER_HANDLED_SETTINGS = exports.ALL_COMMANDS = void 0;
|
|
7
|
+
Object.defineProperty(exports, "DEFAULT_BASE_PATH", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _constants.DEFAULT_BASE_PATH;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
exports.NO_SESSION_ID_COMMANDS = exports.METHOD_MAP = exports.JWProxy = exports.GET_STATUS_COMMAND = exports.DeviceSettings = exports.DELETE_SESSION_COMMAND = exports.DEFAULT_WS_PATHNAME_PREFIX = void 0;
|
|
14
|
+
Object.defineProperty(exports, "PROTOCOLS", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function () {
|
|
17
|
+
return _constants.PROTOCOLS;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
exports.validateCaps = exports.statusCodes = exports.server = exports.routeToCommandName = exports.routeConfiguringFunction = exports.processCapabilities = exports.normalizeBasePath = exports.isStandardCap = exports.isSessionCommand = exports.isErrorType = exports.getSummaryByCode = exports.errors = exports.errorFromW3CJsonCode = exports.errorFromMJSONWPStatusCode = exports.errorFromCode = exports.determineProtocol = exports.default = exports.STATIC_DIR = exports.Protocol = void 0;
|
|
21
|
+
|
|
22
|
+
require("source-map-support/register");
|
|
23
|
+
|
|
24
|
+
var driver = _interopRequireWildcard(require("./basedriver/driver"));
|
|
25
|
+
|
|
26
|
+
var deviceSettings = _interopRequireWildcard(require("./basedriver/device-settings"));
|
|
27
|
+
|
|
28
|
+
var protocol = _interopRequireWildcard(require("./protocol"));
|
|
29
|
+
|
|
30
|
+
var _constants = require("./constants");
|
|
31
|
+
|
|
32
|
+
var staticIndex = _interopRequireWildcard(require("./express/static"));
|
|
33
|
+
|
|
34
|
+
var serverIndex = _interopRequireWildcard(require("./express/server"));
|
|
35
|
+
|
|
36
|
+
var proxyIndex = _interopRequireWildcard(require("./jsonwp-proxy/proxy"));
|
|
37
|
+
|
|
38
|
+
var statusIndex = _interopRequireWildcard(require("./jsonwp-status/status"));
|
|
39
|
+
|
|
40
|
+
var caps = _interopRequireWildcard(require("./basedriver/capabilities"));
|
|
41
|
+
|
|
42
|
+
var ws = _interopRequireWildcard(require("./express/websocket"));
|
|
43
|
+
|
|
44
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
45
|
+
|
|
46
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
47
|
+
|
|
48
|
+
const {
|
|
49
|
+
BaseDriver
|
|
50
|
+
} = driver;
|
|
51
|
+
exports.BaseDriver = BaseDriver;
|
|
52
|
+
const {
|
|
53
|
+
DeviceSettings,
|
|
54
|
+
BASEDRIVER_HANDLED_SETTINGS
|
|
55
|
+
} = deviceSettings;
|
|
56
|
+
exports.BASEDRIVER_HANDLED_SETTINGS = BASEDRIVER_HANDLED_SETTINGS;
|
|
57
|
+
exports.DeviceSettings = DeviceSettings;
|
|
58
|
+
var _default = BaseDriver;
|
|
59
|
+
exports.default = _default;
|
|
60
|
+
const {
|
|
61
|
+
Protocol,
|
|
62
|
+
routeConfiguringFunction,
|
|
63
|
+
errors,
|
|
64
|
+
isErrorType,
|
|
65
|
+
errorFromMJSONWPStatusCode,
|
|
66
|
+
errorFromW3CJsonCode,
|
|
67
|
+
ALL_COMMANDS,
|
|
68
|
+
METHOD_MAP,
|
|
69
|
+
routeToCommandName,
|
|
70
|
+
NO_SESSION_ID_COMMANDS,
|
|
71
|
+
isSessionCommand,
|
|
72
|
+
normalizeBasePath,
|
|
73
|
+
determineProtocol,
|
|
74
|
+
CREATE_SESSION_COMMAND,
|
|
75
|
+
DELETE_SESSION_COMMAND,
|
|
76
|
+
GET_STATUS_COMMAND
|
|
77
|
+
} = protocol;
|
|
78
|
+
exports.GET_STATUS_COMMAND = GET_STATUS_COMMAND;
|
|
79
|
+
exports.DELETE_SESSION_COMMAND = DELETE_SESSION_COMMAND;
|
|
80
|
+
exports.CREATE_SESSION_COMMAND = CREATE_SESSION_COMMAND;
|
|
81
|
+
exports.determineProtocol = determineProtocol;
|
|
82
|
+
exports.normalizeBasePath = normalizeBasePath;
|
|
83
|
+
exports.isSessionCommand = isSessionCommand;
|
|
84
|
+
exports.NO_SESSION_ID_COMMANDS = NO_SESSION_ID_COMMANDS;
|
|
85
|
+
exports.routeToCommandName = routeToCommandName;
|
|
86
|
+
exports.METHOD_MAP = METHOD_MAP;
|
|
87
|
+
exports.ALL_COMMANDS = ALL_COMMANDS;
|
|
88
|
+
exports.errorFromW3CJsonCode = errorFromW3CJsonCode;
|
|
89
|
+
exports.errorFromCode = exports.errorFromMJSONWPStatusCode = errorFromMJSONWPStatusCode;
|
|
90
|
+
exports.isErrorType = isErrorType;
|
|
91
|
+
exports.errors = errors;
|
|
92
|
+
exports.routeConfiguringFunction = routeConfiguringFunction;
|
|
93
|
+
exports.Protocol = Protocol;
|
|
94
|
+
const {
|
|
95
|
+
STATIC_DIR
|
|
96
|
+
} = staticIndex;
|
|
97
|
+
exports.STATIC_DIR = STATIC_DIR;
|
|
98
|
+
const {
|
|
99
|
+
server
|
|
100
|
+
} = serverIndex;
|
|
101
|
+
exports.server = server;
|
|
102
|
+
const {
|
|
103
|
+
JWProxy
|
|
104
|
+
} = proxyIndex;
|
|
105
|
+
exports.JWProxy = JWProxy;
|
|
106
|
+
const {
|
|
107
|
+
codes: statusCodes,
|
|
108
|
+
getSummaryByCode
|
|
109
|
+
} = statusIndex;
|
|
110
|
+
exports.getSummaryByCode = getSummaryByCode;
|
|
111
|
+
exports.statusCodes = statusCodes;
|
|
112
|
+
const {
|
|
113
|
+
processCapabilities,
|
|
114
|
+
isStandardCap,
|
|
115
|
+
validateCaps
|
|
116
|
+
} = caps;
|
|
117
|
+
exports.validateCaps = validateCaps;
|
|
118
|
+
exports.isStandardCap = isStandardCap;
|
|
119
|
+
exports.processCapabilities = processCapabilities;
|
|
120
|
+
const {
|
|
121
|
+
DEFAULT_WS_PATHNAME_PREFIX
|
|
122
|
+
} = ws;
|
|
123
|
+
exports.DEFAULT_WS_PATHNAME_PREFIX = DEFAULT_WS_PATHNAME_PREFIX;require('source-map-support').install();
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9pbmRleC5qcyJdLCJuYW1lcyI6WyJCYXNlRHJpdmVyIiwiZHJpdmVyIiwiRGV2aWNlU2V0dGluZ3MiLCJCQVNFRFJJVkVSX0hBTkRMRURfU0VUVElOR1MiLCJkZXZpY2VTZXR0aW5ncyIsIlByb3RvY29sIiwicm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIiwiZXJyb3JzIiwiaXNFcnJvclR5cGUiLCJlcnJvckZyb21NSlNPTldQU3RhdHVzQ29kZSIsImVycm9yRnJvbVczQ0pzb25Db2RlIiwiQUxMX0NPTU1BTkRTIiwiTUVUSE9EX01BUCIsInJvdXRlVG9Db21tYW5kTmFtZSIsIk5PX1NFU1NJT05fSURfQ09NTUFORFMiLCJpc1Nlc3Npb25Db21tYW5kIiwibm9ybWFsaXplQmFzZVBhdGgiLCJkZXRlcm1pbmVQcm90b2NvbCIsIkNSRUFURV9TRVNTSU9OX0NPTU1BTkQiLCJERUxFVEVfU0VTU0lPTl9DT01NQU5EIiwiR0VUX1NUQVRVU19DT01NQU5EIiwicHJvdG9jb2wiLCJTVEFUSUNfRElSIiwic3RhdGljSW5kZXgiLCJzZXJ2ZXIiLCJzZXJ2ZXJJbmRleCIsIkpXUHJveHkiLCJwcm94eUluZGV4IiwiY29kZXMiLCJzdGF0dXNDb2RlcyIsImdldFN1bW1hcnlCeUNvZGUiLCJzdGF0dXNJbmRleCIsInByb2Nlc3NDYXBhYmlsaXRpZXMiLCJpc1N0YW5kYXJkQ2FwIiwidmFsaWRhdGVDYXBzIiwiY2FwcyIsIkRFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYIiwid3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0E7O0FBQ0E7O0FBVUE7O0FBQ0E7O0FBc0JBOztBQUlBOztBQUtBOztBQUtBOztBQUtBOztBQUtBOzs7Ozs7QUF2REEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQWlCQyxNQUF2Qjs7QUFDQSxNQUFNO0FBQUVDLEVBQUFBLGNBQUY7QUFBa0JDLEVBQUFBO0FBQWxCLElBQWtEQyxjQUF4RDs7O2VBR2VKLFU7O0FBU2YsTUFBTTtBQUNKSyxFQUFBQSxRQURJO0FBQ01DLEVBQUFBLHdCQUROO0FBQ2dDQyxFQUFBQSxNQURoQztBQUN3Q0MsRUFBQUEsV0FEeEM7QUFFSkMsRUFBQUEsMEJBRkk7QUFFd0JDLEVBQUFBLG9CQUZ4QjtBQUU4Q0MsRUFBQUEsWUFGOUM7QUFFNERDLEVBQUFBLFVBRjVEO0FBR0pDLEVBQUFBLGtCQUhJO0FBR2dCQyxFQUFBQSxzQkFIaEI7QUFHd0NDLEVBQUFBLGdCQUh4QztBQUlKQyxFQUFBQSxpQkFKSTtBQUllQyxFQUFBQSxpQkFKZjtBQUlrQ0MsRUFBQUEsc0JBSmxDO0FBS0pDLEVBQUFBLHNCQUxJO0FBS29CQyxFQUFBQTtBQUxwQixJQU1GQyxRQU5KOzs7Ozs7Ozs7Ozs7Ozs7OztBQW1CQSxNQUFNO0FBQUVDLEVBQUFBO0FBQUYsSUFBaUJDLFdBQXZCOztBQUlBLE1BQU07QUFBRUMsRUFBQUE7QUFBRixJQUFhQyxXQUFuQjs7QUFLQSxNQUFNO0FBQUVDLEVBQUFBO0FBQUYsSUFBY0MsVUFBcEI7O0FBS0EsTUFBTTtBQUFFQyxFQUFBQSxLQUFLLEVBQUVDLFdBQVQ7QUFBc0JDLEVBQUFBO0FBQXRCLElBQTJDQyxXQUFqRDs7O0FBS0EsTUFBTTtBQUFFQyxFQUFBQSxtQkFBRjtBQUF1QkMsRUFBQUEsYUFBdkI7QUFBc0NDLEVBQUFBO0FBQXRDLElBQXVEQyxJQUE3RDs7OztBQUtBLE1BQU07QUFBRUMsRUFBQUE7QUFBRixJQUFpQ0MsRUFBdkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0cmFuc3BpbGU6bWFpblxuXG4vLyBCYXNlRHJpdmVyIGV4cG9ydHNcbmltcG9ydCAqIGFzIGRyaXZlciBmcm9tICcuL2Jhc2Vkcml2ZXIvZHJpdmVyJztcbmltcG9ydCAqIGFzIGRldmljZVNldHRpbmdzIGZyb20gJy4vYmFzZWRyaXZlci9kZXZpY2Utc2V0dGluZ3MnO1xuXG5jb25zdCB7IEJhc2VEcml2ZXIgfSA9IGRyaXZlcjtcbmNvbnN0IHsgRGV2aWNlU2V0dGluZ3MsIEJBU0VEUklWRVJfSEFORExFRF9TRVRUSU5HUyB9ID0gZGV2aWNlU2V0dGluZ3M7XG5cbmV4cG9ydCB7IEJhc2VEcml2ZXIsIERldmljZVNldHRpbmdzLCBCQVNFRFJJVkVSX0hBTkRMRURfU0VUVElOR1MgfTtcbmV4cG9ydCBkZWZhdWx0IEJhc2VEcml2ZXI7XG5cblxuLy8gTUpTT05XUCBleHBvcnRzXG5pbXBvcnQgKiBhcyBwcm90b2NvbCBmcm9tICcuL3Byb3RvY29sJztcbmltcG9ydCB7XG4gIERFRkFVTFRfQkFTRV9QQVRILCBQUk9UT0NPTFNcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5jb25zdCB7XG4gIFByb3RvY29sLCByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24sIGVycm9ycywgaXNFcnJvclR5cGUsXG4gIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlLCBlcnJvckZyb21XM0NKc29uQ29kZSwgQUxMX0NPTU1BTkRTLCBNRVRIT0RfTUFQLFxuICByb3V0ZVRvQ29tbWFuZE5hbWUsIE5PX1NFU1NJT05fSURfQ09NTUFORFMsIGlzU2Vzc2lvbkNvbW1hbmQsXG4gIG5vcm1hbGl6ZUJhc2VQYXRoLCBkZXRlcm1pbmVQcm90b2NvbCwgQ1JFQVRFX1NFU1NJT05fQ09NTUFORCxcbiAgREVMRVRFX1NFU1NJT05fQ09NTUFORCwgR0VUX1NUQVRVU19DT01NQU5ELFxufSA9IHByb3RvY29sO1xuXG5leHBvcnQge1xuICBQcm90b2NvbCwgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uLCBlcnJvcnMsIGlzRXJyb3JUeXBlLCBQUk9UT0NPTFMsXG4gIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlLCBlcnJvckZyb21XM0NKc29uQ29kZSwgZGV0ZXJtaW5lUHJvdG9jb2wsXG4gIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlIGFzIGVycm9yRnJvbUNvZGUsIEFMTF9DT01NQU5EUywgTUVUSE9EX01BUCxcbiAgcm91dGVUb0NvbW1hbmROYW1lLCBOT19TRVNTSU9OX0lEX0NPTU1BTkRTLCBpc1Nlc3Npb25Db21tYW5kLFxuICBERUZBVUxUX0JBU0VfUEFUSCwgbm9ybWFsaXplQmFzZVBhdGgsIENSRUFURV9TRVNTSU9OX0NPTU1BTkQsXG4gIERFTEVURV9TRVNTSU9OX0NPTU1BTkQsIEdFVF9TVEFUVVNfQ09NTUFORCxcbn07XG5cbi8vIEV4cHJlc3MgZXhwb3J0c1xuaW1wb3J0ICogYXMgc3RhdGljSW5kZXggZnJvbSAnLi9leHByZXNzL3N0YXRpYyc7XG5jb25zdCB7IFNUQVRJQ19ESVIgfSA9IHN0YXRpY0luZGV4O1xuZXhwb3J0IHsgU1RBVElDX0RJUiB9O1xuXG5pbXBvcnQgKiBhcyBzZXJ2ZXJJbmRleCBmcm9tICcuL2V4cHJlc3Mvc2VydmVyJztcbmNvbnN0IHsgc2VydmVyIH0gPSBzZXJ2ZXJJbmRleDtcbmV4cG9ydCB7IHNlcnZlciB9O1xuXG4vLyBqc29ud3AtcHJveHkgZXhwb3J0c1xuaW1wb3J0ICogYXMgcHJveHlJbmRleCBmcm9tICcuL2pzb253cC1wcm94eS9wcm94eSc7XG5jb25zdCB7IEpXUHJveHkgfSA9IHByb3h5SW5kZXg7XG5leHBvcnQgeyBKV1Byb3h5IH07XG5cbi8vIGpzb253cC1zdGF0dXMgZXhwb3J0c1xuaW1wb3J0ICogYXMgc3RhdHVzSW5kZXggZnJvbSAnLi9qc29ud3Atc3RhdHVzL3N0YXR1cyc7XG5jb25zdCB7IGNvZGVzOiBzdGF0dXNDb2RlcywgZ2V0U3VtbWFyeUJ5Q29kZSB9ID0gc3RhdHVzSW5kZXg7XG5leHBvcnQgeyBzdGF0dXNDb2RlcywgZ2V0U3VtbWFyeUJ5Q29kZSB9O1xuXG4vLyBXM0MgY2FwYWJpbGl0aWVzIHBhcnNlclxuaW1wb3J0ICogYXMgY2FwcyBmcm9tICcuL2Jhc2Vkcml2ZXIvY2FwYWJpbGl0aWVzJztcbmNvbnN0IHsgcHJvY2Vzc0NhcGFiaWxpdGllcywgaXNTdGFuZGFyZENhcCwgdmFsaWRhdGVDYXBzIH0gPSBjYXBzO1xuZXhwb3J0IHsgcHJvY2Vzc0NhcGFiaWxpdGllcywgaXNTdGFuZGFyZENhcCwgdmFsaWRhdGVDYXBzIH07XG5cbi8vIFdlYiBzb2NrZXQgaGVscGVyc1xuaW1wb3J0ICogYXMgd3MgZnJvbSAnLi9leHByZXNzL3dlYnNvY2tldCc7XG5jb25zdCB7IERFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYIH0gPSB3cztcbmV4cG9ydCB7IERFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYIH07XG4iXSwiZmlsZSI6ImxpYi9pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
|
|
@@ -17,8 +17,6 @@ var _helpers = require("../basedriver/helpers");
|
|
|
17
17
|
|
|
18
18
|
var _constants = require("../constants");
|
|
19
19
|
|
|
20
|
-
var _helpers2 = require("../protocol/helpers");
|
|
21
|
-
|
|
22
20
|
const log = _support.logger.getLogger('Protocol Converter');
|
|
23
21
|
|
|
24
22
|
const COMMAND_URLS_CONFLICTS = [{
|
|
@@ -181,8 +179,7 @@ class ProtocolConverter {
|
|
|
181
179
|
|
|
182
180
|
async convertAndProxy(commandName, url, method, body) {
|
|
183
181
|
if (!this.downstreamProtocol) {
|
|
184
|
-
|
|
185
|
-
return [res, (0, _helpers2.formatStatus)(resBodyObj, res.statusCode)];
|
|
182
|
+
return await this.proxyFunc(url, method, body);
|
|
186
183
|
}
|
|
187
184
|
|
|
188
185
|
switch (commandName) {
|
|
@@ -237,4 +234,4 @@ var _default = ProtocolConverter;
|
|
|
237
234
|
exports.default = _default;require('source-map-support').install();
|
|
238
235
|
|
|
239
236
|
|
|
240
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9qc29ud3AtcHJveHkvcHJvdG9jb2wtY29udmVydGVyLmpzIl0sIm5hbWVzIjpbImxvZyIsImxvZ2dlciIsImdldExvZ2dlciIsIkNPTU1BTkRfVVJMU19DT05GTElDVFMiLCJjb21tYW5kTmFtZXMiLCJqc29ud3BDb252ZXJ0ZXIiLCJ1cmwiLCJyZXBsYWNlIiwiaW5jbHVkZXMiLCJ3M2NDb252ZXJ0ZXIiLCJ0ZXN0IiwidzNjVXJsIiwidzNjUHJvcGVydHlSZWdleCIsImpzb253cFVybCIsImluZm8iLCJNSlNPTldQIiwiVzNDIiwiUFJPVE9DT0xTIiwiUHJvdG9jb2xDb252ZXJ0ZXIiLCJjb25zdHJ1Y3RvciIsInByb3h5RnVuYyIsIl9kb3duc3RyZWFtUHJvdG9jb2wiLCJkb3duc3RyZWFtUHJvdG9jb2wiLCJ2YWx1ZSIsImdldFRpbWVvdXRSZXF1ZXN0T2JqZWN0cyIsImJvZHkiLCJfIiwiaGFzIiwidHlwZVRvVzNDIiwieCIsInR5cGUiLCJtcyIsInR5cGVUb0pTT05XUCIsInRvUGFpcnMiLCJmaWx0ZXIiLCJwYWlyIiwibWFwIiwicHJveHlTZXRUaW1lb3V0cyIsIm1ldGhvZCIsInJlc3BvbnNlIiwicmVzQm9keSIsInRpbWVvdXRSZXF1ZXN0T2JqZWN0cyIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsInRpbWVvdXRPYmoiLCJzdGF0dXNDb2RlIiwicHJveHlTZXRXaW5kb3ciLCJib2R5T2JqIiwidXRpbCIsInNhZmVKc29uUGFyc2UiLCJpc1BsYWluT2JqZWN0IiwibmFtZSIsImhhbmRsZSIsInByb3h5U2V0VmFsdWUiLCJoYXNWYWx1ZSIsInRleHQiLCJpc1N0cmluZyIsImlzQXJyYXkiLCJqb2luIiwiT2JqZWN0IiwiYXNzaWduIiwicHJveHlTZXRGcmFtZSIsImlkIiwiTUpTT05XUF9FTEVNRU5UX0tFWSIsIlczQ19FTEVNRU5UX0tFWSIsInByb3h5UGVyZm9ybUFjdGlvbnMiLCJwcm94eVJlbGVhc2VBY3Rpb25zIiwiY29udmVy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QUFDbEYsVUFBSSxDQUFDQyxZQUFZLENBQUNJLFFBQWIsQ0FBc0I2RCxXQUF0QixDQUFMLEVBQXlDO0FBQ3ZDO0FBQ0Q7O0FBRUQsWUFBTUcsWUFBWSxHQUFHLEtBQUtsRCxrQkFBTCxLQUE0QlAsT0FBNUIsR0FDakJWLGVBQWUsQ0FBQ0MsR0FBRCxDQURFLEdBRWpCRyxZQUFZLENBQUNILEdBQUQsQ0FGaEI7O0FBR0EsVUFBSWtFLFlBQVksS0FBS2xFLEdBQXJCLEVBQTBCO0FBQ3hCTixRQUFBQSxHQUFHLENBQUMwQyxLQUFKLENBQVcsaURBQWdEcEMsR0FBSSxJQUFyRCxHQUNQLE9BQU0sS0FBS2dCLGtCQUFtQixXQURqQztBQUVBO0FBQ0Q7O0FBQ0R0QixNQUFBQSxHQUFHLENBQUNjLElBQUosQ0FBVSw2QkFBNEJSLEdBQUksU0FBUWtFLFlBQWEsSUFBdEQsR0FDTixPQUFNLEtBQUtsRCxrQkFBbUIsV0FEakM7QUFFQSxhQUFPLE1BQU0sS0FBS0YsU0FBTCxDQUFlb0QsWUFBZixFQUE2QmxDLE1BQTdCLEVBQXFDYixJQUFyQyxDQUFiO0FBQ0Q7O0FBR0QsV0FBTyxNQUFNLEtBQUtMLFNBQUwsQ0FBZWQsR0FBZixFQUFvQmdDLE1BQXBCLEVBQTRCYixJQUE1QixDQUFiO0FBQ0Q7O0FBdk1xQjs7ZUEwTVRQLGlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGxvZ2dlciwgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBkdXBsaWNhdGVLZXlzIH0gZnJvbSAnLi4vYmFzZWRyaXZlci9oZWxwZXJzJztcbmltcG9ydCB7XG4gIE1KU09OV1BfRUxFTUVOVF9LRVksIFczQ19FTEVNRU5UX0tFWSwgUFJPVE9DT0xTXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBmb3JtYXRTdGF0dXMgfSBmcm9tICcuLi9wcm90b2NvbC9oZWxwZXJzJztcblxuY29uc3QgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignUHJvdG9jb2wgQ29udmVydGVyJyk7XG5cblxuZXhwb3J0IGNvbnN0IENPTU1BTkRfVVJMU19DT05GTElDVFMgPSBbXG4gIHtcbiAgICBjb21tYW5kTmFtZXM6IFsnZXhlY3V0ZScsICdleGVjdXRlQXN5bmMnXSxcbiAgICBqc29ud3BDb252ZXJ0ZXI6ICh1cmwpID0+IHVybC5yZXBsYWNlKC9cXC9leGVjdXRlLiovLFxuICAgICAgdXJsLmluY2x1ZGVzKCdhc3luYycpID8gJy9leGVjdXRlX2FzeW5jJyA6ICcvZXhlY3V0ZScpLFxuICAgIHczY0NvbnZlcnRlcjogKHVybCkgPT4gdXJsLnJlcGxhY2UoL1xcL2V4ZWN1dGUuKi8sXG4gICAgICB1cmwuaW5jbHVkZXMoJ2FzeW5jJykgPyAnL2V4ZWN1dGUvYXN5bmMnIDogJy9leGVjdXRlL3N5bmMnKSxcbiAgfSxcbiAge1xuICAgIGNvbW1hbmROYW1lczogWydnZXRFbGVtZW50U2NyZWVuc2hvdCddLFxuICAgIGpzb253cENvbnZlcnRlcjogKHVybCkgPT4gdXJsLnJlcGxhY2UoL1xcL2VsZW1lbnRcXC8oW14vXSspXFwvc2NyZWVuc2hvdCQvLFxuICAgICAgJy9zY3JlZW5zaG90LyQxJyksXG4gICAgdzNjQ29udmVydGVyOiAodXJsKSA9PiB1cmwucmVwbGFjZSgvXFwvc2NyZWVuc2hvdFxcLyhbXi9dKykvLFxuICAgICAgJy9lbGVtZW50LyQxL3NjcmVlbnNob3QnKSxcbiAgfSxcbiAge1xuICAgIGNvbW1hbmROYW1lczogWydnZXRXaW5kb3dIYW5kbGVzJywgJ2dldFdpbmRvd0hhbmRsZSddLFxuICAgIGpzb253cENvbnZlcnRlciAodXJsKSB7XG4gICAgICByZXR1cm4gL1xcL3dpbmRvdyQvLnRlc3QodXJsKVxuICAgICAgICA/IHVybC5yZXBsYWNlKC9cXC93aW5kb3ckLywgJy93aW5kb3dfaGFuZGxlJylcbiAgICAgICAgOiB1cmwucmVwbGFjZSgvXFwvd2luZG93XFwvaGFuZGxlKHM/KSQvLCAnL3dpbmRvd19oYW5kbGUkMScpO1xuICAgIH0sXG4gICAgdzNjQ29udmVydGVyICh1cmwpIHtcbiAgICAgIHJldHVybiAvXFwvd2luZG93X2hhbmRsZSQvLnRlc3QodXJsKVxuICAgICAgICA/IHVybC5yZXBsYWNlKC9cXC93aW5kb3dfaGFuZGxlJC8sICcvd2luZG93JylcbiAgICAgICAgOiB1cmwucmVwbGFjZSgvXFwvd2luZG93X2hhbmRsZXMkLywgJy93aW5kb3cvaGFuZGxlcycpO1xuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBjb21tYW5kTmFtZXM6IFsnZ2V0UHJvcGVydHknXSxcbiAgICBqc29ud3BDb252ZXJ0ZXI6ICh3M2NVcmwpID0+IHtcbiAgICAgIGNvbnN0IHczY1Byb3BlcnR5UmVnZXggPSAvXFwvZWxlbWVudFxcLyhbXi9dKylcXC9wcm9wZXJ0eVxcLyhbXi9dKykvO1xuICAgICAgY29uc3QganNvbndwVXJsID0gdzNjVXJsLnJlcGxhY2UodzNjUHJvcGVydHlSZWdleCwgJy9lbGVtZW50LyQxL2F0dHJpYnV0ZS8kMicpO1xuICAgICAgbG9nLmluZm8oYENvbnZlcnRpbmcgVzNDICcke3czY1VybH0nIHRvICcke2pzb253cFVybH0nYCk7XG4gICAgICByZXR1cm4ganNvbndwVXJsO1xuICAgIH0sXG4gICAgdzNjQ29udmVydGVyOiAoanNvbndwVXJsKSA9PiBqc29ud3BVcmwgLy8gRG9uJ3QgY29udmVydCBKU09OV1AgVVJMIHRvIFczQy4gVzNDIGFjY2VwdHMgL2F0dHJpYnV0ZSBhbmQgL3Byb3BlcnR5XG4gIH1cbl07XG5cbmNvbnN0IHtNSlNPTldQLCBXM0N9ID0gUFJPVE9DT0xTO1xuXG5cbmNsYXNzIFByb3RvY29sQ29udmVydGVyIHtcbiAgY29uc3RydWN0b3IgKHByb3h5RnVuYykge1xuICAgIHRoaXMucHJveHlGdW5jID0gcHJveHlGdW5jO1xuICAgIHRoaXMuX2Rvd25zdHJlYW1Qcm90b2NvbCA9IG51bGw7XG4gIH1cblxuICBzZXQgZG93bnN0cmVhbVByb3RvY29sICh2YWx1ZSkge1xuICAgIHRoaXMuX2Rvd25zdHJlYW1Qcm90b2NvbCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGRvd25zdHJlYW1Qcm90b2NvbCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rvd25zdHJlYW1Qcm90b2NvbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXM0MgL3RpbWVvdXRzIGNhbiB0YWtlIGFzIG1hbnkgYXMgMyB0aW1lb3V0IHR5cGVzIGF0IG9uY2UsIE1KU09OV1AgL3RpbWVvdXRzIG9ubHkgdGFrZXMgb25lXG4gICAqIGF0IGEgdGltZS4gU28gaWYgd2UncmUgdXNpbmcgVzNDIGFuZCBwcm94eWluZyB0byBNSlNPTldQIGFuZCB0aGVyZSdzIG1vcmUgdGhhbiBvbmUgdGltZW91dCB0eXBlXG4gICAqIHByb3ZpZGVkIGluIHRoZSByZXF1ZXN0LCB3ZSBuZWVkIHRvIGRvIDMgcHJveGllcyBhbmQgY29tYmluZSB0aGUgcmVzdWx0XG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBib2R5IFJlcXVlc3QgYm9keVxuICAgKiBAcmV0dXJuIHtBcnJheX0gQXJyYXkgb2YgVzNDICsgTUpTT05XUCBjb21wYXRpYmxlIHRpbWVvdXQgb2JqZWN0c1xuICAgKi9cbiAgZ2V0VGltZW91dFJlcXVlc3RPYmplY3RzIChib2R5KSB7XG4gICAgaWYgKHRoaXMuZG93bnN0cmVhbVByb3RvY29sID09PSBXM0MgJiYgXy5oYXMoYm9keSwgJ21zJykgJiYgXy5oYXMoYm9keSwgJ3R5cGUnKSkge1xuICAgICAgY29uc3QgdHlwZVRvVzNDID0gKHgpID0+IHggPT09ICdwYWdlIGxvYWQnID8gJ3BhZ2VMb2FkJyA6IHg7XG4gICAgICByZXR1cm4gW3tcbiAgICAgICAgW3R5cGVUb1czQyhib2R5LnR5cGUpXTogYm9keS5tcyxcbiAgICAgIH1dO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRvd25zdHJlYW1Qcm90b2NvbCA9PT0gTUpTT05XUCAmJiAoIV8uaGFzKGJvZHksICdtcycpIHx8ICFfLmhhcyhib2R5LCAndHlwZScpKSkge1xuICAgICAgY29uc3QgdHlwZVRvSlNPTldQID0gKHgpID0+IHggPT09ICdwYWdlTG9hZCcgPyAncGFnZSBsb2FkJyA6IHg7XG4gICAgICByZXR1cm4gXy50b1BhaXJzKGJvZHkpXG4gICAgICAgIC8vIE9ubHkgdHJhbnNmb3JtIHRoZSBlbnRyeSBpZiBtcyB2YWx1ZSBpcyBhIHZhbGlkIHBvc2l0aXZlIGZsb2F0IG51bWJlclxuICAgICAgICAuZmlsdGVyKChwYWlyKSA9PiAvXlxcZCsoPzpbLixdXFxkKj8pPyQvLnRlc3QoYCR7cGFpclsxXX1gKSlcbiAgICAgICAgLm1hcChmdW5jdGlvbiAocGFpcikge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiB0eXBlVG9KU09OV1AocGFpclswXSksXG4gICAgICAgICAgICBtczogcGFpclsxXSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gW2JvZHldO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb3h5IGFuIGFycmF5IG9mIHRpbWVvdXQgb2JqZWN0cyBhbmQgbWVyZ2UgdGhlIHJlc3VsdFxuICAgKiBAcGFyYW0ge1N0cmluZ30gdXJsIEVuZHBvaW50IHVybFxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWV0aG9kIEVuZHBvaW50IG1ldGhvZFxuICAgKiBAcGFyYW0ge09iamVjdH0gYm9keSBSZXF1ZXN0IGJvZHlcbiAgICovXG4gIGFzeW5jIHByb3h5U2V0VGltZW91dHMgKHVybCwgbWV0aG9kLCBib2R5KSB7XG4gICAgbGV0IHJlc3BvbnNlLCByZXNCb2R5O1xuXG4gICAgY29uc3QgdGltZW91dFJlcXVlc3RPYmplY3RzID0gdGhpcy5nZXRUaW1lb3V0UmVxdWVzdE9iamVjdHMoYm9keSk7XG4gICAgbG9nLmRlYnVnKGBXaWxsIHNlbmQgdGhlIGZvbGxvd2luZyByZXF1ZXN0IGJvZGllcyB0byAvdGltZW91dHM6ICR7SlNPTi5zdHJpbmdpZnkodGltZW91dFJlcXVlc3RPYmplY3RzKX1gKTtcbiAgICBmb3IgKGNvbnN0IHRpbWVvdXRPYmogb2YgdGltZW91dFJlcXVlc3RPYmplY3RzKSB7XG4gICAgICBbcmVzcG9uc2UsIHJlc0JvZHldID0gYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIHRpbWVvdXRPYmopO1xuXG4gICAgICAvLyBJZiB3ZSBnb3QgYSBub24tTUpTT05XUCByZXNwb25zZSwgcmV0dXJuIHRoZSByZXN1bHQsIG5vdGhpbmcgbGVmdCB0byBkb1xuICAgICAgaWYgKHRoaXMuZG93bnN0cmVhbVByb3RvY29sICE9PSBNSlNPTldQKSB7XG4gICAgICAgIHJldHVybiBbcmVzcG9uc2UsIHJlc0JvZHldO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB3ZSBnb3QgYW4gZXJyb3IsIHJldHVybiB0aGUgZXJyb3IgcmlnaHQgYXdheVxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPj0gNDAwKSB7XG4gICAgICAgIHJldHVybiBbcmVzcG9uc2UsIHJlc0JvZHldO1xuICAgICAgfVxuXG4gICAgICAvLyAuLi5PdGhlcndpc2UsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IHRpbWVvdXRzIGNhbGxcbiAgICB9XG4gICAgcmV0dXJuIFtyZXNwb25zZSwgcmVzQm9keV07XG4gIH1cblxuICBhc3luYyBwcm94eVNldFdpbmRvdyAodXJsLCBtZXRob2QsIGJvZHkpIHtcbiAgICBjb25zdCBib2R5T2JqID0gdXRpbC5zYWZlSnNvblBhcnNlKGJvZHkpO1xuICAgIGlmIChfLmlzUGxhaW5PYmplY3QoYm9keU9iaikpIHtcbiAgICAgIGlmICh0aGlzLmRvd25zdHJlYW1Qcm90b2NvbCA9PT0gVzNDICYmIF8uaGFzKGJvZHlPYmosICduYW1lJykgJiYgIV8uaGFzKGJvZHlPYmosICdoYW5kbGUnKSkge1xuICAgICAgICBsb2cuZGVidWcoYENvcGllZCAnbmFtZScgdmFsdWUgJyR7Ym9keU9iai5uYW1lfScgdG8gJ2hhbmRsZScgYXMgcGVyIFczQyBzcGVjYCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5RnVuYyh1cmwsIG1ldGhvZCwge1xuICAgICAgICAgIC4uLmJvZHlPYmosXG4gICAgICAgICAgaGFuZGxlOiBib2R5T2JqLm5hbWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZG93bnN0cmVhbVByb3RvY29sID09PSBNSlNPTldQICYmIF8uaGFzKGJvZHlPYmosICdoYW5kbGUnKSAmJiAhXy5oYXMoYm9keU9iaiwgJ25hbWUnKSkge1xuICAgICAgICBsb2cuZGVidWcoYENvcGllZCAnaGFuZGxlJyB2YWx1ZSAnJHtib2R5T2JqLmhhbmRsZX0nIHRvICduYW1lJyBhcyBwZXIgSlNPTldQIHNwZWNgKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCB7XG4gICAgICAgICAgLi4uYm9keU9iaixcbiAgICAgICAgICBuYW1lOiBib2R5T2JqLmhhbmRsZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxuXG4gIGFzeW5jIHByb3h5U2V0VmFsdWUgKHVybCwgbWV0aG9kLCBib2R5KSB7XG4gICAgY29uc3QgYm9keU9iaiA9IHV0aWwuc2FmZUpzb25QYXJzZShib2R5KTtcbiAgICBpZiAoXy5pc1BsYWluT2JqZWN0KGJvZHlPYmopICYmICh1dGlsLmhhc1ZhbHVlKGJvZHlPYmoudGV4dCkgfHwgdXRpbC5oYXNWYWx1ZShib2R5T2JqLnZhbHVlKSkpIHtcbiAgICAgIGxldCB7dGV4dCwgdmFsdWV9ID0gYm9keU9iajtcbiAgICAgIGlmICh1dGlsLmhhc1ZhbHVlKHRleHQpICYmICF1dGlsLmhhc1ZhbHVlKHZhbHVlKSkge1xuICAgICAgICB2YWx1ZSA9IF8uaXNTdHJpbmcodGV4dClcbiAgICAgICAgICA/IFsuLi50ZXh0XVxuICAgICAgICAgIDogKF8uaXNBcnJheSh0ZXh0KSA/IHRleHQgOiBbXSk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgQWRkZWQgJ3ZhbHVlJyBwcm9wZXJ0eSAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX0gdG8gJ3NldFZhbHVlJyByZXF1ZXN0IGJvZHlgKTtcbiAgICAgIH0gZWxzZSBpZiAoIXV0aWwuaGFzVmFsdWUodGV4dCkgJiYgdXRpbC5oYXNWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgdGV4dCA9IF8uaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICA/IHZhbHVlLmpvaW4oJycpXG4gICAgICAgICAgOiAoXy5pc1N0cmluZyh2YWx1ZSkgPyB2YWx1ZSA6ICcnKTtcbiAgICAgICAgbG9nLmRlYnVnKGBBZGRlZCAndGV4dCcgcHJvcGVydHkgJHtKU09OLnN0cmluZ2lmeSh0ZXh0KX0gdG8gJ3NldFZhbHVlJyByZXF1ZXN0IGJvZHlgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5RnVuYyh1cmwsIG1ldGhvZCwgT2JqZWN0LmFzc2lnbih7fSwgYm9keU9iaiwge1xuICAgICAgICB0ZXh0LFxuICAgICAgICB2YWx1ZSxcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIGJvZHkpO1xuICB9XG5cbiAgYXN5bmMgcHJveHlTZXRGcmFtZSAodXJsLCBtZXRob2QsIGJvZHkpIHtcbiAgICBjb25zdCBib2R5T2JqID0gdXRpbC5zYWZlSnNvblBhcnNlKGJvZHkpO1xuICAgIHJldHVybiBfLmhhcyhib2R5T2JqLCAnaWQnKSAmJiBfLmlzUGxhaW5PYmplY3QoYm9keU9iai5pZClcbiAgICAgID8gYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIHtcbiAgICAgICAgLi4uYm9keU9iaixcbiAgICAgICAgaWQ6IGR1cGxpY2F0ZUtleXMoYm9keU9iai5pZCwgTUpTT05XUF9FTEVNRU5UX0tFWSwgVzNDX0VMRU1FTlRfS0VZKSxcbiAgICAgIH0pXG4gICAgICA6IGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxuXG4gIGFzeW5jIHByb3h5UGVyZm9ybUFjdGlvbnMgKHVybCwgbWV0aG9kLCBib2R5KSB7XG4gICAgY29uc3QgYm9keU9iaiA9IHV0aWwuc2FmZUpzb25QYXJzZShib2R5KTtcbiAgICByZXR1cm4gXy5pc1BsYWluT2JqZWN0KGJvZHlPYmopXG4gICAgICA/IGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBkdXBsaWNhdGVLZXlzKGJvZHlPYmosIE1KU09OV1BfRUxFTUVOVF9LRVksIFczQ19FTEVNRU5UX0tFWSkpXG4gICAgICA6IGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxuXG4gIGFzeW5jIHByb3h5UmVsZWFzZUFjdGlvbnMgKHVybCwgbWV0aG9kKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgXCJjcm9zc2luZ1wiIGVuZHBvaW50cyBmb3IgdGhlIGNhc2VcbiAgICogd2hlbiB1cHN0cmVhbSBhbmQgZG93bnN0cmVhbSBkcml2ZXJzIG9wZXJhdGUgZGlmZmVyZW50IHByb3RvY29sc1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29tbWFuZE5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kXG4gICAqIEBwYXJhbSB7P3N0cmluZ3xvYmplY3R9IGJvZHlcbiAgICogQHJldHVybnMgVGhlIHByb3h5ZnlpbmcgcmVzdWx0IGFzIFtyZXNwb25zZSwgcmVzcG9uc2VCb2R5XSB0dXBsZVxuICAgKi9cbiAgYXN5bmMgY29udmVydEFuZFByb3h5IChjb21tYW5kTmFtZSwgdXJsLCBtZXRob2QsIGJvZHkpIHtcbiAgICBpZiAoIXRoaXMuZG93bnN0cmVhbVByb3RvY29sKSB7XG4gICAgICAvLyBQYXRjaCBjYWxscyB3aXRoIEdFTkVSSUMgcHJvdG9jb2xcbiAgICAgIC8vIHRvIHByZXNlcnZlIHRoZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICBjb25zdCBbcmVzLCByZXNCb2R5T2JqXSA9IGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICAgIHJldHVybiBbcmVzLCBmb3JtYXRTdGF0dXMocmVzQm9keU9iaiwgcmVzLnN0YXR1c0NvZGUpXTtcbiAgICB9XG5cbiAgICAvLyBTYW1lIHVybCwgYnV0IGRpZmZlcmVudCBhcmd1bWVudHNcbiAgICBzd2l0Y2ggKGNvbW1hbmROYW1lKSB7XG4gICAgICBjYXNlICd0aW1lb3V0cyc6XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5U2V0VGltZW91dHModXJsLCBtZXRob2QsIGJvZHkpO1xuICAgICAgY2FzZSAnc2V0V2luZG93JzpcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlTZXRXaW5kb3codXJsLCBtZXRob2QsIGJvZHkpO1xuICAgICAgY2FzZSAnc2V0VmFsdWUnOlxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eVNldFZhbHVlKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICAgIGNhc2UgJ3BlcmZvcm1BY3Rpb25zJzpcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlQZXJmb3JtQWN0aW9ucyh1cmwsIG1ldGhvZCwgYm9keSk7XG4gICAgICBjYXNlICdyZWxlYXNlQWN0aW9ucyc6XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5UmVsZWFzZUFjdGlvbnModXJsLCBtZXRob2QsIGJvZHkpO1xuICAgICAgY2FzZSAnc2V0RnJhbWUnOlxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eVNldEZyYW1lKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFNhbWUgYXJndW1lbnRzLCBidXQgZGlmZmVyZW50IFVSTHNcbiAgICBmb3IgKGNvbnN0IHtjb21tYW5kTmFtZXMsIGpzb253cENvbnZlcnRlciwgdzNjQ29udmVydGVyfSBvZiBDT01NQU5EX1VSTFNfQ09ORkxJQ1RTKSB7XG4gICAgICBpZiAoIWNvbW1hbmROYW1lcy5pbmNsdWRlcyhjb21tYW5kTmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJld3JpdHRlblVybCA9IHRoaXMuZG93bnN0cmVhbVByb3RvY29sID09PSBNSlNPTldQXG4gICAgICAgID8ganNvbndwQ29udmVydGVyKHVybClcbiAgICAgICAgOiB3M2NDb252ZXJ0ZXIodXJsKTtcbiAgICAgIGlmIChyZXdyaXR0ZW5VcmwgPT09IHVybCkge1xuICAgICAgICBsb2cuZGVidWcoYERpZCBub3Qga25vdyBob3cgdG8gcmV3cml0ZSB0aGUgb3JpZ2luYWwgVVJMICcke3VybH0nIGAgK1xuICAgICAgICAgIGBmb3IgJHt0aGlzLmRvd25zdHJlYW1Qcm90b2NvbH0gcHJvdG9jb2xgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBsb2cuaW5mbyhgUmV3cm90ZSB0aGUgb3JpZ2luYWwgVVJMICcke3VybH0nIHRvICcke3Jld3JpdHRlblVybH0nIGAgK1xuICAgICAgICBgZm9yICR7dGhpcy5kb3duc3RyZWFtUHJvdG9jb2x9IHByb3RvY29sYCk7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUZ1bmMocmV3cml0dGVuVXJsLCBtZXRob2QsIGJvZHkpO1xuICAgIH1cblxuICAgIC8vIE5vIG1hdGNoZXMgZm91bmQuIFByb2NlZWQgbm9ybWFsbHlcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIGJvZHkpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFByb3RvY29sQ29udmVydGVyO1xuIl0sImZpbGUiOiJsaWIvanNvbndwLXByb3h5L3Byb3RvY29sLWNvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
237
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9qc29ud3AtcHJveHkvcHJvdG9jb2wtY29udmVydGVyLmpzIl0sIm5hbWVzIjpbImxvZyIsImxvZ2dlciIsImdldExvZ2dlciIsIkNPTU1BTkRfVVJMU19DT05GTElDVFMiLCJjb21tYW5kTmFtZXMiLCJqc29ud3BDb252ZXJ0ZXIiLCJ1cmwiLCJyZXBsYWNlIiwiaW5jbHVkZXMiLCJ3M2NDb252ZXJ0ZXIiLCJ0ZXN0IiwidzNjVXJsIiwidzNjUHJvcGVydHlSZWdleCIsImpzb253cFVybCIsImluZm8iLCJNSlNPTldQIiwiVzNDIiwiUFJPVE9DT0xTIiwiUHJvdG9jb2xDb252ZXJ0ZXIiLCJjb25zdHJ1Y3RvciIsInByb3h5RnVuYyIsIl9kb3duc3RyZWFtUHJvdG9jb2wiLCJkb3duc3RyZWFtUHJvdG9jb2wiLCJ2YWx1ZSIsImdldFRpbWVvdXRSZXF1ZXN0T2JqZWN0cyIsImJvZHkiLCJfIiwiaGFzIiwidHlwZVRvVzNDIiwieCIsInR5cGUiLCJtcyIsInR5cGVUb0pTT05XUCIsInRvUGFpcnMiLCJmaWx0ZXIiLCJwYWlyIiwibWFwIiwicHJveHlTZXRUaW1lb3V0cyIsIm1ldGhvZCIsInJlc3BvbnNlIiwicmVzQm9keSIsInRpbWVvdXRSZXF1ZXN0T2JqZWN0cyIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsInRpbWVvdXRPYmoiLCJzdGF0dXNDb2RlIiwicHJveHlTZXRXaW5kb3ciLCJib2R5T2JqIiwidXRpbCIsInNhZmVKc29uUGFyc2UiLCJpc1BsYWluT2JqZWN0IiwibmFtZSIsImhhbmRsZSIsInByb3h5U2V0VmFsdWUiLCJoYXNWYWx1ZSIsInRleHQiLCJpc1N0cmluZyIsImlzQXJyYXkiLCJqb2luIiwiT2JqZWN0IiwiYXNzaWduIiwicHJveHlTZXRGcmFtZSIsImlkIiwiTUpTT05XUF9FTEVNRU5UX0tFWSIsIlczQ19FTEVNRU5UX0tFWSIsInByb3h5UGVyZm9ybUFjdGlvbnMiLCJwcm94eVJlbGVhc2VBY3Rpb25zIiwiY29udmVy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QUFDQyxHQUFELENBREUsR0FFakJHLFlBQVksQ0FBQ0gsR0FBRCxDQUZoQjs7QUFHQSxVQUFJZ0UsWUFBWSxLQUFLaEUsR0FBckIsRUFBMEI7QUFDeEJOLFFBQUFBLEdBQUcsQ0FBQzBDLEtBQUosQ0FBVyxpREFBZ0RwQyxHQUFJLElBQXJELEdBQ1AsT0FBTSxLQUFLZ0Isa0JBQW1CLFdBRGpDO0FBRUE7QUFDRDs7QUFDRHRCLE1BQUFBLEdBQUcsQ0FBQ2MsSUFBSixDQUFVLDZCQUE0QlIsR0FBSSxTQUFRZ0UsWUFBYSxJQUF0RCxHQUNOLE9BQU0sS0FBS2hELGtCQUFtQixXQURqQztBQUVBLGFBQU8sTUFBTSxLQUFLRixTQUFMLENBQWVrRCxZQUFmLEVBQTZCaEMsTUFBN0IsRUFBcUNiLElBQXJDLENBQWI7QUFDRDs7QUFHRCxXQUFPLE1BQU0sS0FBS0wsU0FBTCxDQUFlZCxHQUFmLEVBQW9CZ0MsTUFBcEIsRUFBNEJiLElBQTVCLENBQWI7QUFDRDs7QUFwTXFCOztlQXVNVFAsaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgbG9nZ2VyLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IGR1cGxpY2F0ZUtleXMgfSBmcm9tICcuLi9iYXNlZHJpdmVyL2hlbHBlcnMnO1xuaW1wb3J0IHtcbiAgTUpTT05XUF9FTEVNRU5UX0tFWSwgVzNDX0VMRU1FTlRfS0VZLCBQUk9UT0NPTFNcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuY29uc3QgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignUHJvdG9jb2wgQ29udmVydGVyJyk7XG5cblxuZXhwb3J0IGNvbnN0IENPTU1BTkRfVVJMU19DT05GTElDVFMgPSBbXG4gIHtcbiAgICBjb21tYW5kTmFtZXM6IFsnZXhlY3V0ZScsICdleGVjdXRlQXN5bmMnXSxcbiAgICBqc29ud3BDb252ZXJ0ZXI6ICh1cmwpID0+IHVybC5yZXBsYWNlKC9cXC9leGVjdXRlLiovLFxuICAgICAgdXJsLmluY2x1ZGVzKCdhc3luYycpID8gJy9leGVjdXRlX2FzeW5jJyA6ICcvZXhlY3V0ZScpLFxuICAgIHczY0NvbnZlcnRlcjogKHVybCkgPT4gdXJsLnJlcGxhY2UoL1xcL2V4ZWN1dGUuKi8sXG4gICAgICB1cmwuaW5jbHVkZXMoJ2FzeW5jJykgPyAnL2V4ZWN1dGUvYXN5bmMnIDogJy9leGVjdXRlL3N5bmMnKSxcbiAgfSxcbiAge1xuICAgIGNvbW1hbmROYW1lczogWydnZXRFbGVtZW50U2NyZWVuc2hvdCddLFxuICAgIGpzb253cENvbnZlcnRlcjogKHVybCkgPT4gdXJsLnJlcGxhY2UoL1xcL2VsZW1lbnRcXC8oW14vXSspXFwvc2NyZWVuc2hvdCQvLFxuICAgICAgJy9zY3JlZW5zaG90LyQxJyksXG4gICAgdzNjQ29udmVydGVyOiAodXJsKSA9PiB1cmwucmVwbGFjZSgvXFwvc2NyZWVuc2hvdFxcLyhbXi9dKykvLFxuICAgICAgJy9lbGVtZW50LyQxL3NjcmVlbnNob3QnKSxcbiAgfSxcbiAge1xuICAgIGNvbW1hbmROYW1lczogWydnZXRXaW5kb3dIYW5kbGVzJywgJ2dldFdpbmRvd0hhbmRsZSddLFxuICAgIGpzb253cENvbnZlcnRlciAodXJsKSB7XG4gICAgICByZXR1cm4gL1xcL3dpbmRvdyQvLnRlc3QodXJsKVxuICAgICAgICA/IHVybC5yZXBsYWNlKC9cXC93aW5kb3ckLywgJy93aW5kb3dfaGFuZGxlJylcbiAgICAgICAgOiB1cmwucmVwbGFjZSgvXFwvd2luZG93XFwvaGFuZGxlKHM/KSQvLCAnL3dpbmRvd19oYW5kbGUkMScpO1xuICAgIH0sXG4gICAgdzNjQ29udmVydGVyICh1cmwpIHtcbiAgICAgIHJldHVybiAvXFwvd2luZG93X2hhbmRsZSQvLnRlc3QodXJsKVxuICAgICAgICA/IHVybC5yZXBsYWNlKC9cXC93aW5kb3dfaGFuZGxlJC8sICcvd2luZG93JylcbiAgICAgICAgOiB1cmwucmVwbGFjZSgvXFwvd2luZG93X2hhbmRsZXMkLywgJy93aW5kb3cvaGFuZGxlcycpO1xuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBjb21tYW5kTmFtZXM6IFsnZ2V0UHJvcGVydHknXSxcbiAgICBqc29ud3BDb252ZXJ0ZXI6ICh3M2NVcmwpID0+IHtcbiAgICAgIGNvbnN0IHczY1Byb3BlcnR5UmVnZXggPSAvXFwvZWxlbWVudFxcLyhbXi9dKylcXC9wcm9wZXJ0eVxcLyhbXi9dKykvO1xuICAgICAgY29uc3QganNvbndwVXJsID0gdzNjVXJsLnJlcGxhY2UodzNjUHJvcGVydHlSZWdleCwgJy9lbGVtZW50LyQxL2F0dHJpYnV0ZS8kMicpO1xuICAgICAgbG9nLmluZm8oYENvbnZlcnRpbmcgVzNDICcke3czY1VybH0nIHRvICcke2pzb253cFVybH0nYCk7XG4gICAgICByZXR1cm4ganNvbndwVXJsO1xuICAgIH0sXG4gICAgdzNjQ29udmVydGVyOiAoanNvbndwVXJsKSA9PiBqc29ud3BVcmwgLy8gRG9uJ3QgY29udmVydCBKU09OV1AgVVJMIHRvIFczQy4gVzNDIGFjY2VwdHMgL2F0dHJpYnV0ZSBhbmQgL3Byb3BlcnR5XG4gIH1cbl07XG5cbmNvbnN0IHtNSlNPTldQLCBXM0N9ID0gUFJPVE9DT0xTO1xuXG5cbmNsYXNzIFByb3RvY29sQ29udmVydGVyIHtcbiAgY29uc3RydWN0b3IgKHByb3h5RnVuYykge1xuICAgIHRoaXMucHJveHlGdW5jID0gcHJveHlGdW5jO1xuICAgIHRoaXMuX2Rvd25zdHJlYW1Qcm90b2NvbCA9IG51bGw7XG4gIH1cblxuICBzZXQgZG93bnN0cmVhbVByb3RvY29sICh2YWx1ZSkge1xuICAgIHRoaXMuX2Rvd25zdHJlYW1Qcm90b2NvbCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGRvd25zdHJlYW1Qcm90b2NvbCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rvd25zdHJlYW1Qcm90b2NvbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXM0MgL3RpbWVvdXRzIGNhbiB0YWtlIGFzIG1hbnkgYXMgMyB0aW1lb3V0IHR5cGVzIGF0IG9uY2UsIE1KU09OV1AgL3RpbWVvdXRzIG9ubHkgdGFrZXMgb25lXG4gICAqIGF0IGEgdGltZS4gU28gaWYgd2UncmUgdXNpbmcgVzNDIGFuZCBwcm94eWluZyB0byBNSlNPTldQIGFuZCB0aGVyZSdzIG1vcmUgdGhhbiBvbmUgdGltZW91dCB0eXBlXG4gICAqIHByb3ZpZGVkIGluIHRoZSByZXF1ZXN0LCB3ZSBuZWVkIHRvIGRvIDMgcHJveGllcyBhbmQgY29tYmluZSB0aGUgcmVzdWx0XG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBib2R5IFJlcXVlc3QgYm9keVxuICAgKiBAcmV0dXJuIHtBcnJheX0gQXJyYXkgb2YgVzNDICsgTUpTT05XUCBjb21wYXRpYmxlIHRpbWVvdXQgb2JqZWN0c1xuICAgKi9cbiAgZ2V0VGltZW91dFJlcXVlc3RPYmplY3RzIChib2R5KSB7XG4gICAgaWYgKHRoaXMuZG93bnN0cmVhbVByb3RvY29sID09PSBXM0MgJiYgXy5oYXMoYm9keSwgJ21zJykgJiYgXy5oYXMoYm9keSwgJ3R5cGUnKSkge1xuICAgICAgY29uc3QgdHlwZVRvVzNDID0gKHgpID0+IHggPT09ICdwYWdlIGxvYWQnID8gJ3BhZ2VMb2FkJyA6IHg7XG4gICAgICByZXR1cm4gW3tcbiAgICAgICAgW3R5cGVUb1czQyhib2R5LnR5cGUpXTogYm9keS5tcyxcbiAgICAgIH1dO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRvd25zdHJlYW1Qcm90b2NvbCA9PT0gTUpTT05XUCAmJiAoIV8uaGFzKGJvZHksICdtcycpIHx8ICFfLmhhcyhib2R5LCAndHlwZScpKSkge1xuICAgICAgY29uc3QgdHlwZVRvSlNPTldQID0gKHgpID0+IHggPT09ICdwYWdlTG9hZCcgPyAncGFnZSBsb2FkJyA6IHg7XG4gICAgICByZXR1cm4gXy50b1BhaXJzKGJvZHkpXG4gICAgICAgIC8vIE9ubHkgdHJhbnNmb3JtIHRoZSBlbnRyeSBpZiBtcyB2YWx1ZSBpcyBhIHZhbGlkIHBvc2l0aXZlIGZsb2F0IG51bWJlclxuICAgICAgICAuZmlsdGVyKChwYWlyKSA9PiAvXlxcZCsoPzpbLixdXFxkKj8pPyQvLnRlc3QoYCR7cGFpclsxXX1gKSlcbiAgICAgICAgLm1hcChmdW5jdGlvbiAocGFpcikge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiB0eXBlVG9KU09OV1AocGFpclswXSksXG4gICAgICAgICAgICBtczogcGFpclsxXSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gW2JvZHldO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb3h5IGFuIGFycmF5IG9mIHRpbWVvdXQgb2JqZWN0cyBhbmQgbWVyZ2UgdGhlIHJlc3VsdFxuICAgKiBAcGFyYW0ge1N0cmluZ30gdXJsIEVuZHBvaW50IHVybFxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWV0aG9kIEVuZHBvaW50IG1ldGhvZFxuICAgKiBAcGFyYW0ge09iamVjdH0gYm9keSBSZXF1ZXN0IGJvZHlcbiAgICovXG4gIGFzeW5jIHByb3h5U2V0VGltZW91dHMgKHVybCwgbWV0aG9kLCBib2R5KSB7XG4gICAgbGV0IHJlc3BvbnNlLCByZXNCb2R5O1xuXG4gICAgY29uc3QgdGltZW91dFJlcXVlc3RPYmplY3RzID0gdGhpcy5nZXRUaW1lb3V0UmVxdWVzdE9iamVjdHMoYm9keSk7XG4gICAgbG9nLmRlYnVnKGBXaWxsIHNlbmQgdGhlIGZvbGxvd2luZyByZXF1ZXN0IGJvZGllcyB0byAvdGltZW91dHM6ICR7SlNPTi5zdHJpbmdpZnkodGltZW91dFJlcXVlc3RPYmplY3RzKX1gKTtcbiAgICBmb3IgKGNvbnN0IHRpbWVvdXRPYmogb2YgdGltZW91dFJlcXVlc3RPYmplY3RzKSB7XG4gICAgICBbcmVzcG9uc2UsIHJlc0JvZHldID0gYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIHRpbWVvdXRPYmopO1xuXG4gICAgICAvLyBJZiB3ZSBnb3QgYSBub24tTUpTT05XUCByZXNwb25zZSwgcmV0dXJuIHRoZSByZXN1bHQsIG5vdGhpbmcgbGVmdCB0byBkb1xuICAgICAgaWYgKHRoaXMuZG93bnN0cmVhbVByb3RvY29sICE9PSBNSlNPTldQKSB7XG4gICAgICAgIHJldHVybiBbcmVzcG9uc2UsIHJlc0JvZHldO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB3ZSBnb3QgYW4gZXJyb3IsIHJldHVybiB0aGUgZXJyb3IgcmlnaHQgYXdheVxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPj0gNDAwKSB7XG4gICAgICAgIHJldHVybiBbcmVzcG9uc2UsIHJlc0JvZHldO1xuICAgICAgfVxuXG4gICAgICAvLyAuLi5PdGhlcndpc2UsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IHRpbWVvdXRzIGNhbGxcbiAgICB9XG4gICAgcmV0dXJuIFtyZXNwb25zZSwgcmVzQm9keV07XG4gIH1cblxuICBhc3luYyBwcm94eVNldFdpbmRvdyAodXJsLCBtZXRob2QsIGJvZHkpIHtcbiAgICBjb25zdCBib2R5T2JqID0gdXRpbC5zYWZlSnNvblBhcnNlKGJvZHkpO1xuICAgIGlmIChfLmlzUGxhaW5PYmplY3QoYm9keU9iaikpIHtcbiAgICAgIGlmICh0aGlzLmRvd25zdHJlYW1Qcm90b2NvbCA9PT0gVzNDICYmIF8uaGFzKGJvZHlPYmosICduYW1lJykgJiYgIV8uaGFzKGJvZHlPYmosICdoYW5kbGUnKSkge1xuICAgICAgICBsb2cuZGVidWcoYENvcGllZCAnbmFtZScgdmFsdWUgJyR7Ym9keU9iai5uYW1lfScgdG8gJ2hhbmRsZScgYXMgcGVyIFczQyBzcGVjYCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5RnVuYyh1cmwsIG1ldGhvZCwge1xuICAgICAgICAgIC4uLmJvZHlPYmosXG4gICAgICAgICAgaGFuZGxlOiBib2R5T2JqLm5hbWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZG93bnN0cmVhbVByb3RvY29sID09PSBNSlNPTldQICYmIF8uaGFzKGJvZHlPYmosICdoYW5kbGUnKSAmJiAhXy5oYXMoYm9keU9iaiwgJ25hbWUnKSkge1xuICAgICAgICBsb2cuZGVidWcoYENvcGllZCAnaGFuZGxlJyB2YWx1ZSAnJHtib2R5T2JqLmhhbmRsZX0nIHRvICduYW1lJyBhcyBwZXIgSlNPTldQIHNwZWNgKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCB7XG4gICAgICAgICAgLi4uYm9keU9iaixcbiAgICAgICAgICBuYW1lOiBib2R5T2JqLmhhbmRsZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxuXG4gIGFzeW5jIHByb3h5U2V0VmFsdWUgKHVybCwgbWV0aG9kLCBib2R5KSB7XG4gICAgY29uc3QgYm9keU9iaiA9IHV0aWwuc2FmZUpzb25QYXJzZShib2R5KTtcbiAgICBpZiAoXy5pc1BsYWluT2JqZWN0KGJvZHlPYmopICYmICh1dGlsLmhhc1ZhbHVlKGJvZHlPYmoudGV4dCkgfHwgdXRpbC5oYXNWYWx1ZShib2R5T2JqLnZhbHVlKSkpIHtcbiAgICAgIGxldCB7dGV4dCwgdmFsdWV9ID0gYm9keU9iajtcbiAgICAgIGlmICh1dGlsLmhhc1ZhbHVlKHRleHQpICYmICF1dGlsLmhhc1ZhbHVlKHZhbHVlKSkge1xuICAgICAgICB2YWx1ZSA9IF8uaXNTdHJpbmcodGV4dClcbiAgICAgICAgICA/IFsuLi50ZXh0XVxuICAgICAgICAgIDogKF8uaXNBcnJheSh0ZXh0KSA/IHRleHQgOiBbXSk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgQWRkZWQgJ3ZhbHVlJyBwcm9wZXJ0eSAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX0gdG8gJ3NldFZhbHVlJyByZXF1ZXN0IGJvZHlgKTtcbiAgICAgIH0gZWxzZSBpZiAoIXV0aWwuaGFzVmFsdWUodGV4dCkgJiYgdXRpbC5oYXNWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgdGV4dCA9IF8uaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICA/IHZhbHVlLmpvaW4oJycpXG4gICAgICAgICAgOiAoXy5pc1N0cmluZyh2YWx1ZSkgPyB2YWx1ZSA6ICcnKTtcbiAgICAgICAgbG9nLmRlYnVnKGBBZGRlZCAndGV4dCcgcHJvcGVydHkgJHtKU09OLnN0cmluZ2lmeSh0ZXh0KX0gdG8gJ3NldFZhbHVlJyByZXF1ZXN0IGJvZHlgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5RnVuYyh1cmwsIG1ldGhvZCwgT2JqZWN0LmFzc2lnbih7fSwgYm9keU9iaiwge1xuICAgICAgICB0ZXh0LFxuICAgICAgICB2YWx1ZSxcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIGJvZHkpO1xuICB9XG5cbiAgYXN5bmMgcHJveHlTZXRGcmFtZSAodXJsLCBtZXRob2QsIGJvZHkpIHtcbiAgICBjb25zdCBib2R5T2JqID0gdXRpbC5zYWZlSnNvblBhcnNlKGJvZHkpO1xuICAgIHJldHVybiBfLmhhcyhib2R5T2JqLCAnaWQnKSAmJiBfLmlzUGxhaW5PYmplY3QoYm9keU9iai5pZClcbiAgICAgID8gYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIHtcbiAgICAgICAgLi4uYm9keU9iaixcbiAgICAgICAgaWQ6IGR1cGxpY2F0ZUtleXMoYm9keU9iai5pZCwgTUpTT05XUF9FTEVNRU5UX0tFWSwgVzNDX0VMRU1FTlRfS0VZKSxcbiAgICAgIH0pXG4gICAgICA6IGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxuXG4gIGFzeW5jIHByb3h5UGVyZm9ybUFjdGlvbnMgKHVybCwgbWV0aG9kLCBib2R5KSB7XG4gICAgY29uc3QgYm9keU9iaiA9IHV0aWwuc2FmZUpzb25QYXJzZShib2R5KTtcbiAgICByZXR1cm4gXy5pc1BsYWluT2JqZWN0KGJvZHlPYmopXG4gICAgICA/IGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBkdXBsaWNhdGVLZXlzKGJvZHlPYmosIE1KU09OV1BfRUxFTUVOVF9LRVksIFczQ19FTEVNRU5UX0tFWSkpXG4gICAgICA6IGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxuXG4gIGFzeW5jIHByb3h5UmVsZWFzZUFjdGlvbnMgKHVybCwgbWV0aG9kKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgXCJjcm9zc2luZ1wiIGVuZHBvaW50cyBmb3IgdGhlIGNhc2VcbiAgICogd2hlbiB1cHN0cmVhbSBhbmQgZG93bnN0cmVhbSBkcml2ZXJzIG9wZXJhdGUgZGlmZmVyZW50IHByb3RvY29sc1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29tbWFuZE5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kXG4gICAqIEBwYXJhbSB7P3N0cmluZ3xvYmplY3R9IGJvZHlcbiAgICogQHJldHVybnMgVGhlIHByb3h5ZnlpbmcgcmVzdWx0IGFzIFtyZXNwb25zZSwgcmVzcG9uc2VCb2R5XSB0dXBsZVxuICAgKi9cbiAgYXN5bmMgY29udmVydEFuZFByb3h5IChjb21tYW5kTmFtZSwgdXJsLCBtZXRob2QsIGJvZHkpIHtcbiAgICBpZiAoIXRoaXMuZG93bnN0cmVhbVByb3RvY29sKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIGJvZHkpO1xuICAgIH1cblxuICAgIC8vIFNhbWUgdXJsLCBidXQgZGlmZmVyZW50IGFyZ3VtZW50c1xuICAgIHN3aXRjaCAoY29tbWFuZE5hbWUpIHtcbiAgICAgIGNhc2UgJ3RpbWVvdXRzJzpcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlTZXRUaW1lb3V0cyh1cmwsIG1ldGhvZCwgYm9keSk7XG4gICAgICBjYXNlICdzZXRXaW5kb3cnOlxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eVNldFdpbmRvdyh1cmwsIG1ldGhvZCwgYm9keSk7XG4gICAgICBjYXNlICdzZXRWYWx1ZSc6XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5U2V0VmFsdWUodXJsLCBtZXRob2QsIGJvZHkpO1xuICAgICAgY2FzZSAncGVyZm9ybUFjdGlvbnMnOlxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eVBlcmZvcm1BY3Rpb25zKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICAgIGNhc2UgJ3JlbGVhc2VBY3Rpb25zJzpcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlSZWxlYXNlQWN0aW9ucyh1cmwsIG1ldGhvZCwgYm9keSk7XG4gICAgICBjYXNlICdzZXRGcmFtZSc6XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5U2V0RnJhbWUodXJsLCBtZXRob2QsIGJvZHkpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gU2FtZSBhcmd1bWVudHMsIGJ1dCBkaWZmZXJlbnQgVVJMc1xuICAgIGZvciAoY29uc3Qge2NvbW1hbmROYW1lcywganNvbndwQ29udmVydGVyLCB3M2NDb252ZXJ0ZXJ9IG9mIENPTU1BTkRfVVJMU19DT05GTElDVFMpIHtcbiAgICAgIGlmICghY29tbWFuZE5hbWVzLmluY2x1ZGVzKGNvbW1hbmROYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmV3cml0dGVuVXJsID0gdGhpcy5kb3duc3RyZWFtUHJvdG9jb2wgPT09IE1KU09OV1BcbiAgICAgICAgPyBqc29ud3BDb252ZXJ0ZXIodXJsKVxuICAgICAgICA6IHczY0NvbnZlcnRlcih1cmwpO1xuICAgICAgaWYgKHJld3JpdHRlblVybCA9PT0gdXJsKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgRGlkIG5vdCBrbm93IGhvdyB0byByZXdyaXRlIHRoZSBvcmlnaW5hbCBVUkwgJyR7dXJsfScgYCArXG4gICAgICAgICAgYGZvciAke3RoaXMuZG93bnN0cmVhbVByb3RvY29sfSBwcm90b2NvbGApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGxvZy5pbmZvKGBSZXdyb3RlIHRoZSBvcmlnaW5hbCBVUkwgJyR7dXJsfScgdG8gJyR7cmV3cml0dGVuVXJsfScgYCArXG4gICAgICAgIGBmb3IgJHt0aGlzLmRvd25zdHJlYW1Qcm90b2NvbH0gcHJvdG9jb2xgKTtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5RnVuYyhyZXdyaXR0ZW5VcmwsIG1ldGhvZCwgYm9keSk7XG4gICAgfVxuXG4gICAgLy8gTm8gbWF0Y2hlcyBmb3VuZC4gUHJvY2VlZCBub3JtYWxseVxuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5RnVuYyh1cmwsIG1ldGhvZCwgYm9keSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHJvdG9jb2xDb252ZXJ0ZXI7XG4iXSwiZmlsZSI6ImxpYi9qc29ud3AtcHJveHkvcHJvdG9jb2wtY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|
|
@@ -27,8 +27,6 @@ var _protocolConverter = _interopRequireDefault(require("./protocol-converter"))
|
|
|
27
27
|
|
|
28
28
|
var _helpers = require("../protocol/helpers");
|
|
29
29
|
|
|
30
|
-
var _sessionsCache = _interopRequireDefault(require("../protocol/sessions-cache"));
|
|
31
|
-
|
|
32
30
|
var _http = _interopRequireDefault(require("http"));
|
|
33
31
|
|
|
34
32
|
var _https = _interopRequireDefault(require("https"));
|
|
@@ -370,8 +368,7 @@ class JWProxy {
|
|
|
370
368
|
}
|
|
371
369
|
|
|
372
370
|
resBodyObj.value = (0, _helpers.formatResponseValue)(resBodyObj.value);
|
|
373
|
-
(0, _helpers.formatStatus)(resBodyObj
|
|
374
|
-
res.status(response.statusCode).send(JSON.stringify(resBodyObj));
|
|
371
|
+
res.status(response.statusCode).send(JSON.stringify((0, _helpers.formatStatus)(resBodyObj)));
|
|
375
372
|
}
|
|
376
373
|
|
|
377
374
|
}
|
|
@@ -381,4 +378,4 @@ var _default = JWProxy;
|
|
|
381
378
|
exports.default = _default;require('source-map-support').install();
|
|
382
379
|
|
|
383
380
|
|
|
384
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9qc29ud3AtcHJveHkvcHJveHkuanMiXSwibmFtZXMiOlsibG9nIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIiwiREVGQVVMVF9SRVFVRVNUX1RJTUVPVVQiLCJDT01QQUNUX0VSUk9SX1BBVFRFUk5TIiwiTUpTT05XUCIsIlczQyIsIlBST1RPQ09MUyIsIkpXUHJveHkiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJfIiwiZGVmYXVsdHMiLCJzY2hlbWUiLCJzZXJ2ZXIiLCJwb3J0IiwiYmFzZSIsIkRFRkFVTFRfQkFTRV9QQVRIIiwicmVxQmFzZVBhdGgiLCJzZXNzaW9uSWQiLCJ0aW1lb3V0IiwidG9Mb3dlckNhc2UiLCJfYWN0aXZlUmVxdWVzdHMiLCJfZG93bnN0cmVhbVByb3RvY29sIiwiYWdlbnRPcHRzIiwia2VlcEFsaXZlIiwibWF4U29ja2V0cyIsIm1heEZyZWVTb2NrZXRzIiwiaHR0cEFnZW50IiwiaHR0cCIsIkFnZW50IiwiaHR0cHNBZ2VudCIsImh0dHBzIiwicHJvdG9jb2xDb252ZXJ0ZXIiLCJQcm90b2NvbENvbnZlcnRlciIsInByb3h5IiwiYmluZCIsInJlcXVlc3QiLCJyZXF1ZXN0Q29uZmlnIiwicmVxUHJvbWlzZSIsInB1c2giLCJwdWxsIiwiZ2V0QWN0aXZlUmVxdWVzdHNDb3VudCIsImxlbmd0aCIsImNhbmNlbEFjdGl2ZVJlcXVlc3RzIiwiZW5kcG9pbnRSZXF1aXJlc1Nlc3Npb25JZCIsImVuZHBvaW50IiwiaW5jbHVkZXMiLCJkb3duc3RyZWFtUHJvdG9jb2wiLCJ2YWx1ZSIsImdldFVybEZvclByb3h5IiwidXJsIiwicHJveHlCYXNlIiwiZW5kcG9pbnRSZSIsInJlbWFpbmluZ1VybCIsInRlc3QiLCJmaXJzdCIsIlJlZ0V4cCIsImV4ZWMiLCJFcnJvciIsInJlcGxhY2UiLCJzdHJpcFByZWZpeFJlIiwicmVxdWlyZXNTZXNzaW9uSWQiLCJzZXNzaW9uQmFzZVJlIiwibWF0Y2giLCJtZXRob2QiLCJib2R5IiwidG9VcHBlckNhc2UiLCJuZXdVcmwiLCJ0cnVuY2F0ZUJvZHkiLCJjb250ZW50IiwidHJ1bmNhdGUiLCJpc1N0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJNQVhfTE9HX0JPRFlfTEVOR1RIIiwicmVxT3B0cyIsImhlYWRlcnMiLCJhY2NlcHQiLCJ1dGlsIiwiaGFzVmFsdWUiLCJkYXRhIiwicGFyc2UiLCJlIiwiZGVidWciLCJ0aHJvd1Byb3h5RXJyb3IiLCJlcnJvciIsImVyciIsInJlc3BvbnNlIiwic3RhdHVzIiwiaXNSZXNwb25zZUxvZ2dlZCIsImlzUGxhaW5PYmplY3QiLCJpc1Nlc3Npb25DcmVhdGlvblJlcXVlc3QiLCJnZXRQcm90b2NvbEZyb21SZXNCb2R5IiwiaW5mbyIsImhhcyIsInBhcnNlSW50IiwicmVzIiwic3RhdHVzQ29kZSIsInByb3h5RXJyb3JNc2ciLCJtZXNzYWdlIiwic29tZSIsInAiLCJzdGFjayIsImVycm9ycyIsIlByb3h5UmVxdWVzdEVycm9yIiwicmVzT2JqIiwiaXNJbnRlZ2VyIiwiaXNVbmRlZmluZWQiLCJyZXF1ZXN0VG9Db21tYW5kTmFtZSIsImV4dHJhY3RDb21tYW5kTmFtZSIsInBhdHRlcm4iLCJwYXRoTWF0Y2giLCJjb21tYW5kTmFtZSIsImVzY2FwZVJlZ0V4cCIsInByb3h5Q29tbWFuZCIsImNvbnZlcnRBbmRQcm94eSIsImNvbW1hbmQiLCJyZXNCb2R5T2JqIiwiZ2V0QWN0dWFsRXJyb3IiLCJVbmtub3duRXJyb3IiLCJwcm90b2NvbCIsImlzTmFOIiwiaXNFbXB0eSIsInN0YWNrdHJhY2UiLCJnZXRTZXNzaW9uSWRGcm9tVXJsIiwicHJveHlSZXFSZXMiLCJyZXEiLCJvcmlnaW5hbFVybCIsInNldCIsInJlcVNlc3Npb25JZCIsIlNFU1NJT05TX0NBQ0hFIiwiZ2V0UHJvdG9jb2wiLCJzZW5kIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNB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XyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgbG9nZ2VyLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBnZXRTdW1tYXJ5QnlDb2RlIH0gZnJvbSAnLi4vanNvbndwLXN0YXR1cy9zdGF0dXMnO1xuaW1wb3J0IHtcbiAgZXJyb3JzLCBpc0Vycm9yVHlwZSwgZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUsIGVycm9yRnJvbVczQ0pzb25Db2RlXG59IGZyb20gJy4uL3Byb3RvY29sL2Vycm9ycyc7XG5pbXBvcnQgeyByb3V0ZVRvQ29tbWFuZE5hbWUgfSBmcm9tICcuLi9wcm90b2NvbCc7XG5pbXBvcnQgeyBNQVhfTE9HX0JPRFlfTEVOR1RILCBERUZBVUxUX0JBU0VfUEFUSCwgUFJPVE9DT0xTIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm90b2NvbENvbnZlcnRlciBmcm9tICcuL3Byb3RvY29sLWNvbnZlcnRlcic7XG5pbXBvcnQgeyBmb3JtYXRSZXNwb25zZVZhbHVlLCBmb3JtYXRTdGF0dXMgfSBmcm9tICcuLi9wcm90b2NvbC9oZWxwZXJzJztcbmltcG9ydCBTRVNTSU9OU19DQUNIRSBmcm9tICcuLi9wcm90b2NvbC9zZXNzaW9ucy1jYWNoZSc7XG5pbXBvcnQgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5cblxuY29uc3QgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignV0QgUHJveHknKTtcbmNvbnN0IERFRkFVTFRfUkVRVUVTVF9USU1FT1VUID0gMjQwMDAwO1xuY29uc3QgQ09NUEFDVF9FUlJPUl9QQVRURVJOUyA9IFtcbiAgL1xcYkVDT05OUkVGVVNFRFxcYi8sXG4gIC9zb2NrZXQgaGFuZyB1cC8sXG5dO1xuXG5jb25zdCB7TUpTT05XUCwgVzNDfSA9IFBST1RPQ09MUztcblxuY2xhc3MgSldQcm94eSB7XG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICBfLmRlZmF1bHRzKHRoaXMsIG9wdHMsIHtcbiAgICAgIHNjaGVtZTogJ2h0dHAnLFxuICAgICAgc2VydmVyOiAnbG9jYWxob3N0JyxcbiAgICAgIHBvcnQ6IDQ0NDQsXG4gICAgICBiYXNlOiBERUZBVUxUX0JBU0VfUEFUSCxcbiAgICAgIHJlcUJhc2VQYXRoOiBERUZBVUxUX0JBU0VfUEFUSCxcbiAgICAgIHNlc3Npb25JZDogbnVsbCxcbiAgICAgIHRpbWVvdXQ6IERFRkFVTFRfUkVRVUVTVF9USU1FT1VULFxuICAgIH0pO1xuICAgIHRoaXMuc2NoZW1lID0gdGhpcy5zY2hlbWUudG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLl9hY3RpdmVSZXF1ZXN0cyA9IFtdO1xuICAgIHRoaXMuX2Rvd25zdHJlYW1Qcm90b2NvbCA9IG51bGw7XG4gICAgY29uc3QgYWdlbnRPcHRzID0ge1xuICAgICAga2VlcEFsaXZlOiBvcHRzLmtlZXBBbGl2ZSA/PyB0cnVlLFxuICAgICAgbWF4U29ja2V0czogMTAsXG4gICAgICBtYXhGcmVlU29ja2V0czogNSxcbiAgICB9O1xuICAgIHRoaXMuaHR0cEFnZW50ID0gbmV3IGh0dHAuQWdlbnQoYWdlbnRPcHRzKTtcbiAgICB0aGlzLmh0dHBzQWdlbnQgPSBuZXcgaHR0cHMuQWdlbnQoYWdlbnRPcHRzKTtcbiAgICB0aGlzLnByb3RvY29sQ29udmVydGVyID0gbmV3IFByb3RvY29sQ29udmVydGVyKHRoaXMucHJveHkuYmluZCh0aGlzKSk7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybXMgcmVxdWVzdHMgdG8gdGhlIGRvd25zdHJlYW0gc2VydmVyXG4gICAqXG4gICAqIEBwcml2YXRlIC0gRG8gbm90IGNhbGwgdGhpcyBtZXRob2QgZGlyZWN0bHksXG4gICAqIGl0IHVzZXMgY2xpZW50LXNwZWNpZmljIGFyZ3VtZW50cyBhbmQgcmVzcG9uc2VzIVxuICAgKlxuICAgKiBAcGFyYW0ge0F4aW9zUmVxdWVzdENvbmZpZ30gcmVxdWVzdENvbmZpZ1xuICAgKiBAcmV0dXJucyB7QXhpb3NSZXNwb25zZX1cbiAgICovXG4gIGFzeW5jIHJlcXVlc3QgKHJlcXVlc3RDb25maWcpIHtcbiAgICBjb25zdCByZXFQcm9taXNlID0gYXhpb3MocmVxdWVzdENvbmZpZyk7XG4gICAgdGhpcy5fYWN0aXZlUmVxdWVzdHMucHVzaChyZXFQcm9taXNlKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHJlcVByb21pc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIF8ucHVsbCh0aGlzLl9hY3RpdmVSZXF1ZXN0cywgcmVxUHJvbWlzZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0QWN0aXZlUmVxdWVzdHNDb3VudCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVJlcXVlc3RzLmxlbmd0aDtcbiAgfVxuXG4gIGNhbmNlbEFjdGl2ZVJlcXVlc3RzICgpIHtcbiAgICB0aGlzLl9hY3RpdmVSZXF1ZXN0cyA9IFtdO1xuICB9XG5cbiAgZW5kcG9pbnRSZXF1aXJlc1Nlc3Npb25JZCAoZW5kcG9pbnQpIHtcbiAgICByZXR1cm4gIV8uaW5jbHVkZXMoWycvc2Vzc2lvbicsICcvc2Vzc2lvbnMnLCAnL3N0YXR1cyddLCBlbmRwb2ludCk7XG4gIH1cblxuICBzZXQgZG93bnN0cmVhbVByb3RvY29sICh2YWx1ZSkge1xuICAgIHRoaXMuX2Rvd25zdHJlYW1Qcm90b2NvbCA9IHZhbHVlO1xuICAgIHRoaXMucHJvdG9jb2xDb252ZXJ0ZXIuZG93bnN0cmVhbVByb3RvY29sID0gdmFsdWU7XG4gIH1cblxuICBnZXQgZG93bnN0cmVhbVByb3RvY29sICgpIHtcbiAgICByZXR1cm4gdGhpcy5fZG93bnN0cmVhbVByb3RvY29sO1xuICB9XG5cbiAgZ2V0VXJsRm9yUHJveHkgKHVybCkge1xuICAgIGlmICh1cmwgPT09ICcnKSB7XG4gICAgICB1cmwgPSAnLyc7XG4gICAgfVxuICAgIGNvbnN0IHByb3h5QmFzZSA9IGAke3RoaXMuc2NoZW1lfTovLyR7dGhpcy5zZXJ2ZXJ9OiR7dGhpcy5wb3J0fSR7dGhpcy5iYXNlfWA7XG4gICAgY29uc3QgZW5kcG9pbnRSZSA9ICcoLyhzZXNzaW9ufHN0YXR1cykpJztcbiAgICBsZXQgcmVtYWluaW5nVXJsID0gJyc7XG4gICAgaWYgKC9eaHR0cC8udGVzdCh1cmwpKSB7XG4gICAgICBjb25zdCBmaXJzdCA9IChuZXcgUmVnRXhwKGAoaHR0cHM/Oi8vLispJHtlbmRwb2ludFJlfWApKS5leGVjKHVybCk7XG4gICAgICBpZiAoIWZpcnN0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignR290IGEgY29tcGxldGUgdXJsIGJ1dCBjb3VsZCBub3QgZXh0cmFjdCBKV1AgZW5kcG9pbnQnKTtcbiAgICAgIH1cbiAgICAgIHJlbWFpbmluZ1VybCA9IHVybC5yZXBsYWNlKGZpcnN0WzFdLCAnJyk7XG4gICAgfSBlbHNlIGlmICgobmV3IFJlZ0V4cCgnXi8nKSkudGVzdCh1cmwpKSB7XG4gICAgICByZW1haW5pbmdVcmwgPSB1cmw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGlkIG5vdCBrbm93IHdoYXQgdG8gZG8gd2l0aCB1cmwgJyR7dXJsfSdgKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdHJpcFByZWZpeFJlID0gbmV3IFJlZ0V4cCgnXi4qPygvKHNlc3Npb258c3RhdHVzKS4qKSQnKTtcbiAgICBpZiAoc3RyaXBQcmVmaXhSZS50ZXN0KHJlbWFpbmluZ1VybCkpIHtcbiAgICAgIHJlbWFpbmluZ1VybCA9IHN0cmlwUHJlZml4UmUuZXhlYyhyZW1haW5pbmdVcmwpWzFdO1xuICAgIH1cblxuICAgIGlmICghKG5ldyBSZWdFeHAoZW5kcG9pbnRSZSkpLnRlc3QocmVtYWluaW5nVXJsKSkge1xuICAgICAgcmVtYWluaW5nVXJsID0gYC9zZXNzaW9uLyR7dGhpcy5zZXNzaW9uSWR9JHtyZW1haW5pbmdVcmx9YDtcbiAgICB9XG5cbiAgICBjb25zdCByZXF1aXJlc1Nlc3Npb25JZCA9IHRoaXMuZW5kcG9pbnRSZXF1aXJlc1Nlc3Npb25JZChyZW1haW5pbmdVcmwpO1xuXG4gICAgaWYgKHJlcXVpcmVzU2Vzc2lvbklkICYmIHRoaXMuc2Vzc2lvbklkID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyeWluZyB0byBwcm94eSBhIHNlc3Npb24gY29tbWFuZCB3aXRob3V0IHNlc3Npb24gaWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXNzaW9uQmFzZVJlID0gbmV3IFJlZ0V4cCgnXi9zZXNzaW9uLyhbXi9dKyknKTtcbiAgICBpZiAoc2Vzc2lvbkJhc2VSZS50ZXN0KHJlbWFpbmluZ1VybCkpIHtcbiAgICAgIC8vIHdlIGhhdmUgc29tZXRoaW5nIGxpa2UgL3Nlc3Npb24vOmlkL2Zvb2Jhciwgc28gd2UgbmVlZCB0byByZXBsYWNlXG4gICAgICAvLyB0aGUgc2Vzc2lvbiBpZFxuICAgICAgY29uc3QgbWF0Y2ggPSBzZXNzaW9uQmFzZVJlLmV4ZWMocmVtYWluaW5nVXJsKTtcbiAgICAgIHJlbWFpbmluZ1VybCA9IHJlbWFpbmluZ1VybC5yZXBsYWNlKG1hdGNoWzFdLCB0aGlzLnNlc3Npb25JZCk7XG4gICAgfSBlbHNlIGlmIChyZXF1aXJlc1Nlc3Npb25JZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCA6c2Vzc2lvbiBzZWN0aW9uIGZvciB1cmw6ICR7cmVtYWluaW5nVXJsfWApO1xuICAgIH1cbiAgICByZW1haW5pbmdVcmwgPSByZW1haW5pbmdVcmwucmVwbGFjZSgvXFwvJC8sICcnKTsgLy8gY2FuJ3QgaGF2ZSB0cmFpbGluZyBzbGFzaGVzXG5cbiAgICByZXR1cm4gcHJveHlCYXNlICsgcmVtYWluaW5nVXJsO1xuICB9XG5cbiAgYXN5bmMgcHJveHkgKHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIG1ldGhvZCA9IG1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IG5ld1VybCA9IHRoaXMuZ2V0VXJsRm9yUHJveHkodXJsKTtcbiAgICBjb25zdCB0cnVuY2F0ZUJvZHkgPSAoY29udGVudCkgPT4gXy50cnVuY2F0ZShcbiAgICAgIF8uaXNTdHJpbmcoY29udGVudCkgPyBjb250ZW50IDogSlNPTi5zdHJpbmdpZnkoY29udGVudCksXG4gICAgICB7IGxlbmd0aDogTUFYX0xPR19CT0RZX0xFTkdUSCB9KTtcbiAgICBjb25zdCByZXFPcHRzID0ge1xuICAgICAgdXJsOiBuZXdVcmwsXG4gICAgICBtZXRob2QsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCcsXG4gICAgICAgICd1c2VyLWFnZW50JzogJ2FwcGl1bScsXG4gICAgICAgIGFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24sICovKicsXG4gICAgICB9LFxuICAgICAgcHJveHk6IGZhbHNlLFxuICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgaHR0cEFnZW50OiB0aGlzLmh0dHBBZ2VudCxcbiAgICAgIGh0dHBzQWdlbnQ6IHRoaXMuaHR0cHNBZ2VudCxcbiAgICB9O1xuICAgIC8vIEdFVCBtZXRob2RzIHNob3VsZG4ndCBoYXZlIGFueSBib2R5LiBNb3N0IHNlcnZlcnMgYXJlIE9LIHdpdGggdGhpcywgYnV0IFdlYkRyaXZlckFnZW50IHRocm93cyA0MDAgZXJyb3JzXG4gICAgaWYgKHV0aWwuaGFzVmFsdWUoYm9keSkgJiYgbWV0aG9kICE9PSAnR0VUJykge1xuICAgICAgaWYgKHR5cGVvZiBib2R5ICE9PSAnb2JqZWN0Jykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlcU9wdHMuZGF0YSA9IEpTT04ucGFyc2UoYm9keSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBpbnRlcnByZXQgdGhlIHJlcXVlc3QgYm9keSBhcyB2YWxpZCBKU09OOiAke3RydW5jYXRlQm9keShib2R5KX1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVxT3B0cy5kYXRhID0gYm9keTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsb2cuZGVidWcoYFByb3h5aW5nIFske21ldGhvZH0gJHt1cmwgfHwgJy8nfV0gdG8gWyR7bWV0aG9kfSAke25ld1VybH1dIGAgK1xuICAgICAgKHJlcU9wdHMuZGF0YSA/IGB3aXRoIGJvZHk6ICR7dHJ1bmNhdGVCb2R5KHJlcU9wdHMuZGF0YSl9YCA6ICd3aXRoIG5vIGJvZHknKSk7XG5cbiAgICBjb25zdCB0aHJvd1Byb3h5RXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihgVGhlIHJlcXVlc3QgdG8gJHt1cmx9IGhhcyBmYWlsZWRgKTtcbiAgICAgIGVyci5yZXNwb25zZSA9IHtcbiAgICAgICAgZGF0YTogZXJyb3IsXG4gICAgICAgIHN0YXR1czogNTAwXG4gICAgICB9O1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH07XG4gICAgbGV0IGlzUmVzcG9uc2VMb2dnZWQgPSBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge2RhdGEsIHN0YXR1cywgaGVhZGVyc30gPSBhd2FpdCB0aGlzLnJlcXVlc3QocmVxT3B0cyk7XG4gICAgICAvLyBgZGF0YWAgbWlnaHQgYmUgcmVhbGx5IGJpZ1xuICAgICAgLy8gQmUgY2FyZWZ1bCB3aGlsZSBoYW5kbGluZyBpdCB0byBhdm9pZCBtZW1vcnkgbGVha3NcbiAgICAgIGlmICghXy5pc1BsYWluT2JqZWN0KGRhdGEpKSB7XG4gICAgICAgIC8vIFRoZSByZXNwb25zZSBzaG91bGQgYmUgYSB2YWxpZCBKU09OIG9iamVjdFxuICAgICAgICAvLyBJZiBpdCBjYW5ub3QgYmUgY29lcmNlZCB0byBhbiBvYmplY3QgdGhlbiB0aGUgcmVzcG9uc2UgaXMgd3JvbmdcbiAgICAgICAgdGhyb3dQcm94eUVycm9yKGRhdGEpO1xuICAgICAgfVxuICAgICAgbG9nLmRlYnVnKGBHb3QgcmVzcG9uc2Ugd2l0aCBzdGF0dXMgJHtzdGF0dXN9OiAke3RydW5jYXRlQm9keShkYXRhKX1gKTtcbiAgICAgIGlzUmVzcG9uc2VMb2dnZWQgPSB0cnVlO1xuICAgICAgY29uc3QgaXNTZXNzaW9uQ3JlYXRpb25SZXF1ZXN0ID0gL1xcL3Nlc3Npb24kLy50ZXN0KHVybCkgJiYgbWV0aG9kID09PSAnUE9TVCc7XG4gICAgICBpZiAoaXNTZXNzaW9uQ3JlYXRpb25SZXF1ZXN0KSB7XG4gICAgICAgIGlmIChzdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgIHRoaXMuc2Vzc2lvbklkID0gZGF0YS5zZXNzaW9uSWQgfHwgKGRhdGEudmFsdWUgfHwge30pLnNlc3Npb25JZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRvd25zdHJlYW1Qcm90b2NvbCA9IHRoaXMuZ2V0UHJvdG9jb2xGcm9tUmVzQm9keShkYXRhKTtcbiAgICAgICAgbG9nLmluZm8oYERldGVybWluZWQgdGhlIGRvd25zdHJlYW0gcHJvdG9jb2wgYXMgJyR7dGhpcy5kb3duc3RyZWFtUHJvdG9jb2x9J2ApO1xuICAgICAgfVxuICAgICAgaWYgKF8uaGFzKGRhdGEsICdzdGF0dXMnKSAmJiBwYXJzZUludChkYXRhLnN0YXR1cywgMTApICE9PSAwKSB7XG4gICAgICAgIC8vIFNvbWUgc2VydmVycywgbGlrZSBjaHJvbWVkcml2ZXIgbWF5IHJldHVybiByZXNwb25zZSBjb2RlIDIwMCBmb3Igbm9uLXplcm8gSlNPTldQIHN0YXR1c2VzXG4gICAgICAgIHRocm93UHJveHlFcnJvcihkYXRhKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlcyA9IHtzdGF0dXNDb2RlOiBzdGF0dXMsIGhlYWRlcnMsIGJvZHk6IGRhdGF9O1xuICAgICAgcmV0dXJuIFtyZXMsIGRhdGFdO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIFdlIG9ubHkgY29uc2lkZXIgYW4gZXJyb3IgdW5leHBlY3RlZCBpZiB0aGlzIHdhcyBub3RcbiAgICAgIC8vIGFuIGFzeW5jIHJlcXVlc3QgbW9kdWxlIGVycm9yIG9yIGlmIHRoZSByZXNwb25zZSBjYW5ub3QgYmUgY2FzdCB0b1xuICAgICAgLy8gYSB2YWxpZCBKU09OXG4gICAgICBsZXQgcHJveHlFcnJvck1zZyA9IGUubWVzc2FnZTtcbiAgICAgIGlmICh1dGlsLmhhc1ZhbHVlKGUucmVzcG9uc2UpKSB7XG4gICAgICAgIGlmICghaXNSZXNwb25zZUxvZ2dlZCkge1xuICAgICAgICAgIGNvbnN0IGVycm9yID0gdHJ1bmNhdGVCb2R5KGUucmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgbG9nLmluZm8odXRpbC5oYXNWYWx1ZShlLnJlc3BvbnNlLnN0YXR1cylcbiAgICAgICAgICAgID8gYEdvdCByZXNwb25zZSB3aXRoIHN0YXR1cyAke2UucmVzcG9uc2Uuc3RhdHVzfTogJHtlcnJvcn1gXG4gICAgICAgICAgICA6IGBHb3QgcmVzcG9uc2Ugd2l0aCB1bmtub3duIHN0YXR1czogJHtlcnJvcn1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJveHlFcnJvck1zZyA9IGBDb3VsZCBub3QgcHJveHkgY29tbWFuZCB0byB0aGUgcmVtb3RlIHNlcnZlci4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWA7XG4gICAgICAgIGlmIChDT01QQUNUX0VSUk9SX1BBVFRFUk5TLnNvbWUoKHApID0+IHAudGVzdChlLm1lc3NhZ2UpKSkge1xuICAgICAgICAgIGxvZy5pbmZvKGUubWVzc2FnZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nLmluZm8oZS5zdGFjayk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBlcnJvcnMuUHJveHlSZXF1ZXN0RXJyb3IocHJveHlFcnJvck1zZywgZS5yZXNwb25zZT8uZGF0YSwgZS5yZXNwb25zZT8uc3RhdHVzKTtcbiAgICB9XG4gIH1cblxuICBnZXRQcm90b2NvbEZyb21SZXNCb2R5IChyZXNPYmopIHtcbiAgICBpZiAoXy5pc0ludGVnZXIocmVzT2JqLnN0YXR1cykpIHtcbiAgICAgIHJldHVybiBNSlNPTldQO1xuICAgIH1cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQocmVzT2JqLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIFczQztcbiAgICB9XG4gIH1cblxuICByZXF1ZXN0VG9Db21tYW5kTmFtZSAodXJsLCBtZXRob2QpIHtcbiAgICBjb25zdCBleHRyYWN0Q29tbWFuZE5hbWUgPSAocGF0dGVybikgPT4ge1xuICAgICAgY29uc3QgcGF0aE1hdGNoID0gcGF0dGVybi5leGVjKHVybCk7XG4gICAgICByZXR1cm4gcGF0aE1hdGNoID8gcm91dGVUb0NvbW1hbmROYW1lKHBhdGhNYXRjaFsxXSwgbWV0aG9kLCB0aGlzLnJlcUJhc2VQYXRoKSA6IG51bGw7XG4gICAgfTtcbiAgICBsZXQgY29tbWFuZE5hbWUgPSByb3V0ZVRvQ29tbWFuZE5hbWUodXJsLCBtZXRob2QsIHRoaXMucmVxQmFzZVBhdGgpO1xuICAgIGlmICghY29tbWFuZE5hbWUgJiYgXy5pbmNsdWRlcyh1cmwsIGAke3RoaXMucmVxQmFzZVBhdGh9L3Nlc3Npb24vYCkpIHtcbiAgICAgIGNvbW1hbmROYW1lID0gZXh0cmFjdENvbW1hbmROYW1lKG5ldyBSZWdFeHAoYCR7Xy5lc2NhcGVSZWdFeHAodGhpcy5yZXFCYXNlUGF0aCl9L3Nlc3Npb24vW14vXSsoLispYCkpO1xuICAgIH1cbiAgICBpZiAoIWNvbW1hbmROYW1lICYmIF8uaW5jbHVkZXModXJsLCB0aGlzLnJlcUJhc2VQYXRoKSkge1xuICAgICAgY29tbWFuZE5hbWUgPSBleHRyYWN0Q29tbWFuZE5hbWUobmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cCh0aGlzLnJlcUJhc2VQYXRoKX0oLy4rKWApKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbW1hbmROYW1lO1xuICB9XG5cbiAgYXN5bmMgcHJveHlDb21tYW5kICh1cmwsIG1ldGhvZCwgYm9keSA9IG51bGwpIHtcbiAgICBjb25zdCBjb21tYW5kTmFtZSA9IHRoaXMucmVxdWVzdFRvQ29tbWFuZE5hbWUodXJsLCBtZXRob2QpO1xuICAgIGlmICghY29tbWFuZE5hbWUpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5KHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKGBNYXRjaGVkICcke3VybH0nIHRvIGNvbW1hbmQgbmFtZSAnJHtjb21tYW5kTmFtZX0nYCk7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm90b2NvbENvbnZlcnRlci5jb252ZXJ0QW5kUHJveHkoY29tbWFuZE5hbWUsIHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxuXG4gIGFzeW5jIGNvbW1hbmQgKHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIGxldCByZXNwb25zZTtcbiAgICBsZXQgcmVzQm9keU9iajtcbiAgICB0cnkge1xuICAgICAgW3Jlc3BvbnNlLCByZXNCb2R5T2JqXSA9IGF3YWl0IHRoaXMucHJveHlDb21tYW5kKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChpc0Vycm9yVHlwZShlcnIsIGVycm9ycy5Qcm94eVJlcXVlc3RFcnJvcikpIHtcbiAgICAgICAgdGhyb3cgZXJyLmdldEFjdHVhbEVycm9yKCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLlVua25vd25FcnJvcihlcnIubWVzc2FnZSk7XG4gICAgfVxuICAgIGNvbnN0IHByb3RvY29sID0gdGhpcy5nZXRQcm90b2NvbEZyb21SZXNCb2R5KHJlc0JvZHlPYmopO1xuICAgIGlmIChwcm90b2NvbCA9PT0gTUpTT05XUCkge1xuICAgICAgLy8gR290IHJlc3BvbnNlIGluIE1KU09OV1AgZm9ybWF0XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA9PT0gMjAwICYmIHJlc0JvZHlPYmouc3RhdHVzID09PSAwKSB7XG4gICAgICAgIHJldHVybiByZXNCb2R5T2JqLnZhbHVlO1xuICAgICAgfVxuICAgICAgY29uc3Qgc3RhdHVzID0gcGFyc2VJbnQocmVzQm9keU9iai5zdGF0dXMsIDEwKTtcbiAgICAgIGlmICghaXNOYU4oc3RhdHVzKSAmJiBzdGF0dXMgIT09IDApIHtcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSByZXNCb2R5T2JqLnZhbHVlO1xuICAgICAgICBpZiAoXy5oYXMobWVzc2FnZSwgJ21lc3NhZ2UnKSkge1xuICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLm1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUoc3RhdHVzLCBfLmlzRW1wdHkobWVzc2FnZSkgPyBnZXRTdW1tYXJ5QnlDb2RlKHN0YXR1cykgOiBtZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByb3RvY29sID09PSBXM0MpIHtcbiAgICAgIC8vIEdvdCByZXNwb25zZSBpbiBXM0MgZm9ybWF0XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA8IDMwMCkge1xuICAgICAgICByZXR1cm4gcmVzQm9keU9iai52YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmlzUGxhaW5PYmplY3QocmVzQm9keU9iai52YWx1ZSkgJiYgcmVzQm9keU9iai52YWx1ZS5lcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvckZyb21XM0NKc29uQ29kZShyZXNCb2R5T2JqLnZhbHVlLmVycm9yLCByZXNCb2R5T2JqLnZhbHVlLm1lc3NhZ2UsIHJlc0JvZHlPYmoudmFsdWUuc3RhY2t0cmFjZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlID09PSAyMDApIHtcbiAgICAgIC8vIFVua25vd24gcHJvdG9jb2wuIEtlZXBpbmcgaXQgYmVjYXVzZSBvZiB0aGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAgcmV0dXJuIHJlc0JvZHlPYmo7XG4gICAgfVxuICAgIHRocm93IG5ldyBlcnJvcnMuVW5rbm93bkVycm9yKGBEaWQgbm90IGtub3cgd2hhdCB0byBkbyB3aXRoIHJlc3BvbnNlIGNvZGUgJyR7cmVzcG9uc2Uuc3RhdHVzQ29kZX0nIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBhbmQgcmVzcG9uc2UgYm9keSAnJHtfLnRydW5jYXRlKEpTT04uc3RyaW5naWZ5KHJlc0JvZHlPYmopLCB7bGVuZ3RoOiAzMDB9KX0nYCk7XG4gIH1cblxuICBnZXRTZXNzaW9uSWRGcm9tVXJsICh1cmwpIHtcbiAgICBjb25zdCBtYXRjaCA9IHVybC5tYXRjaCgvXFwvc2Vzc2lvblxcLyhbXi9dKykvKTtcbiAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXSA6IG51bGw7XG4gIH1cblxuICBhc3luYyBwcm94eVJlcVJlcyAocmVxLCByZXMpIHtcbiAgICBjb25zdCBbcmVzcG9uc2UsIHJlc0JvZHlPYmpdID0gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQocmVxLm9yaWdpbmFsVXJsLCByZXEubWV0aG9kLCByZXEuYm9keSk7XG5cbiAgICByZXMuaGVhZGVycyA9IHJlc3BvbnNlLmhlYWRlcnM7XG4gICAgcmVzLnNldCgnY29udGVudC10eXBlJywgcmVzcG9uc2UuaGVhZGVyc1snY29udGVudC10eXBlJ10pO1xuICAgIC8vIGlmIHRoZSBwcm94aWVkIHJlc3BvbnNlIGNvbnRhaW5zIGEgc2Vzc2lvbklkIHRoYXQgdGhlIGRvd25zdHJlYW1cbiAgICAvLyBkcml2ZXIgaGFzIGdlbmVyYXRlZCwgd2UgZG9uJ3Qgd2FudCB0byByZXR1cm4gdGhhdCB0byB0aGUgY2xpZW50LlxuICAgIC8vIEluc3RlYWQsIHJldHVybiB0aGUgaWQgZnJvbSB0aGUgcmVxdWVzdCBvciBmcm9tIGN1cnJlbnQgc2Vzc2lvblxuICAgIGNvbnN0IHJlcVNlc3Npb25JZCA9IHRoaXMuZ2V0U2Vzc2lvbklkRnJvbVVybChyZXEub3JpZ2luYWxVcmwpO1xuICAgIGlmIChfLmhhcyhyZXNCb2R5T2JqLCAnc2Vzc2lvbklkJykpIHtcbiAgICAgIGlmIChyZXFTZXNzaW9uSWQpIHtcbiAgICAgICAgbG9nLmluZm8oYFJlcGxhY2luZyBzZXNzaW9uSWQgJHtyZXNCb2R5T2JqLnNlc3Npb25JZH0gd2l0aCAke3JlcVNlc3Npb25JZH1gKTtcbiAgICAgICAgcmVzQm9keU9iai5zZXNzaW9uSWQgPSByZXFTZXNzaW9uSWQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2Vzc2lvbklkKSB7XG4gICAgICAgIGxvZy5pbmZvKGBSZXBsYWNpbmcgc2Vzc2lvbklkICR7cmVzQm9keU9iai5zZXNzaW9uSWR9IHdpdGggJHt0aGlzLnNlc3Npb25JZH1gKTtcbiAgICAgICAgcmVzQm9keU9iai5zZXNzaW9uSWQgPSB0aGlzLnNlc3Npb25JZDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmVzQm9keU9iai52YWx1ZSA9IGZvcm1hdFJlc3BvbnNlVmFsdWUocmVzQm9keU9iai52YWx1ZSk7XG4gICAgZm9ybWF0U3RhdHVzKHJlc0JvZHlPYmosIHJlcy5zdGF0dXNDb2RlLCBTRVNTSU9OU19DQUNIRS5nZXRQcm90b2NvbChyZXFTZXNzaW9uSWQpKTtcbiAgICByZXMuc3RhdHVzKHJlc3BvbnNlLnN0YXR1c0NvZGUpLnNlbmQoSlNPTi5zdHJpbmdpZnkocmVzQm9keU9iaikpO1xuICB9XG59XG5cbmV4cG9ydCB7IEpXUHJveHkgfTtcbmV4cG9ydCBkZWZhdWx0IEpXUHJveHk7XG4iXSwiZmlsZSI6ImxpYi9qc29ud3AtcHJveHkvcHJveHkuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
|
|
381
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9qc29ud3AtcHJveHkvcHJveHkuanMiXSwibmFtZXMiOlsibG9nIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIiwiREVGQVVMVF9SRVFVRVNUX1RJTUVPVVQiLCJDT01QQUNUX0VSUk9SX1BBVFRFUk5TIiwiTUpTT05XUCIsIlczQyIsIlBST1RPQ09MUyIsIkpXUHJveHkiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJfIiwiZGVmYXVsdHMiLCJzY2hlbWUiLCJzZXJ2ZXIiLCJwb3J0IiwiYmFzZSIsIkRFRkFVTFRfQkFTRV9QQVRIIiwicmVxQmFzZVBhdGgiLCJzZXNzaW9uSWQiLCJ0aW1lb3V0IiwidG9Mb3dlckNhc2UiLCJfYWN0aXZlUmVxdWVzdHMiLCJfZG93bnN0cmVhbVByb3RvY29sIiwiYWdlbnRPcHRzIiwia2VlcEFsaXZlIiwibWF4U29ja2V0cyIsIm1heEZyZWVTb2NrZXRzIiwiaHR0cEFnZW50IiwiaHR0cCIsIkFnZW50IiwiaHR0cHNBZ2VudCIsImh0dHBzIiwicHJvdG9jb2xDb252ZXJ0ZXIiLCJQcm90b2NvbENvbnZlcnRlciIsInByb3h5IiwiYmluZCIsInJlcXVlc3QiLCJyZXF1ZXN0Q29uZmlnIiwicmVxUHJvbWlzZSIsInB1c2giLCJwdWxsIiwiZ2V0QWN0aXZlUmVxdWVzdHNDb3VudCIsImxlbmd0aCIsImNhbmNlbEFjdGl2ZVJlcXVlc3RzIiwiZW5kcG9pbnRSZXF1aXJlc1Nlc3Npb25JZCIsImVuZHBvaW50IiwiaW5jbHVkZXMiLCJkb3duc3RyZWFtUHJvdG9jb2wiLCJ2YWx1ZSIsImdldFVybEZvclByb3h5IiwidXJsIiwicHJveHlCYXNlIiwiZW5kcG9pbnRSZSIsInJlbWFpbmluZ1VybCIsInRlc3QiLCJmaXJzdCIsIlJlZ0V4cCIsImV4ZWMiLCJFcnJvciIsInJlcGxhY2UiLCJzdHJpcFByZWZpeFJlIiwicmVxdWlyZXNTZXNzaW9uSWQiLCJzZXNzaW9uQmFzZVJlIiwibWF0Y2giLCJtZXRob2QiLCJib2R5IiwidG9VcHBlckNhc2UiLCJuZXdVcmwiLCJ0cnVuY2F0ZUJvZHkiLCJjb250ZW50IiwidHJ1bmNhdGUiLCJpc1N0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJNQVhfTE9HX0JPRFlfTEVOR1RIIiwicmVxT3B0cyIsImhlYWRlcnMiLCJhY2NlcHQiLCJ1dGlsIiwiaGFzVmFsdWUiLCJkYXRhIiwicGFyc2UiLCJlIiwiZGVidWciLCJ0aHJvd1Byb3h5RXJyb3IiLCJlcnJvciIsImVyciIsInJlc3BvbnNlIiwic3RhdHVzIiwiaXNSZXNwb25zZUxvZ2dlZCIsImlzUGxhaW5PYmplY3QiLCJpc1Nlc3Npb25DcmVhdGlvblJlcXVlc3QiLCJnZXRQcm90b2NvbEZyb21SZXNCb2R5IiwiaW5mbyIsImhhcyIsInBhcnNlSW50IiwicmVzIiwic3RhdHVzQ29kZSIsInByb3h5RXJyb3JNc2ciLCJtZXNzYWdlIiwic29tZSIsInAiLCJzdGFjayIsImVycm9ycyIsIlByb3h5UmVxdWVzdEVycm9yIiwicmVzT2JqIiwiaXNJbnRlZ2VyIiwiaXNVbmRlZmluZWQiLCJyZXF1ZXN0VG9Db21tYW5kTmFtZSIsImV4dHJhY3RDb21tYW5kTmFtZSIsInBhdHRlcm4iLCJwYXRoTWF0Y2giLCJjb21tYW5kTmFtZSIsImVzY2FwZVJlZ0V4cCIsInByb3h5Q29tbWFuZCIsImNvbnZlcnRBbmRQcm94eSIsImNvbW1hbmQiLCJyZXNCb2R5T2JqIiwiZ2V0QWN0dWFsRXJyb3IiLCJVbmtub3duRXJyb3IiLCJwcm90b2NvbCIsImlzTmFOIiwiaXNFbXB0eSIsInN0YWNrdHJhY2UiLCJnZXRTZXNzaW9uSWRGcm9tVXJsIiwicHJveHlSZXFSZXMiLCJyZXEiLCJvcmlnaW5hbFVybCIsInNldCIsInJlcVNlc3Npb25JZCIsInNlbmQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsR0FBRyxHQUFHQyxnQkFBT0MsU0FBUCxD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VyxRQUFRLENBQUNYLE9BQXZCO0FBQ0FvQixJQUFBQSxHQUFHLENBQUNnQyxHQUFKLENBQVEsY0FBUixFQUF3QnpDLFFBQVEsQ0FBQ1gsT0FBVCxDQUFpQixjQUFqQixDQUF4QjtBQUlBLFVBQU1xRCxZQUFZLEdBQUcsS0FBS0wsbUJBQUwsQ0FBeUJFLEdBQUcsQ0FBQ0MsV0FBN0IsQ0FBckI7O0FBQ0EsUUFBSXJILGdCQUFFb0YsR0FBRixDQUFNdUIsVUFBTixFQUFrQixXQUFsQixDQUFKLEVBQW9DO0FBQ2xDLFVBQUlZLFlBQUosRUFBa0I7QUFDaEJsSSxRQUFBQSxHQUFHLENBQUM4RixJQUFKLENBQVUsdUJBQXNCd0IsVUFBVSxDQUFDbkcsU0FBVSxTQUFRK0csWUFBYSxFQUExRTtBQUNBWixRQUFBQSxVQUFVLENBQUNuRyxTQUFYLEdBQXVCK0csWUFBdkI7QUFDRCxPQUhELE1BR08sSUFBSSxLQUFLL0csU0FBVCxFQUFvQjtBQUN6Qm5CLFFBQUFBLEdBQUcsQ0FBQzhGLElBQUosQ0FBVSx1QkFBc0J3QixVQUFVLENBQUNuRyxTQUFVLFNBQVEsS0FBS0EsU0FBVSxFQUE1RTtBQUNBbUcsUUFBQUEsVUFBVSxDQUFDbkcsU0FBWCxHQUF1QixLQUFLQSxTQUE1QjtBQUNEO0FBQ0Y7O0FBQ0RtRyxJQUFBQSxVQUFVLENBQUNyRSxLQUFYLEdBQW1CLGtDQUFvQnFFLFVBQVUsQ0FBQ3JFLEtBQS9CLENBQW5CO0FBQ0FnRCxJQUFBQSxHQUFHLENBQUNSLE1BQUosQ0FBV0QsUUFBUSxDQUFDVSxVQUFwQixFQUFnQ2lDLElBQWhDLENBQXFDMUQsSUFBSSxDQUFDQyxTQUFMLENBQWUsMkJBQWE0QyxVQUFiLENBQWYsQ0FBckM7QUFDRDs7QUFqVFc7OztlQXFUQzlHLE8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgbG9nZ2VyLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBnZXRTdW1tYXJ5QnlDb2RlIH0gZnJvbSAnLi4vanNvbndwLXN0YXR1cy9zdGF0dXMnO1xuaW1wb3J0IHtcbiAgZXJyb3JzLCBpc0Vycm9yVHlwZSwgZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUsIGVycm9yRnJvbVczQ0pzb25Db2RlXG59IGZyb20gJy4uL3Byb3RvY29sL2Vycm9ycyc7XG5pbXBvcnQgeyByb3V0ZVRvQ29tbWFuZE5hbWUgfSBmcm9tICcuLi9wcm90b2NvbCc7XG5pbXBvcnQgeyBNQVhfTE9HX0JPRFlfTEVOR1RILCBERUZBVUxUX0JBU0VfUEFUSCwgUFJPVE9DT0xTIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm90b2NvbENvbnZlcnRlciBmcm9tICcuL3Byb3RvY29sLWNvbnZlcnRlcic7XG5pbXBvcnQgeyBmb3JtYXRSZXNwb25zZVZhbHVlLCBmb3JtYXRTdGF0dXMgfSBmcm9tICcuLi9wcm90b2NvbC9oZWxwZXJzJztcbmltcG9ydCBodHRwIGZyb20gJ2h0dHAnO1xuaW1wb3J0IGh0dHBzIGZyb20gJ2h0dHBzJztcblxuXG5jb25zdCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdXRCBQcm94eScpO1xuY29uc3QgREVGQVVMVF9SRVFVRVNUX1RJTUVPVVQgPSAyNDAwMDA7XG5jb25zdCBDT01QQUNUX0VSUk9SX1BBVFRFUk5TID0gW1xuICAvXFxiRUNPTk5SRUZVU0VEXFxiLyxcbiAgL3NvY2tldCBoYW5nIHVwLyxcbl07XG5cbmNvbnN0IHtNSlNPTldQLCBXM0N9ID0gUFJPVE9DT0xTO1xuXG5jbGFzcyBKV1Byb3h5IHtcbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSkge1xuICAgIF8uZGVmYXVsdHModGhpcywgb3B0cywge1xuICAgICAgc2NoZW1lOiAnaHR0cCcsXG4gICAgICBzZXJ2ZXI6ICdsb2NhbGhvc3QnLFxuICAgICAgcG9ydDogNDQ0NCxcbiAgICAgIGJhc2U6IERFRkFVTFRfQkFTRV9QQVRILFxuICAgICAgcmVxQmFzZVBhdGg6IERFRkFVTFRfQkFTRV9QQVRILFxuICAgICAgc2Vzc2lvbklkOiBudWxsLFxuICAgICAgdGltZW91dDogREVGQVVMVF9SRVFVRVNUX1RJTUVPVVQsXG4gICAgfSk7XG4gICAgdGhpcy5zY2hlbWUgPSB0aGlzLnNjaGVtZS50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMuX2FjdGl2ZVJlcXVlc3RzID0gW107XG4gICAgdGhpcy5fZG93bnN0cmVhbVByb3RvY29sID0gbnVsbDtcbiAgICBjb25zdCBhZ2VudE9wdHMgPSB7XG4gICAgICBrZWVwQWxpdmU6IG9wdHMua2VlcEFsaXZlID8/IHRydWUsXG4gICAgICBtYXhTb2NrZXRzOiAxMCxcbiAgICAgIG1heEZyZWVTb2NrZXRzOiA1LFxuICAgIH07XG4gICAgdGhpcy5odHRwQWdlbnQgPSBuZXcgaHR0cC5BZ2VudChhZ2VudE9wdHMpO1xuICAgIHRoaXMuaHR0cHNBZ2VudCA9IG5ldyBodHRwcy5BZ2VudChhZ2VudE9wdHMpO1xuICAgIHRoaXMucHJvdG9jb2xDb252ZXJ0ZXIgPSBuZXcgUHJvdG9jb2xDb252ZXJ0ZXIodGhpcy5wcm94eS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtcyByZXF1ZXN0cyB0byB0aGUgZG93bnN0cmVhbSBzZXJ2ZXJcbiAgICpcbiAgICogQHByaXZhdGUgLSBEbyBub3QgY2FsbCB0aGlzIG1ldGhvZCBkaXJlY3RseSxcbiAgICogaXQgdXNlcyBjbGllbnQtc3BlY2lmaWMgYXJndW1lbnRzIGFuZCByZXNwb25zZXMhXG4gICAqXG4gICAqIEBwYXJhbSB7QXhpb3NSZXF1ZXN0Q29uZmlnfSByZXF1ZXN0Q29uZmlnXG4gICAqIEByZXR1cm5zIHtBeGlvc1Jlc3BvbnNlfVxuICAgKi9cbiAgYXN5bmMgcmVxdWVzdCAocmVxdWVzdENvbmZpZykge1xuICAgIGNvbnN0IHJlcVByb21pc2UgPSBheGlvcyhyZXF1ZXN0Q29uZmlnKTtcbiAgICB0aGlzLl9hY3RpdmVSZXF1ZXN0cy5wdXNoKHJlcVByb21pc2UpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgcmVxUHJvbWlzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgXy5wdWxsKHRoaXMuX2FjdGl2ZVJlcXVlc3RzLCByZXFQcm9taXNlKTtcbiAgICB9XG4gIH1cblxuICBnZXRBY3RpdmVSZXF1ZXN0c0NvdW50ICgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlUmVxdWVzdHMubGVuZ3RoO1xuICB9XG5cbiAgY2FuY2VsQWN0aXZlUmVxdWVzdHMgKCkge1xuICAgIHRoaXMuX2FjdGl2ZVJlcXVlc3RzID0gW107XG4gIH1cblxuICBlbmRwb2ludFJlcXVpcmVzU2Vzc2lvbklkIChlbmRwb2ludCkge1xuICAgIHJldHVybiAhXy5pbmNsdWRlcyhbJy9zZXNzaW9uJywgJy9zZXNzaW9ucycsICcvc3RhdHVzJ10sIGVuZHBvaW50KTtcbiAgfVxuXG4gIHNldCBkb3duc3RyZWFtUHJvdG9jb2wgKHZhbHVlKSB7XG4gICAgdGhpcy5fZG93bnN0cmVhbVByb3RvY29sID0gdmFsdWU7XG4gICAgdGhpcy5wcm90b2NvbENvbnZlcnRlci5kb3duc3RyZWFtUHJvdG9jb2wgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBkb3duc3RyZWFtUHJvdG9jb2wgKCkge1xuICAgIHJldHVybiB0aGlzLl9kb3duc3RyZWFtUHJvdG9jb2w7XG4gIH1cblxuICBnZXRVcmxGb3JQcm94eSAodXJsKSB7XG4gICAgaWYgKHVybCA9PT0gJycpIHtcbiAgICAgIHVybCA9ICcvJztcbiAgICB9XG4gICAgY29uc3QgcHJveHlCYXNlID0gYCR7dGhpcy5zY2hlbWV9Oi8vJHt0aGlzLnNlcnZlcn06JHt0aGlzLnBvcnR9JHt0aGlzLmJhc2V9YDtcbiAgICBjb25zdCBlbmRwb2ludFJlID0gJygvKHNlc3Npb258c3RhdHVzKSknO1xuICAgIGxldCByZW1haW5pbmdVcmwgPSAnJztcbiAgICBpZiAoL15odHRwLy50ZXN0KHVybCkpIHtcbiAgICAgIGNvbnN0IGZpcnN0ID0gKG5ldyBSZWdFeHAoYChodHRwcz86Ly8uKykke2VuZHBvaW50UmV9YCkpLmV4ZWModXJsKTtcbiAgICAgIGlmICghZmlyc3QpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdHb3QgYSBjb21wbGV0ZSB1cmwgYnV0IGNvdWxkIG5vdCBleHRyYWN0IEpXUCBlbmRwb2ludCcpO1xuICAgICAgfVxuICAgICAgcmVtYWluaW5nVXJsID0gdXJsLnJlcGxhY2UoZmlyc3RbMV0sICcnKTtcbiAgICB9IGVsc2UgaWYgKChuZXcgUmVnRXhwKCdeLycpKS50ZXN0KHVybCkpIHtcbiAgICAgIHJlbWFpbmluZ1VybCA9IHVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaWQgbm90IGtub3cgd2hhdCB0byBkbyB3aXRoIHVybCAnJHt1cmx9J2ApO1xuICAgIH1cblxuICAgIGNvbnN0IHN0cmlwUHJlZml4UmUgPSBuZXcgUmVnRXhwKCdeLio/KC8oc2Vzc2lvbnxzdGF0dXMpLiopJCcpO1xuICAgIGlmIChzdHJpcFByZWZpeFJlLnRlc3QocmVtYWluaW5nVXJsKSkge1xuICAgICAgcmVtYWluaW5nVXJsID0gc3RyaXBQcmVmaXhSZS5leGVjKHJlbWFpbmluZ1VybClbMV07XG4gICAgfVxuXG4gICAgaWYgKCEobmV3IFJlZ0V4cChlbmRwb2ludFJlKSkudGVzdChyZW1haW5pbmdVcmwpKSB7XG4gICAgICByZW1haW5pbmdVcmwgPSBgL3Nlc3Npb24vJHt0aGlzLnNlc3Npb25JZH0ke3JlbWFpbmluZ1VybH1gO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcXVpcmVzU2Vzc2lvbklkID0gdGhpcy5lbmRwb2ludFJlcXVpcmVzU2Vzc2lvbklkKHJlbWFpbmluZ1VybCk7XG5cbiAgICBpZiAocmVxdWlyZXNTZXNzaW9uSWQgJiYgdGhpcy5zZXNzaW9uSWQgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHJ5aW5nIHRvIHByb3h5IGEgc2Vzc2lvbiBjb21tYW5kIHdpdGhvdXQgc2Vzc2lvbiBpZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlc3Npb25CYXNlUmUgPSBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vKFteL10rKScpO1xuICAgIGlmIChzZXNzaW9uQmFzZVJlLnRlc3QocmVtYWluaW5nVXJsKSkge1xuICAgICAgLy8gd2UgaGF2ZSBzb21ldGhpbmcgbGlrZSAvc2Vzc2lvbi86aWQvZm9vYmFyLCBzbyB3ZSBuZWVkIHRvIHJlcGxhY2VcbiAgICAgIC8vIHRoZSBzZXNzaW9uIGlkXG4gICAgICBjb25zdCBtYXRjaCA9IHNlc3Npb25CYXNlUmUuZXhlYyhyZW1haW5pbmdVcmwpO1xuICAgICAgcmVtYWluaW5nVXJsID0gcmVtYWluaW5nVXJsLnJlcGxhY2UobWF0Y2hbMV0sIHRoaXMuc2Vzc2lvbklkKTtcbiAgICB9IGVsc2UgaWYgKHJlcXVpcmVzU2Vzc2lvbklkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIDpzZXNzaW9uIHNlY3Rpb24gZm9yIHVybDogJHtyZW1haW5pbmdVcmx9YCk7XG4gICAgfVxuICAgIHJlbWFpbmluZ1VybCA9IHJlbWFpbmluZ1VybC5yZXBsYWNlKC9cXC8kLywgJycpOyAvLyBjYW4ndCBoYXZlIHRyYWlsaW5nIHNsYXNoZXNcblxuICAgIHJldHVybiBwcm94eUJhc2UgKyByZW1haW5pbmdVcmw7XG4gIH1cblxuICBhc3luYyBwcm94eSAodXJsLCBtZXRob2QsIGJvZHkgPSBudWxsKSB7XG4gICAgbWV0aG9kID0gbWV0aG9kLnRvVXBwZXJDYXNlKCk7XG4gICAgY29uc3QgbmV3VXJsID0gdGhpcy5nZXRVcmxGb3JQcm94eSh1cmwpO1xuICAgIGNvbnN0IHRydW5jYXRlQm9keSA9IChjb250ZW50KSA9PiBfLnRydW5jYXRlKFxuICAgICAgXy5pc1N0cmluZyhjb250ZW50KSA/IGNvbnRlbnQgOiBKU09OLnN0cmluZ2lmeShjb250ZW50KSxcbiAgICAgIHsgbGVuZ3RoOiBNQVhfTE9HX0JPRFlfTEVOR1RIIH0pO1xuICAgIGNvbnN0IHJlcU9wdHMgPSB7XG4gICAgICB1cmw6IG5ld1VybCxcbiAgICAgIG1ldGhvZCxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JyxcbiAgICAgICAgJ3VzZXItYWdlbnQnOiAnYXBwaXVtJyxcbiAgICAgICAgYWNjZXB0OiAnYXBwbGljYXRpb24vanNvbiwgKi8qJyxcbiAgICAgIH0sXG4gICAgICBwcm94eTogZmFsc2UsXG4gICAgICB0aW1lb3V0OiB0aGlzLnRpbWVvdXQsXG4gICAgICBodHRwQWdlbnQ6IHRoaXMuaHR0cEFnZW50LFxuICAgICAgaHR0cHNBZ2VudDogdGhpcy5odHRwc0FnZW50LFxuICAgIH07XG4gICAgLy8gR0VUIG1ldGhvZHMgc2hvdWxkbid0IGhhdmUgYW55IGJvZHkuIE1vc3Qgc2VydmVycyBhcmUgT0sgd2l0aCB0aGlzLCBidXQgV2ViRHJpdmVyQWdlbnQgdGhyb3dzIDQwMCBlcnJvcnNcbiAgICBpZiAodXRpbC5oYXNWYWx1ZShib2R5KSAmJiBtZXRob2QgIT09ICdHRVQnKSB7XG4gICAgICBpZiAodHlwZW9mIGJvZHkgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVxT3B0cy5kYXRhID0gSlNPTi5wYXJzZShib2R5KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGludGVycHJldCB0aGUgcmVxdWVzdCBib2R5IGFzIHZhbGlkIEpTT046ICR7dHJ1bmNhdGVCb2R5KGJvZHkpfWApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXFPcHRzLmRhdGEgPSBib2R5O1xuICAgICAgfVxuICAgIH1cblxuICAgIGxvZy5kZWJ1ZyhgUHJveHlpbmcgWyR7bWV0aG9kfSAke3VybCB8fCAnLyd9XSB0byBbJHttZXRob2R9ICR7bmV3VXJsfV0gYCArXG4gICAgICAocmVxT3B0cy5kYXRhID8gYHdpdGggYm9keTogJHt0cnVuY2F0ZUJvZHkocmVxT3B0cy5kYXRhKX1gIDogJ3dpdGggbm8gYm9keScpKTtcblxuICAgIGNvbnN0IHRocm93UHJveHlFcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKGBUaGUgcmVxdWVzdCB0byAke3VybH0gaGFzIGZhaWxlZGApO1xuICAgICAgZXJyLnJlc3BvbnNlID0ge1xuICAgICAgICBkYXRhOiBlcnJvcixcbiAgICAgICAgc3RhdHVzOiA1MDBcbiAgICAgIH07XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfTtcbiAgICBsZXQgaXNSZXNwb25zZUxvZ2dlZCA9IGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7ZGF0YSwgc3RhdHVzLCBoZWFkZXJzfSA9IGF3YWl0IHRoaXMucmVxdWVzdChyZXFPcHRzKTtcbiAgICAgIC8vIGBkYXRhYCBtaWdodCBiZSByZWFsbHkgYmlnXG4gICAgICAvLyBCZSBjYXJlZnVsIHdoaWxlIGhhbmRsaW5nIGl0IHRvIGF2b2lkIG1lbW9yeSBsZWFrc1xuICAgICAgaWYgKCFfLmlzUGxhaW5PYmplY3QoZGF0YSkpIHtcbiAgICAgICAgLy8gVGhlIHJlc3BvbnNlIHNob3VsZCBiZSBhIHZhbGlkIEpTT04gb2JqZWN0XG4gICAgICAgIC8vIElmIGl0IGNhbm5vdCBiZSBjb2VyY2VkIHRvIGFuIG9iamVjdCB0aGVuIHRoZSByZXNwb25zZSBpcyB3cm9uZ1xuICAgICAgICB0aHJvd1Byb3h5RXJyb3IoZGF0YSk7XG4gICAgICB9XG4gICAgICBsb2cuZGVidWcoYEdvdCByZXNwb25zZSB3aXRoIHN0YXR1cyAke3N0YXR1c306ICR7dHJ1bmNhdGVCb2R5KGRhdGEpfWApO1xuICAgICAgaXNSZXNwb25zZUxvZ2dlZCA9IHRydWU7XG4gICAgICBjb25zdCBpc1Nlc3Npb25DcmVhdGlvblJlcXVlc3QgPSAvXFwvc2Vzc2lvbiQvLnRlc3QodXJsKSAmJiBtZXRob2QgPT09ICdQT1NUJztcbiAgICAgIGlmIChpc1Nlc3Npb25DcmVhdGlvblJlcXVlc3QpIHtcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgdGhpcy5zZXNzaW9uSWQgPSBkYXRhLnNlc3Npb25JZCB8fCAoZGF0YS52YWx1ZSB8fCB7fSkuc2Vzc2lvbklkO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZG93bnN0cmVhbVByb3RvY29sID0gdGhpcy5nZXRQcm90b2NvbEZyb21SZXNCb2R5KGRhdGEpO1xuICAgICAgICBsb2cuaW5mbyhgRGV0ZXJtaW5lZCB0aGUgZG93bnN0cmVhbSBwcm90b2NvbCBhcyAnJHt0aGlzLmRvd25zdHJlYW1Qcm90b2NvbH0nYCk7XG4gICAgICB9XG4gICAgICBpZiAoXy5oYXMoZGF0YSwgJ3N0YXR1cycpICYmIHBhcnNlSW50KGRhdGEuc3RhdHVzLCAxMCkgIT09IDApIHtcbiAgICAgICAgLy8gU29tZSBzZXJ2ZXJzLCBsaWtlIGNocm9tZWRyaXZlciBtYXkgcmV0dXJuIHJlc3BvbnNlIGNvZGUgMjAwIGZvciBub24temVybyBKU09OV1Agc3RhdHVzZXNcbiAgICAgICAgdGhyb3dQcm94eUVycm9yKGRhdGEpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzID0ge3N0YXR1c0NvZGU6IHN0YXR1cywgaGVhZGVycywgYm9keTogZGF0YX07XG4gICAgICByZXR1cm4gW3JlcywgZGF0YV07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gV2Ugb25seSBjb25zaWRlciBhbiBlcnJvciB1bmV4cGVjdGVkIGlmIHRoaXMgd2FzIG5vdFxuICAgICAgLy8gYW4gYXN5bmMgcmVxdWVzdCBtb2R1bGUgZXJyb3Igb3IgaWYgdGhlIHJlc3BvbnNlIGNhbm5vdCBiZSBjYXN0IHRvXG4gICAgICAvLyBhIHZhbGlkIEpTT05cbiAgICAgIGxldCBwcm94eUVycm9yTXNnID0gZS5tZXNzYWdlO1xuICAgICAgaWYgKHV0aWwuaGFzVmFsdWUoZS5yZXNwb25zZSkpIHtcbiAgICAgICAgaWYgKCFpc1Jlc3BvbnNlTG9nZ2VkKSB7XG4gICAgICAgICAgY29uc3QgZXJyb3IgPSB0cnVuY2F0ZUJvZHkoZS5yZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICBsb2cuaW5mbyh1dGlsLmhhc1ZhbHVlKGUucmVzcG9uc2Uuc3RhdHVzKVxuICAgICAgICAgICAgPyBgR290IHJlc3BvbnNlIHdpdGggc3RhdHVzICR7ZS5yZXNwb25zZS5zdGF0dXN9OiAke2Vycm9yfWBcbiAgICAgICAgICAgIDogYEdvdCByZXNwb25zZSB3aXRoIHVua25vd24gc3RhdHVzOiAke2Vycm9yfWApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm94eUVycm9yTXNnID0gYENvdWxkIG5vdCBwcm94eSBjb21tYW5kIHRvIHRoZSByZW1vdGUgc2VydmVyLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YDtcbiAgICAgICAgaWYgKENPTVBBQ1RfRVJST1JfUEFUVEVSTlMuc29tZSgocCkgPT4gcC50ZXN0KGUubWVzc2FnZSkpKSB7XG4gICAgICAgICAgbG9nLmluZm8oZS5tZXNzYWdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2cuaW5mbyhlLnN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IGVycm9ycy5Qcm94eVJlcXVlc3RFcnJvcihwcm94eUVycm9yTXNnLCBlLnJlc3BvbnNlPy5kYXRhLCBlLnJlc3BvbnNlPy5zdGF0dXMpO1xuICAgIH1cbiAgfVxuXG4gIGdldFByb3RvY29sRnJvbVJlc0JvZHkgKHJlc09iaikge1xuICAgIGlmIChfLmlzSW50ZWdlcihyZXNPYmouc3RhdHVzKSkge1xuICAgICAgcmV0dXJuIE1KU09OV1A7XG4gICAgfVxuICAgIGlmICghXy5pc1VuZGVmaW5lZChyZXNPYmoudmFsdWUpKSB7XG4gICAgICByZXR1cm4gVzNDO1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3RUb0NvbW1hbmROYW1lICh1cmwsIG1ldGhvZCkge1xuICAgIGNvbnN0IGV4dHJhY3RDb21tYW5kTmFtZSA9IChwYXR0ZXJuKSA9PiB7XG4gICAgICBjb25zdCBwYXRoTWF0Y2ggPSBwYXR0ZXJuLmV4ZWModXJsKTtcbiAgICAgIHJldHVybiBwYXRoTWF0Y2ggPyByb3V0ZVRvQ29tbWFuZE5hbWUocGF0aE1hdGNoWzFdLCBtZXRob2QsIHRoaXMucmVxQmFzZVBhdGgpIDogbnVsbDtcbiAgICB9O1xuICAgIGxldCBjb21tYW5kTmFtZSA9IHJvdXRlVG9Db21tYW5kTmFtZSh1cmwsIG1ldGhvZCwgdGhpcy5yZXFCYXNlUGF0aCk7XG4gICAgaWYgKCFjb21tYW5kTmFtZSAmJiBfLmluY2x1ZGVzKHVybCwgYCR7dGhpcy5yZXFCYXNlUGF0aH0vc2Vzc2lvbi9gKSkge1xuICAgICAgY29tbWFuZE5hbWUgPSBleHRyYWN0Q29tbWFuZE5hbWUobmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cCh0aGlzLnJlcUJhc2VQYXRoKX0vc2Vzc2lvbi9bXi9dKyguKylgKSk7XG4gICAgfVxuICAgIGlmICghY29tbWFuZE5hbWUgJiYgXy5pbmNsdWRlcyh1cmwsIHRoaXMucmVxQmFzZVBhdGgpKSB7XG4gICAgICBjb21tYW5kTmFtZSA9IGV4dHJhY3RDb21tYW5kTmFtZShuZXcgUmVnRXhwKGAke18uZXNjYXBlUmVnRXhwKHRoaXMucmVxQmFzZVBhdGgpfSgvLispYCkpO1xuICAgIH1cbiAgICByZXR1cm4gY29tbWFuZE5hbWU7XG4gIH1cblxuICBhc3luYyBwcm94eUNvbW1hbmQgKHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIGNvbnN0IGNvbW1hbmROYW1lID0gdGhpcy5yZXF1ZXN0VG9Db21tYW5kTmFtZSh1cmwsIG1ldGhvZCk7XG4gICAgaWYgKCFjb21tYW5kTmFtZSkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHkodXJsLCBtZXRob2QsIGJvZHkpO1xuICAgIH1cbiAgICBsb2cuZGVidWcoYE1hdGNoZWQgJyR7dXJsfScgdG8gY29tbWFuZCBuYW1lICcke2NvbW1hbmROYW1lfSdgKTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3RvY29sQ29udmVydGVyLmNvbnZlcnRBbmRQcm94eShjb21tYW5kTmFtZSwgdXJsLCBtZXRob2QsIGJvZHkpO1xuICB9XG5cbiAgYXN5bmMgY29tbWFuZCAodXJsLCBtZXRob2QsIGJvZHkgPSBudWxsKSB7XG4gICAgbGV0IHJlc3BvbnNlO1xuICAgIGxldCByZXNCb2R5T2JqO1xuICAgIHRyeSB7XG4gICAgICBbcmVzcG9uc2UsIHJlc0JvZHlPYmpdID0gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQodXJsLCBtZXRob2QsIGJvZHkpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGlzRXJyb3JUeXBlKGVyciwgZXJyb3JzLlByb3h5UmVxdWVzdEVycm9yKSkge1xuICAgICAgICB0aHJvdyBlcnIuZ2V0QWN0dWFsRXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBlcnJvcnMuVW5rbm93bkVycm9yKGVyci5tZXNzYWdlKTtcbiAgICB9XG4gICAgY29uc3QgcHJvdG9jb2wgPSB0aGlzLmdldFByb3RvY29sRnJvbVJlc0JvZHkocmVzQm9keU9iaik7XG4gICAgaWYgKHByb3RvY29sID09PSBNSlNPTldQKSB7XG4gICAgICAvLyBHb3QgcmVzcG9uc2UgaW4gTUpTT05XUCBmb3JtYXRcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlID09PSAyMDAgJiYgcmVzQm9keU9iai5zdGF0dXMgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJlc0JvZHlPYmoudmFsdWU7XG4gICAgICB9XG4gICAgICBjb25zdCBzdGF0dXMgPSBwYXJzZUludChyZXNCb2R5T2JqLnN0YXR1cywgMTApO1xuICAgICAgaWYgKCFpc05hTihzdGF0dXMpICYmIHN0YXR1cyAhPT0gMCkge1xuICAgICAgICBsZXQgbWVzc2FnZSA9IHJlc0JvZHlPYmoudmFsdWU7XG4gICAgICAgIGlmIChfLmhhcyhtZXNzYWdlLCAnbWVzc2FnZScpKSB7XG4gICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UubWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvckZyb21NSlNPTldQU3RhdHVzQ29kZShzdGF0dXMsIF8uaXNFbXB0eShtZXNzYWdlKSA/IGdldFN1bW1hcnlCeUNvZGUoc3RhdHVzKSA6IG1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvdG9jb2wgPT09IFczQykge1xuICAgICAgLy8gR290IHJlc3BvbnNlIGluIFczQyBmb3JtYXRcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlIDwgMzAwKSB7XG4gICAgICAgIHJldHVybiByZXNCb2R5T2JqLnZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKF8uaXNQbGFpbk9iamVjdChyZXNCb2R5T2JqLnZhbHVlKSAmJiByZXNCb2R5T2JqLnZhbHVlLmVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yRnJvbVczQ0pzb25Db2RlKHJlc0JvZHlPYmoudmFsdWUuZXJyb3IsIHJlc0JvZHlPYmoudmFsdWUubWVzc2FnZSwgcmVzQm9keU9iai52YWx1ZS5zdGFja3RyYWNlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuICAgICAgLy8gVW5rbm93biBwcm90b2NvbC4gS2VlcGluZyBpdCBiZWNhdXNlIG9mIHRoZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICByZXR1cm4gcmVzQm9keU9iajtcbiAgICB9XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duRXJyb3IoYERpZCBub3Qga25vdyB3aGF0IHRvIGRvIHdpdGggcmVzcG9uc2UgY29kZSAnJHtyZXNwb25zZS5zdGF0dXNDb2RlfScgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGFuZCByZXNwb25zZSBib2R5ICcke18udHJ1bmNhdGUoSlNPTi5zdHJpbmdpZnkocmVzQm9keU9iaiksIHtsZW5ndGg6IDMwMH0pfSdgKTtcbiAgfVxuXG4gIGdldFNlc3Npb25JZEZyb21VcmwgKHVybCkge1xuICAgIGNvbnN0IG1hdGNoID0gdXJsLm1hdGNoKC9cXC9zZXNzaW9uXFwvKFteL10rKS8pO1xuICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogbnVsbDtcbiAgfVxuXG4gIGFzeW5jIHByb3h5UmVxUmVzIChyZXEsIHJlcykge1xuICAgIGNvbnN0IFtyZXNwb25zZSwgcmVzQm9keU9ial0gPSBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChyZXEub3JpZ2luYWxVcmwsIHJlcS5tZXRob2QsIHJlcS5ib2R5KTtcblxuICAgIHJlcy5oZWFkZXJzID0gcmVzcG9uc2UuaGVhZGVycztcbiAgICByZXMuc2V0KCdjb250ZW50LXR5cGUnLCByZXNwb25zZS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSk7XG4gICAgLy8gaWYgdGhlIHByb3hpZWQgcmVzcG9uc2UgY29udGFpbnMgYSBzZXNzaW9uSWQgdGhhdCB0aGUgZG93bnN0cmVhbVxuICAgIC8vIGRyaXZlciBoYXMgZ2VuZXJhdGVkLCB3ZSBkb24ndCB3YW50IHRvIHJldHVybiB0aGF0IHRvIHRoZSBjbGllbnQuXG4gICAgLy8gSW5zdGVhZCwgcmV0dXJuIHRoZSBpZCBmcm9tIHRoZSByZXF1ZXN0IG9yIGZyb20gY3VycmVudCBzZXNzaW9uXG4gICAgY29uc3QgcmVxU2Vzc2lvbklkID0gdGhpcy5nZXRTZXNzaW9uSWRGcm9tVXJsKHJlcS5vcmlnaW5hbFVybCk7XG4gICAgaWYgKF8uaGFzKHJlc0JvZHlPYmosICdzZXNzaW9uSWQnKSkge1xuICAgICAgaWYgKHJlcVNlc3Npb25JZCkge1xuICAgICAgICBsb2cuaW5mbyhgUmVwbGFjaW5nIHNlc3Npb25JZCAke3Jlc0JvZHlPYmouc2Vzc2lvbklkfSB3aXRoICR7cmVxU2Vzc2lvbklkfWApO1xuICAgICAgICByZXNCb2R5T2JqLnNlc3Npb25JZCA9IHJlcVNlc3Npb25JZDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZXNzaW9uSWQpIHtcbiAgICAgICAgbG9nLmluZm8oYFJlcGxhY2luZyBzZXNzaW9uSWQgJHtyZXNCb2R5T2JqLnNlc3Npb25JZH0gd2l0aCAke3RoaXMuc2Vzc2lvbklkfWApO1xuICAgICAgICByZXNCb2R5T2JqLnNlc3Npb25JZCA9IHRoaXMuc2Vzc2lvbklkO1xuICAgICAgfVxuICAgIH1cbiAgICByZXNCb2R5T2JqLnZhbHVlID0gZm9ybWF0UmVzcG9uc2VWYWx1ZShyZXNCb2R5T2JqLnZhbHVlKTtcbiAgICByZXMuc3RhdHVzKHJlc3BvbnNlLnN0YXR1c0NvZGUpLnNlbmQoSlNPTi5zdHJpbmdpZnkoZm9ybWF0U3RhdHVzKHJlc0JvZHlPYmopKSk7XG4gIH1cbn1cblxuZXhwb3J0IHsgSldQcm94eSB9O1xuZXhwb3J0IGRlZmF1bHQgSldQcm94eTtcbiJdLCJmaWxlIjoibGliL2pzb253cC1wcm94eS9wcm94eS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|