{"version":3,"file":"885-a0d6229506.js","mappings":"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","sources":["webpack://source-maps/ClientApp/node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/directLineStreaming.js","webpack://source-maps/ClientApp/node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/streaming/WebSocketClientWithNetworkInformation.js","webpack://source-maps/ClientApp/node_modules/.pnpm/botframework-streaming@4.20.0/node_modules/botframework-streaming/lib/index-browser.js","webpack://source-maps/ClientApp/node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/parseFilename.js","webpack://source-maps/ClientApp/node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/createDeferred.js","webpack://source-maps/ClientApp/node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/directLine.js","webpack://source-maps/ClientApp/node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/dedupeFilenames.js"],"sourcesContent":["\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DirectLineStreaming = void 0;\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _classPrivateFieldGet2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classPrivateFieldGet\"));\n\nvar _classPrivateFieldSet2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classPrivateFieldSet\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _BehaviorSubject = require(\"rxjs/BehaviorSubject\");\n\nvar _buffer = require(\"buffer\");\n\nvar _Observable = require(\"rxjs/Observable\");\n\nvar BFSE = _interopRequireWildcard(require(\"botframework-streaming\"));\n\nvar _createDeferred = _interopRequireDefault(require(\"./createDeferred\"));\n\nvar _crossFetch = _interopRequireDefault(require(\"cross-fetch\"));\n\nvar _directLine = require(\"./directLine\");\n\nvar _WebSocketClientWithNetworkInformation = _interopRequireDefault(require(\"./streaming/WebSocketClientWithNetworkInformation\"));\n\nvar _excluded = [\"attachments\"];\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar DIRECT_LINE_VERSION = 'DirectLine/3.0';\nvar MAX_RETRY_COUNT = 3;\nvar refreshTokenLifetime = 30 * 60 * 1000; //const refreshTokenLifetime = 5000;\n// const timeout = 20 * 1000;\n\nvar refreshTokenInterval = refreshTokenLifetime / 2;\n\nvar StreamHandler = /*#__PURE__*/function () {\n function StreamHandler(s, c$, sq) {\n (0, _classCallCheck2[\"default\"])(this, StreamHandler);\n (0, _defineProperty2[\"default\"])(this, \"activityQueue\", []);\n this.subscriber = s;\n this.connectionStatus$ = c$;\n this.shouldQueue = sq;\n }\n\n (0, _createClass2[\"default\"])(StreamHandler, [{\n key: \"setSubscriber\",\n value: function setSubscriber(s) {\n this.subscriber = s;\n }\n }, {\n key: \"processRequest\",\n value: function () {\n var _processRequest = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(request, logger) {\n var streams, stream0, activitySetJson, activitySet, activity, attachments, stream, attachment, dataUri;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n streams = (0, _toConsumableArray2[\"default\"])(request.streams);\n stream0 = streams.shift();\n _context.next = 4;\n return stream0.readAsString();\n\n case 4:\n activitySetJson = _context.sent;\n activitySet = JSON.parse(activitySetJson);\n\n if (!(activitySet.activities.length !== 1)) {\n _context.next = 9;\n break;\n }\n\n // Only one activity is expected in a set in streaming\n this.subscriber.error(new Error('there should be exactly one activity'));\n return _context.abrupt(\"return\", BFSE.StreamingResponse.create(500));\n\n case 9:\n activity = activitySet.activities[0];\n\n if (!(streams.length > 0)) {\n _context.next = 21;\n break;\n }\n\n attachments = (0, _toConsumableArray2[\"default\"])(activity.attachments);\n\n case 12:\n if (!(stream = streams.shift())) {\n _context.next = 20;\n break;\n }\n\n _context.next = 15;\n return stream.readAsString();\n\n case 15:\n attachment = _context.sent;\n dataUri = 'data:text/plain;base64,' + attachment;\n attachments.push({\n contentType: stream.contentType,\n contentUrl: dataUri\n });\n _context.next = 12;\n break;\n\n case 20:\n activity.attachments = attachments;\n\n case 21:\n if (this.shouldQueue()) {\n this.activityQueue.push(activity);\n } else {\n this.subscriber.next(activity);\n }\n\n return _context.abrupt(\"return\", BFSE.StreamingResponse.create(200));\n\n case 23:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function processRequest(_x, _x2) {\n return _processRequest.apply(this, arguments);\n }\n\n return processRequest;\n }()\n }, {\n key: \"flush\",\n value: function flush() {\n var _this = this;\n\n this.connectionStatus$.subscribe(function () {});\n this.activityQueue.forEach(function (a) {\n return _this.subscriber.next(a);\n });\n this.activityQueue = [];\n }\n }, {\n key: \"end\",\n value: function end() {\n this.subscriber.complete();\n }\n }]);\n return StreamHandler;\n}();\n\nvar _networkInformation = /*#__PURE__*/new WeakMap();\n\nvar DirectLineStreaming = /*#__PURE__*/function () {\n function DirectLineStreaming(options) {\n var _this2 = this;\n\n (0, _classCallCheck2[\"default\"])(this, DirectLineStreaming);\n (0, _defineProperty2[\"default\"])(this, \"connectionStatus$\", new _BehaviorSubject.BehaviorSubject(_directLine.ConnectionStatus.Uninitialized));\n (0, _defineProperty2[\"default\"])(this, \"_botAgent\", '');\n\n _networkInformation.set(this, {\n writable: true,\n value: void 0\n });\n\n // Rectifies `options.networkInformation`.\n var networkInformation = options === null || options === void 0 ? void 0 : options.networkInformation;\n\n if (typeof networkInformation === 'undefined' || typeof networkInformation.addEventListener === 'function' && typeof networkInformation.removeEventListener === 'function' && typeof networkInformation.type === 'string') {\n (0, _classPrivateFieldSet2[\"default\"])(this, _networkInformation, networkInformation);\n } else {\n console.warn('botframework-directlinejs: \"networkInformation\" option specified must be a `NetworkInformation`-like instance extending `EventTarget` interface with a `type` property returning a string.');\n }\n\n this.token = options.token;\n this.refreshToken()[\"catch\"](function () {\n _this2.connectionStatus$.next(_directLine.ConnectionStatus.ExpiredToken);\n });\n this.domain = options.domain;\n\n if (options.conversationId) {\n this.conversationId = options.conversationId;\n }\n\n this._botAgent = this.getBotAgent(options.botAgent);\n this.queueActivities = true;\n this.activity$ = _Observable.Observable.create( /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2(subscriber) {\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _this2.activitySubscriber = subscriber;\n _this2.theStreamHandler = new StreamHandler(subscriber, _this2.connectionStatus$, function () {\n return _this2.queueActivities;\n }); // Resolving connectDeferred will kick-off the connection.\n\n _this2.connectDeferred.resolve();\n\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function (_x3) {\n return _ref.apply(this, arguments);\n };\n }()).share(); // connectWithRetryAsync() will create the connectDeferred object required in activity$.\n\n this.connectWithRetryAsync();\n }\n\n (0, _createClass2[\"default\"])(DirectLineStreaming, [{\n key: \"reconnect\",\n value: function reconnect(_ref2) {\n var conversationId = _ref2.conversationId,\n token = _ref2.token;\n\n if (this.connectionStatus$.getValue() === _directLine.ConnectionStatus.Ended) {\n throw new Error('Connection has ended.');\n }\n\n this.conversationId = conversationId;\n this.token = token;\n this.connectDeferred.resolve();\n }\n }, {\n key: \"end\",\n value: function end() {\n // Once end() is called, no reconnection can be made.\n this.activitySubscriber.complete();\n this.connectionStatus$.next(_directLine.ConnectionStatus.Ended);\n this.connectionStatus$.complete();\n this.streamConnection.disconnect();\n }\n }, {\n key: \"commonHeaders\",\n value: function commonHeaders() {\n return {\n Authorization: \"Bearer \".concat(this.token),\n 'x-ms-bot-agent': this._botAgent\n };\n }\n }, {\n key: \"getBotAgent\",\n value: function getBotAgent() {\n var customAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var clientAgent = 'directlineStreaming';\n\n if (customAgent) {\n clientAgent += \"; \".concat(customAgent);\n }\n\n return \"\".concat(DIRECT_LINE_VERSION, \" (\").concat(clientAgent, \")\");\n }\n }, {\n key: \"refreshToken\",\n value: function () {\n var _refreshToken = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee3() {\n var firstCall,\n retryCount,\n numberOfAttempts,\n res,\n _yield$res$json,\n token,\n _args3 = arguments;\n\n return _regenerator[\"default\"].wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n firstCall = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : true;\n retryCount = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : 0;\n _context3.next = 4;\n return this.waitUntilOnline();\n\n case 4:\n numberOfAttempts = 0;\n\n case 5:\n if (!(numberOfAttempts < MAX_RETRY_COUNT)) {\n _context3.next = 30;\n break;\n }\n\n numberOfAttempts++;\n _context3.next = 9;\n return new Promise(function (r) {\n return setTimeout(r, refreshTokenInterval);\n });\n\n case 9:\n _context3.prev = 9;\n _context3.next = 12;\n return (0, _crossFetch[\"default\"])(\"\".concat(this.domain, \"/tokens/refresh\"), {\n method: 'POST',\n headers: this.commonHeaders()\n });\n\n case 12:\n res = _context3.sent;\n\n if (!res.ok) {\n _context3.next = 22;\n break;\n }\n\n numberOfAttempts = 0;\n _context3.next = 17;\n return res.json();\n\n case 17:\n _yield$res$json = _context3.sent;\n token = _yield$res$json.token;\n this.token = token;\n _context3.next = 23;\n break;\n\n case 22:\n if (res.status === 403 || res.status === 403) {\n console.error(\"Fatal error while refreshing the token: \".concat(res.status, \" \").concat(res.statusText));\n this.streamConnection.disconnect();\n } else {\n console.warn(\"Refresh attempt #\".concat(numberOfAttempts, \" failed: \").concat(res.status, \" \").concat(res.statusText));\n }\n\n case 23:\n _context3.next = 28;\n break;\n\n case 25:\n _context3.prev = 25;\n _context3.t0 = _context3[\"catch\"](9);\n console.warn(\"Refresh attempt #\".concat(numberOfAttempts, \" threw an exception: \").concat(_context3.t0));\n\n case 28:\n _context3.next = 5;\n break;\n\n case 30:\n console.error('Retries exhausted');\n this.streamConnection.disconnect();\n\n case 32:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[9, 25]]);\n }));\n\n function refreshToken() {\n return _refreshToken.apply(this, arguments);\n }\n\n return refreshToken;\n }()\n }, {\n key: \"postActivity\",\n value: function postActivity(activity) {\n var _this3 = this;\n\n if (this.connectionStatus$.value === _directLine.ConnectionStatus.Ended || this.connectionStatus$.value === _directLine.ConnectionStatus.FailedToConnect) {\n return _Observable.Observable[\"throw\"](new Error('Connection is closed'));\n }\n\n if (activity.type === 'message' && activity.attachments && activity.attachments.length > 0) {\n return this.postMessageWithAttachments(activity);\n }\n\n var resp$ = _Observable.Observable.create( /*#__PURE__*/function () {\n var _ref3 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee4(subscriber) {\n var request, resp, numberOfStreams, idString, _JSON$parse, id;\n\n return _regenerator[\"default\"].wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n request = BFSE.StreamingRequest.create('POST', '/v3/directline/conversations/' + _this3.conversationId + '/activities');\n request.setBody(JSON.stringify(activity));\n _context4.prev = 2;\n _context4.next = 5;\n return _this3.streamConnection.send(request);\n\n case 5:\n resp = _context4.sent;\n\n if (!(resp.statusCode !== 200)) {\n _context4.next = 8;\n break;\n }\n\n throw new Error('PostActivity returned ' + resp.statusCode);\n\n case 8:\n numberOfStreams = resp.streams.length;\n\n if (!(numberOfStreams !== 1)) {\n _context4.next = 11;\n break;\n }\n\n throw new Error('Expected one stream but got ' + numberOfStreams);\n\n case 11:\n _context4.next = 13;\n return resp.streams[0].readAsString();\n\n case 13:\n idString = _context4.sent;\n _JSON$parse = JSON.parse(idString), id = _JSON$parse.Id;\n subscriber.next(id);\n return _context4.abrupt(\"return\", subscriber.complete());\n\n case 19:\n _context4.prev = 19;\n _context4.t0 = _context4[\"catch\"](2);\n // If there is a network issue then its handled by\n // the disconnectionHandler. Everything else can\n // be retried\n console.warn(_context4.t0);\n\n _this3.streamConnection.disconnect();\n\n return _context4.abrupt(\"return\", subscriber.error(_context4.t0));\n\n case 24:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, null, [[2, 19]]);\n }));\n\n return function (_x4) {\n return _ref3.apply(this, arguments);\n };\n }());\n\n return resp$;\n }\n }, {\n key: \"postMessageWithAttachments\",\n value: function postMessageWithAttachments(message) {\n var _this4 = this;\n\n var attachments = message.attachments,\n messageWithoutAttachments = (0, _objectWithoutProperties2[\"default\"])(message, _excluded);\n return _Observable.Observable.create(function (subscriber) {\n var httpContentList = [];\n (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee6() {\n var arrayBuffers, url, request, activityStream, resp, _yield$resp$streams$, id;\n\n return _regenerator[\"default\"].wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.prev = 0;\n _context6.next = 3;\n return Promise.all(attachments.map( /*#__PURE__*/function () {\n var _ref5 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee5(attachment) {\n var media, res;\n return _regenerator[\"default\"].wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n media = attachment;\n _context5.next = 3;\n return (0, _crossFetch[\"default\"])(media.contentUrl);\n\n case 3:\n res = _context5.sent;\n\n if (!res.ok) {\n _context5.next = 12;\n break;\n }\n\n _context5.next = 7;\n return res.arrayBuffer();\n\n case 7:\n _context5.t0 = _context5.sent;\n _context5.t1 = media;\n return _context5.abrupt(\"return\", {\n arrayBuffer: _context5.t0,\n media: _context5.t1\n });\n\n case 12:\n throw new Error('...');\n\n case 13:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }));\n\n return function (_x5) {\n return _ref5.apply(this, arguments);\n };\n }()));\n\n case 3:\n arrayBuffers = _context6.sent;\n arrayBuffers.forEach(function (_ref6) {\n var arrayBuffer = _ref6.arrayBuffer,\n media = _ref6.media;\n\n var buffer = _buffer.Buffer.from(arrayBuffer);\n\n var stream = new BFSE.SubscribableStream();\n stream.write(buffer);\n var httpContent = new BFSE.HttpContent({\n type: media.contentType,\n contentLength: buffer.length\n }, stream);\n httpContentList.push(httpContent);\n });\n url = \"/v3/directline/conversations/\".concat(_this4.conversationId, \"/users/\").concat(messageWithoutAttachments.from.id, \"/upload\");\n request = BFSE.StreamingRequest.create('PUT', url);\n activityStream = new BFSE.SubscribableStream();\n activityStream.write(JSON.stringify(messageWithoutAttachments), 'utf-8');\n request.addStream(new BFSE.HttpContent({\n type: 'application/vnd.microsoft.activity',\n contentLength: activityStream.length\n }, activityStream));\n httpContentList.forEach(function (e) {\n return request.addStream(e);\n });\n _context6.next = 13;\n return _this4.streamConnection.send(request);\n\n case 13:\n resp = _context6.sent;\n\n if (!(resp.streams && resp.streams.length !== 1)) {\n _context6.next = 18;\n break;\n }\n\n subscriber.error(new Error(\"Invalid stream count \".concat(resp.streams.length)));\n _context6.next = 24;\n break;\n\n case 18:\n _context6.next = 20;\n return resp.streams[0].readAsJson();\n\n case 20:\n _yield$resp$streams$ = _context6.sent;\n id = _yield$resp$streams$.Id;\n subscriber.next(id);\n subscriber.complete();\n\n case 24:\n _context6.next = 29;\n break;\n\n case 26:\n _context6.prev = 26;\n _context6.t0 = _context6[\"catch\"](0);\n subscriber.error(_context6.t0);\n\n case 29:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, null, [[0, 26]]);\n }))();\n });\n }\n }, {\n key: \"waitUntilOnline\",\n value: function () {\n var _waitUntilOnline = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee7() {\n var _this5 = this;\n\n return _regenerator[\"default\"].wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n return _context7.abrupt(\"return\", new Promise(function (resolve, reject) {\n _this5.connectionStatus$.subscribe(function (cs) {\n if (cs === _directLine.ConnectionStatus.Online) {\n return resolve();\n }\n }, function (e) {\n return reject(e);\n });\n }));\n\n case 1:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7);\n }));\n\n function waitUntilOnline() {\n return _waitUntilOnline.apply(this, arguments);\n }\n\n return waitUntilOnline;\n }()\n }, {\n key: \"connectAsync\",\n value: function () {\n var _connectAsync = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee9() {\n var _this6 = this;\n\n var re, params, abortController, urlSearchParams, wsUrl;\n return _regenerator[\"default\"].wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n re = new RegExp('^http(s?)');\n\n if (re.test(this.domain)) {\n _context9.next = 3;\n break;\n }\n\n throw 'Domain must begin with http or https';\n\n case 3:\n params = {\n token: this.token\n };\n\n if (this.conversationId) {\n params['conversationId'] = this.conversationId;\n }\n\n abortController = new AbortController();\n urlSearchParams = new URLSearchParams(params).toString();\n wsUrl = \"\".concat(this.domain.replace(re, 'ws$1'), \"/conversations/connect?\").concat(urlSearchParams); // This promise will resolve when it is disconnected.\n\n return _context9.abrupt(\"return\", new Promise( /*#__PURE__*/function () {\n var _ref7 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee8(resolve, reject) {\n var request, response, responseString, conversation;\n return _regenerator[\"default\"].wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.prev = 0;\n _this6.streamConnection = new _WebSocketClientWithNetworkInformation[\"default\"]({\n disconnectionHandler: resolve,\n networkInformation: (0, _classPrivateFieldGet2[\"default\"])(_this6, _networkInformation),\n requestHandler: {\n processRequest: function processRequest(streamingRequest) {\n // If `streamConnection` is still current, allow call to `processRequest()`, otherwise, ignore calls to `processRequest()`.\n // This prevents zombie connections from sending us requests.\n if (abortController.signal.aborted) {\n throw new Error('Cannot process streaming request, `streamingConnection` should be disconnected.');\n }\n\n return _this6.theStreamHandler.processRequest(streamingRequest);\n }\n },\n url: wsUrl\n });\n _this6.queueActivities = true;\n _context8.next = 5;\n return _this6.streamConnection.connect();\n\n case 5:\n request = BFSE.StreamingRequest.create('POST', '/v3/directline/conversations');\n _context8.next = 8;\n return _this6.streamConnection.send(request);\n\n case 8:\n response = _context8.sent;\n\n if (!(response.statusCode !== 200)) {\n _context8.next = 11;\n break;\n }\n\n throw new Error('Connection response code ' + response.statusCode);\n\n case 11:\n if (!(response.streams.length !== 1)) {\n _context8.next = 13;\n break;\n }\n\n throw new Error('Expected 1 stream but got ' + response.streams.length);\n\n case 13:\n _context8.next = 15;\n return response.streams[0].readAsString();\n\n case 15:\n responseString = _context8.sent;\n conversation = JSON.parse(responseString);\n _this6.conversationId = conversation.conversationId;\n\n _this6.connectionStatus$.next(_directLine.ConnectionStatus.Online); // Wait until DL consumers have had a chance to be notified\n // of the connection status change.\n // This is specific to RxJS implementation of observable, which calling subscribe() after next() will still get the value.\n\n\n _context8.next = 21;\n return _this6.waitUntilOnline();\n\n case 21:\n _this6.theStreamHandler.flush();\n\n _this6.queueActivities = false;\n _context8.next = 28;\n break;\n\n case 25:\n _context8.prev = 25;\n _context8.t0 = _context8[\"catch\"](0);\n reject(_context8.t0);\n\n case 28:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8, null, [[0, 25]]);\n }));\n\n return function (_x6, _x7) {\n return _ref7.apply(this, arguments);\n };\n }())[\"finally\"](function () {\n return abortController.abort();\n }));\n\n case 9:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function connectAsync() {\n return _connectAsync.apply(this, arguments);\n }\n\n return connectAsync;\n }()\n }, {\n key: \"connectWithRetryAsync\",\n value: function () {\n var _connectWithRetryAsync = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee10() {\n var _this7 = this;\n\n var numRetries, start;\n return _regenerator[\"default\"].wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return (this.connectDeferred = (0, _createDeferred[\"default\"])()).promise;\n\n case 2:\n numRetries = MAX_RETRY_COUNT;\n this.connectionStatus$.next(_directLine.ConnectionStatus.Connecting);\n\n case 4:\n if (!(numRetries > 0)) {\n _context10.next = 27;\n break;\n }\n\n numRetries--;\n start = Date.now();\n _context10.prev = 7;\n _context10.next = 10;\n return this.connectAsync();\n\n case 10:\n _context10.next = 15;\n break;\n\n case 12:\n _context10.prev = 12;\n _context10.t0 = _context10[\"catch\"](7);\n console.error(_context10.t0);\n\n case 15:\n if (!(this.connectionStatus$.getValue() === _directLine.ConnectionStatus.Ended)) {\n _context10.next = 17;\n break;\n }\n\n return _context10.abrupt(\"return\");\n\n case 17:\n // Make sure we don't signal ConnectionStatus.Connecting twice or more without an actual connection.\n // Subsequent retries should be transparent.\n if (this.connectionStatus$.getValue() !== _directLine.ConnectionStatus.Connecting) {\n this.connectionStatus$.next(_directLine.ConnectionStatus.Connecting);\n } // If the current connection lasted for more than a minute, the previous connection is good, which means:\n // - we should reset the retry counter, and;\n // - we should reconnect immediately.\n\n\n if (!(60000 < Date.now() - start)) {\n _context10.next = 22;\n break;\n }\n\n numRetries = MAX_RETRY_COUNT;\n _context10.next = 25;\n break;\n\n case 22:\n if (!(numRetries > 0)) {\n _context10.next = 25;\n break;\n }\n\n _context10.next = 25;\n return new Promise(function (r) {\n return setTimeout(r, _this7.getRetryDelay());\n });\n\n case 25:\n _context10.next = 4;\n break;\n\n case 27:\n // TODO: [TEST] Make sure FailedToConnect is reported immediately after last disconnection, should be no getRetryDelay().\n // Failed to reconnect after multiple retries.\n this.connectionStatus$.next(_directLine.ConnectionStatus.FailedToConnect);\n\n case 28:\n _context10.next = 0;\n break;\n\n case 30:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10, this, [[7, 12]]);\n }));\n\n function connectWithRetryAsync() {\n return _connectWithRetryAsync.apply(this, arguments);\n }\n\n return connectWithRetryAsync;\n }() // Returns the delay duration in milliseconds\n\n }, {\n key: \"getRetryDelay\",\n value: function getRetryDelay() {\n return Math.floor(3000 + Math.random() * 12000);\n }\n }]);\n return DirectLineStreaming;\n}();\n\nexports.DirectLineStreaming = DirectLineStreaming;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kaXJlY3RMaW5lU3RyZWFtaW5nLnRzIl0sIm5hbWVzIjpbIkRJUkVDVF9MSU5FX1ZFUlNJT04iLCJNQVhfUkVUUllfQ09VTlQiLCJyZWZyZXNoVG9rZW5MaWZldGltZSIsInJlZnJlc2hUb2tlbkludGVydmFsIiwiU3RyZWFtSGFuZGxlciIsInMiLCJjJCIsInNxIiwic3Vic2NyaWJlciIsImNvbm5lY3Rpb25TdGF0dXMkIiwic2hvdWxkUXVldWUiLCJyZXF1ZXN0IiwibG9nZ2VyIiwic3RyZWFtcyIsInN0cmVhbTAiLCJzaGlmdCIsInJlYWRBc1N0cmluZyIsImFjdGl2aXR5U2V0SnNvbiIsImFjdGl2aXR5U2V0IiwiSlNPTiIsInBhcnNlIiwiYWN0aXZpdGllcyIsImxlbmd0aCIsImVycm9yIiwiRXJyb3IiLCJCRlNFIiwiU3RyZWFtaW5nUmVzcG9uc2UiLCJjcmVhdGUiLCJhY3Rpdml0eSIsImF0dGFjaG1lbnRzIiwic3RyZWFtIiwiYXR0YWNobWVudCIsImRhdGFVcmkiLCJwdXNoIiwiY29udGVudFR5cGUiLCJjb250ZW50VXJsIiwiYWN0aXZpdHlRdWV1ZSIsIm5leHQiLCJzdWJzY3JpYmUiLCJmb3JFYWNoIiwiYSIsImNvbXBsZXRlIiwiRGlyZWN0TGluZVN0cmVhbWluZyIsIm9wdGlvbnMiLCJCZWhhdmlvclN1YmplY3QiLCJDb25uZWN0aW9uU3RhdHVzIiwiVW5pbml0aWFsaXplZCIsIm5ldHdvcmtJbmZvcm1hdGlvbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidHlwZSIsImNvbnNvbGUiLCJ3YXJuIiwidG9rZW4iLCJyZWZyZXNoVG9rZW4iLCJFeHBpcmVkVG9rZW4iLCJkb21haW4iLCJjb252ZXJzYXRpb25JZCIsIl9ib3RBZ2VudCIsImdldEJvdEFnZW50IiwiYm90QWdlbnQiLCJxdWV1ZUFjdGl2aXRpZXMiLCJhY3Rpdml0eSQiLCJPYnNlcnZhYmxlIiwiYWN0aXZpdHlTdWJzY3JpYmVyIiwidGhlU3RyZWFtSGFuZGxlciIsImNvbm5lY3REZWZlcnJlZCIsInJlc29sdmUiLCJzaGFyZSIsImNvbm5lY3RXaXRoUmV0cnlBc3luYyIsImdldFZhbHVlIiwiRW5kZWQiLCJzdHJlYW1Db25uZWN0aW9uIiwiZGlzY29ubmVjdCIsIkF1dGhvcml6YXRpb24iLCJjdXN0b21BZ2VudCIsImNsaWVudEFnZW50IiwiZmlyc3RDYWxsIiwicmV0cnlDb3VudCIsIndhaXRVbnRpbE9ubGluZSIsIm51bWJlck9mQXR0ZW1wdHMiLCJQcm9taXNlIiwiciIsInNldFRpbWVvdXQiLCJtZXRob2QiLCJoZWFkZXJzIiwiY29tbW9uSGVhZGVycyIsInJlcyIsIm9rIiwianNvbiIsInN0YXR1cyIsInN0YXR1c1RleHQiLCJ2YWx1ZSIsIkZhaWxlZFRvQ29ubmVjdCIsInBvc3RNZXNzYWdlV2l0aEF0dGFjaG1lbnRzIiwicmVzcCQiLCJTdHJlYW1pbmdSZXF1ZXN0Iiwic2V0Qm9keSIsInN0cmluZ2lmeSIsInNlbmQiLCJyZXNwIiwic3RhdHVzQ29kZSIsIm51bWJlck9mU3RyZWFtcyIsImlkU3RyaW5nIiwiaWQiLCJJZCIsIm1lc3NhZ2UiLCJtZXNzYWdlV2l0aG91dEF0dGFjaG1lbnRzIiwiaHR0cENvbnRlbnRMaXN0IiwiYWxsIiwibWFwIiwibWVkaWEiLCJhcnJheUJ1ZmZlciIsImFycmF5QnVmZmVycyIsImJ1ZmZlciIsIkJ1ZmZlciIsImZyb20iLCJTdWJzY3JpYmFibGVTdHJlYW0iLCJ3cml0ZSIsImh0dHBDb250ZW50IiwiSHR0cENvbnRlbnQiLCJjb250ZW50TGVuZ3RoIiwidXJsIiwiYWN0aXZpdHlTdHJlYW0iLCJhZGRTdHJlYW0iLCJlIiwicmVhZEFzSnNvbiIsInJlamVjdCIsImNzIiwiT25saW5lIiwicmUiLCJSZWdFeHAiLCJ0ZXN0IiwicGFyYW1zIiwiYWJvcnRDb250cm9sbGVyIiwiQWJvcnRDb250cm9sbGVyIiwidXJsU2VhcmNoUGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwidG9TdHJpbmciLCJ3c1VybCIsInJlcGxhY2UiLCJXZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uIiwiZGlzY29ubmVjdGlvbkhhbmRsZXIiLCJyZXF1ZXN0SGFuZGxlciIsInByb2Nlc3NSZXF1ZXN0Iiwic3RyZWFtaW5nUmVxdWVzdCIsInNpZ25hbCIsImFib3J0ZWQiLCJjb25uZWN0IiwicmVzcG9uc2UiLCJyZXNwb25zZVN0cmluZyIsImNvbnZlcnNhdGlvbiIsImZsdXNoIiwiYWJvcnQiLCJwcm9taXNlIiwibnVtUmV0cmllcyIsIkNvbm5lY3RpbmciLCJzdGFydCIsIkRhdGUiLCJub3ciLCJjb25uZWN0QXN5bmMiLCJnZXRSZXRyeURlbGF5IiwiTWF0aCIsImZsb29yIiwicmFuZG9tIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7OztBQUdBLElBQU1BLG1CQUFtQixHQUFHLGdCQUE1QjtBQUNBLElBQU1DLGVBQWUsR0FBRyxDQUF4QjtBQUNBLElBQU1DLG9CQUFvQixHQUFHLEtBQUssRUFBTCxHQUFVLElBQXZDLEMsQ0FDQTtBQUNBOztBQUNBLElBQU1DLG9CQUFvQixHQUFHRCxvQkFBb0IsR0FBRyxDQUFwRDs7SUFnQk1FLGE7QUFNSix5QkFBWUMsQ0FBWixFQUFxQ0MsRUFBckMsRUFBdUVDLEVBQXZFLEVBQTBGO0FBQUE7QUFBQSw0REFGakQsRUFFaUQ7QUFDeEYsU0FBS0MsVUFBTCxHQUFrQkgsQ0FBbEI7QUFDQSxTQUFLSSxpQkFBTCxHQUF5QkgsRUFBekI7QUFDQSxTQUFLSSxXQUFMLEdBQW1CSCxFQUFuQjtBQUNEOzs7O1dBRUQsdUJBQXFCRixDQUFyQixFQUE4QztBQUM1QyxXQUFLRyxVQUFMLEdBQWtCSCxDQUFsQjtBQUNEOzs7OzBHQUVELGlCQUFxQk0sT0FBckIsRUFBb0RDLE1BQXBEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNRQyxnQkFBQUEsT0FEUix1Q0FDc0JGLE9BQU8sQ0FBQ0UsT0FEOUI7QUFFUUMsZ0JBQUFBLE9BRlIsR0FFa0JELE9BQU8sQ0FBQ0UsS0FBUixFQUZsQjtBQUFBO0FBQUEsdUJBR2dDRCxPQUFPLENBQUNFLFlBQVIsRUFIaEM7O0FBQUE7QUFHUUMsZ0JBQUFBLGVBSFI7QUFJUUMsZ0JBQUFBLFdBSlIsR0FJc0JDLElBQUksQ0FBQ0MsS0FBTCxDQUFXSCxlQUFYLENBSnRCOztBQUFBLHNCQU1NQyxXQUFXLENBQUNHLFVBQVosQ0FBdUJDLE1BQXZCLEtBQWtDLENBTnhDO0FBQUE7QUFBQTtBQUFBOztBQU9JO0FBQ0EscUJBQUtkLFVBQUwsQ0FBZ0JlLEtBQWhCLENBQXNCLElBQUlDLEtBQUosQ0FBVSxzQ0FBVixDQUF0QjtBQVJKLGlEQVNXQyxJQUFJLENBQUNDLGlCQUFMLENBQXVCQyxNQUF2QixDQUE4QixHQUE5QixDQVRYOztBQUFBO0FBWVFDLGdCQUFBQSxRQVpSLEdBWW1CVixXQUFXLENBQUNHLFVBQVosQ0FBdUIsQ0FBdkIsQ0FabkI7O0FBQUEsc0JBY01SLE9BQU8sQ0FBQ1MsTUFBUixHQUFpQixDQWR2QjtBQUFBO0FBQUE7QUFBQTs7QUFlVU8sZ0JBQUFBLFdBZlYsdUNBZTRCRCxRQUFRLENBQUNDLFdBZnJDOztBQUFBO0FBQUEsc0JBa0JZQyxNQUFNLEdBQUdqQixPQUFPLENBQUNFLEtBQVIsRUFsQnJCO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUEsdUJBbUIrQmUsTUFBTSxDQUFDZCxZQUFQLEVBbkIvQjs7QUFBQTtBQW1CWWUsZ0JBQUFBLFVBbkJaO0FBb0JZQyxnQkFBQUEsT0FwQlosR0FvQnNCLDRCQUE0QkQsVUFwQmxEO0FBcUJNRixnQkFBQUEsV0FBVyxDQUFDSSxJQUFaLENBQWlCO0FBQUVDLGtCQUFBQSxXQUFXLEVBQUVKLE1BQU0sQ0FBQ0ksV0FBdEI7QUFBbUNDLGtCQUFBQSxVQUFVLEVBQUVIO0FBQS9DLGlCQUFqQjtBQXJCTjtBQUFBOztBQUFBO0FBd0JJSixnQkFBQUEsUUFBUSxDQUFDQyxXQUFULEdBQXVCQSxXQUF2Qjs7QUF4Qko7QUEyQkUsb0JBQUksS0FBS25CLFdBQUwsRUFBSixFQUF3QjtBQUN0Qix1QkFBSzBCLGFBQUwsQ0FBbUJILElBQW5CLENBQXdCTCxRQUF4QjtBQUNELGlCQUZELE1BRU87QUFDTCx1QkFBS3BCLFVBQUwsQ0FBZ0I2QixJQUFoQixDQUFxQlQsUUFBckI7QUFDRDs7QUEvQkgsaURBaUNTSCxJQUFJLENBQUNDLGlCQUFMLENBQXVCQyxNQUF2QixDQUE4QixHQUE5QixDQWpDVDs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPOzs7Ozs7Ozs7O1dBb0NBLGlCQUFlO0FBQUE7O0FBQ2IsV0FBS2xCLGlCQUFMLENBQXVCNkIsU0FBdkIsQ0FBaUMsWUFBTSxDQUFFLENBQXpDO0FBQ0EsV0FBS0YsYUFBTCxDQUFtQkcsT0FBbkIsQ0FBMkIsVUFBQUMsQ0FBQztBQUFBLGVBQUksS0FBSSxDQUFDaEMsVUFBTCxDQUFnQjZCLElBQWhCLENBQXFCRyxDQUFyQixDQUFKO0FBQUEsT0FBNUI7QUFDQSxXQUFLSixhQUFMLEdBQXFCLEVBQXJCO0FBQ0Q7OztXQUVELGVBQWE7QUFDWCxXQUFLNUIsVUFBTCxDQUFnQmlDLFFBQWhCO0FBQ0Q7Ozs7Ozs7SUFHVUMsbUI7QUFtQlgsK0JBQVlDLE9BQVosRUFBaUQ7QUFBQTs7QUFBQTtBQUFBLGdFQWxCdEIsSUFBSUMsZ0NBQUosQ0FBb0JDLDZCQUFpQkMsYUFBckMsQ0FrQnNCO0FBQUEsd0RBSjdCLEVBSTZCOztBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUMvQztBQUNBLFFBQU1DLGtCQUFrQixHQUFHSixPQUFILGFBQUdBLE9BQUgsdUJBQUdBLE9BQU8sQ0FBRUksa0JBQXBDOztBQUVBLFFBQ0UsT0FBT0Esa0JBQVAsS0FBOEIsV0FBOUIsSUFDQyxPQUFPQSxrQkFBa0IsQ0FBQ0MsZ0JBQTFCLEtBQStDLFVBQS9DLElBQ0MsT0FBT0Qsa0JBQWtCLENBQUNFLG1CQUExQixLQUFrRCxVQURuRCxJQUVDLE9BQU9GLGtCQUFrQixDQUFDRyxJQUExQixLQUFtQyxRQUp2QyxFQUtFO0FBQ0Esd0VBQTJCSCxrQkFBM0I7QUFDRCxLQVBELE1BT087QUFDTEksTUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQ0UsNExBREY7QUFHRDs7QUFFRCxTQUFLQyxLQUFMLEdBQWFWLE9BQU8sQ0FBQ1UsS0FBckI7QUFFQSxTQUFLQyxZQUFMLFlBQTBCLFlBQU07QUFDOUIsTUFBQSxNQUFJLENBQUM3QyxpQkFBTCxDQUF1QjRCLElBQXZCLENBQTRCUSw2QkFBaUJVLFlBQTdDO0FBQ0QsS0FGRDtBQUlBLFNBQUtDLE1BQUwsR0FBY2IsT0FBTyxDQUFDYSxNQUF0Qjs7QUFFQSxRQUFJYixPQUFPLENBQUNjLGNBQVosRUFBNEI7QUFDMUIsV0FBS0EsY0FBTCxHQUFzQmQsT0FBTyxDQUFDYyxjQUE5QjtBQUNEOztBQUVELFNBQUtDLFNBQUwsR0FBaUIsS0FBS0MsV0FBTCxDQUFpQmhCLE9BQU8sQ0FBQ2lCLFFBQXpCLENBQWpCO0FBRUEsU0FBS0MsZUFBTCxHQUF1QixJQUF2QjtBQUNBLFNBQUtDLFNBQUwsR0FBaUJDLHVCQUFXcEMsTUFBWDtBQUFBLCtGQUFrQixrQkFBT25CLFVBQVA7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNqQyxnQkFBQSxNQUFJLENBQUN3RCxrQkFBTCxHQUEwQnhELFVBQTFCO0FBQ0EsZ0JBQUEsTUFBSSxDQUFDeUQsZ0JBQUwsR0FBd0IsSUFBSTdELGFBQUosQ0FBa0JJLFVBQWxCLEVBQThCLE1BQUksQ0FBQ0MsaUJBQW5DLEVBQXNEO0FBQUEseUJBQU0sTUFBSSxDQUFDb0QsZUFBWDtBQUFBLGlCQUF0RCxDQUF4QixDQUZpQyxDQUlqQzs7QUFDQSxnQkFBQSxNQUFJLENBQUNLLGVBQUwsQ0FBcUJDLE9BQXJCOztBQUxpQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQUFsQjs7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQU1kQyxLQU5jLEVBQWpCLENBaEMrQyxDQXdDL0M7O0FBQ0EsU0FBS0MscUJBQUw7QUFDRDs7OztXQUVELDBCQUEwRDtBQUFBLFVBQXZDWixjQUF1QyxTQUF2Q0EsY0FBdUM7QUFBQSxVQUF2QkosS0FBdUIsU0FBdkJBLEtBQXVCOztBQUN4RCxVQUFJLEtBQUs1QyxpQkFBTCxDQUF1QjZELFFBQXZCLE9BQXNDekIsNkJBQWlCMEIsS0FBM0QsRUFBa0U7QUFDaEUsY0FBTSxJQUFJL0MsS0FBSixDQUFVLHVCQUFWLENBQU47QUFDRDs7QUFFRCxXQUFLaUMsY0FBTCxHQUFzQkEsY0FBdEI7QUFDQSxXQUFLSixLQUFMLEdBQWFBLEtBQWI7QUFFQSxXQUFLYSxlQUFMLENBQXFCQyxPQUFyQjtBQUNEOzs7V0FFRCxlQUFNO0FBQ0o7QUFDQSxXQUFLSCxrQkFBTCxDQUF3QnZCLFFBQXhCO0FBRUEsV0FBS2hDLGlCQUFMLENBQXVCNEIsSUFBdkIsQ0FBNEJRLDZCQUFpQjBCLEtBQTdDO0FBQ0EsV0FBSzlELGlCQUFMLENBQXVCZ0MsUUFBdkI7QUFFQSxXQUFLK0IsZ0JBQUwsQ0FBc0JDLFVBQXRCO0FBQ0Q7OztXQUVELHlCQUF3QjtBQUN0QixhQUFPO0FBQ0xDLFFBQUFBLGFBQWEsbUJBQVksS0FBS3JCLEtBQWpCLENBRFI7QUFFTCwwQkFBa0IsS0FBS0s7QUFGbEIsT0FBUDtBQUlEOzs7V0FFRCx1QkFBc0Q7QUFBQSxVQUFsQ2lCLFdBQWtDLHVFQUFaLEVBQVk7QUFDcEQsVUFBSUMsV0FBVyxHQUFHLHFCQUFsQjs7QUFFQSxVQUFJRCxXQUFKLEVBQWlCO0FBQ2ZDLFFBQUFBLFdBQVcsZ0JBQVNELFdBQVQsQ0FBWDtBQUNEOztBQUVELHVCQUFVM0UsbUJBQVYsZUFBa0M0RSxXQUFsQztBQUNEOzs7O3dHQUVEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMkJDLGdCQUFBQSxTQUEzQiw4REFBdUMsSUFBdkM7QUFBNkNDLGdCQUFBQSxVQUE3Qyw4REFBMEQsQ0FBMUQ7QUFBQTtBQUFBLHVCQUNRLEtBQUtDLGVBQUwsRUFEUjs7QUFBQTtBQUdNQyxnQkFBQUEsZ0JBSE4sR0FHeUIsQ0FIekI7O0FBQUE7QUFBQSxzQkFJU0EsZ0JBQWdCLEdBQUcvRSxlQUo1QjtBQUFBO0FBQUE7QUFBQTs7QUFLSStFLGdCQUFBQSxnQkFBZ0I7QUFMcEI7QUFBQSx1QkFNVSxJQUFJQyxPQUFKLENBQVksVUFBQUMsQ0FBQztBQUFBLHlCQUFJQyxVQUFVLENBQUNELENBQUQsRUFBSS9FLG9CQUFKLENBQWQ7QUFBQSxpQkFBYixDQU5WOztBQUFBO0FBQUE7QUFBQTtBQUFBLHVCQVF3QixzQ0FBUyxLQUFLcUQsTUFBZCxzQkFBdUM7QUFBRTRCLGtCQUFBQSxNQUFNLEVBQUUsTUFBVjtBQUFrQkMsa0JBQUFBLE9BQU8sRUFBRSxLQUFLQyxhQUFMO0FBQTNCLGlCQUF2QyxDQVJ4Qjs7QUFBQTtBQVFZQyxnQkFBQUEsR0FSWjs7QUFBQSxxQkFTVUEsR0FBRyxDQUFDQyxFQVRkO0FBQUE7QUFBQTtBQUFBOztBQVVRUixnQkFBQUEsZ0JBQWdCLEdBQUcsQ0FBbkI7QUFWUjtBQUFBLHVCQVdnQ08sR0FBRyxDQUFDRSxJQUFKLEVBWGhDOztBQUFBO0FBQUE7QUFXZ0JwQyxnQkFBQUEsS0FYaEIsbUJBV2dCQSxLQVhoQjtBQVlRLHFCQUFLQSxLQUFMLEdBQWFBLEtBQWI7QUFaUjtBQUFBOztBQUFBO0FBY1Esb0JBQUlrQyxHQUFHLENBQUNHLE1BQUosS0FBZSxHQUFmLElBQXNCSCxHQUFHLENBQUNHLE1BQUosS0FBZSxHQUF6QyxFQUE4QztBQUM1Q3ZDLGtCQUFBQSxPQUFPLENBQUM1QixLQUFSLG1EQUF5RGdFLEdBQUcsQ0FBQ0csTUFBN0QsY0FBdUVILEdBQUcsQ0FBQ0ksVUFBM0U7QUFDQSx1QkFBS25CLGdCQUFMLENBQXNCQyxVQUF0QjtBQUNELGlCQUhELE1BR087QUFDTHRCLGtCQUFBQSxPQUFPLENBQUNDLElBQVIsNEJBQWlDNEIsZ0JBQWpDLHNCQUE2RE8sR0FBRyxDQUFDRyxNQUFqRSxjQUEyRUgsR0FBRyxDQUFDSSxVQUEvRTtBQUNEOztBQW5CVDtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBc0JNeEMsZ0JBQUFBLE9BQU8sQ0FBQ0MsSUFBUiw0QkFBaUM0QixnQkFBakM7O0FBdEJOO0FBQUE7QUFBQTs7QUFBQTtBQTBCRTdCLGdCQUFBQSxPQUFPLENBQUM1QixLQUFSLENBQWMsbUJBQWQ7QUFDQSxxQkFBS2lELGdCQUFMLENBQXNCQyxVQUF0Qjs7QUEzQkY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTzs7Ozs7Ozs7OztXQThCQSxzQkFBYTdDLFFBQWIsRUFBaUM7QUFBQTs7QUFDL0IsVUFDRSxLQUFLbkIsaUJBQUwsQ0FBdUJtRixLQUF2QixLQUFpQy9DLDZCQUFpQjBCLEtBQWxELElBQ0EsS0FBSzlELGlCQUFMLENBQXVCbUYsS0FBdkIsS0FBaUMvQyw2QkFBaUJnRCxlQUZwRCxFQUdFO0FBQ0EsZUFBTzlCLGdDQUFpQixJQUFJdkMsS0FBSixDQUFVLHNCQUFWLENBQWpCLENBQVA7QUFDRDs7QUFFRCxVQUFJSSxRQUFRLENBQUNzQixJQUFULEtBQWtCLFNBQWxCLElBQStCdEIsUUFBUSxDQUFDQyxXQUF4QyxJQUF1REQsUUFBUSxDQUFDQyxXQUFULENBQXFCUCxNQUFyQixHQUE4QixDQUF6RixFQUE0RjtBQUMxRixlQUFPLEtBQUt3RSwwQkFBTCxDQUFnQ2xFLFFBQWhDLENBQVA7QUFDRDs7QUFFRCxVQUFNbUUsS0FBSyxHQUFHaEMsdUJBQVdwQyxNQUFYO0FBQUEsa0dBQWtCLGtCQUFNbkIsVUFBTjtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ3hCRyxrQkFBQUEsT0FEd0IsR0FDZGMsSUFBSSxDQUFDdUUsZ0JBQUwsQ0FBc0JyRSxNQUF0QixDQUNkLE1BRGMsRUFFZCxrQ0FBa0MsTUFBSSxDQUFDOEIsY0FBdkMsR0FBd0QsYUFGMUMsQ0FEYztBQUs5QjlDLGtCQUFBQSxPQUFPLENBQUNzRixPQUFSLENBQWdCOUUsSUFBSSxDQUFDK0UsU0FBTCxDQUFldEUsUUFBZixDQUFoQjtBQUw4QjtBQUFBO0FBQUEseUJBUVQsTUFBSSxDQUFDNEMsZ0JBQUwsQ0FBc0IyQixJQUF0QixDQUEyQnhGLE9BQTNCLENBUlM7O0FBQUE7QUFRdEJ5RixrQkFBQUEsSUFSc0I7O0FBQUEsd0JBU3hCQSxJQUFJLENBQUNDLFVBQUwsS0FBb0IsR0FUSTtBQUFBO0FBQUE7QUFBQTs7QUFBQSx3QkFTTyxJQUFJN0UsS0FBSixDQUFVLDJCQUEyQjRFLElBQUksQ0FBQ0MsVUFBMUMsQ0FUUDs7QUFBQTtBQVV0QkMsa0JBQUFBLGVBVnNCLEdBVUpGLElBQUksQ0FBQ3ZGLE9BQUwsQ0FBYVMsTUFWVDs7QUFBQSx3QkFXeEJnRixlQUFlLEtBQUssQ0FYSTtBQUFBO0FBQUE7QUFBQTs7QUFBQSx3QkFXSyxJQUFJOUUsS0FBSixDQUFVLGlDQUFpQzhFLGVBQTNDLENBWEw7O0FBQUE7QUFBQTtBQUFBLHlCQVlMRixJQUFJLENBQUN2RixPQUFMLENBQWEsQ0FBYixFQUFnQkcsWUFBaEIsRUFaSzs7QUFBQTtBQVl0QnVGLGtCQUFBQSxRQVpzQjtBQUFBLGdDQWFUcEYsSUFBSSxDQUFDQyxLQUFMLENBQVdtRixRQUFYLENBYlMsRUFhaEJDLEVBYmdCLGVBYXBCQyxFQWJvQjtBQWM1QmpHLGtCQUFBQSxVQUFVLENBQUM2QixJQUFYLENBQWdCbUUsRUFBaEI7QUFkNEIsb0RBZXJCaEcsVUFBVSxDQUFDaUMsUUFBWCxFQWZxQjs7QUFBQTtBQUFBO0FBQUE7QUFpQjVCO0FBQ0E7QUFDQTtBQUNBVSxrQkFBQUEsT0FBTyxDQUFDQyxJQUFSOztBQUNBLGtCQUFBLE1BQUksQ0FBQ29CLGdCQUFMLENBQXNCQyxVQUF0Qjs7QUFyQjRCLG9EQXNCckJqRSxVQUFVLENBQUNlLEtBQVgsY0F0QnFCOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFNBQWxCOztBQUFBO0FBQUE7QUFBQTtBQUFBLFVBQWQ7O0FBeUJBLGFBQU93RSxLQUFQO0FBQ0Q7OztXQUVELG9DQUFtQ1csT0FBbkMsRUFBcUQ7QUFBQTs7QUFDbkQsVUFBUTdFLFdBQVIsR0FBc0Q2RSxPQUF0RCxDQUFRN0UsV0FBUjtBQUFBLFVBQXdCOEUseUJBQXhCLDZDQUFzREQsT0FBdEQ7QUFFQSxhQUFPM0MsdUJBQVdwQyxNQUFYLENBQWtCLFVBQUFuQixVQUFVLEVBQUk7QUFDckMsWUFBTW9HLGVBQWUsR0FBRyxFQUF4QjtBQUNBLHNGQUFDO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEseUJBRThCM0IsT0FBTyxDQUFDNEIsR0FBUixDQUN6QmhGLFdBQVcsQ0FBQ2lGLEdBQVo7QUFBQSw4R0FBZ0Isa0JBQU0vRSxVQUFOO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNSZ0YsOEJBQUFBLEtBRFEsR0FDQWhGLFVBREE7QUFBQTtBQUFBLHFDQUVJLDRCQUFNZ0YsS0FBSyxDQUFDNUUsVUFBWixDQUZKOztBQUFBO0FBRVJvRCw4QkFBQUEsR0FGUTs7QUFBQSxtQ0FHVkEsR0FBRyxDQUFDQyxFQUhNO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUEscUNBSWdCRCxHQUFHLENBQUN5QixXQUFKLEVBSmhCOztBQUFBO0FBQUE7QUFBQSw2Q0FJbUNELEtBSm5DO0FBQUE7QUFJSEMsZ0NBQUFBLFdBSkc7QUFJbUNELGdDQUFBQSxLQUpuQztBQUFBOztBQUFBO0FBQUEsb0NBTU4sSUFBSXZGLEtBQUosQ0FBVSxLQUFWLENBTk07O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEscUJBQWhCOztBQUFBO0FBQUE7QUFBQTtBQUFBLHNCQUR5QixDQUY5Qjs7QUFBQTtBQUVTeUYsa0JBQUFBLFlBRlQ7QUFjR0Esa0JBQUFBLFlBQVksQ0FBQzFFLE9BQWIsQ0FBcUIsaUJBQTRCO0FBQUEsd0JBQXpCeUUsV0FBeUIsU0FBekJBLFdBQXlCO0FBQUEsd0JBQVpELEtBQVksU0FBWkEsS0FBWTs7QUFDL0Msd0JBQU1HLE1BQU0sR0FBR0MsZUFBT0MsSUFBUCxDQUFZSixXQUFaLENBQWY7O0FBQ0Esd0JBQU1sRixNQUFNLEdBQUcsSUFBSUwsSUFBSSxDQUFDNEYsa0JBQVQsRUFBZjtBQUNBdkYsb0JBQUFBLE1BQU0sQ0FBQ3dGLEtBQVAsQ0FBYUosTUFBYjtBQUNBLHdCQUFNSyxXQUFXLEdBQUcsSUFBSTlGLElBQUksQ0FBQytGLFdBQVQsQ0FBcUI7QUFBRXRFLHNCQUFBQSxJQUFJLEVBQUU2RCxLQUFLLENBQUM3RSxXQUFkO0FBQTJCdUYsc0JBQUFBLGFBQWEsRUFBRVAsTUFBTSxDQUFDNUY7QUFBakQscUJBQXJCLEVBQWdGUSxNQUFoRixDQUFwQjtBQUNBOEUsb0JBQUFBLGVBQWUsQ0FBQzNFLElBQWhCLENBQXFCc0YsV0FBckI7QUFDRCxtQkFORDtBQVFNRyxrQkFBQUEsR0F0QlQsMENBc0IrQyxNQUFJLENBQUNqRSxjQXRCcEQsb0JBc0I0RWtELHlCQUF5QixDQUFDUyxJQUExQixDQUErQlosRUF0QjNHO0FBdUJTN0Ysa0JBQUFBLE9BdkJULEdBdUJtQmMsSUFBSSxDQUFDdUUsZ0JBQUwsQ0FBc0JyRSxNQUF0QixDQUE2QixLQUE3QixFQUFvQytGLEdBQXBDLENBdkJuQjtBQXdCU0Msa0JBQUFBLGNBeEJULEdBd0IwQixJQUFJbEcsSUFBSSxDQUFDNEYsa0JBQVQsRUF4QjFCO0FBeUJHTSxrQkFBQUEsY0FBYyxDQUFDTCxLQUFmLENBQXFCbkcsSUFBSSxDQUFDK0UsU0FBTCxDQUFlUyx5QkFBZixDQUFyQixFQUFnRSxPQUFoRTtBQUNBaEcsa0JBQUFBLE9BQU8sQ0FBQ2lILFNBQVIsQ0FDRSxJQUFJbkcsSUFBSSxDQUFDK0YsV0FBVCxDQUNFO0FBQUV0RSxvQkFBQUEsSUFBSSxFQUFFLG9DQUFSO0FBQThDdUUsb0JBQUFBLGFBQWEsRUFBRUUsY0FBYyxDQUFDckc7QUFBNUUsbUJBREYsRUFFRXFHLGNBRkYsQ0FERjtBQU1BZixrQkFBQUEsZUFBZSxDQUFDckUsT0FBaEIsQ0FBd0IsVUFBQXNGLENBQUM7QUFBQSwyQkFBSWxILE9BQU8sQ0FBQ2lILFNBQVIsQ0FBa0JDLENBQWxCLENBQUo7QUFBQSxtQkFBekI7QUFoQ0g7QUFBQSx5QkFrQ3NCLE1BQUksQ0FBQ3JELGdCQUFMLENBQXNCMkIsSUFBdEIsQ0FBMkJ4RixPQUEzQixDQWxDdEI7O0FBQUE7QUFrQ1N5RixrQkFBQUEsSUFsQ1Q7O0FBQUEsd0JBbUNPQSxJQUFJLENBQUN2RixPQUFMLElBQWdCdUYsSUFBSSxDQUFDdkYsT0FBTCxDQUFhUyxNQUFiLEtBQXdCLENBbkMvQztBQUFBO0FBQUE7QUFBQTs7QUFvQ0tkLGtCQUFBQSxVQUFVLENBQUNlLEtBQVgsQ0FBaUIsSUFBSUMsS0FBSixnQ0FBa0M0RSxJQUFJLENBQUN2RixPQUFMLENBQWFTLE1BQS9DLEVBQWpCO0FBcENMO0FBQUE7O0FBQUE7QUFBQTtBQUFBLHlCQXNDOEI4RSxJQUFJLENBQUN2RixPQUFMLENBQWEsQ0FBYixFQUFnQmlILFVBQWhCLEVBdEM5Qjs7QUFBQTtBQUFBO0FBc0NpQnRCLGtCQUFBQSxFQXRDakIsd0JBc0NhQyxFQXRDYjtBQXVDS2pHLGtCQUFBQSxVQUFVLENBQUM2QixJQUFYLENBQWdCbUUsRUFBaEI7QUFDQWhHLGtCQUFBQSxVQUFVLENBQUNpQyxRQUFYOztBQXhDTDtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBMkNHakMsa0JBQUFBLFVBQVUsQ0FBQ2UsS0FBWDs7QUEzQ0g7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FBRDtBQThDRCxPQWhETSxDQUFQO0FBaUREOzs7OzJHQUVEO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxrREFDUyxJQUFJMEQsT0FBSixDQUFrQixVQUFDZCxPQUFELEVBQVU0RCxNQUFWLEVBQXFCO0FBQzVDLGtCQUFBLE1BQUksQ0FBQ3RILGlCQUFMLENBQXVCNkIsU0FBdkIsQ0FDRSxVQUFBMEYsRUFBRSxFQUFJO0FBQ0osd0JBQUlBLEVBQUUsS0FBS25GLDZCQUFpQm9GLE1BQTVCLEVBQW9DO0FBQ2xDLDZCQUFPOUQsT0FBTyxFQUFkO0FBQ0Q7QUFDRixtQkFMSCxFQU1FLFVBQUEwRCxDQUFDO0FBQUEsMkJBQUlFLE1BQU0sQ0FBQ0YsQ0FBRCxDQUFWO0FBQUEsbUJBTkg7QUFRRCxpQkFUTSxDQURUOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE87Ozs7Ozs7Ozs7O3dHQWFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNRSyxnQkFBQUEsRUFEUixHQUNhLElBQUlDLE1BQUosQ0FBVyxXQUFYLENBRGI7O0FBQUEsb0JBR09ELEVBQUUsQ0FBQ0UsSUFBSCxDQUFRLEtBQUs1RSxNQUFiLENBSFA7QUFBQTtBQUFBO0FBQUE7O0FBQUEsc0JBSVUsc0NBSlY7O0FBQUE7QUFPUTZFLGdCQUFBQSxNQVBSLEdBT2lCO0FBQUVoRixrQkFBQUEsS0FBSyxFQUFFLEtBQUtBO0FBQWQsaUJBUGpCOztBQVNFLG9CQUFJLEtBQUtJLGNBQVQsRUFBeUI7QUFDdkI0RSxrQkFBQUEsTUFBTSxDQUFDLGdCQUFELENBQU4sR0FBMkIsS0FBSzVFLGNBQWhDO0FBQ0Q7O0FBRUs2RSxnQkFBQUEsZUFiUixHQWEwQixJQUFJQyxlQUFKLEVBYjFCO0FBY1FDLGdCQUFBQSxlQWRSLEdBYzBCLElBQUlDLGVBQUosQ0FBb0JKLE1BQXBCLEVBQTRCSyxRQUE1QixFQWQxQjtBQWVRQyxnQkFBQUEsS0FmUixhQWVtQixLQUFLbkYsTUFBTCxDQUFZb0YsT0FBWixDQUFvQlYsRUFBcEIsRUFBd0IsTUFBeEIsQ0FmbkIsb0NBZTRFTSxlQWY1RSxHQWlCRTs7QUFqQkYsa0RBa0JTLElBQUl2RCxPQUFKO0FBQUEsNEdBQVksa0JBQU9kLE9BQVAsRUFBZ0I0RCxNQUFoQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVmLDRCQUFBLE1BQUksQ0FBQ3ZELGdCQUFMLEdBQXdCLElBQUlxRSxpREFBSixDQUEwQztBQUNoRUMsOEJBQUFBLG9CQUFvQixFQUFFM0UsT0FEMEM7QUFFaEVwQiw4QkFBQUEsa0JBQWtCLHlDQUFFLE1BQUYsc0JBRjhDO0FBR2hFZ0csOEJBQUFBLGNBQWMsRUFBRTtBQUNkQyxnQ0FBQUEsY0FBYyxFQUFFLHdCQUFBQyxnQkFBZ0IsRUFBSTtBQUNsQztBQUNBO0FBQ0Esc0NBQUlYLGVBQWUsQ0FBQ1ksTUFBaEIsQ0FBdUJDLE9BQTNCLEVBQW9DO0FBQ2xDLDBDQUFNLElBQUkzSCxLQUFKLENBQVUsaUZBQVYsQ0FBTjtBQUNEOztBQUVELHlDQUFPLE1BQUksQ0FBQ3lDLGdCQUFMLENBQXNCK0UsY0FBdEIsQ0FBcUNDLGdCQUFyQyxDQUFQO0FBQ0Q7QUFUYSwrQkFIZ0Q7QUFjaEV2Qiw4QkFBQUEsR0FBRyxFQUFFaUI7QUFkMkQsNkJBQTFDLENBQXhCO0FBaUJBLDRCQUFBLE1BQUksQ0FBQzlFLGVBQUwsR0FBdUIsSUFBdkI7QUFuQmU7QUFBQSxtQ0FxQlQsTUFBSSxDQUFDVyxnQkFBTCxDQUFzQjRFLE9BQXRCLEVBckJTOztBQUFBO0FBdUJUekksNEJBQUFBLE9BdkJTLEdBdUJDYyxJQUFJLENBQUN1RSxnQkFBTCxDQUFzQnJFLE1BQXRCLENBQTZCLE1BQTdCLEVBQXFDLDhCQUFyQyxDQXZCRDtBQUFBO0FBQUEsbUNBd0JRLE1BQUksQ0FBQzZDLGdCQUFMLENBQXNCMkIsSUFBdEIsQ0FBMkJ4RixPQUEzQixDQXhCUjs7QUFBQTtBQXdCVDBJLDRCQUFBQSxRQXhCUzs7QUFBQSxrQ0EwQlhBLFFBQVEsQ0FBQ2hELFVBQVQsS0FBd0IsR0ExQmI7QUFBQTtBQUFBO0FBQUE7O0FBQUEsa0NBMkJQLElBQUk3RSxLQUFKLENBQVUsOEJBQThCNkgsUUFBUSxDQUFDaEQsVUFBakQsQ0EzQk87O0FBQUE7QUFBQSxrQ0E4QlhnRCxRQUFRLENBQUN4SSxPQUFULENBQWlCUyxNQUFqQixLQUE0QixDQTlCakI7QUFBQTtBQUFBO0FBQUE7O0FBQUEsa0NBK0JQLElBQUlFLEtBQUosQ0FBVSwrQkFBK0I2SCxRQUFRLENBQUN4SSxPQUFULENBQWlCUyxNQUExRCxDQS9CTzs7QUFBQTtBQUFBO0FBQUEsbUNBa0NjK0gsUUFBUSxDQUFDeEksT0FBVCxDQUFpQixDQUFqQixFQUFvQkcsWUFBcEIsRUFsQ2Q7O0FBQUE7QUFrQ1RzSSw0QkFBQUEsY0FsQ1M7QUFtQ1RDLDRCQUFBQSxZQW5DUyxHQW1DTXBJLElBQUksQ0FBQ0MsS0FBTCxDQUFXa0ksY0FBWCxDQW5DTjtBQXFDZiw0QkFBQSxNQUFJLENBQUM3RixjQUFMLEdBQXNCOEYsWUFBWSxDQUFDOUYsY0FBbkM7O0FBQ0EsNEJBQUEsTUFBSSxDQUFDaEQsaUJBQUwsQ0FBdUI0QixJQUF2QixDQUE0QlEsNkJBQWlCb0YsTUFBN0MsRUF0Q2UsQ0F3Q2Y7QUFDQTtBQUNBOzs7QUExQ2U7QUFBQSxtQ0EyQ1QsTUFBSSxDQUFDbEQsZUFBTCxFQTNDUzs7QUFBQTtBQTZDZiw0QkFBQSxNQUFJLENBQUNkLGdCQUFMLENBQXNCdUYsS0FBdEI7O0FBQ0EsNEJBQUEsTUFBSSxDQUFDM0YsZUFBTCxHQUF1QixLQUF2QjtBQTlDZTtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQWdEZmtFLDRCQUFBQSxNQUFNLGNBQU47O0FBaERlO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQUFaOztBQUFBO0FBQUE7QUFBQTtBQUFBLGdDQWtESTtBQUFBLHlCQUFNTyxlQUFlLENBQUNtQixLQUFoQixFQUFOO0FBQUEsaUJBbERKLENBbEJUOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE87Ozs7Ozs7Ozs7O2lIQXVFQTtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHVCQU1VLENBQUMsS0FBS3ZGLGVBQUwsR0FBdUIsaUNBQXhCLEVBQTBDd0YsT0FOcEQ7O0FBQUE7QUFRUUMsZ0JBQUFBLFVBUlIsR0FRcUIxSixlQVJyQjtBQVVJLHFCQUFLUSxpQkFBTCxDQUF1QjRCLElBQXZCLENBQTRCUSw2QkFBaUIrRyxVQUE3Qzs7QUFWSjtBQUFBLHNCQVlXRCxVQUFVLEdBQUcsQ0FaeEI7QUFBQTtBQUFBO0FBQUE7O0FBYU1BLGdCQUFBQSxVQUFVO0FBRUpFLGdCQUFBQSxLQWZaLEdBZW9CQyxJQUFJLENBQUNDLEdBQUwsRUFmcEI7QUFBQTtBQUFBO0FBQUEsdUJBbUJjLEtBQUtDLFlBQUwsRUFuQmQ7O0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQXFCUTdHLGdCQUFBQSxPQUFPLENBQUM1QixLQUFSOztBQXJCUjtBQUFBLHNCQXlCVSxLQUFLZCxpQkFBTCxDQUF1QjZELFFBQXZCLE9BQXNDekIsNkJBQWlCMEIsS0F6QmpFO0FBQUE7QUFBQTtBQUFBOztBQUFBOztBQUFBO0FBOEJNO0FBQ0E7QUFDQSxvQkFBSSxLQUFLOUQsaUJBQUwsQ0FBdUI2RCxRQUF2QixPQUFzQ3pCLDZCQUFpQitHLFVBQTNELEVBQXVFO0FBQ3JFLHVCQUFLbkosaUJBQUwsQ0FBdUI0QixJQUF2QixDQUE0QlEsNkJBQWlCK0csVUFBN0M7QUFDRCxpQkFsQ1AsQ0FvQ007QUFDQTtBQUNBOzs7QUF0Q04sc0JBdUNVLFFBQVFFLElBQUksQ0FBQ0MsR0FBTCxLQUFhRixLQXZDL0I7QUFBQTtBQUFBO0FBQUE7O0FBd0NRRixnQkFBQUEsVUFBVSxHQUFHMUosZUFBYjtBQXhDUjtBQUFBOztBQUFBO0FBQUEsc0JBeUNpQjBKLFVBQVUsR0FBRyxDQXpDOUI7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQSx1QkEyQ2MsSUFBSTFFLE9BQUosQ0FBWSxVQUFBQyxDQUFDO0FBQUEseUJBQUlDLFVBQVUsQ0FBQ0QsQ0FBRCxFQUFJLE1BQUksQ0FBQytFLGFBQUwsRUFBSixDQUFkO0FBQUEsaUJBQWIsQ0EzQ2Q7O0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBK0NJO0FBQ0E7QUFDQSxxQkFBS3hKLGlCQUFMLENBQXVCNEIsSUFBdkIsQ0FBNEJRLDZCQUFpQmdELGVBQTdDOztBQWpESjtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTzs7Ozs7OztRQXVEQTs7OztXQUNBLHlCQUF3QjtBQUN0QixhQUFPcUUsSUFBSSxDQUFDQyxLQUFMLENBQVcsT0FBT0QsSUFBSSxDQUFDRSxNQUFMLEtBQWdCLEtBQWxDLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEluIG9yZGVyIHRvIGtlZXAgZmlsZSBzaXplIGRvd24sIG9ubHkgaW1wb3J0IHRoZSBwYXJ0cyBvZiByeGpzIHRoYXQgd2UgdXNlXG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMvQmVoYXZpb3JTdWJqZWN0JztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ2J1ZmZlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcy9PYnNlcnZhYmxlJztcbmltcG9ydCB7IFN1YnNjcmliZXIgfSBmcm9tICdyeGpzL1N1YnNjcmliZXInO1xuaW1wb3J0ICogYXMgQkZTRSBmcm9tICdib3RmcmFtZXdvcmstc3RyZWFtaW5nJztcbmltcG9ydCBjcmVhdGVEZWZlcnJlZCBmcm9tICcuL2NyZWF0ZURlZmVycmVkJztcbmltcG9ydCBmZXRjaCBmcm9tICdjcm9zcy1mZXRjaCc7XG5cbmltcG9ydCB7IEFjdGl2aXR5LCBDb25uZWN0aW9uU3RhdHVzLCBDb252ZXJzYXRpb24sIERpcmVjdExpbmUsIElCb3RDb25uZWN0aW9uLCBNZWRpYSwgTWVzc2FnZSB9IGZyb20gJy4vZGlyZWN0TGluZSc7XG5pbXBvcnQgV2ViU29ja2V0Q2xpZW50V2l0aE5ldHdvcmtJbmZvcm1hdGlvbiBmcm9tICcuL3N0cmVhbWluZy9XZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uJztcbmltcG9ydCB0eXBlIHsgRGVmZXJyZWQgfSBmcm9tICcuL2NyZWF0ZURlZmVycmVkJztcblxuY29uc3QgRElSRUNUX0xJTkVfVkVSU0lPTiA9ICdEaXJlY3RMaW5lLzMuMCc7XG5jb25zdCBNQVhfUkVUUllfQ09VTlQgPSAzO1xuY29uc3QgcmVmcmVzaFRva2VuTGlmZXRpbWUgPSAzMCAqIDYwICogMTAwMDtcbi8vY29uc3QgcmVmcmVzaFRva2VuTGlmZXRpbWUgPSA1MDAwO1xuLy8gY29uc3QgdGltZW91dCA9IDIwICogMTAwMDtcbmNvbnN0IHJlZnJlc2hUb2tlbkludGVydmFsID0gcmVmcmVzaFRva2VuTGlmZXRpbWUgLyAyO1xuXG5pbnRlcmZhY2UgRGlyZWN0TGluZVN0cmVhbWluZ09wdGlvbnMge1xuICB0b2tlbjogc3RyaW5nO1xuICBjb252ZXJzYXRpb25JZD86IHN0cmluZztcbiAgZG9tYWluOiBzdHJpbmc7XG4gIC8vIEF0dGFjaGVkIHRvIGFsbCByZXF1ZXN0cyB0byBpZGVudGlmeSByZXF1ZXN0aW5nIGFnZW50LlxuICBib3RBZ2VudD86IHN0cmluZztcblxuICAvKipcbiAgICogU2V0cyB0aGUgW2BOZXR3b3JrSW5mb3JtYXRpb25gIEFQSV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL05ldHdvcmtfSW5mb3JtYXRpb25fQVBJKS5cbiAgICogV2hlbiB0aGUgYE5ldHdvcmtJbmZvcm1hdGlvbmAgZGV0ZWN0IG5ldHdvcmsgY2hhbmdlcyBvciBvZmZsaW5lLCBpdCB3aWxsIGRpc2Nvbm5lY3QgdGhlIFdlYiBTb2NrZXQgYW5kIHJlY29ubmVjdCBpdC5cbiAgICovXG4gIG5ldHdvcmtJbmZvcm1hdGlvbj86IE5ldHdvcmtJbmZvcm1hdGlvbjtcbn1cblxuY2xhc3MgU3RyZWFtSGFuZGxlciBpbXBsZW1lbnRzIEJGU0UuUmVxdWVzdEhhbmRsZXIge1xuICBwcml2YXRlIGNvbm5lY3Rpb25TdGF0dXMkO1xuICBwcml2YXRlIHN1YnNjcmliZXI6IFN1YnNjcmliZXI8QWN0aXZpdHk+O1xuICBwcml2YXRlIHNob3VsZFF1ZXVlOiAoKSA9PiBib29sZWFuO1xuICBwcml2YXRlIGFjdGl2aXR5UXVldWU6IEFycmF5PEFjdGl2aXR5PiA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHM6IFN1YnNjcmliZXI8QWN0aXZpdHk+LCBjJDogT2JzZXJ2YWJsZTxDb25uZWN0aW9uU3RhdHVzPiwgc3E6ICgpID0+IGJvb2xlYW4pIHtcbiAgICB0aGlzLnN1YnNjcmliZXIgPSBzO1xuICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQgPSBjJDtcbiAgICB0aGlzLnNob3VsZFF1ZXVlID0gc3E7XG4gIH1cblxuICBwdWJsaWMgc2V0U3Vic2NyaWJlcihzOiBTdWJzY3JpYmVyPEFjdGl2aXR5Pikge1xuICAgIHRoaXMuc3Vic2NyaWJlciA9IHM7XG4gIH1cblxuICBhc3luYyBwcm9jZXNzUmVxdWVzdChyZXF1ZXN0OiBCRlNFLklSZWNlaXZlUmVxdWVzdCwgbG9nZ2VyPzogYW55KTogUHJvbWlzZTxCRlNFLlN0cmVhbWluZ1Jlc3BvbnNlPiB7XG4gICAgY29uc3Qgc3RyZWFtcyA9IFsuLi5yZXF1ZXN0LnN0cmVhbXNdO1xuICAgIGNvbnN0IHN0cmVhbTAgPSBzdHJlYW1zLnNoaWZ0KCk7XG4gICAgY29uc3QgYWN0aXZpdHlTZXRKc29uID0gYXdhaXQgc3RyZWFtMC5yZWFkQXNTdHJpbmcoKTtcbiAgICBjb25zdCBhY3Rpdml0eVNldCA9IEpTT04ucGFyc2UoYWN0aXZpdHlTZXRKc29uKTtcblxuICAgIGlmIChhY3Rpdml0eVNldC5hY3Rpdml0aWVzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgLy8gT25seSBvbmUgYWN0aXZpdHkgaXMgZXhwZWN0ZWQgaW4gYSBzZXQgaW4gc3RyZWFtaW5nXG4gICAgICB0aGlzLnN1YnNjcmliZXIuZXJyb3IobmV3IEVycm9yKCd0aGVyZSBzaG91bGQgYmUgZXhhY3RseSBvbmUgYWN0aXZpdHknKSk7XG4gICAgICByZXR1cm4gQkZTRS5TdHJlYW1pbmdSZXNwb25zZS5jcmVhdGUoNTAwKTtcbiAgICB9XG5cbiAgICBjb25zdCBhY3Rpdml0eSA9IGFjdGl2aXR5U2V0LmFjdGl2aXRpZXNbMF07XG5cbiAgICBpZiAoc3RyZWFtcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBhdHRhY2htZW50cyA9IFsuLi5hY3Rpdml0eS5hdHRhY2htZW50c107XG5cbiAgICAgIGxldCBzdHJlYW06IEJGU0UuQ29udGVudFN0cmVhbTtcbiAgICAgIHdoaWxlICgoc3RyZWFtID0gc3RyZWFtcy5zaGlmdCgpKSkge1xuICAgICAgICBjb25zdCBhdHRhY2htZW50ID0gYXdhaXQgc3RyZWFtLnJlYWRBc1N0cmluZygpO1xuICAgICAgICBjb25zdCBkYXRhVXJpID0gJ2RhdGE6dGV4dC9wbGFpbjtiYXNlNjQsJyArIGF0dGFjaG1lbnQ7XG4gICAgICAgIGF0dGFjaG1lbnRzLnB1c2goeyBjb250ZW50VHlwZTogc3RyZWFtLmNvbnRlbnRUeXBlLCBjb250ZW50VXJsOiBkYXRhVXJpIH0pO1xuICAgICAgfVxuXG4gICAgICBhY3Rpdml0eS5hdHRhY2htZW50cyA9IGF0dGFjaG1lbnRzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNob3VsZFF1ZXVlKCkpIHtcbiAgICAgIHRoaXMuYWN0aXZpdHlRdWV1ZS5wdXNoKGFjdGl2aXR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdWJzY3JpYmVyLm5leHQoYWN0aXZpdHkpO1xuICAgIH1cblxuICAgIHJldHVybiBCRlNFLlN0cmVhbWluZ1Jlc3BvbnNlLmNyZWF0ZSgyMDApO1xuICB9XG5cbiAgcHVibGljIGZsdXNoKCkge1xuICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQuc3Vic2NyaWJlKCgpID0+IHt9KTtcbiAgICB0aGlzLmFjdGl2aXR5UXVldWUuZm9yRWFjaChhID0+IHRoaXMuc3Vic2NyaWJlci5uZXh0KGEpKTtcbiAgICB0aGlzLmFjdGl2aXR5UXVldWUgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBlbmQoKSB7XG4gICAgdGhpcy5zdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpcmVjdExpbmVTdHJlYW1pbmcgaW1wbGVtZW50cyBJQm90Q29ubmVjdGlvbiB7XG4gIHB1YmxpYyBjb25uZWN0aW9uU3RhdHVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoQ29ubmVjdGlvblN0YXR1cy5VbmluaXRpYWxpemVkKTtcbiAgcHVibGljIGFjdGl2aXR5JDogT2JzZXJ2YWJsZTxBY3Rpdml0eT47XG5cbiAgcHJpdmF0ZSBhY3Rpdml0eVN1YnNjcmliZXI6IFN1YnNjcmliZXI8QWN0aXZpdHk+O1xuICBwcml2YXRlIGNvbm5lY3REZWZlcnJlZDogRGVmZXJyZWQ8dm9pZD47XG4gIHByaXZhdGUgdGhlU3RyZWFtSGFuZGxlcjogU3RyZWFtSGFuZGxlcjtcblxuICBwcml2YXRlIGRvbWFpbjogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29udmVyc2F0aW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSB0b2tlbjogc3RyaW5nO1xuICBwcml2YXRlIHN0cmVhbUNvbm5lY3Rpb246IEJGU0UuV2ViU29ja2V0Q2xpZW50O1xuICBwcml2YXRlIHF1ZXVlQWN0aXZpdGllczogYm9vbGVhbjtcblxuICBwcml2YXRlIF9ib3RBZ2VudCA9ICcnO1xuXG4gICNuZXR3b3JrSW5mb3JtYXRpb246IE5ldHdvcmtJbmZvcm1hdGlvbiB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBEaXJlY3RMaW5lU3RyZWFtaW5nT3B0aW9ucykge1xuICAgIC8vIFJlY3RpZmllcyBgb3B0aW9ucy5uZXR3b3JrSW5mb3JtYXRpb25gLlxuICAgIGNvbnN0IG5ldHdvcmtJbmZvcm1hdGlvbiA9IG9wdGlvbnM/Lm5ldHdvcmtJbmZvcm1hdGlvbjtcblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBuZXR3b3JrSW5mb3JtYXRpb24gPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICAodHlwZW9mIG5ldHdvcmtJbmZvcm1hdGlvbi5hZGRFdmVudExpc3RlbmVyID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAgIHR5cGVvZiBuZXR3b3JrSW5mb3JtYXRpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICB0eXBlb2YgbmV0d29ya0luZm9ybWF0aW9uLnR5cGUgPT09ICdzdHJpbmcnKVxuICAgICkge1xuICAgICAgdGhpcy4jbmV0d29ya0luZm9ybWF0aW9uID0gbmV0d29ya0luZm9ybWF0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdib3RmcmFtZXdvcmstZGlyZWN0bGluZWpzOiBcIm5ldHdvcmtJbmZvcm1hdGlvblwiIG9wdGlvbiBzcGVjaWZpZWQgbXVzdCBiZSBhIGBOZXR3b3JrSW5mb3JtYXRpb25gLWxpa2UgaW5zdGFuY2UgZXh0ZW5kaW5nIGBFdmVudFRhcmdldGAgaW50ZXJmYWNlIHdpdGggYSBgdHlwZWAgcHJvcGVydHkgcmV0dXJuaW5nIGEgc3RyaW5nLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy50b2tlbiA9IG9wdGlvbnMudG9rZW47XG5cbiAgICB0aGlzLnJlZnJlc2hUb2tlbigpLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLkV4cGlyZWRUb2tlbik7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRvbWFpbiA9IG9wdGlvbnMuZG9tYWluO1xuXG4gICAgaWYgKG9wdGlvbnMuY29udmVyc2F0aW9uSWQpIHtcbiAgICAgIHRoaXMuY29udmVyc2F0aW9uSWQgPSBvcHRpb25zLmNvbnZlcnNhdGlvbklkO1xuICAgIH1cblxuICAgIHRoaXMuX2JvdEFnZW50ID0gdGhpcy5nZXRCb3RBZ2VudChvcHRpb25zLmJvdEFnZW50KTtcblxuICAgIHRoaXMucXVldWVBY3Rpdml0aWVzID0gdHJ1ZTtcbiAgICB0aGlzLmFjdGl2aXR5JCA9IE9ic2VydmFibGUuY3JlYXRlKGFzeW5jIChzdWJzY3JpYmVyOiBTdWJzY3JpYmVyPEFjdGl2aXR5PikgPT4ge1xuICAgICAgdGhpcy5hY3Rpdml0eVN1YnNjcmliZXIgPSBzdWJzY3JpYmVyO1xuICAgICAgdGhpcy50aGVTdHJlYW1IYW5kbGVyID0gbmV3IFN0cmVhbUhhbmRsZXIoc3Vic2NyaWJlciwgdGhpcy5jb25uZWN0aW9uU3RhdHVzJCwgKCkgPT4gdGhpcy5xdWV1ZUFjdGl2aXRpZXMpO1xuXG4gICAgICAvLyBSZXNvbHZpbmcgY29ubmVjdERlZmVycmVkIHdpbGwga2ljay1vZmYgdGhlIGNvbm5lY3Rpb24uXG4gICAgICB0aGlzLmNvbm5lY3REZWZlcnJlZC5yZXNvbHZlKCk7XG4gICAgfSkuc2hhcmUoKTtcblxuICAgIC8vIGNvbm5lY3RXaXRoUmV0cnlBc3luYygpIHdpbGwgY3JlYXRlIHRoZSBjb25uZWN0RGVmZXJyZWQgb2JqZWN0IHJlcXVpcmVkIGluIGFjdGl2aXR5JC5cbiAgICB0aGlzLmNvbm5lY3RXaXRoUmV0cnlBc3luYygpO1xuICB9XG5cbiAgcHVibGljIHJlY29ubmVjdCh7IGNvbnZlcnNhdGlvbklkLCB0b2tlbiB9OiBDb252ZXJzYXRpb24pIHtcbiAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdHVzJC5nZXRWYWx1ZSgpID09PSBDb25uZWN0aW9uU3RhdHVzLkVuZGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nvbm5lY3Rpb24gaGFzIGVuZGVkLicpO1xuICAgIH1cblxuICAgIHRoaXMuY29udmVyc2F0aW9uSWQgPSBjb252ZXJzYXRpb25JZDtcbiAgICB0aGlzLnRva2VuID0gdG9rZW47XG5cbiAgICB0aGlzLmNvbm5lY3REZWZlcnJlZC5yZXNvbHZlKCk7XG4gIH1cblxuICBlbmQoKSB7XG4gICAgLy8gT25jZSBlbmQoKSBpcyBjYWxsZWQsIG5vIHJlY29ubmVjdGlvbiBjYW4gYmUgbWFkZS5cbiAgICB0aGlzLmFjdGl2aXR5U3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRW5kZWQpO1xuICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQuY29tcGxldGUoKTtcblxuICAgIHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIGNvbW1vbkhlYWRlcnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLnRva2VufWAsXG4gICAgICAneC1tcy1ib3QtYWdlbnQnOiB0aGlzLl9ib3RBZ2VudFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldEJvdEFnZW50KGN1c3RvbUFnZW50OiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gICAgbGV0IGNsaWVudEFnZW50ID0gJ2RpcmVjdGxpbmVTdHJlYW1pbmcnO1xuXG4gICAgaWYgKGN1c3RvbUFnZW50KSB7XG4gICAgICBjbGllbnRBZ2VudCArPSBgOyAke2N1c3RvbUFnZW50fWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke0RJUkVDVF9MSU5FX1ZFUlNJT059ICgke2NsaWVudEFnZW50fSlgO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWZyZXNoVG9rZW4oZmlyc3RDYWxsID0gdHJ1ZSwgcmV0cnlDb3VudCA9IDApIHtcbiAgICBhd2FpdCB0aGlzLndhaXRVbnRpbE9ubGluZSgpO1xuXG4gICAgbGV0IG51bWJlck9mQXR0ZW1wdHMgPSAwO1xuICAgIHdoaWxlIChudW1iZXJPZkF0dGVtcHRzIDwgTUFYX1JFVFJZX0NPVU5UKSB7XG4gICAgICBudW1iZXJPZkF0dGVtcHRzKys7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgcmVmcmVzaFRva2VuSW50ZXJ2YWwpKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke3RoaXMuZG9tYWlufS90b2tlbnMvcmVmcmVzaGAsIHsgbWV0aG9kOiAnUE9TVCcsIGhlYWRlcnM6IHRoaXMuY29tbW9uSGVhZGVycygpIH0pO1xuICAgICAgICBpZiAocmVzLm9rKSB7XG4gICAgICAgICAgbnVtYmVyT2ZBdHRlbXB0cyA9IDA7XG4gICAgICAgICAgY29uc3QgeyB0b2tlbiB9ID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgICAgICAgICB0aGlzLnRva2VuID0gdG9rZW47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IDQwMyB8fCByZXMuc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhdGFsIGVycm9yIHdoaWxlIHJlZnJlc2hpbmcgdGhlIHRva2VuOiAke3Jlcy5zdGF0dXN9ICR7cmVzLnN0YXR1c1RleHR9YCk7XG4gICAgICAgICAgICB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uZGlzY29ubmVjdCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFJlZnJlc2ggYXR0ZW1wdCAjJHtudW1iZXJPZkF0dGVtcHRzfSBmYWlsZWQ6ICR7cmVzLnN0YXR1c30gJHtyZXMuc3RhdHVzVGV4dH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBSZWZyZXNoIGF0dGVtcHQgIyR7bnVtYmVyT2ZBdHRlbXB0c30gdGhyZXcgYW4gZXhjZXB0aW9uOiAke2V9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc29sZS5lcnJvcignUmV0cmllcyBleGhhdXN0ZWQnKTtcbiAgICB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgcG9zdEFjdGl2aXR5KGFjdGl2aXR5OiBBY3Rpdml0eSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQudmFsdWUgPT09IENvbm5lY3Rpb25TdGF0dXMuRW5kZWQgfHxcbiAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQudmFsdWUgPT09IENvbm5lY3Rpb25TdGF0dXMuRmFpbGVkVG9Db25uZWN0XG4gICAgKSB7XG4gICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhuZXcgRXJyb3IoJ0Nvbm5lY3Rpb24gaXMgY2xvc2VkJykpO1xuICAgIH1cblxuICAgIGlmIChhY3Rpdml0eS50eXBlID09PSAnbWVzc2FnZScgJiYgYWN0aXZpdHkuYXR0YWNobWVudHMgJiYgYWN0aXZpdHkuYXR0YWNobWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMucG9zdE1lc3NhZ2VXaXRoQXR0YWNobWVudHMoYWN0aXZpdHkpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3AkID0gT2JzZXJ2YWJsZS5jcmVhdGUoYXN5bmMgc3Vic2NyaWJlciA9PiB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gQkZTRS5TdHJlYW1pbmdSZXF1ZXN0LmNyZWF0ZShcbiAgICAgICAgJ1BPU1QnLFxuICAgICAgICAnL3YzL2RpcmVjdGxpbmUvY29udmVyc2F0aW9ucy8nICsgdGhpcy5jb252ZXJzYXRpb25JZCArICcvYWN0aXZpdGllcydcbiAgICAgICk7XG4gICAgICByZXF1ZXN0LnNldEJvZHkoSlNPTi5zdHJpbmdpZnkoYWN0aXZpdHkpKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5zZW5kKHJlcXVlc3QpO1xuICAgICAgICBpZiAocmVzcC5zdGF0dXNDb2RlICE9PSAyMDApIHRocm93IG5ldyBFcnJvcignUG9zdEFjdGl2aXR5IHJldHVybmVkICcgKyByZXNwLnN0YXR1c0NvZGUpO1xuICAgICAgICBjb25zdCBudW1iZXJPZlN0cmVhbXMgPSByZXNwLnN0cmVhbXMubGVuZ3RoO1xuICAgICAgICBpZiAobnVtYmVyT2ZTdHJlYW1zICE9PSAxKSB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIG9uZSBzdHJlYW0gYnV0IGdvdCAnICsgbnVtYmVyT2ZTdHJlYW1zKTtcbiAgICAgICAgY29uc3QgaWRTdHJpbmcgPSBhd2FpdCByZXNwLnN0cmVhbXNbMF0ucmVhZEFzU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHsgSWQ6IGlkIH0gPSBKU09OLnBhcnNlKGlkU3RyaW5nKTtcbiAgICAgICAgc3Vic2NyaWJlci5uZXh0KGlkKTtcbiAgICAgICAgcmV0dXJuIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBuZXR3b3JrIGlzc3VlIHRoZW4gaXRzIGhhbmRsZWQgYnlcbiAgICAgICAgLy8gdGhlIGRpc2Nvbm5lY3Rpb25IYW5kbGVyLiBFdmVyeXRoaW5nIGVsc2UgY2FuXG4gICAgICAgIC8vIGJlIHJldHJpZWRcbiAgICAgICAgY29uc29sZS53YXJuKGUpO1xuICAgICAgICB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uZGlzY29ubmVjdCgpO1xuICAgICAgICByZXR1cm4gc3Vic2NyaWJlci5lcnJvcihlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzcCQ7XG4gIH1cblxuICBwcml2YXRlIHBvc3RNZXNzYWdlV2l0aEF0dGFjaG1lbnRzKG1lc3NhZ2U6IE1lc3NhZ2UpIHtcbiAgICBjb25zdCB7IGF0dGFjaG1lbnRzLCAuLi5tZXNzYWdlV2l0aG91dEF0dGFjaG1lbnRzIH0gPSBtZXNzYWdlO1xuXG4gICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKHN1YnNjcmliZXIgPT4ge1xuICAgICAgY29uc3QgaHR0cENvbnRlbnRMaXN0ID0gW107XG4gICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVycyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgYXR0YWNobWVudHMubWFwKGFzeW5jIGF0dGFjaG1lbnQgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtZWRpYSA9IGF0dGFjaG1lbnQgYXMgTWVkaWE7XG4gICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKG1lZGlhLmNvbnRlbnRVcmwpO1xuICAgICAgICAgICAgICBpZiAocmVzLm9rKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgYXJyYXlCdWZmZXI6IGF3YWl0IHJlcy5hcnJheUJ1ZmZlcigpLCBtZWRpYSB9O1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignLi4uJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGFycmF5QnVmZmVycy5mb3JFYWNoKCh7IGFycmF5QnVmZmVyLCBtZWRpYSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbShhcnJheUJ1ZmZlcik7XG4gICAgICAgICAgICBjb25zdCBzdHJlYW0gPSBuZXcgQkZTRS5TdWJzY3JpYmFibGVTdHJlYW0oKTtcbiAgICAgICAgICAgIHN0cmVhbS53cml0ZShidWZmZXIpO1xuICAgICAgICAgICAgY29uc3QgaHR0cENvbnRlbnQgPSBuZXcgQkZTRS5IdHRwQ29udGVudCh7IHR5cGU6IG1lZGlhLmNvbnRlbnRUeXBlLCBjb250ZW50TGVuZ3RoOiBidWZmZXIubGVuZ3RoIH0sIHN0cmVhbSk7XG4gICAgICAgICAgICBodHRwQ29udGVudExpc3QucHVzaChodHRwQ29udGVudCk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCB1cmwgPSBgL3YzL2RpcmVjdGxpbmUvY29udmVyc2F0aW9ucy8ke3RoaXMuY29udmVyc2F0aW9uSWR9L3VzZXJzLyR7bWVzc2FnZVdpdGhvdXRBdHRhY2htZW50cy5mcm9tLmlkfS91cGxvYWRgO1xuICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBCRlNFLlN0cmVhbWluZ1JlcXVlc3QuY3JlYXRlKCdQVVQnLCB1cmwpO1xuICAgICAgICAgIGNvbnN0IGFjdGl2aXR5U3RyZWFtID0gbmV3IEJGU0UuU3Vic2NyaWJhYmxlU3RyZWFtKCk7XG4gICAgICAgICAgYWN0aXZpdHlTdHJlYW0ud3JpdGUoSlNPTi5zdHJpbmdpZnkobWVzc2FnZVdpdGhvdXRBdHRhY2htZW50cyksICd1dGYtOCcpO1xuICAgICAgICAgIHJlcXVlc3QuYWRkU3RyZWFtKFxuICAgICAgICAgICAgbmV3IEJGU0UuSHR0cENvbnRlbnQoXG4gICAgICAgICAgICAgIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuYWN0aXZpdHknLCBjb250ZW50TGVuZ3RoOiBhY3Rpdml0eVN0cmVhbS5sZW5ndGggfSxcbiAgICAgICAgICAgICAgYWN0aXZpdHlTdHJlYW1cbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICAgIGh0dHBDb250ZW50TGlzdC5mb3JFYWNoKGUgPT4gcmVxdWVzdC5hZGRTdHJlYW0oZSkpO1xuXG4gICAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5zZW5kKHJlcXVlc3QpO1xuICAgICAgICAgIGlmIChyZXNwLnN0cmVhbXMgJiYgcmVzcC5zdHJlYW1zLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihuZXcgRXJyb3IoYEludmFsaWQgc3RyZWFtIGNvdW50ICR7cmVzcC5zdHJlYW1zLmxlbmd0aH1gKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHsgSWQ6IGlkIH0gPSBhd2FpdCByZXNwLnN0cmVhbXNbMF0ucmVhZEFzSnNvbjx7IElkOiBzdHJpbmcgfT4oKTtcbiAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dChpZCk7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihlKTtcbiAgICAgICAgfVxuICAgICAgfSkoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgd2FpdFVudGlsT25saW5lKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLnN1YnNjcmliZShcbiAgICAgICAgY3MgPT4ge1xuICAgICAgICAgIGlmIChjcyA9PT0gQ29ubmVjdGlvblN0YXR1cy5PbmxpbmUpIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlID0+IHJlamVjdChlKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29ubmVjdEFzeW5jKCkge1xuICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cCgnXmh0dHAocz8pJyk7XG5cbiAgICBpZiAoIXJlLnRlc3QodGhpcy5kb21haW4pKSB7XG4gICAgICB0aHJvdyAnRG9tYWluIG11c3QgYmVnaW4gd2l0aCBodHRwIG9yIGh0dHBzJztcbiAgICB9XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7IHRva2VuOiB0aGlzLnRva2VuIH07XG5cbiAgICBpZiAodGhpcy5jb252ZXJzYXRpb25JZCkge1xuICAgICAgcGFyYW1zWydjb252ZXJzYXRpb25JZCddID0gdGhpcy5jb252ZXJzYXRpb25JZDtcbiAgICB9XG5cbiAgICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgY29uc3QgdXJsU2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXJhbXMpLnRvU3RyaW5nKCk7XG4gICAgY29uc3Qgd3NVcmwgPSBgJHt0aGlzLmRvbWFpbi5yZXBsYWNlKHJlLCAnd3MkMScpfS9jb252ZXJzYXRpb25zL2Nvbm5lY3Q/JHt1cmxTZWFyY2hQYXJhbXN9YDtcblxuICAgIC8vIFRoaXMgcHJvbWlzZSB3aWxsIHJlc29sdmUgd2hlbiBpdCBpcyBkaXNjb25uZWN0ZWQuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuc3RyZWFtQ29ubmVjdGlvbiA9IG5ldyBXZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uKHtcbiAgICAgICAgICBkaXNjb25uZWN0aW9uSGFuZGxlcjogcmVzb2x2ZSxcbiAgICAgICAgICBuZXR3b3JrSW5mb3JtYXRpb246IHRoaXMuI25ldHdvcmtJbmZvcm1hdGlvbixcbiAgICAgICAgICByZXF1ZXN0SGFuZGxlcjoge1xuICAgICAgICAgICAgcHJvY2Vzc1JlcXVlc3Q6IHN0cmVhbWluZ1JlcXVlc3QgPT4ge1xuICAgICAgICAgICAgICAvLyBJZiBgc3RyZWFtQ29ubmVjdGlvbmAgaXMgc3RpbGwgY3VycmVudCwgYWxsb3cgY2FsbCB0byBgcHJvY2Vzc1JlcXVlc3QoKWAsIG90aGVyd2lzZSwgaWdub3JlIGNhbGxzIHRvIGBwcm9jZXNzUmVxdWVzdCgpYC5cbiAgICAgICAgICAgICAgLy8gVGhpcyBwcmV2ZW50cyB6b21iaWUgY29ubmVjdGlvbnMgZnJvbSBzZW5kaW5nIHVzIHJlcXVlc3RzLlxuICAgICAgICAgICAgICBpZiAoYWJvcnRDb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcHJvY2VzcyBzdHJlYW1pbmcgcmVxdWVzdCwgYHN0cmVhbWluZ0Nvbm5lY3Rpb25gIHNob3VsZCBiZSBkaXNjb25uZWN0ZWQuJyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy50aGVTdHJlYW1IYW5kbGVyLnByb2Nlc3NSZXF1ZXN0KHN0cmVhbWluZ1JlcXVlc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgdXJsOiB3c1VybFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnF1ZXVlQWN0aXZpdGllcyA9IHRydWU7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5zdHJlYW1Db25uZWN0aW9uLmNvbm5lY3QoKTtcblxuICAgICAgICBjb25zdCByZXF1ZXN0ID0gQkZTRS5TdHJlYW1pbmdSZXF1ZXN0LmNyZWF0ZSgnUE9TVCcsICcvdjMvZGlyZWN0bGluZS9jb252ZXJzYXRpb25zJyk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5zdHJlYW1Db25uZWN0aW9uLnNlbmQocmVxdWVzdCk7XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IDIwMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29ubmVjdGlvbiByZXNwb25zZSBjb2RlICcgKyByZXNwb25zZS5zdGF0dXNDb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXNwb25zZS5zdHJlYW1zLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgMSBzdHJlYW0gYnV0IGdvdCAnICsgcmVzcG9uc2Uuc3RyZWFtcy5sZW5ndGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2VTdHJpbmcgPSBhd2FpdCByZXNwb25zZS5zdHJlYW1zWzBdLnJlYWRBc1N0cmluZygpO1xuICAgICAgICBjb25zdCBjb252ZXJzYXRpb24gPSBKU09OLnBhcnNlKHJlc3BvbnNlU3RyaW5nKTtcblxuICAgICAgICB0aGlzLmNvbnZlcnNhdGlvbklkID0gY29udmVyc2F0aW9uLmNvbnZlcnNhdGlvbklkO1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5PbmxpbmUpO1xuXG4gICAgICAgIC8vIFdhaXQgdW50aWwgREwgY29uc3VtZXJzIGhhdmUgaGFkIGEgY2hhbmNlIHRvIGJlIG5vdGlmaWVkXG4gICAgICAgIC8vIG9mIHRoZSBjb25uZWN0aW9uIHN0YXR1cyBjaGFuZ2UuXG4gICAgICAgIC8vIFRoaXMgaXMgc3BlY2lmaWMgdG8gUnhKUyBpbXBsZW1lbnRhdGlvbiBvZiBvYnNlcnZhYmxlLCB3aGljaCBjYWxsaW5nIHN1YnNjcmliZSgpIGFmdGVyIG5leHQoKSB3aWxsIHN0aWxsIGdldCB0aGUgdmFsdWUuXG4gICAgICAgIGF3YWl0IHRoaXMud2FpdFVudGlsT25saW5lKCk7XG5cbiAgICAgICAgdGhpcy50aGVTdHJlYW1IYW5kbGVyLmZsdXNoKCk7XG4gICAgICAgIHRoaXMucXVldWVBY3Rpdml0aWVzID0gZmFsc2U7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9KS5maW5hbGx5KCgpID0+IGFib3J0Q29udHJvbGxlci5hYm9ydCgpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29ubmVjdFdpdGhSZXRyeUFzeW5jKCkge1xuICAgIC8vIFRoaXMgZm9yLWxvb3Agd2lsbCBicmVhayB3aGVuIHNvbWVvbmUgY2FsbCBlbmQoKSBhbmQgaXQgd2lsbCBzaWduYWwgQ29ubmVjdGlvblN0YXR1cy5FbmRlZC5cbiAgICBmb3IgKDs7KSB7XG4gICAgICAvLyBDcmVhdGUgYSBuZXcgc2lnbmFsIGFuZCB3YWl0IGZvciBzb21lb25lIGtpY2tpbmcgb2ZmIHRoZSBjb25uZWN0aW9uOlxuICAgICAgLy8gLSBzdWJzY3JpYmUgdG8gYWN0aXZpdHkkLCBvcjtcbiAgICAgIC8vIC0gcmV0cmllcyBleGhhdXN0ZWQgKEZhaWxlZFRvQ29ubmVjdCksIHRoZW4sIHNvbWVvbmUgY2FsbCByZWNvbm5lY3QoKVxuICAgICAgYXdhaXQgKHRoaXMuY29ubmVjdERlZmVycmVkID0gY3JlYXRlRGVmZXJyZWQoKSkucHJvbWlzZTtcblxuICAgICAgbGV0IG51bVJldHJpZXMgPSBNQVhfUkVUUllfQ09VTlQ7XG5cbiAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RpbmcpO1xuXG4gICAgICB3aGlsZSAobnVtUmV0cmllcyA+IDApIHtcbiAgICAgICAgbnVtUmV0cmllcy0tO1xuXG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgcHJvbWlzZSB3aWxsIHJlamVjdC9yZXNvbHZlIHdoZW4gZGlzY29ubmVjdGVkLlxuICAgICAgICAgIGF3YWl0IHRoaXMuY29ubmVjdEFzeW5jKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHNvbWVvbmUgY2FsbCBlbmQoKSB0byBicmVhayB0aGUgY29ubmVjdGlvbiwgd2Ugd2lsbCBuZXZlciBsaXN0ZW4gdG8gYW55IHJlY29ubmVjdCgpLlxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdHVzJC5nZXRWYWx1ZSgpID09PSBDb25uZWN0aW9uU3RhdHVzLkVuZGVkKSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyB0aGUgb25seSBwbGFjZSB0aGUgbG9vcCBpbiB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgYnJva2UuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IHNpZ25hbCBDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RpbmcgdHdpY2Ugb3IgbW9yZSB3aXRob3V0IGFuIGFjdHVhbCBjb25uZWN0aW9uLlxuICAgICAgICAvLyBTdWJzZXF1ZW50IHJldHJpZXMgc2hvdWxkIGJlIHRyYW5zcGFyZW50LlxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdHVzJC5nZXRWYWx1ZSgpICE9PSBDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RpbmcpIHtcbiAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5Db25uZWN0aW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24gbGFzdGVkIGZvciBtb3JlIHRoYW4gYSBtaW51dGUsIHRoZSBwcmV2aW91cyBjb25uZWN0aW9uIGlzIGdvb2QsIHdoaWNoIG1lYW5zOlxuICAgICAgICAvLyAtIHdlIHNob3VsZCByZXNldCB0aGUgcmV0cnkgY291bnRlciwgYW5kO1xuICAgICAgICAvLyAtIHdlIHNob3VsZCByZWNvbm5lY3QgaW1tZWRpYXRlbHkuXG4gICAgICAgIGlmICg2MDAwMCA8IERhdGUubm93KCkgLSBzdGFydCkge1xuICAgICAgICAgIG51bVJldHJpZXMgPSBNQVhfUkVUUllfQ09VTlQ7XG4gICAgICAgIH0gZWxzZSBpZiAobnVtUmV0cmllcyA+IDApIHtcbiAgICAgICAgICAvLyBTbGVlcCBvbmx5IGlmIHdlIGFyZSBkb2luZyByZXRyeS4gT3RoZXJ3aXNlLCB3ZSBhcmUgZ29pbmcgdG8gYnJlYWsgdGhlIGxvb3AgYW5kIHNpZ25hbCBGYWlsZWRUb0Nvbm5lY3QuXG4gICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIHRoaXMuZ2V0UmV0cnlEZWxheSgpKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVE9ETzogW1RFU1RdIE1ha2Ugc3VyZSBGYWlsZWRUb0Nvbm5lY3QgaXMgcmVwb3J0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgbGFzdCBkaXNjb25uZWN0aW9uLCBzaG91bGQgYmUgbm8gZ2V0UmV0cnlEZWxheSgpLlxuICAgICAgLy8gRmFpbGVkIHRvIHJlY29ubmVjdCBhZnRlciBtdWx0aXBsZSByZXRyaWVzLlxuICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRmFpbGVkVG9Db25uZWN0KTtcbiAgICB9XG5cbiAgICAvLyBOb3RlOiBObyBjb2RlIHdpbGwgaGl0IHRoaXMgbGluZS5cbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIGRlbGF5IGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kc1xuICBwcml2YXRlIGdldFJldHJ5RGVsYXkoKSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoMzAwMCArIE1hdGgucmFuZG9tKCkgKiAxMjAwMCk7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _get2 = _interopRequireDefault(require(\"@babel/runtime/helpers/get\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _classPrivateFieldGet4 = _interopRequireDefault(require(\"@babel/runtime/helpers/classPrivateFieldGet\"));\n\nvar _classPrivateFieldSet2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classPrivateFieldSet\"));\n\nvar _botframeworkStreaming = require(\"botframework-streaming\");\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar _connectCalled = /*#__PURE__*/new WeakMap();\n\nvar _handleNetworkInformationChange = /*#__PURE__*/new WeakMap();\n\nvar _initialNetworkInformationType = /*#__PURE__*/new WeakMap();\n\nvar _networkInformation = /*#__PURE__*/new WeakMap();\n\nvar WebSocketClientWithNetworkInformation = /*#__PURE__*/function (_WebSocketClient) {\n (0, _inherits2[\"default\"])(WebSocketClientWithNetworkInformation, _WebSocketClient);\n\n var _super = _createSuper(WebSocketClientWithNetworkInformation);\n\n function WebSocketClientWithNetworkInformation(_ref) {\n var _this;\n\n var disconnectionHandler = _ref.disconnectionHandler,\n networkInformation = _ref.networkInformation,\n requestHandler = _ref.requestHandler,\n url = _ref.url;\n (0, _classCallCheck2[\"default\"])(this, WebSocketClientWithNetworkInformation);\n _this = _super.call(this, {\n disconnectionHandler: disconnectionHandler,\n requestHandler: requestHandler,\n url: url\n });\n\n _connectCalled.set((0, _assertThisInitialized2[\"default\"])(_this), {\n writable: true,\n value: false\n });\n\n _handleNetworkInformationChange.set((0, _assertThisInitialized2[\"default\"])(_this), {\n writable: true,\n value: function value() {\n return (0, _classPrivateFieldGet4[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), _initialNetworkInformationType) === (0, _classPrivateFieldGet4[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), _networkInformation).type || _this.disconnect();\n }\n });\n\n _initialNetworkInformationType.set((0, _assertThisInitialized2[\"default\"])(_this), {\n writable: true,\n value: void 0\n });\n\n _networkInformation.set((0, _assertThisInitialized2[\"default\"])(_this), {\n writable: true,\n value: void 0\n });\n\n (0, _classPrivateFieldSet2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), _networkInformation, networkInformation);\n return _this;\n }\n\n (0, _createClass2[\"default\"])(WebSocketClientWithNetworkInformation, [{\n key: \"connect\",\n value: // TODO: Better, the `NetworkInformation` instance should be passed to `BrowserWebSocketClient` -> `BrowserWebSocket`.\n // `BrowserWebSocket` is where it creates `WebSocket` object.\n // The `NetworkInformation` instance should accompany `WebSocket` and forcibly close it on abort.\n // Maybe `botframework-streaming` should accept ponyfills.\n function connect() {\n if ((0, _classPrivateFieldGet4[\"default\"])(this, _connectCalled)) {\n console.warn('botframework-directlinejs: connect() can only be called once.');\n return Promise.resolve();\n }\n\n (0, _classPrivateFieldSet2[\"default\"])(this, _connectCalled, true);\n\n if ((0, _classPrivateFieldGet4[\"default\"])(this, _networkInformation)) {\n var _classPrivateFieldGet2 = (0, _classPrivateFieldGet4[\"default\"])(this, _networkInformation),\n initialType = _classPrivateFieldGet2.type;\n\n (0, _classPrivateFieldSet2[\"default\"])(this, _initialNetworkInformationType, initialType);\n\n if (initialType === 'none') {\n console.warn('botframework-directlinejs: Failed to connect while offline.');\n return Promise.reject(new Error('botframework-directlinejs: Failed to connect while offline.'));\n }\n\n (0, _classPrivateFieldGet4[\"default\"])(this, _networkInformation).addEventListener('change', (0, _classPrivateFieldGet4[\"default\"])(this, _handleNetworkInformationChange));\n }\n\n return (0, _get2[\"default\"])((0, _getPrototypeOf2[\"default\"])(WebSocketClientWithNetworkInformation.prototype), \"connect\", this).call(this);\n }\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n var _classPrivateFieldGet3;\n\n (_classPrivateFieldGet3 = (0, _classPrivateFieldGet4[\"default\"])(this, _networkInformation)) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.removeEventListener('change', (0, _classPrivateFieldGet4[\"default\"])(this, _handleNetworkInformationChange));\n (0, _get2[\"default\"])((0, _getPrototypeOf2[\"default\"])(WebSocketClientWithNetworkInformation.prototype), \"disconnect\", this).call(this);\n }\n }]);\n return WebSocketClientWithNetworkInformation;\n}(_botframeworkStreaming.WebSocketClient);\n\nexports[\"default\"] = WebSocketClientWithNetworkInformation;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHJlYW1pbmcvV2ViU29ja2V0Q2xpZW50V2l0aE5ldHdvcmtJbmZvcm1hdGlvbi50cyJdLCJuYW1lcyI6WyJXZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uIiwiZGlzY29ubmVjdGlvbkhhbmRsZXIiLCJuZXR3b3JrSW5mb3JtYXRpb24iLCJyZXF1ZXN0SGFuZGxlciIsInVybCIsInR5cGUiLCJkaXNjb25uZWN0IiwiY29uc29sZSIsIndhcm4iLCJQcm9taXNlIiwicmVzb2x2ZSIsImluaXRpYWxUeXBlIiwicmVqZWN0IiwiRXJyb3IiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIldlYlNvY2tldENsaWVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7O0lBZ0JxQkEscUM7Ozs7O0FBQ25CLHVEQUs4QztBQUFBOztBQUFBLFFBSjVDQyxvQkFJNEMsUUFKNUNBLG9CQUk0QztBQUFBLFFBSDVDQyxrQkFHNEMsUUFINUNBLGtCQUc0QztBQUFBLFFBRjVDQyxjQUU0QyxRQUY1Q0EsY0FFNEM7QUFBQSxRQUQ1Q0MsR0FDNEMsUUFENUNBLEdBQzRDO0FBQUE7QUFDNUMsOEJBQU07QUFDSkgsTUFBQUEsb0JBQW9CLEVBQXBCQSxvQkFESTtBQUVKRSxNQUFBQSxjQUFjLEVBQWRBLGNBRkk7QUFHSkMsTUFBQUEsR0FBRyxFQUFIQTtBQUhJLEtBQU47O0FBRDRDO0FBQUE7QUFBQSxhQVVwQjtBQVZvQjs7QUFBQTtBQUFBO0FBQUEsYUFhWjtBQUFBLGVBQ2hDLDJIQUF3Qyw0R0FBeUJDLElBQWpFLElBQXlFLE1BQUtDLFVBQUwsRUFEekM7QUFBQTtBQWJZOztBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBOztBQU81QyxnSEFBMkJKLGtCQUEzQjtBQVA0QztBQVE3Qzs7OztXQVVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXlCO0FBQ3ZCLGlEQUFJLElBQUosbUJBQXlCO0FBQ3ZCSyxRQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FBYSwrREFBYjtBQUVBLGVBQU9DLE9BQU8sQ0FBQ0MsT0FBUixFQUFQO0FBQ0Q7O0FBRUQsbUVBQXNCLElBQXRCOztBQUVBLGlEQUFJLElBQUosd0JBQThCO0FBQzVCLDRFQUE4QixJQUE5QjtBQUFBLFlBQWNDLFdBQWQsMEJBQVFOLElBQVI7O0FBRUEscUZBQXNDTSxXQUF0Qzs7QUFFQSxZQUFJQSxXQUFXLEtBQUssTUFBcEIsRUFBNEI7QUFDMUJKLFVBQUFBLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLDZEQUFiO0FBRUEsaUJBQU9DLE9BQU8sQ0FBQ0csTUFBUixDQUFlLElBQUlDLEtBQUosQ0FBVSw2REFBVixDQUFmLENBQVA7QUFDRDs7QUFFRCwwRUFBeUJDLGdCQUF6QixDQUEwQyxRQUExQyx5Q0FBb0QsSUFBcEQ7QUFDRDs7QUFFRDtBQUNEOzs7V0FFRCxzQkFBYTtBQUFBOztBQUNYLG1MQUEwQkMsbUJBQTFCLENBQThDLFFBQTlDLHlDQUF3RCxJQUF4RDtBQUNBO0FBQ0Q7OztFQXpEZ0VDLHNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV2ViU29ja2V0Q2xpZW50IH0gZnJvbSAnYm90ZnJhbWV3b3JrLXN0cmVhbWluZyc7XG5cbmltcG9ydCB0eXBlIHsgUmVxdWVzdEhhbmRsZXIgfSBmcm9tICdib3RmcmFtZXdvcmstc3RyZWFtaW5nJztcblxudHlwZSBXZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uSW5pdCA9IHtcbiAgLyoqXG4gICAqIEdldHMgb3Igc2V0cyB0aGUgb2JzZXJ2ZXIgZnVuY3Rpb24gZm9yIGRpc2Nvbm5lY3Rpb24gb3IgZXJyb3Igc2VuZGluZy9yZWNlaXZpbmcgdGhyb3VnaCBXZWJTb2NrZXQuXG4gICAqXG4gICAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gY291bGQgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLCB0aGUgY2FsbGVlIGlzIGV4cGVjdGVkIHRvIGlnbm9yZSBzdWJzZXF1ZW50IGNhbGxzLlxuICAgKi9cbiAgZGlzY29ubmVjdGlvbkhhbmRsZXI6IChtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG5ldHdvcmtJbmZvcm1hdGlvbj86IE5ldHdvcmtJbmZvcm1hdGlvbiB8IHVuZGVmaW5lZDtcbiAgcmVxdWVzdEhhbmRsZXI6IFJlcXVlc3RIYW5kbGVyO1xuICB1cmw6IHN0cmluZztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdlYlNvY2tldENsaWVudFdpdGhOZXR3b3JrSW5mb3JtYXRpb24gZXh0ZW5kcyBXZWJTb2NrZXRDbGllbnQge1xuICBjb25zdHJ1Y3Rvcih7XG4gICAgZGlzY29ubmVjdGlvbkhhbmRsZXIsXG4gICAgbmV0d29ya0luZm9ybWF0aW9uLFxuICAgIHJlcXVlc3RIYW5kbGVyLFxuICAgIHVybFxuICB9OiBXZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uSW5pdCkge1xuICAgIHN1cGVyKHtcbiAgICAgIGRpc2Nvbm5lY3Rpb25IYW5kbGVyLFxuICAgICAgcmVxdWVzdEhhbmRsZXIsXG4gICAgICB1cmxcbiAgICB9KTtcblxuICAgIHRoaXMuI25ldHdvcmtJbmZvcm1hdGlvbiA9IG5ldHdvcmtJbmZvcm1hdGlvbjtcbiAgfVxuXG4gICNjb25uZWN0Q2FsbGVkOiBib29sZWFuID0gZmFsc2U7XG4gIC8vIEFjY29yZGluZyB0byBXM0MgTmV0d29yayBJbmZvcm1hdGlvbiBBUEksIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vbmV0aW5mby8jaGFuZGxpbmctY2hhbmdlcy10by10aGUtdW5kZXJseWluZy1jb25uZWN0aW9uLlxuICAvLyBOZXR3b3JrSW5mb3JtYXRpb24ub25DaGFuZ2UgZXZlbnQgd2lsbCBiZSBmaXJlZCBvbiBhbnkgY2hhbmdlcyB0bzogYGRvd25saW5rTWF4YCwgYHR5cGVgLCBgZG93bmxpbmtgLCBvciBgcnR0YC5cbiAgI2hhbmRsZU5ldHdvcmtJbmZvcm1hdGlvbkNoYW5nZSA9ICgpID0+XG4gICAgdGhpcy4jaW5pdGlhbE5ldHdvcmtJbmZvcm1hdGlvblR5cGUgPT09IHRoaXMuI25ldHdvcmtJbmZvcm1hdGlvbi50eXBlIHx8IHRoaXMuZGlzY29ubmVjdCgpO1xuICAjaW5pdGlhbE5ldHdvcmtJbmZvcm1hdGlvblR5cGU6IE5ldHdvcmtJbmZvcm1hdGlvblsndHlwZSddO1xuICAjbmV0d29ya0luZm9ybWF0aW9uOiBOZXR3b3JrSW5mb3JtYXRpb247XG5cbiAgLy8gVE9ETzogQmV0dGVyLCB0aGUgYE5ldHdvcmtJbmZvcm1hdGlvbmAgaW5zdGFuY2Ugc2hvdWxkIGJlIHBhc3NlZCB0byBgQnJvd3NlcldlYlNvY2tldENsaWVudGAgLT4gYEJyb3dzZXJXZWJTb2NrZXRgLlxuICAvLyAgICAgICBgQnJvd3NlcldlYlNvY2tldGAgaXMgd2hlcmUgaXQgY3JlYXRlcyBgV2ViU29ja2V0YCBvYmplY3QuXG4gIC8vICAgICAgIFRoZSBgTmV0d29ya0luZm9ybWF0aW9uYCBpbnN0YW5jZSBzaG91bGQgYWNjb21wYW55IGBXZWJTb2NrZXRgIGFuZCBmb3JjaWJseSBjbG9zZSBpdCBvbiBhYm9ydC5cbiAgLy8gICAgICAgTWF5YmUgYGJvdGZyYW1ld29yay1zdHJlYW1pbmdgIHNob3VsZCBhY2NlcHQgcG9ueWZpbGxzLlxuICBjb25uZWN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLiNjb25uZWN0Q2FsbGVkKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ2JvdGZyYW1ld29yay1kaXJlY3RsaW5lanM6IGNvbm5lY3QoKSBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4nKTtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIHRoaXMuI2Nvbm5lY3RDYWxsZWQgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuI25ldHdvcmtJbmZvcm1hdGlvbikge1xuICAgICAgY29uc3QgeyB0eXBlOiBpbml0aWFsVHlwZSB9ID0gdGhpcy4jbmV0d29ya0luZm9ybWF0aW9uO1xuXG4gICAgICB0aGlzLiNpbml0aWFsTmV0d29ya0luZm9ybWF0aW9uVHlwZSA9IGluaXRpYWxUeXBlO1xuXG4gICAgICBpZiAoaW5pdGlhbFR5cGUgPT09ICdub25lJykge1xuICAgICAgICBjb25zb2xlLndhcm4oJ2JvdGZyYW1ld29yay1kaXJlY3RsaW5lanM6IEZhaWxlZCB0byBjb25uZWN0IHdoaWxlIG9mZmxpbmUuJyk7XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignYm90ZnJhbWV3b3JrLWRpcmVjdGxpbmVqczogRmFpbGVkIHRvIGNvbm5lY3Qgd2hpbGUgb2ZmbGluZS4nKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI25ldHdvcmtJbmZvcm1hdGlvbi5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB0aGlzLiNoYW5kbGVOZXR3b3JrSW5mb3JtYXRpb25DaGFuZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlci5jb25uZWN0KCk7XG4gIH1cblxuICBkaXNjb25uZWN0KCkge1xuICAgIHRoaXMuI25ldHdvcmtJbmZvcm1hdGlvbj8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy4jaGFuZGxlTmV0d29ya0luZm9ybWF0aW9uQ2hhbmdlKTtcbiAgICBzdXBlci5kaXNjb25uZWN0KCk7XG4gIH1cbn1cbiJdfQ==","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.BFSE = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadAssembler = void 0;\nvar subscribableStream_1 = require(\"../subscribableStream\");\nvar payloads_1 = require(\"../payloads\");\nvar contentStream_1 = require(\"../contentStream\");\n/**\n * Assembles payloads for streaming library.\n *\n * @internal\n */\nvar PayloadAssembler = /** @class */ (function () {\n /**\n * Initializes a new instance of the [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) class.\n *\n * @param streamManager The [StreamManager](xref:botframework-streaming.StreamManager) managing the stream being assembled.\n * @param params Parameters for a streaming assembler.\n */\n function PayloadAssembler(streamManager, params) {\n this.streamManager = streamManager;\n this._byteOrderMark = 0xfeff;\n this._utf = 'utf8';\n if (params.header) {\n this.id = params.header.id;\n this.payloadType = params.header.payloadType;\n this.contentLength = params.header.payloadLength;\n this.end = params.header.end;\n }\n else {\n this.id = params.id;\n }\n if (!this.id) {\n throw Error('An ID must be supplied when creating an assembler.');\n }\n this._onCompleted = params.onCompleted;\n }\n /**\n * Retrieves the assembler's payload as a stream.\n *\n * @returns A [SubscribableStream](xref:botframework-streaming.SubscribableStream) of the assembler's payload.\n */\n PayloadAssembler.prototype.getPayloadStream = function () {\n if (!this.stream) {\n this.stream = this.createPayloadStream();\n }\n return this.stream;\n };\n /**\n * The action the assembler executes when new bytes are received on the incoming stream.\n *\n * @param header The stream's Header.\n * @param stream The incoming stream being assembled.\n * @param _contentLength The length of the stream, if finite.\n */\n PayloadAssembler.prototype.onReceive = function (header, stream, _contentLength) {\n this.end = header.end;\n if (header.payloadType === payloads_1.PayloadTypes.response || header.payloadType === payloads_1.PayloadTypes.request) {\n this.process(stream).then().catch();\n }\n else if (header.end) {\n stream.end();\n }\n };\n /**\n * Closes the assembler.\n */\n PayloadAssembler.prototype.close = function () {\n this.streamManager.closeStream(this.id);\n };\n /**\n * Creates a new [SubscribableStream](xref:botframework-streaming.SubscribableStream) instance.\n *\n * @returns The new stream ready for consumption.\n */\n PayloadAssembler.prototype.createPayloadStream = function () {\n return new subscribableStream_1.SubscribableStream();\n };\n PayloadAssembler.prototype.payloadFromJson = function (json) {\n return JSON.parse(json.charCodeAt(0) === this._byteOrderMark ? json.slice(1) : json);\n };\n PayloadAssembler.prototype.stripBOM = function (input) {\n return input.charCodeAt(0) === this._byteOrderMark ? input.slice(1) : input;\n };\n PayloadAssembler.prototype.process = function (stream) {\n return __awaiter(this, void 0, void 0, function () {\n var streamData, streamDataAsString;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n streamData = stream.read(stream.length);\n if (!streamData) {\n return [2 /*return*/];\n }\n streamDataAsString = streamData.toString(this._utf);\n if (!(this.payloadType === payloads_1.PayloadTypes.request)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.processRequest(streamDataAsString)];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2:\n if (!(this.payloadType === payloads_1.PayloadTypes.response)) return [3 /*break*/, 4];\n return [4 /*yield*/, this.processResponse(streamDataAsString)];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n PayloadAssembler.prototype.processResponse = function (streamDataAsString) {\n return __awaiter(this, void 0, void 0, function () {\n var responsePayload, receiveResponse;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n responsePayload = this.payloadFromJson(this.stripBOM(streamDataAsString));\n receiveResponse = { streams: [], statusCode: responsePayload.statusCode };\n return [4 /*yield*/, this.processStreams(responsePayload, receiveResponse)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n PayloadAssembler.prototype.processRequest = function (streamDataAsString) {\n return __awaiter(this, void 0, void 0, function () {\n var requestPayload, receiveRequest;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n requestPayload = this.payloadFromJson(streamDataAsString);\n receiveRequest = { streams: [], path: requestPayload.path, verb: requestPayload.verb };\n return [4 /*yield*/, this.processStreams(requestPayload, receiveRequest)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n PayloadAssembler.prototype.processStreams = function (responsePayload, receiveResponse) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n (_a = responsePayload.streams) === null || _a === void 0 ? void 0 : _a.forEach(function (responseStream) {\n var _a;\n // There was a bug in how streams were handled. In .NET, the StreamDescription definiton mapped the\n // \"type\" JSON property to `contentType`, but in Typescript there was no mapping. This is a workaround\n // to resolve this inconsistency.\n //\n // .NET code:\n // https://github.com/microsoft/botbuilder-dotnet/blob/a79036ddf6625ec3fd68a6f7295886eb7831bc1c/libraries/Microsoft.Bot.Streaming/Payloads/Models/StreamDescription.cs#L28-L29\n var contentType = (_a = responseStream.type) !== null && _a !== void 0 ? _a : responseStream.contentType;\n var contentAssembler = _this.streamManager.getPayloadAssembler(responseStream.id);\n contentAssembler.payloadType = contentType;\n contentAssembler.contentLength = responseStream.length;\n receiveResponse.streams.push(new contentStream_1.ContentStream(responseStream.id, contentAssembler));\n });\n return [4 /*yield*/, this._onCompleted(this.id, receiveResponse)];\n case 1:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n return PayloadAssembler;\n}());\nexports.PayloadAssembler = PayloadAssembler;\n\n},{\"../contentStream\":2,\"../payloads\":16,\"../subscribableStream\":27}],2:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContentStream = void 0;\n/**\n * A stream of fixed or infinite length containing content to be decoded.\n */\nvar ContentStream = /** @class */ (function () {\n /**\n * Initializes a new instance of the [ContentStream](xref:botframework-streaming.ContentStream) class.\n *\n * @param id The ID assigned to this instance.\n * @param assembler The [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) assigned to this instance.\n */\n function ContentStream(id, assembler) {\n if (!assembler) {\n throw Error('Null Argument Exception');\n }\n this.id = id;\n this.assembler = assembler;\n }\n Object.defineProperty(ContentStream.prototype, \"contentType\", {\n /**\n * Gets the name of the type of the object contained within this [ContentStream](xref:botframework-streaming.ContentStream).\n *\n * @returns The [PayloadType](xref:botframework-streaming.PayloadType) of this [ContentStream](xref:botframework-streaming.ContentStream).\n */\n get: function () {\n return this.assembler.payloadType;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ContentStream.prototype, \"length\", {\n /**\n * Gets the length of this [ContentStream](xref:botframework-streaming.ContentStream).\n *\n * @returns A number representing the length of this [ContentStream](xref:botframework-streaming.ContentStream).\n */\n get: function () {\n return this.assembler.contentLength;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Gets the data contained within this [ContentStream](xref:botframework-streaming.ContentStream).\n *\n * @returns This [ContentStream's](xref:botframework-streaming.ContentStream) [SubscribableStream](xref:botframework-streaming.SubscribableStream).\n */\n ContentStream.prototype.getStream = function () {\n if (!this.stream) {\n this.stream = this.assembler.getPayloadStream();\n }\n return this.stream;\n };\n /**\n * Closes the assembler.\n */\n ContentStream.prototype.cancel = function () {\n this.assembler.close();\n };\n /**\n * Gets the [SubscribableStream](xref:botframework-streaming.SubscribableStream) content as a string.\n *\n * @returns A string Promise with [SubscribableStream](xref:botframework-streaming.SubscribableStream) content.\n */\n ContentStream.prototype.readAsString = function () {\n return __awaiter(this, void 0, void 0, function () {\n var bufferArray;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.readAll()];\n case 1:\n bufferArray = (_a.sent()).bufferArray;\n return [2 /*return*/, (bufferArray || []).map(function (result) { return result.toString('utf8'); }).join('')];\n }\n });\n });\n };\n /**\n * Gets the [SubscribableStream](xref:botframework-streaming.SubscribableStream) content as a typed JSON object.\n *\n * @returns A typed object Promise with `SubscribableStream` content.\n */\n ContentStream.prototype.readAsJson = function () {\n return __awaiter(this, void 0, void 0, function () {\n var stringToParse;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.readAsString()];\n case 1:\n stringToParse = _a.sent();\n return [2 /*return*/, JSON.parse(stringToParse)];\n }\n });\n });\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ContentStream.prototype.readAll = function () {\n return __awaiter(this, void 0, void 0, function () {\n var allData, count, stream, chunk, readToEnd;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n allData = [];\n count = 0;\n stream = this.getStream();\n // populate the array with any existing buffers\n while (count < stream.length) {\n chunk = stream.read(stream.length);\n allData.push(chunk);\n count += chunk.length;\n }\n if (!(count < this.length)) return [3 /*break*/, 2];\n readToEnd = new Promise(function (resolve) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var callback = function (cs) { return function (chunk) {\n allData.push(chunk);\n count += chunk.length;\n if (count === cs.length) {\n resolve(true);\n }\n }; };\n stream.subscribe(callback(_this));\n });\n return [4 /*yield*/, readToEnd];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [2 /*return*/, { bufferArray: allData, size: count }];\n }\n });\n });\n };\n return ContentStream;\n}());\nexports.ContentStream = ContentStream;\n\n},{}],3:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CancelDisassembler = void 0;\n/**\n * Streaming cancel disassembler.\n */\nvar CancelDisassembler = /** @class */ (function () {\n /**\n * Initializes a new instance of the [CancelDisassembler](xref:botframework-streaming.CancelDisassembler) class.\n *\n * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) that this Cancel request will be sent by.\n * @param id The ID of the Stream to cancel.\n * @param payloadType The type of the Stream that is being cancelled.\n */\n function CancelDisassembler(sender, id, payloadType) {\n this.sender = sender;\n this.id = id;\n this.payloadType = payloadType;\n }\n /**\n * Initiates the process of disassembling the request and signals the [PayloadSender](xref:botframework-streaming.PayloadSender) to begin sending.\n */\n CancelDisassembler.prototype.disassemble = function () {\n var header = {\n payloadType: this.payloadType,\n payloadLength: 0,\n id: this.id,\n end: true,\n };\n this.sender.sendPayload(header);\n };\n return CancelDisassembler;\n}());\nexports.CancelDisassembler = CancelDisassembler;\n\n},{}],4:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpContentStreamDisassembler = void 0;\nvar payloadDisassembler_1 = require(\"./payloadDisassembler\");\nvar payloads_1 = require(\"../payloads\");\n/**\n * Disassembler for Http content stream\n */\nvar HttpContentStreamDisassembler = /** @class */ (function (_super) {\n __extends(HttpContentStreamDisassembler, _super);\n /**\n * Initializes a new instance of the [HttpContentStreamDisassembler](xref:botframework-streaming.HttpContentStreamDisassembler) class.\n *\n * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) to send the disassembled data to.\n * @param contentStream The [HttpContentStream](xref:botframework-streaming.HttpContentStream) to be disassembled.\n */\n function HttpContentStreamDisassembler(sender, contentStream) {\n var _this = _super.call(this, sender, contentStream.id) || this;\n _this.payloadType = payloads_1.PayloadTypes.stream;\n _this.contentStream = contentStream;\n return _this;\n }\n /**\n * Gets the stream this disassembler is operating on.\n *\n * @returns An [IStreamWrapper](xref:botframework-streaming.IStreamWrapper) with a Subscribable Strea.\n */\n HttpContentStreamDisassembler.prototype.getStream = function () {\n return __awaiter(this, void 0, void 0, function () {\n var stream;\n return __generator(this, function (_a) {\n stream = this.contentStream.content.getStream();\n return [2 /*return*/, { stream: stream, streamLength: stream.length }];\n });\n });\n };\n return HttpContentStreamDisassembler;\n}(payloadDisassembler_1.PayloadDisassembler));\nexports.HttpContentStreamDisassembler = HttpContentStreamDisassembler;\n\n},{\"../payloads\":16,\"./payloadDisassembler\":5}],5:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadDisassembler = void 0;\nvar subscribableStream_1 = require(\"../subscribableStream\");\n/**\n * Base class streaming payload disassembling.\n */\nvar PayloadDisassembler = /** @class */ (function () {\n /**\n * Initializes a new instance of the [PayloadDisassembler](xref:botframework-streaming.PayloadDisassembler) class.\n *\n * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) used to send the disassembled payload chunks.\n * @param id The ID of this disassembler.\n */\n function PayloadDisassembler(sender, id) {\n this.sender = sender;\n this.id = id;\n }\n /**\n * Serializes the item into the [IStreamWrapper](xref:botframework-streaming.IStreamWrapper) that exposes the stream and length of the result.\n *\n * @param item The item to be serialized.\n * @returns The stream containing the serialized item and the length of the stream.\n */\n PayloadDisassembler.serialize = function (item) {\n var stream = new subscribableStream_1.SubscribableStream();\n stream.write(JSON.stringify(item));\n stream.end();\n return { stream: stream, streamLength: stream.length };\n };\n /**\n * Begins the process of disassembling a payload and sending the resulting chunks to the [PayloadSender](xref:botframework-streaming.PayloadSender) to dispatch over the transport.\n *\n * @returns A completed Promise after the disassembled payload has been sent.\n */\n PayloadDisassembler.prototype.disassemble = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, stream, streamLength;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.getStream()];\n case 1:\n _a = _b.sent(), stream = _a.stream, streamLength = _a.streamLength;\n this.stream = stream;\n this.streamLength = streamLength;\n return [2 /*return*/, this.send()];\n }\n });\n });\n };\n /**\n * Begins the process of disassembling a payload and signals the [PayloadSender](xref:botframework-streaming.PayloadSender).\n */\n PayloadDisassembler.prototype.send = function () {\n return __awaiter(this, void 0, void 0, function () {\n var header;\n return __generator(this, function (_a) {\n header = {\n payloadType: this.payloadType,\n payloadLength: this.streamLength,\n id: this.id,\n end: true,\n };\n this.sender.sendPayload(header, this.stream);\n return [2 /*return*/];\n });\n });\n };\n return PayloadDisassembler;\n}());\nexports.PayloadDisassembler = PayloadDisassembler;\n\n},{\"../subscribableStream\":27}],6:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestDisassembler = void 0;\nvar payloadTypes_1 = require(\"../payloads/payloadTypes\");\nvar payloadDisassembler_1 = require(\"./payloadDisassembler\");\n/**\n * Streaming request disassembler.\n */\nvar RequestDisassembler = /** @class */ (function (_super) {\n __extends(RequestDisassembler, _super);\n /**\n * Initializes a new instance of the [RequestDisassembler](xref:botframework-streaming.RequestDisassembler) class.\n *\n * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) to send the disassembled data to.\n * @param id The ID of this disassembler.\n * @param request The request to be disassembled.\n */\n function RequestDisassembler(sender, id, request) {\n var _this = _super.call(this, sender, id) || this;\n _this.request = request;\n _this.payloadType = payloadTypes_1.PayloadTypes.request;\n return _this;\n }\n /**\n * Gets the stream this disassembler is operating on.\n *\n * @returns An [IStreamWrapper](xref:botframework-streaming.IStreamWrapper) with a Subscribable Stream.\n */\n RequestDisassembler.prototype.getStream = function () {\n var _a, _b, _c, _d;\n return __awaiter(this, void 0, void 0, function () {\n var payload;\n return __generator(this, function (_e) {\n payload = { verb: (_a = this.request) === null || _a === void 0 ? void 0 : _a.verb, path: (_b = this.request) === null || _b === void 0 ? void 0 : _b.path, streams: [] };\n (_d = (_c = this.request) === null || _c === void 0 ? void 0 : _c.streams) === null || _d === void 0 ? void 0 : _d.forEach(function (stream) {\n payload.streams.push(stream.description);\n });\n return [2 /*return*/, payloadDisassembler_1.PayloadDisassembler.serialize(payload)];\n });\n });\n };\n return RequestDisassembler;\n}(payloadDisassembler_1.PayloadDisassembler));\nexports.RequestDisassembler = RequestDisassembler;\n\n},{\"../payloads/payloadTypes\":19,\"./payloadDisassembler\":5}],7:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResponseDisassembler = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar payloadTypes_1 = require(\"../payloads/payloadTypes\");\nvar payloadDisassembler_1 = require(\"./payloadDisassembler\");\n/**\n * Streaming response disassembler.\n */\nvar ResponseDisassembler = /** @class */ (function (_super) {\n __extends(ResponseDisassembler, _super);\n /**\n * Initializes a new instance of the [ResponseDisassembler](xref:botframework-streaming.ResponseDisassembler) class.\n *\n * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) to send the disassembled data to.\n * @param id The ID of this disassembler.\n * @param response The response to be disassembled.\n */\n function ResponseDisassembler(sender, id, response) {\n var _this = _super.call(this, sender, id) || this;\n _this.payloadType = payloadTypes_1.PayloadTypes.response;\n _this.response = response;\n return _this;\n }\n /**\n * Gets the stream this disassembler is operating on.\n *\n * @returns An [IStreamWrapper](xref:botframework-streaming.IStreamWrapper) with a Subscribable Stream.\n */\n ResponseDisassembler.prototype.getStream = function () {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var payload;\n return __generator(this, function (_b) {\n payload = { statusCode: this.response.statusCode, streams: [] };\n (_a = this.response.streams) === null || _a === void 0 ? void 0 : _a.forEach(function (_a) {\n var description = _a.description;\n payload.streams.push({\n id: description.id,\n contentType: description.type,\n length: description.length,\n });\n });\n return [2 /*return*/, payloadDisassembler_1.PayloadDisassembler.serialize(payload)];\n });\n });\n };\n return ResponseDisassembler;\n}(payloadDisassembler_1.PayloadDisassembler));\nexports.ResponseDisassembler = ResponseDisassembler;\n\n},{\"../payloads/payloadTypes\":19,\"./payloadDisassembler\":5}],8:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpContent = exports.HttpContentStream = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar protocol_base_1 = require(\"./utilities/protocol-base\");\n/**\n * An attachment contained within a StreamingRequest's stream collection, which itself contains any form of media item.\n */\nvar HttpContentStream = /** @class */ (function () {\n /**\n * Initializes a new instance of the [HttpContentStream](xref:botframework-streaming.HttpContentStream) class.\n *\n * @param content The [HttpContent](xref:botframework-streaming.HttpContent) to assign to the [HttpContentStream](xref:botframework-streaming.HttpContentStream).\n */\n function HttpContentStream(content) {\n var _a, _b, _c, _d, _e, _f;\n this.content = content;\n this.id = (0, protocol_base_1.generateGuid)();\n this.description = {\n id: this.id,\n type: (_c = (_b = (_a = this.content) === null || _a === void 0 ? void 0 : _a.headers) === null || _b === void 0 ? void 0 : _b.type) !== null && _c !== void 0 ? _c : 'unknown',\n length: (_f = (_e = (_d = this.content) === null || _d === void 0 ? void 0 : _d.headers) === null || _e === void 0 ? void 0 : _e.contentLength) !== null && _f !== void 0 ? _f : 0,\n };\n }\n return HttpContentStream;\n}());\nexports.HttpContentStream = HttpContentStream;\n/**\n * The HttpContent class that contains a [SubscribableStream](xref:botframework-streaming.SubscribableStream).\n */\nvar HttpContent = /** @class */ (function () {\n /**\n * Initializes a new instance of the [HttpContent](xref:botframework-streaming.HttpContent) class.\n *\n * @param headers The Streaming Http content header definition.\n * @param stream The stream of buffered data.\n */\n function HttpContent(headers, stream) {\n this.headers = headers;\n this.stream = stream;\n }\n /**\n * Gets the data contained within this [HttpContent](xref:botframework-streaming.HttpContent).\n *\n * @returns This [HttpContent's](xref:botframework-streaming.HttpContent) [SubscribableStream](xref:botframework-streaming.SubscribableStream) member.\n */\n HttpContent.prototype.getStream = function () {\n return this.stream;\n };\n return HttpContent;\n}());\nexports.HttpContent = HttpContent;\n\n},{\"./utilities/protocol-base\":28}],9:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocketClient = exports.BrowserWebSocket = exports.SubscribableStream = exports.StreamingResponse = exports.StreamingRequest = exports.RequestHandler = exports.HttpContent = exports.ContentStream = void 0;\nvar contentStream_1 = require(\"./contentStream\");\nObject.defineProperty(exports, \"ContentStream\", { enumerable: true, get: function () { return contentStream_1.ContentStream; } });\nvar httpContentStream_1 = require(\"./httpContentStream\");\nObject.defineProperty(exports, \"HttpContent\", { enumerable: true, get: function () { return httpContentStream_1.HttpContent; } });\nvar requestHandler_1 = require(\"./requestHandler\");\nObject.defineProperty(exports, \"RequestHandler\", { enumerable: true, get: function () { return requestHandler_1.RequestHandler; } });\nvar streamingRequest_1 = require(\"./streamingRequest\");\nObject.defineProperty(exports, \"StreamingRequest\", { enumerable: true, get: function () { return streamingRequest_1.StreamingRequest; } });\nvar streamingResponse_1 = require(\"./streamingResponse\");\nObject.defineProperty(exports, \"StreamingResponse\", { enumerable: true, get: function () { return streamingResponse_1.StreamingResponse; } });\nvar subscribableStream_1 = require(\"./subscribableStream\");\nObject.defineProperty(exports, \"SubscribableStream\", { enumerable: true, get: function () { return subscribableStream_1.SubscribableStream; } });\nvar index_browser_1 = require(\"./webSocket/index-browser\");\nObject.defineProperty(exports, \"BrowserWebSocket\", { enumerable: true, get: function () { return index_browser_1.BrowserWebSocket; } });\nObject.defineProperty(exports, \"WebSocketClient\", { enumerable: true, get: function () { return index_browser_1.WebSocketClient; } });\n\n},{\"./contentStream\":2,\"./httpContentStream\":8,\"./requestHandler\":24,\"./streamingRequest\":25,\"./streamingResponse\":26,\"./subscribableStream\":27,\"./webSocket/index-browser\":31}],10:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./payloadReceiver\"), exports);\n__exportStar(require(\"./payloadSender\"), exports);\n__exportStar(require(\"./transportDisconnectedEvent\"), exports);\n__exportStar(require(\"./transportDisconnectedEventHandler\"), exports);\n\n},{\"./payloadReceiver\":11,\"./payloadSender\":12,\"./transportDisconnectedEvent\":13,\"./transportDisconnectedEventHandler\":14}],11:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadReceiver = void 0;\nvar payloadTypes_1 = require(\"../payloads/payloadTypes\");\nvar headerSerializer_1 = require(\"../payloads/headerSerializer\");\nvar payloadConstants_1 = require(\"../payloads/payloadConstants\");\nvar transportDisconnectedEvent_1 = require(\"./transportDisconnectedEvent\");\n/**\n * Payload receiver for streaming.\n */\nvar PayloadReceiver = /** @class */ (function () {\n function PayloadReceiver() {\n }\n Object.defineProperty(PayloadReceiver.prototype, \"isConnected\", {\n /**\n * Get current connected state\n *\n * @returns true if connected to a transport sender.\n */\n get: function () {\n return this._receiver != null;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Connects to a transport receiver\n *\n * @param receiver The [ITransportReceiver](xref:botframework-streaming.ITransportReceiver) object to pull incoming data from.\n * @returns a promise that resolves when the receiver is complete\n */\n PayloadReceiver.prototype.connect = function (receiver) {\n this._receiver = receiver;\n return this.receivePackets();\n };\n /**\n * Allows subscribing to this receiver in order to be notified when new data comes in.\n *\n * @param getStream Callback when a new stream has been received.\n * @param receiveAction Callback when a new message has been received.\n */\n PayloadReceiver.prototype.subscribe = function (getStream, receiveAction) {\n this._getStream = getStream;\n this._receiveAction = receiveAction;\n };\n /**\n * Force this receiver to disconnect.\n *\n * @param event Event arguments to include when broadcasting disconnection event.\n */\n PayloadReceiver.prototype.disconnect = function (event) {\n var _a, _b;\n if (event === void 0) { event = transportDisconnectedEvent_1.TransportDisconnectedEvent.Empty; }\n if (!this.isConnected) {\n return;\n }\n try {\n this._receiver.close();\n (_a = this.disconnected) === null || _a === void 0 ? void 0 : _a.call(this, this, event);\n }\n catch (err) {\n (_b = this.disconnected) === null || _b === void 0 ? void 0 : _b.call(this, this, new transportDisconnectedEvent_1.TransportDisconnectedEvent(err.message));\n }\n finally {\n this._receiver = null;\n }\n };\n PayloadReceiver.prototype.receivePackets = function () {\n return __awaiter(this, void 0, void 0, function () {\n var readSoFar, _a, header, isStream, bytesActuallyRead, contentStream, count, _b, err_1;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (!this.isConnected) return [3 /*break*/, 11];\n _c.label = 1;\n case 1:\n _c.trys.push([1, 9, , 10]);\n readSoFar = 0;\n _c.label = 2;\n case 2:\n if (!(readSoFar < payloadConstants_1.PayloadConstants.MaxHeaderLength)) return [3 /*break*/, 4];\n _a = this;\n return [4 /*yield*/, this._receiver.receive(payloadConstants_1.PayloadConstants.MaxHeaderLength - readSoFar)];\n case 3:\n _a._receiveHeaderBuffer = _c.sent();\n if (this._receiveHeaderBuffer) {\n readSoFar += this._receiveHeaderBuffer.length;\n }\n return [3 /*break*/, 2];\n case 4:\n header = headerSerializer_1.HeaderSerializer.deserialize(this._receiveHeaderBuffer);\n isStream = header.payloadType === payloadTypes_1.PayloadTypes.stream;\n if (!(header.payloadLength > 0)) return [3 /*break*/, 8];\n bytesActuallyRead = 0;\n contentStream = this._getStream(header);\n _c.label = 5;\n case 5:\n if (!(bytesActuallyRead < header.payloadLength &&\n bytesActuallyRead < payloadConstants_1.PayloadConstants.MaxPayloadLength)) return [3 /*break*/, 7];\n count = Math.min(header.payloadLength - bytesActuallyRead, payloadConstants_1.PayloadConstants.MaxPayloadLength);\n _b = this;\n return [4 /*yield*/, this._receiver.receive(count)];\n case 6:\n _b._receivePayloadBuffer = _c.sent();\n bytesActuallyRead += this._receivePayloadBuffer.byteLength;\n contentStream.write(this._receivePayloadBuffer);\n // If this is a stream we want to keep handing it up as it comes in\n if (isStream) {\n this._receiveAction(header, contentStream, bytesActuallyRead);\n }\n return [3 /*break*/, 5];\n case 7:\n if (!isStream) {\n this._receiveAction(header, contentStream, bytesActuallyRead);\n }\n _c.label = 8;\n case 8: return [3 /*break*/, 10];\n case 9:\n err_1 = _c.sent();\n this.disconnect(new transportDisconnectedEvent_1.TransportDisconnectedEvent(err_1.message));\n return [3 /*break*/, 10];\n case 10: return [3 /*break*/, 0];\n case 11: return [2 /*return*/];\n }\n });\n });\n };\n return PayloadReceiver;\n}());\nexports.PayloadReceiver = PayloadReceiver;\n\n},{\"../payloads/headerSerializer\":15,\"../payloads/payloadConstants\":18,\"../payloads/payloadTypes\":19,\"./transportDisconnectedEvent\":13}],12:[function(require,module,exports){\n(function (Buffer){(function (){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadSender = void 0;\nvar headerSerializer_1 = require(\"../payloads/headerSerializer\");\nvar payloadConstants_1 = require(\"../payloads/payloadConstants\");\nvar transportDisconnectedEvent_1 = require(\"./transportDisconnectedEvent\");\n/**\n * Streaming payload sender.\n */\nvar PayloadSender = /** @class */ (function () {\n function PayloadSender() {\n }\n Object.defineProperty(PayloadSender.prototype, \"isConnected\", {\n /**\n * Get current connected state\n *\n * @returns true if connected to a transport sender.\n */\n get: function () {\n return this._sender != null;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Connects to the given transport sender.\n *\n * @param sender The transport sender to connect this payload sender to.\n */\n PayloadSender.prototype.connect = function (sender) {\n this._sender = sender;\n };\n /**\n * Sends a payload out over the connected transport sender.\n *\n * @param header The header to attach to the outgoing payload.\n * @param payload The stream of buffered data to send.\n * @param sentCallback The function to execute when the send has completed.\n */\n PayloadSender.prototype.sendPayload = function (header, payload, sentCallback) {\n var packet = { header: header, payload: payload, sentCallback: sentCallback };\n this.writePacket(packet);\n };\n /**\n * Disconnects this payload sender.\n *\n * @param event The disconnected event arguments to include in the disconnected event broadcast.\n */\n PayloadSender.prototype.disconnect = function (event) {\n var _a, _b;\n if (event === void 0) { event = transportDisconnectedEvent_1.TransportDisconnectedEvent.Empty; }\n if (!this.isConnected) {\n return;\n }\n try {\n this._sender.close();\n (_a = this.disconnected) === null || _a === void 0 ? void 0 : _a.call(this, this, event);\n }\n catch (err) {\n (_b = this.disconnected) === null || _b === void 0 ? void 0 : _b.call(this, this, new transportDisconnectedEvent_1.TransportDisconnectedEvent(err.message));\n }\n finally {\n this._sender = null;\n }\n };\n PayloadSender.prototype.writePacket = function (packet) {\n try {\n if (packet.header.payloadLength > 0 && packet.payload) {\n var leftOver = packet.header.payloadLength;\n while (leftOver > 0) {\n var count = leftOver <= payloadConstants_1.PayloadConstants.MaxPayloadLength ? leftOver : payloadConstants_1.PayloadConstants.MaxPayloadLength;\n var chunk = packet.payload.read(count);\n var header = packet.header;\n header.payloadLength = count;\n header.end = leftOver <= payloadConstants_1.PayloadConstants.MaxPayloadLength;\n var sendHeaderBuffer = Buffer.alloc(payloadConstants_1.PayloadConstants.MaxHeaderLength);\n headerSerializer_1.HeaderSerializer.serialize(header, sendHeaderBuffer);\n this._sender.send(sendHeaderBuffer);\n this._sender.send(chunk);\n leftOver -= chunk.length;\n }\n if (packet.sentCallback) {\n packet.sentCallback();\n }\n }\n }\n catch (err) {\n this.disconnect(new transportDisconnectedEvent_1.TransportDisconnectedEvent(err.message));\n }\n };\n return PayloadSender;\n}());\nexports.PayloadSender = PayloadSender;\n\n}).call(this)}).call(this,require(\"buffer\").Buffer)\n\n},{\"../payloads/headerSerializer\":15,\"../payloads/payloadConstants\":18,\"./transportDisconnectedEvent\":13,\"buffer\":35}],13:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TransportDisconnectedEvent = void 0;\n/**\n * Event to be included when disconnection events are fired.\n */\nvar TransportDisconnectedEvent = /** @class */ (function () {\n /**\n * Indicates a transport disconnected with the reason provided via the constructor.\n *\n * @remarks\n * This class is used for communicating disconnection events between the\n * PayloadReceiver and PayloadSender.\n * @param reason The reason the disconnection event fired, in plain text.\n */\n function TransportDisconnectedEvent(reason) {\n this.reason = reason;\n }\n /**\n * A new and empty TransportDisconnectedEvent.\n */\n TransportDisconnectedEvent.Empty = new TransportDisconnectedEvent();\n return TransportDisconnectedEvent;\n}());\nexports.TransportDisconnectedEvent = TransportDisconnectedEvent;\n\n},{}],14:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n},{}],15:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HeaderSerializer = void 0;\nvar payloadConstants_1 = require(\"./payloadConstants\");\n/**\n * Streaming header serializer\n */\nvar HeaderSerializer = /** @class */ (function () {\n function HeaderSerializer() {\n }\n /**\n * Serializes the header into a buffer\n *\n * @param header The header to serialize.\n * @param buffer The buffer into which to serialize the header.\n */\n HeaderSerializer.serialize = function (header, buffer) {\n buffer.write(header.payloadType, this.TypeOffset, 1, this.Encoding);\n buffer.write(this.Delimiter, this.TypeDelimiterOffset, 1, this.Encoding);\n buffer.write(this.headerLengthPadder(header.payloadLength, this.LengthLength, '0'), this.LengthOffset, this.LengthLength, this.Encoding);\n buffer.write(this.Delimiter, this.LengthDelimeterOffset, 1, this.Encoding);\n buffer.write(header.id, this.IdOffset);\n buffer.write(this.Delimiter, this.IdDelimeterOffset, 1, this.Encoding);\n buffer.write(header.end ? this.End : this.NotEnd, this.EndOffset);\n buffer.write(this.Terminator, this.TerminatorOffset);\n };\n /**\n * Deserializes a buffer containing header information.\n *\n * @param buffer The buffer from which to obtain the data to deserialize.\n * @returns The deserialized header from the buffer.\n */\n HeaderSerializer.deserialize = function (buffer) {\n var jsonBuffer = buffer.toString(this.Encoding);\n var headerArray = jsonBuffer.split(this.Delimiter);\n if (headerArray.length !== 4) {\n throw Error(\"Cannot parse header, header is malformed. Header: \".concat(jsonBuffer));\n }\n var payloadType = headerArray[0], length = headerArray[1], id = headerArray[2], headerEnd = headerArray[3];\n var end = headerEnd === '1\\n';\n var payloadLength = Number(length);\n var header = { end: end, payloadLength: payloadLength, payloadType: payloadType, id: id };\n if (!(header.payloadLength <= payloadConstants_1.PayloadConstants.MaxPayloadLength &&\n header.payloadLength >= payloadConstants_1.PayloadConstants.MinLength)) {\n throw Error(\"Header length of \".concat(header.payloadLength, \" is missing or malformed\"));\n }\n if (header.payloadType.length !== this.TypeDelimiterOffset) {\n throw Error(\"Header type '\".concat(header.payloadType.length, \"' is missing or malformed.\"));\n }\n if (!header.id ||\n !header.id.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i) ||\n header.id.length !== this.IdLength) {\n throw Error(\"Header ID '\".concat(header.id, \"' is missing or malformed.\"));\n }\n if (!(headerEnd === '0\\n' || headerEnd === '1\\n')) {\n throw Error(\"Header End is missing or not a valid value. Header end: '\".concat(headerEnd, \"'\"));\n }\n return header;\n };\n /**\n * Creates a padded string based on a length and character to be padded to.\n *\n * @param lengthValue The value to be assingned on the result.\n * @param totalLength The length of the padded string result.\n * @param padChar The character value to use as filling.\n * @returns The padded string.\n */\n HeaderSerializer.headerLengthPadder = function (lengthValue, totalLength, padChar) {\n var result = Array(totalLength + 1).join(padChar);\n var lengthString = lengthValue.toString();\n return (result + lengthString).slice(lengthString.length);\n };\n HeaderSerializer.Delimiter = '.';\n HeaderSerializer.Terminator = '\\n';\n HeaderSerializer.End = '1';\n HeaderSerializer.NotEnd = '0';\n HeaderSerializer.TypeOffset = 0;\n HeaderSerializer.TypeDelimiterOffset = 1;\n HeaderSerializer.LengthOffset = 2;\n HeaderSerializer.LengthLength = 6;\n HeaderSerializer.LengthDelimeterOffset = 8;\n HeaderSerializer.IdOffset = 9;\n HeaderSerializer.IdLength = 36;\n HeaderSerializer.IdDelimeterOffset = 45;\n HeaderSerializer.EndOffset = 46;\n HeaderSerializer.TerminatorOffset = 47;\n HeaderSerializer.Encoding = 'utf8';\n return HeaderSerializer;\n}());\nexports.HeaderSerializer = HeaderSerializer;\n\n},{\"./payloadConstants\":18}],16:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./headerSerializer\"), exports);\n__exportStar(require(\"./streamManager\"), exports);\n__exportStar(require(\"./payloadAssemblerManager\"), exports);\n__exportStar(require(\"./payloadTypes\"), exports);\n__exportStar(require(\"./requestManager\"), exports);\n__exportStar(require(\"./sendOperations\"), exports);\n__exportStar(require(\"./streamManager\"), exports);\n\n},{\"./headerSerializer\":15,\"./payloadAssemblerManager\":17,\"./payloadTypes\":19,\"./requestManager\":20,\"./sendOperations\":21,\"./streamManager\":22}],17:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadAssemblerManager = void 0;\nvar payloadAssembler_1 = require(\"../assemblers/payloadAssembler\");\nvar payloadTypes_1 = require(\"./payloadTypes\");\n/**\n * Orchestrates assembly of payloads.\n */\nvar PayloadAssemblerManager = /** @class */ (function () {\n /**\n * Initializes a new instance of the [PayloadAssemblerManager](xref:botframework-streaming.PayloadAssemblerManager) class.\n *\n * @param streamManager The [StreamManager](xref:botframework-streaming.StreamManager) managing the stream being assembled.\n * @param onReceiveResponse Function that executes when new bytes are received on a `response` stream.\n * @param onReceiveRequest Function that executes when new bytes are received on a `request` stream.\n */\n function PayloadAssemblerManager(streamManager, onReceiveResponse, onReceiveRequest) {\n this.streamManager = streamManager;\n this.onReceiveResponse = onReceiveResponse;\n this.onReceiveRequest = onReceiveRequest;\n this.activeAssemblers = {};\n }\n /**\n * Retrieves the assembler's payload as a stream.\n *\n * @param header The Header of the Stream to retrieve.\n * @returns A [SubscribableStream](xref:botframework-streaming.SubscribableStream) of the assembler's payload.\n */\n PayloadAssemblerManager.prototype.getPayloadStream = function (header) {\n if (header.payloadType === payloadTypes_1.PayloadTypes.stream) {\n return this.streamManager.getPayloadStream(header);\n }\n else if (!this.activeAssemblers[header.id]) {\n var assembler = this.createPayloadAssembler(header);\n if (assembler) {\n this.activeAssemblers[header.id] = assembler;\n return assembler.getPayloadStream();\n }\n }\n };\n /**\n * The action the assembler executes when new bytes are received on the incoming stream.\n *\n * @param header The stream's Header.\n * @param contentStream The incoming stream being assembled.\n * @param contentLength The length of the stream, if finite.\n */\n PayloadAssemblerManager.prototype.onReceive = function (header, contentStream, contentLength) {\n if (header.payloadType === payloadTypes_1.PayloadTypes.stream) {\n this.streamManager.onReceive(header, contentStream, contentLength);\n }\n else {\n if (this.activeAssemblers && this.activeAssemblers[header.id]) {\n var assembler = this.activeAssemblers[header.id];\n assembler.onReceive(header, contentStream, contentLength);\n }\n if (header.end) {\n delete this.activeAssemblers[header.id];\n }\n }\n };\n PayloadAssemblerManager.prototype.createPayloadAssembler = function (header) {\n if (header.payloadType === payloadTypes_1.PayloadTypes.request) {\n return new payloadAssembler_1.PayloadAssembler(this.streamManager, {\n header: header,\n onCompleted: this.onReceiveRequest,\n });\n }\n else if (header.payloadType === payloadTypes_1.PayloadTypes.response) {\n return new payloadAssembler_1.PayloadAssembler(this.streamManager, {\n header: header,\n onCompleted: this.onReceiveResponse,\n });\n }\n };\n return PayloadAssemblerManager;\n}());\nexports.PayloadAssemblerManager = PayloadAssemblerManager;\n\n},{\"../assemblers/payloadAssembler\":1,\"./payloadTypes\":19}],18:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadConstants = void 0;\n/**\n * Constants for streaming payloads.\n */\nvar PayloadConstants;\n(function (PayloadConstants) {\n PayloadConstants[PayloadConstants[\"MaxPayloadLength\"] = 4096] = \"MaxPayloadLength\";\n PayloadConstants[PayloadConstants[\"MaxHeaderLength\"] = 48] = \"MaxHeaderLength\";\n PayloadConstants[PayloadConstants[\"MaxLength\"] = 999999] = \"MaxLength\";\n PayloadConstants[PayloadConstants[\"MinLength\"] = 0] = \"MinLength\";\n})(PayloadConstants = exports.PayloadConstants || (exports.PayloadConstants = {}));\n\n},{}],19:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadTypes = void 0;\n/**\n * Typess of payloads supported in the streaming library.\n */\nvar PayloadTypes;\n(function (PayloadTypes) {\n PayloadTypes[\"request\"] = \"A\";\n PayloadTypes[\"response\"] = \"B\";\n PayloadTypes[\"stream\"] = \"S\";\n PayloadTypes[\"cancelAll\"] = \"X\";\n PayloadTypes[\"cancelStream\"] = \"C\";\n})(PayloadTypes = exports.PayloadTypes || (exports.PayloadTypes = {}));\n\n},{}],20:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestManager = void 0;\n/**\n * A streaming pending request.\n */\nvar PendingRequest = /** @class */ (function () {\n function PendingRequest() {\n }\n return PendingRequest;\n}());\n/**\n * Orchestrates and manages pending streaming requests.\n */\nvar RequestManager = /** @class */ (function () {\n function RequestManager() {\n this._pendingRequests = {};\n }\n /**\n * Gets the count of the pending requests.\n *\n * @returns Number with the pending requests count.\n */\n RequestManager.prototype.pendingRequestCount = function () {\n return Object.keys(this._pendingRequests).length;\n };\n /**\n * Signal fired when all response tasks have completed.\n *\n * @param requestId The ID of the StreamingRequest.\n * @param response The [IReceiveResponse](xref:botframework-streaming.IReceiveResponse) in response to the request.\n * @returns A Promise that when completed returns `true` if the `requestId`'s pending response task was completed, otherwise `false`.\n */\n RequestManager.prototype.signalResponse = function (requestId, response) {\n return __awaiter(this, void 0, void 0, function () {\n var pendingRequest;\n return __generator(this, function (_a) {\n pendingRequest = this._pendingRequests[requestId];\n if (pendingRequest) {\n pendingRequest.resolve(response);\n delete this._pendingRequests[requestId];\n return [2 /*return*/, true];\n }\n return [2 /*return*/, false];\n });\n });\n };\n /**\n * Constructs and returns a response for this request.\n *\n * @param requestId The ID of the StreamingRequest being responded to.\n * @returns The response to the specified request.\n */\n RequestManager.prototype.getResponse = function (requestId) {\n var pendingRequest = this._pendingRequests[requestId];\n if (pendingRequest) {\n return Promise.reject(\"requestId '\".concat(requestId, \"' already exists in RequestManager\"));\n }\n pendingRequest = new PendingRequest();\n pendingRequest.requestId = requestId;\n var promise = new Promise(function (resolve, reject) {\n pendingRequest.resolve = resolve;\n pendingRequest.reject = reject;\n });\n this._pendingRequests[requestId] = pendingRequest;\n return promise;\n };\n /**\n * Rejects all requests pending a response.\n *\n * @param reason The reason for rejection.\n */\n RequestManager.prototype.rejectAllResponses = function (reason) {\n var _this = this;\n Object.entries(this._pendingRequests).forEach(function (_a) {\n var requestId = _a[0], reject = _a[1].reject;\n reject(reason);\n delete _this._pendingRequests[requestId];\n });\n };\n return RequestManager;\n}());\nexports.RequestManager = RequestManager;\n\n},{}],21:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SendOperations = void 0;\nvar cancelDisassembler_1 = require(\"../disassemblers/cancelDisassembler\");\nvar httpContentStreamDisassembler_1 = require(\"../disassemblers/httpContentStreamDisassembler\");\nvar requestDisassembler_1 = require(\"../disassemblers/requestDisassembler\");\nvar responseDisassembler_1 = require(\"../disassemblers/responseDisassembler\");\nvar payloadTypes_1 = require(\"./payloadTypes\");\n/**\n * Send operations for streaming payloads.\n */\nvar SendOperations = /** @class */ (function () {\n /**\n * Initializes a new instance of the [SendOperations](xref:botframework-streaming.SendOperations) class.\n *\n * @param payloadSender The [PayloadSender](xref:botframework-streaming.PayloadSender) that will send the disassembled data from all of this instance's send operations.\n */\n function SendOperations(payloadSender) {\n this.payloadSender = payloadSender;\n }\n /**\n * The send operation used to send a [StreamingRequest](xref:botframework-streaming.StreamingRequest).\n *\n * @param id The ID to assign to the [RequestDisassembler](xref:botframework-streaming.RequestDisassembler) used by this operation.\n * @param request The request to send.\n */\n SendOperations.prototype.sendRequest = function (id, request) {\n return __awaiter(this, void 0, void 0, function () {\n var disassembler;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n disassembler = new requestDisassembler_1.RequestDisassembler(this.payloadSender, id, request);\n return [4 /*yield*/, disassembler.disassemble()];\n case 1:\n _a.sent();\n if (request.streams) {\n request.streams.forEach(function (contentStream) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, new httpContentStreamDisassembler_1.HttpContentStreamDisassembler(this.payloadSender, contentStream).disassemble()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); });\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * The send operation used to send a [PayloadTypes.response](xref:botframework-streaming.PayloadTypes.response).\n *\n * @param id The ID to assign to the [ResponseDisassembler](xref:botframework-streaming.ResponseDisassembler) used by this operation.\n * @param response The response to send.\n */\n SendOperations.prototype.sendResponse = function (id, response) {\n return __awaiter(this, void 0, void 0, function () {\n var disassembler;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n disassembler = new responseDisassembler_1.ResponseDisassembler(this.payloadSender, id, response);\n return [4 /*yield*/, disassembler.disassemble()];\n case 1:\n _a.sent();\n if (response.streams) {\n response.streams.forEach(function (contentStream) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, new httpContentStreamDisassembler_1.HttpContentStreamDisassembler(this.payloadSender, contentStream).disassemble()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); });\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * The send operation used to send a [PayloadTypes.cancelStream](xref:botframework-streaming.PayloadTypes.cancelStream).\n *\n * @param id The ID to assign to the [CancelDisassembler](xref:botframework-streaming.CancelDisassembler) used by this operation.\n */\n SendOperations.prototype.sendCancelStream = function (id) {\n return __awaiter(this, void 0, void 0, function () {\n var disassembler;\n return __generator(this, function (_a) {\n disassembler = new cancelDisassembler_1.CancelDisassembler(this.payloadSender, id, payloadTypes_1.PayloadTypes.cancelStream);\n disassembler.disassemble();\n return [2 /*return*/];\n });\n });\n };\n return SendOperations;\n}());\nexports.SendOperations = SendOperations;\n\n},{\"../disassemblers/cancelDisassembler\":3,\"../disassemblers/httpContentStreamDisassembler\":4,\"../disassemblers/requestDisassembler\":6,\"../disassemblers/responseDisassembler\":7,\"./payloadTypes\":19}],22:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StreamManager = void 0;\nvar payloadAssembler_1 = require(\"../assemblers/payloadAssembler\");\n/**\n * Orchestrates and manages streams.\n */\nvar StreamManager = /** @class */ (function () {\n /**\n * Initializes a new instance of the [StreamManager](xref:botframework-streaming.StreamManager) class.\n *\n * @param onCancelStream Function to trigger if the managed stream is cancelled.\n */\n function StreamManager(onCancelStream) {\n this.onCancelStream = onCancelStream;\n this.activeAssemblers = [];\n }\n /**\n * Retrieves a [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) with the given ID if one exists, otherwise a new instance is created and assigned the given ID.\n *\n * @param id The ID of the [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) to retrieve or create.\n * @returns The [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) with the given ID.\n */\n StreamManager.prototype.getPayloadAssembler = function (id) {\n if (!this.activeAssemblers[id]) {\n // A new id has come in, kick off the process of tracking it.\n var assembler = new payloadAssembler_1.PayloadAssembler(this, { id: id });\n this.activeAssemblers[id] = assembler;\n return assembler;\n }\n else {\n return this.activeAssemblers[id];\n }\n };\n /**\n * Retrieves the [SubscribableStream](xref:botframework-streaming.SubscribableStream) from the [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) this manager manages.\n *\n * @param header The Header of the [SubscribableStream](xref:botframework-streaming.SubscribableStream) to retrieve.\n * @returns The [SubscribableStream](xref:botframework-streaming.SubscribableStream) with the given header.\n */\n StreamManager.prototype.getPayloadStream = function (header) {\n var assembler = this.getPayloadAssembler(header.id);\n return assembler.getPayloadStream();\n };\n /**\n * Used to set the behavior of the managed [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) when data is received.\n *\n * @param header The Header of the stream.\n * @param contentStream The [SubscribableStream](xref:botframework-streaming.SubscribableStream) to write incoming data to.\n * @param contentLength The amount of data to write to the contentStream.\n */\n StreamManager.prototype.onReceive = function (header, contentStream, contentLength) {\n if (!this.activeAssemblers[header.id]) {\n return;\n }\n this.activeAssemblers[header.id].onReceive(header, contentStream, contentLength);\n };\n /**\n * Closes the [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) assigned to the [SubscribableStream](xref:botframework-streaming.SubscribableStream) with the given ID.\n *\n * @param id The ID of the [SubscribableStream](xref:botframework-streaming.SubscribableStream) to close.\n */\n StreamManager.prototype.closeStream = function (id) {\n if (!this.activeAssemblers[id]) {\n return;\n }\n else {\n var assembler = this.activeAssemblers[id];\n this.activeAssemblers.splice(this.activeAssemblers.indexOf(id), 1);\n var targetStream = assembler.getPayloadStream();\n if ((assembler.contentLength && targetStream.length < assembler.contentLength) || !assembler.end) {\n this.onCancelStream(assembler);\n }\n }\n };\n return StreamManager;\n}());\nexports.StreamManager = StreamManager;\n\n},{\"../assemblers/payloadAssembler\":1}],23:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProtocolAdapter = void 0;\nvar payloadAssemblerManager_1 = require(\"./payloads/payloadAssemblerManager\");\nvar sendOperations_1 = require(\"./payloads/sendOperations\");\nvar streamManager_1 = require(\"./payloads/streamManager\");\nvar protocol_base_1 = require(\"./utilities/protocol-base\");\n/**\n * Creates a protocol adapter for Streaming.\n */\nvar ProtocolAdapter = /** @class */ (function () {\n /**\n * Creates a new instance of the protocol adapter class.\n *\n * @param requestHandler The [RequestHandler](xref:botframework-streaming.RequestHandler) that will process incoming requests.\n * @param requestManager The [RequestManager](xref:botframework-streaming.RequestManager) that will process outgoing requests.\n * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) for use with outgoing requests.\n * @param receiver The [PayloadReceiver](xref:botframework-streaming.PayloadReceiver) for use with incoming requests.\n */\n function ProtocolAdapter(requestHandler, requestManager, sender, receiver) {\n var _this = this;\n this.requestHandler = requestHandler;\n this.requestManager = requestManager;\n this.payloadSender = sender;\n this.payloadReceiver = receiver;\n this.sendOperations = new sendOperations_1.SendOperations(this.payloadSender);\n this.streamManager = new streamManager_1.StreamManager(this.onCancelStream);\n this.assemblerManager = new payloadAssemblerManager_1.PayloadAssemblerManager(this.streamManager, function (id, response) { return _this.onReceiveResponse(id, response); }, function (id, request) { return _this.onReceiveRequest(id, request); });\n this.payloadReceiver.subscribe(function (header) { return _this.assemblerManager.getPayloadStream(header); }, function (header, contentStream, contentLength) {\n return _this.assemblerManager.onReceive(header, contentStream, contentLength);\n });\n }\n /**\n * Sends a request over the attached request manager.\n *\n * @param request The outgoing request to send.\n * @returns The response to the specified request.\n */\n ProtocolAdapter.prototype.sendRequest = function (request) {\n return __awaiter(this, void 0, void 0, function () {\n var requestId, getResponsePromise;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n requestId = (0, protocol_base_1.generateGuid)();\n getResponsePromise = this.requestManager.getResponse(requestId);\n return [4 /*yield*/, this.sendOperations.sendRequest(requestId, request)];\n case 1:\n _a.sent();\n return [2 /*return*/, getResponsePromise];\n }\n });\n });\n };\n /**\n * Executes the receive pipeline when a request comes in.\n *\n * @param id The id the resources created for the response will be assigned.\n * @param request The incoming request to process.\n */\n ProtocolAdapter.prototype.onReceiveRequest = function (id, request) {\n return __awaiter(this, void 0, void 0, function () {\n var response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.requestHandler) return [3 /*break*/, 3];\n return [4 /*yield*/, this.requestHandler.processRequest(request)];\n case 1:\n response = _a.sent();\n if (!response) return [3 /*break*/, 3];\n return [4 /*yield*/, this.sendOperations.sendResponse(id, response)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes the receive pipeline when a response comes in.\n *\n * @param id The id the resources created for the response will be assigned.\n * @param response The incoming response to process.\n */\n ProtocolAdapter.prototype.onReceiveResponse = function (id, response) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.requestManager.signalResponse(id, response)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes the receive pipeline when a cancellation comes in.\n *\n * @param contentStreamAssembler The payload assembler processing the incoming data that this cancellation request targets.\n */\n ProtocolAdapter.prototype.onCancelStream = function (contentStreamAssembler) {\n this.sendOperations.sendCancelStream(contentStreamAssembler.id).catch();\n };\n return ProtocolAdapter;\n}());\nexports.ProtocolAdapter = ProtocolAdapter;\n\n},{\"./payloads/payloadAssemblerManager\":17,\"./payloads/sendOperations\":21,\"./payloads/streamManager\":22,\"./utilities/protocol-base\":28}],24:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestHandler = void 0;\n/**\n * Implemented by classes used to process incoming streaming requests sent over an [IStreamingTransport](xref:botframework-streaming.IStreamingTransport).\n */\nvar RequestHandler = /** @class */ (function () {\n function RequestHandler() {\n }\n return RequestHandler;\n}());\nexports.RequestHandler = RequestHandler;\n\n},{}],25:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StreamingRequest = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar httpContentStream_1 = require(\"./httpContentStream\");\nvar subscribableStream_1 = require(\"./subscribableStream\");\n/**\n * The basic request type sent over Bot Framework Protocol 3 with Streaming Extensions transports, equivalent to HTTP request messages.\n */\nvar StreamingRequest = /** @class */ (function () {\n function StreamingRequest() {\n /**\n * List of associated streams.\n */\n this.streams = [];\n }\n /**\n * Creates a streaming request with the passed in method, path, and body.\n *\n * @param method The HTTP verb to use for this request.\n * @param path Optional path where the resource can be found on the remote server.\n * @param body Optional body to send to the remote server.\n * @returns On success returns a streaming request with appropriate status code and body.\n */\n StreamingRequest.create = function (method, path, body) {\n var request = new StreamingRequest();\n request.verb = method;\n request.path = path;\n if (body) {\n request.setBody(body);\n }\n return request;\n };\n /**\n * Adds a new stream attachment to this streaming request.\n *\n * @param content The Http content to include in the new stream attachment.\n */\n StreamingRequest.prototype.addStream = function (content) {\n if (!content) {\n throw new Error('Argument Undefined Exception: content undefined.');\n }\n this.streams.push(new httpContentStream_1.HttpContentStream(content));\n };\n /**\n * Sets the contents of the body of this streamingRequest.\n *\n * @param body The JSON text to write to the body of the streamingRequest.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n StreamingRequest.prototype.setBody = function (body) {\n if (typeof body === 'string') {\n var stream = new subscribableStream_1.SubscribableStream();\n stream.write(body, 'utf8');\n this.addStream(new httpContentStream_1.HttpContent({\n type: 'application/json; charset=utf-8',\n contentLength: stream.length,\n }, stream));\n }\n else if (typeof body === 'object') {\n this.addStream(body);\n }\n };\n return StreamingRequest;\n}());\nexports.StreamingRequest = StreamingRequest;\n\n},{\"./httpContentStream\":8,\"./subscribableStream\":27}],26:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StreamingResponse = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar httpContentStream_1 = require(\"./httpContentStream\");\nvar subscribableStream_1 = require(\"./subscribableStream\");\n/**\n * The basic response type sent over Bot Framework Protocol 3 with Streaming Extensions transports, equivalent to HTTP response messages.\n */\nvar StreamingResponse = /** @class */ (function () {\n function StreamingResponse() {\n this.streams = [];\n }\n /**\n * Creates a streaming response with the passed in method, path, and body.\n *\n * @param statusCode The HTTP verb to use for this request.\n * @param body Optional body containing additional information.\n * @returns A streaming response with the appropriate statuscode and passed in body.\n */\n StreamingResponse.create = function (statusCode, body) {\n var response = new StreamingResponse();\n response.statusCode = statusCode;\n if (body) {\n response.addStream(body);\n }\n return response;\n };\n /**\n * Adds a new stream attachment to this streaming request.\n *\n * @param content The Http content to include in the new stream attachment.\n */\n StreamingResponse.prototype.addStream = function (content) {\n this.streams.push(new httpContentStream_1.HttpContentStream(content));\n };\n /**\n * Sets the contents of the body of this streaming response.\n *\n * @param body The JSON text to write to the body of the streaming response.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n StreamingResponse.prototype.setBody = function (body) {\n var stream = new subscribableStream_1.SubscribableStream();\n stream.write(JSON.stringify(body), 'utf8');\n this.addStream(new httpContentStream_1.HttpContent({\n type: 'application/json; charset=utf-8',\n contentLength: stream.length,\n }, stream));\n };\n return StreamingResponse;\n}());\nexports.StreamingResponse = StreamingResponse;\n\n},{\"./httpContentStream\":8,\"./subscribableStream\":27}],27:[function(require,module,exports){\n(function (Buffer){(function (){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SubscribableStream = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar stream_1 = require(\"stream\");\n/**\n * An extension of `Duplex` that operates in conjunction with a `PayloadAssembler` to convert raw bytes into a consumable form.\n */\nvar SubscribableStream = /** @class */ (function (_super) {\n __extends(SubscribableStream, _super);\n /**\n * Initializes a new instance of the [SubscribableStream](xref:botframework-streaming.SubscribableStream) class.\n *\n * @param options The `DuplexOptions` to use when constructing this stream.\n */\n function SubscribableStream(options) {\n var _this = _super.call(this, options) || this;\n _this.length = 0;\n _this.bufferList = [];\n return _this;\n }\n /**\n * Writes data to the buffered list.\n * All calls to writable.write() that occur between the time writable._write() is called and the callback is called will cause the written data to be buffered.\n *\n * @param chunk The Buffer to be written.\n * @param _encoding The encoding. Unused in the implementation of Duplex.\n * @param callback Callback for when this chunk of data is flushed.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n SubscribableStream.prototype._write = function (chunk, _encoding, callback) {\n var buffer = Buffer.from(chunk);\n this.bufferList.push(buffer);\n this.length += chunk.length;\n if (this._onData) {\n this._onData(buffer);\n }\n callback();\n };\n /**\n * Reads the buffered list.\n * Once the readable._read() method has been called, it will not be called again until more data is pushed through the readable.push() method.\n * Empty data such as empty buffers and strings will not cause readable._read() to be called.\n *\n * @param size Number of bytes to read.\n */\n SubscribableStream.prototype._read = function (size) {\n if (this.bufferList.length === 0) {\n // null signals end of stream\n this.push(null);\n }\n else {\n var total = 0;\n while (total < size && this.bufferList.length > 0) {\n var buffer = this.bufferList[0];\n this.push(buffer);\n this.bufferList.splice(0, 1);\n total += buffer.length;\n }\n }\n };\n /**\n * Subscribes to the stream when receives data.\n *\n * @param onData Callback to be called when onData is executed.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n SubscribableStream.prototype.subscribe = function (onData) {\n this._onData = onData;\n };\n return SubscribableStream;\n}(stream_1.Duplex));\nexports.SubscribableStream = SubscribableStream;\n\n}).call(this)}).call(this,require(\"buffer\").Buffer)\n\n},{\"buffer\":35,\"stream\":41}],28:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateGuid = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar uuid_1 = require(\"uuid\");\n/**\n * Generates an uuid v4 string.\n *\n * @returns An uuidv4 string.\n */\nfunction generateGuid() {\n return (0, uuid_1.v4)();\n}\nexports.generateGuid = generateGuid;\n\n},{\"uuid\":58}],29:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BrowserWebSocket = void 0;\n/**\n * Represents a WebSocket that implements [ISocket](xref:botframework-streaming.ISocket).\n */\nvar BrowserWebSocket = /** @class */ (function () {\n /**\n * Creates a new instance of the [BrowserWebSocket](xref:botframework-streaming.BrowserWebSocket) class.\n *\n * @param socket The socket object to build this connection on.\n */\n function BrowserWebSocket(socket) {\n if (socket) {\n this.webSocket = socket;\n }\n }\n /**\n * Connects to the supporting socket using WebSocket protocol.\n *\n * @param serverAddress The address the server is listening on.\n * @returns A Promise that resolves the websocket is open and rejects if an error is encountered.\n */\n BrowserWebSocket.prototype.connect = function (serverAddress) {\n return __awaiter(this, void 0, void 0, function () {\n var resolver, rejector;\n return __generator(this, function (_a) {\n if (!this.webSocket) {\n this.webSocket = new WebSocket(serverAddress);\n }\n this.webSocket.onerror = function (e) {\n rejector(e);\n };\n this.webSocket.onopen = function (e) {\n resolver(e);\n };\n return [2 /*return*/, new Promise(function (resolve, reject) {\n resolver = resolve;\n rejector = reject;\n })];\n });\n });\n };\n Object.defineProperty(BrowserWebSocket.prototype, \"isConnected\", {\n /**\n * Indicates if the [BrowserWebSocket's](xref:botframework-streaming.BrowserWebSocket) underlying websocket is currently connected.\n *\n * @returns `true` if the underlying websocket is ready and availble to send messages, otherwise `false`.\n */\n get: function () {\n return this.webSocket.readyState === 1;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Writes a buffer to the socket and sends it.\n *\n * @param buffer The buffer of data to send across the connection.\n */\n BrowserWebSocket.prototype.write = function (buffer) {\n this.webSocket.send(buffer);\n };\n /**\n * Close the socket.\n */\n BrowserWebSocket.prototype.close = function () {\n this.webSocket.close();\n };\n /**\n * Set the handler for text and binary messages received on the socket.\n *\n * @param handler The callback to handle the \"message\" event.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n BrowserWebSocket.prototype.setOnMessageHandler = function (handler) {\n var bufferKey = 'buffer';\n var packets = [];\n this.webSocket.onmessage = function (evt) {\n var fileReader = new FileReader();\n var queueEntry = { buffer: null };\n packets.push(queueEntry);\n fileReader.onload = function (e) {\n var t = e.target;\n queueEntry[bufferKey] = t.result;\n if (packets[0] === queueEntry) {\n while (0 < packets.length && packets[0][bufferKey]) {\n handler(packets[0][bufferKey]);\n packets.splice(0, 1);\n }\n }\n };\n fileReader.readAsArrayBuffer(evt.data);\n };\n };\n /**\n * Set the callback to call when encountering errors.\n *\n * @param handler The callback to handle the \"error\" event.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n BrowserWebSocket.prototype.setOnErrorHandler = function (handler) {\n this.webSocket.onerror = function (error) {\n if (error) {\n handler(error);\n }\n };\n };\n /**\n * Set the callback to call when encountering socket closures.\n *\n * @param handler The callback to handle the \"close\" event.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n BrowserWebSocket.prototype.setOnCloseHandler = function (handler) {\n this.webSocket.onclose = handler;\n };\n return BrowserWebSocket;\n}());\nexports.BrowserWebSocket = BrowserWebSocket;\n\n},{}],30:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocketClient = void 0;\nvar browserWebSocket_1 = require(\"./browserWebSocket\");\nvar payloadTransport_1 = require(\"../payloadTransport\");\nvar protocolAdapter_1 = require(\"../protocolAdapter\");\nvar payloads_1 = require(\"../payloads\");\nvar webSocketTransport_1 = require(\"./webSocketTransport\");\n/**\n * Web socket based client to be used as streaming transport.\n */\nvar WebSocketClient = /** @class */ (function () {\n /**\n * Creates a new instance of the [WebSocketClient](xref:botframework-streaming.WebSocketClient) class.\n *\n * @param config For configuring a [WebSocketClient](xref:botframework-streaming.WebSocketClient) instance to communicate with a WebSocket server.\n * @param config.url The URL of the remote server to connect to.\n * @param config.requestHandler The [RequestHandler](xref:botframework-streaming.RequestHandler) used to process incoming messages received by this client.\n * @param config.disconnectionHandler Optional function to handle the disconnection message.\n */\n function WebSocketClient(_a) {\n var url = _a.url, requestHandler = _a.requestHandler, _b = _a.disconnectionHandler, disconnectionHandler = _b === void 0 ? null : _b;\n this._url = url;\n this._requestHandler = requestHandler;\n this._disconnectionHandler = disconnectionHandler;\n this._requestManager = new payloads_1.RequestManager();\n this._sender = new payloadTransport_1.PayloadSender();\n this._sender.disconnected = this.onConnectionDisconnected.bind(this);\n this._receiver = new payloadTransport_1.PayloadReceiver();\n this._receiver.disconnected = this.onConnectionDisconnected.bind(this);\n this._protocolAdapter = new protocolAdapter_1.ProtocolAdapter(this._requestHandler, this._requestManager, this._sender, this._receiver);\n }\n /**\n * Establish a connection with no custom headers.\n *\n * @returns A promise that will not resolve until the client stops listening for incoming messages.\n */\n WebSocketClient.prototype.connect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var ws, transport;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n ws = new browserWebSocket_1.BrowserWebSocket();\n return [4 /*yield*/, ws.connect(this._url)];\n case 1:\n _a.sent();\n transport = new webSocketTransport_1.WebSocketTransport(ws);\n this._sender.connect(transport);\n this._receiver.connect(transport);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Stop this client from listening.\n */\n WebSocketClient.prototype.disconnect = function () {\n this._sender.disconnect(new payloadTransport_1.TransportDisconnectedEvent('Disconnect was called.'));\n this._receiver.disconnect(new payloadTransport_1.TransportDisconnectedEvent('Disconnect was called.'));\n };\n /**\n * Task used to send data over this client connection.\n *\n * @param request The streaming request to send.\n * @returns A promise that will produce an instance of receive response on completion of the send operation.\n */\n WebSocketClient.prototype.send = function (request) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._protocolAdapter.sendRequest(request)];\n });\n });\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n WebSocketClient.prototype.onConnectionDisconnected = function (sender, args) {\n // Rejects all pending requests on disconnect.\n this._requestManager.rejectAllResponses(new Error('Disconnect was called.'));\n if (this._disconnectionHandler != null) {\n this._disconnectionHandler('Disconnected');\n return;\n }\n throw new Error(\"Unable to re-connect client to transport for url \".concat(this._url, \". Sender: '\").concat(JSON.stringify(sender), \"'. Args:' \").concat(JSON.stringify(args)));\n };\n return WebSocketClient;\n}());\nexports.WebSocketClient = WebSocketClient;\n\n},{\"../payloadTransport\":10,\"../payloads\":16,\"../protocolAdapter\":23,\"./browserWebSocket\":29,\"./webSocketTransport\":32}],31:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocketTransport = exports.WebSocketClient = exports.BrowserWebSocket = void 0;\nvar browserWebSocket_1 = require(\"./browserWebSocket\");\nObject.defineProperty(exports, \"BrowserWebSocket\", { enumerable: true, get: function () { return browserWebSocket_1.BrowserWebSocket; } });\nvar browserWebSocketClient_1 = require(\"./browserWebSocketClient\");\nObject.defineProperty(exports, \"WebSocketClient\", { enumerable: true, get: function () { return browserWebSocketClient_1.WebSocketClient; } });\n/** @internal */\nvar webSocketTransport_1 = require(\"./webSocketTransport\");\nObject.defineProperty(exports, \"WebSocketTransport\", { enumerable: true, get: function () { return webSocketTransport_1.WebSocketTransport; } });\n\n},{\"./browserWebSocket\":29,\"./browserWebSocketClient\":30,\"./webSocketTransport\":32}],32:[function(require,module,exports){\n(function (Buffer){(function (){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocketTransport = void 0;\n/**\n * Web socket based transport.\n */\nvar WebSocketTransport = /** @class */ (function () {\n /**\n * Creates a new instance of the [WebSocketTransport](xref:botframework-streaming.WebSocketTransport) class.\n *\n * @param ws The ISocket to build this transport on top of.\n */\n function WebSocketTransport(ws) {\n var _this = this;\n this.ws = ws;\n this._queue = [];\n this._activeOffset = 0;\n this._activeReceiveCount = 0;\n this.ws.setOnMessageHandler(function (data) {\n _this.onReceive(data);\n });\n this.ws.setOnErrorHandler(function (err) {\n _this.onError(err);\n });\n this.ws.setOnCloseHandler(function () {\n _this.onClose();\n });\n }\n /**\n * Sends the given buffer out over the socket's connection.\n *\n * @param buffer The buffered data to send out over the connection.\n * @returns A number indicating the length of the sent data if the data was successfully sent, otherwise 0.\n */\n WebSocketTransport.prototype.send = function (buffer) {\n var _a;\n if ((_a = this.ws) === null || _a === void 0 ? void 0 : _a.isConnected) {\n this.ws.write(buffer);\n return buffer.length;\n }\n return 0;\n };\n Object.defineProperty(WebSocketTransport.prototype, \"isConnected\", {\n /**\n * Returns true if the transport is connected to a socket.\n *\n * @returns `true` if the the transport is connected and ready to send data, `false` otherwise.\n */\n get: function () {\n var _a;\n return !!((_a = this.ws) === null || _a === void 0 ? void 0 : _a.isConnected);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Close the socket this transport is connected to.\n */\n WebSocketTransport.prototype.close = function () {\n var _a;\n if ((_a = this.ws) === null || _a === void 0 ? void 0 : _a.isConnected) {\n this.ws.close();\n }\n };\n /**\n * Attempt to receive incoming data from the connected socket.\n *\n * @param count The number of bytes to attempt to receive.\n * @returns A buffer populated with the received data.\n */\n WebSocketTransport.prototype.receive = function (count) {\n return __awaiter(this, void 0, void 0, function () {\n var promise;\n var _this = this;\n return __generator(this, function (_a) {\n if (this._activeReceiveResolve) {\n throw new Error('Cannot call receive more than once before it has returned.');\n }\n this._activeReceiveCount = count;\n promise = new Promise(function (resolve, reject) {\n _this._activeReceiveResolve = resolve;\n _this._activeReceiveReject = reject;\n });\n this.trySignalData();\n return [2 /*return*/, promise];\n });\n });\n };\n /**\n * Sets the transport to attempt to receive incoming data that has not yet arrived.\n *\n * @param data A buffer to store incoming data in.\n */\n WebSocketTransport.prototype.onReceive = function (data) {\n if (this._queue && data && data.byteLength > 0) {\n this._queue.push(Buffer.from(data));\n this.trySignalData();\n }\n };\n WebSocketTransport.prototype.onClose = function () {\n if (this._activeReceiveReject) {\n this._activeReceiveReject(new Error('Socket was closed.'));\n }\n this._active = null;\n this._activeOffset = 0;\n this._activeReceiveResolve = null;\n this._activeReceiveReject = null;\n this._activeReceiveCount = 0;\n this.ws = null;\n };\n WebSocketTransport.prototype.onError = function (err) {\n if (this._activeReceiveReject) {\n this._activeReceiveReject(err);\n }\n this.onClose();\n };\n WebSocketTransport.prototype.trySignalData = function () {\n if (this._activeReceiveResolve) {\n if (!this._active && this._queue.length > 0) {\n this._active = this._queue.shift();\n this._activeOffset = 0;\n }\n if (this._active) {\n if (this._activeOffset === 0 && this._active.length === this._activeReceiveCount) {\n // can send the entire _active buffer\n var buffer = this._active;\n this._active = null;\n this._activeReceiveResolve(buffer);\n }\n else {\n // create a Buffer.from and copy some of the contents into it\n var available = Math.min(this._activeReceiveCount, this._active.length - this._activeOffset);\n var buffer = Buffer.alloc(available);\n this._active.copy(buffer, 0, this._activeOffset, this._activeOffset + available);\n this._activeOffset += available;\n // if we used all of active, set it to undefined\n if (this._activeOffset >= this._active.length) {\n this._active = null;\n this._activeOffset = 0;\n }\n this._activeReceiveResolve(buffer);\n }\n this._activeReceiveCount = 0;\n this._activeReceiveReject = null;\n this._activeReceiveResolve = null;\n }\n }\n };\n return WebSocketTransport;\n}());\nexports.WebSocketTransport = WebSocketTransport;\n\n}).call(this)}).call(this,require(\"buffer\").Buffer)\n\n},{\"buffer\":35}],33:[function(require,module,exports){\n'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n\n},{}],34:[function(require,module,exports){\n\n},{}],35:[function(require,module,exports){\n(function (Buffer){(function (){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\n// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\nif (typeof Symbol !== 'undefined' && Symbol.species != null &&\n Buffer[Symbol.species] === Buffer) {\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true,\n enumerable: false,\n writable: false\n })\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayLike(value)\n }\n\n if (value == null) {\n throw TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nBuffer.prototype.__proto__ = Uint8Array.prototype\nBuffer.__proto__ = Uint8Array\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n buf = Buffer.from(buf)\n }\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n newBuf.__proto__ = Buffer.prototype\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (var i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n}).call(this)}).call(this,require(\"buffer\").Buffer)\n\n},{\"base64-js\":33,\"buffer\":35,\"ieee754\":37}],36:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function eventListener() {\n if (errorListener !== undefined) {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n var errorListener;\n\n // Adding an error listener is not optional because\n // if an error is thrown on an event emitter we cannot\n // guarantee that the actual event we are waiting will\n // be fired. The result could be a silent way to create\n // memory or file descriptor leaks, which is something\n // we should avoid.\n if (name !== 'error') {\n errorListener = function errorListener(err) {\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n emitter.once(name, eventListener);\n });\n}\n\n},{}],37:[function(require,module,exports){\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n},{}],38:[function(require,module,exports){\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n\n},{}],39:[function(require,module,exports){\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n},{}],40:[function(require,module,exports){\n/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n\n},{\"buffer\":35}],41:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n\n},{\"events\":36,\"inherits\":38,\"readable-stream/lib/_stream_duplex.js\":43,\"readable-stream/lib/_stream_passthrough.js\":44,\"readable-stream/lib/_stream_readable.js\":45,\"readable-stream/lib/_stream_transform.js\":46,\"readable-stream/lib/_stream_writable.js\":47,\"readable-stream/lib/internal/streams/end-of-stream.js\":51,\"readable-stream/lib/internal/streams/pipeline.js\":53}],42:[function(require,module,exports){\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n\n},{}],43:[function(require,module,exports){\n(function (process){(function (){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/*<replacement>*/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/*</replacement>*/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n}).call(this)}).call(this,require('_process'))\n\n},{\"./_stream_readable\":45,\"./_stream_writable\":47,\"_process\":39,\"inherits\":38}],44:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};\n},{\"./_stream_transform\":46,\"inherits\":38}],45:[function(require,module,exports){\n(function (process,global){(function (){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/*<replacement>*/\n\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n/*<replacement>*/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*<replacement>*/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/*</replacement>*/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}\n}).call(this)}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"../errors\":42,\"./_stream_duplex\":43,\"./internal/streams/async_iterator\":48,\"./internal/streams/buffer_list\":49,\"./internal/streams/destroy\":50,\"./internal/streams/from\":52,\"./internal/streams/state\":54,\"./internal/streams/stream\":55,\"_process\":39,\"buffer\":35,\"events\":36,\"inherits\":38,\"string_decoder/\":56,\"util\":34}],46:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}\n},{\"../errors\":42,\"./_stream_duplex\":43,\"inherits\":38}],47:[function(require,module,exports){\n(function (process,global){(function (){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* <replacement> */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\n\n\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n/*<replacement>*/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n}).call(this)}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"../errors\":42,\"./_stream_duplex\":43,\"./internal/streams/destroy\":50,\"./internal/streams/state\":54,\"./internal/streams/stream\":55,\"_process\":39,\"buffer\":35,\"inherits\":38,\"util-deprecate\":57}],48:[function(require,module,exports){\n(function (process){(function (){\n'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;\n}).call(this)}).call(this,require('_process'))\n\n},{\"./end-of-stream\":51,\"_process\":39}],49:[function(require,module,exports){\n'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();\n},{\"buffer\":35,\"util\":34}],50:[function(require,module,exports){\n(function (process){(function (){\n'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};\n}).call(this)}).call(this,require('_process'))\n\n},{\"_process\":39}],51:[function(require,module,exports){\n// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;\n},{\"../../../errors\":42}],52:[function(require,module,exports){\nmodule.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n\n},{}],53:[function(require,module,exports){\n// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;\n},{\"../../../errors\":42,\"./end-of-stream\":51}],54:[function(require,module,exports){\n'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};\n},{\"../../../errors\":42}],55:[function(require,module,exports){\nmodule.exports = require('events').EventEmitter;\n\n},{\"events\":36}],56:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}\n},{\"safe-buffer\":40}],57:[function(require,module,exports){\n(function (global){(function (){\n\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{}],58:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function () {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function () {\n return _version.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function () {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function () {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function () {\n return _parse.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n},{\"./nil.js\":60,\"./parse.js\":61,\"./stringify.js\":65,\"./v1.js\":66,\"./v3.js\":67,\"./v4.js\":69,\"./v5.js\":70,\"./validate.js\":71,\"./version.js\":72}],59:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (let i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n const output = [];\n const length32 = input.length * 32;\n const hexTab = '0123456789abcdef';\n\n for (let i = 0; i < length32; i += 8) {\n const x = input[i >> 5] >>> i % 32 & 0xff;\n const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n let a = 1732584193;\n let b = -271733879;\n let c = -1732584194;\n let d = 271733878;\n\n for (let i = 0; i < x.length; i += 16) {\n const olda = a;\n const oldb = b;\n const oldc = c;\n const oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n const length8 = input.length * 8;\n const output = new Uint32Array(getOutputLength(length8));\n\n for (let i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n const lsw = (x & 0xffff) + (y & 0xffff);\n const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nvar _default = md5;\nexports.default = _default;\n},{}],60:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;\n},{}],61:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;\n},{\"./validate.js\":71}],62:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;\n},{}],63:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\n\nfunction rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}\n},{}],64:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (let i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n\n for (let j = 0; j < 16; ++j) {\n arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n\n M[i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nvar _default = sha1;\nexports.default = _default;\n},{}],65:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;\n},{\"./validate.js\":71}],66:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.default)(b);\n}\n\nvar _default = v1;\nexports.default = _default;\n},{\"./rng.js\":63,\"./stringify.js\":65}],67:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;\n},{\"./md5.js\":59,\"./v35.js\":68}],68:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.URL = exports.DNS = void 0;\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction _default(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.default)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}\n},{\"./parse.js\":61,\"./stringify.js\":65}],69:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.default)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;\n},{\"./rng.js\":63,\"./stringify.js\":65}],70:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;\n},{\"./sha1.js\":64,\"./v35.js\":68}],71:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;\n},{\"./regex.js\":62}],72:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nvar _default = version;\nexports.default = _default;\n},{\"./validate.js\":71}]},{},[9])(9)\n});\n//# sourceMappingURL=index-browser.js.map\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = parseFilename;\n\nvar _toArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toArray\"));\n\nfunction parseFilename(filename) {\n if (!filename) {\n return {\n extname: '',\n name: ''\n };\n } else if (~filename.indexOf('.')) {\n var _filename$split$rever = filename.split('.').reverse(),\n _filename$split$rever2 = (0, _toArray2[\"default\"])(_filename$split$rever),\n extensionWithoutDot = _filename$split$rever2[0],\n nameSegments = _filename$split$rever2.slice(1);\n\n return {\n extname: '.' + extensionWithoutDot,\n name: nameSegments.reverse().join('.')\n };\n } else {\n return {\n extname: '',\n name: filename\n };\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZUZpbGVuYW1lLmpzIl0sIm5hbWVzIjpbInBhcnNlRmlsZW5hbWUiLCJmaWxlbmFtZSIsImV4dG5hbWUiLCJuYW1lIiwiaW5kZXhPZiIsInNwbGl0IiwicmV2ZXJzZSIsImV4dGVuc2lvbldpdGhvdXREb3QiLCJuYW1lU2VnbWVudHMiLCJqb2luIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFlLFNBQVNBLGFBQVQsQ0FBdUJDLFFBQXZCLEVBQWlDO0FBQzVDLE1BQUksQ0FBQ0EsUUFBTCxFQUFlO0FBQ1gsV0FBTztBQUNIQyxNQUFBQSxPQUFPLEVBQUUsRUFETjtBQUVIQyxNQUFBQSxJQUFJLEVBQUU7QUFGSCxLQUFQO0FBSUgsR0FMRCxNQUtPLElBQUksQ0FBQ0YsUUFBUSxDQUFDRyxPQUFULENBQWlCLEdBQWpCLENBQUwsRUFBNEI7QUFDL0IsZ0NBQStDSCxRQUFRLENBQUNJLEtBQVQsQ0FBZSxHQUFmLEVBQW9CQyxPQUFwQixFQUEvQztBQUFBO0FBQUEsUUFBT0MsbUJBQVA7QUFBQSxRQUErQkMsWUFBL0I7O0FBRUEsV0FBTztBQUNITixNQUFBQSxPQUFPLEVBQUUsTUFBTUssbUJBRFo7QUFFSEosTUFBQUEsSUFBSSxFQUFFSyxZQUFZLENBQUNGLE9BQWIsR0FBdUJHLElBQXZCLENBQTRCLEdBQTVCO0FBRkgsS0FBUDtBQUlILEdBUE0sTUFPQTtBQUNILFdBQU87QUFDSFAsTUFBQUEsT0FBTyxFQUFFLEVBRE47QUFFSEMsTUFBQUEsSUFBSSxFQUFFRjtBQUZILEtBQVA7QUFJSDtBQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGFyc2VGaWxlbmFtZShmaWxlbmFtZSkge1xuICAgIGlmICghZmlsZW5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGV4dG5hbWU6ICcnLFxuICAgICAgICAgICAgbmFtZTogJydcbiAgICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKH5maWxlbmFtZS5pbmRleE9mKCcuJykpIHtcbiAgICAgICAgY29uc3QgW2V4dGVuc2lvbldpdGhvdXREb3QsIC4uLm5hbWVTZWdtZW50c10gPSBmaWxlbmFtZS5zcGxpdCgnLicpLnJldmVyc2UoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZXh0bmFtZTogJy4nICsgZXh0ZW5zaW9uV2l0aG91dERvdCxcbiAgICAgICAgICAgIG5hbWU6IG5hbWVTZWdtZW50cy5yZXZlcnNlKCkuam9pbignLicpXG4gICAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGV4dG5hbWU6ICcnLFxuICAgICAgICAgICAgbmFtZTogZmlsZW5hbWVcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction createDeferred() {\n var deferred = {};\n deferred.promise = new Promise(function (resolve, reject) {\n deferred.reject = reject;\n deferred.resolve = resolve;\n });\n return deferred;\n}\n\nvar _default = createDeferred;\nexports[\"default\"] = _default;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jcmVhdGVEZWZlcnJlZC50cyJdLCJuYW1lcyI6WyJjcmVhdGVEZWZlcnJlZCIsImRlZmVycmVkIiwicHJvbWlzZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBTUEsU0FBU0EsY0FBVCxHQUEwQztBQUN4QyxNQUFNQyxRQUE4QixHQUFHLEVBQXZDO0FBRUFBLEVBQUFBLFFBQVEsQ0FBQ0MsT0FBVCxHQUFtQixJQUFJQyxPQUFKLENBQVksVUFBQ0MsT0FBRCxFQUFVQyxNQUFWLEVBQXFCO0FBQ2xESixJQUFBQSxRQUFRLENBQUNJLE1BQVQsR0FBa0JBLE1BQWxCO0FBQ0FKLElBQUFBLFFBQVEsQ0FBQ0csT0FBVCxHQUFtQkEsT0FBbkI7QUFDRCxHQUhrQixDQUFuQjtBQUtBLFNBQU9ILFFBQVA7QUFDRDs7ZUFFY0QsYyIsInNvdXJjZXNDb250ZW50IjpbInR5cGUgRGVmZXJyZWQ8VD4gPSB7XG4gIHByb21pc2U6IFByb21pc2U8VD47XG4gIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZDtcbiAgcmVzb2x2ZTogKHZhbHVlOiBUIHwgUHJvbWlzZUxpa2U8VD4pID0+IHZvaWQ7XG59O1xuXG5mdW5jdGlvbiBjcmVhdGVEZWZlcnJlZDxUPigpOiBEZWZlcnJlZDxUPiB7XG4gIGNvbnN0IGRlZmVycmVkOiBQYXJ0aWFsPERlZmVycmVkPFQ+PiA9IHt9O1xuXG4gIGRlZmVycmVkLnByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgZGVmZXJyZWQucmVqZWN0ID0gcmVqZWN0O1xuICAgIGRlZmVycmVkLnJlc29sdmUgPSByZXNvbHZlO1xuICB9KTtcblxuICByZXR1cm4gZGVmZXJyZWQgYXMgRGVmZXJyZWQ8VD47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZURlZmVycmVkO1xuZXhwb3J0IHR5cGUgeyBEZWZlcnJlZCB9O1xuIl19","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"DirectLineStreaming\", {\n enumerable: true,\n get: function get() {\n return _directLineStreaming.DirectLineStreaming;\n }\n});\nexports.DirectLine = exports.ConnectionStatus = void 0;\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nrequire(\"core-js/features/promise\");\n\nrequire(\"url-search-params-polyfill\");\n\nvar _BehaviorSubject = require(\"rxjs/BehaviorSubject\");\n\nvar _Observable = require(\"rxjs/Observable\");\n\nvar _async = require(\"rxjs/scheduler/async\");\n\nvar _jwtDecode = _interopRequireWildcard(require(\"jwt-decode\"));\n\nrequire(\"rxjs/add/operator/catch\");\n\nrequire(\"rxjs/add/operator/combineLatest\");\n\nrequire(\"rxjs/add/operator/count\");\n\nrequire(\"rxjs/add/operator/delay\");\n\nrequire(\"rxjs/add/operator/do\");\n\nrequire(\"rxjs/add/operator/filter\");\n\nrequire(\"rxjs/add/operator/map\");\n\nrequire(\"rxjs/add/operator/mergeMap\");\n\nrequire(\"rxjs/add/operator/concatMap\");\n\nrequire(\"rxjs/add/operator/retryWhen\");\n\nrequire(\"rxjs/add/operator/share\");\n\nrequire(\"rxjs/add/operator/take\");\n\nrequire(\"rxjs/add/observable/dom/ajax\");\n\nrequire(\"rxjs/add/observable/empty\");\n\nrequire(\"rxjs/add/observable/from\");\n\nrequire(\"rxjs/add/observable/interval\");\n\nrequire(\"rxjs/add/observable/of\");\n\nrequire(\"rxjs/add/observable/throw\");\n\nvar _dedupeFilenames = _interopRequireDefault(require(\"./dedupeFilenames\"));\n\nvar _directLineStreaming = require(\"./directLineStreaming\");\n\nvar _excluded = [\"contentUrl\"];\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar DIRECT_LINE_VERSION = 'DirectLine/3.0';\n// These types are specific to this client library, not to Direct Line 3.0\nvar ConnectionStatus;\nexports.ConnectionStatus = ConnectionStatus;\n\n(function (ConnectionStatus) {\n ConnectionStatus[ConnectionStatus[\"Uninitialized\"] = 0] = \"Uninitialized\";\n ConnectionStatus[ConnectionStatus[\"Connecting\"] = 1] = \"Connecting\";\n ConnectionStatus[ConnectionStatus[\"Online\"] = 2] = \"Online\";\n ConnectionStatus[ConnectionStatus[\"ExpiredToken\"] = 3] = \"ExpiredToken\";\n ConnectionStatus[ConnectionStatus[\"FailedToConnect\"] = 4] = \"FailedToConnect\";\n ConnectionStatus[ConnectionStatus[\"Ended\"] = 5] = \"Ended\";\n})(ConnectionStatus || (exports.ConnectionStatus = ConnectionStatus = {}));\n\nvar wrapAjaxWithRetry = function wrapAjaxWithRetry(source, scheduler) {\n var notImplemented = function notImplemented() {\n throw new Error('not implemented');\n };\n\n var inner = function inner(response$) {\n return response$[\"catch\"](function (err) {\n if (err.status === 429) {\n var retryAfterValue = err.xhr.getResponseHeader('Retry-After');\n var retryAfter = Number(retryAfterValue);\n\n if (!isNaN(retryAfter)) {\n return _Observable.Observable.timer(retryAfter, scheduler).flatMap(function (_) {\n return _Observable.Observable[\"throw\"](err, scheduler);\n });\n }\n }\n\n return _Observable.Observable[\"throw\"](err, scheduler);\n });\n };\n\n var outer = function outer(urlOrRequest) {\n return inner(source(urlOrRequest));\n };\n\n return Object.assign(outer, {\n get: function get(url, headers) {\n return notImplemented();\n },\n post: function post(url, body, headers) {\n return notImplemented();\n },\n put: function put(url, body, headers) {\n return notImplemented();\n },\n patch: function patch(url, body, headers) {\n return notImplemented();\n },\n \"delete\": function _delete(url, headers) {\n return notImplemented();\n },\n getJSON: function getJSON(url, headers) {\n return notImplemented();\n }\n });\n};\n\nvar makeServices = function makeServices(services) {\n var scheduler = services.scheduler || _async.async;\n return {\n scheduler: scheduler,\n ajax: wrapAjaxWithRetry(services.ajax || _Observable.Observable.ajax, scheduler),\n WebSocket: services.WebSocket || WebSocket,\n random: services.random || Math.random\n };\n};\n\nvar lifetimeRefreshToken = 30 * 60 * 1000;\nvar intervalRefreshToken = lifetimeRefreshToken / 2;\nvar POLLING_INTERVAL_LOWER_BOUND = 200; //ms\n\nvar errorExpiredToken = new Error(\"expired token\");\nvar errorConversationEnded = new Error(\"conversation ended\");\nvar errorFailedToConnect = new Error(\"failed to connect\");\nvar konsole = {\n log: function log(message) {\n var _console;\n\n for (var _len = arguments.length, optionalParams = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n optionalParams[_key - 1] = arguments[_key];\n }\n\n if (typeof window !== 'undefined' && window[\"botchatDebug\"] && message) (_console = console).log.apply(_console, [message].concat(optionalParams));\n }\n};\n\nvar DirectLine = /*#__PURE__*/function () {\n function DirectLine(options) {\n (0, _classCallCheck2[\"default\"])(this, DirectLine);\n (0, _defineProperty2[\"default\"])(this, \"connectionStatus$\", new _BehaviorSubject.BehaviorSubject(ConnectionStatus.Uninitialized));\n (0, _defineProperty2[\"default\"])(this, \"domain\", \"https://directline.botframework.com/v3/directline\");\n (0, _defineProperty2[\"default\"])(this, \"watermark\", '');\n (0, _defineProperty2[\"default\"])(this, \"_botAgent\", '');\n (0, _defineProperty2[\"default\"])(this, \"timeout\", 20 * 1000);\n (0, _defineProperty2[\"default\"])(this, \"pollingInterval\", 1000);\n this.secret = options.secret;\n this.token = options.secret || options.token;\n this.webSocket = (options.webSocket === undefined ? true : options.webSocket) && typeof WebSocket !== 'undefined' && WebSocket !== undefined;\n\n if (options.conversationStartProperties && options.conversationStartProperties.locale) {\n if (Object.prototype.toString.call(options.conversationStartProperties.locale) === '[object String]') {\n this.localeOnStartConversation = options.conversationStartProperties.locale;\n } else {\n console.warn('DirectLineJS: conversationStartProperties.locale was ignored: the locale name may be a BCP 47 language tag');\n }\n }\n\n if (options.domain) {\n this.domain = options.domain;\n }\n\n if (options.conversationId) {\n this.conversationId = options.conversationId;\n }\n\n if (options.watermark) {\n this.watermark = options.watermark;\n }\n\n if (options.streamUrl) {\n if (options.token && options.conversationId) {\n this.streamUrl = options.streamUrl;\n } else {\n console.warn('DirectLineJS: streamUrl was ignored: you need to provide a token and a conversationid');\n }\n }\n\n if (options.timeout !== undefined) {\n this.timeout = options.timeout;\n }\n\n this.retries = (lifetimeRefreshToken - intervalRefreshToken) / this.timeout;\n this._botAgent = this.getBotAgent(options.botAgent);\n this.services = makeServices(options);\n var parsedPollingInterval = ~~options.pollingInterval;\n\n if (parsedPollingInterval < POLLING_INTERVAL_LOWER_BOUND) {\n if (typeof options.pollingInterval !== 'undefined') {\n console.warn(\"DirectLineJS: provided pollingInterval (\".concat(options.pollingInterval, \") is under lower bound (200ms), using default of 1000ms\"));\n }\n } else {\n this.pollingInterval = parsedPollingInterval;\n }\n\n this.expiredTokenExhaustion = this.setConnectionStatusFallback(ConnectionStatus.ExpiredToken, ConnectionStatus.FailedToConnect, 5);\n this.activity$ = (this.webSocket ? this.webSocketActivity$() : this.pollingGetActivity$()).share();\n } // Every time we're about to make a Direct Line REST call, we call this first to see check the current connection status.\n // Either throws an error (indicating an error state) or emits a null, indicating a (presumably) healthy connection\n\n\n (0, _createClass2[\"default\"])(DirectLine, [{\n key: \"checkConnection\",\n value: function checkConnection() {\n var _this = this;\n\n var once = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var obs = this.connectionStatus$.flatMap(function (connectionStatus) {\n if (connectionStatus === ConnectionStatus.Uninitialized) {\n _this.connectionStatus$.next(ConnectionStatus.Connecting); //if token and streamUrl are defined it means reconnect has already been done. Skipping it.\n\n\n if (_this.token && _this.streamUrl) {\n _this.connectionStatus$.next(ConnectionStatus.Online);\n\n return _Observable.Observable.of(connectionStatus, _this.services.scheduler);\n } else {\n return _this.startConversation()[\"do\"](function (conversation) {\n _this.conversationId = conversation.conversationId;\n _this.token = _this.secret || conversation.token;\n _this.streamUrl = conversation.streamUrl;\n _this.referenceGrammarId = conversation.referenceGrammarId;\n if (!_this.secret) _this.refreshTokenLoop();\n\n _this.connectionStatus$.next(ConnectionStatus.Online);\n }, function (error) {\n _this.connectionStatus$.next(ConnectionStatus.FailedToConnect);\n }).map(function (_) {\n return connectionStatus;\n });\n }\n } else {\n return _Observable.Observable.of(connectionStatus, _this.services.scheduler);\n }\n }).filter(function (connectionStatus) {\n return connectionStatus != ConnectionStatus.Uninitialized && connectionStatus != ConnectionStatus.Connecting;\n }).flatMap(function (connectionStatus) {\n switch (connectionStatus) {\n case ConnectionStatus.Ended:\n return _Observable.Observable[\"throw\"](errorConversationEnded, _this.services.scheduler);\n\n case ConnectionStatus.FailedToConnect:\n return _Observable.Observable[\"throw\"](errorFailedToConnect, _this.services.scheduler);\n\n case ConnectionStatus.ExpiredToken:\n return _Observable.Observable.of(connectionStatus, _this.services.scheduler);\n\n default:\n return _Observable.Observable.of(connectionStatus, _this.services.scheduler);\n }\n });\n return once ? obs.take(1) : obs;\n }\n }, {\n key: \"setConnectionStatusFallback\",\n value: function setConnectionStatusFallback(connectionStatusFrom, connectionStatusTo) {\n var maxAttempts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5;\n maxAttempts--;\n var attempts = 0;\n var currStatus = null;\n return function (status) {\n if (status === connectionStatusFrom && currStatus === status && attempts >= maxAttempts) {\n attempts = 0;\n return connectionStatusTo;\n }\n\n attempts++;\n currStatus = status;\n return status;\n };\n }\n }, {\n key: \"expiredToken\",\n value: function expiredToken() {\n var connectionStatus = this.connectionStatus$.getValue();\n if (connectionStatus != ConnectionStatus.Ended && connectionStatus != ConnectionStatus.FailedToConnect) this.connectionStatus$.next(ConnectionStatus.ExpiredToken);\n var protectedConnectionStatus = this.expiredTokenExhaustion(this.connectionStatus$.getValue());\n this.connectionStatus$.next(protectedConnectionStatus);\n }\n }, {\n key: \"startConversation\",\n value: function startConversation() {\n var _this2 = this;\n\n //if conversationid is set here, it means we need to call the reconnect api, else it is a new conversation\n var url = this.conversationId ? \"\".concat(this.domain, \"/conversations/\").concat(this.conversationId, \"?watermark=\").concat(this.watermark) : \"\".concat(this.domain, \"/conversations\");\n var method = this.conversationId ? \"GET\" : \"POST\";\n var body = this.conversationId ? undefined : {\n user: {\n id: this.userIdOnStartConversation\n },\n locale: this.localeOnStartConversation\n };\n return this.services.ajax({\n method: method,\n url: url,\n body: body,\n timeout: this.timeout,\n headers: _objectSpread({\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\"\n }, this.commonHeaders())\n }) // .do(ajaxResponse => konsole.log(\"conversation ajaxResponse\", ajaxResponse.response))\n .map(function (ajaxResponse) {\n return ajaxResponse.response;\n }).retryWhen(function (error$) {\n return (// for now we deem 4xx and 5xx errors as unrecoverable\n // for everything else (timeouts), retry for a while\n error$.mergeMap(function (error) {\n return error.status >= 400 && error.status < 600 ? _Observable.Observable[\"throw\"](error, _this2.services.scheduler) : _Observable.Observable.of(error, _this2.services.scheduler);\n }).delay(_this2.timeout, _this2.services.scheduler).take(_this2.retries)\n );\n });\n }\n }, {\n key: \"refreshTokenLoop\",\n value: function refreshTokenLoop() {\n var _this3 = this;\n\n this.tokenRefreshSubscription = _Observable.Observable.interval(intervalRefreshToken, this.services.scheduler).flatMap(function (_) {\n return _this3.refreshToken();\n }).subscribe(function (token) {\n konsole.log(\"refreshing token\", token, \"at\", new Date());\n _this3.token = token;\n });\n }\n }, {\n key: \"refreshToken\",\n value: function refreshToken() {\n var _this4 = this;\n\n return this.checkConnection(true).flatMap(function (_) {\n return _this4.services.ajax({\n method: \"POST\",\n url: \"\".concat(_this4.domain, \"/tokens/refresh\"),\n timeout: _this4.timeout,\n headers: _objectSpread({}, _this4.commonHeaders())\n }).map(function (ajaxResponse) {\n return ajaxResponse.response.token;\n }).retryWhen(function (error$) {\n return error$.mergeMap(function (error) {\n if (error.status === 403) {\n // if the token is expired there's no reason to keep trying\n _this4.expiredToken();\n\n return _Observable.Observable[\"throw\"](error, _this4.services.scheduler);\n } else if (error.status === 404) {\n // If the bot is gone, we should stop retrying\n return _Observable.Observable[\"throw\"](error, _this4.services.scheduler);\n }\n\n return _Observable.Observable.of(error, _this4.services.scheduler);\n }).delay(_this4.timeout, _this4.services.scheduler).take(_this4.retries);\n });\n });\n }\n }, {\n key: \"reconnect\",\n value: function reconnect(conversation) {\n this.token = conversation.token;\n this.streamUrl = conversation.streamUrl;\n if (this.connectionStatus$.getValue() === ConnectionStatus.ExpiredToken) this.connectionStatus$.next(ConnectionStatus.Online);\n }\n }, {\n key: \"end\",\n value: function end() {\n if (this.tokenRefreshSubscription) this.tokenRefreshSubscription.unsubscribe();\n\n try {\n this.connectionStatus$.next(ConnectionStatus.Ended);\n } catch (e) {\n if (e === errorConversationEnded) return;\n throw e;\n }\n }\n }, {\n key: \"getSessionId\",\n value: function getSessionId() {\n var _this5 = this;\n\n // If we're not connected to the bot, get connected\n // Will throw an error if we are not connected\n konsole.log(\"getSessionId\");\n return this.checkConnection(true).flatMap(function (_) {\n return _this5.services.ajax({\n method: \"GET\",\n url: \"\".concat(_this5.domain, \"/session/getsessionid\"),\n withCredentials: true,\n timeout: _this5.timeout,\n headers: _objectSpread({\n \"Content-Type\": \"application/json\"\n }, _this5.commonHeaders())\n }).map(function (ajaxResponse) {\n if (ajaxResponse && ajaxResponse.response && ajaxResponse.response.sessionId) {\n konsole.log(\"getSessionId response: \" + ajaxResponse.response.sessionId);\n return ajaxResponse.response.sessionId;\n }\n\n return '';\n })[\"catch\"](function (error) {\n konsole.log(\"getSessionId error: \" + error.status);\n return _Observable.Observable.of('', _this5.services.scheduler);\n });\n })[\"catch\"](function (error) {\n return _this5.catchExpiredToken(error);\n });\n }\n }, {\n key: \"postActivity\",\n value: function postActivity(activity) {\n var _this6 = this;\n\n // If user id is set, check if it match activity.from.id and always override it in activity\n if (this.userIdOnStartConversation && activity.from && activity.from.id !== this.userIdOnStartConversation) {\n console.warn('DirectLineJS: Activity.from.id does not match with user id, ignoring activity.from.id');\n activity.from.id = this.userIdOnStartConversation;\n } // Use postMessageWithAttachments for messages with attachments that are local files (e.g. an image to upload)\n // Technically we could use it for *all* activities, but postActivity is much lighter weight\n // So, since WebChat is partially a reference implementation of Direct Line, we implement both.\n\n\n if (activity.type === \"message\" && activity.attachments && activity.attachments.length > 0) return this.postMessageWithAttachments(activity); // If we're not connected to the bot, get connected\n // Will throw an error if we are not connected\n\n konsole.log(\"postActivity\", activity);\n return this.checkConnection(true).flatMap(function (_) {\n return _this6.services.ajax({\n method: \"POST\",\n url: \"\".concat(_this6.domain, \"/conversations/\").concat(_this6.conversationId, \"/activities\"),\n body: activity,\n timeout: _this6.timeout,\n headers: _objectSpread({\n \"Content-Type\": \"application/json\"\n }, _this6.commonHeaders())\n }).map(function (ajaxResponse) {\n return ajaxResponse.response.id;\n })[\"catch\"](function (error) {\n return _this6.catchPostError(error);\n });\n })[\"catch\"](function (error) {\n return _this6.catchExpiredToken(error);\n });\n }\n }, {\n key: \"postMessageWithAttachments\",\n value: function postMessageWithAttachments(message) {\n var _this7 = this;\n\n var attachments = message.attachments; // We clean the attachments but making sure every attachment has unique name.\n // If the file do not have a name, Chrome will assign \"blob\" when it is appended to FormData.\n\n var attachmentNames = (0, _dedupeFilenames[\"default\"])(attachments.map(function (media) {\n return media.name || 'blob';\n }));\n var cleansedAttachments = attachments.map(function (attachment, index) {\n return _objectSpread(_objectSpread({}, attachment), {}, {\n name: attachmentNames[index]\n });\n });\n var formData; // If we're not connected to the bot, get connected\n // Will throw an error if we are not connected\n\n return this.checkConnection(true).flatMap(function (_) {\n // To send this message to DirectLine we need to deconstruct it into a \"template\" activity\n // and one blob for each attachment.\n formData = new FormData();\n formData.append('activity', new Blob([JSON.stringify(_objectSpread(_objectSpread({}, message), {}, {\n // Removing contentUrl from attachment, we will send it via multipart\n attachments: cleansedAttachments.map(function (_ref) {\n var string = _ref.contentUrl,\n others = (0, _objectWithoutProperties2[\"default\"])(_ref, _excluded);\n return _objectSpread({}, others);\n })\n }))], {\n type: 'application/vnd.microsoft.activity'\n }));\n return _Observable.Observable.from(cleansedAttachments, _this7.services.scheduler).flatMap(function (media) {\n return _this7.services.ajax({\n method: \"GET\",\n url: media.contentUrl,\n responseType: 'arraybuffer'\n })[\"do\"](function (ajaxResponse) {\n return formData.append('file', new Blob([ajaxResponse.response], {\n type: media.contentType\n }), media.name);\n });\n }).count();\n }).flatMap(function (_) {\n return _this7.services.ajax({\n method: \"POST\",\n url: \"\".concat(_this7.domain, \"/conversations/\").concat(_this7.conversationId, \"/upload?userId=\").concat(message.from.id),\n body: formData,\n timeout: _this7.timeout,\n headers: _objectSpread({}, _this7.commonHeaders())\n }).map(function (ajaxResponse) {\n return ajaxResponse.response.id;\n })[\"catch\"](function (error) {\n return _this7.catchPostError(error);\n });\n })[\"catch\"](function (error) {\n return _this7.catchPostError(error);\n });\n }\n }, {\n key: \"catchPostError\",\n value: function catchPostError(error) {\n if (error.status === 403) // token has expired (will fall through to return \"retry\")\n this.expiredToken();else if (error.status >= 400 && error.status < 500) // more unrecoverable errors\n return _Observable.Observable[\"throw\"](error, this.services.scheduler);\n return _Observable.Observable.of(\"retry\", this.services.scheduler);\n }\n }, {\n key: \"catchExpiredToken\",\n value: function catchExpiredToken(error) {\n return error === errorExpiredToken ? _Observable.Observable.of(\"retry\", this.services.scheduler) : _Observable.Observable[\"throw\"](error, this.services.scheduler);\n }\n }, {\n key: \"pollingGetActivity$\",\n value: function pollingGetActivity$() {\n var _this8 = this;\n\n var poller$ = _Observable.Observable.create(function (subscriber) {\n // A BehaviorSubject to trigger polling. Since it is a BehaviorSubject\n // the first event is produced immediately.\n var trigger$ = new _BehaviorSubject.BehaviorSubject({}); // TODO: remove Date.now, use reactive interval to space out every request\n\n trigger$.subscribe(function () {\n if (_this8.connectionStatus$.getValue() === ConnectionStatus.Online) {\n var startTimestamp = Date.now();\n\n _this8.services.ajax({\n headers: _objectSpread({\n Accept: 'application/json'\n }, _this8.commonHeaders()),\n method: 'GET',\n url: \"\".concat(_this8.domain, \"/conversations/\").concat(_this8.conversationId, \"/activities?watermark=\").concat(_this8.watermark),\n timeout: _this8.timeout\n }).subscribe(function (result) {\n subscriber.next(result);\n setTimeout(function () {\n return trigger$.next(null);\n }, Math.max(0, _this8.pollingInterval - Date.now() + startTimestamp));\n }, function (error) {\n switch (error.status) {\n case 403:\n _this8.connectionStatus$.next(ConnectionStatus.ExpiredToken);\n\n setTimeout(function () {\n return trigger$.next(null);\n }, _this8.pollingInterval);\n break;\n\n case 404:\n _this8.connectionStatus$.next(ConnectionStatus.Ended);\n\n break;\n\n default:\n // propagate the error\n subscriber.error(error);\n break;\n }\n });\n }\n });\n });\n\n return this.checkConnection().flatMap(function (_) {\n return poller$[\"catch\"](function () {\n return _Observable.Observable.empty();\n }).map(function (ajaxResponse) {\n return ajaxResponse.response;\n }).flatMap(function (activityGroup) {\n return _this8.observableFromActivityGroup(activityGroup);\n });\n });\n }\n }, {\n key: \"observableFromActivityGroup\",\n value: function observableFromActivityGroup(activityGroup) {\n if (activityGroup.watermark) this.watermark = activityGroup.watermark;\n return _Observable.Observable.from(activityGroup.activities, this.services.scheduler);\n }\n }, {\n key: \"webSocketActivity$\",\n value: function webSocketActivity$() {\n var _this9 = this;\n\n return this.checkConnection().flatMap(function (_) {\n return _this9.observableWebSocket() // WebSockets can be closed by the server or the browser. In the former case we need to\n // retrieve a new streamUrl. In the latter case we could first retry with the current streamUrl,\n // but it's simpler just to always fetch a new one.\n .retryWhen(function (error$) {\n return error$.delay(_this9.getRetryDelay(), _this9.services.scheduler).mergeMap(function (error) {\n return _this9.reconnectToConversation();\n });\n });\n }).flatMap(function (activityGroup) {\n return _this9.observableFromActivityGroup(activityGroup);\n });\n } // Returns the delay duration in milliseconds\n\n }, {\n key: \"getRetryDelay\",\n value: function getRetryDelay() {\n return Math.floor(3000 + this.services.random() * 12000);\n } // Originally we used Observable.webSocket, but it's fairly opinionated and I ended up writing\n // a lot of code to work around their implementation details. Since WebChat is meant to be a reference\n // implementation, I decided roll the below, where the logic is more purposeful. - @billba\n\n }, {\n key: \"observableWebSocket\",\n value: function observableWebSocket() {\n var _this10 = this;\n\n return _Observable.Observable.create(function (subscriber) {\n konsole.log(\"creating WebSocket\", _this10.streamUrl);\n var ws = new _this10.services.WebSocket(_this10.streamUrl);\n var sub;\n var closed;\n\n ws.onopen = function (open) {\n konsole.log(\"WebSocket open\", open); // Chrome is pretty bad at noticing when a WebSocket connection is broken.\n // If we periodically ping the server with empty messages, it helps Chrome\n // realize when connection breaks, and close the socket. We then throw an\n // error, and that give us the opportunity to attempt to reconnect.\n\n sub = _Observable.Observable.interval(_this10.timeout, _this10.services.scheduler).subscribe(function (_) {\n try {\n ws.send(\"\");\n } catch (e) {\n konsole.log(\"Ping error\", e);\n }\n });\n };\n\n ws.onclose = function (close) {\n konsole.log(\"WebSocket close\", close);\n if (sub) sub.unsubscribe(); // RxJS.retryWhen has a bug that would cause \"error\" signal to be sent after the observable is completed/errored.\n // We need to guard against extraneous \"error\" signal to workaround the bug.\n\n closed || subscriber.error(close);\n closed = true;\n };\n\n ws.onerror = function (error) {\n konsole.log(\"WebSocket error\", error);\n if (sub) sub.unsubscribe(); // RxJS.retryWhen has a bug that would cause \"error\" signal to be sent after the observable is completed/errored.\n // We need to guard against extraneous \"error\" signal to workaround the bug.\n\n closed || subscriber.error(error);\n closed = true;\n };\n\n ws.onmessage = function (message) {\n return message.data && subscriber.next(JSON.parse(message.data));\n }; // This is the 'unsubscribe' method, which is called when this observable is disposed.\n // When the WebSocket closes itself, we throw an error, and this function is eventually called.\n // When the observable is closed first (e.g. when tearing down a WebChat instance) then\n // we need to manually close the WebSocket.\n\n\n return function () {\n if (ws.readyState === 0 || ws.readyState === 1) ws.close();\n };\n });\n }\n }, {\n key: \"reconnectToConversation\",\n value: function reconnectToConversation() {\n var _this11 = this;\n\n return this.checkConnection(true).flatMap(function (_) {\n return _this11.services.ajax({\n method: \"GET\",\n url: \"\".concat(_this11.domain, \"/conversations/\").concat(_this11.conversationId, \"?watermark=\").concat(_this11.watermark),\n timeout: _this11.timeout,\n headers: _objectSpread({\n \"Accept\": \"application/json\"\n }, _this11.commonHeaders())\n })[\"do\"](function (result) {\n if (!_this11.secret) _this11.token = result.response.token;\n _this11.streamUrl = result.response.streamUrl;\n }).map(function (_) {\n return null;\n }).retryWhen(function (error$) {\n return error$.mergeMap(function (error) {\n if (error.status === 403) {\n // token has expired. We can't recover from this here, but the embedding\n // website might eventually call reconnect() with a new token and streamUrl.\n _this11.expiredToken();\n } else if (error.status === 404) {\n return _Observable.Observable[\"throw\"](errorConversationEnded, _this11.services.scheduler);\n }\n\n return _Observable.Observable.of(error, _this11.services.scheduler);\n }).delay(_this11.timeout, _this11.services.scheduler).take(_this11.retries);\n });\n });\n }\n }, {\n key: \"commonHeaders\",\n value: function commonHeaders() {\n return {\n \"Authorization\": \"Bearer \".concat(this.token),\n \"x-ms-bot-agent\": this._botAgent\n };\n }\n }, {\n key: \"getBotAgent\",\n value: function getBotAgent() {\n var customAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var clientAgent = 'directlinejs';\n\n if (customAgent) {\n clientAgent += \"; \".concat(customAgent);\n }\n\n return \"\".concat(DIRECT_LINE_VERSION, \" (\").concat(clientAgent, \" \").concat(\"0.15.5\", \")\");\n }\n }, {\n key: \"setUserId\",\n value: function setUserId(userId) {\n if (this.connectionStatus$.getValue() === ConnectionStatus.Online) {\n throw new Error('DirectLineJS: It is connected, we cannot set user id.');\n }\n\n var userIdFromToken = this.parseToken(this.token);\n\n if (userIdFromToken) {\n return console.warn('DirectLineJS: user id is already set in token, will ignore this user id.');\n }\n\n if (/^dl_/.test(userId)) {\n return console.warn('DirectLineJS: user id prefixed with \"dl_\" is reserved and must be embedded into the Direct Line token to prevent forgery.');\n }\n\n this.userIdOnStartConversation = userId;\n }\n }, {\n key: \"parseToken\",\n value: function parseToken(token) {\n try {\n var _ref2 = (0, _jwtDecode[\"default\"])(token),\n user = _ref2.user;\n\n return user;\n } catch (e) {\n if (e instanceof _jwtDecode.InvalidTokenError) {\n return undefined;\n }\n }\n }\n }]);\n return DirectLine;\n}();\n\nexports.DirectLine = DirectLine;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kaXJlY3RMaW5lLnRzIl0sIm5hbWVzIjpbIkRJUkVDVF9MSU5FX1ZFUlNJT04iLCJDb25uZWN0aW9uU3RhdHVzIiwid3JhcEFqYXhXaXRoUmV0cnkiLCJzb3VyY2UiLCJzY2hlZHVsZXIiLCJub3RJbXBsZW1lbnRlZCIsIkVycm9yIiwiaW5uZXIiLCJyZXNwb25zZSQiLCJlcnIiLCJzdGF0dXMiLCJyZXRyeUFmdGVyVmFsdWUiLCJ4aHIiLCJnZXRSZXNwb25zZUhlYWRlciIsInJldHJ5QWZ0ZXIiLCJOdW1iZXIiLCJpc05hTiIsIk9ic2VydmFibGUiLCJ0aW1lciIsImZsYXRNYXAiLCJfIiwib3V0ZXIiLCJ1cmxPclJlcXVlc3QiLCJPYmplY3QiLCJhc3NpZ24iLCJnZXQiLCJ1cmwiLCJoZWFkZXJzIiwicG9zdCIsImJvZHkiLCJwdXQiLCJwYXRjaCIsImdldEpTT04iLCJtYWtlU2VydmljZXMiLCJzZXJ2aWNlcyIsIkFzeW5jU2NoZWR1bGVyIiwiYWpheCIsIldlYlNvY2tldCIsInJhbmRvbSIsIk1hdGgiLCJsaWZldGltZVJlZnJlc2hUb2tlbiIsImludGVydmFsUmVmcmVzaFRva2VuIiwiUE9MTElOR19JTlRFUlZBTF9MT1dFUl9CT1VORCIsImVycm9yRXhwaXJlZFRva2VuIiwiZXJyb3JDb252ZXJzYXRpb25FbmRlZCIsImVycm9yRmFpbGVkVG9Db25uZWN0Iiwia29uc29sZSIsImxvZyIsIm1lc3NhZ2UiLCJvcHRpb25hbFBhcmFtcyIsIndpbmRvdyIsImNvbnNvbGUiLCJEaXJlY3RMaW5lIiwib3B0aW9ucyIsIkJlaGF2aW9yU3ViamVjdCIsIlVuaW5pdGlhbGl6ZWQiLCJzZWNyZXQiLCJ0b2tlbiIsIndlYlNvY2tldCIsInVuZGVmaW5lZCIsImNvbnZlcnNhdGlvblN0YXJ0UHJvcGVydGllcyIsImxvY2FsZSIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiY2FsbCIsImxvY2FsZU9uU3RhcnRDb252ZXJzYXRpb24iLCJ3YXJuIiwiZG9tYWluIiwiY29udmVyc2F0aW9uSWQiLCJ3YXRlcm1hcmsiLCJzdHJlYW1VcmwiLCJ0aW1lb3V0IiwicmV0cmllcyIsIl9ib3RBZ2VudCIsImdldEJvdEFnZW50IiwiYm90QWdlbnQiLCJwYXJzZWRQb2xsaW5nSW50ZXJ2YWwiLCJwb2xsaW5nSW50ZXJ2YWwiLCJleHBpcmVkVG9rZW5FeGhhdXN0aW9uIiwic2V0Q29ubmVjdGlvblN0YXR1c0ZhbGxiYWNrIiwiRXhwaXJlZFRva2VuIiwiRmFpbGVkVG9Db25uZWN0IiwiYWN0aXZpdHkkIiwid2ViU29ja2V0QWN0aXZpdHkkIiwicG9sbGluZ0dldEFjdGl2aXR5JCIsInNoYXJlIiwib25jZSIsIm9icyIsImNvbm5lY3Rpb25TdGF0dXMkIiwiY29ubmVjdGlvblN0YXR1cyIsIm5leHQiLCJDb25uZWN0aW5nIiwiT25saW5lIiwib2YiLCJzdGFydENvbnZlcnNhdGlvbiIsImNvbnZlcnNhdGlvbiIsInJlZmVyZW5jZUdyYW1tYXJJZCIsInJlZnJlc2hUb2tlbkxvb3AiLCJlcnJvciIsIm1hcCIsImZpbHRlciIsIkVuZGVkIiwidGFrZSIsImNvbm5lY3Rpb25TdGF0dXNGcm9tIiwiY29ubmVjdGlvblN0YXR1c1RvIiwibWF4QXR0ZW1wdHMiLCJhdHRlbXB0cyIsImN1cnJTdGF0dXMiLCJnZXRWYWx1ZSIsInByb3RlY3RlZENvbm5lY3Rpb25TdGF0dXMiLCJtZXRob2QiLCJ1c2VyIiwiaWQiLCJ1c2VySWRPblN0YXJ0Q29udmVyc2F0aW9uIiwiY29tbW9uSGVhZGVycyIsImFqYXhSZXNwb25zZSIsInJlc3BvbnNlIiwicmV0cnlXaGVuIiwiZXJyb3IkIiwibWVyZ2VNYXAiLCJkZWxheSIsInRva2VuUmVmcmVzaFN1YnNjcmlwdGlvbiIsImludGVydmFsIiwicmVmcmVzaFRva2VuIiwic3Vic2NyaWJlIiwiRGF0ZSIsImNoZWNrQ29ubmVjdGlvbiIsImV4cGlyZWRUb2tlbiIsInVuc3Vic2NyaWJlIiwiZSIsIndpdGhDcmVkZW50aWFscyIsInNlc3Npb25JZCIsImNhdGNoRXhwaXJlZFRva2VuIiwiYWN0aXZpdHkiLCJmcm9tIiwidHlwZSIsImF0dGFjaG1lbnRzIiwibGVuZ3RoIiwicG9zdE1lc3NhZ2VXaXRoQXR0YWNobWVudHMiLCJjYXRjaFBvc3RFcnJvciIsImF0dGFjaG1lbnROYW1lcyIsIm1lZGlhIiwibmFtZSIsImNsZWFuc2VkQXR0YWNobWVudHMiLCJhdHRhY2htZW50IiwiaW5kZXgiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwiYXBwZW5kIiwiQmxvYiIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdHJpbmciLCJjb250ZW50VXJsIiwib3RoZXJzIiwicmVzcG9uc2VUeXBlIiwiY29udGVudFR5cGUiLCJjb3VudCIsInBvbGxlciQiLCJjcmVhdGUiLCJzdWJzY3JpYmVyIiwidHJpZ2dlciQiLCJzdGFydFRpbWVzdGFtcCIsIm5vdyIsIkFjY2VwdCIsInJlc3VsdCIsInNldFRpbWVvdXQiLCJtYXgiLCJlbXB0eSIsImFjdGl2aXR5R3JvdXAiLCJvYnNlcnZhYmxlRnJvbUFjdGl2aXR5R3JvdXAiLCJhY3Rpdml0aWVzIiwib2JzZXJ2YWJsZVdlYlNvY2tldCIsImdldFJldHJ5RGVsYXkiLCJyZWNvbm5lY3RUb0NvbnZlcnNhdGlvbiIsImZsb29yIiwid3MiLCJzdWIiLCJjbG9zZWQiLCJvbm9wZW4iLCJvcGVuIiwic2VuZCIsIm9uY2xvc2UiLCJjbG9zZSIsIm9uZXJyb3IiLCJvbm1lc3NhZ2UiLCJkYXRhIiwicGFyc2UiLCJyZWFkeVN0YXRlIiwiY3VzdG9tQWdlbnQiLCJjbGllbnRBZ2VudCIsInVzZXJJZCIsInVzZXJJZEZyb21Ub2tlbiIsInBhcnNlVG9rZW4iLCJ0ZXN0IiwiSW52YWxpZFRva2VuRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFJQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFD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QUNIOzs7V0FFRCxtQkFBVUMsTUFBVixFQUEwQjtBQUN0QixVQUFJLEtBQUt2RyxpQkFBTCxDQUF1Qm9CLFFBQXZCLE9BQXNDM0csZ0JBQWdCLENBQUMyRixNQUEzRCxFQUFtRTtBQUMvRCxjQUFNLElBQUl0RixLQUFKLENBQVUsdURBQVYsQ0FBTjtBQUNIOztBQUVELFVBQU0wTCxlQUFlLEdBQUcsS0FBS0MsVUFBTCxDQUFnQixLQUFLeEksS0FBckIsQ0FBeEI7O0FBQ0EsVUFBSXVJLGVBQUosRUFBcUI7QUFDakIsZUFBTzdJLE9BQU8sQ0FBQ2UsSUFBUixDQUFhLDBFQUFiLENBQVA7QUFDSDs7QUFFRCxVQUFJLE9BQVFnSSxJQUFSLENBQWFILE1BQWIsQ0FBSixFQUEwQjtBQUN0QixlQUFPNUksT0FBTyxDQUFDZSxJQUFSLENBQWEsMkhBQWIsQ0FBUDtBQUNIOztBQUVELFdBQUsrQyx5QkFBTCxHQUFpQzhFLE1BQWpDO0FBQ0g7OztXQUVELG9CQUFtQnRJLEtBQW5CLEVBQWtDO0FBQzlCLFVBQUk7QUFDQSxvQkFBaUIsMkJBQXNCQSxLQUF0QixDQUFqQjtBQUFBLFlBQVFzRCxJQUFSLFNBQVFBLElBQVI7O0FBQ0EsZUFBT0EsSUFBUDtBQUNILE9BSEQsQ0FHRSxPQUFPa0IsQ0FBUCxFQUFVO0FBQ1IsWUFBSUEsQ0FBQyxZQUFZa0UsNEJBQWpCLEVBQW9DO0FBQ2hDLGlCQUFPeEksU0FBUDtBQUNIO0FBQ0o7QUFDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEluIG9yZGVyIHRvIGtlZXAgZmlsZSBzaXplIGRvd24sIG9ubHkgaW1wb3J0IHRoZSBwYXJ0cyBvZiByeGpzIHRoYXQgd2UgdXNlXG5cbmltcG9ydCAnY29yZS1qcy9mZWF0dXJlcy9wcm9taXNlJztcbmltcG9ydCAndXJsLXNlYXJjaC1wYXJhbXMtcG9seWZpbGwnO1xuaW1wb3J0IHsgQWpheFJlc3BvbnNlLCBBamF4Q3JlYXRpb25NZXRob2QsIEFqYXhSZXF1ZXN0LCBBamF4RXJyb3IgfSBmcm9tICdyeGpzL29ic2VydmFibGUvZG9tL0FqYXhPYnNlcnZhYmxlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMvQmVoYXZpb3JTdWJqZWN0JztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzL09ic2VydmFibGUnO1xuaW1wb3J0IHsgSVNjaGVkdWxlciB9IGZyb20gJ3J4anMvU2NoZWR1bGVyJztcbmltcG9ydCB7IFN1YnNjcmliZXIgfSBmcm9tICdyeGpzL1N1YnNjcmliZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcy9TdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgYXN5bmMgYXMgQXN5bmNTY2hlZHVsZXIgfSBmcm9tICdyeGpzL3NjaGVkdWxlci9hc3luYyc7XG5pbXBvcnQgand0RGVjb2RlLCB7IEp3dFBheWxvYWQsIEludmFsaWRUb2tlbkVycm9yIH0gZnJvbSAnand0LWRlY29kZSc7XG5cbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvY2F0Y2gnO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9jb21iaW5lTGF0ZXN0JztcbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvY291bnQnO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9kZWxheSc7XG5pbXBvcnQgJ3J4anMvYWRkL29wZXJhdG9yL2RvJztcbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvZmlsdGVyJztcbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvbWFwJztcbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvbWVyZ2VNYXAnO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9jb25jYXRNYXAnO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9yZXRyeVdoZW4nO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9zaGFyZSc7XG5pbXBvcnQgJ3J4anMvYWRkL29wZXJhdG9yL3Rha2UnO1xuXG5pbXBvcnQgJ3J4anMvYWRkL29ic2VydmFibGUvZG9tL2FqYXgnO1xuaW1wb3J0ICdyeGpzL2FkZC9vYnNlcnZhYmxlL2VtcHR5JztcbmltcG9ydCAncnhqcy9hZGQvb2JzZXJ2YWJsZS9mcm9tJztcbmltcG9ydCAncnhqcy9hZGQvb2JzZXJ2YWJsZS9pbnRlcnZhbCc7XG5pbXBvcnQgJ3J4anMvYWRkL29ic2VydmFibGUvb2YnO1xuaW1wb3J0ICdyeGpzL2FkZC9vYnNlcnZhYmxlL3Rocm93JztcblxuaW1wb3J0IGRlZHVwZUZpbGVuYW1lcyBmcm9tICcuL2RlZHVwZUZpbGVuYW1lcyc7XG5pbXBvcnQgeyBvYmplY3RFeHByZXNzaW9uIH0gZnJvbSAnQGJhYmVsL3R5cGVzJztcblxuaW1wb3J0IHsgRGlyZWN0TGluZVN0cmVhbWluZyB9IGZyb20gJy4vZGlyZWN0TGluZVN0cmVhbWluZyc7XG5leHBvcnQgeyBEaXJlY3RMaW5lU3RyZWFtaW5nIH07XG5cbmNvbnN0IERJUkVDVF9MSU5FX1ZFUlNJT04gPSAnRGlyZWN0TGluZS8zLjAnO1xuXG5kZWNsYXJlIHZhciBwcm9jZXNzOiB7XG4gICAgYXJjaDogc3RyaW5nO1xuICAgIGVudjoge1xuICAgICAgICBWRVJTSU9OOiBzdHJpbmc7XG4gICAgICAgIG5wbV9wYWNrYWdlX3ZlcnNpb246IHN0cmluZztcbiAgICB9O1xuICAgIHBsYXRmb3JtOiBzdHJpbmc7XG4gICAgcmVsZWFzZTogc3RyaW5nO1xuICAgIHZlcnNpb246IHN0cmluZztcbn07XG5cbi8vIERpcmVjdCBMaW5lIDMuMCB0eXBlc1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnZlcnNhdGlvbiB7XG4gICAgY29udmVyc2F0aW9uSWQ6IHN0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIGVUYWc/OiBzdHJpbmcsXG4gICAgc3RyZWFtVXJsPzogc3RyaW5nLFxuICAgIHJlZmVyZW5jZUdyYW1tYXJJZD86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBNZWRpYVR5cGUgPSBcImltYWdlL3BuZ1wiIHwgXCJpbWFnZS9qcGdcIiB8IFwiaW1hZ2UvanBlZ1wiIHwgXCJpbWFnZS9naWZcIiB8IFwiaW1hZ2Uvc3ZnK3htbFwiIHwgXCJhdWRpby9tcGVnXCIgfCBcImF1ZGlvL21wNFwiIHwgXCJ2aWRlby9tcDRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBNZWRpYSB7XG4gICAgY29udGVudFR5cGU6IE1lZGlhVHlwZSxcbiAgICBjb250ZW50VXJsOiBzdHJpbmcsXG4gICAgbmFtZT86IHN0cmluZyxcbiAgICB0aHVtYm5haWxVcmw/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVbmtub3duTWVkaWF7XG4gICAgY29udGVudFR5cGU6IHN0cmluZyxcbiAgICBjb250ZW50VXJsOiBzdHJpbmcsXG4gICAgbmFtZT86IHN0cmluZyxcbiAgICB0aHVtYm5haWxVcmw/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQ2FyZEFjdGlvblR5cGVzID0gXCJjYWxsXCIgfCBcImRvd25sb2FkRmlsZVwifCBcImltQmFja1wiIHwgXCJtZXNzYWdlQmFja1wiIHwgXCJvcGVuVXJsXCIgfCBcInBsYXlBdWRpb1wiIHwgXCJwbGF5VmlkZW9cIiB8IFwicG9zdEJhY2tcIiB8IFwic2lnbmluXCIgfCBcInNob3dJbWFnZVwiO1xuXG5leHBvcnQgdHlwZSBDYXJkQWN0aW9uID0gQ2FsbENhcmRBY3Rpb24gfCBEb3dubG9hZEZpbGVDYXJkQWN0aW9uIHwgSU1CYWNrQ2FyZEFjdGlvbiB8IE1lc3NhZ2VCYWNrQ2FyZEFjdGlvbiB8IE9wZW5VUkxDYXJkQWN0aW9uIHwgUGxheUF1ZGlvQ2FyZEFjdGlvbiB8IFBsYXlWaWRlb0NhcmRBY3Rpb24gfCBQb3N0QmFja0NhcmRBY3Rpb24gfCBTaWduSW5DYXJkQWN0aW9uIHwgU2hvd0ltYWdlQ2FyZEFjdGlvbjtcblxuZXhwb3J0IGludGVyZmFjZSBDYWxsQ2FyZEFjdGlvbiB7XG4gICAgaW1hZ2U/OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0eXBlOiBcImNhbGxcIixcbiAgICB2YWx1ZTogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG93bmxvYWRGaWxlQ2FyZEFjdGlvbiB7XG4gICAgaW1hZ2U/OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0eXBlOiBcImRvd25sb2FkRmlsZVwiLFxuICAgIHZhbHVlOiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTUJhY2tDYXJkQWN0aW9uIHtcbiAgICBpbWFnZT86IHN0cmluZyxcbiAgICB0aXRsZT86IHN0cmluZyxcbiAgICB0eXBlOiBcImltQmFja1wiLFxuICAgIHZhbHVlOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgTWVzc2FnZUJhY2tDYXJkQWN0aW9uID0gTWVzc2FnZUJhY2tXaXRoSW1hZ2UgfCBNZXNzYWdlQmFja1dpdGhUaXRsZVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2VCYWNrV2l0aEltYWdlIHtcbiAgICBkaXNwbGF5VGV4dD86IHN0cmluZyxcbiAgICBpbWFnZTogc3RyaW5nLFxuICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgdGl0bGU/OiBzdHJpbmcsXG4gICAgdHlwZTogXCJtZXNzYWdlQmFja1wiLFxuICAgIHZhbHVlPzogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUJhY2tXaXRoVGl0bGUge1xuICAgIGRpc3BsYXlUZXh0Pzogc3RyaW5nLFxuICAgIGltYWdlPzogc3RyaW5nLFxuICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0eXBlOiBcIm1lc3NhZ2VCYWNrXCIsXG4gICAgdmFsdWU/OiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcGVuVVJMQ2FyZEFjdGlvbiB7XG4gICAgaW1hZ2U/OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0eXBlOiBcIm9wZW5VcmxcIixcbiAgICB2YWx1ZTogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxheUF1ZGlvQ2FyZEFjdGlvbiB7XG4gICAgaW1hZ2U/OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0eXBlOiBcInBsYXlBdWRpb1wiLFxuICAgIHZhbHVlOiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGF5VmlkZW9DYXJkQWN0aW9uIHtcbiAgICBpbWFnZT86IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIHR5cGU6IFwicGxheVZpZGVvXCIsXG4gICAgdmFsdWU6IGFueVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvc3RCYWNrQ2FyZEFjdGlvbiB7XG4gICAgaW1hZ2U/OiBzdHJpbmcsXG4gICAgdGl0bGU/OiBzdHJpbmcsXG4gICAgdHlwZTogXCJwb3N0QmFja1wiLFxuICAgIHZhbHVlOiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaG93SW1hZ2VDYXJkQWN0aW9uIHtcbiAgICBpbWFnZT86IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIHR5cGU6IFwic2hvd0ltYWdlXCIsXG4gICAgdmFsdWU6IGFueVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25JbkNhcmRBY3Rpb24ge1xuICAgIGltYWdlPzogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgdHlwZTogXCJzaWduaW5cIixcbiAgICB2YWx1ZTogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FyZEltYWdlIHtcbiAgICBhbHQ/OiBzdHJpbmcsXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgdGFwPzogQ2FyZEFjdGlvblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhlcm9DYXJkIHtcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmNhcmQuaGVyb1wiLFxuICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgdGl0bGU/OiBzdHJpbmcsXG4gICAgICAgIHN1YnRpdGxlPzogc3RyaW5nLFxuICAgICAgICB0ZXh0Pzogc3RyaW5nLFxuICAgICAgICBpbWFnZXM/OiBDYXJkSW1hZ2VbXSxcbiAgICAgICAgYnV0dG9ucz86IENhcmRBY3Rpb25bXSxcbiAgICAgICAgdGFwPzogQ2FyZEFjdGlvblxuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaHVtYm5haWwge1xuICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuY2FyZC50aHVtYm5haWxcIixcbiAgICBjb250ZW50OiB7XG4gICAgICAgIHRpdGxlPzogc3RyaW5nLFxuICAgICAgICBzdWJ0aXRsZT86IHN0cmluZyxcbiAgICAgICAgdGV4dD86IHN0cmluZyxcbiAgICAgICAgaW1hZ2VzPzogQ2FyZEltYWdlW10sXG4gICAgICAgIGJ1dHRvbnM/OiBDYXJkQWN0aW9uW10sXG4gICAgICAgIHRhcD86IENhcmRBY3Rpb25cbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmluIHtcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmNhcmQuc2lnbmluXCIsXG4gICAgY29udGVudDoge1xuICAgICAgICB0ZXh0Pzogc3RyaW5nLFxuICAgICAgICBidXR0b25zPzogQ2FyZEFjdGlvbltdXG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9BdXRoIHtcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmNhcmQub2F1dGhcIixcbiAgICBjb250ZW50OiB7XG4gICAgICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgICAgIGNvbm5lY3Rpb25uYW1lOiBzdHJpbmcsXG4gICAgICAgIGJ1dHRvbnM/OiBDYXJkQWN0aW9uW11cbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjZWlwdEl0ZW0ge1xuICAgIHRpdGxlPzogc3RyaW5nLFxuICAgIHN1YnRpdGxlPzogc3RyaW5nLFxuICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgaW1hZ2U/OiBDYXJkSW1hZ2UsXG4gICAgcHJpY2U/OiBzdHJpbmcsXG4gICAgcXVhbnRpdHk/OiBzdHJpbmcsXG4gICAgdGFwPzogQ2FyZEFjdGlvblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlY2VpcHQge1xuICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuY2FyZC5yZWNlaXB0XCIsXG4gICAgY29udGVudDoge1xuICAgICAgICB0aXRsZT86IHN0cmluZyxcbiAgICAgICAgZmFjdHM/OiB7IGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH1bXSxcbiAgICAgICAgaXRlbXM/OiBSZWNlaXB0SXRlbVtdLFxuICAgICAgICB0YXA/OiBDYXJkQWN0aW9uLFxuICAgICAgICB0YXg/OiBzdHJpbmcsXG4gICAgICAgIHZhdD86IHN0cmluZyxcbiAgICAgICAgdG90YWw/OiBzdHJpbmcsXG4gICAgICAgIGJ1dHRvbnM/OiBDYXJkQWN0aW9uW11cbiAgICB9XG59XG5cbi8vIERlcHJlY2F0ZWQgZm9ybWF0IGZvciBTa3lwZSBjaGFubmVscy4gRm9yIHRlc3RpbmcgbGVnYWN5IGJvdHMgaW4gRW11bGF0b3Igb25seS5cbmV4cG9ydCBpbnRlcmZhY2UgRmxleENhcmQge1xuICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuY2FyZC5mbGV4XCIsXG4gICAgY29udGVudDoge1xuICAgICAgICB0aXRsZT86IHN0cmluZyxcbiAgICAgICAgc3VidGl0bGU/OiBzdHJpbmcsXG4gICAgICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgICAgIGltYWdlcz86IENhcmRJbWFnZVtdLFxuICAgICAgICBidXR0b25zPzogQ2FyZEFjdGlvbltdLFxuICAgICAgICBhc3BlY3Q/OiBzdHJpbmdcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXVkaW9DYXJkIHtcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmNhcmQuYXVkaW9cIixcbiAgICBjb250ZW50OiB7XG4gICAgICAgIHRpdGxlPzogc3RyaW5nLFxuICAgICAgICBzdWJ0aXRsZT86IHN0cmluZyxcbiAgICAgICAgdGV4dD86IHN0cmluZyxcbiAgICAgICAgbWVkaWE/OiB7IHVybDogc3RyaW5nLCBwcm9maWxlPzogc3RyaW5nIH1bXSxcbiAgICAgICAgYnV0dG9ucz86IENhcmRBY3Rpb25bXSxcbiAgICAgICAgYXV0b2xvb3A/OiBib29sZWFuLFxuICAgICAgICBhdXRvc3RhcnQ/OiBib29sZWFuXG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZGVvQ2FyZCB7XG4gICAgY29udGVudFR5cGU6IFwiYXBwbGljYXRpb24vdm5kLm1pY3Jvc29mdC5jYXJkLnZpZGVvXCIsXG4gICAgY29udGVudDoge1xuICAgICAgICB0aXRsZT86IHN0cmluZyxcbiAgICAgICAgc3VidGl0bGU/OiBzdHJpbmcsXG4gICAgICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgICAgIG1lZGlhPzogeyB1cmw6IHN0cmluZywgcHJvZmlsZT86IHN0cmluZyB9W10sXG4gICAgICAgIGJ1dHRvbnM/OiBDYXJkQWN0aW9uW10sXG4gICAgICAgIGltYWdlPzogeyB1cmw6IHN0cmluZywgYWx0Pzogc3RyaW5nIH0sXG4gICAgICAgIGF1dG9sb29wPzogYm9vbGVhbixcbiAgICAgICAgYXV0b3N0YXJ0PzogYm9vbGVhblxuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGl2ZUNhcmQge1xuICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuY2FyZC5hZGFwdGl2ZVwiLFxuICAgIGNvbnRlbnQ6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbmltYXRpb25DYXJkIHtcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmNhcmQuYW5pbWF0aW9uXCIsXG4gICAgY29udGVudDoge1xuICAgICAgICB0aXRsZT86IHN0cmluZyxcbiAgICAgICAgc3VidGl0bGU/OiBzdHJpbmcsXG4gICAgICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgICAgIG1lZGlhPzogeyB1cmw6IHN0cmluZywgcHJvZmlsZT86IHN0cmluZyB9W10sXG4gICAgICAgIGJ1dHRvbnM/OiBDYXJkQWN0aW9uW10sXG4gICAgICAgIGltYWdlPzogeyB1cmw6IHN0cmluZywgYWx0Pzogc3RyaW5nIH0sXG4gICAgICAgIGF1dG9sb29wPzogYm9vbGVhbixcbiAgICAgICAgYXV0b3N0YXJ0PzogYm9vbGVhblxuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgS25vd25NZWRpYSA9IE1lZGlhIHwgSGVyb0NhcmQgfCBUaHVtYm5haWwgfCBTaWduaW4gfCBPQXV0aCB8IFJlY2VpcHQgfCBBdWRpb0NhcmQgfCBWaWRlb0NhcmQgfCBBbmltYXRpb25DYXJkIHwgRmxleENhcmQgfCBBZGFwdGl2ZUNhcmQ7XG5leHBvcnQgdHlwZSBBdHRhY2htZW50ID0gS25vd25NZWRpYSB8IFVua25vd25NZWRpYTtcblxuZXhwb3J0IHR5cGUgVXNlclJvbGUgPSBcImJvdFwiIHwgXCJjaGFubmVsXCIgfCBcInVzZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VyIHtcbiAgICBpZDogc3RyaW5nLFxuICAgIG5hbWU/OiBzdHJpbmcsXG4gICAgaWNvblVybD86IHN0cmluZyxcbiAgICByb2xlPzogVXNlclJvbGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQWN0aXZpdHkge1xuICAgIHR5cGU6IHN0cmluZyxcbiAgICBjaGFubmVsRGF0YT86IGFueSxcbiAgICBjaGFubmVsSWQ/OiBzdHJpbmcsXG4gICAgY29udmVyc2F0aW9uPzogeyBpZDogc3RyaW5nIH0sXG4gICAgZVRhZz86IHN0cmluZyxcbiAgICBmcm9tOiBVc2VyLFxuICAgIGlkPzogc3RyaW5nLFxuICAgIHRpbWVzdGFtcD86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50TGF5b3V0ID0gXCJsaXN0XCIgfCBcImNhcm91c2VsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZSBleHRlbmRzIElBY3Rpdml0eSB7XG4gICAgdHlwZTogXCJtZXNzYWdlXCIsXG4gICAgdGV4dD86IHN0cmluZyxcbiAgICBsb2NhbGU/OiBzdHJpbmcsXG4gICAgdGV4dEZvcm1hdD86IFwicGxhaW5cIiB8IFwibWFya2Rvd25cIiB8IFwieG1sXCIsXG4gICAgYXR0YWNobWVudExheW91dD86IEF0dGFjaG1lbnRMYXlvdXQsXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50W10sXG4gICAgZW50aXRpZXM/OiBhbnlbXSxcbiAgICBzdWdnZXN0ZWRBY3Rpb25zPzogeyBhY3Rpb25zOiBDYXJkQWN0aW9uW10sIHRvPzogc3RyaW5nW10gfSxcbiAgICBzcGVhaz86IHN0cmluZyxcbiAgICBpbnB1dEhpbnQ/OiBzdHJpbmcsXG4gICAgdmFsdWU/OiBvYmplY3Rcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBpbmcgZXh0ZW5kcyBJQWN0aXZpdHkge1xuICAgIHR5cGU6IFwidHlwaW5nXCJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdmVudEFjdGl2aXR5IGV4dGVuZHMgSUFjdGl2aXR5IHtcbiAgICB0eXBlOiBcImV2ZW50XCIsXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBhbnlcbn1cblxuZXhwb3J0IHR5cGUgQWN0aXZpdHkgPSBNZXNzYWdlIHwgVHlwaW5nIHwgRXZlbnRBY3Rpdml0eTtcblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpdml0eUdyb3VwIHtcbiAgICBhY3Rpdml0aWVzOiBBY3Rpdml0eVtdLFxuICAgIHdhdGVybWFyazogc3RyaW5nXG59XG5cbi8vIFRoZXNlIHR5cGVzIGFyZSBzcGVjaWZpYyB0byB0aGlzIGNsaWVudCBsaWJyYXJ5LCBub3QgdG8gRGlyZWN0IExpbmUgMy4wXG5cbmV4cG9ydCBlbnVtIENvbm5lY3Rpb25TdGF0dXMge1xuICAgIFVuaW5pdGlhbGl6ZWQsICAgICAgICAgICAgICAvLyB0aGUgc3RhdHVzIHdoZW4gdGhlIERpcmVjdExpbmUgb2JqZWN0IGlzIGZpcnN0IGNyZWF0ZWQvY29uc3RydWN0ZWRcbiAgICBDb25uZWN0aW5nLCAgICAgICAgICAgICAgICAgLy8gY3VycmVudGx5IHRyeWluZyB0byBjb25uZWN0IHRvIHRoZSBjb252ZXJzYXRpb25cbiAgICBPbmxpbmUsICAgICAgICAgICAgICAgICAgICAgLy8gc3VjY2Vzc2Z1bGx5IGNvbm5lY3RlZCB0byB0aGUgY29udmVyc2F0aW9uLiBDb25uZWN0aW9uIGlzIGhlYWx0aHkgc28gZmFyIGFzIHdlIGtub3cuXG4gICAgRXhwaXJlZFRva2VuLCAgICAgICAgICAgICAgIC8vIGxhc3Qgb3BlcmF0aW9uIGVycm9yZWQgb3V0IHdpdGggYW4gZXhwaXJlZCB0b2tlbi4gUG9zc2libHkgd2FpdGluZyBmb3Igc29tZW9uZSB0byBzdXBwbHkgYSBuZXcgb25lLlxuICAgIEZhaWxlZFRvQ29ubmVjdCwgICAgICAgICAgICAvLyB0aGUgaW5pdGlhbCBhdHRlbXB0IHRvIGNvbm5lY3QgdG8gdGhlIGNvbnZlcnNhdGlvbiBmYWlsZWQuIE5vIHJlY292ZXJ5IHBvc3NpYmxlLlxuICAgIEVuZGVkICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgYm90IGVuZGVkIHRoZSBjb252ZXJzYXRpb25cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXJlY3RMaW5lT3B0aW9ucyB7XG4gICAgc2VjcmV0Pzogc3RyaW5nLFxuICAgIHRva2VuPzogc3RyaW5nLFxuICAgIGNvbnZlcnNhdGlvbklkPzogc3RyaW5nLFxuICAgIHdhdGVybWFyaz86IHN0cmluZyxcbiAgICBkb21haW4/OiBzdHJpbmcsXG4gICAgd2ViU29ja2V0PzogYm9vbGVhbixcbiAgICBwb2xsaW5nSW50ZXJ2YWw/OiBudW1iZXIsXG4gICAgc3RyZWFtVXJsPzogc3RyaW5nLFxuICAgIHRpbWVvdXQ/OiBudW1iZXIsXG4gICAgLy8gQXR0YWNoZWQgdG8gYWxsIHJlcXVlc3RzIHRvIGlkZW50aWZ5IHJlcXVlc3RpbmcgYWdlbnQuXG4gICAgYm90QWdlbnQ/OiBzdHJpbmcsXG4gICAgY29udmVyc2F0aW9uU3RhcnRQcm9wZXJ0aWVzPzogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZXMge1xuICAgIHNjaGVkdWxlcjogSVNjaGVkdWxlcjtcbiAgICBXZWJTb2NrZXQ6IHR5cGVvZiBXZWJTb2NrZXQ7XG4gICAgYWpheDogQWpheENyZWF0aW9uTWV0aG9kO1xuICAgIHJhbmRvbTogKCkgPT4gbnVtYmVyO1xufVxuXG5jb25zdCB3cmFwQWpheFdpdGhSZXRyeSA9IChzb3VyY2U6IEFqYXhDcmVhdGlvbk1ldGhvZCwgc2NoZWR1bGVyOiBJU2NoZWR1bGVyKTogQWpheENyZWF0aW9uTWV0aG9kID0+e1xuXG4gICAgY29uc3Qgbm90SW1wbGVtZW50ZWQgPSAoKTogbmV2ZXIgPT4geyB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpOyB9O1xuXG4gICAgY29uc3QgaW5uZXIgPSAocmVzcG9uc2UkIDogT2JzZXJ2YWJsZTxBamF4UmVzcG9uc2U+KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZSRcbiAgICAgICAgLmNhdGNoPEFqYXhSZXNwb25zZSwgQWpheFJlc3BvbnNlPigoZXJyKSA9PiB7XG4gICAgICAgICAgICBpZihlcnIuc3RhdHVzID09PSA0Mjkpe1xuICAgICAgICAgICAgICAgIGNvbnN0IHJldHJ5QWZ0ZXJWYWx1ZSA9IGVyci54aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ1JldHJ5LUFmdGVyJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmV0cnlBZnRlciA9IE51bWJlcihyZXRyeUFmdGVyVmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmKCFpc05hTihyZXRyeUFmdGVyKSl7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZhYmxlLnRpbWVyKHJldHJ5QWZ0ZXIsIHNjaGVkdWxlcilcbiAgICAgICAgICAgICAgICAgICAgLmZsYXRNYXAoXyA9PiBPYnNlcnZhYmxlLnRocm93KGVyciwgc2NoZWR1bGVyKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnIsIHNjaGVkdWxlcik7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBvdXRlciA9ICh1cmxPclJlcXVlc3Q6IHN0cmluZ3wgQWpheFJlcXVlc3QpID0+IHtcbiAgICAgICAgcmV0dXJuIGlubmVyKHNvdXJjZSh1cmxPclJlcXVlc3QpKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24ob3V0ZXIsIHtcbiAgICAgICAgZ2V0OiAodXJsOiBzdHJpbmcsIGhlYWRlcnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgICAgICAgcG9zdDogKHVybDogc3RyaW5nLCBib2R5PzogYW55LCBoZWFkZXJzPzogT2JqZWN0KTogT2JzZXJ2YWJsZTxBamF4UmVzcG9uc2U+ID0+IG5vdEltcGxlbWVudGVkKCksXG4gICAgICAgIHB1dDogKHVybDogc3RyaW5nLCBib2R5PzogYW55LCBoZWFkZXJzPzogT2JqZWN0KTogT2JzZXJ2YWJsZTxBamF4UmVzcG9uc2U+ID0+IG5vdEltcGxlbWVudGVkKCksXG4gICAgICAgIHBhdGNoOiAodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIGhlYWRlcnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgICAgICAgZGVsZXRlOiAodXJsOiBzdHJpbmcsIGhlYWRlcnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgICAgICAgZ2V0SlNPTjogPFQ+KHVybDogc3RyaW5nLCBoZWFkZXJzPzogT2JqZWN0KTogT2JzZXJ2YWJsZTxUPiA9PiBub3RJbXBsZW1lbnRlZCgpXG4gICAgfSk7XG59XG5cbmNvbnN0IG1ha2VTZXJ2aWNlcyA9IChzZXJ2aWNlczogUGFydGlhbDxTZXJ2aWNlcz4pOiBTZXJ2aWNlcyA9PiB7XG4gICAgY29uc3Qgc2NoZWR1bGVyID0gc2VydmljZXMuc2NoZWR1bGVyIHx8IEFzeW5jU2NoZWR1bGVyO1xuICAgIHJldHVybiB7XG4gICAgICAgIHNjaGVkdWxlcixcbiAgICAgICAgYWpheDogd3JhcEFqYXhXaXRoUmV0cnkoc2VydmljZXMuYWpheCB8fCBPYnNlcnZhYmxlLmFqYXgsIHNjaGVkdWxlciksXG4gICAgICAgIFdlYlNvY2tldDogc2VydmljZXMuV2ViU29ja2V0IHx8IFdlYlNvY2tldCxcbiAgICAgICAgcmFuZG9tOiBzZXJ2aWNlcy5yYW5kb20gfHwgTWF0aC5yYW5kb20sXG4gICAgfVxufVxuXG5jb25zdCBsaWZldGltZVJlZnJlc2hUb2tlbiA9IDMwICogNjAgKiAxMDAwO1xuY29uc3QgaW50ZXJ2YWxSZWZyZXNoVG9rZW4gPSBsaWZldGltZVJlZnJlc2hUb2tlbiAvIDI7XG5cbmNvbnN0IFBPTExJTkdfSU5URVJWQUxfTE9XRVJfQk9VTkQ6IG51bWJlciA9IDIwMDsgLy9tc1xuXG5jb25zdCBlcnJvckV4cGlyZWRUb2tlbiA9IG5ldyBFcnJvcihcImV4cGlyZWQgdG9rZW5cIik7XG5jb25zdCBlcnJvckNvbnZlcnNhdGlvbkVuZGVkID0gbmV3IEVycm9yKFwiY29udmVyc2F0aW9uIGVuZGVkXCIpO1xuY29uc3QgZXJyb3JGYWlsZWRUb0Nvbm5lY3QgPSBuZXcgRXJyb3IoXCJmYWlsZWQgdG8gY29ubmVjdFwiKTtcblxuY29uc3Qga29uc29sZSA9IHtcbiAgICBsb2c6IChtZXNzYWdlPzogYW55LCAuLi4gb3B0aW9uYWxQYXJhbXM6IGFueVtdKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiAod2luZG93IGFzIGFueSlbXCJib3RjaGF0RGVidWdcIl0gJiYgbWVzc2FnZSlcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UsIC4uLiBvcHRpb25hbFBhcmFtcyk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElCb3RDb25uZWN0aW9uIHtcbiAgICBjb25uZWN0aW9uU3RhdHVzJDogQmVoYXZpb3JTdWJqZWN0PENvbm5lY3Rpb25TdGF0dXM+LFxuICAgIGFjdGl2aXR5JDogT2JzZXJ2YWJsZTxBY3Rpdml0eT4sXG4gICAgZW5kKCk6IHZvaWQsXG4gICAgcmVmZXJlbmNlR3JhbW1hcklkPzogc3RyaW5nLFxuICAgIHBvc3RBY3Rpdml0eShhY3Rpdml0eTogQWN0aXZpdHkpOiBPYnNlcnZhYmxlPHN0cmluZz4sXG4gICAgZ2V0U2Vzc2lvbklkPyA6ICgpID0+IE9ic2VydmFibGU8c3RyaW5nPlxufVxuXG5leHBvcnQgY2xhc3MgRGlyZWN0TGluZSBpbXBsZW1lbnRzIElCb3RDb25uZWN0aW9uIHtcbiAgICBwdWJsaWMgY29ubmVjdGlvblN0YXR1cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KENvbm5lY3Rpb25TdGF0dXMuVW5pbml0aWFsaXplZCk7XG4gICAgcHVibGljIGFjdGl2aXR5JDogT2JzZXJ2YWJsZTxBY3Rpdml0eT47XG5cbiAgICBwcml2YXRlIGRvbWFpbiA9IFwiaHR0cHM6Ly9kaXJlY3RsaW5lLmJvdGZyYW1ld29yay5jb20vdjMvZGlyZWN0bGluZVwiO1xuICAgIHByaXZhdGUgd2ViU29ja2V0OiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBjb252ZXJzYXRpb25JZDogc3RyaW5nO1xuICAgIHByaXZhdGUgZXhwaXJlZFRva2VuRXhoYXVzdGlvbjogRnVuY3Rpb247XG4gICAgcHJpdmF0ZSBzZWNyZXQ6IHN0cmluZztcbiAgICBwcml2YXRlIHRva2VuOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSB3YXRlcm1hcmsgPSAnJztcbiAgICBwcml2YXRlIHN0cmVhbVVybDogc3RyaW5nO1xuICAgIHByaXZhdGUgX2JvdEFnZW50ID0gJyc7XG4gICAgcHJpdmF0ZSBzZXJ2aWNlczogU2VydmljZXM7XG4gICAgcHJpdmF0ZSBfdXNlckFnZW50OiBzdHJpbmc7XG4gICAgcHVibGljIHJlZmVyZW5jZUdyYW1tYXJJZDogc3RyaW5nO1xuICAgIHByaXZhdGUgdGltZW91dCA9IDIwICogMTAwMDtcbiAgICBwcml2YXRlIHJldHJpZXM6IG51bWJlcjtcblxuICAgIHByaXZhdGUgbG9jYWxlT25TdGFydENvbnZlcnNhdGlvbjogc3RyaW5nO1xuICAgIHByaXZhdGUgdXNlcklkT25TdGFydENvbnZlcnNhdGlvbjogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBwb2xsaW5nSW50ZXJ2YWw6IG51bWJlciA9IDEwMDA7IC8vbXNcblxuICAgIHByaXZhdGUgdG9rZW5SZWZyZXNoU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBEaXJlY3RMaW5lT3B0aW9ucyAmIFBhcnRpYWw8U2VydmljZXM+KSB7XG4gICAgICAgIHRoaXMuc2VjcmV0ID0gb3B0aW9ucy5zZWNyZXQ7XG4gICAgICAgIHRoaXMudG9rZW4gPSBvcHRpb25zLnNlY3JldCB8fCBvcHRpb25zLnRva2VuO1xuICAgICAgICB0aGlzLndlYlNvY2tldCA9IChvcHRpb25zLndlYlNvY2tldCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IG9wdGlvbnMud2ViU29ja2V0KSAmJiB0eXBlb2YgV2ViU29ja2V0ICE9PSAndW5kZWZpbmVkJyAmJiBXZWJTb2NrZXQgIT09IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAob3B0aW9ucy5jb252ZXJzYXRpb25TdGFydFByb3BlcnRpZXMgJiYgb3B0aW9ucy5jb252ZXJzYXRpb25TdGFydFByb3BlcnRpZXMubG9jYWxlKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9wdGlvbnMuY29udmVyc2F0aW9uU3RhcnRQcm9wZXJ0aWVzLmxvY2FsZSkgPT09ICdbb2JqZWN0IFN0cmluZ10nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbGVPblN0YXJ0Q29udmVyc2F0aW9uID0gb3B0aW9ucy5jb252ZXJzYXRpb25TdGFydFByb3BlcnRpZXMubG9jYWxlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0RpcmVjdExpbmVKUzogY29udmVyc2F0aW9uU3RhcnRQcm9wZXJ0aWVzLmxvY2FsZSB3YXMgaWdub3JlZDogdGhlIGxvY2FsZSBuYW1lIG1heSBiZSBhIEJDUCA0NyBsYW5ndWFnZSB0YWcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmRvbWFpbikge1xuICAgICAgICAgICAgdGhpcy5kb21haW4gPSBvcHRpb25zLmRvbWFpbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmNvbnZlcnNhdGlvbklkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnZlcnNhdGlvbklkID0gb3B0aW9ucy5jb252ZXJzYXRpb25JZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLndhdGVybWFyaykge1xuICAgICAgICAgICAgdGhpcy53YXRlcm1hcmsgPSAgb3B0aW9ucy53YXRlcm1hcms7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5zdHJlYW1VcmwpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnRva2VuICYmIG9wdGlvbnMuY29udmVyc2F0aW9uSWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0cmVhbVVybCA9IG9wdGlvbnMuc3RyZWFtVXJsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0RpcmVjdExpbmVKUzogc3RyZWFtVXJsIHdhcyBpZ25vcmVkOiB5b3UgbmVlZCB0byBwcm92aWRlIGEgdG9rZW4gYW5kIGEgY29udmVyc2F0aW9uaWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnRpbWVvdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy50aW1lb3V0ID0gb3B0aW9ucy50aW1lb3V0O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZXRyaWVzID0gKGxpZmV0aW1lUmVmcmVzaFRva2VuIC0gaW50ZXJ2YWxSZWZyZXNoVG9rZW4pIC8gdGhpcy50aW1lb3V0O1xuXG4gICAgICAgIHRoaXMuX2JvdEFnZW50ID0gdGhpcy5nZXRCb3RBZ2VudChvcHRpb25zLmJvdEFnZW50KTtcblxuICAgICAgICB0aGlzLnNlcnZpY2VzID0gbWFrZVNlcnZpY2VzKG9wdGlvbnMpO1xuXG4gICAgICAgIGNvbnN0IHBhcnNlZFBvbGxpbmdJbnRlcnZhbCA9IH5+b3B0aW9ucy5wb2xsaW5nSW50ZXJ2YWw7XG5cbiAgICAgICAgaWYgKHBhcnNlZFBvbGxpbmdJbnRlcnZhbCA8IFBPTExJTkdfSU5URVJWQUxfTE9XRVJfQk9VTkQpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5wb2xsaW5nSW50ZXJ2YWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBEaXJlY3RMaW5lSlM6IHByb3ZpZGVkIHBvbGxpbmdJbnRlcnZhbCAoJHsgb3B0aW9ucy5wb2xsaW5nSW50ZXJ2YWwgfSkgaXMgdW5kZXIgbG93ZXIgYm91bmQgKDIwMG1zKSwgdXNpbmcgZGVmYXVsdCBvZiAxMDAwbXNgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucG9sbGluZ0ludGVydmFsID0gcGFyc2VkUG9sbGluZ0ludGVydmFsO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5leHBpcmVkVG9rZW5FeGhhdXN0aW9uID0gdGhpcy5zZXRDb25uZWN0aW9uU3RhdHVzRmFsbGJhY2soXG4gICAgICAgICAgICBDb25uZWN0aW9uU3RhdHVzLkV4cGlyZWRUb2tlbixcbiAgICAgICAgICAgIENvbm5lY3Rpb25TdGF0dXMuRmFpbGVkVG9Db25uZWN0LFxuICAgICAgICAgICAgNVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuYWN0aXZpdHkkID0gKHRoaXMud2ViU29ja2V0XG4gICAgICAgICAgICA/IHRoaXMud2ViU29ja2V0QWN0aXZpdHkkKClcbiAgICAgICAgICAgIDogdGhpcy5wb2xsaW5nR2V0QWN0aXZpdHkkKClcbiAgICAgICAgKS5zaGFyZSgpO1xuICAgIH1cblxuICAgIC8vIEV2ZXJ5IHRpbWUgd2UncmUgYWJvdXQgdG8gbWFrZSBhIERpcmVjdCBMaW5lIFJFU1QgY2FsbCwgd2UgY2FsbCB0aGlzIGZpcnN0IHRvIHNlZSBjaGVjayB0aGUgY3VycmVudCBjb25uZWN0aW9uIHN0YXR1cy5cbiAgICAvLyBFaXRoZXIgdGhyb3dzIGFuIGVycm9yIChpbmRpY2F0aW5nIGFuIGVycm9yIHN0YXRlKSBvciBlbWl0cyBhIG51bGwsIGluZGljYXRpbmcgYSAocHJlc3VtYWJseSkgaGVhbHRoeSBjb25uZWN0aW9uXG4gICAgcHJpdmF0ZSBjaGVja0Nvbm5lY3Rpb24ob25jZSA9IGZhbHNlKSB7XG4gICAgICAgIGxldCBvYnMgPSAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJFxuICAgICAgICAuZmxhdE1hcChjb25uZWN0aW9uU3RhdHVzID0+IHtcbiAgICAgICAgICAgIGlmIChjb25uZWN0aW9uU3RhdHVzID09PSBDb25uZWN0aW9uU3RhdHVzLlVuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5Db25uZWN0aW5nKTtcblxuICAgICAgICAgICAgICAgIC8vaWYgdG9rZW4gYW5kIHN0cmVhbVVybCBhcmUgZGVmaW5lZCBpdCBtZWFucyByZWNvbm5lY3QgaGFzIGFscmVhZHkgYmVlbiBkb25lLiBTa2lwcGluZyBpdC5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy50b2tlbiAmJiB0aGlzLnN0cmVhbVVybCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5PbmxpbmUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5vZihjb25uZWN0aW9uU3RhdHVzLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRDb252ZXJzYXRpb24oKS5kbyhjb252ZXJzYXRpb24gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb252ZXJzYXRpb25JZCA9IGNvbnZlcnNhdGlvbi5jb252ZXJzYXRpb25JZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9rZW4gPSB0aGlzLnNlY3JldCB8fCBjb252ZXJzYXRpb24udG9rZW47XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0cmVhbVVybCA9IGNvbnZlcnNhdGlvbi5zdHJlYW1Vcmw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZmVyZW5jZUdyYW1tYXJJZCA9IGNvbnZlcnNhdGlvbi5yZWZlcmVuY2VHcmFtbWFySWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VjcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaFRva2VuTG9vcCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5PbmxpbmUpO1xuICAgICAgICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5GYWlsZWRUb0Nvbm5lY3QpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAubWFwKF8gPT4gY29ubmVjdGlvblN0YXR1cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YoY29ubmVjdGlvblN0YXR1cywgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKGNvbm5lY3Rpb25TdGF0dXMgPT4gY29ubmVjdGlvblN0YXR1cyAhPSBDb25uZWN0aW9uU3RhdHVzLlVuaW5pdGlhbGl6ZWQgJiYgY29ubmVjdGlvblN0YXR1cyAhPSBDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RpbmcpXG4gICAgICAgIC5mbGF0TWFwKGNvbm5lY3Rpb25TdGF0dXMgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChjb25uZWN0aW9uU3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBDb25uZWN0aW9uU3RhdHVzLkVuZGVkOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnJvckNvbnZlcnNhdGlvbkVuZGVkLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcik7XG5cbiAgICAgICAgICAgICAgICBjYXNlIENvbm5lY3Rpb25TdGF0dXMuRmFpbGVkVG9Db25uZWN0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnJvckZhaWxlZFRvQ29ubmVjdCwgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBDb25uZWN0aW9uU3RhdHVzLkV4cGlyZWRUb2tlbjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YoY29ubmVjdGlvblN0YXR1cywgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YoY29ubmVjdGlvblN0YXR1cywgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiBvbmNlID8gb2JzLnRha2UoMSkgOiBvYnM7XG4gICAgfVxuXG4gICAgc2V0Q29ubmVjdGlvblN0YXR1c0ZhbGxiYWNrKFxuICAgICAgICBjb25uZWN0aW9uU3RhdHVzRnJvbTogQ29ubmVjdGlvblN0YXR1cyxcbiAgICAgICAgY29ubmVjdGlvblN0YXR1c1RvOiBDb25uZWN0aW9uU3RhdHVzLFxuICAgICAgICBtYXhBdHRlbXB0cyA9IDVcbiAgICApIHtcbiAgICAgICAgbWF4QXR0ZW1wdHMtLTtcbiAgICAgICAgbGV0IGF0dGVtcHRzID0gMDtcbiAgICAgICAgbGV0IGN1cnJTdGF0dXMgPSBudWxsO1xuICAgICAgICByZXR1cm4gKHN0YXR1czogQ29ubmVjdGlvblN0YXR1cyk6IENvbm5lY3Rpb25TdGF0dXMgPT4ge1xuICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gY29ubmVjdGlvblN0YXR1c0Zyb20gJiYgY3VyclN0YXR1cyA9PT0gc3RhdHVzICYmIGF0dGVtcHRzID49IG1heEF0dGVtcHRzKSB7XG4gICAgICAgICAgICAgICAgYXR0ZW1wdHMgPSAwXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb25TdGF0dXNUbztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF0dGVtcHRzKys7XG4gICAgICAgICAgICBjdXJyU3RhdHVzID0gc3RhdHVzO1xuICAgICAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4cGlyZWRUb2tlbigpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdGlvblN0YXR1cyA9IHRoaXMuY29ubmVjdGlvblN0YXR1cyQuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKGNvbm5lY3Rpb25TdGF0dXMgIT0gQ29ubmVjdGlvblN0YXR1cy5FbmRlZCAmJiBjb25uZWN0aW9uU3RhdHVzICE9IENvbm5lY3Rpb25TdGF0dXMuRmFpbGVkVG9Db25uZWN0KVxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRXhwaXJlZFRva2VuKTtcblxuICAgICAgICBjb25zdCBwcm90ZWN0ZWRDb25uZWN0aW9uU3RhdHVzID0gdGhpcy5leHBpcmVkVG9rZW5FeGhhdXN0aW9uKHRoaXMuY29ubmVjdGlvblN0YXR1cyQuZ2V0VmFsdWUoKSk7XG4gICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChwcm90ZWN0ZWRDb25uZWN0aW9uU3RhdHVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0Q29udmVyc2F0aW9uKCkge1xuICAgICAgICAvL2lmIGNvbnZlcnNhdGlvbmlkIGlzIHNldCBoZXJlLCBpdCBtZWFucyB3ZSBuZWVkIHRvIGNhbGwgdGhlIHJlY29ubmVjdCBhcGksIGVsc2UgaXQgaXMgYSBuZXcgY29udmVyc2F0aW9uXG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuY29udmVyc2F0aW9uSWRcbiAgICAgICAgICAgID8gYCR7dGhpcy5kb21haW59L2NvbnZlcnNhdGlvbnMvJHt0aGlzLmNvbnZlcnNhdGlvbklkfT93YXRlcm1hcms9JHt0aGlzLndhdGVybWFya31gXG4gICAgICAgICAgICA6IGAke3RoaXMuZG9tYWlufS9jb252ZXJzYXRpb25zYDtcbiAgICAgICAgY29uc3QgbWV0aG9kID0gdGhpcy5jb252ZXJzYXRpb25JZCA/IFwiR0VUXCIgOiBcIlBPU1RcIjtcbiAgICAgICAgY29uc3QgYm9keSA9IHRoaXMuY29udmVyc2F0aW9uSWRcbiAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICB1c2VyOiB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLnVzZXJJZE9uU3RhcnRDb252ZXJzYXRpb25cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGVPblN0YXJ0Q29udmVyc2F0aW9uXG4gICAgICAgICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VzLmFqYXgoe1xuICAgICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgYm9keSxcbiAgICAgICAgICAgIHRpbWVvdXQ6IHRoaXMudGltZW91dCxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICBcIkFjY2VwdFwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgICAuLi50aGlzLmNvbW1vbkhlYWRlcnMoKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuLy8gICAgICAuZG8oYWpheFJlc3BvbnNlID0+IGtvbnNvbGUubG9nKFwiY29udmVyc2F0aW9uIGFqYXhSZXNwb25zZVwiLCBhamF4UmVzcG9uc2UucmVzcG9uc2UpKVxuICAgICAgICAubWFwKGFqYXhSZXNwb25zZSA9PiBhamF4UmVzcG9uc2UucmVzcG9uc2UgYXMgQ29udmVyc2F0aW9uKVxuICAgICAgICAucmV0cnlXaGVuKGVycm9yJCA9PlxuICAgICAgICAgICAgLy8gZm9yIG5vdyB3ZSBkZWVtIDR4eCBhbmQgNXh4IGVycm9ycyBhcyB1bnJlY292ZXJhYmxlXG4gICAgICAgICAgICAvLyBmb3IgZXZlcnl0aGluZyBlbHNlICh0aW1lb3V0cyksIHJldHJ5IGZvciBhIHdoaWxlXG4gICAgICAgICAgICBlcnJvciQubWVyZ2VNYXAoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yLnN0YXR1cyA+PSA0MDAgJiYgZXJyb3Iuc3RhdHVzIDwgNjAwXG4gICAgICAgICAgICAgICAgPyBPYnNlcnZhYmxlLnRocm93KGVycm9yLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcilcbiAgICAgICAgICAgICAgICA6IE9ic2VydmFibGUub2YoZXJyb3IsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5kZWxheSh0aGlzLnRpbWVvdXQsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKVxuICAgICAgICAgICAgLnRha2UodGhpcy5yZXRyaWVzKVxuICAgICAgICApXG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWZyZXNoVG9rZW5Mb29wKCkge1xuICAgICAgICB0aGlzLnRva2VuUmVmcmVzaFN1YnNjcmlwdGlvbiA9IE9ic2VydmFibGUuaW50ZXJ2YWwoaW50ZXJ2YWxSZWZyZXNoVG9rZW4sIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKVxuICAgICAgICAuZmxhdE1hcChfID0+IHRoaXMucmVmcmVzaFRva2VuKCkpXG4gICAgICAgIC5zdWJzY3JpYmUodG9rZW4gPT4ge1xuICAgICAgICAgICAga29uc29sZS5sb2coXCJyZWZyZXNoaW5nIHRva2VuXCIsIHRva2VuLCBcImF0XCIsIG5ldyBEYXRlKCkpO1xuICAgICAgICAgICAgdGhpcy50b2tlbiA9IHRva2VuO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZnJlc2hUb2tlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tDb25uZWN0aW9uKHRydWUpXG4gICAgICAgIC5mbGF0TWFwKF8gPT5cbiAgICAgICAgICAgIHRoaXMuc2VydmljZXMuYWpheCh7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICB1cmw6IGAke3RoaXMuZG9tYWlufS90b2tlbnMvcmVmcmVzaGAsXG4gICAgICAgICAgICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5jb21tb25IZWFkZXJzKClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLm1hcChhamF4UmVzcG9uc2UgPT4gYWpheFJlc3BvbnNlLnJlc3BvbnNlLnRva2VuIGFzIHN0cmluZylcbiAgICAgICAgICAgIC5yZXRyeVdoZW4oZXJyb3IkID0+IGVycm9yJFxuICAgICAgICAgICAgICAgIC5tZXJnZU1hcChlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHRva2VuIGlzIGV4cGlyZWQgdGhlcmUncyBubyByZWFzb24gdG8ga2VlcCB0cnlpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwaXJlZFRva2VuKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnJvciwgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYm90IGlzIGdvbmUsIHdlIHNob3VsZCBzdG9wIHJldHJ5aW5nXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnJvciwgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YoZXJyb3IsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5kZWxheSh0aGlzLnRpbWVvdXQsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKVxuICAgICAgICAgICAgICAgIC50YWtlKHRoaXMucmV0cmllcylcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgIH1cblxuICAgIHB1YmxpYyByZWNvbm5lY3QoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb24pIHtcbiAgICAgICAgdGhpcy50b2tlbiA9IGNvbnZlcnNhdGlvbi50b2tlbjtcbiAgICAgICAgdGhpcy5zdHJlYW1VcmwgPSBjb252ZXJzYXRpb24uc3RyZWFtVXJsO1xuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdHVzJC5nZXRWYWx1ZSgpID09PSBDb25uZWN0aW9uU3RhdHVzLkV4cGlyZWRUb2tlbilcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLk9ubGluZSk7XG4gICAgfVxuXG4gICAgZW5kKCkge1xuICAgICAgICBpZiAodGhpcy50b2tlblJlZnJlc2hTdWJzY3JpcHRpb24pXG4gICAgICAgICAgICB0aGlzLnRva2VuUmVmcmVzaFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRW5kZWQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoZSA9PT0gZXJyb3JDb252ZXJzYXRpb25FbmRlZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB0aHJvdyhlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFNlc3Npb25JZCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICAvLyBJZiB3ZSdyZSBub3QgY29ubmVjdGVkIHRvIHRoZSBib3QsIGdldCBjb25uZWN0ZWRcbiAgICAgICAgLy8gV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB3ZSBhcmUgbm90IGNvbm5lY3RlZFxuICAgICAgICBrb25zb2xlLmxvZyhcImdldFNlc3Npb25JZFwiKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tDb25uZWN0aW9uKHRydWUpXG4gICAgICAgICAgICAuZmxhdE1hcChfID0+XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlcy5hamF4KHtcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGAke3RoaXMuZG9tYWlufS9zZXNzaW9uL2dldHNlc3Npb25pZGAsXG4gICAgICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY29tbW9uSGVhZGVycygpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5tYXAoYWpheFJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFqYXhSZXNwb25zZSAmJiBhamF4UmVzcG9uc2UucmVzcG9uc2UgJiYgYWpheFJlc3BvbnNlLnJlc3BvbnNlLnNlc3Npb25JZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAga29uc29sZS5sb2coXCJnZXRTZXNzaW9uSWQgcmVzcG9uc2U6IFwiICsgYWpheFJlc3BvbnNlLnJlc3BvbnNlLnNlc3Npb25JZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWpheFJlc3BvbnNlLnJlc3BvbnNlLnNlc3Npb25JZCBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAga29uc29sZS5sb2coXCJnZXRTZXNzaW9uSWQgZXJyb3I6IFwiICsgZXJyb3Iuc3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YoJycsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHRoaXMuY2F0Y2hFeHBpcmVkVG9rZW4oZXJyb3IpKTtcbiAgICB9XG5cbiAgICBwb3N0QWN0aXZpdHkoYWN0aXZpdHk6IEFjdGl2aXR5KSB7XG4gICAgICAgIC8vIElmIHVzZXIgaWQgaXMgc2V0LCBjaGVjayBpZiBpdCBtYXRjaCBhY3Rpdml0eS5mcm9tLmlkIGFuZCBhbHdheXMgb3ZlcnJpZGUgaXQgaW4gYWN0aXZpdHlcbiAgICAgICAgaWYgKHRoaXMudXNlcklkT25TdGFydENvbnZlcnNhdGlvbiAmJiBhY3Rpdml0eS5mcm9tICYmIGFjdGl2aXR5LmZyb20uaWQgIT09IHRoaXMudXNlcklkT25TdGFydENvbnZlcnNhdGlvbikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdEaXJlY3RMaW5lSlM6IEFjdGl2aXR5LmZyb20uaWQgZG9lcyBub3QgbWF0Y2ggd2l0aCB1c2VyIGlkLCBpZ25vcmluZyBhY3Rpdml0eS5mcm9tLmlkJyk7XG4gICAgICAgICAgICBhY3Rpdml0eS5mcm9tLmlkID0gdGhpcy51c2VySWRPblN0YXJ0Q29udmVyc2F0aW9uO1xuICAgICAgICB9XG4gICAgICAgIC8vIFVzZSBwb3N0TWVzc2FnZVdpdGhBdHRhY2htZW50cyBmb3IgbWVzc2FnZXMgd2l0aCBhdHRhY2htZW50cyB0aGF0IGFyZSBsb2NhbCBmaWxlcyAoZS5nLiBhbiBpbWFnZSB0byB1cGxvYWQpXG4gICAgICAgIC8vIFRlY2huaWNhbGx5IHdlIGNvdWxkIHVzZSBpdCBmb3IgKmFsbCogYWN0aXZpdGllcywgYnV0IHBvc3RBY3Rpdml0eSBpcyBtdWNoIGxpZ2h0ZXIgd2VpZ2h0XG4gICAgICAgIC8vIFNvLCBzaW5jZSBXZWJDaGF0IGlzIHBhcnRpYWxseSBhIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiBEaXJlY3QgTGluZSwgd2UgaW1wbGVtZW50IGJvdGguXG4gICAgICAgIGlmIChhY3Rpdml0eS50eXBlID09PSBcIm1lc3NhZ2VcIiAmJiBhY3Rpdml0eS5hdHRhY2htZW50cyAmJiBhY3Rpdml0eS5hdHRhY2htZW50cy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9zdE1lc3NhZ2VXaXRoQXR0YWNobWVudHMoYWN0aXZpdHkpO1xuXG4gICAgICAgIC8vIElmIHdlJ3JlIG5vdCBjb25uZWN0ZWQgdG8gdGhlIGJvdCwgZ2V0IGNvbm5lY3RlZFxuICAgICAgICAvLyBXaWxsIHRocm93IGFuIGVycm9yIGlmIHdlIGFyZSBub3QgY29ubmVjdGVkXG4gICAgICAgIGtvbnNvbGUubG9nKFwicG9zdEFjdGl2aXR5XCIsIGFjdGl2aXR5KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tDb25uZWN0aW9uKHRydWUpXG4gICAgICAgIC5mbGF0TWFwKF8gPT5cbiAgICAgICAgICAgIHRoaXMuc2VydmljZXMuYWpheCh7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICB1cmw6IGAke3RoaXMuZG9tYWlufS9jb252ZXJzYXRpb25zLyR7dGhpcy5jb252ZXJzYXRpb25JZH0vYWN0aXZpdGllc2AsXG4gICAgICAgICAgICAgICAgYm9keTogYWN0aXZpdHksXG4gICAgICAgICAgICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY29tbW9uSGVhZGVycygpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAubWFwKGFqYXhSZXNwb25zZSA9PiBhamF4UmVzcG9uc2UucmVzcG9uc2UuaWQgYXMgc3RyaW5nKVxuICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHRoaXMuY2F0Y2hQb3N0RXJyb3IoZXJyb3IpKVxuICAgICAgICApXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB0aGlzLmNhdGNoRXhwaXJlZFRva2VuKGVycm9yKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb3N0TWVzc2FnZVdpdGhBdHRhY2htZW50cyhtZXNzYWdlOiBNZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IHsgYXR0YWNobWVudHMgfSA9IG1lc3NhZ2U7XG4gICAgICAgIC8vIFdlIGNsZWFuIHRoZSBhdHRhY2htZW50cyBidXQgbWFraW5nIHN1cmUgZXZlcnkgYXR0YWNobWVudCBoYXMgdW5pcXVlIG5hbWUuXG4gICAgICAgIC8vIElmIHRoZSBmaWxlIGRvIG5vdCBoYXZlIGEgbmFtZSwgQ2hyb21lIHdpbGwgYXNzaWduIFwiYmxvYlwiIHdoZW4gaXQgaXMgYXBwZW5kZWQgdG8gRm9ybURhdGEuXG4gICAgICAgIGNvbnN0IGF0dGFjaG1lbnROYW1lczogc3RyaW5nW10gPSBkZWR1cGVGaWxlbmFtZXMoYXR0YWNobWVudHMubWFwKChtZWRpYTogTWVkaWEpID0+IG1lZGlhLm5hbWUgfHwgJ2Jsb2InKSk7XG4gICAgICAgIGNvbnN0IGNsZWFuc2VkQXR0YWNobWVudHMgPSBhdHRhY2htZW50cy5tYXAoKGF0dGFjaG1lbnQ6IE1lZGlhLCBpbmRleDogbnVtYmVyKSA9PiAoe1xuICAgICAgICAgICAgLi4uYXR0YWNobWVudCxcbiAgICAgICAgICAgIG5hbWU6IGF0dGFjaG1lbnROYW1lc1tpbmRleF1cbiAgICAgICAgfSkpO1xuICAgICAgICBsZXQgZm9ybURhdGE6IEZvcm1EYXRhO1xuXG4gICAgICAgIC8vIElmIHdlJ3JlIG5vdCBjb25uZWN0ZWQgdG8gdGhlIGJvdCwgZ2V0IGNvbm5lY3RlZFxuICAgICAgICAvLyBXaWxsIHRocm93IGFuIGVycm9yIGlmIHdlIGFyZSBub3QgY29ubmVjdGVkXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrQ29ubmVjdGlvbih0cnVlKVxuICAgICAgICAuZmxhdE1hcChfID0+IHtcbiAgICAgICAgICAgIC8vIFRvIHNlbmQgdGhpcyBtZXNzYWdlIHRvIERpcmVjdExpbmUgd2UgbmVlZCB0byBkZWNvbnN0cnVjdCBpdCBpbnRvIGEgXCJ0ZW1wbGF0ZVwiIGFjdGl2aXR5XG4gICAgICAgICAgICAvLyBhbmQgb25lIGJsb2IgZm9yIGVhY2ggYXR0YWNobWVudC5cbiAgICAgICAgICAgIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2FjdGl2aXR5JywgbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAuLi5tZXNzYWdlLFxuICAgICAgICAgICAgICAgIC8vIFJlbW92aW5nIGNvbnRlbnRVcmwgZnJvbSBhdHRhY2htZW50LCB3ZSB3aWxsIHNlbmQgaXQgdmlhIG11bHRpcGFydFxuICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzOiBjbGVhbnNlZEF0dGFjaG1lbnRzLm1hcCgoeyBjb250ZW50VXJsOiBzdHJpbmcsIC4uLm90aGVycyB9KSA9PiAoeyAuLi5vdGhlcnMgfSkpXG4gICAgICAgICAgICB9KV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuYWN0aXZpdHknIH0pKTtcblxuICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUuZnJvbShjbGVhbnNlZEF0dGFjaG1lbnRzLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcilcbiAgICAgICAgICAgIC5mbGF0TWFwKChtZWRpYTogTWVkaWEpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlcy5hamF4KHtcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IG1lZGlhLmNvbnRlbnRVcmwsXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmRvKGFqYXhSZXNwb25zZSA9PlxuICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBuZXcgQmxvYihbYWpheFJlc3BvbnNlLnJlc3BvbnNlXSwgeyB0eXBlOiBtZWRpYS5jb250ZW50VHlwZSB9KSwgbWVkaWEubmFtZSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuY291bnQoKVxuICAgICAgICB9KVxuICAgICAgICAuZmxhdE1hcChfID0+XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2VzLmFqYXgoe1xuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgdXJsOiBgJHt0aGlzLmRvbWFpbn0vY29udmVyc2F0aW9ucy8ke3RoaXMuY29udmVyc2F0aW9uSWR9L3VwbG9hZD91c2VySWQ9JHttZXNzYWdlLmZyb20uaWR9YCxcbiAgICAgICAgICAgICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgICAgICAgICAgICB0aW1lb3V0OiB0aGlzLnRpbWVvdXQsXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmNvbW1vbkhlYWRlcnMoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAubWFwKGFqYXhSZXNwb25zZSA9PiBhamF4UmVzcG9uc2UucmVzcG9uc2UuaWQgYXMgc3RyaW5nKVxuICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHRoaXMuY2F0Y2hQb3N0RXJyb3IoZXJyb3IpKVxuICAgICAgICApXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB0aGlzLmNhdGNoUG9zdEVycm9yKGVycm9yKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYXRjaFBvc3RFcnJvcihlcnJvcjogYW55KSB7XG4gICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMylcbiAgICAgICAgICAgIC8vIHRva2VuIGhhcyBleHBpcmVkICh3aWxsIGZhbGwgdGhyb3VnaCB0byByZXR1cm4gXCJyZXRyeVwiKVxuICAgICAgICAgICAgdGhpcy5leHBpcmVkVG9rZW4oKTtcbiAgICAgICAgZWxzZSBpZiAoZXJyb3Iuc3RhdHVzID49IDQwMCAmJiBlcnJvci5zdGF0dXMgPCA1MDApXG4gICAgICAgICAgICAvLyBtb3JlIHVucmVjb3ZlcmFibGUgZXJyb3JzXG4gICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnJvciwgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5vZihcInJldHJ5XCIsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhdGNoRXhwaXJlZFRva2VuKGVycm9yOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yID09PSBlcnJvckV4cGlyZWRUb2tlblxuICAgICAgICA/IE9ic2VydmFibGUub2YoXCJyZXRyeVwiLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcilcbiAgICAgICAgOiBPYnNlcnZhYmxlLnRocm93KGVycm9yLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb2xsaW5nR2V0QWN0aXZpdHkkKCkge1xuICAgICAgICBjb25zdCBwb2xsZXIkOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPSBPYnNlcnZhYmxlLmNyZWF0ZSgoc3Vic2NyaWJlcjogU3Vic2NyaWJlcjxhbnk+KSA9PiB7XG4gICAgICAgICAgICAvLyBBIEJlaGF2aW9yU3ViamVjdCB0byB0cmlnZ2VyIHBvbGxpbmcuIFNpbmNlIGl0IGlzIGEgQmVoYXZpb3JTdWJqZWN0XG4gICAgICAgICAgICAvLyB0aGUgZmlyc3QgZXZlbnQgaXMgcHJvZHVjZWQgaW1tZWRpYXRlbHkuXG4gICAgICAgICAgICBjb25zdCB0cmlnZ2VyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55Pih7fSk7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IHJlbW92ZSBEYXRlLm5vdywgdXNlIHJlYWN0aXZlIGludGVydmFsIHRvIHNwYWNlIG91dCBldmVyeSByZXF1ZXN0XG5cbiAgICAgICAgICAgIHRyaWdnZXIkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29ubmVjdGlvblN0YXR1cyQuZ2V0VmFsdWUoKSA9PT0gQ29ubmVjdGlvblN0YXR1cy5PbmxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZXMuYWpheCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0OiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5jb21tb25IZWFkZXJzKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgJHsgdGhpcy5kb21haW4gfS9jb252ZXJzYXRpb25zLyR7IHRoaXMuY29udmVyc2F0aW9uSWQgfS9hY3Rpdml0aWVzP3dhdGVybWFyaz0keyB0aGlzLndhdGVybWFyayB9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IHRoaXMudGltZW91dFxuICAgICAgICAgICAgICAgICAgICB9KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0OiBBamF4UmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRyaWdnZXIkLm5leHQobnVsbCksIE1hdGgubWF4KDAsIHRoaXMucG9sbGluZ0ludGVydmFsIC0gRGF0ZS5ub3coKSArIHN0YXJ0VGltZXN0YW1wKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGVycm9yLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQwMzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLkV4cGlyZWRUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRyaWdnZXIkLm5leHQobnVsbCksIHRoaXMucG9sbGluZ0ludGVydmFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRW5kZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb3BhZ2F0ZSB0aGUgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja0Nvbm5lY3Rpb24oKVxuICAgICAgICAuZmxhdE1hcChfID0+IHBvbGxlciRcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiBPYnNlcnZhYmxlLmVtcHR5PEFqYXhSZXNwb25zZT4oKSlcbiAgICAgICAgICAgIC5tYXAoYWpheFJlc3BvbnNlID0+IGFqYXhSZXNwb25zZS5yZXNwb25zZSBhcyBBY3Rpdml0eUdyb3VwKVxuICAgICAgICAgICAgLmZsYXRNYXAoYWN0aXZpdHlHcm91cCA9PiB0aGlzLm9ic2VydmFibGVGcm9tQWN0aXZpdHlHcm91cChhY3Rpdml0eUdyb3VwKSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb2JzZXJ2YWJsZUZyb21BY3Rpdml0eUdyb3VwKGFjdGl2aXR5R3JvdXA6IEFjdGl2aXR5R3JvdXApIHtcbiAgICAgICAgaWYgKGFjdGl2aXR5R3JvdXAud2F0ZXJtYXJrKVxuICAgICAgICAgICAgdGhpcy53YXRlcm1hcmsgPSBhY3Rpdml0eUdyb3VwLndhdGVybWFyaztcbiAgICAgICAgcmV0dXJuIE9ic2VydmFibGUuZnJvbShhY3Rpdml0eUdyb3VwLmFjdGl2aXRpZXMsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHdlYlNvY2tldEFjdGl2aXR5JCgpOiBPYnNlcnZhYmxlPEFjdGl2aXR5PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrQ29ubmVjdGlvbigpXG4gICAgICAgIC5mbGF0TWFwKF8gPT5cbiAgICAgICAgICAgIHRoaXMub2JzZXJ2YWJsZVdlYlNvY2tldDxBY3Rpdml0eUdyb3VwPigpXG4gICAgICAgICAgICAvLyBXZWJTb2NrZXRzIGNhbiBiZSBjbG9zZWQgYnkgdGhlIHNlcnZlciBvciB0aGUgYnJvd3Nlci4gSW4gdGhlIGZvcm1lciBjYXNlIHdlIG5lZWQgdG9cbiAgICAgICAgICAgIC8vIHJldHJpZXZlIGEgbmV3IHN0cmVhbVVybC4gSW4gdGhlIGxhdHRlciBjYXNlIHdlIGNvdWxkIGZpcnN0IHJldHJ5IHdpdGggdGhlIGN1cnJlbnQgc3RyZWFtVXJsLFxuICAgICAgICAgICAgLy8gYnV0IGl0J3Mgc2ltcGxlciBqdXN0IHRvIGFsd2F5cyBmZXRjaCBhIG5ldyBvbmUuXG4gICAgICAgICAgICAucmV0cnlXaGVuKGVycm9yJCA9PiBlcnJvciQuZGVsYXkodGhpcy5nZXRSZXRyeURlbGF5KCksIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKS5tZXJnZU1hcChlcnJvciA9PiB0aGlzLnJlY29ubmVjdFRvQ29udmVyc2F0aW9uKCkpKVxuICAgICAgICApXG4gICAgICAgIC5mbGF0TWFwKGFjdGl2aXR5R3JvdXAgPT4gdGhpcy5vYnNlcnZhYmxlRnJvbUFjdGl2aXR5R3JvdXAoYWN0aXZpdHlHcm91cCkpXG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyB0aGUgZGVsYXkgZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzXG4gICAgcHJpdmF0ZSBnZXRSZXRyeURlbGF5KCkge1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcigzMDAwICsgdGhpcy5zZXJ2aWNlcy5yYW5kb20oKSAqIDEyMDAwKTtcbiAgICB9XG5cbiAgICAvLyBPcmlnaW5hbGx5IHdlIHVzZWQgT2JzZXJ2YWJsZS53ZWJTb2NrZXQsIGJ1dCBpdCdzIGZhaXJseSBvcGluaW9uYXRlZCBhbmQgSSBlbmRlZCB1cCB3cml0aW5nXG4gICAgLy8gYSBsb3Qgb2YgY29kZSB0byB3b3JrIGFyb3VuZCB0aGVpciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBTaW5jZSBXZWJDaGF0IGlzIG1lYW50IHRvIGJlIGEgcmVmZXJlbmNlXG4gICAgLy8gaW1wbGVtZW50YXRpb24sIEkgZGVjaWRlZCByb2xsIHRoZSBiZWxvdywgd2hlcmUgdGhlIGxvZ2ljIGlzIG1vcmUgcHVycG9zZWZ1bC4gLSBAYmlsbGJhXG4gICAgcHJpdmF0ZSBvYnNlcnZhYmxlV2ViU29ja2V0PFQ+KCkge1xuICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUoKHN1YnNjcmliZXI6IFN1YnNjcmliZXI8VD4pID0+IHtcbiAgICAgICAgICAgIGtvbnNvbGUubG9nKFwiY3JlYXRpbmcgV2ViU29ja2V0XCIsIHRoaXMuc3RyZWFtVXJsKTtcbiAgICAgICAgICAgIGNvbnN0IHdzID0gbmV3IHRoaXMuc2VydmljZXMuV2ViU29ja2V0KHRoaXMuc3RyZWFtVXJsKTtcbiAgICAgICAgICAgIGxldCBzdWI6IFN1YnNjcmlwdGlvbjtcbiAgICAgICAgICAgIGxldCBjbG9zZWQ6IGJvb2xlYW47XG5cbiAgICAgICAgICAgIHdzLm9ub3BlbiA9IG9wZW4gPT4ge1xuICAgICAgICAgICAgICAgIGtvbnNvbGUubG9nKFwiV2ViU29ja2V0IG9wZW5cIiwgb3Blbik7XG4gICAgICAgICAgICAgICAgLy8gQ2hyb21lIGlzIHByZXR0eSBiYWQgYXQgbm90aWNpbmcgd2hlbiBhIFdlYlNvY2tldCBjb25uZWN0aW9uIGlzIGJyb2tlbi5cbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBwZXJpb2RpY2FsbHkgcGluZyB0aGUgc2VydmVyIHdpdGggZW1wdHkgbWVzc2FnZXMsIGl0IGhlbHBzIENocm9tZVxuICAgICAgICAgICAgICAgIC8vIHJlYWxpemUgd2hlbiBjb25uZWN0aW9uIGJyZWFrcywgYW5kIGNsb3NlIHRoZSBzb2NrZXQuIFdlIHRoZW4gdGhyb3cgYW5cbiAgICAgICAgICAgICAgICAvLyBlcnJvciwgYW5kIHRoYXQgZ2l2ZSB1cyB0aGUgb3Bwb3J0dW5pdHkgdG8gYXR0ZW1wdCB0byByZWNvbm5lY3QuXG4gICAgICAgICAgICAgICAgc3ViID0gT2JzZXJ2YWJsZS5pbnRlcnZhbCh0aGlzLnRpbWVvdXQsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKS5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3cy5zZW5kKFwiXCIpXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAga29uc29sZS5sb2coXCJQaW5nIGVycm9yXCIsIGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdzLm9uY2xvc2UgPSBjbG9zZSA9PiB7XG4gICAgICAgICAgICAgICAga29uc29sZS5sb2coXCJXZWJTb2NrZXQgY2xvc2VcIiwgY2xvc2UpO1xuICAgICAgICAgICAgICAgIGlmIChzdWIpIHN1Yi51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgICAgICAgICAgLy8gUnhKUy5yZXRyeVdoZW4gaGFzIGEgYnVnIHRoYXQgd291bGQgY2F1c2UgXCJlcnJvclwiIHNpZ25hbCB0byBiZSBzZW50IGFmdGVyIHRoZSBvYnNlcnZhYmxlIGlzIGNvbXBsZXRlZC9lcnJvcmVkLlxuICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gZ3VhcmQgYWdhaW5zdCBleHRyYW5lb3VzIFwiZXJyb3JcIiBzaWduYWwgdG8gd29ya2Fyb3VuZCB0aGUgYnVnLlxuICAgICAgICAgICAgICAgIGNsb3NlZCB8fCBzdWJzY3JpYmVyLmVycm9yKGNsb3NlKTtcbiAgICAgICAgICAgICAgICBjbG9zZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3cy5vbmVycm9yID0gZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIGtvbnNvbGUubG9nKFwiV2ViU29ja2V0IGVycm9yXCIsIGVycm9yKTtcbiAgICAgICAgICAgICAgICBpZiAoc3ViKSBzdWIudW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgICAgICAgIC8vIFJ4SlMucmV0cnlXaGVuIGhhcyBhIGJ1ZyB0aGF0IHdvdWxkIGNhdXNlIFwiZXJyb3JcIiBzaWduYWwgdG8gYmUgc2VudCBhZnRlciB0aGUgb2JzZXJ2YWJsZSBpcyBjb21wbGV0ZWQvZXJyb3JlZC5cbiAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGd1YXJkIGFnYWluc3QgZXh0cmFuZW91cyBcImVycm9yXCIgc2lnbmFsIHRvIHdvcmthcm91bmQgdGhlIGJ1Zy5cbiAgICAgICAgICAgICAgICBjbG9zZWQgfHwgc3Vic2NyaWJlci5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd3Mub25tZXNzYWdlID0gbWVzc2FnZSA9PiBtZXNzYWdlLmRhdGEgJiYgc3Vic2NyaWJlci5uZXh0KEpTT04ucGFyc2UobWVzc2FnZS5kYXRhKSk7XG5cbiAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlICd1bnN1YnNjcmliZScgbWV0aG9kLCB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGlzIG9ic2VydmFibGUgaXMgZGlzcG9zZWQuXG4gICAgICAgICAgICAvLyBXaGVuIHRoZSBXZWJTb2NrZXQgY2xvc2VzIGl0c2VsZiwgd2UgdGhyb3cgYW4gZXJyb3IsIGFuZCB0aGlzIGZ1bmN0aW9uIGlzIGV2ZW50dWFsbHkgY2FsbGVkLlxuICAgICAgICAgICAgLy8gV2hlbiB0aGUgb2JzZXJ2YWJsZSBpcyBjbG9zZWQgZmlyc3QgKGUuZy4gd2hlbiB0ZWFyaW5nIGRvd24gYSBXZWJDaGF0IGluc3RhbmNlKSB0aGVuXG4gICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIG1hbnVhbGx5IGNsb3NlIHRoZSBXZWJTb2NrZXQuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh3cy5yZWFkeVN0YXRlID09PSAwIHx8IHdzLnJlYWR5U3RhdGUgPT09IDEpIHdzLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pIGFzIE9ic2VydmFibGU8VD5cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlY29ubmVjdFRvQ29udmVyc2F0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGVja0Nvbm5lY3Rpb24odHJ1ZSlcbiAgICAgICAgLmZsYXRNYXAoXyA9PlxuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlcy5hamF4KHtcbiAgICAgICAgICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICAgICAgICAgICAgdXJsOiBgJHt0aGlzLmRvbWFpbn0vY29udmVyc2F0aW9ucy8ke3RoaXMuY29udmVyc2F0aW9uSWR9P3dhdGVybWFyaz0ke3RoaXMud2F0ZXJtYXJrfWAsXG4gICAgICAgICAgICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJBY2NlcHRcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY29tbW9uSGVhZGVycygpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5kbyhyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZWNyZXQpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9rZW4gPSByZXN1bHQucmVzcG9uc2UudG9rZW47XG4gICAgICAgICAgICAgICAgdGhpcy5zdHJlYW1VcmwgPSByZXN1bHQucmVzcG9uc2Uuc3RyZWFtVXJsO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5tYXAoXyA9PiBudWxsKVxuICAgICAgICAgICAgLnJldHJ5V2hlbihlcnJvciQgPT4gZXJyb3IkXG4gICAgICAgICAgICAgICAgLm1lcmdlTWFwKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0b2tlbiBoYXMgZXhwaXJlZC4gV2UgY2FuJ3QgcmVjb3ZlciBmcm9tIHRoaXMgaGVyZSwgYnV0IHRoZSBlbWJlZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlYnNpdGUgbWlnaHQgZXZlbnR1YWxseSBjYWxsIHJlY29ubmVjdCgpIHdpdGggYSBuZXcgdG9rZW4gYW5kIHN0cmVhbVVybC5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwaXJlZFRva2VuKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZhYmxlLnRocm93KGVycm9yQ29udmVyc2F0aW9uRW5kZWQsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZhYmxlLm9mKGVycm9yLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcik7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZGVsYXkodGhpcy50aW1lb3V0LCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcilcbiAgICAgICAgICAgICAgICAudGFrZSh0aGlzLnJldHJpZXMpXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbW1vbkhlYWRlcnMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBcIkF1dGhvcml6YXRpb25cIjogYEJlYXJlciAke3RoaXMudG9rZW59YCxcbiAgICAgICAgICAgIFwieC1tcy1ib3QtYWdlbnRcIjogdGhpcy5fYm90QWdlbnRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEJvdEFnZW50KGN1c3RvbUFnZW50OiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gICAgICAgIGxldCBjbGllbnRBZ2VudCA9ICdkaXJlY3RsaW5lanMnXG5cbiAgICAgICAgaWYgKGN1c3RvbUFnZW50KSB7XG4gICAgICAgICAgICBjbGllbnRBZ2VudCArPSBgOyAke2N1c3RvbUFnZW50fWBcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBgJHtESVJFQ1RfTElORV9WRVJTSU9OfSAoJHtjbGllbnRBZ2VudH0gJHtwcm9jZXNzLmVudi5ucG1fcGFja2FnZV92ZXJzaW9ufSlgO1xuICAgIH1cblxuICAgIHNldFVzZXJJZCh1c2VySWQ6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdHVzJC5nZXRWYWx1ZSgpID09PSBDb25uZWN0aW9uU3RhdHVzLk9ubGluZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaXJlY3RMaW5lSlM6IEl0IGlzIGNvbm5lY3RlZCwgd2UgY2Fubm90IHNldCB1c2VyIGlkLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXNlcklkRnJvbVRva2VuID0gdGhpcy5wYXJzZVRva2VuKHRoaXMudG9rZW4pO1xuICAgICAgICBpZiAodXNlcklkRnJvbVRva2VuKSB7XG4gICAgICAgICAgICByZXR1cm4gY29uc29sZS53YXJuKCdEaXJlY3RMaW5lSlM6IHVzZXIgaWQgaXMgYWxyZWFkeSBzZXQgaW4gdG9rZW4sIHdpbGwgaWdub3JlIHRoaXMgdXNlciBpZC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgvXmRsXy91LnRlc3QodXNlcklkKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnNvbGUud2FybignRGlyZWN0TGluZUpTOiB1c2VyIGlkIHByZWZpeGVkIHdpdGggXCJkbF9cIiBpcyByZXNlcnZlZCBhbmQgbXVzdCBiZSBlbWJlZGRlZCBpbnRvIHRoZSBEaXJlY3QgTGluZSB0b2tlbiB0byBwcmV2ZW50IGZvcmdlcnkuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVzZXJJZE9uU3RhcnRDb252ZXJzYXRpb24gPSB1c2VySWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZVRva2VuKHRva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHsgdXNlciB9ID0gand0RGVjb2RlPEp3dFBheWxvYWQ+KHRva2VuKSBhcyB7IFtrZXk6IHN0cmluZ106IGFueTsgfTtcbiAgICAgICAgICAgIHJldHVybiB1c2VyO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEludmFsaWRUb2tlbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = dedupeFilenames;\n\nvar _parseFilename2 = _interopRequireDefault(require(\"./parseFilename\"));\n\nfunction dedupeFilenames(array) {\n var nextArray = [];\n array.forEach(function (value) {\n var _parseFilename = (0, _parseFilename2[\"default\"])(value),\n extname = _parseFilename.extname,\n name = _parseFilename.name;\n\n var count = 0;\n var nextValue = value;\n\n while (nextArray.includes(nextValue)) {\n nextValue = [name, \"(\".concat(++count, \")\")].filter(function (segment) {\n return segment;\n }).join(' ') + extname;\n }\n\n nextArray.push(nextValue);\n });\n return nextArray;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWR1cGVGaWxlbmFtZXMudHMiXSwibmFtZXMiOlsiZGVkdXBlRmlsZW5hbWVzIiwiYXJyYXkiLCJuZXh0QXJyYXkiLCJmb3JFYWNoIiwidmFsdWUiLCJleHRuYW1lIiwibmFtZSIsImNvdW50IiwibmV4dFZhbHVlIiwiaW5jbHVkZXMiLCJmaWx0ZXIiLCJzZWdtZW50Iiwiam9pbiIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVlLFNBQVNBLGVBQVQsQ0FBeUJDLEtBQXpCLEVBQTBDO0FBQ3JELE1BQU1DLFNBQW1CLEdBQUcsRUFBNUI7QUFFQUQsRUFBQUEsS0FBSyxDQUFDRSxPQUFOLENBQWMsVUFBQUMsS0FBSyxFQUFJO0FBQ25CLHlCQUEwQixnQ0FBY0EsS0FBZCxDQUExQjtBQUFBLFFBQVFDLE9BQVIsa0JBQVFBLE9BQVI7QUFBQSxRQUFpQkMsSUFBakIsa0JBQWlCQSxJQUFqQjs7QUFDQSxRQUFJQyxLQUFLLEdBQUcsQ0FBWjtBQUNBLFFBQUlDLFNBQVMsR0FBR0osS0FBaEI7O0FBRUEsV0FBT0YsU0FBUyxDQUFDTyxRQUFWLENBQW1CRCxTQUFuQixDQUFQLEVBQXNDO0FBQ2xDQSxNQUFBQSxTQUFTLEdBQUcsQ0FBQ0YsSUFBRCxhQUFhLEVBQUVDLEtBQWYsUUFBMkJHLE1BQTNCLENBQWtDLFVBQUFDLE9BQU87QUFBQSxlQUFJQSxPQUFKO0FBQUEsT0FBekMsRUFBc0RDLElBQXRELENBQTJELEdBQTNELElBQWtFUCxPQUE5RTtBQUNIOztBQUVESCxJQUFBQSxTQUFTLENBQUNXLElBQVYsQ0FBZUwsU0FBZjtBQUNILEdBVkQ7QUFZQSxTQUFPTixTQUFQO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGFyc2VGaWxlbmFtZSBmcm9tICcuL3BhcnNlRmlsZW5hbWUnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZWR1cGVGaWxlbmFtZXMoYXJyYXk6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgbmV4dEFycmF5OiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgYXJyYXkuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZXh0bmFtZSwgbmFtZSB9ID0gcGFyc2VGaWxlbmFtZSh2YWx1ZSk7XG4gICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgIGxldCBuZXh0VmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICB3aGlsZSAobmV4dEFycmF5LmluY2x1ZGVzKG5leHRWYWx1ZSkpIHtcbiAgICAgICAgICAgIG5leHRWYWx1ZSA9IFtuYW1lLCBgKCR7ICgrK2NvdW50KSB9KWBdLmZpbHRlcihzZWdtZW50ID0+IHNlZ21lbnQpLmpvaW4oJyAnKSArIGV4dG5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICBuZXh0QXJyYXkucHVzaChuZXh0VmFsdWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5leHRBcnJheTtcbn1cbiJdfQ=="],"names":["_interopRequireDefault","_typeof","Object","defineProperty","exports","value","DirectLineStreaming","_objectWithoutProperties2","_regenerator","_classPrivateFieldGet2","_classPrivateFieldSet2","_toConsumableArray2","_asyncToGenerator2","_classCallCheck2","_createClass2","_defineProperty2","_BehaviorSubject","_buffer","_Observable","BFSE","obj","nodeInterop","__esModule","cache","_getRequireWildcardCache","has","get","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_interopRequireWildcard","_createDeferred","_crossFetch","_directLine","_WebSocketClientWithNetworkInformation","_excluded","WeakMap","cacheBabelInterop","cacheNodeInterop","StreamHandler","s","c$","sq","this","subscriber","connectionStatus$","shouldQueue","_processRequest","mark","_callee","request","logger","streams","stream0","activitySetJson","activitySet","activity","attachments","stream","attachment","dataUri","wrap","_context","prev","next","shift","readAsString","sent","JSON","parse","activities","length","error","Error","abrupt","StreamingResponse","create","push","contentType","contentUrl","activityQueue","stop","_x","_x2","apply","arguments","_this","subscribe","forEach","a","complete","_networkInformation","options","_this2","BehaviorSubject","ConnectionStatus","Uninitialized","writable","networkInformation","addEventListener","removeEventListener","type","console","warn","token","refreshToken","ExpiredToken","domain","conversationId","_botAgent","getBotAgent","botAgent","queueActivities","activity$","Observable","_ref","_callee2","_context2","activitySubscriber","theStreamHandler","connectDeferred","resolve","_x3","share","connectWithRetryAsync","_connectWithRetryAsync","_connectAsync","_waitUntilOnline","_refreshToken","_ref2","getValue","Ended","streamConnection","disconnect","Authorization","concat","customAgent","undefined","clientAgent","_callee3","numberOfAttempts","res","_yield$res$json","_context3","waitUntilOnline","Promise","r","setTimeout","refreshTokenLifetime","method","headers","commonHeaders","ok","json","status","statusText","t0","_this3","FailedToConnect","postMessageWithAttachments","resp$","_ref3","_callee4","resp","numberOfStreams","idString","_JSON$parse","id","_context4","StreamingRequest","setBody","stringify","send","statusCode","Id","_x4","message","_this4","messageWithoutAttachments","httpContentList","_callee6","url","activityStream","_yield$resp$streams$","_context6","all","map","_ref5","_callee5","media","_context5","arrayBuffer","t1","_x5","_ref6","buffer","Buffer","from","SubscribableStream","write","httpContent","HttpContent","contentLength","addStream","e","readAsJson","_callee7","_this5","_context7","reject","cs","Online","_callee9","re","params","abortController","urlSearchParams","wsUrl","_this6","_context9","RegExp","test","AbortController","URLSearchParams","toString","replace","_ref7","_callee8","response","responseString","conversation","_context8","disconnectionHandler","requestHandler","processRequest","streamingRequest","signal","aborted","connect","flush","_x6","_x7","abort","_callee10","numRetries","start","_this7","_context10","promise","Connecting","Date","now","connectAsync","getRetryDelay","Math","floor","random","_assertThisInitialized2","_get2","_inherits2","_possibleConstructorReturn2","_getPrototypeOf2","_classPrivateFieldGet4","_botframeworkStreaming","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","result","Super","NewTarget","constructor","_connectCalled","_handleNetworkInformationChange","_initialNetworkInformationType","WebSocketClientWithNetworkInformation","_WebSocketClient","_super","initialType","_classPrivateFieldGet3","WebSocketClient","module","n","t","o","i","f","u","code","p","require","__awaiter","thisArg","_arguments","P","generator","adopt","fulfilled","step","rejected","done","then","__generator","body","y","g","_","label","trys","ops","verb","Symbol","iterator","v","op","TypeError","pop","PayloadAssembler","subscribableStream_1","payloads_1","contentStream_1","streamManager","_byteOrderMark","_utf","header","payloadType","payloadLength","end","_onCompleted","onCompleted","getPayloadStream","createPayloadStream","onReceive","_contentLength","PayloadTypes","process","catch","close","closeStream","payloadFromJson","charCodeAt","slice","stripBOM","input","streamData","streamDataAsString","_a","read","processResponse","responsePayload","receiveResponse","processStreams","requestPayload","receiveRequest","path","_b","responseStream","contentAssembler","getPayloadAssembler","ContentStream","assembler","enumerable","configurable","getStream","cancel","readAll","bufferArray","join","stringToParse","allData","count","chunk","readToEnd","callback","size","CancelDisassembler","sender","disassemble","sendPayload","extendStatics","__extends","d","b","setPrototypeOf","__proto__","Array","String","__","HttpContentStreamDisassembler","payloadDisassembler_1","contentStream","content","streamLength","PayloadDisassembler","serialize","item","RequestDisassembler","payloadTypes_1","_c","_d","payload","_e","description","ResponseDisassembler","HttpContentStream","protocol_base_1","_f","generateGuid","BrowserWebSocket","RequestHandler","httpContentStream_1","requestHandler_1","streamingRequest_1","streamingResponse_1","index_browser_1","__createBinding","m","k","k2","__exportStar","PayloadReceiver","headerSerializer_1","payloadConstants_1","transportDisconnectedEvent_1","_receiver","receiver","receivePackets","receiveAction","_getStream","_receiveAction","event","TransportDisconnectedEvent","Empty","isConnected","disconnected","err","readSoFar","isStream","bytesActuallyRead","err_1","PayloadConstants","MaxHeaderLength","receive","_receiveHeaderBuffer","HeaderSerializer","deserialize","MaxPayloadLength","min","_receivePayloadBuffer","byteLength","PayloadSender","_sender","sentCallback","packet","writePacket","leftOver","sendHeaderBuffer","alloc","reason","TypeOffset","Encoding","Delimiter","TypeDelimiterOffset","headerLengthPadder","LengthLength","LengthOffset","LengthDelimeterOffset","IdOffset","IdDelimeterOffset","End","NotEnd","EndOffset","Terminator","TerminatorOffset","jsonBuffer","headerArray","split","headerEnd","Number","MinLength","match","IdLength","lengthValue","totalLength","padChar","lengthString","PayloadAssemblerManager","payloadAssembler_1","onReceiveResponse","onReceiveRequest","activeAssemblers","createPayloadAssembler","RequestManager","PendingRequest","_pendingRequests","pendingRequestCount","keys","signalResponse","requestId","pendingRequest","getResponse","rejectAllResponses","entries","SendOperations","cancelDisassembler_1","httpContentStreamDisassembler_1","requestDisassembler_1","responseDisassembler_1","payloadSender","sendRequest","sendResponse","sendCancelStream","cancelStream","StreamManager","onCancelStream","splice","indexOf","targetStream","ProtocolAdapter","payloadAssemblerManager_1","sendOperations_1","streamManager_1","requestManager","payloadReceiver","sendOperations","assemblerManager","getResponsePromise","contentStreamAssembler","bufferList","_write","_encoding","_onData","_read","total","onData","Duplex","uuid_1","v4","socket","webSocket","serverAddress","resolver","rejector","WebSocket","onerror","onopen","readyState","setOnMessageHandler","handler","bufferKey","packets","onmessage","evt","fileReader","FileReader","queueEntry","onload","target","readAsArrayBuffer","data","setOnErrorHandler","setOnCloseHandler","onclose","browserWebSocket_1","payloadTransport_1","protocolAdapter_1","webSocketTransport_1","_url","_requestHandler","_disconnectionHandler","_requestManager","onConnectionDisconnected","bind","_protocolAdapter","ws","transport","WebSocketTransport","args","browserWebSocketClient_1","_queue","_activeOffset","_activeReceiveCount","onError","onClose","_activeReceiveResolve","_activeReceiveReject","trySignalData","_active","available","copy","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","len","getLens","b64","validLen","lens","placeHoldersLen","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","output","extraBytes","parts","maxChunkLength","len2","base64","ieee754","SlowBuffer","INSPECT_MAX_BYTES","K_MAX_LENGTH","typedArraySupport","foo","createBuffer","RangeError","buf","arg","encodingOrOffset","allocUnsafe","fromString","ArrayBuffer","isView","fromArrayLike","isInstance","fromArrayBuffer","fromObject","toPrimitive","assertSize","fill","encoding","checked","string","isEncoding","actual","array","byteOffset","isBuffer","numberIsNaN","isArray","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","val","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","j","hexWrite","offset","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","species","poolSize","allocUnsafeSlow","_isBuffer","compare","x","list","pos","swap16","swap32","swap64","toLocaleString","equals","inspect","str","max","trim","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","MAX_ARGUMENTS_LENGTH","codePoints","fromCharCode","ret","out","toHex","bytes","checkOffset","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","INVALID_BASE64_RE","base64clean","units","Infinity","leadSurrogate","byteArray","c","hi","lo","src","dst","name","ReflectOwnKeys","R","ReflectApply","Function","ProcessEmitWarning","warning","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","isNaN","EventEmitter","init","once","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","that","_addListener","prepend","events","existing","newListener","emit","unshift","warned","w","emitter","onceWrapper","fired","removeListener","wrapFn","_onceWrap","state","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","spliceOne","index","eventListener","errorListener","getPrototypeOf","setMaxListeners","getMaxListeners","doError","er","context","listeners","addListener","on","prependListener","prependOnceListener","position","originalListener","off","removeAllListeners","rawListeners","eventNames","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","abs","log","LN2","ctor","superCtor","super_","TempCtor","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","runClearTimeout","marker","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","Item","noop","nextTick","title","browser","env","argv","version","versions","binding","cwd","chdir","umask","copyProps","SafeBuffer","Stream","EE","inherits","Readable","Writable","Transform","PassThrough","finished","pipeline","pipe","dest","source","ondata","pause","ondrain","readable","resume","_isStdio","onend","didOnEnd","destroy","cleanup","_inheritsLoose","subClass","superClass","codes","createErrorType","Base","getMessage","arg1","arg2","arg3","NodeError","_Base","oneOf","expected","thing","startsWith","search","endsWith","this_len","substring","determiner","msg","objectKeys","allowHalfOpen","_writableState","ended","onEndNT","self","highWaterMark","getBuffer","_readableState","destroyed","_transform","cb","global","ReadableState","EElistenerCount","OurUint8Array","_uint8ArrayToBuffer","_isUint8Array","debug","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","fn","isDuplex","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","decoder","_destroy","readableAddChunk","addToFront","skipChunkCheck","onEofChunk","chunkInvalid","addChunk","maybeReadMore","emitReadable","_undestroy","undestroy","isPaused","setEncoding","enc","head","clear","MAX_HWM","computeNewHighWaterMark","howMuchToRead","emitReadable_","flow","maybeReadMore_","pipeOnDrain","updateReadableListening","nReadingNextTick","resume_","fromList","first","consume","endReadable","endReadableNT","wState","xs","l","nOrig","doRead","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","cleanedUp","onfinish","needDrain","dests","ev","asyncIterator","_fromList","iterable","opts","window","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writecb","writechunk","rs","needTransform","writeencoding","transform","_flush","prefinish","err2","CorkedRequest","entry","finish","onCorkedFinish","WritableState","internalUtil","deprecate","realHasInstance","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","ending","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","bufferedRequest","lastBufferedRequest","pendingcb","prefinished","errorEmitted","bufferedRequestCount","corkedRequestsFree","writev","_writev","final","_final","writeAfterEnd","validChunk","decodeChunk","writeOrBuffer","isBuf","newChunk","last","doWrite","onwriteError","finishMaybe","onwriteStateUpdate","needFinish","clearBuffer","afterWrite","onwriteDrain","holder","allBuffers","callFinal","need","rState","endWritable","corkReq","current","hasInstance","object","cork","uncork","setDefaultEncoding","_Object$setPrototypeO","_defineProperty","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","wrapForNext","lastPromise","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","_Object$create","enumerableOnly","symbols","filter","sym","_objectSpread","getOwnPropertyDescriptors","defineProperties","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","custom","copyBuffer","tail","hasStrings","_getString","_getBuffer","nb","depth","customInspect","readableDestroyed","writableDestroyed","emitErrorNT","emitCloseNT","emitErrorAndCloseNT","ERR_STREAM_PREMATURE_CLOSE","called","_len","_key","isRequest","setHeader","eos","onlegacyfinish","writableEnded","readableEnded","onrequest","req","ERR_MISSING_ARGS","destroyer","closed","to","popCallback","destroys","reduce","ERR_INVALID_OPT_VALUE","highWaterMarkFrom","duplexKey","hwm","_normalizeEncoding","retried","normalizeEncoding","nenc","text","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckIncomplete","utf8CheckExtraBytes","utf8Text","utf8End","config","deprecated","trace","localStorage","_v","default","_v2","_v3","_v4","_nil","_version","_validate","_stringify","_parse","md5","unescape","encodeURIComponent","md5ToHexEncodedArray","wordsToMd5","bytesToWords","length32","hexTab","hex","charAt","getOutputLength","inputLength8","olda","oldb","oldc","oldd","md5ff","md5gg","md5hh","md5ii","safeAdd","length8","Uint32Array","lsw","bitRotateLeft","cnt","md5cmn","q","_default","uuid","getRandomValues","rng","rnds8","crypto","msCrypto","z","ROTL","sha1","K","H","N","ceil","M","W","T","byteToHex","_rng","_nodeId","_clockseq","_lastMSecs","_lastNSecs","v1","node","clockseq","seedBytes","msecs","nsecs","dt","tl","tmh","_md","URL","DNS","stringToBytes","hashfunc","generateUUID","namespace","rnds","_sha","_regex","validate","filename","_filename$split$rever","reverse","_filename$split$rever2","_toArray2","extname","deferred","_directLineStreaming","DirectLine","_async","_jwtDecode","_dedupeFilenames","wrapAjaxWithRetry","scheduler","notImplemented","assign","urlOrRequest","retryAfterValue","xhr","getResponseHeader","retryAfter","timer","flatMap","post","put","patch","getJSON","intervalRefreshToken","lifetimeRefreshToken","errorExpiredToken","errorConversationEnded","errorFailedToConnect","konsole","_console","optionalParams","services","secret","conversationStartProperties","locale","localeOnStartConversation","watermark","streamUrl","retries","async","ajax","parsedPollingInterval","pollingInterval","expiredTokenExhaustion","setConnectionStatusFallback","webSocketActivity$","pollingGetActivity$","obs","connectionStatus","of","startConversation","referenceGrammarId","refreshTokenLoop","take","connectionStatusFrom","connectionStatusTo","maxAttempts","attempts","currStatus","protectedConnectionStatus","user","userIdOnStartConversation","ajaxResponse","retryWhen","error$","mergeMap","delay","tokenRefreshSubscription","interval","checkConnection","expiredToken","unsubscribe","withCredentials","sessionId","catchExpiredToken","catchPostError","formData","attachmentNames","cleansedAttachments","FormData","append","Blob","responseType","_this8","poller$","trigger$","startTimestamp","Accept","empty","activityGroup","observableFromActivityGroup","_this9","observableWebSocket","reconnectToConversation","_this10","open","_this11","userId","parseToken","InvalidTokenError","nextArray","_parseFilename","_parseFilename2","nextValue","segment"],"sourceRoot":""}