oxygen-cli 1.40.1 → 1.40.2-beta.1
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/CHANGELOG.md +1742 -1742
- package/LICENSE +672 -672
- package/README.md +37 -37
- package/build/core/OxygenCore.js +1 -1
- package/build/core/OxygenEvents.js +1 -1
- package/build/core/OxygenModule.js +1 -1
- package/build/core/OxygenService.js +1 -1
- package/build/core/OxygenSubModule.js +1 -1
- package/build/core/WebDriverModule.js +1 -1
- package/build/core/utils.js +1 -1
- package/build/errors/HookError.js +1 -1
- package/build/errors/ModuleError.js +1 -1
- package/build/errors/ModuleUnavailableError.js +1 -1
- package/build/errors/OxygenError.js +1 -1
- package/build/errors/ScriptNotFound.js +1 -1
- package/build/errors/helper.js +2 -1
- package/build/index.js +1 -1
- package/build/lib/cli-util.js +5 -1
- package/build/lib/debugger.js +1 -1
- package/build/lib/img-merge.js +1 -1
- package/build/lib/launcher.js +1 -1
- package/build/lib/logger.js +43 -43
- package/build/lib/moduleRequire.js +1 -1
- package/build/lib/parallel-launcher.js +1 -1
- package/build/lib/param-manager.js +1 -1
- package/build/lib/param-reader-csv.js +1 -1
- package/build/lib/param-reader-excel.js +1 -1
- package/build/lib/param-reader-json.js +1 -1
- package/build/lib/text-to-image.js +1 -1
- package/build/lib/util.js +1 -1
- package/build/model/case-result.js +1 -1
- package/build/model/failure.js +1 -1
- package/build/model/status.js +1 -1
- package/build/model/step-result.js +1 -1
- package/build/model/suite-result.js +1 -1
- package/build/model/test-result.js +1 -1
- package/build/model/testcase.js +1 -1
- package/build/model/testsuite.js +1 -1
- package/build/ox_modules/index.js +9 -1
- package/build/ox_modules/module-assert.js +37 -37
- package/build/ox_modules/module-date.js +24 -24
- package/build/ox_modules/module-db.js +52 -52
- package/build/ox_modules/module-email.js +59 -59
- package/build/ox_modules/module-eyes.js +34 -34
- package/build/ox_modules/module-http/ntlm-util.js +10 -10
- package/build/ox_modules/module-http/ntlm.js +15 -15
- package/build/ox_modules/module-http.js +132 -132
- package/build/ox_modules/module-log.js +27 -27
- package/build/ox_modules/module-mailinator.js +87 -87
- package/build/ox_modules/module-mob/commands/alertAccept.js +17 -17
- package/build/ox_modules/module-mob/commands/alertDismiss.js +17 -17
- package/build/ox_modules/module-mob/commands/assertAlert.js +20 -20
- package/build/ox_modules/module-mob/commands/assertText.js +21 -21
- package/build/ox_modules/module-mob/commands/assertTitle.js +19 -19
- package/build/ox_modules/module-mob/commands/assertValue.js +18 -18
- package/build/ox_modules/module-mob/commands/back.js +16 -16
- package/build/ox_modules/module-mob/commands/clear.js +19 -19
- package/build/ox_modules/module-mob/commands/click.js +17 -17
- package/build/ox_modules/module-mob/commands/clickHidden.js +17 -17
- package/build/ox_modules/module-mob/commands/clickLong.js +18 -18
- package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +18 -18
- package/build/ox_modules/module-mob/commands/closeApp.js +16 -16
- package/build/ox_modules/module-mob/commands/debug.js +16 -16
- package/build/ox_modules/module-mob/commands/dragAndDrop.js +19 -19
- package/build/ox_modules/module-mob/commands/enableNetwork.js +27 -27
- package/build/ox_modules/module-mob/commands/execute.js +21 -21
- package/build/ox_modules/module-mob/commands/findElement.js +20 -20
- package/build/ox_modules/module-mob/commands/findElements.js +23 -23
- package/build/ox_modules/module-mob/commands/getAlertText.js +17 -17
- package/build/ox_modules/module-mob/commands/getAppiumLogs.js +16 -16
- package/build/ox_modules/module-mob/commands/getBrowserLogs.js +16 -16
- package/build/ox_modules/module-mob/commands/getCurrentActivity.js +15 -15
- package/build/ox_modules/module-mob/commands/getCurrentPackage.js +15 -15
- package/build/ox_modules/module-mob/commands/getDeviceLogs.js +16 -16
- package/build/ox_modules/module-mob/commands/getDeviceTime.js +16 -16
- package/build/ox_modules/module-mob/commands/getLocation.js +20 -20
- package/build/ox_modules/module-mob/commands/getSource.js +16 -16
- package/build/ox_modules/module-mob/commands/getText.js +18 -18
- package/build/ox_modules/module-mob/commands/getTitle.js +13 -13
- package/build/ox_modules/module-mob/commands/getUrl.js +17 -17
- package/build/ox_modules/module-mob/commands/getValue.js +18 -18
- package/build/ox_modules/module-mob/commands/getWindowHandles.js +17 -17
- package/build/ox_modules/module-mob/commands/hideKeyboard.js +21 -21
- package/build/ox_modules/module-mob/commands/index.js +1 -1
- package/build/ox_modules/module-mob/commands/installApp.js +16 -16
- package/build/ox_modules/module-mob/commands/isAppInstalled.js +16 -16
- package/build/ox_modules/module-mob/commands/isCheckable.js +18 -18
- package/build/ox_modules/module-mob/commands/isChecked.js +18 -18
- package/build/ox_modules/module-mob/commands/isClickable.js +18 -18
- package/build/ox_modules/module-mob/commands/isExist.js +19 -19
- package/build/ox_modules/module-mob/commands/isSelected.js +23 -23
- package/build/ox_modules/module-mob/commands/isVisible.js +19 -19
- package/build/ox_modules/module-mob/commands/isWebViewContext.js +16 -16
- package/build/ox_modules/module-mob/commands/launchApp.js +15 -15
- package/build/ox_modules/module-mob/commands/longPressKeyCode.js +18 -18
- package/build/ox_modules/module-mob/commands/open.js +17 -17
- package/build/ox_modules/module-mob/commands/pause.js +16 -16
- package/build/ox_modules/module-mob/commands/removeApp.js +16 -16
- package/build/ox_modules/module-mob/commands/resetApp.js +15 -15
- package/build/ox_modules/module-mob/commands/scrollIntoElement.js +22 -22
- package/build/ox_modules/module-mob/commands/scrollIntoView.js +27 -27
- package/build/ox_modules/module-mob/commands/select.js +24 -24
- package/build/ox_modules/module-mob/commands/selectFrame.js +23 -23
- package/build/ox_modules/module-mob/commands/selectWindow.js +28 -28
- package/build/ox_modules/module-mob/commands/sendKeys.js +29 -29
- package/build/ox_modules/module-mob/commands/setContext.js +16 -16
- package/build/ox_modules/module-mob/commands/setNativeContext.js +15 -15
- package/build/ox_modules/module-mob/commands/setTimeout.js +21 -21
- package/build/ox_modules/module-mob/commands/setWebViewContext.js +16 -16
- package/build/ox_modules/module-mob/commands/shake.js +16 -16
- package/build/ox_modules/module-mob/commands/smsClickLink.js +19 -19
- package/build/ox_modules/module-mob/commands/smsGetText.js +20 -20
- package/build/ox_modules/module-mob/commands/swipe.js +20 -20
- package/build/ox_modules/module-mob/commands/swipeElement.js +20 -20
- package/build/ox_modules/module-mob/commands/swipeScreen.js +20 -20
- package/build/ox_modules/module-mob/commands/takeScreenshot.js +17 -17
- package/build/ox_modules/module-mob/commands/tap.js +17 -17
- package/build/ox_modules/module-mob/commands/type.js +20 -20
- package/build/ox_modules/module-mob/commands/unlockPattern.js +22 -22
- package/build/ox_modules/module-mob/commands/waitForExist.js +18 -18
- package/build/ox_modules/module-mob/commands/waitForInteractable.js +17 -17
- package/build/ox_modules/module-mob/commands/waitForVisible.js +17 -17
- package/build/ox_modules/module-mob.js +74 -74
- package/build/ox_modules/module-mongo.js +302 -0
- package/build/ox_modules/module-pdf.js +35 -35
- package/build/ox_modules/module-proxy.js +77 -77
- package/build/ox_modules/module-serial.js +55 -55
- package/build/ox_modules/module-shell.js +25 -25
- package/build/ox_modules/module-soap.js +72 -72
- package/build/ox_modules/module-twilio.js +41 -41
- package/build/ox_modules/module-utils.js +91 -91
- package/build/ox_modules/module-web/commands/alertAccept.js +17 -17
- package/build/ox_modules/module-web/commands/alertDismiss.js +17 -17
- package/build/ox_modules/module-web/commands/assertAlert.js +20 -20
- package/build/ox_modules/module-web/commands/assertExist.js +17 -17
- package/build/ox_modules/module-web/commands/assertSelectedLabel.js +21 -21
- package/build/ox_modules/module-web/commands/assertSelectedValue.js +21 -21
- package/build/ox_modules/module-web/commands/assertText.js +21 -21
- package/build/ox_modules/module-web/commands/assertTextNotPresent.js +18 -18
- package/build/ox_modules/module-web/commands/assertTextPresent.js +18 -18
- package/build/ox_modules/module-web/commands/assertTitle.js +19 -19
- package/build/ox_modules/module-web/commands/assertValue.js +20 -20
- package/build/ox_modules/module-web/commands/back.js +16 -16
- package/build/ox_modules/module-web/commands/clear.js +18 -18
- package/build/ox_modules/module-web/commands/click.js +25 -25
- package/build/ox_modules/module-web/commands/clickHidden.js +23 -23
- package/build/ox_modules/module-web/commands/closeWindow.js +15 -15
- package/build/ox_modules/module-web/commands/debug.js +15 -15
- package/build/ox_modules/module-web/commands/deleteCookies.js +12 -12
- package/build/ox_modules/module-web/commands/deselect.js +22 -22
- package/build/ox_modules/module-web/commands/doubleClick.js +17 -17
- package/build/ox_modules/module-web/commands/dragAndDrop.js +20 -20
- package/build/ox_modules/module-web/commands/execute.js +24 -24
- package/build/ox_modules/module-web/commands/fileBrowse.js +18 -18
- package/build/ox_modules/module-web/commands/findElement.js +19 -19
- package/build/ox_modules/module-web/commands/findElements.js +22 -22
- package/build/ox_modules/module-web/commands/fullscreenWindow.js +14 -14
- package/build/ox_modules/module-web/commands/getAlertText.js +16 -16
- package/build/ox_modules/module-web/commands/getAttribute.js +19 -19
- package/build/ox_modules/module-web/commands/getBrowserLogs.js +17 -17
- package/build/ox_modules/module-web/commands/getCookies.js +13 -13
- package/build/ox_modules/module-web/commands/getCssValue.js +19 -19
- package/build/ox_modules/module-web/commands/getElementCount.js +17 -17
- package/build/ox_modules/module-web/commands/getHTML.js +17 -17
- package/build/ox_modules/module-web/commands/getSource.js +16 -16
- package/build/ox_modules/module-web/commands/getText.js +18 -18
- package/build/ox_modules/module-web/commands/getTitle.js +12 -12
- package/build/ox_modules/module-web/commands/getUrl.js +16 -16
- package/build/ox_modules/module-web/commands/getValue.js +18 -18
- package/build/ox_modules/module-web/commands/getWindowHandles.js +16 -16
- package/build/ox_modules/module-web/commands/getWindowSize.js +16 -16
- package/build/ox_modules/module-web/commands/getXMLPageSource.js +16 -16
- package/build/ox_modules/module-web/commands/index.js +1 -1
- package/build/ox_modules/module-web/commands/isAlertPresent.js +16 -16
- package/build/ox_modules/module-web/commands/isChecked.js +18 -18
- package/build/ox_modules/module-web/commands/isExist.js +19 -19
- package/build/ox_modules/module-web/commands/isInteractable.js +22 -22
- package/build/ox_modules/module-web/commands/isSelected.js +23 -23
- package/build/ox_modules/module-web/commands/isVisible.js +19 -19
- package/build/ox_modules/module-web/commands/makeVisible.js +25 -25
- package/build/ox_modules/module-web/commands/maximizeWindow.js +14 -14
- package/build/ox_modules/module-web/commands/minimizeWindow.js +14 -14
- package/build/ox_modules/module-web/commands/mock.js +20 -20
- package/build/ox_modules/module-web/commands/mockClearAll.js +12 -12
- package/build/ox_modules/module-web/commands/mockRestoreAll.js +12 -12
- package/build/ox_modules/module-web/commands/newWindow.js +16 -16
- package/build/ox_modules/module-web/commands/open.js +16 -16
- package/build/ox_modules/module-web/commands/pause.js +15 -15
- package/build/ox_modules/module-web/commands/point.js +21 -21
- package/build/ox_modules/module-web/commands/pointJS.js +15 -15
- package/build/ox_modules/module-web/commands/refresh.js +15 -15
- package/build/ox_modules/module-web/commands/rightClick.js +17 -17
- package/build/ox_modules/module-web/commands/rightClickActions.js +19 -19
- package/build/ox_modules/module-web/commands/scrollToElement.js +21 -21
- package/build/ox_modules/module-web/commands/select.js +23 -23
- package/build/ox_modules/module-web/commands/selectFrame.js +24 -24
- package/build/ox_modules/module-web/commands/selectWindow.js +27 -27
- package/build/ox_modules/module-web/commands/sendKeys.js +22 -22
- package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +20 -20
- package/build/ox_modules/module-web/commands/setTimeout.js +21 -21
- package/build/ox_modules/module-web/commands/setWindowSize.js +17 -17
- package/build/ox_modules/module-web/commands/takeScreenshot.js +17 -17
- package/build/ox_modules/module-web/commands/type.js +20 -20
- package/build/ox_modules/module-web/commands/verifyAlert.js +20 -20
- package/build/ox_modules/module-web/commands/verifyExist.js +17 -17
- package/build/ox_modules/module-web/commands/verifySelectedLabel.js +21 -21
- package/build/ox_modules/module-web/commands/verifySelectedValue.js +21 -21
- package/build/ox_modules/module-web/commands/verifyText.js +21 -21
- package/build/ox_modules/module-web/commands/verifyTextNotPresent.js +18 -18
- package/build/ox_modules/module-web/commands/verifyTextPresent.js +18 -18
- package/build/ox_modules/module-web/commands/verifyTitle.js +19 -19
- package/build/ox_modules/module-web/commands/verifyValue.js +20 -20
- package/build/ox_modules/module-web/commands/waitForAngular.js +19 -19
- package/build/ox_modules/module-web/commands/waitForExist.js +17 -17
- package/build/ox_modules/module-web/commands/waitForInteractable.js +17 -17
- package/build/ox_modules/module-web/commands/waitForNotExist.js +17 -17
- package/build/ox_modules/module-web/commands/waitForNotText.js +20 -20
- package/build/ox_modules/module-web/commands/waitForNotValue.js +20 -20
- package/build/ox_modules/module-web/commands/waitForText.js +20 -20
- package/build/ox_modules/module-web/commands/waitForValue.js +20 -20
- package/build/ox_modules/module-web/commands/waitForVisible.js +17 -17
- package/build/ox_modules/module-web/commands/waitForWindow.js +22 -22
- package/build/ox_modules/module-web.js +94 -94
- package/build/ox_modules/module-win/commands/assertText.js +17 -17
- package/build/ox_modules/module-win/commands/assertTitle.js +15 -15
- package/build/ox_modules/module-win/commands/assertValue.js +14 -14
- package/build/ox_modules/module-win/commands/back.js +11 -11
- package/build/ox_modules/module-win/commands/clear.js +13 -13
- package/build/ox_modules/module-win/commands/click.js +13 -13
- package/build/ox_modules/module-win/commands/clickLong.js +14 -14
- package/build/ox_modules/module-win/commands/clickMultipleTimes.js +14 -14
- package/build/ox_modules/module-win/commands/findElement.js +15 -15
- package/build/ox_modules/module-win/commands/findElements.js +15 -15
- package/build/ox_modules/module-win/commands/getAppiumLogs.js +12 -12
- package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +15 -15
- package/build/ox_modules/module-win/commands/getLocation.js +14 -14
- package/build/ox_modules/module-win/commands/getSource.js +12 -12
- package/build/ox_modules/module-win/commands/getText.js +14 -14
- package/build/ox_modules/module-win/commands/getValue.js +14 -14
- package/build/ox_modules/module-win/commands/getWindowHandles.js +15 -15
- package/build/ox_modules/module-win/commands/index.js +1 -1
- package/build/ox_modules/module-win/commands/isCheckable.js +14 -14
- package/build/ox_modules/module-win/commands/isChecked.js +14 -14
- package/build/ox_modules/module-win/commands/isClickable.js +14 -14
- package/build/ox_modules/module-win/commands/isExist.js +15 -15
- package/build/ox_modules/module-win/commands/isSelected.js +14 -14
- package/build/ox_modules/module-win/commands/isVisible.js +15 -15
- package/build/ox_modules/module-win/commands/open.js +13 -13
- package/build/ox_modules/module-win/commands/pause.js +12 -12
- package/build/ox_modules/module-win/commands/rightClick.js +13 -13
- package/build/ox_modules/module-win/commands/selectWindow.js +23 -23
- package/build/ox_modules/module-win/commands/sendKeys.js +22 -22
- package/build/ox_modules/module-win/commands/setTimeout.js +17 -17
- package/build/ox_modules/module-win/commands/takeScreenshot.js +16 -16
- package/build/ox_modules/module-win/commands/tap.js +13 -13
- package/build/ox_modules/module-win/commands/type.js +16 -16
- package/build/ox_modules/module-win/commands/waitForExist.js +14 -14
- package/build/ox_modules/module-win/commands/waitForInteractable.js +16 -16
- package/build/ox_modules/module-win/commands/waitForVisible.js +13 -13
- package/build/ox_modules/module-win.js +47 -47
- package/build/ox_modules/utils.js +8 -8
- package/build/ox_reporters/excel/template.json +48 -48
- package/build/ox_reporters/html/index.ejs +163 -163
- package/build/ox_reporters/html/summary.ejs +77 -77
- package/build/ox_reporters/html/tests-details.ejs +134 -134
- package/build/ox_reporters/html/tests-devices-browsers.ejs +83 -83
- package/build/ox_reporters/reporter-excel.js +1 -1
- package/build/ox_reporters/reporter-html.js +1 -1
- package/build/ox_reporters/reporter-json.js +1 -1
- package/build/ox_reporters/reporter-junit.js +1 -1
- package/build/ox_reporters/reporter-pdf.js +1 -1
- package/build/ox_reporters/reporter-rp.js +1 -1
- package/build/ox_reporters/reporter-xml.js +1 -1
- package/build/ox_services/service-devtools/submodule-network.js +1 -1
- package/build/ox_services/service-devtools.js +1 -1
- package/build/reporter/FileReporterBase.js +1 -1
- package/build/reporter/ReportAggregator.js +13 -5
- package/build/reporter/ReporterBase.js +1 -1
- package/build/reporter/WebSocketReporter.js +1 -1
- package/build/runners/WorkerProcess.js +1 -1
- package/build/runners/cucumber/CucumberEventListener.js +1 -1
- package/build/runners/cucumber/CucumberReporter.js +1 -1
- package/build/runners/cucumber/CucumberWorker.js +1 -1
- package/build/runners/cucumber/index.js +1 -1
- package/build/runners/cucumber/worker.js +1 -1
- package/build/runners/index.js +1 -1
- package/build/runners/oxygen/OxygenWorker.js +1 -1
- package/build/runners/oxygen/index.js +1 -1
- package/build/runners/oxygen/worker.js +1 -1
- package/config/default.json +6 -6
- package/log.txt +1614 -0
- package/package.json +139 -137
- package/reports/2025-06-08_231627/report.html +440 -0
- package/reports/2025-06-09_223615/report.html +440 -0
- package/transpiled/mongodb/etc/prepare.js +18 -0
- package/transpiled/mongodb/lib/admin.js +182 -0
- package/transpiled/mongodb/lib/beta.js +26 -0
- package/transpiled/mongodb/lib/bson.js +220 -0
- package/transpiled/mongodb/lib/bulk/common.js +1041 -0
- package/transpiled/mongodb/lib/bulk/ordered.js +76 -0
- package/transpiled/mongodb/lib/bulk/unordered.js +102 -0
- package/transpiled/mongodb/lib/change_stream.js +517 -0
- package/transpiled/mongodb/lib/client-side-encryption/auto_encrypter.js +329 -0
- package/transpiled/mongodb/lib/client-side-encryption/client_encryption.js +779 -0
- package/transpiled/mongodb/lib/client-side-encryption/crypto_callbacks.js +95 -0
- package/transpiled/mongodb/lib/client-side-encryption/errors.js +171 -0
- package/transpiled/mongodb/lib/client-side-encryption/mongocryptd_manager.js +98 -0
- package/transpiled/mongodb/lib/client-side-encryption/providers/aws.js +34 -0
- package/transpiled/mongodb/lib/client-side-encryption/providers/azure.js +186 -0
- package/transpiled/mongodb/lib/client-side-encryption/providers/gcp.js +29 -0
- package/transpiled/mongodb/lib/client-side-encryption/providers/index.js +58 -0
- package/transpiled/mongodb/lib/client-side-encryption/state_machine.js +505 -0
- package/transpiled/mongodb/lib/cmap/auth/auth_provider.js +63 -0
- package/transpiled/mongodb/lib/cmap/auth/aws_temporary_credentials.js +167 -0
- package/transpiled/mongodb/lib/cmap/auth/gssapi.js +207 -0
- package/transpiled/mongodb/lib/cmap/auth/mongo_credentials.js +193 -0
- package/transpiled/mongodb/lib/cmap/auth/mongodb_aws.js +181 -0
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js +101 -0
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js +81 -0
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js +174 -0
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js +59 -0
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js +58 -0
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js +138 -0
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/k8s_machine_workflow.js +42 -0
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js +71 -0
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js +34 -0
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc.js +111 -0
- package/transpiled/mongodb/lib/cmap/auth/plain.js +43 -0
- package/transpiled/mongodb/lib/cmap/auth/providers.js +22 -0
- package/transpiled/mongodb/lib/cmap/auth/scram.js +318 -0
- package/transpiled/mongodb/lib/cmap/auth/x509.js +61 -0
- package/transpiled/mongodb/lib/cmap/command_monitoring_events.js +266 -0
- package/transpiled/mongodb/lib/cmap/commands.js +605 -0
- package/transpiled/mongodb/lib/cmap/connect.js +418 -0
- package/transpiled/mongodb/lib/cmap/connection.js +673 -0
- package/transpiled/mongodb/lib/cmap/connection_pool.js +688 -0
- package/transpiled/mongodb/lib/cmap/connection_pool_events.js +254 -0
- package/transpiled/mongodb/lib/cmap/errors.js +128 -0
- package/transpiled/mongodb/lib/cmap/handshake/client_metadata.js +278 -0
- package/transpiled/mongodb/lib/cmap/metrics.js +67 -0
- package/transpiled/mongodb/lib/cmap/stream_description.js +74 -0
- package/transpiled/mongodb/lib/cmap/wire_protocol/compression.js +196 -0
- package/transpiled/mongodb/lib/cmap/wire_protocol/constants.js +19 -0
- package/transpiled/mongodb/lib/cmap/wire_protocol/on_data.js +144 -0
- package/transpiled/mongodb/lib/cmap/wire_protocol/on_demand/document.js +278 -0
- package/transpiled/mongodb/lib/cmap/wire_protocol/responses.js +376 -0
- package/transpiled/mongodb/lib/cmap/wire_protocol/shared.js +49 -0
- package/transpiled/mongodb/lib/collection.js +852 -0
- package/transpiled/mongodb/lib/connection_string.js +1452 -0
- package/transpiled/mongodb/lib/constants.js +162 -0
- package/transpiled/mongodb/lib/cursor/abstract_cursor.js +1082 -0
- package/transpiled/mongodb/lib/cursor/aggregation_cursor.js +227 -0
- package/transpiled/mongodb/lib/cursor/change_stream_cursor.js +136 -0
- package/transpiled/mongodb/lib/cursor/client_bulk_write_cursor.js +69 -0
- package/transpiled/mongodb/lib/cursor/find_cursor.js +476 -0
- package/transpiled/mongodb/lib/cursor/list_collections_cursor.js +48 -0
- package/transpiled/mongodb/lib/cursor/list_indexes_cursor.js +46 -0
- package/transpiled/mongodb/lib/cursor/list_search_indexes_cursor.js +30 -0
- package/transpiled/mongodb/lib/cursor/run_command_cursor.js +125 -0
- package/transpiled/mongodb/lib/db.js +467 -0
- package/transpiled/mongodb/lib/deps.js +174 -0
- package/transpiled/mongodb/lib/encrypter.js +129 -0
- package/transpiled/mongodb/lib/error.js +1550 -0
- package/transpiled/mongodb/lib/explain.js +122 -0
- package/transpiled/mongodb/lib/gridfs/download.js +369 -0
- package/transpiled/mongodb/lib/gridfs/index.js +240 -0
- package/transpiled/mongodb/lib/gridfs/upload.js +446 -0
- package/transpiled/mongodb/lib/index.js +975 -0
- package/transpiled/mongodb/lib/mongo_client.js +626 -0
- package/transpiled/mongodb/lib/mongo_client_auth_providers.js +98 -0
- package/transpiled/mongodb/lib/mongo_logger.js +812 -0
- package/transpiled/mongodb/lib/mongo_types.js +71 -0
- package/transpiled/mongodb/lib/operations/aggregate.js +129 -0
- package/transpiled/mongodb/lib/operations/bulk_write.js +48 -0
- package/transpiled/mongodb/lib/operations/client_bulk_write/client_bulk_write.js +96 -0
- package/transpiled/mongodb/lib/operations/client_bulk_write/command_builder.js +409 -0
- package/transpiled/mongodb/lib/operations/client_bulk_write/common.js +5 -0
- package/transpiled/mongodb/lib/operations/client_bulk_write/executor.js +144 -0
- package/transpiled/mongodb/lib/operations/client_bulk_write/results_merger.js +228 -0
- package/transpiled/mongodb/lib/operations/collections.js +49 -0
- package/transpiled/mongodb/lib/operations/command.js +102 -0
- package/transpiled/mongodb/lib/operations/count.js +60 -0
- package/transpiled/mongodb/lib/operations/create_collection.js +109 -0
- package/transpiled/mongodb/lib/operations/delete.js +134 -0
- package/transpiled/mongodb/lib/operations/distinct.js +77 -0
- package/transpiled/mongodb/lib/operations/drop.js +102 -0
- package/transpiled/mongodb/lib/operations/estimated_document_count.js +47 -0
- package/transpiled/mongodb/lib/operations/execute_operation.js +251 -0
- package/transpiled/mongodb/lib/operations/find.js +197 -0
- package/transpiled/mongodb/lib/operations/find_and_modify.js +191 -0
- package/transpiled/mongodb/lib/operations/get_more.js +84 -0
- package/transpiled/mongodb/lib/operations/indexes.js +197 -0
- package/transpiled/mongodb/lib/operations/insert.js +138 -0
- package/transpiled/mongodb/lib/operations/is_capped.js +44 -0
- package/transpiled/mongodb/lib/operations/kill_cursors.js +58 -0
- package/transpiled/mongodb/lib/operations/list_collections.js +66 -0
- package/transpiled/mongodb/lib/operations/list_databases.js +56 -0
- package/transpiled/mongodb/lib/operations/operation.js +88 -0
- package/transpiled/mongodb/lib/operations/options_operation.js +44 -0
- package/transpiled/mongodb/lib/operations/profiling_level.js +42 -0
- package/transpiled/mongodb/lib/operations/remove_user.js +35 -0
- package/transpiled/mongodb/lib/operations/rename.js +48 -0
- package/transpiled/mongodb/lib/operations/run_command.js +64 -0
- package/transpiled/mongodb/lib/operations/search_indexes/create.js +41 -0
- package/transpiled/mongodb/lib/operations/search_indexes/drop.js +51 -0
- package/transpiled/mongodb/lib/operations/search_indexes/update.js +40 -0
- package/transpiled/mongodb/lib/operations/set_profiling_level.js +70 -0
- package/transpiled/mongodb/lib/operations/stats.js +39 -0
- package/transpiled/mongodb/lib/operations/update.js +218 -0
- package/transpiled/mongodb/lib/operations/validate_collection.js +49 -0
- package/transpiled/mongodb/lib/read_concern.js +92 -0
- package/transpiled/mongodb/lib/read_preference.js +215 -0
- package/transpiled/mongodb/lib/resource_management.js +74 -0
- package/transpiled/mongodb/lib/sdam/common.js +53 -0
- package/transpiled/mongodb/lib/sdam/events.js +177 -0
- package/transpiled/mongodb/lib/sdam/monitor.js +656 -0
- package/transpiled/mongodb/lib/sdam/server.js +463 -0
- package/transpiled/mongodb/lib/sdam/server_description.js +196 -0
- package/transpiled/mongodb/lib/sdam/server_selection.js +283 -0
- package/transpiled/mongodb/lib/sdam/server_selection_events.js +112 -0
- package/transpiled/mongodb/lib/sdam/srv_polling.js +139 -0
- package/transpiled/mongodb/lib/sdam/topology.js +833 -0
- package/transpiled/mongodb/lib/sdam/topology_description.js +447 -0
- package/transpiled/mongodb/lib/sessions.js +988 -0
- package/transpiled/mongodb/lib/sort.js +123 -0
- package/transpiled/mongodb/lib/timeout.js +349 -0
- package/transpiled/mongodb/lib/transactions.js +149 -0
- package/transpiled/mongodb/lib/utils.js +1502 -0
- package/transpiled/mongodb/lib/write_concern.js +115 -0
- package/types/index.d.ts +70 -70
- package/types/module-eyes.d.ts +39 -39
- package/types/module-http.d.ts +163 -163
- package/types/module-log.d.ts +34 -34
- package/types/module-mob.d.ts +966 -966
- package/types/module-pdf.d.ts +40 -40
- package/types/module-proxy.d.ts +100 -100
- package/types/module-shell.d.ts +24 -24
- package/types/module-utils.d.ts +99 -99
- package/types/module-web.d.ts +1053 -1053
- package/types/module-win.d.ts +352 -352
- package/types/oxygen.d.ts +53 -53
|
@@ -17,18 +17,18 @@ var _utils = _interopRequireDefault(require("./utils"));
|
|
|
17
17
|
|
|
18
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
19
|
|
|
20
|
-
/*
|
|
21
|
-
* Copyright (C) 2015-2018 CloudBeat Limited
|
|
22
|
-
*
|
|
23
|
-
* This program is free software: you can redistribute it and/or modify
|
|
24
|
-
* it under the terms of the GNU General Public License as published by
|
|
25
|
-
* the Free Software Foundation, either version 3 of the License, or
|
|
26
|
-
* (at your option) any later version.
|
|
20
|
+
/*
|
|
21
|
+
* Copyright (C) 2015-2018 CloudBeat Limited
|
|
22
|
+
*
|
|
23
|
+
* This program is free software: you can redistribute it and/or modify
|
|
24
|
+
* it under the terms of the GNU General Public License as published by
|
|
25
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
26
|
+
* (at your option) any later version.
|
|
27
27
|
*/
|
|
28
28
|
const MODULE_NAME = 'shell';
|
|
29
|
-
/**
|
|
30
|
-
* @name shell
|
|
31
|
-
* @description Provides methods for working with operating system shell.
|
|
29
|
+
/**
|
|
30
|
+
* @name shell
|
|
31
|
+
* @description Provides methods for working with operating system shell.
|
|
32
32
|
*/
|
|
33
33
|
|
|
34
34
|
class ShellModule extends _OxygenModule.default {
|
|
@@ -40,22 +40,22 @@ class ShellModule extends _OxygenModule.default {
|
|
|
40
40
|
this._lastCmd;
|
|
41
41
|
this._lastStdout;
|
|
42
42
|
}
|
|
43
|
-
/*
|
|
44
|
-
* @summary Gets module name
|
|
45
|
-
* @function name
|
|
46
|
-
* @return {String} Constant value "shell".
|
|
43
|
+
/*
|
|
44
|
+
* @summary Gets module name
|
|
45
|
+
* @function name
|
|
46
|
+
* @return {String} Constant value "shell".
|
|
47
47
|
*/
|
|
48
48
|
|
|
49
49
|
|
|
50
50
|
get name() {
|
|
51
51
|
return MODULE_NAME;
|
|
52
52
|
}
|
|
53
|
-
/**
|
|
54
|
-
* @summary Execute command
|
|
55
|
-
* @description Spawn child process
|
|
56
|
-
* @function exec
|
|
57
|
-
* @param {String} command - Shell command to be executed, including arguments, if applicable.
|
|
58
|
-
* @return {String} null | Error | stdout result
|
|
53
|
+
/**
|
|
54
|
+
* @summary Execute command
|
|
55
|
+
* @description Spawn child process
|
|
56
|
+
* @function exec
|
|
57
|
+
* @param {String} command - Shell command to be executed, including arguments, if applicable.
|
|
58
|
+
* @return {String} null | Error | stdout result
|
|
59
59
|
*/
|
|
60
60
|
|
|
61
61
|
|
|
@@ -85,10 +85,10 @@ class ShellModule extends _OxygenModule.default {
|
|
|
85
85
|
|
|
86
86
|
return null;
|
|
87
87
|
}
|
|
88
|
-
/**
|
|
89
|
-
* @summary Assert whether the shell command output (stdout) is matching the specified pattern.
|
|
90
|
-
* @function assertOutput
|
|
91
|
-
* @param {String} pattern - Pattern to assert.
|
|
88
|
+
/**
|
|
89
|
+
* @summary Assert whether the shell command output (stdout) is matching the specified pattern.
|
|
90
|
+
* @function assertOutput
|
|
91
|
+
* @param {String} pattern - Pattern to assert.
|
|
92
92
|
*/
|
|
93
93
|
|
|
94
94
|
|
|
@@ -107,4 +107,4 @@ class ShellModule extends _OxygenModule.default {
|
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
exports.default = ShellModule;
|
|
110
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
110
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1zaGVsbC5qcyJdLCJuYW1lcyI6WyJNT0RVTEVfTkFNRSIsIlNoZWxsTW9kdWxlIiwiT3h5Z2VuTW9kdWxlIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwiY29udGV4dCIsInJzIiwibG9nZ2VyIiwibW9kdWxlcyIsInNlcnZpY2VzIiwiX2Fsd2F5c0luaXRpYWxpemVkIiwiX2lzSW5pdGlhbGl6ZWQiLCJfbGFzdENtZCIsIl9sYXN0U3Rkb3V0IiwibmFtZSIsImV4ZWMiLCJjb21tYW5kIiwic3Bhd24iLCJyZXF1aXJlIiwiY3dkIiwic2hlbGwiLCJlbnYiLCJwcm9jZXNzIiwicmVzdWx0Iiwic3luYyIsImVycm9yIiwiT3hFcnJvciIsImVyckhlbHBlciIsImVycm9yQ29kZSIsIlNIRUxMX0VSUk9SIiwibWVzc2FnZSIsInN0ZG91dCIsInRvU3RyaW5nIiwiYXNzZXJ0T3V0cHV0IiwicGF0dGVybiIsIm1vZFV0aWxzIiwibWF0Y2hQYXR0ZXJuIiwiQVNTRVJUX0VSUk9SIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFRQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQVhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQSxNQUFNQSxXQUFXLEdBQUcsT0FBcEI7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFDZSxNQUFNQyxXQUFOLFNBQTBCQyxxQkFBMUIsQ0FBdUM7QUFDbERDLEVBQUFBLFdBQVcsQ0FBQ0MsT0FBRCxFQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QkMsTUFBdkIsRUFBK0JDLE9BQS9CLEVBQXdDQyxRQUF4QyxFQUFrRDtBQUN6RCxVQUFNTCxPQUFOLEVBQWVDLE9BQWYsRUFBd0JDLEVBQXhCLEVBQTRCQyxNQUE1QixFQUFvQ0MsT0FBcEMsRUFBNkNDLFFBQTdDO0FBQ0EsU0FBS0Msa0JBQUwsR0FBMEIsSUFBMUIsQ0FGeUQsQ0FHekQ7O0FBQ0EsU0FBS0MsY0FBTCxHQUFzQixJQUF0QjtBQUNBLFNBQUtDLFFBQUw7QUFDQSxTQUFLQyxXQUFMO0FBQ0g7QUFFRDtBQUNKO0FBQ0E7QUFDQTtBQUNBOzs7QUFDWSxNQUFKQyxJQUFJLEdBQUc7QUFDUCxXQUFPZCxXQUFQO0FBQ0g7QUFFRDtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0llLEVBQUFBLElBQUksQ0FBQ0MsT0FBRCxFQUFVWixPQUFPLEdBQUcsRUFBcEIsRUFBd0I7QUFDeEIsU0FBS1EsUUFBTCxHQUFnQkksT0FBaEI7QUFDQSxTQUFLSCxXQUFMLEdBQW1CLElBQW5COztBQUNBLFVBQU1JLEtBQUssR0FBR0MsT0FBTyxDQUFDLGFBQUQsQ0FBckI7O0FBQ0FkLElBQUFBLE9BQU8sR0FBRztBQUFFZSxNQUFBQSxHQUFHLEVBQUUsS0FBS2YsT0FBTCxDQUFhZSxHQUFwQjtBQUF5QkMsTUFBQUEsS0FBSyxFQUFFLElBQWhDO0FBQXNDQyxNQUFBQSxHQUFHLEVBQUVDLE9BQU8sQ0FBQ0QsR0FBbkQ7QUFBd0QsU0FBR2pCO0FBQTNELEtBQVY7QUFDQSxVQUFNbUIsTUFBTSxHQUFHTixLQUFLLENBQUNPLElBQU4sQ0FBV1IsT0FBWCxFQUFvQlosT0FBcEIsQ0FBZjs7QUFDQSxRQUFJbUIsTUFBTSxDQUFDRSxLQUFYLEVBQWtCO0FBQ2QsWUFBTSxJQUFJQyxvQkFBSixDQUFZQyxnQkFBVUMsU0FBVixDQUFvQkMsV0FBaEMsRUFBNkNOLE1BQU0sQ0FBQ0UsS0FBUCxDQUFhSyxPQUExRCxFQUFtRSxJQUFuRSxFQUF5RSxJQUF6RSxFQUErRVAsTUFBTSxDQUFDRSxLQUF0RixDQUFOO0FBQ0g7O0FBQ0QsU0FBS1osV0FBTCxHQUFtQlUsTUFBTSxDQUFDUSxNQUFQLEdBQWdCUixNQUFNLENBQUNRLE1BQVAsQ0FBY0MsUUFBZCxFQUFoQixHQUEyQyxJQUE5RDs7QUFDQSxRQUFJVCxNQUFNLENBQUNRLE1BQVgsRUFBbUI7QUFDZixhQUFPUixNQUFNLENBQUNRLE1BQVAsQ0FBY0MsUUFBZCxFQUFQO0FBQ0g7O0FBQ0QsV0FBTyxJQUFQO0FBQ0g7QUFFRDtBQUNKO0FBQ0E7QUFDQTtBQUNBOzs7QUFDSUMsRUFBQUEsWUFBWSxDQUFDQyxPQUFELEVBQVU7QUFDbEIsUUFBSSxDQUFDLEtBQUtyQixXQUFWLEVBQXVCO0FBQ25CLGFBQU8sS0FBUDtBQUNIOztBQUNELFFBQUksQ0FBQ3NCLGVBQVNDLFlBQVQsQ0FBc0IsS0FBS3ZCLFdBQTNCLEVBQXdDcUIsT0FBeEMsQ0FBTCxFQUF1RDtBQUNuRCxZQUFNLElBQUlSLG9CQUFKLENBQVlDLGdCQUFVQyxTQUFWLENBQW9CUyxZQUFoQyxFQUErQyw0Q0FBMkNILE9BQVEsZUFBYyxLQUFLckIsV0FBWSxHQUFqSSxDQUFOO0FBQ0g7O0FBQ0QsV0FBTyxJQUFQO0FBQ0g7O0FBdkRpRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBDbG91ZEJlYXQgTGltaXRlZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKi9cbmltcG9ydCBPeHlnZW5Nb2R1bGUgZnJvbSAnLi4vY29yZS9PeHlnZW5Nb2R1bGUnO1xuaW1wb3J0IE94RXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcbmltcG9ydCBlcnJIZWxwZXIgZnJvbSAnLi4vZXJyb3JzL2hlbHBlcic7XG5pbXBvcnQgbW9kVXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IE1PRFVMRV9OQU1FID0gJ3NoZWxsJztcblxuLyoqXG4gKiBAbmFtZSBzaGVsbFxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIG1ldGhvZHMgZm9yIHdvcmtpbmcgd2l0aCBvcGVyYXRpbmcgc3lzdGVtIHNoZWxsLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaGVsbE1vZHVsZSBleHRlbmRzIE94eWdlbk1vZHVsZSB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucywgY29udGV4dCwgcnMsIGxvZ2dlciwgbW9kdWxlcywgc2VydmljZXMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucywgY29udGV4dCwgcnMsIGxvZ2dlciwgbW9kdWxlcywgc2VydmljZXMpO1xuICAgICAgICB0aGlzLl9hbHdheXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIC8vIHByZS1pbml0aWFsaXplIHRoZSBtb2R1bGVcbiAgICAgICAgdGhpcy5faXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX2xhc3RDbWQ7XG4gICAgICAgIHRoaXMuX2xhc3RTdGRvdXQ7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBAc3VtbWFyeSBHZXRzIG1vZHVsZSBuYW1lXG4gICAgICogQGZ1bmN0aW9uIG5hbWVcbiAgICAgKiBAcmV0dXJuIHtTdHJpbmd9IENvbnN0YW50IHZhbHVlIFwic2hlbGxcIi5cbiAgICAgKi9cbiAgICBnZXQgbmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIE1PRFVMRV9OQU1FO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IEV4ZWN1dGUgY29tbWFuZFxuICAgICAqIEBkZXNjcmlwdGlvbiBTcGF3biBjaGlsZCBwcm9jZXNzXG4gICAgICogQGZ1bmN0aW9uIGV4ZWNcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gY29tbWFuZCAtIFNoZWxsIGNvbW1hbmQgdG8gYmUgZXhlY3V0ZWQsIGluY2x1ZGluZyBhcmd1bWVudHMsIGlmIGFwcGxpY2FibGUuIFxuICAgICAqIEByZXR1cm4ge1N0cmluZ30gbnVsbCB8IEVycm9yIHwgc3Rkb3V0IHJlc3VsdFxuICAgICAqL1xuICAgIGV4ZWMoY29tbWFuZCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHRoaXMuX2xhc3RDbWQgPSBjb21tYW5kO1xuICAgICAgICB0aGlzLl9sYXN0U3Rkb3V0ID0gbnVsbDtcbiAgICAgICAgY29uc3Qgc3Bhd24gPSByZXF1aXJlKCdjcm9zcy1zcGF3bicpO1xuICAgICAgICBvcHRpb25zID0geyBjd2Q6IHRoaXMub3B0aW9ucy5jd2QsIHNoZWxsOiB0cnVlLCBlbnY6IHByb2Nlc3MuZW52LCAuLi5vcHRpb25zIH07XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHNwYXduLnN5bmMoY29tbWFuZCwgb3B0aW9ucyk7XG4gICAgICAgIGlmIChyZXN1bHQuZXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0hFTExfRVJST1IsIHJlc3VsdC5lcnJvci5tZXNzYWdlLCBudWxsLCB0cnVlLCByZXN1bHQuZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2xhc3RTdGRvdXQgPSByZXN1bHQuc3Rkb3V0ID8gcmVzdWx0LnN0ZG91dC50b1N0cmluZygpIDogbnVsbDtcbiAgICAgICAgaWYgKHJlc3VsdC5zdGRvdXQpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQuc3Rkb3V0LnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgQXNzZXJ0IHdoZXRoZXIgdGhlIHNoZWxsIGNvbW1hbmQgb3V0cHV0IChzdGRvdXQpIGlzIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgcGF0dGVybi5cbiAgICAgKiBAZnVuY3Rpb24gYXNzZXJ0T3V0cHV0XG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHBhdHRlcm4gLSBQYXR0ZXJuIHRvIGFzc2VydC5cbiAgICAgKi9cbiAgICBhc3NlcnRPdXRwdXQocGF0dGVybikge1xuICAgICAgICBpZiAoIXRoaXMuX2xhc3RTdGRvdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW1vZFV0aWxzLm1hdGNoUGF0dGVybih0aGlzLl9sYXN0U3Rkb3V0LCBwYXR0ZXJuKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5BU1NFUlRfRVJST1IsIGBFeHBlY3RlZCBzaGVsbCBjb21tYW5kIG91dHB1dCB0byBtYXRjaDogXCIke3BhdHRlcm59XCIgYnV0IGdvdDogXCIke3RoaXMuX2xhc3RTdGRvdXR9XCJgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59Il19
|
|
@@ -6,18 +6,18 @@ var _OxygenError = _interopRequireDefault(require("../errors/OxygenError"));
|
|
|
6
6
|
|
|
7
7
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
8
8
|
|
|
9
|
-
/*
|
|
10
|
-
* Copyright (C) 2015-present CloudBeat Limited
|
|
11
|
-
*
|
|
12
|
-
* This program is free software: you can redistribute it and/or modify
|
|
13
|
-
* it under the terms of the GNU General Public License as published by
|
|
14
|
-
* the Free Software Foundation, either version 3 of the License, or
|
|
15
|
-
* (at your option) any later version.
|
|
9
|
+
/*
|
|
10
|
+
* Copyright (C) 2015-present CloudBeat Limited
|
|
11
|
+
*
|
|
12
|
+
* This program is free software: you can redistribute it and/or modify
|
|
13
|
+
* it under the terms of the GNU General Public License as published by
|
|
14
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
15
|
+
* (at your option) any later version.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
/**
|
|
19
|
-
* @name soap
|
|
20
|
-
* @description Provides methods for working with SOAP based Web Services.
|
|
18
|
+
/**
|
|
19
|
+
* @name soap
|
|
20
|
+
* @description Provides methods for working with SOAP based Web Services.
|
|
21
21
|
*/
|
|
22
22
|
var errHelper = require('../errors/helper');
|
|
23
23
|
|
|
@@ -34,10 +34,10 @@ module.exports = function () {
|
|
|
34
34
|
module.isInitialized = function () {
|
|
35
35
|
return true;
|
|
36
36
|
};
|
|
37
|
-
/**
|
|
38
|
-
* @summary Sets proxy url to be used for connections with the service.
|
|
39
|
-
* @function setProxy
|
|
40
|
-
* @param {String} url - Proxy url. Invocation without arguments will remove any previously set url.
|
|
37
|
+
/**
|
|
38
|
+
* @summary Sets proxy url to be used for connections with the service.
|
|
39
|
+
* @function setProxy
|
|
40
|
+
* @param {String} url - Proxy url. Invocation without arguments will remove any previously set url.
|
|
41
41
|
*/
|
|
42
42
|
|
|
43
43
|
|
|
@@ -50,83 +50,83 @@ module.exports = function () {
|
|
|
50
50
|
proxyOptions = {};
|
|
51
51
|
}
|
|
52
52
|
};
|
|
53
|
-
/**
|
|
54
|
-
* @summary Sets Basic Authentication details to be used for connections with the service.
|
|
55
|
-
* @function authBasic
|
|
56
|
-
* @param {String} user - Username.
|
|
57
|
-
* @param {String} pass - Password.
|
|
53
|
+
/**
|
|
54
|
+
* @summary Sets Basic Authentication details to be used for connections with the service.
|
|
55
|
+
* @function authBasic
|
|
56
|
+
* @param {String} user - Username.
|
|
57
|
+
* @param {String} pass - Password.
|
|
58
58
|
*/
|
|
59
59
|
|
|
60
60
|
|
|
61
61
|
module.authBasic = function (user, pass) {
|
|
62
62
|
auth = new soap.BasicAuthSecurity(user, pass);
|
|
63
63
|
};
|
|
64
|
-
/**
|
|
65
|
-
* @summary Sets Bearer Token Authentication details to be used for connections with the service.
|
|
66
|
-
* @function authBearer
|
|
67
|
-
* @param {String} token - Token.
|
|
64
|
+
/**
|
|
65
|
+
* @summary Sets Bearer Token Authentication details to be used for connections with the service.
|
|
66
|
+
* @function authBearer
|
|
67
|
+
* @param {String} token - Token.
|
|
68
68
|
*/
|
|
69
69
|
|
|
70
70
|
|
|
71
71
|
module.authBearer = function (token) {
|
|
72
72
|
auth = new soap.BearerSecurity(token);
|
|
73
73
|
};
|
|
74
|
-
/**
|
|
75
|
-
* @summary Sets NTLM Authentication details to be used for connections with the service.
|
|
76
|
-
* @function authNTLM
|
|
77
|
-
* @param {String} user - Username.
|
|
78
|
-
* @param {String} pass - Password.
|
|
79
|
-
* @param {String} domain - Domain.
|
|
80
|
-
* @param {String} workstation - Workstation.
|
|
74
|
+
/**
|
|
75
|
+
* @summary Sets NTLM Authentication details to be used for connections with the service.
|
|
76
|
+
* @function authNTLM
|
|
77
|
+
* @param {String} user - Username.
|
|
78
|
+
* @param {String} pass - Password.
|
|
79
|
+
* @param {String} domain - Domain.
|
|
80
|
+
* @param {String} workstation - Workstation.
|
|
81
81
|
*/
|
|
82
82
|
|
|
83
83
|
|
|
84
84
|
module.authNTLM = function (user, pass, domain, workstation) {
|
|
85
85
|
auth = new soap.NTLMSecurity(user, pass, domain, workstation);
|
|
86
86
|
};
|
|
87
|
-
/**
|
|
88
|
-
* @summary Sets Client SSL Authentication details to be used for connections with the service.
|
|
89
|
-
* @function authClientSSL
|
|
90
|
-
* @param {Buffer|String} key - Private key path or a Buffer containing the key.
|
|
91
|
-
* @param {Buffer|String} cert - Certificate path or a Buffer containing the certificate.
|
|
92
|
-
* @param {Buffer|String|Array} ca - CA path or a Buffer.
|
|
93
|
-
* @param {Object=} options - Options.
|
|
87
|
+
/**
|
|
88
|
+
* @summary Sets Client SSL Authentication details to be used for connections with the service.
|
|
89
|
+
* @function authClientSSL
|
|
90
|
+
* @param {Buffer|String} key - Private key path or a Buffer containing the key.
|
|
91
|
+
* @param {Buffer|String} cert - Certificate path or a Buffer containing the certificate.
|
|
92
|
+
* @param {Buffer|String|Array} ca - CA path or a Buffer.
|
|
93
|
+
* @param {Object=} options - Options.
|
|
94
94
|
*/
|
|
95
95
|
|
|
96
96
|
|
|
97
97
|
module.authClientSSL = function (key, cert, ca, options) {
|
|
98
98
|
auth = new soap.ClientSSLSecurity(key, cert, ca, options);
|
|
99
99
|
};
|
|
100
|
-
/**
|
|
101
|
-
* @summary Sets Client SSL (PFX) Authentication details to be used for connections with the service.
|
|
102
|
-
* @function authClientSSLPFX
|
|
103
|
-
* @param {Buffer|String} pfx - PFX path or a Buffer containing the PFX bundle.
|
|
104
|
-
* @param {Buffer|String=} passphrase - Passphrase for the PFX.
|
|
105
|
-
* @param {Object=} options - Options.
|
|
100
|
+
/**
|
|
101
|
+
* @summary Sets Client SSL (PFX) Authentication details to be used for connections with the service.
|
|
102
|
+
* @function authClientSSLPFX
|
|
103
|
+
* @param {Buffer|String} pfx - PFX path or a Buffer containing the PFX bundle.
|
|
104
|
+
* @param {Buffer|String=} passphrase - Passphrase for the PFX.
|
|
105
|
+
* @param {Object=} options - Options.
|
|
106
106
|
*/
|
|
107
107
|
|
|
108
108
|
|
|
109
109
|
module.authClientSSLPFX = function (pfx, passphrase, options) {
|
|
110
110
|
auth = new soap.ClientSSLSecurityPFX(pfx, passphrase, options);
|
|
111
111
|
};
|
|
112
|
-
/**
|
|
113
|
-
* @summary Initiates a SOAP request and returns the response.
|
|
114
|
-
* @function get
|
|
115
|
-
* @param {String} wsdlUrl - URL pointing to the WSDL XML.
|
|
116
|
-
* @param {String} method - Method name (case sensitive).
|
|
117
|
-
* @param {Object=} args - Object containing the arguments.
|
|
118
|
-
* @param {Object=} wsdlHeaders - custom HTTP headers to be sent on WSDL requests.
|
|
119
|
-
* @return {Object} The response object.
|
|
120
|
-
* @example <caption>[javascript] Usage example</caption>
|
|
121
|
-
* // get SOAP service description, so we can understand what methods it provides,
|
|
122
|
-
* // what input parameters it expects, and what is the output structure.
|
|
123
|
-
* var serviceUrl = 'http://www.dataaccess.com/webservicesserver/numberconversion.wso?WSDL';
|
|
124
|
-
* var serviceDescription = soap.describe(serviceUrl);
|
|
125
|
-
* log.info(serviceDescription);
|
|
126
|
-
*
|
|
127
|
-
* // NumberToWords method in this service converts number to words.
|
|
128
|
-
* var result = soap.get(serviceUrl, 'NumberToWords', { 'ubiNum': 2019 });
|
|
129
|
-
* log.info(result.NumberToWordsResult);
|
|
112
|
+
/**
|
|
113
|
+
* @summary Initiates a SOAP request and returns the response.
|
|
114
|
+
* @function get
|
|
115
|
+
* @param {String} wsdlUrl - URL pointing to the WSDL XML.
|
|
116
|
+
* @param {String} method - Method name (case sensitive).
|
|
117
|
+
* @param {Object=} args - Object containing the arguments.
|
|
118
|
+
* @param {Object=} wsdlHeaders - custom HTTP headers to be sent on WSDL requests.
|
|
119
|
+
* @return {Object} The response object.
|
|
120
|
+
* @example <caption>[javascript] Usage example</caption>
|
|
121
|
+
* // get SOAP service description, so we can understand what methods it provides,
|
|
122
|
+
* // what input parameters it expects, and what is the output structure.
|
|
123
|
+
* var serviceUrl = 'http://www.dataaccess.com/webservicesserver/numberconversion.wso?WSDL';
|
|
124
|
+
* var serviceDescription = soap.describe(serviceUrl);
|
|
125
|
+
* log.info(serviceDescription);
|
|
126
|
+
*
|
|
127
|
+
* // NumberToWords method in this service converts number to words.
|
|
128
|
+
* var result = soap.get(serviceUrl, 'NumberToWords', { 'ubiNum': 2019 });
|
|
129
|
+
* log.info(result.NumberToWordsResult);
|
|
130
130
|
*/
|
|
131
131
|
|
|
132
132
|
|
|
@@ -212,22 +212,22 @@ module.exports = function () {
|
|
|
212
212
|
|
|
213
213
|
return result;
|
|
214
214
|
};
|
|
215
|
-
/**
|
|
216
|
-
* @summary Returns last response headers.
|
|
217
|
-
* @function getLastResponseHeaders
|
|
218
|
-
* @return {Object} IncomingHttpHeaders (https://microsoft.github.io/PowerBI-JavaScript/interfaces/_node_modules__types_node_http2_d_._http2_.incominghttpheaders.html).
|
|
215
|
+
/**
|
|
216
|
+
* @summary Returns last response headers.
|
|
217
|
+
* @function getLastResponseHeaders
|
|
218
|
+
* @return {Object} IncomingHttpHeaders (https://microsoft.github.io/PowerBI-JavaScript/interfaces/_node_modules__types_node_http2_d_._http2_.incominghttpheaders.html).
|
|
219
219
|
*/
|
|
220
220
|
|
|
221
221
|
|
|
222
222
|
module.getLastResponseHeaders = function () {
|
|
223
223
|
return lastResponseHeaders;
|
|
224
224
|
};
|
|
225
|
-
/**
|
|
226
|
-
* @summary Returns SOAP service description.
|
|
227
|
-
* @function describe
|
|
228
|
-
* @param {String} wsdlUrl - URL pointing to the WSDL XML.
|
|
229
|
-
* @param {Object=} wsdlHeaders - custom HTTP headers to be sent on WSDL requests.
|
|
230
|
-
* @return {Object} Service description.
|
|
225
|
+
/**
|
|
226
|
+
* @summary Returns SOAP service description.
|
|
227
|
+
* @function describe
|
|
228
|
+
* @param {String} wsdlUrl - URL pointing to the WSDL XML.
|
|
229
|
+
* @param {Object=} wsdlHeaders - custom HTTP headers to be sent on WSDL requests.
|
|
230
|
+
* @return {Object} Service description.
|
|
231
231
|
*/
|
|
232
232
|
|
|
233
233
|
|
|
@@ -282,4 +282,4 @@ module.exports = function () {
|
|
|
282
282
|
|
|
283
283
|
return module;
|
|
284
284
|
};
|
|
285
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1zb2FwLmpzIl0sIm5hbWVzIjpbImVyckhlbHBlciIsInJlcXVpcmUiLCJtb2R1bGUiLCJleHBvcnRzIiwic29hcCIsImF1dGgiLCJwcm94eU9wdGlvbnMiLCJvcHRpb25zIiwicmVqZWN0VW5hdXRob3JpemVkIiwibGFzdFJlc3BvbnNlSGVhZGVycyIsImlzSW5pdGlhbGl6ZWQiLCJzZXRQcm94eSIsInVybCIsInByb3h5IiwiYXV0aEJhc2ljIiwidXNlciIsInBhc3MiLCJCYXNpY0F1dGhTZWN1cml0eSIsImF1dGhCZWFyZXIiLCJ0b2tlbiIsIkJlYXJlclNlY3VyaXR5IiwiYXV0aE5UTE0iLCJkb21haW4iLCJ3b3Jrc3RhdGlvbiIsIk5UTE1TZWN1cml0eSIsImF1dGhDbGllbnRTU0wiLCJrZXkiLCJjZXJ0IiwiY2EiLCJDbGllbnRTU0xTZWN1cml0eSIsImF1dGhDbGllbnRTU0xQRlgiLCJwZngiLCJwYXNzcGhyYXNlIiwiQ2xpZW50U1NMU2VjdXJpdHlQRlgiLCJnZXQiLCJ3c2RsVXJsIiwibWV0aG9kIiwiYXJncyIsIndzZGxIZWFkZXJzIiwicmVzdWx0Q2xpZW50IiwicmVzdWx0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJjcmVhdGVDbGllbnQiLCJ3c2RsX29wdGlvbnMiLCJ3c2RsX2hlYWRlcnMiLCJlcnIiLCJjbGllbnQiLCJ1bmRlZmluZWQiLCJtc2ciLCJtZXNzYWdlIiwic29hcE1zZyIsImZpcnN0QnJlYWtJbmRleCIsImluZGV4T2YiLCJzdWJzdHJpbmciLCJTdHJpbmciLCJPeEVycm9yIiwiZXJyb3JDb2RlIiwiU09BUF9FUlJPUiIsInNldFNlY3VyaXR5IiwiaGVhZGVyIiwiYWRkSHR0cEhlYWRlciIsInJlcyIsInJvb3QiLCJFbnZlbG9wZSIsIkJvZHkiLCJGYXVsdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJmYXVsdHN0cmluZyIsImluc3BlY3QiLCJkZXB0aCIsInR5cGUi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Q0FBWXpELFNBQVMsQ0FBQzBELFNBQVYsQ0FBb0JDLFVBQWhDLEVBQTRDVCxHQUE1QyxDQUFmO0FBQ0FSLFlBQUFBLE9BQU87QUFDUDtBQUNIOztBQUVELGNBQUlyQyxJQUFKLEVBQVU7QUFDTjJDLFlBQUFBLE1BQU0sQ0FBQ1ksV0FBUCxDQUFtQnZELElBQW5CO0FBQ0g7O0FBRURrQyxVQUFBQSxZQUFZLEdBQUdTLE1BQU0sQ0FBQzJCLFFBQVAsRUFBZjtBQUNBakMsVUFBQUEsT0FBTztBQUNQO0FBQ0gsU0F6QkQ7QUEwQkgsT0EzQk0sQ0FBUDtBQTRCSCxLQTdCSyxHQUFOOztBQStCQSxRQUFJSCxZQUFZLENBQUNrQyxJQUFiLEtBQXNCekUsU0FBUyxDQUFDMEQsU0FBVixDQUFvQkMsVUFBOUMsRUFBMEQ7QUFDdEQsWUFBTXBCLFlBQU47QUFDSDs7QUFFRCxXQUFPQSxZQUFQO0FBQ0gsR0F2Q0Q7O0FBeUNBLFNBQU9yQyxNQUFQO0FBQ0gsQ0FsT0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAbmFtZSBzb2FwXHJcbiAqIEBkZXNjcmlwdGlvbiBQcm92aWRlcyBtZXRob2RzIGZvciB3b3JraW5nIHdpdGggU09BUCBiYXNlZCBXZWIgU2VydmljZXMuXHJcbiAqL1xyXG5cclxuaW1wb3J0IE94RXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcclxudmFyIGVyckhlbHBlciA9IHJlcXVpcmUoJy4uL2Vycm9ycy9oZWxwZXInKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgc29hcCA9IHJlcXVpcmUoJ3NvYXAnKTtcclxuICAgIHZhciBhdXRoID0gbnVsbDtcclxuICAgIHZhciBwcm94eU9wdGlvbnMgPSB7fTtcclxuICAgIHZhciBvcHRpb25zID0ge1xyXG4gICAgICAgIHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2VcclxuICAgIH07XHJcbiAgICB2YXIgbGFzdFJlc3BvbnNlSGVhZGVycyA9IG51bGw7XHJcblxyXG4gICAgbW9kdWxlLmlzSW5pdGlhbGl6ZWQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNldHMgcHJveHkgdXJsIHRvIGJlIHVzZWQgZm9yIGNvbm5lY3Rpb25zIHdpdGggdGhlIHNlcnZpY2UuXHJcbiAgICAgKiBAZnVuY3Rpb24gc2V0UHJveHlcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB1cmwgLSBQcm94eSB1cmwuIEludm9jYXRpb24gd2l0aG91dCBhcmd1bWVudHMgd2lsbCByZW1vdmUgYW55IHByZXZpb3VzbHkgc2V0IHVybC5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLnNldFByb3h5ID0gZnVuY3Rpb24odXJsKSB7XHJcbiAgICAgICAgaWYgKHVybCkge1xyXG4gICAgICAgICAgICBwcm94eU9wdGlvbnMgPSAgeyBwcm94eTogdXJsIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcHJveHlPcHRpb25zID0ge307XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNldHMgQmFzaWMgQXV0aGVudGljYXRpb24gZGV0YWlscyB0byBiZSB1c2VkIGZvciBjb25uZWN0aW9ucyB3aXRoIHRoZSBzZXJ2aWNlLlxyXG4gICAgICogQGZ1bmN0aW9uIGF1dGhCYXNpY1xyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVzZXIgLSBVc2VybmFtZS5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBwYXNzIC0gUGFzc3dvcmQuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5hdXRoQmFzaWMgPSBmdW5jdGlvbih1c2VyLCBwYXNzKSB7XHJcbiAgICAgICAgYXV0aCA9IG5ldyBzb2FwLkJhc2ljQXV0aFNlY3VyaXR5KHVzZXIsIHBhc3MpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNldHMgQmVhcmVyIFRva2VuIEF1dGhlbnRpY2F0aW9uIGRldGFpbHMgdG8gYmUgdXNlZCBmb3IgY29ubmVjdGlvbnMgd2l0aCB0aGUgc2VydmljZS5cclxuICAgICAqIEBmdW5jdGlvbiBhdXRoQmVhcmVyXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdG9rZW4gLSBUb2tlbi5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmF1dGhCZWFyZXIgPSBmdW5jdGlvbih0b2tlbikge1xyXG4gICAgICAgIGF1dGggPSBuZXcgc29hcC5CZWFyZXJTZWN1cml0eSh0b2tlbik7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgU2V0cyBOVExNIEF1dGhlbnRpY2F0aW9uIGRldGFpbHMgdG8gYmUgdXNlZCBmb3IgY29ubmVjdGlvbnMgd2l0aCB0aGUgc2VydmljZS5cclxuICAgICAqIEBmdW5jdGlvbiBhdXRoTlRMTVxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVzZXIgLSBVc2VybmFtZS5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBwYXNzIC0gUGFzc3dvcmQuXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gZG9tYWluIC0gRG9tYWluLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHdvcmtzdGF0aW9uIC0gV29ya3N0YXRpb24uXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5hdXRoTlRMTSA9IGZ1bmN0aW9uKHVzZXIsIHBhc3MsIGRvbWFpbiwgd29ya3N0YXRpb24pIHtcclxuICAgICAgICBhdXRoID0gbmV3IHNvYXAuTlRMTVNlY3VyaXR5KHVzZXIsIHBhc3MsIGRvbWFpbiwgd29ya3N0YXRpb24pO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNldHMgQ2xpZW50IFNTTCBBdXRoZW50aWNhdGlvbiBkZXRhaWxzIHRvIGJlIHVzZWQgZm9yIGNvbm5lY3Rpb25zIHdpdGggdGhlIHNlcnZpY2UuXHJcbiAgICAgKiBAZnVuY3Rpb24gYXV0aENsaWVudFNTTFxyXG4gICAgICogQHBhcmFtIHtCdWZmZXJ8U3RyaW5nfSBrZXkgLSBQcml2YXRlIGtleSBwYXRoIG9yIGEgQnVmZmVyIGNvbnRhaW5pbmcgdGhlIGtleS5cclxuICAgICAqIEBwYXJhbSB7QnVmZmVyfFN0cmluZ30gY2VydCAtIENlcnRpZmljYXRlIHBhdGggb3IgYSBCdWZmZXIgY29udGFpbmluZyB0aGUgY2VydGlmaWNhdGUuXHJcbiAgICAgKiBAcGFyYW0ge0J1ZmZlcnxTdHJpbmd8QXJyYXl9IGNhIC0gQ0EgcGF0aCBvciBhIEJ1ZmZlci5cclxuICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gb3B0aW9ucyAtIE9wdGlvbnMuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5hdXRoQ2xpZW50U1NMID0gZnVuY3Rpb24oa2V5LCBjZXJ0LCBjYSwgb3B0aW9ucykge1xyXG4gICAgICAgIGF1dGggPSBuZXcgc29hcC5DbGllbnRTU0xTZWN1cml0eShrZXksIGNlcnQsIGNhLCBvcHRpb25zKTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBTZXRzIENsaWVudCBTU0wgKFBGWCkgQXV0aGVudGljYXRpb24gZGV0YWlscyB0byBiZSB1c2VkIGZvciBjb25uZWN0aW9ucyB3aXRoIHRoZSBzZXJ2aWNlLlxyXG4gICAgICogQGZ1bmN0aW9uIGF1dGhDbGllbnRTU0xQRlhcclxuICAgICAqIEBwYXJhbSB7QnVmZmVyfFN0cmluZ30gcGZ4IC0gUEZYIHBhdGggb3IgYSBCdWZmZXIgY29udGFpbmluZyB0aGUgUEZYIGJ1bmRsZS5cclxuICAgICAqIEBwYXJhbSB7QnVmZmVyfFN0cmluZz19IHBhc3NwaHJhc2UgLSBQYXNzcGhyYXNlIGZvciB0aGUgUEZYLlxyXG4gICAgICogQHBhcmFtIHtPYmplY3Q9fSBvcHRpb25zIC0gT3B0aW9ucy5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmF1dGhDbGllbnRTU0xQRlggPSBmdW5jdGlvbihwZngsIHBhc3NwaHJhc2UsIG9wdGlvbnMpIHtcclxuICAgICAgICBhdXRoID0gbmV3IHNvYXAuQ2xpZW50U1NMU2VjdXJpdHlQRlgocGZ4LCBwYXNzcGhyYXNlLCBvcHRpb25zKTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBJbml0aWF0ZXMgYSBTT0FQIHJlcXVlc3QgYW5kIHJldHVybnMgdGhlIHJlc3BvbnNlLlxyXG4gICAgICogQGZ1bmN0aW9uIGdldFxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHdzZGxVcmwgLSBVUkwgcG9pbnRpbmcgdG8gdGhlIFdTREwgWE1MLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IG1ldGhvZCAtIE1ldGhvZCBuYW1lIChjYXNlIHNlbnNpdGl2ZSkuXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdD19IGFyZ3MgLSBPYmplY3QgY29udGFpbmluZyB0aGUgYXJndW1lbnRzLlxyXG4gICAgICogQHBhcmFtIHtPYmplY3Q9fSB3c2RsSGVhZGVycyAtIGN1c3RvbSBIVFRQIGhlYWRlcnMgdG8gYmUgc2VudCBvbiBXU0RMIHJlcXVlc3RzLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzcG9uc2Ugb2JqZWN0LlxyXG4gICAgICogQGV4YW1wbGUgPGNhcHRpb24+W2phdmFzY3JpcHRdIFVzYWdlIGV4YW1wbGU8L2NhcHRpb24+XHJcbiAgICAgKiAvLyBnZXQgU09BUCBzZXJ2aWNlIGRlc2NyaXB0aW9uLCBzbyB3ZSBjYW4gdW5kZXJzdGFuZCB3aGF0IG1ldGhvZHMgaXQgcHJvdmlkZXMsXHJcbiAgICAgKiAvLyB3aGF0IGlucHV0IHBhcmFtZXRlcnMgaXQgZXhwZWN0cywgYW5kIHdoYXQgaXMgdGhlIG91dHB1dCBzdHJ1Y3R1cmUuXHJcbiAgICAgKiB2YXIgc2VydmljZVVybCA9ICdodHRwOi8vd3d3LmRhdGFhY2Nlc3MuY29tL3dlYnNlcnZpY2Vzc2VydmVyL251bWJlcmNvbnZlcnNpb24ud3NvP1dTREwnO1xyXG4gICAgICogdmFyIHNlcnZpY2VEZXNjcmlwdGlvbiA9IHNvYXAuZGVzY3JpYmUoc2VydmljZVVybCk7XHJcbiAgICAgKiBsb2cuaW5mbyhzZXJ2aWNlRGVzY3JpcHRpb24pO1xyXG4gICAgICogXHJcbiAgICAgKiAvLyBOdW1iZXJUb1dvcmRzIG1ldGhvZCBpbiB0aGlzIHNlcnZpY2UgY29udmVydHMgbnVtYmVyIHRvIHdvcmRzLlxyXG4gICAgICogdmFyIHJlc3VsdCA9IHNvYXAuZ2V0KHNlcnZpY2VVcmwsICdOdW1iZXJUb1dvcmRzJywgeyAndWJpTnVtJzogMjAxOSB9KTtcclxuICAgICAqIGxvZy5pbmZvKHJlc3VsdC5OdW1iZXJUb1dvcmRzUmVzdWx0KTtcclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmdldCA9IGFzeW5jIGZ1bmN0aW9uKHdzZGxVcmwsIG1ldGhvZCwgYXJncywgd3NkbEhlYWRlcnMgPSB7fSkge1xyXG4gICAgICAgIHZhciByZXN1bHRDbGllbnQgPSBudWxsO1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBudWxsO1xyXG5cclxuICAgICAgICBhd2FpdCAoKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc29hcC5jcmVhdGVDbGllbnQod3NkbFVybCwgeyB3c2RsX29wdGlvbnM6IHsgLi4ub3B0aW9ucywgLi4ucHJveHlPcHRpb25zIH0sIHdzZGxfaGVhZGVyczogd3NkbEhlYWRlcnN9LCAoZXJyLCBjbGllbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2xpZW50ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1zZyA9ICAnRXJyb3IgY3JlYXRpbmcgY2xpZW50JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyci5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc29hcE1zZyA9IGVyci5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZpcnN0QnJlYWtJbmRleCA9IHNvYXBNc2cuaW5kZXhPZignXFxuJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RCcmVha0luZGV4ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvYXBNc2cgPSBlcnIubWVzc2FnZS5zdWJzdHJpbmcoMCwgZmlyc3RCcmVha0luZGV4KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyArPSAnOiAnICsgc29hcE1zZztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlcnIgJiYgKHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnIHx8IGVyciBpbnN0YW5jZW9mIFN0cmluZykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyArPSAnOiAnICsgZXJyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdENsaWVudCA9IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU09BUF9FUlJPUiwgbXNnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRDbGllbnQgPSBjbGllbnQ7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2xpZW50W21ldGhvZF0gIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q2xpZW50ID0gbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TT0FQX0VSUk9SLCAnTm8gbWV0aG9kIG5hbWVkICcgKyBtZXRob2QgKyAnIHdhcyBmb3VuZC4nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoYXV0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQuc2V0U2VjdXJpdHkoYXV0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAod3NkbEhlYWRlcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBoZWFkZXIgaW4gd3NkbEhlYWRlcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudC5hZGRIdHRwSGVhZGVyKGhlYWRlciwgd3NkbEhlYWRlcnNbaGVhZGVyXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNsaWVudFttZXRob2RdKGFyZ3MsIChlcnIsIHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0UmVzcG9uc2VIZWFkZXJzID0gY2xpZW50Lmxhc3RSZXNwb25zZUhlYWRlcnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIgIT09IG51bGwgJiYgZXJyLnJvb3QgJiYgZXJyLnJvb3QuRW52ZWxvcGUgJiYgZXJyLnJvb3QuRW52ZWxvcGUuQm9keSAmJiBlcnIucm9vdC5FbnZlbG9wZS5Cb2R5LkZhdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNPQVBfRVJST1IsIEpTT04uc3RyaW5naWZ5KGVyci5yb290LkVudmVsb3BlLkJvZHkuRmF1bHQuZmF1bHRzdHJpbmcpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlcnIgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU09BUF9FUlJPUiwgcmVxdWlyZSgndXRpbCcpLmluc3BlY3QoZXJyLCB7IGRlcHRoOiA0IH0pKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgeyAuLi5vcHRpb25zLCAuLi5wcm94eU9wdGlvbnMgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSkoKTtcclxuXHJcbiAgICAgICAgaWYgKHJlc3VsdENsaWVudC50eXBlID09PSBlcnJIZWxwZXIuZXJyb3JDb2RlLlNPQVBfRVJST1IpIHtcclxuICAgICAgICAgICAgdGhyb3cgcmVzdWx0Q2xpZW50O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlc3VsdC50eXBlID09PSBlcnJIZWxwZXIuZXJyb3JDb2RlLlNPQVBfRVJST1IpIHtcclxuICAgICAgICAgICAgdGhyb3cgcmVzdWx0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBSZXR1cm5zIGxhc3QgcmVzcG9uc2UgaGVhZGVycy5cclxuICAgICAqIEBmdW5jdGlvbiBnZXRMYXN0UmVzcG9uc2VIZWFkZXJzXHJcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IEluY29taW5nSHR0cEhlYWRlcnMgKGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9Qb3dlckJJLUphdmFTY3JpcHQvaW50ZXJmYWNlcy9fbm9kZV9tb2R1bGVzX190eXBlc19ub2RlX2h0dHAyX2RfLl9odHRwMl8uaW5jb21pbmdodHRwaGVhZGVycy5odG1sKS5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmdldExhc3RSZXNwb25zZUhlYWRlcnMgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gbGFzdFJlc3BvbnNlSGVhZGVycztcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBSZXR1cm5zIFNPQVAgc2VydmljZSBkZXNjcmlwdGlvbi5cclxuICAgICAqIEBmdW5jdGlvbiBkZXNjcmliZVxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHdzZGxVcmwgLSBVUkwgcG9pbnRpbmcgdG8gdGhlIFdTREwgWE1MLlxyXG4gICAgICogQHBhcmFtIHtPYmplY3Q9fSB3c2RsSGVhZGVycyAtIGN1c3RvbSBIVFRQIGhlYWRlcnMgdG8gYmUgc2VudCBvbiBXU0RMIHJlcXVlc3RzLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBTZXJ2aWNlIGRlc2NyaXB0aW9uLlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUuZGVzY3JpYmUgPSBhc3luYyBmdW5jdGlvbih3c2RsVXJsLCB3c2RsSGVhZGVycyA9IHt9KSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdENsaWVudCA9IG51bGw7XHJcblxyXG4gICAgICAgIGF3YWl0ICgoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzb2FwLmNyZWF0ZUNsaWVudCh3c2RsVXJsLHsgd3NkbF9vcHRpb25zOiB7IC4uLm9wdGlvbnMsIC4uLnByb3h5T3B0aW9ucyB9LCB3c2RsX2hlYWRlcnM6IHdzZGxIZWFkZXJzfSwgKGVyciwgY2xpZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNsaWVudCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtc2cgPSAgJ0Vycm9yIGNyZWF0aW5nIGNsaWVudCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIubWVzc2FnZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNvYXBNc2cgPSBlcnIubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaXJzdEJyZWFrSW5kZXggPSBzb2FwTXNnLmluZGV4T2YoJ1xcbicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0QnJlYWtJbmRleCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2FwTXNnID0gZXJyLm1lc3NhZ2Uuc3Vic3RyaW5nKDAsIGZpcnN0QnJlYWtJbmRleCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgKz0gJzogJyArIHNvYXBNc2c7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXJyICYmICh0eXBlb2YgZXJyID09PSAnc3RyaW5nJyB8fCBlcnIgaW5zdGFuY2VvZiBTdHJpbmcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgKz0gJzogJyArIGVycjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRDbGllbnQgPSBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNPQVBfRVJST1IsIG1zZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGF1dGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LnNldFNlY3VyaXR5KGF1dGgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q2xpZW50ID0gY2xpZW50LmRlc2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KSgpO1xyXG5cclxuICAgICAgICBpZiAocmVzdWx0Q2xpZW50LnR5cGUgPT09IGVyckhlbHBlci5lcnJvckNvZGUuU09BUF9FUlJPUikge1xyXG4gICAgICAgICAgICB0aHJvdyByZXN1bHRDbGllbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0Q2xpZW50O1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59O1xyXG4iXX0=
|
|
285
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1zb2FwLmpzIl0sIm5hbWVzIjpbImVyckhlbHBlciIsInJlcXVpcmUiLCJtb2R1bGUiLCJleHBvcnRzIiwic29hcCIsImF1dGgiLCJwcm94eU9wdGlvbnMiLCJvcHRpb25zIiwicmVqZWN0VW5hdXRob3JpemVkIiwibGFzdFJlc3BvbnNlSGVhZGVycyIsImlzSW5pdGlhbGl6ZWQiLCJzZXRQcm94eSIsInVybCIsInByb3h5IiwiYXV0aEJhc2ljIiwidXNlciIsInBhc3MiLCJCYXNpY0F1dGhTZWN1cml0eSIsImF1dGhCZWFyZXIiLCJ0b2tlbiIsIkJlYXJlclNlY3VyaXR5IiwiYXV0aE5UTE0iLCJkb21haW4iLCJ3b3Jrc3RhdGlvbiIsIk5UTE1TZWN1cml0eSIsImF1dGhDbGllbnRTU0wiLCJrZXkiLCJjZXJ0IiwiY2EiLCJDbGllbnRTU0xTZWN1cml0eSIsImF1dGhDbGllbnRTU0xQRlgiLCJwZngiLCJwYXNzcGhyYXNlIiwiQ2xpZW50U1NMU2VjdXJpdHlQRlgiLCJnZXQiLCJ3c2RsVXJsIiwibWV0aG9kIiwiYXJncyIsIndzZGxIZWFkZXJzIiwicmVzdWx0Q2xpZW50IiwicmVzdWx0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJjcmVhdGVDbGllbnQiLCJ3c2RsX29wdGlvbnMiLCJ3c2RsX2hlYWRlcnMiLCJlcnIiLCJjbGllbnQiLCJ1bmRlZmluZWQiLCJtc2ciLCJtZXNzYWdlIiwic29hcE1zZyIsImZpcnN0QnJlYWtJbmRleCIsImluZGV4T2YiLCJzdWJzdHJpbmciLCJTdHJpbmciLCJPeEVycm9yIiwiZXJyb3JDb2RlIiwiU09BUF9FUlJPUiIsInNldFNlY3VyaXR5IiwiaGVhZGVyIiwiYWRkSHR0cEhlYWRlciIsInJlcyIsInJvb3QiLCJFbnZlbG9wZSIsIkJvZHkiLCJGYXVsdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJmYXVsdHN0cmluZyIsImluc3BlY3QiLCJkZXB0aCIsInR5cGUi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Q0FBWXpELFNBQVMsQ0FBQzBELFNBQVYsQ0FBb0JDLFVBQWhDLEVBQTRDVCxHQUE1QyxDQUFmO0FBQ0FSLFlBQUFBLE9BQU87QUFDUDtBQUNIOztBQUVELGNBQUlyQyxJQUFKLEVBQVU7QUFDTjJDLFlBQUFBLE1BQU0sQ0FBQ1ksV0FBUCxDQUFtQnZELElBQW5CO0FBQ0g7O0FBRURrQyxVQUFBQSxZQUFZLEdBQUdTLE1BQU0sQ0FBQzJCLFFBQVAsRUFBZjtBQUNBakMsVUFBQUEsT0FBTztBQUNQO0FBQ0gsU0F6QkQ7QUEwQkgsT0EzQk0sQ0FBUDtBQTRCSCxLQTdCSyxHQUFOOztBQStCQSxRQUFJSCxZQUFZLENBQUNrQyxJQUFiLEtBQXNCekUsU0FBUyxDQUFDMEQsU0FBVixDQUFvQkMsVUFBOUMsRUFBMEQ7QUFDdEQsWUFBTXBCLFlBQU47QUFDSDs7QUFFRCxXQUFPQSxZQUFQO0FBQ0gsR0F2Q0Q7O0FBeUNBLFNBQU9yQyxNQUFQO0FBQ0gsQ0FsT0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICovXG5cbi8qKlxuICogQG5hbWUgc29hcFxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIG1ldGhvZHMgZm9yIHdvcmtpbmcgd2l0aCBTT0FQIGJhc2VkIFdlYiBTZXJ2aWNlcy5cbiAqL1xuXG5pbXBvcnQgT3hFcnJvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xudmFyIGVyckhlbHBlciA9IHJlcXVpcmUoJy4uL2Vycm9ycy9oZWxwZXInKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgc29hcCA9IHJlcXVpcmUoJ3NvYXAnKTtcbiAgICB2YXIgYXV0aCA9IG51bGw7XG4gICAgdmFyIHByb3h5T3B0aW9ucyA9IHt9O1xuICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgICByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlXG4gICAgfTtcbiAgICB2YXIgbGFzdFJlc3BvbnNlSGVhZGVycyA9IG51bGw7XG5cbiAgICBtb2R1bGUuaXNJbml0aWFsaXplZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IFNldHMgcHJveHkgdXJsIHRvIGJlIHVzZWQgZm9yIGNvbm5lY3Rpb25zIHdpdGggdGhlIHNlcnZpY2UuXG4gICAgICogQGZ1bmN0aW9uIHNldFByb3h5XG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVybCAtIFByb3h5IHVybC4gSW52b2NhdGlvbiB3aXRob3V0IGFyZ3VtZW50cyB3aWxsIHJlbW92ZSBhbnkgcHJldmlvdXNseSBzZXQgdXJsLlxuICAgICAqL1xuICAgIG1vZHVsZS5zZXRQcm94eSA9IGZ1bmN0aW9uKHVybCkge1xuICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgICBwcm94eU9wdGlvbnMgPSAgeyBwcm94eTogdXJsIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm94eU9wdGlvbnMgPSB7fTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBTZXRzIEJhc2ljIEF1dGhlbnRpY2F0aW9uIGRldGFpbHMgdG8gYmUgdXNlZCBmb3IgY29ubmVjdGlvbnMgd2l0aCB0aGUgc2VydmljZS5cbiAgICAgKiBAZnVuY3Rpb24gYXV0aEJhc2ljXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVzZXIgLSBVc2VybmFtZS5cbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gcGFzcyAtIFBhc3N3b3JkLlxuICAgICAqL1xuICAgIG1vZHVsZS5hdXRoQmFzaWMgPSBmdW5jdGlvbih1c2VyLCBwYXNzKSB7XG4gICAgICAgIGF1dGggPSBuZXcgc29hcC5CYXNpY0F1dGhTZWN1cml0eSh1c2VyLCBwYXNzKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgU2V0cyBCZWFyZXIgVG9rZW4gQXV0aGVudGljYXRpb24gZGV0YWlscyB0byBiZSB1c2VkIGZvciBjb25uZWN0aW9ucyB3aXRoIHRoZSBzZXJ2aWNlLlxuICAgICAqIEBmdW5jdGlvbiBhdXRoQmVhcmVyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHRva2VuIC0gVG9rZW4uXG4gICAgICovXG4gICAgbW9kdWxlLmF1dGhCZWFyZXIgPSBmdW5jdGlvbih0b2tlbikge1xuICAgICAgICBhdXRoID0gbmV3IHNvYXAuQmVhcmVyU2VjdXJpdHkodG9rZW4pO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBTZXRzIE5UTE0gQXV0aGVudGljYXRpb24gZGV0YWlscyB0byBiZSB1c2VkIGZvciBjb25uZWN0aW9ucyB3aXRoIHRoZSBzZXJ2aWNlLlxuICAgICAqIEBmdW5jdGlvbiBhdXRoTlRMTVxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB1c2VyIC0gVXNlcm5hbWUuXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHBhc3MgLSBQYXNzd29yZC5cbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gZG9tYWluIC0gRG9tYWluLlxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB3b3Jrc3RhdGlvbiAtIFdvcmtzdGF0aW9uLlxuICAgICAqL1xuICAgIG1vZHVsZS5hdXRoTlRMTSA9IGZ1bmN0aW9uKHVzZXIsIHBhc3MsIGRvbWFpbiwgd29ya3N0YXRpb24pIHtcbiAgICAgICAgYXV0aCA9IG5ldyBzb2FwLk5UTE1TZWN1cml0eSh1c2VyLCBwYXNzLCBkb21haW4sIHdvcmtzdGF0aW9uKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgU2V0cyBDbGllbnQgU1NMIEF1dGhlbnRpY2F0aW9uIGRldGFpbHMgdG8gYmUgdXNlZCBmb3IgY29ubmVjdGlvbnMgd2l0aCB0aGUgc2VydmljZS5cbiAgICAgKiBAZnVuY3Rpb24gYXV0aENsaWVudFNTTFxuICAgICAqIEBwYXJhbSB7QnVmZmVyfFN0cmluZ30ga2V5IC0gUHJpdmF0ZSBrZXkgcGF0aCBvciBhIEJ1ZmZlciBjb250YWluaW5nIHRoZSBrZXkuXG4gICAgICogQHBhcmFtIHtCdWZmZXJ8U3RyaW5nfSBjZXJ0IC0gQ2VydGlmaWNhdGUgcGF0aCBvciBhIEJ1ZmZlciBjb250YWluaW5nIHRoZSBjZXJ0aWZpY2F0ZS5cbiAgICAgKiBAcGFyYW0ge0J1ZmZlcnxTdHJpbmd8QXJyYXl9IGNhIC0gQ0EgcGF0aCBvciBhIEJ1ZmZlci5cbiAgICAgKiBAcGFyYW0ge09iamVjdD19IG9wdGlvbnMgLSBPcHRpb25zLlxuICAgICAqL1xuICAgIG1vZHVsZS5hdXRoQ2xpZW50U1NMID0gZnVuY3Rpb24oa2V5LCBjZXJ0LCBjYSwgb3B0aW9ucykge1xuICAgICAgICBhdXRoID0gbmV3IHNvYXAuQ2xpZW50U1NMU2VjdXJpdHkoa2V5LCBjZXJ0LCBjYSwgb3B0aW9ucyk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IFNldHMgQ2xpZW50IFNTTCAoUEZYKSBBdXRoZW50aWNhdGlvbiBkZXRhaWxzIHRvIGJlIHVzZWQgZm9yIGNvbm5lY3Rpb25zIHdpdGggdGhlIHNlcnZpY2UuXG4gICAgICogQGZ1bmN0aW9uIGF1dGhDbGllbnRTU0xQRlhcbiAgICAgKiBAcGFyYW0ge0J1ZmZlcnxTdHJpbmd9IHBmeCAtIFBGWCBwYXRoIG9yIGEgQnVmZmVyIGNvbnRhaW5pbmcgdGhlIFBGWCBidW5kbGUuXG4gICAgICogQHBhcmFtIHtCdWZmZXJ8U3RyaW5nPX0gcGFzc3BocmFzZSAtIFBhc3NwaHJhc2UgZm9yIHRoZSBQRlguXG4gICAgICogQHBhcmFtIHtPYmplY3Q9fSBvcHRpb25zIC0gT3B0aW9ucy5cbiAgICAgKi9cbiAgICBtb2R1bGUuYXV0aENsaWVudFNTTFBGWCA9IGZ1bmN0aW9uKHBmeCwgcGFzc3BocmFzZSwgb3B0aW9ucykge1xuICAgICAgICBhdXRoID0gbmV3IHNvYXAuQ2xpZW50U1NMU2VjdXJpdHlQRlgocGZ4LCBwYXNzcGhyYXNlLCBvcHRpb25zKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgSW5pdGlhdGVzIGEgU09BUCByZXF1ZXN0IGFuZCByZXR1cm5zIHRoZSByZXNwb25zZS5cbiAgICAgKiBAZnVuY3Rpb24gZ2V0XG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHdzZGxVcmwgLSBVUkwgcG9pbnRpbmcgdG8gdGhlIFdTREwgWE1MLlxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBtZXRob2QgLSBNZXRob2QgbmFtZSAoY2FzZSBzZW5zaXRpdmUpLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gYXJncyAtIE9iamVjdCBjb250YWluaW5nIHRoZSBhcmd1bWVudHMuXG4gICAgICogQHBhcmFtIHtPYmplY3Q9fSB3c2RsSGVhZGVycyAtIGN1c3RvbSBIVFRQIGhlYWRlcnMgdG8gYmUgc2VudCBvbiBXU0RMIHJlcXVlc3RzLlxuICAgICAqIEByZXR1cm4ge09iamVjdH0gVGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cbiAgICAgKiAvLyBnZXQgU09BUCBzZXJ2aWNlIGRlc2NyaXB0aW9uLCBzbyB3ZSBjYW4gdW5kZXJzdGFuZCB3aGF0IG1ldGhvZHMgaXQgcHJvdmlkZXMsXG4gICAgICogLy8gd2hhdCBpbnB1dCBwYXJhbWV0ZXJzIGl0IGV4cGVjdHMsIGFuZCB3aGF0IGlzIHRoZSBvdXRwdXQgc3RydWN0dXJlLlxuICAgICAqIHZhciBzZXJ2aWNlVXJsID0gJ2h0dHA6Ly93d3cuZGF0YWFjY2Vzcy5jb20vd2Vic2VydmljZXNzZXJ2ZXIvbnVtYmVyY29udmVyc2lvbi53c28/V1NETCc7XG4gICAgICogdmFyIHNlcnZpY2VEZXNjcmlwdGlvbiA9IHNvYXAuZGVzY3JpYmUoc2VydmljZVVybCk7XG4gICAgICogbG9nLmluZm8oc2VydmljZURlc2NyaXB0aW9uKTtcbiAgICAgKiBcbiAgICAgKiAvLyBOdW1iZXJUb1dvcmRzIG1ldGhvZCBpbiB0aGlzIHNlcnZpY2UgY29udmVydHMgbnVtYmVyIHRvIHdvcmRzLlxuICAgICAqIHZhciByZXN1bHQgPSBzb2FwLmdldChzZXJ2aWNlVXJsLCAnTnVtYmVyVG9Xb3JkcycsIHsgJ3ViaU51bSc6IDIwMTkgfSk7XG4gICAgICogbG9nLmluZm8ocmVzdWx0Lk51bWJlclRvV29yZHNSZXN1bHQpO1xuICAgICAqL1xuICAgIG1vZHVsZS5nZXQgPSBhc3luYyBmdW5jdGlvbih3c2RsVXJsLCBtZXRob2QsIGFyZ3MsIHdzZGxIZWFkZXJzID0ge30pIHtcbiAgICAgICAgdmFyIHJlc3VsdENsaWVudCA9IG51bGw7XG4gICAgICAgIHZhciByZXN1bHQgPSBudWxsO1xuXG4gICAgICAgIGF3YWl0ICgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIHNvYXAuY3JlYXRlQ2xpZW50KHdzZGxVcmwsIHsgd3NkbF9vcHRpb25zOiB7IC4uLm9wdGlvbnMsIC4uLnByb3h5T3B0aW9ucyB9LCB3c2RsX2hlYWRlcnM6IHdzZGxIZWFkZXJzfSwgKGVyciwgY2xpZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1zZyA9ICAnRXJyb3IgY3JlYXRpbmcgY2xpZW50JztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzb2FwTXNnID0gZXJyLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZpcnN0QnJlYWtJbmRleCA9IHNvYXBNc2cuaW5kZXhPZignXFxuJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0QnJlYWtJbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29hcE1zZyA9IGVyci5tZXNzYWdlLnN1YnN0cmluZygwLCBmaXJzdEJyZWFrSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgKz0gJzogJyArIHNvYXBNc2c7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVyciAmJiAodHlwZW9mIGVyciA9PT0gJ3N0cmluZycgfHwgZXJyIGluc3RhbmNlb2YgU3RyaW5nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyArPSAnOiAnICsgZXJyO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q2xpZW50ID0gbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TT0FQX0VSUk9SLCBtc2cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q2xpZW50ID0gY2xpZW50O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2xpZW50W21ldGhvZF0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdENsaWVudCA9IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU09BUF9FUlJPUiwgJ05vIG1ldGhvZCBuYW1lZCAnICsgbWV0aG9kICsgJyB3YXMgZm91bmQuJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoYXV0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LnNldFNlY3VyaXR5KGF1dGgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHdzZGxIZWFkZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGhlYWRlciBpbiB3c2RsSGVhZGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudC5hZGRIdHRwSGVhZGVyKGhlYWRlciwgd3NkbEhlYWRlcnNbaGVhZGVyXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjbGllbnRbbWV0aG9kXShhcmdzLCAoZXJyLCByZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RSZXNwb25zZUhlYWRlcnMgPSBjbGllbnQubGFzdFJlc3BvbnNlSGVhZGVycztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIgIT09IG51bGwgJiYgZXJyLnJvb3QgJiYgZXJyLnJvb3QuRW52ZWxvcGUgJiYgZXJyLnJvb3QuRW52ZWxvcGUuQm9keSAmJiBlcnIucm9vdC5FbnZlbG9wZS5Cb2R5LkZhdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TT0FQX0VSUk9SLCBKU09OLnN0cmluZ2lmeShlcnIucm9vdC5FbnZlbG9wZS5Cb2R5LkZhdWx0LmZhdWx0c3RyaW5nKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVyciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU09BUF9FUlJPUiwgcmVxdWlyZSgndXRpbCcpLmluc3BlY3QoZXJyLCB7IGRlcHRoOiA0IH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH0sIHsgLi4ub3B0aW9ucywgLi4ucHJveHlPcHRpb25zIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pKCk7XG5cbiAgICAgICAgaWYgKHJlc3VsdENsaWVudC50eXBlID09PSBlcnJIZWxwZXIuZXJyb3JDb2RlLlNPQVBfRVJST1IpIHtcbiAgICAgICAgICAgIHRocm93IHJlc3VsdENsaWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQudHlwZSA9PT0gZXJySGVscGVyLmVycm9yQ29kZS5TT0FQX0VSUk9SKSB7XG4gICAgICAgICAgICB0aHJvdyByZXN1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBSZXR1cm5zIGxhc3QgcmVzcG9uc2UgaGVhZGVycy5cbiAgICAgKiBAZnVuY3Rpb24gZ2V0TGFzdFJlc3BvbnNlSGVhZGVyc1xuICAgICAqIEByZXR1cm4ge09iamVjdH0gSW5jb21pbmdIdHRwSGVhZGVycyAoaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL1Bvd2VyQkktSmF2YVNjcmlwdC9pbnRlcmZhY2VzL19ub2RlX21vZHVsZXNfX3R5cGVzX25vZGVfaHR0cDJfZF8uX2h0dHAyXy5pbmNvbWluZ2h0dHBoZWFkZXJzLmh0bWwpLlxuICAgICAqL1xuICAgIG1vZHVsZS5nZXRMYXN0UmVzcG9uc2VIZWFkZXJzID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBsYXN0UmVzcG9uc2VIZWFkZXJzO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBSZXR1cm5zIFNPQVAgc2VydmljZSBkZXNjcmlwdGlvbi5cbiAgICAgKiBAZnVuY3Rpb24gZGVzY3JpYmVcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gd3NkbFVybCAtIFVSTCBwb2ludGluZyB0byB0aGUgV1NETCBYTUwuXG4gICAgICogQHBhcmFtIHtPYmplY3Q9fSB3c2RsSGVhZGVycyAtIGN1c3RvbSBIVFRQIGhlYWRlcnMgdG8gYmUgc2VudCBvbiBXU0RMIHJlcXVlc3RzLlxuICAgICAqIEByZXR1cm4ge09iamVjdH0gU2VydmljZSBkZXNjcmlwdGlvbi5cbiAgICAgKi9cbiAgICBtb2R1bGUuZGVzY3JpYmUgPSBhc3luYyBmdW5jdGlvbih3c2RsVXJsLCB3c2RsSGVhZGVycyA9IHt9KSB7XG4gICAgICAgIHZhciByZXN1bHRDbGllbnQgPSBudWxsO1xuXG4gICAgICAgIGF3YWl0ICgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIHNvYXAuY3JlYXRlQ2xpZW50KHdzZGxVcmwseyB3c2RsX29wdGlvbnM6IHsgLi4ub3B0aW9ucywgLi4ucHJveHlPcHRpb25zIH0sIHdzZGxfaGVhZGVyczogd3NkbEhlYWRlcnN9LCAoZXJyLCBjbGllbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNsaWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbXNnID0gICdFcnJvciBjcmVhdGluZyBjbGllbnQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyci5tZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNvYXBNc2cgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmlyc3RCcmVha0luZGV4ID0gc29hcE1zZy5pbmRleE9mKCdcXG4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RCcmVha0luZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2FwTXNnID0gZXJyLm1lc3NhZ2Uuc3Vic3RyaW5nKDAsIGZpcnN0QnJlYWtJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyArPSAnOiAnICsgc29hcE1zZztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXJyICYmICh0eXBlb2YgZXJyID09PSAnc3RyaW5nJyB8fCBlcnIgaW5zdGFuY2VvZiBTdHJpbmcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnICs9ICc6ICcgKyBlcnI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRDbGllbnQgPSBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNPQVBfRVJST1IsIG1zZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoYXV0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LnNldFNlY3VyaXR5KGF1dGgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q2xpZW50ID0gY2xpZW50LmRlc2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pKCk7XG5cbiAgICAgICAgaWYgKHJlc3VsdENsaWVudC50eXBlID09PSBlcnJIZWxwZXIuZXJyb3JDb2RlLlNPQVBfRVJST1IpIHtcbiAgICAgICAgICAgIHRocm93IHJlc3VsdENsaWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHRDbGllbnQ7XG4gICAgfTtcblxuICAgIHJldHVybiBtb2R1bGU7XG59O1xuIl19
|