@rqmii_immersive/agent-react-sdk 2.0.0 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/README.md +103 -357
  2. package/dist/{RqmiiCloudAvatarPlayer-BnsY8xIR.js → RqmiiCloudAvatarPlayer-CESlcAGy.js} +6095 -6108
  3. package/dist/RqmiiCloudAvatarPlayer-CESlcAGy.js.map +1 -0
  4. package/dist/RqmiiCloudAvatarPlayer-D5npgPcs.cjs +2939 -0
  5. package/dist/RqmiiCloudAvatarPlayer-D5npgPcs.cjs.map +1 -0
  6. package/dist/agent-react-sdk.css +1 -1
  7. package/dist/components/RqmiiAgentRoom.d.ts +3 -0
  8. package/dist/components/RqmiiAgentRoom.d.ts.map +1 -0
  9. package/dist/components/RqmiiCloudAvatarPlayer.d.ts +3 -0
  10. package/dist/components/RqmiiCloudAvatarPlayer.d.ts.map +1 -0
  11. package/dist/components/RqmiiErrorBoundary.d.ts +19 -0
  12. package/dist/components/RqmiiErrorBoundary.d.ts.map +1 -0
  13. package/dist/components/pxs/EpicPixelStreamingPlayer.d.ts +5 -0
  14. package/dist/components/pxs/EpicPixelStreamingPlayer.d.ts.map +1 -0
  15. package/dist/core/constants.d.ts +81 -0
  16. package/dist/core/constants.d.ts.map +1 -0
  17. package/dist/core/events/emitter.d.ts +10 -0
  18. package/dist/core/events/emitter.d.ts.map +1 -0
  19. package/dist/core/managers/audio.d.ts +24 -0
  20. package/dist/core/managers/audio.d.ts.map +1 -0
  21. package/dist/core/managers/heartbeat.d.ts +13 -0
  22. package/dist/core/managers/heartbeat.d.ts.map +1 -0
  23. package/dist/core/managers/reconnect.d.ts +29 -0
  24. package/dist/core/managers/reconnect.d.ts.map +1 -0
  25. package/dist/core/managers/session.d.ts +20 -0
  26. package/dist/core/managers/session.d.ts.map +1 -0
  27. package/dist/core/managers/socket.d.ts +15 -0
  28. package/dist/core/managers/socket.d.ts.map +1 -0
  29. package/dist/core/state/reducer.d.ts +4 -0
  30. package/dist/core/state/reducer.d.ts.map +1 -0
  31. package/dist/core/state/selectors.d.ts +24 -0
  32. package/dist/core/state/selectors.d.ts.map +1 -0
  33. package/dist/core/state/types.d.ts +60 -0
  34. package/dist/core/state/types.d.ts.map +1 -0
  35. package/dist/core/utils/accumulator.d.ts +11 -0
  36. package/dist/core/utils/accumulator.d.ts.map +1 -0
  37. package/dist/core/utils/agent-type.d.ts +2 -0
  38. package/dist/core/utils/agent-type.d.ts.map +1 -0
  39. package/dist/core/utils/bytes.d.ts +2 -0
  40. package/dist/core/utils/bytes.d.ts.map +1 -0
  41. package/dist/core/utils/sleep.d.ts +2 -0
  42. package/dist/core/utils/sleep.d.ts.map +1 -0
  43. package/dist/hooks/index.d.ts +12 -0
  44. package/dist/hooks/index.d.ts.map +1 -0
  45. package/dist/hooks/use-rqmii-agent.d.ts +2 -0
  46. package/dist/hooks/use-rqmii-agent.d.ts.map +1 -0
  47. package/dist/hooks/use-rqmii-audio-element.d.ts +2 -0
  48. package/dist/hooks/use-rqmii-audio-element.d.ts.map +1 -0
  49. package/dist/hooks/use-rqmii-avatar.d.ts +13 -0
  50. package/dist/hooks/use-rqmii-avatar.d.ts.map +1 -0
  51. package/dist/hooks/use-rqmii-connection.d.ts +27 -0
  52. package/dist/hooks/use-rqmii-connection.d.ts.map +1 -0
  53. package/dist/hooks/use-rqmii-events.d.ts +3 -0
  54. package/dist/hooks/use-rqmii-events.d.ts.map +1 -0
  55. package/dist/hooks/use-rqmii-messages.d.ts +6 -0
  56. package/dist/hooks/use-rqmii-messages.d.ts.map +1 -0
  57. package/dist/hooks/use-rqmii-press-to-talk.d.ts +3 -0
  58. package/dist/hooks/use-rqmii-press-to-talk.d.ts.map +1 -0
  59. package/dist/hooks/use-rqmii-sdk.d.ts +81 -0
  60. package/dist/hooks/use-rqmii-sdk.d.ts.map +1 -0
  61. package/dist/hooks/use-rqmii-session.d.ts +9 -0
  62. package/dist/hooks/use-rqmii-session.d.ts.map +1 -0
  63. package/dist/hooks/use-rqmii-vad.d.ts +3 -0
  64. package/dist/hooks/use-rqmii-vad.d.ts.map +1 -0
  65. package/dist/hooks/use-rqmii-voice.d.ts +12 -0
  66. package/dist/hooks/use-rqmii-voice.d.ts.map +1 -0
  67. package/dist/index.cjs +1 -1
  68. package/dist/index.cjs.map +1 -1
  69. package/dist/index.d.ts +10 -340
  70. package/dist/index.d.ts.map +1 -0
  71. package/dist/index.js +270 -20
  72. package/dist/index.js.map +1 -1
  73. package/dist/provider/RqmiiAgentProvider.d.ts +4 -0
  74. package/dist/provider/RqmiiAgentProvider.d.ts.map +1 -0
  75. package/dist/provider/socket-handlers.d.ts +77 -0
  76. package/dist/provider/socket-handlers.d.ts.map +1 -0
  77. package/dist/provider/use-manager-lifecycle.d.ts +76 -0
  78. package/dist/provider/use-manager-lifecycle.d.ts.map +1 -0
  79. package/dist/types/index.d.ts +385 -0
  80. package/dist/types/index.d.ts.map +1 -0
  81. package/dist/ui/Orb.d.ts +19 -0
  82. package/dist/ui/Orb.d.ts.map +1 -0
  83. package/dist/ui/RqmiiAgentChat.d.ts +4 -0
  84. package/dist/ui/RqmiiAgentChat.d.ts.map +1 -0
  85. package/dist/ui/agent-data.d.ts +17 -0
  86. package/dist/ui/agent-data.d.ts.map +1 -0
  87. package/dist/ui/chat/ChatBox.d.ts +22 -0
  88. package/dist/ui/chat/ChatBox.d.ts.map +1 -0
  89. package/dist/ui/chat/CreditsExhaustedPanel.d.ts +6 -0
  90. package/dist/ui/chat/CreditsExhaustedPanel.d.ts.map +1 -0
  91. package/dist/ui/chat/chat-box-avatar.d.ts +3 -0
  92. package/dist/ui/chat/chat-box-avatar.d.ts.map +1 -0
  93. package/dist/ui/chat/chat-box-content.d.ts +26 -0
  94. package/dist/ui/chat/chat-box-content.d.ts.map +1 -0
  95. package/dist/ui/chat/chat-box-shared.d.ts +24 -0
  96. package/dist/ui/chat/chat-box-shared.d.ts.map +1 -0
  97. package/dist/ui/chat/chat-box-text-and-voice.d.ts +3 -0
  98. package/dist/ui/chat/chat-box-text-and-voice.d.ts.map +1 -0
  99. package/dist/ui/chat/chat-box-text.d.ts +3 -0
  100. package/dist/ui/chat/chat-box-text.d.ts.map +1 -0
  101. package/dist/ui/chat/chat-box-types.d.ts +83 -0
  102. package/dist/ui/chat/chat-box-types.d.ts.map +1 -0
  103. package/dist/ui/chat/chat-box-voice.d.ts +3 -0
  104. package/dist/ui/chat/chat-box-voice.d.ts.map +1 -0
  105. package/dist/ui/chat/components.d.ts +4 -0
  106. package/dist/ui/chat/components.d.ts.map +1 -0
  107. package/dist/ui/chat/panels.d.ts +78 -0
  108. package/dist/ui/chat/panels.d.ts.map +1 -0
  109. package/dist/ui/chat/primitives.d.ts +47 -0
  110. package/dist/ui/chat/primitives.d.ts.map +1 -0
  111. package/dist/ui/chat/utils.d.ts +7 -0
  112. package/dist/ui/chat/utils.d.ts.map +1 -0
  113. package/dist/ui/faces.d.ts +3 -0
  114. package/dist/ui/faces.d.ts.map +1 -0
  115. package/dist/ui/languages.d.ts +10 -0
  116. package/dist/ui/languages.d.ts.map +1 -0
  117. package/dist/ui.cjs +122 -1
  118. package/dist/ui.cjs.map +1 -1
  119. package/dist/ui.d.ts +11 -10
  120. package/dist/ui.d.ts.map +1 -0
  121. package/dist/ui.js +1771 -4
  122. package/dist/ui.js.map +1 -1
  123. package/package.json +33 -5
  124. package/dist/RqmiiCloudAvatarPlayer-BnsY8xIR.js.map +0 -1
  125. package/dist/RqmiiCloudAvatarPlayer-lqCz2xlU.cjs +0 -2938
  126. package/dist/RqmiiCloudAvatarPlayer-lqCz2xlU.cjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"RqmiiCloudAvatarPlayer-BnsY8xIR.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../src/react/constants.js","../src/react/utils.js","../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/lib/esm/index.js","../node_modules/engine.io-client/build/esm/globals.js","../node_modules/engine.io-client/build/esm/util.js","../node_modules/engine.io-client/build/esm/contrib/parseqs.js","../node_modules/engine.io-client/build/esm/transport.js","../node_modules/engine.io-client/build/esm/transports/polling.js","../node_modules/engine.io-client/build/esm/contrib/has-cors.js","../node_modules/engine.io-client/build/esm/transports/polling-xhr.js","../node_modules/engine.io-client/build/esm/transports/websocket.js","../node_modules/engine.io-client/build/esm/transports/webtransport.js","../node_modules/engine.io-client/build/esm/transports/index.js","../node_modules/engine.io-client/build/esm/contrib/parseuri.js","../node_modules/engine.io-client/build/esm/socket.js","../node_modules/socket.io-client/build/esm/url.js","../node_modules/socket.io-parser/build/esm/is-binary.js","../node_modules/socket.io-parser/build/esm/binary.js","../node_modules/socket.io-parser/build/esm/index.js","../node_modules/socket.io-client/build/esm/on.js","../node_modules/socket.io-client/build/esm/socket.js","../node_modules/socket.io-client/build/esm/contrib/backo2.js","../node_modules/socket.io-client/build/esm/manager.js","../node_modules/socket.io-client/build/esm/index.js","../src/react/core/SocketManager.js","../node_modules/pcm-stream-player/lib/bundle.js","../src/react/core/AudioManager.js","../src/react/core/ReconnectionManager.js","../src/react/core/SessionManager.js","../src/react/core/StateManager.js","../src/react/core/HeartbeatManager.js","../src/react/RqmiiAgentContext.jsx","../src/react/audio/installAudioErrorSuppressors.js","../src/react/hooks/useRqmiiPressToTalk.js","../node_modules/@ricky0123/vad-web/dist/asset-path.js","../node_modules/@ricky0123/vad-web/dist/default-model-fetcher.js","../node_modules/@ricky0123/vad-web/dist/logging.js","../node_modules/@ricky0123/vad-web/dist/messages.js","../node_modules/@ricky0123/vad-web/dist/frame-processor.js","../node_modules/onnxruntime-web/dist/ort.min.js","../node_modules/@ricky0123/vad-web/dist/models/common.js","../node_modules/@ricky0123/vad-web/dist/models/legacy.js","../node_modules/@ricky0123/vad-web/dist/models/v5.js","../node_modules/@ricky0123/vad-web/dist/models/index.js","../node_modules/@ricky0123/vad-web/dist/resampler.js","../node_modules/@ricky0123/vad-web/dist/non-real-time-vad.js","../node_modules/@ricky0123/vad-web/dist/utils.js","../node_modules/onnxruntime-web/dist/ort.wasm.min.js","../node_modules/@ricky0123/vad-web/dist/real-time-vad.js","../node_modules/@ricky0123/vad-web/dist/index.js","../node_modules/@ricky0123/vad-react/dist/index.js","../src/react/hooks/useRqmiiVAD.js","../src/react/hooks.js","../src/react/components/RqmiiAgentRoom.jsx","../node_modules/sdp/sdp.js","../node_modules/@epicgames-ps/lib-pixelstreamingfrontend-ue5.4/dist/lib-pixelstreamingfrontend.esm.js","../src/components/pxs/EpicPixelStreamingPlayer.jsx","../src/react/components/RqmiiCloudAvatarPlayer.jsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","export const AGENT_TYPES = {\n TEXT: 'text',\n VOICE: 'voice',\n TEXT_AND_VOICE: 'text_and_voice',\n CLOUD_AVATAR: 'cloud_avatar',\n DESKTOP_AVATAR: 'desktop_avatar',\n};\n\nexport const SOCKET_EVENTS = {\n CONNECT: 'connect',\n DISCONNECT: 'disconnect',\n CONNECT_ERROR: 'connect_error',\n\n SESSION_READY: 'session_ready',\n SESSION_JOINED: 'session_joined',\n SESSION_TERMINATED: 'session_terminated',\n\n USER_MESSAGE: 'user_message',\n AUDIO_CHUNK: 'audio_chunk',\n AUDIO_END: 'audio_end',\n INTERRUPT: 'interrupt',\n CHANGE_SESSION_LANGUAGE: 'change_session_language',\n\n HEARTBEAT: 'heartbeat',\n HEARTBEAT_ACK: 'heartbeat_ack',\n\n CLEAR_SESSION_HISTORY: 'clear_session_history',\n\n TRANSCRIPT: 'transcript',\n PARTIAL_TRANSCRIPT: 'partial_transcript',\n AGENT_RESPONSE_CHUNK: 'agent_response_chunk',\n AGENT_RESPONSE: 'agent_response',\n AGENT_AUDIO_CHUNK: 'agent_audio_chunk',\n AGENT_AUDIO_COMPLETE: 'agent_audio_complete',\n\n AVATAR_SPEAKING: 'avatar_speaking',\n AVATAR_SPEAKING_DONE: 'avatar_speaking_done',\n\n INTERRUPTED: 'interrupted',\n ERROR: 'error',\n AUTH_ERROR: 'auth_error',\n\n RECONNECT_CREDENTIAL: 'reconnect_credential',\n RECONNECT_SUCCESS: 'reconnect_success',\n RECONNECT_FAILED: 'reconnect_failed',\n\n SESSION_EXPIRED: 'session_expired',\n\n CREDITS_EXHAUSTED: 'credits_exhausted',\n\n SESSION_STATE_CHANGED: 'session:state_changed',\n AUDIO_PLAYBACK_COMPLETE: 'audio:playback_complete',\n};\n\nexport const CONNECTION_STATE = {\n IDLE: 'idle',\n INITIALIZING: 'initializing',\n CONNECTING: 'connecting',\n CONNECTED: 'connected',\n RECONNECTING: 'reconnecting',\n FAILED: 'failed',\n ENDED: 'ended',\n};\n\nexport const CLOUD_STREAM_STATE = {\n IDLE: 'idle',\n CONNECTING: 'connecting',\n LOADING: 'loading',\n CONNECTED: 'connected',\n DISCONNECTED: 'disconnected',\n ERROR: 'error',\n};\n\nexport const SESSION_STATE = {\n IDLE: 'idle',\n USER_SPEAKING: 'user_speaking',\n AGENT_THINKING: 'agent_thinking',\n AGENT_SPEAKING: 'agent_speaking',\n TOOL_EXECUTING: 'tool_executing',\n TERMINATING: 'terminating',\n TERMINATED: 'terminated',\n};\n\nexport const DEFAULT_RECONNECT_OPTIONS = {\n enabled: true,\n maxAttempts: 8,\n initialDelayMs: 500,\n maxDelayMs: 5000,\n timeoutMs: 8000,\n};\n\nexport const DEFAULT_PCM_OPTIONS = {\n encoding: '16bitInt',\n channels: 1,\n sampleRate: 16000,\n};\n","export const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n\nexport const toUint8Array = (audio) => {\n if (!audio) return null;\n if (audio instanceof Uint8Array) return audio;\n if (audio instanceof ArrayBuffer) return new Uint8Array(audio);\n if (audio?.buffer instanceof ArrayBuffer) {\n const byteOffset = Number.isInteger(audio.byteOffset) ? audio.byteOffset : 0;\n const byteLength = Number.isInteger(audio.byteLength)\n ? audio.byteLength\n : audio.buffer.byteLength - byteOffset;\n return new Uint8Array(audio.buffer, byteOffset, byteLength);\n }\n if (typeof audio === 'object' && audio.type === 'Buffer' && Array.isArray(audio.data)) {\n return new Uint8Array(audio.data);\n }\n try {\n return new Uint8Array(audio);\n } catch {\n return null;\n }\n};\n\nexport const sanitizeAgentType = (value) =>\n String(value || '').toLowerCase().replaceAll('-', '_');\n\nexport const createResponseChunkAccumulator = () => {\n const chunks = new Map();\n\n const addChunk = (requestId, chunk) => {\n const id = requestId || `request-${Date.now()}`;\n const previous = chunks.get(id) || '';\n const next = `${previous}${chunk || ''}`;\n chunks.set(id, next);\n return { id, text: next };\n };\n\n const consume = (requestId, fallbackText = '') => {\n const id = requestId || `request-${Date.now()}`;\n const text = chunks.get(id) || fallbackText || '';\n chunks.delete(id);\n return { id, text };\n };\n\n const clear = () => {\n chunks.clear();\n };\n\n return {\n addChunk,\n consume,\n clear,\n };\n};\n","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach((key) => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + (content || \"\"));\n };\n return fileReader.readAsDataURL(data);\n};\nfunction toArray(data) {\n if (data instanceof Uint8Array) {\n return data;\n }\n else if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n else {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n }\n}\nlet TEXT_ENCODER;\nexport function encodePacketToBinary(packet, callback) {\n if (withNativeBlob && packet.data instanceof Blob) {\n return packet.data.arrayBuffer().then(toArray).then(callback);\n }\n else if (withNativeArrayBuffer &&\n (packet.data instanceof ArrayBuffer || isView(packet.data))) {\n return callback(toArray(packet.data));\n }\n encodePacket(packet, false, (encoded) => {\n if (!TEXT_ENCODER) {\n TEXT_ENCODER = new TextEncoder();\n }\n callback(TEXT_ENCODER.encode(encoded));\n });\n}\nexport { encodePacket };\n","// imported from https://github.com/socketio/base64-arraybuffer\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nexport const encode = (arraybuffer) => {\n let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexport const decode = (base64) => {\n let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE, } from \"./commons.js\";\nimport { decode } from \"./contrib/base64-arraybuffer.js\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nexport const decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType),\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType),\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1),\n }\n : {\n type: PACKET_TYPES_REVERSE[type],\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n if (data instanceof Blob) {\n // from WebSocket + binaryType \"blob\"\n return data;\n }\n else {\n // from HTTP long-polling or WebTransport\n return new Blob([data]);\n }\n case \"arraybuffer\":\n default:\n if (data instanceof ArrayBuffer) {\n // from HTTP long-polling (base64) or WebSocket + binaryType \"arraybuffer\"\n return data;\n }\n else {\n // from WebTransport (Uint8Array)\n return data.buffer;\n }\n }\n};\n","import { encodePacket, encodePacketToBinary } from \"./encodePacket.js\";\nimport { decodePacket } from \"./decodePacket.js\";\nimport { ERROR_PACKET, } from \"./commons.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, (encodedPacket) => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport function createPacketEncoderStream() {\n return new TransformStream({\n transform(packet, controller) {\n encodePacketToBinary(packet, (encodedPacket) => {\n const payloadLength = encodedPacket.length;\n let header;\n // inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length\n if (payloadLength < 126) {\n header = new Uint8Array(1);\n new DataView(header.buffer).setUint8(0, payloadLength);\n }\n else if (payloadLength < 65536) {\n header = new Uint8Array(3);\n const view = new DataView(header.buffer);\n view.setUint8(0, 126);\n view.setUint16(1, payloadLength);\n }\n else {\n header = new Uint8Array(9);\n const view = new DataView(header.buffer);\n view.setUint8(0, 127);\n view.setBigUint64(1, BigInt(payloadLength));\n }\n // first bit indicates whether the payload is plain text (0) or binary (1)\n if (packet.data && typeof packet.data !== \"string\") {\n header[0] |= 0x80;\n }\n controller.enqueue(header);\n controller.enqueue(encodedPacket);\n });\n },\n });\n}\nlet TEXT_DECODER;\nfunction totalLength(chunks) {\n return chunks.reduce((acc, chunk) => acc + chunk.length, 0);\n}\nfunction concatChunks(chunks, size) {\n if (chunks[0].length === size) {\n return chunks.shift();\n }\n const buffer = new Uint8Array(size);\n let j = 0;\n for (let i = 0; i < size; i++) {\n buffer[i] = chunks[0][j++];\n if (j === chunks[0].length) {\n chunks.shift();\n j = 0;\n }\n }\n if (chunks.length && j < chunks[0].length) {\n chunks[0] = chunks[0].slice(j);\n }\n return buffer;\n}\nexport function createPacketDecoderStream(maxPayload, binaryType) {\n if (!TEXT_DECODER) {\n TEXT_DECODER = new TextDecoder();\n }\n const chunks = [];\n let state = 0 /* State.READ_HEADER */;\n let expectedLength = -1;\n let isBinary = false;\n return new TransformStream({\n transform(chunk, controller) {\n chunks.push(chunk);\n while (true) {\n if (state === 0 /* State.READ_HEADER */) {\n if (totalLength(chunks) < 1) {\n break;\n }\n const header = concatChunks(chunks, 1);\n isBinary = (header[0] & 0x80) === 0x80;\n expectedLength = header[0] & 0x7f;\n if (expectedLength < 126) {\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (expectedLength === 126) {\n state = 1 /* State.READ_EXTENDED_LENGTH_16 */;\n }\n else {\n state = 2 /* State.READ_EXTENDED_LENGTH_64 */;\n }\n }\n else if (state === 1 /* State.READ_EXTENDED_LENGTH_16 */) {\n if (totalLength(chunks) < 2) {\n break;\n }\n const headerArray = concatChunks(chunks, 2);\n expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (state === 2 /* State.READ_EXTENDED_LENGTH_64 */) {\n if (totalLength(chunks) < 8) {\n break;\n }\n const headerArray = concatChunks(chunks, 8);\n const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length);\n const n = view.getUint32(0);\n if (n > Math.pow(2, 53 - 32) - 1) {\n // the maximum safe integer in JavaScript is 2^53 - 1\n controller.enqueue(ERROR_PACKET);\n break;\n }\n expectedLength = n * Math.pow(2, 32) + view.getUint32(4);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else {\n if (totalLength(chunks) < expectedLength) {\n break;\n }\n const data = concatChunks(chunks, expectedLength);\n controller.enqueue(decodePacket(isBinary ? data : TEXT_DECODER.decode(data), binaryType));\n state = 0 /* State.READ_HEADER */;\n }\n if (expectedLength === 0 || expectedLength > maxPayload) {\n controller.enqueue(ERROR_PACKET);\n break;\n }\n }\n },\n });\n}\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload, };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\nexport const defaultBinaryType = \"arraybuffer\";\nexport function createCookieJar() { }\n","import { globalThisShim as globalThis } from \"./globals.node.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n/**\n * Generates a random 8-characters string.\n */\nexport function randomString() {\n return (Date.now().toString(36).substring(3) +\n Math.random().toString(36).substring(2, 5));\n}\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nimport { encode } from \"./contrib/parseqs.js\";\nexport class TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n createUri(schema, query = {}) {\n return (schema +\n \"://\" +\n this._hostname() +\n this._port() +\n this.opts.path +\n this._query(query));\n }\n _hostname() {\n const hostname = this.opts.hostname;\n return hostname.indexOf(\":\") === -1 ? hostname : \"[\" + hostname + \"]\";\n }\n _port() {\n if (this.opts.port &&\n ((this.opts.secure && Number(this.opts.port) !== 443) ||\n (!this.opts.secure && Number(this.opts.port) !== 80))) {\n return \":\" + this.opts.port;\n }\n else {\n return \"\";\n }\n }\n _query(query) {\n const encodedQuery = encode(query);\n return encodedQuery.length ? \"?\" + encodedQuery : \"\";\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { randomString } from \"../util.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nexport class Polling extends Transport {\n constructor() {\n super(...arguments);\n this._polling = false;\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this._poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this._polling || !this.writable) {\n let total = 0;\n if (this._polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n _poll() {\n this._polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this._polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this._poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"https\" : \"http\";\n const query = this.query || {};\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = randomString();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","import { Polling } from \"./polling.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globals.node.js\";\nimport { hasCORS } from \"../contrib/has-cors.js\";\nfunction empty() { }\nexport class BaseXHR extends Polling {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n }\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(createRequest, uri, opts) {\n super();\n this.createRequest = createRequest;\n installTimerFunctions(this, opts);\n this._opts = opts;\n this._method = opts.method || \"GET\";\n this._uri = uri;\n this._data = undefined !== opts.data ? opts.data : null;\n this._create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n _create() {\n var _a;\n const opts = pick(this._opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this._opts.xd;\n const xhr = (this._xhr = this.createRequest(opts));\n try {\n xhr.open(this._method, this._uri, true);\n try {\n if (this._opts.extraHeaders) {\n // @ts-ignore\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this._opts.extraHeaders) {\n if (this._opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this._opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this._method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this._opts.withCredentials;\n }\n if (this._opts.requestTimeout) {\n xhr.timeout = this._opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n var _a;\n if (xhr.readyState === 3) {\n (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(\n // @ts-ignore\n xhr.getResponseHeader(\"set-cookie\"));\n }\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this._onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this._onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this._data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this._onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this._index = Request.requestsCount++;\n Request.requests[this._index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n _onError(err) {\n this.emitReserved(\"error\", err, this._xhr);\n this._cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n _cleanup(fromError) {\n if (\"undefined\" === typeof this._xhr || null === this._xhr) {\n return;\n }\n this._xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this._xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this._index];\n }\n this._xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n _onLoad() {\n const data = this._xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this._cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this._cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\nconst hasXHR2 = (function () {\n const xhr = newRequest({\n xdomain: false,\n });\n return xhr && xhr.responseType !== null;\n})();\n/**\n * HTTP long-polling based on the built-in `XMLHttpRequest` object.\n *\n * Usage: browser\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest\n */\nexport class XHR extends BaseXHR {\n constructor(opts) {\n super(opts);\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd }, this.opts);\n return new Request(newRequest, this.uri(), opts);\n }\n}\nfunction newRequest(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { pick, randomString } from \"../util.js\";\nimport { encodePacket } from \"engine.io-parser\";\nimport { globalThisShim as globalThis, nextTick } from \"../globals.node.js\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class BaseWS extends Transport {\n get name() {\n return \"websocket\";\n }\n doOpen() {\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws = this.createSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n this.doWrite(packet, data);\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.onerror = () => { };\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n const query = this.query || {};\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = randomString();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n}\nconst WebSocketCtor = globalThis.WebSocket || globalThis.MozWebSocket;\n/**\n * WebSocket transport based on the built-in `WebSocket` object.\n *\n * Usage: browser, Node.js (since v21), Deno, Bun\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @see https://caniuse.com/mdn-api_websocket\n * @see https://nodejs.org/api/globals.html#websocket\n */\nexport class WS extends BaseWS {\n createSocket(uri, protocols, opts) {\n return !isReactNative\n ? protocols\n ? new WebSocketCtor(uri, protocols)\n : new WebSocketCtor(uri)\n : new WebSocketCtor(uri, protocols, opts);\n }\n doWrite(_packet, data) {\n this.ws.send(data);\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { nextTick } from \"../globals.node.js\";\nimport { createPacketDecoderStream, createPacketEncoderStream, } from \"engine.io-parser\";\n/**\n * WebTransport transport based on the built-in `WebTransport` object.\n *\n * Usage: browser, Node.js (with the `@fails-components/webtransport` package)\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebTransport\n * @see https://caniuse.com/webtransport\n */\nexport class WT extends Transport {\n get name() {\n return \"webtransport\";\n }\n doOpen() {\n try {\n // @ts-ignore\n this._transport = new WebTransport(this.createUri(\"https\"), this.opts.transportOptions[this.name]);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this._transport.closed\n .then(() => {\n this.onClose();\n })\n .catch((err) => {\n this.onError(\"webtransport error\", err);\n });\n // note: we could have used async/await, but that would require some additional polyfills\n this._transport.ready.then(() => {\n this._transport.createBidirectionalStream().then((stream) => {\n const decoderStream = createPacketDecoderStream(Number.MAX_SAFE_INTEGER, this.socket.binaryType);\n const reader = stream.readable.pipeThrough(decoderStream).getReader();\n const encoderStream = createPacketEncoderStream();\n encoderStream.readable.pipeTo(stream.writable);\n this._writer = encoderStream.writable.getWriter();\n const read = () => {\n reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n return;\n }\n this.onPacket(value);\n read();\n })\n .catch((err) => {\n });\n };\n read();\n const packet = { type: \"open\" };\n if (this.query.sid) {\n packet.data = `{\"sid\":\"${this.query.sid}\"}`;\n }\n this._writer.write(packet).then(() => this.onOpen());\n });\n });\n }\n write(packets) {\n this.writable = false;\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n this._writer.write(packet).then(() => {\n if (lastPacket) {\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n var _a;\n (_a = this._transport) === null || _a === void 0 ? void 0 : _a.close();\n }\n}\n","import { XHR } from \"./polling-xhr.node.js\";\nimport { WS } from \"./websocket.node.js\";\nimport { WT } from \"./webtransport.js\";\nexport const transports = {\n websocket: WS,\n webtransport: WT,\n polling: XHR,\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n if (str.length > 8000) {\n throw \"URI too long\";\n }\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports as DEFAULT_TRANSPORTS } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nimport { createCookieJar, defaultBinaryType, nextTick, } from \"./globals.node.js\";\nconst withEventListeners = typeof addEventListener === \"function\" &&\n typeof removeEventListener === \"function\";\nconst OFFLINE_EVENT_LISTENERS = [];\nif (withEventListeners) {\n // within a ServiceWorker, any event handler for the 'offline' event must be added on the initial evaluation of the\n // script, so we create one single event listener here which will forward the event to the socket instances\n addEventListener(\"offline\", () => {\n OFFLINE_EVENT_LISTENERS.forEach((listener) => listener());\n }, false);\n}\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes without upgrade mechanism, which means that it will keep the first low-level transport that\n * successfully establishes the connection.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithoutUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithoutUpgrade({\n * transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithUpgrade\n * @see Socket\n */\nexport class SocketWithoutUpgrade extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts) {\n super();\n this.binaryType = defaultBinaryType;\n this.writeBuffer = [];\n this._prevBufferLen = 0;\n this._pingInterval = -1;\n this._pingTimeout = -1;\n this._maxPayload = -1;\n /**\n * The expiration timestamp of the {@link _pingTimeoutTimer} object is tracked, in case the timer is throttled and the\n * callback is not fired on time. This can happen for example when a laptop is suspended or when a phone is locked.\n */\n this._pingTimeoutTime = Infinity;\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n const parsedUri = parse(uri);\n opts.hostname = parsedUri.host;\n opts.secure =\n parsedUri.protocol === \"https\" || parsedUri.protocol === \"wss\";\n opts.port = parsedUri.port;\n if (parsedUri.query)\n opts.query = parsedUri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = [];\n this._transportsByName = {};\n opts.transports.forEach((t) => {\n const transportName = t.prototype.name;\n this.transports.push(transportName);\n this._transportsByName[transportName] = t;\n });\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: false,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n if (withEventListeners) {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this._beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this._offlineEventListener = () => {\n this._onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n OFFLINE_EVENT_LISTENERS.push(this._offlineEventListener);\n }\n }\n if (this.opts.withCredentials) {\n this._cookieJar = createCookieJar();\n }\n this._open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n }, this.opts.transportOptions[name]);\n return new this._transportsByName[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n _open() {\n if (this.transports.length === 0) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n const transportName = this.opts.rememberUpgrade &&\n SocketWithoutUpgrade.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1\n ? \"websocket\"\n : this.transports[0];\n this.readyState = \"opening\";\n const transport = this.createTransport(transportName);\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this._onDrain.bind(this))\n .on(\"packet\", this._onPacket.bind(this))\n .on(\"error\", this._onError.bind(this))\n .on(\"close\", (reason) => this._onClose(\"transport close\", reason));\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n SocketWithoutUpgrade.priorWebsocketSuccess =\n \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n _onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this._sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n this._resetPingTimeout();\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this._onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this._pingInterval = data.pingInterval;\n this._pingTimeout = data.pingTimeout;\n this._maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this._resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n _resetPingTimeout() {\n this.clearTimeoutFn(this._pingTimeoutTimer);\n const delay = this._pingInterval + this._pingTimeout;\n this._pingTimeoutTime = Date.now() + delay;\n this._pingTimeoutTimer = this.setTimeoutFn(() => {\n this._onClose(\"ping timeout\");\n }, delay);\n if (this.opts.autoUnref) {\n this._pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n _onDrain() {\n this.writeBuffer.splice(0, this._prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this._prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this._getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this._prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n _getWritablePackets() {\n const shouldCheckPayloadSize = this._maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this._maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Checks whether the heartbeat timer has expired but the socket has not yet been notified.\n *\n * Note: this method is private for now because it does not really fit the WebSocket API, but if we put it in the\n * `write()` method then the message would not be buffered by the Socket.IO client.\n *\n * @return {boolean}\n * @private\n */\n /* private */ _hasPingExpired() {\n if (!this._pingTimeoutTime)\n return true;\n const hasExpired = Date.now() > this._pingTimeoutTime;\n if (hasExpired) {\n this._pingTimeoutTime = 0;\n nextTick(() => {\n this._onClose(\"ping timeout\");\n }, this.setTimeoutFn);\n }\n return hasExpired;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this._sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a message. Alias of {@link Socket#write}.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @return {Socket} for chaining.\n */\n send(msg, options, fn) {\n this._sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n _sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this._onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n _onError(err) {\n SocketWithoutUpgrade.priorWebsocketSuccess = false;\n if (this.opts.tryAllTransports &&\n this.transports.length > 1 &&\n this.readyState === \"opening\") {\n this.transports.shift();\n return this._open();\n }\n this.emitReserved(\"error\", err);\n this._onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n _onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this._pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (withEventListeners) {\n if (this._beforeunloadEventListener) {\n removeEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n }\n if (this._offlineEventListener) {\n const i = OFFLINE_EVENT_LISTENERS.indexOf(this._offlineEventListener);\n if (i !== -1) {\n OFFLINE_EVENT_LISTENERS.splice(i, 1);\n }\n }\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this._prevBufferLen = 0;\n }\n }\n}\nSocketWithoutUpgrade.protocol = protocol;\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithUpgrade({\n * transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see Socket\n */\nexport class SocketWithUpgrade extends SocketWithoutUpgrade {\n constructor() {\n super(...arguments);\n this._upgrades = [];\n }\n onOpen() {\n super.onOpen();\n if (\"open\" === this.readyState && this.opts.upgrade) {\n for (let i = 0; i < this._upgrades.length; i++) {\n this._probe(this._upgrades[i]);\n }\n }\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n _probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n SocketWithoutUpgrade.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n SocketWithoutUpgrade.priorWebsocketSuccess =\n \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n if (this._upgrades.indexOf(\"webtransport\") !== -1 &&\n name !== \"webtransport\") {\n // favor WebTransport\n this.setTimeoutFn(() => {\n if (!failed) {\n transport.open();\n }\n }, 200);\n }\n else {\n transport.open();\n }\n }\n onHandshake(data) {\n this._upgrades = this._filterUpgrades(data.upgrades);\n super.onHandshake(data);\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n _filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n for (let i = 0; i < upgrades.length; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * @example\n * import { Socket } from \"engine.io-client\";\n *\n * const socket = new Socket();\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see SocketWithUpgrade\n */\nexport class Socket extends SocketWithUpgrade {\n constructor(uri, opts = {}) {\n const o = typeof uri === \"object\" ? uri : opts;\n if (!o.transports ||\n (o.transports && typeof o.transports[0] === \"string\")) {\n o.transports = (o.transports || [\"polling\", \"websocket\", \"webtransport\"])\n .map((transportName) => DEFAULT_TRANSPORTS[transportName])\n .filter((t) => !!t);\n }\n super(uri, o);\n }\n}\n","import { parse } from \"engine.io-client\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parse(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n delete packet.attachments; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder === true) {\n const isIndexValid = typeof data.num === \"number\" &&\n data.num >= 0 &&\n data.num < buffers.length;\n if (isIndexValid) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else {\n throw new Error(\"illegal attachments\");\n }\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * These strings must not be used as event names, as they have a special meaning.\n */\nconst RESERVED_EVENTS = [\n \"connect\", // used on the client side\n \"connect_error\", // used on the client side\n \"disconnect\", // used on both sides\n \"disconnecting\", // used on the server side\n \"newListener\", // used by the Node.js EventEmitter\n \"removeListener\", // used by the Node.js EventEmitter\n];\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encoder constructor\n *\n * @param {function} replacer - custom replacer to pass down to JSON.parse\n */\n constructor(replacer) {\n this.replacer = replacer;\n }\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n return this.encodeAsBinary({\n type: obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK,\n nsp: obj.nsp,\n data: obj.data,\n id: obj.id,\n });\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data, this.replacer);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n /**\n * Decoder constructor\n */\n constructor(opts) {\n super();\n this.opts = Object.assign({\n reviver: undefined,\n maxAttachments: 10,\n }, typeof opts === \"function\" ? { reviver: opts } : opts);\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n if (this.reconstructor) {\n throw new Error(\"got plaintext data when reconstructing a packet\");\n }\n packet = this.decodeString(obj);\n const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n const n = Number(buf);\n if (!isInteger(n) || n < 0) {\n throw new Error(\"Illegal attachments\");\n }\n else if (n > this.opts.maxAttachments) {\n throw new Error(\"too many attachments\");\n }\n p.attachments = n;\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = this.tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n tryParse(str) {\n try {\n return JSON.parse(str, this.opts.reviver);\n }\n catch (e) {\n return false;\n }\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return isObject(payload);\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || isObject(payload);\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return (Array.isArray(payload) &&\n (typeof payload[0] === \"number\" ||\n (typeof payload[0] === \"string\" &&\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n this.reconstructor = null;\n }\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\nfunction isNamespaceValid(nsp) {\n return typeof nsp === \"string\";\n}\n// see https://caniuse.com/mdn-javascript_builtins_number_isinteger\nconst isInteger = Number.isInteger ||\n function (value) {\n return (typeof value === \"number\" &&\n isFinite(value) &&\n Math.floor(value) === value);\n };\nfunction isAckIdValid(id) {\n return id === undefined || isInteger(id);\n}\n// see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript\nfunction isObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}\nfunction isDataValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return payload === undefined || isObject(payload);\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.EVENT:\n return (Array.isArray(payload) &&\n (typeof payload[0] === \"number\" ||\n (typeof payload[0] === \"string\" &&\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n case PacketType.ACK:\n return Array.isArray(payload);\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || isObject(payload);\n default:\n return false;\n }\n}\nexport function isPacketValid(packet) {\n return (isNamespaceValid(packet.nsp) &&\n isAckIdValid(packet.id) &&\n isDataValid(packet.type, packet.data));\n}\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n * // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n * console.log(`disconnected due to ${reason}`);\n * });\n */\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n */\n constructor(io, nsp, opts) {\n super();\n /**\n * Whether the socket is currently connected to the server.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.connected); // true\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.connected); // false\n * });\n */\n this.connected = false;\n /**\n * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will\n * be transmitted by the server.\n */\n this.recovered = false;\n /**\n * Buffer for packets received before the CONNECT packet\n */\n this.receiveBuffer = [];\n /**\n * Buffer for packets that will be sent once the socket is connected\n */\n this.sendBuffer = [];\n /**\n * The queue of packets to be sent with retry in case of failure.\n *\n * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order.\n * @private\n */\n this._queue = [];\n /**\n * A sequence to generate the ID of the {@link QueuedPacket}.\n * @private\n */\n this._queueSeq = 0;\n this.ids = 0;\n /**\n * A map containing acknowledgement handlers.\n *\n * The `withError` attribute is used to differentiate handlers that accept an error as first argument:\n *\n * - `socket.emit(\"test\", (err, value) => { ... })` with `ackTimeout` option\n * - `socket.timeout(5000).emit(\"test\", (err, value) => { ... })`\n * - `const value = await socket.emitWithAck(\"test\")`\n *\n * From those that don't:\n *\n * - `socket.emit(\"test\", (value) => { ... });`\n *\n * In the first case, the handlers will be called with an error when:\n *\n * - the timeout is reached\n * - the socket gets disconnected\n *\n * In the second case, the handlers will be simply discarded upon disconnection, since the client will never receive\n * an acknowledgement from the server.\n *\n * @private\n */\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n this._opts = Object.assign({}, opts);\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Whether the socket is currently disconnected\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.disconnected); // false\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.disconnected); // true\n * });\n */\n get disconnected() {\n return !this.connected;\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n *\n * @example\n * const socket = io();\n *\n * console.log(socket.active); // true\n *\n * socket.on(\"disconnect\", (reason) => {\n * if (reason === \"io server disconnect\") {\n * // the disconnection was initiated by the server, you need to manually reconnect\n * console.log(socket.active); // false\n * }\n * // else the socket will automatically try to reconnect\n * console.log(socket.active); // true\n * });\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @example\n * const socket = io({\n * autoConnect: false\n * });\n *\n * socket.connect();\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for {@link connect()}.\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * This method mimics the WebSocket.send() method.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n *\n * @example\n * socket.send(\"hello\");\n *\n * // this is equivalent to\n * socket.emit(\"message\", \"hello\");\n *\n * @return self\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @example\n * socket.emit(\"hello\", \"world\");\n *\n * // all serializable datastructures are supported (no need to call JSON.stringify)\n * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n *\n * // with an acknowledgement from the server\n * socket.emit(\"hello\", \"world\", (val) => {\n * // ...\n * });\n *\n * @return self\n */\n emit(ev, ...args) {\n var _a, _b, _c;\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n }\n args.unshift(ev);\n if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {\n this._addToQueue(args);\n return this;\n }\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = (_b = (_a = this.io.engine) === null || _a === void 0 ? void 0 : _a.transport) === null || _b === void 0 ? void 0 : _b.writable;\n const isConnected = this.connected && !((_c = this.io.engine) === null || _c === void 0 ? void 0 : _c._hasPingExpired());\n const discardPacket = this.flags.volatile && !isTransportWritable;\n if (discardPacket) {\n }\n else if (isConnected) {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n var _a;\n const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n const fn = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, args);\n };\n fn.withError = true;\n this.acks[id] = fn;\n }\n /**\n * Emits an event and waits for an acknowledgement\n *\n * @example\n * // without timeout\n * const response = await socket.emitWithAck(\"hello\", \"world\");\n *\n * // with a specific timeout\n * try {\n * const response = await socket.timeout(1000).emitWithAck(\"hello\", \"world\");\n * } catch (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n *\n * @return a Promise that will be fulfilled when the server acknowledges the event\n */\n emitWithAck(ev, ...args) {\n return new Promise((resolve, reject) => {\n const fn = (arg1, arg2) => {\n return arg1 ? reject(arg1) : resolve(arg2);\n };\n fn.withError = true;\n args.push(fn);\n this.emit(ev, ...args);\n });\n }\n /**\n * Add the packet to the queue.\n * @param args\n * @private\n */\n _addToQueue(args) {\n let ack;\n if (typeof args[args.length - 1] === \"function\") {\n ack = args.pop();\n }\n const packet = {\n id: this._queueSeq++,\n tryCount: 0,\n pending: false,\n args,\n flags: Object.assign({ fromQueue: true }, this.flags),\n };\n args.push((err, ...responseArgs) => {\n if (packet !== this._queue[0]) {\n }\n const hasError = err !== null;\n if (hasError) {\n if (packet.tryCount > this._opts.retries) {\n this._queue.shift();\n if (ack) {\n ack(err);\n }\n }\n }\n else {\n this._queue.shift();\n if (ack) {\n ack(null, ...responseArgs);\n }\n }\n packet.pending = false;\n return this._drainQueue();\n });\n this._queue.push(packet);\n this._drainQueue();\n }\n /**\n * Send the first packet of the queue, and wait for an acknowledgement from the server.\n * @param force - whether to resend a packet that has not been acknowledged yet\n *\n * @private\n */\n _drainQueue(force = false) {\n if (!this.connected || this._queue.length === 0) {\n return;\n }\n const packet = this._queue[0];\n if (packet.pending && !force) {\n return;\n }\n packet.pending = true;\n packet.tryCount++;\n this.flags = packet.flags;\n this.emit.apply(this, packet.args);\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this._sendConnectPacket(data);\n });\n }\n else {\n this._sendConnectPacket(this.auth);\n }\n }\n /**\n * Sends a CONNECT packet to initiate the Socket.IO session.\n *\n * @param data\n * @private\n */\n _sendConnectPacket(data) {\n this.packet({\n type: PacketType.CONNECT,\n data: this._pid\n ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data)\n : data,\n });\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @param description\n * @private\n */\n onclose(reason, description) {\n this.connected = false;\n delete this.id;\n this.emitReserved(\"disconnect\", reason, description);\n this._clearAcks();\n }\n /**\n * Clears the acknowledgement handlers upon disconnection, since the client will never receive an acknowledgement from\n * the server.\n *\n * @private\n */\n _clearAcks() {\n Object.keys(this.acks).forEach((id) => {\n const isBuffered = this.sendBuffer.some((packet) => String(packet.id) === id);\n if (!isBuffered) {\n // note: handlers that do not accept an error as first argument are ignored here\n const ack = this.acks[id];\n delete this.acks[id];\n if (ack.withError) {\n ack.call(this, new Error(\"socket has been disconnected\"));\n }\n }\n });\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n this.onconnect(packet.data.sid, packet.data.pid);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n if (this._pid && args.length && typeof args[args.length - 1] === \"string\") {\n this._lastOffset = args[args.length - 1];\n }\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowledgement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (typeof ack !== \"function\") {\n return;\n }\n delete this.acks[packet.id];\n // @ts-ignore FIXME ack is incorrectly inferred as 'never'\n if (ack.withError) {\n packet.data.unshift(null);\n }\n // @ts-ignore\n ack.apply(this, packet.data);\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id, pid) {\n this.id = id;\n this.recovered = pid && this._pid === pid;\n this._pid = pid; // defined only if connection state recovery is enabled\n this.connected = true;\n this.emitBuffered();\n this._drainQueue(true);\n this.emitReserved(\"connect\");\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n });\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n *\n * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"disconnect\", (reason) => {\n * // console.log(reason); prints \"io client disconnect\"\n * });\n *\n * socket.disconnect();\n *\n * @return self\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for {@link disconnect()}.\n *\n * @return self\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @example\n * socket.compress(false).emit(\"hello\");\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @example\n * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n *\n * @returns self\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * @example\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n *\n * @returns self\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @example\n * socket.onAny((event, ...args) => {\n * console.log(`got ${event}`);\n * });\n *\n * @param listener\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @example\n * socket.prependAny((event, ...args) => {\n * console.log(`got event ${event}`);\n * });\n *\n * @param listener\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`got event ${event}`);\n * }\n *\n * socket.onAny(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAny(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAny();\n *\n * @param listener\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.onAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n onAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.prependAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n prependAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`sent event ${event}`);\n * }\n *\n * socket.onAnyOutgoing(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAnyOutgoing(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAnyOutgoing();\n *\n * @param [listener] - the catch-all listener (optional)\n */\n offAnyOutgoing(listener) {\n if (!this._anyOutgoingListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyOutgoingListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyOutgoingListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAnyOutgoing() {\n return this._anyOutgoingListeners || [];\n }\n /**\n * Notify the listeners for each packet sent\n *\n * @param packet\n *\n * @private\n */\n notifyOutgoingListeners(packet) {\n if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n const listeners = this._anyOutgoingListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, packet.data);\n }\n }\n }\n}\n","/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nexport function Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n this.jitter = jitter;\n};\n","import { Socket as Engine, installTimerFunctions, nextTick, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Backoff } from \"./contrib/backo2.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n if (!v) {\n this.skipReconnect = true;\n }\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n const onError = (err) => {\n this.cleanup();\n this._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n this.maybeReconnectOnOpen();\n }\n };\n // emit `error`\n const errorSub = on(socket, \"error\", onError);\n if (false !== this._timeout) {\n const timeout = this._timeout;\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n onError(new Error(\"timeout\"));\n socket.close();\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), \n // @ts-ignore\n on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n try {\n this.decoder.add(data);\n }\n catch (e) {\n this.onclose(\"parse error\", e);\n }\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n nextTick(() => {\n this.emitReserved(\"packet\", packet);\n }, this.setTimeoutFn);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n else if (this._autoConnect && !socket.active) {\n socket.connect();\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called when:\n *\n * - the low-level engine is closed\n * - the parser encountered a badly formatted packet\n * - all sockets are disconnected\n *\n * @private\n */\n onclose(reason, description) {\n var _a;\n this.cleanup();\n (_a = this.engine) === null || _a === void 0 ? void 0 : _a.close();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\nexport { Fetch, NodeXHR, XHR, NodeWebSocket, WebSocket, WebTransport, } from \"engine.io-client\";\n","import { io } from \"socket.io-client\";\n\n/**\n * Creates a socket manager bound to a WebSocket URL.\n *\n * @param {object} options\n * @param {string} options.wsUrl - The WebSocket server URL.\n * @param {Function} options.log - Logger function (e.g. from the provider's debug helper).\n * @returns {{ connectSocket, cleanupSocket, getSocket }}\n */\nexport function createSocketManager({ wsUrl, log }) {\n let socketRef = null;\n\n /**\n * Creates a new Socket.IO connection and returns a Promise that resolves with\n * the socket on the `connect` event, or rejects on `connect_error`.\n *\n * Does NOT register domain-level event handlers (SESSION_READY, AGENT_AUDIO_CHUNK,\n * etc.) — those remain in the provider's `registerSocketHandlers` function.\n *\n * @param {object} options\n * @param {object} options.authPayload - Passed as the `auth` option to socket.io-client.\n * @param {string|null} [options.queryToken] - If provided, passed as `query.token`.\n * @param {boolean} [options.expectReconnectSuccess] - Accepted for API compatibility;\n * reconnect-specific resolution logic (RECONNECT_SUCCESS/RECONNECT_FAILED) stays\n * in the provider / ReconnectionManager.\n * @param {number} [options.timeoutMs] - Accepted for API compatibility; the raw\n * socket timeout is always 20000 ms as required by the transport config.\n * @returns {Promise<import(\"socket.io-client\").Socket>}\n */\n function connectSocket({ authPayload, queryToken, expectReconnectSuccess, timeoutMs }) {\n // Clean up any existing socket before creating a new one.\n cleanupSocket();\n\n return new Promise((resolve, reject) => {\n const socket = io(wsUrl, {\n transports: [\"websocket\", \"polling\"],\n timeout: 20000,\n reconnection: false,\n auth: authPayload,\n query: queryToken ? { token: queryToken } : undefined,\n });\n\n socketRef = socket;\n\n socket.once(\"connect\", () => {\n log(\"SocketManager: socket connected\");\n resolve(socket);\n });\n\n socket.once(\"connect_error\", (error) => {\n log(\"SocketManager: socket connect_error\", error);\n reject(error);\n });\n });\n }\n\n /**\n * Creates a new Socket.IO connection synchronously and returns the socket\n * immediately (before it connects). This allows the caller to register\n * event handlers BEFORE the `connect` event fires, preventing race\n * conditions where early server events (e.g. SESSION_READY) are missed.\n *\n * @param {object} options\n * @param {object} options.authPayload - Passed as the `auth` option to socket.io-client.\n * @param {string|null} [options.queryToken] - If provided, passed as `query.token`.\n * @returns {import(\"socket.io-client\").Socket}\n */\n function connectSocketRaw({ authPayload, queryToken }) {\n const socket = io(wsUrl, {\n transports: [\"websocket\", \"polling\"],\n timeout: 20000,\n reconnection: false,\n auth: authPayload,\n query: queryToken ? { token: queryToken } : undefined,\n });\n\n socketRef = socket;\n return socket;\n }\n\n /**\n * Removes all listeners from the current socket and disconnects it.\n * Sets the internal reference to null.\n */\n function cleanupSocket() {\n if (!socketRef) return;\n try {\n socketRef.removeAllListeners();\n socketRef.disconnect();\n } catch {\n // Best-effort cleanup.\n }\n socketRef = null;\n }\n\n /**\n * Returns the current socket instance, or null if none exists.\n *\n * @returns {import(\"socket.io-client\").Socket | null}\n */\n function getSocket() {\n return socketRef;\n }\n\n return { connectSocket, connectSocketRaw, cleanupSocket, getSocket };\n}\n","const unlockAudioContext = (audioCtx) => {\n window.audioCtx = audioCtx;\n if (audioCtx.state !== \"suspended\") return\n const b = document.body;\n const events = [\"touchstart\", \"touchend\", \"mousedown\", \"keydown\"];\n events.forEach((e) => b.addEventListener(e, unlock, false));\n function unlock() {\n audioCtx.resume().then(clean);\n }\n function clean() {\n // audioCtx.suspend().then(() => {})\n events.forEach((e) => b.removeEventListener(e, unlock));\n }\n};\n\nfunction FUPCMPlayer(option) {\n this.init(option);\n}\n\nFUPCMPlayer.prototype.init = function(option) {\n var defaults = {\n encoding: '16bitInt',\n channels: 1,\n sampleRate: 16000,\n };\n this.option = Object.assign({}, defaults, option);\n this.flush = this.flush.bind(this);\n this.maxValue = this.getMaxValue();\n this.typedArray = this.getTypedArray();\n this.playingBufferNode = null;\n this.scheduledBufferNode = null;\n this.createContext();\n this.resetState();\n};\n\nFUPCMPlayer.prototype.getMaxValue = function () {\n var encodings = {\n '8bitInt': 128,\n '16bitInt': 32768,\n '32bitInt': 2147483648,\n '32bitFloat': 1\n };\n\n return encodings[this.option.encoding] ? encodings[this.option.encoding] : encodings['16bitInt'];\n};\n\nFUPCMPlayer.prototype.getTypedArray = function () {\n var typedArrays = {\n '8bitInt': Int8Array,\n '16bitInt': Int16Array,\n '32bitInt': Int32Array,\n '32bitFloat': Float32Array\n };\n\n return typedArrays[this.option.encoding] ? typedArrays[this.option.encoding] : typedArrays['16bitInt'];\n};\n\nFUPCMPlayer.prototype.createContext = function() {\n this.audioCtx = new (window.AudioContext || window.webkitAudioContext)();\n\n // context needs to be resumed on iOS and Safari (or it will stay in \"suspended\" state)\n this.audioCtx.resume();\n this.audioCtx.onstatechange = () => console.log('audioCtx.state', this.audioCtx.state); // if you want to see \"Running\" state in console and be happy about it\n unlockAudioContext(this.audioCtx);\n\n this.gainNode = this.audioCtx.createGain();\n this.gainNode.gain.value = 1;\n this.gainNode.connect(this.audioCtx.destination);\n this.startTime = this.audioCtx.currentTime;\n};\n\nFUPCMPlayer.prototype.resetState = function() {\n this.playingStartTime = -1;\n this.lastGotTimestamp = 0;\n this.samples = new Float32Array();\n this.timeout = undefined;\n this.flag_request_stop = false;\n this.startTime = 0;\n};\n\nFUPCMPlayer.prototype.isTypedArray = function(data) {\n return (data.byteLength && data.buffer && data.buffer.constructor == ArrayBuffer);\n};\n\nFUPCMPlayer.prototype.feed = function(data) {\n if (!this.isTypedArray(data)) return;\n data = this.getFormatedValue(data);\n var tmp = new Float32Array(this.samples.length + data.length);\n tmp.set(this.samples, 0);\n tmp.set(data, this.samples.length);\n this.samples = tmp;\n if(!this.timeout) {\n this.flush();\n }\n};\n\nFUPCMPlayer.prototype.getFormatedValue = function(data) {\n var data = new this.typedArray(data.buffer),\n float32 = new Float32Array(data.length),\n i;\n\n for (i = 0; i < data.length; i++) {\n float32[i] = data[i] / this.maxValue;\n }\n return float32;\n};\n\nFUPCMPlayer.prototype.volume = function(volume) {\n this.gainNode.gain.value = volume;\n};\n\nFUPCMPlayer.prototype.destroy = function() {\n if (this.interval) {\n clearInterval(this.interval);\n }\n this.samples = null;\n this.audioCtx.close();\n this.audioCtx = null;\n};\n\nFUPCMPlayer.prototype.getTimestamp = function(elapsedMs) {\n if(this.playingStartTime >= 0) {\n if(!elapsedMs) {\n return this.audioCtx.currentTime - this.playingStartTime;\n }\n const ret = this.lastGotTimestamp;\n this.lastGotTimestamp += elapsedMs / 1000;\n return ret;\n }\n return 0;\n};\n\nFUPCMPlayer.prototype.setRequestStop = function() {\n this.flag_request_stop = true;\n};\n\nFUPCMPlayer.prototype.setOnEnd = function(cb) {\n this.onEnd = cb;\n};\n\nFUPCMPlayer.prototype.interrupt = function(cb) {\n this.scheduledBufferNode && this.scheduledBufferNode.stop(0);\n this.playingBufferNode && this.playingBufferNode.stop(0);\n this.ensuredClearTimeout();\n this.resetState();\n this.flag_request_stop = false;\n};\n\n// (即时超过超时时间也)确保会触发\nFUPCMPlayer.prototype.ensuredSetTimeout = (function() {\n let startTimestamp;\n return function(fn, timeout) {\n startTimestamp = performance.now();\n const checker = (timestamp) => {\n if(timestamp - startTimestamp >= timeout) {\n this.timeout = undefined;\n fn();\n } else {\n this.timeout = requestAnimationFrame(checker);\n }\n };\n this.timeout = requestAnimationFrame(checker);\n }\n})();\n\nFUPCMPlayer.prototype.ensuredClearTimeout = function() {\n if(this.timeout) {\n cancelAnimationFrame(this.timeout);\n this.timeout = undefined;\n }\n};\n\nFUPCMPlayer.prototype.flush = function() {\n if (!this.samples.length) return;\n \n var bufferSource = this.audioCtx.createBufferSource(),\n length = this.samples.length / this.option.channels,\n audioBuffer = this.audioCtx.createBuffer(this.option.channels, length, this.option.sampleRate),\n audioData,\n channel,\n offset,\n i,\n decrement;\n\n for (channel = 0; channel < this.option.channels; channel++) {\n audioData = audioBuffer.getChannelData(channel);\n offset = channel;\n decrement = 50;\n for (i = 0; i < length; i++) {\n audioData[i] = this.samples[offset];\n /* fadein */\n if (i < 50) {\n audioData[i] = (audioData[i] * i) / 50;\n }\n /* fadeout*/\n if (i >= (length - 51)) {\n audioData[i] = (audioData[i] * decrement--) / 50;\n }\n offset += this.option.channels;\n }\n }\n if (this.startTime < this.audioCtx.currentTime) {\n this.startTime = this.audioCtx.currentTime;\n }\n this.samples = new Float32Array();\n \n bufferSource.buffer = audioBuffer;\n bufferSource.connect(this.gainNode);\n\n bufferSource.start(this.startTime);\n this.playingBufferNode = this.scheduledBufferNode;\n this.scheduledBufferNode = bufferSource;\n if(this.playingStartTime < 0) {\n this.playingStartTime = this.startTime;\n }\n this.startTime += audioBuffer.duration;\n \n if(!this.flag_request_stop) {\n const nextTimeGap = (this.startTime - this.audioCtx.currentTime)*1000;\n this.ensuredSetTimeout(this.flush, nextTimeGap - 50);\n } else {\n this.flag_request_stop = false;\n bufferSource.onended = () => {\n this.resetState();\n this.onEnd && this.onEnd();\n };\n }\n};\n\nexport { FUPCMPlayer };\n","/**\n * AudioManager — encapsulates PCM player lifecycle and audio playback.\n *\n * This module is framework-agnostic: it does not import React or manage React\n * state. The `onPlaybackComplete` callback is the only channel back to the\n * provider, which uses it to update state and emit the\n * `AUDIO_PLAYBACK_COMPLETE` socket event.\n */\n\nimport { FUPCMPlayer } from 'pcm-stream-player';\nimport { DEFAULT_PCM_OPTIONS } from '../constants';\n\n/**\n * Wraps `FUPCMPlayer` with:\n * - An idempotent `destroy()` that tracks a destroyed flag and swallows\n * library-internal race-condition errors.\n * - A `_isDestroyed()` introspection helper.\n * - An `onEnd` callback wired via `setOnEnd`.\n *\n * @param {object} pcmOptions Options forwarded to `FUPCMPlayer`.\n * @param {Function} [onEnd] Called when the player finishes playback.\n * @returns {FUPCMPlayer}\n */\nexport function createPcmPlayer(pcmOptions, onEnd) {\n const player = new FUPCMPlayer(pcmOptions);\n const originalDestroy = player.destroy.bind(player);\n let isDestroyed = false;\n\n player.destroy = () => {\n if (isDestroyed) return;\n isDestroyed = true;\n try {\n originalDestroy();\n } catch {\n // Ignore library destroy race conditions.\n }\n };\n\n player.setOnEnd(() => {\n if (!isDestroyed) {\n onEnd?.();\n }\n });\n\n player._isDestroyed = () => isDestroyed;\n return player;\n}\n\n/**\n * Factory that creates an audio manager object.\n *\n * @param {object} options\n * @param {boolean} options.enableAudio Whether audio playback is enabled.\n * @param {object} [options.pcmOptions] PCM player options (merged with defaults).\n * @param {Function} [options.log] Logger function.\n * @param {Function} [options.onPlaybackComplete] Called when playback ends or on feed/stop failure.\n * @returns {{\n * ensurePcmPlayer: () => FUPCMPlayer | null,\n * destroyPcmPlayer: () => void,\n * feedAudio: (audioData: Uint8Array) => void,\n * requestStop: () => void,\n * interruptPlayback: () => void,\n * resumeAudioPlayback: () => Promise<void>,\n * attachAudioElement: (element: HTMLAudioElement | null) => void,\n * getAudioElement: () => HTMLAudioElement | null,\n * isDestroyed: () => boolean,\n * }}\n */\nexport function createAudioManager({ enableAudio, pcmOptions, log, onPlaybackComplete }) {\n const noop = () => {};\n const _log = typeof log === 'function' ? log : noop;\n\n /** @type {FUPCMPlayer | null} */\n let playerRef = null;\n\n /** @type {HTMLAudioElement | null} */\n let audioElementRef = null;\n\n // ─── Internal helpers ────────────────────────────────────────────────────\n\n /**\n * Lazily creates the PCM player if audio is enabled and no player exists.\n * Returns the existing or newly created player, or null if audio is disabled.\n *\n * @returns {FUPCMPlayer | null}\n */\n function ensurePcmPlayer() {\n if (!enableAudio || playerRef) return playerRef;\n\n const options = { ...DEFAULT_PCM_OPTIONS, ...(pcmOptions || {}) };\n playerRef = createPcmPlayer(options, () => {\n onPlaybackComplete?.();\n });\n return playerRef;\n }\n\n /**\n * Safely interrupts and destroys the current player, handling race\n * conditions. Sets the internal ref to null afterwards.\n */\n function destroyPcmPlayer() {\n if (!playerRef) return;\n try {\n playerRef.interrupt?.();\n playerRef.destroy?.();\n } catch {\n // Ignore cleanup errors from library internals.\n }\n playerRef = null;\n }\n\n // ─── Public API ──────────────────────────────────────────────────────────\n\n /**\n * Feeds a Uint8Array of PCM audio data to the player.\n * On failure, calls `onPlaybackComplete` so the termination flow is not\n * blocked.\n *\n * @param {Uint8Array} audioData\n */\n function feedAudio(audioData) {\n const player = ensurePcmPlayer();\n if (!player) return;\n\n try {\n player.feed(audioData);\n } catch (error) {\n _log('feedAudio: player.feed() failed', error);\n onPlaybackComplete?.();\n }\n }\n\n /**\n * Signals the player to stop after the current buffer drains.\n * On failure, calls `onPlaybackComplete` so the termination flow is not\n * blocked.\n */\n function requestStop() {\n if (!playerRef) return;\n try {\n playerRef.setRequestStop();\n } catch (error) {\n _log('requestStop: setRequestStop() failed', error);\n onPlaybackComplete?.();\n }\n }\n\n /**\n * Immediately destroys the player, interrupting any in-progress playback.\n */\n function interruptPlayback() {\n destroyPcmPlayer();\n }\n\n /**\n * Resumes a suspended AudioContext (required after a user-gesture gate in\n * some browsers).\n *\n * @returns {Promise<void>}\n */\n async function resumeAudioPlayback() {\n const player = ensurePcmPlayer();\n if (!player) return;\n\n try {\n if (player.audioCtx?.state === 'suspended') {\n await player.audioCtx.resume();\n }\n } catch (error) {\n _log('resumeAudioPlayback: audioCtx.resume() failed', error);\n }\n }\n\n /**\n * Stores a reference to an external `<audio>` element.\n *\n * @param {HTMLAudioElement | null} element\n */\n function attachAudioElement(element) {\n audioElementRef = element || null;\n }\n\n /**\n * Returns the currently attached `<audio>` element, or null.\n *\n * @returns {HTMLAudioElement | null}\n */\n function getAudioElement() {\n return audioElementRef;\n }\n\n /**\n * Returns true if the player has been destroyed or does not exist.\n *\n * @returns {boolean}\n */\n function isDestroyed() {\n if (!playerRef) return true;\n return playerRef._isDestroyed?.() ?? true;\n }\n\n return {\n ensurePcmPlayer,\n destroyPcmPlayer,\n feedAudio,\n requestStop,\n interruptPlayback,\n resumeAudioPlayback,\n attachAudioElement,\n getAudioElement,\n isDestroyed,\n };\n}\n","import { sleep } from '../utils';\nimport { DEFAULT_RECONNECT_OPTIONS } from '../constants';\n\n/**\n * Creates a reconnection manager that handles exponential backoff reconnection\n * with credential management.\n *\n * @param {object} params\n * @param {Function} params.log - Logging function\n * @param {object} params.reconnectOptions - Reconnection configuration options\n * @returns {object} Reconnection manager instance\n */\nexport function createReconnectionManager({ log, reconnectOptions }) {\n let credential = null;\n let reconnecting = false;\n let aborted = false;\n\n const options = {\n ...DEFAULT_RECONNECT_OPTIONS,\n ...(reconnectOptions || {}),\n };\n\n /**\n * Stores reconnect credential if all required fields are present and non-empty.\n * @param {object} payload - Credential payload\n * @param {string} payload.sessionId\n * @param {string} payload.reconnectToken\n * @param {string} payload.role\n */\n const storeCredential = (payload) => {\n if (!payload?.sessionId || !payload?.reconnectToken || !payload?.role) {\n return;\n }\n credential = {\n sessionId: payload.sessionId,\n reconnectToken: payload.reconnectToken,\n role: payload.role,\n };\n };\n\n /**\n * Returns the stored credential or null if none is stored.\n * @returns {{ sessionId: string, reconnectToken: string, role: string } | null}\n */\n const getCredential = () => credential;\n\n /**\n * Clears the stored credential.\n */\n const clearCredential = () => {\n credential = null;\n };\n\n /**\n * Attempts reconnection with exponential backoff.\n *\n * @param {object} params\n * @param {Function} params.connectSocket - Called with credential to attempt connection\n * @param {Function} params.onAttempt - Called with attempt number at start of each attempt\n * @param {Function} params.onSuccess - Called when reconnection succeeds\n * @param {Function} params.onFailure - Called with error message when reconnection fails\n * @param {Function} params.isAborted - Returns true if reconnection should be aborted\n * @returns {Promise<void>}\n */\n const tryReconnect = async ({ connectSocket, onAttempt, onSuccess, onFailure, isAborted }) => {\n if (reconnecting) return;\n\n if (!credential) {\n onFailure('Reconnect token unavailable. Please initialize a new session.');\n return;\n }\n\n reconnecting = true;\n aborted = false;\n\n for (let attempt = 1; attempt <= options.maxAttempts; attempt += 1) {\n if (isAborted?.() || aborted) {\n reconnecting = false;\n return;\n }\n\n onAttempt?.(attempt);\n\n try {\n await connectSocket({\n authPayload: {\n reconnectToken: credential.reconnectToken,\n sessionId: credential.sessionId,\n role: credential.role,\n },\n expectReconnectSuccess: true,\n });\n\n reconnecting = false;\n onSuccess?.();\n return;\n } catch (error) {\n log?.(`reconnect attempt ${attempt} failed`, error);\n\n const delay = Math.min(\n options.maxDelayMs,\n options.initialDelayMs * 2 ** (attempt - 1),\n );\n\n await sleep(delay);\n }\n }\n\n reconnecting = false;\n onFailure('Reconnect window expired. Please initialize a new session.');\n };\n\n /**\n * Aborts an in-progress reconnection loop.\n */\n const abort = () => {\n aborted = true;\n };\n\n /**\n * Returns whether a reconnection attempt is currently in progress.\n * @returns {boolean}\n */\n const isReconnecting = () => reconnecting;\n\n /**\n * Merges new options into the reconnect configuration.\n * @param {object} newOptions - Options to merge\n */\n const updateOptions = (newOptions) => {\n Object.assign(options, newOptions);\n };\n\n return {\n storeCredential,\n getCredential,\n clearCredential,\n tryReconnect,\n abort,\n isReconnecting,\n updateOptions,\n };\n}\n","/**\n * SessionManager — encapsulates REST API calls for session initialization and joining.\n *\n * Extracted from RqmiiAgentContext.jsx.\n * Requirements: 6.1, 6.2, 6.4, 6.5\n */\n\n/**\n * Detects the client's local timezone using the Intl API.\n *\n * @returns {string|undefined} IANA timezone string (e.g. \"America/New_York\") or undefined if unavailable.\n */\nexport const detectClientTimezone = () => {\n try {\n const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n return typeof timezone === \"string\" && timezone.trim()\n ? timezone.trim()\n : undefined;\n } catch {\n return undefined;\n }\n};\n\n/**\n * Normalizes a non-ok HTTP response into a thrown Error.\n *\n * Attempts to parse the response body as JSON and extract a `detail` or `message`\n * field for the error message. Falls back to \"HTTP <status>\" if parsing fails.\n * Sets `error.status` to the HTTP status code so callers can detect specific codes\n * (e.g. 402 for credit exhaustion).\n *\n * @param {Response} response - The fetch Response object.\n * @returns {Promise<any>} Resolves with parsed JSON body if response is ok; otherwise throws.\n * @throws {Error} With `error.status` set to the HTTP status code.\n */\nexport const normalizeServerError = async (response) => {\n if (!response?.ok) {\n let detail = `HTTP ${response.status}`;\n try {\n const data = await response.json();\n detail = data?.detail || data?.message || detail;\n } catch {\n // Keep fallback detail.\n }\n const error = new Error(detail);\n error.status = response.status;\n throw error;\n }\n return response.json();\n};\n\n/**\n * Creates a SessionManager bound to the given configuration.\n *\n * The session manager performs HTTP calls and response normalization only.\n * It does NOT manage React state — callers are responsible for handling\n * the returned data or thrown errors.\n *\n * @param {object} options\n * @param {string} options.restUrl - Base REST API URL (e.g. \"https://api.example.com\").\n * @param {Function} [options.log] - Optional logging function.\n * @returns {{ initializeSession: Function, joinDesktopSession: Function }}\n */\nexport function createSessionManager({ restUrl, log = () => {} }) {\n /**\n * Validates that restUrl is configured before making any API call.\n * Throws synchronously if missing.\n */\n const assertRestUrl = () => {\n if (!restUrl) {\n throw new Error(\"Missing restUrl in RqmiiAgentProvider\");\n }\n };\n\n /**\n * Initializes a new agent session via REST POST to `/sessions/init`.\n *\n * Sends the provided credentials/identifiers and returns the parsed response.\n * Throws on HTTP errors, including HTTP 402 (credit exhaustion) with `error.status = 402`.\n * Throws if the response is missing `session_id` or `session_token`.\n *\n * @param {object} params\n * @param {string} [params.apiKey] - API key for authentication.\n * @param {string} [params.publicChatId] - Public chat ID for authentication.\n * @param {string} [params.agentId] - Agent ID for authentication.\n * @param {string} [params.language] - Session language code (e.g. \"en\").\n * @returns {Promise<object>} Parsed response body containing at minimum `session_id` and `session_token`.\n * @throws {Error} On HTTP error or missing required response fields.\n */\n const initializeSession = async ({\n apiKey,\n publicChatId,\n agentId,\n language = \"en\",\n } = {}) => {\n assertRestUrl();\n\n const payload = {\n ...(apiKey ? { api_key: apiKey } : {}),\n ...(publicChatId ? { public_chat_id: publicChatId } : {}),\n ...(agentId ? { agent_id: agentId } : {}),\n language,\n };\n\n log(\"initializeSession — POST /sessions/init\", payload);\n\n const response = await fetch(`${restUrl}/sessions/init`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(payload),\n });\n\n const data = await normalizeServerError(response);\n\n if (!data?.session_id || !data?.session_token) {\n throw new Error(\"Invalid initialize session response\");\n }\n\n return data;\n };\n\n /**\n * Joins an existing desktop avatar session via REST POST to `/sessions/join`.\n *\n * Sends the `unique_id` of the desktop session and returns the parsed response.\n * Throws on HTTP errors, including HTTP 402 (credit exhaustion) with `error.status = 402`.\n * Throws if the response is missing `session_id` or `session_token`.\n *\n * @param {object} params\n * @param {string} params.uniqueId - The unique identifier of the desktop session to join.\n * @returns {Promise<object>} Parsed response body containing at minimum `session_id` and `session_token`.\n * @throws {Error} On HTTP error or missing required response fields.\n */\n const joinDesktopSession = async ({ uniqueId }) => {\n assertRestUrl();\n\n log(\"joinDesktopSession — POST /sessions/join\", { uniqueId });\n\n const response = await fetch(`${restUrl}/sessions/join`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ unique_id: uniqueId }),\n });\n\n const data = await normalizeServerError(response);\n\n if (!data?.session_id || !data?.session_token) {\n throw new Error(\"Invalid join session response\");\n }\n\n return data;\n };\n\n return {\n initializeSession,\n joinDesktopSession,\n };\n}\n","import {\n CLOUD_STREAM_STATE,\n CONNECTION_STATE,\n SESSION_STATE,\n} from '../constants';\n\nexport const DEFAULT_STATE = {\n connectionState: CONNECTION_STATE.IDLE,\n isConnected: false,\n isSessionReady: false,\n error: null,\n reconnectAttempt: 0,\n isAudioPlaying: false,\n isAvatarSpeaking: false,\n lastHeartbeatAck: null,\n sessionState: SESSION_STATE.IDLE,\n cloudStream: {\n state: CLOUD_STREAM_STATE.IDLE,\n error: null,\n },\n transcript: null,\n partialTranscript: null,\n session: {\n sessionId: null,\n role: null,\n agentType: null,\n streamingUrl: null,\n uniqueId: null,\n },\n messages: [],\n creditExhausted: false,\n creditError: null,\n};\n\n/**\n * Updates connectionState and derives isConnected.\n * @param {Function} setState - React state setter\n * @param {string} connectionState - A CONNECTION_STATE enum value\n */\nexport function setConnectionState(setState, connectionState) {\n setState((prev) => ({\n ...prev,\n connectionState,\n isConnected: connectionState === CONNECTION_STATE.CONNECTED,\n }));\n}\n\n/**\n * Updates the error field (converts to string or null).\n * @param {Function} setState - React state setter\n * @param {*} error - Error value or null/undefined to clear\n */\nexport function setError(setState, error) {\n setState((prev) => ({\n ...prev,\n error: error ? String(error) : null,\n }));\n}\n\n/**\n * Updates the cloudStream object.\n * @param {Function} setState - React state setter\n * @param {string} nextState - A CLOUD_STREAM_STATE enum value\n * @param {*} [error] - Optional error value\n */\nexport function setCloudStreamState(setState, nextState, error = null) {\n setState((prev) => ({\n ...prev,\n cloudStream: {\n state: nextState,\n error: error ? String(error) : null,\n },\n }));\n}\n\n/**\n * Updates the sessionState field.\n * @param {Function} setState - React state setter\n * @param {string} newState - A SESSION_STATE enum value\n */\nexport function setSessionState(setState, newState) {\n setState((prev) => ({\n ...prev,\n sessionState: newState,\n }));\n}\n\n/**\n * Merges a patch into the session object.\n * @param {Function} setState - React state setter\n * @param {Object} sessionPatch - Partial session fields to merge\n */\nexport function updateSession(setState, sessionPatch) {\n setState((prev) => ({\n ...prev,\n session: {\n ...prev.session,\n ...sessionPatch,\n },\n }));\n}\n\n/**\n * Appends a message to the messages array.\n * @param {Function} setState - React state setter\n * @param {Object} message - Message object to append\n */\nexport function addMessage(setState, message) {\n setState((prev) => ({\n ...prev,\n messages: [...prev.messages, message],\n }));\n}\n\n/**\n * Updates the isAudioPlaying field.\n * @param {Function} setState - React state setter\n * @param {boolean} isPlaying - Whether audio is playing\n */\nexport function setAudioPlaying(setState, isPlaying) {\n setState((prev) => ({\n ...prev,\n isAudioPlaying: isPlaying,\n }));\n}\n\n/**\n * Updates the isAvatarSpeaking field.\n * @param {Function} setState - React state setter\n * @param {boolean} isSpeaking - Whether the avatar is speaking\n */\nexport function setAvatarSpeaking(setState, isSpeaking) {\n setState((prev) => ({\n ...prev,\n isAvatarSpeaking: isSpeaking,\n }));\n}\n\n/**\n * Updates creditExhausted and creditError fields.\n * @param {Function} setState - React state setter\n * @param {boolean} exhausted - Whether credits are exhausted\n * @param {*} [errorMsg] - Optional error message\n */\nexport function setCreditExhausted(setState, exhausted, errorMsg = null) {\n setState((prev) => ({\n ...prev,\n creditExhausted: exhausted,\n creditError: errorMsg ? String(errorMsg) : null,\n }));\n}\n\n/**\n * Resets state to DEFAULT_STATE.\n * @param {Function} setState - React state setter\n */\nexport function hardReset(setState) {\n setState(DEFAULT_STATE);\n}\n\n/**\n * Derives session boolean flags from a SESSION_STATE enum value.\n * @param {string} sessionState - A SESSION_STATE enum value\n * @returns {{ isSessionTerminated: boolean, isSessionTerminating: boolean, isAgentThinking: boolean, isAgentSpeaking: boolean, isToolExecuting: boolean }}\n */\nexport function deriveSessionBooleans(sessionState) {\n return {\n isSessionTerminated: sessionState === SESSION_STATE.TERMINATED,\n isSessionTerminating: sessionState === SESSION_STATE.TERMINATING,\n isAgentThinking: sessionState === SESSION_STATE.AGENT_THINKING,\n isAgentSpeaking: sessionState === SESSION_STATE.AGENT_SPEAKING,\n isToolExecuting: sessionState === SESSION_STATE.TOOL_EXECUTING,\n };\n}\n","import { SOCKET_EVENTS } from '../constants';\n\n/**\n * Creates a heartbeat manager that periodically emits a heartbeat event on a socket.\n *\n * @param {object} options\n * @param {number} options.intervalMs - Interval in milliseconds between heartbeat emissions.\n * @param {Function} [options.log] - Optional logging function.\n * @returns {{ start: (socket: object) => void, stop: () => void, isRunning: () => boolean }}\n */\nexport function createHeartbeatManager({ intervalMs, log }) {\n let timerId = null;\n\n /**\n * Starts the heartbeat interval on the given socket.\n * Clears any existing interval before starting a new one.\n *\n * @param {object} socket - The socket.io socket instance to emit heartbeats on.\n */\n function start(socket) {\n // Clear any existing interval before starting a new one.\n if (timerId !== null) {\n clearInterval(timerId);\n timerId = null;\n }\n\n log?.('[HeartbeatManager] starting heartbeat, intervalMs:', intervalMs);\n\n timerId = setInterval(() => {\n if (socket) {\n socket.emit(SOCKET_EVENTS.HEARTBEAT, {});\n }\n }, intervalMs);\n }\n\n /**\n * Stops the heartbeat interval.\n */\n function stop() {\n if (timerId !== null) {\n log?.('[HeartbeatManager] stopping heartbeat');\n clearInterval(timerId);\n timerId = null;\n }\n }\n\n /**\n * Returns whether the heartbeat interval is currently active.\n *\n * @returns {boolean}\n */\n function isRunning() {\n return timerId !== null;\n }\n\n return { start, stop, isRunning };\n}\n","import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { AGENT_TYPES, CLOUD_STREAM_STATE, CONNECTION_STATE, SOCKET_EVENTS } from \"./constants\";\nimport { createResponseChunkAccumulator, sanitizeAgentType, toUint8Array } from \"./utils\";\nimport { createSocketManager } from \"./core/SocketManager\";\nimport { createAudioManager } from \"./core/AudioManager\";\nimport { createReconnectionManager } from \"./core/ReconnectionManager\";\nimport { createSessionManager, detectClientTimezone } from \"./core/SessionManager\";\nimport * as SM from \"./core/StateManager\";\nimport { createHeartbeatManager } from \"./core/HeartbeatManager\";\n\nconst RqmiiAgentContext = createContext(null);\n\nexport function RqmiiAgentProvider({\n children, wsUrl, restUrl, reconnectOptions, enableAudio = true, pcmOptions,\n debug = false, heartbeatIntervalSeconds = 15,\n onSessionExpired, onSessionTerminated, onError, onDisconnect, onReconnectSuccess, onReconnectFailed,\n}) {\n const [state, setState] = useState(SM.DEFAULT_STATE);\n\n const manualDisconnectRef = useRef(false);\n const chunkAccumulatorRef = useRef(createResponseChunkAccumulator());\n const sessionIdRef = useRef(null);\n const sessionAgentTypeRef = useRef(SM.DEFAULT_STATE.session.agentType);\n const interruptedRef = useRef(false);\n\n const cbRefs = useRef({ onSessionExpired, onSessionTerminated, onError, onDisconnect, onReconnectSuccess, onReconnectFailed });\n useEffect(() => { cbRefs.current = { onSessionExpired, onSessionTerminated, onError, onDisconnect, onReconnectSuccess, onReconnectFailed }; }, [onSessionExpired, onSessionTerminated, onError, onDisconnect, onReconnectSuccess, onReconnectFailed]);\n\n useEffect(() => { sessionAgentTypeRef.current = state.session.agentType; }, [state.session.agentType]);\n useEffect(() => { sessionIdRef.current = state.session.sessionId; }, [state.session.sessionId]);\n\n const log = useCallback((...args) => { if (debug) console.log(\"[RqmiiSDK]\", ...args); }, [debug]);\n\n const socketMgrRef = useRef(null);\n const audioMgrRef = useRef(null);\n const reconnectMgrRef = useRef(null);\n const sessionMgrRef = useRef(null);\n const heartbeatMgrRef = useRef(null);\n\n if (!socketMgrRef.current) socketMgrRef.current = createSocketManager({ wsUrl, log });\n if (!audioMgrRef.current) {\n audioMgrRef.current = createAudioManager({\n enableAudio, pcmOptions, log,\n onPlaybackComplete: () => {\n SM.setAudioPlaying(setState, false);\n const s = socketMgrRef.current.getSocket();\n if (s?.connected) s.emit(SOCKET_EVENTS.AUDIO_PLAYBACK_COMPLETE, { session_id: sessionIdRef.current });\n },\n });\n }\n if (!reconnectMgrRef.current) reconnectMgrRef.current = createReconnectionManager({ log, reconnectOptions });\n if (!sessionMgrRef.current) sessionMgrRef.current = createSessionManager({ restUrl, log });\n if (!heartbeatMgrRef.current) heartbeatMgrRef.current = createHeartbeatManager({ intervalMs: heartbeatIntervalSeconds * 1000, log });\n\n const registerSocketHandlers = useCallback((socket) => {\n const S = SOCKET_EVENTS;\n const hb = heartbeatMgrRef.current;\n const audio = audioMgrRef.current;\n\n socket.on(S.DISCONNECT, (reason) => {\n log(\"socket disconnected\", reason);\n setState((p) => ({ ...p, isConnected: false, isSessionReady: false }));\n hb.stop();\n cbRefs.current.onDisconnect?.(reason);\n if (manualDisconnectRef.current) return;\n if (reconnectOptions?.enabled !== false) {\n SM.setConnectionState(setState, CONNECTION_STATE.RECONNECTING);\n } else {\n SM.setConnectionState(setState, CONNECTION_STATE.FAILED);\n SM.setError(setState, \"Connection lost\");\n }\n });\n\n socket.on(S.SESSION_READY, (payload) => {\n setState((p) => ({ ...p, isSessionReady: true, error: null, session: { ...p.session, agentType: sanitizeAgentType(payload?.agentType || p.session.agentType) } }));\n hb.start(socket);\n });\n socket.on(S.SESSION_JOINED, () => { setState((p) => ({ ...p, isSessionReady: true, error: null })); hb.start(socket); });\n socket.on(S.SESSION_TERMINATED, () => { SM.setConnectionState(setState, CONNECTION_STATE.ENDED); setState((p) => ({ ...p, isSessionReady: false })); hb.stop(); cbRefs.current.onSessionTerminated?.(); });\n\n socket.on(S.TRANSCRIPT, (payload) => {\n setState((p) => {\n const next = { ...p, transcript: payload || null };\n if (payload?.is_final && payload?.text?.trim()) next.messages = [...p.messages, { id: `transcript-${Date.now()}`, role: \"user\", text: payload.text.trim(), timestamp: new Date().toISOString() }];\n return next;\n });\n });\n socket.on(S.PARTIAL_TRANSCRIPT, (payload) => setState((p) => ({ ...p, partialTranscript: payload || null })));\n\n socket.on(S.AGENT_RESPONSE_CHUNK, (payload) => {\n const { id, text } = chunkAccumulatorRef.current.addChunk(payload?.requestId, payload?.text);\n setState((p) => ({ ...p, messages: [...p.messages.filter((m) => m.id !== id), { id, role: \"assistant\", text, streaming: true, timestamp: new Date().toISOString() }] }));\n });\n socket.on(S.AGENT_RESPONSE, (payload) => {\n const { id, text } = chunkAccumulatorRef.current.consume(payload?.requestId, payload?.text);\n setState((p) => ({ ...p, messages: [...p.messages.filter((m) => m.id !== id), { id, role: \"assistant\", text, streaming: false, timestamp: new Date().toISOString() }] }));\n });\n\n socket.on(S.AVATAR_SPEAKING, () => SM.setAvatarSpeaking(setState, true));\n socket.on(S.AVATAR_SPEAKING_DONE, () => SM.setAvatarSpeaking(setState, false));\n\n socket.on(S.AGENT_AUDIO_CHUNK, (payload) => {\n if (!enableAudio || interruptedRef.current) return;\n const at = sanitizeAgentType(sessionAgentTypeRef.current);\n if (at === AGENT_TYPES.CLOUD_AVATAR || at === AGENT_TYPES.DESKTOP_AVATAR) return;\n const audioData = toUint8Array(payload?.audio);\n if (!audioData) return;\n audio.feedAudio(audioData);\n SM.setAudioPlaying(setState, true);\n });\n\n socket.on(S.AGENT_AUDIO_COMPLETE, () => {\n if (!enableAudio) return;\n const at = sanitizeAgentType(sessionAgentTypeRef.current);\n if (at === AGENT_TYPES.CLOUD_AVATAR || at === AGENT_TYPES.DESKTOP_AVATAR) return;\n audio.requestStop();\n });\n\n socket.on(S.INTERRUPTED, () => {\n const wasPlaying = !audio.isDestroyed();\n interruptedRef.current = false;\n audio.interruptPlayback();\n SM.setAudioPlaying(setState, false);\n if (wasPlaying && socket.connected) socket.emit(S.AUDIO_PLAYBACK_COMPLETE, { session_id: sessionIdRef.current });\n });\n\n socket.on(S.HEARTBEAT_ACK, (payload) => { log(\"heartbeat ack\", payload?.timestamp); setState((p) => ({ ...p, lastHeartbeatAck: payload?.timestamp ?? null })); });\n\n const storeAndUpdateSession = (payload) => {\n reconnectMgrRef.current.storeCredential(payload);\n if (payload?.sessionId && payload?.role) SM.updateSession(setState, { sessionId: payload.sessionId, role: payload.role });\n };\n socket.on(S.RECONNECT_CREDENTIAL, (payload) => { log(\"received reconnect credential\"); storeAndUpdateSession(payload); });\n socket.on(S.RECONNECT_SUCCESS, (payload) => {\n storeAndUpdateSession(payload);\n setState((p) => ({ ...p, reconnectAttempt: 0, isSessionReady: true }));\n SM.setConnectionState(setState, CONNECTION_STATE.CONNECTED);\n cbRefs.current.onReconnectSuccess?.(payload);\n });\n\n socket.on(S.RECONNECT_FAILED, (payload) => { log(\"reconnect failed\", payload); SM.setConnectionState(setState, CONNECTION_STATE.FAILED); SM.setError(setState, payload?.reason || \"Reconnect failed\"); cbRefs.current.onReconnectFailed?.(payload); });\n socket.on(S.AUTH_ERROR, (payload) => { SM.setConnectionState(setState, CONNECTION_STATE.FAILED); SM.setError(setState, payload?.message || \"Authentication error\"); });\n\n socket.on(S.ERROR, (payload) => {\n const code = payload?.code;\n if (code === \"TTS_ERROR\") { log(\"non-fatal TTS error\", payload); return; }\n if (code === \"INSUFFICIENT_CREDITS\") { SM.setCreditExhausted(setState, true, payload?.message || \"Insufficient credits to process this request.\"); cbRefs.current.onError?.(payload); return; }\n SM.setError(setState, payload?.message || payload?.detail || \"Server error\");\n cbRefs.current.onError?.(payload);\n });\n\n socket.on(S.SESSION_EXPIRED, (payload) => { log(\"session expired\", payload); SM.setConnectionState(setState, CONNECTION_STATE.ENDED); setState((p) => ({ ...p, isSessionReady: false })); hb.stop(); cbRefs.current.onSessionExpired?.(payload); });\n\n socket.on(S.CREDITS_EXHAUSTED, () => {\n log(\"credits exhausted — disconnecting\");\n setState((p) => ({ ...p, creditExhausted: true, creditError: \"This project has run out of credits.\", isSessionReady: false }));\n SM.setConnectionState(setState, CONNECTION_STATE.ENDED);\n hb.stop();\n manualDisconnectRef.current = true;\n try { socket.disconnect(); } catch { /* best-effort */ }\n });\n\n socket.on(S.SESSION_STATE_CHANGED, (payload) => {\n if (!payload?.state) return;\n log(\"session state changed\", payload?.previous_state, \"→\", payload.state);\n SM.setSessionState(setState, payload.state);\n });\n }, [enableAudio, log]);\n\n const connectSocket = useCallback(\n ({ authPayload, queryToken, expectReconnectSuccess = false }) =>\n new Promise((resolve, reject) => {\n // Clean up any existing socket before creating a new one.\n socketMgrRef.current.cleanupSocket();\n\n // Create the raw socket via the manager's internal io() call, but\n // register domain handlers BEFORE the socket connects so we never\n // miss early events like SESSION_READY.\n const socket = socketMgrRef.current.connectSocketRaw({ authPayload, queryToken });\n registerSocketHandlers(socket);\n\n if (!expectReconnectSuccess) {\n socket.once(\"connect\", () => {\n SM.setConnectionState(setState, CONNECTION_STATE.CONNECTED);\n SM.setError(setState, null);\n resolve(socket);\n });\n socket.once(\"connect_error\", (error) => {\n SM.setConnectionState(setState, CONNECTION_STATE.FAILED);\n SM.setError(setState, error?.message || \"Connection error\");\n reject(error);\n });\n } else {\n const timeoutMs = reconnectOptions?.timeoutMs ?? 8000;\n const onSuccess = () => { socket.off(SOCKET_EVENTS.RECONNECT_FAILED, onFail); resolve(); };\n const onFail = (p) => { socket.off(SOCKET_EVENTS.RECONNECT_SUCCESS, onSuccess); reject(new Error(p?.reason || \"Reconnect failed\")); };\n socket.once(SOCKET_EVENTS.RECONNECT_SUCCESS, onSuccess);\n socket.once(SOCKET_EVENTS.RECONNECT_FAILED, onFail);\n setTimeout(() => { socket.off(SOCKET_EVENTS.RECONNECT_SUCCESS, onSuccess); socket.off(SOCKET_EVENTS.RECONNECT_FAILED, onFail); reject(new Error(\"Reconnect timed out\")); }, timeoutMs);\n }\n }),\n [registerSocketHandlers, reconnectOptions],\n );\n\n useEffect(() => {\n if (state.connectionState !== CONNECTION_STATE.RECONNECTING) return;\n if (reconnectOptions?.enabled === false) return;\n reconnectMgrRef.current.tryReconnect({\n connectSocket,\n onAttempt: (attempt) => setState((p) => ({ ...p, reconnectAttempt: attempt })),\n onSuccess: () => {},\n onFailure: (msg) => { SM.setConnectionState(setState, CONNECTION_STATE.FAILED); SM.setError(setState, msg); cbRefs.current.onReconnectFailed?.({ reason: msg }); },\n isAborted: () => manualDisconnectRef.current,\n });\n }, [state.connectionState, connectSocket]);\n\n const hardResetForNewSession = useCallback(({ keepManualDisconnect = false } = {}) => {\n manualDisconnectRef.current = true;\n reconnectMgrRef.current.clearCredential();\n interruptedRef.current = false;\n chunkAccumulatorRef.current.clear();\n heartbeatMgrRef.current.stop();\n audioMgrRef.current.destroyPcmPlayer();\n socketMgrRef.current.cleanupSocket();\n if (!keepManualDisconnect) manualDisconnectRef.current = false;\n SM.hardReset(setState);\n }, []);\n\n const initializeSession = useCallback(async ({ apiKey, publicChatId, agentId, language = \"en\" } = {}) => {\n if (!wsUrl) throw new Error(\"Missing wsUrl in RqmiiAgentProvider\");\n if (!apiKey && !publicChatId && !agentId) throw new Error(\"Provide one of apiKey, publicChatId, or agentId\");\n hardResetForNewSession();\n SM.setConnectionState(setState, CONNECTION_STATE.INITIALIZING);\n SM.setError(setState, null);\n let data;\n try { data = await sessionMgrRef.current.initializeSession({ apiKey, publicChatId, agentId, language }); }\n catch (e) { if (e.status === 402) { SM.setCreditExhausted(setState, true, e.message || \"Insufficient credits\"); SM.setConnectionState(setState, CONNECTION_STATE.FAILED); } throw e; }\n setState((p) => ({ ...p, session: { ...p.session, sessionId: data.session_id, agentType: data.streaming_url ? AGENT_TYPES.CLOUD_AVATAR : p.session.agentType, streamingUrl: data.streaming_url || null, uniqueId: data.unique_id || null, role: null } }));\n SM.setConnectionState(setState, CONNECTION_STATE.CONNECTING);\n SM.setCloudStreamState(setState, data.streaming_url ? CLOUD_STREAM_STATE.CONNECTING : CLOUD_STREAM_STATE.IDLE);\n const tz = detectClientTimezone();\n await connectSocket({ authPayload: tz ? { token: data.session_token, timezone: tz } : { token: data.session_token }, queryToken: data.session_token });\n return data;\n }, [connectSocket, hardResetForNewSession, wsUrl]);\n\n const joinDesktopSession = useCallback(async ({ uniqueId }) => {\n if (!wsUrl) throw new Error(\"Missing wsUrl in RqmiiAgentProvider\");\n if (!uniqueId) throw new Error(\"uniqueId is required\");\n hardResetForNewSession();\n SM.setConnectionState(setState, CONNECTION_STATE.INITIALIZING);\n SM.setError(setState, null);\n let data;\n try { data = await sessionMgrRef.current.joinDesktopSession({ uniqueId }); }\n catch (e) { if (e.status === 402) { SM.setCreditExhausted(setState, true, e.message || \"Insufficient credits\"); SM.setConnectionState(setState, CONNECTION_STATE.FAILED); } throw e; }\n setState((p) => ({ ...p, session: { ...p.session, sessionId: data.session_id, uniqueId, role: \"user\", agentType: AGENT_TYPES.DESKTOP_AVATAR } }));\n SM.setConnectionState(setState, CONNECTION_STATE.CONNECTING);\n SM.setCloudStreamState(setState, CLOUD_STREAM_STATE.IDLE);\n await connectSocket({ authPayload: { token: data.session_token }, queryToken: data.session_token });\n return data;\n }, [connectSocket, hardResetForNewSession, wsUrl]);\n\n const disconnect = useCallback(() => hardResetForNewSession({ keepManualDisconnect: true }), [hardResetForNewSession]);\n const terminateSession = useCallback(async () => { disconnect(); return { success: true }; }, [disconnect]);\n const emit = useCallback((event, payload = {}) => {\n const socket = socketMgrRef.current.getSocket();\n if (!socket || !state.isConnected) return false;\n socket.emit(event, payload);\n return true;\n }, [state.isConnected]);\n\n const sendTextMessage = useCallback((text) => {\n if (!text || !String(text).trim()) return false;\n SM.addMessage(setState, { id: `user-${Date.now()}`, role: \"user\", text: String(text), timestamp: new Date().toISOString() });\n return emit(SOCKET_EVENTS.USER_MESSAGE, { message: String(text) });\n }, [emit]);\n const sendAudioChunk = useCallback((audio) => emit(SOCKET_EVENTS.AUDIO_CHUNK, { audio }), [emit]);\n const endAudioStream = useCallback(() => emit(SOCKET_EVENTS.AUDIO_END, {}), [emit]);\n const interrupt = useCallback(() => { interruptedRef.current = true; audioMgrRef.current.interruptPlayback(); SM.setAudioPlaying(setState, false); return emit(SOCKET_EVENTS.INTERRUPT, {}); }, [emit]);\n const clearSessionHistory = useCallback(() => emit(SOCKET_EVENTS.CLEAR_SESSION_HISTORY, {}), [emit]);\n const changeSessionLanguage = useCallback((language) => { if (!language) return false; return emit(SOCKET_EVENTS.CHANGE_SESSION_LANGUAGE, { language }); }, [emit]);\n const clearMessages = useCallback(() => { chunkAccumulatorRef.current.clear(); setState((p) => ({ ...p, messages: [] })); }, []);\n const resumeAudioPlayback = useCallback(() => audioMgrRef.current.resumeAudioPlayback(), []);\n const attachAudioElement = useCallback((element) => audioMgrRef.current.attachAudioElement(element), []);\n const setCloudStreamStateCallback = useCallback((nextState, error = null) => SM.setCloudStreamState(setState, nextState, error), []);\n useEffect(() => () => {\n manualDisconnectRef.current = true;\n heartbeatMgrRef.current.stop();\n socketMgrRef.current.cleanupSocket();\n audioMgrRef.current.destroyPcmPlayer();\n }, []);\n\n const contextValue = useMemo(() => ({\n ...state,\n ...SM.deriveSessionBooleans(state.sessionState),\n initializeSession, joinDesktopSession, disconnect, terminateSession,\n emit, sendTextMessage, sendAudioChunk, endAudioStream, interrupt,\n clearSessionHistory, changeSessionLanguage, clearMessages,\n resumeAudioPlayback, attachAudioElement,\n setCloudStreamState: setCloudStreamStateCallback,\n audioElement: audioMgrRef.current?.getAudioElement() ?? null,\n socket: socketMgrRef.current?.getSocket() ?? null,\n }), [\n state, initializeSession, joinDesktopSession, disconnect, terminateSession,\n emit, sendTextMessage, sendAudioChunk, endAudioStream, interrupt,\n clearSessionHistory, changeSessionLanguage, clearMessages,\n resumeAudioPlayback, attachAudioElement, setCloudStreamStateCallback,\n ]);\n\n return <RqmiiAgentContext.Provider value={contextValue}>{children}</RqmiiAgentContext.Provider>;\n}\nexport const useRqmiiAgentContext = () => {\n const context = useContext(RqmiiAgentContext);\n if (!context) throw new Error(\"useRqmiiAgentContext must be used inside <RqmiiAgentProvider>\");\n return context;\n};\n","const SUPPRESSED_PATTERNS = [\n \"Cannot read properties of null (reading 'state')\",\n 'MicVAD has null stream',\n];\n\nconst shouldSuppress = (message) => {\n if (!message) return false;\n return SUPPRESSED_PATTERNS.some((pattern) => String(message).includes(pattern));\n};\n\nexport function installAudioErrorSuppressors() {\n if (typeof window === 'undefined') return;\n if (window.__rqmiiAudioErrorSuppressorsInstalled) return;\n window.__rqmiiAudioErrorSuppressorsInstalled = true;\n\n window.addEventListener('error', (event) => {\n if (shouldSuppress(event?.message)) {\n event.preventDefault();\n return true;\n }\n return undefined;\n });\n\n window.addEventListener('unhandledrejection', (event) => {\n const msg = event?.reason?.message || String(event?.reason || '');\n if (shouldSuppress(msg)) {\n event.preventDefault();\n }\n });\n}\n\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useRqmiiAgentContext } from '../RqmiiAgentContext';\nimport { installAudioErrorSuppressors } from '../audio/installAudioErrorSuppressors';\n\ninstallAudioErrorSuppressors();\n\nconst DEFAULT_AUDIO_CONSTRAINTS = {\n echoCancellation: true,\n noiseSuppression: true,\n autoGainControl: true,\n channelCount: 1,\n sampleRate: 16000,\n};\n\nconst MEDIA_RECORDER_MIME_TYPES = [\n 'audio/webm;codecs=opus',\n 'audio/webm',\n 'audio/mp4',\n];\n\nconst getRecorderMimeType = () => {\n if (typeof window === 'undefined' || !window.MediaRecorder?.isTypeSupported) return '';\n return MEDIA_RECORDER_MIME_TYPES.find((type) => window.MediaRecorder.isTypeSupported(type)) || '';\n};\n\nexport function useRqmiiPressToTalk(options = {}) {\n const {\n onAudioChunk,\n onAudioEnd,\n onError,\n holdDelayMs = 220,\n timesliceMs = 100,\n interruptOnHoldStart = true,\n audioConstraints = DEFAULT_AUDIO_CONSTRAINTS,\n } = options;\n\n const { sendAudioChunk, endAudioStream, interrupt } = useRqmiiAgentContext();\n\n const mediaRecorderRef = useRef(null);\n const streamRef = useRef(null);\n const holdTimerRef = useRef(null);\n const shouldSendAudioEndRef = useRef(true);\n const stopRequestedRef = useRef(false);\n\n const [isPressing, setIsPressing] = useState(false);\n const [isRecording, setIsRecording] = useState(false);\n const [micError, setMicError] = useState(null);\n\n const handleChunk = useCallback(\n async (blob) => {\n if (!blob || blob.size <= 0) return;\n const chunkBuffer = await blob.arrayBuffer();\n if (onAudioChunk) {\n onAudioChunk(chunkBuffer);\n return;\n }\n sendAudioChunk(chunkBuffer);\n },\n [onAudioChunk, sendAudioChunk]\n );\n\n const cleanupStream = useCallback(() => {\n if (!streamRef.current) return;\n streamRef.current.getTracks().forEach((track) => track.stop());\n streamRef.current = null;\n }, []);\n\n const stopRecording = useCallback(\n ({ discard = false } = {}) => {\n const mediaRecorder = mediaRecorderRef.current;\n if (!mediaRecorder) {\n // startRecording may still be in progress (awaiting getUserMedia).\n // Set flag so it stops immediately after setup completes.\n stopRequestedRef.current = true;\n return false;\n }\n\n shouldSendAudioEndRef.current = !discard;\n mediaRecorderRef.current = null;\n\n if (mediaRecorder.state === 'inactive') {\n if (!discard) {\n if (onAudioEnd) onAudioEnd();\n else endAudioStream();\n }\n cleanupStream();\n setIsRecording(false);\n return true;\n }\n\n try {\n mediaRecorder.requestData();\n } catch {\n // Some browsers throw if requestData is called after stopping.\n }\n\n mediaRecorder.onstop = () => {\n const shouldSendEnd = shouldSendAudioEndRef.current;\n if (shouldSendEnd) {\n if (onAudioEnd) onAudioEnd();\n else endAudioStream();\n }\n cleanupStream();\n setIsRecording(false);\n };\n\n try {\n mediaRecorder.stop();\n } catch (error) {\n cleanupStream();\n setIsRecording(false);\n onError?.(error);\n }\n\n return true;\n },\n [cleanupStream, endAudioStream, onAudioEnd, onError]\n );\n\n const startRecording = useCallback(async () => {\n if (mediaRecorderRef.current) return true;\n stopRequestedRef.current = false;\n if (\n typeof navigator === 'undefined' ||\n !navigator.mediaDevices?.getUserMedia ||\n typeof window === 'undefined' ||\n typeof window.MediaRecorder === 'undefined'\n ) {\n const error = new Error('MediaRecorder or microphone APIs are unavailable in this browser');\n setMicError(error.message);\n onError?.(error);\n return false;\n }\n\n try {\n const stream = await navigator.mediaDevices.getUserMedia({ audio: audioConstraints });\n streamRef.current = stream;\n\n const mimeType = getRecorderMimeType();\n const recorderOptions = mimeType ? { mimeType } : undefined;\n const mediaRecorder = new window.MediaRecorder(stream, recorderOptions);\n\n mediaRecorder.ondataavailable = (event) => {\n void handleChunk(event.data);\n };\n\n mediaRecorder.onerror = (event) => {\n const error = event?.error || new Error('Microphone recording failed');\n setMicError(error?.message || 'recording_failed');\n onError?.(error);\n };\n\n mediaRecorderRef.current = mediaRecorder;\n setIsRecording(true);\n setMicError(null);\n mediaRecorder.start(timesliceMs);\n\n // If stopRecording was called while we were awaiting getUserMedia,\n // stop immediately now that setup is complete.\n if (stopRequestedRef.current) {\n stopRequestedRef.current = false;\n stopRecording();\n }\n\n return true;\n } catch (error) {\n cleanupStream();\n setIsRecording(false);\n setMicError('permission_denied');\n onError?.(error);\n return false;\n }\n }, [audioConstraints, cleanupStream, handleChunk, onError, timesliceMs]);\n\n const startPress = useCallback(() => {\n if (holdTimerRef.current) {\n clearTimeout(holdTimerRef.current);\n holdTimerRef.current = null;\n }\n\n setIsPressing(true);\n\n holdTimerRef.current = setTimeout(() => {\n if (interruptOnHoldStart) {\n interrupt();\n }\n void startRecording();\n }, holdDelayMs);\n }, [holdDelayMs, interrupt, interruptOnHoldStart, startRecording]);\n\n const stopPress = useCallback(() => {\n setIsPressing(false);\n if (holdTimerRef.current) {\n clearTimeout(holdTimerRef.current);\n holdTimerRef.current = null;\n }\n stopRecording();\n }, [stopRecording]);\n\n useEffect(() => {\n return () => {\n if (holdTimerRef.current) {\n clearTimeout(holdTimerRef.current);\n holdTimerRef.current = null;\n }\n // Cleanup on unmount only — discard any in-progress recording\n const mr = mediaRecorderRef.current;\n if (mr) {\n mediaRecorderRef.current = null;\n if (mr.state !== 'inactive') {\n try { mr.stop(); } catch { /* ignore */ }\n }\n }\n if (streamRef.current) {\n streamRef.current.getTracks().forEach((track) => track.stop());\n streamRef.current = null;\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const eventHandlers = useMemo(\n () => ({\n onPointerDown: (e) => {\n e.preventDefault();\n startPress();\n },\n onPointerUp: (e) => {\n e.preventDefault();\n stopPress();\n },\n onPointerCancel: (e) => {\n e.preventDefault();\n stopPress();\n },\n onPointerLeave: (e) => {\n e.preventDefault();\n stopPress();\n },\n }),\n [startPress, stopPress]\n );\n\n return {\n isPressing,\n isRecording,\n micError,\n startRecording,\n stopRecording,\n startPress,\n stopPress,\n eventHandlers,\n };\n}\n\nexport default useRqmiiPressToTalk;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baseAssetPath = void 0;\n// nextjs@14 bundler may attempt to execute this during SSR and crash\nconst isWeb = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\nconst currentScript = isWeb\n ? window.document.currentScript\n : null;\nlet basePath = \"/\";\nif (currentScript) {\n basePath = currentScript.src\n .replace(/#.*$/, \"\")\n .replace(/\\?.*$/, \"\")\n .replace(/\\/[^/]+$/, \"/\");\n}\nexports.baseAssetPath = basePath;\n//# sourceMappingURL=asset-path.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultModelFetcher = void 0;\nconst defaultModelFetcher = (path) => {\n return fetch(path).then((model) => model.arrayBuffer());\n};\nexports.defaultModelFetcher = defaultModelFetcher;\n//# sourceMappingURL=default-model-fetcher.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.log = void 0;\nconst mkLogger = (level) => (message) => {\n console.log(`VAD | ${level} >`, message);\n};\nexports.log = {\n error: mkLogger(\"error\"),\n debug: mkLogger(\"debug\"),\n warn: mkLogger(\"warn\"),\n};\n//# sourceMappingURL=logging.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Message = void 0;\nvar Message;\n(function (Message) {\n Message[\"AudioFrame\"] = \"AUDIO_FRAME\";\n Message[\"SpeechStart\"] = \"SPEECH_START\";\n Message[\"VADMisfire\"] = \"VAD_MISFIRE\";\n Message[\"SpeechEnd\"] = \"SPEECH_END\";\n Message[\"SpeechStop\"] = \"SPEECH_STOP\";\n Message[\"SpeechRealStart\"] = \"SPEECH_REAL_START\";\n Message[\"FrameProcessed\"] = \"FRAME_PROCESSED\";\n})(Message || (exports.Message = Message = {}));\n//# sourceMappingURL=messages.js.map","\"use strict\";\n/*\nSome of this code, together with the default options found in index.ts,\nwere taken (or took inspiration) from https://github.com/snakers4/silero-vad\n*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FrameProcessor = exports.validateOptions = exports.defaultFrameProcessorOptions = void 0;\nconst logging_1 = require(\"./logging\");\nconst messages_1 = require(\"./messages\");\nexports.defaultFrameProcessorOptions = {\n positiveSpeechThreshold: 0.3,\n negativeSpeechThreshold: 0.25,\n preSpeechPadMs: 800,\n redemptionMs: 1400,\n minSpeechMs: 400,\n submitUserSpeechOnPause: false,\n};\nfunction validateOptions(options) {\n if (options.positiveSpeechThreshold < 0 ||\n options.positiveSpeechThreshold > 1) {\n logging_1.log.error(\"positiveSpeechThreshold should be a number between 0 and 1\");\n }\n if (options.negativeSpeechThreshold < 0 ||\n options.negativeSpeechThreshold > options.positiveSpeechThreshold) {\n logging_1.log.error(\"negativeSpeechThreshold should be between 0 and positiveSpeechThreshold\");\n }\n if (options.preSpeechPadMs < 0) {\n logging_1.log.error(\"preSpeechPadMs should be positive\");\n }\n if (options.redemptionMs < 0) {\n logging_1.log.error(\"redemptionMs should be positive\");\n }\n if (options.minSpeechMs < 0) {\n logging_1.log.error(\"minSpeechMs should be positive\");\n }\n}\nexports.validateOptions = validateOptions;\nconst concatArrays = (arrays) => {\n const sizes = arrays.reduce((out, next) => {\n out.push(out.at(-1) + next.length);\n return out;\n }, [0]);\n const outArray = new Float32Array(sizes.at(-1));\n arrays.forEach((arr, index) => {\n const place = sizes[index];\n outArray.set(arr, place);\n });\n return outArray;\n};\nfunction calculateFrameParams(options, msPerFrame) {\n const redemptionFrames = Math.floor(options.redemptionMs / msPerFrame);\n const preSpeechPadFrames = Math.floor(options.preSpeechPadMs / msPerFrame);\n const minSpeechFrames = Math.floor(options.minSpeechMs / msPerFrame);\n return { redemptionFrames, preSpeechPadFrames, minSpeechFrames };\n}\nclass FrameProcessor {\n constructor(modelProcessFunc, modelResetFunc, options, msPerFrame) {\n this.modelProcessFunc = modelProcessFunc;\n this.modelResetFunc = modelResetFunc;\n this.options = options;\n this.msPerFrame = msPerFrame;\n this.speaking = false;\n this.redemptionCounter = 0;\n this.speechFrameCount = 0;\n this.active = false;\n this.speechRealStartFired = false;\n this.setOptions = (update) => {\n this.options = { ...this.options, ...update };\n const { redemptionFrames, preSpeechPadFrames, minSpeechFrames } = calculateFrameParams(this.options, this.msPerFrame);\n this.redemptionFrames = redemptionFrames;\n this.preSpeechPadFrames = preSpeechPadFrames;\n this.minSpeechFrames = minSpeechFrames;\n };\n this.reset = () => {\n this.speaking = false;\n this.speechRealStartFired = false;\n this.audioBuffer = [];\n this.modelResetFunc();\n this.redemptionCounter = 0;\n this.speechFrameCount = 0;\n };\n this.pause = (handleEvent) => {\n this.active = false;\n if (this.options.submitUserSpeechOnPause) {\n this.endSegment(handleEvent);\n }\n else {\n this.reset();\n }\n };\n this.resume = () => {\n this.active = true;\n };\n this.endSegment = (handleEvent) => {\n const audioBuffer = this.audioBuffer;\n this.audioBuffer = [];\n const speaking = this.speaking;\n this.reset();\n if (speaking) {\n const speechFrameCount = audioBuffer.reduce((acc, item) => {\n return item.isSpeech ? acc + 1 : acc;\n }, 0);\n if (speechFrameCount >= this.minSpeechFrames) {\n const audio = concatArrays(audioBuffer.map((item) => item.frame));\n handleEvent({ msg: messages_1.Message.SpeechEnd, audio });\n }\n else {\n handleEvent({ msg: messages_1.Message.VADMisfire });\n }\n }\n return {};\n };\n this.process = async (frame, handleEvent) => {\n if (!this.active) {\n return;\n }\n const probs = await this.modelProcessFunc(frame);\n const isSpeech = probs.isSpeech >= this.options.positiveSpeechThreshold;\n handleEvent({ probs, msg: messages_1.Message.FrameProcessed, frame });\n this.audioBuffer.push({\n frame,\n isSpeech,\n });\n if (isSpeech) {\n this.speechFrameCount++;\n this.redemptionCounter = 0;\n }\n if (isSpeech && !this.speaking) {\n this.speaking = true;\n handleEvent({ msg: messages_1.Message.SpeechStart });\n }\n if (this.speaking &&\n this.speechFrameCount === this.minSpeechFrames &&\n !this.speechRealStartFired) {\n this.speechRealStartFired = true;\n handleEvent({ msg: messages_1.Message.SpeechRealStart });\n }\n if (probs.isSpeech < this.options.negativeSpeechThreshold &&\n this.speaking &&\n ++this.redemptionCounter >= this.redemptionFrames) {\n this.redemptionCounter = 0;\n this.speechFrameCount = 0;\n this.speaking = false;\n this.speechRealStartFired = false;\n const audioBuffer = this.audioBuffer;\n this.audioBuffer = [];\n const speechFrameCount = audioBuffer.reduce((acc, item) => {\n return item.isSpeech ? acc + 1 : acc;\n }, 0);\n if (speechFrameCount >= this.minSpeechFrames) {\n const audio = concatArrays(audioBuffer.map((item) => item.frame));\n handleEvent({ msg: messages_1.Message.SpeechEnd, audio });\n }\n else {\n handleEvent({ msg: messages_1.Message.VADMisfire });\n }\n }\n if (!this.speaking) {\n while (this.audioBuffer.length > this.preSpeechPadFrames) {\n this.audioBuffer.shift();\n }\n this.speechFrameCount = 0;\n }\n };\n this.audioBuffer = [];\n const { redemptionFrames, preSpeechPadFrames, minSpeechFrames } = calculateFrameParams(this.options, this.msPerFrame);\n this.redemptionFrames = redemptionFrames;\n this.preSpeechPadFrames = preSpeechPadFrames;\n this.minSpeechFrames = minSpeechFrames;\n this.reset();\n }\n}\nexports.FrameProcessor = FrameProcessor;\n//# sourceMappingURL=frame-processor.js.map","/*!\n * ONNX Runtime Web v1.24.3\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\"use strict\";var ort=(()=>{var $n=Object.defineProperty;var Nu=Object.getOwnPropertyDescriptor;var Lu=Object.getOwnPropertyNames;var Gu=Object.prototype.hasOwnProperty;var vn=(e=>typeof require<\"u\"?require:typeof Proxy<\"u\"?new Proxy(e,{get:(t,n)=>(typeof require<\"u\"?require:t)[n]}):e)(function(e){if(typeof require<\"u\")return require.apply(this,arguments);throw Error('Dynamic require of \"'+e+'\" is not supported')});var k=(e,t)=>()=>(e&&(t=e(e=0)),t);var rt=(e,t)=>{for(var n in t)$n(e,n,{get:t[n],enumerable:!0})},Wu=(e,t,n,r)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let o of Lu(t))!Gu.call(e,o)&&o!==n&&$n(e,o,{get:()=>t[o],enumerable:!(r=Nu(t,o))||r.enumerable});return e};var lt=e=>Wu($n({},\"__esModule\",{value:!0}),e);var St,Ze,Ge,Hu,br,xn=k(()=>{\"use strict\";St=new Map,Ze=[],Ge=(e,t,n)=>{if(t&&typeof t.init==\"function\"&&typeof t.createInferenceSessionHandler==\"function\"){let r=St.get(e);if(r===void 0)St.set(e,{backend:t,priority:n});else{if(r.priority>n)return;if(r.priority===n&&r.backend!==t)throw new Error(`cannot register backend \"${e}\" using priority ${n}`)}if(n>=0){let o=Ze.indexOf(e);o!==-1&&Ze.splice(o,1);for(let i=0;i<Ze.length;i++)if(St.get(Ze[i]).priority<=n){Ze.splice(i,0,e);return}Ze.push(e)}return}throw new TypeError(\"not a valid backend\")},Hu=async e=>{let t=St.get(e);if(!t)return\"backend not found.\";if(t.initialized)return t.backend;if(t.aborted)return t.error;{let n=!!t.initPromise;try{return n||(t.initPromise=t.backend.init(e)),await t.initPromise,t.initialized=!0,t.backend}catch(r){return n||(t.error=`${r}`,t.aborted=!0),t.error}finally{delete t.initPromise}}},br=async e=>{let t=e.executionProviders||[],n=t.map(u=>typeof u==\"string\"?u:u.name),r=n.length===0?Ze:n,o,i=[],s=new Set;for(let u of r){let d=await Hu(u);typeof d==\"string\"?i.push({name:u,err:d}):(o||(o=d),o===d&&s.add(u))}if(!o)throw new Error(`no available backend found. ERR: ${i.map(u=>`[${u.name}] ${u.err}`).join(\", \")}`);for(let{name:u,err:d}of i)n.includes(u)&&console.warn(`removing requested execution provider \"${u}\" from session options because it is not available: ${d}`);let a=t.filter(u=>s.has(typeof u==\"string\"?u:u.name));return[o,new Proxy(e,{get:(u,d)=>d===\"executionProviders\"?a:Reflect.get(u,d)})]}});var _r=k(()=>{\"use strict\";xn()});var wr,$r=k(()=>{\"use strict\";wr=\"1.24.3\"});var vr,le,Sn=k(()=>{\"use strict\";$r();vr=\"warning\",le={wasm:{},webgl:{},webgpu:{},versions:{common:wr},set logLevel(e){if(e!==void 0){if(typeof e!=\"string\"||[\"verbose\",\"info\",\"warning\",\"error\",\"fatal\"].indexOf(e)===-1)throw new Error(`Unsupported logging level: ${e}`);vr=e}},get logLevel(){return vr}};Object.defineProperty(le,\"logLevel\",{enumerable:!0})});var te,xr=k(()=>{\"use strict\";Sn();te=le});var Sr,Tr,Ir=k(()=>{\"use strict\";Sr=(e,t)=>{let n=typeof document<\"u\"?document.createElement(\"canvas\"):new OffscreenCanvas(1,1);n.width=e.dims[3],n.height=e.dims[2];let r=n.getContext(\"2d\");if(r!=null){let o,i;t?.tensorLayout!==void 0&&t.tensorLayout===\"NHWC\"?(o=e.dims[2],i=e.dims[3]):(o=e.dims[3],i=e.dims[2]);let s=t?.format!==void 0?t.format:\"RGB\",a=t?.norm,u,d;a===void 0||a.mean===void 0?u=[255,255,255,255]:typeof a.mean==\"number\"?u=[a.mean,a.mean,a.mean,a.mean]:(u=[a.mean[0],a.mean[1],a.mean[2],0],a.mean[3]!==void 0&&(u[3]=a.mean[3])),a===void 0||a.bias===void 0?d=[0,0,0,0]:typeof a.bias==\"number\"?d=[a.bias,a.bias,a.bias,a.bias]:(d=[a.bias[0],a.bias[1],a.bias[2],0],a.bias[3]!==void 0&&(d[3]=a.bias[3]));let l=i*o,c=0,p=l,f=l*2,m=-1;s===\"RGBA\"?(c=0,p=l,f=l*2,m=l*3):s===\"RGB\"?(c=0,p=l,f=l*2):s===\"RBG\"&&(c=0,f=l,p=l*2);for(let h=0;h<i;h++)for(let b=0;b<o;b++){let y=(e.data[c++]-d[0])*u[0],g=(e.data[p++]-d[1])*u[1],_=(e.data[f++]-d[2])*u[2],w=m===-1?255:(e.data[m++]-d[3])*u[3];r.fillStyle=\"rgba(\"+y+\",\"+g+\",\"+_+\",\"+w+\")\",r.fillRect(b,h,1,1)}if(\"toDataURL\"in n)return n.toDataURL();throw new Error(\"toDataURL is not supported\")}else throw new Error(\"Can not access image data\")},Tr=(e,t)=>{let n=typeof document<\"u\"?document.createElement(\"canvas\").getContext(\"2d\"):new OffscreenCanvas(1,1).getContext(\"2d\"),r;if(n!=null){let o,i,s;t?.tensorLayout!==void 0&&t.tensorLayout===\"NHWC\"?(o=e.dims[2],i=e.dims[1],s=e.dims[3]):(o=e.dims[3],i=e.dims[2],s=e.dims[1]);let a=t!==void 0&&t.format!==void 0?t.format:\"RGB\",u=t?.norm,d,l;u===void 0||u.mean===void 0?d=[255,255,255,255]:typeof u.mean==\"number\"?d=[u.mean,u.mean,u.mean,u.mean]:(d=[u.mean[0],u.mean[1],u.mean[2],255],u.mean[3]!==void 0&&(d[3]=u.mean[3])),u===void 0||u.bias===void 0?l=[0,0,0,0]:typeof u.bias==\"number\"?l=[u.bias,u.bias,u.bias,u.bias]:(l=[u.bias[0],u.bias[1],u.bias[2],0],u.bias[3]!==void 0&&(l[3]=u.bias[3]));let c=i*o;if(t!==void 0&&(t.format!==void 0&&s===4&&t.format!==\"RGBA\"||s===3&&t.format!==\"RGB\"&&t.format!==\"BGR\"))throw new Error(\"Tensor format doesn't match input tensor dims\");let p=4,f=0,m=1,h=2,b=3,y=0,g=c,_=c*2,w=-1;a===\"RGBA\"?(y=0,g=c,_=c*2,w=c*3):a===\"RGB\"?(y=0,g=c,_=c*2):a===\"RBG\"&&(y=0,_=c,g=c*2),r=n.createImageData(o,i);for(let v=0;v<i*o;f+=p,m+=p,h+=p,b+=p,v++)r.data[f]=(e.data[y++]-l[0])*d[0],r.data[m]=(e.data[g++]-l[1])*d[1],r.data[h]=(e.data[_++]-l[2])*d[2],r.data[b]=w===-1?255:(e.data[w++]-l[3])*d[3]}else throw new Error(\"Can not access image data\");return r}});var Tn,Cr,Ar,Er,kr,Pr,zr=k(()=>{\"use strict\";Tt();Tn=(e,t)=>{if(e===void 0)throw new Error(\"Image buffer must be defined\");if(t.height===void 0||t.width===void 0)throw new Error(\"Image height and width must be defined\");if(t.tensorLayout===\"NHWC\")throw new Error(\"NHWC Tensor layout is not supported yet\");let{height:n,width:r}=t,o=t.norm??{mean:255,bias:0},i,s;typeof o.mean==\"number\"?i=[o.mean,o.mean,o.mean,o.mean]:i=[o.mean[0],o.mean[1],o.mean[2],o.mean[3]??255],typeof o.bias==\"number\"?s=[o.bias,o.bias,o.bias,o.bias]:s=[o.bias[0],o.bias[1],o.bias[2],o.bias[3]??0];let a=t.format!==void 0?t.format:\"RGBA\",u=t.tensorFormat!==void 0&&t.tensorFormat!==void 0?t.tensorFormat:\"RGB\",d=n*r,l=u===\"RGBA\"?new Float32Array(d*4):new Float32Array(d*3),c=4,p=0,f=1,m=2,h=3,b=0,y=d,g=d*2,_=-1;a===\"RGB\"&&(c=3,p=0,f=1,m=2,h=-1),u===\"RGBA\"?_=d*3:u===\"RBG\"?(b=0,g=d,y=d*2):u===\"BGR\"&&(g=0,y=d,b=d*2);for(let v=0;v<d;v++,p+=c,m+=c,f+=c,h+=c)l[b++]=(e[p]+s[0])/i[0],l[y++]=(e[f]+s[1])/i[1],l[g++]=(e[m]+s[2])/i[2],_!==-1&&h!==-1&&(l[_++]=(e[h]+s[3])/i[3]);return u===\"RGBA\"?new fe(\"float32\",l,[1,4,n,r]):new fe(\"float32\",l,[1,3,n,r])},Cr=async(e,t)=>{let n=typeof HTMLImageElement<\"u\"&&e instanceof HTMLImageElement,r=typeof ImageData<\"u\"&&e instanceof ImageData,o=typeof ImageBitmap<\"u\"&&e instanceof ImageBitmap,i=typeof e==\"string\",s,a=t??{},u=()=>{if(typeof document<\"u\")return document.createElement(\"canvas\");if(typeof OffscreenCanvas<\"u\")return new OffscreenCanvas(1,1);throw new Error(\"Canvas is not supported\")},d=l=>typeof HTMLCanvasElement<\"u\"&&l instanceof HTMLCanvasElement||l instanceof OffscreenCanvas?l.getContext(\"2d\"):null;if(n){let l=u();l.width=e.width,l.height=e.height;let c=d(l);if(c!=null){let p=e.height,f=e.width;if(t!==void 0&&t.resizedHeight!==void 0&&t.resizedWidth!==void 0&&(p=t.resizedHeight,f=t.resizedWidth),t!==void 0){if(a=t,t.tensorFormat!==void 0)throw new Error(\"Image input config format must be RGBA for HTMLImageElement\");a.tensorFormat=\"RGBA\",a.height=p,a.width=f}else a.tensorFormat=\"RGBA\",a.height=p,a.width=f;c.drawImage(e,0,0),s=c.getImageData(0,0,f,p).data}else throw new Error(\"Can not access image data\")}else if(r){let l,c;if(t!==void 0&&t.resizedWidth!==void 0&&t.resizedHeight!==void 0?(l=t.resizedHeight,c=t.resizedWidth):(l=e.height,c=e.width),t!==void 0&&(a=t),a.format=\"RGBA\",a.height=l,a.width=c,t!==void 0){let p=u();p.width=c,p.height=l;let f=d(p);if(f!=null)f.putImageData(e,0,0),s=f.getImageData(0,0,c,l).data;else throw new Error(\"Can not access image data\")}else s=e.data}else if(o){if(t===void 0)throw new Error(\"Please provide image config with format for Imagebitmap\");let l=u();l.width=e.width,l.height=e.height;let c=d(l);if(c!=null){let p=e.height,f=e.width;return c.drawImage(e,0,0,f,p),s=c.getImageData(0,0,f,p).data,a.height=p,a.width=f,Tn(s,a)}else throw new Error(\"Can not access image data\")}else{if(i)return new Promise((l,c)=>{let p=u(),f=d(p);if(!e||!f)return c();let m=new Image;m.crossOrigin=\"Anonymous\",m.src=e,m.onload=()=>{p.width=m.width,p.height=m.height,f.drawImage(m,0,0,p.width,p.height);let h=f.getImageData(0,0,p.width,p.height);a.height=p.height,a.width=p.width,l(Tn(h.data,a))}});throw new Error(\"Input data provided is not supported - aborted tensor creation\")}if(s!==void 0)return Tn(s,a);throw new Error(\"Input data provided is not supported - aborted tensor creation\")},Ar=(e,t)=>{let{width:n,height:r,download:o,dispose:i}=t,s=[1,r,n,4];return new fe({location:\"texture\",type:\"float32\",texture:e,dims:s,download:o,dispose:i})},Er=(e,t)=>{let{dataType:n,dims:r,download:o,dispose:i}=t;return new fe({location:\"gpu-buffer\",type:n??\"float32\",gpuBuffer:e,dims:r,download:o,dispose:i})},kr=(e,t)=>{let{dataType:n,dims:r,download:o,dispose:i}=t;return new fe({location:\"ml-tensor\",type:n??\"float32\",mlTensor:e,dims:r,download:o,dispose:i})},Pr=(e,t,n)=>new fe({location:\"cpu-pinned\",type:e,data:t,dims:n??[t.length]})});var Qe,ct,Br,Dr,Or=k(()=>{\"use strict\";Qe=new Map([[\"float32\",Float32Array],[\"uint8\",Uint8Array],[\"int8\",Int8Array],[\"uint16\",Uint16Array],[\"int16\",Int16Array],[\"int32\",Int32Array],[\"bool\",Uint8Array],[\"float64\",Float64Array],[\"uint32\",Uint32Array],[\"int4\",Uint8Array],[\"uint4\",Uint8Array]]),ct=new Map([[Float32Array,\"float32\"],[Uint8Array,\"uint8\"],[Int8Array,\"int8\"],[Uint16Array,\"uint16\"],[Int16Array,\"int16\"],[Int32Array,\"int32\"],[Float64Array,\"float64\"],[Uint32Array,\"uint32\"]]),Br=!1,Dr=()=>{if(!Br){Br=!0;let e=typeof BigInt64Array<\"u\"&&BigInt64Array.from,t=typeof BigUint64Array<\"u\"&&BigUint64Array.from,n=globalThis.Float16Array,r=typeof n<\"u\"&&n.from;e&&(Qe.set(\"int64\",BigInt64Array),ct.set(BigInt64Array,\"int64\")),t&&(Qe.set(\"uint64\",BigUint64Array),ct.set(BigUint64Array,\"uint64\")),r?(Qe.set(\"float16\",n),ct.set(n,\"float16\")):Qe.set(\"float16\",Uint16Array)}}});var Mr,Ur,Rr=k(()=>{\"use strict\";Tt();Mr=e=>{let t=1;for(let n=0;n<e.length;n++){let r=e[n];if(typeof r!=\"number\"||!Number.isSafeInteger(r))throw new TypeError(`dims[${n}] must be an integer, got: ${r}`);if(r<0)throw new RangeError(`dims[${n}] must be a non-negative integer, got: ${r}`);t*=r}return t},Ur=(e,t)=>{switch(e.location){case\"cpu\":return new fe(e.type,e.data,t);case\"cpu-pinned\":return new fe({location:\"cpu-pinned\",data:e.data,type:e.type,dims:t});case\"texture\":return new fe({location:\"texture\",texture:e.texture,type:e.type,dims:t});case\"gpu-buffer\":return new fe({location:\"gpu-buffer\",gpuBuffer:e.gpuBuffer,type:e.type,dims:t});case\"ml-tensor\":return new fe({location:\"ml-tensor\",mlTensor:e.mlTensor,type:e.type,dims:t});default:throw new Error(`tensorReshape: tensor location ${e.location} is not supported`)}}});var fe,Tt=k(()=>{\"use strict\";Ir();zr();Or();Rr();fe=class{constructor(t,n,r){Dr();let o,i;if(typeof t==\"object\"&&\"location\"in t)switch(this.dataLocation=t.location,o=t.type,i=t.dims,t.location){case\"cpu-pinned\":{let a=Qe.get(o);if(!a)throw new TypeError(`unsupported type \"${o}\" to create tensor from pinned buffer`);if(!(t.data instanceof a))throw new TypeError(`buffer should be of type ${a.name}`);this.cpuData=t.data;break}case\"texture\":{if(o!==\"float32\")throw new TypeError(`unsupported type \"${o}\" to create tensor from texture`);this.gpuTextureData=t.texture,this.downloader=t.download,this.disposer=t.dispose;break}case\"gpu-buffer\":{if(o!==\"float32\"&&o!==\"float16\"&&o!==\"int32\"&&o!==\"int64\"&&o!==\"uint32\"&&o!==\"uint8\"&&o!==\"bool\"&&o!==\"uint4\"&&o!==\"int4\")throw new TypeError(`unsupported type \"${o}\" to create tensor from gpu buffer`);this.gpuBufferData=t.gpuBuffer,this.downloader=t.download,this.disposer=t.dispose;break}case\"ml-tensor\":{if(o!==\"float32\"&&o!==\"float16\"&&o!==\"int32\"&&o!==\"int64\"&&o!==\"uint32\"&&o!==\"uint64\"&&o!==\"int8\"&&o!==\"uint8\"&&o!==\"bool\"&&o!==\"uint4\"&&o!==\"int4\")throw new TypeError(`unsupported type \"${o}\" to create tensor from MLTensor`);this.mlTensorData=t.mlTensor,this.downloader=t.download,this.disposer=t.dispose;break}default:throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let a,u;if(typeof t==\"string\")if(o=t,u=r,t===\"string\"){if(!Array.isArray(n))throw new TypeError(\"A string tensor's data must be a string array.\");a=n}else{let d=Qe.get(t);if(d===void 0)throw new TypeError(`Unsupported tensor type: ${t}.`);if(Array.isArray(n)){if(t===\"float16\"&&d===Uint16Array||t===\"uint4\"||t===\"int4\")throw new TypeError(`Creating a ${t} tensor from number array is not supported. Please use ${d.name} as data.`);t===\"uint64\"||t===\"int64\"?a=d.from(n,BigInt):a=d.from(n)}else if(n instanceof d)a=n;else if(n instanceof Uint8ClampedArray)if(t===\"uint8\")a=Uint8Array.from(n);else throw new TypeError(\"A Uint8ClampedArray tensor's data must be type of uint8\");else if(t===\"float16\"&&n instanceof Uint16Array&&d!==Uint16Array)a=new globalThis.Float16Array(n.buffer,n.byteOffset,n.length);else throw new TypeError(`A ${o} tensor's data must be type of ${d}`)}else if(u=n,Array.isArray(t)){if(t.length===0)throw new TypeError(\"Tensor type cannot be inferred from an empty array.\");let d=typeof t[0];if(d===\"string\")o=\"string\",a=t;else if(d===\"boolean\")o=\"bool\",a=Uint8Array.from(t);else throw new TypeError(`Invalid element type of data array: ${d}.`)}else if(t instanceof Uint8ClampedArray)o=\"uint8\",a=Uint8Array.from(t);else{let d=ct.get(t.constructor);if(d===void 0)throw new TypeError(`Unsupported type for tensor data: ${t.constructor}.`);o=d,a=t}if(u===void 0)u=[a.length];else if(!Array.isArray(u))throw new TypeError(\"A tensor's dims must be a number array\");i=u,this.cpuData=a,this.dataLocation=\"cpu\"}let s=Mr(i);if(this.cpuData&&s!==this.cpuData.length&&!((o===\"uint4\"||o===\"int4\")&&Math.ceil(s/2)===this.cpuData.length))throw new Error(`Tensor's size(${s}) does not match data length(${this.cpuData.length}).`);this.type=o,this.dims=i,this.size=s}static async fromImage(t,n){return Cr(t,n)}static fromTexture(t,n){return Ar(t,n)}static fromGpuBuffer(t,n){return Er(t,n)}static fromMLTensor(t,n){return kr(t,n)}static fromPinnedBuffer(t,n,r){return Pr(t,n,r)}toDataURL(t){return Sr(this,t)}toImageData(t){return Tr(this,t)}get data(){if(this.ensureValid(),!this.cpuData)throw new Error(\"The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.\");return this.cpuData}get location(){return this.dataLocation}get texture(){if(this.ensureValid(),!this.gpuTextureData)throw new Error(\"The data is not stored as a WebGL texture.\");return this.gpuTextureData}get gpuBuffer(){if(this.ensureValid(),!this.gpuBufferData)throw new Error(\"The data is not stored as a WebGPU buffer.\");return this.gpuBufferData}get mlTensor(){if(this.ensureValid(),!this.mlTensorData)throw new Error(\"The data is not stored as a WebNN MLTensor.\");return this.mlTensorData}async getData(t){switch(this.ensureValid(),this.dataLocation){case\"cpu\":case\"cpu-pinned\":return this.data;case\"texture\":case\"gpu-buffer\":case\"ml-tensor\":{if(!this.downloader)throw new Error(\"The current tensor is not created with a specified data downloader.\");if(this.isDownloading)throw new Error(\"The current tensor is being downloaded.\");try{this.isDownloading=!0;let n=await this.downloader();return this.downloader=void 0,this.dataLocation=\"cpu\",this.cpuData=n,t&&this.disposer&&(this.disposer(),this.disposer=void 0),n}finally{this.isDownloading=!1}}default:throw new Error(`cannot get data from location: ${this.dataLocation}`)}}dispose(){if(this.isDownloading)throw new Error(\"The current tensor is being downloaded.\");this.disposer&&(this.disposer(),this.disposer=void 0),this.cpuData=void 0,this.gpuTextureData=void 0,this.gpuBufferData=void 0,this.mlTensorData=void 0,this.downloader=void 0,this.isDownloading=void 0,this.dataLocation=\"none\"}ensureValid(){if(this.dataLocation===\"none\")throw new Error(\"The tensor is disposed.\")}reshape(t){if(this.ensureValid(),this.downloader||this.disposer)throw new Error(\"Cannot reshape a tensor that owns GPU resource.\");return Ur(this,t)}}});var xe,In=k(()=>{\"use strict\";Tt();xe=fe});var pt,Vr,ye,he,Ue,Re,Cn=k(()=>{\"use strict\";Sn();pt=(e,t)=>{(typeof le.trace>\"u\"?!le.wasm.trace:!le.trace)||console.timeStamp(`${e}::ORT::${t}`)},Vr=(e,t)=>{let n=new Error().stack?.split(/\\r\\n|\\r|\\n/g)||[],r=!1;for(let o=0;o<n.length;o++){if(r&&!n[o].includes(\"TRACE_FUNC\")){let i=`FUNC_${e}::${n[o].trim().split(\" \")[1]}`;t&&(i+=`::${t}`),pt(\"CPU\",i);return}n[o].includes(\"TRACE_FUNC\")&&(r=!0)}},ye=e=>{(typeof le.trace>\"u\"?!le.wasm.trace:!le.trace)||Vr(\"BEGIN\",e)},he=e=>{(typeof le.trace>\"u\"?!le.wasm.trace:!le.trace)||Vr(\"END\",e)},Ue=e=>{(typeof le.trace>\"u\"?!le.wasm.trace:!le.trace)||console.time(`ORT::${e}`)},Re=e=>{(typeof le.trace>\"u\"?!le.wasm.trace:!le.trace)||console.timeEnd(`ORT::${e}`)}});var It,Nr=k(()=>{\"use strict\";xn();In();Cn();It=class e{constructor(t){this.handler=t}async run(t,n,r){ye(),Ue(\"InferenceSession.run\");let o={},i={};if(typeof t!=\"object\"||t===null||t instanceof xe||Array.isArray(t))throw new TypeError(\"'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.\");let s=!0;if(typeof n==\"object\"){if(n===null)throw new TypeError(\"Unexpected argument[1]: cannot be null.\");if(n instanceof xe)throw new TypeError(\"'fetches' cannot be a Tensor\");if(Array.isArray(n)){if(n.length===0)throw new TypeError(\"'fetches' cannot be an empty array.\");s=!1;for(let d of n){if(typeof d!=\"string\")throw new TypeError(\"'fetches' must be a string array or an object.\");if(this.outputNames.indexOf(d)===-1)throw new RangeError(`'fetches' contains invalid output name: ${d}.`);o[d]=null}if(typeof r==\"object\"&&r!==null)i=r;else if(typeof r<\"u\")throw new TypeError(\"'options' must be an object.\")}else{let d=!1,l=Object.getOwnPropertyNames(n);for(let c of this.outputNames)if(l.indexOf(c)!==-1){let p=n[c];(p===null||p instanceof xe)&&(d=!0,s=!1,o[c]=p)}if(d){if(typeof r==\"object\"&&r!==null)i=r;else if(typeof r<\"u\")throw new TypeError(\"'options' must be an object.\")}else i=n}}else if(typeof n<\"u\")throw new TypeError(\"Unexpected argument[1]: must be 'fetches' or 'options'.\");for(let d of this.inputNames)if(typeof t[d]>\"u\")throw new Error(`input '${d}' is missing in 'feeds'.`);if(s)for(let d of this.outputNames)o[d]=null;let a=await this.handler.run(t,o,i),u={};for(let d in a)if(Object.hasOwnProperty.call(a,d)){let l=a[d];l instanceof xe?u[d]=l:u[d]=new xe(l.type,l.data,l.dims)}return Re(\"InferenceSession.run\"),he(),u}async release(){return this.handler.dispose()}static async create(t,n,r,o){ye(),Ue(\"InferenceSession.create\");let i,s={};if(typeof t==\"string\"){if(i=t,typeof n==\"object\"&&n!==null)s=n;else if(typeof n<\"u\")throw new TypeError(\"'options' must be an object.\")}else if(t instanceof Uint8Array){if(i=t,typeof n==\"object\"&&n!==null)s=n;else if(typeof n<\"u\")throw new TypeError(\"'options' must be an object.\")}else if(t instanceof ArrayBuffer||typeof SharedArrayBuffer<\"u\"&&t instanceof SharedArrayBuffer){let l=t,c=0,p=t.byteLength;if(typeof n==\"object\"&&n!==null)s=n;else if(typeof n==\"number\"){if(c=n,!Number.isSafeInteger(c))throw new RangeError(\"'byteOffset' must be an integer.\");if(c<0||c>=l.byteLength)throw new RangeError(`'byteOffset' is out of range [0, ${l.byteLength}).`);if(p=t.byteLength-c,typeof r==\"number\"){if(p=r,!Number.isSafeInteger(p))throw new RangeError(\"'byteLength' must be an integer.\");if(p<=0||c+p>l.byteLength)throw new RangeError(`'byteLength' is out of range (0, ${l.byteLength-c}].`);if(typeof o==\"object\"&&o!==null)s=o;else if(typeof o<\"u\")throw new TypeError(\"'options' must be an object.\")}else if(typeof r<\"u\")throw new TypeError(\"'byteLength' must be a number.\")}else if(typeof n<\"u\")throw new TypeError(\"'options' must be an object.\");i=new Uint8Array(l,c,p)}else throw new TypeError(\"Unexpected argument[0]: must be 'path' or 'buffer'.\");let[a,u]=await br(s),d=await a.createInferenceSessionHandler(i,u);return Re(\"InferenceSession.create\"),he(),new e(d)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}get outputNames(){return this.handler.outputNames}get inputMetadata(){return this.handler.inputMetadata}get outputMetadata(){return this.handler.outputMetadata}}});var Lr,Gr=k(()=>{\"use strict\";Nr();Lr=It});var Wr=k(()=>{\"use strict\"});var Hr=k(()=>{\"use strict\"});var qr=k(()=>{\"use strict\"});var Fr=k(()=>{\"use strict\"});var An={};rt(An,{InferenceSession:()=>Lr,TRACE:()=>pt,TRACE_EVENT_BEGIN:()=>Ue,TRACE_EVENT_END:()=>Re,TRACE_FUNC_BEGIN:()=>ye,TRACE_FUNC_END:()=>he,Tensor:()=>xe,env:()=>te,registerBackend:()=>Ge});var _e=k(()=>{\"use strict\";_r();xr();Gr();In();Wr();Hr();Cn();qr();Fr()});var Ct=k(()=>{\"use strict\"});var Qr={};rt(Qr,{default:()=>qu});var jr,Zr,qu,Xr=k(()=>{\"use strict\";En();We();At();jr=\"ort-wasm-proxy-worker\",Zr=globalThis.self?.name===jr;Zr&&(self.onmessage=e=>{let{type:t,in:n}=e.data;try{switch(t){case\"init-wasm\":Et(n.wasm).then(()=>{kt(n).then(()=>{postMessage({type:t})},r=>{postMessage({type:t,err:r})})},r=>{postMessage({type:t,err:r})});break;case\"init-ep\":{let{epName:r,env:o}=n;Pt(o,r).then(()=>{postMessage({type:t})},i=>{postMessage({type:t,err:i})});break}case\"copy-from\":{let{buffer:r}=n,o=mt(r);postMessage({type:t,out:o});break}case\"create\":{let{model:r,options:o}=n;zt(r,o).then(i=>{postMessage({type:t,out:i})},i=>{postMessage({type:t,err:i})});break}case\"release\":Bt(n),postMessage({type:t});break;case\"run\":{let{sessionId:r,inputIndices:o,inputs:i,outputIndices:s,options:a}=n;Dt(r,o,i,s,new Array(s.length).fill(null),a).then(u=>{u.some(d=>d[3]!==\"cpu\")?postMessage({type:t,err:\"Proxy does not support non-cpu tensor location.\"}):postMessage({type:t,out:u},Mt([...i,...u]))},u=>{postMessage({type:t,err:u})});break}case\"end-profiling\":Ot(n),postMessage({type:t});break;default:}}catch(r){postMessage({type:t,err:r})}});qu=Zr?null:e=>new Worker(e??we,{type:\"classic\",name:jr})});var Fu,Ku,we,Ut,kn,ju,Zu,eo,Qu,Yr,to,Jr,no,At=k(()=>{\"use strict\";Ct();Fu=typeof location>\"u\"?void 0:location.origin,Ku=()=>{if(!!1)return typeof document<\"u\"?document.currentScript?.src:typeof self<\"u\"?self.location?.href:void 0},we=Ku(),Ut=()=>{if(we&&!we.startsWith(\"blob:\"))return we.substring(0,we.lastIndexOf(\"/\")+1)},kn=(e,t)=>{try{let n=t??we;return(n?new URL(e,n):new URL(e)).origin===Fu}catch{return!1}},ju=(e,t)=>{let n=t??we;try{return(n?new URL(e,n):new URL(e)).href}catch{return}},Zu=(e,t)=>`${t??\"./\"}${e}`,eo=async e=>{let n=await(await fetch(e,{credentials:\"same-origin\"})).blob();return URL.createObjectURL(n)},Qu=async e=>(await import(/*webpackIgnore:true*/ /*@vite-ignore*/e)).default,Yr=(Xr(),lt(Qr)).default,to=async()=>{if(!we)throw new Error(\"Failed to load proxy worker: cannot determine the script source URL.\");if(kn(we))return[void 0,Yr()];let e=await eo(we);return[e,Yr(e)]},Jr=void 0,no=async(e,t,n,r)=>{let o=Jr&&!(e||t);if(o)if(we)o=kn(we)||r&&!n;else if(r&&!n)o=!0;else throw new Error(\"cannot determine the script source URL.\");if(o)return[void 0,Jr];{let i=\"ort-wasm-simd-threaded.jsep.mjs\",s=e??ju(i,t),a=!!1&&n&&s&&!kn(s,t),u=a?await eo(s):s??Zu(i,t);return[a?u:void 0,await Qu(u)]}}});var Pn,zn,Rt,ro,Xu,Yu,Ju,Et,ne,We=k(()=>{\"use strict\";At();zn=!1,Rt=!1,ro=!1,Xu=()=>{if(typeof SharedArrayBuffer>\"u\")return!1;try{return typeof MessageChannel<\"u\"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},Yu=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},Ju=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,19,1,17,0,65,1,253,15,65,2,253,15,65,3,253,15,253,147,2,11]))}catch{return!1}},Et=async e=>{if(zn)return Promise.resolve();if(Rt)throw new Error(\"multiple calls to 'initializeWebAssembly()' detected.\");if(ro)throw new Error(\"previous call to 'initializeWebAssembly()' failed.\");Rt=!0;let t=e.initTimeout,n=e.numThreads;if(e.simd!==!1){if(e.simd===\"relaxed\"){if(!Ju())throw new Error(\"Relaxed WebAssembly SIMD is not supported in the current environment.\")}else if(!Yu())throw new Error(\"WebAssembly SIMD is not supported in the current environment.\")}let r=Xu();n>1&&!r&&(typeof self<\"u\"&&!self.crossOriginIsolated&&console.warn(\"env.wasm.numThreads is set to \"+n+\", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info.\"),console.warn(\"WebAssembly multi-threading is not supported in the current environment. Falling back to single-threading.\"),e.numThreads=n=1);let o=e.wasmPaths,i=typeof o==\"string\"?o:void 0,s=o?.mjs,a=s?.href??s,u=o?.wasm,d=u?.href??u,l=e.wasmBinary,[c,p]=await no(a,i,n>1,!!l||!!d),f=!1,m=[];if(t>0&&m.push(new Promise(h=>{setTimeout(()=>{f=!0,h()},t)})),m.push(new Promise((h,b)=>{let y={numThreads:n};if(l)y.wasmBinary=l,y.locateFile=g=>g;else if(d||i)y.locateFile=g=>d??i+g;else if(a&&a.indexOf(\"blob:\")!==0)y.locateFile=g=>new URL(g,a).href;else if(c){let g=Ut();g&&(y.locateFile=_=>g+_)}p(y).then(g=>{Rt=!1,zn=!0,Pn=g,h(),c&&URL.revokeObjectURL(c)},g=>{Rt=!1,ro=!0,b(g)})})),await Promise.race(m),f)throw new Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`)},ne=()=>{if(zn&&Pn)return Pn;throw new Error(\"WebAssembly is not initialized yet.\")}});var $e,ft,Y,Vt=k(()=>{\"use strict\";We();$e=(e,t)=>{let n=ne(),r=n.lengthBytesUTF8(e)+1,o=n._malloc(r);return n.stringToUTF8(e,o,r),t.push(o),o},ft=(e,t,n,r)=>{if(typeof e==\"object\"&&e!==null){if(n.has(e))throw new Error(\"Circular reference in options\");n.add(e)}Object.entries(e).forEach(([o,i])=>{let s=t?t+o:o;if(typeof i==\"object\")ft(i,s+\".\",n,r);else if(typeof i==\"string\"||typeof i==\"number\")r(s,i.toString());else if(typeof i==\"boolean\")r(s,i?\"1\":\"0\");else throw new Error(`Can't handle extra config type: ${typeof i}`)})},Y=e=>{let t=ne(),n=t.stackSave();try{let r=t.PTR_SIZE,o=t.stackAlloc(2*r);t._OrtGetLastError(o,o+r);let i=Number(t.getValue(o,r===4?\"i32\":\"i64\")),s=t.getValue(o+r,\"*\"),a=s?t.UTF8ToString(s):\"\";throw new Error(`${e} ERROR_CODE: ${i}, ERROR_MESSAGE: ${a}`)}finally{t.stackRestore(n)}}});var oo,io=k(()=>{\"use strict\";We();Vt();oo=e=>{let t=ne(),n=0,r=[],o=e||{};try{if(e?.logSeverityLevel===void 0)o.logSeverityLevel=2;else if(typeof e.logSeverityLevel!=\"number\"||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>4)throw new Error(`log severity level is not valid: ${e.logSeverityLevel}`);if(e?.logVerbosityLevel===void 0)o.logVerbosityLevel=0;else if(typeof e.logVerbosityLevel!=\"number\"||!Number.isInteger(e.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${e.logVerbosityLevel}`);e?.terminate===void 0&&(o.terminate=!1);let i=0;return e?.tag!==void 0&&(i=$e(e.tag,r)),n=t._OrtCreateRunOptions(o.logSeverityLevel,o.logVerbosityLevel,!!o.terminate,i),n===0&&Y(\"Can't create run options.\"),e?.extra!==void 0&&ft(e.extra,\"\",new WeakSet,(s,a)=>{let u=$e(s,r),d=$e(a,r);t._OrtAddRunConfigEntry(n,u,d)!==0&&Y(`Can't set a run config entry: ${s} - ${a}.`)}),[n,r]}catch(i){throw n!==0&&t._OrtReleaseRunOptions(n),r.forEach(s=>t._free(s)),i}}});var ed,td,nd,Nt,rd,so,ao=k(()=>{\"use strict\";We();Vt();ed=e=>{switch(e){case\"disabled\":return 0;case\"basic\":return 1;case\"extended\":return 2;case\"layout\":return 3;case\"all\":return 99;default:throw new Error(`unsupported graph optimization level: ${e}`)}},td=e=>{switch(e){case\"sequential\":return 0;case\"parallel\":return 1;default:throw new Error(`unsupported execution mode: ${e}`)}},nd=e=>{e.extra||(e.extra={}),e.extra.session||(e.extra.session={});let t=e.extra.session;t.use_ort_model_bytes_directly||(t.use_ort_model_bytes_directly=\"1\"),e.executionProviders&&e.executionProviders.some(n=>(typeof n==\"string\"?n:n.name)===\"webgpu\")&&(e.enableMemPattern=!1)},Nt=(e,t,n,r)=>{let o=$e(t,r),i=$e(n,r);ne()._OrtAddSessionConfigEntry(e,o,i)!==0&&Y(`Can't set a session config entry: ${t} - ${n}.`)},rd=async(e,t,n)=>{let r=t.executionProviders;for(let o of r){let i=typeof o==\"string\"?o:o.name,s=[];switch(i){case\"webnn\":if(i=\"WEBNN\",typeof o!=\"string\"){let p=o?.deviceType;p&&Nt(e,\"deviceType\",p,n)}break;case\"webgpu\":if(i=\"JS\",typeof o!=\"string\"){let c=o;if(c?.preferredLayout){if(c.preferredLayout!==\"NCHW\"&&c.preferredLayout!==\"NHWC\")throw new Error(`preferredLayout must be either 'NCHW' or 'NHWC': ${c.preferredLayout}`);Nt(e,\"preferredLayout\",c.preferredLayout,n)}}break;case\"wasm\":case\"cpu\":continue;default:throw new Error(`not supported execution provider: ${i}`)}let a=$e(i,n),u=s.length,d=0,l=0;if(u>0){d=ne()._malloc(u*ne().PTR_SIZE),n.push(d),l=ne()._malloc(u*ne().PTR_SIZE),n.push(l);for(let c=0;c<u;c++)ne().setValue(d+c*ne().PTR_SIZE,s[c][0],\"*\"),ne().setValue(l+c*ne().PTR_SIZE,s[c][1],\"*\")}await ne()._OrtAppendExecutionProvider(e,a,d,l,u)!==0&&Y(`Can't append execution provider: ${i}.`)}},so=async e=>{let t=ne(),n=0,r=[],o=e||{};nd(o);try{let i=ed(o.graphOptimizationLevel??\"all\"),s=td(o.executionMode??\"sequential\"),a=typeof o.logId==\"string\"?$e(o.logId,r):0,u=o.logSeverityLevel??2;if(!Number.isInteger(u)||u<0||u>4)throw new Error(`log severity level is not valid: ${u}`);let d=o.logVerbosityLevel??0;if(!Number.isInteger(d)||d<0||d>4)throw new Error(`log verbosity level is not valid: ${d}`);let l=typeof o.optimizedModelFilePath==\"string\"?$e(o.optimizedModelFilePath,r):0;if(n=t._OrtCreateSessionOptions(i,!!o.enableCpuMemArena,!!o.enableMemPattern,s,!!o.enableProfiling,0,a,u,d,l),n===0&&Y(\"Can't create session options.\"),o.executionProviders&&await rd(n,o,r),o.enableGraphCapture!==void 0){if(typeof o.enableGraphCapture!=\"boolean\")throw new Error(`enableGraphCapture must be a boolean value: ${o.enableGraphCapture}`);Nt(n,\"enableGraphCapture\",o.enableGraphCapture.toString(),r)}if(o.freeDimensionOverrides)for(let[c,p]of Object.entries(o.freeDimensionOverrides)){if(typeof c!=\"string\")throw new Error(`free dimension override name must be a string: ${c}`);if(typeof p!=\"number\"||!Number.isInteger(p)||p<0)throw new Error(`free dimension override value must be a non-negative integer: ${p}`);let f=$e(c,r);t._OrtAddFreeDimensionOverride(n,f,p)!==0&&Y(`Can't set a free dimension override: ${c} - ${p}.`)}return o.extra!==void 0&&ft(o.extra,\"\",new WeakSet,(c,p)=>{Nt(n,c,p,r)}),[n,r]}catch(i){throw n!==0&&t._OrtReleaseSessionOptions(n)!==0&&Y(\"Can't release session options.\"),r.forEach(s=>t._free(s)),i}}});var He,Ee,qe,ot,ht,Lt,Gt,Bn,L=k(()=>{\"use strict\";He=e=>{switch(e){case\"int8\":return 3;case\"uint8\":return 2;case\"bool\":return 9;case\"int16\":return 5;case\"uint16\":return 4;case\"int32\":return 6;case\"uint32\":return 12;case\"float16\":return 10;case\"float32\":return 1;case\"float64\":return 11;case\"string\":return 8;case\"int64\":return 7;case\"uint64\":return 13;case\"int4\":return 22;case\"uint4\":return 21;default:throw new Error(`unsupported data type: ${e}`)}},Ee=e=>{switch(e){case 3:return\"int8\";case 2:return\"uint8\";case 9:return\"bool\";case 5:return\"int16\";case 4:return\"uint16\";case 6:return\"int32\";case 12:return\"uint32\";case 10:return\"float16\";case 1:return\"float32\";case 11:return\"float64\";case 8:return\"string\";case 7:return\"int64\";case 13:return\"uint64\";case 22:return\"int4\";case 21:return\"uint4\";default:throw new Error(`unsupported data type: ${e}`)}},qe=(e,t)=>{let n=[-1,4,1,1,2,2,4,8,-1,1,2,8,4,8,-1,-1,-1,-1,-1,-1,-1,.5,.5][e],r=typeof t==\"number\"?t:t.reduce((o,i)=>o*i,1);return n>0?Math.ceil(r*n):void 0},ot=e=>{switch(e){case\"float16\":return typeof Float16Array<\"u\"&&Float16Array.from?Float16Array:Uint16Array;case\"float32\":return Float32Array;case\"uint8\":return Uint8Array;case\"int8\":return Int8Array;case\"uint16\":return Uint16Array;case\"int16\":return Int16Array;case\"int32\":return Int32Array;case\"bool\":return Uint8Array;case\"float64\":return Float64Array;case\"uint32\":return Uint32Array;case\"int64\":return BigInt64Array;case\"uint64\":return BigUint64Array;default:throw new Error(`unsupported type: ${e}`)}},ht=e=>{switch(e){case\"verbose\":return 0;case\"info\":return 1;case\"warning\":return 2;case\"error\":return 3;case\"fatal\":return 4;default:throw new Error(`unsupported logging level: ${e}`)}},Lt=e=>e===\"float32\"||e===\"float16\"||e===\"int32\"||e===\"int64\"||e===\"uint32\"||e===\"uint8\"||e===\"bool\"||e===\"uint4\"||e===\"int4\",Gt=e=>e===\"float32\"||e===\"float16\"||e===\"int32\"||e===\"int64\"||e===\"uint32\"||e===\"uint64\"||e===\"int8\"||e===\"uint8\"||e===\"bool\"||e===\"uint4\"||e===\"int4\",Bn=e=>{switch(e){case\"none\":return 0;case\"cpu\":return 1;case\"cpu-pinned\":return 2;case\"texture\":return 3;case\"gpu-buffer\":return 4;case\"ml-tensor\":return 5;default:throw new Error(`unsupported data location: ${e}`)}}});var gt,Dn=k(()=>{\"use strict\";Ct();gt=async e=>{if(typeof e==\"string\")if(!1)try{let{readFile:t}=vn(\"node:fs/promises\");return new Uint8Array(await t(e))}catch(t){if(t.code===\"ERR_FS_FILE_TOO_LARGE\"){let{createReadStream:n}=vn(\"node:fs\"),r=n(e),o=[];for await(let i of r)o.push(i);return new Uint8Array(Buffer.concat(o))}throw t}else{let t=await fetch(e);if(!t.ok)throw new Error(`failed to load external data file: ${e}`);let n=t.headers.get(\"Content-Length\"),r=n?parseInt(n,10):0;if(r<1073741824)return new Uint8Array(await t.arrayBuffer());{if(!t.body)throw new Error(`failed to load external data file: ${e}, no response body.`);let o=t.body.getReader(),i;try{i=new ArrayBuffer(r)}catch(a){if(a instanceof RangeError){let u=Math.ceil(r/65536);i=new WebAssembly.Memory({initial:u,maximum:u}).buffer}else throw a}let s=0;for(;;){let{done:a,value:u}=await o.read();if(a)break;let d=u.byteLength;new Uint8Array(i,s,d).set(u),s+=d}return new Uint8Array(i,0,r)}}else return e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e)}});var od,id,uo,lo,Wt,sd,Z,ke=k(()=>{\"use strict\";L();od=[\"V\",\"I\",\"W\",\"E\",\"F\"],id=(e,t)=>{console.log(`[${od[e]},${new Date().toISOString()}]${t}`)},Wt=(e,t)=>{uo=e,lo=t},sd=(e,t)=>{let n=ht(e),r=ht(uo);n>=r&&id(n,typeof t==\"function\"?t():t)},Z=(...e)=>{lo&&sd(...e)}});var On,Pe,x,Ye,Ht,co,po,F=k(()=>{\"use strict\";On=class{static calcMatMulShape(t,n){return t[1]!==n[0]?void 0:[t[0],n[1]]}},Pe=class{static calcShape(t,n,r=!1){let o=t.length,i=n.length;if(o===0)return n;if(i===0)return t;let s=Math.max(t.length,n.length),a=new Array(s);if(r){if(o<2||i<2)return;let u=On.calcMatMulShape([t[o-2],t[o-1]],[n[i-2],n[i-1]]);if(u===void 0)return;[a[s-2],a[s-1]]=u}for(let u=r?3:1;u<=s;u++){let d=o-u<0?1:t[o-u],l=i-u<0?1:n[i-u];if(d!==l&&d>1&&l>1)return;let c=Math.max(d,l);if(d&&l)a[s-u]=Math.max(d,l);else{if(c>1)return;a[s-u]=0}}return a}static isValidBroadcast(t,n){let r=t.length,o=n.length;if(r>o)return!1;for(let i=1;i<=r;i++)if(t[r-i]!==1&&t[r-i]!==n[o-i])return!1;return!0}},x=class e{static size(t){return e.getSizeFromDimensionRange(t,0,t.length)}static convertShape(t,n=4){let r=t.length;if(r===0)return[];let o=new Array(r),i=r-1;for(;i>=0;){if(t[i]%n===0){o[i]=t[i]/n;break}if(n%t[i]!==0)throw new Error(\"cannot convert shape\");o[i]=1,n/=t[i],i--}for(i--;i>=0;i--)o[i]=t[i];return o}static sizeFromDimension(t,n){if(n<0||n>t.length)throw new Error(`invalid dimension of ${n} for sizeFromDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,n,t.length)}static sizeToDimension(t,n){if(n<0||n>t.length)throw new Error(`invalid dimension of ${n} for sizeToDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,0,n)}static getSizeFromDimensionRange(t,n,r){let o=1;for(let i=n;i<r;i++){if(t[i]<0)throw new Error(\"cannot get valid size from specified dimension range. Most likely the range contains negative values in them.\");o*=Number(t[i])}return o}static computeStrides(t){let n=t.length;if(n===0)return[];if(n===1)return[1];let r=new Array(n);r[n-1]=1,r[n-2]=t[n-1];for(let o=n-3;o>=0;--o)r[o]=r[o+1]*t[o+1];return r}static normalizeAxis(t,n){if(t<-n&&t>=n)throw new Error(\"unsupported axis for this operation.\");return t<0?t+n:t}static normalizeAxes(t,n){return t.map(r=>this.normalizeAxis(r,n??t.length))}static sortBasedOnPerm(t,n){return n?n.map(r=>t[r]):t.slice().reverse()}static padShape(t,n){let r=t.length;return t.map((o,i)=>o+n[i]+n[i+r])}static areEqual(t,n){return t.length!==n.length?!1:t.every((r,o)=>r===n[o])}},Ye=class e{static adjustPoolAttributes(t,n,r,o,i,s){if(!t&&r.length!==n.length-2)throw new Error(\"length of specified kernel shapes should be 2 less than length of input dimensions\");if(t)for(let a=0;a<n.length-2;a++)a>=r.length?r.push(n[a+2]):r[a]=n[a+2];for(let a=0;a<r.length;a++)if(a<o.length){if(o[a]<0)throw new Error(\"strides should be greater than or equal to 1\")}else o.push(1);for(let a=0;a<r.length;a++)if(a<i.length){if(i[a]<0)throw new Error(\"dilations should be greater than or equal to 1\")}else i.push(1);for(let a=0;a<r.length*2;a++)if(a<s.length){if(s[a]<0)throw new Error(\"pad should be greater than or equal to 1\")}else s.push(0);for(let a=0;a<r.length;a++){if(r[a]<=0)throw new Error(\"kernel shapes need to be greater than 0\");if(s[a]>=r[a]||s[a+r.length]>=r[a])throw new Error(\"pads should be smaller than kernel\")}}static adjustPadsBasedOnAutoPad(t,n,r,o,i,s,a){if(a){if(i.length!==2*(t.length-2))throw new Error(\"length of pads should be twice the length of data dimensions\");if(n.length!==t.length-2)throw new Error(\"length of strides should be the length of data dimensions\");if(o.length!==t.length-2)throw new Error(\"length of kernel shapes should be the length of data dimensions\");for(let u=0;u<t.length-2;u++)e.adjustPadAndReturnShape(t[u+(s?1:2)],n[u],r[u],o[u],i,u,u+t.length-2,a)}}static computePoolOutputShape(t,n,r,o,i,s,a){if(n.length<=0)throw new Error(\"input shape must be of size greater than 0\");let u=[n[0],n[1]];return e.computeShapeHelper(t,n,u,r,o,i,s,a),u}static computeConvOutputShape(t,n,r,o,i,s,a){if(t.length<=0||n.length<=0)throw new Error(\"invalid input tensor dims or invalid filter tensor dims\");let u=[t[0],n[0]];return e.computeShapeHelper(!1,t,u,r,o,i,s,a),u}static computeShapeHelper(t,n,r,o,i,s,a,u){if(t)for(let d=0;d<n.length-2;d++)r.push(1);else for(let d=0;d<n.length-2;d++)r.push(e.adjustPadAndReturnShape(n[d+2],o[d],i[d],s[d],a,d,d+n.length-2,u))}static adjustPadAndReturnShape(t,n,r,o,i,s,a,u){let d=r*(o-1)+1;if(u&&u!==\"NOTSET\")switch(u){case\"VALID\":return i[s]=0,i[a]=0,Math.floor((t-d)/n+1);case\"SAME_LOWER\":case\"SAME_UPPER\":if(r!==1)throw new Error(\"Dilation not supported for SAME_UPPER or SAME_LOWER\");{let c=((t+n-1)/n-1)*n+o-t;return i[s]=Math.floor(u===\"SAME_LOWER\"?(c+1)/2:c/2),i[a]=c-i[s],Math.floor((t+c-o)/n+1)}default:throw new Error(\"Unsupported AutoPad type\")}else return Math.floor((t+i[s]+i[a]-d)/n+1)}},Ht=class{static getShapeOfGemmResult(t,n,r,o,i){if(t.length!==2||r.length!==2)throw new Error(\"shape need to be of size 2\");let s,a,u;n?(s=t[1],a=t[0]):(s=t[0],a=t[1]);let d=-1;if(o?(u=r[0],d=1):(u=r[1],d=0),r[d]!==a)throw new Error(\"dimension mismatch\");if(s<=0||u<=0||a<=0)throw new Error(\"invalid shape specified\");if(i&&!Pe.isValidBroadcast(i,[s,u]))throw new Error(\"gemm: invalid bias shape for broadcast\");return[s,u,a]}},co=-34028234663852886e22,po=34028234663852886e22});var qt,Mn=k(()=>{\"use strict\";L();qt=(e,t)=>new(ot(t))(e)});var fo,Rn,ho,ad,mo,ud,go,Ft,Kt,Un,yo,bo=k(()=>{\"use strict\";L();ke();fo=new Map([[\"float32\",32],[\"float16\",16],[\"int32\",32],[\"uint32\",32],[\"int64\",64],[\"uint64\",64],[\"int8\",8],[\"uint8\",8],[\"int4\",4],[\"uint4\",4]]),Rn=(e,t)=>{if(t===\"int32\")return e;let n=fo.get(t);if(!n)throw new Error(`WebNN backend does not support data type: ${t}`);let r=n/8;if(e.byteLength%r!==0)throw new Error(`Invalid Uint8Array length - must be a multiple of ${r}.`);let o=e.byteLength/r,i=new(ot(t))(e.buffer,e.byteOffset,o);switch(t){case\"int64\":case\"uint64\":{let s=new Int32Array(o);for(let a=0;a<o;a++){let u=i[a];if(u>2147483647n||u<-2147483648n)throw new Error(\"Can not convert int64 data to int32 - value out of range.\");s[a]=Number(u)}return new Uint8Array(s.buffer)}case\"int8\":case\"uint8\":case\"uint32\":{if(t===\"uint32\"&&i.some(a=>a>2147483647))throw new Error(\"Can not convert uint32 data to int32 - value out of range.\");let s=Int32Array.from(i,Number);return new Uint8Array(s.buffer)}default:throw new Error(`Unsupported data conversion from ${t} to 'int32'`)}},ho=(e,t)=>{if(t===\"int32\")return e;if(e.byteLength%4!==0)throw new Error(\"Invalid Uint8Array length - must be a multiple of 4 (int32).\");let n=e.byteLength/4,r=new Int32Array(e.buffer,e.byteOffset,n);switch(t){case\"int64\":{let o=BigInt64Array.from(r,BigInt);return new Uint8Array(o.buffer)}case\"uint64\":{if(r.some(i=>i<0))throw new Error(\"Can not convert int32 data to uin64 - negative value found.\");let o=BigUint64Array.from(r,BigInt);return new Uint8Array(o.buffer)}case\"int8\":{if(r.some(i=>i<-128||i>127))throw new Error(\"Can not convert int32 data to int8 - value out of range.\");let o=Int8Array.from(r,Number);return new Uint8Array(o.buffer)}case\"uint8\":{if(r.some(o=>o<0||o>255))throw new Error(\"Can not convert int32 data to uint8 - value out of range.\");return Uint8Array.from(r,Number)}case\"uint32\":{if(r.some(i=>i<0))throw new Error(\"Can not convert int32 data to uint32 - negative value found.\");let o=Uint32Array.from(r,Number);return new Uint8Array(o.buffer)}default:throw new Error(`Unsupported data conversion from 'int32' to ${t}`)}},ad=1,mo=()=>ad++,ud=new Map([[\"int8\",\"int32\"],[\"uint8\",\"int32\"],[\"uint32\",\"int32\"],[\"int64\",\"int32\"]]),go=(e,t)=>{let n=fo.get(e);if(!n)throw new Error(`WebNN backend does not support data type: ${e}`);return t.length>0?Math.ceil(t.reduce((r,o)=>r*o)*n/8):0},Ft=class{constructor(t){this.isDataConverted=!1;let{sessionId:n,context:r,tensor:o,dataType:i,shape:s,fallbackDataType:a}=t;this.sessionId=n,this.mlContext=r,this.mlTensor=o,this.dataType=i,this.tensorShape=s,this.fallbackDataType=a}get tensor(){return this.mlTensor}get type(){return this.dataType}get fallbackType(){return this.fallbackDataType}get shape(){return this.tensorShape}get byteLength(){return go(this.dataType,this.tensorShape)}destroy(){Z(\"verbose\",()=>\"[WebNN] TensorWrapper.destroy\"),this.mlTensor.destroy()}write(t){this.mlContext.writeTensor(this.mlTensor,t)}async read(t){if(this.fallbackDataType){let n=await this.mlContext.readTensor(this.mlTensor),r=ho(new Uint8Array(n),this.dataType);if(t){(t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength)).set(r);return}else return r.buffer}else return t?this.mlContext.readTensor(this.mlTensor,t):this.mlContext.readTensor(this.mlTensor)}canReuseTensor(t,n,r){return this.mlContext===t&&this.dataType===n&&this.tensorShape.length===r.length&&this.tensorShape.every((o,i)=>o===r[i])}setIsDataConverted(t){this.isDataConverted=t}},Kt=class{constructor(t,n){this.tensorManager=t;this.wrapper=n}get tensorWrapper(){return this.wrapper}releaseTensor(){this.tensorWrapper&&(this.tensorManager.releaseTensor(this.tensorWrapper),this.wrapper=void 0)}async ensureTensor(t,n,r,o){let i=this.tensorManager.getMLContext(t),s=this.tensorManager.getMLOpSupportLimits(t),a;if(!s?.input.dataTypes.includes(n)){if(a=ud.get(n),!a||s?.input.dataTypes.includes(a))throw new Error(`WebNN backend does not support data type: ${n}`);Z(\"verbose\",()=>`[WebNN] TensorIdTracker.ensureTensor: fallback dataType from ${n} to ${a}`)}if(this.wrapper){if(this.wrapper.canReuseTensor(i,n,r))return this.wrapper.tensor;if(o){if(this.wrapper.byteLength!==go(n,r))throw new Error(\"Unable to copy data to tensor with different size.\");this.activeUpload=new Uint8Array(await this.wrapper.read())}this.tensorManager.releaseTensor(this.wrapper)}let u=typeof MLTensorUsage>\"u\"?void 0:MLTensorUsage.READ|MLTensorUsage.WRITE;return this.wrapper=await this.tensorManager.getCachedTensor(t,n,r,u,!0,!0,a),o&&this.activeUpload&&(this.wrapper.write(this.activeUpload),this.activeUpload=void 0),this.wrapper.tensor}upload(t){let n=t;if(this.wrapper){if(this.wrapper.fallbackType)if(this.wrapper.fallbackType===\"int32\")n=Rn(t,this.wrapper.type),this.wrapper.setIsDataConverted(!0);else throw new Error(`Unsupported fallback data type: ${this.wrapper.fallbackType}`);if(t.byteLength===this.wrapper.byteLength){this.wrapper.write(n);return}else Z(\"verbose\",()=>\"Data size does not match tensor size. Releasing tensor.\"),this.releaseTensor()}this.activeUpload?this.activeUpload.set(n):this.activeUpload=new Uint8Array(n)}async download(t){if(this.activeUpload){let n=this.wrapper?.isDataConverted?ho(this.activeUpload,this.wrapper?.type):this.activeUpload;if(t){t instanceof ArrayBuffer?new Uint8Array(t).set(n):new Uint8Array(t.buffer,t.byteOffset,t.byteLength).set(n);return}else return n.buffer}if(!this.wrapper)throw new Error(\"Tensor has not been created.\");return t?this.wrapper.read(t):this.wrapper.read()}},Un=class{constructor(t){this.backend=t;this.tensorTrackersById=new Map;this.freeTensors=[];this.externalTensors=new Set}getMLContext(t){let n=this.backend.getMLContext(t);if(!n)throw new Error(\"MLContext not found for session.\");return n}getMLOpSupportLimits(t){return this.backend.getMLOpSupportLimits(t)}reserveTensorId(){let t=mo();return this.tensorTrackersById.set(t,new Kt(this)),t}releaseTensorId(t){let n=this.tensorTrackersById.get(t);n&&(this.tensorTrackersById.delete(t),n.tensorWrapper&&this.releaseTensor(n.tensorWrapper))}async ensureTensor(t,n,r,o,i){Z(\"verbose\",()=>`[WebNN] TensorManager.ensureTensor {tensorId: ${n}, dataType: ${r}, shape: ${o}, copyOld: ${i}}`);let s=this.tensorTrackersById.get(n);if(!s)throw new Error(\"Tensor not found.\");return s.ensureTensor(t,r,o,i)}upload(t,n){let r=this.tensorTrackersById.get(t);if(!r)throw new Error(\"Tensor not found.\");r.upload(n)}async download(t,n){Z(\"verbose\",()=>`[WebNN] TensorManager.download {tensorId: ${t}, dstBuffer: ${n?.byteLength}}`);let r=this.tensorTrackersById.get(t);if(!r)throw new Error(\"Tensor not found.\");return r.download(n)}releaseTensorsForSession(t){for(let n of this.freeTensors)n.sessionId===t&&n.destroy();this.freeTensors=this.freeTensors.filter(n=>n.sessionId!==t)}registerTensor(t,n,r,o){let i=this.getMLContext(t),s=mo(),a=new Ft({sessionId:t,context:i,tensor:n,dataType:r,shape:o});return this.tensorTrackersById.set(s,new Kt(this,a)),this.externalTensors.add(a),s}async getCachedTensor(t,n,r,o,i,s,a){let u=this.getMLContext(t);for(let[l,c]of this.freeTensors.entries())if(c.canReuseTensor(u,n,r)){Z(\"verbose\",()=>`[WebNN] Reusing tensor {dataType: ${n}, ${a?`fallbackDataType: ${a},`:\"\"} shape: ${r}`);let p=this.freeTensors.splice(l,1)[0];return p.sessionId=t,p}Z(\"verbose\",()=>`[WebNN] MLContext.createTensor {dataType: ${n}, ${a?`fallbackDataType: ${a},`:\"\"} shape: ${r}}`);let d=await u.createTensor({dataType:a??n,shape:r,dimensions:r,usage:o,writable:i,readable:s});return new Ft({sessionId:t,context:u,tensor:d,dataType:n,shape:r,fallbackDataType:a})}releaseTensor(t){this.externalTensors.has(t)&&this.externalTensors.delete(t),this.freeTensors.push(t)}},yo=(...e)=>new Un(...e)});var jt,dd,Zt,_o=k(()=>{\"use strict\";L();We();Mn();bo();ke();jt=new Map([[1,\"float32\"],[10,\"float16\"],[6,\"int32\"],[12,\"uint32\"],[7,\"int64\"],[13,\"uint64\"],[22,\"int4\"],[21,\"uint4\"],[3,\"int8\"],[2,\"uint8\"],[9,\"uint8\"]]),dd=(e,t)=>{if(e===t)return!0;if(e===void 0||t===void 0)return!1;let n=Object.keys(e).sort(),r=Object.keys(t).sort();return n.length===r.length&&n.every((o,i)=>o===r[i]&&e[o]===t[o])},Zt=class{constructor(t){this.tensorManager=yo(this);this.mlContextBySessionId=new Map;this.sessionIdsByMLContext=new Map;this.mlContextCache=[];this.sessionGraphInputs=new Map;this.sessionGraphOutputs=new Map;this.temporaryGraphInputs=[];this.temporaryGraphOutputs=[];this.temporarySessionTensorIds=new Map;this.mlOpSupportLimitsBySessionId=new Map;Wt(t.logLevel,!!t.debug)}get currentSessionId(){if(this.activeSessionId===void 0)throw new Error(\"No active session\");return this.activeSessionId}onRunStart(t){Z(\"verbose\",()=>`[WebNN] onRunStart {sessionId: ${t}}`),this.activeSessionId=t}onRunEnd(t){Z(\"verbose\",()=>`[WebNN] onRunEnd {sessionId: ${t}}`);let n=this.temporarySessionTensorIds.get(t);if(n){for(let r of n)Z(\"verbose\",()=>`[WebNN] releasing temporary tensor {tensorId: ${r}}`),this.tensorManager.releaseTensorId(r);this.temporarySessionTensorIds.delete(t),this.activeSessionId=void 0}}async createMLContext(t){if(t instanceof GPUDevice){let r=this.mlContextCache.findIndex(o=>o.gpuDevice===t);if(r!==-1)return this.mlContextCache[r].mlContext;{let o=await navigator.ml.createContext(t);return this.mlContextCache.push({gpuDevice:t,mlContext:o}),o}}else if(t===void 0){let r=this.mlContextCache.findIndex(o=>o.options===void 0&&o.gpuDevice===void 0);if(r!==-1)return this.mlContextCache[r].mlContext;{let o=await navigator.ml.createContext();return this.mlContextCache.push({mlContext:o}),o}}let n=this.mlContextCache.findIndex(r=>dd(r.options,t));if(n!==-1)return this.mlContextCache[n].mlContext;{let r=await navigator.ml.createContext(t);return this.mlContextCache.push({options:t,mlContext:r}),r}}registerMLContext(t,n){this.mlContextBySessionId.set(t,n);let r=this.sessionIdsByMLContext.get(n);r||(r=new Set,this.sessionIdsByMLContext.set(n,r)),r.add(t),this.mlOpSupportLimitsBySessionId.has(t)||this.mlOpSupportLimitsBySessionId.set(t,n.opSupportLimits()),this.temporaryGraphInputs.length>0&&(this.sessionGraphInputs.set(t,this.temporaryGraphInputs),this.temporaryGraphInputs=[]),this.temporaryGraphOutputs.length>0&&(this.sessionGraphOutputs.set(t,this.temporaryGraphOutputs),this.temporaryGraphOutputs=[])}onReleaseSession(t){this.sessionGraphInputs.delete(t),this.sessionGraphOutputs.delete(t);let n=this.mlContextBySessionId.get(t);if(!n)return;this.tensorManager.releaseTensorsForSession(t),this.mlContextBySessionId.delete(t),this.mlOpSupportLimitsBySessionId.delete(t);let r=this.sessionIdsByMLContext.get(n);if(r.delete(t),r.size===0){this.sessionIdsByMLContext.delete(n);let o=this.mlContextCache.findIndex(i=>i.mlContext===n);o!==-1&&this.mlContextCache.splice(o,1)}}getMLContext(t){return this.mlContextBySessionId.get(t)}getMLOpSupportLimits(t){return this.mlOpSupportLimitsBySessionId.get(t)}reserveTensorId(){return this.tensorManager.reserveTensorId()}releaseTensorId(t){Z(\"verbose\",()=>`[WebNN] releaseTensorId {tensorId: ${t}}`),this.tensorManager.releaseTensorId(t)}async ensureTensor(t,n,r,o,i){let s=jt.get(r);if(!s)throw new Error(`Unsupported ONNX data type: ${r}`);return this.tensorManager.ensureTensor(t??this.currentSessionId,n,s,o,i)}async createTemporaryTensor(t,n,r){Z(\"verbose\",()=>`[WebNN] createTemporaryTensor {onnxDataType: ${n}, shape: ${r}}`);let o=jt.get(n);if(!o)throw new Error(`Unsupported ONNX data type: ${n}`);let i=this.tensorManager.reserveTensorId();await this.tensorManager.ensureTensor(t,i,o,r,!1);let s=this.temporarySessionTensorIds.get(t);return s?s.push(i):this.temporarySessionTensorIds.set(t,[i]),i}uploadTensor(t,n){if(!ne().shouldTransferToMLTensor)throw new Error(\"Trying to upload to a MLTensor while shouldTransferToMLTensor is false\");Z(\"verbose\",()=>`[WebNN] uploadTensor {tensorId: ${t}, data: ${n.byteLength}}`),this.tensorManager.upload(t,n)}async downloadTensor(t,n){return this.tensorManager.download(t,n)}createMLTensorDownloader(t,n){return async()=>{let r=await this.tensorManager.download(t);return qt(r,n)}}registerMLTensor(t,n,r,o){let i=jt.get(r);if(!i)throw new Error(`Unsupported ONNX data type: ${r}`);let s=this.tensorManager.registerTensor(t,n,i,o);return Z(\"verbose\",()=>`[WebNN] registerMLTensor {tensor: ${n}, dataType: ${i}, dimensions: ${o}} -> {tensorId: ${s}}`),s}registerMLConstant(t,n,r,o,i,s,a=!1){if(!s)throw new Error(\"External mounted files are not available.\");let u=t;t.startsWith(\"./\")&&(u=t.substring(2));let d=s.get(u);if(!d)throw new Error(`File with name ${u} not found in preloaded files.`);if(n+r>d.byteLength)throw new Error(\"Out of bounds: data offset and length exceed the external file data size.\");let l=d.slice(n,n+r).buffer,c;switch(i.dataType){case\"float32\":c=new Float32Array(l);break;case\"float16\":c=typeof Float16Array<\"u\"&&Float16Array.from?new Float16Array(l):new Uint16Array(l);break;case\"int32\":c=new Int32Array(l);break;case\"uint32\":c=new Uint32Array(l);break;case\"int64\":if(a){let p=Rn(new Uint8Array(l),\"int64\");c=new Int32Array(p.buffer),i.dataType=\"int32\"}else c=new BigInt64Array(l);break;case\"uint64\":c=new BigUint64Array(l);break;case\"int8\":c=new Int8Array(l);break;case\"int4\":case\"uint4\":case\"uint8\":c=new Uint8Array(l);break;default:throw new Error(`Unsupported data type: ${i.dataType} in creating WebNN Constant from external data.`)}return Z(\"verbose\",()=>`[WebNN] registerMLConstant {dataType: ${i.dataType}, shape: ${i.shape}}} ${a?\"(Note: it was int64 data type and registered to int32 as workaround)\":\"\"}`),o.constant(i,c)}registerGraphInput(t){this.temporaryGraphInputs.push(t)}registerGraphOutput(t){this.temporaryGraphOutputs.push(t)}isGraphInput(t,n){let r=this.sessionGraphInputs.get(t);return r?r.includes(n):!1}isGraphOutput(t,n){let r=this.sessionGraphOutputs.get(t);return r?r.includes(n):!1}isGraphInputOutputTypeSupported(t,n,r=!0){let o=jt.get(He(n)),i=this.mlOpSupportLimitsBySessionId.get(t);return typeof o>\"u\"?!1:r?!!i?.input.dataTypes.includes(o):!!i?.output.dataTypes.includes(o)}flush(){}}});var Qt=k(()=>{\"use strict\"});var wo,Vn,Nn,ld,cd,$o,Gn,Ln,xo,So=k(()=>{\"use strict\";ke();Qt();wo=new Map([[64,250],[128,200],[256,200],[512,200],[2048,230],[4096,200],[8192,50],[16384,50],[32768,50],[65536,50],[131072,50],[262144,50],[524288,50],[1048576,50],[2097152,30],[4194304,20],[8388608,10],[12582912,10],[16777216,10],[26214400,15],[33554432,22],[44236800,2],[58982400,6],[67108864,6],[134217728,6],[167772160,6]]),Vn=[],Nn=e=>Math.ceil(Number(e)/16)*16,ld=e=>{for(let t=0;t<Vn.length;t++){let n=Vn[t];if(e<=n)return n}return Math.ceil(e/16)*16},cd=1,$o=()=>cd++,Gn=async(e,t,n,r)=>{let o=Nn(n),i=e.device.createBuffer({size:o,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});try{let s=e.getCommandEncoder();e.endComputePass(),s.copyBufferToBuffer(t,0,i,0,o),e.flush(),await i.mapAsync(GPUMapMode.READ);let a=i.getMappedRange();if(r){let u=r();return u.set(new Uint8Array(a,0,n)),u}else return new Uint8Array(a.slice(0,n))}finally{i.destroy()}},Ln=class{constructor(t){this.backend=t;this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.buffersPending=[],this.capturedPendingBuffers=new Map;for(let[n]of wo)Vn.push(n),this.freeBuffers.set(n,[]),this.freeUniformBuffers.set(n,[]);this.sessionCount=0}upload(t,n){let r=n.buffer,o=n.byteOffset,i=n.byteLength,s=Nn(i),a=this.storageCache.get(t);if(!a)throw new Error(\"gpu data for uploading does not exist\");if(Number(a.originalSize)!==i)throw new Error(`inconsistent data size. gpu data size=${a.originalSize}, data size=${i}`);let u=this.backend.device.createBuffer({mappedAtCreation:!0,size:s,usage:GPUBufferUsage.MAP_WRITE|GPUBufferUsage.COPY_SRC}),d=u.getMappedRange();new Uint8Array(d).set(new Uint8Array(r,o,i)),u.unmap();let l=this.backend.device.createCommandEncoder();l.copyBufferToBuffer(u,0,a.gpuData.buffer,0,s),this.backend.device.queue.submit([l.finish()]),u.destroy(),Z(\"verbose\",()=>`[WebGPU] GpuDataManager.upload(id=${t})`)}memcpy(t,n){let r=this.storageCache.get(t);if(!r)throw new Error(\"source gpu data for memcpy does not exist\");let o=this.storageCache.get(n);if(!o)throw new Error(\"destination gpu data for memcpy does not exist\");if(r.originalSize!==o.originalSize)throw new Error(\"inconsistent source and destination gpu data size\");let i=Nn(r.originalSize),s=this.backend.getCommandEncoder();this.backend.endComputePass(),s.copyBufferToBuffer(r.gpuData.buffer,0,o.gpuData.buffer,0,i)}registerExternalBuffer(t,n,r){let o;if(r){if(o=r[0],t===r[1])return Z(\"verbose\",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${n}) => id=${o}, buffer is the same, skip.`),o;if(this.backend.capturedCommandList.has(this.backend.currentSessionId))throw new Error(`Registering a different external buffer under graph capture mode is not supported yet.\n Please use the previous external buffer!`)}else o=$o();return this.storageCache.set(o,{gpuData:{id:o,type:0,buffer:t},originalSize:n}),Z(\"verbose\",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${n}) => id=${o}, registered.`),o}unregisterExternalBuffer(t){t!==void 0&&(this.storageCache.delete(t),Z(\"verbose\",()=>`[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${t}`))}create(t,n=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST){let r=ld(t),o,i=(n&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE,s=(n&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM;if(i||s){let d=(i?this.freeBuffers:this.freeUniformBuffers).get(r);d?d.length>0?o=d.pop():o=this.backend.device.createBuffer({size:r,usage:n}):o=this.backend.device.createBuffer({size:r,usage:n})}else o=this.backend.device.createBuffer({size:r,usage:n});let a={id:$o(),type:0,buffer:o};return this.storageCache.set(a.id,{gpuData:a,originalSize:Number(t)}),Z(\"verbose\",()=>`[WebGPU] GpuDataManager.create(size=${t}) => id=${a.id}`),a}get(t){return this.storageCache.get(t)?.gpuData}release(t){let n=typeof t==\"bigint\"?Number(t):t,r=this.storageCache.get(n);if(!r){if(this.storageCache.size===0)return 0;throw new Error(\"releasing data does not exist\")}return Z(\"verbose\",()=>`[WebGPU] GpuDataManager.release(id=${n}), gpuDataId=${r.gpuData.id}`),this.storageCache.delete(n),this.buffersPending.push(r.gpuData.buffer),r.originalSize}async download(t,n){let r=this.storageCache.get(Number(t));if(!r)throw new Error(\"data does not exist\");await Gn(this.backend,r.gpuData.buffer,r.originalSize,n)}refreshPendingBuffers(){if(this.buffersPending.length!==0)if(this.backend.sessionStatus===\"default\"){for(let t of this.buffersPending){let n=wo.get(t.size);if((t.usage&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE){let r=this.freeBuffers.get(t.size)||[];n===void 0||r.length>=n?t.destroy():r.push(t)}else if((t.usage&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM){let r=this.freeUniformBuffers.get(t.size)||[];n===void 0||r.length>=n?t.destroy():r.push(t)}else t.destroy()}this.buffersPending=[]}else{let t=this.capturedPendingBuffers.get(this.backend.currentSessionId);t||(t=[],this.capturedPendingBuffers.set(this.backend.currentSessionId,t));for(let n of this.buffersPending)t.push(n);this.buffersPending=[]}}dispose(){this.freeBuffers.forEach(t=>{t.forEach(n=>{n.destroy()})}),this.freeUniformBuffers.forEach(t=>{t.forEach(n=>{n.destroy()})}),this.storageCache.forEach(t=>{t.gpuData.buffer.destroy()}),this.capturedPendingBuffers.forEach(t=>{t.forEach(n=>{n.destroy()})}),this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.capturedPendingBuffers=new Map}onCreateSession(){this.sessionCount+=1}onReleaseSession(t){let n=this.capturedPendingBuffers.get(t);n&&(n.forEach(r=>{r.destroy()}),this.capturedPendingBuffers.delete(t)),this.sessionCount-=1,this.sessionCount===0&&(Z(\"warning\",()=>\"[WebGPU] Clearing webgpu buffer cache\"),this.storageCache.forEach(r=>{r.gpuData.buffer.destroy()}),this.storageCache=new Map)}},xo=(...e)=>new Ln(...e)});var Wn,G,ie=k(()=>{\"use strict\";Wn=class{constructor(t){Object.assign(this,t)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map(t=>`${this[t]}`).join(\";\")),this.key}},G=e=>new Wn(e)});var Je,qn,re,ce,P,J,Fn,et,Te,B,Xt,S,C,To,Yt,Hn,Io,j=k(()=>{\"use strict\";L();F();Je=64,qn=(e,t)=>{if(t===3)throw new Error(\"vec3 has same alignment as vec4, use vec4 instead\");switch(Number(e)){case 10:return t>1?`vec${t}<f16>`:\"f16\";case 1:return t>1?`vec${t}<f32>`:\"f32\";case 6:return t>1?`vec${t}<i32>`:\"i32\";case 12:return t>1?`vec${t}<u32>`:\"u32\";case 7:if(t>1)throw new Error(\"currently not supported vecX of uint64 yet\");return[\"vec2<u32>\",\"i32\"];case 13:if(t>1)throw new Error(\"currently not supported vecX of uint64 yet\");return[\"vec2<u32>\",\"u32\"];case 9:if(t!==4)throw new Error(\"bool must be vec4\");return[\"u32\",\"vec4<bool>\"];case 22:return\"i32\";case 21:return\"u32\";default:throw new Error(`Unknown data type: ${e}`)}},re=(e,t=1)=>{let n=qn(e,t);return typeof n==\"string\"?n:n[0]},ce=(e,t=1)=>{let n=qn(e,t);return typeof n==\"string\"?n:n[1]},P=(...e)=>{let t=[];return e.forEach(n=>{n.length!==0&&t.push({type:12,data:n},{type:12,data:x.computeStrides(n)})}),t},J=e=>e%4===0?4:e%2===0?2:1,Fn=(e=\"f32\",t,n=\"0\")=>!t||t===1?`${e}(${n})`:`vec${t}<${e}>(${n})`,et=(e,t,n)=>e===\"f32\"?n:t===1?`f32(${n})`:`vec${t}<f32>(${n})`,Te=(e,t)=>t===4?`(${e}.x + ${e}.y + ${e}.z + ${e}.w)`:t===2?`(${e}.x + ${e}.y)`:t===3?`(${e}.x + ${e}.y + ${e}.z)`:e,B=(e,t,n,r)=>e.startsWith(\"uniforms.\")&&n>4?typeof t==\"string\"?r===\"f16\"?`${e}[(${t}) / 8][(${t}) % 8 / 4][(${t}) % 8 % 4]`:`${e}[(${t}) / 4][(${t}) % 4]`:r===\"f16\"?`${e}[${Math.floor(t/8)}][${Math.floor(t%8/4)}][${t%8%4}]`:`${e}[${Math.floor(t/4)}][${t%4}]`:n>1?`${e}[${t}]`:e,Xt=(e,t,n,r,o)=>{let i=typeof n==\"number\",s=i?n:n.length,a=[...new Array(s).keys()],u=s<2?\"u32\":s<=4?`vec${s}<u32>`:`array<u32, ${s}>`,d=qn(t,o),l=typeof d==\"string\"?d:d[1],c=typeof d==\"string\"?d:d[0],p={indices:u,value:l,storage:c,tensor:t},f=E=>typeof E==\"string\"?E:`${E}u`,m={offsetToIndices:!1,indicesToOffset:!1,broadcastedIndicesToOffset:!1,set:!1,setByIndices:!1,get:!1,getByIndices:!1},h=i?\"uniforms.\":\"\",b=`${h}${e}_shape`,y=`${h}${e}_strides`,g=\"\";for(let E=0;E<s-1;E++)g+=`\n let dim${E} = current / ${B(y,E,s)};\n let rest${E} = current % ${B(y,E,s)};\n indices[${E}] = dim${E};\n current = rest${E};\n `;g+=`indices[${s-1}] = current;`;let _=s<2?\"\":`\n fn o2i_${e}(offset: u32) -> ${p.indices} {\n var indices: ${p.indices};\n var current = offset;\n ${g}\n return indices;\n }`,w=E=>(m.offsetToIndices=!0,s<2?E:`o2i_${e}(${E})`),v=[];if(s>=2)for(let E=s-1;E>=0;E--)v.push(`${B(y,E,s)} * (indices[${E}])`);let $=s<2?\"\":`\n fn i2o_${e}(indices: ${p.indices}) -> u32 {\n return ${v.join(\"+\")};\n }`,T=E=>(m.indicesToOffset=!0,s<2?E:`i2o_${e}(${E})`),I=(...E)=>s===0?\"0u\":`${p.indices}(${E.map(f).join(\",\")})`,A=(E,N)=>s<2?`${E}`:`${B(E,N,s)}`,z=(E,N,se)=>s<2?`${E}=${se};`:`${B(E,N,s)}=${se};`,R={},D=(E,N)=>{m.broadcastedIndicesToOffset=!0;let se=`${N.name}broadcastedIndicesTo${e}Offset`;if(se in R)return`${se}(${E})`;let ve=[];for(let ge=s-1;ge>=0;ge--){let je=N.indicesGet(\"outputIndices\",ge+N.rank-s);ve.push(`${A(y,ge)} * (${je} % ${A(b,ge)})`)}return R[se]=`fn ${se}(outputIndices: ${N.type.indices}) -> u32 {\n return ${ve.length>0?ve.join(\"+\"):\"0u\"};\n }`,`${se}(${E})`},U=(E,N)=>(()=>{if(p.storage===p.value)return`${e}[${E}]=${N};`;if(p.storage===\"vec2<u32>\"&&p.value===\"i32\")return`${e}[${E}]=vec2<u32>(u32(${N}), select(0u, 0xFFFFFFFFu, ${N} < 0));`;if(p.storage===\"vec2<u32>\"&&p.value===\"u32\")return`${e}[${E}]=vec2<u32>(u32(${N}), 0u);`;if(p.storage===\"u32\"&&p.value===\"vec4<bool>\")return`${e}[${E}]=dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(${N}));`;throw new Error(`not supported combination of storage type ${p.storage} and value type ${p.value} yet`)})(),Q=E=>(()=>{if(p.storage===p.value)return`${e}[${E}]`;if(p.storage===\"vec2<u32>\"&&p.value===\"i32\")return`i32(${e}[${E}].x)`;if(p.storage===\"vec2<u32>\"&&p.value===\"u32\")return`u32(${e}[${E}].x)`;if(p.storage===\"u32\"&&p.value===\"vec4<bool>\")return`vec4<bool>(bool(${e}[${E}] & 0xFFu), bool(${e}[${E}] & 0xFF00u), bool(${e}[${E}] & 0xFF0000u), bool(${e}[${E}] & 0xFF000000u))`;throw new Error(`not supported combination of storage type ${p.storage} and value type ${p.value} yet`)})(),O=s<2?\"\":`\n fn get_${e}ByIndices(indices: ${p.indices}) -> ${l} {\n return ${Q(`i2o_${e}(indices)`)};\n }`,M=s<2?\"\":(()=>{let E=a.map(se=>`d${se}: u32`).join(\", \"),N=a.map(se=>`d${se}`).join(\", \");return`\n fn get_${e}(${E}) -> ${l} {\n return get_${e}ByIndices(${I(N)});\n }`})(),V=(...E)=>{if(E.length!==s)throw new Error(`indices length must be ${s}`);let N=E.map(f).join(\",\");return s===0?Q(\"0u\"):s===1?Q(N[0]):(m.get=!0,m.getByIndices=!0,m.indicesToOffset=!0,`get_${e}(${N})`)},W=E=>s<2?Q(E):(m.getByIndices=!0,m.indicesToOffset=!0,`get_${e}ByIndices(${E})`),H=s<2?\"\":`\n fn set_${e}ByIndices(indices: ${p.indices}, value: ${l}) {\n ${U(`i2o_${e}(indices)`,\"value\")}\n }`,X=s<2?\"\":(()=>{let E=a.map(se=>`d${se}: u32`).join(\", \"),N=a.map(se=>`d${se}`).join(\", \");return`\n fn set_${e}(${E}, value: ${l}) {\n set_${e}ByIndices(${I(N)}, value);\n }`})();return{impl:()=>{let E=[],N=!1;return m.offsetToIndices&&(E.push(_),N=!0),m.indicesToOffset&&(E.push($),N=!0),m.broadcastedIndicesToOffset&&(Object.values(R).forEach(se=>E.push(se)),N=!0),m.set&&(E.push(X),N=!0),m.setByIndices&&(E.push(H),N=!0),m.get&&(E.push(M),N=!0),m.getByIndices&&(E.push(O),N=!0),!i&&N&&E.unshift(`const ${b} = ${p.indices}(${n.join(\",\")});`,`const ${y} = ${p.indices}(${x.computeStrides(n).join(\",\")});`),E.join(`\n`)},type:p,offsetToIndices:w,indicesToOffset:T,broadcastedIndicesToOffset:D,indices:I,indicesGet:A,indicesSet:z,set:(...E)=>{if(E.length!==s+1)throw new Error(`indices length must be ${s}`);let N=E[s];if(typeof N!=\"string\")throw new Error(\"value must be string\");let se=E.slice(0,s).map(f).join(\",\");return s===0?U(\"0u\",N):s===1?U(se[0],N):(m.set=!0,m.setByIndices=!0,m.indicesToOffset=!0,`set_${e}(${se}, ${N})`)},setByOffset:U,setByIndices:(E,N)=>s<2?U(E,N):(m.setByIndices=!0,m.indicesToOffset=!0,`set_${e}ByIndices(${E}, ${N});`),get:V,getByOffset:Q,getByIndices:W,usage:r,name:e,strides:y,shape:b,rank:s}},S=(e,t,n,r=1)=>Xt(e,t,n,\"input\",r),C=(e,t,n,r=1)=>Xt(e,t,n,\"output\",r),To=(e,t,n)=>Xt(e,t,n,\"atomicOutput\",1),Yt=(e,t,n,r=1)=>Xt(e,t,n,\"internal\",r),Hn=class{constructor(t,n){this.normalizedDispatchGroup=t;this.limits=n;this.internalVariables=[];this.variables=[];this.uniforms=[];this.variableIndex=0}guardAgainstOutOfBoundsWorkgroupSizes(t){return`if (global_idx >= ${typeof t==\"number\"?`${t}u`:t}) { return; }`}mainStart(t=Je){let n=typeof t==\"number\"?t:t[0],r=typeof t==\"number\"?1:t[1],o=typeof t==\"number\"?1:t[2];if(n>this.limits.maxComputeWorkgroupSizeX||r>this.limits.maxComputeWorkgroupSizeY||o>this.limits.maxComputeWorkgroupSizeZ)throw new Error(`workgroup size [${n}, ${r}, ${o}] exceeds the maximum workgroup size [${this.limits.maxComputeWorkgroupSizeX}, ${this.limits.maxComputeWorkgroupSizeY}, ${this.limits.maxComputeWorkgroupSizeZ}].`);if(n*r*o>this.limits.maxComputeInvocationsPerWorkgroup)throw new Error(`workgroup size [${n}, ${r}, ${o}] exceeds the maximum workgroup invocations ${this.limits.maxComputeInvocationsPerWorkgroup}.`);let i=this.normalizedDispatchGroup[1]===1&&this.normalizedDispatchGroup[2]===1,s=i?`@builtin(global_invocation_id) global_id : vec3<u32>,\n @builtin(workgroup_id) workgroup_id : vec3<u32>,\n @builtin(local_invocation_index) local_idx : u32,\n @builtin(local_invocation_id) local_id : vec3<u32>`:`@builtin(global_invocation_id) global_id : vec3<u32>,\n @builtin(local_invocation_id) local_id : vec3<u32>,\n @builtin(local_invocation_index) local_idx : u32,\n @builtin(workgroup_id) workgroup_id : vec3<u32>,\n @builtin(num_workgroups) num_workgroups : vec3<u32>`,a=i?`let global_idx = global_id.x;\n let workgroup_index = workgroup_id.x;`:`let workgroup_index = workgroup_id.z * num_workgroups[0] * num_workgroups[1] +\n workgroup_id.y * num_workgroups[0] + workgroup_id.x;\n let global_idx = workgroup_index * ${n*r*o}u + local_idx;`;return`@compute @workgroup_size(${n}, ${r}, ${o})\n fn main(${s}) {\n ${a}\n `}appendVariableUniforms(t){t.rank!==0&&(t.shape.startsWith(\"uniforms.\")&&this.uniforms.push({name:t.shape.replace(\"uniforms.\",\"\"),type:\"u32\",length:t.rank}),t.strides.startsWith(\"uniforms.\")&&this.uniforms.push({name:t.strides.replace(\"uniforms.\",\"\"),type:\"u32\",length:t.rank}))}declareVariable(t,n){if(t.usage===\"internal\")throw new Error(\"cannot use internal variable with declareVariable(). use registerInternalVariables() instead.\");this.variables.push(t),this.appendVariableUniforms(t);let r=t.usage===\"input\"?\"read\":\"read_write\",o=t.usage===\"atomicOutput\"?\"atomic<i32>\":t.type.storage;return`@group(0) @binding(${n}) var<storage, ${r}> ${t.name}: array<${o}>;`}declareVariables(...t){return t.map(n=>this.declareVariable(n,this.variableIndex++)).join(`\n`)}registerInternalVariable(t){if(t.usage!==\"internal\")throw new Error(\"cannot use input or output variable with registerInternalVariable(). use declareVariables() instead.\");this.internalVariables.push(t),this.appendVariableUniforms(t)}registerInternalVariables(...t){return t.forEach(n=>this.registerInternalVariable(n)),this}registerUniform(t,n,r=1){return this.uniforms.push({name:t,type:n,length:r}),this}registerUniforms(t){return this.uniforms=this.uniforms.concat(t),this}uniformDeclaration(){if(this.uniforms.length===0)return\"\";let t=[];for(let{name:n,type:r,length:o}of this.uniforms)if(o&&o>4)r===\"f16\"?t.push(`@align(16) ${n}:array<mat2x4<${r}>, ${Math.ceil(o/8)}>`):t.push(`${n}:array<vec4<${r}>, ${Math.ceil(o/4)}>`);else{let i=o==null||o===1?r:`vec${o}<${r}>`;t.push(`${n}:${i}`)}return`\n struct Uniforms { ${t.join(\", \")} };\n @group(0) @binding(${this.variableIndex}) var<uniform> uniforms: Uniforms;`}get additionalImplementations(){return this.uniformDeclaration()+this.variables.map(t=>t.impl()).join(`\n`)+this.internalVariables.map(t=>t.impl()).join(`\n`)}get variablesInfo(){if(this.uniforms.length===0)return;let t=n=>[12,10,1,6][[\"u32\",\"f16\",\"f32\",\"i32\"].indexOf(n)];return this.uniforms.map(n=>[t(n.type),n.length??1])}},Io=(e,t)=>new Hn(e,t)});var pd,Co,md,fd,hd,gd,pe,Ao,Eo,Ve=k(()=>{\"use strict\";L();F();ie();j();pd=(e,t)=>{if(!e||e.length!==1)throw new Error(\"Transpose requires 1 input.\");if(t.length!==0&&t.length!==e[0].dims.length)throw new Error(`perm size ${t.length} does not match input rank ${e[0].dims.length}`)},Co=(e,t)=>t.length!==0?t:[...new Array(e).keys()].reverse(),md=(e,t)=>x.sortBasedOnPerm(e,Co(e.length,t)),fd=(e,t,n,r)=>{let o=`fn perm(i: ${r.type.indices}) -> ${n.type.indices} {\n var a: ${n.type.indices};`;for(let i=0;i<t;++i)o+=`a[${e[i]}]=i[${i}];`;return o+=\"return a;}\"},hd=(e,t)=>{let n=[],r=[];for(let o=0;o<e.length;++o)e[o]!==1&&n.push(e[o]),e[t[o]]!==1&&r.push(t[o]);return{newShape:n,newPerm:r}},gd=(e,t)=>{let n=0;for(let r=0;r<e.length;++r)if(t[e[r]]!==1){if(e[r]<n)return!1;n=e[r]}return!0},pe=(e,t)=>{let n=e.dataType,r=e.dims.length,o=Co(r,t),i=md(e.dims,o),s=e.dims,a=i,u=r<2||gd(o,e.dims),d;if(u)return d=h=>{let b=S(\"input\",n,s,4),y=C(\"output\",n,a,4);return`\n ${h.registerUniform(\"output_size\",\"u32\").declareVariables(b,y)}\n ${h.mainStart()}\n ${h.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n output[global_idx] = input[global_idx];\n }`},{name:\"TransposeCopy\",shaderCache:{inputDependencies:[\"type\"]},getRunData:()=>{let h=x.size(i);return{outputs:[{dims:i,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(h/64/4)},programUniforms:[{type:12,data:Math.ceil(h/4)}]}},getShaderSource:d};let{newShape:l,newPerm:c}=hd(e.dims,o),p=x.areEqual(c,[2,3,1]),f=x.areEqual(c,[3,1,2]);if(l.length===2||p||f){s=p?[l[0],l[1]*l[2]]:f?[l[0]*l[1],l[2]]:l,a=[s[1],s[0]];let h=16;return d=b=>{let y=S(\"a\",n,s.length),g=C(\"output\",n,a.length);return`\n ${b.registerUniform(\"output_size\",\"u32\").declareVariables(y,g)}\n var<workgroup> tile : array<array<${g.type.value}, ${h+1}>, ${h}>;\n ${b.mainStart([h,h,1])}\n let stride = (uniforms.output_shape[1] - 1) / ${h} + 1;\n let workgroup_id_x = workgroup_index % stride;\n let workgroup_id_y = workgroup_index / stride;\n let input_col = workgroup_id_y * ${h}u + local_id.x;\n let input_row = workgroup_id_x * ${h}u + local_id.y;\n if (input_row < uniforms.a_shape[0] && input_col < uniforms.a_shape[1]) {\n tile[local_id.y][local_id.x] = ${y.getByIndices(`${y.type.indices}(input_row, input_col)`)};\n }\n workgroupBarrier();\n\n let output_col = workgroup_id_x * ${h}u + local_id.x;\n let output_row = workgroup_id_y * ${h}u + local_id.y;\n if (output_row < uniforms.output_shape[0] && output_col < uniforms.output_shape[1]) {\n ${g.setByIndices(`${g.type.indices}(output_row, output_col)`,\"tile[local_id.x][local_id.y]\")}\n }\n }`},{name:\"TransposeShared\",shaderCache:{inputDependencies:[\"type\"]},getRunData:()=>{let b=x.size(i);return{outputs:[{dims:i,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(a[1]/h),y:Math.ceil(a[0]/h)},programUniforms:[{type:12,data:b},...P(s,a)]}},getShaderSource:d}}return d=h=>{let b=S(\"a\",n,s.length),y=C(\"output\",n,a.length);return`\n ${h.registerUniform(\"output_size\",\"u32\").declareVariables(b,y)}\n\n ${fd(o,r,b,y)}\n\n ${h.mainStart()}\n ${h.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n\n let indices = ${y.offsetToIndices(\"global_idx\")};\n let aIndices = perm(indices);\n\n ${y.setByOffset(\"global_idx\",b.getByIndices(\"aIndices\"))}\n }`},{name:\"Transpose\",shaderCache:{hint:`${t}`,inputDependencies:[\"rank\"]},getRunData:()=>{let h=x.size(i);return{outputs:[{dims:i,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(h/64)},programUniforms:[{type:12,data:h},...P(s,a)]}},getShaderSource:d}},Ao=(e,t)=>{pd(e.inputs,t.perm),e.compute(pe(e.inputs[0],t.perm))},Eo=e=>G({perm:e.perm})});var yd,bd,_d,wd,$d,vd,xd,Sd,Td,Id,ze,ko,Po,zo,Bo,Do,Oo,Mo,Uo,Ro,Vo,No=k(()=>{\"use strict\";L();F();j();Jt();Ve();yd={max:\"select(bestValue, candidate, candidate > bestValue)\",min:\"select(bestValue, candidate, candidate < bestValue)\",mean:\"bestValue + candidate\",sum:\"bestValue + candidate\",prod:\"bestValue * candidate\",sumSquare:\"bestValue + candidate * candidate\",logSumExp:\"bestValue + exp(candidate)\",l1:\"bestValue + abs(candidate)\",l2:\"bestValue + candidate * candidate\",logSum:\"bestValue + candidate\"},bd={max:\"select(bestValue, candidate, candidate > bestValue)\",min:\"select(bestValue, candidate, candidate < bestValue)\",mean:\"bestValue + candidate\",sum:\"bestValue + candidate\",prod:\"bestValue * candidate\",sumSquare:\"bestValue + candidate\",logSumExp:\"bestValue + candidate\",l1:\"bestValue + candidate\",l2:\"bestValue + candidate\",logSum:\"bestValue + candidate\"},_d={max:\"_A[offset]\",min:\"_A[offset]\",mean:\"0\",sum:\"0\",prod:\"1\",sumSquare:\"0\",logSumExp:\"0\",l1:\"0\",l2:\"0\",logSum:\"0\"},wd={max:\"bestValue\",min:\"bestValue\",sum:\"bestValue\",prod:\"bestValue\",sumSquare:\"bestValue\",logSumExp:\"log(bestValue)\",l1:\"bestValue\",l2:\"sqrt(bestValue)\",logSum:\"log(bestValue)\"},$d=(e,t)=>{let n=[];for(let r=t-e;r<t;++r)n.push(r);return n},vd=(e,t)=>{let n=[],r=e.length;for(let i=0;i<r;i++)t.indexOf(i)===-1&&n.push(e[i]);let o=t.map(i=>e[i]);return[n,o]},xd=(e,t)=>{let n=e.length+t.length,r=[],o=0;for(let i=0;i<n;i++)t.indexOf(i)===-1?r.push(e[o++]):r.push(1);return r},Sd=(e,t)=>{for(let n=0;n<e.length;++n)if(e[e.length-n-1]!==t-1-n)return!1;return!0},Td=(e,t)=>{let n=[];if(!Sd(e,t)){for(let r=0;r<t;++r)e.indexOf(r)===-1&&n.push(r);e.forEach(r=>n.push(r))}return n},Id=(e,t,n,r,o,i,s)=>{let a=n[0].dims,u=x.size(i),d=x.size(s),l=S(\"_A\",n[0].dataType,a),c=C(\"output\",o,i),p=64;u===1&&(p=256);let f=`\n var<workgroup> aBestValues : array<f32, ${p}>;\n `,m=h=>`\n ${h.registerUniform(\"reduceSize\",\"u32\").declareVariables(l,c)}\n ${f}\n fn DIV_CEIL(a : u32, b : u32) -> u32 {\n return ((a - 1u) / b + 1u);\n }\n ${h.mainStart(p)}\n\n let outputIndex = global_idx / ${p};\n let offset = outputIndex * uniforms.reduceSize;\n\n var bestValue = f32(${_d[r]});\n let Length = uniforms.reduceSize;\n for (var k = local_idx; k < Length; k = k + ${p}) {\n let candidate = f32(${l.getByOffset(\"offset + k\")});\n bestValue = ${yd[r]};\n }\n aBestValues[local_idx] = bestValue;\n workgroupBarrier();\n\n var reduceSize = min(Length, ${p}u);\n for (var currentSize = reduceSize / 2u; reduceSize > 1u;\n currentSize = reduceSize / 2u) {\n let interval = DIV_CEIL(reduceSize, 2u);\n if (local_idx < currentSize) {\n let candidate = aBestValues[local_idx + interval];\n bestValue = ${bd[r]};\n aBestValues[local_idx] = bestValue;\n }\n reduceSize = interval;\n workgroupBarrier();\n }\n\n if (local_idx == 0u) {\n ${c.setByOffset(\"outputIndex\",`${r===\"mean\"?`${c.type.storage}(bestValue / f32(uniforms.reduceSize))`:`${c.type.storage}(${wd[r]})`}`)};\n }\n }`;return{name:e,shaderCache:{hint:`${t};${p}`,inputDependencies:[\"type\"]},getShaderSource:m,getRunData:()=>({outputs:[{dims:i,dataType:o}],dispatchGroup:{x:u},programUniforms:[{type:12,data:d}]})}},ze=(e,t,n,r)=>{let o=e.inputs.length===1?n:Kn(e.inputs,n),i=o.axes;i.length===0&&!o.noopWithEmptyAxes&&(i=e.inputs[0].dims.map((f,m)=>m));let s=x.normalizeAxes(i,e.inputs[0].dims.length),a=s,u=e.inputs[0],d=Td(a,e.inputs[0].dims.length);d.length>0&&(u=e.compute(pe(e.inputs[0],d),{inputs:[0],outputs:[-1]})[0],a=$d(a.length,u.dims.length));let[l,c]=vd(u.dims,a),p=l;o.keepDims&&(p=xd(l,s)),e.compute(Id(t,o.cacheKey,[u],r,e.inputs[0].dataType,p,c),{inputs:[u]})},ko=(e,t)=>{ze(e,\"ReduceMeanShared\",t,\"mean\")},Po=(e,t)=>{ze(e,\"ReduceL1Shared\",t,\"l1\")},zo=(e,t)=>{ze(e,\"ReduceL2Shared\",t,\"l2\")},Bo=(e,t)=>{ze(e,\"ReduceLogSumExpShared\",t,\"logSumExp\")},Do=(e,t)=>{ze(e,\"ReduceMaxShared\",t,\"max\")},Oo=(e,t)=>{ze(e,\"ReduceMinShared\",t,\"min\")},Mo=(e,t)=>{ze(e,\"ReduceProdShared\",t,\"prod\")},Uo=(e,t)=>{ze(e,\"ReduceSumShared\",t,\"sum\")},Ro=(e,t)=>{ze(e,\"ReduceSumSquareShared\",t,\"sumSquare\")},Vo=(e,t)=>{ze(e,\"ReduceLogSumShared\",t,\"logSum\")}});var Be,Cd,en,Kn,De,Ad,Ed,kd,Pd,zd,Bd,Dd,Od,Md,Ud,Oe,Lo,Go,Wo,Ho,qo,Fo,Ko,jo,Zo,Qo,Jt=k(()=>{\"use strict\";L();F();ie();j();No();Be=e=>{if(!e||e.length===0||e.length>2)throw new Error(\"Reduce op requires 1 or 2 inputs.\");if(e.length===2&&e[1].dims.length!==1)throw new Error(\"Invalid axes input dims.\")},Cd=e=>[\"\",\"\",`var value = ${e.getByIndices(\"input_indices\")};`,\"\"],en=(e,t,n,r,o,i,s=!1,a=!1)=>{let u=[],d=n[0].dims,l=d.length,c=x.normalizeAxes(o,l),p=!a&&c.length===0;d.forEach((b,y)=>{p||c.indexOf(y)>=0?s&&u.push(1):u.push(b)});let f=u.length,m=x.size(u);return{name:e,shaderCache:t,getShaderSource:b=>{let y=[],g=S(\"_A\",n[0].dataType,l),_=C(\"output\",i,f),w=r(g,_,c),v=w[2];for(let $=0,T=0;$<l;$++)p||c.indexOf($)>=0?(s&&T++,v=`for(var j${$}: u32 = 0; j${$} < ${d[$]}; j${$}++) {\n ${w[2].includes(\"last_index\")?`let last_index = j${$};`:\"\"}\n ${g.indicesSet(\"input_indices\",$,`j${$}`)}\n ${v}\n }`):(y.push(`${g.indicesSet(\"input_indices\",$,_.indicesGet(\"output_indices\",T))};`),T++);return`\n\n ${b.registerUniform(\"output_size\",\"u32\").declareVariables(g,_)}\n\n ${b.mainStart()}\n ${b.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n var input_indices: ${g.type.indices};\n let output_indices = ${_.offsetToIndices(\"global_idx\")};\n\n ${y.join(`\n`)}\n ${w[0]} // init ops for reduce max/min\n ${w[1]}\n ${v}\n ${w[3]}\n ${w.length===4?_.setByOffset(\"global_idx\",\"value\"):w.slice(4).join(`\n`)}\n }`},getRunData:()=>({outputs:[{dims:u,dataType:i}],dispatchGroup:{x:Math.ceil(m/64)},programUniforms:[{type:12,data:m},...P(d,u)]})}},Kn=(e,t)=>{let n=[];return e[1].dims[0]>0&&e[1].getBigInt64Array().forEach(r=>n.push(Number(r))),G({axes:n,keepDims:t.keepDims,noopWithEmptyAxes:t.noopWithEmptyAxes})},De=(e,t,n,r)=>{let o=e.inputs,i=o.length===1?n:Kn(o,n);e.compute(en(t,{hint:i.cacheKey,inputDependencies:[\"rank\"]},[o[0]],i.noopWithEmptyAxes&&i.axes.length===0?Cd:r,i.axes,o[0].dataType,i.keepDims,i.noopWithEmptyAxes),{inputs:[0]})},Ad=(e,t)=>{Be(e.inputs),De(e,\"ReduceLogSum\",t,(r,o)=>[`var value = ${o.type.storage}(0);`,\"\",`value += ${r.getByIndices(\"input_indices\")};`,\"value = log(value);\"])},Ed=(e,t)=>{Be(e.inputs),De(e,\"ReduceL1\",t,(r,o)=>[`var value = ${o.type.storage}(0);`,\"\",`value += abs(${r.getByIndices(\"input_indices\")});`,\"\"])},kd=(e,t)=>{Be(e.inputs),De(e,\"ReduceL2\",t,(r,o)=>[`var t = ${o.type.value}(0); var value = ${o.type.value}(0);`,\"\",`t = ${r.getByIndices(\"input_indices\")}; value += (t * t);`,\"value = sqrt(value);\"])},Pd=(e,t)=>{Be(e.inputs),De(e,\"ReduceLogSumExp\",t,(r,o)=>[`var value = ${o.type.storage}(0);`,\"\",`value += exp(${r.getByIndices(\"input_indices\")});`,\"value = log(value);\"])},zd=(e,t)=>{Be(e.inputs),De(e,\"ReduceMax\",t,(r,o,i)=>{let s=[];for(let a=0;a<r.rank;a++)(i.indexOf(a)>=0||i.length===0)&&s.push(r.indicesSet(\"input_indices\",a,0));return[`${s.join(`\n`)}`,`var value = ${r.getByIndices(\"input_indices\")};`,`value = max(value, ${r.getByIndices(\"input_indices\")});`,\"\"]})},Bd=(e,t)=>{Be(e.inputs),De(e,\"ReduceMean\",t,(r,o,i)=>{let s=1;for(let a=0;a<r.rank;a++)(i.indexOf(a)>=0||i.length===0)&&(s*=e.inputs[0].dims[a]);return[\"var sum = f32(0);\",\"\",`sum += f32(${r.getByIndices(\"input_indices\")});`,`let value = ${o.type.value}(sum / ${s});`]})},Dd=(e,t)=>{Be(e.inputs),De(e,\"ReduceMin\",t,(r,o,i)=>{let s=[];for(let a=0;a<r.rank;a++)(i.indexOf(a)>=0||i.length===0)&&s.push(`input_indices[${a}] = 0;`);return[`${s.join(`\n`)}`,`var value = ${r.getByIndices(\"input_indices\")};`,`value = min(value, ${r.getByIndices(\"input_indices\")});`,\"\"]})},Od=(e,t)=>{Be(e.inputs),De(e,\"ReduceProd\",t,(r,o)=>[`var value = ${o.type.storage}(1);`,\"\",`value *= ${r.getByIndices(\"input_indices\")};`,\"\"])},Md=(e,t)=>{Be(e.inputs),De(e,\"ReduceSum\",t,(r,o)=>[`var value = ${o.type.storage}(0);`,\"\",`value += ${r.getByIndices(\"input_indices\")};`,\"\"])},Ud=(e,t)=>{Be(e.inputs),De(e,\"ReduceSumSquare\",t,(r,o)=>[`var t = ${o.type.value}(0); var value = ${o.type.value}(0);`,\"\",`t = ${r.getByIndices(\"input_indices\")}; value += t * t;`,\"\"])},Oe=(e,t,n)=>{if(t.length===0)return n;let r=1,o=1;for(let i=0;i<t.length;i++)t.indexOf(i)===-1?r*=e[i]:o*=e[i];return o<32&&r>1024},Lo=(e,t)=>{Oe(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Bd(e,t):ko(e,t)},Go=(e,t)=>{Oe(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Ed(e,t):Po(e,t)},Wo=(e,t)=>{Oe(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?kd(e,t):zo(e,t)},Ho=(e,t)=>{Oe(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Pd(e,t):Bo(e,t)},qo=(e,t)=>{Oe(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?zd(e,t):Do(e,t)},Fo=(e,t)=>{Oe(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Dd(e,t):Oo(e,t)},Ko=(e,t)=>{Oe(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Od(e,t):Mo(e,t)},jo=(e,t)=>{Oe(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Md(e,t):Uo(e,t)},Zo=(e,t)=>{Oe(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Ud(e,t):Ro(e,t)},Qo=(e,t)=>{Oe(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Ad(e,t):Vo(e,t)}});var Xo,Yo,Jo,jn,ei=k(()=>{\"use strict\";L();ie();Jt();Xo=e=>{if(!e||e.length===0||e.length>2)throw new Error(\"ArgMinMaxOp op requires 1 or 2 inputs.\");if(e[0].dataType!==1)throw new Error(\"Invalid input type.\")},Yo=(e,t)=>{Xo(e.inputs);let n=(r,o,i)=>{let s=[];for(let a=0;a<r.rank;a++)(i.indexOf(a)>=0||i.length===0)&&s.push(`input_indices[${a}] = 0;`);return[`${s.join(`\n`)}`,`var value = ${r.getByIndices(\"input_indices\")};\nvar best_index : i32 = 0;`,`if (${r.getByIndices(\"input_indices\")} ${t.selectLastIndex>0?\"<=\":\"<\"} value) {\n value = ${r.getByIndices(\"input_indices\")};\n best_index = i32(last_index);\n }`,\"\",o.setByOffset(\"global_idx\",\"best_index\")]};e.compute(en(\"ArgMin\",{hint:t.cacheKey,inputDependencies:[\"rank\"]},[e.inputs[0]],n,[t.axis],7,t.keepDims),{inputs:[0]})},Jo=(e,t)=>{Xo(e.inputs);let n=(r,o,i)=>{let s=[];for(let a=0;a<r.rank;a++)(i.indexOf(a)>=0||i.length===0)&&s.push(`input_indices[${a}] = 0;`);return[`${s.join(`\n`)}`,`var value = ${r.getByIndices(\"input_indices\")};\nvar best_index : i32 = 0;`,`if (${r.getByIndices(\"input_indices\")} ${t.selectLastIndex>0?\">=\":\">\"} value) {\n value = ${r.getByIndices(\"input_indices\")};\n best_index = i32(last_index);\n }`,\"\",o.setByOffset(\"global_idx\",\"best_index\")]};e.compute(en(\"argMax\",{hint:t.cacheKey,inputDependencies:[\"rank\"]},[e.inputs[0]],n,[t.axis],7,t.keepDims),{inputs:[0]})},jn=e=>G(e)});var Rd,Zn,Vd,Nd,Ld,it,Gd,ti,tn=k(()=>{\"use strict\";L();F();Qt();j();Rd=(e,t)=>{let n=e[0],r=e[1],o=e[2],i=e[3],s=e[4],a=e[5];if(s&&a)throw new Error(\"Attention cannot have both past and attention_bias\");if(n.dims.length!==3)throw new Error('Input \"input\" must have 3 dimensions');let u=n.dims[0],d=n.dims[1],l=n.dims[2];if(o.dims.length!==1)throw new Error('Input \"bias\" is expected to have 1 dimensions');if(r.dims.length!==2)throw new Error('Input \"weights\" is expected to have 2 dimensions');if(r.dims[0]!==l)throw new Error(\"Input 1 dimension 0 should have same length as dimension 2 of input 0\");if(o.dims[0]!==r.dims[1])throw new Error('Input \"bias\" dimension 0 should have same length as dimension 1 of input \"weights\"');let c=o.dims[0]/3,p=c,f=p;if(t.qkvHiddenSizes.length>0){if(t.qkvHiddenSizes.length!==3)throw new Error(\"qkv_hidden_sizes attribute should have 3 elements\");for(let _ of t.qkvHiddenSizes)if(_%t.numHeads!==0)throw new Error(\"qkv_hidden_sizes should be divisible by num_heads\");c=t.qkvHiddenSizes[0],p=t.qkvHiddenSizes[1],f=t.qkvHiddenSizes[2]}let m=d;if(c!==p)throw new Error(\"qkv_hidden_sizes first element should be same as the second\");if(o.dims[0]!==c+p+f)throw new Error('Input \"bias\" dimension 0 should have same length as sum of Q/K/V hidden sizes');let h=0;if(s){if(p!==f)throw new Error('Input \"past\" expect k_hidden_size == v_hidden_size');if(s.dims.length!==5)throw new Error('Input \"past\" must have 5 dimensions');if(s.dims[0]!==2)throw new Error('Input \"past\" first dimension must be 2');if(s.dims[1]!==u)throw new Error('Input \"past\" second dimension must be batch_size');if(s.dims[2]!==t.numHeads)throw new Error('Input \"past\" third dimension must be num_heads');if(s.dims[4]!==p/t.numHeads)throw new Error('Input \"past\" fifth dimension must be k_hidden_size / num_heads');t.pastPresentShareBuffer||(h=s.dims[3])}let b=m+h,y=-1,g=0;if(i)throw new Error(\"Mask not supported\");if(s)throw new Error(\"past is not supported\");if(a){if(a.dims.length!==4)throw new Error('Input \"attention_bias\" must have 4 dimensions');if(a.dims[0]!==u||a.dims[1]!==t.numHeads||a.dims[2]!==d||a.dims[3]!==b)throw new Error('Expect \"attention_bias\" shape (batch_size, num_heads, sequence_length, total_sequence_length)')}return{batchSize:u,sequenceLength:d,pastSequenceLength:h,kvSequenceLength:m,totalSequenceLength:b,maxSequenceLength:y,inputHiddenSize:l,hiddenSize:c,vHiddenSize:f,headSize:Math.floor(c/t.numHeads),vHeadSize:Math.floor(f/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:g,scale:t.scale,broadcastResPosBias:!1,passPastInKv:!1,qkvFormat:1}},Zn=(e,t,n)=>t&&e?`\n let total_sequence_length_input = u32(${t.getByOffset(\"0\")});\n let present_sequence_length = max(total_sequence_length_input, uniforms.past_sequence_length);\n let is_subsequent_prompt: bool = sequence_length > 1 && sequence_length != total_sequence_length_input;\n let is_first_prompt: bool = is_subsequent_prompt == false && sequence_length == total_sequence_length_input;\n total_sequence_length = u32(${e?.getByOffset(\"batchIdx\")}) + 1;\n var past_sequence_length: u32 = 0;\n if (is_first_prompt == false) {\n past_sequence_length = total_sequence_length - sequence_length;\n }\n `:`\n ${n?\"let past_sequence_length = uniforms.past_sequence_length\":\"\"};\n let present_sequence_length = total_sequence_length;\n `,Vd=(e,t,n,r,o,i,s,a)=>{let u=J(s?1:i),d=64,l=i/u;l<d&&(d=32);let c=Math.ceil(i/u/d),p=[{type:12,data:t},{type:12,data:n},{type:12,data:r},{type:12,data:o},{type:12,data:l},{type:12,data:c}],f=re(e.dataType,u),m=ce(1,u),h=[\"type\"];s&&h.push(\"type\"),a&&h.push(\"type\");let b=y=>{let g=C(\"x\",e.dataType,e.dims,u),_=[g],w=s?S(\"seq_lens\",s.dataType,s.dims):void 0;w&&_.push(w);let v=a?S(\"total_sequence_length_input\",a.dataType,a.dims):void 0;v&&_.push(v);let $=ce(e.dataType),T=[{name:\"batch_size\",type:\"u32\"},{name:\"num_heads\",type:\"u32\"},{name:\"past_sequence_length\",type:\"u32\"},{name:\"sequence_length\",type:\"u32\"},{name:\"total_sequence_length\",type:\"u32\"},{name:\"elements_per_thread\",type:\"u32\"}];return`\n var<workgroup> thread_max: array<f32, ${d}>;\n var<workgroup> thread_sum: array<f32, ${d}>;\n ${y.registerUniforms(T).declareVariables(..._)}\n ${y.mainStart([d,1,1])}\n let batchIdx = workgroup_id.z / uniforms.num_heads;\n let headIdx = workgroup_id.z % uniforms.num_heads;\n let sequence_length = uniforms.sequence_length;\n var total_sequence_length = uniforms.total_sequence_length;\n ${Zn(w,v,!1)}\n let local_offset = local_idx * uniforms.elements_per_thread;\n let offset = (global_idx / ${d}) * uniforms.total_sequence_length + local_offset;\n let seq_causal_length = ${s?\"u32(past_sequence_length + workgroup_id.y + 1)\":\"total_sequence_length\"};\n var thread_max_vector = ${m}(-3.4028234663852886e+38f);\n for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) {\n thread_max_vector = max(${m}(x[offset + i]), thread_max_vector);\n }\n thread_max[local_idx] = ${(()=>{switch(u){case 1:return\"thread_max_vector\";case 2:return\"max(thread_max_vector.x, thread_max_vector.y)\";case 4:return\"max(max(thread_max_vector.x, thread_max_vector.y), max(thread_max_vector.z, thread_max_vector.w))\";default:throw new Error(`Unsupported components: ${u}`)}})()};\n workgroupBarrier();\n\n var max_value = f32(-3.4028234663852886e+38f);\n for (var i = 0u; i < ${d}; i++) {\n max_value = max(thread_max[i], max_value);\n }\n\n var sum_vector = ${m}(0);\n for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) {\n sum_vector += exp(${m}(x[offset + i]) - max_value);\n }\n thread_sum[local_idx] = ${(()=>{switch(u){case 1:return\"sum_vector\";case 2:return\"sum_vector.x + sum_vector.y\";case 4:return\"sum_vector.x + sum_vector.y + sum_vector.z + sum_vector.w\";default:throw new Error(`Unsupported components: ${u}`)}})()};\n workgroupBarrier();\n\n var sum: f32 = 0;\n for (var i = 0u; i < ${d}; i++) {\n sum += thread_sum[i];\n }\n\n if (sum == 0) {\n for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) {\n x[offset + i] = ${g.type.value}(${$}(1.0) / ${$}(seq_causal_length));\n }\n } else {\n for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) {\n var f32input = ${m}(x[offset + i]);\n x[offset + i] = ${g.type.value}(exp(f32input - max_value) / sum);\n }\n }\n ${s?`\n for (var total_seq_id: u32 = seq_causal_length; total_seq_id + local_offset < uniforms.total_sequence_length; total_seq_id++) {\n x[offset + total_seq_id] = ${g.type.value}(${$}(0));\n }`:\"\"};\n }`};return{name:\"AttentionProbsSoftmax\",shaderCache:{hint:`${d};${f};${u}`,inputDependencies:h},getShaderSource:b,getRunData:()=>({outputs:[],dispatchGroup:{x:1,y:o,z:t*n},programUniforms:p})}},Nd=(e,t,n,r,o,i,s,a,u)=>{let d=s+i.kvSequenceLength,l=[i.batchSize,i.numHeads,i.sequenceLength,d],c=e>1&&r,p=i.kvNumHeads?i.kvNumHeads:i.numHeads,f=c?[i.batchSize,p,d,i.headSize]:void 0,m=i.nReps?i.nReps:1,h=i.scale===0?1/Math.sqrt(i.headSize):i.scale,b=J(i.headSize),y=i.headSize/b,g=12,_={x:Math.ceil(d/g),y:Math.ceil(i.sequenceLength/g),z:i.batchSize*i.numHeads},w=[{type:12,data:i.sequenceLength},{type:12,data:y},{type:12,data:d},{type:12,data:i.numHeads},{type:12,data:i.headSize},{type:1,data:h},{type:12,data:s},{type:12,data:i.kvSequenceLength},{type:12,data:m}],v=c&&r&&x.size(r.dims)>0,$=[\"type\",\"type\"];v&&$.push(\"type\"),o&&$.push(\"type\"),a&&$.push(\"type\"),u&&$.push(\"type\");let T=[{dims:l,dataType:t.dataType,gpuDataType:0}];c&&T.push({dims:f,dataType:t.dataType,gpuDataType:0});let I=A=>{let z=S(\"q\",t.dataType,t.dims,b),R=S(\"key\",n.dataType,n.dims,b),D=[z,R];if(v){let H=S(\"past_key\",r.dataType,r.dims,b);D.push(H)}o&&D.push(S(\"attention_bias\",o.dataType,o.dims));let U=a?S(\"seq_lens\",a.dataType,a.dims):void 0;U&&D.push(U);let Q=u?S(\"total_sequence_length_input\",u.dataType,u.dims):void 0;Q&&D.push(Q);let O=C(\"output\",t.dataType,l),M=[O];c&&M.push(C(\"present_key\",t.dataType,f,b));let V=ce(1,b),W=[{name:\"M\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"num_heads\",type:\"u32\"},{name:\"head_size\",type:\"u32\"},{name:\"alpha\",type:\"f32\"},{name:\"past_sequence_length\",type:\"u32\"},{name:\"kv_sequence_length\",type:\"u32\"},{name:\"n_reps\",type:\"u32\"}];return`\n const TILE_SIZE = ${g}u;\n\n var<workgroup> tileQ: array<${z.type.storage}, ${g*g}>;\n var<workgroup> tileK: array<${z.type.storage}, ${g*g}>;\n ${A.registerUniforms(W).declareVariables(...D,...M)}\n ${A.mainStart([g,g,1])}\n // x holds the N and y holds the M\n let headIdx = workgroup_id.z % uniforms.num_heads;\n let kvHeadIdx = ${m===1?\"headIdx\":\"headIdx / uniforms.n_reps\"};\n let kv_num_heads = ${m===1?\"uniforms.num_heads\":\"uniforms.num_heads / uniforms.n_reps\"};\n let batchIdx = workgroup_id.z / uniforms.num_heads;\n let m = workgroup_id.y * TILE_SIZE;\n let n = workgroup_id.x * TILE_SIZE;\n let sequence_length = uniforms.M;\n var total_sequence_length = uniforms.N;\n ${Zn(U,Q,!0)}\n let absKvHeadIdx = batchIdx * kv_num_heads + kvHeadIdx;\n let qOffset = workgroup_id.z * uniforms.M * uniforms.K + m * uniforms.K;\n ${v&&c?\"let pastKeyOffset = absKvHeadIdx * uniforms.past_sequence_length * uniforms.K;\":\"\"};\n let kOffset = absKvHeadIdx * uniforms.kv_sequence_length * uniforms.K;\n ${c?\"let presentKeyOffset = absKvHeadIdx * uniforms.N * uniforms.K;\":\"\"}\n var value = ${V}(0);\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (global_id.y < uniforms.M && w + local_id.x < uniforms.K) {\n tileQ[TILE_SIZE * local_id.y + local_id.x] = q[qOffset + local_id.y * uniforms.K + w + local_id.x];\n }\n if (n + local_id.y < uniforms.N && w + local_id.x < uniforms.K) {\n var idx = TILE_SIZE * local_id.y + local_id.x;\n ${v&&c?`\n if (n + local_id.y < past_sequence_length) {\n tileK[idx] = past_key[pastKeyOffset + (n + local_id.y) * uniforms.K + w + local_id.x];\n } else if (n + local_id.y - past_sequence_length < uniforms.kv_sequence_length) {\n tileK[idx] = key[kOffset + (n + local_id.y - past_sequence_length) * uniforms.K + w + local_id.x];\n }`:`\n if (n + local_id.y < uniforms.kv_sequence_length) {\n tileK[idx] = key[kOffset + (n + local_id.y) * uniforms.K + w + local_id.x];\n }`}\n ${c?`if (n + local_id.y < present_sequence_length) {\n present_key[presentKeyOffset + (n + local_id.y) * uniforms.K + w + local_id.x] = tileK[idx];\n }`:\"\"}\n }\n workgroupBarrier();\n\n for (var k: u32 = 0u; k < TILE_SIZE && w+k < uniforms.K; k++) {\n value += ${V}(tileQ[TILE_SIZE * local_id.y + k] * tileK[TILE_SIZE * local_id.x + k]);\n }\n\n workgroupBarrier();\n }\n\n if (global_id.y < uniforms.M && global_id.x < total_sequence_length) {\n let headOffset = workgroup_id.z * uniforms.M * uniforms.N;\n let outputIdx = headOffset + global_id.y * uniforms.N + global_id.x;\n var sum: f32 = ${(()=>{switch(b){case 1:return\"value\";case 2:return\"value.x + value.y\";case 4:return\"value.x + value.y + value.z + value.w\";default:throw new Error(`Unsupported components: ${b}`)}})()};\n output[outputIdx] = ${O.type.value} (sum * uniforms.alpha) + ${o?\"attention_bias[outputIdx]\":\"0.0\"};\n }\n }`};return{name:\"AttentionProbs\",shaderCache:{hint:`${b};${o!==void 0};${r!==void 0};${e}`,inputDependencies:$},getRunData:()=>({outputs:T,dispatchGroup:_,programUniforms:w}),getShaderSource:I}},Ld=(e,t,n,r,o,i,s=void 0,a=void 0)=>{let u=i+o.kvSequenceLength,d=o.nReps?o.nReps:1,l=o.vHiddenSize*d,c=e>1&&r,p=o.kvNumHeads?o.kvNumHeads:o.numHeads,f=c?[o.batchSize,p,u,o.headSize]:void 0,m=[o.batchSize,o.sequenceLength,l],h=12,b={x:Math.ceil(o.vHeadSize/h),y:Math.ceil(o.sequenceLength/h),z:o.batchSize*o.numHeads},y=[{type:12,data:o.sequenceLength},{type:12,data:u},{type:12,data:o.vHeadSize},{type:12,data:o.numHeads},{type:12,data:o.headSize},{type:12,data:l},{type:12,data:i},{type:12,data:o.kvSequenceLength},{type:12,data:d}],g=c&&r&&x.size(r.dims)>0,_=[\"type\",\"type\"];g&&_.push(\"type\"),s&&_.push(\"type\"),a&&_.push(\"type\");let w=[{dims:m,dataType:t.dataType,gpuDataType:0}];c&&w.push({dims:f,dataType:t.dataType,gpuDataType:0});let v=$=>{let T=S(\"probs\",t.dataType,t.dims),I=S(\"v\",n.dataType,n.dims),A=[T,I];g&&A.push(S(\"past_value\",r.dataType,r.dims));let z=s?S(\"seq_lens\",s.dataType,s.dims):void 0;s&&A.push(z);let R=a?S(\"total_sequence_length_input\",a.dataType,a.dims):void 0;a&&A.push(R);let U=[C(\"output\",t.dataType,m)];c&&U.push(C(\"present_value\",t.dataType,f));let Q=[{name:\"M\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"num_heads\",type:\"u32\"},{name:\"head_size\",type:\"u32\"},{name:\"v_hidden_size\",type:\"u32\"},{name:\"past_sequence_length\",type:\"u32\"},{name:\"kv_sequence_length\",type:\"u32\"},{name:\"n_reps\",type:\"u32\"}];return`\n const TILE_SIZE = ${h}u;\n var<workgroup> tileQ: array<${T.type.value}, ${h*h}>;\n var<workgroup> tileV: array<${T.type.value}, ${h*h}>;\n ${$.registerUniforms(Q).declareVariables(...A,...U)}\n ${$.mainStart([h,h,1])}\n let headIdx = workgroup_id.z % uniforms.num_heads;\n let batchIdx = workgroup_id.z / uniforms.num_heads;\n let kvHeadIdx = ${d===1?\"headIdx\":\"headIdx / uniforms.n_reps\"};\n let kv_num_heads = ${d===1?\"uniforms.num_heads\":\"uniforms.num_heads / uniforms.n_reps\"};\n let m = global_id.y;\n let n = global_id.x;\n let sequence_length = uniforms.M;\n var total_sequence_length = uniforms.K;\n ${Zn(z,R,!0)}\n let offsetA = workgroup_id.z * uniforms.M * uniforms.K + m * uniforms.K;\n let absKvHeadIdx = batchIdx * kv_num_heads + kvHeadIdx; // kvHeadIdx is relative to the batch\n ${g&&c?\"let pastValueOffset = absKvHeadIdx * uniforms.N * uniforms.past_sequence_length + n;\":\"\"};\n let vOffset = absKvHeadIdx * uniforms.N * uniforms.kv_sequence_length + n;\n ${c?\"let presentValueOffset = absKvHeadIdx * uniforms.N * uniforms.K + n;\":\"\"}\n var value = ${T.type.storage}(0);\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m < uniforms.M && w + local_id.x < uniforms.K) {\n tileQ[TILE_SIZE * local_id.y + local_id.x] = probs[offsetA + w + local_id.x];\n }\n if (n < uniforms.N && w + local_id.y < uniforms.K) {\n var idx = TILE_SIZE * local_id.y + local_id.x;\n ${g&&c?`\n if (w + local_id.y < past_sequence_length) {\n tileV[idx] = past_value[pastValueOffset + (w + local_id.y) * uniforms.N];\n } else if (w + local_id.y - past_sequence_length < uniforms.kv_sequence_length) {\n tileV[idx] = v[vOffset + (w + local_id.y - past_sequence_length) * uniforms.N];\n }\n `:`\n if (w + local_id.y < uniforms.kv_sequence_length) {\n tileV[idx] = v[vOffset + (w + local_id.y) * uniforms.N];\n }`}\n ${c?`\n if (w + local_id.y < present_sequence_length) {\n present_value[presentValueOffset + (w + local_id.y) * uniforms.N] = tileV[idx];\n }`:\"\"}\n }\n workgroupBarrier();\n for (var k: u32 = 0u; k < TILE_SIZE && w+k < total_sequence_length; k++) {\n value += tileQ[TILE_SIZE * local_id.y + k] * tileV[TILE_SIZE * k + local_id.x];\n }\n workgroupBarrier();\n }\n\n // we need to transpose output from BNSH_v to BSND_v\n if (m < uniforms.M && n < uniforms.N) {\n let outputIdx = batchIdx * uniforms.M * uniforms.v_hidden_size + m * uniforms.v_hidden_size\n + headIdx * uniforms.N + n;\n output[outputIdx] = value;\n }\n }`};return{name:\"AttentionScore\",shaderCache:{hint:`${r!==void 0};${e}`,inputDependencies:_},getRunData:()=>({outputs:w,dispatchGroup:b,programUniforms:y}),getShaderSource:v}},it=(e,t,n,r,o,i,s,a,u,d,l=void 0,c=void 0)=>{let p=Math.min(e.outputCount,1+(s?1:0)+(a?1:0)),f=p>1?d.pastSequenceLength:0,m=f+d.kvSequenceLength,h=u&&x.size(u.dims)>0?u:void 0,b=[t,n];p>1&&s&&x.size(s.dims)>0&&b.push(s),h&&b.push(h),l&&b.push(l),c&&b.push(c);let y=e.compute(Nd(p,t,n,s,h,d,f,l,c),{inputs:b,outputs:p>1?[-1,1]:[-1]})[0];e.compute(Vd(y,d.batchSize,d.numHeads,f,d.sequenceLength,m,l,c),{inputs:l&&c?[y,l,c]:[y],outputs:[]});let g=[y,r];p>1&&a&&x.size(a.dims)>0&&g.push(a),l&&g.push(l),c&&g.push(c),e.compute(Ld(p,y,r,a,d,f,l,c),{inputs:g,outputs:p>1?[0,2]:[0]})},Gd=(e,t)=>{let n=[t.batchSize,t.numHeads,t.sequenceLength,t.headSize],r=t.sequenceLength,o=t.inputHiddenSize,i=t.headSize,s=12,a={x:Math.ceil(t.headSize/s),y:Math.ceil(t.sequenceLength/s),z:t.batchSize*t.numHeads},u=[e.inputs[0],e.inputs[1],e.inputs[2]],d=[{type:12,data:r},{type:12,data:o},{type:12,data:i},{type:12,data:t.numHeads},{type:12,data:t.headSize},{type:12,data:t.hiddenSize},{type:12,data:t.hiddenSize+t.hiddenSize+t.vHiddenSize}],l=c=>{let p=C(\"output_q\",u[0].dataType,n),f=C(\"output_k\",u[0].dataType,n),m=C(\"output_v\",u[0].dataType,n),h=S(\"input\",u[0].dataType,u[0].dims),b=S(\"weight\",u[1].dataType,u[1].dims),y=S(\"bias\",u[2].dataType,u[2].dims),g=h.type.storage,_=[{name:\"M\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"num_heads\",type:\"u32\"},{name:\"head_size\",type:\"u32\"},{name:\"hidden_size\",type:\"u32\"},{name:\"ldb\",type:\"u32\"}];return`\n const TILE_SIZE = ${s}u;\n var<workgroup> tileInput: array<${g}, ${s*s}>;\n var<workgroup> tileWeightQ: array<${g}, ${s*s}>;\n var<workgroup> tileWeightK: array<${g}, ${s*s}>;\n var<workgroup> tileWeightV: array<${g}, ${s*s}>;\n ${c.registerUniforms(_).declareVariables(h,b,y,p,f,m)}\n ${c.mainStart([s,s,1])}\n let batchIndex = workgroup_id.z / uniforms.num_heads;\n let headNumber = workgroup_id.z % uniforms.num_heads;\n let m = global_id.y;\n let n = global_id.x;\n\n let inputOffset = batchIndex * (uniforms.M * uniforms.K) + m * uniforms.K;\n let biasOffsetQ = headNumber * uniforms.head_size;\n let biasOffsetK = uniforms.hidden_size + biasOffsetQ;\n let biasOffsetV = uniforms.hidden_size + biasOffsetK;\n\n var valueQ = ${g}(0);\n var valueK = ${g}(0);\n var valueV = ${g}(0);\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m < uniforms.M && w + local_id.x < uniforms.K) {\n tileInput[TILE_SIZE * local_id.y + local_id.x] = input[inputOffset + w + local_id.x];\n }\n if (n < uniforms.N && w + local_id.y < uniforms.K) {\n let offset = n + (w + local_id.y) * uniforms.ldb;\n tileWeightQ[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetQ + offset];\n tileWeightK[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetK + offset];\n tileWeightV[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetV + offset];\n }\n workgroupBarrier();\n for (var k: u32 = 0u; k<TILE_SIZE && w+k < uniforms.K; k++) {\n let inputTileOffset = TILE_SIZE * local_id.y + k;\n let weightTileOffset = TILE_SIZE * k + local_id.x;\n valueQ += tileInput[inputTileOffset] * tileWeightQ[weightTileOffset];\n valueK += tileInput[inputTileOffset] * tileWeightK[weightTileOffset];\n valueV += tileInput[inputTileOffset] * tileWeightV[weightTileOffset];\n }\n\n workgroupBarrier();\n }\n\n let headOffset = (m * uniforms.N + n) % uniforms.head_size;\n valueQ += bias[headOffset + biasOffsetQ];\n valueK += bias[headOffset + biasOffsetK];\n valueV += bias[headOffset + biasOffsetV];\n\n let offset = workgroup_id.z * uniforms.M * uniforms.N;\n if (m < uniforms.M && n < uniforms.N) {\n let outputIdx = offset + m * uniforms.N + n;\n output_q[outputIdx] = valueQ;\n output_k[outputIdx] = valueK;\n output_v[outputIdx] = valueV;\n }\n }`};return e.compute({name:\"AttentionPrepare\",shaderCache:{inputDependencies:[\"type\",\"type\",\"type\"]},getRunData:()=>({outputs:[{dims:n,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:n,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:n,dataType:e.inputs[0].dataType,gpuDataType:0}],dispatchGroup:a,programUniforms:d}),getShaderSource:l},{inputs:u,outputs:[-1,-1,-1]})},ti=(e,t)=>{let n=Rd(e.inputs,t),[r,o,i]=Gd(e,n);return it(e,r,o,i,e.inputs[4],void 0,void 0,void 0,e.inputs[5],n)}});var Wd,Hd,qd,ni,ri=k(()=>{\"use strict\";_e();L();F();ie();j();Wd=(e,t)=>{if(!e||e.length!==5)throw new Error(\"BatchNormalization requires 5 inputs\");let n=(r,o,i)=>{let s=o.length;if(s!==r.length)throw new Error(`${i}: num dimensions != ${s}`);o.forEach((a,u)=>{if(a!==r[u])throw new Error(`${i}: dim[${u}] do not match`)})};if(e[0].dims.length>1){let r=t.format===\"NHWC\"?t.spatial?e[0].dims.slice(-1):e[0].dims.slice(-1).concat(e[0].dims.slice(1,e[0].dims.length-1)):e[0].dims.slice(1,t.spatial?2:void 0);n(e[1].dims,r,\"Invalid input scale\"),n(e[2].dims,r,\"Invalid input B\"),n(e[3].dims,r,\"Invalid input mean\"),n(e[4].dims,r,\"Invalid input var\")}else n(e[1].dims,[1],\"Invalid input scale\"),n(e[2].dims,[1],\"Invalid input B\"),n(e[3].dims,[1],\"Invalid input mean\"),n(e[4].dims,[1],\"Invalid input var\")},Hd=(e,t)=>{let{epsilon:n,spatial:r,format:o}=t,i=e[0].dims,s=r?J(i[i.length-1]):1,a=o===\"NHWC\"&&i.length>1?s:1,u=x.size(i)/s,d=r,l=d?i.length:i,c=S(\"x\",e[0].dataType,e[0].dims,s),p=S(\"scale\",e[1].dataType,e[1].dims,a),f=S(\"bias\",e[2].dataType,e[2].dims,a),m=S(\"inputMean\",e[3].dataType,e[3].dims,a),h=S(\"inputVar\",e[4].dataType,e[4].dims,a),b=C(\"y\",e[0].dataType,l,s),y=()=>{let _=\"\";if(r)_=`let cOffset = ${i.length===1?\"0u\":o===\"NHWC\"?`outputIndices[${i.length-1}] / ${s}`:\"outputIndices[1]\"};`;else if(o===\"NCHW\")_=`\n ${b.indicesSet(\"outputIndices\",\"0\",\"0\")}\n let cOffset = ${b.indicesToOffset(\"outputIndices\")};`;else{_=`var cIndices = ${p.type.indices}(0);\n cIndices[0] = outputIndices[${i.length-1}];`;for(let w=1;w<p.rank;w++)_+=`cIndices[${w}] = outputIndices[${w}];`;_+=`let cOffset = ${p.indicesToOffset(\"cIndices\")};`}return _},g=_=>`\n const epsilon = ${n};\n ${_.registerUniform(\"outputSize\",\"u32\").declareVariables(c,p,f,m,h,b)}\n ${_.mainStart()}\n ${_.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n var outputIndices = ${b.offsetToIndices(`global_idx * ${s}`)};\n ${y()}\n let scale = ${p.getByOffset(\"cOffset\")};\n let bias = ${f.getByOffset(\"cOffset\")};\n let inputMean = ${m.getByOffset(\"cOffset\")};\n let inputVar = ${h.getByOffset(\"cOffset\")};\n let x = ${c.getByOffset(\"global_idx\")};\n let value = (x - inputMean) * inverseSqrt(inputVar + epsilon) * scale + bias;\n ${b.setByOffset(\"global_idx\",\"value\")}\n }`;return{name:\"BatchNormalization\",shaderCache:{hint:`${t.epsilon}_${t.format}_${r}_${s}`,inputDependencies:d?[\"rank\",\"type\",\"type\",\"type\",\"type\"]:void 0},getShaderSource:g,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:d?[{type:12,data:u},...P(i)]:[{type:12,data:u}]})}},qd=e=>G(e),ni=(e,t)=>{let{inputs:n,outputCount:r}=e,o=qd({...t,outputCount:r});if(te.webgpu.validateInputContent&&Wd(n,o),t.trainingMode)throw new Error(\"BatchNormalization trainingMode is not supported yet.\");e.compute(Hd(n,o))}});var Fd,Kd,oi,ii=k(()=>{\"use strict\";F();j();Fd=e=>{if(e[0].dims.length!==3)throw new Error(\"input should have 3 dimensions\");if(![320,640,1280].includes(e[0].dims[2]))throw new Error(\"number of channels should be 320, 640 or 1280\");if(e[1].dims.length!==1)throw new Error(\"bias is expected to have 1 dimensions\");if(e[0].dims[2]!==e[1].dims[0])throw new Error(\"last dimension of input and bias are not the same\")},Kd=e=>{let t=e[0].dims,n=e[0].dims[2],r=x.size(t)/4,o=e[0].dataType,i=S(\"input\",o,t,4),s=S(\"bias\",o,[n],4),a=S(\"residual\",o,t,4),u=C(\"output\",o,t,4);return{name:\"BiasAdd\",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(r/64)}}),getShaderSource:l=>`\n const channels = ${n}u / 4;\n ${l.declareVariables(i,s,a,u)}\n\n ${l.mainStart()}\n ${l.guardAgainstOutOfBoundsWorkgroupSizes(r)}\n let value = ${i.getByOffset(\"global_idx\")}\n + ${s.getByOffset(\"global_idx % channels\")} + ${a.getByOffset(\"global_idx\")};\n ${u.setByOffset(\"global_idx\",\"value\")}\n }`}},oi=e=>{Fd(e.inputs),e.compute(Kd(e.inputs))}});var jd,ee,si,ai,ui,di,li,ci,pi,mi,fi,Zd,hi,gi,yi,bi,yt,_i,nn,wi,$i,vi,xi,Si,Ti,Ii,Ci,Ai,Ei,ki,Pi,zi,Bi,Di,Oi,Mi,Ui,Qn,Xn,Ri,Vi,Ni,Qd,Xd,Li,rn=k(()=>{\"use strict\";L();F();ie();j();jd=(e,t,n,r,o,i,s)=>{let a=Math.ceil(t/4),u=\"\";typeof o==\"string\"?u=`${o}(a)`:u=o(\"a\");let d=S(\"inputData\",n,[a],4),l=C(\"outputData\",r,[a],4),c=[{name:\"vec_size\",type:\"u32\"}];return s&&c.push(...s),`\n ${e.registerUniforms(c).declareVariables(d,l)}\n\n ${i??\"\"}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\n\n let a = ${d.getByOffset(\"global_idx\")};\n ${l.setByOffset(\"global_idx\",u)}\n }`},ee=(e,t,n,r,o,i=e.dataType,s,a)=>{let u=[{type:12,data:Math.ceil(x.size(e.dims)/4)}];return s&&u.push(...s),{name:t,shaderCache:{hint:o,inputDependencies:[\"type\"]},getShaderSource:d=>jd(d,x.size(e.dims),e.dataType,i,n,r,a),getRunData:d=>({outputs:[{dims:e.dims,dataType:i}],dispatchGroup:{x:Math.ceil(x.size(d[0].dims)/64/4)},programUniforms:u})}},si=e=>{e.compute(ee(e.inputs[0],\"Abs\",\"abs\"))},ai=e=>{e.compute(ee(e.inputs[0],\"Acos\",\"acos\"))},ui=e=>{e.compute(ee(e.inputs[0],\"Acosh\",\"acosh\"))},di=e=>{e.compute(ee(e.inputs[0],\"Asin\",\"asin\"))},li=e=>{e.compute(ee(e.inputs[0],\"Asinh\",\"asinh\"))},ci=e=>{e.compute(ee(e.inputs[0],\"Atan\",\"atan\"))},pi=e=>{e.compute(ee(e.inputs[0],\"Atanh\",\"atanh\"))},mi=e=>G(e),fi=(e,t)=>{let n;switch(t.to){case 10:n=\"vec4<f16>\";break;case 1:n=\"vec4<f32>\";break;case 12:n=\"vec4<u32>\";break;case 6:n=\"vec4<i32>\";break;case 9:n=\"vec4<bool>\";break;default:throw new RangeError(`not supported type (specified in attribute 'to' from 'Cast' operator): ${t.to}`)}e.compute(ee(e.inputs[0],\"Cast\",n,void 0,t.cacheKey,t.to))},Zd=e=>{let t,n,r=e.length>=2&&e[1].data!==0,o=e.length>=3&&e[2].data!==0;switch(e[0].dataType){case 1:t=r?e[1].getFloat32Array()[0]:-34028234663852886e22,n=o?e[2].getFloat32Array()[0]:34028234663852886e22;break;case 10:t=r?e[1].getUint16Array()[0]:64511,n=o?e[2].getUint16Array()[0]:31743;break;default:throw new Error(\"Unsupport data type\")}return G({min:t,max:n})},hi=(e,t)=>{let n=t||Zd(e.inputs),r=ce(e.inputs[0].dataType);e.compute(ee(e.inputs[0],\"Clip\",o=>`clamp(${o}, vec4<${r}>(uniforms.min), vec4<${r}>(uniforms.max))`,void 0,n.cacheKey,void 0,[{type:e.inputs[0].dataType,data:n.min},{type:e.inputs[0].dataType,data:n.max}],[{name:\"min\",type:r},{name:\"max\",type:r}]),{inputs:[0]})},gi=e=>{e.compute(ee(e.inputs[0],\"Ceil\",\"ceil\"))},yi=e=>{e.compute(ee(e.inputs[0],\"Cos\",\"cos\"))},bi=e=>{e.compute(ee(e.inputs[0],\"Cosh\",\"cosh\"))},yt=e=>G(e),_i=(e,t)=>{let n=ce(e.inputs[0].dataType);e.compute(ee(e.inputs[0],\"Elu\",r=>`elu_vf32(${r})`,`\n const elu_alpha_ = ${n}(${t.alpha});\n\n fn elu_f32(a: ${n}) -> ${n} {\n return select((exp(a) - 1.0) * elu_alpha_, a, a >= 0.0);\n }\n\n fn elu_vf32(v: vec4<${n}>) -> vec4<${n}> {\n return vec4(elu_f32(v.x), elu_f32(v.y), elu_f32(v.z), elu_f32(v.w));\n }`,t.cacheKey))},nn=(e=\"f32\")=>`\nconst r0: ${e} = 0.3275911;\nconst r1: ${e} = 0.254829592;\nconst r2: ${e} = -0.284496736;\nconst r3: ${e} = 1.421413741;\nconst r4: ${e} = -1.453152027;\nconst r5: ${e} = 1.061405429;\n\nfn erf_vf32(v: vec4<${e}>) -> vec4<${e}> {\n let absv = abs(v);\n let x = 1.0 / (1.0 + r0 * absv);\n return sign(v) * (1.0 - ((((r5 * x + r4) * x + r3) * x + r2) * x + r1) * x * exp(-absv * absv));\n}`,wi=e=>{let t=ce(e.inputs[0].dataType);e.compute(ee(e.inputs[0],\"Erf\",n=>`erf_vf32(${n})`,nn(t)))},$i=e=>{e.compute(ee(e.inputs[0],\"Exp\",\"exp\"))},vi=e=>{e.compute(ee(e.inputs[0],\"Floor\",\"floor\"))},xi=e=>{let t=ce(e.inputs[0].dataType);e.compute(ee(e.inputs[0],\"Gelu\",n=>`0.5 * ${n} * (1.0 + erf_vf32(${n} * 0.7071067811865475))`,nn(t)))},Si=(e,t)=>{let n=ce(e.inputs[0].dataType);e.compute(ee(e.inputs[0],\"LeakyRelu\",r=>`select(leaky_relu_alpha_ * ${r}, ${r}, ${r} >= vec4<${n}>(0.0))`,`const leaky_relu_alpha_ = ${n}(${t.alpha});`,t.cacheKey))},Ti=e=>{e.compute(ee(e.inputs[0],\"Not\",t=>`!${t}`))},Ii=e=>{e.compute(ee(e.inputs[0],\"Neg\",t=>`-${t}`))},Ci=e=>{e.compute(ee(e.inputs[0],\"Reciprocal\",t=>`1.0/${t}`))},Ai=e=>{let t=ce(e.inputs[0].dataType);e.compute(ee(e.inputs[0],\"Relu\",n=>`select(vec4<${t}>(0.0), ${n}, ${n} > vec4<${t}>(0.0))`))},Ei=e=>{e.compute(ee(e.inputs[0],\"Sigmoid\",t=>`(1.0 / (1.0 + exp(-${t})))`))},ki=e=>G(e),Pi=(e,t)=>{let n=ce(e.inputs[0].dataType);e.compute(ee(e.inputs[0],\"HardSigmoid\",r=>`max(vec4<${n}>(0.0), min(vec4<${n}>(1.0), ${t.alpha} * ${r} + vec4<${n}>(${t.beta})))`,void 0,t.cacheKey))},zi=e=>{e.compute(ee(e.inputs[0],\"Sin\",\"sin\"))},Bi=e=>{e.compute(ee(e.inputs[0],\"Sinh\",\"sinh\"))},Di=e=>{e.compute(ee(e.inputs[0],\"Sqrt\",\"sqrt\"))},Oi=e=>{e.compute(ee(e.inputs[0],\"Tan\",\"tan\"))},Mi=e=>`sign(${e}) * (1 - exp(-2 * abs(${e}))) / (1 + exp(-2 * abs(${e})))`,Ui=e=>{e.compute(ee(e.inputs[0],\"Tanh\",Mi))},Qn=(e=\"f32\")=>`\nconst fast_gelu_a: ${e} = 0.5;\nconst fast_gelu_b: ${e} = 0.7978845608028654;\nconst fast_gelu_c: ${e} = 0.035677408136300125;\n\nfn tanh_v(v: vec4<${e}>) -> vec4<${e}> {\n return ${Mi(\"v\")};\n}\n`,Xn=e=>`(fast_gelu_a + fast_gelu_a * tanh_v(${e} * (fast_gelu_c * ${e} * ${e} + fast_gelu_b))) * ${e}`,Ri=e=>{let t=ce(e.inputs[0].dataType);e.compute(ee(e.inputs[0],\"FastGelu\",Xn,Qn(t),void 0,e.inputs[0].dataType))},Vi=(e,t)=>{let n=ce(e.inputs[0].dataType);return e.compute(ee(e.inputs[0],\"ThresholdedRelu\",r=>`select(vec4<${n}>(0.0), ${r}, ${r} > thresholded_relu_alpha_)`,`const thresholded_relu_alpha_ = vec4<${n}>(${t.alpha});`,t.cacheKey)),0},Ni=e=>{e.compute(ee(e.inputs[0],\"Log\",\"log\"))},Qd=(e,t)=>`\nconst alpha = vec4<${e}>(${t});\nconst one = ${e}(1.0);\nconst zero = ${e}(0.0);\n\nfn quick_gelu_impl(x: vec4<${e}>) -> vec4<${e}> {\n let v = x *alpha;\n var x1 : vec4<${e}>;\n for (var i = 0; i < 4; i = i + 1) {\n if (v[i] >= zero) {\n x1[i] = one / (one + exp(-v[i]));\n } else {\n x1[i] = one - one / (one + exp(v[i]));\n }\n }\n return x * x1;\n}\n`,Xd=e=>`quick_gelu_impl(${e})`,Li=(e,t)=>{let n=ce(e.inputs[0].dataType);e.compute(ee(e.inputs[0],\"QuickGelu\",Xd,Qd(n,t.alpha),t.cacheKey,e.inputs[0].dataType))}});var Yd,Jd,Wi,Hi=k(()=>{\"use strict\";F();j();rn();Yd=e=>{if(e[0].dims.length!==3)throw new Error(\"input should have 3 dimensions\");if(![2560,5120,10240].includes(e[0].dims[2]))throw new Error(\"hidden state should be 2560, 5120 or 10240\");if(e[1].dims.length!==1)throw new Error(\"bias is expected to have 1 dimensions\");if(e[0].dims[2]!==e[1].dims[0])throw new Error(\"last dimension of input and bias are not the same\")},Jd=e=>{let t=e[0].dims.slice();t[2]=t[2]/2;let n=S(\"input\",e[0].dataType,e[0].dims,4),r=S(\"bias\",e[0].dataType,[e[0].dims[2]],4),o=C(\"output\",e[0].dataType,t,4),i=x.size(t)/4,s=re(e[0].dataType);return{name:\"BiasSplitGelu\",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(i/64)}}),getShaderSource:u=>`\n const M_SQRT2 = sqrt(2.0);\n const halfChannels = ${e[0].dims[2]/4/2}u;\n\n ${u.declareVariables(n,r,o)}\n\n ${nn(s)}\n\n ${u.mainStart()}\n ${u.guardAgainstOutOfBoundsWorkgroupSizes(i)}\n let biasIdx = global_idx % halfChannels;\n let batchIndex = global_idx / halfChannels;\n let inputOffset = biasIdx + batchIndex * halfChannels * 2;\n let valueLeft = input[inputOffset] + bias[biasIdx];\n let valueRight = input[inputOffset + halfChannels] + bias[biasIdx + halfChannels];\n let geluRight = valueRight * 0.5 * (erf_vf32(valueRight / M_SQRT2) + 1);\n\n ${o.setByOffset(\"global_idx\",\"valueLeft * geluRight\")}\n }`}},Wi=e=>{Yd(e.inputs),e.compute(Jd(e.inputs))}});var el,tl,Me,qi,Fi,Ki,ji,Zi,Qi,Xi,Yi,Ji,es,ts=k(()=>{\"use strict\";L();F();j();el=(e,t,n,r,o,i,s,a,u,d,l,c)=>{let p,f;typeof a==\"string\"?p=f=(g,_)=>`${a}((${g}),(${_}))`:typeof a==\"function\"?p=f=a:(p=a.scalar,f=a.vector);let m=C(\"outputData\",l,r.length,4),h=S(\"aData\",u,t.length,4),b=S(\"bData\",d,n.length,4),y;if(o)if(i){let g=x.size(t)===1,_=x.size(n)===1,w=t.length>0&&t[t.length-1]%4===0,v=n.length>0&&n[n.length-1]%4===0;g||_?y=m.setByOffset(\"global_idx\",f(g?`${h.type.value}(${h.getByOffset(\"0\")}.x)`:h.getByOffset(\"global_idx\"),_?`${b.type.value}(${b.getByOffset(\"0\")}.x)`:b.getByOffset(\"global_idx\"))):y=`\n let outputIndices = ${m.offsetToIndices(\"global_idx * 4u\")};\n let offsetA = ${h.broadcastedIndicesToOffset(\"outputIndices\",m)};\n let offsetB = ${b.broadcastedIndicesToOffset(\"outputIndices\",m)};\n ${m.setByOffset(\"global_idx\",f(s||w?h.getByOffset(\"offsetA / 4u\"):`${h.type.value}(${h.getByOffset(\"offsetA / 4u\")}[offsetA % 4u])`,s||v?b.getByOffset(\"offsetB / 4u\"):`${b.type.value}(${b.getByOffset(\"offsetB / 4u\")}[offsetB % 4u])`))}\n `}else y=m.setByOffset(\"global_idx\",f(h.getByOffset(\"global_idx\"),b.getByOffset(\"global_idx\")));else{if(!i)throw new Error(\"no necessary to use scalar implementation for element-wise binary op implementation.\");let g=(_,w,v=\"\")=>{let $=`aData[indexA${w}][componentA${w}]`,T=`bData[indexB${w}][componentB${w}]`;return`\n let outputIndices${w} = ${m.offsetToIndices(`global_idx * 4u + ${w}u`)};\n let offsetA${w} = ${h.broadcastedIndicesToOffset(`outputIndices${w}`,m)};\n let offsetB${w} = ${b.broadcastedIndicesToOffset(`outputIndices${w}`,m)};\n let indexA${w} = offsetA${w} / 4u;\n let indexB${w} = offsetB${w} / 4u;\n let componentA${w} = offsetA${w} % 4u;\n let componentB${w} = offsetB${w} % 4u;\n ${_}[${w}] = ${v}(${p($,T)});\n `};l===9?y=`\n var data = vec4<u32>(0);\n ${g(\"data\",0,\"u32\")}\n ${g(\"data\",1,\"u32\")}\n ${g(\"data\",2,\"u32\")}\n ${g(\"data\",3,\"u32\")}\n outputData[global_idx] = dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(data));`:y=`\n ${g(\"outputData[global_idx]\",0)}\n ${g(\"outputData[global_idx]\",1)}\n ${g(\"outputData[global_idx]\",2)}\n ${g(\"outputData[global_idx]\",3)}\n `}return`\n ${e.registerUniform(\"vec_size\",\"u32\").declareVariables(h,b,m)}\n\n ${c??\"\"}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\n ${y}\n }`},tl=(e,t,n,r,o,i,s=n.dataType)=>{let a=n.dims.map(Number),u=r.dims.map(Number),d=!x.areEqual(a,u),l=a,c=x.size(a),p=!1,f=!1,m=[d];if(d){let h=Pe.calcShape(a,u,!1);if(!h)throw new Error(\"Can't perform binary op on the given tensors\");l=h.slice(),c=x.size(l);let b=x.size(a)===1,y=x.size(u)===1,g=a.length>0&&a[a.length-1]%4===0,_=u.length>0&&u[u.length-1]%4===0;m.push(b),m.push(y),m.push(g),m.push(_);let w=1;for(let v=1;v<l.length;v++){let $=a[a.length-v],T=u[u.length-v];if($===T)w*=$;else break}w%4===0?(f=!0,p=!0):(b||y||g||_)&&(p=!0)}else p=!0;return m.push(p),{name:e,shaderCache:{hint:t+m.map(h=>h.toString()).join(\"_\"),inputDependencies:[\"rank\",\"rank\"]},getShaderSource:h=>el(h,a,u,l,p,d,f,o,n.dataType,r.dataType,s,i),getRunData:()=>({outputs:[{dims:l,dataType:s}],dispatchGroup:{x:Math.ceil(c/64/4)},programUniforms:[{type:12,data:Math.ceil(x.size(l)/4)},...P(a,u,l)]})}},Me=(e,t,n,r,o,i)=>{e.compute(tl(t,o??\"\",e.inputs[0],e.inputs[1],n,r,i))},qi=e=>{Me(e,\"Add\",(t,n)=>`${t}+${n}`)},Fi=e=>{Me(e,\"Div\",(t,n)=>`${t}/${n}`)},Ki=e=>{Me(e,\"Equal\",{scalar:(t,n)=>`u32(${t}==${n})`,vector:(t,n)=>`vec4<u32>(${t}==${n})`},void 0,void 0,9)},ji=e=>{Me(e,\"Mul\",(t,n)=>`${t}*${n}`)},Zi=e=>{let t=S(\"input\",e.inputs[0].dataType,e.inputs[0].dims).type.value;Me(e,\"Pow\",{scalar:(r,o)=>`pow_custom(${r},${o})`,vector:(r,o)=>`pow_vector_custom(${r},${o})`},`\n fn pow_custom(a : ${t}, b : ${t}) -> ${t} {\n if (b == ${t}(0.0)) {\n return ${t}(1.0);\n } else if (a < ${t}(0.0) && f32(b) != floor(f32(b))) {\n return ${t}(pow(f32(a), f32(b))); // NaN\n }\n return select(sign(a), ${t}(1.0), round(f32(abs(b) % ${t}(2.0))) != 1.0) * ${t}(${t===\"i32\"?\"round\":\"\"}(pow(f32(abs(a)), f32(b))));\n }\n fn pow_vector_custom(a : vec4<${t}>, b : vec4<${t}>) -> vec4<${t}> {\n // TODO: implement vectorized pow\n return vec4<${t}>(pow_custom(a.x, b.x), pow_custom(a.y, b.y), pow_custom(a.z, b.z), pow_custom(a.w, b.w));\n }\n `)},Qi=e=>{Me(e,\"Sub\",(t,n)=>`${t}-${n}`)},Xi=e=>{Me(e,\"Greater\",{scalar:(t,n)=>`u32(${t}>${n})`,vector:(t,n)=>`vec4<u32>(${t}>${n})`},void 0,void 0,9)},Yi=e=>{Me(e,\"Less\",{scalar:(t,n)=>`u32(${t}<${n})`,vector:(t,n)=>`vec4<u32>(${t}<${n})`},void 0,void 0,9)},Ji=e=>{Me(e,\"GreaterOrEqual\",{scalar:(t,n)=>`u32(${t}>=${n})`,vector:(t,n)=>`vec4<u32>(${t}>=${n})`},void 0,void 0,9)},es=e=>{Me(e,\"LessOrEqual\",{scalar:(t,n)=>`u32(${t}<=${n})`,vector:(t,n)=>`vec4<u32>(${t}<=${n})`},void 0,void 0,9)}});var rl,ol,il,sl,ns,rs,os=k(()=>{\"use strict\";L();F();ie();j();rl=(e,t)=>{if(!e||e.length<1)throw new Error(\"too few inputs\");let n=0,r=e[n],o=r.dataType,i=r.dims.length;e.forEach((s,a)=>{if(a!==n){if(s.dataType!==o)throw new Error(\"input tensors should be one type\");if(s.dims.length!==i)throw new Error(\"input tensors should have the same shape\");s.dims.forEach((u,d)=>{if(d!==t&&u!==r.dims[d])throw new Error(\"non concat dimensions must match\")})}})},ol=(e,t)=>`\n fn calculateInputIndex(index: u32) -> u32 {\n let sizeInConcatAxis = array<u32, ${e}u>(${t});\n for (var i: u32 = 0u; i < ${e}; i += 1u ) {\n if (index < sizeInConcatAxis[i]) {\n return i;\n }\n }\n return ${e}u;\n }`,il=(e,t)=>{let n=e.length,r=[];for(let o=0;o<n;++o){let i=t.setByOffset(\"global_idx\",e[o].getByIndices(\"indices\"));n===1?r.push(i):o===0?r.push(`if (inputIndex == ${o}u) { ${i} }`):o===n-1?r.push(`else { ${i} }`):r.push(`else if (inputIndex == ${o}) { ${i} }`)}return r.join(`\n`)},sl=(e,t,n,r)=>{let o=x.size(n),i=new Array(e.length),s=new Array(e.length),a=0,u=[],d=[],l=[{type:12,data:o}];for(let h=0;h<e.length;++h)a+=e[h].dims[t],i[h]=a,d.push(e[h].dims.length),s[h]=S(`input${h}`,r,d[h]),u.push(\"rank\"),l.push({type:12,data:i[h]});for(let h=0;h<e.length;++h)l.push(...P(e[h].dims));l.push(...P(n));let c=C(\"output\",r,n.length),p=c.indicesGet(\"indices\",t),f=Array.from(Array(i.length).keys()).map(h=>`uniforms.sizeInConcatAxis${h}`).join(\",\"),m=h=>`\n\n ${(()=>{h.registerUniform(\"outputSize\",\"u32\");for(let b=0;b<e.length;b++)h.registerUniform(`sizeInConcatAxis${b}`,\"u32\");return h.declareVariables(...s,c)})()}\n\n ${ol(i.length,f)}\n\n ${h.mainStart()}\n ${h.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n\n var indices = ${c.offsetToIndices(\"global_idx\")};\n\n let inputIndex = calculateInputIndex(${p});\n if (inputIndex != 0u) {\n let sizeInConcatAxis = array<u32, ${i.length}u>(${f});\n ${p} -= sizeInConcatAxis[inputIndex - 1u];\n }\n\n ${il(s,c)}\n }`;return{name:\"Concat\",shaderCache:{hint:`${t}`,inputDependencies:u},getRunData:()=>({outputs:[{dims:n,dataType:r}],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:l}),getShaderSource:m}},ns=(e,t)=>{let n=e.inputs,r=n[0].dims,o=x.normalizeAxis(t.axis,r.length);rl(n,o);let i=r.slice();i[o]=n.reduce((a,u)=>a+(u.dims.length>o?u.dims[o]:0),0);let s=n.filter(a=>x.size(a.dims)>0);e.compute(sl(s,o,i,n[0].dataType),{inputs:s})},rs=e=>G({axis:e.axis})});var Ie,Ce,Ae,on,Fe=k(()=>{\"use strict\";L();F();Ie=(e,t,n=\"f32\")=>{switch(e.activation){case\"Relu\":return`value = max(value, ${t}(0.0));`;case\"Sigmoid\":return`value = (${t}(1.0) / (${t}(1.0) + exp(-value)));`;case\"Clip\":return`value = clamp(value, ${t}(${n}(uniforms.clip_min)), ${t}(${n}(uniforms.clip_max)));`;case\"HardSigmoid\":return`value = max(${t}(0.0), min(${t}(1.0), ${n}(uniforms.alpha) * value + ${n}(uniforms.beta)));`;case\"LeakyRelu\":return`value = select(${n}(uniforms.alpha) * value, value, value >= ${t}(0.0));`;case\"Tanh\":return`let e2x = exp(-2.0 * abs(value));\n value = sign(value) * (1.0 - e2x) / (1.0 + e2x);\n `;case\"\":return\"\";default:throw new Error(`Unsupported activation ${e.activation}`)}},Ce=(e,t)=>{e.activation===\"Clip\"?t.push({type:1,data:e.clipMax},{type:1,data:e.clipMin}):e.activation===\"HardSigmoid\"?t.push({type:1,data:e.alpha},{type:1,data:e.beta}):e.activation===\"LeakyRelu\"&&t.push({type:1,data:e.alpha})},Ae=(e,t)=>{e.activation===\"Clip\"?t.push({name:\"clip_max\",type:\"f32\"},{name:\"clip_min\",type:\"f32\"}):e.activation===\"HardSigmoid\"?t.push({name:\"alpha\",type:\"f32\"},{name:\"beta\",type:\"f32\"}):e.activation===\"LeakyRelu\"&&t.push({name:\"alpha\",type:\"f32\"})},on=e=>{let t=e?.activation||\"\";if(t===\"HardSigmoid\"){let[n,r]=e?.activation_params||[.2,.5];return{activation:t,alpha:n,beta:r}}else if(t===\"Clip\"){let[n,r]=e?.activation_params||[co,po];return{activation:t,clipMax:r,clipMin:n}}else if(t===\"LeakyRelu\"){let[n]=e?.activation_params||[.01];return{activation:t,alpha:n}}return{activation:t}}});var ue,is,sn=k(()=>{\"use strict\";ue=(e,t)=>{switch(e){case 1:return t;case 2:return`vec2<${t}>`;case 3:return`vec3<${t}>`;case 4:return`vec4<${t}>`;default:throw new Error(`${e}-component is not supported.`)}},is=e=>`\n ${e?\"value = value + getBiasByOutputCoords(coords);\":\"\"}\n `});var ss,as=k(()=>{\"use strict\";ss=e=>`\nfn getIndexFromCoords4D(coords : vec4<i32>, shape : vec4<i32>) -> i32 {\n return dot(coords, vec4<i32>(\n shape.y * shape.z * shape.w, shape.z * shape.w, shape.w, 1));\n}\nfn getOutputIndexFromCoords(coords : vec4<i32>) -> i32 {\n return dot(coords, vec4<i32>(\n i32(${e}.x), i32(${e}.y), i32(${e}.z), 1));\n}\n`});var bt,an,un=k(()=>{\"use strict\";L();F();j();Fe();bt=(e,t,n,r,o)=>{let i=r-n;return`\n ${Array.from({length:n}).map((s,a)=>`\n if (${B(t.shape,a,t.rank)} != 1) {\n ${t.indicesSet(e,a,B(o,a+i,r))}\n } else {\n ${t.indicesSet(e,a,0)}\n }`).join(\"\")}\n`},an=(e,t,n,r,o=!1,i)=>{let s=e[0].dims,a=e[1].dims,u=s[s.length-2],d=a[a.length-1],l=s[s.length-1],c=J(d),p=J(l),f=J(u),m=x.size(n)/c/f,h=e.length>2,b=r?r.slice(0,-2):n.slice(0,-2),g=[x.size(b),u,d],_=[{type:12,data:m},{type:12,data:u},{type:12,data:d},{type:12,data:l}];Ce(t,_),_.push(...P(b,s,a)),h&&_.push(...P(e[2].dims)),_.push(...P(g));let w=v=>{let $=Yt(\"batch_dims\",e[0].dataType,b.length),T=S(\"a\",e[0].dataType,s.length,p),I=S(\"b\",e[1].dataType,a.length,c),A=C(\"output\",e[0].dataType,g.length,c),z=re(A.type.tensor),R=Ie(t,A.type.value,z),D=[T,I],U=\"\";if(h){let M=o?c:1;D.push(S(\"bias\",e[2].dataType,e[2].dims.length,M)),U=`${o?`value += bias[col / ${M}];`:`value += ${A.type.value}(bias[row + i]);`}`}let Q=[{name:\"output_size\",type:\"u32\"},{name:\"M\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"K\",type:\"u32\"}];Ae(t,Q);let O=()=>{let M=`var a_data: ${T.type.value};`;for(let V=0;V<p;V++)M+=`\n let b_data${V} = b[(b_offset + (k + ${V}) * uniforms.N + col) / ${c}];`;for(let V=0;V<f;V++){M+=`a_data = a[(a_offset + (row + ${V}) * uniforms.K + k) / ${p}];`;for(let W=0;W<p;W++)M+=`\n values[${V}] = fma(${I.type.value}(a_data${p===1?\"\":`[${W}]`}), b_data${W}, values[${V}]);\n`}return M};return`\n ${v.registerUniforms(Q).registerInternalVariables($).declareVariables(...D,A)}\n ${v.mainStart()}\n ${v.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n let col = (global_idx % (uniforms.N / ${c})) * ${c};\n var index1 = global_idx / (uniforms.N / ${c});\n let stride1 = uniforms.M / ${f};\n let row = (index1 % stride1) * ${f};\n let batch = index1 / stride1;\n\n ${n.length===2?\"\":`let batch_indices = ${$.offsetToIndices(\"batch\")};`}\n\n var a_indices: ${T.type.indices};\n ${bt(\"a_indices\",T,T.rank-2,$.rank,\"batch_indices\")}\n ${T.indicesSet(\"a_indices\",T.rank-2,0)}\n ${T.indicesSet(\"a_indices\",T.rank-1,0)}\n let a_offset = ${T.indicesToOffset(\"a_indices\")};\n\n var b_indices: ${I.type.indices};\n ${bt(\"b_indices\",I,I.rank-2,$.rank,\"batch_indices\")}\n ${I.indicesSet(\"b_indices\",I.rank-2,0)}\n ${I.indicesSet(\"b_indices\",I.rank-1,0)}\n let b_offset = ${I.indicesToOffset(\"b_indices\")};\n var values: array<${A.type.value}, ${f}>;\n for (var k: u32 = 0u; k < uniforms.K; k = k + ${p}) {\n ${O()}\n }\n for (var i = 0u; i < ${f}u; i++) {\n var value = values[i];\n ${U}\n ${R}\n let cur_indices = ${A.type.indices}(batch, row + i, col);\n let offset = ${A.indicesToOffset(\"cur_indices\")};\n ${A.setByOffset(`offset / ${c}`,\"value\")};\n }\n }\n `};return{name:\"MatMulNaive\",shaderCache:{hint:`${t.activation};${c};${p};${f};${o}`,inputDependencies:h?[\"rank\",\"rank\",\"rank\"]:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:i?i(n):n,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(m/64)},programUniforms:_}),getShaderSource:w}}});var al,ul,Yn,us,dl,Jn,ll,_t,dn=k(()=>{\"use strict\";L();F();j();Fe();un();sn();al=(e,t)=>e?`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n kStart + inputRow,\n globalRowStart / innerElementSize + inputCol${t?\", batchIndices\":\"\"});\n `:`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n globalRow + innerRow,\n kStart / innerElementSize + inputCol${t?\", batchIndices\":\"\"});\n `,ul=(e,t)=>e?`\n let ACached0 = mm_Asub[k * innerElementSize][localRow];\n let ACached1 = mm_Asub[k * innerElementSize + 1][localRow];\n let ACached2 = mm_Asub[k * innerElementSize + 2][localRow];\n ${t===3?\"\":\"let ACached3 = mm_Asub[k * innerElementSize + 3][localRow];\"}\n for (var i = 0; i < rowPerThread; i = i + 1) {\n acc[i] = BCached0 * ACached0[i] + acc[i];\n acc[i] = BCached1 * ACached1[i] + acc[i];\n acc[i] = BCached2 * ACached2[i] + acc[i];\n ${t===3?\"\":\"acc[i] = BCached3 * ACached3[i] + acc[i];\"}\n }`:`\n for (var i = 0; i < rowPerThread; i = i + 1) {\n let ACached = mm_Asub[tileRow + i][k];\n acc[i] = BCached0 * ACached.x + acc[i];\n acc[i] = BCached1 * ACached.y + acc[i];\n acc[i] = BCached2 * ACached.z + acc[i];\n ${t===3?\"\":\"acc[i] = BCached3 * ACached.w + acc[i];\"}\n }`,Yn=(e,t,n=\"f32\",r,o=!1,i=32,s=!1,a=32)=>{let u=t[1]*e[1],d=t[0]*e[0],l=o?u:i,c=o?i:u,p=l/t[0],f=i/t[1];if(!((o&&p===4&&e[1]===4||!o&&(p===3||p===4))&&l%t[0]===0&&i%t[1]===0&&e[0]===4))throw new Error(`If transposeA ${o} is true, innerElementSize ${p} and workPerThread[1] ${e[1]} must be 4.\n Otherwise, innerElementSize ${p} must be 3 or 4.\n tileAWidth ${l} must be divisible by workgroupSize[0]${t[0]}. tileInner ${i} must be divisible by workgroupSize[1] ${t[1]}. colPerThread ${e[0]} must be 4.`);return`\nvar<workgroup> mm_Asub: array<array<vec${p}<${n}>, ${l/p}>, ${c}>;\nvar<workgroup> mm_Bsub: array<array<vec4<${n}>, ${d/e[0]}>, ${i}>;\n\nconst rowPerThread = ${e[1]};\nconst colPerThread = ${e[0]};\nconst innerElementSize = ${p};\nconst tileInner = ${i};\n\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\nfn main(@builtin(local_invocation_id) localId : vec3<u32>,\n @builtin(global_invocation_id) globalId : vec3<u32>,\n @builtin(workgroup_id) workgroupId : vec3<u32>) {\n let localRow = i32(localId.y);\n let tileRow = localRow * rowPerThread;\n let tileCol = i32(localId.x);\n\n let globalRow =i32(globalId.y) * rowPerThread;\n let globalCol = i32(globalId.x);\n let batch = ${s?\"0\":\"i32(globalId.z)\"};\n ${r?`let batchIndices = ${r.offsetToIndices(\"u32(batch)\")};`:\"\"}\n let globalRowStart = i32(workgroupId.y) * ${u};\n\n let num_tiles = ${s?`${Math.ceil(a/i)}`:\"(uniforms.dim_inner - 1) / tileInner + 1\"};\n var kStart = ${s?`i32(globalId.z) * ${a}`:\"0\"};\n\n var acc: array<vec4<${n}>, rowPerThread>;\n\n // Loop over shared dimension.\n let tileRowB = localRow * ${f};\n for (var t = 0; t < num_tiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let inputRow = tileRow + innerRow;\n let inputCol = tileCol;\n ${al(o,r)}\n }\n\n // Load one tile of B into local memory.\n for (var innerRow = 0; innerRow < ${f}; innerRow = innerRow + 1) {\n let inputRow = tileRowB + innerRow;\n let inputCol = tileCol;\n mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalCol${r?\", batchIndices\":\"\"});\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n for (var k = 0; k < tileInner / innerElementSize; k = k + 1) {\n let BCached0 = mm_Bsub[k * innerElementSize][tileCol];\n let BCached1 = mm_Bsub[k * innerElementSize + 1][tileCol];\n let BCached2 = mm_Bsub[k * innerElementSize + 2][tileCol];\n ${p===3?\"\":\"let BCached3 = mm_Bsub[k * innerElementSize + 3][tileCol];\"}\n\n ${ul(o,p)}\n }\n\n workgroupBarrier();\n }\n\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n mm_write(batch, globalRow + innerRow, globalCol, acc[innerRow]);\n }\n}`},us=(e,t)=>e?`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n kStart + inputRow,\n globalRowStart + inputCol${t?\", batchIndices\":\"\"});\n `:`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n globalRowStart + inputRow,\n kStart + inputCol${t?\", batchIndices\":\"\"});\n `,dl=e=>e?\"let ACached = mm_Asub[k][tileRow + innerRow];\":\"let ACached = mm_Asub[tileRow + innerRow][k];\",Jn=(e,t,n=\"f32\",r,o=!1,i=32,s=!1,a=32,u=!1)=>{let d=e[1]*t[1],l=e[0]*t[0],c=o?d:i,p=o?i:d;if(!(p%t[1]===0&&c%t[0]===0&&i%t[1]===0))throw new Error(`tileAHight ${p} must be divisible by workgroupSize[1]${t[1]}, tileAWidth ${c} must be divisible by workgroupSize[0]${t[0]}, tileInner ${i} must be divisible by workgroupSize[1]${t[1]}`);let f=p/t[1],m=c/t[0],h=i/t[1],b=u?`\n let localRow = i32(localId.y);\n let localCol = i32(localId.x);\n let globalRowStart = i32(workgroupId.y) * ${d};\n let globalColStart = i32(workgroupId.x) * ${l};\n\n // Loop over shared dimension.\n for (var t = 0; t < num_tiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var inputRow = localRow; inputRow < ${p}; inputRow = inputRow + ${t[1]}) {\n for (var inputCol = localCol; inputCol < ${c}; inputCol = inputCol + ${t[0]}) {\n ${us(o,r)}\n }\n }\n // Load one tile of B into local memory.\n for (var inputRow = localRow; inputRow < ${i}; inputRow = inputRow + ${t[1]}) {\n for (var inputCol = localCol; inputCol < ${l}; inputCol = inputCol + ${t[0]}) {\n mm_Bsub[inputRow][inputCol] = mm_readB(batch,\n kStart + inputRow,\n globalColStart + inputCol${r?\", batchIndices\":\"\"});\n }\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n var BCached : array<${n}, colPerThread>;\n for (var k = 0; k < tileInner; k = k + 1) {\n for (var inner = 0; inner < colPerThread; inner = inner + 1) {\n BCached[inner] = mm_Bsub[k][localCol + inner * ${t[0]}];\n }\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let ACached = ${o?`mm_Asub[k][localRow + innerRow * ${t[1]}];`:`mm_Asub[localRow + innerRow * ${t[1]}][k];`}\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = acc[innerRow][innerCol] +\n ACached * BCached[innerCol];\n }\n }\n }\n workgroupBarrier();\n }\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let gRow = globalRowStart + localRow + innerRow * ${t[1]};\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n let gCol = globalColStart + localCol + innerCol * ${t[0]};\n mm_write(batch, gRow, gCol, acc[innerRow][innerCol]);\n }\n }\n `:`\nlet tileRow = i32(localId.y) * rowPerThread;\nlet tileCol = i32(localId.x) * colPerThread;\n\nlet globalRow = i32(globalId.y) * rowPerThread;\nlet globalCol = i32(globalId.x) * colPerThread;\nlet globalRowStart = i32(workgroupId.y) * ${d};\n\nlet tileRowA = i32(localId.y) * ${f};\nlet tileColA = i32(localId.x) * ${m};\nlet tileRowB = i32(localId.y) * ${h};\n// Loop over shared dimension.\nfor (var t = 0; t < num_tiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var innerRow = 0; innerRow < ${f}; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < ${m}; innerCol = innerCol + 1) {\n let inputRow = tileRowA + innerRow;\n let inputCol = tileColA + innerCol;\n ${us(o,r)}\n }\n }\n\n // Load one tile of B into local memory.\n for (var innerRow = 0; innerRow < ${h}; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n let inputRow = tileRowB + innerRow;\n let inputCol = tileCol + innerCol;\n mm_Bsub[inputRow][inputCol] = mm_readB(batch,\n kStart + inputRow,\n globalCol + innerCol${r?\", batchIndices\":\"\"});\n }\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n var BCached : array<${n}, colPerThread>;\n for (var k = 0; k < tileInner; k = k + 1) {\n for (var inner = 0; inner < colPerThread; inner = inner + 1) {\n BCached[inner] = mm_Bsub[k][tileCol + inner];\n }\n\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n ${dl(o)}\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol];\n }\n }\n }\n\n workgroupBarrier();\n}\n\nfor (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n mm_write(batch, globalRow + innerRow, globalCol + innerCol,\n acc[innerRow][innerCol]);\n }\n}\n`;return`\n var<workgroup> mm_Asub : array<array<${n}, ${c}>, ${p}>;\n var<workgroup> mm_Bsub : array<array<${n}, ${l}>, ${i}>;\n const rowPerThread = ${e[1]};\n const colPerThread = ${e[0]};\n const tileInner = ${i};\n\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\nfn main(@builtin(local_invocation_id) localId : vec3<u32>,\n @builtin(global_invocation_id) globalId : vec3<u32>,\n @builtin(workgroup_id) workgroupId : vec3<u32>) {\n let batch = ${s?\"0\":\"i32(globalId.z)\"};\n ${r?`let batchIndices = ${r.offsetToIndices(\"u32(batch)\")};`:\"\"}\n let num_tiles = ${s?`${Math.ceil(a/i)}`:\"(uniforms.dim_inner - 1) / tileInner + 1\"};\n var kStart = ${s?`i32(globalId.z) * ${a}`:\"0\"};\n\n var acc : array<array<${n}, colPerThread>, rowPerThread>;\n ${b}\n }\n`},ll=(e,t,n,r,o=!1)=>{let[i,s,a,u]=r,d=re(r[0].type.tensor);return`\n fn mm_readA(batch: i32, row: i32, colIn: i32, batchIndices: ${i.type.indices}) -> ${ue(e,d)} {\n var value = ${ue(e,d)}(0.0);\n let col = colIn * ${e};\n if(row < uniforms.dim_a_outer && col < uniforms.dim_inner)\n {\n var aIndices: ${s.type.indices};\n ${bt(\"aIndices\",s,s.rank-2,i.rank,\"batchIndices\")}\n ${s.indicesSet(\"aIndices\",s.rank-2,\"u32(row)\")}\n ${s.indicesSet(\"aIndices\",s.rank-1,\"u32(colIn)\")}\n value = ${s.getByIndices(\"aIndices\")};\n }\n return value;\n }\n\n fn mm_readB(batch: i32, row: i32, colIn: i32, batchIndices: ${i.type.indices}) -> ${ue(e,d)} {\n var value = ${ue(e,d)}(0.0);\n let col = colIn * ${e};\n if(row < uniforms.dim_inner && col < uniforms.dim_b_outer)\n {\n var bIndices: ${a.type.indices};\n ${bt(\"bIndices\",a,a.rank-2,i.rank,\"batchIndices\")}\n ${a.indicesSet(\"bIndices\",a.rank-2,\"u32(row)\")}\n ${a.indicesSet(\"bIndices\",a.rank-1,\"u32(colIn)\")}\n value = ${a.getByIndices(\"bIndices\")};\n }\n return value;\n }\n\n fn mm_write(batch: i32, row: i32, colIn: i32, valueIn: ${ue(e,d)}) {\n let col = colIn * ${e};\n if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer) {\n var value = valueIn;\n let coords = vec3<i32>(batch, row, colIn);\n ${t?`value = value + ${o?\"bias[colIn]\":`${ue(e,d)}(bias[row])`};`:\"\"}\n ${n}\n ${u.setByIndices(\"vec3<u32>(coords)\",\"value\")}\n }\n }\n `},_t=(e,t,n,r,o=!1,i)=>{let s=e[0].dims,a=e[1].dims,u=s.slice(0,-2),d=a.slice(0,-2),l=r?r.slice(0,-2):n.slice(0,-2),c=x.size(l),p=s[s.length-2],f=s[s.length-1],m=a[a.length-1],h=f%4===0&&m%4===0,b=p<=8?[4,1,1]:[4,4,1],y=[8,8,1],g=[Math.ceil(m/y[0]/b[0]),Math.ceil(p/y[1]/b[1]),Math.ceil(c/y[2]/b[2])],_=h?4:1,w=[...u,p,f/_],v=w.length,$=[...d,f,m/_],T=$.length,I=[c,p,m/_],A=[{type:6,data:p},{type:6,data:m},{type:6,data:f}];Ce(t,A),A.push(...P(l,w,$));let z=[\"rank\",\"rank\"],R=e.length>2;R&&(A.push(...P(e[2].dims)),z.push(\"rank\")),A.push(...P(I));let D=U=>{let Q=l.length,O=Yt(\"batchDims\",e[0].dataType,Q,1),M=re(e[0].dataType),V=S(\"a\",e[0].dataType,v,_),W=S(\"b\",e[1].dataType,T,_),H=C(\"result\",e[0].dataType,I.length,_),X=[V,W];if(R){let N=o?_:1;X.push(S(\"bias\",e[2].dataType,e[2].dims.length,N))}let oe=[{name:\"dim_a_outer\",type:\"i32\"},{name:\"dim_b_outer\",type:\"i32\"},{name:\"dim_inner\",type:\"i32\"}];Ae(t,oe);let de=re(H.type.tensor),q=Ie(t,H.type.value,de),E=ll(_,R,q,[O,V,W,H],o);return`\n ${U.registerUniforms(oe).registerInternalVariables(O).declareVariables(...X,H)}\n ${E}\n ${h?Yn(b,y,M,O):Jn(b,y,M,O)}\n `};return{name:\"MatMul\",shaderCache:{hint:`${b};${t.activation};${h};${o}`,inputDependencies:z},getRunData:()=>({outputs:[{dims:i?i(n):n,dataType:e[0].dataType}],dispatchGroup:{x:g[0],y:g[1],z:g[2]},programUniforms:A}),getShaderSource:D}}});var cl,ds,ls=k(()=>{\"use strict\";L();ke();j();Fe();sn();as();dn();cl=(e,t,n,r,o=!1,i,s=4,a=4,u=4,d=\"f32\")=>{let l=z=>{switch(z){case 1:return\"resData = x[xIndex];\";case 3:return`resData = vec3<${d}>(x[xIndex], x[xIndex + 1], x[xIndex + 2]);`;case 4:return\"resData = x[xIndex / 4];\";default:throw new Error(`innerElementSize ${z} is not supported.`)}},c=z=>{switch(z){case 1:return\"return w[row * i32(uniforms.w_shape[3]) + colIn];\";case 4:return\"return w[row * i32(uniforms.w_shape[3]) / 4 + colIn];\";default:throw new Error(`innerElementSize ${z} is not supported.`)}},p=e?`\n let coord = vec4<i32>(batch, xRow, xCol, xCh);\n `:`\n let coord = vec4<i32>(batch, xCh, xRow, xCol);\n `,f=e?`\n let coords = vec4<i32>(\n batch,\n row / outWidth,\n row % outWidth,\n col);\n `:`\n let coords = vec4<i32>(\n batch,\n row,\n col / outWidth,\n col % outWidth);\n `,m=e?\"i32(uniforms.x_shape[1])\":\"i32(uniforms.x_shape[2])\",h=e?\"i32(uniforms.x_shape[2])\":\"i32(uniforms.x_shape[3])\",b=e?\"row\":\"col\",y=e?\"col\":\"row\",g=`\n let inChannels = i32(uniforms.w_shape[2]);\n let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\n let outRow = ${b} / outWidth;\n let outCol = ${b} % outWidth;\n\n let WRow = ${y} / (i32(uniforms.w_shape[1]) * inChannels);\n let WCol = ${y} / inChannels % i32(uniforms.w_shape[1]);\n let xRow = outRow * uniforms.stride[0] + uniforms.dilation[0] * WRow - uniforms.pad[0];\n let xCol = outCol * uniforms.stride[1] + uniforms.dilation[1] * WCol - uniforms.pad[1];\n let xCh = ${y} % inChannels;\n var resData = ${ue(s,d)}(0.0);\n // The bounds checking is always needed since we use it to pad zero for\n // the 'same' padding type.\n if (xRow >= 0 && xRow < ${m} && xCol >= 0 && xCol < ${h}) {\n ${p}\n let xIndex = getIndexFromCoords4D(coord, vec4<i32>(uniforms.x_shape));\n ${l(s)}\n }\n return resData;`,_=e?t&&r?`\n let col = colIn * ${s};\n ${g}`:`\n let col = colIn * ${s};\n if (row < uniforms.dim_a_outer && col < uniforms.dim_inner) {\n ${g}\n }\n return ${ue(s,d)}(0.0);`:r&&n?`\n let col = colIn * ${s};\n ${g}`:`\n let col = colIn * ${s};\n if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) {\n ${g}\n }\n return ${ue(s,d)}(0.0);`,w=e?r&&n?c(a):`\n let col = colIn * ${a};\n if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) {\n ${c(a)}\n }\n return ${ue(a,d)}(0.0);`:`\n let col = colIn * ${a};\n if (row < uniforms.dim_inner && col < uniforms.dim_a_outer) {\n ${c(a)}\n }\n return ${ue(a,d)}(0.0);`,v=ue(u,d),$=e?ue(s,d):ue(a,d),T=e?ue(a,d):ue(s,d),I=Ie(i,v,d);return`\n fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${$} {\n ${e?_:w}\n }\n\n fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${T} {\n ${e?w:_}\n }\n\n fn mm_write(batch: i32, row : i32, colIn : i32, valueIn : ${v}) {\n let col = colIn * ${u};\n if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer)\n {\n var value = valueIn;\n let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\n ${f}\n ${is(o)}\n ${I}\n setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value);\n }\n }`},ds=(e,t,n,r,o,i,s,a,u)=>{let d=t.format===\"NHWC\",l=d?e[0].dims[3]:e[0].dims[1],c=n[0],p=d?n[2]:n[3],f=d?n[1]:n[2],m=d?n[3]:n[1],h=d&&(l%4===0||l%3===0)&&m%4===0,b=d?m:p*f,y=d?p*f:m,g=[8,8,1],_=r<=8?[4,1,1]:[4,4,1],w=[Math.ceil(b/g[0]/_[0]),Math.ceil(y/g[1]/_[1]),Math.ceil(c/g[2]/_[2])];Z(\"verbose\",()=>`[conv2d_mm_webgpu] dispatch = ${w}`);let v=h?d&&l%4!==0?3:4:1,$=g[1]*_[1],T=g[0]*_[0],I=Math.max(g[0]*v,g[1]),A=r%$===0,z=o%T===0,R=i%I===0,D=h?[v,4,4]:[1,1,1],U=[{type:6,data:r},{type:6,data:o},{type:6,data:i},{type:6,data:[t.pads[0],t.pads[1]]},{type:6,data:t.strides},{type:6,data:t.dilations}];Ce(t,U),U.push(...P(e[0].dims,e[1].dims));let Q=[\"rank\",\"rank\"];s&&(U.push(...P(e[2].dims)),Q.push(\"rank\")),U.push(...P(n));let O=M=>{let V=[{name:\"dim_a_outer\",type:\"i32\"},{name:\"dim_b_outer\",type:\"i32\"},{name:\"dim_inner\",type:\"i32\"},{name:\"pad\",type:\"i32\",length:2},{name:\"stride\",type:\"i32\",length:2},{name:\"dilation\",type:\"i32\",length:2}];Ae(t,V);let W=h?4:1,H=re(e[0].dataType),X=`\n fn setOutputAtIndex(flatIndex : i32, value : ${h?`vec4<${H}>`:H}) {\n result[flatIndex] = ${h?`vec4<${H}>`:H}(value);\n }\n fn setOutputAtCoords(d0 : i32, d1 : i32, d2 : i32, d3 : i32, value : ${h?`vec4<${H}>`:H}) {\n let flatIndex = getOutputIndexFromCoords(vec4<i32>(d0, d1, d2, d3));\n setOutputAtIndex(flatIndex ${h?\"/ 4\":\"\"}, value);\n }`,oe=S(\"x\",e[0].dataType,e[0].dims.length,v===3?1:v),de=S(\"w\",e[1].dataType,e[1].dims.length,W),q=[oe,de],E=C(\"result\",e[0].dataType,n.length,W);if(s){let N=S(\"bias\",e[2].dataType,e[2].dims.length,W);q.push(N),X+=`\n fn getBiasByOutputCoords(coords : vec4<i32>) -> ${h?`vec4<${H}>`:H} {\n return bias[coords.${d?\"w\":\"y\"}${h?\"/ 4\":\"\"}];\n }`}return`\n ${ss(\"uniforms.result_strides\")}\n //struct Uniforms { xShape : vec4<i32>, wShape : vec4<i32>, outShape : vec4<i32>,\n // outShapeStrides: vec3<i32>, filterDims : vec2<i32>, pad : vec2<i32>, stride : vec2<i32>,\n // dilation : vec2<i32>, dimAOuter : i32, dimBOuter : i32, dimInner : i32 };\n ${M.registerUniforms(V).declareVariables(...q,E)}\n ${X}\n ${cl(d,A,z,R,s,t,D[0],D[1],D[2],H)}\n ${h?Yn(_,g,H,void 0,!d,I):Jn(_,g,H,void 0,!d,I,!1,void 0,a)}`};return{name:\"Conv2DMatMul\",shaderCache:{hint:`${t.cacheKey};${v};${h};${A};${z};${R};${$};${T};${I}`,inputDependencies:Q},getRunData:()=>({outputs:[{dims:u?u(n):n,dataType:e[0].dataType}],dispatchGroup:{x:w[0],y:w[1],z:w[2]},programUniforms:U}),getShaderSource:O}}});var pl,cs,ln,ml,ps,fl,ms,fs,hs=k(()=>{\"use strict\";L();ke();F();j();Fe();sn();pl=e=>{let t=1;for(let n=0;n<e.length;n++)t*=e[n];return t},cs=e=>typeof e==\"number\"?[e,e,e]:e,ln=(e,t)=>t<=1?e:e+(e-1)*(t-1),ml=(e,t,n,r=1)=>{let o=ln(t,r);return Math.floor((e[0]*(n-1)-n+o)/2)},ps=(e,t,n,r,o)=>{o==null&&(o=ml(e,t[0],r[0]));let i=[0,0,0,n];for(let s=0;s<3;s++)e[s]+2*o>=t[s]&&(i[s]=Math.trunc((e[s]-t[s]+2*o)/r[s]+1));return i},fl=(e,t,n,r,o,i,s,a,u,d)=>{let l,c,p,f;if(e===\"VALID\"&&(e=0),typeof e==\"number\"){l={top:e,bottom:e,left:e,right:e,front:e,back:e};let m=ps([t,n,r,1],[a,u,d],1,[o,i,s],e);c=m[0],p=m[1],f=m[2]}else if(Array.isArray(e)){if(!e.every((h,b,y)=>h===y[0]))throw Error(`Unsupported padding parameter: ${e}`);l={top:e[0],bottom:e[1],left:e[2],right:e[3],front:e[4],back:e[5]};let m=ps([t,n,r,1],[a,u,d],1,[o,i,s],e[0]);c=m[0],p=m[1],f=m[2]}else if(e===\"SAME_UPPER\"){c=Math.ceil(t/o),p=Math.ceil(n/i),f=Math.ceil(r/s);let m=(c-1)*o+a-t,h=(p-1)*i+u-n,b=(f-1)*s+d-r,y=Math.floor(m/2),g=m-y,_=Math.floor(h/2),w=h-_,v=Math.floor(b/2),$=b-v;l={top:_,bottom:w,left:v,right:$,front:y,back:g}}else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:l,outDepth:c,outHeight:p,outWidth:f}},ms=(e,t,n,r,o,i=!1,s=\"channelsLast\")=>{let a,u,d,l,c;if(s===\"channelsLast\")[a,u,d,l,c]=e;else if(s===\"channelsFirst\")[a,c,u,d,l]=e;else throw new Error(`Unknown dataFormat ${s}`);let[p,,f,m,h]=t,[b,y,g]=cs(n),[_,w,v]=cs(r),$=ln(f,_),T=ln(m,w),I=ln(h,v),{padInfo:A,outDepth:z,outHeight:R,outWidth:D}=fl(o,u,d,l,b,y,g,$,T,I),U=i?p*c:p,Q=[0,0,0,0,0];return s===\"channelsFirst\"?Q=[a,U,z,R,D]:s===\"channelsLast\"&&(Q=[a,z,R,D,U]),{batchSize:a,dataFormat:s,inDepth:u,inHeight:d,inWidth:l,inChannels:c,outDepth:z,outHeight:R,outWidth:D,outChannels:U,padInfo:A,strideDepth:b,strideHeight:y,strideWidth:g,filterDepth:f,filterHeight:m,filterWidth:h,effectiveFilterDepth:$,effectiveFilterHeight:T,effectiveFilterWidth:I,dilationDepth:_,dilationHeight:w,dilationWidth:v,inShape:e,outShape:Q,filterShape:t}},fs=(e,t,n,r,o,i)=>{let s=i===\"channelsLast\",a=s?e[0].dims[3]:e[0].dims[1],u=!1,d=[64,1,1],l={x:n.map((g,_)=>_)},c=[Math.ceil(pl(l.x.map(g=>n[g]))/d[0]),1,1];Z(\"verbose\",()=>`[conv3d_naive_webgpu] dispatch = ${c}`);let p=u?s&&a%4!==0?3:4:1,f=x.size(n),m=[{type:12,data:f},{type:12,data:r},{type:12,data:o},{type:12,data:t.strides},{type:12,data:t.dilations}];Ce(t,m),m.push(...P(e[0].dims,e[1].dims));let h=[\"rank\",\"rank\"],b=e.length===3;b&&(m.push(...P(e[2].dims)),h.push(\"rank\")),m.push(...P(n));let y=g=>{let _=[{name:\"output_size\",type:\"u32\"},{name:\"filter_dims\",type:\"u32\",length:r.length},{name:\"pads\",type:\"u32\",length:o.length},{name:\"strides\",type:\"u32\",length:t.strides.length},{name:\"dilations\",type:\"u32\",length:t.dilations.length}];Ae(t,_);let w=u?4:1,v=re(e[0].dataType),$=S(\"x\",e[0].dataType,e[0].dims.length,p===3?1:p),T=S(\"W\",e[1].dataType,e[1].dims.length,w),I=[$,T],A=C(\"result\",e[0].dataType,n.length,w),z=\"\";if(b){let U=S(\"bias\",e[2].dataType,e[2].dims.length,w);I.push(U),z+=`\n fn getBiasByOutputCoords(coords : array<u32, 5>) -> ${u?`vec4<${v}>`:v} {\n return bias[${s?B(\"coords\",4,5):B(\"coords\",1,5)}${u?\"/ 4\":\"\"}];\n }`}let R=ue(p,v),D=Ie(t,R,v);return`\n ${z}\n fn getX(d0 : u32, d1 : u32, d2 : u32, d3 : u32, d4 : u32) -> f32 {\n let aIndices = array<u32, 5>(d0, d1, d2, d3, d4);\n return ${$.getByIndices(\"aIndices\")};\n }\n fn getW(d0 : u32, d1 : u32, d2 : u32, d3 : u32, d4 : u32) -> f32 {\n let aIndices = array<u32, 5>(d0, d1, d2, d3, d4);\n return ${T.getByIndices(\"aIndices\")};\n }\n ${g.registerUniforms(_).declareVariables(...I,A)}\n ${g.mainStart()}\n ${g.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n let coords = ${A.offsetToIndices(\"global_idx\")};\n let batch = ${B(\"coords\",0,$.rank)};\n let d2 = ${s?B(\"coords\",$.rank-1,$.rank):B(\"coords\",1,$.rank)};\n let xFRCCorner = vec3<u32>(${s?B(\"coords\",1,$.rank):B(\"coords\",2,$.rank)},\n ${s?B(\"coords\",2,$.rank):B(\"coords\",3,$.rank)},\n ${s?B(\"coords\",3,$.rank):B(\"coords\",4,$.rank)}) * uniforms.strides - uniforms.pads;\n let xFCorner = xFRCCorner.x;\n let xRCorner = xFRCCorner.y;\n let xCCorner = xFRCCorner.z;\n let xShapeY = ${s?B(\"uniforms.x_shape\",1,$.rank):B(\"uniforms.x_shape\",2,$.rank)};\n let xShapeZ = ${s?B(\"uniforms.x_shape\",2,$.rank):B(\"uniforms.x_shape\",3,$.rank)};\n let xShapeW = ${s?B(\"uniforms.x_shape\",3,$.rank):B(\"uniforms.x_shape\",4,$.rank)};\n let xShapeU = ${s?B(\"uniforms.x_shape\",4,$.rank):B(\"uniforms.x_shape\",1,$.rank)};\n let inputDepthNearestVec4 = (xShapeU / 4) * 4;\n let inputDepthVec4Remainder = xShapeU % 4;\n\n var value = 0.0;\n for (var wF = 0u; wF < uniforms.filter_dims[0]; wF++) {\n let xF = xFCorner + wF * uniforms.dilations[0];\n if (xF < 0 || xF >= xShapeY) {\n continue;\n }\n\n for (var wR = 0u; wR < uniforms.filter_dims[1]; wR++) {\n let xR = xRCorner + wR * uniforms.dilations[1];\n if (xR < 0 || xR >= xShapeZ) {\n continue;\n }\n\n for (var wC = 0u; wC < uniforms.filter_dims[2]; wC++) {\n let xC = xCCorner + wC * uniforms.dilations[2];\n if (xC < 0 || xC >= xShapeW) {\n continue;\n }\n\n for (var d1 = 0u; d1 < inputDepthNearestVec4; d1 += 4) {\n ${s?`let xValues = vec4<f32>(\n getX(batch, xF, xR, xC, d1),\n getX(batch, xF, xR, xC, d1 + 1),\n getX(batch, xF, xR, xC, d1 + 2),\n getX(batch, xF, xR, xC, d1 + 3));\n `:`let xValues = vec4<f32>(\n getX(batch, d1, xF, xR, xC),\n getX(batch, d1 + 1, xF, xR, xC),\n getX(batch, d1 + 2, xF, xR, xC),\n getX(batch, d1 + 3, xF, xR, xC));\n `}\n let wValues = vec4<f32>(\n getW(d2, d1, wF, wR, wC),\n getW(d2, d1 + 1, wF, wR, wC),\n getW(d2, d1 + 2, wF, wR, wC),\n getW(d2, d1 + 3, wF, wR, wC));\n value += dot(xValues, wValues);\n }\n if (inputDepthVec4Remainder == 1) {\n ${s?`value += getX(batch, xF, xR, xC, inputDepthNearestVec4)\n * getW(d2, inputDepthNearestVec4, wF, wR, wC);`:`value += getX(batch, inputDepthNearestVec4, xF, xR, xC)\n * getW(d2, inputDepthNearestVec4, wF, wR, wC);`}\n } else if (inputDepthVec4Remainder == 2) {\n ${s?`let xValues = vec2<f32>(\n getX(batch, xF, xR, xC, inputDepthNearestVec4),\n getX(batch, xF, xR, xC, inputDepthNearestVec4 + 1));\n `:`let xValues = vec2<f32>(\n getX(batch, inputDepthNearestVec4, xF, xR, xC),\n getX(batch, inputDepthNearestVec4 + 1, xF, xR, xC));\n `}\n let wValues = vec2<f32>(\n getW(d2, inputDepthNearestVec4, wF, wR, wC),\n getW(d2, inputDepthNearestVec4 + 1, wF, wR, wC));\n value += dot(xValues, wValues);\n } else if (inputDepthVec4Remainder == 3) {\n ${s?`let xValues = vec3<f32>(\n getX(batch, xF, xR, xC, inputDepthNearestVec4),\n getX(batch, xF, xR, xC, inputDepthNearestVec4 + 1),\n getX(batch, xF, xR, xC, inputDepthNearestVec4 + 2));\n `:`let xValues = vec3<f32>(\n getX(batch, inputDepthNearestVec4, xF, xR, xC),\n getX(batch, inputDepthNearestVec4 + 1, xF, xR, xC),\n getX(batch, inputDepthNearestVec4 + 2, xF, xR, xC));\n `}\n let wValues = vec3<f32>(\n getW(d2, inputDepthNearestVec4, wF, wR, wC),\n getW(d2, inputDepthNearestVec4 + 1, wF, wR, wC),\n getW(d2, inputDepthNearestVec4 + 2, wF, wR, wC));\n value += dot(xValues, wValues);\n }\n }\n }\n }\n ${b?\"value = value + getBiasByOutputCoords(coords)\":\"\"};\n ${D}\n result[global_idx] = f32(value);\n }`};return{name:\"Conv3DNaive\",shaderCache:{hint:`${t.cacheKey};${s};${p};${b}`,inputDependencies:h},getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:c[0],y:c[1],z:c[2]},programUniforms:m}),getShaderSource:y}}});var gs,ys,bs=k(()=>{\"use strict\";L();F();j();Fe();gs=(e,t,n,r)=>{let o=e.length>2,i=o?\"value += b[output_channel];\":\"\",s=e[0].dims,a=e[1].dims,u=t.format===\"NHWC\",d=u?n[3]:n[1],l=d/t.group,c=u&&l>=4?J(d):1,p=x.size(n)/c,f=[{type:12,data:p},{type:12,data:t.dilations},{type:12,data:[t.strides[0],t.strides[1]]},{type:12,data:[t.pads[0],t.pads[1]]},{type:12,data:l}];Ce(t,f),f.push(...P(s,[a[0],a[1],a[2],a[3]/c]));let m=o?[\"rank\",\"rank\",\"rank\"]:[\"rank\",\"rank\"];f.push(...P([n[0],n[1],n[2],n[3]/c]));let h=b=>{let y=C(\"output\",e[0].dataType,n.length,c),g=re(y.type.tensor),_=Ie(t,y.type.value,g),w=S(\"x\",e[0].dataType,s.length),v=S(\"w\",e[1].dataType,a.length,c),$=[w,v];o&&$.push(S(\"b\",e[2].dataType,e[2].dims,c));let T=[{name:\"output_size\",type:\"u32\"},{name:\"dilations\",type:\"u32\",length:t.dilations.length},{name:\"strides\",type:\"u32\",length:2},{name:\"pads\",type:\"u32\",length:2},{name:\"output_channels_per_group\",type:\"u32\"}];Ae(t,T);let I=u?`\n for (var wHeight: u32 = 0u; wHeight < uniforms.w_shape[0]; wHeight++) {\n let xHeight = xRCCorner.x + wHeight * uniforms.dilations[0];\n\n if (xHeight < 0u || xHeight >= uniforms.x_shape[1]) {\n continue;\n }\n\n for (var wWidth: u32 = 0u; wWidth < uniforms.w_shape[1]; wWidth++) {\n let xWidth = xRCCorner.y + wWidth * uniforms.dilations[1];\n if (xWidth < 0u || xWidth >= uniforms.x_shape[2]) {\n continue;\n }\n\n for (var wInChannel: u32 = 0u; wInChannel < uniforms.w_shape[2]; wInChannel++) {\n let input_channel = in_channel_offset + wInChannel;\n let xVal = ${w.get(\"batch\",\"xHeight\",\"xWidth\",\"input_channel\")};\n let wVal = ${v.get(\"wHeight\",\"wWidth\",\"wInChannel\",\"output_channel\")};\n value += xVal * wVal;\n }\n }\n }\n `:`\n for (var wInChannel: u32 = 0u; wInChannel < uniforms.w_shape[1]; wInChannel++) {\n let input_channel = in_channel_offset + wInChannel;\n for (var wHeight: u32 = 0u; wHeight < uniforms.w_shape[2]; wHeight++) {\n let xHeight = xRCCorner.x + wHeight * uniforms.dilations[0];\n\n if (xHeight < 0u || xHeight >= uniforms.x_shape[2]) {\n continue;\n }\n\n for (var wWidth: u32 = 0u; wWidth < uniforms.w_shape[3]; wWidth++) {\n let xWidth = xRCCorner.y + wWidth * uniforms.dilations[1];\n if (xWidth < 0u || xWidth >= uniforms.x_shape[3]) {\n continue;\n }\n\n let xVal = ${w.get(\"batch\",\"input_channel\",\"xHeight\",\"xWidth\")};\n let wVal = ${v.get(\"output_channel\",\"wInChannel\",\"wHeight\",\"wWidth\")};\n value += xVal * wVal;\n }\n }\n }\n `;return`\n ${b.registerUniforms(T).declareVariables(...$,y)}\n\n ${b.mainStart()}\n ${b.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n\n let outputIndices = ${y.offsetToIndices(\"global_idx\")};\n let batch: u32 = outputIndices[0];\n let output_channel: u32 = outputIndices[${u?3:1}];\n let xRCCorner: vec2<u32> = vec2<u32>(outputIndices[${u?1:2}], outputIndices[${u?2:3}]) * uniforms.strides - uniforms.pads;\n let group_id: u32 = output_channel * ${c} / uniforms.output_channels_per_group;\n var in_channel_offset = group_id * uniforms.w_shape[${u?2:1}];\n\n var value: ${y.type.value} = ${y.type.value}(0);\n ${I}\n ${i}\n ${_}\n ${y.setByOffset(\"global_idx\",\"value\")}\n }`};return{name:\"GroupedConv\",shaderCache:{hint:`${t.cacheKey}_${c}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:r?r(n):n,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:f}),getShaderSource:h}},ys=(e,t,n,r)=>{let o=e.length>2,i=J(n[3]),s=J(n[2]),a=x.size(n)/i/s,u=[e[0].dims[0],e[0].dims[1],e[0].dims[2],e[0].dims[3]/i],d=[e[1].dims[0],e[1].dims[1],e[1].dims[2],e[1].dims[3]/i],l=[n[0],n[1],n[2],n[3]/i],c=[{type:12,data:a},{type:6,data:[t.strides[0],t.strides[1]]},{type:6,data:[t.pads[0],t.pads[1]]}];Ce(t,c),c.push(...P(u,d,l));let p=(s-1)*t.strides[1]+d[1],f=m=>{let h=C(\"output\",e[0].dataType,l.length,i),b=re(h.type.tensor),y=Ie(t,h.type.value,b),g=S(\"x\",e[0].dataType,u.length,i),_=S(\"w\",e[1].dataType,d.length,i),w=[g,_];o&&w.push(S(\"b\",e[2].dataType,e[2].dims,i));let v=o?\"value += b[output_channel];\":\"\",$=[{name:\"output_size\",type:\"u32\"},{name:\"strides\",type:\"i32\",length:2},{name:\"pads\",type:\"i32\",length:2}];return Ae(t,$),`\n ${m.registerUniforms($).declareVariables(...w,h)}\n ${m.mainStart()}\n ${m.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n let width0 = uniforms.output_shape[3];\n let output_channel = global_idx % width0;\n var index1 = global_idx / width0;\n let width1 = uniforms.output_shape[2] / ${s}u;\n let col = (index1 % width1) * ${s}u;\n index1 = index1 / width1;\n let row = index1 % uniforms.output_shape[1];\n let batch = index1 / uniforms.output_shape[1];\n\n let x_corner = vec2<i32>(i32(row), i32(col)) * uniforms.strides - uniforms.pads;\n\n var x_vals: array<${g.type.value}, ${p}>;\n var values: array<${h.type.value}, ${s}>;\n let input_channel = output_channel;\n // Use constant instead of uniform can give better performance for w's height/width.\n for (var w_height: u32 = 0u; w_height < ${d[0]}; w_height++) {\n let x_height = x_corner.x + i32(w_height);\n if (x_height >= 0 && u32(x_height) < uniforms.x_shape[1]) {\n for (var i = 0; i < ${p}; i++) {\n let x_width = x_corner.y + i;\n if (x_width >= 0 && u32(x_width) < uniforms.x_shape[2]) {\n x_vals[i] = ${g.get(\"batch\",\"u32(x_height)\",\"u32(x_width)\",\"input_channel\")};\n } else {\n x_vals[i] = ${g.type.value}(0);\n }\n }\n for (var w_width: u32 = 0u; w_width < ${d[1]}; w_width++) {\n let w_val = ${_.get(\"w_height\",\"w_width\",\"0\",\"output_channel\")};\n for (var i = 0u; i < ${s}u; i++) {\n values[i] = fma(x_vals[i * u32(uniforms.strides[1]) + w_width], w_val, values[i]);\n }\n }\n }\n }\n\n for (var i = 0u; i < ${s}u; i++) {\n var value = values[i];\n ${v}\n ${y}\n ${h.set(\"batch\",\"row\",\"col + i\",\"output_channel\",\"value\")};\n }\n }`};return{name:\"GroupedConv-Vectorize\",shaderCache:{hint:`${t.cacheKey};${i};${s};${p};${d[0]};${d[1]}`,inputDependencies:o?[\"rank\",\"rank\",\"type\"]:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:r?r(n):n,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:c}),getShaderSource:f}}});var hl,er,gl,tr,nr,_s,yl,bl,rr,ws=k(()=>{\"use strict\";F();ls();hs();dn();bs();Fe();un();Ve();hl=(e,t,n,r,o,i)=>{let s=e[0],a=e.slice(i?1:2,i?3:4),u=a.length,d=t[0],c=t.slice(2).map((m,h)=>m+(m-1)*(n[h]-1)),f=a.map((m,h)=>m+r[h]+r[h+u]).map((m,h)=>Math.floor((m-c[h]+o[h])/o[h]));return f.splice(0,0,s),f.splice(i?3:1,0,d),f},er=[2,3,1,0],gl=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error(\"Conv requires 2 or 3 inputs\");if(e[0].dims.length>5)throw new Error(\"greater than 5D is not supported\");if(e[0].dims.length!==e[1].dims.length)throw new Error(\"filter does not have same dimension as input\");let n=e[0].dims[t.format===\"NHWC\"?e[0].dims.length-1:1],r=e[1].dims[1]*t.group;if(n!==r)throw new Error(\"FILTER_IN_CHANNEL should be equal to DATA_CHANNEL\");if(e.length===3&&(e[2].dims.length!==1||e[1].dims[0]!==e[2].dims[0]))throw new Error(\"invalid bias\");let o=e[0].dims.length-2;if(t.dilations.length!==o)throw new Error(`dilations should be ${o}D`);if(t.strides.length!==o)throw new Error(`strides should be ${o}D`);if(t.pads.length!==o*2)throw new Error(`pads should be ${o*2}D`);if(t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error(\"invalid kernel shape\")},tr=(e,t)=>{let n=e.kernelShape.slice();n.length<t[1].dims.length-2&&n.push(...Array(t[1].dims.length-2-n.length).fill(0));for(let i=2;i<t[1].dims.length;++i)n[i-2]===0&&(n[i-2]=t[1].dims[i]);let r=e.pads.slice();Ye.adjustPadsBasedOnAutoPad(t[0].dims,e.strides,e.dilations,n,r,e.format===\"NHWC\",e.autoPad);let o=Object.assign({},e);return Object.assign(o,{kernelShape:n,pads:r}),o},nr=e=>{let t=on(e),n=e.format,r=[\"NOTSET\",\"VALID\",\"SAME_UPPER\",\"SAME_LOWER\"][e.auto_pad],o=e.dilations,i=e.group,s=e.kernel_shape,a=e.pads,u=e.strides,d=e.w_is_const();return{autoPad:r,format:n,dilations:o,group:i,kernelShape:s,pads:a,strides:u,wIsConst:d,...t,cacheKey:`${e.format};${t.activation};`}},_s=(e,t,n,r)=>{let o=n.format===\"NHWC\",i=hl(t[0].dims,t[1].dims,n.dilations,n.pads,n.strides,o);if(n.group!==1){let $=[t[0]];if(o){let I=e.kernelCustomData.wT??e.compute(pe(t[1],er),{inputs:[1],outputs:[n.wIsConst?-2:-1]})[0];n.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=I),$.push(I)}else $.push(t[1]);t.length===3&&$.push(t[2]),!e.adapterInfo.isArchitecture(\"ampere\")&&o&&t[1].dims[0]===n.group&&t[1].dims[1]===1&&n.dilations[0]===1&&n.dilations[1]===1?e.compute(ys($,n,i,r),{inputs:$}):e.compute(gs($,n,i,r),{inputs:$});return}let s=t.length===3,a=t[0].dims[o?1:2],u=t[0].dims[o?2:3],d=t[0].dims[o?3:1],l=t[1].dims[2],c=t[1].dims[3],p=i[o?1:2],f=i[o?2:3],m=i[o?3:1],h=o&&l===a&&c===u&&n.pads[0]===0&&n.pads[1]===0;if(h||l===1&&c===1&&n.dilations[0]===1&&n.dilations[1]===1&&n.strides[0]===1&&n.strides[1]===1&&n.pads[0]===0&&n.pads[1]===0){let $=i[0],T,I,A,z=[];if(o){let U=e.kernelCustomData.wT??e.compute(pe(t[1],er),{inputs:[1],outputs:[n.wIsConst?-2:-1]})[0];if(n.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=U),h){let Q=a*u*d;T=t[0].reshape([1,$,Q]),I=U.reshape([1,Q,m]),A=[1,$,m]}else T=t[0].reshape([$,a*u,d]),I=U.reshape([1,d,m]),A=[$,p*f,m];z.push(T),z.push(I)}else T=t[0].reshape([$,d,a*u]),I=t[1].reshape([1,m,d]),A=[$,m,p*f],z.push(I),z.push(T);s&&z.push(t[2]);let R=A[2],D=z[0].dims[z[0].dims.length-1];R<8&&D<8?e.compute(an(z,n,i,A,o,r),{inputs:z}):e.compute(_t(z,n,i,A,o,r),{inputs:z});return}let b=!0,y=e.kernelCustomData.wT??e.compute(pe(t[1],er),{inputs:[1],outputs:[n.wIsConst?-2:-1]})[0];n.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=y);let g=[t[0],y];s&&g.push(t[2]);let _=o?p*f:m,w=o?m:p*f,v=l*c*d;e.compute(ds(g,n,i,_,w,v,s,b,r),{inputs:g})},yl=(e,t)=>{let n=t.format===\"NHWC\",r=[e.inputs[0].reshape(n?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&r.push(e.inputs[2]);let o=[0,t.pads[0],0,t.pads[1]],i=[1].concat(t.strides),s=[1].concat(t.dilations),a=[1].concat(t.kernelShape),u=tr({...t,pads:o,strides:i,dilations:s,kernelShape:a},r);_s(e,r,u,d=>n?[d[0],d[2],d[3]]:[d[0],d[1],d[3]])},bl=(e,t,n)=>{let r=n.format===\"NHWC\"?\"channelsLast\":\"channelsFirst\",o=tr(n,t),i=n.autoPad===\"NOTSET\"?n.pads:n.autoPad,s=ms(t[0].dims,t[1].dims,n.strides,n.dilations,i,!1,r);e.compute(fs(t,o,s.outShape,[s.filterDepth,s.filterHeight,s.filterWidth],[s.padInfo.front,s.padInfo.top,s.padInfo.left],r))},rr=(e,t)=>{if(gl(e.inputs,t),e.inputs[0].dims.length===3)yl(e,t);else if(e.inputs[0].dims.length===5)bl(e,e.inputs,t);else{let n=tr(t,e.inputs);_s(e,e.inputs,n)}}});var $s,vs=k(()=>{\"use strict\";L();ke();F();j();$s=(e,t,n)=>{let r=e.length>2,o=t.outputShape,i=t.format===\"NHWC\",s=t.group,a=e[1].dims,u=a[2]/s,d=a[3],l=i?J(u):1,c=i&&d===1&&u>=4,p=c?Math.floor(u/4)*4:Math.floor(u/l)*l,f=u-p,m=i?J(d):1,h=i?d===1?l:m:1,b=x.size(o)/m,y=[Math.ceil(b/64),1,1];Z(\"verbose\",()=>`[conv2d_backprop_webgpu] dispatch = ${y}`);let g=[\"rank\",\"rank\"],_=[t.strides[0],t.strides[1]],w=[t.kernelShape[i?1:2],t.kernelShape[i?2:3]],v=[t.dilations[0],t.dilations[1]],$=[w[0]+(t.dilations[0]<=1?0:(t.kernelShape[i?1:2]-1)*(t.dilations[0]-1)),w[1]+(t.dilations[1]<=1?0:(t.kernelShape[i?2:3]-1)*(t.dilations[1]-1))],T=[$[0]-1-Math.floor((t.pads[0]+t.pads[2])/2),$[1]-1-Math.floor((t.pads[1]+t.pads[3])/2)],I=[{type:12,data:b},{type:12,data:_},{type:12,data:w},{type:12,data:v},{type:12,data:$},{type:6,data:T},{type:12,data:p},{type:12,data:u},{type:12,data:d},...P(e[0].dims,e[1].dims)];r&&(I.push(...P(e[2].dims)),g.push(\"rank\")),I.push(...P(o));let A=z=>{let R=[{name:\"output_size\",type:\"u32\"},{name:\"strides\",type:\"u32\",length:_.length},{name:\"filter_dims\",type:\"u32\",length:w.length},{name:\"dilations\",type:\"u32\",length:w.length},{name:\"effective_filter_dims\",type:\"u32\",length:$.length},{name:\"pads\",type:\"i32\",length:T.length},{name:\"input_channels_per_group_int\",type:\"u32\"},{name:\"input_channels_per_group\",type:\"u32\"},{name:\"output_channels_per_group\",type:\"u32\"}],D=re(e[0].dataType),U=i?1:2,Q=i?2:3,O=i?3:1,M=S(\"W\",e[1].dataType,e[1].dims.length,h),V=S(\"Dy\",e[0].dataType,e[0].dims.length,l),W=[V,M];r&&W.push(S(\"bias\",e[2].dataType,[o[O]].length,m));let H=C(\"result\",e[0].dataType,o.length,m),X=()=>{let q=\"\";if(c)l===4?q+=`\n let xValue = ${V.getByOffset(\"x_offset\")};\n let wValue = ${M.getByOffset(\"w_offset\")};\n dotProd = dotProd + dot(xValue, wValue);\n x_offset += 1u;\n w_offset += 1u;`:l===2?q+=`\n dotProd = dotProd + dot(vec4<${D}>(${V.getByOffset(\"x_offset\")}, ${V.getByOffset(\"x_offset + 1u\")}), vec4<${D}>(${M.getByOffset(\"w_offset\")}, ${M.getByOffset(\"w_offset + 1u\")}));\n x_offset += 2u;\n w_offset += 2u;`:l===1&&(q+=`\n dotProd = dotProd + dot(vec4<${D}>(${V.getByOffset(\"x_offset\")}, ${V.getByOffset(\"x_offset + 1u\")}, ${V.getByOffset(\"x_offset + 2u\")}, ${V.getByOffset(\"x_offset + 3u\")}), vec4<${D}>(${M.getByOffset(\"w_offset\")}, ${M.getByOffset(\"w_offset + 1u\")}, ${M.getByOffset(\"w_offset + 2u\")}, ${M.getByOffset(\"w_offset + 3u\")}));\n x_offset += 4u;\n w_offset += 4u;`);else if(q+=`\n let xValue = ${i?V.getByOffset(`${V.indicesToOffset(`${V.type.indices}(batch, idyR, idyC, inputChannel)`)} / ${l}`):V.get(\"batch\",\"inputChannel\",\"idyR\",\"idyC\")};\n `,l===1)q+=`\n let w_offset = ${M.indicesToOffset(`${M.type.indices}(u32(wRPerm), u32(wCPerm), inputChannel, wOutChannel)`)};\n let wValue = ${M.getByOffset(`w_offset / ${h}`)};\n dotProd = dotProd + xValue * wValue;`;else for(let E=0;E<l;E++)q+=`\n let wValue${E} = ${M.getByOffset(`${M.indicesToOffset(`${M.type.indices}(u32(wRPerm), u32(wCPerm), inputChannel + ${E}, wOutChannel)`)} / ${h}`)};\n dotProd = dotProd + xValue[${E}] * wValue${E};`;return q},oe=()=>{if(f===0)return\"\";if(!c)throw new Error(`packInputAs4 ${c} is not true.`);let q=\"\";if(l===1){q+=\"dotProd = dotProd\";for(let E=0;E<f;E++)q+=`\n + ${V.getByOffset(`x_offset + ${E}`)} * ${M.getByOffset(`w_offset + ${E}`)}`;q+=\";\"}else if(l===2){if(f!==2)throw new Error(`Invalid inputChannelsRemainder ${f}.`);q+=`\n let xValue = ${V.getByOffset(\"x_offset\")};\n let wValue = ${M.getByOffset(\"w_offset\")};\n dotProd = dotProd + dot(xValue, wValue);`}return q},de=`\n let outputIndices = ${H.offsetToIndices(`global_idx * ${m}`)};\n let batch = ${H.indicesGet(\"outputIndices\",0)};\n let d1 = ${H.indicesGet(\"outputIndices\",O)};\n let r = ${H.indicesGet(\"outputIndices\",U)};\n let c = ${H.indicesGet(\"outputIndices\",Q)};\n let dyCorner = vec2<i32>(i32(r), i32(c)) - uniforms.pads;\n let dyRCorner = dyCorner.x;\n let dyCCorner = dyCorner.y;\n let groupId = d1 / uniforms.output_channels_per_group;\n let wOutChannel = d1 - groupId * uniforms.output_channels_per_group;\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n var dotProd = ${H.type.value}(0.0);\n var wR: u32 = 0;\n if (uniforms.dilations.x == 1) {\n // Minimum wR >= 0 that satisfies (dyRCorner + wR) % (uniforms.strides.x) == 0\n wR = u32(((dyRCorner + i32(uniforms.strides.x) - 1) / i32(uniforms.strides.x)) * i32(uniforms.strides.x) - dyRCorner);\n }\n for (; wR < uniforms.effective_filter_dims.x; wR = wR + 1) {\n if (wR % uniforms.dilations.x != 0) {\n continue;\n }\n let dyR = (${D}(dyRCorner) + ${D}(wR)) / ${D}(uniforms.strides[0]);\n let wRPerm = uniforms.filter_dims.x - 1 - wR / uniforms.dilations.x;\n if (dyR < 0.0 || dyR >= ${D}(uniforms.Dy_shape[${U}]) || fract(dyR) > 0.0 ||\n wRPerm < 0) {\n continue;\n }\n let idyR: u32 = u32(dyR);\n var wC: u32 = 0;\n if (uniforms.dilations.y == 1) {\n // Minimum wC >= 0 that satisfies (dyCCorner + wC) % (uniforms.strides.y) == 0\n wC = u32(((dyCCorner + i32(uniforms.strides.y) - 1) / i32(uniforms.strides.y)) * i32(uniforms.strides.y) - dyCCorner);\n }\n for (; wC < uniforms.effective_filter_dims.y; wC = wC + 1) {\n if (wC % uniforms.dilations.y != 0) {\n continue;\n }\n let dyC = (${D}(dyCCorner) + ${D}(wC)) / ${D}(uniforms.strides.y);\n let wCPerm = uniforms.filter_dims.y - 1 - wC / uniforms.dilations.y;\n if (dyC < 0.0 || dyC >= ${D}(uniforms.Dy_shape[${Q}]) ||\n fract(dyC) > 0.0 || wCPerm < 0) {\n continue;\n }\n let idyC: u32 = u32(dyC);\n var inputChannel = groupId * uniforms.input_channels_per_group;\n ${c?`\n var x_offset = ${V.indicesToOffset(`${V.type.indices}(batch, idyR, idyC, inputChannel)`)} / ${l};\n var w_offset = ${M.indicesToOffset(`${M.type.indices}(wRPerm, wCPerm, inputChannel, wOutChannel)`)} / ${h};\n `:\"\"}\n for (var d2: u32 = 0; d2 < uniforms.input_channels_per_group_int; d2 = d2 + ${c?4:l}) {\n ${X()}\n inputChannel = inputChannel + ${c?4:l};\n }\n ${oe()}\n wC = wC + uniforms.strides.y - 1;\n }\n wR = wR + uniforms.strides[0] - 1;\n }\n let value = dotProd${r?` + bias[d1 / ${m}]`:\"\"};\n ${H.setByOffset(\"global_idx\",\"value\")};\n `;return`\n ${z.registerUniforms(R).declareVariables(...W,H)}\n ${z.mainStart()}\n ${z.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")};\n ${de}}`};return{name:\"ConvTranspose2D\",shaderCache:{hint:`${t.cacheKey};${l}${h}${m}${c}${f}`,inputDependencies:g},getRunData:()=>({dispatchGroup:{x:y[0],y:y[1],z:y[2]},outputs:[{dims:n?n(o):o,dataType:e[0].dataType}],programUniforms:I}),getShaderSource:A}}});var _l,wl,$l,xs,Ss,vl,Ts,xl,Is,Cs=k(()=>{\"use strict\";vs();Fe();Ve();_l=(e,t,n,r,o,i)=>(e-1)*t+n+(r-1)*o+1-i,wl=(e,t,n,r,o)=>{let i=Math.floor(e/2);t===\"SAME_UPPER\"?(n[r]=i,n[o]=e-i):t===\"SAME_LOWER\"&&(n[r]=e-i,n[o]=i)},$l=(e,t,n,r,o,i,s,a,u,d)=>{let l=e.length-2,c=d.length===0;u.length<l&&u.push(...Array(l-u.length).fill(0));let p=e[0],f=t[a?3:1]*o;for(let m=0,h=e.length-l-(a?1:0);m<l;++m,++h){let b=e[h],y=c?b*s[m]:d[m],g=_l(b,s[m],i[m],t[h],n[m],y);wl(g,r,i,m,m+l),c&&d.push(s[m]*(b-1)+u[m]+(t[h]-1)*n[m]+1-i[m]-i[m+l])}d.splice(0,0,p),d.splice(a?3:1,0,f)},xs=(e,t)=>{let n=e.kernelShape.slice();if(e.kernelShape.length===0||e.kernelShape.reduce((c,p)=>c*p,1)===0){n.length=0;for(let c=2;c<t[1].dims.length;++c)n.push(t[1].dims[c])}let r=e.format===\"NHWC\";n.splice(0,0,t[1].dims[0]),n.splice(r?3:1,0,t[1].dims[1]);let o=e.pads.slice(),i=e.outputShape.slice(),s=e.outputPadding.slice(),a=t[0].dims,u=e.dilations.slice();if(u.reduce((c,p)=>c+p,0)===0){let c=t[0].dims.length-2;u=new Array(c).fill(1)}let d=e.strides.slice();if(d.reduce((c,p)=>c+p,0)===0){let c=t[0].dims.length-2;d=new Array(c).fill(1)}$l(a,n,u,e.autoPad,e.group,o,d,r,s,i);let l=Object.assign({},e);return Object.assign(l,{kernelShape:n,pads:o,outputPadding:s,outputShape:i,dilations:u,strides:d}),l},Ss=e=>{let t=on(e),n=e.format,r=[\"NOTSET\",\"VALID\",\"SAME_UPPER\",\"SAME_LOWER\"][typeof e.autoPad>\"u\"?0:e.autoPad],o=e.dilations,i=e.group??1,s=e.kernelShape,a=e.pads,u=e.strides,d=e.wIsConst(),l=e.outputPadding,c=e.outputShape;return{autoPad:r,format:n,dilations:o,group:i,kernelShape:s,outputPadding:l,outputShape:c,pads:a,strides:u,wIsConst:d,...t,cacheKey:`${e.format};${t.activation};`}},vl=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error(\"Conv requires 2 or 3 inputs\");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error(\"currently only support 2-dimensional conv\");if(e[0].dims.length!==e[1].dims.length)throw new Error(\"filter does not have same dimension as input\");let n=e[0].dims[t.format===\"NHWC\"?e[0].dims.length-1:1],r=e[1].dims[0];if(n!==r)throw new Error(\"FILTER_IN_CHANNEL should be equal to DATA_CHANNEL\");let o=e[1].dims[1]*t.group;if(e.length===3&&(e[2].dims.length!==1||e[2].dims[0]!==o))throw new Error(\"invalid bias\");let i=e[0].dims.length-2;if(t.dilations.reduce((l,c)=>l+c,0)>0&&t.dilations.length!==i)throw new Error(`dilations should be ${i}D`);if(t.strides.reduce((l,c)=>l+c,0)>0&&t.strides.length!==i)throw new Error(`strides should be ${i}D`);if(t.pads.reduce((l,c)=>l+c,0)>0&&t.pads.length!==i*2)throw new Error(`pads should be ${i*2}D`);if(t.outputPadding.length!==i&&t.outputPadding.length!==0)throw new Error(`output_padding should be ${i}D`);if(t.kernelShape.reduce((l,c)=>l+c,0)>0&&t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error(\"invalid kernel shape\");if(t.outputShape.length!==0&&t.outputShape.length!==e[0].dims.length-2)throw new Error(\"invalid output shape\")},Ts=(e,t,n,r)=>{let o=e.kernelCustomData.wT??e.compute(pe(t[1],[2,3,0,1]),{inputs:[1],outputs:[n.wIsConst?-2:-1]})[0];n.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=o);let i=[t[0],o];t.length===3&&i.push(t[2]),e.compute($s(i,n,r),{inputs:i})},xl=(e,t)=>{let n=t.format===\"NHWC\",r=[e.inputs[0].reshape(n?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&r.push(e.inputs[2]);let o=t.kernelShape;(o.length===0||o[0]===0)&&(o=[e.inputs[1].dims[2]]);let i=t.dilations;(i.length===0||i[0]===0)&&(i=[1]);let s=t.strides;(s.length===0||s[0]===0)&&(s=[1]);let a=t.pads;a.length===0&&(a=[0,0]),a=[0,a[0],0,a[1]],s=[1].concat(s),i=[1].concat(i),o=[1].concat(o);let u=t.outputPadding;u=[0].concat(u);let d=xs({...t,pads:a,strides:s,dilations:i,kernelShape:o,outputPadding:u},r);Ts(e,r,d,l=>n?[l[0],l[2],l[3]]:[l[0],l[1],l[3]])},Is=(e,t)=>{if(vl(e.inputs,t),e.inputs[0].dims.length===3)xl(e,t);else{let n=xs(t,e.inputs);Ts(e,e.inputs,n)}}});var Sl,As,Es,ks=k(()=>{\"use strict\";L();F();ie();j();Sl=(e,t,n,r)=>{let o=x.size(t),i=t.length,s=S(\"input\",e,i),a=C(\"output\",e,i),u=n.dataType===6?n.getInt32Array()[0]:Number(n.getBigInt64Array()[0]),d=x.normalizeAxis(u,i),l=c=>{let p=` i32(${s.indicesGet(\"inputIndices\",\"uniforms.axis\")}) `,f=B(\"uniforms.input_shape\",\"uniforms.axis\",i),m=r.reverse?p+(r.exclusive?\" + 1\":\"\"):\"0\",h=r.reverse?f:p+(r.exclusive?\"\":\" + 1\");return`\n ${c.registerUniform(\"outputSize\",\"u32\").registerUniform(\"axis\",\"u32\").declareVariables(s,a)}\n ${c.mainStart()}\n ${c.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n var inputIndices = ${a.offsetToIndices(\"global_idx\")};\n var sum = ${a.type.value}(0);\n let first : i32 = ${m};\n let last : i32 = ${h};\n for (var i : i32 = first; i < last; i++) {\n ${s.indicesSet(\"inputIndices\",\"uniforms.axis\",\"u32(i)\")};\n sum = sum + ${s.getByIndices(\"inputIndices\")};\n }\n ${a.setByOffset(\"global_idx\",\"sum\")};\n }`};return{name:\"CumSum\",shaderCache:{hint:r.cacheKey,inputDependencies:[\"rank\"]},getRunData:()=>({outputs:[{dims:t,dataType:e}],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:[{type:12,data:o},{type:12,data:d},...P(t,t)]}),getShaderSource:l}},As=(e,t)=>{let n=e.inputs[0].dims,r=e.inputs[0].dataType,o=e.inputs[1];e.compute(Sl(r,n,o,t),{inputs:[0]})},Es=e=>{let t=e.exclusive===1,n=e.reverse===1;return G({exclusive:t,reverse:n})}});var Tl,Il,Cl,Ps,zs,Bs=k(()=>{\"use strict\";L();F();ie();j();Tl=e=>{if(!e||e.length!==1)throw new Error(\"DepthToSpace requires 1 input.\");if(e[0].dims.length!==4)throw new Error(\"DepthToSpace requires 4D input.\")},Il=(e,t,n,r)=>{let o=[];o.push(`fn perm(i: ${r.type.indices}) -> ${n.type.indices} {\n var a: ${n.type.indices};`);for(let i=0;i<t;++i)o.push(n.indicesSet(\"a\",e[i],`i[${i}]`));return o.push(\"return a;}\"),o.join(`\n`)},Cl=(e,t)=>{let n,r,o,i,s,a,u=t.format===\"NHWC\",d=t.blocksize,l=t.mode===\"DCR\";u?([n,r,o,i]=e.dims,s=l?[n,r,o,d,d,i/d**2]:[n,r,o,i/d**2,d,d],a=l?[0,1,3,2,4,5]:[0,1,4,2,5,3]):([n,r,o,i]=[e.dims[0],e.dims[2],e.dims[3],e.dims[1]],s=l?[n,d,d,i/d**2,r,o]:[n,i/d**2,d,d,r,o],a=l?[0,3,4,1,5,2]:[0,1,4,2,5,3]);let c=e.reshape(s),p=c.dims.length,f=e.dataType,m=S(\"a\",f,p),h=C(\"output\",f,p),b=y=>`\n ${y.registerUniform(\"output_size\",\"u32\").declareVariables(m,h)}\n\n ${Il(a,p,m,h)}\n\n ${y.mainStart()}\n ${y.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n\n let indices = ${h.offsetToIndices(\"global_idx\")};\n let aIndices = perm(indices);\n\n ${h.setByOffset(\"global_idx\",m.getByIndices(\"aIndices\"))}\n }`;return{name:\"DepthToSpace\",shaderCache:{hint:`${e.dims};${t.blocksize};${t.mode}`,inputDependencies:[\"rank\"]},getRunData:y=>{let g=u?[n,r*d,o*d,i/d**2]:[n,i/d**2,r*d,o*d],_=x.size(g),w=c.dims,v=x.sortBasedOnPerm(w,a);return{outputs:[{dims:g,dataType:y[0].dataType}],dispatchGroup:{x:Math.ceil(_/64)},programUniforms:[{type:12,data:_},...P(w,v)]}},getShaderSource:b}},Ps=(e,t)=>{Tl(e.inputs),e.compute(Cl(e.inputs[0],t))},zs=e=>G({blocksize:e.blocksize,mode:e.mode,format:e.format})});var or,cn,Ds,Al,El,ir,sr,Os,kl,Ms,Us,Rs=k(()=>{\"use strict\";L();F();ie();j();or=\"[a-zA-Z]|\\\\.\\\\.\\\\.\",cn=\"(\"+or+\")+\",Ds=\"^\"+cn+\"$\",Al=\"(\"+cn+\",)*\"+cn,El=\"^\"+Al+\"$\",ir=class{constructor(t=-1){this.symbolToIndices=new Map,this.inputIndex=t}addSymbol(t,n){let r=this.symbolToIndices.get(t);r===void 0?r=[n]:r.push(n),this.symbolToIndices.set(t,r)}},sr=class{constructor(t,n){this.equation=n;this.hasEllipsis=!1,this.symbolToInfo=new Map,this.lhs=new Array,this.outputDims=[];let[r,o]=n.includes(\"->\")?n.split(\"->\",2):[n,\"\"];if(!r.match(RegExp(El)))throw new Error(\"Invalid LHS term\");if(r.split(\",\").forEach((a,u)=>{let d=t[u].dims.slice();if(!a.match(RegExp(Ds)))throw new Error(\"Invalid LHS term\");let l=this.processTerm(a,!0,d,u);this.lhs.push(l)}),o===\"\")o+=[...this.symbolToInfo.entries()].filter(([a,u])=>u.count===1||a===\"...\").map(([a])=>a).join(\"\");else if(!o.match(RegExp(cn)))throw new Error(\"Invalid RHS\");o.match(RegExp(or,\"g\"))?.forEach(a=>{if(a===\"...\")this.outputDims=this.outputDims.concat(this.ellipsisDims);else{let u=this.symbolToInfo.get(a);if(u===void 0)throw new Error(\"Invalid RHS symbol\");this.outputDims.push(u.dimValue)}}),this.rhs=this.processTerm(o,!1,this.outputDims)}addSymbol(t,n,r){let o=this.symbolToInfo.get(t);if(o!==void 0){if(o.dimValue!==n&&o.count!==1)throw new Error(\"Dimension mismatch\");o.count++,o.inputIndices.push(r)}else o={count:1,dimValue:n,inputIndices:[r]};this.symbolToInfo.set(t,o)}processTerm(t,n,r,o=-1){let i=r.length,s=!1,a=[],u=0;if(!t.match(RegExp(Ds))&&!n&&t!==\"\")throw new Error(\"Invalid LHS term\");let d=t.match(RegExp(or,\"g\")),l=new ir(o);return d?.forEach((c,p)=>{if(c===\"...\"){if(s)throw new Error(\"Only one ellipsis is allowed per input term\");s=!0;let f=i-d.length+1;if(f<0)throw new Error(\"Ellipsis out of bounds\");if(a=r.slice(u,u+f),this.hasEllipsis){if(this.ellipsisDims.length!==a.length||this.ellipsisDims.toString()!==a.toString())throw new Error(\"Ellipsis dimensions mismatch\")}else if(n)this.hasEllipsis=!0,this.ellipsisDims=a;else throw new Error(\"Ellipsis must be specified in the LHS\");for(let m=0;m<a.length;m++){let h=String.fromCharCode(48+m);l.addSymbol(h,p+m),this.addSymbol(h,r[u++],o)}}else l.addSymbol(c,p+(this.hasEllipsis?this.ellipsisDims.length-1:0)),this.addSymbol(c,r[u++],o)}),l}},Os=e=>e+\"_max\",kl=(e,t,n,r)=>{let i=e.map(l=>l.length).map((l,c)=>S(`input${c}`,t,l)),s=x.size(r),a=C(\"output\",t,r.length),u=[...n.symbolToInfo.keys()].filter(l=>!n.rhs.symbolToIndices.has(l)),d=l=>{let c=[],p=\"var prod = 1.0;\",f=\"var sum = 0.0;\",m=\"sum += prod;\",h=[],b=[],y=[],g=[],_=n.symbolToInfo.size===n.rhs.symbolToIndices.size;n.symbolToInfo.forEach((v,$)=>{if(n.rhs.symbolToIndices.has($)){let T=n.rhs.symbolToIndices.get($)?.[0];T!==void 0&&n.lhs.forEach((I,A)=>{if(v.inputIndices.includes(A)){let z=I.symbolToIndices.get($);if(z===void 0)throw new Error(\"Invalid symbol error\");z.forEach(R=>{c.push(`${i[A].indicesSet(`input${A}Indices`,R,a.indicesGet(\"outputIndices\",T))}`)})}})}else n.lhs.forEach((T,I)=>{if(v.inputIndices.includes(I)){let A=T.symbolToIndices.get($);if(A===void 0)throw new Error(\"Invalid symbol error\");A.forEach(z=>{h.push(`${i[I].indicesSet(`input${I}Indices`,z,`${$}`)}`)}),g.push(`prod *= ${i[I].getByIndices(`input${I}Indices`)};`)}}),b.push(`for(var ${$}: u32 = 0; ${$} < uniforms.${Os($)}; ${$}++) {`),y.push(\"}\")});let w=_?[...c,`let sum = ${i.map((v,$)=>v.getByIndices(`input${$}Indices`)).join(\" * \")};`]:[...c,f,...b,...h,p,...g,m,...y];return`\n ${l.registerUniforms(u.map(v=>({name:`${Os(v)}`,type:\"u32\"}))).registerUniform(\"outputSize\",\"u32\").declareVariables(...i,a)}\n\n ${l.mainStart()}\n ${l.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n var outputIndices = ${a.offsetToIndices(\"global_idx\")};\n ${i.map((v,$)=>`var input${$}Indices: ${i[$].type.indices};`).join(`\n`)}\n ${w.join(`\n`)};\n ${a.setByOffset(\"global_idx\",\"sum\")};\n }`};return{name:\"Einsum\",shaderCache:{hint:n.equation,inputDependencies:e.map(()=>\"rank\")},getRunData:()=>{let l=u.filter(p=>n.symbolToInfo.has(p)).map(p=>({type:12,data:n.symbolToInfo.get(p)?.dimValue||0}));l.push({type:12,data:s});let c=e.map((p,f)=>[...P(p)]).reduce((p,f)=>p.concat(f),l);return c.push(...P(r)),{outputs:[{dims:r,dataType:t}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:c}},getShaderSource:d}},Ms=(e,t)=>{let n=new sr(e.inputs,t.equation),r=n.outputDims,o=e.inputs.map((i,s)=>i.dims);e.compute(kl(o,e.inputs[0].dataType,n,r))},Us=e=>{let t=e.equation.replace(/\\s+/g,\"\");return G({equation:t})}});var Pl,Vs,zl,Bl,Ns,Ls=k(()=>{\"use strict\";L();F();j();Pl=e=>{if(!e||e.length!==2)throw new Error(\"Expand requires 2 input.\");let t=e[0].dims,n=Array.from(e[1].getBigInt64Array(),Number),r=n.length<t.length?0:n.length-t.length,o=t.length<n.length?0:t.length-n.length;for(;r<n.length&&o<t.length;++r,++o)if(n[r]!==t[o]&&n[r]!==1&&t[o]!==1)throw new Error(\"Expand requires shape to be broadcastable to input\")},Vs=(e,t)=>{let n=e.length-t.length,r=[];for(let o=0;o<n;++o)r.push(e[o]);for(let o=0;o<t.length;++o)r.push(t[o]===1?e[o+n]:t[o]);return r},zl=(e,t)=>e.length>t.length?Vs(e,t):Vs(t,e),Bl=e=>{let t=e[0].dims,n=Array.from(e[1].getBigInt64Array(),Number),r=zl(t,n),o=e[0].dataType,i=o===9||x.size(t)===1,s=o===9||t.length>0&&t[t.length-1]%4===0?4:1,a=i||r.length>0&&r[r.length-1]%4===0?4:1,u=Math.ceil(x.size(r)/a),d=c=>{let p=S(\"input\",o,t.length,s),f=C(\"output\",o,r.length,a),m;if(o===9){let h=(b,y,g=\"\")=>`\n let outputIndices${y} = ${f.offsetToIndices(`outputOffset + ${y}u`)};\n let offset${y} = ${p.broadcastedIndicesToOffset(`outputIndices${y}`,f)};\n let index${y} = offset${y} / 4u;\n let component${y} = offset${y} % 4u;\n ${b}[${y}] = ${g}(${p.getByOffset(`index${y}`)}[component${y}]);\n `;m=`\n let outputOffset = global_idx * ${a};\n var data = vec4<u32>(0);\n ${h(\"data\",0,\"u32\")}\n ${h(\"data\",1,\"u32\")}\n ${h(\"data\",2,\"u32\")}\n ${h(\"data\",3,\"u32\")}\n ${f.setByOffset(\"global_idx\",\"data\")}\n }`}else m=`\n let outputIndices = ${f.offsetToIndices(`global_idx * ${a}`)};\n let inputOffset = ${p.broadcastedIndicesToOffset(\"outputIndices\",f)};\n let data = ${f.type.value}(${p.getByOffset(`inputOffset / ${s}`)});\n ${f.setByOffset(\"global_idx\",\"data\")}\n }`;return`\n ${c.registerUniform(\"vec_size\",\"u32\").declareVariables(p,f)}\n ${c.mainStart()}\n ${c.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\n ${m}`},l=[{type:12,data:u},...P(t,r)];return{name:\"Expand\",shaderCache:{hint:`${r.length};${s}${a}`,inputDependencies:[\"rank\"]},getShaderSource:d,getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:l})}},Ns=e=>{Pl(e.inputs),e.compute(Bl(e.inputs),{inputs:[0]})}});var Dl,Gs,Ws=k(()=>{\"use strict\";L();F();j();rn();Dl=e=>{let t=e[0].dataType,n=x.size(e[0].dims),r=x.size(e[1].dims),o=r%4===0,i=s=>{let a=S(\"x\",t,[1],4),u=S(\"bias\",t,[1],4),d=C(\"y\",t,[1],4),l=[{name:\"output_vec_size\",type:\"u32\"},{name:\"bias_size\",type:\"u32\"}],c=f=>`\n let bias${f}_offset: u32 = (global_idx * 4 + ${f}) % uniforms.bias_size;\n let bias${f} = ${u.getByOffset(`bias${f}_offset / 4`)}[bias${f}_offset % 4];`,p=o?`\n let bias = ${u.getByOffset(\"global_idx % (uniforms.bias_size / 4)\")};`:`${c(0)}${c(1)}${c(2)}${c(3)}\n let bias = ${a.type.value}(bias0, bias1, bias2, bias3);`;return`${s.registerUniforms(l).declareVariables(a,u,d)}\n\n ${Qn(ce(t))}\n\n ${s.mainStart(Je)}\n ${s.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_vec_size\")}\n\n let x = ${a.getByOffset(\"global_idx\")};\n ${p}\n let x_in = x + bias;\n ${d.setByOffset(\"global_idx\",Xn(\"x_in\"))}\n }`};return{name:\"FastGeluWithBias\",shaderCache:{hint:`${o}`,inputDependencies:[\"type\",\"type\"]},getShaderSource:i,getRunData:s=>({outputs:[{dims:s[0].dims,dataType:s[0].dataType}],programUniforms:[{type:12,data:Math.ceil(n/4)},{type:12,data:r}],dispatchGroup:{x:Math.ceil(n/Je/4)}})}},Gs=e=>{e.inputs.length<2||x.size(e.inputs[1].dims)===0?Ri(e):e.compute(Dl(e.inputs))}});var Ol,Ml,Hs,qs,Fs=k(()=>{\"use strict\";L();F();ie();j();Ol=e=>{if(!e||e.length!==2)throw new Error(\"Gather requires 2 inputs.\")},Ml=(e,t)=>{let n=e[0].dims,r=e[1].dims,o=n.length,i=x.normalizeAxis(t.axis,o),s=n.slice(0);s.splice(i,1,...r);let a=n[i],u=e[0].dataType===9?4:1,d=Math.ceil(x.size(s)/u),l=[{type:12,data:d},{type:6,data:a},{type:12,data:i},...P(e[0].dims,e[1].dims,s)],c=p=>{let f=S(\"data\",e[0].dataType,e[0].dims.length,u),m=S(\"inputIndices\",e[1].dataType,e[1].dims.length),h=C(\"output\",e[0].dataType,s.length,u),b=g=>{let _=r.length,w=`var indicesIndices${g} = ${m.type.indices}(0);`;for(let v=0;v<_;v++)w+=`${_>1?`indicesIndices${g}[${v}]`:`indicesIndices${g}`} = ${s.length>1?`outputIndices${g}[uniforms.axis + ${v}]`:`outputIndices${g}`};`;w+=`\n var idx${g} = ${m.getByIndices(`indicesIndices${g}`)};\n if (idx${g} < 0) {\n idx${g} = idx${g} + uniforms.axisDimLimit;\n }\n var dataIndices${g} : ${f.type.indices};\n `;for(let v=0,$=0;v<o;v++)v===i?(w+=`${o>1?`dataIndices${g}[${v}]`:`dataIndices${g}`} = u32(idx${g});`,$+=_):(w+=`${o>1?`dataIndices${g}[${v}]`:`dataIndices${g}`} = ${s.length>1?`outputIndices${g}[${$}]`:`outputIndices${g}`};`,$++);return w},y;if(e[0].dataType===9){let g=(_,w,v=\"\")=>`\n let outputIndices${w} = ${h.offsetToIndices(`outputOffset + ${w}u`)};\n ${b(w)};\n let offset${w} = ${f.indicesToOffset(`dataIndices${w}`)};\n let index${w} = offset${w} / 4u;\n let component${w} = offset${w} % 4u;\n ${_}[${w}] = ${v}(${f.getByOffset(`index${w}`)}[component${w}]);\n `;y=`\n let outputOffset = global_idx * ${u};\n var value = vec4<u32>(0);\n ${g(\"value\",0,\"u32\")}\n ${g(\"value\",1,\"u32\")}\n ${g(\"value\",2,\"u32\")}\n ${g(\"value\",3,\"u32\")}\n ${h.setByOffset(\"global_idx\",\"value\")}\n `}else y=`\n let outputIndices = ${h.offsetToIndices(\"global_idx\")};\n ${b(\"\")};\n let value = ${f.getByIndices(\"dataIndices\")};\n ${h.setByOffset(\"global_idx\",\"value\")};\n `;return`\n ${p.registerUniform(\"outputSize\",\"u32\").registerUniform(\"axisDimLimit\",\"i32\").registerUniform(\"axis\",\"u32\").declareVariables(f,m,h)}\n ${p.mainStart()}\n ${p.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n ${y}\n }`};return{name:\"Gather\",shaderCache:{hint:t.cacheKey,inputDependencies:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:s,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(d/64)},programUniforms:l}),getShaderSource:c}},Hs=e=>G({axis:e.axis}),qs=(e,t)=>{let n=e.inputs;Ol(n),e.compute(Ml(e.inputs,t))}});var Ul,Ks,js,Zs=k(()=>{\"use strict\";L();F();j();Ul=(e,t,n,r,o,i,s,a,u)=>{let d=[{type:12,data:i},{type:12,data:r},{type:12,data:o},{type:12,data:n},{type:12,data:s},{type:12,data:a},{type:12,data:u}],l=[i];d.push(...P(t.dims,l));let c=p=>{let f=S(\"indices_data\",t.dataType,t.dims.length),m=C(\"input_slice_offsets_data\",12,1,1),h=[f,m],b=[{name:\"output_size\",type:\"u32\"},{name:\"batch_dims\",type:\"u32\"},{name:\"input_dims\",type:\"u32\",length:o.length},{name:\"sizes_from_slice_dims_data\",type:\"u32\",length:n.length},{name:\"num_slices_per_batch\",type:\"u32\"},{name:\"input_batch_stride\",type:\"u32\"},{name:\"num_slice_dims\",type:\"u32\"}];return`\n ${p.registerUniforms(b).declareVariables(...h)}\n ${p.mainStart()}\n ${p.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n let batch_idx = global_idx / uniforms.num_slices_per_batch;\n let base_offset = batch_idx * uniforms.input_batch_stride;\n\n let slice_indices_base_offset = global_idx * uniforms.num_slice_dims;\n var relative_slice_offset = 0;\n for (var dim_idx = 0u; dim_idx < uniforms.num_slice_dims; dim_idx ++) {\n var index = i32(indices_data[dim_idx + slice_indices_base_offset].x);\n let input_dim_idx = uniforms.batch_dims + dim_idx;\n if (index < 0) {\n ${o.length===1?\"index += i32(uniforms.input_dims);\":\"index += i32(uniforms.input_dims[input_dim_idx]);\"}\n }\n ${n.length===1?\"relative_slice_offset += index * i32(uniforms.sizes_from_slice_dims_data);\":\"relative_slice_offset += index * i32(uniforms.sizes_from_slice_dims_data[dim_idx]);\"}\n }\n\n input_slice_offsets_data[global_idx] = base_offset + u32(relative_slice_offset);\n }`};return e.compute({name:\"computeSliceOffsets\",shaderCache:{hint:`${o.length}_${n.length}`,inputDependencies:[\"rank\"]},getRunData:()=>({outputs:[{dims:l,dataType:e.inputs[1].dataType}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:d}),getShaderSource:c},{inputs:[t],outputs:[-1]})[0]},Ks=(e,t)=>{let n=e.inputs,r=n[0].dims,o=n[0].dataType,i=n[1].dims,s=i[i.length-1],a=x.sizeToDimension(i,i.length-1),u=x.sizeFromDimension(r,t.batchDims+s),d=x.sizeToDimension(r,t.batchDims),l=x.sizeFromDimension(r,t.batchDims),c=a/d,p=new Array(s),f=u;for(let w=0;w<s;++w)p[s-1-w]=f,f*=r[t.batchDims+s-1-w];let m=Ul(e,n[1],p,t.batchDims,r,a,c,l,s),h=t.batchDims+s;if(h>r.length)throw new Error(\"last dimension of indices must not be larger than rank of input tensor\");let b=i.slice(0,-1).concat(r.slice(h)),y=x.size(b),g=[{type:12,data:y},{type:12,data:u},...P(n[0].dims,m.dims,b)],_=w=>{let v=S(\"data\",n[0].dataType,n[0].dims.length),$=S(\"slice_offsets\",12,m.dims.length),T=C(\"output\",n[0].dataType,b.length);return`\n ${w.registerUniform(\"output_size\",\"u32\").registerUniform(\"slice_size\",\"u32\").declareVariables(v,$,T)}\n ${w.mainStart()}\n ${w.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n let slice_offset = slice_offsets[global_idx / uniforms.slice_size];\n output[global_idx] = data[u32(slice_offset) + global_idx % uniforms.slice_size];\n }`};e.compute({name:\"GatherND\",shaderCache:{hint:t.cacheKey,inputDependencies:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:b,dataType:o}],dispatchGroup:{x:Math.ceil(y/64)},programUniforms:g}),getShaderSource:_},{inputs:[n[0],m]})},js=e=>({batchDims:e.batch_dims,cacheKey:\"\"})});var Rl,Vl,Qs,Xs,Ys=k(()=>{\"use strict\";L();F();ie();j();Rl=(e,t)=>{if(e.length<3||e.length>4)throw new Error(\"GatherBlockQuantized requires 3 or 4 inputs.\");let n=x.normalizeAxis(t.quantizeAxis,e[0].dims.length),r=t.blockSize,o=e[0],i=e[2],s=e.length===4?e[3]:void 0;if(i.dims.length!==o.dims.length||!o.dims.map((a,u)=>u===n?Math.ceil(a/r)===i.dims[u]:a===i.dims[u]).reduce((a,u)=>a&&u,!0))throw new Error(\"Scales must have the same rank as the input tensor and the dims should match except on gatherAxis.\");if(s){if(s.dataType!==o.dataType)throw new Error(\"Zero point must have the same data type as the input tensor.\");if(s.dims.length!==i.dims.length||!s.dims.map((a,u)=>a===i.dims[u]).reduce((a,u)=>a&&u,!0))throw new Error(\"Zero point must have the same rank as the input tensor and the dims should match except on quantizeAxis.\")}},Vl=(e,t)=>{let n=e[0].dims,r=e[1].dims,o=n.length,i=x.normalizeAxis(t.gatherAxis,o),s=x.normalizeAxis(t.quantizeAxis,o),a=n.slice(0);a.splice(i,1,...r);let u=x.size(a),d=e[2].dataType,c=e[0].dataType===22,p=[{type:12,data:u},{type:12,data:s},{type:12,data:i},{type:12,data:t.blockSize},...P(...e.map((m,h)=>m.dims),a)],f=m=>{let h=S(\"data\",e[0].dataType,e[0].dims.length),b=S(\"inputIndices\",e[1].dataType,e[1].dims.length),y=S(\"scales\",e[2].dataType,e[2].dims.length),g=e.length>3?S(\"zeroPoint\",e[3].dataType,e[3].dims.length):void 0,_=C(\"output\",d,a.length),w=[h,b,y];g&&w.push(g);let v=[{name:\"output_size\",type:\"u32\"},{name:\"quantize_axis\",type:\"u32\"},{name:\"gather_axis\",type:\"u32\"},{name:\"block_size\",type:\"u32\"}];return`\n ${m.registerUniforms(v).declareVariables(...w,_)}\n ${m.mainStart()}\n let output_indices = ${_.offsetToIndices(\"global_idx\")};\n var indices_indices = ${b.type.indices}(0);\n ${r.length>1?`\n for (var i: u32 = 0; i < ${r.length}; i++) {\n let index = ${_.indicesGet(\"output_indices\",\"uniforms.gather_axis + i\")};\n ${b.indicesSet(\"indices_indices\",\"i\",\"index\")};\n }`:`indices_indices = ${_.indicesGet(\"output_indices\",\"uniforms.gather_axis\")};`};\n var data_indices = ${h.type.indices}(0);\n for (var i: u32 = 0; i < uniforms.gather_axis; i++) {\n let index = ${_.indicesGet(\"output_indices\",\"i\")};\n ${h.indicesSet(\"data_indices\",\"i\",\"index\")};\n }\n var index_from_indices = ${b.getByIndices(\"indices_indices\")};\n if (index_from_indices < 0) {\n index_from_indices += ${n[i]};\n }\n ${h.indicesSet(\"data_indices\",\"uniforms.gather_axis\",\"u32(index_from_indices)\")};\n for (var i = uniforms.gather_axis + 1; i < ${a.length}; i++) {\n let index = ${_.indicesGet(\"output_indices\",`i + ${r.length} - 1`)};\n ${h.indicesSet(\"data_indices\",\"i\",\"index\")};\n }\n let data_offset = ${h.indicesToOffset(\"data_indices\")};\n let data_index = data_offset % 8;\n // Convert 4-bit packed data to 8-bit packed data.\n let packed_4bit_quantized_data = ${h.getByOffset(\"data_offset / 8\")};\n let packed_8bit_quantized_data = (packed_4bit_quantized_data >> (4 * (data_index % 2))) & 0x0f0f0f0f;\n let quantized_data_vec = ${c?\"unpack4xI8\":\"unpack4xU8\"}(u32(packed_8bit_quantized_data));\n let quantized_data = quantized_data_vec[data_index / 2];\n var scale_indices = data_indices;\n let quantize_axis_index = ${y.indicesGet(\"data_indices\",\"uniforms.quantize_axis\")} / uniforms.block_size;\n ${y.indicesSet(\"scale_indices\",\"uniforms.quantize_axis\",\"quantize_axis_index\")};\n var scale = ${y.getByIndices(\"scale_indices\")};\n ${g?`\n let zero_point_indices = scale_indices;\n let zero_point_offset = ${g.indicesToOffset(\"zero_point_indices\")};\n let zero_point_index = zero_point_offset % 8;\n let packed_4bit_zero_points = ${g.getByOffset(\"zero_point_offset / 8\")};\n let packed_8bit_zero_points = (packed_4bit_zero_points >> (4 * (zero_point_index % 2))) & 0x0f0f0f0f;\n let zero_point_vec = ${c?\"unpack4xI8\":\"unpack4xU8\"}(u32(packed_8bit_zero_points));\n let zero_point = zero_point_vec[zero_point_index / 2];`:\"var zero_point = 0\"};\n let dequantized_data = ${ce(d)}(quantized_data - zero_point) * scale;\n ${_.setByOffset(\"global_idx\",\"dequantized_data\")};\n }`};return{name:\"GatherBlockQuantized\",shaderCache:{hint:`${t.cacheKey};${e.filter((m,h)=>h!==1).map(m=>m.dims.join(\"_\")).join(\";\")}`,inputDependencies:Array.from({length:e.length},(m,h)=>\"rank\")},getRunData:()=>({outputs:[{dims:a,dataType:d}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:p}),getShaderSource:f}},Qs=(e,t)=>{let n=e.inputs;Rl(n,t),e.compute(Vl(e.inputs,t))},Xs=e=>G({blockSize:e.blockSize,gatherAxis:e.gatherAxis,quantizeAxis:e.quantizeAxis})});var Nl,Ll,Js,ea,ta=k(()=>{\"use strict\";L();F();ie();j();Nl=e=>{if(!e||e.length!==2)throw new Error(\"GatherElements requires 2 inputs.\");if(e[0].dims.length<1)throw new Error(\"GatherElements requires that the data input be rank >= 1.\");if(e[0].dims.length!==e[1].dims.length)throw new Error(`GatherElements requires that the data input and\n indices input tensors be of same rank.`)},Ll=(e,t)=>{let n=e[0].dims,r=e[0].dataType,o=n.length,i=e[1].dims,s=e[1].dataType,a=x.normalizeAxis(t.axis,o),u=n[a],d=i.slice(0),l=x.size(d),c=S(\"input\",r,o),p=S(\"indicesInput\",s,i.length),f=C(\"output\",r,d.length),m=[{type:12,data:l},{type:6,data:u},{type:12,data:a}];return m.push(...P(n,i,d)),{name:\"GatherElements\",shaderCache:{inputDependencies:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:d,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:m}),getShaderSource:y=>`\n ${y.registerUniform(\"outputSize\",\"u32\").registerUniform(\"axisDimLimit\",\"i32\").registerUniform(\"axis\",\"u32\").declareVariables(c,p,f)}\n ${y.mainStart()}\n ${y.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n\n let outputIndices = ${f.offsetToIndices(\"global_idx\")};\n\n var idx = ${p.getByOffset(\"global_idx\")};\n if (idx < 0) {\n idx = idx + uniforms.axisDimLimit;\n }\n var inputIndices = ${c.type.indices}(outputIndices);\n ${c.indicesSet(\"inputIndices\",\"uniforms.axis\",\"u32(idx)\")};\n let value = ${c.getByIndices(\"inputIndices\")};\n\n ${f.setByOffset(\"global_idx\",\"value\")};\n }`}},Js=e=>G({axis:e.axis}),ea=(e,t)=>{let n=e.inputs;Nl(n),e.compute(Ll(e.inputs,t))}});var Gl,Wl,na,ra,oa=k(()=>{\"use strict\";L();F();j();Gl=e=>{if(!e)throw new Error(\"Input is missing\");if(e.length<2||e.length>3)throw new Error(\"Invaid input number.\");if(e.length===3&&e[2].dims.length>2)throw new Error(\"Invalid input shape of C\");if(e[0].dataType!==e[1].dataType||e.length===3&&e[0].dataType!==e[2].dataType)throw new Error(\"Input types are mismatched\")},Wl=(e,t)=>{let n=e[0].dims.slice(),r=e[1].dims.slice(),[o,i,s]=Ht.getShapeOfGemmResult(n,t.transA,r,t.transB,e.length===3?e[2].dims:void 0),a=[o,i];if(!a)throw new Error(\"Can't use gemm on the given tensors\");let u=16,d=Math.ceil(i/u),l=Math.ceil(o/u),c=!0,p=x.size(a),f=[{type:12,data:c?d:p},{type:12,data:o},{type:12,data:i},{type:12,data:s},{type:1,data:t.alpha},{type:1,data:t.beta}],m=[\"type\",\"type\"];e.length===3&&(f.push(...P(e[2].dims)),m.push(\"rank\")),f.push(...P(a));let h=y=>{let g=\"\";t.transA&&t.transB?g=\"value += a[k * uniforms.M + m] * b[n * uniforms.K + k];\":t.transA&&!t.transB?g=\"value += a[k * uniforms.M + m] * b[k * uniforms.N + n];\":!t.transA&&t.transB?g=\"value += a[m * uniforms.K + k] * b[n * uniforms.K + k];\":!t.transA&&!t.transB&&(g=\"value += a[m * uniforms.K + k] * b[k * uniforms.N + n];\");let _=t.alpha===1?\"\":\"value *= uniforms.alpha;\",w=S(\"a\",e[0].dataType,e[0].dims),v=S(\"b\",e[1].dataType,e[1].dims),$=w.type.value,T=null,I=[w,v];e.length===3&&(T=S(\"c\",e[2].dataType,e[2].dims.length),I.push(T));let A=C(\"output\",e[0].dataType,a.length);I.push(A);let z=[{name:\"output_size\",type:\"u32\"},{name:\"M\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"alpha\",type:\"f32\"},{name:\"beta\",type:\"f32\"}];return`\n ${y.registerUniforms(z).declareVariables(...I)}\n\n ${y.mainStart()}\n ${y.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n\n let m = global_idx / uniforms.N;\n let n = global_idx % uniforms.N;\n\n var value = ${$}(0);\n for (var k: u32 = 0u; k < uniforms.K; k++) {\n ${g}\n }\n\n ${_}\n ${T!=null?`let cOffset = ${T.broadcastedIndicesToOffset(\"vec2(m, n)\",A)}; value += ${$}(uniforms.beta) * ${T.getByOffset(\"cOffset\")};`:\"\"}\n output[global_idx] = value;\n }`},b=y=>{let g=S(\"a\",e[0].dataType,e[0].dims),_=S(\"b\",e[1].dataType,e[1].dims),w=null,v=[g,_];e.length===3&&(w=S(\"c\",e[2].dataType,e[2].dims.length),v.push(w));let $=C(\"output\",e[0].dataType,a.length);v.push($);let T=[{name:\"num_tile_n\",type:\"u32\"},{name:\"M\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"alpha\",type:\"f32\"},{name:\"beta\",type:\"f32\"}],I=\"\",A=\"\";t.transA&&t.transB?(A=`\n var col = tile_row_start + local_id.x;\n var row = k_start + local_id.y;\n if (col < uniforms.M && row < uniforms.K) {\n tile_a[local_id.y][local_id.x] = a[row * uniforms.M + col];\n } else {\n tile_a[local_id.y][local_id.x] = ${g.type.value}(0);\n }\n\n col = k_start + local_id.x;\n row = tile_col_start + local_id.y;\n if (col < uniforms.K && row < uniforms.N) {\n tile_b[local_id.y][local_id.x] = b[row * uniforms.K + col];\n } else {\n tile_b[local_id.y][local_id.x] = ${_.type.value}(0);\n }\n `,I=\"value += tile_a[k][local_id.y] * tile_b[local_id.x][k];\"):t.transA&&!t.transB?(A=`\n var col = tile_row_start + local_id.x;\n var row = k_start + local_id.y;\n if (col < uniforms.M && row < uniforms.K) {\n tile_a[local_id.y][local_id.x] = a[row * uniforms.M + col];\n } else {\n tile_a[local_id.y][local_id.x] = ${g.type.value}(0);\n }\n\n col = tile_col_start + local_id.x;\n row = k_start + local_id.y;\n if (col < uniforms.N && row < uniforms.K) {\n tile_b[local_id.y][local_id.x] = b[row * uniforms.N + col];\n } else {\n tile_b[local_id.y][local_id.x] = ${_.type.value}(0);\n }\n `,I=\"value += tile_a[k][local_id.y] * tile_b[k][local_id.x];\"):!t.transA&&t.transB?(A=`\n var col = k_start + local_id.x;\n var row = tile_row_start + local_id.y;\n if (col < uniforms.K && row < uniforms.M) {\n tile_a[local_id.y][local_id.x] = a[row * uniforms.K + col];\n } else {\n tile_a[local_id.y][local_id.x] = ${g.type.value}(0);\n }\n\n col = k_start + local_id.x;\n row = tile_col_start + local_id.y;\n if (col < uniforms.K && row < uniforms.N) {\n tile_b[local_id.y][local_id.x] = b[row * uniforms.K + col];\n } else {\n tile_b[local_id.y][local_id.x] = ${_.type.value}(0);\n }\n `,I=\"value += tile_a[local_id.y][k] * tile_b[local_id.x][k];\"):!t.transA&&!t.transB&&(A=`\n var col = k_start + local_id.x;\n var row = tile_row_start + local_id.y;\n if (col < uniforms.K && row < uniforms.M) {\n tile_a[local_id.y][local_id.x] = a[row * uniforms.K + col];\n } else {\n tile_a[local_id.y][local_id.x] = ${g.type.value}(0);\n }\n\n col = tile_col_start + local_id.x;\n row = k_start + local_id.y;\n if (col < uniforms.N && row < uniforms.K) {\n tile_b[local_id.y][local_id.x] = b[row * uniforms.N + col];\n } else {\n tile_b[local_id.y][local_id.x] = ${_.type.value}(0);\n }\n `,I=\"value += tile_a[local_id.y][k] * tile_b[k][local_id.x];\");let z=t.alpha===1?\"\":\"value *= uniforms.alpha;\";return`\n ${y.registerUniforms(T).declareVariables(...v)}\n var<workgroup> tile_a: array<array<${g.type.storage}, ${u}>, ${u}>;\n var<workgroup> tile_b: array<array<${_.type.storage}, ${u}>, ${u}>;\n ${y.mainStart([u,u,1])}\n let tile_col_start = (workgroup_index % uniforms.num_tile_n) * ${u};\n let tile_row_start = (workgroup_index / uniforms.num_tile_n) * ${u};\n let num_tiles = (uniforms.K - 1) / ${u} + 1;\n var k_start = 0u;\n var value = ${$.type.value}(0);\n for (var t: u32 = 0u; t < num_tiles; t++) {\n ${A}\n k_start = k_start + ${u};\n workgroupBarrier();\n\n for (var k: u32 = 0u; k < ${u}; k++) {\n ${I}\n }\n workgroupBarrier();\n }\n\n ${z}\n let m = tile_row_start + local_id.y;\n let n = tile_col_start + local_id.x;\n ${w!=null?`let cOffset = ${w.broadcastedIndicesToOffset(\"vec2(m, n)\",$)}; value += ${$.type.value}(uniforms.beta) * ${w.getByOffset(\"cOffset\")};`:\"\"}\n if (m < uniforms.M && n < uniforms.N) {\n output[m * uniforms.N + n] = value;\n }\n }`};return c?{name:\"GemmShared\",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:a,dataType:e[0].dataType}],dispatchGroup:{x:d*l},programUniforms:f}),getShaderSource:b}:{name:\"Gemm\",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:a,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:f}),getShaderSource:h}},na=e=>{let t=e.transA,n=e.transB,r=e.alpha,o=e.beta;return{transA:t,transB:n,alpha:r,beta:o,cacheKey:`${e.transA};${e.transB};${e.alpha===1}`}},ra=(e,t)=>{Gl(e.inputs),e.compute(Wl(e.inputs,t))}});var Ne,Ke,st,at,Hl,ql,Fl,Kl,jl,Zl,Ql,Xl,ia,sa,aa=k(()=>{\"use strict\";L();F();ie();j();[Ne,Ke,st,at]=[0,1,2,3],Hl=e=>{if(e[0].dims.length!==4)throw new Error(\"only 4-D tensor is supported.\");if(e[0].dims.length!==e[1].dims.length)throw new Error(\"input dimensions must be equal to grid dimensions\");if(e[0].dims.length-2!==e[1].dims[e[1].dims.length-1])throw new Error(`last dimension of grid must be equal to ${e[0].dims.length-2}`);if(e[0].dims[0]!==e[1].dims[0])throw new Error(\"grid batch size must match input batch size\")},ql=`\n fn gs_get_cubic_coeffs(x: f32) -> vec4<f32> {\n let cubic_alpha = -0.75f;\n let x_abs = abs(x);\n var coeffs: vec4<f32>;\n coeffs[0] = (((cubic_alpha * (x_abs + 1) - 5 * cubic_alpha) * (x_abs + 1) + 8 * cubic_alpha) * (x_abs + 1) - 4 * cubic_alpha);\n coeffs[1] = (((cubic_alpha + 2) * x_abs - (cubic_alpha + 3)) * x_abs * x_abs + 1);\n coeffs[2] = (((cubic_alpha + 2) * (1 - x_abs) - (cubic_alpha + 3)) * (1 - x_abs) * (1 - x_abs) + 1);\n coeffs[3] = (((cubic_alpha * (2 - x_abs) - 5 * cubic_alpha) * (2 - x_abs) + 8 * cubic_alpha) * (2 - x_abs) - 4 * cubic_alpha);\n return coeffs;\n }\n`,Fl=e=>`\n fn gs_bicubic_interpolate(p: mat4x4<${e}>, x: f32, y: f32) -> ${e} {\n var v: vec4<f32>;\n var coeffs = gs_get_cubic_coeffs(x);\n for (var i = 0; i < 4; i++) {\n v[i] = coeffs[0] * p[i][0] + coeffs[1] * p[i][1] + coeffs[2] * p[i][2] + coeffs[3] * p[i][3];\n }\n coeffs = gs_get_cubic_coeffs(y);\n let pixel = ${e}(coeffs[0] * v[0] + coeffs[1] * v[1] + coeffs[2] * v[2] + coeffs[3] * v[3]);\n return pixel;\n }\n`,Kl=e=>`\n fn gs_denormalize(n: f32, length: i32) -> f32 {\n ${e.alignCorners===0?`\n // alignCorners: false => [-1, 1] to [-0.5, length - 0.5]\n return ((n + 1.0) * f32(length) - 1.0) / 2.0;\n `:`\n // alignCorners: true => [-1, 1] to [0, length - 1]\n return (n + 1.0) / 2.0 * (f32(length - 1));\n `}\n }\n`,jl=e=>`\n ${e.paddingMode===\"reflection\"?`\n fn gs_reflect(x: i32, x_min: f32, x_max: f32) -> u32 {\n var dx = 0.0;\n var fx = f32(x);\n let range = x_max - x_min;\n if (fx < x_min) {\n dx = x_min - fx;\n let n = u32(dx / range);\n let r = dx - f32(n) * range;\n if (n % 2 == 0) {\n fx = x_min + r;\n } else {\n fx = x_max - r;\n }\n } else if (fx > x_max) {\n dx = fx - x_max;\n let n = u32(dx / range);\n let r = dx - f32(n) * range;\n if (n % 2 == 0) {\n fx = x_max - r;\n } else {\n fx = x_min + r;\n }\n }\n return u32(fx);\n }`:\"\"}\n`,Zl=(e,t,n)=>`\n fn pixel_at_grid(r: i32, c: i32, H: i32, W: i32, batch: u32, channel: u32, border: vec4<f32>) -> ${t} {\n var pixel = ${t}(0);\n var indices = vec4<u32>(0);\n indices[${Ne}] = batch;\n indices[${Ke}] = channel;`+(()=>{switch(n.paddingMode){case\"zeros\":return`\n if (r >= 0 && r < H && c >=0 && c < W) {\n indices[${st}] = u32(r);\n indices[${at}] = u32(c);\n } else {\n return ${t}(0);\n }\n `;case\"border\":return`\n indices[${st}] = u32(clamp(r, 0, H - 1));\n indices[${at}] = u32(clamp(c, 0, W - 1));\n `;case\"reflection\":return`\n indices[${st}] = gs_reflect(r, border[1], border[3]);\n indices[${at}] = gs_reflect(c, border[0], border[2]);\n `;default:throw new Error(`padding mode ${n.paddingMode} is not supported`)}})()+`\n return ${e.getByIndices(\"indices\")};\n }\n`,Ql=(e,t,n)=>(()=>{switch(n.mode){case\"nearest\":return`\n let result = pixel_at_grid(i32(round(y)), i32(round(x)), H_in, W_in, indices[${Ne}], indices[${Ke}], border);\n `;case\"bilinear\":return`\n let x1 = i32(floor(x));\n let y1 = i32(floor(y));\n let x2 = x1 + 1;\n let y2 = y1 + 1;\n\n let p11 = pixel_at_grid(y1, x1, H_in, W_in, indices[${Ne}], indices[${Ke}], border);\n let p12 = pixel_at_grid(y1, x2, H_in, W_in, indices[${Ne}], indices[${Ke}], border);\n let p21 = pixel_at_grid(y2, x1, H_in, W_in, indices[${Ne}], indices[${Ke}], border);\n let p22 = pixel_at_grid(y2, x2, H_in, W_in, indices[${Ne}], indices[${Ke}], border);\n\n let dx2 = ${t}(f32(x2) - x);\n let dx1 = ${t}(x - f32(x1));\n let dy2 = ${t}(f32(y2) - y);\n let dy1 = ${t}(y - f32(y1));\n let result = dy2 * (dx2 * p11 + dx1 * p12) + dy1 * (dx2 * p21 + dx1 * p22);\n `;case\"bicubic\":return`\n let x0 = i32(floor(x)) - 1;\n let y0 = i32(floor(y)) - 1;\n var p: mat4x4<${t}>;\n for (var h = 0; h < 4; h++) {\n for (var w = 0; w < 4; w++) {\n p[h][w] = pixel_at_grid(h + y0, w + x0, H_in, W_in, indices[${Ne}], indices[${Ke}], border);\n }\n }\n\n let dx = x - f32(x0 + 1);\n let dy = y - f32(y0 + 1);\n let result = gs_bicubic_interpolate(p, dx, dy);\n `;default:throw new Error(`mode ${n.mode} is not supported`)}})()+`${e.setByOffset(\"global_idx\",\"result\")}`,Xl=(e,t)=>{let n=S(\"x\",e[0].dataType,e[0].dims.length),r=[e[1].dims[0],e[1].dims[1],e[1].dims[2]],o=S(\"grid\",e[1].dataType,r.length,2),i=[e[0].dims[0],e[0].dims[1],e[1].dims[1],e[1].dims[2]];t.format===\"NHWC\"&&(i=[e[0].dims[0],e[1].dims[1],e[1].dims[2],e[0].dims[3]],[Ne,Ke,st,at]=[0,3,1,2]);let s=C(\"output\",e[0].dataType,i.length),a=n.type.value,u=x.size(i),d=[{type:12,data:u},...P(e[0].dims,r,i)],l=c=>`\n ${c.registerUniform(\"output_size\",\"u32\").declareVariables(n,o,s)}\n ${ql}\n ${Fl(a)}\n ${Kl(t)}\n ${jl(t)}\n ${Zl(n,a,t)}\n\n ${c.mainStart()}\n ${c.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n let H_in = i32(uniforms.x_shape[${st}]);\n let W_in = i32(uniforms.x_shape[${at}]);\n\n ${t.alignCorners===0?`\n let x_min = -0.5;\n let x_max = f32(W_in) - 0.5;\n let y_min = -0.5;\n let y_max = f32(H_in) - 0.5;\n `:`\n let x_min = 0.0;\n let x_max = f32(W_in) - 1.0;\n let y_min = 0.0;\n let y_max = f32(H_in) - 1.0;\n `};\n let border = vec4<f32>(x_min, y_min, x_max, y_max);\n\n let indices = ${s.offsetToIndices(\"global_idx\")};\n var grid_indices = vec3<u32>(indices[${Ne}], indices[${st}], indices[${at}]);\n let nxy = ${o.getByIndices(\"grid_indices\")};\n var x = gs_denormalize(f32(nxy[0]), W_in);\n var y = gs_denormalize(f32(nxy[1]), H_in);\n\n ${Ql(s,a,t)}\n }`;return{name:\"GridSample\",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:[\"type\",\"type\"]},getRunData:c=>{let p=x.size(i);return{outputs:[{dims:i,dataType:c[0].dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:d}},getShaderSource:l}},ia=(e,t)=>{Hl(e.inputs),e.compute(Xl(e.inputs,t))},sa=e=>G({alignCorners:e.align_corners,mode:e.mode,paddingMode:e.padding_mode,format:e.format})});var be,ec,da,ua,tc,wt,la,ar=k(()=>{\"use strict\";L();F();ie();Qt();tn();j();Ve();be=(e,t)=>e.length>t&&e[t].dims.length>0?e[t]:void 0,ec=(e,t)=>{let n=e[0],r=be(e,1),o=be(e,2),i=be(e,3),s=be(e,4),a=be(e,5),u=be(e,6),d=be(e,7);if(n.dims.length!==3&&n.dims.length!==5)throw new Error(\"Input query is expected to have 3 or 5 dimensions\");let l=n.dims[0],c=n.dims[1],p=n.dims.length===3?n.dims[2]:t.numHeads*n.dims[4],f=c,m=0,h=0,b=Math.floor(p/t.numHeads);if(u&&d&&x.size(u.dims)&&x.size(d.dims)){if(u.dims.length!==4)throw new Error('Input \"past_key\" is expected to have 4 dimensions');if(u.dims[0]!==l||u.dims[1]!==t.numHeads||u.dims[3]!==b)throw new Error('Input \"past_key\" shape (batch_size, num_heads, past_sequence_length, head_size)');if(d.dims[0]!==l||d.dims[1]!==t.numHeads||d.dims[3]!==b)throw new Error('Input \"past_value\" shape (batch_size, num_heads, past_sequence_length, head_size)');if(u.dims[2]!==d.dims[2])throw new Error('Input \"past_key\" and \"past_value\" shall have same dim 2 (past_sequence_length)');if(d.dims.length!==4)throw new Error('Input \"past_value\" is expected to have 4 dimensions');m=u.dims[2],h=u.dims[2]}else if(u&&x.size(u.dims)||d&&x.size(d.dims))throw new Error('Input \"past_key\" and \"past_value\" shall be both present or both absent');let y;if(r&&x.size(r.dims)>0){if(n.dims.length!==3)throw new Error('Input \"query\" is expected to have 3 dimensions when key is given');if(r.dims.length<3||r.dims.length>5)throw new Error('Input \"key\" is expected to have 3, 4, or 5 dimensions');if(n.dims[0]!==r.dims[0])throw new Error('Input \"query\" and \"key\" shall have same dim 0 (batch size)');if(r.dims.length===3){if(r.dims[2]!==n.dims[2])throw new Error('Input \"query\" and \"key\" shall have same dim 2 (hidden_size)');y=2,f=r.dims[1]}else if(r.dims.length===5){if(r.dims[2]!==t.numHeads||r.dims[3]!==2||r.dims[4]!==b)throw new Error('Expect \"key\" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(o)throw new Error('Expect \"value\" be none when \"key\" has packed kv format.');y=5,f=r.dims[1]}else{if(r.dims[1]!==t.numHeads||r.dims[3]!==b)throw new Error('Expect \"key\" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');y=0,f=r.dims[2]}}else{if(n.dims.length!==5)throw new Error('Input \"query\" is expected to have 5 dimensions when key is empty');if(n.dims[2]!==t.numHeads||n.dims[3]!==3)throw new Error('Expect \"query\" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');y=3}if(i&&x.size(i.dims)>0){if(i.dims.length!==1)throw new Error('Input \"bias\" is expected to have 1 dimension');if(r&&r.dims.length===5&&r.dims[3]===2)throw new Error(\"bias is not allowed for packed kv.\")}let g=m+f,_=0;if(s&&x.size(s.dims)>0){_=8;let T=s.dims;throw T.length===1?T[0]===l?_=1:T[0]===3*l+2&&(_=3):T.length===2&&T[0]===l&&T[1]===g&&(_=5),_===8?new Error('Input \"key_padding_mask\" shape shall be (batch_size) or (batch_size, total_sequence_length)'):new Error(\"Mask not supported\")}let w=!1,v=p;if(o&&x.size(o.dims)>0){if(o.dims.length!==3&&o.dims.length!==4)throw new Error('Input \"value\" is expected to have 3 or 4 dimensions');if(n.dims[0]!==o.dims[0])throw new Error('Input \"query\" and \"value\" shall have same dim 0 (batch_size)');if(o.dims.length===3){if(f!==o.dims[1])throw new Error('Input \"key\" and \"value\" shall have the same dim 1 (kv_sequence_length)');v=o.dims[2]}else{if(f!==o.dims[2])throw new Error('Input \"key\" and \"value\" shall have the same dim 2 (kv_sequence_length)');v=o.dims[1]*o.dims[3],w=!0}}let $=!1;if(s&&x.size(s.dims)>0)throw new Error(\"Key padding mask is not supported\");if(a&&x.size(a.dims)>0){if(a.dims.length!==4)throw new Error('Input \"attention_bias\" is expected to have 4 dimensions');if(a.dims[0]!==l||a.dims[1]!==t.numHeads||a.dims[2]!==c||a.dims[3]!==g)throw new Error('Expect \"attention_bias\" shape (batch_size, num_heads, sequence_length, total_sequence_length)')}return{batchSize:l,sequenceLength:c,pastSequenceLength:m,kvSequenceLength:f,totalSequenceLength:g,maxSequenceLength:h,inputHiddenSize:0,hiddenSize:p,vHiddenSize:v,headSize:b,vHeadSize:Math.floor(v/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:_,scale:t.scale,broadcastResPosBias:$,passPastInKv:w,qkvFormat:y}},da=e=>G({...e}),ua=G({perm:[0,2,1,3]}),tc=(e,t,n,r,o,i,s)=>{let a=[r,o,i],u=x.size(a),d=[{type:12,data:u},{type:12,data:s},{type:12,data:i}],l=c=>{let p=C(\"qkv_with_bias\",t.dataType,a),f=S(\"qkv\",t.dataType,a),m=S(\"bias\",n.dataType,a),h=[{name:\"output_size\",type:\"u32\"},{name:\"bias_offset\",type:\"u32\"},{name:\"hidden_size\",type:\"u32\"}];return`\n ${c.registerUniforms(h).declareVariables(f,m,p)}\n ${c.mainStart()}\n ${c.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n let bias_offset_idx = (global_idx % uniforms.hidden_size) + uniforms.bias_offset;\n\n qkv_with_bias[global_idx] = qkv[global_idx] + bias[bias_offset_idx];\n }`};return e.compute({name:\"MultiHeadAttentionAddBias\",shaderCache:{inputDependencies:[\"type\",\"type\"]},getRunData:()=>({outputs:[{dims:a,dataType:t.dataType,gpuDataType:0}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:d}),getShaderSource:l},{inputs:[t,n],outputs:[-1]})[0]},wt=(e,t,n,r,o,i,s,a)=>{let u=i;if(s&&x.size(s.dims)>0){if(r===1)throw new Error(\"AddBiasReshape is not implemented. Please export your model with packed QKV or KV\");return u=tc(e,i,s,t,r,n*o,a),u=u.reshape([t,r,n,o]),n===1||r===1?u:e.compute(pe(u,ua.perm),{inputs:[u],outputs:[-1]})[0]}else return i.dims.length===3&&(u=i.reshape([t,r,n,o])),n===1||r===1?u:e.compute(pe(u,ua.perm),{inputs:[u],outputs:[-1]})[0]},la=(e,t)=>{let n=ec(e.inputs,t),r=e.inputs[0],o=be(e.inputs,1),i=be(e.inputs,2),s=be(e.inputs,3),a=be(e.inputs,4),u=be(e.inputs,5),d=be(e.inputs,6),l=be(e.inputs,7);if(r.dims.length===5)throw new Error(\"Packed QKV is not implemented\");if(o?.dims.length===5)throw new Error(\"Packed KV is not implemented\");let c=o&&i&&o.dims.length===4&&i.dims.length===4,p=wt(e,n.batchSize,n.numHeads,n.sequenceLength,n.headSize,r,s,0);if(c)return it(e,p,o,i,a,void 0,d,l,u,n);if(!o||!i)throw new Error(\"key and value must be provided\");let f=wt(e,n.batchSize,n.numHeads,n.kvSequenceLength,n.headSize,o,s,n.hiddenSize),m=wt(e,n.batchSize,n.numHeads,n.kvSequenceLength,n.vHeadSize,i,s,2*n.hiddenSize);it(e,p,f,m,a,void 0,d,l,u,n)}});var nc,rc,oc,ic,ur,ca,pa,dr=k(()=>{\"use strict\";L();F();ie();j();nc=e=>{if(!e||e.length<1)throw new Error(\"too few inputs\")},rc=(e,t)=>{let n=[],r=t.numOutputs;return e[1].dims[0]>0&&(e[1].getBigInt64Array().forEach(o=>n.push(Number(o))),r=n.length),G({numOutputs:r,axis:t.axis,splitSizes:n})},oc=e=>`\nfn calculateOutputIndex(index: u32) -> u32 {\n for (var i: u32 = 0u; i < ${e}u; i += 1u ) {\n if (index < ${B(\"uniforms.size_in_split_axis\",\"i\",e)}) {\n return i;\n }\n }\n return ${e}u;\n}`,ic=e=>{let t=e.length,n=[];for(let r=0;r<t;++r){let o=e[r].setByIndices(\"indices\",\"input[global_idx]\");t===1?n.push(o):r===0?n.push(`if (output_number == ${r}u) { ${o} }`):r===t-1?n.push(`else { ${o} }`):n.push(`else if (output_number == ${r}) { ${o} }`)}return`\n fn writeBufferData(output_number: u32, indices: ${e[0].type.indices}, global_idx: u32) {\n ${n.join(`\n`)}\n }`},ur=(e,t)=>{let n=e[0].dims,r=x.size(n),o=e[0].dataType,i=x.normalizeAxis(t.axis,n.length),s=new Array(t.numOutputs),a=S(\"input\",o,n.length),u=new Array(t.numOutputs),d=[],l=[],c=0,p=[{type:12,data:r}];for(let m=0;m<t.numOutputs;m++){c+=t.splitSizes[m],u[m]=c;let h=n.slice();h[i]=t.splitSizes[m],l.push(h),s[m]=C(`output${m}`,o,h.length),d.push({dims:l[m],dataType:e[0].dataType})}p.push({type:12,data:u},...P(n,...l));let f=m=>`\n ${m.registerUniform(\"input_size\",\"u32\").registerUniform(\"size_in_split_axis\",\"u32\",u.length).declareVariables(a,...s)}\n ${oc(u.length)}\n ${ic(s)}\n\n ${m.mainStart()}\n ${m.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.input_size\")}\n\n var indices = ${a.offsetToIndices(\"global_idx\")};\n var index = ${a.indicesGet(\"indices\",i)};\n let output_number = calculateOutputIndex(index);\n if (output_number != 0) {\n index -= ${B(\"uniforms.size_in_split_axis\",\"output_number - 1u\",u.length)};\n ${a.indicesSet(\"indices\",i,\"index\")};\n }\n writeBufferData(output_number, indices, global_idx);\n }`;return{name:\"Split\",shaderCache:{hint:t.cacheKey,inputDependencies:[\"rank\"]},getShaderSource:f,getRunData:()=>({outputs:d,dispatchGroup:{x:Math.ceil(r/64)},programUniforms:p})}},ca=(e,t)=>{nc(e.inputs);let n=e.inputs.length===1?t:rc(e.inputs,t);e.compute(ur(e.inputs,n),{inputs:[0]})},pa=e=>{let t=e.axis,n=e.splitSizes,r=e.numOutputs<0?n.length:e.numOutputs;if(r!==n.length)throw new Error(\"numOutputs and splitSizes length must be equal\");return G({axis:t,numOutputs:r,splitSizes:n})}});var sc,pn,ma,lr=k(()=>{\"use strict\";L();F();ie();j();sc=(e,t)=>{let[n,r,o,i]=e,{numHeads:s,rotaryEmbeddingDim:a}=t;if(n.dims.length!==3&&n.dims.length!==4)throw new Error(`Input 'x' is expected to have 3 or 4 dimensions, got ${n.dims.length}`);if(!x.areEqual(r.dims,[])&&!x.areEqual(r.dims,[1])&&r.dims.length!==2)throw new Error(`Input 'position_ids' is expected to have 0, 1, or 2 dimensions, got ${r.dims.length}`);if(o.dims.length!==2)throw new Error(`Input 'cos_cache' is expected to have 2 dimensions, got ${o.dims.length}`);if(i.dims.length!==2)throw new Error(`Input 'sin_cache' is expected to have 2 dimensions, got ${i.dims.length}`);if(!x.areEqual(o.dims,i.dims))throw new Error(\"Inputs 'cos_cache' and 'sin_cache' are expected to have the same shape\");if(a>0&&s===0)throw new Error(\"num_heads must be provided if rotary_embedding_dim is specified\");let u=n.dims[0],d=n.dims[n.dims.length-2],l=o.dims[0],c=x.sizeFromDimension(n.dims,1)/d,p=a===0?o.dims[1]*2:c/s;if(a>p)throw new Error(\"rotary_embedding_dim must be less than or equal to head_size\");if(r.dims.length===2){if(u!==r.dims[0])throw new Error(`Input 'position_ids' dimension 0 should be of size batch_size, got ${r.dims[0]}`);if(d!==r.dims[1])throw new Error(`Input 'position_ids' dimension 1 should be of size sequence_length, got ${r.dims[1]}`)}if(p/2!==o.dims[1]&&a/2!==o.dims[1])throw new Error(`Input 'cos_cache' dimension 1 should be same as head_size / 2 or rotary_embedding_dim / 2, got ${o.dims[1]}`);if(d>l)throw new Error(\"Updating cos_cache and sin_cache in RotaryEmbedding is not currently supported\")},pn=(e,t)=>{let{interleaved:n,numHeads:r,rotaryEmbeddingDim:o,scale:i}=t,s=e[0].dims[0],a=x.sizeFromDimension(e[0].dims,1),u=e[0].dims[e[0].dims.length-2],d=a/u,l=e[2].dims[1],c=o===0?l*2:d/r,p=new Array(s,u,d/c,c-l),f=x.computeStrides(p),m=[{type:1,data:i},{type:12,data:p},{type:12,data:f},...e[0].dims.length===3?new Array({type:12,data:[a,d,c,1]}):[],...e[0].dims.length===4?new Array({type:12,data:[a,c,u*c,1]}):[],...P(e[0].dims,e[1].dims,e[2].dims,e[3].dims,e[0].dims)],h=b=>{let y=S(\"input\",e[0].dataType,e[0].dims.length),g=S(\"position_ids\",e[1].dataType,e[1].dims.length),_=S(\"cos_cache\",e[2].dataType,e[2].dims.length),w=S(\"sin_cache\",e[3].dataType,e[3].dims.length),v=C(\"output\",e[0].dataType,e[0].dims.length);return b.registerUniforms([{name:\"scale\",type:\"f32\"},{name:\"global_shape\",type:\"u32\",length:p.length},{name:\"global_strides\",type:\"u32\",length:f.length},{name:\"input_output_strides\",type:\"u32\",length:f.length}]),`\n ${b.declareVariables(y,g,_,w,v)}\n\n ${b.mainStart(Je)}\n let half_rotary_emb_dim = uniforms.${_.name}_shape[1];\n let bsnh = global_idx / uniforms.global_strides % uniforms.global_shape;\n let size = uniforms.global_shape[0] * uniforms.global_strides[0];\n ${b.guardAgainstOutOfBoundsWorkgroupSizes(\"size\")}\n\n if (bsnh[3] < half_rotary_emb_dim) {\n let position_ids_idx =\n ${g.broadcastedIndicesToOffset(\"bsnh.xy\",C(\"\",g.type.tensor,2))};\n let position_id =\n u32(${g.getByOffset(\"position_ids_idx\")}) + select(0, bsnh[1], position_ids_idx == 0);\n let i = dot(bsnh, uniforms.input_output_strides) + select(0, bsnh[3], ${n});\n let j = i + select(half_rotary_emb_dim, 1, ${n});\n let re = ${y.getByOffset(\"i\")} * ${_.get(\"position_id\",\"bsnh[3]\")} -\n ${y.getByOffset(\"j\")} * ${w.get(\"position_id\",\"bsnh[3]\")};\n ${v.setByOffset(\"i\",\"re\")}\n let im = ${y.getByOffset(\"i\")} * ${w.get(\"position_id\",\"bsnh[3]\")} +\n ${y.getByOffset(\"j\")} * ${_.get(\"position_id\",\"bsnh[3]\")};\n ${v.setByOffset(\"j\",\"im\")}\n } else {\n let k = dot(bsnh, uniforms.input_output_strides) + half_rotary_emb_dim;\n ${v.setByOffset(\"k\",y.getByOffset(\"k\"))}\n }\n }`};return{name:\"RotaryEmbedding\",shaderCache:{hint:G({interleaved:n}).cacheKey,inputDependencies:[\"rank\",\"rank\",\"rank\",\"rank\"]},getShaderSource:h,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(x.size(p)/Je)},programUniforms:m})}},ma=(e,t)=>{sc(e.inputs,t),e.compute(pn(e.inputs,t))}});var ac,uc,fa,dc,ha,ga=k(()=>{\"use strict\";ie();L();tn();ar();dr();Ve();lr();j();ac=(e,t)=>{if(t.doRotary&&e.length<=7)throw new Error(\"cos_cache and sin_cache inputs are required if do_rotary is specified\");let n=e[0],r=e[1],o=e[2],i=e[3],s=e[4];if(t.doRotary!==0&&e.length<=7)throw new Error(\"cos_cast and sin_cache are expected if do_rotary attribute is non-zero\");if(t.localWindowSize!==-1)throw new Error(\"Local attention is not supported\");if(t.softcap!==0)throw new Error(\"Softcap is not supported\");if(t.rotaryInterleaved!==0)throw new Error(\"Rotary interleaved is not supported\");if(t.smoothSoftmax)throw new Error(\"Smooth softmax is not supported\");if(n.dims.length!==3&&n.dims.length!==5)throw new Error(\"Input query is expected to have 3 or 5 dimensions\");let a=!1,u=n.dims[0],d=n.dims[1],l=n.dims.length===3?a?n.dims[2]/3:n.dims[2]:t.numHeads*n.dims[4],c=d,p=0,f=!r||r.dims.length===0,m=Math.floor(f?l/(t.numHeads+2*t.kvNumHeads):l/t.numHeads);f&&(l=m*t.numHeads);let h=i&&i.dims.length!==0,b=s&&s.dims.length!==0;if(h&&i.dims.length===4&&i.dims[0]===u&&i.dims[1]!==t.kvNumHeads&&i.dims[2]===t.kvNumHeads&&i.dims[3]===m)throw new Error(\"BSNH pastKey/pastValue is not supported\");if(h&&b){if(i.dims.length!==4)throw new Error('Input \"past_key\" is expected to have 4 dimensions');if(s.dims.length!==4)throw new Error('Input \"past_value\" is expected to have 4 dimensions');p=i.dims[2]}else if(h||b)throw new Error('Input \"past_key\" and \"past_value\" shall be both present or both absent');let g=1;if(r&&r.dims.length>0){if(n.dims.length!==3)throw new Error('Input \"query\" is expected to have 3 dimensions when key is given');if(r.dims.length<3||r.dims.length>5)throw new Error('Input \"key\" is expected to have 3, 4, or 5 dimensions');if(n.dims[0]!==r.dims[0])throw new Error('Input \"query\" and \"key\" shall have same dim 0 (batch size)');if(r.dims.length===3){if(n.dims[2]%r.dims[2]!==0)throw new Error('Dimension 2 of \"query\" should be a multiple of \"key\"');c=r.dims[1]}else if(r.dims.length===5){if(r.dims[2]!==t.numHeads||r.dims[3]!==2||r.dims[4]!==m)throw new Error('Expect \"key\" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(o)throw new Error('Expect \"value\" be none when \"key\" has packed kv format.');c=r.dims[1]}else{if(r.dims[1]!==t.numHeads||r.dims[3]!==m)throw new Error('Expect \"key\" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');c=r.dims[2]}}else{if(n.dims.length!==3&&n.dims.length!==5)throw new Error('Input \"query\" is expected to have 3 or 5 dimensions when key is empty');if(n.dims.length===5&&(n.dims[2]!==t.numHeads||n.dims[3]!==3))throw new Error('Expect \"query\" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');g=3}let _=0,w=!1,v=t.kvNumHeads?m*t.kvNumHeads:l;if(o&&o.dims.length>0){if(o.dims.length!==3&&o.dims.length!==4)throw new Error('Input \"value\" is expected to have 3 or 4 dimensions');if(n.dims[0]!==o.dims[0])throw new Error('Input \"query\" and \"value\" shall have same dim 0 (batch_size)');if(o.dims.length===3){if(c!==o.dims[1])throw new Error('Input \"key\" and \"value\" shall have the same dim 1 (kv_sequence_length)');v=o.dims[2]}else{if(c!==o.dims[2])throw new Error('Input \"past_key\" and \"past_value\" shall have the same dim 2 (kv_sequence_length)');v=o.dims[1]*o.dims[3],w=!0}}let $=e.length>4?e[5]:void 0;if($&&$.dims.length!==1&&$.dims[0]!==u)throw new Error('Input \"seqlens\" is expected to have 1 dimension and the same dim 0 as batch_size');return{batchSize:u,sequenceLength:d,pastSequenceLength:p,kvSequenceLength:c,totalSequenceLength:-1,maxSequenceLength:-1,inputHiddenSize:0,hiddenSize:l,vHiddenSize:v,headSize:m,vHeadSize:Math.floor(v/t.kvNumHeads),numHeads:t.numHeads,kvNumHeads:t.kvNumHeads,nReps:t.numHeads/t.kvNumHeads,pastPresentShareBuffer:!1,maskType:_,scale:t.scale,broadcastResPosBias:!1,passPastInKv:w,qkvFormat:g}},uc=G({perm:[0,2,1,3]}),fa=(e,t,n)=>{let r=t,o=n.kvNumHeads;return t.dims.length===3&&n.kvSequenceLength!==0&&(r=t.reshape([n.batchSize,n.kvSequenceLength,o,n.headSize]),r=e.compute(pe(r,uc.perm),{inputs:[r],outputs:[-1]})[0]),r},dc=(e,t,n,r)=>{let o=7,i=[\"type\",\"type\"],s=[e*t],a=e*t,u=[{type:12,data:a},{type:12,data:t},{type:12,data:e}],d=l=>{let c=S(\"seq_lens\",n.dataType,n.dims),p=S(\"total_seq_lens\",r.dataType,r.dims),f=C(\"pos_ids\",o,s),m=[{name:\"output_size\",type:\"u32\"},{name:\"sequence_length\",type:\"u32\"},{name:\"batch_size\",type:\"u32\"}];return`\n ${l.registerUniforms(m).declareVariables(c,p,f)}\n ${l.mainStart()}\n ${l.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n let total_sequence_length = u32(${p.getByOffset(\"0\")});\n let is_subsequent_prompt = uniforms.sequence_length > 1 && uniforms.sequence_length != total_sequence_length;\n let is_first_prompt = !is_subsequent_prompt && uniforms.sequence_length == total_sequence_length;\n let batch_idx = global_idx / uniforms.sequence_length;\n let sequence_idx = i32(global_idx % uniforms.sequence_length);\n var pos_id: i32 = 0;\n let seqlen = ${c.getByOffset(\"batch_idx\")};\n let total_seqlen = seqlen + 1;\n if (is_first_prompt) {\n if (sequence_idx < total_seqlen) {\n pos_id = sequence_idx;\n } else {\n pos_id = 1;\n }\n ${f.setByOffset(\"global_idx\",\"pos_id\")}\n } else if (is_subsequent_prompt) {\n let past_seqlen = total_seqlen - i32(uniforms.sequence_length);\n if (past_seqlen + sequence_idx < total_seqlen) {\n pos_id = past_seqlen + sequence_idx;\n } else {\n pos_id = 1;\n }\n ${f.setByOffset(\"global_idx\",\"pos_id\")}\n } else if (global_idx < uniforms.batch_size) {\n ${f.setByOffset(\"global_idx\",\"seqlen\")}\n };\n }\n `};return{name:\"GeneratePositionIds\",shaderCache:{hint:`${e};${t}`,inputDependencies:i},getRunData:()=>({outputs:[{dims:s,dataType:o}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:u}),getShaderSource:d}},ha=(e,t)=>{let n=ac(e.inputs,t);if(e.inputs[0].dims.length===5)throw new Error(\"Packed QKV is not implemented\");if(e.inputs[1]?.dims.length===5)throw new Error(\"Packed KV is not implemented\");let r=e.inputs[0],o=e.inputs[1]&&e.inputs[1].dims.length>0?e.inputs[1]:void 0,i=e.inputs[2]&&e.inputs[2].dims.length>0?e.inputs[2]:void 0,s=e.inputs[3]&&e.inputs[3].dims.length!==0?e.inputs[3]:void 0,a=e.inputs[4]&&e.inputs[4].dims.length!==0?e.inputs[4]:void 0,u=e.inputs.length>4?e.inputs[5]:void 0,d=e.inputs.length>5?e.inputs[6]:void 0,l=n.kvNumHeads?n.kvNumHeads:n.numHeads,c=G({axis:2,numOutputs:3,splitSizes:[n.numHeads*n.headSize,l*n.headSize,l*n.headSize]}),[p,f,m]=!o&&!i?e.compute(ur([r],c),{inputs:[r],outputs:[-1,-1,-1]}):[r,o,i],h,b;if(t.doRotary){let w=e.compute(dc(n.batchSize,n.sequenceLength,u,d),{inputs:[u,d],outputs:[-1]})[0],v=e.inputs[7],$=e.inputs[8],T=G({interleaved:t.rotaryInterleaved!==0,numHeads:n.numHeads,rotaryEmbeddingDim:0,scale:t.scale}),I=[p,w,v,$],A=[-1];h=e.compute(pn(I,T),{inputs:I,outputs:A})[0],I.splice(0,1,f);let z=G({interleaved:t.rotaryInterleaved!==0,numHeads:n.kvNumHeads,rotaryEmbeddingDim:0,scale:t.scale});b=e.compute(pn(I,z),{inputs:I,outputs:A})[0]}let y=wt(e,n.batchSize,n.numHeads,n.sequenceLength,n.headSize,t.doRotary?h:p,void 0,0),g=fa(e,t.doRotary?b:f,n),_=fa(e,m,n);it(e,y,g,_,void 0,void 0,s,a,void 0,n,u,d)}});var ya,lc,cc,ba,_a=k(()=>{\"use strict\";L();F();Ve();j();ya=(e,t,n,r,o,i,s,a)=>{let u=J(i),d=u===1?\"f32\":`vec${u}f`,l=u===1?\"vec2f\":`mat2x${u}f`,c=o*s,p=64;c===1&&(p=256);let f=[o,s,i/u],m=[o,s,2],h=[\"rank\",\"type\",\"type\"],b=[];b.push(...P(f,m));let y=g=>{let _=S(\"x\",t.dataType,3,u),w=S(\"scale\",n.dataType,n.dims),v=S(\"bias\",r.dataType,r.dims),$=C(\"output\",1,3,2),T=[_,w,v,$];return`\n var<workgroup> workgroup_shared : array<${l}, ${p}>;\n const workgroup_size = ${p}u;\n ${g.declareVariables(...T)}\n ${g.mainStart(p)}\n let batch = workgroup_index / uniforms.x_shape[1];\n let channel = workgroup_index % uniforms.x_shape[1];\n let hight = uniforms.x_shape[2];\n // initialize workgroup memory\n var sum = ${d}(0);\n var squared_sum = ${d}(0);\n for (var h = local_idx; h < hight; h += workgroup_size) {\n let value = ${d}(${_.get(\"batch\",\"channel\",\"h\")});\n sum += value;\n squared_sum += value * value;\n }\n workgroup_shared[local_idx] = ${l}(sum, squared_sum);\n workgroupBarrier();\n\n for (var currSize = workgroup_size >> 1; currSize > 0; currSize = currSize >> 1) {\n if (local_idx < currSize) {\n workgroup_shared[local_idx] = workgroup_shared[local_idx] + workgroup_shared[local_idx + currSize];\n }\n workgroupBarrier();\n }\n if (local_idx == 0) {\n let sum_final = ${Te(\"workgroup_shared[0][0]\",u)} / f32(hight * ${u});\n let squared_sum_final = ${Te(\"workgroup_shared[0][1]\",u)} / f32(hight * ${u});\n\n let inv_std_dev = inverseSqrt(squared_sum_final - sum_final * sum_final + f32(${a}));\n let channel_scale = inv_std_dev * f32(scale[channel]);\n let channel_shift = f32(bias[channel]) - sum_final * channel_scale;\n output[workgroup_index] = vec2f(channel_scale, channel_shift);\n }\n }`};return e.compute({name:\"InstanceNormComputeChannelScaleShift\",shaderCache:{hint:`${u};${a};${p}`,inputDependencies:h},getRunData:()=>({outputs:[{dims:m,dataType:1}],dispatchGroup:{x:c},programUniforms:b}),getShaderSource:y},{inputs:[t,n,r],outputs:[-1]})[0]},lc=(e,t,n)=>{let r=t[0].dims,o=r,i=2,s=r[0],a=r[1],u=x.sizeFromDimension(r,i),d=J(u),l=x.size(o)/d,c=ya(e,t[0],t[1],t[2],s,u,a,n.epsilon),p=[s,a,u/d],f=[s,a],m=[\"type\",\"none\"],h=b=>{let y=S(\"x\",t[0].dataType,p.length,d),g=S(\"scale_shift\",1,f.length,2),_=C(\"output\",t[0].dataType,p.length,d),w=[y,g,_];return`\n ${b.registerUniform(\"output_size\",\"u32\").declareVariables(...w)}\n ${b.mainStart()}\n ${b.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n let outputIndices = ${_.offsetToIndices(\"global_idx\")};\n let batch = outputIndices[0];\n let channel = outputIndices[1];\n let scale_shift = ${g.getByIndices(\"vec2<u32>(batch, channel)\")};\n let value = ${y.getByOffset(\"global_idx\")} * ${_.type.value}(scale_shift.x) + ${_.type.value}(scale_shift.y);\n ${_.setByOffset(\"global_idx\",\"value\")};\n }`};e.compute({name:\"InstanceNormalization\",shaderCache:{hint:`${d}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:o,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:[{type:12,data:l},...P(p,f,p)]}),getShaderSource:h},{inputs:[t[0],c]})},cc=(e,t,n)=>{let r=t[0].dims,o=r,i=r[0],s=r[r.length-1],a=x.sizeFromDimension(r,1)/s,u=J(s),d=x.size(o)/u,l=[{type:12,data:a},{type:12,data:Math.floor(s/u)}],c=[\"type\",\"type\"],p=!1,f=[0,r.length-1];for(let y=0;y<r.length-2;y++)p=p||r[y+1]!==1,f.push(y+1);p=p&&r[r.length-1]!==1;let m=p?e.compute(pe(e.inputs[0],f),{inputs:[e.inputs[0]],outputs:[-1]})[0]:e.inputs[0].reshape(Array.from({length:r.length},(y,g)=>r[f[g]])),h=ya(e,m,t[1],t[2],i,a,s,n.epsilon),b=y=>{let g=re(t[0].dataType),_=u===1?\"vec2f\":`mat${u}x2f`,w=T=>{let I=T===0?\"x\":\"y\",A=u===1?\"f32\":`vec${u}f`;switch(u){case 1:return`${g}(${A}(scale.${I}))`;case 2:return`vec2<${g}>(${A}(scale[0].${I}, scale[1].${I}))`;case 4:return`vec4<${g}>(${A}(scale[0].${I}, scale[1].${I}, scale[2].${I}, scale[3].${I}))`;default:throw new Error(`Not supported compoents ${u}`)}},v=S(\"input\",t[0].dataType,t[0].dims,u),$=C(\"output\",t[0].dataType,o,u);return`\n @group(0) @binding(0) var<storage, read> input : array<${v.type.storage}>;\n @group(0) @binding(1) var<storage, read> scale_input : array<${_}>;\n @group(0) @binding(2) var<storage, read_write> output : array<${$.type.storage}>;\n struct Uniforms {H: u32, C : u32};\n @group(0) @binding(3) var<uniform> uniforms: Uniforms;\n\n ${y.mainStart()}\n let current_image_number = global_idx / (uniforms.C * uniforms.H);\n let current_channel_number = global_idx % uniforms.C;\n\n let scale_offset = current_image_number * uniforms.C + current_channel_number;\n let scale = scale_input[scale_offset];\n output[global_idx] = fma(input[global_idx], ${w(0)}, ${w(1)});\n }`};e.compute({name:\"InstanceNormalizationNHWC\",shaderCache:{hint:`${u}`,inputDependencies:c},getRunData:()=>({outputs:[{dims:o,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(d/64)},programUniforms:l}),getShaderSource:b},{inputs:[t[0],h]})},ba=(e,t)=>{t.format===\"NHWC\"?cc(e,e.inputs,t):lc(e,e.inputs,t)}});var pc,mc,wa,$a=k(()=>{\"use strict\";L();F();j();pc=e=>{if(!e||e.length<2)throw new Error(\"layerNorm requires at least 2 inputs.\")},mc=(e,t,n)=>{let r=t.simplified,o=e[0].dims,i=e[1],s=!r&&e[2],a=o,u=x.normalizeAxis(t.axis,o.length),d=x.sizeToDimension(o,u),l=x.sizeFromDimension(o,u),c=x.size(i.dims),p=s?x.size(s.dims):0;if(c!==l||s&&p!==l)throw new Error(`Size of X.shape()[axis:] == ${l}.\n Size of scale and bias (if provided) must match this.\n Got scale size of ${c} and bias size of ${p}`);let f=[];for(let v=0;v<o.length;++v)v<u?f.push(o[v]):f.push(1);let m=J(l),h=[\"type\",\"type\"],b=[{type:12,data:d},{type:1,data:l},{type:12,data:Math.floor(l/m)},{type:1,data:t.epsilon}];s&&h.push(\"type\");let y=n>1,g=n>2,_=v=>{let $=re(e[0].dataType),T=[S(\"x\",e[0].dataType,e[0].dims,m),S(\"scale\",i.dataType,i.dims,m)];s&&T.push(S(\"bias\",s.dataType,s.dims,m)),T.push(C(\"output\",e[0].dataType,a,m)),y&&T.push(C(\"mean_data_output\",1,f)),g&&T.push(C(\"inv_std_output\",1,f));let I=[{name:\"norm_count\",type:\"u32\"},{name:\"norm_size\",type:\"f32\"},{name:\"norm_size_vectorized\",type:\"u32\"},{name:\"epsilon\",type:\"f32\"}];return`\n ${v.registerUniforms(I).declareVariables(...T)}\n ${v.mainStart()}\n ${v.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.norm_count\")}\n let offset = global_idx * uniforms.norm_size_vectorized;\n var mean_vector = ${Fn(\"f32\",m)};\n var mean_square_vector = ${Fn(\"f32\",m)};\n\n for (var h: u32 = 0u; h < uniforms.norm_size_vectorized; h++) {\n let value = ${et($,m,\"x[h + offset]\")};\n mean_vector += value;\n mean_square_vector += value * value;\n }\n let mean = ${Te(\"mean_vector\",m)} / uniforms.norm_size;\n let inv_std_dev = inverseSqrt(${Te(\"mean_square_vector\",m)} / uniforms.norm_size ${r?\"\":\"- mean * mean\"} + uniforms.epsilon);\n\n for (var j: u32 = 0; j < uniforms.norm_size_vectorized; j++) {\n let f32input = ${et($,m,\"x[j + offset]\")};\n let f32scale = ${et($,m,\"scale[j]\")};\n output[j + offset] = ${T[0].type.value}((f32input ${r?\"\":\"- mean\"}) * inv_std_dev * f32scale\n ${s?`+ ${et($,m,\"bias[j]\")}`:\"\"}\n );\n }\n\n ${y?\"mean_data_output[global_idx] = mean\":\"\"};\n ${g?\"inv_std_output[global_idx] = inv_std_dev\":\"\"};\n }`},w=[{dims:a,dataType:e[0].dataType}];return y&&w.push({dims:f,dataType:1}),g&&w.push({dims:f,dataType:1}),{name:\"LayerNormalization\",shaderCache:{hint:`${m};${n};${r}`,inputDependencies:h},getRunData:()=>({outputs:w,dispatchGroup:{x:Math.ceil(d/64)},programUniforms:b}),getShaderSource:_}},wa=(e,t)=>{pc(e.inputs),e.compute(mc(e.inputs,t,e.outputCount))}});var fc,va,xa=k(()=>{\"use strict\";F();un();dn();fc=e=>{if(!e||e.length!==2)throw new Error(\"MatMul requires 2 inputs.\");if(e[0].dims[e[0].dims.length-1]!==e[1].dims[e[1].dims.length-2])throw new Error(\"shared dimension does not match.\")},va=e=>{fc(e.inputs);let t=Pe.calcShape(e.inputs[0].dims,e.inputs[1].dims,!0);if(!t)throw new Error(\"Can't use matmul on the given tensors\");let n=t[t.length-1],r=e.inputs[0].dims[e.inputs[0].dims.length-1];if(n<8&&r<8)e.compute(an(e.inputs,{activation:\"\"},t));else{let o=t[t.length-2],i=x.size(e.inputs[0].dims.slice(0,-2)),s=x.size(e.inputs[1].dims.slice(0,-2));if(i!==1&&o===1&&s===1){let a=e.inputs[0].reshape([1,i,r]),u=e.inputs[1].reshape([1,r,n]),d=[1,i,n],l=[a,u];e.compute(_t(l,{activation:\"\"},t,d),{inputs:l})}else e.compute(_t(e.inputs,{activation:\"\"},t))}}});var hc,gc,yc,Sa,Ta,Ia=k(()=>{\"use strict\";L();F();ie();j();hc=(e,t)=>{if(e.length<3||e.length>4)throw new Error(\"MatMulNBits requires 3 or 4 inputs\");let n=e[0],r=n.dims.length;if(n.dims[r-1]!==t.k)throw new Error(\"The last dim of input shape does not match the k value\");let o=Math.floor((t.k+t.blockSize-1)/t.blockSize),i=t.blockSize/8*t.bits,s=e[1];if(!x.areEqual(s.dims,[t.n,o,i]))throw new Error(\"The second inputs must be 3D tensor with shape N X nBlocksPerCol X blobSize\");let u=e[2].dims;if(x.size(u)!==t.n*o)throw new Error(\"scales input size error.\");if(e.length===4){let l=e[3].dims,c=t.n*(t.bits===8?o:Math.floor((o*t.bits+7)/8));if(x.size(l)!==c)throw new Error(\"zeroPoints input size error.\")}},gc=(e,t)=>{let n=e[0].dims,r=n.length,o=n[r-2],i=t.k,s=t.n,a=n.slice(0,r-2),u=x.size(a),l=e[1].dims[2]/4,c=e[0].dataType,p=J(t.k),f=J(l),m=J(s),h=a.concat([o,s]),b=o>1&&s/m%2===0?2:1,y=x.size(h)/m/b,g=64,_=[],w=[u,o,i/p],v=x.convertShape(e[1].dims).slice();v.splice(-1,1,l/f),_.push(...P(w)),_.push(...P(v)),_.push(...P(e[2].dims)),e.length===4&&_.push(...P(x.convertShape(e[3].dims)));let $=[u,o,s/m];_.push(...P($));let T=I=>{let A=w.length,z=S(\"a\",e[0].dataType,A,p),R=S(\"b\",12,v.length,f),D=S(\"scales\",e[2].dataType,e[2].dims.length),U=[z,R,D],Q=e.length===4?S(\"zero_points\",12,e[3].dims.length):void 0;Q&&U.push(Q);let O=$.length,M=C(\"output\",e[0].dataType,O,m),V=re(e[0].dataType),W=(()=>{switch(p){case 1:return`array<${V}, 8>`;case 2:return`mat4x2<${V}>`;case 4:return`mat2x4<${V}>`;default:throw new Error(`${p}-component is not supported.`)}})(),H=()=>{let de=`\n // reuse a data\n var input_offset = ${z.indicesToOffset(`${z.type.indices}(batch, row, word_offset)`)};\n var a_data: ${W};\n for (var j: u32 = 0; j < ${8/p}; j++) {\n a_data[j] = ${z.getByOffset(\"input_offset\")};\n input_offset++;\n }\n `;for(let q=0;q<m*b;q++)de+=`\n b_value = ${f===1?`b${q}_data`:`b${q}_data[i]`};\n b_value_lower = unpack4xU8(b_value & b_mask);\n b_value_upper = unpack4xU8((b_value >> 4) & b_mask);\n b_quantized_values = ${W}(${Array.from({length:4},(E,N)=>`${V}(b_value_lower[${N}]), ${V}(b_value_upper[${N}])`).join(\", \")});\n b_dequantized_values = ${p===1?`${W}(${Array.from({length:8},(E,N)=>`(b_quantized_values[${N}] - ${Q?`zero_point${q}`:\"zero_point\"}) * scale${q}`).join(\", \")});`:`(b_quantized_values - ${W}(${Array(8).fill(`${Q?`zero_point${q}`:\"zero_point\"}`).join(\",\")})) * scale${q};`};\n workgroup_shared[local_id.x * ${b} + ${Math.floor(q/m)}]${m>1?`[${q%m}]`:\"\"} += ${Array.from({length:8/p},(E,N)=>`${p===1?`a_data[${N}] * b_dequantized_values[${N}]`:`dot(a_data[${N}], b_dequantized_values[${N}])`}`).join(\" + \")};\n `;return de},X=()=>{let de=`\n var col_index = col * ${m};\n ${Q?`\n let zero_point_bytes_per_col = (nBlocksPerCol + 1) / 2;\n var zero_point_byte_count: u32;\n var zero_point_word_index: u32;\n var zero_point_byte_offset: u32;\n let zero_point_nibble_offset: u32 = block & 0x1u;\n var zero_point_bits_offset: u32;\n var zero_point_word: u32;`:`\n // The default zero point is 8 for unsigned 4-bit quantization.\n let zero_point = ${V}(8);`}\n `;for(let q=0;q<m*b;q++)de+=`\n let scale${q} = ${D.getByOffset(\"col_index * nBlocksPerCol + block\")};\n ${Q?`\n zero_point_byte_count = col_index * zero_point_bytes_per_col + (block >> 0x1u);\n zero_point_word_index = zero_point_byte_count >> 0x2u;\n zero_point_byte_offset = zero_point_byte_count & 0x3u;\n zero_point_bits_offset = (zero_point_byte_offset << 3) + (zero_point_nibble_offset << 2);\n zero_point_word = ${Q.getByOffset(\"zero_point_word_index\")} >> zero_point_bits_offset;\n let zero_point${q} = ${V}((zero_point_word) & 0xFu);`:\"\"}\n col_index += 1;`;return de},oe=()=>{let de=`col_index = col * ${m};`;for(let q=0;q<m*b;q++)de+=`\n let b${q}_data = ${R.getByIndices(`${R.type.indices}(col_index, block, word)`)};\n col_index += 1;`;return de+=`\n var b_value: u32;\n let b_mask: u32 = 0x0F0F0F0Fu;\n var b_value_lower: vec4<u32>;\n var b_value_upper: vec4<u32>;\n var b_quantized_values: ${W};\n var b_dequantized_values: ${W};`,de};return`\n var<workgroup> workgroup_shared: array<${M.type.value}, ${b*g}>;\n ${I.declareVariables(...U,M)}\n ${I.mainStart([g,1,1])}\n let output_indices = ${M.offsetToIndices(`(global_idx / ${g}) * ${b}`)};\n let col = output_indices[2];\n let row = output_indices[1];\n let batch = output_indices[0];\n let nBlocksPerCol = uniforms.b_shape[1];\n\n for (var block = local_id.x; block < nBlocksPerCol; block += ${g}) {\n //process one block\n var word_offset: u32 = block * ${t.blockSize/p};\n ${X()}\n for (var word: u32 = 0; word < ${l}; word += ${f}) {\n ${oe()}\n for (var i: u32 = 0; i < ${f}; i++) {\n ${H()}\n word_offset += ${8/p};\n }\n }\n }\n workgroupBarrier();\n\n if (local_id.x < ${b}) {\n var output_value: ${M.type.value} = ${M.type.value}(0);\n var workgroup_shared_offset: u32 = local_id.x;\n for (var b: u32 = 0u; b < ${g}u; b++) {\n output_value += workgroup_shared[workgroup_shared_offset];\n workgroup_shared_offset += ${b};\n }\n ${M.setByIndices(`${M.type.indices}(batch, row, col + local_id.x)`,\"output_value\")};\n }\n }`};return{name:\"MatMulNBits\",shaderCache:{hint:`${t.blockSize};${t.bits};${p};${f};${m};${b};${g}`,inputDependencies:Array(e.length).fill(\"rank\")},getRunData:()=>({outputs:[{dims:h,dataType:c}],dispatchGroup:{x:y},programUniforms:_}),getShaderSource:T}},yc=(e,t)=>{let n=e[0].dims,r=n.length,o=n[r-2],i=t.k,s=t.n,a=n.slice(0,r-2),u=x.size(a),l=e[1].dims[2]/4,c=e[0].dataType,p=J(t.k),f=J(l),m=a.concat([o,s]),h=128,b=s%8===0?8:s%4===0?4:1,y=h/b,g=y*f*8,_=g/p,w=g/t.blockSize,v=x.size(m)/b,$=[],T=[u,o,i/p],I=x.convertShape(e[1].dims).slice();I.splice(-1,1,l/f),$.push(...P(T)),$.push(...P(I)),$.push(...P(e[2].dims)),e.length===4&&$.push(...P(x.convertShape(e[3].dims)));let A=[u,o,s];$.push(...P(A));let z=R=>{let D=T.length,U=S(\"a\",e[0].dataType,D,p),Q=S(\"b\",12,I.length,f),O=S(\"scales\",e[2].dataType,e[2].dims.length),M=[U,Q,O],V=e.length===4?S(\"zero_points\",12,e[3].dims.length):void 0;V&&M.push(V);let W=A.length,H=C(\"output\",e[0].dataType,W),X=re(e[0].dataType),oe=()=>{switch(p){case 1:return`\n let a_data0 = vec4<${X}>(sub_a[word_offset], sub_a[word_offset + 1], sub_a[word_offset + 2], sub_a[word_offset + 3]);\n let a_data1 = vec4<${X}>(sub_a[word_offset + 4], sub_a[word_offset + 5], sub_a[word_offset + 6], sub_a[word_offset + 7]);`;case 2:return`\n let a_data0 = vec4<${X}>(sub_a[word_offset], sub_a[word_offset + 1]);\n let a_data1 = vec4<${X}>(sub_a[word_offset + 2], sub_a[word_offset + 3]);`;case 4:return`\n let a_data0 = sub_a[word_offset];\n let a_data1 = sub_a[word_offset + 1];`;default:throw new Error(`${p}-component is not supported.`)}};return`\n var<workgroup> sub_a: array<${U.type.value}, ${_}>;\n var<workgroup> inter_results: array<array<${H.type.value}, ${y}>, ${b}>;\n ${R.declareVariables(...M,H)}\n ${R.mainStart([y,b,1])}\n let output_indices = ${H.offsetToIndices(`workgroup_index * ${b}`)};\n let col = output_indices[2];\n let row = output_indices[1];\n let batch = output_indices[0];\n let n_blocks_per_col = uniforms.b_shape[1];\n let num_tiles = (n_blocks_per_col - 1) / ${w} + 1;\n\n // Loop over shared dimension.\n for (var tile: u32 = 0; tile < num_tiles; tile += 1) {\n let a_col_start = tile * ${_};\n // load one tile A data into shared memory.\n for (var a_offset = local_idx; a_offset < ${_}; a_offset += ${h})\n {\n let a_col = a_col_start + a_offset;\n if (a_col < uniforms.a_shape[2])\n {\n sub_a[a_offset] = ${U.getByIndices(`${U.type.indices}(batch, row, a_col)`)};\n } else {\n sub_a[a_offset] = ${U.type.value}(0);\n }\n }\n workgroupBarrier();\n\n // each thread process one block\n let b_row = col + local_id.y;\n let block = tile * ${w} + local_id.x;\n ${V?`\n let zero_point_bytes_per_col = (n_blocks_per_col + 1) / 2;\n let zero_point_byte_count = b_row * zero_point_bytes_per_col + (block >> 0x1u);\n let zero_point_word_index = zero_point_byte_count >> 0x2u;\n let zero_point_byte_offset = zero_point_byte_count & 0x3u;\n let zero_point_nibble_offset: u32 = block & 0x1u;\n let zero_point_bits_offset = (zero_point_byte_offset << 3) + (zero_point_nibble_offset << 2);\n let zero_point_word = ${V.getByOffset(\"zero_point_word_index\")} >> zero_point_bits_offset;\n let zero_point = ${X}((zero_point_word) & 0xFu);`:`\n // The default zero point is 8 for unsigned 4-bit quantization.\n let zero_point = ${X}(8);`}\n let scale = ${O.getByOffset(\"b_row * n_blocks_per_col + block\")};\n let b_data = ${Q.getByIndices(`${Q.type.indices}(b_row, block, 0)`)};\n var word_offset = local_id.x * ${t.blockSize/p};\n for (var i: u32 = 0; i < ${f}; i++) {\n ${oe()}\n let b_value = ${f===1?\"b_data\":\"b_data[i]\"};\n let b_value_lower = unpack4xU8(b_value & 0x0F0F0F0Fu);\n let b_value_upper = unpack4xU8((b_value >> 4) & 0x0F0F0F0Fu);\n let b_quantized_values = mat2x4<${X}>(${Array.from({length:4},(de,q)=>`${X}(b_value_lower[${q}]), ${X}(b_value_upper[${q}])`).join(\", \")});\n let b_dequantized_values = (b_quantized_values - mat2x4<${X}>(${Array(8).fill(\"zero_point\").join(\",\")})) * scale;\n inter_results[local_id.y][local_id.x] += ${Array.from({length:2},(de,q)=>`${`dot(a_data${q}, b_dequantized_values[${q}])`}`).join(\" + \")};\n word_offset += ${8/p};\n }\n workgroupBarrier();\n }\n\n if (local_idx < ${b}) {\n var output_value: ${H.type.value} = ${H.type.value}(0);\n for (var b = 0u; b < ${y}; b++) {\n output_value += inter_results[local_idx][b];\n }\n if (col + local_idx < uniforms.output_shape[2])\n {\n ${H.setByIndices(`${H.type.indices}(batch, row, col + local_idx)`,\"output_value\")}\n }\n }\n }`};return{name:\"BlockwiseMatMulNBits32\",shaderCache:{hint:`${t.blockSize};${p};${f};${y};${b}`,inputDependencies:Array(e.length).fill(\"rank\")},getRunData:()=>({outputs:[{dims:m,dataType:c}],dispatchGroup:{x:v},programUniforms:$}),getShaderSource:z}},Sa=(e,t)=>{hc(e.inputs,t),t.blockSize===32&&e.adapterInfo.isVendor(\"intel\")&&e.adapterInfo.isArchitecture(\"gen-12lp\")?e.compute(yc(e.inputs,t)):e.compute(gc(e.inputs,t))},Ta=e=>G(e)});var bc,_c,wc,$c,vc,xc,Sc,Tc,Ca,Aa=k(()=>{\"use strict\";L();F();j();bc=e=>{if(!e||e.length<1)throw new Error(\"Too few inputs\");if(e[0].dataType!==1&&e[0].dataType!==10)throw new Error(\"Input type must be float or float16.\");if(e.length>=2){let t=e[0].dims.length*2===e[1].dims[0];if(e.length===4&&(t=e[3].dims[0]*2===e[1].dims[0]),!t)throw new Error(\"The pads should be a 1D tensor of shape [2 * input_rank] or [2 * num_axes].\")}},_c=(e,t,n)=>{let r=\"\";for(let o=t-1;o>=0;--o)r+=`\n k = i32(${e.indicesGet(\"indices\",o)}) - ${B(\"uniforms.pads\",o,n)};\n if (k < 0) {\n break;\n }\n if (k >= i32(${B(\"uniforms.x_shape\",o,t)})) {\n break;\n }\n offset += k * i32(${B(\"uniforms.x_strides\",o,t)});\n `;return`\n value = ${e.type.value}(uniforms.constant_value);\n for (var i = 0; i < 1; i++) {\n var offset = 0;\n var k = 0;\n ${r}\n value = x[offset];\n }\n `},wc=(e,t,n)=>{let r=\"\";for(let o=t-1;o>=0;--o)r+=`\n k = i32(${e.indicesGet(\"indices\",o)}) - ${B(\"uniforms.pads\",o,n)};\n if (k < 0) {\n k = -k;\n }\n {\n let _2n_1 = 2 * (i32(${B(\"uniforms.x_shape\",o,t)}) - 1);\n k = k % _2n_1;\n if(k >= i32(${B(\"uniforms.x_shape\",o,t)})) {\n k = _2n_1 - k;\n }\n }\n offset += k * i32(${B(\"uniforms.x_strides\",o,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${r}\n value = x[offset];\n `},$c=(e,t,n)=>{let r=\"\";for(let o=t-1;o>=0;--o)r+=`\n k = i32(${e.indicesGet(\"indices\",o)}) - ${B(\"uniforms.pads\",o,n)};\n if (k < 0) {\n k = 0;\n }\n if (k >= i32(${B(\"uniforms.x_shape\",o,t)})) {\n k = i32(${B(\"uniforms.x_shape\",o,t)}) - 1;\n }\n offset += k * i32(${B(\"uniforms.x_strides\",o,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${r}\n value = x[offset];\n `},vc=(e,t,n)=>{let r=\"\";for(let o=t-1;o>=0;--o)r+=`\n k = i32(${e.indicesGet(\"indices\",o)}) - ${B(\"uniforms.pads\",o,n)};\n if (k < 0) {\n k += i32(${B(\"uniforms.x_shape\",o,t)}]);\n }\n if (k >= i32(${B(\"uniforms.x_shape\",o,t)})) {\n k -= i32(${B(\"uniforms.x_shape\",o,t)});\n }\n offset += k * i32(${B(\"uniforms.x_strides\",o,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${r}\n value = x[offset];\n `},xc=(e,t,n)=>{switch(n.mode){case 0:return _c(e,t,n.pads.length);case 1:return wc(e,t,n.pads.length);case 2:return $c(e,t,n.pads.length);case 3:return vc(e,t,n.pads.length);default:throw new Error(\"Invalid mode\")}},Sc=(e,t)=>{let n=x.padShape(e[0].dims.slice(),t.pads),r=e[0].dims,o=x.size(n),i=[{type:12,data:o},{type:6,data:t.pads}],s=e.length>=3&&e[2].data;t.mode===0&&i.push({type:s?e[2].dataType:1,data:t.value}),i.push(...P(e[0].dims,n));let a=[\"rank\"],u=d=>{let l=C(\"output\",e[0].dataType,n.length),c=S(\"x\",e[0].dataType,r.length),p=c.type.value,f=xc(l,r.length,t),m=[{name:\"output_size\",type:\"u32\"},{name:\"pads\",type:\"i32\",length:t.pads.length}];return t.mode===0&&m.push({name:\"constant_value\",type:s?p:\"f32\"}),`\n ${d.registerUniforms(m).declareVariables(c,l)}\n ${d.mainStart()}\n ${d.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n\n let indices = ${l.offsetToIndices(\"global_idx\")};\n\n var value = ${p}(0);\n ${f}\n output[global_idx] = value;\n }`};return{name:\"Pad\",shaderCache:{hint:`${t.mode}${s}`,inputDependencies:a},getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(x.size(n)/64)},programUniforms:i}),getShaderSource:u}},Tc=(e,t)=>{if(e.length>1){let n=e[1].getBigInt64Array(),r=e.length>=3&&e[2].data?e[2].dataType===10?e[2].getUint16Array()[0]:e[2].getFloat32Array()[0]:0,o=e[0].dims.length,i=new Int32Array(2*o).fill(0);if(e.length>=4){let a=e[3].getBigInt64Array();for(let u=0;u<a.length;u++)i[Number(a[u])]=Number(n[u]),i[Number(a[u])+o]=Number(n[u+a.length])}else n.forEach((a,u)=>i[Number(u)]=Number(a));let s=[];return i.forEach(a=>s.push(a)),{mode:t.mode,value:r,pads:s}}else return t},Ca=(e,t)=>{bc(e.inputs);let n=Tc(e.inputs,t);e.compute(Sc(e.inputs,n),{inputs:[0]})}});var mn,Ea,ka,Pa,za,Ic,Cc,Ba,Da,Oa,Ma,Ua,Ra,Va,Na,La,Ga,Wa,Ha,qa=k(()=>{\"use strict\";_e();L();F();j();mn=e=>{if(te.webgpu.validateInputContent&&(!e||e.length!==1))throw new Error(\"Pool ops requires 1 input.\")},Ea=(e,t,n)=>{let r=t.format===\"NHWC\",o=e.dims.slice();r&&o.splice(1,0,o.pop());let i=Object.hasOwnProperty.call(t,\"dilations\"),s=t.kernelShape.slice(),a=t.strides.slice(),u=i?t.dilations.slice():[],d=t.pads.slice();Ye.adjustPoolAttributes(n,o,s,a,u,d);let l=Ye.computePoolOutputShape(n,o,a,u,s,d,t.autoPad),c=Object.assign({},t);i?Object.assign(c,{kernelShape:s,strides:a,pads:d,dilations:u,cacheKey:t.cacheKey}):Object.assign(c,{kernelShape:s,strides:a,pads:d,cacheKey:t.cacheKey});let p=l.slice();return p.push(p.splice(1,1)[0]),[c,r?p:l]},ka=(e,t)=>{let n=t.format===\"NHWC\",r=x.size(e),o=x.size(t.kernelShape),i=[{type:12,data:r},{type:12,data:o}],s=[{name:\"outputSize\",type:\"u32\"},{name:\"kernelSize\",type:\"u32\"}];if(t.kernelShape.length<=2){let a=t.kernelShape[t.kernelShape.length-1],u=t.strides[t.strides.length-1],d=t.pads[t.pads.length/2-1],l=t.pads[t.pads.length-1],c=!!(d+l);i.push({type:12,data:a},{type:12,data:u},{type:12,data:d},{type:12,data:l}),s.push({name:\"kw\",type:\"u32\"},{name:\"sw\",type:\"u32\"},{name:\"pwStart\",type:\"u32\"},{name:\"pwEnd\",type:\"u32\"});let p=!1;if(t.kernelShape.length===2){let f=t.kernelShape[t.kernelShape.length-2],m=t.strides[t.strides.length-2],h=t.pads[t.pads.length/2-2],b=t.pads[t.pads.length-2];p=!!(h+b),i.push({type:12,data:f},{type:12,data:m},{type:12,data:h},{type:12,data:b}),s.push({name:\"kh\",type:\"u32\"},{name:\"sh\",type:\"u32\"},{name:\"phStart\",type:\"u32\"},{name:\"phEnd\",type:\"u32\"})}return[i,s,!0,c,p]}else{if(n)throw new Error(\"Pooling with kernelShape.length > 2 is not supported for NHWC format.\");let a=x.computeStrides(t.kernelShape);i.push({type:12,data:a},{type:12,data:t.pads},{type:12,data:t.strides}),s.push({name:\"kernelStrides\",type:\"u32\",length:a.length},{name:\"pads\",type:\"u32\",length:t.pads.length},{name:\"strides\",type:\"u32\",length:t.strides.length});let u=t.pads.reduce((d,l)=>d+l);return[i,s,!!u,!1,!1]}},Pa=(e,t,n,r,o,i,s,a,u,d,l,c)=>{let p=o.format===\"NHWC\",f=t.type.value,m=C(\"output\",t.type.tensor,r);if(o.kernelShape.length<=2){let h=\"\",b=\"\",y=\"\",g=n-(p?2:1);if(l?h=`\n for (var i: u32 = 0u; i < uniforms.kw; i++) {\n xIndices[${g}] = indices[${g}] * uniforms.sw - uniforms.pwStart + i;\n if (xIndices[${g}] < 0 || xIndices[${g}]\n >= uniforms.x_shape[${g}]) {\n pad++;\n continue;\n }\n let x_val = x[${t.indicesToOffset(\"xIndices\")}];\n ${i}\n }`:h=`\n for (var i: u32 = 0u; i < uniforms.kw; i++) {\n xIndices[${g}] = indices[${g}] * uniforms.sw - uniforms.pwStart + i;\n let x_val = x[${t.indicesToOffset(\"xIndices\")}];\n ${i}\n }`,o.kernelShape.length===2){let w=n-(p?3:2);c?b=`\n for (var j: u32 = 0u; j < uniforms.kh; j++) {\n xIndices[${w}] = indices[${w}] * uniforms.sh - uniforms.phStart + j;\n if (xIndices[${w}] < 0 || xIndices[${w}] >= uniforms.x_shape[${w}]) {\n pad += i32(uniforms.kw);\n continue;\n }\n `:b=`\n for (var j: u32 = 0u; j < uniforms.kh; j++) {\n xIndices[${w}] = indices[${w}] * uniforms.sh - uniforms.phStart + j;\n `,y=`\n }\n `}return`\n ${e.registerUniforms(u).declareVariables(t,m)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n\n let indices = ${m.offsetToIndices(\"global_idx\")};\n var xIndices = ${m.offsetToIndices(\"global_idx\")};\n\n var value = ${f}(${a});\n var pad = 0;\n ${b}\n ${h}\n ${y}\n ${s}\n\n output[global_idx] = value;\n }`}else{if(p)throw new Error(\"Pooling with kernelShape.length > 2 is not supported for NHWC format.\");let h=o.kernelShape.length,b=o.pads.length,y=\"\";return d?y=`\n if (xIndices[j] >= uniforms.x_shape[j]) {\n pad++;\n isPad = true;\n break;\n }\n }\n if (!isPad) {\n let x_val = x[${t.indicesToOffset(\"xIndices\")}];\n ${i}\n }`:y=`\n }\n let x_val = x[${t.indicesToOffset(\"xIndices\")}];\n ${i}\n `,`\n ${e.registerUniforms(u).declareVariables(t,m)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n let indices = ${m.offsetToIndices(\"global_idx\")};\n var xIndices = ${m.offsetToIndices(\"global_idx\")};\n\n var offsets: array<u32, ${h}>;\n\n var value = ${f}(${a});\n var pad = 0;\n var isPad = false;\n\n for (var i: u32 = 0u; i < uniforms.kernelSize; i++) {\n var offset = i;\n for (var j = 0u; j < ${h-1}u; j++) {\n offsets[j] = offset / ${B(\"uniforms.kernelStrides\",\"j\",h)};\n offset -= offsets[j] * ${B(\"uniforms.kernelStrides\",\"j\",h)};\n }\n offsets[${h-1}] = offset;\n\n isPad = false;\n for (var j = ${n-h}u; j < ${n}u; j++) {\n xIndices[j] = indices[j] * ${B(\"uniforms.strides\",`j - ${n-h}u`,h)}\n + offsets[j - ${n-h}u] - ${B(\"uniforms.pads\",\"j - 2u\",b)};\n ${y}\n }\n ${s}\n\n output[global_idx] = value;\n }`}},za=e=>`${e.format};${e.ceilMode};${e.autoPad};${e.kernelShape.length}`,Ic=e=>`${za(e)};${e.countIncludePad}`,Cc=e=>`${za(e)};${e.storageOrder};${e.dilations}`,Ba=e=>({format:e.format,autoPad:[\"NOTSET\",\"VALID\",\"SAME_UPPER\",\"SAME_LOWER\"][e.auto_pad],ceilMode:e.ceil_mode,kernelShape:e.kernel_shape,strides:e.strides,pads:e.pads}),Da=(e,t,n,r)=>{let[o,i]=Ea(t,r,n),s=S(\"x\",t.dataType,t.dims.length),a=s.type.value,u=\"value += x_val;\",d=\"\";o.countIncludePad?d+=`value /= ${a}(uniforms.kernelSize);`:d+=`value /= ${a}(i32(uniforms.kernelSize) - pad);`;let[l,c,p,f,m]=ka(i,o);l.push(...P(t.dims,i));let h=[\"rank\"];return{name:e,shaderCache:{hint:`${r.cacheKey};${p};${f};${m}`,inputDependencies:h},getRunData:()=>({outputs:[{dims:i,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(x.size(i)/64)},programUniforms:l}),getShaderSource:b=>Pa(b,s,t.dims.length,i.length,o,u,d,0,c,p,f,m)}},Oa=e=>{let t=e.count_include_pad!==0,n=Ba(e);if(n.ceilMode!==0)throw new Error(\"using ceil() in shape computation is not yet supported for AveragePool\");let r={countIncludePad:t,...n,cacheKey:\"\"};return{...r,cacheKey:Ic(r)}},Ma=(e,t)=>{mn(e.inputs),e.compute(Da(\"AveragePool\",e.inputs[0],!1,t))},Ua={autoPad:\"\",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[]},Ra=e=>{let t=e.format;return{format:t,...Ua,cacheKey:t}},Va=(e,t)=>{mn(e.inputs),e.compute(Da(\"GlobalAveragePool\",e.inputs[0],!0,t))},Na=(e,t,n,r)=>{let[o,i]=Ea(t,r,n),s=`\n value = max(x_val, value);\n `,a=\"\",u=S(\"x\",t.dataType,t.dims.length),d=[\"rank\"],[l,c,p,f,m]=ka(i,o);return l.push(...P(t.dims,i)),{name:e,shaderCache:{hint:`${r.cacheKey};${p};${f};${m}`,inputDependencies:d},getRunData:()=>({outputs:[{dims:i,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(x.size(i)/64)},programUniforms:l}),getShaderSource:h=>Pa(h,u,t.dims.length,i.length,o,s,a,t.dataType===10?-65504:-1e5,c,p,f,m)}},La=(e,t)=>{mn(e.inputs),e.compute(Na(\"MaxPool\",e.inputs[0],!1,t))},Ga=e=>{let t=e.storage_order,n=e.dilations,r=Ba(e);if(t!==0)throw new Error(\"column major storage order is not yet supported for MaxPool\");if(r.ceilMode!==0)throw new Error(\"using ceil() in shape computation is not yet supported for MaxPool\");let o={storageOrder:t,dilations:n,...r,cacheKey:\"\"};return{...o,cacheKey:Cc(o)}},Wa=e=>{let t=e.format;return{format:t,...Ua,cacheKey:t}},Ha=(e,t)=>{mn(e.inputs),e.compute(Na(\"GlobalMaxPool\",e.inputs[0],!0,t))}});var Ec,kc,Fa,Ka,ja=k(()=>{\"use strict\";L();F();ie();j();Ec=(e,t)=>{if(e.length<2||e.length>3)throw new Error(\"DequantizeLinear requires 2 or 3 inputs.\");if(e.length===3&&e[1].dims===e[2].dims)throw new Error(\"x-scale and x-zero-point must have the same shape.\");if(e.length===3&&e[0].dataType!==e[2].dataType)throw new Error(\"x and x-zero-point must have the same data type.\");if(e[0].dataType===6&&e.length>2)throw new Error(\"In the case of dequantizing int32 there is no zero point.\");if(e[1].dims.length!==0&&e[1].dims.length!==1&&e[1].dims.length!==e[0].dims.length)throw new Error(\"scale input must be a scalar, a 1D tensor, or have the same rank as the input tensor.\");if(e.length>2){if(e[0].dataType!==e[2].dataType)throw new Error(\"x and x-zero-point must have the same data type.\");if(e[1].dims.length!==e[2].dims.length)throw new Error(\"scale and zero-point inputs must have the same rank.\");if(!e[1].dims.map((n,r)=>n===e[2].dims[r]).reduce((n,r)=>n&&r,!0))throw new Error(\"scale and zero-point inputs must have the same shape.\")}if(t.blockSize>0){if(e[1].dims.length===0||e[1].dims.length===1&&e[1].dims[0]===1)throw new Error(\"blockSize must be set only for block quantization.\");if(!e[1].dims.map((o,i)=>i===t.axis||o===e[0].dims[i]).reduce((o,i)=>o&&i,!0))throw new Error(\"For block qunatization, scale input shape to match the input shape except for the axis\");if(e[1].dims.length!==e[0].dims.length)throw new Error(\"For block qunatization the scale input rank must be the same as the x rank.\");let n=e[0].dims[t.axis],r=e[1].dims[t.axis];if(t.blockSize<Math.ceil(n/r)||t.blockSize>Math.ceil(n/(r-1)-1))throw new Error(\"blockSize must be with in the range [ceil(dI / Si), ceil(dI / (Si - 1) - 1)].\")}},kc=(e,t)=>{let n=x.normalizeAxis(t.axis,e[0].dims.length),r=e[0].dataType,o=r===3,i=e[0].dims,s=e[1].dataType,a=x.size(i),u=r===3||r===2,d=u?[Math.ceil(x.size(e[0].dims)/4)]:e[0].dims,l=e[1].dims,c=e.length>2?e[2]:void 0,p=c?u?[Math.ceil(x.size(c.dims)/4)]:c.dims:void 0,f=l.length===0||l.length===1&&l[0]===1,m=f===!1&&l.length===1,h=J(a),b=f&&(!u||h===4),y=b?h:1,g=b&&!u?h:1,_=S(\"input\",u?12:r,d.length,g),w=S(\"scale\",s,l.length),v=c?S(\"zero_point\",u?12:r,p.length):void 0,$=C(\"output\",s,i.length,y),T=[_,w];v&&T.push(v);let I=[d,l];c&&I.push(p);let A=[{type:12,data:a/y},{type:12,data:n},{type:12,data:t.blockSize},...P(...I,i)],z=R=>{let D=[{name:\"output_size\",type:\"u32\"},{name:\"axis\",type:\"u32\"},{name:\"block_size\",type:\"u32\"}];return`\n ${R.registerUniforms(D).declareVariables(...T,$)}\n ${R.mainStart()}\n ${R.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n let output_indices = ${$.offsetToIndices(\"global_idx\")};\n\n // Set input x\n ${u?`\n let input = ${_.getByOffset(\"global_idx / 4\")};\n let x_vec = ${o?\"unpack4xI8(input)\":\"unpack4xU8(input)\"};\n let x_value = ${y===1?\"x_vec[global_idx % 4]\":\"x_vec\"};`:`let x_value = ${_.getByOffset(\"global_idx\")};`};\n\n // Set scale input\n ${f?`let scale_value= ${w.getByOffset(\"0\")}`:m?`\n let scale_index = ${$.indicesGet(\"output_indices\",\"uniforms.axis\")};\n let scale_value= ${w.getByOffset(\"scale_index\")};`:`\n var scale_indices: ${w.type.indices} = output_indices;\n let index = ${w.indicesGet(\"scale_indices\",\"uniforms.axis\")} / uniforms.block_size;\n ${w.indicesSet(\"scale_indices\",\"uniforms.axis\",\"index\")};\n let scale_value= ${w.getByIndices(\"scale_indices\")};`};\n\n // Set zero-point input\n ${v?f?u?`\n let zero_point_input = ${v.getByOffset(\"0\")};\n let zero_point_vec = ${o?\"unpack4xI8(zero_point_input)\":\"unpack4xU8(zero_point_input)\"};\n let zero_point_value= zero_point_vec[0]`:`let zero_point_value = ${v.getByOffset(\"0\")}`:m?u?`\n let zero_point_index = ${$.indicesGet(\"output_indices\",\"uniforms.axis\")};\n let zero_point_input = ${v.getByOffset(\"zero_point_index / 4\")};\n let zero_point_vec = ${o?\"unpack4xI8(zero_point_input)\":\"unpack4xU8(zero_point_input)\"};\n let zero_point_value = zero_point_vec[zero_point_index % 4]`:`\n let zero_point_index = ${$.indicesGet(\"output_indices\",\"uniforms.axis\")};\n let zero_point_value = ${v.getByOffset(\"zero_point_index\")};`:u?`\n let zero_point_offset = ${w.indicesToOffset(\"scale_indices\")};\n let zero_point_input = ${v.getByOffset(\"zero_point_offset / 4\")};\n let zero_point_vec = ${o?\"unpack4xI8(zero_point_input)\":\"unpack4xU8(zero_point_input)\"};\n let zero_point_value = zero_point_vec[zero_point_offset % 4];`:`let zero_point_value = ${v.getByIndices(\"scale_indices\")};`:`let zero_point_value = ${u?o?\"i32\":\"u32\":_.type.value}(0);`};\n // Compute and write output\n ${$.setByOffset(\"global_idx\",`${$.type.value}(x_value - zero_point_value) * scale_value`)};\n }`};return{name:\"DequantizeLinear\",shaderCache:{hint:t.cacheKey,inputDependencies:v?[\"rank\",\"rank\",\"rank\"]:[\"rank\",\"rank\"]},getShaderSource:z,getRunData:()=>({outputs:[{dims:i,dataType:s}],dispatchGroup:{x:Math.ceil(a/y/64),y:1,z:1},programUniforms:A})}},Fa=(e,t)=>{Ec(e.inputs,t),e.compute(kc(e.inputs,t))},Ka=e=>G({axis:e.axis,blockSize:e.blockSize})});var Pc,zc,Za,Qa=k(()=>{\"use strict\";_e();L();j();Pc=(e,t,n)=>{let r=e===t,o=e<t&&n<0,i=e>t&&n>0;if(r||o||i)throw new Error(\"Range these inputs' contents are invalid.\")},zc=(e,t,n,r)=>{let o=Math.abs(Math.ceil((t-e)/n)),i=[o],s=o,a=[{type:12,data:s},{type:r,data:e},{type:r,data:n},...P(i)],u=d=>{let l=C(\"output\",r,i.length),c=l.type.value,p=[{name:\"outputSize\",type:\"u32\"},{name:\"start\",type:c},{name:\"delta\",type:c}];return`\n ${d.registerUniforms(p).declareVariables(l)}\n ${d.mainStart()}\n ${d.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n output[global_idx] = uniforms.start + ${c}(global_idx) * uniforms.delta;\n }`};return{name:\"Range\",shaderCache:{hint:`${r}`},getShaderSource:u,getRunData:()=>({outputs:[{dims:i,dataType:r}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:a})}},Za=e=>{let t=0,n=0,r=0;e.inputs[0].dataType===6?(t=e.inputs[0].getInt32Array()[0],n=e.inputs[1].getInt32Array()[0],r=e.inputs[2].getInt32Array()[0]):e.inputs[0].dataType===1&&(t=e.inputs[0].getFloat32Array()[0],n=e.inputs[1].getFloat32Array()[0],r=e.inputs[2].getFloat32Array()[0]),te.webgpu.validateInputContent&&Pc(t,n,r),e.compute(zc(t,n,r,e.inputs[0].dataType),{inputs:[]})}});var Bc,Dc,Xa,Ya,Ja=k(()=>{\"use strict\";L();F();ie();j();Bc=(e,t,n,r)=>{if(e!==\"none\"&&r!==\"i32\"&&r!==\"u32\"&&r!==\"f32\")throw new Error(`Input ${r} is not supported with reduction ${e}.`);let o=`{\n var oldValue = 0;\n loop {\n let newValueF32 =`,i=`;\n let newValue = bitcast<i32>(newValueF32);\n let res = atomicCompareExchangeWeak(&${t}, oldValue, newValue);\n if res.exchanged {\n break;\n }\n oldValue = res.old_value;\n }\n }`;switch(e){case\"none\":return`${t}=${n};`;case\"add\":return r===\"i32\"||r===\"u32\"?`atomicAdd(&${t}, bitcast<${r}>(${n}));`:`\n ${o}bitcast<${r}>(oldValue) + (${n})${i}`;case\"max\":return r===\"i32\"||r===\"u32\"?`atomicMax(&${t}, bitcast<${r}>(${n}));`:`\n ${o}max(bitcast<f32>(oldValue), (${n}))${i}`;case\"min\":return r===\"i32\"||r===\"u32\"?`atomicMin(&${t}, bitcast<${r}>(${n}));`:`${o}min(bitcast<${r}>(oldValue), (${n}))${i}`;case\"mul\":return`${o}(bitcast<${r}>(oldValue) * (${n}))${i}`;default:throw new Error(`Reduction ${e} is not supported.`)}},Dc=(e,t)=>{let n=e[0].dims,r=e[1].dims,o=n,i=1,s=Math.ceil(x.sizeToDimension(r,r.length-1)/i),a=r[r.length-1],u=x.sizeFromDimension(n,a),d=[{type:12,data:s},{type:12,data:a},{type:12,data:u},...P(e[1].dims,e[2].dims,o)],l=c=>{let p=S(\"indices\",e[1].dataType,e[1].dims.length),f=S(\"updates\",e[2].dataType,e[2].dims.length,i),m=t.reduction!==\"none\"&&t.reduction!==\"\"?To(\"output\",e[0].dataType,o.length):C(\"output\",e[0].dataType,o.length,i);return`\n ${c.registerUniform(\"output_size\",\"u32\").registerUniform(\"last_index_dimension\",\"u32\").registerUniform(\"num_updates_elements\",\"u32\").declareVariables(p,f,m)}\n ${c.mainStart()}\n ${c.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n var data_offset = 0u;\n let indices_start = uniforms.last_index_dimension * global_idx;\n let indices_end = indices_start + uniforms.last_index_dimension;\n for (var i = indices_start; i < indices_end; i++) {\n var index = i32(indices[i].x);\n ${e[0].dims.length===1?`\n let element_count_dim = uniforms.output_strides;\n let dim_value = uniforms.output_shape;`:`\n let element_count_dim = uniforms.output_strides[i - indices_start];\n let dim_value = uniforms.output_shape[i - indices_start];`}\n if (index >= 0) {\n if (index >= i32(dim_value)) {\n index = i32(dim_value - 1);\n }\n } else {\n if (index < -i32(dim_value)) {\n index = 0;\n } else {\n index += i32(dim_value);\n }\n }\n data_offset += u32((u32(index) * element_count_dim));\n }\n\n for (var i = 0u; i < uniforms.num_updates_elements; i++) {\n let value = updates[uniforms.num_updates_elements * global_idx + i];\n ${Bc(t.reduction,\"output[data_offset + i]\",\"value\",m.type.value)}\n }\n\n }`};return{name:\"ScatterND\",shaderCache:{hint:`${t.cacheKey}_${t.reduction}`,inputDependencies:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:d}),getShaderSource:l}},Xa=e=>G({reduction:e.reduction}),Ya=(e,t)=>{e.compute(Dc(e.inputs,t),{inputs:[e.inputs[1],e.inputs[2]],outputs:[]})}});var Oc,Mc,Uc,eu,Rc,Vc,Nc,Lc,Gc,Wc,Hc,qc,tu,Fc,Kc,jc,Zc,Qc,nu,ru,ou=k(()=>{\"use strict\";L();F();ie();j();Oc=(e,t)=>{if(e.every(n=>n>0||(()=>{throw new Error(\"Resize requires scales input values to be positive\")})),e.length>0){if(t.mode===\"linear\"){if(!(e.length===2||e.length===3||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1||e.length===5&&e[0]===1&&e[1]===1))throw new Error(`For linear mode, Resize requires scales to be 2D, 3D, 4D with either two outermost or one innermost and\n one outermost scale values equal to 1, or 5D with two outermost scale values equal to 1`)}else if(t.mode===\"cubic\"&&!(e.length===2||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1))throw new Error(\"Resize requires scales input size to be 2 or 4 for cubic mode\")}},Mc=(e,t,n)=>{t.every(o=>o>=0&&o<n||(()=>{throw new Error(\"Resize requires axes input values to be positive and less than rank\")}));let r=new Array(n).fill(1);return t.forEach((o,i)=>r[o]=e[i]),r},Uc=(e,t,n,r,o,i)=>{let[s,a,u]=n>10?[1,2,3]:[-1,e.length>1?1:-1,-1],d=e[0].dims.length;if(s>0&&e.length>s&&e[s].dims.length>0)e[s].getFloat32Array().forEach(l=>i.push(l));else if(t.coordinateTransformMode===\"tf_crop_and_resize\")throw new Error(\"Resize requires RoI input to be specified when coordinateTransformMode is tfCropAndResize\");if(a>0&&e.length>a&&e[a].dims.length===1&&e[a].dims[0]>0){if(e[a].getFloat32Array().forEach(l=>r.push(l)),r.length!==0&&r.length!==d&&n>=18&&r.length!==t.axes.length)throw new Error(\"Resize requires scales input size to be same as input rank or axes size for opset 18 and up\");Oc(r,t),t.axes.length>0&&Mc(r,t.axes,d).forEach((l,c)=>r[c]=l)}if(u>0&&e.length>u&&e[u].dims.length===1&&e[u].dims[0]>0&&(e[u].getBigInt64Array().forEach(l=>o.push(Number(l))),o.length!==0&&o.length!==d&&n>=18&&o.length!==t.axes.length))throw new Error(\"Resize requires sizes input size to be same as input rank or axes size for opset 18 and up\");if(t.axes.length>0){if(r.length!==0&&r.length!==t.axes.length)throw new Error('Resize requires \"scales\" input size to be of axes rank when axes attributes is specified');if(o.length!==0&&o.length!==t.axes.length)throw new Error('Resize requires \"sizes\" input size to be of rank axes rank when axes attributes is specified')}if(typeof r<\"u\"&&typeof o<\"u\"&&r.length>0&&o.length>d)throw new Error(\"Resize requires only of scales or sizes to be specified\")},eu=(e,t,n,r)=>`\n // The whole part and the fractional part are calculated separately due to inaccuracy of floating\n // point division. As an example, f32(21) / f32(7) may evaluate to 2.99... instead of 3, causing an\n // offset-by-one error later in floor().\n let big = (${e}) * (${t});\n let whole = ${r}(big / (${n}));\n let fract = ${r}(big % (${n})) / ${r}(${n});\n return whole + fract;\n`,Rc=(e,t)=>`fn getOriginalCoordinateFromResizedCoordinate(xResized: u32, xScale: f32, lengthResized: u32,\n lengthOriginal: u32, roiStart: f32, roiEnd: f32) -> ${t} { `+(()=>{switch(e){case\"asymmetric\":return`\n if (xScale < 1.0 || floor(xScale) != xScale) {\n return ${t}(xResized) / ${t}(xScale);\n } else {\n ${eu(\"xResized\",\"lengthOriginal\",\"lengthResized\",t)}\n }\n `;case\"pytorch_half_pixel\":return`if (lengthResized > 1) {\n return (${t}(xResized) + 0.5) / ${t}(xScale) - 0.5;\n } else {\n return 0.0;\n }`;case\"tf_half_pixel_for_nn\":return`return (${t}(xResized) + 0.5) / ${t}(xScale);`;case\"align_corners\":return`if (lengthResized == 1) {\n return 0.0;\n } else {\n ${eu(\"xResized\",\"lengthOriginal - 1\",\"lengthResized - 1\",t)}\n }`;case\"tf_crop_and_resize\":return`if (lengthResized > 1) {\n return ${t}(roiStart) * ${t}(lengthOriginal - 1) +\n (${t}(xResized) * ${t}(roiEnd - roiStart) * ${t}(lengthOriginal - 1)) /\n ${t}(lengthResized - 1);\n } else {\n return 0.5 * ${t}(roiStart + roiEnd) * ${t}(lengthOriginal - 1);\n }`;case\"half_pixel_symmetric\":return`const outputWidth = ${t}xScale * ${t}(lengthResized);\n const adjustment = ${t}(lengthResized) / outputWidth;\n const center = ${t}(lengthOriginal) / 2;\n const offset = center * (1 - adjustment);\n return offset + ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;case\"half_pixel\":return`return ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;default:throw new Error(`Coordinate transform mode ${e} is not supported`)}})()+\"}\",Vc=(e,t,n)=>`fn getNearestPixelFromOriginal(xOriginal: ${n}, isDownSample: bool) -> ${n} {`+(()=>{switch(e){case\"round_prefer_ceil\":return\"if (fract(xOriginal) == 0.5) { return ceil(xOriginal); } else { return round(xOriginal); }\";case\"floor\":return\"return floor(xOriginal);\";case\"ceil\":return\"return ceil(xOriginal);\";case\"round_prefer_floor\":return\"if (fract(xOriginal) == 0.5) { return floor(xOriginal); } else { return round(xOriginal); }\";case\"simple\":default:if(t<11)return\"if (isDownSample) { return ceil(xOriginal); } else { return xOriginal; }\";throw new Error(`Nearest mode ${e} is not supported`)}})()+\"}\",Nc=(e,t,n)=>{let r=new Array(n).fill(0).concat(new Array(n).fill(1)),o=e.length===0?r:e.slice();return t.length>0?(t.forEach((i,s)=>{r[i]=o[s],r[s+n]=o[t.length+s]}),r):o},Lc=(e,t,n,r)=>{let o=[];if(n.length>0)if(r.length>0){if(e.forEach(i=>o.push(i)),Math.max(...r)>e.length)throw new Error(\"axes is out of bound\");r.forEach((i,s)=>o[i]=n[s])}else n.forEach(i=>o.push(i));else{if(t.length===0)throw new Error(\"Resize requires either scales or sizes.\");o=e.map((i,s)=>Math.round(i*t[s]))}return o},Gc=(e,t,n)=>{let r=(()=>{switch(n.keepAspectRatioPolicy){case\"not_larger\":return n.axes.length>0?Math.min(...n.axes.map(i=>t[i]),Number.MAX_VALUE):Math.min(...t,Number.MAX_VALUE);case\"not_smaller\":return n.axes.length>0?Math.max(...n.axes.map(i=>t[i]),Number.MIN_VALUE):Math.max(...t,Number.MIN_VALUE);default:throw new Error(`Keep aspect ratio policy ${n.keepAspectRatioPolicy} is not supported`)}})();t.fill(1,0,t.length);let o=e.slice();return n.axes.length>0?(n.axes.forEach(i=>t[i]=r),n.axes.forEach(i=>o[i]=Math.round(e[i]*t[i]))):(t.fill(r,0,t.length),o.forEach((i,s)=>o[s]=Math.round(i*t[s]))),o},Wc=(e,t,n,r,o)=>`\n fn calculateOriginalIndicesFromOutputIndices(output_indices: ${e.type.indices}) -> array<${e.type.value}, ${n.length}> {\n var original_indices: array<${e.type.value}, ${n.length}>;\n for (var i:u32 = 0; i < ${n.length}; i++) {\n var output_index = ${e.indicesGet(\"output_indices\",\"i\")};\n var scale = ${B(\"uniforms.scales\",\"i\",r)};\n var roi_low = ${B(\"uniforms.roi\",\"i\",o)};\n var roi_hi = ${B(\"uniforms.roi\",`i + ${t.length}`,o)};\n if (scale == 1.0) {\n original_indices[i] = ${e.type.value}(output_index);\n } else {\n var input_shape_i = ${B(\"uniforms.input_shape\",\"i\",t.length)};\n var output_shape_i = ${B(\"uniforms.output_shape\",\"i\",n.length)};\n original_indices[i] = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\n input_shape_i, roi_low, roi_hi);\n }\n }\n return original_indices;\n }`,Hc=(e,t,n,r,o,i,s)=>`\n fn calculateInputIndicesFromOutputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\n var input_indices: ${e.type.indices};\n for (var i:u32 = 0; i < ${r.length}; i++) {\n var output_index = ${t.indicesGet(\"output_indices\",\"i\")};\n var input_index: u32;\n var scale = ${B(\"uniforms.scales\",\"i\",o)};\n if (scale == 1.0) {\n input_index = output_index;\n } else {\n var roi_low = ${B(\"uniforms.roi\",\"i\",i)};\n var roi_hi = ${B(\"uniforms.roi\",`i + ${n.length}`,i)};\n var input_shape_i = ${B(\"uniforms.input_shape\",\"i\",n.length)};\n var output_shape_i = ${B(\"uniforms.output_shape\",\"i\",r.length)};\n var original_idx = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\n input_shape_i, roi_low, roi_hi);\n if (!${s} || (original_idx >= 0 && original_idx < ${t.type.value}(input_shape_i))) {\n if (original_idx < 0) {\n input_index = 0;\n } else if (original_idx > ${t.type.value}(input_shape_i - 1)) {\n input_index = input_shape_i - 1;\n } else {\n input_index = u32(getNearestPixelFromOriginal(original_idx, scale < 1));\n }\n } else {\n input_index = u32(original_idx);\n }\n }\n ${e.indicesSet(\"input_indices\",\"i\",\"input_index\")}\n }\n return input_indices;\n }`,qc=(e,t)=>`\n fn checkInputIndices(input_indices: ${e.type.indices}) -> bool {\n for (var i:u32 = 0; i < ${t.length}; i++) {\n var input_index = ${e.indicesGet(\"input_indices\",\"i\")};\n if (input_index < 0 || input_index >= ${B(\"uniforms.input_shape\",\"i\",t.length)}) {\n return false;\n }\n }\n return true;\n }`,tu=(e,t,n,r)=>e.rank>r?`\n ${e.indicesSet(\"input_indices\",t,\"channel\")};\n ${e.indicesSet(\"input_indices\",n,\"batch\")};\n`:\"\",Fc=(e,t,n,r,o)=>{let[s,a,u,d]=n.length===2?[-1,0,1,-1]:[0,2,3,1],l=e.type.value;return`\n fn getInputValue(batch: u32, channel: u32, row: u32, col: u32) -> ${l} {\n var input_indices: ${e.type.indices};\n ${e.indicesSet(\"input_indices\",a,`max(0, min(row, ${n[a]} - 1))`)};\n ${e.indicesSet(\"input_indices\",u,`max(0, min(col, ${n[u]} - 1))`)};\n ${tu(e,d,s,2)}\n return ${e.getByIndices(\"input_indices\")};\n }\n\n fn bilinearInterpolation(output_indices: ${t.type.indices}) -> ${l} {\n var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\n var row:${l} = originalIndices[${a}];\n var col:${l} = originalIndices[${u}];\n ${r?`if (row < 0 || row > (${n[a]} - 1) || col < 0 || col > (${n[u]} - 1)) {\n return ${o};\n }`:\"\"};\n row = max(0, min(row, ${n[a]} - 1));\n col = max(0, min(col, ${n[u]} - 1));\n var row1: u32 = u32(row);\n var col1: u32 = u32(col);\n var row2: u32 = u32(row + 1);\n var col2: u32 = u32(col + 1);\n var channel: u32 = ${n.length>2?`u32(originalIndices[${d}])`:\"0\"};\n var batch: u32 = ${n.length>2?`u32(originalIndices[${s}])`:\"0\"};\n var x11: ${l} = getInputValue(batch, channel, row1, col1);\n var x12: ${l} = getInputValue(batch, channel, row1, col2);\n var x21: ${l} = getInputValue(batch, channel, row2, col1);\n var x22: ${l} = getInputValue(batch, channel, row2, col2);\n var dx1: ${l} = abs(row - ${l}(row1));\n var dx2: ${l} = abs(${l}(row2) - row);\n var dy1: ${l} = abs(col - ${l}(col1));\n var dy2: ${l} = abs(${l}(col2) - col);\n if (row1 == row2) {\n dx1 = 0.5;\n dx2 = 0.5;\n }\n if (col1 == col2) {\n dy1 = 0.5;\n dy2 = 0.5;\n }\n return (x11 * dx2 * dy2 + x12 * dx2 * dy1 + x21 * dx1 * dy2 + x22 * dx1 * dy1);\n }`},Kc=(e,t,n,r,o,i,s,a,u,d)=>{let l=n.length===2,c=!0,[p,f]=l?[0,1]:c?[2,3]:[1,2],m=e.type.value,h=b=>{let y=b===p?\"row\":\"col\";return`\n fn ${y}CubicInterpolation(input_indices: ${e.type.indices}, output_indices: ${t.type.indices}) -> ${m} {\n var output_index = ${t.indicesGet(\"output_indices\",b)};\n var originalIdx: ${m} = getOriginalCoordinateFromResizedCoordinate(output_index, ${o[b]},\n ${r[b]}, ${n[b]}, ${i[b]}, ${i[b]} + ${n.length});\n var fractOriginalIdx: ${m} = originalIdx - floor(originalIdx);\n var coefs = getCubicInterpolationCoefs(fractOriginalIdx);\n\n if (${a} && (originalIdx < 0 || originalIdx > (${n[b]} - 1))) {\n return ${u};\n }\n var data: array<${m}, 4> = array<${m}, 4>(0.0, 0.0, 0.0, 0.0);\n for (var i: i32 = -1; i < 3; i++) {\n var ${y}: ${m} = originalIdx + ${m}(i);\n if (${y} < 0 || ${y} >= ${n[b]}) {\n ${d?`coefs[i + 1] = 0.0;\n continue;`:a?`return ${u};`:`${y} = max(0, min(${y}, ${n[b]} - 1));`};\n }\n var input_indices_copy: ${e.type.indices} = input_indices;\n ${e.indicesSet(\"input_indices_copy\",b,`u32(${y})`)};\n data[i + 1] = ${b===p?e.getByIndices(\"input_indices_copy\"):\"rowCubicInterpolation(input_indices_copy, output_indices)\"};\n }\n return cubicInterpolation1D(data, coefs);\n }`};return`\n ${h(p)};\n ${h(f)};\n fn getCubicInterpolationCoefs(s: ${m}) -> array<${m}, 4> {\n var absS = abs(s);\n var coeffs: array<${m}, 4> = array<${m}, 4>(0.0, 0.0, 0.0, 0.0);\n var oneMinusAbsS: ${m} = 1.0 - absS;\n var twoMinusAbsS: ${m} = 2.0 - absS;\n var onePlusAbsS: ${m} = 1.0 + absS;\n coeffs[0] = ((${s} * onePlusAbsS - 5 * ${s}) * onePlusAbsS + 8 * ${s}) * onePlusAbsS - 4 * ${s};\n coeffs[1] = ((${s} + 2) * absS - (${s} + 3)) * absS * absS + 1;\n coeffs[2] = ((${s} + 2) * oneMinusAbsS - (${s} + 3)) * oneMinusAbsS * oneMinusAbsS + 1;\n coeffs[3] = ((${s} * twoMinusAbsS - 5 * ${s}) * twoMinusAbsS + 8 * ${s}) * twoMinusAbsS - 4 * ${s};\n return coeffs;\n }\n\n fn cubicInterpolation1D(x: array<${m}, 4>, coefs: array<${m}, 4>) -> ${m} {\n var coefsSum: ${m} = coefs[0] + coefs[1] + coefs[2] + coefs[3];\n return (x[0] * coefs[0] + x[1] * coefs[1]+ x[2] * coefs[2]+ x[3] * coefs[3]) / coefsSum;\n }\n\n fn bicubicInterpolation(output_indices: ${t.type.indices}) -> ${m} {\n var input_indices: ${e.type.indices} = output_indices;\n return colCubicInterpolation(input_indices, output_indices);\n }\n `},jc=(e,t,n,r,o)=>{let[s,a,u,d,l]=n.length===3?[-1,0,1,2,-1]:[0,2,3,4,1],c=e.type.value;return`\n fn getInputValue(batch: u32, channel: u32, depth:u32, height: u32, width: u32) -> ${c} {\n var input_indices: ${e.type.indices};\n ${e.indicesSet(\"input_indices\",a,`max(0, min(depth, ${n[a]} - 1))`)};\n ${e.indicesSet(\"input_indices\",u,`max(0, min(height, ${n[u]} - 1))`)};\n ${e.indicesSet(\"input_indices\",d,`max(0, min(width, ${n[d]} - 1))`)};\n ${tu(e,l,s,3)}\n return ${e.getByIndices(\"input_indices\")};\n }\n\n fn trilinearInterpolation(output_indices: ${t.type.indices}) -> ${c} {\n var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\n var depth:${c} = originalIndices[${a}];\n var height:${c} = originalIndices[${u}];\n var width:${c} = originalIndices[${d}];\n ${r?`if (depth < 0 || depth > (${n[a]} - 1) || height < 0 || height > (${n[u]} - 1) || width < 0 || (width > ${n[d]} - 1)) {\n return ${o};\n }`:\"\"};\n\n depth = max(0, min(depth, ${n[a]} - 1));\n height = max(0, min(height, ${n[u]} - 1));\n width = max(0, min(width, ${n[d]} - 1));\n var depth1: u32 = u32(depth);\n var height1: u32 = u32(height);\n var width1: u32 = u32(width);\n var depth2: u32 = u32(depth + 1);\n var height2: u32 = u32(height + 1);\n var width2: u32 = u32(width + 1);\n var channel: u32 = ${n.length>3?`u32(originalIndices[${l}])`:\"0\"};\n var batch: u32 = ${n.length>3?`u32(originalIndices[${s}])`:\"0\"};\n\n var x111: ${c} = getInputValue(batch, channel, depth1, height1, width1);\n var x112: ${c} = getInputValue(batch, channel, depth1, height1, width2);\n var x121: ${c} = getInputValue(batch, channel, depth1, height2, width1);\n var x122: ${c} = getInputValue(batch, channel, depth1, height2, width2);\n var x211: ${c} = getInputValue(batch, channel, depth2, height1, width1);\n var x212: ${c} = getInputValue(batch, channel, depth2, height1, width2);\n var x221: ${c} = getInputValue(batch, channel, depth2, height2, width1);\n var x222: ${c} = getInputValue(batch, channel, depth2, height2, width2);\n var dx1: ${c} = abs(depth - ${c}(depth1));\n var dx2: ${c} = abs(${c}(depth2) - depth);\n var dy1: ${c} = abs(height - ${c}(height1));\n var dy2: ${c} = abs(${c}(height2) - height);\n var dz1: ${c} = abs(width - ${c}(width1));\n var dz2: ${c} = abs(${c}(width2) - width);\n if (depth1 == depth2) {\n dx1 = 0.5;\n dx2 = 0.5;\n }\n if (height1 == height2) {\n dy1 = 0.5;\n dy2 = 0.5;\n }\n if (width1 == width2) {\n dz1 = 0.5;\n dz2 = 0.5;\n }\n return (x111 * dx2 * dy2 * dz2 + x112 * dx2 * dy2 * dz1 + x121 * dx2 * dy1 *dz2 + x122 * dx2 * dy1 * dz1 +\n x211 * dx1 * dy2 * dz2 + x212 * dx1 * dy2 * dz1 + x221 * dx1 * dy1 *dz2 + x222 * dx1 * dy1 * dz1);\n }`},Zc=(e,t,n,r,o,i)=>{let s=e.dims,a=Nc(i,t.axes,s.length),u=Lc(s,r,o,t.axes),d=r.slice();r.length===0&&(d=s.map((g,_)=>g===0?1:u[_]/g),t.keepAspectRatioPolicy!==\"stretch\"&&(u=Gc(s,d,t)));let l=C(\"output\",e.dataType,u.length),c=S(\"input\",e.dataType,s.length),p=x.size(u),f=s.length===u.length&&s.every((g,_)=>g===u[_]),m=t.coordinateTransformMode===\"tf_crop_and_resize\",h=t.extrapolationValue,b=c.type.value,y=g=>`\n ${f?\"\":`\n ${Rc(t.coordinateTransformMode,b)};\n ${(()=>{switch(t.mode){case\"nearest\":return`\n ${qc(c,s)};\n ${Vc(t.nearestMode,n,b)};\n ${Hc(c,l,s,u,d.length,a.length,m)};\n `;case\"linear\":return`\n ${Wc(l,s,u,d.length,a.length)};\n ${(()=>{if(s.length===2||s.length===4)return`${Fc(c,l,s,m,h)}`;if(s.length===3||s.length===5)return`${jc(c,l,s,m,h)}`;throw Error(\"Linear mode only supports input dims 2, 3, 4 and 5 are supported in linear mode.\")})()};\n `;case\"cubic\":return`\n ${(()=>{if(s.length===2||s.length===4)return`${Kc(c,l,s,u,d,a,t.cubicCoeffA,m,t.extrapolationValue,t.excludeOutside)}`;throw Error(\"Cubic mode only supports input dims 2 and 4 are supported in linear mode.\")})()};\n `;default:throw Error(\"Invalid resize mode\")}})()};\n `}\n ${g.registerUniform(\"output_size\",\"u32\").registerUniform(\"scales\",\"f32\",d.length).registerUniform(\"roi\",\"f32\",a.length).declareVariables(c,l)}\n ${g.mainStart()}\n ${g.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n ${f?\"output[global_idx] = input[global_idx];\":`\n let output_indices = ${l.offsetToIndices(\"global_idx\")};\n var input_indices: ${c.type.indices};\n ${(()=>{switch(t.mode){case\"nearest\":return`input_indices = calculateInputIndicesFromOutputIndices(output_indices);\n if (checkInputIndices(input_indices)) {\n output[global_idx] = ${c.getByIndices(\"input_indices\")};\n } else {\n output[global_idx] = ${t.extrapolationValue};\n }`;case\"linear\":return`output[global_idx] = ${s.length===2||s.length===4?\"bilinearInterpolation\":\"trilinearInterpolation\"}(output_indices);`;case\"cubic\":return\"output[global_idx] = bicubicInterpolation(output_indices);\";default:throw Error(`Unsupported resize mode: ${t.mode}`)}})()};\n`}\n }`;return{name:\"Resize\",shaderCache:{hint:`${t.cacheKey}|${n}|${d.length>0?t.mode===\"cubic\"?d:d.length:\"\"}|${o.length>0?o:\"\"}|${a.length>0?a:\"\"}|${f}|${t.mode===\"nearest\"?s.length:s}`,inputDependencies:[\"rank\"]},getShaderSource:y,getRunData:()=>({outputs:[{dims:u,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:[{type:12,data:p},{type:1,data:d},{type:1,data:a},...P(s,u)]})}},Qc=e=>{let t=e.customDataBuffer;return new Uint32Array(t,t.byteOffset,1)[0]},nu=(e,t)=>{let n=[],r=[],o=[],i=Qc(e);if(t.antialias!==0)throw Error(\"Only default value (0) for Antialias attribute is supported\");Uc(e.inputs,t,i,n,r,o),e.compute(Zc(e.inputs[0],t,i,n,r,o),{inputs:[0]})},ru=e=>{let t=e.antialias,n=e.axes,r=e.coordinateTransformMode,o=e.cubicCoeffA,i=e.excludeOutside!==0,s=e.extrapolationValue,a=e.keepAspectRatioPolicy,u=e.mode,d=e.nearestMode===\"\"?\"simple\":e.nearestMode;return G({antialias:t,axes:n,coordinateTransformMode:r,cubicCoeffA:o,excludeOutside:i,extrapolationValue:s,keepAspectRatioPolicy:a,mode:u,nearestMode:d})}});var Xc,Yc,iu,su=k(()=>{\"use strict\";L();F();j();Xc=e=>{if(!e||e.length<3)throw new Error(\"layerNorm requires at least 3 inputs.\");let t=e[0],n=e[1],r=e[2];if(t.dataType!==n.dataType||t.dataType!==r.dataType)throw new Error(\"All inputs must have the same data type\");if(t.dims.length!==3&&t.dims.length!==2)throw new Error(\"Input must be 2D or 3D\");if(n.dims.length!==3&&n.dims.length!==2)throw new Error(\"Skip must be 2D or 3D\");let o=t.dims[t.dims.length-1],i=t.dims[t.dims.length-2];if(n.dims[n.dims.length-1]!==o)throw new Error(\"Skip must have the same hidden size as input\");if(n.dims[n.dims.length-2]!==i)throw new Error(\"Skip must have the same sequence length as input\");if(r.dims.length!==1)throw new Error(\"Gamma must be 1D\");if(r.dims[r.dims.length-1]!==o)throw new Error(\"Gamma must have the same hidden size as input\");if(e.length>3){let s=e[3];if(s.dims.length!==1)throw new Error(\"Beta must be 1D\");if(s.dims[s.dims.length-1]!==o)throw new Error(\"Beta must have the same hidden size as input\")}if(e.length>4){let s=e[4];if(s.dims.length!==1)throw new Error(\"Bias must be 1D\");if(s.dims[s.dims.length-1]!==o)throw new Error(\"Bias must have the same hidden size as input\")}},Yc=(e,t,n,r)=>{let o=t.simplified,i=e[0].dims,s=x.size(i),a=i,u=s,d=i.slice(-1)[0],l=r?i.slice(0,-1).concat(1):[],c=!o&&e.length>3,p=e.length>4,f=r&&n>1,m=r&&n>2,h=n>3,b=64,y=J(d),g=[{type:12,data:u},{type:12,data:y},{type:12,data:d},{type:1,data:t.epsilon}],_=v=>{let $=[{name:\"output_size\",type:\"u32\"},{name:\"components\",type:\"u32\"},{name:\"hidden_size\",type:\"u32\"},{name:\"epsilon\",type:\"f32\"}],T=[S(\"x\",e[0].dataType,e[0].dims,y),S(\"skip\",e[1].dataType,e[1].dims,y),S(\"gamma\",e[2].dataType,e[2].dims,y)];c&&T.push(S(\"beta\",e[3].dataType,e[3].dims,y)),p&&T.push(S(\"bias\",e[4].dataType,e[4].dims,y)),T.push(C(\"output\",e[0].dataType,a,y)),f&&T.push(C(\"mean_output\",1,l)),m&&T.push(C(\"inv_std_output\",1,l)),h&&T.push(C(\"input_skip_bias_sum\",e[0].dataType,a,y));let I=re(e[0].dataType),A=re(1,y);return`\n\n ${v.registerUniforms($).declareVariables(...T)}\n var<workgroup> sum_shared : array<${A}, ${b}>;\n var<workgroup> sum_squared_shared : array<${A}, ${b}>;\n\n ${v.mainStart([b,1,1])}\n let ix = local_id.x;\n let iy = global_id.x / ${b};\n\n let hidden_size_vectorized: u32 = uniforms.hidden_size / uniforms.components;\n var stride = hidden_size_vectorized / ${b};\n let offset = ix * stride + iy * hidden_size_vectorized;\n let offset1d = stride * ix;\n if (ix == ${b-1}) {\n stride = hidden_size_vectorized - stride * ix;\n }\n for (var i: u32 = 0; i < stride; i++) {\n let skip_value = skip[offset + i];\n let bias_value = ${p?\"bias[offset1d + i]\":I+\"(0.0)\"};\n let input_value = x[offset + i];\n let value = input_value + skip_value + bias_value;\n ${h?\"input_skip_bias_sum[offset + i] = value;\":\"\"}\n output[offset + i] = value;\n let f32_value = ${et(I,y,\"value\")};\n sum_shared[ix] += f32_value;\n sum_squared_shared[ix] += f32_value * f32_value;\n }\n workgroupBarrier();\n\n var reduce_size : u32 = ${b};\n for (var curr_size = reduce_size >> 1; curr_size > 0; curr_size = reduce_size >> 1) {\n reduce_size = curr_size + (reduce_size & 1);\n if (ix < curr_size) {\n sum_shared[ix] += sum_shared[ix + reduce_size];\n sum_squared_shared[ix] += sum_squared_shared[ix + reduce_size];\n }\n workgroupBarrier();\n }\n\n let sum = sum_shared[0];\n let square_sum = sum_squared_shared[0];\n let mean = ${Te(\"sum\",y)} / f32(uniforms.hidden_size);\n let inv_std_dev = inverseSqrt(${Te(\"square_sum\",y)} / f32(uniforms.hidden_size) ${o?\"\":\"- mean * mean\"} + uniforms.epsilon);\n ${f?\"mean_output[global_idx] = mean;\":\"\"}\n ${m?\"inv_std_output[global_idx] = inv_std_dev;\":\"\"}\n\n for (var i: u32 = 0; i < stride; i++) {\n output[offset + i] = (output[offset + i] ${o?\"\":`- ${I}(mean)`}) *\n ${I}(inv_std_dev) * gamma[offset1d + i]\n ${c?\"+ beta[offset1d + i]\":\"\"};\n }\n }`},w=[{dims:a,dataType:e[0].dataType}];return n>1&&w.push({dims:l,dataType:1}),n>2&&w.push({dims:l,dataType:1}),n>3&&w.push({dims:i,dataType:e[0].dataType}),{name:\"SkipLayerNormalization\",shaderCache:{hint:`${y};${f};${m};${h}`,inputDependencies:e.map((v,$)=>\"type\")},getShaderSource:_,getRunData:()=>({outputs:w,dispatchGroup:{x:Math.ceil(u/d)},programUniforms:g})}},iu=(e,t)=>{Xc(e.inputs);let r=[0];e.outputCount>1&&r.push(-3),e.outputCount>2&&r.push(-3),e.outputCount>3&&r.push(3),e.compute(Yc(e.inputs,t,e.outputCount,!1),{outputs:r})}});var Jc,fn,ep,au,tp,np,uu,du,lu=k(()=>{\"use strict\";L();F();ie();j();Jc=(e,t)=>{if(!e||e.length<1)throw new Error(\"too few inputs\");if(t.axes.length!==0){if(t.axes.length!==t.starts.length||t.axes.length!==t.ends.length)throw new Error(\"axes, starts and ends must have the same length\")}else if(t.starts.length!==t.ends.length)throw new Error(\"starts and ends must have the same length\");e.slice(1).forEach((n,r)=>{if(e[r+1].dataType!==6&&e[r+1].dataType!==7)throw new Error(`Input ${r} must be an array of int32 or int64`)})},fn=(e,t)=>{let n=[];if(e.length>t)if(e[t].dataType===7)e[t].getBigInt64Array().forEach(r=>n.push(Number(r)));else if(e[t].dataType===6)e[t].getInt32Array().forEach(r=>n.push(Number(r)));else throw new Error(`Input ${t} must be an array of int32 or int64`);return n},ep=(e,t)=>{if(e.length>1){let n=fn(e,1),r=fn(e,2),o=fn(e,3);return o.length===0&&(o=[...Array(e[0].dims.length).keys()]),G({starts:n,ends:r,axes:o})}else return t},au=(e,t,n,r,o)=>{let i=e;return e<0&&(i+=n[r[t]]),o[t]<0?Math.max(0,Math.min(i,n[r[t]]-1)):Math.max(0,Math.min(i,n[r[t]]))},tp=(e,t,n)=>`fn calculateInputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\n var input_indices: ${e.type.indices};\n var carry = 0u;\n for (var i = ${n.length-1}; i >= 0; i--) {\n let input_shape_i = ${B(\"uniforms.input_shape\",\"i\",n.length)};\n let steps_i = ${B(\"uniforms.steps\",\"i\",n.length)};\n let signs_i = ${B(\"uniforms.signs\",\"i\",n.length)};\n let starts_i = ${B(\"uniforms.starts\",\"i\",n.length)};\n var output_index = ${t.indicesGet(\"output_indices\",\"i\")};\n var input_index = output_index * steps_i + starts_i + carry;\n carry = input_index / input_shape_i;\n input_index = input_index % input_shape_i;\n if (signs_i < 0) {\n input_index = input_shape_i - input_index - 1u + starts_i;\n }\n ${e.indicesSet(\"input_indices\",\"i\",\"input_index\")};\n }\n return input_indices;\n }`,np=(e,t)=>{let n=e[0].dims,r=x.size(n),o=t.axes.length>0?x.normalizeAxes(t.axes,n.length):[...Array(n.length).keys()],i=fn(e,4);i.forEach(y=>y!==0||(()=>{throw new Error(\"step cannot be 0\")})),i.length===0&&(i=Array(o.length).fill(1));let s=t.starts.map((y,g)=>au(y,g,n,o,i)),a=t.ends.map((y,g)=>au(y,g,n,o,i));if(o.length!==s.length||o.length!==a.length)throw new Error(\"start, ends and axes should have the same number of elements\");if(o.length!==n.length)for(let y=0;y<n.length;++y)o.includes(y)||(s.splice(y,0,0),a.splice(y,0,n[y]),i.splice(y,0,1));let u=i.map(y=>Math.sign(y));i.forEach((y,g,_)=>{if(y<0){let w=(a[g]-s[g])/y,v=s[g],$=v+w*i[g];s[g]=$,a[g]=v,_[g]=-y}});let d=n.slice(0);o.forEach((y,g)=>{d[y]=Math.ceil((a[y]-s[y])/i[y])});let l={dims:d,dataType:e[0].dataType},c=C(\"output\",e[0].dataType,d.length),p=S(\"input\",e[0].dataType,e[0].dims.length),f=x.size(d),m=[{name:\"outputSize\",type:\"u32\"},{name:\"starts\",type:\"u32\",length:s.length},{name:\"signs\",type:\"i32\",length:u.length},{name:\"steps\",type:\"u32\",length:i.length}],h=[{type:12,data:f},{type:12,data:s},{type:6,data:u},{type:12,data:i},...P(e[0].dims,d)],b=y=>`\n ${y.registerUniforms(m).declareVariables(p,c)}\n ${tp(p,c,n)}\n ${y.mainStart()}\n ${y.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n let output_indices = ${c.offsetToIndices(\"global_idx\")};\n let input_indices = calculateInputIndices(output_indices);\n ${c.setByOffset(\"global_idx\",p.getByIndices(\"input_indices\"))}\n }`;return{name:\"Slice\",shaderCache:{hint:`${u.length}_${s.length}_${i.length}`,inputDependencies:[\"rank\"]},getShaderSource:b,getRunData:()=>({outputs:[l],dispatchGroup:{x:Math.ceil(r/64)},programUniforms:h})}},uu=(e,t)=>{Jc(e.inputs,t);let n=ep(e.inputs,t);e.compute(np(e.inputs,n),{inputs:[0]})},du=e=>{let t=e.starts,n=e.ends,r=e.axes;return G({starts:t,ends:n,axes:r})}});var rp,op,cu,pu,mu=k(()=>{\"use strict\";L();F();ie();Ve();j();rp=e=>{if(!e||e.length!==1)throw new Error(\"Softmax op requires 1 input.\")},op=(e,t)=>{let n=e.inputs[0],r=n.dims,o=x.size(r),i=r.length,s=x.normalizeAxis(t.axis,i),a=s<r.length-1,u,d=[];a?(d=Array.from({length:i},(T,I)=>I),d[s]=i-1,d[i-1]=s,u=e.compute(pe(n,d),{inputs:[n],outputs:[-1]})[0]):u=n;let l=u.dims,c=l[i-1],p=o/c,f=J(c),m=c/f,h=64;p===1&&(h=256);let b=(T,I)=>I===4?`max(max(${T}.x, ${T}.y), max(${T}.z, ${T}.w))`:I===2?`max(${T}.x, ${T}.y)`:I===3?`max(max(${T}.x, ${T}.y), ${T}.z)`:T,y=S(\"x\",u.dataType,u.dims,f),g=C(\"result\",u.dataType,u.dims,f),_=y.type.value,w=re(u.dataType)===\"f32\"?`var threadMax = ${_}(-3.4028234663852886e+38f);`:`var threadMax = ${_}(-65504.0h);`,v=T=>`\n var<workgroup> rowMaxShared : ${_};\n var<workgroup> rowSumShared : ${_};\n var<workgroup> threadShared : array<${_}, ${h}>;\n\n fn getValue(row: i32, col: i32, row_stride: i32) -> ${_} {\n let index = row * row_stride + col;\n return x[index];\n }\n\n fn setValue(row: i32, col: i32, row_stride: i32, value: ${_}) {\n let index = row * row_stride + col;\n result[index] = value;\n }\n ${T.registerUniform(\"packedCols\",\"i32\").declareVariables(y,g)}\n ${T.mainStart(h)}\n let gindex = i32(global_idx);\n let lindex = i32(local_idx);\n const wg = ${h};\n let row = gindex / wg;\n let cols = uniforms.packedCols;\n let row_stride : i32 = uniforms.packedCols;\n\n // find the rows max\n ${w}\n for (var col = lindex; col < cols; col += wg) {\n let value = getValue(row, col, row_stride);\n threadMax = max(threadMax, value);\n }\n if (lindex < cols) {\n threadShared[lindex] = threadMax;\n }\n workgroupBarrier();\n\n var reduceSize = min(cols, wg);\n for (var currSize = reduceSize >> 1; currSize > 0; currSize = reduceSize >> 1) {\n reduceSize = currSize + (reduceSize & 1);\n if (lindex < currSize) {\n threadShared[lindex] = max(threadShared[lindex], threadShared[lindex + reduceSize]);\n }\n workgroupBarrier();\n }\n if (lindex == 0) {\n rowMaxShared = ${_}(${b(\"threadShared[0]\",f)});\n }\n workgroupBarrier();\n\n // find the rows sum\n var threadSum = ${_}(0.0);\n for (var col = lindex; col < cols; col += wg) {\n let subExp = exp(getValue(row, col, row_stride) - rowMaxShared);\n threadSum += subExp;\n }\n threadShared[lindex] = threadSum;\n workgroupBarrier();\n\n for (var currSize = wg >> 1; currSize > 0; currSize = currSize >> 1) {\n if (lindex < currSize) {\n threadShared[lindex] = threadShared[lindex] + threadShared[lindex + currSize];\n }\n workgroupBarrier();\n }\n if (lindex == 0) {\n rowSumShared = ${_}(${Te(\"threadShared[0]\",f)});\n }\n workgroupBarrier();\n\n // calculate final value for each element in the row\n for (var col = lindex; col < cols; col += wg) {\n var value = exp(getValue(row, col, row_stride) - rowMaxShared) / rowSumShared;\n // max operation protects against NaN since all values should be >=0\n value = max(value, ${_}(0.0));\n setValue(row, col, row_stride, value);\n }\n }`,$=e.compute({name:\"Softmax\",shaderCache:{hint:`${f};${h}`,inputDependencies:[\"type\"]},getRunData:()=>({outputs:[{dims:l,dataType:u.dataType}],dispatchGroup:{x:p},programUniforms:[{type:6,data:m}]}),getShaderSource:v},{inputs:[u],outputs:[a?-1:0]})[0];a&&e.compute(pe($,d),{inputs:[$]})},cu=(e,t)=>{rp(e.inputs),op(e,t)},pu=e=>G({axis:e.axis})});var fu,ip,sp,ap,hu,gu=k(()=>{\"use strict\";L();F();j();fu=e=>Array.from(e.getBigInt64Array(),Number),ip=e=>{if(!e||e.length!==2)throw new Error(\"Tile requires 2 inputs.\");if(e[0].dataType!==1&&e[0].dataType!==10&&e[0].dataType!==6&&e[0].dataType!==12)throw new Error(\"Tile only support float, float16, int32, and uint32 data types\");if(e[1].dataType!==7)throw new Error(\"Tile `repeats` input should be of int64 data type\");if(e[1].dims.length!==1)throw new Error(\"Tile `repeats` input should be 1-D\");if(fu(e[1]).length!==e[0].dims.length)throw new Error(\"Tile `repeats` input should have same number of elements as rank of input data tensor\")},sp=(e,t)=>{let n=[];for(let r=0;r<e.length;++r)n.push(e[r]*t[r]);return n},ap=(e,t)=>{let n=e[0].dims,r=t??fu(e[1]),o=sp(n,r),i=x.size(o),s=e[0].dataType,a=S(\"input\",s,n.length),u=C(\"output\",s,o.length),d=l=>`\n const inputShape = ${a.indices(...n)};\n ${l.registerUniform(\"output_size\",\"u32\").declareVariables(a,u)}\n ${l.mainStart()}\n ${l.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n let output_indices = ${u.offsetToIndices(\"global_idx\")};\n var input_indices: ${a.type.indices};\n for (var i = 0; i < ${n.length}; i++) {\n let input_dim_i = ${a.indicesGet(\"uniforms.input_shape\",\"i\")};\n let input_dim_value = ${u.indicesGet(\"output_indices\",\"i\")} % input_dim_i;\n\n ${a.indicesSet(\"input_indices\",\"i\",\"input_dim_value\")}\n }\n ${u.setByOffset(\"global_idx\",a.getByIndices(\"input_indices\"))}\n }`;return{name:\"Tile\",shaderCache:{hint:`${r}`,inputDependencies:[\"rank\"]},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:[{type:12,data:i},...P(e[0].dims,o)]}),getShaderSource:d}},hu=e=>{ip(e.inputs),e.compute(ap(e.inputs),{inputs:[0]})}});var up,dp,yu,bu=k(()=>{\"use strict\";L();F();j();up=(e,t,n,r,o)=>{let i=C(\"output_data\",o,n.length,4),s=S(\"a_data\",t[1].dataType,t[1].dims.length,4),a=S(\"b_data\",t[2].dataType,t[2].dims.length,4),u=S(\"c_data\",t[0].dataType,t[0].dims.length,4),d,l=(c,p,f)=>`select(${p}, ${c}, ${f})`;if(!r)d=i.setByOffset(\"global_idx\",l(s.getByOffset(\"global_idx\"),a.getByOffset(\"global_idx\"),u.getByOffset(\"global_idx\")));else{let c=(p,f,m=\"\")=>{let h=`a_data[index_a${f}][component_a${f}]`,b=`b_data[index_b${f}][component_b${f}]`,y=`bool(c_data[index_c${f}] & (0xffu << (component_c${f} * 8)))`;return`\n let output_indices${f} = ${i.offsetToIndices(`global_idx * 4u + ${f}u`)};\n let offset_a${f} = ${s.broadcastedIndicesToOffset(`output_indices${f}`,i)};\n let offset_b${f} = ${a.broadcastedIndicesToOffset(`output_indices${f}`,i)};\n let offset_c${f} = ${u.broadcastedIndicesToOffset(`output_indices${f}`,i)};\n let index_a${f} = offset_a${f} / 4u;\n let index_b${f} = offset_b${f} / 4u;\n let index_c${f} = offset_c${f} / 4u;\n let component_a${f} = offset_a${f} % 4u;\n let component_b${f} = offset_b${f} % 4u;\n let component_c${f} = offset_c${f} % 4u;\n ${p}[${f}] = ${m}(${l(h,b,y)});\n `};o===9?d=`\n var data = vec4<u32>(0);\n ${c(\"data\",0,\"u32\")}\n ${c(\"data\",1,\"u32\")}\n ${c(\"data\",2,\"u32\")}\n ${c(\"data\",3,\"u32\")}\n output_data[global_idx] = dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(data));`:d=`\n ${c(\"output_data[global_idx]\",0)}\n ${c(\"output_data[global_idx]\",1)}\n ${c(\"output_data[global_idx]\",2)}\n ${c(\"output_data[global_idx]\",3)}\n `}return`\n ${e.registerUniform(\"vec_size\",\"u32\").declareVariables(u,s,a,i)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\n ${d}\n }`},dp=e=>{let t=e[1].dims,n=e[2].dims,r=e[0].dims,o=e[1].dataType,i=!(x.areEqual(t,n)&&x.areEqual(n,r)),s=t,a=x.size(t);if(i){let d=Pe.calcShape(Pe.calcShape(t,n,!1),r,!1);if(!d)throw new Error(\"Can't perform where op on the given tensors\");s=d,a=x.size(s)}let u=Math.ceil(a/4);return{name:\"Where\",shaderCache:{inputDependencies:[\"rank\",\"rank\",\"rank\"]},getShaderSource:d=>up(d,e,s,i,o),getRunData:()=>({outputs:[{dims:s,dataType:o}],dispatchGroup:{x:Math.ceil(a/64/4)},programUniforms:[{type:12,data:u},...P(r,t,n,s)]})}},yu=e=>{e.compute(dp(e.inputs))}});var _u,wu=k(()=>{\"use strict\";ei();tn();ri();ii();Hi();ts();os();ws();Cs();ks();Bs();Rs();Ls();Ws();Fs();Zs();Ys();ta();oa();aa();ga();_a();$a();xa();Ia();ar();Aa();qa();ja();Qa();Ja();Jt();ou();lr();su();lu();mu();dr();gu();Ve();rn();bu();_u=new Map([[\"Abs\",[si]],[\"Acos\",[ai]],[\"Acosh\",[ui]],[\"Add\",[qi]],[\"ArgMax\",[Jo,jn]],[\"ArgMin\",[Yo,jn]],[\"Asin\",[di]],[\"Asinh\",[li]],[\"Atan\",[ci]],[\"Atanh\",[pi]],[\"Attention\",[ti]],[\"AveragePool\",[Ma,Oa]],[\"BatchNormalization\",[ni]],[\"BiasAdd\",[oi]],[\"BiasSplitGelu\",[Wi]],[\"Cast\",[fi,mi]],[\"Ceil\",[gi]],[\"Clip\",[hi]],[\"Concat\",[ns,rs]],[\"Conv\",[rr,nr]],[\"ConvTranspose\",[Is,Ss]],[\"Cos\",[yi]],[\"Cosh\",[bi]],[\"CumSum\",[As,Es]],[\"DepthToSpace\",[Ps,zs]],[\"DequantizeLinear\",[Fa,Ka]],[\"Div\",[Fi]],[\"Einsum\",[Ms,Us]],[\"Elu\",[_i,yt]],[\"Equal\",[Ki]],[\"Erf\",[wi]],[\"Exp\",[$i]],[\"Expand\",[Ns]],[\"FastGelu\",[Gs]],[\"Floor\",[vi]],[\"FusedConv\",[rr,nr]],[\"Gather\",[qs,Hs]],[\"GatherElements\",[ea,Js]],[\"GatherBlockQuantized\",[Qs,Xs]],[\"GatherND\",[Ks,js]],[\"Gelu\",[xi]],[\"Gemm\",[ra,na]],[\"GlobalAveragePool\",[Va,Ra]],[\"GlobalMaxPool\",[Ha,Wa]],[\"Greater\",[Xi]],[\"GreaterOrEqual\",[Ji]],[\"GridSample\",[ia,sa]],[\"GroupQueryAttention\",[ha]],[\"HardSigmoid\",[Pi,ki]],[\"InstanceNormalization\",[ba]],[\"LayerNormalization\",[wa]],[\"LeakyRelu\",[Si,yt]],[\"Less\",[Yi]],[\"LessOrEqual\",[es]],[\"Log\",[Ni]],[\"MatMul\",[va]],[\"MatMulNBits\",[Sa,Ta]],[\"MaxPool\",[La,Ga]],[\"Mul\",[ji]],[\"MultiHeadAttention\",[la,da]],[\"Neg\",[Ii]],[\"Not\",[Ti]],[\"Pad\",[Ca]],[\"Pow\",[Zi]],[\"QuickGelu\",[Li,yt]],[\"Range\",[Za]],[\"Reciprocal\",[Ci]],[\"ReduceMin\",[Fo]],[\"ReduceMean\",[Lo]],[\"ReduceMax\",[qo]],[\"ReduceSum\",[jo]],[\"ReduceProd\",[Ko]],[\"ReduceL1\",[Go]],[\"ReduceL2\",[Wo]],[\"ReduceLogSum\",[Qo]],[\"ReduceLogSumExp\",[Ho]],[\"ReduceSumSquare\",[Zo]],[\"Relu\",[Ai]],[\"Resize\",[nu,ru]],[\"RotaryEmbedding\",[ma]],[\"ScatterND\",[Ya,Xa]],[\"Sigmoid\",[Ei]],[\"Sin\",[zi]],[\"Sinh\",[Bi]],[\"Slice\",[uu,du]],[\"SkipLayerNormalization\",[iu]],[\"Split\",[ca,pa]],[\"Sqrt\",[Di]],[\"Softmax\",[cu,pu]],[\"Sub\",[Qi]],[\"Tan\",[Oi]],[\"Tanh\",[Ui]],[\"ThresholdedRelu\",[Vi,yt]],[\"Tile\",[hu]],[\"Transpose\",[Ao,Eo]],[\"Where\",[yu]]])});var hn,$u=k(()=>{\"use strict\";_e();ke();j();hn=class{constructor(t){this.backend=t;this.repo=new Map,this.attributesBound=!1}getArtifact(t){return this.repo.get(t)}setArtifact(t,n){this.repo.set(t,n)}run(t,n,r,o,i){ye(t.programInfo.name);let s=this.backend.device,a=this.backend.getComputePassEncoder();this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2);let u=[];for(let l of n)u.push({binding:u.length,resource:{buffer:l.buffer}});for(let l of r)u.push({binding:u.length,resource:{buffer:l.buffer}});i&&u.push({binding:u.length,resource:i});let d=s.createBindGroup({layout:t.computePipeline.getBindGroupLayout(0),entries:u,label:t.programInfo.name});if(this.backend.sessionStatus===\"capturing\"){let l={kernelId:this.backend.currentKernelId,computePipeline:t.computePipeline,bindGroup:d,dispatchGroup:o};this.backend.capturedCommandList.get(this.backend.currentSessionId).push(l)}a.setPipeline(t.computePipeline),a.setBindGroup(0,d),a.dispatchWorkgroups(...o),this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2+1),this.backend.pendingDispatchNumber++,(this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber||this.backend.queryType===\"at-passes\")&&this.backend.endComputePass(),this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber&&this.backend.flush(),he(t.programInfo.name)}dispose(){}build(t,n){ye(t.name);let r=this.backend.device,o=[];[{feature:\"shader-f16\",extension:\"f16\"},{feature:\"subgroups\",extension:\"subgroups\"}].forEach(c=>{r.features.has(c.feature)&&o.push(`enable ${c.extension};`)});let s=Io(n,this.backend.device.limits),a=t.getShaderSource(s),u=`${o.join(`\n`)}\n${s.additionalImplementations}\n${a}`,d=r.createShaderModule({code:u,label:t.name});Z(\"verbose\",()=>`[WebGPU] ${t.name} shader code: ${u}`);let l=r.createComputePipeline({compute:{module:d,entryPoint:\"main\"},layout:\"auto\",label:t.name});return he(t.name),{programInfo:t,computePipeline:l,uniformVariablesInfo:s.variablesInfo}}normalizeDispatchGroupSize(t){let n=typeof t==\"number\"?t:t.x,r=typeof t==\"number\"?1:t.y||1,o=typeof t==\"number\"?1:t.z||1,i=this.backend.device.limits.maxComputeWorkgroupsPerDimension;if(n<=i&&r<=i&&o<=i)return[n,r,o];let s=n*r*o,a=Math.ceil(Math.sqrt(s));if(a>i){if(a=Math.ceil(Math.cbrt(s)),a>i)throw new Error(\"Total dispatch size exceeds WebGPU maximum.\");return[a,a,a]}else return[a,a,1]}}});var vu={};rt(vu,{WebGpuBackend:()=>pr});var lp,cp,cr,pr,xu=k(()=>{\"use strict\";_e();L();ke();Mn();So();wu();$u();lp=(e,t)=>{if(t.length!==e.length)throw new Error(`inputDependencies length ${t.length} is not equal to inputTensors length ${e.length}.`);let n=[];for(let r=0;r<e.length;++r){let o=e[r].dataType;switch(t[r]){case\"none\":{n.push(\"\");break}case\"type\":{n.push(`${o}`);break}case\"rank\":{let i=e[r].dims.length;n.push(`${o};${i}`);break}case\"dims\":{let i=e[r].dims.join(\",\");n.push(`${o};${i}`);break}default:throw new Error(`unsupported input dependency: ${t[r]}`)}}return n.join(\"|\")},cp=(e,t,n)=>{let r=e.name;return e.shaderCache?.hint&&(r+=\"[\"+e.shaderCache.hint+\"]\"),r+=\":\"+n+`:${lp(t,e.shaderCache?.inputDependencies??new Array(t.length).fill(\"dims\"))}`,r},cr=class{constructor(t){t&&(this.architecture=t.architecture,this.vendor=t.vendor)}isArchitecture(t){return this.architecture===t}isVendor(t){return this.vendor===t}},pr=class{constructor(){this.currentSessionId=null;this.currentKernelId=null;this.commandEncoder=null;this.computePassEncoder=null;this.maxDispatchNumber=16;this.pendingDispatchNumber=0;this.pendingKernels=[];this.pendingQueries=new Map;this.sessionStatus=\"default\";this.capturedCommandList=new Map;this.capturedPendingKernels=new Map;this.sessionExternalDataMapping=new Map}get currentKernelCustomData(){if(this.currentKernelId===null)throw new Error(\"currentKernelCustomData(): currentKernelId is null. (should not happen)\");let t=this.kernelCustomData.get(this.currentKernelId);return t||(t={},this.kernelCustomData.set(this.currentKernelId,t)),t}async initialize(t,n){this.env=t;let r=[],o={requiredLimits:{maxComputeWorkgroupStorageSize:n.limits.maxComputeWorkgroupStorageSize,maxComputeWorkgroupsPerDimension:n.limits.maxComputeWorkgroupsPerDimension,maxStorageBufferBindingSize:n.limits.maxStorageBufferBindingSize,maxBufferSize:n.limits.maxBufferSize,maxComputeInvocationsPerWorkgroup:n.limits.maxComputeInvocationsPerWorkgroup,maxComputeWorkgroupSizeX:n.limits.maxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY:n.limits.maxComputeWorkgroupSizeY,maxComputeWorkgroupSizeZ:n.limits.maxComputeWorkgroupSizeZ},requiredFeatures:r},i=s=>n.features.has(s)&&r.push(s)&&!0;i(\"chromium-experimental-timestamp-query-inside-passes\")||i(\"timestamp-query\"),i(\"shader-f16\"),i(\"subgroups\"),this.device=await n.requestDevice(o),this.adapterInfo=new cr(n.info||await n.requestAdapterInfo()),this.gpuDataManager=xo(this),this.programManager=new hn(this),this.kernels=new Map,this.kernelPersistentData=new Map,this.kernelCustomData=new Map,Wt(t.logLevel,!!t.debug),this.device.onuncapturederror=s=>{s.error instanceof GPUValidationError&&console.error(`An uncaught WebGPU validation error was raised: ${s.error.message}`)},Object.defineProperty(this.env.webgpu,\"device\",{value:this.device,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(this.env.webgpu,\"adapter\",{value:n,writable:!1,enumerable:!0,configurable:!1}),this.setQueryType()}dispose(){typeof this.querySet<\"u\"&&this.querySet.destroy(),this.gpuDataManager.dispose()}getCommandEncoder(){return this.commandEncoder||(this.commandEncoder=this.device.createCommandEncoder()),this.commandEncoder}getComputePassEncoder(){if(!this.computePassEncoder){let t=this.getCommandEncoder(),n={};this.queryType===\"at-passes\"&&(n.timestampWrites={querySet:this.querySet,beginningOfPassWriteIndex:this.pendingDispatchNumber*2,endOfPassWriteIndex:this.pendingDispatchNumber*2+1}),this.computePassEncoder=t.beginComputePass(n)}return this.computePassEncoder}endComputePass(){this.computePassEncoder&&(this.computePassEncoder.end(),this.computePassEncoder=null)}flush(){if(!this.commandEncoder)return;ye(),this.endComputePass();let t;this.queryType!==\"none\"&&(this.commandEncoder.resolveQuerySet(this.querySet,0,this.pendingDispatchNumber*2,this.queryResolveBuffer,0),t=this.device.createBuffer({size:this.pendingDispatchNumber*2*8,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),this.pendingQueries.set(t,this.pendingKernels),this.pendingKernels=[],this.commandEncoder.copyBufferToBuffer(this.queryResolveBuffer,0,t,0,this.pendingDispatchNumber*2*8)),this.device.queue.submit([this.commandEncoder.finish()]),this.gpuDataManager.refreshPendingBuffers(),this.commandEncoder=null,this.pendingDispatchNumber=0,this.queryType!==\"none\"&&t.mapAsync(GPUMapMode.READ).then(()=>{let n=new BigUint64Array(t.getMappedRange()),r=this.pendingQueries.get(t);for(let o=0;o<n.length/2;o++){let i=r[o],s=i.kernelId,a=this.kernels.get(s),u=a.kernelType,d=a.kernelName,l=i.programName,c=i.inputTensorViews,p=i.outputTensorViews,f=n[o*2],m=n[o*2+1];typeof this.queryTimeBase>\"u\"&&(this.queryTimeBase=f);let h=Number(f-this.queryTimeBase),b=Number(m-this.queryTimeBase);if(!Number.isSafeInteger(h)||!Number.isSafeInteger(b))throw new RangeError(\"incorrect timestamp range\");if(this.env.webgpu.profiling?.ondata)this.env.webgpu.profiling.ondata({version:1,inputsMetadata:c.map(y=>({dims:y.dims,dataType:Ee(y.dataType)})),outputsMetadata:p.map(y=>({dims:y.dims,dataType:Ee(y.dataType)})),kernelId:s,kernelType:u,kernelName:d,programName:l,startTime:h,endTime:b});else{let y=\"\";c.forEach((_,w)=>{y+=`input[${w}]: [${_.dims}] | ${Ee(_.dataType)}, `});let g=\"\";p.forEach((_,w)=>{g+=`output[${w}]: [${_.dims}] | ${Ee(_.dataType)}, `}),console.log(`[profiling] kernel \"${s}|${u}|${d}|${l}\" ${y}${g}start time: ${h} ns, execution time: ${b-h} ns`)}pt(\"GPU\",`${l}::${f}::${m}`)}t.unmap(),this.pendingQueries.delete(t)}),he()}run(t,n,r,o,i,s){ye(t.name);let a=[];for(let _=0;_<n.length;++_){let w=n[_].data;if(w===0)continue;let v=this.gpuDataManager.get(w);if(!v)throw new Error(`no GPU data for input: ${w}`);a.push(v)}let{outputs:u,dispatchGroup:d,programUniforms:l}=t.getRunData(n),c=r.length===0?u.map((_,w)=>w):r;if(c.length!==u.length)throw new Error(`Output size ${c.length} must be equal to ${u.length}.`);let p=[],f=[];for(let _=0;_<u.length;++_){if(!Number.isInteger(c[_])||c[_]<-3||c[_]>=s)throw new Error(`Invalid output index: ${c[_]}`);if(c[_]===-3)continue;let w=c[_]===-1,v=c[_]===-2,$=w||v?i(u[_].dataType,u[_].dims):o(c[_],u[_].dataType,u[_].dims);if(p.push($),$.data===0)continue;let T=this.gpuDataManager.get($.data);if(!T)throw new Error(`no GPU data for output: ${$.data}`);if(w&&this.temporaryData.push(T),v){let I=this.kernelPersistentData.get(this.currentKernelId);I||(I=[],this.kernelPersistentData.set(this.currentKernelId,I)),I.push(T)}f.push(T)}if(a.length!==n.length||f.length!==p.length){if(f.length===0)return he(t.name),p;throw new Error(`Program ${t.name} has zero-sized tensor(s) in inputs or outputs. This is not supported now.`)}let m;if(l){let _=0,w=[];l.forEach(I=>{let A=typeof I.data==\"number\"?[I.data]:I.data;if(A.length===0)return;let z=I.type===10?2:4,R,D;I.type===10?(D=A.length>4?16:A.length>2?8:A.length*z,R=A.length>4?16:z*A.length):(D=A.length<=2?A.length*z:16,R=16),_=Math.ceil(_/D)*D,w.push(_);let U=I.type===10?8:4;_+=A.length>4?Math.ceil(A.length/U)*R:A.length*z});let v=16;_=Math.ceil(_/v)*v;let $=new ArrayBuffer(_);l.forEach((I,A)=>{let z=w[A],R=typeof I.data==\"number\"?[I.data]:I.data;if(I.type===6)new Int32Array($,z,R.length).set(R);else if(I.type===12)new Uint32Array($,z,R.length).set(R);else if(I.type===10)new Uint16Array($,z,R.length).set(R);else if(I.type===1)new Float32Array($,z,R.length).set(R);else throw new Error(`Unsupported uniform type: ${Ee(I.type)}`)});let T=this.gpuDataManager.create(_,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);this.device.queue.writeBuffer(T.buffer,0,$,0,_),this.gpuDataManager.release(T.id),m={offset:0,size:_,buffer:T.buffer}}let h=this.programManager.normalizeDispatchGroupSize(d),b=h[1]===1&&h[2]===1,y=cp(t,n,b),g=this.programManager.getArtifact(y);if(g||(g=this.programManager.build(t,h),this.programManager.setArtifact(y,g),Z(\"info\",()=>`[artifact] key: ${y}, programName: ${t.name}`)),l&&g.uniformVariablesInfo){if(l.length!==g.uniformVariablesInfo.length)throw new Error(`Uniform variables count mismatch: expect ${g.uniformVariablesInfo.length}, got ${l.length} in program \"${g.programInfo.name}\".`);for(let _=0;_<l.length;_++){let w=l[_],v=w.type,$=typeof w.data==\"number\"?1:w.data.length,[T,I]=g.uniformVariablesInfo[_];if(v!==T||$!==I)throw new Error(`Uniform variable ${_} mismatch: expect type ${T} with size ${I}, got type ${v} with size ${$} in program \"${g.programInfo.name}\".`)}}if(Z(\"info\",()=>`[ProgramManager] run \"${t.name}\" (key=${y}) with ${h[0]}x${h[1]}x${h[2]}`),this.queryType!==\"none\"||this.sessionStatus===\"capturing\"){let _={kernelId:this.currentKernelId,programName:g.programInfo.name,inputTensorViews:n,outputTensorViews:p};this.pendingKernels.push(_),this.sessionStatus===\"capturing\"&&this.capturedPendingKernels.get(this.currentSessionId).push(_)}return this.programManager.run(g,a,f,h,m),he(t.name),p}upload(t,n){this.gpuDataManager.upload(t,n)}memcpy(t,n){this.gpuDataManager.memcpy(t,n)}async download(t,n){await this.gpuDataManager.download(t,n)}alloc(t){return this.gpuDataManager.create(t).id}free(t){return this.gpuDataManager.release(t)}createKernel(t,n,r,o){let i=_u.get(t);if(!i)throw new Error(`kernel not implemented: ${t}`);let s={kernelType:t,kernelName:o,kernelEntry:i[0],attributes:[i[1],r]};this.kernels.set(n,s)}releaseKernel(t){let n=this.kernelPersistentData.get(t);if(n){for(let r of n)this.gpuDataManager.release(r.id);this.kernelPersistentData.delete(t)}this.kernelCustomData.delete(t),this.kernels.delete(t)}computeKernel(t,n,r){let o=this.kernels.get(t);if(!o)throw new Error(`kernel not created: ${t}`);let i=o.kernelType,s=o.kernelName,a=o.kernelEntry,u=o.attributes;if(this.currentKernelId!==null)throw new Error(`kernel \"[${i}] ${s}\" is not allowed to be called recursively`);this.currentKernelId=t,u[0]&&(u[1]=u[0](u[1]),u[0]=void 0),Z(\"info\",()=>`[WebGPU] Start to run kernel \"[${i}] ${s}\"...`);let d=this.env.debug;this.temporaryData=[];try{return d&&this.device.pushErrorScope(\"validation\"),a(n,u[1]),0}catch(l){return r.push(Promise.resolve(`[WebGPU] Kernel \"[${i}] ${s}\" failed. ${l}`)),1}finally{d&&r.push(this.device.popErrorScope().then(l=>l?`GPU validation error for kernel \"[${i}] ${s}\": ${l.message}`:null));for(let l of this.temporaryData)this.gpuDataManager.release(l.id);this.temporaryData=[],this.currentKernelId=null}}registerBuffer(t,n,r,o){let i=this.sessionExternalDataMapping.get(t);i||(i=new Map,this.sessionExternalDataMapping.set(t,i));let s=i.get(n),a=this.gpuDataManager.registerExternalBuffer(r,o,s);return i.set(n,[a,r]),a}unregisterBuffers(t){let n=this.sessionExternalDataMapping.get(t);n&&(n.forEach(r=>this.gpuDataManager.unregisterExternalBuffer(r[0])),this.sessionExternalDataMapping.delete(t))}getBuffer(t){let n=this.gpuDataManager.get(t);if(!n)throw new Error(`no GPU data for buffer: ${t}`);return n.buffer}createDownloader(t,n,r){return async()=>{let o=await Gn(this,t,n);return qt(o.buffer,r)}}writeTimestamp(t){this.queryType===\"inside-passes\"&&this.computePassEncoder.writeTimestamp(this.querySet,t)}setQueryType(){this.queryType=\"none\",(this.env.webgpu.profiling?.mode===\"default\"||(typeof this.env.trace>\"u\"?this.env.wasm.trace:this.env.trace))&&(this.device.features.has(\"chromium-experimental-timestamp-query-inside-passes\")?this.queryType=\"inside-passes\":this.device.features.has(\"timestamp-query\")&&(this.queryType=\"at-passes\"),this.queryType!==\"none\"&&typeof this.querySet>\"u\"&&(this.querySet=this.device.createQuerySet({type:\"timestamp\",count:this.maxDispatchNumber*2}),this.queryResolveBuffer=this.device.createBuffer({size:this.maxDispatchNumber*2*8,usage:GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE})))}captureBegin(){Z(\"info\",\"captureBegin\"),this.capturedCommandList.get(this.currentSessionId)||this.capturedCommandList.set(this.currentSessionId,[]),this.capturedPendingKernels.get(this.currentSessionId)||this.capturedPendingKernels.set(this.currentSessionId,[]),this.flush(),this.sessionStatus=\"capturing\"}captureEnd(){Z(\"info\",\"captureEnd\"),this.flush(),this.sessionStatus=\"default\"}replay(){Z(\"info\",\"replay\"),this.sessionStatus=\"replaying\";let t=this.capturedCommandList.get(this.currentSessionId),n=this.capturedPendingKernels.get(this.currentSessionId),r=t.length;this.pendingKernels=[];for(let o=0;o<r;o++){let i=this.getComputePassEncoder(),s=t[o];this.writeTimestamp(this.pendingDispatchNumber*2),i.setPipeline(s.computePipeline),i.setBindGroup(0,s.bindGroup),i.dispatchWorkgroups(...s.dispatchGroup),this.writeTimestamp(this.pendingDispatchNumber*2+1),this.pendingDispatchNumber++,this.queryType!==\"none\"&&this.pendingKernels.push(n[o]),(this.pendingDispatchNumber>=this.maxDispatchNumber||this.queryType===\"at-passes\")&&this.endComputePass(),this.pendingDispatchNumber>=this.maxDispatchNumber&&this.flush()}this.flush(),this.sessionStatus=\"default\"}onCreateSession(){this.gpuDataManager.onCreateSession()}onReleaseSession(t){this.unregisterBuffers(t),this.capturedCommandList.has(t)&&this.capturedCommandList.delete(t),this.capturedPendingKernels.has(t)&&this.capturedPendingKernels.delete(t),this.gpuDataManager.onReleaseSession(t)}onRunStart(t){this.currentSessionId=t,this.setQueryType()}}});var Su={};rt(Su,{init:()=>pp});var $t,mr,pp,Tu=k(()=>{\"use strict\";L();ke();F();_o();$t=class e{constructor(t,n,r,o){this.module=t;this.dataType=n;this.data=r;this.dims=o}getFloat32Array(){if(this.dataType!==1)throw new Error(\"Invalid data type\");let t=x.size(this.dims);return t===0?new Float32Array:new Float32Array(this.module.HEAP8.buffer,this.data,t)}getBigInt64Array(){if(this.dataType!==7)throw new Error(\"Invalid data type\");let t=x.size(this.dims);return t===0?new BigInt64Array:new BigInt64Array(this.module.HEAP8.buffer,this.data,t)}getInt32Array(){if(this.dataType!==6)throw new Error(\"Invalid data type\");let t=x.size(this.dims);return t===0?new Int32Array:new Int32Array(this.module.HEAP8.buffer,this.data,t)}getUint16Array(){if(this.dataType!==10&&this.dataType!==4)throw new Error(\"Invalid data type\");let t=x.size(this.dims);return t===0?new Uint16Array:new Uint16Array(this.module.HEAP8.buffer,this.data,t)}reshape(t){if(x.size(t)!==x.size(this.dims))throw new Error(\"Invalid new shape\");return new e(this.module,this.dataType,this.data,t)}},mr=class{constructor(t,n,r){this.module=t;this.backend=n;this.customDataOffset=0;this.customDataSize=0;this.adapterInfo=n.adapterInfo;let o=t.PTR_SIZE,i=r/t.PTR_SIZE,s=o===4?\"i32\":\"i64\";this.opKernelContext=Number(t.getValue(o*i++,s));let a=Number(t.getValue(o*i++,s));this.outputCount=Number(t.getValue(o*i++,s)),this.customDataOffset=Number(t.getValue(o*i++,\"*\")),this.customDataSize=Number(t.getValue(o*i++,s));let u=[];for(let d=0;d<a;d++){let l=Number(t.getValue(o*i++,s)),c=Number(t.getValue(o*i++,\"*\")),p=Number(t.getValue(o*i++,s)),f=[];for(let m=0;m<p;m++)f.push(Number(t.getValue(o*i++,s)));u.push(new $t(t,l,c,f))}this.inputs=u}get kernelCustomData(){return this.backend.currentKernelCustomData}get customDataBuffer(){return this.module.HEAPU8.subarray(this.customDataOffset,this.customDataOffset+this.customDataSize)}compute(t,n){let r=n?.inputs?.map(a=>typeof a==\"number\"?this.inputs[a]:a)??this.inputs,o=n?.outputs??[],i=(a,u,d)=>new $t(this.module,u,this.output(a,d),d),s=(a,u)=>{let d=qe(a,u);if(!d)throw new Error(`Unsupported data type: ${a}`);let l=d>0?this.backend.gpuDataManager.create(d).id:0;return new $t(this.module,a,l,u)};return this.backend.run(t,r,o,i,s,this.outputCount)}output(t,n){let r=this.module.stackSave();try{let o=this.module.PTR_SIZE,i=o===4?\"i32\":\"i64\",s=this.module.stackAlloc((1+n.length)*o);this.module.setValue(s,n.length,i);for(let a=0;a<n.length;a++)this.module.setValue(s+o*(a+1),n[a],i);return this.module._JsepOutput(this.opKernelContext,t,s)}catch(o){throw new Error(`Failed to generate kernel's output[${t}] with dims [${n}]. If you are running with pre-allocated output, please make sure the output type/dims are correct. Error: ${o}`)}finally{this.module.stackRestore(r)}}},pp=async(e,t,n,r)=>{let o=t.jsepInit;if(!o)throw new Error(\"Failed to initialize JSEP. The WebAssembly module is not built with JSEP support.\");if(e===\"webgpu\"){let i=(xu(),lt(vu)).WebGpuBackend,s=new i;await s.initialize(n,r),o(\"webgpu\",[s,a=>s.alloc(Number(a)),a=>s.free(a),(a,u,d,l=!1)=>{if(l)Z(\"verbose\",()=>`[WebGPU] jsepCopyGpuToGpu: src=${Number(a)}, dst=${Number(u)}, size=${Number(d)}`),s.memcpy(Number(a),Number(u));else{Z(\"verbose\",()=>`[WebGPU] jsepCopyCpuToGpu: dataOffset=${Number(a)}, gpuDataId=${Number(u)}, size=${Number(d)}`);let c=t.HEAPU8.subarray(Number(a>>>0),Number(a>>>0)+Number(d));s.upload(Number(u),c)}},async(a,u,d)=>{Z(\"verbose\",()=>`[WebGPU] jsepCopyGpuToCpu: gpuDataId=${a}, dataOffset=${u}, size=${d}`),await s.download(Number(a),()=>t.HEAPU8.subarray(Number(u)>>>0,Number(u+d)>>>0))},(a,u,d)=>s.createKernel(a,Number(u),d,t.UTF8ToString(t._JsepGetNodeName(Number(u)))),a=>s.releaseKernel(a),(a,u,d,l)=>{Z(\"verbose\",()=>`[WebGPU] jsepRun: sessionHandle=${d}, kernel=${a}, contextDataOffset=${u}`);let c=new mr(t,s,Number(u));return s.computeKernel(Number(a),c,l)},()=>s.captureBegin(),()=>s.captureEnd(),()=>s.replay()])}else{let i=new Zt(n);o(\"webnn\",[i,()=>i.reserveTensorId(),s=>i.releaseTensorId(s),async(s,a,u,d,l)=>i.ensureTensor(s,a,u,d,l),(s,a)=>{i.uploadTensor(s,a)},async(s,a)=>i.downloadTensor(s,a),(s,a)=>i.registerMLContext(s,a),!!n.trace])}}});var mp,kt,Pt,tt,fp,Iu,mt,zt,Bt,Cu,Dt,Ot,Mt,En=k(()=>{\"use strict\";_e();io();ao();L();We();Vt();Dn();mp=(e,t)=>{ne()._OrtInit(e,t)!==0&&Y(\"Can't initialize onnxruntime.\")},kt=async e=>{mp(e.wasm.numThreads,ht(e.logLevel))},Pt=async(e,t)=>{ne().asyncInit?.();let n=e.webgpu.adapter;if(t===\"webgpu\"){if(typeof navigator>\"u\"||!navigator.gpu)throw new Error(\"WebGPU is not supported in current environment\");if(n){if(typeof n.limits!=\"object\"||typeof n.features!=\"object\"||typeof n.requestDevice!=\"function\")throw new Error(\"Invalid GPU adapter set in `env.webgpu.adapter`. It must be a GPUAdapter object.\")}else{let r=e.webgpu.powerPreference;if(r!==void 0&&r!==\"low-power\"&&r!==\"high-performance\")throw new Error(`Invalid powerPreference setting: \"${r}\"`);let o=e.webgpu.forceFallbackAdapter;if(o!==void 0&&typeof o!=\"boolean\")throw new Error(`Invalid forceFallbackAdapter setting: \"${o}\"`);if(n=await navigator.gpu.requestAdapter({powerPreference:r,forceFallbackAdapter:o}),!n)throw new Error('Failed to get GPU adapter. You may need to enable flag \"--enable-unsafe-webgpu\" if you are using Chrome.')}}if(t===\"webnn\"&&(typeof navigator>\"u\"||!navigator.ml))throw new Error(\"WebNN is not supported in current environment\");{let r=(Tu(),lt(Su)).init;t===\"webgpu\"&&await r(\"webgpu\",ne(),e,n),t===\"webnn\"&&await r(\"webnn\",ne(),e)}},tt=new Map,fp=e=>{let t=ne(),n=t.stackSave();try{let r=t.PTR_SIZE,o=t.stackAlloc(2*r);t._OrtGetInputOutputCount(e,o,o+r)!==0&&Y(\"Can't get session input/output count.\");let s=r===4?\"i32\":\"i64\";return[Number(t.getValue(o,s)),Number(t.getValue(o+r,s))]}finally{t.stackRestore(n)}},Iu=(e,t)=>{let n=ne(),r=n.stackSave(),o=0;try{let i=n.PTR_SIZE,s=n.stackAlloc(2*i);n._OrtGetInputOutputMetadata(e,t,s,s+i)!==0&&Y(\"Can't get session input/output metadata.\");let u=Number(n.getValue(s,\"*\"));o=Number(n.getValue(s+i,\"*\"));let d=n.HEAP32[o/4];if(d===0)return[u,0];let l=n.HEAPU32[o/4+1],c=[];for(let p=0;p<l;p++){let f=Number(n.getValue(o+8+p*i,\"*\"));c.push(f!==0?n.UTF8ToString(f):Number(n.getValue(o+8+(p+l)*i,\"*\")))}return[u,d,c]}finally{n.stackRestore(r),o!==0&&n._OrtFree(o)}},mt=e=>{let t=ne(),n=t._malloc(e.byteLength);if(n===0)throw new Error(`Can't create a session. failed to allocate a buffer of size ${e.byteLength}.`);return t.HEAPU8.set(e,n),[n,e.byteLength]},zt=async(e,t)=>{let n,r,o=ne();Array.isArray(e)?[n,r]=e:e.buffer===o.HEAPU8.buffer?[n,r]=[e.byteOffset,e.byteLength]:[n,r]=mt(e);let i=0,s=0,a=0,u=[],d=[],l=[];try{if([s,u]=await so(t),t?.externalData&&o.mountExternalData){let w=[];for(let v of t.externalData){let $=typeof v==\"string\"?v:v.path;w.push(gt(typeof v==\"string\"?v:v.data).then(T=>{o.mountExternalData($,T)}))}await Promise.all(w)}for(let w of t?.executionProviders??[])if((typeof w==\"string\"?w:w.name)===\"webnn\"){if(o.shouldTransferToMLTensor=!1,typeof w!=\"string\"){let $=w,T=$?.context,I=$?.gpuDevice,A=$?.deviceType,z=$?.powerPreference;T?o.currentContext=T:I?o.currentContext=await o.webnnCreateMLContext(I):o.currentContext=await o.webnnCreateMLContext({deviceType:A,powerPreference:z})}else o.currentContext=await o.webnnCreateMLContext();break}i=await o._OrtCreateSession(n,r,s),o.webgpuOnCreateSession?.(i),i===0&&Y(\"Can't create a session.\"),o.jsepOnCreateSession?.(),o.currentContext&&(o.webnnRegisterMLContext(i,o.currentContext),o.currentContext=void 0,o.shouldTransferToMLTensor=!0);let[c,p]=fp(i),f=!!t?.enableGraphCapture,m=[],h=[],b=[],y=[],g=[];for(let w=0;w<c;w++){let[v,$,T]=Iu(i,w);v===0&&Y(\"Can't get an input name.\"),d.push(v);let I=o.UTF8ToString(v);m.push(I),b.push($===0?{name:I,isTensor:!1}:{name:I,isTensor:!0,type:Ee($),shape:T})}for(let w=0;w<p;w++){let[v,$,T]=Iu(i,w+c);v===0&&Y(\"Can't get an output name.\"),l.push(v);let I=o.UTF8ToString(v);h.push(I),y.push($===0?{name:I,isTensor:!1}:{name:I,isTensor:!0,type:Ee($),shape:T});{if(f&&t?.preferredOutputLocation===void 0){g.push(\"gpu-buffer\");continue}let A=typeof t?.preferredOutputLocation==\"string\"?t.preferredOutputLocation:t?.preferredOutputLocation?.[I]??\"cpu\",z=o.webnnIsGraphOutput;if(A===\"cpu\"&&z&&z(i,I)){g.push(\"ml-tensor-cpu-output\");continue}if(A!==\"cpu\"&&A!==\"cpu-pinned\"&&A!==\"gpu-buffer\"&&A!==\"ml-tensor\")throw new Error(`Not supported preferred output location: ${A}.`);if(f&&A!==\"gpu-buffer\")throw new Error(`Not supported preferred output location: ${A}. Only 'gpu-buffer' location is supported when enableGraphCapture is true.`);g.push(A)}}let _=null;return g.some(w=>w===\"gpu-buffer\"||w===\"ml-tensor\"||w===\"ml-tensor-cpu-output\")&&(a=o._OrtCreateBinding(i),a===0&&Y(\"Can't create IO binding.\"),_={handle:a,outputPreferredLocations:g,outputPreferredLocationsEncoded:g.map(w=>w===\"ml-tensor-cpu-output\"?\"ml-tensor\":w).map(w=>Bn(w))}),tt.set(i,[i,d,l,_,f,!1]),[i,m,h,b,y]}catch(c){throw d.forEach(p=>o._OrtFree(p)),l.forEach(p=>o._OrtFree(p)),a!==0&&o._OrtReleaseBinding(a)!==0&&Y(\"Can't release IO binding.\"),i!==0&&o._OrtReleaseSession(i)!==0&&Y(\"Can't release session.\"),c}finally{o._free(n),s!==0&&o._OrtReleaseSessionOptions(s)!==0&&Y(\"Can't release session options.\"),u.forEach(c=>o._free(c)),o.unmountExternalData?.()}},Bt=e=>{let t=ne(),n=tt.get(e);if(!n)throw new Error(`cannot release session. invalid session id: ${e}`);let[r,o,i,s,a]=n;s&&(a&&t._OrtClearBoundOutputs(s.handle)!==0&&Y(\"Can't clear bound outputs.\"),t._OrtReleaseBinding(s.handle)!==0&&Y(\"Can't release IO binding.\")),t.jsepOnReleaseSession?.(e),t.webnnOnReleaseSession?.(e),t.webgpuOnReleaseSession?.(e),o.forEach(u=>t._OrtFree(u)),i.forEach(u=>t._OrtFree(u)),t._OrtReleaseSession(r)!==0&&Y(\"Can't release session.\"),tt.delete(e)},Cu=async(e,t,n,r,o,i,s=!1)=>{if(!e){t.push(0);return}let a=ne(),u=a.PTR_SIZE,d=e[0],l=e[1],c=e[3],p=c,f,m;if(d===\"string\"&&(c===\"gpu-buffer\"||c===\"ml-tensor\"))throw new Error(\"String tensor is not supported on GPU.\");if(s&&c!==\"gpu-buffer\")throw new Error(`External buffer must be provided for input/output index ${i} when enableGraphCapture is true.`);if(c===\"gpu-buffer\"){let y=e[2].gpuBuffer;m=qe(He(d),l);{let g=a.jsepRegisterBuffer;if(!g)throw new Error('Tensor location \"gpu-buffer\" is not supported without using WebGPU.');f=g(r,i,y,m)}}else if(c===\"ml-tensor\"){let y=e[2].mlTensor;m=qe(He(d),l);let g=a.webnnRegisterMLTensor;if(!g)throw new Error('Tensor location \"ml-tensor\" is not supported without using WebNN.');f=g(r,y,He(d),l)}else{let y=e[2];if(Array.isArray(y)){m=u*y.length,f=a._malloc(m),n.push(f);for(let g=0;g<y.length;g++){if(typeof y[g]!=\"string\")throw new TypeError(`tensor data at index ${g} is not a string`);a.setValue(f+g*u,$e(y[g],n),\"*\")}}else{let g=a.webnnIsGraphInput,_=a.webnnIsGraphOutput;if(d!==\"string\"&&g&&_){let w=a.UTF8ToString(o);if(g(r,w)||_(r,w)){let v=He(d);m=qe(v,l),p=\"ml-tensor\";let $=a.webnnCreateTemporaryTensor,T=a.webnnUploadTensor;if(!$||!T)throw new Error('Tensor location \"ml-tensor\" is not supported without using WebNN.');let I=await $(r,v,l);T(I,new Uint8Array(y.buffer,y.byteOffset,y.byteLength)),f=I}else m=y.byteLength,f=a._malloc(m),n.push(f),a.HEAPU8.set(new Uint8Array(y.buffer,y.byteOffset,m),f)}else m=y.byteLength,f=a._malloc(m),n.push(f),a.HEAPU8.set(new Uint8Array(y.buffer,y.byteOffset,m),f)}}let h=a.stackSave(),b=a.stackAlloc(4*l.length);try{l.forEach((g,_)=>a.setValue(b+_*u,g,u===4?\"i32\":\"i64\"));let y=a._OrtCreateTensor(He(d),f,m,b,l.length,Bn(p));y===0&&Y(`Can't create tensor for input/output. session=${r}, index=${i}.`),t.push(y)}finally{a.stackRestore(h)}},Dt=async(e,t,n,r,o,i)=>{let s=ne(),a=s.PTR_SIZE,u=tt.get(e);if(!u)throw new Error(`cannot run inference. invalid session id: ${e}`);let d=u[0],l=u[1],c=u[2],p=u[3],f=u[4],m=u[5],h=t.length,b=r.length,y=0,g=[],_=[],w=[],v=[],$=[],T=s.stackSave(),I=s.stackAlloc(h*a),A=s.stackAlloc(h*a),z=s.stackAlloc(b*a),R=s.stackAlloc(b*a);try{[y,g]=oo(i),Ue(\"wasm prepareInputOutputTensor\");for(let O=0;O<h;O++)await Cu(n[O],_,v,e,l[t[O]],t[O],f);for(let O=0;O<b;O++)await Cu(o[O],w,v,e,c[r[O]],h+r[O],f);Re(\"wasm prepareInputOutputTensor\");for(let O=0;O<h;O++)s.setValue(I+O*a,_[O],\"*\"),s.setValue(A+O*a,l[t[O]],\"*\");for(let O=0;O<b;O++)s.setValue(z+O*a,w[O],\"*\"),s.setValue(R+O*a,c[r[O]],\"*\");if(p&&!m){let{handle:O,outputPreferredLocations:M,outputPreferredLocationsEncoded:V}=p;if(l.length!==h)throw new Error(`input count from feeds (${h}) is expected to be always equal to model's input count (${l.length}).`);Ue(\"wasm bindInputsOutputs\");for(let W=0;W<h;W++){let H=t[W];await s._OrtBindInput(O,l[H],_[W])!==0&&Y(`Can't bind input[${W}] for session=${e}.`)}for(let W=0;W<b;W++){let H=r[W];o[W]?.[3]?($.push(w[W]),s._OrtBindOutput(O,c[H],w[W],0)!==0&&Y(`Can't bind pre-allocated output[${W}] for session=${e}.`)):s._OrtBindOutput(O,c[H],0,V[H])!==0&&Y(`Can't bind output[${W}] to ${M[W]} for session=${e}.`)}Re(\"wasm bindInputsOutputs\"),tt.set(e,[d,l,c,p,f,!0])}s.jsepOnRunStart?.(d),s.webnnOnRunStart?.(d);let D;p?D=await s._OrtRunWithBinding(d,p.handle,b,z,y):D=await s._OrtRun(d,A,I,h,R,b,z,y),D!==0&&Y(\"failed to call OrtRun().\");let U=[],Q=[];Ue(\"wasm ProcessOutputTensor\");for(let O=0;O<b;O++){let M=Number(s.getValue(z+O*a,\"*\"));if(M===w[O]||$.includes(w[O])){U.push(o[O]),M!==w[O]&&s._OrtReleaseTensor(M)!==0&&Y(\"Can't release tensor.\");continue}let V=s.stackSave(),W=s.stackAlloc(4*a),H=!1,X,oe=0;try{s._OrtGetTensorData(M,W,W+a,W+2*a,W+3*a)!==0&&Y(`Can't access output tensor data on index ${O}.`);let q=a===4?\"i32\":\"i64\",E=Number(s.getValue(W,q));oe=s.getValue(W+a,\"*\");let N=s.getValue(W+a*2,\"*\"),se=Number(s.getValue(W+a*3,q)),ve=[];for(let me=0;me<se;me++)ve.push(Number(s.getValue(N+me*a,q)));s._OrtFree(N)!==0&&Y(\"Can't free memory for tensor dims.\");let ge=ve.reduce((me,ae)=>me*ae,1);X=Ee(E);let je=p?.outputPreferredLocations[r[O]];if(X===\"string\"){if(je===\"gpu-buffer\"||je===\"ml-tensor\")throw new Error(\"String tensor is not supported on GPU.\");let me=[];for(let ae=0;ae<ge;ae++){let Le=s.getValue(oe+ae*a,\"*\"),xt=s.getValue(oe+(ae+1)*a,\"*\"),yr=ae===ge-1?void 0:xt-Le;me.push(s.UTF8ToString(Le,yr))}U.push([X,ve,me,\"cpu\"])}else if(je===\"gpu-buffer\"&&ge>0){let me=s.jsepGetBuffer;if(!me)throw new Error('preferredLocation \"gpu-buffer\" is not supported without using WebGPU.');let ae=me(oe),Le=qe(E,ge);if(Le===void 0||!Lt(X))throw new Error(`Unsupported data type: ${X}`);H=!0,U.push([X,ve,{gpuBuffer:ae,download:s.jsepCreateDownloader(ae,Le,X),dispose:()=>{s._OrtReleaseTensor(M)!==0&&Y(\"Can't release tensor.\")}},\"gpu-buffer\"])}else if(je===\"ml-tensor\"&&ge>0){let me=s.webnnEnsureTensor,ae=s.webnnIsGraphInputOutputTypeSupported;if(!me||!ae)throw new Error('preferredLocation \"ml-tensor\" is not supported without using WebNN.');if(qe(E,ge)===void 0||!Gt(X))throw new Error(`Unsupported data type: ${X}`);if(!ae(e,X,!1))throw new Error(`preferredLocation \"ml-tensor\" for ${X} output is not supported by current WebNN Context.`);let xt=await me(e,oe,E,ve,!1);H=!0,U.push([X,ve,{mlTensor:xt,download:s.webnnCreateMLTensorDownloader(oe,X),dispose:()=>{s.webnnReleaseTensorId(oe),s._OrtReleaseTensor(M)}},\"ml-tensor\"])}else if(je===\"ml-tensor-cpu-output\"&&ge>0){let me=s.webnnCreateMLTensorDownloader(oe,X)(),ae=U.length;H=!0,Q.push((async()=>{let Le=[ae,await me];return s.webnnReleaseTensorId(oe),s._OrtReleaseTensor(M),Le})()),U.push([X,ve,[],\"cpu\"])}else{let me=ot(X),ae=new me(ge);new Uint8Array(ae.buffer,ae.byteOffset,ae.byteLength).set(s.HEAPU8.subarray(oe,oe+ae.byteLength)),U.push([X,ve,ae,\"cpu\"])}}finally{s.stackRestore(V),X===\"string\"&&oe&&s._free(oe),H||s._OrtReleaseTensor(M)}}p&&!f&&(s._OrtClearBoundOutputs(p.handle)!==0&&Y(\"Can't clear bound outputs.\"),tt.set(e,[d,l,c,p,f,!1]));for(let[O,M]of await Promise.all(Q))U[O][2]=M;return Re(\"wasm ProcessOutputTensor\"),U}finally{s.webnnOnRunEnd?.(d),s.stackRestore(T),_.forEach(D=>s._OrtReleaseTensor(D)),w.forEach(D=>s._OrtReleaseTensor(D)),v.forEach(D=>s._free(D)),y!==0&&s._OrtReleaseRunOptions(y),g.forEach(D=>s._free(D))}},Ot=e=>{let t=ne(),n=tt.get(e);if(!n)throw new Error(\"invalid session id\");let r=n[0],o=t._OrtEndProfiling(r);o===0&&Y(\"Can't get an profile file name.\"),t._OrtFree(o)},Mt=e=>{let t=[];for(let n of e){let r=n[2];!Array.isArray(r)&&\"buffer\"in r&&t.push(r.buffer)}return t}});var nt,Se,vt,yn,bn,gn,fr,hr,ut,dt,gp,Au,Eu,ku,Pu,zu,Bu,Du,gr=k(()=>{\"use strict\";_e();En();We();At();nt=()=>!!te.wasm.proxy&&typeof document<\"u\",vt=!1,yn=!1,bn=!1,hr=new Map,ut=(e,t)=>{let n=hr.get(e);n?n.push(t):hr.set(e,[t])},dt=()=>{if(vt||!yn||bn||!Se)throw new Error(\"worker not ready\")},gp=e=>{switch(e.data.type){case\"init-wasm\":vt=!1,e.data.err?(bn=!0,fr[1](e.data.err)):(yn=!0,fr[0]()),gn&&(URL.revokeObjectURL(gn),gn=void 0);break;case\"init-ep\":case\"copy-from\":case\"create\":case\"release\":case\"run\":case\"end-profiling\":{let t=hr.get(e.data.type);e.data.err?t.shift()[1](e.data.err):t.shift()[0](e.data.out);break}default:}},Au=async()=>{if(!yn){if(vt)throw new Error(\"multiple calls to 'initWasm()' detected.\");if(bn)throw new Error(\"previous call to 'initWasm()' failed.\");if(vt=!0,nt())return new Promise((e,t)=>{Se?.terminate(),to().then(([n,r])=>{try{Se=r,Se.onerror=i=>t(i),Se.onmessage=gp,fr=[e,t];let o={type:\"init-wasm\",in:te};if(!o.in.wasm.wasmPaths&&n){let i=Ut();i&&(o.in.wasm.wasmPaths=i)}Se.postMessage(o),gn=n}catch(o){t(o)}},t)});try{await Et(te.wasm),await kt(te),yn=!0}catch(e){throw bn=!0,e}finally{vt=!1}}},Eu=async e=>{if(nt())return dt(),new Promise((t,n)=>{ut(\"init-ep\",[t,n]);let r={type:\"init-ep\",in:{epName:e,env:te}};Se.postMessage(r)});await Pt(te,e)},ku=async e=>nt()?(dt(),new Promise((t,n)=>{ut(\"copy-from\",[t,n]);let r={type:\"copy-from\",in:{buffer:e}};Se.postMessage(r,[e.buffer])})):mt(e),Pu=async(e,t)=>{if(nt()){if(t?.preferredOutputLocation)throw new Error('session option \"preferredOutputLocation\" is not supported for proxy.');return dt(),new Promise((n,r)=>{ut(\"create\",[n,r]);let o={type:\"create\",in:{model:e,options:{...t}}},i=[];e instanceof Uint8Array&&i.push(e.buffer),Se.postMessage(o,i)})}else return zt(e,t)},zu=async e=>{if(nt())return dt(),new Promise((t,n)=>{ut(\"release\",[t,n]);let r={type:\"release\",in:e};Se.postMessage(r)});Bt(e)},Bu=async(e,t,n,r,o,i)=>{if(nt()){if(n.some(s=>s[3]!==\"cpu\"))throw new Error(\"input tensor on GPU is not supported for proxy.\");if(o.some(s=>s))throw new Error(\"pre-allocated output tensor is not supported for proxy.\");return dt(),new Promise((s,a)=>{ut(\"run\",[s,a]);let u=n,d={type:\"run\",in:{sessionId:e,inputIndices:t,inputs:u,outputIndices:r,options:i}};Se.postMessage(d,Mt(u))})}else return Dt(e,t,n,r,o,i)},Du=async e=>{if(nt())return dt(),new Promise((t,n)=>{ut(\"end-profiling\",[t,n]);let r={type:\"end-profiling\",in:e};Se.postMessage(r)});Ot(e)}});var Ou,yp,_n,Mu=k(()=>{\"use strict\";_e();gr();L();Ct();Dn();Ou=(e,t)=>{switch(e.location){case\"cpu\":return[e.type,e.dims,e.data,\"cpu\"];case\"gpu-buffer\":return[e.type,e.dims,{gpuBuffer:e.gpuBuffer},\"gpu-buffer\"];case\"ml-tensor\":return[e.type,e.dims,{mlTensor:e.mlTensor},\"ml-tensor\"];default:throw new Error(`invalid data location: ${e.location} for ${t()}`)}},yp=e=>{switch(e[3]){case\"cpu\":return new xe(e[0],e[2],e[1]);case\"gpu-buffer\":{let t=e[0];if(!Lt(t))throw new Error(`not supported data type: ${t} for deserializing GPU tensor`);let{gpuBuffer:n,download:r,dispose:o}=e[2];return xe.fromGpuBuffer(n,{dataType:t,dims:e[1],download:r,dispose:o})}case\"ml-tensor\":{let t=e[0];if(!Gt(t))throw new Error(`not supported data type: ${t} for deserializing MLTensor tensor`);let{mlTensor:n,download:r,dispose:o}=e[2];return xe.fromMLTensor(n,{dataType:t,dims:e[1],download:r,dispose:o})}default:throw new Error(`invalid data location: ${e[3]}`)}},_n=class{async fetchModelAndCopyToWasmMemory(t){return ku(await gt(t))}async loadModel(t,n){ye();let r;typeof t==\"string\"?r=await this.fetchModelAndCopyToWasmMemory(t):r=t,[this.sessionId,this.inputNames,this.outputNames,this.inputMetadata,this.outputMetadata]=await Pu(r,n),he()}async dispose(){return zu(this.sessionId)}async run(t,n,r){ye();let o=[],i=[];Object.entries(t).forEach(p=>{let f=p[0],m=p[1],h=this.inputNames.indexOf(f);if(h===-1)throw new Error(`invalid input '${f}'`);o.push(m),i.push(h)});let s=[],a=[];Object.entries(n).forEach(p=>{let f=p[0],m=p[1],h=this.outputNames.indexOf(f);if(h===-1)throw new Error(`invalid output '${f}'`);s.push(m),a.push(h)});let u=o.map((p,f)=>Ou(p,()=>`input \"${this.inputNames[i[f]]}\"`)),d=s.map((p,f)=>p?Ou(p,()=>`output \"${this.outputNames[a[f]]}\"`):null),l=await Bu(this.sessionId,i,u,a,d,r),c={};for(let p=0;p<l.length;p++)c[this.outputNames[a[p]]]=s[p]??yp(l[p]);return he(),c}startProfiling(){}endProfiling(){Du(this.sessionId)}}});var Ru={};rt(Ru,{OnnxruntimeWebAssemblyBackend:()=>wn,initializeFlags:()=>Uu,wasmBackend:()=>bp});var Uu,wn,bp,Vu=k(()=>{\"use strict\";_e();gr();Mu();Uu=()=>{(typeof te.wasm.initTimeout!=\"number\"||te.wasm.initTimeout<0)&&(te.wasm.initTimeout=0);let e=te.wasm.simd;if(typeof e!=\"boolean\"&&e!==void 0&&e!==\"fixed\"&&e!==\"relaxed\"&&(console.warn(`Property \"env.wasm.simd\" is set to unknown value \"${e}\". Reset it to \\`false\\` and ignore SIMD feature checking.`),te.wasm.simd=!1),typeof te.wasm.proxy!=\"boolean\"&&(te.wasm.proxy=!1),typeof te.wasm.trace!=\"boolean\"&&(te.wasm.trace=!1),typeof te.wasm.numThreads!=\"number\"||!Number.isInteger(te.wasm.numThreads)||te.wasm.numThreads<=0)if(typeof self<\"u\"&&!self.crossOriginIsolated)te.wasm.numThreads=1;else{let t=typeof navigator>\"u\"?vn(\"node:os\").cpus().length:navigator.hardwareConcurrency;te.wasm.numThreads=Math.min(4,Math.ceil((t||1)/2))}},wn=class{async init(t){Uu(),await Au(),await Eu(t)}async createInferenceSessionHandler(t,n){let r=new _n;return await r.loadModel(t,n),r}},bp=new wn});var wp={};rt(wp,{InferenceSession:()=>Lr,TRACE:()=>pt,TRACE_EVENT_BEGIN:()=>Ue,TRACE_EVENT_END:()=>Re,TRACE_FUNC_BEGIN:()=>ye,TRACE_FUNC_END:()=>he,Tensor:()=>xe,default:()=>_p,env:()=>te,registerBackend:()=>Ge});_e();_e();_e();var Kr=\"1.24.3\";var _p=An;{let e=(Vu(),lt(Ru)).wasmBackend;Ge(\"webgpu\",e,5),Ge(\"webnn\",e,5),Ge(\"cpu\",e,10),Ge(\"wasm\",e,10)}Object.defineProperty(te.versions,\"web\",{value:Kr,enumerable:!0});return lt(wp);})();\n/**\n * @license\n * Copyright 2021 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n/**\n * @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\ntypeof exports==\"object\"&&typeof module==\"object\"&&(module.exports=ort);\n//# sourceMappingURL=ort.min.js.map\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=common.js.map","\"use strict\";\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SileroLegacy = void 0;\nconst logging_1 = require(\"../logging\");\nclass SileroLegacy {\n constructor(ortInstance, _session, _h, _c, _sr) {\n this.ortInstance = ortInstance;\n this._session = _session;\n this._h = _h;\n this._c = _c;\n this._sr = _sr;\n this.reset_state = () => {\n const zeroes = Array(2 * 64).fill(0);\n this._h = new this.ortInstance.Tensor(\"float32\", zeroes, [2, 1, 64]);\n this._c = new this.ortInstance.Tensor(\"float32\", zeroes, [2, 1, 64]);\n };\n this.process = async (audioFrame) => {\n const t = new this.ortInstance.Tensor(\"float32\", audioFrame, [\n 1,\n audioFrame.length,\n ]);\n const inputs = {\n input: t,\n h: this._h,\n c: this._c,\n sr: this._sr,\n };\n const out = await this._session.run(inputs);\n this._h = out[\"hn\"];\n this._c = out[\"cn\"];\n const [isSpeech] = out[\"output\"]?.data;\n const notSpeech = 1 - isSpeech;\n return { notSpeech, isSpeech };\n };\n this.release = async () => {\n await this._session.release();\n this._h.dispose();\n this._c.dispose();\n this._sr.dispose();\n };\n }\n}\nexports.SileroLegacy = SileroLegacy;\n_a = SileroLegacy;\nSileroLegacy.new = async (ortInstance, modelFetcher) => {\n logging_1.log.debug(\"initializing vad\");\n const modelArrayBuffer = await modelFetcher();\n const _session = await ortInstance.InferenceSession.create(modelArrayBuffer);\n const _sr = new ortInstance.Tensor(\"int64\", [16000n]);\n const zeroes = Array(2 * 64).fill(0);\n const _h = new ortInstance.Tensor(\"float32\", zeroes, [2, 1, 64]);\n const _c = new ortInstance.Tensor(\"float32\", zeroes, [2, 1, 64]);\n logging_1.log.debug(\"vad is initialized\");\n const model = new _a(ortInstance, _session, _h, _c, _sr);\n return model;\n};\n//# sourceMappingURL=legacy.js.map","\"use strict\";\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SileroV5 = void 0;\nconst logging_1 = require(\"../logging\");\nfunction getNewState(ortInstance) {\n const zeroes = Array(2 * 128).fill(0);\n return new ortInstance.Tensor(\"float32\", zeroes, [2, 1, 128]);\n}\nclass SileroV5 {\n constructor(_session, _state, _sr, ortInstance) {\n this._session = _session;\n this._state = _state;\n this._sr = _sr;\n this.ortInstance = ortInstance;\n this.reset_state = () => {\n this._state = getNewState(this.ortInstance);\n };\n this.process = async (audioFrame) => {\n const t = new this.ortInstance.Tensor(\"float32\", audioFrame, [\n 1,\n audioFrame.length,\n ]);\n const inputs = {\n input: t,\n state: this._state,\n sr: this._sr,\n };\n const out = await this._session.run(inputs);\n if (!out[\"stateN\"]) {\n throw new Error(\"No state from model\");\n }\n this._state = out[\"stateN\"];\n if (!out[\"output\"]?.data) {\n throw new Error(\"No output from model\");\n }\n const isSpeech = out[\"output\"].data[0];\n if (typeof isSpeech != \"number\") {\n throw new Error(\"Weird output data\");\n }\n const notSpeech = 1 - isSpeech;\n return { notSpeech, isSpeech };\n };\n this.release = async () => {\n await this._session.release();\n this._state.dispose();\n this._sr.dispose();\n };\n }\n}\nexports.SileroV5 = SileroV5;\n_a = SileroV5;\nSileroV5.new = async (ortInstance, modelFetcher) => {\n logging_1.log.debug(\"Loading VAD...\");\n const modelArrayBuffer = await modelFetcher();\n const _session = await ortInstance.InferenceSession.create(modelArrayBuffer);\n const _sr = new ortInstance.Tensor(\"int64\", [16000n]);\n const _state = getNewState(ortInstance);\n logging_1.log.debug(\"...finished loading VAD\");\n return new _a(_session, _state, _sr, ortInstance);\n};\n//# sourceMappingURL=v5.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SileroV5 = exports.SileroLegacy = void 0;\n__exportStar(require(\"./common\"), exports);\nvar legacy_1 = require(\"./legacy\");\nObject.defineProperty(exports, \"SileroLegacy\", { enumerable: true, get: function () { return legacy_1.SileroLegacy; } });\nvar v5_1 = require(\"./v5\");\nObject.defineProperty(exports, \"SileroV5\", { enumerable: true, get: function () { return v5_1.SileroV5; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Resampler = void 0;\nconst logging_1 = require(\"./logging\");\nclass Resampler {\n constructor(options) {\n this.options = options;\n this.process = (audioFrame) => {\n const outputFrames = [];\n for (const sample of audioFrame) {\n this.inputBuffer.push(sample);\n while (this.hasEnoughDataForFrame()) {\n const outputFrame = this.generateOutputFrame();\n outputFrames.push(outputFrame);\n }\n }\n return outputFrames;\n };\n if (options.nativeSampleRate < 16000) {\n logging_1.log.error(\"nativeSampleRate is too low. Should have 16000 = targetSampleRate <= nativeSampleRate\");\n }\n this.inputBuffer = [];\n }\n async *stream(audioInput) {\n for (const sample of audioInput) {\n this.inputBuffer.push(sample);\n while (this.hasEnoughDataForFrame()) {\n const outputFrame = this.generateOutputFrame();\n yield outputFrame;\n }\n }\n }\n hasEnoughDataForFrame() {\n return ((this.inputBuffer.length * this.options.targetSampleRate) /\n this.options.nativeSampleRate >=\n this.options.targetFrameSize);\n }\n generateOutputFrame() {\n const outputFrame = new Float32Array(this.options.targetFrameSize);\n let outputIndex = 0;\n let inputIndex = 0;\n while (outputIndex < this.options.targetFrameSize) {\n let sum = 0;\n let num = 0;\n while (inputIndex <\n Math.min(this.inputBuffer.length, ((outputIndex + 1) * this.options.nativeSampleRate) /\n this.options.targetSampleRate)) {\n const value = this.inputBuffer[inputIndex];\n if (value !== undefined) {\n sum += value;\n num++;\n }\n inputIndex++;\n }\n outputFrame[outputIndex] = sum / num;\n outputIndex++;\n }\n this.inputBuffer = this.inputBuffer.slice(inputIndex);\n return outputFrame;\n }\n}\nexports.Resampler = Resampler;\n//# sourceMappingURL=resampler.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NonRealTimeVAD = exports.defaultNonRealTimeVADOptions = void 0;\nconst ortInstance = __importStar(require(\"onnxruntime-web\"));\nconst asset_path_1 = require(\"./asset-path\");\nconst default_model_fetcher_1 = require(\"./default-model-fetcher\");\nconst frame_processor_1 = require(\"./frame-processor\");\nconst messages_1 = require(\"./messages\");\nconst models_1 = require(\"./models\");\nconst resampler_1 = require(\"./resampler\");\nexports.defaultNonRealTimeVADOptions = {\n ...frame_processor_1.defaultFrameProcessorOptions,\n modelURL: asset_path_1.baseAssetPath + \"silero_vad_legacy.onnx\",\n modelFetcher: default_model_fetcher_1.defaultModelFetcher,\n};\nclass NonRealTimeVAD {\n static async new(options = {}) {\n const fullOptions = {\n ...exports.defaultNonRealTimeVADOptions,\n ...options,\n };\n (0, frame_processor_1.validateOptions)(fullOptions);\n if (fullOptions.ortConfig !== undefined) {\n fullOptions.ortConfig(ortInstance);\n }\n const modelFetcher = () => fullOptions.modelFetcher(fullOptions.modelURL);\n const model = await models_1.SileroLegacy.new(ortInstance, modelFetcher);\n const frameProcessor = new frame_processor_1.FrameProcessor(model.process, model.reset_state, {\n positiveSpeechThreshold: fullOptions.positiveSpeechThreshold,\n negativeSpeechThreshold: fullOptions.negativeSpeechThreshold,\n redemptionMs: fullOptions.redemptionMs,\n preSpeechPadMs: fullOptions.preSpeechPadMs,\n minSpeechMs: fullOptions.minSpeechMs,\n submitUserSpeechOnPause: fullOptions.submitUserSpeechOnPause,\n }, 1536 / 16);\n frameProcessor.resume();\n const vad = new this(modelFetcher, ortInstance, fullOptions, frameProcessor);\n return vad;\n }\n constructor(modelFetcher, ort, options, frameProcessor) {\n this.modelFetcher = modelFetcher;\n this.ort = ort;\n this.options = options;\n this.frameProcessor = frameProcessor;\n this.frameSamples = 1536;\n }\n async *run(inputAudio, sampleRate) {\n const resamplerOptions = {\n nativeSampleRate: sampleRate,\n targetSampleRate: 16000,\n targetFrameSize: this.frameSamples,\n };\n const resampler = new resampler_1.Resampler(resamplerOptions);\n let start = 0;\n let end = 0;\n let frameIndex = 0;\n for await (const frame of resampler.stream(inputAudio)) {\n const messageContainer = [];\n await this.frameProcessor.process(frame, (event) => {\n messageContainer.push(event);\n });\n for (const event of messageContainer) {\n switch (event.msg) {\n case messages_1.Message.SpeechStart:\n start = (frameIndex * this.frameSamples) / 16;\n break;\n case messages_1.Message.SpeechEnd:\n end = ((frameIndex + 1) * this.frameSamples) / 16;\n yield { audio: event.audio, start, end };\n break;\n default:\n break;\n }\n }\n frameIndex++;\n }\n const messageContainer = [];\n this.frameProcessor.endSegment((event) => {\n messageContainer.push(event);\n });\n for (const event of messageContainer) {\n switch (event.msg) {\n case messages_1.Message.SpeechEnd:\n yield {\n audio: event.audio,\n start,\n end: (frameIndex * this.frameSamples) / 16,\n };\n }\n }\n }\n}\nexports.NonRealTimeVAD = NonRealTimeVAD;\n//# sourceMappingURL=non-real-time-vad.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.audioFileToArray = exports.encodeWAV = exports.arrayBufferToBase64 = exports.minFramesForTargetMS = void 0;\nfunction minFramesForTargetMS(targetDuration, frameSamples, sr = 16000) {\n return Math.ceil((targetDuration * sr) / 1000 / frameSamples);\n}\nexports.minFramesForTargetMS = minFramesForTargetMS;\nfunction arrayBufferToBase64(buffer) {\n const bytes = new Uint8Array(buffer);\n const len = bytes.byteLength;\n const binary = new Array(len);\n for (let i = 0; i < len; i++) {\n const byte = bytes[i];\n if (byte === undefined) {\n break;\n }\n binary[i] = String.fromCharCode(byte);\n }\n return btoa(binary.join(\"\"));\n}\nexports.arrayBufferToBase64 = arrayBufferToBase64;\n/*\nThis rest of this was mostly copied from https://github.com/linto-ai/WebVoiceSDK\n*/\nfunction encodeWAV(samples, format = 3, sampleRate = 16000, numChannels = 1, bitDepth = 32) {\n const bytesPerSample = bitDepth / 8;\n const blockAlign = numChannels * bytesPerSample;\n const buffer = new ArrayBuffer(44 + samples.length * bytesPerSample);\n const view = new DataView(buffer);\n /* RIFF identifier */\n writeString(view, 0, \"RIFF\");\n /* RIFF chunk length */\n view.setUint32(4, 36 + samples.length * bytesPerSample, true);\n /* RIFF type */\n writeString(view, 8, \"WAVE\");\n /* format chunk identifier */\n writeString(view, 12, \"fmt \");\n /* format chunk length */\n view.setUint32(16, 16, true);\n /* sample format (raw) */\n view.setUint16(20, format, true);\n /* channel count */\n view.setUint16(22, numChannels, true);\n /* sample rate */\n view.setUint32(24, sampleRate, true);\n /* byte rate (sample rate * block align) */\n view.setUint32(28, sampleRate * blockAlign, true);\n /* block align (channel count * bytes per sample) */\n view.setUint16(32, blockAlign, true);\n /* bits per sample */\n view.setUint16(34, bitDepth, true);\n /* data chunk identifier */\n writeString(view, 36, \"data\");\n /* data chunk length */\n view.setUint32(40, samples.length * bytesPerSample, true);\n if (format === 1) {\n // Raw PCM\n floatTo16BitPCM(view, 44, samples);\n }\n else {\n writeFloat32(view, 44, samples);\n }\n return buffer;\n}\nexports.encodeWAV = encodeWAV;\nfunction writeFloat32(output, offset, input) {\n for (let i = 0; i < input.length; i++, offset += 4) {\n output.setFloat32(offset, input[i], true);\n }\n}\nfunction floatTo16BitPCM(output, offset, input) {\n for (let i = 0; i < input.length; i++, offset += 2) {\n const s = Math.max(-1, Math.min(1, input[i]));\n output.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7fff, true);\n }\n}\nfunction writeString(view, offset, string) {\n for (let i = 0; i < string.length; i++) {\n view.setUint8(offset + i, string.charCodeAt(i));\n }\n}\nasync function audioFileToArray(audioFileData) {\n const ctx = new OfflineAudioContext(1, 1, 44100);\n const reader = new FileReader();\n let audioBuffer = null;\n await new Promise((res) => {\n reader.addEventListener(\"loadend\", () => {\n const audioData = reader.result;\n void ctx.decodeAudioData(audioData, (buffer) => {\n audioBuffer = buffer;\n ctx\n .startRendering()\n .then(() => {\n console.log(\"Rendering completed successfully\");\n res();\n })\n .catch((err) => {\n console.error(\"Rendering failed: \", err);\n });\n }, (e) => {\n console.log(\"Error with decoding audio data: \", e);\n });\n });\n reader.readAsArrayBuffer(audioFileData);\n });\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (audioBuffer === null) {\n throw Error(\"some shit\");\n }\n const _audioBuffer = audioBuffer;\n const out = new Float32Array(_audioBuffer.length);\n for (let i = 0; i < _audioBuffer.length; i++) {\n for (let j = 0; j < _audioBuffer.numberOfChannels; j++) {\n const sample = _audioBuffer.getChannelData(j)[i];\n const current = out[i];\n if (sample === undefined || current === undefined) {\n throw new Error(\"sample or out[i] is undefined\");\n }\n out[i] = current + sample;\n }\n }\n return { audio: out, sampleRate: _audioBuffer.sampleRate };\n}\nexports.audioFileToArray = audioFileToArray;\n//# sourceMappingURL=utils.js.map","/*!\n * ONNX Runtime Web v1.24.3\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\"use strict\";var ort=(()=>{var Je=Object.defineProperty;var Bn=Object.getOwnPropertyDescriptor;var Ln=Object.getOwnPropertyNames;var Pn=Object.prototype.hasOwnProperty;var Ye=(e=>typeof require<\"u\"?require:typeof Proxy<\"u\"?new Proxy(e,{get:(t,n)=>(typeof require<\"u\"?require:t)[n]}):e)(function(e){if(typeof require<\"u\")return require.apply(this,arguments);throw Error('Dynamic require of \"'+e+'\" is not supported')});var E=(e,t)=>()=>(e&&(t=e(e=0)),t);var Ee=(e,t)=>{for(var n in t)Je(e,n,{get:t[n],enumerable:!0})},Dn=(e,t,n,o)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let r of Ln(t))!Pn.call(e,r)&&r!==n&&Je(e,r,{get:()=>t[r],enumerable:!(o=Bn(t,r))||o.enumerable});return e};var qe=e=>Dn(Je({},\"__esModule\",{value:!0}),e);var Se,K,se,_n,bt,Ze=E(()=>{\"use strict\";Se=new Map,K=[],se=(e,t,n)=>{if(t&&typeof t.init==\"function\"&&typeof t.createInferenceSessionHandler==\"function\"){let o=Se.get(e);if(o===void 0)Se.set(e,{backend:t,priority:n});else{if(o.priority>n)return;if(o.priority===n&&o.backend!==t)throw new Error(`cannot register backend \"${e}\" using priority ${n}`)}if(n>=0){let r=K.indexOf(e);r!==-1&&K.splice(r,1);for(let i=0;i<K.length;i++)if(Se.get(K[i]).priority<=n){K.splice(i,0,e);return}K.push(e)}return}throw new TypeError(\"not a valid backend\")},_n=async e=>{let t=Se.get(e);if(!t)return\"backend not found.\";if(t.initialized)return t.backend;if(t.aborted)return t.error;{let n=!!t.initPromise;try{return n||(t.initPromise=t.backend.init(e)),await t.initPromise,t.initialized=!0,t.backend}catch(o){return n||(t.error=`${o}`,t.aborted=!0),t.error}finally{delete t.initPromise}}},bt=async e=>{let t=e.executionProviders||[],n=t.map(u=>typeof u==\"string\"?u:u.name),o=n.length===0?K:n,r,i=[],s=new Set;for(let u of o){let f=await _n(u);typeof f==\"string\"?i.push({name:u,err:f}):(r||(r=f),r===f&&s.add(u))}if(!r)throw new Error(`no available backend found. ERR: ${i.map(u=>`[${u.name}] ${u.err}`).join(\", \")}`);for(let{name:u,err:f}of i)n.includes(u)&&console.warn(`removing requested execution provider \"${u}\" from session options because it is not available: ${f}`);let a=t.filter(u=>s.has(typeof u==\"string\"?u:u.name));return[r,new Proxy(e,{get:(u,f)=>f===\"executionProviders\"?a:Reflect.get(u,f)})]}});var yt=E(()=>{\"use strict\";Ze()});var gt,Et=E(()=>{\"use strict\";gt=\"1.24.3\"});var St,D,Xe=E(()=>{\"use strict\";Et();St=\"warning\",D={wasm:{},webgl:{},webgpu:{},versions:{common:gt},set logLevel(e){if(e!==void 0){if(typeof e!=\"string\"||[\"verbose\",\"info\",\"warning\",\"error\",\"fatal\"].indexOf(e)===-1)throw new Error(`Unsupported logging level: ${e}`);St=e}},get logLevel(){return St}};Object.defineProperty(D,\"logLevel\",{enumerable:!0})});var A,Tt=E(()=>{\"use strict\";Xe();A=D});var It,At,Ot=E(()=>{\"use strict\";It=(e,t)=>{let n=typeof document<\"u\"?document.createElement(\"canvas\"):new OffscreenCanvas(1,1);n.width=e.dims[3],n.height=e.dims[2];let o=n.getContext(\"2d\");if(o!=null){let r,i;t?.tensorLayout!==void 0&&t.tensorLayout===\"NHWC\"?(r=e.dims[2],i=e.dims[3]):(r=e.dims[3],i=e.dims[2]);let s=t?.format!==void 0?t.format:\"RGB\",a=t?.norm,u,f;a===void 0||a.mean===void 0?u=[255,255,255,255]:typeof a.mean==\"number\"?u=[a.mean,a.mean,a.mean,a.mean]:(u=[a.mean[0],a.mean[1],a.mean[2],0],a.mean[3]!==void 0&&(u[3]=a.mean[3])),a===void 0||a.bias===void 0?f=[0,0,0,0]:typeof a.bias==\"number\"?f=[a.bias,a.bias,a.bias,a.bias]:(f=[a.bias[0],a.bias[1],a.bias[2],0],a.bias[3]!==void 0&&(f[3]=a.bias[3]));let l=i*r,c=0,d=l,p=l*2,h=-1;s===\"RGBA\"?(c=0,d=l,p=l*2,h=l*3):s===\"RGB\"?(c=0,d=l,p=l*2):s===\"RBG\"&&(c=0,p=l,d=l*2);for(let y=0;y<i;y++)for(let O=0;O<r;O++){let m=(e.data[c++]-f[0])*u[0],w=(e.data[d++]-f[1])*u[1],B=(e.data[p++]-f[2])*u[2],g=h===-1?255:(e.data[h++]-f[3])*u[3];o.fillStyle=\"rgba(\"+m+\",\"+w+\",\"+B+\",\"+g+\")\",o.fillRect(O,y,1,1)}if(\"toDataURL\"in n)return n.toDataURL();throw new Error(\"toDataURL is not supported\")}else throw new Error(\"Can not access image data\")},At=(e,t)=>{let n=typeof document<\"u\"?document.createElement(\"canvas\").getContext(\"2d\"):new OffscreenCanvas(1,1).getContext(\"2d\"),o;if(n!=null){let r,i,s;t?.tensorLayout!==void 0&&t.tensorLayout===\"NHWC\"?(r=e.dims[2],i=e.dims[1],s=e.dims[3]):(r=e.dims[3],i=e.dims[2],s=e.dims[1]);let a=t!==void 0&&t.format!==void 0?t.format:\"RGB\",u=t?.norm,f,l;u===void 0||u.mean===void 0?f=[255,255,255,255]:typeof u.mean==\"number\"?f=[u.mean,u.mean,u.mean,u.mean]:(f=[u.mean[0],u.mean[1],u.mean[2],255],u.mean[3]!==void 0&&(f[3]=u.mean[3])),u===void 0||u.bias===void 0?l=[0,0,0,0]:typeof u.bias==\"number\"?l=[u.bias,u.bias,u.bias,u.bias]:(l=[u.bias[0],u.bias[1],u.bias[2],0],u.bias[3]!==void 0&&(l[3]=u.bias[3]));let c=i*r;if(t!==void 0&&(t.format!==void 0&&s===4&&t.format!==\"RGBA\"||s===3&&t.format!==\"RGB\"&&t.format!==\"BGR\"))throw new Error(\"Tensor format doesn't match input tensor dims\");let d=4,p=0,h=1,y=2,O=3,m=0,w=c,B=c*2,g=-1;a===\"RGBA\"?(m=0,w=c,B=c*2,g=c*3):a===\"RGB\"?(m=0,w=c,B=c*2):a===\"RBG\"&&(m=0,B=c,w=c*2),o=n.createImageData(r,i);for(let T=0;T<i*r;p+=d,h+=d,y+=d,O+=d,T++)o.data[p]=(e.data[m++]-l[0])*f[0],o.data[h]=(e.data[w++]-l[1])*f[1],o.data[y]=(e.data[B++]-l[2])*f[2],o.data[O]=g===-1?255:(e.data[g++]-l[3])*f[3]}else throw new Error(\"Can not access image data\");return o}});var Ke,Bt,Lt,Pt,Dt,_t,Ut=E(()=>{\"use strict\";Te();Ke=(e,t)=>{if(e===void 0)throw new Error(\"Image buffer must be defined\");if(t.height===void 0||t.width===void 0)throw new Error(\"Image height and width must be defined\");if(t.tensorLayout===\"NHWC\")throw new Error(\"NHWC Tensor layout is not supported yet\");let{height:n,width:o}=t,r=t.norm??{mean:255,bias:0},i,s;typeof r.mean==\"number\"?i=[r.mean,r.mean,r.mean,r.mean]:i=[r.mean[0],r.mean[1],r.mean[2],r.mean[3]??255],typeof r.bias==\"number\"?s=[r.bias,r.bias,r.bias,r.bias]:s=[r.bias[0],r.bias[1],r.bias[2],r.bias[3]??0];let a=t.format!==void 0?t.format:\"RGBA\",u=t.tensorFormat!==void 0&&t.tensorFormat!==void 0?t.tensorFormat:\"RGB\",f=n*o,l=u===\"RGBA\"?new Float32Array(f*4):new Float32Array(f*3),c=4,d=0,p=1,h=2,y=3,O=0,m=f,w=f*2,B=-1;a===\"RGB\"&&(c=3,d=0,p=1,h=2,y=-1),u===\"RGBA\"?B=f*3:u===\"RBG\"?(O=0,w=f,m=f*2):u===\"BGR\"&&(w=0,m=f,O=f*2);for(let T=0;T<f;T++,d+=c,h+=c,p+=c,y+=c)l[O++]=(e[d]+s[0])/i[0],l[m++]=(e[p]+s[1])/i[1],l[w++]=(e[h]+s[2])/i[2],B!==-1&&y!==-1&&(l[B++]=(e[y]+s[3])/i[3]);return u===\"RGBA\"?new x(\"float32\",l,[1,4,n,o]):new x(\"float32\",l,[1,3,n,o])},Bt=async(e,t)=>{let n=typeof HTMLImageElement<\"u\"&&e instanceof HTMLImageElement,o=typeof ImageData<\"u\"&&e instanceof ImageData,r=typeof ImageBitmap<\"u\"&&e instanceof ImageBitmap,i=typeof e==\"string\",s,a=t??{},u=()=>{if(typeof document<\"u\")return document.createElement(\"canvas\");if(typeof OffscreenCanvas<\"u\")return new OffscreenCanvas(1,1);throw new Error(\"Canvas is not supported\")},f=l=>typeof HTMLCanvasElement<\"u\"&&l instanceof HTMLCanvasElement||l instanceof OffscreenCanvas?l.getContext(\"2d\"):null;if(n){let l=u();l.width=e.width,l.height=e.height;let c=f(l);if(c!=null){let d=e.height,p=e.width;if(t!==void 0&&t.resizedHeight!==void 0&&t.resizedWidth!==void 0&&(d=t.resizedHeight,p=t.resizedWidth),t!==void 0){if(a=t,t.tensorFormat!==void 0)throw new Error(\"Image input config format must be RGBA for HTMLImageElement\");a.tensorFormat=\"RGBA\",a.height=d,a.width=p}else a.tensorFormat=\"RGBA\",a.height=d,a.width=p;c.drawImage(e,0,0),s=c.getImageData(0,0,p,d).data}else throw new Error(\"Can not access image data\")}else if(o){let l,c;if(t!==void 0&&t.resizedWidth!==void 0&&t.resizedHeight!==void 0?(l=t.resizedHeight,c=t.resizedWidth):(l=e.height,c=e.width),t!==void 0&&(a=t),a.format=\"RGBA\",a.height=l,a.width=c,t!==void 0){let d=u();d.width=c,d.height=l;let p=f(d);if(p!=null)p.putImageData(e,0,0),s=p.getImageData(0,0,c,l).data;else throw new Error(\"Can not access image data\")}else s=e.data}else if(r){if(t===void 0)throw new Error(\"Please provide image config with format for Imagebitmap\");let l=u();l.width=e.width,l.height=e.height;let c=f(l);if(c!=null){let d=e.height,p=e.width;return c.drawImage(e,0,0,p,d),s=c.getImageData(0,0,p,d).data,a.height=d,a.width=p,Ke(s,a)}else throw new Error(\"Can not access image data\")}else{if(i)return new Promise((l,c)=>{let d=u(),p=f(d);if(!e||!p)return c();let h=new Image;h.crossOrigin=\"Anonymous\",h.src=e,h.onload=()=>{d.width=h.width,d.height=h.height,p.drawImage(h,0,0,d.width,d.height);let y=p.getImageData(0,0,d.width,d.height);a.height=d.height,a.width=d.width,l(Ke(y.data,a))}});throw new Error(\"Input data provided is not supported - aborted tensor creation\")}if(s!==void 0)return Ke(s,a);throw new Error(\"Input data provided is not supported - aborted tensor creation\")},Lt=(e,t)=>{let{width:n,height:o,download:r,dispose:i}=t,s=[1,o,n,4];return new x({location:\"texture\",type:\"float32\",texture:e,dims:s,download:r,dispose:i})},Pt=(e,t)=>{let{dataType:n,dims:o,download:r,dispose:i}=t;return new x({location:\"gpu-buffer\",type:n??\"float32\",gpuBuffer:e,dims:o,download:r,dispose:i})},Dt=(e,t)=>{let{dataType:n,dims:o,download:r,dispose:i}=t;return new x({location:\"ml-tensor\",type:n??\"float32\",mlTensor:e,dims:o,download:r,dispose:i})},_t=(e,t,n)=>new x({location:\"cpu-pinned\",type:e,data:t,dims:n??[t.length]})});var Q,pe,xt,vt,Ct=E(()=>{\"use strict\";Q=new Map([[\"float32\",Float32Array],[\"uint8\",Uint8Array],[\"int8\",Int8Array],[\"uint16\",Uint16Array],[\"int16\",Int16Array],[\"int32\",Int32Array],[\"bool\",Uint8Array],[\"float64\",Float64Array],[\"uint32\",Uint32Array],[\"int4\",Uint8Array],[\"uint4\",Uint8Array]]),pe=new Map([[Float32Array,\"float32\"],[Uint8Array,\"uint8\"],[Int8Array,\"int8\"],[Uint16Array,\"uint16\"],[Int16Array,\"int16\"],[Int32Array,\"int32\"],[Float64Array,\"float64\"],[Uint32Array,\"uint32\"]]),xt=!1,vt=()=>{if(!xt){xt=!0;let e=typeof BigInt64Array<\"u\"&&BigInt64Array.from,t=typeof BigUint64Array<\"u\"&&BigUint64Array.from,n=globalThis.Float16Array,o=typeof n<\"u\"&&n.from;e&&(Q.set(\"int64\",BigInt64Array),pe.set(BigInt64Array,\"int64\")),t&&(Q.set(\"uint64\",BigUint64Array),pe.set(BigUint64Array,\"uint64\")),o?(Q.set(\"float16\",n),pe.set(n,\"float16\")):Q.set(\"float16\",Uint16Array)}}});var Mt,Rt,Ft=E(()=>{\"use strict\";Te();Mt=e=>{let t=1;for(let n=0;n<e.length;n++){let o=e[n];if(typeof o!=\"number\"||!Number.isSafeInteger(o))throw new TypeError(`dims[${n}] must be an integer, got: ${o}`);if(o<0)throw new RangeError(`dims[${n}] must be a non-negative integer, got: ${o}`);t*=o}return t},Rt=(e,t)=>{switch(e.location){case\"cpu\":return new x(e.type,e.data,t);case\"cpu-pinned\":return new x({location:\"cpu-pinned\",data:e.data,type:e.type,dims:t});case\"texture\":return new x({location:\"texture\",texture:e.texture,type:e.type,dims:t});case\"gpu-buffer\":return new x({location:\"gpu-buffer\",gpuBuffer:e.gpuBuffer,type:e.type,dims:t});case\"ml-tensor\":return new x({location:\"ml-tensor\",mlTensor:e.mlTensor,type:e.type,dims:t});default:throw new Error(`tensorReshape: tensor location ${e.location} is not supported`)}}});var x,Te=E(()=>{\"use strict\";Ot();Ut();Ct();Ft();x=class{constructor(t,n,o){vt();let r,i;if(typeof t==\"object\"&&\"location\"in t)switch(this.dataLocation=t.location,r=t.type,i=t.dims,t.location){case\"cpu-pinned\":{let a=Q.get(r);if(!a)throw new TypeError(`unsupported type \"${r}\" to create tensor from pinned buffer`);if(!(t.data instanceof a))throw new TypeError(`buffer should be of type ${a.name}`);this.cpuData=t.data;break}case\"texture\":{if(r!==\"float32\")throw new TypeError(`unsupported type \"${r}\" to create tensor from texture`);this.gpuTextureData=t.texture,this.downloader=t.download,this.disposer=t.dispose;break}case\"gpu-buffer\":{if(r!==\"float32\"&&r!==\"float16\"&&r!==\"int32\"&&r!==\"int64\"&&r!==\"uint32\"&&r!==\"uint8\"&&r!==\"bool\"&&r!==\"uint4\"&&r!==\"int4\")throw new TypeError(`unsupported type \"${r}\" to create tensor from gpu buffer`);this.gpuBufferData=t.gpuBuffer,this.downloader=t.download,this.disposer=t.dispose;break}case\"ml-tensor\":{if(r!==\"float32\"&&r!==\"float16\"&&r!==\"int32\"&&r!==\"int64\"&&r!==\"uint32\"&&r!==\"uint64\"&&r!==\"int8\"&&r!==\"uint8\"&&r!==\"bool\"&&r!==\"uint4\"&&r!==\"int4\")throw new TypeError(`unsupported type \"${r}\" to create tensor from MLTensor`);this.mlTensorData=t.mlTensor,this.downloader=t.download,this.disposer=t.dispose;break}default:throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let a,u;if(typeof t==\"string\")if(r=t,u=o,t===\"string\"){if(!Array.isArray(n))throw new TypeError(\"A string tensor's data must be a string array.\");a=n}else{let f=Q.get(t);if(f===void 0)throw new TypeError(`Unsupported tensor type: ${t}.`);if(Array.isArray(n)){if(t===\"float16\"&&f===Uint16Array||t===\"uint4\"||t===\"int4\")throw new TypeError(`Creating a ${t} tensor from number array is not supported. Please use ${f.name} as data.`);t===\"uint64\"||t===\"int64\"?a=f.from(n,BigInt):a=f.from(n)}else if(n instanceof f)a=n;else if(n instanceof Uint8ClampedArray)if(t===\"uint8\")a=Uint8Array.from(n);else throw new TypeError(\"A Uint8ClampedArray tensor's data must be type of uint8\");else if(t===\"float16\"&&n instanceof Uint16Array&&f!==Uint16Array)a=new globalThis.Float16Array(n.buffer,n.byteOffset,n.length);else throw new TypeError(`A ${r} tensor's data must be type of ${f}`)}else if(u=n,Array.isArray(t)){if(t.length===0)throw new TypeError(\"Tensor type cannot be inferred from an empty array.\");let f=typeof t[0];if(f===\"string\")r=\"string\",a=t;else if(f===\"boolean\")r=\"bool\",a=Uint8Array.from(t);else throw new TypeError(`Invalid element type of data array: ${f}.`)}else if(t instanceof Uint8ClampedArray)r=\"uint8\",a=Uint8Array.from(t);else{let f=pe.get(t.constructor);if(f===void 0)throw new TypeError(`Unsupported type for tensor data: ${t.constructor}.`);r=f,a=t}if(u===void 0)u=[a.length];else if(!Array.isArray(u))throw new TypeError(\"A tensor's dims must be a number array\");i=u,this.cpuData=a,this.dataLocation=\"cpu\"}let s=Mt(i);if(this.cpuData&&s!==this.cpuData.length&&!((r===\"uint4\"||r===\"int4\")&&Math.ceil(s/2)===this.cpuData.length))throw new Error(`Tensor's size(${s}) does not match data length(${this.cpuData.length}).`);this.type=r,this.dims=i,this.size=s}static async fromImage(t,n){return Bt(t,n)}static fromTexture(t,n){return Lt(t,n)}static fromGpuBuffer(t,n){return Pt(t,n)}static fromMLTensor(t,n){return Dt(t,n)}static fromPinnedBuffer(t,n,o){return _t(t,n,o)}toDataURL(t){return It(this,t)}toImageData(t){return At(this,t)}get data(){if(this.ensureValid(),!this.cpuData)throw new Error(\"The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.\");return this.cpuData}get location(){return this.dataLocation}get texture(){if(this.ensureValid(),!this.gpuTextureData)throw new Error(\"The data is not stored as a WebGL texture.\");return this.gpuTextureData}get gpuBuffer(){if(this.ensureValid(),!this.gpuBufferData)throw new Error(\"The data is not stored as a WebGPU buffer.\");return this.gpuBufferData}get mlTensor(){if(this.ensureValid(),!this.mlTensorData)throw new Error(\"The data is not stored as a WebNN MLTensor.\");return this.mlTensorData}async getData(t){switch(this.ensureValid(),this.dataLocation){case\"cpu\":case\"cpu-pinned\":return this.data;case\"texture\":case\"gpu-buffer\":case\"ml-tensor\":{if(!this.downloader)throw new Error(\"The current tensor is not created with a specified data downloader.\");if(this.isDownloading)throw new Error(\"The current tensor is being downloaded.\");try{this.isDownloading=!0;let n=await this.downloader();return this.downloader=void 0,this.dataLocation=\"cpu\",this.cpuData=n,t&&this.disposer&&(this.disposer(),this.disposer=void 0),n}finally{this.isDownloading=!1}}default:throw new Error(`cannot get data from location: ${this.dataLocation}`)}}dispose(){if(this.isDownloading)throw new Error(\"The current tensor is being downloaded.\");this.disposer&&(this.disposer(),this.disposer=void 0),this.cpuData=void 0,this.gpuTextureData=void 0,this.gpuBufferData=void 0,this.mlTensorData=void 0,this.downloader=void 0,this.isDownloading=void 0,this.dataLocation=\"none\"}ensureValid(){if(this.dataLocation===\"none\")throw new Error(\"The tensor is disposed.\")}reshape(t){if(this.ensureValid(),this.downloader||this.disposer)throw new Error(\"Cannot reshape a tensor that owns GPU resource.\");return Rt(this,t)}}});var k,Qe=E(()=>{\"use strict\";Te();k=x});var et,Nt,J,Y,q,Z,tt=E(()=>{\"use strict\";Xe();et=(e,t)=>{(typeof D.trace>\"u\"?!D.wasm.trace:!D.trace)||console.timeStamp(`${e}::ORT::${t}`)},Nt=(e,t)=>{let n=new Error().stack?.split(/\\r\\n|\\r|\\n/g)||[],o=!1;for(let r=0;r<n.length;r++){if(o&&!n[r].includes(\"TRACE_FUNC\")){let i=`FUNC_${e}::${n[r].trim().split(\" \")[1]}`;t&&(i+=`::${t}`),et(\"CPU\",i);return}n[r].includes(\"TRACE_FUNC\")&&(o=!0)}},J=e=>{(typeof D.trace>\"u\"?!D.wasm.trace:!D.trace)||Nt(\"BEGIN\",e)},Y=e=>{(typeof D.trace>\"u\"?!D.wasm.trace:!D.trace)||Nt(\"END\",e)},q=e=>{(typeof D.trace>\"u\"?!D.wasm.trace:!D.trace)||console.time(`ORT::${e}`)},Z=e=>{(typeof D.trace>\"u\"?!D.wasm.trace:!D.trace)||console.timeEnd(`ORT::${e}`)}});var Ie,kt=E(()=>{\"use strict\";Ze();Qe();tt();Ie=class e{constructor(t){this.handler=t}async run(t,n,o){J(),q(\"InferenceSession.run\");let r={},i={};if(typeof t!=\"object\"||t===null||t instanceof k||Array.isArray(t))throw new TypeError(\"'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.\");let s=!0;if(typeof n==\"object\"){if(n===null)throw new TypeError(\"Unexpected argument[1]: cannot be null.\");if(n instanceof k)throw new TypeError(\"'fetches' cannot be a Tensor\");if(Array.isArray(n)){if(n.length===0)throw new TypeError(\"'fetches' cannot be an empty array.\");s=!1;for(let f of n){if(typeof f!=\"string\")throw new TypeError(\"'fetches' must be a string array or an object.\");if(this.outputNames.indexOf(f)===-1)throw new RangeError(`'fetches' contains invalid output name: ${f}.`);r[f]=null}if(typeof o==\"object\"&&o!==null)i=o;else if(typeof o<\"u\")throw new TypeError(\"'options' must be an object.\")}else{let f=!1,l=Object.getOwnPropertyNames(n);for(let c of this.outputNames)if(l.indexOf(c)!==-1){let d=n[c];(d===null||d instanceof k)&&(f=!0,s=!1,r[c]=d)}if(f){if(typeof o==\"object\"&&o!==null)i=o;else if(typeof o<\"u\")throw new TypeError(\"'options' must be an object.\")}else i=n}}else if(typeof n<\"u\")throw new TypeError(\"Unexpected argument[1]: must be 'fetches' or 'options'.\");for(let f of this.inputNames)if(typeof t[f]>\"u\")throw new Error(`input '${f}' is missing in 'feeds'.`);if(s)for(let f of this.outputNames)r[f]=null;let a=await this.handler.run(t,r,i),u={};for(let f in a)if(Object.hasOwnProperty.call(a,f)){let l=a[f];l instanceof k?u[f]=l:u[f]=new k(l.type,l.data,l.dims)}return Z(\"InferenceSession.run\"),Y(),u}async release(){return this.handler.dispose()}static async create(t,n,o,r){J(),q(\"InferenceSession.create\");let i,s={};if(typeof t==\"string\"){if(i=t,typeof n==\"object\"&&n!==null)s=n;else if(typeof n<\"u\")throw new TypeError(\"'options' must be an object.\")}else if(t instanceof Uint8Array){if(i=t,typeof n==\"object\"&&n!==null)s=n;else if(typeof n<\"u\")throw new TypeError(\"'options' must be an object.\")}else if(t instanceof ArrayBuffer||typeof SharedArrayBuffer<\"u\"&&t instanceof SharedArrayBuffer){let l=t,c=0,d=t.byteLength;if(typeof n==\"object\"&&n!==null)s=n;else if(typeof n==\"number\"){if(c=n,!Number.isSafeInteger(c))throw new RangeError(\"'byteOffset' must be an integer.\");if(c<0||c>=l.byteLength)throw new RangeError(`'byteOffset' is out of range [0, ${l.byteLength}).`);if(d=t.byteLength-c,typeof o==\"number\"){if(d=o,!Number.isSafeInteger(d))throw new RangeError(\"'byteLength' must be an integer.\");if(d<=0||c+d>l.byteLength)throw new RangeError(`'byteLength' is out of range (0, ${l.byteLength-c}].`);if(typeof r==\"object\"&&r!==null)s=r;else if(typeof r<\"u\")throw new TypeError(\"'options' must be an object.\")}else if(typeof o<\"u\")throw new TypeError(\"'byteLength' must be a number.\")}else if(typeof n<\"u\")throw new TypeError(\"'options' must be an object.\");i=new Uint8Array(l,c,d)}else throw new TypeError(\"Unexpected argument[0]: must be 'path' or 'buffer'.\");let[a,u]=await bt(s),f=await a.createInferenceSessionHandler(i,u);return Z(\"InferenceSession.create\"),Y(),new e(f)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}get outputNames(){return this.handler.outputNames}get inputMetadata(){return this.handler.inputMetadata}get outputMetadata(){return this.handler.outputMetadata}}});var Wt,Gt=E(()=>{\"use strict\";kt();Wt=Ie});var $t=E(()=>{\"use strict\"});var zt=E(()=>{\"use strict\"});var Ht=E(()=>{\"use strict\"});var jt=E(()=>{\"use strict\"});var nt={};Ee(nt,{InferenceSession:()=>Wt,TRACE:()=>et,TRACE_EVENT_BEGIN:()=>q,TRACE_EVENT_END:()=>Z,TRACE_FUNC_BEGIN:()=>J,TRACE_FUNC_END:()=>Y,Tensor:()=>k,env:()=>A,registerBackend:()=>se});var X=E(()=>{\"use strict\";yt();Tt();Gt();Qe();$t();zt();tt();Ht();jt()});var Ae=E(()=>{\"use strict\"});var qt={};Ee(qt,{default:()=>Un});var Jt,Yt,Un,Zt=E(()=>{\"use strict\";rt();ee();Oe();Jt=\"ort-wasm-proxy-worker\",Yt=globalThis.self?.name===Jt;Yt&&(self.onmessage=e=>{let{type:t,in:n}=e.data;try{switch(t){case\"init-wasm\":Be(n.wasm).then(()=>{Le(n).then(()=>{postMessage({type:t})},o=>{postMessage({type:t,err:o})})},o=>{postMessage({type:t,err:o})});break;case\"init-ep\":{let{epName:o,env:r}=n;Pe(r,o).then(()=>{postMessage({type:t})},i=>{postMessage({type:t,err:i})});break}case\"copy-from\":{let{buffer:o}=n,r=me(o);postMessage({type:t,out:r});break}case\"create\":{let{model:o,options:r}=n;De(o,r).then(i=>{postMessage({type:t,out:i})},i=>{postMessage({type:t,err:i})});break}case\"release\":_e(n),postMessage({type:t});break;case\"run\":{let{sessionId:o,inputIndices:r,inputs:i,outputIndices:s,options:a}=n;Ue(o,r,i,s,new Array(s.length).fill(null),a).then(u=>{u.some(f=>f[3]!==\"cpu\")?postMessage({type:t,err:\"Proxy does not support non-cpu tensor location.\"}):postMessage({type:t,out:u},ve([...i,...u]))},u=>{postMessage({type:t,err:u})});break}case\"end-profiling\":xe(n),postMessage({type:t});break;default:}}catch(o){postMessage({type:t,err:o})}});Un=Yt?null:e=>new Worker(e??R,{type:\"classic\",name:Jt})});var xn,vn,R,Ce,ot,Cn,Mn,Qt,Rn,Xt,en,Kt,tn,Oe=E(()=>{\"use strict\";Ae();xn=typeof location>\"u\"?void 0:location.origin,vn=()=>{if(!!1)return typeof document<\"u\"?document.currentScript?.src:typeof self<\"u\"?self.location?.href:void 0},R=vn(),Ce=()=>{if(R&&!R.startsWith(\"blob:\"))return R.substring(0,R.lastIndexOf(\"/\")+1)},ot=(e,t)=>{try{let n=t??R;return(n?new URL(e,n):new URL(e)).origin===xn}catch{return!1}},Cn=(e,t)=>{let n=t??R;try{return(n?new URL(e,n):new URL(e)).href}catch{return}},Mn=(e,t)=>`${t??\"./\"}${e}`,Qt=async e=>{let n=await(await fetch(e,{credentials:\"same-origin\"})).blob();return URL.createObjectURL(n)},Rn=async e=>(await import(/*webpackIgnore:true*/ /*@vite-ignore*/e)).default,Xt=(Zt(),qe(qt)).default,en=async()=>{if(!R)throw new Error(\"Failed to load proxy worker: cannot determine the script source URL.\");if(ot(R))return[void 0,Xt()];let e=await Qt(R);return[e,Xt(e)]},Kt=void 0,tn=async(e,t,n,o)=>{let r=Kt&&!(e||t);if(r)if(R)r=ot(R)||o&&!n;else if(o&&!n)r=!0;else throw new Error(\"cannot determine the script source URL.\");if(r)return[void 0,Kt];{let i=\"ort-wasm-simd-threaded.mjs\",s=e??Cn(i,t),a=!!1&&n&&s&&!ot(s,t),u=a?await Qt(s):s??Mn(i,t);return[a?u:void 0,await Rn(u)]}}});var st,it,Me,nn,Fn,Nn,kn,Be,I,ee=E(()=>{\"use strict\";Oe();it=!1,Me=!1,nn=!1,Fn=()=>{if(typeof SharedArrayBuffer>\"u\")return!1;try{return typeof MessageChannel<\"u\"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},Nn=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},kn=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,19,1,17,0,65,1,253,15,65,2,253,15,65,3,253,15,253,147,2,11]))}catch{return!1}},Be=async e=>{if(it)return Promise.resolve();if(Me)throw new Error(\"multiple calls to 'initializeWebAssembly()' detected.\");if(nn)throw new Error(\"previous call to 'initializeWebAssembly()' failed.\");Me=!0;let t=e.initTimeout,n=e.numThreads;if(e.simd!==!1){if(e.simd===\"relaxed\"){if(!kn())throw new Error(\"Relaxed WebAssembly SIMD is not supported in the current environment.\")}else if(!Nn())throw new Error(\"WebAssembly SIMD is not supported in the current environment.\")}let o=Fn();n>1&&!o&&(typeof self<\"u\"&&!self.crossOriginIsolated&&console.warn(\"env.wasm.numThreads is set to \"+n+\", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info.\"),console.warn(\"WebAssembly multi-threading is not supported in the current environment. Falling back to single-threading.\"),e.numThreads=n=1);let r=e.wasmPaths,i=typeof r==\"string\"?r:void 0,s=r?.mjs,a=s?.href??s,u=r?.wasm,f=u?.href??u,l=e.wasmBinary,[c,d]=await tn(a,i,n>1,!!l||!!f),p=!1,h=[];if(t>0&&h.push(new Promise(y=>{setTimeout(()=>{p=!0,y()},t)})),h.push(new Promise((y,O)=>{let m={numThreads:n};if(l)m.wasmBinary=l,m.locateFile=w=>w;else if(f||i)m.locateFile=w=>f??i+w;else if(a&&a.indexOf(\"blob:\")!==0)m.locateFile=w=>new URL(w,a).href;else if(c){let w=Ce();w&&(m.locateFile=B=>w+B)}d(m).then(w=>{Me=!1,it=!0,st=w,y(),c&&URL.revokeObjectURL(c)},w=>{Me=!1,nn=!0,O(w)})})),await Promise.race(h),p)throw new Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`)},I=()=>{if(it&&st)return st;throw new Error(\"WebAssembly is not initialized yet.\")}});var F,we,S,Re=E(()=>{\"use strict\";ee();F=(e,t)=>{let n=I(),o=n.lengthBytesUTF8(e)+1,r=n._malloc(o);return n.stringToUTF8(e,r,o),t.push(r),r},we=(e,t,n,o)=>{if(typeof e==\"object\"&&e!==null){if(n.has(e))throw new Error(\"Circular reference in options\");n.add(e)}Object.entries(e).forEach(([r,i])=>{let s=t?t+r:r;if(typeof i==\"object\")we(i,s+\".\",n,o);else if(typeof i==\"string\"||typeof i==\"number\")o(s,i.toString());else if(typeof i==\"boolean\")o(s,i?\"1\":\"0\");else throw new Error(`Can't handle extra config type: ${typeof i}`)})},S=e=>{let t=I(),n=t.stackSave();try{let o=t.PTR_SIZE,r=t.stackAlloc(2*o);t._OrtGetLastError(r,r+o);let i=Number(t.getValue(r,o===4?\"i32\":\"i64\")),s=t.getValue(r+o,\"*\"),a=s?t.UTF8ToString(s):\"\";throw new Error(`${e} ERROR_CODE: ${i}, ERROR_MESSAGE: ${a}`)}finally{t.stackRestore(n)}}});var rn,on=E(()=>{\"use strict\";ee();Re();rn=e=>{let t=I(),n=0,o=[],r=e||{};try{if(e?.logSeverityLevel===void 0)r.logSeverityLevel=2;else if(typeof e.logSeverityLevel!=\"number\"||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>4)throw new Error(`log severity level is not valid: ${e.logSeverityLevel}`);if(e?.logVerbosityLevel===void 0)r.logVerbosityLevel=0;else if(typeof e.logVerbosityLevel!=\"number\"||!Number.isInteger(e.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${e.logVerbosityLevel}`);e?.terminate===void 0&&(r.terminate=!1);let i=0;return e?.tag!==void 0&&(i=F(e.tag,o)),n=t._OrtCreateRunOptions(r.logSeverityLevel,r.logVerbosityLevel,!!r.terminate,i),n===0&&S(\"Can't create run options.\"),e?.extra!==void 0&&we(e.extra,\"\",new WeakSet,(s,a)=>{let u=F(s,o),f=F(a,o);t._OrtAddRunConfigEntry(n,u,f)!==0&&S(`Can't set a run config entry: ${s} - ${a}.`)}),[n,o]}catch(i){throw n!==0&&t._OrtReleaseRunOptions(n),o.forEach(s=>t._free(s)),i}}});var Wn,Gn,$n,Fe,zn,sn,an=E(()=>{\"use strict\";ee();Re();Wn=e=>{switch(e){case\"disabled\":return 0;case\"basic\":return 1;case\"extended\":return 2;case\"layout\":return 3;case\"all\":return 99;default:throw new Error(`unsupported graph optimization level: ${e}`)}},Gn=e=>{switch(e){case\"sequential\":return 0;case\"parallel\":return 1;default:throw new Error(`unsupported execution mode: ${e}`)}},$n=e=>{e.extra||(e.extra={}),e.extra.session||(e.extra.session={});let t=e.extra.session;t.use_ort_model_bytes_directly||(t.use_ort_model_bytes_directly=\"1\"),e.executionProviders&&e.executionProviders.some(n=>(typeof n==\"string\"?n:n.name)===\"webgpu\")&&(e.enableMemPattern=!1)},Fe=(e,t,n,o)=>{let r=F(t,o),i=F(n,o);I()._OrtAddSessionConfigEntry(e,r,i)!==0&&S(`Can't set a session config entry: ${t} - ${n}.`)},zn=async(e,t,n)=>{let o=t.executionProviders;for(let r of o){let i=typeof r==\"string\"?r:r.name,s=[];switch(i){case\"webnn\":if(i=\"WEBNN\",typeof r!=\"string\"){let d=r?.deviceType;d&&Fe(e,\"deviceType\",d,n)}break;case\"webgpu\":if(i=\"JS\",typeof r!=\"string\"){let c=r;if(c?.preferredLayout){if(c.preferredLayout!==\"NCHW\"&&c.preferredLayout!==\"NHWC\")throw new Error(`preferredLayout must be either 'NCHW' or 'NHWC': ${c.preferredLayout}`);Fe(e,\"preferredLayout\",c.preferredLayout,n)}}break;case\"wasm\":case\"cpu\":continue;default:throw new Error(`not supported execution provider: ${i}`)}let a=F(i,n),u=s.length,f=0,l=0;if(u>0){f=I()._malloc(u*I().PTR_SIZE),n.push(f),l=I()._malloc(u*I().PTR_SIZE),n.push(l);for(let c=0;c<u;c++)I().setValue(f+c*I().PTR_SIZE,s[c][0],\"*\"),I().setValue(l+c*I().PTR_SIZE,s[c][1],\"*\")}await I()._OrtAppendExecutionProvider(e,a,f,l,u)!==0&&S(`Can't append execution provider: ${i}.`)}},sn=async e=>{let t=I(),n=0,o=[],r=e||{};$n(r);try{let i=Wn(r.graphOptimizationLevel??\"all\"),s=Gn(r.executionMode??\"sequential\"),a=typeof r.logId==\"string\"?F(r.logId,o):0,u=r.logSeverityLevel??2;if(!Number.isInteger(u)||u<0||u>4)throw new Error(`log severity level is not valid: ${u}`);let f=r.logVerbosityLevel??0;if(!Number.isInteger(f)||f<0||f>4)throw new Error(`log verbosity level is not valid: ${f}`);let l=typeof r.optimizedModelFilePath==\"string\"?F(r.optimizedModelFilePath,o):0;if(n=t._OrtCreateSessionOptions(i,!!r.enableCpuMemArena,!!r.enableMemPattern,s,!!r.enableProfiling,0,a,u,f,l),n===0&&S(\"Can't create session options.\"),r.executionProviders&&await zn(n,r,o),r.enableGraphCapture!==void 0){if(typeof r.enableGraphCapture!=\"boolean\")throw new Error(`enableGraphCapture must be a boolean value: ${r.enableGraphCapture}`);Fe(n,\"enableGraphCapture\",r.enableGraphCapture.toString(),o)}if(r.freeDimensionOverrides)for(let[c,d]of Object.entries(r.freeDimensionOverrides)){if(typeof c!=\"string\")throw new Error(`free dimension override name must be a string: ${c}`);if(typeof d!=\"number\"||!Number.isInteger(d)||d<0)throw new Error(`free dimension override value must be a non-negative integer: ${d}`);let p=F(c,o);t._OrtAddFreeDimensionOverride(n,p,d)!==0&&S(`Can't set a free dimension override: ${c} - ${d}.`)}return r.extra!==void 0&&we(r.extra,\"\",new WeakSet,(c,d)=>{Fe(n,c,d,o)}),[n,o]}catch(i){throw n!==0&&t._OrtReleaseSessionOptions(n)!==0&&S(\"Can't release session options.\"),o.forEach(s=>t._free(s)),i}}});var ie,Ne,ae,un,fn,ke,We,cn,at=E(()=>{\"use strict\";ie=e=>{switch(e){case\"int8\":return 3;case\"uint8\":return 2;case\"bool\":return 9;case\"int16\":return 5;case\"uint16\":return 4;case\"int32\":return 6;case\"uint32\":return 12;case\"float16\":return 10;case\"float32\":return 1;case\"float64\":return 11;case\"string\":return 8;case\"int64\":return 7;case\"uint64\":return 13;case\"int4\":return 22;case\"uint4\":return 21;default:throw new Error(`unsupported data type: ${e}`)}},Ne=e=>{switch(e){case 3:return\"int8\";case 2:return\"uint8\";case 9:return\"bool\";case 5:return\"int16\";case 4:return\"uint16\";case 6:return\"int32\";case 12:return\"uint32\";case 10:return\"float16\";case 1:return\"float32\";case 11:return\"float64\";case 8:return\"string\";case 7:return\"int64\";case 13:return\"uint64\";case 22:return\"int4\";case 21:return\"uint4\";default:throw new Error(`unsupported data type: ${e}`)}},ae=(e,t)=>{let n=[-1,4,1,1,2,2,4,8,-1,1,2,8,4,8,-1,-1,-1,-1,-1,-1,-1,.5,.5][e],o=typeof t==\"number\"?t:t.reduce((r,i)=>r*i,1);return n>0?Math.ceil(o*n):void 0},un=e=>{switch(e){case\"float16\":return typeof Float16Array<\"u\"&&Float16Array.from?Float16Array:Uint16Array;case\"float32\":return Float32Array;case\"uint8\":return Uint8Array;case\"int8\":return Int8Array;case\"uint16\":return Uint16Array;case\"int16\":return Int16Array;case\"int32\":return Int32Array;case\"bool\":return Uint8Array;case\"float64\":return Float64Array;case\"uint32\":return Uint32Array;case\"int64\":return BigInt64Array;case\"uint64\":return BigUint64Array;default:throw new Error(`unsupported type: ${e}`)}},fn=e=>{switch(e){case\"verbose\":return 0;case\"info\":return 1;case\"warning\":return 2;case\"error\":return 3;case\"fatal\":return 4;default:throw new Error(`unsupported logging level: ${e}`)}},ke=e=>e===\"float32\"||e===\"float16\"||e===\"int32\"||e===\"int64\"||e===\"uint32\"||e===\"uint8\"||e===\"bool\"||e===\"uint4\"||e===\"int4\",We=e=>e===\"float32\"||e===\"float16\"||e===\"int32\"||e===\"int64\"||e===\"uint32\"||e===\"uint64\"||e===\"int8\"||e===\"uint8\"||e===\"bool\"||e===\"uint4\"||e===\"int4\",cn=e=>{switch(e){case\"none\":return 0;case\"cpu\":return 1;case\"cpu-pinned\":return 2;case\"texture\":return 3;case\"gpu-buffer\":return 4;case\"ml-tensor\":return 5;default:throw new Error(`unsupported data location: ${e}`)}}});var he,ut=E(()=>{\"use strict\";Ae();he=async e=>{if(typeof e==\"string\")if(!1)try{let{readFile:t}=Ye(\"node:fs/promises\");return new Uint8Array(await t(e))}catch(t){if(t.code===\"ERR_FS_FILE_TOO_LARGE\"){let{createReadStream:n}=Ye(\"node:fs\"),o=n(e),r=[];for await(let i of o)r.push(i);return new Uint8Array(Buffer.concat(r))}throw t}else{let t=await fetch(e);if(!t.ok)throw new Error(`failed to load external data file: ${e}`);let n=t.headers.get(\"Content-Length\"),o=n?parseInt(n,10):0;if(o<1073741824)return new Uint8Array(await t.arrayBuffer());{if(!t.body)throw new Error(`failed to load external data file: ${e}, no response body.`);let r=t.body.getReader(),i;try{i=new ArrayBuffer(o)}catch(a){if(a instanceof RangeError){let u=Math.ceil(o/65536);i=new WebAssembly.Memory({initial:u,maximum:u}).buffer}else throw a}let s=0;for(;;){let{done:a,value:u}=await r.read();if(a)break;let f=u.byteLength;new Uint8Array(i,s,f).set(u),s+=f}return new Uint8Array(i,0,o)}}else return e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e)}});var Hn,Le,Pe,ue,jn,dn,me,De,_e,ln,Ue,xe,ve,rt=E(()=>{\"use strict\";X();on();an();at();ee();Re();ut();Hn=(e,t)=>{I()._OrtInit(e,t)!==0&&S(\"Can't initialize onnxruntime.\")},Le=async e=>{Hn(e.wasm.numThreads,fn(e.logLevel))},Pe=async(e,t)=>{I().asyncInit?.();let n=e.webgpu.adapter;if(t===\"webgpu\"){if(typeof navigator>\"u\"||!navigator.gpu)throw new Error(\"WebGPU is not supported in current environment\");if(n){if(typeof n.limits!=\"object\"||typeof n.features!=\"object\"||typeof n.requestDevice!=\"function\")throw new Error(\"Invalid GPU adapter set in `env.webgpu.adapter`. It must be a GPUAdapter object.\")}else{let o=e.webgpu.powerPreference;if(o!==void 0&&o!==\"low-power\"&&o!==\"high-performance\")throw new Error(`Invalid powerPreference setting: \"${o}\"`);let r=e.webgpu.forceFallbackAdapter;if(r!==void 0&&typeof r!=\"boolean\")throw new Error(`Invalid forceFallbackAdapter setting: \"${r}\"`);if(n=await navigator.gpu.requestAdapter({powerPreference:o,forceFallbackAdapter:r}),!n)throw new Error('Failed to get GPU adapter. You may need to enable flag \"--enable-unsafe-webgpu\" if you are using Chrome.')}}if(t===\"webnn\"&&(typeof navigator>\"u\"||!navigator.ml))throw new Error(\"WebNN is not supported in current environment\")},ue=new Map,jn=e=>{let t=I(),n=t.stackSave();try{let o=t.PTR_SIZE,r=t.stackAlloc(2*o);t._OrtGetInputOutputCount(e,r,r+o)!==0&&S(\"Can't get session input/output count.\");let s=o===4?\"i32\":\"i64\";return[Number(t.getValue(r,s)),Number(t.getValue(r+o,s))]}finally{t.stackRestore(n)}},dn=(e,t)=>{let n=I(),o=n.stackSave(),r=0;try{let i=n.PTR_SIZE,s=n.stackAlloc(2*i);n._OrtGetInputOutputMetadata(e,t,s,s+i)!==0&&S(\"Can't get session input/output metadata.\");let u=Number(n.getValue(s,\"*\"));r=Number(n.getValue(s+i,\"*\"));let f=n.HEAP32[r/4];if(f===0)return[u,0];let l=n.HEAPU32[r/4+1],c=[];for(let d=0;d<l;d++){let p=Number(n.getValue(r+8+d*i,\"*\"));c.push(p!==0?n.UTF8ToString(p):Number(n.getValue(r+8+(d+l)*i,\"*\")))}return[u,f,c]}finally{n.stackRestore(o),r!==0&&n._OrtFree(r)}},me=e=>{let t=I(),n=t._malloc(e.byteLength);if(n===0)throw new Error(`Can't create a session. failed to allocate a buffer of size ${e.byteLength}.`);return t.HEAPU8.set(e,n),[n,e.byteLength]},De=async(e,t)=>{let n,o,r=I();Array.isArray(e)?[n,o]=e:e.buffer===r.HEAPU8.buffer?[n,o]=[e.byteOffset,e.byteLength]:[n,o]=me(e);let i=0,s=0,a=0,u=[],f=[],l=[];try{if([s,u]=await sn(t),t?.externalData&&r.mountExternalData){let g=[];for(let T of t.externalData){let U=typeof T==\"string\"?T:T.path;g.push(he(typeof T==\"string\"?T:T.data).then(M=>{r.mountExternalData(U,M)}))}await Promise.all(g)}for(let g of t?.executionProviders??[])if((typeof g==\"string\"?g:g.name)===\"webnn\"){if(r.shouldTransferToMLTensor=!1,typeof g!=\"string\"){let U=g,M=U?.context,v=U?.gpuDevice,de=U?.deviceType,re=U?.powerPreference;M?r.currentContext=M:v?r.currentContext=await r.webnnCreateMLContext(v):r.currentContext=await r.webnnCreateMLContext({deviceType:de,powerPreference:re})}else r.currentContext=await r.webnnCreateMLContext();break}i=await r._OrtCreateSession(n,o,s),r.webgpuOnCreateSession?.(i),i===0&&S(\"Can't create a session.\"),r.jsepOnCreateSession?.(),r.currentContext&&(r.webnnRegisterMLContext(i,r.currentContext),r.currentContext=void 0,r.shouldTransferToMLTensor=!0);let[c,d]=jn(i),p=!!t?.enableGraphCapture,h=[],y=[],O=[],m=[],w=[];for(let g=0;g<c;g++){let[T,U,M]=dn(i,g);T===0&&S(\"Can't get an input name.\"),f.push(T);let v=r.UTF8ToString(T);h.push(v),O.push(U===0?{name:v,isTensor:!1}:{name:v,isTensor:!0,type:Ne(U),shape:M})}for(let g=0;g<d;g++){let[T,U,M]=dn(i,g+c);T===0&&S(\"Can't get an output name.\"),l.push(T);let v=r.UTF8ToString(T);y.push(v),m.push(U===0?{name:v,isTensor:!1}:{name:v,isTensor:!0,type:Ne(U),shape:M})}return ue.set(i,[i,f,l,null,p,!1]),[i,h,y,O,m]}catch(c){throw f.forEach(d=>r._OrtFree(d)),l.forEach(d=>r._OrtFree(d)),a!==0&&r._OrtReleaseBinding(a)!==0&&S(\"Can't release IO binding.\"),i!==0&&r._OrtReleaseSession(i)!==0&&S(\"Can't release session.\"),c}finally{r._free(n),s!==0&&r._OrtReleaseSessionOptions(s)!==0&&S(\"Can't release session options.\"),u.forEach(c=>r._free(c)),r.unmountExternalData?.()}},_e=e=>{let t=I(),n=ue.get(e);if(!n)throw new Error(`cannot release session. invalid session id: ${e}`);let[o,r,i,s,a]=n;s&&(a&&t._OrtClearBoundOutputs(s.handle)!==0&&S(\"Can't clear bound outputs.\"),t._OrtReleaseBinding(s.handle)!==0&&S(\"Can't release IO binding.\")),t.jsepOnReleaseSession?.(e),t.webnnOnReleaseSession?.(e),t.webgpuOnReleaseSession?.(e),r.forEach(u=>t._OrtFree(u)),i.forEach(u=>t._OrtFree(u)),t._OrtReleaseSession(o)!==0&&S(\"Can't release session.\"),ue.delete(e)},ln=async(e,t,n,o,r,i,s=!1)=>{if(!e){t.push(0);return}let a=I(),u=a.PTR_SIZE,f=e[0],l=e[1],c=e[3],d=c,p,h;if(f===\"string\"&&(c===\"gpu-buffer\"||c===\"ml-tensor\"))throw new Error(\"String tensor is not supported on GPU.\");if(s&&c!==\"gpu-buffer\")throw new Error(`External buffer must be provided for input/output index ${i} when enableGraphCapture is true.`);if(c===\"gpu-buffer\"){let m=e[2].gpuBuffer;h=ae(ie(f),l);{let w=a.jsepRegisterBuffer;if(!w)throw new Error('Tensor location \"gpu-buffer\" is not supported without using WebGPU.');p=w(o,i,m,h)}}else if(c===\"ml-tensor\"){let m=e[2].mlTensor;h=ae(ie(f),l);let w=a.webnnRegisterMLTensor;if(!w)throw new Error('Tensor location \"ml-tensor\" is not supported without using WebNN.');p=w(o,m,ie(f),l)}else{let m=e[2];if(Array.isArray(m)){h=u*m.length,p=a._malloc(h),n.push(p);for(let w=0;w<m.length;w++){if(typeof m[w]!=\"string\")throw new TypeError(`tensor data at index ${w} is not a string`);a.setValue(p+w*u,F(m[w],n),\"*\")}}else{let w=a.webnnIsGraphInput,B=a.webnnIsGraphOutput;if(f!==\"string\"&&w&&B){let g=a.UTF8ToString(r);if(w(o,g)||B(o,g)){let T=ie(f);h=ae(T,l),d=\"ml-tensor\";let U=a.webnnCreateTemporaryTensor,M=a.webnnUploadTensor;if(!U||!M)throw new Error('Tensor location \"ml-tensor\" is not supported without using WebNN.');let v=await U(o,T,l);M(v,new Uint8Array(m.buffer,m.byteOffset,m.byteLength)),p=v}else h=m.byteLength,p=a._malloc(h),n.push(p),a.HEAPU8.set(new Uint8Array(m.buffer,m.byteOffset,h),p)}else h=m.byteLength,p=a._malloc(h),n.push(p),a.HEAPU8.set(new Uint8Array(m.buffer,m.byteOffset,h),p)}}let y=a.stackSave(),O=a.stackAlloc(4*l.length);try{l.forEach((w,B)=>a.setValue(O+B*u,w,u===4?\"i32\":\"i64\"));let m=a._OrtCreateTensor(ie(f),p,h,O,l.length,cn(d));m===0&&S(`Can't create tensor for input/output. session=${o}, index=${i}.`),t.push(m)}finally{a.stackRestore(y)}},Ue=async(e,t,n,o,r,i)=>{let s=I(),a=s.PTR_SIZE,u=ue.get(e);if(!u)throw new Error(`cannot run inference. invalid session id: ${e}`);let f=u[0],l=u[1],c=u[2],d=u[3],p=u[4],h=u[5],y=t.length,O=o.length,m=0,w=[],B=[],g=[],T=[],U=[],M=s.stackSave(),v=s.stackAlloc(y*a),de=s.stackAlloc(y*a),re=s.stackAlloc(O*a),lt=s.stackAlloc(O*a);try{[m,w]=rn(i),q(\"wasm prepareInputOutputTensor\");for(let b=0;b<y;b++)await ln(n[b],B,T,e,l[t[b]],t[b],p);for(let b=0;b<O;b++)await ln(r[b],g,T,e,c[o[b]],y+o[b],p);Z(\"wasm prepareInputOutputTensor\");for(let b=0;b<y;b++)s.setValue(v+b*a,B[b],\"*\"),s.setValue(de+b*a,l[t[b]],\"*\");for(let b=0;b<O;b++)s.setValue(re+b*a,g[b],\"*\"),s.setValue(lt+b*a,c[o[b]],\"*\");s.jsepOnRunStart?.(f),s.webnnOnRunStart?.(f);let N;N=await s._OrtRun(f,de,v,y,lt,O,re,m),N!==0&&S(\"failed to call OrtRun().\");let z=[],pt=[];q(\"wasm ProcessOutputTensor\");for(let b=0;b<O;b++){let G=Number(s.getValue(re+b*a,\"*\"));if(G===g[b]||U.includes(g[b])){z.push(r[b]),G!==g[b]&&s._OrtReleaseTensor(G)!==0&&S(\"Can't release tensor.\");continue}let mt=s.stackSave(),$=s.stackAlloc(4*a),oe=!1,P,C=0;try{s._OrtGetTensorData(G,$,$+a,$+2*a,$+3*a)!==0&&S(`Can't access output tensor data on index ${b}.`);let Ve=a===4?\"i32\":\"i64\",ye=Number(s.getValue($,Ve));C=s.getValue($+a,\"*\");let wt=s.getValue($+a*2,\"*\"),On=Number(s.getValue($+a*3,Ve)),H=[];for(let _=0;_<On;_++)H.push(Number(s.getValue(wt+_*a,Ve)));s._OrtFree(wt)!==0&&S(\"Can't free memory for tensor dims.\");let j=H.reduce((_,L)=>_*L,1);P=Ne(ye);let le=d?.outputPreferredLocations[o[b]];if(P===\"string\"){if(le===\"gpu-buffer\"||le===\"ml-tensor\")throw new Error(\"String tensor is not supported on GPU.\");let _=[];for(let L=0;L<j;L++){let V=s.getValue(C+L*a,\"*\"),ge=s.getValue(C+(L+1)*a,\"*\"),ht=L===j-1?void 0:ge-V;_.push(s.UTF8ToString(V,ht))}z.push([P,H,_,\"cpu\"])}else if(le===\"gpu-buffer\"&&j>0){let _=s.jsepGetBuffer;if(!_)throw new Error('preferredLocation \"gpu-buffer\" is not supported without using WebGPU.');let L=_(C),V=ae(ye,j);if(V===void 0||!ke(P))throw new Error(`Unsupported data type: ${P}`);oe=!0,z.push([P,H,{gpuBuffer:L,download:s.jsepCreateDownloader(L,V,P),dispose:()=>{s._OrtReleaseTensor(G)!==0&&S(\"Can't release tensor.\")}},\"gpu-buffer\"])}else if(le===\"ml-tensor\"&&j>0){let _=s.webnnEnsureTensor,L=s.webnnIsGraphInputOutputTypeSupported;if(!_||!L)throw new Error('preferredLocation \"ml-tensor\" is not supported without using WebNN.');if(ae(ye,j)===void 0||!We(P))throw new Error(`Unsupported data type: ${P}`);if(!L(e,P,!1))throw new Error(`preferredLocation \"ml-tensor\" for ${P} output is not supported by current WebNN Context.`);let ge=await _(e,C,ye,H,!1);oe=!0,z.push([P,H,{mlTensor:ge,download:s.webnnCreateMLTensorDownloader(C,P),dispose:()=>{s.webnnReleaseTensorId(C),s._OrtReleaseTensor(G)}},\"ml-tensor\"])}else if(le===\"ml-tensor-cpu-output\"&&j>0){let _=s.webnnCreateMLTensorDownloader(C,P)(),L=z.length;oe=!0,pt.push((async()=>{let V=[L,await _];return s.webnnReleaseTensorId(C),s._OrtReleaseTensor(G),V})()),z.push([P,H,[],\"cpu\"])}else{let _=un(P),L=new _(j);new Uint8Array(L.buffer,L.byteOffset,L.byteLength).set(s.HEAPU8.subarray(C,C+L.byteLength)),z.push([P,H,L,\"cpu\"])}}finally{s.stackRestore(mt),P===\"string\"&&C&&s._free(C),oe||s._OrtReleaseTensor(G)}}d&&!p&&(s._OrtClearBoundOutputs(d.handle)!==0&&S(\"Can't clear bound outputs.\"),ue.set(e,[f,l,c,d,p,!1]));for(let[b,G]of await Promise.all(pt))z[b][2]=G;return Z(\"wasm ProcessOutputTensor\"),z}finally{s.webnnOnRunEnd?.(f),s.stackRestore(M),B.forEach(N=>s._OrtReleaseTensor(N)),g.forEach(N=>s._OrtReleaseTensor(N)),T.forEach(N=>s._free(N)),m!==0&&s._OrtReleaseRunOptions(m),w.forEach(N=>s._free(N))}},xe=e=>{let t=I(),n=ue.get(e);if(!n)throw new Error(\"invalid session id\");let o=n[0],r=t._OrtEndProfiling(o);r===0&&S(\"Can't get an profile file name.\"),t._OrtFree(r)},ve=e=>{let t=[];for(let n of e){let o=n[2];!Array.isArray(o)&&\"buffer\"in o&&t.push(o.buffer)}return t}});var ne,W,be,$e,ze,Ge,ft,ct,fe,ce,Jn,pn,mn,wn,hn,bn,yn,gn,dt=E(()=>{\"use strict\";X();rt();ee();Oe();ne=()=>!!A.wasm.proxy&&typeof document<\"u\",be=!1,$e=!1,ze=!1,ct=new Map,fe=(e,t)=>{let n=ct.get(e);n?n.push(t):ct.set(e,[t])},ce=()=>{if(be||!$e||ze||!W)throw new Error(\"worker not ready\")},Jn=e=>{switch(e.data.type){case\"init-wasm\":be=!1,e.data.err?(ze=!0,ft[1](e.data.err)):($e=!0,ft[0]()),Ge&&(URL.revokeObjectURL(Ge),Ge=void 0);break;case\"init-ep\":case\"copy-from\":case\"create\":case\"release\":case\"run\":case\"end-profiling\":{let t=ct.get(e.data.type);e.data.err?t.shift()[1](e.data.err):t.shift()[0](e.data.out);break}default:}},pn=async()=>{if(!$e){if(be)throw new Error(\"multiple calls to 'initWasm()' detected.\");if(ze)throw new Error(\"previous call to 'initWasm()' failed.\");if(be=!0,ne())return new Promise((e,t)=>{W?.terminate(),en().then(([n,o])=>{try{W=o,W.onerror=i=>t(i),W.onmessage=Jn,ft=[e,t];let r={type:\"init-wasm\",in:A};if(!r.in.wasm.wasmPaths&&n){let i=Ce();i&&(r.in.wasm.wasmPaths=i)}W.postMessage(r),Ge=n}catch(r){t(r)}},t)});try{await Be(A.wasm),await Le(A),$e=!0}catch(e){throw ze=!0,e}finally{be=!1}}},mn=async e=>{if(ne())return ce(),new Promise((t,n)=>{fe(\"init-ep\",[t,n]);let o={type:\"init-ep\",in:{epName:e,env:A}};W.postMessage(o)});await Pe(A,e)},wn=async e=>ne()?(ce(),new Promise((t,n)=>{fe(\"copy-from\",[t,n]);let o={type:\"copy-from\",in:{buffer:e}};W.postMessage(o,[e.buffer])})):me(e),hn=async(e,t)=>{if(ne()){if(t?.preferredOutputLocation)throw new Error('session option \"preferredOutputLocation\" is not supported for proxy.');return ce(),new Promise((n,o)=>{fe(\"create\",[n,o]);let r={type:\"create\",in:{model:e,options:{...t}}},i=[];e instanceof Uint8Array&&i.push(e.buffer),W.postMessage(r,i)})}else return De(e,t)},bn=async e=>{if(ne())return ce(),new Promise((t,n)=>{fe(\"release\",[t,n]);let o={type:\"release\",in:e};W.postMessage(o)});_e(e)},yn=async(e,t,n,o,r,i)=>{if(ne()){if(n.some(s=>s[3]!==\"cpu\"))throw new Error(\"input tensor on GPU is not supported for proxy.\");if(r.some(s=>s))throw new Error(\"pre-allocated output tensor is not supported for proxy.\");return ce(),new Promise((s,a)=>{fe(\"run\",[s,a]);let u=n,f={type:\"run\",in:{sessionId:e,inputIndices:t,inputs:u,outputIndices:o,options:i}};W.postMessage(f,ve(u))})}else return Ue(e,t,n,o,r,i)},gn=async e=>{if(ne())return ce(),new Promise((t,n)=>{fe(\"end-profiling\",[t,n]);let o={type:\"end-profiling\",in:e};W.postMessage(o)});xe(e)}});var En,Yn,He,Sn=E(()=>{\"use strict\";X();dt();at();Ae();ut();En=(e,t)=>{switch(e.location){case\"cpu\":return[e.type,e.dims,e.data,\"cpu\"];case\"gpu-buffer\":return[e.type,e.dims,{gpuBuffer:e.gpuBuffer},\"gpu-buffer\"];case\"ml-tensor\":return[e.type,e.dims,{mlTensor:e.mlTensor},\"ml-tensor\"];default:throw new Error(`invalid data location: ${e.location} for ${t()}`)}},Yn=e=>{switch(e[3]){case\"cpu\":return new k(e[0],e[2],e[1]);case\"gpu-buffer\":{let t=e[0];if(!ke(t))throw new Error(`not supported data type: ${t} for deserializing GPU tensor`);let{gpuBuffer:n,download:o,dispose:r}=e[2];return k.fromGpuBuffer(n,{dataType:t,dims:e[1],download:o,dispose:r})}case\"ml-tensor\":{let t=e[0];if(!We(t))throw new Error(`not supported data type: ${t} for deserializing MLTensor tensor`);let{mlTensor:n,download:o,dispose:r}=e[2];return k.fromMLTensor(n,{dataType:t,dims:e[1],download:o,dispose:r})}default:throw new Error(`invalid data location: ${e[3]}`)}},He=class{async fetchModelAndCopyToWasmMemory(t){return wn(await he(t))}async loadModel(t,n){J();let o;typeof t==\"string\"?o=await this.fetchModelAndCopyToWasmMemory(t):o=t,[this.sessionId,this.inputNames,this.outputNames,this.inputMetadata,this.outputMetadata]=await hn(o,n),Y()}async dispose(){return bn(this.sessionId)}async run(t,n,o){J();let r=[],i=[];Object.entries(t).forEach(d=>{let p=d[0],h=d[1],y=this.inputNames.indexOf(p);if(y===-1)throw new Error(`invalid input '${p}'`);r.push(h),i.push(y)});let s=[],a=[];Object.entries(n).forEach(d=>{let p=d[0],h=d[1],y=this.outputNames.indexOf(p);if(y===-1)throw new Error(`invalid output '${p}'`);s.push(h),a.push(y)});let u=r.map((d,p)=>En(d,()=>`input \"${this.inputNames[i[p]]}\"`)),f=s.map((d,p)=>d?En(d,()=>`output \"${this.outputNames[a[p]]}\"`):null),l=await yn(this.sessionId,i,u,a,f,o),c={};for(let d=0;d<l.length;d++)c[this.outputNames[a[d]]]=s[d]??Yn(l[d]);return Y(),c}startProfiling(){}endProfiling(){gn(this.sessionId)}}});var In={};Ee(In,{OnnxruntimeWebAssemblyBackend:()=>je,initializeFlags:()=>Tn,wasmBackend:()=>qn});var Tn,je,qn,An=E(()=>{\"use strict\";X();dt();Sn();Tn=()=>{(typeof A.wasm.initTimeout!=\"number\"||A.wasm.initTimeout<0)&&(A.wasm.initTimeout=0);let e=A.wasm.simd;if(typeof e!=\"boolean\"&&e!==void 0&&e!==\"fixed\"&&e!==\"relaxed\"&&(console.warn(`Property \"env.wasm.simd\" is set to unknown value \"${e}\". Reset it to \\`false\\` and ignore SIMD feature checking.`),A.wasm.simd=!1),typeof A.wasm.proxy!=\"boolean\"&&(A.wasm.proxy=!1),typeof A.wasm.trace!=\"boolean\"&&(A.wasm.trace=!1),typeof A.wasm.numThreads!=\"number\"||!Number.isInteger(A.wasm.numThreads)||A.wasm.numThreads<=0)if(typeof self<\"u\"&&!self.crossOriginIsolated)A.wasm.numThreads=1;else{let t=typeof navigator>\"u\"?Ye(\"node:os\").cpus().length:navigator.hardwareConcurrency;A.wasm.numThreads=Math.min(4,Math.ceil((t||1)/2))}},je=class{async init(t){Tn(),await pn(),await mn(t)}async createInferenceSessionHandler(t,n){let o=new He;return await o.loadModel(t,n),o}},qn=new je});var Xn={};Ee(Xn,{InferenceSession:()=>Wt,TRACE:()=>et,TRACE_EVENT_BEGIN:()=>q,TRACE_EVENT_END:()=>Z,TRACE_FUNC_BEGIN:()=>J,TRACE_FUNC_END:()=>Y,Tensor:()=>k,default:()=>Zn,env:()=>A,registerBackend:()=>se});X();X();X();var Vt=\"1.24.3\";var Zn=nt;{let e=(An(),qe(In)).wasmBackend;se(\"cpu\",e,10),se(\"wasm\",e,10)}Object.defineProperty(A.versions,\"web\",{value:Vt,enumerable:!0});return qe(Xn);})();\ntypeof exports==\"object\"&&typeof module==\"object\"&&(module.exports=ort);\n//# sourceMappingURL=ort.wasm.min.js.map\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MicVAD = exports.getDefaultRealTimeVADOptions = exports.ort = exports.DEFAULT_MODEL = void 0;\nconst ortInstance = __importStar(require(\"onnxruntime-web/wasm\"));\nconst default_model_fetcher_1 = require(\"./default-model-fetcher\");\nconst frame_processor_1 = require(\"./frame-processor\");\nconst logging_1 = require(\"./logging\");\nconst messages_1 = require(\"./messages\");\nconst models_1 = require(\"./models\");\nconst resampler_1 = require(\"./resampler\");\nexports.DEFAULT_MODEL = \"legacy\";\nexports.ort = ortInstance;\nconst workletFile = \"vad.worklet.bundle.min.js\";\nconst sileroV5File = \"silero_vad_v5.onnx\";\nconst sileroLegacyFile = \"silero_vad_legacy.onnx\";\nconst getDefaultRealTimeVADOptions = (model) => {\n return {\n ...frame_processor_1.defaultFrameProcessorOptions,\n onFrameProcessed: () => { },\n onVADMisfire: () => {\n logging_1.log.debug(\"VAD misfire\");\n },\n onSpeechStart: () => {\n logging_1.log.debug(\"Detected speech start\");\n },\n onSpeechEnd: () => {\n logging_1.log.debug(\"Detected speech end\");\n },\n onSpeechRealStart: () => {\n logging_1.log.debug(\"Detected real speech start\");\n },\n baseAssetPath: \"./\",\n onnxWASMBasePath: \"./\",\n model: model,\n workletOptions: {},\n getStream: async () => {\n const stream = await navigator.mediaDevices.getUserMedia({\n audio: {\n channelCount: 1,\n echoCancellation: true,\n autoGainControl: true,\n noiseSuppression: true,\n },\n });\n return stream;\n },\n pauseStream: async (_stream) => {\n _stream.getTracks().forEach((track) => {\n track.stop();\n });\n },\n resumeStream: async () => {\n const stream = await navigator.mediaDevices.getUserMedia({\n audio: {\n channelCount: 1,\n echoCancellation: true,\n autoGainControl: true,\n noiseSuppression: true,\n },\n });\n return stream;\n },\n ortConfig: (ort) => {\n ort.env.logLevel = \"error\";\n },\n startOnLoad: true,\n processorType: \"auto\",\n };\n};\nexports.getDefaultRealTimeVADOptions = getDefaultRealTimeVADOptions;\nconst detectProcessorType = (ctx) => {\n if (\"audioWorklet\" in ctx && typeof AudioWorkletNode === \"function\") {\n return \"AudioWorklet\";\n }\n return \"ScriptProcessor\";\n};\nasync function getVADNodeAsWorklet(workletURL, workletOptions, audioContext, frameSamples, processFrame) {\n await audioContext.audioWorklet.addModule(workletURL);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n workletOptions.processorOptions = {\n ...(workletOptions.processorOptions ?? {}),\n frameSamples: frameSamples,\n };\n const audioNode = new AudioWorkletNode(audioContext, \"vad-helper-worklet\", workletOptions);\n audioNode.port.onmessage = async (ev) => {\n const data = ev.data;\n if (!(typeof data === \"object\" && data && \"message\" in data)) {\n console.error(\"Invalid message event\", data);\n return;\n }\n switch (data.message) {\n case messages_1.Message.AudioFrame: {\n if (!(\"data\" in data && data.data instanceof ArrayBuffer)) {\n console.log(\"Audio frame message has no data\");\n return;\n }\n const frame = new Float32Array(data.data);\n await processFrame(frame);\n break;\n }\n }\n };\n return audioNode;\n}\nasync function getVADNodeAsScriptProcessor(audioContext, frameSamples, processFrame) {\n const resampler = new resampler_1.Resampler({\n nativeSampleRate: audioContext.sampleRate,\n targetSampleRate: 16000,\n targetFrameSize: frameSamples,\n });\n logging_1.log.debug(\"using script processor\");\n // Fallback to ScriptProcessor\n const bufferSize = 4096; // Increased for more stable processing\n const audioNode = audioContext.createScriptProcessor(bufferSize, 1, 1);\n let processingAudio = false;\n audioNode.onaudioprocess = async (e) => {\n if (processingAudio)\n return;\n processingAudio = true;\n try {\n const input = e.inputBuffer.getChannelData(0);\n const output = e.outputBuffer.getChannelData(0);\n output.fill(0);\n // Process through resampler\n const frames = resampler.process(input);\n for (const frame of frames) {\n await processFrame(frame);\n }\n }\n catch (error) {\n console.error(\"Error processing audio:\", error);\n }\n finally {\n processingAudio = false;\n }\n };\n // https://github.com/WebAudio/web-audio-api/issues/345\n // -> we need to connect an output or will not work due to chrome bug\n audioNode.connect(audioContext.destination);\n return audioNode;\n}\nclass MicVAD {\n constructor(options, frameProcessor, model, frameSamples, listening = false, errored = null, _stream = null, _audioContext = null, _vadNode = null, _mediaStreamAudioSourceNode = null, _audioProcessorAdapterType = null, initializationState = \"uninitialized\", ownsAudioContext = false) {\n this.options = options;\n this.frameProcessor = frameProcessor;\n this.model = model;\n this.frameSamples = frameSamples;\n this.listening = listening;\n this.errored = errored;\n this._stream = _stream;\n this._audioContext = _audioContext;\n this._vadNode = _vadNode;\n this._mediaStreamAudioSourceNode = _mediaStreamAudioSourceNode;\n this._audioProcessorAdapterType = _audioProcessorAdapterType;\n this.initializationState = initializationState;\n this.ownsAudioContext = ownsAudioContext;\n this.getAudioInstances = () => {\n if (this._stream === null ||\n this._audioContext === null ||\n this._vadNode == null ||\n this._mediaStreamAudioSourceNode == null) {\n throw new Error(\"MicVAD has null stream, audio context, or processor adapter\");\n }\n return {\n stream: this._stream,\n audioContext: this._audioContext,\n vadNode: this._vadNode,\n mediaStreamAudioSourceNode: this._mediaStreamAudioSourceNode,\n };\n };\n this.setErrored = (error) => {\n this.initializationState = \"errored\";\n this.errored = error;\n };\n this.start = async () => {\n switch (this.initializationState) {\n case \"uninitialized\": {\n logging_1.log.debug(\"initializing micVAD\");\n this.initializationState = \"initializing\";\n this.frameProcessor.resume();\n try {\n this._stream = await this.options.getStream();\n }\n catch (error) {\n if (error instanceof Error) {\n this.setErrored(error.message);\n }\n else {\n this.setErrored(String(error));\n }\n throw error;\n }\n if (this.options.audioContext) {\n console.log(\"using custom audio context\");\n this._audioContext = this.options.audioContext;\n }\n else {\n console.log(\"using default audio context\");\n this._audioContext = new AudioContext();\n this.ownsAudioContext = true;\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!this._audioContext) {\n this.setErrored(\"Audio context is null\");\n throw Error(\"Audio context is null\");\n }\n this._audioProcessorAdapterType =\n this.options.processorType == \"auto\"\n ? detectProcessorType(this._audioContext)\n : this.options.processorType;\n switch (this._audioProcessorAdapterType) {\n case \"AudioWorklet\":\n {\n this._vadNode = await getVADNodeAsWorklet(this.options.baseAssetPath + workletFile, this.options.workletOptions, this._audioContext, this.frameSamples, this.processFrame);\n }\n break;\n case \"ScriptProcessor\":\n {\n this._vadNode = await getVADNodeAsScriptProcessor(this._audioContext, this.frameSamples, this.processFrame);\n }\n break;\n default: {\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `Unsupported audio processor adapter type: ${this._audioProcessorAdapterType}`);\n }\n }\n this._mediaStreamAudioSourceNode = new MediaStreamAudioSourceNode(this._audioContext, {\n mediaStream: this._stream,\n });\n this._mediaStreamAudioSourceNode.connect(this._vadNode);\n logging_1.log.debug(\"started micVAD\");\n this.listening = true;\n this.initializationState = \"initialized\";\n break;\n }\n case \"initializing\": {\n logging_1.log.warn(\"start called while initializing\");\n break;\n }\n case \"initialized\": {\n if (this.listening) {\n return;\n }\n this.listening = true;\n this.frameProcessor.resume();\n const { stream, audioContext, vadNode } = this.getAudioInstances();\n this._stream = await this.options.resumeStream(stream);\n const mediaStreamAudioSourceNode = new MediaStreamAudioSourceNode(audioContext, { mediaStream: this._stream });\n this._mediaStreamAudioSourceNode = mediaStreamAudioSourceNode;\n mediaStreamAudioSourceNode.connect(vadNode);\n break;\n }\n case \"destroyed\": {\n logging_1.log.warn(\"start called after destroyed\");\n break;\n }\n case \"errored\": {\n logging_1.log.error(\"start called after errored\");\n break;\n }\n default: {\n logging_1.log.warn(\"weird initialization state\");\n break;\n }\n }\n };\n this.pause = async () => {\n if (!this.listening) {\n return;\n }\n this.listening = false;\n const { stream, mediaStreamAudioSourceNode } = this.getAudioInstances();\n await this.options.pauseStream(stream);\n mediaStreamAudioSourceNode.disconnect();\n this.frameProcessor.pause(this.handleFrameProcessorEvent);\n };\n this.destroy = async () => {\n logging_1.log.debug(\"destroy called\");\n this.initializationState = \"destroyed\";\n const { vadNode } = this.getAudioInstances();\n if (vadNode instanceof AudioWorkletNode) {\n vadNode.port.postMessage(messages_1.Message.SpeechStop);\n }\n if (this.listening) {\n await this.pause();\n }\n await this.model.release();\n if (this.ownsAudioContext) {\n await this._audioContext?.close();\n }\n };\n this.setOptions = (update) => {\n this.frameProcessor.setOptions(update);\n };\n this.processFrame = async (frame) => {\n await this.frameProcessor.process(frame, this.handleFrameProcessorEvent);\n };\n this.handleFrameProcessorEvent = (ev) => {\n switch (ev.msg) {\n case messages_1.Message.FrameProcessed:\n void this.options.onFrameProcessed(ev.probs, ev.frame);\n break;\n case messages_1.Message.SpeechStart:\n void this.options.onSpeechStart();\n break;\n case messages_1.Message.SpeechRealStart:\n void this.options.onSpeechRealStart();\n break;\n case messages_1.Message.VADMisfire:\n void this.options.onVADMisfire();\n break;\n case messages_1.Message.SpeechEnd:\n void this.options.onSpeechEnd(ev.audio);\n break;\n }\n };\n }\n static async new(options = {}) {\n const fullOptions = {\n ...(0, exports.getDefaultRealTimeVADOptions)(options.model ?? exports.DEFAULT_MODEL),\n ...options,\n };\n (0, frame_processor_1.validateOptions)(fullOptions);\n exports.ort.env.wasm.wasmPaths = fullOptions.onnxWASMBasePath;\n if (fullOptions.ortConfig !== undefined) {\n fullOptions.ortConfig(exports.ort);\n }\n const modelFile = fullOptions.model === \"v5\" ? sileroV5File : sileroLegacyFile;\n const modelURL = fullOptions.baseAssetPath + modelFile;\n const modelFactory = fullOptions.model === \"v5\" ? models_1.SileroV5.new : models_1.SileroLegacy.new;\n let model;\n try {\n model = await modelFactory(exports.ort, () => (0, default_model_fetcher_1.defaultModelFetcher)(modelURL));\n }\n catch (e) {\n console.error(`Encountered an error while loading model file ${modelURL}`);\n throw e;\n }\n const frameSamples = fullOptions.model === \"v5\" ? 512 : 1536;\n const msPerFrame = frameSamples / 16;\n const frameProcessor = new frame_processor_1.FrameProcessor(model.process, model.reset_state, {\n positiveSpeechThreshold: fullOptions.positiveSpeechThreshold,\n negativeSpeechThreshold: fullOptions.negativeSpeechThreshold,\n redemptionMs: fullOptions.redemptionMs,\n preSpeechPadMs: fullOptions.preSpeechPadMs,\n minSpeechMs: fullOptions.minSpeechMs,\n submitUserSpeechOnPause: fullOptions.submitUserSpeechOnPause,\n }, msPerFrame);\n const micVad = new MicVAD(fullOptions, frameProcessor, model, frameSamples);\n // things would be simpler if we didn't have to startOnLoad by default, but we are locked in\n if (fullOptions.startOnLoad) {\n try {\n await micVad.start();\n }\n catch (e) {\n console.error(\"Error starting micVad\", e);\n throw e;\n }\n }\n return micVad;\n }\n}\nexports.MicVAD = MicVAD;\n//# sourceMappingURL=real-time-vad.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getDefaultRealTimeVADOptions = exports.MicVAD = exports.DEFAULT_MODEL = exports.utils = exports.NonRealTimeVAD = exports.Message = exports.FrameProcessor = exports.defaultModelFetcher = exports.baseAssetPath = void 0;\nvar asset_path_1 = require(\"./asset-path\");\nObject.defineProperty(exports, \"baseAssetPath\", { enumerable: true, get: function () { return asset_path_1.baseAssetPath; } });\nvar default_model_fetcher_1 = require(\"./default-model-fetcher\");\nObject.defineProperty(exports, \"defaultModelFetcher\", { enumerable: true, get: function () { return default_model_fetcher_1.defaultModelFetcher; } });\nvar frame_processor_1 = require(\"./frame-processor\");\nObject.defineProperty(exports, \"FrameProcessor\", { enumerable: true, get: function () { return frame_processor_1.FrameProcessor; } });\nvar messages_1 = require(\"./messages\");\nObject.defineProperty(exports, \"Message\", { enumerable: true, get: function () { return messages_1.Message; } });\nvar non_real_time_vad_1 = require(\"./non-real-time-vad\");\nObject.defineProperty(exports, \"NonRealTimeVAD\", { enumerable: true, get: function () { return non_real_time_vad_1.NonRealTimeVAD; } });\nconst utils_1 = require(\"./utils\");\nexports.utils = {\n audioFileToArray: utils_1.audioFileToArray,\n minFramesForTargetMS: utils_1.minFramesForTargetMS,\n arrayBufferToBase64: utils_1.arrayBufferToBase64,\n encodeWAV: utils_1.encodeWAV,\n};\nvar real_time_vad_1 = require(\"./real-time-vad\");\nObject.defineProperty(exports, \"DEFAULT_MODEL\", { enumerable: true, get: function () { return real_time_vad_1.DEFAULT_MODEL; } });\nObject.defineProperty(exports, \"MicVAD\", { enumerable: true, get: function () { return real_time_vad_1.MicVAD; } });\nObject.defineProperty(exports, \"getDefaultRealTimeVADOptions\", { enumerable: true, get: function () { return real_time_vad_1.getDefaultRealTimeVADOptions; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useMicVAD = exports.getDefaultReactRealTimeVADOptions = exports.utils = void 0;\nconst vad_web_1 = require(\"@ricky0123/vad-web\");\nconst react_1 = require(\"react\");\nvar vad_web_2 = require(\"@ricky0123/vad-web\");\nObject.defineProperty(exports, \"utils\", { enumerable: true, get: function () { return vad_web_2.utils; } });\nconst defaultReactOptions = {\n userSpeakingThreshold: 0.6,\n};\nconst getDefaultReactRealTimeVADOptions = (model) => {\n return {\n ...(0, vad_web_1.getDefaultRealTimeVADOptions)(model),\n ...defaultReactOptions,\n };\n};\nexports.getDefaultReactRealTimeVADOptions = getDefaultReactRealTimeVADOptions;\nfunction useOptions(options) {\n const model = options.model ?? vad_web_1.DEFAULT_MODEL;\n const fullOptions = {\n ...(0, exports.getDefaultReactRealTimeVADOptions)(model),\n ...options,\n };\n const reactOptions = {\n userSpeakingThreshold: fullOptions.userSpeakingThreshold,\n };\n const vadOptions = {\n positiveSpeechThreshold: fullOptions.positiveSpeechThreshold,\n negativeSpeechThreshold: fullOptions.negativeSpeechThreshold,\n redemptionMs: fullOptions.redemptionMs,\n preSpeechPadMs: fullOptions.preSpeechPadMs,\n minSpeechMs: fullOptions.minSpeechMs,\n submitUserSpeechOnPause: fullOptions.submitUserSpeechOnPause,\n onFrameProcessed: fullOptions.onFrameProcessed,\n onVADMisfire: fullOptions.onVADMisfire,\n onSpeechStart: fullOptions.onSpeechStart,\n onSpeechEnd: fullOptions.onSpeechEnd,\n onSpeechRealStart: fullOptions.onSpeechRealStart,\n baseAssetPath: fullOptions.baseAssetPath,\n onnxWASMBasePath: fullOptions.onnxWASMBasePath,\n model: fullOptions.model,\n workletOptions: fullOptions.workletOptions,\n getStream: fullOptions.getStream,\n pauseStream: fullOptions.pauseStream,\n resumeStream: fullOptions.resumeStream,\n startOnLoad: fullOptions.startOnLoad,\n processorType: fullOptions.processorType,\n };\n if (fullOptions.ortConfig) {\n vadOptions.ortConfig = fullOptions.ortConfig;\n }\n if (fullOptions.audioContext) {\n vadOptions.audioContext = fullOptions.audioContext;\n }\n return [reactOptions, vadOptions];\n}\nfunction useMicVAD(options) {\n const [reactOptions, vadOptions] = useOptions(options);\n const model = options[\"model\"] ?? vad_web_1.DEFAULT_MODEL;\n const [userSpeaking, updateUserSpeaking] = (0, react_1.useState)(false);\n const [loading, setLoading] = (0, react_1.useState)(true);\n const [errored, setErrored] = (0, react_1.useState)(false);\n const [listening, setListening] = (0, react_1.useState)(false);\n const [vad, setVAD] = (0, react_1.useState)(null);\n // Use refs to store the latest callbacks so they can be called without recreating the VAD\n const onFrameProcessedRef = (0, react_1.useRef)(vadOptions.onFrameProcessed);\n const onSpeechEndRef = (0, react_1.useRef)(vadOptions.onSpeechEnd);\n const onSpeechStartRef = (0, react_1.useRef)(vadOptions.onSpeechStart);\n const onSpeechRealStartRef = (0, react_1.useRef)(vadOptions.onSpeechRealStart);\n const onVADMisfireRef = (0, react_1.useRef)(vadOptions.onVADMisfire);\n const getStreamRef = (0, react_1.useRef)(vadOptions.getStream);\n // Update refs when callbacks change\n (0, react_1.useEffect)(() => {\n onFrameProcessedRef.current = vadOptions.onFrameProcessed;\n onSpeechEndRef.current = vadOptions.onSpeechEnd;\n onSpeechStartRef.current = vadOptions.onSpeechStart;\n onSpeechRealStartRef.current = vadOptions.onSpeechRealStart;\n onVADMisfireRef.current = vadOptions.onVADMisfire;\n }, [\n vadOptions.onFrameProcessed,\n vadOptions.onSpeechEnd,\n vadOptions.onSpeechStart,\n vadOptions.onSpeechRealStart,\n vadOptions.onVADMisfire,\n ]);\n // Update getStream ref - this is the key fix!\n (0, react_1.useEffect)(() => {\n getStreamRef.current = vadOptions.getStream;\n }, [vadOptions.getStream]);\n // Serialize getStream function to detect changes\n // We use a simple approach: convert function to string\n const getStreamKey = vadOptions.getStream.toString();\n (0, react_1.useEffect)(() => {\n let myvad = null;\n let canceled = false;\n const setup = async () => {\n try {\n setLoading(true);\n setErrored(false);\n // Create VAD options with stable callback wrappers\n const finalVadOptions = {\n ...vadOptions,\n onFrameProcessed: (probs, frame) => {\n const isSpeaking = probs.isSpeech > reactOptions.userSpeakingThreshold;\n updateUserSpeaking(isSpeaking);\n void onFrameProcessedRef.current(probs, frame);\n },\n onSpeechEnd: (audio) => {\n void onSpeechEndRef.current(audio);\n },\n onSpeechStart: () => {\n void onSpeechStartRef.current();\n },\n onSpeechRealStart: () => {\n void onSpeechRealStartRef.current();\n },\n onVADMisfire: () => {\n void onVADMisfireRef.current();\n },\n getStream: () => {\n return getStreamRef.current();\n },\n };\n myvad = await vad_web_1.MicVAD.new(finalVadOptions);\n if (canceled) {\n await myvad.destroy();\n return;\n }\n setVAD(myvad);\n if (vadOptions.startOnLoad) {\n await myvad.start();\n setListening(true);\n }\n setLoading(false);\n }\n catch (e) {\n setLoading(false);\n if (e instanceof Error) {\n setErrored(e.message);\n }\n else {\n setErrored(String(e));\n }\n }\n };\n setup().catch(() => {\n // Error already handled in setup function\n });\n return function cleanUp() {\n canceled = true;\n if (myvad) {\n void myvad.destroy();\n }\n if (!loading && !errored) {\n setListening(false);\n }\n };\n }, [getStreamKey, model]); // Recreate when getStream changes or model changes\n const pause = (0, react_1.useCallback)(async () => {\n if (!loading && !errored) {\n await vad?.pause();\n setListening(false);\n }\n }, [loading, errored, vad]);\n const start = (0, react_1.useCallback)(async () => {\n if (!loading && !errored) {\n await vad?.start();\n setListening(true);\n }\n }, [loading, errored, vad]);\n const toggle = (0, react_1.useCallback)(async () => {\n if (listening) {\n await pause();\n }\n else {\n await start();\n }\n }, [listening, pause, start]);\n return {\n listening,\n errored,\n loading,\n userSpeaking,\n pause,\n start,\n toggle,\n };\n}\nexports.useMicVAD = useMicVAD;\n//# sourceMappingURL=index.js.map","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useMicVAD } from '@ricky0123/vad-react';\nimport { useRqmiiAgentContext } from '../RqmiiAgentContext';\nimport { installAudioErrorSuppressors } from '../audio/installAudioErrorSuppressors';\n\ninstallAudioErrorSuppressors();\n\nconst MIC_CONSTRAINTS = {\n echoCancellation: true,\n noiseSuppression: true,\n autoGainControl: true,\n channelCount: 1,\n};\n\nconst VAD_SAMPLE_RATE = 16000;\nconst FRAME_SAMPLES = 512;\nconst PRE_SPEECH_PAD_MS = 700;\nconst SPEECH_END_DELAY_MS = 300;\nconst FRAME_DURATION_MS = (FRAME_SAMPLES / VAD_SAMPLE_RATE) * 1000;\nconst RING_BUFFER_SIZE = Math.ceil(PRE_SPEECH_PAD_MS / FRAME_DURATION_MS);\n\nexport function useRqmiiVAD(options = {}) {\n const {\n onAudioChunk,\n onAudioEnd,\n onSpeechStart,\n onSpeechEnd,\n onVADMisfire,\n onError,\n interruptOnSpeechStart = true,\n forceAudioMp4 = false,\n } = options;\n\n const { sendAudioChunk, endAudioStream, interrupt } = useRqmiiAgentContext();\n\n const [isSpeaking, setIsSpeaking] = useState(false);\n const [micError, setMicError] = useState(null);\n\n const streamRef = useRef(null);\n const mediaRecorderRef = useRef(null);\n const mixCtxRef = useRef(null);\n const cooldownRef = useRef(false);\n const speechEndTimerRef = useRef(null);\n const pcmRingRef = useRef([]);\n\n const unlockAudioContext = useCallback(() => {\n if (typeof window === 'undefined') return;\n if (!mixCtxRef.current) {\n const AudioCtx = window.AudioContext || window.webkitAudioContext;\n if (!AudioCtx) return;\n mixCtxRef.current = new AudioCtx({ sampleRate: VAD_SAMPLE_RATE });\n }\n if (mixCtxRef.current.state === 'suspended') {\n mixCtxRef.current.resume().catch(() => {});\n }\n }, []);\n\n useEffect(() => {\n if (typeof navigator === 'undefined' || !navigator.mediaDevices?.getUserMedia) {\n return undefined;\n }\n\n navigator.mediaDevices\n .getUserMedia({ audio: MIC_CONSTRAINTS })\n .then((stream) => {\n streamRef.current = stream;\n setMicError(null);\n })\n .catch((error) => {\n setMicError('permission_denied');\n onError?.(error);\n });\n\n return undefined;\n }, [onError]);\n\n const getStream = useCallback(async () => {\n if (typeof navigator === 'undefined' || !navigator.mediaDevices?.getUserMedia) {\n throw new Error('Microphone APIs are unavailable in this browser');\n }\n if (streamRef.current && streamRef.current.getTracks()[0]?.readyState === 'live') {\n return streamRef.current;\n }\n const stream = await navigator.mediaDevices.getUserMedia({\n audio: MIC_CONSTRAINTS,\n });\n streamRef.current = stream;\n setMicError(null);\n return stream;\n }, []);\n\n const pauseStream = useCallback(async (stream) => {\n stream.getTracks().forEach((track) => {\n track.enabled = false;\n });\n }, []);\n\n const resumeStream = useCallback(async () => {\n if (streamRef.current && streamRef.current.getTracks()[0]?.readyState === 'live') {\n streamRef.current.getTracks().forEach((track) => {\n track.enabled = true;\n });\n return streamRef.current;\n }\n return getStream();\n }, [getStream]);\n\n const drainRingBuffer = useCallback(() => {\n const frames = pcmRingRef.current;\n if (!frames.length) return { samples: new Float32Array(0), duration: 0 };\n\n const totalSamples = frames.reduce((sum, frame) => sum + frame.length, 0);\n const samples = new Float32Array(totalSamples);\n let offset = 0;\n for (const frame of frames) {\n samples.set(frame, offset);\n offset += frame.length;\n }\n return { samples, duration: totalSamples / VAD_SAMPLE_RATE };\n }, []);\n\n const startMixedRecorder = useCallback(() => {\n const micStream = streamRef.current;\n const ctx = mixCtxRef.current;\n if (!micStream || !ctx || mediaRecorderRef.current) return;\n\n const { samples, duration } = drainRingBuffer();\n pcmRingRef.current = [];\n\n const mimeType =\n !forceAudioMp4 && MediaRecorder.isTypeSupported('audio/webm;codecs=opus')\n ? 'audio/webm;codecs=opus'\n : MediaRecorder.isTypeSupported('audio/mp4')\n ? 'audio/mp4'\n : '';\n\n try {\n const destination = ctx.createMediaStreamDestination();\n\n if (samples.length > 0) {\n const audioBuffer = ctx.createBuffer(1, samples.length, VAD_SAMPLE_RATE);\n audioBuffer.getChannelData(0).set(samples);\n const source = ctx.createBufferSource();\n source.buffer = audioBuffer;\n source.connect(destination);\n source.start(0);\n }\n\n const micSource = ctx.createMediaStreamSource(micStream);\n if (duration > 0) {\n const delayNode = ctx.createDelay(duration + 0.1);\n delayNode.delayTime.value = duration;\n micSource.connect(delayNode).connect(destination);\n } else {\n micSource.connect(destination);\n }\n\n const recorder = new MediaRecorder(destination.stream, mimeType ? { mimeType } : {});\n recorder.ondataavailable = async (event) => {\n if (!event.data || event.data.size <= 0) return;\n const chunkBuffer = await event.data.arrayBuffer();\n if (onAudioChunk) onAudioChunk(chunkBuffer);\n else sendAudioChunk(chunkBuffer);\n };\n\n mediaRecorderRef.current = recorder;\n recorder.start(100);\n } catch (error) {\n onError?.(error);\n }\n }, [drainRingBuffer, forceAudioMp4, onAudioChunk, onError, sendAudioChunk]);\n\n const stopMediaRecorder = useCallback(() => {\n const recorder = mediaRecorderRef.current;\n if (!recorder) return;\n mediaRecorderRef.current = null;\n\n if (recorder.state === 'inactive') {\n if (onAudioEnd) onAudioEnd();\n else endAudioStream();\n return;\n }\n\n recorder.onstop = () => {\n if (onAudioEnd) onAudioEnd();\n else endAudioStream();\n };\n\n recorder.stop();\n }, [endAudioStream, onAudioEnd]);\n\n const discardMediaRecorder = useCallback(() => {\n const recorder = mediaRecorderRef.current;\n if (!recorder) return;\n mediaRecorderRef.current = null;\n if (recorder.state !== 'inactive') {\n try {\n recorder.stop();\n } catch {\n // Best effort cleanup.\n }\n }\n }, []);\n\n const cleanupMixContext = useCallback(() => {\n if (!mixCtxRef.current) return;\n mixCtxRef.current.close().catch(() => {});\n mixCtxRef.current = null;\n }, []);\n\n const cleanupStream = useCallback(() => {\n if (!streamRef.current) return;\n streamRef.current.getTracks().forEach((track) => track.stop());\n streamRef.current = null;\n }, []);\n\n const vad = useMicVAD({\n model: 'v5',\n startOnLoad: false,\n processorType: 'auto',\n positiveSpeechThreshold: 0.5,\n negativeSpeechThreshold: 0.3,\n redemptionMs: 800,\n preSpeechPadMs: PRE_SPEECH_PAD_MS,\n minSpeechMs: 150,\n submitUserSpeechOnPause: false,\n userSpeakingThreshold: 0.7,\n workletOptions: { processorOptions: { frameSamples: FRAME_SAMPLES } },\n baseAssetPath: 'https://cdn.jsdelivr.net/npm/@ricky0123/vad-web@0.0.30/dist/',\n onnxWASMBasePath: 'https://cdn.jsdelivr.net/npm/onnxruntime-web@1.24.1/dist/',\n ortConfig: (ort) => {\n ort.env.wasm.numThreads = 1;\n ort.env.logLevel = 'error';\n },\n getStream,\n pauseStream,\n resumeStream,\n onFrameProcessed: (_probs, frame) => {\n if (!frame) return;\n const ringBuffer = pcmRingRef.current;\n ringBuffer.push(new Float32Array(frame));\n if (ringBuffer.length > RING_BUFFER_SIZE) ringBuffer.shift();\n },\n onSpeechStart: () => {\n if (cooldownRef.current) return;\n if (speechEndTimerRef.current) {\n clearTimeout(speechEndTimerRef.current);\n speechEndTimerRef.current = null;\n }\n\n setIsSpeaking(true);\n if (interruptOnSpeechStart) {\n interrupt();\n }\n startMixedRecorder();\n onSpeechStart?.();\n },\n onSpeechEnd: () => {\n speechEndTimerRef.current = setTimeout(() => {\n setIsSpeaking(false);\n stopMediaRecorder();\n cooldownRef.current = true;\n setTimeout(() => {\n cooldownRef.current = false;\n }, 300);\n onSpeechEnd?.();\n }, SPEECH_END_DELAY_MS);\n },\n onVADMisfire: () => {\n if (speechEndTimerRef.current) {\n clearTimeout(speechEndTimerRef.current);\n speechEndTimerRef.current = null;\n }\n setIsSpeaking(false);\n discardMediaRecorder();\n onVADMisfire?.();\n },\n });\n\n const toggle = useCallback(() => {\n unlockAudioContext();\n if (vad.listening && mediaRecorderRef.current) {\n if (speechEndTimerRef.current) {\n clearTimeout(speechEndTimerRef.current);\n speechEndTimerRef.current = null;\n }\n setIsSpeaking(false);\n stopMediaRecorder();\n }\n vad.toggle();\n }, [stopMediaRecorder, unlockAudioContext, vad]);\n\n useEffect(() => {\n return () => {\n if (speechEndTimerRef.current) {\n clearTimeout(speechEndTimerRef.current);\n }\n discardMediaRecorder();\n cleanupMixContext();\n cleanupStream();\n };\n }, [cleanupMixContext, cleanupStream, discardMediaRecorder]);\n\n return {\n isListening: vad.listening,\n isLoading: vad.loading,\n isSpeaking,\n micError,\n toggle,\n start: vad.start,\n pause: vad.pause,\n userSpeaking: vad.userSpeaking,\n };\n}\n\nexport default useRqmiiVAD;\n","import { useEffect } from 'react';\nimport { useRqmiiAgentContext } from './RqmiiAgentContext';\nimport { AGENT_TYPES, CLOUD_STREAM_STATE } from './constants';\nimport { useRqmiiPressToTalk } from './hooks/useRqmiiPressToTalk';\nimport { useRqmiiVAD } from './hooks/useRqmiiVAD';\n\nexport const useRqmiiAgent = () => useRqmiiAgentContext();\n\nexport const useRqmiiConnection = () => {\n const {\n connectionState,\n isConnected,\n isSessionReady,\n error,\n reconnectAttempt,\n session,\n creditExhausted,\n creditError,\n sessionState,\n isSessionTerminated,\n isSessionTerminating,\n isAgentThinking,\n isAgentSpeaking,\n isToolExecuting,\n initializeSession,\n joinDesktopSession,\n disconnect,\n terminateSession,\n interrupt,\n clearSessionHistory,\n changeSessionLanguage,\n } = useRqmiiAgentContext();\n\n return {\n connectionState,\n isConnected,\n isSessionReady,\n error,\n reconnectAttempt,\n session,\n creditExhausted,\n creditError,\n sessionState,\n isSessionTerminated,\n isSessionTerminating,\n isAgentThinking,\n isAgentSpeaking,\n isToolExecuting,\n initializeSession,\n joinDesktopSession,\n disconnect,\n terminateSession,\n interrupt,\n clearSessionHistory,\n changeSessionLanguage,\n };\n};\n\nexport const useRqmiiSessionState = () => {\n const {\n sessionState,\n isSessionTerminated,\n isSessionTerminating,\n isAgentThinking,\n isAgentSpeaking,\n isToolExecuting,\n } = useRqmiiAgentContext();\n\n return {\n sessionState,\n isSessionTerminated,\n isSessionTerminating,\n isAgentThinking,\n isAgentSpeaking,\n isToolExecuting,\n };\n};\n\nexport const useRqmiiMessages = () => {\n const { messages, sendTextMessage, clearMessages } = useRqmiiAgentContext();\n return {\n messages,\n sendTextMessage,\n clearMessages,\n };\n};\n\nexport const useRqmiiVoice = () => {\n const {\n sendAudioChunk,\n endAudioStream,\n isAudioPlaying,\n transcript,\n partialTranscript,\n interrupt,\n resumeAudioPlayback,\n attachAudioElement,\n } = useRqmiiAgentContext();\n\n return {\n sendAudioChunk,\n endAudioStream,\n isAudioPlaying,\n transcript,\n partialTranscript,\n interrupt,\n resumeAudioPlayback,\n attachAudioElement,\n };\n};\n\nexport const useRqmiiAvatar = () => {\n const { session, isAvatarSpeaking, cloudStream, setCloudStreamState } = useRqmiiAgentContext();\n const streamState = cloudStream?.state || CLOUD_STREAM_STATE.IDLE;\n\n return {\n streamingUrl: session.streamingUrl,\n isAvatarSpeaking,\n speakingSource: 'avatar_events',\n isCloudAvatar: session.agentType === AGENT_TYPES.CLOUD_AVATAR,\n isDesktopAvatar: session.agentType === AGENT_TYPES.DESKTOP_AVATAR,\n cloudStreamState: streamState,\n cloudStreamError: cloudStream?.error || null,\n isCloudStreamConnected: streamState === CLOUD_STREAM_STATE.CONNECTED,\n isCloudStreamLoading:\n streamState === CLOUD_STREAM_STATE.CONNECTING || streamState === CLOUD_STREAM_STATE.LOADING,\n setCloudStreamState,\n };\n};\n\nexport const useRqmiiAudioElement = (audioRef) => {\n const { attachAudioElement, resumeAudioPlayback } = useRqmiiAgentContext();\n\n useEffect(() => {\n if (!audioRef?.current) return undefined;\n\n attachAudioElement(audioRef.current);\n const unlock = () => {\n void resumeAudioPlayback();\n };\n\n const node = audioRef.current;\n node.addEventListener('click', unlock);\n node.addEventListener('touchstart', unlock);\n\n return () => {\n node.removeEventListener('click', unlock);\n node.removeEventListener('touchstart', unlock);\n attachAudioElement(null);\n };\n }, [attachAudioElement, audioRef, resumeAudioPlayback]);\n};\n\nexport { useRqmiiPressToTalk, useRqmiiVAD };\n","import { useEffect, useRef } from 'react';\nimport { RqmiiAgentProvider } from '../RqmiiAgentContext';\nimport { useRqmiiConnection } from '../hooks';\n\nfunction AutoConnector({ connect = true, session, onError, onInitialized, children }) {\n const { initializeSession, joinDesktopSession, disconnect } = useRqmiiConnection();\n const startedRef = useRef(false);\n\n useEffect(() => {\n if (!connect || startedRef.current) return;\n\n let cancelled = false;\n startedRef.current = true;\n\n const run = async () => {\n try {\n if (session?.mode === 'join_desktop') {\n const result = await joinDesktopSession({ uniqueId: session.uniqueId });\n if (!cancelled) onInitialized?.(result);\n return;\n }\n\n const result = await initializeSession({\n apiKey: session?.apiKey,\n publicChatId: session?.publicChatId,\n agentId: session?.agentId,\n language: session?.language || 'en',\n });\n if (!cancelled) onInitialized?.(result);\n } catch (error) {\n if (!cancelled) onError?.(error);\n }\n };\n\n void run();\n\n return () => {\n cancelled = true;\n disconnect();\n startedRef.current = false;\n };\n }, [connect, disconnect, initializeSession, joinDesktopSession, onError, onInitialized, session]);\n\n return children;\n}\n\nexport function RqmiiAgentRoom({\n children,\n wsUrl,\n restUrl,\n session,\n connect = true,\n reconnectOptions,\n enableAudio = true,\n pcmOptions,\n debug = false,\n onError,\n onInitialized,\n}) {\n return (\n <RqmiiAgentProvider\n wsUrl={wsUrl}\n restUrl={restUrl}\n reconnectOptions={reconnectOptions}\n enableAudio={enableAudio}\n pcmOptions={pcmOptions}\n debug={debug}\n >\n <AutoConnector\n connect={connect}\n session={session}\n onError={onError}\n onInitialized={onInitialized}\n >\n {children}\n </AutoConnector>\n </RqmiiAgentProvider>\n );\n}\n\nexport default RqmiiAgentRoom;\n","/* eslint-env node */\n'use strict';\n\n// SDP helpers.\nconst SDPUtils = {};\n\n// Generate an alphanumeric identifier for cname or mids.\n// TODO: use UUIDs instead? https://gist.github.com/jed/982883\nSDPUtils.generateIdentifier = function() {\n return Math.random().toString(36).substring(2, 12);\n};\n\n// The RTCP CNAME used by all peerconnections from the same JS.\nSDPUtils.localCName = SDPUtils.generateIdentifier();\n\n// Splits SDP into lines, dealing with both CRLF and LF.\nSDPUtils.splitLines = function(blob) {\n return blob.trim().split('\\n').map(line => line.trim());\n};\n// Splits SDP into sessionpart and mediasections. Ensures CRLF.\nSDPUtils.splitSections = function(blob) {\n const parts = blob.split('\\nm=');\n return parts.map((part, index) => (index > 0 ?\n 'm=' + part : part).trim() + '\\r\\n');\n};\n\n// Returns the session description.\nSDPUtils.getDescription = function(blob) {\n const sections = SDPUtils.splitSections(blob);\n return sections && sections[0];\n};\n\n// Returns the individual media sections.\nSDPUtils.getMediaSections = function(blob) {\n const sections = SDPUtils.splitSections(blob);\n sections.shift();\n return sections;\n};\n\n// Returns lines that start with a certain prefix.\nSDPUtils.matchPrefix = function(blob, prefix) {\n return SDPUtils.splitLines(blob).filter(line => line.indexOf(prefix) === 0);\n};\n\n// Parses an ICE candidate line. Sample input:\n// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8\n// rport 55996\"\n// Input can be prefixed with a=.\nSDPUtils.parseCandidate = function(line) {\n let parts;\n // Parse both variants.\n if (line.indexOf('a=candidate:') === 0) {\n parts = line.substring(12).split(' ');\n } else {\n parts = line.substring(10).split(' ');\n }\n\n const candidate = {\n foundation: parts[0],\n component: {1: 'rtp', 2: 'rtcp'}[parts[1]] || parts[1],\n protocol: parts[2].toLowerCase(),\n priority: parseInt(parts[3], 10),\n ip: parts[4],\n address: parts[4], // address is an alias for ip.\n port: parseInt(parts[5], 10),\n // skip parts[6] == 'typ'\n type: parts[7],\n };\n\n for (let i = 8; i < parts.length; i += 2) {\n switch (parts[i]) {\n case 'raddr':\n candidate.relatedAddress = parts[i + 1];\n break;\n case 'rport':\n candidate.relatedPort = parseInt(parts[i + 1], 10);\n break;\n case 'tcptype':\n candidate.tcpType = parts[i + 1];\n break;\n case 'ufrag':\n candidate.ufrag = parts[i + 1]; // for backward compatibility.\n candidate.usernameFragment = parts[i + 1];\n break;\n default: // extension handling, in particular ufrag. Don't overwrite.\n if (candidate[parts[i]] === undefined) {\n candidate[parts[i]] = parts[i + 1];\n }\n break;\n }\n }\n return candidate;\n};\n\n// Translates a candidate object into SDP candidate attribute.\n// This does not include the a= prefix!\nSDPUtils.writeCandidate = function(candidate) {\n const sdp = [];\n sdp.push(candidate.foundation);\n\n const component = candidate.component;\n if (component === 'rtp') {\n sdp.push(1);\n } else if (component === 'rtcp') {\n sdp.push(2);\n } else {\n sdp.push(component);\n }\n sdp.push(candidate.protocol.toUpperCase());\n sdp.push(candidate.priority);\n sdp.push(candidate.address || candidate.ip);\n sdp.push(candidate.port);\n\n const type = candidate.type;\n sdp.push('typ');\n sdp.push(type);\n if (type !== 'host' && candidate.relatedAddress &&\n candidate.relatedPort) {\n sdp.push('raddr');\n sdp.push(candidate.relatedAddress);\n sdp.push('rport');\n sdp.push(candidate.relatedPort);\n }\n if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') {\n sdp.push('tcptype');\n sdp.push(candidate.tcpType);\n }\n if (candidate.usernameFragment || candidate.ufrag) {\n sdp.push('ufrag');\n sdp.push(candidate.usernameFragment || candidate.ufrag);\n }\n return 'candidate:' + sdp.join(' ');\n};\n\n// Parses an ice-options line, returns an array of option tags.\n// Sample input:\n// a=ice-options:foo bar\nSDPUtils.parseIceOptions = function(line) {\n return line.substring(14).split(' ');\n};\n\n// Parses a rtpmap line, returns RTCRtpCoddecParameters. Sample input:\n// a=rtpmap:111 opus/48000/2\nSDPUtils.parseRtpMap = function(line) {\n let parts = line.substring(9).split(' ');\n const parsed = {\n payloadType: parseInt(parts.shift(), 10), // was: id\n };\n\n parts = parts[0].split('/');\n\n parsed.name = parts[0];\n parsed.clockRate = parseInt(parts[1], 10); // was: clockrate\n parsed.channels = parts.length === 3 ? parseInt(parts[2], 10) : 1;\n // legacy alias, got renamed back to channels in ORTC.\n parsed.numChannels = parsed.channels;\n return parsed;\n};\n\n// Generates a rtpmap line from RTCRtpCodecCapability or\n// RTCRtpCodecParameters.\nSDPUtils.writeRtpMap = function(codec) {\n let pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n const channels = codec.channels || codec.numChannels || 1;\n return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate +\n (channels !== 1 ? '/' + channels : '') + '\\r\\n';\n};\n\n// Parses a extmap line (headerextension from RFC 5285). Sample input:\n// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset\n// a=extmap:2/sendonly urn:ietf:params:rtp-hdrext:toffset\nSDPUtils.parseExtmap = function(line) {\n const parts = line.substring(9).split(' ');\n return {\n id: parseInt(parts[0], 10),\n direction: parts[0].indexOf('/') > 0 ? parts[0].split('/')[1] : 'sendrecv',\n uri: parts[1],\n attributes: parts.slice(2).join(' '),\n };\n};\n\n// Generates an extmap line from RTCRtpHeaderExtensionParameters or\n// RTCRtpHeaderExtension.\nSDPUtils.writeExtmap = function(headerExtension) {\n return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) +\n (headerExtension.direction && headerExtension.direction !== 'sendrecv'\n ? '/' + headerExtension.direction\n : '') +\n ' ' + headerExtension.uri +\n (headerExtension.attributes ? ' ' + headerExtension.attributes : '') +\n '\\r\\n';\n};\n\n// Parses a fmtp line, returns dictionary. Sample input:\n// a=fmtp:96 vbr=on;cng=on\n// Also deals with vbr=on; cng=on\n// Non-key-value such as telephone-events `0-15` get parsed as\n// {`0-15`:undefined}\nSDPUtils.parseFmtp = function(line) {\n const parsed = {};\n let kv;\n const parts = line.substring(line.indexOf(' ') + 1).split(';');\n for (let j = 0; j < parts.length; j++) {\n kv = parts[j].trim().split('=');\n parsed[kv[0].trim()] = kv[1];\n }\n return parsed;\n};\n\n// Generates a fmtp line from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeFmtp = function(codec) {\n let line = '';\n let pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.parameters && Object.keys(codec.parameters).length) {\n const params = [];\n Object.keys(codec.parameters).forEach(param => {\n if (codec.parameters[param] !== undefined) {\n params.push(param + '=' + codec.parameters[param]);\n } else {\n params.push(param);\n }\n });\n line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\\r\\n';\n }\n return line;\n};\n\n// Parses a rtcp-fb line, returns RTCPRtcpFeedback object. Sample input:\n// a=rtcp-fb:98 nack rpsi\nSDPUtils.parseRtcpFb = function(line) {\n const parts = line.substring(line.indexOf(' ') + 1).split(' ');\n return {\n type: parts.shift(),\n parameter: parts.join(' '),\n };\n};\n\n// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeRtcpFb = function(codec) {\n let lines = '';\n let pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.rtcpFeedback && codec.rtcpFeedback.length) {\n // FIXME: special handling for trr-int?\n codec.rtcpFeedback.forEach(fb => {\n lines += 'a=rtcp-fb:' + pt + ' ' + fb.type +\n (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') +\n '\\r\\n';\n });\n }\n return lines;\n};\n\n// Parses a RFC 5576 ssrc media attribute. Sample input:\n// a=ssrc:3735928559 cname:something\nSDPUtils.parseSsrcMedia = function(line) {\n const sp = line.indexOf(' ');\n const parts = {\n ssrc: parseInt(line.substring(7, sp), 10),\n };\n const colon = line.indexOf(':', sp);\n if (colon > -1) {\n parts.attribute = line.substring(sp + 1, colon);\n parts.value = line.substring(colon + 1);\n } else {\n parts.attribute = line.substring(sp + 1);\n }\n return parts;\n};\n\n// Parse a ssrc-group line (see RFC 5576). Sample input:\n// a=ssrc-group:semantics 12 34\nSDPUtils.parseSsrcGroup = function(line) {\n const parts = line.substring(13).split(' ');\n return {\n semantics: parts.shift(),\n ssrcs: parts.map(ssrc => parseInt(ssrc, 10)),\n };\n};\n\n// Extracts the MID (RFC 5888) from a media section.\n// Returns the MID or undefined if no mid line was found.\nSDPUtils.getMid = function(mediaSection) {\n const mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0];\n if (mid) {\n return mid.substring(6);\n }\n};\n\n// Parses a fingerprint line for DTLS-SRTP.\nSDPUtils.parseFingerprint = function(line) {\n const parts = line.substring(14).split(' ');\n return {\n algorithm: parts[0].toLowerCase(), // algorithm is case-sensitive in Edge.\n value: parts[1].toUpperCase(), // the definition is upper-case in RFC 4572.\n };\n};\n\n// Extracts DTLS parameters from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the fingerprint line as input. See also getIceParameters.\nSDPUtils.getDtlsParameters = function(mediaSection, sessionpart) {\n const lines = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=fingerprint:');\n // Note: a=setup line is ignored since we use the 'auto' role in Edge.\n return {\n role: 'auto',\n fingerprints: lines.map(SDPUtils.parseFingerprint),\n };\n};\n\n// Serializes DTLS parameters to SDP.\nSDPUtils.writeDtlsParameters = function(params, setupType) {\n let sdp = 'a=setup:' + setupType + '\\r\\n';\n params.fingerprints.forEach(fp => {\n sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\\r\\n';\n });\n return sdp;\n};\n\n// Parses a=crypto lines into\n// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#dictionary-rtcsrtpsdesparameters-members\nSDPUtils.parseCryptoLine = function(line) {\n const parts = line.substring(9).split(' ');\n return {\n tag: parseInt(parts[0], 10),\n cryptoSuite: parts[1],\n keyParams: parts[2],\n sessionParams: parts.slice(3),\n };\n};\n\nSDPUtils.writeCryptoLine = function(parameters) {\n return 'a=crypto:' + parameters.tag + ' ' +\n parameters.cryptoSuite + ' ' +\n (typeof parameters.keyParams === 'object'\n ? SDPUtils.writeCryptoKeyParams(parameters.keyParams)\n : parameters.keyParams) +\n (parameters.sessionParams ? ' ' + parameters.sessionParams.join(' ') : '') +\n '\\r\\n';\n};\n\n// Parses the crypto key parameters into\n// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#rtcsrtpkeyparam*\nSDPUtils.parseCryptoKeyParams = function(keyParams) {\n if (keyParams.indexOf('inline:') !== 0) {\n return null;\n }\n const parts = keyParams.substring(7).split('|');\n return {\n keyMethod: 'inline',\n keySalt: parts[0],\n lifeTime: parts[1],\n mkiValue: parts[2] ? parts[2].split(':')[0] : undefined,\n mkiLength: parts[2] ? parts[2].split(':')[1] : undefined,\n };\n};\n\nSDPUtils.writeCryptoKeyParams = function(keyParams) {\n return keyParams.keyMethod + ':'\n + keyParams.keySalt +\n (keyParams.lifeTime ? '|' + keyParams.lifeTime : '') +\n (keyParams.mkiValue && keyParams.mkiLength\n ? '|' + keyParams.mkiValue + ':' + keyParams.mkiLength\n : '');\n};\n\n// Extracts all SDES parameters.\nSDPUtils.getCryptoParameters = function(mediaSection, sessionpart) {\n const lines = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=crypto:');\n return lines.map(SDPUtils.parseCryptoLine);\n};\n\n// Parses ICE information from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the ice-ufrag and ice-pwd lines as input.\nSDPUtils.getIceParameters = function(mediaSection, sessionpart) {\n const ufrag = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=ice-ufrag:')[0];\n const pwd = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=ice-pwd:')[0];\n if (!(ufrag && pwd)) {\n return null;\n }\n return {\n usernameFragment: ufrag.substring(12),\n password: pwd.substring(10),\n };\n};\n\n// Serializes ICE parameters to SDP.\nSDPUtils.writeIceParameters = function(params) {\n let sdp = 'a=ice-ufrag:' + params.usernameFragment + '\\r\\n' +\n 'a=ice-pwd:' + params.password + '\\r\\n';\n if (params.iceLite) {\n sdp += 'a=ice-lite\\r\\n';\n }\n return sdp;\n};\n\n// Parses the SDP media section and returns RTCRtpParameters.\nSDPUtils.parseRtpParameters = function(mediaSection) {\n const description = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: [],\n rtcp: [],\n };\n const lines = SDPUtils.splitLines(mediaSection);\n const mline = lines[0].split(' ');\n description.profile = mline[2];\n for (let i = 3; i < mline.length; i++) { // find all codecs from mline[3..]\n const pt = mline[i];\n const rtpmapline = SDPUtils.matchPrefix(\n mediaSection, 'a=rtpmap:' + pt + ' ')[0];\n if (rtpmapline) {\n const codec = SDPUtils.parseRtpMap(rtpmapline);\n const fmtps = SDPUtils.matchPrefix(\n mediaSection, 'a=fmtp:' + pt + ' ');\n // Only the first a=fmtp:<pt> is considered.\n codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {};\n codec.rtcpFeedback = SDPUtils.matchPrefix(\n mediaSection, 'a=rtcp-fb:' + pt + ' ')\n .map(SDPUtils.parseRtcpFb);\n description.codecs.push(codec);\n // parse FEC mechanisms from rtpmap lines.\n switch (codec.name.toUpperCase()) {\n case 'RED':\n case 'ULPFEC':\n description.fecMechanisms.push(codec.name.toUpperCase());\n break;\n default: // only RED and ULPFEC are recognized as FEC mechanisms.\n break;\n }\n }\n }\n SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(line => {\n description.headerExtensions.push(SDPUtils.parseExtmap(line));\n });\n const wildcardRtcpFb = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-fb:* ')\n .map(SDPUtils.parseRtcpFb);\n description.codecs.forEach(codec => {\n wildcardRtcpFb.forEach(fb=> {\n const duplicate = codec.rtcpFeedback.find(existingFeedback => {\n return existingFeedback.type === fb.type &&\n existingFeedback.parameter === fb.parameter;\n });\n if (!duplicate) {\n codec.rtcpFeedback.push(fb);\n }\n });\n });\n // FIXME: parse rtcp.\n return description;\n};\n\n// Generates parts of the SDP media section describing the capabilities /\n// parameters.\nSDPUtils.writeRtpDescription = function(kind, caps) {\n let sdp = '';\n\n // Build the mline.\n sdp += 'm=' + kind + ' ';\n sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs.\n sdp += ' ' + (caps.profile || 'UDP/TLS/RTP/SAVPF') + ' ';\n sdp += caps.codecs.map(codec => {\n if (codec.preferredPayloadType !== undefined) {\n return codec.preferredPayloadType;\n }\n return codec.payloadType;\n }).join(' ') + '\\r\\n';\n\n sdp += 'c=IN IP4 0.0.0.0\\r\\n';\n sdp += 'a=rtcp:9 IN IP4 0.0.0.0\\r\\n';\n\n // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb.\n caps.codecs.forEach(codec => {\n sdp += SDPUtils.writeRtpMap(codec);\n sdp += SDPUtils.writeFmtp(codec);\n sdp += SDPUtils.writeRtcpFb(codec);\n });\n let maxptime = 0;\n caps.codecs.forEach(codec => {\n if (codec.maxptime > maxptime) {\n maxptime = codec.maxptime;\n }\n });\n if (maxptime > 0) {\n sdp += 'a=maxptime:' + maxptime + '\\r\\n';\n }\n\n if (caps.headerExtensions) {\n caps.headerExtensions.forEach(extension => {\n sdp += SDPUtils.writeExtmap(extension);\n });\n }\n // FIXME: write fecMechanisms.\n return sdp;\n};\n\n// Parses the SDP media section and returns an array of\n// RTCRtpEncodingParameters.\nSDPUtils.parseRtpEncodingParameters = function(mediaSection) {\n const encodingParameters = [];\n const description = SDPUtils.parseRtpParameters(mediaSection);\n const hasRed = description.fecMechanisms.indexOf('RED') !== -1;\n const hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1;\n\n // filter a=ssrc:... cname:, ignore PlanB-msid\n const ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(line => SDPUtils.parseSsrcMedia(line))\n .filter(parts => parts.attribute === 'cname');\n const primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc;\n let secondarySsrc;\n\n const flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID')\n .map(line => {\n const parts = line.substring(17).split(' ');\n return parts.map(part => parseInt(part, 10));\n });\n if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) {\n secondarySsrc = flows[0][1];\n }\n\n description.codecs.forEach(codec => {\n if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) {\n let encParam = {\n ssrc: primarySsrc,\n codecPayloadType: parseInt(codec.parameters.apt, 10),\n };\n if (primarySsrc && secondarySsrc) {\n encParam.rtx = {ssrc: secondarySsrc};\n }\n encodingParameters.push(encParam);\n if (hasRed) {\n encParam = JSON.parse(JSON.stringify(encParam));\n encParam.fec = {\n ssrc: primarySsrc,\n mechanism: hasUlpfec ? 'red+ulpfec' : 'red',\n };\n encodingParameters.push(encParam);\n }\n }\n });\n if (encodingParameters.length === 0 && primarySsrc) {\n encodingParameters.push({\n ssrc: primarySsrc,\n });\n }\n\n // we support both b=AS and b=TIAS but interpret AS as TIAS.\n let bandwidth = SDPUtils.matchPrefix(mediaSection, 'b=');\n if (bandwidth.length) {\n if (bandwidth[0].indexOf('b=TIAS:') === 0) {\n bandwidth = parseInt(bandwidth[0].substring(7), 10);\n } else if (bandwidth[0].indexOf('b=AS:') === 0) {\n // use formula from JSEP to convert b=AS to TIAS value.\n bandwidth = parseInt(bandwidth[0].substring(5), 10) * 1000 * 0.95\n - (50 * 40 * 8);\n } else {\n bandwidth = undefined;\n }\n encodingParameters.forEach(params => {\n params.maxBitrate = bandwidth;\n });\n }\n return encodingParameters;\n};\n\n// parses http://draft.ortc.org/#rtcrtcpparameters*\nSDPUtils.parseRtcpParameters = function(mediaSection) {\n const rtcpParameters = {};\n\n // Gets the first SSRC. Note that with RTX there might be multiple\n // SSRCs.\n const remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(line => SDPUtils.parseSsrcMedia(line))\n .filter(obj => obj.attribute === 'cname')[0];\n if (remoteSsrc) {\n rtcpParameters.cname = remoteSsrc.value;\n rtcpParameters.ssrc = remoteSsrc.ssrc;\n }\n\n // Edge uses the compound attribute instead of reducedSize\n // compound is !reducedSize\n const rsize = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-rsize');\n rtcpParameters.reducedSize = rsize.length > 0;\n rtcpParameters.compound = rsize.length === 0;\n\n // parses the rtcp-mux attrіbute.\n // Note that Edge does not support unmuxed RTCP.\n const mux = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-mux');\n rtcpParameters.mux = mux.length > 0;\n\n return rtcpParameters;\n};\n\nSDPUtils.writeRtcpParameters = function(rtcpParameters) {\n let sdp = '';\n if (rtcpParameters.reducedSize) {\n sdp += 'a=rtcp-rsize\\r\\n';\n }\n if (rtcpParameters.mux) {\n sdp += 'a=rtcp-mux\\r\\n';\n }\n if (rtcpParameters.ssrc !== undefined && rtcpParameters.cname) {\n sdp += 'a=ssrc:' + rtcpParameters.ssrc +\n ' cname:' + rtcpParameters.cname + '\\r\\n';\n }\n return sdp;\n};\n\n\n// parses either a=msid: or a=ssrc:... msid lines and returns\n// the id of the MediaStream and MediaStreamTrack.\nSDPUtils.parseMsid = function(mediaSection) {\n let parts;\n const spec = SDPUtils.matchPrefix(mediaSection, 'a=msid:');\n if (spec.length === 1) {\n parts = spec[0].substring(7).split(' ');\n return {stream: parts[0], track: parts[1]};\n }\n const planB = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(line => SDPUtils.parseSsrcMedia(line))\n .filter(msidParts => msidParts.attribute === 'msid');\n if (planB.length > 0) {\n parts = planB[0].value.split(' ');\n return {stream: parts[0], track: parts[1]};\n }\n};\n\n// SCTP\n// parses draft-ietf-mmusic-sctp-sdp-26 first and falls back\n// to draft-ietf-mmusic-sctp-sdp-05\nSDPUtils.parseSctpDescription = function(mediaSection) {\n const mline = SDPUtils.parseMLine(mediaSection);\n const maxSizeLine = SDPUtils.matchPrefix(mediaSection, 'a=max-message-size:');\n let maxMessageSize;\n if (maxSizeLine.length > 0) {\n maxMessageSize = parseInt(maxSizeLine[0].substring(19), 10);\n }\n if (isNaN(maxMessageSize)) {\n maxMessageSize = 65536;\n }\n const sctpPort = SDPUtils.matchPrefix(mediaSection, 'a=sctp-port:');\n if (sctpPort.length > 0) {\n return {\n port: parseInt(sctpPort[0].substring(12), 10),\n protocol: mline.fmt,\n maxMessageSize,\n };\n }\n const sctpMapLines = SDPUtils.matchPrefix(mediaSection, 'a=sctpmap:');\n if (sctpMapLines.length > 0) {\n const parts = sctpMapLines[0]\n .substring(10)\n .split(' ');\n return {\n port: parseInt(parts[0], 10),\n protocol: parts[1],\n maxMessageSize,\n };\n }\n};\n\n// SCTP\n// outputs the draft-ietf-mmusic-sctp-sdp-26 version that all browsers\n// support by now receiving in this format, unless we originally parsed\n// as the draft-ietf-mmusic-sctp-sdp-05 format (indicated by the m-line\n// protocol of DTLS/SCTP -- without UDP/ or TCP/)\nSDPUtils.writeSctpDescription = function(media, sctp) {\n let output = [];\n if (media.protocol !== 'DTLS/SCTP') {\n output = [\n 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.protocol + '\\r\\n',\n 'c=IN IP4 0.0.0.0\\r\\n',\n 'a=sctp-port:' + sctp.port + '\\r\\n',\n ];\n } else {\n output = [\n 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.port + '\\r\\n',\n 'c=IN IP4 0.0.0.0\\r\\n',\n 'a=sctpmap:' + sctp.port + ' ' + sctp.protocol + ' 65535\\r\\n',\n ];\n }\n if (sctp.maxMessageSize !== undefined) {\n output.push('a=max-message-size:' + sctp.maxMessageSize + '\\r\\n');\n }\n return output.join('');\n};\n\n// Generate a session ID for SDP.\n// https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-20#section-5.2.1\n// recommends using a cryptographically random +ve 64-bit value\n// but right now this should be acceptable and within the right range\nSDPUtils.generateSessionId = function() {\n return Math.random().toString().substr(2, 22);\n};\n\n// Write boiler plate for start of SDP\n// sessId argument is optional - if not supplied it will\n// be generated randomly\n// sessVersion is optional and defaults to 2\n// sessUser is optional and defaults to 'thisisadapterortc'\nSDPUtils.writeSessionBoilerplate = function(sessId, sessVer, sessUser) {\n let sessionId;\n const version = sessVer !== undefined ? sessVer : 2;\n if (sessId) {\n sessionId = sessId;\n } else {\n sessionId = SDPUtils.generateSessionId();\n }\n const user = sessUser || 'thisisadapterortc';\n // FIXME: sess-id should be an NTP timestamp.\n return 'v=0\\r\\n' +\n 'o=' + user + ' ' + sessionId + ' ' + version +\n ' IN IP4 127.0.0.1\\r\\n' +\n 's=-\\r\\n' +\n 't=0 0\\r\\n';\n};\n\n// Gets the direction from the mediaSection or the sessionpart.\nSDPUtils.getDirection = function(mediaSection, sessionpart) {\n // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv.\n const lines = SDPUtils.splitLines(mediaSection);\n for (let i = 0; i < lines.length; i++) {\n switch (lines[i]) {\n case 'a=sendrecv':\n case 'a=sendonly':\n case 'a=recvonly':\n case 'a=inactive':\n return lines[i].substring(2);\n default:\n // FIXME: What should happen here?\n }\n }\n if (sessionpart) {\n return SDPUtils.getDirection(sessionpart);\n }\n return 'sendrecv';\n};\n\nSDPUtils.getKind = function(mediaSection) {\n const lines = SDPUtils.splitLines(mediaSection);\n const mline = lines[0].split(' ');\n return mline[0].substring(2);\n};\n\nSDPUtils.isRejected = function(mediaSection) {\n return mediaSection.split(' ', 2)[1] === '0';\n};\n\nSDPUtils.parseMLine = function(mediaSection) {\n const lines = SDPUtils.splitLines(mediaSection);\n const parts = lines[0].substring(2).split(' ');\n return {\n kind: parts[0],\n port: parseInt(parts[1], 10),\n protocol: parts[2],\n fmt: parts.slice(3).join(' '),\n };\n};\n\nSDPUtils.parseOLine = function(mediaSection) {\n const line = SDPUtils.matchPrefix(mediaSection, 'o=')[0];\n const parts = line.substring(2).split(' ');\n return {\n username: parts[0],\n sessionId: parts[1],\n sessionVersion: parseInt(parts[2], 10),\n netType: parts[3],\n addressType: parts[4],\n address: parts[5],\n };\n};\n\n// a very naive interpretation of a valid SDP.\nSDPUtils.isValidSDP = function(blob) {\n if (typeof blob !== 'string' || blob.length === 0) {\n return false;\n }\n const lines = SDPUtils.splitLines(blob);\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].length < 2 || lines[i].charAt(1) !== '=') {\n return false;\n }\n // TODO: check the modifier a bit more.\n }\n return true;\n};\n\n// Expose public methods.\nif (typeof module === 'object') {\n module.exports = SDPUtils;\n}\n","import*as e from\"sdp\";var t,s,n={d:(e,t)=>{for(var s in t)n.o(t,s)&&!n.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},r={};n.d(r,{Dz:()=>ye,g$:()=>A,Lt:()=>k,Q9:()=>x,qf:()=>L,hV:()=>Ae,z$:()=>wt,J0:()=>Pe,De:()=>Te,$C:()=>Ee,al:()=>_,_W:()=>V,Gv:()=>se,m:()=>ne,tz:()=>z,Nu:()=>Re,zg:()=>He,vp:()=>he,vU:()=>ue,wF:()=>J,rv:()=>we,Nh:()=>be,ss:()=>_e,qW:()=>re,QL:()=>te,cf:()=>Ne,eM:()=>j,Yd:()=>i,Tk:()=>Ge,iM:()=>S,qy:()=>a,ce:()=>v,sK:()=>me,Ok:()=>Ce,q5:()=>ke,g:()=>Mt,xl:()=>q,I:()=>$,bx:()=>X,dD:()=>de,Ib:()=>M,Az:()=>w,Iw:()=>b,qY:()=>P,db:()=>R,mR:()=>ie,Tn:()=>C,rV:()=>Y,gh:()=>W,Mi:()=>N,j:()=>K,YB:()=>Q,Yt:()=>ee,i5:()=>Z,x_:()=>Se,Am:()=>pt,eR:()=>F,r8:()=>H,u3:()=>We,vd:()=>O,iV:()=>U,jZ:()=>I,SW:()=>B,ZH:()=>G,Ni:()=>vt,lh:()=>D,ZP:()=>ce,bq:()=>f,$f:()=>ft,eu:()=>le,Ax:()=>oe,Mc:()=>ae});class i{static GetStackTrace(){const e=new Error;let t=\"No Stack Available for this browser\";return e.stack&&(t=e.stack.toString().replace(/Error/g,\"\")),t}static SetLoggerVerbosity(e){null!=this.verboseLogLevel&&(this.verboseLogLevel=e)}static Log(e,t,s){if(s>this.verboseLogLevel)return;const n=`Level: Log\\nMsg: ${t}\\nCaller: ${e}`;console.log(n)}static Info(e,t,s){if(s>this.verboseLogLevel)return;const n=`Level: Info\\nMsg: ${t}`;console.info(n)}static Error(e,t){const s=`Level: Error\\nMsg: ${t}\\nCaller: ${e}`;console.error(s)}static Warning(e,t){const s=`Level: Warning\\nCaller: ${e}\\nMsg: ${t}`;console.warn(s)}}i.verboseLogLevel=5,function(e){e.LIST_STREAMERS=\"listStreamers\",e.SUBSCRIBE=\"subscribe\",e.UNSUBSCRIBE=\"unsubscribe\",e.ICE_CANDIDATE=\"iceCandidate\",e.OFFER=\"offer\",e.ANSWER=\"answer\",e.DATACHANNELREQUEST=\"dataChannelRequest\",e.SFURECVDATACHANNELREADY=\"peerDataChannelsReady\",e.PONG=\"pong\"}(t||(t={}));class a{sendFilter(e,t){return t}payload(){return i.Log(i.GetStackTrace(),\"Sending => \\n\"+JSON.stringify(this,this.sendFilter,4),6),JSON.stringify(this,this.sendFilter)}}class o extends a{constructor(){super(),this.type=t.LIST_STREAMERS}}class l extends a{constructor(e){super(),this.type=t.SUBSCRIBE,this.streamerId=e}}class d extends a{constructor(){super(),this.type=t.UNSUBSCRIBE}}class c extends a{constructor(e){super(),this.type=t.PONG,this.time=e}}class h extends a{constructor(e,s){super(),this.type=t.OFFER,this.minBitrate=0,this.maxBitrate=0,e&&(this.type=e.type,this.sdp=e.sdp,this.minBitrate=s.minBitrateBps,this.maxBitrate=s.maxBitrateBps)}sendFilter(e,t){if(\"minBitrate\"!=e&&\"maxBitrate\"!=e||!(t<=0))return t}}class u extends a{constructor(e,s){super(),this.type=t.ANSWER,this.minBitrate=0,this.maxBitrate=0,e&&(this.type=e.type,this.sdp=e.sdp,this.minBitrate=s.minBitrateBps,this.maxBitrate=s.maxBitrateBps)}sendFilter(e,t){if(\"minBitrate\"!=e&&\"maxBitrate\"!=e||!(t<=0))return t}}class g extends a{constructor(){super(),this.type=t.DATACHANNELREQUEST}}class m extends a{constructor(){super(),this.type=t.SFURECVDATACHANNELREADY}}class p{constructor(e){this.type=t.ICE_CANDIDATE,this.candidate=e}payload(){return i.Log(i.GetStackTrace(),\"Sending => \\n\"+JSON.stringify(this,void 0,4),6),JSON.stringify(this)}}!function(e){e.CONFIG=\"config\",e.STREAMER_LIST=\"streamerList\",e.STREAMER_ID_CHANGED=\"streamerIDChanged\",e.PLAYER_COUNT=\"playerCount\",e.OFFER=\"offer\",e.ANSWER=\"answer\",e.ICE_CANDIDATE=\"iceCandidate\",e.PEER_DATA_CHANNELS=\"peerDataChannels\",e.PING=\"ping\",e.WARNING=\"warning\"}(s||(s={}));class S{}class v extends S{}class C{constructor(){this.FromUEMessageHandlers=new Map}addMessageHandler(e,t){this.FromUEMessageHandlers.set(e,t)}handleMessage(e,t){this.FromUEMessageHandlers.has(e)?this.FromUEMessageHandlers.get(e)(t):i.Error(i.GetStackTrace(),`Message type of ${e} does not have a message handler registered on the frontend - ignoring message.`)}static setupDefaultHandlers(e){e.signallingProtocol.addMessageHandler(s.PING,(t=>{const n=new c((new Date).getTime()).payload();i.Log(i.GetStackTrace(),s.PING+\": \"+t,6),e.webSocket.send(n)})),e.signallingProtocol.addMessageHandler(s.CONFIG,(t=>{i.Log(i.GetStackTrace(),s.CONFIG,6);const n=JSON.parse(t);e.onConfig(n)})),e.signallingProtocol.addMessageHandler(s.STREAMER_LIST,(t=>{i.Log(i.GetStackTrace(),s.STREAMER_LIST,6);const n=JSON.parse(t);e.onStreamerList(n)})),e.signallingProtocol.addMessageHandler(s.STREAMER_ID_CHANGED,(t=>{i.Log(i.GetStackTrace(),s.STREAMER_ID_CHANGED,6);const n=JSON.parse(t);e.onStreamerIDChanged(n)})),e.signallingProtocol.addMessageHandler(s.PLAYER_COUNT,(t=>{i.Log(i.GetStackTrace(),s.PLAYER_COUNT,6);const n=JSON.parse(t);i.Log(i.GetStackTrace(),\"Player Count: \"+n.count,6),e.onPlayerCount(n)})),e.signallingProtocol.addMessageHandler(s.ANSWER,(t=>{i.Log(i.GetStackTrace(),s.ANSWER,6);const n=JSON.parse(t);e.onWebRtcAnswer(n)})),e.signallingProtocol.addMessageHandler(s.OFFER,(t=>{i.Log(i.GetStackTrace(),s.OFFER,6);const n=JSON.parse(t);e.onWebRtcOffer(n)})),e.signallingProtocol.addMessageHandler(s.ICE_CANDIDATE,(t=>{i.Log(i.GetStackTrace(),s.ICE_CANDIDATE,6);const n=JSON.parse(t);e.onIceCandidate(n.candidate)})),e.signallingProtocol.addMessageHandler(s.WARNING,(e=>{i.Warning(i.GetStackTrace(),`Warning received: ${e}`)})),e.signallingProtocol.addMessageHandler(s.PEER_DATA_CHANNELS,(t=>{i.Log(i.GetStackTrace(),s.PEER_DATA_CHANNELS,6);const n=JSON.parse(t);e.onWebRtcPeerDataChannels(n)}))}}class f{constructor(){this.WS_OPEN_STATE=1,this.onOpen=new EventTarget,this.onClose=new EventTarget,this.signallingProtocol=new C,C.setupDefaultHandlers(this)}connect(e){i.Log(i.GetStackTrace(),e,6);try{return this.webSocket=new WebSocket(e),this.webSocket.onopen=e=>this.handleOnOpen(e),this.webSocket.onerror=()=>this.handleOnError(),this.webSocket.onclose=e=>this.handleOnClose(e),this.webSocket.onmessage=e=>this.handleOnMessage(e),this.webSocket.onmessagebinary=e=>this.handleOnMessageBinary(e),!0}catch(e){return i.Error(e,e),!1}}handleOnMessageBinary(e){e&&e.data&&e.data.text().then((e=>{const t=new MessageEvent(\"messageFromBinary\",{data:e});this.handleOnMessage(t)})).catch((e=>{i.Error(i.GetStackTrace(),`Failed to parse binary blob from websocket, reason: ${e}`)}))}handleOnMessage(e){if(e.data&&e.data instanceof Blob)return void this.handleOnMessageBinary(e);const t=JSON.parse(e.data);i.Log(i.GetStackTrace(),\"received => \\n\"+JSON.stringify(JSON.parse(e.data),void 0,4),6),this.signallingProtocol.handleMessage(t.type,e.data)}handleOnOpen(e){i.Log(i.GetStackTrace(),\"Connected to the signalling server via WebSocket\",6),this.onOpen.dispatchEvent(new Event(\"open\"))}handleOnError(){i.Error(i.GetStackTrace(),\"WebSocket error\")}handleOnClose(e){i.Log(i.GetStackTrace(),\"Disconnected to the signalling server via WebSocket: \"+JSON.stringify(e.code)+\" - \"+e.reason),this.onClose.dispatchEvent(new CustomEvent(\"close\",{detail:e}))}requestStreamerList(){const e=new o;this.webSocket.send(e.payload())}sendSubscribe(e){const t=new l(e);this.webSocket.send(t.payload())}sendUnsubscribe(){const e=new d;this.webSocket.send(e.payload())}sendWebRtcOffer(e,t){const s=new h(e,t);this.webSocket.send(s.payload())}sendWebRtcAnswer(e,t){const s=new u(e,t);this.webSocket.send(s.payload())}sendWebRtcDatachannelRequest(){const e=new g;this.webSocket.send(e.payload())}sendSFURecvDataChannelReady(){const e=new m;this.webSocket.send(e.payload())}sendIceCandidate(e){if(i.Log(i.GetStackTrace(),\"Sending Ice Candidate\"),this.webSocket&&this.webSocket.readyState===this.WS_OPEN_STATE){const t=new p(e);this.webSocket.send(t.payload())}}close(){var e;null===(e=this.webSocket)||void 0===e||e.close()}onConfig(e){}onStreamerList(e){}onStreamerIDChanged(e){}onIceCandidate(e){}onWebRtcAnswer(e){}onWebRtcOffer(e){}onWebRtcPeerDataChannels(e){}onPlayerCount(e){}}class T{constructor(e){this.videoElementProvider=e,this.audioElement=document.createElement(\"Audio\"),this.videoElementProvider.setAudioElement(this.audioElement)}handleOnTrack(e){if(i.Log(i.GetStackTrace(),\"handleOnTrack \"+JSON.stringify(e.streams),6),\"probator\"==e.track.id)return;const t=this.videoElementProvider.getVideoElement();if(e.track&&i.Log(i.GetStackTrace(),\"Got track - \"+e.track.kind+\" id=\"+e.track.id+\" readyState=\"+e.track.readyState,6),\"audio\"!=e.track.kind)return\"video\"==e.track.kind&&t.srcObject!==e.streams[0]?(t.srcObject=e.streams[0],void i.Log(i.GetStackTrace(),\"Set video source from video track ontrack.\")):void 0;this.CreateAudioTrack(e.streams[0])}CreateAudioTrack(e){const t=this.videoElementProvider.getVideoElement();t.srcObject!=e&&t.srcObject&&t.srcObject!==e&&(this.audioElement.srcObject=e,i.Log(i.GetStackTrace(),\"Created new audio element to play separate audio stream.\"))}}class E{constructor(e){this.freezeFrameHeight=0,this.freezeFrameWidth=0,this.rootDiv=e,this.rootElement=document.createElement(\"div\"),this.rootElement.id=\"freezeFrame\",this.rootElement.style.display=\"none\",this.rootElement.style.pointerEvents=\"none\",this.rootElement.style.position=\"absolute\",this.rootElement.style.zIndex=\"20\",this.imageElement=document.createElement(\"img\"),this.imageElement.style.position=\"absolute\",this.rootElement.appendChild(this.imageElement),this.rootDiv.appendChild(this.rootElement)}setElementForShow(){this.rootElement.style.display=\"block\"}setElementForHide(){this.rootElement.style.display=\"none\"}updateImageElementSource(e){const t=btoa(e.reduce(((e,t)=>e+String.fromCharCode(t)),\"\"));this.imageElement.src=\"data:image/jpeg;base64,\"+t}setDimensionsFromElementAndResize(){this.freezeFrameHeight=this.imageElement.naturalHeight,this.freezeFrameWidth=this.imageElement.naturalWidth,this.resize()}resize(){if(0!==this.freezeFrameWidth&&0!==this.freezeFrameHeight){let e=0,t=0,s=0,n=0;const r=this.rootDiv.clientWidth/this.rootDiv.clientHeight,i=this.freezeFrameWidth/this.freezeFrameHeight;r<i?(e=this.rootDiv.clientWidth,t=Math.floor(this.rootDiv.clientWidth/i),s=Math.floor(.5*(this.rootDiv.clientHeight-t)),n=0):(e=Math.floor(this.rootDiv.clientHeight*i),t=this.rootDiv.clientHeight,s=0,n=Math.floor(.5*(this.rootDiv.clientWidth-e))),this.rootElement.style.width=this.rootDiv.offsetWidth+\"px\",this.rootElement.style.height=this.rootDiv.offsetHeight+\"px\",this.rootElement.style.left=\"0px\",this.rootElement.style.top=\"0px\",this.imageElement.style.width=e+\"px\",this.imageElement.style.height=t+\"px\",this.imageElement.style.left=n+\"px\",this.imageElement.style.top=s+\"px\"}}}class y{constructor(e){this.receiving=!1,this.size=0,this.jpeg=void 0,this.valid=!1,this.freezeFrameDelay=50,this.freezeFrame=new E(e)}showFreezeFrame(){this.valid&&this.freezeFrame.setElementForShow()}hideFreezeFrame(){this.valid=!1,this.freezeFrame.setElementForHide()}updateFreezeFrameAndShow(e,t){this.freezeFrame.updateImageElementSource(e),this.freezeFrame.imageElement.onload=()=>{this.freezeFrame.setDimensionsFromElementAndResize(),t()}}processFreezeFrameMessage(e,t){this.receiving||(this.receiving=!0,this.valid=!1,this.size=0,this.jpeg=void 0),this.size=new DataView(e.slice(1,5).buffer).getInt32(0,!0);const s=e.slice(5);if(this.jpeg){const e=new Uint8Array(this.jpeg.length+s.length);e.set(this.jpeg,0),e.set(s,this.jpeg.length),this.jpeg=e}else this.jpeg=s,this.receiving=!0,i.Log(i.GetStackTrace(),`received first chunk of freeze frame: ${this.jpeg.length}/${this.size}`,6);this.jpeg.length===this.size?(this.receiving=!1,this.valid=!0,i.Log(i.GetStackTrace(),`received complete freeze frame ${this.size}`,6),this.updateFreezeFrameAndShow(this.jpeg,t)):this.jpeg.length>this.size&&(i.Error(i.GetStackTrace(),`received bigger freeze frame than advertised: ${this.jpeg.length}/${this.size}`),this.jpeg=void 0,this.receiving=!1)}}class M{constructor(e,t,s,n,r=(()=>{})){this.onChange=r,this.onChangeEmit=()=>{},this.id=e,this.description=s,this.label=t,this.value=n}set label(e){this._label=e,this.onChangeEmit(this._value)}get label(){return this._label}get value(){return this._value}set value(e){this._value=e,this.onChange(this._value,this),this.onChangeEmit(this._value)}}class w extends M{constructor(e,t,s,n,r,i=(()=>{})){super(e,t,s,n,i);const a=new URLSearchParams(window.location.search);if(r&&a.has(this.id)){const e=this.getUrlParamFlag();this.flag=e}else this.flag=n;this.useUrlParams=r}getUrlParamFlag(){const e=new URLSearchParams(window.location.search);return!!e.has(this.id)&&\"false\"!==e.get(this.id)&&\"False\"!==e.get(this.id)}updateURLParams(){if(this.useUrlParams){const e=new URLSearchParams(window.location.search);!0===this.flag?e.set(this.id,\"true\"):e.set(this.id,\"false\"),window.history.replaceState({},\"\",\"\"!==e.toString()?`${location.pathname}?${e}`:`${location.pathname}`)}}enable(){this.flag=!0}get flag(){return!!this.value}set flag(e){this.value=e}}class b extends M{constructor(e,t,s,n,r,i,a,o=(()=>{})){super(e,t,s,i,o),this._min=n,this._max=r;const l=new URLSearchParams(window.location.search);if(a&&l.has(this.id)){const e=Number.parseFloat(l.get(this.id));this.number=Number.isNaN(e)?i:e}else this.number=i;this.useUrlParams=a}updateURLParams(){if(this.useUrlParams){const e=new URLSearchParams(window.location.search);e.set(this.id,this.number.toString()),window.history.replaceState({},\"\",\"\"!==e.toString()?`${location.pathname}?${e}`:`${location.pathname}`)}}set number(e){this.value=this.clamp(e)}get number(){return this.value}clamp(e){return null==this._min&&null==this._max?e:null==this._min?Math.min(this._max,e):null==this._max?Math.max(this._min,e):Math.max(Math.min(this._max,e),this._min)}get min(){return this._min}get max(){return this._max}addOnChangedListener(e){this.onChange=e}}class R extends M{constructor(e,t,s,n,r,i=(()=>{})){super(e,t,s,n,i);const a=new URLSearchParams(window.location.search);if(r&&a.has(this.id)){const e=this.getUrlParamText();this.text=e}else this.text=n;this.useUrlParams=r}getUrlParamText(){var e;const t=new URLSearchParams(window.location.search);return t.has(this.id)&&null!==(e=t.get(this.id))&&void 0!==e?e:\"\"}updateURLParams(){if(this.useUrlParams){const e=new URLSearchParams(window.location.search);e.set(this.id,this.text),window.history.replaceState({},\"\",\"\"!==e.toString()?`${location.pathname}?${e}`:`${location.pathname}`)}}get text(){return this.value}set text(e){this.value=e}}class P extends M{constructor(e,t,s,n,r,i,a=(()=>{})){super(e,t,s,n,a),this.options=r;const o=new URLSearchParams(window.location.search),l=i&&o.has(this.id)?this.getUrlParamText():n;this.selected=l,this.useUrlParams=i}getUrlParamText(){var e;const t=new URLSearchParams(window.location.search);return t.has(this.id)&&null!==(e=t.get(this.id))&&void 0!==e?e:\"\"}updateURLParams(){if(this.useUrlParams){const e=new URLSearchParams(window.location.search);e.set(this.id,this.selected),window.history.replaceState({},\"\",\"\"!==e.toString()?`${location.pathname}?${e}`:`${location.pathname}`)}}addOnChangedListener(e){this.onChange=e}get options(){return this._options}set options(e){this._options=e,this.onChangeEmit(this.selected)}get selected(){return this.value}set selected(e){let t=this.options.filter((t=>-1!==t.indexOf(e)));t.length?this.value=t[0]:(t=this.options.filter((t=>-1!==t.indexOf(e.split(\" \")[0]))),t.length&&(this.value=t[0]))}}class k extends Event{constructor(e){super(\"afkWarningActivate\"),this.data=e}}class L extends Event{constructor(e){super(\"afkWarningUpdate\"),this.data=e}}class x extends Event{constructor(){super(\"afkWarningDeactivate\")}}class A extends Event{constructor(){super(\"afkTimedOut\")}}class F extends Event{constructor(e){super(\"videoEncoderAvgQP\"),this.data=e}}class D extends Event{constructor(){super(\"webRtcSdp\")}}class O extends Event{constructor(){super(\"webRtcAutoConnect\")}}class I extends Event{constructor(){super(\"webRtcConnecting\")}}class U extends Event{constructor(){super(\"webRtcConnected\")}}class G extends Event{constructor(){super(\"webRtcFailed\")}}class B extends Event{constructor(e){super(\"webRtcDisconnected\"),this.data=e}}class z extends Event{constructor(e){super(\"dataChannelOpen\"),this.data=e}}class _ extends Event{constructor(e){super(\"dataChannelClose\"),this.data=e}}class V extends Event{constructor(e){super(\"dataChannelError\"),this.data=e}}class H extends Event{constructor(){super(\"videoInitialized\")}}class W extends Event{constructor(){super(\"streamLoading\")}}class N extends Event{constructor(){super(\"streamConnect\")}}class K extends Event{constructor(){super(\"streamDisconnect\")}}class Q extends Event{constructor(){super(\"streamReconnect\")}}class q extends Event{constructor(e){super(\"playStreamError\"),this.data=e}}class $ extends Event{constructor(){super(\"playStream\")}}class X extends Event{constructor(e){super(\"playStreamRejected\"),this.data=e}}class j extends Event{constructor(e){super(\"loadFreezeFrame\"),this.data=e}}class J extends Event{constructor(){super(\"hideFreezeFrame\")}}class Y extends Event{constructor(e){super(\"statsReceived\"),this.data=e}}class Z extends Event{constructor(e){super(\"streamerListMessage\"),this.data=e}}class ee extends Event{constructor(e){super(\"StreamerIDChangedMessage\"),this.data=e}}class te extends Event{constructor(e){super(\"latencyTestResult\"),this.data=e}}class se extends Event{constructor(e){super(\"dataChannelLatencyTestResponse\"),this.data=e}}class ne extends Event{constructor(e){super(\"dataChannelLatencyTestResult\"),this.data=e}}class re extends Event{constructor(e){super(\"initialSettings\"),this.data=e}}class ie extends Event{constructor(e){super(\"settingsChanged\"),this.data=e}}class ae extends Event{constructor(){super(\"xrSessionStarted\")}}class oe extends Event{constructor(){super(\"xrSessionEnded\")}}class le extends Event{constructor(e){super(\"xrFrame\"),this.data=e}}class de extends Event{constructor(e){super(\"playerCount\"),this.data=e}}class ce extends Event{constructor(){super(\"webRtcTCPRelayDetected\")}}class he extends EventTarget{dispatchEvent(e){return super.dispatchEvent(e)}addEventListener(e,t){super.addEventListener(e,t)}removeEventListener(e,t){super.removeEventListener(e,t)}}class ue{}ue.AutoConnect=\"AutoConnect\",ue.AutoPlayVideo=\"AutoPlayVideo\",ue.AFKDetection=\"TimeoutIfIdle\",ue.BrowserSendOffer=\"OfferToReceive\",ue.HoveringMouseMode=\"HoveringMouse\",ue.ForceMonoAudio=\"ForceMonoAudio\",ue.ForceTURN=\"ForceTURN\",ue.FakeMouseWithTouches=\"FakeMouseWithTouches\",ue.IsQualityController=\"ControlsQuality\",ue.MatchViewportResolution=\"MatchViewportRes\",ue.StartVideoMuted=\"StartVideoMuted\",ue.SuppressBrowserKeys=\"SuppressBrowserKeys\",ue.UseMic=\"UseMic\",ue.KeyboardInput=\"KeyboardInput\",ue.MouseInput=\"MouseInput\",ue.TouchInput=\"TouchInput\",ue.GamepadInput=\"GamepadInput\",ue.XRControllerInput=\"XRControllerInput\",ue.WaitForStreamer=\"WaitForStreamer\",ue.HideUI=\"HideUI\";const ge=e=>Object.getOwnPropertyNames(ue).some((t=>ue[t]===e));class me{}me.AFKTimeoutSecs=\"AFKTimeout\",me.AFKCountdownSecs=\"AFKCountdown\",me.MinQP=\"MinQP\",me.MaxQP=\"MaxQP\",me.WebRTCFPS=\"WebRTCFPS\",me.WebRTCMinBitrate=\"WebRTCMinBitrate\",me.WebRTCMaxBitrate=\"WebRTCMaxBitrate\",me.MaxReconnectAttempts=\"MaxReconnectAttempts\",me.StreamerAutoJoinInterval=\"StreamerAutoJoinInterval\";const pe=e=>Object.getOwnPropertyNames(me).some((t=>me[t]===e));class Se{}Se.SignallingServerUrl=\"ss\";const ve=e=>Object.getOwnPropertyNames(Se).some((t=>Se[t]===e));class Ce{}Ce.PreferredCodec=\"PreferredCodec\",Ce.StreamerId=\"StreamerId\";const fe=e=>Object.getOwnPropertyNames(Ce).some((t=>Ce[t]===e));class Te{constructor(e={}){this.flags=new Map,this.numericParameters=new Map,this.textParameters=new Map,this.optionParameters=new Map;const{initialSettings:t,useUrlParams:s}=e;this._useUrlParams=!!s,this.populateDefaultSettings(this._useUrlParams,t)}get useUrlParams(){return this._useUrlParams}populateDefaultSettings(e,t){this.textParameters.set(Se.SignallingServerUrl,new R(Se.SignallingServerUrl,\"Signalling url\",\"Url of the signalling server\",t&&t.hasOwnProperty(Se.SignallingServerUrl)?t[Se.SignallingServerUrl]:(\"https:\"===location.protocol?\"wss://\":\"ws://\")+window.location.hostname+(\"80\"===window.location.port||\"\"===window.location.port?\"\":`:${window.location.port}`),e)),this.optionParameters.set(Ce.StreamerId,new P(Ce.StreamerId,\"Streamer ID\",\"The ID of the streamer to stream.\",t&&t.hasOwnProperty(Ce.StreamerId)?t[Ce.StreamerId]:\"\",[],e)),this.optionParameters.set(Ce.PreferredCodec,new P(Ce.PreferredCodec,\"Preferred Codec\",\"The preferred codec to be used during codec negotiation\",\"H264 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\",t&&t.hasOwnProperty(Ce.PreferredCodec)?[t[Ce.PreferredCodec]]:function(){const e=[];if(!RTCRtpReceiver.getCapabilities)return e.push(\"Only available on Chrome\"),e;const t=/(VP\\d|H26\\d|AV1).*/;return RTCRtpReceiver.getCapabilities(\"video\").codecs.forEach((s=>{const n=s.mimeType.split(\"/\")[1]+\" \"+(s.sdpFmtpLine||\"\");null!==t.exec(n)&&e.push(n)})),e}(),e)),this.flags.set(ue.AutoConnect,new w(ue.AutoConnect,\"Auto connect to stream\",\"Whether we should attempt to auto connect to the signalling server or show a click to start prompt.\",!(!t||!t.hasOwnProperty(ue.AutoConnect))&&t[ue.AutoConnect],e)),this.flags.set(ue.AutoPlayVideo,new w(ue.AutoPlayVideo,\"Auto play video\",\"When video is ready automatically start playing it as opposed to showing a play button.\",!t||!t.hasOwnProperty(ue.AutoPlayVideo)||t[ue.AutoPlayVideo],e)),this.flags.set(ue.BrowserSendOffer,new w(ue.BrowserSendOffer,\"Browser send offer\",\"Browser will initiate the WebRTC handshake by sending the offer to the streamer\",!(!t||!t.hasOwnProperty(ue.BrowserSendOffer))&&t[ue.BrowserSendOffer],e)),this.flags.set(ue.UseMic,new w(ue.UseMic,\"Use microphone\",\"Make browser request microphone access and open an input audio track.\",!(!t||!t.hasOwnProperty(ue.UseMic))&&t[ue.UseMic],e)),this.flags.set(ue.StartVideoMuted,new w(ue.StartVideoMuted,\"Start video muted\",\"Video will start muted if true.\",!(!t||!t.hasOwnProperty(ue.StartVideoMuted))&&t[ue.StartVideoMuted],e)),this.flags.set(ue.SuppressBrowserKeys,new w(ue.SuppressBrowserKeys,\"Suppress browser keys\",\"Suppress certain browser keys that we use in UE, for example F5 to show shader complexity instead of refresh the page.\",!t||!t.hasOwnProperty(ue.SuppressBrowserKeys)||t[ue.SuppressBrowserKeys],e)),this.flags.set(ue.IsQualityController,new w(ue.IsQualityController,\"Is quality controller?\",\"True if this peer controls stream quality\",!t||!t.hasOwnProperty(ue.IsQualityController)||t[ue.IsQualityController],e)),this.flags.set(ue.ForceMonoAudio,new w(ue.ForceMonoAudio,\"Force mono audio\",\"Force browser to request mono audio in the SDP\",!(!t||!t.hasOwnProperty(ue.ForceMonoAudio))&&t[ue.ForceMonoAudio],e)),this.flags.set(ue.ForceTURN,new w(ue.ForceTURN,\"Force TURN\",\"Only generate TURN/Relayed ICE candidates.\",!(!t||!t.hasOwnProperty(ue.ForceTURN))&&t[ue.ForceTURN],e)),this.flags.set(ue.AFKDetection,new w(ue.AFKDetection,\"AFK if idle\",\"Timeout the experience if user is AFK for a period.\",!(!t||!t.hasOwnProperty(ue.AFKDetection))&&t[ue.AFKDetection],e)),this.flags.set(ue.MatchViewportResolution,new w(ue.MatchViewportResolution,\"Match viewport resolution\",\"Pixel Streaming will be instructed to dynamically resize the video stream to match the size of the video element.\",!(!t||!t.hasOwnProperty(ue.MatchViewportResolution))&&t[ue.MatchViewportResolution],e)),this.flags.set(ue.HoveringMouseMode,new w(ue.HoveringMouseMode,\"Control Scheme: Locked Mouse\",\"Either locked mouse, where the pointer is consumed by the video and locked to it, or hovering mouse, where the mouse is not consumed.\",!(!t||!t.hasOwnProperty(ue.HoveringMouseMode))&&t[ue.HoveringMouseMode],e,((e,t)=>{t.label=`Control Scheme: ${e?\"Hovering\":\"Locked\"} Mouse`}))),this.flags.set(ue.FakeMouseWithTouches,new w(ue.FakeMouseWithTouches,\"Fake mouse with touches\",\"A single finger touch is converted into a mouse event. This allows a non-touch application to be controlled partially via a touch device.\",!(!t||!t.hasOwnProperty(ue.FakeMouseWithTouches))&&t[ue.FakeMouseWithTouches],e)),this.flags.set(ue.KeyboardInput,new w(ue.KeyboardInput,\"Keyboard input\",\"If enabled, send keyboard events to streamer\",!t||!t.hasOwnProperty(ue.KeyboardInput)||t[ue.KeyboardInput],e)),this.flags.set(ue.MouseInput,new w(ue.MouseInput,\"Mouse input\",\"If enabled, send mouse events to streamer\",!t||!t.hasOwnProperty(ue.MouseInput)||t[ue.MouseInput],e)),this.flags.set(ue.TouchInput,new w(ue.TouchInput,\"Touch input\",\"If enabled, send touch events to streamer\",!t||!t.hasOwnProperty(ue.TouchInput)||t[ue.TouchInput],e)),this.flags.set(ue.GamepadInput,new w(ue.GamepadInput,\"Gamepad input\",\"If enabled, send gamepad events to streamer\",!t||!t.hasOwnProperty(ue.GamepadInput)||t[ue.GamepadInput],e)),this.flags.set(ue.XRControllerInput,new w(ue.XRControllerInput,\"XR controller input\",\"If enabled, send XR controller events to streamer\",!t||!t.hasOwnProperty(ue.XRControllerInput)||t[ue.XRControllerInput],e)),this.flags.set(ue.WaitForStreamer,new w(ue.WaitForStreamer,\"Wait for streamer\",\"Will continue trying to connect to the first streamer available.\",!t||!t.hasOwnProperty(ue.WaitForStreamer)||t[ue.WaitForStreamer],e)),this.flags.set(ue.HideUI,new w(ue.HideUI,\"Hide the UI overlay\",\"Will hide all UI overlay details\",!(!t||!t.hasOwnProperty(ue.HideUI))&&t[ue.HideUI],e)),this.numericParameters.set(me.AFKTimeoutSecs,new b(me.AFKTimeoutSecs,\"AFK timeout\",\"The time (in seconds) it takes for the application to time out if AFK timeout is enabled.\",0,null,t&&t.hasOwnProperty(me.AFKTimeoutSecs)?t[me.AFKTimeoutSecs]:120,e)),this.numericParameters.set(me.AFKCountdownSecs,new b(me.AFKCountdownSecs,\"AFK countdown\",\"The time (in seconds) for a user to respond before the stream is ended after an AFK timeout.\",10,null,10,e)),this.numericParameters.set(me.MaxReconnectAttempts,new b(me.MaxReconnectAttempts,\"Max Reconnects\",\"Maximum number of reconnects the application will attempt when a streamer disconnects.\",0,999,t&&t.hasOwnProperty(me.MaxReconnectAttempts)?t[me.MaxReconnectAttempts]:3,e)),this.numericParameters.set(me.MinQP,new b(me.MinQP,\"Min QP\",\"The lower bound for the quantization parameter (QP) of the encoder. 0 = Best quality, 51 = worst quality.\",0,51,t&&t.hasOwnProperty(me.MinQP)?t[me.MinQP]:0,e)),this.numericParameters.set(me.MaxQP,new b(me.MaxQP,\"Max QP\",\"The upper bound for the quantization parameter (QP) of the encoder. 0 = Best quality, 51 = worst quality.\",0,51,t&&t.hasOwnProperty(me.MaxQP)?t[me.MaxQP]:51,e)),this.numericParameters.set(me.WebRTCFPS,new b(me.WebRTCFPS,\"Max FPS\",\"The maximum FPS that WebRTC will try to transmit frames at.\",1,999,t&&t.hasOwnProperty(me.WebRTCFPS)?t[me.WebRTCFPS]:60,e)),this.numericParameters.set(me.WebRTCMinBitrate,new b(me.WebRTCMinBitrate,\"Min Bitrate (kbps)\",\"The minimum bitrate that WebRTC should use.\",0,5e5,t&&t.hasOwnProperty(me.WebRTCMinBitrate)?t[me.WebRTCMinBitrate]:0,e)),this.numericParameters.set(me.WebRTCMaxBitrate,new b(me.WebRTCMaxBitrate,\"Max Bitrate (kbps)\",\"The maximum bitrate that WebRTC should use.\",0,5e5,t&&t.hasOwnProperty(me.WebRTCMaxBitrate)?t[me.WebRTCMaxBitrate]:0,e)),this.numericParameters.set(me.StreamerAutoJoinInterval,new b(me.StreamerAutoJoinInterval,\"Streamer Auto Join Interval (ms)\",\"Delay between retries when waiting for an available streamer.\",500,9e5,t&&t.hasOwnProperty(me.StreamerAutoJoinInterval)?t[me.StreamerAutoJoinInterval]:3e3,e))}_addOnNumericSettingChangedListener(e,t){this.numericParameters.has(e)&&this.numericParameters.get(e).addOnChangedListener(t)}_addOnOptionSettingChangedListener(e,t){this.optionParameters.has(e)&&this.optionParameters.get(e).addOnChangedListener(t)}getNumericSettingValue(e){if(this.numericParameters.has(e))return this.numericParameters.get(e).number;throw new Error(`There is no numeric setting with the id of ${e}`)}getTextSettingValue(e){if(this.textParameters.has(e))return this.textParameters.get(e).value;throw new Error(`There is no numeric setting with the id of ${e}`)}setNumericSetting(e,t){if(!this.numericParameters.has(e))throw new Error(`There is no numeric setting with the id of ${e}`);this.numericParameters.get(e).number=t}_addOnSettingChangedListener(e,t){this.flags.has(e)&&(this.flags.get(e).onChange=t)}_addOnTextSettingChangedListener(e,t){this.textParameters.has(e)&&(this.textParameters.get(e).onChange=t)}getSettingOption(e){return this.optionParameters.get(e)}isFlagEnabled(e){return this.flags.get(e).flag}setFlagEnabled(e,t){this.flags.has(e)?this.flags.get(e).flag=t:i.Warning(i.GetStackTrace(),`Cannot toggle flag called ${e} - it does not exist in the Config.flags map.`)}setTextSetting(e,t){this.textParameters.has(e)?this.textParameters.get(e).text=t:i.Warning(i.GetStackTrace(),`Cannot set text setting called ${e} - it does not exist in the Config.textParameters map.`)}setOptionSettingOptions(e,t){this.optionParameters.has(e)?this.optionParameters.get(e).options=t:i.Warning(i.GetStackTrace(),`Cannot set text setting called ${e} - it does not exist in the Config.optionParameters map.`)}setOptionSettingValue(e,t){if(this.optionParameters.has(e)){const s=this.optionParameters.get(e),n=s.options;n.includes(t)||(n.push(t),s.options=n),s.selected=t}else i.Warning(i.GetStackTrace(),`Cannot set text setting called ${e} - it does not exist in the Config.enumParameters map.`)}setFlagLabel(e,t){this.flags.has(e)?this.flags.get(e).label=t:i.Warning(i.GetStackTrace(),`Cannot set label for flag called ${e} - it does not exist in the Config.flags map.`)}setSettings(e){for(const t of Object.keys(e))ge(t)?this.setFlagEnabled(t,e[t]):pe(t)?this.setNumericSetting(t,e[t]):ve(t)?this.setTextSetting(t,e[t]):fe(t)&&this.setOptionSettingValue(t,e[t])}getSettings(){const e={};for(const[t,s]of this.flags.entries())e[t]=s.flag;for(const[t,s]of this.numericParameters.entries())e[t]=s.number;for(const[t,s]of this.textParameters.entries())e[t]=s.text;for(const[t,s]of this.optionParameters.entries())e[t]=s.selected;return e}getFlags(){return Array.from(this.flags.values())}getTextSettings(){return Array.from(this.textParameters.values())}getNumericSettings(){return Array.from(this.numericParameters.values())}getOptionSettings(){return Array.from(this.optionParameters.values())}_registerOnChangeEvents(e){for(const t of this.flags.keys()){const s=this.flags.get(t);s&&(s.onChangeEmit=t=>e.dispatchEvent(new ie({id:s.id,type:\"flag\",value:t,target:s})))}for(const t of this.numericParameters.keys()){const s=this.numericParameters.get(t);s&&(s.onChangeEmit=t=>e.dispatchEvent(new ie({id:s.id,type:\"number\",value:t,target:s})))}for(const t of this.textParameters.keys()){const s=this.textParameters.get(t);s&&(s.onChangeEmit=t=>e.dispatchEvent(new ie({id:s.id,type:\"text\",value:t,target:s})))}for(const t of this.optionParameters.keys()){const s=this.optionParameters.get(t);s&&(s.onChangeEmit=t=>e.dispatchEvent(new ie({id:s.id,type:\"option\",value:t,target:s})))}}}var Ee;!function(e){e[e.LockedMouse=0]=\"LockedMouse\",e[e.HoveringMouse=1]=\"HoveringMouse\"}(Ee||(Ee={}));class ye{constructor(e,t,s){this.active=!1,this.countdownActive=!1,this.warnTimer=void 0,this.countDown=0,this.countDownTimer=void 0,this.config=e,this.pixelStreaming=t,this.onDismissAfk=s,this.onAFKTimedOutCallback=()=>{console.log(\"AFK timed out, did you want to override this callback?\")}}onAfkClick(){clearInterval(this.countDownTimer),(this.active||this.countdownActive)&&(this.startAfkWarningTimer(),this.pixelStreaming.dispatchEvent(new x))}startAfkWarningTimer(){this.config.getNumericSettingValue(me.AFKTimeoutSecs)>0&&this.config.isFlagEnabled(ue.AFKDetection)?this.active=!0:this.active=!1,this.resetAfkWarningTimer()}stopAfkWarningTimer(){this.active=!1,this.countdownActive=!1,clearTimeout(this.warnTimer),clearInterval(this.countDownTimer)}pauseAfkWarningTimer(){this.active=!1}resetAfkWarningTimer(){this.active&&this.config.isFlagEnabled(ue.AFKDetection)&&(clearTimeout(this.warnTimer),this.warnTimer=setTimeout((()=>this.activateAfkEvent()),1e3*this.config.getNumericSettingValue(me.AFKTimeoutSecs)))}activateAfkEvent(){this.pauseAfkWarningTimer(),this.pixelStreaming.dispatchEvent(new k({countDown:this.countDown,dismissAfk:this.onDismissAfk})),this.countDown=this.config.getNumericSettingValue(me.AFKCountdownSecs),this.countdownActive=!0,this.pixelStreaming.dispatchEvent(new L({countDown:this.countDown})),this.config.isFlagEnabled(ue.HoveringMouseMode)||document.exitPointerLock&&document.exitPointerLock(),this.countDownTimer=setInterval((()=>{this.countDown--,0==this.countDown?(this.pixelStreaming.dispatchEvent(new A),this.onAFKTimedOutCallback(),i.Log(i.GetStackTrace(),\"You have been disconnected due to inactivity\"),this.stopAfkWarningTimer()):this.pixelStreaming.dispatchEvent(new L({countDown:this.countDown}))}),1e3)}}class Me{constructor(){this.isReceivingFreezeFrame=!1}getDataChannelInstance(){return this}createDataChannel(e,t,s){this.peerConnection=e,this.label=t,this.datachannelOptions=s,null==s&&(this.datachannelOptions={},this.datachannelOptions.ordered=!0),this.dataChannel=this.peerConnection.createDataChannel(this.label,this.datachannelOptions),this.setupDataChannel()}setupDataChannel(){this.dataChannel.binaryType=\"arraybuffer\",this.dataChannel.onopen=e=>this.handleOnOpen(e),this.dataChannel.onclose=e=>this.handleOnClose(e),this.dataChannel.onmessage=e=>this.handleOnMessage(e),this.dataChannel.onerror=e=>this.handleOnError(e)}handleOnOpen(e){var t;i.Log(i.GetStackTrace(),`Data Channel (${this.label}) opened.`,7),this.onOpen(null===(t=this.dataChannel)||void 0===t?void 0:t.label,e)}handleOnClose(e){var t;i.Log(i.GetStackTrace(),`Data Channel (${this.label}) closed.`,7),this.onClose(null===(t=this.dataChannel)||void 0===t?void 0:t.label,e)}handleOnMessage(e){i.Log(i.GetStackTrace(),`Data Channel (${this.label}) message: ${e}`,8)}handleOnError(e){var t;i.Log(i.GetStackTrace(),`Data Channel (${this.label}) error: ${e}`,7),this.onError(null===(t=this.dataChannel)||void 0===t?void 0:t.label,e)}onOpen(e,t){}onClose(e,t){}onError(e,t){}}class we{}class be{}class Re{}class Pe{}class ke{}class Le{}class xe{}class Ae{constructor(){this.inboundVideoStats=new be,this.inboundAudioStats=new we,this.DataChannelStats=new Re,this.outBoundVideoStats=new ke,this.sessionStats=new Le,this.streamStats=new xe,this.codecs=new Map}processStats(e){this.localCandidates=new Array,this.remoteCandidates=new Array,this.candidatePairs=new Array,e.forEach((e=>{switch(e.type){case\"candidate-pair\":this.handleCandidatePair(e);break;case\"certificate\":case\"media-source\":case\"media-playout\":case\"outbound-rtp\":case\"peer-connection\":case\"remote-inbound-rtp\":break;case\"codec\":this.handleCodec(e);break;case\"data-channel\":this.handleDataChannel(e);break;case\"inbound-rtp\":this.handleInBoundRTP(e);break;case\"local-candidate\":this.handleLocalCandidate(e);break;case\"remote-candidate\":this.handleRemoteCandidate(e);break;case\"remote-outbound-rtp\":this.handleRemoteOutBound(e);break;case\"track\":this.handleTrack(e);break;case\"transport\":this.handleTransport(e);break;case\"stream\":this.handleStream(e);break;default:i.Error(i.GetStackTrace(),\"unhandled Stat Type\"),i.Log(i.GetStackTrace(),e)}}))}handleStream(e){this.streamStats=e}handleCandidatePair(e){this.candidatePairs.push(e)}handleDataChannel(e){this.DataChannelStats.bytesReceived=e.bytesReceived,this.DataChannelStats.bytesSent=e.bytesSent,this.DataChannelStats.dataChannelIdentifier=e.dataChannelIdentifier,this.DataChannelStats.id=e.id,this.DataChannelStats.label=e.label,this.DataChannelStats.messagesReceived=e.messagesReceived,this.DataChannelStats.messagesSent=e.messagesSent,this.DataChannelStats.protocol=e.protocol,this.DataChannelStats.state=e.state,this.DataChannelStats.timestamp=e.timestamp}handleLocalCandidate(e){const t=new Pe;t.label=\"local-candidate\",t.address=e.address,t.port=e.port,t.protocol=e.protocol,t.candidateType=e.candidateType,t.id=e.id,t.relayProtocol=e.relayProtocol,t.transportId=e.transportId,this.localCandidates.push(t)}handleRemoteCandidate(e){const t=new Pe;t.label=\"remote-candidate\",t.address=e.address,t.port=e.port,t.protocol=e.protocol,t.id=e.id,t.candidateType=e.candidateType,t.relayProtocol=e.relayProtocol,t.transportId=e.transportId,this.remoteCandidates.push(t)}handleInBoundRTP(e){switch(e.kind){case\"video\":this.inboundVideoStats=e,null!=this.lastVideoStats&&(this.inboundVideoStats.bitrate=8*(this.inboundVideoStats.bytesReceived-this.lastVideoStats.bytesReceived)/(this.inboundVideoStats.timestamp-this.lastVideoStats.timestamp),this.inboundVideoStats.bitrate=Math.floor(this.inboundVideoStats.bitrate)),this.lastVideoStats=Object.assign({},this.inboundVideoStats);break;case\"audio\":this.inboundAudioStats=e,null!=this.lastAudioStats&&(this.inboundAudioStats.bitrate=8*(this.inboundAudioStats.bytesReceived-this.lastAudioStats.bytesReceived)/(this.inboundAudioStats.timestamp-this.lastAudioStats.timestamp),this.inboundAudioStats.bitrate=Math.floor(this.inboundAudioStats.bitrate)),this.lastAudioStats=Object.assign({},this.inboundAudioStats);break;default:i.Log(i.GetStackTrace(),\"Kind is not handled\")}}handleRemoteOutBound(e){\"video\"===e.kind&&(this.outBoundVideoStats.bytesSent=e.bytesSent,this.outBoundVideoStats.id=e.id,this.outBoundVideoStats.localId=e.localId,this.outBoundVideoStats.packetsSent=e.packetsSent,this.outBoundVideoStats.remoteTimestamp=e.remoteTimestamp,this.outBoundVideoStats.timestamp=e.timestamp)}handleTrack(e){\"track\"!==e.type||\"video_label\"!==e.trackIdentifier&&\"video\"!==e.kind||(this.inboundVideoStats.framesDropped=e.framesDropped,this.inboundVideoStats.framesReceived=e.framesReceived,this.inboundVideoStats.frameHeight=e.frameHeight,this.inboundVideoStats.frameWidth=e.frameWidth)}handleTransport(e){this.transportStats=e}handleCodec(e){const t=e.id,s=`${e.mimeType.replace(\"video/\",\"\").replace(\"audio/\",\"\")}${e.sdpFmtpLine?` ${e.sdpFmtpLine}`:\"\"}`;this.codecs.set(t,s)}handleSessionStatistics(e,t,s){const n=Date.now()-e;this.sessionStats.runTime=new Date(n).toISOString().substr(11,8).toString();const r=null===t?\"Not sent yet\":t?\"true\":\"false\";this.sessionStats.controlsStreamInput=r,this.sessionStats.videoEncoderAvgQP=s}isNumber(e){return\"number\"==typeof e&&isFinite(e)}getActiveCandidatePair(){return this.transportStats?this.candidatePairs.find((e=>e.id===this.transportStats.selectedCandidatePairId),null):this.candidatePairs.find((e=>e.selected),null)}}const Fe=(De={parseRtpParameters:()=>e.parseRtpParameters,splitSections:()=>e.splitSections},Oe={},n.d(Oe,De),Oe);var De,Oe;class Ie{static isVideoTransciever(e){return this.canTransceiverReceiveVideo(e)||this.canTransceiverSendVideo(e)}static canTransceiverReceiveVideo(e){return!!e&&(\"sendrecv\"===e.direction||\"recvonly\"===e.direction)&&e.receiver&&e.receiver.track&&\"video\"===e.receiver.track.kind}static canTransceiverSendVideo(e){return!!e&&(\"sendrecv\"===e.direction||\"sendonly\"===e.direction)&&e.sender&&e.sender.track&&\"video\"===e.sender.track.kind}static isAudioTransciever(e){return this.canTransceiverReceiveAudio(e)||this.canTransceiverSendAudio(e)}static canTransceiverReceiveAudio(e){return!!e&&(\"sendrecv\"===e.direction||\"recvonly\"===e.direction)&&e.receiver&&e.receiver.track&&\"audio\"===e.receiver.track.kind}static canTransceiverSendAudio(e){return!!e&&(\"sendrecv\"===e.direction||\"sendonly\"===e.direction)&&e.sender&&e.sender.track&&\"audio\"===e.sender.track.kind}}var Ue,Ge,Be=function(e,t,s,n){return new(s||(s=Promise))((function(r,i){function a(e){try{l(n.next(e))}catch(e){i(e)}}function o(e){try{l(n.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(a,o)}l((n=n.apply(e,t||[])).next())}))};class ze{constructor(e,t,s){this.config=t,this.createPeerConnection(e,s)}createPeerConnection(e,t){this.config.isFlagEnabled(ue.ForceTURN)&&(e.iceTransportPolicy=\"relay\",i.Log(i.GetStackTrace(),\"Forcing TURN usage by setting ICE Transport Policy in peer connection config.\")),this.peerConnection=new RTCPeerConnection(e),this.peerConnection.onsignalingstatechange=e=>this.handleSignalStateChange(e),this.peerConnection.oniceconnectionstatechange=e=>this.handleIceConnectionStateChange(e),this.peerConnection.onicegatheringstatechange=e=>this.handleIceGatheringStateChange(e),this.peerConnection.ontrack=e=>this.handleOnTrack(e),this.peerConnection.onicecandidate=e=>this.handleIceCandidate(e),this.peerConnection.ondatachannel=e=>this.handleDataChannel(e),this.aggregatedStats=new Ae,this.preferredCodec=t,this.updateCodecSelection=!0}createOffer(e,t){return Be(this,void 0,void 0,(function*(){i.Log(i.GetStackTrace(),\"Create Offer\",6);const s=\"localhost\"===location.hostname||\"127.0.0.1\"===location.hostname,n=\"https:\"===location.protocol;let r=t.isFlagEnabled(ue.UseMic);!r||s||n||(r=!1,i.Error(i.GetStackTrace(),\"Microphone access in the browser will not work if you are not on HTTPS or localhost. Disabling mic access.\"),i.Error(i.GetStackTrace(),\"For testing you can enable HTTP microphone access Chrome by visiting chrome://flags/ and enabling 'unsafely-treat-insecure-origin-as-secure'\")),this.setupTransceiversAsync(r).finally((()=>{var t;null===(t=this.peerConnection)||void 0===t||t.createOffer(e).then((e=>{var t;this.showTextOverlayConnecting(),e.sdp=this.mungeSDP(e.sdp,r),null===(t=this.peerConnection)||void 0===t||t.setLocalDescription(e),this.onSendWebRTCOffer(e)})).catch((()=>{this.showTextOverlaySetupFailure()}))}))}))}receiveOffer(e,t){var s;return Be(this,void 0,void 0,(function*(){i.Log(i.GetStackTrace(),\"Receive Offer\",6),null===(s=this.peerConnection)||void 0===s||s.setRemoteDescription(e).then((()=>{const s=\"localhost\"===location.hostname||\"127.0.0.1\"===location.hostname,n=\"https:\"===location.protocol;let r=t.isFlagEnabled(ue.UseMic);!r||s||n||(r=!1,i.Error(i.GetStackTrace(),\"Microphone access in the browser will not work if you are not on HTTPS or localhost. Disabling mic access.\"),i.Error(i.GetStackTrace(),\"For testing you can enable HTTP microphone access Chrome by visiting chrome://flags/ and enabling 'unsafely-treat-insecure-origin-as-secure'\")),this.config.setOptionSettingOptions(Ce.PreferredCodec,this.fuzzyIntersectUEAndBrowserCodecs(e)),this.setupTransceiversAsync(r).finally((()=>{var e;null===(e=this.peerConnection)||void 0===e||e.createAnswer().then((e=>{var t;return e.sdp=this.mungeSDP(e.sdp,r),null===(t=this.peerConnection)||void 0===t?void 0:t.setLocalDescription(e)})).then((()=>{var e;this.onSendWebRTCAnswer(null===(e=this.peerConnection)||void 0===e?void 0:e.currentLocalDescription)})).catch((()=>{i.Error(i.GetStackTrace(),\"createAnswer() failed\")}))}))}))}))}receiveAnswer(e){var t;null===(t=this.peerConnection)||void 0===t||t.setRemoteDescription(e),this.config.setOptionSettingOptions(Ce.PreferredCodec,this.fuzzyIntersectUEAndBrowserCodecs(e))}generateStats(){var e;null===(e=this.peerConnection)||void 0===e||e.getStats(null).then((e=>{this.aggregatedStats.processStats(e),this.onVideoStats(this.aggregatedStats),this.updateCodecSelection&&this.aggregatedStats.inboundVideoStats.codecId&&this.config.setOptionSettingValue(Ce.PreferredCodec,this.aggregatedStats.codecs.get(this.aggregatedStats.inboundVideoStats.codecId))}))}close(){this.peerConnection&&(this.peerConnection.close(),this.peerConnection=null)}mungeSDP(e,t){let s=e.replace(/(a=fmtp:\\d+ .*level-asymmetry-allowed=.*)\\r\\n/gm,\"$1;x-google-start-bitrate=10000;x-google-max-bitrate=100000\\r\\n\"),n=\"maxaveragebitrate=510000;\";return t&&(n+=\"sprop-maxcapturerate=48000;\"),n+=this.config.isFlagEnabled(ue.ForceMonoAudio)?\"stereo=0;\":\"stereo=1;\",n+=\"useinbandfec=1\",s=s.replace(\"useinbandfec=1\",n),s}handleOnIce(e){var t;i.Log(i.GetStackTrace(),\"peerconnection handleOnIce\",6),this.config.isFlagEnabled(ue.ForceTURN)&&e.candidate.indexOf(\"relay\")<0?i.Info(i.GetStackTrace(),`Dropping candidate because it was not TURN relay. | Type= ${e.type} | Protocol= ${e.protocol} | Address=${e.address} | Port=${e.port} |`,6):null===(t=this.peerConnection)||void 0===t||t.addIceCandidate(e)}handleSignalStateChange(e){i.Log(i.GetStackTrace(),\"signaling state change: \"+e,6)}handleIceConnectionStateChange(e){i.Log(i.GetStackTrace(),\"ice connection state change: \"+e,6),this.onIceConnectionStateChange(e)}handleIceGatheringStateChange(e){i.Log(i.GetStackTrace(),\"ice gathering state change: \"+JSON.stringify(e),6)}handleOnTrack(e){this.onTrack(e)}handleIceCandidate(e){this.onPeerIceCandidate(e)}handleDataChannel(e){this.onDataChannel(e)}onTrack(e){}onIceConnectionStateChange(e){}onPeerIceCandidate(e){}onDataChannel(e){}fuzzyIntersectUEAndBrowserCodecs(e){const t=new Array,s=this.parseAvailableCodecs(e),n=this.config.getSettingOption(Ce.PreferredCodec).options;for(const e of s)if(n.includes(e))t.push(e);else{const s=e.split(\" \")[0];for(const e of n)if(e.includes(s)){t.push(e);break}}return t}setupTransceiversAsync(e){var t,s,n,r,i,a,o,l,d,c,h,u;return Be(this,void 0,void 0,(function*(){let g=!1;for(const e of null!==(s=null===(t=this.peerConnection)||void 0===t?void 0:t.getTransceivers())&&void 0!==s?s:[])if(e&&e.receiver&&e.receiver.track&&\"video\"===e.receiver.track.kind){g=!0;break}if(g||null===(n=this.peerConnection)||void 0===n||n.addTransceiver(\"video\",{direction:\"recvonly\"}),RTCRtpReceiver.getCapabilities&&\"\"!=this.preferredCodec)for(const e of null!==(i=null===(r=this.peerConnection)||void 0===r?void 0:r.getTransceivers())&&void 0!==i?i:[])if(e&&e.receiver&&e.receiver.track&&\"video\"===e.receiver.track.kind&&e.setCodecPreferences){const t=this.preferredCodec.split(\" \"),s={mimeType:\"video/\"+t[0],clockRate:9e4,sdpFmtpLine:t[1]?t[1]:\"\"},n=[s];RTCRtpReceiver.getCapabilities(\"video\").codecs.forEach((e=>{(e.mimeType!=s.mimeType||(null==e?void 0:e.sdpFmtpLine)!=(null==s?void 0:s.sdpFmtpLine))&&n.push(e)}));for(const e of n)void 0!==(null==e?void 0:e.sdpFmtpLine)&&\"\"!==e.sdpFmtpLine||delete e.sdpFmtpLine;e.setCodecPreferences(n)}let m=!1;for(const e of null!==(o=null===(a=this.peerConnection)||void 0===a?void 0:a.getTransceivers())&&void 0!==o?o:[])if(e&&e.receiver&&e.receiver.track&&\"audio\"===e.receiver.track.kind){m=!0;break}if(e){const e={video:!1,audio:{autoGainControl:!1,channelCount:1,echoCancellation:!1,latency:0,noiseSuppression:!1,sampleRate:48e3,sampleSize:16,volume:1}},t=yield navigator.mediaDevices.getUserMedia(e);if(t)if(m){for(const e of null!==(c=null===(d=this.peerConnection)||void 0===d?void 0:d.getTransceivers())&&void 0!==c?c:[])if(Ie.canTransceiverReceiveAudio(e))for(const s of t.getTracks())s.kind&&\"audio\"==s.kind&&(e.sender.replaceTrack(s),e.direction=\"sendrecv\")}else for(const e of t.getTracks())e.kind&&\"audio\"==e.kind&&(null===(h=this.peerConnection)||void 0===h||h.addTransceiver(e,{direction:\"sendrecv\"}));else m||null===(u=this.peerConnection)||void 0===u||u.addTransceiver(\"audio\",{direction:\"recvonly\"})}else m||null===(l=this.peerConnection)||void 0===l||l.addTransceiver(\"audio\",{direction:\"recvonly\"})}))}onVideoStats(e){}onSendWebRTCOffer(e){}onSendWebRTCAnswer(e){}showTextOverlayConnecting(){}showTextOverlaySetupFailure(){}parseAvailableCodecs(e){if(!RTCRtpReceiver.getCapabilities)return[\"Only available on Chrome\"];const t=[],s=(0,Fe.splitSections)(e.sdp);return s.shift(),s.forEach((e=>{const{codecs:s}=(0,Fe.parseRtpParameters)(e),n=/(VP\\d|H26\\d|AV1).*/;s.forEach((e=>{const s=e.name+\" \"+Object.keys(e.parameters||{}).map((t=>t+\"=\"+e.parameters[t])).join(\";\");if(null!==n.exec(s)){\"VP9\"==e.name&&(e.parameters={\"profile-id\":\"0\"});const s=e.name+\" \"+Object.keys(e.parameters||{}).map((t=>t+\"=\"+e.parameters[t])).join(\";\");t.push(s)}}))})),t}}class _e{constructor(){this.PixelStreamingSettings=new Ve,this.EncoderSettings=new He,this.WebRTCSettings=new We}ueCompatible(){null!=this.WebRTCSettings.MaxFPS&&(this.WebRTCSettings.FPS=this.WebRTCSettings.MaxFPS)}}class Ve{}class He{}class We{}class Ne{constructor(){this.ReceiptTimeMs=null,this.TransmissionTimeMs=null,this.PreCaptureTimeMs=null,this.PostCaptureTimeMs=null,this.PreEncodeTimeMs=null,this.PostEncodeTimeMs=null,this.EncodeMs=null,this.CaptureToSendMs=null,this.testStartTimeMs=0,this.browserReceiptTimeMs=0,this.latencyExcludingDecode=0,this.testDuration=0,this.networkLatency=0,this.browserSendLatency=0,this.frameDisplayDeltaTimeMs=0,this.endToEndLatency=0,this.encodeLatency=0}setFrameDisplayDeltaTime(e){0==this.frameDisplayDeltaTimeMs&&(this.frameDisplayDeltaTimeMs=Math.round(e))}processFields(){null!=this.EncodeMs||null==this.PreEncodeTimeMs&&null==this.PostEncodeTimeMs||(i.Log(i.GetStackTrace(),`Setting Encode Ms \\n ${this.PostEncodeTimeMs} \\n ${this.PreEncodeTimeMs}`,6),this.EncodeMs=this.PostEncodeTimeMs-this.PreEncodeTimeMs),null!=this.CaptureToSendMs||null==this.PreCaptureTimeMs&&null==this.PostCaptureTimeMs||(i.Log(i.GetStackTrace(),`Setting CaptureToSendMs Ms \\n ${this.PostCaptureTimeMs} \\n ${this.PreCaptureTimeMs}`,6),this.CaptureToSendMs=this.PostCaptureTimeMs-this.PreCaptureTimeMs)}}class Ke{static setExtensionFromBytes(e,t){t.receiving||(t.mimetype=\"\",t.extension=\"\",t.receiving=!0,t.valid=!1,t.chunks=0,t.data=[],t.timestampStart=(new Date).getTime(),i.Log(i.GetStackTrace(),\"Received first chunk of file\",6));const s=new TextDecoder(\"utf-16\").decode(e.slice(1));i.Log(i.GetStackTrace(),s,6),t.extension=s}static setMimeTypeFromBytes(e,t){t.receiving||(t.mimetype=\"\",t.extension=\"\",t.receiving=!0,t.valid=!1,t.chunks=0,t.data=[],t.timestampStart=(new Date).getTime(),i.Log(i.GetStackTrace(),\"Received first chunk of file\",6));const s=new TextDecoder(\"utf-16\").decode(e.slice(1));i.Log(i.GetStackTrace(),s,6),t.mimetype=s}static setContentsFromBytes(e,t){if(!t.receiving)return;t.chunks=Math.ceil(new DataView(e.slice(1,5).buffer).getInt32(0,!0)/16379);const s=e.slice(5);if(t.data.push(s),i.Log(i.GetStackTrace(),`Received file chunk: ${t.data.length}/${t.chunks}`,6),t.data.length===t.chunks){t.receiving=!1,t.valid=!0,i.Log(i.GetStackTrace(),\"Received complete file\",6);const e=(new Date).getTime()-t.timestampStart,s=Math.round(16384*t.chunks/e);i.Log(i.GetStackTrace(),`Average transfer bitrate: ${s}kb/s over ${e/1e3} seconds`,6);const n=new Blob(t.data,{type:t.mimetype}),r=document.createElement(\"a\");r.setAttribute(\"href\",URL.createObjectURL(n)),r.setAttribute(\"download\",`transfer.${t.extension}`),document.body.append(r),r.remove()}else t.data.length>t.chunks&&(t.receiving=!1,i.Error(i.GetStackTrace(),`Received bigger file than advertised: ${t.data.length}/${t.chunks}`))}}class Qe{constructor(){this.mimetype=\"\",this.extension=\"\",this.receiving=!1,this.chunks=0,this.data=[],this.valid=!1}}class qe{}qe.mainButton=0,qe.auxiliaryButton=1,qe.secondaryButton=2,qe.fourthButton=3,qe.fifthButton=4;class $e{}$e.primaryButton=1,$e.secondaryButton=2,$e.auxiliaryButton=4,$e.fourthButton=8,$e.fifthButton=16;class Xe{constructor(){this.unregisterCallbacks=[]}addUnregisterCallback(e){this.unregisterCallbacks.push(e)}unregisterAll(){for(const e of this.unregisterCallbacks)e();this.unregisterCallbacks=[]}}class je{constructor(e,t,s){this.touchEventListenerTracker=new Xe,this.toStreamerMessagesProvider=e,this.videoElementProvider=t,this.coordinateConverter=s;const n=e=>this.onTouchStart(e),r=e=>this.onTouchEnd(e),i=e=>this.onTouchMove(e);document.addEventListener(\"touchstart\",n,{passive:!1}),document.addEventListener(\"touchend\",r,{passive:!1}),document.addEventListener(\"touchmove\",i,{passive:!1}),this.touchEventListenerTracker.addUnregisterCallback((()=>document.removeEventListener(\"touchstart\",n))),this.touchEventListenerTracker.addUnregisterCallback((()=>document.removeEventListener(\"touchend\",r))),this.touchEventListenerTracker.addUnregisterCallback((()=>document.removeEventListener(\"touchmove\",i)))}unregisterTouchEvents(){this.touchEventListenerTracker.unregisterAll()}setVideoElementParentClientRect(e){this.videoElementParentClientRect=e}onTouchStart(e){if(this.videoElementProvider.isVideoReady()&&e.target===this.videoElementProvider.getVideoElement()){if(null==this.fakeTouchFinger){const t=e.changedTouches[0];this.fakeTouchFinger=new Je(t.identifier,t.clientX-this.videoElementParentClientRect.left,t.clientY-this.videoElementParentClientRect.top);const s=this.videoElementProvider.getVideoParentElement(),n=new MouseEvent(\"mouseenter\",t);s.dispatchEvent(n);const r=this.coordinateConverter.normalizeAndQuantizeUnsigned(this.fakeTouchFinger.x,this.fakeTouchFinger.y);this.toStreamerMessagesProvider.toStreamerHandlers.get(\"MouseDown\")([qe.mainButton,r.x,r.y])}e.preventDefault()}}onTouchEnd(e){if(!this.videoElementProvider.isVideoReady()||null==this.fakeTouchFinger)return;const t=this.videoElementProvider.getVideoParentElement(),s=this.toStreamerMessagesProvider.toStreamerHandlers;for(let n=0;n<e.changedTouches.length;n++){const r=e.changedTouches[n];if(r.identifier===this.fakeTouchFinger.id){const e=r.clientX-this.videoElementParentClientRect.left,n=r.clientY-this.videoElementParentClientRect.top,i=this.coordinateConverter.normalizeAndQuantizeUnsigned(e,n);s.get(\"MouseUp\")([qe.mainButton,i.x,i.y]);const a=new MouseEvent(\"mouseleave\",r);t.dispatchEvent(a),this.fakeTouchFinger=null;break}}e.preventDefault()}onTouchMove(e){if(!this.videoElementProvider.isVideoReady()||null==this.fakeTouchFinger)return;const t=this.toStreamerMessagesProvider.toStreamerHandlers;for(let s=0;s<e.touches.length;s++){const n=e.touches[s];if(n.identifier===this.fakeTouchFinger.id){const e=n.clientX-this.videoElementParentClientRect.left,s=n.clientY-this.videoElementParentClientRect.top,r=this.coordinateConverter.normalizeAndQuantizeUnsigned(e,s),i=this.coordinateConverter.normalizeAndQuantizeSigned(e-this.fakeTouchFinger.x,s-this.fakeTouchFinger.y);t.get(\"MouseMove\")([r.x,r.y,i.x,i.y]),this.fakeTouchFinger.x=e,this.fakeTouchFinger.y=s;break}}e.preventDefault()}}class Je{constructor(e,t,s){this.id=e,this.x=t,this.y=s}}class Ye{}Ye.backSpace=8,Ye.shift=16,Ye.control=17,Ye.alt=18,Ye.rightShift=253,Ye.rightControl=254,Ye.rightAlt=255;class Ze{constructor(e,t,s){this.keyboardEventListenerTracker=new Xe,this.CodeToKeyCode={Escape:27,Digit0:48,Digit1:49,Digit2:50,Digit3:51,Digit4:52,Digit5:53,Digit6:54,Digit7:55,Digit8:56,Digit9:57,Minus:173,Equal:187,Backspace:8,Tab:9,KeyQ:81,KeyW:87,KeyE:69,KeyR:82,KeyT:84,KeyY:89,KeyU:85,KeyI:73,KeyO:79,KeyP:80,BracketLeft:219,BracketRight:221,Enter:13,ControlLeft:17,KeyA:65,KeyS:83,KeyD:68,KeyF:70,KeyG:71,KeyH:72,KeyJ:74,KeyK:75,KeyL:76,Semicolon:186,Quote:222,Backquote:192,ShiftLeft:16,Backslash:220,KeyZ:90,KeyX:88,KeyC:67,KeyV:86,KeyB:66,KeyN:78,KeyM:77,Comma:188,Period:190,Slash:191,ShiftRight:253,AltLeft:18,Space:32,CapsLock:20,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,Pause:19,ScrollLock:145,NumpadDivide:111,NumpadMultiply:106,NumpadSubtract:109,NumpadAdd:107,NumpadDecimal:110,Numpad9:105,Numpad8:104,Numpad7:103,Numpad6:102,Numpad5:101,Numpad4:100,Numpad3:99,Numpad2:98,Numpad1:97,Numpad0:96,NumLock:144,ControlRight:254,AltRight:255,Home:36,End:35,ArrowUp:38,ArrowLeft:37,ArrowRight:39,ArrowDown:40,PageUp:33,PageDown:34,Insert:45,Delete:46,ContextMenu:93},this.toStreamerMessagesProvider=e,this.config=t,this.activeKeysProvider=s}registerKeyBoardEvents(){const e=e=>this.handleOnCompositionEnd(e),t=e=>this.handleOnKeyDown(e),s=e=>this.handleOnKeyUp(e),n=e=>this.handleOnKeyPress(e);document.addEventListener(\"compositionend\",e),document.addEventListener(\"keydown\",t),document.addEventListener(\"keyup\",s),document.addEventListener(\"keypress\",n),this.keyboardEventListenerTracker.addUnregisterCallback((()=>document.removeEventListener(\"compositionend\",e))),this.keyboardEventListenerTracker.addUnregisterCallback((()=>document.removeEventListener(\"keydown\",t))),this.keyboardEventListenerTracker.addUnregisterCallback((()=>document.removeEventListener(\"keyup\",s))),this.keyboardEventListenerTracker.addUnregisterCallback((()=>document.removeEventListener(\"keypress\",n)))}unregisterKeyBoardEvents(){this.keyboardEventListenerTracker.unregisterAll()}handleOnKeyDown(e){const t=this.getKeycode(e);t&&229!==t&&(i.Log(i.GetStackTrace(),`key down ${t}, repeat = ${e.repeat}`,6),this.toStreamerMessagesProvider.toStreamerHandlers.get(\"KeyDown\")([this.getKeycode(e),e.repeat?1:0]),this.activeKeysProvider.getActiveKeys().push(t),t===Ye.backSpace&&document.dispatchEvent(new KeyboardEvent(\"keypress\",{charCode:Ye.backSpace})),this.config.isFlagEnabled(ue.SuppressBrowserKeys)&&this.isKeyCodeBrowserKey(t)&&e.preventDefault())}handleOnKeyUp(e){const t=this.getKeycode(e);t&&(i.Log(i.GetStackTrace(),`key up ${t}`,6),this.toStreamerMessagesProvider.toStreamerHandlers.get(\"KeyUp\")([t]),this.config.isFlagEnabled(ue.SuppressBrowserKeys)&&this.isKeyCodeBrowserKey(t)&&e.preventDefault())}handleOnKeyPress(e){if(!(\"charCode\"in e))return void i.Warning(i.GetStackTrace(),\"KeyboardEvent.charCode is deprecated in this browser, cannot send key press.\");const t=e.charCode;i.Log(i.GetStackTrace(),`key press ${t}`,6),this.toStreamerMessagesProvider.toStreamerHandlers.get(\"KeyPress\")([t])}handleOnCompositionEnd(e){e.data&&e.data.length&&e.data.split(\"\").forEach((e=>{this.handleOnKeyDown(new KeyboardEvent(\"keydown\",{keyCode:e.toUpperCase().charCodeAt(0),charCode:e.charCodeAt(0)})),this.handleOnKeyPress(new KeyboardEvent(\"keypress\",{keyCode:e.toUpperCase().charCodeAt(0),charCode:e.charCodeAt(0)})),this.handleOnKeyUp(new KeyboardEvent(\"keyup\",{keyCode:e.toUpperCase().charCodeAt(0),charCode:e.charCodeAt(0)}))}))}getKeycode(e){if(!(\"keyCode\"in e)){const t=e;return t.code in this.CodeToKeyCode?this.CodeToKeyCode[t.code]:(i.Warning(i.GetStackTrace(),`Keyboard code of ${t.code} is not supported in our mapping, ignoring this key.`),null)}return e.keyCode===Ye.shift&&\"ShiftRight\"===e.code?Ye.rightShift:e.keyCode===Ye.control&&\"ControlRight\"===e.code?Ye.rightControl:e.keyCode===Ye.alt&&\"AltRight\"===e.code?Ye.rightAlt:e.keyCode}isKeyCodeBrowserKey(e){return e>=112&&e<=123||9===e}}class et{constructor(e,t,s){this.x=0,this.y=0,this.updateMouseMovePositionEvent=e=>{this.updateMouseMovePosition(e)},this.mouseEventListenerTracker=new Xe,this.videoElementProvider=e,this.mouseController=t,this.activeKeysProvider=s;const n=this.videoElementProvider.getVideoParentElement();this.x=n.getBoundingClientRect().width/2,this.y=n.getBoundingClientRect().height/2,this.coord=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(this.x,this.y)}unregisterMouseEvents(){this.mouseEventListenerTracker.unregisterAll()}lockStateChange(){const e=this.videoElementProvider.getVideoParentElement(),t=this.mouseController.toStreamerMessagesProvider.toStreamerHandlers;if(document.pointerLockElement===e||document.mozPointerLockElement===e)i.Log(i.GetStackTrace(),\"Pointer locked\",6),document.addEventListener(\"mousemove\",this.updateMouseMovePositionEvent,!1),this.mouseEventListenerTracker.addUnregisterCallback((()=>document.removeEventListener(\"mousemove\",this.updateMouseMovePositionEvent,!1)));else{i.Log(i.GetStackTrace(),\"The pointer lock status is now unlocked\",6),document.removeEventListener(\"mousemove\",this.updateMouseMovePositionEvent,!1);let e=this.activeKeysProvider.getActiveKeys();const s=new Set(e),n=[];s.forEach((e=>{n[e]})),n.forEach((e=>{t.get(\"KeyUp\")([e])})),e=[]}}updateMouseMovePosition(e){if(!this.videoElementProvider.isVideoReady())return;const t=this.mouseController.toStreamerMessagesProvider.toStreamerHandlers,s=this.videoElementProvider.getVideoParentElement().clientWidth,n=this.videoElementProvider.getVideoParentElement().clientHeight;this.x+=e.movementX,this.y+=e.movementY,this.x>s&&(this.x-=s),this.y>n&&(this.y-=n),this.x<0&&(this.x=s+this.x),this.y<0&&(this.y=n-this.y),this.coord=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(this.x,this.y);const r=this.mouseController.coordinateConverter.normalizeAndQuantizeSigned(e.movementX,e.movementY);t.get(\"MouseMove\")([this.coord.x,this.coord.y,r.x,r.y])}handleMouseDown(e){this.videoElementProvider.isVideoReady()&&this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get(\"MouseDown\")([e.button,this.coord.x,this.coord.y])}handleMouseUp(e){this.videoElementProvider.isVideoReady()&&this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get(\"MouseUp\")([e.button,this.coord.x,this.coord.y])}handleMouseWheel(e){this.videoElementProvider.isVideoReady()&&this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get(\"MouseWheel\")([e.wheelDelta,this.coord.x,this.coord.y])}handleMouseDouble(e){this.videoElementProvider.isVideoReady()&&this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get(\"MouseDouble\")([e.button,this.coord.x,this.coord.y])}handlePressMouseButtons(e){this.videoElementProvider.isVideoReady()&&this.mouseController.pressMouseButtons(e.buttons,this.x,this.y)}handleReleaseMouseButtons(e){this.videoElementProvider.isVideoReady()&&this.mouseController.releaseMouseButtons(e.buttons,this.x,this.y)}}class tt{constructor(e){this.mouseController=e}unregisterMouseEvents(){}updateMouseMovePosition(e){if(!this.mouseController.videoElementProvider.isVideoReady())return;i.Log(i.GetStackTrace(),\"MouseMove\",6);const t=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(e.offsetX,e.offsetY),s=this.mouseController.coordinateConverter.normalizeAndQuantizeSigned(e.movementX,e.movementY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get(\"MouseMove\")([t.x,t.y,s.x,s.y]),e.preventDefault()}handleMouseDown(e){if(!this.mouseController.videoElementProvider.isVideoReady())return;i.Log(i.GetStackTrace(),\"onMouse Down\",6);const t=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(e.offsetX,e.offsetY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get(\"MouseDown\")([e.button,t.x,t.y]),e.preventDefault()}handleMouseUp(e){if(!this.mouseController.videoElementProvider.isVideoReady())return;i.Log(i.GetStackTrace(),\"onMouse Up\",6);const t=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(e.offsetX,e.offsetY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get(\"MouseUp\")([e.button,t.x,t.y]),e.preventDefault()}handleContextMenu(e){this.mouseController.videoElementProvider.isVideoReady()&&e.preventDefault()}handleMouseWheel(e){if(!this.mouseController.videoElementProvider.isVideoReady())return;const t=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(e.offsetX,e.offsetY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get(\"MouseWheel\")([e.wheelDelta,t.x,t.y]),e.preventDefault()}handleMouseDouble(e){if(!this.mouseController.videoElementProvider.isVideoReady())return;const t=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(e.offsetX,e.offsetY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get(\"MouseDouble\")([e.button,t.x,t.y])}handlePressMouseButtons(e){this.mouseController.videoElementProvider.isVideoReady()&&(i.Log(i.GetStackTrace(),\"onMouse press\",6),this.mouseController.pressMouseButtons(e.buttons,e.offsetX,e.offsetY))}handleReleaseMouseButtons(e){this.mouseController.videoElementProvider.isVideoReady()&&(i.Log(i.GetStackTrace(),\"onMouse release\",6),this.mouseController.releaseMouseButtons(e.buttons,e.offsetX,e.offsetY))}}class st{constructor(e,t,s,n){this.mouseEventListenerTracker=new Xe,this.toStreamerMessagesProvider=e,this.coordinateConverter=s,this.videoElementProvider=t,this.activeKeysProvider=n,this.registerMouseEnterAndLeaveEvents()}unregisterMouseEvents(){this.mouseEventListenerTracker.unregisterAll()}registerLockedMouseEvents(e){const t=this.videoElementProvider.getVideoParentElement(),s=new et(this.videoElementProvider,e,this.activeKeysProvider);if(t.requestPointerLock=t.requestPointerLock||t.mozRequestPointerLock,document.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock,t.requestPointerLock){const e=()=>{t.requestPointerLock()};t.addEventListener(\"click\",e),this.mouseEventListenerTracker.addUnregisterCallback((()=>t.removeEventListener(\"click\",e)))}const n=()=>s.lockStateChange();document.addEventListener(\"pointerlockchange\",n,!1),document.addEventListener(\"mozpointerlockchange\",n,!1),this.mouseEventListenerTracker.addUnregisterCallback((()=>document.removeEventListener(\"pointerlockchange\",n,!1))),this.mouseEventListenerTracker.addUnregisterCallback((()=>document.removeEventListener(\"mozpointerlockchange\",n,!1)));const r=e=>s.handleMouseDown(e),i=e=>s.handleMouseUp(e),a=e=>s.handleMouseWheel(e),o=e=>s.handleMouseDouble(e);t.addEventListener(\"mousedown\",r),t.addEventListener(\"mouseup\",i),t.addEventListener(\"wheel\",a),t.addEventListener(\"dblclick\",o),this.mouseEventListenerTracker.addUnregisterCallback((()=>t.removeEventListener(\"mousedown\",r))),this.mouseEventListenerTracker.addUnregisterCallback((()=>t.removeEventListener(\"mouseup\",i))),this.mouseEventListenerTracker.addUnregisterCallback((()=>t.removeEventListener(\"wheel\",a))),this.mouseEventListenerTracker.addUnregisterCallback((()=>t.removeEventListener(\"dblclick\",o))),this.mouseEventListenerTracker.addUnregisterCallback((()=>s.unregisterMouseEvents())),this.mouseEventListenerTracker.addUnregisterCallback((()=>{!document.exitPointerLock||document.pointerLockElement!==t&&document.mozPointerLockElement!==t||document.exitPointerLock()}))}registerHoveringMouseEvents(e){const t=this.videoElementProvider.getVideoParentElement(),s=new tt(e),n=e=>s.updateMouseMovePosition(e),r=e=>s.handleMouseDown(e),i=e=>s.handleMouseUp(e),a=e=>s.handleContextMenu(e),o=e=>s.handleMouseWheel(e),l=e=>s.handleMouseDouble(e);t.addEventListener(\"mousemove\",n),t.addEventListener(\"mousedown\",r),t.addEventListener(\"mouseup\",i),t.addEventListener(\"contextmenu\",a),t.addEventListener(\"wheel\",o),t.addEventListener(\"dblclick\",l),this.mouseEventListenerTracker.addUnregisterCallback((()=>t.removeEventListener(\"mousemove\",n))),this.mouseEventListenerTracker.addUnregisterCallback((()=>t.removeEventListener(\"mousedown\",r))),this.mouseEventListenerTracker.addUnregisterCallback((()=>t.removeEventListener(\"mouseup\",i))),this.mouseEventListenerTracker.addUnregisterCallback((()=>t.removeEventListener(\"contextmenu\",a))),this.mouseEventListenerTracker.addUnregisterCallback((()=>t.removeEventListener(\"wheel\",o))),this.mouseEventListenerTracker.addUnregisterCallback((()=>t.removeEventListener(\"dblclick\",l))),this.mouseEventListenerTracker.addUnregisterCallback((()=>s.unregisterMouseEvents()))}registerMouseEnterAndLeaveEvents(){const e=this.videoElementProvider.getVideoParentElement(),t=e=>{this.videoElementProvider.isVideoReady()&&(i.Log(i.GetStackTrace(),\"Mouse Entered\",6),this.sendMouseEnter(),this.pressMouseButtons(e.buttons,e.x,e.y))},s=e=>{this.videoElementProvider.isVideoReady()&&(i.Log(i.GetStackTrace(),\"Mouse Left\",6),this.sendMouseLeave(),this.releaseMouseButtons(e.buttons,e.x,e.y))};e.addEventListener(\"mouseenter\",t),e.addEventListener(\"mouseleave\",s),this.mouseEventListenerTracker.addUnregisterCallback((()=>e.removeEventListener(\"mouseenter\",t))),this.mouseEventListenerTracker.addUnregisterCallback((()=>e.removeEventListener(\"mouseleave\",s)))}releaseMouseButtons(e,t,s){const n=this.coordinateConverter.normalizeAndQuantizeUnsigned(t,s);e&$e.primaryButton&&this.sendMouseUp(qe.mainButton,n.x,n.y),e&$e.secondaryButton&&this.sendMouseUp(qe.secondaryButton,n.x,n.y),e&$e.auxiliaryButton&&this.sendMouseUp(qe.auxiliaryButton,n.x,n.y),e&$e.fourthButton&&this.sendMouseUp(qe.fourthButton,n.x,n.y),e&$e.fifthButton&&this.sendMouseUp(qe.fifthButton,n.x,n.y)}pressMouseButtons(e,t,s){if(!this.videoElementProvider.isVideoReady())return;const n=this.coordinateConverter.normalizeAndQuantizeUnsigned(t,s);e&$e.primaryButton&&this.sendMouseDown(qe.mainButton,n.x,n.y),e&$e.secondaryButton&&this.sendMouseDown(qe.secondaryButton,n.x,n.y),e&$e.auxiliaryButton&&this.sendMouseDown(qe.auxiliaryButton,n.x,n.y),e&$e.fourthButton&&this.sendMouseDown(qe.fourthButton,n.x,n.y),e&$e.fifthButton&&this.sendMouseDown(qe.fifthButton,n.x,n.y)}sendMouseEnter(){this.videoElementProvider.isVideoReady()&&this.toStreamerMessagesProvider.toStreamerHandlers.get(\"MouseEnter\")()}sendMouseLeave(){this.videoElementProvider.isVideoReady()&&this.toStreamerMessagesProvider.toStreamerHandlers.get(\"MouseLeave\")()}sendMouseDown(e,t,s){this.videoElementProvider.isVideoReady()&&(i.Log(i.GetStackTrace(),`mouse button ${e} down at (${t}, ${s})`,6),this.toStreamerMessagesProvider.toStreamerHandlers.get(\"MouseDown\")([e,t,s]))}sendMouseUp(e,t,s){if(!this.videoElementProvider.isVideoReady())return;i.Log(i.GetStackTrace(),`mouse button ${e} up at (${t}, ${s})`,6);const n=this.coordinateConverter.normalizeAndQuantizeUnsigned(t,s);this.toStreamerMessagesProvider.toStreamerHandlers.get(\"MouseUp\")([e,n.x,n.y])}}class nt{constructor(e,t,s){this.fingers=[9,8,7,6,5,4,3,2,1,0],this.fingerIds=new Map,this.maxByteValue=255,this.touchEventListenerTracker=new Xe,this.toStreamerMessagesProvider=e,this.videoElementProvider=t,this.coordinateConverter=s,this.videoElementParent=t.getVideoElement();const n=e=>this.onTouchStart(e),r=e=>this.onTouchEnd(e),a=e=>this.onTouchMove(e);this.videoElementParent.addEventListener(\"touchstart\",n),this.videoElementParent.addEventListener(\"touchend\",r),this.videoElementParent.addEventListener(\"touchmove\",a),this.touchEventListenerTracker.addUnregisterCallback((()=>this.videoElementParent.removeEventListener(\"touchstart\",n))),this.touchEventListenerTracker.addUnregisterCallback((()=>this.videoElementParent.removeEventListener(\"touchend\",r))),this.touchEventListenerTracker.addUnregisterCallback((()=>this.videoElementParent.removeEventListener(\"touchmove\",a))),i.Log(i.GetStackTrace(),\"Touch Events Registered\",6);const o=e=>{e.preventDefault()};document.addEventListener(\"touchmove\",o),this.touchEventListenerTracker.addUnregisterCallback((()=>document.removeEventListener(\"touchmove\",o)))}unregisterTouchEvents(){this.touchEventListenerTracker.unregisterAll()}rememberTouch(e){const t=this.fingers.pop();void 0===t&&i.Log(i.GetStackTrace(),\"exhausted touch identifiers\",6),this.fingerIds.set(e.identifier,t)}forgetTouch(e){this.fingers.push(this.fingerIds.get(e.identifier)),this.fingers.sort((function(e,t){return t-e})),this.fingerIds.delete(e.identifier)}onTouchStart(e){if(this.videoElementProvider.isVideoReady()){for(let t=0;t<e.changedTouches.length;t++)this.rememberTouch(e.changedTouches[t]);i.Log(i.GetStackTrace(),\"touch start\",6),this.emitTouchData(\"TouchStart\",e.changedTouches),e.preventDefault()}}onTouchEnd(e){if(this.videoElementProvider.isVideoReady()){i.Log(i.GetStackTrace(),\"touch end\",6),this.emitTouchData(\"TouchEnd\",e.changedTouches);for(let t=0;t<e.changedTouches.length;t++)this.forgetTouch(e.changedTouches[t]);e.preventDefault()}}onTouchMove(e){this.videoElementProvider.isVideoReady()&&(i.Log(i.GetStackTrace(),\"touch move\",6),this.emitTouchData(\"TouchMove\",e.touches),e.preventDefault())}emitTouchData(e,t){if(!this.videoElementProvider.isVideoReady())return;const s=this.videoElementProvider.getVideoParentElement().getBoundingClientRect(),n=this.toStreamerMessagesProvider.toStreamerHandlers;for(let r=0;r<t.length;r++){const a=1,o=t[r],l=o.clientX-s.left,d=o.clientY-s.top;i.Log(i.GetStackTrace(),`F${this.fingerIds.get(o.identifier)}=(${l}, ${d})`,6);const c=this.coordinateConverter.normalizeAndQuantizeUnsigned(l,d);switch(e){case\"TouchStart\":n.get(\"TouchStart\")([a,c.x,c.y,this.fingerIds.get(o.identifier),this.maxByteValue*(o.force>0?o.force:1),c.inRange?1:0]);break;case\"TouchEnd\":n.get(\"TouchEnd\")([a,c.x,c.y,this.fingerIds.get(o.identifier),this.maxByteValue*o.force,c.inRange?1:0]);break;case\"TouchMove\":n.get(\"TouchMove\")([a,c.x,c.y,this.fingerIds.get(o.identifier),this.maxByteValue*(o.force>0?o.force:1),c.inRange?1:0])}}}}class rt{constructor(e){this.gamePadEventListenerTracker=new Xe,this.toStreamerMessagesProvider=e,this.requestAnimationFrame=(window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.requestAnimationFrame).bind(window);const t=window;if(window.addEventListener(\"beforeunload\",(e=>this.onBeforeUnload(e))),\"GamepadEvent\"in t){const e=e=>this.gamePadConnectHandler(e),t=e=>this.gamePadDisconnectHandler(e);window.addEventListener(\"gamepadconnected\",e),window.addEventListener(\"gamepaddisconnected\",t),this.gamePadEventListenerTracker.addUnregisterCallback((()=>window.removeEventListener(\"gamepadconnected\",e))),this.gamePadEventListenerTracker.addUnregisterCallback((()=>window.removeEventListener(\"gamepaddisconnected\",t)))}else if(\"WebKitGamepadEvent\"in t){const e=e=>this.gamePadConnectHandler(e),t=e=>this.gamePadDisconnectHandler(e);window.addEventListener(\"webkitgamepadconnected\",e),window.addEventListener(\"webkitgamepaddisconnected\",t),this.gamePadEventListenerTracker.addUnregisterCallback((()=>window.removeEventListener(\"webkitgamepadconnected\",e))),this.gamePadEventListenerTracker.addUnregisterCallback((()=>window.removeEventListener(\"webkitgamepaddisconnected\",t)))}if(this.controllers=[],navigator.getGamepads)for(const e of navigator.getGamepads())e&&this.gamePadConnectHandler(new GamepadEvent(\"gamepadconnected\",{gamepad:e}))}unregisterGamePadEvents(){this.gamePadEventListenerTracker.unregisterAll();for(const e of this.controllers)void 0!==e.id&&this.onGamepadDisconnected(e.id);this.controllers=[],this.onGamepadConnected=()=>{},this.onGamepadDisconnected=()=>{}}gamePadConnectHandler(e){i.Log(i.GetStackTrace(),\"Gamepad connect handler\",6);const t=e.gamepad,s={currentState:t,prevState:t,id:void 0};this.controllers.push(s),this.controllers[t.index].currentState=t,this.controllers[t.index].prevState=t,i.Log(i.GetStackTrace(),\"gamepad: \"+t.id+\" connected\",6),window.requestAnimationFrame((()=>this.updateStatus())),this.onGamepadConnected()}gamePadDisconnectHandler(e){i.Log(i.GetStackTrace(),\"Gamepad disconnect handler\",6),i.Log(i.GetStackTrace(),\"gamepad: \"+e.gamepad.id+\" disconnected\",6);const t=this.controllers[e.gamepad.index];delete this.controllers[e.gamepad.index],this.controllers=this.controllers.filter((e=>void 0!==e)),this.onGamepadDisconnected(t.id)}scanGamePads(){const e=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():[];for(let t=0;t<e.length;t++)e[t]&&e[t].index in this.controllers&&(this.controllers[e[t].index].currentState=e[t])}updateStatus(){this.scanGamePads();const e=this.toStreamerMessagesProvider.toStreamerHandlers;for(const t of this.controllers){const s=void 0===t.id?this.controllers.indexOf(t):t.id,n=t.currentState;for(let n=0;n<t.currentState.buttons.length;n++){const r=t.currentState.buttons[n],i=t.prevState.buttons[n];r.pressed?n==Ue.LeftTrigger?e.get(\"GamepadAnalog\")([s,5,r.value]):n==Ue.RightTrigger?e.get(\"GamepadAnalog\")([s,6,r.value]):e.get(\"GamepadButtonPressed\")([s,n,i.pressed?1:0]):!r.pressed&&i.pressed&&(n==Ue.LeftTrigger?e.get(\"GamepadAnalog\")([s,5,0]):n==Ue.RightTrigger?e.get(\"GamepadAnalog\")([s,6,0]):e.get(\"GamepadButtonReleased\")([s,n,0]))}for(let t=0;t<n.axes.length;t+=2){const r=parseFloat(n.axes[t].toFixed(4)),i=-parseFloat(n.axes[t+1].toFixed(4));e.get(\"GamepadAnalog\")([s,t+1,r]),e.get(\"GamepadAnalog\")([s,t+2,i])}this.controllers[s].prevState=n}this.controllers.length>0&&this.requestAnimationFrame((()=>this.updateStatus()))}onGamepadResponseReceived(e){for(const t of this.controllers)if(void 0===t.id){t.id=e;break}}onGamepadConnected(){}onGamepadDisconnected(e){}onBeforeUnload(e){for(const e of this.controllers)this.onGamepadDisconnected(e.id)}}!function(e){e[e.RightClusterBottomButton=0]=\"RightClusterBottomButton\",e[e.RightClusterRightButton=1]=\"RightClusterRightButton\",e[e.RightClusterLeftButton=2]=\"RightClusterLeftButton\",e[e.RightClusterTopButton=3]=\"RightClusterTopButton\",e[e.LeftShoulder=4]=\"LeftShoulder\",e[e.RightShoulder=5]=\"RightShoulder\",e[e.LeftTrigger=6]=\"LeftTrigger\",e[e.RightTrigger=7]=\"RightTrigger\",e[e.SelectOrBack=8]=\"SelectOrBack\",e[e.StartOrForward=9]=\"StartOrForward\",e[e.LeftAnalogPress=10]=\"LeftAnalogPress\",e[e.RightAnalogPress=11]=\"RightAnalogPress\",e[e.LeftClusterTopButton=12]=\"LeftClusterTopButton\",e[e.LeftClusterBottomButton=13]=\"LeftClusterBottomButton\",e[e.LeftClusterLeftButton=14]=\"LeftClusterLeftButton\",e[e.LeftClusterRightButton=15]=\"LeftClusterRightButton\",e[e.CentreButton=16]=\"CentreButton\",e[e.LeftStickHorizontal=0]=\"LeftStickHorizontal\",e[e.LeftStickVertical=1]=\"LeftStickVertical\",e[e.RightStickHorizontal=2]=\"RightStickHorizontal\",e[e.RightStickVertical=3]=\"RightStickVertical\"}(Ue||(Ue={}));class it{constructor(e,t,s){this.activeKeys=new at,this.toStreamerMessagesProvider=e,this.videoElementProvider=t,this.coordinateConverter=s}registerKeyBoard(e){i.Log(i.GetStackTrace(),\"Register Keyboard Events\",7);const t=new Ze(this.toStreamerMessagesProvider,e,this.activeKeys);return t.registerKeyBoardEvents(),t}registerMouse(e){i.Log(i.GetStackTrace(),\"Register Mouse Events\",7);const t=new st(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter,this.activeKeys);switch(e){case Ee.LockedMouse:t.registerLockedMouseEvents(t);break;case Ee.HoveringMouse:t.registerHoveringMouseEvents(t);break;default:i.Info(i.GetStackTrace(),\"unknown Control Scheme Type Defaulting to Locked Mouse Events\"),t.registerLockedMouseEvents(t)}return t}registerTouch(e,t){if(i.Log(i.GetStackTrace(),\"Registering Touch\",6),e){const e=new je(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter);return e.setVideoElementParentClientRect(t),e}return new nt(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter)}registerGamePad(){return i.Log(i.GetStackTrace(),\"Register Game Pad\",7),new rt(this.toStreamerMessagesProvider)}}class at{constructor(){this.activeKeys=[],this.activeKeys=[]}getActiveKeys(){return this.activeKeys}}class ot{constructor(e,t){this.lastTimeResized=(new Date).getTime(),this.videoElement=document.createElement(\"video\"),this.config=t,this.videoElement.id=\"streamingVideo\",this.videoElement.disablePictureInPicture=!0,this.videoElement.playsInline=!0,this.videoElement.style.width=\"100%\",this.videoElement.style.height=\"100%\",this.videoElement.style.position=\"absolute\",this.videoElement.style.pointerEvents=\"all\",e.appendChild(this.videoElement),this.onResizePlayerCallback=()=>{console.log(\"Resolution changed, restyling player, did you forget to override this function?\")},this.onMatchViewportResolutionCallback=()=>{console.log(\"Resolution changed and match viewport resolution is turned on, did you forget to override this function?\")},this.videoElement.onclick=()=>{null!=this.audioElement&&this.audioElement.paused&&this.audioElement.play(),this.videoElement.paused&&this.videoElement.play()},this.videoElement.onloadedmetadata=()=>{this.onVideoInitialized()},window.addEventListener(\"resize\",(()=>this.resizePlayerStyle()),!0),window.addEventListener(\"orientationchange\",(()=>this.onOrientationChange()))}setAudioElement(e){this.audioElement=e}play(){return this.videoElement.muted=this.config.isFlagEnabled(ue.StartVideoMuted),this.videoElement.autoplay=this.config.isFlagEnabled(ue.AutoPlayVideo),this.videoElement.play()}isPaused(){return this.videoElement.paused}isVideoReady(){return void 0!==this.videoElement.readyState&&this.videoElement.readyState>0}hasVideoSource(){return void 0!==this.videoElement.srcObject&&null!==this.videoElement.srcObject}getVideoElement(){return this.videoElement}getVideoParentElement(){return this.videoElement.parentElement}setVideoEnabled(e){this.videoElement.srcObject.getTracks().forEach((t=>t.enabled=e))}onVideoInitialized(){}onOrientationChange(){clearTimeout(this.orientationChangeTimeout),this.orientationChangeTimeout=window.setTimeout((()=>{this.resizePlayerStyle()}),500)}resizePlayerStyle(){const e=this.getVideoParentElement();e&&(this.updateVideoStreamSize(),e.classList.contains(\"fixed-size\")||this.resizePlayerStyleToFillParentElement(),this.onResizePlayerCallback())}resizePlayerStyleToFillParentElement(){this.getVideoParentElement().setAttribute(\"style\",\"top: 0px; left: 0px; width: 100%; height: 100%; cursor: default;\")}updateVideoStreamSize(){if(this.config.isFlagEnabled(ue.MatchViewportResolution))if((new Date).getTime()-this.lastTimeResized>300){const e=this.getVideoParentElement();if(!e)return;this.onMatchViewportResolutionCallback(e.clientWidth,e.clientHeight),this.lastTimeResized=(new Date).getTime()}else i.Log(i.GetStackTrace(),\"Resizing too often - skipping\",6),clearTimeout(this.resizeTimeoutHandle),this.resizeTimeoutHandle=window.setTimeout((()=>this.updateVideoStreamSize()),100)}}class lt{constructor(){this.toStreamerHandlers=new Map,this.fromStreamerHandlers=new Map,this.toStreamerMessages=new Map,this.fromStreamerMessages=new Map}populateDefaultProtocol(){this.toStreamerMessages.set(\"IFrameRequest\",{id:0,structure:[]}),this.toStreamerMessages.set(\"RequestQualityControl\",{id:1,structure:[]}),this.toStreamerMessages.set(\"FpsRequest\",{id:2,structure:[]}),this.toStreamerMessages.set(\"AverageBitrateRequest\",{id:3,structure:[]}),this.toStreamerMessages.set(\"StartStreaming\",{id:4,structure:[]}),this.toStreamerMessages.set(\"StopStreaming\",{id:5,structure:[]}),this.toStreamerMessages.set(\"LatencyTest\",{id:6,structure:[\"string\"]}),this.toStreamerMessages.set(\"RequestInitialSettings\",{id:7,structure:[]}),this.toStreamerMessages.set(\"TestEcho\",{id:8,structure:[]}),this.toStreamerMessages.set(\"DataChannelLatencyTest\",{id:9,structure:[]}),this.toStreamerMessages.set(\"UIInteraction\",{id:50,structure:[\"string\"]}),this.toStreamerMessages.set(\"Command\",{id:51,structure:[\"string\"]}),this.toStreamerMessages.set(\"KeyDown\",{id:60,structure:[\"uint8\",\"uint8\"]}),this.toStreamerMessages.set(\"KeyUp\",{id:61,structure:[\"uint8\"]}),this.toStreamerMessages.set(\"KeyPress\",{id:62,structure:[\"uint16\"]}),this.toStreamerMessages.set(\"MouseEnter\",{id:70,structure:[]}),this.toStreamerMessages.set(\"MouseLeave\",{id:71,structure:[]}),this.toStreamerMessages.set(\"MouseDown\",{id:72,structure:[\"uint8\",\"uint16\",\"uint16\"]}),this.toStreamerMessages.set(\"MouseUp\",{id:73,structure:[\"uint8\",\"uint16\",\"uint16\"]}),this.toStreamerMessages.set(\"MouseMove\",{id:74,structure:[\"uint16\",\"uint16\",\"int16\",\"int16\"]}),this.toStreamerMessages.set(\"MouseWheel\",{id:75,structure:[\"int16\",\"uint16\",\"uint16\"]}),this.toStreamerMessages.set(\"MouseDouble\",{id:76,structure:[\"uint8\",\"uint16\",\"uint16\"]}),this.toStreamerMessages.set(\"TouchStart\",{id:80,structure:[\"uint8\",\"uint16\",\"uint16\",\"uint8\",\"uint8\",\"uint8\"]}),this.toStreamerMessages.set(\"TouchEnd\",{id:81,structure:[\"uint8\",\"uint16\",\"uint16\",\"uint8\",\"uint8\",\"uint8\"]}),this.toStreamerMessages.set(\"TouchMove\",{id:82,structure:[\"uint8\",\"uint16\",\"uint16\",\"uint8\",\"uint8\",\"uint8\"]}),this.toStreamerMessages.set(\"GamepadConnected\",{id:93,structure:[]}),this.toStreamerMessages.set(\"GamepadButtonPressed\",{id:90,structure:[\"uint8\",\"uint8\",\"uint8\"]}),this.toStreamerMessages.set(\"GamepadButtonReleased\",{id:91,structure:[\"uint8\",\"uint8\",\"uint8\"]}),this.toStreamerMessages.set(\"GamepadAnalog\",{id:92,structure:[\"uint8\",\"uint8\",\"double\"]}),this.toStreamerMessages.set(\"GamepadDisconnected\",{id:94,structure:[\"uint8\"]}),this.fromStreamerMessages.set(0,\"QualityControlOwnership\"),this.fromStreamerMessages.set(1,\"Response\"),this.fromStreamerMessages.set(2,\"Command\"),this.fromStreamerMessages.set(3,\"FreezeFrame\"),this.fromStreamerMessages.set(4,\"UnfreezeFrame\"),this.fromStreamerMessages.set(5,\"VideoEncoderAvgQP\"),this.fromStreamerMessages.set(6,\"LatencyTest\"),this.fromStreamerMessages.set(7,\"InitialSettings\"),this.fromStreamerMessages.set(8,\"FileExtension\"),this.fromStreamerMessages.set(9,\"FileMimeType\"),this.fromStreamerMessages.set(10,\"FileContents\"),this.fromStreamerMessages.set(11,\"TestEcho\"),this.fromStreamerMessages.set(12,\"InputControlOwnership\"),this.fromStreamerMessages.set(13,\"GamepadResponse\"),this.fromStreamerMessages.set(14,\"DataChannelLatencyTest\"),this.fromStreamerMessages.set(255,\"Protocol\")}registerMessageHandler(e,t,s){switch(e){case Ge.ToStreamer:this.toStreamerHandlers.set(t,s);break;case Ge.FromStreamer:this.fromStreamerHandlers.set(t,s);break;default:i.Log(i.GetStackTrace(),`Unknown message direction ${e}`)}}}!function(e){e[e.ToStreamer=0]=\"ToStreamer\",e[e.FromStreamer=1]=\"FromStreamer\"}(Ge||(Ge={}));class dt{constructor(){this.responseEventListeners=new Map}addResponseEventListener(e,t){this.responseEventListeners.set(e,t)}removeResponseEventListener(e){this.responseEventListeners.delete(e)}onResponse(e){i.Log(i.GetStackTrace(),\"DataChannelReceiveMessageType.Response\",6);const t=new TextDecoder(\"utf-16\").decode(e.slice(1));i.Log(i.GetStackTrace(),t,6),this.responseEventListeners.forEach((e=>{e(t)}))}}class ct{constructor(e,t){this.dataChannelSender=e,this.toStreamerMessagesMapProvider=t}sendMessageToStreamer(e,t){void 0===t&&(t=[]);const s=this.toStreamerMessagesMapProvider.toStreamerMessages.get(e);if(void 0===s)return void i.Error(i.GetStackTrace(),`Attempted to send a message to the streamer with message type: ${e}, but the frontend hasn't been configured to send such a message. Check you've added the message type in your cpp`);if(s.structure&&t&&s.structure.length!==t.length)return void i.Error(i.GetStackTrace(),`Provided message data doesn't match expected layout. Expected [ ${s.structure.map((e=>{switch(e){case\"uint8\":case\"uint16\":case\"int16\":case\"float\":case\"double\":return\"number\";case\"string\":return\"string\"}})).toString()} ] but received [ ${t.map((e=>typeof e)).toString()} ]`);let n=0;const r=new TextEncoder;t.forEach(((e,t)=>{switch(s.structure[t]){case\"uint8\":n+=1;break;case\"uint16\":case\"int16\":n+=2;break;case\"float\":n+=4;break;case\"double\":n+=8;break;case\"string\":n+=2,n+=2*r.encode(e).length}}));const a=new DataView(new ArrayBuffer(n+1));a.setUint8(0,s.id);let o=1;t.forEach(((e,t)=>{switch(s.structure[t]){case\"uint8\":a.setUint8(o,e),o+=1;break;case\"uint16\":a.setUint16(o,e,!0),o+=2;break;case\"int16\":a.setInt16(o,e,!0),o+=2;break;case\"float\":a.setFloat32(o,e,!0),o+=4;break;case\"double\":a.setFloat64(o,e,!0),o+=8;break;case\"string\":a.setUint16(o,e.length,!0),o+=2;for(let t=0;t<e.length;t++)a.setUint16(o,e.charCodeAt(t),!0),o+=2}})),this.dataChannelSender.canSend()?this.dataChannelSender.sendData(a.buffer):i.Info(i.GetStackTrace(),`Data channel cannot send yet, skipping sending message: ${e} - ${new Uint8Array(a.buffer)}`)}}class ht{constructor(e){this.sendMessageController=e}SendRequestQualityControl(){this.sendMessageController.sendMessageToStreamer(\"RequestQualityControl\")}SendMaxFpsRequest(){this.sendMessageController.sendMessageToStreamer(\"FpsRequest\")}SendAverageBitrateRequest(){this.sendMessageController.sendMessageToStreamer(\"AverageBitrateRequest\")}SendStartStreaming(){this.sendMessageController.sendMessageToStreamer(\"StartStreaming\")}SendStopStreaming(){this.sendMessageController.sendMessageToStreamer(\"StopStreaming\")}SendRequestInitialSettings(){this.sendMessageController.sendMessageToStreamer(\"RequestInitialSettings\")}}class ut{constructor(e){this.dataChannelProvider=e}canSend(){return void 0!==this.dataChannelProvider.getDataChannelInstance().dataChannel&&\"open\"==this.dataChannelProvider.getDataChannelInstance().dataChannel.readyState}sendData(e){const t=this.dataChannelProvider.getDataChannelInstance();\"open\"==t.dataChannel.readyState?(t.dataChannel.send(e),i.Log(i.GetStackTrace(),`Message Sent: ${new Uint8Array(e)}`,6),this.resetAfkWarningTimerOnDataSend()):i.Error(i.GetStackTrace(),`Message Failed: ${new Uint8Array(e)}`)}resetAfkWarningTimerOnDataSend(){}}class gt{constructor(e){this.videoElementProvider=e,this.normalizeAndQuantizeUnsignedFunc=()=>{throw new Error(\"Normalize and quantize unsigned, method not implemented.\")},this.normalizeAndQuantizeSignedFunc=()=>{throw new Error(\"Normalize and unquantize signed, method not implemented.\")},this.denormalizeAndUnquantizeUnsignedFunc=()=>{throw new Error(\"Denormalize and unquantize unsigned, method not implemented.\")}}normalizeAndQuantizeUnsigned(e,t){return this.normalizeAndQuantizeUnsignedFunc(e,t)}unquantizeAndDenormalizeUnsigned(e,t){return this.denormalizeAndUnquantizeUnsignedFunc(e,t)}normalizeAndQuantizeSigned(e,t){return this.normalizeAndQuantizeSignedFunc(e,t)}setupNormalizeAndQuantize(){if(this.videoElementParent=this.videoElementProvider.getVideoParentElement(),this.videoElement=this.videoElementProvider.getVideoElement(),this.videoElementParent&&this.videoElement){const e=this.videoElementParent.clientWidth||1,t=this.videoElementParent.clientHeight||1,s=this.videoElement.videoWidth||1,n=t/e,r=(this.videoElement.videoHeight||1)/s;n>r?(i.Log(i.GetStackTrace(),\"Setup Normalize and Quantize for playerAspectRatio > videoAspectRatio\",6),this.ratio=n/r,this.normalizeAndQuantizeUnsignedFunc=(e,t)=>this.normalizeAndQuantizeUnsignedPlayerBigger(e,t),this.normalizeAndQuantizeSignedFunc=(e,t)=>this.normalizeAndQuantizeSignedPlayerBigger(e,t),this.denormalizeAndUnquantizeUnsignedFunc=(e,t)=>this.denormalizeAndUnquantizeUnsignedPlayerBigger(e,t)):(i.Log(i.GetStackTrace(),\"Setup Normalize and Quantize for playerAspectRatio <= videoAspectRatio\",6),this.ratio=r/n,this.normalizeAndQuantizeUnsignedFunc=(e,t)=>this.normalizeAndQuantizeUnsignedPlayerSmaller(e,t),this.normalizeAndQuantizeSignedFunc=(e,t)=>this.normalizeAndQuantizeSignedPlayerSmaller(e,t),this.denormalizeAndUnquantizeUnsignedFunc=(e,t)=>this.denormalizeAndUnquantizeUnsignedPlayerSmaller(e,t))}}normalizeAndQuantizeUnsignedPlayerBigger(e,t){const s=e/this.videoElementParent.clientWidth,n=this.ratio*(t/this.videoElementParent.clientHeight-.5)+.5;return s<0||s>1||n<0||n>1?new mt(!1,65535,65535):new mt(!0,65536*s,65536*n)}denormalizeAndUnquantizeUnsignedPlayerBigger(e,t){const s=e/65536,n=(t/65536-.5)/this.ratio+.5;return new pt(s*this.videoElementParent.clientWidth,n*this.videoElementParent.clientHeight)}normalizeAndQuantizeSignedPlayerBigger(e,t){const s=e/(.5*this.videoElementParent.clientWidth),n=this.ratio*t/(.5*this.videoElementParent.clientHeight);return new St(32767*s,32767*n)}normalizeAndQuantizeUnsignedPlayerSmaller(e,t){const s=this.ratio*(e/this.videoElementParent.clientWidth-.5)+.5,n=t/this.videoElementParent.clientHeight;return s<0||s>1||n<0||n>1?new mt(!1,65535,65535):new mt(!0,65536*s,65536*n)}denormalizeAndUnquantizeUnsignedPlayerSmaller(e,t){const s=(e/65536-.5)/this.ratio+.5,n=t/65536;return new pt(s*this.videoElementParent.clientWidth,n*this.videoElementParent.clientHeight)}normalizeAndQuantizeSignedPlayerSmaller(e,t){const s=this.ratio*e/(.5*this.videoElementParent.clientWidth),n=t/(.5*this.videoElementParent.clientHeight);return new St(32767*s,32767*n)}}class mt{constructor(e,t,s){this.inRange=e,this.x=t,this.y=s}}class pt{constructor(e,t){this.x=e,this.y=t}}class St{constructor(e,t){this.x=e,this.y=t}}class vt{constructor(e,t){this.shouldShowPlayOverlay=!0,this.autoJoinTimer=void 0,this.config=e,this.pixelStreaming=t,this.responseController=new dt,this.file=new Qe,this.sdpConstraints={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this.afkController=new ye(this.config,this.pixelStreaming,this.onAfkTriggered.bind(this)),this.afkController.onAFKTimedOutCallback=()=>{this.closeSignalingServer(\"You have been disconnected due to inactivity\")},this.freezeFrameController=new y(this.pixelStreaming.videoElementParent),this.videoPlayer=new ot(this.pixelStreaming.videoElementParent,this.config),this.videoPlayer.onVideoInitialized=()=>this.handleVideoInitialized(),this.videoPlayer.onMatchViewportResolutionCallback=(e,t)=>{const s={\"Resolution.Width\":e,\"Resolution.Height\":t};this.streamMessageController.toStreamerHandlers.get(\"Command\")([JSON.stringify(s)])},this.videoPlayer.onResizePlayerCallback=()=>{this.setUpMouseAndFreezeFrame()},this.streamController=new T(this.videoPlayer),this.coordinateConverter=new gt(this.videoPlayer),this.sendrecvDataChannelController=new Me,this.recvDataChannelController=new Me,this.registerDataChannelEventEmitters(this.sendrecvDataChannelController),this.registerDataChannelEventEmitters(this.recvDataChannelController),this.dataChannelSender=new ut(this.sendrecvDataChannelController),this.dataChannelSender.resetAfkWarningTimerOnDataSend=()=>this.afkController.resetAfkWarningTimer(),this.streamMessageController=new lt,this.webSocketController=new f,this.webSocketController.onConfig=e=>this.handleOnConfigMessage(e),this.webSocketController.onStreamerList=e=>this.handleStreamerListMessage(e),this.webSocketController.onStreamerIDChanged=e=>this.handleStreamerIDChangedMessage(e),this.webSocketController.onPlayerCount=e=>{this.pixelStreaming._onPlayerCount(e.count)},this.webSocketController.onOpen.addEventListener(\"open\",(()=>{this.config.isFlagEnabled(ue.BrowserSendOffer)||this.webSocketController.requestStreamerList()})),this.webSocketController.onClose.addEventListener(\"close\",(e=>{const t=this.shouldReconnect&&1001!=e.detail.code&&this.config.getNumericSettingValue(me.MaxReconnectAttempts)>0,s=this.disconnectMessage?this.disconnectMessage:e.detail.reason;this.pixelStreaming._onDisconnect(s,!t&&!this.isReconnecting),this.afkController.stopAfkWarningTimer(),this.statsTimerHandle&&void 0!==this.statsTimerHandle&&window.clearInterval(this.statsTimerHandle),this.setVideoEncoderAvgQP(0),this.setTouchInputEnabled(!1),this.setMouseInputEnabled(!1),this.setKeyboardInputEnabled(!1),this.setGamePadInputEnabled(!1),t&&setTimeout((()=>{this.isReconnecting=!0,this.reconnectAttempt++,this.tryReconnect(e.detail.reason)}),2e3)})),this.sendMessageController=new ct(this.dataChannelSender,this.streamMessageController),this.toStreamerMessagesController=new ht(this.sendMessageController),this.registerMessageHandlers(),this.streamMessageController.populateDefaultProtocol(),this.inputClassesFactory=new it(this.streamMessageController,this.videoPlayer,this.coordinateConverter),this.isUsingSFU=!1,this.isQualityController=!1,this.preferredCodec=\"\",this.shouldReconnect=!0,this.isReconnecting=!1,this.reconnectAttempt=0,this.config._addOnOptionSettingChangedListener(Ce.StreamerId,(e=>{\"\"!==e&&(this.peerConnectionController.peerConnection.close(),this.peerConnectionController.createPeerConnection(this.peerConfig,this.preferredCodec),this.subscribedStream=e,this.webSocketController.sendSubscribe(e))})),this.setVideoEncoderAvgQP(-1),this.signallingUrlBuilder=()=>{let e=this.config.getTextSettingValue(Se.SignallingServerUrl);return this.config.isFlagEnabled(ue.BrowserSendOffer)&&(e+=\"?\"+ue.BrowserSendOffer+\"=true\"),e}}requestUnquantizedAndDenormalizeUnsigned(e,t){return this.coordinateConverter.unquantizeAndDenormalizeUnsigned(e,t)}handleOnMessage(e){const t=new Uint8Array(e.data);i.Log(i.GetStackTrace(),\"Message incoming:\"+t,6);const s=this.streamMessageController.fromStreamerMessages.get(t[0]);this.streamMessageController.fromStreamerHandlers.get(s)(e.data)}registerMessageHandlers(){this.streamMessageController.registerMessageHandler(Ge.FromStreamer,\"QualityControlOwnership\",(e=>this.onQualityControlOwnership(e))),this.streamMessageController.registerMessageHandler(Ge.FromStreamer,\"Response\",(e=>this.responseController.onResponse(e))),this.streamMessageController.registerMessageHandler(Ge.FromStreamer,\"Command\",(e=>{this.onCommand(e)})),this.streamMessageController.registerMessageHandler(Ge.FromStreamer,\"FreezeFrame\",(e=>this.onFreezeFrameMessage(e))),this.streamMessageController.registerMessageHandler(Ge.FromStreamer,\"UnfreezeFrame\",(()=>this.invalidateFreezeFrameAndEnableVideo())),this.streamMessageController.registerMessageHandler(Ge.FromStreamer,\"VideoEncoderAvgQP\",(e=>this.handleVideoEncoderAvgQP(e))),this.streamMessageController.registerMessageHandler(Ge.FromStreamer,\"LatencyTest\",(e=>this.handleLatencyTestResult(e))),this.streamMessageController.registerMessageHandler(Ge.FromStreamer,\"DataChannelLatencyTest\",(e=>this.handleDataChannelLatencyTestResponse(e))),this.streamMessageController.registerMessageHandler(Ge.FromStreamer,\"InitialSettings\",(e=>this.handleInitialSettings(e))),this.streamMessageController.registerMessageHandler(Ge.FromStreamer,\"FileExtension\",(e=>this.onFileExtension(e))),this.streamMessageController.registerMessageHandler(Ge.FromStreamer,\"FileMimeType\",(e=>this.onFileMimeType(e))),this.streamMessageController.registerMessageHandler(Ge.FromStreamer,\"FileContents\",(e=>this.onFileContents(e))),this.streamMessageController.registerMessageHandler(Ge.FromStreamer,\"TestEcho\",(()=>{})),this.streamMessageController.registerMessageHandler(Ge.FromStreamer,\"InputControlOwnership\",(e=>this.onInputControlOwnership(e))),this.streamMessageController.registerMessageHandler(Ge.FromStreamer,\"GamepadResponse\",(e=>this.onGamepadResponse(e))),this.streamMessageController.registerMessageHandler(Ge.FromStreamer,\"Protocol\",(e=>this.onProtocolMessage(e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"IFrameRequest\",(()=>this.sendMessageController.sendMessageToStreamer(\"IFrameRequest\"))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"RequestQualityControl\",(()=>this.sendMessageController.sendMessageToStreamer(\"RequestQualityControl\"))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"FpsRequest\",(()=>this.sendMessageController.sendMessageToStreamer(\"FpsRequest\"))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"AverageBitrateRequest\",(()=>this.sendMessageController.sendMessageToStreamer(\"AverageBitrateRequest\"))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"StartStreaming\",(()=>this.sendMessageController.sendMessageToStreamer(\"StartStreaming\"))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"StopStreaming\",(()=>this.sendMessageController.sendMessageToStreamer(\"StopStreaming\"))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"LatencyTest\",(e=>this.sendMessageController.sendMessageToStreamer(\"LatencyTest\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"RequestInitialSettings\",(()=>this.sendMessageController.sendMessageToStreamer(\"RequestInitialSettings\"))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"TestEcho\",(()=>{})),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"UIInteraction\",(e=>this.sendMessageController.sendMessageToStreamer(\"UIInteraction\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"Command\",(e=>this.sendMessageController.sendMessageToStreamer(\"Command\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"TextboxEntry\",(e=>this.sendMessageController.sendMessageToStreamer(\"TextboxEntry\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"KeyDown\",(e=>this.sendMessageController.sendMessageToStreamer(\"KeyDown\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"KeyUp\",(e=>this.sendMessageController.sendMessageToStreamer(\"KeyUp\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"KeyPress\",(e=>this.sendMessageController.sendMessageToStreamer(\"KeyPress\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"MouseEnter\",(e=>this.sendMessageController.sendMessageToStreamer(\"MouseEnter\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"MouseLeave\",(e=>this.sendMessageController.sendMessageToStreamer(\"MouseLeave\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"MouseDown\",(e=>this.sendMessageController.sendMessageToStreamer(\"MouseDown\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"MouseUp\",(e=>this.sendMessageController.sendMessageToStreamer(\"MouseUp\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"MouseMove\",(e=>this.sendMessageController.sendMessageToStreamer(\"MouseMove\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"MouseWheel\",(e=>this.sendMessageController.sendMessageToStreamer(\"MouseWheel\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"MouseDouble\",(e=>this.sendMessageController.sendMessageToStreamer(\"MouseDouble\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"TouchStart\",(e=>this.sendMessageController.sendMessageToStreamer(\"TouchStart\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"TouchEnd\",(e=>this.sendMessageController.sendMessageToStreamer(\"TouchEnd\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"TouchMove\",(e=>this.sendMessageController.sendMessageToStreamer(\"TouchMove\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"GamepadConnected\",(()=>this.sendMessageController.sendMessageToStreamer(\"GamepadConnected\"))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"GamepadButtonPressed\",(e=>this.sendMessageController.sendMessageToStreamer(\"GamepadButtonPressed\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"GamepadButtonReleased\",(e=>this.sendMessageController.sendMessageToStreamer(\"GamepadButtonReleased\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"GamepadAnalog\",(e=>this.sendMessageController.sendMessageToStreamer(\"GamepadAnalog\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"GamepadDisconnected\",(e=>this.sendMessageController.sendMessageToStreamer(\"GamepadDisconnected\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"XREyeViews\",(e=>this.sendMessageController.sendMessageToStreamer(\"XREyeViews\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"XRHMDTransform\",(e=>this.sendMessageController.sendMessageToStreamer(\"XRHMDTransform\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"XRControllerTransform\",(e=>this.sendMessageController.sendMessageToStreamer(\"XRControllerTransform\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"XRSystem\",(e=>this.sendMessageController.sendMessageToStreamer(\"XRSystem\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"XRButtonTouched\",(e=>this.sendMessageController.sendMessageToStreamer(\"XRButtonTouched\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"XRButtonTouchReleased\",(e=>this.sendMessageController.sendMessageToStreamer(\"XRButtonTouchReleased\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"XRButtonPressed\",(e=>this.sendMessageController.sendMessageToStreamer(\"XRButtonPressed\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"XRButtonReleased\",(e=>this.sendMessageController.sendMessageToStreamer(\"XRButtonReleased\",e))),this.streamMessageController.registerMessageHandler(Ge.ToStreamer,\"XRAnalog\",(e=>this.sendMessageController.sendMessageToStreamer(\"XRAnalog\",e)))}onCommand(e){i.Log(i.GetStackTrace(),\"DataChannelReceiveMessageType.Command\",6);const t=new TextDecoder(\"utf-16\").decode(e.slice(1));i.Log(i.GetStackTrace(),\"Data Channel Command: \"+t,6);const s=JSON.parse(t);\"onScreenKeyboard\"===s.command&&this.pixelStreaming._activateOnScreenKeyboard(s)}onProtocolMessage(e){try{const t=new TextDecoder(\"utf-16\").decode(e.slice(1)),s=JSON.parse(t);Object.prototype.hasOwnProperty.call(s,\"Direction\")||i.Error(i.GetStackTrace(),\"Malformed protocol received. Ensure the protocol message contains a direction\");const n=s.Direction;delete s.Direction,i.Log(i.GetStackTrace(),`Received new ${n==Ge.FromStreamer?\"FromStreamer\":\"ToStreamer\"} protocol. Updating existing protocol...`),Object.keys(s).forEach((e=>{const t=s[e];switch(n){case Ge.ToStreamer:if(!Object.prototype.hasOwnProperty.call(t,\"id\"))return void i.Error(i.GetStackTrace(),`ToStreamer->${e} protocol definition was malformed as it didn't contain at least an id\\n\\n Definition was: ${JSON.stringify(t,null,2)}`);if(\"UIInteraction\"===e||\"Command\"===e||\"LatencyTest\"===e)return;this.streamMessageController.toStreamerHandlers.get(e)?this.streamMessageController.toStreamerMessages.set(e,t):i.Error(i.GetStackTrace(),`There was no registered handler for \"${e}\" - try adding one using registerMessageHandler(MessageDirection.ToStreamer, \"${e}\", myHandler)`);break;case Ge.FromStreamer:if(!Object.prototype.hasOwnProperty.call(t,\"id\"))return void i.Error(i.GetStackTrace(),`FromStreamer->${e} protocol definition was malformed as it didn't contain at least an id\\n\\n Definition was: ${JSON.stringify(t,null,2)}`);this.streamMessageController.fromStreamerHandlers.get(e)?this.streamMessageController.fromStreamerMessages.set(t.id,e):i.Error(i.GetStackTrace(),`There was no registered handler for \"${t}\" - try adding one using registerMessageHandler(MessageDirection.FromStreamer, \"${e}\", myHandler)`);break;default:i.Error(i.GetStackTrace(),`Unknown direction: ${n}`)}})),this.toStreamerMessagesController.SendRequestInitialSettings(),this.toStreamerMessagesController.SendRequestQualityControl()}catch(e){i.Log(i.GetStackTrace(),e)}}onInputControlOwnership(e){const t=new Uint8Array(e);i.Log(i.GetStackTrace(),\"DataChannelReceiveMessageType.InputControlOwnership\",6);const s=new Boolean(t[1]).valueOf();i.Log(i.GetStackTrace(),`Received input controller message - will your input control the stream: ${s}`),this.pixelStreaming._onInputControlOwnership(s)}onGamepadResponse(e){const t=new TextDecoder(\"utf-16\").decode(e.slice(1)),s=JSON.parse(t);this.gamePadController.onGamepadResponseReceived(s.controllerId)}onAfkTriggered(){this.afkController.onAfkClick(),this.videoPlayer.isPaused()&&this.videoPlayer.hasVideoSource()&&this.playStream()}setAfkEnabled(e){e?this.onAfkTriggered():this.afkController.stopAfkWarningTimer()}tryReconnect(e){this.webSocketController?(this.isReconnecting=!0,this.webSocketController.webSocket&&this.webSocketController.webSocket.readyState!=WebSocket.CLOSED?(this.closeSignalingServer(`${e} Restarting stream...`),setTimeout((()=>{this.tryReconnect(e)}),3e3)):(this.pixelStreaming._onWebRtcAutoConnect(),this.connectToSignallingServer())):i.Log(i.GetStackTrace(),\"The Web Socket Controller does not exist so this will not work right now.\")}loadFreezeFrameOrShowPlayOverlay(){this.pixelStreaming.dispatchEvent(new j({shouldShowPlayOverlay:this.shouldShowPlayOverlay,isValid:this.freezeFrameController.valid,jpegData:this.freezeFrameController.jpeg})),!0===this.shouldShowPlayOverlay?(i.Log(i.GetStackTrace(),\"showing play overlay\"),this.resizePlayerStyle()):(i.Log(i.GetStackTrace(),\"showing freeze frame\"),this.freezeFrameController.showFreezeFrame()),setTimeout((()=>{this.videoPlayer.setVideoEnabled(!1)}),this.freezeFrameController.freezeFrameDelay)}onFreezeFrameMessage(e){i.Log(i.GetStackTrace(),\"DataChannelReceiveMessageType.FreezeFrame\",6);const t=new Uint8Array(e);this.freezeFrameController.processFreezeFrameMessage(t,(()=>this.loadFreezeFrameOrShowPlayOverlay()))}invalidateFreezeFrameAndEnableVideo(){i.Log(i.GetStackTrace(),\"DataChannelReceiveMessageType.FreezeFrame\",6),setTimeout((()=>{this.pixelStreaming.dispatchEvent(new J),this.freezeFrameController.hideFreezeFrame()}),this.freezeFrameController.freezeFrameDelay),this.videoPlayer.getVideoElement()&&this.videoPlayer.setVideoEnabled(!0)}onFileExtension(e){const t=new Uint8Array(e);Ke.setExtensionFromBytes(t,this.file)}onFileMimeType(e){const t=new Uint8Array(e);Ke.setMimeTypeFromBytes(t,this.file)}onFileContents(e){const t=new Uint8Array(e);Ke.setContentsFromBytes(t,this.file)}playStream(){if(!this.videoPlayer.getVideoElement()){const e=\"Could not play video stream because the video player was not initialized correctly.\";return this.pixelStreaming.dispatchEvent(new q({message:e})),i.Error(i.GetStackTrace(),e),void this.closeSignalingServer(\"Stream not initialized correctly\")}if(this.videoPlayer.hasVideoSource()){if(this.setTouchInputEnabled(this.config.isFlagEnabled(ue.TouchInput)),this.pixelStreaming.dispatchEvent(new $),this.streamController.audioElement.srcObject){const e=this.config.isFlagEnabled(ue.StartVideoMuted);this.streamController.audioElement.muted=e,e?this.playVideo():this.streamController.audioElement.play().then((()=>{this.playVideo()})).catch((e=>{i.Log(i.GetStackTrace(),e),i.Log(i.GetStackTrace(),\"Browser does not support autoplaying video without interaction - to resolve this we are going to show the play button overlay.\"),this.pixelStreaming.dispatchEvent(new X({reason:e}))}))}else this.playVideo();this.shouldShowPlayOverlay=!1,this.freezeFrameController.showFreezeFrame()}else i.Warning(i.GetStackTrace(),\"Cannot play stream, the video element has no srcObject to play.\")}playVideo(){this.videoPlayer.play().catch((e=>{this.streamController.audioElement.srcObject&&this.streamController.audioElement.pause(),i.Log(i.GetStackTrace(),e),i.Log(i.GetStackTrace(),\"Browser does not support autoplaying video without interaction - to resolve this we are going to show the play button overlay.\"),this.pixelStreaming.dispatchEvent(new X({reason:e}))}))}autoPlayVideoOrSetUpPlayOverlay(){this.config.isFlagEnabled(ue.AutoPlayVideo)&&this.playStream(),this.resizePlayerStyle()}connectToSignallingServer(){this.locallyClosed=!1,this.shouldReconnect=!0,this.disconnectMessage=null;const e=this.signallingUrlBuilder();this.webSocketController.connect(e)}startSession(e){if(this.peerConfig=e,this.config.isFlagEnabled(ue.ForceTURN)&&!this.checkTurnServerAvailability(e))return i.Info(i.GetStackTrace(),\"No turn server was found in the Peer Connection Options. TURN cannot be forced, closing connection. Please use STUN instead\"),void this.closeSignalingServer(\"TURN cannot be forced, closing connection. Please use STUN instead.\");this.peerConnectionController=new ze(this.peerConfig,this.config,this.preferredCodec),this.peerConnectionController.onVideoStats=e=>this.handleVideoStats(e),this.peerConnectionController.onSendWebRTCOffer=e=>this.handleSendWebRTCOffer(e),this.peerConnectionController.onSendWebRTCAnswer=e=>this.handleSendWebRTCAnswer(e),this.peerConnectionController.onPeerIceCandidate=e=>this.handleSendIceCandidate(e),this.peerConnectionController.onDataChannel=e=>this.handleDataChannel(e),this.peerConnectionController.showTextOverlayConnecting=()=>this.pixelStreaming._onWebRtcConnecting(),this.peerConnectionController.showTextOverlaySetupFailure=()=>this.pixelStreaming._onWebRtcFailed();let t=!1;this.peerConnectionController.onIceConnectionStateChange=()=>{!t&&[\"connected\",\"completed\"].includes(this.peerConnectionController.peerConnection.iceConnectionState)&&(this.pixelStreaming._onWebRtcConnected(),t=!0)},this.peerConnectionController.onTrack=e=>this.streamController.handleOnTrack(e),this.config.isFlagEnabled(ue.BrowserSendOffer)&&(this.sendrecvDataChannelController.createDataChannel(this.peerConnectionController.peerConnection,\"cirrus\",this.datachannelOptions),this.sendrecvDataChannelController.handleOnMessage=e=>this.handleOnMessage(e),this.peerConnectionController.createOffer(this.sdpConstraints,this.config))}checkTurnServerAvailability(e){if(!e.iceServers)return i.Info(i.GetStackTrace(),\"A turn sever was not found\"),!1;for(const t of e.iceServers)for(const e of t.urls)if(e.includes(\"turn\"))return i.Log(i.GetStackTrace(),`A turn sever was found at ${e}`),!0;return i.Info(i.GetStackTrace(),\"A turn sever was not found\"),!1}handleOnConfigMessage(e){this.resizePlayerStyle(),this.startSession(e.peerConnectionOptions),this.webSocketController.onWebRtcAnswer=e=>this.handleWebRtcAnswer(e),this.webSocketController.onWebRtcOffer=e=>this.handleWebRtcOffer(e),this.webSocketController.onWebRtcPeerDataChannels=e=>this.handleWebRtcSFUPeerDatachannels(e),this.webSocketController.onIceCandidate=e=>this.handleIceCandidate(e)}handleStreamerListMessage(e){i.Log(i.GetStackTrace(),`Got streamer list ${e.ids}`,6);let t=null;var s=this.config.getSettingOption(Ce.StreamerId);s.selected.toString().trim()&&(t=s.selected);const n=[...e.ids];n.unshift(\"\"),this.config.setOptionSettingOptions(Ce.StreamerId,n);let r=null;const a=this.config.isFlagEnabled(ue.WaitForStreamer),o=this.config.getNumericSettingValue(me.MaxReconnectAttempts),l=this.config.getNumericSettingValue(me.StreamerAutoJoinInterval),d=this.config.useUrlParams,c=new URLSearchParams(window.location.search);d&&c.has(Ce.StreamerId)?t=c.get(Ce.StreamerId):this.subscribedStream&&(t=this.subscribedStream),t&&e.ids.includes(t)?r=t:t&&a||1!=e.ids.length||(r=e.ids[0]),r?(this.isReconnecting=!1,this.reconnectAttempt=0,this.config.setOptionSettingValue(Ce.StreamerId,r)):a&&(this.reconnectAttempt<o?(this.isReconnecting=!0,this.reconnectAttempt++,setTimeout((()=>{this.webSocketController.requestStreamerList()}),l)):(this.reconnectAttempt=0,this.isReconnecting=!1,this.shouldReconnect=!1)),this.pixelStreaming.dispatchEvent(new Z({messageStreamerList:e,autoSelectedStreamerId:r,wantedStreamerId:t}))}handleStreamerIDChangedMessage(e){const t=e.newID;var s=this.config.getSettingOption(Ce.StreamerId),n=s.onChange;s.onChange=()=>{};for(var r=s.options,i=0;i<r.length;++i)if(r[i]==this.subscribedStream){r[i]=t;break}s.options=r,s.selected=t,s.onChange=n,this.subscribedStream=e.newID,this.pixelStreaming.dispatchEvent(new ee({newID:t}))}handleWebRtcAnswer(e){i.Log(i.GetStackTrace(),`Got answer sdp ${e.sdp}`,6);const t={sdp:e.sdp,type:\"answer\"};this.peerConnectionController.receiveAnswer(t),this.handlePostWebrtcNegotiation()}handleWebRtcOffer(e){i.Log(i.GetStackTrace(),`Got offer sdp ${e.sdp}`,6),this.isUsingSFU=!!e.sfu&&e.sfu,this.isUsingSFU&&(this.peerConnectionController.preferredCodec=\"\");const t={sdp:e.sdp,type:\"offer\"};this.peerConnectionController.receiveOffer(t,this.config),this.handlePostWebrtcNegotiation()}handleWebRtcSFUPeerDatachannels(e){const t={ordered:!0,negotiated:!0,id:e.sendStreamId},s=e.sendStreamId!=e.recvStreamId;if(this.sendrecvDataChannelController.createDataChannel(this.peerConnectionController.peerConnection,s?\"send-datachannel\":\"datachannel\",t),s){const t={ordered:!0,negotiated:!0,id:e.recvStreamId};this.recvDataChannelController.createDataChannel(this.peerConnectionController.peerConnection,\"recv-datachannel\",t),this.recvDataChannelController.handleOnOpen=()=>this.webSocketController.sendSFURecvDataChannelReady(),this.recvDataChannelController.handleOnMessage=e=>this.handleOnMessage(e)}else this.sendrecvDataChannelController.handleOnMessage=e=>this.handleOnMessage(e)}handlePostWebrtcNegotiation(){this.afkController.startAfkWarningTimer(),this.pixelStreaming._onWebRtcSdp(),this.statsTimerHandle&&void 0!==this.statsTimerHandle&&window.clearInterval(this.statsTimerHandle),this.statsTimerHandle=window.setInterval((()=>this.getStats()),1e3),this.setMouseInputEnabled(this.config.isFlagEnabled(ue.MouseInput)),this.setKeyboardInputEnabled(this.config.isFlagEnabled(ue.KeyboardInput)),this.setGamePadInputEnabled(this.config.isFlagEnabled(ue.GamepadInput))}handleIceCandidate(e){i.Log(i.GetStackTrace(),\"Web RTC Controller: onWebRtcIce\",6);const t=new RTCIceCandidate(e);this.peerConnectionController.handleOnIce(t)}handleSendIceCandidate(e){i.Log(i.GetStackTrace(),\"OnIceCandidate\",6),e.candidate&&e.candidate.candidate&&this.webSocketController.sendIceCandidate(e.candidate)}handleDataChannel(e){i.Log(i.GetStackTrace(),\"Data channel created for us by browser as we are a receiving peer.\",6),this.sendrecvDataChannelController.dataChannel=e.channel,this.sendrecvDataChannelController.setupDataChannel(),this.sendrecvDataChannelController.handleOnMessage=e=>this.handleOnMessage(e)}handleSendWebRTCOffer(e){i.Log(i.GetStackTrace(),\"Sending the offer to the Server\",6);const t={minBitrateBps:1e3*this.config.getNumericSettingValue(me.WebRTCMinBitrate),maxBitrateBps:1e3*this.config.getNumericSettingValue(me.WebRTCMaxBitrate)};this.webSocketController.sendWebRtcOffer(e,t)}handleSendWebRTCAnswer(e){i.Log(i.GetStackTrace(),\"Sending the answer to the Server\",6);const t={minBitrateBps:1e3*this.config.getNumericSettingValue(me.WebRTCMinBitrate),maxBitrateBps:1e3*this.config.getNumericSettingValue(me.WebRTCMaxBitrate)};this.webSocketController.sendWebRtcAnswer(e,t),this.isUsingSFU&&this.webSocketController.sendWebRtcDatachannelRequest()}setUpMouseAndFreezeFrame(){this.videoElementParentClientRect=this.videoPlayer.getVideoParentElement().getBoundingClientRect(),this.coordinateConverter.setupNormalizeAndQuantize(),this.freezeFrameController.freezeFrame.resize()}closeSignalingServer(e){var t;this.locallyClosed=!0,this.shouldReconnect=!1,this.disconnectMessage=e,null===(t=this.webSocketController)||void 0===t||t.close()}closePeerConnection(){var e;null===(e=this.peerConnectionController)||void 0===e||e.close()}close(){this.closeSignalingServer(\"\"),this.closePeerConnection()}getStats(){this.peerConnectionController.generateStats()}sendLatencyTest(){this.latencyStartTime=Date.now(),this.streamMessageController.toStreamerHandlers.get(\"LatencyTest\")([JSON.stringify({StartTime:this.latencyStartTime})])}sendDataChannelLatencyTest(e){this.streamMessageController.toStreamerHandlers.get(\"DataChannelLatencyTest\")([JSON.stringify(e)])}sendEncoderMinQP(e){i.Log(i.GetStackTrace(),`MinQP=${e}\\n`,6),null!=e&&this.streamMessageController.toStreamerHandlers.get(\"Command\")([JSON.stringify({\"Encoder.MinQP\":e})])}sendEncoderMaxQP(e){i.Log(i.GetStackTrace(),`MaxQP=${e}\\n`,6),null!=e&&this.streamMessageController.toStreamerHandlers.get(\"Command\")([JSON.stringify({\"Encoder.MaxQP\":e})])}sendWebRTCMinBitrate(e){i.Log(i.GetStackTrace(),`WebRTC Min Bitrate=${e}`,6),null!=e&&this.streamMessageController.toStreamerHandlers.get(\"Command\")([JSON.stringify({\"WebRTC.MinBitrate\":e})])}sendWebRTCMaxBitrate(e){i.Log(i.GetStackTrace(),`WebRTC Max Bitrate=${e}`,6),null!=e&&this.streamMessageController.toStreamerHandlers.get(\"Command\")([JSON.stringify({\"WebRTC.MaxBitrate\":e})])}sendWebRTCFps(e){i.Log(i.GetStackTrace(),`WebRTC FPS=${e}`,6),null!=e&&(this.streamMessageController.toStreamerHandlers.get(\"Command\")([JSON.stringify({\"WebRTC.Fps\":e})]),this.streamMessageController.toStreamerHandlers.get(\"Command\")([JSON.stringify({\"WebRTC.MaxFps\":e})]))}sendShowFps(){i.Log(i.GetStackTrace(),\"---- Sending show stat to UE ----\",6),this.streamMessageController.toStreamerHandlers.get(\"Command\")([JSON.stringify({\"stat.fps\":\"\"})])}sendIframeRequest(){i.Log(i.GetStackTrace(),\"---- Sending Request for an IFrame ----\",6),this.streamMessageController.toStreamerHandlers.get(\"IFrameRequest\")()}emitUIInteraction(e){i.Log(i.GetStackTrace(),\"---- Sending custom UIInteraction message ----\",6),this.streamMessageController.toStreamerHandlers.get(\"UIInteraction\")([JSON.stringify(e)])}emitCommand(e){i.Log(i.GetStackTrace(),\"---- Sending custom Command message ----\",6),this.streamMessageController.toStreamerHandlers.get(\"Command\")([JSON.stringify(e)])}emitConsoleCommand(e){i.Log(i.GetStackTrace(),\"---- Sending custom Command:ConsoleCommand message ----\",6),this.streamMessageController.toStreamerHandlers.get(\"Command\")([JSON.stringify({ConsoleCommand:e})])}sendRequestQualityControlOwnership(){i.Log(i.GetStackTrace(),\"---- Sending Request to Control Quality ----\",6),this.toStreamerMessagesController.SendRequestQualityControl()}handleLatencyTestResult(e){i.Log(i.GetStackTrace(),\"DataChannelReceiveMessageType.latencyTest\",6);const t=new TextDecoder(\"utf-16\").decode(e.slice(1)),s=new Ne;Object.assign(s,JSON.parse(t)),s.processFields(),s.testStartTimeMs=this.latencyStartTime,s.browserReceiptTimeMs=Date.now(),s.latencyExcludingDecode=~~(s.browserReceiptTimeMs-s.testStartTimeMs),s.testDuration=~~(s.TransmissionTimeMs-s.ReceiptTimeMs),s.networkLatency=~~(s.latencyExcludingDecode-s.testDuration),s.frameDisplayDeltaTimeMs&&s.browserReceiptTimeMs&&(s.endToEndLatency=(s.frameDisplayDeltaTimeMs,s.networkLatency,~~+s.CaptureToSendMs)),this.pixelStreaming._onLatencyTestResult(s)}handleDataChannelLatencyTestResponse(e){i.Log(i.GetStackTrace(),\"DataChannelReceiveMessageType.dataChannelLatencyResponse\",6);const t=new TextDecoder(\"utf-16\").decode(e.slice(1)),s=JSON.parse(t);this.pixelStreaming._onDataChannelLatencyTestResponse(s)}handleInitialSettings(e){i.Log(i.GetStackTrace(),\"DataChannelReceiveMessageType.InitialSettings\",6);const t=new TextDecoder(\"utf-16\").decode(e.slice(1)),s=JSON.parse(t),n=new _e;s.Encoder&&(n.EncoderSettings=s.Encoder),s.WebRTC&&(n.WebRTCSettings=s.WebRTC),s.PixelStreaming&&(n.PixelStreamingSettings=s.PixelStreaming),s.ConfigOptions&&void 0!==s.ConfigOptions.DefaultToHover&&this.config.setFlagEnabled(ue.HoveringMouseMode,!!s.ConfigOptions.DefaultToHover),n.ueCompatible(),i.Log(i.GetStackTrace(),t,6),this.pixelStreaming._onInitialSettings(n)}handleVideoEncoderAvgQP(e){i.Log(i.GetStackTrace(),\"DataChannelReceiveMessageType.VideoEncoderAvgQP\",6);const t=Number(new TextDecoder(\"utf-16\").decode(e.slice(1)));this.setVideoEncoderAvgQP(t)}handleVideoInitialized(){this.pixelStreaming._onVideoInitialized(),this.autoPlayVideoOrSetUpPlayOverlay(),this.resizePlayerStyle(),this.videoPlayer.updateVideoStreamSize()}onQualityControlOwnership(e){const t=new Uint8Array(e);i.Log(i.GetStackTrace(),\"DataChannelReceiveMessageType.QualityControlOwnership\",6),this.isQualityController=new Boolean(t[1]).valueOf(),i.Log(i.GetStackTrace(),`Received quality controller message, will control quality: ${this.isQualityController}`),this.pixelStreaming._onQualityControlOwnership(this.isQualityController)}handleVideoStats(e){this.pixelStreaming._onVideoStats(e)}resizePlayerStyle(){this.videoPlayer.resizePlayerStyle()}setPreferredCodec(e){this.preferredCodec=e,this.peerConnectionController&&(this.peerConnectionController.preferredCodec=e,this.peerConnectionController.updateCodecSelection=!1)}setVideoEncoderAvgQP(e){this.videoAvgQp=e,this.pixelStreaming._onVideoEncoderAvgQP(this.videoAvgQp)}setKeyboardInputEnabled(e){var t;null===(t=this.keyboardController)||void 0===t||t.unregisterKeyBoardEvents(),e&&(this.keyboardController=this.inputClassesFactory.registerKeyBoard(this.config))}setMouseInputEnabled(e){var t;if(null===(t=this.mouseController)||void 0===t||t.unregisterMouseEvents(),e){const e=this.config.isFlagEnabled(ue.HoveringMouseMode)?Ee.HoveringMouse:Ee.LockedMouse;this.mouseController=this.inputClassesFactory.registerMouse(e)}}setTouchInputEnabled(e){var t;null===(t=this.touchController)||void 0===t||t.unregisterTouchEvents(),e&&(this.touchController=this.inputClassesFactory.registerTouch(this.config.isFlagEnabled(ue.FakeMouseWithTouches),this.videoElementParentClientRect))}setGamePadInputEnabled(e){var t;null===(t=this.gamePadController)||void 0===t||t.unregisterGamePadEvents(),e&&(this.gamePadController=this.inputClassesFactory.registerGamePad(),this.gamePadController.onGamepadConnected=()=>{this.streamMessageController.toStreamerHandlers.get(\"GamepadConnected\")()},this.gamePadController.onGamepadDisconnected=e=>{this.streamMessageController.toStreamerHandlers.get(\"GamepadDisconnected\")([e])})}registerDataChannelEventEmitters(e){e.onOpen=(e,t)=>this.pixelStreaming.dispatchEvent(new z({label:e,event:t})),e.onClose=(e,t)=>this.pixelStreaming.dispatchEvent(new _({label:e,event:t})),e.onError=(e,t)=>this.pixelStreaming.dispatchEvent(new V({label:e,event:t}))}registerMessageHandler(e,t,s){t===Ge.FromStreamer&&void 0===s&&i.Warning(i.GetStackTrace(),`Unable to register handler for ${e} as no handler was passed`),this.streamMessageController.registerMessageHandler(t,e,(n=>void 0===s&&t===Ge.ToStreamer?this.sendMessageController.sendMessageToStreamer(e,n):s(n)))}}class Ct{constructor(e){this.toStreamerMessagesProvider=e,this.controllers=[]}static deepCopyGamepad(e){return JSON.parse(JSON.stringify({buttons:e.buttons.map((e=>JSON.parse(JSON.stringify({pressed:e.pressed,touched:e.touched,value:e.value})))),axes:e.axes}))}updateStatus(e,t,s){if(e.gamepad){const n=t.getPose(e.gripSpace,s);if(!n)return;let r=0;e.profiles.includes(\"htc-vive\")?r=1:e.profiles.includes(\"oculus-touch\")&&(r=2),this.toStreamerMessagesProvider.toStreamerHandlers.get(\"XRSystem\")([r]);let i=2;switch(e.handedness){case\"left\":i=0;break;case\"right\":i=1}const a=n.transform.matrix,o=[];for(let e=0;e<16;e++)o[e]=new Float32Array([a[e]])[0];this.toStreamerMessagesProvider.toStreamerHandlers.get(\"XRControllerTransform\")([o[0],o[4],o[8],o[12],o[1],o[5],o[9],o[13],o[2],o[6],o[10],o[14],o[3],o[7],o[11],o[15],i]),void 0===this.controllers[i]&&(this.controllers[i]={prevState:void 0,currentState:void 0,id:void 0},this.controllers[i].prevState=Ct.deepCopyGamepad(e.gamepad)),this.controllers[i].currentState=Ct.deepCopyGamepad(e.gamepad);const l=this.controllers[i],d=l.currentState,c=l.prevState;for(let e=0;e<d.buttons.length;e++){const t=d.buttons[e],s=c.buttons[e];if(t.pressed){let t=s.pressed?1:0;this.toStreamerMessagesProvider.toStreamerHandlers.get(\"XRButtonPressed\")([i,e,t])}else s.pressed&&this.toStreamerMessagesProvider.toStreamerHandlers.get(\"XRButtonReleased\")([i,e,0]);if(t.touched){let t=s.touched?1:0;this.toStreamerMessagesProvider.toStreamerHandlers.get(\"XRButtonTouched\")([i,e,t])}else s.touched&&this.toStreamerMessagesProvider.toStreamerHandlers.get(\"XRButtonTouchReleased\")([i,e,0])}for(let e=0;e<d.axes.length;e++){let t=d.axes[e];t!=c.axes[e]&&this.toStreamerMessagesProvider.toStreamerHandlers.get(\"XRAnalog\")([i,e,t])}this.controllers[i].prevState=d}}}class ft{constructor(e){this.xrViewerPose=null,this.videoTexture=null,this.prevVideoWidth=0,this.prevVideoHeight=0,this.leftView=null,this.rightView=null,this.xrSession=null,this.webRtcController=e,this.xrGamepadController=new Ct(this.webRtcController.streamMessageController),this.onSessionEnded=new EventTarget,this.onSessionStarted=new EventTarget,this.onFrame=new EventTarget}xrClicked(){if(this.xrSession)this.xrSession.end();else{if(!navigator.xr)return void i.Error(i.GetStackTrace(),\"This browser does not support XR.\");navigator.xr.requestSession(\"immersive-vr\",{optionalFeatures:[]}).then((e=>{this.onXrSessionStarted(e)}))}}onXrSessionEnded(){i.Log(i.GetStackTrace(),\"XR Session ended\"),this.xrSession=null,this.onSessionEnded.dispatchEvent(new Event(\"xrSessionEnded\"))}initGL(){if(this.gl)return;const e=document.createElement(\"canvas\");this.gl=e.getContext(\"webgl2\",{xrCompatible:!0}),this.gl.clearColor(0,0,0,1)}initShaders(){const e=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(e,\"\\n attribute vec2 a_position;\\n attribute vec2 a_texCoord;\\n\\n // varyings\\n varying vec2 v_texCoord;\\n\\n void main() {\\n gl_Position = vec4(a_position.x, a_position.y, 0, 1);\\n // pass the texCoord to the fragment shader\\n // The GPU will interpolate this value between points.\\n v_texCoord = a_texCoord;\\n }\\n \"),this.gl.compileShader(e);const t=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(t,\"\\n precision mediump float;\\n\\n // our texture\\n uniform sampler2D u_image;\\n\\n // the texCoords passed in from the vertex shader.\\n varying vec2 v_texCoord;\\n\\n void main() {\\n gl_FragColor = texture2D(u_image, v_texCoord);\\n }\\n \"),this.gl.compileShader(t);const s=this.gl.createProgram();this.gl.attachShader(s,e),this.gl.attachShader(s,t),this.gl.linkProgram(s),this.gl.useProgram(s),this.positionLocation=this.gl.getAttribLocation(s,\"a_position\"),this.texcoordLocation=this.gl.getAttribLocation(s,\"a_texCoord\")}updateVideoTexture(){this.videoTexture||(this.videoTexture=this.gl.createTexture(),this.gl.bindTexture(this.gl.TEXTURE_2D,this.videoTexture),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR));let e=this.webRtcController.videoPlayer.getVideoElement().videoHeight,t=this.webRtcController.videoPlayer.getVideoElement().videoWidth;this.prevVideoHeight!=e||this.prevVideoWidth!=t?this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,t,e,0,this.gl.RGBA,this.gl.UNSIGNED_BYTE,this.webRtcController.videoPlayer.getVideoElement()):this.gl.texSubImage2D(this.gl.TEXTURE_2D,0,0,0,t,e,this.gl.RGBA,this.gl.UNSIGNED_BYTE,this.webRtcController.videoPlayer.getVideoElement()),this.prevVideoHeight=e,this.prevVideoWidth=t}initBuffers(){this.positionBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.positionBuffer),this.gl.enableVertexAttribArray(this.positionLocation),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([-1,1,1,1,-1,-1,-1,-1,1,1,1,-1]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.positionLocation,2,this.gl.FLOAT,!1,0,0),this.texcoordBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texcoordBuffer),this.gl.enableVertexAttribArray(this.texcoordLocation),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.texcoordLocation,2,this.gl.FLOAT,!1,0,0)}onXrSessionStarted(e){i.Log(i.GetStackTrace(),\"XR Session started\"),this.xrSession=e,this.xrSession.addEventListener(\"end\",(()=>{this.onXrSessionEnded()})),this.initGL(),this.initShaders(),this.initBuffers(),e.requestReferenceSpace(\"local\").then((t=>{if(this.xrRefSpace=t,this.xrSession.updateRenderState({baseLayer:new XRWebGLLayer(this.xrSession,this.gl)}),this.xrSession.supportedFrameRates)for(let t of this.xrSession.supportedFrameRates)90==t&&e.updateTargetFrameRate(90);this.xrSession.requestAnimationFrame(this.onXrFrame.bind(this))})),this.onSessionStarted.dispatchEvent(new Event(\"xrSessionStarted\"))}sendXRDataToUE(){if(null==this.leftView||null==this.rightView)return;const e=this.leftView.transform.matrix,t=this.leftView.projectionMatrix,s=this.rightView.transform.matrix,n=this.rightView.projectionMatrix;this.webRtcController.streamMessageController.toStreamerHandlers.get(\"XREyeViews\")([e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15],t[0],t[4],t[8],t[12],t[1],t[5],t[9],t[13],t[2],t[6],t[10],t[14],t[3],t[7],t[11],t[15],s[0],s[4],s[8],s[12],s[1],s[5],s[9],s[13],s[2],s[6],s[10],s[14],s[3],s[7],s[11],s[15],n[0],n[4],n[8],n[12],n[1],n[5],n[9],n[13],n[2],n[6],n[10],n[14],n[3],n[7],n[11],n[15]])}onXrFrame(e,t){if(this.xrViewerPose=t.getViewerPose(this.xrRefSpace),this.xrViewerPose){if(this.updateViews(),null==this.leftView||null==this.rightView)return;this.sendXRDataToUE(),this.updateVideoTexture(),this.render()}this.webRtcController.config.isFlagEnabled(ue.XRControllerInput)&&this.xrSession.inputSources.forEach(((e,s,n)=>{this.xrGamepadController.updateStatus(e,t,this.xrRefSpace)}),this),this.xrSession.requestAnimationFrame(((e,t)=>this.onXrFrame(e,t))),this.onFrame.dispatchEvent(new le({time:e,frame:t}))}updateViews(){if(this.xrViewerPose)for(const e of this.xrViewerPose.views)\"left\"===e.eye?this.leftView=e:\"right\"===e.eye&&(this.rightView=e)}render(){if(!this.gl)return;const e=this.xrSession.renderState.baseLayer;this.gl.bindFramebuffer(this.gl.FRAMEBUFFER,e.framebuffer),this.gl.viewport(0,0,e.framebufferWidth,e.framebufferHeight),this.gl.drawArrays(this.gl.TRIANGLES,0,6)}static isSessionSupported(e){return\"https:\"!==location.protocol&&i.Info(null,\"WebXR requires https, if you want WebXR use https.\"),navigator.xr?navigator.xr.isSessionSupported(e):new Promise((()=>!1))}}class Tt{constructor(e){this.editTextButton=null,this.hiddenInput=null,\"ontouchstart\"in document.documentElement&&this.createOnScreenKeyboardHelpers(e)}unquantizeAndDenormalizeUnsigned(e,t){return null}createOnScreenKeyboardHelpers(e){this.hiddenInput||(this.hiddenInput=document.createElement(\"input\"),this.hiddenInput.id=\"hiddenInput\",this.hiddenInput.maxLength=0,this.hiddenInput.style.position=\"absolute\",this.hiddenInput.style.left=\"-10%\",this.hiddenInput.style.width=\"0px\",this.hiddenInput.style.opacity=\"0\",e.appendChild(this.hiddenInput)),this.editTextButton||(this.editTextButton=document.createElement(\"button\"),this.editTextButton.id=\"editTextButton\",this.editTextButton.innerHTML=\"edit text\",e.appendChild(this.editTextButton),this.editTextButton.style.display=\"none\",this.editTextButton.addEventListener(\"touchend\",(e=>{this.hiddenInput.focus(),e.preventDefault()})))}showOnScreenKeyboard(e){if(e.showOnScreenKeyboard){this.editTextButton.style.display=\"default\";const t=this.unquantizeAndDenormalizeUnsigned(e.x,e.y);this.editTextButton.style.top=t.y.toString()+\"px\",this.editTextButton.style.left=(t.x-40).toString()+\"px\"}else this.editTextButton.style.display=\"none\",this.hiddenInput.blur()}}class Et{constructor(e){this.seq=e.Seq,this.playerSentTimestamp=Date.now(),this.requestFillerSize=e.Filler?e.Filler.length:0}update(e){this.playerReceivedTimestamp=Date.now(),this.streamerReceivedTimestamp=e.ReceivedTimestamp,this.streamerSentTimestamp=e.SentTimestamp,this.responseFillerSize=e.Filler?e.Filler.length:0}}class yt{constructor(e,t){this.sink=e,this.callback=t,this.records=new Map,this.seq=0}start(e){return!this.isRunning()&&(this.startTime=Date.now(),this.records.clear(),this.interval=setInterval((()=>{Date.now()-this.startTime>=e.duration?this.stop():this.sendRequest(e.requestSize,e.responseSize)}).bind(this),Math.floor(1e3/e.rps)),!0)}stop(){this.interval&&(clearInterval(this.interval),this.interval=void 0,this.callback(this.produceResult()))}produceResult(){const e=new Map(this.records);return{records:e,dataChannelRtt:Math.ceil(Array.from(this.records.values()).reduce(((e,t)=>e+(t.playerReceivedTimestamp-t.playerSentTimestamp)),0)/this.records.size),playerToStreamerTime:Math.ceil(Array.from(this.records.values()).reduce(((e,t)=>e+(t.streamerReceivedTimestamp-t.playerSentTimestamp)),0)/this.records.size),streamerToPlayerTime:Math.ceil(Array.from(this.records.values()).reduce(((e,t)=>e+(t.playerReceivedTimestamp-t.streamerSentTimestamp)),0)/this.records.size),exportLatencyAsCSV:()=>{let t=\"Timestamp;RTT;PlayerToStreamer;StreamerToPlayer;\\n\";return e.forEach((e=>{t+=e.playerSentTimestamp+\";\",t+=e.playerReceivedTimestamp-e.playerSentTimestamp+\";\",t+=e.streamerReceivedTimestamp-e.playerSentTimestamp+\";\",t+=e.playerReceivedTimestamp-e.streamerSentTimestamp+\";\",t+=\"\\n\"})),t}}}isRunning(){return!!this.interval}receive(e){if(!this.isRunning())return;if(!e)return void i.Error(i.GetStackTrace(),\"Undefined response from server\");let t=this.records.get(e.Seq);t&&t.update(e)}sendRequest(e,t){let s=this.createRequest(e,t),n=new Et(s);this.records.set(n.seq,n),this.sink(s)}createRequest(e,t){return{Seq:this.seq++,FillResponseSize:t,Filler:e?\"A\".repeat(e):\"\"}}}class Mt{constructor(e,t){this.allowConsoleCommands=!1,this.config=e,(null==t?void 0:t.videoElementParent)&&(this._videoElementParent=t.videoElementParent),this._eventEmitter=new he,this.configureSettings(),this.setWebRtcPlayerController(new vt(this.config,this)),this.onScreenKeyboardHelper=new Tt(this.videoElementParent),this.onScreenKeyboardHelper.unquantizeAndDenormalizeUnsigned=(e,t)=>this._webRtcController.requestUnquantizedAndDenormalizeUnsigned(e,t),this._activateOnScreenKeyboard=e=>this.onScreenKeyboardHelper.showOnScreenKeyboard(e),this._webXrController=new ft(this._webRtcController),this._setupWebRtcTCPRelayDetection=this._setupWebRtcTCPRelayDetection.bind(this),this._eventEmitter.addEventListener(\"webRtcConnected\",(e=>{this._eventEmitter.addEventListener(\"statsReceived\",this._setupWebRtcTCPRelayDetection)}))}get videoElementParent(){return this._videoElementParent||(this._videoElementParent=document.createElement(\"div\"),this._videoElementParent.id=\"videoElementParent\"),this._videoElementParent}configureSettings(){this.config._addOnSettingChangedListener(ue.IsQualityController,(e=>{!0!==e||this._webRtcController.isQualityController||this._webRtcController.sendRequestQualityControlOwnership()})),this.config._addOnSettingChangedListener(ue.AFKDetection,(e=>{this._webRtcController.setAfkEnabled(e)})),this.config._addOnSettingChangedListener(ue.MatchViewportResolution,(()=>{this._webRtcController.videoPlayer.updateVideoStreamSize()})),this.config._addOnSettingChangedListener(ue.HoveringMouseMode,(e=>{this.config.setFlagLabel(ue.HoveringMouseMode,`Control Scheme: ${e?\"Hovering\":\"Locked\"} Mouse`),this._webRtcController.setMouseInputEnabled(this.config.isFlagEnabled(ue.MouseInput))})),this.config._addOnSettingChangedListener(ue.KeyboardInput,(e=>{this._webRtcController.setKeyboardInputEnabled(e)})),this.config._addOnSettingChangedListener(ue.MouseInput,(e=>{this._webRtcController.setMouseInputEnabled(e)})),this.config._addOnSettingChangedListener(ue.FakeMouseWithTouches,(e=>{this._webRtcController.setTouchInputEnabled(this.config.isFlagEnabled(ue.TouchInput))})),this.config._addOnSettingChangedListener(ue.TouchInput,(e=>{this._webRtcController.setTouchInputEnabled(e)})),this.config._addOnSettingChangedListener(ue.GamepadInput,(e=>{this._webRtcController.setGamePadInputEnabled(e)})),this.config._addOnNumericSettingChangedListener(me.MinQP,(e=>{i.Log(i.GetStackTrace(),\"-------- Sending MinQP --------\",7),this._webRtcController.sendEncoderMinQP(e),i.Log(i.GetStackTrace(),\"-------------------------------------------\",7)})),this.config._addOnNumericSettingChangedListener(me.MaxQP,(e=>{i.Log(i.GetStackTrace(),\"-------- Sending encoder settings --------\",7),this._webRtcController.sendEncoderMaxQP(e),i.Log(i.GetStackTrace(),\"-------------------------------------------\",7)})),this.config._addOnNumericSettingChangedListener(me.WebRTCMinBitrate,(e=>{i.Log(i.GetStackTrace(),\"-------- Sending web rtc settings --------\",7),this._webRtcController.sendWebRTCMinBitrate(1e3*e),i.Log(i.GetStackTrace(),\"-------------------------------------------\",7)})),this.config._addOnNumericSettingChangedListener(me.WebRTCMaxBitrate,(e=>{i.Log(i.GetStackTrace(),\"-------- Sending web rtc settings --------\",7),this._webRtcController.sendWebRTCMaxBitrate(1e3*e),i.Log(i.GetStackTrace(),\"-------------------------------------------\",7)})),this.config._addOnNumericSettingChangedListener(me.WebRTCFPS,(e=>{i.Log(i.GetStackTrace(),\"-------- Sending web rtc settings --------\",7),this._webRtcController.sendWebRTCFps(e),i.Log(i.GetStackTrace(),\"-------------------------------------------\",7)})),this.config._addOnOptionSettingChangedListener(Ce.PreferredCodec,(e=>{this._webRtcController&&this._webRtcController.setPreferredCodec(e)})),this.config._registerOnChangeEvents(this._eventEmitter)}_activateOnScreenKeyboard(e){throw new Error(\"Method not implemented.\")}_onInputControlOwnership(e){this._inputController=e}setWebRtcPlayerController(e){this._webRtcController=e,this._webRtcController.setPreferredCodec(this.config.getSettingOption(Ce.PreferredCodec).selected),this._webRtcController.resizePlayerStyle(),this.checkForAutoConnect()}connect(){this._eventEmitter.dispatchEvent(new N),this._webRtcController.connectToSignallingServer()}reconnect(){this._eventEmitter.dispatchEvent(new Q),this._webRtcController.tryReconnect(\"Reconnecting...\")}disconnect(){this._eventEmitter.dispatchEvent(new K),this._webRtcController.close()}play(){this._onStreamLoading(),this._webRtcController.playStream()}checkForAutoConnect(){this.config.isFlagEnabled(ue.AutoConnect)&&(this._onWebRtcAutoConnect(),this._webRtcController.connectToSignallingServer())}unmuteMicrophone(e=!1){if(!this.config.isFlagEnabled(\"UseMic\"))return e?(this.config.setFlagEnabled(\"UseMic\",!0),void this.reconnect()):void i.Warning(i.GetStackTrace(),\"Trying to unmute mic, but PixelStreaming was initialized with no microphone track. Call with forceEnable == true to re-connect with a mic track.\");this.setMicrophoneMuted(!1)}muteMicrophone(){this.config.isFlagEnabled(\"UseMic\")?this.setMicrophoneMuted(!0):i.Info(i.GetStackTrace(),\"Trying to mute mic, but PixelStreaming has no microphone track, so sending sound is already disabled.\")}setMicrophoneMuted(e){var t,s,n,r;for(const i of null!==(r=null===(n=null===(s=null===(t=this._webRtcController)||void 0===t?void 0:t.peerConnectionController)||void 0===s?void 0:s.peerConnection)||void 0===n?void 0:n.getTransceivers())&&void 0!==r?r:[])Ie.canTransceiverSendAudio(i)&&(i.sender.track.enabled=!e)}_onWebRtcAutoConnect(){this._eventEmitter.dispatchEvent(new O)}_onWebRtcSdp(){this._eventEmitter.dispatchEvent(new D)}_onStreamLoading(){this._eventEmitter.dispatchEvent(new W)}_onDisconnect(e,t){this._eventEmitter.dispatchEvent(new B({eventString:e,allowClickToReconnect:t}))}_onWebRtcConnecting(){this._eventEmitter.dispatchEvent(new I)}_onWebRtcConnected(){this._eventEmitter.dispatchEvent(new U)}_onWebRtcFailed(){this._eventEmitter.dispatchEvent(new G)}_onVideoInitialized(){this._eventEmitter.dispatchEvent(new H),this._videoStartTime=Date.now()}_onLatencyTestResult(e){this._eventEmitter.dispatchEvent(new te({latencyTimings:e}))}_onDataChannelLatencyTestResponse(e){this._eventEmitter.dispatchEvent(new se({response:e}))}_onVideoStats(e){this._videoStartTime&&void 0!==this._videoStartTime||(this._videoStartTime=Date.now()),e.handleSessionStatistics(this._videoStartTime,this._inputController,this._webRtcController.videoAvgQp),this._eventEmitter.dispatchEvent(new Y({aggregatedStats:e}))}_onVideoEncoderAvgQP(e){this._eventEmitter.dispatchEvent(new F({avgQP:e}))}_onInitialSettings(e){var t;this._eventEmitter.dispatchEvent(new re({settings:e})),e.PixelStreamingSettings&&(this.allowConsoleCommands=null!==(t=e.PixelStreamingSettings.AllowPixelStreamingCommands)&&void 0!==t&&t,!1===this.allowConsoleCommands&&i.Info(i.GetStackTrace(),\"-AllowPixelStreamingCommands=false, sending arbitrary console commands from browser to UE is disabled.\"));const s=this.config.useUrlParams,n=new URLSearchParams(window.location.search);i.Info(i.GetStackTrace(),`using URL parameters ${s}`),e.EncoderSettings&&(this.config.setNumericSetting(me.MinQP,s&&n.has(me.MinQP)?Number.parseFloat(n.get(me.MinQP)):e.EncoderSettings.MinQP),this.config.setNumericSetting(me.MaxQP,s&&n.has(me.MaxQP)?Number.parseFloat(n.get(me.MaxQP)):e.EncoderSettings.MaxQP)),e.WebRTCSettings&&(this.config.setNumericSetting(me.WebRTCMinBitrate,s&&n.has(me.WebRTCMinBitrate)?Number.parseFloat(n.get(me.WebRTCMinBitrate)):e.WebRTCSettings.MinBitrate/1e3),this.config.setNumericSetting(me.WebRTCMaxBitrate,s&&n.has(me.WebRTCMaxBitrate)?Number.parseFloat(n.get(me.WebRTCMaxBitrate)):e.WebRTCSettings.MaxBitrate/1e3),this.config.setNumericSetting(me.WebRTCFPS,s&&n.has(me.WebRTCFPS)?Number.parseFloat(n.get(me.WebRTCFPS)):e.WebRTCSettings.FPS))}_onQualityControlOwnership(e){this.config.setFlagEnabled(ue.IsQualityController,e)}_onPlayerCount(e){this._eventEmitter.dispatchEvent(new de({count:e}))}_setupWebRtcTCPRelayDetection(e){let t=e.data.aggregatedStats.getActiveCandidatePair();if(null!=t){let s=e.data.aggregatedStats.localCandidates.find((e=>e.id==t.localCandidateId),null);null!=s&&\"relay\"==s.candidateType&&\"tcp\"==s.relayProtocol&&this._eventEmitter.dispatchEvent(new ce),this._eventEmitter.removeEventListener(\"statsReceived\",this._setupWebRtcTCPRelayDetection)}}requestLatencyTest(){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendLatencyTest(),!0)}requestDataChannelLatencyTest(e){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._dataChannelLatencyTestController||(this._dataChannelLatencyTestController=new yt(this._webRtcController.sendDataChannelLatencyTest.bind(this._webRtcController),(e=>{this._eventEmitter.dispatchEvent(new ne({result:e}))})),this.addEventListener(\"dataChannelLatencyTestResponse\",(({data:{response:e}})=>{this._dataChannelLatencyTestController.receive(e)}))),this._dataChannelLatencyTestController.start(e))}requestShowFps(){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendShowFps(),!0)}requestIframe(){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendIframeRequest(),!0)}emitUIInteraction(e){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.emitUIInteraction(e),!0)}emitCommand(e){return!(!this._webRtcController.videoPlayer.isVideoReady()||!this.allowConsoleCommands&&\"ConsoleCommand\"in e||(this._webRtcController.emitCommand(e),0))}emitConsoleCommand(e){return!(!this.allowConsoleCommands||!this._webRtcController.videoPlayer.isVideoReady()||(this._webRtcController.emitConsoleCommand(e),0))}addResponseEventListener(e,t){this._webRtcController.responseController.addResponseEventListener(e,t)}removeResponseEventListener(e){this._webRtcController.responseController.removeResponseEventListener(e)}dispatchEvent(e){return this._eventEmitter.dispatchEvent(e)}addEventListener(e,t){this._eventEmitter.addEventListener(e,t)}removeEventListener(e,t){this._eventEmitter.removeEventListener(e,t)}toggleXR(){this.webXrController.xrClicked()}setSignallingUrlBuilder(e){this._webRtcController.signallingUrlBuilder=e}get webSocketController(){return this._webRtcController.webSocketController}get webXrController(){return this._webXrController}registerMessageHandler(e,t,s){t!==Ge.FromStreamer||void 0!==s?t===Ge.ToStreamer&&void 0===s?this._webRtcController.streamMessageController.registerMessageHandler(t,e,(t=>this._webRtcController.sendMessageController.sendMessageToStreamer(e,t))):this._webRtcController.streamMessageController.registerMessageHandler(t,e,(e=>s(e))):i.Warning(i.GetStackTrace(),`Unable to register an undefined handler for ${e}`)}get toStreamerHandlers(){return this._webRtcController.streamMessageController.toStreamerHandlers}isReconnecting(){return this._webRtcController.isReconnecting}}class wt{}var bt=r.Dz,Rt=r.g$,Pt=r.Lt,kt=r.Q9,Lt=r.qf,xt=r.hV,At=r.z$,Ft=r.J0,Dt=r.De,Ot=r.$C,It=r.al,Ut=r._W,Gt=r.Gv,Bt=r.m,zt=r.tz,_t=r.Nu,Vt=r.zg,Ht=r.vp,Wt=r.vU,Nt=r.wF,Kt=r.rv,Qt=r.Nh,qt=r.ss,$t=r.qW,Xt=r.QL,jt=r.cf,Jt=r.eM,Yt=r.Yd,Zt=r.Tk,es=r.iM,ts=r.qy,ss=r.ce,ns=r.sK,rs=r.Ok,is=r.q5,as=r.g,os=r.xl,ls=r.I,ds=r.bx,cs=r.dD,hs=r.Ib,us=r.Az,gs=r.Iw,ms=r.qY,ps=r.db,Ss=r.mR,vs=r.Tn,Cs=r.rV,fs=r.gh,Ts=r.Mi,Es=r.j,ys=r.YB,Ms=r.Yt,ws=r.i5,bs=r.x_,Rs=r.Am,Ps=r.eR,ks=r.r8,Ls=r.u3,xs=r.vd,As=r.iV,Fs=r.jZ,Ds=r.SW,Os=r.ZH,Is=r.Ni,Us=r.lh,Gs=r.ZP,Bs=r.bq,zs=r.$f,_s=r.eu,Vs=r.Ax,Hs=r.Mc;export{bt as AfkLogic,Rt as AfkTimedOutEvent,Pt as AfkWarningActivateEvent,kt as AfkWarningDeactivateEvent,Lt as AfkWarningUpdateEvent,xt as AggregatedStats,At as CandidatePairStats,Ft as CandidateStat,Dt as Config,Ot as ControlSchemeType,It as DataChannelCloseEvent,Ut as DataChannelErrorEvent,Gt as DataChannelLatencyTestResponseEvent,Bt as DataChannelLatencyTestResultEvent,zt as DataChannelOpenEvent,_t as DataChannelStats,Vt as EncoderSettings,Ht as EventEmitter,Wt as Flags,Nt as HideFreezeFrameEvent,Kt as InboundAudioStats,Qt as InboundVideoStats,qt as InitialSettings,$t as InitialSettingsEvent,Xt as LatencyTestResultEvent,jt as LatencyTestResults,Jt as LoadFreezeFrameEvent,Yt as Logger,Zt as MessageDirection,es as MessageRecv,ts as MessageSend,ss as MessageStreamerList,ns as NumericParameters,rs as OptionParameters,is as OutBoundVideoStats,as as PixelStreaming,os as PlayStreamErrorEvent,ls as PlayStreamEvent,ds as PlayStreamRejectedEvent,cs as PlayerCountEvent,hs as SettingBase,us as SettingFlag,gs as SettingNumber,ms as SettingOption,ps as SettingText,Ss as SettingsChangedEvent,vs as SignallingProtocol,Cs as StatsReceivedEvent,fs as StreamLoadingEvent,Ts as StreamPreConnectEvent,Es as StreamPreDisconnectEvent,ys as StreamReconnectEvent,Ms as StreamerIDChangedMessageEvent,ws as StreamerListMessageEvent,bs as TextParameters,Rs as UnquantizedAndDenormalizeUnsigned,Ps as VideoEncoderAvgQPEvent,ks as VideoInitializedEvent,Ls as WebRTCSettings,xs as WebRtcAutoConnectEvent,As as WebRtcConnectedEvent,Fs as WebRtcConnectingEvent,Ds as WebRtcDisconnectedEvent,Os as WebRtcFailedEvent,Is as WebRtcPlayerController,Us as WebRtcSdpEvent,Gs as WebRtcTCPRelayDetectedEvent,Bs as WebSocketController,zs as WebXRController,_s as XrFrameEvent,Vs as XrSessionEndedEvent,Hs as XrSessionStartedEvent};","import { useEffect, useRef, useState } from 'react';\nimport { Config, PixelStreaming } from '@epicgames-ps/lib-pixelstreamingfrontend-ue5.4';\nimport './PixelStreamingPlayer.css';\n\n/**\n * Epic Games Pixel Streaming Player Component\n * Uses @epicgames-ps/lib-pixelstreamingfrontend-ue5.4\n */\nconst EpicPixelStreamingPlayer = ({\n signallingUrl,\n autoConnect = true,\n width,\n height,\n onConnecting,\n onLoading,\n onConnected,\n onDisconnected,\n onError,\n muted = false\n}) => {\n const containerRef = useRef(null);\n const pixelStreamingRef = useRef(null);\n const isConnectedRef = useRef(false); // Track connected state for event handlers\n // const heartbeatIntervalRef = useRef(null);\n const [isConnected, setIsConnected] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [errorMessage, setErrorMessage] = useState(null);\n\n useEffect(() => {\n if (!containerRef.current || !signallingUrl) return;\n if (onConnecting) onConnecting();\n\n console.log('🎮 Initializing Epic Pixel Streaming with URL:', signallingUrl);\n\n // Polyfill for getUserMedia to prevent errors\n if (!navigator.mediaDevices) {\n navigator.mediaDevices = {};\n }\n if (!navigator.mediaDevices.getUserMedia) {\n navigator.mediaDevices.getUserMedia = function () {\n return Promise.reject(new Error('getUserMedia is not supported'));\n };\n }\n\n try {\n // Initialize the configuration with initial settings\n // Based on the library source, these are the correct setting IDs\n const config = new Config({\n useUrlParams: false,\n initialSettings: {\n 'ss': signallingUrl, // SignallingServerUrl\n 'AutoConnect': autoConnect,\n 'AutoPlayVideo': true,\n 'StartVideoMuted': muted,\n 'UseMic': false, // Disable microphone to avoid getUserMedia errors\n 'HoveringMouse': false, // Use locked mouse for better mobile experience\n 'FakeMouseWithTouches': true, // Convert touch to mouse events\n 'TouchInput': false, // Enable touch input\n 'MouseInput': false,\n 'KeyboardInput': false, // Disable keyboard on mobile\n 'WaitForStreamer': true // Wait and auto-subscribe when streamer becomes available\n }\n });\n\n // Create the Pixel Streaming instance with the container element\n const stream = new PixelStreaming(config, {\n videoElementParent: containerRef.current\n });\n\n // Set up event listeners\n stream.addEventListener('webRtcConnected', () => {\n console.log('✅ WebRTC Connected');\n isConnectedRef.current = true;\n setIsConnected(true);\n setIsLoading(false);\n setErrorMessage(null);\n if (onConnected) onConnected();\n\n // // Start heartbeat to prevent Cloudflare's 100-second timeout\n // if (heartbeatIntervalRef.current) {\n // clearInterval(heartbeatIntervalRef.current);\n // }\n // heartbeatIntervalRef.current = setInterval(() => {\n // if (stream && stream.webSocketController && stream.webSocketController.webSocket && stream.webSocketController.webSocket.readyState === WebSocket.OPEN) {\n // stream.webSocketController.webSocket.send(JSON.stringify({ type: 'keepalive' }));\n // console.log('💓 Keepalive sent');\n // }\n // }, 30000); // Every 30 seconds to prevent Cloudflare's 100-second timeout\n });\n\n stream.addEventListener('webRtcDisconnected', () => {\n console.log('🔌 WebRTC Disconnected');\n isConnectedRef.current = false;\n setIsConnected(false);\n if (onDisconnected) onDisconnected();\n\n // // Clear heartbeat on disconnect\n // if (heartbeatIntervalRef.current) {\n // clearInterval(heartbeatIntervalRef.current);\n // heartbeatIntervalRef.current = null;\n // }\n });\n\n stream.addEventListener('streamLoading', () => {\n console.log('⏳ Stream Loading');\n setIsLoading(true);\n if (onLoading) onLoading();\n });\n\n stream.addEventListener('playStreamError', (error) => {\n console.error('❌ Play Stream Error:', error);\n setErrorMessage('Failed to play stream');\n setIsLoading(false);\n if (onError) onError('Failed to play stream');\n });\n\n stream.addEventListener('playStream', () => {\n console.log('▶️ Stream Playing');\n setIsLoading(false);\n // Fallback: If webRtcConnected didn't fire but stream is playing, we're connected\n if (!isConnectedRef.current) {\n console.log('✅ Stream Playing - Setting connected (fallback)');\n isConnectedRef.current = true;\n setIsConnected(true);\n if (onConnected) onConnected();\n }\n });\n\n stream.addEventListener('videoInitialized', () => {\n console.log('📹 Video Initialized');\n setIsLoading(false);\n });\n\n // Listen for streamer list updates and auto-subscribe immediately\n stream.addEventListener('streamerListMessage', (event) => {\n console.log('📋 Streamer list received:', event.data);\n const streamers = event.data?.ids || event.data;\n if (streamers && streamers.length > 0) {\n console.log('🎯 Streamer available, subscribing to:', streamers[0]);\n // The library should auto-subscribe with WaitForStreamer=true\n // but we can force it if needed\n }\n });\n\n // Store reference for cleanup\n pixelStreamingRef.current = stream;\n } catch (error) {\n console.error('❌ Failed to initialize Pixel Streaming:', error);\n setErrorMessage('Failed to initialize streaming: ' + error.message);\n setIsLoading(false);\n if (onError) onError(error.message);\n }\n\n // Cleanup on unmount\n return () => {\n console.log('🧹 Cleaning up Epic Pixel Streaming');\n \n // // Clear heartbeat interval\n // if (heartbeatIntervalRef.current) {\n // clearInterval(heartbeatIntervalRef.current);\n // heartbeatIntervalRef.current = null;\n // }\n\n if (pixelStreamingRef.current) {\n try {\n // Close the WebSocket controller first to stop reconnection attempts\n // The library's internal reconnection logic is tied to the WebSocket controller\n if (pixelStreamingRef.current._webSocketController) {\n console.info(\"PX websocket connection closed\")\n pixelStreamingRef.current._webSocketController.close();\n }\n \n // Then call disconnect to clean up WebRTC and other resources\n pixelStreamingRef.current.disconnect();\n } catch (error) {\n console.error('Error during cleanup:', error);\n }\n pixelStreamingRef.current = null;\n }\n };\n }, [signallingUrl, autoConnect, onConnecting, onLoading, onConnected, onDisconnected, onError]);\n\n // Handle mute changes by controlling audio tracks on the MediaStream\n useEffect(() => {\n if (!pixelStreamingRef.current) return;\n \n try {\n // Get the video player\n const videoPlayer = pixelStreamingRef.current._webRtcController?.videoPlayer;\n if (!videoPlayer) {\n console.log('⚠️ Video player not found');\n return;\n }\n \n let audioControlled = false;\n \n // Try to control audio element if it exists (separate audio element)\n if (videoPlayer.audioElement) {\n const audioStream = videoPlayer.audioElement.srcObject;\n if (audioStream) {\n const audioTracks = audioStream.getAudioTracks();\n if (audioTracks.length > 0) {\n audioTracks.forEach(track => {\n track.enabled = !muted;\n });\n console.log('🔊 Audio element tracks', muted ? 'disabled' : 'enabled', '- Track count:', audioTracks.length);\n audioControlled = true;\n }\n }\n }\n \n // Try to control video element audio tracks\n const videoElement = videoPlayer.getVideoElement();\n if (videoElement && videoElement.srcObject) {\n const stream = videoElement.srcObject;\n const audioTracks = stream.getAudioTracks();\n \n if (audioTracks.length > 0) {\n audioTracks.forEach(track => {\n track.enabled = !muted;\n });\n console.log('🔊 Video element audio tracks', muted ? 'disabled' : 'enabled', '- Track count:', audioTracks.length);\n audioControlled = true;\n }\n }\n \n // Fallback: just mute the video element itself\n if (!audioControlled && videoElement) {\n videoElement.muted = muted;\n console.log('🔊 Video element muted property set to:', muted);\n }\n \n if (!audioControlled) {\n console.log('⚠️ No audio tracks found, using video element muted property');\n }\n } catch (e) {\n console.error('Error controlling audio:', e);\n }\n }, [muted]);\n\n return (\n <div\n className=\"pixel-streaming-container\"\n style={{\n width: width || '100%',\n height: height || '100%',\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n touchAction: 'none', // Prevent default touch behaviors\n WebkitTouchCallout: 'none', // Disable iOS callout\n WebkitUserSelect: 'none', // Disable text selection\n userSelect: 'none'\n }}\n >\n <div\n ref={containerRef}\n className=\"player-container\"\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n touchAction: 'none'\n }}\n />\n\n {isLoading && (\n <div className=\"loading-overlay\">\n <div className=\"loading-spinner\"></div>\n <div className=\"loading-text\">Connecting to stream...</div>\n </div>\n )}\n\n {!isConnected && !isLoading && errorMessage && (\n <div className=\"connection-overlay\">\n <div className=\"error-message\">{errorMessage}</div>\n </div>\n )}\n </div>\n );\n};\n\nexport default EpicPixelStreamingPlayer;\n","import EpicPixelStreamingPlayer from '../../components/pxs/EpicPixelStreamingPlayer';\nimport { useRqmiiAvatar } from '../hooks';\nimport { CLOUD_STREAM_STATE } from '../constants';\n\nexport function RqmiiCloudAvatarPlayer({\n className,\n style,\n autoConnect = true,\n muted = false,\n onConnected,\n onDisconnected,\n onError,\n}) {\n const { streamingUrl, setCloudStreamState } = useRqmiiAvatar();\n\n if (!streamingUrl) {\n return null;\n }\n\n const handleConnecting = () => {\n setCloudStreamState(CLOUD_STREAM_STATE.CONNECTING);\n };\n\n const handleLoading = () => {\n setCloudStreamState(CLOUD_STREAM_STATE.LOADING);\n };\n\n const handleConnected = () => {\n setCloudStreamState(CLOUD_STREAM_STATE.CONNECTED);\n onConnected?.();\n };\n\n const handleDisconnected = () => {\n setCloudStreamState(CLOUD_STREAM_STATE.DISCONNECTED);\n onDisconnected?.();\n };\n\n const handleError = (error) => {\n setCloudStreamState(CLOUD_STREAM_STATE.ERROR, error);\n onError?.(error);\n };\n\n return (\n <div className={className} style={style}>\n <EpicPixelStreamingPlayer\n signallingUrl={streamingUrl}\n autoConnect={autoConnect}\n muted={muted}\n onConnecting={handleConnecting}\n onLoading={handleLoading}\n onConnected={handleConnected}\n onDisconnected={handleDisconnected}\n onError={handleError}\n />\n </div>\n );\n}\n\nexport default RqmiiCloudAvatarPlayer;\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","owner","debugStack","debugTask","refProp","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","node","isValidElement","object","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1","AGENT_TYPES","SOCKET_EVENTS","CONNECTION_STATE","CLOUD_STREAM_STATE","SESSION_STATE","DEFAULT_RECONNECT_OPTIONS","DEFAULT_PCM_OPTIONS","sleep","ms","resolve","toUint8Array","audio","byteOffset","byteLength","sanitizeAgentType","createResponseChunkAccumulator","chunks","requestId","chunk","id","next","fallbackText","text","PACKET_TYPES","PACKET_TYPES_REVERSE","ERROR_PACKET","withNativeBlob","withNativeArrayBuffer","isView","obj","encodePacket","data","supportsBinary","callback","encodeBlobAsBase64","fileReader","content","toArray","TEXT_ENCODER","encodePacketToBinary","packet","encoded","chars","lookup","i","decode","base64","bufferLength","len","p","encoded1","encoded2","encoded3","encoded4","arraybuffer","bytes","decodePacket","encodedPacket","binaryType","mapBinary","decodeBase64Packet","decoded","SEPARATOR","encodePayload","packets","length","encodedPackets","count","decodePayload","encodedPayload","decodedPacket","createPacketEncoderStream","controller","payloadLength","header","view","TEXT_DECODER","totalLength","acc","concatChunks","size","buffer","j","createPacketDecoderStream","maxPayload","state","expectedLength","isBinary","headerArray","n","protocol","Emitter","mixin","event","fn","on","callbacks","cb","args","nextTick","setTimeoutFn","globalThisShim","defaultBinaryType","pick","attr","NATIVE_SET_TIMEOUT","globalThis","NATIVE_CLEAR_TIMEOUT","installTimerFunctions","opts","BASE64_OVERHEAD","utf8Length","str","c","l","randomString","encode","qs","qry","pairs","pair","TransportError","reason","description","context","Transport","details","onPause","schema","query","hostname","encodedQuery","Polling","pause","total","close","hasCORS","empty","BaseXHR","isSSL","port","req","xhrStatus","Request","createRequest","uri","_a","xhr","e","err","fromError","unloadHandler","terminationEvent","hasXHR2","newRequest","XHR","forceBase64","xdomain","isReactNative","BaseWS","protocols","closeEvent","ev","lastPacket","WebSocketCtor","WS","_packet","WT","stream","decoderStream","reader","encoderStream","read","done","transports","re","parts","parse","src","b","m","pathNames","queryKey","path","regx","names","$0","$1","$2","withEventListeners","OFFLINE_EVENT_LISTENERS","listener","SocketWithoutUpgrade","parsedUri","t","transportName","transport","delay","payloadSize","hasExpired","msg","options","cleanupAndClose","waitForUpgrade","SocketWithUpgrade","failed","onTransportOpen","cleanup","freezeTransport","onerror","error","onTransportClose","onclose","onupgrade","to","upgrades","filteredUpgrades","o","DEFAULT_TRANSPORTS","url","loc","host","toString","withNativeFile","hasBinary","toJSON","deconstructPacket","buffers","packetData","pack","_deconstructPacket","placeholder","newData","reconstructPacket","_reconstructPacket","RESERVED_EVENTS","PacketType","Encoder","replacer","deconstruction","Decoder","isBinaryEvent","BinaryReconstructor","start","buf","isInteger","payload","isObject","binData","Socket","io","nsp","_b","_c","ack","isTransportWritable","isConnected","timeout","timer","reject","arg1","arg2","responseArgs","force","listeners","self","sent","pid","subDestroy","compress","Backoff","rand","deviation","min","max","jitter","Manager","_parser","parser","v","Engine","socket","openSubDestroy","onError","errorSub","nsps","attempt","cache","parsed","source","sameNamespace","newConnection","createSocketManager","wsUrl","log","socketRef","connectSocket","authPayload","queryToken","expectReconnectSuccess","timeoutMs","cleanupSocket","connectSocketRaw","getSocket","unlockAudioContext","audioCtx","events","unlock","clean","FUPCMPlayer","option","defaults","encodings","typedArrays","tmp","float32","volume","elapsedMs","ret","startTimestamp","checker","timestamp","bufferSource","audioBuffer","audioData","channel","offset","decrement","nextTimeGap","createPcmPlayer","pcmOptions","onEnd","player","originalDestroy","isDestroyed","createAudioManager","enableAudio","onPlaybackComplete","_log","playerRef","audioElementRef","ensurePcmPlayer","destroyPcmPlayer","feedAudio","requestStop","interruptPlayback","resumeAudioPlayback","attachAudioElement","element","getAudioElement","createReconnectionManager","reconnectOptions","credential","reconnecting","aborted","onAttempt","onSuccess","onFailure","isAborted","newOptions","detectClientTimezone","timezone","normalizeServerError","response","detail","createSessionManager","restUrl","assertRestUrl","apiKey","publicChatId","agentId","language","uniqueId","DEFAULT_STATE","setConnectionState","setState","connectionState","prev","setError","setCloudStreamState","nextState","setSessionState","newState","updateSession","sessionPatch","addMessage","message","setAudioPlaying","isPlaying","setAvatarSpeaking","isSpeaking","setCreditExhausted","exhausted","errorMsg","hardReset","deriveSessionBooleans","sessionState","createHeartbeatManager","intervalMs","timerId","stop","isRunning","RqmiiAgentContext","createContext","RqmiiAgentProvider","debug","heartbeatIntervalSeconds","onSessionExpired","onSessionTerminated","onDisconnect","onReconnectSuccess","onReconnectFailed","useState","SM.DEFAULT_STATE","manualDisconnectRef","useRef","chunkAccumulatorRef","sessionIdRef","sessionAgentTypeRef","interruptedRef","cbRefs","useEffect","useCallback","socketMgrRef","audioMgrRef","reconnectMgrRef","sessionMgrRef","heartbeatMgrRef","SM.setAudioPlaying","s","registerSocketHandlers","S","hb","SM.setConnectionState","SM.setError","SM.setAvatarSpeaking","at","wasPlaying","storeAndUpdateSession","code","SM.setCreditExhausted","SM.setSessionState","onFail","hardResetForNewSession","keepManualDisconnect","SM.hardReset","initializeSession","SM.setCloudStreamState","tz","joinDesktopSession","disconnect","terminateSession","emit","sendTextMessage","SM.addMessage","sendAudioChunk","endAudioStream","interrupt","clearSessionHistory","changeSessionLanguage","clearMessages","setCloudStreamStateCallback","contextValue","useMemo","SM.deriveSessionBooleans","useRqmiiAgentContext","useContext","SUPPRESSED_PATTERNS","shouldSuppress","pattern","installAudioErrorSuppressors","DEFAULT_AUDIO_CONSTRAINTS","MEDIA_RECORDER_MIME_TYPES","getRecorderMimeType","useRqmiiPressToTalk","onAudioChunk","onAudioEnd","holdDelayMs","timesliceMs","interruptOnHoldStart","audioConstraints","mediaRecorderRef","streamRef","holdTimerRef","shouldSendAudioEndRef","stopRequestedRef","isPressing","setIsPressing","isRecording","setIsRecording","micError","setMicError","handleChunk","blob","chunkBuffer","cleanupStream","track","stopRecording","discard","mediaRecorder","startRecording","mimeType","recorderOptions","startPress","stopPress","mr","eventHandlers","assetPath","currentScript","basePath","defaultModelFetcher_1","defaultModelFetcher","model","logging","mkLogger","level","messages","Message","frameProcessor","logging_1","messages_1","validateOptions","concatArrays","arrays","sizes","out","outArray","arr","index","place","calculateFrameParams","msPerFrame","redemptionFrames","preSpeechPadFrames","minSpeechFrames","FrameProcessor","modelProcessFunc","modelResetFunc","update","handleEvent","speaking","item","frame","probs","isSpeech","ort","$n","Nu","Lu","Gu","vn","require","rt","Wu","r","lt","St","Ze","Ge","Hu","br","xn","u","d","a","_r","wr","$r","vr","le","Sn","te","xr","Sr","Tr","Ir","f","h","y","g","_","w","Tn","Cr","Ar","Er","kr","Pr","zr","Tt","fe","Qe","ct","Br","Dr","Or","Mr","Ur","Rr","xe","In","pt","Vr","ye","he","Ue","Re","Cn","It","Nr","Lr","Gr","Wr","Hr","qr","Fr","An","_e","Ct","Qr","qu","jr","Zr","Xr","En","We","At","Et","kt","Pt","mt","zt","Bt","Dt","Mt","Ot","we","Fu","Ku","Ut","kn","ju","Zu","eo","Qu","Yr","Jr","no","Pn","zn","Rt","ro","Xu","Yu","Ju","ne","$e","ft","Y","Vt","oo","ed","td","nd","Nt","rd","so","ao","He","Ee","qe","ot","ht","Lt","Gt","Bn","L","gt","Dn","od","uo","lo","Wt","sd","Z","ke","On","Pe","x","Ye","Ht","co","po","F","qt","Mn","fo","Rn","ho","ad","mo","ud","go","Ft","Kt","Un","yo","bo","jt","dd","Zt","_o","Qt","wo","Vn","Nn","ld","cd","$o","Gn","Ln","xo","So","Wn","G","ie","Je","qn","ce","P","J","Fn","et","Te","B","Xt","C","To","Yt","Hn","Io","E","$","T","I","A","N","z","se","R","D","ve","ge","je","U","Q","O","M","V","W","H","X","pd","Co","md","fd","hd","gd","pe","Ao","Eo","Ve","yd","bd","_d","wd","$d","vd","xd","Sd","Td","Id","ze","ko","Po","zo","Bo","Do","Oo","Mo","Uo","Ro","Vo","No","Jt","Kn","Be","Cd","en","De","Ad","Ed","kd","Pd","zd","Bd","Dd","Od","Md","Ud","Oe","Lo","Go","Wo","Ho","qo","Fo","Ko","jo","Zo","Qo","Xo","Yo","Jo","jn","ei","Rd","Zn","Vd","Nd","Ld","it","Gd","ti","tn","Wd","Hd","qd","ni","ri","Fd","Kd","oi","ii","jd","ee","si","ai","ui","di","li","ci","pi","mi","fi","Zd","hi","gi","yi","bi","yt","_i","nn","wi","$i","vi","xi","Si","Ti","Ii","Ci","Ai","Ei","ki","Pi","zi","Bi","Di","Oi","Mi","Ui","Qn","Xn","Ri","Vi","Ni","Qd","Xd","Li","rn","Yd","Jd","Wi","Hi","el","tl","Me","qi","Fi","Ki","ji","Zi","Qi","Xi","Yi","Ji","es","ts","rl","ol","il","sl","ns","rs","os","Ie","Ce","Ae","Fe","ue","is","sn","ss","as","bt","an","un","al","ul","Yn","us","dl","Jn","ll","_t","dn","oe","de","q","cl","ds","ls","pl","cs","ln","ml","ps","fl","fs","hs","gs","ys","bs","hl","er","gl","tr","nr","_s","yl","bl","rr","ws","$s","vs","_l","wl","$l","xs","Ss","vl","Ts","xl","Is","Cs","Sl","As","Es","ks","Tl","Il","Cl","Ps","zs","Bs","or","cn","Ds","Al","El","ir","sr","Os","kl","Ms","Us","Rs","Pl","Vs","zl","Bl","Ns","Ls","Dl","Gs","Ws","Ol","Ml","Hs","Fs","Ul","Ks","js","Zs","Rl","Vl","Qs","Xs","Ys","Nl","Ll","Js","ea","ta","Gl","Wl","na","ra","oa","Ne","Ke","st","Hl","ql","Fl","Kl","jl","Zl","Ql","Xl","ia","sa","aa","be","ec","da","ua","tc","wt","la","ar","nc","rc","oc","ic","ur","ca","pa","dr","sc","pn","ma","lr","ac","uc","fa","dc","ha","ga","ya","lc","cc","ba","pc","mc","wa","$a","fc","va","xa","hc","gc","yc","Sa","Ta","Ia","bc","wc","$c","vc","xc","Sc","Tc","Ca","Aa","mn","Ea","ka","Pa","za","Ic","Cc","Ba","Da","Oa","Ma","Ua","Ra","Va","Na","La","Ga","Wa","Ha","qa","Ec","kc","Fa","Ka","ja","Pc","zc","Za","Qa","Bc","Dc","Xa","Ya","Ja","Oc","Mc","Uc","eu","Rc","Vc","Nc","Lc","Gc","Wc","Hc","qc","tu","Fc","Kc","jc","Zc","Qc","nu","ru","ou","Xc","Yc","iu","su","Jc","ep","au","tp","np","uu","du","lu","rp","op","cu","pu","mu","fu","ip","sp","ap","hu","gu","up","dp","yu","bu","_u","wu","hn","$u","vu","pr","lp","cp","cr","xu","Su","pp","$t","Tu","mp","tt","fp","Iu","Cu","me","ae","Le","xt","yr","nt","Se","vt","yn","bn","gn","fr","hr","ut","dt","gp","Au","Eu","ku","Pu","zu","Bu","Du","gr","Ou","yp","_n","Mu","Ru","wn","Uu","bp","Vu","wp","_p","Kr","module","common","legacy","SileroLegacy","ortInstance","_session","_h","_sr","zeroes","audioFrame","inputs","modelFetcher","modelArrayBuffer","v5","getNewState","SileroV5","_state","__createBinding","this","k2","desc","__exportStar","exports","legacy_1","v5_1","require$$2","resampler","Resampler","outputFrames","sample","outputFrame","audioInput","outputIndex","inputIndex","sum","num","__setModuleDefault","__importStar","mod","result","asset_path_1","default_model_fetcher_1","frame_processor_1","require$$3","require$$4","models_1","require$$5","resampler_1","require$$6","NonRealTimeVAD","fullOptions","inputAudio","sampleRate","resamplerOptions","end","frameIndex","messageContainer","utils","minFramesForTargetMS","targetDuration","frameSamples","arrayBufferToBase64","binary","byte","encodeWAV","samples","format","numChannels","bitDepth","bytesPerSample","blockAlign","writeString","floatTo16BitPCM","writeFloat32","output","input","string","audioFileToArray","audioFileData","ctx","res","_audioBuffer","current","K","Xe","workletFile","sileroV5File","sileroLegacyFile","getDefaultRealTimeVADOptions","_stream","detectProcessorType","getVADNodeAsWorklet","workletURL","workletOptions","audioContext","processFrame","audioNode","getVADNodeAsScriptProcessor","processingAudio","frames","MicVAD","listening","errored","_audioContext","_vadNode","_mediaStreamAudioSourceNode","_audioProcessorAdapterType","initializationState","ownsAudioContext","vadNode","mediaStreamAudioSourceNode","modelFile","modelURL","modelFactory","micVad","non_real_time_vad_1","utils_1","real_time_vad_1","vad_web_1","react_1","vad_web_2","defaultReactOptions","getDefaultReactRealTimeVADOptions","useOptions","reactOptions","vadOptions","useMicVAD","userSpeaking","updateUserSpeaking","loading","setLoading","setErrored","setListening","vad","setVAD","onFrameProcessedRef","onSpeechEndRef","onSpeechStartRef","onSpeechRealStartRef","onVADMisfireRef","getStreamRef","getStreamKey","myvad","canceled","finalVadOptions","toggle","MIC_CONSTRAINTS","VAD_SAMPLE_RATE","FRAME_SAMPLES","PRE_SPEECH_PAD_MS","SPEECH_END_DELAY_MS","FRAME_DURATION_MS","RING_BUFFER_SIZE","useRqmiiVAD","onSpeechStart","onSpeechEnd","onVADMisfire","interruptOnSpeechStart","forceAudioMp4","setIsSpeaking","mixCtxRef","cooldownRef","speechEndTimerRef","pcmRingRef","AudioCtx","getStream","pauseStream","resumeStream","drainRingBuffer","totalSamples","startMixedRecorder","micStream","duration","destination","micSource","delayNode","recorder","stopMediaRecorder","discardMediaRecorder","cleanupMixContext","_probs","ringBuffer","useRqmiiAgent","useRqmiiConnection","isSessionReady","reconnectAttempt","session","creditExhausted","creditError","isSessionTerminated","isSessionTerminating","isAgentThinking","isAgentSpeaking","isToolExecuting","useRqmiiSessionState","useRqmiiMessages","useRqmiiVoice","isAudioPlaying","transcript","partialTranscript","useRqmiiAvatar","isAvatarSpeaking","cloudStream","streamState","useRqmiiAudioElement","audioRef","AutoConnector","connect","onInitialized","startedRef","cancelled","RqmiiAgentRoom","jsx","SDPUtils","line","part","sections","prefix","candidate","sdp","component","codec","channels","headerExtension","kv","params","param","lines","fb","colon","ssrc","mediaSection","mid","sessionpart","setupType","parameters","keyParams","ufrag","pwd","mline","rtpmapline","fmtps","wildcardRtcpFb","existingFeedback","kind","caps","maxptime","extension","encodingParameters","hasRed","hasUlpfec","ssrcs","primarySsrc","secondarySsrc","flows","encParam","bandwidth","rtcpParameters","remoteSsrc","rsize","mux","spec","planB","msidParts","maxSizeLine","maxMessageSize","sctpPort","sctpMapLines","media","sctp","sessId","sessVer","sessUser","sessionId","version","e.parseRtpParameters","e.splitSections","EpicPixelStreamingPlayer","signallingUrl","autoConnect","width","height","onConnecting","onLoading","onConnected","onDisconnected","muted","containerRef","pixelStreamingRef","isConnectedRef","setIsConnected","isLoading","setIsLoading","errorMessage","setErrorMessage","Config","PixelStreaming","streamers","videoPlayer","audioControlled","audioStream","audioTracks","videoElement","jsxs","RqmiiCloudAvatarPlayer","className","style","streamingUrl","handleConnecting","handleLoading","handleConnected","handleDisconnected","handleError"],"mappings":"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","x_google_ignoreList":[0,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,33,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,62,63]}