botframework-directlinespeech-sdk 4.15.9 → 4.15.10-main.20230911.d62393e

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -416,7 +416,7 @@ eval("var _sliceInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs
416
416
  /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
417
417
 
418
418
  "use strict";
419
- eval("\n\nvar _interopRequireDefault = (__webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\")[\"default\"]);\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/classCallCheck */ \"./node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createClass */ \"./node_modules/@babel/runtime-corejs3/helpers/createClass.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/inherits */ \"./node_modules/@babel/runtime-corejs3/helpers/inherits.js\"));\n\nvar _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createSuper */ \"./node_modules/@babel/runtime-corejs3/helpers/createSuper.js\"));\n\nvar _createForOfIteratorHelper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createForOfIteratorHelper */ \"./node_modules/@babel/runtime-corejs3/helpers/createForOfIteratorHelper.js\"));\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"./node_modules/@babel/runtime-corejs3/helpers/typeof.js\"));\n\nvar _create = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/create */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/create.js\"));\n\nvar _defineProperty = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\"));\n\nvar _getOwnPropertyDescriptor = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js\"));\n\nvar _getOwnPropertyNames = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-names */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-names.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-prototype-of */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-prototype-of.js\"));\n\nvar _weakMap = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/weak-map */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/weak-map.js\"));\n\nvar _now = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/date/now */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/date/now.js\"));\n\nvar _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/keys */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js\"));\n\nvar _setPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/set-prototype-of */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/set-prototype-of.js\"));\n\nvar _map = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/map */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/map.js\"));\n\nvar _isArray = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\"));\n\nvar _defineProperties = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-properties */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js\"));\n\nvar _symbol = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/symbol */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/symbol.js\"));\n\nvar _toStringTag = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/symbol/to-string-tag */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/symbol/to-string-tag.js\"));\n\nvar __create = _create[\"default\"];\nvar __defProp = _defineProperty[\"default\"];\nvar __getOwnPropDesc = _getOwnPropertyDescriptor[\"default\"];\nvar __getOwnPropNames = _getOwnPropertyNames[\"default\"];\nvar __getProtoOf = _getPrototypeOf[\"default\"];\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\n\nvar __markAsModule = function __markAsModule(target) {\n return __defProp(target, \"__esModule\", {\n value: true\n });\n};\n\nvar __commonJS = function __commonJS(cb, mod) {\n return function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = {\n exports: {}\n }).exports, mod), mod.exports;\n };\n};\n\nvar __reExport = function __reExport(target, module2, copyDefault, desc) {\n if (module2 && (0, _typeof2[\"default\"])(module2) === \"object\" || typeof module2 === \"function\") {\n var _iterator = (0, _createForOfIteratorHelper2[\"default\"])(__getOwnPropNames(module2)),\n _step;\n\n try {\n var _loop = function _loop() {\n var key = _step.value;\n if (!__hasOwnProp.call(target, key) && (copyDefault || key !== \"default\")) __defProp(target, key, {\n get: function get() {\n return module2[key];\n },\n enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable\n });\n };\n\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n\n return target;\n};\n\nvar __toESM = function __toESM(module2, isNodeMode) {\n return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, \"default\", !isNodeMode && module2 && module2.__esModule ? {\n get: function get() {\n return module2[\"default\"];\n },\n enumerable: true\n } : {\n value: module2,\n enumerable: true\n })), module2);\n}; // ../abort-controller/node_modules/event-target-shim/dist/event-target-shim.js\n\n\nvar require_event_target_shim = __commonJS({\n \"../abort-controller/node_modules/event-target-shim/dist/event-target-shim.js\": function abortControllerNode_modulesEventTargetShimDistEventTargetShimJs(exports2, module2) {\n \"use strict\";\n\n (0, _defineProperty[\"default\"])(exports2, \"__esModule\", {\n value: true\n });\n var privateData = /* @__PURE__ */new _weakMap[\"default\"]();\n var wrappers = /* @__PURE__ */new _weakMap[\"default\"]();\n\n function pd(event) {\n var retv = privateData.get(event);\n console.assert(retv != null, \"'this' is expected an Event object, but got\", event);\n return retv;\n }\n\n function setCancelFlag(data) {\n if (data.passiveListener != null) {\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(\"Unable to preventDefault inside passive event listener invocation.\", data.passiveListener);\n }\n\n return;\n }\n\n if (!data.event.cancelable) {\n return;\n }\n\n data.canceled = true;\n\n if (typeof data.event.preventDefault === \"function\") {\n data.event.preventDefault();\n }\n }\n\n function Event(eventTarget, event) {\n privateData.set(this, {\n eventTarget: eventTarget,\n event: event,\n eventPhase: 2,\n currentTarget: eventTarget,\n canceled: false,\n stopped: false,\n immediateStopped: false,\n passiveListener: null,\n timeStamp: event.timeStamp || (0, _now[\"default\"])()\n });\n (0, _defineProperty[\"default\"])(this, \"isTrusted\", {\n value: false,\n enumerable: true\n });\n var keys = (0, _keys[\"default\"])(event);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!(key in this)) {\n (0, _defineProperty[\"default\"])(this, key, defineRedirectDescriptor(key));\n }\n }\n }\n\n Event.prototype = {\n get type() {\n return pd(this).event.type;\n },\n\n get target() {\n return pd(this).eventTarget;\n },\n\n get currentTarget() {\n return pd(this).currentTarget;\n },\n\n composedPath: function composedPath() {\n var currentTarget = pd(this).currentTarget;\n\n if (currentTarget == null) {\n return [];\n }\n\n return [currentTarget];\n },\n\n get NONE() {\n return 0;\n },\n\n get CAPTURING_PHASE() {\n return 1;\n },\n\n get AT_TARGET() {\n return 2;\n },\n\n get BUBBLING_PHASE() {\n return 3;\n },\n\n get eventPhase() {\n return pd(this).eventPhase;\n },\n\n stopPropagation: function stopPropagation() {\n var data = pd(this);\n data.stopped = true;\n\n if (typeof data.event.stopPropagation === \"function\") {\n data.event.stopPropagation();\n }\n },\n stopImmediatePropagation: function stopImmediatePropagation() {\n var data = pd(this);\n data.stopped = true;\n data.immediateStopped = true;\n\n if (typeof data.event.stopImmediatePropagation === \"function\") {\n data.event.stopImmediatePropagation();\n }\n },\n\n get bubbles() {\n return Boolean(pd(this).event.bubbles);\n },\n\n get cancelable() {\n return Boolean(pd(this).event.cancelable);\n },\n\n preventDefault: function preventDefault() {\n setCancelFlag(pd(this));\n },\n\n get defaultPrevented() {\n return pd(this).canceled;\n },\n\n get composed() {\n return Boolean(pd(this).event.composed);\n },\n\n get timeStamp() {\n return pd(this).timeStamp;\n },\n\n get srcElement() {\n return pd(this).eventTarget;\n },\n\n get cancelBubble() {\n return pd(this).stopped;\n },\n\n set cancelBubble(value) {\n if (!value) {\n return;\n }\n\n var data = pd(this);\n data.stopped = true;\n\n if (typeof data.event.cancelBubble === \"boolean\") {\n data.event.cancelBubble = true;\n }\n },\n\n get returnValue() {\n return !pd(this).canceled;\n },\n\n set returnValue(value) {\n if (!value) {\n setCancelFlag(pd(this));\n }\n },\n\n initEvent: function initEvent() {}\n };\n (0, _defineProperty[\"default\"])(Event.prototype, \"constructor\", {\n value: Event,\n configurable: true,\n writable: true\n });\n\n if (typeof window !== \"undefined\" && typeof window.Event !== \"undefined\") {\n (0, _setPrototypeOf[\"default\"])(Event.prototype, window.Event.prototype);\n wrappers.set(window.Event.prototype, Event);\n }\n\n function defineRedirectDescriptor(key) {\n return {\n get: function get() {\n return pd(this).event[key];\n },\n set: function set(value) {\n pd(this).event[key] = value;\n },\n configurable: true,\n enumerable: true\n };\n }\n\n function defineCallDescriptor(key) {\n return {\n value: function value() {\n var event = pd(this).event;\n return event[key].apply(event, arguments);\n },\n configurable: true,\n enumerable: true\n };\n }\n\n function defineWrapper(BaseEvent, proto) {\n var keys = (0, _keys[\"default\"])(proto);\n\n if (keys.length === 0) {\n return BaseEvent;\n }\n\n function CustomEvent(eventTarget, event) {\n BaseEvent.call(this, eventTarget, event);\n }\n\n CustomEvent.prototype = (0, _create[\"default\"])(BaseEvent.prototype, {\n constructor: {\n value: CustomEvent,\n configurable: true,\n writable: true\n }\n });\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!(key in BaseEvent.prototype)) {\n var descriptor = (0, _getOwnPropertyDescriptor[\"default\"])(proto, key);\n var isFunc = typeof descriptor.value === \"function\";\n (0, _defineProperty[\"default\"])(CustomEvent.prototype, key, isFunc ? defineCallDescriptor(key) : defineRedirectDescriptor(key));\n }\n }\n\n return CustomEvent;\n }\n\n function getWrapper(proto) {\n if (proto == null || proto === Object.prototype) {\n return Event;\n }\n\n var wrapper = wrappers.get(proto);\n\n if (wrapper == null) {\n wrapper = defineWrapper(getWrapper((0, _getPrototypeOf[\"default\"])(proto)), proto);\n wrappers.set(proto, wrapper);\n }\n\n return wrapper;\n }\n\n function wrapEvent(eventTarget, event) {\n var Wrapper = getWrapper((0, _getPrototypeOf[\"default\"])(event));\n return new Wrapper(eventTarget, event);\n }\n\n function isStopped(event) {\n return pd(event).immediateStopped;\n }\n\n function setEventPhase(event, eventPhase) {\n pd(event).eventPhase = eventPhase;\n }\n\n function setCurrentTarget(event, currentTarget) {\n pd(event).currentTarget = currentTarget;\n }\n\n function setPassiveListener(event, passiveListener) {\n pd(event).passiveListener = passiveListener;\n }\n\n var listenersMap = /* @__PURE__ */new _weakMap[\"default\"]();\n var CAPTURE = 1;\n var BUBBLE = 2;\n var ATTRIBUTE = 3;\n\n function isObject(x) {\n return x !== null && (0, _typeof2[\"default\"])(x) === \"object\";\n }\n\n function getListeners(eventTarget) {\n var listeners = listenersMap.get(eventTarget);\n\n if (listeners == null) {\n throw new TypeError(\"'this' is expected an EventTarget object, but got another value.\");\n }\n\n return listeners;\n }\n\n function defineEventAttributeDescriptor(eventName) {\n return {\n get: function get() {\n var listeners = getListeners(this);\n var node = listeners.get(eventName);\n\n while (node != null) {\n if (node.listenerType === ATTRIBUTE) {\n return node.listener;\n }\n\n node = node.next;\n }\n\n return null;\n },\n set: function set(listener) {\n if (typeof listener !== \"function\" && !isObject(listener)) {\n listener = null;\n }\n\n var listeners = getListeners(this);\n var prev = null;\n var node = listeners.get(eventName);\n\n while (node != null) {\n if (node.listenerType === ATTRIBUTE) {\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners[\"delete\"](eventName);\n }\n } else {\n prev = node;\n }\n\n node = node.next;\n }\n\n if (listener !== null) {\n var newNode = {\n listener: listener,\n listenerType: ATTRIBUTE,\n passive: false,\n once: false,\n next: null\n };\n\n if (prev === null) {\n listeners.set(eventName, newNode);\n } else {\n prev.next = newNode;\n }\n }\n },\n configurable: true,\n enumerable: true\n };\n }\n\n function defineEventAttribute(eventTargetPrototype, eventName) {\n (0, _defineProperty[\"default\"])(eventTargetPrototype, \"on\".concat(eventName), defineEventAttributeDescriptor(eventName));\n }\n\n function defineCustomEventTarget(eventNames) {\n function CustomEventTarget() {\n EventTarget.call(this);\n }\n\n CustomEventTarget.prototype = (0, _create[\"default\"])(EventTarget.prototype, {\n constructor: {\n value: CustomEventTarget,\n configurable: true,\n writable: true\n }\n });\n\n for (var i = 0; i < eventNames.length; ++i) {\n defineEventAttribute(CustomEventTarget.prototype, eventNames[i]);\n }\n\n return CustomEventTarget;\n }\n\n function EventTarget() {\n if (this instanceof EventTarget) {\n listenersMap.set(this, /* @__PURE__ */new _map[\"default\"]());\n return;\n }\n\n if (arguments.length === 1 && (0, _isArray[\"default\"])(arguments[0])) {\n return defineCustomEventTarget(arguments[0]);\n }\n\n if (arguments.length > 0) {\n var types = new Array(arguments.length);\n\n for (var i = 0; i < arguments.length; ++i) {\n types[i] = arguments[i];\n }\n\n return defineCustomEventTarget(types);\n }\n\n throw new TypeError(\"Cannot call a class as a function\");\n }\n\n EventTarget.prototype = {\n addEventListener: function addEventListener(eventName, listener, options) {\n if (listener == null) {\n return;\n }\n\n if (typeof listener !== \"function\" && !isObject(listener)) {\n throw new TypeError(\"'listener' should be a function or an object.\");\n }\n\n var listeners = getListeners(this);\n var optionsIsObj = isObject(options);\n var capture = optionsIsObj ? Boolean(options.capture) : Boolean(options);\n var listenerType = capture ? CAPTURE : BUBBLE;\n var newNode = {\n listener: listener,\n listenerType: listenerType,\n passive: optionsIsObj && Boolean(options.passive),\n once: optionsIsObj && Boolean(options.once),\n next: null\n };\n var node = listeners.get(eventName);\n\n if (node === void 0) {\n listeners.set(eventName, newNode);\n return;\n }\n\n var prev = null;\n\n while (node != null) {\n if (node.listener === listener && node.listenerType === listenerType) {\n return;\n }\n\n prev = node;\n node = node.next;\n }\n\n prev.next = newNode;\n },\n removeEventListener: function removeEventListener(eventName, listener, options) {\n if (listener == null) {\n return;\n }\n\n var listeners = getListeners(this);\n var capture = isObject(options) ? Boolean(options.capture) : Boolean(options);\n var listenerType = capture ? CAPTURE : BUBBLE;\n var prev = null;\n var node = listeners.get(eventName);\n\n while (node != null) {\n if (node.listener === listener && node.listenerType === listenerType) {\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners[\"delete\"](eventName);\n }\n\n return;\n }\n\n prev = node;\n node = node.next;\n }\n },\n dispatchEvent: function dispatchEvent(event) {\n if (event == null || typeof event.type !== \"string\") {\n throw new TypeError('\"event.type\" should be a string.');\n }\n\n var listeners = getListeners(this);\n var eventName = event.type;\n var node = listeners.get(eventName);\n\n if (node == null) {\n return true;\n }\n\n var wrappedEvent = wrapEvent(this, event);\n var prev = null;\n\n while (node != null) {\n if (node.once) {\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners[\"delete\"](eventName);\n }\n } else {\n prev = node;\n }\n\n setPassiveListener(wrappedEvent, node.passive ? node.listener : null);\n\n if (typeof node.listener === \"function\") {\n try {\n node.listener.call(this, wrappedEvent);\n } catch (err) {\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(err);\n }\n }\n } else if (node.listenerType !== ATTRIBUTE && typeof node.listener.handleEvent === \"function\") {\n node.listener.handleEvent(wrappedEvent);\n }\n\n if (isStopped(wrappedEvent)) {\n break;\n }\n\n node = node.next;\n }\n\n setPassiveListener(wrappedEvent, null);\n setEventPhase(wrappedEvent, 0);\n setCurrentTarget(wrappedEvent, null);\n return !wrappedEvent.defaultPrevented;\n }\n };\n (0, _defineProperty[\"default\"])(EventTarget.prototype, \"constructor\", {\n value: EventTarget,\n configurable: true,\n writable: true\n });\n\n if (typeof window !== \"undefined\" && typeof window.EventTarget !== \"undefined\") {\n (0, _setPrototypeOf[\"default\"])(EventTarget.prototype, window.EventTarget.prototype);\n }\n\n exports2.defineEventAttribute = defineEventAttribute;\n exports2.EventTarget = EventTarget;\n exports2[\"default\"] = EventTarget;\n module2.exports = EventTarget;\n module2.exports.EventTarget = module2.exports[\"default\"] = EventTarget;\n module2.exports.defineEventAttribute = defineEventAttribute;\n }\n}); // ../abort-controller/dist/abort-controller.js\n\n\nvar require_abort_controller = __commonJS({\n \"../abort-controller/dist/abort-controller.js\": function abortControllerDistAbortControllerJs(exports2, module2) {\n \"use strict\";\n\n (0, _defineProperty[\"default\"])(exports2, \"__esModule\", {\n value: true\n });\n var eventTargetShim = require_event_target_shim();\n\n var AbortSignal2 = /*#__PURE__*/function (_eventTargetShim$Even) {\n (0, _inherits2[\"default\"])(AbortSignal2, _eventTargetShim$Even);\n\n var _super = (0, _createSuper2[\"default\"])(AbortSignal2);\n\n function AbortSignal2() {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, AbortSignal2);\n _this = _super.call(this);\n throw new TypeError(\"AbortSignal cannot be constructed directly\");\n return _this;\n }\n\n (0, _createClass2[\"default\"])(AbortSignal2, [{\n key: \"aborted\",\n get: function get() {\n var aborted = abortedFlags.get(this);\n\n if (typeof aborted !== \"boolean\") {\n throw new TypeError(\"Expected 'this' to be an 'AbortSignal' object, but got \".concat(this === null ? \"null\" : (0, _typeof2[\"default\"])(this)));\n }\n\n return aborted;\n }\n }]);\n return AbortSignal2;\n }(eventTargetShim.EventTarget);\n\n eventTargetShim.defineEventAttribute(AbortSignal2.prototype, \"abort\");\n\n function createAbortSignal() {\n var signal = (0, _create[\"default\"])(AbortSignal2.prototype);\n eventTargetShim.EventTarget.call(signal);\n abortedFlags.set(signal, false);\n return signal;\n }\n\n function abortSignal(signal) {\n if (abortedFlags.get(signal) !== false) {\n return;\n }\n\n abortedFlags.set(signal, true);\n signal.dispatchEvent({\n type: \"abort\"\n });\n }\n\n var abortedFlags = /* @__PURE__ */new _weakMap[\"default\"]();\n (0, _defineProperties[\"default\"])(AbortSignal2.prototype, {\n aborted: {\n enumerable: true\n }\n });\n\n if (typeof _symbol[\"default\"] === \"function\" && (0, _typeof2[\"default\"])(_toStringTag[\"default\"]) === \"symbol\") {\n (0, _defineProperty[\"default\"])(AbortSignal2.prototype, _toStringTag[\"default\"], {\n configurable: true,\n value: \"AbortSignal\"\n });\n }\n\n var AbortController2 = /*#__PURE__*/function () {\n function AbortController2() {\n (0, _classCallCheck2[\"default\"])(this, AbortController2);\n signals.set(this, createAbortSignal());\n }\n\n (0, _createClass2[\"default\"])(AbortController2, [{\n key: \"signal\",\n get: function get() {\n return getSignal(this);\n }\n }, {\n key: \"abort\",\n value: function abort() {\n abortSignal(getSignal(this));\n }\n }]);\n return AbortController2;\n }();\n\n var signals = /* @__PURE__ */new _weakMap[\"default\"]();\n\n function getSignal(controller) {\n var signal = signals.get(controller);\n\n if (signal == null) {\n throw new TypeError(\"Expected 'this' to be an 'AbortController' object, but got \".concat(controller === null ? \"null\" : (0, _typeof2[\"default\"])(controller)));\n }\n\n return signal;\n }\n\n (0, _defineProperties[\"default\"])(AbortController2.prototype, {\n signal: {\n enumerable: true\n },\n abort: {\n enumerable: true\n }\n });\n\n if (typeof _symbol[\"default\"] === \"function\" && (0, _typeof2[\"default\"])(_toStringTag[\"default\"]) === \"symbol\") {\n (0, _defineProperty[\"default\"])(AbortController2.prototype, _toStringTag[\"default\"], {\n configurable: true,\n value: \"AbortController\"\n });\n }\n\n exports2.AbortController = AbortController2;\n exports2.AbortSignal = AbortSignal2;\n exports2[\"default\"] = AbortController2;\n module2.exports = AbortController2;\n module2.exports.AbortController = module2.exports[\"default\"] = AbortController2;\n module2.exports.AbortSignal = AbortSignal2;\n }\n}); // src/index.js\n\n\nvar import_abort_controller = __toESM(require_abort_controller());\n\nvar NativeAbortController = (typeof window === \"undefined\" ? {} : window).AbortController;\nvar AbortController = NativeAbortController || import_abort_controller[\"default\"];\nvar NativeAbortSignal = (typeof window === \"undefined\" ? {} : window).AbortSignal;\nvar AbortSignal = NativeAbortSignal || import_abort_controller.AbortSignal;\nmodule.exports = {\n AbortController: AbortController,\n AbortSignal: AbortSignal,\n \"default\": AbortController\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYWJvcnQtY29udHJvbGxlci1lczUvbGliL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLDZCQUE2QixzS0FBMEU7O0FBRXZHLDhDQUE4QyxtQkFBTyxDQUFDLHNIQUErQzs7QUFFckcsMkNBQTJDLG1CQUFPLENBQUMsZ0hBQTRDOztBQUUvRix3Q0FBd0MsbUJBQU8sQ0FBQywwR0FBeUM7O0FBRXpGLDJDQUEyQyxtQkFBTyxDQUFDLGdIQUE0Qzs7QUFFL0YseURBQXlELG1CQUFPLENBQUMsNElBQTBEOztBQUUzSCxzQ0FBc0MsbUJBQU8sQ0FBQyxzR0FBdUM7O0FBRXJGLHFDQUFxQyxtQkFBTyxDQUFDLGtJQUFxRDs7QUFFbEcsNkNBQTZDLG1CQUFPLENBQUMsb0pBQThEOztBQUVuSCx1REFBdUQsbUJBQU8sQ0FBQyw0S0FBMEU7O0FBRXpJLGtEQUFrRCxtQkFBTyxDQUFDLGtLQUFxRTs7QUFFL0gsNkNBQTZDLG1CQUFPLENBQUMsc0pBQStEOztBQUVwSCxzQ0FBc0MsbUJBQU8sQ0FBQyx3SEFBZ0Q7O0FBRTlGLGtDQUFrQyxtQkFBTyxDQUFDLHdIQUFnRDs7QUFFMUYsbUNBQW1DLG1CQUFPLENBQUMsOEhBQW1EOztBQUU5Riw2Q0FBNkMsbUJBQU8sQ0FBQyxzSkFBK0Q7O0FBRXBILGtDQUFrQyxtQkFBTyxDQUFDLDhHQUEyQzs7QUFFckYsc0NBQXNDLG1CQUFPLENBQUMsb0lBQXNEOztBQUVwRywrQ0FBK0MsbUJBQU8sQ0FBQyx3SkFBZ0U7O0FBRXZILHFDQUFxQyxtQkFBTyxDQUFDLG9IQUE4Qzs7QUFFM0YsMENBQTBDLG1CQUFPLENBQUMsZ0pBQTREOztBQUU5RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsU0FBUztBQUNUOztBQUVBLDBCQUEwQiw4QkFBOEI7QUFDeEQ7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLG1HQUFtRztBQUNuRztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsR0FBRzs7O0FBR0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUEsc0JBQXNCLGlCQUFpQjtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQLHNCQUFzQixpQkFBaUI7QUFDdkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQLHNCQUFzQix1QkFBdUI7QUFDN0M7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsd0JBQXdCLHNCQUFzQjtBQUM5QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEdBQUc7OztBQUdKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsR0FBRzs7O0FBR0o7O0FBRUEsZ0VBQWdFO0FBQ2hFO0FBQ0EsNERBQTREO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL2JvdGZyYW1ld29yay1kaXJlY3RsaW5lc3BlZWNoLXNkay8uL25vZGVfbW9kdWxlcy9hYm9ydC1jb250cm9sbGVyLWVzNS9saWIvaW5kZXguanM/NDJkNCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKVtcImRlZmF1bHRcIl07XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCIpKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS1jb3JlanMzL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIikpO1xuXG52YXIgX2luaGVyaXRzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lLWNvcmVqczMvaGVscGVycy9pbmhlcml0c1wiKSk7XG5cbnZhciBfY3JlYXRlU3VwZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9oZWxwZXJzL2NyZWF0ZVN1cGVyXCIpKTtcblxudmFyIF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lLWNvcmVqczMvaGVscGVycy9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyXCIpKTtcblxudmFyIF90eXBlb2YyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9oZWxwZXJzL3R5cGVvZlwiKSk7XG5cbnZhciBfY3JlYXRlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9vYmplY3QvY3JlYXRlXCIpKTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lLWNvcmVqczMvY29yZS1qcy1zdGFibGUvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKSk7XG5cbnZhciBfZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yXCIpKTtcblxudmFyIF9nZXRPd25Qcm9wZXJ0eU5hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1uYW1lc1wiKSk7XG5cbnZhciBfZ2V0UHJvdG90eXBlT2YgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS1jb3JlanMzL2NvcmUtanMtc3RhYmxlL29iamVjdC9nZXQtcHJvdG90eXBlLW9mXCIpKTtcblxudmFyIF93ZWFrTWFwID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS93ZWFrLW1hcFwiKSk7XG5cbnZhciBfbm93ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9kYXRlL25vd1wiKSk7XG5cbnZhciBfa2V5cyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lLWNvcmVqczMvY29yZS1qcy1zdGFibGUvb2JqZWN0L2tleXNcIikpO1xuXG52YXIgX3NldFByb3RvdHlwZU9mID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKSk7XG5cbnZhciBfbWFwID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9tYXBcIikpO1xuXG52YXIgX2lzQXJyYXkgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS1jb3JlanMzL2NvcmUtanMtc3RhYmxlL2FycmF5L2lzLWFycmF5XCIpKTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0aWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9vYmplY3QvZGVmaW5lLXByb3BlcnRpZXNcIikpO1xuXG52YXIgX3N5bWJvbCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lLWNvcmVqczMvY29yZS1qcy1zdGFibGUvc3ltYm9sXCIpKTtcblxudmFyIF90b1N0cmluZ1RhZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lLWNvcmVqczMvY29yZS1qcy1zdGFibGUvc3ltYm9sL3RvLXN0cmluZy10YWdcIikpO1xuXG52YXIgX19jcmVhdGUgPSBfY3JlYXRlW1wiZGVmYXVsdFwiXTtcbnZhciBfX2RlZlByb3AgPSBfZGVmaW5lUHJvcGVydHlbXCJkZWZhdWx0XCJdO1xudmFyIF9fZ2V0T3duUHJvcERlc2MgPSBfZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yW1wiZGVmYXVsdFwiXTtcbnZhciBfX2dldE93blByb3BOYW1lcyA9IF9nZXRPd25Qcm9wZXJ0eU5hbWVzW1wiZGVmYXVsdFwiXTtcbnZhciBfX2dldFByb3RvT2YgPSBfZ2V0UHJvdG90eXBlT2ZbXCJkZWZhdWx0XCJdO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbnZhciBfX21hcmtBc01vZHVsZSA9IGZ1bmN0aW9uIF9fbWFya0FzTW9kdWxlKHRhcmdldCkge1xuICByZXR1cm4gX19kZWZQcm9wKHRhcmdldCwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxuICB9KTtcbn07XG5cbnZhciBfX2NvbW1vbkpTID0gZnVuY3Rpb24gX19jb21tb25KUyhjYiwgbW9kKSB7XG4gIHJldHVybiBmdW5jdGlvbiBfX3JlcXVpcmUoKSB7XG4gICAgcmV0dXJuIG1vZCB8fCAoMCwgY2JbX19nZXRPd25Qcm9wTmFtZXMoY2IpWzBdXSkoKG1vZCA9IHtcbiAgICAgIGV4cG9ydHM6IHt9XG4gICAgfSkuZXhwb3J0cywgbW9kKSwgbW9kLmV4cG9ydHM7XG4gIH07XG59O1xuXG52YXIgX19yZUV4cG9ydCA9IGZ1bmN0aW9uIF9fcmVFeHBvcnQodGFyZ2V0LCBtb2R1bGUyLCBjb3B5RGVmYXVsdCwgZGVzYykge1xuICBpZiAobW9kdWxlMiAmJiAoMCwgX3R5cGVvZjJbXCJkZWZhdWx0XCJdKShtb2R1bGUyKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgbW9kdWxlMiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdmFyIF9pdGVyYXRvciA9ICgwLCBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcjJbXCJkZWZhdWx0XCJdKShfX2dldE93blByb3BOYW1lcyhtb2R1bGUyKSksXG4gICAgICAgIF9zdGVwO1xuXG4gICAgdHJ5IHtcbiAgICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKCkge1xuICAgICAgICB2YXIga2V5ID0gX3N0ZXAudmFsdWU7XG4gICAgICAgIGlmICghX19oYXNPd25Qcm9wLmNhbGwodGFyZ2V0LCBrZXkpICYmIChjb3B5RGVmYXVsdCB8fCBrZXkgIT09IFwiZGVmYXVsdFwiKSkgX19kZWZQcm9wKHRhcmdldCwga2V5LCB7XG4gICAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgICAgICByZXR1cm4gbW9kdWxlMltrZXldO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZW51bWVyYWJsZTogIShkZXNjID0gX19nZXRPd25Qcm9wRGVzYyhtb2R1bGUyLCBrZXkpKSB8fCBkZXNjLmVudW1lcmFibGVcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBmb3IgKF9pdGVyYXRvci5zKCk7ICEoX3N0ZXAgPSBfaXRlcmF0b3IubigpKS5kb25lOykge1xuICAgICAgICBfbG9vcCgpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgX2l0ZXJhdG9yLmUoZXJyKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgX2l0ZXJhdG9yLmYoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufTtcblxudmFyIF9fdG9FU00gPSBmdW5jdGlvbiBfX3RvRVNNKG1vZHVsZTIsIGlzTm9kZU1vZGUpIHtcbiAgcmV0dXJuIF9fcmVFeHBvcnQoX19tYXJrQXNNb2R1bGUoX19kZWZQcm9wKG1vZHVsZTIgIT0gbnVsbCA/IF9fY3JlYXRlKF9fZ2V0UHJvdG9PZihtb2R1bGUyKSkgOiB7fSwgXCJkZWZhdWx0XCIsICFpc05vZGVNb2RlICYmIG1vZHVsZTIgJiYgbW9kdWxlMi5fX2VzTW9kdWxlID8ge1xuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIG1vZHVsZTJbXCJkZWZhdWx0XCJdO1xuICAgIH0sXG4gICAgZW51bWVyYWJsZTogdHJ1ZVxuICB9IDoge1xuICAgIHZhbHVlOiBtb2R1bGUyLFxuICAgIGVudW1lcmFibGU6IHRydWVcbiAgfSkpLCBtb2R1bGUyKTtcbn07IC8vIC4uL2Fib3J0LWNvbnRyb2xsZXIvbm9kZV9tb2R1bGVzL2V2ZW50LXRhcmdldC1zaGltL2Rpc3QvZXZlbnQtdGFyZ2V0LXNoaW0uanNcblxuXG52YXIgcmVxdWlyZV9ldmVudF90YXJnZXRfc2hpbSA9IF9fY29tbW9uSlMoe1xuICBcIi4uL2Fib3J0LWNvbnRyb2xsZXIvbm9kZV9tb2R1bGVzL2V2ZW50LXRhcmdldC1zaGltL2Rpc3QvZXZlbnQtdGFyZ2V0LXNoaW0uanNcIjogZnVuY3Rpb24gYWJvcnRDb250cm9sbGVyTm9kZV9tb2R1bGVzRXZlbnRUYXJnZXRTaGltRGlzdEV2ZW50VGFyZ2V0U2hpbUpzKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAoMCwgX2RlZmluZVByb3BlcnR5W1wiZGVmYXVsdFwiXSkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciBwcml2YXRlRGF0YSA9IC8qIEBfX1BVUkVfXyAqL25ldyBfd2Vha01hcFtcImRlZmF1bHRcIl0oKTtcbiAgICB2YXIgd3JhcHBlcnMgPSAvKiBAX19QVVJFX18gKi9uZXcgX3dlYWtNYXBbXCJkZWZhdWx0XCJdKCk7XG5cbiAgICBmdW5jdGlvbiBwZChldmVudCkge1xuICAgICAgdmFyIHJldHYgPSBwcml2YXRlRGF0YS5nZXQoZXZlbnQpO1xuICAgICAgY29uc29sZS5hc3NlcnQocmV0diAhPSBudWxsLCBcIid0aGlzJyBpcyBleHBlY3RlZCBhbiBFdmVudCBvYmplY3QsIGJ1dCBnb3RcIiwgZXZlbnQpO1xuICAgICAgcmV0dXJuIHJldHY7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0Q2FuY2VsRmxhZyhkYXRhKSB7XG4gICAgICBpZiAoZGF0YS5wYXNzaXZlTGlzdGVuZXIgIT0gbnVsbCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09IFwidW5kZWZpbmVkXCIgJiYgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJVbmFibGUgdG8gcHJldmVudERlZmF1bHQgaW5zaWRlIHBhc3NpdmUgZXZlbnQgbGlzdGVuZXIgaW52b2NhdGlvbi5cIiwgZGF0YS5wYXNzaXZlTGlzdGVuZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWRhdGEuZXZlbnQuY2FuY2VsYWJsZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGRhdGEuY2FuY2VsZWQgPSB0cnVlO1xuXG4gICAgICBpZiAodHlwZW9mIGRhdGEuZXZlbnQucHJldmVudERlZmF1bHQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBkYXRhLmV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gRXZlbnQoZXZlbnRUYXJnZXQsIGV2ZW50KSB7XG4gICAgICBwcml2YXRlRGF0YS5zZXQodGhpcywge1xuICAgICAgICBldmVudFRhcmdldDogZXZlbnRUYXJnZXQsXG4gICAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgICAgZXZlbnRQaGFzZTogMixcbiAgICAgICAgY3VycmVudFRhcmdldDogZXZlbnRUYXJnZXQsXG4gICAgICAgIGNhbmNlbGVkOiBmYWxzZSxcbiAgICAgICAgc3RvcHBlZDogZmFsc2UsXG4gICAgICAgIGltbWVkaWF0ZVN0b3BwZWQ6IGZhbHNlLFxuICAgICAgICBwYXNzaXZlTGlzdGVuZXI6IG51bGwsXG4gICAgICAgIHRpbWVTdGFtcDogZXZlbnQudGltZVN0YW1wIHx8ICgwLCBfbm93W1wiZGVmYXVsdFwiXSkoKVxuICAgICAgfSk7XG4gICAgICAoMCwgX2RlZmluZVByb3BlcnR5W1wiZGVmYXVsdFwiXSkodGhpcywgXCJpc1RydXN0ZWRcIiwge1xuICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIH0pO1xuICAgICAgdmFyIGtleXMgPSAoMCwgX2tleXNbXCJkZWZhdWx0XCJdKShldmVudCk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgICBpZiAoIShrZXkgaW4gdGhpcykpIHtcbiAgICAgICAgICAoMCwgX2RlZmluZVByb3BlcnR5W1wiZGVmYXVsdFwiXSkodGhpcywga2V5LCBkZWZpbmVSZWRpcmVjdERlc2NyaXB0b3Ioa2V5KSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBFdmVudC5wcm90b3R5cGUgPSB7XG4gICAgICBnZXQgdHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHBkKHRoaXMpLmV2ZW50LnR5cGU7XG4gICAgICB9LFxuXG4gICAgICBnZXQgdGFyZ2V0KCkge1xuICAgICAgICByZXR1cm4gcGQodGhpcykuZXZlbnRUYXJnZXQ7XG4gICAgICB9LFxuXG4gICAgICBnZXQgY3VycmVudFRhcmdldCgpIHtcbiAgICAgICAgcmV0dXJuIHBkKHRoaXMpLmN1cnJlbnRUYXJnZXQ7XG4gICAgICB9LFxuXG4gICAgICBjb21wb3NlZFBhdGg6IGZ1bmN0aW9uIGNvbXBvc2VkUGF0aCgpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRUYXJnZXQgPSBwZCh0aGlzKS5jdXJyZW50VGFyZ2V0O1xuXG4gICAgICAgIGlmIChjdXJyZW50VGFyZ2V0ID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW2N1cnJlbnRUYXJnZXRdO1xuICAgICAgfSxcblxuICAgICAgZ2V0IE5PTkUoKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSxcblxuICAgICAgZ2V0IENBUFRVUklOR19QSEFTRSgpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9LFxuXG4gICAgICBnZXQgQVRfVEFSR0VUKCkge1xuICAgICAgICByZXR1cm4gMjtcbiAgICAgIH0sXG5cbiAgICAgIGdldCBCVUJCTElOR19QSEFTRSgpIHtcbiAgICAgICAgcmV0dXJuIDM7XG4gICAgICB9LFxuXG4gICAgICBnZXQgZXZlbnRQaGFzZSgpIHtcbiAgICAgICAgcmV0dXJuIHBkKHRoaXMpLmV2ZW50UGhhc2U7XG4gICAgICB9LFxuXG4gICAgICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uIHN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICAgICAgdmFyIGRhdGEgPSBwZCh0aGlzKTtcbiAgICAgICAgZGF0YS5zdG9wcGVkID0gdHJ1ZTtcblxuICAgICAgICBpZiAodHlwZW9mIGRhdGEuZXZlbnQuc3RvcFByb3BhZ2F0aW9uID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBkYXRhLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOiBmdW5jdGlvbiBzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSB7XG4gICAgICAgIHZhciBkYXRhID0gcGQodGhpcyk7XG4gICAgICAgIGRhdGEuc3RvcHBlZCA9IHRydWU7XG4gICAgICAgIGRhdGEuaW1tZWRpYXRlU3RvcHBlZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhLmV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgZGF0YS5ldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfSxcblxuICAgICAgZ2V0IGJ1YmJsZXMoKSB7XG4gICAgICAgIHJldHVybiBCb29sZWFuKHBkKHRoaXMpLmV2ZW50LmJ1YmJsZXMpO1xuICAgICAgfSxcblxuICAgICAgZ2V0IGNhbmNlbGFibGUoKSB7XG4gICAgICAgIHJldHVybiBCb29sZWFuKHBkKHRoaXMpLmV2ZW50LmNhbmNlbGFibGUpO1xuICAgICAgfSxcblxuICAgICAgcHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uIHByZXZlbnREZWZhdWx0KCkge1xuICAgICAgICBzZXRDYW5jZWxGbGFnKHBkKHRoaXMpKTtcbiAgICAgIH0sXG5cbiAgICAgIGdldCBkZWZhdWx0UHJldmVudGVkKCkge1xuICAgICAgICByZXR1cm4gcGQodGhpcykuY2FuY2VsZWQ7XG4gICAgICB9LFxuXG4gICAgICBnZXQgY29tcG9zZWQoKSB7XG4gICAgICAgIHJldHVybiBCb29sZWFuKHBkKHRoaXMpLmV2ZW50LmNvbXBvc2VkKTtcbiAgICAgIH0sXG5cbiAgICAgIGdldCB0aW1lU3RhbXAoKSB7XG4gICAgICAgIHJldHVybiBwZCh0aGlzKS50aW1lU3RhbXA7XG4gICAgICB9LFxuXG4gICAgICBnZXQgc3JjRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHBkKHRoaXMpLmV2ZW50VGFyZ2V0O1xuICAgICAgfSxcblxuICAgICAgZ2V0IGNhbmNlbEJ1YmJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHBkKHRoaXMpLnN0b3BwZWQ7XG4gICAgICB9LFxuXG4gICAgICBzZXQgY2FuY2VsQnViYmxlKHZhbHVlKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZGF0YSA9IHBkKHRoaXMpO1xuICAgICAgICBkYXRhLnN0b3BwZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0eXBlb2YgZGF0YS5ldmVudC5jYW5jZWxCdWJibGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgZGF0YS5ldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuXG4gICAgICBnZXQgcmV0dXJuVmFsdWUoKSB7XG4gICAgICAgIHJldHVybiAhcGQodGhpcykuY2FuY2VsZWQ7XG4gICAgICB9LFxuXG4gICAgICBzZXQgcmV0dXJuVmFsdWUodmFsdWUpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgIHNldENhbmNlbEZsYWcocGQodGhpcykpO1xuICAgICAgICB9XG4gICAgICB9LFxuXG4gICAgICBpbml0RXZlbnQ6IGZ1bmN0aW9uIGluaXRFdmVudCgpIHt9XG4gICAgfTtcbiAgICAoMCwgX2RlZmluZVByb3BlcnR5W1wiZGVmYXVsdFwiXSkoRXZlbnQucHJvdG90eXBlLCBcImNvbnN0cnVjdG9yXCIsIHtcbiAgICAgIHZhbHVlOiBFdmVudCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG5cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2Ygd2luZG93LkV2ZW50ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAoMCwgX3NldFByb3RvdHlwZU9mW1wiZGVmYXVsdFwiXSkoRXZlbnQucHJvdG90eXBlLCB3aW5kb3cuRXZlbnQucHJvdG90eXBlKTtcbiAgICAgIHdyYXBwZXJzLnNldCh3aW5kb3cuRXZlbnQucHJvdG90eXBlLCBFdmVudCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVmaW5lUmVkaXJlY3REZXNjcmlwdG9yKGtleSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHBkKHRoaXMpLmV2ZW50W2tleV07XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gc2V0KHZhbHVlKSB7XG4gICAgICAgICAgcGQodGhpcykuZXZlbnRba2V5XSA9IHZhbHVlO1xuICAgICAgICB9LFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVmaW5lQ2FsbERlc2NyaXB0b3Ioa2V5KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUoKSB7XG4gICAgICAgICAgdmFyIGV2ZW50ID0gcGQodGhpcykuZXZlbnQ7XG4gICAgICAgICAgcmV0dXJuIGV2ZW50W2tleV0uYXBwbHkoZXZlbnQsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWZpbmVXcmFwcGVyKEJhc2VFdmVudCwgcHJvdG8pIHtcbiAgICAgIHZhciBrZXlzID0gKDAsIF9rZXlzW1wiZGVmYXVsdFwiXSkocHJvdG8pO1xuXG4gICAgICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIEJhc2VFdmVudDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gQ3VzdG9tRXZlbnQoZXZlbnRUYXJnZXQsIGV2ZW50KSB7XG4gICAgICAgIEJhc2VFdmVudC5jYWxsKHRoaXMsIGV2ZW50VGFyZ2V0LCBldmVudCk7XG4gICAgICB9XG5cbiAgICAgIEN1c3RvbUV2ZW50LnByb3RvdHlwZSA9ICgwLCBfY3JlYXRlW1wiZGVmYXVsdFwiXSkoQmFzZUV2ZW50LnByb3RvdHlwZSwge1xuICAgICAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgICAgIHZhbHVlOiBDdXN0b21FdmVudCxcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgICBpZiAoIShrZXkgaW4gQmFzZUV2ZW50LnByb3RvdHlwZSkpIHtcbiAgICAgICAgICB2YXIgZGVzY3JpcHRvciA9ICgwLCBfZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yW1wiZGVmYXVsdFwiXSkocHJvdG8sIGtleSk7XG4gICAgICAgICAgdmFyIGlzRnVuYyA9IHR5cGVvZiBkZXNjcmlwdG9yLnZhbHVlID09PSBcImZ1bmN0aW9uXCI7XG4gICAgICAgICAgKDAsIF9kZWZpbmVQcm9wZXJ0eVtcImRlZmF1bHRcIl0pKEN1c3RvbUV2ZW50LnByb3RvdHlwZSwga2V5LCBpc0Z1bmMgPyBkZWZpbmVDYWxsRGVzY3JpcHRvcihrZXkpIDogZGVmaW5lUmVkaXJlY3REZXNjcmlwdG9yKGtleSkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDdXN0b21FdmVudDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXcmFwcGVyKHByb3RvKSB7XG4gICAgICBpZiAocHJvdG8gPT0gbnVsbCB8fCBwcm90byA9PT0gT2JqZWN0LnByb3RvdHlwZSkge1xuICAgICAgICByZXR1cm4gRXZlbnQ7XG4gICAgICB9XG5cbiAgICAgIHZhciB3cmFwcGVyID0gd3JhcHBlcnMuZ2V0KHByb3RvKTtcblxuICAgICAgaWYgKHdyYXBwZXIgPT0gbnVsbCkge1xuICAgICAgICB3cmFwcGVyID0gZGVmaW5lV3JhcHBlcihnZXRXcmFwcGVyKCgwLCBfZ2V0UHJvdG90eXBlT2ZbXCJkZWZhdWx0XCJdKShwcm90bykpLCBwcm90byk7XG4gICAgICAgIHdyYXBwZXJzLnNldChwcm90bywgd3JhcHBlcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdyYXBFdmVudChldmVudFRhcmdldCwgZXZlbnQpIHtcbiAgICAgIHZhciBXcmFwcGVyID0gZ2V0V3JhcHBlcigoMCwgX2dldFByb3RvdHlwZU9mW1wiZGVmYXVsdFwiXSkoZXZlbnQpKTtcbiAgICAgIHJldHVybiBuZXcgV3JhcHBlcihldmVudFRhcmdldCwgZXZlbnQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU3RvcHBlZChldmVudCkge1xuICAgICAgcmV0dXJuIHBkKGV2ZW50KS5pbW1lZGlhdGVTdG9wcGVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldEV2ZW50UGhhc2UoZXZlbnQsIGV2ZW50UGhhc2UpIHtcbiAgICAgIHBkKGV2ZW50KS5ldmVudFBoYXNlID0gZXZlbnRQaGFzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRDdXJyZW50VGFyZ2V0KGV2ZW50LCBjdXJyZW50VGFyZ2V0KSB7XG4gICAgICBwZChldmVudCkuY3VycmVudFRhcmdldCA9IGN1cnJlbnRUYXJnZXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0UGFzc2l2ZUxpc3RlbmVyKGV2ZW50LCBwYXNzaXZlTGlzdGVuZXIpIHtcbiAgICAgIHBkKGV2ZW50KS5wYXNzaXZlTGlzdGVuZXIgPSBwYXNzaXZlTGlzdGVuZXI7XG4gICAgfVxuXG4gICAgdmFyIGxpc3RlbmVyc01hcCA9IC8qIEBfX1BVUkVfXyAqL25ldyBfd2Vha01hcFtcImRlZmF1bHRcIl0oKTtcbiAgICB2YXIgQ0FQVFVSRSA9IDE7XG4gICAgdmFyIEJVQkJMRSA9IDI7XG4gICAgdmFyIEFUVFJJQlVURSA9IDM7XG5cbiAgICBmdW5jdGlvbiBpc09iamVjdCh4KSB7XG4gICAgICByZXR1cm4geCAhPT0gbnVsbCAmJiAoMCwgX3R5cGVvZjJbXCJkZWZhdWx0XCJdKSh4KSA9PT0gXCJvYmplY3RcIjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRMaXN0ZW5lcnMoZXZlbnRUYXJnZXQpIHtcbiAgICAgIHZhciBsaXN0ZW5lcnMgPSBsaXN0ZW5lcnNNYXAuZ2V0KGV2ZW50VGFyZ2V0KTtcblxuICAgICAgaWYgKGxpc3RlbmVycyA9PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCIndGhpcycgaXMgZXhwZWN0ZWQgYW4gRXZlbnRUYXJnZXQgb2JqZWN0LCBidXQgZ290IGFub3RoZXIgdmFsdWUuXCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbGlzdGVuZXJzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlZmluZUV2ZW50QXR0cmlidXRlRGVzY3JpcHRvcihldmVudE5hbWUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICAgIHZhciBsaXN0ZW5lcnMgPSBnZXRMaXN0ZW5lcnModGhpcyk7XG4gICAgICAgICAgdmFyIG5vZGUgPSBsaXN0ZW5lcnMuZ2V0KGV2ZW50TmFtZSk7XG5cbiAgICAgICAgICB3aGlsZSAobm9kZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAobm9kZS5saXN0ZW5lclR5cGUgPT09IEFUVFJJQlVURSkge1xuICAgICAgICAgICAgICByZXR1cm4gbm9kZS5saXN0ZW5lcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbm9kZSA9IG5vZGUubmV4dDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiBzZXQobGlzdGVuZXIpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSBcImZ1bmN0aW9uXCIgJiYgIWlzT2JqZWN0KGxpc3RlbmVyKSkge1xuICAgICAgICAgICAgbGlzdGVuZXIgPSBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBsaXN0ZW5lcnMgPSBnZXRMaXN0ZW5lcnModGhpcyk7XG4gICAgICAgICAgdmFyIHByZXYgPSBudWxsO1xuICAgICAgICAgIHZhciBub2RlID0gbGlzdGVuZXJzLmdldChldmVudE5hbWUpO1xuXG4gICAgICAgICAgd2hpbGUgKG5vZGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKG5vZGUubGlzdGVuZXJUeXBlID09PSBBVFRSSUJVVEUpIHtcbiAgICAgICAgICAgICAgaWYgKHByZXYgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBwcmV2Lm5leHQgPSBub2RlLm5leHQ7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS5uZXh0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXJzLnNldChldmVudE5hbWUsIG5vZGUubmV4dCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXJzW1wiZGVsZXRlXCJdKGV2ZW50TmFtZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHByZXYgPSBub2RlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBub2RlID0gbm9kZS5uZXh0O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChsaXN0ZW5lciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIG5ld05vZGUgPSB7XG4gICAgICAgICAgICAgIGxpc3RlbmVyOiBsaXN0ZW5lcixcbiAgICAgICAgICAgICAgbGlzdGVuZXJUeXBlOiBBVFRSSUJVVEUsXG4gICAgICAgICAgICAgIHBhc3NpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICBvbmNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgbmV4dDogbnVsbFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaWYgKHByZXYgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgbGlzdGVuZXJzLnNldChldmVudE5hbWUsIG5ld05vZGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcHJldi5uZXh0ID0gbmV3Tm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWZpbmVFdmVudEF0dHJpYnV0ZShldmVudFRhcmdldFByb3RvdHlwZSwgZXZlbnROYW1lKSB7XG4gICAgICAoMCwgX2RlZmluZVByb3BlcnR5W1wiZGVmYXVsdFwiXSkoZXZlbnRUYXJnZXRQcm90b3R5cGUsIFwib25cIi5jb25jYXQoZXZlbnROYW1lKSwgZGVmaW5lRXZlbnRBdHRyaWJ1dGVEZXNjcmlwdG9yKGV2ZW50TmFtZSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlZmluZUN1c3RvbUV2ZW50VGFyZ2V0KGV2ZW50TmFtZXMpIHtcbiAgICAgIGZ1bmN0aW9uIEN1c3RvbUV2ZW50VGFyZ2V0KCkge1xuICAgICAgICBFdmVudFRhcmdldC5jYWxsKHRoaXMpO1xuICAgICAgfVxuXG4gICAgICBDdXN0b21FdmVudFRhcmdldC5wcm90b3R5cGUgPSAoMCwgX2NyZWF0ZVtcImRlZmF1bHRcIl0pKEV2ZW50VGFyZ2V0LnByb3RvdHlwZSwge1xuICAgICAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgICAgIHZhbHVlOiBDdXN0b21FdmVudFRhcmdldCxcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXZlbnROYW1lcy5sZW5ndGg7ICsraSkge1xuICAgICAgICBkZWZpbmVFdmVudEF0dHJpYnV0ZShDdXN0b21FdmVudFRhcmdldC5wcm90b3R5cGUsIGV2ZW50TmFtZXNbaV0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ3VzdG9tRXZlbnRUYXJnZXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gRXZlbnRUYXJnZXQoKSB7XG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEV2ZW50VGFyZ2V0KSB7XG4gICAgICAgIGxpc3RlbmVyc01hcC5zZXQodGhpcywgLyogQF9fUFVSRV9fICovbmV3IF9tYXBbXCJkZWZhdWx0XCJdKCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmICgwLCBfaXNBcnJheVtcImRlZmF1bHRcIl0pKGFyZ3VtZW50c1swXSkpIHtcbiAgICAgICAgcmV0dXJuIGRlZmluZUN1c3RvbUV2ZW50VGFyZ2V0KGFyZ3VtZW50c1swXSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgdHlwZXMgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCk7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICB0eXBlc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWZpbmVDdXN0b21FdmVudFRhcmdldCh0eXBlcyk7XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG4gICAgfVxuXG4gICAgRXZlbnRUYXJnZXQucHJvdG90eXBlID0ge1xuICAgICAgYWRkRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGxpc3RlbmVyLCBvcHRpb25zKSB7XG4gICAgICAgIGlmIChsaXN0ZW5lciA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gXCJmdW5jdGlvblwiICYmICFpc09iamVjdChsaXN0ZW5lcikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiJ2xpc3RlbmVyJyBzaG91bGQgYmUgYSBmdW5jdGlvbiBvciBhbiBvYmplY3QuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxpc3RlbmVycyA9IGdldExpc3RlbmVycyh0aGlzKTtcbiAgICAgICAgdmFyIG9wdGlvbnNJc09iaiA9IGlzT2JqZWN0KG9wdGlvbnMpO1xuICAgICAgICB2YXIgY2FwdHVyZSA9IG9wdGlvbnNJc09iaiA/IEJvb2xlYW4ob3B0aW9ucy5jYXB0dXJlKSA6IEJvb2xlYW4ob3B0aW9ucyk7XG4gICAgICAgIHZhciBsaXN0ZW5lclR5cGUgPSBjYXB0dXJlID8gQ0FQVFVSRSA6IEJVQkJMRTtcbiAgICAgICAgdmFyIG5ld05vZGUgPSB7XG4gICAgICAgICAgbGlzdGVuZXI6IGxpc3RlbmVyLFxuICAgICAgICAgIGxpc3RlbmVyVHlwZTogbGlzdGVuZXJUeXBlLFxuICAgICAgICAgIHBhc3NpdmU6IG9wdGlvbnNJc09iaiAmJiBCb29sZWFuKG9wdGlvbnMucGFzc2l2ZSksXG4gICAgICAgICAgb25jZTogb3B0aW9uc0lzT2JqICYmIEJvb2xlYW4ob3B0aW9ucy5vbmNlKSxcbiAgICAgICAgICBuZXh0OiBudWxsXG4gICAgICAgIH07XG4gICAgICAgIHZhciBub2RlID0gbGlzdGVuZXJzLmdldChldmVudE5hbWUpO1xuXG4gICAgICAgIGlmIChub2RlID09PSB2b2lkIDApIHtcbiAgICAgICAgICBsaXN0ZW5lcnMuc2V0KGV2ZW50TmFtZSwgbmV3Tm9kZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHByZXYgPSBudWxsO1xuXG4gICAgICAgIHdoaWxlIChub2RlICE9IG51bGwpIHtcbiAgICAgICAgICBpZiAobm9kZS5saXN0ZW5lciA9PT0gbGlzdGVuZXIgJiYgbm9kZS5saXN0ZW5lclR5cGUgPT09IGxpc3RlbmVyVHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHByZXYgPSBub2RlO1xuICAgICAgICAgIG5vZGUgPSBub2RlLm5leHQ7XG4gICAgICAgIH1cblxuICAgICAgICBwcmV2Lm5leHQgPSBuZXdOb2RlO1xuICAgICAgfSxcbiAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBsaXN0ZW5lciwgb3B0aW9ucykge1xuICAgICAgICBpZiAobGlzdGVuZXIgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBsaXN0ZW5lcnMgPSBnZXRMaXN0ZW5lcnModGhpcyk7XG4gICAgICAgIHZhciBjYXB0dXJlID0gaXNPYmplY3Qob3B0aW9ucykgPyBCb29sZWFuKG9wdGlvbnMuY2FwdHVyZSkgOiBCb29sZWFuKG9wdGlvbnMpO1xuICAgICAgICB2YXIgbGlzdGVuZXJUeXBlID0gY2FwdHVyZSA/IENBUFRVUkUgOiBCVUJCTEU7XG4gICAgICAgIHZhciBwcmV2ID0gbnVsbDtcbiAgICAgICAgdmFyIG5vZGUgPSBsaXN0ZW5lcnMuZ2V0KGV2ZW50TmFtZSk7XG5cbiAgICAgICAgd2hpbGUgKG5vZGUgIT0gbnVsbCkge1xuICAgICAgICAgIGlmIChub2RlLmxpc3RlbmVyID09PSBsaXN0ZW5lciAmJiBub2RlLmxpc3RlbmVyVHlwZSA9PT0gbGlzdGVuZXJUeXBlKSB7XG4gICAgICAgICAgICBpZiAocHJldiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICBwcmV2Lm5leHQgPSBub2RlLm5leHQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUubmV4dCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICBsaXN0ZW5lcnMuc2V0KGV2ZW50TmFtZSwgbm9kZS5uZXh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGxpc3RlbmVyc1tcImRlbGV0ZVwiXShldmVudE5hbWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcHJldiA9IG5vZGU7XG4gICAgICAgICAgbm9kZSA9IG5vZGUubmV4dDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGRpc3BhdGNoRXZlbnQ6IGZ1bmN0aW9uIGRpc3BhdGNoRXZlbnQoZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50ID09IG51bGwgfHwgdHlwZW9mIGV2ZW50LnR5cGUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImV2ZW50LnR5cGVcIiBzaG91bGQgYmUgYSBzdHJpbmcuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbGlzdGVuZXJzID0gZ2V0TGlzdGVuZXJzKHRoaXMpO1xuICAgICAgICB2YXIgZXZlbnROYW1lID0gZXZlbnQudHlwZTtcbiAgICAgICAgdmFyIG5vZGUgPSBsaXN0ZW5lcnMuZ2V0KGV2ZW50TmFtZSk7XG5cbiAgICAgICAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHdyYXBwZWRFdmVudCA9IHdyYXBFdmVudCh0aGlzLCBldmVudCk7XG4gICAgICAgIHZhciBwcmV2ID0gbnVsbDtcblxuICAgICAgICB3aGlsZSAobm9kZSAhPSBudWxsKSB7XG4gICAgICAgICAgaWYgKG5vZGUub25jZSkge1xuICAgICAgICAgICAgaWYgKHByZXYgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgcHJldi5uZXh0ID0gbm9kZS5uZXh0O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLm5leHQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgbGlzdGVuZXJzLnNldChldmVudE5hbWUsIG5vZGUubmV4dCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBsaXN0ZW5lcnNbXCJkZWxldGVcIl0oZXZlbnROYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJldiA9IG5vZGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2V0UGFzc2l2ZUxpc3RlbmVyKHdyYXBwZWRFdmVudCwgbm9kZS5wYXNzaXZlID8gbm9kZS5saXN0ZW5lciA6IG51bGwpO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBub2RlLmxpc3RlbmVyID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIG5vZGUubGlzdGVuZXIuY2FsbCh0aGlzLCB3cmFwcGVkRXZlbnQpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChub2RlLmxpc3RlbmVyVHlwZSAhPT0gQVRUUklCVVRFICYmIHR5cGVvZiBub2RlLmxpc3RlbmVyLmhhbmRsZUV2ZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIG5vZGUubGlzdGVuZXIuaGFuZGxlRXZlbnQod3JhcHBlZEV2ZW50KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaXNTdG9wcGVkKHdyYXBwZWRFdmVudCkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5vZGUgPSBub2RlLm5leHQ7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRQYXNzaXZlTGlzdGVuZXIod3JhcHBlZEV2ZW50LCBudWxsKTtcbiAgICAgICAgc2V0RXZlbnRQaGFzZSh3cmFwcGVkRXZlbnQsIDApO1xuICAgICAgICBzZXRDdXJyZW50VGFyZ2V0KHdyYXBwZWRFdmVudCwgbnVsbCk7XG4gICAgICAgIHJldHVybiAhd3JhcHBlZEV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQ7XG4gICAgICB9XG4gICAgfTtcbiAgICAoMCwgX2RlZmluZVByb3BlcnR5W1wiZGVmYXVsdFwiXSkoRXZlbnRUYXJnZXQucHJvdG90eXBlLCBcImNvbnN0cnVjdG9yXCIsIHtcbiAgICAgIHZhbHVlOiBFdmVudFRhcmdldCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG5cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2Ygd2luZG93LkV2ZW50VGFyZ2V0ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAoMCwgX3NldFByb3RvdHlwZU9mW1wiZGVmYXVsdFwiXSkoRXZlbnRUYXJnZXQucHJvdG90eXBlLCB3aW5kb3cuRXZlbnRUYXJnZXQucHJvdG90eXBlKTtcbiAgICB9XG5cbiAgICBleHBvcnRzMi5kZWZpbmVFdmVudEF0dHJpYnV0ZSA9IGRlZmluZUV2ZW50QXR0cmlidXRlO1xuICAgIGV4cG9ydHMyLkV2ZW50VGFyZ2V0ID0gRXZlbnRUYXJnZXQ7XG4gICAgZXhwb3J0czJbXCJkZWZhdWx0XCJdID0gRXZlbnRUYXJnZXQ7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gRXZlbnRUYXJnZXQ7XG4gICAgbW9kdWxlMi5leHBvcnRzLkV2ZW50VGFyZ2V0ID0gbW9kdWxlMi5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IEV2ZW50VGFyZ2V0O1xuICAgIG1vZHVsZTIuZXhwb3J0cy5kZWZpbmVFdmVudEF0dHJpYnV0ZSA9IGRlZmluZUV2ZW50QXR0cmlidXRlO1xuICB9XG59KTsgLy8gLi4vYWJvcnQtY29udHJvbGxlci9kaXN0L2Fib3J0LWNvbnRyb2xsZXIuanNcblxuXG52YXIgcmVxdWlyZV9hYm9ydF9jb250cm9sbGVyID0gX19jb21tb25KUyh7XG4gIFwiLi4vYWJvcnQtY29udHJvbGxlci9kaXN0L2Fib3J0LWNvbnRyb2xsZXIuanNcIjogZnVuY3Rpb24gYWJvcnRDb250cm9sbGVyRGlzdEFib3J0Q29udHJvbGxlckpzKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAoMCwgX2RlZmluZVByb3BlcnR5W1wiZGVmYXVsdFwiXSkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciBldmVudFRhcmdldFNoaW0gPSByZXF1aXJlX2V2ZW50X3RhcmdldF9zaGltKCk7XG5cbiAgICB2YXIgQWJvcnRTaWduYWwyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfZXZlbnRUYXJnZXRTaGltJEV2ZW4pIHtcbiAgICAgICgwLCBfaW5oZXJpdHMyW1wiZGVmYXVsdFwiXSkoQWJvcnRTaWduYWwyLCBfZXZlbnRUYXJnZXRTaGltJEV2ZW4pO1xuXG4gICAgICB2YXIgX3N1cGVyID0gKDAsIF9jcmVhdGVTdXBlcjJbXCJkZWZhdWx0XCJdKShBYm9ydFNpZ25hbDIpO1xuXG4gICAgICBmdW5jdGlvbiBBYm9ydFNpZ25hbDIoKSB7XG4gICAgICAgIHZhciBfdGhpcztcblxuICAgICAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMltcImRlZmF1bHRcIl0pKHRoaXMsIEFib3J0U2lnbmFsMik7XG4gICAgICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcyk7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJBYm9ydFNpZ25hbCBjYW5ub3QgYmUgY29uc3RydWN0ZWQgZGlyZWN0bHlcIik7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICAgIH1cblxuICAgICAgKDAsIF9jcmVhdGVDbGFzczJbXCJkZWZhdWx0XCJdKShBYm9ydFNpZ25hbDIsIFt7XG4gICAgICAgIGtleTogXCJhYm9ydGVkXCIsXG4gICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICAgIHZhciBhYm9ydGVkID0gYWJvcnRlZEZsYWdzLmdldCh0aGlzKTtcblxuICAgICAgICAgIGlmICh0eXBlb2YgYWJvcnRlZCAhPT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJFeHBlY3RlZCAndGhpcycgdG8gYmUgYW4gJ0Fib3J0U2lnbmFsJyBvYmplY3QsIGJ1dCBnb3QgXCIuY29uY2F0KHRoaXMgPT09IG51bGwgPyBcIm51bGxcIiA6ICgwLCBfdHlwZW9mMltcImRlZmF1bHRcIl0pKHRoaXMpKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGFib3J0ZWQ7XG4gICAgICAgIH1cbiAgICAgIH1dKTtcbiAgICAgIHJldHVybiBBYm9ydFNpZ25hbDI7XG4gICAgfShldmVudFRhcmdldFNoaW0uRXZlbnRUYXJnZXQpO1xuXG4gICAgZXZlbnRUYXJnZXRTaGltLmRlZmluZUV2ZW50QXR0cmlidXRlKEFib3J0U2lnbmFsMi5wcm90b3R5cGUsIFwiYWJvcnRcIik7XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVBYm9ydFNpZ25hbCgpIHtcbiAgICAgIHZhciBzaWduYWwgPSAoMCwgX2NyZWF0ZVtcImRlZmF1bHRcIl0pKEFib3J0U2lnbmFsMi5wcm90b3R5cGUpO1xuICAgICAgZXZlbnRUYXJnZXRTaGltLkV2ZW50VGFyZ2V0LmNhbGwoc2lnbmFsKTtcbiAgICAgIGFib3J0ZWRGbGFncy5zZXQoc2lnbmFsLCBmYWxzZSk7XG4gICAgICByZXR1cm4gc2lnbmFsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFib3J0U2lnbmFsKHNpZ25hbCkge1xuICAgICAgaWYgKGFib3J0ZWRGbGFncy5nZXQoc2lnbmFsKSAhPT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBhYm9ydGVkRmxhZ3Muc2V0KHNpZ25hbCwgdHJ1ZSk7XG4gICAgICBzaWduYWwuZGlzcGF0Y2hFdmVudCh7XG4gICAgICAgIHR5cGU6IFwiYWJvcnRcIlxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIGFib3J0ZWRGbGFncyA9IC8qIEBfX1BVUkVfXyAqL25ldyBfd2Vha01hcFtcImRlZmF1bHRcIl0oKTtcbiAgICAoMCwgX2RlZmluZVByb3BlcnRpZXNbXCJkZWZhdWx0XCJdKShBYm9ydFNpZ25hbDIucHJvdG90eXBlLCB7XG4gICAgICBhYm9ydGVkOiB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0eXBlb2YgX3N5bWJvbFtcImRlZmF1bHRcIl0gPT09IFwiZnVuY3Rpb25cIiAmJiAoMCwgX3R5cGVvZjJbXCJkZWZhdWx0XCJdKShfdG9TdHJpbmdUYWdbXCJkZWZhdWx0XCJdKSA9PT0gXCJzeW1ib2xcIikge1xuICAgICAgKDAsIF9kZWZpbmVQcm9wZXJ0eVtcImRlZmF1bHRcIl0pKEFib3J0U2lnbmFsMi5wcm90b3R5cGUsIF90b1N0cmluZ1RhZ1tcImRlZmF1bHRcIl0sIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogXCJBYm9ydFNpZ25hbFwiXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgQWJvcnRDb250cm9sbGVyMiA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gICAgICBmdW5jdGlvbiBBYm9ydENvbnRyb2xsZXIyKCkge1xuICAgICAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMltcImRlZmF1bHRcIl0pKHRoaXMsIEFib3J0Q29udHJvbGxlcjIpO1xuICAgICAgICBzaWduYWxzLnNldCh0aGlzLCBjcmVhdGVBYm9ydFNpZ25hbCgpKTtcbiAgICAgIH1cblxuICAgICAgKDAsIF9jcmVhdGVDbGFzczJbXCJkZWZhdWx0XCJdKShBYm9ydENvbnRyb2xsZXIyLCBbe1xuICAgICAgICBrZXk6IFwic2lnbmFsXCIsXG4gICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICAgIHJldHVybiBnZXRTaWduYWwodGhpcyk7XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAga2V5OiBcImFib3J0XCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBhYm9ydCgpIHtcbiAgICAgICAgICBhYm9ydFNpZ25hbChnZXRTaWduYWwodGhpcykpO1xuICAgICAgICB9XG4gICAgICB9XSk7XG4gICAgICByZXR1cm4gQWJvcnRDb250cm9sbGVyMjtcbiAgICB9KCk7XG5cbiAgICB2YXIgc2lnbmFscyA9IC8qIEBfX1BVUkVfXyAqL25ldyBfd2Vha01hcFtcImRlZmF1bHRcIl0oKTtcblxuICAgIGZ1bmN0aW9uIGdldFNpZ25hbChjb250cm9sbGVyKSB7XG4gICAgICB2YXIgc2lnbmFsID0gc2lnbmFscy5nZXQoY29udHJvbGxlcik7XG5cbiAgICAgIGlmIChzaWduYWwgPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgJ3RoaXMnIHRvIGJlIGFuICdBYm9ydENvbnRyb2xsZXInIG9iamVjdCwgYnV0IGdvdCBcIi5jb25jYXQoY29udHJvbGxlciA9PT0gbnVsbCA/IFwibnVsbFwiIDogKDAsIF90eXBlb2YyW1wiZGVmYXVsdFwiXSkoY29udHJvbGxlcikpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNpZ25hbDtcbiAgICB9XG5cbiAgICAoMCwgX2RlZmluZVByb3BlcnRpZXNbXCJkZWZhdWx0XCJdKShBYm9ydENvbnRyb2xsZXIyLnByb3RvdHlwZSwge1xuICAgICAgc2lnbmFsOiB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIH0sXG4gICAgICBhYm9ydDoge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodHlwZW9mIF9zeW1ib2xbXCJkZWZhdWx0XCJdID09PSBcImZ1bmN0aW9uXCIgJiYgKDAsIF90eXBlb2YyW1wiZGVmYXVsdFwiXSkoX3RvU3RyaW5nVGFnW1wiZGVmYXVsdFwiXSkgPT09IFwic3ltYm9sXCIpIHtcbiAgICAgICgwLCBfZGVmaW5lUHJvcGVydHlbXCJkZWZhdWx0XCJdKShBYm9ydENvbnRyb2xsZXIyLnByb3RvdHlwZSwgX3RvU3RyaW5nVGFnW1wiZGVmYXVsdFwiXSwge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIHZhbHVlOiBcIkFib3J0Q29udHJvbGxlclwiXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBleHBvcnRzMi5BYm9ydENvbnRyb2xsZXIgPSBBYm9ydENvbnRyb2xsZXIyO1xuICAgIGV4cG9ydHMyLkFib3J0U2lnbmFsID0gQWJvcnRTaWduYWwyO1xuICAgIGV4cG9ydHMyW1wiZGVmYXVsdFwiXSA9IEFib3J0Q29udHJvbGxlcjI7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gQWJvcnRDb250cm9sbGVyMjtcbiAgICBtb2R1bGUyLmV4cG9ydHMuQWJvcnRDb250cm9sbGVyID0gbW9kdWxlMi5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IEFib3J0Q29udHJvbGxlcjI7XG4gICAgbW9kdWxlMi5leHBvcnRzLkFib3J0U2lnbmFsID0gQWJvcnRTaWduYWwyO1xuICB9XG59KTsgLy8gc3JjL2luZGV4LmpzXG5cblxudmFyIGltcG9ydF9hYm9ydF9jb250cm9sbGVyID0gX190b0VTTShyZXF1aXJlX2Fib3J0X2NvbnRyb2xsZXIoKSk7XG5cbnZhciBOYXRpdmVBYm9ydENvbnRyb2xsZXIgPSAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIiA/IHt9IDogd2luZG93KS5BYm9ydENvbnRyb2xsZXI7XG52YXIgQWJvcnRDb250cm9sbGVyID0gTmF0aXZlQWJvcnRDb250cm9sbGVyIHx8IGltcG9ydF9hYm9ydF9jb250cm9sbGVyW1wiZGVmYXVsdFwiXTtcbnZhciBOYXRpdmVBYm9ydFNpZ25hbCA9ICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiID8ge30gOiB3aW5kb3cpLkFib3J0U2lnbmFsO1xudmFyIEFib3J0U2lnbmFsID0gTmF0aXZlQWJvcnRTaWduYWwgfHwgaW1wb3J0X2Fib3J0X2NvbnRyb2xsZXIuQWJvcnRTaWduYWw7XG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgQWJvcnRDb250cm9sbGVyOiBBYm9ydENvbnRyb2xsZXIsXG4gIEFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCxcbiAgXCJkZWZhdWx0XCI6IEFib3J0Q29udHJvbGxlclxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/abort-controller-es5/lib/index.js\n");
419
+ eval("\n\nvar _interopRequireDefault = (__webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\")[\"default\"]);\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/classCallCheck */ \"./node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createClass */ \"./node_modules/@babel/runtime-corejs3/helpers/createClass.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/inherits */ \"./node_modules/@babel/runtime-corejs3/helpers/inherits.js\"));\n\nvar _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createSuper */ \"./node_modules/@babel/runtime-corejs3/helpers/createSuper.js\"));\n\nvar _createForOfIteratorHelper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createForOfIteratorHelper */ \"./node_modules/@babel/runtime-corejs3/helpers/createForOfIteratorHelper.js\"));\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"./node_modules/@babel/runtime-corejs3/helpers/typeof.js\"));\n\nvar _create = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/create */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/create.js\"));\n\nvar _defineProperty = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\"));\n\nvar _getOwnPropertyDescriptor = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js\"));\n\nvar _getOwnPropertyNames = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-names */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-names.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-prototype-of */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-prototype-of.js\"));\n\nvar _weakMap = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/weak-map */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/weak-map.js\"));\n\nvar _now = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/date/now */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/date/now.js\"));\n\nvar _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/keys */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js\"));\n\nvar _setPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/set-prototype-of */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/set-prototype-of.js\"));\n\nvar _map = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/map */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/map.js\"));\n\nvar _isArray = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\"));\n\nvar _defineProperties = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-properties */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js\"));\n\nvar _symbol = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/symbol */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/symbol.js\"));\n\nvar _toStringTag = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/symbol/to-string-tag */ \"./node_modules/@babel/runtime-corejs3/core-js-stable/symbol/to-string-tag.js\"));\n\nvar __create = _create[\"default\"];\nvar __defProp = _defineProperty[\"default\"];\nvar __getOwnPropDesc = _getOwnPropertyDescriptor[\"default\"];\nvar __getOwnPropNames = _getOwnPropertyNames[\"default\"];\nvar __getProtoOf = _getPrototypeOf[\"default\"];\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\n\nvar __markAsModule = function __markAsModule(target) {\n return __defProp(target, \"__esModule\", {\n value: true\n });\n};\n\nvar __commonJS = function __commonJS(cb, mod) {\n return function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = {\n exports: {}\n }).exports, mod), mod.exports;\n };\n};\n\nvar __reExport = function __reExport(target, module2, copyDefault, desc) {\n if (module2 && (0, _typeof2[\"default\"])(module2) === \"object\" || typeof module2 === \"function\") {\n var _iterator = (0, _createForOfIteratorHelper2[\"default\"])(__getOwnPropNames(module2)),\n _step;\n\n try {\n var _loop = function _loop() {\n var key = _step.value;\n if (!__hasOwnProp.call(target, key) && (copyDefault || key !== \"default\")) __defProp(target, key, {\n get: function get() {\n return module2[key];\n },\n enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable\n });\n };\n\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n\n return target;\n};\n\nvar __toESM = function __toESM(module2, isNodeMode) {\n return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, \"default\", !isNodeMode && module2 && module2.__esModule ? {\n get: function get() {\n return module2[\"default\"];\n },\n enumerable: true\n } : {\n value: module2,\n enumerable: true\n })), module2);\n}; // ../abort-controller/node_modules/event-target-shim/dist/event-target-shim.js\n\n\nvar require_event_target_shim = __commonJS({\n \"../abort-controller/node_modules/event-target-shim/dist/event-target-shim.js\": function abortControllerNode_modulesEventTargetShimDistEventTargetShimJs(exports2, module2) {\n \"use strict\";\n\n (0, _defineProperty[\"default\"])(exports2, \"__esModule\", {\n value: true\n });\n var privateData = /* @__PURE__ */new _weakMap[\"default\"]();\n var wrappers = /* @__PURE__ */new _weakMap[\"default\"]();\n\n function pd(event) {\n var retv = privateData.get(event);\n console.assert(retv != null, \"'this' is expected an Event object, but got\", event);\n return retv;\n }\n\n function setCancelFlag(data) {\n if (data.passiveListener != null) {\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(\"Unable to preventDefault inside passive event listener invocation.\", data.passiveListener);\n }\n\n return;\n }\n\n if (!data.event.cancelable) {\n return;\n }\n\n data.canceled = true;\n\n if (typeof data.event.preventDefault === \"function\") {\n data.event.preventDefault();\n }\n }\n\n function Event(eventTarget, event) {\n privateData.set(this, {\n eventTarget: eventTarget,\n event: event,\n eventPhase: 2,\n currentTarget: eventTarget,\n canceled: false,\n stopped: false,\n immediateStopped: false,\n passiveListener: null,\n timeStamp: event.timeStamp || (0, _now[\"default\"])()\n });\n (0, _defineProperty[\"default\"])(this, \"isTrusted\", {\n value: false,\n enumerable: true\n });\n var keys = (0, _keys[\"default\"])(event);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!(key in this)) {\n (0, _defineProperty[\"default\"])(this, key, defineRedirectDescriptor(key));\n }\n }\n }\n\n Event.prototype = {\n get type() {\n return pd(this).event.type;\n },\n\n get target() {\n return pd(this).eventTarget;\n },\n\n get currentTarget() {\n return pd(this).currentTarget;\n },\n\n composedPath: function composedPath() {\n var currentTarget = pd(this).currentTarget;\n\n if (currentTarget == null) {\n return [];\n }\n\n return [currentTarget];\n },\n\n get NONE() {\n return 0;\n },\n\n get CAPTURING_PHASE() {\n return 1;\n },\n\n get AT_TARGET() {\n return 2;\n },\n\n get BUBBLING_PHASE() {\n return 3;\n },\n\n get eventPhase() {\n return pd(this).eventPhase;\n },\n\n stopPropagation: function stopPropagation() {\n var data = pd(this);\n data.stopped = true;\n\n if (typeof data.event.stopPropagation === \"function\") {\n data.event.stopPropagation();\n }\n },\n stopImmediatePropagation: function stopImmediatePropagation() {\n var data = pd(this);\n data.stopped = true;\n data.immediateStopped = true;\n\n if (typeof data.event.stopImmediatePropagation === \"function\") {\n data.event.stopImmediatePropagation();\n }\n },\n\n get bubbles() {\n return Boolean(pd(this).event.bubbles);\n },\n\n get cancelable() {\n return Boolean(pd(this).event.cancelable);\n },\n\n preventDefault: function preventDefault() {\n setCancelFlag(pd(this));\n },\n\n get defaultPrevented() {\n return pd(this).canceled;\n },\n\n get composed() {\n return Boolean(pd(this).event.composed);\n },\n\n get timeStamp() {\n return pd(this).timeStamp;\n },\n\n get srcElement() {\n return pd(this).eventTarget;\n },\n\n get cancelBubble() {\n return pd(this).stopped;\n },\n\n set cancelBubble(value) {\n if (!value) {\n return;\n }\n\n var data = pd(this);\n data.stopped = true;\n\n if (typeof data.event.cancelBubble === \"boolean\") {\n data.event.cancelBubble = true;\n }\n },\n\n get returnValue() {\n return !pd(this).canceled;\n },\n\n set returnValue(value) {\n if (!value) {\n setCancelFlag(pd(this));\n }\n },\n\n initEvent: function initEvent() {}\n };\n (0, _defineProperty[\"default\"])(Event.prototype, \"constructor\", {\n value: Event,\n configurable: true,\n writable: true\n });\n\n if (typeof window !== \"undefined\" && typeof window.Event !== \"undefined\") {\n (0, _setPrototypeOf[\"default\"])(Event.prototype, window.Event.prototype);\n wrappers.set(window.Event.prototype, Event);\n }\n\n function defineRedirectDescriptor(key) {\n return {\n get: function get() {\n return pd(this).event[key];\n },\n set: function set(value) {\n pd(this).event[key] = value;\n },\n configurable: true,\n enumerable: true\n };\n }\n\n function defineCallDescriptor(key) {\n return {\n value: function value() {\n var event = pd(this).event;\n return event[key].apply(event, arguments);\n },\n configurable: true,\n enumerable: true\n };\n }\n\n function defineWrapper(BaseEvent, proto) {\n var keys = (0, _keys[\"default\"])(proto);\n\n if (keys.length === 0) {\n return BaseEvent;\n }\n\n function CustomEvent(eventTarget, event) {\n BaseEvent.call(this, eventTarget, event);\n }\n\n CustomEvent.prototype = (0, _create[\"default\"])(BaseEvent.prototype, {\n constructor: {\n value: CustomEvent,\n configurable: true,\n writable: true\n }\n });\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!(key in BaseEvent.prototype)) {\n var descriptor = (0, _getOwnPropertyDescriptor[\"default\"])(proto, key);\n var isFunc = typeof descriptor.value === \"function\";\n (0, _defineProperty[\"default\"])(CustomEvent.prototype, key, isFunc ? defineCallDescriptor(key) : defineRedirectDescriptor(key));\n }\n }\n\n return CustomEvent;\n }\n\n function getWrapper(proto) {\n if (proto == null || proto === Object.prototype) {\n return Event;\n }\n\n var wrapper = wrappers.get(proto);\n\n if (wrapper == null) {\n wrapper = defineWrapper(getWrapper((0, _getPrototypeOf[\"default\"])(proto)), proto);\n wrappers.set(proto, wrapper);\n }\n\n return wrapper;\n }\n\n function wrapEvent(eventTarget, event) {\n var Wrapper = getWrapper((0, _getPrototypeOf[\"default\"])(event));\n return new Wrapper(eventTarget, event);\n }\n\n function isStopped(event) {\n return pd(event).immediateStopped;\n }\n\n function setEventPhase(event, eventPhase) {\n pd(event).eventPhase = eventPhase;\n }\n\n function setCurrentTarget(event, currentTarget) {\n pd(event).currentTarget = currentTarget;\n }\n\n function setPassiveListener(event, passiveListener) {\n pd(event).passiveListener = passiveListener;\n }\n\n var listenersMap = /* @__PURE__ */new _weakMap[\"default\"]();\n var CAPTURE = 1;\n var BUBBLE = 2;\n var ATTRIBUTE = 3;\n\n function isObject(x) {\n return x !== null && (0, _typeof2[\"default\"])(x) === \"object\";\n }\n\n function getListeners(eventTarget) {\n var listeners = listenersMap.get(eventTarget);\n\n if (listeners == null) {\n throw new TypeError(\"'this' is expected an EventTarget object, but got another value.\");\n }\n\n return listeners;\n }\n\n function defineEventAttributeDescriptor(eventName) {\n return {\n get: function get() {\n var listeners = getListeners(this);\n var node = listeners.get(eventName);\n\n while (node != null) {\n if (node.listenerType === ATTRIBUTE) {\n return node.listener;\n }\n\n node = node.next;\n }\n\n return null;\n },\n set: function set(listener) {\n if (typeof listener !== \"function\" && !isObject(listener)) {\n listener = null;\n }\n\n var listeners = getListeners(this);\n var prev = null;\n var node = listeners.get(eventName);\n\n while (node != null) {\n if (node.listenerType === ATTRIBUTE) {\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners[\"delete\"](eventName);\n }\n } else {\n prev = node;\n }\n\n node = node.next;\n }\n\n if (listener !== null) {\n var newNode = {\n listener: listener,\n listenerType: ATTRIBUTE,\n passive: false,\n once: false,\n next: null\n };\n\n if (prev === null) {\n listeners.set(eventName, newNode);\n } else {\n prev.next = newNode;\n }\n }\n },\n configurable: true,\n enumerable: true\n };\n }\n\n function defineEventAttribute(eventTargetPrototype, eventName) {\n (0, _defineProperty[\"default\"])(eventTargetPrototype, \"on\".concat(eventName), defineEventAttributeDescriptor(eventName));\n }\n\n function defineCustomEventTarget(eventNames) {\n function CustomEventTarget() {\n EventTarget.call(this);\n }\n\n CustomEventTarget.prototype = (0, _create[\"default\"])(EventTarget.prototype, {\n constructor: {\n value: CustomEventTarget,\n configurable: true,\n writable: true\n }\n });\n\n for (var i = 0; i < eventNames.length; ++i) {\n defineEventAttribute(CustomEventTarget.prototype, eventNames[i]);\n }\n\n return CustomEventTarget;\n }\n\n function EventTarget() {\n if (this instanceof EventTarget) {\n listenersMap.set(this, /* @__PURE__ */new _map[\"default\"]());\n return;\n }\n\n if (arguments.length === 1 && (0, _isArray[\"default\"])(arguments[0])) {\n return defineCustomEventTarget(arguments[0]);\n }\n\n if (arguments.length > 0) {\n var types = new Array(arguments.length);\n\n for (var i = 0; i < arguments.length; ++i) {\n types[i] = arguments[i];\n }\n\n return defineCustomEventTarget(types);\n }\n\n throw new TypeError(\"Cannot call a class as a function\");\n }\n\n EventTarget.prototype = {\n addEventListener: function addEventListener(eventName, listener, options) {\n if (listener == null) {\n return;\n }\n\n if (typeof listener !== \"function\" && !isObject(listener)) {\n throw new TypeError(\"'listener' should be a function or an object.\");\n }\n\n var listeners = getListeners(this);\n var optionsIsObj = isObject(options);\n var capture = optionsIsObj ? Boolean(options.capture) : Boolean(options);\n var listenerType = capture ? CAPTURE : BUBBLE;\n var newNode = {\n listener: listener,\n listenerType: listenerType,\n passive: optionsIsObj && Boolean(options.passive),\n once: optionsIsObj && Boolean(options.once),\n next: null\n };\n var node = listeners.get(eventName);\n\n if (node === void 0) {\n listeners.set(eventName, newNode);\n return;\n }\n\n var prev = null;\n\n while (node != null) {\n if (node.listener === listener && node.listenerType === listenerType) {\n return;\n }\n\n prev = node;\n node = node.next;\n }\n\n prev.next = newNode;\n },\n removeEventListener: function removeEventListener(eventName, listener, options) {\n if (listener == null) {\n return;\n }\n\n var listeners = getListeners(this);\n var capture = isObject(options) ? Boolean(options.capture) : Boolean(options);\n var listenerType = capture ? CAPTURE : BUBBLE;\n var prev = null;\n var node = listeners.get(eventName);\n\n while (node != null) {\n if (node.listener === listener && node.listenerType === listenerType) {\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners[\"delete\"](eventName);\n }\n\n return;\n }\n\n prev = node;\n node = node.next;\n }\n },\n dispatchEvent: function dispatchEvent(event) {\n if (event == null || typeof event.type !== \"string\") {\n throw new TypeError('\"event.type\" should be a string.');\n }\n\n var listeners = getListeners(this);\n var eventName = event.type;\n var node = listeners.get(eventName);\n\n if (node == null) {\n return true;\n }\n\n var wrappedEvent = wrapEvent(this, event);\n var prev = null;\n\n while (node != null) {\n if (node.once) {\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners[\"delete\"](eventName);\n }\n } else {\n prev = node;\n }\n\n setPassiveListener(wrappedEvent, node.passive ? node.listener : null);\n\n if (typeof node.listener === \"function\") {\n try {\n node.listener.call(this, wrappedEvent);\n } catch (err) {\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(err);\n }\n }\n } else if (node.listenerType !== ATTRIBUTE && typeof node.listener.handleEvent === \"function\") {\n node.listener.handleEvent(wrappedEvent);\n }\n\n if (isStopped(wrappedEvent)) {\n break;\n }\n\n node = node.next;\n }\n\n setPassiveListener(wrappedEvent, null);\n setEventPhase(wrappedEvent, 0);\n setCurrentTarget(wrappedEvent, null);\n return !wrappedEvent.defaultPrevented;\n }\n };\n (0, _defineProperty[\"default\"])(EventTarget.prototype, \"constructor\", {\n value: EventTarget,\n configurable: true,\n writable: true\n });\n\n if (typeof window !== \"undefined\" && typeof window.EventTarget !== \"undefined\") {\n (0, _setPrototypeOf[\"default\"])(EventTarget.prototype, window.EventTarget.prototype);\n }\n\n exports2.EventTarget = EventTarget;\n exports2[\"default\"] = EventTarget;\n exports2.defineEventAttribute = defineEventAttribute;\n module2.exports = EventTarget;\n module2.exports.EventTarget = module2.exports[\"default\"] = EventTarget;\n module2.exports.defineEventAttribute = defineEventAttribute;\n }\n}); // ../abort-controller/dist/abort-controller.js\n\n\nvar require_abort_controller = __commonJS({\n \"../abort-controller/dist/abort-controller.js\": function abortControllerDistAbortControllerJs(exports2, module2) {\n \"use strict\";\n\n (0, _defineProperty[\"default\"])(exports2, \"__esModule\", {\n value: true\n });\n var eventTargetShim = require_event_target_shim();\n\n var AbortSignal2 = /*#__PURE__*/function (_eventTargetShim$Even) {\n (0, _inherits2[\"default\"])(AbortSignal2, _eventTargetShim$Even);\n\n var _super = (0, _createSuper2[\"default\"])(AbortSignal2);\n\n function AbortSignal2() {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, AbortSignal2);\n _this = _super.call(this);\n throw new TypeError(\"AbortSignal cannot be constructed directly\");\n return _this;\n }\n\n (0, _createClass2[\"default\"])(AbortSignal2, [{\n key: \"aborted\",\n get: function get() {\n var aborted = abortedFlags.get(this);\n\n if (typeof aborted !== \"boolean\") {\n throw new TypeError(\"Expected 'this' to be an 'AbortSignal' object, but got \".concat(this === null ? \"null\" : (0, _typeof2[\"default\"])(this)));\n }\n\n return aborted;\n }\n }]);\n return AbortSignal2;\n }(eventTargetShim.EventTarget);\n\n eventTargetShim.defineEventAttribute(AbortSignal2.prototype, \"abort\");\n\n function createAbortSignal() {\n var signal = (0, _create[\"default\"])(AbortSignal2.prototype);\n eventTargetShim.EventTarget.call(signal);\n abortedFlags.set(signal, false);\n return signal;\n }\n\n function abortSignal(signal) {\n if (abortedFlags.get(signal) !== false) {\n return;\n }\n\n abortedFlags.set(signal, true);\n signal.dispatchEvent({\n type: \"abort\"\n });\n }\n\n var abortedFlags = /* @__PURE__ */new _weakMap[\"default\"]();\n (0, _defineProperties[\"default\"])(AbortSignal2.prototype, {\n aborted: {\n enumerable: true\n }\n });\n\n if (typeof _symbol[\"default\"] === \"function\" && (0, _typeof2[\"default\"])(_toStringTag[\"default\"]) === \"symbol\") {\n (0, _defineProperty[\"default\"])(AbortSignal2.prototype, _toStringTag[\"default\"], {\n configurable: true,\n value: \"AbortSignal\"\n });\n }\n\n var AbortController2 = /*#__PURE__*/function () {\n function AbortController2() {\n (0, _classCallCheck2[\"default\"])(this, AbortController2);\n signals.set(this, createAbortSignal());\n }\n\n (0, _createClass2[\"default\"])(AbortController2, [{\n key: \"signal\",\n get: function get() {\n return getSignal(this);\n }\n }, {\n key: \"abort\",\n value: function abort() {\n abortSignal(getSignal(this));\n }\n }]);\n return AbortController2;\n }();\n\n var signals = /* @__PURE__ */new _weakMap[\"default\"]();\n\n function getSignal(controller) {\n var signal = signals.get(controller);\n\n if (signal == null) {\n throw new TypeError(\"Expected 'this' to be an 'AbortController' object, but got \".concat(controller === null ? \"null\" : (0, _typeof2[\"default\"])(controller)));\n }\n\n return signal;\n }\n\n (0, _defineProperties[\"default\"])(AbortController2.prototype, {\n signal: {\n enumerable: true\n },\n abort: {\n enumerable: true\n }\n });\n\n if (typeof _symbol[\"default\"] === \"function\" && (0, _typeof2[\"default\"])(_toStringTag[\"default\"]) === \"symbol\") {\n (0, _defineProperty[\"default\"])(AbortController2.prototype, _toStringTag[\"default\"], {\n configurable: true,\n value: \"AbortController\"\n });\n }\n\n exports2.AbortController = AbortController2;\n exports2.AbortSignal = AbortSignal2;\n exports2[\"default\"] = AbortController2;\n module2.exports = AbortController2;\n module2.exports.AbortController = module2.exports[\"default\"] = AbortController2;\n module2.exports.AbortSignal = AbortSignal2;\n }\n}); // src/index.js\n\n\nvar import_abort_controller = __toESM(require_abort_controller());\n\nvar NativeAbortController = (typeof window === \"undefined\" ? {} : window).AbortController;\nvar AbortController = NativeAbortController || import_abort_controller[\"default\"];\nvar NativeAbortSignal = (typeof window === \"undefined\" ? {} : window).AbortSignal;\nvar AbortSignal = NativeAbortSignal || import_abort_controller.AbortSignal;\nmodule.exports = {\n AbortController: AbortController,\n AbortSignal: AbortSignal,\n \"default\": AbortController\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYWJvcnQtY29udHJvbGxlci1lczUvbGliL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLDZCQUE2QixzS0FBMEU7O0FBRXZHLDhDQUE4QyxtQkFBTyxDQUFDLHNIQUErQzs7QUFFckcsMkNBQTJDLG1CQUFPLENBQUMsZ0hBQTRDOztBQUUvRix3Q0FBd0MsbUJBQU8sQ0FBQywwR0FBeUM7O0FBRXpGLDJDQUEyQyxtQkFBTyxDQUFDLGdIQUE0Qzs7QUFFL0YseURBQXlELG1CQUFPLENBQUMsNElBQTBEOztBQUUzSCxzQ0FBc0MsbUJBQU8sQ0FBQyxzR0FBdUM7O0FBRXJGLHFDQUFxQyxtQkFBTyxDQUFDLGtJQUFxRDs7QUFFbEcsNkNBQTZDLG1CQUFPLENBQUMsb0pBQThEOztBQUVuSCx1REFBdUQsbUJBQU8sQ0FBQyw0S0FBMEU7O0FBRXpJLGtEQUFrRCxtQkFBTyxDQUFDLGtLQUFxRTs7QUFFL0gsNkNBQTZDLG1CQUFPLENBQUMsc0pBQStEOztBQUVwSCxzQ0FBc0MsbUJBQU8sQ0FBQyx3SEFBZ0Q7O0FBRTlGLGtDQUFrQyxtQkFBTyxDQUFDLHdIQUFnRDs7QUFFMUYsbUNBQW1DLG1CQUFPLENBQUMsOEhBQW1EOztBQUU5Riw2Q0FBNkMsbUJBQU8sQ0FBQyxzSkFBK0Q7O0FBRXBILGtDQUFrQyxtQkFBTyxDQUFDLDhHQUEyQzs7QUFFckYsc0NBQXNDLG1CQUFPLENBQUMsb0lBQXNEOztBQUVwRywrQ0FBK0MsbUJBQU8sQ0FBQyx3SkFBZ0U7O0FBRXZILHFDQUFxQyxtQkFBTyxDQUFDLG9IQUE4Qzs7QUFFM0YsMENBQTBDLG1CQUFPLENBQUMsZ0pBQTREOztBQUU5RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsU0FBUztBQUNUOztBQUVBLDBCQUEwQiw4QkFBOEI7QUFDeEQ7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLG1HQUFtRztBQUNuRztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsR0FBRzs7O0FBR0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUEsc0JBQXNCLGlCQUFpQjtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQLHNCQUFzQixpQkFBaUI7QUFDdkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQLHNCQUFzQix1QkFBdUI7QUFDN0M7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsd0JBQXdCLHNCQUFzQjtBQUM5QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEdBQUc7OztBQUdKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsR0FBRzs7O0FBR0o7O0FBRUEsZ0VBQWdFO0FBQ2hFO0FBQ0EsNERBQTREO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL2JvdGZyYW1ld29yay1kaXJlY3RsaW5lc3BlZWNoLXNkay8uL25vZGVfbW9kdWxlcy9hYm9ydC1jb250cm9sbGVyLWVzNS9saWIvaW5kZXguanM/NDJkNCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKVtcImRlZmF1bHRcIl07XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCIpKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS1jb3JlanMzL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIikpO1xuXG52YXIgX2luaGVyaXRzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lLWNvcmVqczMvaGVscGVycy9pbmhlcml0c1wiKSk7XG5cbnZhciBfY3JlYXRlU3VwZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9oZWxwZXJzL2NyZWF0ZVN1cGVyXCIpKTtcblxudmFyIF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lLWNvcmVqczMvaGVscGVycy9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyXCIpKTtcblxudmFyIF90eXBlb2YyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9oZWxwZXJzL3R5cGVvZlwiKSk7XG5cbnZhciBfY3JlYXRlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9vYmplY3QvY3JlYXRlXCIpKTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lLWNvcmVqczMvY29yZS1qcy1zdGFibGUvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKSk7XG5cbnZhciBfZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yXCIpKTtcblxudmFyIF9nZXRPd25Qcm9wZXJ0eU5hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1uYW1lc1wiKSk7XG5cbnZhciBfZ2V0UHJvdG90eXBlT2YgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS1jb3JlanMzL2NvcmUtanMtc3RhYmxlL29iamVjdC9nZXQtcHJvdG90eXBlLW9mXCIpKTtcblxudmFyIF93ZWFrTWFwID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS93ZWFrLW1hcFwiKSk7XG5cbnZhciBfbm93ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9kYXRlL25vd1wiKSk7XG5cbnZhciBfa2V5cyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lLWNvcmVqczMvY29yZS1qcy1zdGFibGUvb2JqZWN0L2tleXNcIikpO1xuXG52YXIgX3NldFByb3RvdHlwZU9mID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKSk7XG5cbnZhciBfbWFwID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9tYXBcIikpO1xuXG52YXIgX2lzQXJyYXkgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS1jb3JlanMzL2NvcmUtanMtc3RhYmxlL2FycmF5L2lzLWFycmF5XCIpKTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0aWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9vYmplY3QvZGVmaW5lLXByb3BlcnRpZXNcIikpO1xuXG52YXIgX3N5bWJvbCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lLWNvcmVqczMvY29yZS1qcy1zdGFibGUvc3ltYm9sXCIpKTtcblxudmFyIF90b1N0cmluZ1RhZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIkBiYWJlbC9ydW50aW1lLWNvcmVqczMvY29yZS1qcy1zdGFibGUvc3ltYm9sL3RvLXN0cmluZy10YWdcIikpO1xuXG52YXIgX19jcmVhdGUgPSBfY3JlYXRlW1wiZGVmYXVsdFwiXTtcbnZhciBfX2RlZlByb3AgPSBfZGVmaW5lUHJvcGVydHlbXCJkZWZhdWx0XCJdO1xudmFyIF9fZ2V0T3duUHJvcERlc2MgPSBfZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yW1wiZGVmYXVsdFwiXTtcbnZhciBfX2dldE93blByb3BOYW1lcyA9IF9nZXRPd25Qcm9wZXJ0eU5hbWVzW1wiZGVmYXVsdFwiXTtcbnZhciBfX2dldFByb3RvT2YgPSBfZ2V0UHJvdG90eXBlT2ZbXCJkZWZhdWx0XCJdO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbnZhciBfX21hcmtBc01vZHVsZSA9IGZ1bmN0aW9uIF9fbWFya0FzTW9kdWxlKHRhcmdldCkge1xuICByZXR1cm4gX19kZWZQcm9wKHRhcmdldCwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxuICB9KTtcbn07XG5cbnZhciBfX2NvbW1vbkpTID0gZnVuY3Rpb24gX19jb21tb25KUyhjYiwgbW9kKSB7XG4gIHJldHVybiBmdW5jdGlvbiBfX3JlcXVpcmUoKSB7XG4gICAgcmV0dXJuIG1vZCB8fCAoMCwgY2JbX19nZXRPd25Qcm9wTmFtZXMoY2IpWzBdXSkoKG1vZCA9IHtcbiAgICAgIGV4cG9ydHM6IHt9XG4gICAgfSkuZXhwb3J0cywgbW9kKSwgbW9kLmV4cG9ydHM7XG4gIH07XG59O1xuXG52YXIgX19yZUV4cG9ydCA9IGZ1bmN0aW9uIF9fcmVFeHBvcnQodGFyZ2V0LCBtb2R1bGUyLCBjb3B5RGVmYXVsdCwgZGVzYykge1xuICBpZiAobW9kdWxlMiAmJiAoMCwgX3R5cGVvZjJbXCJkZWZhdWx0XCJdKShtb2R1bGUyKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgbW9kdWxlMiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdmFyIF9pdGVyYXRvciA9ICgwLCBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcjJbXCJkZWZhdWx0XCJdKShfX2dldE93blByb3BOYW1lcyhtb2R1bGUyKSksXG4gICAgICAgIF9zdGVwO1xuXG4gICAgdHJ5IHtcbiAgICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKCkge1xuICAgICAgICB2YXIga2V5ID0gX3N0ZXAudmFsdWU7XG4gICAgICAgIGlmICghX19oYXNPd25Qcm9wLmNhbGwodGFyZ2V0LCBrZXkpICYmIChjb3B5RGVmYXVsdCB8fCBrZXkgIT09IFwiZGVmYXVsdFwiKSkgX19kZWZQcm9wKHRhcmdldCwga2V5LCB7XG4gICAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgICAgICByZXR1cm4gbW9kdWxlMltrZXldO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZW51bWVyYWJsZTogIShkZXNjID0gX19nZXRPd25Qcm9wRGVzYyhtb2R1bGUyLCBrZXkpKSB8fCBkZXNjLmVudW1lcmFibGVcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBmb3IgKF9pdGVyYXRvci5zKCk7ICEoX3N0ZXAgPSBfaXRlcmF0b3IubigpKS5kb25lOykge1xuICAgICAgICBfbG9vcCgpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgX2l0ZXJhdG9yLmUoZXJyKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgX2l0ZXJhdG9yLmYoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufTtcblxudmFyIF9fdG9FU00gPSBmdW5jdGlvbiBfX3RvRVNNKG1vZHVsZTIsIGlzTm9kZU1vZGUpIHtcbiAgcmV0dXJuIF9fcmVFeHBvcnQoX19tYXJrQXNNb2R1bGUoX19kZWZQcm9wKG1vZHVsZTIgIT0gbnVsbCA/IF9fY3JlYXRlKF9fZ2V0UHJvdG9PZihtb2R1bGUyKSkgOiB7fSwgXCJkZWZhdWx0XCIsICFpc05vZGVNb2RlICYmIG1vZHVsZTIgJiYgbW9kdWxlMi5fX2VzTW9kdWxlID8ge1xuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIG1vZHVsZTJbXCJkZWZhdWx0XCJdO1xuICAgIH0sXG4gICAgZW51bWVyYWJsZTogdHJ1ZVxuICB9IDoge1xuICAgIHZhbHVlOiBtb2R1bGUyLFxuICAgIGVudW1lcmFibGU6IHRydWVcbiAgfSkpLCBtb2R1bGUyKTtcbn07IC8vIC4uL2Fib3J0LWNvbnRyb2xsZXIvbm9kZV9tb2R1bGVzL2V2ZW50LXRhcmdldC1zaGltL2Rpc3QvZXZlbnQtdGFyZ2V0LXNoaW0uanNcblxuXG52YXIgcmVxdWlyZV9ldmVudF90YXJnZXRfc2hpbSA9IF9fY29tbW9uSlMoe1xuICBcIi4uL2Fib3J0LWNvbnRyb2xsZXIvbm9kZV9tb2R1bGVzL2V2ZW50LXRhcmdldC1zaGltL2Rpc3QvZXZlbnQtdGFyZ2V0LXNoaW0uanNcIjogZnVuY3Rpb24gYWJvcnRDb250cm9sbGVyTm9kZV9tb2R1bGVzRXZlbnRUYXJnZXRTaGltRGlzdEV2ZW50VGFyZ2V0U2hpbUpzKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAoMCwgX2RlZmluZVByb3BlcnR5W1wiZGVmYXVsdFwiXSkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciBwcml2YXRlRGF0YSA9IC8qIEBfX1BVUkVfXyAqL25ldyBfd2Vha01hcFtcImRlZmF1bHRcIl0oKTtcbiAgICB2YXIgd3JhcHBlcnMgPSAvKiBAX19QVVJFX18gKi9uZXcgX3dlYWtNYXBbXCJkZWZhdWx0XCJdKCk7XG5cbiAgICBmdW5jdGlvbiBwZChldmVudCkge1xuICAgICAgdmFyIHJldHYgPSBwcml2YXRlRGF0YS5nZXQoZXZlbnQpO1xuICAgICAgY29uc29sZS5hc3NlcnQocmV0diAhPSBudWxsLCBcIid0aGlzJyBpcyBleHBlY3RlZCBhbiBFdmVudCBvYmplY3QsIGJ1dCBnb3RcIiwgZXZlbnQpO1xuICAgICAgcmV0dXJuIHJldHY7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0Q2FuY2VsRmxhZyhkYXRhKSB7XG4gICAgICBpZiAoZGF0YS5wYXNzaXZlTGlzdGVuZXIgIT0gbnVsbCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09IFwidW5kZWZpbmVkXCIgJiYgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJVbmFibGUgdG8gcHJldmVudERlZmF1bHQgaW5zaWRlIHBhc3NpdmUgZXZlbnQgbGlzdGVuZXIgaW52b2NhdGlvbi5cIiwgZGF0YS5wYXNzaXZlTGlzdGVuZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWRhdGEuZXZlbnQuY2FuY2VsYWJsZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGRhdGEuY2FuY2VsZWQgPSB0cnVlO1xuXG4gICAgICBpZiAodHlwZW9mIGRhdGEuZXZlbnQucHJldmVudERlZmF1bHQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBkYXRhLmV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gRXZlbnQoZXZlbnRUYXJnZXQsIGV2ZW50KSB7XG4gICAgICBwcml2YXRlRGF0YS5zZXQodGhpcywge1xuICAgICAgICBldmVudFRhcmdldDogZXZlbnRUYXJnZXQsXG4gICAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgICAgZXZlbnRQaGFzZTogMixcbiAgICAgICAgY3VycmVudFRhcmdldDogZXZlbnRUYXJnZXQsXG4gICAgICAgIGNhbmNlbGVkOiBmYWxzZSxcbiAgICAgICAgc3RvcHBlZDogZmFsc2UsXG4gICAgICAgIGltbWVkaWF0ZVN0b3BwZWQ6IGZhbHNlLFxuICAgICAgICBwYXNzaXZlTGlzdGVuZXI6IG51bGwsXG4gICAgICAgIHRpbWVTdGFtcDogZXZlbnQudGltZVN0YW1wIHx8ICgwLCBfbm93W1wiZGVmYXVsdFwiXSkoKVxuICAgICAgfSk7XG4gICAgICAoMCwgX2RlZmluZVByb3BlcnR5W1wiZGVmYXVsdFwiXSkodGhpcywgXCJpc1RydXN0ZWRcIiwge1xuICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIH0pO1xuICAgICAgdmFyIGtleXMgPSAoMCwgX2tleXNbXCJkZWZhdWx0XCJdKShldmVudCk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgICBpZiAoIShrZXkgaW4gdGhpcykpIHtcbiAgICAgICAgICAoMCwgX2RlZmluZVByb3BlcnR5W1wiZGVmYXVsdFwiXSkodGhpcywga2V5LCBkZWZpbmVSZWRpcmVjdERlc2NyaXB0b3Ioa2V5KSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBFdmVudC5wcm90b3R5cGUgPSB7XG4gICAgICBnZXQgdHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHBkKHRoaXMpLmV2ZW50LnR5cGU7XG4gICAgICB9LFxuXG4gICAgICBnZXQgdGFyZ2V0KCkge1xuICAgICAgICByZXR1cm4gcGQodGhpcykuZXZlbnRUYXJnZXQ7XG4gICAgICB9LFxuXG4gICAgICBnZXQgY3VycmVudFRhcmdldCgpIHtcbiAgICAgICAgcmV0dXJuIHBkKHRoaXMpLmN1cnJlbnRUYXJnZXQ7XG4gICAgICB9LFxuXG4gICAgICBjb21wb3NlZFBhdGg6IGZ1bmN0aW9uIGNvbXBvc2VkUGF0aCgpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRUYXJnZXQgPSBwZCh0aGlzKS5jdXJyZW50VGFyZ2V0O1xuXG4gICAgICAgIGlmIChjdXJyZW50VGFyZ2V0ID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW2N1cnJlbnRUYXJnZXRdO1xuICAgICAgfSxcblxuICAgICAgZ2V0IE5PTkUoKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSxcblxuICAgICAgZ2V0IENBUFRVUklOR19QSEFTRSgpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9LFxuXG4gICAgICBnZXQgQVRfVEFSR0VUKCkge1xuICAgICAgICByZXR1cm4gMjtcbiAgICAgIH0sXG5cbiAgICAgIGdldCBCVUJCTElOR19QSEFTRSgpIHtcbiAgICAgICAgcmV0dXJuIDM7XG4gICAgICB9LFxuXG4gICAgICBnZXQgZXZlbnRQaGFzZSgpIHtcbiAgICAgICAgcmV0dXJuIHBkKHRoaXMpLmV2ZW50UGhhc2U7XG4gICAgICB9LFxuXG4gICAgICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uIHN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICAgICAgdmFyIGRhdGEgPSBwZCh0aGlzKTtcbiAgICAgICAgZGF0YS5zdG9wcGVkID0gdHJ1ZTtcblxuICAgICAgICBpZiAodHlwZW9mIGRhdGEuZXZlbnQuc3RvcFByb3BhZ2F0aW9uID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBkYXRhLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOiBmdW5jdGlvbiBzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSB7XG4gICAgICAgIHZhciBkYXRhID0gcGQodGhpcyk7XG4gICAgICAgIGRhdGEuc3RvcHBlZCA9IHRydWU7XG4gICAgICAgIGRhdGEuaW1tZWRpYXRlU3RvcHBlZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhLmV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgZGF0YS5ldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfSxcblxuICAgICAgZ2V0IGJ1YmJsZXMoKSB7XG4gICAgICAgIHJldHVybiBCb29sZWFuKHBkKHRoaXMpLmV2ZW50LmJ1YmJsZXMpO1xuICAgICAgfSxcblxuICAgICAgZ2V0IGNhbmNlbGFibGUoKSB7XG4gICAgICAgIHJldHVybiBCb29sZWFuKHBkKHRoaXMpLmV2ZW50LmNhbmNlbGFibGUpO1xuICAgICAgfSxcblxuICAgICAgcHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uIHByZXZlbnREZWZhdWx0KCkge1xuICAgICAgICBzZXRDYW5jZWxGbGFnKHBkKHRoaXMpKTtcbiAgICAgIH0sXG5cbiAgICAgIGdldCBkZWZhdWx0UHJldmVudGVkKCkge1xuICAgICAgICByZXR1cm4gcGQodGhpcykuY2FuY2VsZWQ7XG4gICAgICB9LFxuXG4gICAgICBnZXQgY29tcG9zZWQoKSB7XG4gICAgICAgIHJldHVybiBCb29sZWFuKHBkKHRoaXMpLmV2ZW50LmNvbXBvc2VkKTtcbiAgICAgIH0sXG5cbiAgICAgIGdldCB0aW1lU3RhbXAoKSB7XG4gICAgICAgIHJldHVybiBwZCh0aGlzKS50aW1lU3RhbXA7XG4gICAgICB9LFxuXG4gICAgICBnZXQgc3JjRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHBkKHRoaXMpLmV2ZW50VGFyZ2V0O1xuICAgICAgfSxcblxuICAgICAgZ2V0IGNhbmNlbEJ1YmJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHBkKHRoaXMpLnN0b3BwZWQ7XG4gICAgICB9LFxuXG4gICAgICBzZXQgY2FuY2VsQnViYmxlKHZhbHVlKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZGF0YSA9IHBkKHRoaXMpO1xuICAgICAgICBkYXRhLnN0b3BwZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0eXBlb2YgZGF0YS5ldmVudC5jYW5jZWxCdWJibGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgZGF0YS5ldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuXG4gICAgICBnZXQgcmV0dXJuVmFsdWUoKSB7XG4gICAgICAgIHJldHVybiAhcGQodGhpcykuY2FuY2VsZWQ7XG4gICAgICB9LFxuXG4gICAgICBzZXQgcmV0dXJuVmFsdWUodmFsdWUpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgIHNldENhbmNlbEZsYWcocGQodGhpcykpO1xuICAgICAgICB9XG4gICAgICB9LFxuXG4gICAgICBpbml0RXZlbnQ6IGZ1bmN0aW9uIGluaXRFdmVudCgpIHt9XG4gICAgfTtcbiAgICAoMCwgX2RlZmluZVByb3BlcnR5W1wiZGVmYXVsdFwiXSkoRXZlbnQucHJvdG90eXBlLCBcImNvbnN0cnVjdG9yXCIsIHtcbiAgICAgIHZhbHVlOiBFdmVudCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG5cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2Ygd2luZG93LkV2ZW50ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAoMCwgX3NldFByb3RvdHlwZU9mW1wiZGVmYXVsdFwiXSkoRXZlbnQucHJvdG90eXBlLCB3aW5kb3cuRXZlbnQucHJvdG90eXBlKTtcbiAgICAgIHdyYXBwZXJzLnNldCh3aW5kb3cuRXZlbnQucHJvdG90eXBlLCBFdmVudCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVmaW5lUmVkaXJlY3REZXNjcmlwdG9yKGtleSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHBkKHRoaXMpLmV2ZW50W2tleV07XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gc2V0KHZhbHVlKSB7XG4gICAgICAgICAgcGQodGhpcykuZXZlbnRba2V5XSA9IHZhbHVlO1xuICAgICAgICB9LFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVmaW5lQ2FsbERlc2NyaXB0b3Ioa2V5KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUoKSB7XG4gICAgICAgICAgdmFyIGV2ZW50ID0gcGQodGhpcykuZXZlbnQ7XG4gICAgICAgICAgcmV0dXJuIGV2ZW50W2tleV0uYXBwbHkoZXZlbnQsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWZpbmVXcmFwcGVyKEJhc2VFdmVudCwgcHJvdG8pIHtcbiAgICAgIHZhciBrZXlzID0gKDAsIF9rZXlzW1wiZGVmYXVsdFwiXSkocHJvdG8pO1xuXG4gICAgICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIEJhc2VFdmVudDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gQ3VzdG9tRXZlbnQoZXZlbnRUYXJnZXQsIGV2ZW50KSB7XG4gICAgICAgIEJhc2VFdmVudC5jYWxsKHRoaXMsIGV2ZW50VGFyZ2V0LCBldmVudCk7XG4gICAgICB9XG5cbiAgICAgIEN1c3RvbUV2ZW50LnByb3RvdHlwZSA9ICgwLCBfY3JlYXRlW1wiZGVmYXVsdFwiXSkoQmFzZUV2ZW50LnByb3RvdHlwZSwge1xuICAgICAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgICAgIHZhbHVlOiBDdXN0b21FdmVudCxcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgICBpZiAoIShrZXkgaW4gQmFzZUV2ZW50LnByb3RvdHlwZSkpIHtcbiAgICAgICAgICB2YXIgZGVzY3JpcHRvciA9ICgwLCBfZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yW1wiZGVmYXVsdFwiXSkocHJvdG8sIGtleSk7XG4gICAgICAgICAgdmFyIGlzRnVuYyA9IHR5cGVvZiBkZXNjcmlwdG9yLnZhbHVlID09PSBcImZ1bmN0aW9uXCI7XG4gICAgICAgICAgKDAsIF9kZWZpbmVQcm9wZXJ0eVtcImRlZmF1bHRcIl0pKEN1c3RvbUV2ZW50LnByb3RvdHlwZSwga2V5LCBpc0Z1bmMgPyBkZWZpbmVDYWxsRGVzY3JpcHRvcihrZXkpIDogZGVmaW5lUmVkaXJlY3REZXNjcmlwdG9yKGtleSkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDdXN0b21FdmVudDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXcmFwcGVyKHByb3RvKSB7XG4gICAgICBpZiAocHJvdG8gPT0gbnVsbCB8fCBwcm90byA9PT0gT2JqZWN0LnByb3RvdHlwZSkge1xuICAgICAgICByZXR1cm4gRXZlbnQ7XG4gICAgICB9XG5cbiAgICAgIHZhciB3cmFwcGVyID0gd3JhcHBlcnMuZ2V0KHByb3RvKTtcblxuICAgICAgaWYgKHdyYXBwZXIgPT0gbnVsbCkge1xuICAgICAgICB3cmFwcGVyID0gZGVmaW5lV3JhcHBlcihnZXRXcmFwcGVyKCgwLCBfZ2V0UHJvdG90eXBlT2ZbXCJkZWZhdWx0XCJdKShwcm90bykpLCBwcm90byk7XG4gICAgICAgIHdyYXBwZXJzLnNldChwcm90bywgd3JhcHBlcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdyYXBFdmVudChldmVudFRhcmdldCwgZXZlbnQpIHtcbiAgICAgIHZhciBXcmFwcGVyID0gZ2V0V3JhcHBlcigoMCwgX2dldFByb3RvdHlwZU9mW1wiZGVmYXVsdFwiXSkoZXZlbnQpKTtcbiAgICAgIHJldHVybiBuZXcgV3JhcHBlcihldmVudFRhcmdldCwgZXZlbnQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU3RvcHBlZChldmVudCkge1xuICAgICAgcmV0dXJuIHBkKGV2ZW50KS5pbW1lZGlhdGVTdG9wcGVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldEV2ZW50UGhhc2UoZXZlbnQsIGV2ZW50UGhhc2UpIHtcbiAgICAgIHBkKGV2ZW50KS5ldmVudFBoYXNlID0gZXZlbnRQaGFzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRDdXJyZW50VGFyZ2V0KGV2ZW50LCBjdXJyZW50VGFyZ2V0KSB7XG4gICAgICBwZChldmVudCkuY3VycmVudFRhcmdldCA9IGN1cnJlbnRUYXJnZXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0UGFzc2l2ZUxpc3RlbmVyKGV2ZW50LCBwYXNzaXZlTGlzdGVuZXIpIHtcbiAgICAgIHBkKGV2ZW50KS5wYXNzaXZlTGlzdGVuZXIgPSBwYXNzaXZlTGlzdGVuZXI7XG4gICAgfVxuXG4gICAgdmFyIGxpc3RlbmVyc01hcCA9IC8qIEBfX1BVUkVfXyAqL25ldyBfd2Vha01hcFtcImRlZmF1bHRcIl0oKTtcbiAgICB2YXIgQ0FQVFVSRSA9IDE7XG4gICAgdmFyIEJVQkJMRSA9IDI7XG4gICAgdmFyIEFUVFJJQlVURSA9IDM7XG5cbiAgICBmdW5jdGlvbiBpc09iamVjdCh4KSB7XG4gICAgICByZXR1cm4geCAhPT0gbnVsbCAmJiAoMCwgX3R5cGVvZjJbXCJkZWZhdWx0XCJdKSh4KSA9PT0gXCJvYmplY3RcIjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRMaXN0ZW5lcnMoZXZlbnRUYXJnZXQpIHtcbiAgICAgIHZhciBsaXN0ZW5lcnMgPSBsaXN0ZW5lcnNNYXAuZ2V0KGV2ZW50VGFyZ2V0KTtcblxuICAgICAgaWYgKGxpc3RlbmVycyA9PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCIndGhpcycgaXMgZXhwZWN0ZWQgYW4gRXZlbnRUYXJnZXQgb2JqZWN0LCBidXQgZ290IGFub3RoZXIgdmFsdWUuXCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbGlzdGVuZXJzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlZmluZUV2ZW50QXR0cmlidXRlRGVzY3JpcHRvcihldmVudE5hbWUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICAgIHZhciBsaXN0ZW5lcnMgPSBnZXRMaXN0ZW5lcnModGhpcyk7XG4gICAgICAgICAgdmFyIG5vZGUgPSBsaXN0ZW5lcnMuZ2V0KGV2ZW50TmFtZSk7XG5cbiAgICAgICAgICB3aGlsZSAobm9kZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAobm9kZS5saXN0ZW5lclR5cGUgPT09IEFUVFJJQlVURSkge1xuICAgICAgICAgICAgICByZXR1cm4gbm9kZS5saXN0ZW5lcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbm9kZSA9IG5vZGUubmV4dDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiBzZXQobGlzdGVuZXIpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSBcImZ1bmN0aW9uXCIgJiYgIWlzT2JqZWN0KGxpc3RlbmVyKSkge1xuICAgICAgICAgICAgbGlzdGVuZXIgPSBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBsaXN0ZW5lcnMgPSBnZXRMaXN0ZW5lcnModGhpcyk7XG4gICAgICAgICAgdmFyIHByZXYgPSBudWxsO1xuICAgICAgICAgIHZhciBub2RlID0gbGlzdGVuZXJzLmdldChldmVudE5hbWUpO1xuXG4gICAgICAgICAgd2hpbGUgKG5vZGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKG5vZGUubGlzdGVuZXJUeXBlID09PSBBVFRSSUJVVEUpIHtcbiAgICAgICAgICAgICAgaWYgKHByZXYgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBwcmV2Lm5leHQgPSBub2RlLm5leHQ7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS5uZXh0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXJzLnNldChldmVudE5hbWUsIG5vZGUubmV4dCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXJzW1wiZGVsZXRlXCJdKGV2ZW50TmFtZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHByZXYgPSBub2RlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBub2RlID0gbm9kZS5uZXh0O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChsaXN0ZW5lciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIG5ld05vZGUgPSB7XG4gICAgICAgICAgICAgIGxpc3RlbmVyOiBsaXN0ZW5lcixcbiAgICAgICAgICAgICAgbGlzdGVuZXJUeXBlOiBBVFRSSUJVVEUsXG4gICAgICAgICAgICAgIHBhc3NpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICBvbmNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgbmV4dDogbnVsbFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaWYgKHByZXYgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgbGlzdGVuZXJzLnNldChldmVudE5hbWUsIG5ld05vZGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcHJldi5uZXh0ID0gbmV3Tm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWZpbmVFdmVudEF0dHJpYnV0ZShldmVudFRhcmdldFByb3RvdHlwZSwgZXZlbnROYW1lKSB7XG4gICAgICAoMCwgX2RlZmluZVByb3BlcnR5W1wiZGVmYXVsdFwiXSkoZXZlbnRUYXJnZXRQcm90b3R5cGUsIFwib25cIi5jb25jYXQoZXZlbnROYW1lKSwgZGVmaW5lRXZlbnRBdHRyaWJ1dGVEZXNjcmlwdG9yKGV2ZW50TmFtZSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlZmluZUN1c3RvbUV2ZW50VGFyZ2V0KGV2ZW50TmFtZXMpIHtcbiAgICAgIGZ1bmN0aW9uIEN1c3RvbUV2ZW50VGFyZ2V0KCkge1xuICAgICAgICBFdmVudFRhcmdldC5jYWxsKHRoaXMpO1xuICAgICAgfVxuXG4gICAgICBDdXN0b21FdmVudFRhcmdldC5wcm90b3R5cGUgPSAoMCwgX2NyZWF0ZVtcImRlZmF1bHRcIl0pKEV2ZW50VGFyZ2V0LnByb3RvdHlwZSwge1xuICAgICAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgICAgIHZhbHVlOiBDdXN0b21FdmVudFRhcmdldCxcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXZlbnROYW1lcy5sZW5ndGg7ICsraSkge1xuICAgICAgICBkZWZpbmVFdmVudEF0dHJpYnV0ZShDdXN0b21FdmVudFRhcmdldC5wcm90b3R5cGUsIGV2ZW50TmFtZXNbaV0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ3VzdG9tRXZlbnRUYXJnZXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gRXZlbnRUYXJnZXQoKSB7XG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEV2ZW50VGFyZ2V0KSB7XG4gICAgICAgIGxpc3RlbmVyc01hcC5zZXQodGhpcywgLyogQF9fUFVSRV9fICovbmV3IF9tYXBbXCJkZWZhdWx0XCJdKCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmICgwLCBfaXNBcnJheVtcImRlZmF1bHRcIl0pKGFyZ3VtZW50c1swXSkpIHtcbiAgICAgICAgcmV0dXJuIGRlZmluZUN1c3RvbUV2ZW50VGFyZ2V0KGFyZ3VtZW50c1swXSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgdHlwZXMgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCk7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICB0eXBlc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWZpbmVDdXN0b21FdmVudFRhcmdldCh0eXBlcyk7XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG4gICAgfVxuXG4gICAgRXZlbnRUYXJnZXQucHJvdG90eXBlID0ge1xuICAgICAgYWRkRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGxpc3RlbmVyLCBvcHRpb25zKSB7XG4gICAgICAgIGlmIChsaXN0ZW5lciA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gXCJmdW5jdGlvblwiICYmICFpc09iamVjdChsaXN0ZW5lcikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiJ2xpc3RlbmVyJyBzaG91bGQgYmUgYSBmdW5jdGlvbiBvciBhbiBvYmplY3QuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxpc3RlbmVycyA9IGdldExpc3RlbmVycyh0aGlzKTtcbiAgICAgICAgdmFyIG9wdGlvbnNJc09iaiA9IGlzT2JqZWN0KG9wdGlvbnMpO1xuICAgICAgICB2YXIgY2FwdHVyZSA9IG9wdGlvbnNJc09iaiA/IEJvb2xlYW4ob3B0aW9ucy5jYXB0dXJlKSA6IEJvb2xlYW4ob3B0aW9ucyk7XG4gICAgICAgIHZhciBsaXN0ZW5lclR5cGUgPSBjYXB0dXJlID8gQ0FQVFVSRSA6IEJVQkJMRTtcbiAgICAgICAgdmFyIG5ld05vZGUgPSB7XG4gICAgICAgICAgbGlzdGVuZXI6IGxpc3RlbmVyLFxuICAgICAgICAgIGxpc3RlbmVyVHlwZTogbGlzdGVuZXJUeXBlLFxuICAgICAgICAgIHBhc3NpdmU6IG9wdGlvbnNJc09iaiAmJiBCb29sZWFuKG9wdGlvbnMucGFzc2l2ZSksXG4gICAgICAgICAgb25jZTogb3B0aW9uc0lzT2JqICYmIEJvb2xlYW4ob3B0aW9ucy5vbmNlKSxcbiAgICAgICAgICBuZXh0OiBudWxsXG4gICAgICAgIH07XG4gICAgICAgIHZhciBub2RlID0gbGlzdGVuZXJzLmdldChldmVudE5hbWUpO1xuXG4gICAgICAgIGlmIChub2RlID09PSB2b2lkIDApIHtcbiAgICAgICAgICBsaXN0ZW5lcnMuc2V0KGV2ZW50TmFtZSwgbmV3Tm9kZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHByZXYgPSBudWxsO1xuXG4gICAgICAgIHdoaWxlIChub2RlICE9IG51bGwpIHtcbiAgICAgICAgICBpZiAobm9kZS5saXN0ZW5lciA9PT0gbGlzdGVuZXIgJiYgbm9kZS5saXN0ZW5lclR5cGUgPT09IGxpc3RlbmVyVHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHByZXYgPSBub2RlO1xuICAgICAgICAgIG5vZGUgPSBub2RlLm5leHQ7XG4gICAgICAgIH1cblxuICAgICAgICBwcmV2Lm5leHQgPSBuZXdOb2RlO1xuICAgICAgfSxcbiAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBsaXN0ZW5lciwgb3B0aW9ucykge1xuICAgICAgICBpZiAobGlzdGVuZXIgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBsaXN0ZW5lcnMgPSBnZXRMaXN0ZW5lcnModGhpcyk7XG4gICAgICAgIHZhciBjYXB0dXJlID0gaXNPYmplY3Qob3B0aW9ucykgPyBCb29sZWFuKG9wdGlvbnMuY2FwdHVyZSkgOiBCb29sZWFuKG9wdGlvbnMpO1xuICAgICAgICB2YXIgbGlzdGVuZXJUeXBlID0gY2FwdHVyZSA/IENBUFRVUkUgOiBCVUJCTEU7XG4gICAgICAgIHZhciBwcmV2ID0gbnVsbDtcbiAgICAgICAgdmFyIG5vZGUgPSBsaXN0ZW5lcnMuZ2V0KGV2ZW50TmFtZSk7XG5cbiAgICAgICAgd2hpbGUgKG5vZGUgIT0gbnVsbCkge1xuICAgICAgICAgIGlmIChub2RlLmxpc3RlbmVyID09PSBsaXN0ZW5lciAmJiBub2RlLmxpc3RlbmVyVHlwZSA9PT0gbGlzdGVuZXJUeXBlKSB7XG4gICAgICAgICAgICBpZiAocHJldiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICBwcmV2Lm5leHQgPSBub2RlLm5leHQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUubmV4dCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICBsaXN0ZW5lcnMuc2V0KGV2ZW50TmFtZSwgbm9kZS5uZXh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGxpc3RlbmVyc1tcImRlbGV0ZVwiXShldmVudE5hbWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcHJldiA9IG5vZGU7XG4gICAgICAgICAgbm9kZSA9IG5vZGUubmV4dDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGRpc3BhdGNoRXZlbnQ6IGZ1bmN0aW9uIGRpc3BhdGNoRXZlbnQoZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50ID09IG51bGwgfHwgdHlwZW9mIGV2ZW50LnR5cGUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImV2ZW50LnR5cGVcIiBzaG91bGQgYmUgYSBzdHJpbmcuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbGlzdGVuZXJzID0gZ2V0TGlzdGVuZXJzKHRoaXMpO1xuICAgICAgICB2YXIgZXZlbnROYW1lID0gZXZlbnQudHlwZTtcbiAgICAgICAgdmFyIG5vZGUgPSBsaXN0ZW5lcnMuZ2V0KGV2ZW50TmFtZSk7XG5cbiAgICAgICAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHdyYXBwZWRFdmVudCA9IHdyYXBFdmVudCh0aGlzLCBldmVudCk7XG4gICAgICAgIHZhciBwcmV2ID0gbnVsbDtcblxuICAgICAgICB3aGlsZSAobm9kZSAhPSBudWxsKSB7XG4gICAgICAgICAgaWYgKG5vZGUub25jZSkge1xuICAgICAgICAgICAgaWYgKHByZXYgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgcHJldi5uZXh0ID0gbm9kZS5uZXh0O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLm5leHQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgbGlzdGVuZXJzLnNldChldmVudE5hbWUsIG5vZGUubmV4dCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBsaXN0ZW5lcnNbXCJkZWxldGVcIl0oZXZlbnROYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJldiA9IG5vZGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2V0UGFzc2l2ZUxpc3RlbmVyKHdyYXBwZWRFdmVudCwgbm9kZS5wYXNzaXZlID8gbm9kZS5saXN0ZW5lciA6IG51bGwpO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBub2RlLmxpc3RlbmVyID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIG5vZGUubGlzdGVuZXIuY2FsbCh0aGlzLCB3cmFwcGVkRXZlbnQpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChub2RlLmxpc3RlbmVyVHlwZSAhPT0gQVRUUklCVVRFICYmIHR5cGVvZiBub2RlLmxpc3RlbmVyLmhhbmRsZUV2ZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIG5vZGUubGlzdGVuZXIuaGFuZGxlRXZlbnQod3JhcHBlZEV2ZW50KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaXNTdG9wcGVkKHdyYXBwZWRFdmVudCkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5vZGUgPSBub2RlLm5leHQ7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRQYXNzaXZlTGlzdGVuZXIod3JhcHBlZEV2ZW50LCBudWxsKTtcbiAgICAgICAgc2V0RXZlbnRQaGFzZSh3cmFwcGVkRXZlbnQsIDApO1xuICAgICAgICBzZXRDdXJyZW50VGFyZ2V0KHdyYXBwZWRFdmVudCwgbnVsbCk7XG4gICAgICAgIHJldHVybiAhd3JhcHBlZEV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQ7XG4gICAgICB9XG4gICAgfTtcbiAgICAoMCwgX2RlZmluZVByb3BlcnR5W1wiZGVmYXVsdFwiXSkoRXZlbnRUYXJnZXQucHJvdG90eXBlLCBcImNvbnN0cnVjdG9yXCIsIHtcbiAgICAgIHZhbHVlOiBFdmVudFRhcmdldCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG5cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2Ygd2luZG93LkV2ZW50VGFyZ2V0ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAoMCwgX3NldFByb3RvdHlwZU9mW1wiZGVmYXVsdFwiXSkoRXZlbnRUYXJnZXQucHJvdG90eXBlLCB3aW5kb3cuRXZlbnRUYXJnZXQucHJvdG90eXBlKTtcbiAgICB9XG5cbiAgICBleHBvcnRzMi5FdmVudFRhcmdldCA9IEV2ZW50VGFyZ2V0O1xuICAgIGV4cG9ydHMyW1wiZGVmYXVsdFwiXSA9IEV2ZW50VGFyZ2V0O1xuICAgIGV4cG9ydHMyLmRlZmluZUV2ZW50QXR0cmlidXRlID0gZGVmaW5lRXZlbnRBdHRyaWJ1dGU7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gRXZlbnRUYXJnZXQ7XG4gICAgbW9kdWxlMi5leHBvcnRzLkV2ZW50VGFyZ2V0ID0gbW9kdWxlMi5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IEV2ZW50VGFyZ2V0O1xuICAgIG1vZHVsZTIuZXhwb3J0cy5kZWZpbmVFdmVudEF0dHJpYnV0ZSA9IGRlZmluZUV2ZW50QXR0cmlidXRlO1xuICB9XG59KTsgLy8gLi4vYWJvcnQtY29udHJvbGxlci9kaXN0L2Fib3J0LWNvbnRyb2xsZXIuanNcblxuXG52YXIgcmVxdWlyZV9hYm9ydF9jb250cm9sbGVyID0gX19jb21tb25KUyh7XG4gIFwiLi4vYWJvcnQtY29udHJvbGxlci9kaXN0L2Fib3J0LWNvbnRyb2xsZXIuanNcIjogZnVuY3Rpb24gYWJvcnRDb250cm9sbGVyRGlzdEFib3J0Q29udHJvbGxlckpzKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAoMCwgX2RlZmluZVByb3BlcnR5W1wiZGVmYXVsdFwiXSkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciBldmVudFRhcmdldFNoaW0gPSByZXF1aXJlX2V2ZW50X3RhcmdldF9zaGltKCk7XG5cbiAgICB2YXIgQWJvcnRTaWduYWwyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfZXZlbnRUYXJnZXRTaGltJEV2ZW4pIHtcbiAgICAgICgwLCBfaW5oZXJpdHMyW1wiZGVmYXVsdFwiXSkoQWJvcnRTaWduYWwyLCBfZXZlbnRUYXJnZXRTaGltJEV2ZW4pO1xuXG4gICAgICB2YXIgX3N1cGVyID0gKDAsIF9jcmVhdGVTdXBlcjJbXCJkZWZhdWx0XCJdKShBYm9ydFNpZ25hbDIpO1xuXG4gICAgICBmdW5jdGlvbiBBYm9ydFNpZ25hbDIoKSB7XG4gICAgICAgIHZhciBfdGhpcztcblxuICAgICAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMltcImRlZmF1bHRcIl0pKHRoaXMsIEFib3J0U2lnbmFsMik7XG4gICAgICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcyk7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJBYm9ydFNpZ25hbCBjYW5ub3QgYmUgY29uc3RydWN0ZWQgZGlyZWN0bHlcIik7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICAgIH1cblxuICAgICAgKDAsIF9jcmVhdGVDbGFzczJbXCJkZWZhdWx0XCJdKShBYm9ydFNpZ25hbDIsIFt7XG4gICAgICAgIGtleTogXCJhYm9ydGVkXCIsXG4gICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICAgIHZhciBhYm9ydGVkID0gYWJvcnRlZEZsYWdzLmdldCh0aGlzKTtcblxuICAgICAgICAgIGlmICh0eXBlb2YgYWJvcnRlZCAhPT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJFeHBlY3RlZCAndGhpcycgdG8gYmUgYW4gJ0Fib3J0U2lnbmFsJyBvYmplY3QsIGJ1dCBnb3QgXCIuY29uY2F0KHRoaXMgPT09IG51bGwgPyBcIm51bGxcIiA6ICgwLCBfdHlwZW9mMltcImRlZmF1bHRcIl0pKHRoaXMpKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGFib3J0ZWQ7XG4gICAgICAgIH1cbiAgICAgIH1dKTtcbiAgICAgIHJldHVybiBBYm9ydFNpZ25hbDI7XG4gICAgfShldmVudFRhcmdldFNoaW0uRXZlbnRUYXJnZXQpO1xuXG4gICAgZXZlbnRUYXJnZXRTaGltLmRlZmluZUV2ZW50QXR0cmlidXRlKEFib3J0U2lnbmFsMi5wcm90b3R5cGUsIFwiYWJvcnRcIik7XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVBYm9ydFNpZ25hbCgpIHtcbiAgICAgIHZhciBzaWduYWwgPSAoMCwgX2NyZWF0ZVtcImRlZmF1bHRcIl0pKEFib3J0U2lnbmFsMi5wcm90b3R5cGUpO1xuICAgICAgZXZlbnRUYXJnZXRTaGltLkV2ZW50VGFyZ2V0LmNhbGwoc2lnbmFsKTtcbiAgICAgIGFib3J0ZWRGbGFncy5zZXQoc2lnbmFsLCBmYWxzZSk7XG4gICAgICByZXR1cm4gc2lnbmFsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFib3J0U2lnbmFsKHNpZ25hbCkge1xuICAgICAgaWYgKGFib3J0ZWRGbGFncy5nZXQoc2lnbmFsKSAhPT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBhYm9ydGVkRmxhZ3Muc2V0KHNpZ25hbCwgdHJ1ZSk7XG4gICAgICBzaWduYWwuZGlzcGF0Y2hFdmVudCh7XG4gICAgICAgIHR5cGU6IFwiYWJvcnRcIlxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIGFib3J0ZWRGbGFncyA9IC8qIEBfX1BVUkVfXyAqL25ldyBfd2Vha01hcFtcImRlZmF1bHRcIl0oKTtcbiAgICAoMCwgX2RlZmluZVByb3BlcnRpZXNbXCJkZWZhdWx0XCJdKShBYm9ydFNpZ25hbDIucHJvdG90eXBlLCB7XG4gICAgICBhYm9ydGVkOiB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0eXBlb2YgX3N5bWJvbFtcImRlZmF1bHRcIl0gPT09IFwiZnVuY3Rpb25cIiAmJiAoMCwgX3R5cGVvZjJbXCJkZWZhdWx0XCJdKShfdG9TdHJpbmdUYWdbXCJkZWZhdWx0XCJdKSA9PT0gXCJzeW1ib2xcIikge1xuICAgICAgKDAsIF9kZWZpbmVQcm9wZXJ0eVtcImRlZmF1bHRcIl0pKEFib3J0U2lnbmFsMi5wcm90b3R5cGUsIF90b1N0cmluZ1RhZ1tcImRlZmF1bHRcIl0sIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogXCJBYm9ydFNpZ25hbFwiXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgQWJvcnRDb250cm9sbGVyMiA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gICAgICBmdW5jdGlvbiBBYm9ydENvbnRyb2xsZXIyKCkge1xuICAgICAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMltcImRlZmF1bHRcIl0pKHRoaXMsIEFib3J0Q29udHJvbGxlcjIpO1xuICAgICAgICBzaWduYWxzLnNldCh0aGlzLCBjcmVhdGVBYm9ydFNpZ25hbCgpKTtcbiAgICAgIH1cblxuICAgICAgKDAsIF9jcmVhdGVDbGFzczJbXCJkZWZhdWx0XCJdKShBYm9ydENvbnRyb2xsZXIyLCBbe1xuICAgICAgICBrZXk6IFwic2lnbmFsXCIsXG4gICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICAgIHJldHVybiBnZXRTaWduYWwodGhpcyk7XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAga2V5OiBcImFib3J0XCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBhYm9ydCgpIHtcbiAgICAgICAgICBhYm9ydFNpZ25hbChnZXRTaWduYWwodGhpcykpO1xuICAgICAgICB9XG4gICAgICB9XSk7XG4gICAgICByZXR1cm4gQWJvcnRDb250cm9sbGVyMjtcbiAgICB9KCk7XG5cbiAgICB2YXIgc2lnbmFscyA9IC8qIEBfX1BVUkVfXyAqL25ldyBfd2Vha01hcFtcImRlZmF1bHRcIl0oKTtcblxuICAgIGZ1bmN0aW9uIGdldFNpZ25hbChjb250cm9sbGVyKSB7XG4gICAgICB2YXIgc2lnbmFsID0gc2lnbmFscy5nZXQoY29udHJvbGxlcik7XG5cbiAgICAgIGlmIChzaWduYWwgPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgJ3RoaXMnIHRvIGJlIGFuICdBYm9ydENvbnRyb2xsZXInIG9iamVjdCwgYnV0IGdvdCBcIi5jb25jYXQoY29udHJvbGxlciA9PT0gbnVsbCA/IFwibnVsbFwiIDogKDAsIF90eXBlb2YyW1wiZGVmYXVsdFwiXSkoY29udHJvbGxlcikpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNpZ25hbDtcbiAgICB9XG5cbiAgICAoMCwgX2RlZmluZVByb3BlcnRpZXNbXCJkZWZhdWx0XCJdKShBYm9ydENvbnRyb2xsZXIyLnByb3RvdHlwZSwge1xuICAgICAgc2lnbmFsOiB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIH0sXG4gICAgICBhYm9ydDoge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodHlwZW9mIF9zeW1ib2xbXCJkZWZhdWx0XCJdID09PSBcImZ1bmN0aW9uXCIgJiYgKDAsIF90eXBlb2YyW1wiZGVmYXVsdFwiXSkoX3RvU3RyaW5nVGFnW1wiZGVmYXVsdFwiXSkgPT09IFwic3ltYm9sXCIpIHtcbiAgICAgICgwLCBfZGVmaW5lUHJvcGVydHlbXCJkZWZhdWx0XCJdKShBYm9ydENvbnRyb2xsZXIyLnByb3RvdHlwZSwgX3RvU3RyaW5nVGFnW1wiZGVmYXVsdFwiXSwge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIHZhbHVlOiBcIkFib3J0Q29udHJvbGxlclwiXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBleHBvcnRzMi5BYm9ydENvbnRyb2xsZXIgPSBBYm9ydENvbnRyb2xsZXIyO1xuICAgIGV4cG9ydHMyLkFib3J0U2lnbmFsID0gQWJvcnRTaWduYWwyO1xuICAgIGV4cG9ydHMyW1wiZGVmYXVsdFwiXSA9IEFib3J0Q29udHJvbGxlcjI7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gQWJvcnRDb250cm9sbGVyMjtcbiAgICBtb2R1bGUyLmV4cG9ydHMuQWJvcnRDb250cm9sbGVyID0gbW9kdWxlMi5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IEFib3J0Q29udHJvbGxlcjI7XG4gICAgbW9kdWxlMi5leHBvcnRzLkFib3J0U2lnbmFsID0gQWJvcnRTaWduYWwyO1xuICB9XG59KTsgLy8gc3JjL2luZGV4LmpzXG5cblxudmFyIGltcG9ydF9hYm9ydF9jb250cm9sbGVyID0gX190b0VTTShyZXF1aXJlX2Fib3J0X2NvbnRyb2xsZXIoKSk7XG5cbnZhciBOYXRpdmVBYm9ydENvbnRyb2xsZXIgPSAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIiA/IHt9IDogd2luZG93KS5BYm9ydENvbnRyb2xsZXI7XG52YXIgQWJvcnRDb250cm9sbGVyID0gTmF0aXZlQWJvcnRDb250cm9sbGVyIHx8IGltcG9ydF9hYm9ydF9jb250cm9sbGVyW1wiZGVmYXVsdFwiXTtcbnZhciBOYXRpdmVBYm9ydFNpZ25hbCA9ICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiID8ge30gOiB3aW5kb3cpLkFib3J0U2lnbmFsO1xudmFyIEFib3J0U2lnbmFsID0gTmF0aXZlQWJvcnRTaWduYWwgfHwgaW1wb3J0X2Fib3J0X2NvbnRyb2xsZXIuQWJvcnRTaWduYWw7XG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgQWJvcnRDb250cm9sbGVyOiBBYm9ydENvbnRyb2xsZXIsXG4gIEFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCxcbiAgXCJkZWZhdWx0XCI6IEFib3J0Q29udHJvbGxlclxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/abort-controller-es5/lib/index.js\n");
420
420
 
421
421
  /***/ }),
422
422
 
@@ -8961,7 +8961,7 @@ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/he
8961
8961
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
8962
8962
 
8963
8963
  "use strict";
8964
- eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createAdapters\", ({\n enumerable: true,\n get: function get() {\n return _createAdapters.default;\n }\n}));\n\n__webpack_require__(/*! core-js/features/object/entries */ \"./node_modules/core-js/features/object/entries.js\");\n\nvar _createAdapters = _interopRequireDefault(__webpack_require__(/*! ./createAdapters */ \"./lib/createAdapters.js\"));\n\nif (typeof HTMLDocument !== 'undefined' && typeof document !== 'undefined' && document instanceof HTMLDocument) {\n var meta = document.createElement('meta');\n meta.setAttribute('name', 'botframework-directlinespeech:version'); // We injected \"process.env.npm_package_version\" during compilation.\n // eslint-disable-next-line no-undef\n\n meta.setAttribute('content', \"4.15.9\");\n document.head.appendChild(meta);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFJQSxJQUFJLE9BQU9BLFlBQVAsS0FBd0IsV0FBeEIsSUFBdUMsT0FBT0MsUUFBUCxLQUFvQixXQUEzRCxJQUEwRUEsUUFBUSxZQUFZRCxZQUFsRyxFQUFnSDtFQUM5RyxJQUFNRSxJQUFJLEdBQUdELFFBQVEsQ0FBQ0UsYUFBVCxDQUF1QixNQUF2QixDQUFiO0VBRUFELElBQUksQ0FBQ0UsWUFBTCxDQUFrQixNQUFsQixFQUEwQix1Q0FBMUIsRUFIOEcsQ0FLOUc7RUFDQTs7RUFDQUYsSUFBSSxDQUFDRSxZQUFMLENBQWtCLFNBQWxCO0VBRUFILFFBQVEsQ0FBQ0ksSUFBVCxDQUFjQyxXQUFkLENBQTBCSixJQUExQjtBQUNEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYm90ZnJhbWV3b3JrLWRpcmVjdGxpbmVzcGVlY2gtc2RrL2RpcmVjdGxpbmVzcGVlY2g6Ly8vc3JjL2luZGV4LmpzPzc5ZjkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdjb3JlLWpzL2ZlYXR1cmVzL29iamVjdC9lbnRyaWVzJztcblxuaW1wb3J0IGNyZWF0ZUFkYXB0ZXJzIGZyb20gJy4vY3JlYXRlQWRhcHRlcnMnO1xuXG5leHBvcnQgeyBjcmVhdGVBZGFwdGVycyB9O1xuXG5pZiAodHlwZW9mIEhUTUxEb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudCBpbnN0YW5jZW9mIEhUTUxEb2N1bWVudCkge1xuICBjb25zdCBtZXRhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbWV0YScpO1xuXG4gIG1ldGEuc2V0QXR0cmlidXRlKCduYW1lJywgJ2JvdGZyYW1ld29yay1kaXJlY3RsaW5lc3BlZWNoOnZlcnNpb24nKTtcblxuICAvLyBXZSBpbmplY3RlZCBcInByb2Nlc3MuZW52Lm5wbV9wYWNrYWdlX3ZlcnNpb25cIiBkdXJpbmcgY29tcGlsYXRpb24uXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICBtZXRhLnNldEF0dHJpYnV0ZSgnY29udGVudCcsIHByb2Nlc3MuZW52Lm5wbV9wYWNrYWdlX3ZlcnNpb24pO1xuXG4gIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobWV0YSk7XG59XG4iXSwibmFtZXMiOlsiSFRNTERvY3VtZW50IiwiZG9jdW1lbnQiLCJtZXRhIiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImhlYWQiLCJhcHBlbmRDaGlsZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/index.js\n");
8964
+ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createAdapters\", ({\n enumerable: true,\n get: function get() {\n return _createAdapters.default;\n }\n}));\n\n__webpack_require__(/*! core-js/features/object/entries */ \"./node_modules/core-js/features/object/entries.js\");\n\nvar _createAdapters = _interopRequireDefault(__webpack_require__(/*! ./createAdapters */ \"./lib/createAdapters.js\"));\n\nif (typeof HTMLDocument !== 'undefined' && typeof document !== 'undefined' && document instanceof HTMLDocument) {\n var meta = document.createElement('meta');\n meta.setAttribute('name', 'botframework-directlinespeech:version'); // We injected \"process.env.npm_package_version\" during compilation.\n // eslint-disable-next-line no-undef\n\n meta.setAttribute('content', \"4.15.10-main.20230911.d62393e\");\n document.head.appendChild(meta);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFJQSxJQUFJLE9BQU9BLFlBQVAsS0FBd0IsV0FBeEIsSUFBdUMsT0FBT0MsUUFBUCxLQUFvQixXQUEzRCxJQUEwRUEsUUFBUSxZQUFZRCxZQUFsRyxFQUFnSDtFQUM5RyxJQUFNRSxJQUFJLEdBQUdELFFBQVEsQ0FBQ0UsYUFBVCxDQUF1QixNQUF2QixDQUFiO0VBRUFELElBQUksQ0FBQ0UsWUFBTCxDQUFrQixNQUFsQixFQUEwQix1Q0FBMUIsRUFIOEcsQ0FLOUc7RUFDQTs7RUFDQUYsSUFBSSxDQUFDRSxZQUFMLENBQWtCLFNBQWxCO0VBRUFILFFBQVEsQ0FBQ0ksSUFBVCxDQUFjQyxXQUFkLENBQTBCSixJQUExQjtBQUNEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYm90ZnJhbWV3b3JrLWRpcmVjdGxpbmVzcGVlY2gtc2RrL2RpcmVjdGxpbmVzcGVlY2g6Ly8vc3JjL2luZGV4LmpzPzc5ZjkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdjb3JlLWpzL2ZlYXR1cmVzL29iamVjdC9lbnRyaWVzJztcblxuaW1wb3J0IGNyZWF0ZUFkYXB0ZXJzIGZyb20gJy4vY3JlYXRlQWRhcHRlcnMnO1xuXG5leHBvcnQgeyBjcmVhdGVBZGFwdGVycyB9O1xuXG5pZiAodHlwZW9mIEhUTUxEb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudCBpbnN0YW5jZW9mIEhUTUxEb2N1bWVudCkge1xuICBjb25zdCBtZXRhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbWV0YScpO1xuXG4gIG1ldGEuc2V0QXR0cmlidXRlKCduYW1lJywgJ2JvdGZyYW1ld29yay1kaXJlY3RsaW5lc3BlZWNoOnZlcnNpb24nKTtcblxuICAvLyBXZSBpbmplY3RlZCBcInByb2Nlc3MuZW52Lm5wbV9wYWNrYWdlX3ZlcnNpb25cIiBkdXJpbmcgY29tcGlsYXRpb24uXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICBtZXRhLnNldEF0dHJpYnV0ZSgnY29udGVudCcsIHByb2Nlc3MuZW52Lm5wbV9wYWNrYWdlX3ZlcnNpb24pO1xuXG4gIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobWV0YSk7XG59XG4iXSwibmFtZXMiOlsiSFRNTERvY3VtZW50IiwiZG9jdW1lbnQiLCJtZXRhIiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImhlYWQiLCJhcHBlbmRDaGlsZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/index.js\n");
8965
8965
 
8966
8966
  /***/ }),
8967
8967