{"version":3,"file":"NotificationsApp-0V1-3XAR.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcEmptyContent-BdOezubv.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcDateTime.vue_vue_type_script_setup_true_lang-BhB8yA4U.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcHeaderMenu-DfO7ghiM.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcUserBubble-DfxVEEZg.mjs","../node_modules/@nextcloud/capabilities/dist/index.cjs","../node_modules/@nextcloud/event-bus/dist/index.cjs","../node_modules/@nextcloud/auth/dist/index.cjs","../node_modules/axios/dist/browser/axios.cjs","../node_modules/@nextcloud/router/dist/index.cjs","../node_modules/@nextcloud/axios/dist/index.cjs","../node_modules/@nextcloud/notify_push/dist/index.js","../node_modules/vue-material-design-icons/BellOutline.vue","../node_modules/vue-material-design-icons/Close.vue","../node_modules/vue-material-design-icons/MessageOutline.vue","../node_modules/vue-material-design-icons/Bell.vue","../src/Components/IconNotification.vue","../src/Components/ActionButton.vue","../src/Components/Parameters/DefaultParameter.vue","../src/Components/Parameters/FileParameter.vue","../src/Components/Parameters/UserParameter.vue","../src/Components/NotificationItem.vue","../src/services/notificationsService.js","../node_modules/howler/dist/howler.js","../src/services/webNotificationsService.js","../src/NotificationsApp.vue"],"sourcesContent":["import '../assets/NcEmptyContent-q-geAf0w.css';\nimport { defineComponent, createElementBlock, openBlock, createCommentVNode, renderSlot, toDisplayString, createTextVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = {\n class: \"empty-content\",\n role: \"note\"\n};\nconst _hoisted_2 = {\n key: 0,\n class: \"empty-content__icon\",\n \"aria-hidden\": \"true\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"empty-content__name\"\n};\nconst _hoisted_4 = {\n key: 1,\n class: \"empty-content__description\"\n};\nconst _hoisted_5 = {\n key: 2,\n class: \"empty-content__action\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcEmptyContent\",\n props: {\n description: { default: \"\" },\n name: { default: \"\" }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1, [\n _ctx.$slots.icon ? (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n renderSlot(_ctx.$slots, \"icon\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"name\", {}, () => [\n _ctx.name !== \"\" ? (openBlock(), createElementBlock(\"span\", _hoisted_3, toDisplayString(_ctx.name), 1)) : createCommentVNode(\"\", true)\n ], true),\n _ctx.description !== \"\" || _ctx.$slots.description ? (openBlock(), createElementBlock(\"p\", _hoisted_4, [\n renderSlot(_ctx.$slots, \"description\", {}, () => [\n createTextVNode(toDisplayString(_ctx.description), 1)\n ], true)\n ])) : createCommentVNode(\"\", true),\n _ctx.$slots.action ? (openBlock(), createElementBlock(\"div\", _hoisted_5, [\n renderSlot(_ctx.$slots, \"action\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true)\n ]);\n };\n }\n});\nconst NcEmptyContent = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-697cfd8f\"]]);\nexport {\n NcEmptyContent as N\n};\n//# sourceMappingURL=NcEmptyContent-BdOezubv.mjs.map\n","import { defineComponent, computed, toRef, createElementBlock, openBlock, toDisplayString, unref } from \"vue\";\nimport { useFormatTime, useFormatRelativeTime } from \"../composables/useFormatDateTime/index.mjs\";\nconst _hoisted_1 = [\"data-timestamp\", \"title\", \"textContent\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcDateTime\",\n props: {\n timestamp: {},\n format: { default: () => ({ timeStyle: \"medium\", dateStyle: \"short\" }) },\n relativeTime: { type: [Boolean, String], default: \"long\" },\n ignoreSeconds: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n const timeOptions = computed(() => ({ format: props.format }));\n const relativeTimeOptions = computed(() => ({\n ignoreSeconds: props.ignoreSeconds,\n relativeTime: props.relativeTime || \"long\",\n update: props.relativeTime !== false\n }));\n const title = useFormatTime(toRef(() => props.timestamp), timeOptions);\n const relativeTime = useFormatRelativeTime(toRef(() => props.timestamp), relativeTimeOptions);\n const formattedTime = computed(() => props.relativeTime ? relativeTime.value : title.value);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"span\", {\n class: \"nc-datetime\",\n dir: \"auto\",\n \"data-timestamp\": _ctx.timestamp,\n title: unref(title),\n textContent: toDisplayString(formattedTime.value)\n }, null, 8, _hoisted_1);\n };\n }\n});\nexport {\n _sfc_main as _\n};\n//# sourceMappingURL=NcDateTime.vue_vue_type_script_setup_true_lang-BhB8yA4U.mjs.map\n","import '../assets/NcHeaderMenu-Hy0UKyUu.css';\nimport { defineComponent, ref, computed, useTemplateRef, watch, nextTick, createBlock, openBlock, resolveDynamicComponent, normalizeClass, unref, withCtx, createVNode, createElementBlock, createCommentVNode, withDirectives, withModifiers, renderSlot, toDisplayString, createElementVNode, vShow } from \"vue\";\nimport { onClickOutside } from \"@vueuse/core\";\nimport { createFocusTrap } from \"focus-trap\";\nimport \"../composables/useFormatDateTime/index.mjs\";\nimport { useHotKey } from \"../composables/useHotKey/index.mjs\";\nimport \"../composables/useIsDarkTheme/index.mjs\";\nimport \"../composables/useIsFullscreen/index.mjs\";\nimport \"../composables/useIsMobile/index.mjs\";\nimport { u as useTrapStackControl } from \"./useTrapStackControl-B6cEicto.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { N as NcButton } from \"./NcButton-DkC5k3Lb.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = [\"id\"];\nconst _hoisted_2 = { class: \"header-menu__caret\" };\nconst _hoisted_3 = [\"id\"];\nconst _hoisted_4 = {\n ref: \"contentContainer\",\n class: \"header-menu__content\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcHeaderMenu\",\n props: {\n id: {},\n ariaLabel: { default: () => void 0 },\n open: { type: Boolean, default: false },\n isNav: { type: Boolean, default: false },\n description: { default: () => void 0 },\n excludeClickOutsideSelectors: { default: () => [] }\n },\n emits: [\"closed\", \"opened\", \"update:open\"],\n setup(__props, { emit: __emit }) {\n const emit = __emit;\n const descriptionId = createElementId();\n const triggerId = createElementId();\n const focusTrap = ref();\n const isOpened = ref(__props.open);\n const wrapperTag = computed(() => __props.isNav ? \"nav\" : \"div\");\n const contentContainerElement = useTemplateRef(\"contentContainer\");\n const headerMenuElement = useTemplateRef(\"headerMenu\");\n const triggerButtonInstance = useTemplateRef(\"triggerButton\");\n const ignore = computed(() => Array.isArray(__props.excludeClickOutsideSelectors) ? __props.excludeClickOutsideSelectors : __props.excludeClickOutsideSelectors.split(\" \"));\n onClickOutside(headerMenuElement, () => setMenuState(false), { ignore });\n useHotKey(\"Escape\", () => setMenuState(false), { prevent: true });\n useTrapStackControl(isOpened, {\n disabled: () => !__props.isNav\n });\n watch(() => __props.open, (state) => setMenuState(state));\n function toggleMenu() {\n setMenuState(!isOpened.value);\n }\n async function setMenuState(state) {\n if (state === isOpened.value) {\n return;\n }\n isOpened.value = state;\n emit(\"update:open\", state);\n await nextTick();\n await (state ? addFocusTrap() : clearFocusTrap());\n emit(state ? \"opened\" : \"closed\");\n }\n function onFocusOut(event) {\n if (!__props.isNav) {\n return;\n }\n if (!(event.relatedTarget instanceof Node)) {\n return;\n }\n if (headerMenuElement.value?.contains(event.relatedTarget)) {\n setMenuState(false);\n }\n }\n async function addFocusTrap() {\n if (__props.isNav || focusTrap.value) {\n return;\n }\n focusTrap.value = createFocusTrap(contentContainerElement.value, {\n allowOutsideClick: true,\n trapStack: getTrapStack(),\n fallbackFocus: triggerButtonInstance.value?.$el\n });\n focusTrap.value.activate();\n }\n function clearFocusTrap() {\n focusTrap.value?.deactivate();\n focusTrap.value = void 0;\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(resolveDynamicComponent(wrapperTag.value), {\n id: _ctx.id,\n ref: \"headerMenu\",\n \"aria-labelledby\": _ctx.isNav ? unref(triggerId) : null,\n class: normalizeClass([{ \"header-menu--opened\": isOpened.value }, \"header-menu\"]),\n onFocusout: onFocusOut\n }, {\n default: withCtx(() => [\n createVNode(unref(NcButton), {\n id: _ctx.isNav ? unref(triggerId) : null,\n ref: \"triggerButton\",\n \"aria-controls\": `header-menu-${_ctx.id}`,\n \"aria-expanded\": isOpened.value.toString(),\n \"aria-label\": _ctx.ariaLabel,\n class: \"header-menu__trigger\",\n size: \"large\",\n variant: \"tertiary-no-background\",\n onClick: withModifiers(toggleMenu, [\"prevent\"])\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"trigger\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"id\", \"aria-controls\", \"aria-expanded\", \"aria-label\"]),\n _ctx.description ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n id: unref(descriptionId),\n class: \"header-menu__description hidden-visually\"\n }, toDisplayString(_ctx.description), 9, _hoisted_1)) : createCommentVNode(\"\", true),\n withDirectives(createElementVNode(\"div\", _hoisted_2, null, 512), [\n [vShow, isOpened.value]\n ]),\n withDirectives(createElementVNode(\"div\", {\n id: `header-menu-${_ctx.id}`,\n class: \"header-menu__wrapper\"\n }, [\n createElementVNode(\"div\", _hoisted_4, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ], 512)\n ], 8, _hoisted_3), [\n [vShow, isOpened.value]\n ])\n ]),\n _: 3\n }, 40, [\"id\", \"aria-labelledby\", \"class\"]);\n };\n }\n});\nconst NcHeaderMenu = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-d45c5788\"]]);\nexport {\n NcHeaderMenu as N\n};\n//# sourceMappingURL=NcHeaderMenu-DfO7ghiM.mjs.map\n","import '../assets/NcUserBubble-ChgvvPPf.css';\nimport { createElementBlock, openBlock, renderSlot, defineComponent, mergeModels, useModel, computed, warn, watch, createBlock, resolveDynamicComponent, unref, withCtx, mergeProps, createVNode, createElementVNode, createCommentVNode, normalizeStyle, toDisplayString } from \"vue\";\nimport { RouterLink } from \"vue-router\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-BkmHv-oY.mjs\";\nimport { N as NcPopover } from \"./NcPopover-C-MTaPCs.mjs\";\nconst _sfc_main$1 = {};\nfunction _sfc_render(_ctx, _cache) {\n return openBlock(), createElementBlock(\"div\", null, [\n renderSlot(_ctx.$slots, \"trigger\")\n ]);\n}\nconst NcUserBubbleDiv = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\nconst _hoisted_1 = { class: \"user-bubble__name\" };\nconst _hoisted_2 = {\n key: 0,\n class: \"user-bubble__secondary\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcUserBubble\",\n props: /* @__PURE__ */ mergeModels({\n avatarImage: { default: void 0 },\n user: { default: void 0 },\n displayName: { default: void 0 },\n showUserStatus: { type: Boolean },\n url: { default: void 0 },\n to: { default: void 0 },\n primary: { type: Boolean },\n size: { default: 20 },\n margin: { default: 2 }\n }, {\n \"open\": { type: Boolean },\n \"openModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"click\"], [\"update:open\"]),\n setup(__props, { emit: __emit }) {\n const isOpen = useModel(__props, \"open\");\n const props = __props;\n const emit = __emit;\n const isAvatarUrl = computed(() => {\n if (!props.avatarImage) {\n return false;\n }\n try {\n const url = new URL(props.avatarImage);\n return !!url;\n } catch {\n return false;\n }\n });\n const isCustomAvatar = computed(() => !!props.avatarImage);\n const avatarStyle = computed(() => ({\n marginInlineStart: `${props.margin}px`\n }));\n const hasUrl = computed(() => {\n if (!props.url || props.url.trim() === \"\") {\n return false;\n }\n try {\n const url = new URL(props.url, props.url?.startsWith?.(\"/\") ? window.location.href : void 0);\n return !!url;\n } catch {\n warn(\"[NcUserBubble] Invalid URL passed\", { url: props.url });\n return false;\n }\n });\n const href = computed(() => hasUrl.value ? props.url : void 0);\n const contentComponent = computed(() => {\n if (hasUrl.value) {\n return \"a\";\n } else if (props.to) {\n return RouterLink;\n } else {\n return \"div\";\n }\n });\n const contentStyle = computed(() => ({\n height: `${props.size}px`,\n lineHeight: `${props.size}px`,\n borderRadius: `${props.size / 2}px`\n }));\n watch([() => props.displayName, () => props.user], () => {\n if (!props.displayName && !props.user) {\n warn(\"[NcUserBubble] At least `displayName` or `user` property should be set.\");\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(resolveDynamicComponent(!!_ctx.$slots.default ? unref(NcPopover) : NcUserBubbleDiv), {\n shown: isOpen.value,\n \"onUpdate:shown\": _cache[1] || (_cache[1] = ($event) => isOpen.value = $event),\n class: \"user-bubble__wrapper\",\n trigger: \"hover focus\"\n }, {\n trigger: withCtx(({ attrs }) => [\n (openBlock(), createBlock(resolveDynamicComponent(contentComponent.value), mergeProps({\n class: [\"user-bubble__content\", { \"user-bubble__content--primary\": _ctx.primary }],\n style: contentStyle.value,\n to: _ctx.to,\n href: href.value\n }, attrs, {\n onClick: _cache[0] || (_cache[0] = ($event) => emit(\"click\", $event))\n }), {\n default: withCtx(() => [\n createVNode(unref(NcAvatar), {\n url: isCustomAvatar.value && isAvatarUrl.value ? _ctx.avatarImage : void 0,\n \"icon-class\": isCustomAvatar.value && !isAvatarUrl.value ? _ctx.avatarImage : void 0,\n user: _ctx.user,\n \"display-name\": _ctx.displayName,\n size: _ctx.size - _ctx.margin * 2,\n style: normalizeStyle(avatarStyle.value),\n \"disable-tooltip\": true,\n \"disable-menu\": true,\n \"hide-status\": !_ctx.showUserStatus,\n class: \"user-bubble__avatar\"\n }, null, 8, [\"url\", \"icon-class\", \"user\", \"display-name\", \"size\", \"style\", \"hide-status\"]),\n createElementVNode(\"span\", _hoisted_1, toDisplayString(_ctx.displayName || _ctx.user), 1),\n !!_ctx.$slots.name ? (openBlock(), createElementBlock(\"span\", _hoisted_2, [\n renderSlot(_ctx.$slots, \"name\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 2\n }, 1040, [\"class\", \"style\", \"to\", \"href\"]))\n ]),\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 3\n }, 40, [\"shown\"]);\n };\n }\n});\nconst NcUserBubble = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-37bde6b7\"]]);\nexport {\n NcUserBubble as N\n};\n//# sourceMappingURL=NcUserBubble-DfxVEEZg.mjs.map\n","\"use strict\";\nObject.defineProperty(exports, Symbol.toStringTag, { value: \"Module\" });\nconst initialState = require(\"@nextcloud/initial-state\");\nfunction getCapabilities() {\n try {\n return initialState.loadState(\"core\", \"capabilities\");\n } catch (error) {\n console.debug(\"Could not find capabilities initial state fall back to _oc_capabilities\");\n if (!(\"_oc_capabilities\" in window)) {\n return {};\n }\n return window[\"_oc_capabilities\"];\n }\n}\nexports.getCapabilities = getCapabilities;\n//# sourceMappingURL=index.cjs.map\n","\"use strict\";\nObject.defineProperty(exports, Symbol.toStringTag, { value: \"Module\" });\nconst major = require(\"semver/functions/major.js\");\nconst valid = require(\"semver/functions/valid.js\");\nconst _interopDefault = (e) => e && e.__esModule ? e : { default: e };\nconst major__default = /* @__PURE__ */ _interopDefault(major);\nconst valid__default = /* @__PURE__ */ _interopDefault(valid);\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid__default.default(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major__default.default(bus2.getVersion()) !== major__default.default(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.3\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, ...event) {\n this.bus.emit(name, ...event);\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.3\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h) => h !== handler)\n );\n }\n emit(name, ...event) {\n const handlers = this.handlers.get(name) || [];\n handlers.forEach((h) => {\n try {\n ;\n h(event[0]);\n } catch (e) {\n console.error(\"could not invoke event listener\", e);\n }\n });\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction subscribe(name, handler) {\n getBus().subscribe(name, handler);\n}\nfunction unsubscribe(name, handler) {\n getBus().unsubscribe(name, handler);\n}\nfunction emit(name, ...event) {\n getBus().emit(name, ...event);\n}\nexports.ProxyBus = ProxyBus;\nexports.SimpleBus = SimpleBus;\nexports.emit = emit;\nexports.subscribe = subscribe;\nexports.unsubscribe = unsubscribe;\n//# sourceMappingURL=index.cjs.map\n","\"use strict\";\nObject.defineProperty(exports, Symbol.toStringTag, { value: \"Module\" });\nconst eventBus = require(\"@nextcloud/event-bus\");\nconst browserStorage$1 = require(\"@nextcloud/browser-storage\");\nlet token;\nconst observers = [];\nfunction getRequestToken() {\n if (token === void 0) {\n token = document.head.dataset.requesttoken ?? null;\n }\n return token;\n}\nfunction onRequestTokenUpdate(observer) {\n observers.push(observer);\n}\neventBus.subscribe(\"csrf-token-update\", (e) => {\n token = e.token;\n observers.forEach((observer) => {\n try {\n observer(token);\n } catch (error) {\n console.error(\"Error updating CSRF token observer\", error);\n }\n });\n});\nfunction getCSPNonce() {\n const meta = document?.querySelector('meta[name=\"csp-nonce\"]');\n if (!meta) {\n const token2 = getRequestToken();\n return token2 ? btoa(token2) : void 0;\n }\n return meta.nonce;\n}\n/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nconst browserStorage = browserStorage$1.getBuilder(\"public\").persist().build();\nclass GuestUser {\n _displayName;\n uid;\n isAdmin;\n constructor() {\n if (!browserStorage.getItem(\"guestUid\")) {\n browserStorage.setItem(\"guestUid\", randomUUID());\n }\n this._displayName = browserStorage.getItem(\"guestNickname\") || \"\";\n this.uid = browserStorage.getItem(\"guestUid\") || randomUUID();\n this.isAdmin = false;\n eventBus.subscribe(\"user:info:changed\", (guest) => {\n this._displayName = guest.displayName;\n browserStorage.setItem(\"guestNickname\", guest.displayName || \"\");\n });\n }\n get displayName() {\n return this._displayName;\n }\n set displayName(displayName) {\n this._displayName = displayName;\n browserStorage.setItem(\"guestNickname\", displayName);\n eventBus.emit(\"user:info:changed\", this);\n }\n}\nlet currentUser$1;\nfunction getGuestUser() {\n if (!currentUser$1) {\n currentUser$1 = new GuestUser();\n }\n return currentUser$1;\n}\nfunction getGuestNickname() {\n return getGuestUser()?.displayName || null;\n}\nfunction setGuestNickname(nickname) {\n if (!nickname || nickname.trim().length === 0) {\n throw new Error(\"Nickname cannot be empty\");\n }\n getGuestUser().displayName = nickname;\n}\nfunction randomUUID() {\n if (globalThis.crypto?.randomUUID) {\n return globalThis.crypto.randomUUID();\n }\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n const r = Math.random() * 16 | 0;\n const v = c === \"x\" ? r : r & 3 | 8;\n return v.toString(16);\n });\n}\nlet currentUser;\nfunction getAttribute(el, attribute) {\n if (el) {\n return el.getAttribute(attribute);\n }\n return null;\n}\nfunction getCurrentUser() {\n if (currentUser !== void 0) {\n return currentUser;\n }\n const head = document?.getElementsByTagName(\"head\")[0];\n if (!head) {\n return null;\n }\n const uid = getAttribute(head, \"data-user\");\n if (uid === null) {\n currentUser = null;\n return currentUser;\n }\n currentUser = {\n uid,\n displayName: getAttribute(head, \"data-user-displayname\"),\n isAdmin: !!window._oc_isadmin\n };\n return currentUser;\n}\nexports.getCSPNonce = getCSPNonce;\nexports.getCurrentUser = getCurrentUser;\nexports.getGuestNickname = getGuestNickname;\nexports.getGuestUser = getGuestUser;\nexports.getRequestToken = getRequestToken;\nexports.onRequestTokenUpdate = onRequestTokenUpdate;\nexports.setGuestNickname = setGuestNickname;\n//# sourceMappingURL=index.cjs.map\n","/*! Axios v1.12.2 Copyright (c) 2025 Matt Zabriskie and contributors */\n'use strict';\n\nfunction bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n};\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction$1(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction$1 = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction$1(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction$1(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction$1(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n if (isBuffer(obj)){\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless, skipUndefined} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n };\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction$1(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n};\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction$1(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction$1(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n};\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n };\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n};\n\n\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction$1(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n };\n\n return visit(obj, 0);\n};\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction$1(thing)) && isFunction$1(thing.then) && isFunction$1(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction$1(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction$1(thing[iterator]);\n\n\nvar utils$1 = {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction: isFunction$1,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils$1.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils$1.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype$1 = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype$1, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype$1);\n\n utils$1.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n const msg = error && error.message ? error.message : 'Error';\n\n // Prefer explicit code; otherwise copy the low-level error's code (e.g. ECONNREFUSED)\n const errCode = code == null && error ? error.code : code;\n AxiosError.call(axiosError, msg, errCode, config, request, response);\n\n // Chain the original error on the standard field; non-enumerable to avoid JSON noise\n if (error && axiosError.cause == null) {\n Object.defineProperty(axiosError, 'cause', { value: error, configurable: true });\n }\n\n axiosError.name = (error && error.name) || 'Error';\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\n// eslint-disable-next-line strict\nvar httpAdapter = null;\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils$1.isPlainObject(thing) || utils$1.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils$1.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils$1.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils$1.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils$1.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils$1.isSpecCompliantForm(formData);\n\n if (!utils$1.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils$1.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils$1.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils$1.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils$1.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils$1.isArray(value) && isFlatArray(value)) ||\n ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils$1.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils$1.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils$1.forEach(value, function each(el, key) {\n const result = !(utils$1.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils$1.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode$1(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode$1);\n } : encode$1;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nfunction buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils$1.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils$1.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils$1.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nvar InterceptorManager$1 = InterceptorManager;\n\nvar transitionalDefaults = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n\nvar URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n\nvar FormData$1 = typeof FormData !== 'undefined' ? FormData : null;\n\nvar Blob$1 = typeof Blob !== 'undefined' ? Blob : null;\n\nvar platform$1 = {\n isBrowser: true,\n classes: {\n URLSearchParams: URLSearchParams$1,\n FormData: FormData$1,\n Blob: Blob$1\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n\nconst hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nvar utils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n hasBrowserEnv: hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv: hasStandardBrowserEnv,\n navigator: _navigator,\n origin: origin\n});\n\nvar platform = {\n ...utils,\n ...platform$1\n};\n\nfunction toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils$1.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options\n });\n}\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils$1.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils$1.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils$1.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils$1.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils$1.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) {\n const obj = {};\n\n utils$1.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils$1.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils$1.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils$1.isObject(data);\n\n if (isObjectPayload && utils$1.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils$1.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils$1.isArrayBuffer(data) ||\n utils$1.isBuffer(data) ||\n utils$1.isStream(data) ||\n utils$1.isFile(data) ||\n utils$1.isBlob(data) ||\n utils$1.isReadableStream(data)\n ) {\n return data;\n }\n if (utils$1.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils$1.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nvar defaults$1 = defaults;\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils$1.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nvar parseHeaders = rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils$1.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils$1.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils$1.isString(value)) return;\n\n if (utils$1.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils$1.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils$1.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils$1.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils$1.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite);\n } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils$1.isObject(header) && utils$1.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils$1.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils$1.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils$1.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils$1.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils$1.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils$1.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils$1.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils$1.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils$1.forEach(this, (value, header) => {\n const key = utils$1.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils$1.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils$1.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils$1.freezeMethods(AxiosHeaders);\n\nvar AxiosHeaders$1 = AxiosHeaders;\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nfunction transformData(fns, response) {\n const config = this || defaults$1;\n const context = response || config;\n const headers = AxiosHeaders$1.from(context.headers);\n let data = context.data;\n\n utils$1.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n\nfunction isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils$1.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nfunction settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n\nfunction parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n };\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs);\n }, threshold - passed);\n }\n }\n };\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nconst progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n};\n\nconst progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n};\n\nconst asyncDecorator = (fn) => (...args) => utils$1.asap(() => fn(...args));\n\nvar isURLSameOrigin = platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n\nvar cookies = platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils$1.isString(path) && cookie.push('path=' + path);\n\n utils$1.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nfunction isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nfunction combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nfunction buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nfunction mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) {\n return utils$1.merge.call({caseless}, target, source);\n } else if (utils$1.isPlainObject(source)) {\n return utils$1.merge({}, source);\n } else if (utils$1.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!utils$1.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils$1.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils$1.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils$1.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils$1.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils$1.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n\nvar resolveConfig = (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders$1.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n if (utils$1.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils$1.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n } \n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n};\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nvar xhrAdapter = isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders$1.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders$1.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n \n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils$1.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n};\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n };\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT));\n }, timeout);\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n };\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils$1.asap(unsubscribe);\n\n return signal;\n }\n};\n\nvar composeSignals$1 = composeSignals;\n\nconst streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n};\n\nconst readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n};\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n};\n\nconst trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n };\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n};\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst {isFunction} = utils$1;\n\nconst globalFetchAPI = (({Request, Response}) => ({\n Request, Response\n}))(utils$1.global);\n\nconst {\n ReadableStream: ReadableStream$1, TextEncoder\n} = utils$1.global;\n\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n};\n\nconst factory = (env) => {\n env = utils$1.merge.call({\n skipUndefined: true\n }, globalFetchAPI, env);\n\n const {fetch: envFetch, Request, Response} = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream$1);\n\n const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Request(str).arrayBuffer())\n );\n\n const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream$1(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream = isResponseSupported && isReadableStreamSupported &&\n test(() => utils$1.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n };\n\n isFetchSupported && ((() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n });\n });\n })());\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils$1.isBlob(body)) {\n return body.size;\n }\n\n if (utils$1.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils$1.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils$1.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n };\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils$1.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n };\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals$1([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request = null;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader);\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils$1.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && \"credentials\" in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions));\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders$1.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n });\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n }\n};\n\nconst seedCache = new Map();\n\nconst getFetch = (config) => {\n let env = config ? config.env : {};\n const {fetch, Request, Response} = env;\n const seeds = [\n Request, Response, fetch\n ];\n\n let len = seeds.length, i = len,\n seed, target, map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, target = (i ? new Map() : factory(env)));\n\n map = target;\n }\n\n return target;\n};\n\ngetFetch();\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: getFetch,\n }\n};\n\nutils$1.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false;\n\nvar adapters = {\n getAdapter: (adapters, config) => {\n adapters = utils$1.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils$1.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n};\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nfunction dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders$1.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter, config);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders$1.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders$1.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n\nconst VERSION = \"1.12.2\";\n\nconst validators$1 = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators$1[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators$1.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators$1.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nvar validator = {\n assertOptions,\n validators: validators$1\n};\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager$1(),\n response: new InterceptorManager$1()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack;\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils$1.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n };\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) ; else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils$1.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils$1.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders$1.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nvar Axios$1 = Axios;\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nvar CancelToken$1 = CancelToken;\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nfunction spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nfunction isAxiosError(payload) {\n return utils$1.isObject(payload) && (payload.isAxiosError === true);\n}\n\nconst HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nvar HttpStatusCode$1 = HttpStatusCode;\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios$1(defaultConfig);\n const instance = bind(Axios$1.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils$1.extend(instance, Axios$1.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils$1.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults$1);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios$1;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken$1;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders$1;\n\naxios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode$1;\n\naxios.default = axios;\n\nmodule.exports = axios;\n//# sourceMappingURL=axios.cjs.map\n","\"use strict\";\nObject.defineProperty(exports, Symbol.toStringTag, { value: \"Module\" });\nconst w = (e, n) => u(e, \"\", n), U = (e) => \"/remote.php/\" + e, R = (e, n) => {\n var o;\n return ((o = n == null ? void 0 : n.baseURL) != null ? o : f()) + U(e);\n}, h = (e, n, o) => {\n var r;\n const c = Object.assign({\n ocsVersion: 2\n }, o || {}).ocsVersion === 1 ? 1 : 2;\n return ((r = o == null ? void 0 : o.baseURL) != null ? r : f()) + \"/ocs/v\" + c + \".php\" + g(e, n, o);\n}, g = (e, n, o) => {\n const r = Object.assign({\n escape: !0\n }, o || {}), s = function(c, i) {\n return i = i || {}, c.replace(\n /{([^{}]*)}/g,\n function(l, t) {\n const a = i[t];\n return r.escape ? encodeURIComponent(typeof a == \"string\" || typeof a == \"number\" ? a.toString() : l) : typeof a == \"string\" || typeof a == \"number\" ? a.toString() : l;\n }\n );\n };\n return e.charAt(0) !== \"/\" && (e = \"/\" + e), s(e, n || {});\n}, v = (e, n, o) => {\n var r, s, c;\n const i = Object.assign({\n noRewrite: !1\n }, o || {}), l = (r = o == null ? void 0 : o.baseURL) != null ? r : d();\n return ((c = (s = window == null ? void 0 : window.OC) == null ? void 0 : s.config) == null ? void 0 : c.modRewriteWorking) === !0 && !i.noRewrite ? l + g(e, n, o) : l + \"/index.php\" + g(e, n, o);\n}, _ = (e, n) => n.includes(\".\") ? u(e, \"img\", n) : u(e, \"img\", \"\".concat(n, \".svg\")), u = (e, n, o) => {\n var r, s, c;\n const i = (c = (s = (r = window == null ? void 0 : window.OC) == null ? void 0 : r.coreApps) == null ? void 0 : s.includes(e)) != null ? c : !1, l = o.slice(-3) === \"php\";\n let t = d();\n return l && !i ? (t += \"/index.php/apps/\".concat(e), n && (t += \"/\".concat(encodeURI(n))), o !== \"index.php\" && (t += \"/\".concat(o))) : !l && !i ? (t = b(e), n && (t += \"/\".concat(n, \"/\")), t.at(-1) !== \"/\" && (t += \"/\"), t += o) : ((e === \"settings\" || e === \"core\" || e === \"search\") && n === \"ajax\" && (t += \"/index.php\"), e && (t += \"/\".concat(e)), n && (t += \"/\".concat(n)), t += \"/\".concat(o)), t;\n}, f = () => window.location.protocol + \"//\" + window.location.host + d();\nfunction d() {\n let e = window._oc_webroot;\n if (typeof e > \"u\") {\n e = location.pathname;\n const n = e.indexOf(\"/index.php/\");\n if (n !== -1)\n e = e.slice(0, n);\n else {\n const o = e.indexOf(\"/\", 1);\n e = e.slice(0, o > 0 ? o : void 0);\n }\n }\n return e;\n}\nfunction b(e) {\n var n, o;\n return (o = ((n = window._oc_appswebroots) != null ? n : {})[e]) != null ? o : \"\";\n}\nexports.generateFilePath = u;\nexports.generateOcsUrl = h;\nexports.generateRemoteUrl = R;\nexports.generateUrl = v;\nexports.getAppRootUrl = b;\nexports.getBaseUrl = f;\nexports.getRootUrl = d;\nexports.imagePath = _;\nexports.linkTo = w;\n","\"use strict\";\nObject.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: \"Module\" } });\nconst auth = require(\"@nextcloud/auth\");\nconst Axios = require(\"axios\");\nconst router = require(\"@nextcloud/router\");\nconst _interopDefault = (e) => e && e.__esModule ? e : { default: e };\nconst Axios__default = /* @__PURE__ */ _interopDefault(Axios);\n/*!\n * SPDX-License-Identifier: GPL-3.0-or-later\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n */\nconst client = Axios__default.default.create({\n headers: {\n requesttoken: auth.getRequestToken() ?? \"\",\n \"X-Requested-With\": \"XMLHttpRequest\"\n }\n});\nauth.onRequestTokenUpdate((token) => {\n client.defaults.headers.requesttoken = token;\n});\nconst cancelableClient = Object.assign(client, {\n CancelToken: Axios__default.default.CancelToken,\n isCancel: Axios__default.default.isCancel\n});\nconst RETRY_KEY = Symbol(\"csrf-retry\");\nfunction onCsrfTokenError(axios) {\n return async (error) => {\n if (!Axios.isAxiosError(error)) {\n throw error;\n }\n const { config, response, request } = error;\n const responseURL = request?.responseURL;\n if (config && !config[RETRY_KEY] && response?.status === 412 && response?.data?.message === \"CSRF check failed\") {\n console.warn(`Request to ${responseURL} failed because of a CSRF mismatch. Fetching a new token`);\n const { data: { token } } = await axios.get(router.generateUrl(\"/csrftoken\"));\n console.debug(`New request token ${token} fetched`);\n axios.defaults.headers.requesttoken = token;\n return axios({\n ...config,\n headers: {\n ...config.headers,\n requesttoken: token\n },\n [RETRY_KEY]: true\n });\n }\n throw error;\n };\n}\nconst RETRY_DELAY_KEY = Symbol(\"retryDelay\");\nfunction onMaintenanceModeError(axios) {\n return async (error) => {\n if (!Axios.isAxiosError(error)) {\n throw error;\n }\n const { config, response, request } = error;\n const responseURL = request?.responseURL;\n const status = response?.status;\n const headers = response?.headers;\n let retryDelay = typeof config?.[RETRY_DELAY_KEY] === \"number\" ? config?.[RETRY_DELAY_KEY] : 1;\n if (status === 503 && headers?.[\"x-nextcloud-maintenance-mode\"] === \"1\" && config?.retryIfMaintenanceMode) {\n retryDelay *= 2;\n if (retryDelay > 32) {\n console.error(\"Retry delay exceeded one minute, giving up.\", { responseURL });\n throw error;\n }\n console.warn(`Request to ${responseURL} failed because of maintenance mode. Retrying in ${retryDelay}s`);\n await new Promise((resolve) => {\n setTimeout(resolve, retryDelay * 1e3);\n });\n return axios({\n ...config,\n [RETRY_DELAY_KEY]: retryDelay\n });\n }\n throw error;\n };\n}\nasync function onNotLoggedInError(error) {\n if (Axios.isAxiosError(error)) {\n const { config, response, request } = error;\n const responseURL = request?.responseURL;\n const status = response?.status;\n if (status === 401 && response?.data?.message === \"Current user is not logged in\" && config?.reloadExpiredSession && window?.location) {\n console.error(`Request to ${responseURL} failed because the user session expired. Reloading the page …`);\n window.location.reload();\n }\n }\n throw error;\n}\ncancelableClient.interceptors.response.use((r) => r, onCsrfTokenError(cancelableClient));\ncancelableClient.interceptors.response.use((r) => r, onMaintenanceModeError(cancelableClient));\ncancelableClient.interceptors.response.use((r) => r, onNotLoggedInError);\nObject.defineProperty(exports, \"isAxiosError\", {\n enumerable: true,\n get: () => Axios.isAxiosError\n});\nObject.defineProperty(exports, \"isCancel\", {\n enumerable: true,\n get: () => Axios.isCancel\n});\nexports.default = cancelableClient;\n//# sourceMappingURL=index.cjs.map\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSupportedTypes = getSupportedTypes;\nexports.listen = listen;\n/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst capabilities_1 = require(\"@nextcloud/capabilities\");\nconst axios_1 = __importDefault(require(\"@nextcloud/axios\"));\nconst event_bus_1 = require(\"@nextcloud/event-bus\");\n/**\n * Get the list of supported notification types as reported by the server\n *\n * @return string[]\n */\nfunction getSupportedTypes() {\n const capabilities = (0, capabilities_1.getCapabilities)();\n if (capabilities.notify_push) {\n return capabilities.notify_push.type;\n }\n else {\n return [];\n }\n}\n/**\n * Register a listener for notify_push events\n *\n * @param name name of the event\n * @param handler callback invoked for every matching event pushed\n * @param [options]\n * @param [options.credentials] optional credentials used instead of the pre_auth request\n * @param [options.credentials.username] username\n * @param [options.credentials.password] app password\n * @return boolean whether push is set up correctly\n */\nfunction listen(name, handler, options = {}) {\n setupGlobals(options);\n if (!window._notify_push_listeners[name]) {\n window._notify_push_listeners[name] = [];\n }\n window._notify_push_listeners[name].push(handler);\n if (window._notify_push_ws !== null && typeof window._notify_push_ws === \"object\" && window._notify_push_ready) {\n window._notify_push_ws.send('listen ' + name);\n }\n else {\n setupSocket(options);\n }\n return window._notify_push_available;\n}\nfunction setupGlobals(options = {}) {\n if (typeof window._notify_push_listeners === \"undefined\") {\n window._notify_push_listeners = {};\n window._notify_push_ws = null;\n window._notify_push_online = true;\n window._notify_push_available = false;\n window._notify_push_error_count = 0;\n window._notify_push_ready = false;\n (0, event_bus_1.subscribe)('networkOffline', () => {\n window._notify_push_online = false;\n window._notify_push_ws = null;\n window._notify_push_ready = false;\n });\n (0, event_bus_1.subscribe)('networkOnline', () => {\n window._notify_push_error_count = 0;\n window._notify_push_online = true;\n setupSocket(options);\n });\n }\n}\nasync function setupSocket(options = {}) {\n if (window._notify_push_ws) {\n return true;\n }\n window._notify_push_ws = true;\n const capabilities = (0, capabilities_1.getCapabilities)();\n if (!capabilities.notify_push) {\n window._notify_push_available = false;\n window._notify_push_ws = null;\n return false;\n }\n window._notify_push_available = true;\n let preAuth;\n if (!options.credentials) {\n const response = await axios_1.default.post(capabilities.notify_push.endpoints.pre_auth);\n preAuth = response.data;\n }\n window._notify_push_ws = new WebSocket(capabilities.notify_push.endpoints.websocket);\n window._notify_push_ws.onopen = () => {\n if (typeof window._notify_push_ws === \"object\" && window._notify_push_ws) {\n if (preAuth) {\n window._notify_push_ws.send('');\n window._notify_push_ws.send(preAuth);\n }\n else if (options.credentials) {\n window._notify_push_ws.send(options.credentials.username);\n window._notify_push_ws.send(options.credentials.password);\n }\n window._notify_push_ready = true;\n for (let name in window._notify_push_listeners) {\n window._notify_push_ws.send('listen ' + name);\n }\n }\n };\n window._notify_push_ws.onmessage = message => {\n if (message.data === \"authenticated\") {\n window._notify_push_error_count = 0;\n }\n else {\n const i = message.data.indexOf(' ');\n let [event, body] = i > 0 ? [message.data.slice(0, i), message.data.slice(i + 1)] : [message.data, null];\n if (body) {\n body = JSON.parse(body);\n }\n if (window._notify_push_listeners[event]) {\n for (let cb of window._notify_push_listeners[event]) {\n cb(event, body);\n }\n }\n }\n };\n window._notify_push_ws.onerror = window._notify_push_ws.onclose = () => {\n window._notify_push_ws = null;\n window._notify_push_error_count += 1;\n window._notify_push_ready = false;\n setTimeout(() => {\n if (window._notify_push_online) {\n setupSocket(options);\n }\n }, 1000 * window._notify_push_error_count);\n };\n return true;\n}\n","\n\n","\n\n","\n\n","\n\n","\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport BrowserStorage from './BrowserStorage.js'\n\n/**\n * @param {string|null} tabId unique id for browser tab\n * @param {string} lastETag last ETag\n * @param {boolean} forceRefresh whether to refresh data forcefully\n * @param {boolean} hasNotifyPush whether has notify_push enabled\n */\nasync function getNotificationsData(tabId, lastETag, forceRefresh, hasNotifyPush) {\n\tconst lastUpdated = parseInt(BrowserStorage.getItem('lastUpdated'), 10)\n\tconst lastTab = BrowserStorage.getItem('tabId')\n\tconst now = Math.floor(Date.now() / 1000)\n\n\tif (forceRefresh\n\t\t// Allow the same tab to refresh with less than the timeout,\n\t\t|| (lastTab === tabId && lastUpdated + 25 < now)\n\t\t// Allow the same tab to refresh with notify push,\n\t\t|| (lastTab === tabId && hasNotifyPush)\n\t\t// and at the same time give it some more time against other tabs.\n\t\t|| lastUpdated + 35 < now) {\n\t\tBrowserStorage.setItem('tabId', tabId)\n\t\tBrowserStorage.setItem('lastUpdated', now.toString())\n\t\t// console.debug('Refetching data in ' + tabId + ' (prev: ' + lastTab + ' age: ' + (now - lastUpdated) + ')')\n\t\tawait refreshData(lastETag)\n\t// } else {\n\t// console.debug('Reusing data in ' + tabId + ' (prev: ' + lastTab + ' age: ' + (now - lastUpdated) + ')')\n\t}\n\n\treturn {\n\t\tstatus: parseInt(BrowserStorage.getItem('status'), 10),\n\t\theaders: JSON.parse(BrowserStorage.getItem('headers') || '[]'),\n\t\tdata: JSON.parse(BrowserStorage.getItem('data') || '[]'),\n\t\ttabId: BrowserStorage.getItem('tabId'),\n\t\tlastUpdated: parseInt(BrowserStorage.getItem('lastUpdated'), 10),\n\t}\n}\n\n/**\n * @param {string|null} tabId unique id for browser tab\n */\nasync function setCurrentTabAsActive(tabId) {\n\tconst lastTab = BrowserStorage.getItem('tabId')\n\tif (lastTab !== tabId) {\n\t\t// Refresh the data when changing the tab\n\t\tawait getNotificationsData(tabId, '', true, false)\n\t\t// Enforce this tab one the raise-condition if there was one\n\t\tBrowserStorage.setItem('tabId', tabId)\n\t}\n}\n\n/**\n * @param {object} notification notification object\n */\nfunction remapAttributes(notification) {\n\tnotification.notificationId = notification.notification_id\n\tnotification.objectId = notification.object_id\n\tnotification.objectType = notification.object_type\n\n\tdelete notification.notification_id\n\tdelete notification.object_id\n\tdelete notification.object_type\n\n\treturn notification\n}\n\n/**\n * @param {string} lastETag last ETag\n */\nasync function refreshData(lastETag) {\n\tlet requestConfig = {}\n\tif (lastETag) {\n\t\trequestConfig = {\n\t\t\theaders: {\n\t\t\t\t'If-None-Match': lastETag,\n\t\t\t},\n\t\t}\n\t}\n\n\ttry {\n\t\tconst response = await axios.get(generateOcsUrl('apps/notifications/api/v2/notifications'), requestConfig)\n\n\t\tBrowserStorage.setItem('status', '' + response.status)\n\t\tif (response.status !== 204) {\n\t\t\tBrowserStorage.setItem('headers', JSON.stringify(response.headers))\n\t\t\tBrowserStorage.setItem('data', JSON.stringify(response.data.ocs.data.map(remapAttributes)))\n\t\t}\n\t} catch (error) {\n\t\tif (error?.response?.status) {\n\t\t\tBrowserStorage.setItem('status', '' + error.response.status)\n\t\t} else {\n\t\t\t// Setting to 500 in case no request was made so it's retried on the next attempt\n\t\t\tBrowserStorage.setItem('status', '500')\n\t\t}\n\t}\n}\n\nexport {\n\tgetNotificationsData,\n\tsetCurrentTabAsActive,\n}\n","/*!\n * howler.js v2.2.4\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Create the global controller. All contained methods and properties apply\n * to all sounds that are currently playing or will be in the future.\n */\n var HowlerGlobal = function() {\n this.init();\n };\n HowlerGlobal.prototype = {\n /**\n * Initialize the global Howler object.\n * @return {Howler}\n */\n init: function() {\n var self = this || Howler;\n\n // Create a global ID counter.\n self._counter = 1000;\n\n // Pool of unlocked HTML5 Audio objects.\n self._html5AudioPool = [];\n self.html5PoolSize = 10;\n\n // Internal properties.\n self._codecs = {};\n self._howls = [];\n self._muted = false;\n self._volume = 1;\n self._canPlayEvent = 'canplaythrough';\n self._navigator = (typeof window !== 'undefined' && window.navigator) ? window.navigator : null;\n\n // Public properties.\n self.masterGain = null;\n self.noAudio = false;\n self.usingWebAudio = true;\n self.autoSuspend = true;\n self.ctx = null;\n\n // Set to false to disable the auto audio unlocker.\n self.autoUnlock = true;\n\n // Setup the various state values for global tracking.\n self._setup();\n\n return self;\n },\n\n /**\n * Get/set the global volume for all sounds.\n * @param {Float} vol Volume from 0.0 to 1.0.\n * @return {Howler/Float} Returns self or current volume.\n */\n volume: function(vol) {\n var self = this || Howler;\n vol = parseFloat(vol);\n\n // If we don't have an AudioContext created yet, run the setup.\n if (!self.ctx) {\n setupAudioContext();\n }\n\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n self._volume = vol;\n\n // Don't update any of the nodes if we are muted.\n if (self._muted) {\n return self;\n }\n\n // When using Web Audio, we just need to adjust the master gain.\n if (self.usingWebAudio) {\n self.masterGain.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n }\n\n // Loop through and change volume for all HTML5 audio nodes.\n for (var i=0; i=0; i--) {\n self._howls[i].unload();\n }\n\n // Create a new AudioContext to make sure it is fully reset.\n if (self.usingWebAudio && self.ctx && typeof self.ctx.close !== 'undefined') {\n self.ctx.close();\n self.ctx = null;\n setupAudioContext();\n }\n\n return self;\n },\n\n /**\n * Check for codec support of specific extension.\n * @param {String} ext Audio file extention.\n * @return {Boolean}\n */\n codecs: function(ext) {\n return (this || Howler)._codecs[ext.replace(/^x-/, '')];\n },\n\n /**\n * Setup various state values for global tracking.\n * @return {Howler}\n */\n _setup: function() {\n var self = this || Howler;\n\n // Keeps track of the suspend/resume state of the AudioContext.\n self.state = self.ctx ? self.ctx.state || 'suspended' : 'suspended';\n\n // Automatically begin the 30-second suspend process\n self._autoSuspend();\n\n // Check if audio is available.\n if (!self.usingWebAudio) {\n // No audio is available on this system if noAudio is set to true.\n if (typeof Audio !== 'undefined') {\n try {\n var test = new Audio();\n\n // Check if the canplaythrough event is available.\n if (typeof test.oncanplaythrough === 'undefined') {\n self._canPlayEvent = 'canplay';\n }\n } catch(e) {\n self.noAudio = true;\n }\n } else {\n self.noAudio = true;\n }\n }\n\n // Test to make sure audio isn't disabled in Internet Explorer.\n try {\n var test = new Audio();\n if (test.muted) {\n self.noAudio = true;\n }\n } catch (e) {}\n\n // Check for supported codecs.\n if (!self.noAudio) {\n self._setupCodecs();\n }\n\n return self;\n },\n\n /**\n * Check for browser support for various codecs and cache the results.\n * @return {Howler}\n */\n _setupCodecs: function() {\n var self = this || Howler;\n var audioTest = null;\n\n // Must wrap in a try/catch because IE11 in server mode throws an error.\n try {\n audioTest = (typeof Audio !== 'undefined') ? new Audio() : null;\n } catch (err) {\n return self;\n }\n\n if (!audioTest || typeof audioTest.canPlayType !== 'function') {\n return self;\n }\n\n var mpegTest = audioTest.canPlayType('audio/mpeg;').replace(/^no$/, '');\n\n // Opera version <33 has mixed MP3 support, so we need to check for and block it.\n var ua = self._navigator ? self._navigator.userAgent : '';\n var checkOpera = ua.match(/OPR\\/(\\d+)/g);\n var isOldOpera = (checkOpera && parseInt(checkOpera[0].split('/')[1], 10) < 33);\n var checkSafari = ua.indexOf('Safari') !== -1 && ua.indexOf('Chrome') === -1;\n var safariVersion = ua.match(/Version\\/(.*?) /);\n var isOldSafari = (checkSafari && safariVersion && parseInt(safariVersion[1], 10) < 15);\n\n self._codecs = {\n mp3: !!(!isOldOpera && (mpegTest || audioTest.canPlayType('audio/mp3;').replace(/^no$/, ''))),\n mpeg: !!mpegTest,\n opus: !!audioTest.canPlayType('audio/ogg; codecs=\"opus\"').replace(/^no$/, ''),\n ogg: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n oga: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n wav: !!(audioTest.canPlayType('audio/wav; codecs=\"1\"') || audioTest.canPlayType('audio/wav')).replace(/^no$/, ''),\n aac: !!audioTest.canPlayType('audio/aac;').replace(/^no$/, ''),\n caf: !!audioTest.canPlayType('audio/x-caf;').replace(/^no$/, ''),\n m4a: !!(audioTest.canPlayType('audio/x-m4a;') || audioTest.canPlayType('audio/m4a;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n m4b: !!(audioTest.canPlayType('audio/x-m4b;') || audioTest.canPlayType('audio/m4b;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n mp4: !!(audioTest.canPlayType('audio/x-mp4;') || audioTest.canPlayType('audio/mp4;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n weba: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n webm: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n dolby: !!audioTest.canPlayType('audio/mp4; codecs=\"ec-3\"').replace(/^no$/, ''),\n flac: !!(audioTest.canPlayType('audio/x-flac;') || audioTest.canPlayType('audio/flac;')).replace(/^no$/, '')\n };\n\n return self;\n },\n\n /**\n * Some browsers/devices will only allow audio to be played after a user interaction.\n * Attempt to automatically unlock audio on the first user interaction.\n * Concept from: http://paulbakaus.com/tutorials/html5/web-audio-on-ios/\n * @return {Howler}\n */\n _unlockAudio: function() {\n var self = this || Howler;\n\n // Only run this if Web Audio is supported and it hasn't already been unlocked.\n if (self._audioUnlocked || !self.ctx) {\n return;\n }\n\n self._audioUnlocked = false;\n self.autoUnlock = false;\n\n // Some mobile devices/platforms have distortion issues when opening/closing tabs and/or web views.\n // Bugs in the browser (especially Mobile Safari) can cause the sampleRate to change from 44100 to 48000.\n // By calling Howler.unload(), we create a new AudioContext with the correct sampleRate.\n if (!self._mobileUnloaded && self.ctx.sampleRate !== 44100) {\n self._mobileUnloaded = true;\n self.unload();\n }\n\n // Scratch buffer for enabling iOS to dispose of web audio buffers correctly, as per:\n // http://stackoverflow.com/questions/24119684\n self._scratchBuffer = self.ctx.createBuffer(1, 1, 22050);\n\n // Call this method on touch start to create and play a buffer,\n // then check if the audio actually played to determine if\n // audio has now been unlocked on iOS, Android, etc.\n var unlock = function(e) {\n // Create a pool of unlocked HTML5 Audio objects that can\n // be used for playing sounds without user interaction. HTML5\n // Audio objects must be individually unlocked, as opposed\n // to the WebAudio API which only needs a single activation.\n // This must occur before WebAudio setup or the source.onended\n // event will not fire.\n while (self._html5AudioPool.length < self.html5PoolSize) {\n try {\n var audioNode = new Audio();\n\n // Mark this Audio object as unlocked to ensure it can get returned\n // to the unlocked pool when released.\n audioNode._unlocked = true;\n\n // Add the audio node to the pool.\n self._releaseHtml5Audio(audioNode);\n } catch (e) {\n self.noAudio = true;\n break;\n }\n }\n\n // Loop through any assigned audio nodes and unlock them.\n for (var i=0; i= 55.\n if (typeof self.ctx.resume === 'function') {\n self.ctx.resume();\n }\n\n // Setup a timeout to check that we are unlocked on the next event loop.\n source.onended = function() {\n source.disconnect(0);\n\n // Update the unlocked state and prevent this check from happening again.\n self._audioUnlocked = true;\n\n // Remove the touch start listener.\n document.removeEventListener('touchstart', unlock, true);\n document.removeEventListener('touchend', unlock, true);\n document.removeEventListener('click', unlock, true);\n document.removeEventListener('keydown', unlock, true);\n\n // Let all sounds know that audio has been unlocked.\n for (var i=0; i 0 ? sound._seek : self._sprite[sprite][0] / 1000);\n var duration = Math.max(0, ((self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000) - seek);\n var timeout = (duration * 1000) / Math.abs(sound._rate);\n var start = self._sprite[sprite][0] / 1000;\n var stop = (self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000;\n sound._sprite = sprite;\n\n // Mark the sound as ended instantly so that this async playback\n // doesn't get grabbed by another call to play while this one waits to start.\n sound._ended = false;\n\n // Update the parameters of the sound.\n var setParams = function() {\n sound._paused = false;\n sound._seek = seek;\n sound._start = start;\n sound._stop = stop;\n sound._loop = !!(sound._loop || self._sprite[sprite][2]);\n };\n\n // End the sound instantly if seek is at the end.\n if (seek >= stop) {\n self._ended(sound);\n return;\n }\n\n // Begin the actual playback.\n var node = sound._node;\n if (self._webAudio) {\n // Fire this when the sound is ready to play to begin Web Audio playback.\n var playWebAudio = function() {\n self._playLock = false;\n setParams();\n self._refreshBuffer(sound);\n\n // Setup the playback params.\n var vol = (sound._muted || self._muted) ? 0 : sound._volume;\n node.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n sound._playStart = Howler.ctx.currentTime;\n\n // Play the sound using the supported method.\n if (typeof node.bufferSource.start === 'undefined') {\n sound._loop ? node.bufferSource.noteGrainOn(0, seek, 86400) : node.bufferSource.noteGrainOn(0, seek, duration);\n } else {\n sound._loop ? node.bufferSource.start(0, seek, 86400) : node.bufferSource.start(0, seek, duration);\n }\n\n // Start a new timer if none is present.\n if (timeout !== Infinity) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n if (!internal) {\n setTimeout(function() {\n self._emit('play', sound._id);\n self._loadQueue();\n }, 0);\n }\n };\n\n if (Howler.state === 'running' && Howler.ctx.state !== 'interrupted') {\n playWebAudio();\n } else {\n self._playLock = true;\n\n // Wait for the audio context to resume before playing.\n self.once('resume', playWebAudio);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n } else {\n // Fire this when the sound is ready to play to begin HTML5 Audio playback.\n var playHtml5 = function() {\n node.currentTime = seek;\n node.muted = sound._muted || self._muted || Howler._muted || node.muted;\n node.volume = sound._volume * Howler.volume();\n node.playbackRate = sound._rate;\n\n // Some browsers will throw an error if this is called without user interaction.\n try {\n var play = node.play();\n\n // Support older browsers that don't support promises, and thus don't have this issue.\n if (play && typeof Promise !== 'undefined' && (play instanceof Promise || typeof play.then === 'function')) {\n // Implements a lock to prevent DOMException: The play() request was interrupted by a call to pause().\n self._playLock = true;\n\n // Set param values immediately.\n setParams();\n\n // Releases the lock and executes queued actions.\n play\n .then(function() {\n self._playLock = false;\n node._unlocked = true;\n if (!internal) {\n self._emit('play', sound._id);\n } else {\n self._loadQueue();\n }\n })\n .catch(function() {\n self._playLock = false;\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n\n // Reset the ended and paused values.\n sound._ended = true;\n sound._paused = true;\n });\n } else if (!internal) {\n self._playLock = false;\n setParams();\n self._emit('play', sound._id);\n }\n\n // Setting rate before playing won't work in IE, so we set it again here.\n node.playbackRate = sound._rate;\n\n // If the node is still paused, then we can assume there was a playback issue.\n if (node.paused) {\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n return;\n }\n\n // Setup the end timer on sprites or listen for the ended event.\n if (sprite !== '__default' || sound._loop) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n } else {\n self._endTimers[sound._id] = function() {\n // Fire ended on this audio node.\n self._ended(sound);\n\n // Clear this listener.\n node.removeEventListener('ended', self._endTimers[sound._id], false);\n };\n node.addEventListener('ended', self._endTimers[sound._id], false);\n }\n } catch (err) {\n self._emit('playerror', sound._id, err);\n }\n };\n\n // If this is streaming audio, make sure the src is set and load again.\n if (node.src === 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA') {\n node.src = self._src;\n node.load();\n }\n\n // Play immediately if ready, or wait for the 'canplaythrough'e vent.\n var loadedNoReadyState = (window && window.ejecta) || (!node.readyState && Howler._navigator.isCocoonJS);\n if (node.readyState >= 3 || loadedNoReadyState) {\n playHtml5();\n } else {\n self._playLock = true;\n self._state = 'loading';\n\n var listener = function() {\n self._state = 'loaded';\n \n // Begin playback.\n playHtml5();\n\n // Clear this listener.\n node.removeEventListener(Howler._canPlayEvent, listener, false);\n };\n node.addEventListener(Howler._canPlayEvent, listener, false);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n }\n\n return sound._id;\n },\n\n /**\n * Pause playback and save current position.\n * @param {Number} id The sound ID (empty to pause all in group).\n * @return {Howl}\n */\n pause: function(id) {\n var self = this;\n\n // If the sound hasn't loaded or a play() promise is pending, add it to the load queue to pause when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'pause',\n action: function() {\n self.pause(id);\n }\n });\n\n return self;\n }\n\n // If no id is passed, get all ID's to be paused.\n var ids = self._getSoundIds(id);\n\n for (var i=0; i Returns the group's volume value.\n * volume(id) -> Returns the sound id's current volume.\n * volume(vol) -> Sets the volume of all sounds in this Howl group.\n * volume(vol, id) -> Sets the volume of passed sound id.\n * @return {Howl/Number} Returns self or current volume.\n */\n volume: function() {\n var self = this;\n var args = arguments;\n var vol, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the value of the groups' volume.\n return self._volume;\n } else if (args.length === 1 || args.length === 2 && typeof args[1] === 'undefined') {\n // First check if this is an ID, and if not, assume it is a new volume.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n vol = parseFloat(args[0]);\n }\n } else if (args.length >= 2) {\n vol = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the volume or return the current volume.\n var sound;\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n // If the sound hasn't loaded, add it to the load queue to change volume when capable.\n if (self._state !== 'loaded'|| self._playLock) {\n self._queue.push({\n event: 'volume',\n action: function() {\n self.volume.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group volume.\n if (typeof id === 'undefined') {\n self._volume = vol;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i 0) ? len / steps : len);\n var lastTick = Date.now();\n\n // Store the value being faded to.\n sound._fadeTo = to;\n\n // Update the volume value on each interval tick.\n sound._interval = setInterval(function() {\n // Update the volume based on the time since the last tick.\n var tick = (Date.now() - lastTick) / len;\n lastTick = Date.now();\n vol += diff * tick;\n\n // Round to within 2 decimal points.\n vol = Math.round(vol * 100) / 100;\n\n // Make sure the volume is in the right bounds.\n if (diff < 0) {\n vol = Math.max(to, vol);\n } else {\n vol = Math.min(to, vol);\n }\n\n // Change the volume.\n if (self._webAudio) {\n sound._volume = vol;\n } else {\n self.volume(vol, sound._id, true);\n }\n\n // Set the group's volume.\n if (isGroup) {\n self._volume = vol;\n }\n\n // When the fade is complete, stop it and fire event.\n if ((to < from && vol <= to) || (to > from && vol >= to)) {\n clearInterval(sound._interval);\n sound._interval = null;\n sound._fadeTo = null;\n self.volume(to, sound._id);\n self._emit('fade', sound._id);\n }\n }, stepLen);\n },\n\n /**\n * Internal method that stops the currently playing fade when\n * a new fade starts, volume is changed or the sound is stopped.\n * @param {Number} id The sound id.\n * @return {Howl}\n */\n _stopFade: function(id) {\n var self = this;\n var sound = self._soundById(id);\n\n if (sound && sound._interval) {\n if (self._webAudio) {\n sound._node.gain.cancelScheduledValues(Howler.ctx.currentTime);\n }\n\n clearInterval(sound._interval);\n sound._interval = null;\n self.volume(sound._fadeTo, id);\n sound._fadeTo = null;\n self._emit('fade', id);\n }\n\n return self;\n },\n\n /**\n * Get/set the loop parameter on a sound. This method can optionally take 0, 1 or 2 arguments.\n * loop() -> Returns the group's loop value.\n * loop(id) -> Returns the sound id's loop value.\n * loop(loop) -> Sets the loop value for all sounds in this Howl group.\n * loop(loop, id) -> Sets the loop value of passed sound id.\n * @return {Howl/Boolean} Returns self or current loop value.\n */\n loop: function() {\n var self = this;\n var args = arguments;\n var loop, id, sound;\n\n // Determine the values for loop and id.\n if (args.length === 0) {\n // Return the grou's loop value.\n return self._loop;\n } else if (args.length === 1) {\n if (typeof args[0] === 'boolean') {\n loop = args[0];\n self._loop = loop;\n } else {\n // Return this sound's loop value.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._loop : false;\n }\n } else if (args.length === 2) {\n loop = args[0];\n id = parseInt(args[1], 10);\n }\n\n // If no id is passed, get all ID's to be looped.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current playback rate.\n * rate(id) -> Returns the sound id's current playback rate.\n * rate(rate) -> Sets the playback rate of all sounds in this Howl group.\n * rate(rate, id) -> Sets the playback rate of passed sound id.\n * @return {Howl/Number} Returns self or the current playback rate.\n */\n rate: function() {\n var self = this;\n var args = arguments;\n var rate, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current rate of the first node.\n id = self._sounds[0]._id;\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new rate value.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n rate = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n rate = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the playback rate or return the current value.\n var sound;\n if (typeof rate === 'number') {\n // If the sound hasn't loaded, add it to the load queue to change playback rate when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'rate',\n action: function() {\n self.rate.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group rate.\n if (typeof id === 'undefined') {\n self._rate = rate;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current seek position.\n * seek(id) -> Returns the sound id's current seek position.\n * seek(seek) -> Sets the seek position of the first sound node.\n * seek(seek, id) -> Sets the seek position of passed sound id.\n * @return {Howl/Number} Returns self or the current seek position.\n */\n seek: function() {\n var self = this;\n var args = arguments;\n var seek, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current position of the first node.\n if (self._sounds.length) {\n id = self._sounds[0]._id;\n }\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new seek position.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else if (self._sounds.length) {\n id = self._sounds[0]._id;\n seek = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n seek = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // If there is no ID, bail out.\n if (typeof id === 'undefined') {\n return 0;\n }\n\n // If the sound hasn't loaded, add it to the load queue to seek when capable.\n if (typeof seek === 'number' && (self._state !== 'loaded' || self._playLock)) {\n self._queue.push({\n event: 'seek',\n action: function() {\n self.seek.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Get the sound.\n var sound = self._soundById(id);\n\n if (sound) {\n if (typeof seek === 'number' && seek >= 0) {\n // Pause the sound and update position for restarting playback.\n var playing = self.playing(id);\n if (playing) {\n self.pause(id, true);\n }\n\n // Move the position of the track and cancel timer.\n sound._seek = seek;\n sound._ended = false;\n self._clearTimer(id);\n\n // Update the seek position for HTML5 Audio.\n if (!self._webAudio && sound._node && !isNaN(sound._node.duration)) {\n sound._node.currentTime = seek;\n }\n\n // Seek and emit when ready.\n var seekAndEmit = function() {\n // Restart the playback if the sound was playing.\n if (playing) {\n self.play(id, true);\n }\n\n self._emit('seek', id);\n };\n\n // Wait for the play lock to be unset before emitting (HTML5 Audio).\n if (playing && !self._webAudio) {\n var emitSeek = function() {\n if (!self._playLock) {\n seekAndEmit();\n } else {\n setTimeout(emitSeek, 0);\n }\n };\n setTimeout(emitSeek, 0);\n } else {\n seekAndEmit();\n }\n } else {\n if (self._webAudio) {\n var realTime = self.playing(id) ? Howler.ctx.currentTime - sound._playStart : 0;\n var rateSeek = sound._rateSeek ? sound._rateSeek - sound._seek : 0;\n return sound._seek + (rateSeek + realTime * Math.abs(sound._rate));\n } else {\n return sound._node.currentTime;\n }\n }\n }\n\n return self;\n },\n\n /**\n * Check if a specific sound is currently playing or not (if id is provided), or check if at least one of the sounds in the group is playing or not.\n * @param {Number} id The sound id to check. If none is passed, the whole sound group is checked.\n * @return {Boolean} True if playing and false if not.\n */\n playing: function(id) {\n var self = this;\n\n // Check the passed sound ID (if any).\n if (typeof id === 'number') {\n var sound = self._soundById(id);\n return sound ? !sound._paused : false;\n }\n\n // Otherwise, loop through all sounds and check if any are playing.\n for (var i=0; i= 0) {\n Howler._howls.splice(index, 1);\n }\n\n // Delete this sound from the cache (if no other Howl is using it).\n var remCache = true;\n for (i=0; i= 0) {\n remCache = false;\n break;\n }\n }\n\n if (cache && remCache) {\n delete cache[self._src];\n }\n\n // Clear global errors.\n Howler.noAudio = false;\n\n // Clear out `self`.\n self._state = 'unloaded';\n self._sounds = [];\n self = null;\n\n return null;\n },\n\n /**\n * Listen to a custom event.\n * @param {String} event Event name.\n * @param {Function} fn Listener to call.\n * @param {Number} id (optional) Only listen to events for this sound.\n * @param {Number} once (INTERNAL) Marks event to fire only once.\n * @return {Howl}\n */\n on: function(event, fn, id, once) {\n var self = this;\n var events = self['_on' + event];\n\n if (typeof fn === 'function') {\n events.push(once ? {id: id, fn: fn, once: once} : {id: id, fn: fn});\n }\n\n return self;\n },\n\n /**\n * Remove a custom event. Call without parameters to remove all events.\n * @param {String} event Event name.\n * @param {Function} fn Listener to remove. Leave empty to remove all.\n * @param {Number} id (optional) Only remove events for this sound.\n * @return {Howl}\n */\n off: function(event, fn, id) {\n var self = this;\n var events = self['_on' + event];\n var i = 0;\n\n // Allow passing just an event and ID.\n if (typeof fn === 'number') {\n id = fn;\n fn = null;\n }\n\n if (fn || id) {\n // Loop through event store and remove the passed function.\n for (i=0; i=0; i--) {\n // Only fire the listener if the correct ID is used.\n if (!events[i].id || events[i].id === id || event === 'load') {\n setTimeout(function(fn) {\n fn.call(this, id, msg);\n }.bind(self, events[i].fn), 0);\n\n // If this event was setup with `once`, remove it.\n if (events[i].once) {\n self.off(event, events[i].fn, events[i].id);\n }\n }\n }\n\n // Pass the event type into load queue so that it can continue stepping.\n self._loadQueue(event);\n\n return self;\n },\n\n /**\n * Queue of actions initiated before the sound has loaded.\n * These will be called in sequence, with the next only firing\n * after the previous has finished executing (even if async like play).\n * @return {Howl}\n */\n _loadQueue: function(event) {\n var self = this;\n\n if (self._queue.length > 0) {\n var task = self._queue[0];\n\n // Remove this task if a matching event was passed.\n if (task.event === event) {\n self._queue.shift();\n self._loadQueue();\n }\n\n // Run the task if no event type is passed.\n if (!event) {\n task.action();\n }\n }\n\n return self;\n },\n\n /**\n * Fired when playback ends at the end of the duration.\n * @param {Sound} sound The sound object to work with.\n * @return {Howl}\n */\n _ended: function(sound) {\n var self = this;\n var sprite = sound._sprite;\n\n // If we are using IE and there was network latency we may be clipping\n // audio before it completes playing. Lets check the node to make sure it\n // believes it has completed, before ending the playback.\n if (!self._webAudio && sound._node && !sound._node.paused && !sound._node.ended && sound._node.currentTime < sound._stop) {\n setTimeout(self._ended.bind(self, sound), 100);\n return self;\n }\n\n // Should this sound loop?\n var loop = !!(sound._loop || self._sprite[sprite][2]);\n\n // Fire the ended event.\n self._emit('end', sound._id);\n\n // Restart the playback for HTML5 Audio loop.\n if (!self._webAudio && loop) {\n self.stop(sound._id, true).play(sound._id);\n }\n\n // Restart this timer if on a Web Audio loop.\n if (self._webAudio && loop) {\n self._emit('play', sound._id);\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n sound._playStart = Howler.ctx.currentTime;\n\n var timeout = ((sound._stop - sound._start) * 1000) / Math.abs(sound._rate);\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n // Mark the node as paused.\n if (self._webAudio && !loop) {\n sound._paused = true;\n sound._ended = true;\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n self._clearTimer(sound._id);\n\n // Clean up the buffer source.\n self._cleanBuffer(sound._node);\n\n // Attempt to auto-suspend AudioContext if no sounds are still playing.\n Howler._autoSuspend();\n }\n\n // When using a sprite, end the track.\n if (!self._webAudio && !loop) {\n self.stop(sound._id, true);\n }\n\n return self;\n },\n\n /**\n * Clear the end timer for a sound playback.\n * @param {Number} id The sound ID.\n * @return {Howl}\n */\n _clearTimer: function(id) {\n var self = this;\n\n if (self._endTimers[id]) {\n // Clear the timeout or remove the ended listener.\n if (typeof self._endTimers[id] !== 'function') {\n clearTimeout(self._endTimers[id]);\n } else {\n var sound = self._soundById(id);\n if (sound && sound._node) {\n sound._node.removeEventListener('ended', self._endTimers[id], false);\n }\n }\n\n delete self._endTimers[id];\n }\n\n return self;\n },\n\n /**\n * Return the sound identified by this ID, or return null.\n * @param {Number} id Sound ID\n * @return {Object} Sound object or null.\n */\n _soundById: function(id) {\n var self = this;\n\n // Loop through all sounds and find the one with this ID.\n for (var i=0; i=0; i--) {\n if (cnt <= limit) {\n return;\n }\n\n if (self._sounds[i]._ended) {\n // Disconnect the audio source when using Web Audio.\n if (self._webAudio && self._sounds[i]._node) {\n self._sounds[i]._node.disconnect(0);\n }\n\n // Remove sounds until we have the pool size.\n self._sounds.splice(i, 1);\n cnt--;\n }\n }\n },\n\n /**\n * Get all ID's from the sounds pool.\n * @param {Number} id Only return one ID if one is passed.\n * @return {Array} Array of IDs.\n */\n _getSoundIds: function(id) {\n var self = this;\n\n if (typeof id === 'undefined') {\n var ids = [];\n for (var i=0; i= 0;\n\n if (!node.bufferSource) {\n return self;\n }\n\n if (Howler._scratchBuffer && node.bufferSource) {\n node.bufferSource.onended = null;\n node.bufferSource.disconnect(0);\n if (isIOS) {\n try { node.bufferSource.buffer = Howler._scratchBuffer; } catch(e) {}\n }\n }\n node.bufferSource = null;\n\n return self;\n },\n\n /**\n * Set the source to a 0-second silence to stop any downloading (except in IE).\n * @param {Object} node Audio node to clear.\n */\n _clearSound: function(node) {\n var checkIE = /MSIE |Trident\\//.test(Howler._navigator && Howler._navigator.userAgent);\n if (!checkIE) {\n node.src = 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA';\n }\n }\n };\n\n /** Single Sound Methods **/\n /***************************************************************************/\n\n /**\n * Setup the sound object, which each node attached to a Howl group is contained in.\n * @param {Object} howl The Howl parent group.\n */\n var Sound = function(howl) {\n this._parent = howl;\n this.init();\n };\n Sound.prototype = {\n /**\n * Initialize a new Sound object.\n * @return {Sound}\n */\n init: function() {\n var self = this;\n var parent = self._parent;\n\n // Setup the default parameters.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a unique ID for this sound.\n self._id = ++Howler._counter;\n\n // Add itself to the parent's pool.\n parent._sounds.push(self);\n\n // Create the new node.\n self.create();\n\n return self;\n },\n\n /**\n * Create and setup a new sound object, whether HTML5 Audio or Web Audio.\n * @return {Sound}\n */\n create: function() {\n var self = this;\n var parent = self._parent;\n var volume = (Howler._muted || self._muted || self._parent._muted) ? 0 : self._volume;\n\n if (parent._webAudio) {\n // Create the gain node for controlling volume (the source will connect to this).\n self._node = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n self._node.gain.setValueAtTime(volume, Howler.ctx.currentTime);\n self._node.paused = true;\n self._node.connect(Howler.masterGain);\n } else if (!Howler.noAudio) {\n // Get an unlocked Audio object from the pool.\n self._node = Howler._obtainHtml5Audio();\n\n // Listen for errors (http://dev.w3.org/html5/spec-author-view/spec.html#mediaerror).\n self._errorFn = self._errorListener.bind(self);\n self._node.addEventListener('error', self._errorFn, false);\n\n // Listen for 'canplaythrough' event to let us know the sound is ready.\n self._loadFn = self._loadListener.bind(self);\n self._node.addEventListener(Howler._canPlayEvent, self._loadFn, false);\n\n // Listen for the 'ended' event on the sound to account for edge-case where\n // a finite sound has a duration of Infinity.\n self._endFn = self._endListener.bind(self);\n self._node.addEventListener('ended', self._endFn, false);\n\n // Setup the new audio node.\n self._node.src = parent._src;\n self._node.preload = parent._preload === true ? 'auto' : parent._preload;\n self._node.volume = volume * Howler.volume();\n\n // Begin loading the source.\n self._node.load();\n }\n\n return self;\n },\n\n /**\n * Reset the parameters of this sound to the original state (for recycle).\n * @return {Sound}\n */\n reset: function() {\n var self = this;\n var parent = self._parent;\n\n // Reset all of the parameters of this sound.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._rateSeek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a new ID so that it isn't confused with the previous sound.\n self._id = ++Howler._counter;\n\n return self;\n },\n\n /**\n * HTML5 Audio error listener callback.\n */\n _errorListener: function() {\n var self = this;\n\n // Fire an error event and pass back the code.\n self._parent._emit('loaderror', self._id, self._node.error ? self._node.error.code : 0);\n\n // Clear the event listener.\n self._node.removeEventListener('error', self._errorFn, false);\n },\n\n /**\n * HTML5 Audio canplaythrough listener callback.\n */\n _loadListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Setup a sprite if none is defined.\n if (Object.keys(parent._sprite).length === 0) {\n parent._sprite = {__default: [0, parent._duration * 1000]};\n }\n\n if (parent._state !== 'loaded') {\n parent._state = 'loaded';\n parent._emit('load');\n parent._loadQueue();\n }\n\n // Clear the event listener.\n self._node.removeEventListener(Howler._canPlayEvent, self._loadFn, false);\n },\n\n /**\n * HTML5 Audio ended listener callback.\n */\n _endListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Only handle the `ended`` event if the duration is Infinity.\n if (parent._duration === Infinity) {\n // Update the parent duration to match the real audio duration.\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Update the sprite that corresponds to the real duration.\n if (parent._sprite.__default[1] === Infinity) {\n parent._sprite.__default[1] = parent._duration * 1000;\n }\n\n // Run the regular ended method.\n parent._ended(self);\n }\n\n // Clear the event listener since the duration is now correct.\n self._node.removeEventListener('ended', self._endFn, false);\n }\n };\n\n /** Helper Methods **/\n /***************************************************************************/\n\n var cache = {};\n\n /**\n * Buffer a sound from URL, Data URI or cache and decode to audio source (Web Audio API).\n * @param {Howl} self\n */\n var loadBuffer = function(self) {\n var url = self._src;\n\n // Check if the buffer has already been cached and use it instead.\n if (cache[url]) {\n // Set the duration from the cache.\n self._duration = cache[url].duration;\n\n // Load the sound into this Howl.\n loadSound(self);\n\n return;\n }\n\n if (/^data:[^;]+;base64,/.test(url)) {\n // Decode the base64 data URI without XHR, since some browsers don't support it.\n var data = atob(url.split(',')[1]);\n var dataView = new Uint8Array(data.length);\n for (var i=0; i 0) {\n cache[self._src] = buffer;\n loadSound(self, buffer);\n } else {\n error();\n }\n };\n\n // Decode the buffer into an audio source.\n if (typeof Promise !== 'undefined' && Howler.ctx.decodeAudioData.length === 1) {\n Howler.ctx.decodeAudioData(arraybuffer).then(success).catch(error);\n } else {\n Howler.ctx.decodeAudioData(arraybuffer, success, error);\n }\n }\n\n /**\n * Sound is now loaded, so finish setting everything up and fire the loaded event.\n * @param {Howl} self\n * @param {Object} buffer The decoded buffer sound source.\n */\n var loadSound = function(self, buffer) {\n // Set the duration.\n if (buffer && !self._duration) {\n self._duration = buffer.duration;\n }\n\n // Setup a sprite if none is defined.\n if (Object.keys(self._sprite).length === 0) {\n self._sprite = {__default: [0, self._duration * 1000]};\n }\n\n // Fire the loaded event.\n if (self._state !== 'loaded') {\n self._state = 'loaded';\n self._emit('load');\n self._loadQueue();\n }\n };\n\n /**\n * Setup the audio context when available, or switch to HTML5 Audio mode.\n */\n var setupAudioContext = function() {\n // If we have already detected that Web Audio isn't supported, don't run this step again.\n if (!Howler.usingWebAudio) {\n return;\n }\n\n // Check if we are using Web Audio and setup the AudioContext if we are.\n try {\n if (typeof AudioContext !== 'undefined') {\n Howler.ctx = new AudioContext();\n } else if (typeof webkitAudioContext !== 'undefined') {\n Howler.ctx = new webkitAudioContext();\n } else {\n Howler.usingWebAudio = false;\n }\n } catch(e) {\n Howler.usingWebAudio = false;\n }\n\n // If the audio context creation still failed, set using web audio to false.\n if (!Howler.ctx) {\n Howler.usingWebAudio = false;\n }\n\n // Check if a webview is being used on iOS8 or earlier (rather than the browser).\n // If it is, disable Web Audio as it causes crashing.\n var iOS = (/iP(hone|od|ad)/.test(Howler._navigator && Howler._navigator.platform));\n var appVersion = Howler._navigator && Howler._navigator.appVersion.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n var version = appVersion ? parseInt(appVersion[1], 10) : null;\n if (iOS && version && version < 9) {\n var safari = /safari/.test(Howler._navigator && Howler._navigator.userAgent.toLowerCase());\n if (Howler._navigator && !safari) {\n Howler.usingWebAudio = false;\n }\n }\n\n // Create and expose the master GainNode when using Web Audio (useful for plugins or advanced usage).\n if (Howler.usingWebAudio) {\n Howler.masterGain = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n Howler.masterGain.gain.setValueAtTime(Howler._muted ? 0 : Howler._volume, Howler.ctx.currentTime);\n Howler.masterGain.connect(Howler.ctx.destination);\n }\n\n // Re-run the setup on Howler.\n Howler._setup();\n };\n\n // Add support for AMD (Asynchronous Module Definition) libraries such as require.js.\n if (typeof define === 'function' && define.amd) {\n define([], function() {\n return {\n Howler: Howler,\n Howl: Howl\n };\n });\n }\n\n // Add support for CommonJS libraries such as browserify.\n if (typeof exports !== 'undefined') {\n exports.Howler = Howler;\n exports.Howl = Howl;\n }\n\n // Add to global in Node.js (for testing, etc).\n if (typeof global !== 'undefined') {\n global.HowlerGlobal = HowlerGlobal;\n global.Howler = Howler;\n global.Howl = Howl;\n global.Sound = Sound;\n } else if (typeof window !== 'undefined') { // Define globally in case AMD is not available or unused.\n window.HowlerGlobal = HowlerGlobal;\n window.Howler = Howler;\n window.Howl = Howl;\n window.Sound = Sound;\n }\n})();\n\n\n/*!\n * Spatial Plugin - Adds support for stereo and 3D audio where Web Audio is supported.\n * \n * howler.js v2.2.4\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n // Setup default properties.\n HowlerGlobal.prototype._pos = [0, 0, 0];\n HowlerGlobal.prototype._orientation = [0, 0, -1, 0, 1, 0];\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Helper method to update the stereo panning position of all current Howls.\n * Future Howls will not use this value unless explicitly set.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @return {Howler/Number} Self or current stereo panning value.\n */\n HowlerGlobal.prototype.stereo = function(pan) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Loop through all Howls and update their stereo panning.\n for (var i=self._howls.length-1; i>=0; i--) {\n self._howls[i].stereo(pan);\n }\n\n return self;\n };\n\n /**\n * Get/set the position of the listener in 3D cartesian space. Sounds using\n * 3D position will be relative to the listener's position.\n * @param {Number} x The x-position of the listener.\n * @param {Number} y The y-position of the listener.\n * @param {Number} z The z-position of the listener.\n * @return {Howler/Array} Self or current listener position.\n */\n HowlerGlobal.prototype.pos = function(x, y, z) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n y = (typeof y !== 'number') ? self._pos[1] : y;\n z = (typeof z !== 'number') ? self._pos[2] : z;\n\n if (typeof x === 'number') {\n self._pos = [x, y, z];\n\n if (typeof self.ctx.listener.positionX !== 'undefined') {\n self.ctx.listener.positionX.setTargetAtTime(self._pos[0], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionY.setTargetAtTime(self._pos[1], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionZ.setTargetAtTime(self._pos[2], Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setPosition(self._pos[0], self._pos[1], self._pos[2]);\n }\n } else {\n return self._pos;\n }\n\n return self;\n };\n\n /**\n * Get/set the direction the listener is pointing in the 3D cartesian space.\n * A front and up vector must be provided. The front is the direction the\n * face of the listener is pointing, and up is the direction the top of the\n * listener is pointing. Thus, these values are expected to be at right angles\n * from each other.\n * @param {Number} x The x-orientation of the listener.\n * @param {Number} y The y-orientation of the listener.\n * @param {Number} z The z-orientation of the listener.\n * @param {Number} xUp The x-orientation of the top of the listener.\n * @param {Number} yUp The y-orientation of the top of the listener.\n * @param {Number} zUp The z-orientation of the top of the listener.\n * @return {Howler/Array} Returns self or the current orientation vectors.\n */\n HowlerGlobal.prototype.orientation = function(x, y, z, xUp, yUp, zUp) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n var or = self._orientation;\n y = (typeof y !== 'number') ? or[1] : y;\n z = (typeof z !== 'number') ? or[2] : z;\n xUp = (typeof xUp !== 'number') ? or[3] : xUp;\n yUp = (typeof yUp !== 'number') ? or[4] : yUp;\n zUp = (typeof zUp !== 'number') ? or[5] : zUp;\n\n if (typeof x === 'number') {\n self._orientation = [x, y, z, xUp, yUp, zUp];\n\n if (typeof self.ctx.listener.forwardX !== 'undefined') {\n self.ctx.listener.forwardX.setTargetAtTime(x, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardY.setTargetAtTime(y, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardZ.setTargetAtTime(z, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upX.setTargetAtTime(xUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upY.setTargetAtTime(yUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upZ.setTargetAtTime(zUp, Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setOrientation(x, y, z, xUp, yUp, zUp);\n }\n } else {\n return or;\n }\n\n return self;\n };\n\n /** Group Methods **/\n /***************************************************************************/\n\n /**\n * Add new properties to the core init.\n * @param {Function} _super Core init method.\n * @return {Howl}\n */\n Howl.prototype.init = (function(_super) {\n return function(o) {\n var self = this;\n\n // Setup user-defined default properties.\n self._orientation = o.orientation || [1, 0, 0];\n self._stereo = o.stereo || null;\n self._pos = o.pos || null;\n self._pannerAttr = {\n coneInnerAngle: typeof o.coneInnerAngle !== 'undefined' ? o.coneInnerAngle : 360,\n coneOuterAngle: typeof o.coneOuterAngle !== 'undefined' ? o.coneOuterAngle : 360,\n coneOuterGain: typeof o.coneOuterGain !== 'undefined' ? o.coneOuterGain : 0,\n distanceModel: typeof o.distanceModel !== 'undefined' ? o.distanceModel : 'inverse',\n maxDistance: typeof o.maxDistance !== 'undefined' ? o.maxDistance : 10000,\n panningModel: typeof o.panningModel !== 'undefined' ? o.panningModel : 'HRTF',\n refDistance: typeof o.refDistance !== 'undefined' ? o.refDistance : 1,\n rolloffFactor: typeof o.rolloffFactor !== 'undefined' ? o.rolloffFactor : 1\n };\n\n // Setup event listeners.\n self._onstereo = o.onstereo ? [{fn: o.onstereo}] : [];\n self._onpos = o.onpos ? [{fn: o.onpos}] : [];\n self._onorientation = o.onorientation ? [{fn: o.onorientation}] : [];\n\n // Complete initilization with howler.js core's init function.\n return _super.call(this, o);\n };\n })(Howl.prototype.init);\n\n /**\n * Get/set the stereo panning of the audio source for this sound or all in the group.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @param {Number} id (optional) The sound ID. If none is passed, all in group will be updated.\n * @return {Howl/Number} Returns self or the current stereo panning value.\n */\n Howl.prototype.stereo = function(pan, id) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // If the sound hasn't loaded, add it to the load queue to change stereo pan when capable.\n if (self._state !== 'loaded') {\n self._queue.push({\n event: 'stereo',\n action: function() {\n self.stereo(pan, id);\n }\n });\n\n return self;\n }\n\n // Check for PannerStereoNode support and fallback to PannerNode if it doesn't exist.\n var pannerType = (typeof Howler.ctx.createStereoPanner === 'undefined') ? 'spatial' : 'stereo';\n\n // Setup the group's stereo panning if no ID is passed.\n if (typeof id === 'undefined') {\n // Return the group's stereo panning if no parameters are passed.\n if (typeof pan === 'number') {\n self._stereo = pan;\n self._pos = [pan, 0, 0];\n } else {\n return self._stereo;\n }\n }\n\n // Change the streo panning of one or all sounds in group.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the group's values.\n * pannerAttr(id) -> Returns the sound id's values.\n * pannerAttr(o) -> Set's the values of all sounds in this Howl group.\n * pannerAttr(o, id) -> Set's the values of passed sound id.\n *\n * Attributes:\n * coneInnerAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * inside of which there will be no volume reduction.\n * coneOuterAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * outside of which the volume will be reduced to a constant value of `coneOuterGain`.\n * coneOuterGain - (0 by default) A parameter for directional audio sources, this is the gain outside of the\n * `coneOuterAngle`. It is a linear value in the range `[0, 1]`.\n * distanceModel - ('inverse' by default) Determines algorithm used to reduce volume as audio moves away from\n * listener. Can be `linear`, `inverse` or `exponential.\n * maxDistance - (10000 by default) The maximum distance between source and listener, after which the volume\n * will not be reduced any further.\n * refDistance - (1 by default) A reference distance for reducing volume as source moves further from the listener.\n * This is simply a variable of the distance model and has a different effect depending on which model\n * is used and the scale of your coordinates. Generally, volume will be equal to 1 at this distance.\n * rolloffFactor - (1 by default) How quickly the volume reduces as source moves from listener. This is simply a\n * variable of the distance model and can be in the range of `[0, 1]` with `linear` and `[0, ∞]`\n * with `inverse` and `exponential`.\n * panningModel - ('HRTF' by default) Determines which spatialization algorithm is used to position audio.\n * Can be `HRTF` or `equalpower`.\n *\n * @return {Howl/Object} Returns self or current panner attributes.\n */\n Howl.prototype.pannerAttr = function() {\n var self = this;\n var args = arguments;\n var o, id, sound;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the group's panner attribute values.\n return self._pannerAttr;\n } else if (args.length === 1) {\n if (typeof args[0] === 'object') {\n o = args[0];\n\n // Set the grou's panner attribute values.\n if (typeof id === 'undefined') {\n if (!o.pannerAttr) {\n o.pannerAttr = {\n coneInnerAngle: o.coneInnerAngle,\n coneOuterAngle: o.coneOuterAngle,\n coneOuterGain: o.coneOuterGain,\n distanceModel: o.distanceModel,\n maxDistance: o.maxDistance,\n refDistance: o.refDistance,\n rolloffFactor: o.rolloffFactor,\n panningModel: o.panningModel\n };\n }\n\n self._pannerAttr = {\n coneInnerAngle: typeof o.pannerAttr.coneInnerAngle !== 'undefined' ? o.pannerAttr.coneInnerAngle : self._coneInnerAngle,\n coneOuterAngle: typeof o.pannerAttr.coneOuterAngle !== 'undefined' ? o.pannerAttr.coneOuterAngle : self._coneOuterAngle,\n coneOuterGain: typeof o.pannerAttr.coneOuterGain !== 'undefined' ? o.pannerAttr.coneOuterGain : self._coneOuterGain,\n distanceModel: typeof o.pannerAttr.distanceModel !== 'undefined' ? o.pannerAttr.distanceModel : self._distanceModel,\n maxDistance: typeof o.pannerAttr.maxDistance !== 'undefined' ? o.pannerAttr.maxDistance : self._maxDistance,\n refDistance: typeof o.pannerAttr.refDistance !== 'undefined' ? o.pannerAttr.refDistance : self._refDistance,\n rolloffFactor: typeof o.pannerAttr.rolloffFactor !== 'undefined' ? o.pannerAttr.rolloffFactor : self._rolloffFactor,\n panningModel: typeof o.pannerAttr.panningModel !== 'undefined' ? o.pannerAttr.panningModel : self._panningModel\n };\n }\n } else {\n // Return this sound's panner attribute values.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._pannerAttr : self._pannerAttr;\n }\n } else if (args.length === 2) {\n o = args[0];\n id = parseInt(args[1], 10);\n }\n\n // Update the values of the specified sounds.\n var ids = self._getSoundIds(id);\n for (var i=0; i console.debug('Audio output successfully redirected to secondary speaker'))\n\t\t\t\t\t.catch((error) => console.error('Failed to redirect audio output:', error))\n\t\t\t\tsoundDuped.play()\n\t\t\t}\n\t\t}\n\t} else if (loadState('notifications', 'sound_notification')) {\n\t\tconst sound = new Howl({\n\t\t\tsrc: [generateFilePath('notifications', 'img', 'notification.ogg')],\n\t\t\tvolume: 0.5,\n\t\t})\n\n\t\tsound.play()\n\t}\n}\n\nexport {\n\tcreateWebNotification,\n}\n","\n\n\n\n\n\n"],"names":["_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_sfc_main","defineComponent","__props","_ctx","_cache","openBlock","createElementBlock","renderSlot","createCommentVNode","toDisplayString","createTextVNode","NcEmptyContent","_export_sfc","props","timeOptions","computed","relativeTimeOptions","title","useFormatTime","toRef","relativeTime","useFormatRelativeTime","formattedTime","unref","__emit","emit","descriptionId","createElementId","triggerId","focusTrap","ref","isOpened","wrapperTag","contentContainerElement","useTemplateRef","headerMenuElement","triggerButtonInstance","ignore","onClickOutside","setMenuState","useHotKey","useTrapStackControl","watch","state","toggleMenu","nextTick","addFocusTrap","clearFocusTrap","onFocusOut","event","createFocusTrap","getTrapStack","createBlock","resolveDynamicComponent","normalizeClass","withCtx","createVNode","NcButton","withModifiers","withDirectives","createElementVNode","vShow","NcHeaderMenu","_sfc_main$1","_sfc_render","NcUserBubbleDiv","mergeModels","isOpen","useModel","isAvatarUrl","e","isCustomAvatar","avatarStyle","hasUrl","warn","href","contentComponent","RouterLink","contentStyle","NcPopover","$event","attrs","mergeProps","NcAvatar","normalizeStyle","NcUserBubble","exports","initialState","require$$0","getCapabilities","major","valid","require$$1","_interopDefault","major__default","valid__default","ProxyBus","bus2","__publicField","name","handler","SimpleBus","h","bus","getBus","_a","subscribe","unsubscribe","eventBus","browserStorage$1","token","observers","getRequestToken","onRequestTokenUpdate","observer","error","getCSPNonce","meta","token2","browserStorage","GuestUser","randomUUID","guest","displayName","currentUser$1","getGuestUser","getGuestNickname","setGuestNickname","nickname","c","r","currentUser","getAttribute","el","attribute","getCurrentUser","head","uid","bind","fn","thisArg","toString","getPrototypeOf","iterator","toStringTag","kindOf","cache","thing","str","kindOfTest","type","typeOfTest","isArray","isUndefined","isBuffer","val","isFunction$1","isArrayBuffer","isArrayBufferView","result","isString","isNumber","isObject","isBoolean","isPlainObject","prototype","isEmptyObject","isDate","isFile","isBlob","isFileList","isStream","isFormData","kind","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","trim","forEach","obj","allOwnKeys","i","l","keys","len","key","findKey","_key","_global","global","isContextDefined","context","merge","caseless","skipUndefined","assignValue","targetKey","extend","a","b","stripBOM","content","inherits","constructor","superConstructor","descriptors","toFlatObject","sourceObj","destObj","filter","propFilter","prop","merged","endsWith","searchString","position","lastIndex","toArray","arr","isTypedArray","TypedArray","forEachEntry","_iterator","pair","matchAll","regExp","matches","isHTMLForm","toCamelCase","m","p1","p2","hasOwnProperty","isRegExp","reduceDescriptors","reducer","reducedDescriptors","descriptor","ret","freezeMethods","value","toObjectSet","arrayOrString","delimiter","define","noop","toFiniteNumber","defaultValue","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isAsyncFn","isThenable","_setImmediate","setImmediateSupported","postMessageSupported","callbacks","data","cb","asap","process","utils$1","AxiosError","message","code","config","request","response","prototype$1","customProps","axiosError","msg","errCode","httpAdapter","isVisitable","removeBrackets","renderKey","path","dots","isFlatArray","predicates","toFormData","formData","options","option","metaTokens","visitor","defaultVisitor","indexes","useBlob","convertValue","Buffer","index","exposedHelpers","build","encode$1","charMap","match","AxiosURLSearchParams","params","encoder","_encode","encode","buildURL","url","serializeFn","serializedParams","hashmarkIndex","InterceptorManager","fulfilled","rejected","id","InterceptorManager$1","transitionalDefaults","URLSearchParams$1","FormData$1","Blob$1","platform$1","hasBrowserEnv","_navigator","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","origin","utils","platform","__spreadValues","toURLEncodedForm","helpers","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","stringifySafely","rawValue","parser","defaults","headers","contentType","hasJSONContentType","isObjectPayload","_FormData","transitional","forcedJSONParsing","JSONRequested","strictJSONParsing","status","method","defaults$1","ignoreDuplicateOf","parseHeaders","rawHeaders","parsed","line","$internals","normalizeHeader","header","normalizeValue","parseTokens","tokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","w","char","buildAccessors","accessorName","methodName","arg1","arg2","arg3","AxiosHeaders","valueOrRewrite","rewrite","self","setHeader","_value","_header","_rewrite","lHeader","setHeaders","dest","entry","matcher","deleted","deleteHeader","format","normalized","targets","asStrings","first","accessors","defineAccessor","mapped","headerValue","AxiosHeaders$1","transformData","fns","isCancel","CanceledError","settle","resolve","reject","validateStatus","parseProtocol","speedometer","samplesCount","min","bytes","timestamps","tail","firstSampleTS","chunkLength","now","startedAt","bytesCount","passed","throttle","freq","timestamp","threshold","lastArgs","timer","invoke","args","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","loaded","total","progressBytes","rate","inRange","progressEventDecorator","throttled","lengthComputable","asyncDecorator","isURLSameOrigin","isMSIE","cookies","expires","domain","secure","cookie","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","allowAbsoluteUrls","isRelativeUrl","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","resolveConfig","newConfig","withXSRFToken","xsrfHeaderName","xsrfCookieName","auth","formHeaders","allowedHeaders","xsrfValue","xhrAdapter","_config","requestData","requestHeaders","responseType","onUploadProgress","onDownloadProgress","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","done","onloadend","responseHeaders","err","timeoutErrorMessage","cancel","protocol","composeSignals$1","signals","timeout","length","controller","aborted","onabort","reason","signal","streamChunk","chunk","chunkSize","pos","end","readBytes","iterable","__asyncGenerator","iter","__forAwait","readStream","more","temp","__await","__yieldStar","stream","reader","trackStream","onProgress","onFinish","_onFinish","loadedBytes","DEFAULT_CHUNK_SIZE","isFunction","globalFetchAPI","Request","Response","ReadableStream$1","TextEncoder","test","factory","env","envFetch","isFetchSupported","isRequestSupported","isResponseSupported","isReadableStreamSupported","encodeText","supportsRequestStream","duplexAccessed","hasContentType","supportsResponseStream","resolvers","res","getBodyLength","body","resolveBodyLength","cancelToken","withCredentials","fetchOptions","_fetch","composedSignal","requestContentLength","_request","contentTypeHeader","flush","isCredentialsSupported","resolvedOptions","__spreadProps","isStreamResponse","responseContentLength","responseData","seedCache","getFetch","fetch","seeds","seed","map","knownAdapters","renderReason","isResolvedHandle","adapter","adapters","nameOrAdapter","rejectedReasons","reasons","s","throwIfCancellationRequested","dispatchRequest","VERSION","validators$1","deprecatedWarnings","validator","version","formatMessage","opt","desc","opts","correctSpelling","assertOptions","schema","allowUnknown","validators","Axios","instanceConfig","configOrUrl","dummy","paramsSerializer","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","promise","chain","onFulfilled","onRejected","fullPath","generateHTTPMethod","isForm","Axios$1","CancelToken","executor","resolvePromise","onfulfilled","_resolve","abort","CancelToken$1","spread","callback","isAxiosError","payload","HttpStatusCode","HttpStatusCode$1","createInstance","defaultConfig","instance","axios","promises","axios_1","n","u","U","R","o","f","g","t","v","d","_","router","require$$2","Axios__default","client","cancelableClient","RETRY_KEY","onCsrfTokenError","responseURL","RETRY_DELAY_KEY","onMaintenanceModeError","retryDelay","onNotLoggedInError","__importDefault","this","mod","dist","getSupportedTypes","listen","capabilities_1","event_bus_1","capabilities","setupGlobals","setupSocket","preAuth","_createElementBlock","_mergeProps","$props","_createElementVNode","_openBlock","theming","hexRegex","hexToHSL","hexColor","max","hue","sat","lum","isRedThemed","isOrangeThemed","_createBlock","IconBell","isWebLink","onClickActionButton","action","_unref","_createTextVNode","_toDisplayString","$options","lastSlashPosition","firstSlashPosition","_component_NcUserBubble","ActionButton","NcDateTime","IconClose","IconMessageOutline","NcRichText","parametersHaveLink","p","parameters","richParameters","UserParameter","FileParameter","DefaultParameter","executeEvent","showError","generateOcsUrl","_hoisted_6","_component_NcDateTime","_component_NcButton","_createVNode","_component_IconClose","_hoisted_8","_component_NcRichText","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_14","_normalizeClass","_hoisted_15","_hoisted_16","_hoisted_17","_Fragment","_component_ActionButton","_hoisted_18","_component_IconMessageOutline","getNotificationsData","tabId","lastETag","forceRefresh","hasNotifyPush","lastUpdated","BrowserStorage","lastTab","refreshData","setCurrentTabAsActive","remapAttributes","notification","requestConfig","HowlerGlobal","Howler","vol","setupAudioContext","ids","j","sound","muted","ext","audioTest","mpegTest","ua","checkOpera","isOldOpera","checkSafari","safariVersion","isOldSafari","unlock","audioNode","testPlay","audio","handleSuspension","Howl","Sound","loadBuffer","sprite","internal","num","soundId","seek","duration","start","stop","setParams","node","playWebAudio","playHtml5","play","loadedNoReadyState","from","to","currentTime","isGroup","diff","steps","stepLen","lastTick","tick","loop","playing","seekAndEmit","emitSeek","realTime","rateSeek","sounds","remCache","once","events","isId","task","limit","cnt","isIOS","checkIE","howl","parent","volume","loadSound","dataView","decodeAudioData","xhr","safeXhrSend","arraybuffer","success","buffer","iOS","appVersion","safari","pan","x","y","z","xUp","yUp","zUp","or","_super","pannerType","setupPanner","pa","panner","createWebNotification","getLanguage","playNotificationSound","loadState","howlPayload","generateFilePath","primaryDeviceId","secondarySpeakerEnabled","secondaryDeviceId","_c","_b","soundDuped","sessionKeepAlive","hasThrottledPushNotifications","fairUsePolicyNotification","imagePath","IconBellOutline","IconNotification","NotificationItem","notifications","pollInterval","temporary","permissions","$data","_component_NcHeaderMenu","_component_IconNotification","$setup","_Transition","_TransitionGroup","_component_NotificationItem","_renderList","_component_NcEmptyContent","_component_IconBellOutline"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,22]}