oxygen-cli 1.25.0-beta.2 → 1.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.husky/pre-commit +4 -0
- package/CHANGELOG.md +65 -0
- package/build/core/OxygenCore.js +36 -257
- package/build/core/OxygenEvents.js +1 -11
- package/build/core/OxygenModule.js +1 -14
- package/build/core/OxygenService.js +1 -12
- package/build/core/OxygenSubModule.js +1 -10
- package/build/core/WebDriverModule.js +1 -30
- package/build/core/utils.js +1 -17
- package/build/errors/HookError.js +1 -7
- package/build/errors/ModuleError.js +1 -7
- package/build/errors/ModuleUnavailableError.js +1 -3
- package/build/errors/OxygenError.js +1 -33
- package/build/errors/ScriptNotFound.js +1 -7
- package/build/errors/helper.js +46 -77
- package/build/index.js +6 -18
- package/build/lib/cli-util.js +28 -90
- package/build/lib/cli.js +1 -23
- package/build/lib/debugger.js +1 -144
- package/build/lib/img-merge.js +1 -15
- package/build/lib/launcher.js +1 -28
- package/build/lib/moduleRequire.js +1 -4
- package/build/lib/param-manager.js +1 -28
- package/build/lib/param-reader-csv.js +1 -15
- package/build/lib/param-reader-excel.js +1 -14
- package/build/lib/param-reader-json.js +1 -10
- package/build/lib/util.js +3 -58
- package/build/model/case-result.js +1 -2
- package/build/model/failure.js +1 -2
- package/build/model/status.js +1 -2
- package/build/model/step-result.js +1 -2
- package/build/model/suite-result.js +1 -2
- package/build/model/test-result.js +1 -2
- package/build/model/testcase.js +1 -2
- package/build/model/testsuite.js +1 -2
- package/build/ox_modules/index.js +13 -33
- package/build/ox_modules/module-assert.js +8 -24
- package/build/ox_modules/module-date.js +3 -8
- package/build/ox_modules/module-db.js +7 -28
- package/build/ox_modules/module-email.js +10 -36
- package/build/ox_modules/module-eyes.js +5 -46
- package/build/ox_modules/module-http.js +42 -104
- package/build/ox_modules/module-log.js +5 -22
- package/build/ox_modules/module-mailinator.js +10 -32
- package/build/ox_modules/module-mob/commands/alertAccept.js +1 -2
- package/build/ox_modules/module-mob/commands/alertDismiss.js +1 -2
- package/build/ox_modules/module-mob/commands/assertAlert.js +1 -6
- package/build/ox_modules/module-mob/commands/assertText.js +1 -3
- package/build/ox_modules/module-mob/commands/assertTitle.js +1 -4
- package/build/ox_modules/module-mob/commands/assertValue.js +9 -15
- package/build/ox_modules/module-mob/commands/back.js +1 -2
- package/build/ox_modules/module-mob/commands/clear.js +1 -4
- package/build/ox_modules/module-mob/commands/click.js +3 -4
- package/build/ox_modules/module-mob/commands/clickHidden.js +3 -9
- package/build/ox_modules/module-mob/commands/clickLong.js +1 -2
- package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +1 -4
- package/build/ox_modules/module-mob/commands/closeApp.js +1 -2
- package/build/ox_modules/module-mob/commands/debug.js +2 -2
- package/build/ox_modules/module-mob/commands/dragAndDrop.js +1 -2
- package/build/ox_modules/module-mob/commands/enableNetwork.js +4 -12
- package/build/ox_modules/module-mob/commands/execute.js +1 -2
- package/build/ox_modules/module-mob/commands/findElement.js +1 -3
- package/build/ox_modules/module-mob/commands/findElements.js +1 -4
- package/build/ox_modules/module-mob/commands/getAlertText.js +1 -2
- package/build/ox_modules/module-mob/commands/getAppiumLogs.js +1 -2
- package/build/ox_modules/module-mob/commands/getBrowserLogs.js +1 -10
- package/build/ox_modules/module-mob/commands/getCurrentActivity.js +1 -2
- package/build/ox_modules/module-mob/commands/getCurrentPackage.js +1 -2
- package/build/ox_modules/module-mob/commands/getDeviceLogs.js +1 -9
- package/build/ox_modules/module-mob/commands/getDeviceTime.js +1 -2
- package/build/ox_modules/module-mob/commands/getLocation.js +1 -2
- package/build/ox_modules/module-mob/commands/getSource.js +1 -2
- package/build/ox_modules/module-mob/commands/getText.js +1 -4
- package/build/ox_modules/module-mob/commands/getTitle.js +1 -2
- package/build/ox_modules/module-mob/commands/getUrl.js +1 -2
- package/build/ox_modules/module-mob/commands/getValue.js +5 -9
- package/build/ox_modules/module-mob/commands/getWindowHandles.js +1 -2
- package/build/ox_modules/module-mob/commands/hideKeyboard.js +1 -2
- package/build/ox_modules/module-mob/commands/index.js +19 -94
- package/build/ox_modules/module-mob/commands/installApp.js +1 -2
- package/build/ox_modules/module-mob/commands/isAppInstalled.js +1 -2
- package/build/ox_modules/module-mob/commands/isCheckable.js +1 -2
- package/build/ox_modules/module-mob/commands/isChecked.js +1 -2
- package/build/ox_modules/module-mob/commands/isClickable.js +1 -2
- package/build/ox_modules/module-mob/commands/isExist.js +1 -3
- package/build/ox_modules/module-mob/commands/isSelected.js +1 -2
- package/build/ox_modules/module-mob/commands/isVisible.js +1 -3
- package/build/ox_modules/module-mob/commands/isWebViewContext.js +1 -2
- package/build/ox_modules/module-mob/commands/launchApp.js +1 -2
- package/build/ox_modules/module-mob/commands/longPressKeyCode.js +1 -2
- package/build/ox_modules/module-mob/commands/open.js +1 -3
- package/build/ox_modules/module-mob/commands/pause.js +1 -2
- package/build/ox_modules/module-mob/commands/removeApp.js +1 -2
- package/build/ox_modules/module-mob/commands/resetApp.js +1 -2
- package/build/ox_modules/module-mob/commands/scrollIntoElement.js +1 -6
- package/build/ox_modules/module-mob/commands/scrollIntoView.js +1 -2
- package/build/ox_modules/module-mob/commands/select.js +1 -4
- package/build/ox_modules/module-mob/commands/selectFrame.js +1 -4
- package/build/ox_modules/module-mob/commands/selectWindow.js +5 -26
- package/build/ox_modules/module-mob/commands/sendKeys.js +6 -9
- package/build/ox_modules/module-mob/commands/setContext.js +1 -2
- package/build/ox_modules/module-mob/commands/setNativeContext.js +1 -2
- package/build/ox_modules/module-mob/commands/setTimeout.js +1 -2
- package/build/ox_modules/module-mob/commands/setWebViewContext.js +3 -6
- package/build/ox_modules/module-mob/commands/shake.js +1 -2
- package/build/ox_modules/module-mob/commands/smsClickLink.js +1 -2
- package/build/ox_modules/module-mob/commands/smsGetText.js +3 -6
- package/build/ox_modules/module-mob/commands/swipe.js +1 -2
- package/build/ox_modules/module-mob/commands/swipeElement.js +1 -2
- package/build/ox_modules/module-mob/commands/swipeScreen.js +1 -2
- package/build/ox_modules/module-mob/commands/takeScreenshot.js +1 -2
- package/build/ox_modules/module-mob/commands/tap.js +1 -2
- package/build/ox_modules/module-mob/commands/type.js +3 -7
- package/build/ox_modules/module-mob/commands/unlockPattern.js +9 -10
- package/build/ox_modules/module-mob/commands/waitForExist.js +1 -2
- package/build/ox_modules/module-mob/commands/waitForInteractable.js +1 -3
- package/build/ox_modules/module-mob/commands/waitForVisible.js +1 -2
- package/build/ox_modules/module-mob.js +72 -142
- package/build/ox_modules/module-pdf.js +23 -62
- package/build/ox_modules/module-proxy.js +8 -68
- package/build/ox_modules/module-serial.js +7 -32
- package/build/ox_modules/module-shell.js +8 -27
- package/build/ox_modules/module-soap.js +14 -47
- package/build/ox_modules/module-twilio.js +10 -53
- package/build/ox_modules/module-utils.js +16 -51
- package/build/ox_modules/module-web/commands/alertAccept.js +1 -2
- package/build/ox_modules/module-web/commands/alertDismiss.js +1 -2
- package/build/ox_modules/module-web/commands/assertAlert.js +1 -6
- package/build/ox_modules/module-web/commands/assertExist.js +1 -2
- package/build/ox_modules/module-web/commands/assertSelectedLabel.js +1 -4
- package/build/ox_modules/module-web/commands/assertSelectedValue.js +1 -3
- package/build/ox_modules/module-web/commands/assertText.js +1 -3
- package/build/ox_modules/module-web/commands/assertTextNotPresent.js +1 -6
- package/build/ox_modules/module-web/commands/assertTextPresent.js +1 -6
- package/build/ox_modules/module-web/commands/assertTitle.js +1 -3
- package/build/ox_modules/module-web/commands/assertValue.js +1 -3
- package/build/ox_modules/module-web/commands/back.js +1 -2
- package/build/ox_modules/module-web/commands/clear.js +1 -5
- package/build/ox_modules/module-web/commands/click.js +4 -13
- package/build/ox_modules/module-web/commands/clickHidden.js +2 -7
- package/build/ox_modules/module-web/commands/closeWindow.js +1 -2
- package/build/ox_modules/module-web/commands/debug.js +2 -2
- package/build/ox_modules/module-web/commands/deleteCookies.js +1 -2
- package/build/ox_modules/module-web/commands/deselect.js +1 -2
- package/build/ox_modules/module-web/commands/doubleClick.js +3 -9
- package/build/ox_modules/module-web/commands/dragAndDrop.js +1 -2
- package/build/ox_modules/module-web/commands/execute.js +1 -2
- package/build/ox_modules/module-web/commands/fileBrowse.js +4 -10
- package/build/ox_modules/module-web/commands/findElement.js +1 -3
- package/build/ox_modules/module-web/commands/findElements.js +1 -4
- package/build/ox_modules/module-web/commands/fullscreenWindow.js +1 -2
- package/build/ox_modules/module-web/commands/getAlertText.js +1 -2
- package/build/ox_modules/module-web/commands/getAttribute.js +1 -4
- package/build/ox_modules/module-web/commands/getBrowserLogs.js +1 -3
- package/build/ox_modules/module-web/commands/getCookies.js +1 -2
- package/build/ox_modules/module-web/commands/getCssValue.js +1 -4
- package/build/ox_modules/module-web/commands/getElementCount.js +1 -2
- package/build/ox_modules/module-web/commands/getHTML.js +1 -2
- package/build/ox_modules/module-web/commands/getSource.js +1 -2
- package/build/ox_modules/module-web/commands/getText.js +1 -4
- package/build/ox_modules/module-web/commands/getTitle.js +1 -2
- package/build/ox_modules/module-web/commands/getUrl.js +1 -2
- package/build/ox_modules/module-web/commands/getValue.js +1 -5
- package/build/ox_modules/module-web/commands/getWindowHandles.js +1 -2
- package/build/ox_modules/module-web/commands/getWindowSize.js +1 -2
- package/build/ox_modules/module-web/commands/getXMLPageSource.js +1 -5
- package/build/ox_modules/module-web/commands/index.js +26 -99
- package/build/ox_modules/module-web/commands/isAlertPresent.js +1 -2
- package/build/ox_modules/module-web/commands/isChecked.js +1 -2
- package/build/ox_modules/module-web/commands/isExist.js +1 -3
- package/build/ox_modules/module-web/commands/isInteractable.js +33 -0
- package/build/ox_modules/module-web/commands/isSelected.js +1 -2
- package/build/ox_modules/module-web/commands/isVisible.js +1 -3
- package/build/ox_modules/module-web/commands/makeVisible.js +2 -10
- package/build/ox_modules/module-web/commands/maximizeWindow.js +1 -2
- package/build/ox_modules/module-web/commands/minimizeWindow.js +1 -2
- package/build/ox_modules/module-web/commands/newWindow.js +1 -2
- package/build/ox_modules/module-web/commands/open.js +1 -4
- package/build/ox_modules/module-web/commands/pause.js +1 -2
- package/build/ox_modules/module-web/commands/point.js +1 -2
- package/build/ox_modules/module-web/commands/pointJS.js +2 -8
- package/build/ox_modules/module-web/commands/refresh.js +1 -2
- package/build/ox_modules/module-web/commands/rightClick.js +3 -8
- package/build/ox_modules/module-web/commands/rightClickActions.js +1 -2
- package/build/ox_modules/module-web/commands/scrollToElement.js +1 -2
- package/build/ox_modules/module-web/commands/select.js +1 -5
- package/build/ox_modules/module-web/commands/selectFrame.js +1 -3
- package/build/ox_modules/module-web/commands/selectWindow.js +5 -26
- package/build/ox_modules/module-web/commands/sendKeys.js +3 -6
- package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +2 -2
- package/build/ox_modules/module-web/commands/setTimeout.js +1 -2
- package/build/ox_modules/module-web/commands/setWindowSize.js +1 -2
- package/build/ox_modules/module-web/commands/takeScreenshot.js +3 -5
- package/build/ox_modules/module-web/commands/type.js +1 -5
- package/build/ox_modules/module-web/commands/waitForAngular.js +6 -11
- package/build/ox_modules/module-web/commands/waitForExist.js +1 -2
- package/build/ox_modules/module-web/commands/waitForInteractable.js +1 -2
- package/build/ox_modules/module-web/commands/waitForNotExist.js +1 -8
- package/build/ox_modules/module-web/commands/waitForNotText.js +3 -5
- package/build/ox_modules/module-web/commands/waitForNotValue.js +3 -5
- package/build/ox_modules/module-web/commands/waitForText.js +3 -5
- package/build/ox_modules/module-web/commands/waitForValue.js +3 -5
- package/build/ox_modules/module-web/commands/waitForVisible.js +1 -2
- package/build/ox_modules/module-web/commands/waitForWindow.js +4 -21
- package/build/ox_modules/module-web.js +86 -192
- package/build/ox_modules/module-win/commands/assertText.js +1 -3
- package/build/ox_modules/module-win/commands/assertTitle.js +1 -4
- package/build/ox_modules/module-win/commands/assertValue.js +9 -15
- package/build/ox_modules/module-win/commands/back.js +1 -2
- package/build/ox_modules/module-win/commands/clear.js +1 -4
- package/build/ox_modules/module-win/commands/click.js +1 -2
- package/build/ox_modules/module-win/commands/clickLong.js +1 -2
- package/build/ox_modules/module-win/commands/clickMultipleTimes.js +1 -4
- package/build/ox_modules/module-win/commands/findElement.js +1 -3
- package/build/ox_modules/module-win/commands/findElements.js +1 -4
- package/build/ox_modules/module-win/commands/getAppiumLogs.js +1 -2
- package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +1 -2
- package/build/ox_modules/module-win/commands/getLocation.js +1 -2
- package/build/ox_modules/module-win/commands/getSource.js +1 -2
- package/build/ox_modules/module-win/commands/getText.js +1 -4
- package/build/ox_modules/module-win/commands/getValue.js +5 -9
- package/build/ox_modules/module-win/commands/getWindowHandles.js +1 -2
- package/build/ox_modules/module-win/commands/index.js +5 -43
- package/build/ox_modules/module-win/commands/isCheckable.js +1 -2
- package/build/ox_modules/module-win/commands/isChecked.js +1 -2
- package/build/ox_modules/module-win/commands/isClickable.js +1 -2
- package/build/ox_modules/module-win/commands/isExist.js +1 -3
- package/build/ox_modules/module-win/commands/isSelected.js +1 -2
- package/build/ox_modules/module-win/commands/isVisible.js +1 -3
- package/build/ox_modules/module-win/commands/open.js +1 -2
- package/build/ox_modules/module-win/commands/pause.js +1 -2
- package/build/ox_modules/module-win/commands/rightClick.js +1 -2
- package/build/ox_modules/module-win/commands/selectWindow.js +1 -15
- package/build/ox_modules/module-win/commands/sendKeys.js +1 -4
- package/build/ox_modules/module-win/commands/setTimeout.js +1 -2
- package/build/ox_modules/module-win/commands/takeScreenshot.js +1 -2
- package/build/ox_modules/module-win/commands/tap.js +1 -2
- package/build/ox_modules/module-win/commands/type.js +1 -4
- package/build/ox_modules/module-win/commands/waitForExist.js +1 -2
- package/build/ox_modules/module-win/commands/waitForInteractable.js +1 -4
- package/build/ox_modules/module-win/commands/waitForVisible.js +1 -2
- package/build/ox_modules/module-win.js +48 -87
- package/build/ox_modules/utils.js +22 -76
- package/build/ox_reporters/reporter-excel.js +1 -58
- package/build/ox_reporters/reporter-html.js +1 -28
- package/build/ox_reporters/reporter-json.js +1 -14
- package/build/ox_reporters/reporter-junit.js +1 -24
- package/build/ox_reporters/reporter-pdf.js +1 -19
- package/build/ox_reporters/reporter-xml.js +1 -17
- package/build/ox_services/service-devtools/submodule-network.js +3 -84
- package/build/ox_services/service-devtools.js +1 -23
- package/build/reporter/FileReporterBase.js +5 -44
- package/build/reporter/ReportAggregator.js +1 -65
- package/build/reporter/ReporterBase.js +1 -6
- package/build/runners/WorkerProcess.js +1 -99
- package/build/runners/cucumber/CucumberEventListener.js +4 -29
- package/build/runners/cucumber/CucumberReporter.js +1 -56
- package/build/runners/cucumber/CucumberWorker.js +1 -66
- package/build/runners/cucumber/index.js +1 -30
- package/build/runners/cucumber/worker.js +1 -18
- package/build/runners/index.js +1 -6
- package/build/runners/oxygen/OxygenWorker.js +20 -54
- package/build/runners/oxygen/index.js +17 -177
- package/build/runners/oxygen/worker.js +2 -25
- package/package.json +28 -29
|
@@ -4,19 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
require("source-map-support/register");
|
|
9
|
-
|
|
10
8
|
var _OxygenModule = _interopRequireDefault(require("../core/OxygenModule"));
|
|
11
|
-
|
|
12
9
|
var _OxygenError = _interopRequireDefault(require("../errors/OxygenError"));
|
|
13
|
-
|
|
14
10
|
var _helper = _interopRequireDefault(require("../errors/helper"));
|
|
15
|
-
|
|
16
11
|
var _utils = _interopRequireDefault(require("./utils"));
|
|
17
|
-
|
|
18
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
-
|
|
20
13
|
/*
|
|
21
14
|
* Copyright (C) 2015-2018 CloudBeat Limited
|
|
22
15
|
*
|
|
@@ -25,31 +18,32 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
25
18
|
* the Free Software Foundation, either version 3 of the License, or
|
|
26
19
|
* (at your option) any later version.
|
|
27
20
|
*/
|
|
21
|
+
|
|
28
22
|
const MODULE_NAME = 'shell';
|
|
23
|
+
|
|
29
24
|
/**
|
|
30
25
|
* @name shell
|
|
31
26
|
* @description Provides methods for working with operating system shell.
|
|
32
27
|
*/
|
|
33
|
-
|
|
34
28
|
class ShellModule extends _OxygenModule.default {
|
|
35
29
|
constructor(options, context, rs, logger, modules, services) {
|
|
36
30
|
super(options, context, rs, logger, modules, services);
|
|
37
|
-
this._alwaysInitialized = true;
|
|
38
|
-
|
|
31
|
+
this._alwaysInitialized = true;
|
|
32
|
+
// pre-initialize the module
|
|
39
33
|
this._isInitialized = true;
|
|
40
34
|
this._lastCmd;
|
|
41
35
|
this._lastStdout;
|
|
42
36
|
}
|
|
37
|
+
|
|
43
38
|
/*
|
|
44
39
|
* @summary Gets module name
|
|
45
40
|
* @function name
|
|
46
41
|
* @return {String} Constant value "shell".
|
|
47
42
|
*/
|
|
48
|
-
|
|
49
|
-
|
|
50
43
|
get name() {
|
|
51
44
|
return MODULE_NAME;
|
|
52
45
|
}
|
|
46
|
+
|
|
53
47
|
/**
|
|
54
48
|
* @summary Execute command
|
|
55
49
|
* @description Spawn child process
|
|
@@ -57,14 +51,10 @@ class ShellModule extends _OxygenModule.default {
|
|
|
57
51
|
* @param {String} command - Shell command to be executed, including arguments, if applicable.
|
|
58
52
|
* @return {String} null | Error | stdout result
|
|
59
53
|
*/
|
|
60
|
-
|
|
61
|
-
|
|
62
54
|
exec(command, options = {}) {
|
|
63
55
|
this._lastCmd = command;
|
|
64
56
|
this._lastStdout = null;
|
|
65
|
-
|
|
66
57
|
const spawn = require('cross-spawn');
|
|
67
|
-
|
|
68
58
|
options = {
|
|
69
59
|
cwd: this.options.cwd,
|
|
70
60
|
shell: true,
|
|
@@ -72,39 +62,30 @@ class ShellModule extends _OxygenModule.default {
|
|
|
72
62
|
...options
|
|
73
63
|
};
|
|
74
64
|
const result = spawn.sync(command, options);
|
|
75
|
-
|
|
76
65
|
if (result.error) {
|
|
77
66
|
throw new _OxygenError.default(_helper.default.errorCode.SHELL_ERROR, result.error.message, null, true, result.error);
|
|
78
67
|
}
|
|
79
|
-
|
|
80
68
|
this._lastStdout = result.stdout ? result.stdout.toString() : null;
|
|
81
|
-
|
|
82
69
|
if (result.stdout) {
|
|
83
70
|
return result.stdout.toString();
|
|
84
71
|
}
|
|
85
|
-
|
|
86
72
|
return null;
|
|
87
73
|
}
|
|
74
|
+
|
|
88
75
|
/**
|
|
89
76
|
* @summary Assert whether the shell command output (stdout) is matching the specified pattern.
|
|
90
77
|
* @function assertOutput
|
|
91
78
|
* @param {String} pattern - Pattern to assert.
|
|
92
79
|
*/
|
|
93
|
-
|
|
94
|
-
|
|
95
80
|
assertOutput(pattern) {
|
|
96
81
|
if (!this._lastStdout) {
|
|
97
82
|
return false;
|
|
98
83
|
}
|
|
99
|
-
|
|
100
84
|
if (!_utils.default.matchPattern(this._lastStdout, pattern)) {
|
|
101
85
|
throw new _OxygenError.default(_helper.default.errorCode.ASSERT_ERROR, `Expected shell command output to match: "${pattern}" but got: "${this._lastStdout}"`);
|
|
102
86
|
}
|
|
103
|
-
|
|
104
87
|
return true;
|
|
105
88
|
}
|
|
106
|
-
|
|
107
89
|
}
|
|
108
|
-
|
|
109
90
|
exports.default = ShellModule;
|
|
110
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNT0RVTEVfTkFNRSIsIlNoZWxsTW9kdWxlIiwiT3h5Z2VuTW9kdWxlIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwiY29udGV4dCIsInJzIiwibG9nZ2VyIiwibW9kdWxlcyIsInNlcnZpY2VzIiwiX2Fsd2F5c0luaXRpYWxpemVkIiwiX2lzSW5pdGlhbGl6ZWQiLCJfbGFzdENtZCIsIl9sYXN0U3Rkb3V0IiwibmFtZSIsImV4ZWMiLCJjb21tYW5kIiwic3Bhd24iLCJyZXF1aXJlIiwiY3dkIiwic2hlbGwiLCJlbnYiLCJwcm9jZXNzIiwicmVzdWx0Iiwic3luYyIsImVycm9yIiwiT3hFcnJvciIsImVyckhlbHBlciIsImVycm9yQ29kZSIsIlNIRUxMX0VSUk9SIiwibWVzc2FnZSIsInN0ZG91dCIsInRvU3RyaW5nIiwiYXNzZXJ0T3V0cHV0IiwicGF0dGVybiIsIm1vZFV0aWxzIiwibWF0Y2hQYXR0ZXJuIiwiQVNTRVJUX0VSUk9SIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL294X21vZHVsZXMvbW9kdWxlLXNoZWxsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5pbXBvcnQgT3h5Z2VuTW9kdWxlIGZyb20gJy4uL2NvcmUvT3h5Z2VuTW9kdWxlJztcclxuaW1wb3J0IE94RXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcclxuaW1wb3J0IGVyckhlbHBlciBmcm9tICcuLi9lcnJvcnMvaGVscGVyJztcclxuaW1wb3J0IG1vZFV0aWxzIGZyb20gJy4vdXRpbHMnO1xyXG5cclxuY29uc3QgTU9EVUxFX05BTUUgPSAnc2hlbGwnO1xyXG5cclxuLyoqXHJcbiAqIEBuYW1lIHNoZWxsXHJcbiAqIEBkZXNjcmlwdGlvbiBQcm92aWRlcyBtZXRob2RzIGZvciB3b3JraW5nIHdpdGggb3BlcmF0aW5nIHN5c3RlbSBzaGVsbC5cclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNoZWxsTW9kdWxlIGV4dGVuZHMgT3h5Z2VuTW9kdWxlIHtcclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMsIGNvbnRleHQsIHJzLCBsb2dnZXIsIG1vZHVsZXMsIHNlcnZpY2VzKSB7XHJcbiAgICAgICAgc3VwZXIob3B0aW9ucywgY29udGV4dCwgcnMsIGxvZ2dlciwgbW9kdWxlcywgc2VydmljZXMpO1xyXG4gICAgICAgIHRoaXMuX2Fsd2F5c0luaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICAvLyBwcmUtaW5pdGlhbGl6ZSB0aGUgbW9kdWxlXHJcbiAgICAgICAgdGhpcy5faXNJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fbGFzdENtZDtcclxuICAgICAgICB0aGlzLl9sYXN0U3Rkb3V0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBAc3VtbWFyeSBHZXRzIG1vZHVsZSBuYW1lXHJcbiAgICAgKiBAZnVuY3Rpb24gbmFtZVxyXG4gICAgICogQHJldHVybiB7U3RyaW5nfSBDb25zdGFudCB2YWx1ZSBcInNoZWxsXCIuXHJcbiAgICAgKi9cclxuICAgIGdldCBuYW1lKCkge1xyXG4gICAgICAgIHJldHVybiBNT0RVTEVfTkFNRTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEV4ZWN1dGUgY29tbWFuZFxyXG4gICAgICogQGRlc2NyaXB0aW9uIFNwYXduIGNoaWxkIHByb2Nlc3NcclxuICAgICAqIEBmdW5jdGlvbiBleGVjXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gY29tbWFuZCAtIFNoZWxsIGNvbW1hbmQgdG8gYmUgZXhlY3V0ZWQsIGluY2x1ZGluZyBhcmd1bWVudHMsIGlmIGFwcGxpY2FibGUuIFxyXG4gICAgICogQHJldHVybiB7U3RyaW5nfSBudWxsIHwgRXJyb3IgfCBzdGRvdXQgcmVzdWx0XHJcbiAgICAgKi9cclxuICAgIGV4ZWMoY29tbWFuZCwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICAgICAgdGhpcy5fbGFzdENtZCA9IGNvbW1hbmQ7XHJcbiAgICAgICAgdGhpcy5fbGFzdFN0ZG91dCA9IG51bGw7XHJcbiAgICAgICAgY29uc3Qgc3Bhd24gPSByZXF1aXJlKCdjcm9zcy1zcGF3bicpO1xyXG4gICAgICAgIG9wdGlvbnMgPSB7IGN3ZDogdGhpcy5vcHRpb25zLmN3ZCwgc2hlbGw6IHRydWUsIGVudjogcHJvY2Vzcy5lbnYsIC4uLm9wdGlvbnMgfTtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBzcGF3bi5zeW5jKGNvbW1hbmQsIG9wdGlvbnMpO1xyXG4gICAgICAgIGlmIChyZXN1bHQuZXJyb3IpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TSEVMTF9FUlJPUiwgcmVzdWx0LmVycm9yLm1lc3NhZ2UsIG51bGwsIHRydWUsIHJlc3VsdC5lcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2xhc3RTdGRvdXQgPSByZXN1bHQuc3Rkb3V0ID8gcmVzdWx0LnN0ZG91dC50b1N0cmluZygpIDogbnVsbDtcclxuICAgICAgICBpZiAocmVzdWx0LnN0ZG91dCkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnN0ZG91dC50b1N0cmluZygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEFzc2VydCB3aGV0aGVyIHRoZSBzaGVsbCBjb21tYW5kIG91dHB1dCAoc3Rkb3V0KSBpcyBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIHBhdHRlcm4uXHJcbiAgICAgKiBAZnVuY3Rpb24gYXNzZXJ0T3V0cHV0XHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gcGF0dGVybiAtIFBhdHRlcm4gdG8gYXNzZXJ0LlxyXG4gICAgICovXHJcbiAgICBhc3NlcnRPdXRwdXQocGF0dGVybikge1xyXG4gICAgICAgIGlmICghdGhpcy5fbGFzdFN0ZG91dCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghbW9kVXRpbHMubWF0Y2hQYXR0ZXJuKHRoaXMuX2xhc3RTdGRvdXQsIHBhdHRlcm4pKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX0VSUk9SLCBgRXhwZWN0ZWQgc2hlbGwgY29tbWFuZCBvdXRwdXQgdG8gbWF0Y2g6IFwiJHtwYXR0ZXJufVwiIGJ1dCBnb3Q6IFwiJHt0aGlzLl9sYXN0U3Rkb3V0fVwiYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG59Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFBK0I7QUFYL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFNQSxNQUFNQSxXQUFXLEdBQUcsT0FBTzs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDZSxNQUFNQyxXQUFXLFNBQVNDLHFCQUFZLENBQUM7RUFDbERDLFdBQVcsQ0FBQ0MsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLEVBQUUsRUFBRUMsTUFBTSxFQUFFQyxPQUFPLEVBQUVDLFFBQVEsRUFBRTtJQUN6RCxLQUFLLENBQUNMLE9BQU8sRUFBRUMsT0FBTyxFQUFFQyxFQUFFLEVBQUVDLE1BQU0sRUFBRUMsT0FBTyxFQUFFQyxRQUFRLENBQUM7SUFDdEQsSUFBSSxDQUFDQyxrQkFBa0IsR0FBRyxJQUFJO0lBQzlCO0lBQ0EsSUFBSSxDQUFDQyxjQUFjLEdBQUcsSUFBSTtJQUMxQixJQUFJLENBQUNDLFFBQVE7SUFDYixJQUFJLENBQUNDLFdBQVc7RUFDcEI7O0VBRUE7QUFDSjtBQUNBO0FBQ0E7QUFDQTtFQUNJLElBQUlDLElBQUksR0FBRztJQUNQLE9BQU9kLFdBQVc7RUFDdEI7O0VBRUE7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDSWUsSUFBSSxDQUFDQyxPQUFPLEVBQUVaLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRTtJQUN4QixJQUFJLENBQUNRLFFBQVEsR0FBR0ksT0FBTztJQUN2QixJQUFJLENBQUNILFdBQVcsR0FBRyxJQUFJO0lBQ3ZCLE1BQU1JLEtBQUssR0FBR0MsT0FBTyxDQUFDLGFBQWEsQ0FBQztJQUNwQ2QsT0FBTyxHQUFHO01BQUVlLEdBQUcsRUFBRSxJQUFJLENBQUNmLE9BQU8sQ0FBQ2UsR0FBRztNQUFFQyxLQUFLLEVBQUUsSUFBSTtNQUFFQyxHQUFHLEVBQUVDLE9BQU8sQ0FBQ0QsR0FBRztNQUFFLEdBQUdqQjtJQUFRLENBQUM7SUFDOUUsTUFBTW1CLE1BQU0sR0FBR04sS0FBSyxDQUFDTyxJQUFJLENBQUNSLE9BQU8sRUFBRVosT0FBTyxDQUFDO0lBQzNDLElBQUltQixNQUFNLENBQUNFLEtBQUssRUFBRTtNQUNkLE1BQU0sSUFBSUMsb0JBQU8sQ0FBQ0MsZUFBUyxDQUFDQyxTQUFTLENBQUNDLFdBQVcsRUFBRU4sTUFBTSxDQUFDRSxLQUFLLENBQUNLLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFUCxNQUFNLENBQUNFLEtBQUssQ0FBQztJQUN0RztJQUNBLElBQUksQ0FBQ1osV0FBVyxHQUFHVSxNQUFNLENBQUNRLE1BQU0sR0FBR1IsTUFBTSxDQUFDUSxNQUFNLENBQUNDLFFBQVEsRUFBRSxHQUFHLElBQUk7SUFDbEUsSUFBSVQsTUFBTSxDQUFDUSxNQUFNLEVBQUU7TUFDZixPQUFPUixNQUFNLENBQUNRLE1BQU0sQ0FBQ0MsUUFBUSxFQUFFO0lBQ25DO0lBQ0EsT0FBTyxJQUFJO0VBQ2Y7O0VBRUE7QUFDSjtBQUNBO0FBQ0E7QUFDQTtFQUNJQyxZQUFZLENBQUNDLE9BQU8sRUFBRTtJQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDckIsV0FBVyxFQUFFO01BQ25CLE9BQU8sS0FBSztJQUNoQjtJQUNBLElBQUksQ0FBQ3NCLGNBQVEsQ0FBQ0MsWUFBWSxDQUFDLElBQUksQ0FBQ3ZCLFdBQVcsRUFBRXFCLE9BQU8sQ0FBQyxFQUFFO01BQ25ELE1BQU0sSUFBSVIsb0JBQU8sQ0FBQ0MsZUFBUyxDQUFDQyxTQUFTLENBQUNTLFlBQVksRUFBRyw0Q0FBMkNILE9BQVEsZUFBYyxJQUFJLENBQUNyQixXQUFZLEdBQUUsQ0FBQztJQUM5STtJQUNBLE9BQU8sSUFBSTtFQUNmO0FBQ0o7QUFBQyJ9
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
require("source-map-support/register");
|
|
4
|
-
|
|
5
4
|
var _OxygenError = _interopRequireDefault(require("../errors/OxygenError"));
|
|
6
|
-
|
|
7
5
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
8
|
-
|
|
9
6
|
/*
|
|
10
7
|
* Copyright (C) 2015-present CloudBeat Limited
|
|
11
8
|
*
|
|
@@ -19,18 +16,16 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
19
16
|
* @name soap
|
|
20
17
|
* @description Provides methods for working with SOAP based Web Services.
|
|
21
18
|
*/
|
|
22
|
-
var errHelper = require('../errors/helper');
|
|
23
19
|
|
|
20
|
+
var errHelper = require('../errors/helper');
|
|
24
21
|
module.exports = function () {
|
|
25
22
|
var soap = require('soap');
|
|
26
|
-
|
|
27
23
|
var auth = null;
|
|
28
24
|
var proxyOptions = {};
|
|
29
25
|
var options = {
|
|
30
26
|
rejectUnauthorized: false
|
|
31
27
|
};
|
|
32
28
|
var lastResponseHeaders = null;
|
|
33
|
-
|
|
34
29
|
module.isInitialized = function () {
|
|
35
30
|
return true;
|
|
36
31
|
};
|
|
@@ -39,8 +34,6 @@ module.exports = function () {
|
|
|
39
34
|
* @function setProxy
|
|
40
35
|
* @param {String} url - Proxy url. Invocation without arguments will remove any previously set url.
|
|
41
36
|
*/
|
|
42
|
-
|
|
43
|
-
|
|
44
37
|
module.setProxy = function (url) {
|
|
45
38
|
if (url) {
|
|
46
39
|
proxyOptions = {
|
|
@@ -50,27 +43,26 @@ module.exports = function () {
|
|
|
50
43
|
proxyOptions = {};
|
|
51
44
|
}
|
|
52
45
|
};
|
|
46
|
+
|
|
53
47
|
/**
|
|
54
48
|
* @summary Sets Basic Authentication details to be used for connections with the service.
|
|
55
49
|
* @function authBasic
|
|
56
50
|
* @param {String} user - Username.
|
|
57
51
|
* @param {String} pass - Password.
|
|
58
52
|
*/
|
|
59
|
-
|
|
60
|
-
|
|
61
53
|
module.authBasic = function (user, pass) {
|
|
62
54
|
auth = new soap.BasicAuthSecurity(user, pass);
|
|
63
55
|
};
|
|
56
|
+
|
|
64
57
|
/**
|
|
65
58
|
* @summary Sets Bearer Token Authentication details to be used for connections with the service.
|
|
66
59
|
* @function authBearer
|
|
67
60
|
* @param {String} token - Token.
|
|
68
61
|
*/
|
|
69
|
-
|
|
70
|
-
|
|
71
62
|
module.authBearer = function (token) {
|
|
72
63
|
auth = new soap.BearerSecurity(token);
|
|
73
64
|
};
|
|
65
|
+
|
|
74
66
|
/**
|
|
75
67
|
* @summary Sets NTLM Authentication details to be used for connections with the service.
|
|
76
68
|
* @function authNTLM
|
|
@@ -79,11 +71,10 @@ module.exports = function () {
|
|
|
79
71
|
* @param {String} domain - Domain.
|
|
80
72
|
* @param {String} workstation - Workstation.
|
|
81
73
|
*/
|
|
82
|
-
|
|
83
|
-
|
|
84
74
|
module.authNTLM = function (user, pass, domain, workstation) {
|
|
85
75
|
auth = new soap.NTLMSecurity(user, pass, domain, workstation);
|
|
86
76
|
};
|
|
77
|
+
|
|
87
78
|
/**
|
|
88
79
|
* @summary Initiates a SOAP request and returns the response.
|
|
89
80
|
* @function get
|
|
@@ -103,61 +94,50 @@ module.exports = function () {
|
|
|
103
94
|
* var result = soap.get(serviceUrl, 'NumberToWords', { 'ubiNum': 2019 });
|
|
104
95
|
* log.info(result.NumberToWordsResult);
|
|
105
96
|
*/
|
|
106
|
-
|
|
107
|
-
|
|
108
97
|
module.get = async function (wsdlUrl, method, args, wsdlHeaders = {}) {
|
|
109
98
|
var resultClient = null;
|
|
110
99
|
var result = null;
|
|
111
100
|
await (() => {
|
|
112
101
|
return new Promise((resolve, reject) => {
|
|
113
102
|
soap.createClient(wsdlUrl, {
|
|
114
|
-
wsdl_options: {
|
|
103
|
+
wsdl_options: {
|
|
104
|
+
...options,
|
|
115
105
|
...proxyOptions
|
|
116
106
|
},
|
|
117
107
|
wsdl_headers: wsdlHeaders
|
|
118
108
|
}, (err, client) => {
|
|
119
109
|
if (client === undefined) {
|
|
120
110
|
var msg = 'Error creating client';
|
|
121
|
-
|
|
122
111
|
if (err.message) {
|
|
123
112
|
var soapMsg = err.message;
|
|
124
113
|
var firstBreakIndex = soapMsg.indexOf('\n');
|
|
125
|
-
|
|
126
114
|
if (firstBreakIndex > 0) {
|
|
127
115
|
soapMsg = err.message.substring(0, firstBreakIndex);
|
|
128
116
|
}
|
|
129
|
-
|
|
130
117
|
msg += ': ' + soapMsg;
|
|
131
118
|
} else if (err && (typeof err === 'string' || err instanceof String)) {
|
|
132
119
|
msg += ': ' + err;
|
|
133
120
|
}
|
|
134
|
-
|
|
135
121
|
resultClient = new _OxygenError.default(errHelper.errorCode.SOAP_ERROR, msg);
|
|
136
122
|
resolve();
|
|
137
123
|
return;
|
|
138
124
|
}
|
|
139
|
-
|
|
140
125
|
resultClient = client;
|
|
141
|
-
|
|
142
126
|
if (typeof client[method] !== 'function') {
|
|
143
127
|
resultClient = new _OxygenError.default(errHelper.errorCode.SOAP_ERROR, 'No method named ' + method + ' was found.');
|
|
144
128
|
resolve();
|
|
145
129
|
return;
|
|
146
130
|
}
|
|
147
|
-
|
|
148
131
|
if (auth) {
|
|
149
132
|
client.setSecurity(auth);
|
|
150
133
|
}
|
|
151
|
-
|
|
152
134
|
if (wsdlHeaders) {
|
|
153
135
|
for (const header in wsdlHeaders) {
|
|
154
136
|
client.addHttpHeader(header, wsdlHeaders[header]);
|
|
155
137
|
}
|
|
156
138
|
}
|
|
157
|
-
|
|
158
139
|
client[method](args, (err, res) => {
|
|
159
140
|
lastResponseHeaders = client.lastResponseHeaders;
|
|
160
|
-
|
|
161
141
|
if (err !== null && err.root && err.root.Envelope && err.root.Envelope.Body && err.root.Envelope.Body.Fault) {
|
|
162
142
|
result = new _OxygenError.default(errHelper.errorCode.SOAP_ERROR, JSON.stringify(err.root.Envelope.Body.Fault.faultstring));
|
|
163
143
|
} else if (err !== null) {
|
|
@@ -167,36 +147,33 @@ module.exports = function () {
|
|
|
167
147
|
} else {
|
|
168
148
|
result = res;
|
|
169
149
|
}
|
|
170
|
-
|
|
171
150
|
resolve();
|
|
172
151
|
return;
|
|
173
|
-
}, {
|
|
152
|
+
}, {
|
|
153
|
+
...options,
|
|
174
154
|
...proxyOptions
|
|
175
155
|
});
|
|
176
156
|
});
|
|
177
157
|
});
|
|
178
158
|
})();
|
|
179
|
-
|
|
180
159
|
if (resultClient.type === errHelper.errorCode.SOAP_ERROR) {
|
|
181
160
|
throw resultClient;
|
|
182
161
|
}
|
|
183
|
-
|
|
184
162
|
if (result.type === errHelper.errorCode.SOAP_ERROR) {
|
|
185
163
|
throw result;
|
|
186
164
|
}
|
|
187
|
-
|
|
188
165
|
return result;
|
|
189
166
|
};
|
|
167
|
+
|
|
190
168
|
/**
|
|
191
169
|
* @summary Returns last response headers.
|
|
192
170
|
* @function getLastResponseHeaders
|
|
193
171
|
* @return {Object} IncomingHttpHeaders (https://microsoft.github.io/PowerBI-JavaScript/interfaces/_node_modules__types_node_http2_d_._http2_.incominghttpheaders.html).
|
|
194
172
|
*/
|
|
195
|
-
|
|
196
|
-
|
|
197
173
|
module.getLastResponseHeaders = function () {
|
|
198
174
|
return lastResponseHeaders;
|
|
199
175
|
};
|
|
176
|
+
|
|
200
177
|
/**
|
|
201
178
|
* @summary Returns SOAP service description.
|
|
202
179
|
* @function describe
|
|
@@ -204,57 +181,47 @@ module.exports = function () {
|
|
|
204
181
|
* @param {Object=} wsdlHeaders - custom HTTP headers to be sent on WSDL requests.
|
|
205
182
|
* @return {Object} Service description.
|
|
206
183
|
*/
|
|
207
|
-
|
|
208
|
-
|
|
209
184
|
module.describe = async function (wsdlUrl, wsdlHeaders = {}) {
|
|
210
185
|
var resultClient = null;
|
|
211
186
|
await (() => {
|
|
212
187
|
return new Promise((resolve, reject) => {
|
|
213
188
|
soap.createClient(wsdlUrl, {
|
|
214
|
-
wsdl_options: {
|
|
189
|
+
wsdl_options: {
|
|
190
|
+
...options,
|
|
215
191
|
...proxyOptions
|
|
216
192
|
},
|
|
217
193
|
wsdl_headers: wsdlHeaders
|
|
218
194
|
}, (err, client) => {
|
|
219
195
|
if (client === undefined) {
|
|
220
196
|
var msg = 'Error creating client';
|
|
221
|
-
|
|
222
197
|
if (err.message) {
|
|
223
198
|
var soapMsg = err.message;
|
|
224
199
|
var firstBreakIndex = soapMsg.indexOf('\n');
|
|
225
|
-
|
|
226
200
|
if (firstBreakIndex > 0) {
|
|
227
201
|
soapMsg = err.message.substring(0, firstBreakIndex);
|
|
228
202
|
}
|
|
229
|
-
|
|
230
203
|
msg += ': ' + soapMsg;
|
|
231
204
|
} else if (err && (typeof err === 'string' || err instanceof String)) {
|
|
232
205
|
msg += ': ' + err;
|
|
233
206
|
}
|
|
234
|
-
|
|
235
207
|
resultClient = new _OxygenError.default(errHelper.errorCode.SOAP_ERROR, msg);
|
|
236
208
|
resolve();
|
|
237
209
|
return;
|
|
238
210
|
}
|
|
239
|
-
|
|
240
211
|
if (auth) {
|
|
241
212
|
client.setSecurity(auth);
|
|
242
213
|
}
|
|
243
|
-
|
|
244
214
|
resultClient = client.describe();
|
|
245
215
|
resolve();
|
|
246
216
|
return;
|
|
247
217
|
});
|
|
248
218
|
});
|
|
249
219
|
})();
|
|
250
|
-
|
|
251
220
|
if (resultClient.type === errHelper.errorCode.SOAP_ERROR) {
|
|
252
221
|
throw resultClient;
|
|
253
222
|
}
|
|
254
|
-
|
|
255
223
|
return resultClient;
|
|
256
224
|
};
|
|
257
|
-
|
|
258
225
|
return module;
|
|
259
226
|
};
|
|
260
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1zb2FwLmpzIl0sIm5hbWVzIjpbImVyckhlbHBlciIsInJlcXVpcmUiLCJtb2R1bGUiLCJleHBvcnRzIiwic29hcCIsImF1dGgiLCJwcm94eU9wdGlvbnMiLCJvcHRpb25zIiwicmVqZWN0VW5hdXRob3JpemVkIiwibGFzdFJlc3BvbnNlSGVhZGVycyIsImlzSW5pdGlhbGl6ZWQiLCJzZXRQcm94eSIsInVybCIsInByb3h5IiwiYXV0aEJhc2ljIiwidXNlciIsInBhc3MiLCJCYXNpY0F1dGhTZWN1cml0eSIsImF1dGhCZWFyZXIiLCJ0b2tlbiIsIkJlYXJlclNlY3VyaXR5IiwiYXV0aE5UTE0iLCJkb21haW4iLCJ3b3Jrc3RhdGlvbiIsIk5UTE1TZWN1cml0eSIsImdldCIsIndzZGxVcmwiLCJtZXRob2QiLCJhcmdzIiwid3NkbEhlYWRlcnMiLCJyZXN1bHRDbGllbnQiLCJyZXN1bHQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImNyZWF0ZUNsaWVudCIsIndzZGxfb3B0aW9ucyIsIndzZGxfaGVhZGVycyIsImVyciIsImNsaWVudCIsInVuZGVmaW5lZCIsIm1zZyIsIm1lc3NhZ2UiLCJzb2FwTXNnIiwiZmlyc3RCcmVha0luZGV4IiwiaW5kZXhPZiIsInN1YnN0cmluZyIsIlN0cmluZyIsIk94RXJyb3IiLCJlcnJvckNvZGUiLCJTT0FQX0VSUk9SIiwic2V0U2VjdXJpdHkiLCJoZWFkZXIiLCJhZGRIdHRwSGVhZGVyIiwicmVzIiwicm9vdCIsIkVudmVsb3BlIiwiQm9keSIsIkZhdWx0IiwiSlNPTiIsInN0cmluZ2lmeSIsImZhdWx0c3RyaW5nIiwiaW5zcGVjdCIsImRlcHRoIiwidHlwZSIsImdldExhc3RSZXNwb25zZUhlYWRlcnMiLCJkZXNjcmliZSJdLCJtYXBwaW5ncyI6Ijs7OztBQWNBOzs7O0FBZEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FB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dEI7O0FBQ0Esa0JBQUlELGVBQWUsR0FBRyxDQUF0QixFQUF5QjtBQUNyQkQsZ0JBQUFBLE9BQU8sR0FBR0wsR0FBRyxDQUFDSSxPQUFKLENBQVlJLFNBQVosQ0FBc0IsQ0FBdEIsRUFBeUJGLGVBQXpCLENBQVY7QUFDSDs7QUFDREgsY0FBQUEsR0FBRyxJQUFJLE9BQU9FLE9BQWQ7QUFDSCxhQVBELE1BT08sSUFBSUwsR0FBRyxLQUFLLE9BQU9BLEdBQVAsS0FBZSxRQUFmLElBQTJCQSxHQUFHLFlBQVlTLE1BQS9DLENBQVAsRUFBK0Q7QUFDbEVOLGNBQUFBLEdBQUcsSUFBSSxPQUFPSCxHQUFkO0FBQ0g7O0FBQ0RSLFlBQUFBLFlBQVksR0FBRyxJQUFJa0Isb0JBQUosQ0FBWWhELFNBQVMsQ0FBQ2lELFNBQVYsQ0FBb0JDLFVBQWhDLEVBQTRDVCxHQUE1QyxDQUFmO0FBQ0FSLFlBQUFBLE9BQU87QUFDUDtBQUNIOztBQUVELGNBQUk1QixJQUFKLEVBQVU7QUFDTmtDLFlBQUFBLE1BQU0sQ0FBQ1ksV0FBUCxDQUFtQjlDLElBQW5CO0FBQ0g7O0FBRUR5QixVQUFBQSxZQUFZLEdBQUdTLE1BQU0sQ0FBQzJCLFFBQVAsRUFBZjtBQUNBakMsVUFBQUEsT0FBTztBQUNQO0FBQ0gsU0F6QkQ7QUEwQkgsT0EzQk0sQ0FBUDtBQTRCSCxLQTdCSyxHQUFOOztBQStCQSxRQUFJSCxZQUFZLENBQUNrQyxJQUFiLEtBQXNCaEUsU0FBUyxDQUFDaUQsU0FBVixDQUFvQkMsVUFBOUMsRUFBMEQ7QUFDdEQsWUFBTXBCLFlBQU47QUFDSDs7QUFFRCxXQUFPQSxZQUFQO0FBQ0gsR0F2Q0Q7O0FBeUNBLFNBQU81QixNQUFQO0FBQ0gsQ0EzTUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAbmFtZSBzb2FwXHJcbiAqIEBkZXNjcmlwdGlvbiBQcm92aWRlcyBtZXRob2RzIGZvciB3b3JraW5nIHdpdGggU09BUCBiYXNlZCBXZWIgU2VydmljZXMuXHJcbiAqL1xyXG5cclxuaW1wb3J0IE94RXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcclxudmFyIGVyckhlbHBlciA9IHJlcXVpcmUoJy4uL2Vycm9ycy9oZWxwZXInKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgc29hcCA9IHJlcXVpcmUoJ3NvYXAnKTtcclxuICAgIHZhciBhdXRoID0gbnVsbDtcclxuICAgIHZhciBwcm94eU9wdGlvbnMgPSB7fTtcclxuICAgIHZhciBvcHRpb25zID0ge1xyXG4gICAgICAgIHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2VcclxuICAgIH07XHJcbiAgICB2YXIgbGFzdFJlc3BvbnNlSGVhZGVycyA9IG51bGw7XHJcblxyXG4gICAgbW9kdWxlLmlzSW5pdGlhbGl6ZWQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNldHMgcHJveHkgdXJsIHRvIGJlIHVzZWQgZm9yIGNvbm5lY3Rpb25zIHdpdGggdGhlIHNlcnZpY2UuXHJcbiAgICAgKiBAZnVuY3Rpb24gc2V0UHJveHlcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB1cmwgLSBQcm94eSB1cmwuIEludm9jYXRpb24gd2l0aG91dCBhcmd1bWVudHMgd2lsbCByZW1vdmUgYW55IHByZXZpb3VzbHkgc2V0IHVybC5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLnNldFByb3h5ID0gZnVuY3Rpb24odXJsKSB7XHJcbiAgICAgICAgaWYgKHVybCkge1xyXG4gICAgICAgICAgICBwcm94eU9wdGlvbnMgPSAgeyBwcm94eTogdXJsIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcHJveHlPcHRpb25zID0ge307XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNldHMgQmFzaWMgQXV0aGVudGljYXRpb24gZGV0YWlscyB0byBiZSB1c2VkIGZvciBjb25uZWN0aW9ucyB3aXRoIHRoZSBzZXJ2aWNlLlxyXG4gICAgICogQGZ1bmN0aW9uIGF1dGhCYXNpY1xyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVzZXIgLSBVc2VybmFtZS5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBwYXNzIC0gUGFzc3dvcmQuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5hdXRoQmFzaWMgPSBmdW5jdGlvbih1c2VyLCBwYXNzKSB7XHJcbiAgICAgICAgYXV0aCA9IG5ldyBzb2FwLkJhc2ljQXV0aFNlY3VyaXR5KHVzZXIsIHBhc3MpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNldHMgQmVhcmVyIFRva2VuIEF1dGhlbnRpY2F0aW9uIGRldGFpbHMgdG8gYmUgdXNlZCBmb3IgY29ubmVjdGlvbnMgd2l0aCB0aGUgc2VydmljZS5cclxuICAgICAqIEBmdW5jdGlvbiBhdXRoQmVhcmVyXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdG9rZW4gLSBUb2tlbi5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmF1dGhCZWFyZXIgPSBmdW5jdGlvbih0b2tlbikge1xyXG4gICAgICAgIGF1dGggPSBuZXcgc29hcC5CZWFyZXJTZWN1cml0eSh0b2tlbik7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgU2V0cyBOVExNIEF1dGhlbnRpY2F0aW9uIGRldGFpbHMgdG8gYmUgdXNlZCBmb3IgY29ubmVjdGlvbnMgd2l0aCB0aGUgc2VydmljZS5cclxuICAgICAqIEBmdW5jdGlvbiBhdXRoTlRMTVxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVzZXIgLSBVc2VybmFtZS5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBwYXNzIC0gUGFzc3dvcmQuXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gZG9tYWluIC0gRG9tYWluLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHdvcmtzdGF0aW9uIC0gV29ya3N0YXRpb24uXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5hdXRoTlRMTSA9IGZ1bmN0aW9uKHVzZXIsIHBhc3MsIGRvbWFpbiwgd29ya3N0YXRpb24pIHtcclxuICAgICAgICBhdXRoID0gbmV3IHNvYXAuTlRMTVNlY3VyaXR5KHVzZXIsIHBhc3MsIGRvbWFpbiwgd29ya3N0YXRpb24pO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEluaXRpYXRlcyBhIFNPQVAgcmVxdWVzdCBhbmQgcmV0dXJucyB0aGUgcmVzcG9uc2UuXHJcbiAgICAgKiBAZnVuY3Rpb24gZ2V0XHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gd3NkbFVybCAtIFVSTCBwb2ludGluZyB0byB0aGUgV1NETCBYTUwuXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbWV0aG9kIC0gTWV0aG9kIG5hbWUgKGNhc2Ugc2Vuc2l0aXZlKS5cclxuICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gYXJncyAtIE9iamVjdCBjb250YWluaW5nIHRoZSBhcmd1bWVudHMuXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdD19IHdzZGxIZWFkZXJzIC0gY3VzdG9tIEhUVFAgaGVhZGVycyB0byBiZSBzZW50IG9uIFdTREwgcmVxdWVzdHMuXHJcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFRoZSByZXNwb25zZSBvYmplY3QuXHJcbiAgICAgKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cclxuICAgICAqIC8vIGdldCBTT0FQIHNlcnZpY2UgZGVzY3JpcHRpb24sIHNvIHdlIGNhbiB1bmRlcnN0YW5kIHdoYXQgbWV0aG9kcyBpdCBwcm92aWRlcyxcclxuICAgICAqIC8vIHdoYXQgaW5wdXQgcGFyYW1ldGVycyBpdCBleHBlY3RzLCBhbmQgd2hhdCBpcyB0aGUgb3V0cHV0IHN0cnVjdHVyZS5cclxuICAgICAqIHZhciBzZXJ2aWNlVXJsID0gJ2h0dHA6Ly93d3cuZGF0YWFjY2Vzcy5jb20vd2Vic2VydmljZXNzZXJ2ZXIvbnVtYmVyY29udmVyc2lvbi53c28/V1NETCc7XHJcbiAgICAgKiB2YXIgc2VydmljZURlc2NyaXB0aW9uID0gc29hcC5kZXNjcmliZShzZXJ2aWNlVXJsKTtcclxuICAgICAqIGxvZy5pbmZvKHNlcnZpY2VEZXNjcmlwdGlvbik7XHJcbiAgICAgKiBcclxuICAgICAqIC8vIE51bWJlclRvV29yZHMgbWV0aG9kIGluIHRoaXMgc2VydmljZSBjb252ZXJ0cyBudW1iZXIgdG8gd29yZHMuXHJcbiAgICAgKiB2YXIgcmVzdWx0ID0gc29hcC5nZXQoc2VydmljZVVybCwgJ051bWJlclRvV29yZHMnLCB7ICd1YmlOdW0nOiAyMDE5IH0pO1xyXG4gICAgICogbG9nLmluZm8ocmVzdWx0Lk51bWJlclRvV29yZHNSZXN1bHQpO1xyXG4gICAgICovXHJcbiAgICBtb2R1bGUuZ2V0ID0gYXN5bmMgZnVuY3Rpb24od3NkbFVybCwgbWV0aG9kLCBhcmdzLCB3c2RsSGVhZGVycyA9IHt9KSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdENsaWVudCA9IG51bGw7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bGw7XHJcblxyXG4gICAgICAgIGF3YWl0ICgoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzb2FwLmNyZWF0ZUNsaWVudCh3c2RsVXJsLCB7IHdzZGxfb3B0aW9uczogeyAuLi5vcHRpb25zLCAuLi5wcm94eU9wdGlvbnMgfSwgd3NkbF9oZWFkZXJzOiB3c2RsSGVhZGVyc30sIChlcnIsIGNsaWVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbXNnID0gICdFcnJvciBjcmVhdGluZyBjbGllbnQnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyLm1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzb2FwTXNnID0gZXJyLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmlyc3RCcmVha0luZGV4ID0gc29hcE1zZy5pbmRleE9mKCdcXG4nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdEJyZWFrSW5kZXggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29hcE1zZyA9IGVyci5tZXNzYWdlLnN1YnN0cmluZygwLCBmaXJzdEJyZWFrSW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnICs9ICc6ICcgKyBzb2FwTXNnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVyciAmJiAodHlwZW9mIGVyciA9PT0gJ3N0cmluZycgfHwgZXJyIGluc3RhbmNlb2YgU3RyaW5nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnICs9ICc6ICcgKyBlcnI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q2xpZW50ID0gbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TT0FQX0VSUk9SLCBtc2cpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdENsaWVudCA9IGNsaWVudDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjbGllbnRbbWV0aG9kXSAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRDbGllbnQgPSBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNPQVBfRVJST1IsICdObyBtZXRob2QgbmFtZWQgJyArIG1ldGhvZCArICcgd2FzIGZvdW5kLicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChhdXRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudC5zZXRTZWN1cml0eShhdXRoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh3c2RsSGVhZGVycykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGhlYWRlciBpbiB3c2RsSGVhZGVycykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LmFkZEh0dHBIZWFkZXIoaGVhZGVyLCB3c2RsSGVhZGVyc1toZWFkZXJdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50W21ldGhvZF0oYXJncywgKGVyciwgcmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RSZXNwb25zZUhlYWRlcnMgPSBjbGllbnQubGFzdFJlc3BvbnNlSGVhZGVycztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyciAhPT0gbnVsbCAmJiBlcnIucm9vdCAmJiBlcnIucm9vdC5FbnZlbG9wZSAmJiBlcnIucm9vdC5FbnZlbG9wZS5Cb2R5ICYmIGVyci5yb290LkVudmVsb3BlLkJvZHkuRmF1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU09BUF9FUlJPUiwgSlNPTi5zdHJpbmdpZnkoZXJyLnJvb3QuRW52ZWxvcGUuQm9keS5GYXVsdC5mYXVsdHN0cmluZykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVyciAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TT0FQX0VSUk9SLCByZXF1aXJlKCd1dGlsJykuaW5zcGVjdChlcnIsIHsgZGVwdGg6IDQgfSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9LCB7IC4uLm9wdGlvbnMsIC4uLnByb3h5T3B0aW9ucyB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KSgpO1xyXG5cclxuICAgICAgICBpZiAocmVzdWx0Q2xpZW50LnR5cGUgPT09IGVyckhlbHBlci5lcnJvckNvZGUuU09BUF9FUlJPUikge1xyXG4gICAgICAgICAgICB0aHJvdyByZXN1bHRDbGllbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT09IGVyckhlbHBlci5lcnJvckNvZGUuU09BUF9FUlJPUikge1xyXG4gICAgICAgICAgICB0aHJvdyByZXN1bHQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFJldHVybnMgbGFzdCByZXNwb25zZSBoZWFkZXJzLlxyXG4gICAgICogQGZ1bmN0aW9uIGdldExhc3RSZXNwb25zZUhlYWRlcnNcclxuICAgICAqIEByZXR1cm4ge09iamVjdH0gSW5jb21pbmdIdHRwSGVhZGVycyAoaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL1Bvd2VyQkktSmF2YVNjcmlwdC9pbnRlcmZhY2VzL19ub2RlX21vZHVsZXNfX3R5cGVzX25vZGVfaHR0cDJfZF8uX2h0dHAyXy5pbmNvbWluZ2h0dHBoZWFkZXJzLmh0bWwpLlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUuZ2V0TGFzdFJlc3BvbnNlSGVhZGVycyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBsYXN0UmVzcG9uc2VIZWFkZXJzO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFJldHVybnMgU09BUCBzZXJ2aWNlIGRlc2NyaXB0aW9uLlxyXG4gICAgICogQGZ1bmN0aW9uIGRlc2NyaWJlXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gd3NkbFVybCAtIFVSTCBwb2ludGluZyB0byB0aGUgV1NETCBYTUwuXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdD19IHdzZGxIZWFkZXJzIC0gY3VzdG9tIEhUVFAgaGVhZGVycyB0byBiZSBzZW50IG9uIFdTREwgcmVxdWVzdHMuXHJcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFNlcnZpY2UgZGVzY3JpcHRpb24uXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5kZXNjcmliZSA9IGFzeW5jIGZ1bmN0aW9uKHdzZGxVcmwsIHdzZGxIZWFkZXJzID0ge30pIHtcclxuICAgICAgICB2YXIgcmVzdWx0Q2xpZW50ID0gbnVsbDtcclxuXHJcbiAgICAgICAgYXdhaXQgKCgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIHNvYXAuY3JlYXRlQ2xpZW50KHdzZGxVcmwseyB3c2RsX29wdGlvbnM6IHsgLi4ub3B0aW9ucywgLi4ucHJveHlPcHRpb25zIH0sIHdzZGxfaGVhZGVyczogd3NkbEhlYWRlcnN9LCAoZXJyLCBjbGllbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2xpZW50ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1zZyA9ICAnRXJyb3IgY3JlYXRpbmcgY2xpZW50JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyci5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc29hcE1zZyA9IGVyci5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZpcnN0QnJlYWtJbmRleCA9IHNvYXBNc2cuaW5kZXhPZignXFxuJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RCcmVha0luZGV4ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvYXBNc2cgPSBlcnIubWVzc2FnZS5zdWJzdHJpbmcoMCwgZmlyc3RCcmVha0luZGV4KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyArPSAnOiAnICsgc29hcE1zZztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlcnIgJiYgKHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnIHx8IGVyciBpbnN0YW5jZW9mIFN0cmluZykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyArPSAnOiAnICsgZXJyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdENsaWVudCA9IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU09BUF9FUlJPUiwgbXNnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoYXV0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQuc2V0U2VjdXJpdHkoYXV0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRDbGllbnQgPSBjbGllbnQuZGVzY3JpYmUoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pKCk7XHJcblxyXG4gICAgICAgIGlmIChyZXN1bHRDbGllbnQudHlwZSA9PT0gZXJySGVscGVyLmVycm9yQ29kZS5TT0FQX0VSUk9SKSB7XHJcbiAgICAgICAgICAgIHRocm93IHJlc3VsdENsaWVudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHRDbGllbnQ7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBtb2R1bGU7XHJcbn07XHJcbiJdfQ==
|
|
227
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlcnJIZWxwZXIiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsInNvYXAiLCJhdXRoIiwicHJveHlPcHRpb25zIiwib3B0aW9ucyIsInJlamVjdFVuYXV0aG9yaXplZCIsImxhc3RSZXNwb25zZUhlYWRlcnMiLCJpc0luaXRpYWxpemVkIiwic2V0UHJveHkiLCJ1cmwiLCJwcm94eSIsImF1dGhCYXNpYyIsInVzZXIiLCJwYXNzIiwiQmFzaWNBdXRoU2VjdXJpdHkiLCJhdXRoQmVhcmVyIiwidG9rZW4iLCJCZWFyZXJTZWN1cml0eSIsImF1dGhOVExNIiwiZG9tYWluIiwid29ya3N0YXRpb24iLCJOVExNU2VjdXJpdHkiLCJnZXQiLCJ3c2RsVXJsIiwibWV0aG9kIiwiYXJncyIsIndzZGxIZWFkZXJzIiwicmVzdWx0Q2xpZW50IiwicmVzdWx0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJjcmVhdGVDbGllbnQiLCJ3c2RsX29wdGlvbnMiLCJ3c2RsX2hlYWRlcnMiLCJlcnIiLCJjbGllbnQiLCJ1bmRlZmluZWQiLCJtc2ciLCJtZXNzYWdlIiwic29hcE1zZyIsImZpcnN0QnJlYWtJbmRleCIsImluZGV4T2YiLCJzdWJzdHJpbmciLCJTdHJpbmciLCJPeEVycm9yIiwiZXJyb3JDb2RlIiwiU09BUF9FUlJPUiIsInNldFNlY3VyaXR5IiwiaGVhZGVyIiwiYWRkSHR0cEhlYWRlciIsInJlcyIsInJvb3QiLCJFbnZlbG9wZSIsIkJvZHkiLCJGYXVsdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJmYXVsdHN0cmluZyIsImluc3BlY3QiLCJkZXB0aCIsInR5cGUiLCJnZXRMYXN0UmVzcG9uc2VIZWFkZXJzIiwiZGVzY3JpYmUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvb3hfbW9kdWxlcy9tb2R1bGUtc29hcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAbmFtZSBzb2FwXHJcbiAqIEBkZXNjcmlwdGlvbiBQcm92aWRlcyBtZXRob2RzIGZvciB3b3JraW5nIHdpdGggU09BUCBiYXNlZCBXZWIgU2VydmljZXMuXHJcbiAqL1xyXG5cclxuaW1wb3J0IE94RXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcclxudmFyIGVyckhlbHBlciA9IHJlcXVpcmUoJy4uL2Vycm9ycy9oZWxwZXInKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgc29hcCA9IHJlcXVpcmUoJ3NvYXAnKTtcclxuICAgIHZhciBhdXRoID0gbnVsbDtcclxuICAgIHZhciBwcm94eU9wdGlvbnMgPSB7fTtcclxuICAgIHZhciBvcHRpb25zID0ge1xyXG4gICAgICAgIHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2VcclxuICAgIH07XHJcbiAgICB2YXIgbGFzdFJlc3BvbnNlSGVhZGVycyA9IG51bGw7XHJcblxyXG4gICAgbW9kdWxlLmlzSW5pdGlhbGl6ZWQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNldHMgcHJveHkgdXJsIHRvIGJlIHVzZWQgZm9yIGNvbm5lY3Rpb25zIHdpdGggdGhlIHNlcnZpY2UuXHJcbiAgICAgKiBAZnVuY3Rpb24gc2V0UHJveHlcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB1cmwgLSBQcm94eSB1cmwuIEludm9jYXRpb24gd2l0aG91dCBhcmd1bWVudHMgd2lsbCByZW1vdmUgYW55IHByZXZpb3VzbHkgc2V0IHVybC5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLnNldFByb3h5ID0gZnVuY3Rpb24odXJsKSB7XHJcbiAgICAgICAgaWYgKHVybCkge1xyXG4gICAgICAgICAgICBwcm94eU9wdGlvbnMgPSAgeyBwcm94eTogdXJsIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcHJveHlPcHRpb25zID0ge307XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNldHMgQmFzaWMgQXV0aGVudGljYXRpb24gZGV0YWlscyB0byBiZSB1c2VkIGZvciBjb25uZWN0aW9ucyB3aXRoIHRoZSBzZXJ2aWNlLlxyXG4gICAgICogQGZ1bmN0aW9uIGF1dGhCYXNpY1xyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVzZXIgLSBVc2VybmFtZS5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBwYXNzIC0gUGFzc3dvcmQuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5hdXRoQmFzaWMgPSBmdW5jdGlvbih1c2VyLCBwYXNzKSB7XHJcbiAgICAgICAgYXV0aCA9IG5ldyBzb2FwLkJhc2ljQXV0aFNlY3VyaXR5KHVzZXIsIHBhc3MpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNldHMgQmVhcmVyIFRva2VuIEF1dGhlbnRpY2F0aW9uIGRldGFpbHMgdG8gYmUgdXNlZCBmb3IgY29ubmVjdGlvbnMgd2l0aCB0aGUgc2VydmljZS5cclxuICAgICAqIEBmdW5jdGlvbiBhdXRoQmVhcmVyXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdG9rZW4gLSBUb2tlbi5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmF1dGhCZWFyZXIgPSBmdW5jdGlvbih0b2tlbikge1xyXG4gICAgICAgIGF1dGggPSBuZXcgc29hcC5CZWFyZXJTZWN1cml0eSh0b2tlbik7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgU2V0cyBOVExNIEF1dGhlbnRpY2F0aW9uIGRldGFpbHMgdG8gYmUgdXNlZCBmb3IgY29ubmVjdGlvbnMgd2l0aCB0aGUgc2VydmljZS5cclxuICAgICAqIEBmdW5jdGlvbiBhdXRoTlRMTVxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVzZXIgLSBVc2VybmFtZS5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBwYXNzIC0gUGFzc3dvcmQuXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gZG9tYWluIC0gRG9tYWluLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHdvcmtzdGF0aW9uIC0gV29ya3N0YXRpb24uXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5hdXRoTlRMTSA9IGZ1bmN0aW9uKHVzZXIsIHBhc3MsIGRvbWFpbiwgd29ya3N0YXRpb24pIHtcclxuICAgICAgICBhdXRoID0gbmV3IHNvYXAuTlRMTVNlY3VyaXR5KHVzZXIsIHBhc3MsIGRvbWFpbiwgd29ya3N0YXRpb24pO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEluaXRpYXRlcyBhIFNPQVAgcmVxdWVzdCBhbmQgcmV0dXJucyB0aGUgcmVzcG9uc2UuXHJcbiAgICAgKiBAZnVuY3Rpb24gZ2V0XHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gd3NkbFVybCAtIFVSTCBwb2ludGluZyB0byB0aGUgV1NETCBYTUwuXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbWV0aG9kIC0gTWV0aG9kIG5hbWUgKGNhc2Ugc2Vuc2l0aXZlKS5cclxuICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gYXJncyAtIE9iamVjdCBjb250YWluaW5nIHRoZSBhcmd1bWVudHMuXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdD19IHdzZGxIZWFkZXJzIC0gY3VzdG9tIEhUVFAgaGVhZGVycyB0byBiZSBzZW50IG9uIFdTREwgcmVxdWVzdHMuXHJcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFRoZSByZXNwb25zZSBvYmplY3QuXHJcbiAgICAgKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cclxuICAgICAqIC8vIGdldCBTT0FQIHNlcnZpY2UgZGVzY3JpcHRpb24sIHNvIHdlIGNhbiB1bmRlcnN0YW5kIHdoYXQgbWV0aG9kcyBpdCBwcm92aWRlcyxcclxuICAgICAqIC8vIHdoYXQgaW5wdXQgcGFyYW1ldGVycyBpdCBleHBlY3RzLCBhbmQgd2hhdCBpcyB0aGUgb3V0cHV0IHN0cnVjdHVyZS5cclxuICAgICAqIHZhciBzZXJ2aWNlVXJsID0gJ2h0dHA6Ly93d3cuZGF0YWFjY2Vzcy5jb20vd2Vic2VydmljZXNzZXJ2ZXIvbnVtYmVyY29udmVyc2lvbi53c28/V1NETCc7XHJcbiAgICAgKiB2YXIgc2VydmljZURlc2NyaXB0aW9uID0gc29hcC5kZXNjcmliZShzZXJ2aWNlVXJsKTtcclxuICAgICAqIGxvZy5pbmZvKHNlcnZpY2VEZXNjcmlwdGlvbik7XHJcbiAgICAgKiBcclxuICAgICAqIC8vIE51bWJlclRvV29yZHMgbWV0aG9kIGluIHRoaXMgc2VydmljZSBjb252ZXJ0cyBudW1iZXIgdG8gd29yZHMuXHJcbiAgICAgKiB2YXIgcmVzdWx0ID0gc29hcC5nZXQoc2VydmljZVVybCwgJ051bWJlclRvV29yZHMnLCB7ICd1YmlOdW0nOiAyMDE5IH0pO1xyXG4gICAgICogbG9nLmluZm8ocmVzdWx0Lk51bWJlclRvV29yZHNSZXN1bHQpO1xyXG4gICAgICovXHJcbiAgICBtb2R1bGUuZ2V0ID0gYXN5bmMgZnVuY3Rpb24od3NkbFVybCwgbWV0aG9kLCBhcmdzLCB3c2RsSGVhZGVycyA9IHt9KSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdENsaWVudCA9IG51bGw7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bGw7XHJcblxyXG4gICAgICAgIGF3YWl0ICgoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzb2FwLmNyZWF0ZUNsaWVudCh3c2RsVXJsLCB7IHdzZGxfb3B0aW9uczogeyAuLi5vcHRpb25zLCAuLi5wcm94eU9wdGlvbnMgfSwgd3NkbF9oZWFkZXJzOiB3c2RsSGVhZGVyc30sIChlcnIsIGNsaWVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbXNnID0gICdFcnJvciBjcmVhdGluZyBjbGllbnQnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyLm1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzb2FwTXNnID0gZXJyLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmlyc3RCcmVha0luZGV4ID0gc29hcE1zZy5pbmRleE9mKCdcXG4nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdEJyZWFrSW5kZXggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29hcE1zZyA9IGVyci5tZXNzYWdlLnN1YnN0cmluZygwLCBmaXJzdEJyZWFrSW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnICs9ICc6ICcgKyBzb2FwTXNnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVyciAmJiAodHlwZW9mIGVyciA9PT0gJ3N0cmluZycgfHwgZXJyIGluc3RhbmNlb2YgU3RyaW5nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnICs9ICc6ICcgKyBlcnI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q2xpZW50ID0gbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TT0FQX0VSUk9SLCBtc2cpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdENsaWVudCA9IGNsaWVudDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjbGllbnRbbWV0aG9kXSAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRDbGllbnQgPSBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNPQVBfRVJST1IsICdObyBtZXRob2QgbmFtZWQgJyArIG1ldGhvZCArICcgd2FzIGZvdW5kLicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChhdXRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudC5zZXRTZWN1cml0eShhdXRoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh3c2RsSGVhZGVycykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGhlYWRlciBpbiB3c2RsSGVhZGVycykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LmFkZEh0dHBIZWFkZXIoaGVhZGVyLCB3c2RsSGVhZGVyc1toZWFkZXJdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50W21ldGhvZF0oYXJncywgKGVyciwgcmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RSZXNwb25zZUhlYWRlcnMgPSBjbGllbnQubGFzdFJlc3BvbnNlSGVhZGVycztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyciAhPT0gbnVsbCAmJiBlcnIucm9vdCAmJiBlcnIucm9vdC5FbnZlbG9wZSAmJiBlcnIucm9vdC5FbnZlbG9wZS5Cb2R5ICYmIGVyci5yb290LkVudmVsb3BlLkJvZHkuRmF1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU09BUF9FUlJPUiwgSlNPTi5zdHJpbmdpZnkoZXJyLnJvb3QuRW52ZWxvcGUuQm9keS5GYXVsdC5mYXVsdHN0cmluZykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVyciAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TT0FQX0VSUk9SLCByZXF1aXJlKCd1dGlsJykuaW5zcGVjdChlcnIsIHsgZGVwdGg6IDQgfSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9LCB7IC4uLm9wdGlvbnMsIC4uLnByb3h5T3B0aW9ucyB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KSgpO1xyXG5cclxuICAgICAgICBpZiAocmVzdWx0Q2xpZW50LnR5cGUgPT09IGVyckhlbHBlci5lcnJvckNvZGUuU09BUF9FUlJPUikge1xyXG4gICAgICAgICAgICB0aHJvdyByZXN1bHRDbGllbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT09IGVyckhlbHBlci5lcnJvckNvZGUuU09BUF9FUlJPUikge1xyXG4gICAgICAgICAgICB0aHJvdyByZXN1bHQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFJldHVybnMgbGFzdCByZXNwb25zZSBoZWFkZXJzLlxyXG4gICAgICogQGZ1bmN0aW9uIGdldExhc3RSZXNwb25zZUhlYWRlcnNcclxuICAgICAqIEByZXR1cm4ge09iamVjdH0gSW5jb21pbmdIdHRwSGVhZGVycyAoaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL1Bvd2VyQkktSmF2YVNjcmlwdC9pbnRlcmZhY2VzL19ub2RlX21vZHVsZXNfX3R5cGVzX25vZGVfaHR0cDJfZF8uX2h0dHAyXy5pbmNvbWluZ2h0dHBoZWFkZXJzLmh0bWwpLlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUuZ2V0TGFzdFJlc3BvbnNlSGVhZGVycyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBsYXN0UmVzcG9uc2VIZWFkZXJzO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFJldHVybnMgU09BUCBzZXJ2aWNlIGRlc2NyaXB0aW9uLlxyXG4gICAgICogQGZ1bmN0aW9uIGRlc2NyaWJlXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gd3NkbFVybCAtIFVSTCBwb2ludGluZyB0byB0aGUgV1NETCBYTUwuXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdD19IHdzZGxIZWFkZXJzIC0gY3VzdG9tIEhUVFAgaGVhZGVycyB0byBiZSBzZW50IG9uIFdTREwgcmVxdWVzdHMuXHJcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFNlcnZpY2UgZGVzY3JpcHRpb24uXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5kZXNjcmliZSA9IGFzeW5jIGZ1bmN0aW9uKHdzZGxVcmwsIHdzZGxIZWFkZXJzID0ge30pIHtcclxuICAgICAgICB2YXIgcmVzdWx0Q2xpZW50ID0gbnVsbDtcclxuXHJcbiAgICAgICAgYXdhaXQgKCgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIHNvYXAuY3JlYXRlQ2xpZW50KHdzZGxVcmwseyB3c2RsX29wdGlvbnM6IHsgLi4ub3B0aW9ucywgLi4ucHJveHlPcHRpb25zIH0sIHdzZGxfaGVhZGVyczogd3NkbEhlYWRlcnN9LCAoZXJyLCBjbGllbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2xpZW50ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1zZyA9ICAnRXJyb3IgY3JlYXRpbmcgY2xpZW50JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyci5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc29hcE1zZyA9IGVyci5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZpcnN0QnJlYWtJbmRleCA9IHNvYXBNc2cuaW5kZXhPZignXFxuJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RCcmVha0luZGV4ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvYXBNc2cgPSBlcnIubWVzc2FnZS5zdWJzdHJpbmcoMCwgZmlyc3RCcmVha0luZGV4KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyArPSAnOiAnICsgc29hcE1zZztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlcnIgJiYgKHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnIHx8IGVyciBpbnN0YW5jZW9mIFN0cmluZykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyArPSAnOiAnICsgZXJyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdENsaWVudCA9IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU09BUF9FUlJPUiwgbXNnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoYXV0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQuc2V0U2VjdXJpdHkoYXV0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRDbGllbnQgPSBjbGllbnQuZGVzY3JpYmUoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pKCk7XHJcblxyXG4gICAgICAgIGlmIChyZXN1bHRDbGllbnQudHlwZSA9PT0gZXJySGVscGVyLmVycm9yQ29kZS5TT0FQX0VSUk9SKSB7XHJcbiAgICAgICAgICAgIHRocm93IHJlc3VsdENsaWVudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHRDbGllbnQ7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBtb2R1bGU7XHJcbn07XHJcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBY0E7QUFBNEM7QUFkNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQSxJQUFJQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztBQUUzQ0MsTUFBTSxDQUFDQyxPQUFPLEdBQUcsWUFBVztFQUN4QixJQUFJQyxJQUFJLEdBQUdILE9BQU8sQ0FBQyxNQUFNLENBQUM7RUFDMUIsSUFBSUksSUFBSSxHQUFHLElBQUk7RUFDZixJQUFJQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO0VBQ3JCLElBQUlDLE9BQU8sR0FBRztJQUNWQyxrQkFBa0IsRUFBRTtFQUN4QixDQUFDO0VBQ0QsSUFBSUMsbUJBQW1CLEdBQUcsSUFBSTtFQUU5QlAsTUFBTSxDQUFDUSxhQUFhLEdBQUcsWUFBVztJQUM5QixPQUFPLElBQUk7RUFDZixDQUFDO0VBQ0Q7QUFDSjtBQUNBO0FBQ0E7QUFDQTtFQUNJUixNQUFNLENBQUNTLFFBQVEsR0FBRyxVQUFTQyxHQUFHLEVBQUU7SUFDNUIsSUFBSUEsR0FBRyxFQUFFO01BQ0xOLFlBQVksR0FBSTtRQUFFTyxLQUFLLEVBQUVEO01BQUksQ0FBQztJQUNsQyxDQUFDLE1BQU07TUFDSE4sWUFBWSxHQUFHLENBQUMsQ0FBQztJQUNyQjtFQUNKLENBQUM7O0VBRUQ7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0lKLE1BQU0sQ0FBQ1ksU0FBUyxHQUFHLFVBQVNDLElBQUksRUFBRUMsSUFBSSxFQUFFO0lBQ3BDWCxJQUFJLEdBQUcsSUFBSUQsSUFBSSxDQUFDYSxpQkFBaUIsQ0FBQ0YsSUFBSSxFQUFFQyxJQUFJLENBQUM7RUFDakQsQ0FBQzs7RUFFRDtBQUNKO0FBQ0E7QUFDQTtBQUNBO0VBQ0lkLE1BQU0s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
|