{"version":3,"file":"static/js/vendor.initial~f6fbde19.6bb59bc0.js","mappings":"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","sources":["../../../../node_modules/.pnpm/@babel+runtime-corejs2@7.12.5/node_modules/@babel/runtime-corejs2/core-js/array/from.js","../../../../node_modules/.pnpm/@babel+runtime-corejs2@7.12.5/node_modules/@babel/runtime-corejs2/core-js/array/is-array.js","../../../../node_modules/.pnpm/@babel+runtime-corejs2@7.12.5/node_modules/@babel/runtime-corejs2/core-js/object/assign.js","../../../../node_modules/.pnpm/@babel+runtime-corejs2@7.12.5/node_modules/@babel/runtime-corejs2/core-js/object/create.js","../../../../node_modules/.pnpm/@babel+runtime-corejs2@7.12.5/node_modules/@babel/runtime-corejs2/core-js/object/entries.js","../../../../node_modules/.pnpm/@babel+runtime-corejs2@7.12.5/node_modules/@babel/runtime-corejs2/core-js/object/keys.js","../../../../node_modules/.pnpm/@babel+runtime-corejs2@7.12.5/node_modules/@babel/runtime-corejs2/core-js/object/values.js","../../../../node_modules/.pnpm/@babel+runtime-corejs2@7.12.5/node_modules/@babel/runtime-corejs2/core-js/parse-int.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/asyncToGenerator.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/classCallCheck.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/createClass.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/defineProperty.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/get.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/getPrototypeOf.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/inherits.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/interopRequireDefault.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/iterableToArray.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/nonIterableRest.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/nonIterableSpread.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/objectWithoutProperties.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/superPropBase.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/toArray.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/toConsumableArray.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/typeof.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../../../../node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/regenerator/index.js","../../../../node_modules/.pnpm/babel-runtime@6.26.0/node_modules/babel-runtime/core-js/get-iterator.js","../../../../node_modules/.pnpm/babel-runtime@6.26.0/node_modules/babel-runtime/core-js/is-iterable.js","../../../../node_modules/.pnpm/babel-runtime@6.26.0/node_modules/babel-runtime/core-js/object/assign.js","../../../../node_modules/.pnpm/babel-runtime@6.26.0/node_modules/babel-runtime/core-js/object/create.js","../../../../node_modules/.pnpm/babel-runtime@6.26.0/node_modules/babel-runtime/core-js/object/define-property.js","../../../../node_modules/.pnpm/babel-runtime@6.26.0/node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js","../../../../node_modules/.pnpm/babel-runtime@6.26.0/node_modules/babel-runtime/core-js/object/get-prototype-of.js","../../../../node_modules/.pnpm/babel-runtime@6.26.0/node_modules/babel-runtime/core-js/object/keys.js","../../../../node_modules/.pnpm/babel-runtime@6.26.0/node_modules/babel-runtime/core-js/object/set-prototype-of.js","../../../../node_modules/.pnpm/babel-runtime@6.26.0/node_modules/babel-runtime/core-js/promise.js","../../../../node_modules/.pnpm/babel-runtime@6.26.0/node_modules/babel-runtime/core-js/symbol.js","../../../../node_modules/.pnpm/babel-runtime@6.26.0/node_modules/babel-runtime/core-js/symbol/iterator.js","../../../../node_modules/.pnpm/babel-runtime@6.26.0/node_modules/babel-runtime/helpers/classCallCheck.js","../../../../node_modules/.pnpm/babel-runtime@6.26.0/node_modules/babel-runtime/helpers/createClass.js","../../../../node_modules/.pnpm/babel-runtime@6.26.0/node_modules/babel-runtime/helpers/defineProperty.js","../../../../node_modules/.pnpm/babel-runtime@6.26.0/node_modules/babel-runtime/helpers/extends.js","../../../../node_modules/.pnpm/babel-runtime@6.26.0/node_modules/babel-runtime/helpers/inherits.js","../../../../node_modules/.pnpm/babel-runtime@6.26.0/node_modules/babel-runtime/helpers/objectWithoutProperties.js","../../../../node_modules/.pnpm/babel-runtime@6.26.0/node_modules/babel-runtime/helpers/possibleConstructorReturn.js","../../../../node_modules/.pnpm/babel-runtime@6.26.0/node_modules/babel-runtime/helpers/slicedToArray.js","../../../../node_modules/.pnpm/babel-runtime@6.26.0/node_modules/babel-runtime/helpers/typeof.js","../../../../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js","../../../../node_modules/.pnpm/bluebird@3.7.2/node_modules/bluebird/js/browser/bluebird.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/dist/js/npm.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/affix.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/alert.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/button.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/carousel.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/collapse.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/dropdown.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/modal.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/popover.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/scrollspy.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/tab.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/tooltip.js","../../../../node_modules/.pnpm/bootstrap@3.3.7/node_modules/bootstrap/js/transition.js","../../../../node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/createDeferred.js","../../../../node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/dedupeFilenames.js","../../../../node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/directLine.js","../../../../node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/directLineStreaming.js","../../../../node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/parseFilename.js","../../../../node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/streaming/WebSocketClientWithNetworkInformation.js","../../../../node_modules/.pnpm/botframework-streaming@4.20.0/node_modules/botframework-streaming/lib/index-browser.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/callSuper.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/classCallCheck.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/createClass.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/defineProperty.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/extends.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/getPrototypeOf.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/inherits.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/interopRequireDefault.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/iterableToArray.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/nonIterableRest.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/nonIterableSpread.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/objectSpread2.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/slicedToArray.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/toConsumableArray.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/toPrimitive.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/toPropertyKey.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/typeof.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../../../../node_modules/.pnpm/@babel+runtime-corejs2@7.12.5/node_modules/@babel/runtime-corejs2/helpers/esm/assertThisInitialized.js","../../../../node_modules/.pnpm/@babel+runtime-corejs2@7.12.5/node_modules/@babel/runtime-corejs2/helpers/esm/extends.js","../../../../node_modules/.pnpm/@babel+runtime-corejs2@7.12.5/node_modules/@babel/runtime-corejs2/helpers/esm/inheritsLoose.js","../../../../node_modules/.pnpm/@babel+runtime-corejs2@7.12.5/node_modules/@babel/runtime-corejs2/helpers/esm/objectWithoutPropertiesLoose.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/callSuper.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/construct.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/createClass.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/extends.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/inherits.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/get.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/superPropBase.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/superPropGet.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/toArray.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../../../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js"],"sourcesContent":["module.exports = require(\"core-js/library/fn/array/from\");","module.exports = require(\"core-js/library/fn/array/is-array\");","module.exports = require(\"core-js/library/fn/object/assign\");","module.exports = require(\"core-js/library/fn/object/create\");","module.exports = require(\"core-js/library/fn/object/entries\");","module.exports = require(\"core-js/library/fn/object/keys\");","module.exports = require(\"core-js/library/fn/object/values\");","module.exports = require(\"core-js/library/fn/parse-int\");","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _classApplyDescriptorGet(receiver, descriptor) {\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n\n return descriptor.value;\n}\n\nmodule.exports = _classApplyDescriptorGet;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _classApplyDescriptorSet(receiver, descriptor, value) {\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n\n descriptor.value = value;\n }\n}\n\nmodule.exports = _classApplyDescriptorSet;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _classExtractFieldDescriptor(receiver, privateMap, action) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n }\n\n return privateMap.get(receiver);\n}\n\nmodule.exports = _classExtractFieldDescriptor;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var classApplyDescriptorGet = require(\"./classApplyDescriptorGet.js\");\n\nvar classExtractFieldDescriptor = require(\"./classExtractFieldDescriptor.js\");\n\nfunction _classPrivateFieldGet(receiver, privateMap) {\n var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"get\");\n return classApplyDescriptorGet(receiver, descriptor);\n}\n\nmodule.exports = _classPrivateFieldGet;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var classApplyDescriptorSet = require(\"./classApplyDescriptorSet.js\");\n\nvar classExtractFieldDescriptor = require(\"./classExtractFieldDescriptor.js\");\n\nfunction _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"set\");\n classApplyDescriptorSet(receiver, descriptor, value);\n return value;\n}\n\nmodule.exports = _classPrivateFieldSet;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var superPropBase = require(\"./superPropBase.js\");\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get;\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _get(target, property, receiver || target);\n}\n\nmodule.exports = _get;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _typeof = require(\"@babel/runtime/helpers/typeof\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}\n\nmodule.exports = _toArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = require(\"regenerator-runtime\");\n","module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-descriptor\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/get-prototype-of\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/promise\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\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(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\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","/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2018 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n/**\n * bluebird build version 3.7.2\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_==\"function\"&&_dereq_;for(var o=0;o 0) {\n _drainQueueStep(queue);\n }\n}\n\nfunction _drainQueueStep(queue) {\n var fn = queue.shift();\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n } else {\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n}\n\nAsync.prototype._drainQueues = function () {\n _drainQueue(this._normalQueue);\n this._reset();\n this._haveDrainedQueues = true;\n _drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n this._schedule(this.drainQueues);\n }\n};\n\nAsync.prototype._reset = function () {\n this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":26,\"./schedule\":29}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n context.promiseRejectionQueued = true;\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n if (((this._bitField & 50397184) === 0)) {\n this._resolveCallback(context.target);\n }\n};\n\nvar bindingRejected = function(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n ret._propagateFrom(this, 1);\n var target = this._target();\n ret._setBoundTo(maybePromise);\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n maybePromise._then(\n bindingResolved, bindingRejected, undefined, ret, context);\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & (~2097152);\n }\n};\n\nPromise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n try { if (Promise === bluebird) Promise = old; }\n catch (e) {}\n return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":22}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar cr = Object.create;\nif (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (!true) {\nvar makeMethodCaller = function (methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n var ret = cache[name];\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n cache[\" size\"] = keys.length - 256;\n }\n }\n return ret;\n};\n\ngetMethodCaller = function(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n return fn;\n}\n\nfunction caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);;\n if (!true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n if (maybeCaller !== null) {\n return this._then(\n maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n return obj[this];\n}\nfunction indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n var isIndex = (typeof propertyName === \"number\");\n var getter;\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n},{\"./util\":36}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n var promise = this;\n var child = promise;\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n break;\n }\n\n var parent = promise._cancellationParent;\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n promise._setWillBeCancelled();\n child = promise;\n promise = parent;\n }\n }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n return this._branchesRemainingToCancel === undefined ||\n this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n this._invokeOnCancel();\n return true;\n } else {\n this._branchHasCancelled();\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n return true;\n }\n }\n return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n};\n\nPromise.prototype._cancel = function() {\n if (!this._isCancellable()) return;\n this._setCancelled();\n async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n var onCancelCallback = this._onCancel();\n this._unsetOnCancel();\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n this._unsetOnCancel();\n }\n};\n\nPromise.prototype._resultCancelled = function() {\n this.cancel();\n};\n\n};\n\n},{\"./util\":36}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n return function(e) {\n var boundTo = promise._boundValue();\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error ||\n (item != null && item.prototype instanceof Error)) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n return tryCatch(cb).call(boundTo, e);\n }\n }\n return NEXT_FILTER;\n };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":13,\"./util\":36}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n};\n\nContext.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n return null;\n};\n\nfunction createContext() {\n if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n var lastIndex = contextStack.length - 1;\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n Context.deactivateLongStackTraces = function() {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n Promise.prototype._promiseCreated = function() {\n var ctx = this._peekContext();\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n};\nreturn Context;\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context,\n enableAsyncHooks, disableAsyncHooks) {\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar es5 = _dereq_(\"./es5\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n (true ||\n util.env(\"BLUEBIRD_DEBUG\") ||\n util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nvar deferUnhandledRejectionCheck;\n(function() {\n var promises = [];\n\n function unhandledRejectionCheck() {\n for (var i = 0; i < promises.length; ++i) {\n promises[i]._notifyUnhandledRejection();\n }\n unhandledRejectionClear();\n }\n\n function unhandledRejectionClear() {\n promises.length = 0;\n }\n\n deferUnhandledRejectionCheck = function(promise) {\n promises.push(promise);\n setTimeout(unhandledRejectionCheck, 1);\n };\n\n es5.defineProperty(Promise, \"_unhandledRejectionCheck\", {\n value: unhandledRejectionCheck\n });\n es5.defineProperty(Promise, \"_unhandledRejectionClear\", {\n value: unhandledRejectionClear\n });\n})();\n\nPromise.prototype.suppressUnhandledRejections = function() {\n var target = this._target();\n target._bitField = ((target._bitField & (~1048576)) |\n 524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n this._setRejectionIsUnhandled();\n deferUnhandledRejectionCheck(this);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\",\n unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n this._setUnhandledRejectionIsNotified();\n fireRejectionEvent(\"unhandledRejection\",\n possiblyUnhandledRejection, reason, this);\n }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & (~1048576);\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n this._notifyUnhandledRejectionIsHandled();\n }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n var context = Promise._getContext();\n possiblyUnhandledRejection = util.contextBind(context, fn);\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n var context = Promise._getContext();\n unhandledRejectionHandled = util.contextBind(context, fn);\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace;\n config.longStackTraces = true;\n disableLongStackTraces = function() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Promise.prototype._dereferenceTrace = Promise_dereferenceTrace;\n Context.deactivateLongStackTraces();\n config.longStackTraces = false;\n };\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;\n Context.activateLongStackTraces();\n }\n};\n\nPromise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n};\n\n\nvar legacyHandlers = {\n unhandledrejection: {\n before: function() {\n var ret = util.global.onunhandledrejection;\n util.global.onunhandledrejection = null;\n return ret;\n },\n after: function(fn) {\n util.global.onunhandledrejection = fn;\n }\n },\n rejectionhandled: {\n before: function() {\n var ret = util.global.onrejectionhandled;\n util.global.onrejectionhandled = null;\n return ret;\n },\n after: function(fn) {\n util.global.onrejectionhandled = fn;\n }\n }\n};\n\nvar fireDomEvent = (function() {\n var dispatch = function(legacy, e) {\n if (legacy) {\n var fn;\n try {\n fn = legacy.before();\n return !util.global.dispatchEvent(e);\n } finally {\n legacy.after(fn);\n }\n } else {\n return !util.global.dispatchEvent(e);\n }\n };\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n name = name.toLowerCase();\n var eventData = {\n detail: event,\n cancelable: true\n };\n var domEvent = new CustomEvent(name, eventData);\n es5.defineProperty(\n domEvent, \"promise\", {value: event.promise});\n es5.defineProperty(\n domEvent, \"reason\", {value: event.reason});\n\n return dispatch(legacyHandlers[name], domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n name = name.toLowerCase();\n var domEvent = new Event(name, {\n cancelable: true\n });\n domEvent.detail = event;\n es5.defineProperty(domEvent, \"promise\", {value: event.promise});\n es5.defineProperty(domEvent, \"reason\", {value: event.reason});\n return dispatch(legacyHandlers[name], domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function(name, event) {\n name = name.toLowerCase();\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name, false, true,\n event);\n return dispatch(legacyHandlers[name], domEvent);\n };\n }\n } catch (e) {}\n return function() {\n return false;\n };\n})();\n\nvar fireGlobalEvent = (function() {\n if (util.isNode) {\n return function() {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function() {\n return false;\n };\n }\n return function(name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function(name, promise, child) {\n return {promise: promise, child: child};\n },\n warning: function(name, warning) {\n return {warning: warning};\n },\n unhandledRejection: function (name, reason, promise) {\n return {reason: reason, promise: promise};\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n var globalEventFired = false;\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n try {\n domEventFired = fireDomEvent(name,\n eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n opts = Object(opts);\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\n \"cannot enable cancellation after promises are in use\");\n }\n Promise.prototype._clearCancellationData =\n cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback =\n cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n if (\"asyncHooks\" in opts && util.nodeSupportsAsyncResource) {\n var prev = config.asyncHooks;\n var cur = !!opts.asyncHooks;\n if (prev !== cur) {\n config.asyncHooks = cur;\n if (cur) {\n enableAsyncHooks();\n } else {\n disableAsyncHooks();\n }\n }\n }\n return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._dereferenceTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n var promise = this;\n try {\n executor(resolve, reject, function(onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" +\n util.toString(onCancel));\n }\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n}\n\nfunction cancellationOnCancel() {\n return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n var ret = this._boundTo;\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\",\n parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n}\n\nfunction longStackTracesDereferenceTrace() {\n this._trace = undefined;\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n parent) {\n if (returnValue === undefined && promiseCreated !== null &&\n wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n var stack = cleanStack(traceLines);\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] +\n \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n for (var i = 0; i < traceLines.length; ++i) {\n\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n break;\n }\n }\n\n }\n }\n var msg = \"a promise was created in a \" + name +\n \"handler \" + handlerLine + \"but was not returned from it, \" +\n \"see http://goo.gl/rRqMUw\" +\n creatorLine;\n promise._warn(msg, true, promiseCreated);\n }\n}\n\nfunction deprecated(name, replacement) {\n var message = name +\n \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n}\n\nfunction reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 ||\n ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n stacks.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction removeCommonRoots(stacks) {\n var current = stacks[0];\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n current = prev;\n }\n}\n\nfunction cleanStack(stack) {\n var ret = [];\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line ||\n stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n ret.push(line);\n }\n }\n return ret;\n}\n\nfunction stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n return stack;\n}\n\nfunction parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0\n ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" ||\n typeof console.log === \"object\") {\n console.log(message);\n }\n }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n}\n\nfunction formatNonError(obj) {\n var str;\n if (typeof obj === \"function\") {\n str = \"[function \" +\n (obj.name || \"anonymous\") +\n \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\"\n ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n }\n catch(e) {\n\n }\n }\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n var maxChars = 41;\n if (str.length < maxChars) {\n return str;\n }\n return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = (firstLineError.stack || \"\").split(\"\\n\");\n var lastStackLines = (lastLineError.stack || \"\").split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n if (info) {\n if (info.fileName === firstFileName &&\n (firstIndex <= info.line && info.line <= lastIndex)) {\n return true;\n }\n }\n return false;\n };\n}\n\nfunction CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n length = this._length = i;\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n cycleEdgeNode._parent.uncycle();\n cycleEdgeNode._length =\n cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n var currentChildLength = cycleEdgeNode._length + 1;\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n return;\n }\n }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n\n var trace = this;\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n var v8stackFormatter = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" &&\n typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function(line) {\n return bluebirdFramePattern.test(line);\n };\n return function(receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n var err = new Error();\n\n if (typeof err.stack === \"string\" &&\n err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n try { throw new Error(); }\n catch(e) {\n hasStackAfterThrow = (\"stack\" in e);\n }\n if (!(\"stack\" in err) && hasStackAfterThrow &&\n typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n try { throw new Error(); }\n catch(e) { o.stack = e.stack; }\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((typeof error === \"object\" ||\n typeof error === \"function\") &&\n error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function (message) {\n console.warn(message);\n };\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function(message, isSoft) {\n var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n console.warn(color + message + \"\\u001b[0m\\n\");\n };\n } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n printWarning = function(message, isSoft) {\n console.warn(\"%c\" + message,\n isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n}\n\nvar config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false,\n asyncHooks: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n asyncHooks: function() {\n return config.asyncHooks;\n },\n longStackTraces: function() {\n return config.longStackTraces;\n },\n warnings: function() {\n return config.warnings;\n },\n cancellation: function() {\n return config.cancellation;\n },\n monitoring: function() {\n return config.monitoring;\n },\n propagateFromFunction: function() {\n return propagateFromFunction;\n },\n boundValueFunction: function() {\n return boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n};\n};\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],10:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n return this.value;\n}\nfunction thrower() {\n throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n return this._then(\n thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(\n undefined, thrower, undefined, {reason: reason}, undefined);\n } else {\n var _reason = arguments[1];\n var handler = function() {throw _reason;};\n return this.caught(reason, handler);\n }\n};\n\nPromise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n undefined, returner, undefined, {value: value}, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n var handler = function() {return _value;};\n return this.caught(value, handler);\n }\n};\n};\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n},{}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\",\n typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n inherits(SubError, Error);\n return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n _TypeError = TypeError;\n _RangeError = RangeError;\n} catch(e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n level--;\n return ret;\n};\n\nfunction OperationalError(message) {\n if (!(this instanceof OperationalError))\n return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n}\n\nmodule.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n};\n\n},{\"./es5\":13,\"./util\":36}],13:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n \"use strict\";\n return this === undefined;\n})();\n\nif (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n} else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function (o) {\n var ret = [];\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n return ret;\n };\n\n var ObjectGetDescriptor = function(o, key) {\n return {value: o[key]};\n };\n\n var ObjectDefineProperty = function (o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function (obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function (obj) {\n try {\n return Object(obj).constructor.prototype;\n }\n catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function (obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n }\n catch(e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function() {\n return true;\n }\n };\n}\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n ctx.cancelPromise = null;\n return true;\n }\n return false;\n}\n\nfunction succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler()\n ? handler.call(promise._boundValue())\n : handler.call(promise._boundValue(), reasonOrValue);\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n var maybePromise = tryConvertToPromise(ret, promise);\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason =\n new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(\n new FinallyHandlerCancelReaction(this));\n }\n }\n return maybePromise._then(\n succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success,\n fail,\n undefined,\n new PassThroughHandlerContext(this, type, handler),\n undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler,\n 0,\n finallyHandler,\n finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n if(len === 1) {\n return this._passThrough(handlerOrPredicate,\n 1,\n undefined,\n finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\n \"tapCatch statement predicate: \"\n + \"expecting an object but got \" + util.classString(item)\n ));\n }\n }\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this),\n 1,\n undefined,\n finallyHandler);\n }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":7,\"./util\":36}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n apiRejection,\n INTERNAL,\n tryConvertToPromise,\n Proxyable,\n debug) {\nvar errors = _dereq_(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n var result = tryCatch(yieldHandlers[i])(value);\n traceParent._popContext();\n if (result === errorObj) {\n traceParent._pushContext();\n var ret = Promise.reject(errorObj.e);\n traceParent._popContext();\n return ret;\n }\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n this._promise = internal.lastly(function() {\n return _finallyPromise;\n });\n internal._captureStackTrace();\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n }\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\"\n ? [yieldHandler].concat(yieldHandlers)\n : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n this._promise = this._generator = null;\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n this._finallyPromise = null;\n }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n var result;\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\n \"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n reason);\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n result = tryCatch(this._generator[\"return\"]).call(this._generator,\n undefined);\n this._promise._popContext();\n }\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n this._yieldedPromise = null;\n this._promise._pushContext();\n var result = tryCatch(this._generator.next).call(this._generator, value);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n this._yieldedPromise = null;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n var result = tryCatch(this._generator[\"throw\"])\n .call(this._generator, reason);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n};\n\nPromiseSpawn.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver =\n this._generatorFunction = undefined;\n this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n if (result === errorObj) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n if (result.done === true) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n if (!(maybePromise instanceof Promise)) {\n maybePromise =\n promiseFromYieldHandler(maybePromise,\n this._yieldHandlers,\n this._promise);\n if (maybePromise === null) {\n this._promiseRejected(\n new TypeError(\n \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n \"From coroutine:\\u000a\" +\n this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n )\n );\n return;\n }\n }\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n this._yieldedPromise = maybePromise;\n maybePromise._proxy(this, null);\n } else if (((bitField & 33554432) !== 0)) {\n Promise._async.invoke(\n this._promiseFulfilled, this, maybePromise._value()\n );\n } else if (((bitField & 16777216) !== 0)) {\n Promise._async.invoke(\n this._promiseRejected, this, maybePromise._reason()\n );\n } else {\n this._promiseCancelled();\n }\n }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n spawn._promiseFulfilled(undefined);\n return ret;\n };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n spawn._run(Promise.spawn);\n return ret;\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (!true) {\nif (canEvaluate) {\n var thenCallback = function(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function(total) {\n var props = new Array(total);\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i+1);\n }\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n\n\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n\n code = code.replace(/\\[TheName\\]/g, name)\n .replace(/\\[TheTotal\\]/g, total)\n .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n .replace(/\\[TheProperties\\]/g, assignment)\n .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n (tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function (reason) {\n this._reject(reason);\n };\n}}\n\nPromise.join = function () {\n var last = arguments.length - 1;\n var fn;\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n maybePromise._then(callbacks[i], reject,\n undefined, ret, holder);\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if (((bitField & 33554432) !== 0)) {\n callbacks[i].call(ret,\n maybePromise._value(), holder);\n } else if (((bitField & 16777216) !== 0)) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var context = Promise._getContext();\n holder.fn = util.contextBind(context, holder.fn);\n }\n ret._setAsyncGuaranteed();\n ret._setOnCancel(holder);\n }\n return ret;\n }\n }\n }\n var args = [].slice.call(arguments);;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":36}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n this._promise._captureStackTrace();\n var context = Promise._getContext();\n this._callback = util.contextBind(context, fn);\n this._preservedValues = _filter === INTERNAL\n ? new Array(this.length())\n : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n if (util.isArray(promises)) {\n for (var i = 0; i < promises.length; ++i) {\n var maybePromise = promises[i];\n if (maybePromise instanceof Promise) {\n maybePromise.suppressUnhandledRejections();\n }\n }\n }\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = (index * -1) - 1;\n values[index] = value;\n if (limit >= 1) {\n this._inFlight--;\n this._drainQueue();\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n this._queue.push(index);\n return false;\n }\n if (preservedValues !== null) preservedValues[index] = value;\n\n var promise = this._promise;\n var callback = this._callback;\n var receiver = promise._boundValue();\n promise._pushContext();\n var ret = tryCatch(callback).call(receiver, value, index, length);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n promise\n );\n if (ret === errorObj) {\n this._reject(ret.e);\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n maybePromise._proxy(this, (index + 1) * -1);\n return false;\n } else if (((bitField & 33554432) !== 0)) {\n ret = maybePromise._value();\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(maybePromise._reason());\n return true;\n } else {\n this._cancel();\n return true;\n }\n }\n values[index] = ret;\n }\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n return true;\n }\n return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n this._promiseFulfilled(values[index], index);\n }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n ret.length = j;\n this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n if (options !== undefined) {\n if (typeof options === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(\n new TypeError(\"'concurrency' must be a number but it is \" +\n util.classString(options.concurrency)));\n }\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\n \"options argument must be an object but it is \" +\n util.classString(options)));\n }\n }\n limit = typeof limit === \"number\" &&\n isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n};\n\n\n};\n\n},{\"./util\":36}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return function () {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value = tryCatch(fn).apply(this, arguments);\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.method\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value;\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.try\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n};\n};\n\n},{\"./util\":36}],20:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n return obj instanceof Error &&\n es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n var ret;\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n }\n util.markAsOriginatingFromRejection(obj);\n return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n return function(err, value) {\n if (promise === null) return;\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n promise._attachExtraTrace(wrapped);\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);;\n promise._fulfill(args);\n }\n promise = null;\n };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret =\n tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nfunction successAdapter(val, nodeback) {\n var promise = this;\n var receiver = promise._boundValue();\n var ret = val === undefined\n ? tryCatch(nodeback).call(receiver, null)\n : tryCatch(nodeback).call(receiver, null, val);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\nfunction errorAdapter(reason, nodeback) {\n var promise = this;\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n this._then(\n adapter,\n errorAdapter,\n undefined,\n this,\n nodeback\n );\n }\n return this;\n};\n};\n\n},{\"./util\":36}],22:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n return new TypeError(\"circular promise resolution chain\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\nutil.setReflectHandler(reflectHandler);\n\nvar getDomain = function() {\n var domain = process.domain;\n if (domain === undefined) {\n return null;\n }\n return domain;\n};\nvar getContextDefault = function() {\n return null;\n};\nvar getContextDomain = function() {\n return {\n domain: getDomain(),\n async: null\n };\n};\nvar AsyncResource = util.isNode && util.nodeSupportsAsyncResource ?\n _dereq_(\"async_hooks\").AsyncResource : null;\nvar getContextAsyncHooks = function() {\n return {\n domain: getDomain(),\n async: new AsyncResource(\"Bluebird::Promise\")\n };\n};\nvar getContext = util.isNode ? getContextDomain : getContextDefault;\nutil.notEnumerableProp(Promise, \"_getContext\", getContext);\nvar enableAsyncHooks = function() {\n getContext = getContextAsyncHooks;\n util.notEnumerableProp(Promise, \"_getContext\", getContextAsyncHooks);\n};\nvar disableAsyncHooks = function() {\n getContext = getContextDomain;\n util.notEnumerableProp(Promise, \"_getContext\", getContextDomain);\n};\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n _dereq_(\"./promise_array\")(Promise, INTERNAL,\n tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\n\nvar debug = _dereq_(\"./debuggability\")(Promise, Context,\n enableAsyncHooks, disableAsyncHooks);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n\n}\n\nfunction Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._resolveFromExecutor(executor);\n this._promiseCreated();\n this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" +\n \"expecting an object but got \" + util.classString(item));\n }\n }\n catchInstances.length = j;\n fn = arguments[i];\n\n if (typeof fn !== \"function\") {\n throw new TypeError(\"The last argument to .catch() \" +\n \"must be a function, got \" + util.toString(fn));\n }\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n return this._then(reflectHandler,\n reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 &&\n typeof didFulfill !== \"function\" &&\n typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" +\n util.classString(didFulfill);\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n this._warn(msg);\n }\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n var promise =\n this._then(didFulfill, didReject, undefined, undefined, undefined);\n promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n return ret;\n};\n\nPromise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.all = function (promises) {\n return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._setFulfilled();\n ret._rejectionHandler0 = obj;\n }\n return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._rejectCallback(reason, true);\n return ret;\n};\n\nPromise.setScheduler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n didFulfill,\n didReject,\n _, receiver,\n internalData\n) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n var target = this._target();\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n promise._captureStackTrace();\n if (receiver === undefined &&\n ((this._bitField & 2097152) !== 0)) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var context = getContext();\n if (!((bitField & 50397184) === 0)) {\n var handler, value, settler = target._settlePromiseCtx;\n if (((bitField & 33554432) !== 0)) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if (((bitField & 16777216) !== 0)) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n target._attachExtraTrace(value);\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: util.contextBind(context, handler),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise,\n receiver, context);\n }\n\n return promise;\n};\n\nPromise.prototype._length = function () {\n return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n this._bitField = (this._bitField & -65536) |\n (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n this._bitField = this._bitField | 65536;\n this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n if (async.hasCustomScheduler()) return;\n var bitField = this._bitField;\n this._bitField = bitField |\n (((bitField & 536870912) >> 2) ^\n 134217728);\n};\n\nPromise.prototype._setNoAsyncGuarantee = function() {\n this._bitField = (this._bitField | 536870912) &\n (~134217728);\n};\n\nPromise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[\n index * 4 - 4 + 3];\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n return this[\n index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n var receiver = follower._receiverAt(0);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n var reject = follower._rejectionHandlerAt(index);\n var promise = follower._promiseAt(index);\n var receiver = follower._receiverAt(index);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n fulfill,\n reject,\n promise,\n receiver,\n context\n) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 = util.contextBind(context, fulfill);\n }\n if (typeof reject === \"function\") {\n this._rejectionHandler0 = util.contextBind(context, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n if (typeof fulfill === \"function\") {\n this[base + 0] =\n util.contextBind(context, fulfill);\n }\n if (typeof reject === \"function\") {\n this[base + 1] =\n util.contextBind(context, reject);\n }\n }\n this._setLength(index + 1);\n return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n if (((this._bitField & 117506048) !== 0)) return;\n if (value === this)\n return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n return;\n }\n\n var bitField = promise._bitField;\n if (((bitField & 50397184) === 0)) {\n var len = this._length();\n if (len > 0) promise._migrateCallback0(this);\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n this._setFollowing();\n this._setLength(0);\n this._setFollowee(maybePromise);\n } else if (((bitField & 33554432) !== 0)) {\n this._fulfill(promise._value());\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n this._reject(reason);\n }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" +\n util.classString(reason);\n this._warn(message, true);\n }\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n this._captureStackTrace();\n this._pushContext();\n var synchronous = true;\n var r = this._execute(executor, function(value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n synchronous = false;\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n handler, receiver, value, promise\n) {\n var bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n promise._pushContext();\n var x;\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" +\n util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n var promiseCreated = promise._popContext();\n bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n promise._resolveCallback(x);\n }\n};\n\nPromise.prototype._target = function() {\n var ret = this;\n while (ret._isFollowing()) ret = ret._followee();\n return ret;\n};\n\nPromise.prototype._followee = function() {\n return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = ((bitField & 134217728) !== 0);\n if (((bitField & 65536) !== 0)) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext &&\n receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if (((bitField & 33554432) !== 0)) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n if (((bitField & 33554432) !== 0)) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n var promise = this._promise0;\n var receiver = this._receiverAt(0);\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n var base = index * 4 - 4;\n this[base + 2] =\n this[base + 3] =\n this[base + 0] =\n this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n if (value === this) {\n var err = makeSelfResolutionError();\n this._attachExtraTrace(err);\n return this._reject(err);\n }\n this._setFulfilled();\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if (((bitField & 134217728) !== 0)) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n this._dereferenceTrace();\n }\n};\n\nPromise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n this._setRejected();\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, value);\n }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, reason);\n }\n};\n\nPromise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = (bitField & 65535);\n\n if (len > 0) {\n if (((bitField & 16842752) !== 0)) {\n var reason = this._fulfillmentHandler0;\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n this._fulfillPromises(len, value);\n }\n this._setLength(0);\n }\n this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n var bitField = this._bitField;\n if (((bitField & 33554432) !== 0)) {\n return this._rejectionHandler0;\n } else if (((bitField & 16777216) !== 0)) {\n return this._fulfillmentHandler0;\n }\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.toStringTag) {\n es5.defineProperty(Promise.prototype, Symbol.toStringTag, {\n get: function () {\n return \"Object\";\n }\n });\n}\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n};\n\nutil.notEnumerableProp(Promise,\n \"_makeSelfResolutionError\",\n makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n Promise, PromiseArray, tryConvertToPromise, INTERNAL, async);\nPromise.Promise = Promise;\nPromise.version = \"3.7.2\";\n_dereq_('./call_get.js')(Promise);\n_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./nodeify.js')(Promise);\n_dereq_('./promisify.js')(Promise, INTERNAL);\n_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./settle.js')(Promise, PromiseArray, debug);\n_dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n_dereq_('./timers.js')(Promise, INTERNAL, debug);\n_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n_dereq_('./any.js')(Promise);\n_dereq_('./each.js')(Promise, INTERNAL);\n_dereq_('./filter.js')(Promise, INTERNAL);\n \n util.toFastProperties(Promise); \n util.toFastProperties(Promise.prototype); \n function fillTypes(value) { \n var p = new Promise(INTERNAL); \n p._fulfillmentHandler0 = value; \n p._rejectionHandler0 = value; \n p._promise0 = value; \n p._receiver0 = value; \n } \n // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n fillTypes({a: 1}); \n fillTypes({b: 2}); \n fillTypes({c: 3}); \n fillTypes(1); \n fillTypes(function(){}); \n fillTypes(undefined); \n fillTypes(false); \n fillTypes(new Promise(INTERNAL)); \n debug.setBounds(Async.firstLineError, util.lastLineError); \n return Promise; \n\n};\n\n},{\"./any.js\":1,\"./async\":2,\"./bind\":3,\"./call_get.js\":5,\"./cancel\":6,\"./catch_filter\":7,\"./context\":8,\"./debuggability\":9,\"./direct_resolve\":10,\"./each.js\":11,\"./errors\":12,\"./es5\":13,\"./filter.js\":14,\"./finally\":15,\"./generators.js\":16,\"./join\":17,\"./map.js\":18,\"./method\":19,\"./nodeback\":20,\"./nodeify.js\":21,\"./promise_array\":23,\"./promisify.js\":24,\"./props.js\":25,\"./race.js\":27,\"./reduce.js\":28,\"./settle.js\":30,\"./some.js\":31,\"./synchronous_inspection\":32,\"./thenables\":33,\"./timers.js\":34,\"./using.js\":35,\"./util\":36,\"async_hooks\":undefined}],23:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n switch(val) {\n case -2: return [];\n case -3: return {};\n case -6: return new Map();\n }\n}\n\nfunction PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n values.suppressUnhandledRejections();\n }\n promise._setOnCancel(this);\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if (((bitField & 50397184) === 0)) {\n this._promise._setAsyncGuaranteed();\n return values._then(\n init,\n this._reject,\n undefined,\n this,\n resolveValueIfEmpty\n );\n } else if (((bitField & 33554432) !== 0)) {\n values = values._value();\n } else if (((bitField & 16777216) !== 0)) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n values = util.asArray(values);\n if (values === null) {\n var err = apiRejection(\n \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n this._promise._rejectCallback(err, false);\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n }\n else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n return;\n }\n this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if (((bitField & 50397184) === 0)) {\n maybePromise._proxy(this, i);\n this._values[i] = maybePromise;\n } else if (((bitField & 33554432) !== 0)) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if (((bitField & 16777216) !== 0)) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n this._values = null;\n this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n this._values = null;\n this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n this._cancel();\n return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n this._reject(reason);\n return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n if (this._isResolved()) return;\n var values = this._values;\n this._cancel();\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":36}],24:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = _dereq_(\"./util\");\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = _dereq_(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n \"arity\", \"length\",\n \"name\",\n \"arguments\",\n \"caller\",\n \"callee\",\n \"prototype\",\n \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n return util.isIdentifier(name) &&\n name.charAt(0) !== \"_\" &&\n name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n }\n catch (e) {\n return false;\n }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix,\n defaultPromisified);\n return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\"\n .replace(\"%s\", suffix));\n }\n }\n }\n }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter\n ? true : defaultFilter(key, value, obj);\n if (typeof value === \"function\" &&\n !isPromisified(value) &&\n !hasPromisified(obj, key, suffix) &&\n filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (!true) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n for(var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n return util.filledRange(\n Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined\n ? \"ret = callback({{args}}, nodeback); break;\\n\"\n : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] +\":\" +\n generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", (shouldProxyThis\n ? \"ret = callback.apply(this, args);\\n\"\n : \"ret = callback.apply(receiver, args);\\n\"));\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\"\n ? (\"this != null ? this['\"+callback+\"'] : fn\")\n : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n .replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\",\n \"fn\",\n \"receiver\",\n \"withAppended\",\n \"maybeWrapAsError\",\n \"nodebackForPromise\",\n \"tryCatch\",\n \"errorObj\",\n \"notEnumerableProp\",\n \"INTERNAL\",\n body)(\n Promise,\n fn,\n receiver,\n withAppended,\n maybeWrapAsError,\n nodebackForPromise,\n util.tryCatch,\n util.errorObj,\n util.notEnumerableProp,\n INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = (function() {return this;})();\n var method = callback;\n if (typeof method === \"string\") {\n callback = fn;\n }\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n var cb = typeof method === \"string\" && this !== defaultThis\n ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch(e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n ? makeNodePromisifiedEval\n : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods =\n promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i+= 2) {\n var key = methods[i];\n var fn = methods[i+1];\n var promisifiedKey = key + suffix;\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] =\n makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function() {\n return makeNodePromisified(key, THIS, key,\n fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n util.toFastProperties(obj);\n return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined,\n callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n if (isPromisified(fn)) {\n return fn;\n }\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && typeof target !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n\n var keys = util.inheritedDataKeys(target);\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n if (keys[i] !== \"constructor\" &&\n util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier,\n multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar isObject = util.isObject;\nvar es5 = _dereq_(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n})();\n\nvar entriesToMap = function(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n this.constructor$(entries);\n this._isMap = isMap;\n this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n var val;\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n this._resolve(val);\n return true;\n }\n return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n};\n\nfunction props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(\n Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n return ret;\n}\n\nPromise.prototype.props = function () {\n return props(this);\n};\n\nPromise.props = function (promises) {\n return props(promises);\n};\n};\n\n},{\"./es5\":13,\"./util\":36}],26:[function(_dereq_,module,exports){\n\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n}\n\nfunction Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n var length = this.length();\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = arg;\n this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n this._pushOne(receiver);\n this._pushOne(arg);\n return;\n }\n var j = this._front + length - 3;\n this._checkCapacity(length);\n var wrapMask = this._capacity - 1;\n this[(j + 0) & wrapMask] = fn;\n this[(j + 1) & wrapMask] = receiver;\n this[(j + 2) & wrapMask] = arg;\n this._length = length;\n};\n\nQueue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n\n this[front] = undefined;\n this._front = (front + 1) & (this._capacity - 1);\n this._length--;\n return ret;\n};\n\nQueue.prototype.length = function () {\n return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = (front + length) & (oldCapacity - 1);\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\n\nvar raceLater = function (promise) {\n return promise.then(function(array) {\n return race(array, promise);\n });\n};\n\nfunction race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null)\n return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n return ret;\n}\n\nPromise.race = function (promises) {\n return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n return race(this, undefined);\n};\n\n};\n\n},{\"./util\":36}],28:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var context = Promise._getContext();\n this._fn = util.contextBind(context, fn);\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n initialValue._attachCancellationCallback(this);\n }\n this._initialValue = initialValue;\n this._currentCancellable = null;\n if(_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n this._promise._captureStackTrace();\n this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n if (this._eachValues !== undefined &&\n this._eachValues !== null &&\n accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n this._resolve(this._eachValues !== undefined ? this._eachValues\n : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n this._promise._resolveCallback(value);\n this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n this._resultCancelled$();\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n for (var j = i; j < length; ++j) {\n var maybePromise = values[j];\n if (maybePromise instanceof Promise) {\n maybePromise.suppressUnhandledRejections();\n }\n }\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n\n if ((i & 127) === 0) {\n value._setNoAsyncGuarantee();\n }\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value\n ._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n}\n\nfunction gotAccum(accum) {\n this.accum = accum;\n this.array._gotAccum(accum);\n var value = tryConvertToPromise(this.value, this.array._promise);\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n}\n\nfunction gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n promise._pushContext();\n var ret;\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(),\n this.accum, value, this.index, this.length);\n }\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n promise\n );\n return ret;\n}\n};\n\n},{\"./util\":36}],29:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode\n ? function(fn) { GlobalSetImmediate.call(global, fn); }\n : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n schedule = function(fn) {\n nativePromise.then(fn);\n };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n !(typeof window !== \"undefined\" &&\n window.navigator &&\n (window.navigator.standalone || window.cordova)) &&\n (\"classList\" in document.documentElement)) {\n schedule = (function() {\n var div = document.createElement(\"div\");\n var opts = {attributes: true};\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function() {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function() {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n })();\n} else if (typeof setImmediate !== \"undefined\") {\n schedule = function (fn) {\n setImmediate(fn);\n };\n} else if (typeof setTimeout !== \"undefined\") {\n schedule = function (fn) {\n setTimeout(fn, 0);\n };\n} else {\n schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":36}],30:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\n function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = _dereq_(\"./util\");\n\nfunction SettledPromiseArray(values) {\n this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.allSettled = function (promises) {\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n return Promise.settle(this);\n};\n};\n\n},{\"./util\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar RangeError = _dereq_(\"./errors\").RangeError;\nvar AggregateError = _dereq_(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n if (this._howMany === 0) {\n this._resolve([]);\n return;\n }\n this._init$(undefined, -5);\n var isArrayResolved = isArray(this._values);\n if (!this._isResolved() &&\n isArrayResolved &&\n this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n};\n\nSomePromiseArray.prototype.init = function () {\n this._initialized = true;\n this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n return true;\n }\n return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n this._addRejected(CANCELLATION);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n return true;\n }\n return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" +\n this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n}\n\nPromise.some = function (promises, howMany) {\n return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n},{\"./errors\":12,\"./util\":36}],32:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed()\n ? promise._settledValue() : undefined;\n }\n else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n var target = this._target();\n target._unsetRejectionIsUnhandled();\n return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n this._unsetRejectionIsUnhandled();\n return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],33:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n obj._then(\n ret._fulfill,\n ret._reject,\n undefined,\n ret,\n null\n );\n return ret;\n }\n return doThenable(obj, then, context);\n }\n }\n return obj;\n}\n\nfunction doGetThen(obj) {\n return obj.then;\n}\n\nfunction getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n}\n\nfunction doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n promise._captureStackTrace();\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n promise._resolveCallback(value);\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n promise._rejectCallback(reason, synchronous, true);\n promise = null;\n }\n return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":36}],34:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = _dereq_(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle) {\n this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n if (value !== undefined) {\n ret = Promise.resolve(value)\n ._then(afterValue, null, null, ms, undefined);\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function() { ret._fulfill(); }, +ms);\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n ret._captureStackTrace();\n }\n ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n var err;\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n util.markAsOriginatingFromRejection(err);\n promise._attachExtraTrace(err);\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n};\n\nfunction successClear(value) {\n clearTimeout(this.handle);\n return value;\n}\n\nfunction failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n }\n\n return ret;\n};\n\n};\n\n},{\"./util\":36}],35:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n var TypeError = _dereq_(\"./errors\").TypeError;\n var inherits = _dereq_(\"./util\").inherits;\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function(){throw e;}, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n if (maybePromise !== thenable &&\n typeof thenable._isDisposable === \"function\" &&\n typeof thenable._getDisposer === \"function\" &&\n thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n return maybePromise;\n }\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n if (maybePromise instanceof Promise &&\n maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(\n maybePromise._getDisposer().tryDispose(inspection),\n resources.promise);\n } catch (e) {\n return thrower(e);\n }\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower,\n null, null, null);\n }\n }\n iterator();\n }\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function(inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL\n ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n this._promise._unsetDisposable();\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return (d != null &&\n typeof d.resource === \"function\" &&\n typeof d.tryDispose === \"function\");\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n return value.promise();\n }\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length-1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function() {\n var len = this.length;\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\n \"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var input;\n var spreadArgs = true;\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n var resources = new ResourceList(len);\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n if (maybePromise instanceof Promise) {\n resource =\n maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources)\n .then(function(inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n inspections[i] = inspection.value();\n }\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs\n ? fn.apply(undefined, inspections) : fn(inspections);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n\n var promise = resultPromise.lastly(function() {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n promise._setOnCancel(resources);\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & (~131072);\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n throw new TypeError();\n };\n\n};\n\n},{\"./errors\":12,\"./util\":36}],36:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n typeof global !== \"undefined\" ? global :\n this !== undefined ? this : null;\n\nfunction tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) &&\n propertyName.charAt(propertyName.length-1) !== \"$\"\n ) {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n return val == null || val === true || val === false ||\n typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n return typeof value === \"function\" ||\n typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n\n return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n ret[i] = appendee;\n return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null\n ? desc.value\n : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n}\n\nfunction thrower(r) {\n throw r;\n}\n\nvar inheritedDataKeys = (function() {\n var excludedPrototypes = [\n Array.prototype,\n Object.prototype,\n Function.prototype\n ];\n\n var isExcludedProto = function(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function(obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n obj = es5.getPrototypeOf(obj);\n }\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function(obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n\n /*jshint forin:false */\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n ret.push(key);\n }\n }\n return ret;\n };\n }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 &&\n !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods =\n thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor ||\n hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n return false;\n } catch (e) {\n return false;\n }\n}\n\nfunction toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n FakeConstructor.prototype = obj;\n var receiver = new FakeConstructor();\n function ic() {\n return typeof receiver.foo;\n }\n ic();\n ic();\n return obj;\n eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n for(var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n return ret;\n}\n\nfunction safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n}\n\nfunction isError(obj) {\n return obj instanceof Error ||\n (obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.message === \"string\" &&\n typeof obj.name === \"string\");\n}\n\nfunction markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n }\n catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n if (e == null) return false;\n return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n if (!(\"stack\" in new Error())) {\n return function(value) {\n if (canAttachTrace(value)) return value;\n try {throw new Error(safeToString(value));}\n catch(err) {return err;}\n };\n } else {\n return function(value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n})();\n\nfunction classString(obj) {\n return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n}\n\nvar asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n }\n return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n return Array.from(v);\n } : function(v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n while (!((itResult = it.next()).done)) {\n ret.push(itResult.value);\n }\n return ret;\n };\n\n asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n return null;\n };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\";\n\nfunction env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function(){});\n if (classString(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n}\n\nvar reflectHandler;\nfunction contextBind(ctx, cb) {\n if (ctx === null ||\n typeof cb !== \"function\" ||\n cb === reflectHandler) {\n return cb;\n }\n\n if (ctx.domain !== null) {\n cb = ctx.domain.bind(cb);\n }\n\n var async = ctx.async;\n if (async !== null) {\n var old = cb;\n cb = function() {\n var args = (new Array(2)).concat([].slice.call(arguments));;\n args[0] = old;\n args[1] = this;\n return async.runInAsyncScope.apply(async, args);\n };\n }\n return cb;\n}\n\nvar ret = {\n setReflectHandler: function(fn) {\n reflectHandler = fn;\n },\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n contextBind: contextBind\n};\nret.isRecentNode = ret.isNode && (function() {\n var version;\n if (process.versions && process.versions.node) {\n version = process.versions.node.split(\".\").map(Number);\n } else if (process.version) {\n version = process.version.split(\".\").map(Number);\n }\n return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\nret.nodeSupportsAsyncResource = ret.isNode && (function() {\n var supportsAsync = false;\n try {\n var res = _dereq_(\"async_hooks\").AsyncResource;\n supportsAsync = typeof res.prototype.runInAsyncScope === \"function\";\n } catch (e) {\n supportsAsync = false;\n }\n return supportsAsync;\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":13,\"async_hooks\":undefined}]},{},[4])(4)\n}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }","// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\nrequire('../../js/transition.js')\nrequire('../../js/alert.js')\nrequire('../../js/button.js')\nrequire('../../js/carousel.js')\nrequire('../../js/collapse.js')\nrequire('../../js/dropdown.js')\nrequire('../../js/modal.js')\nrequire('../../js/tooltip.js')\nrequire('../../js/popover.js')\nrequire('../../js/scrollspy.js')\nrequire('../../js/tab.js')\nrequire('../../js/affix.js')","/* ========================================================================\n * Bootstrap: affix.js v3.3.7\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n this.$target = $(this.options.target)\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed = null\n this.unpin = null\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.3.7'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n var targetHeight = this.$target.height()\n\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n }\n\n var initializing = this.affixed == null\n var colliderTop = initializing ? scrollTop : position.top\n var colliderHeight = initializing ? targetHeight : height\n\n if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n return false\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var height = this.$element.height()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.affix\n\n $.fn.affix = Plugin\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n if (data.offsetTop != null) data.offset.top = data.offsetTop\n\n Plugin.call($spy, data)\n })\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: alert.js v3.3.7\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.VERSION = '3.3.7'\n\n Alert.TRANSITION_DURATION = 150\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = $(selector === '#' ? [] : selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.closest('.alert')\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one('bsTransitionEnd', removeElement)\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.alert\n\n $.fn.alert = Plugin\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: button.js v3.3.7\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n this.isLoading = false\n }\n\n Button.VERSION = '3.3.7'\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state += 'Text'\n\n if (data.resetText == null) $el.data('resetText', $el[val]())\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n $el[val](data[state] == null ? this.options[state] : data[state])\n\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d).prop(d, true)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d).prop(d, false)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked')) changed = false\n $parent.find('.active').removeClass('active')\n this.$element.addClass('active')\n } else if ($input.prop('type') == 'checkbox') {\n if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n this.$element.toggleClass('active')\n }\n $input.prop('checked', this.$element.hasClass('active'))\n if (changed) $input.trigger('change')\n } else {\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n this.$element.toggleClass('active')\n }\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n var old = $.fn.button\n\n $.fn.button = Plugin\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document)\n .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target).closest('.btn')\n Plugin.call($btn, 'toggle')\n if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\n // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n e.preventDefault()\n // The target component still receive the focus\n if ($btn.is('input,button')) $btn.trigger('focus')\n else $btn.find('input:visible,button:visible').first().trigger('focus')\n }\n })\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: carousel.js v3.3.7\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused = null\n this.sliding = null\n this.interval = null\n this.$active = null\n this.$items = null\n\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n }\n\n Carousel.VERSION = '3.3.7'\n\n Carousel.TRANSITION_DURATION = 600\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true,\n keyboard: true\n }\n\n Carousel.prototype.keydown = function (e) {\n if (/input|textarea/i.test(e.target.tagName)) return\n switch (e.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n\n e.preventDefault()\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getItemIndex = function (item) {\n this.$items = item.parent().children('.item')\n return this.$items.index(item || this.$active)\n }\n\n Carousel.prototype.getItemForDirection = function (direction, active) {\n var activeIndex = this.getItemIndex(active)\n var willWrap = (direction == 'prev' && activeIndex === 0)\n || (direction == 'next' && activeIndex == (this.$items.length - 1))\n if (willWrap && !this.options.wrap) return active\n var delta = direction == 'prev' ? -1 : 1\n var itemIndex = (activeIndex + delta) % this.$items.length\n return this.$items.eq(itemIndex)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || this.getItemForDirection(type, $active)\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var that = this\n\n if ($next.hasClass('active')) return (this.sliding = false)\n\n var relatedTarget = $next[0]\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n })\n this.$element.trigger(slideEvent)\n if (slideEvent.isDefaultPrevented()) return\n\n this.sliding = true\n\n isCycling && this.pause()\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n $nextIndicator && $nextIndicator.addClass('active')\n }\n\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type)\n $next[0].offsetWidth // force reflow\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one('bsTransitionEnd', function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () {\n that.$element.trigger(slidEvent)\n }, 0)\n })\n .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger(slidEvent)\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.carousel')\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n var action = typeof option == 'string' ? option : options.slide\n\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n if (typeof option == 'number') data.to(option)\n else if (action) data[action]()\n else if (options.interval) data.pause().cycle()\n })\n }\n\n var old = $.fn.carousel\n\n $.fn.carousel = Plugin\n $.fn.carousel.Constructor = Carousel\n\n\n // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old\n return this\n }\n\n\n // CAROUSEL DATA-API\n // =================\n\n var clickHandler = function (e) {\n var href\n var $this = $(this)\n var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n if (!$target.hasClass('carousel')) return\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n Plugin.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(document)\n .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n Plugin.call($carousel, $carousel.data())\n })\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: collapse.js v3.3.7\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.3.7'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(target)\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this)\n\n if (!$this.attr('data-target')) e.preventDefault()\n\n var $target = getTargetFromTrigger($this)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: dropdown.js v3.3.7\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.3.7'\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector && $(selector)\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n })\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $(document.createElement('div'))\n .addClass('dropdown-backdrop')\n .insertAfter($(this))\n .on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.disabled):visible a'\n var $items = $parent.find('.dropdown-menu' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: modal.js v3.3.7\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.3.7'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element.addClass('in')\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (document !== e.target &&\n this.$element[0] !== e.target &&\n !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $(document.createElement('div'))\n .addClass('modal-backdrop ' + animate)\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false\n return\n }\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus()\n : this.hide()\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog()\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad)\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: popover.js v3.3.7\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.VERSION = '3.3.7'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '

'\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\n this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n ](content)\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.7\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n this.$body = $(document.body)\n this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.3.7'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var that = this\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n that.offsets.push(this[0])\n that.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.getScrollHeight()\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null\n return this.clear()\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n && this.activate(targets[i])\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n this.clear()\n\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\n }\n\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\n $.fn.scrollspy.Constructor = ScrollSpy\n\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tab.js v3.3.7\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n // jscs:disable requireDollarBeforejQueryAssignment\n this.element = $(element)\n // jscs:enable requireDollarBeforejQueryAssignment\n }\n\n Tab.VERSION = '3.3.7'\n\n Tab.TRANSITION_DURATION = 150\n\n Tab.prototype.show = function () {\n var $this = this.element\n var $ul = $this.closest('ul:not(.dropdown-menu)')\n var selector = $this.data('target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n var $previous = $ul.find('.active:last a')\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n })\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n })\n\n $previous.trigger(hideEvent)\n $this.trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n var $target = $(selector)\n\n this.activate($this.closest('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n })\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n })\n })\n }\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active')\n var transition = callback\n && $.support.transition\n && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', false)\n\n element\n .addClass('active')\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu').length) {\n element\n .closest('li.dropdown')\n .addClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n }\n\n callback && callback()\n }\n\n $active.length && transition ?\n $active\n .one('bsTransitionEnd', next)\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tab')\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tab\n\n $.fn.tab = Plugin\n $.fn.tab.Constructor = Tab\n\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old\n return this\n }\n\n\n // TAB DATA-API\n // ============\n\n var clickHandler = function (e) {\n e.preventDefault()\n Plugin.call($(this), 'show')\n }\n\n $(document)\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tooltip.js v3.3.7\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type = null\n this.options = null\n this.enabled = null\n this.timeout = null\n this.hoverState = null\n this.$element = null\n this.inState = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.3.7'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n }\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n this.inState = { click: false, hover: false, focus: false }\n\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n }\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n }\n\n if (self.tip().hasClass('in') || self.hoverState == 'in') {\n self.hoverState = 'in'\n return\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.isInStateTrue = function () {\n for (var key in this.inState) {\n if (this.inState[key]) return true\n }\n\n return false\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n }\n\n if (self.isInStateTrue()) return\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n .data('bs.' + this.type, this)\n\n this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n this.$element.trigger('inserted.bs.' + this.type)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var viewportDim = this.getPosition(this.$viewport)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n\n var complete = function () {\n var prevHoverState = that.hoverState\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n\n if (prevHoverState == 'out') that.leave(that)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top += marginTop\n offset.left += marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var isVertical = /top|bottom/.test(placement)\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n this.arrow()\n .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isVertical ? 'top' : 'left', '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function (callback) {\n var that = this\n var $tip = $(this.$tip)\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\n }\n callback && callback()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && $tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n\n var elRect = el.getBoundingClientRect()\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n }\n var isSvg = window.SVGElement && el instanceof window.SVGElement\n // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n // See https://github.com/twbs/bootstrap/issues/20280\n var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n return $.extend({}, elRect, scroll, outerDims, elOffset)\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n }\n\n Tooltip.prototype.tip = function () {\n if (!this.$tip) {\n this.$tip = $(this.options.template)\n if (this.$tip.length != 1) {\n throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n }\n }\n return this.$tip\n }\n\n Tooltip.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n if (e) {\n self.inState.click = !self.inState.click\n if (self.isInStateTrue()) self.enter(self)\n else self.leave(self)\n } else {\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n }\n\n Tooltip.prototype.destroy = function () {\n var that = this\n clearTimeout(this.timeout)\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\n if (that.$tip) {\n that.$tip.detach()\n }\n that.$tip = null\n that.$arrow = null\n that.$viewport = null\n that.$element = null\n })\n }\n\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: transition.js v3.3.7\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // http://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n","\"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\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==","\"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\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kaXJlY3RMaW5lU3RyZWFtaW5nLnRzIl0sIm5hbWVzIjpbIkRJUkVDVF9MSU5FX1ZFUlNJT04iLCJNQVhfUkVUUllfQ09VTlQiLCJyZWZyZXNoVG9rZW5MaWZldGltZSIsInJlZnJlc2hUb2tlbkludGVydmFsIiwiU3RyZWFtSGFuZGxlciIsInMiLCJjJCIsInNxIiwic3Vic2NyaWJlciIsImNvbm5lY3Rpb25TdGF0dXMkIiwic2hvdWxkUXVldWUiLCJyZXF1ZXN0IiwibG9nZ2VyIiwic3RyZWFtcyIsInN0cmVhbTAiLCJzaGlmdCIsInJlYWRBc1N0cmluZyIsImFjdGl2aXR5U2V0SnNvbiIsImFjdGl2aXR5U2V0IiwiSlNPTiIsInBhcnNlIiwiYWN0aXZpdGllcyIsImxlbmd0aCIsImVycm9yIiwiRXJyb3IiLCJCRlNFIiwiU3RyZWFtaW5nUmVzcG9uc2UiLCJjcmVhdGUiLCJhY3Rpdml0eSIsImF0dGFjaG1lbnRzIiwic3RyZWFtIiwiYXR0YWNobWVudCIsImRhdGFVcmkiLCJwdXNoIiwiY29udGVudFR5cGUiLCJjb250ZW50VXJsIiwiYWN0aXZpdHlRdWV1ZSIsIm5leHQiLCJzdWJzY3JpYmUiLCJmb3JFYWNoIiwiYSIsImNvbXBsZXRlIiwiRGlyZWN0TGluZVN0cmVhbWluZyIsIm9wdGlvbnMiLCJCZWhhdmlvclN1YmplY3QiLCJDb25uZWN0aW9uU3RhdHVzIiwiVW5pbml0aWFsaXplZCIsIm5ldHdvcmtJbmZvcm1hdGlvbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidHlwZSIsImNvbnNvbGUiLCJ3YXJuIiwidG9rZW4iLCJyZWZyZXNoVG9rZW4iLCJFeHBpcmVkVG9rZW4iLCJkb21haW4iLCJjb252ZXJzYXRpb25JZCIsIl9ib3RBZ2VudCIsImdldEJvdEFnZW50IiwiYm90QWdlbnQiLCJxdWV1ZUFjdGl2aXRpZXMiLCJhY3Rpdml0eSQiLCJPYnNlcnZhYmxlIiwiYWN0aXZpdHlTdWJzY3JpYmVyIiwidGhlU3RyZWFtSGFuZGxlciIsImNvbm5lY3REZWZlcnJlZCIsInJlc29sdmUiLCJzaGFyZSIsImNvbm5lY3RXaXRoUmV0cnlBc3luYyIsImdldFZhbHVlIiwiRW5kZWQiLCJzdHJlYW1Db25uZWN0aW9uIiwiZGlzY29ubmVjdCIsIkF1dGhvcml6YXRpb24iLCJjdXN0b21BZ2VudCIsImNsaWVudEFnZW50IiwiZmlyc3RDYWxsIiwicmV0cnlDb3VudCIsIndhaXRVbnRpbE9ubGluZSIsIm51bWJlck9mQXR0ZW1wdHMiLCJQcm9taXNlIiwiciIsInNldFRpbWVvdXQiLCJtZXRob2QiLCJoZWFkZXJzIiwiY29tbW9uSGVhZGVycyIsInJlcyIsIm9rIiwianNvbiIsInN0YXR1cyIsInN0YXR1c1RleHQiLCJ2YWx1ZSIsIkZhaWxlZFRvQ29ubmVjdCIsInBvc3RNZXNzYWdlV2l0aEF0dGFjaG1lbnRzIiwicmVzcCQiLCJTdHJlYW1pbmdSZXF1ZXN0Iiwic2V0Qm9keSIsInN0cmluZ2lmeSIsInNlbmQiLCJyZXNwIiwic3RhdHVzQ29kZSIsIm51bWJlck9mU3RyZWFtcyIsImlkU3RyaW5nIiwiaWQiLCJJZCIsIm1lc3NhZ2UiLCJtZXNzYWdlV2l0aG91dEF0dGFjaG1lbnRzIiwiaHR0cENvbnRlbnRMaXN0IiwiYWxsIiwibWFwIiwibWVkaWEiLCJhcnJheUJ1ZmZlciIsImFycmF5QnVmZmVycyIsImJ1ZmZlciIsIkJ1ZmZlciIsImZyb20iLCJTdWJzY3JpYmFibGVTdHJlYW0iLCJ3cml0ZSIsImh0dHBDb250ZW50IiwiSHR0cENvbnRlbnQiLCJjb250ZW50TGVuZ3RoIiwidXJsIiwiYWN0aXZpdHlTdHJlYW0iLCJhZGRTdHJlYW0iLCJlIiwicmVhZEFzSnNvbiIsInJlamVjdCIsImNzIiwiT25saW5lIiwicmUiLCJSZWdFeHAiLCJ0ZXN0IiwicGFyYW1zIiwiYWJvcnRDb250cm9sbGVyIiwiQWJvcnRDb250cm9sbGVyIiwidXJsU2VhcmNoUGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwidG9TdHJpbmciLCJ3c1VybCIsInJlcGxhY2UiLCJXZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uIiwiZGlzY29ubmVjdGlvbkhhbmRsZXIiLCJyZXF1ZXN0SGFuZGxlciIsInByb2Nlc3NSZXF1ZXN0Iiwic3RyZWFtaW5nUmVxdWVzdCIsInNpZ25hbCIsImFib3J0ZWQiLCJjb25uZWN0IiwicmVzcG9uc2UiLCJyZXNwb25zZVN0cmluZyIsImNvbnZlcnNhdGlvbiIsImZsdXNoIiwiYWJvcnQiLCJwcm9taXNlIiwibnVtUmV0cmllcyIsIkNvbm5lY3RpbmciLCJzdGFydCIsIkRhdGUiLCJub3ciLCJjb25uZWN0QXN5bmMiLCJnZXRSZXRyeURlbGF5IiwiTWF0aCIsImZsb29yIiwicmFuZG9tIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7OztBQUdBLElBQU1BLG1CQUFtQixHQUFHLGdCQUE1QjtBQUNBLElBQU1DLGVBQWUsR0FBRyxDQUF4QjtBQUNBLElBQU1DLG9CQUFvQixHQUFHLEtBQUssRUFBTCxHQUFVLElBQXZDLEMsQ0FDQTtBQUNBOztBQUNBLElBQU1DLG9CQUFvQixHQUFHRCxvQkFBb0IsR0FBRyxDQUFwRDs7SUFnQk1FLGE7QUFNSix5QkFBWUMsQ0FBWixFQUFxQ0MsRUFBckMsRUFBdUVDLEVBQXZFLEVBQTBGO0FBQUE7QUFBQSw0REFGakQsRUFFaUQ7QUFDeEYsU0FBS0MsVUFBTCxHQUFrQkgsQ0FBbEI7QUFDQSxTQUFLSSxpQkFBTCxHQUF5QkgsRUFBekI7QUFDQSxTQUFLSSxXQUFMLEdBQW1CSCxFQUFuQjtBQUNEOzs7O1dBRUQsdUJBQXFCRixDQUFyQixFQUE4QztBQUM1QyxXQUFLRyxVQUFMLEdBQWtCSCxDQUFsQjtBQUNEOzs7OzBHQUVELGlCQUFxQk0sT0FBckIsRUFBb0RDLE1BQXBEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNRQyxnQkFBQUEsT0FE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LGdCQUFBQSxPQUFPLENBQUM1QixLQUFSOztBQXJCUjtBQUFBLHNCQXlCVSxLQUFLZCxpQkFBTCxDQUF1QjZELFFBQXZCLE9BQXNDekIsNkJBQWlCMEIsS0F6QmpFO0FBQUE7QUFBQTtBQUFBOztBQUFBOztBQUFBO0FBOEJNO0FBQ0E7QUFDQSxvQkFBSSxLQUFLOUQsaUJBQUwsQ0FBdUI2RCxRQUF2QixPQUFzQ3pCLDZCQUFpQitHLFVBQTNELEVBQXVFO0FBQ3JFLHVCQUFLbkosaUJBQUwsQ0FBdUI0QixJQUF2QixDQUE0QlEsNkJBQWlCK0csVUFBN0M7QUFDRCxpQkFsQ1AsQ0FvQ007QUFDQTtBQUNBOzs7QUF0Q04sc0JBdUNVLFFBQVFFLElBQUksQ0FBQ0MsR0FBTCxLQUFhRixLQXZDL0I7QUFBQTtBQUFBO0FBQUE7O0FBd0NRRixnQkFBQUEsVUFBVSxHQUFHMUosZUFBYjtBQXhDUjtBQUFBOztBQUFBO0FBQUEsc0JBeUNpQjBKLFVBQVUsR0FBRyxDQXpDOUI7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQSx1QkEyQ2MsSUFBSTFFLE9BQUosQ0FBWSxVQUFBQyxDQUFDO0FBQUEseUJBQUlDLFVBQVUsQ0FBQ0QsQ0FBRCxFQUFJLE1BQUksQ0FBQytFLGFBQUwsRUFBSixDQUFkO0FBQUEsaUJBQWIsQ0EzQ2Q7O0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBK0NJO0FBQ0E7QUFDQSxxQkFBS3hKLGlCQUFMLENBQXVCNEIsSUFBdkIsQ0FBNEJRLDZCQUFpQmdELGVBQTdDOztBQWpESjtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTzs7Ozs7OztRQXVEQTs7OztXQUNBLHlCQUF3QjtBQUN0QixhQUFPcUUsSUFBSSxDQUFDQyxLQUFMLENBQVcsT0FBT0QsSUFBSSxDQUFDRSxNQUFMLEtBQWdCLEtBQWxDLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEluIG9yZGVyIHRvIGtlZXAgZmlsZSBzaXplIGRvd24sIG9ubHkgaW1wb3J0IHRoZSBwYXJ0cyBvZiByeGpzIHRoYXQgd2UgdXNlXG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMvQmVoYXZpb3JTdWJqZWN0JztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ2J1ZmZlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcy9PYnNlcnZhYmxlJztcbmltcG9ydCB7IFN1YnNjcmliZXIgfSBmcm9tICdyeGpzL1N1YnNjcmliZXInO1xuaW1wb3J0ICogYXMgQkZTRSBmcm9tICdib3RmcmFtZXdvcmstc3RyZWFtaW5nJztcbmltcG9ydCBjcmVhdGVEZWZlcnJlZCBmcm9tICcuL2NyZWF0ZURlZmVycmVkJztcbmltcG9ydCBmZXRjaCBmcm9tICdjcm9zcy1mZXRjaCc7XG5cbmltcG9ydCB7IEFjdGl2aXR5LCBDb25uZWN0aW9uU3RhdHVzLCBDb252ZXJzYXRpb24sIERpcmVjdExpbmUsIElCb3RDb25uZWN0aW9uLCBNZWRpYSwgTWVzc2FnZSB9IGZyb20gJy4vZGlyZWN0TGluZSc7XG5pbXBvcnQgV2ViU29ja2V0Q2xpZW50V2l0aE5ldHdvcmtJbmZvcm1hdGlvbiBmcm9tICcuL3N0cmVhbWluZy9XZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uJztcbmltcG9ydCB0eXBlIHsgRGVmZXJyZWQgfSBmcm9tICcuL2NyZWF0ZURlZmVycmVkJztcblxuY29uc3QgRElSRUNUX0xJTkVfVkVSU0lPTiA9ICdEaXJlY3RMaW5lLzMuMCc7XG5jb25zdCBNQVhfUkVUUllfQ09VTlQgPSAzO1xuY29uc3QgcmVmcmVzaFRva2VuTGlmZXRpbWUgPSAzMCAqIDYwICogMTAwMDtcbi8vY29uc3QgcmVmcmVzaFRva2VuTGlmZXRpbWUgPSA1MDAwO1xuLy8gY29uc3QgdGltZW91dCA9IDIwICogMTAwMDtcbmNvbnN0IHJlZnJlc2hUb2tlbkludGVydmFsID0gcmVmcmVzaFRva2VuTGlmZXRpbWUgLyAyO1xuXG5pbnRlcmZhY2UgRGlyZWN0TGluZVN0cmVhbWluZ09wdGlvbnMge1xuICB0b2tlbjogc3RyaW5nO1xuICBjb252ZXJzYXRpb25JZD86IHN0cmluZztcbiAgZG9tYWluOiBzdHJpbmc7XG4gIC8vIEF0dGFjaGVkIHRvIGFsbCByZXF1ZXN0cyB0byBpZGVudGlmeSByZXF1ZXN0aW5nIGFnZW50LlxuICBib3RBZ2VudD86IHN0cmluZztcblxuICAvKipcbiAgICogU2V0cyB0aGUgW2BOZXR3b3JrSW5mb3JtYXRpb25gIEFQSV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL05ldHdvcmtfSW5mb3JtYXRpb25fQVBJKS5cbiAgICogV2hlbiB0aGUgYE5ldHdvcmtJbmZvcm1hdGlvbmAgZGV0ZWN0IG5ldHdvcmsgY2hhbmdlcyBvciBvZmZsaW5lLCBpdCB3aWxsIGRpc2Nvbm5lY3QgdGhlIFdlYiBTb2NrZXQgYW5kIHJlY29ubmVjdCBpdC5cbiAgICovXG4gIG5ldHdvcmtJbmZvcm1hdGlvbj86IE5ldHdvcmtJbmZvcm1hdGlvbjtcbn1cblxuY2xhc3MgU3RyZWFtSGFuZGxlciBpbXBsZW1lbnRzIEJGU0UuUmVxdWVzdEhhbmRsZXIge1xuICBwcml2YXRlIGNvbm5lY3Rpb25TdGF0dXMkO1xuICBwcml2YXRlIHN1YnNjcmliZXI6IFN1YnNjcmliZXI8QWN0aXZpdHk+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\"] = 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\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 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 \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 ''\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 */\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 */\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/**/\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/**/\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/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\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/**/\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/**/\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/* */\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/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\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/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\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","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\nfunction _callSuper(t, o, e) {\n return o = getPrototypeOf(o), possibleConstructorReturn(t, isNativeReflectConstruct() ? Reflect.construct(o, e || [], getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nmodule.exports = _callSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _extends.apply(null, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(t) {\n return module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _getPrototypeOf(t);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(e) {\n return e && e.__esModule ? e : {\n \"default\": e\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (module.exports = _isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)();\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var defineProperty = require(\"./defineProperty.js\");\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nmodule.exports = _objectSpread2, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(t, e) {\n return module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _setPrototypeOf(t, e);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _Object$assign from \"@babel/runtime-corejs2/core-js/object/assign\";\nexport default function _extends() {\n _extends = _Object$assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import _Object$create from \"@babel/runtime-corejs2/core-js/object/create\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = _Object$create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import _Object$keys from \"@babel/runtime-corejs2/core-js/object/keys\";\nexport default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n\n var sourceKeys = _Object$keys(source);\n\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nexport { _asyncToGenerator as default };","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nfunction _callSuper(t, o, e) {\n return o = getPrototypeOf(o), possibleConstructorReturn(t, isNativeReflectConstruct() ? Reflect.construct(o, e || [], getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nexport { _callSuper as default };","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","import isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _construct(t, e, r) {\n if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);\n var o = [null];\n o.push.apply(o, e);\n var p = new (t.bind.apply(t, o))();\n return r && setPrototypeOf(p, r.prototype), p;\n}\nexport { _construct as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nfunction _createForOfIteratorHelper(r, e) {\n var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (!t) {\n if (Array.isArray(r) || (t = unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) {\n t && (r = t);\n var _n = 0,\n F = function F() {};\n return {\n s: F,\n n: function n() {\n return _n >= r.length ? {\n done: !0\n } : {\n done: !1,\n value: r[_n++]\n };\n },\n e: function e(r) {\n throw r;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var o,\n a = !0,\n u = !1;\n return {\n s: function s() {\n t = t.call(r);\n },\n n: function n() {\n var r = t.next();\n return a = r.done, r;\n },\n e: function e(r) {\n u = !0, o = r;\n },\n f: function f() {\n try {\n a || null == t[\"return\"] || t[\"return\"]();\n } finally {\n if (u) throw o;\n }\n }\n };\n}\nexport { _createForOfIteratorHelper as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _getPrototypeOf(t) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nexport { _isNativeReflectConstruct as default };","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nexport { _objectSpread2 as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };","import _typeof from \"./typeof.js\";\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n };\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nexport { _regeneratorRuntime as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","import superPropBase from \"./superPropBase.js\";\nfunction _get() {\n return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) {\n var p = superPropBase(e, t);\n if (p) {\n var n = Object.getOwnPropertyDescriptor(p, t);\n return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value;\n }\n }, _get.apply(null, arguments);\n}\nexport { _get as default };","import getPrototypeOf from \"./getPrototypeOf.js\";\nfunction _superPropBase(t, o) {\n for (; !{}.hasOwnProperty.call(t, o) && null !== (t = getPrototypeOf(t)););\n return t;\n}\nexport { _superPropBase as default };","import get from \"./get.js\";\nimport getPrototypeOf from \"./getPrototypeOf.js\";\nfunction _superPropGet(t, o, e, r) {\n var p = get(getPrototypeOf(1 & r ? t.prototype : t), o, e);\n return 2 & r && \"function\" == typeof p ? function (t) {\n return p.apply(e, t);\n } : p;\n}\nexport { _superPropGet as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _toArray(r) {\n return arrayWithHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableRest();\n}\nexport { _toArray as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nfunction _wrapNativeSuper(t) {\n var r = \"function\" == typeof Map ? new Map() : void 0;\n return _wrapNativeSuper = function _wrapNativeSuper(t) {\n if (null === t || !isNativeFunction(t)) return t;\n if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\");\n if (void 0 !== r) {\n if (r.has(t)) return r.get(t);\n r.set(t, Wrapper);\n }\n function Wrapper() {\n return construct(t, arguments, getPrototypeOf(this).constructor);\n }\n return Wrapper.prototype = Object.create(t.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n }), setPrototypeOf(Wrapper, t);\n }, _wrapNativeSuper(t);\n}\nexport { _wrapNativeSuper as default };","function _isNativeFunction(t) {\n try {\n return -1 !== Function.toString.call(t).indexOf(\"[native code]\");\n } catch (n) {\n return \"function\" == typeof t;\n }\n}\nexport { _isNativeFunction as default };"],"names":["module","exports","arr","len","length","i","arr2","Array","__esModule","isArray","arrayLikeToArray","self","ReferenceError","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","fn","this","args","arguments","apply","err","undefined","receiver","descriptor","get","call","set","writable","TypeError","instance","Constructor","privateMap","action","has","classApplyDescriptorGet","classExtractFieldDescriptor","classApplyDescriptorSet","_defineProperties","target","props","enumerable","configurable","Object","defineProperty","protoProps","staticProps","prototype","obj","superPropBase","_get","property","Reflect","base","desc","getOwnPropertyDescriptor","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","subClass","superClass","create","constructor","iter","Symbol","iterator","from","objectWithoutPropertiesLoose","source","excluded","getOwnPropertySymbols","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","keys","_typeof","assertThisInitialized","_setPrototypeOf","p","object","hasOwnProperty","arrayWithHoles","iterableToArray","unsupportedIterableToArray","nonIterableRest","arrayWithoutHoles","nonIterableSpread","minLen","n","toString","slice","name","test","_defineProperty","_defineProperty2","default","defineProperties","_assign","_assign2","_setPrototypeOf2","_interopRequireDefault","_create2","_typeof3","_typeof2","_isIterable3","_getIterator3","_arr","_n","_d","_e","_s","_i","next","push","sliceIterator","_iterator2","_symbol2","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","Arr","_byteLength","curByte","revLookup","charCodeAt","fromByteArray","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","join","Uint8Array","code","Error","start","end","num","output","e","define","t","r","s","u","a","_dereq_","f","l","SomePromiseArray","_SomePromiseArray","any","promises","ret","promise","setHowMany","setUnwrap","init","firstLineError","schedule","Queue","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","drainQueues","_drainQueues","_schedule","_drainQueue","queue","_drainQueueStep","shift","_settlePromises","setScheduler","prev","hasCustomScheduler","haveItemsQueued","fatalError","isNode","process","stderr","write","stack","exit","throwLater","setTimeout","invokeLater","_queueTick","invoke","settlePromises","_pushOne","_reset","INTERNAL","tryConvertToPromise","debug","calledBind","rejectThis","_","_reject","targetRejected","context","promiseRejectionQueued","bindingPromise","_then","bindingResolved","thisArg","_bitField","_resolveCallback","bindingRejected","bind","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","old","bluebird","noConflict","cr","callerCache","getterCache","util","canEvaluate","caller","methodName","message","classString","ensureMethod","pop","namedGetter","indexedGetter","index","Math","max","isIdentifier","propertyName","getter","maybeGetter","getGetter","PromiseArray","apiRejection","tryCatch","errorObj","async","_async","cancel","cancellation","_warn","child","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","parent","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","NEXT_FILTER","getKeys","instances","cb","boundTo","predicateLoop","item","matchesPredicate","isObject","j","longStackTraces","contextStack","Context","_trace","CapturedTrace","peekContext","lastIndex","_promiseCreated","_pushContext","_popContext","_peekContext","trace","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","ctx","enableAsyncHooks","disableAsyncHooks","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","deferUnhandledRejectionCheck","Warning","es5","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","env","warnings","wForgottenReturn","unhandledRejectionCheck","_notifyUnhandledRejection","unhandledRejectionClear","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","reason","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","warn","onPossiblyUnhandledRejection","_getContext","contextBind","onUnhandledRejectionHandled","disableLongStackTraces","config","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","Promise_dereferenceTrace","_dereferenceTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","longStackTracesDereferenceTrace","hasLongStackTraces","legacyHandlers","unhandledrejection","before","global","onunhandledrejection","after","rejectionhandled","onrejectionhandled","fireDomEvent","dispatch","legacy","dispatchEvent","CustomEvent","event","toLowerCase","domEvent","detail","cancelable","Event","document","createEvent","initCustomEvent","fireGlobalEvent","emit","method","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","warning","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","flags","branchesRemainingToCancel","opts","warningsOption","_clearCancellationData","_execute","monitoring","_fireEvent","nodeSupportsAsyncResource","asyncHooks","cur","handler","isFulfilled","ignoreSelf","_parent","attachExtraTrace","__stackCleaned__","parsed","parseStackAndMessage","notEnumerableProp","formatAndLogError","cleanStack","line","isTraceLine","isInternalFrame","shouldIgnore","charAt","replace","split","stackFramesAsArray","title","isSoft","console","String","log","localHandler","localEventFired","formatNonError","str","JSON","stringify","maxChars","substr","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","matches","match","fileName","parseInt","_promisesCreated","uncycle","inherits","nodes","stackToIndex","node","cycleEdgeNode","currentChildLength","stacks","current","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","splice","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","isTTY","color","checkForgottenReturns","returnValue","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","msg","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","result","deprecated","replacement","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","caught","catchReturn","_value","PromiseReduce","reduce","PromiseAll","all","promiseAllThis","each","mapSeries","_TypeError","_RangeError","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","CancellationError","TimeoutError","AggregateError","RangeError","methods","level","OperationalError","cause","indent","lines","errorTypes","RejectionError","isES5","getDescriptor","names","getOwnPropertyNames","propertyIsWritable","prop","proto","ObjectKeys","PromiseMap","map","filter","options","catchFilter","PassThroughHandlerContext","type","called","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","fail","reasonOrValue","isFinallyHandler","isRejected","_passThrough","success","lastly","tap","tapCatch","handlerOrPredicate","catchInstances","Proxyable","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","concat","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","coroutine","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","generator","spawn","addYieldHandler","last","spread","MappingPromiseArray","limit","_filter","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","isFinite","_init$","_init","values","_values","preservedValues","callback","_totalResolved","_resolve","booleans","_resolveFromSyncValue","attempt","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","spreadAdapter","val","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","adapter","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","setReflectHandler","getDomain","domain","getContextDomain","AsyncResource","getContextAsyncHooks","getContext","errors","APPLY","createContext","nodebackForPromise","check","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","v","deferReject","fillTypes","reflect","didFulfill","didReject","_setIsFinal","toJSON","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","is","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_setNoAsyncGuarantee","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","proxyable","shouldBind","_setFollowee","synchronous","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","x","_settlePromise","isPromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","toStringTag","defer","pending","version","toFastProperties","b","c","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","Map","toResolutionValue","getActualLength","shouldCopyValues","isResolved","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","RegExp","defaultFilter","propsFilter","isPromisified","hasPromisified","suffix","getDataPropertyOrDefault","promisifiableMethods","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","makeNodePromisified","makeNodePromisifiedEval","__","defaultThis","promisified","promisifyAll","promisifier","promisifiedKey","promisify","copyDescriptors","isClass","Es6Map","mapToEntries","size","extractEntry","forEach","PropertiesPromiseArray","entries","isMap","_isMap","castValue","entriesToMap","keyOffset","capacity","_capacity","_front","_willBeOverCapacity","_checkCapacity","wrapMask","front","_resizeTo","oldCapacity","src","srcIndex","dst","dstIndex","arrayMove","race","array","ReductionPromiseArray","initialValue","_each","_fn","_initialValue","_currentCancellable","_eachValues","completed","valueOrReason","gotAccum","accum","_gotAccum","gotValue","_eachComplete","sender","_resultCancelled$","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","g","setImmediate","ProcessNextTick","nextTick","isRecentNode","nativePromise","window","navigator","standalone","cordova","documentElement","div","createElement","attributes","toggleScheduled","div2","classList","toggle","observe","disconnect","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","settle","allSettled","CANCELLATION","_howMany","_unwrap","_initialized","some","howMany","isArrayResolved","_canPossiblyFulfill","_getRangeError","count","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","__isCancelled","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","HandleWrapper","handle","clearTimeout","afterValue","delay","ms","successClear","failureClear","timeout","handleWrapper","afterTimeout","NULL","dispose","resources","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","data","_data","_context","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","resource","doDispose","_unsetDisposable","d","using","input","spreadArgs","disposer","reflectedResources","resultPromise","inspections","_disposer","tryCatchTarget","globalObject","tryCatcher","Child","Parent","T","isPrimitive","maybeError","safeToString","appendee","defaultValue","excludedPrototypes","Function","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","FakeConstructor","ic","foo","rident","filledRange","prefix","isError","ignore","to","ArrayFrom","itResult","it","hasEnvVariables","runInAsyncScope","versions","Number","supportsAsync","P","$","Affix","element","extend","DEFAULTS","$target","on","proxy","checkPosition","checkPositionWithEventLoop","$element","affixed","unpin","pinnedOffset","Plugin","option","$this","VERSION","RESET","offset","getState","scrollHeight","height","offsetTop","offsetBottom","scrollTop","position","targetHeight","top","initializing","colliderTop","getPinnedOffset","removeClass","addClass","bottom","body","affix","css","affixType","trigger","isDefaultPrevented","$spy","jQuery","dismiss","Alert","el","close","TRANSITION_DURATION","selector","attr","$parent","removeElement","detach","remove","preventDefault","closest","support","transition","hasClass","one","emulateTransitionEnd","alert","Button","isLoading","setState","loadingText","state","$el","resetText","removeAttr","changed","$input","find","toggleClass","button","$btn","first","Carousel","$indicators","paused","sliding","interval","$active","$items","keyboard","keydown","pause","cycle","slide","wrap","tagName","which","clearInterval","setInterval","getItemIndex","children","getItemForDirection","direction","active","activeIndex","itemIndex","eq","pos","that","$next","isCycling","relatedTarget","slideEvent","$nextIndicator","slidEvent","offsetWidth","carousel","clickHandler","href","slideIndex","$carousel","Collapse","$trigger","id","transitioning","getParent","addAriaAndCollapsedClass","getTargetFromTrigger","dimension","show","activesData","actives","startEvent","complete","scrollSize","camelCase","hide","offsetHeight","isOpen","collapse","Dropdown","clearMenus","contains","isActive","insertAfter","stopPropagation","dropdown","Modal","$body","$dialog","$backdrop","isShown","originalBodyPad","scrollbarWidth","ignoreBackdropClick","remote","load","_relatedTarget","BACKDROP_TRANSITION_DURATION","backdrop","checkScrollbar","setScrollbar","escape","resize","appendTo","adjustDialog","enforceFocus","off","hideModal","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","animate","doAnimate","currentTarget","focus","callbackRemove","modalIsOverflowing","clientHeight","paddingLeft","bodyIsOverflowing","paddingRight","fullWindowWidth","innerWidth","documentElementRect","getBoundingClientRect","right","abs","left","clientWidth","measureScrollbar","bodyPad","style","scrollDiv","className","append","removeChild","modal","showEvent","Popover","tooltip","placement","content","template","getDefaults","setContent","$tip","tip","getTitle","getContent","html","hasContent","$e","arrow","$arrow","popover","ScrollSpy","$scrollElement","offsets","targets","activeTarget","refresh","getScrollHeight","offsetMethod","offsetBase","isWindow","$href","sort","maxScroll","activate","clear","parents","parentsUntil","scrollspy","Tab","$ul","$previous","hideEvent","container","tab","Tooltip","enabled","hoverState","inState","animation","viewport","padding","getOptions","$viewport","isFunction","click","hover","triggers","eventIn","eventOut","enter","leave","_options","fixTitle","getDelegateOptions","defaults","isInStateTrue","inDom","ownerDocument","tipId","getUID","autoToken","autoPlace","display","getPosition","actualWidth","actualHeight","orgPlacement","viewportDim","width","calculatedOffset","getCalculatedOffset","applyPlacement","prevHoverState","marginTop","marginLeft","isNaN","setOffset","round","delta","getViewportAdjustedDelta","isVertical","arrowDelta","arrowOffsetPosition","replaceArrow","isBody","elRect","isSvg","SVGElement","elOffset","scroll","outerDims","viewportPadding","viewportDimensions","topEdgeOffset","bottomEdgeOffset","leftEdgeOffset","rightEdgeOffset","random","getElementById","enable","disable","toggleEnabled","destroy","removeData","duration","transEndEventNames","WebkitTransition","MozTransition","OTransition","transitionEnd","special","bsTransitionEnd","bindType","delegateType","handleObj","_default","deferred","nextArray","_parseFilename","_parseFilename2","extname","nextValue","includes","segment","_directLineStreaming","DirectLineStreaming","DirectLine","ConnectionStatus","_objectWithoutProperties2","_classCallCheck2","_createClass2","_BehaviorSubject","_Observable","_jwtDecode","nodeInterop","cache","_getRequireWildcardCache","newObj","hasPropertyDescriptor","_interopRequireWildcard","_dedupeFilenames","_excluded","WeakMap","cacheBabelInterop","cacheNodeInterop","ownKeys","enumerableOnly","symbols","sym","_objectSpread","getOwnPropertyDescriptors","wrapAjaxWithRetry","scheduler","notImplemented","assign","urlOrRequest","status","retryAfterValue","xhr","getResponseHeader","retryAfter","Observable","timer","flatMap","url","headers","post","put","patch","getJSON","intervalRefreshToken","lifetimeRefreshToken","errorExpiredToken","errorConversationEnded","errorFailedToConnect","konsole","_console","_len","optionalParams","_key","BehaviorSubject","Uninitialized","secret","token","webSocket","WebSocket","conversationStartProperties","locale","localeOnStartConversation","conversationId","watermark","streamUrl","retries","_botAgent","getBotAgent","botAgent","services","ajax","makeServices","parsedPollingInterval","pollingInterval","expiredTokenExhaustion","setConnectionStatusFallback","ExpiredToken","FailedToConnect","activity$","webSocketActivity$","pollingGetActivity$","share","_this","once","obs","connectionStatus$","connectionStatus","Connecting","Online","of","startConversation","conversation","referenceGrammarId","refreshTokenLoop","Ended","take","connectionStatusFrom","connectionStatusTo","maxAttempts","attempts","currStatus","getValue","protectedConnectionStatus","_this2","user","userIdOnStartConversation","commonHeaders","ajaxResponse","response","retryWhen","error$","mergeMap","_this3","tokenRefreshSubscription","refreshToken","subscribe","Date","_this4","checkConnection","expiredToken","unsubscribe","_this5","withCredentials","sessionId","catchExpiredToken","activity","_this6","attachments","postMessageWithAttachments","catchPostError","formData","_this7","attachmentNames","media","cleansedAttachments","attachment","FormData","Blob","_ref","contentUrl","responseType","contentType","_this8","poller$","subscriber","trigger$","startTimestamp","now","Accept","empty","activityGroup","observableFromActivityGroup","activities","_this9","observableWebSocket","getRetryDelay","reconnectToConversation","floor","_this10","sub","closed","ws","onopen","open","send","onclose","onerror","onmessage","parse","readyState","_this11","customAgent","clientAgent","userId","parseToken","InvalidTokenError","_regenerator","_classPrivateFieldGet2","_classPrivateFieldSet2","_toConsumableArray2","_asyncToGenerator2","_buffer","BFSE","_createDeferred","_crossFetch","_directLine","_WebSocketClientWithNetworkInformation","StreamHandler","c$","sq","shouldQueue","_processRequest","mark","_callee","request","logger","streams","stream0","activitySetJson","activitySet","stream","dataUri","readAsString","sent","abrupt","StreamingResponse","activityQueue","stop","_x","_x2","_networkInformation","networkInformation","addEventListener","removeEventListener","queueActivities","_callee2","_context2","activitySubscriber","theStreamHandler","connectDeferred","_x3","connectWithRetryAsync","_ref2","streamConnection","Authorization","_refreshToken","_callee3","numberOfAttempts","res","_yield$res$json","_args3","_context3","waitUntilOnline","refreshTokenLifetime","ok","json","statusText","t0","resp$","_ref3","_callee4","resp","numberOfStreams","idString","_JSON$parse","_context4","StreamingRequest","setBody","statusCode","Id","_x4","messageWithoutAttachments","httpContentList","_callee6","activityStream","_yield$resp$streams$","_context6","_ref5","_callee5","_context5","arrayBuffer","t1","_x5","_ref6","buffer","Buffer","SubscribableStream","httpContent","HttpContent","contentLength","addStream","readAsJson","_waitUntilOnline","_callee7","_context7","cs","_connectAsync","_callee9","re","params","abortController","urlSearchParams","wsUrl","_context9","AbortController","URLSearchParams","_ref7","_callee8","responseString","_context8","disconnectionHandler","requestHandler","processRequest","streamingRequest","signal","aborted","connect","flush","_x6","_x7","abort","_connectWithRetryAsync","_callee10","numRetries","_context10","connectAsync","filename","_filename$split$rever","reverse","_filename$split$rever2","_toArray2","_assertThisInitialized2","_get2","_inherits2","_possibleConstructorReturn2","_getPrototypeOf2","_classPrivateFieldGet4","_botframeworkStreaming","_createSuper","Derived","hasNativeReflectConstruct","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","NewTarget","_connectCalled","_handleNetworkInformationChange","_initialNetworkInformationType","WebSocketClientWithNetworkInformation","_WebSocketClient","_super","initialType","_classPrivateFieldGet3","WebSocketClient","require","__awaiter","_arguments","adopt","step","__generator","y","label","trys","ops","verb","op","PayloadAssembler","subscribableStream_1","payloads_1","contentStream_1","streamManager","_byteOrderMark","_utf","header","payloadType","payloadLength","_onCompleted","onCompleted","getPayloadStream","createPayloadStream","onReceive","_contentLength","PayloadTypes","catch","closeStream","payloadFromJson","stripBOM","streamData","streamDataAsString","_a","read","processResponse","responsePayload","receiveResponse","processStreams","requestPayload","receiveRequest","path","_b","responseStream","contentAssembler","getPayloadAssembler","ContentStream","assembler","getStream","readAll","bufferArray","stringToParse","allData","chunk","readToEnd","CancelDisassembler","disassemble","sendPayload","__extends","extendStatics","HttpContentStreamDisassembler","payloadDisassembler_1","contentStream","streamLength","PayloadDisassembler","serialize","RequestDisassembler","payloadTypes_1","_c","payload","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","receivePackets","receiveAction","_getStream","_receiveAction","TransportDisconnectedEvent","Empty","isConnected","disconnected","readSoFar","isStream","bytesActuallyRead","err_1","PayloadConstants","MaxHeaderLength","receive","_receiveHeaderBuffer","HeaderSerializer","deserialize","MaxPayloadLength","min","_receivePayloadBuffer","PayloadSender","_sender","sentCallback","packet","writePacket","leftOver","sendHeaderBuffer","alloc","TypeOffset","Encoding","Delimiter","TypeDelimiterOffset","headerLengthPadder","LengthLength","LengthOffset","LengthDelimeterOffset","IdOffset","IdDelimeterOffset","End","NotEnd","EndOffset","Terminator","TerminatorOffset","jsonBuffer","headerArray","headerEnd","MinLength","IdLength","lengthValue","totalLength","padChar","lengthString","PayloadAssemblerManager","payloadAssembler_1","onReceiveResponse","onReceiveRequest","activeAssemblers","createPayloadAssembler","RequestManager","PendingRequest","_pendingRequests","pendingRequestCount","signalResponse","requestId","pendingRequest","getResponse","rejectAllResponses","SendOperations","cancelDisassembler_1","httpContentStreamDisassembler_1","requestDisassembler_1","responseDisassembler_1","payloadSender","sendRequest","sendResponse","sendCancelStream","cancelStream","StreamManager","onCancelStream","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","serverAddress","resolver","rejector","setOnMessageHandler","bufferKey","packets","evt","fileReader","FileReader","queueEntry","onload","readAsArrayBuffer","setOnErrorHandler","setOnCloseHandler","browserWebSocket_1","payloadTransport_1","protocolAdapter_1","webSocketTransport_1","_url","_requestHandler","_disconnectionHandler","_requestManager","onConnectionDisconnected","_protocolAdapter","transport","WebSocketTransport","browserWebSocketClient_1","_activeOffset","_activeReceiveCount","onError","onClose","_activeReceiveResolve","_activeReceiveReject","trySignalData","_active","available","copy","tripletToBase64","base64","ieee754","SlowBuffer","INSPECT_MAX_BYTES","K_MAX_LENGTH","typedArraySupport","createBuffer","buf","encodingOrOffset","allocUnsafe","fromString","ArrayBuffer","isView","fromArrayLike","isInstance","fromArrayBuffer","fromObject","toPrimitive","assertSize","fill","encoding","checked","string","isEncoding","actual","byteOffset","isBuffer","numberIsNaN","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","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","list","swap16","swap32","swap64","toLocaleString","equals","inspect","trim","thisStart","thisEnd","thisCopy","targetCopy","MAX_ARGUMENTS_LENGTH","codePoints","fromCharCode","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","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","INVALID_BASE64_RE","base64clean","units","Infinity","leadSurrogate","byteArray","hi","lo","ReflectOwnKeys","R","ReflectApply","ProcessEmitWarning","NumberIsNaN","EventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","_addListener","prepend","events","existing","newListener","unshift","warned","w","emitter","onceWrapper","fired","removeListener","wrapFn","_onceWrap","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","spliceOne","eventListener","errorListener","setMaxListeners","getMaxListeners","doError","er","listeners","addListener","prependListener","prependOnceListener","originalListener","removeAllListeners","rawListeners","eventNames","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","LN2","ctor","superCtor","super_","TempCtor","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","runClearTimeout","marker","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","run","Item","noop","browser","argv","binding","cwd","chdir","umask","copyProps","SafeBuffer","Stream","EE","Readable","Writable","Transform","PassThrough","finished","pipeline","pipe","dest","ondata","ondrain","readable","resume","_isStdio","onend","didOnEnd","cleanup","_inheritsLoose","codes","createErrorType","Base","getMessage","arg1","arg2","arg3","NodeError","_Base","oneOf","expected","thing","startsWith","search","endsWith","this_len","substring","determiner","objectKeys","allowHalfOpen","_writableState","ended","onEndNT","highWaterMark","getBuffer","_readableState","destroyed","_transform","ReadableState","EElistenerCount","OurUint8Array","_uint8ArrayToBuffer","_isUint8Array","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","isDuplex","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","decoder","_destroy","readableAddChunk","addToFront","skipChunkCheck","onEofChunk","chunkInvalid","addChunk","maybeReadMore","emitReadable","_undestroy","undestroy","isPaused","setEncoding","enc","head","MAX_HWM","computeNewHighWaterMark","howMuchToRead","emitReadable_","flow","maybeReadMore_","pipeOnDrain","updateReadableListening","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","xs","nOrig","doRead","pipeOpts","endFn","stdout","unpipe","onunpipe","unpipeInfo","hasUnpiped","cleanedUp","onfinish","needDrain","dests","ev","asyncIterator","_fromList","iterable","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","doWrite","onwriteError","finishMaybe","onwriteStateUpdate","needFinish","clearBuffer","afterWrite","onwriteDrain","holder","allBuffers","callFinal","need","rState","endWritable","corkReq","hasInstance","cork","uncork","setDefaultEncoding","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","onReadable","wrapForNext","lastPromise","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","_Object$create","_classCallCheck","_createClass","custom","copyBuffer","tail","hasStrings","_getString","_getBuffer","nb","depth","customInspect","readableDestroyed","writableDestroyed","emitErrorNT","emitCloseNT","emitErrorAndCloseNT","ERR_STREAM_PREMATURE_CLOSE","isRequest","setHeader","eos","onlegacyfinish","writableEnded","readableEnded","onrequest","req","ERR_MISSING_ARGS","destroyer","popCallback","destroys","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","localStorage","_v","_v2","_v3","_v4","_nil","_version","_validate","_stringify","_parse","md5","unescape","encodeURIComponent","md5ToHexEncodedArray","wordsToMd5","bytesToWords","length32","hexTab","hex","getOutputLength","inputLength8","olda","oldb","oldc","oldd","md5ff","md5gg","md5hh","md5ii","safeAdd","length8","Uint32Array","lsw","bitRotateLeft","cnt","md5cmn","q","uuid","getRandomValues","rng","rnds8","crypto","msCrypto","z","ROTL","sha1","K","H","N","ceil","M","W","byteToHex","_rng","_nodeId","_clockseq","_lastMSecs","_lastNSecs","v1","clockseq","seedBytes","msecs","nsecs","dt","tl","tmh","_md","URL","DNS","stringToBytes","hashfunc","generateUUID","namespace","rnds","_sha","_regex","validate","isNativeReflectConstruct","possibleConstructorReturn","toPropertyKey","_extends","iterableToArrayLimit","_assertThisInitialized","_objectWithoutPropertiesLoose","_arrayLikeToArray","_arrayWithHoles","_asyncToGenerator","_callSuper","_construct","_createForOfIteratorHelper","F","_inherits","_iterableToArray","_nonIterableRest","_objectSpread2","_objectWithoutProperties","_possibleConstructorReturn","_regeneratorRuntime","Generator","makeInvokeMethod","h","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","_invoke","AsyncIterator","__await","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","_sent","dispatchException","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","displayName","isGeneratorFunction","awrap","rval","delegateYield","_slicedToArray","_superPropGet","_toArray","_toConsumableArray","_unsupportedIterableToArray","_wrapNativeSuper","Wrapper"],"sourceRoot":""}