oxygen-cli 1.40.2-beta.1 → 1.41.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.
Files changed (442) hide show
  1. package/CHANGELOG.md +1755 -1742
  2. package/LICENSE +672 -672
  3. package/README.md +37 -37
  4. package/build/core/OxygenCore.js +1 -1
  5. package/build/core/OxygenEvents.js +1 -1
  6. package/build/core/OxygenModule.js +1 -1
  7. package/build/core/OxygenService.js +1 -1
  8. package/build/core/OxygenSubModule.js +1 -1
  9. package/build/core/WebDriverModule.js +1 -1
  10. package/build/core/utils.js +1 -1
  11. package/build/errors/HookError.js +1 -1
  12. package/build/errors/ModuleError.js +1 -1
  13. package/build/errors/ModuleUnavailableError.js +1 -1
  14. package/build/errors/OxygenError.js +1 -1
  15. package/build/errors/ScriptNotFound.js +1 -1
  16. package/build/errors/helper.js +1 -1
  17. package/build/index.js +1 -1
  18. package/build/lib/cli-util.js +1 -1
  19. package/build/lib/cli.js +1 -1
  20. package/build/lib/debugger.js +1 -1
  21. package/build/lib/img-merge.js +1 -1
  22. package/build/lib/launcher.js +1 -1
  23. package/build/lib/logger.js +43 -43
  24. package/build/lib/moduleRequire.js +1 -1
  25. package/build/lib/parallel-launcher.js +1 -1
  26. package/build/lib/param-manager.js +1 -1
  27. package/build/lib/param-reader-csv.js +1 -1
  28. package/build/lib/param-reader-excel.js +1 -1
  29. package/build/lib/param-reader-json.js +1 -1
  30. package/build/lib/text-to-image.js +1 -1
  31. package/build/lib/util.js +1 -1
  32. package/build/model/case-result.js +1 -1
  33. package/build/model/failure.js +1 -1
  34. package/build/model/status.js +1 -1
  35. package/build/model/step-result.js +1 -1
  36. package/build/model/suite-result.js +1 -1
  37. package/build/model/test-result.js +1 -1
  38. package/build/model/testcase.js +1 -1
  39. package/build/model/testsuite.js +1 -1
  40. package/build/ox_modules/index.js +1 -1
  41. package/build/ox_modules/module-assert.js +37 -37
  42. package/build/ox_modules/module-date.js +24 -24
  43. package/build/ox_modules/module-db.js +52 -52
  44. package/build/ox_modules/module-email.js +59 -59
  45. package/build/ox_modules/module-eyes.js +34 -34
  46. package/build/ox_modules/module-http/ntlm-util.js +10 -10
  47. package/build/ox_modules/module-http/ntlm.js +15 -15
  48. package/build/ox_modules/module-http.js +132 -132
  49. package/build/ox_modules/module-log.js +27 -27
  50. package/build/ox_modules/module-mailinator.js +87 -87
  51. package/build/ox_modules/module-mob/commands/alertAccept.js +17 -17
  52. package/build/ox_modules/module-mob/commands/alertDismiss.js +17 -17
  53. package/build/ox_modules/module-mob/commands/assertAlert.js +20 -20
  54. package/build/ox_modules/module-mob/commands/assertText.js +21 -21
  55. package/build/ox_modules/module-mob/commands/assertTitle.js +19 -19
  56. package/build/ox_modules/module-mob/commands/assertValue.js +18 -18
  57. package/build/ox_modules/module-mob/commands/back.js +16 -16
  58. package/build/ox_modules/module-mob/commands/clear.js +19 -19
  59. package/build/ox_modules/module-mob/commands/click.js +17 -17
  60. package/build/ox_modules/module-mob/commands/clickHidden.js +17 -17
  61. package/build/ox_modules/module-mob/commands/clickLong.js +18 -18
  62. package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +18 -18
  63. package/build/ox_modules/module-mob/commands/closeApp.js +16 -16
  64. package/build/ox_modules/module-mob/commands/debug.js +16 -16
  65. package/build/ox_modules/module-mob/commands/dragAndDrop.js +19 -19
  66. package/build/ox_modules/module-mob/commands/enableNetwork.js +27 -27
  67. package/build/ox_modules/module-mob/commands/execute.js +21 -21
  68. package/build/ox_modules/module-mob/commands/findElement.js +20 -20
  69. package/build/ox_modules/module-mob/commands/findElements.js +23 -23
  70. package/build/ox_modules/module-mob/commands/getAlertText.js +17 -17
  71. package/build/ox_modules/module-mob/commands/getAppiumLogs.js +16 -16
  72. package/build/ox_modules/module-mob/commands/getBrowserLogs.js +16 -16
  73. package/build/ox_modules/module-mob/commands/getCurrentActivity.js +15 -15
  74. package/build/ox_modules/module-mob/commands/getCurrentPackage.js +15 -15
  75. package/build/ox_modules/module-mob/commands/getDeviceLogs.js +16 -16
  76. package/build/ox_modules/module-mob/commands/getDeviceTime.js +16 -16
  77. package/build/ox_modules/module-mob/commands/getLocation.js +20 -20
  78. package/build/ox_modules/module-mob/commands/getSource.js +16 -16
  79. package/build/ox_modules/module-mob/commands/getText.js +18 -18
  80. package/build/ox_modules/module-mob/commands/getTitle.js +13 -13
  81. package/build/ox_modules/module-mob/commands/getUrl.js +17 -17
  82. package/build/ox_modules/module-mob/commands/getValue.js +18 -18
  83. package/build/ox_modules/module-mob/commands/getWindowHandles.js +17 -17
  84. package/build/ox_modules/module-mob/commands/hideKeyboard.js +21 -21
  85. package/build/ox_modules/module-mob/commands/index.js +1 -1
  86. package/build/ox_modules/module-mob/commands/installApp.js +16 -16
  87. package/build/ox_modules/module-mob/commands/isAppInstalled.js +16 -16
  88. package/build/ox_modules/module-mob/commands/isCheckable.js +18 -18
  89. package/build/ox_modules/module-mob/commands/isChecked.js +18 -18
  90. package/build/ox_modules/module-mob/commands/isClickable.js +18 -18
  91. package/build/ox_modules/module-mob/commands/isExist.js +19 -19
  92. package/build/ox_modules/module-mob/commands/isSelected.js +23 -23
  93. package/build/ox_modules/module-mob/commands/isVisible.js +19 -19
  94. package/build/ox_modules/module-mob/commands/isWebViewContext.js +16 -16
  95. package/build/ox_modules/module-mob/commands/launchApp.js +15 -15
  96. package/build/ox_modules/module-mob/commands/longPressKeyCode.js +18 -18
  97. package/build/ox_modules/module-mob/commands/open.js +17 -17
  98. package/build/ox_modules/module-mob/commands/pause.js +16 -16
  99. package/build/ox_modules/module-mob/commands/removeApp.js +16 -16
  100. package/build/ox_modules/module-mob/commands/resetApp.js +15 -15
  101. package/build/ox_modules/module-mob/commands/scrollIntoElement.js +22 -22
  102. package/build/ox_modules/module-mob/commands/scrollIntoView.js +27 -27
  103. package/build/ox_modules/module-mob/commands/select.js +24 -24
  104. package/build/ox_modules/module-mob/commands/selectFrame.js +23 -23
  105. package/build/ox_modules/module-mob/commands/selectWindow.js +28 -28
  106. package/build/ox_modules/module-mob/commands/sendKeys.js +29 -29
  107. package/build/ox_modules/module-mob/commands/setContext.js +16 -16
  108. package/build/ox_modules/module-mob/commands/setNativeContext.js +15 -15
  109. package/build/ox_modules/module-mob/commands/setTimeout.js +21 -21
  110. package/build/ox_modules/module-mob/commands/setWebViewContext.js +16 -16
  111. package/build/ox_modules/module-mob/commands/shake.js +16 -16
  112. package/build/ox_modules/module-mob/commands/smsClickLink.js +19 -19
  113. package/build/ox_modules/module-mob/commands/smsGetText.js +20 -20
  114. package/build/ox_modules/module-mob/commands/swipe.js +20 -20
  115. package/build/ox_modules/module-mob/commands/swipeElement.js +20 -20
  116. package/build/ox_modules/module-mob/commands/swipeScreen.js +20 -20
  117. package/build/ox_modules/module-mob/commands/takeScreenshot.js +17 -17
  118. package/build/ox_modules/module-mob/commands/tap.js +17 -17
  119. package/build/ox_modules/module-mob/commands/type.js +20 -20
  120. package/build/ox_modules/module-mob/commands/unlockPattern.js +22 -22
  121. package/build/ox_modules/module-mob/commands/waitForExist.js +18 -18
  122. package/build/ox_modules/module-mob/commands/waitForInteractable.js +17 -17
  123. package/build/ox_modules/module-mob/commands/waitForVisible.js +17 -17
  124. package/build/ox_modules/module-mob.js +74 -74
  125. package/build/ox_modules/module-mongo.js +82 -82
  126. package/build/ox_modules/module-pdf.js +35 -35
  127. package/build/ox_modules/module-proxy.js +77 -77
  128. package/build/ox_modules/module-serial.js +55 -55
  129. package/build/ox_modules/module-shell.js +52 -33
  130. package/build/ox_modules/module-soap.js +72 -72
  131. package/build/ox_modules/module-twilio.js +41 -41
  132. package/build/ox_modules/module-utils.js +91 -91
  133. package/build/ox_modules/module-web/commands/alertAccept.js +17 -17
  134. package/build/ox_modules/module-web/commands/alertDismiss.js +17 -17
  135. package/build/ox_modules/module-web/commands/assertAlert.js +20 -20
  136. package/build/ox_modules/module-web/commands/assertExist.js +17 -17
  137. package/build/ox_modules/module-web/commands/assertSelectedLabel.js +21 -21
  138. package/build/ox_modules/module-web/commands/assertSelectedValue.js +21 -21
  139. package/build/ox_modules/module-web/commands/assertText.js +21 -21
  140. package/build/ox_modules/module-web/commands/assertTextNotPresent.js +18 -18
  141. package/build/ox_modules/module-web/commands/assertTextPresent.js +18 -18
  142. package/build/ox_modules/module-web/commands/assertTitle.js +19 -19
  143. package/build/ox_modules/module-web/commands/assertValue.js +20 -20
  144. package/build/ox_modules/module-web/commands/back.js +16 -16
  145. package/build/ox_modules/module-web/commands/clear.js +18 -18
  146. package/build/ox_modules/module-web/commands/click.js +25 -25
  147. package/build/ox_modules/module-web/commands/clickHidden.js +23 -23
  148. package/build/ox_modules/module-web/commands/closeWindow.js +15 -15
  149. package/build/ox_modules/module-web/commands/debug.js +15 -15
  150. package/build/ox_modules/module-web/commands/deleteCookies.js +12 -12
  151. package/build/ox_modules/module-web/commands/deselect.js +22 -22
  152. package/build/ox_modules/module-web/commands/doubleClick.js +17 -17
  153. package/build/ox_modules/module-web/commands/dragAndDrop.js +20 -20
  154. package/build/ox_modules/module-web/commands/execute.js +24 -24
  155. package/build/ox_modules/module-web/commands/fileBrowse.js +18 -18
  156. package/build/ox_modules/module-web/commands/findElement.js +19 -19
  157. package/build/ox_modules/module-web/commands/findElements.js +22 -22
  158. package/build/ox_modules/module-web/commands/fullscreenWindow.js +14 -14
  159. package/build/ox_modules/module-web/commands/getAlertText.js +16 -16
  160. package/build/ox_modules/module-web/commands/getAttribute.js +19 -19
  161. package/build/ox_modules/module-web/commands/getBrowserLogs.js +17 -17
  162. package/build/ox_modules/module-web/commands/getCookies.js +13 -13
  163. package/build/ox_modules/module-web/commands/getCssValue.js +19 -19
  164. package/build/ox_modules/module-web/commands/getElementCount.js +17 -17
  165. package/build/ox_modules/module-web/commands/getHTML.js +17 -17
  166. package/build/ox_modules/module-web/commands/getSource.js +16 -16
  167. package/build/ox_modules/module-web/commands/getText.js +18 -18
  168. package/build/ox_modules/module-web/commands/getTitle.js +12 -12
  169. package/build/ox_modules/module-web/commands/getUrl.js +16 -16
  170. package/build/ox_modules/module-web/commands/getValue.js +18 -18
  171. package/build/ox_modules/module-web/commands/getWindowHandles.js +16 -16
  172. package/build/ox_modules/module-web/commands/getWindowSize.js +16 -16
  173. package/build/ox_modules/module-web/commands/getXMLPageSource.js +16 -16
  174. package/build/ox_modules/module-web/commands/index.js +1 -1
  175. package/build/ox_modules/module-web/commands/isAlertPresent.js +16 -16
  176. package/build/ox_modules/module-web/commands/isChecked.js +18 -18
  177. package/build/ox_modules/module-web/commands/isExist.js +19 -19
  178. package/build/ox_modules/module-web/commands/isInteractable.js +22 -22
  179. package/build/ox_modules/module-web/commands/isSelected.js +23 -23
  180. package/build/ox_modules/module-web/commands/isVisible.js +19 -19
  181. package/build/ox_modules/module-web/commands/makeVisible.js +25 -25
  182. package/build/ox_modules/module-web/commands/maximizeWindow.js +14 -14
  183. package/build/ox_modules/module-web/commands/minimizeWindow.js +14 -14
  184. package/build/ox_modules/module-web/commands/mock.js +20 -20
  185. package/build/ox_modules/module-web/commands/mockClearAll.js +12 -12
  186. package/build/ox_modules/module-web/commands/mockRestoreAll.js +12 -12
  187. package/build/ox_modules/module-web/commands/newWindow.js +16 -16
  188. package/build/ox_modules/module-web/commands/open.js +16 -16
  189. package/build/ox_modules/module-web/commands/pause.js +15 -15
  190. package/build/ox_modules/module-web/commands/point.js +21 -21
  191. package/build/ox_modules/module-web/commands/pointJS.js +15 -15
  192. package/build/ox_modules/module-web/commands/refresh.js +15 -15
  193. package/build/ox_modules/module-web/commands/rightClick.js +17 -17
  194. package/build/ox_modules/module-web/commands/rightClickActions.js +19 -19
  195. package/build/ox_modules/module-web/commands/scrollToElement.js +21 -21
  196. package/build/ox_modules/module-web/commands/select.js +23 -23
  197. package/build/ox_modules/module-web/commands/selectFrame.js +24 -24
  198. package/build/ox_modules/module-web/commands/selectWindow.js +27 -27
  199. package/build/ox_modules/module-web/commands/sendKeys.js +22 -22
  200. package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +20 -20
  201. package/build/ox_modules/module-web/commands/setTimeout.js +21 -21
  202. package/build/ox_modules/module-web/commands/setWindowSize.js +17 -17
  203. package/build/ox_modules/module-web/commands/takeScreenshot.js +17 -17
  204. package/build/ox_modules/module-web/commands/type.js +20 -20
  205. package/build/ox_modules/module-web/commands/verifyAlert.js +20 -20
  206. package/build/ox_modules/module-web/commands/verifyExist.js +17 -17
  207. package/build/ox_modules/module-web/commands/verifySelectedLabel.js +21 -21
  208. package/build/ox_modules/module-web/commands/verifySelectedValue.js +21 -21
  209. package/build/ox_modules/module-web/commands/verifyText.js +21 -21
  210. package/build/ox_modules/module-web/commands/verifyTextNotPresent.js +18 -18
  211. package/build/ox_modules/module-web/commands/verifyTextPresent.js +18 -18
  212. package/build/ox_modules/module-web/commands/verifyTitle.js +19 -19
  213. package/build/ox_modules/module-web/commands/verifyValue.js +20 -20
  214. package/build/ox_modules/module-web/commands/waitForAngular.js +19 -19
  215. package/build/ox_modules/module-web/commands/waitForExist.js +17 -17
  216. package/build/ox_modules/module-web/commands/waitForInteractable.js +17 -17
  217. package/build/ox_modules/module-web/commands/waitForNotExist.js +17 -17
  218. package/build/ox_modules/module-web/commands/waitForNotText.js +20 -20
  219. package/build/ox_modules/module-web/commands/waitForNotValue.js +20 -20
  220. package/build/ox_modules/module-web/commands/waitForText.js +20 -20
  221. package/build/ox_modules/module-web/commands/waitForValue.js +20 -20
  222. package/build/ox_modules/module-web/commands/waitForVisible.js +17 -17
  223. package/build/ox_modules/module-web/commands/waitForWindow.js +22 -22
  224. package/build/ox_modules/module-web.js +94 -94
  225. package/build/ox_modules/module-win/commands/assertText.js +17 -17
  226. package/build/ox_modules/module-win/commands/assertTitle.js +15 -15
  227. package/build/ox_modules/module-win/commands/assertValue.js +14 -14
  228. package/build/ox_modules/module-win/commands/back.js +11 -11
  229. package/build/ox_modules/module-win/commands/clear.js +13 -13
  230. package/build/ox_modules/module-win/commands/click.js +13 -13
  231. package/build/ox_modules/module-win/commands/clickLong.js +14 -14
  232. package/build/ox_modules/module-win/commands/clickMultipleTimes.js +14 -14
  233. package/build/ox_modules/module-win/commands/findElement.js +15 -15
  234. package/build/ox_modules/module-win/commands/findElements.js +15 -15
  235. package/build/ox_modules/module-win/commands/getAppiumLogs.js +12 -12
  236. package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +15 -15
  237. package/build/ox_modules/module-win/commands/getLocation.js +14 -14
  238. package/build/ox_modules/module-win/commands/getSource.js +12 -12
  239. package/build/ox_modules/module-win/commands/getText.js +14 -14
  240. package/build/ox_modules/module-win/commands/getValue.js +14 -14
  241. package/build/ox_modules/module-win/commands/getWindowHandles.js +15 -15
  242. package/build/ox_modules/module-win/commands/index.js +1 -1
  243. package/build/ox_modules/module-win/commands/isCheckable.js +14 -14
  244. package/build/ox_modules/module-win/commands/isChecked.js +14 -14
  245. package/build/ox_modules/module-win/commands/isClickable.js +14 -14
  246. package/build/ox_modules/module-win/commands/isExist.js +15 -15
  247. package/build/ox_modules/module-win/commands/isSelected.js +14 -14
  248. package/build/ox_modules/module-win/commands/isVisible.js +15 -15
  249. package/build/ox_modules/module-win/commands/open.js +13 -13
  250. package/build/ox_modules/module-win/commands/pause.js +12 -12
  251. package/build/ox_modules/module-win/commands/rightClick.js +13 -13
  252. package/build/ox_modules/module-win/commands/selectWindow.js +23 -23
  253. package/build/ox_modules/module-win/commands/sendKeys.js +22 -22
  254. package/build/ox_modules/module-win/commands/setTimeout.js +17 -17
  255. package/build/ox_modules/module-win/commands/takeScreenshot.js +16 -16
  256. package/build/ox_modules/module-win/commands/tap.js +13 -13
  257. package/build/ox_modules/module-win/commands/type.js +16 -16
  258. package/build/ox_modules/module-win/commands/waitForExist.js +14 -14
  259. package/build/ox_modules/module-win/commands/waitForInteractable.js +16 -16
  260. package/build/ox_modules/module-win/commands/waitForVisible.js +13 -13
  261. package/build/ox_modules/module-win.js +47 -47
  262. package/build/ox_modules/utils.js +8 -8
  263. package/build/ox_reporters/excel/template.json +48 -48
  264. package/build/ox_reporters/html/index.ejs +163 -163
  265. package/build/ox_reporters/html/summary.ejs +77 -77
  266. package/build/ox_reporters/html/tests-details.ejs +134 -134
  267. package/build/ox_reporters/html/tests-devices-browsers.ejs +83 -83
  268. package/build/ox_reporters/reporter-excel.js +1 -1
  269. package/build/ox_reporters/reporter-html.js +1 -1
  270. package/build/ox_reporters/reporter-json.js +1 -1
  271. package/build/ox_reporters/reporter-junit.js +1 -1
  272. package/build/ox_reporters/reporter-pdf.js +1 -1
  273. package/build/ox_reporters/reporter-rp.js +73 -42
  274. package/build/ox_reporters/reporter-xml.js +1 -1
  275. package/build/ox_services/service-devtools/submodule-network.js +1 -1
  276. package/build/ox_services/service-devtools.js +1 -1
  277. package/build/reporter/FileReporterBase.js +1 -1
  278. package/build/reporter/ReportAggregator.js +1 -1
  279. package/build/reporter/ReporterBase.js +1 -1
  280. package/build/reporter/WebSocketReporter.js +1 -1
  281. package/build/runners/WorkerProcess.js +1 -1
  282. package/build/runners/cucumber/CucumberEventListener.js +1 -1
  283. package/build/runners/cucumber/CucumberReporter.js +1 -1
  284. package/build/runners/cucumber/CucumberWorker.js +1 -1
  285. package/build/runners/cucumber/index.js +1 -1
  286. package/build/runners/cucumber/worker.js +1 -1
  287. package/build/runners/index.js +1 -1
  288. package/build/runners/oxygen/OxygenWorker.js +1 -1
  289. package/build/runners/oxygen/index.js +1 -1
  290. package/build/runners/oxygen/worker.js +1 -1
  291. package/config/default.json +6 -6
  292. package/package.json +139 -139
  293. package/types/index.d.ts +70 -70
  294. package/types/module-eyes.d.ts +39 -39
  295. package/types/module-http.d.ts +163 -163
  296. package/types/module-log.d.ts +34 -34
  297. package/types/module-mob.d.ts +966 -966
  298. package/types/module-pdf.d.ts +40 -40
  299. package/types/module-proxy.d.ts +100 -100
  300. package/types/module-shell.d.ts +24 -24
  301. package/types/module-utils.d.ts +99 -99
  302. package/types/module-web.d.ts +1053 -1053
  303. package/types/module-win.d.ts +352 -352
  304. package/types/oxygen.d.ts +53 -53
  305. package/log.txt +0 -1614
  306. package/reports/2025-06-08_231627/report.html +0 -440
  307. package/reports/2025-06-09_223615/report.html +0 -440
  308. package/transpiled/mongodb/etc/prepare.js +0 -18
  309. package/transpiled/mongodb/lib/admin.js +0 -182
  310. package/transpiled/mongodb/lib/beta.js +0 -26
  311. package/transpiled/mongodb/lib/bson.js +0 -220
  312. package/transpiled/mongodb/lib/bulk/common.js +0 -1041
  313. package/transpiled/mongodb/lib/bulk/ordered.js +0 -76
  314. package/transpiled/mongodb/lib/bulk/unordered.js +0 -102
  315. package/transpiled/mongodb/lib/change_stream.js +0 -517
  316. package/transpiled/mongodb/lib/client-side-encryption/auto_encrypter.js +0 -329
  317. package/transpiled/mongodb/lib/client-side-encryption/client_encryption.js +0 -779
  318. package/transpiled/mongodb/lib/client-side-encryption/crypto_callbacks.js +0 -95
  319. package/transpiled/mongodb/lib/client-side-encryption/errors.js +0 -171
  320. package/transpiled/mongodb/lib/client-side-encryption/mongocryptd_manager.js +0 -98
  321. package/transpiled/mongodb/lib/client-side-encryption/providers/aws.js +0 -34
  322. package/transpiled/mongodb/lib/client-side-encryption/providers/azure.js +0 -186
  323. package/transpiled/mongodb/lib/client-side-encryption/providers/gcp.js +0 -29
  324. package/transpiled/mongodb/lib/client-side-encryption/providers/index.js +0 -58
  325. package/transpiled/mongodb/lib/client-side-encryption/state_machine.js +0 -505
  326. package/transpiled/mongodb/lib/cmap/auth/auth_provider.js +0 -63
  327. package/transpiled/mongodb/lib/cmap/auth/aws_temporary_credentials.js +0 -167
  328. package/transpiled/mongodb/lib/cmap/auth/gssapi.js +0 -207
  329. package/transpiled/mongodb/lib/cmap/auth/mongo_credentials.js +0 -193
  330. package/transpiled/mongodb/lib/cmap/auth/mongodb_aws.js +0 -181
  331. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js +0 -101
  332. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js +0 -81
  333. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js +0 -174
  334. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js +0 -59
  335. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js +0 -58
  336. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js +0 -138
  337. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/k8s_machine_workflow.js +0 -42
  338. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js +0 -71
  339. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js +0 -34
  340. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc.js +0 -111
  341. package/transpiled/mongodb/lib/cmap/auth/plain.js +0 -43
  342. package/transpiled/mongodb/lib/cmap/auth/providers.js +0 -22
  343. package/transpiled/mongodb/lib/cmap/auth/scram.js +0 -318
  344. package/transpiled/mongodb/lib/cmap/auth/x509.js +0 -61
  345. package/transpiled/mongodb/lib/cmap/command_monitoring_events.js +0 -266
  346. package/transpiled/mongodb/lib/cmap/commands.js +0 -605
  347. package/transpiled/mongodb/lib/cmap/connect.js +0 -418
  348. package/transpiled/mongodb/lib/cmap/connection.js +0 -673
  349. package/transpiled/mongodb/lib/cmap/connection_pool.js +0 -688
  350. package/transpiled/mongodb/lib/cmap/connection_pool_events.js +0 -254
  351. package/transpiled/mongodb/lib/cmap/errors.js +0 -128
  352. package/transpiled/mongodb/lib/cmap/handshake/client_metadata.js +0 -278
  353. package/transpiled/mongodb/lib/cmap/metrics.js +0 -67
  354. package/transpiled/mongodb/lib/cmap/stream_description.js +0 -74
  355. package/transpiled/mongodb/lib/cmap/wire_protocol/compression.js +0 -196
  356. package/transpiled/mongodb/lib/cmap/wire_protocol/constants.js +0 -19
  357. package/transpiled/mongodb/lib/cmap/wire_protocol/on_data.js +0 -144
  358. package/transpiled/mongodb/lib/cmap/wire_protocol/on_demand/document.js +0 -278
  359. package/transpiled/mongodb/lib/cmap/wire_protocol/responses.js +0 -376
  360. package/transpiled/mongodb/lib/cmap/wire_protocol/shared.js +0 -49
  361. package/transpiled/mongodb/lib/collection.js +0 -852
  362. package/transpiled/mongodb/lib/connection_string.js +0 -1452
  363. package/transpiled/mongodb/lib/constants.js +0 -162
  364. package/transpiled/mongodb/lib/cursor/abstract_cursor.js +0 -1082
  365. package/transpiled/mongodb/lib/cursor/aggregation_cursor.js +0 -227
  366. package/transpiled/mongodb/lib/cursor/change_stream_cursor.js +0 -136
  367. package/transpiled/mongodb/lib/cursor/client_bulk_write_cursor.js +0 -69
  368. package/transpiled/mongodb/lib/cursor/find_cursor.js +0 -476
  369. package/transpiled/mongodb/lib/cursor/list_collections_cursor.js +0 -48
  370. package/transpiled/mongodb/lib/cursor/list_indexes_cursor.js +0 -46
  371. package/transpiled/mongodb/lib/cursor/list_search_indexes_cursor.js +0 -30
  372. package/transpiled/mongodb/lib/cursor/run_command_cursor.js +0 -125
  373. package/transpiled/mongodb/lib/db.js +0 -467
  374. package/transpiled/mongodb/lib/deps.js +0 -174
  375. package/transpiled/mongodb/lib/encrypter.js +0 -129
  376. package/transpiled/mongodb/lib/error.js +0 -1550
  377. package/transpiled/mongodb/lib/explain.js +0 -122
  378. package/transpiled/mongodb/lib/gridfs/download.js +0 -369
  379. package/transpiled/mongodb/lib/gridfs/index.js +0 -240
  380. package/transpiled/mongodb/lib/gridfs/upload.js +0 -446
  381. package/transpiled/mongodb/lib/index.js +0 -975
  382. package/transpiled/mongodb/lib/mongo_client.js +0 -626
  383. package/transpiled/mongodb/lib/mongo_client_auth_providers.js +0 -98
  384. package/transpiled/mongodb/lib/mongo_logger.js +0 -812
  385. package/transpiled/mongodb/lib/mongo_types.js +0 -71
  386. package/transpiled/mongodb/lib/operations/aggregate.js +0 -129
  387. package/transpiled/mongodb/lib/operations/bulk_write.js +0 -48
  388. package/transpiled/mongodb/lib/operations/client_bulk_write/client_bulk_write.js +0 -96
  389. package/transpiled/mongodb/lib/operations/client_bulk_write/command_builder.js +0 -409
  390. package/transpiled/mongodb/lib/operations/client_bulk_write/common.js +0 -5
  391. package/transpiled/mongodb/lib/operations/client_bulk_write/executor.js +0 -144
  392. package/transpiled/mongodb/lib/operations/client_bulk_write/results_merger.js +0 -228
  393. package/transpiled/mongodb/lib/operations/collections.js +0 -49
  394. package/transpiled/mongodb/lib/operations/command.js +0 -102
  395. package/transpiled/mongodb/lib/operations/count.js +0 -60
  396. package/transpiled/mongodb/lib/operations/create_collection.js +0 -109
  397. package/transpiled/mongodb/lib/operations/delete.js +0 -134
  398. package/transpiled/mongodb/lib/operations/distinct.js +0 -77
  399. package/transpiled/mongodb/lib/operations/drop.js +0 -102
  400. package/transpiled/mongodb/lib/operations/estimated_document_count.js +0 -47
  401. package/transpiled/mongodb/lib/operations/execute_operation.js +0 -251
  402. package/transpiled/mongodb/lib/operations/find.js +0 -197
  403. package/transpiled/mongodb/lib/operations/find_and_modify.js +0 -191
  404. package/transpiled/mongodb/lib/operations/get_more.js +0 -84
  405. package/transpiled/mongodb/lib/operations/indexes.js +0 -197
  406. package/transpiled/mongodb/lib/operations/insert.js +0 -138
  407. package/transpiled/mongodb/lib/operations/is_capped.js +0 -44
  408. package/transpiled/mongodb/lib/operations/kill_cursors.js +0 -58
  409. package/transpiled/mongodb/lib/operations/list_collections.js +0 -66
  410. package/transpiled/mongodb/lib/operations/list_databases.js +0 -56
  411. package/transpiled/mongodb/lib/operations/operation.js +0 -88
  412. package/transpiled/mongodb/lib/operations/options_operation.js +0 -44
  413. package/transpiled/mongodb/lib/operations/profiling_level.js +0 -42
  414. package/transpiled/mongodb/lib/operations/remove_user.js +0 -35
  415. package/transpiled/mongodb/lib/operations/rename.js +0 -48
  416. package/transpiled/mongodb/lib/operations/run_command.js +0 -64
  417. package/transpiled/mongodb/lib/operations/search_indexes/create.js +0 -41
  418. package/transpiled/mongodb/lib/operations/search_indexes/drop.js +0 -51
  419. package/transpiled/mongodb/lib/operations/search_indexes/update.js +0 -40
  420. package/transpiled/mongodb/lib/operations/set_profiling_level.js +0 -70
  421. package/transpiled/mongodb/lib/operations/stats.js +0 -39
  422. package/transpiled/mongodb/lib/operations/update.js +0 -218
  423. package/transpiled/mongodb/lib/operations/validate_collection.js +0 -49
  424. package/transpiled/mongodb/lib/read_concern.js +0 -92
  425. package/transpiled/mongodb/lib/read_preference.js +0 -215
  426. package/transpiled/mongodb/lib/resource_management.js +0 -74
  427. package/transpiled/mongodb/lib/sdam/common.js +0 -53
  428. package/transpiled/mongodb/lib/sdam/events.js +0 -177
  429. package/transpiled/mongodb/lib/sdam/monitor.js +0 -656
  430. package/transpiled/mongodb/lib/sdam/server.js +0 -463
  431. package/transpiled/mongodb/lib/sdam/server_description.js +0 -196
  432. package/transpiled/mongodb/lib/sdam/server_selection.js +0 -283
  433. package/transpiled/mongodb/lib/sdam/server_selection_events.js +0 -112
  434. package/transpiled/mongodb/lib/sdam/srv_polling.js +0 -139
  435. package/transpiled/mongodb/lib/sdam/topology.js +0 -833
  436. package/transpiled/mongodb/lib/sdam/topology_description.js +0 -447
  437. package/transpiled/mongodb/lib/sessions.js +0 -988
  438. package/transpiled/mongodb/lib/sort.js +0 -123
  439. package/transpiled/mongodb/lib/timeout.js +0 -349
  440. package/transpiled/mongodb/lib/transactions.js +0 -149
  441. package/transpiled/mongodb/lib/utils.js +0 -1502
  442. package/transpiled/mongodb/lib/write_concern.js +0 -115
@@ -2,18 +2,18 @@
2
2
 
3
3
  require("source-map-support/register");
4
4
 
5
- /*
6
- * Copyright (C) 2015-2018 CloudBeat Limited
7
- *
8
- * This program is free software: you can redistribute it and/or modify
9
- * it under the terms of the GNU General Public License as published by
10
- * the Free Software Foundation, either version 3 of the License, or
11
- * (at your option) any later version.
5
+ /*
6
+ * Copyright (C) 2015-2018 CloudBeat Limited
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
12
  */
13
13
 
14
- /**
15
- * @name date
16
- * @description Provides methods for working with dates.
14
+ /**
15
+ * @name date
16
+ * @description Provides methods for working with dates.
17
17
  */
18
18
  module.exports = function () {
19
19
  module.isInitialized = function () {
@@ -21,25 +21,25 @@ module.exports = function () {
21
21
  };
22
22
 
23
23
  var moment = require('moment');
24
- /**
25
- * @summary Returns current date and time
26
- * @description See http://momentjs.com/docs/#/displaying/format/ for supported format strings.
27
- * @function now
28
- * @param {String} format - Format string.
29
- * @return {String} Date formatted according to the specified format string.
24
+ /**
25
+ * @summary Returns current date and time
26
+ * @description See http://momentjs.com/docs/#/displaying/format/ for supported format strings.
27
+ * @function now
28
+ * @param {String} format - Format string.
29
+ * @return {String} Date formatted according to the specified format string.
30
30
  */
31
31
 
32
32
 
33
33
  module.now = function (format) {
34
34
  return moment().format(format);
35
35
  };
36
- /**
37
- * @summary Returns a future or a past date
38
- * @function fromNow
39
- * @param {String} unit - Unit type. See http://momentjs.com/docs/#/manipulating/add/
40
- * @param {Number} value - Number of minutes/days/months/etc to add or subtract from the current date.
41
- * @param {String} format - Format string.
42
- * @return {String} Date formatted according to the specified format string.
36
+ /**
37
+ * @summary Returns a future or a past date
38
+ * @function fromNow
39
+ * @param {String} unit - Unit type. See http://momentjs.com/docs/#/manipulating/add/
40
+ * @param {Number} value - Number of minutes/days/months/etc to add or subtract from the current date.
41
+ * @param {String} format - Format string.
42
+ * @return {String} Date formatted according to the specified format string.
43
43
  */
44
44
 
45
45
 
@@ -53,4 +53,4 @@ module.exports = function () {
53
53
 
54
54
  return module;
55
55
  };
56
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1kYXRlLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJpc0luaXRpYWxpemVkIiwibW9tZW50IiwicmVxdWlyZSIsIm5vdyIsImZvcm1hdCIsImZyb21Ob3ciLCJ1bml0IiwidmFsdWUiLCJzdWJ0cmFjdCIsImFkZCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLFlBQVc7QUFDeEJELEVBQUFBLE1BQU0sQ0FBQ0UsYUFBUCxHQUF1QixZQUFXO0FBQzlCLFdBQU8sSUFBUDtBQUNILEdBRkQ7O0FBSUEsTUFBSUMsTUFBTSxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUFwQjtBQUVBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDSUosRUFBQUEsTUFBTSxDQUFDSyxHQUFQLEdBQWEsVUFBU0MsTUFBVCxFQUFpQjtBQUMxQixXQUFPSCxNQUFNLEdBQUdHLE1BQVQsQ0FBZ0JBLE1BQWhCLENBQVA7QUFDSCxHQUZEO0FBSUE7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0lOLEVBQUFBLE1BQU0sQ0FBQ08sT0FBUCxHQUFpQixVQUFTQyxJQUFULEVBQWVDLEtBQWYsRUFBc0JILE1BQXRCLEVBQThCO0FBQzNDLFFBQUlHLEtBQUssR0FBRyxDQUFaLEVBQWU7QUFDWCxhQUFPTixNQUFNLEdBQUdPLFFBQVQsQ0FBa0IsQ0FBQ0QsS0FBbkIsRUFBMEJELElBQTFCLEVBQWdDRixNQUFoQyxDQUF1Q0EsTUFBdkMsQ0FBUDtBQUNILEtBRkQsTUFFTztBQUNILGFBQU9ILE1BQU0sR0FBR1EsR0FBVCxDQUFhRixLQUFiLEVBQW9CRCxJQUFwQixFQUEwQkYsTUFBMUIsQ0FBaUNBLE1BQWpDLENBQVA7QUFDSDtBQUNKLEdBTkQ7O0FBUUEsU0FBT04sTUFBUDtBQUNILENBbkNEIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IENsb3VkQmVhdCBMaW1pdGVkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIGRhdGVcbiAqIEBkZXNjcmlwdGlvbiBQcm92aWRlcyBtZXRob2RzIGZvciB3b3JraW5nIHdpdGggZGF0ZXMuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gICAgbW9kdWxlLmlzSW5pdGlhbGl6ZWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcblxuICAgIHZhciBtb21lbnQgPSByZXF1aXJlKCdtb21lbnQnKTtcblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IFJldHVybnMgY3VycmVudCBkYXRlIGFuZCB0aW1lXG4gICAgICogQGRlc2NyaXB0aW9uIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2RvY3MvIy9kaXNwbGF5aW5nL2Zvcm1hdC8gZm9yIHN1cHBvcnRlZCBmb3JtYXQgc3RyaW5ncy5cbiAgICAgKiBAZnVuY3Rpb24gbm93XG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdCAtIEZvcm1hdCBzdHJpbmcuXG4gICAgICogQHJldHVybiB7U3RyaW5nfSBEYXRlIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5nLlxuICAgICAqL1xuICAgIG1vZHVsZS5ub3cgPSBmdW5jdGlvbihmb3JtYXQpIHtcbiAgICAgICAgcmV0dXJuIG1vbWVudCgpLmZvcm1hdChmb3JtYXQpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBSZXR1cm5zIGEgZnV0dXJlIG9yIGEgcGFzdCBkYXRlXG4gICAgICogQGZ1bmN0aW9uIGZyb21Ob3dcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdW5pdCAtIFVuaXQgdHlwZS4gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZG9jcy8jL21hbmlwdWxhdGluZy9hZGQvXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHZhbHVlIC0gTnVtYmVyIG9mIG1pbnV0ZXMvZGF5cy9tb250aHMvZXRjIHRvIGFkZCBvciBzdWJ0cmFjdCBmcm9tIHRoZSBjdXJyZW50IGRhdGUuXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdCAtIEZvcm1hdCBzdHJpbmcuXG4gICAgICogQHJldHVybiB7U3RyaW5nfSBEYXRlIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5nLlxuICAgICAqL1xuICAgIG1vZHVsZS5mcm9tTm93ID0gZnVuY3Rpb24odW5pdCwgdmFsdWUsIGZvcm1hdCkge1xuICAgICAgICBpZiAodmFsdWUgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbW9tZW50KCkuc3VidHJhY3QoLXZhbHVlLCB1bml0KS5mb3JtYXQoZm9ybWF0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBtb21lbnQoKS5hZGQodmFsdWUsIHVuaXQpLmZvcm1hdChmb3JtYXQpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBtb2R1bGU7XG59O1xuIl19
56
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1kYXRlLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJpc0luaXRpYWxpemVkIiwibW9tZW50IiwicmVxdWlyZSIsIm5vdyIsImZvcm1hdCIsImZyb21Ob3ciLCJ1bml0IiwidmFsdWUiLCJzdWJ0cmFjdCIsImFkZCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLFlBQVc7QUFDeEJELEVBQUFBLE1BQU0sQ0FBQ0UsYUFBUCxHQUF1QixZQUFXO0FBQzlCLFdBQU8sSUFBUDtBQUNILEdBRkQ7O0FBSUEsTUFBSUMsTUFBTSxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUFwQjtBQUVBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDSUosRUFBQUEsTUFBTSxDQUFDSyxHQUFQLEdBQWEsVUFBU0MsTUFBVCxFQUFpQjtBQUMxQixXQUFPSCxNQUFNLEdBQUdHLE1BQVQsQ0FBZ0JBLE1BQWhCLENBQVA7QUFDSCxHQUZEO0FBSUE7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0lOLEVBQUFBLE1BQU0sQ0FBQ08sT0FBUCxHQUFpQixVQUFTQyxJQUFULEVBQWVDLEtBQWYsRUFBc0JILE1BQXRCLEVBQThCO0FBQzNDLFFBQUlHLEtBQUssR0FBRyxDQUFaLEVBQWU7QUFDWCxhQUFPTixNQUFNLEdBQUdPLFFBQVQsQ0FBa0IsQ0FBQ0QsS0FBbkIsRUFBMEJELElBQTFCLEVBQWdDRixNQUFoQyxDQUF1Q0EsTUFBdkMsQ0FBUDtBQUNILEtBRkQsTUFFTztBQUNILGFBQU9ILE1BQU0sR0FBR1EsR0FBVCxDQUFhRixLQUFiLEVBQW9CRCxJQUFwQixFQUEwQkYsTUFBMUIsQ0FBaUNBLE1BQWpDLENBQVA7QUFDSDtBQUNKLEdBTkQ7O0FBUUEsU0FBT04sTUFBUDtBQUNILENBbkNEIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKipcclxuICogQG5hbWUgZGF0ZVxyXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIGRhdGVzLlxyXG4gKi9cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcclxuICAgIG1vZHVsZS5pc0luaXRpYWxpemVkID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG5cclxuICAgIHZhciBtb21lbnQgPSByZXF1aXJlKCdtb21lbnQnKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFJldHVybnMgY3VycmVudCBkYXRlIGFuZCB0aW1lXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZG9jcy8jL2Rpc3BsYXlpbmcvZm9ybWF0LyBmb3Igc3VwcG9ydGVkIGZvcm1hdCBzdHJpbmdzLlxyXG4gICAgICogQGZ1bmN0aW9uIG5vd1xyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdCAtIEZvcm1hdCBzdHJpbmcuXHJcbiAgICAgKiBAcmV0dXJuIHtTdHJpbmd9IERhdGUgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5ub3cgPSBmdW5jdGlvbihmb3JtYXQpIHtcclxuICAgICAgICByZXR1cm4gbW9tZW50KCkuZm9ybWF0KGZvcm1hdCk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgUmV0dXJucyBhIGZ1dHVyZSBvciBhIHBhc3QgZGF0ZVxyXG4gICAgICogQGZ1bmN0aW9uIGZyb21Ob3dcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB1bml0IC0gVW5pdCB0eXBlLiBTZWUgaHR0cDovL21vbWVudGpzLmNvbS9kb2NzLyMvbWFuaXB1bGF0aW5nL2FkZC9cclxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSB2YWx1ZSAtIE51bWJlciBvZiBtaW51dGVzL2RheXMvbW9udGhzL2V0YyB0byBhZGQgb3Igc3VidHJhY3QgZnJvbSB0aGUgY3VycmVudCBkYXRlLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdCAtIEZvcm1hdCBzdHJpbmcuXHJcbiAgICAgKiBAcmV0dXJuIHtTdHJpbmd9IERhdGUgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5mcm9tTm93ID0gZnVuY3Rpb24odW5pdCwgdmFsdWUsIGZvcm1hdCkge1xyXG4gICAgICAgIGlmICh2YWx1ZSA8IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1vbWVudCgpLnN1YnRyYWN0KC12YWx1ZSwgdW5pdCkuZm9ybWF0KGZvcm1hdCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1vbWVudCgpLmFkZCh2YWx1ZSwgdW5pdCkuZm9ybWF0KGZvcm1hdCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59O1xyXG4iXX0=
@@ -6,22 +6,22 @@ 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 db
20
- * @description Provides methods for working with Data Bases through ODBC.
21
- * @note Before using this module, make sure to install `unixodbc`:
22
- * * Windows - Install `Windows SDK`
23
- * * OS X - `brew install unixodbc`
24
- * * Linux - `sudo apt-get install unixodbc unixodbc-dev` or `sudo dnf install unixODBC unixODBC-devel`
18
+ /**
19
+ * @name db
20
+ * @description Provides methods for working with Data Bases through ODBC.
21
+ * @note Before using this module, make sure to install `unixodbc`:
22
+ * * Windows - Install `Windows SDK`
23
+ * * OS X - `brew install unixodbc`
24
+ * * Linux - `sudo apt-get install unixodbc unixodbc-dev` or `sudo dnf install unixODBC unixODBC-devel`
25
25
  */
26
26
  var connection;
27
27
 
@@ -56,29 +56,29 @@ module.exports = function () {
56
56
  throw new _OxygenError.default(errHelper.errorCode.DB_CONNECTION_ERROR, errHelper.getDbErrorMessage(e));
57
57
  }
58
58
  };
59
- /**
60
- * @summary Sets DB connection string to be used by other methods.
61
- * @description This method doesn't actually open the connection as it's opened/closed
62
- * automatically by query methods.
63
- * Example connection strings:
64
- * - `Driver={MySQL ODBC 9.0 Unicode Driver};Server=localhost;Database=myDatabase;
65
- * User=myUsername;Password=myPassword;Option=3;`
66
- * - `Driver={Oracle in instantclient_11_2};dbq=127.0.0.1:1521/XE;uid=myUsername;
67
- * pwd=myPassword;`
68
- * @function setConnectionString
69
- * @param {String} connString - ODBC connection string.
59
+ /**
60
+ * @summary Sets DB connection string to be used by other methods.
61
+ * @description This method doesn't actually open the connection as it's opened/closed
62
+ * automatically by query methods.
63
+ * Example connection strings:
64
+ * - `Driver={MySQL ODBC 9.0 Unicode Driver};Server=localhost;Database=myDatabase;
65
+ * User=myUsername;Password=myPassword;Option=3;`
66
+ * - `Driver={Oracle in instantclient_11_2};dbq=127.0.0.1:1521/XE;uid=myUsername;
67
+ * pwd=myPassword;`
68
+ * @function setConnectionString
69
+ * @param {String} connString - ODBC connection string.
70
70
  */
71
71
 
72
72
 
73
73
  module.setConnectionString = function (connString) {
74
74
  module.connString = connString;
75
75
  };
76
- /**
77
- * @summary Executes SQL query and returns the first column of the first row in the result set.
78
- * @function getScalar
79
- * @param {String} query - The query to execute.
80
- * @return {Object} The first column of the first row in the result set, or null if the result
81
- * set is empty.
76
+ /**
77
+ * @summary Executes SQL query and returns the first column of the first row in the result set.
78
+ * @function getScalar
79
+ * @param {String} query - The query to execute.
80
+ * @return {Object} The first column of the first row in the result set, or null if the result
81
+ * set is empty.
82
82
  */
83
83
 
84
84
 
@@ -101,11 +101,11 @@ module.exports = function () {
101
101
  await connection.close();
102
102
  }
103
103
  };
104
- /**
105
- * @summary Executes SQL query and returns the result set.
106
- * @function executeQuery
107
- * @param {String} query - The query to execute.
108
- * @return {Object} The result set.
104
+ /**
105
+ * @summary Executes SQL query and returns the result set.
106
+ * @function executeQuery
107
+ * @param {String} query - The query to execute.
108
+ * @return {Object} The result set.
109
109
  */
110
110
 
111
111
 
@@ -121,11 +121,11 @@ module.exports = function () {
121
121
  await connection.close();
122
122
  }
123
123
  };
124
- /**
125
- * @summary Executes SQL statement.
126
- * @description Any results from the query are discarded.
127
- * @function executeNonQuery
128
- * @param {String} query - The query to execute.
124
+ /**
125
+ * @summary Executes SQL statement.
126
+ * @description Any results from the query are discarded.
127
+ * @function executeNonQuery
128
+ * @param {String} query - The query to execute.
129
129
  */
130
130
 
131
131
 
@@ -140,16 +140,16 @@ module.exports = function () {
140
140
  await connection.close();
141
141
  }
142
142
  };
143
- /**
144
- * @summary Calls a stored procedure.
145
- * @function callProcedure
146
- * @param {String} name - Name of the procedure to call.
147
- * @param {...Object} args - Procedure arguments. If procedure produces output parameters then these need to be specified using `undefined`.
148
- * @return {Object} Procedure output if any.
149
- * @example <caption>[javascript] Usage example</caption>
150
- * // calls a procedure which expects two input parameters and one output parameter.
151
- * var result = db.callProcedure('test', 3, 4, undefined);
152
- * log.info(result);
143
+ /**
144
+ * @summary Calls a stored procedure.
145
+ * @function callProcedure
146
+ * @param {String} name - Name of the procedure to call.
147
+ * @param {...Object} args - Procedure arguments. If procedure produces output parameters then these need to be specified using `undefined`.
148
+ * @return {Object} Procedure output if any.
149
+ * @example <caption>[javascript] Usage example</caption>
150
+ * // calls a procedure which expects two input parameters and one output parameter.
151
+ * var result = db.callProcedure('test', 3, 4, undefined);
152
+ * log.info(result);
153
153
  */
154
154
 
155
155
 
@@ -168,4 +168,4 @@ module.exports = function () {
168
168
 
169
169
  return module;
170
170
  };
171
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1kYi5qcyJdLCJuYW1lcyI6WyJjb25uZWN0aW9uIiwiZXJySGVscGVyIiwicmVxdWlyZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJpc0luaXRpYWxpemVkIiwiX29wZW5EYkNvbm4iLCJjb25uU3RyaW5nIiwiT3hFcnJvciIsImVycm9yQ29kZSIsIkRCX0NPTk5FQ1RJT05fRVJST1IiLCJkYiIsImUiLCJNb2R1bGVVbmF2YWlsYWJsZUVycm9yIiwibWVzc2FnZSIsImNvbm5lY3QiLCJnZXREYkVycm9yTWVzc2FnZSIsInNldENvbm5lY3Rpb25TdHJpbmciLCJnZXRTY2FsYXIiLCJxdWVyeSIsInJlc3VsdFNldCIsImxlbmd0aCIsImZpcnN0Um93IiwiZmlyc3RDb2wiLCJPYmplY3QiLCJrZXlzIiwiREJfUVVFUllfRVJST1IiLCJjbG9zZSIsImV4ZWN1dGVRdWVyeSIsInF1ZXJ5U3luY1JldHZhbCIsImV4ZWN1dGVOb25RdWVyeSIsImNhbGxQcm9jZWR1cmUiLCJuYW1lIiwiYXJncyJdLCJtYXBwaW5ncyI6Ijs7OztBQW9CQTs7OztBQXBCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxJQUFJQSxVQUFKOztBQUdBLElBQUlDLFNBQVMsR0FBR0MsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUIsWUFBVztBQUN4QjtBQUNBRCxFQUFBQSxNQUFNLENBQUNFLGFBQVAsR0FBdUIsWUFBVztBQUM5QixXQUFPLElBQVA7QUFDSCxHQUZEOztBQUlBRixFQUFBQSxNQUFNLENBQUNHLFdBQVAsR0FBcUIsa0JBQWlCO0FBQ2xDLFFBQUksQ0FBQyxLQUFLQyxVQUFWLEVBQXNCO0FBQ2xCLFlBQU0sSUFBSUMsb0JBQUosQ0FBWVAsU0FBUyxDQUFDUSxTQUFWLENBQW9CQyxtQkFBaEMsRUFBcUQsK0RBQXJELENBQU47QUFDSDs7QUFFRCxRQUFJO0FBQ0E7QUFDQSxVQUFJQyxFQUFKOztBQUNBLFVBQUk7QUFDQUEsUUFBQUEsRUFBRSxHQUFHVCxPQUFPLENBQUMsTUFBRCxDQUFaO0FBQ0gsT0FGRCxDQUVFLE9BQU9VLENBQVAsRUFBVTtBQUNSO0FBQ0EsY0FBTUMsc0JBQXNCLEdBQUdYLE9BQU8sQ0FBQyxrQ0FBRCxDQUF0Qzs7QUFDQSxjQUFNLElBQUlXLHNCQUFKLENBQTJCLCtCQUE2QkQsQ0FBQyxDQUFDRSxPQUExRCxDQUFOO0FBQ0g7O0FBRURkLE1BQUFBLFVBQVUsR0FBRyxNQUFNVyxFQUFFLENBQUNJLE9BQUgsQ0FBVyxLQUFLUixVQUFoQixDQUFuQjtBQUNILEtBWkQsQ0FZRSxPQUFPSyxDQUFQLEVBQVU7QUFDUixZQUFNLElBQUlKLG9CQUFKLENBQVlQLFNBQVMsQ0FBQ1EsU0FBVixDQUFvQkMsbUJBQWhDLEVBQXFEVCxTQUFTLENBQUNlLGlCQUFWLENBQTRCSixDQUE1QixDQUFyRCxDQUFOO0FBQ0g7QUFDSixHQXBCRDtBQXNCQTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNJVCxFQUFBQSxNQUFNLENBQUNjLG1CQUFQLEdBQTZCLFVBQVNWLFVBQVQsRUFBcUI7QUFDOUNKLElBQUFBLE1BQU0sQ0FBQ0ksVUFBUCxHQUFvQkEsVUFBcEI7QUFDSCxHQUZEO0FBSUE7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNJSixFQUFBQSxNQUFNLENBQUNlLFNBQVAsR0FBbUIsZ0JBQWVDLEtBQWYsRUFBc0I7QUFDckMsVUFBTWhCLE1BQU0sQ0FBQ0csV0FBUCxFQUFOOztBQUNBLFFBQUk7QUFDQSxVQUFJYyxTQUFTLEdBQUcsTUFBTXBCLFVBQVUsQ0FBQ21CLEtBQVgsQ0FBaUJBLEtBQWpCLENBQXRCOztBQUNBLFVBQUlDLFNBQVMsQ0FBQ0MsTUFBVixLQUFxQixDQUF6QixFQUE0QjtBQUN4QixlQUFPLElBQVA7QUFDSDs7QUFDRCxVQUFJQyxRQUFRLEdBQUdGLFNBQVMsQ0FBQyxDQUFELENBQXhCO0FBQ0EsVUFBSUcsUUFBUSxHQUFHRCxRQUFRLENBQUNFLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZSCxRQUFaLEVBQXNCLENBQXRCLENBQUQsQ0FBdkI7QUFDQSxhQUFPQyxRQUFQO0FBQ0gsS0FSRCxDQVFFLE9BQU9YLENBQVAsRUFBVTtBQUNSLFlBQU0sSUFBSUosb0JBQUosQ0FBWVAsU0FBUyxDQUFDUSxTQUFWLENBQW9CaUIsY0FBaEMsRUFBZ0R6QixTQUFTLENBQUNlLGlCQUFWLENBQTRCSixDQUE1QixDQUFoRCxDQUFOO0FBQ0gsS0FWRCxTQVVVO0FBQ04sWUFBTVosVUFBVSxDQUFDMkIsS0FBWCxFQUFOO0FBQ0g7QUFDSixHQWZEO0FBaUJBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0l4QixFQUFBQSxNQUFNLENBQUN5QixZQUFQLEdBQXNCLGdCQUFlVCxLQUFmLEVBQXNCO0FBQ3hDLFVBQU1oQixNQUFNLENBQUNHLFdBQVAsRUFBTjs7QUFDQSxRQUFJO0FBQ0EsWUFBTXVCLGVBQWUsR0FBRyxNQUFNN0IsVUFBVSxDQUFDbUIsS0FBWCxDQUFpQkEsS0FBakIsQ0FBOUI7QUFDQSxhQUFPVSxlQUFQO0FBQ0gsS0FIRCxDQUdFLE9BQU9qQixDQUFQLEVBQVU7QUFDUixZQUFNLElBQUlKLG9CQUFKLENBQVlQLFNBQVMsQ0FBQ1EsU0FBVixDQUFvQmlCLGNBQWhDLEVBQWdEekIsU0FBUyxDQUFDZSxpQkFBVixDQUE0QkosQ0FBNUIsQ0FBaEQsQ0FBTjtBQUNILEtBTEQsU0FLVTtBQUNOLFlBQU1aLFVBQVUsQ0FBQzJCLEtBQVgsRUFBTjtBQUNIO0FBQ0osR0FWRDtBQVlBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0l4QixFQUFBQSxNQUFNLENBQUMyQixlQUFQLEdBQXlCLGdCQUFlWCxLQUFmLEVBQXNCO0FBQzNDLFVBQU1oQixNQUFNLENBQUNHLFdBQVAsRUFBTjs7QUFDQSxRQUFJO0FBQ0EsWUFBTU4sVUFBVSxDQUFDbUIsS0FBWCxDQUFpQkEsS0FBakIsQ0FBTjtBQUNILEtBRkQsQ0FFRSxPQUFPUCxDQUFQLEVBQVU7QUFDUixZQUFNLElBQUlKLG9CQUFKLENBQVlQLFNBQVMsQ0FBQ1EsU0FBVixDQUFvQmlCLGNBQWhDLEVBQWdEekIsU0FBUyxDQUFDZSxpQkFBVixDQUE0QkosQ0FBNUIsQ0FBaEQsQ0FBTjtBQUNILEtBSkQsU0FJVTtBQUNOLFlBQU1aLFVBQVUsQ0FBQzJCLEtBQVgsRUFBTjtBQUNIO0FBQ0osR0FURDtBQVdBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNJeEIsRUFBQUEsTUFBTSxDQUFDNEIsYUFBUCxHQUF1QixnQkFBZUMsSUFBZixFQUFxQixHQUFHQyxJQUF4QixFQUE4QjtBQUNqRCxVQUFNOUIsTUFBTSxDQUFDRyxXQUFQLEVBQU47O0FBRUEsUUFBSTtBQUNBLFlBQU11QixlQUFlLEdBQUcsTUFBTTdCLFVBQVUsQ0FBQytCLGFBQVgsQ0FBeUIsSUFBekIsRUFBK0IsSUFBL0IsRUFBcUNDLElBQXJDLEVBQTJDLENBQUMsR0FBR0MsSUFBSixDQUEzQyxDQUE5QjtBQUNBLGFBQU9KLGVBQVA7QUFDSCxLQUhELENBR0UsT0FBT2pCLENBQVAsRUFBVTtBQUNSLFlBQU0sSUFBSUosb0JBQUosQ0FBWVAsU0FBUyxDQUFDUSxTQUFWLENBQW9CaUIsY0FBaEMsRUFBZ0R6QixTQUFTLENBQUNlLGlCQUFWLENBQTRCSixDQUE1QixDQUFoRCxDQUFOO0FBQ0gsS0FMRCxTQUtVO0FBQ04sWUFBTVosVUFBVSxDQUFDMkIsS0FBWCxFQUFOO0FBQ0g7QUFDSixHQVhEOztBQWFBLFNBQU94QixNQUFQO0FBQ0gsQ0FoSUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICovXG5cbi8qKlxuICogQG5hbWUgZGJcbiAqIEBkZXNjcmlwdGlvbiBQcm92aWRlcyBtZXRob2RzIGZvciB3b3JraW5nIHdpdGggRGF0YSBCYXNlcyB0aHJvdWdoIE9EQkMuXG4gKiBAbm90ZSBCZWZvcmUgdXNpbmcgdGhpcyBtb2R1bGUsIG1ha2Ugc3VyZSB0byBpbnN0YWxsIGB1bml4b2RiY2A6ICBcbiAqICAgKiBXaW5kb3dzIC0gSW5zdGFsbCBgV2luZG93cyBTREtgICBcbiAqICAgKiBPUyBYIC0gIGBicmV3IGluc3RhbGwgdW5peG9kYmNgICBcbiAqICAgKiBMaW51eCAtIGBzdWRvIGFwdC1nZXQgaW5zdGFsbCB1bml4b2RiYyB1bml4b2RiYy1kZXZgIG9yIGBzdWRvIGRuZiBpbnN0YWxsIHVuaXhPREJDIHVuaXhPREJDLWRldmVsYFxuICovXG5cbnZhciBjb25uZWN0aW9uO1xuXG5pbXBvcnQgT3hFcnJvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xudmFyIGVyckhlbHBlciA9IHJlcXVpcmUoJy4uL2Vycm9ycy9oZWxwZXInKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgICAvLyBGSVhNRTogY2hhbmdlIHNldENvbm5lY3Rpb25TdHJpbmcgdG8gaW5pdCBhbmQgYWRkIGhhZG5saW5nIGluIGhlcmVcbiAgICBtb2R1bGUuaXNJbml0aWFsaXplZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuXG4gICAgbW9kdWxlLl9vcGVuRGJDb25uID0gYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICghdGhpcy5jb25uU3RyaW5nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkRCX0NPTk5FQ1RJT05fRVJST1IsICdObyBjb25uZWN0aW9uIHN0cmluZyBzcGVjaWZpZWQuIFVzZSBkYi5zZXRDb25uZWN0aW9uU3RyaW5nKCkuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gaWdub3JlIHRoaXMgbW9kdWxlIGlmIG9kYmMgd2Fzbid0IGluc3RhbGxlZFxuICAgICAgICAgICAgdmFyIGRiO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBkYiA9IHJlcXVpcmUoJ29kYmMnKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBjb3VsZCBoYXBwZW4gb25seSBvbiB1bml4IGR1ZSB0byBtaXNzaW5nIHVuaXhvZGJjIGJpbmFyaWVzXG4gICAgICAgICAgICAgICAgY29uc3QgTW9kdWxlVW5hdmFpbGFibGVFcnJvciA9IHJlcXVpcmUoJy4uL2Vycm9ycy9Nb2R1bGVVbmF2YWlsYWJsZUVycm9yJyk7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE1vZHVsZVVuYXZhaWxhYmxlRXJyb3IoJ1VuYWJsZSB0byBsb2FkIERCIG1vZHVsZS4gJytlLm1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25uZWN0aW9uID0gYXdhaXQgZGIuY29ubmVjdCh0aGlzLmNvbm5TdHJpbmcpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkRCX0NPTk5FQ1RJT05fRVJST1IsIGVyckhlbHBlci5nZXREYkVycm9yTWVzc2FnZShlKSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgKiBAc3VtbWFyeSBTZXRzIERCIGNvbm5lY3Rpb24gc3RyaW5nIHRvIGJlIHVzZWQgYnkgb3RoZXIgbWV0aG9kcy5cbiAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1ldGhvZCBkb2Vzbid0IGFjdHVhbGx5IG9wZW4gdGhlIGNvbm5lY3Rpb24gYXMgaXQncyBvcGVuZWQvY2xvc2VkXG4gICAgKiAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBieSBxdWVyeSBtZXRob2RzLiAgXG4gICAgKiAgICAgICAgICAgICAgRXhhbXBsZSBjb25uZWN0aW9uIHN0cmluZ3M6ICBcbiAgICAqICAgICAgICAgICAgICAtIGBEcml2ZXI9e015U1FMIE9EQkMgOS4wIFVuaWNvZGUgRHJpdmVyfTtTZXJ2ZXI9bG9jYWxob3N0O0RhdGFiYXNlPW15RGF0YWJhc2U7XG4gICAgKiAgICAgICAgICAgICAgICBVc2VyPW15VXNlcm5hbWU7UGFzc3dvcmQ9bXlQYXNzd29yZDtPcHRpb249MztgICBcbiAgICAqICAgICAgICAgICAgICAtIGBEcml2ZXI9e09yYWNsZSBpbiBpbnN0YW50Y2xpZW50XzExXzJ9O2RicT0xMjcuMC4wLjE6MTUyMS9YRTt1aWQ9bXlVc2VybmFtZTtcbiAgICAqICAgICAgICAgICAgICAgIHB3ZD1teVBhc3N3b3JkO2BcbiAgICAqIEBmdW5jdGlvbiBzZXRDb25uZWN0aW9uU3RyaW5nXG4gICAgKiBAcGFyYW0ge1N0cmluZ30gY29ublN0cmluZyAtIE9EQkMgY29ubmVjdGlvbiBzdHJpbmcuXG4gICAgKi9cbiAgICBtb2R1bGUuc2V0Q29ubmVjdGlvblN0cmluZyA9IGZ1bmN0aW9uKGNvbm5TdHJpbmcpIHtcbiAgICAgICAgbW9kdWxlLmNvbm5TdHJpbmcgPSBjb25uU3RyaW5nO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBFeGVjdXRlcyBTUUwgcXVlcnkgYW5kIHJldHVybnMgdGhlIGZpcnN0IGNvbHVtbiBvZiB0aGUgZmlyc3Qgcm93IGluIHRoZSByZXN1bHQgc2V0LlxuICAgICAqIEBmdW5jdGlvbiBnZXRTY2FsYXJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gcXVlcnkgLSBUaGUgcXVlcnkgdG8gZXhlY3V0ZS5cbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFRoZSBmaXJzdCBjb2x1bW4gb2YgdGhlIGZpcnN0IHJvdyBpbiB0aGUgcmVzdWx0IHNldCwgb3IgbnVsbCBpZiB0aGUgcmVzdWx0XG4gICAgICogICAgICAgICAgICAgICAgICBzZXQgaXMgZW1wdHkuXG4gICAgICovXG4gICAgbW9kdWxlLmdldFNjYWxhciA9IGFzeW5jIGZ1bmN0aW9uKHF1ZXJ5KSB7XG4gICAgICAgIGF3YWl0IG1vZHVsZS5fb3BlbkRiQ29ubigpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdFNldCA9IGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkocXVlcnkpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdFNldC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBmaXJzdFJvdyA9IHJlc3VsdFNldFswXTtcbiAgICAgICAgICAgIHZhciBmaXJzdENvbCA9IGZpcnN0Um93W09iamVjdC5rZXlzKGZpcnN0Um93KVswXV07XG4gICAgICAgICAgICByZXR1cm4gZmlyc3RDb2w7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuREJfUVVFUllfRVJST1IsIGVyckhlbHBlci5nZXREYkVycm9yTWVzc2FnZShlKSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgRXhlY3V0ZXMgU1FMIHF1ZXJ5IGFuZCByZXR1cm5zIHRoZSByZXN1bHQgc2V0LlxuICAgICAqIEBmdW5jdGlvbiBleGVjdXRlUXVlcnlcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gcXVlcnkgLSBUaGUgcXVlcnkgdG8gZXhlY3V0ZS5cbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFRoZSByZXN1bHQgc2V0LlxuICAgICAqL1xuICAgIG1vZHVsZS5leGVjdXRlUXVlcnkgPSBhc3luYyBmdW5jdGlvbihxdWVyeSkge1xuICAgICAgICBhd2FpdCBtb2R1bGUuX29wZW5EYkNvbm4oKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5U3luY1JldHZhbCA9IGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkocXVlcnkpO1xuICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5U3luY1JldHZhbDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9RVUVSWV9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBFeGVjdXRlcyBTUUwgc3RhdGVtZW50LlxuICAgICAqIEBkZXNjcmlwdGlvbiBBbnkgcmVzdWx0cyBmcm9tIHRoZSBxdWVyeSBhcmUgZGlzY2FyZGVkLlxuICAgICAqIEBmdW5jdGlvbiBleGVjdXRlTm9uUXVlcnlcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gcXVlcnkgLSBUaGUgcXVlcnkgdG8gZXhlY3V0ZS5cbiAgICAgKi9cbiAgICBtb2R1bGUuZXhlY3V0ZU5vblF1ZXJ5ID0gYXN5bmMgZnVuY3Rpb24ocXVlcnkpIHtcbiAgICAgICAgYXdhaXQgbW9kdWxlLl9vcGVuRGJDb25uKCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KHF1ZXJ5KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9RVUVSWV9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBDYWxscyBhIHN0b3JlZCBwcm9jZWR1cmUuXG4gICAgICogQGZ1bmN0aW9uIGNhbGxQcm9jZWR1cmVcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIE5hbWUgb2YgdGhlIHByb2NlZHVyZSB0byBjYWxsLlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBhcmdzIC0gUHJvY2VkdXJlIGFyZ3VtZW50cy4gSWYgcHJvY2VkdXJlIHByb2R1Y2VzIG91dHB1dCBwYXJhbWV0ZXJzIHRoZW4gdGhlc2UgbmVlZCB0byBiZSBzcGVjaWZpZWQgdXNpbmcgYHVuZGVmaW5lZGAuXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBQcm9jZWR1cmUgb3V0cHV0IGlmIGFueS5cbiAgICAgKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cbiAgICAgKiAvLyBjYWxscyBhIHByb2NlZHVyZSB3aGljaCBleHBlY3RzIHR3byBpbnB1dCBwYXJhbWV0ZXJzIGFuZCBvbmUgb3V0cHV0IHBhcmFtZXRlci5cbiAgICAgKiB2YXIgcmVzdWx0ID0gZGIuY2FsbFByb2NlZHVyZSgndGVzdCcsIDMsIDQsIHVuZGVmaW5lZCk7XG4gICAgICogbG9nLmluZm8ocmVzdWx0KTtcbiAgICAgKi9cbiAgICBtb2R1bGUuY2FsbFByb2NlZHVyZSA9IGFzeW5jIGZ1bmN0aW9uKG5hbWUsIC4uLmFyZ3MpIHtcbiAgICAgICAgYXdhaXQgbW9kdWxlLl9vcGVuRGJDb25uKCk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5U3luY1JldHZhbCA9IGF3YWl0IGNvbm5lY3Rpb24uY2FsbFByb2NlZHVyZShudWxsLCBudWxsLCBuYW1lLCBbLi4uYXJnc10pO1xuICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5U3luY1JldHZhbDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9RVUVSWV9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gbW9kdWxlO1xufTtcbiJdfQ==
171
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1kYi5qcyJdLCJuYW1lcyI6WyJjb25uZWN0aW9uIiwiZXJySGVscGVyIiwicmVxdWlyZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJpc0luaXRpYWxpemVkIiwiX29wZW5EYkNvbm4iLCJjb25uU3RyaW5nIiwiT3hFcnJvciIsImVycm9yQ29kZSIsIkRCX0NPTk5FQ1RJT05fRVJST1IiLCJkYiIsImUiLCJNb2R1bGVVbmF2YWlsYWJsZUVycm9yIiwibWVzc2FnZSIsImNvbm5lY3QiLCJnZXREYkVycm9yTWVzc2FnZSIsInNldENvbm5lY3Rpb25TdHJpbmciLCJnZXRTY2FsYXIiLCJxdWVyeSIsInJlc3VsdFNldCIsImxlbmd0aCIsImZpcnN0Um93IiwiZmlyc3RDb2wiLCJPYmplY3QiLCJrZXlzIiwiREJfUVVFUllfRVJST1IiLCJjbG9zZSIsImV4ZWN1dGVRdWVyeSIsInF1ZXJ5U3luY1JldHZhbCIsImV4ZWN1dGVOb25RdWVyeSIsImNhbGxQcm9jZWR1cmUiLCJuYW1lIiwiYXJncyJdLCJtYXBwaW5ncyI6Ijs7OztBQW9CQTs7OztBQXBCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxJQUFJQSxVQUFKOztBQUdBLElBQUlDLFNBQVMsR0FBR0MsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUIsWUFBVztBQUN4QjtBQUNBRCxFQUFBQSxNQUFNLENBQUNFLGFBQVAsR0FBdUIsWUFBVztBQUM5QixXQUFPLElBQVA7QUFDSCxHQUZEOztBQUlBRixFQUFBQSxNQUFNLENBQUNHLFdBQVAsR0FBcUIsa0JBQWlCO0FBQ2xDLFFBQUksQ0FBQyxLQUFLQyxVQUFWLEVBQXNCO0FBQ2xCLFlBQU0sSUFBSUMsb0JBQUosQ0FBWVAsU0FBUyxDQUFDUSxTQUFWLENBQW9CQyxtQkFBaEMs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Q0EsWUFBTU4sVUFBVSxDQUFDbUIsS0FBWCxDQUFpQkEsS0FBakIsQ0FBTjtBQUNILEtBRkQsQ0FFRSxPQUFPUCxDQUFQLEVBQVU7QUFDUixZQUFNLElBQUlKLG9CQUFKLENBQVlQLFNBQVMsQ0FBQ1EsU0FBVixDQUFvQmlCLGNBQWhDLEVBQWdEekIsU0FBUyxDQUFDZSxpQkFBVixDQUE0QkosQ0FBNUIsQ0FBaEQsQ0FBTjtBQUNILEtBSkQsU0FJVTtBQUNOLFlBQU1aLFVBQVUsQ0FBQzJCLEtBQVgsRUFBTjtBQUNIO0FBQ0osR0FURDtBQVdBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNJeEIsRUFBQUEsTUFBTSxDQUFDNEIsYUFBUCxHQUF1QixnQkFBZUMsSUFBZixFQUFxQixHQUFHQyxJQUF4QixFQUE4QjtBQUNqRCxVQUFNOUIsTUFBTSxDQUFDRyxXQUFQLEVBQU47O0FBRUEsUUFBSTtBQUNBLFlBQU11QixlQUFlLEdBQUcsTUFBTTdCLFVBQVUsQ0FBQytCLGFBQVgsQ0FBeUIsSUFBekIsRUFBK0IsSUFBL0IsRUFBcUNDLElBQXJDLEVBQTJDLENBQUMsR0FBR0MsSUFBSixDQUEzQyxDQUE5QjtBQUNBLGFBQU9KLGVBQVA7QUFDSCxLQUhELENBR0UsT0FBT2pCLENBQVAsRUFBVTtBQUNSLFlBQU0sSUFBSUosb0JBQUosQ0FBWVAsU0FBUyxDQUFDUSxTQUFWLENBQW9CaUIsY0FBaEMsRUFBZ0R6QixTQUFTLENBQUNlLGlCQUFWLENBQTRCSixDQUE1QixDQUFoRCxDQUFOO0FBQ0gsS0FMRCxTQUtVO0FBQ04sWUFBTVosVUFBVSxDQUFDMkIsS0FBWCxFQUFOO0FBQ0g7QUFDSixHQVhEOztBQWFBLFNBQU94QixNQUFQO0FBQ0gsQ0FoSUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAbmFtZSBkYlxyXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIERhdGEgQmFzZXMgdGhyb3VnaCBPREJDLlxyXG4gKiBAbm90ZSBCZWZvcmUgdXNpbmcgdGhpcyBtb2R1bGUsIG1ha2Ugc3VyZSB0byBpbnN0YWxsIGB1bml4b2RiY2A6ICBcclxuICogICAqIFdpbmRvd3MgLSBJbnN0YWxsIGBXaW5kb3dzIFNES2AgIFxyXG4gKiAgICogT1MgWCAtICBgYnJldyBpbnN0YWxsIHVuaXhvZGJjYCAgXHJcbiAqICAgKiBMaW51eCAtIGBzdWRvIGFwdC1nZXQgaW5zdGFsbCB1bml4b2RiYyB1bml4b2RiYy1kZXZgIG9yIGBzdWRvIGRuZiBpbnN0YWxsIHVuaXhPREJDIHVuaXhPREJDLWRldmVsYFxyXG4gKi9cclxuXHJcbnZhciBjb25uZWN0aW9uO1xyXG5cclxuaW1wb3J0IE94RXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcclxudmFyIGVyckhlbHBlciA9IHJlcXVpcmUoJy4uL2Vycm9ycy9oZWxwZXInKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XHJcbiAgICAvLyBGSVhNRTogY2hhbmdlIHNldENvbm5lY3Rpb25TdHJpbmcgdG8gaW5pdCBhbmQgYWRkIGhhZG5saW5nIGluIGhlcmVcclxuICAgIG1vZHVsZS5pc0luaXRpYWxpemVkID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG5cclxuICAgIG1vZHVsZS5fb3BlbkRiQ29ubiA9IGFzeW5jIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jb25uU3RyaW5nKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuREJfQ09OTkVDVElPTl9FUlJPUiwgJ05vIGNvbm5lY3Rpb24gc3RyaW5nIHNwZWNpZmllZC4gVXNlIGRiLnNldENvbm5lY3Rpb25TdHJpbmcoKS4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIGlnbm9yZSB0aGlzIG1vZHVsZSBpZiBvZGJjIHdhc24ndCBpbnN0YWxsZWRcclxuICAgICAgICAgICAgdmFyIGRiO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgZGIgPSByZXF1aXJlKCdvZGJjJyk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvdWxkIGhhcHBlbiBvbmx5IG9uIHVuaXggZHVlIHRvIG1pc3NpbmcgdW5peG9kYmMgYmluYXJpZXNcclxuICAgICAgICAgICAgICAgIGNvbnN0IE1vZHVsZVVuYXZhaWxhYmxlRXJyb3IgPSByZXF1aXJlKCcuLi9lcnJvcnMvTW9kdWxlVW5hdmFpbGFibGVFcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE1vZHVsZVVuYXZhaWxhYmxlRXJyb3IoJ1VuYWJsZSB0byBsb2FkIERCIG1vZHVsZS4gJytlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25uZWN0aW9uID0gYXdhaXQgZGIuY29ubmVjdCh0aGlzLmNvbm5TdHJpbmcpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9DT05ORUNUSU9OX0VSUk9SLCBlcnJIZWxwZXIuZ2V0RGJFcnJvck1lc3NhZ2UoZSkpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEBzdW1tYXJ5IFNldHMgREIgY29ubmVjdGlvbiBzdHJpbmcgdG8gYmUgdXNlZCBieSBvdGhlciBtZXRob2RzLlxyXG4gICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZXRob2QgZG9lc24ndCBhY3R1YWxseSBvcGVuIHRoZSBjb25uZWN0aW9uIGFzIGl0J3Mgb3BlbmVkL2Nsb3NlZFxyXG4gICAgKiAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBieSBxdWVyeSBtZXRob2RzLiAgXHJcbiAgICAqICAgICAgICAgICAgICBFeGFtcGxlIGNvbm5lY3Rpb24gc3RyaW5nczogIFxyXG4gICAgKiAgICAgICAgICAgICAgLSBgRHJpdmVyPXtNeVNRTCBPREJDIDkuMCBVbmljb2RlIERyaXZlcn07U2VydmVyPWxvY2FsaG9zdDtEYXRhYmFzZT1teURhdGFiYXNlO1xyXG4gICAgKiAgICAgICAgICAgICAgICBVc2VyPW15VXNlcm5hbWU7UGFzc3dvcmQ9bXlQYXNzd29yZDtPcHRpb249MztgICBcclxuICAgICogICAgICAgICAgICAgIC0gYERyaXZlcj17T3JhY2xlIGluIGluc3RhbnRjbGllbnRfMTFfMn07ZGJxPTEyNy4wLjAuMToxNTIxL1hFO3VpZD1teVVzZXJuYW1lO1xyXG4gICAgKiAgICAgICAgICAgICAgICBwd2Q9bXlQYXNzd29yZDtgXHJcbiAgICAqIEBmdW5jdGlvbiBzZXRDb25uZWN0aW9uU3RyaW5nXHJcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSBjb25uU3RyaW5nIC0gT0RCQyBjb25uZWN0aW9uIHN0cmluZy5cclxuICAgICovXHJcbiAgICBtb2R1bGUuc2V0Q29ubmVjdGlvblN0cmluZyA9IGZ1bmN0aW9uKGNvbm5TdHJpbmcpIHtcclxuICAgICAgICBtb2R1bGUuY29ublN0cmluZyA9IGNvbm5TdHJpbmc7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgRXhlY3V0ZXMgU1FMIHF1ZXJ5IGFuZCByZXR1cm5zIHRoZSBmaXJzdCBjb2x1bW4gb2YgdGhlIGZpcnN0IHJvdyBpbiB0aGUgcmVzdWx0IHNldC5cclxuICAgICAqIEBmdW5jdGlvbiBnZXRTY2FsYXJcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBxdWVyeSAtIFRoZSBxdWVyeSB0byBleGVjdXRlLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgZmlyc3QgY29sdW1uIG9mIHRoZSBmaXJzdCByb3cgaW4gdGhlIHJlc3VsdCBzZXQsIG9yIG51bGwgaWYgdGhlIHJlc3VsdFxyXG4gICAgICogICAgICAgICAgICAgICAgICBzZXQgaXMgZW1wdHkuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5nZXRTY2FsYXIgPSBhc3luYyBmdW5jdGlvbihxdWVyeSkge1xyXG4gICAgICAgIGF3YWl0IG1vZHVsZS5fb3BlbkRiQ29ubigpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHRTZXQgPSBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KHF1ZXJ5KTtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdFNldC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciBmaXJzdFJvdyA9IHJlc3VsdFNldFswXTtcclxuICAgICAgICAgICAgdmFyIGZpcnN0Q29sID0gZmlyc3RSb3dbT2JqZWN0LmtleXMoZmlyc3RSb3cpWzBdXTtcclxuICAgICAgICAgICAgcmV0dXJuIGZpcnN0Q29sO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9RVUVSWV9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEV4ZWN1dGVzIFNRTCBxdWVyeSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IHNldC5cclxuICAgICAqIEBmdW5jdGlvbiBleGVjdXRlUXVlcnlcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBxdWVyeSAtIFRoZSBxdWVyeSB0byBleGVjdXRlLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0IHNldC5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmV4ZWN1dGVRdWVyeSA9IGFzeW5jIGZ1bmN0aW9uKHF1ZXJ5KSB7XHJcbiAgICAgICAgYXdhaXQgbW9kdWxlLl9vcGVuRGJDb25uKCk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgcXVlcnlTeW5jUmV0dmFsID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShxdWVyeSk7XHJcbiAgICAgICAgICAgIHJldHVybiBxdWVyeVN5bmNSZXR2YWw7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkRCX1FVRVJZX0VSUk9SLCBlcnJIZWxwZXIuZ2V0RGJFcnJvck1lc3NhZ2UoZSkpO1xyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24uY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgRXhlY3V0ZXMgU1FMIHN0YXRlbWVudC5cclxuICAgICAqIEBkZXNjcmlwdGlvbiBBbnkgcmVzdWx0cyBmcm9tIHRoZSBxdWVyeSBhcmUgZGlzY2FyZGVkLlxyXG4gICAgICogQGZ1bmN0aW9uIGV4ZWN1dGVOb25RdWVyeVxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHF1ZXJ5IC0gVGhlIHF1ZXJ5IHRvIGV4ZWN1dGUuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5leGVjdXRlTm9uUXVlcnkgPSBhc3luYyBmdW5jdGlvbihxdWVyeSkge1xyXG4gICAgICAgIGF3YWl0IG1vZHVsZS5fb3BlbkRiQ29ubigpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkocXVlcnkpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9RVUVSWV9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IENhbGxzIGEgc3RvcmVkIHByb2NlZHVyZS5cclxuICAgICAqIEBmdW5jdGlvbiBjYWxsUHJvY2VkdXJlXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIE5hbWUgb2YgdGhlIHByb2NlZHVyZSB0byBjYWxsLlxyXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MgLSBQcm9jZWR1cmUgYXJndW1lbnRzLiBJZiBwcm9jZWR1cmUgcHJvZHVjZXMgb3V0cHV0IHBhcmFtZXRlcnMgdGhlbiB0aGVzZSBuZWVkIHRvIGJlIHNwZWNpZmllZCB1c2luZyBgdW5kZWZpbmVkYC5cclxuICAgICAqIEByZXR1cm4ge09iamVjdH0gUHJvY2VkdXJlIG91dHB1dCBpZiBhbnkuXHJcbiAgICAgKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cclxuICAgICAqIC8vIGNhbGxzIGEgcHJvY2VkdXJlIHdoaWNoIGV4cGVjdHMgdHdvIGlucHV0IHBhcmFtZXRlcnMgYW5kIG9uZSBvdXRwdXQgcGFyYW1ldGVyLlxyXG4gICAgICogdmFyIHJlc3VsdCA9IGRiLmNhbGxQcm9jZWR1cmUoJ3Rlc3QnLCAzLCA0LCB1bmRlZmluZWQpO1xyXG4gICAgICogbG9nLmluZm8ocmVzdWx0KTtcclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmNhbGxQcm9jZWR1cmUgPSBhc3luYyBmdW5jdGlvbihuYW1lLCAuLi5hcmdzKSB7XHJcbiAgICAgICAgYXdhaXQgbW9kdWxlLl9vcGVuRGJDb25uKCk7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5U3luY1JldHZhbCA9IGF3YWl0IGNvbm5lY3Rpb24uY2FsbFByb2NlZHVyZShudWxsLCBudWxsLCBuYW1lLCBbLi4uYXJnc10pO1xyXG4gICAgICAgICAgICByZXR1cm4gcXVlcnlTeW5jUmV0dmFsO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9RVUVSWV9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59O1xyXG4iXX0=
@@ -10,18 +10,18 @@ var _lodash = _interopRequireDefault(require("lodash"));
10
10
 
11
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
12
 
13
- /*
14
- * Copyright (C) 2015-present CloudBeat Limited
15
- *
16
- * This program is free software: you can redistribute it and/or modify
17
- * it under the terms of the GNU General Public License as published by
18
- * the Free Software Foundation, either version 3 of the License, or
19
- * (at your option) any later version.
13
+ /*
14
+ * Copyright (C) 2015-present CloudBeat Limited
15
+ *
16
+ * This program is free software: you can redistribute it and/or modify
17
+ * it under the terms of the GNU General Public License as published by
18
+ * the Free Software Foundation, either version 3 of the License, or
19
+ * (at your option) any later version.
20
20
  */
21
21
 
22
- /**
23
- * @name email
24
- * @description Provides methods for working with email via IMAP.
22
+ /**
23
+ * @name email
24
+ * @description Provides methods for working with email via IMAP.
25
25
  */
26
26
  const nodemailer = require('nodemailer');
27
27
 
@@ -41,16 +41,16 @@ module.exports = function () {
41
41
  module.isInitialized = function () {
42
42
  return _config !== undefined;
43
43
  };
44
- /**
45
- * @summary Set email connection details.
46
- * @function init
47
- * @param {String} user - Username (e.g. 'your@email.address').
48
- * @param {String} password - Password.
49
- * @param {String} host - Host name (e.g. 'imap.gmail.com').
50
- * @param {Number} port - Port number (e.g. 993).
51
- * @param {Boolean} tls - true to use TLS, false otherwise.
52
- * @param {Number=} authTimeout - Authentication timeout in milliseconds.
53
- * @param {Boolean=} enableSNI - Enable sending SNI when establishing the connection. This is required for some mail servers. Default is false.
44
+ /**
45
+ * @summary Set email connection details.
46
+ * @function init
47
+ * @param {String} user - Username (e.g. 'your@email.address').
48
+ * @param {String} password - Password.
49
+ * @param {String} host - Host name (e.g. 'imap.gmail.com').
50
+ * @param {Number} port - Port number (e.g. 993).
51
+ * @param {Boolean} tls - true to use TLS, false otherwise.
52
+ * @param {Number=} authTimeout - Authentication timeout in milliseconds.
53
+ * @param {Boolean=} enableSNI - Enable sending SNI when establishing the connection. This is required for some mail servers. Default is false.
54
54
  */
55
55
 
56
56
 
@@ -91,37 +91,37 @@ module.exports = function () {
91
91
  };
92
92
  }
93
93
  };
94
- /**
95
- * @summary Retrieves last unseen email.
96
- * @function getLastEmail
97
- * @param {Number} sinceMinutes - Search for emails received since the specified amount of minutes into past.
98
- * @param {String|Regex} subject - Return email matching the specified subject.
99
- * @param {Number} timeout - Timeout (in milliseconds) for waiting for the message to arrive.
100
- * @return {Object} Email body, text, textAsHtml, attachments if any, and TO, FROM, SUBJECT, DATE headers.
101
- * @example <caption>[javascript] Usage example</caption>
102
- * email.init('[YOUR_EMAIL]@gmail.com', 'password', 'imap.gmail.com', 993, true, 3000);
103
- * var mail = email.getLastEmail(60, 'email subject', 5000);
104
- * log.info(mail);
105
- *
106
- * if(r.attachments && r.attachments.length > 0){
107
- * const fs = require('fs');
108
- * r.attachments.map((attachment) => {
109
- * let fileDescriptor;
110
- * try{
111
- * fileDescriptor = fs.openSync(attachment.filename, 'w');
112
- * } catch(e) {
113
- * throw 'could not open file: ' + e;
114
- * }
115
- *
116
- * try{
117
- * fs.writeFileSync(fileDescriptor, attachment.data);
118
- * } catch(e) {
119
- * throw 'error writing file: ' + e;
120
- * }
121
- *
122
- * fs.closeSync(fileDescriptor);
123
- * });
124
- * }
94
+ /**
95
+ * @summary Retrieves last unseen email.
96
+ * @function getLastEmail
97
+ * @param {Number} sinceMinutes - Search for emails received since the specified amount of minutes into past.
98
+ * @param {String|Regex} subject - Return email matching the specified subject.
99
+ * @param {Number} timeout - Timeout (in milliseconds) for waiting for the message to arrive.
100
+ * @return {Object} Email body, text, textAsHtml, attachments if any, and TO, FROM, SUBJECT, DATE headers.
101
+ * @example <caption>[javascript] Usage example</caption>
102
+ * email.init('[YOUR_EMAIL]@gmail.com', 'password', 'imap.gmail.com', 993, true, 3000);
103
+ * var mail = email.getLastEmail(60, 'email subject', 5000);
104
+ * log.info(mail);
105
+ *
106
+ * if(r.attachments && r.attachments.length > 0){
107
+ * const fs = require('fs');
108
+ * r.attachments.map((attachment) => {
109
+ * let fileDescriptor;
110
+ * try{
111
+ * fileDescriptor = fs.openSync(attachment.filename, 'w');
112
+ * } catch(e) {
113
+ * throw 'could not open file: ' + e;
114
+ * }
115
+ *
116
+ * try{
117
+ * fs.writeFileSync(fileDescriptor, attachment.data);
118
+ * } catch(e) {
119
+ * throw 'error writing file: ' + e;
120
+ * }
121
+ *
122
+ * fs.closeSync(fileDescriptor);
123
+ * });
124
+ * }
125
125
  */
126
126
 
127
127
 
@@ -219,13 +219,13 @@ module.exports = function () {
219
219
 
220
220
  return mail;
221
221
  };
222
- /**
223
- * @summary Send email using SMTP.
224
- * @function send
225
- * @param {String|Array} to - Receiver's email address.
226
- * @param {String} subject - Email subject.
227
- * @param {String} content - Email body as a plain text.
228
- * @param {String=} html - Optional, Email body as HTML.
222
+ /**
223
+ * @summary Send email using SMTP.
224
+ * @function send
225
+ * @param {String|Array} to - Receiver's email address.
226
+ * @param {String} subject - Email subject.
227
+ * @param {String} content - Email body as a plain text.
228
+ * @param {String=} html - Optional, Email body as HTML.
229
229
  */
230
230
 
231
231
 
@@ -269,4 +269,4 @@ module.exports = function () {
269
269
 
270
270
  return module;
271
271
  };
272
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1lbWFpbC5qcyJdLCJuYW1lcyI6WyJub2RlbWFpbGVyIiwicmVxdWlyZSIsImltYXBzIiwic2ltcGxlUGFyc2VyIiwiZXJySGVscGVyIiwiQVVUSF9USU1FT1VUIiwibW9kdWxlIiwiZXhwb3J0cyIsIl9jb25maWciLCJfc210cENvbmZpZyIsImlzSW5pdGlhbGl6ZWQiLCJ1bmRlZmluZWQiLCJpbml0IiwidXNlciIsInBhc3N3b3JkIiwiaG9zdCIsInBvcnQiLCJ0bHMiLCJhdXRoVGltZW91dCIsImVuYWJsZVNOSSIsInV0aWxzIiwiYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyIsImFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUiLCJhc3NlcnRBcmd1bWVudEJvb2wiLCJpbWFwIiwidXNlcm5hbWUiLCJ0bHNPcHRpb25zIiwic2VydmVybmFtZSIsImdldExhc3RFbWFpbCIsInNpbmNlTWludXRlcyIsInN1YmplY3QiLCJ0aW1lb3V0IiwibWFpbCIsIm5vdyIsIkRhdGUiLCJnZXRUaW1lIiwiZXJyIiwiY29ubmVjdGlvbiIsImNvbm5lY3QiLCJvcGVuQm94Iiwic3RhcnREYXRlIiwic2V0VGltZSIsInRvSVNPU3RyaW5nIiwic2VhcmNoQ3JpdGVyaWEiLCJmZXRjaE9wdGlvbnMiLCJib2RpZXMiLCJzdHJ1Y3QiLCJtYXJrU2VlbiIsInJlc3VsdHMiLCJzZWFyY2giLCJyZXN1bHQiLCJoZWFkZXJQYXJ0IiwiXyIsImZpbmQiLCJwYXJ0cyIsImJvZHlQYXJ0IiwiaWQiLCJhdHRyaWJ1dGVzIiwidWlkIiwiaWRIZWFkZXIiLCJzaW1wbGUiLCJib2R5IiwiYXR0YWNobWVudHMiLCJnZXRQYXJ0cyIsInBhcnQiLCJkaXNwb3NpdGlvbiIsInR5cGUiLCJ0b1VwcGVyQ2FzZSIsInBhcnREYXRhIiwiZ2V0UGFydERhdGEiLCJwdXNoIiwiZmlsZW5hbWUiLCJwYXJhbXMiLCJkYXRhIiwiaHRtbCIsInRleHRBc0h0bWwiLCJ0ZXh0IiwiY29uc3RydWN0b3IiLCJuYW1lIiwidGVzdCIsInRvIiwiZnJvbSIsImRhdGUiLCJlIiwiT3hFcnJvciIsImVycm9yQ29kZSIsIkVNQUlMX0VSUk9SIiwidG9TdHJpbmciLCJUSU1FT1VUIiwic2VuZCIsImNvbnRlbnQiLCJ0cmFuc3BvcnRlciIsImNyZWF0ZVRyYW5zcG9ydCIsInNlY3VyZSIsImF1dGgiLCJwYXNzIiwic2VuZG1haWwiLCJsb2dnZXIiLCJ0cmFuc2FjdGlvbkxvZyIsImRlYnVnIiwibWVzc2FnZSIsInNlbmRNYWlsIl0sIm1hcHBpbmdzIjoiOzs7O0FBY0E7O0FBQ0E7O0FBQ0E7Ozs7QUFoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUtBLE1BQU1BLFVBQVUsR0FBR0MsT0FBTyxDQUFDLFlBQUQsQ0FBMUI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsYUFBRCxDQUFyQjs7QUFDQSxNQUFNRSxZQUFZLEdBQUdGLE9BQU8sQ0FBQyxZQUFELENBQVAsQ0FBc0JFLFlBQTNDOztBQUVBLE1BQU1DLFNBQVMsR0FBR0gsT0FBTyxDQUFDLGtCQUFELENBQXpCOztBQUNBLE1BQU1JLFlBQVksR0FBRyxLQUFyQjs7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLFlBQVc7QUFDeEIsTUFBSUMsT0FBSjs7QUFDQSxNQUFJQyxXQUFKOztBQUVBSCxFQUFBQSxNQUFNLENBQUNJLGFBQVAsR0FBdUIsWUFBVztBQUM5QixXQUFPRixPQUFPLEtBQUtHLFNBQW5CO0FBQ0gsR0FGRDtBQUlBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNJTCxFQUFBQSxNQUFNLENBQUNNLElBQVAsR0FBYyxVQUFTQyxJQUFULEVBQWVDLFFBQWYsRUFBeUJDLElBQXpCLEVBQStCQyxJQUEvQixFQUFxQ0MsR0FBckMsRUFBMENDLFdBQVcsR0FBR2IsWUFBeEQsRUFBc0VjLFNBQVMsR0FBR1IsU0FBbEYsRUFBNkY7QUFDdkdTLG1CQUFNQyw0QkFBTixDQUFtQ1IsSUFBbkMsRUFBeUMsTUFBekM7O0FBQ0FPLG1CQUFNQyw0QkFBTixDQUFtQ1AsUUFBbkMsRUFBNkMsVUFBN0M7O0FBQ0FNLG1CQUFNQyw0QkFBTixDQUFtQ04sSUFBbkMsRUFBeUMsTUFBekM7O0FBQ0FLLG1CQUFNRSwrQkFBTixDQUFzQ04sSUFBdEMsRUFBNEMsTUFBNUM7O0FBQ0FJLG1CQUFNRyxrQkFBTixDQUF5Qk4sR0FBekIsRUFBOEIsS0FBOUI7O0FBQ0FHLG1CQUFNRSwrQkFBTixDQUFzQ0osV0FBdEMsRUFBbUQsYUFBbkQ7O0FBRUFWLElBQUFBLE9BQU8sR0FBRztBQUNOZ0IsTUFBQUEsSUFBSSxFQUFFO0FBQ0ZYLFFBQUFBLElBQUksRUFBRUEsSUFESjtBQUVGQyxRQUFBQSxRQUFRLEVBQUVBLFFBRlI7QUFHRkMsUUFBQUEsSUFBSSxFQUFFQSxJQUhKO0FBSUZDLFFBQUFBLElBQUksRUFBRUEsSUFKSjtBQUtGQyxRQUFBQSxHQUFHLEVBQUVBLEdBTEg7QUFNRkMsUUFBQUEsV0FBVyxFQUFFQTtBQU5YO0FBREEsS0FBVjtBQVVBVCxJQUFBQSxXQUFXLEdBQUc7QUFDVmdCLE1BQUFBLFFBQVEsRUFBRVosSUFEQTtBQUVWQyxNQUFBQSxRQUZVO0FBR1ZDLE1BQUFBLElBQUksRUFBRUEsSUFISTtBQUlWQyxNQUFBQSxJQUpVO0FBS1ZDLE1BQUFBO0FBTFUsS0FBZCxDQWxCdUcsQ0EwQnZHOztBQUNBLFFBQUlFLFNBQVMsSUFBSUosSUFBSSxLQUFLLGdCQUExQixFQUE0QztBQUN4Q1AsTUFBQUEsT0FBTyxDQUFDZ0IsSUFBUixDQUFhRSxVQUFiLEdBQTBCO0FBQUVDLFFBQUFBLFVBQVUsRUFBRVo7QUFBZCxPQUExQjtBQUNIO0FBQ0osR0E5QkQ7QUFnQ0E7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0lULEVBQUFBLE1BQU0sQ0FBQ3NCLFlBQVAsR0FBc0IsZ0JBQWVDLFlBQWYsRUFBNkJDLE9BQTdCLEVBQXNDQyxPQUF0QyxFQUErQztBQUNqRVgsbUJBQU1FLCtCQUFOLENBQXNDTyxZQUF0QyxFQUFvRCxjQUFwRDs7QUFDQVQsbUJBQU1FLCtCQUFOLENBQXNDUyxPQUF0QyxFQUErQyxTQUEvQzs7QUFFQSxRQUFJQyxJQUFKO0FBQ0EsUUFBSUMsR0FBRyxHQUFJLElBQUlDLElBQUosRUFBRCxDQUFhQyxPQUFiLEVBQVY7QUFDQSxRQUFJQyxHQUFKOztBQUVBLFdBQU8sQ0FBQ0EsR0FBRCxJQUFRLENBQUNKLElBQVQsSUFBbUIsSUFBSUUsSUFBSixFQUFELENBQWFDLE9BQWIsS0FBeUJGLEdBQTFCLEdBQWlDRixPQUF6RCxFQUFrRTtBQUM5RCxVQUFJO0FBQ0EsY0FBTU0sVUFBVSxHQUFHLE1BQU1uQyxLQUFLLENBQUNvQyxPQUFOLENBQWM5QixPQUFkLENBQXpCO0FBQ0EsY0FBTTZCLFVBQVUsQ0FBQ0UsT0FBWCxDQUFtQixPQUFuQixDQUFOLENBRkEsQ0FJQTs7QUFDQSxZQUFJQyxTQUFTLEdBQUcsSUFBSU4sSUFBSixFQUFoQjtBQUNBTSxRQUFBQSxTQUFTLENBQUNDLE9BQVYsQ0FBa0JQLElBQUksQ0FBQ0QsR0FBTCxLQUFjSixZQUFZLEdBQUcsRUFBZixHQUFvQixJQUFwRDtBQUNBVyxRQUFBQSxTQUFTLEdBQUdBLFNBQVMsQ0FBQ0UsV0FBVixFQUFaO0FBQ0EsWUFBSUMsY0FBYyxHQUFHLENBQUMsUUFBRCxFQUFXLENBQUMsT0FBRCxFQUFVSCxTQUFWLENBQVgsQ0FBckIsQ0FSQSxDQVVBOztBQUNBLFlBQUlJLFlBQVksR0FBRztBQUNmQyxVQUFBQSxNQUFNLEVBQUUsQ0FBQyxzQ0FBRCxFQUF5QyxNQUF6QyxDQURPO0FBRWZDLFVBQUFBLE1BQU0sRUFBRSxJQUZPO0FBR2ZDLFVBQUFBLFFBQVEsRUFBRTtBQUhLLFNBQW5CO0FBTUEsY0FBTUMsT0FBTyxHQUFHLE1BQU1YLFVBQVUsQ0FBQ1ksTUFBWCxDQUFrQk4sY0FBbEIsRUFBa0NDLFlBQWxDLENBQXRCOztBQUVBLGFBQUssSUFBSU0sTUFBVCxJQUFtQkYsT0FBbkIsRUFBNEI7QUFDeEIsZ0JBQU1HLFVBQVUsR0FBR0MsZ0JBQUVDLElBQUYsQ0FBT0gsTUFBTSxDQUFDSSxLQUFkLEVBQXFCO0FBQUUscUJBQVNWLFlBQVksQ0FBQ0MsTUFBYixDQUFvQixDQUFwQjtBQUFYLFdBQXJCLENBQW5COztBQUNBLGdCQUFNVSxRQUFRLEdBQUdILGdCQUFFQyxJQUFGLENBQU9ILE1BQU0sQ0FBQ0ksS0FBZCxFQUFxQjtBQUFFLHFCQUFTVixZQUFZLENBQUNDLE1BQWIsQ0FBb0IsQ0FBcEI7QUFBWCxXQUFyQixDQUFqQjs7QUFFQSxnQkFBTVcsRUFBRSxHQUFHTixNQUFNLENBQUNPLFVBQVAsQ0FBa0JDLEdBQTdCO0FBQ0EsZ0JBQU1DLFFBQVEsR0FBRyxjQUFZSCxFQUFaLEdBQWUsTUFBaEM7QUFDQSxnQkFBTUksTUFBTSxHQUFHLE1BQU16RCxZQUFZLENBQUN3RCxRQUFRLEdBQUNKLFFBQVEsQ0FBQ00sSUFBbkIsQ0FBakM7QUFDQSxnQkFBTUMsV0FBVyxHQUFHLEVBQXBCO0FBQ0EsZ0JBQU1SLEtBQUssR0FBR3BELEtBQUssQ0FBQzZELFFBQU4sQ0FBZWIsTUFBTSxDQUFDTyxVQUFQLENBQWtCWCxNQUFqQyxDQUFkOztBQUVBLGVBQUssTUFBTWtCLElBQVgsSUFBbUJWLEtBQW5CLEVBQTBCO0FBQ3RCLGdCQUFJVSxJQUFJLENBQUNDLFdBQUwsSUFBb0JELElBQUksQ0FBQ0MsV0FBTCxDQUFpQkMsSUFBakIsQ0FBc0JDLFdBQXRCLE9BQXdDLFlBQWhFLEVBQThFO0FBQzFFLG9CQUFNQyxRQUFRLEdBQUcsTUFBTS9CLFVBQVUsQ0FBQ2dDLFdBQVgsQ0FBdUJuQixNQUF2QixFQUErQmMsSUFBL0IsQ0FBdkI7QUFDQUYsY0FBQUEsV0FBVyxDQUFDUSxJQUFaLENBQWlCO0FBQ2JDLGdCQUFBQSxRQUFRLEVBQUVQLElBQUksQ0FBQ0MsV0FBTCxDQUFpQk8sTUFBakIsQ0FBd0JELFFBRHJCO0FBRWJFLGdCQUFBQSxJQUFJLEVBQUVMO0FBRk8sZUFBakI7QUFJSDtBQUNKOztBQUVELGNBQUlQLElBQUo7QUFDQSxjQUFJYSxJQUFKO0FBQ0EsY0FBSUMsVUFBSjs7QUFDQSxjQUFJZixNQUFNLENBQUNjLElBQVAsSUFBZWQsTUFBTSxDQUFDZ0IsSUFBdEIsSUFBOEJoQixNQUFNLENBQUNlLFVBQXpDLEVBQXFEO0FBQ2pEO0FBQ0FkLFlBQUFBLElBQUksR0FBR04sUUFBUSxDQUFDcUIsSUFBaEI7QUFDQUYsWUFBQUEsSUFBSSxHQUFHZCxNQUFNLENBQUNjLElBQWQ7QUFDQUMsWUFBQUEsVUFBVSxHQUFHZixNQUFNLENBQUNlLFVBQXBCO0FBQ0gsV0FMRCxNQUtPO0FBQ0g7QUFDQWQsWUFBQUEsSUFBSSxHQUFHTixRQUFRLENBQUNNLElBQWhCO0FBQ0g7O0FBRUQsY0FBSVYsVUFBSixFQUFnQjtBQUNaLGdCQUNJckIsT0FBTyxLQUNGQSxPQUFPLENBQUMrQyxXQUFSLENBQW9CQyxJQUFwQixLQUE2QixRQUE3QixJQUF5Q2hELE9BQU8sQ0FBQ2lELElBQVIsQ0FBYTVCLFVBQVUsQ0FBQ1UsSUFBWCxDQUFnQi9CLE9BQWhCLENBQXdCLENBQXhCLENBQWIsQ0FBMUMsSUFDQ0EsT0FBTyxLQUFLcUIsVUFBVSxDQUFDVSxJQUFYLENBQWdCL0IsT0FBaEIsQ0FBd0IsQ0FBeEIsQ0FGVixDQURYLEVBS0U7QUFDRSxrQkFBSWtELEVBQUUsR0FBRzdCLFVBQVUsQ0FBQ1UsSUFBWCxDQUFnQm1CLEVBQWhCLEdBQXFCN0IsVUFBVSxDQUFDVSxJQUFYLENBQWdCbUIsRUFBaEIsQ0FBbUIsQ0FBbkIsQ0FBckIsR0FBNkMsSUFBdEQ7QUFFQWhELGNBQUFBLElBQUksR0FBRztBQUNIaUQsZ0JBQUFBLElBQUksRUFBRTlCLFVBQVUsQ0FBQ1UsSUFBWCxDQUFnQm9CLElBQWhCLENBQXFCLENBQXJCLENBREg7QUFFSEQsZ0JBQUFBLEVBQUUsRUFBRUEsRUFGRDtBQUdIbEQsZ0JBQUFBLE9BQU8sRUFBRXFCLFVBQVUsQ0FBQ1UsSUFBWCxDQUFnQi9CLE9BQWhCLENBQXdCLENBQXhCLENBSE47QUFJSG9ELGdCQUFBQSxJQUFJLEVBQUUvQixVQUFVLENBQUNVLElBQVgsQ0FBZ0JxQixJQUFoQixDQUFxQixDQUFyQixDQUpIO0FBS0hyQixnQkFBQUEsSUFBSSxFQUFFQSxJQUxIO0FBTUhDLGdCQUFBQSxXQUFXLEVBQUVBLFdBTlY7QUFPSGEsZ0JBQUFBLFVBQVUsRUFBRUEsVUFQVDtBQVFIRCxnQkFBQUEsSUFBSSxFQUFFQTtBQVJILGVBQVA7QUFVSDtBQUNKO0FBQ0o7QUFDSixPQTFFRCxDQTBFRSxPQUFPUyxDQUFQLEVBQVU7QUFDUi9DLFFBQUFBLEdBQUcsR0FBRytDLENBQU47QUFDSDtBQUNKOztBQUVELFFBQUkvQyxHQUFKLEVBQVM7QUFDTCxZQUFNLElBQUlnRCxvQkFBSixDQUFZaEYsU0FBUyxDQUFDaUYsU0FBVixDQUFvQkMsV0FBaEMsRUFBNkNsRCxHQUFHLENBQUNtRCxRQUFKLEVBQTdDLENBQU47QUFDSCxLQUZELE1BRU8sSUFBSSxDQUFDdkQsSUFBTCxFQUFXO0FBQ2QsWUFBTSxJQUFJb0Qsb0JBQUosQ0FBWWhGLFNBQVMsQ0FBQ2lGLFNBQVYsQ0FBb0JHLE9BQWhDLEVBQXlDLGtDQUFrQ3pELE9BQWxDLEdBQTRDLE1BQXJGLENBQU47QUFDSDs7QUFFRCxXQUFPQyxJQUFQO0FBQ0gsR0EvRkQ7QUFpR0E7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0kxQixFQUFBQSxNQUFNLENBQUNtRixJQUFQLEdBQWMsZ0JBQWVULEVBQWYsRUFBbUJsRCxPQUFuQixFQUE0QjRELE9BQTVCLEVBQXFDaEIsSUFBSSxHQUFHL0QsU0FBNUMsRUFBdUQ7QUFDakUsUUFBSXlCLEdBQUcsR0FBR3pCLFNBQVY7O0FBQ0EsUUFBSTtBQUNBO0FBQ0EsWUFBTWdGLFdBQVcsR0FBRzNGLFVBQVUsQ0FBQzRGLGVBQVgsQ0FBMkI7QUFDM0M3RSxRQUFBQSxJQUFJLEVBQUVOLFdBQVcsQ0FBQ00sSUFEeUI7QUFFM0NDLFFBQUFBLElBQUksRUFBRVAsV0FBVyxDQUFDTyxJQUZ5QjtBQUczQzZFLFFBQUFBLE1BQU0sRUFBRXBGLFdBQVcsQ0FBQ1EsR0FIdUI7QUFJM0M2RSxRQUFBQSxJQUFJLEVBQUU7QUFDRmpGLFVBQUFBLElBQUksRUFBRUosV0FBVyxDQUFDZ0IsUUFEaEI7QUFFRnNFLFVBQUFBLElBQUksRUFBRXRGLFdBQVcsQ0FBQ0s7QUFGaEIsU0FKcUM7QUFRM0NrRixRQUFBQSxRQUFRLEVBQUUsS0FSaUM7QUFTM0NDLFFBQUFBLE1BQU0sRUFBRSxLQVRtQztBQVUzQ0MsUUFBQUEsY0FBYyxFQUFFLEtBVjJCO0FBVzNDQyxRQUFBQSxLQUFLLEVBQUU7QUFYb0MsT0FBM0IsQ0FBcEIsQ0FGQSxDQWdCQTs7QUFDQSxZQUFNQyxPQUFPLEdBQUc7QUFDWnBCLFFBQUFBLEVBQUUsRUFBRUEsRUFEUTtBQUVaO0FBQ0FsRCxRQUFBQSxPQUFPLEVBQUVBLE9BQU8sSUFBSSxFQUhSO0FBSVo7QUFDQThDLFFBQUFBLElBQUksRUFBRWMsT0FMTTtBQU1aO0FBQ0FoQixRQUFBQSxJQUFJLEVBQUVBO0FBUE0sT0FBaEI7QUFVQSxZQUFNaUIsV0FBVyxDQUFDVSxRQUFaLENBQXFCRCxPQUFyQixDQUFOO0FBQ0gsS0E1QkQsQ0E2QkEsT0FBT2pCLENBQVAsRUFBVTtBQUNOL0MsTUFBQUEsR0FBRyxHQUFHK0MsQ0FBTjtBQUNIOztBQUNELFFBQUkvQyxHQUFKLEVBQVM7QUFDTCxZQUFNLElBQUlnRCxvQkFBSixDQUFZaEYsU0FBUyxDQUFDaUYsU0FBVixDQUFvQkMsV0FBaEMsRUFBNkNsRCxHQUFHLENBQUNtRCxRQUFKLEVBQTdDLENBQU47QUFDSDtBQUNKLEdBckNEOztBQXVDQSxTQUFPakYsTUFBUDtBQUNILENBcE9EIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIGVtYWlsXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIGVtYWlsIHZpYSBJTUFQLlxuICovXG5cbmltcG9ydCBPeEVycm9yIGZyb20gJy4uL2Vycm9ycy9PeHlnZW5FcnJvcic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuY29uc3Qgbm9kZW1haWxlciA9IHJlcXVpcmUoJ25vZGVtYWlsZXInKTtcbmNvbnN0IGltYXBzID0gcmVxdWlyZSgnaW1hcC1zaW1wbGUnKTtcbmNvbnN0IHNpbXBsZVBhcnNlciA9IHJlcXVpcmUoJ21haWxwYXJzZXInKS5zaW1wbGVQYXJzZXI7XG5cbmNvbnN0IGVyckhlbHBlciA9IHJlcXVpcmUoJy4uL2Vycm9ycy9oZWxwZXInKTtcbmNvbnN0IEFVVEhfVElNRU9VVCA9IDMwMDAwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBfY29uZmlnO1xuICAgIHZhciBfc210cENvbmZpZztcblxuICAgIG1vZHVsZS5pc0luaXRpYWxpemVkID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfY29uZmlnICE9PSB1bmRlZmluZWQ7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IFNldCBlbWFpbCBjb25uZWN0aW9uIGRldGFpbHMuXG4gICAgICogQGZ1bmN0aW9uIGluaXRcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdXNlciAtIFVzZXJuYW1lIChlLmcuICd5b3VyQGVtYWlsLmFkZHJlc3MnKS5cbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gcGFzc3dvcmQgLSBQYXNzd29yZC5cbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gaG9zdCAtIEhvc3QgbmFtZSAoZS5nLiAnaW1hcC5nbWFpbC5jb20nKS5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gcG9ydCAtIFBvcnQgbnVtYmVyIChlLmcuIDk5MykuXG4gICAgICogQHBhcmFtIHtCb29sZWFufSB0bHMgLSB0cnVlIHRvIHVzZSBUTFMsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKiBAcGFyYW0ge051bWJlcj19IGF1dGhUaW1lb3V0IC0gQXV0aGVudGljYXRpb24gdGltZW91dCBpbiBtaWxsaXNlY29uZHMuXG4gICAgICogQHBhcmFtIHtCb29sZWFuPX0gZW5hYmxlU05JIC0gRW5hYmxlIHNlbmRpbmcgU05JIHdoZW4gZXN0YWJsaXNoaW5nIHRoZSBjb25uZWN0aW9uLiBUaGlzIGlzIHJlcXVpcmVkIGZvciBzb21lIG1haWwgc2VydmVycy4gRGVmYXVsdCBpcyBmYWxzZS4gXG4gICAgICovXG4gICAgbW9kdWxlLmluaXQgPSBmdW5jdGlvbih1c2VyLCBwYXNzd29yZCwgaG9zdCwgcG9ydCwgdGxzLCBhdXRoVGltZW91dCA9IEFVVEhfVElNRU9VVCwgZW5hYmxlU05JID0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmcodXNlciwgJ3VzZXInKTtcbiAgICAgICAgdXRpbHMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyhwYXNzd29yZCwgJ3Bhc3N3b3JkJyk7XG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmcoaG9zdCwgJ2hvc3QnKTtcbiAgICAgICAgdXRpbHMuYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZShwb3J0LCAncG9ydCcpO1xuICAgICAgICB1dGlscy5hc3NlcnRBcmd1bWVudEJvb2wodGxzLCAndGxzJyk7XG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUoYXV0aFRpbWVvdXQsICdhdXRoVGltZW91dCcpO1xuXG4gICAgICAgIF9jb25maWcgPSB7XG4gICAgICAgICAgICBpbWFwOiB7XG4gICAgICAgICAgICAgICAgdXNlcjogdXNlcixcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogcGFzc3dvcmQsXG4gICAgICAgICAgICAgICAgaG9zdDogaG9zdCxcbiAgICAgICAgICAgICAgICBwb3J0OiBwb3J0LFxuICAgICAgICAgICAgICAgIHRsczogdGxzLFxuICAgICAgICAgICAgICAgIGF1dGhUaW1lb3V0OiBhdXRoVGltZW91dFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBfc210cENvbmZpZyA9IHtcbiAgICAgICAgICAgIHVzZXJuYW1lOiB1c2VyLFxuICAgICAgICAgICAgcGFzc3dvcmQsXG4gICAgICAgICAgICBob3N0OiBob3N0LFxuICAgICAgICAgICAgcG9ydCxcbiAgICAgICAgICAgIHRscyxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBzZXQgc2VydmVybmFtZSBpZiBTTkkgaXMgZW5hYmxlZCBvciB3ZSBhcmUgdXNpbmcgR21haWxcbiAgICAgICAgaWYgKGVuYWJsZVNOSSB8fCBob3N0ID09PSAnaW1hcC5nbWFpbC5jb20nKSB7XG4gICAgICAgICAgICBfY29uZmlnLmltYXAudGxzT3B0aW9ucyA9IHsgc2VydmVybmFtZTogaG9zdCB9O1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IFJldHJpZXZlcyBsYXN0IHVuc2VlbiBlbWFpbC5cbiAgICAgKiBAZnVuY3Rpb24gZ2V0TGFzdEVtYWlsXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHNpbmNlTWludXRlcyAtIFNlYXJjaCBmb3IgZW1haWxzIHJlY2VpdmVkIHNpbmNlIHRoZSBzcGVjaWZpZWQgYW1vdW50IG9mIG1pbnV0ZXMgaW50byBwYXN0LlxuICAgICAqIEBwYXJhbSB7U3RyaW5nfFJlZ2V4fSBzdWJqZWN0IC0gUmV0dXJuIGVtYWlsIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgc3ViamVjdC5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gdGltZW91dCAtIFRpbWVvdXQgKGluIG1pbGxpc2Vjb25kcykgZm9yIHdhaXRpbmcgZm9yIHRoZSBtZXNzYWdlIHRvIGFycml2ZS5cbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IEVtYWlsIGJvZHksIHRleHQsIHRleHRBc0h0bWwsIGF0dGFjaG1lbnRzIGlmIGFueSwgYW5kIFRPLCBGUk9NLCBTVUJKRUNULCBEQVRFIGhlYWRlcnMuXG4gICAgICogQGV4YW1wbGUgPGNhcHRpb24+W2phdmFzY3JpcHRdIFVzYWdlIGV4YW1wbGU8L2NhcHRpb24+XG4gICAgICogZW1haWwuaW5pdCgnW1lPVVJfRU1BSUxdQGdtYWlsLmNvbScsICdwYXNzd29yZCcsICdpbWFwLmdtYWlsLmNvbScsIDk5MywgdHJ1ZSwgMzAwMCk7XG4gICAgICogdmFyIG1haWwgPSBlbWFpbC5nZXRMYXN0RW1haWwoNjAsICdlbWFpbCBzdWJqZWN0JywgNTAwMCk7XG4gICAgICogbG9nLmluZm8obWFpbCk7XG4gICAgICogXG4gICAgICogaWYoci5hdHRhY2htZW50cyAmJiByLmF0dGFjaG1lbnRzLmxlbmd0aCA+IDApe1xuICAgICAqIFx0Y29uc3QgZnMgPSByZXF1aXJlKCdmcycpO1xuICAgICAqIFx0ci5hdHRhY2htZW50cy5tYXAoKGF0dGFjaG1lbnQpID0+IHtcbiAgICAgKiBcdFx0bGV0IGZpbGVEZXNjcmlwdG9yO1xuICAgICAqIFx0XHR0cnl7XG4gICAgICogXHRcdFx0ZmlsZURlc2NyaXB0b3IgPSBmcy5vcGVuU3luYyhhdHRhY2htZW50LmZpbGVuYW1lLCAndycpO1xuICAgICAqIFx0XHR9IGNhdGNoKGUpIHtcbiAgICAgKiBcdFx0XHR0aHJvdyAnY291bGQgbm90IG9wZW4gZmlsZTogJyArIGU7XG4gICAgICogXHRcdH1cbiAgICAgKiBcdFx0XG4gICAgICogXHRcdHRyeXtcbiAgICAgKiBcdFx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVEZXNjcmlwdG9yLCBhdHRhY2htZW50LmRhdGEpO1xuICAgICAqIFx0XHR9IGNhdGNoKGUpIHtcbiAgICAgKiBcdFx0XHR0aHJvdyAnZXJyb3Igd3JpdGluZyBmaWxlOiAnICsgZTtcbiAgICAgKiBcdFx0fVxuICAgICAqIFx0XHRcbiAgICAgKiBcdFx0ZnMuY2xvc2VTeW5jKGZpbGVEZXNjcmlwdG9yKTtcbiAgICAgKiBcdH0pO1xuICAgICAqIH1cbiAgICAgKi9cbiAgICBtb2R1bGUuZ2V0TGFzdEVtYWlsID0gYXN5bmMgZnVuY3Rpb24oc2luY2VNaW51dGVzLCBzdWJqZWN0LCB0aW1lb3V0KSB7XG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUoc2luY2VNaW51dGVzLCAnc2luY2VNaW51dGVzJyk7XG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUodGltZW91dCwgJ3RpbWVvdXQnKTtcblxuICAgICAgICB2YXIgbWFpbDtcbiAgICAgICAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gICAgICAgIHZhciBlcnI7XG5cbiAgICAgICAgd2hpbGUgKCFlcnIgJiYgIW1haWwgJiYgKChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLSBub3cpIDwgdGltZW91dCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25uZWN0aW9uID0gYXdhaXQgaW1hcHMuY29ubmVjdChfY29uZmlnKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLm9wZW5Cb3goJ0lOQk9YJyk7XG5cbiAgICAgICAgICAgICAgICAvLyBmZXRjaCB1bnNlZW4gZW1haWxzIGZyb20gdGhlIGxhc3Qgc2luY2VNaW51dGVzXG4gICAgICAgICAgICAgICAgdmFyIHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICAgICAgc3RhcnREYXRlLnNldFRpbWUoRGF0ZS5ub3coKSAtIChzaW5jZU1pbnV0ZXMgKiA2MCAqIDEwMDApKTtcbiAgICAgICAgICAgICAgICBzdGFydERhdGUgPSBzdGFydERhdGUudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICB2YXIgc2VhcmNoQ3JpdGVyaWEgPSBbJ1VOU0VFTicsIFsnU0lOQ0UnLCBzdGFydERhdGVdXTtcblxuICAgICAgICAgICAgICAgIC8vIGZldGNoIGNlcnRhaW4gaGVhZGVycyBhbmQgc3RyaXBwZWQgZG93biBib2R5XG4gICAgICAgICAgICAgICAgdmFyIGZldGNoT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgYm9kaWVzOiBbJ0hFQURFUi5GSUVMRFMgKEZST00gVE8gU1VCSkVDVCBEQVRFKScsICdURVhUJ10sXG4gICAgICAgICAgICAgICAgICAgIHN0cnVjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgbWFya1NlZW46IGZhbHNlXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBjb25uZWN0aW9uLnNlYXJjaChzZWFyY2hDcml0ZXJpYSwgZmV0Y2hPcHRpb25zKTtcblxuICAgICAgICAgICAgICAgIGZvciAodmFyIHJlc3VsdCBvZiByZXN1bHRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlclBhcnQgPSBfLmZpbmQocmVzdWx0LnBhcnRzLCB7ICd3aGljaCc6IGZldGNoT3B0aW9ucy5ib2RpZXNbMF0gfSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvZHlQYXJ0ID0gXy5maW5kKHJlc3VsdC5wYXJ0cywgeyAnd2hpY2gnOiBmZXRjaE9wdGlvbnMuYm9kaWVzWzFdIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gcmVzdWx0LmF0dHJpYnV0ZXMudWlkO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpZEhlYWRlciA9ICdJbWFwLUlkOiAnK2lkKydcXHJcXG4nO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaW1wbGUgPSBhd2FpdCBzaW1wbGVQYXJzZXIoaWRIZWFkZXIrYm9keVBhcnQuYm9keSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gW107XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gaW1hcHMuZ2V0UGFydHMocmVzdWx0LmF0dHJpYnV0ZXMuc3RydWN0KTtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJ0LmRpc3Bvc2l0aW9uICYmIHBhcnQuZGlzcG9zaXRpb24udHlwZS50b1VwcGVyQ2FzZSgpID09PSAnQVRUQUNITUVOVCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJ0RGF0YSA9IGF3YWl0IGNvbm5lY3Rpb24uZ2V0UGFydERhdGEocmVzdWx0LCBwYXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU6IHBhcnQuZGlzcG9zaXRpb24ucGFyYW1zLmZpbGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBwYXJ0RGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGJvZHk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBodG1sO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dEFzSHRtbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNpbXBsZS5odG1sIHx8IHNpbXBsZS50ZXh0IHx8IHNpbXBsZS50ZXh0QXNIdG1sKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXJzZWQgc3VjY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSA9IGJvZHlQYXJ0LnRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sID0gc2ltcGxlLmh0bWw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QXNIdG1sID0gc2ltcGxlLnRleHRBc0h0bWw7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBkb24ndCBwYXJzZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSBib2R5UGFydC5ib2R5O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlclBhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJqZWN0ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1YmplY3QuY29uc3RydWN0b3IubmFtZSA9PT0gJ1JlZ0V4cCcgJiYgc3ViamVjdC50ZXN0KGhlYWRlclBhcnQuYm9keS5zdWJqZWN0WzBdKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1YmplY3QgPT09IGhlYWRlclBhcnQuYm9keS5zdWJqZWN0WzBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0byA9IGhlYWRlclBhcnQuYm9keS50byA/IGhlYWRlclBhcnQuYm9keS50b1swXSA6IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWlsID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tOiBoZWFkZXJQYXJ0LmJvZHkuZnJvbVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG86IHRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJqZWN0OiBoZWFkZXJQYXJ0LmJvZHkuc3ViamVjdFswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZTogaGVhZGVyUGFydC5ib2R5LmRhdGVbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGJvZHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzOiBhdHRhY2htZW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFzSHRtbDogdGV4dEFzSHRtbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbDogaHRtbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgZXJyID0gZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuRU1BSUxfRVJST1IsIGVyci50b1N0cmluZygpKTtcbiAgICAgICAgfSBlbHNlIGlmICghbWFpbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5USU1FT1VULCBcIkNvdWxkbid0IGdldCBhbiBlbWFpbCB3aXRoaW4gXCIgKyB0aW1lb3V0ICsgJyBtcy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtYWlsO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBTZW5kIGVtYWlsIHVzaW5nIFNNVFAuXG4gICAgICogQGZ1bmN0aW9uIHNlbmRcbiAgICAgKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gdG8gLSBSZWNlaXZlcidzIGVtYWlsIGFkZHJlc3MuXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHN1YmplY3QgLSBFbWFpbCBzdWJqZWN0LlxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBjb250ZW50IC0gRW1haWwgYm9keSBhcyBhIHBsYWluIHRleHQuXG4gICAgICogQHBhcmFtIHtTdHJpbmc9fSBodG1sIC0gT3B0aW9uYWwsIEVtYWlsIGJvZHkgYXMgSFRNTC5cbiAgICAgKi9cbiAgICBtb2R1bGUuc2VuZCA9IGFzeW5jIGZ1bmN0aW9uKHRvLCBzdWJqZWN0LCBjb250ZW50LCBodG1sID0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxldCBlcnIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBDcmVhdGUgYSBTTVRQIHRyYW5zcG9ydGVyIG9iamVjdFxuICAgICAgICAgICAgY29uc3QgdHJhbnNwb3J0ZXIgPSBub2RlbWFpbGVyLmNyZWF0ZVRyYW5zcG9ydCh7XG4gICAgICAgICAgICAgICAgaG9zdDogX3NtdHBDb25maWcuaG9zdCxcbiAgICAgICAgICAgICAgICBwb3J0OiBfc210cENvbmZpZy5wb3J0LFxuICAgICAgICAgICAgICAgIHNlY3VyZTogX3NtdHBDb25maWcudGxzLFxuICAgICAgICAgICAgICAgIGF1dGg6IHtcbiAgICAgICAgICAgICAgICAgICAgdXNlcjogX3NtdHBDb25maWcudXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHBhc3M6IF9zbXRwQ29uZmlnLnBhc3N3b3JkLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2VuZG1haWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGxvZ2dlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Mb2c6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRlYnVnOiBmYWxzZSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBNZXNzYWdlIG9iamVjdFxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHtcbiAgICAgICAgICAgICAgICB0bzogdG8sXG4gICAgICAgICAgICAgICAgLy8gU3ViamVjdCBvZiB0aGUgbWVzc2FnZVxuICAgICAgICAgICAgICAgIHN1YmplY3Q6IHN1YmplY3QgfHwgJycsXG4gICAgICAgICAgICAgICAgLy8gcGxhaW50ZXh0IGJvZHlcbiAgICAgICAgICAgICAgICB0ZXh0OiBjb250ZW50LFxuICAgICAgICAgICAgICAgIC8vIEhUTUwgYm9keVxuICAgICAgICAgICAgICAgIGh0bWw6IGh0bWwsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBhd2FpdCB0cmFuc3BvcnRlci5zZW5kTWFpbChtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgZXJyID0gZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkVNQUlMX0VSUk9SLCBlcnIudG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIG1vZHVsZTtcbn07XG4iXX0=
272
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1lbWFpbC5qcyJdLCJuYW1lcyI6WyJub2RlbWFpbGVyIiwicmVxdWlyZSIsImltYXBzIiwic2ltcGxlUGFyc2VyIiwiZXJySGVscGVyIiwiQVVUSF9USU1FT1VUIiwibW9kdWxlIiwiZXhwb3J0cyIsIl9jb25maWciLCJfc210cENvbmZpZyIsImlzSW5pdGlhbGl6ZWQiLCJ1bmRlZmluZWQiLCJpbml0IiwidXNlciIsInBhc3N3b3JkIiwiaG9zdCIsInBvcnQiLCJ0bHMiLCJhdXRoVGltZW91dCIsImVuYWJsZVNOSSIsInV0aWxzIiwiYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyIsImFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUiLCJhc3NlcnRBcmd1bWVudEJvb2wiLCJpbWFwIiwidXNlcm5hbWUiLCJ0bHNPcHRpb25zIiwic2VydmVybmFtZSIsImdldExhc3RFbWFpbCIsInNpbmNlTWludXRlcyIsInN1YmplY3QiLCJ0aW1lb3V0IiwibWFpbCIsIm5vdyIsIkRhdGUiLCJnZXRUaW1lIiwiZXJyIiwiY29ubmVjdGlvbiIsImNvbm5lY3QiLCJvcGVuQm94Iiwic3RhcnREYXRlIiwic2V0VGltZSIsInRvSVNPU3RyaW5nIiwic2VhcmNoQ3JpdGVyaWEiLCJmZXRjaE9wdGlvbnMiLCJib2RpZXMiLCJzdHJ1Y3QiLCJtYXJrU2VlbiIsInJlc3VsdHMiLCJzZWFyY2giLCJyZXN1bHQiLCJoZWFkZXJQYXJ0IiwiXyIsImZpbmQiLCJwYXJ0cyIsImJvZHlQYXJ0IiwiaWQiLCJhdHRyaWJ1dGVzIiwidWlkIiwiaWRIZWFkZXIiLCJzaW1wbGUiLCJib2R5IiwiYXR0YWNobWVudHMiLCJnZXRQYXJ0cyIsInBhcnQiLCJkaXNwb3NpdGlvbiIsInR5cGUiLCJ0b1VwcGVyQ2FzZSIsInBhcnREYXRhIiwiZ2V0UGFydERhdGEiLCJwdXNoIiwiZmlsZW5hbWUiLCJwYXJhbXMiLCJkYXRhIiwiaHRtbCIsInRleHRBc0h0bWwiLCJ0ZXh0IiwiY29uc3RydWN0b3IiLCJuYW1lIiwidGVzdCIsInRvIiwiZnJvbSIsImRhdGUiLCJlIiwiT3hFcnJvciIsImVycm9yQ29kZSIsIkVNQUlMX0VSUk9SIiwidG9TdHJpbmciLCJUSU1FT1VUIiwic2VuZCIsImNvbnRlbnQiLCJ0cmFuc3BvcnRlciIsImNyZWF0ZVRyYW5zcG9ydCIsInNlY3VyZSIsImF1dGgiLCJwYXNzIiwic2VuZG1haWwiLCJsb2dnZXIiLCJ0cmFuc2FjdGlvbkxvZyIsImRlYnVnIiwibWVzc2FnZSIsInNlbmRNYWlsIl0sIm1hcHBpbmdzIjoiOzs7O0FBY0E7O0FBQ0E7O0FBQ0E7Ozs7QUFoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUtBLE1BQU1BLFVBQVUsR0FBR0MsT0FBTyxDQUFDLFlBQUQsQ0FBMUI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsYUFBRCxDQUFyQjs7QUFDQSxNQUFNRSxZQUFZLEdBQUdGLE9BQU8sQ0FBQyxZQUFELENBQVAsQ0FBc0JFLFlBQTNDOztBQUVBLE1BQU1DLFNBQVMsR0FBR0gsT0FBTyxDQUFDLGtCQUFELENBQXpCOztBQUNBLE1BQU1JLFlBQVksR0FBRyxLQUFyQjs7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLFlBQVc7QUFDeEIsTUFBSUMsT0FBSjs7QUFDQSxNQUFJQyxXQUFKOztBQUVBSCxFQUFBQSxNQUFNLENBQUNJLGFBQVAsR0FBdUIsWUFBVztBQUM5QixXQUFPRixPQUFPLEtBQUtHLFNBQW5CO0FBQ0gsR0FGRDtBQUlBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNJTCxFQUFBQSxNQUFNLENBQUNNLElBQVAsR0FBYyxVQUFTQyxJQUFULEVBQWVDLFFBQWYsRUFBeUJDLElBQXpCLEVBQStCQyxJQUEvQixFQUFxQ0MsR0FBckMsRUFBMENDLFdBQVcsR0FBR2IsWUFBeEQs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LypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKipcclxuICogQG5hbWUgZW1haWxcclxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIG1ldGhvZHMgZm9yIHdvcmtpbmcgd2l0aCBlbWFpbCB2aWEgSU1BUC5cclxuICovXHJcblxyXG5pbXBvcnQgT3hFcnJvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xyXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XHJcbmNvbnN0IG5vZGVtYWlsZXIgPSByZXF1aXJlKCdub2RlbWFpbGVyJyk7XHJcbmNvbnN0IGltYXBzID0gcmVxdWlyZSgnaW1hcC1zaW1wbGUnKTtcclxuY29uc3Qgc2ltcGxlUGFyc2VyID0gcmVxdWlyZSgnbWFpbHBhcnNlcicpLnNpbXBsZVBhcnNlcjtcclxuXHJcbmNvbnN0IGVyckhlbHBlciA9IHJlcXVpcmUoJy4uL2Vycm9ycy9oZWxwZXInKTtcclxuY29uc3QgQVVUSF9USU1FT1VUID0gMzAwMDA7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgdmFyIF9jb25maWc7XHJcbiAgICB2YXIgX3NtdHBDb25maWc7XHJcblxyXG4gICAgbW9kdWxlLmlzSW5pdGlhbGl6ZWQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gX2NvbmZpZyAhPT0gdW5kZWZpbmVkO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNldCBlbWFpbCBjb25uZWN0aW9uIGRldGFpbHMuXHJcbiAgICAgKiBAZnVuY3Rpb24gaW5pdFxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVzZXIgLSBVc2VybmFtZSAoZS5nLiAneW91ckBlbWFpbC5hZGRyZXNzJykuXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gcGFzc3dvcmQgLSBQYXNzd29yZC5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBob3N0IC0gSG9zdCBuYW1lIChlLmcuICdpbWFwLmdtYWlsLmNvbScpLlxyXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHBvcnQgLSBQb3J0IG51bWJlciAoZS5nLiA5OTMpLlxyXG4gICAgICogQHBhcmFtIHtCb29sZWFufSB0bHMgLSB0cnVlIHRvIHVzZSBUTFMsIGZhbHNlIG90aGVyd2lzZS5cclxuICAgICAqIEBwYXJhbSB7TnVtYmVyPX0gYXV0aFRpbWVvdXQgLSBBdXRoZW50aWNhdGlvbiB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy5cclxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbj19IGVuYWJsZVNOSSAtIEVuYWJsZSBzZW5kaW5nIFNOSSB3aGVuIGVzdGFibGlzaGluZyB0aGUgY29ubmVjdGlvbi4gVGhpcyBpcyByZXF1aXJlZCBmb3Igc29tZSBtYWlsIHNlcnZlcnMuIERlZmF1bHQgaXMgZmFsc2UuIFxyXG4gICAgICovXHJcbiAgICBtb2R1bGUuaW5pdCA9IGZ1bmN0aW9uKHVzZXIsIHBhc3N3b3JkLCBob3N0LCBwb3J0LCB0bHMsIGF1dGhUaW1lb3V0ID0gQVVUSF9USU1FT1VULCBlbmFibGVTTkkgPSB1bmRlZmluZWQpIHtcclxuICAgICAgICB1dGlscy5hc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nKHVzZXIsICd1c2VyJyk7XHJcbiAgICAgICAgdXRpbHMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyhwYXNzd29yZCwgJ3Bhc3N3b3JkJyk7XHJcbiAgICAgICAgdXRpbHMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyhob3N0LCAnaG9zdCcpO1xyXG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUocG9ydCwgJ3BvcnQnKTtcclxuICAgICAgICB1dGlscy5hc3NlcnRBcmd1bWVudEJvb2wodGxzLCAndGxzJyk7XHJcbiAgICAgICAgdXRpbHMuYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZShhdXRoVGltZW91dCwgJ2F1dGhUaW1lb3V0Jyk7XHJcblxyXG4gICAgICAgIF9jb25maWcgPSB7XHJcbiAgICAgICAgICAgIGltYXA6IHtcclxuICAgICAgICAgICAgICAgIHVzZXI6IHVzZXIsXHJcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogcGFzc3dvcmQsXHJcbiAgICAgICAgICAgICAgICBob3N0OiBob3N0LFxyXG4gICAgICAgICAgICAgICAgcG9ydDogcG9ydCxcclxuICAgICAgICAgICAgICAgIHRsczogdGxzLFxyXG4gICAgICAgICAgICAgICAgYXV0aFRpbWVvdXQ6IGF1dGhUaW1lb3V0XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIF9zbXRwQ29uZmlnID0ge1xyXG4gICAgICAgICAgICB1c2VybmFtZTogdXNlcixcclxuICAgICAgICAgICAgcGFzc3dvcmQsXHJcbiAgICAgICAgICAgIGhvc3Q6IGhvc3QsXHJcbiAgICAgICAgICAgIHBvcnQsXHJcbiAgICAgICAgICAgIHRscyxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICAvLyBzZXQgc2VydmVybmFtZSBpZiBTTkkgaXMgZW5hYmxlZCBvciB3ZSBhcmUgdXNpbmcgR21haWxcclxuICAgICAgICBpZiAoZW5hYmxlU05JIHx8IGhvc3QgPT09ICdpbWFwLmdtYWlsLmNvbScpIHtcclxuICAgICAgICAgICAgX2NvbmZpZy5pbWFwLnRsc09wdGlvbnMgPSB7IHNlcnZlcm5hbWU6IGhvc3QgfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgUmV0cmlldmVzIGxhc3QgdW5zZWVuIGVtYWlsLlxyXG4gICAgICogQGZ1bmN0aW9uIGdldExhc3RFbWFpbFxyXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHNpbmNlTWludXRlcyAtIFNlYXJjaCBmb3IgZW1haWxzIHJlY2VpdmVkIHNpbmNlIHRoZSBzcGVjaWZpZWQgYW1vdW50IG9mIG1pbnV0ZXMgaW50byBwYXN0LlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd8UmVnZXh9IHN1YmplY3QgLSBSZXR1cm4gZW1haWwgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCBzdWJqZWN0LlxyXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHRpbWVvdXQgLSBUaW1lb3V0IChpbiBtaWxsaXNlY29uZHMpIGZvciB3YWl0aW5nIGZvciB0aGUgbWVzc2FnZSB0byBhcnJpdmUuXHJcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IEVtYWlsIGJvZHksIHRleHQsIHRleHRBc0h0bWwsIGF0dGFjaG1lbnRzIGlmIGFueSwgYW5kIFRPLCBGUk9NLCBTVUJKRUNULCBEQVRFIGhlYWRlcnMuXHJcbiAgICAgKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cclxuICAgICAqIGVtYWlsLmluaXQoJ1tZT1VSX0VNQUlMXUBnbWFpbC5jb20nLCAncGFzc3dvcmQnLCAnaW1hcC5nbWFpbC5jb20nLCA5OTMsIHRydWUsIDMwMDApO1xyXG4gICAgICogdmFyIG1haWwgPSBlbWFpbC5nZXRMYXN0RW1haWwoNjAsICdlbWFpbCBzdWJqZWN0JywgNTAwMCk7XHJcbiAgICAgKiBsb2cuaW5mbyhtYWlsKTtcclxuICAgICAqIFxyXG4gICAgICogaWYoci5hdHRhY2htZW50cyAmJiByLmF0dGFjaG1lbnRzLmxlbmd0aCA+IDApe1xyXG4gICAgICogXHRjb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XHJcbiAgICAgKiBcdHIuYXR0YWNobWVudHMubWFwKChhdHRhY2htZW50KSA9PiB7XHJcbiAgICAgKiBcdFx0bGV0IGZpbGVEZXNjcmlwdG9yO1xyXG4gICAgICogXHRcdHRyeXtcclxuICAgICAqIFx0XHRcdGZpbGVEZXNjcmlwdG9yID0gZnMub3BlblN5bmMoYXR0YWNobWVudC5maWxlbmFtZSwgJ3cnKTtcclxuICAgICAqIFx0XHR9IGNhdGNoKGUpIHtcclxuICAgICAqIFx0XHRcdHRocm93ICdjb3VsZCBub3Qgb3BlbiBmaWxlOiAnICsgZTtcclxuICAgICAqIFx0XHR9XHJcbiAgICAgKiBcdFx0XHJcbiAgICAgKiBcdFx0dHJ5e1xyXG4gICAgICogXHRcdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlRGVzY3JpcHRvciwgYXR0YWNobWVudC5kYXRhKTtcclxuICAgICAqIFx0XHR9IGNhdGNoKGUpIHtcclxuICAgICAqIFx0XHRcdHRocm93ICdlcnJvciB3cml0aW5nIGZpbGU6ICcgKyBlO1xyXG4gICAgICogXHRcdH1cclxuICAgICAqIFx0XHRcclxuICAgICAqIFx0XHRmcy5jbG9zZVN5bmMoZmlsZURlc2NyaXB0b3IpO1xyXG4gICAgICogXHR9KTtcclxuICAgICAqIH1cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmdldExhc3RFbWFpbCA9IGFzeW5jIGZ1bmN0aW9uKHNpbmNlTWludXRlcywgc3ViamVjdCwgdGltZW91dCkge1xyXG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUoc2luY2VNaW51dGVzLCAnc2luY2VNaW51dGVzJyk7XHJcbiAgICAgICAgdXRpbHMuYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZSh0aW1lb3V0LCAndGltZW91dCcpO1xyXG5cclxuICAgICAgICB2YXIgbWFpbDtcclxuICAgICAgICB2YXIgbm93ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcclxuICAgICAgICB2YXIgZXJyO1xyXG5cclxuICAgICAgICB3aGlsZSAoIWVyciAmJiAhbWFpbCAmJiAoKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAtIG5vdykgPCB0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb25uZWN0aW9uID0gYXdhaXQgaW1hcHMuY29ubmVjdChfY29uZmlnKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ub3BlbkJveCgnSU5CT1gnKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBmZXRjaCB1bnNlZW4gZW1haWxzIGZyb20gdGhlIGxhc3Qgc2luY2VNaW51dGVzXHJcbiAgICAgICAgICAgICAgICB2YXIgc3RhcnREYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZS5zZXRUaW1lKERhdGUubm93KCkgLSAoc2luY2VNaW51dGVzICogNjAgKiAxMDAwKSk7XHJcbiAgICAgICAgICAgICAgICBzdGFydERhdGUgPSBzdGFydERhdGUudG9JU09TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHZhciBzZWFyY2hDcml0ZXJpYSA9IFsnVU5TRUVOJywgWydTSU5DRScsIHN0YXJ0RGF0ZV1dO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIGZldGNoIGNlcnRhaW4gaGVhZGVycyBhbmQgc3RyaXBwZWQgZG93biBib2R5XHJcbiAgICAgICAgICAgICAgICB2YXIgZmV0Y2hPcHRpb25zID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGJvZGllczogWydIRUFERVIuRklFTERTIChGUk9NIFRPIFNVQkpFQ1QgREFURSknLCAnVEVYVCddLFxyXG4gICAgICAgICAgICAgICAgICAgIHN0cnVjdDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBtYXJrU2VlbjogZmFsc2VcclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGNvbm5lY3Rpb24uc2VhcmNoKHNlYXJjaENyaXRlcmlhLCBmZXRjaE9wdGlvbnMpO1xyXG5cclxuICAgICAgICAgICAgICAgIGZvciAodmFyIHJlc3VsdCBvZiByZXN1bHRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVhZGVyUGFydCA9IF8uZmluZChyZXN1bHQucGFydHMsIHsgJ3doaWNoJzogZmV0Y2hPcHRpb25zLmJvZGllc1swXSB9KTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBib2R5UGFydCA9IF8uZmluZChyZXN1bHQucGFydHMsIHsgJ3doaWNoJzogZmV0Y2hPcHRpb25zLmJvZGllc1sxXSB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWQgPSByZXN1bHQuYXR0cmlidXRlcy51aWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWRIZWFkZXIgPSAnSW1hcC1JZDogJytpZCsnXFxyXFxuJztcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaW1wbGUgPSBhd2FpdCBzaW1wbGVQYXJzZXIoaWRIZWFkZXIrYm9keVBhcnQuYm9keSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJ0cyA9IGltYXBzLmdldFBhcnRzKHJlc3VsdC5hdHRyaWJ1dGVzLnN0cnVjdCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFydC5kaXNwb3NpdGlvbiAmJiBwYXJ0LmRpc3Bvc2l0aW9uLnR5cGUudG9VcHBlckNhc2UoKSA9PT0gJ0FUVEFDSE1FTlQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJ0RGF0YSA9IGF3YWl0IGNvbm5lY3Rpb24uZ2V0UGFydERhdGEocmVzdWx0LCBwYXJ0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lOiBwYXJ0LmRpc3Bvc2l0aW9uLnBhcmFtcy5maWxlbmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBwYXJ0RGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBib2R5O1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBodG1sO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0QXNIdG1sO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzaW1wbGUuaHRtbCB8fCBzaW1wbGUudGV4dCB8fCBzaW1wbGUudGV4dEFzSHRtbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXJzZWQgc3VjY2Vzc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gYm9keVBhcnQudGV4dDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCA9IHNpbXBsZS5odG1sO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QXNIdG1sID0gc2ltcGxlLnRleHRBc0h0bWw7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9uJ3QgcGFyc2VkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSBib2R5UGFydC5ib2R5O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlclBhcnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdCAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1YmplY3QuY29uc3RydWN0b3IubmFtZSA9PT0gJ1JlZ0V4cCcgJiYgc3ViamVjdC50ZXN0KGhlYWRlclBhcnQuYm9keS5zdWJqZWN0WzBdKSkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3ViamVjdCA9PT0gaGVhZGVyUGFydC5ib2R5LnN1YmplY3RbMF0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRvID0gaGVhZGVyUGFydC5ib2R5LnRvID8gaGVhZGVyUGFydC5ib2R5LnRvWzBdIDogbnVsbDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWlsID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb206IGhlYWRlclBhcnQuYm9keS5mcm9tWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvOiB0byxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJqZWN0OiBoZWFkZXJQYXJ0LmJvZHkuc3ViamVjdFswXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlOiBoZWFkZXJQYXJ0LmJvZHkuZGF0ZVswXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBib2R5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzOiBhdHRhY2htZW50cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QXNIdG1sOiB0ZXh0QXNIdG1sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWw6IGh0bWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGVyciA9IGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5FTUFJTF9FUlJPUiwgZXJyLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoIW1haWwpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5USU1FT1VULCBcIkNvdWxkbid0IGdldCBhbiBlbWFpbCB3aXRoaW4gXCIgKyB0aW1lb3V0ICsgJyBtcy4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtYWlsO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNlbmQgZW1haWwgdXNpbmcgU01UUC5cclxuICAgICAqIEBmdW5jdGlvbiBzZW5kXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gdG8gLSBSZWNlaXZlcidzIGVtYWlsIGFkZHJlc3MuXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gc3ViamVjdCAtIEVtYWlsIHN1YmplY3QuXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gY29udGVudCAtIEVtYWlsIGJvZHkgYXMgYSBwbGFpbiB0ZXh0LlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmc9fSBodG1sIC0gT3B0aW9uYWwsIEVtYWlsIGJvZHkgYXMgSFRNTC5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLnNlbmQgPSBhc3luYyBmdW5jdGlvbih0bywgc3ViamVjdCwgY29udGVudCwgaHRtbCA9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGxldCBlcnIgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgU01UUCB0cmFuc3BvcnRlciBvYmplY3RcclxuICAgICAgICAgICAgY29uc3QgdHJhbnNwb3J0ZXIgPSBub2RlbWFpbGVyLmNyZWF0ZVRyYW5zcG9ydCh7XHJcbiAgICAgICAgICAgICAgICBob3N0OiBfc210cENvbmZpZy5ob3N0LFxyXG4gICAgICAgICAgICAgICAgcG9ydDogX3NtdHBDb25maWcucG9ydCxcclxuICAgICAgICAgICAgICAgIHNlY3VyZTogX3NtdHBDb25maWcudGxzLFxyXG4gICAgICAgICAgICAgICAgYXV0aDoge1xyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI6IF9zbXRwQ29uZmlnLnVzZXJuYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhc3M6IF9zbXRwQ29uZmlnLnBhc3N3b3JkLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNlbmRtYWlsOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGxvZ2dlcjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbkxvZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBkZWJ1ZzogZmFsc2UsXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgLy8gTWVzc2FnZSBvYmplY3RcclxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHtcclxuICAgICAgICAgICAgICAgIHRvOiB0byxcclxuICAgICAgICAgICAgICAgIC8vIFN1YmplY3Qgb2YgdGhlIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgIHN1YmplY3Q6IHN1YmplY3QgfHwgJycsXHJcbiAgICAgICAgICAgICAgICAvLyBwbGFpbnRleHQgYm9keVxyXG4gICAgICAgICAgICAgICAgdGV4dDogY29udGVudCxcclxuICAgICAgICAgICAgICAgIC8vIEhUTUwgYm9keVxyXG4gICAgICAgICAgICAgICAgaHRtbDogaHRtbCxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGF3YWl0IHRyYW5zcG9ydGVyLnNlbmRNYWlsKG1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBlcnIgPSBlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuRU1BSUxfRVJST1IsIGVyci50b1N0cmluZygpKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBtb2R1bGU7XHJcbn07XHJcbiJdfQ==