@whereby.com/browser-sdk 2.6.1 → 2.7.0
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.
- package/dist/cdn/v2-embed.js +12 -10
- package/dist/cdn/v2-react.js +2 -2
- package/dist/embed/index.esm.js +1 -1
- package/dist/react/index.d.ts +7 -1
- package/dist/react/index.esm.js +5 -4
- package/package.json +2 -1
package/dist/cdn/v2-react.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
this.whereby=this.whereby||{},this.whereby.react=function(e,t){"use strict";function r(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}function i(e,t){return t.forEach((function(t){t&&"string"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach((function(r){if("default"!==r&&!(r in e)){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,i.get?i:{enumerable:!0,get:function(){return t[r]}})}}))})),Object.freeze(e)}var n=r(t);"function"==typeof SuppressedError&&SuppressedError;var s=e=>{var{muted:t,mirror:r=!1,stream:i,onResize:s,onSetAspectRatio:a}=e,o=function(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(r[i[n]]=e[i[n]])}return r}(e,["muted","mirror","stream","onResize","onSetAspectRatio"]);const c=n.useRef(null);return n.useEffect((()=>{if(!c.current)return;const e=new ResizeObserver(function(e,{delay:t=500,edges:r}={}){let i,n=0;return(...s)=>{n+=1,r&&1===n&&e(...s),clearTimeout(i),i=setTimeout((()=>{(!r||n>1)&&e(...s),i=void 0,n=0}),t)}}((()=>{if(c.current&&(null==i?void 0:i.id)){s&&s({width:c.current.clientWidth,height:c.current.clientHeight,stream:i});const e=c.current.videoHeight,t=c.current.videoWidth;a&&t&&e&&t+e>20&&a({aspectRatio:t/e})}}),{delay:1e3,edges:!0}));return e.observe(c.current),()=>{e.disconnect()}}),[i]),n.useEffect((()=>{c.current&&(c.current.srcObject!==i&&(c.current.srcObject=i),c.current.muted!==t&&(c.current.muted=Boolean(t)))}),[t,i,c]),n.createElement("video",Object.assign({ref:c,autoPlay:!0,playsInline:!0},o,{style:Object.assign({transform:r?"scaleX(-1)":"none",width:"100%",height:"100%"},o.style)}))},a=(()=>"function"==typeof Symbol&&Symbol.observable||"@@observable")(),o=()=>Math.random().toString(36).substring(7).split("").join("."),c={INIT:`@@redux/INIT${o()}`,REPLACE:`@@redux/REPLACE${o()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${o()}`};function d(e){if("object"!=typeof e||null===e)return!1;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||null===Object.getPrototypeOf(e)}function l(e){if(void 0===e)return"undefined";if(null===e)return"null";const t=typeof e;switch(t){case"boolean":case"string":case"number":case"symbol":case"function":return t}if(Array.isArray(e))return"array";if(function(e){return e instanceof Date||"function"==typeof e.toDateString&&"function"==typeof e.getDate&&"function"==typeof e.setDate}(e))return"date";if(function(e){return e instanceof Error||"string"==typeof e.message&&e.constructor&&"number"==typeof e.constructor.stackTraceLimit}(e))return"error";const r=function(e){return"function"==typeof e.constructor?e.constructor.name:null}(e);switch(r){case"Symbol":case"Promise":case"WeakMap":case"WeakSet":case"Map":case"Set":return r}return Object.prototype.toString.call(e).slice(8,-1).toLowerCase().replace(/\s/g,"")}function p(e){let t=typeof e;return t=l(e),t}function u(e,t,r){if("function"!=typeof e)throw new Error(`Expected the root reducer to be a function. Instead, received: '${p(e)}'`);if("function"==typeof t&&"function"==typeof r||"function"==typeof r&&"function"==typeof arguments[3])throw new Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.");if("function"==typeof t&&void 0===r&&(r=t,t=void 0),void 0!==r){if("function"!=typeof r)throw new Error(`Expected the enhancer to be a function. Instead, received: '${p(r)}'`);return r(u)(e,t)}let i=e,n=t,s=new Map,o=s,l=0,h=!1;function m(){o===s&&(o=new Map,s.forEach(((e,t)=>{o.set(t,e)})))}function f(){if(h)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return n}function g(e){if("function"!=typeof e)throw new Error(`Expected the listener to be a function. Instead, received: '${p(e)}'`);if(h)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api/store#subscribelistener for more details.");let t=!0;m();const r=l++;return o.set(r,e),function(){if(t){if(h)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api/store#subscribelistener for more details.");t=!1,m(),o.delete(r),s=null}}}function v(e){if(!d(e))throw new Error(`Actions must be plain objects. Instead, the actual type was: '${p(e)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);if(void 0===e.type)throw new Error('Actions may not have an undefined "type" property. You may have misspelled an action type string constant.');if("string"!=typeof e.type)throw new Error(`Action "type" property must be a string. Instead, the actual type was: '${p(e.type)}'. Value was: '${e.type}' (stringified)`);if(h)throw new Error("Reducers may not dispatch actions.");try{h=!0,n=i(n,e)}finally{h=!1}return(s=o).forEach((e=>{e()})),e}v({type:c.INIT});return{dispatch:v,subscribe:g,getState:f,replaceReducer:function(e){if("function"!=typeof e)throw new Error(`Expected the nextReducer to be a function. Instead, received: '${p(e)}`);i=e,v({type:c.REPLACE})},[a]:function(){const e=g;return{subscribe(t){if("object"!=typeof t||null===t)throw new Error(`Expected the observer to be an object. Instead, received: '${p(t)}'`);function r(){const e=t;e.next&&e.next(f())}r();return{unsubscribe:e(r)}},[a](){return this}}}}}function h(e){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(e);try{throw new Error(e)}catch(e){}}function m(e){const t=Object.keys(e),r={};for(let i=0;i<t.length;i++){const n=t[i];void 0===e[n]&&h(`No reducer provided for key "${n}"`),"function"==typeof e[n]&&(r[n]=e[n])}const i=Object.keys(r);let n,s;n={};try{!function(e){Object.keys(e).forEach((t=>{const r=e[t];if(void 0===r(void 0,{type:c.INIT}))throw new Error(`The slice reducer for key "${t}" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);if(void 0===r(void 0,{type:c.PROBE_UNKNOWN_ACTION()}))throw new Error(`The slice reducer for key "${t}" returned undefined when probed with a random type. Don't try to handle '${c.INIT}' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.`)}))}(r)}catch(e){s=e}return function(e={},t){if(s)throw s;{const i=function(e,t,r,i){const n=Object.keys(t),s=r&&r.type===c.INIT?"preloadedState argument passed to createStore":"previous state received by the reducer";if(0===n.length)return"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.";if(!d(e))return`The ${s} has unexpected type of "${p(e)}". Expected argument to be an object with the following keys: "${n.join('", "')}"`;const a=Object.keys(e).filter((e=>!t.hasOwnProperty(e)&&!i[e]));return a.forEach((e=>{i[e]=!0})),r&&r.type===c.REPLACE?void 0:a.length>0?`Unexpected ${a.length>1?"keys":"key"} "${a.join('", "')}" found in ${s}. Expected to find one of the known reducer keys instead: "${n.join('", "')}". Unexpected keys will be ignored.`:void 0}(e,r,t,n);i&&h(i)}let a=!1;const o={};for(let n=0;n<i.length;n++){const s=i[n],c=r[s],d=e[s],l=c(d,t);if(void 0===l){const e=t&&t.type;throw new Error(`When called with an action of type ${e?`"${String(e)}"`:"(unknown type)"}, the slice reducer for key "${s}" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.`)}o[s]=l,a=a||l!==d}return a=a||i.length!==Object.keys(e).length,a?o:e}}function f(...e){return 0===e.length?e=>e:1===e.length?e[0]:e.reduce(((e,t)=>(...r)=>e(t(...r))))}function g(e){return d(e)&&"type"in e&&"string"==typeof e.type}var v=Symbol.for("immer-nothing"),_=Symbol.for("immer-draftable"),b=Symbol.for("immer-state"),y=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},"This object has been frozen and should not be mutated",function(e){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+e},"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.","Immer forbids circular references","The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},"Object.defineProperty() cannot be used on an Immer draft","Object.setPrototypeOf() cannot be used on an Immer draft","Immer only supports deleting array indices","Immer only supports setting array indices and the 'length' property",function(e){return`'original' expects a draft, got: ${e}`}];function w(e,...t){{const r=y[e],i="function"==typeof r?r.apply(null,t):r;throw new Error(`[Immer] ${i}`)}}var S=Object.getPrototypeOf;function C(e){return!!e&&!!e[b]}function R(e){return!!e&&(P(e)||Array.isArray(e)||!!e[_]||!!e.constructor?.[_]||I(e)||x(e))}var T=Object.prototype.constructor.toString();function P(e){if(!e||"object"!=typeof e)return!1;const t=S(e);if(null===t)return!0;const r=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return r===Object||"function"==typeof r&&Function.toString.call(r)===T}function k(e,t){0===D(e)?Object.entries(e).forEach((([r,i])=>{t(r,i,e)})):e.forEach(((r,i)=>t(i,r,e)))}function D(e){const t=e[b];return t?t.type_:Array.isArray(e)?1:I(e)?2:x(e)?3:0}function O(e,t){return 2===D(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function E(e,t,r){const i=D(e);2===i?e.set(t,r):3===i?e.add(r):e[t]=r}function I(e){return e instanceof Map}function x(e){return e instanceof Set}function j(e){return e.copy_||e.base_}function M(e,t){if(I(e))return new Map(e);if(x(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);if(!t&&P(e)){if(!S(e)){const t=Object.create(null);return Object.assign(t,e)}return{...e}}const r=Object.getOwnPropertyDescriptors(e);delete r[b];let i=Reflect.ownKeys(r);for(let t=0;t<i.length;t++){const n=i[t],s=r[n];!1===s.writable&&(s.writable=!0,s.configurable=!0),(s.get||s.set)&&(r[n]={configurable:!0,writable:!0,enumerable:s.enumerable,value:e[n]})}return Object.create(S(e),r)}function L(e,t=!1){return N(e)||C(e)||!R(e)||(D(e)>1&&(e.set=e.add=e.clear=e.delete=A),Object.freeze(e),t&&k(e,((e,t)=>L(t,!0)))),e}function A(){w(2)}function N(e){return Object.isFrozen(e)}var B,F={};function U(e){const t=F[e];return t||w(0,e),t}function $(){return B}function z(e,t){t&&(U("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function V(e){q(e),e.drafts_.forEach(H),e.drafts_=null}function q(e){e===B&&(B=e.parent_)}function G(e){return B={drafts_:[],parent_:B,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function H(e){const t=e[b];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function W(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];return void 0!==e&&e!==r?(r[b].modified_&&(V(t),w(4)),R(e)&&(e=K(t,e),t.parent_||Q(t,e)),t.patches_&&U("Patches").generateReplacementPatches_(r[b].base_,e,t.patches_,t.inversePatches_)):e=K(t,r,[]),V(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==v?e:void 0}function K(e,t,r){if(N(t))return t;const i=t[b];if(!i)return k(t,((n,s)=>J(e,i,t,n,s,r))),t;if(i.scope_!==e)return t;if(!i.modified_)return Q(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;const t=i.copy_;let n=t,s=!1;3===i.type_&&(n=new Set(t),t.clear(),s=!0),k(n,((n,a)=>J(e,i,t,n,a,r,s))),Q(e,t,!1),r&&e.patches_&&U("Patches").generatePatches_(i,r,e.patches_,e.inversePatches_)}return i.copy_}function J(e,t,r,i,n,s,a){if(n===r&&w(5),C(n)){const a=K(e,n,s&&t&&3!==t.type_&&!O(t.assigned_,i)?s.concat(i):void 0);if(E(r,i,a),!C(a))return;e.canAutoFreeze_=!1}else a&&r.add(n);if(R(n)&&!N(n)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;K(e,n),t&&t.scope_.parent_||Q(e,n)}}function Q(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&L(t,r)}var Z={get(e,t){if(t===b)return e;const r=j(e);if(!O(r,t))return function(e,t,r){const i=ee(t,r);return i?"value"in i?i.value:i.get?.call(e.draft_):void 0}(e,r,t);const i=r[t];return e.finalized_||!R(i)?i:i===X(e.base_,t)?(re(e),e.copy_[t]=ie(i,e)):i},has:(e,t)=>t in j(e),ownKeys:e=>Reflect.ownKeys(j(e)),set(e,t,r){const i=ee(j(e),t);if(i?.set)return i.set.call(e.draft_,r),!0;if(!e.modified_){const i=X(j(e),t),a=i?.[b];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_[t]=!1,!0;if(((n=r)===(s=i)?0!==n||1/n==1/s:n!=n&&s!=s)&&(void 0!==r||O(e.base_,t)))return!0;re(e),te(e)}var n,s;return e.copy_[t]===r&&(void 0!==r||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_[t]=!0),!0},deleteProperty:(e,t)=>(void 0!==X(e.base_,t)||t in e.base_?(e.assigned_[t]=!1,re(e),te(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const r=j(e),i=Reflect.getOwnPropertyDescriptor(r,t);return i?{writable:!0,configurable:1!==e.type_||"length"!==t,enumerable:i.enumerable,value:r[t]}:i},defineProperty(){w(11)},getPrototypeOf:e=>S(e.base_),setPrototypeOf(){w(12)}},Y={};function X(e,t){const r=e[b];return(r?j(r):e)[t]}function ee(e,t){if(!(t in e))return;let r=S(e);for(;r;){const e=Object.getOwnPropertyDescriptor(r,t);if(e)return e;r=S(r)}}function te(e){e.modified_||(e.modified_=!0,e.parent_&&te(e.parent_))}function re(e){e.copy_||(e.copy_=M(e.base_,e.scope_.immer_.useStrictShallowCopy_))}k(Z,((e,t)=>{Y[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}})),Y.deleteProperty=function(e,t){return isNaN(parseInt(t))&&w(13),Y.set.call(this,e,t,void 0)},Y.set=function(e,t,r){return"length"!==t&&isNaN(parseInt(t))&&w(14),Z.set.call(this,e[0],t,r,e[0])};function ie(e,t){const r=I(e)?U("MapSet").proxyMap_(e,t):x(e)?U("MapSet").proxySet_(e,t):function(e,t){const r=Array.isArray(e),i={type_:r?1:0,scope_:t?t.scope_:$(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let n=i,s=Z;r&&(n=[i],s=Y);const{revoke:a,proxy:o}=Proxy.revocable(n,s);return i.draft_=o,i.revoke_=a,o}(e,t);return(t?t.scope_:$()).drafts_.push(r),r}function ne(e){return C(e)||w(10,e),se(e)}function se(e){if(!R(e)||N(e))return e;const t=e[b];let r;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=M(e,t.scope_.immer_.useStrictShallowCopy_)}else r=M(e,!0);return k(r,((e,t)=>{E(r,e,se(t))})),t&&(t.finalized_=!1),r}var ae=new class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(e,t,r)=>{if("function"==typeof e&&"function"!=typeof t){const r=t;t=e;const i=this;return function(e=r,...n){return i.produce(e,(e=>t.call(this,e,...n)))}}let i;if("function"!=typeof t&&w(6),void 0!==r&&"function"!=typeof r&&w(7),R(e)){const n=G(this),s=ie(e,void 0);let a=!0;try{i=t(s),a=!1}finally{a?V(n):q(n)}return z(n,r),W(i,n)}if(!e||"object"!=typeof e){if(i=t(e),void 0===i&&(i=e),i===v&&(i=void 0),this.autoFreeze_&&L(i,!0),r){const t=[],n=[];U("Patches").generateReplacementPatches_(e,i,t,n),r(t,n)}return i}w(1,e)},this.produceWithPatches=(e,t)=>{if("function"==typeof e)return(t,...r)=>this.produceWithPatches(t,(t=>e(t,...r)));let r,i;return[this.produce(e,t,((e,t)=>{r=e,i=t})),r,i]},"boolean"==typeof e?.autoFreeze&&this.setAutoFreeze(e.autoFreeze),"boolean"==typeof e?.useStrictShallowCopy&&this.setUseStrictShallowCopy(e.useStrictShallowCopy)}createDraft(e){R(e)||w(8),C(e)&&(e=ne(e));const t=G(this),r=ie(e,void 0);return r[b].isManual_=!0,q(t),r}finishDraft(e,t){const r=e&&e[b];r&&r.isManual_||w(9);const{scope_:i}=r;return z(i,t),W(void 0,i)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){const i=t[r];if(0===i.path.length&&"replace"===i.op){e=i.value;break}}r>-1&&(t=t.slice(r+1));const i=U("Patches").applyPatches_;return C(e)?i(e,t):this.produce(e,(e=>i(e,t)))}},oe=ae.produce;ae.produceWithPatches.bind(ae),ae.setAutoFreeze.bind(ae),ae.setUseStrictShallowCopy.bind(ae),ae.applyPatches.bind(ae),ae.createDraft.bind(ae),ae.finishDraft.bind(ae);var ce=(e,t,r)=>{if(1===t.length&&t[0]===r){let t=!1;try{const r={};e(r)===r&&(t=!0)}catch{}if(t){let e;try{throw new Error}catch(t){({stack:e}=t)}console.warn("The result function returned its own inputs without modification. e.g\n`createSelector([state => state.todos], todos => todos)`\nThis could lead to inefficient memoization and unnecessary re-renders.\nEnsure transformation logic is in the result function, and extraction logic is in the input selectors.",{stack:e})}}},de=(e,t,r)=>{const{memoize:i,memoizeOptions:n}=t,{inputSelectorResults:s,inputSelectorResultsCopy:a}=e,o=i((()=>({})),...n);if(!(o.apply(null,s)===o.apply(null,a))){let e;try{throw new Error}catch(t){({stack:e}=t)}console.warn("An input selector returned a different result when passed same arguments.\nThis means your output selector will likely run more frequently than intended.\nAvoid returning a new reference inside your input selector, e.g.\n`createSelector([state => state.todos.map(todo => todo.id)], todoIds => todoIds.length)`",{arguments:r,firstInputs:s,secondInputs:a,stack:e})}},le={inputStabilityCheck:"once",identityFunctionCheck:"once"};var pe=e=>Array.isArray(e)?e:[e];function ue(e){const t=Array.isArray(e[0])?e[0]:e;return function(e,t="expected all items to be functions, instead received the following types: "){if(!e.every((e=>"function"==typeof e))){const r=e.map((e=>"function"==typeof e?`function ${e.name||"unnamed"}()`:typeof e)).join(", ");throw new TypeError(`${t}[${r}]`)}}(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function he(e,t){const r=[],{length:i}=e;for(let n=0;n<i;n++)r.push(e[n].apply(null,t));return r}var me="undefined"!=typeof WeakRef?WeakRef:class{constructor(e){this.value=e}deref(){return this.value}},fe=0,ge=1;function ve(){return{s:fe,v:void 0,o:null,p:null}}function _e(e,t={}){let r=ve();const{resultEqualityCheck:i}=t;let n,s=0;function a(){let t=r;const{length:a}=arguments;for(let e=0,r=a;e<r;e++){const r=arguments[e];if("function"==typeof r||"object"==typeof r&&null!==r){let e=t.o;null===e&&(t.o=e=new WeakMap);const i=e.get(r);void 0===i?(t=ve(),e.set(r,t)):t=i}else{let e=t.p;null===e&&(t.p=e=new Map);const i=e.get(r);void 0===i?(t=ve(),e.set(r,t)):t=i}}const o=t;let c;if(t.s===ge?c=t.v:(c=e.apply(null,arguments),s++),o.s=ge,i){const e=n?.deref?.()??n;null!=e&&i(e,c)&&(c=e,0!==s&&s--);n="object"==typeof c&&null!==c||"function"==typeof c?new me(c):c}return o.v=c,c}return a.clearCache=()=>{r=ve(),a.resetResultsCount()},a.resultsCount=()=>s,a.resetResultsCount=()=>{s=0},a}function be(e,...t){const r="function"==typeof e?{memoize:e,memoizeOptions:t}:e,i=(...e)=>{let t,i=0,n=0,s={},a=e.pop();"object"==typeof a&&(s=a,a=e.pop()),function(e,t="expected a function, instead received "+typeof e){if("function"!=typeof e)throw new TypeError(t)}(a,`createSelector expects an output function after the inputs, but received: [${typeof a}]`);const o={...r,...s},{memoize:c,memoizeOptions:d=[],argsMemoize:l=_e,argsMemoizeOptions:p=[],devModeChecks:u={}}=o,h=pe(d),m=pe(p),f=ue(e),g=c((function(){return i++,a.apply(null,arguments)}),...h);let v=!0;const _=l((function(){n++;const e=he(f,arguments);t=g.apply(null,e);{const{identityFunctionCheck:r,inputStabilityCheck:i}=((e,t)=>{const{identityFunctionCheck:r,inputStabilityCheck:i}={...le,...t};return{identityFunctionCheck:{shouldRun:"always"===r||"once"===r&&e,run:ce},inputStabilityCheck:{shouldRun:"always"===i||"once"===i&&e,run:de}}})(v,u);if(r.shouldRun&&r.run(a,e,t),i.shouldRun){const t=he(f,arguments);i.run({inputSelectorResults:e,inputSelectorResultsCopy:t},{memoize:c,memoizeOptions:h},arguments)}v&&(v=!1)}return t}),...m);return Object.assign(_,{resultFunc:a,memoizedResultFunc:g,dependencies:f,dependencyRecomputations:()=>n,resetDependencyRecomputations:()=>{n=0},lastResult:()=>t,recomputations:()=>i,resetRecomputations:()=>{i=0},memoize:c,argsMemoize:l})};return Object.assign(i,{withTypes:()=>i}),i}var ye=be(_e),we=Object.assign(((e,t=ye)=>{!function(e,t="expected an object, instead received "+typeof e){if("object"!=typeof e)throw new TypeError(t)}(e,"createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof e);const r=Object.keys(e),i=t(r.map((t=>e[t])),((...e)=>e.reduce(((e,t,i)=>(e[r[i]]=t,e)),{})));return i}),{withTypes:()=>we});function Se(e){return({dispatch:t,getState:r})=>i=>n=>"function"==typeof n?n(t,r,e):i(n)}var Ce=Se(),Re=Se;((...e)=>{const t=be(...e),r=Object.assign(((...e)=>{const r=t(...e),i=(e,...t)=>r(C(e)?ne(e):e,...t);return Object.assign(i,r),i}),{withTypes:()=>r})})(_e);var Te="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"==typeof arguments[0]?f:f.apply(null,arguments)},Pe=e=>e&&"function"==typeof e.match;function ke(e,t){function r(...r){if(t){let i=t(...r);if(!i)throw new Error("prepareAction did not return an object");return{type:e,payload:i.payload,..."meta"in i&&{meta:i.meta},..."error"in i&&{error:i.error}}}return{type:e,payload:r[0]}}return r.toString=()=>`${e}`,r.type=e,r.match=t=>g(t)&&t.type===e,r}function De(e){return"function"==typeof e&&"type"in e&&Pe(e)}function Oe(e,t){let r=0;return{measureTime(e){const t=Date.now();try{return e()}finally{const e=Date.now();r+=e-t}},warnIfExceeded(){r>e&&console.warn(`${t} took ${r}ms, which is more than the warning threshold of ${e}ms. \nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\nIt is disabled in production builds, so you don't need to worry about that.`)}}}function Ee(e,t){for(const r of e)if(t(r))return r}var Ie=class e extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,e.prototype)}static get[Symbol.species](){return e}concat(...e){return super.concat.apply(this,e)}prepend(...t){return 1===t.length&&Array.isArray(t[0])?new e(...t[0].concat(this)):new e(...t.concat(this))}};function xe(e){return R(e)?oe(e,(()=>{})):e}function je(e,t,r){if(e.has(t)){let i=e.get(t);return r.update&&(i=r.update(i,t,e),e.set(t,i)),i}if(!r.insert)throw new Error("No insert provided for key not already in map");const i=r.insert(t,e);return e.set(t,i),i}function Me(e){return"object"!=typeof e||null==e||Object.isFrozen(e)}function Le(e,t,r){const i=Ae(e,t,r);return{detectMutations:()=>Ne(e,t,i,r)}}function Ae(e,t=[],r,i="",n=new Set){const s={value:r};if(!e(r)&&!n.has(r)){n.add(r),s.children={};for(const n in r){const a=i?i+"."+n:n;t.length&&-1!==t.indexOf(a)||(s.children[n]=Ae(e,t,r[n],a))}}return s}function Ne(e,t=[],r,i,n=!1,s=""){const a=r?r.value:void 0,o=a===i;if(n&&!o&&!Number.isNaN(i))return{wasMutated:!0,path:s};if(e(a)||e(i))return{wasMutated:!1};const c={};for(let e in r.children)c[e]=!0;for(let e in i)c[e]=!0;const d=t.length>0;for(let n in c){const a=s?s+"."+n:n;if(d){if(t.some((e=>e instanceof RegExp?e.test(a):a===e)))continue}const c=Ne(e,t,r.children[n],i[n],o,a);if(c.wasMutated)return c}return{wasMutated:!1}}function Be(e){const t=typeof e;return null==e||"string"===t||"boolean"===t||"number"===t||Array.isArray(e)||d(e)}function Fe(e,t="",r=Be,i,n=[],s){let a;if(!r(e))return{keyPath:t||"<root>",value:e};if("object"!=typeof e||null===e)return!1;if(s?.has(e))return!1;const o=null!=i?i(e):Object.entries(e),c=n.length>0;for(const[e,d]of o){const o=t?t+"."+e:e;if(c){if(n.some((e=>e instanceof RegExp?e.test(o):o===e)))continue}if(!r(d))return{keyPath:o,value:d};if("object"==typeof d&&(a=Fe(d,o,r,i,n,s),a))return a}return s&&Ue(e)&&s.add(e),!1}function Ue(e){if(!Object.isFrozen(e))return!1;for(const t of Object.values(e))if("object"==typeof t&&null!==t&&!Ue(t))return!1;return!0}function $e(e){return"boolean"==typeof e}var ze=()=>function(e){const{thunk:t=!0,immutableCheck:r=!0,serializableCheck:i=!0,actionCreatorCheck:n=!0}=e??{};let s=new Ie;if(t&&($e(t)?s.push(Ce):s.push(Re(t.extraArgument))),r){let e={};$e(r)||(e=r),s.unshift(function(e={}){{let t=function(e,t,i,n){return JSON.stringify(e,r(t,n),i)},r=function(e,t){let r=[],i=[];return t||(t=function(e,t){return r[0]===t?"[Circular ~]":"[Circular ~."+i.slice(0,r.indexOf(t)).join(".")+"]"}),function(n,s){if(r.length>0){var a=r.indexOf(this);~a?r.splice(a+1):r.push(this),~a?i.splice(a,1/0,n):i.push(n),~r.indexOf(s)&&(s=t.call(this,n,s))}else r.push(s);return null==e?s:e.call(this,n,s)}},{isImmutable:i=Me,ignoredPaths:n,warnAfter:s=32}=e;const a=Le.bind(null,i,n);return({getState:e})=>{let r,i=e(),n=a(i);return o=>c=>{const d=Oe(s,"ImmutableStateInvariantMiddleware");d.measureTime((()=>{if(i=e(),r=n.detectMutations(),n=a(i),r.wasMutated)throw new Error(`A state mutation was detected between dispatches, in the path '${r.path||""}'. This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`)}));const l=o(c);return d.measureTime((()=>{if(i=e(),r=n.detectMutations(),n=a(i),r.wasMutated)throw new Error(`A state mutation was detected inside a dispatch, in the path: ${r.path||""}. Take a look at the reducer(s) handling the action ${t(c)}. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`)})),d.warnIfExceeded(),l}}}}(e))}if(i){let e={};$e(i)||(e=i),s.push(function(e={}){{const{isSerializable:t=Be,getEntries:r,ignoredActions:i=[],ignoredActionPaths:n=["meta.arg","meta.baseQueryMeta"],ignoredPaths:s=[],warnAfter:a=32,ignoreState:o=!1,ignoreActions:c=!1,disableCache:d=!1}=e,l=!d&&WeakSet?new WeakSet:void 0;return e=>d=>p=>{if(!g(p))return d(p);const u=d(p),h=Oe(a,"SerializableStateInvariantMiddleware");return c||i.length&&-1!==i.indexOf(p.type)||h.measureTime((()=>{const e=Fe(p,"",t,r,n,l);if(e){const{keyPath:t,value:r}=e;console.error(`A non-serializable value was detected in an action, in the path: \`${t}\`. Value:`,r,"\nTake a look at the logic that dispatched this action: ",p,"\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)","\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)")}})),o||(h.measureTime((()=>{const i=Fe(e.getState(),"",t,r,s,l);if(i){const{keyPath:e,value:t}=i;console.error(`A non-serializable value was detected in the state, in the path: \`${e}\`. Value:`,t,`\nTake a look at the reducer(s) handling this action type: ${p.type}.\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)`)}})),h.warnIfExceeded()),u}}}(e))}if(n){let e={};$e(n)||(e=n),s.unshift(function(e={}){const{isActionCreator:t=De}=e;return()=>e=>r=>(t(r)&&console.warn(function(e){const t=e?`${e}`.split("/"):[],r=t[t.length-1]||"actionCreator";return`Detected an action creator with type "${e||"unknown"}" being dispatched. \nMake sure you're calling the action creator before dispatching, i.e. \`dispatch(${r}())\` instead of \`dispatch(${r})\`. This is necessary even if the action has no payload.`}(r.type)),e(r))}(e))}return s},Ve=e=>t=>{setTimeout(t,e)},qe="undefined"!=typeof window&&window.requestAnimationFrame?window.requestAnimationFrame:Ve(10),Ge=e=>function(t){const{autoBatch:r=!0}=t??{};let i=new Ie(e);return r&&i.push(((e={type:"raf"})=>t=>(...r)=>{const i=t(...r);let n=!0,s=!1,a=!1;const o=new Set,c="tick"===e.type?queueMicrotask:"raf"===e.type?qe:"callback"===e.type?e.queueNotification:Ve(e.timeout),d=()=>{a=!1,s&&(s=!1,o.forEach((e=>e())))};return Object.assign({},i,{subscribe(e){const t=i.subscribe((()=>n&&e()));return o.add(e),()=>{t(),o.delete(e)}},dispatch(e){try{return n=!e?.meta?.RTK_autoBatch,s=!n,s&&(a||(a=!0,c(d))),i.dispatch(e)}finally{n=!0}}})})("object"==typeof r?r:void 0)),i};function He(e){const t=ze(),{reducer:r,middleware:i,devTools:n=!0,preloadedState:s,enhancers:a}=e||{};let o,c;if("function"==typeof r)o=r;else{if(!d(r))throw new Error("`reducer` is a required argument, and must be a function or an object of functions that can be passed to combineReducers");o=m(r)}if(i&&"function"!=typeof i)throw new Error("`middleware` field must be a callback");if("function"==typeof i){if(c=i(t),!Array.isArray(c))throw new Error("when using a middleware builder function, an array of middleware must be returned")}else c=t();if(c.some((e=>"function"!=typeof e)))throw new Error("each middleware provided to configureStore must be a function");let l=f;n&&(l=Te({trace:!0,..."object"==typeof n&&n}));const p=function(...e){return t=>(r,i)=>{const n=t(r,i);let s=()=>{throw new Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")};const a={getState:n.getState,dispatch:(e,...t)=>s(e,...t)},o=e.map((e=>e(a)));return s=f(...o)(n.dispatch),{...n,dispatch:s}}}(...c),h=Ge(p);if(a&&"function"!=typeof a)throw new Error("`enhancers` field must be a callback");let g="function"==typeof a?a(h):h();if(!Array.isArray(g))throw new Error("`enhancers` callback must return an array");if(g.some((e=>"function"!=typeof e)))throw new Error("each enhancer provided to configureStore must be a function");c.length&&!g.includes(p)&&console.error("middlewares were provided, but middleware enhancer was not included in final enhancers - make sure to call `getDefaultEnhancers`");return u(o,s,l(...g))}function We(e){const t={},r=[];let i;const n={addCase(e,s){if(r.length>0)throw new Error("`builder.addCase` should only be called before calling `builder.addMatcher`");if(i)throw new Error("`builder.addCase` should only be called before calling `builder.addDefaultCase`");const a="string"==typeof e?e:e.type;if(!a)throw new Error("`builder.addCase` cannot be called with an empty action type");if(a in t)throw new Error(`\`builder.addCase\` cannot be called with two reducers for the same action type '${a}'`);return t[a]=s,n},addMatcher(e,t){if(i)throw new Error("`builder.addMatcher` should only be called before calling `builder.addDefaultCase`");return r.push({matcher:e,reducer:t}),n},addDefaultCase(e){if(i)throw new Error("`builder.addDefaultCase` can only be called once");return i=e,n}};return e(n),[t,r,i]}var Ke=(e=21)=>{let t="",r=e;for(;r--;)t+="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"[64*Math.random()|0];return t};function Je(...e){return t=>e.some((e=>((e,t)=>Pe(e)?e.match(t):e(t))(e,t)))}var Qe=["name","message","stack","code"],Ze=class{constructor(e,t){this.payload=e,this.meta=t}_type},Ye=class{constructor(e,t){this.payload=e,this.meta=t}_type},Xe=e=>{if("object"==typeof e&&null!==e){const t={};for(const r of Qe)"string"==typeof e[r]&&(t[r]=e[r]);return t}return{message:String(e)}},et=(()=>{function e(e,t,r){const i=ke(e+"/fulfilled",((e,t,r,i)=>({payload:e,meta:{...i||{},arg:r,requestId:t,requestStatus:"fulfilled"}}))),n=ke(e+"/pending",((e,t,r)=>({payload:void 0,meta:{...r||{},arg:t,requestId:e,requestStatus:"pending"}}))),s=ke(e+"/rejected",((e,t,i,n,s)=>({payload:n,error:(r&&r.serializeError||Xe)(e||"Rejected"),meta:{...s||{},arg:i,requestId:t,rejectedWithValue:!!n,requestStatus:"rejected",aborted:"AbortError"===e?.name,condition:"ConditionError"===e?.name}})));return Object.assign((function(e){return(a,o,c)=>{const d=r?.idGenerator?r.idGenerator(e):Ke(),l=new AbortController;let p,u;function h(e){u=e,l.abort()}const m=async function(){let m;try{let s=r?.condition?.(e,{getState:o,extra:c});if(function(e){return null!==e&&"object"==typeof e&&"function"==typeof e.then}(s)&&(s=await s),!1===s||l.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};const f=new Promise(((e,t)=>{p=()=>{t({name:"AbortError",message:u||"Aborted"})},l.signal.addEventListener("abort",p)}));a(n(d,e,r?.getPendingMeta?.({requestId:d,arg:e},{getState:o,extra:c}))),m=await Promise.race([f,Promise.resolve(t(e,{dispatch:a,getState:o,extra:c,requestId:d,signal:l.signal,abort:h,rejectWithValue:(e,t)=>new Ze(e,t),fulfillWithValue:(e,t)=>new Ye(e,t)})).then((t=>{if(t instanceof Ze)throw t;return t instanceof Ye?i(t.payload,d,e,t.meta):i(t,d,e)}))])}catch(t){m=t instanceof Ze?s(null,d,e,t.payload,t.meta):s(t,d,e)}finally{p&&l.signal.removeEventListener("abort",p)}return r&&!r.dispatchConditionRejection&&s.match(m)&&m.meta.condition||a(m),m}();return Object.assign(m,{abort:h,requestId:d,arg:e,unwrap:()=>m.then(tt)})}}),{pending:n,rejected:s,fulfilled:i,settled:Je(s,i),typePrefix:e})}return e.withTypes=()=>e,e})();function tt(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}var rt=Symbol.for("rtk-slice-createasyncthunk");function it(e,t){return`${e}/${t}`}function nt({creators:e}={}){const t=e?.asyncThunk?.[rt];return function(e){const{name:r,reducerPath:i=r}=e;if(!r)throw new Error("`name` is a required option for createSlice");const n=("function"==typeof e.reducers?e.reducers(function(){function e(e,t){return{_reducerDefinitionType:"asyncThunk",payloadCreator:e,...t}}return e.withTypes=()=>e,{reducer:e=>Object.assign({[e.name]:(...t)=>e(...t)}[e.name],{_reducerDefinitionType:"reducer"}),preparedReducer:(e,t)=>({_reducerDefinitionType:"reducerWithPrepare",prepare:e,reducer:t}),asyncThunk:e}}()):e.reducers)||{},s=Object.keys(n),a={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},o={addCase(e,t){const r="string"==typeof e?e:e.type;if(!r)throw new Error("`context.addCase` cannot be called with an empty action type");if(r in a.sliceCaseReducersByType)throw new Error("`context.addCase` cannot be called with two reducers for the same action type: "+r);return a.sliceCaseReducersByType[r]=t,o},addMatcher:(e,t)=>(a.sliceMatchers.push({matcher:e,reducer:t}),o),exposeAction:(e,t)=>(a.actionCreators[e]=t,o),exposeCaseReducer:(e,t)=>(a.sliceCaseReducersByName[e]=t,o)};function c(){if("object"==typeof e.extraReducers)throw new Error("The object notation for `createSlice.extraReducers` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice");const[t={},r=[],i]="function"==typeof e.extraReducers?We(e.extraReducers):[e.extraReducers],n={...t,...a.sliceCaseReducersByType};return function(e,t){if("object"==typeof t)throw new Error("The object notation for `createReducer` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer");let r,[i,n,s]=We(t);if("function"==typeof e)r=()=>xe(e());else{const t=xe(e);r=()=>t}function a(e=r(),t){let a=[i[t.type],...n.filter((({matcher:e})=>e(t))).map((({reducer:e})=>e))];return 0===a.filter((e=>!!e)).length&&(a=[s]),a.reduce(((e,r)=>{if(r){if(C(e)){const i=r(e,t);return void 0===i?e:i}if(R(e))return oe(e,(e=>r(e,t)));{const i=r(e,t);if(void 0===i){if(null===e)return e;throw new Error("A case reducer on a non-draftable value must not return undefined")}return i}}return e}),e)}return a.getInitialState=r,a}(e.initialState,(e=>{for(let t in n)e.addCase(t,n[t]);for(let t of a.sliceMatchers)e.addMatcher(t.matcher,t.reducer);for(let t of r)e.addMatcher(t.matcher,t.reducer);i&&e.addDefaultCase(i)}))}s.forEach((i=>{const s=n[i],a={reducerName:i,type:it(r,i),createNotation:"function"==typeof e.reducers};!function(e){return"asyncThunk"===e._reducerDefinitionType}(s)?function({type:e,reducerName:t,createNotation:r},i,n){let s,a;if("reducer"in i){if(r&&!function(e){return"reducerWithPrepare"===e._reducerDefinitionType}(i))throw new Error("Please use the `create.preparedReducer` notation for prepared action creators with the `create` notation.");s=i.reducer,a=i.prepare}else s=i;n.addCase(e,s).exposeCaseReducer(t,s).exposeAction(t,a?ke(e,a):ke(e))}(a,s,o):function({type:e,reducerName:t},r,i,n){if(!n)throw new Error("Cannot use `create.asyncThunk` in the built-in `createSlice`. Use `buildCreateSlice({ creators: { asyncThunk: asyncThunkCreator } })` to create a customised version of `createSlice`.");const{payloadCreator:s,fulfilled:a,pending:o,rejected:c,settled:d,options:l}=r,p=n(e,s,l);i.exposeAction(t,p),a&&i.addCase(p.fulfilled,a);o&&i.addCase(p.pending,o);c&&i.addCase(p.rejected,c);d&&i.addMatcher(p.settled,d);i.exposeCaseReducer(t,{fulfilled:a||ot,pending:o||ot,rejected:c||ot,settled:d||ot})}(a,s,o,t)}));const d=e=>e,l=new Map;let p;function u(e,t){return p||(p=c()),p(e,t)}function h(){return p||(p=c()),p.getInitialState()}function m(t,r=!1){function i(e){let i=e[t];if(void 0===i){if(!r)throw new Error("selectSlice returned undefined for an uninjected slice reducer");i=h()}return i}function n(t=d){const i=je(l,r,{insert:()=>new WeakMap});return je(i,t,{insert:()=>{const i={};for(const[n,s]of Object.entries(e.selectors??{}))i[n]=st(s,t,h,r);return i}})}return{reducerPath:t,getSelectors:n,get selectors(){return n(i)},selectSlice:i}}const f={name:r,reducer:u,actions:a.actionCreators,caseReducers:a.sliceCaseReducersByName,getInitialState:h,...m(i),injectInto(e,{reducerPath:t,...r}={}){const n=t??i;return e.inject({reducerPath:n,reducer:u},r),{...f,...m(n,!0)}}};return f}}function st(e,t,r,i){function n(n,...s){let a=t(n);if(void 0===a){if(!i)throw new Error("selectState returned undefined for an uninjected slice reducer");a=r()}return e(a,...s)}return n.unwrapped=e,n}var at=nt();function ot(){}var ct="listener",dt="completed",lt="cancelled",pt=`task-${lt}`,ut=`task-${dt}`,ht=`${ct}-${lt}`,mt=`${ct}-${dt}`,ft=class{constructor(e){this.code=e,this.message=`task ${lt} (reason: ${e})`}name="TaskAbortError";message},gt=(e,t)=>{if("function"!=typeof e)throw new Error(`${t} is not a function`)},vt=()=>{},_t=(e,t=vt)=>(e.catch(t),e),bt=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),yt=(e,t)=>{const r=e.signal;r.aborted||("reason"in r||Object.defineProperty(r,"reason",{enumerable:!0,value:t,configurable:!0,writable:!0}),e.abort(t))},wt=e=>{if(e.aborted){const{reason:t}=e;throw new ft(t)}};function St(e,t){let r=vt;return new Promise(((i,n)=>{const s=()=>n(new ft(e.reason));e.aborted?s():(r=bt(e,s),t.finally((()=>r())).then(i,n))})).finally((()=>{r=vt}))}var Ct=e=>t=>_t(St(e,t).then((t=>(wt(e),t)))),Rt=e=>{const t=Ct(e);return e=>t(new Promise((t=>setTimeout(t,e))))},{assign:Tt}=Object,Pt={},kt="listenerMiddleware",Dt=(e,t)=>(r,i)=>{gt(r,"taskExecutor");const n=new AbortController;var s;s=n,bt(e,(()=>yt(s,e.reason)));const a=(async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(e){return{status:e instanceof ft?"cancelled":"rejected",error:e}}finally{t?.()}})((async()=>{wt(e),wt(n.signal);const t=await r({pause:Ct(n.signal),delay:Rt(n.signal),signal:n.signal});return wt(n.signal),t}),(()=>yt(n,ut)));return i?.autoJoin&&t.push(a.catch(vt)),{result:Ct(e)(a),cancel(){yt(n,pt)}}},Ot=(e,t)=>(r,i)=>_t((async(r,i)=>{wt(t);let n=()=>{};const s=[new Promise(((t,i)=>{let s=e({predicate:r,effect:(e,r)=>{r.unsubscribe(),t([e,r.getState(),r.getOriginalState()])}});n=()=>{s(),i()}}))];null!=i&&s.push(new Promise((e=>setTimeout(e,i,null))));try{const e=await St(t,Promise.race(s));return wt(t),e}finally{n()}})(r,i)),Et=e=>{let{type:t,actionCreator:r,matcher:i,predicate:n,effect:s}=e;if(t)n=ke(t).match;else if(r)t=r.type,n=r.match;else if(i)n=i;else if(!n)throw new Error("Creating or removing a listener requires one of the known fields for matching an action");return gt(s,"options.listener"),{predicate:n,type:t,effect:s}},It=Object.assign((e=>{const{type:t,predicate:r,effect:i}=Et(e);return{id:Ke(),effect:i,type:t,predicate:r,pending:new Set,unsubscribe:()=>{throw new Error("Unsubscribe not initialized")}}}),{withTypes:()=>It}),xt=e=>{e.pending.forEach((e=>{yt(e,ht)}))},jt=(e,t,r)=>{try{e(t,r)}catch(e){setTimeout((()=>{throw e}),0)}},Mt=Object.assign(ke(`${kt}/add`),{withTypes:()=>Mt}),Lt=ke(`${kt}/removeAll`),At=Object.assign(ke(`${kt}/remove`),{withTypes:()=>At}),Nt=(...e)=>{console.error(`${kt}/error`,...e)};function Bt(){}function Ft(){Ft.init.call(this)}function Ut(e){return void 0===e._maxListeners?Ft.defaultMaxListeners:e._maxListeners}function $t(e,t,r,i){var n,s,a,o;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((s=e._events)?(s.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),s=e._events),a=s[t]):(s=e._events=new Bt,e._eventsCount=0),a){if("function"==typeof a?a=s[t]=i?[r,a]:[a,r]:i?a.unshift(r):a.push(r),!a.warned&&(n=Ut(e))&&n>0&&a.length>n){a.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=a.length,o=c,"function"==typeof console.warn?console.warn(o):console.log(o)}}else a=s[t]=r,++e._eventsCount;return e}function zt(e,t,r){var i=!1;function n(){e.removeListener(t,n),i||(i=!0,r.apply(e,arguments))}return n.listener=r,n}function Vt(e){var t=this._events;if(t){var r=t[e];if("function"==typeof r)return 1;if(r)return r.length}return 0}function qt(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}Bt.prototype=Object.create(null),Ft.EventEmitter=Ft,Ft.usingDomains=!1,Ft.prototype.domain=void 0,Ft.prototype._events=void 0,Ft.prototype._maxListeners=void 0,Ft.defaultMaxListeners=10,Ft.init=function(){this.domain=null,Ft.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new Bt,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Ft.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},Ft.prototype.getMaxListeners=function(){return Ut(this)},Ft.prototype.emit=function(e){var t,r,i,n,s,a,o,c="error"===e;if(a=this._events)c=c&&null==a.error;else if(!c)return!1;if(o=this.domain,c){if(t=arguments[1],!o){if(t instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=o,t.domainThrown=!1,o.emit("error",t),!1}if(!(r=a[e]))return!1;var l="function"==typeof r;switch(i=arguments.length){case 1:!function(e,t,r){if(t)e.call(r);else for(var i=e.length,n=qt(e,i),s=0;s<i;++s)n[s].call(r)}(r,l,this);break;case 2:!function(e,t,r,i){if(t)e.call(r,i);else for(var n=e.length,s=qt(e,n),a=0;a<n;++a)s[a].call(r,i)}(r,l,this,arguments[1]);break;case 3:!function(e,t,r,i,n){if(t)e.call(r,i,n);else for(var s=e.length,a=qt(e,s),o=0;o<s;++o)a[o].call(r,i,n)}(r,l,this,arguments[1],arguments[2]);break;case 4:!function(e,t,r,i,n,s){if(t)e.call(r,i,n,s);else for(var a=e.length,o=qt(e,a),c=0;c<a;++c)o[c].call(r,i,n,s)}(r,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(n=new Array(i-1),s=1;s<i;s++)n[s-1]=arguments[s];!function(e,t,r,i){if(t)e.apply(r,i);else for(var n=e.length,s=qt(e,n),a=0;a<n;++a)s[a].apply(r,i)}(r,l,this,n)}return!0},Ft.prototype.addListener=function(e,t){return $t(this,e,t,!1)},Ft.prototype.on=Ft.prototype.addListener,Ft.prototype.prependListener=function(e,t){return $t(this,e,t,!0)},Ft.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,zt(this,e,t)),this},Ft.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,zt(this,e,t)),this},Ft.prototype.removeListener=function(e,t){var r,i,n,s,a;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(i=this._events))return this;if(!(r=i[e]))return this;if(r===t||r.listener&&r.listener===t)0==--this._eventsCount?this._events=new Bt:(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(n=-1,s=r.length;s-- >0;)if(r[s]===t||r[s].listener&&r[s].listener===t){a=r[s].listener,n=s;break}if(n<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new Bt,this;delete i[e]}else!function(e,t){for(var r=t,i=r+1,n=e.length;i<n;r+=1,i+=1)e[r]=e[i];e.pop()}(r,n);i.removeListener&&this.emit("removeListener",e,a||t)}return this},Ft.prototype.off=function(e,t){return this.removeListener(e,t)},Ft.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new Bt,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new Bt:delete r[e]),this;if(0===arguments.length){for(var i,n=Object.keys(r),s=0;s<n.length;++s)"removeListener"!==(i=n[s])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=new Bt,this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},Ft.prototype.listeners=function(e){var t,r,i=this._events;return r=i&&(t=i[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(t):[],r},Ft.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):Vt.call(e,t)},Ft.prototype.listenerCount=Vt,Ft.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};var Gt=Object.freeze({__proto__:null,EventEmitter:Ft,default:Ft}),Ht="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Wt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Kt(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var r=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,i.get?i:{enumerable:!0,get:function(){return e[t]}})})),r}var Jt,Qt,Zt={},Yt={exports:{}};function Xt(){if(Qt)return Jt;Qt=1;var e=1e3,t=60*e,r=60*t,i=24*r,n=7*i,s=365.25*i;function a(e,t,r,i){var n=t>=1.5*r;return Math.round(e/r)+" "+i+(n?"s":"")}return Jt=function(o,c){c=c||{};var d=typeof o;if("string"===d&&o.length>0)return function(a){if((a=String(a)).length>100)return;var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(a);if(!o)return;var c=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*s;case"weeks":case"week":case"w":return c*n;case"days":case"day":case"d":return c*i;case"hours":case"hour":case"hrs":case"hr":case"h":return c*r;case"minutes":case"minute":case"mins":case"min":case"m":return c*t;case"seconds":case"second":case"secs":case"sec":case"s":return c*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}(o);if("number"===d&&isFinite(o))return c.long?function(n){var s=Math.abs(n);if(s>=i)return a(n,s,i,"day");if(s>=r)return a(n,s,r,"hour");if(s>=t)return a(n,s,t,"minute");if(s>=e)return a(n,s,e,"second");return n+" ms"}(o):function(n){var s=Math.abs(n);if(s>=i)return Math.round(n/i)+"d";if(s>=r)return Math.round(n/r)+"h";if(s>=t)return Math.round(n/t)+"m";if(s>=e)return Math.round(n/e)+"s";return n+"ms"}(o);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(o))}}var er=function(e){function t(e){let i,n,s,a=null;function o(...e){if(!o.enabled)return;const r=o,n=Number(new Date),s=n-(i||n);r.diff=s,r.prev=i,r.curr=n,i=n,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let a=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((i,n)=>{if("%%"===i)return"%";a++;const s=t.formatters[n];if("function"==typeof s){const t=e[a];i=s.call(r,t),e.splice(a,1),a--}return i})),t.formatArgs.call(r,e);(r.log||t.log).apply(r,e)}return o.namespace=e,o.useColors=t.useColors(),o.color=t.selectColor(e),o.extend=r,o.destroy=t.destroy,Object.defineProperty(o,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==a?a:(n!==t.namespaces&&(n=t.namespaces,s=t.enabled(e)),s),set:e=>{a=e}}),"function"==typeof t.init&&t.init(o),o}function r(e,r){const i=t(this.namespace+(void 0===r?":":r)+e);return i.log=this.log,i}function i(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(i),...t.skips.map(i).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let r;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const i=("string"==typeof e?e:"").split(/[\s,]+/),n=i.length;for(r=0;r<n;r++)i[r]&&("-"===(e=i[r].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.slice(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){if("*"===e[e.length-1])return!0;let r,i;for(r=0,i=t.skips.length;r<i;r++)if(t.skips[r].test(e))return!1;for(r=0,i=t.names.length;r<i;r++)if(t.names[r].test(e))return!0;return!1},t.humanize=Xt(),t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((r=>{t[r]=e[r]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let r=0;for(let t=0;t<e.length;t++)r=(r<<5)-r+e.charCodeAt(t),r|=0;return t.colors[Math.abs(r)%t.colors.length]},t.enable(t.load()),t};!function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const r="color: "+this.color;t.splice(1,0,r,"color: inherit");let i=0,n=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(i++,"%c"===e&&(n=i))})),t.splice(n,0,r)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=er(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(Yt,Yt.exports);var tr=Yt.exports,rr={},ir={exports:{}};!function(e,t){!function(r,i){var n="function",s="undefined",a="object",o="string",c="major",d="model",l="name",p="type",u="vendor",h="version",m="architecture",f="console",g="mobile",v="tablet",_="smarttv",b="wearable",y="embedded",w="Amazon",S="Apple",C="ASUS",R="BlackBerry",T="Browser",P="Chrome",k="Firefox",D="Google",O="Huawei",E="LG",I="Microsoft",x="Motorola",j="Opera",M="Samsung",L="Sharp",A="Sony",N="Xiaomi",B="Zebra",F="Facebook",U="Chromium OS",$="Mac OS",z=function(e){for(var t={},r=0;r<e.length;r++)t[e[r].toUpperCase()]=e[r];return t},V=function(e,t){return typeof e===o&&-1!==q(t).indexOf(q(e))},q=function(e){return e.toLowerCase()},G=function(e,t){if(typeof e===o)return e=e.replace(/^\s\s*/,""),typeof t===s?e:e.substring(0,500)},H=function(e,t){for(var r,s,o,c,d,l,p=0;p<t.length&&!d;){var u=t[p],h=t[p+1];for(r=s=0;r<u.length&&!d&&u[r];)if(d=u[r++].exec(e))for(o=0;o<h.length;o++)l=d[++s],typeof(c=h[o])===a&&c.length>0?2===c.length?typeof c[1]==n?this[c[0]]=c[1].call(this,l):this[c[0]]=c[1]:3===c.length?typeof c[1]!==n||c[1].exec&&c[1].test?this[c[0]]=l?l.replace(c[1],c[2]):i:this[c[0]]=l?c[1].call(this,l,c[2]):i:4===c.length&&(this[c[0]]=l?c[3].call(this,l.replace(c[1],c[2])):i):this[c]=l||i;p+=2}},W=function(e,t){for(var r in t)if(typeof t[r]===a&&t[r].length>0){for(var n=0;n<t[r].length;n++)if(V(t[r][n],e))return"?"===r?i:r}else if(V(t[r],e))return"?"===r?i:r;return e},K={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},J={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[h,[l,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[h,[l,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[l,h],[/opios[\/ ]+([\w\.]+)/i],[h,[l,j+" Mini"]],[/\bopr\/([\w\.]+)/i],[h,[l,j]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[h,[l,"Baidu"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[l,h],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[h,[l,"UC"+T]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[h,[l,"WeChat"]],[/konqueror\/([\w\.]+)/i],[h,[l,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[h,[l,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[h,[l,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[h,[l,"Smart Lenovo "+T]],[/(avast|avg)\/([\w\.]+)/i],[[l,/(.+)/,"$1 Secure "+T],h],[/\bfocus\/([\w\.]+)/i],[h,[l,k+" Focus"]],[/\bopt\/([\w\.]+)/i],[h,[l,j+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[h,[l,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[h,[l,"Dolphin"]],[/coast\/([\w\.]+)/i],[h,[l,j+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[h,[l,"MIUI "+T]],[/fxios\/([-\w\.]+)/i],[h,[l,k]],[/\bqihu|(qi?ho?o?|360)browser/i],[[l,"360 "+T]],[/(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i],[[l,/(.+)/,"$1 "+T],h],[/samsungbrowser\/([\w\.]+)/i],[h,[l,M+" Internet"]],[/(comodo_dragon)\/([\w\.]+)/i],[[l,/_/g," "],h],[/metasr[\/ ]?([\d\.]+)/i],[h,[l,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[l,"Sogou Mobile"],h],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i],[l,h],[/(lbbrowser)/i,/\[(linkedin)app\]/i],[l],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[l,F],h],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[l,h],[/\bgsa\/([\w\.]+) .*safari\//i],[h,[l,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[h,[l,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[h,[l,P+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[l,P+" WebView"],h],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[h,[l,"Android "+T]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[l,h],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[h,[l,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[h,l],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[l,[h,W,{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[l,h],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[l,"Netscape"],h],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[h,[l,k+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i,/panasonic;(viera)/i],[l,h],[/(cobalt)\/([\w\.]+)/i],[l,[h,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[m,"amd64"]],[/(ia32(?=;))/i],[[m,q]],[/((?:i[346]|x)86)[;\)]/i],[[m,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[m,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[m,"armhf"]],[/windows (ce|mobile); ppc;/i],[[m,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[m,/ower/,"",q]],[/(sun4\w)[;\)]/i],[[m,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[m,q]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[d,[u,M],[p,v]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[d,[u,M],[p,g]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[d,[u,S],[p,g]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[d,[u,S],[p,v]],[/(macintosh);/i],[d,[u,S]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[d,[u,L],[p,g]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[d,[u,O],[p,v]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[d,[u,O],[p,g]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[d,/_/g," "],[u,N],[p,g]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[d,/_/g," "],[u,N],[p,v]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[d,[u,"OPPO"],[p,g]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[d,[u,"Vivo"],[p,g]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[d,[u,"Realme"],[p,g]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[d,[u,x],[p,g]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[d,[u,x],[p,v]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[d,[u,E],[p,v]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[d,[u,E],[p,g]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[d,[u,"Lenovo"],[p,v]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[d,/_/g," "],[u,"Nokia"],[p,g]],[/(pixel c)\b/i],[d,[u,D],[p,v]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[d,[u,D],[p,g]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[d,[u,A],[p,g]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[d,"Xperia Tablet"],[u,A],[p,v]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[d,[u,"OnePlus"],[p,g]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[d,[u,w],[p,v]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[d,/(.+)/g,"Fire Phone $1"],[u,w],[p,g]],[/(playbook);[-\w\),; ]+(rim)/i],[d,u,[p,v]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[d,[u,R],[p,g]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[d,[u,C],[p,v]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[d,[u,C],[p,g]],[/(nexus 9)/i],[d,[u,"HTC"],[p,v]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[u,[d,/_/g," "],[p,g]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[d,[u,"Acer"],[p,v]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[d,[u,"Meizu"],[p,g]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[d,[u,"Ulefone"],[p,g]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[u,d,[p,g]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[u,d,[p,v]],[/(surface duo)/i],[d,[u,I],[p,v]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[d,[u,"Fairphone"],[p,g]],[/(u304aa)/i],[d,[u,"AT&T"],[p,g]],[/\bsie-(\w*)/i],[d,[u,"Siemens"],[p,g]],[/\b(rct\w+) b/i],[d,[u,"RCA"],[p,v]],[/\b(venue[\d ]{2,7}) b/i],[d,[u,"Dell"],[p,v]],[/\b(q(?:mv|ta)\w+) b/i],[d,[u,"Verizon"],[p,v]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[d,[u,"Barnes & Noble"],[p,v]],[/\b(tm\d{3}\w+) b/i],[d,[u,"NuVision"],[p,v]],[/\b(k88) b/i],[d,[u,"ZTE"],[p,v]],[/\b(nx\d{3}j) b/i],[d,[u,"ZTE"],[p,g]],[/\b(gen\d{3}) b.+49h/i],[d,[u,"Swiss"],[p,g]],[/\b(zur\d{3}) b/i],[d,[u,"Swiss"],[p,v]],[/\b((zeki)?tb.*\b) b/i],[d,[u,"Zeki"],[p,v]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[u,"Dragon Touch"],d,[p,v]],[/\b(ns-?\w{0,9}) b/i],[d,[u,"Insignia"],[p,v]],[/\b((nxa|next)-?\w{0,9}) b/i],[d,[u,"NextBook"],[p,v]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[u,"Voice"],d,[p,g]],[/\b(lvtel\-)?(v1[12]) b/i],[[u,"LvTel"],d,[p,g]],[/\b(ph-1) /i],[d,[u,"Essential"],[p,g]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[d,[u,"Envizen"],[p,v]],[/\b(trio[-\w\. ]+) b/i],[d,[u,"MachSpeed"],[p,v]],[/\btu_(1491) b/i],[d,[u,"Rotor"],[p,v]],[/(shield[\w ]+) b/i],[d,[u,"Nvidia"],[p,v]],[/(sprint) (\w+)/i],[u,d,[p,g]],[/(kin\.[onetw]{3})/i],[[d,/\./g," "],[u,I],[p,g]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[d,[u,B],[p,v]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[d,[u,B],[p,g]],[/smart-tv.+(samsung)/i],[u,[p,_]],[/hbbtv.+maple;(\d+)/i],[[d,/^/,"SmartTV"],[u,M],[p,_]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[u,E],[p,_]],[/(apple) ?tv/i],[u,[d,S+" TV"],[p,_]],[/crkey/i],[[d,P+"cast"],[u,D],[p,_]],[/droid.+aft(\w+)( bui|\))/i],[d,[u,w],[p,_]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[d,[u,L],[p,_]],[/(bravia[\w ]+)( bui|\))/i],[d,[u,A],[p,_]],[/(mitv-\w{5}) bui/i],[d,[u,N],[p,_]],[/Hbbtv.*(technisat) (.*);/i],[u,d,[p,_]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[u,G],[d,G],[p,_]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[p,_]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[u,d,[p,f]],[/droid.+; (shield) bui/i],[d,[u,"Nvidia"],[p,f]],[/(playstation [345portablevi]+)/i],[d,[u,A],[p,f]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[d,[u,I],[p,f]],[/((pebble))app/i],[u,d,[p,b]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[d,[u,S],[p,b]],[/droid.+; (glass) \d/i],[d,[u,D],[p,b]],[/droid.+; (wt63?0{2,3})\)/i],[d,[u,B],[p,b]],[/(quest( 2| pro)?)/i],[d,[u,F],[p,b]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[u,[p,y]],[/(aeobc)\b/i],[d,[u,w],[p,y]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[d,[p,g]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[d,[p,v]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[p,v]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[p,g]],[/(android[-\w\. ]{0,9});.+buil/i],[d,[u,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[h,[l,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[h,[l,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[l,h],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[h,l]],os:[[/microsoft (windows) (vista|xp)/i],[l,h],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[l,[h,W,K]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[h,W,K],[l,"Windows"]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[h,/_/g,"."],[l,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[l,$],[h,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[h,l],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[l,h],[/\(bb(10);/i],[h,[l,R]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[h,[l,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[h,[l,k+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[h,[l,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[h,[l,"watchOS"]],[/crkey\/([\d\.]+)/i],[h,[l,P+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[l,U],h],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[l,h],[/(sunos) ?([\w\.\d]*)/i],[[l,"Solaris"],h],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[l,h]]},Q=function(e,t){if(typeof e===a&&(t=e,e=i),!(this instanceof Q))return new Q(e,t).getResult();var f=typeof r!==s&&r.navigator?r.navigator:i,_=e||(f&&f.userAgent?f.userAgent:""),b=f&&f.userAgentData?f.userAgentData:i,y=t?function(e,t){var r={};for(var i in e)t[i]&&t[i].length%2==0?r[i]=t[i].concat(e[i]):r[i]=e[i];return r}(J,t):J,w=f&&f.userAgent==_;return this.getBrowser=function(){var e,t={};return t[l]=i,t[h]=i,H.call(t,_,y.browser),t[c]=typeof(e=t[h])===o?e.replace(/[^\d\.]/g,"").split(".")[0]:i,w&&f&&f.brave&&typeof f.brave.isBrave==n&&(t[l]="Brave"),t},this.getCPU=function(){var e={};return e[m]=i,H.call(e,_,y.cpu),e},this.getDevice=function(){var e={};return e[u]=i,e[d]=i,e[p]=i,H.call(e,_,y.device),w&&!e[p]&&b&&b.mobile&&(e[p]=g),w&&"Macintosh"==e[d]&&f&&typeof f.standalone!==s&&f.maxTouchPoints&&f.maxTouchPoints>2&&(e[d]="iPad",e[p]=v),e},this.getEngine=function(){var e={};return e[l]=i,e[h]=i,H.call(e,_,y.engine),e},this.getOS=function(){var e={};return e[l]=i,e[h]=i,H.call(e,_,y.os),w&&!e[l]&&b&&"Unknown"!=b.platform&&(e[l]=b.platform.replace(/chrome os/i,U).replace(/macos/i,$)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return _},this.setUA=function(e){return _=typeof e===o&&e.length>500?G(e,500):e,this},this.setUA(_),this};Q.VERSION="1.0.37",Q.BROWSER=z([l,h,c]),Q.CPU=z([m]),Q.DEVICE=z([d,u,p,f,g,_,v,b,y]),Q.ENGINE=Q.OS=z([l,h]),e.exports&&(t=e.exports=Q),t.UAParser=Q;var Z=typeof r!==s&&(r.jQuery||r.Zepto);if(Z&&!Z.ua){var Y=new Q;Z.ua=Y.getResult(),Z.ua.get=function(){return Y.getUA()},Z.ua.set=function(e){Y.setUA(e);var t=Y.getResult();for(var r in t)Z.ua[r]=t[r]}}}("object"==typeof window?window:Ht)}(ir,ir.exports);var nr=ir.exports,sr={},ar=Ht&&Ht.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(sr,"__esModule",{value:!0}),sr.Logger=void 0;const or=ar(tr),cr="mediasoup-client";sr.Logger=class{constructor(e){e?(this._debug=(0,or.default)(`${cr}:${e}`),this._warn=(0,or.default)(`${cr}:WARN:${e}`),this._error=(0,or.default)(`${cr}:ERROR:${e}`)):(this._debug=(0,or.default)(cr),this._warn=(0,or.default)(`${cr}:WARN`),this._error=(0,or.default)(`${cr}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}};var dr={},lr=Kt(Gt);Object.defineProperty(dr,"__esModule",{value:!0}),dr.EnhancedEventEmitter=void 0;const pr=lr,ur=new sr.Logger("EnhancedEventEmitter");class hr extends pr.EventEmitter{constructor(){super(),this.setMaxListeners(1/0)}emit(e,...t){return super.emit(e,...t)}safeEmit(e,...t){const r=super.listenerCount(e);try{return super.emit(e,...t)}catch(t){return ur.error("safeEmit() | event listener threw an error [eventName:%s]:%o",e,t),Boolean(r)}}on(e,t){return super.on(e,t),this}off(e,t){return super.off(e,t),this}addListener(e,t){return super.on(e,t),this}prependListener(e,t){return super.prependListener(e,t),this}once(e,t){return super.once(e,t),this}prependOnceListener(e,t){return super.prependOnceListener(e,t),this}removeListener(e,t){return super.off(e,t),this}removeAllListeners(e){return super.removeAllListeners(e),this}listenerCount(e){return super.listenerCount(e)}listeners(e){return super.listeners(e)}rawListeners(e){return super.rawListeners(e)}}dr.EnhancedEventEmitter=hr;var mr={};Object.defineProperty(mr,"__esModule",{value:!0}),mr.InvalidStateError=mr.UnsupportedError=void 0;class fr extends Error{constructor(e){super(e),this.name="UnsupportedError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,fr):this.stack=new Error(e).stack}}mr.UnsupportedError=fr;class gr extends Error{constructor(e){super(e),this.name="InvalidStateError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,gr):this.stack=new Error(e).stack}}mr.InvalidStateError=gr;var vr={};Object.defineProperty(vr,"__esModule",{value:!0}),vr.generateRandomNumber=vr.clone=void 0,vr.clone=function(e){return void 0===e?void 0:Number.isNaN(e)?NaN:"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))},vr.generateRandomNumber=function(){return Math.round(1e7*Math.random())};var _r={},br={},yr={},wr=Ht&&Ht.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(yr,"__esModule",{value:!0}),yr.Logger=void 0;const Sr=wr(tr),Cr="h264-profile-level-id";yr.Logger=class{constructor(e){e?(this._debug=(0,Sr.default)(`${Cr}:${e}`),this._warn=(0,Sr.default)(`${Cr}:WARN:${e}`),this._error=(0,Sr.default)(`${Cr}:ERROR:${e}`)):(this._debug=(0,Sr.default)(Cr),this._warn=(0,Sr.default)(`${Cr}:WARN`),this._error=(0,Sr.default)(`${Cr}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}},Object.defineProperty(br,"__esModule",{value:!0}),br.generateProfileLevelIdStringForAnswer=br.isSameProfile=br.parseSdpProfileLevelId=br.levelToString=br.profileToString=br.profileLevelIdToString=br.parseProfileLevelId=br.ProfileLevelId=br.Level=br.Profile=void 0;const Rr=new yr.Logger;var Tr,Pr;!function(e){e[e.ConstrainedBaseline=1]="ConstrainedBaseline",e[e.Baseline=2]="Baseline",e[e.Main=3]="Main",e[e.ConstrainedHigh=4]="ConstrainedHigh",e[e.High=5]="High",e[e.PredictiveHigh444=6]="PredictiveHigh444"}(Tr||(br.Profile=Tr={})),function(e){e[e.L1_b=0]="L1_b",e[e.L1=10]="L1",e[e.L1_1=11]="L1_1",e[e.L1_2=12]="L1_2",e[e.L1_3=13]="L1_3",e[e.L2=20]="L2",e[e.L2_1=21]="L2_1",e[e.L2_2=22]="L2_2",e[e.L3=30]="L3",e[e.L3_1=31]="L3_1",e[e.L3_2=32]="L3_2",e[e.L4=40]="L4",e[e.L4_1=41]="L4_1",e[e.L4_2=42]="L4_2",e[e.L5=50]="L5",e[e.L5_1=51]="L5_1",e[e.L5_2=52]="L5_2"}(Pr||(br.Level=Pr={}));class kr{constructor(e,t){this.profile=e,this.level=t}}br.ProfileLevelId=kr;const Dr=new kr(Tr.ConstrainedBaseline,Pr.L3_1);class Or{constructor(e){this.mask=~Lr("x",e),this.masked_value=Lr("1",e)}isMatch(e){return this.masked_value===(e&this.mask)}}class Er{constructor(e,t,r){this.profile_idc=e,this.profile_iop=t,this.profile=r}}const Ir=[new Er(66,new Or("x1xx0000"),Tr.ConstrainedBaseline),new Er(77,new Or("1xxx0000"),Tr.ConstrainedBaseline),new Er(88,new Or("11xx0000"),Tr.ConstrainedBaseline),new Er(66,new Or("x0xx0000"),Tr.Baseline),new Er(88,new Or("10xx0000"),Tr.Baseline),new Er(77,new Or("0x0x0000"),Tr.Main),new Er(100,new Or("00000000"),Tr.High),new Er(100,new Or("00001100"),Tr.ConstrainedHigh),new Er(244,new Or("00000000"),Tr.PredictiveHigh444)];function xr(e){if("string"!=typeof e||6!==e.length)return;const t=parseInt(e,16);if(0===t)return;const r=255&t,i=t>>8&255,n=t>>16&255;let s;switch(r){case Pr.L1_1:s=0!=(16&i)?Pr.L1_b:Pr.L1_1;break;case Pr.L1:case Pr.L1_2:case Pr.L1_3:case Pr.L2:case Pr.L2_1:case Pr.L2_2:case Pr.L3:case Pr.L3_1:case Pr.L3_2:case Pr.L4:case Pr.L4_1:case Pr.L4_2:case Pr.L5:case Pr.L5_1:case Pr.L5_2:s=r;break;default:return void Rr.warn(`parseProfileLevelId() | unrecognized level_idc [str:${e}, level_idc:${r}]`)}for(const e of Ir)if(n===e.profile_idc&&e.profile_iop.isMatch(i))return new kr(e.profile,s);Rr.warn(`parseProfileLevelId() | unrecognized profile_idc/profile_iop combination [str:${e}, profile_idc:${n}, profile_iop:${i}]`)}function jr(e){if(e.level==Pr.L1_b)switch(e.profile){case Tr.ConstrainedBaseline:return"42f00b";case Tr.Baseline:return"42100b";case Tr.Main:return"4d100b";default:return void Rr.warn(`profileLevelIdToString() | Level 1_b not is allowed for profile ${e.profile}`)}let t;switch(e.profile){case Tr.ConstrainedBaseline:t="42e0";break;case Tr.Baseline:t="4200";break;case Tr.Main:t="4d00";break;case Tr.ConstrainedHigh:t="640c";break;case Tr.High:t="6400";break;case Tr.PredictiveHigh444:t="f400";break;default:return void Rr.warn(`profileLevelIdToString() | unrecognized profile ${e.profile}`)}let r=e.level.toString(16);return 1===r.length&&(r=`0${r}`),`${t}${r}`}function Mr(e={}){const t=e["profile-level-id"];return t?xr(t):Dr}function Lr(e,t){return Number(t[0]===e)<<7|Number(t[1]===e)<<6|Number(t[2]===e)<<5|Number(t[3]===e)<<4|Number(t[4]===e)<<3|Number(t[5]===e)<<2|Number(t[6]===e)<<1|Number(t[7]===e)<<0}function Ar(e={}){const t=e["level-asymmetry-allowed"];return!0===t||1===t||"1"===t}br.parseProfileLevelId=xr,br.profileLevelIdToString=jr,br.profileToString=function(e){switch(e){case Tr.ConstrainedBaseline:return"ConstrainedBaseline";case Tr.Baseline:return"Baseline";case Tr.Main:return"Main";case Tr.ConstrainedHigh:return"ConstrainedHigh";case Tr.High:return"High";case Tr.PredictiveHigh444:return"PredictiveHigh444";default:return void Rr.warn(`profileToString() | unrecognized profile ${e}`)}},br.levelToString=function(e){switch(e){case Pr.L1_b:return"1b";case Pr.L1:return"1";case Pr.L1_1:return"1.1";case Pr.L1_2:return"1.2";case Pr.L1_3:return"1.3";case Pr.L2:return"2";case Pr.L2_1:return"2.1";case Pr.L2_2:return"2.2";case Pr.L3:return"3";case Pr.L3_1:return"3.1";case Pr.L3_2:return"3.2";case Pr.L4:return"4";case Pr.L4_1:return"4.1";case Pr.L4_2:return"4.2";case Pr.L5:return"5";case Pr.L5_1:return"5.1";case Pr.L5_2:return"5.2";default:return void Rr.warn(`levelToString() | unrecognized level ${e}`)}},br.parseSdpProfileLevelId=Mr,br.isSameProfile=function(e={},t={}){const r=Mr(e),i=Mr(t);return Boolean(r&&i&&r.profile===i.profile)},br.generateProfileLevelIdStringForAnswer=function(e={},t={}){if(!e["profile-level-id"]&&!t["profile-level-id"])return void Rr.warn("generateProfileLevelIdStringForAnswer() | profile-level-id missing in local and remote params");const r=Mr(e),i=Mr(t);if(!r)throw new TypeError("invalid local_profile_level_id");if(!i)throw new TypeError("invalid remote_profile_level_id");if(r.profile!==i.profile)throw new TypeError("H264 Profile mismatch");const n=Ar(e)&&Ar(t),s=r.level,a=i.level,o=function(e,t){return e===Pr.L1_b?t!==Pr.L1&&t!==Pr.L1_b:t===Pr.L1_b?e!==Pr.L1:e<t}(c=s,d=a)?c:d;var c,d;const l=n?s:o;return Rr.debug(`generateProfileLevelIdStringForAnswer() | result [profile:${r.profile}, level:${l}]`),jr(new kr(r.profile,l))};var Nr=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Br=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Fr=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Nr(t,e,r);return Br(t,e),t};Object.defineProperty(_r,"__esModule",{value:!0}),_r.canReceive=_r.canSend=_r.generateProbatorRtpParameters=_r.reduceCodecs=_r.getSendingRemoteRtpParameters=_r.getSendingRtpParameters=_r.getRecvRtpCapabilities=_r.getExtendedRtpCapabilities=_r.validateSctpCapabilities=_r.validateSctpStreamParameters=_r.validateRtpParameters=_r.validateRtpCapabilities=void 0;const Ur=Fr(br),$r=Fr(vr);function zr(e){if("object"!=typeof e)throw new TypeError("params is not an object");if(e.mid&&"string"!=typeof e.mid)throw new TypeError("params.mid is not a string");if(!Array.isArray(e.codecs))throw new TypeError("missing params.codecs");for(const t of e.codecs)Hr(t);if(e.headerExtensions&&!Array.isArray(e.headerExtensions))throw new TypeError("params.headerExtensions is not an array");e.headerExtensions||(e.headerExtensions=[]);for(const t of e.headerExtensions)Wr(t);if(e.encodings&&!Array.isArray(e.encodings))throw new TypeError("params.encodings is not an array");e.encodings||(e.encodings=[]);for(const t of e.encodings)Kr(t);if(e.rtcp&&"object"!=typeof e.rtcp)throw new TypeError("params.rtcp is not an object");e.rtcp||(e.rtcp={}),function(e){if("object"!=typeof e)throw new TypeError("rtcp is not an object");if(e.cname&&"string"!=typeof e.cname)throw new TypeError("invalid rtcp.cname");e.reducedSize&&"boolean"==typeof e.reducedSize||(e.reducedSize=!0)}(e.rtcp)}function Vr(e){const t=new RegExp("^(audio|video)/(.+)","i");if("object"!=typeof e)throw new TypeError("codec is not an object");if(!e.mimeType||"string"!=typeof e.mimeType)throw new TypeError("missing codec.mimeType");const r=t.exec(e.mimeType);if(!r)throw new TypeError("invalid codec.mimeType");if(e.kind=r[1].toLowerCase(),e.preferredPayloadType&&"number"!=typeof e.preferredPayloadType)throw new TypeError("invalid codec.preferredPayloadType");if("number"!=typeof e.clockRate)throw new TypeError("missing codec.clockRate");"audio"===e.kind?"number"!=typeof e.channels&&(e.channels=1):delete e.channels,e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError(`invalid codec parameter [key:${t}s, value:${r}]`);if("apt"===t&&"number"!=typeof r)throw new TypeError("invalid codec apt parameter")}e.rtcpFeedback&&Array.isArray(e.rtcpFeedback)||(e.rtcpFeedback=[]);for(const t of e.rtcpFeedback)qr(t)}function qr(e){if("object"!=typeof e)throw new TypeError("fb is not an object");if(!e.type||"string"!=typeof e.type)throw new TypeError("missing fb.type");e.parameter&&"string"==typeof e.parameter||(e.parameter="")}function Gr(e){if("object"!=typeof e)throw new TypeError("ext is not an object");if("audio"!==e.kind&&"video"!==e.kind)throw new TypeError("invalid ext.kind");if(!e.uri||"string"!=typeof e.uri)throw new TypeError("missing ext.uri");if("number"!=typeof e.preferredId)throw new TypeError("missing ext.preferredId");if(e.preferredEncrypt&&"boolean"!=typeof e.preferredEncrypt)throw new TypeError("invalid ext.preferredEncrypt");if(e.preferredEncrypt||(e.preferredEncrypt=!1),e.direction&&"string"!=typeof e.direction)throw new TypeError("invalid ext.direction");e.direction||(e.direction="sendrecv")}function Hr(e){const t=new RegExp("^(audio|video)/(.+)","i");if("object"!=typeof e)throw new TypeError("codec is not an object");if(!e.mimeType||"string"!=typeof e.mimeType)throw new TypeError("missing codec.mimeType");const r=t.exec(e.mimeType);if(!r)throw new TypeError("invalid codec.mimeType");if("number"!=typeof e.payloadType)throw new TypeError("missing codec.payloadType");if("number"!=typeof e.clockRate)throw new TypeError("missing codec.clockRate");"audio"===r[1].toLowerCase()?"number"!=typeof e.channels&&(e.channels=1):delete e.channels,e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError(`invalid codec parameter [key:${t}s, value:${r}]`);if("apt"===t&&"number"!=typeof r)throw new TypeError("invalid codec apt parameter")}e.rtcpFeedback&&Array.isArray(e.rtcpFeedback)||(e.rtcpFeedback=[]);for(const t of e.rtcpFeedback)qr(t)}function Wr(e){if("object"!=typeof e)throw new TypeError("ext is not an object");if(!e.uri||"string"!=typeof e.uri)throw new TypeError("missing ext.uri");if("number"!=typeof e.id)throw new TypeError("missing ext.id");if(e.encrypt&&"boolean"!=typeof e.encrypt)throw new TypeError("invalid ext.encrypt");e.encrypt||(e.encrypt=!1),e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError("invalid header extension parameter")}}function Kr(e){if("object"!=typeof e)throw new TypeError("encoding is not an object");if(e.ssrc&&"number"!=typeof e.ssrc)throw new TypeError("invalid encoding.ssrc");if(e.rid&&"string"!=typeof e.rid)throw new TypeError("invalid encoding.rid");if(e.rtx&&"object"!=typeof e.rtx)throw new TypeError("invalid encoding.rtx");if(e.rtx&&"number"!=typeof e.rtx.ssrc)throw new TypeError("missing encoding.rtx.ssrc");if(e.dtx&&"boolean"==typeof e.dtx||(e.dtx=!1),e.scalabilityMode&&"string"!=typeof e.scalabilityMode)throw new TypeError("invalid encoding.scalabilityMode")}function Jr(e){return!!e&&/.+\/rtx$/i.test(e.mimeType)}function Qr(e,t,{strict:r=!1,modify:i=!1}={}){const n=e.mimeType.toLowerCase();if(n!==t.mimeType.toLowerCase())return!1;if(e.clockRate!==t.clockRate)return!1;if(e.channels!==t.channels)return!1;switch(n){case"video/h264":if(r){if((e.parameters["packetization-mode"]||0)!==(t.parameters["packetization-mode"]||0))return!1;if(!Ur.isSameProfile(e.parameters,t.parameters))return!1;let r;try{r=Ur.generateProfileLevelIdStringForAnswer(e.parameters,t.parameters)}catch(e){return!1}i&&(r?(e.parameters["profile-level-id"]=r,t.parameters["profile-level-id"]=r):(delete e.parameters["profile-level-id"],delete t.parameters["profile-level-id"]))}break;case"video/vp9":if(r){if((e.parameters["profile-id"]||0)!==(t.parameters["profile-id"]||0))return!1}}return!0}function Zr(e,t){return(!e.kind||!t.kind||e.kind===t.kind)&&e.uri===t.uri}function Yr(e,t){const r=[];for(const i of e.rtcpFeedback||[]){const e=(t.rtcpFeedback||[]).find((e=>e.type===i.type&&(e.parameter===i.parameter||!e.parameter&&!i.parameter)));e&&r.push(e)}return r}_r.validateRtpCapabilities=function(e){if("object"!=typeof e)throw new TypeError("caps is not an object");if(e.codecs&&!Array.isArray(e.codecs))throw new TypeError("caps.codecs is not an array");e.codecs||(e.codecs=[]);for(const t of e.codecs)Vr(t);if(e.headerExtensions&&!Array.isArray(e.headerExtensions))throw new TypeError("caps.headerExtensions is not an array");e.headerExtensions||(e.headerExtensions=[]);for(const t of e.headerExtensions)Gr(t)},_r.validateRtpParameters=zr,_r.validateSctpStreamParameters=function(e){if("object"!=typeof e)throw new TypeError("params is not an object");if("number"!=typeof e.streamId)throw new TypeError("missing params.streamId");let t=!1;if("boolean"==typeof e.ordered?t=!0:e.ordered=!0,e.maxPacketLifeTime&&"number"!=typeof e.maxPacketLifeTime)throw new TypeError("invalid params.maxPacketLifeTime");if(e.maxRetransmits&&"number"!=typeof e.maxRetransmits)throw new TypeError("invalid params.maxRetransmits");if(e.maxPacketLifeTime&&e.maxRetransmits)throw new TypeError("cannot provide both maxPacketLifeTime and maxRetransmits");if(t&&e.ordered&&(e.maxPacketLifeTime||e.maxRetransmits))throw new TypeError("cannot be ordered with maxPacketLifeTime or maxRetransmits");if(t||!e.maxPacketLifeTime&&!e.maxRetransmits||(e.ordered=!1),e.label&&"string"!=typeof e.label)throw new TypeError("invalid params.label");if(e.protocol&&"string"!=typeof e.protocol)throw new TypeError("invalid params.protocol")},_r.validateSctpCapabilities=function(e){if("object"!=typeof e)throw new TypeError("caps is not an object");if(!e.numStreams||"object"!=typeof e.numStreams)throw new TypeError("missing caps.numStreams");!function(e){if("object"!=typeof e)throw new TypeError("numStreams is not an object");if("number"!=typeof e.OS)throw new TypeError("missing numStreams.OS");if("number"!=typeof e.MIS)throw new TypeError("missing numStreams.MIS")}(e.numStreams)},_r.getExtendedRtpCapabilities=function(e,t){const r={codecs:[],headerExtensions:[]};for(const i of t.codecs||[]){if(Jr(i))continue;const t=(e.codecs||[]).find((e=>Qr(e,i,{strict:!0,modify:!0})));if(!t)continue;const n={mimeType:t.mimeType,kind:t.kind,clockRate:t.clockRate,channels:t.channels,localPayloadType:t.preferredPayloadType,localRtxPayloadType:void 0,remotePayloadType:i.preferredPayloadType,remoteRtxPayloadType:void 0,localParameters:t.parameters,remoteParameters:i.parameters,rtcpFeedback:Yr(t,i)};r.codecs.push(n)}for(const i of r.codecs){const r=e.codecs.find((e=>Jr(e)&&e.parameters.apt===i.localPayloadType)),n=t.codecs.find((e=>Jr(e)&&e.parameters.apt===i.remotePayloadType));r&&n&&(i.localRtxPayloadType=r.preferredPayloadType,i.remoteRtxPayloadType=n.preferredPayloadType)}for(const i of t.headerExtensions){const t=e.headerExtensions.find((e=>Zr(e,i)));if(!t)continue;const n={kind:i.kind,uri:i.uri,sendId:t.preferredId,recvId:i.preferredId,encrypt:t.preferredEncrypt,direction:"sendrecv"};switch(i.direction){case"sendrecv":n.direction="sendrecv";break;case"recvonly":n.direction="sendonly";break;case"sendonly":n.direction="recvonly";break;case"inactive":n.direction="inactive"}r.headerExtensions.push(n)}return r},_r.getRecvRtpCapabilities=function(e){const t={codecs:[],headerExtensions:[]};for(const r of e.codecs){const e={mimeType:r.mimeType,kind:r.kind,preferredPayloadType:r.remotePayloadType,clockRate:r.clockRate,channels:r.channels,parameters:r.localParameters,rtcpFeedback:r.rtcpFeedback};if(t.codecs.push(e),!r.remoteRtxPayloadType)continue;const i={mimeType:`${r.kind}/rtx`,kind:r.kind,preferredPayloadType:r.remoteRtxPayloadType,clockRate:r.clockRate,parameters:{apt:r.remotePayloadType},rtcpFeedback:[]};t.codecs.push(i)}for(const r of e.headerExtensions){if("sendrecv"!==r.direction&&"recvonly"!==r.direction)continue;const e={kind:r.kind,uri:r.uri,preferredId:r.recvId,preferredEncrypt:r.encrypt,direction:r.direction};t.headerExtensions.push(e)}return t},_r.getSendingRtpParameters=function(e,t){const r={mid:void 0,codecs:[],headerExtensions:[],encodings:[],rtcp:{}};for(const i of t.codecs){if(i.kind!==e)continue;const t={mimeType:i.mimeType,payloadType:i.localPayloadType,clockRate:i.clockRate,channels:i.channels,parameters:i.localParameters,rtcpFeedback:i.rtcpFeedback};if(r.codecs.push(t),i.localRtxPayloadType){const e={mimeType:`${i.kind}/rtx`,payloadType:i.localRtxPayloadType,clockRate:i.clockRate,parameters:{apt:i.localPayloadType},rtcpFeedback:[]};r.codecs.push(e)}}for(const i of t.headerExtensions){if(i.kind&&i.kind!==e||"sendrecv"!==i.direction&&"sendonly"!==i.direction)continue;const t={uri:i.uri,id:i.sendId,encrypt:i.encrypt,parameters:{}};r.headerExtensions.push(t)}return r},_r.getSendingRemoteRtpParameters=function(e,t){const r={mid:void 0,codecs:[],headerExtensions:[],encodings:[],rtcp:{}};for(const i of t.codecs){if(i.kind!==e)continue;const t={mimeType:i.mimeType,payloadType:i.localPayloadType,clockRate:i.clockRate,channels:i.channels,parameters:i.remoteParameters,rtcpFeedback:i.rtcpFeedback};if(r.codecs.push(t),i.localRtxPayloadType){const e={mimeType:`${i.kind}/rtx`,payloadType:i.localRtxPayloadType,clockRate:i.clockRate,parameters:{apt:i.localPayloadType},rtcpFeedback:[]};r.codecs.push(e)}}for(const i of t.headerExtensions){if(i.kind&&i.kind!==e||"sendrecv"!==i.direction&&"sendonly"!==i.direction)continue;const t={uri:i.uri,id:i.sendId,encrypt:i.encrypt,parameters:{}};r.headerExtensions.push(t)}if(r.headerExtensions.some((e=>"http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"===e.uri)))for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"goog-remb"!==e.type));else if(r.headerExtensions.some((e=>"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"===e.uri)))for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"transport-cc"!==e.type));else for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"transport-cc"!==e.type&&"goog-remb"!==e.type));return r},_r.reduceCodecs=function(e,t){const r=[];if(t){for(let i=0;i<e.length;++i)if(Qr(e[i],t)){r.push(e[i]),Jr(e[i+1])&&r.push(e[i+1]);break}if(0===r.length)throw new TypeError("no matching codec found")}else r.push(e[0]),Jr(e[1])&&r.push(e[1]);return r},_r.generateProbatorRtpParameters=function(e){zr(e=$r.clone(e));const t={mid:"probator",codecs:[],headerExtensions:[],encodings:[{ssrc:1234}],rtcp:{cname:"probator"}};return t.codecs.push(e.codecs[0]),t.codecs[0].payloadType=127,t.headerExtensions=e.headerExtensions,t},_r.canSend=function(e,t){return t.codecs.some((t=>t.kind===e))},_r.canReceive=function(e,t){if(zr(e),0===e.codecs.length)return!1;const r=e.codecs[0];return t.codecs.some((e=>e.remotePayloadType===r.payloadType))};var Xr={},ei={},ti={};Object.defineProperty(ti,"__esModule",{value:!0}),ti.Logger=void 0;const ri=tr,ii="awaitqueue";ti.Logger=class{constructor(e){e?(this._debug=(0,ri.default)(`${ii}:${e}`),this._warn=(0,ri.default)(`${ii}:WARN:${e}`),this._error=(0,ri.default)(`${ii}:ERROR:${e}`)):(this._debug=(0,ri.default)(ii),this._warn=(0,ri.default)(`${ii}:WARN`),this._error=(0,ri.default)(`${ii}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}},Object.defineProperty(ei,"__esModule",{value:!0}),ei.AwaitQueue=ei.AwaitQueueRemovedTaskError=ei.AwaitQueueStoppedError=void 0;const ni=new ti.Logger;class si extends Error{constructor(e){super(e??"AwaitQueue stopped"),this.name="AwaitQueueStoppedError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,si)}}ei.AwaitQueueStoppedError=si;class ai extends Error{constructor(e){super(e??"AwaitQueue task removed"),this.name="AwaitQueueRemovedTaskError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,ai)}}ei.AwaitQueueRemovedTaskError=ai;
|
|
1
|
+
this.whereby=this.whereby||{},this.whereby.react=function(e,t){"use strict";function r(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}function i(e,t){return t.forEach((function(t){t&&"string"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach((function(r){if("default"!==r&&!(r in e)){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,i.get?i:{enumerable:!0,get:function(){return t[r]}})}}))})),Object.freeze(e)}var n=r(t);"function"==typeof SuppressedError&&SuppressedError;var s=(()=>"function"==typeof Symbol&&Symbol.observable||"@@observable")(),a=()=>Math.random().toString(36).substring(7).split("").join("."),o={INIT:`@@redux/INIT${a()}`,REPLACE:`@@redux/REPLACE${a()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${a()}`};function c(e){if("object"!=typeof e||null===e)return!1;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||null===Object.getPrototypeOf(e)}function d(e){if(void 0===e)return"undefined";if(null===e)return"null";const t=typeof e;switch(t){case"boolean":case"string":case"number":case"symbol":case"function":return t}if(Array.isArray(e))return"array";if(function(e){return e instanceof Date||"function"==typeof e.toDateString&&"function"==typeof e.getDate&&"function"==typeof e.setDate}(e))return"date";if(function(e){return e instanceof Error||"string"==typeof e.message&&e.constructor&&"number"==typeof e.constructor.stackTraceLimit}(e))return"error";const r=function(e){return"function"==typeof e.constructor?e.constructor.name:null}(e);switch(r){case"Symbol":case"Promise":case"WeakMap":case"WeakSet":case"Map":case"Set":return r}return Object.prototype.toString.call(e).slice(8,-1).toLowerCase().replace(/\s/g,"")}function l(e){let t=typeof e;return t=d(e),t}function p(e,t,r){if("function"!=typeof e)throw new Error(`Expected the root reducer to be a function. Instead, received: '${l(e)}'`);if("function"==typeof t&&"function"==typeof r||"function"==typeof r&&"function"==typeof arguments[3])throw new Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.");if("function"==typeof t&&void 0===r&&(r=t,t=void 0),void 0!==r){if("function"!=typeof r)throw new Error(`Expected the enhancer to be a function. Instead, received: '${l(r)}'`);return r(p)(e,t)}let i=e,n=t,a=new Map,d=a,u=0,h=!1;function m(){d===a&&(d=new Map,a.forEach(((e,t)=>{d.set(t,e)})))}function f(){if(h)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return n}function g(e){if("function"!=typeof e)throw new Error(`Expected the listener to be a function. Instead, received: '${l(e)}'`);if(h)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api/store#subscribelistener for more details.");let t=!0;m();const r=u++;return d.set(r,e),function(){if(t){if(h)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api/store#subscribelistener for more details.");t=!1,m(),d.delete(r),a=null}}}function v(e){if(!c(e))throw new Error(`Actions must be plain objects. Instead, the actual type was: '${l(e)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);if(void 0===e.type)throw new Error('Actions may not have an undefined "type" property. You may have misspelled an action type string constant.');if("string"!=typeof e.type)throw new Error(`Action "type" property must be a string. Instead, the actual type was: '${l(e.type)}'. Value was: '${e.type}' (stringified)`);if(h)throw new Error("Reducers may not dispatch actions.");try{h=!0,n=i(n,e)}finally{h=!1}return(a=d).forEach((e=>{e()})),e}v({type:o.INIT});return{dispatch:v,subscribe:g,getState:f,replaceReducer:function(e){if("function"!=typeof e)throw new Error(`Expected the nextReducer to be a function. Instead, received: '${l(e)}`);i=e,v({type:o.REPLACE})},[s]:function(){const e=g;return{subscribe(t){if("object"!=typeof t||null===t)throw new Error(`Expected the observer to be an object. Instead, received: '${l(t)}'`);function r(){const e=t;e.next&&e.next(f())}r();return{unsubscribe:e(r)}},[s](){return this}}}}}function u(e){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(e);try{throw new Error(e)}catch(e){}}function h(e){const t=Object.keys(e),r={};for(let i=0;i<t.length;i++){const n=t[i];void 0===e[n]&&u(`No reducer provided for key "${n}"`),"function"==typeof e[n]&&(r[n]=e[n])}const i=Object.keys(r);let n,s;n={};try{!function(e){Object.keys(e).forEach((t=>{const r=e[t];if(void 0===r(void 0,{type:o.INIT}))throw new Error(`The slice reducer for key "${t}" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);if(void 0===r(void 0,{type:o.PROBE_UNKNOWN_ACTION()}))throw new Error(`The slice reducer for key "${t}" returned undefined when probed with a random type. Don't try to handle '${o.INIT}' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.`)}))}(r)}catch(e){s=e}return function(e={},t){if(s)throw s;{const i=function(e,t,r,i){const n=Object.keys(t),s=r&&r.type===o.INIT?"preloadedState argument passed to createStore":"previous state received by the reducer";if(0===n.length)return"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.";if(!c(e))return`The ${s} has unexpected type of "${l(e)}". Expected argument to be an object with the following keys: "${n.join('", "')}"`;const a=Object.keys(e).filter((e=>!t.hasOwnProperty(e)&&!i[e]));return a.forEach((e=>{i[e]=!0})),r&&r.type===o.REPLACE?void 0:a.length>0?`Unexpected ${a.length>1?"keys":"key"} "${a.join('", "')}" found in ${s}. Expected to find one of the known reducer keys instead: "${n.join('", "')}". Unexpected keys will be ignored.`:void 0}(e,r,t,n);i&&u(i)}let a=!1;const d={};for(let n=0;n<i.length;n++){const s=i[n],o=r[s],c=e[s],l=o(c,t);if(void 0===l){const e=t&&t.type;throw new Error(`When called with an action of type ${e?`"${String(e)}"`:"(unknown type)"}, the slice reducer for key "${s}" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.`)}d[s]=l,a=a||l!==c}return a=a||i.length!==Object.keys(e).length,a?d:e}}function m(...e){return 0===e.length?e=>e:1===e.length?e[0]:e.reduce(((e,t)=>(...r)=>e(t(...r))))}function f(e){return c(e)&&"type"in e&&"string"==typeof e.type}var g=Symbol.for("immer-nothing"),v=Symbol.for("immer-draftable"),_=Symbol.for("immer-state"),b=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},"This object has been frozen and should not be mutated",function(e){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+e},"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.","Immer forbids circular references","The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},"Object.defineProperty() cannot be used on an Immer draft","Object.setPrototypeOf() cannot be used on an Immer draft","Immer only supports deleting array indices","Immer only supports setting array indices and the 'length' property",function(e){return`'original' expects a draft, got: ${e}`}];function y(e,...t){{const r=b[e],i="function"==typeof r?r.apply(null,t):r;throw new Error(`[Immer] ${i}`)}}var w=Object.getPrototypeOf;function S(e){return!!e&&!!e[_]}function C(e){return!!e&&(T(e)||Array.isArray(e)||!!e[v]||!!e.constructor?.[v]||E(e)||I(e))}var R=Object.prototype.constructor.toString();function T(e){if(!e||"object"!=typeof e)return!1;const t=w(e);if(null===t)return!0;const r=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return r===Object||"function"==typeof r&&Function.toString.call(r)===R}function P(e,t){0===k(e)?Object.entries(e).forEach((([r,i])=>{t(r,i,e)})):e.forEach(((r,i)=>t(i,r,e)))}function k(e){const t=e[_];return t?t.type_:Array.isArray(e)?1:E(e)?2:I(e)?3:0}function D(e,t){return 2===k(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function O(e,t,r){const i=k(e);2===i?e.set(t,r):3===i?e.add(r):e[t]=r}function E(e){return e instanceof Map}function I(e){return e instanceof Set}function x(e){return e.copy_||e.base_}function j(e,t){if(E(e))return new Map(e);if(I(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);if(!t&&T(e)){if(!w(e)){const t=Object.create(null);return Object.assign(t,e)}return{...e}}const r=Object.getOwnPropertyDescriptors(e);delete r[_];let i=Reflect.ownKeys(r);for(let t=0;t<i.length;t++){const n=i[t],s=r[n];!1===s.writable&&(s.writable=!0,s.configurable=!0),(s.get||s.set)&&(r[n]={configurable:!0,writable:!0,enumerable:s.enumerable,value:e[n]})}return Object.create(w(e),r)}function M(e,t=!1){return A(e)||S(e)||!C(e)||(k(e)>1&&(e.set=e.add=e.clear=e.delete=L),Object.freeze(e),t&&P(e,((e,t)=>M(t,!0)))),e}function L(){y(2)}function A(e){return Object.isFrozen(e)}var N,B={};function F(e){const t=B[e];return t||y(0,e),t}function U(){return N}function $(e,t){t&&(F("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function z(e){V(e),e.drafts_.forEach(G),e.drafts_=null}function V(e){e===N&&(N=e.parent_)}function q(e){return N={drafts_:[],parent_:N,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function G(e){const t=e[_];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function H(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];return void 0!==e&&e!==r?(r[_].modified_&&(z(t),y(4)),C(e)&&(e=W(t,e),t.parent_||J(t,e)),t.patches_&&F("Patches").generateReplacementPatches_(r[_].base_,e,t.patches_,t.inversePatches_)):e=W(t,r,[]),z(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==g?e:void 0}function W(e,t,r){if(A(t))return t;const i=t[_];if(!i)return P(t,((n,s)=>K(e,i,t,n,s,r))),t;if(i.scope_!==e)return t;if(!i.modified_)return J(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;const t=i.copy_;let n=t,s=!1;3===i.type_&&(n=new Set(t),t.clear(),s=!0),P(n,((n,a)=>K(e,i,t,n,a,r,s))),J(e,t,!1),r&&e.patches_&&F("Patches").generatePatches_(i,r,e.patches_,e.inversePatches_)}return i.copy_}function K(e,t,r,i,n,s,a){if(n===r&&y(5),S(n)){const a=W(e,n,s&&t&&3!==t.type_&&!D(t.assigned_,i)?s.concat(i):void 0);if(O(r,i,a),!S(a))return;e.canAutoFreeze_=!1}else a&&r.add(n);if(C(n)&&!A(n)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;W(e,n),t&&t.scope_.parent_||J(e,n)}}function J(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&M(t,r)}var Q={get(e,t){if(t===_)return e;const r=x(e);if(!D(r,t))return function(e,t,r){const i=X(t,r);return i?"value"in i?i.value:i.get?.call(e.draft_):void 0}(e,r,t);const i=r[t];return e.finalized_||!C(i)?i:i===Y(e.base_,t)?(te(e),e.copy_[t]=re(i,e)):i},has:(e,t)=>t in x(e),ownKeys:e=>Reflect.ownKeys(x(e)),set(e,t,r){const i=X(x(e),t);if(i?.set)return i.set.call(e.draft_,r),!0;if(!e.modified_){const i=Y(x(e),t),a=i?.[_];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_[t]=!1,!0;if(((n=r)===(s=i)?0!==n||1/n==1/s:n!=n&&s!=s)&&(void 0!==r||D(e.base_,t)))return!0;te(e),ee(e)}var n,s;return e.copy_[t]===r&&(void 0!==r||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_[t]=!0),!0},deleteProperty:(e,t)=>(void 0!==Y(e.base_,t)||t in e.base_?(e.assigned_[t]=!1,te(e),ee(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const r=x(e),i=Reflect.getOwnPropertyDescriptor(r,t);return i?{writable:!0,configurable:1!==e.type_||"length"!==t,enumerable:i.enumerable,value:r[t]}:i},defineProperty(){y(11)},getPrototypeOf:e=>w(e.base_),setPrototypeOf(){y(12)}},Z={};function Y(e,t){const r=e[_];return(r?x(r):e)[t]}function X(e,t){if(!(t in e))return;let r=w(e);for(;r;){const e=Object.getOwnPropertyDescriptor(r,t);if(e)return e;r=w(r)}}function ee(e){e.modified_||(e.modified_=!0,e.parent_&&ee(e.parent_))}function te(e){e.copy_||(e.copy_=j(e.base_,e.scope_.immer_.useStrictShallowCopy_))}P(Q,((e,t)=>{Z[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}})),Z.deleteProperty=function(e,t){return isNaN(parseInt(t))&&y(13),Z.set.call(this,e,t,void 0)},Z.set=function(e,t,r){return"length"!==t&&isNaN(parseInt(t))&&y(14),Q.set.call(this,e[0],t,r,e[0])};function re(e,t){const r=E(e)?F("MapSet").proxyMap_(e,t):I(e)?F("MapSet").proxySet_(e,t):function(e,t){const r=Array.isArray(e),i={type_:r?1:0,scope_:t?t.scope_:U(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let n=i,s=Q;r&&(n=[i],s=Z);const{revoke:a,proxy:o}=Proxy.revocable(n,s);return i.draft_=o,i.revoke_=a,o}(e,t);return(t?t.scope_:U()).drafts_.push(r),r}function ie(e){return S(e)||y(10,e),ne(e)}function ne(e){if(!C(e)||A(e))return e;const t=e[_];let r;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=j(e,t.scope_.immer_.useStrictShallowCopy_)}else r=j(e,!0);return P(r,((e,t)=>{O(r,e,ne(t))})),t&&(t.finalized_=!1),r}var se=new class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(e,t,r)=>{if("function"==typeof e&&"function"!=typeof t){const r=t;t=e;const i=this;return function(e=r,...n){return i.produce(e,(e=>t.call(this,e,...n)))}}let i;if("function"!=typeof t&&y(6),void 0!==r&&"function"!=typeof r&&y(7),C(e)){const n=q(this),s=re(e,void 0);let a=!0;try{i=t(s),a=!1}finally{a?z(n):V(n)}return $(n,r),H(i,n)}if(!e||"object"!=typeof e){if(i=t(e),void 0===i&&(i=e),i===g&&(i=void 0),this.autoFreeze_&&M(i,!0),r){const t=[],n=[];F("Patches").generateReplacementPatches_(e,i,t,n),r(t,n)}return i}y(1,e)},this.produceWithPatches=(e,t)=>{if("function"==typeof e)return(t,...r)=>this.produceWithPatches(t,(t=>e(t,...r)));let r,i;return[this.produce(e,t,((e,t)=>{r=e,i=t})),r,i]},"boolean"==typeof e?.autoFreeze&&this.setAutoFreeze(e.autoFreeze),"boolean"==typeof e?.useStrictShallowCopy&&this.setUseStrictShallowCopy(e.useStrictShallowCopy)}createDraft(e){C(e)||y(8),S(e)&&(e=ie(e));const t=q(this),r=re(e,void 0);return r[_].isManual_=!0,V(t),r}finishDraft(e,t){const r=e&&e[_];r&&r.isManual_||y(9);const{scope_:i}=r;return $(i,t),H(void 0,i)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){const i=t[r];if(0===i.path.length&&"replace"===i.op){e=i.value;break}}r>-1&&(t=t.slice(r+1));const i=F("Patches").applyPatches_;return S(e)?i(e,t):this.produce(e,(e=>i(e,t)))}},ae=se.produce;se.produceWithPatches.bind(se),se.setAutoFreeze.bind(se),se.setUseStrictShallowCopy.bind(se),se.applyPatches.bind(se),se.createDraft.bind(se),se.finishDraft.bind(se);var oe=(e,t,r)=>{if(1===t.length&&t[0]===r){let t=!1;try{const r={};e(r)===r&&(t=!0)}catch{}if(t){let e;try{throw new Error}catch(t){({stack:e}=t)}console.warn("The result function returned its own inputs without modification. e.g\n`createSelector([state => state.todos], todos => todos)`\nThis could lead to inefficient memoization and unnecessary re-renders.\nEnsure transformation logic is in the result function, and extraction logic is in the input selectors.",{stack:e})}}},ce=(e,t,r)=>{const{memoize:i,memoizeOptions:n}=t,{inputSelectorResults:s,inputSelectorResultsCopy:a}=e,o=i((()=>({})),...n);if(!(o.apply(null,s)===o.apply(null,a))){let e;try{throw new Error}catch(t){({stack:e}=t)}console.warn("An input selector returned a different result when passed same arguments.\nThis means your output selector will likely run more frequently than intended.\nAvoid returning a new reference inside your input selector, e.g.\n`createSelector([state => state.todos.map(todo => todo.id)], todoIds => todoIds.length)`",{arguments:r,firstInputs:s,secondInputs:a,stack:e})}},de={inputStabilityCheck:"once",identityFunctionCheck:"once"};var le=e=>Array.isArray(e)?e:[e];function pe(e){const t=Array.isArray(e[0])?e[0]:e;return function(e,t="expected all items to be functions, instead received the following types: "){if(!e.every((e=>"function"==typeof e))){const r=e.map((e=>"function"==typeof e?`function ${e.name||"unnamed"}()`:typeof e)).join(", ");throw new TypeError(`${t}[${r}]`)}}(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function ue(e,t){const r=[],{length:i}=e;for(let n=0;n<i;n++)r.push(e[n].apply(null,t));return r}var he="undefined"!=typeof WeakRef?WeakRef:class{constructor(e){this.value=e}deref(){return this.value}},me=0,fe=1;function ge(){return{s:me,v:void 0,o:null,p:null}}function ve(e,t={}){let r=ge();const{resultEqualityCheck:i}=t;let n,s=0;function a(){let t=r;const{length:a}=arguments;for(let e=0,r=a;e<r;e++){const r=arguments[e];if("function"==typeof r||"object"==typeof r&&null!==r){let e=t.o;null===e&&(t.o=e=new WeakMap);const i=e.get(r);void 0===i?(t=ge(),e.set(r,t)):t=i}else{let e=t.p;null===e&&(t.p=e=new Map);const i=e.get(r);void 0===i?(t=ge(),e.set(r,t)):t=i}}const o=t;let c;if(t.s===fe?c=t.v:(c=e.apply(null,arguments),s++),o.s=fe,i){const e=n?.deref?.()??n;null!=e&&i(e,c)&&(c=e,0!==s&&s--);n="object"==typeof c&&null!==c||"function"==typeof c?new he(c):c}return o.v=c,c}return a.clearCache=()=>{r=ge(),a.resetResultsCount()},a.resultsCount=()=>s,a.resetResultsCount=()=>{s=0},a}function _e(e,...t){const r="function"==typeof e?{memoize:e,memoizeOptions:t}:e,i=(...e)=>{let t,i=0,n=0,s={},a=e.pop();"object"==typeof a&&(s=a,a=e.pop()),function(e,t="expected a function, instead received "+typeof e){if("function"!=typeof e)throw new TypeError(t)}(a,`createSelector expects an output function after the inputs, but received: [${typeof a}]`);const o={...r,...s},{memoize:c,memoizeOptions:d=[],argsMemoize:l=ve,argsMemoizeOptions:p=[],devModeChecks:u={}}=o,h=le(d),m=le(p),f=pe(e),g=c((function(){return i++,a.apply(null,arguments)}),...h);let v=!0;const _=l((function(){n++;const e=ue(f,arguments);t=g.apply(null,e);{const{identityFunctionCheck:r,inputStabilityCheck:i}=((e,t)=>{const{identityFunctionCheck:r,inputStabilityCheck:i}={...de,...t};return{identityFunctionCheck:{shouldRun:"always"===r||"once"===r&&e,run:oe},inputStabilityCheck:{shouldRun:"always"===i||"once"===i&&e,run:ce}}})(v,u);if(r.shouldRun&&r.run(a,e,t),i.shouldRun){const t=ue(f,arguments);i.run({inputSelectorResults:e,inputSelectorResultsCopy:t},{memoize:c,memoizeOptions:h},arguments)}v&&(v=!1)}return t}),...m);return Object.assign(_,{resultFunc:a,memoizedResultFunc:g,dependencies:f,dependencyRecomputations:()=>n,resetDependencyRecomputations:()=>{n=0},lastResult:()=>t,recomputations:()=>i,resetRecomputations:()=>{i=0},memoize:c,argsMemoize:l})};return Object.assign(i,{withTypes:()=>i}),i}var be=_e(ve),ye=Object.assign(((e,t=be)=>{!function(e,t="expected an object, instead received "+typeof e){if("object"!=typeof e)throw new TypeError(t)}(e,"createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof e);const r=Object.keys(e),i=t(r.map((t=>e[t])),((...e)=>e.reduce(((e,t,i)=>(e[r[i]]=t,e)),{})));return i}),{withTypes:()=>ye});function we(e){return({dispatch:t,getState:r})=>i=>n=>"function"==typeof n?n(t,r,e):i(n)}var Se=we(),Ce=we;((...e)=>{const t=_e(...e),r=Object.assign(((...e)=>{const r=t(...e),i=(e,...t)=>r(S(e)?ie(e):e,...t);return Object.assign(i,r),i}),{withTypes:()=>r})})(ve);var Re="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"==typeof arguments[0]?m:m.apply(null,arguments)},Te=e=>e&&"function"==typeof e.match;function Pe(e,t){function r(...r){if(t){let i=t(...r);if(!i)throw new Error("prepareAction did not return an object");return{type:e,payload:i.payload,..."meta"in i&&{meta:i.meta},..."error"in i&&{error:i.error}}}return{type:e,payload:r[0]}}return r.toString=()=>`${e}`,r.type=e,r.match=t=>f(t)&&t.type===e,r}function ke(e){return"function"==typeof e&&"type"in e&&Te(e)}function De(e,t){let r=0;return{measureTime(e){const t=Date.now();try{return e()}finally{const e=Date.now();r+=e-t}},warnIfExceeded(){r>e&&console.warn(`${t} took ${r}ms, which is more than the warning threshold of ${e}ms. \nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\nIt is disabled in production builds, so you don't need to worry about that.`)}}}function Oe(e,t){for(const r of e)if(t(r))return r}var Ee=class e extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,e.prototype)}static get[Symbol.species](){return e}concat(...e){return super.concat.apply(this,e)}prepend(...t){return 1===t.length&&Array.isArray(t[0])?new e(...t[0].concat(this)):new e(...t.concat(this))}};function Ie(e){return C(e)?ae(e,(()=>{})):e}function xe(e,t,r){if(e.has(t)){let i=e.get(t);return r.update&&(i=r.update(i,t,e),e.set(t,i)),i}if(!r.insert)throw new Error("No insert provided for key not already in map");const i=r.insert(t,e);return e.set(t,i),i}function je(e){return"object"!=typeof e||null==e||Object.isFrozen(e)}function Me(e,t,r){const i=Le(e,t,r);return{detectMutations:()=>Ae(e,t,i,r)}}function Le(e,t=[],r,i="",n=new Set){const s={value:r};if(!e(r)&&!n.has(r)){n.add(r),s.children={};for(const n in r){const a=i?i+"."+n:n;t.length&&-1!==t.indexOf(a)||(s.children[n]=Le(e,t,r[n],a))}}return s}function Ae(e,t=[],r,i,n=!1,s=""){const a=r?r.value:void 0,o=a===i;if(n&&!o&&!Number.isNaN(i))return{wasMutated:!0,path:s};if(e(a)||e(i))return{wasMutated:!1};const c={};for(let e in r.children)c[e]=!0;for(let e in i)c[e]=!0;const d=t.length>0;for(let n in c){const a=s?s+"."+n:n;if(d){if(t.some((e=>e instanceof RegExp?e.test(a):a===e)))continue}const c=Ae(e,t,r.children[n],i[n],o,a);if(c.wasMutated)return c}return{wasMutated:!1}}function Ne(e){const t=typeof e;return null==e||"string"===t||"boolean"===t||"number"===t||Array.isArray(e)||c(e)}function Be(e,t="",r=Ne,i,n=[],s){let a;if(!r(e))return{keyPath:t||"<root>",value:e};if("object"!=typeof e||null===e)return!1;if(s?.has(e))return!1;const o=null!=i?i(e):Object.entries(e),c=n.length>0;for(const[e,d]of o){const o=t?t+"."+e:e;if(c){if(n.some((e=>e instanceof RegExp?e.test(o):o===e)))continue}if(!r(d))return{keyPath:o,value:d};if("object"==typeof d&&(a=Be(d,o,r,i,n,s),a))return a}return s&&Fe(e)&&s.add(e),!1}function Fe(e){if(!Object.isFrozen(e))return!1;for(const t of Object.values(e))if("object"==typeof t&&null!==t&&!Fe(t))return!1;return!0}function Ue(e){return"boolean"==typeof e}var $e=()=>function(e){const{thunk:t=!0,immutableCheck:r=!0,serializableCheck:i=!0,actionCreatorCheck:n=!0}=e??{};let s=new Ee;if(t&&(Ue(t)?s.push(Se):s.push(Ce(t.extraArgument))),r){let e={};Ue(r)||(e=r),s.unshift(function(e={}){{let t=function(e,t,i,n){return JSON.stringify(e,r(t,n),i)},r=function(e,t){let r=[],i=[];return t||(t=function(e,t){return r[0]===t?"[Circular ~]":"[Circular ~."+i.slice(0,r.indexOf(t)).join(".")+"]"}),function(n,s){if(r.length>0){var a=r.indexOf(this);~a?r.splice(a+1):r.push(this),~a?i.splice(a,1/0,n):i.push(n),~r.indexOf(s)&&(s=t.call(this,n,s))}else r.push(s);return null==e?s:e.call(this,n,s)}},{isImmutable:i=je,ignoredPaths:n,warnAfter:s=32}=e;const a=Me.bind(null,i,n);return({getState:e})=>{let r,i=e(),n=a(i);return o=>c=>{const d=De(s,"ImmutableStateInvariantMiddleware");d.measureTime((()=>{if(i=e(),r=n.detectMutations(),n=a(i),r.wasMutated)throw new Error(`A state mutation was detected between dispatches, in the path '${r.path||""}'. This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`)}));const l=o(c);return d.measureTime((()=>{if(i=e(),r=n.detectMutations(),n=a(i),r.wasMutated)throw new Error(`A state mutation was detected inside a dispatch, in the path: ${r.path||""}. Take a look at the reducer(s) handling the action ${t(c)}. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`)})),d.warnIfExceeded(),l}}}}(e))}if(i){let e={};Ue(i)||(e=i),s.push(function(e={}){{const{isSerializable:t=Ne,getEntries:r,ignoredActions:i=[],ignoredActionPaths:n=["meta.arg","meta.baseQueryMeta"],ignoredPaths:s=[],warnAfter:a=32,ignoreState:o=!1,ignoreActions:c=!1,disableCache:d=!1}=e,l=!d&&WeakSet?new WeakSet:void 0;return e=>d=>p=>{if(!f(p))return d(p);const u=d(p),h=De(a,"SerializableStateInvariantMiddleware");return c||i.length&&-1!==i.indexOf(p.type)||h.measureTime((()=>{const e=Be(p,"",t,r,n,l);if(e){const{keyPath:t,value:r}=e;console.error(`A non-serializable value was detected in an action, in the path: \`${t}\`. Value:`,r,"\nTake a look at the logic that dispatched this action: ",p,"\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)","\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)")}})),o||(h.measureTime((()=>{const i=Be(e.getState(),"",t,r,s,l);if(i){const{keyPath:e,value:t}=i;console.error(`A non-serializable value was detected in the state, in the path: \`${e}\`. Value:`,t,`\nTake a look at the reducer(s) handling this action type: ${p.type}.\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)`)}})),h.warnIfExceeded()),u}}}(e))}if(n){let e={};Ue(n)||(e=n),s.unshift(function(e={}){const{isActionCreator:t=ke}=e;return()=>e=>r=>(t(r)&&console.warn(function(e){const t=e?`${e}`.split("/"):[],r=t[t.length-1]||"actionCreator";return`Detected an action creator with type "${e||"unknown"}" being dispatched. \nMake sure you're calling the action creator before dispatching, i.e. \`dispatch(${r}())\` instead of \`dispatch(${r})\`. This is necessary even if the action has no payload.`}(r.type)),e(r))}(e))}return s},ze=e=>t=>{setTimeout(t,e)},Ve="undefined"!=typeof window&&window.requestAnimationFrame?window.requestAnimationFrame:ze(10),qe=e=>function(t){const{autoBatch:r=!0}=t??{};let i=new Ee(e);return r&&i.push(((e={type:"raf"})=>t=>(...r)=>{const i=t(...r);let n=!0,s=!1,a=!1;const o=new Set,c="tick"===e.type?queueMicrotask:"raf"===e.type?Ve:"callback"===e.type?e.queueNotification:ze(e.timeout),d=()=>{a=!1,s&&(s=!1,o.forEach((e=>e())))};return Object.assign({},i,{subscribe(e){const t=i.subscribe((()=>n&&e()));return o.add(e),()=>{t(),o.delete(e)}},dispatch(e){try{return n=!e?.meta?.RTK_autoBatch,s=!n,s&&(a||(a=!0,c(d))),i.dispatch(e)}finally{n=!0}}})})("object"==typeof r?r:void 0)),i};function Ge(e){const t=$e(),{reducer:r,middleware:i,devTools:n=!0,preloadedState:s,enhancers:a}=e||{};let o,d;if("function"==typeof r)o=r;else{if(!c(r))throw new Error("`reducer` is a required argument, and must be a function or an object of functions that can be passed to combineReducers");o=h(r)}if(i&&"function"!=typeof i)throw new Error("`middleware` field must be a callback");if("function"==typeof i){if(d=i(t),!Array.isArray(d))throw new Error("when using a middleware builder function, an array of middleware must be returned")}else d=t();if(d.some((e=>"function"!=typeof e)))throw new Error("each middleware provided to configureStore must be a function");let l=m;n&&(l=Re({trace:!0,..."object"==typeof n&&n}));const u=function(...e){return t=>(r,i)=>{const n=t(r,i);let s=()=>{throw new Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")};const a={getState:n.getState,dispatch:(e,...t)=>s(e,...t)},o=e.map((e=>e(a)));return s=m(...o)(n.dispatch),{...n,dispatch:s}}}(...d),f=qe(u);if(a&&"function"!=typeof a)throw new Error("`enhancers` field must be a callback");let g="function"==typeof a?a(f):f();if(!Array.isArray(g))throw new Error("`enhancers` callback must return an array");if(g.some((e=>"function"!=typeof e)))throw new Error("each enhancer provided to configureStore must be a function");d.length&&!g.includes(u)&&console.error("middlewares were provided, but middleware enhancer was not included in final enhancers - make sure to call `getDefaultEnhancers`");return p(o,s,l(...g))}function He(e){const t={},r=[];let i;const n={addCase(e,s){if(r.length>0)throw new Error("`builder.addCase` should only be called before calling `builder.addMatcher`");if(i)throw new Error("`builder.addCase` should only be called before calling `builder.addDefaultCase`");const a="string"==typeof e?e:e.type;if(!a)throw new Error("`builder.addCase` cannot be called with an empty action type");if(a in t)throw new Error(`\`builder.addCase\` cannot be called with two reducers for the same action type '${a}'`);return t[a]=s,n},addMatcher(e,t){if(i)throw new Error("`builder.addMatcher` should only be called before calling `builder.addDefaultCase`");return r.push({matcher:e,reducer:t}),n},addDefaultCase(e){if(i)throw new Error("`builder.addDefaultCase` can only be called once");return i=e,n}};return e(n),[t,r,i]}var We=(e=21)=>{let t="",r=e;for(;r--;)t+="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"[64*Math.random()|0];return t};function Ke(...e){return t=>e.some((e=>((e,t)=>Te(e)?e.match(t):e(t))(e,t)))}var Je=["name","message","stack","code"],Qe=class{constructor(e,t){this.payload=e,this.meta=t}_type},Ze=class{constructor(e,t){this.payload=e,this.meta=t}_type},Ye=e=>{if("object"==typeof e&&null!==e){const t={};for(const r of Je)"string"==typeof e[r]&&(t[r]=e[r]);return t}return{message:String(e)}},Xe=(()=>{function e(e,t,r){const i=Pe(e+"/fulfilled",((e,t,r,i)=>({payload:e,meta:{...i||{},arg:r,requestId:t,requestStatus:"fulfilled"}}))),n=Pe(e+"/pending",((e,t,r)=>({payload:void 0,meta:{...r||{},arg:t,requestId:e,requestStatus:"pending"}}))),s=Pe(e+"/rejected",((e,t,i,n,s)=>({payload:n,error:(r&&r.serializeError||Ye)(e||"Rejected"),meta:{...s||{},arg:i,requestId:t,rejectedWithValue:!!n,requestStatus:"rejected",aborted:"AbortError"===e?.name,condition:"ConditionError"===e?.name}})));return Object.assign((function(e){return(a,o,c)=>{const d=r?.idGenerator?r.idGenerator(e):We(),l=new AbortController;let p,u;function h(e){u=e,l.abort()}const m=async function(){let m;try{let s=r?.condition?.(e,{getState:o,extra:c});if(function(e){return null!==e&&"object"==typeof e&&"function"==typeof e.then}(s)&&(s=await s),!1===s||l.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};const f=new Promise(((e,t)=>{p=()=>{t({name:"AbortError",message:u||"Aborted"})},l.signal.addEventListener("abort",p)}));a(n(d,e,r?.getPendingMeta?.({requestId:d,arg:e},{getState:o,extra:c}))),m=await Promise.race([f,Promise.resolve(t(e,{dispatch:a,getState:o,extra:c,requestId:d,signal:l.signal,abort:h,rejectWithValue:(e,t)=>new Qe(e,t),fulfillWithValue:(e,t)=>new Ze(e,t)})).then((t=>{if(t instanceof Qe)throw t;return t instanceof Ze?i(t.payload,d,e,t.meta):i(t,d,e)}))])}catch(t){m=t instanceof Qe?s(null,d,e,t.payload,t.meta):s(t,d,e)}finally{p&&l.signal.removeEventListener("abort",p)}return r&&!r.dispatchConditionRejection&&s.match(m)&&m.meta.condition||a(m),m}();return Object.assign(m,{abort:h,requestId:d,arg:e,unwrap:()=>m.then(et)})}}),{pending:n,rejected:s,fulfilled:i,settled:Ke(s,i),typePrefix:e})}return e.withTypes=()=>e,e})();function et(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}var tt=Symbol.for("rtk-slice-createasyncthunk");function rt(e,t){return`${e}/${t}`}function it({creators:e}={}){const t=e?.asyncThunk?.[tt];return function(e){const{name:r,reducerPath:i=r}=e;if(!r)throw new Error("`name` is a required option for createSlice");const n=("function"==typeof e.reducers?e.reducers(function(){function e(e,t){return{_reducerDefinitionType:"asyncThunk",payloadCreator:e,...t}}return e.withTypes=()=>e,{reducer:e=>Object.assign({[e.name]:(...t)=>e(...t)}[e.name],{_reducerDefinitionType:"reducer"}),preparedReducer:(e,t)=>({_reducerDefinitionType:"reducerWithPrepare",prepare:e,reducer:t}),asyncThunk:e}}()):e.reducers)||{},s=Object.keys(n),a={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},o={addCase(e,t){const r="string"==typeof e?e:e.type;if(!r)throw new Error("`context.addCase` cannot be called with an empty action type");if(r in a.sliceCaseReducersByType)throw new Error("`context.addCase` cannot be called with two reducers for the same action type: "+r);return a.sliceCaseReducersByType[r]=t,o},addMatcher:(e,t)=>(a.sliceMatchers.push({matcher:e,reducer:t}),o),exposeAction:(e,t)=>(a.actionCreators[e]=t,o),exposeCaseReducer:(e,t)=>(a.sliceCaseReducersByName[e]=t,o)};function c(){if("object"==typeof e.extraReducers)throw new Error("The object notation for `createSlice.extraReducers` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice");const[t={},r=[],i]="function"==typeof e.extraReducers?He(e.extraReducers):[e.extraReducers],n={...t,...a.sliceCaseReducersByType};return function(e,t){if("object"==typeof t)throw new Error("The object notation for `createReducer` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer");let r,[i,n,s]=He(t);if("function"==typeof e)r=()=>Ie(e());else{const t=Ie(e);r=()=>t}function a(e=r(),t){let a=[i[t.type],...n.filter((({matcher:e})=>e(t))).map((({reducer:e})=>e))];return 0===a.filter((e=>!!e)).length&&(a=[s]),a.reduce(((e,r)=>{if(r){if(S(e)){const i=r(e,t);return void 0===i?e:i}if(C(e))return ae(e,(e=>r(e,t)));{const i=r(e,t);if(void 0===i){if(null===e)return e;throw new Error("A case reducer on a non-draftable value must not return undefined")}return i}}return e}),e)}return a.getInitialState=r,a}(e.initialState,(e=>{for(let t in n)e.addCase(t,n[t]);for(let t of a.sliceMatchers)e.addMatcher(t.matcher,t.reducer);for(let t of r)e.addMatcher(t.matcher,t.reducer);i&&e.addDefaultCase(i)}))}s.forEach((i=>{const s=n[i],a={reducerName:i,type:rt(r,i),createNotation:"function"==typeof e.reducers};!function(e){return"asyncThunk"===e._reducerDefinitionType}(s)?function({type:e,reducerName:t,createNotation:r},i,n){let s,a;if("reducer"in i){if(r&&!function(e){return"reducerWithPrepare"===e._reducerDefinitionType}(i))throw new Error("Please use the `create.preparedReducer` notation for prepared action creators with the `create` notation.");s=i.reducer,a=i.prepare}else s=i;n.addCase(e,s).exposeCaseReducer(t,s).exposeAction(t,a?Pe(e,a):Pe(e))}(a,s,o):function({type:e,reducerName:t},r,i,n){if(!n)throw new Error("Cannot use `create.asyncThunk` in the built-in `createSlice`. Use `buildCreateSlice({ creators: { asyncThunk: asyncThunkCreator } })` to create a customised version of `createSlice`.");const{payloadCreator:s,fulfilled:a,pending:o,rejected:c,settled:d,options:l}=r,p=n(e,s,l);i.exposeAction(t,p),a&&i.addCase(p.fulfilled,a);o&&i.addCase(p.pending,o);c&&i.addCase(p.rejected,c);d&&i.addMatcher(p.settled,d);i.exposeCaseReducer(t,{fulfilled:a||at,pending:o||at,rejected:c||at,settled:d||at})}(a,s,o,t)}));const d=e=>e,l=new Map;let p;function u(e,t){return p||(p=c()),p(e,t)}function h(){return p||(p=c()),p.getInitialState()}function m(t,r=!1){function i(e){let i=e[t];if(void 0===i){if(!r)throw new Error("selectSlice returned undefined for an uninjected slice reducer");i=h()}return i}function n(t=d){const i=xe(l,r,{insert:()=>new WeakMap});return xe(i,t,{insert:()=>{const i={};for(const[n,s]of Object.entries(e.selectors??{}))i[n]=nt(s,t,h,r);return i}})}return{reducerPath:t,getSelectors:n,get selectors(){return n(i)},selectSlice:i}}const f={name:r,reducer:u,actions:a.actionCreators,caseReducers:a.sliceCaseReducersByName,getInitialState:h,...m(i),injectInto(e,{reducerPath:t,...r}={}){const n=t??i;return e.inject({reducerPath:n,reducer:u},r),{...f,...m(n,!0)}}};return f}}function nt(e,t,r,i){function n(n,...s){let a=t(n);if(void 0===a){if(!i)throw new Error("selectState returned undefined for an uninjected slice reducer");a=r()}return e(a,...s)}return n.unwrapped=e,n}var st=it();function at(){}var ot="listener",ct="completed",dt="cancelled",lt=`task-${dt}`,pt=`task-${ct}`,ut=`${ot}-${dt}`,ht=`${ot}-${ct}`,mt=class{constructor(e){this.code=e,this.message=`task ${dt} (reason: ${e})`}name="TaskAbortError";message},ft=(e,t)=>{if("function"!=typeof e)throw new Error(`${t} is not a function`)},gt=()=>{},vt=(e,t=gt)=>(e.catch(t),e),_t=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),bt=(e,t)=>{const r=e.signal;r.aborted||("reason"in r||Object.defineProperty(r,"reason",{enumerable:!0,value:t,configurable:!0,writable:!0}),e.abort(t))},yt=e=>{if(e.aborted){const{reason:t}=e;throw new mt(t)}};function wt(e,t){let r=gt;return new Promise(((i,n)=>{const s=()=>n(new mt(e.reason));e.aborted?s():(r=_t(e,s),t.finally((()=>r())).then(i,n))})).finally((()=>{r=gt}))}var St=e=>t=>vt(wt(e,t).then((t=>(yt(e),t)))),Ct=e=>{const t=St(e);return e=>t(new Promise((t=>setTimeout(t,e))))},{assign:Rt}=Object,Tt={},Pt="listenerMiddleware",kt=(e,t)=>(r,i)=>{ft(r,"taskExecutor");const n=new AbortController;var s;s=n,_t(e,(()=>bt(s,e.reason)));const a=(async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(e){return{status:e instanceof mt?"cancelled":"rejected",error:e}}finally{t?.()}})((async()=>{yt(e),yt(n.signal);const t=await r({pause:St(n.signal),delay:Ct(n.signal),signal:n.signal});return yt(n.signal),t}),(()=>bt(n,pt)));return i?.autoJoin&&t.push(a.catch(gt)),{result:St(e)(a),cancel(){bt(n,lt)}}},Dt=(e,t)=>(r,i)=>vt((async(r,i)=>{yt(t);let n=()=>{};const s=[new Promise(((t,i)=>{let s=e({predicate:r,effect:(e,r)=>{r.unsubscribe(),t([e,r.getState(),r.getOriginalState()])}});n=()=>{s(),i()}}))];null!=i&&s.push(new Promise((e=>setTimeout(e,i,null))));try{const e=await wt(t,Promise.race(s));return yt(t),e}finally{n()}})(r,i)),Ot=e=>{let{type:t,actionCreator:r,matcher:i,predicate:n,effect:s}=e;if(t)n=Pe(t).match;else if(r)t=r.type,n=r.match;else if(i)n=i;else if(!n)throw new Error("Creating or removing a listener requires one of the known fields for matching an action");return ft(s,"options.listener"),{predicate:n,type:t,effect:s}},Et=Object.assign((e=>{const{type:t,predicate:r,effect:i}=Ot(e);return{id:We(),effect:i,type:t,predicate:r,pending:new Set,unsubscribe:()=>{throw new Error("Unsubscribe not initialized")}}}),{withTypes:()=>Et}),It=e=>{e.pending.forEach((e=>{bt(e,ut)}))},xt=(e,t,r)=>{try{e(t,r)}catch(e){setTimeout((()=>{throw e}),0)}},jt=Object.assign(Pe(`${Pt}/add`),{withTypes:()=>jt}),Mt=Pe(`${Pt}/removeAll`),Lt=Object.assign(Pe(`${Pt}/remove`),{withTypes:()=>Lt}),At=(...e)=>{console.error(`${Pt}/error`,...e)};function Nt(){}function Bt(){Bt.init.call(this)}function Ft(e){return void 0===e._maxListeners?Bt.defaultMaxListeners:e._maxListeners}function Ut(e,t,r,i){var n,s,a,o;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((s=e._events)?(s.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),s=e._events),a=s[t]):(s=e._events=new Nt,e._eventsCount=0),a){if("function"==typeof a?a=s[t]=i?[r,a]:[a,r]:i?a.unshift(r):a.push(r),!a.warned&&(n=Ft(e))&&n>0&&a.length>n){a.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=a.length,o=c,"function"==typeof console.warn?console.warn(o):console.log(o)}}else a=s[t]=r,++e._eventsCount;return e}function $t(e,t,r){var i=!1;function n(){e.removeListener(t,n),i||(i=!0,r.apply(e,arguments))}return n.listener=r,n}function zt(e){var t=this._events;if(t){var r=t[e];if("function"==typeof r)return 1;if(r)return r.length}return 0}function Vt(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}Nt.prototype=Object.create(null),Bt.EventEmitter=Bt,Bt.usingDomains=!1,Bt.prototype.domain=void 0,Bt.prototype._events=void 0,Bt.prototype._maxListeners=void 0,Bt.defaultMaxListeners=10,Bt.init=function(){this.domain=null,Bt.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new Nt,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Bt.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},Bt.prototype.getMaxListeners=function(){return Ft(this)},Bt.prototype.emit=function(e){var t,r,i,n,s,a,o,c="error"===e;if(a=this._events)c=c&&null==a.error;else if(!c)return!1;if(o=this.domain,c){if(t=arguments[1],!o){if(t instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=o,t.domainThrown=!1,o.emit("error",t),!1}if(!(r=a[e]))return!1;var l="function"==typeof r;switch(i=arguments.length){case 1:!function(e,t,r){if(t)e.call(r);else for(var i=e.length,n=Vt(e,i),s=0;s<i;++s)n[s].call(r)}(r,l,this);break;case 2:!function(e,t,r,i){if(t)e.call(r,i);else for(var n=e.length,s=Vt(e,n),a=0;a<n;++a)s[a].call(r,i)}(r,l,this,arguments[1]);break;case 3:!function(e,t,r,i,n){if(t)e.call(r,i,n);else for(var s=e.length,a=Vt(e,s),o=0;o<s;++o)a[o].call(r,i,n)}(r,l,this,arguments[1],arguments[2]);break;case 4:!function(e,t,r,i,n,s){if(t)e.call(r,i,n,s);else for(var a=e.length,o=Vt(e,a),c=0;c<a;++c)o[c].call(r,i,n,s)}(r,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(n=new Array(i-1),s=1;s<i;s++)n[s-1]=arguments[s];!function(e,t,r,i){if(t)e.apply(r,i);else for(var n=e.length,s=Vt(e,n),a=0;a<n;++a)s[a].apply(r,i)}(r,l,this,n)}return!0},Bt.prototype.addListener=function(e,t){return Ut(this,e,t,!1)},Bt.prototype.on=Bt.prototype.addListener,Bt.prototype.prependListener=function(e,t){return Ut(this,e,t,!0)},Bt.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,$t(this,e,t)),this},Bt.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,$t(this,e,t)),this},Bt.prototype.removeListener=function(e,t){var r,i,n,s,a;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(i=this._events))return this;if(!(r=i[e]))return this;if(r===t||r.listener&&r.listener===t)0==--this._eventsCount?this._events=new Nt:(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(n=-1,s=r.length;s-- >0;)if(r[s]===t||r[s].listener&&r[s].listener===t){a=r[s].listener,n=s;break}if(n<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new Nt,this;delete i[e]}else!function(e,t){for(var r=t,i=r+1,n=e.length;i<n;r+=1,i+=1)e[r]=e[i];e.pop()}(r,n);i.removeListener&&this.emit("removeListener",e,a||t)}return this},Bt.prototype.off=function(e,t){return this.removeListener(e,t)},Bt.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new Nt,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new Nt:delete r[e]),this;if(0===arguments.length){for(var i,n=Object.keys(r),s=0;s<n.length;++s)"removeListener"!==(i=n[s])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=new Nt,this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},Bt.prototype.listeners=function(e){var t,r,i=this._events;return r=i&&(t=i[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(t):[],r},Bt.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):zt.call(e,t)},Bt.prototype.listenerCount=zt,Bt.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};var qt=Object.freeze({__proto__:null,EventEmitter:Bt,default:Bt}),Gt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Ht(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Wt(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var r=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,i.get?i:{enumerable:!0,get:function(){return e[t]}})})),r}var Kt,Jt,Qt={},Zt={exports:{}};function Yt(){if(Jt)return Kt;Jt=1;var e=1e3,t=60*e,r=60*t,i=24*r,n=7*i,s=365.25*i;function a(e,t,r,i){var n=t>=1.5*r;return Math.round(e/r)+" "+i+(n?"s":"")}return Kt=function(o,c){c=c||{};var d=typeof o;if("string"===d&&o.length>0)return function(a){if((a=String(a)).length>100)return;var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(a);if(!o)return;var c=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*s;case"weeks":case"week":case"w":return c*n;case"days":case"day":case"d":return c*i;case"hours":case"hour":case"hrs":case"hr":case"h":return c*r;case"minutes":case"minute":case"mins":case"min":case"m":return c*t;case"seconds":case"second":case"secs":case"sec":case"s":return c*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}(o);if("number"===d&&isFinite(o))return c.long?function(n){var s=Math.abs(n);if(s>=i)return a(n,s,i,"day");if(s>=r)return a(n,s,r,"hour");if(s>=t)return a(n,s,t,"minute");if(s>=e)return a(n,s,e,"second");return n+" ms"}(o):function(n){var s=Math.abs(n);if(s>=i)return Math.round(n/i)+"d";if(s>=r)return Math.round(n/r)+"h";if(s>=t)return Math.round(n/t)+"m";if(s>=e)return Math.round(n/e)+"s";return n+"ms"}(o);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(o))}}var Xt=function(e){function t(e){let i,n,s,a=null;function o(...e){if(!o.enabled)return;const r=o,n=Number(new Date),s=n-(i||n);r.diff=s,r.prev=i,r.curr=n,i=n,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let a=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((i,n)=>{if("%%"===i)return"%";a++;const s=t.formatters[n];if("function"==typeof s){const t=e[a];i=s.call(r,t),e.splice(a,1),a--}return i})),t.formatArgs.call(r,e);(r.log||t.log).apply(r,e)}return o.namespace=e,o.useColors=t.useColors(),o.color=t.selectColor(e),o.extend=r,o.destroy=t.destroy,Object.defineProperty(o,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==a?a:(n!==t.namespaces&&(n=t.namespaces,s=t.enabled(e)),s),set:e=>{a=e}}),"function"==typeof t.init&&t.init(o),o}function r(e,r){const i=t(this.namespace+(void 0===r?":":r)+e);return i.log=this.log,i}function i(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(i),...t.skips.map(i).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let r;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const i=("string"==typeof e?e:"").split(/[\s,]+/),n=i.length;for(r=0;r<n;r++)i[r]&&("-"===(e=i[r].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.slice(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){if("*"===e[e.length-1])return!0;let r,i;for(r=0,i=t.skips.length;r<i;r++)if(t.skips[r].test(e))return!1;for(r=0,i=t.names.length;r<i;r++)if(t.names[r].test(e))return!0;return!1},t.humanize=Yt(),t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((r=>{t[r]=e[r]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let r=0;for(let t=0;t<e.length;t++)r=(r<<5)-r+e.charCodeAt(t),r|=0;return t.colors[Math.abs(r)%t.colors.length]},t.enable(t.load()),t};!function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const r="color: "+this.color;t.splice(1,0,r,"color: inherit");let i=0,n=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(i++,"%c"===e&&(n=i))})),t.splice(n,0,r)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=Xt(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(Zt,Zt.exports);var er=Zt.exports,tr={},rr={exports:{}};!function(e,t){!function(r,i){var n="function",s="undefined",a="object",o="string",c="major",d="model",l="name",p="type",u="vendor",h="version",m="architecture",f="console",g="mobile",v="tablet",_="smarttv",b="wearable",y="embedded",w="Amazon",S="Apple",C="ASUS",R="BlackBerry",T="Browser",P="Chrome",k="Firefox",D="Google",O="Huawei",E="LG",I="Microsoft",x="Motorola",j="Opera",M="Samsung",L="Sharp",A="Sony",N="Xiaomi",B="Zebra",F="Facebook",U="Chromium OS",$="Mac OS",z=function(e){for(var t={},r=0;r<e.length;r++)t[e[r].toUpperCase()]=e[r];return t},V=function(e,t){return typeof e===o&&-1!==q(t).indexOf(q(e))},q=function(e){return e.toLowerCase()},G=function(e,t){if(typeof e===o)return e=e.replace(/^\s\s*/,""),typeof t===s?e:e.substring(0,500)},H=function(e,t){for(var r,s,o,c,d,l,p=0;p<t.length&&!d;){var u=t[p],h=t[p+1];for(r=s=0;r<u.length&&!d&&u[r];)if(d=u[r++].exec(e))for(o=0;o<h.length;o++)l=d[++s],typeof(c=h[o])===a&&c.length>0?2===c.length?typeof c[1]==n?this[c[0]]=c[1].call(this,l):this[c[0]]=c[1]:3===c.length?typeof c[1]!==n||c[1].exec&&c[1].test?this[c[0]]=l?l.replace(c[1],c[2]):i:this[c[0]]=l?c[1].call(this,l,c[2]):i:4===c.length&&(this[c[0]]=l?c[3].call(this,l.replace(c[1],c[2])):i):this[c]=l||i;p+=2}},W=function(e,t){for(var r in t)if(typeof t[r]===a&&t[r].length>0){for(var n=0;n<t[r].length;n++)if(V(t[r][n],e))return"?"===r?i:r}else if(V(t[r],e))return"?"===r?i:r;return e},K={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},J={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[h,[l,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[h,[l,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[l,h],[/opios[\/ ]+([\w\.]+)/i],[h,[l,j+" Mini"]],[/\bopr\/([\w\.]+)/i],[h,[l,j]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[h,[l,"Baidu"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[l,h],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[h,[l,"UC"+T]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[h,[l,"WeChat"]],[/konqueror\/([\w\.]+)/i],[h,[l,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[h,[l,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[h,[l,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[h,[l,"Smart Lenovo "+T]],[/(avast|avg)\/([\w\.]+)/i],[[l,/(.+)/,"$1 Secure "+T],h],[/\bfocus\/([\w\.]+)/i],[h,[l,k+" Focus"]],[/\bopt\/([\w\.]+)/i],[h,[l,j+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[h,[l,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[h,[l,"Dolphin"]],[/coast\/([\w\.]+)/i],[h,[l,j+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[h,[l,"MIUI "+T]],[/fxios\/([-\w\.]+)/i],[h,[l,k]],[/\bqihu|(qi?ho?o?|360)browser/i],[[l,"360 "+T]],[/(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i],[[l,/(.+)/,"$1 "+T],h],[/samsungbrowser\/([\w\.]+)/i],[h,[l,M+" Internet"]],[/(comodo_dragon)\/([\w\.]+)/i],[[l,/_/g," "],h],[/metasr[\/ ]?([\d\.]+)/i],[h,[l,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[l,"Sogou Mobile"],h],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i],[l,h],[/(lbbrowser)/i,/\[(linkedin)app\]/i],[l],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[l,F],h],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[l,h],[/\bgsa\/([\w\.]+) .*safari\//i],[h,[l,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[h,[l,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[h,[l,P+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[l,P+" WebView"],h],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[h,[l,"Android "+T]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[l,h],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[h,[l,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[h,l],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[l,[h,W,{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[l,h],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[l,"Netscape"],h],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[h,[l,k+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i,/panasonic;(viera)/i],[l,h],[/(cobalt)\/([\w\.]+)/i],[l,[h,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[m,"amd64"]],[/(ia32(?=;))/i],[[m,q]],[/((?:i[346]|x)86)[;\)]/i],[[m,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[m,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[m,"armhf"]],[/windows (ce|mobile); ppc;/i],[[m,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[m,/ower/,"",q]],[/(sun4\w)[;\)]/i],[[m,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[m,q]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[d,[u,M],[p,v]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[d,[u,M],[p,g]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[d,[u,S],[p,g]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[d,[u,S],[p,v]],[/(macintosh);/i],[d,[u,S]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[d,[u,L],[p,g]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[d,[u,O],[p,v]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[d,[u,O],[p,g]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[d,/_/g," "],[u,N],[p,g]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[d,/_/g," "],[u,N],[p,v]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[d,[u,"OPPO"],[p,g]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[d,[u,"Vivo"],[p,g]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[d,[u,"Realme"],[p,g]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[d,[u,x],[p,g]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[d,[u,x],[p,v]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[d,[u,E],[p,v]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[d,[u,E],[p,g]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[d,[u,"Lenovo"],[p,v]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[d,/_/g," "],[u,"Nokia"],[p,g]],[/(pixel c)\b/i],[d,[u,D],[p,v]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[d,[u,D],[p,g]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[d,[u,A],[p,g]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[d,"Xperia Tablet"],[u,A],[p,v]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[d,[u,"OnePlus"],[p,g]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[d,[u,w],[p,v]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[d,/(.+)/g,"Fire Phone $1"],[u,w],[p,g]],[/(playbook);[-\w\),; ]+(rim)/i],[d,u,[p,v]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[d,[u,R],[p,g]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[d,[u,C],[p,v]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[d,[u,C],[p,g]],[/(nexus 9)/i],[d,[u,"HTC"],[p,v]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[u,[d,/_/g," "],[p,g]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[d,[u,"Acer"],[p,v]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[d,[u,"Meizu"],[p,g]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[d,[u,"Ulefone"],[p,g]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[u,d,[p,g]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[u,d,[p,v]],[/(surface duo)/i],[d,[u,I],[p,v]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[d,[u,"Fairphone"],[p,g]],[/(u304aa)/i],[d,[u,"AT&T"],[p,g]],[/\bsie-(\w*)/i],[d,[u,"Siemens"],[p,g]],[/\b(rct\w+) b/i],[d,[u,"RCA"],[p,v]],[/\b(venue[\d ]{2,7}) b/i],[d,[u,"Dell"],[p,v]],[/\b(q(?:mv|ta)\w+) b/i],[d,[u,"Verizon"],[p,v]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[d,[u,"Barnes & Noble"],[p,v]],[/\b(tm\d{3}\w+) b/i],[d,[u,"NuVision"],[p,v]],[/\b(k88) b/i],[d,[u,"ZTE"],[p,v]],[/\b(nx\d{3}j) b/i],[d,[u,"ZTE"],[p,g]],[/\b(gen\d{3}) b.+49h/i],[d,[u,"Swiss"],[p,g]],[/\b(zur\d{3}) b/i],[d,[u,"Swiss"],[p,v]],[/\b((zeki)?tb.*\b) b/i],[d,[u,"Zeki"],[p,v]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[u,"Dragon Touch"],d,[p,v]],[/\b(ns-?\w{0,9}) b/i],[d,[u,"Insignia"],[p,v]],[/\b((nxa|next)-?\w{0,9}) b/i],[d,[u,"NextBook"],[p,v]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[u,"Voice"],d,[p,g]],[/\b(lvtel\-)?(v1[12]) b/i],[[u,"LvTel"],d,[p,g]],[/\b(ph-1) /i],[d,[u,"Essential"],[p,g]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[d,[u,"Envizen"],[p,v]],[/\b(trio[-\w\. ]+) b/i],[d,[u,"MachSpeed"],[p,v]],[/\btu_(1491) b/i],[d,[u,"Rotor"],[p,v]],[/(shield[\w ]+) b/i],[d,[u,"Nvidia"],[p,v]],[/(sprint) (\w+)/i],[u,d,[p,g]],[/(kin\.[onetw]{3})/i],[[d,/\./g," "],[u,I],[p,g]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[d,[u,B],[p,v]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[d,[u,B],[p,g]],[/smart-tv.+(samsung)/i],[u,[p,_]],[/hbbtv.+maple;(\d+)/i],[[d,/^/,"SmartTV"],[u,M],[p,_]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[u,E],[p,_]],[/(apple) ?tv/i],[u,[d,S+" TV"],[p,_]],[/crkey/i],[[d,P+"cast"],[u,D],[p,_]],[/droid.+aft(\w+)( bui|\))/i],[d,[u,w],[p,_]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[d,[u,L],[p,_]],[/(bravia[\w ]+)( bui|\))/i],[d,[u,A],[p,_]],[/(mitv-\w{5}) bui/i],[d,[u,N],[p,_]],[/Hbbtv.*(technisat) (.*);/i],[u,d,[p,_]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[u,G],[d,G],[p,_]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[p,_]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[u,d,[p,f]],[/droid.+; (shield) bui/i],[d,[u,"Nvidia"],[p,f]],[/(playstation [345portablevi]+)/i],[d,[u,A],[p,f]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[d,[u,I],[p,f]],[/((pebble))app/i],[u,d,[p,b]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[d,[u,S],[p,b]],[/droid.+; (glass) \d/i],[d,[u,D],[p,b]],[/droid.+; (wt63?0{2,3})\)/i],[d,[u,B],[p,b]],[/(quest( 2| pro)?)/i],[d,[u,F],[p,b]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[u,[p,y]],[/(aeobc)\b/i],[d,[u,w],[p,y]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[d,[p,g]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[d,[p,v]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[p,v]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[p,g]],[/(android[-\w\. ]{0,9});.+buil/i],[d,[u,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[h,[l,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[h,[l,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[l,h],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[h,l]],os:[[/microsoft (windows) (vista|xp)/i],[l,h],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[l,[h,W,K]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[h,W,K],[l,"Windows"]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[h,/_/g,"."],[l,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[l,$],[h,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[h,l],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[l,h],[/\(bb(10);/i],[h,[l,R]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[h,[l,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[h,[l,k+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[h,[l,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[h,[l,"watchOS"]],[/crkey\/([\d\.]+)/i],[h,[l,P+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[l,U],h],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[l,h],[/(sunos) ?([\w\.\d]*)/i],[[l,"Solaris"],h],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[l,h]]},Q=function(e,t){if(typeof e===a&&(t=e,e=i),!(this instanceof Q))return new Q(e,t).getResult();var f=typeof r!==s&&r.navigator?r.navigator:i,_=e||(f&&f.userAgent?f.userAgent:""),b=f&&f.userAgentData?f.userAgentData:i,y=t?function(e,t){var r={};for(var i in e)t[i]&&t[i].length%2==0?r[i]=t[i].concat(e[i]):r[i]=e[i];return r}(J,t):J,w=f&&f.userAgent==_;return this.getBrowser=function(){var e,t={};return t[l]=i,t[h]=i,H.call(t,_,y.browser),t[c]=typeof(e=t[h])===o?e.replace(/[^\d\.]/g,"").split(".")[0]:i,w&&f&&f.brave&&typeof f.brave.isBrave==n&&(t[l]="Brave"),t},this.getCPU=function(){var e={};return e[m]=i,H.call(e,_,y.cpu),e},this.getDevice=function(){var e={};return e[u]=i,e[d]=i,e[p]=i,H.call(e,_,y.device),w&&!e[p]&&b&&b.mobile&&(e[p]=g),w&&"Macintosh"==e[d]&&f&&typeof f.standalone!==s&&f.maxTouchPoints&&f.maxTouchPoints>2&&(e[d]="iPad",e[p]=v),e},this.getEngine=function(){var e={};return e[l]=i,e[h]=i,H.call(e,_,y.engine),e},this.getOS=function(){var e={};return e[l]=i,e[h]=i,H.call(e,_,y.os),w&&!e[l]&&b&&"Unknown"!=b.platform&&(e[l]=b.platform.replace(/chrome os/i,U).replace(/macos/i,$)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return _},this.setUA=function(e){return _=typeof e===o&&e.length>500?G(e,500):e,this},this.setUA(_),this};Q.VERSION="1.0.37",Q.BROWSER=z([l,h,c]),Q.CPU=z([m]),Q.DEVICE=z([d,u,p,f,g,_,v,b,y]),Q.ENGINE=Q.OS=z([l,h]),e.exports&&(t=e.exports=Q),t.UAParser=Q;var Z=typeof r!==s&&(r.jQuery||r.Zepto);if(Z&&!Z.ua){var Y=new Q;Z.ua=Y.getResult(),Z.ua.get=function(){return Y.getUA()},Z.ua.set=function(e){Y.setUA(e);var t=Y.getResult();for(var r in t)Z.ua[r]=t[r]}}}("object"==typeof window?window:Gt)}(rr,rr.exports);var ir=rr.exports,nr={},sr=Gt&&Gt.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(nr,"__esModule",{value:!0}),nr.Logger=void 0;const ar=sr(er),or="mediasoup-client";nr.Logger=class{constructor(e){e?(this._debug=(0,ar.default)(`${or}:${e}`),this._warn=(0,ar.default)(`${or}:WARN:${e}`),this._error=(0,ar.default)(`${or}:ERROR:${e}`)):(this._debug=(0,ar.default)(or),this._warn=(0,ar.default)(`${or}:WARN`),this._error=(0,ar.default)(`${or}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}};var cr={},dr=Wt(qt);Object.defineProperty(cr,"__esModule",{value:!0}),cr.EnhancedEventEmitter=void 0;const lr=dr,pr=new nr.Logger("EnhancedEventEmitter");class ur extends lr.EventEmitter{constructor(){super(),this.setMaxListeners(1/0)}emit(e,...t){return super.emit(e,...t)}safeEmit(e,...t){const r=super.listenerCount(e);try{return super.emit(e,...t)}catch(t){return pr.error("safeEmit() | event listener threw an error [eventName:%s]:%o",e,t),Boolean(r)}}on(e,t){return super.on(e,t),this}off(e,t){return super.off(e,t),this}addListener(e,t){return super.on(e,t),this}prependListener(e,t){return super.prependListener(e,t),this}once(e,t){return super.once(e,t),this}prependOnceListener(e,t){return super.prependOnceListener(e,t),this}removeListener(e,t){return super.off(e,t),this}removeAllListeners(e){return super.removeAllListeners(e),this}listenerCount(e){return super.listenerCount(e)}listeners(e){return super.listeners(e)}rawListeners(e){return super.rawListeners(e)}}cr.EnhancedEventEmitter=ur;var hr={};Object.defineProperty(hr,"__esModule",{value:!0}),hr.InvalidStateError=hr.UnsupportedError=void 0;class mr extends Error{constructor(e){super(e),this.name="UnsupportedError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,mr):this.stack=new Error(e).stack}}hr.UnsupportedError=mr;class fr extends Error{constructor(e){super(e),this.name="InvalidStateError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,fr):this.stack=new Error(e).stack}}hr.InvalidStateError=fr;var gr={};Object.defineProperty(gr,"__esModule",{value:!0}),gr.generateRandomNumber=gr.clone=void 0,gr.clone=function(e){return void 0===e?void 0:Number.isNaN(e)?NaN:"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))},gr.generateRandomNumber=function(){return Math.round(1e7*Math.random())};var vr={},_r={},br={},yr=Gt&&Gt.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(br,"__esModule",{value:!0}),br.Logger=void 0;const wr=yr(er),Sr="h264-profile-level-id";br.Logger=class{constructor(e){e?(this._debug=(0,wr.default)(`${Sr}:${e}`),this._warn=(0,wr.default)(`${Sr}:WARN:${e}`),this._error=(0,wr.default)(`${Sr}:ERROR:${e}`)):(this._debug=(0,wr.default)(Sr),this._warn=(0,wr.default)(`${Sr}:WARN`),this._error=(0,wr.default)(`${Sr}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}},Object.defineProperty(_r,"__esModule",{value:!0}),_r.generateProfileLevelIdStringForAnswer=_r.isSameProfile=_r.parseSdpProfileLevelId=_r.levelToString=_r.profileToString=_r.profileLevelIdToString=_r.parseProfileLevelId=_r.ProfileLevelId=_r.Level=_r.Profile=void 0;const Cr=new br.Logger;var Rr,Tr;!function(e){e[e.ConstrainedBaseline=1]="ConstrainedBaseline",e[e.Baseline=2]="Baseline",e[e.Main=3]="Main",e[e.ConstrainedHigh=4]="ConstrainedHigh",e[e.High=5]="High",e[e.PredictiveHigh444=6]="PredictiveHigh444"}(Rr||(_r.Profile=Rr={})),function(e){e[e.L1_b=0]="L1_b",e[e.L1=10]="L1",e[e.L1_1=11]="L1_1",e[e.L1_2=12]="L1_2",e[e.L1_3=13]="L1_3",e[e.L2=20]="L2",e[e.L2_1=21]="L2_1",e[e.L2_2=22]="L2_2",e[e.L3=30]="L3",e[e.L3_1=31]="L3_1",e[e.L3_2=32]="L3_2",e[e.L4=40]="L4",e[e.L4_1=41]="L4_1",e[e.L4_2=42]="L4_2",e[e.L5=50]="L5",e[e.L5_1=51]="L5_1",e[e.L5_2=52]="L5_2"}(Tr||(_r.Level=Tr={}));class Pr{constructor(e,t){this.profile=e,this.level=t}}_r.ProfileLevelId=Pr;const kr=new Pr(Rr.ConstrainedBaseline,Tr.L3_1);class Dr{constructor(e){this.mask=~Mr("x",e),this.masked_value=Mr("1",e)}isMatch(e){return this.masked_value===(e&this.mask)}}class Or{constructor(e,t,r){this.profile_idc=e,this.profile_iop=t,this.profile=r}}const Er=[new Or(66,new Dr("x1xx0000"),Rr.ConstrainedBaseline),new Or(77,new Dr("1xxx0000"),Rr.ConstrainedBaseline),new Or(88,new Dr("11xx0000"),Rr.ConstrainedBaseline),new Or(66,new Dr("x0xx0000"),Rr.Baseline),new Or(88,new Dr("10xx0000"),Rr.Baseline),new Or(77,new Dr("0x0x0000"),Rr.Main),new Or(100,new Dr("00000000"),Rr.High),new Or(100,new Dr("00001100"),Rr.ConstrainedHigh),new Or(244,new Dr("00000000"),Rr.PredictiveHigh444)];function Ir(e){if("string"!=typeof e||6!==e.length)return;const t=parseInt(e,16);if(0===t)return;const r=255&t,i=t>>8&255,n=t>>16&255;let s;switch(r){case Tr.L1_1:s=0!=(16&i)?Tr.L1_b:Tr.L1_1;break;case Tr.L1:case Tr.L1_2:case Tr.L1_3:case Tr.L2:case Tr.L2_1:case Tr.L2_2:case Tr.L3:case Tr.L3_1:case Tr.L3_2:case Tr.L4:case Tr.L4_1:case Tr.L4_2:case Tr.L5:case Tr.L5_1:case Tr.L5_2:s=r;break;default:return void Cr.warn(`parseProfileLevelId() | unrecognized level_idc [str:${e}, level_idc:${r}]`)}for(const e of Er)if(n===e.profile_idc&&e.profile_iop.isMatch(i))return new Pr(e.profile,s);Cr.warn(`parseProfileLevelId() | unrecognized profile_idc/profile_iop combination [str:${e}, profile_idc:${n}, profile_iop:${i}]`)}function xr(e){if(e.level==Tr.L1_b)switch(e.profile){case Rr.ConstrainedBaseline:return"42f00b";case Rr.Baseline:return"42100b";case Rr.Main:return"4d100b";default:return void Cr.warn(`profileLevelIdToString() | Level 1_b not is allowed for profile ${e.profile}`)}let t;switch(e.profile){case Rr.ConstrainedBaseline:t="42e0";break;case Rr.Baseline:t="4200";break;case Rr.Main:t="4d00";break;case Rr.ConstrainedHigh:t="640c";break;case Rr.High:t="6400";break;case Rr.PredictiveHigh444:t="f400";break;default:return void Cr.warn(`profileLevelIdToString() | unrecognized profile ${e.profile}`)}let r=e.level.toString(16);return 1===r.length&&(r=`0${r}`),`${t}${r}`}function jr(e={}){const t=e["profile-level-id"];return t?Ir(t):kr}function Mr(e,t){return Number(t[0]===e)<<7|Number(t[1]===e)<<6|Number(t[2]===e)<<5|Number(t[3]===e)<<4|Number(t[4]===e)<<3|Number(t[5]===e)<<2|Number(t[6]===e)<<1|Number(t[7]===e)<<0}function Lr(e={}){const t=e["level-asymmetry-allowed"];return!0===t||1===t||"1"===t}_r.parseProfileLevelId=Ir,_r.profileLevelIdToString=xr,_r.profileToString=function(e){switch(e){case Rr.ConstrainedBaseline:return"ConstrainedBaseline";case Rr.Baseline:return"Baseline";case Rr.Main:return"Main";case Rr.ConstrainedHigh:return"ConstrainedHigh";case Rr.High:return"High";case Rr.PredictiveHigh444:return"PredictiveHigh444";default:return void Cr.warn(`profileToString() | unrecognized profile ${e}`)}},_r.levelToString=function(e){switch(e){case Tr.L1_b:return"1b";case Tr.L1:return"1";case Tr.L1_1:return"1.1";case Tr.L1_2:return"1.2";case Tr.L1_3:return"1.3";case Tr.L2:return"2";case Tr.L2_1:return"2.1";case Tr.L2_2:return"2.2";case Tr.L3:return"3";case Tr.L3_1:return"3.1";case Tr.L3_2:return"3.2";case Tr.L4:return"4";case Tr.L4_1:return"4.1";case Tr.L4_2:return"4.2";case Tr.L5:return"5";case Tr.L5_1:return"5.1";case Tr.L5_2:return"5.2";default:return void Cr.warn(`levelToString() | unrecognized level ${e}`)}},_r.parseSdpProfileLevelId=jr,_r.isSameProfile=function(e={},t={}){const r=jr(e),i=jr(t);return Boolean(r&&i&&r.profile===i.profile)},_r.generateProfileLevelIdStringForAnswer=function(e={},t={}){if(!e["profile-level-id"]&&!t["profile-level-id"])return void Cr.warn("generateProfileLevelIdStringForAnswer() | profile-level-id missing in local and remote params");const r=jr(e),i=jr(t);if(!r)throw new TypeError("invalid local_profile_level_id");if(!i)throw new TypeError("invalid remote_profile_level_id");if(r.profile!==i.profile)throw new TypeError("H264 Profile mismatch");const n=Lr(e)&&Lr(t),s=r.level,a=i.level,o=function(e,t){return e===Tr.L1_b?t!==Tr.L1&&t!==Tr.L1_b:t===Tr.L1_b?e!==Tr.L1:e<t}(c=s,d=a)?c:d;var c,d;const l=n?s:o;return Cr.debug(`generateProfileLevelIdStringForAnswer() | result [profile:${r.profile}, level:${l}]`),xr(new Pr(r.profile,l))};var Ar=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Nr=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Br=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Ar(t,e,r);return Nr(t,e),t};Object.defineProperty(vr,"__esModule",{value:!0}),vr.canReceive=vr.canSend=vr.generateProbatorRtpParameters=vr.reduceCodecs=vr.getSendingRemoteRtpParameters=vr.getSendingRtpParameters=vr.getRecvRtpCapabilities=vr.getExtendedRtpCapabilities=vr.validateSctpCapabilities=vr.validateSctpStreamParameters=vr.validateRtpParameters=vr.validateRtpCapabilities=void 0;const Fr=Br(_r),Ur=Br(gr);function $r(e){if("object"!=typeof e)throw new TypeError("params is not an object");if(e.mid&&"string"!=typeof e.mid)throw new TypeError("params.mid is not a string");if(!Array.isArray(e.codecs))throw new TypeError("missing params.codecs");for(const t of e.codecs)Gr(t);if(e.headerExtensions&&!Array.isArray(e.headerExtensions))throw new TypeError("params.headerExtensions is not an array");e.headerExtensions||(e.headerExtensions=[]);for(const t of e.headerExtensions)Hr(t);if(e.encodings&&!Array.isArray(e.encodings))throw new TypeError("params.encodings is not an array");e.encodings||(e.encodings=[]);for(const t of e.encodings)Wr(t);if(e.rtcp&&"object"!=typeof e.rtcp)throw new TypeError("params.rtcp is not an object");e.rtcp||(e.rtcp={}),function(e){if("object"!=typeof e)throw new TypeError("rtcp is not an object");if(e.cname&&"string"!=typeof e.cname)throw new TypeError("invalid rtcp.cname");e.reducedSize&&"boolean"==typeof e.reducedSize||(e.reducedSize=!0)}(e.rtcp)}function zr(e){const t=new RegExp("^(audio|video)/(.+)","i");if("object"!=typeof e)throw new TypeError("codec is not an object");if(!e.mimeType||"string"!=typeof e.mimeType)throw new TypeError("missing codec.mimeType");const r=t.exec(e.mimeType);if(!r)throw new TypeError("invalid codec.mimeType");if(e.kind=r[1].toLowerCase(),e.preferredPayloadType&&"number"!=typeof e.preferredPayloadType)throw new TypeError("invalid codec.preferredPayloadType");if("number"!=typeof e.clockRate)throw new TypeError("missing codec.clockRate");"audio"===e.kind?"number"!=typeof e.channels&&(e.channels=1):delete e.channels,e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError(`invalid codec parameter [key:${t}s, value:${r}]`);if("apt"===t&&"number"!=typeof r)throw new TypeError("invalid codec apt parameter")}e.rtcpFeedback&&Array.isArray(e.rtcpFeedback)||(e.rtcpFeedback=[]);for(const t of e.rtcpFeedback)Vr(t)}function Vr(e){if("object"!=typeof e)throw new TypeError("fb is not an object");if(!e.type||"string"!=typeof e.type)throw new TypeError("missing fb.type");e.parameter&&"string"==typeof e.parameter||(e.parameter="")}function qr(e){if("object"!=typeof e)throw new TypeError("ext is not an object");if("audio"!==e.kind&&"video"!==e.kind)throw new TypeError("invalid ext.kind");if(!e.uri||"string"!=typeof e.uri)throw new TypeError("missing ext.uri");if("number"!=typeof e.preferredId)throw new TypeError("missing ext.preferredId");if(e.preferredEncrypt&&"boolean"!=typeof e.preferredEncrypt)throw new TypeError("invalid ext.preferredEncrypt");if(e.preferredEncrypt||(e.preferredEncrypt=!1),e.direction&&"string"!=typeof e.direction)throw new TypeError("invalid ext.direction");e.direction||(e.direction="sendrecv")}function Gr(e){const t=new RegExp("^(audio|video)/(.+)","i");if("object"!=typeof e)throw new TypeError("codec is not an object");if(!e.mimeType||"string"!=typeof e.mimeType)throw new TypeError("missing codec.mimeType");const r=t.exec(e.mimeType);if(!r)throw new TypeError("invalid codec.mimeType");if("number"!=typeof e.payloadType)throw new TypeError("missing codec.payloadType");if("number"!=typeof e.clockRate)throw new TypeError("missing codec.clockRate");"audio"===r[1].toLowerCase()?"number"!=typeof e.channels&&(e.channels=1):delete e.channels,e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError(`invalid codec parameter [key:${t}s, value:${r}]`);if("apt"===t&&"number"!=typeof r)throw new TypeError("invalid codec apt parameter")}e.rtcpFeedback&&Array.isArray(e.rtcpFeedback)||(e.rtcpFeedback=[]);for(const t of e.rtcpFeedback)Vr(t)}function Hr(e){if("object"!=typeof e)throw new TypeError("ext is not an object");if(!e.uri||"string"!=typeof e.uri)throw new TypeError("missing ext.uri");if("number"!=typeof e.id)throw new TypeError("missing ext.id");if(e.encrypt&&"boolean"!=typeof e.encrypt)throw new TypeError("invalid ext.encrypt");e.encrypt||(e.encrypt=!1),e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError("invalid header extension parameter")}}function Wr(e){if("object"!=typeof e)throw new TypeError("encoding is not an object");if(e.ssrc&&"number"!=typeof e.ssrc)throw new TypeError("invalid encoding.ssrc");if(e.rid&&"string"!=typeof e.rid)throw new TypeError("invalid encoding.rid");if(e.rtx&&"object"!=typeof e.rtx)throw new TypeError("invalid encoding.rtx");if(e.rtx&&"number"!=typeof e.rtx.ssrc)throw new TypeError("missing encoding.rtx.ssrc");if(e.dtx&&"boolean"==typeof e.dtx||(e.dtx=!1),e.scalabilityMode&&"string"!=typeof e.scalabilityMode)throw new TypeError("invalid encoding.scalabilityMode")}function Kr(e){return!!e&&/.+\/rtx$/i.test(e.mimeType)}function Jr(e,t,{strict:r=!1,modify:i=!1}={}){const n=e.mimeType.toLowerCase();if(n!==t.mimeType.toLowerCase())return!1;if(e.clockRate!==t.clockRate)return!1;if(e.channels!==t.channels)return!1;switch(n){case"video/h264":if(r){if((e.parameters["packetization-mode"]||0)!==(t.parameters["packetization-mode"]||0))return!1;if(!Fr.isSameProfile(e.parameters,t.parameters))return!1;let r;try{r=Fr.generateProfileLevelIdStringForAnswer(e.parameters,t.parameters)}catch(e){return!1}i&&(r?(e.parameters["profile-level-id"]=r,t.parameters["profile-level-id"]=r):(delete e.parameters["profile-level-id"],delete t.parameters["profile-level-id"]))}break;case"video/vp9":if(r){if((e.parameters["profile-id"]||0)!==(t.parameters["profile-id"]||0))return!1}}return!0}function Qr(e,t){return(!e.kind||!t.kind||e.kind===t.kind)&&e.uri===t.uri}function Zr(e,t){const r=[];for(const i of e.rtcpFeedback||[]){const e=(t.rtcpFeedback||[]).find((e=>e.type===i.type&&(e.parameter===i.parameter||!e.parameter&&!i.parameter)));e&&r.push(e)}return r}vr.validateRtpCapabilities=function(e){if("object"!=typeof e)throw new TypeError("caps is not an object");if(e.codecs&&!Array.isArray(e.codecs))throw new TypeError("caps.codecs is not an array");e.codecs||(e.codecs=[]);for(const t of e.codecs)zr(t);if(e.headerExtensions&&!Array.isArray(e.headerExtensions))throw new TypeError("caps.headerExtensions is not an array");e.headerExtensions||(e.headerExtensions=[]);for(const t of e.headerExtensions)qr(t)},vr.validateRtpParameters=$r,vr.validateSctpStreamParameters=function(e){if("object"!=typeof e)throw new TypeError("params is not an object");if("number"!=typeof e.streamId)throw new TypeError("missing params.streamId");let t=!1;if("boolean"==typeof e.ordered?t=!0:e.ordered=!0,e.maxPacketLifeTime&&"number"!=typeof e.maxPacketLifeTime)throw new TypeError("invalid params.maxPacketLifeTime");if(e.maxRetransmits&&"number"!=typeof e.maxRetransmits)throw new TypeError("invalid params.maxRetransmits");if(e.maxPacketLifeTime&&e.maxRetransmits)throw new TypeError("cannot provide both maxPacketLifeTime and maxRetransmits");if(t&&e.ordered&&(e.maxPacketLifeTime||e.maxRetransmits))throw new TypeError("cannot be ordered with maxPacketLifeTime or maxRetransmits");if(t||!e.maxPacketLifeTime&&!e.maxRetransmits||(e.ordered=!1),e.label&&"string"!=typeof e.label)throw new TypeError("invalid params.label");if(e.protocol&&"string"!=typeof e.protocol)throw new TypeError("invalid params.protocol")},vr.validateSctpCapabilities=function(e){if("object"!=typeof e)throw new TypeError("caps is not an object");if(!e.numStreams||"object"!=typeof e.numStreams)throw new TypeError("missing caps.numStreams");!function(e){if("object"!=typeof e)throw new TypeError("numStreams is not an object");if("number"!=typeof e.OS)throw new TypeError("missing numStreams.OS");if("number"!=typeof e.MIS)throw new TypeError("missing numStreams.MIS")}(e.numStreams)},vr.getExtendedRtpCapabilities=function(e,t){const r={codecs:[],headerExtensions:[]};for(const i of t.codecs||[]){if(Kr(i))continue;const t=(e.codecs||[]).find((e=>Jr(e,i,{strict:!0,modify:!0})));if(!t)continue;const n={mimeType:t.mimeType,kind:t.kind,clockRate:t.clockRate,channels:t.channels,localPayloadType:t.preferredPayloadType,localRtxPayloadType:void 0,remotePayloadType:i.preferredPayloadType,remoteRtxPayloadType:void 0,localParameters:t.parameters,remoteParameters:i.parameters,rtcpFeedback:Zr(t,i)};r.codecs.push(n)}for(const i of r.codecs){const r=e.codecs.find((e=>Kr(e)&&e.parameters.apt===i.localPayloadType)),n=t.codecs.find((e=>Kr(e)&&e.parameters.apt===i.remotePayloadType));r&&n&&(i.localRtxPayloadType=r.preferredPayloadType,i.remoteRtxPayloadType=n.preferredPayloadType)}for(const i of t.headerExtensions){const t=e.headerExtensions.find((e=>Qr(e,i)));if(!t)continue;const n={kind:i.kind,uri:i.uri,sendId:t.preferredId,recvId:i.preferredId,encrypt:t.preferredEncrypt,direction:"sendrecv"};switch(i.direction){case"sendrecv":n.direction="sendrecv";break;case"recvonly":n.direction="sendonly";break;case"sendonly":n.direction="recvonly";break;case"inactive":n.direction="inactive"}r.headerExtensions.push(n)}return r},vr.getRecvRtpCapabilities=function(e){const t={codecs:[],headerExtensions:[]};for(const r of e.codecs){const e={mimeType:r.mimeType,kind:r.kind,preferredPayloadType:r.remotePayloadType,clockRate:r.clockRate,channels:r.channels,parameters:r.localParameters,rtcpFeedback:r.rtcpFeedback};if(t.codecs.push(e),!r.remoteRtxPayloadType)continue;const i={mimeType:`${r.kind}/rtx`,kind:r.kind,preferredPayloadType:r.remoteRtxPayloadType,clockRate:r.clockRate,parameters:{apt:r.remotePayloadType},rtcpFeedback:[]};t.codecs.push(i)}for(const r of e.headerExtensions){if("sendrecv"!==r.direction&&"recvonly"!==r.direction)continue;const e={kind:r.kind,uri:r.uri,preferredId:r.recvId,preferredEncrypt:r.encrypt,direction:r.direction};t.headerExtensions.push(e)}return t},vr.getSendingRtpParameters=function(e,t){const r={mid:void 0,codecs:[],headerExtensions:[],encodings:[],rtcp:{}};for(const i of t.codecs){if(i.kind!==e)continue;const t={mimeType:i.mimeType,payloadType:i.localPayloadType,clockRate:i.clockRate,channels:i.channels,parameters:i.localParameters,rtcpFeedback:i.rtcpFeedback};if(r.codecs.push(t),i.localRtxPayloadType){const e={mimeType:`${i.kind}/rtx`,payloadType:i.localRtxPayloadType,clockRate:i.clockRate,parameters:{apt:i.localPayloadType},rtcpFeedback:[]};r.codecs.push(e)}}for(const i of t.headerExtensions){if(i.kind&&i.kind!==e||"sendrecv"!==i.direction&&"sendonly"!==i.direction)continue;const t={uri:i.uri,id:i.sendId,encrypt:i.encrypt,parameters:{}};r.headerExtensions.push(t)}return r},vr.getSendingRemoteRtpParameters=function(e,t){const r={mid:void 0,codecs:[],headerExtensions:[],encodings:[],rtcp:{}};for(const i of t.codecs){if(i.kind!==e)continue;const t={mimeType:i.mimeType,payloadType:i.localPayloadType,clockRate:i.clockRate,channels:i.channels,parameters:i.remoteParameters,rtcpFeedback:i.rtcpFeedback};if(r.codecs.push(t),i.localRtxPayloadType){const e={mimeType:`${i.kind}/rtx`,payloadType:i.localRtxPayloadType,clockRate:i.clockRate,parameters:{apt:i.localPayloadType},rtcpFeedback:[]};r.codecs.push(e)}}for(const i of t.headerExtensions){if(i.kind&&i.kind!==e||"sendrecv"!==i.direction&&"sendonly"!==i.direction)continue;const t={uri:i.uri,id:i.sendId,encrypt:i.encrypt,parameters:{}};r.headerExtensions.push(t)}if(r.headerExtensions.some((e=>"http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"===e.uri)))for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"goog-remb"!==e.type));else if(r.headerExtensions.some((e=>"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"===e.uri)))for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"transport-cc"!==e.type));else for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"transport-cc"!==e.type&&"goog-remb"!==e.type));return r},vr.reduceCodecs=function(e,t){const r=[];if(t){for(let i=0;i<e.length;++i)if(Jr(e[i],t)){r.push(e[i]),Kr(e[i+1])&&r.push(e[i+1]);break}if(0===r.length)throw new TypeError("no matching codec found")}else r.push(e[0]),Kr(e[1])&&r.push(e[1]);return r},vr.generateProbatorRtpParameters=function(e){$r(e=Ur.clone(e));const t={mid:"probator",codecs:[],headerExtensions:[],encodings:[{ssrc:1234}],rtcp:{cname:"probator"}};return t.codecs.push(e.codecs[0]),t.codecs[0].payloadType=127,t.headerExtensions=e.headerExtensions,t},vr.canSend=function(e,t){return t.codecs.some((t=>t.kind===e))},vr.canReceive=function(e,t){if($r(e),0===e.codecs.length)return!1;const r=e.codecs[0];return t.codecs.some((e=>e.remotePayloadType===r.payloadType))};var Yr={},Xr={},ei={};Object.defineProperty(ei,"__esModule",{value:!0}),ei.Logger=void 0;const ti=er,ri="awaitqueue";ei.Logger=class{constructor(e){e?(this._debug=(0,ti.default)(`${ri}:${e}`),this._warn=(0,ti.default)(`${ri}:WARN:${e}`),this._error=(0,ti.default)(`${ri}:ERROR:${e}`)):(this._debug=(0,ti.default)(ri),this._warn=(0,ti.default)(`${ri}:WARN`),this._error=(0,ti.default)(`${ri}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}},Object.defineProperty(Xr,"__esModule",{value:!0}),Xr.AwaitQueue=Xr.AwaitQueueRemovedTaskError=Xr.AwaitQueueStoppedError=void 0;const ii=new ei.Logger;class ni extends Error{constructor(e){super(e??"AwaitQueue stopped"),this.name="AwaitQueueStoppedError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,ni)}}Xr.AwaitQueueStoppedError=ni;class si extends Error{constructor(e){super(e??"AwaitQueue task removed"),this.name="AwaitQueueRemovedTaskError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,si)}}Xr.AwaitQueueRemovedTaskError=si;
|
|
2
2
|
/*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
|
3
|
-
let oi;ei.AwaitQueue=class{constructor(){this.pendingTasks=new Map,this.nextTaskId=0,this.stopping=!1}get size(){return this.pendingTasks.size}async push(e,t){if(t=t??e.name,ni.debug(`push() [name:${t}]`),"function"!=typeof e)throw new TypeError("given task is not a function");if(t)try{Object.defineProperty(e,"name",{value:t})}catch(e){}return new Promise(((r,i)=>{const n={id:this.nextTaskId++,task:e,name:t,enqueuedAt:Date.now(),executedAt:void 0,completed:!1,resolve:e=>{if(n.completed)return;n.completed=!0,this.pendingTasks.delete(n.id),ni.debug(`resolving task [name:${n.name}]`),r(e);const[t]=this.pendingTasks.values();t&&!t.executedAt&&this.execute(t)},reject:e=>{if(!n.completed&&(n.completed=!0,this.pendingTasks.delete(n.id),ni.debug(`rejecting task [name:${n.name}]: %s`,String(e)),i(e),!this.stopping)){const[e]=this.pendingTasks.values();e&&!e.executedAt&&this.execute(e)}}};this.pendingTasks.set(n.id,n),1===this.pendingTasks.size&&this.execute(n)}))}stop(){ni.debug("stop()"),this.stopping=!0;for(const e of this.pendingTasks.values())ni.debug(`stop() | stopping task [name:${e.name}]`),e.reject(new si);this.stopping=!1}remove(e){ni.debug(`remove() [taskIdx:${e}]`);const t=Array.from(this.pendingTasks.values())[e];t?t.reject(new ai):ni.debug(`stop() | no task with given idx [taskIdx:${e}]`)}dump(){const e=Date.now();let t=0;return Array.from(this.pendingTasks.values()).map((r=>({idx:t++,task:r.task,name:r.name,enqueuedTime:r.executedAt?r.executedAt-r.enqueuedAt:e-r.enqueuedAt,executionTime:r.executedAt?e-r.executedAt:0})))}async execute(e){if(ni.debug(`execute() [name:${e.name}]`),e.executedAt)throw new Error("task already being executed");e.executedAt=Date.now();try{const t=await e.task();e.resolve(t)}catch(t){e.reject(t)}}};var ci="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:Ht):e=>(oi||(oi=Promise.resolve())).then(e).catch((e=>setTimeout((()=>{throw e}),0))),di={};Object.defineProperty(di,"__esModule",{value:!0}),di.Producer=void 0;const li=dr,pi=mr,ui=new sr.Logger("Producer");class hi extends li.EnhancedEventEmitter{constructor({id:e,localId:t,rtpSender:r,track:i,rtpParameters:n,stopTracks:s,disableTrackOnPause:a,zeroRtpOnPause:o,appData:c}){super(),this._closed=!1,this._observer=new li.EnhancedEventEmitter,ui.debug("constructor()"),this._id=e,this._localId=t,this._rtpSender=r,this._track=i,this._kind=i.kind,this._rtpParameters=n,this._paused=!!a&&!i.enabled,this._maxSpatialLayer=void 0,this._stopTracks=s,this._disableTrackOnPause=a,this._zeroRtpOnPause=o,this._appData=c||{},this.onTrackEnded=this.onTrackEnded.bind(this),this.handleTrack()}get id(){return this._id}get localId(){return this._localId}get closed(){return this._closed}get kind(){return this._kind}get rtpSender(){return this._rtpSender}get track(){return this._track}get rtpParameters(){return this._rtpParameters}get paused(){return this._paused}get maxSpatialLayer(){return this._maxSpatialLayer}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(ui.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(ui.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new pi.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){ui.debug("pause()"),this._closed?ui.error("pause() | Producer closed"):(this._paused=!0,this._track&&this._disableTrackOnPause&&(this._track.enabled=!1),this._zeroRtpOnPause&&new Promise(((e,t)=>{this.safeEmit("@pause",e,t)})).catch((()=>{})),this._observer.safeEmit("pause"))}resume(){ui.debug("resume()"),this._closed?ui.error("resume() | Producer closed"):(this._paused=!1,this._track&&this._disableTrackOnPause&&(this._track.enabled=!0),this._zeroRtpOnPause&&new Promise(((e,t)=>{this.safeEmit("@resume",e,t)})).catch((()=>{})),this._observer.safeEmit("resume"))}async replaceTrack({track:e}){if(ui.debug("replaceTrack() [track:%o]",e),this._closed){if(e&&this._stopTracks)try{e.stop()}catch(e){}throw new pi.InvalidStateError("closed")}if(e&&"ended"===e.readyState)throw new pi.InvalidStateError("track ended");e!==this._track?(await new Promise(((t,r)=>{this.safeEmit("@replacetrack",e,t,r)})),this.destroyTrack(),this._track=e,this._track&&this._disableTrackOnPause&&(this._paused?this._paused&&(this._track.enabled=!1):this._track.enabled=!0),this.handleTrack()):ui.debug("replaceTrack() | same track, ignored")}async setMaxSpatialLayer(e){if(this._closed)throw new pi.InvalidStateError("closed");if("video"!==this._kind)throw new pi.UnsupportedError("not a video Producer");if("number"!=typeof e)throw new TypeError("invalid spatialLayer");e!==this._maxSpatialLayer&&(await new Promise(((t,r)=>{this.safeEmit("@setmaxspatiallayer",e,t,r)})).catch((()=>{})),this._maxSpatialLayer=e)}async setRtpEncodingParameters(e){if(this._closed)throw new pi.InvalidStateError("closed");if("object"!=typeof e)throw new TypeError("invalid params");await new Promise(((t,r)=>{this.safeEmit("@setrtpencodingparameters",e,t,r)}))}onTrackEnded(){ui.debug('track "ended" event'),this.safeEmit("trackended"),this._observer.safeEmit("trackended")}handleTrack(){this._track&&this._track.addEventListener("ended",this.onTrackEnded)}destroyTrack(){if(this._track)try{this._track.removeEventListener("ended",this.onTrackEnded),this._stopTracks&&this._track.stop()}catch(e){}}}di.Producer=hi;var mi={};Object.defineProperty(mi,"__esModule",{value:!0}),mi.Consumer=void 0;const fi=dr,gi=mr,vi=new sr.Logger("Consumer");class _i extends fi.EnhancedEventEmitter{constructor({id:e,localId:t,producerId:r,rtpReceiver:i,track:n,rtpParameters:s,appData:a}){super(),this._closed=!1,this._observer=new fi.EnhancedEventEmitter,vi.debug("constructor()"),this._id=e,this._localId=t,this._producerId=r,this._rtpReceiver=i,this._track=n,this._rtpParameters=s,this._paused=!n.enabled,this._appData=a||{},this.onTrackEnded=this.onTrackEnded.bind(this),this.handleTrack()}get id(){return this._id}get localId(){return this._localId}get producerId(){return this._producerId}get closed(){return this._closed}get kind(){return this._track.kind}get rtpReceiver(){return this._rtpReceiver}get track(){return this._track}get rtpParameters(){return this._rtpParameters}get paused(){return this._paused}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(vi.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(vi.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new gi.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){vi.debug("pause()"),this._closed?vi.error("pause() | Consumer closed"):this._paused?vi.debug("pause() | Consumer is already paused"):(this._paused=!0,this._track.enabled=!1,this.emit("@pause"),this._observer.safeEmit("pause"))}resume(){vi.debug("resume()"),this._closed?vi.error("resume() | Consumer closed"):this._paused?(this._paused=!1,this._track.enabled=!0,this.emit("@resume"),this._observer.safeEmit("resume")):vi.debug("resume() | Consumer is already resumed")}onTrackEnded(){vi.debug('track "ended" event'),this.safeEmit("trackended"),this._observer.safeEmit("trackended")}handleTrack(){this._track.addEventListener("ended",this.onTrackEnded)}destroyTrack(){try{this._track.removeEventListener("ended",this.onTrackEnded),this._track.stop()}catch(e){}}}mi.Consumer=_i;var bi={};Object.defineProperty(bi,"__esModule",{value:!0}),bi.DataProducer=void 0;const yi=dr,wi=mr,Si=new sr.Logger("DataProducer");class Ci extends yi.EnhancedEventEmitter{constructor({id:e,dataChannel:t,sctpStreamParameters:r,appData:i}){super(),this._closed=!1,this._observer=new yi.EnhancedEventEmitter,Si.debug("constructor()"),this._id=e,this._dataChannel=t,this._sctpStreamParameters=r,this._appData=i||{},this.handleDataChannel()}get id(){return this._id}get closed(){return this._closed}get sctpStreamParameters(){return this._sctpStreamParameters}get readyState(){return this._dataChannel.readyState}get label(){return this._dataChannel.label}get protocol(){return this._dataChannel.protocol}get bufferedAmount(){return this._dataChannel.bufferedAmount}get bufferedAmountLowThreshold(){return this._dataChannel.bufferedAmountLowThreshold}set bufferedAmountLowThreshold(e){this._dataChannel.bufferedAmountLowThreshold=e}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(Si.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Si.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}send(e){if(Si.debug("send()"),this._closed)throw new wi.InvalidStateError("closed");this._dataChannel.send(e)}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(Si.debug('DataChannel "open" event'),this.safeEmit("open"))})),this._dataChannel.addEventListener("error",(e=>{if(this._closed)return;let{error:t}=e;t||(t=new Error("unknown DataChannel error")),"sctp-failure"===t.errorDetail?Si.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):Si.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(Si.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(()=>{this._closed||Si.warn('DataChannel "message" event in a DataProducer, message discarded')})),this._dataChannel.addEventListener("bufferedamountlow",(()=>{this._closed||this.safeEmit("bufferedamountlow")}))}}bi.DataProducer=Ci;var Ri={};Object.defineProperty(Ri,"__esModule",{value:!0}),Ri.DataConsumer=void 0;const Ti=dr,Pi=new sr.Logger("DataConsumer");class ki extends Ti.EnhancedEventEmitter{constructor({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:i,appData:n}){super(),this._closed=!1,this._observer=new Ti.EnhancedEventEmitter,Pi.debug("constructor()"),this._id=e,this._dataProducerId=t,this._dataChannel=r,this._sctpStreamParameters=i,this._appData=n||{},this.handleDataChannel()}get id(){return this._id}get dataProducerId(){return this._dataProducerId}get closed(){return this._closed}get sctpStreamParameters(){return this._sctpStreamParameters}get readyState(){return this._dataChannel.readyState}get label(){return this._dataChannel.label}get protocol(){return this._dataChannel.protocol}get binaryType(){return this._dataChannel.binaryType}set binaryType(e){this._dataChannel.binaryType=e}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(Pi.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Pi.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(Pi.debug('DataChannel "open" event'),this.safeEmit("open"))})),this._dataChannel.addEventListener("error",(e=>{if(this._closed)return;let{error:t}=e;t||(t=new Error("unknown DataChannel error")),"sctp-failure"===t.errorDetail?Pi.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):Pi.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(Pi.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(e=>{this._closed||this.safeEmit("message",e.data)}))}}Ri.DataConsumer=ki;var Di=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Oi=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ei=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Di(t,e,r);return Oi(t,e),t},Ii=Ht&&Ht.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Xr,"__esModule",{value:!0}),Xr.Transport=void 0;const xi=ei,ji=Ii(ci),Mi=sr,Li=dr,Ai=mr,Ni=Ei(vr),Bi=Ei(_r),Fi=di,Ui=mi,$i=bi,zi=Ri,Vi=new Mi.Logger("Transport");class qi{constructor(e){this.consumerOptions=e,this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}let Gi=class extends Li.EnhancedEventEmitter{constructor({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:l,handlerFactory:p,extendedRtpCapabilities:u,canProduceByKind:h}){super(),this._closed=!1,this._iceGatheringState="new",this._connectionState="new",this._producers=new Map,this._consumers=new Map,this._dataProducers=new Map,this._dataConsumers=new Map,this._probatorConsumerCreated=!1,this._awaitQueue=new xi.AwaitQueue,this._pendingConsumerTasks=[],this._consumerCreationInProgress=!1,this._pendingPauseConsumers=new Map,this._consumerPauseInProgress=!1,this._pendingResumeConsumers=new Map,this._consumerResumeInProgress=!1,this._pendingCloseConsumers=new Map,this._consumerCloseInProgress=!1,this._observer=new Li.EnhancedEventEmitter,Vi.debug("constructor() [id:%s, direction:%s]",t,e),this._id=t,this._direction=e,this._extendedRtpCapabilities=u,this._canProduceByKind=h,this._maxSctpMessageSize=s?s.maxMessageSize:null,delete(c=Ni.clone(c)||{}).iceServers,delete c.iceTransportPolicy,delete c.bundlePolicy,delete c.rtcpMuxPolicy,delete c.sdpSemantics,this._handler=p(),this._handler.run({direction:e,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,extendedRtpCapabilities:u}),this._appData=l||{},this.handleHandler()}get id(){return this._id}get closed(){return this._closed}get direction(){return this._direction}get handler(){return this._handler}get iceGatheringState(){return this._iceGatheringState}get connectionState(){return this._connectionState}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){if(!this._closed){Vi.debug("close()"),this._closed=!0,this._awaitQueue.stop(),this._handler.close(),this._connectionState="closed";for(const e of this._producers.values())e.transportClosed();this._producers.clear();for(const e of this._consumers.values())e.transportClosed();this._consumers.clear();for(const e of this._dataProducers.values())e.transportClosed();this._dataProducers.clear();for(const e of this._dataConsumers.values())e.transportClosed();this._dataConsumers.clear(),this._observer.safeEmit("close")}}async getStats(){if(this._closed)throw new Ai.InvalidStateError("closed");return this._handler.getTransportStats()}async restartIce({iceParameters:e}){if(Vi.debug("restartIce()"),this._closed)throw new Ai.InvalidStateError("closed");if(!e)throw new TypeError("missing iceParameters");return this._awaitQueue.push((async()=>await this._handler.restartIce(e)),"transport.restartIce()")}async updateIceServers({iceServers:e}={}){if(Vi.debug("updateIceServers()"),this._closed)throw new Ai.InvalidStateError("closed");if(!Array.isArray(e))throw new TypeError("missing iceServers");return this._awaitQueue.push((async()=>this._handler.updateIceServers(e)),"transport.updateIceServers()")}async produce({track:e,encodings:t,codecOptions:r,codec:i,stopTracks:n=!0,disableTrackOnPause:s=!0,zeroRtpOnPause:a=!1,appData:o={}}={}){if(Vi.debug("produce() [track:%o]",e),this._closed)throw new Ai.InvalidStateError("closed");if(!e)throw new TypeError("missing track");if("send"!==this._direction)throw new Ai.UnsupportedError("not a sending Transport");if(!this._canProduceByKind[e.kind])throw new Ai.UnsupportedError(`cannot produce ${e.kind}`);if("ended"===e.readyState)throw new Ai.InvalidStateError("track ended");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(0===this.listenerCount("produce"))throw new TypeError('no "produce" listener set into this transport');if(o&&"object"!=typeof o)throw new TypeError("if given, appData must be an object");return this._awaitQueue.push((async()=>{let c;if(t&&!Array.isArray(t))throw TypeError("encodings must be an array");t&&0===t.length?c=void 0:t&&(c=t.map((e=>{const t={active:!0};return!1===e.active&&(t.active=!1),"boolean"==typeof e.dtx&&(t.dtx=e.dtx),"string"==typeof e.scalabilityMode&&(t.scalabilityMode=e.scalabilityMode),"number"==typeof e.scaleResolutionDownBy&&(t.scaleResolutionDownBy=e.scaleResolutionDownBy),"number"==typeof e.maxBitrate&&(t.maxBitrate=e.maxBitrate),"number"==typeof e.maxFramerate&&(t.maxFramerate=e.maxFramerate),"boolean"==typeof e.adaptivePtime&&(t.adaptivePtime=e.adaptivePtime),"string"==typeof e.priority&&(t.priority=e.priority),"string"==typeof e.networkPriority&&(t.networkPriority=e.networkPriority),t})));const{localId:d,rtpParameters:l,rtpSender:p}=await this._handler.send({track:e,encodings:c,codecOptions:r,codec:i});try{Bi.validateRtpParameters(l);const{id:t}=await new Promise(((t,r)=>{this.safeEmit("produce",{kind:e.kind,rtpParameters:l,appData:o},t,r)})),r=new Fi.Producer({id:t,localId:d,rtpSender:p,track:e,rtpParameters:l,stopTracks:n,disableTrackOnPause:s,zeroRtpOnPause:a,appData:o});return this._producers.set(r.id,r),this.handleProducer(r),this._observer.safeEmit("newproducer",r),r}catch(e){throw this._handler.stopSending(d).catch((()=>{})),e}}),"transport.produce()").catch((t=>{if(n)try{e.stop()}catch(e){}throw t}))}async consume({id:e,producerId:t,kind:r,rtpParameters:i,streamId:n,appData:s={}}){if(Vi.debug("consume()"),i=Ni.clone(i),this._closed)throw new Ai.InvalidStateError("closed");if("recv"!==this._direction)throw new Ai.UnsupportedError("not a receiving Transport");if("string"!=typeof e)throw new TypeError("missing id");if("string"!=typeof t)throw new TypeError("missing producerId");if("audio"!==r&&"video"!==r)throw new TypeError(`invalid kind '${r}'`);if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");if(!Bi.canReceive(i,this._extendedRtpCapabilities))throw new Ai.UnsupportedError("cannot consume this Producer");const a=new qi({id:e,producerId:t,kind:r,rtpParameters:i,streamId:n,appData:s});return this._pendingConsumerTasks.push(a),(0,ji.default)((()=>{this._closed||!1===this._consumerCreationInProgress&&this.createPendingConsumers()})),a.promise}async produceData({ordered:e=!0,maxPacketLifeTime:t,maxRetransmits:r,label:i="",protocol:n="",appData:s={}}={}){if(Vi.debug("produceData()"),this._closed)throw new Ai.InvalidStateError("closed");if("send"!==this._direction)throw new Ai.UnsupportedError("not a sending Transport");if(!this._maxSctpMessageSize)throw new Ai.UnsupportedError("SCTP not enabled by remote Transport");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(0===this.listenerCount("producedata"))throw new TypeError('no "producedata" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");return(t||r)&&(e=!1),this._awaitQueue.push((async()=>{const{dataChannel:a,sctpStreamParameters:o}=await this._handler.sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n});Bi.validateSctpStreamParameters(o);const{id:c}=await new Promise(((e,t)=>{this.safeEmit("producedata",{sctpStreamParameters:o,label:i,protocol:n,appData:s},e,t)})),d=new $i.DataProducer({id:c,dataChannel:a,sctpStreamParameters:o,appData:s});return this._dataProducers.set(d.id,d),this.handleDataProducer(d),this._observer.safeEmit("newdataproducer",d),d}),"transport.produceData()")}async consumeData({id:e,dataProducerId:t,sctpStreamParameters:r,label:i="",protocol:n="",appData:s={}}){if(Vi.debug("consumeData()"),r=Ni.clone(r),this._closed)throw new Ai.InvalidStateError("closed");if("recv"!==this._direction)throw new Ai.UnsupportedError("not a receiving Transport");if(!this._maxSctpMessageSize)throw new Ai.UnsupportedError("SCTP not enabled by remote Transport");if("string"!=typeof e)throw new TypeError("missing id");if("string"!=typeof t)throw new TypeError("missing dataProducerId");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");return Bi.validateSctpStreamParameters(r),this._awaitQueue.push((async()=>{const{dataChannel:a}=await this._handler.receiveDataChannel({sctpStreamParameters:r,label:i,protocol:n}),o=new zi.DataConsumer({id:e,dataProducerId:t,dataChannel:a,sctpStreamParameters:r,appData:s});return this._dataConsumers.set(o.id,o),this.handleDataConsumer(o),this._observer.safeEmit("newdataconsumer",o),o}),"transport.consumeData()")}async createPendingConsumers(){this._consumerCreationInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingConsumerTasks.length)return void Vi.debug("createPendingConsumers() | there is no Consumer to be created");const e=[...this._pendingConsumerTasks];let t;this._pendingConsumerTasks=[];const r=[];for(const t of e){const{id:e,kind:i,rtpParameters:n,streamId:s}=t.consumerOptions;r.push({trackId:e,kind:i,rtpParameters:n,streamId:s})}try{const i=await this._handler.receive(r);for(let r=0;r<i.length;++r){const n=e[r],s=i[r],{id:a,producerId:o,kind:c,rtpParameters:d,appData:l}=n.consumerOptions,{localId:p,rtpReceiver:u,track:h}=s,m=new Ui.Consumer({id:a,localId:p,producerId:o,rtpReceiver:u,track:h,rtpParameters:d,appData:l});this._consumers.set(m.id,m),this.handleConsumer(m),this._probatorConsumerCreated||t||"video"!==c||(t=m),this._observer.safeEmit("newconsumer",m),n.resolve(m)}}catch(t){for(const r of e)r.reject(t)}if(t)try{const e=Bi.generateProbatorRtpParameters(t.rtpParameters);await this._handler.receive([{trackId:"probator",kind:"video",rtpParameters:e}]),Vi.debug("createPendingConsumers() | Consumer for RTP probation created"),this._probatorConsumerCreated=!0}catch(e){Vi.error("createPendingConsumers() | failed to create Consumer for RTP probation:%o",e)}}),"transport.createPendingConsumers()").then((()=>{this._consumerCreationInProgress=!1,this._pendingConsumerTasks.length>0&&this.createPendingConsumers()})).catch((()=>{}))}pausePendingConsumers(){this._consumerPauseInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingPauseConsumers.size)return void Vi.debug("pausePendingConsumers() | there is no Consumer to be paused");const e=Array.from(this._pendingPauseConsumers.values());this._pendingPauseConsumers.clear();try{const t=e.map((e=>e.localId));await this._handler.pauseReceiving(t)}catch(e){Vi.error("pausePendingConsumers() | failed to pause Consumers:",e)}}),"transport.pausePendingConsumers").then((()=>{this._consumerPauseInProgress=!1,this._pendingPauseConsumers.size>0&&this.pausePendingConsumers()})).catch((()=>{}))}resumePendingConsumers(){this._consumerResumeInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingResumeConsumers.size)return void Vi.debug("resumePendingConsumers() | there is no Consumer to be resumed");const e=Array.from(this._pendingResumeConsumers.values());this._pendingResumeConsumers.clear();try{const t=e.map((e=>e.localId));await this._handler.resumeReceiving(t)}catch(e){Vi.error("resumePendingConsumers() | failed to resume Consumers:",e)}}),"transport.resumePendingConsumers").then((()=>{this._consumerResumeInProgress=!1,this._pendingResumeConsumers.size>0&&this.resumePendingConsumers()})).catch((()=>{}))}closePendingConsumers(){this._consumerCloseInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingCloseConsumers.size)return void Vi.debug("closePendingConsumers() | there is no Consumer to be closed");const e=Array.from(this._pendingCloseConsumers.values());this._pendingCloseConsumers.clear();try{await this._handler.stopReceiving(e.map((e=>e.localId)))}catch(e){Vi.error("closePendingConsumers() | failed to close Consumers:",e)}}),"transport.closePendingConsumers").then((()=>{this._consumerCloseInProgress=!1,this._pendingCloseConsumers.size>0&&this.closePendingConsumers()})).catch((()=>{}))}handleHandler(){const e=this._handler;e.on("@connect",(({iceParameters:e,dtlsParameters:t},r,i)=>{this._closed?i(new Ai.InvalidStateError("closed")):this.safeEmit("connect",{iceParameters:e,dtlsParameters:t},r,i)})),e.on("@icegatheringstatechange",(e=>{e!==this._iceGatheringState&&(Vi.debug("ICE gathering state changed to %s",e),this._iceGatheringState=e,this._closed||this.safeEmit("icegatheringstatechange",e))})),e.on("@connectionstatechange",(e=>{e!==this._connectionState&&(Vi.debug("connection state changed to %s",e),this._connectionState=e,this._closed||this.safeEmit("connectionstatechange",e))}))}handleProducer(e){e.on("@close",(()=>{this._producers.delete(e.id),this._closed||this._awaitQueue.push((async()=>await this._handler.stopSending(e.localId)),"producer @close event").catch((e=>Vi.warn("producer.close() failed:%o",e)))})),e.on("@pause",((t,r)=>{this._awaitQueue.push((async()=>await this._handler.pauseSending(e.localId)),"producer @pause event").then(t).catch(r)})),e.on("@resume",((t,r)=>{this._awaitQueue.push((async()=>await this._handler.resumeSending(e.localId)),"producer @resume event").then(t).catch(r)})),e.on("@replacetrack",((t,r,i)=>{this._awaitQueue.push((async()=>await this._handler.replaceTrack(e.localId,t)),"producer @replacetrack event").then(r).catch(i)})),e.on("@setmaxspatiallayer",((t,r,i)=>{this._awaitQueue.push((async()=>await this._handler.setMaxSpatialLayer(e.localId,t)),"producer @setmaxspatiallayer event").then(r).catch(i)})),e.on("@setrtpencodingparameters",((t,r,i)=>{this._awaitQueue.push((async()=>await this._handler.setRtpEncodingParameters(e.localId,t)),"producer @setrtpencodingparameters event").then(r).catch(i)})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new Ai.InvalidStateError("closed"));this._handler.getSenderStats(e.localId).then(t).catch(r)}))}handleConsumer(e){e.on("@close",(()=>{this._consumers.delete(e.id),this._pendingPauseConsumers.delete(e.id),this._pendingResumeConsumers.delete(e.id),this._closed||(this._pendingCloseConsumers.set(e.id,e),!1===this._consumerCloseInProgress&&this.closePendingConsumers())})),e.on("@pause",(()=>{this._pendingResumeConsumers.has(e.id)&&this._pendingResumeConsumers.delete(e.id),this._pendingPauseConsumers.set(e.id,e),(0,ji.default)((()=>{this._closed||!1===this._consumerPauseInProgress&&this.pausePendingConsumers()}))})),e.on("@resume",(()=>{this._pendingPauseConsumers.has(e.id)&&this._pendingPauseConsumers.delete(e.id),this._pendingResumeConsumers.set(e.id,e),(0,ji.default)((()=>{this._closed||!1===this._consumerResumeInProgress&&this.resumePendingConsumers()}))})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new Ai.InvalidStateError("closed"));this._handler.getReceiverStats(e.localId).then(t).catch(r)}))}handleDataProducer(e){e.on("@close",(()=>{this._dataProducers.delete(e.id)}))}handleDataConsumer(e){e.on("@close",(()=>{this._dataConsumers.delete(e.id)}))}};Xr.Transport=Gi;var Hi={},Wi={},Ki={},Ji={exports:{}},Qi=Ji.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(e){return e.encoding?"rtpmap:%d %s/%s/%s":e.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(e){return null!=e.address?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(e){return null!=e.subtype?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(e){return"extmap:%d"+(e.direction?"/%s":"%v")+(e["encrypt-uri"]?" %s":"%v")+" %s"+(e.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(e){return null!=e.sessionConfig?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(e){var t="candidate:%s %d %s %d %s %d typ %s";return t+=null!=e.raddr?" raddr %s rport %d":"%v%v",t+=null!=e.tcptype?" tcptype %s":"%v",null!=e.generation&&(t+=" generation %d"),t+=null!=e["network-id"]?" network-id %d":"%v",t+=null!=e["network-cost"]?" network-cost %d":"%v"}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(e){var t="ssrc:%d";return null!=e.attribute&&(t+=" %s",null!=e.value&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(e){return null!=e.maxMessageSize?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(e){return e.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(e){return"imageattr:%s %s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(e){return"simulcast:%s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(e){return"ts-refclk:%s"+(null!=e.clksrcExt?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(e){var t="mediaclk:";return t+=null!=e.id?"id=%s %s":"%v%s",t+=null!=e.mediaClockValue?"=%s":"",t+=null!=e.rateNumerator?" rate=%s":"",t+=null!=e.rateDenominator?"/%s":""}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(Qi).forEach((function(e){Qi[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))}));var Zi=Ji.exports;!function(e){var t=function(e){return String(Number(e))===e?Number(e):e},r=function(e,r,i){var n=e.name&&e.names;e.push&&!r[e.push]?r[e.push]=[]:n&&!r[e.name]&&(r[e.name]={});var s=e.push?{}:n?r[e.name]:r;!function(e,r,i,n){if(n&&!i)r[n]=t(e[1]);else for(var s=0;s<i.length;s+=1)null!=e[s+1]&&(r[i[s]]=t(e[s+1]))}(i.match(e.reg),s,e.names,e.name),e.push&&r[e.push].push(s)},i=Zi,n=RegExp.prototype.test.bind(/^([a-z])=(.*)/);e.parse=function(e){var t={},s=[],a=t;return e.split(/(\r\n|\r|\n)/).filter(n).forEach((function(e){var t=e[0],n=e.slice(2);"m"===t&&(s.push({rtp:[],fmtp:[]}),a=s[s.length-1]);for(var o=0;o<(i[t]||[]).length;o+=1){var c=i[t][o];if(c.reg.test(n))return r(c,a,n)}})),t.media=s,t};var s=function(e,r){var i=r.split(/=(.+)/,2);return 2===i.length?e[i[0]]=t(i[1]):1===i.length&&r.length>1&&(e[i[0]]=void 0),e};e.parseParams=function(e){return e.split(/;\s?/).reduce(s,{})},e.parseFmtpConfig=e.parseParams,e.parsePayloads=function(e){return e.toString().split(" ").map(Number)},e.parseRemoteCandidates=function(e){for(var r=[],i=e.split(" ").map(t),n=0;n<i.length;n+=3)r.push({component:i[n],ip:i[n+1],port:i[n+2]});return r},e.parseImageAttributes=function(e){return e.split(" ").map((function(e){return e.substring(1,e.length-1).split(",").reduce(s,{})}))},e.parseSimulcastStreamList=function(e){return e.split(";").map((function(e){return e.split(",").map((function(e){var r,i=!1;return"~"!==e[0]?r=t(e):(r=t(e.substring(1,e.length)),i=!0),{scid:r,paused:i}}))}))}}(Ki);var Yi=Zi,Xi=/%[sdv%]/g,en=function(e){var t=1,r=arguments,i=r.length;return e.replace(Xi,(function(e){if(t>=i)return e;var n=r[t];switch(t+=1,e){case"%%":return"%";case"%s":return String(n);case"%d":return Number(n);case"%v":return""}}))},tn=function(e,t,r){var i=[e+"="+(t.format instanceof Function?t.format(t.push?r:r[t.name]):t.format)];if(t.names)for(var n=0;n<t.names.length;n+=1){var s=t.names[n];t.name?i.push(r[t.name][s]):i.push(r[t.names[n]])}else i.push(r[t.name]);return en.apply(null,i)},rn=["v","o","s","i","u","e","p","c","b","t","r","z","a"],nn=["i","c","b","a"],sn=Ki,an=function(e,t){t=t||{},null==e.version&&(e.version=0),null==e.name&&(e.name=" "),e.media.forEach((function(e){null==e.payloads&&(e.payloads="")}));var r=t.outerOrder||rn,i=t.innerOrder||nn,n=[];return r.forEach((function(t){Yi[t].forEach((function(r){r.name in e&&null!=e[r.name]?n.push(tn(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){n.push(tn(t,r,e))}))}))})),e.media.forEach((function(e){n.push(tn("m",Yi.m[0],e)),i.forEach((function(t){Yi[t].forEach((function(r){r.name in e&&null!=e[r.name]?n.push(tn(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){n.push(tn(t,r,e))}))}))}))})),n.join("\r\n")+"\r\n"},on=Wi.write=an,cn=Wi.parse=sn.parse;Wi.parseParams=sn.parseParams,Wi.parseFmtpConfig=sn.parseFmtpConfig,Wi.parsePayloads=sn.parsePayloads,Wi.parseRemoteCandidates=sn.parseRemoteCandidates,Wi.parseImageAttributes=sn.parseImageAttributes,Wi.parseSimulcastStreamList=sn.parseSimulcastStreamList;var dn={},ln=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),pn=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),un=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ln(t,e,r);return pn(t,e),t};Object.defineProperty(dn,"__esModule",{value:!0}),dn.applyCodecParameters=dn.getCname=dn.extractDtlsParameters=dn.extractIceParameters=dn.extractRtpCapabilities=void 0;const hn=un(Wi);dn.extractRtpCapabilities=function({sdpObject:e}){const t=new Map,r=[];let i=!1,n=!1;for(const s of e.media){const e=s.type;switch(e){case"audio":if(i)continue;i=!0;break;case"video":if(n)continue;n=!0;break;default:continue}for(const r of s.rtp){const i={kind:e,mimeType:`${e}/${r.codec}`,preferredPayloadType:r.payload,clockRate:r.rate,channels:r.encoding,parameters:{},rtcpFeedback:[]};t.set(i.preferredPayloadType,i)}for(const e of s.fmtp||[]){const r=hn.parseParams(e.config),i=t.get(e.payload);i&&(r&&r.hasOwnProperty("profile-level-id")&&(r["profile-level-id"]=String(r["profile-level-id"])),i.parameters=r)}for(const r of s.rtcpFb||[]){const i={type:r.type,parameter:r.subtype};if(i.parameter||delete i.parameter,"*"!==r.payload){const e=t.get(r.payload);if(!e)continue;e.rtcpFeedback.push(i)}else for(const r of t.values())r.kind!==e||/.+\/rtx$/i.test(r.mimeType)||r.rtcpFeedback.push(i)}for(const t of s.ext||[]){if(t["encrypt-uri"])continue;const i={kind:e,uri:t.uri,preferredId:t.value};r.push(i)}}return{codecs:Array.from(t.values()),headerExtensions:r}},dn.extractIceParameters=function({sdpObject:e}){let t=e.iceUfrag,r=e.icePwd;if(!t||!r){const i=(e.media||[]).find((e=>0!==e.port));i&&(t??(t=i.iceUfrag),r??(r=i.icePwd))}if(!t)throw new Error("no a=iceUfrag found at SDP session or media level");if(!r)throw new Error("no a=icePwd found at SDP session or media level");return{usernameFragment:t,password:r}},dn.extractDtlsParameters=function({sdpObject:e}){let t,r=e.setup,i=e.fingerprint;if(!r||!i){const t=(e.media||[]).find((e=>0!==e.port));t&&(r??(r=t.setup),i??(i=t.fingerprint))}if(!r)throw new Error("no a=setup found at SDP session or media level");if(!i)throw new Error("no a=fingerprint found at SDP session or media level");switch(r){case"active":t="client";break;case"passive":t="server";break;case"actpass":t="auto"}return{role:t,fingerprints:[{algorithm:i.type,value:i.hash}]}},dn.getCname=function({offerMediaObject:e}){const t=(e.ssrcs||[]).find((e=>"cname"===e.attribute));return t?t.value:""},dn.applyCodecParameters=function({offerRtpParameters:e,answerMediaObject:t}){for(const r of e.codecs){const e=r.mimeType.toLowerCase();if("audio/opus"!==e)continue;if(!(t.rtp||[]).find((e=>e.payload===r.payloadType)))continue;t.fmtp=t.fmtp||[];let i=t.fmtp.find((e=>e.payload===r.payloadType));i||(i={payload:r.payloadType,config:""},t.fmtp.push(i));const n=hn.parseParams(i.config);switch(e){case"audio/opus":{const e=r.parameters["sprop-stereo"];void 0!==e&&(n.stereo=e?1:0);break}}i.config="";for(const e of Object.keys(n))i.config&&(i.config+=";"),i.config+=`${e}=${n[e]}`}};var mn={};Object.defineProperty(mn,"__esModule",{value:!0}),mn.addLegacySimulcast=mn.getRtpEncodings=void 0,mn.getRtpEncodings=function({offerMediaObject:e}){const t=new Set;for(const r of e.ssrcs||[]){const e=r.id;t.add(e)}if(0===t.size)throw new Error("no a=ssrc lines found");const r=new Map;for(const i of e.ssrcGroups||[]){if("FID"!==i.semantics)continue;let[e,n]=i.ssrcs.split(/\s+/);e=Number(e),n=Number(n),t.has(e)&&(t.delete(e),t.delete(n),r.set(e,n))}for(const e of t)r.set(e,null);const i=[];for(const[e,t]of r){const r={ssrc:e};t&&(r.rtx={ssrc:t}),i.push(r)}return i},mn.addLegacySimulcast=function({offerMediaObject:e,numStreams:t}){if(t<=1)throw new TypeError("numStreams must be greater than 1");const r=(e.ssrcs||[]).find((e=>"msid"===e.attribute));if(!r)throw new Error("a=ssrc line with msid information not found");const[i,n]=r.value.split(" "),s=r.id;let a;(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===s&&(a=Number(t[1]),!0)}));const o=e.ssrcs.find((e=>"cname"===e.attribute));if(!o)throw new Error("a=ssrc line with cname information not found");const c=o.value,d=[],l=[];for(let e=0;e<t;++e)d.push(s+e),a&&l.push(a+e);e.ssrcGroups=[],e.ssrcs=[],e.ssrcGroups.push({semantics:"SIM",ssrcs:d.join(" ")});for(let t=0;t<d.length;++t){const r=d[t];e.ssrcs.push({id:r,attribute:"cname",value:c}),e.ssrcs.push({id:r,attribute:"msid",value:`${i} ${n}`})}for(let t=0;t<l.length;++t){const r=d[t],s=l[t];e.ssrcs.push({id:s,attribute:"cname",value:c}),e.ssrcs.push({id:s,attribute:"msid",value:`${i} ${n}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${r} ${s}`})}};var fn={};Object.defineProperty(fn,"__esModule",{value:!0}),fn.addNackSuppportForOpus=void 0,fn.addNackSuppportForOpus=function(e){for(const t of e.codecs||[])"audio/opus"!==t.mimeType.toLowerCase()&&"audio/multiopus"!==t.mimeType.toLowerCase()||t.rtcpFeedback?.some((e=>"nack"===e.type&&!e.parameter))||(t.rtcpFeedback||(t.rtcpFeedback=[]),t.rtcpFeedback.push({type:"nack"}))};var gn={};Object.defineProperty(gn,"__esModule",{value:!0}),gn.HandlerInterface=void 0;const vn=dr;class _n extends vn.EnhancedEventEmitter{constructor(){super()}}gn.HandlerInterface=_n;var bn={},yn={},wn=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Sn=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Cn=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&wn(t,e,r);return Sn(t,e),t};Object.defineProperty(yn,"__esModule",{value:!0}),yn.OfferMediaSection=yn.AnswerMediaSection=yn.MediaSection=void 0;const Rn=Cn(Wi),Tn=Cn(vr);class Pn{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:i=!1}){if(this._mediaObject={},this._planB=i,e&&this.setIceParameters(e),t){this._mediaObject.candidates=[];for(const e of t){const t={component:1};t.foundation=e.foundation,t.ip=e.address??e.ip,t.port=e.port,t.priority=e.priority,t.transport=e.protocol,t.type=e.type,e.tcpType&&(t.tcptype=e.tcpType),this._mediaObject.candidates.push(t)}this._mediaObject.endOfCandidates="end-of-candidates",this._mediaObject.iceOptions="renomination"}r&&this.setDtlsRole(r.role)}get mid(){return String(this._mediaObject.mid)}get closed(){return 0===this._mediaObject.port}getObject(){return this._mediaObject}setIceParameters(e){this._mediaObject.iceUfrag=e.usernameFragment,this._mediaObject.icePwd=e.password}pause(){this._mediaObject.direction="inactive"}disable(){this.pause(),delete this._mediaObject.ext,delete this._mediaObject.ssrcs,delete this._mediaObject.ssrcGroups,delete this._mediaObject.simulcast,delete this._mediaObject.simulcast_03,delete this._mediaObject.rids,delete this._mediaObject.extmapAllowMixed}close(){this.disable(),this._mediaObject.port=0}}yn.MediaSection=Pn;yn.AnswerMediaSection=class extends Pn{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1,offerMediaObject:a,offerRtpParameters:o,answerRtpParameters:c,codecOptions:d,extmapAllowMixed:l=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:s}),this._mediaObject.mid=String(a.mid),this._mediaObject.type=a.type,this._mediaObject.protocol=a.protocol,n?(this._mediaObject.connection={ip:n.ip,version:n.ipVersion},this._mediaObject.port=n.port):(this._mediaObject.connection={ip:"127.0.0.1",version:4},this._mediaObject.port=7),a.type){case"audio":case"video":this._mediaObject.direction="recvonly",this._mediaObject.rtp=[],this._mediaObject.rtcpFb=[],this._mediaObject.fmtp=[];for(const e of c.codecs){const t={payload:e.payloadType,codec:kn(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r=Tn.clone(e.parameters)??{};let i=Tn.clone(e.rtcpFeedback)??[];if(d){const{opusStereo:t,opusFec:n,opusDtx:s,opusMaxPlaybackRate:a,opusMaxAverageBitrate:c,opusPtime:l,opusNack:p,videoGoogleStartBitrate:u,videoGoogleMaxBitrate:h,videoGoogleMinBitrate:m}=d,f=o.codecs.find((t=>t.payloadType===e.payloadType));switch(e.mimeType.toLowerCase()){case"audio/opus":case"audio/multiopus":void 0!==t&&(f.parameters["sprop-stereo"]=t?1:0,r.stereo=t?1:0),void 0!==n&&(f.parameters.useinbandfec=n?1:0,r.useinbandfec=n?1:0),void 0!==s&&(f.parameters.usedtx=s?1:0,r.usedtx=s?1:0),void 0!==a&&(r.maxplaybackrate=a),void 0!==c&&(r.maxaveragebitrate=c),void 0!==l&&(f.parameters.ptime=l,r.ptime=l),p||(f.rtcpFeedback=f.rtcpFeedback.filter((e=>"nack"!==e.type||e.parameter)),i=i.filter((e=>"nack"!==e.type||e.parameter)));break;case"video/vp8":case"video/vp9":case"video/h264":case"video/h265":void 0!==u&&(r["x-google-start-bitrate"]=u),void 0!==h&&(r["x-google-max-bitrate"]=h),void 0!==m&&(r["x-google-min-bitrate"]=m)}}const n={payload:e.payloadType,config:""};for(const e of Object.keys(r))n.config&&(n.config+=";"),n.config+=`${e}=${r[e]}`;n.config&&this._mediaObject.fmtp.push(n);for(const t of i)this._mediaObject.rtcpFb.push({payload:e.payloadType,type:t.type,subtype:t.parameter})}this._mediaObject.payloads=c.codecs.map((e=>e.payloadType)).join(" "),this._mediaObject.ext=[];for(const e of c.headerExtensions){(a.ext||[]).some((t=>t.uri===e.uri))&&this._mediaObject.ext.push({uri:e.uri,value:e.id})}if(l&&"extmap-allow-mixed"===a.extmapAllowMixed&&(this._mediaObject.extmapAllowMixed="extmap-allow-mixed"),a.simulcast){this._mediaObject.simulcast={dir1:"recv",list1:a.simulcast.list1},this._mediaObject.rids=[];for(const e of a.rids||[])"send"===e.direction&&this._mediaObject.rids.push({id:e.id,direction:"recv"})}else if(a.simulcast_03){this._mediaObject.simulcast_03={value:a.simulcast_03.value.replace(/send/g,"recv")},this._mediaObject.rids=[];for(const e of a.rids||[])"send"===e.direction&&this._mediaObject.rids.push({id:e.id,direction:"recv"})}this._mediaObject.rtcpMux="rtcp-mux",this._mediaObject.rtcpRsize="rtcp-rsize",this._planB&&"video"===this._mediaObject.type&&(this._mediaObject.xGoogleFlag="conference");break;case"application":"number"==typeof a.sctpPort?(this._mediaObject.payloads="webrtc-datachannel",this._mediaObject.sctpPort=i.port,this._mediaObject.maxMessageSize=i.maxMessageSize):a.sctpmap&&(this._mediaObject.payloads=i.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:i.port,maxMessageSize:i.maxMessageSize})}}setDtlsRole(e){switch(e){case"client":this._mediaObject.setup="active";break;case"server":this._mediaObject.setup="passive";break;case"auto":this._mediaObject.setup="actpass"}}resume(){this._mediaObject.direction="recvonly"}muxSimulcastStreams(e){if(!this._mediaObject.simulcast||!this._mediaObject.simulcast.list1)return;const t={};for(const r of e)r.rid&&(t[r.rid]=r);const r=this._mediaObject.simulcast.list1,i=Rn.parseSimulcastStreamList(r);for(const e of i)for(const r of e)r.paused=!t[r.scid]?.active;this._mediaObject.simulcast.list1=i.map((e=>e.map((e=>`${e.paused?"~":""}${e.scid}`)).join(","))).join(";")}};function kn(e){const t=new RegExp("^(audio|video)/(.+)","i").exec(e.mimeType);if(!t)throw new TypeError("invalid codec.mimeType");return t[2]}yn.OfferMediaSection=class extends Pn{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1,mid:a,kind:o,offerRtpParameters:c,streamId:d,trackId:l,oldDataChannelSpec:p=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:s}),this._mediaObject.mid=String(a),this._mediaObject.type=o,n?(this._mediaObject.connection={ip:n.ip,version:n.ipVersion},this._mediaObject.protocol="RTP/AVP",this._mediaObject.port=n.port):(this._mediaObject.connection={ip:"127.0.0.1",version:4},this._mediaObject.protocol=i?"UDP/DTLS/SCTP":"UDP/TLS/RTP/SAVPF",this._mediaObject.port=7),o){case"audio":case"video":{this._mediaObject.direction="sendonly",this._mediaObject.rtp=[],this._mediaObject.rtcpFb=[],this._mediaObject.fmtp=[],this._planB||(this._mediaObject.msid=`${d||"-"} ${l}`);for(const e of c.codecs){const t={payload:e.payloadType,codec:kn(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r={payload:e.payloadType,config:""};for(const t of Object.keys(e.parameters))r.config&&(r.config+=";"),r.config+=`${t}=${e.parameters[t]}`;r.config&&this._mediaObject.fmtp.push(r);for(const t of e.rtcpFeedback)this._mediaObject.rtcpFb.push({payload:e.payloadType,type:t.type,subtype:t.parameter})}this._mediaObject.payloads=c.codecs.map((e=>e.payloadType)).join(" "),this._mediaObject.ext=[];for(const e of c.headerExtensions)this._mediaObject.ext.push({uri:e.uri,value:e.id});this._mediaObject.rtcpMux="rtcp-mux",this._mediaObject.rtcpRsize="rtcp-rsize";const e=c.encodings[0],t=e.ssrc,r=e.rtx&&e.rtx.ssrc?e.rtx.ssrc:void 0;this._mediaObject.ssrcs=[],this._mediaObject.ssrcGroups=[],c.rtcp.cname&&this._mediaObject.ssrcs.push({id:t,attribute:"cname",value:c.rtcp.cname}),this._planB&&this._mediaObject.ssrcs.push({id:t,attribute:"msid",value:`${d||"-"} ${l}`}),r&&(c.rtcp.cname&&this._mediaObject.ssrcs.push({id:r,attribute:"cname",value:c.rtcp.cname}),this._planB&&this._mediaObject.ssrcs.push({id:r,attribute:"msid",value:`${d||"-"} ${l}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${t} ${r}`}));break}case"application":p?(this._mediaObject.payloads=i.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:i.port,maxMessageSize:i.maxMessageSize}):(this._mediaObject.payloads="webrtc-datachannel",this._mediaObject.sctpPort=i.port,this._mediaObject.maxMessageSize=i.maxMessageSize)}}setDtlsRole(e){this._mediaObject.setup="actpass"}resume(){this._mediaObject.direction="sendonly"}planBReceive({offerRtpParameters:e,streamId:t,trackId:r}){const i=e.encodings[0],n=i.ssrc,s=i.rtx&&i.rtx.ssrc?i.rtx.ssrc:void 0,a=this._mediaObject.payloads.split(" ");for(const t of e.codecs){if(a.includes(String(t.payloadType)))continue;const e={payload:t.payloadType,codec:kn(t),rate:t.clockRate};t.channels>1&&(e.encoding=t.channels),this._mediaObject.rtp.push(e);const r={payload:t.payloadType,config:""};for(const e of Object.keys(t.parameters))r.config&&(r.config+=";"),r.config+=`${e}=${t.parameters[e]}`;r.config&&this._mediaObject.fmtp.push(r);for(const e of t.rtcpFeedback)this._mediaObject.rtcpFb.push({payload:t.payloadType,type:e.type,subtype:e.parameter})}this._mediaObject.payloads+=` ${e.codecs.filter((e=>!this._mediaObject.payloads.includes(e.payloadType))).map((e=>e.payloadType)).join(" ")}`,this._mediaObject.payloads=this._mediaObject.payloads.trim(),e.rtcp.cname&&this._mediaObject.ssrcs.push({id:n,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:n,attribute:"msid",value:`${t||"-"} ${r}`}),s&&(e.rtcp.cname&&this._mediaObject.ssrcs.push({id:s,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:s,attribute:"msid",value:`${t||"-"} ${r}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${n} ${s}`}))}planBStopReceiving({offerRtpParameters:e}){const t=e.encodings[0],r=t.ssrc,i=t.rtx&&t.rtx.ssrc?t.rtx.ssrc:void 0;this._mediaObject.ssrcs=this._mediaObject.ssrcs.filter((e=>e.id!==r&&e.id!==i)),i&&(this._mediaObject.ssrcGroups=this._mediaObject.ssrcGroups.filter((e=>e.ssrcs!==`${r} ${i}`)))}};var Dn=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),On=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),En=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Dn(t,e,r);return On(t,e),t};Object.defineProperty(bn,"__esModule",{value:!0}),bn.RemoteSdp=void 0;const In=En(Wi),xn=yn,jn=new sr.Logger("RemoteSdp");bn.RemoteSdp=class{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1}){if(this._mediaSections=[],this._midToIndex=new Map,this._iceParameters=e,this._iceCandidates=t,this._dtlsParameters=r,this._sctpParameters=i,this._plainRtpParameters=n,this._planB=s,this._sdpObject={version:0,origin:{address:"0.0.0.0",ipVer:4,netType:"IN",sessionId:1e4,sessionVersion:0,username:"mediasoup-client"},name:"-",timing:{start:0,stop:0},media:[]},e&&e.iceLite&&(this._sdpObject.icelite="ice-lite"),r){this._sdpObject.msidSemantic={semantic:"WMS",token:"*"};const e=this._dtlsParameters.fingerprints.length;this._sdpObject.fingerprint={type:r.fingerprints[e-1].algorithm,hash:r.fingerprints[e-1].value},this._sdpObject.groups=[{type:"BUNDLE",mids:""}]}n&&(this._sdpObject.origin.address=n.ip,this._sdpObject.origin.ipVer=n.ipVersion)}updateIceParameters(e){jn.debug("updateIceParameters() [iceParameters:%o]",e),this._iceParameters=e,this._sdpObject.icelite=e.iceLite?"ice-lite":void 0;for(const t of this._mediaSections)t.setIceParameters(e)}updateDtlsRole(e){jn.debug("updateDtlsRole() [role:%s]",e),this._dtlsParameters.role=e;for(const t of this._mediaSections)t.setDtlsRole(e)}getNextMediaSectionIdx(){for(let e=0;e<this._mediaSections.length;++e){const t=this._mediaSections[e];if(t.closed)return{idx:e,reuseMid:t.mid}}return{idx:this._mediaSections.length}}send({offerMediaObject:e,reuseMid:t,offerRtpParameters:r,answerRtpParameters:i,codecOptions:n,extmapAllowMixed:s=!1}){const a=new xn.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,offerMediaObject:e,offerRtpParameters:r,answerRtpParameters:i,codecOptions:n,extmapAllowMixed:s});t?this._replaceMediaSection(a,t):this._midToIndex.has(a.mid)?this._replaceMediaSection(a):this._addMediaSection(a)}receive({mid:e,kind:t,offerRtpParameters:r,streamId:i,trackId:n}){const s=this._midToIndex.get(e);let a;if(void 0!==s&&(a=this._mediaSections[s]),a)a.planBReceive({offerRtpParameters:r,streamId:i,trackId:n}),this._replaceMediaSection(a);else{a=new xn.OfferMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,mid:e,kind:t,offerRtpParameters:r,streamId:i,trackId:n});const s=this._mediaSections.find((e=>e.closed));s?this._replaceMediaSection(a,s.mid):this._addMediaSection(a)}}pauseMediaSection(e){this._findMediaSection(e).pause()}resumeSendingMediaSection(e){this._findMediaSection(e).resume()}resumeReceivingMediaSection(e){this._findMediaSection(e).resume()}disableMediaSection(e){this._findMediaSection(e).disable()}closeMediaSection(e){const t=this._findMediaSection(e);return e===this._firstMid?(jn.debug("closeMediaSection() | cannot close first media section, disabling it instead [mid:%s]",e),this.disableMediaSection(e),!1):(t.close(),this._regenerateBundleMids(),!0)}muxMediaSectionSimulcast(e,t){const r=this._findMediaSection(e);r.muxSimulcastStreams(t),this._replaceMediaSection(r)}planBStopReceiving({mid:e,offerRtpParameters:t}){const r=this._findMediaSection(e);r.planBStopReceiving({offerRtpParameters:t}),this._replaceMediaSection(r)}sendSctpAssociation({offerMediaObject:e}){const t=new xn.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,sctpParameters:this._sctpParameters,plainRtpParameters:this._plainRtpParameters,offerMediaObject:e});this._addMediaSection(t)}receiveSctpAssociation({oldDataChannelSpec:e=!1}={}){const t=new xn.OfferMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,sctpParameters:this._sctpParameters,plainRtpParameters:this._plainRtpParameters,mid:"datachannel",kind:"application",oldDataChannelSpec:e});this._addMediaSection(t)}getSdp(){return this._sdpObject.origin.sessionVersion++,In.write(this._sdpObject)}_addMediaSection(e){this._firstMid||(this._firstMid=e.mid),this._mediaSections.push(e),this._midToIndex.set(e.mid,this._mediaSections.length-1),this._sdpObject.media.push(e.getObject()),this._regenerateBundleMids()}_replaceMediaSection(e,t){if("string"==typeof t){const r=this._midToIndex.get(t);if(void 0===r)throw new Error(`no media section found for reuseMid '${t}'`);const i=this._mediaSections[r];this._mediaSections[r]=e,this._midToIndex.delete(i.mid),this._midToIndex.set(e.mid,r),this._sdpObject.media[r]=e.getObject(),this._regenerateBundleMids()}else{const t=this._midToIndex.get(e.mid);if(void 0===t)throw new Error(`no media section found with mid '${e.mid}'`);this._mediaSections[t]=e,this._sdpObject.media[t]=e.getObject()}}_findMediaSection(e){const t=this._midToIndex.get(e);if(void 0===t)throw new Error(`no media section found with mid '${e}'`);return this._mediaSections[t]}_regenerateBundleMids(){this._dtlsParameters&&(this._sdpObject.groups[0].mids=this._mediaSections.filter((e=>!e.closed)).map((e=>e.mid)).join(" "))}};var Mn={};Object.defineProperty(Mn,"__esModule",{value:!0}),Mn.parse=void 0;const Ln=new RegExp("^[LS]([1-9]\\d{0,1})T([1-9]\\d{0,1})");Mn.parse=function(e){const t=Ln.exec(e||"");return t?{spatialLayers:Number(t[1]),temporalLayers:Number(t[2])}:{spatialLayers:1,temporalLayers:1}};var An=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Nn=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Bn=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&An(t,e,r);return Nn(t,e),t};Object.defineProperty(Hi,"__esModule",{value:!0});var Fn=Hi.Chrome111=void 0;const Un=Bn(Wi),$n=sr,zn=Bn(vr),Vn=Bn(_r),qn=Bn(dn),Gn=Bn(mn),Hn=Bn(fn),Wn=mr,Kn=gn,Jn=bn,Qn=Mn,Zn=new $n.Logger("Chrome111"),Yn={OS:1024,MIS:1024};class Xn extends Kn.HandlerInterface{static createFactory(){return()=>new Xn}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome111"}close(){if(Zn.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Zn.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=Un.parse(t.sdp),i=qn.extractRtpCapabilities({sdpObject:r});return Hn.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Zn.debug("getNativeSctpCapabilities()"),{numStreams:Yn}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Zn.debug("run()"),this._direction=e,this._remoteSdp=new Jn.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:Vn.getSendingRtpParameters("audio",d),video:Vn.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Vn.getSendingRemoteRtpParameters("audio",d),video:Vn.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):(Zn.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})))}async updateIceServers(e){this.assertNotClosed(),Zn.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Zn.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Zn.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Zn.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Zn.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Zn.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){if(this.assertNotClosed(),this.assertSendDirection(),Zn.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1){t.forEach(((e,t)=>{e.rid=`r${t}`}));let e=1,r=1;for(const e of t){const t=e.scalabilityMode?(0,Qn.parse)(e.scalabilityMode).temporalLayers:3;t>r&&(r=t)}for(const i of t)i.rid="r"+e++,i.scalabilityMode=`L1T${r}`}const n=zn.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=Vn.reduceCodecs(n.codecs,i);const s=zn.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=Vn.reduceCodecs(s.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t}),c=await this._pc.createOffer();let d=Un.parse(c.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:d}),Zn.debug("send() | calling pc.setLocalDescription() [offer:%o]",c),await this._pc.setLocalDescription(c);const l=o.mid;n.mid=l,d=Un.parse(this._pc.localDescription.sdp);const p=d.media[a.idx];if(n.rtcp.cname=qn.getCname({offerMediaObject:p}),t)if(1===t.length){const e=Gn.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),n.encodings=e}else n.encodings=t;else n.encodings=Gn.getRtpEncodings({offerMediaObject:p});this._remoteSdp.send({offerMediaObject:p,reuseMid:a.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const u={type:"answer",sdp:this._remoteSdp.getSdp()};return Zn.debug("send() | calling pc.setRemoteDescription() [answer:%o]",u),await this._pc.setRemoteDescription(u),this._mapMidTransceiver.set(l,o),{localId:l,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),Zn.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();Zn.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Zn.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Zn.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Zn.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Zn.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Zn.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();Zn.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Zn.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Zn.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Zn.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),Zn.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Zn.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Zn.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Zn.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Zn.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Zn.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Zn.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Yn.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Un.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Zn.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Zn.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;Zn.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Zn.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=Un.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),a=s.media.find((e=>String(e.mid)===n));qn.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}n={type:"answer",sdp:Un.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Zn.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Zn.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Zn.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Zn.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Zn.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Zn.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Zn.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Zn.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Zn.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Zn.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a,protocol:r};Zn.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Zn.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Un.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Zn.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Un.parse(this._pc.localDescription.sdp));const r=qn.extractIceParameters({sdpObject:t}),i=qn.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Wn.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Fn=Hi.Chrome111=Xn;var es={},ts=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),rs=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),is=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ts(t,e,r);return rs(t,e),t};Object.defineProperty(es,"__esModule",{value:!0}),es.Chrome74=void 0;const ns=is(Wi),ss=sr,as=is(vr),os=is(_r),cs=is(dn),ds=is(mn),ls=is(fn),ps=mr,us=gn,hs=bn,ms=Mn,fs=new ss.Logger("Chrome74"),gs={OS:1024,MIS:1024};class vs extends us.HandlerInterface{static createFactory(){return()=>new vs}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome74"}close(){if(fs.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){fs.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=ns.parse(t.sdp),i=cs.extractRtpCapabilities({sdpObject:r});return ls.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return fs.debug("getNativeSctpCapabilities()"),{numStreams:gs}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){fs.debug("run()"),this._direction=e,this._remoteSdp=new hs.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:os.getSendingRtpParameters("audio",d),video:os.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:os.getSendingRemoteRtpParameters("audio",d),video:os.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):(fs.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})))}async updateIceServers(e){this.assertNotClosed(),fs.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),fs.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});fs.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};fs.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};fs.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();fs.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),fs.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const n=as.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=os.reduceCodecs(n.codecs,i);const s=as.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=os.reduceCodecs(s.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});let c,d=await this._pc.createOffer(),l=ns.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});let p=!1;const u=(0,ms.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(fs.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=ns.parse(d.sdp),c=l.media[a.idx],ds.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:ns.write(l)}),fs.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const h=o.mid;if(n.mid=h,l=ns.parse(this._pc.localDescription.sdp),c=l.media[a.idx],n.rtcp.cname=cs.getCname({offerMediaObject:c}),t)if(1===t.length){let e=ds.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),p&&(e=[e[0]]),n.encodings=e}else n.encodings=t;else n.encodings=ds.getRtpEncodings({offerMediaObject:c});if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${u.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return fs.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),fs.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();fs.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};fs.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),fs.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();fs.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};fs.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),fs.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();fs.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};fs.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?fs.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):fs.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),fs.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();fs.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};fs.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),fs.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();fs.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};fs.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};fs.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%gs.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ns.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),fs.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};fs.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;fs.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};fs.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=ns.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),a=s.media.find((e=>String(e.mid)===n));cs.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}n={type:"answer",sdp:ns.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),fs.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){fs.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};fs.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();fs.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){fs.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};fs.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();fs.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){fs.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};fs.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();fs.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a,protocol:r};fs.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};fs.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ns.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}fs.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=ns.parse(this._pc.localDescription.sdp));const r=cs.extractIceParameters({sdpObject:t}),i=cs.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new ps.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}es.Chrome74=vs;var _s={},bs=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ys=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ws=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&bs(t,e,r);return ys(t,e),t};Object.defineProperty(_s,"__esModule",{value:!0}),_s.Chrome70=void 0;const Ss=ws(Wi),Cs=sr,Rs=ws(vr),Ts=ws(_r),Ps=ws(dn),ks=ws(mn),Ds=gn,Os=bn,Es=Mn,Is=new Cs.Logger("Chrome70"),xs={OS:1024,MIS:1024};class js extends Ds.HandlerInterface{static createFactory(){return()=>new js}constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome70"}close(){if(Is.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){Is.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=Ss.parse(t.sdp);return Ps.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Is.debug("getNativeSctpCapabilities()"),{numStreams:xs}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Is.debug("run()"),this._direction=e,this._remoteSdp=new Os.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:Ts.getSendingRtpParameters("audio",d),video:Ts.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Ts.getSendingRemoteRtpParameters("audio",d),video:Ts.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Is.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){Is.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Is.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Is.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Is.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Is.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Is.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),Is.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const n=Rs.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=Ts.reduceCodecs(n.codecs,i);const s=Rs.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=Ts.reduceCodecs(s.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let c,d=await this._pc.createOffer(),l=Ss.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l}),t&&t.length>1&&(Is.debug("send() | enabling legacy simulcast"),l=Ss.parse(d.sdp),c=l.media[a.idx],ks.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:Ss.write(l)});let p=!1;const u=(0,Es.parse)((t||[{}])[0].scalabilityMode);if(t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(Is.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=Ss.parse(d.sdp),c=l.media[a.idx],ks.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:Ss.write(l)}),Is.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d),t){Is.debug("send() | applying given encodings");const e=o.sender.getParameters();for(let r=0;r<(e.encodings||[]).length;++r){const i=e.encodings[r],n=t[r];if(!n)break;e.encodings[r]=Object.assign(i,n)}await o.sender.setParameters(e)}const h=o.mid;if(n.mid=h,l=Ss.parse(this._pc.localDescription.sdp),c=l.media[a.idx],n.rtcp.cname=Ps.getCname({offerMediaObject:c}),n.encodings=ks.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<n.encodings.length;++e)t[e]&&Object.assign(n.encodings[e],t[e]);if(p&&(n.encodings=[n.encodings[0]]),n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return Is.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){this.assertSendDirection(),Is.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();Is.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Is.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?Is.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Is.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),Is.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Is.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Is.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),Is.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Is.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Is.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};Is.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%xs.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Ss.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Is.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Is.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;Is.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Is.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=Ss.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),a=s.media.find((e=>String(e.mid)===n));Ps.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}n={type:"answer",sdp:Ss.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Is.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){Is.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Is.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Is.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:a,protocol:r};Is.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Is.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Ss.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Is.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Ss.parse(this._pc.localDescription.sdp));const r=Ps.extractIceParameters({sdpObject:t}),i=Ps.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}_s.Chrome70=js;var Ms={},Ls={};Object.defineProperty(Ls,"__esModule",{value:!0}),Ls.addLegacySimulcast=Ls.getRtpEncodings=void 0,Ls.getRtpEncodings=function({offerMediaObject:e,track:t}){const r=new Set;for(const i of e.ssrcs||[]){if("msid"!==i.attribute)continue;if(i.value.split(" ")[1]===t.id){const e=i.id;r.add(e)}}if(0===r.size)throw new Error(`a=ssrc line with msid information not found [track.id:${t.id}]`);const i=new Map;for(const t of e.ssrcGroups||[]){if("FID"!==t.semantics)continue;let[e,n]=t.ssrcs.split(/\s+/);e=Number(e),n=Number(n),r.has(e)&&(r.delete(e),r.delete(n),i.set(e,n))}for(const e of r)i.set(e,null);const n=[];for(const[e,t]of i){const r={ssrc:e};t&&(r.rtx={ssrc:t}),n.push(r)}return n},Ls.addLegacySimulcast=function({offerMediaObject:e,track:t,numStreams:r}){if(r<=1)throw new TypeError("numStreams must be greater than 1");let i,n,s;if(!(e.ssrcs||[]).find((e=>{if("msid"!==e.attribute)return!1;return e.value.split(" ")[1]===t.id&&(i=e.id,s=e.value.split(" ")[0],!0)})))throw new Error(`a=ssrc line with msid information not found [track.id:${t.id}]`);(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===i&&(n=Number(t[1]),!0)}));const a=e.ssrcs.find((e=>"cname"===e.attribute&&e.id===i));if(!a)throw new Error(`a=ssrc line with cname information not found [track.id:${t.id}]`);const o=a.value,c=[],d=[];for(let e=0;e<r;++e)c.push(i+e),n&&d.push(n+e);e.ssrcGroups=e.ssrcGroups||[],e.ssrcs=e.ssrcs||[],e.ssrcGroups.push({semantics:"SIM",ssrcs:c.join(" ")});for(let r=0;r<c.length;++r){const i=c[r];e.ssrcs.push({id:i,attribute:"cname",value:o}),e.ssrcs.push({id:i,attribute:"msid",value:`${s} ${t.id}`})}for(let r=0;r<d.length;++r){const i=c[r],n=d[r];e.ssrcs.push({id:n,attribute:"cname",value:o}),e.ssrcs.push({id:n,attribute:"msid",value:`${s} ${t.id}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${i} ${n}`})}};var As=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ns=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Bs=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&As(t,e,r);return Ns(t,e),t};Object.defineProperty(Ms,"__esModule",{value:!0}),Ms.Chrome67=void 0;const Fs=Bs(Wi),Us=sr,$s=Bs(vr),zs=Bs(_r),Vs=Bs(dn),qs=Bs(Ls),Gs=gn,Hs=bn,Ws=new Us.Logger("Chrome67"),Ks={OS:1024,MIS:1024};class Js extends Gs.HandlerInterface{static createFactory(){return()=>new Js}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdRtpSender=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome67"}close(){if(Ws.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){Ws.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=Fs.parse(t.sdp);return Vs.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Ws.debug("getNativeSctpCapabilities()"),{numStreams:Ks}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Ws.debug("run()"),this._direction=e,this._remoteSdp=new Hs.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:zs.getSendingRtpParameters("audio",d),video:zs.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:zs.getSendingRemoteRtpParameters("audio",d),video:zs.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Ws.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){Ws.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Ws.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Ws.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Ws.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ws.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Ws.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),Ws.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Ws.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let n,s=await this._pc.createOffer(),a=Fs.parse(s.sdp);const o=$s.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=zs.reduceCodecs(o.codecs);const c=$s.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=zs.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(Ws.debug("send() | enabling simulcast"),a=Fs.parse(s.sdp),n=a.media.find((e=>"video"===e.type)),qs.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:Fs.write(a)}),Ws.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),a=Fs.parse(this._pc.localDescription.sdp),n=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=Vs.getCname({offerMediaObject:n}),o.encodings=qs.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&"video/vp8"===o.codecs[0].mimeType.toLowerCase())for(const e of o.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};Ws.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const p=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,p),{localId:l,rtpParameters:o,rtpSender:p}}async stopSending(e){this.assertSendDirection(),Ws.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");this._pc.removeTrack(t),t.track&&this._sendStream.removeTrack(t.track),this._mapSendLocalIdRtpSender.delete(e);const r=await this._pc.createOffer();Ws.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Ws.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ws.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?Ws.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Ws.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.track;await r.replaceTrack(t),i&&this._sendStream.removeTrack(i),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),Ws.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(i)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),Ws.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.setParameters(i)}async getSenderStats(e){this.assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");return t.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};Ws.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ks.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Fs.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Ws.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ws.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:n}=t;Ws.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:n||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};Ws.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const n=Fs.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));Vs.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}i={type:"answer",sdp:Fs.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Ws.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:n}=r,s=i,a=e,o=this._pc.getReceivers().find((e=>e.track&&e.track.id===s));if(!o)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(s,{mid:a,rtpParameters:n,rtpReceiver:o}),t.push({localId:s,track:o.track,rtpReceiver:o})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){Ws.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Ws.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ws.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this.assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:a,protocol:r};Ws.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ws.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Fs.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Ws.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Fs.parse(this._pc.localDescription.sdp));const r=Vs.extractIceParameters({sdpObject:t}),i=Vs.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Ms.Chrome67=Js;var Qs={},Zs=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ys=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Xs=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Zs(t,e,r);return Ys(t,e),t};Object.defineProperty(Qs,"__esModule",{value:!0}),Qs.Chrome55=void 0;const ea=Xs(Wi),ta=sr,ra=mr,ia=Xs(vr),na=Xs(_r),sa=Xs(dn),aa=Xs(Ls),oa=gn,ca=bn,da=new ta.Logger("Chrome55"),la={OS:1024,MIS:1024};class pa extends oa.HandlerInterface{static createFactory(){return()=>new pa}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdTrack=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome55"}close(){if(da.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){da.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=ea.parse(t.sdp);return sa.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return da.debug("getNativeSctpCapabilities()"),{numStreams:la}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){da.debug("run()"),this._direction=e,this._remoteSdp=new ca.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:na.getSendingRtpParameters("audio",d),video:na.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:na.getSendingRemoteRtpParameters("audio",d),video:na.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(da.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){da.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(da.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});da.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};da.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};da.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();da.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),da.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&da.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let n,s=await this._pc.createOffer(),a=ea.parse(s.sdp);const o=ia.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=na.reduceCodecs(o.codecs);const c=ia.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=na.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(da.debug("send() | enabling simulcast"),a=ea.parse(s.sdp),n=a.media.find((e=>"video"===e.type)),aa.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:ea.write(a)}),da.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),a=ea.parse(this._pc.localDescription.sdp),n=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=sa.getCname({offerMediaObject:n}),o.encodings=aa.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&"video/vp8"===o.codecs[0].mimeType.toLowerCase())for(const e of o.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};da.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:o}}async stopSending(e){this.assertSendDirection(),da.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdTrack.get(e);if(!t)throw new Error("track not found");this._mapSendLocalIdTrack.delete(e),this._sendStream.removeTrack(t),this._pc.addStream(this._sendStream);const r=await this._pc.createOffer();da.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void da.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};da.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){throw new ra.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new ra.UnsupportedError(" not implemented")}async setRtpEncodingParameters(e,t){throw new ra.UnsupportedError("not supported")}async getSenderStats(e){throw new ra.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};da.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%la.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ea.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),da.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};da.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:n}=t;da.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:n||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};da.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const n=ea.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));sa.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}i={type:"answer",sdp:ea.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),da.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:n}=r,s=e,a=i,o=r.streamId||n.rtcp.cname,c=this._pc.getRemoteStreams().find((e=>e.id===o)).getTrackById(a);if(!c)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(a,{mid:s,rtpParameters:n}),t.push({localId:a,track:c})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){da.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};da.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();da.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new ra.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:a,protocol:r};da.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};da.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ea.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}da.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=ea.parse(this._pc.localDescription.sdp));const r=sa.extractIceParameters({sdpObject:t}),i=sa.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Qs.Chrome55=pa;var ua={},ha=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ma=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),fa=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ha(t,e,r);return ma(t,e),t};Object.defineProperty(ua,"__esModule",{value:!0}),ua.Firefox60=void 0;const ga=fa(Wi),va=sr,_a=mr,ba=fa(vr),ya=fa(_r),wa=fa(dn),Sa=fa(mn),Ca=gn,Ra=bn,Ta=Mn,Pa=new va.Logger("Firefox60"),ka={OS:16,MIS:2048};class Da extends Ca.HandlerInterface{static createFactory(){return()=>new Da}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Firefox60"}close(){if(Pa.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Pa.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"}),t=document.createElement("canvas");t.getContext("2d");const r=t.captureStream().getVideoTracks()[0];try{e.addTransceiver("audio",{direction:"sendrecv"});const i=e.addTransceiver(r,{direction:"sendrecv"}),n=i.sender.getParameters(),s=[{rid:"r0",maxBitrate:1e5},{rid:"r1",maxBitrate:5e5}];n.encodings=s,await i.sender.setParameters(n);const a=await e.createOffer();try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}const o=ga.parse(a.sdp);return wa.extractRtpCapabilities({sdpObject:o})}catch(i){try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}throw i}}async getNativeSctpCapabilities(){return Pa.debug("getNativeSctpCapabilities()"),{numStreams:ka}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Pa.debug("run()"),this._direction=e,this._remoteSdp=new Ra.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:ya.getSendingRtpParameters("audio",d),video:ya.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:ya.getSendingRemoteRtpParameters("audio",d),video:ya.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Pa.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){throw this.assertNotClosed(),new _a.UnsupportedError("not supported")}async restartIce(e){if(this.assertNotClosed(),Pa.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Pa.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Pa.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Pa.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Pa.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),Pa.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&(t=ba.clone(t)).length>1&&(t.forEach(((e,t)=>{e.rid=`r${t}`})),t.reverse());const n=ba.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=ya.reduceCodecs(n.codecs,i);const s=ba.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=ya.reduceCodecs(s.codecs,i);const a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});if(t){const e=a.sender.getParameters();e.encodings=t,await a.sender.setParameters(e)}const o=await this._pc.createOffer();let c=ga.parse(o.sdp);this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:c});const d=(0,Ta.parse)((t||[{}])[0].scalabilityMode);Pa.debug("send() | calling pc.setLocalDescription() [offer:%o]",o),await this._pc.setLocalDescription(o);const l=a.mid;n.mid=l,c=ga.parse(this._pc.localDescription.sdp);const p=c.media[c.media.length-1];if(n.rtcp.cname=wa.getCname({offerMediaObject:p}),t)if(1===t.length){const e=Sa.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),n.encodings=e}else n.encodings=t.reverse();else n.encodings=Sa.getRtpEncodings({offerMediaObject:p});if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${d.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:p,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const u={type:"answer",sdp:this._remoteSdp.getSdp()};return Pa.debug("send() | calling pc.setRemoteDescription() [answer:%o]",u),await this._pc.setRemoteDescription(u),this._mapMidTransceiver.set(l,a),{localId:l,rtpParameters:n,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),Pa.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated transceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.disableMediaSection(t.mid);const r=await this._pc.createOffer();Pa.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Pa.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Pa.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Pa.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Pa.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Pa.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly",this._remoteSdp.resumeSendingMediaSection(e);const r=await this._pc.createOffer();Pa.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Pa.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Pa.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Pa.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),Pa.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated transceiver not found");const i=r.sender.getParameters();t=i.encodings.length-1-t,i.encodings.forEach(((e,r)=>{e.active=r>=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Pa.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Pa.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Pa.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Pa.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Pa.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Pa.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ka.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ga.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:t}),Pa.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Pa.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;Pa.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Pa.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=ga.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,a=r.get(e),o=s.media.find((e=>String(e.mid)===a));wa.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o}),n={type:"answer",sdp:ga.write(s)}}this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:s}),Pa.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Pa.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Pa.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Pa.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Pa.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Pa.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Pa.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Pa.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Pa.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Pa.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a,protocol:r};Pa.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Pa.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ga.parse(t.sdp);await this.setupTransport({localDtlsRole:"client",localSdpObject:e})}Pa.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=ga.parse(this._pc.localDescription.sdp));const r=wa.extractIceParameters({sdpObject:t}),i=wa.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new _a.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}ua.Firefox60=Da;var Oa={},Ea=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ia=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),xa=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Ea(t,e,r);return Ia(t,e),t};Object.defineProperty(Oa,"__esModule",{value:!0}),Oa.Safari12=void 0;const ja=xa(Wi),Ma=sr,La=xa(vr),Aa=xa(_r),Na=xa(dn),Ba=xa(mn),Fa=xa(fn),Ua=mr,$a=gn,za=bn,Va=Mn,qa=new Ma.Logger("Safari12"),Ga={OS:1024,MIS:1024};class Ha extends $a.HandlerInterface{static createFactory(){return()=>new Ha}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Safari12"}close(){if(qa.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){qa.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=ja.parse(t.sdp),i=Na.extractRtpCapabilities({sdpObject:r});return Fa.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return qa.debug("getNativeSctpCapabilities()"),{numStreams:Ga}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),qa.debug("run()"),this._direction=e,this._remoteSdp=new za.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:Aa.getSendingRtpParameters("audio",d),video:Aa.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Aa.getSendingRemoteRtpParameters("audio",d),video:Aa.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(qa.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){this.assertNotClosed(),qa.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),qa.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});qa.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};qa.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};qa.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();qa.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),qa.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const n=La.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=Aa.reduceCodecs(n.codecs,i);const s=La.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=Aa.reduceCodecs(s.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let c,d=await this._pc.createOffer(),l=ja.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});const p=(0,Va.parse)((t||[{}])[0].scalabilityMode);t&&t.length>1&&(qa.debug("send() | enabling legacy simulcast"),l=ja.parse(d.sdp),c=l.media[a.idx],Ba.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:ja.write(l)}),qa.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const u=o.mid;if(n.mid=u,l=ja.parse(this._pc.localDescription.sdp),c=l.media[a.idx],n.rtcp.cname=Na.getCname({offerMediaObject:c}),n.encodings=Ba.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<n.encodings.length;++e)t[e]&&Object.assign(n.encodings[e],t[e]);if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${p.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r});const h={type:"answer",sdp:this._remoteSdp.getSdp()};return qa.debug("send() | calling pc.setRemoteDescription() [answer:%o]",h),await this._pc.setRemoteDescription(h),this._mapMidTransceiver.set(u,o),{localId:u,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;qa.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();qa.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};qa.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),qa.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();qa.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};qa.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),qa.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly",this._remoteSdp.resumeSendingMediaSection(e);const r=await this._pc.createOffer();qa.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};qa.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?qa.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):qa.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),qa.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();qa.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};qa.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),qa.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();qa.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};qa.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};qa.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ga.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ja.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),qa.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};qa.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;qa.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};qa.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=ja.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),a=s.media.find((e=>String(e.mid)===n));Na.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}n={type:"answer",sdp:ja.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),qa.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){qa.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};qa.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();qa.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){qa.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};qa.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();qa.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){qa.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};qa.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();qa.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a,protocol:r};qa.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};qa.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ja.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}qa.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=ja.parse(this._pc.localDescription.sdp));const r=Na.extractIceParameters({sdpObject:t}),i=Na.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Ua.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Oa.Safari12=Ha;var Wa={},Ka=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ja=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Qa=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Ka(t,e,r);return Ja(t,e),t};Object.defineProperty(Wa,"__esModule",{value:!0}),Wa.Safari11=void 0;const Za=Qa(Wi),Ya=sr,Xa=Qa(vr),eo=Qa(_r),to=Qa(dn),ro=Qa(Ls),io=gn,no=bn,so=new Ya.Logger("Safari11"),ao={OS:1024,MIS:1024};class oo extends io.HandlerInterface{static createFactory(){return()=>new oo}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdRtpSender=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Safari11"}close(){if(so.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){so.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=Za.parse(t.sdp);return to.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return so.debug("getNativeSctpCapabilities()"),{numStreams:ao}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){so.debug("run()"),this._direction=e,this._remoteSdp=new no.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:eo.getSendingRtpParameters("audio",d),video:eo.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:eo.getSendingRemoteRtpParameters("audio",d),video:eo.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(so.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){so.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(so.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});so.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};so.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};so.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();so.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),so.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&so.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let n,s=await this._pc.createOffer(),a=Za.parse(s.sdp);const o=Xa.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=eo.reduceCodecs(o.codecs);const c=Xa.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=eo.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(so.debug("send() | enabling simulcast"),a=Za.parse(s.sdp),n=a.media.find((e=>"video"===e.type)),ro.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:Za.write(a)}),so.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),a=Za.parse(this._pc.localDescription.sdp),n=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=to.getCname({offerMediaObject:n}),o.encodings=ro.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&"video/vp8"===o.codecs[0].mimeType.toLowerCase())for(const e of o.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};so.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const p=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,p),{localId:l,rtpParameters:o,rtpSender:p}}async stopSending(e){this.assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");t.track&&this._sendStream.removeTrack(t.track),this._mapSendLocalIdRtpSender.delete(e);const r=await this._pc.createOffer();so.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void so.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};so.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?so.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):so.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.track;await r.replaceTrack(t),i&&this._sendStream.removeTrack(i),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),so.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(i)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),so.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.setParameters(i)}async getSenderStats(e){this.assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");return t.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};so.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ao.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Za.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),so.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};so.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:n}=t;so.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:n||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};so.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const n=Za.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));to.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}i={type:"answer",sdp:Za.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),so.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:n}=r,s=e,a=i,o=this._pc.getReceivers().find((e=>e.track&&e.track.id===a));if(!o)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(a,{mid:s,rtpParameters:n,rtpReceiver:o}),t.push({localId:a,track:o.track,rtpReceiver:o})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){so.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};so.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();so.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async pauseReceiving(e){}async resumeReceiving(e){}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a,protocol:r};so.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};so.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Za.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}so.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Za.parse(this._pc.localDescription.sdp));const r=to.extractIceParameters({sdpObject:t}),i=to.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Wa.Safari11=oo;var co={},lo={},po=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),uo=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ho=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&po(t,e,r);return uo(t,e),t};Object.defineProperty(lo,"__esModule",{value:!0}),lo.mangleRtpParameters=lo.getCapabilities=void 0;const mo=ho(vr);lo.getCapabilities=function(){const e=RTCRtpReceiver.getCapabilities(),t=mo.clone(e);for(const e of t.codecs??[]){if(e.channels=e.numChannels,delete e.numChannels,e.mimeType=e.mimeType||`${e.kind}/${e.name}`,e.parameters){const t=e.parameters;t.apt&&(t.apt=Number(t.apt)),t["packetization-mode"]&&(t["packetization-mode"]=Number(t["packetization-mode"]))}for(const t of e.rtcpFeedback||[])t.parameter||(t.parameter="")}return t},lo.mangleRtpParameters=function(e){const t=mo.clone(e);t.mid&&(t.muxId=t.mid,delete t.mid);for(const e of t.codecs)e.channels&&(e.numChannels=e.channels,delete e.channels),e.mimeType&&!e.name&&(e.name=e.mimeType.split("/")[1]),delete e.mimeType;return t};var fo=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),go=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),vo=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&fo(t,e,r);return go(t,e),t};Object.defineProperty(co,"__esModule",{value:!0}),co.Edge11=void 0;const _o=sr,bo=mr,yo=vo(vr),wo=vo(_r),So=vo(lo),Co=gn,Ro=new _o.Logger("Edge11");class To extends Co.HandlerInterface{static createFactory(){return()=>new To}constructor(){super(),this._rtpSenders=new Map,this._rtpReceivers=new Map,this._nextSendLocalId=0,this._transportReady=!1}get name(){return"Edge11"}close(){Ro.debug("close()");try{this._iceGatherer.close()}catch(e){}try{this._iceTransport.stop()}catch(e){}try{this._dtlsTransport.stop()}catch(e){}for(const e of this._rtpSenders.values())try{e.stop()}catch(e){}for(const e of this._rtpReceivers.values())try{e.stop()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){return Ro.debug("getNativeRtpCapabilities()"),So.getCapabilities()}async getNativeSctpCapabilities(){return Ro.debug("getNativeSctpCapabilities()"),{numStreams:{OS:0,MIS:0}}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Ro.debug("run()"),this._sendingRtpParametersByKind={audio:wo.getSendingRtpParameters("audio",d),video:wo.getSendingRtpParameters("video",d)},this._remoteIceParameters=t,this._remoteIceCandidates=r,this._remoteDtlsParameters=i,this._cname=`CNAME-${yo.generateRandomNumber()}`,this.setIceGatherer({iceServers:s,iceTransportPolicy:a}),this.setIceTransport(),this.setDtlsTransport()}async updateIceServers(e){throw new bo.UnsupportedError("not supported")}async restartIce(e){if(Ro.debug("restartIce()"),this._remoteIceParameters=e,this._transportReady){Ro.debug("restartIce() | calling iceTransport.start()"),this._iceTransport.start(this._iceGatherer,e,"controlling");for(const e of this._remoteIceCandidates)this._iceTransport.addRemoteCandidate(e);this._iceTransport.addRemoteCandidate({})}}async getTransportStats(){return this._iceTransport.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){Ro.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),this._transportReady||await this.setupTransport({localDtlsRole:"server"}),Ro.debug("send() | calling new RTCRtpSender()");const n=new RTCRtpSender(e,this._dtlsTransport),s=yo.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=wo.reduceCodecs(s.codecs,i);const a=s.codecs.some((e=>/.+\/rtx$/i.test(e.mimeType)));t||(t=[{}]);for(const e of t)e.ssrc=yo.generateRandomNumber(),a&&(e.rtx={ssrc:yo.generateRandomNumber()});s.encodings=t,s.rtcp={cname:this._cname,reducedSize:!0,mux:!0};const o=So.mangleRtpParameters(s);Ro.debug("send() | calling rtpSender.send() [params:%o]",o),await n.send(o);const c=String(this._nextSendLocalId);return this._nextSendLocalId++,this._rtpSenders.set(c,n),{localId:c,rtpParameters:s,rtpSender:n}}async stopSending(e){Ro.debug("stopSending() [localId:%s]",e);const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");this._rtpSenders.delete(e);try{Ro.debug("stopSending() | calling rtpSender.stop()"),t.stop()}catch(e){throw Ro.warn("stopSending() | rtpSender.stop() failed:%o",e),e}}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){t?Ro.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Ro.debug("replaceTrack() [localId:%s, no track]",e);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");r.setTrack(t)}async setMaxSpatialLayer(e,t){Ro.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(i)}async setRtpEncodingParameters(e,t){Ro.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.setParameters(i)}async getSenderStats(e){const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");return t.getStats()}async sendDataChannel(e){throw new bo.UnsupportedError("not implemented")}async receive(e){const t=[];for(const t of e){const{trackId:e,kind:r}=t;Ro.debug("receive() [trackId:%s, kind:%s]",e,r)}this._transportReady||await this.setupTransport({localDtlsRole:"server"});for(const r of e){const{trackId:e,kind:i,rtpParameters:n}=r;Ro.debug("receive() | calling new RTCRtpReceiver()");const s=new RTCRtpReceiver(this._dtlsTransport,i);s.addEventListener("error",(e=>{Ro.error('rtpReceiver "error" event [event:%o]',e)}));const a=So.mangleRtpParameters(n);Ro.debug("receive() | calling rtpReceiver.receive() [params:%o]",a),await s.receive(a);const o=e;this._rtpReceivers.set(o,s),t.push({localId:o,track:s.track,rtpReceiver:s})}return t}async stopReceiving(e){for(const t of e){Ro.debug("stopReceiving() [localId:%s]",t);const e=this._rtpReceivers.get(t);if(!e)throw new Error("RTCRtpReceiver not found");this._rtpReceivers.delete(t);try{Ro.debug("stopReceiving() | calling rtpReceiver.stop()"),e.stop()}catch(e){Ro.warn("stopReceiving() | rtpReceiver.stop() failed:%o",e)}}}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){const t=this._rtpReceivers.get(e);if(!t)throw new Error("RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel(e){throw new bo.UnsupportedError("not implemented")}setIceGatherer({iceServers:e,iceTransportPolicy:t}){const r=new RTCIceGatherer({iceServers:e||[],gatherPolicy:t||"all"});r.addEventListener("error",(e=>{Ro.error('iceGatherer "error" event [event:%o]',e)}));try{r.gather()}catch(e){Ro.debug("setIceGatherer() | iceGatherer.gather() failed: %s",e.toString())}this._iceGatherer=r}setIceTransport(){const e=new RTCIceTransport(this._iceGatherer);e.addEventListener("statechange",(()=>{switch(e.state){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})),e.addEventListener("icestatechange",(()=>{switch(e.state){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})),e.addEventListener("candidatepairchange",(e=>{Ro.debug('iceTransport "candidatepairchange" event [pair:%o]',e.pair)})),this._iceTransport=e}setDtlsTransport(){const e=new RTCDtlsTransport(this._iceTransport);e.addEventListener("statechange",(()=>{Ro.debug('dtlsTransport "statechange" event [state:%s]',e.state)})),e.addEventListener("dtlsstatechange",(()=>{Ro.debug('dtlsTransport "dtlsstatechange" event [state:%s]',e.state),"closed"===e.state&&this.emit("@connectionstatechange","closed")})),e.addEventListener("error",(e=>{Ro.error('dtlsTransport "error" event [event:%o]',e)})),this._dtlsTransport=e}async setupTransport({localDtlsRole:e}){Ro.debug("setupTransport()");const t=this._iceGatherer.getLocalParameters(),r=this._dtlsTransport.getLocalParameters();r.role=e,await new Promise(((e,i)=>{this.safeEmit("@connect",{iceParameters:t,dtlsParameters:r},e,i)})),this._iceTransport.start(this._iceGatherer,this._remoteIceParameters,"controlling");for(const e of this._remoteIceCandidates)this._iceTransport.addRemoteCandidate(e);this._iceTransport.addRemoteCandidate({}),this._remoteDtlsParameters.fingerprints=this._remoteDtlsParameters.fingerprints.filter((e=>"sha-256"===e.algorithm||"sha-384"===e.algorithm||"sha-512"===e.algorithm)),this._dtlsTransport.start(this._remoteDtlsParameters),this._transportReady=!0}}co.Edge11=To;var Po={},ko=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Do=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Oo=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ko(t,e,r);return Do(t,e),t};Object.defineProperty(Po,"__esModule",{value:!0}),Po.ReactNativeUnifiedPlan=void 0;const Eo=Oo(Wi),Io=sr,xo=Oo(vr),jo=Oo(_r),Mo=Oo(dn),Lo=Oo(mn),Ao=Oo(fn),No=mr,Bo=gn,Fo=bn,Uo=Mn,$o=new Io.Logger("ReactNativeUnifiedPlan"),zo={OS:1024,MIS:1024};class Vo extends Bo.HandlerInterface{static createFactory(){return()=>new Vo}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"ReactNativeUnifiedPlan"}close(){if($o.debug("close()"),!this._closed){if(this._closed=!0,this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){$o.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=Eo.parse(t.sdp),i=Mo.extractRtpCapabilities({sdpObject:r});return Ao.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return $o.debug("getNativeSctpCapabilities()"),{numStreams:zo}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),$o.debug("run()"),this._direction=e,this._remoteSdp=new Fo.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:jo.getSendingRtpParameters("audio",d),video:jo.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:jo.getSendingRemoteRtpParameters("audio",d),video:jo.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch($o.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){this.assertNotClosed(),$o.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),$o.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});$o.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};$o.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};$o.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();$o.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),$o.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const n=xo.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=jo.reduceCodecs(n.codecs,i);const s=xo.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=jo.reduceCodecs(s.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});let c,d=await this._pc.createOffer(),l=Eo.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});let p=!1;const u=(0,Uo.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&($o.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=Eo.parse(d.sdp),c=l.media[a.idx],Lo.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:Eo.write(l)}),$o.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);let h=o.mid??void 0;if(h||$o.warn("send() | missing transceiver.mid (bug in react-native-webrtc, using a workaround"),n.mid=h,l=Eo.parse(this._pc.localDescription.sdp),c=l.media[a.idx],n.rtcp.cname=Mo.getCname({offerMediaObject:c}),t)if(1===t.length){let e=Lo.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),p&&(e=[e[0]]),n.encodings=e}else n.encodings=t;else n.encodings=Lo.getRtpEncodings({offerMediaObject:c});if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${u.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return $o.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),h||(h=o.mid,n.mid=h),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;$o.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();$o.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};$o.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),$o.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();$o.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};$o.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),$o.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();$o.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};$o.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?$o.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):$o.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),$o.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();$o.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};$o.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),$o.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();$o.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};$o.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};$o.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%zo.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Eo.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),$o.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};$o.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;$o.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};$o.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=Eo.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),a=s.media.find((e=>String(e.mid)===n));Mo.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}n={type:"answer",sdp:Eo.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),$o.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){$o.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};$o.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();$o.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){$o.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};$o.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();$o.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){$o.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};$o.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();$o.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a,protocol:r};$o.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};$o.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Eo.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}$o.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Eo.parse(this._pc.localDescription.sdp));const r=Mo.extractIceParameters({sdpObject:t}),i=Mo.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new No.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Po.ReactNativeUnifiedPlan=Vo;var qo={},Go=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ho=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Wo=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Go(t,e,r);return Ho(t,e),t};Object.defineProperty(qo,"__esModule",{value:!0}),qo.ReactNative=void 0;const Ko=Wo(Wi),Jo=sr,Qo=mr,Zo=Wo(vr),Yo=Wo(_r),Xo=Wo(dn),ec=Wo(Ls),tc=gn,rc=bn,ic=new Jo.Logger("ReactNative"),nc={OS:1024,MIS:1024};class sc extends tc.HandlerInterface{static createFactory(){return()=>new sc}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdTrack=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"ReactNative"}close(){if(ic.debug("close()"),this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){ic.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=Ko.parse(t.sdp);return Xo.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return ic.debug("getNativeSctpCapabilities()"),{numStreams:nc}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){ic.debug("run()"),this._direction=e,this._remoteSdp=new rc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:Yo.getSendingRtpParameters("audio",d),video:Yo.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Yo.getSendingRemoteRtpParameters("audio",d),video:Yo.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(ic.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){ic.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(ic.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});ic.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};ic.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};ic.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();ic.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),ic.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&ic.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let n,s=await this._pc.createOffer(),a=Ko.parse(s.sdp);const o=Zo.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=Yo.reduceCodecs(o.codecs);const c=Zo.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=Yo.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(ic.debug("send() | enabling simulcast"),a=Ko.parse(s.sdp),n=a.media.find((e=>"video"===e.type)),ec.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:Ko.write(a)}),ic.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),a=Ko.parse(this._pc.localDescription.sdp),n=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=Xo.getCname({offerMediaObject:n}),o.encodings=ec.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&("video/vp8"===o.codecs[0].mimeType.toLowerCase()||"video/h264"===o.codecs[0].mimeType.toLowerCase()))for(const e of o.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};ic.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:o}}async stopSending(e){this.assertSendDirection(),ic.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdTrack.get(e);if(!t)throw new Error("track not found");this._mapSendLocalIdTrack.delete(e),this._sendStream.removeTrack(t),this._pc.addStream(this._sendStream);const r=await this._pc.createOffer();ic.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void ic.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};ic.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){throw new Qo.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new Qo.UnsupportedError("not implemented")}async setRtpEncodingParameters(e,t){throw new Qo.UnsupportedError("not implemented")}async getSenderStats(e){throw new Qo.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};ic.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%nc.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Ko.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),ic.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};ic.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n}=t;ic.debug("receive() [trackId:%s, kind:%s]",e,i);const s=i;let a=t.streamId||n.rtcp.cname;ic.debug("receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc"),a+=`-hack-${Zo.generateRandomNumber()}`,r.set(e,a),this._remoteSdp.receive({mid:s,kind:i,offerRtpParameters:n,streamId:a,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};ic.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=Ko.parse(n.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));Xo.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}n={type:"answer",sdp:Ko.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),ic.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{kind:e,trackId:n,rtpParameters:s}=i,a=n,o=e,c=r.get(n),d=this._pc.getRemoteStreams().find((e=>e.id===c)).getTrackById(a);if(!d)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(a,{mid:o,rtpParameters:s}),t.push({localId:a,track:d})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){ic.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};ic.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();ic.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new Qo.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:a,protocol:r};ic.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};ic.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Ko.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}ic.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Ko.parse(this._pc.localDescription.sdp));const r=Xo.extractIceParameters({sdpObject:t}),i=Xo.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}qo.ReactNative=sc;var ac=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),oc=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),cc=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ac(t,e,r);return oc(t,e),t};Object.defineProperty(rr,"__esModule",{value:!0}),rr.Device=rr.detectDevice=void 0;const dc=nr,lc=sr,pc=dr,uc=mr,hc=cc(vr),mc=cc(_r),fc=Xr,gc=Hi,vc=es,_c=_s,bc=Ms,yc=Qs,wc=ua,Sc=Oa,Cc=Wa,Rc=co,Tc=Po,Pc=qo,kc=new lc.Logger("Device");function Dc(){if("object"==typeof navigator&&"ReactNative"===navigator.product)return kc.debug("detectDevice() | React-Native detected"),"undefined"==typeof RTCPeerConnection?void kc.warn("detectDevice() | unsupported react-native-webrtc without RTCPeerConnection, forgot to call registerGlobals()?"):"undefined"!=typeof RTCRtpTransceiver?(kc.debug("detectDevice() | ReactNative UnifiedPlan handler chosen"),"ReactNativeUnifiedPlan"):(kc.debug("detectDevice() | ReactNative PlanB handler chosen"),"ReactNative");if("object"!=typeof navigator||"string"!=typeof navigator.userAgent)kc.warn("detectDevice() | unknown device");else{const e=navigator.userAgent,t=new dc.UAParser(e);kc.debug("detectDevice() | browser detected [ua:%s, parsed:%o]",e,t.getResult());const r=t.getBrowser(),i=r.name?.toLowerCase(),n=parseInt(r.major??"0"),s=t.getEngine(),a=s.name?.toLowerCase(),o=t.getOS(),c=o.name?.toLowerCase(),d=parseFloat(o.version??"0"),l=t.getDevice(),p=l.model?.toLowerCase(),u="ios"===c||"ipad"===p,h=i&&["chrome","chromium","mobile chrome","chrome webview","chrome headless"].includes(i),m=i&&["firefox","mobile firefox","mobile focus"].includes(i),f=i&&["safari","mobile safari"].includes(i),g=i&&["edge"].includes(i);if((h||g)&&!u&&n>=111)return"Chrome111";if(h&&!u&&n>=74||g&&!u&&n>=88)return"Chrome74";if(h&&!u&&n>=70)return"Chrome70";if(h&&!u&&n>=67)return"Chrome67";if(h&&!u&&n>=55)return"Chrome55";if(m&&!u&&n>=60)return"Firefox60";if(m&&u&&d>=14.3)return"Safari12";if(f&&n>=12&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if(f&&n>=11)return"Safari11";if(g&&!u&&n>=11&&n<=18)return"Edge11";if("webkit"===a&&u&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if("blink"===a){const t=e.match(/(?:(?:Chrome|Chromium))[ /](\w+)/i);if(t){const e=Number(t[1]);return e>=111?"Chrome111":e>=74?"Chrome74":e>=70?"Chrome70":e>=67?"Chrome67":"Chrome55"}return"Chrome111"}kc.warn("detectDevice() | browser not supported [name:%s, version:%s]",i,n)}}rr.detectDevice=Dc;rr.Device=class{constructor({handlerName:e,handlerFactory:t,Handler:r}={}){if(this._loaded=!1,this._observer=new pc.EnhancedEventEmitter,kc.debug("constructor()"),r){if(kc.warn("constructor() | Handler option is DEPRECATED, use handlerName or handlerFactory instead"),"string"!=typeof r)throw new TypeError("non string Handler option no longer supported, use handlerFactory instead");e=r}if(e&&t)throw new TypeError("just one of handlerName or handlerInterface can be given");if(t)this._handlerFactory=t;else{if(e)kc.debug("constructor() | handler given: %s",e);else{if(!(e=Dc()))throw new uc.UnsupportedError("device not supported");kc.debug("constructor() | detected handler: %s",e)}switch(e){case"Chrome111":this._handlerFactory=gc.Chrome111.createFactory();break;case"Chrome74":this._handlerFactory=vc.Chrome74.createFactory();break;case"Chrome70":this._handlerFactory=_c.Chrome70.createFactory();break;case"Chrome67":this._handlerFactory=bc.Chrome67.createFactory();break;case"Chrome55":this._handlerFactory=yc.Chrome55.createFactory();break;case"Firefox60":this._handlerFactory=wc.Firefox60.createFactory();break;case"Safari12":this._handlerFactory=Sc.Safari12.createFactory();break;case"Safari11":this._handlerFactory=Cc.Safari11.createFactory();break;case"Edge11":this._handlerFactory=Rc.Edge11.createFactory();break;case"ReactNativeUnifiedPlan":this._handlerFactory=Tc.ReactNativeUnifiedPlan.createFactory();break;case"ReactNative":this._handlerFactory=Pc.ReactNative.createFactory();break;default:throw new TypeError(`unknown handlerName "${e}"`)}}const i=this._handlerFactory();this._handlerName=i.name,i.close(),this._extendedRtpCapabilities=void 0,this._recvRtpCapabilities=void 0,this._canProduceByKind={audio:!1,video:!1},this._sctpCapabilities=void 0}get handlerName(){return this._handlerName}get loaded(){return this._loaded}get rtpCapabilities(){if(!this._loaded)throw new uc.InvalidStateError("not loaded");return this._recvRtpCapabilities}get sctpCapabilities(){if(!this._loaded)throw new uc.InvalidStateError("not loaded");return this._sctpCapabilities}get observer(){return this._observer}async load({routerRtpCapabilities:e}){let t;kc.debug("load() [routerRtpCapabilities:%o]",e),e=hc.clone(e);try{if(this._loaded)throw new uc.InvalidStateError("already loaded");mc.validateRtpCapabilities(e),t=this._handlerFactory();const r=await t.getNativeRtpCapabilities();kc.debug("load() | got native RTP capabilities:%o",r),mc.validateRtpCapabilities(r),this._extendedRtpCapabilities=mc.getExtendedRtpCapabilities(r,e),kc.debug("load() | got extended RTP capabilities:%o",this._extendedRtpCapabilities),this._canProduceByKind.audio=mc.canSend("audio",this._extendedRtpCapabilities),this._canProduceByKind.video=mc.canSend("video",this._extendedRtpCapabilities),this._recvRtpCapabilities=mc.getRecvRtpCapabilities(this._extendedRtpCapabilities),mc.validateRtpCapabilities(this._recvRtpCapabilities),kc.debug("load() | got receiving RTP capabilities:%o",this._recvRtpCapabilities),this._sctpCapabilities=await t.getNativeSctpCapabilities(),kc.debug("load() | got native SCTP capabilities:%o",this._sctpCapabilities),mc.validateSctpCapabilities(this._sctpCapabilities),kc.debug("load() succeeded"),this._loaded=!0,t.close()}catch(e){throw t&&t.close(),e}}canProduce(e){if(!this._loaded)throw new uc.InvalidStateError("not loaded");if("audio"!==e&&"video"!==e)throw new TypeError(`invalid kind "${e}"`);return this._canProduceByKind[e]}createSendTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d}){return kc.debug("createSendTransport()"),this.createTransport({direction:"send",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}createRecvTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d}){return kc.debug("createRecvTransport()"),this.createTransport({direction:"recv",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}createTransport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:l}){if(!this._loaded)throw new uc.InvalidStateError("not loaded");if("string"!=typeof t)throw new TypeError("missing id");if("object"!=typeof r)throw new TypeError("missing iceParameters");if(!Array.isArray(i))throw new TypeError("missing iceCandidates");if("object"!=typeof n)throw new TypeError("missing dtlsParameters");if(s&&"object"!=typeof s)throw new TypeError("wrong sctpParameters");if(l&&"object"!=typeof l)throw new TypeError("if given, appData must be an object");const p=new fc.Transport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:l,handlerFactory:this._handlerFactory,extendedRtpCapabilities:this._extendedRtpCapabilities,canProduceByKind:this._canProduceByKind});return this._observer.safeEmit("newtransport",p),p}};var Oc={},Ec={};Object.defineProperty(Ec,"__esModule",{value:!0});var Ic={};Object.defineProperty(Ic,"__esModule",{value:!0}),function(e){var t=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=Ht&&Ht.__exportStar||function(e,r){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(r,i)||t(r,e,i)};Object.defineProperty(e,"__esModule",{value:!0}),r(rr,e),r(Xr,e),r(di,e),r(mi,e),r(bi,e),r(Ri,e),r(Ec,e),r(Ic,e),r(gn,e),r(mr,e)}(Oc),function(e){var t=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&t(i,e,n);return r(i,e),i},n=Ht&&Ht.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.debug=e.parseScalabilityMode=e.detectDevice=e.Device=e.version=e.types=void 0;const s=n(tr);e.debug=s.default;const a=rr;Object.defineProperty(e,"Device",{enumerable:!0,get:function(){return a.Device}}),Object.defineProperty(e,"detectDevice",{enumerable:!0,get:function(){return a.detectDevice}});const o=i(Oc);e.types=o,e.version="3.7.3";var c=Mn;Object.defineProperty(e,"parseScalabilityMode",{enumerable:!0,get:function(){return c.parse}})}(Zt);let xc=!0,jc=!0;function Mc(e,t,r){const i=e.match(t);return i&&i.length>=r&&parseInt(i[r],10)}function Lc(e,t,r){if(!e.RTCPeerConnection)return;const i=e.RTCPeerConnection.prototype,n=i.addEventListener;i.addEventListener=function(e,i){if(e!==t)return n.apply(this,arguments);const s=e=>{const t=r(e);t&&(i.handleEvent?i.handleEvent(t):i(t))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(i,s),n.apply(this,[e,s])};const s=i.removeEventListener;i.removeEventListener=function(e,r){if(e!==t||!this._eventMap||!this._eventMap[t])return s.apply(this,arguments);if(!this._eventMap[t].has(r))return s.apply(this,arguments);const i=this._eventMap[t].get(r);return this._eventMap[t].delete(r),0===this._eventMap[t].size&&delete this._eventMap[t],0===Object.keys(this._eventMap).length&&delete this._eventMap,s.apply(this,[e,i])},Object.defineProperty(i,"on"+t,{get(){return this["_on"+t]},set(e){this["_on"+t]&&(this.removeEventListener(t,this["_on"+t]),delete this["_on"+t]),e&&this.addEventListener(t,this["_on"+t]=e)},enumerable:!0,configurable:!0})}function Ac(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(xc=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function Nc(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(jc=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function Bc(){if("object"==typeof window){if(xc)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function Fc(e,t){jc&&console.warn(e+" is deprecated, please use "+t+" instead.")}function Uc(e){return"[object Object]"===Object.prototype.toString.call(e)}function $c(e){return Uc(e)?Object.keys(e).reduce((function(t,r){const i=Uc(e[r]),n=i?$c(e[r]):e[r],s=i&&!Object.keys(n).length;return void 0===n||s?t:Object.assign(t,{[r]:n})}),{}):e}function zc(e,t,r){t&&!r.has(t.id)&&(r.set(t.id,t),Object.keys(t).forEach((i=>{i.endsWith("Id")?zc(e,e.get(t[i]),r):i.endsWith("Ids")&&t[i].forEach((t=>{zc(e,e.get(t),r)}))})))}function Vc(e,t,r){const i=r?"outbound-rtp":"inbound-rtp",n=new Map;if(null===t)return n;const s=[];return e.forEach((e=>{"track"===e.type&&e.trackIdentifier===t.id&&s.push(e)})),s.forEach((t=>{e.forEach((r=>{r.type===i&&r.trackId===t.id&&zc(e,r,n)}))})),n}const qc=Bc;function Gc(e,t){const r=e&&e.navigator;if(!r.mediaDevices)return;const i=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;const t={};return Object.keys(e).forEach((r=>{if("require"===r||"advanced"===r||"mediaSource"===r)return;const i="object"==typeof e[r]?e[r]:{ideal:e[r]};void 0!==i.exact&&"number"==typeof i.exact&&(i.min=i.max=i.exact);const n=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==i.ideal){t.optional=t.optional||[];let e={};"number"==typeof i.ideal?(e[n("min",r)]=i.ideal,t.optional.push(e),e={},e[n("max",r)]=i.ideal,t.optional.push(e)):(e[n("",r)]=i.ideal,t.optional.push(e))}void 0!==i.exact&&"number"!=typeof i.exact?(t.mandatory=t.mandatory||{},t.mandatory[n("",r)]=i.exact):["min","max"].forEach((e=>{void 0!==i[e]&&(t.mandatory=t.mandatory||{},t.mandatory[n(e,r)]=i[e])}))})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},n=function(e,n){if(t.version>=61)return n(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){const t=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])};t((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),t(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=i(e.audio)}if(e&&"object"==typeof e.video){let s=e.video.facingMode;s=s&&("object"==typeof s?s:{ideal:s});const a=t.version<66;if(s&&("user"===s.exact||"environment"===s.exact||"user"===s.ideal||"environment"===s.ideal)&&(!r.mediaDevices.getSupportedConstraints||!r.mediaDevices.getSupportedConstraints().facingMode||a)){let t;if(delete e.video.facingMode,"environment"===s.exact||"environment"===s.ideal?t=["back","rear"]:"user"!==s.exact&&"user"!==s.ideal||(t=["front"]),t)return r.mediaDevices.enumerateDevices().then((r=>{let a=(r=r.filter((e=>"videoinput"===e.kind))).find((e=>t.some((t=>e.label.toLowerCase().includes(t)))));return!a&&r.length&&t.includes("back")&&(a=r[r.length-1]),a&&(e.video.deviceId=s.exact?{exact:a.deviceId}:{ideal:a.deviceId}),e.video=i(e.video),qc("chrome: "+JSON.stringify(e)),n(e)}))}e.video=i(e.video)}return qc("chrome: "+JSON.stringify(e)),n(e)},s=function(e){return t.version>=64?e:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[e.name]||e.name,message:e.message,constraint:e.constraint||e.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}};if(r.getUserMedia=function(e,t,i){n(e,(e=>{r.webkitGetUserMedia(e,t,(e=>{i&&i(s(e))}))}))}.bind(r),r.mediaDevices.getUserMedia){const e=r.mediaDevices.getUserMedia.bind(r.mediaDevices);r.mediaDevices.getUserMedia=function(t){return n(t,(t=>e(t).then((e=>{if(t.audio&&!e.getAudioTracks().length||t.video&&!e.getVideoTracks().length)throw e.getTracks().forEach((e=>{e.stop()})),new DOMException("","NotFoundError");return e}),(e=>Promise.reject(s(e))))))}}}function Hc(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function Wc(e){if("object"==typeof e&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)},enumerable:!0,configurable:!0});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener("addtrack",(r=>{let i;i=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.track.id)):{track:r.track};const n=new Event("track");n.track=r.track,n.receiver=i,n.transceiver={receiver:i},n.streams=[t.stream],this.dispatchEvent(n)})),t.stream.getTracks().forEach((r=>{let i;i=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.id)):{track:r};const n=new Event("track");n.track=r,n.receiver=i,n.transceiver={receiver:i},n.streams=[t.stream],this.dispatchEvent(n)}))},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else Lc(e,"track",(e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e)))}function Kc(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){const t=function(e,t){return{track:t,get dtmf(){return void 0===this._dtmf&&("audio"===t.kind?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const r=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,i){let n=r.apply(this,arguments);return n||(n=t(this,e),this._senders.push(n)),n};const i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){i.apply(this,arguments);const t=this._senders.indexOf(e);-1!==t&&this._senders.splice(t,1)}}const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._senders=this._senders||[],r.apply(this,[e]),e.getTracks().forEach((e=>{this._senders.push(t(this,e))}))};const i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],i.apply(this,[e]),e.getTracks().forEach((e=>{const t=this._senders.find((t=>t.track===e));t&&this._senders.splice(this._senders.indexOf(t),1)}))}}else if("object"==typeof e&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function Jc(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,r,i]=arguments;if(arguments.length>0&&"function"==typeof e)return t.apply(this,arguments);if(0===t.length&&(0===arguments.length||"function"!=typeof e))return t.apply(this,[]);const n=function(e){const t={};return e.result().forEach((e=>{const r={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach((t=>{r[t]=e.stat(t)})),t[r.id]=r})),t},s=function(e){return new Map(Object.keys(e).map((t=>[t,e[t]])))};if(arguments.length>=2){const i=function(e){r(s(n(e)))};return t.apply(this,[i,e])}return new Promise(((e,r)=>{t.apply(this,[function(t){e(s(n(t)))},r])})).then(r,i)}}function Qc(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver))return;if(!("getStats"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>Vc(t,e.track,!0)))}}if(!("getStats"in e.RTCRtpReceiver.prototype)){const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),Lc(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>Vc(t,e.track,!1)))}}if(!("getStats"in e.RTCRtpSender.prototype)||!("getStats"in e.RTCRtpReceiver.prototype))return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){const e=arguments[0];let t,r,i;return this.getSenders().forEach((r=>{r.track===e&&(t?i=!0:t=r)})),this.getReceivers().forEach((t=>(t.track===e&&(r?i=!0:r=t),t.track===e))),i||t&&r?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):t?t.getStats():r?r.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function Zc(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map((e=>this._shimmedLocalStreams[e][0]))};const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){if(!r)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const i=t.apply(this,arguments);return this._shimmedLocalStreams[r.id]?-1===this._shimmedLocalStreams[r.id].indexOf(i)&&this._shimmedLocalStreams[r.id].push(i):this._shimmedLocalStreams[r.id]=[r,i],i};const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")}));const t=this.getSenders();r.apply(this,arguments);const i=this.getSenders().filter((e=>-1===t.indexOf(e)));this._shimmedLocalStreams[e.id]=[e].concat(i)};const i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],i.apply(this,arguments)};const n=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach((t=>{const r=this._shimmedLocalStreams[t].indexOf(e);-1!==r&&this._shimmedLocalStreams[t].splice(r,1),1===this._shimmedLocalStreams[t].length&&delete this._shimmedLocalStreams[t]})),n.apply(this,arguments)}}function Yc(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return Zc(e);const r=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){const e=r.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map((e=>this._reverseStreams[e.id]))};const i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},t.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")})),!this._reverseStreams[t.id]){const r=new e.MediaStream(t.getTracks());this._streams[t.id]=r,this._reverseStreams[r.id]=t,t=r}i.apply(this,[t])};const n=e.RTCPeerConnection.prototype.removeStream;function s(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const i=e._reverseStreams[t],n=e._streams[i.id];r=r.replace(new RegExp(n.id,"g"),i.id)})),new RTCSessionDescription({type:t.type,sdp:r})}e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},n.apply(this,[this._streams[e.id]||e]),delete this._reverseStreams[this._streams[e.id]?this._streams[e.id].id:e.id],delete this._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,r){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const i=[].slice.call(arguments,1);if(1!==i.length||!i[0].getTracks().find((e=>e===t)))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find((e=>e.track===t)))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const n=this._streams[r.id];if(n)n.addTrack(t),Promise.resolve().then((()=>{this.dispatchEvent(new Event("negotiationneeded"))}));else{const i=new e.MediaStream([t]);this._streams[r.id]=i,this._reverseStreams[i.id]=r,this.addStream(i)}return this.getSenders().find((e=>e.track===t))},["createOffer","createAnswer"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){const e=arguments;return arguments.length&&"function"==typeof arguments[0]?r.apply(this,[t=>{const r=s(this,t);e[0].apply(null,[r])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):r.apply(this,arguments).then((e=>s(this,e)))}};e.RTCPeerConnection.prototype[t]=i[t]}));const a=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=function(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const i=e._reverseStreams[t],n=e._streams[i.id];r=r.replace(new RegExp(i.id,"g"),n.id)})),new RTCSessionDescription({type:t.type,sdp:r})}(this,arguments[0]),a.apply(this,arguments)):a.apply(this,arguments)};const o=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){const e=o.get.apply(this);return""===e.type?e:s(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!e._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(e._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");let t;this._streams=this._streams||{},Object.keys(this._streams).forEach((r=>{this._streams[r].getTracks().find((t=>e.track===t))&&(t=this._streams[r])})),t&&(1===t.getTracks().length?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event("negotiationneeded")))}}function Xc(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=i[t]}))}function ed(e,t){Lc(e,"negotiationneeded",(e=>{const r=e.target;if(!(t.version<72||r.getConfiguration&&"plan-b"===r.getConfiguration().sdpSemantics)||"stable"===r.signalingState)return e}))}var td=Object.freeze({__proto__:null,fixNegotiationNeeded:ed,shimAddTrackRemoveTrack:Yc,shimAddTrackRemoveTrackWithNative:Zc,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&("function"==typeof t?e.navigator.mediaDevices.getDisplayMedia=function(r){return t(r).then((t=>{const i=r.video&&r.video.width,n=r.video&&r.video.height,s=r.video&&r.video.frameRate;return r.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:s||3}},i&&(r.video.mandatory.maxWidth=i),n&&(r.video.mandatory.maxHeight=n),e.navigator.mediaDevices.getUserMedia(r)}))}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))},shimGetSendersWithDtmf:Kc,shimGetStats:Jc,shimGetUserMedia:Gc,shimMediaStream:Hc,shimOnTrack:Wc,shimPeerConnection:Xc,shimSenderReceiverGetStats:Qc});function rd(e,t){const r=e&&e.navigator,i=e&&e.MediaStreamTrack;if(r.getUserMedia=function(e,t,i){Fc("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),r.mediaDevices.getUserMedia(e).then(t,i)},!(t.version>55&&"autoGainControl"in r.mediaDevices.getSupportedConstraints())){const e=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])},t=r.mediaDevices.getUserMedia.bind(r.mediaDevices);if(r.mediaDevices.getUserMedia=function(r){return"object"==typeof r&&"object"==typeof r.audio&&(r=JSON.parse(JSON.stringify(r)),e(r.audio,"autoGainControl","mozAutoGainControl"),e(r.audio,"noiseSuppression","mozNoiseSuppression")),t(r)},i&&i.prototype.getSettings){const t=i.prototype.getSettings;i.prototype.getSettings=function(){const r=t.apply(this,arguments);return e(r,"mozAutoGainControl","autoGainControl"),e(r,"mozNoiseSuppression","noiseSuppression"),r}}if(i&&i.prototype.applyConstraints){const t=i.prototype.applyConstraints;i.prototype.applyConstraints=function(r){return"audio"===this.kind&&"object"==typeof r&&(r=JSON.parse(JSON.stringify(r)),e(r,"autoGainControl","mozAutoGainControl"),e(r,"noiseSuppression","mozNoiseSuppression")),t.apply(this,[r])}}}}function id(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function nd(e,t){if("object"!=typeof e||!e.RTCPeerConnection&&!e.mozRTCPeerConnection)return;!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=i[t]}));const r={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},i=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,n,s]=arguments;return i.apply(this,[e||null]).then((e=>{if(t.version<53&&!n)try{e.forEach((e=>{e.type=r[e.type]||e.type}))}catch(t){if("TypeError"!==t.name)throw t;e.forEach(((t,i)=>{e.set(i,Object.assign({},t,{type:r[t.type]||t.type}))}))}return e})).then(n,s)}}function sd(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)return;const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function ad(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype)return;const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),Lc(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function od(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){Fc("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function cd(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function dd(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let e=arguments[1]&&arguments[1].sendEncodings;void 0===e&&(e=[]),e=[...e];const r=e.length>0;r&&e.forEach((e=>{if("rid"in e){if(!/^[a-z0-9]{0,16}$/i.test(e.rid))throw new TypeError("Invalid RID value provided.")}if("scaleResolutionDownBy"in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in e&&!(parseFloat(e.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")}));const i=t.apply(this,arguments);if(r){const{sender:t}=i,r=t.getParameters();(!("encodings"in r)||1===r.encodings.length&&0===Object.keys(r.encodings[0]).length)&&(r.encodings=e,t.sendEncodings=e,this.setParametersPromises.push(t.setParameters(r).then((()=>{delete t.sendEncodings})).catch((()=>{delete t.sendEncodings}))))}return i})}function ld(e){if("object"!=typeof e||!e.RTCRtpSender)return;const t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){const e=t.apply(this,arguments);return"encodings"in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function pd(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}function ud(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createAnswer;e.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}var hd=Object.freeze({__proto__:null,shimAddTransceiver:dd,shimCreateAnswer:ud,shimCreateOffer:pd,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(r){if(!r||!r.video){const e=new DOMException("getDisplayMedia without video constraints is undefined");return e.name="NotFoundError",e.code=8,Promise.reject(e)}return!0===r.video?r.video={mediaSource:t}:r.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(r)})},shimGetParameters:ld,shimGetUserMedia:rd,shimOnTrack:id,shimPeerConnection:nd,shimRTCDataChannel:cd,shimReceiverGetStats:ad,shimRemoveStream:od,shimSenderGetStats:sd});function md(e){if("object"==typeof e&&e.RTCPeerConnection){if("getLocalStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in e.RTCPeerConnection.prototype)){const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||(this._localStreams=[]),this._localStreams.includes(e)||this._localStreams.push(e),e.getAudioTracks().forEach((r=>t.call(this,r,e))),e.getVideoTracks().forEach((r=>t.call(this,r,e)))},e.RTCPeerConnection.prototype.addTrack=function(e,...r){return r&&r.forEach((e=>{this._localStreams?this._localStreams.includes(e)||this._localStreams.push(e):this._localStreams=[e]})),t.apply(this,arguments)}}"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);const t=this._localStreams.indexOf(e);if(-1===t)return;this._localStreams.splice(t,1);const r=e.getTracks();this.getSenders().forEach((e=>{r.includes(e.track)&&this.removeTrack(e)}))})}}function fd(e){if("object"==typeof e&&e.RTCPeerConnection&&("getRemoteStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(e){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=e),this.addEventListener("track",this._onaddstreampoly=e=>{e.streams.forEach((e=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(e))return;this._remoteStreams.push(e);const t=new Event("addstream");t.stream=e,this.dispatchEvent(t)}))})}});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){const e=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(t){t.streams.forEach((t=>{if(e._remoteStreams||(e._remoteStreams=[]),e._remoteStreams.indexOf(t)>=0)return;e._remoteStreams.push(t);const r=new Event("addstream");r.stream=t,e.dispatchEvent(r)}))}),t.apply(e,arguments)}}}function gd(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype,r=t.createOffer,i=t.createAnswer,n=t.setLocalDescription,s=t.setRemoteDescription,a=t.addIceCandidate;t.createOffer=function(e,t){const i=arguments.length>=2?arguments[2]:arguments[0],n=r.apply(this,[i]);return t?(n.then(e,t),Promise.resolve()):n},t.createAnswer=function(e,t){const r=arguments.length>=2?arguments[2]:arguments[0],n=i.apply(this,[r]);return t?(n.then(e,t),Promise.resolve()):n};let o=function(e,t,r){const i=n.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i};t.setLocalDescription=o,o=function(e,t,r){const i=s.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.setRemoteDescription=o,o=function(e,t,r){const i=a.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.addIceCandidate=o}function vd(e){const t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){const e=t.mediaDevices,r=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>r(_d(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,r,i){t.mediaDevices.getUserMedia(e).then(r,i)}.bind(t))}function _d(e){return e&&void 0!==e.video?Object.assign({},e,{video:$c(e.video)}):e}function bd(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,r){if(e&&e.iceServers){const t=[];for(let r=0;r<e.iceServers.length;r++){let i=e.iceServers[r];void 0===i.urls&&i.url?(Fc("RTCIceServer.url","RTCIceServer.urls"),i=JSON.parse(JSON.stringify(i)),i.urls=i.url,delete i.url,t.push(i)):t.push(e.iceServers[r])}e.iceServers=t}return new t(e,r)},e.RTCPeerConnection.prototype=t.prototype,"generateCertificate"in t&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:()=>t.generateCertificate})}function yd(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function wd(e){const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);const t=this.getTransceivers().find((e=>"audio"===e.receiver.track.kind));!1===e.offerToReceiveAudio&&t?"sendrecv"===t.direction?t.setDirection?t.setDirection("sendonly"):t.direction="sendonly":"recvonly"===t.direction&&(t.setDirection?t.setDirection("inactive"):t.direction="inactive"):!0!==e.offerToReceiveAudio||t||this.addTransceiver("audio",{direction:"recvonly"}),void 0!==e.offerToReceiveVideo&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);const r=this.getTransceivers().find((e=>"video"===e.receiver.track.kind));!1===e.offerToReceiveVideo&&r?"sendrecv"===r.direction?r.setDirection?r.setDirection("sendonly"):r.direction="sendonly":"recvonly"===r.direction&&(r.setDirection?r.setDirection("inactive"):r.direction="inactive"):!0!==e.offerToReceiveVideo||r||this.addTransceiver("video",{direction:"recvonly"})}return t.apply(this,arguments)}}function Sd(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var Cd=Object.freeze({__proto__:null,shimAudioContext:Sd,shimCallbacksAPI:gd,shimConstraints:_d,shimCreateOfferLegacy:wd,shimGetUserMedia:vd,shimLocalStreamsAPI:md,shimRTCIceServerUrls:bd,shimRemoteStreamsAPI:fd,shimTrackEventTransceiver:yd}),Rd={exports:{}};!function(e){const t={generateIdentifier:function(){return Math.random().toString(36).substring(2,12)}};t.localCName=t.generateIdentifier(),t.splitLines=function(e){return e.trim().split("\n").map((e=>e.trim()))},t.splitSections=function(e){return e.split("\nm=").map(((e,t)=>(t>0?"m="+e:e).trim()+"\r\n"))},t.getDescription=function(e){const r=t.splitSections(e);return r&&r[0]},t.getMediaSections=function(e){const r=t.splitSections(e);return r.shift(),r},t.matchPrefix=function(e,r){return t.splitLines(e).filter((e=>0===e.indexOf(r)))},t.parseCandidate=function(e){let t;t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" ");const r={foundation:t[0],component:{1:"rtp",2:"rtcp"}[t[1]]||t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]};for(let e=8;e<t.length;e+=2)switch(t[e]){case"raddr":r.relatedAddress=t[e+1];break;case"rport":r.relatedPort=parseInt(t[e+1],10);break;case"tcptype":r.tcpType=t[e+1];break;case"ufrag":r.ufrag=t[e+1],r.usernameFragment=t[e+1];break;default:void 0===r[t[e]]&&(r[t[e]]=t[e+1])}return r},t.writeCandidate=function(e){const t=[];t.push(e.foundation);const r=e.component;"rtp"===r?t.push(1):"rtcp"===r?t.push(2):t.push(r),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);const i=e.type;return t.push("typ"),t.push(i),"host"!==i&&e.relatedAddress&&e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&"tcp"===e.protocol.toLowerCase()&&(t.push("tcptype"),t.push(e.tcpType)),(e.usernameFragment||e.ufrag)&&(t.push("ufrag"),t.push(e.usernameFragment||e.ufrag)),"candidate:"+t.join(" ")},t.parseIceOptions=function(e){return e.substring(14).split(" ")},t.parseRtpMap=function(e){let t=e.substring(9).split(" ");const r={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),r.name=t[0],r.clockRate=parseInt(t[1],10),r.channels=3===t.length?parseInt(t[2],10):1,r.numChannels=r.channels,r},t.writeRtpMap=function(e){let t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);const r=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==r?"/"+r:"")+"\r\n"},t.parseExtmap=function(e){const t=e.substring(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1],attributes:t.slice(2).join(" ")}},t.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+(e.attributes?" "+e.attributes:"")+"\r\n"},t.parseFmtp=function(e){const t={};let r;const i=e.substring(e.indexOf(" ")+1).split(";");for(let e=0;e<i.length;e++)r=i[e].trim().split("="),t[r[0].trim()]=r[1];return t},t.writeFmtp=function(e){let t="",r=e.payloadType;if(void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){const i=[];Object.keys(e.parameters).forEach((t=>{void 0!==e.parameters[t]?i.push(t+"="+e.parameters[t]):i.push(t)})),t+="a=fmtp:"+r+" "+i.join(";")+"\r\n"}return t},t.parseRtcpFb=function(e){const t=e.substring(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},t.writeRtcpFb=function(e){let t="",r=e.payloadType;return void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach((e=>{t+="a=rtcp-fb:"+r+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"})),t},t.parseSsrcMedia=function(e){const t=e.indexOf(" "),r={ssrc:parseInt(e.substring(7,t),10)},i=e.indexOf(":",t);return i>-1?(r.attribute=e.substring(t+1,i),r.value=e.substring(i+1)):r.attribute=e.substring(t+1),r},t.parseSsrcGroup=function(e){const t=e.substring(13).split(" ");return{semantics:t.shift(),ssrcs:t.map((e=>parseInt(e,10)))}},t.getMid=function(e){const r=t.matchPrefix(e,"a=mid:")[0];if(r)return r.substring(6)},t.parseFingerprint=function(e){const t=e.substring(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1].toUpperCase()}},t.getDtlsParameters=function(e,r){return{role:"auto",fingerprints:t.matchPrefix(e+r,"a=fingerprint:").map(t.parseFingerprint)}},t.writeDtlsParameters=function(e,t){let r="a=setup:"+t+"\r\n";return e.fingerprints.forEach((e=>{r+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),r},t.parseCryptoLine=function(e){const t=e.substring(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},t.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?t.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},t.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;const t=e.substring(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}},t.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},t.getCryptoParameters=function(e,r){return t.matchPrefix(e+r,"a=crypto:").map(t.parseCryptoLine)},t.getIceParameters=function(e,r){const i=t.matchPrefix(e+r,"a=ice-ufrag:")[0],n=t.matchPrefix(e+r,"a=ice-pwd:")[0];return i&&n?{usernameFragment:i.substring(12),password:n.substring(10)}:null},t.writeIceParameters=function(e){let t="a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n";return e.iceLite&&(t+="a=ice-lite\r\n"),t},t.parseRtpParameters=function(e){const r={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},i=t.splitLines(e)[0].split(" ");r.profile=i[2];for(let n=3;n<i.length;n++){const s=i[n],a=t.matchPrefix(e,"a=rtpmap:"+s+" ")[0];if(a){const i=t.parseRtpMap(a),n=t.matchPrefix(e,"a=fmtp:"+s+" ");switch(i.parameters=n.length?t.parseFmtp(n[0]):{},i.rtcpFeedback=t.matchPrefix(e,"a=rtcp-fb:"+s+" ").map(t.parseRtcpFb),r.codecs.push(i),i.name.toUpperCase()){case"RED":case"ULPFEC":r.fecMechanisms.push(i.name.toUpperCase())}}}t.matchPrefix(e,"a=extmap:").forEach((e=>{r.headerExtensions.push(t.parseExtmap(e))}));const n=t.matchPrefix(e,"a=rtcp-fb:* ").map(t.parseRtcpFb);return r.codecs.forEach((e=>{n.forEach((t=>{e.rtcpFeedback.find((e=>e.type===t.type&&e.parameter===t.parameter))||e.rtcpFeedback.push(t)}))})),r},t.writeRtpDescription=function(e,r){let i="";i+="m="+e+" ",i+=r.codecs.length>0?"9":"0",i+=" "+(r.profile||"UDP/TLS/RTP/SAVPF")+" ",i+=r.codecs.map((e=>void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType)).join(" ")+"\r\n",i+="c=IN IP4 0.0.0.0\r\n",i+="a=rtcp:9 IN IP4 0.0.0.0\r\n",r.codecs.forEach((e=>{i+=t.writeRtpMap(e),i+=t.writeFmtp(e),i+=t.writeRtcpFb(e)}));let n=0;return r.codecs.forEach((e=>{e.maxptime>n&&(n=e.maxptime)})),n>0&&(i+="a=maxptime:"+n+"\r\n"),r.headerExtensions&&r.headerExtensions.forEach((e=>{i+=t.writeExtmap(e)})),i},t.parseRtpEncodingParameters=function(e){const r=[],i=t.parseRtpParameters(e),n=-1!==i.fecMechanisms.indexOf("RED"),s=-1!==i.fecMechanisms.indexOf("ULPFEC"),a=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute)),o=a.length>0&&a[0].ssrc;let c;const d=t.matchPrefix(e,"a=ssrc-group:FID").map((e=>e.substring(17).split(" ").map((e=>parseInt(e,10)))));d.length>0&&d[0].length>1&&d[0][0]===o&&(c=d[0][1]),i.codecs.forEach((e=>{if("RTX"===e.name.toUpperCase()&&e.parameters.apt){let t={ssrc:o,codecPayloadType:parseInt(e.parameters.apt,10)};o&&c&&(t.rtx={ssrc:c}),r.push(t),n&&(t=JSON.parse(JSON.stringify(t)),t.fec={ssrc:o,mechanism:s?"red+ulpfec":"red"},r.push(t))}})),0===r.length&&o&&r.push({ssrc:o});let l=t.matchPrefix(e,"b=");return l.length&&(l=0===l[0].indexOf("b=TIAS:")?parseInt(l[0].substring(7),10):0===l[0].indexOf("b=AS:")?1e3*parseInt(l[0].substring(5),10)*.95-16e3:void 0,r.forEach((e=>{e.maxBitrate=l}))),r},t.parseRtcpParameters=function(e){const r={},i=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute))[0];i&&(r.cname=i.value,r.ssrc=i.ssrc);const n=t.matchPrefix(e,"a=rtcp-rsize");r.reducedSize=n.length>0,r.compound=0===n.length;const s=t.matchPrefix(e,"a=rtcp-mux");return r.mux=s.length>0,r},t.writeRtcpParameters=function(e){let t="";return e.reducedSize&&(t+="a=rtcp-rsize\r\n"),e.mux&&(t+="a=rtcp-mux\r\n"),void 0!==e.ssrc&&e.cname&&(t+="a=ssrc:"+e.ssrc+" cname:"+e.cname+"\r\n"),t},t.parseMsid=function(e){let r;const i=t.matchPrefix(e,"a=msid:");if(1===i.length)return r=i[0].substring(7).split(" "),{stream:r[0],track:r[1]};const n=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"msid"===e.attribute));return n.length>0?(r=n[0].value.split(" "),{stream:r[0],track:r[1]}):void 0},t.parseSctpDescription=function(e){const r=t.parseMLine(e),i=t.matchPrefix(e,"a=max-message-size:");let n;i.length>0&&(n=parseInt(i[0].substring(19),10)),isNaN(n)&&(n=65536);const s=t.matchPrefix(e,"a=sctp-port:");if(s.length>0)return{port:parseInt(s[0].substring(12),10),protocol:r.fmt,maxMessageSize:n};const a=t.matchPrefix(e,"a=sctpmap:");if(a.length>0){const e=a[0].substring(10).split(" ");return{port:parseInt(e[0],10),protocol:e[1],maxMessageSize:n}}},t.writeSctpDescription=function(e,t){let r=[];return r="DTLS/SCTP"!==e.protocol?["m="+e.kind+" 9 "+e.protocol+" "+t.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+t.port+"\r\n"]:["m="+e.kind+" 9 "+e.protocol+" "+t.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+t.port+" "+t.protocol+" 65535\r\n"],void 0!==t.maxMessageSize&&r.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),r.join("")},t.generateSessionId=function(){return Math.random().toString().substr(2,22)},t.writeSessionBoilerplate=function(e,r,i){let n;const s=void 0!==r?r:2;n=e||t.generateSessionId();return"v=0\r\no="+(i||"thisisadapterortc")+" "+n+" "+s+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.getDirection=function(e,r){const i=t.splitLines(e);for(let e=0;e<i.length;e++)switch(i[e]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return i[e].substring(2)}return r?t.getDirection(r):"sendrecv"},t.getKind=function(e){return t.splitLines(e)[0].split(" ")[0].substring(2)},t.isRejected=function(e){return"0"===e.split(" ",2)[1]},t.parseMLine=function(e){const r=t.splitLines(e)[0].substring(2).split(" ");return{kind:r[0],port:parseInt(r[1],10),protocol:r[2],fmt:r.slice(3).join(" ")}},t.parseOLine=function(e){const r=t.matchPrefix(e,"o=")[0].substring(2).split(" ");return{username:r[0],sessionId:r[1],sessionVersion:parseInt(r[2],10),netType:r[3],addressType:r[4],address:r[5]}},t.isValidSDP=function(e){if("string"!=typeof e||0===e.length)return!1;const r=t.splitLines(e);for(let e=0;e<r.length;e++)if(r[e].length<2||"="!==r[e].charAt(1))return!1;return!0},e.exports=t}(Rd);var Td=Rd.exports,Pd=Wt(Td),kd=i({__proto__:null,default:Pd},[Td]);function Dd(e){if(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype)return;const t=e.RTCIceCandidate;e.RTCIceCandidate=function(e){if("object"==typeof e&&e.candidate&&0===e.candidate.indexOf("a=")&&((e=JSON.parse(JSON.stringify(e))).candidate=e.candidate.substring(2)),e.candidate&&e.candidate.length){const r=new t(e),i=Pd.parseCandidate(e.candidate);for(const e in i)e in r||Object.defineProperty(r,e,{value:i[e]});return r.toJSON=function(){return{candidate:r.candidate,sdpMid:r.sdpMid,sdpMLineIndex:r.sdpMLineIndex,usernameFragment:r.usernameFragment}},r}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,Lc(e,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function Od(e){!e.RTCIceCandidate||e.RTCIceCandidate&&"relayProtocol"in e.RTCIceCandidate.prototype||Lc(e,"icecandidate",(e=>{if(e.candidate){const t=Pd.parseCandidate(e.candidate.candidate);"relay"===t.type&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[t.priority>>24])}return e}))}function Ed(e,t){if(!e.RTCPeerConnection)return;"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get(){return void 0===this._sctp?null:this._sctp}});const r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,"chrome"===t.browser&&t.version>=76){const{sdpSemantics:e}=this.getConfiguration();"plan-b"===e&&Object.defineProperty(this,"sctp",{get(){return void 0===this._sctp?null:this._sctp},enumerable:!0,configurable:!0})}if(function(e){if(!e||!e.sdp)return!1;const t=Pd.splitSections(e.sdp);return t.shift(),t.some((e=>{const t=Pd.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")}))}(arguments[0])){const e=function(e){const t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return-1;const r=parseInt(t[1],10);return r!=r?-1:r}(arguments[0]),r=function(e){let r=65536;return"firefox"===t.browser&&(r=t.version<57?-1===e?16384:2147483637:t.version<60?57===t.version?65535:65536:2147483637),r}(e),i=function(e,r){let i=65536;"firefox"===t.browser&&57===t.version&&(i=65535);const n=Pd.matchPrefix(e.sdp,"a=max-message-size:");return n.length>0?i=parseInt(n[0].substring(19),10):"firefox"===t.browser&&-1!==r&&(i=2147483637),i}(arguments[0],e);let n;n=0===r&&0===i?Number.POSITIVE_INFINITY:0===r||0===i?Math.max(r,i):Math.min(r,i);const s={};Object.defineProperty(s,"maxMessageSize",{get:()=>n}),this._sctp=s}return r.apply(this,arguments)}}function Id(e){if(!e.RTCPeerConnection||!("createDataChannel"in e.RTCPeerConnection.prototype))return;function t(e,t){const r=e.send;e.send=function(){const i=arguments[0],n=i.length||i.size||i.byteLength;if("open"===e.readyState&&t.sctp&&n>t.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return r.apply(e,arguments)}}const r=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){const e=r.apply(this,arguments);return t(e,this),e},Lc(e,"datachannel",(e=>(t(e.channel,e.target),e)))}function xd(e){if(!e.RTCPeerConnection||"connectionState"in e.RTCPeerConnection.prototype)return;const t=e.RTCPeerConnection.prototype;Object.defineProperty(t,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(e){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),e&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=e)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach((e=>{const r=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=e=>{const t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;const r=new Event("connectionstatechange",e);t.dispatchEvent(r)}return e},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),r.apply(this,arguments)}}))}function jd(e,t){if(!e.RTCPeerConnection)return;if("chrome"===t.browser&&t.version>=71)return;if("safari"===t.browser&&t.version>=605)return;const r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&-1!==t.sdp.indexOf("\na=extmap-allow-mixed")){const r=t.sdp.split("\n").filter((e=>"a=extmap-allow-mixed"!==e.trim())).join("\n");e.RTCSessionDescription&&t instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:t.type,sdp:r}):t.sdp=r}return r.apply(this,arguments)}}function Md(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const r=e.RTCPeerConnection.prototype.addIceCandidate;r&&0!==r.length&&(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?("chrome"===t.browser&&t.version<78||"firefox"===t.browser&&t.version<68||"safari"===t.browser)&&arguments[0]&&""===arguments[0].candidate?Promise.resolve():r.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}function Ld(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const r=e.RTCPeerConnection.prototype.setLocalDescription;r&&0!==r.length&&(e.RTCPeerConnection.prototype.setLocalDescription=function(){let e=arguments[0]||{};if("object"!=typeof e||e.type&&e.sdp)return r.apply(this,arguments);if(e={type:e.type,sdp:e.sdp},!e.type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":e.type="offer";break;default:e.type="answer"}if(e.sdp||"offer"!==e.type&&"answer"!==e.type)return r.apply(this,[e]);return("offer"===e.type?this.createOffer:this.createAnswer).apply(this).then((e=>r.apply(this,[e])))})}var Ad=Object.freeze({__proto__:null,removeExtmapAllowMixed:jd,shimAddIceCandidateNullOrEmpty:Md,shimConnectionState:xd,shimMaxMessageSize:Ed,shimParameterlessSetLocalDescription:Ld,shimRTCIceCandidate:Dd,shimRTCIceCandidateRelayProtocol:Od,shimSendThrowTypeError:Id});const Nd=function({window:e}={},t={shimChrome:!0,shimFirefox:!0,shimSafari:!0}){const r=Bc,i=function(e){const t={browser:null,version:null};if(void 0===e||!e.navigator||!e.navigator.userAgent)return t.browser="Not a browser.",t;const{navigator:r}=e;if(r.mozGetUserMedia)t.browser="firefox",t.version=Mc(r.userAgent,/Firefox\/(\d+)\./,1);else if(r.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection)t.browser="chrome",t.version=Mc(r.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else{if(!e.RTCPeerConnection||!r.userAgent.match(/AppleWebKit\/(\d+)\./))return t.browser="Not a supported browser.",t;t.browser="safari",t.version=Mc(r.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),n={browserDetails:i,commonShim:Ad,extractVersion:Mc,disableLog:Ac,disableWarnings:Nc,sdp:kd};switch(i.browser){case"chrome":if(!td||!Xc||!t.shimChrome)return r("Chrome shim is not included in this adapter release."),n;if(null===i.version)return r("Chrome shim can not determine version, not shimming."),n;r("adapter.js shimming chrome."),n.browserShim=td,Md(e,i),Ld(e),Gc(e,i),Hc(e),Xc(e,i),Wc(e),Yc(e,i),Kc(e),Jc(e),Qc(e),ed(e,i),Dd(e),Od(e),xd(e),Ed(e,i),Id(e),jd(e,i);break;case"firefox":if(!hd||!nd||!t.shimFirefox)return r("Firefox shim is not included in this adapter release."),n;r("adapter.js shimming firefox."),n.browserShim=hd,Md(e,i),Ld(e),rd(e,i),nd(e,i),id(e),od(e),sd(e),ad(e),cd(e),dd(e),ld(e),pd(e),ud(e),Dd(e),xd(e),Ed(e,i),Id(e);break;case"safari":if(!Cd||!t.shimSafari)return r("Safari shim is not included in this adapter release."),n;r("adapter.js shimming safari."),n.browserShim=Cd,Md(e,i),Ld(e),bd(e),wd(e),gd(e),md(e),fd(e),yd(e),vd(e),Sd(e),Dd(e),Od(e),Ed(e,i),Id(e),jd(e,i);break;default:r("Unsupported browser!")}return n}({window:"undefined"==typeof window?void 0:window});function Bd(e){return{id:e.id,tracks:e.getTracks().map((function(e){return{id:e.id,kind:e.kind,label:e.label,enabled:e.enabled,muted:e.muted,readyState:e.readyState}}))}}var Fd=function(e,t,r){var i=0,n=!!window.mozRTCPeerConnection,s=!!window.RTCIceGatherer,a={};if(r.forEach((function(r){if(window[r+"RTCPeerConnection"]&&("webkit"!==r||!s)){var o=window[r+"RTCPeerConnection"],c=function(r,c){var d=new o(r,c),l="PC_"+i++;d.__rtcStatsId=l,r||(r={nullConfig:!0}),((r=JSON.parse(JSON.stringify(r)))&&r.iceServers||[]).forEach((function(e){delete e.credential})),r.browserType=n?"moz":s?"edge":"webkit",e("create",l,r),c&&e("constraints",l,c),d.addEventListener("icecandidate",(function(t){e("onicecandidate",l,t.candidate)})),d.addEventListener("addstream",(function(t){e("onaddstream",l,t.stream.id+" "+t.stream.getTracks().map((function(e){return e.kind+":"+e.id})))})),d.addEventListener("track",(function(t){e("ontrack",l,t.track.kind+":"+t.track.id+" "+t.streams.map((function(e){return"stream:"+e.id})))})),d.addEventListener("removestream",(function(t){e("onremovestream",l,t.stream.id+" "+t.stream.getTracks().map((function(e){return e.kind+":"+e.id})))})),d.addEventListener("signalingstatechange",(function(){e("onsignalingstatechange",l,d.signalingState)})),d.addEventListener("iceconnectionstatechange",(function(){e("oniceconnectionstatechange",l,d.iceConnectionState)})),d.addEventListener("icegatheringstatechange",(function(){e("onicegatheringstatechange",l,d.iceGatheringState)})),d.addEventListener("connectionstatechange",(function(){e("onconnectionstatechange",l,d.connectionState)})),d.addEventListener("negotiationneeded",(function(){e("onnegotiationneeded",l,void 0)})),d.addEventListener("datachannel",(function(t){e("ondatachannel",l,[t.channel.id,t.channel.label])}));var p=function(){d.getStats(null).then((function(t){var r=function(e){if(!e.entries)return e;var t={};return e.forEach((function(e,r){t[r]=e})),t}(t),i=JSON.parse(JSON.stringify(r));e("getstats",l,function(e,t){t=JSON.parse(JSON.stringify(t)),Object.keys(t).forEach((function(r){var i=t[r];delete i.id,e[r]&&Object.keys(i).forEach((function(n){i[n]===e[r][n]&&delete t[r][n],(0===Object.keys(i).length||1===Object.keys(i).length&&i.timestamp)&&delete t[r]}))}));var r=-1/0;return Object.keys(t).forEach((function(e){var i=t[e];i.timestamp>r&&(r=i.timestamp)})),Object.keys(t).forEach((function(e){var i=t[e];i.timestamp===r&&(i.timestamp=0)})),t.timestamp=r,t}(a[l]||{},r)),a[l]=i}))};if(!s&&t)var u=window.setInterval((function(){"closed"!==d.signalingState?p():window.clearInterval(u)}),t);return s||d.addEventListener("connectionstatechange",(function(){"connected"!==d.connectionState&&"failed"!==d.connectionState||p()})),d};["createDataChannel","close"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){return e(t,this.__rtcStatsId,arguments),r.apply(this,arguments)})})),["addStream","removeStream"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=arguments[0],n=i.getTracks().map((function(e){return e.kind+":"+e.id})).join(",");return e(t,this.__rtcStatsId,i.id+" "+n),r.apply(this,arguments)})})),["addTrack"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=arguments[0],n=[].slice.call(arguments,1);return e(t,this.__rtcStatsId,i.kind+":"+i.id+" "+(n.map((function(e){return"stream:"+e.id})).join(";")||"-")),r.apply(this,arguments)})})),["removeTrack"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=arguments[0].track;return e(t,this.__rtcStatsId,i?i.kind+":"+i.id:"null"),r.apply(this,arguments)})})),["createOffer","createAnswer"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i,n=this.__rtcStatsId,s=arguments;return 1===arguments.length&&"object"==typeof arguments[0]?i=arguments[0]:3===arguments.length&&"object"==typeof arguments[2]&&(i=arguments[2]),e(t,this.__rtcStatsId,i),r.apply(this,i?[i]:void 0).then((function(r){if(e(t+"OnSuccess",n,r),!(s.length>0&&"function"==typeof s[0]))return r;s[0].apply(null,[r])}),(function(r){if(e(t+"OnFailure",n,r.toString()),!(s.length>1&&"function"==typeof s[1]))throw r;s[1].apply(null,[r])}))})})),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=this.__rtcStatsId,n=arguments;return e(t,this.__rtcStatsId,n[0]),r.apply(this,[n[0]]).then((function(){e(t+"OnSuccess",i,void 0),n.length>=2&&"function"==typeof n[1]&&n[1].apply(null,[])}),(function(r){if(e(t+"OnFailure",i,r.toString()),!(n.length>=3&&"function"==typeof n[2]))throw r;n[2].apply(null,[r])}))})})),o.generateCertificate&&Object.defineProperty(c,"generateCertificate",{get:function(){return arguments.length?o.generateCertificate.apply(null,arguments):o.generateCertificate}}),window[r+"RTCPeerConnection"]=c,window[r+"RTCPeerConnection"].prototype=o.prototype}})),r.forEach((function(t){var r=t+(t.length?"GetUserMedia":"getUserMedia");if(navigator[r]){var i=navigator[r].bind(navigator);navigator[r]=function(){e("getUserMedia",null,arguments[0]);var t=arguments[1],r=arguments[2];i(arguments[0],(function(r){e("getUserMediaOnSuccess",null,Bd(r)),t&&t(r)}),(function(t){e("getUserMediaOnFailure",null,t.name),r&&r(t)}))}.bind(navigator)}})),navigator.mediaDevices&&navigator.mediaDevices.getUserMedia){var o=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getUserMedia=function(){return e("navigator.mediaDevices.getUserMedia",null,arguments[0]),o.apply(navigator.mediaDevices,arguments).then((function(t){return e("navigator.mediaDevices.getUserMediaOnSuccess",null,Bd(t)),t}),(function(t){return e("navigator.mediaDevices.getUserMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia){var c=navigator.mediaDevices.getDisplayMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getDisplayMedia=function(){return e("navigator.mediaDevices.getDisplayMedia",null,arguments[0]),c.apply(navigator.mediaDevices,arguments).then((function(t){return e("navigator.mediaDevices.getDisplayMediaOnSuccess",null,Bd(t)),t}),(function(t){return e("navigator.mediaDevices.getDisplayMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}return{resetDelta(){a={}}}},Ud=Wt(Fd);let $d;const zd=new Uint8Array(16);function Vd(){if(!$d&&($d="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!$d))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return $d(zd)}const qd=[];for(let Sy=0;Sy<256;++Sy)qd.push((Sy+256).toString(16).slice(1));var Gd={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Hd(e,t,r){if(Gd.randomUUID&&!t&&!e)return Gd.randomUUID();const i=(e=e||{}).random||(e.rng||Vd)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=i[e];return t}return function(e,t=0){return qd[e[t+0]]+qd[e[t+1]]+qd[e[t+2]]+qd[e[t+3]]+"-"+qd[e[t+4]]+qd[e[t+5]]+"-"+qd[e[t+6]]+qd[e[t+7]]+"-"+qd[e[t+8]]+qd[e[t+9]]+"-"+qd[e[t+10]]+qd[e[t+11]]+qd[e[t+12]]+qd[e[t+13]]+qd[e[t+14]]+qd[e[t+15]]}(i)}var Wd={},Kd={},Jd={};Object.defineProperty(Jd,"__esModule",{value:!0}),Jd.isCorrect=Jd.isInSubnet=void 0,Jd.isInSubnet=function(e){return!(this.subnetMask<e.subnetMask)&&this.mask(e.subnetMask)===e.mask()},Jd.isCorrect=function(e){return function(){return this.addressMinusSuffix===this.correctForm()&&(this.subnetMask===e&&!this.parsedSubnet||this.parsedSubnet===String(this.subnetMask))}};var Qd={};Object.defineProperty(Qd,"__esModule",{value:!0}),Qd.RE_SUBNET_STRING=Qd.RE_ADDRESS=Qd.GROUPS=Qd.BITS=void 0,Qd.BITS=32,Qd.GROUPS=4,Qd.RE_ADDRESS=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g,Qd.RE_SUBNET_STRING=/\/\d{1,2}$/;var Zd={};Object.defineProperty(Zd,"__esModule",{value:!0}),Zd.AddressError=void 0;class Yd extends Error{constructor(e,t){super(e),this.name="AddressError",null!==t&&(this.parseMessage=t)}}Zd.AddressError=Yd;var Xd,el={exports:{}};Xd=el,function(){var e;function t(e,t,r){null!=e&&("number"==typeof e?this.fromNumber(e,t,r):null==t&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,t))}function r(){return new t(null)}var i="undefined"!=typeof navigator;i&&"Microsoft Internet Explorer"==navigator.appName?(t.prototype.am=function(e,t,r,i,n,s){for(var a=32767&t,o=t>>15;--s>=0;){var c=32767&this[e],d=this[e++]>>15,l=o*c+d*a;n=((c=a*c+((32767&l)<<15)+r[i]+(1073741823&n))>>>30)+(l>>>15)+o*d+(n>>>30),r[i++]=1073741823&c}return n},e=30):i&&"Netscape"!=navigator.appName?(t.prototype.am=function(e,t,r,i,n,s){for(;--s>=0;){var a=t*this[e++]+r[i]+n;n=Math.floor(a/67108864),r[i++]=67108863&a}return n},e=26):(t.prototype.am=function(e,t,r,i,n,s){for(var a=16383&t,o=t>>14;--s>=0;){var c=16383&this[e],d=this[e++]>>14,l=o*c+d*a;n=((c=a*c+((16383&l)<<14)+r[i]+n)>>28)+(l>>14)+o*d,r[i++]=268435455&c}return n},e=28),t.prototype.DB=e,t.prototype.DM=(1<<e)-1,t.prototype.DV=1<<e,t.prototype.FV=Math.pow(2,52),t.prototype.F1=52-e,t.prototype.F2=2*e-52;var n,s,a="0123456789abcdefghijklmnopqrstuvwxyz",o=new Array;for(n="0".charCodeAt(0),s=0;s<=9;++s)o[n++]=s;for(n="a".charCodeAt(0),s=10;s<36;++s)o[n++]=s;for(n="A".charCodeAt(0),s=10;s<36;++s)o[n++]=s;function c(e){return a.charAt(e)}function d(e,t){var r=o[e.charCodeAt(t)];return null==r?-1:r}function l(e){var t=r();return t.fromInt(e),t}function p(e){var t,r=1;return 0!=(t=e>>>16)&&(e=t,r+=16),0!=(t=e>>8)&&(e=t,r+=8),0!=(t=e>>4)&&(e=t,r+=4),0!=(t=e>>2)&&(e=t,r+=2),0!=(t=e>>1)&&(e=t,r+=1),r}function u(e){this.m=e}function h(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<<e.DB-15)-1,this.mt2=2*e.t}function m(e,t){return e&t}function f(e,t){return e|t}function g(e,t){return e^t}function v(e,t){return e&~t}function _(e){if(0==e)return-1;var t=0;return 0==(65535&e)&&(e>>=16,t+=16),0==(255&e)&&(e>>=8,t+=8),0==(15&e)&&(e>>=4,t+=4),0==(3&e)&&(e>>=2,t+=2),0==(1&e)&&++t,t}function b(e){for(var t=0;0!=e;)e&=e-1,++t;return t}function y(){}function w(e){return e}function S(e){this.r2=r(),this.q3=r(),t.ONE.dlShiftTo(2*e.t,this.r2),this.mu=this.r2.divide(e),this.m=e}u.prototype.convert=function(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e},u.prototype.revert=function(e){return e},u.prototype.reduce=function(e){e.divRemTo(this.m,null,e)},u.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},u.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},h.prototype.convert=function(e){var i=r();return e.abs().dlShiftTo(this.m.t,i),i.divRemTo(this.m,null,i),e.s<0&&i.compareTo(t.ZERO)>0&&this.m.subTo(i,i),i},h.prototype.revert=function(e){var t=r();return e.copyTo(t),this.reduce(t),t},h.prototype.reduce=function(e){for(;e.t<=this.mt2;)e[e.t++]=0;for(var t=0;t<this.m.t;++t){var r=32767&e[t],i=r*this.mpl+((r*this.mph+(e[t]>>15)*this.mpl&this.um)<<15)&e.DM;for(e[r=t+this.m.t]+=this.m.am(0,i,e,t,0,this.m.t);e[r]>=e.DV;)e[r]-=e.DV,e[++r]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)},h.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},h.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},t.prototype.copyTo=function(e){for(var t=this.t-1;t>=0;--t)e[t]=this[t];e.t=this.t,e.s=this.s},t.prototype.fromInt=function(e){this.t=1,this.s=e<0?-1:0,e>0?this[0]=e:e<-1?this[0]=e+this.DV:this.t=0},t.prototype.fromString=function(e,r){var i;if(16==r)i=4;else if(8==r)i=3;else if(256==r)i=8;else if(2==r)i=1;else if(32==r)i=5;else{if(4!=r)return void this.fromRadix(e,r);i=2}this.t=0,this.s=0;for(var n=e.length,s=!1,a=0;--n>=0;){var o=8==i?255&e[n]:d(e,n);o<0?"-"==e.charAt(n)&&(s=!0):(s=!1,0==a?this[this.t++]=o:a+i>this.DB?(this[this.t-1]|=(o&(1<<this.DB-a)-1)<<a,this[this.t++]=o>>this.DB-a):this[this.t-1]|=o<<a,(a+=i)>=this.DB&&(a-=this.DB))}8==i&&0!=(128&e[0])&&(this.s=-1,a>0&&(this[this.t-1]|=(1<<this.DB-a)-1<<a)),this.clamp(),s&&t.ZERO.subTo(this,this)},t.prototype.clamp=function(){for(var e=this.s&this.DM;this.t>0&&this[this.t-1]==e;)--this.t},t.prototype.dlShiftTo=function(e,t){var r;for(r=this.t-1;r>=0;--r)t[r+e]=this[r];for(r=e-1;r>=0;--r)t[r]=0;t.t=this.t+e,t.s=this.s},t.prototype.drShiftTo=function(e,t){for(var r=e;r<this.t;++r)t[r-e]=this[r];t.t=Math.max(this.t-e,0),t.s=this.s},t.prototype.lShiftTo=function(e,t){var r,i=e%this.DB,n=this.DB-i,s=(1<<n)-1,a=Math.floor(e/this.DB),o=this.s<<i&this.DM;for(r=this.t-1;r>=0;--r)t[r+a+1]=this[r]>>n|o,o=(this[r]&s)<<i;for(r=a-1;r>=0;--r)t[r]=0;t[a]=o,t.t=this.t+a+1,t.s=this.s,t.clamp()},t.prototype.rShiftTo=function(e,t){t.s=this.s;var r=Math.floor(e/this.DB);if(r>=this.t)t.t=0;else{var i=e%this.DB,n=this.DB-i,s=(1<<i)-1;t[0]=this[r]>>i;for(var a=r+1;a<this.t;++a)t[a-r-1]|=(this[a]&s)<<n,t[a-r]=this[a]>>i;i>0&&(t[this.t-r-1]|=(this.s&s)<<n),t.t=this.t-r,t.clamp()}},t.prototype.subTo=function(e,t){for(var r=0,i=0,n=Math.min(e.t,this.t);r<n;)i+=this[r]-e[r],t[r++]=i&this.DM,i>>=this.DB;if(e.t<this.t){for(i-=e.s;r<this.t;)i+=this[r],t[r++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;r<e.t;)i-=e[r],t[r++]=i&this.DM,i>>=this.DB;i-=e.s}t.s=i<0?-1:0,i<-1?t[r++]=this.DV+i:i>0&&(t[r++]=i),t.t=r,t.clamp()},t.prototype.multiplyTo=function(e,r){var i=this.abs(),n=e.abs(),s=i.t;for(r.t=s+n.t;--s>=0;)r[s]=0;for(s=0;s<n.t;++s)r[s+i.t]=i.am(0,n[s],r,s,0,i.t);r.s=0,r.clamp(),this.s!=e.s&&t.ZERO.subTo(r,r)},t.prototype.squareTo=function(e){for(var t=this.abs(),r=e.t=2*t.t;--r>=0;)e[r]=0;for(r=0;r<t.t-1;++r){var i=t.am(r,t[r],e,2*r,0,1);(e[r+t.t]+=t.am(r+1,2*t[r],e,2*r+1,i,t.t-r-1))>=t.DV&&(e[r+t.t]-=t.DV,e[r+t.t+1]=1)}e.t>0&&(e[e.t-1]+=t.am(r,t[r],e,2*r,0,1)),e.s=0,e.clamp()},t.prototype.divRemTo=function(e,i,n){var s=e.abs();if(!(s.t<=0)){var a=this.abs();if(a.t<s.t)return null!=i&&i.fromInt(0),void(null!=n&&this.copyTo(n));null==n&&(n=r());var o=r(),c=this.s,d=e.s,l=this.DB-p(s[s.t-1]);l>0?(s.lShiftTo(l,o),a.lShiftTo(l,n)):(s.copyTo(o),a.copyTo(n));var u=o.t,h=o[u-1];if(0!=h){var m=h*(1<<this.F1)+(u>1?o[u-2]>>this.F2:0),f=this.FV/m,g=(1<<this.F1)/m,v=1<<this.F2,_=n.t,b=_-u,y=null==i?r():i;for(o.dlShiftTo(b,y),n.compareTo(y)>=0&&(n[n.t++]=1,n.subTo(y,n)),t.ONE.dlShiftTo(u,y),y.subTo(o,o);o.t<u;)o[o.t++]=0;for(;--b>=0;){var w=n[--_]==h?this.DM:Math.floor(n[_]*f+(n[_-1]+v)*g);if((n[_]+=o.am(0,w,n,b,0,u))<w)for(o.dlShiftTo(b,y),n.subTo(y,n);n[_]<--w;)n.subTo(y,n)}null!=i&&(n.drShiftTo(u,i),c!=d&&t.ZERO.subTo(i,i)),n.t=u,n.clamp(),l>0&&n.rShiftTo(l,n),c<0&&t.ZERO.subTo(n,n)}}},t.prototype.invDigit=function(){if(this.t<1)return 0;var e=this[0];if(0==(1&e))return 0;var t=3&e;return(t=(t=(t=(t=t*(2-(15&e)*t)&15)*(2-(255&e)*t)&255)*(2-((65535&e)*t&65535))&65535)*(2-e*t%this.DV)%this.DV)>0?this.DV-t:-t},t.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},t.prototype.exp=function(e,i){if(e>4294967295||e<1)return t.ONE;var n=r(),s=r(),a=i.convert(this),o=p(e)-1;for(a.copyTo(n);--o>=0;)if(i.sqrTo(n,s),(e&1<<o)>0)i.mulTo(s,a,n);else{var c=n;n=s,s=c}return i.revert(n)},t.prototype.toString=function(e){if(this.s<0)return"-"+this.negate().toString(e);var t;if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)return this.toRadix(e);t=2}var r,i=(1<<t)-1,n=!1,s="",a=this.t,o=this.DB-a*this.DB%t;if(a-- >0)for(o<this.DB&&(r=this[a]>>o)>0&&(n=!0,s=c(r));a>=0;)o<t?(r=(this[a]&(1<<o)-1)<<t-o,r|=this[--a]>>(o+=this.DB-t)):(r=this[a]>>(o-=t)&i,o<=0&&(o+=this.DB,--a)),r>0&&(n=!0),n&&(s+=c(r));return n?s:"0"},t.prototype.negate=function(){var e=r();return t.ZERO.subTo(this,e),e},t.prototype.abs=function(){return this.s<0?this.negate():this},t.prototype.compareTo=function(e){var t=this.s-e.s;if(0!=t)return t;var r=this.t;if(0!=(t=r-e.t))return this.s<0?-t:t;for(;--r>=0;)if(0!=(t=this[r]-e[r]))return t;return 0},t.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+p(this[this.t-1]^this.s&this.DM)},t.prototype.mod=function(e){var i=r();return this.abs().divRemTo(e,null,i),this.s<0&&i.compareTo(t.ZERO)>0&&e.subTo(i,i),i},t.prototype.modPowInt=function(e,t){var r;return r=e<256||t.isEven()?new u(t):new h(t),this.exp(e,r)},t.ZERO=l(0),t.ONE=l(1),y.prototype.convert=w,y.prototype.revert=w,y.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r)},y.prototype.sqrTo=function(e,t){e.squareTo(t)},S.prototype.convert=function(e){if(e.s<0||e.t>2*this.m.t)return e.mod(this.m);if(e.compareTo(this.m)<0)return e;var t=r();return e.copyTo(t),this.reduce(t),t},S.prototype.revert=function(e){return e},S.prototype.reduce=function(e){for(e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);e.compareTo(this.r2)<0;)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);e.compareTo(this.m)>=0;)e.subTo(this.m,e)},S.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},S.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)};var C,R,T,P=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],k=(1<<26)/P[P.length-1];function D(){var e;e=(new Date).getTime(),R[T++]^=255&e,R[T++]^=e>>8&255,R[T++]^=e>>16&255,R[T++]^=e>>24&255,T>=L&&(T-=L)}if(t.prototype.chunkSize=function(e){return Math.floor(Math.LN2*this.DB/Math.log(e))},t.prototype.toRadix=function(e){if(null==e&&(e=10),0==this.signum()||e<2||e>36)return"0";var t=this.chunkSize(e),i=Math.pow(e,t),n=l(i),s=r(),a=r(),o="";for(this.divRemTo(n,s,a);s.signum()>0;)o=(i+a.intValue()).toString(e).substr(1)+o,s.divRemTo(n,s,a);return a.intValue().toString(e)+o},t.prototype.fromRadix=function(e,r){this.fromInt(0),null==r&&(r=10);for(var i=this.chunkSize(r),n=Math.pow(r,i),s=!1,a=0,o=0,c=0;c<e.length;++c){var l=d(e,c);l<0?"-"==e.charAt(c)&&0==this.signum()&&(s=!0):(o=r*o+l,++a>=i&&(this.dMultiply(n),this.dAddOffset(o,0),a=0,o=0))}a>0&&(this.dMultiply(Math.pow(r,a)),this.dAddOffset(o,0)),s&&t.ZERO.subTo(this,this)},t.prototype.fromNumber=function(e,r,i){if("number"==typeof r)if(e<2)this.fromInt(1);else for(this.fromNumber(e,i),this.testBit(e-1)||this.bitwiseTo(t.ONE.shiftLeft(e-1),f,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(r);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(t.ONE.shiftLeft(e-1),this);else{var n=new Array,s=7&e;n.length=1+(e>>3),r.nextBytes(n),s>0?n[0]&=(1<<s)-1:n[0]=0,this.fromString(n,256)}},t.prototype.bitwiseTo=function(e,t,r){var i,n,s=Math.min(e.t,this.t);for(i=0;i<s;++i)r[i]=t(this[i],e[i]);if(e.t<this.t){for(n=e.s&this.DM,i=s;i<this.t;++i)r[i]=t(this[i],n);r.t=this.t}else{for(n=this.s&this.DM,i=s;i<e.t;++i)r[i]=t(n,e[i]);r.t=e.t}r.s=t(this.s,e.s),r.clamp()},t.prototype.changeBit=function(e,r){var i=t.ONE.shiftLeft(e);return this.bitwiseTo(i,r,i),i},t.prototype.addTo=function(e,t){for(var r=0,i=0,n=Math.min(e.t,this.t);r<n;)i+=this[r]+e[r],t[r++]=i&this.DM,i>>=this.DB;if(e.t<this.t){for(i+=e.s;r<this.t;)i+=this[r],t[r++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;r<e.t;)i+=e[r],t[r++]=i&this.DM,i>>=this.DB;i+=e.s}t.s=i<0?-1:0,i>0?t[r++]=i:i<-1&&(t[r++]=this.DV+i),t.t=r,t.clamp()},t.prototype.dMultiply=function(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()},t.prototype.dAddOffset=function(e,t){if(0!=e){for(;this.t<=t;)this[this.t++]=0;for(this[t]+=e;this[t]>=this.DV;)this[t]-=this.DV,++t>=this.t&&(this[this.t++]=0),++this[t]}},t.prototype.multiplyLowerTo=function(e,t,r){var i,n=Math.min(this.t+e.t,t);for(r.s=0,r.t=n;n>0;)r[--n]=0;for(i=r.t-this.t;n<i;++n)r[n+this.t]=this.am(0,e[n],r,n,0,this.t);for(i=Math.min(e.t,t);n<i;++n)this.am(0,e[n],r,n,0,t-n);r.clamp()},t.prototype.multiplyUpperTo=function(e,t,r){--t;var i=r.t=this.t+e.t-t;for(r.s=0;--i>=0;)r[i]=0;for(i=Math.max(t-this.t,0);i<e.t;++i)r[this.t+i-t]=this.am(t-i,e[i],r,0,0,this.t+i-t);r.clamp(),r.drShiftTo(1,r)},t.prototype.modInt=function(e){if(e<=0)return 0;var t=this.DV%e,r=this.s<0?e-1:0;if(this.t>0)if(0==t)r=this[0]%e;else for(var i=this.t-1;i>=0;--i)r=(t*r+this[i])%e;return r},t.prototype.millerRabin=function(e){var i=this.subtract(t.ONE),n=i.getLowestSetBit();if(n<=0)return!1;var s=i.shiftRight(n);(e=e+1>>1)>P.length&&(e=P.length);for(var a=r(),o=0;o<e;++o){a.fromInt(P[Math.floor(Math.random()*P.length)]);var c=a.modPow(s,this);if(0!=c.compareTo(t.ONE)&&0!=c.compareTo(i)){for(var d=1;d++<n&&0!=c.compareTo(i);)if(0==(c=c.modPowInt(2,this)).compareTo(t.ONE))return!1;if(0!=c.compareTo(i))return!1}}return!0},t.prototype.clone=function(){var e=r();return this.copyTo(e),e},t.prototype.intValue=function(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]},t.prototype.byteValue=function(){return 0==this.t?this.s:this[0]<<24>>24},t.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},t.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},t.prototype.toByteArray=function(){var e=this.t,t=new Array;t[0]=this.s;var r,i=this.DB-e*this.DB%8,n=0;if(e-- >0)for(i<this.DB&&(r=this[e]>>i)!=(this.s&this.DM)>>i&&(t[n++]=r|this.s<<this.DB-i);e>=0;)i<8?(r=(this[e]&(1<<i)-1)<<8-i,r|=this[--e]>>(i+=this.DB-8)):(r=this[e]>>(i-=8)&255,i<=0&&(i+=this.DB,--e)),0!=(128&r)&&(r|=-256),0==n&&(128&this.s)!=(128&r)&&++n,(n>0||r!=this.s)&&(t[n++]=r);return t},t.prototype.equals=function(e){return 0==this.compareTo(e)},t.prototype.min=function(e){return this.compareTo(e)<0?this:e},t.prototype.max=function(e){return this.compareTo(e)>0?this:e},t.prototype.and=function(e){var t=r();return this.bitwiseTo(e,m,t),t},t.prototype.or=function(e){var t=r();return this.bitwiseTo(e,f,t),t},t.prototype.xor=function(e){var t=r();return this.bitwiseTo(e,g,t),t},t.prototype.andNot=function(e){var t=r();return this.bitwiseTo(e,v,t),t},t.prototype.not=function(){for(var e=r(),t=0;t<this.t;++t)e[t]=this.DM&~this[t];return e.t=this.t,e.s=~this.s,e},t.prototype.shiftLeft=function(e){var t=r();return e<0?this.rShiftTo(-e,t):this.lShiftTo(e,t),t},t.prototype.shiftRight=function(e){var t=r();return e<0?this.lShiftTo(-e,t):this.rShiftTo(e,t),t},t.prototype.getLowestSetBit=function(){for(var e=0;e<this.t;++e)if(0!=this[e])return e*this.DB+_(this[e]);return this.s<0?this.t*this.DB:-1},t.prototype.bitCount=function(){for(var e=0,t=this.s&this.DM,r=0;r<this.t;++r)e+=b(this[r]^t);return e},t.prototype.testBit=function(e){var t=Math.floor(e/this.DB);return t>=this.t?0!=this.s:0!=(this[t]&1<<e%this.DB)},t.prototype.setBit=function(e){return this.changeBit(e,f)},t.prototype.clearBit=function(e){return this.changeBit(e,v)},t.prototype.flipBit=function(e){return this.changeBit(e,g)},t.prototype.add=function(e){var t=r();return this.addTo(e,t),t},t.prototype.subtract=function(e){var t=r();return this.subTo(e,t),t},t.prototype.multiply=function(e){var t=r();return this.multiplyTo(e,t),t},t.prototype.divide=function(e){var t=r();return this.divRemTo(e,t,null),t},t.prototype.remainder=function(e){var t=r();return this.divRemTo(e,null,t),t},t.prototype.divideAndRemainder=function(e){var t=r(),i=r();return this.divRemTo(e,t,i),new Array(t,i)},t.prototype.modPow=function(e,t){var i,n,s=e.bitLength(),a=l(1);if(s<=0)return a;i=s<18?1:s<48?3:s<144?4:s<768?5:6,n=s<8?new u(t):t.isEven()?new S(t):new h(t);var o=new Array,c=3,d=i-1,m=(1<<i)-1;if(o[1]=n.convert(this),i>1){var f=r();for(n.sqrTo(o[1],f);c<=m;)o[c]=r(),n.mulTo(f,o[c-2],o[c]),c+=2}var g,v,_=e.t-1,b=!0,y=r();for(s=p(e[_])-1;_>=0;){for(s>=d?g=e[_]>>s-d&m:(g=(e[_]&(1<<s+1)-1)<<d-s,_>0&&(g|=e[_-1]>>this.DB+s-d)),c=i;0==(1&g);)g>>=1,--c;if((s-=c)<0&&(s+=this.DB,--_),b)o[g].copyTo(a),b=!1;else{for(;c>1;)n.sqrTo(a,y),n.sqrTo(y,a),c-=2;c>0?n.sqrTo(a,y):(v=a,a=y,y=v),n.mulTo(y,o[g],a)}for(;_>=0&&0==(e[_]&1<<s);)n.sqrTo(a,y),v=a,a=y,y=v,--s<0&&(s=this.DB-1,--_)}return n.revert(a)},t.prototype.modInverse=function(e){var r=e.isEven();if(this.isEven()&&r||0==e.signum())return t.ZERO;for(var i=e.clone(),n=this.clone(),s=l(1),a=l(0),o=l(0),c=l(1);0!=i.signum();){for(;i.isEven();)i.rShiftTo(1,i),r?(s.isEven()&&a.isEven()||(s.addTo(this,s),a.subTo(e,a)),s.rShiftTo(1,s)):a.isEven()||a.subTo(e,a),a.rShiftTo(1,a);for(;n.isEven();)n.rShiftTo(1,n),r?(o.isEven()&&c.isEven()||(o.addTo(this,o),c.subTo(e,c)),o.rShiftTo(1,o)):c.isEven()||c.subTo(e,c),c.rShiftTo(1,c);i.compareTo(n)>=0?(i.subTo(n,i),r&&s.subTo(o,s),a.subTo(c,a)):(n.subTo(i,n),r&&o.subTo(s,o),c.subTo(a,c))}return 0!=n.compareTo(t.ONE)?t.ZERO:c.compareTo(e)>=0?c.subtract(e):c.signum()<0?(c.addTo(e,c),c.signum()<0?c.add(e):c):c},t.prototype.pow=function(e){return this.exp(e,new y)},t.prototype.gcd=function(e){var t=this.s<0?this.negate():this.clone(),r=e.s<0?e.negate():e.clone();if(t.compareTo(r)<0){var i=t;t=r,r=i}var n=t.getLowestSetBit(),s=r.getLowestSetBit();if(s<0)return t;for(n<s&&(s=n),s>0&&(t.rShiftTo(s,t),r.rShiftTo(s,r));t.signum()>0;)(n=t.getLowestSetBit())>0&&t.rShiftTo(n,t),(n=r.getLowestSetBit())>0&&r.rShiftTo(n,r),t.compareTo(r)>=0?(t.subTo(r,t),t.rShiftTo(1,t)):(r.subTo(t,r),r.rShiftTo(1,r));return s>0&&r.lShiftTo(s,r),r},t.prototype.isProbablePrime=function(e){var t,r=this.abs();if(1==r.t&&r[0]<=P[P.length-1]){for(t=0;t<P.length;++t)if(r[0]==P[t])return!0;return!1}if(r.isEven())return!1;for(t=1;t<P.length;){for(var i=P[t],n=t+1;n<P.length&&i<k;)i*=P[n++];for(i=r.modInt(i);t<n;)if(i%P[t++]==0)return!1}return r.millerRabin(e)},t.prototype.square=function(){var e=r();return this.squareTo(e),e},t.prototype.Barrett=S,null==R){var O;if(R=new Array,T=0,"undefined"!=typeof window&&window.crypto)if(window.crypto.getRandomValues){var E=new Uint8Array(32);for(window.crypto.getRandomValues(E),O=0;O<32;++O)R[T++]=E[O]}else if("Netscape"==navigator.appName&&navigator.appVersion<"5"){var I=window.crypto.random(32);for(O=0;O<I.length;++O)R[T++]=255&I.charCodeAt(O)}for(;T<L;)O=Math.floor(65536*Math.random()),R[T++]=O>>>8,R[T++]=255&O;T=0,D()}function x(){if(null==C){for(D(),(C=new M).init(R),T=0;T<R.length;++T)R[T]=0;T=0}return C.next()}function j(){}function M(){this.i=0,this.j=0,this.S=new Array}j.prototype.nextBytes=function(e){var t;for(t=0;t<e.length;++t)e[t]=x()},M.prototype.init=function(e){var t,r,i;for(t=0;t<256;++t)this.S[t]=t;for(r=0,t=0;t<256;++t)r=r+this.S[t]+e[t%e.length]&255,i=this.S[t],this.S[t]=this.S[r],this.S[r]=i;this.i=0,this.j=0},M.prototype.next=function(){var e;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,e=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=e,this.S[e+this.S[this.i]&255]};var L=256;Xd.exports={default:t,BigInteger:t,SecureRandom:j}}.call(Ht);var tl=el.exports,rl={};!function(e){!function(){var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function r(e){return function(e,i){var n,s,a,o,c,d,l,p,u,h=1,m=e.length,f="";for(s=0;s<m;s++)if("string"==typeof e[s])f+=e[s];else if("object"==typeof e[s]){if((o=e[s]).keys)for(n=i[h],a=0;a<o.keys.length;a++){if(null==n)throw new Error(r('[sprintf] Cannot access property "%s" of undefined value "%s"',o.keys[a],o.keys[a-1]));n=n[o.keys[a]]}else n=o.param_no?i[o.param_no]:i[h++];if(t.not_type.test(o.type)&&t.not_primitive.test(o.type)&&n instanceof Function&&(n=n()),t.numeric_arg.test(o.type)&&"number"!=typeof n&&isNaN(n))throw new TypeError(r("[sprintf] expecting number but found %T",n));switch(t.number.test(o.type)&&(p=n>=0),o.type){case"b":n=parseInt(n,10).toString(2);break;case"c":n=String.fromCharCode(parseInt(n,10));break;case"d":case"i":n=parseInt(n,10);break;case"j":n=JSON.stringify(n,null,o.width?parseInt(o.width):0);break;case"e":n=o.precision?parseFloat(n).toExponential(o.precision):parseFloat(n).toExponential();break;case"f":n=o.precision?parseFloat(n).toFixed(o.precision):parseFloat(n);break;case"g":n=o.precision?String(Number(n.toPrecision(o.precision))):parseFloat(n);break;case"o":n=(parseInt(n,10)>>>0).toString(8);break;case"s":n=String(n),n=o.precision?n.substring(0,o.precision):n;break;case"t":n=String(!!n),n=o.precision?n.substring(0,o.precision):n;break;case"T":n=Object.prototype.toString.call(n).slice(8,-1).toLowerCase(),n=o.precision?n.substring(0,o.precision):n;break;case"u":n=parseInt(n,10)>>>0;break;case"v":n=n.valueOf(),n=o.precision?n.substring(0,o.precision):n;break;case"x":n=(parseInt(n,10)>>>0).toString(16);break;case"X":n=(parseInt(n,10)>>>0).toString(16).toUpperCase()}t.json.test(o.type)?f+=n:(!t.number.test(o.type)||p&&!o.sign?u="":(u=p?"+":"-",n=n.toString().replace(t.sign,"")),d=o.pad_char?"0"===o.pad_char?"0":o.pad_char.charAt(1):" ",l=o.width-(u+n).length,c=o.width&&l>0?d.repeat(l):"",f+=o.align?u+n+c:"0"===d?u+c+n:c+u+n)}return f}(function(e){if(n[e])return n[e];var r,i=e,s=[],a=0;for(;i;){if(null!==(r=t.text.exec(i)))s.push(r[0]);else if(null!==(r=t.modulo.exec(i)))s.push("%");else{if(null===(r=t.placeholder.exec(i)))throw new SyntaxError("[sprintf] unexpected placeholder");if(r[2]){a|=1;var o=[],c=r[2],d=[];if(null===(d=t.key.exec(c)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(o.push(d[1]);""!==(c=c.substring(d[0].length));)if(null!==(d=t.key_access.exec(c)))o.push(d[1]);else{if(null===(d=t.index_access.exec(c)))throw new SyntaxError("[sprintf] failed to parse named argument key");o.push(d[1])}r[2]=o}else a|=2;if(3===a)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");s.push({placeholder:r[0],param_no:r[1],keys:r[2],sign:r[3],pad_char:r[4],align:r[5],width:r[6],precision:r[7],type:r[8]})}i=i.substring(r[0].length)}return n[e]=s}(e),arguments)}function i(e,t){return r.apply(null,[e].concat(t||[]))}var n=Object.create(null);e.sprintf=r,e.vsprintf=i,"undefined"!=typeof window&&(window.sprintf=r,window.vsprintf=i)}()}(rl);var il=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),nl=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),sl=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&il(t,e,r);return nl(t,e),t};Object.defineProperty(Kd,"__esModule",{value:!0}),Kd.Address4=void 0;const al=sl(Jd),ol=sl(Qd),cl=Zd,dl=tl,ll=rl;class pl{constructor(e){this.groups=ol.GROUPS,this.parsedAddress=[],this.parsedSubnet="",this.subnet="/32",this.subnetMask=32,this.v4=!0,this.isCorrect=al.isCorrect(ol.BITS),this.isInSubnet=al.isInSubnet,this.address=e;const t=ol.RE_SUBNET_STRING.exec(e);if(t){if(this.parsedSubnet=t[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,this.subnetMask<0||this.subnetMask>ol.BITS)throw new cl.AddressError("Invalid subnet mask.");e=e.replace(ol.RE_SUBNET_STRING,"")}this.addressMinusSuffix=e,this.parsedAddress=this.parse(e)}static isValid(e){try{return new pl(e),!0}catch(e){return!1}}parse(e){const t=e.split(".");if(!e.match(ol.RE_ADDRESS))throw new cl.AddressError("Invalid IPv4 address.");return t}correctForm(){return this.parsedAddress.map((e=>parseInt(e,10))).join(".")}static fromHex(e){const t=e.replace(/:/g,"").padStart(8,"0"),r=[];let i;for(i=0;i<8;i+=2){const e=t.slice(i,i+2);r.push(parseInt(e,16))}return new pl(r.join("."))}static fromInteger(e){return pl.fromHex(e.toString(16))}static fromArpa(e){const t=e.replace(/(\.in-addr\.arpa)?\.$/,"").split(".").reverse().join(".");return new pl(t)}toHex(){return this.parsedAddress.map((e=>(0,ll.sprintf)("%02x",parseInt(e,10)))).join(":")}toArray(){return this.parsedAddress.map((e=>parseInt(e,10)))}toGroup6(){const e=[];let t;for(t=0;t<ol.GROUPS;t+=2){const r=(0,ll.sprintf)("%02x%02x",parseInt(this.parsedAddress[t],10),parseInt(this.parsedAddress[t+1],10));e.push((0,ll.sprintf)("%x",parseInt(r,16)))}return e.join(":")}bigInteger(){return new dl.BigInteger(this.parsedAddress.map((e=>(0,ll.sprintf)("%02x",parseInt(e,10)))).join(""),16)}_startAddress(){return new dl.BigInteger(this.mask()+"0".repeat(ol.BITS-this.subnetMask),2)}startAddress(){return pl.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new dl.BigInteger("1");return pl.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new dl.BigInteger(this.mask()+"1".repeat(ol.BITS-this.subnetMask),2)}endAddress(){return pl.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new dl.BigInteger("1");return pl.fromBigInteger(this._endAddress().subtract(e))}static fromBigInteger(e){return pl.fromInteger(parseInt(e.toString(),10))}mask(e){return void 0===e&&(e=this.subnetMask),this.getBitsBase2(0,e)}getBitsBase2(e,t){return this.binaryZeroPad().slice(e,t)}reverseForm(e){e||(e={});const t=this.correctForm().split(".").reverse().join(".");return e.omitSuffix?t:(0,ll.sprintf)("%s.in-addr.arpa.",t)}isMulticast(){return this.isInSubnet(new pl("224.0.0.0/4"))}binaryZeroPad(){return this.bigInteger().toString(2).padStart(ol.BITS,"0")}groupForV6(){const e=this.parsedAddress;return this.address.replace(ol.RE_ADDRESS,(0,ll.sprintf)('<span class="hover-group group-v4 group-6">%s</span>.<span class="hover-group group-v4 group-7">%s</span>',e.slice(0,2).join("."),e.slice(2,4).join(".")))}}Kd.Address4=pl;var ul={},hl={};Object.defineProperty(hl,"__esModule",{value:!0}),hl.RE_URL_WITH_PORT=hl.RE_URL=hl.RE_ZONE_STRING=hl.RE_SUBNET_STRING=hl.RE_BAD_ADDRESS=hl.RE_BAD_CHARACTERS=hl.TYPES=hl.SCOPES=hl.GROUPS=hl.BITS=void 0,hl.BITS=128,hl.GROUPS=8,hl.SCOPES={0:"Reserved",1:"Interface local",2:"Link local",4:"Admin local",5:"Site local",8:"Organization local",14:"Global",15:"Reserved"},hl.TYPES={"ff01::1/128":"Multicast (All nodes on this interface)","ff01::2/128":"Multicast (All routers on this interface)","ff02::1/128":"Multicast (All nodes on this link)","ff02::2/128":"Multicast (All routers on this link)","ff05::2/128":"Multicast (All routers in this site)","ff02::5/128":"Multicast (OSPFv3 AllSPF routers)","ff02::6/128":"Multicast (OSPFv3 AllDR routers)","ff02::9/128":"Multicast (RIP routers)","ff02::a/128":"Multicast (EIGRP routers)","ff02::d/128":"Multicast (PIM routers)","ff02::16/128":"Multicast (MLDv2 reports)","ff01::fb/128":"Multicast (mDNSv6)","ff02::fb/128":"Multicast (mDNSv6)","ff05::fb/128":"Multicast (mDNSv6)","ff02::1:2/128":"Multicast (All DHCP servers and relay agents on this link)","ff05::1:2/128":"Multicast (All DHCP servers and relay agents in this site)","ff02::1:3/128":"Multicast (All DHCP servers on this link)","ff05::1:3/128":"Multicast (All DHCP servers in this site)","::/128":"Unspecified","::1/128":"Loopback","ff00::/8":"Multicast","fe80::/10":"Link-local unicast"},hl.RE_BAD_CHARACTERS=/([^0-9a-f:/%])/gi,hl.RE_BAD_ADDRESS=/([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi,hl.RE_SUBNET_STRING=/\/\d{1,3}(?=%|$)/,hl.RE_ZONE_STRING=/%.*$/,hl.RE_URL=new RegExp(/^\[{0,1}([0-9a-f:]+)\]{0,1}/),hl.RE_URL_WITH_PORT=new RegExp(/\[([0-9a-f:]+)\]:([0-9]{1,5})/);var ml={};Object.defineProperty(ml,"__esModule",{value:!0}),ml.simpleGroup=ml.spanLeadingZeroes=ml.spanAll=ml.spanAllZeroes=void 0;const fl=rl;function gl(e){return e.replace(/(0+)/g,'<span class="zero">$1</span>')}function vl(e){return e.replace(/^(0+)/,'<span class="zero">$1</span>')}ml.spanAllZeroes=gl,ml.spanAll=function(e,t=0){return e.split("").map(((e,r)=>(0,fl.sprintf)('<span class="digit value-%s position-%d">%s</span>',e,r+t,gl(e)))).join("")},ml.spanLeadingZeroes=function(e){return e.split(":").map((e=>vl(e))).join(":")},ml.simpleGroup=function(e,t=0){return e.split(":").map(((e,r)=>/group-v4/.test(e)?e:(0,fl.sprintf)('<span class="hover-group group-%d">%s</span>',r+t,vl(e))))};var _l={},bl=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),yl=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),wl=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&bl(t,e,r);return yl(t,e),t};Object.defineProperty(_l,"__esModule",{value:!0}),_l.possibleElisions=_l.simpleRegularExpression=_l.ADDRESS_BOUNDARY=_l.padGroup=_l.groupPossibilities=void 0;const Sl=wl(hl),Cl=rl;function Rl(e){return(0,Cl.sprintf)("(%s)",e.join("|"))}function Tl(e){return e.length<4?(0,Cl.sprintf)("0{0,%d}%s",4-e.length,e):e}_l.groupPossibilities=Rl,_l.padGroup=Tl,_l.ADDRESS_BOUNDARY="[^A-Fa-f0-9:]",_l.simpleRegularExpression=function(e){const t=[];e.forEach(((e,r)=>{0===parseInt(e,16)&&t.push(r)}));const r=t.map((t=>e.map(((e,r)=>{if(r===t){const t=0===r||r===Sl.GROUPS-1?":":"";return Rl([Tl(e),t])}return Tl(e)})).join(":")));return r.push(e.map(Tl).join(":")),Rl(r)},_l.possibleElisions=function(e,t,r){const i=t?"":":",n=r?"":":",s=[];t||r||s.push("::"),t&&r&&s.push(""),(r&&!t||!r&&t)&&s.push(":"),s.push((0,Cl.sprintf)("%s(:0{1,4}){1,%d}",i,e-1)),s.push((0,Cl.sprintf)("(0{1,4}:){1,%d}%s",e-1,n)),s.push((0,Cl.sprintf)("(0{1,4}:){%d}0{1,4}",e-1));for(let t=1;t<e-1;t++)for(let r=1;r<e-t;r++)s.push((0,Cl.sprintf)("(0{1,4}:){%d}:(0{1,4}:){%d}0{1,4}",r,e-r-t-1));return Rl(s)};var Pl=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),kl=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Dl=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Pl(t,e,r);return kl(t,e),t};Object.defineProperty(ul,"__esModule",{value:!0}),ul.Address6=void 0;const Ol=Dl(Jd),El=Dl(Qd),Il=Dl(hl),xl=Dl(ml),jl=Kd,Ml=_l,Ll=Zd,Al=tl,Nl=rl;function Bl(e){if(!e)throw new Error("Assertion failed.")}function Fl(e){return e=(e=e.replace(/^(0{1,})([1-9]+)$/,'<span class="parse-error">$1</span>$2')).replace(/^(0{1,})(0)$/,'<span class="parse-error">$1</span>$2')}function Ul(e){return(0,Nl.sprintf)("%04x",parseInt(e,16))}function $l(e){return 255&e}class zl{constructor(e,t){this.addressMinusSuffix="",this.parsedSubnet="",this.subnet="/128",this.subnetMask=128,this.v4=!1,this.zone="",this.isInSubnet=Ol.isInSubnet,this.isCorrect=Ol.isCorrect(Il.BITS),this.groups=void 0===t?Il.GROUPS:t,this.address=e;const r=Il.RE_SUBNET_STRING.exec(e);if(r){if(this.parsedSubnet=r[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,Number.isNaN(this.subnetMask)||this.subnetMask<0||this.subnetMask>Il.BITS)throw new Ll.AddressError("Invalid subnet mask.");e=e.replace(Il.RE_SUBNET_STRING,"")}else if(/\//.test(e))throw new Ll.AddressError("Invalid subnet mask.");const i=Il.RE_ZONE_STRING.exec(e);i&&(this.zone=i[0],e=e.replace(Il.RE_ZONE_STRING,"")),this.addressMinusSuffix=e,this.parsedAddress=this.parse(this.addressMinusSuffix)}static isValid(e){try{return new zl(e),!0}catch(e){return!1}}static fromBigInteger(e){const t=e.toString(16).padStart(32,"0"),r=[];let i;for(i=0;i<Il.GROUPS;i++)r.push(t.slice(4*i,4*(i+1)));return new zl(r.join(":"))}static fromURL(e){let t,r,i=null;if(-1!==e.indexOf("[")&&-1!==e.indexOf("]:")){if(r=Il.RE_URL_WITH_PORT.exec(e),null===r)return{error:"failed to parse address with port",address:null,port:null};t=r[1],i=r[2]}else if(-1!==e.indexOf("/")){if(e=e.replace(/^[a-z0-9]+:\/\//,""),r=Il.RE_URL.exec(e),null===r)return{error:"failed to parse address from URL",address:null,port:null};t=r[1]}else t=e;return i?(i=parseInt(i,10),(i<0||i>65536)&&(i=null)):i=null,{address:new zl(t),port:i}}static fromAddress4(e){const t=new jl.Address4(e),r=Il.BITS-(El.BITS-t.subnetMask);return new zl(`::ffff:${t.correctForm()}/${r}`)}static fromArpa(e){let t=e.replace(/(\.ip6\.arpa)?\.$/,"");if(63!==t.length)throw new Ll.AddressError("Invalid 'ip6.arpa' form.");const r=t.split(".").reverse();for(let e=7;e>0;e--){const t=4*e;r.splice(t,0,":")}return t=r.join(""),new zl(t)}microsoftTranscription(){return(0,Nl.sprintf)("%s.ipv6-literal.net",this.correctForm().replace(/:/g,"-"))}mask(e=this.subnetMask){return this.getBitsBase2(0,e)}possibleSubnets(e=128){const t=Il.BITS-this.subnetMask-Math.abs(e-Il.BITS);return t<0?"0":function(e){const t=/(\d+)(\d{3})/;for(;t.test(e);)e=e.replace(t,"$1,$2");return e}(new Al.BigInteger("2",10).pow(t).toString(10))}_startAddress(){return new Al.BigInteger(this.mask()+"0".repeat(Il.BITS-this.subnetMask),2)}startAddress(){return zl.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new Al.BigInteger("1");return zl.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new Al.BigInteger(this.mask()+"1".repeat(Il.BITS-this.subnetMask),2)}endAddress(){return zl.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new Al.BigInteger("1");return zl.fromBigInteger(this._endAddress().subtract(e))}getScope(){let e=Il.SCOPES[this.getBits(12,16).intValue()];return"Global unicast"===this.getType()&&"Link local"!==e&&(e="Global"),e||"Unknown"}getType(){for(const e of Object.keys(Il.TYPES))if(this.isInSubnet(new zl(e)))return Il.TYPES[e];return"Global unicast"}getBits(e,t){return new Al.BigInteger(this.getBitsBase2(e,t),2)}getBitsBase2(e,t){return this.binaryZeroPad().slice(e,t)}getBitsBase16(e,t){const r=t-e;if(r%4!=0)throw new Error("Length of bits to retrieve must be divisible by four");return this.getBits(e,t).toString(16).padStart(r/4,"0")}getBitsPastSubnet(){return this.getBitsBase2(this.subnetMask,Il.BITS)}reverseForm(e){e||(e={});const t=Math.floor(this.subnetMask/4),r=this.canonicalForm().replace(/:/g,"").split("").slice(0,t).reverse().join(".");return t>0?e.omitSuffix?r:(0,Nl.sprintf)("%s.ip6.arpa.",r):e.omitSuffix?"":"ip6.arpa."}correctForm(){let e,t=[],r=0;const i=[];for(e=0;e<this.parsedAddress.length;e++){const t=parseInt(this.parsedAddress[e],16);0===t&&r++,0!==t&&r>0&&(r>1&&i.push([e-r,e-1]),r=0)}r>1&&i.push([this.parsedAddress.length-r,this.parsedAddress.length-1]);const n=i.map((e=>e[1]-e[0]+1));if(i.length>0){const e=n.indexOf(Math.max(...n));t=function(e,t){const r=[],i=[];let n;for(n=0;n<e.length;n++)n<t[0]?r.push(e[n]):n>t[1]&&i.push(e[n]);return r.concat(["compact"]).concat(i)}(this.parsedAddress,i[e])}else t=this.parsedAddress;for(e=0;e<t.length;e++)"compact"!==t[e]&&(t[e]=parseInt(t[e],16).toString(16));let s=t.join(":");return s=s.replace(/^compact$/,"::"),s=s.replace(/^compact|compact$/,":"),s=s.replace(/compact/,""),s}binaryZeroPad(){return this.bigInteger().toString(2).padStart(Il.BITS,"0")}parse4in6(e){const t=e.split(":"),r=t.slice(-1)[0].match(El.RE_ADDRESS);if(r){this.parsedAddress4=r[0],this.address4=new jl.Address4(this.parsedAddress4);for(let t=0;t<this.address4.groups;t++)if(/^0[0-9]+/.test(this.address4.parsedAddress[t]))throw new Ll.AddressError("IPv4 addresses can't have leading zeroes.",e.replace(El.RE_ADDRESS,this.address4.parsedAddress.map(Fl).join(".")));this.v4=!0,t[t.length-1]=this.address4.toGroup6(),e=t.join(":")}return e}parse(e){const t=(e=this.parse4in6(e)).match(Il.RE_BAD_CHARACTERS);if(t)throw new Ll.AddressError((0,Nl.sprintf)("Bad character%s detected in address: %s",t.length>1?"s":"",t.join("")),e.replace(Il.RE_BAD_CHARACTERS,'<span class="parse-error">$1</span>'));const r=e.match(Il.RE_BAD_ADDRESS);if(r)throw new Ll.AddressError((0,Nl.sprintf)("Address failed regex: %s",r.join("")),e.replace(Il.RE_BAD_ADDRESS,'<span class="parse-error">$1</span>'));let i=[];const n=e.split("::");if(2===n.length){let e=n[0].split(":"),t=n[1].split(":");1===e.length&&""===e[0]&&(e=[]),1===t.length&&""===t[0]&&(t=[]);const r=this.groups-(e.length+t.length);if(!r)throw new Ll.AddressError("Error parsing groups");this.elidedGroups=r,this.elisionBegin=e.length,this.elisionEnd=e.length+this.elidedGroups,i=i.concat(e);for(let e=0;e<r;e++)i.push("0");i=i.concat(t)}else{if(1!==n.length)throw new Ll.AddressError("Too many :: groups found");i=e.split(":"),this.elidedGroups=0}if(i=i.map((e=>(0,Nl.sprintf)("%x",parseInt(e,16)))),i.length!==this.groups)throw new Ll.AddressError("Incorrect number of groups found");return i}canonicalForm(){return this.parsedAddress.map(Ul).join(":")}decimal(){return this.parsedAddress.map((e=>(0,Nl.sprintf)("%05d",parseInt(e,16)))).join(":")}bigInteger(){return new Al.BigInteger(this.parsedAddress.map(Ul).join(""),16)}to4(){const e=this.binaryZeroPad().split("");return jl.Address4.fromHex(new Al.BigInteger(e.slice(96,128).join(""),2).toString(16))}to4in6(){const e=this.to4(),t=new zl(this.parsedAddress.slice(0,6).join(":"),6).correctForm();let r="";return/:$/.test(t)||(r=":"),t+r+e.address}inspectTeredo(){const e=this.getBitsBase16(0,32),t=this.getBits(80,96).xor(new Al.BigInteger("ffff",16)).toString(),r=jl.Address4.fromHex(this.getBitsBase16(32,64)),i=jl.Address4.fromHex(this.getBits(96,128).xor(new Al.BigInteger("ffffffff",16)).toString(16)),n=this.getBits(64,80),s=this.getBitsBase2(64,80),a=n.testBit(15),o=n.testBit(14),c=n.testBit(8),d=n.testBit(9),l=new Al.BigInteger(s.slice(2,6)+s.slice(8,16),2).toString(10);return{prefix:(0,Nl.sprintf)("%s:%s",e.slice(0,4),e.slice(4,8)),server4:r.address,client4:i.address,flags:s,coneNat:a,microsoft:{reserved:o,universalLocal:d,groupIndividual:c,nonce:l},udpPort:t}}inspect6to4(){const e=this.getBitsBase16(0,16),t=jl.Address4.fromHex(this.getBitsBase16(16,48));return{prefix:(0,Nl.sprintf)("%s",e.slice(0,4)),gateway:t.address}}to6to4(){if(!this.is4())return null;const e=["2002",this.getBitsBase16(96,112),this.getBitsBase16(112,128),"","/16"].join(":");return new zl(e)}toByteArray(){const e=this.bigInteger().toByteArray();return 17===e.length&&0===e[0]?e.slice(1):e}toUnsignedByteArray(){return this.toByteArray().map($l)}static fromByteArray(e){return this.fromUnsignedByteArray(e.map($l))}static fromUnsignedByteArray(e){const t=new Al.BigInteger("256",10);let r=new Al.BigInteger("0",10),i=new Al.BigInteger("1",10);for(let n=e.length-1;n>=0;n--)r=r.add(i.multiply(new Al.BigInteger(e[n].toString(10),10))),i=i.multiply(t);return zl.fromBigInteger(r)}isCanonical(){return this.addressMinusSuffix===this.canonicalForm()}isLinkLocal(){return"1111111010000000000000000000000000000000000000000000000000000000"===this.getBitsBase2(0,64)}isMulticast(){return"Multicast"===this.getType()}is4(){return this.v4}isTeredo(){return this.isInSubnet(new zl("2001::/32"))}is6to4(){return this.isInSubnet(new zl("2002::/16"))}isLoopback(){return"Loopback"===this.getType()}href(e){return e=void 0===e?"":(0,Nl.sprintf)(":%s",e),(0,Nl.sprintf)("http://[%s]%s/",this.correctForm(),e)}link(e){e||(e={}),void 0===e.className&&(e.className=""),void 0===e.prefix&&(e.prefix="/#address="),void 0===e.v4&&(e.v4=!1);let t=this.correctForm;return e.v4&&(t=this.to4in6),e.className?(0,Nl.sprintf)('<a href="%1$s%2$s" class="%3$s">%2$s</a>',e.prefix,t.call(this),e.className):(0,Nl.sprintf)('<a href="%1$s%2$s">%2$s</a>',e.prefix,t.call(this))}group(){if(0===this.elidedGroups)return xl.simpleGroup(this.address).join(":");Bl("number"==typeof this.elidedGroups),Bl("number"==typeof this.elisionBegin);const e=[],[t,r]=this.address.split("::");t.length?e.push(...xl.simpleGroup(t)):e.push("");const i=["hover-group"];for(let e=this.elisionBegin;e<this.elisionBegin+this.elidedGroups;e++)i.push((0,Nl.sprintf)("group-%d",e));return e.push((0,Nl.sprintf)('<span class="%s"></span>',i.join(" "))),r.length?e.push(...xl.simpleGroup(r,this.elisionEnd)):e.push(""),this.is4()&&(Bl(this.address4 instanceof jl.Address4),e.pop(),e.push(this.address4.groupForV6())),e.join(":")}regularExpressionString(e=!1){let t=[];const r=new zl(this.correctForm());if(0===r.elidedGroups)t.push((0,Ml.simpleRegularExpression)(r.parsedAddress));else if(r.elidedGroups===Il.GROUPS)t.push((0,Ml.possibleElisions)(Il.GROUPS));else{const e=r.address.split("::");e[0].length&&t.push((0,Ml.simpleRegularExpression)(e[0].split(":"))),Bl("number"==typeof r.elidedGroups),t.push((0,Ml.possibleElisions)(r.elidedGroups,0!==e[0].length,0!==e[1].length)),e[1].length&&t.push((0,Ml.simpleRegularExpression)(e[1].split(":"))),t=[t.join(":")]}return e||(t=["(?=^|",Ml.ADDRESS_BOUNDARY,"|[^\\w\\:])(",...t,")(?=[^\\w\\:]|",Ml.ADDRESS_BOUNDARY,"|$)"]),t.join("")}regularExpression(e=!1){return new RegExp(this.regularExpressionString(e),"i")}}ul.Address6=zl,function(e){var t=Ht&&Ht.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=Ht&&Ht.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=Ht&&Ht.__importStar||function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&t(i,e,n);return r(i,e),i};Object.defineProperty(e,"__esModule",{value:!0}),e.v6=e.AddressError=e.Address6=e.Address4=void 0;const n=Kd;Object.defineProperty(e,"Address4",{enumerable:!0,get:function(){return n.Address4}});const s=ul;Object.defineProperty(e,"Address6",{enumerable:!0,get:function(){return s.Address6}});const a=Zd;Object.defineProperty(e,"AddressError",{enumerable:!0,get:function(){return a.AddressError}});const o=i(ml);e.v6={helpers:o}}(Wd);var Vl={exports:{}};!function(e){(function(){var t,r,i,n,s,a,o,c;r={},null!==e&&e.exports?e.exports=r:this.ipaddr=r,o=function(e,t,r,i){var n,s;if(e.length!==t.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(n=0;i>0;){if((s=r-i)<0&&(s=0),e[n]>>s!=t[n]>>s)return!1;i-=r,n+=1}return!0},r.subnetMatch=function(e,t,r){var i,n,s,a,o;for(s in null==r&&(r="unicast"),t)for(!(a=t[s])[0]||a[0]instanceof Array||(a=[a]),i=0,n=a.length;i<n;i++)if(o=a[i],e.kind()===o[0].kind()&&e.match.apply(e,o))return s;return r},r.IPv4=function(){function e(e){var t,r,i;if(4!==e.length)throw new Error("ipaddr: ipv4 octet count should be 4");for(t=0,r=e.length;t<r;t++)if(!(0<=(i=e[t])&&i<=255))throw new Error("ipaddr: ipv4 octet should fit in 8 bits");this.octets=e}return e.prototype.kind=function(){return"ipv4"},e.prototype.toString=function(){return this.octets.join(".")},e.prototype.toNormalizedString=function(){return this.toString()},e.prototype.toByteArray=function(){return this.octets.slice(0)},e.prototype.match=function(e,t){var r;if(void 0===t&&(e=(r=e)[0],t=r[1]),"ipv4"!==e.kind())throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");return o(this.octets,e.octets,8,t)},e.prototype.SpecialRanges={unspecified:[[new e([0,0,0,0]),8]],broadcast:[[new e([255,255,255,255]),32]],multicast:[[new e([224,0,0,0]),4]],linkLocal:[[new e([169,254,0,0]),16]],loopback:[[new e([127,0,0,0]),8]],carrierGradeNat:[[new e([100,64,0,0]),10]],private:[[new e([10,0,0,0]),8],[new e([172,16,0,0]),12],[new e([192,168,0,0]),16]],reserved:[[new e([192,0,0,0]),24],[new e([192,0,2,0]),24],[new e([192,88,99,0]),24],[new e([198,51,100,0]),24],[new e([203,0,113,0]),24],[new e([240,0,0,0]),4]]},e.prototype.range=function(){return r.subnetMatch(this,this.SpecialRanges)},e.prototype.toIPv4MappedAddress=function(){return r.IPv6.parse("::ffff:"+this.toString())},e.prototype.prefixLengthFromSubnetMask=function(){var e,t,r,i,n,s,a;for(a={0:8,128:7,192:6,224:5,240:4,248:3,252:2,254:1,255:0},e=0,n=!1,t=r=3;r>=0;t=r+=-1){if(!((i=this.octets[t])in a))return null;if(s=a[i],n&&0!==s)return null;8!==s&&(n=!0),e+=s}return 32-e},e}(),i="(0?\\d+|0x[a-f0-9]+)",n={fourOctet:new RegExp("^"+i+"\\."+i+"\\."+i+"\\."+i+"$","i"),longValue:new RegExp("^"+i+"$","i")},r.IPv4.parser=function(e){var t,r,i,s,a;if(r=function(e){return"0"===e[0]&&"x"!==e[1]?parseInt(e,8):parseInt(e)},t=e.match(n.fourOctet))return function(){var e,n,s,a;for(a=[],e=0,n=(s=t.slice(1,6)).length;e<n;e++)i=s[e],a.push(r(i));return a}();if(t=e.match(n.longValue)){if((a=r(t[1]))>4294967295||a<0)throw new Error("ipaddr: address outside defined range");return function(){var e,t;for(t=[],s=e=0;e<=24;s=e+=8)t.push(a>>s&255);return t}().reverse()}return null},r.IPv6=function(){function e(e,t){var r,i,n,s,a,o;if(16===e.length)for(this.parts=[],r=i=0;i<=14;r=i+=2)this.parts.push(e[r]<<8|e[r+1]);else{if(8!==e.length)throw new Error("ipaddr: ipv6 part count should be 8 or 16");this.parts=e}for(n=0,s=(o=this.parts).length;n<s;n++)if(!(0<=(a=o[n])&&a<=65535))throw new Error("ipaddr: ipv6 part should fit in 16 bits");t&&(this.zoneId=t)}return e.prototype.kind=function(){return"ipv6"},e.prototype.toString=function(){return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/,"::")},e.prototype.toRFC5952String=function(){var e,t,r,i,n;for(i=/((^|:)(0(:|$)){2,})/g,n=this.toNormalizedString(),e=0,t=-1;r=i.exec(n);)r[0].length>t&&(e=r.index,t=r[0].length);return t<0?n:n.substring(0,e)+"::"+n.substring(e+t)},e.prototype.toByteArray=function(){var e,t,r,i,n;for(e=[],t=0,r=(n=this.parts).length;t<r;t++)i=n[t],e.push(i>>8),e.push(255&i);return e},e.prototype.toNormalizedString=function(){var e,t,r;return e=function(){var e,r,i,n;for(n=[],e=0,r=(i=this.parts).length;e<r;e++)t=i[e],n.push(t.toString(16));return n}.call(this).join(":"),r="",this.zoneId&&(r="%"+this.zoneId),e+r},e.prototype.toFixedLengthString=function(){var e,t,r;return e=function(){var e,r,i,n;for(n=[],e=0,r=(i=this.parts).length;e<r;e++)t=i[e],n.push(t.toString(16).padStart(4,"0"));return n}.call(this).join(":"),r="",this.zoneId&&(r="%"+this.zoneId),e+r},e.prototype.match=function(e,t){var r;if(void 0===t&&(e=(r=e)[0],t=r[1]),"ipv6"!==e.kind())throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");return o(this.parts,e.parts,16,t)},e.prototype.SpecialRanges={unspecified:[new e([0,0,0,0,0,0,0,0]),128],linkLocal:[new e([65152,0,0,0,0,0,0,0]),10],multicast:[new e([65280,0,0,0,0,0,0,0]),8],loopback:[new e([0,0,0,0,0,0,0,1]),128],uniqueLocal:[new e([64512,0,0,0,0,0,0,0]),7],ipv4Mapped:[new e([0,0,0,0,0,65535,0,0]),96],rfc6145:[new e([0,0,0,0,65535,0,0,0]),96],rfc6052:[new e([100,65435,0,0,0,0,0,0]),96],"6to4":[new e([8194,0,0,0,0,0,0,0]),16],teredo:[new e([8193,0,0,0,0,0,0,0]),32],reserved:[[new e([8193,3512,0,0,0,0,0,0]),32]]},e.prototype.range=function(){return r.subnetMatch(this,this.SpecialRanges)},e.prototype.isIPv4MappedAddress=function(){return"ipv4Mapped"===this.range()},e.prototype.toIPv4Address=function(){var e,t,i;if(!this.isIPv4MappedAddress())throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4");return e=(i=this.parts.slice(-2))[0],t=i[1],new r.IPv4([e>>8,255&e,t>>8,255&t])},e.prototype.prefixLengthFromSubnetMask=function(){var e,t,r,i,n,s,a;for(a={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},e=0,n=!1,t=r=7;r>=0;t=r+=-1){if(!((i=this.parts[t])in a))return null;if(s=a[i],n&&0!==s)return null;16!==s&&(n=!0),e+=s}return 128-e},e}(),s="(?:[0-9a-f]+::?)+",c="%[0-9a-z]{1,}",a={zoneIndex:new RegExp(c,"i"),native:new RegExp("^(::)?("+s+")?([0-9a-f]+)?(::)?("+c+")?$","i"),transitional:new RegExp("^((?:"+s+")|(?:::)(?:"+s+")?)"+i+"\\."+i+"\\."+i+"\\."+i+"("+c+")?$","i")},t=function(e,t){var r,i,n,s,o,c;if(e.indexOf("::")!==e.lastIndexOf("::"))return null;for((c=(e.match(a.zoneIndex)||[])[0])&&(c=c.substring(1),e=e.replace(/%.+$/,"")),r=0,i=-1;(i=e.indexOf(":",i+1))>=0;)r++;if("::"===e.substr(0,2)&&r--,"::"===e.substr(-2,2)&&r--,r>t)return null;for(o=t-r,s=":";o--;)s+="0:";return":"===(e=e.replace("::",s))[0]&&(e=e.slice(1)),":"===e[e.length-1]&&(e=e.slice(0,-1)),{parts:t=function(){var t,r,i,s;for(s=[],t=0,r=(i=e.split(":")).length;t<r;t++)n=i[t],s.push(parseInt(n,16));return s}(),zoneId:c}},r.IPv6.parser=function(e){var r,i,n,s,o,c,d;if(a.native.test(e))return t(e,8);if((s=e.match(a.transitional))&&(d=s[6]||"",(r=t(s[1].slice(0,-1)+d,6)).parts)){for(i=0,n=(c=[parseInt(s[2]),parseInt(s[3]),parseInt(s[4]),parseInt(s[5])]).length;i<n;i++)if(!(0<=(o=c[i])&&o<=255))return null;return r.parts.push(c[0]<<8|c[1]),r.parts.push(c[2]<<8|c[3]),{parts:r.parts,zoneId:r.zoneId}}return null},r.IPv4.isIPv4=r.IPv6.isIPv6=function(e){return null!==this.parser(e)},r.IPv4.isValid=function(e){try{return new this(this.parser(e)),!0}catch(e){return!1}},r.IPv4.isValidFourPartDecimal=function(e){return!(!r.IPv4.isValid(e)||!e.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/))},r.IPv6.isValid=function(e){var t;if("string"==typeof e&&-1===e.indexOf(":"))return!1;try{return new this((t=this.parser(e)).parts,t.zoneId),!0}catch(e){return!1}},r.IPv4.parse=function(e){var t;if(null===(t=this.parser(e)))throw new Error("ipaddr: string is not formatted like ip address");return new this(t)},r.IPv6.parse=function(e){var t;if(null===(t=this.parser(e)).parts)throw new Error("ipaddr: string is not formatted like ip address");return new this(t.parts,t.zoneId)},r.IPv4.parseCIDR=function(e){var t,r,i;if((r=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(r[2]))>=0&&t<=32)return i=[this.parse(r[1]),t],Object.defineProperty(i,"toString",{value:function(){return this.join("/")}}),i;throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},r.IPv4.subnetMaskFromPrefixLength=function(e){var t,r,i;if((e=parseInt(e))<0||e>32)throw new Error("ipaddr: invalid IPv4 prefix length");for(i=[0,0,0,0],r=0,t=Math.floor(e/8);r<t;)i[r]=255,r++;return t<4&&(i[t]=Math.pow(2,e%8)-1<<8-e%8),new this(i)},r.IPv4.broadcastAddressFromCIDR=function(e){var t,r,i,n,s;try{for(i=(t=this.parseCIDR(e))[0].toByteArray(),s=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),n=[],r=0;r<4;)n.push(parseInt(i[r],10)|255^parseInt(s[r],10)),r++;return new this(n)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},r.IPv4.networkAddressFromCIDR=function(e){var t,r,i,n,s;try{for(i=(t=this.parseCIDR(e))[0].toByteArray(),s=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),n=[],r=0;r<4;)n.push(parseInt(i[r],10)&parseInt(s[r],10)),r++;return new this(n)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},r.IPv6.parseCIDR=function(e){var t,r,i;if((r=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(r[2]))>=0&&t<=128)return i=[this.parse(r[1]),t],Object.defineProperty(i,"toString",{value:function(){return this.join("/")}}),i;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},r.isValid=function(e){return r.IPv6.isValid(e)||r.IPv4.isValid(e)},r.parse=function(e){if(r.IPv6.isValid(e))return r.IPv6.parse(e);if(r.IPv4.isValid(e))return r.IPv4.parse(e);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},r.parseCIDR=function(e){try{return r.IPv6.parseCIDR(e)}catch(t){try{return r.IPv4.parseCIDR(e)}catch(e){throw new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},r.fromByteArray=function(e){var t;if(4===(t=e.length))return new r.IPv4(e);if(16===t)return new r.IPv6(e);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},r.process=function(e){var t;return"ipv6"===(t=this.parse(e)).kind()&&t.isIPv4MappedAddress()?t.toIPv4Address():t}}).call(Ht)}(Vl);var ql=Vl.exports,Gl=function(e,t){if("string"==typeof t)return Hl(e,t);if("object"==typeof t){for(var r=!1,i=0;i<t.length;i++)if(Hl(e,t[i])){r=!0;break}return r}};function Hl(e,t){try{var r=ql.process(e);if(-1===t.indexOf("/")){var i=ql.process(t);return"ipv6"===r.kind()&&"ipv6"===i.kind()?r.toNormalizedString()===i.toNormalizedString():r.toString()==i.toString()}var n=ql.parseCIDR(t);return r.match(n)}catch(e){return!1}}var Wl=Gl,Kl=/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,Jl=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.2.0/24","192.168.0.0/16","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","224.0.0.0/3"],Ql=["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"];for(var Zl=function(e){var t=[],r={originalIp:e,boiledIp:!1,isValid:!1,isBogon:!1,isApipa:!1,isMulticast:!1,isRfc1918:!1,isPublicIp:!1};if(Kl.test(e)){r.isValid=!0;for(var i=e.split("."),n=0;n<4;n++)t.push(parseInt(i[n],10));r.boiledIp=t.join("."),Wl(r.boiledIp,Jl)&&(r.isBogon=!0),Wl(r.boiledIp,"169.254.0.0/16")&&(r.isApipa=!0),Wl(r.boiledIp,"224.0.0.0/4")&&(r.isMulticast=!0),Wl(r.boiledIp,Ql)?r.isRfc1918=!0:!1===r.isBogon&&(r.isPublicIp=!0)}return r},Yl=Wt(Zl),Xl={exports:{}},ep=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i,tp=[],rp=0;rp<256;rp++)tp[rp]=(rp+256).toString(16).substr(1);Xl.exports=function(e,t){var r;if(Buffer.isBuffer(e))r=function(e,t){var r=t||0,i=tp;return i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]}(e);else{if("[object String]"!==Object.prototype.toString.call(e))return!1;r=e}if(r=r.toLowerCase(),!ep.test(r))return!1;if(void 0===t)t=ip(r);else if(ip(r)!==t)return!1;switch(t){case 1:case 2:return!0;case 3:case 4:case 5:return-1!==["8","9","a","b"].indexOf(r.charAt(19));default:throw new Error("Invalid version provided.")}};var ip=Xl.exports.version=function(e){return 0|e.charAt(14)},np=Wt(Xl.exports);const sp=Object.create(null);sp.open="0",sp.close="1",sp.ping="2",sp.pong="3",sp.message="4",sp.upgrade="5",sp.noop="6";const ap=Object.create(null);Object.keys(sp).forEach((e=>{ap[sp[e]]=e}));const op={type:"error",data:"parser error"},cp="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),dp="function"==typeof ArrayBuffer,lp=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,pp=({type:e,data:t},r,i)=>cp&&t instanceof Blob?r?i(t):up(t,i):dp&&(t instanceof ArrayBuffer||lp(t))?r?i(t):up(new Blob([t]),i):i(sp[e]+(t||"")),up=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+(e||""))},r.readAsDataURL(e)};function hp(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let mp;const fp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",gp="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let Cy=0;Cy<64;Cy++)gp[fp.charCodeAt(Cy)]=Cy;const vp="function"==typeof ArrayBuffer,_p=(e,t)=>{if("string"!=typeof e)return{type:"message",data:yp(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:bp(e.substring(1),t)};return ap[r]?e.length>1?{type:ap[r],data:e.substring(1)}:{type:ap[r]}:op},bp=(e,t)=>{if(vp){const r=(e=>{let t,r,i,n,s,a=.75*e.length,o=e.length,c=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);const d=new ArrayBuffer(a),l=new Uint8Array(d);for(t=0;t<o;t+=4)r=gp[e.charCodeAt(t)],i=gp[e.charCodeAt(t+1)],n=gp[e.charCodeAt(t+2)],s=gp[e.charCodeAt(t+3)],l[c++]=r<<2|i>>4,l[c++]=(15&i)<<4|n>>2,l[c++]=(3&n)<<6|63&s;return d})(e);return yp(r,t)}return{base64:!0,data:e}},yp=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,wp=String.fromCharCode(30);function Sp(){return new TransformStream({transform(e,t){!function(e,t){cp&&e.data instanceof Blob?e.data.arrayBuffer().then(hp).then(t):dp&&(e.data instanceof ArrayBuffer||lp(e.data))?t(hp(e.data)):pp(e,!1,(e=>{mp||(mp=new TextEncoder),t(mp.encode(e))}))}(e,(r=>{const i=r.length;let n;if(i<126)n=new Uint8Array(1),new DataView(n.buffer).setUint8(0,i);else if(i<65536){n=new Uint8Array(3);const e=new DataView(n.buffer);e.setUint8(0,126),e.setUint16(1,i)}else{n=new Uint8Array(9);const e=new DataView(n.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(i))}e.data&&"string"!=typeof e.data&&(n[0]|=128),t.enqueue(n),t.enqueue(r)}))}})}let Cp;function Rp(e){return e.reduce(((e,t)=>e+t.length),0)}function Tp(e,t){if(e[0].length===t)return e.shift();const r=new Uint8Array(t);let i=0;for(let n=0;n<t;n++)r[n]=e[0][i++],i===e[0].length&&(e.shift(),i=0);return e.length&&i<e[0].length&&(e[0]=e[0].slice(i)),r}function Pp(e){if(e)return function(e){for(var t in Pp.prototype)e[t]=Pp.prototype[t];return e}(e)}Pp.prototype.on=Pp.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},Pp.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},Pp.prototype.off=Pp.prototype.removeListener=Pp.prototype.removeAllListeners=Pp.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,i=this._callbacks["$"+e];if(!i)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var n=0;n<i.length;n++)if((r=i[n])===t||r.fn===t){i.splice(n,1);break}return 0===i.length&&delete this._callbacks["$"+e],this},Pp.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),r=this._callbacks["$"+e],i=1;i<arguments.length;i++)t[i-1]=arguments[i];if(r){i=0;for(var n=(r=r.slice(0)).length;i<n;++i)r[i].apply(this,t)}return this},Pp.prototype.emitReserved=Pp.prototype.emit,Pp.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},Pp.prototype.hasListeners=function(e){return!!this.listeners(e).length};const kp="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function Dp(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const Op=kp.setTimeout,Ep=kp.clearTimeout;function Ip(e,t){t.useNativeTimers?(e.setTimeoutFn=Op.bind(kp),e.clearTimeoutFn=Ep.bind(kp)):(e.setTimeoutFn=kp.setTimeout.bind(kp),e.clearTimeoutFn=kp.clearTimeout.bind(kp))}class xp extends Error{constructor(e,t,r){super(e),this.description=t,this.context=r,this.type="TransportError"}}class jp extends Pp{constructor(e){super(),this.writable=!1,Ip(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,r){return super.emitReserved("error",new xp(e,t,r)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=_p(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t}(e);return t.length?"?"+t:""}}const Mp="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),Lp=64,Ap={};let Np,Bp=0,Fp=0;function Up(e){let t="";do{t=Mp[e%Lp]+t,e=Math.floor(e/Lp)}while(e>0);return t}function $p(){const e=Up(+new Date);return e!==Np?(Bp=0,Np=e):e+"."+Up(Bp++)}for(;Fp<Lp;Fp++)Ap[Mp[Fp]]=Fp;let zp=!1;try{zp="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(Ry){}const Vp=zp;function qp(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||Vp))return new XMLHttpRequest}catch(e){}if(!t)try{return new(kp[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function Gp(){}const Hp=null!=new qp({xdomain:!1}).responseType;class Wp extends Pp{constructor(e,t){super(),Ip(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.data=void 0!==t.data?t.data:null,this.create()}create(){var e;const t=Dp(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd;const r=this.xhr=new qp(t);try{r.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&r.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{r.setRequestHeader("Accept","*/*")}catch(e){}null===(e=this.opts.cookieJar)||void 0===e||e.addCookies(r),"withCredentials"in r&&(r.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(r.timeout=this.opts.requestTimeout),r.onreadystatechange=()=>{var e;3===r.readyState&&(null===(e=this.opts.cookieJar)||void 0===e||e.parseCookies(r)),4===r.readyState&&(200===r.status||1223===r.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof r.status?r.status:0)}),0))},r.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=Wp.requestsCount++,Wp.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=Gp,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete Wp.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(Wp.requestsCount=0,Wp.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",Kp);else if("function"==typeof addEventListener){addEventListener("onpagehide"in kp?"pagehide":"unload",Kp,!1)}function Kp(){for(let e in Wp.requests)Wp.requests.hasOwnProperty(e)&&Wp.requests[e].abort()}const Jp="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),Qp=kp.WebSocket||kp.MozWebSocket,Zp="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();const Yp={websocket:class extends jp{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,r=Zp?{}:Dp(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=Zp?new Qp(e,t,r):t?new Qp(e,t):new Qp(e)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;pp(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&Jp((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=$p()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!Qp}},webtransport:class extends jp{get name(){return"webtransport"}doOpen(){"function"==typeof WebTransport&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then((()=>{this.onClose()})).catch((e=>{this.onError("webtransport error",e)})),this.transport.ready.then((()=>{this.transport.createBidirectionalStream().then((e=>{const t=function(e,t){Cp||(Cp=new TextDecoder);const r=[];let i=0,n=-1,s=!1;return new TransformStream({transform(a,o){for(r.push(a);;){if(0===i){if(Rp(r)<1)break;const e=Tp(r,1);s=128==(128&e[0]),n=127&e[0],i=n<126?3:126===n?1:2}else if(1===i){if(Rp(r)<2)break;const e=Tp(r,2);n=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),i=3}else if(2===i){if(Rp(r)<8)break;const e=Tp(r,8),t=new DataView(e.buffer,e.byteOffset,e.length),s=t.getUint32(0);if(s>Math.pow(2,21)-1){o.enqueue(op);break}n=s*Math.pow(2,32)+t.getUint32(4),i=3}else{if(Rp(r)<n)break;const e=Tp(r,n);o.enqueue(_p(s?e:Cp.decode(e),t)),i=0}if(0===n||n>e){o.enqueue(op);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=e.readable.pipeThrough(t).getReader(),i=Sp();i.readable.pipeTo(e.writable),this.writer=i.writable.getWriter();const n=()=>{r.read().then((({done:e,value:t})=>{e||(this.onPacket(t),n())})).catch((e=>{}))};n();const s={type:"open"};this.query.sid&&(s.data=`{"sid":"${this.query.sid}"}`),this.writer.write(s).then((()=>this.onOpen()))}))})))}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;this.writer.write(r).then((()=>{i&&Jp((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends jp{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let r=location.port;r||(r=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||r!==e.port}const t=e&&e.forceBase64;this.supportsBinary=Hp&&!t,this.opts.withCredentials&&(this.cookieJar=void 0)}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){((e,t)=>{const r=e.split(wp),i=[];for(let e=0;e<r.length;e++){const n=_p(r[e],t);if(i.push(n),"error"===n.type)break}return i})(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const r=e.length,i=new Array(r);let n=0;e.forEach(((e,s)=>{pp(e,!1,(e=>{i[s]=e,++n===r&&t(i.join(wp))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=$p()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}request(e={}){return Object.assign(e,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new Wp(this.uri(),e)}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}},Xp=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,eu=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function tu(e){if(e.length>2e3)throw"URI too long";const t=e,r=e.indexOf("["),i=e.indexOf("]");-1!=r&&-1!=i&&(e=e.substring(0,r)+e.substring(r,i).replace(/:/g,";")+e.substring(i,e.length));let n=Xp.exec(e||""),s={},a=14;for(;a--;)s[eu[a]]=n[a]||"";return-1!=r&&-1!=i&&(s.source=t,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s.pathNames=function(e,t){const r=/\/{2,9}/g,i=t.replace(r,"/").split("/");"/"!=t.slice(0,1)&&0!==t.length||i.splice(0,1);"/"==t.slice(-1)&&i.splice(i.length-1,1);return i}(0,s.path),s.queryKey=function(e,t){const r={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,i){t&&(r[t]=i)})),r}(0,s.query),s}let ru=class e extends Pp{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=tu(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=tu(t.host).host),Ip(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},r=e.split("&");for(let e=0,i=r.length;e<i;e++){let i=r[e].split("=");t[decodeURIComponent(i[0])]=decodeURIComponent(i[1])}return t}(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new Yp[e](r)}open(){let t;if(this.opts.rememberUpgrade&&e.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(e){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(e=>this.onClose("transport close",e)))}probe(t){let r=this.createTransport(t),i=!1;e.priorWebsocketSuccess=!1;const n=()=>{i||(r.send([{type:"ping",data:"probe"}]),r.once("packet",(t=>{if(!i)if("pong"===t.type&&"probe"===t.data){if(this.upgrading=!0,this.emitReserved("upgrading",r),!r)return;e.priorWebsocketSuccess="websocket"===r.name,this.transport.pause((()=>{i||"closed"!==this.readyState&&(l(),this.setTransport(r),r.send([{type:"upgrade"}]),this.emitReserved("upgrade",r),r=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=r.name,this.emitReserved("upgradeError",e)}})))};function s(){i||(i=!0,l(),r.close(),r=null)}const a=e=>{const t=new Error("probe error: "+e);t.transport=r.name,s(),this.emitReserved("upgradeError",t)};function o(){a("transport closed")}function c(){a("socket closed")}function d(e){r&&e.name!==r.name&&s()}const l=()=>{r.removeListener("open",n),r.removeListener("error",a),r.removeListener("close",o),this.off("close",c),this.off("upgrading",d)};r.once("open",n),r.once("error",a),r.once("close",o),this.once("close",c),this.once("upgrading",d),-1!==this.upgrades.indexOf("webtransport")&&"webtransport"!==t?this.setTimeoutFn((()=>{i||r.open()}),200):r.open()}onOpen(){if(this.readyState="open",e.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){let e=0;const t=this.upgrades.length;for(;e<t;e++)this.probe(this.upgrades[e])}}onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),this.resetPingTimeout(),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":const t=new Error("server error");t.code=e.data,this.onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this.upgrades=this.filterUpgrades(e.upgrades),this.pingInterval=e.pingInterval,this.pingTimeout=e.pingTimeout,this.maxPayload=e.maxPayload,this.onOpen(),"closed"!==this.readyState&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn((()=>{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let r=0;r<this.writeBuffer.length;r++){const i=this.writeBuffer[r].data;if(i&&(e+="string"==typeof(t=i)?function(e){let t=0,r=0;for(let i=0,n=e.length;i<n;i++)t=e.charCodeAt(i),t<128?r+=1:t<2048?r+=2:t<55296||t>=57344?r+=3:(i++,r+=4);return r}(t):Math.ceil(1.33*(t.byteLength||t.size))),r>0&&e>this.maxPayload)return this.writeBuffer.slice(0,r);e+=2}var t;return this.writeBuffer}write(e,t,r){return this.sendPacket("message",e,t,r),this}send(e,t,r){return this.sendPacket("message",e,t,r),this}sendPacket(e,t,r,i){if("function"==typeof t&&(i=t,t=void 0),"function"==typeof r&&(i=r,r=null),"closing"===this.readyState||"closed"===this.readyState)return;(r=r||{}).compress=!1!==r.compress;const n={type:e,data:t,options:r};this.emitReserved("packetCreate",n),this.writeBuffer.push(n),i&&this.once("flush",i),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},r=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?r():e()})):this.upgrading?r():e()),this}onError(t){e.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let r=0;const i=e.length;for(;r<i;r++)~this.transports.indexOf(e[r])&&t.push(e[r]);return t}};ru.protocol=4;const iu="function"==typeof ArrayBuffer,nu=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,su=Object.prototype.toString,au="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===su.call(Blob),ou="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===su.call(File);function cu(e){return iu&&(e instanceof ArrayBuffer||nu(e))||au&&e instanceof Blob||ou&&e instanceof File}function du(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(du(e[t]))return!0;return!1}if(cu(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return du(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&du(e[t]))return!0;return!1}function lu(e){const t=[],r=e.data,i=e;return i.data=pu(r,t),i.attachments=t.length,{packet:i,buffers:t}}function pu(e,t){if(!e)return e;if(cu(e)){const r={_placeholder:!0,num:t.length};return t.push(e),r}if(Array.isArray(e)){const r=new Array(e.length);for(let i=0;i<e.length;i++)r[i]=pu(e[i],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=pu(e[i],t));return r}return e}function uu(e,t){return e.data=hu(e.data,t),delete e.attachments,e}function hu(e,t){if(!e)return e;if(e&&!0===e._placeholder){if("number"==typeof e.num&&e.num>=0&&e.num<t.length)return t[e.num];throw new Error("illegal attachments")}if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=hu(e[r],t);else if("object"==typeof e)for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(e[r]=hu(e[r],t));return e}const mu=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var fu;!function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(fu||(fu={}));function gu(e){return"[object Object]"===Object.prototype.toString.call(e)}class vu extends Pp{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);const r=t.type===fu.BINARY_EVENT;r||t.type===fu.BINARY_ACK?(t.type=r?fu.EVENT:fu.ACK,this.reconstructor=new _u(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!cu(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const r={type:Number(e.charAt(0))};if(void 0===fu[r.type])throw new Error("unknown packet type "+r.type);if(r.type===fu.BINARY_EVENT||r.type===fu.BINARY_ACK){const i=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const n=e.substring(i,t);if(n!=Number(n)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(n)}if("/"===e.charAt(t+1)){const i=t+1;for(;++t;){if(","===e.charAt(t))break;if(t===e.length)break}r.nsp=e.substring(i,t)}else r.nsp="/";const i=e.charAt(t+1);if(""!==i&&Number(i)==i){const i=t+1;for(;++t;){const r=e.charAt(t);if(null==r||Number(r)!=r){--t;break}if(t===e.length)break}r.id=Number(e.substring(i,t+1))}if(e.charAt(++t)){const i=this.tryParse(e.substr(t));if(!vu.isPayloadValid(r.type,i))throw new Error("invalid payload");r.data=i}return r}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case fu.CONNECT:return gu(t);case fu.DISCONNECT:return void 0===t;case fu.CONNECT_ERROR:return"string"==typeof t||gu(t);case fu.EVENT:case fu.BINARY_EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===mu.indexOf(t[0]));case fu.ACK:case fu.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class _u{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=uu(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var bu=Object.freeze({__proto__:null,Decoder:vu,Encoder:class{constructor(e){this.replacer=e}encode(e){return e.type!==fu.EVENT&&e.type!==fu.ACK||!du(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===fu.EVENT?fu.BINARY_EVENT:fu.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}encodeAsString(e){let t=""+e.type;return e.type!==fu.BINARY_EVENT&&e.type!==fu.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){const t=lu(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},get PacketType(){return fu},protocol:5});function yu(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const wu=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Su extends Pp{constructor(e,t,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[yu(e,"open",this.onopen.bind(this)),yu(e,"packet",this.onpacket.bind(this)),yu(e,"error",this.onerror.bind(this)),yu(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(wu.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;const r={type:fu.EVENT,data:t,options:{}};if(r.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++,i=t.pop();this._registerAckCallback(e,i),r.id=e}const i=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!i||!this.connected)||(this.connected?(this.notifyOutgoingListeners(r),this.packet(r)):this.sendBuffer.push(r)),this.flags={},this}_registerAckCallback(e,t){var r;const i=null!==(r=this.flags.timeout)&&void 0!==r?r:this._opts.ackTimeout;if(void 0===i)return void(this.acks[e]=t);const n=this.io.setTimeoutFn((()=>{delete this.acks[e];for(let t=0;t<this.sendBuffer.length;t++)this.sendBuffer[t].id===e&&this.sendBuffer.splice(t,1);t.call(this,new Error("operation has timed out"))}),i);this.acks[e]=(...e)=>{this.io.clearTimeoutFn(n),t.apply(this,[null,...e])}}emitWithAck(e,...t){const r=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((i,n)=>{t.push(((e,t)=>r?e?n(e):i(t):i(e))),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...i)=>{if(r!==this._queue[0])return;return null!==e?r.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...i)),r.pending=!1,this._drainQueue()})),this._queue.push(r),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:fu.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case fu.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):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/)"));break;case fu.EVENT:case fu.BINARY_EVENT:this.onevent(e);break;case fu.ACK:case fu.BINARY_ACK:this.onack(e);break;case fu.DISCONNECT:this.ondisconnect();break;case fu.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const r of t)r.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let r=!1;return function(...i){r||(r=!0,t.packet({type:fu.ACK,id:e,data:i}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:fu.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const t=this._anyOutgoingListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const t=this._anyOutgoingListeners.slice();for(const r of t)r.apply(this,e.data)}}}function Cu(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Cu.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-r:e+r}return 0|Math.min(e,this.max)},Cu.prototype.reset=function(){this.attempts=0},Cu.prototype.setMin=function(e){this.ms=e},Cu.prototype.setMax=function(e){this.max=e},Cu.prototype.setJitter=function(e){this.jitter=e};class Ru extends Pp{constructor(e,t){var r;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,Ip(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(r=t.randomizationFactor)&&void 0!==r?r:.5),this.backoff=new Cu({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const i=t.parser||bu;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new ru(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=yu(t,"open",(function(){r.onopen(),e&&e()})),n=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},s=yu(t,"error",n);if(!1!==this._timeout){const e=this._timeout,r=this.setTimeoutFn((()=>{i(),n(new Error("timeout")),t.close()}),e);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}return this.subs.push(i),this.subs.push(s),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(yu(e,"ping",this.onping.bind(this)),yu(e,"data",this.ondata.bind(this)),yu(e,"error",this.onerror.bind(this)),yu(e,"close",this.onclose.bind(this)),yu(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){Jp((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r?this._autoConnect&&!r.active&&r.connect():(r=new Su(this,e,t),this.nsps[e]=r),r}_destroy(e){const t=Object.keys(this.nsps);for(const e of t){if(this.nsps[e].active)return}this._close()}_packet(e){const t=this.encoder.encode(e);for(let r=0;r<t.length;r++)this.engine.write(t[r],e.options)}cleanup(){this.subs.forEach((e=>e())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const Tu={};function Pu(e,t){"object"==typeof e&&(t=e,e=void 0);const r=function(e,t="",r){let i=e;r=r||"undefined"!=typeof location&&location,null==e&&(e=r.protocol+"//"+r.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?r.protocol+e:r.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==r?r.protocol+"//"+e:"https://"+e),i=tu(e)),i.port||(/^(http|ws)$/.test(i.protocol)?i.port="80":/^(http|ws)s$/.test(i.protocol)&&(i.port="443")),i.path=i.path||"/";const n=-1!==i.host.indexOf(":")?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+n+":"+i.port+t,i.href=i.protocol+"://"+n+(r&&r.port===i.port?"":":"+i.port),i}(e,(t=t||{}).path||"/socket.io"),i=r.source,n=r.id,s=r.path,a=Tu[n]&&s in Tu[n].nsps;let o;return t.forceNew||t["force new connection"]||!1===t.multiplex||a?o=new Ru(i,t):(Tu[n]||(Tu[n]=new Ru(i,t)),o=Tu[n]),r.query&&!t.query&&(t.query=r.queryKey),o.socket(r.path,t)}function ku(e,t,r,i){return new(r||(r=Promise))((function(n,s){function a(e){try{c(i.next(e))}catch(e){s(e)}}function o(e){try{c(i.throw(e))}catch(e){s(e)}}function c(e){e.done?n(e.value):function(e){return e instanceof r?e:new r((function(t){t(e)}))}(e.value).then(a,o)}c((i=i.apply(e,t||[])).next())}))}Object.assign(Pu,{Manager:Ru,Socket:Su,io:Pu,connect:Pu}),"function"==typeof SuppressedError&&SuppressedError;let Du=[],Ou=0;const Eu=new WeakMap;if(window.RTCPeerConnection){const Ty=window.RTCPeerConnection;function Py(e){const t=new Ty(e);Du.push(t),Eu.set(t,{index:Ou++});const r=()=>{"closed"===t.connectionState&&((e=>{Du=Du.filter((t=>t!==e))})(t),t.removeEventListener("connectionstatechange",r))};return t.addEventListener("connectionstatechange",r),t}Py.prototype=Ty.prototype,window.RTCPeerConnection=Py}const Iu=new URLSearchParams(window.location.search).has("debug");class xu{constructor(){this._isEnabled=!1,this._debugger=null,this._isEnabled=Iu}isEnabled(){return this._isEnabled}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}info(...e){if(this._isEnabled)return console.info(...e)}warn(...e){if(this._isEnabled)return console.warn(...e)}error(...e){if(this._isEnabled)return console.error(...e)}withDebugLogger(e=null){return this._debugger=e,this}debug(...e){if(!this._isEnabled||!this._debugger)return;const t=[];e.forEach((e=>{if("function"==typeof e){const r=e();t.push(r)}else t.push(e)})),this._debugger.print(...t)}}class ju{static parse(e){let t;try{t=JSON.parse(e)}catch(e){return}if("object"==typeof t&&!Array.isArray(t))return t.request?ju._handleRequest(t):t.response?ju._handleResponse(t):t.message?ju._handleMessage(t):void 0}static _handleRequest(e){const t={request:!0};if("string"==typeof e.method&&"number"==typeof e.id)return t.id=e.id,t.method=e.method,t.data=e.data||{},t}static _handleResponse(e){const t={response:!0};if("number"==typeof e.id)return t.id=e.id,e.ok?(t.ok=!0,t.data=e.data||{}):(t.ok=!1,t.errorCode=e.errorCode,t.errorReason=e.errorReason),t}static _handleMessage(e){const t={message:!0};if("string"==typeof e.method)return t.method=e.method,t.data=e.data||{},t}static createRequest(e,t){return{request:!0,id:Math.round(1e7*Math.random()),method:e,data:t||{}}}static createSuccessResponse(e,t){return{response:!0,id:e.id,ok:!0,data:t||{}}}static createErrorResponse(e,t,r){return{response:!0,id:e.id,errorCode:t,errorReason:r}}static createMessage(e,t){return{message:!0,method:e,data:t||{}}}}const Mu=new xu;class Lu extends Ft{constructor(e,t="whereby-sfu#v4"){super(),this.socket=null,this.wsUrl=e,this.protocol=t,this.sents=new Map,this._setupSocket()}_setupSocket(){this.socket=new WebSocket(this.wsUrl,this.protocol),this.socket.onopen=this._onOpen.bind(this),this.socket.onmessage=this._onMessage.bind(this),this.socket.onclose=this._onClose.bind(this),this.socket.onerror=this._onError.bind(this)}_tearDown(){null!==this.socket&&(this.socket.onopen=null,this.socket.onmessage=null,this.socket.onclose=null,this.socket.onerror=null,this.socket=null,this.sents.forEach((e=>e.close())),this.emit("close"))}close(){var e;null===(e=this.socket)||void 0===e||e.close()}_onOpen(){Mu.info("Connected"),this.emit("open")}_onMessage(e){const t=ju.parse(e.data);Mu.info("Received message",t),(null==t?void 0:t.response)?this._handleResponse(t):(null==t?void 0:t.message)&&this.emit("message",t)}_onClose(){Mu.info("Disconnected"),this._tearDown()}_onError(e){Mu.info("Error",e)}_handleResponse(e){const t=this.sents.get(e.id);if(e.ok)t.resolve(e.data);else{const r=new Error(e.errorReason);t.reject(r)}}send(e){try{this.socket&&this.socket.send(JSON.stringify(e))}catch(e){}}message(e,t={}){const r=ju.createMessage(e,t);this.send(r)}request(e,t={},r=1500*(15+.1*this.sents.size)){const i=ju.createRequest(e,t);return this.send(i),new Promise(((e,t)=>{const n={id:i.id,method:i.method,resolve:t=>{this.sents.delete(i.id)&&(clearTimeout(n.timer),e(t))},reject:e=>{this.sents.delete(i.id)&&(clearTimeout(n.timer),t(e))},timer:setTimeout((()=>{this.sents.delete(i.id)&&t(new Error("request timeout"))}),r),close:()=>{clearTimeout(n.timer),t(new Error("transport closed"))}};this.sents.set(i.id,n)}))}}const Au={codecOptions:{opusDtx:!0,opusFec:!0},encodings:[{dtx:!0}]},Nu={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:4,maxBitrate:15e4},{scaleResolutionDownBy:2,maxBitrate:5e5},{scaleResolutionDownBy:1,maxBitrate:1e6}]},Bu={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:2,maxBitrate:15e4},{scaleResolutionDownBy:1,maxBitrate:5e5}]},Fu={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scalabilityMode:"L3T2_KEY"}]},Uu={encodings:[{}]},$u={encodings:[{scaleResolutionDownBy:2,dtx:!0,maxBitrate:5e5},{scaleResolutionDownBy:1,dtx:!0,maxBitrate:15e5}]},zu={encodings:[{dtx:!0}]},Vu=(e,t,r)=>{const{lowDataModeEnabled:i,simulcastScreenshareOn:n,vp9On:s}=r;return"audio"===e?Au:t?s?zu:n?$u:Uu:s?Fu:i?Bu:Nu},qu=()=>{let e=Zt.detectDevice()||(/applecoremedia|applewebkit|safari/i.test(navigator.userAgent)?"Safari12":void 0);return/iphone|ipad/i.test(navigator.userAgent)&&(e="Safari12"),e};var Gu;const Hu=null!==(Gu=Nd.default)&&void 0!==Gu?Gu:Nd;const Wu=400;var Ku;const Ju="safari"===(null!==(Ku=Nd.default)&&void 0!==Ku?Ku:Nd).browserDetails.browser,Qu=e=>e.split(/[^\d]/g).map((e=>parseInt(e,10)));function Zu({devices:e,videoId:t,audioId:r,options:i,type:n="ideal"}){const s=e.filter((e=>"audioinput"===e.kind)),a=e.filter((e=>"videoinput"===e.kind)),o=!r||!s.some((e=>e.deviceId===r)),c=!t||!a.some((e=>e.deviceId===t)),d=function({disableAEC:e,disableAGC:t,hd:r,lax:i,lowDataMode:n,preferredDeviceIds:s,resolution:a,simulcast:o,widescreen:c}){var d,l;let p=480,u=240;r&&(p=i||Ju?720:{min:360,ideal:720}),o&&(!1===r?(p=360,u=270):u=360);const h={audio:Object.assign({},s.audioId&&{deviceId:s.audioId}),video:Object.assign(Object.assign({},s.videoId?{deviceId:s.videoId}:{facingMode:"user"}),{height:n?u:p,frameRate:n&&!o?15:24})};if(i)return(null===(d=h.audio)||void 0===d?void 0:d.deviceId)||(h.audio=!0),null===(l=h.video)||void 0===l||delete l.facingMode,h;if(a){const[e,t,r]=Qu(a);e&&(h.video.width={exact:e}),t&&(h.video.height={exact:t}),r&&(h.video.frameRate={exact:r}),delete h.video.facingMode}else h.video.aspectRatio=c?16/9:4/3;return t&&(h.audio.autoGainControl=!1),e&&(h.audio.echoCancellation=!1),h}(Object.assign({preferredDeviceIds:{audioId:o?null:{[n]:r},videoId:c?null:{[n]:t}}},i));return!1!==r&&s.length||delete d.audio,!1!==t&&a.length||delete d.video,d}const Yu=new xu,Xu=/mobi/i.test(navigator.userAgent);class eh extends Error{constructor(...e){super(...e),this.name="nodevices"}}function th(e){return e.audio||e.video?navigator.mediaDevices.getUserMedia(e).catch((t=>{const r=`${t}, ${JSON.stringify(e,null,2)}`;throw Yu.error(`getUserMedia ${r}`),t})):Promise.reject(new eh("No provided devices"))}function rh(e,t,r,i){var n,s,a;let o={deviceId:null};return t?(o.label=t.label,t.getSettings&&(o=Object.assign(Object.assign({},o),t.getSettings())),o.deviceId?o:(t.getCapabilities&&(o.deviceId=t.getCapabilities().deviceId),o.deviceId?o:(t.label&&r&&(o.deviceId=null===(s=r.find((r=>t.label===r.label&&r.kind===e)))||void 0===s?void 0:s.deviceId),o.deviceId||(o.deviceId=null===(a=t.getConstraints())||void 0===a?void 0:a.deviceId,o.broken=1),o))):(i&&r&&(o.deviceId=null===(n=r.find((t=>t.deviceId===i&&t.kind===e)))||void 0===n?void 0:n.deviceId),o)}function ih(e,t){t&&"audio"!==t||e.getAudioTracks().forEach((e=>e.stop())),t&&"video"!==t||e.getVideoTracks().forEach((e=>e.stop()))}function nh(e,{replaceStream:t,fallback:r=!0}={}){var i;return ku(this,void 0,void 0,(function*(){let n,s,a,o=null;const c=!1===e.audioId?"video":!1===e.videoId&&"audio",d=Xu||"video"!==c,l=Zu(e),p=(e,t)=>(e.details=Object.assign({constraints:l,constraint:e.constraint||(null==t?void 0:t.constraint),newConstraints:s,fallback:r,stopTracks:d},e!==n&&{error:String(n)}),e);d&&t&&ih(t,c);try{o=yield th(l)}catch(s){if(n=s,!r)throw p(s);if("OverconstrainedError"===s.name){a={deviceId:{videoId:null,audioId:null},width:{lax:!0},height:{lax:!0},"":{audioId:null,videoId:null,lax:!0}}[s.constraint||""]}else if("NotFoundError"===s.name){if(l.audio&&l.video){try{o=yield th(Zu(Object.assign(Object.assign({},e),{audioId:!1})))}catch(e){if("NotFoundError"!==e.name)throw p(e,s)}try{o||(o=yield th(Zu(Object.assign(Object.assign({},e),{videoId:!1}))))}catch(e){throw p(e,s)}}}else if("NotAllowedError"===s.name||"NotReadableError"===s.name||"AbortError"===s.name)if(t&&!d)ih(t,c),a=e;else if("NotAllowedError"!==s.name){try{o=yield th(Zu(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{lax:!0})})))}catch(e){Yu.warn("Tried getting stream again with laxer constraints, but failed: "+(""+e))}const t=(""+s).toLowerCase(),r={audio:"audioId",video:"videoId"}[(null===(i=/(video|audio)/.exec(t))||void 0===i?void 0:i[0])||c||""];if(!o&&r)try{o=yield th(Zu(Object.assign(Object.assign({},e),{[r]:null})))}catch(e){Yu.warn(`Re-tried ${r} with no constraints, but failed: ${""+e}`)}if(!o){const t=r?[r]:["videoId","audioId"];for(const r of t){try{o=yield th(Zu(Object.assign(Object.assign({},e),{[r]:!1})))}catch(e){Yu.warn(`Re-tried without ${r}, but failed: ${""+e}`)}if(o)break}}}}if(a){const t=c?{audio:{videoId:!1},video:{audioId:!1}}[c]:{};s=Zu(Object.assign(Object.assign(Object.assign(Object.assign({},e),a),{options:Object.assign(Object.assign({},e.options),{lax:a.lax})}),t));try{o=yield th(s)}catch(e){throw p(e,n)}}if(!o)throw p(n);let u;return t&&(d||ih(t,c),u=function(e,t,r){const i=[];return r&&"audio"!==r||(i.push(...e.getAudioTracks()),t.getAudioTracks().forEach((t=>{t.replacement=!0,e.addTrack(t)}))),r&&"video"!==r||(i.push(...e.getVideoTracks()),t.getVideoTracks().forEach((t=>{t.replacement=!0,e.addTrack(t)}))),i.forEach((t=>{t.replaced=!0,e.removeTrack(t)})),i}(t,o,c),o=t),{error:n&&p(n),stream:o,replacedTracks:u}}))}function sh({oldDevices:e,newDevices:t,currentAudioId:r,currentVideoId:i,currentSpeakerId:n}){const s=function(e,t){const[r,i]=[e,t].map((e=>e.filter((e=>e.kind&&e.deviceId)).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.kind]:Object.assign(Object.assign({},e[t.kind]),{[t.deviceId]:t})})),{}))),n={};return e.forEach((e=>{e.kind&&e.deviceId&&(n[e.kind]||(n[e.kind]={added:{},removed:{},changed:{}}),i[e.kind]&&i[e.kind][e.deviceId]||(n[e.kind].removed[e.deviceId]=e))})),t.forEach((e=>{e.kind&&e.deviceId&&(n[e.kind]||(n[e.kind]={added:{},removed:{},changed:{}}),r[e.kind]&&r[e.kind][e.deviceId]?r[e.kind][e.deviceId].label&&r[e.kind][e.deviceId].label!==e.label&&(n[e.kind].changed[e.deviceId]=e):n[e.kind].added[e.deviceId]=e)})),n}(e,t),a={},o={};return[["audioinput",r],["videoinput",i],["audiooutput",n]].forEach((([e,r])=>{const i=s[e=e||""];if(i){if(r){if(i.removed[r]&&(a[e]={deviceId:null},"audiooutput"===e)){const r=t.find((e=>"audiooutput"===e.kind));a[e]={deviceId:null==r?void 0:r.deviceId}}i.changed[r]&&(a[e]={deviceId:r})}if(Object.keys(i.added).length){const[t]=Object.keys(i.added).slice(0,1),r=i.added[t];o[e]={deviceId:r.deviceId,label:r.label,kind:r.kind}}}})),{addedDevices:o,changedDevices:a}}Nd.default;const ah={id:Hd(),connectionNumber:0},oh=()=>{};let ch=oh;const dh=function(e,t=console){const r=[];let i,n,s,a,o,c,d,l=0,p=!1,u=0;const h={connected:!1,trace:(...e)=>{if(e.push(Date.now()),"customEvent"===e[0]&&"roomSessionId"===e[2].type){const t=c&&c[2].value.roomSessionId,r=e[2].value.roomSessionId;if(c=e,p&&r&&r!==t&&i)return void i.close();r&&(p=!0)}else"customEvent"===e[0]&&"clientId"===e[2].type?s=e:"customEvent"===e[0]&&"organizationId"===e[2].type?n=e:"customEvent"===e[0]&&"displayName"===e[2].type?a=e:"customEvent"===e[0]&&"userRole"===e[2].type&&(o=e);i.readyState===WebSocket.OPEN?(l=0,i.send(JSON.stringify(e))):"getstats"===e[0]?u<20&&(u++,r.push(e)):"customEvent"===e[0]&&"insightsStats"===e[2].type||r.push(e),i.readyState===WebSocket.CLOSED&&d&&setTimeout((()=>{i.readyState===WebSocket.CLOSED&&d&&h.connect()}),1e3*l)},close:()=>{d=!1,i&&i.close()},connect:()=>{d=!0,l+=1,i&&i.close(),h.connected=!0,i=new WebSocket(e+window.location.pathname,"1.0"),i.onerror=e=>{h.connected=!1,t.warn("[RTCSTATS] WebSocket error",e)},i.onclose=e=>{h.connected=!1,t.info(`[RTCSTATS] Closed ${e.code}`),ch()},i.onopen=()=>{for(ah.connectionNumber++,i.send(JSON.stringify(["clientInfo",null,ah])),n&&i.send(JSON.stringify(n)),s&&i.send(JSON.stringify(s)),c&&i.send(JSON.stringify(c)),a&&i.send(JSON.stringify(a)),o&&i.send(JSON.stringify(o));r.length;)i.send(JSON.stringify(r.shift()));u=0}}};return h.connect(),h}("wss://rtcstats.srv.whereby.com"),lh=Ud(dh.trace,1e4,[""]);ch=(null==lh?void 0:lh.resetDelta)||oh;const ph={sendEvent:(e,t)=>{dh.trace("customEvent",null,{type:e,value:t})},sendAudioMuted:e=>{ph.sendEvent("audio_muted",{muted:e})},sendVideoMuted:e=>{ph.sendEvent("video_muted",{muted:e})},server:dh};var uh;const hh=null!==(uh=Nd.default)&&void 0!==uh?uh:Nd,mh=new xu,fh=hh.browserDetails.browser,gh=hh.browserDetails.version;function vh(e,t){let r=e.match(/a=ssrc-group:FID (\d+) (\d+)\r\n/),i=t.match(/a=ssrc-group:FID (\d+) (\d+)\r\n/);r||(r=e.match(/a=ssrc:(\d+) cname:(.*)\r\n/g)[1].match(/a=ssrc:(\d+)/),i=t.match(/a=ssrc:(\d+) cname:(.*)\r\n/g)[1].match(/a=ssrc:(\d+)/));for(let e=1;e<r.length;e++)t=t.replace(new RegExp(i[e],"g"),r[e]);return t}function _h(e){return"firefox"!==fh?e:Pd.splitLines(e.trim()).map((e=>e.startsWith("a=msid-semantic:")?"a=msid-semantic: WMS *":e)).join("\r\n")+"\r\n"}function bh(e){return function(e,t,r=!1,i=!1){var n,s;try{const a=cn(e);if((null===(n=null==a?void 0:a.ext)||void 0===n?void 0:n.length)&&a.ext.length>0)return e;if((null==a?void 0:a.media.length)<1)return e;const o=null==a?void 0:a.media.flatMap((e=>e.ext||[])),c=(null===(s=o.find((e=>e.uri===t)))||void 0===s?void 0:s.value)||[...new Set([0,15,...o.map((e=>e.value))])].sort(((e,t)=>e-t)).find(((e,t,r)=>e+1!==r[t+1]))+1;return a.media.forEach((e=>{var n;(r&&"audio"===e.type||i&&"video"===e.type)&&((null===(n=e.ext)||void 0===n?void 0:n.find((e=>e.uri===t)))||(Array.isArray(e.ext)?e.ext.push({value:c,uri:t}):e.ext=[{value:c,uri:t}]))})),on(a)}catch(e){console.error("Error during addAbsCaptureTimeExtMap: ",e)}return e}(e,"http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time",!0,!0)}function yh(e,t,r=console){const i=e.getSenders().find((e=>e.track&&"video"===e.track.kind));if(!i)return Promise.resolve();const n=i.getParameters();return n.encodings&&0===n.encodings.length?Promise.resolve():(n.encodings||(n.encodings=[{}]),0===t?delete n.encodings[0].maxBitrate:n.encodings[0].maxBitrate=1e3*t,i.setParameters(n).catch((e=>{r.error("setParameters err: ",e)})))}var wh;const Sh=null!==(wh=Nd.default)&&void 0!==wh?wh:Nd,Ch=new xu;class Rh{constructor({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:r,deprioritizeH264Encoding:i}){this.peerConnectionId=e,this.relayCandidateSeen=!1,this.serverReflexiveCandidateSeen=!1,this.publicHostCandidateSeen=!1,this.ipv6HostCandidateSeen=!1,this.ipv6HostCandidateTeredoSeen=!1,this.ipv6HostCandidate6to4Seen=!1,this.mdnsHostCandidateSeen=!1,this.pc=null,this.wasEverConnected=!1,this.connectionStatus=null,this.stats={totalSent:0,totalRecv:0},this.bandwidth=t||0,this.maximumTurnBandwidth=r,this.pending=[],this.isOperationPending=!1,this.streamIds=[],this.streams=[],this.earlyIceCandidates=[],this.afterConnected=new Promise((e=>{this.registerConnected=e})),this.offerOptions={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._deprioritizeH264Encoding=i}setAndGetPeerConnection({clientId:e,constraints:t,peerConnectionConfig:r,shouldAddLocalVideo:i}){return this.peerConnectionConfig=r,this.shouldAddLocalVideo=i,this.clientId=e,this.pc=new RTCPeerConnection(r),this.signalingState=this.pc.signalingState,this.pc.addEventListener("signalingstatechange",(()=>{if(this.signalingState!==this.pc.signalingState&&(this.signalingState=this.pc.signalingState,"stable"===this.pc.signalingState)){this.isOperationPending=!1;const e=this.pending.shift();e&&e.apply()}})),this.pc}addStream(e){this.streamIds.push(e.id),this.streams.push(e),RTCPeerConnection.prototype.addTrack?(e.getAudioTracks().forEach((t=>{this.pc.addTrack(t,e)})),e.getVideoTracks().forEach((t=>{this.pc.addTrack(t,e)}))):this.pc.addStream(e)}addTrack(e,t){t||(t=this.streams[0]),null==t||t.addTrack(e),this.pc.addTrack(e,t)}removeTrack(e){this.streams[0].removeTrack(e);const t=this.pc.getSenders().find((t=>t.track===e));t&&this.pc.removeTrack(t)}removeStream(e){for(let t=0;t<this.streamIds.length;t++)this.streamIds[t]===e.id&&(this.streamIds.splice(t,1),this.streams.splice(t,1));this.pc&&(this.pc.removeTrack?e.getTracks().forEach((e=>{const t=this.pc.getSenders().find((t=>t.track===e));t&&this.pc.removeTrack(t)})):this.pc.removeStream&&this.pc.removeStream(e))}_setRemoteDescription(e){return this._deprioritizeH264Encoding&&(e.sdp=function(e){return Pd.splitSections(e).map((e=>{if("video"!==Pd.getKind(e))return e;const t=Pd.matchPrefix(e,"a=rtpmap:").map((e=>Pd.parseRtpMap(e))).filter((e=>/h264/i.test(e.name))).map((e=>""+e.payloadType));if(!t.length)return e;const r=Pd.matchPrefix(e,"m=video")[0],i=/(\s\d+)+$/i.exec(r),n=i?i[0]:"",s=[...n.split(" ").filter((e=>e&&!t.includes(e))),...t].join(" "),a=r.replace(n," "+s);return e.replace(r,a)})).join("")}(e.sdp)),this.srdComplete=this.pc.setRemoteDescription(e),this.srdComplete.then((()=>{this.earlyIceCandidates.forEach((e=>this.pc.addIceCandidate(e))),this.earlyIceCandidates=[]}))}handleOffer(e){if(!this.canModifyPeerConnection())return new Promise((t=>{this.pending.push((()=>this.handleOffer(e).then(t)))}));this.isOperationPending=!0;let t=e.sdp;t=function(e){return"safari"!==fh&&("firefox"!==fh||gh&&gh>=63||60===gh)?e:Pd.splitLines(e.trim()).filter((e=>!e.startsWith("a=extmap:")||"urn:ietf:params:rtp-hdrext:sdes:mid"!==Pd.parseExtmap(e).uri)).join("\r\n")+"\r\n"}(t),t=_h(t);const r={type:e.type,sdp:t};let i;return this._setRemoteDescription(r).then((()=>this.pc.createAnswer())).then((e=>(i=e,this.pc.setLocalDescription(e)))).then((()=>yh(this.pc,this.bandwidth))).then((()=>i))}handleAnswer(e){if(this.pendingOffer){const t=this.pendingOffer;return delete this.pendingOffer,this.pc.setLocalDescription(t).then((()=>this.handleAnswer(e)))}let t=e.sdp;t=_h(t);const r={type:e.type,sdp:t};return this._setRemoteDescription(r).then((()=>yh(this.pc,this.bandwidth)),(e=>{Ch.warn("Could not set remote description from remote answer: ",e)}))}addIceCandidate(e){this.srdComplete?this.srdComplete.then((()=>{"closed"!==this.pc.signalingState&&("safari"===Sh.browserDetails.browser&&e&&""===e.candidate||this.pc.addIceCandidate(e).catch((t=>{Ch.warn("Failed to add ICE candidate ('%s'): %s",e?e.candidate:null,t)})))})):this.earlyIceCandidates.push(e)}canModifyPeerConnection(){return"stable"===this.pc.signalingState&&!this.isOperationPending}close(){const e=this.pc;if(e){e.oniceconnectionstatechange=null,e.onicecandidate=null,e.ontrack=null;try{e.close()}catch(e){Ch.warn("failures during close of session",e)}}}hasConnectedPeerConnection(){return this.pc&&"connected"===this.pc.connectionState}replaceTrack(e,t){const r=this.pc;if(!r)return!1;const i=r.getSenders();function n(r){const n=e=>e&&`id:${e.id},kind:${e.kind},state:${e.readyState}`;Ch.warn(`${r}. newTrack:${n(t)}, oldTrack:${n(e)}, sender tracks: ${JSON.stringify(i.map((e=>`s ${n(e.track)}`)))}, sender first codecs: ${JSON.stringify(i.map((e=>(e.getParameters().codecs||[])[0])))}`)}if(i.length||n("No senders!"),e||(e=(i.find((e=>e.track&&e.track.kind===t.kind))||{}).track)||n("No sender with same kind! Add new track then."),window.RTCRtpSender&&window.RTCRtpSender.prototype.replaceTrack){if(e){const r=()=>{for(let r=0;r<i.length;r++){const s=i[r],a=s.track;if(s||a||n("One of the tracks is null!"),a.id===t.id)return Promise.resolve(t);if(a.id===e.id)return i[r].replaceTrack(t)}return null};let s=r();if(s)return s;let a=null,o=null;s=new Promise(((e,t)=>{a=e,o=t}));let c=0,d=setInterval((()=>ku(this,void 0,void 0,(function*(){const e=r();if(!e)return void(3<++c&&(clearInterval(d),d=null,n("No sender track to replace"),o("No sender track to replace")));clearInterval(d),d=null;const t=yield e;a(t)}))),1e3);return s}const s=this.streams.find((e=>e.getTracks().find((e=>e.id===t.id))))||this.streams[0];return s?r.addTrack(t,s):(n("No stream?"),Promise.reject(new Error("replaceTrack: No stream?")))}if(!this.canModifyPeerConnection())return void this.pending.push((()=>{this.replaceTrack(e,t)}));this.isOperationPending=!0;const s=r.onnegotiationneeded;return r.onnegotiationneeded=null,this.removeTrack(e),this.addTrack(t),setTimeout((()=>{r.onnegotiationneeded=s}),0),"offer"===r.localDescription.type?r.createOffer().then((e=>(e.sdp=vh(r.localDescription.sdp,e.sdp),r.setLocalDescription(e)))).then((()=>this._setRemoteDescription(r.remoteDescription))):this._setRemoteDescription(r.remoteDescription).then((()=>r.createAnswer())).then((e=>(e.sdp=vh(r.localDescription.sdp,e.sdp),r.setLocalDescription(e))))}maybeRestrictRelayBandwidth(){var e;-1!==this.maximumTurnBandwidth&&(this.pc.getStats&&(e=this.pc,e.getStats(null).then((e=>{let t,r;return e.forEach((i=>{if("transport"===i.type&&i.selectedCandidatePairId){const n=e.get(i.selectedCandidatePairId);if(!n)return;return t=e.get(n.localCandidateId).candidateType,void(r=e.get(n.remoteCandidateId).candidateType)}"candidate-pair"===i.type&&i.selected&&(t=e.get(i.localCandidateId).candidateType,r=e.get(i.remoteCandidateId).candidateType)})),"relay"===t||"relayed"===t||"relay"===r||"relayed"===r}))).then((e=>{e&&0===this.bandwidth&&this.changeBandwidth(this.maximumTurnBandwidth)})))}changeBandwidth(e){e!==this.bandwidth&&(this.canModifyPeerConnection()?(this.bandwidth=e,this.pc.localDescription&&""!==this.pc.localDescription.type&&yh(this.pc,this.bandwidth)):this.pending.push((()=>this.changeBandwidth(e))))}setAudioOnly(e,t=[]){this.pc.getTransceivers().filter((e=>{var r,i,n,s,a,o;return"recvonly"!==(null==e?void 0:e.direction)&&"video"===(null===(i=null===(r=null==e?void 0:e.receiver)||void 0===r?void 0:r.track)||void 0===i?void 0:i.kind)&&!t.includes(null===(s=null===(n=null==e?void 0:e.receiver)||void 0===n?void 0:n.track)||void 0===s?void 0:s.id)&&!t.includes(null===(o=null===(a=null==e?void 0:e.sender)||void 0===a?void 0:a.track)||void 0===o?void 0:o.id)})).forEach((t=>{t.direction=e?"sendonly":"sendrecv"}))}}const Th="fetch_mediaserver_config",Ph="start_screenshare",kh="stop_screenshare",Dh="audio_enabled",Oh="client_left",Eh="mediaserver_config",Ih="new_client",xh="screenshare_started",jh="screenshare_stopped",Mh="room_joined",Lh="video_enabled",Ah="ice_candidate",Nh="ice_endofcandidates",Bh="ready_to_receive_offer",Fh="sdp_answer",Uh="sdp_offer",$h="pending_client_left",zh="media_quality_changed",Vh="client_connection_status_changed",qh="stream_added",Gh="rtc_manager_created",Hh="rtc_manager_destroyed",Wh="local_stream_track_added",Kh="local_stream_track_removed",Jh="connecting",Qh="connection_failed",Zh="connection_successful",Yh="connection_disconnected",Xh="camera",em="screen_share";const tm=57600,rm=2.6041666666666665,im=921600,nm=1.0850694444444444;const sm="[a-fA-F\\d:]",am=e=>e&&e.includeBoundaries?`(?:(?<=\\s|^)(?=${sm})|(?<=${sm})(?=\\s|$))`:"",om="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",cm="[a-fA-F\\d]{1,4}",dm=`\n(?:\n(?:${cm}:){7}(?:${cm}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${cm}:){6}(?:${om}|:${cm}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${cm}:){5}(?::${om}|(?::${cm}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${cm}:){4}(?:(?::${cm}){0,1}:${om}|(?::${cm}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${cm}:){3}(?:(?::${cm}){0,2}:${om}|(?::${cm}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${cm}:){2}(?:(?::${cm}){0,3}:${om}|(?::${cm}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${cm}:){1}(?:(?::${cm}){0,4}:${om}|(?::${cm}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::${cm}){0,5}:${om}|(?::${cm}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),lm=new RegExp(`(?:^${om}$)|(?:^${dm}$)`),pm=new RegExp(`^${om}$`),um=new RegExp(`^${dm}$`),hm=e=>e&&e.exact?lm:new RegExp(`(?:${am(e)}${om}${am(e)})|(?:${am(e)}${dm}${am(e)})`,"g");hm.v4=e=>e&&e.exact?pm:new RegExp(`${am(e)}${om}${am(e)}`,"g"),hm.v6=e=>e&&e.exact?um:new RegExp(`${am(e)}${dm}${am(e)}`,"g");var mm,fm,gm="connection_blocked_by_network",vm="ice_ipv6_seen",_m="ice_mdns_seen",bm="ice_no_public_ip_gathered",ym="ice_no_public_ip_gathered_3sec",wm="ice_restart",Sm="microphone_not_working",Cm="microphone_stopped_working",Rm="new_pc",Tm="sfu_connection_open",Pm="sfu_connection_closed",km="dominant_speaker";const Dm=null!==(mm=Nd.default)&&void 0!==mm?mm:Nd,Om=new xu,Em=class{constructor(e,t){this.id=""+e,this.type=t,this.isEnabled=!0,this.hasSupportForAutoSuperSize=!1,this.isAudioEnabled=!0,this.isVideoEnabled=!0,this.status=Jh,this.stream=null,this.streamId=null}setup(e){return this.stream=e,this.streamId=e.id,this.setVideoEnabled(this.isVideoEnabled&&e.getVideoTracks().length>0),this.setAudioEnabled(this.isAudioEnabled&&e.getAudioTracks().length>0),this}setStatus(e){return this.status=e,this}setVideoEnabled(e){this.isVideoEnabled=e,this.stream&&this.stream.getVideoTracks().forEach((t=>{t.enabled=e}))}setAudioEnabled(e){this.isAudioEnabled=e,this.stream&&this.stream.getAudioTracks().forEach((t=>{t.enabled=e}))}static getCameraId(){return"0"}static getTypeFromId(e){return"0"===""+e?Xh:em}}.getCameraId(),Im=Dm.browserDetails.browser,xm=Dm.browserDetails.version;"firefox"===Im&&Dm.browserShim&&"shimGetDisplayMedia"in Dm.browserShim&&(null===(fm=Dm.browserShim)||void 0===fm||fm.shimGetDisplayMedia(window,"screen"));let jm=!1;"chrome"===Im&&window.document.addEventListener("beforeunload",(()=>{jm=!0}));class Mm{constructor({selfId:e,room:t,emitter:r,serverSocket:i,webrtcProvider:n,features:s}){const{name:a,session:o,iceServers:c,sfuServer:d,mediaserverConfigTtlSeconds:l}=t;this._selfId=e,this._roomName=a,this._roomSessionId=o&&o.id,this.peerConnections={},this.localStreams={},this.enabledLocalStreamIds=[],this._screenshareVideoTrackIds=[],this._socketListenerDeregisterFunctions=[],this._localStreamDeregisterFunction=null,this._emitter=r,this._serverSocket=i,this._webrtcProvider=n,this._features=s||{},this._isAudioOnlyMode=!1,this.offerOptions={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._pendingActionsForConnectedPeerConnections=[],this._audioTrackOnEnded=()=>{ph.sendEvent("audio_ended",{unloading:jm}),this._emit(Cm,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:d,iceServers:c.iceServers||[],mediaserverConfigTtlSeconds:l}),this.totalSessionsCreated=0}numberOfPeerconnections(){return Object.keys(this.peerConnections).length}isInitializedWith({selfId:e,roomName:t,isSfu:r}){return this._selfId===e&&this._roomName===t&&r===!!this._sfuServer}supportsScreenShareAudio(){return!0}maybeRestrictRelayBandwidth(e){e.maybeRestrictRelayBandwidth()}addNewStream(e,t){if(t!==this.localStreams[e]){if(this._addLocalStream(e,t),e===Em){this._addStreamToPeerConnections(t);const[e]=t.getAudioTracks();e&&this._startMonitoringAudioTrack(e),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const r=e=>{const{enable:t,track:r}=e.detail;this._handleStopOrResumeVideo({enable:t,track:r})};return t.addEventListener("stopresumevideo",r),void(this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",r)})}this._screenshareVideoTrackIds.push(t.getVideoTracks()[0].id),this._shareScreen(e,t)}}replaceTrack(e,t){return e&&"audio"===e.kind&&this._stopMonitoringAudioTrack(e),t&&"audio"===t.kind&&this._startMonitoringAudioTrack(t),this._replaceTrackToPeerConnections(e,t)}accept({clientId:e,shouldAddLocalVideo:t}){return this.acceptNewStream({streamId:e,clientId:e,shouldAddLocalVideo:t})}disconnectAll(){Object.keys(this.peerConnections).forEach((e=>{this.disconnect(e)})),this.peerConnections={},this._socketListenerDeregisterFunctions.forEach((e=>{e()})),this._socketListenerDeregisterFunctions=[],this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null)}fixChromeAudio(e){if("chrome"!==Im)return;const t=this._getLocalCameraStream(),r=t.getAudioTracks()[0];return r&&"ended"===r.readyState?navigator.mediaDevices.getUserMedia({audio:e}).then((e=>{const i=e.getAudioTracks()[0];return i.enabled=r.enabled,t.removeTrack(r),t.addTrack(i),this.replaceTrack(r,i)})):void 0}setupSocketListeners(){this._socketListenerDeregisterFunctions=[()=>this._clearMediaServersRefresh(),this._serverSocket.on(Eh,(e=>{e.error?Om.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(Bh,(e=>{this._connect(e.clientId)})),this._serverSocket.on(Ah,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(e.message):Om.warn("No RTCPeerConnection on ICE_CANDIDATE",e)})),this._serverSocket.on(Nh,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(null):Om.warn("No RTCPeerConnection on ICE_END_OF_CANDIDATES",e)})),this._serverSocket.on(Uh,(e=>{const t=this._getSession(e.clientId);if(!t)return void Om.warn("No RTCPeerConnection on SDP_OFFER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleOffer(r).then((t=>{this._emitServerEvent(Fh,{receiverId:e.clientId,message:this._transformOutgoingSdp(t)})}))})),this._serverSocket.on(Fh,(e=>{const t=this._getSession(e.clientId);if(!t)return void Om.warn("No RTCPeerConnection on SDP_ANSWER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleAnswer(r)})),this._serverSocket.on(Mh,(({room:{sfuServer:e}})=>{if(e||!this._wasScreenSharing)return;const t=Object.keys(this.localStreams).find((e=>e!==Em));if(!t)return;const r=this.localStreams[t];if(!r)return void Om.warn("screenshare stream %s not found",t);const i=r.getAudioTracks().length>0;this._emitServerEvent(Ph,{streamId:t,hasAudioTrack:i})}))]}sendAudioMutedStats(e){ph.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){ph.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){ph.sendEvent(e,t)}rtcStatsDisconnect(){ph.server.close()}rtcStatsReconnect(){ph.server.connected||ph.server.connect()}setAudioOnly(e){this._isAudioOnlyMode=e,this._forEachPeerConnection((e=>{e.hasConnectedPeerConnection()&&this._withForcedRenegotiation(e,(()=>e.setAudioOnly(this._isAudioOnlyMode,this._screenshareVideoTrackIds)))}))}setRemoteScreenshareVideoTrackIds(e=[]){const t=this._getFirstLocalNonCameraStream();this._screenshareVideoTrackIds=[...(null==t?void 0:t.track)?[t.track.id]:[],...e]}setRoomSessionId(e){this._roomSessionId=e}_setConnectionStatus(e,t,r){const i=e.connectionStatus;i!==t&&e.peerConnectionId!==this._selfId&&(i===Yh&&t===Jh||(e.connectionStatus=t,setTimeout((()=>{this._emit(Vh,{streamIds:e.streamIds,clientId:r,status:t,previous:i})}),0)))}_setJitterBufferTarget(e){try{e.getReceivers().forEach((e=>{e.jitterBufferTarget=Wu,e.playoutDelayHint=.4}))}catch(e){Om.error("Error during setting jitter buffer target:",e)}}_emitServerEvent(e,t,r){this._serverSocket.emit(e,t,r)}_emit(e,t){this._emitter.emit(e,t)}_addEnabledLocalStreamId(e){this.enabledLocalStreamIds.push(e)}_deleteEnabledLocalStreamId(e){const t=this.enabledLocalStreamIds.indexOf(e);-1!==t&&this.enabledLocalStreamIds.splice(t,1)}_getSession(e){return e in this.peerConnections?this.peerConnections[e]:null}_getOrCreateSession(e,t){let r=this.peerConnections[e];if(void 0===r){const i="safari"===Im&&xm&&xm>=14&&this._features.deprioritizeH264OnSafari;this.peerConnections[e]=r=new Rh({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:this._features.unlimitedBandwidthWhenUsingRelayP2POn?-1:1280,deprioritizeH264Encoding:i}),this.totalSessionsCreated++}return r}_getLocalCameraStream(){return this.localStreams[Em]}_getNonLocalCameraStreamIds(){return Object.keys(this.localStreams).filter((e=>e!==Em))}_isScreensharingLocally(){return this._getNonLocalCameraStreamIds().length>0}_getFirstLocalNonCameraStream(){const e=this._getNonLocalCameraStreamIds();return 0===e.length?null:this.localStreams[e[0]]}_transformIncomingSdp(e,t){return{type:e.type,sdp:e.sdpU}}_transformOutgoingSdp(e){return{type:e.type,sdpU:e.sdp}}_createSession({clientId:e,initialBandwidth:t,isOfferer:r,peerConnectionId:i,shouldAddLocalVideo:n}){if(!i)throw new Error("peerConnectionId is missing");if(!e)throw new Error("clientId is missing");const s=this._getOrCreateSession(i,t),a={optional:[]};"chrome"===Im&&a.optional.push({googCpuOveruseDetection:!0}),a.optional.push({rtcStatsRoomSessionId:this._roomSessionId}),a.optional.push({rtcStatsClientId:this._selfId}),a.optional.push({rtcStatsPeerId:i}),a.optional.push({rtcStatsConferenceId:this._roomName});const o={iceServers:this._iceServers};if(this._features.turnServerOverrideHost){const e=this._features.turnServerOverrideHost,t=e.indexOf(":")>0?"":":443",r=":"+e+t;o.iceServers=o.iceServers.map((e=>{const t=Object.assign({},e);return t.url&&(t.url=t.url.replace(/:[^?]*/,r)),t.urls&&(t.urls=t.urls.map((e=>e.replace(/:[^?]*/,r)))),t}))}if(this._features.useOnlyTURN){o.iceTransportPolicy="relay";const e={onlyudp:/^turn:.*transport=udp$/,onlytcp:/^turn:.*transport=tcp$/,onlytls:/^turns:.*transport=tcp$/}[this._features.useOnlyTURN];e&&(o.iceServers=o.iceServers.filter((t=>t.url&&t.url.match(e))))}"chrome"===Im&&(o.sdpSemantics="unified-plan");const c=s.setAndGetPeerConnection({constraints:a,peerConnectionConfig:o,shouldAddLocalVideo:n,clientId:e});setTimeout((()=>this._emit(Rm)),0),c.ontrack=t=>{const r=t.streams[0];"default"===r.id&&0===r.getAudioTracks().length||-1===s.streamIds.indexOf(r.id)&&(s.streamIds.push(r.id),this._emit(qh,{clientId:e,stream:r}),s.connectionStatus===Zh&&setTimeout((()=>{this._emit(Vh,{streamIds:s.streamIds,clientId:e,status:s.connectionStatus,previous:Jh})}),0))},c.oniceconnectionstatechange=()=>{let t;const r=s.connectionStatus;switch(c.iceConnectionState){case"checking":t=Jh;break;case"connected":case"completed":t=Zh,s.wasEverConnected||(this._pendingActionsForConnectedPeerConnections.forEach((e=>{"function"==typeof e&&e()})),this._pendingActionsForConnectedPeerConnections=[]),!s.wasEverConnected&&(c.iceConnectionState.match(/connected|completed/)||"chrome"===Im&&c.localDescription&&"answer"===c.localDescription.type)&&(s.wasEverConnected=!0,"false"!==this._features.bandwidth&&this.maybeRestrictRelayBandwidth(s)),this._isAudioOnlyMode&&s.setAudioOnly(!0,this._screenshareVideoTrackIds),s.registerConnected();break;case"disconnected":t=Yh,setTimeout((()=>{"disconnected"===c.iceConnectionState&&this._maybeRestartIce(e,s)}),2e3);break;case"failed":t=Qh,r!==t&&this._maybeRestartIce(e,s),null!==s.relayCandidateSeen||s.wasEverConnected||this._emit(gm);break;default:return}this._setConnectionStatus(s,t,e)},c.onconnectionstate=()=>{switch(c.connectionState){case"connected":setTimeout((()=>{(function(e){if("chrome"!==Hu.browserDetails.browser||Hu.browserDetails.browser<58||"closed"===e.signalingState)return Promise.resolve(!1);const t=e.getSenders().some((e=>e.track&&"audio"===e.track.kind)),r=e.getReceivers().some((e=>e.track&&"audio"===e.track.kind));return e.getStats(null).then((e=>{let i=!1;return e.forEach((e=>{"outbound-rtp"!==e.type||"audio"!==e.kind&&"audio"!==e.mediaType||!t?"inbound-rtp"!==e.type||"audio"!==e.kind&&"audio"!==e.mediaType||!r||0===e.bytesReceived&&(i="inbound"):0===e.bytesSent&&(i="outbound")})),i}))})(s.pc).then((t=>{!1!==t&&this._emit(Sm,{failureDirection:t,clientId:e})}))}),3e3),s.registerConnected();break;case"failed":const t=Qh;null!==s.relayCandidateSeen||s.wasEverConnected||this._emit(gm),this._setConnectionStatus(s,t,e)}};const d=this.localStreams[Em];return n&&d&&s.addStream(d),n&&Object.keys(this.localStreams).forEach((e=>{if(e===Em)return;const t=this.localStreams[e];r?s.addStream(t):s.afterConnected.then((()=>{this._emitServerEvent(Ph,{receiverId:s.clientId,streamId:t.id,hasAudioTrack:!!t.getAudioTracks().length}),this._withForcedRenegotiation(s,(()=>s.addStream(t)))}))})),s}_cleanup(e){const t=this._getSession(e);t?(t.close(),delete this.peerConnections[e]):Om.warn("No RTCPeerConnection in RTCManager.disconnect()",e)}_forEachPeerConnection(e){Object.values(this.peerConnections).forEach((t=>{e(t)}))}_addStreamToPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.addStream(e)))}))}_addTrackToPeerConnections(e,t){this._forEachPeerConnection((r=>{this._withForcedRenegotiation(r,(()=>r.addTrack(e,t)))}))}_replaceTrackToPeerConnections(e,t){const r=[];return this._forEachPeerConnection((i=>{if(!i.hasConnectedPeerConnection()){Om.info("Session doesn't have a connected PeerConnection, adding pending action!");const n=this._pendingActionsForConnectedPeerConnections;if(!n)return void Om.warn("No pending action is created to repalce track, because the pending actions array is null");const s=new Promise(((r,s)=>{n.push((()=>{const n=i.replaceTrack(e,t);if(!n)return Om.error("replaceTrack returned false!"),void s("ReplaceTrack returned false");n.then((e=>r(e))).catch((e=>s(e)))}))}));return void r.push(s)}const n=i.replaceTrack(e,t);n?r.push(n):Om.error("replaceTrack returned false!")})),Promise.all(r)}_removeStreamFromPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.removeStream(e)))}))}_removeTrackFromPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.removeTrack(e)))}))}_addLocalStream(e,t){this._addEnabledLocalStreamId(e),this.localStreams[e]=t}_removeLocalStream(e){delete this.localStreams[e],this._deleteEnabledLocalStreamId(e)}_updateAndScheduleMediaServersRefresh({iceServers:e,sfuServer:t,mediaserverConfigTtlSeconds:r}){this._iceServers=e,this._sfuServer=t,this._mediaserverConfigTtlSeconds=r,this._clearMediaServersRefresh(),r&&(this._fetchMediaServersTimer=setTimeout((()=>this._emitServerEvent(Th)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}_startMonitoringAudioTrack(e){e.addEventListener("ended",this._audioTrackOnEnded)}_stopMonitoringAudioTrack(e){e.removeEventListener("ended",this._audioTrackOnEnded)}_connect(e){this.rtcStatsReconnect();let t=this._getSession(e),r=t&&t.bandwidth||0;return t?(Om.warn("Replacing peer session",e),this._cleanup(e)):r=this._changeBandwidthForAllClients(!0),t=this._createP2pSession(e,r,!0,!0),this._negotiatePeerConnection(e,t),Promise.resolve(t)}_maybeRestartIce(e,t){const r=t.pc;"disconnected"!==r.iceConnectionState&&"failed"!==r.iceConnectionState||"offer"===r.localDescription.type&&(t.wasEverConnected=!1,t.relayCandidateSeen=!1,t.serverReflexiveCandidateSeen=!1,t.publicHostCandidateSeen=!1,t.ipv6HostCandidateSeen=!1,this.ipv6HostCandidateTeredoSeen=!1,this.ipv6HostCandidate6to4Seen=!1,this.mdnsHostCandidateSeen=!1,this._emit(wm),this._negotiatePeerConnection(e,t,Object.assign({},this.offerOptions,{iceRestart:!0})))}_setCodecPreferences(e,t,r,i){try{const n=e.getTransceivers().filter((e=>{var t,r;return"audio"===(null===(r=null===(t=null==e?void 0:e.sender)||void 0===t?void 0:t.track)||void 0===r?void 0:r.kind)}));n.forEach((e=>{if(void 0===RTCRtpSender.getCapabilities)return;const t=RTCRtpSender.getCapabilities("audio");for(let e=0;e<t.codecs.length;e++)if(i&&"audio/red"===t.codecs[e].mimeType.toLowerCase()){t.codecs.unshift(t.codecs.splice(e,1)[0]);break}void 0!==e.setCodecPreferences&&e.setCodecPreferences(t.codecs)}));const s=e.getTransceivers().filter((e=>{var t,r;return"video"===(null===(r=null===(t=null==e?void 0:e.sender)||void 0===t?void 0:t.track)||void 0===r?void 0:r.kind)}));s.forEach((e=>{if(void 0===RTCRtpSender.getCapabilities)return;const i=RTCRtpSender.getCapabilities("video");for(let e=0;e<i.codecs.length;e++){if(t&&"video/vp9"===i.codecs[e].mimeType.toLowerCase()){i.codecs.unshift(i.codecs.splice(e,1)[0]);break}if(r&&"video/av1"===i.codecs[e].mimeType.toLowerCase()){i.codecs.unshift(i.codecs.splice(e,1)[0]);break}}void 0!==e.setCodecPreferences&&e.setCodecPreferences(i.codecs)}))}catch(e){Om.error("Error during setting setCodecPreferences:",e)}}_negotiatePeerConnection(e,t,r){if(!t)return void Om.warn("No RTCPeerConnection in negotiatePeerConnection()",e);const i=t.pc;if(!t.canModifyPeerConnection())return void t.pending.push((()=>{this._negotiatePeerConnection(e,t,r)}));t.isOperationPending=!0;const{vp9On:n,av1On:s,redOn:a,rtpAbsCaptureTimeOn:o}=this._features;(n||s||a)&&this._setCodecPreferences(i,n,s,a),i.createOffer(r||this.offerOptions).then((r=>{o&&(r.sdp=bh(r.sdp)),(n||a)&&"firefox"===Im&&(r.sdp=function(e,t,r){var i,n;try{const s=cn(e);if(Array.isArray(null==s?void 0:s.media)){const e=s.media.find((e=>"audio"===e.type));if(Array.isArray(null==e?void 0:e.rtp)){const t=e.rtp;for(let n=0;n<t.length;n++)if(r&&"red"===t[n].codec){const r=null===(i=e.payloads)||void 0===i?void 0:i.split(" "),s=null==r?void 0:r.indexOf(""+t[n].payload);s&&-1!==s&&s>=0&&(null==r||r.unshift(r.splice(s,1)[0]),e.payloads=null==r?void 0:r.join(" "))}}const a=s.media.find((e=>"video"===e.type));if(Array.isArray(null==a?void 0:a.rtp)){const e=a.rtp;for(let r=0;r<e.length;r++)if(t&&"VP9"===e[r].codec){const t=null===(n=a.payloads)||void 0===n?void 0:n.split(" "),i=null==t?void 0:t.indexOf(""+e[r].payload);i&&-1!==i&&i>=0&&(null==t||t.unshift(t.splice(i,1)[0]),a.payloads=null==t?void 0:t.join(" "))}}}return on(s)}catch(e){mh.error("setCodecPreferenceSDP error:",e)}}(r.sdp,n,a)),this._emitServerEvent(Uh,{receiverId:e,message:this._transformOutgoingSdp(r)}),"chrome"===Im&&i.getSenders().filter((e=>e.track&&"video"===e.track.kind)).length>=2?t.pendingOffer=r:i.setLocalDescription(r).catch((t=>{Om.warn("RTCPeerConnection.setLocalDescription() failed with local offer",t),this._features.reverseOfferOnFailure&&(this._lastReverseDirectionAttemptByClientId||(this._lastReverseDirectionAttemptByClientId={}),(!this._lastReverseDirectionAttemptByClientId[e]||this._lastReverseDirectionAttemptByClientId[e]<Date.now()-1e4)&&(this.acceptNewStream({clientId:e,streamId:e,shouldAddLocalVideo:!0}),this._lastReverseDirectionAttemptByClientId[e]=Date.now()))}))})).catch((e=>{Om.warn("RTCPeerConnection.createOffer() failed to create local offer",e)}))}_withForcedRenegotiation(e,t){const r=e.pc,i=r.onnegotationneeded;r.onnegotiationneeded=null,t(),this._negotiatePeerConnection(e.clientId,e),setTimeout((()=>r.onnegotiationneeded=i),0)}_changeBandwidthForAllClients(e){let t=this.numberOfPeerconnections();if(e&&(t+=1),0===t)return 0;t>7&&(t=7);let r=this._features.bandwidth?parseInt(this._features.bandwidth,10):{1:0,2:this._features.highP2PBandwidth?768:384,3:this._features.highP2PBandwidth?512:256,4:192,5:128,6:128,7:64}[t];if(void 0===r)return 0;if(this._features.adjustBitratesFromResolution){const e=this._getLocalCameraStream();if(e){const t=e&&e.getVideoTracks()[0];if(t){const{width:e,height:i,frameRate:n}=t.getSettings();if(e&&i&&n){const t=Math.round(function(e,t,r){let i=e*t;i<tm&&(i=tm),i>im&&(i=im);let n=rm;i>im?n=nm:i>tm&&(n+=-17582143775720163e-22*(i-tm));let s=e*t*n;return r<=15?s*=.7:r<=24&&(s*=.9),s}(e,i,n)/1e3);r=Math.min(t,r||t)}}}}return this._features.higherP2PBitrates&&(r*=1.5),this._forEachPeerConnection((e=>{e.changeBandwidth(r)})),r}_createP2pSession(e,t,r,i){const n=this._createSession({peerConnectionId:e,clientId:e,initialBandwidth:t,shouldAddLocalVideo:r,isOfferer:i}),s=n.pc;this._features.increaseIncomingMediaBufferOn&&this._setJitterBufferTarget(s);const a=this.localStreams[Em];return r&&a&&!a.getVideoTracks().length&&this._stoppedVideoTrack&&s.addTrack(this._stoppedVideoTrack,a),s.onicegatheringstatechange=e=>{switch(e.target.iceGatheringState){case"gathering":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=setTimeout((()=>{n.publicHostCandidateSeen||n.relayCandidateSeen||n.serverReflexiveCandidateSeen||this._emit(ym)}),3e3);break;case"complete":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=void 0}},s.onicecandidate=t=>{var r,i;if(t.candidate){switch(null===(r=t.candidate)||void 0===r?void 0:r.type){case"host":const e=null===(i=null==t?void 0:t.candidate)||void 0===i?void 0:i.address;try{if(hm.v4({exact:!0}).test(e)){Yl(e).isPublicIp&&(n.publicHostCandidateSeen=!0)}else if(hm.v6({exact:!0}).test(e.replace(/^\[(.*)\]/,"$1"))){const t=new Wd.Address6(e.replace(/^\[(.*)\]/,"$1"));n.ipv6HostCandidateSeen=!0,"Global"===t.getScope()&&(n.publicHostCandidateSeen=!0),t.isTeredo()&&(n.ipv6HostCandidateTeredoSeen=!0),t.is6to4()&&(n.ipv6HostCandidate6to4Seen=!0)}else{const t=e.replace(/.local/,"");t&&np(t,4)&&(n.mdnsHostCandidateSeen=!0)}}catch(e){Om.info("Error during parsing candidates! Error: ",{error:e})}break;case"srflx":n.serverReflexiveCandidateSeen||(n.serverReflexiveCandidateSeen=!0);break;case"relay":case"relayed":n.relayCandidateSeen||(n.relayCandidateSeen=!0)}this._emitServerEvent(Ah,{receiverId:e,message:t.candidate})}else this._emitServerEvent(Nh,{receiverId:e}),n.publicHostCandidateSeen||n.relayCandidateSeen||n.serverReflexiveCandidateSeen||this._emit(bm),n.ipv6HostCandidateSeen&&this._emit(vm,{teredoSeen:n.ipv6HostCandidateTeredoSeen,sixtofourSeen:n.ipv6HostCandidate6to4Seen}),n.mdnsHostCandidateSeen&&this._emit(_m)},s.onnegotiationneeded=()=>{"new"!==s.iceConnectionState&&n.connectionStatus&&this._negotiatePeerConnection(e,n)},n}acceptNewStream({streamId:e,clientId:t,shouldAddLocalVideo:r}){let i=this._getSession(t);if(i&&e!==t)return i;let n=i&&i.bandwidth||0;return i?(Om.warn("Replacing peer session",t),this._cleanup(t)):n=this._changeBandwidthForAllClients(!0),i=this._createP2pSession(t,n,r),this._emitServerEvent(Bh,{receiverId:t}),i}disconnect(e){this._cleanup(e),this._changeBandwidthForAllClients(!1);0===this.numberOfPeerconnections()&&setTimeout((()=>{0===this.numberOfPeerconnections()&&this.rtcStatsDisconnect()}),6e4)}updateStreamResolution(){}stopOrResumeAudio(){}_handleStopOrResumeVideo({enable:e,track:t}){e?this._stoppedVideoTrack?(this._replaceTrackToPeerConnections(this._stoppedVideoTrack,t),delete this._stoppedVideoTrack):this._addTrackToPeerConnections(t):this._stoppedVideoTrack=t}stopOrResumeVideo(e,t){if(["chrome","safari"].includes(Im))if(!1===t)setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emit(Kh,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),5e3);else if(0===e.getVideoTracks().length){const r=this._webrtcProvider.getMediaConstraints().video;if(!r)return;navigator.mediaDevices.getUserMedia({video:r}).then((r=>{const i=r.getVideoTracks()[0];e.addTrack(i),this._emit(Wh,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}_shareScreen(e,t){this._emitServerEvent(Ph,{streamId:e,hasAudioTrack:!!t.getAudioTracks().length}),this._wasScreenSharing=!0,this._addStreamToPeerConnections(t)}removeStream(e,t,r){this._removeLocalStream(e),this._removeStreamFromPeerConnections(t),this._wasScreenSharing=!1,this._emitServerEvent(kh,{streamId:e,requestedByClientId:r})}hasClient(e){return Object.keys(this.peerConnections).includes(e)}}var Lm=Object.freeze({__proto__:null,KalmanFilter:class{constructor({R:e=.01,Q:t=2,A:r=1.1,B:i=1,C:n=1.2}={R:.01,Q:2,A:1.1,B:1,C:1.2}){this.R=e,this.Q=t,this.A=r,this.C=n,this.B=i,this.cov=NaN,this.x=NaN}filter(e,t=0){if(isNaN(this.x))this.x=1/this.C*e,this.cov=1/this.C*this.Q*(1/this.C);else{const r=this.predict(t),i=this.uncertainty(),n=i*this.C*(1/(this.C*i*this.C+this.Q));this.x=r+n*(e-this.C*r),this.cov=i-n*this.C*i}return this.x}predict(e=0){return this.A*this.x+this.B*e}uncertainty(){return this.A*this.cov*this.A+this.R}lastMeasurement(){return this.x}setMeasurementNoise(e){this.Q=e}setProcessNoise(e){this.R=e}},calculateStd:e=>{const t=e.reduce(((e,t)=>e+t),0)/e.length;return e.reduce(((e,r)=>e.concat(Math.pow(r-t,2))),[]).reduce(((e,t)=>e+t),0)/e.length},createACFCalculator:()=>{let e=-1,t=0,r=0;return i=>{const n=i.reduce(((e,t)=>e+t),0)/i.length;if(e=e<0?n:.95*e+.05*n,++r<2)return t=n,0;const s=(n-e)*(t-e);return t=n,s}},standardDeviation:e=>{const t=e.reduce(((e,t)=>e+t),0)/e.length;return{mean:t,SD:Math.sqrt(e.reduce(((e,r)=>e+Math.pow(r-t,2)),0)/e.length)}},variance:(e,t=!1)=>{const r=e.reduce(((e,t)=>e+t),0)/e.length;return e.reduce(((e,t)=>e.concat(Math.pow(t-r,2))),[]).reduce(((e,t)=>e+t),0)/(e.length-(t?0:1))}});const Am={minDecibels:-80,maxDecibels:-10,smoothingTimeConstant:.8,aggSize:1,sampleRate:10,reportRate:2,bins:32,bands:[[0,1,2,3],[4,5,6,7]],separateTrack:{autoGainControl:!1,noiseSupression:!1},binFormula:"bin",scoreFormula:"300 * bands[1].avg / Math.max(bands[1].avg + bands[0].avg, 0.01)",outFormula:"score"},Nm=new xu;const Bm=new xu,Fm=Object.freeze({ok:"ok",warning:"warning",critical:"critical"});class Um extends Ft{constructor(){super(),this._clients={},this._producers={},this._startMonitor()}close(){clearInterval(this._intervalHandle),delete this._intervalHandle,this._producers={},this._clients={}}_startMonitor(){this._intervalHandle=setInterval((()=>{Object.entries(this._producers).forEach((([e,t])=>{this._evaluateClient(e,t)}))}),600)}_evaluateClient(e,t){this._clients[e]||(this._clients[e]={audio:{currentQuality:Fm.ok,trend:[]},video:{currentQuality:Fm.ok,trend:[]}}),this._evaluateProducer(e,Object.values(t).filter((e=>"audio"===e.kind)),"audio"),this._evaluateProducer(e,Object.values(t).filter((e=>"video"===e.kind)),"video")}_evaluateProducer(e,t,r){if(0===t.length)return;const i=t.reduce(((e,t)=>e+t.score),0)/t.length,n=this._evaluateScore(i);this._updateTrend(n,this._clients[e][r])&&this.emit(zh,{clientId:e,kind:r,quality:n})}_updateTrend(e,t){return t.trend.push(e),t.trend.length>3&&t.trend.shift(),!(e===t.currentQuality||!t.trend.every((e=>e!==t.currentQuality)))&&(t.currentQuality=e,!0)}addProducer(e,t){e&&t&&"string"==typeof e&&"string"==typeof t?(this._producers[e]||(this._producers[e]={}),this._producers[e][t]={}):Bm.warn("Missing clientId or producerId")}removeProducer(e,t){delete this._producers[e][t],0===Object.keys(this._producers[e]).length&&delete this._producers[e]}addConsumer(e,t){e&&t?(this._producers[e]||(this._producers[e]={}),this._producers[e][t]={}):Bm.warn("Missing clientId or consumerId")}removeConsumer(e,t){delete this._producers[e][t],0===Object.keys(this._producers[e]).length&&delete this._producers[e]}addProducerScore(e,t,r,i){Array.isArray(i)&&0!==i.length&&!i.some((e=>!e||!e.hasOwnProperty("score")||"number"!=typeof e.score||isNaN(e.score)))?this._producers[e][t]={kind:r,score:this._calcAvgProducerScore(i.map((e=>e.score)))}:Bm.warn("Unexpected producer score format")}addConsumerScore(e,t,r,i){i&&i.hasOwnProperty("producerScores")&&Array.isArray(i.producerScores)?this._producers[e][t]={kind:r,score:this._calcAvgProducerScore(i.producerScores)}:Bm.warn("Unexpected consumer score format")}_evaluateScore(e){return e<=9&&e>7?Fm.warning:e<=7&&e>0?Fm.critical:Fm.ok}_calcAvgProducerScore(e){try{if(!Array.isArray(e)||0===e.length)return 0;let t=0,r=0;return e.forEach((e=>{e>0&&(t+=e,r++)})),0===t||0===r?0:t/r}catch(e){return Bm.error(e),0}}}var $m;const zm=null!==($m=Nd.default)&&void 0!==$m?$m:Nd,Vm=new xu,qm=zm.browserDetails.browser;let Gm=!1;const Hm=Hd(),Wm=Hd();"chrome"===qm&&window.document.addEventListener("beforeunload",(()=>Gm=!0));class Km{constructor({selfId:e,room:t,emitter:r,serverSocket:i,webrtcProvider:n,features:s,eventClaim:a,deviceHandlerFactory:o}){const{session:c,iceServers:d,sfuServer:l,mediaserverConfigTtlSeconds:p}=t;this._selfId=e,this._room=t,this._roomSessionId=null==c?void 0:c.id,this._emitter=r,this._serverSocket=i,this._webrtcProvider=n,this._features=s||{},this._eventClaim=a,this._vegaConnection=null,this._micAnalyser=null,this._micAnalyserDebugger=null,this._mediasoupDevice=o?new Zt.Device({handlerFactory:o}):new Zt.Device({handlerName:qu()}),this._routerRtpCapabilities=null,this._sendTransport=null,this._receiveTransport=null,this._clientStates=new Map,this._streamIdToVideoConsumerId=new Map,this._consumers=new Map,this._dataConsumers=new Map,this._localStreamDeregisterFunction=null,this._micTrack=null,this._webcamTrack=null,this._screenVideoTrack=null,this._screenAudioTrack=null,this._micProducer=null,this._micProducerPromise=null,this._micPaused=!1,this._micScoreProducer=null,this._micScoreProducerPromise=null,this._webcamProducer=null,this._webcamProducerPromise=null,this._webcamPaused=!1,this._screenVideoProducer=null,this._screenVideoProducerPromise=null,this._screenAudioProducer=null,this._screenAudioProducerPromise=null,this._sndTransportIceRestartPromise=null,this._rcvTransportIceRestartPromise=null,this._colocation=null,this._stopCameraTimeout=null,this._audioTrackOnEnded=()=>{ph.sendEvent("audio_ended",{unloading:Gm}),this._emitToPWA(Cm,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:l,iceServers:d.iceServers||[],mediaserverConfigTtlSeconds:p}),this._socketListenerDeregisterFunctions=[],this._reconnect=!0,this._reconnectTimeOut=null,this._qualityMonitor=new Um,this._qualityMonitor.on(zh,(e=>{this._emitToPWA(zh,e)}))}_updateAndScheduleMediaServersRefresh({iceServers:e,sfuServer:t,mediaserverConfigTtlSeconds:r}){var i,n;this._iceServers=e,this._sfuServer=t,this._mediaserverConfigTtlSeconds=r,null===(i=this._sendTransport)||void 0===i||i.updateIceServers({iceServers:this._iceServers}),null===(n=this._receiveTransport)||void 0===n||n.updateIceServers({iceServers:this._iceServers}),this._clearMediaServersRefresh(),r&&(this._fetchMediaServersTimer=setTimeout((()=>this._emitToSignal(Th)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}setupSocketListeners(){this._socketListenerDeregisterFunctions.push((()=>this._clearMediaServersRefresh()),this._serverSocket.on(Eh,(e=>{e.error?Vm.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(Mh,(()=>{this._screenVideoTrack&&this._emitScreenshareStarted()}))),this._connect()}_emitScreenshareStarted(){this._emitToSignal(Ph,{streamId:Wm,hasAudioTrack:Boolean(this._screenAudioTrack)})}_connect(){const e=`wss://${this._features.sfuServerOverrideHost||[this._sfuServer.url]}?${new URLSearchParams({clientId:this._selfId,organizationId:this._room.organizationId,roomName:this._room.name,eventClaim:this._room.isClaimed?this._eventClaim:null,lowBw:"true"}).toString()}`;this._vegaConnection=new Lu(e),this._vegaConnection.on("open",(()=>this._join())),this._vegaConnection.on("close",(()=>this._onClose())),this._vegaConnection.on("message",(e=>this._onMessage(e)))}_onClose(){var e,t;Vm.info("_onClose()"),null===(e=this._sendTransport)||void 0===e||e.close(),null===(t=this._receiveTransport)||void 0===t||t.close(),this._sendTransport=null,this._receiveTransport=null,this._streamIdToVideoConsumerId.clear(),this._reconnect&&(this._reconnectTimeOut=setTimeout((()=>this._connect()),1e3)),this._qualityMonitor.close(),this._emitToPWA(Pm)}_join(){return ku(this,void 0,void 0,(function*(){Vm.info("join()"),this._emitToPWA(Tm);try{const{routerRtpCapabilities:e}=yield this._vegaConnection.request("getCapabilities");this._routerRtpCapabilities||(((e,t)=>{const{vp9On:r,h264On:i}=t;if(r){const{preferredPayloadType:t}=e.codecs.find((e=>"video/vp9"===e.mimeType.toLowerCase())),{preferredPayloadType:r}=e.codecs.find((e=>"video/rtx"===e.mimeType.toLowerCase()&&e.parameters.apt===t));e.codecs=e.codecs.filter((e=>"audio"===e.kind||e.preferredPayloadType===t||e.preferredPayloadType===r))}else if(i){const{preferredPayloadType:t}=e.codecs.find((e=>"video/h264"===e.mimeType.toLowerCase())),{preferredPayloadType:r}=e.codecs.find((e=>"video/rtx"===e.mimeType.toLowerCase()&&e.parameters.apt===t));e.codecs=e.codecs.filter((e=>"audio"===e.kind||e.preferredPayloadType===t||e.preferredPayloadType===r))}})(e,this._features),this._routerRtpCapabilities=e,yield this._mediasoupDevice.load({routerRtpCapabilities:e})),this._vegaConnection.message("setCapabilities",{rtpCapabilities:this._mediasoupDevice.rtpCapabilities}),this._colocation&&this._vegaConnection.message("setColocation",{colocation:this._colocation}),yield Promise.all([this._createTransport(!0),this._createTransport(!1)]);const t=[];!this._micTrack||this._micProducer||this._micProducerPromise||t.push(this._internalSendMic()),!this._webcamTrack||this._webcamProducer||this._webcamProducerPromise||t.push(this._internalSendWebcam()),!this._screenVideoTrack||this._screenVideoProducer||this._screenVideoProducerPromise||t.push(this._internalSendScreenVideo()),!this._screenAudioTrack||this._screenAudioProducer||this._screenAudioProducerPromise||t.push(this._internalSendScreenAudio()),yield Promise.all(t)}catch(e){Vm.error("_join() [error:%o]",e)}}))}_createTransport(e){return ku(this,void 0,void 0,(function*(){const t=e?"createSendTransport":"createRecvTransport",r=yield this._vegaConnection.request("createTransport",{producing:e,consuming:!e,enableTcp:!0,enableUdp:!0,preferUdp:!0,sctpParameters:{enableSctp:!0,numSctpStreams:{OS:1024,MIS:1024},maxSctpMessageSize:262144,sctpSendBufferSize:262144}});r.iceServers=this._iceServers,((e,t)=>{if(!t.useOnlyTURN)return;e.iceTransportPolicy="relay";const r={onlyudp:/^turn:.*transport=udp$/,onlytcp:/^turn:.*transport=tcp$/,onlytls:/^turns:.*transport=tcp$/}[t.useOnlyTURN];r&&(e.iceServers=e.iceServers.filter((e=>e.url&&e.url.match(r))))})(r,this._features);const i=this._mediasoupDevice[t](r),n=t=>ku(this,void 0,void 0,(function*(){if(Vm.info(`Transport ConnectionStateChanged ${t}`),"disconnected"===t||"failed"===t)if(e){if(this._sndTransportIceRestartPromise)return;this._sndTransportIceRestartPromise=this._restartIce(i).finally((()=>{this._sndTransportIceRestartPromise=null}))}else{if(this._rcvTransportIceRestartPromise)return;this._rcvTransportIceRestartPromise=this._restartIce(i).finally((()=>{this._rcvTransportIceRestartPromise=null}))}}));i.on("connect",(({dtlsParameters:e},t)=>{var r;null===(r=this._vegaConnection)||void 0===r||r.message("connectTransport",{transportId:i.id,dtlsParameters:e}),t()})).on("connectionstatechange",n),i.observer.once("close",(()=>{i.removeListener(n)})),e?(i.on("produce",(({kind:e,rtpParameters:t,appData:r},n,s)=>ku(this,void 0,void 0,(function*(){var a;try{const{paused:s}=r,{id:o}=yield null===(a=this._vegaConnection)||void 0===a?void 0:a.request("produce",{transportId:i.id,kind:e,rtpParameters:t,paused:s,appData:r});n({id:o})}catch(e){s(e)}})))),i.on("producedata",(({appData:e,sctpStreamParameters:t},r,n)=>ku(this,void 0,void 0,(function*(){var s;try{const{id:n}=yield null===(s=this._vegaConnection)||void 0===s?void 0:s.request("produceData",{transportId:i.id,sctpStreamParameters:t,appData:e});r({id:n})}catch(e){n(e)}})))),this._sendTransport=i):this._receiveTransport=i}))}_restartIce(e,t=0){return ku(this,void 0,void 0,(function*(){if(!e||!("closed"in e)||!("connectionState"in e))return void Vm.info("_restartIce: No transport or property closed or connectionState!");if(e.closed)return void Vm.info("_restartIce: Transport is closed!");if("disconnected"!==e.connectionState&&"failed"!==e.connectionState)return void Vm.info("_restartIce: Connection is healthy ICE restart no loneger needed!");const{iceRestartStarted:r}=e.appData,i=Date.now();if(Number.isFinite(r)&&i-r<3500)return;if(e.appData.iceRestartStarted=i,5<=t)return void Vm.info("_restartIce: Reached restart ICE maximum retry count!");if(!this._vegaConnection)return void Vm.info("_restartIce: Connection is undefined");const{iceParameters:n}=yield this._vegaConnection.request("restartIce",{transportId:e.id});Vm.info("_restartIce: ICE restart iceParameters received from SFU: ",n);const s=yield e.restartIce({iceParameters:n}).then((()=>null)).catch((e=>e));if(s)switch(Vm.error(`_restartIce: ICE restart failed: ${s}`),s.message){case"missing transportId":case"no such transport":break;default:yield new Promise((e=>{setTimeout((()=>{e(void 0)}),Math.min(3500*Math.pow(2,t),6e4))})),yield this._restartIce(e,t+1)}else yield new Promise((e=>{setTimeout((()=>{e(void 0)}),6e4*Math.min(8,t+1))})),"failed"!==e.connectionState&&"disconnected"!==e.connectionState||(yield this._restartIce(e,t+1))}))}_internalSendMic(){return ku(this,void 0,void 0,(function*(){Vm.info("_internalSendMic()"),this._micProducerPromise=(()=>ku(this,void 0,void 0,(function*(){try{if(!this._micTrack||!this._sendTransport||this._micProducer)return void(this._micProducerPromise=null);const e=this._micPaused,t=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._micTrack,disableTrackOnPause:!1,stopTracks:!1},Vu("audio",!1,this._features)),{appData:{streamId:Hm,sourceClientId:this._selfId,screenShare:!1,source:"mic",paused:e}}));e?t.pause():t.resume(),this._micProducer=t,this._qualityMonitor.addProducer(this._selfId,t.id),t.observer.once("close",(()=>{var e;Vm.info('micProducer "close" event'),t.appData.localClosed&&(null===(e=this._vegaConnection)||void 0===e||e.message("closeProducers",{producerIds:[t.id]})),this._micProducer=null,this._micProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,t.id)})),this._micTrack!==this._micProducer.track&&(yield this._replaceMicTrack()),this._micPaused!==this._micProducer.paused&&this._pauseResumeMic()}catch(e){Vm.error("micProducer failed:%o",e)}finally{this._micProducerPromise=null,this._micTrack||(this._stopProducer(this._micProducer),this._micProducer=null)}})))()}))}_internalSetupMicScore(){return ku(this,void 0,void 0,(function*(){Vm.info("_internalSetupMicScore()"),this._micScoreProducerPromise=(()=>ku(this,void 0,void 0,(function*(){try{if(!this._micProducer||!this._colocation||this._micScoreProducer)return void(this._micScoreProducerPromise=null);const e=yield this._sendTransport.produceData({ordered:!1,maxPacketLifeTime:3e3,label:"micscore",appData:{producerId:this._micProducer.id,clientId:this._selfId}});this._micScoreProducer=e,e.observer.once("close",(()=>{var t;Vm.info('micScoreProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeDataProducers",{dataProducerIds:[e.id]})),this._micScoreProducer=null,this._micScoreProducerPromise=null}))}catch(e){Vm.error("micScoreProducer failed:%o",e)}finally{this._micScoreProducerPromise=null,this._micProducer&&this._colocation||this._stopMicScoreProducer()}})))()}))}_stopMicScoreProducer(){this._stopProducer(this._micScoreProducer),this._micScoreProducer=null}_replaceMicTrack(){var e;return ku(this,void 0,void 0,(function*(){Vm.info("_replaceMicTrack()"),this._micTrack&&this._micProducer&&!this._micProducer.closed&&this._micProducer.track!==this._micTrack&&(yield this._micProducer.replaceTrack({track:this._micTrack}),null===(e=this._micAnalyser)||void 0===e||e.setTrack(this._micTrack),yield this._replaceMicTrack())}))}_pauseResumeMic(){var e,t;Vm.info("_pauseResumeMic()"),this._micProducer&&!this._micProducer.closed&&this._micPaused!==this._micProducer.paused&&(this._micPaused?(this._micProducer.pause(),null===(e=this._vegaConnection)||void 0===e||e.message("pauseProducers",{producerIds:[this._micProducer.id]})):(this._micProducer.resume(),null===(t=this._vegaConnection)||void 0===t||t.message("resumeProducers",{producerIds:[this._micProducer.id]})),this._pauseResumeMic())}_sendMic(e){return ku(this,void 0,void 0,(function*(){return Vm.info("_sendMic() [track:%o]",e),this._micTrack=e,this._micProducer?yield this._replaceMicTrack():this._micProducerPromise?void 0:this._sendTransport?yield this._internalSendMic():void 0}))}_sendMicScore(e){if(!isNaN(e)&&isFinite(e))if(this._micScoreProducer){if(this._micScoreProducer.closed)return void this._stopMicScoreProducer();try{this._micScoreProducer.send(JSON.stringify({score:e}))}catch(e){Vm.error("_sendMicScore failed [error:%o]",e)}}else!this._micScoreProducerPromise&&this._micProducer&&this._colocation&&0!==e&&this._internalSetupMicScore()}_internalSendWebcam(){return ku(this,void 0,void 0,(function*(){Vm.info("_internalSendWebcam()"),this._webcamProducerPromise=(()=>ku(this,void 0,void 0,(function*(){try{if(!this._webcamTrack||"live"!==this._webcamTrack.readyState||!this._sendTransport||this._webcamProducer)return void(this._webcamProducerPromise=null);const e=this._webcamPaused,t=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._webcamTrack,disableTrackOnPause:!1,stopTracks:!1},Vu("video",!1,this._features)),{appData:{streamId:Hm,sourceClientId:this._selfId,screenShare:!1,source:"webcam",paused:e}}));e?t.pause():t.resume(),this._webcamProducer=t,this._qualityMonitor.addProducer(this._selfId,t.id),t.observer.once("close",(()=>{var e;Vm.info('webcamProducer "close" event'),t.appData.localClosed&&(null===(e=this._vegaConnection)||void 0===e||e.message("closeProducers",{producerIds:[t.id]})),this._webcamProducer=null,this._webcamProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,t.id)})),this._webcamTrack!==this._webcamProducer.track&&(yield this._replaceWebcamTrack()),this._webcamPaused!==this._webcamProducer.paused&&this._pauseResumeWebcam()}catch(e){Vm.error("webcamProducer failed:%o",e)}finally{this._webcamProducerPromise=null,this._webcamTrack||(yield this._stopProducer(this._webcamProducer),this._webcamProducer=null)}})))()}))}_replaceWebcamTrack(){return ku(this,void 0,void 0,(function*(){Vm.info("_replaceWebcamTrack()"),this._webcamTrack&&(!this._webcamProducer&&this._webcamTrack.enabled&&(yield this._internalSendWebcam()),this._webcamTrack&&this._webcamProducer&&!this._webcamProducer.closed&&this._webcamProducer.track!==this._webcamTrack&&(yield this._webcamProducer.replaceTrack({track:this._webcamTrack}),yield this._replaceWebcamTrack()))}))}_pauseResumeWebcam(){var e,t;Vm.info("_pauseResumeWebcam()"),this._webcamProducer&&!this._webcamProducer.closed&&this._webcamPaused!==this._webcamProducer.paused&&(this._webcamPaused?(this._webcamProducer.pause(),null===(e=this._vegaConnection)||void 0===e||e.message("pauseProducers",{producerIds:[this._webcamProducer.id]})):(this._webcamProducer.resume(),null===(t=this._vegaConnection)||void 0===t||t.message("resumeProducers",{producerIds:[this._webcamProducer.id]})),this._pauseResumeWebcam())}_sendWebcam(e){return ku(this,void 0,void 0,(function*(){return Vm.info("_sendWebcam() [track:%o]",e),this._webcamTrack=e,this._webcamProducer?yield this._replaceWebcamTrack():this._webcamProducerPromise?void 0:this._sendTransport?yield this._internalSendWebcam():void 0}))}_internalSendScreenVideo(){return ku(this,void 0,void 0,(function*(){Vm.info("_internalSendScreenVideo()"),this._screenVideoProducerPromise=(()=>ku(this,void 0,void 0,(function*(){try{if(!this._screenVideoTrack||!this._sendTransport||this._screenVideoProducer)return void(this._screenVideoProducerPromise=null);const e=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._screenVideoTrack,disableTrackOnPause:!1,stopTracks:!1},Vu("video",!0,this._features)),{appData:{streamId:Wm,sourceClientId:this._selfId,screenShare:!0,source:"screenvideo",paused:!1}}));this._screenVideoProducer=e,this._qualityMonitor.addProducer(this._selfId,e.id),e.observer.once("close",(()=>{var t;Vm.info('screenVideoProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeProducers",{producerIds:[e.id]})),this._screenVideoProducer=null,this._screenVideoProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,e.id)})),this._screenVideoTrack!==this._screenVideoProducer.track&&(yield this._replaceScreenVideoTrack())}catch(e){Vm.error("screenVideoProducer failed:%o",e)}finally{this._screenVideoProducerPromise=null,this._screenVideoTrack||(yield this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null)}})))()}))}_replaceScreenVideoTrack(){return ku(this,void 0,void 0,(function*(){Vm.info("_replaceScreenVideoTrack()"),this._screenVideoTrack&&this._screenVideoProducer&&!this._screenVideoProducer.closed&&this._screenVideoProducer.track!==this._screenVideoTrack&&(yield this._screenVideoProducer.replaceTrack({track:this._screenVideoTrack}),yield this._replaceScreenVideoTrack())}))}_sendScreenVideo(e){return ku(this,void 0,void 0,(function*(){return Vm.info("_sendScreenVideo() [track:%o]",e),this._screenVideoTrack=e,this._screenVideoProducer?yield this._replaceScreenVideoTrack():this._screenVideoProducerPromise?void 0:this._sendTransport?yield this._internalSendScreenVideo():void 0}))}_internalSendScreenAudio(){return ku(this,void 0,void 0,(function*(){Vm.info("_internalSendScreenAudio()"),this._screenAudioProducerPromise=(()=>ku(this,void 0,void 0,(function*(){try{if(!this._screenAudioTrack||!this._sendTransport||this._screenAudioProducer)return void(this._screenAudioProducerPromise=null);const e=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._screenAudioTrack,disableTrackOnPause:!1,stopTracks:!1},Vu("audio",!0,this._features)),{appData:{streamId:Wm,sourceClientId:this._selfId,screenShare:!0,source:"screenaudio",paused:!1}}));this._screenAudioProducer=e,this._qualityMonitor.addProducer(this._selfId,e.id),e.observer.once("close",(()=>{var t;Vm.info('screenAudioProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeProducers",{producerIds:[e.id]})),this._screenAudioProducer=null,this._screenAudioProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,e.id)})),this._screenAudioTrack!==this._screenAudioProducer.track&&(yield this._replaceScreenAudioTrack())}catch(e){Vm.error("screenAudioProducer failed:%o",e)}finally{this._screenAudioProducerPromise=null,this._screenAudioTrack||(yield this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null)}})))()}))}_replaceScreenAudioTrack(){return ku(this,void 0,void 0,(function*(){Vm.info("_replaceScreenAudioTrack()"),this._screenAudioTrack&&this._screenAudioProducer&&!this._screenAudioProducer.closed&&this._screenAudioProducer.track!==this._screenAudioTrack&&(yield this._screenAudioProducer.replaceTrack({track:this._screenAudioTrack}),yield this._replaceScreenAudioTrack())}))}_sendScreenAudio(e){return ku(this,void 0,void 0,(function*(){return Vm.info("_sendScreenAudio() [track:%o]",e),this._screenAudioTrack=e,this._screenAudioProducer?yield this._replaceScreenAudioTrack():this._screenAudioProducerPromise?void 0:this._sendTransport?yield this._internalSendScreenAudio():void 0}))}_stopProducer(e){Vm.info("_stopProducer()"),e&&!e.closed&&(e.appData.localClosed=!0,e.close())}isInitializedWith({selfId:e,roomName:t,isSfu:r}){return this._selfId===e&&this._room.name===t&&Boolean(r)}setEventClaim(e){var t;this._eventClaim=e,null===(t=this._vegaConnection)||void 0===t||t.message("eventClaim",{eventClaim:e})}setColocation(e){var t;this._colocation=e,null===(t=this._vegaConnection)||void 0===t||t.message("setColocation",{colocation:e}),e||!this._micScoreProducer||this._micScoreProducerPromise||this._stopMicScoreProducer(),this._syncMicAnalyser(),ph.sendEvent("colocation_changed",{colocation:e})}setAudioOnly(e){var t;null===(t=this._vegaConnection)||void 0===t||t.message(e?"enableAudioOnly":"disableAudioOnly")}setRemoteScreenshareVideoTrackIds(){}setRoomSessionId(e){this._roomSessionId=e}disconnect(e,t,r){var i;if(Vm.info("disconnect() [clientIdOrStreamId:%s, eventClaim:%s]",e,r),this._clientStates.has(e)){const t=this._clientStates.get(e);t.hasAcceptedWebcamStream=!1,t.hasAcceptedScreenStream=!1,this._syncIncomingStreamsWithPWA(e)}r&&(this._eventClaim=r,null===(i=this._vegaConnection)||void 0===i||i.message("eventClaim",{eventClaim:r}))}replaceTrack(e,t){e&&"audio"===e.kind&&this._stopMonitoringAudioTrack(e),"audio"===t.kind&&(this._startMonitoringAudioTrack(t),this._micTrack=t,this._replaceMicTrack()),"video"===t.kind&&(this._webcamTrack=t,this._replaceWebcamTrack())}removeStream(e,t,r){Vm.info("removeStream() [streamId:%s, requestedByClientId:%s]",e,r),this._emitToSignal(kh,{streamId:Wm,requestedByClientId:r}),this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null,this._screenVideoTrack=null,this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null,this._screenAudioTrack=null}_onMicAnalyserScoreUpdated(e){var t,r;null===(r=null===(t=this._micAnalyserDebugger)||void 0===t?void 0:t.onScoreUpdated)||void 0===r||r.call(t,e),this._sendMicScore(this._micPaused?0:e.out)}addNewStream(e,t,r,i){if("0"===e){this._micPaused=r,this._webcamPaused=i;const e=t.getVideoTracks()[0],n=t.getAudioTracks()[0];e&&this._sendWebcam(e),n&&(this._sendMic(n),this._syncMicAnalyser(),this._startMonitoringAudioTrack(n)),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const s=e=>{const{enable:t,track:r}=e.detail;this._webcamPaused=!t,this._pauseResumeWebcam(),this._handleStopOrResumeVideo({enable:t,track:r})};t.addEventListener("stopresumevideo",s),this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",s)}}else{const e=t.getVideoTracks()[0],r=t.getAudioTracks()[0];e&&this._sendScreenVideo(e),r&&this._sendScreenAudio(r),this._emitScreenshareStarted()}}_syncMicAnalyser(){if(!this._micTrack||!this._colocation||this._micAnalyser)return this._micAnalyser&&!this._colocation?(this._micAnalyser.close(),void(this._micAnalyser=null)):void 0;this._micAnalyser=function({micTrack:e,params:t,onScoreUpdated:r}){const i=new AudioContext;let n=null,s=null,a=null,o=!1;const c=e=>ku(this,void 0,void 0,(function*(){if(a&&o&&a.stop(),o=!1,e&&t.separateTrack)try{const r=yield navigator.mediaDevices.getUserMedia({audio:Object.assign({deviceId:null==a?void 0:a.getSettings().deviceId},t.separateTrack),video:!1});e=r.getAudioTracks()[0],o=!0}catch(e){Nm.warn("unable to fetch new track for colocation speaker analysis, using current",e)}if(a=e,s&&(s.disconnect(),s=null),e){const t=new MediaStream([e]);s=i.createMediaStreamSource(t),s.connect(n)}}));let d;const l=e=>{if(clearInterval(d),t=Object.assign(Object.assign({},Am),e),!n||n.fftSize!==2*t.bins){let e=null;n&&(e=a,c(null)),n=i.createAnalyser(),n.fftSize=2*t.bins,e&&c(e)}const s=new Uint8Array(n.frequencyBinCount),o=[];n.minDecibels=t.minDecibels,n.maxDecibels=t.maxDecibels,n.smoothingTimeConstant=t.smoothingTimeConstant;const l=t.initScript&&new Function("f","setTrack","lastTrack",t.initScript.join("\n")),p=t.scoreScript&&new Function("bins","g","f",t.scoreScript.join("\n")),u=t.scoreFormula&&new Function("bands",`return ${t.scoreFormula}`),h=t.outFormula&&new Function("score","avg","max","scores",`return ${t.outFormula}`),m=t.binFormula&&new Function("bin","index",`return ${t.binFormula}`);let f=0;const g=l&&l(Lm,c,a);d=setInterval((()=>{n.getByteFrequencyData(s);let e=0;if(u){const r=t.bands.map((e=>{const t=e.map((e=>m(s[e]/255,e)));return{avg:t.reduce(((e,t)=>e+t),0)/e.length,min:t.reduce(((e,t)=>Math.min(e,t/255)),Number.MAX_VALUE),max:t.reduce(((e,t)=>Math.max(e,t/255)),0)}}));e=u(r)||0}else p&&(e=p(s,g,Lm),isNaN(e)&&(e=0));if(o.push(e),o.length>t.aggSize&&o.shift(),f++,f>=t.reportRate){f=0;const t=o.reduce(((e,t)=>Math.max(e,t)),0),i=o.reduce(((e,t)=>e+t),0)/o.length,n=h(e,i,t,o);r({bins:s,score:e,max:t,avg:i,out:n})}}),1e3/t.sampleRate)};return l(t),c(e),{setParams:l,setTrack:c,close(){c(null),clearInterval(d),i.close()}}}({micTrack:this._micTrack,onScoreUpdated:this._onMicAnalyserScoreUpdated.bind(this)})}stopOrResumeAudio(e,t){Vm.info("stopOrResumeAudio() [enabled:%s]",t),this._micPaused=!t,this._pauseResumeMic()}_handleStopOrResumeVideo({enable:e,track:t}){e?this._sendWebcam(t):this._webcamProducer&&!this._webcamProducer.closed&&this._webcamProducer.track===t&&(this._stopProducer(this._webcamProducer),this._webcamProducer=null,this._webcamTrack=null)}stopOrResumeVideo(e,t){if(Vm.info("stopOrResumeVideo() [enable:%s]",t),this._webcamPaused=!t,this._pauseResumeWebcam(),["chrome","safari"].includes(qm))if(t){if(0===e.getVideoTracks().length){const r=this._webrtcProvider.getMediaConstraints().video;navigator.mediaDevices.getUserMedia({video:r}).then((r=>{const i=r.getVideoTracks()[0];e.addTrack(i),this._emitToPWA(Wh,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}else clearTimeout(this._stopCameraTimeout),this._stopCameraTimeout=setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emitToPWA(Kh,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),5e3)}supportsScreenShareAudio(){return!0}acceptNewStream({streamId:e,clientId:t}){Vm.info("acceptNewStream()",{streamId:e,clientId:t}),this.rtcStatsReconnect();const r=this._getOrCreateClientState(t);e!==t?(r.hasAcceptedScreenStream=!0,r.hasEmittedScreenStream=!1):(r.hasAcceptedWebcamStream=!0,r.hasEmittedWebcamStream=!1),this._syncIncomingStreamsWithPWA(t)}updateStreamResolution(e,t,{width:r,height:i}){var n,s,a,o;Vm.info("updateStreamResolution()",{streamId:e,width:r,height:i});const c=this._streamIdToVideoConsumerId.get(e),d=this._consumers.get(c);if(!d)return;let l=0;this._consumers.forEach((e=>{var t,r;e._closed||e._paused||"webcam"!==(null===(t=e._appData)||void 0===t?void 0:t.source)&&"screenvideo"!==(null===(r=e._appData)||void 0===r?void 0:r.source)||l++}));let p=2;/T3/.test((null===(a=null===(s=null===(n=d._rtpParameters)||void 0===n?void 0:n.encodings)||void 0===s?void 0:s[0])||void 0===a?void 0:a.scalabilityMode)||"")&&(p=3);const u=Math.max(r,i);let h=u>=480?u>=960?2:1:0,m=p-1;u<100&&(m=Math.max(p-2,0)),l>8&&0===h&&(m=Math.max(p-2,0)),l<4&&u>300&&0===h&&(h=1),d.appData.spatialLayer===h&&d.appData.temporalLayer===m||(d.appData.spatialLayer=h,d.appData.temporalLayer=m,null===(o=this._vegaConnection)||void 0===o||o.message("setConsumersPreferredLayers",{consumerIds:[c],spatialLayer:h,temporalLayer:m}))}disconnectAll(){var e,t,r,i;this._reconnect=!1,this._reconnectTimeOut&&(clearTimeout(this._reconnectTimeOut),this._reconnectTimeOut=null),this._socketListenerDeregisterFunctions.forEach((e=>{e()})),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null),this._socketListenerDeregisterFunctions=[],null===(e=this._vegaConnection)||void 0===e||e.removeAllListeners(),null===(t=this._vegaConnection)||void 0===t||t.close(),null===(r=this._sendTransport)||void 0===r||r.close(),null===(i=this._receiveTransport)||void 0===i||i.close(),this._micTrack=null,this._webcamTrack=null,this._screenVideoTrack=null,this._screenAudioTrack=null,this._streamIdToVideoConsumerId.clear(),this._mediasoupDevice=null}sendAudioMutedStats(e){ph.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){ph.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){ph.sendEvent(e,t)}rtcStatsDisconnect(){ph.server.close()}rtcStatsReconnect(){ph.server.connected||ph.server.connect()}_startMonitoringAudioTrack(e){e.addEventListener("ended",this._audioTrackOnEnded)}_stopMonitoringAudioTrack(e){e.removeEventListener("ended",this._audioTrackOnEnded)}_onMessage(e){return ku(this,void 0,void 0,(function*(){const{method:t,data:r}=e;return Promise.resolve().then((()=>{switch(t){case"consumerReady":return this._onConsumerReady(r);case"consumerClosed":return this._onConsumerClosed(r);case"consumerPaused":return this._onConsumerPaused(r);case"consumerResumed":return this._onConsumerResumed(r);case"dataConsumerReady":return this._onDataConsumerReady(r);case"dataConsumerClosed":return this._onDataConsumerClosed(r);case"dominantSpeaker":return this._onDominantSpeaker(r);case"consumerScore":return this._onConsumerScore(r);case"producerScore":return this._onProducerScore(r);default:return void Vm.info(`unknown message method "${t}"`)}})).catch((e=>{Vm.error('"message" failed [error:%o]',e)}))}))}_onConsumerReady(e){return ku(this,void 0,void 0,(function*(){Vm.info("_onConsumerReady()",{id:e.id,producerId:e.producerId});const t=yield this._receiveTransport.consume(e);if(t.pause(),t.appData.localPaused=!0,t.appData.spatialLayer=2,this._consumers.set(t.id,t),this._qualityMonitor.addConsumer(t.appData.sourceClientId,t.id),t.observer.once("close",(()=>{this._consumers.delete(t.id),this._qualityMonitor.removeConsumer(t.appData.sourceClientId,t.id),this._consumerClosedCleanup(t)})),this._features.increaseIncomingMediaBufferOn&&t.rtpReceiver)try{t.rtpReceiver.jitterBufferTarget=Wu,t.rtpReceiver.playoutDelayHint=.4}catch(e){Vm.error("Error during setting jitter buffer target:",e)}const{sourceClientId:r,screenShare:i,streamId:n}=t.appData,s=this._getOrCreateClientState(r);i?(s.hasEmittedScreenStream=!1,s.screenShareStreamId=n):(s.hasEmittedWebcamStream=!1,s.camStreamId=n);let a=i?s.screenStream:s.webcamStream;a&&a.inboundId===n||(a=new MediaStream,a.inboundId=n,i?s.screenStream=a:s.webcamStream=a),"video"===t.kind&&this._streamIdToVideoConsumerId.set(a.id,t.id),a.addTrack(t.track),this._syncIncomingStreamsWithPWA(r)}))}_onConsumerClosed({consumerId:e,reason:t}){var r;return ku(this,void 0,void 0,(function*(){Vm.info("_onConsumerClosed()",{consumerId:e,reason:t}),null===(r=this._consumers.get(e))||void 0===r||r.close()}))}_onConsumerPaused({consumerId:e}){Vm.info("_onConsumerPaused()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!0,t.pause())}_onConsumerResumed({consumerId:e}){Vm.info("_onConsumerResumed()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!1,t.appData.localPaused||t.resume())}_onConsumerScore({consumerId:e,kind:t,score:r}){Vm.info("_onConsumerScore()",{consumerId:e,kind:t,score:r});const{appData:{sourceClientId:i}}=this._consumers.get(e)||{appData:{}};i&&this._qualityMonitor.addConsumerScore(i,e,t,r)}_onProducerScore({producerId:e,kind:t,score:r}){Vm.info("_onProducerScore()",{producerId:e,kind:t,score:r}),[this._micProducer,this._webcamProducer,this._screenVideoProducer,this._screenAudioProducer].forEach((i=>{(null==i?void 0:i.id)===e&&this._qualityMonitor.addProducerScore(this._selfId,e,t,r)}))}_onDataConsumerReady(e){return ku(this,void 0,void 0,(function*(){Vm.info("_onDataConsumerReady()",{id:e.id,producerId:e.producerId});const t=yield this._receiveTransport.consumeData(e);this._dataConsumers.set(t.id,t),t.once("close",(()=>{this._dataConsumers.delete(t.id)}));const{clientId:r}=t.appData;t.on("message",(e=>{var r;if(!this._micAnalyserDebugger)return;if("string"!=typeof e)return;const{score:i}=JSON.parse(e);i&&(null===(r=this._micAnalyserDebugger)||void 0===r||r.onConsumerScore(t.appData.clientId,i))})),this._syncIncomingStreamsWithPWA(r)}))}_onDataConsumerClosed({dataConsumerId:e,reason:t}){return ku(this,void 0,void 0,(function*(){Vm.info("_onDataConsumerClosed()",{dataConsumerId:e,reason:t});const r=this._dataConsumers.get(e);null==r||r.close()}))}_onDominantSpeaker({consumerId:e}){const t=this._consumers.get(e);if(!t)return;const{sourceClientId:r}=t.appData;this._emitToPWA(km,{clientId:r})}_consumerClosedCleanup(e){const{sourceClientId:t,screenShare:r}=e.appData,i=this._getOrCreateClientState(t),n=r?i.screenStream:i.webcamStream;n&&(n.removeTrack(e.track),0===n.getTracks().length&&(this._streamIdToVideoConsumerId.delete(n.id),r?(i.screenStream=null,i.hasEmittedScreenStream=!1,i.screenShareStreamId=null):(i.hasEmittedWebcamStream=!1,i.camStreamId=null)))}_syncIncomingStreamsWithPWA(e){var t,r;const i=this._getOrCreateClientState(e),{webcamStream:n,screenStream:s,hasEmittedWebcamStream:a,hasEmittedScreenStream:o,hasAcceptedWebcamStream:c,hasAcceptedScreenStream:d,screenShareStreamId:l,camStreamId:p}=i,u=[],h=[];this._consumers.forEach((t=>{if(t.appData.sourceClientId!==e)return;const r=t.appData.screenShare?d:c;!t.appData.localPaused!==r&&(r?(t.appData.remotePaused||t.resume(),t.appData.localPaused=!1,h.push(t.id)):(t.pause(),t.appData.localPaused=!0,u.push(t.id)))})),u.length>0&&(null===(t=this._vegaConnection)||void 0===t||t.message("pauseConsumers",{consumerIds:u})),h.length>0&&(null===(r=this._vegaConnection)||void 0===r||r.message("resumeConsumers",{consumerIds:h})),n&&!a&&c&&(this._emitToPWA(qh,{clientId:e,stream:n,streamId:p,streamType:"webcam"}),i.hasEmittedWebcamStream=!0),s&&!o&&d&&(this._emitToPWA(qh,{clientId:e,stream:s,streamId:l,streamType:"screenshare"}),i.hasEmittedScreenStream=!0)}_getOrCreateClientState(e){let t=this._clientStates.get(e);return t||(t={hasAcceptedWebcamStream:!1,hasAcceptedScreenStream:!1,hasEmittedWebcamStream:!1,hasEmittedScreenStream:!1,webcamStream:null,screenStream:null,screenShareStreamId:null,camStreamId:null},this._clientStates.set(e,t)),t}_emitToPWA(e,t){this._emitter.emit(e,t)}_emitToSignal(e,t,r){this._serverSocket.emit(e,t,r)}shouldAcceptStreamsFromBothSides(){return!0}setMicAnalyserDebugger(e){this._micAnalyserDebugger=e}setMicAnalyserParams(e){var t;null===(t=this._micAnalyser)||void 0===t||t.setParams(e)}hasClient(e){return this._clientStates.has(e)}}class Jm{constructor({emitter:e,serverSocket:t,webrtcProvider:r,features:i}){this.emitter=e,this.currentManager=null,t.on(Mh,(({room:n,selfId:s,error:a,eventClaim:o})=>{if(a)return;const c={selfId:s,room:n,emitter:e,serverSocket:t,webrtcProvider:r,features:i,eventClaim:o,deviceHandlerFactory:null==i?void 0:i.deviceHandlerFactory},d=!!n.sfuServer;if(this.currentManager){if(this.currentManager.isInitializedWith({selfId:s,roomName:n.name,isSfu:d}))return void(this.currentManager.setEventClaim&&o&&this.currentManager.setEventClaim(o));this.currentManager.disconnectAll(),e.emit(Hh)}let l=null;l=d?new Km(c):new Mm(c),l.setupSocketListeners(),e.emit(Gh,{rtcManager:l}),this.currentManager=l,t.setRtcManager(l)}))}stopRtcManager(){this.currentManager&&(this.currentManager.disconnectAll(),this.emitter.emit(Hh))}}var Qm;!function(e){e.rtc_manager_created="rtc_manager_created",e.stream_added="stream_added"}(Qm||(Qm={}));class Zm extends Error{constructor(e){super(e.message),this.name="AssertionError",this.code="ERR_ASSERTION",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,Error.captureStackTrace&&Error.captureStackTrace(this,e.stackStartFn)}}function Ym(e){if(e.message instanceof Error)throw e.message;throw new Zm(e)}function Xm(...e){!function(e,t,r,i){if(!r){let n=!1;if(0===t)n=!0,i="No value argument passed to `assert.ok()`";else if(i instanceof Error)throw i;const s=new Zm({actual:r,expected:!0,message:i,operator:"==",stackStartFn:e});throw s.generatedMessage=n,s}}(Xm,e.length,...e)}const ef={fail:e=>{Ym({actual:"fail()",expected:"fail() should not be called",message:e,operator:"fail",stackStartFn:ef.fail})},ok:Xm,notEqual:function e(t,r,i){if(arguments.length<2)throw new Error("'actual' and 'expected' arguments are required");t==r&&Ym({actual:t,expected:r,message:i,operator:"!=",stackStartFn:e})}};ef.ok=Xm;const tf=new xu;class rf extends Ft{constructor(e){super(),this._socket=e,this._clients={},this._signalDisconnectTime=void 0,this.rtcManager=void 0,this.metrics={roomJoinedLate:0,pendingClientCanceled:0,evaluationFailed:0,roomJoined:0},e.on("disconnect",(()=>{this._signalDisconnectTime=Date.now()})),e.on(Mh,(e=>this._onRoomJoined(e))),e.on(Ih,(e=>this._onNewClient(e))),e.on(Oh,(e=>this._onClientLeft(e))),e.on($h,(e=>this._onPendingClientLeft(e))),e.on(Dh,(e=>this._onAudioEnabled(e))),e.on(Lh,(e=>this._onVideoEnabled(e))),e.on(xh,(e=>this._onScreenshareChanged(e,!0))),e.on(jh,(e=>this._onScreenshareChanged(e,!1)))}_onRoomJoined(e){var t,r;return ku(this,void 0,void 0,(function*(){if(!(null===(t=e.room)||void 0===t?void 0:t.clients))return void this.emit(Mh,e);if(!e.selfId)return void this.emit(Mh,e);const i=null===(r=e.room.clients.find((t=>e.selfId===t.id)))||void 0===r?void 0:r.deviceId;if(!i)return void this.emit(Mh,e);if(!this._signalDisconnectTime)return this._resetClientState(e),e.room.clients=e.room.clients.filter((e=>!(e.deviceId===i&&e.isPendingToLeave))),void this.emit(Mh,e);const n=.8*e.disconnectTimeout;if(Date.now()-this._signalDisconnectTime>n)return this._resetClientState(e),this.emit(Mh,e),void this.metrics.roomJoinedLate++;e.room.clients=e.room.clients.filter((e=>!(e.deviceId===i&&e.isPendingToLeave)));const s=yield;e.room.clients.forEach((t=>{var r;try{if(t.id===e.selfId)return;if(!this._clients[t.id])return void this._addClientToState(t);if(!(null===(r=this.rtcManager)||void 0===r?void 0:r.hasClient(t.id)))return;if(this._hasClientStateChanged({clientId:t.id,webcam:t.isVideoEnabled,mic:t.isAudioEnabled,screenShare:t.streams.length>1}))return;if(this._wasClientSendingMedia(t.id)&&!this._isClientMediaActive(s,t.id))return;t.mergeWithOldClientState=!0}catch(e){tf.error("Failed to evaluate if we should merge client state %o",e),this.metrics.evaluationFailed++}})),e.room.clients.forEach((e=>{e.isPendingToLeave&&this._onPendingClientLeft({clientId:e.id})})),this.metrics.roomJoined++,this.emit(Mh,e)}))}_onClientLeft(e){var t;const{clientId:r}=e,i=this._clients[r];i&&(clearTimeout(i.timeout),delete this._clients[r]),null===(t=this.rtcManager)||void 0===t||t.disconnect(r,null,e.eventClaim),this.emit(Oh,e)}_onPendingClientLeft(e){const{clientId:t}=e,r=this._clients[t];r?r.isPendingToLeave||(r.isPendingToLeave=!0,this._wasClientSendingMedia(t)&&(r.checkActiveMediaAttempts=0,this._abortIfNotActive(e))):tf.warn(`client ${t} not found`)}_onNewClient(e){const{client:{id:t,deviceId:r}}=e,i=this._clients[t];if(i&&i.isPendingToLeave)return clearTimeout(i.timeoutHandler),i.isPendingToLeave=!1,void this.metrics.pendingClientCanceled++;this._getPendingClientsByDeviceId(r).forEach((e=>{clearTimeout(e.timeoutHandler),e.isPendingToLeave=void 0,this.emit(Oh,{clientId:e.clientId})})),this._addClientToState(e.client),this.emit(Ih,e)}_abortIfNotActive(e){return ku(this,void 0,void 0,(function*(){const{clientId:t}=e;let r=this._clients[t];if(!(null==r?void 0:r.isPendingToLeave))return;if(r.checkActiveMediaAttempts++,r.checkActiveMediaAttempts>3)return;(yield this._checkIsActive(t))?r.timeoutHandler=setTimeout((()=>this._abortIfNotActive(e)),500):(r=this._clients[t],(null==r?void 0:r.isPendingToLeave)&&(clearTimeout(r.timeoutHandler),delete this._clients[t],this.emit(Oh,e)))}))}_checkIsActive(e){return ku(this,void 0,void 0,(function*(){const t=yield;return this._isClientMediaActive(t,e)}))}_isClientMediaActive(e,t){const r=null==e?void 0:e[t];let i=!1;return r&&Object.entries(r.tracks).forEach((([e,t])=>{"probator"!==e&&Object.values(t.ssrcs).forEach((e=>{(e.bitrate||0)>0&&(i=!0)}))})),i}_onAudioEnabled(e){const{clientId:t,isAudioEnabled:r}=e;this._clients[t]=Object.assign(Object.assign({},this._clients[t]||{}),{isAudioEnabled:r})}_onVideoEnabled(e){const{clientId:t,isVideoEnabled:r}=e;this._clients[t]=Object.assign(Object.assign({},this._clients[t]||{}),{isVideoEnabled:r})}_onScreenshareChanged(e,t){const{clientId:r}=e;this._clients[r]=Object.assign(Object.assign({},this._clients[r]||{}),{isScreenshareEnabled:t})}_hasClientStateChanged({clientId:e,webcam:t,mic:r,screenShare:i}){const n=this._clients[e];if(!n)throw new Error(`Client ${e} not found in ReconnectManager state`);return t!==n.isVideoEnabled||(r!==n.isAudioEnabled||i!==n.isScreenshareEnabled)}_addClientToState(e){this._clients[e.id]=Object.assign(Object.assign({},this._clients[e.id]||{}),{isAudioEnabled:e.isAudioEnabled,isVideoEnabled:e.isVideoEnabled,isScreenshareEnabled:e.streams.length>1,deviceId:e.deviceId,isPendingToLeave:e.isPendingToLeave,clientId:e.id})}_wasClientSendingMedia(e){const t=this._clients[e];if(!t)throw new Error(`Client ${e} not found in ReconnectManager state`);return t.isAudioEnabled||t.isVideoEnabled||t.isScreenshareEnabled}_getPendingClientsByDeviceId(e){return Object.values(this._clients).filter((t=>t.deviceId===e&&t.isPendingToLeave))}_resetClientState(e){this._clients={},e.room.clients.forEach((t=>{t.id!==e.selfId&&this._addClientToState(t)}))}}var nf;const sf=null!==(nf=Nd.default)&&void 0!==nf?nf:Nd;class af{constructor(e,t,r=!1){this._wasConnectedUsingWebsocket=!1,this._reconnectManager=null,this._socket=Pu(e,Object.assign({path:"/protocol/socket.io/v4",randomizationFactor:.5,reconnectionDelay:250,reconnectionDelayMax:5e3,timeout:5e3,transports:["websocket"],withCredentials:!0},t)),this._socket.io.on("reconnect",(()=>{this._socket.sendBuffer=[]})),this._socket.io.on("reconnect_attempt",(()=>{this._wasConnectedUsingWebsocket?(this._socket.io.opts.transports=["websocket"],"safari"!==sf.browserDetails.browser&&delete this._wasConnectedUsingWebsocket):this._socket.io.opts.transports=["websocket","polling"]})),r&&(this._reconnectManager=new rf(this._socket)),this._socket.on("connect",(()=>{"websocket"===this.getTransport()&&(this._wasConnectedUsingWebsocket=!0,this.noopKeepaliveInterval||(this.noopKeepaliveInterval=setInterval((()=>{try{this._socket.connected&&this._socket.io.engine.sendPacket("noop")}catch(e){}}),2e3)))})),this._socket.on("disconnect",(()=>{this.noopKeepaliveInterval&&(clearInterval(this.noopKeepaliveInterval),this.noopKeepaliveInterval=null)}))}setRtcManager(e){this._reconnectManager&&(this._reconnectManager.rtcManager=e)}connect(){this.isConnected()||this.isConnecting()||this._socket.open()}disconnect(){this._socket.disconnect()}disconnectOnConnect(){this._socket.once("connect",(()=>{this._socket.disconnect()}))}emit(e,...t){this._socket.emit.apply(this._socket,arguments)}emitIfConnected(e,t){this.isConnected()&&this.emit(e,t)}getTransport(){return this._socket&&this._socket.io&&this._socket.io.engine&&this._socket.io.engine.transport&&this._socket.io.engine.transport.name}getManager(){return this._socket.io}isConnecting(){return this._socket&&this._socket.connecting}isConnected(){return this._socket&&this._socket.connected}on(e,t){const r=[Mh,Oh,Ih];return this._reconnectManager&&r.includes(e)?this._interceptEvent(e,t):(this._socket.on(e,t),()=>{this._socket.off(e,t)})}once(e,t){this._socket.once(e,t)}off(e,t){this._socket.off(e,t)}_interceptEvent(e,t){return this._reconnectManager&&this._reconnectManager.on(e,t),()=>{this._reconnectManager&&this._reconnectManager.removeListener(e,t)}}getGlitchFreeMetrics(){var e;return null===(e=this._reconnectManager)||void 0===e?void 0:e.metrics}}const of=[{pattern:/^(?:([^.]+)[.])?(server:?\d*)/,separator:"."},{pattern:/^(?:([^.]+)[.])?(localhost:?\d*)/,separator:"."},{pattern:/^(?:([^.]+)[.])?((\d+[.]){3}:?\d*)$/,separator:"."},{pattern:/^(?:([^.]+)-)?(ip-[^.]*[.](?:hereby[.]dev|rfc1918[.]disappear[.]at)(?::\d+|))$/,separator:"-"},{pattern:/^(?:([^.]+)[.])?((:?[^.]+[.]){1,}[^.]+)$/,separator:"."}];function cf({host:e="whereby.com",protocol:t="https:"}={}){let r="",i=e,n=".";for(const{separator:t,pattern:s}of of){const a=s.exec(e);if(a){r=a[1]||"",i=a[2],n=t;break}}const s=r?`${r}${n}${i}`:i;return{domain:i,domainWithSeparator:`${n}${i}`,organizationDomain:s,organization:`${t}//${s}`,service:`${t}//${i}`,subdomain:r}}cf(window&&window.location);var df={exports:{}};df.exports=function(e){return(e instanceof Buffer?e:Buffer.from(e.toString(),"binary")).toString("base64")};var lf=Wt(df.exports);function pf(e,t){return function(){return e.apply(t,arguments)}}const{toString:uf}=Object.prototype,{getPrototypeOf:hf}=Object,mf=(e=>t=>{const r=uf.call(t);return e[r]||(e[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),ff=e=>(e=e.toLowerCase(),t=>mf(t)===e),gf=e=>t=>typeof t===e,{isArray:vf}=Array,_f=gf("undefined");const bf=ff("ArrayBuffer");const yf=gf("string"),wf=gf("function"),Sf=gf("number"),Cf=e=>null!==e&&"object"==typeof e,Rf=e=>{if("object"!==mf(e))return!1;const t=hf(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},Tf=ff("Date"),Pf=ff("File"),kf=ff("Blob"),Df=ff("FileList"),Of=ff("URLSearchParams");function Ef(e,t,{allOwnKeys:r=!1}={}){if(null==e)return;let i,n;if("object"!=typeof e&&(e=[e]),vf(e))for(i=0,n=e.length;i<n;i++)t.call(null,e[i],i,e);else{const n=r?Object.getOwnPropertyNames(e):Object.keys(e),s=n.length;let a;for(i=0;i<s;i++)a=n[i],t.call(null,e[a],a,e)}}function If(e,t){t=t.toLowerCase();const r=Object.keys(e);let i,n=r.length;for(;n-- >0;)if(i=r[n],t===i.toLowerCase())return i;return null}const xf="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,jf=e=>!_f(e)&&e!==xf;const Mf=(Lf="undefined"!=typeof Uint8Array&&hf(Uint8Array),e=>Lf&&e instanceof Lf);var Lf;const Af=ff("HTMLFormElement"),Nf=(({hasOwnProperty:e})=>(t,r)=>e.call(t,r))(Object.prototype),Bf=ff("RegExp"),Ff=(e,t)=>{const r=Object.getOwnPropertyDescriptors(e),i={};Ef(r,((r,n)=>{let s;!1!==(s=t(r,n,e))&&(i[n]=s||r)})),Object.defineProperties(e,i)},Uf="abcdefghijklmnopqrstuvwxyz",$f="0123456789",zf={DIGIT:$f,ALPHA:Uf,ALPHA_DIGIT:Uf+Uf.toUpperCase()+$f};const Vf=ff("AsyncFunction");var qf={isArray:vf,isArrayBuffer:bf,isBuffer:function(e){return null!==e&&!_f(e)&&null!==e.constructor&&!_f(e.constructor)&&wf(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||wf(e.append)&&("formdata"===(t=mf(e))||"object"===t&&wf(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&bf(e.buffer),t},isString:yf,isNumber:Sf,isBoolean:e=>!0===e||!1===e,isObject:Cf,isPlainObject:Rf,isUndefined:_f,isDate:Tf,isFile:Pf,isBlob:kf,isRegExp:Bf,isFunction:wf,isStream:e=>Cf(e)&&wf(e.pipe),isURLSearchParams:Of,isTypedArray:Mf,isFileList:Df,forEach:Ef,merge:function e(){const{caseless:t}=jf(this)&&this||{},r={},i=(i,n)=>{const s=t&&If(r,n)||n;Rf(r[s])&&Rf(i)?r[s]=e(r[s],i):Rf(i)?r[s]=e({},i):vf(i)?r[s]=i.slice():r[s]=i};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&Ef(arguments[e],i);return r},extend:(e,t,r,{allOwnKeys:i}={})=>(Ef(t,((t,i)=>{r&&wf(t)?e[i]=pf(t,r):e[i]=t}),{allOwnKeys:i}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,r,i)=>{e.prototype=Object.create(t.prototype,i),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:(e,t,r,i)=>{let n,s,a;const o={};if(t=t||{},null==e)return t;do{for(n=Object.getOwnPropertyNames(e),s=n.length;s-- >0;)a=n[s],i&&!i(a,e,t)||o[a]||(t[a]=e[a],o[a]=!0);e=!1!==r&&hf(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:mf,kindOfTest:ff,endsWith:(e,t,r)=>{e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;const i=e.indexOf(t,r);return-1!==i&&i===r},toArray:e=>{if(!e)return null;if(vf(e))return e;let t=e.length;if(!Sf(t))return null;const r=new Array(t);for(;t-- >0;)r[t]=e[t];return r},forEachEntry:(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let i;for(;(i=r.next())&&!i.done;){const r=i.value;t.call(e,r[0],r[1])}},matchAll:(e,t)=>{let r;const i=[];for(;null!==(r=e.exec(t));)i.push(r);return i},isHTMLForm:Af,hasOwnProperty:Nf,hasOwnProp:Nf,reduceDescriptors:Ff,freezeMethods:e=>{Ff(e,((t,r)=>{if(wf(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;const i=e[r];wf(i)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:(e,t)=>{const r={},i=e=>{e.forEach((e=>{r[e]=!0}))};return vf(e)?i(e):i(String(e).split(t)),r},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r})),noop:()=>{},toFiniteNumber:(e,t)=>(e=+e,Number.isFinite(e)?e:t),findKey:If,global:xf,isContextDefined:jf,ALPHABET:zf,generateString:(e=16,t=zf.ALPHA_DIGIT)=>{let r="";const{length:i}=t;for(;e--;)r+=t[Math.random()*i|0];return r},isSpecCompliantForm:function(e){return!!(e&&wf(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),r=(e,i)=>{if(Cf(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[i]=e;const n=vf(e)?[]:{};return Ef(e,((e,t)=>{const s=r(e,i+1);!_f(s)&&(n[t]=s)})),t[i]=void 0,n}}return e};return r(e,0)},isAsyncFn:Vf,isThenable:e=>e&&(Cf(e)||wf(e))&&wf(e.then)&&wf(e.catch)};function Gf(e,t,r,i,n){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),i&&(this.request=i),n&&(this.response=n)}qf.inherits(Gf,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:qf.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const Hf=Gf.prototype,Wf={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{Wf[e]={value:e}})),Object.defineProperties(Gf,Wf),Object.defineProperty(Hf,"isAxiosError",{value:!0}),Gf.from=(e,t,r,i,n,s)=>{const a=Object.create(Hf);return qf.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),Gf.call(a,e.message,t,r,i,n),a.cause=e,a.name=e.name,s&&Object.assign(a,s),a};function Kf(e){return qf.isPlainObject(e)||qf.isArray(e)}function Jf(e){return qf.endsWith(e,"[]")?e.slice(0,-2):e}function Qf(e,t,r){return e?e.concat(t).map((function(e,t){return e=Jf(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}const Zf=qf.toFlatObject(qf,{},null,(function(e){return/^is[A-Z]/.test(e)}));function Yf(e,t,r){if(!qf.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const i=(r=qf.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!qf.isUndefined(t[e])}))).metaTokens,n=r.visitor||d,s=r.dots,a=r.indexes,o=(r.Blob||"undefined"!=typeof Blob&&Blob)&&qf.isSpecCompliantForm(t);if(!qf.isFunction(n))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(qf.isDate(e))return e.toISOString();if(!o&&qf.isBlob(e))throw new Gf("Blob is not supported. Use a Buffer instead.");return qf.isArrayBuffer(e)||qf.isTypedArray(e)?o&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function d(e,r,n){let o=e;if(e&&!n&&"object"==typeof e)if(qf.endsWith(r,"{}"))r=i?r:r.slice(0,-2),e=JSON.stringify(e);else if(qf.isArray(e)&&function(e){return qf.isArray(e)&&!e.some(Kf)}(e)||(qf.isFileList(e)||qf.endsWith(r,"[]"))&&(o=qf.toArray(e)))return r=Jf(r),o.forEach((function(e,i){!qf.isUndefined(e)&&null!==e&&t.append(!0===a?Qf([r],i,s):null===a?r:r+"[]",c(e))})),!1;return!!Kf(e)||(t.append(Qf(n,r,s),c(e)),!1)}const l=[],p=Object.assign(Zf,{defaultVisitor:d,convertValue:c,isVisitable:Kf});if(!qf.isObject(e))throw new TypeError("data must be an object");return function e(r,i){if(!qf.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+i.join("."));l.push(r),qf.forEach(r,(function(r,s){!0===(!(qf.isUndefined(r)||null===r)&&n.call(t,r,qf.isString(s)?s.trim():s,i,p))&&e(r,i?i.concat(s):[s])})),l.pop()}}(e),t}function Xf(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function eg(e,t){this._pairs=[],e&&Yf(e,this,t)}const tg=eg.prototype;function rg(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function ig(e,t,r){if(!t)return e;const i=r&&r.encode||rg,n=r&&r.serialize;let s;if(s=n?n(t,r):qf.isURLSearchParams(t)?t.toString():new eg(t,r).toString(i),s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}tg.append=function(e,t){this._pairs.push([e,t])},tg.toString=function(e){const t=e?function(t){return e.call(this,t,Xf)}:Xf;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};class ng{constructor(){this.handlers=[]}use(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){qf.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}var sg={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},ag={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:eg,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]};const og="undefined"!=typeof window&&"undefined"!=typeof document,cg=(dg="undefined"!=typeof navigator&&navigator.product,og&&["ReactNative","NativeScript","NS"].indexOf(dg)<0);var dg;const lg="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts;var pg={...Object.freeze({__proto__:null,hasBrowserEnv:og,hasStandardBrowserEnv:cg,hasStandardBrowserWebWorkerEnv:lg}),...ag};function ug(e){function t(e,r,i,n){let s=e[n++];if("__proto__"===s)return!0;const a=Number.isFinite(+s),o=n>=e.length;if(s=!s&&qf.isArray(i)?i.length:s,o)return qf.hasOwnProp(i,s)?i[s]=[i[s],r]:i[s]=r,!a;i[s]&&qf.isObject(i[s])||(i[s]=[]);return t(e,r,i[s],n)&&qf.isArray(i[s])&&(i[s]=function(e){const t={},r=Object.keys(e);let i;const n=r.length;let s;for(i=0;i<n;i++)s=r[i],t[s]=e[s];return t}(i[s])),!a}if(qf.isFormData(e)&&qf.isFunction(e.entries)){const r={};return qf.forEachEntry(e,((e,i)=>{t(function(e){return qf.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),i,r,0)})),r}return null}const hg={transitional:sg,adapter:["xhr","http"],transformRequest:[function(e,t){const r=t.getContentType()||"",i=r.indexOf("application/json")>-1,n=qf.isObject(e);n&&qf.isHTMLForm(e)&&(e=new FormData(e));if(qf.isFormData(e))return i?JSON.stringify(ug(e)):e;if(qf.isArrayBuffer(e)||qf.isBuffer(e)||qf.isStream(e)||qf.isFile(e)||qf.isBlob(e))return e;if(qf.isArrayBufferView(e))return e.buffer;if(qf.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(n){if(r.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return Yf(e,new pg.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,i){return pg.isNode&&qf.isBuffer(e)?(this.append(t,e.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((s=qf.isFileList(e))||r.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Yf(s?{"files[]":e}:e,t&&new t,this.formSerializer)}}return n||i?(t.setContentType("application/json",!1),function(e,t,r){if(qf.isString(e))try{return(t||JSON.parse)(e),qf.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||hg.transitional,r=t&&t.forcedJSONParsing,i="json"===this.responseType;if(e&&qf.isString(e)&&(r&&!this.responseType||i)){const r=!(t&&t.silentJSONParsing)&&i;try{return JSON.parse(e)}catch(e){if(r){if("SyntaxError"===e.name)throw Gf.from(e,Gf.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:pg.classes.FormData,Blob:pg.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};qf.forEach(["delete","get","head","post","put","patch"],(e=>{hg.headers[e]={}}));var mg=hg;const fg=qf.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);const gg=Symbol("internals");function vg(e){return e&&String(e).trim().toLowerCase()}function _g(e){return!1===e||null==e?e:qf.isArray(e)?e.map(_g):String(e)}function bg(e,t,r,i,n){return qf.isFunction(i)?i.call(this,t,r):(n&&(t=r),qf.isString(t)?qf.isString(i)?-1!==t.indexOf(i):qf.isRegExp(i)?i.test(t):void 0:void 0)}class yg{constructor(e){e&&this.set(e)}set(e,t,r){const i=this;function n(e,t,r){const n=vg(t);if(!n)throw new Error("header name must be a non-empty string");const s=qf.findKey(i,n);(!s||void 0===i[s]||!0===r||void 0===r&&!1!==i[s])&&(i[s||t]=_g(e))}const s=(e,t)=>qf.forEach(e,((e,r)=>n(e,r,t)));return qf.isPlainObject(e)||e instanceof this.constructor?s(e,t):qf.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?s((e=>{const t={};let r,i,n;return e&&e.split("\n").forEach((function(e){n=e.indexOf(":"),r=e.substring(0,n).trim().toLowerCase(),i=e.substring(n+1).trim(),!r||t[r]&&fg[r]||("set-cookie"===r?t[r]?t[r].push(i):t[r]=[i]:t[r]=t[r]?t[r]+", "+i:i)})),t})(e),t):null!=e&&n(t,e,r),this}get(e,t){if(e=vg(e)){const r=qf.findKey(this,e);if(r){const e=this[r];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let i;for(;i=r.exec(e);)t[i[1]]=i[2];return t}(e);if(qf.isFunction(t))return t.call(this,e,r);if(qf.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=vg(e)){const r=qf.findKey(this,e);return!(!r||void 0===this[r]||t&&!bg(0,this[r],r,t))}return!1}delete(e,t){const r=this;let i=!1;function n(e){if(e=vg(e)){const n=qf.findKey(r,e);!n||t&&!bg(0,r[n],n,t)||(delete r[n],i=!0)}}return qf.isArray(e)?e.forEach(n):n(e),i}clear(e){const t=Object.keys(this);let r=t.length,i=!1;for(;r--;){const n=t[r];e&&!bg(0,this[n],n,e,!0)||(delete this[n],i=!0)}return i}normalize(e){const t=this,r={};return qf.forEach(this,((i,n)=>{const s=qf.findKey(r,n);if(s)return t[s]=_g(i),void delete t[n];const a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,r)=>t.toUpperCase()+r))}(n):String(n).trim();a!==n&&delete t[n],t[a]=_g(i),r[a]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return qf.forEach(this,((r,i)=>{null!=r&&!1!==r&&(t[i]=e&&qf.isArray(r)?r.join(", "):r)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const r=new this(e);return t.forEach((e=>r.set(e))),r}static accessor(e){const t=(this[gg]=this[gg]={accessors:{}}).accessors,r=this.prototype;function i(e){const i=vg(e);t[i]||(!function(e,t){const r=qf.toCamelCase(" "+t);["get","set","has"].forEach((i=>{Object.defineProperty(e,i+r,{value:function(e,r,n){return this[i].call(this,t,e,r,n)},configurable:!0})}))}(r,e),t[i]=!0)}return qf.isArray(e)?e.forEach(i):i(e),this}}yg.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),qf.reduceDescriptors(yg.prototype,(({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[r]=e}}})),qf.freezeMethods(yg);var wg=yg;function Sg(e,t){const r=this||mg,i=t||r,n=wg.from(i.headers);let s=i.data;return qf.forEach(e,(function(e){s=e.call(r,s,n.normalize(),t?t.status:void 0)})),n.normalize(),s}function Cg(e){return!(!e||!e.__CANCEL__)}function Rg(e,t,r){Gf.call(this,null==e?"canceled":e,Gf.ERR_CANCELED,t,r),this.name="CanceledError"}qf.inherits(Rg,Gf,{__CANCEL__:!0});var Tg=pg.hasStandardBrowserEnv?{write(e,t,r,i,n,s){const a=[e+"="+encodeURIComponent(t)];qf.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),qf.isString(i)&&a.push("path="+i),qf.isString(n)&&a.push("domain="+n),!0===s&&a.push("secure"),document.cookie=a.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function Pg(e,t){return e&&!function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}var kg=pg.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let r;function i(r){let i=r;return e&&(t.setAttribute("href",i),i=t.href),t.setAttribute("href",i),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return r=i(window.location.href),function(e){const t=qf.isString(e)?i(e):e;return t.protocol===r.protocol&&t.host===r.host}}():function(){return!0};function Dg(e,t){let r=0;const i=function(e,t){e=e||10;const r=new Array(e),i=new Array(e);let n,s=0,a=0;return t=void 0!==t?t:1e3,function(o){const c=Date.now(),d=i[a];n||(n=c),r[s]=o,i[s]=c;let l=a,p=0;for(;l!==s;)p+=r[l++],l%=e;if(s=(s+1)%e,s===a&&(a=(a+1)%e),c-n<t)return;const u=d&&c-d;return u?Math.round(1e3*p/u):void 0}}(50,250);return n=>{const s=n.loaded,a=n.lengthComputable?n.total:void 0,o=s-r,c=i(o);r=s;const d={loaded:s,total:a,progress:a?s/a:void 0,bytes:o,rate:c||void 0,estimated:c&&a&&s<=a?(a-s)/c:void 0,event:n};d[t?"download":"upload"]=!0,e(d)}}var Og="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,r){let i=e.data;const n=wg.from(e.headers).normalize();let s,a,{responseType:o,withXSRFToken:c}=e;function d(){e.cancelToken&&e.cancelToken.unsubscribe(s),e.signal&&e.signal.removeEventListener("abort",s)}if(qf.isFormData(i))if(pg.hasStandardBrowserEnv||pg.hasStandardBrowserWebWorkerEnv)n.setContentType(!1);else if(!1!==(a=n.getContentType())){const[e,...t]=a?a.split(";").map((e=>e.trim())).filter(Boolean):[];n.setContentType([e||"multipart/form-data",...t].join("; "))}let l=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",r=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";n.set("Authorization","Basic "+btoa(t+":"+r))}const p=Pg(e.baseURL,e.url);function u(){if(!l)return;const i=wg.from("getAllResponseHeaders"in l&&l.getAllResponseHeaders());!function(e,t,r){const i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(new Gf("Request failed with status code "+r.status,[Gf.ERR_BAD_REQUEST,Gf.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r)):e(r)}((function(e){t(e),d()}),(function(e){r(e),d()}),{data:o&&"text"!==o&&"json"!==o?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:i,config:e,request:l}),l=null}if(l.open(e.method.toUpperCase(),ig(p,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,"onloadend"in l?l.onloadend=u:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(u)},l.onabort=function(){l&&(r(new Gf("Request aborted",Gf.ECONNABORTED,e,l)),l=null)},l.onerror=function(){r(new Gf("Network Error",Gf.ERR_NETWORK,e,l)),l=null},l.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const i=e.transitional||sg;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(new Gf(t,i.clarifyTimeoutError?Gf.ETIMEDOUT:Gf.ECONNABORTED,e,l)),l=null},pg.hasStandardBrowserEnv&&(c&&qf.isFunction(c)&&(c=c(e)),c||!1!==c&&kg(p))){const t=e.xsrfHeaderName&&e.xsrfCookieName&&Tg.read(e.xsrfCookieName);t&&n.set(e.xsrfHeaderName,t)}void 0===i&&n.setContentType(null),"setRequestHeader"in l&&qf.forEach(n.toJSON(),(function(e,t){l.setRequestHeader(t,e)})),qf.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),o&&"json"!==o&&(l.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",Dg(e.onDownloadProgress,!0)),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",Dg(e.onUploadProgress)),(e.cancelToken||e.signal)&&(s=t=>{l&&(r(!t||t.type?new Rg(null,e,l):t),l.abort(),l=null)},e.cancelToken&&e.cancelToken.subscribe(s),e.signal&&(e.signal.aborted?s():e.signal.addEventListener("abort",s)));const h=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(p);h&&-1===pg.protocols.indexOf(h)?r(new Gf("Unsupported protocol "+h+":",Gf.ERR_BAD_REQUEST,e)):l.send(i||null)}))};const Eg={http:null,xhr:Og};qf.forEach(Eg,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const Ig=e=>`- ${e}`,xg=e=>qf.isFunction(e)||null===e||!1===e;var jg=e=>{e=qf.isArray(e)?e:[e];const{length:t}=e;let r,i;const n={};for(let s=0;s<t;s++){let t;if(r=e[s],i=r,!xg(r)&&(i=Eg[(t=String(r)).toLowerCase()],void 0===i))throw new Gf(`Unknown adapter '${t}'`);if(i)break;n[t||"#"+s]=i}if(!i){const e=Object.entries(n).map((([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));throw new Gf("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(Ig).join("\n"):" "+Ig(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return i};function Mg(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Rg(null,e)}function Lg(e){Mg(e),e.headers=wg.from(e.headers),e.data=Sg.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return jg(e.adapter||mg.adapter)(e).then((function(t){return Mg(e),t.data=Sg.call(e,e.transformResponse,t),t.headers=wg.from(t.headers),t}),(function(t){return Cg(t)||(Mg(e),t&&t.response&&(t.response.data=Sg.call(e,e.transformResponse,t.response),t.response.headers=wg.from(t.response.headers))),Promise.reject(t)}))}const Ag=e=>e instanceof wg?e.toJSON():e;function Ng(e,t){t=t||{};const r={};function i(e,t,r){return qf.isPlainObject(e)&&qf.isPlainObject(t)?qf.merge.call({caseless:r},e,t):qf.isPlainObject(t)?qf.merge({},t):qf.isArray(t)?t.slice():t}function n(e,t,r){return qf.isUndefined(t)?qf.isUndefined(e)?void 0:i(void 0,e,r):i(e,t,r)}function s(e,t){if(!qf.isUndefined(t))return i(void 0,t)}function a(e,t){return qf.isUndefined(t)?qf.isUndefined(e)?void 0:i(void 0,e):i(void 0,t)}function o(r,n,s){return s in t?i(r,n):s in e?i(void 0,r):void 0}const c={url:s,method:s,data:s,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:o,headers:(e,t)=>n(Ag(e),Ag(t),!0)};return qf.forEach(Object.keys(Object.assign({},e,t)),(function(i){const s=c[i]||n,a=s(e[i],t[i],i);qf.isUndefined(a)&&s!==o||(r[i]=a)})),r}const Bg="1.6.7",Fg={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{Fg[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));const Ug={};Fg.transitional=function(e,t,r){function i(e,t){return"[Axios v1.6.7] Transitional option '"+e+"'"+t+(r?". "+r:"")}return(r,n,s)=>{if(!1===e)throw new Gf(i(n," has been removed"+(t?" in "+t:"")),Gf.ERR_DEPRECATED);return t&&!Ug[n]&&(Ug[n]=!0,console.warn(i(n," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,n,s)}};var $g={assertOptions:function(e,t,r){if("object"!=typeof e)throw new Gf("options must be an object",Gf.ERR_BAD_OPTION_VALUE);const i=Object.keys(e);let n=i.length;for(;n-- >0;){const s=i[n],a=t[s];if(a){const t=e[s],r=void 0===t||a(t,s,e);if(!0!==r)throw new Gf("option "+s+" must be "+r,Gf.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new Gf("Unknown option "+s,Gf.ERR_BAD_OPTION)}},validators:Fg};const zg=$g.validators;class Vg{constructor(e){this.defaults=e,this.interceptors={request:new ng,response:new ng}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t;Error.captureStackTrace?Error.captureStackTrace(t={}):t=new Error;const r=t.stack?t.stack.replace(/^.+\n/,""):"";e.stack?r&&!String(e.stack).endsWith(r.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+r):e.stack=r}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Ng(this.defaults,t);const{transitional:r,paramsSerializer:i,headers:n}=t;void 0!==r&&$g.assertOptions(r,{silentJSONParsing:zg.transitional(zg.boolean),forcedJSONParsing:zg.transitional(zg.boolean),clarifyTimeoutError:zg.transitional(zg.boolean)},!1),null!=i&&(qf.isFunction(i)?t.paramsSerializer={serialize:i}:$g.assertOptions(i,{encode:zg.function,serialize:zg.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=n&&qf.merge(n.common,n[t.method]);n&&qf.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete n[e]})),t.headers=wg.concat(s,n);const a=[];let o=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(o=o&&e.synchronous,a.unshift(e.fulfilled,e.rejected))}));const c=[];let d;this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)}));let l,p=0;if(!o){const e=[Lg.bind(this),void 0];for(e.unshift.apply(e,a),e.push.apply(e,c),l=e.length,d=Promise.resolve(t);p<l;)d=d.then(e[p++],e[p++]);return d}l=a.length;let u=t;for(p=0;p<l;){const e=a[p++],t=a[p++];try{u=e(u)}catch(e){t.call(this,e);break}}try{d=Lg.call(this,u)}catch(e){return Promise.reject(e)}for(p=0,l=c.length;p<l;)d=d.then(c[p++],c[p++]);return d}getUri(e){return ig(Pg((e=Ng(this.defaults,e)).baseURL,e.url),e.params,e.paramsSerializer)}}qf.forEach(["delete","get","head","options"],(function(e){Vg.prototype[e]=function(t,r){return this.request(Ng(r||{},{method:e,url:t,data:(r||{}).data}))}})),qf.forEach(["post","put","patch"],(function(e){function t(t){return function(r,i,n){return this.request(Ng(n||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:r,data:i}))}}Vg.prototype[e]=t(),Vg.prototype[e+"Form"]=t(!0)}));var qg=Vg;class Gg{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise((function(e){t=e}));const r=this;this.promise.then((e=>{if(!r._listeners)return;let t=r._listeners.length;for(;t-- >0;)r._listeners[t](e);r._listeners=null})),this.promise.then=e=>{let t;const i=new Promise((e=>{r.subscribe(e),t=e})).then(e);return i.cancel=function(){r.unsubscribe(t)},i},e((function(e,i,n){r.reason||(r.reason=new Rg(e,i,n),t(r.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new Gg((function(t){e=t})),cancel:e}}}var Hg=Gg;const Wg={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Wg).forEach((([e,t])=>{Wg[t]=e}));var Kg=Wg;const Jg=function e(t){const r=new qg(t),i=pf(qg.prototype.request,r);return qf.extend(i,qg.prototype,r,{allOwnKeys:!0}),qf.extend(i,r,null,{allOwnKeys:!0}),i.create=function(r){return e(Ng(t,r))},i}(mg);function Qg(e,t){return et(e,t)}Jg.Axios=qg,Jg.CanceledError=Rg,Jg.CancelToken=Hg,Jg.isCancel=Cg,Jg.VERSION=Bg,Jg.toFormData=Yf,Jg.AxiosError=Gf,Jg.Cancel=Jg.CanceledError,Jg.all=function(e){return Promise.all(e)},Jg.spread=function(e){return function(t){return e.apply(null,t)}},Jg.isAxiosError=function(e){return qf.isObject(e)&&!0===e.isAxiosError},Jg.mergeConfig=Ng,Jg.AxiosHeaders=wg,Jg.formToJSON=e=>ug(qf.isHTMLForm(e)?new FormData(e):e),Jg.getAdapter=jg,Jg.HttpStatusCode=Kg,Jg.default=Jg;const Zg=((e={})=>{const t=new Map,{extra:r,onError:i=Nt}=e;gt(i,"onError");const n=e=>{let r=Ee(Array.from(t.values()),(t=>t.effect===e.effect));return r||(r=It(e)),(e=>(e.unsubscribe=()=>t.delete(e.id),t.set(e.id,e),t=>{e.unsubscribe(),t?.cancelActive&&xt(e)}))(r)};Object.assign(n,{withTypes:()=>n});const s=e=>{const{type:r,effect:i,predicate:n}=Et(e),s=Ee(Array.from(t.values()),(e=>("string"==typeof r?e.type===r:e.predicate===n)&&e.effect===i));return s&&(s.unsubscribe(),e.cancelActive&&xt(s)),!!s};Object.assign(s,{withTypes:()=>s});const a=async(e,s,a,o)=>{const c=new AbortController,d=Ot(n,c.signal),l=[];try{e.pending.add(c),await Promise.resolve(e.effect(s,Tt({},a,{getOriginalState:o,condition:(e,t)=>d(e,t).then(Boolean),take:d,delay:Rt(c.signal),pause:Ct(c.signal),extra:r,signal:c.signal,fork:Dt(c.signal,l),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach(((e,t,r)=>{e!==c&&(yt(e,ht),r.delete(e))}))},cancel:()=>{yt(c,ht),e.pending.delete(c)},throwIfCancelled:()=>{wt(c.signal)}})))}catch(e){e instanceof ft||jt(i,e,{raisedBy:"effect"})}finally{await Promise.all(l),yt(c,mt),e.pending.delete(c)}},o=(e=>()=>{e.forEach(xt),e.clear()})(t);return{middleware:e=>r=>c=>{if(!g(c))return r(c);if(Mt.match(c))return n(c.payload);if(Lt.match(c))return void o();if(At.match(c))return s(c.payload);let d=e.getState();const l=()=>{if(d===Pt)throw new Error(`${kt}: getOriginalState can only be called synchronously`);return d};let p;try{if(p=r(c),t.size>0){const r=e.getState(),n=Array.from(t.values());for(const t of n){let n=!1;try{n=t.predicate(c,r,d)}catch(e){n=!1,jt(i,e,{raisedBy:"predicate"})}n&&a(t,c,e,l)}}}finally{d=Pt}return p},startListening:n,stopListening:s,clearListeners:o}})(),Yg=Zg.startListening,Xg=(e,t)=>Yg({predicate:(t,r,i)=>{const n=e.map((e=>e(i))),s=e.map((e=>e(r)));return n.some(((e,t)=>e!==s[t]))},effect:(r,{dispatch:i,getState:n,extra:s})=>{const a=e.map((e=>e(n())));t({dispatch:i,getState:n,extra:s},...a)}}),ev=at({name:"app",initialState:{isNodeSdk:!1,wantsToJoin:!1,roomName:null,roomKey:null,roomUrl:null,displayName:null,userAgent:"core:0.9.0",externalId:null},reducers:{doAppJoin:(e,t)=>{const r=new URL(t.payload.roomUrl);return Object.assign(Object.assign(Object.assign({},e),t.payload),{roomName:r.pathname,wantsToJoin:!0})},appLeft:e=>Object.assign(Object.assign({},e),{wantsToJoin:!1}),setRoomKey:(e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload})}}),{doAppJoin:tv,appLeft:rv,setRoomKey:iv}=ev.actions,nv=e=>e.app.wantsToJoin,sv=e=>e.app.roomName,av=e=>e.app.roomKey,ov=e=>e.app.displayName,cv=e=>e.app.userAgent,dv=e=>e.app.externalId,lv=e=>e.app.isNodeSdk;function pv(e){return ke(`signalConnection/event/${e}`)}const uv={audioEnabled:pv("audioEnabled"),chatMessage:pv("chatMessage"),clientLeft:pv("clientLeft"),clientKicked:pv("clientKicked"),clientMetadataReceived:pv("clientMetadataReceived"),cloudRecordingStarted:pv("cloudRecordingStarted"),cloudRecordingStopped:pv("cloudRecordingStopped"),disconnect:pv("disconnect"),knockerLeft:pv("knockerLeft"),knockHandled:pv("knockHandled"),newClient:pv("newClient"),roomJoined:pv("roomJoined"),roomKnocked:pv("roomKnocked"),roomSessionEnded:pv("roomSessionEnded"),screenshareStarted:pv("screenshareStarted"),screenshareStopped:pv("screenshareStopped"),streamingStopped:pv("streamingStopped"),videoEnabled:pv("videoEnabled")};function hv(e,t,r,i){return new(r||(r=Promise))((function(n,s){function a(e){try{c(i.next(e))}catch(e){s(e)}}function o(e){try{c(i.throw(e))}catch(e){s(e)}}function c(e){e.done?n(e.value):function(e){return e instanceof r?e:new r((function(t){t(e)}))}(e.value).then(a,o)}c((i=i.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const mv=at({name:"deviceCredentials",initialState:{isFetching:!1,data:null},reducers:{},extraReducers:e=>{e.addCase(fv.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(fv.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}))),e.addCase(fv.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!0})))}}),fv=Qg("deviceCredentials/doGetDeviceCredentials",((e,{extra:t})=>hv(void 0,void 0,void 0,(function*(){try{return yield t.services.credentialsService.getCredentials()}catch(e){console.error(e)}})))),gv=e=>e.deviceCredentials;Xg([ye(nv,gv,((e,t)=>!(!e||t.isFetching||t.data)))],(({dispatch:e},t)=>{t&&e(fv())}));const vv=at({name:"signalConnection",initialState:{deviceIdentified:!1,isIdentifyingDevice:!1,status:"",socket:null},reducers:{socketConnecting:e=>Object.assign(Object.assign({},e),{status:"connecting"}),socketConnected:(e,t)=>Object.assign(Object.assign({},e),{socket:t.payload,status:"connected"}),socketDisconnected:e=>Object.assign(Object.assign({},e),{status:"disconnected"}),socketReconnecting:e=>Object.assign(Object.assign({},e),{status:"reconnect"}),deviceIdentifying:e=>Object.assign(Object.assign({},e),{isIdentifyingDevice:!0}),deviceIdentified:e=>Object.assign(Object.assign({},e),{deviceIdentified:!0,isIdentifyingDevice:!1})},extraReducers:e=>{e.addCase(uv.disconnect,(e=>Object.assign(Object.assign({},e),{status:"disconnected"})))}}),{deviceIdentifying:_v,deviceIdentified:bv,socketConnected:yv,socketConnecting:wv,socketDisconnected:Sv}=vv.actions,Cv=()=>(e,t)=>{if(Iv(t()))return;e(wv());const r=function(){const e=new URL("wss://signal.appearin.net").origin;return new af(e,{autoConnect:!1})}();r.on("connect",(()=>e(yv(r)))),r.on("device_identified",(()=>e(bv()))),r.getManager().on("reconnect",(()=>e(Pv()))),function(e,t){e.on("room_joined",(e=>t(uv.roomJoined(e)))),e.on("new_client",(e=>t(uv.newClient(e)))),e.on("client_left",(e=>t(uv.clientLeft(e)))),e.on("client_kicked",(e=>t(uv.clientKicked(e)))),e.on("audio_enabled",(e=>t(uv.audioEnabled(e)))),e.on("video_enabled",(e=>t(uv.videoEnabled(e)))),e.on("client_metadata_received",(e=>t(uv.clientMetadataReceived(e)))),e.on("chat_message",(e=>t(uv.chatMessage(e)))),e.on("disconnect",(()=>t(uv.disconnect()))),e.on("room_knocked",(e=>t(uv.roomKnocked(e)))),e.on("room_session_ended",(e=>t(uv.roomSessionEnded(e)))),e.on("knocker_left",(e=>t(uv.knockerLeft(e)))),e.on("knock_handled",(e=>t(uv.knockHandled(e)))),e.on("screenshare_started",(e=>t(uv.screenshareStarted(e)))),e.on("screenshare_stopped",(e=>t(uv.screenshareStopped(e)))),e.on("cloud_recording_started",(e=>t(uv.cloudRecordingStarted(e)))),e.on("cloud_recording_stopped",(()=>t(uv.cloudRecordingStopped()))),e.on("streaming_stopped",(()=>t(uv.streamingStopped())))}(r,e),r.connect()},Rv=({deviceCredentials:e})=>(t,r)=>{const i=r(),n=Iv(i);n&&(n.emit("identify_device",{deviceCredentials:e}),t(_v()))},Tv=()=>(e,t)=>{const r=Dv(t()).socket;null==r||r.emit("leave_room"),null==r||r.disconnect(),e(Sv())},Pv=()=>(e,t)=>{const r=gv(t());e(kv()),r.data&&e(Rv({deviceCredentials:r.data}))},{socketReconnecting:kv}=vv.actions,Dv=e=>e.signalConnection,Ov=e=>e.signalConnection.deviceIdentified,Ev=e=>e.signalConnection.status,Iv=e=>e.signalConnection.socket;Yg({actionCreator:rv,effect:(e,{dispatch:t})=>{t(Tv())}});Xg([ye(nv,Ev,((e,t)=>!(!e||!["","reconnect"].includes(t))))],(({dispatch:e},t)=>{t&&e(Cv())}));const xv=ye(gv,Ev,Ov,(e=>e.signalConnection.isIdentifyingDevice),((e,t,r,i)=>!(!e.data||"connected"!==t||r||i)));Xg([xv,gv],(({dispatch:e},t,r)=>{t&&r.data&&e(Rv({deviceCredentials:r.data}))}));const jv=at({name:"chat",initialState:{chatMessages:[]},reducers:{},extraReducers(e){e.addCase(uv.chatMessage,((e,t)=>{const r={senderId:t.payload.senderId,timestamp:t.payload.timestamp,text:t.payload.text};return Object.assign(Object.assign({},e),{chatMessages:[...e.chatMessages,r]})}))}}),Mv=e=>(t,r)=>{const i=r(),n=Dv(i).socket;null==n||n.emit("chat_message",{text:e.text})},Lv=at({name:"cloudRecording",initialState:{isRecording:!1,error:null,startedAt:void 0},reducers:{recordingRequestStarted:e=>Object.assign(Object.assign({},e),{status:"requested"})},extraReducers:e=>{e.addCase(uv.cloudRecordingStopped,(e=>Object.assign(Object.assign({},e),{isRecording:!1,status:void 0}))),e.addCase(uv.cloudRecordingStarted,((e,t)=>{const{payload:r}=t;return r.error?Object.assign(Object.assign({},e),{isRecording:!1,status:"error",error:r.error}):e})),e.addCase(uv.newClient,((e,{payload:t})=>{var r;const{client:i}=t;return"recorder"===(null===(r=i.role)||void 0===r?void 0:r.roleName)?Object.assign(Object.assign({},e),{isRecording:!0,status:"recording",startedAt:i.startedCloudRecordingAt?new Date(i.startedCloudRecordingAt).getTime():(new Date).getTime()}):e}))}}),{recordingRequestStarted:Av}=Lv.actions,Nv=()=>(e,t)=>{const r=t(),i=Dv(r).socket,n=Fv(r);n&&["recording","requested"].includes(n)||(null==i||i.emit("start_recording",{recording:"cloud"}),e(Av()))},Bv=()=>(e,t)=>{const r=t(),i=Dv(r).socket;null==i||i.emit("stop_recording")},Fv=e=>e.cloudRecording.status;const Uv=at({name:"localMedia",initialState:{busyDeviceIds:[],cameraEnabled:!1,devices:[],isSettingCameraDevice:!1,isSettingMicrophoneDevice:!1,isTogglingCamera:!1,microphoneEnabled:!1,status:"",isSwitchingStream:!1},reducers:{deviceBusy:(e,t)=>e.busyDeviceIds.includes(t.payload.deviceId)?e:Object.assign(Object.assign({},e),{busyDeviceIds:[...e.busyDeviceIds,t.payload.deviceId]}),toggleCameraEnabled(e,t){var r;return Object.assign(Object.assign({},e),{cameraEnabled:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.cameraEnabled})},setCurrentCameraDeviceId:(e,t)=>Object.assign(Object.assign({},e),{currentCameraDeviceId:t.payload.deviceId}),toggleMicrophoneEnabled(e,t){var r;return Object.assign(Object.assign({},e),{microphoneEnabled:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.microphoneEnabled})},setCurrentMicrophoneDeviceId:(e,t)=>Object.assign(Object.assign({},e),{currentMicrophoneDeviceId:t.payload.deviceId}),setDevices:(e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}),setLocalMediaStream:(e,t)=>Object.assign(Object.assign({},e),{stream:t.payload.stream}),setLocalMediaOptions:(e,t)=>Object.assign(Object.assign({},e),{options:t.payload.options}),localMediaStopped:e=>Object.assign(Object.assign({},e),{status:"stopped",stream:void 0}),localStreamMetadataUpdated(e,t){const{audio:r,video:i}=t.payload;return Object.assign(Object.assign({},e),{currentCameraDeviceId:i.deviceId,currentMicrophoneDeviceId:r.deviceId,busyDeviceIds:e.busyDeviceIds.filter((e=>e!==r.deviceId&&e!==i.deviceId))})}},extraReducers:e=>{e.addCase(tv,((e,t)=>Object.assign(Object.assign({},e),{options:t.payload.localMediaOptions}))),e.addCase(Yv.pending,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:i,isSettingMicrophoneDevice:r})})),e.addCase(Yv.fulfilled,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:!i&&e.isSettingCameraDevice,isSettingMicrophoneDevice:!r&&e.isSettingMicrophoneDevice})})),e.addCase(Yv.rejected,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:!i&&e.isSettingCameraDevice,isSettingMicrophoneDevice:!r&&e.isSettingMicrophoneDevice,cameraDeviceError:i?t.error:e.cameraDeviceError,microphoneDeviceError:r?t.error:e.microphoneDeviceError})})),e.addCase(Qv.pending,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!0}))),e.addCase(Qv.fulfilled,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!1}))),e.addCase(Xv.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}))),e.addCase(t_.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(t_.fulfilled,((e,{payload:{stream:t,onDeviceChange:r}})=>{let i,n,s=!1,a=!1;const o=t.getAudioTracks()[0],c=t.getVideoTracks()[0];return o&&(n=o.getSettings().deviceId,a=o.enabled),c&&(s=c.enabled,i=c.getSettings().deviceId),Object.assign(Object.assign({},e),{stream:t,status:"started",currentCameraDeviceId:i,currentMicrophoneDeviceId:n,cameraEnabled:s,microphoneEnabled:a,onDeviceChange:r})})),e.addCase(t_.rejected,((e,t)=>Object.assign(Object.assign({},e),{status:"error",startError:t.error}))),e.addCase(e_.pending,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!0}))),e.addCase(e_.fulfilled,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1}))),e.addCase(e_.rejected,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1})))}}),{deviceBusy:$v,setCurrentCameraDeviceId:zv,setCurrentMicrophoneDeviceId:Vv,toggleCameraEnabled:qv,toggleMicrophoneEnabled:Gv,setLocalMediaOptions:Hv,setLocalMediaStream:Wv,localMediaStopped:Kv,localStreamMetadataUpdated:Jv}=Uv.actions,Qv=Qg("localMedia/doToggleCamera",((e,{getState:t,rejectWithValue:r})=>hv(void 0,void 0,void 0,(function*(){const e=t(),i=u_(e);if(!i)return;let n=i.getVideoTracks()[0];const s=a_(e);try{if(s)if(n)n.enabled=!0;else{const t=m_(e),r=n_(e);yield nh(Object.assign(Object.assign({},t),{audioId:!1,videoId:r,type:"exact"}),{replaceStream:i}),n=i.getVideoTracks()[0]}else{if(!n)return;n.enabled=!1,n.stop(),i.removeTrack(n)}i.dispatchEvent(new CustomEvent("stopresumevideo",{detail:{track:n,enable:s}}))}catch(e){return r(e)}})))),Zv=Qg("localMedia/doToggleMicrophone",((e,{getState:t})=>{var r;const i=t(),n=u_(i);if(!n)return;const s=o_(i),a=null===(r=n.getAudioTracks())||void 0===r?void 0:r[0];a&&(a.enabled=s)})),Yv=Qg("localMedia/reactSetDevice",(({audio:e,video:t},{getState:r,rejectWithValue:i})=>hv(void 0,void 0,void 0,(function*(){try{const i=r(),n=u_(i);if(!n)throw new Error("No stream");const s=!!e&&s_(i),a=!!t&&n_(i),o=m_(i),{replacedTracks:c}=yield nh(Object.assign(Object.assign({},o),{audioId:s,videoId:a,type:"exact"}),{replaceStream:n}),d=o_(i);n.getAudioTracks().forEach((e=>e.enabled=d));const l=a_(i);return n.getVideoTracks().forEach((e=>e.enabled=l)),{replacedTracks:c}}catch(e){return i(e)}})))),Xv=Qg("localMedia/doUpdateDeviceList",((e,{getState:t,dispatch:r,rejectWithValue:i})=>hv(void 0,void 0,void 0,(function*(){var e,n;const s=t();let a=[],o=[];const c=u_(s),d=i_(s);try{a=yield navigator.mediaDevices.enumerateDevices(),o=c_(s);if(!(c&&!h_(s)&&a&&o&&o.find((e=>e.deviceId))))return{devices:a};const{changedDevices:l}=sh({oldDevices:o,newDevices:a,currentAudioId:s_(s),currentVideoId:n_(s)});let p=null===(e=l.audioinput)||void 0===e?void 0:e.deviceId,u=null===(n=l.videoinput)||void 0===n?void 0:n.deviceId;function h(e,t){const r=t?e.findIndex((e=>e.deviceId===t)):0;return(e[(r+1)%e.length]||{}).deviceId}if(void 0!==u){const m=c_(s).filter((e=>"videoinput"===e.kind)),f=n_(s);let g=h(m.filter((e=>!d.includes(e.deviceId))),f);g&&f!==g||(g=h(m,f)),f!==g&&(u=g)}if(void 0!==p){const v=c_(s).filter((e=>"audioinput"===e.kind)),_=s_(s);let b=h(v.filter((e=>!d.includes(e.deviceId))),_);b&&_!==b||(b=h(v,_)),_!==b&&(p=b)}return void 0===p&&void 0===u||r(e_({audioId:p,videoId:u})),{devices:a}}catch(y){return i(y)}})))),e_=Qg("localMedia/doSwitchLocalStream",(({audioId:e,videoId:t},{dispatch:r,getState:i,rejectWithValue:n})=>hv(void 0,void 0,void 0,(function*(){const s=i(),a=u_(s),o=m_(s),c=!(!t||e)||!(t||!e);if(a)try{const{replacedTracks:i}=yield nh(Object.assign(Object.assign({},o),{audioId:void 0!==e&&e,videoId:void 0!==t&&t,type:"exact"}),{replaceStream:a}),n=e||t;return c&&n&&r($v({deviceId:n})),{replacedTracks:i}}catch(i){console.error(i);const s=e||t;return c&&s&&r($v({deviceId:s})),n(i)}})))),t_=Qg("localMedia/doStartLocalMedia",((e,{getState:t,dispatch:r,rejectWithValue:i})=>hv(void 0,void 0,void 0,(function*(){const n=function(e,{delay:t=500,edges:r}={}){let i,n=0;return(...s)=>{n+=1,r&&1===n&&e(...s),clearTimeout(i),i=setTimeout((()=>{(!r||n>1)&&e(...s),i=void 0,n=0}),t)}}((()=>{r(Xv())}),{delay:500});if(navigator.mediaDevices&&navigator.mediaDevices.addEventListener("devicechange",n),"getTracks"in e)return Promise.resolve({stream:e,onDeviceChange:n});if(!e.audio&&!e.video)return{stream:new MediaStream,onDeviceChange:n};r(Hv({options:e}));try{yield r(Xv());const i=t(),s=m_(i),{stream:a}=yield nh(Object.assign(Object.assign({},s),{audioId:e.audio,videoId:e.video}));return{stream:a,onDeviceChange:n}}catch(e){return i(e)}})))),r_=()=>(e,t)=>{const r=u_(t()),i=l_(t()).onDeviceChange;null==r||r.getTracks().forEach((e=>{e.stop()})),navigator.mediaDevices&&i&&navigator.mediaDevices.removeEventListener("devicechange",i),e(Kv())},i_=e=>e.localMedia.busyDeviceIds,n_=e=>e.localMedia.currentCameraDeviceId,s_=e=>e.localMedia.currentMicrophoneDeviceId,a_=e=>e.localMedia.cameraEnabled,o_=e=>e.localMedia.microphoneEnabled,c_=e=>e.localMedia.devices,d_=e=>e.localMedia.options;ye(d_,(e=>!!e));const l_=e=>e.localMedia,p_=e=>e.localMedia.status,u_=e=>e.localMedia.stream,h_=e=>e.localMedia.isSwitchingStream,m_=ye(c_,(e=>({devices:e,options:{disableAEC:!1,disableAGC:!1,hd:!0,lax:!1,lowDataMode:!1,simulcast:!0,widescreen:!0}}))),f_=ye(p_,(e=>"starting"===e)),g_=ye(c_,i_,((e,t)=>e.filter((e=>"videoinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),v_=ye(c_,i_,((e,t)=>e.filter((e=>"audioinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),__=ye(c_,(e=>e.filter((e=>"audiooutput"===e.kind))));Xg([ye(nv,p_,d_,lv,((e,t,r,i)=>{if(e&&""===t&&!i&&r)return r}))],(({dispatch:e},t)=>{t&&e(t_(t))}));Xg([ye(nv,p_,d_,((e,t,r)=>!e&&""!==t&&!!r))],(({dispatch:e},t)=>{t&&e(r_())})),Yg({predicate:(e,t,r)=>{const i=o_(r),n=o_(t);return"started"===p_(r)&&i!==n},effect:(e,{dispatch:t})=>{t(Zv())}}),Yg({predicate:(e,t,r)=>{if(t.localMedia.isTogglingCamera)return!1;const i=a_(r),n=a_(t);return"started"===p_(r)&&i!==n},effect:(e,{dispatch:t})=>{t(Qv())}}),Yg({predicate:(e,t,r)=>{const i=n_(r),n=n_(t);return"started"===p_(r)&&i!==n},effect:(e,{dispatch:t})=>{t(Yv({audio:!1,video:!0}))}}),Yg({predicate:(e,t,r)=>{const i=s_(r),n=s_(t);return"started"===p_(r)&&i!==n},effect:(e,{dispatch:t})=>{t(Yv({audio:!0,video:!1}))}}),Yg({matcher:Je(t_.fulfilled,Xv.fulfilled,e_.fulfilled,e_.rejected),effect:(e,{dispatch:t,getState:r})=>{const i=r(),n=u_(i),s=c_(i);if(!n)return;const a=function({audioTrack:e,videoTrack:t,devices:r,stoppedVideoTrack:i,lastAudioId:n,lastVideoId:s}){const a=e=>"live"===(null==e?void 0:e.readyState)?e:null;return t=a(t)||i,e=a(e),{video:rh("videoinput",t,r,s),audio:rh("audioinput",e,r,n)}}({audioTrack:n.getAudioTracks()[0],videoTrack:n.getVideoTracks()[0],devices:s});t(Jv(a))}});const b_={displayName:"",id:"",isAudioEnabled:!0,isVideoEnabled:!0,isLocalParticipant:!0,stream:void 0,isScreenSharing:!1,roleName:"",clientClaim:void 0},y_=Qg("localParticipant/doEnableAudio",((e,{getState:t})=>hv(void 0,void 0,void 0,(function*(){const r=t(),i=Dv(r).socket;return null==i||i.emit("enable_audio",{enabled:e.enabled}),e.enabled})))),w_=Qg("localParticipant/doEnableVideo",((e,{getState:t})=>hv(void 0,void 0,void 0,(function*(){const r=t(),i=Dv(r).socket;return null==i||i.emit("enable_video",{enabled:e.enabled}),e.enabled})))),S_=Qg("localParticipant/doSetDisplayName",((e,{getState:t})=>hv(void 0,void 0,void 0,(function*(){const r=t(),i=Dv(r).socket;return null==i||i.emit("send_client_metadata",{type:"UserData",payload:e}),e.displayName})))),C_=at({name:"localParticipant",initialState:b_,reducers:{doSetLocalParticipant:(e,t)=>Object.assign(Object.assign({},e),t.payload)},extraReducers:e=>{e.addCase(tv,((e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName}))),e.addCase(y_.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isAudioEnabled:t.payload}))),e.addCase(w_.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isVideoEnabled:t.payload}))),e.addCase(S_.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload}))),e.addCase(uv.roomJoined,((e,t)=>{var r,i;const n=null===(i=null===(r=t.payload)||void 0===r?void 0:r.room)||void 0===i?void 0:i.clients.find((e=>{var r;return e.id===(null===(r=t.payload)||void 0===r?void 0:r.selfId)}));return Object.assign(Object.assign({},e),{id:t.payload.selfId,clientClaim:t.payload.clientClaim,roleName:(null==n?void 0:n.role.roleName)||""})}))}});C_.actions;const R_=e=>e.localParticipant,T_=e=>e.localParticipant.id;Yg({actionCreator:qv,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isVideoEnabled:n}=R_(r());t(w_({enabled:i||!n}))}}),Yg({actionCreator:Gv,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isAudioEnabled:n}=R_(r());t(y_({enabled:i||!n}))}});const P_=at({name:"localScreenshare",initialState:{status:"",stream:null,error:null},reducers:{stopScreenshare:(e,t)=>Object.assign(Object.assign({},e),{status:"",stream:null})},extraReducers:e=>{e.addCase(D_.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(D_.fulfilled,((e,{payload:{stream:t}})=>Object.assign(Object.assign({},e),{status:"active",stream:t}))),e.addCase(D_.rejected,((e,{payload:t})=>Object.assign(Object.assign({},e),{error:t,status:"",stream:null})))}}),{stopScreenshare:k_}=P_.actions,D_=Qg("localScreenshare/doStartScreenshare",((e,{dispatch:t,getState:r,rejectWithValue:i})=>hv(void 0,void 0,void 0,(function*(){var e;try{const i=r(),n=E_(i);if(n)return{stream:n};const s=yield navigator.mediaDevices.getDisplayMedia(),a=()=>{t(O_())};return"oninactive"in s?s.addEventListener("inactive",a):null===(e=s.getVideoTracks()[0])||void 0===e||e.addEventListener("ended",a),{stream:s}}catch(e){return i(e)}})))),O_=()=>(e,t)=>{const r=t(),i=E_(r);i&&(i.getTracks().forEach((e=>e.stop())),e(k_({stream:i})))},E_=e=>e.localScreenshare.stream;Yg({actionCreator:Kv,effect:(e,{getState:t})=>{const r=t(),i=E_(r);i&&(null==i||i.getTracks().forEach((e=>{e.stop()})))}});const I_=at({initialState:{data:null,isFetching:!1,error:null},name:"organization",reducers:{},extraReducers:e=>{e.addCase(x_.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(x_.fulfilled,((e,t)=>t.payload?Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}):Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(x_.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!1,error:!0})))}}),x_=Qg("organization/doOrganizationFetch",((e,{extra:t,getState:r})=>hv(void 0,void 0,void 0,(function*(){try{const e=r().app.roomUrl,i=yield t.services.fetchOrganizationFromRoomUrl(e||"");if(!i)throw new Error("Invalid room url");return i}catch(e){console.error(e)}})))),j_=e=>{var t;return null===(t=e.organization.data)||void 0===t?void 0:t.organizationId};function M_(e){return ke(`rtcConnection/event/${e}`)}Xg([ye(nv,(e=>e.organization),gv,((e,t,r)=>!(!e||t.data||t.isFetching||t.error||r.isFetching)))],(({dispatch:e},t)=>{t&&e(x_())}));const L_={rtcManagerCreated:M_("rtcManagerCreated"),rtcManagerDestroyed:M_("rtcManagerDestroyed"),streamAdded:M_("streamAdded")},A_=["recorder","streamer"];function N_(e,t=!1){const{streams:r}=e,i=function(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(r[i[n]]=e[i[n]])}return r}(e,["streams"]);return Object.assign(Object.assign({},i),{stream:null,streams:r.map((e=>({id:e,state:t?"new_accept":"to_accept"}))),isLocalParticipant:!1,presentationStream:null,newJoiner:t})}function B_(e,t){const r=e.remoteParticipants.findIndex((e=>e.id===t));return{index:r,participant:e.remoteParticipants[r]}}function F_(e,t,r){const{participant:i,index:n}=B_(e,t);return i?Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants.slice(0,n),Object.assign(Object.assign({},i),r),...e.remoteParticipants.slice(n+1)]}):(console.error(`Did not find client for update ${t}`),e)}function U_(e,t,r,i){const{participant:n}=B_(e,t);if(!n)return console.error(`No client ${t} found to update stream ${r} ${i}`),e;const s=n.streams.findIndex((e=>e.id===r)),a=[...n.streams];return a[s]=Object.assign(Object.assign({},a[s]),{state:i}),F_(e,t,{streams:a})}function $_(e,t,r){const{participant:i}=B_(e,t);return!i||i.streams.find((e=>e.id===r))?(console.warn(`No participant ${t} or stream ${r} already exists`),e):F_(e,t,{streams:[...i.streams,{id:r,state:"to_accept"}]})}const z_=at({name:"remoteParticipants",initialState:{remoteParticipants:[]},reducers:{streamStatusUpdated:(e,t)=>{let r=e;for(const{clientId:e,streamId:i,state:n}of t.payload)r=U_(r,e,i,n);return r},participantStreamAdded:(e,t)=>{const{clientId:r,stream:i}=t.payload;return F_(e,r,{stream:i})},participantStreamIdAdded:(e,t)=>{const{clientId:r,streamId:i}=t.payload;return $_(e,r,i)}},extraReducers:e=>{e.addCase(uv.roomJoined,((e,t)=>{var r;if(!(null===(r=t.payload)||void 0===r?void 0:r.room))return e;const i=t.payload.selfId,{clients:n}=t.payload.room;return Object.assign(Object.assign({},e),{remoteParticipants:n.filter((e=>e.id!==i)).filter((e=>!A_.includes(e.role.roleName))).map((e=>N_(e)))})})),e.addCase(L_.streamAdded,((e,t)=>function(e,t){const{clientId:r,stream:i,streamType:n}=t;let{streamId:s}=t;const{participant:a}=B_(e,r);if(!a)return console.error(`Did not find client ${r} for adding stream`),e;const o=e.remoteParticipants;s||(s=i.id);const c=o.find((e=>e.id===r));if(!c)return e;const d=c.streams.find((e=>e.id===s));return c.stream&&(c.stream.id===s||c.stream.inboundId===s)||!c.stream&&"webcam"===n||!c.stream&&!n&&!d?F_(e,r,{stream:i}):F_(e,r,{presentationStream:i})}(e,t.payload))),e.addCase(uv.newClient,((e,t)=>{const{client:r}=t.payload;return A_.includes(r.role.roleName)?e:function(e,t){const{participant:r}=B_(e,t.id);return r?(console.warn(`Client already existing ${t.id}. Ignoring`),e):Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants,t]})}(e,N_(r,!0))})),e.addCase(uv.clientLeft,((e,t)=>{const{clientId:r}=t.payload;return function(e,t){return Object.assign(Object.assign({},e),{remoteParticipants:e.remoteParticipants.filter((e=>e.id!==t))})}(e,r)})),e.addCase(uv.audioEnabled,((e,t)=>{const{clientId:r,isAudioEnabled:i}=t.payload;return F_(e,r,{isAudioEnabled:i})})),e.addCase(uv.videoEnabled,((e,t)=>{const{clientId:r,isVideoEnabled:i}=t.payload;return F_(e,r,{isVideoEnabled:i})})),e.addCase(uv.clientMetadataReceived,((e,t)=>{const{clientId:r,displayName:i}=t.payload.payload;return F_(e,r,{displayName:i})})),e.addCase(uv.screenshareStarted,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return $_(e,r,i)})),e.addCase(uv.screenshareStopped,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return function(e,t,r){var i,n;const{participant:s}=B_(e,t);if(!s)return console.error(`No participant ${t} found to remove stream ${r}`),e;const a=s.stream&&s.stream.id,o=(null===(i=s.presentationStream)||void 0===i?void 0:i.inboundId)||(null===(n=s.presentationStream)||void 0===n?void 0:n.id),c=s.streams.findIndex((e=>e.id===r));return F_(e,t,Object.assign(Object.assign({streams:s.streams.filter(((e,t)=>t!==c))},a===r&&{stream:null}),o===r&&{presentationStream:null}))}(e,r,i)}))}}),{participantStreamAdded:V_,participantStreamIdAdded:q_,streamStatusUpdated:G_}=z_.actions,H_=e=>e.remoteParticipants.remoteParticipants,W_=ye(E_,H_,((e,t)=>{const r=[];e&&r.push({id:e.id,participantId:"local",hasAudioTrack:e.getAudioTracks().length>0,stream:e,isLocal:!0});for(const e of t)e.presentationStream&&r.push({id:e.presentationStream.id,participantId:e.id,hasAudioTrack:e.presentationStream.getAudioTracks().length>0,stream:e.presentationStream,isLocal:!1});return r})),K_=at({initialState:{session:null,status:"initializing",error:null},name:"roomConnection",reducers:{connectionStatusChanged:(e,t)=>Object.assign(Object.assign({},e),{status:t.payload})},extraReducers:e=>{e.addCase(uv.roomJoined,((e,t)=>{var r,i;const{error:n,isLocked:s}=t.payload;return"room_locked"===n&&s?Object.assign(Object.assign({},e),{status:"room_locked"}):n?Object.assign(Object.assign({},e),{status:"disconnected",error:n}):Object.assign(Object.assign({},e),{status:"connected",session:null!==(i=null===(r=t.payload.room)||void 0===r?void 0:r.session)&&void 0!==i?i:null})})),e.addCase(uv.disconnect,(e=>Object.assign(Object.assign({},e),{status:"disconnected"}))),e.addCase(uv.newClient,((e,t)=>{var r,i;return Object.assign(Object.assign({},e),{session:null!==(i=null===(r=t.payload.room)||void 0===r?void 0:r.session)&&void 0!==i?i:null})})),e.addCase(uv.roomSessionEnded,((e,t)=>{var r;return(null===(r=e.session)||void 0===r?void 0:r.id)!==t.payload.roomSessionId?e:Object.assign(Object.assign({},e),{session:null})})),e.addCase(uv.clientKicked,(e=>Object.assign(Object.assign({},e),{status:"kicked"}))),e.addCase(kv,(e=>Object.assign(Object.assign({},e),{status:"reconnect"})))}}),{connectionStatusChanged:J_}=K_.actions,Q_=()=>(e,t)=>{const r=t(),i=Dv(r).socket,n=sv(r),s=av(r),a=ov(r),o=cv(r),c=dv(r),d=j_(r);null==i||i.emit("knock_room",{avatarUrl:null,config:{isAudioEnabled:!0,isVideoEnabled:!0},deviceCapabilities:{canScreenshare:!0},displayName:a,isCoLocated:!1,isDevicePermissionDenied:!1,kickFromOtherRooms:!1,organizationId:d,roomKey:s,roomName:n,selfId:"",userAgent:o,externalId:c}),e(J_("knocking"))},Z_=()=>(e,t)=>{const r=t(),i=Dv(r).socket,n=sv(r),s=av(r),a=ov(r),o=cv(r),c=dv(r),d=j_(r),l=a_(t()),p=o_(t()),u=T_(t()),h=(e=>e.localParticipant.clientClaim)(t());null==i||i.emit("join_room",Object.assign(Object.assign({avatarUrl:null,config:{isAudioEnabled:p,isVideoEnabled:l},deviceCapabilities:{canScreenshare:!0},displayName:a,isCoLocated:!1,isDevicePermissionDenied:!1,kickFromOtherRooms:!1,organizationId:d,roomKey:s,roomName:n,selfId:u},!!h&&{clientClaim:h}),{userAgent:o,externalId:c})),e(J_("connecting"))},Y_=e=>e.roomConnection.status;Xg([ye([j_,Y_,Ov,p_,lv],((e,t,r,i,n)=>!("started"!==i&&!n||!r||!e||!["initializing","reconnect"].includes(t))))],(({dispatch:e},t)=>{t&&e(Z_())})),Yg({actionCreator:uv.knockHandled,effect:({payload:e},{dispatch:t,getState:r})=>{const{clientId:i,resolution:n}=e,s=r();i===T_(s)&&("accepted"===n?(t(iv(e.metadata.roomKey)),t(Z_())):"rejected"===n&&t(J_("knock_rejected")))}});const X_=e=>({emit:(t,r)=>{"rtc_manager_created"===t?e(hb(r)):"stream_added"===t?e(L_.streamAdded(r)):"rtc_manager_destroyed"===t&&e(ab())}}),eb={dispatcherCreated:!1,error:null,isCreatingDispatcher:!1,reportedStreamResolutions:{},rtcManager:null,rtcManagerDispatcher:null,rtcManagerInitialized:!1,status:"",isAcceptingStreams:!1},tb=at({name:"rtcConnection",initialState:eb,reducers:{isAcceptingStreams:(e,t)=>Object.assign(Object.assign({},e),{isAcceptingStreams:t.payload}),resolutionReported:(e,t)=>{const{streamId:r,width:i,height:n}=t.payload;return Object.assign(Object.assign({},e),{reportedStreamResolutions:Object.assign(Object.assign({},e.reportedStreamResolutions),{[r]:{width:i,height:n}})})},rtcDisconnected:()=>Object.assign({},eb),rtcDispatcherCreated:(e,t)=>Object.assign(Object.assign({},e),{dispatcherCreated:!0,rtcManagerDispatcher:t.payload}),rtcManagerCreated:(e,t)=>Object.assign(Object.assign({},e),{rtcManager:t.payload,status:"ready"}),rtcManagerDestroyed:e=>Object.assign(Object.assign({},e),{rtcManager:null}),rtcManagerInitialized:e=>Object.assign(Object.assign({},e),{rtcManagerInitialized:!0})},extraReducers:e=>{e.addCase(kv,(e=>Object.assign(Object.assign({},e),{status:"reconnect"}))),e.addCase(uv.roomJoined,(e=>Object.assign(Object.assign({},e),{status:"reconnect"===e.status?"ready":e.status})))}}),{resolutionReported:rb,rtcDispatcherCreated:ib,rtcDisconnected:nb,rtcManagerCreated:sb,rtcManagerDestroyed:ab,rtcManagerInitialized:ob,isAcceptingStreams:cb}=tb.actions,db=()=>(e,t)=>{const r=t(),i=Dv(r).socket,n=fb(r).rtcManagerDispatcher,s=a_(r),a=o_(r),o=lv(r);if(n||!i)return;const c={getMediaConstraints:()=>({audio:a,video:s}),deferrable:e=>!e},d=new Jm({emitter:X_(e),serverSocket:i,webrtcProvider:c,features:{lowDataModeEnabled:!1,sfuServerOverrideHost:void 0,turnServerOverrideHost:void 0,useOnlyTURN:void 0,vp9On:!1,h264On:!1,simulcastScreenshareOn:!1,deviceHandlerFactory:o?Fn.createFactory():void 0}});e(ib(d))},lb=()=>(e,t)=>{const{rtcManager:r}=fb(t());r&&r.disconnectAll(),e(nb())},pb=e=>(t,r)=>{var i;t(cb(!0));const n=r(),s=fb(n).rtcManager,a=H_(n);if(!s)throw new Error("No rtc manager");const o=null===(i=s.shouldAcceptStreamsFromBothSides)||void 0===i?void 0:i.call(s),c=[];for(const{clientId:t,streamId:r,state:i}of e){if(a.find((e=>e.id===t))){if("to_accept"===i||"new_accept"===i&&o||"old_accept"===i&&!o)s.acceptNewStream({streamId:"0"===r?t:r,clientId:t,shouldAddLocalVideo:"0"===r,activeBreakout:false});else if("new_accept"===i||"old_accept"===i);else if("to_unaccept"===i)null==s||s.disconnect("0"===r?t:r,false);else if("done_accept"!==i)continue;c.push({clientId:t,streamId:r,state:i.replace(/to_|new_|old_/,"done_")})}}t(G_(c)),t(cb(!1))},ub=({streamId:e,width:t,height:r})=>(i,n)=>{const{reportedStreamResolutions:s,rtcManager:a}=fb(n()),o=u_(n());if(!a||(null==o?void 0:o.id)===e)return;const c=s[e];c&&c.width===t&&c.height===r||a.updateStreamResolution(e,null,{width:t||1,height:r||1}),i(rb({streamId:e,width:t,height:r}))},hb=e=>t=>{const{rtcManager:r}=e;t(sb(r))},mb=()=>(e,t)=>{const r=u_(t()),i=fb(t()).rtcManager,n=a_(t()),s=o_(t());r&&i&&i.addNewStream("0",r,!s,!n),e(ob())},fb=e=>e.rtcConnection,gb=e=>e.rtcConnection.rtcManagerInitialized,vb=e=>e.rtcConnection.status;Yg({actionCreator:Yv.fulfilled,effect:({payload:e},{getState:t})=>{const{replacedTracks:r}=e,{rtcManager:i}=fb(t()),n=u_(t());null==r||r.forEach((e=>{((e,t)=>{const r=null==n?void 0:n.getTracks().find((t=>t.kind===e));r&&(null==i||i.replaceTrack(t,r))})(e.kind,e)}))}}),Yg({actionCreator:D_.fulfilled,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=fb(t());null==i||i.addNewStream(r.id,r,!1,!0)}}),Yg({actionCreator:k_,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=fb(t());null==i||i.removeStream(r.id,r,null)}});Xg([ye((e=>e.rtcConnection.dispatcherCreated),(e=>e.rtcConnection.isCreatingDispatcher),Iv,((e,t,r)=>!(e||t||!r)))],(({dispatch:e},t)=>{t&&e(db())}));const _b=ye((e=>e.rtcConnection.rtcManager),gb,p_,((e,t,r)=>!("started"!==r||!e||t)));Xg([_b],(({dispatch:e},t)=>{t&&e(mb())}));Xg([ye(vb,nv,((e,t)=>!t&&!["","disconnected"].includes(e)))],(({dispatch:e},t)=>{t&&e(lb())}));const bb=ye(vb,H_,((e,t)=>{if("ready"!==e)return[];const r=[];for(const e of t){const{streams:t,id:i,newJoiner:n}=e;for(let e=0;e<t.length;e++){let s=t[e].id,a=t[e].state;(null==t?void 0:t.length)>1&&"0"===t[1].id&&(0===e?(s=t[1].id,a=t[1].state):1===e&&(s=t[0].id,a=t[0].state)),"done_accept"!==a&&r.push({clientId:i,streamId:s,state:(n&&"0"===s?"new":"to")+"_accept"})}}return r}));Xg([bb,e=>e.rtcConnection.isAcceptingStreams],(({dispatch:e},t,r)=>{0<t.length&&!r&&e(pb(t))}));const yb={audioEnabled:{actions:[y_.fulfilled],rtcEventName:"audioEnabled",getValue:e=>o_(e),getOutput:e=>({enabled:e})},videoEnabled:{actions:[w_.fulfilled],rtcEventName:"videoEnabled",getValue:e=>a_(e),getOutput:e=>({enabled:e})},localStream:{actions:[Yv.fulfilled],rtcEventName:"localStream",getValue:e=>{var t;return null===(t=u_(e))||void 0===t?void 0:t.getTracks().map((e=>({id:e.id,kind:e.kind,label:e.label})))},getOutput:e=>({stream:e})},localScreenshareStream:{actions:[D_.fulfilled],rtcEventName:"localScreenshareStream",getValue:e=>{var t;return null===(t=E_(e))||void 0===t?void 0:t.getTracks().map((e=>({id:e.id,kind:e.kind,label:e.label})))},getOutput:e=>({tracks:e})},localScreenshareStreamStopped:{actions:[k_],rtcEventName:"localScreenshareStream",getValue:()=>()=>null,getOutput:()=>({})},displayName:{actions:[S_.fulfilled],rtcEventName:"displayName",getValue:e=>ov(e),getOutput:e=>({displayName:e})},clientId:{actions:null,rtcEventName:"clientId",getValue:e=>T_(e),getOutput:e=>({clientId:e})},deviceId:{actions:null,rtcEventName:"deviceId",getValue:e=>(e=>{var t,r;return null===(r=null===(t=e.deviceCredentials.data)||void 0===t?void 0:t.credentials)||void 0===r?void 0:r.uuid})(e),getOutput:e=>({deviceId:e})},externalId:{actions:null,rtcEventName:"externalId",getValue:e=>dv(e),getOutput:e=>({externalId:e})},organizationId:{actions:null,rtcEventName:"organizationId",getValue:e=>j_(e),getOutput:e=>({organizationId:e})},signalConnectionStatus:{actions:null,rtcEventName:"signalConnectionStatus",getValue:e=>Ev(e),getOutput:e=>({status:e})},roomSessionId:{actions:[uv.newClient,uv.roomJoined,uv.roomSessionEnded,uv.clientLeft],rtcEventName:"roomSessionId",getValue:e=>(e=>{var t;return null===(t=e.roomConnection.session)||void 0===t?void 0:t.id})(e),getOutput:e=>({roomSessionId:e})},rtcConnectionStatus:{actions:null,rtcEventName:"rtcConnectionStatus",getValue:e=>vb(e),getOutput:e=>({status:e})},userRole:{actions:null,rtcEventName:"userRole",getValue:e=>(e=>e.localParticipant.roleName)(e),getOutput:e=>({userRole:e})}},wb=Object.values(yb).flatMap((({actions:e})=>{var t;return null!==(t=null==e?void 0:e.map((e=>e)))&&void 0!==t?t:null})).filter((e=>null!==e)),Sb=e=>"object"==typeof e?JSON.stringify(e):e,Cb=at({initialState:{reportedValues:{}},name:"rtcAnalytics",reducers:{updateReportedValues:(e,t)=>Object.assign(Object.assign({},e),{reportedValues:Object.assign(Object.assign({},e.reportedValues),{[t.payload.rtcEventName]:t.payload.value})})}}),Rb=()=>(e,t)=>{const r=t(),i=fb(r).rtcManager;i&&(i.sendStatsCustomEvent("insightsStats",{_time:Date.now(),ls:0,lr:0,bs:0,br:0,cpu:0}),Object.values(yb).forEach((({rtcEventName:t,getValue:n,getOutput:s})=>{var a;const o=n(r),c=Object.assign(Object.assign({},s(o)),{_time:Date.now()}),d=Sb(o);(null===(a=r.rtcAnalytics.reportedValues)||void 0===a?void 0:a[t])!==d&&(i.sendStatsCustomEvent(t,c),e(Tb({rtcEventName:t,value:o})))})))},{updateReportedValues:Tb}=Cb.actions;Yg({matcher:Je(...wb),effect:({type:e},{getState:t,dispatch:r})=>{var i;const n=t(),s=fb(n).rtcManager;if(!s)return;const a=Object.values(yb).find((({actions:t})=>null==t?void 0:t.map((e=>e.type)).includes(e)));if(!a)return;const{getValue:o,getOutput:c,rtcEventName:d}=a,l=o(n),p=Sb(l),u=Object.assign(Object.assign({},c(l)),{_time:Date.now()});(null===(i=n.rtcAnalytics.reportedValues)||void 0===i?void 0:i[d])!==p&&(s.sendStatsCustomEvent(d,u),r(Tb({rtcEventName:d,value:l})))}}),Xg([gb],(({dispatch:e},t)=>{t&&e(Rb())}));const Pb=at({name:"streaming",initialState:{isStreaming:!1,error:null,startedAt:void 0},reducers:{doHandleStreamingStarted:e=>Object.assign(Object.assign({},e),{isStreaming:!0,error:null,startedAt:(new Date).getTime()}),doHandleStreamingStopped:e=>Object.assign(Object.assign({},e),{isStreaming:!1})}});Pb.actions;const kb=at({name:"waitingParticipants",initialState:{waitingParticipants:[]},reducers:{},extraReducers:e=>{e.addCase(uv.roomJoined,((e,{payload:t})=>{var r;return(null===(r=t.room)||void 0===r?void 0:r.knockers.length)?Object.assign(Object.assign({},e),{waitingParticipants:t.room.knockers.map((e=>({id:e.clientId,displayName:e.displayName})))}):e})),e.addCase(uv.roomKnocked,((e,t)=>{const{clientId:r,displayName:i}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:[...e.waitingParticipants,{id:r,displayName:i}]})})),e.addCase(uv.knockerLeft,((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:e.waitingParticipants.filter((e=>e.id!==r))})}))}}),Db=e=>(t,r)=>{const{participantId:i}=e,n=r(),s=Iv(n);null==s||s.emit("handle_knock",{action:"accept",clientId:i,response:{}})},Ob=e=>(t,r)=>{const{participantId:i}=e,n=r(),s=Iv(n);null==s||s.emit("handle_knock",{action:"reject",clientId:i,response:{}})};const Eb=null===!1&&!1,Ib=m({app:ev.reducer,chat:jv.reducer,cloudRecording:Lv.reducer,deviceCredentials:mv.reducer,localMedia:Uv.reducer,localParticipant:C_.reducer,localScreenshare:P_.reducer,organization:I_.reducer,remoteParticipants:z_.reducer,roomConnection:K_.reducer,rtcAnalytics:Cb.reducer,rtcConnection:tb.reducer,signalConnection:vv.reducer,streaming:Pb.reducer,waitingParticipants:kb.reducer}),xb=({preloadedState:e,injectServices:t})=>He({devTools:Eb,reducer:Ib,middleware:e=>e({thunk:{extraArgument:{services:t}},serializableCheck:!1}).prepend(Zg.middleware),preloadedState:e}),jb=(e,t,r)=>{let i;function n(){const n=t(e.getState());n!==i&&(i=n,r(i))}const s=e.subscribe(n);return n(),s};class Mb{constructor(e={}){this.data=void 0===e.data?{}:e.data,this.headers=e.headers||{},this.status=e.status||200,this.statusText=e.statusText||"OK",this.url=e.url||null}}function Lb(e,t){return ef.ok(e,`${t} is required`),e}function Ab(e,t){return ef.ok("boolean"==typeof e,`${t}<boolean> is required`),e}function Nb(e,t){return ef.ok("number"==typeof e,`${t}<number> is required`),e}function Bb(e,t){return ef.ok("string"==typeof e,`${t}<string> is required`),e}function Fb(e,t,r){const i=r||t.name[0].toLowerCase()+t.name.substring(1);return ef.ok(e instanceof t,`${i}<${t.name}> is required`),e}function Ub(e,t){return ef.ok(Array.isArray(e),`${t}<array> is required`),e}function $b(e,t){if(null==e||"object"!=typeof e||Array.isArray(e))throw new Error(`${t} must be a record. ${JSON.stringify(e)}`);return e}function zb(e,t,r){Bb(t,"name"),function(e,t,r,i){Bb(r,"name");const n=i||`${r} must be null or of type ${t}`;ef.ok(null===e||typeof e===t,n)}(e,"string",t,r)}function Vb({baseUrl:e,url:t}){return e?e+t:t}class qb{constructor({baseUrl:e}){Bb(e,"baseUrl"),this._baseUrl=e}_requestAxios(e,t){const r=Object.assign({},t,{url:e,baseURL:this._baseUrl});return Jg.request(r)}request(e,t){return Bb(e,"url"),ef.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),ef.ok(t,"options are required"),this._requestAxios(e,t).then((e=>{const{data:t,headers:r,status:i,statusText:n,config:s}=e,a=s&&s.url?Vb({baseUrl:s.baseURL,url:s.url}):null;return new Mb({data:t,headers:r,status:i,statusText:n,url:a})})).catch((e=>{const t=e.response;if(!t)throw new Error("Could not make the request.");const{data:r,headers:i,status:n,statusText:s,config:a}=t,o=a&&a.url?Vb({baseUrl:a.baseURL,url:a.url}):null;return Promise.reject(new Mb({data:r,headers:i,status:n,statusText:s,url:o}))}))}}class Gb{constructor({httpClient:e}){ef.ok(e,"httpClient is required"),this._httpClient=e}static dataToFormData(e){ef.ok(e,"data is required");const t=new FormData;return Object.keys(e).forEach((r=>{const i=e[r];t.append(r,i)})),t}request(e,t={}){const r=Object.assign(t.headers||{},{"Content-Type":void 0});return this._httpClient.request(e,Object.assign(t,{headers:r,transformRequest:Gb.dataToFormData}))}}let Hb;Hb="object"==typeof window?window.btoa||lf:"object"==typeof global&&global.btoa||lf;const Wb=()=>Promise.resolve(null);class Kb{constructor({httpClient:e,fetchDeviceCredentials:t}){this._httpClient=e,this._fetchDeviceCredentials=t}request(e,t){return this._fetchDeviceCredentials().then((r=>{const i=Object.assign({},t.headers,function(e){if(e&&e.credentials){const t=`${e.credentials.uuid}:${e.hmac}`;return{Authorization:`Basic ${Hb(t)}`}}return{}}(r),{"X-Appearin-Device-Platform":"web"}),n=Object.assign({},t,{headers:i});return this._httpClient.request(e,n)}))}}class Jb{constructor({baseUrl:e="https://api.appearin.net",fetchDeviceCredentials:t=Wb}={}){this.authenticatedHttpClient=new Kb({httpClient:new qb({baseUrl:e}),fetchDeviceCredentials:t}),this.authenticatedFormDataHttpClient=new Gb({httpClient:this.authenticatedHttpClient})}request(e,t){return Bb(e,"url"),ef.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),ef.ok(t,"options are required"),this.authenticatedHttpClient.request(e,t)}requestMultipart(e,t){return Bb(e,"url"),ef.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),ef.ok(t,"options are required"),this.authenticatedFormDataHttpClient.request(e,t)}}function Qb(e,t){return Bb($b(e,"data")[t],t)}const Zb=(Yb=Qb,(e,t)=>{const r=$b(e,"data")[t];return null==r?null:Yb(e,t)});var Yb;function Xb(e,t,r){return function(e,t){return Ub($b(e,"data")[t],t)}(e,t).map((e=>r(e)))}class ey{constructor(e,t,r=void 0){this.credentials={uuid:e},this.hmac=t,this.userId=r}toJson(){return Object.assign({credentials:this.credentials,hmac:this.hmac},this.userId&&{userId:this.userId})}static fromJson(e){return new ey(Qb(function(e,t){const r=$b(e,"data")[t];return void 0===r?null:r}(e,"credentials"),"uuid"),Qb(e,"hmac"),Zb(e,"userId")||void 0)}}class ty{constructor({apiClient:e}){this._apiClient=e}getCredentials(){return this._apiClient.request("/devices",{method:"post"}).then((({data:e})=>ey.fromJson(e))).catch((e=>{if(e.response&&404===e.response.status)return null;throw e}))}}class ry{constructor(e,t){this._key=e,this._chromeStorage=t}loadOrDefault(e){return new Promise((t=>{this._chromeStorage.get(this._key,(r=>{t(r[this._key]||e)}))}))}save(e){return new Promise((t=>{this._chromeStorage.set({[this._key]:e},(()=>{t()}))}))}}class iy{constructor(e,t){Lb(t,"localStorage"),this._key=Bb(e,"key"),this._localStorage=t}loadOrDefault(e){try{const t=this._localStorage.getItem(this._key);if(t)try{return Promise.resolve(JSON.parse(t))}catch(e){}return Promise.resolve(e)}catch(t){return console.warn("Error getting access to storage. Are cookies blocked?",t),Promise.resolve(e)}}save(e){try{return this._localStorage.setItem(this._key,JSON.stringify(e)),Promise.resolve()}catch(e){return console.warn("Error getting access to storage. Are cookies blocked?",e),Promise.reject(e)}}}let ny;try{ny=self.localStorage}catch(ky){ny={getItem:()=>{},key:()=>{},setItem:()=>{},removeItem:()=>{},hasOwnProperty:()=>{},length:0}}var sy=ny;const ay="credentials_saved";class oy extends Ft{constructor({deviceService:e,credentialsStore:t}){super(),this._deviceService=e,this._credentialsStore=t}static create({baseUrl:e,storeName:t="CredentialsStorage",storeType:r="localStorage"}){const i=new ty({apiClient:new Jb({baseUrl:e})});let n=null;if("localStorage"===r)n=new iy(t,sy);else{if("chromeStorage"!==r)throw new Error(`Unknown store type: ${r}`);n=new ry(t,window.chrome.storage.local)}return new oy({deviceService:i,credentialsStore:n})}_fetchNewCredentialsFromApi(){const e=this._credentialsStore;return new Promise((t=>{const r=()=>{this._deviceService.getCredentials().then((r=>e.save(r?r.toJson():null).then((()=>t(r))))).catch((()=>{setTimeout(r,2e3)}))};r()}))}getCurrentCredentials(){return this._credentialsStore.loadOrDefault(null).then((e=>e?ey.fromJson(e):null))}getCredentials(){return this.credentialsPromise||(this.credentialsPromise=this.getCurrentCredentials().then((e=>e||this._fetchNewCredentialsFromApi()))),this.credentialsPromise}saveCredentials(e){return this.credentialsPromise=void 0,this._credentialsStore.save(e.toJson()).then((()=>(this.emit(ay,e),e)))}setUserId(e){return this.getCurrentCredentials().then((t=>{t||console.error("Illegal state: no credentials to set user id for.");if(null===t||t.userId!==e)return this._credentialsStore.save(Object.assign({},null==t?void 0:t.toJson(),{userId:e}))})).then((()=>{}))}}class cy{constructor({isExhausted:e,renewsAt:t,totalMinutesLimit:r,totalMinutesUsed:i}){this.isExhausted=e,this.renewsAt=t,this.totalMinutesLimit=r,this.totalMinutesUsed=i}static fromJson(e){return new cy({isExhausted:Ab(e.isExhausted,"isExhausted"),renewsAt:new Date(Bb(e.renewsAt,"renewsAt")),totalMinutesLimit:Nb(e.totalMinutesLimit,"totalMinutesLimit"),totalMinutesUsed:Nb(e.totalMinutesUsed,"totalMinutesUsed")})}}class dy{constructor({basePlanId:e,embeddedFreeTierStatus:t,isDeactivated:r,isOnTrial:i,onTrialUntil:n,trialStatus:s}){this.basePlanId=e,this.isDeactivated=r,this.isOnTrial=i,this.onTrialUntil=n||null,this.trialStatus=s||null,this.embeddedFreeTierStatus=t||null}static fromJson(e){return new dy({basePlanId:"string"==typeof e.basePlanId?e.basePlanId:null,isDeactivated:Ab(e.isDeactivated,"isDeactivated"),isOnTrial:Ab(e.isOnTrial,"isOnTrial"),onTrialUntil:"string"==typeof e.onTrialUntil?new Date(e.onTrialUntil):null,trialStatus:"string"==typeof e.trialStatus?e.trialStatus:null,embeddedFreeTierStatus:e.embeddedFreeTierStatus?cy.fromJson(e.embeddedFreeTierStatus):null})}}function ly(e){return null!=e}function py(e={}){return{maxNumberOfInvitationsAndUsers:ly(null==e?void 0:e.maxNumberOfInvitationsAndUsers)?Number(null==e?void 0:e.maxNumberOfInvitationsAndUsers):null,maxNumberOfClaimedRooms:ly(null==e?void 0:e.maxNumberOfClaimedRooms)?Number(null==e?void 0:e.maxNumberOfClaimedRooms):null,maxRoomLimitPerOrganization:ly(null==e?void 0:e.maxRoomLimitPerOrganization)?Number(null==e?void 0:e.maxRoomLimitPerOrganization):null,trialMinutesLimit:ly(null==e?void 0:e.trialMinutesLimit)?Number(null==e?void 0:e.trialMinutesLimit):null,includedUnits:ly(null==e?void 0:e.includedUnits)?Number(null==e?void 0:e.includedUnits):null}}class uy{constructor(e){this.logoImageUrl=null,this.roomBackgroundImageUrl=null,this.roomBackgroundThumbnailUrl=null,this.roomKnockPageBackgroundImageUrl=null,this.roomKnockPageBackgroundThumbnailUrl=null,this.preferences=null,this.onboardingSurvey=null,this.type=null,Fb(e,Object,"properties"),Bb(e.organizationId,"organizationId"),Bb(e.organizationName,"organizationName"),Bb(e.subdomain,"subdomain"),Fb(e.permissions,Object,"permissions"),Fb(e.limits,Object,"limits"),this.organizationId=e.organizationId,this.organizationName=e.organizationName,this.subdomain=e.subdomain,this.permissions=e.permissions,this.limits=e.limits,this.account=e.account?new dy(e.account):null,this.logoImageUrl=e.logoImageUrl,this.roomBackgroundImageUrl=e.roomBackgroundImageUrl,this.roomBackgroundThumbnailUrl=e.roomBackgroundThumbnailUrl,this.roomKnockPageBackgroundImageUrl=e.roomKnockPageBackgroundImageUrl,this.roomKnockPageBackgroundThumbnailUrl=e.roomKnockPageBackgroundThumbnailUrl,this.preferences=e.preferences,this.onboardingSurvey=e.onboardingSurvey,this.type=e.type}static fromJson(e){const t=Fb(e,Object,"data"),r=(null==t?void 0:t.preferences)||{},i=(null==t?void 0:t.onboardingSurvey)||null,n=Fb(t.permissions,Object,"permissions");return new uy({organizationId:Bb(t.organizationId,"organizationId"),organizationName:Bb(t.organizationName,"organizationName"),subdomain:Bb(t.subdomain,"subdomain"),permissions:n,limits:py(Fb(t.limits,Object,"limits")),account:t.account?dy.fromJson(t.account):null,logoImageUrl:"string"==typeof t.logoImageUrl?t.logoImageUrl:null,roomBackgroundImageUrl:"string"==typeof t.roomBackgroundImageUrl?t.roomBackgroundImageUrl:null,roomBackgroundThumbnailUrl:"string"==typeof t.roomBackgroundThumbnailUrl?t.roomBackgroundThumbnailUrl:null,roomKnockPageBackgroundImageUrl:"string"==typeof t.roomKnockPageBackgroundImageUrl?t.roomKnockPageBackgroundImageUrl:null,roomKnockPageBackgroundThumbnailUrl:"string"==typeof t.roomKnockPageBackgroundThumbnailUrl?t.roomKnockPageBackgroundThumbnailUrl:null,preferences:r,onboardingSurvey:i,type:"string"==typeof t.type?t.type:null})}}uy.GLOBAL_ORGANIZATION_ID="1";class hy{constructor({apiClient:e}){this._apiClient=e}createOrganization({organizationName:e,subdomain:t,owner:r}){const{displayName:i,consents:n}=r||{},s="email"in r?{value:r.email,verificationCode:Bb(r.verificationCode,"owner.verificationCode")}:null,a="idToken"in r?r.idToken:null;if(Bb(t,"subdomain"),Bb(e,"organizationName"),Bb(i,"owner.displayName"),ef.ok(s||a,"owner.email or owner.idToken is required"),n){Ub(n,"consents");for(const{consentRevisionId:e,action:t}of n)Bb(e,"consentRevisionId"),zb(t,"action")}return this._apiClient.request("/organizations",{method:"POST",data:{organizationName:e,type:"private",subdomain:t,owner:Object.assign(Object.assign(Object.assign(Object.assign({},s&&{email:s}),a&&{idToken:a}),n&&{consents:n}),{displayName:i})}}).then((({data:e})=>Qb(e,"organizationId")))}getOrganizationBySubdomain(e){return Bb(e,"subdomain"),this._apiClient.request(`/organization-subdomains/${encodeURIComponent(e)}/?fields=permissions,account,onboardingSurvey`,{method:"GET"}).then((({data:e})=>uy.fromJson(e))).catch((e=>{if(e instanceof Mb){if(404===e.status)return null;throw new Error(e.statusText)}throw e}))}getOrganizationByOrganizationId(e){return Bb(e,"organizationId"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}?fields=permissions,account`,{method:"GET"}).then((({data:e})=>uy.fromJson(e))).catch((e=>{if(e instanceof Mb){if(404===e.status)return null;throw new Error(e.statusText)}throw e}))}getOrganizationsByContactPoint(e){const{code:t}=e,r="email"in e?e.email:null,i="phoneNumber"in e?e.phoneNumber:null;ef.ok((r||i)&&!(r&&i),"either email or phoneNumber is required"),Bb(t,"code");const n=r?{type:"email",value:r}:{type:"phoneNumber",value:i};return this._apiClient.request("/organization-queries",{method:"POST",data:{contactPoint:n,code:t}}).then((({data:e})=>Xb(e,"organizations",(e=>uy.fromJson(e)))))}getOrganizationsByIdToken({idToken:e}){return Bb(e,"idToken"),this._apiClient.request("/organization-queries",{method:"POST",data:{idToken:e}}).then((({data:e})=>Xb(e,"organizations",(e=>uy.fromJson(Object.assign({permissions:{},limits:{}},$b(e,"organization")))))))}getOrganizationsByLoggedInUser(){return this._apiClient.request("/user/organizations",{method:"GET"}).then((({data:e})=>Xb(e,"organizations",(e=>uy.fromJson(Object.assign({permissions:{},limits:{}},$b(e,"organization")))))))}getSubdomainAvailability(e){return Bb(e,"subdomain"),this._apiClient.request(`/organization-subdomains/${encodeURIComponent(e)}/availability`,{method:"GET"}).then((({data:e})=>(Fb(e,Object,"data"),{status:Qb(e,"status")})))}updatePreferences({organizationId:e,preferences:t}){return Lb(e,"organizationId"),Lb(t,"preferences"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}/preferences`,{method:"PATCH",data:t}).then((()=>{}))}deleteOrganization({organizationId:e}){return Lb(e,"organizationId"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}`,{method:"DELETE"}).then((()=>{}))}}class my{constructor({organizationService:e,subdomain:t}){this._organizationService=e,this._subdomain=t,this._organizationPromise=null}initOrganization(){return this.fetchOrganization().then((()=>{}))}fetchOrganization(){return this._organizationPromise||(this._organizationPromise=this._organizationService.getOrganizationBySubdomain(this._subdomain)),this._organizationPromise}}const fy="https://api.whereby.dev";function gy(){const e=oy.create({baseUrl:fy}),t=new Jb({fetchDeviceCredentials:e.getCredentials.bind(e),baseUrl:fy}),r=new hy({apiClient:t});return{credentialsService:e,apiClient:t,organizationService:r,fetchOrganizationFromRoomUrl:e=>{const t=cf({host:new URL(e).host});return new my({organizationService:r,subdomain:t.subdomain}).fetchOrganization()}}}const vy=ye((e=>e.chat.chatMessages),(e=>e.cloudRecording),R_,u_,H_,W_,Y_,(e=>e.streaming),(e=>e.waitingParticipants.waitingParticipants),((e,t,r,i,n,s,a,o,c)=>({chatMessages:e,cloudRecording:t.isRecording?{status:"recording"}:void 0,localScreenshareStatus:r.isScreenSharing?"active":void 0,localParticipant:Object.assign(Object.assign({},r),{stream:i}),remoteParticipants:n,screenshares:s,connectionStatus:a,liveStream:o.isStreaming?{status:"streaming",startedAt:o.startedAt}:void 0,waitingParticipants:c}))),_y={chatMessages:[],remoteParticipants:[],connectionStatus:"initializing",screenshares:[],waitingParticipants:[]},by={localMediaOptions:{audio:!0,video:!0}};const yy=ye((e=>e.localMedia.cameraDeviceError),g_,n_,s_,(e=>e.localMedia.isSettingCameraDevice),(e=>e.localMedia.isSettingMicrophoneDevice),f_,u_,(e=>e.localMedia.microphoneDeviceError),v_,__,(e=>e.localMedia.startError),((e,t,r,i,n,s,a,o,c,d,l,p)=>({cameraDeviceError:e,cameraDevices:t,currentCameraDeviceId:r,currentMicrophoneDeviceId:i,isSettingCameraDevice:n,isSettingMicrophoneDevice:s,isStarting:a,localStream:o,microphoneDeviceError:c,microphoneDevices:d,speakerDevices:l,startError:p}))),wy={cameraDeviceError:null,cameraDevices:[],isSettingCameraDevice:!1,isSettingMicrophoneDevice:!1,isStarting:!1,microphoneDeviceError:null,microphoneDevices:[],speakerDevices:[],startError:null};return e.VideoView=s,e.useLocalMedia=function(e={audio:!0,video:!0}){const[r]=t.useState((()=>{const e=gy();return xb({injectServices:e})})),[i,n]=t.useState(wy);return t.useEffect((()=>{const t=jb(r,yy,n);return r.dispatch(t_(e)),()=>{t(),r.dispatch(r_())}}),[]),{state:i,actions:{setCameraDevice:t.useCallback((e=>r.dispatch(zv({deviceId:e}))),[r]),setMicrophoneDevice:t.useCallback((e=>r.dispatch(Vv({deviceId:e}))),[r]),toggleCameraEnabled:t.useCallback((e=>r.dispatch(qv({enabled:e}))),[r]),toggleMicrophoneEnabled:t.useCallback((e=>r.dispatch(Gv({enabled:e}))),[r])},store:r}},e.useRoomConnection=function(e,t=by){const[r]=n.useState((()=>{if(t.localMedia)return t.localMedia.store;const e=gy();return xb({injectServices:e})})),[i,a]=n.useState(),[o,c]=n.useState(_y);return n.useEffect((()=>{const i=jb(r,vy,c),n=new URL(e),s=new URLSearchParams(n.search).get("roomKey");return r.dispatch(tv({displayName:t.displayName||"Guest",localMediaOptions:t.localMedia?void 0:t.localMediaOptions,roomKey:s,roomUrl:e,userAgent:"browser-sdk:2.6.1",externalId:t.externalId||null})),()=>{i(),r.dispatch(rv())}}),[]),n.useEffect((()=>{r&&!i&&a((()=>e=>n.createElement(s,Object.assign({},e,{onResize:({stream:e,width:t,height:i})=>{r.dispatch(ub({streamId:e.id,width:t,height:i}))}}))))}),[r,i]),{state:o,actions:{sendChatMessage:n.useCallback((e=>r.dispatch(Mv({text:e}))),[r]),knock:n.useCallback((()=>r.dispatch(Q_())),[r]),setDisplayName:n.useCallback((e=>r.dispatch(S_({displayName:e}))),[r]),toggleCamera:n.useCallback((e=>r.dispatch(qv({enabled:e}))),[r]),toggleMicrophone:n.useCallback((e=>r.dispatch(Gv({enabled:e}))),[r]),acceptWaitingParticipant:n.useCallback((e=>r.dispatch(Db({participantId:e}))),[r]),rejectWaitingParticipant:n.useCallback((e=>r.dispatch(Ob({participantId:e}))),[r]),startCloudRecording:n.useCallback((()=>r.dispatch(Nv())),[r]),startScreenshare:n.useCallback((()=>r.dispatch(D_())),[r]),stopCloudRecording:n.useCallback((()=>r.dispatch(Bv())),[r]),stopScreenshare:n.useCallback((()=>r.dispatch(O_())),[r])},components:{VideoView:i||s},_ref:r}},e}({},React);
|
|
3
|
+
let ai;Xr.AwaitQueue=class{constructor(){this.pendingTasks=new Map,this.nextTaskId=0,this.stopping=!1}get size(){return this.pendingTasks.size}async push(e,t){if(t=t??e.name,ii.debug(`push() [name:${t}]`),"function"!=typeof e)throw new TypeError("given task is not a function");if(t)try{Object.defineProperty(e,"name",{value:t})}catch(e){}return new Promise(((r,i)=>{const n={id:this.nextTaskId++,task:e,name:t,enqueuedAt:Date.now(),executedAt:void 0,completed:!1,resolve:e=>{if(n.completed)return;n.completed=!0,this.pendingTasks.delete(n.id),ii.debug(`resolving task [name:${n.name}]`),r(e);const[t]=this.pendingTasks.values();t&&!t.executedAt&&this.execute(t)},reject:e=>{if(!n.completed&&(n.completed=!0,this.pendingTasks.delete(n.id),ii.debug(`rejecting task [name:${n.name}]: %s`,String(e)),i(e),!this.stopping)){const[e]=this.pendingTasks.values();e&&!e.executedAt&&this.execute(e)}}};this.pendingTasks.set(n.id,n),1===this.pendingTasks.size&&this.execute(n)}))}stop(){ii.debug("stop()"),this.stopping=!0;for(const e of this.pendingTasks.values())ii.debug(`stop() | stopping task [name:${e.name}]`),e.reject(new ni);this.stopping=!1}remove(e){ii.debug(`remove() [taskIdx:${e}]`);const t=Array.from(this.pendingTasks.values())[e];t?t.reject(new si):ii.debug(`stop() | no task with given idx [taskIdx:${e}]`)}dump(){const e=Date.now();let t=0;return Array.from(this.pendingTasks.values()).map((r=>({idx:t++,task:r.task,name:r.name,enqueuedTime:r.executedAt?r.executedAt-r.enqueuedAt:e-r.enqueuedAt,executionTime:r.executedAt?e-r.executedAt:0})))}async execute(e){if(ii.debug(`execute() [name:${e.name}]`),e.executedAt)throw new Error("task already being executed");e.executedAt=Date.now();try{const t=await e.task();e.resolve(t)}catch(t){e.reject(t)}}};var oi="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:Gt):e=>(ai||(ai=Promise.resolve())).then(e).catch((e=>setTimeout((()=>{throw e}),0))),ci={};Object.defineProperty(ci,"__esModule",{value:!0}),ci.Producer=void 0;const di=cr,li=hr,pi=new nr.Logger("Producer");class ui extends di.EnhancedEventEmitter{constructor({id:e,localId:t,rtpSender:r,track:i,rtpParameters:n,stopTracks:s,disableTrackOnPause:a,zeroRtpOnPause:o,appData:c}){super(),this._closed=!1,this._observer=new di.EnhancedEventEmitter,pi.debug("constructor()"),this._id=e,this._localId=t,this._rtpSender=r,this._track=i,this._kind=i.kind,this._rtpParameters=n,this._paused=!!a&&!i.enabled,this._maxSpatialLayer=void 0,this._stopTracks=s,this._disableTrackOnPause=a,this._zeroRtpOnPause=o,this._appData=c||{},this.onTrackEnded=this.onTrackEnded.bind(this),this.handleTrack()}get id(){return this._id}get localId(){return this._localId}get closed(){return this._closed}get kind(){return this._kind}get rtpSender(){return this._rtpSender}get track(){return this._track}get rtpParameters(){return this._rtpParameters}get paused(){return this._paused}get maxSpatialLayer(){return this._maxSpatialLayer}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(pi.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(pi.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new li.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){pi.debug("pause()"),this._closed?pi.error("pause() | Producer closed"):(this._paused=!0,this._track&&this._disableTrackOnPause&&(this._track.enabled=!1),this._zeroRtpOnPause&&new Promise(((e,t)=>{this.safeEmit("@pause",e,t)})).catch((()=>{})),this._observer.safeEmit("pause"))}resume(){pi.debug("resume()"),this._closed?pi.error("resume() | Producer closed"):(this._paused=!1,this._track&&this._disableTrackOnPause&&(this._track.enabled=!0),this._zeroRtpOnPause&&new Promise(((e,t)=>{this.safeEmit("@resume",e,t)})).catch((()=>{})),this._observer.safeEmit("resume"))}async replaceTrack({track:e}){if(pi.debug("replaceTrack() [track:%o]",e),this._closed){if(e&&this._stopTracks)try{e.stop()}catch(e){}throw new li.InvalidStateError("closed")}if(e&&"ended"===e.readyState)throw new li.InvalidStateError("track ended");e!==this._track?(await new Promise(((t,r)=>{this.safeEmit("@replacetrack",e,t,r)})),this.destroyTrack(),this._track=e,this._track&&this._disableTrackOnPause&&(this._paused?this._paused&&(this._track.enabled=!1):this._track.enabled=!0),this.handleTrack()):pi.debug("replaceTrack() | same track, ignored")}async setMaxSpatialLayer(e){if(this._closed)throw new li.InvalidStateError("closed");if("video"!==this._kind)throw new li.UnsupportedError("not a video Producer");if("number"!=typeof e)throw new TypeError("invalid spatialLayer");e!==this._maxSpatialLayer&&(await new Promise(((t,r)=>{this.safeEmit("@setmaxspatiallayer",e,t,r)})).catch((()=>{})),this._maxSpatialLayer=e)}async setRtpEncodingParameters(e){if(this._closed)throw new li.InvalidStateError("closed");if("object"!=typeof e)throw new TypeError("invalid params");await new Promise(((t,r)=>{this.safeEmit("@setrtpencodingparameters",e,t,r)}))}onTrackEnded(){pi.debug('track "ended" event'),this.safeEmit("trackended"),this._observer.safeEmit("trackended")}handleTrack(){this._track&&this._track.addEventListener("ended",this.onTrackEnded)}destroyTrack(){if(this._track)try{this._track.removeEventListener("ended",this.onTrackEnded),this._stopTracks&&this._track.stop()}catch(e){}}}ci.Producer=ui;var hi={};Object.defineProperty(hi,"__esModule",{value:!0}),hi.Consumer=void 0;const mi=cr,fi=hr,gi=new nr.Logger("Consumer");class vi extends mi.EnhancedEventEmitter{constructor({id:e,localId:t,producerId:r,rtpReceiver:i,track:n,rtpParameters:s,appData:a}){super(),this._closed=!1,this._observer=new mi.EnhancedEventEmitter,gi.debug("constructor()"),this._id=e,this._localId=t,this._producerId=r,this._rtpReceiver=i,this._track=n,this._rtpParameters=s,this._paused=!n.enabled,this._appData=a||{},this.onTrackEnded=this.onTrackEnded.bind(this),this.handleTrack()}get id(){return this._id}get localId(){return this._localId}get producerId(){return this._producerId}get closed(){return this._closed}get kind(){return this._track.kind}get rtpReceiver(){return this._rtpReceiver}get track(){return this._track}get rtpParameters(){return this._rtpParameters}get paused(){return this._paused}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(gi.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(gi.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new fi.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){gi.debug("pause()"),this._closed?gi.error("pause() | Consumer closed"):this._paused?gi.debug("pause() | Consumer is already paused"):(this._paused=!0,this._track.enabled=!1,this.emit("@pause"),this._observer.safeEmit("pause"))}resume(){gi.debug("resume()"),this._closed?gi.error("resume() | Consumer closed"):this._paused?(this._paused=!1,this._track.enabled=!0,this.emit("@resume"),this._observer.safeEmit("resume")):gi.debug("resume() | Consumer is already resumed")}onTrackEnded(){gi.debug('track "ended" event'),this.safeEmit("trackended"),this._observer.safeEmit("trackended")}handleTrack(){this._track.addEventListener("ended",this.onTrackEnded)}destroyTrack(){try{this._track.removeEventListener("ended",this.onTrackEnded),this._track.stop()}catch(e){}}}hi.Consumer=vi;var _i={};Object.defineProperty(_i,"__esModule",{value:!0}),_i.DataProducer=void 0;const bi=cr,yi=hr,wi=new nr.Logger("DataProducer");class Si extends bi.EnhancedEventEmitter{constructor({id:e,dataChannel:t,sctpStreamParameters:r,appData:i}){super(),this._closed=!1,this._observer=new bi.EnhancedEventEmitter,wi.debug("constructor()"),this._id=e,this._dataChannel=t,this._sctpStreamParameters=r,this._appData=i||{},this.handleDataChannel()}get id(){return this._id}get closed(){return this._closed}get sctpStreamParameters(){return this._sctpStreamParameters}get readyState(){return this._dataChannel.readyState}get label(){return this._dataChannel.label}get protocol(){return this._dataChannel.protocol}get bufferedAmount(){return this._dataChannel.bufferedAmount}get bufferedAmountLowThreshold(){return this._dataChannel.bufferedAmountLowThreshold}set bufferedAmountLowThreshold(e){this._dataChannel.bufferedAmountLowThreshold=e}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(wi.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(wi.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}send(e){if(wi.debug("send()"),this._closed)throw new yi.InvalidStateError("closed");this._dataChannel.send(e)}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(wi.debug('DataChannel "open" event'),this.safeEmit("open"))})),this._dataChannel.addEventListener("error",(e=>{if(this._closed)return;let{error:t}=e;t||(t=new Error("unknown DataChannel error")),"sctp-failure"===t.errorDetail?wi.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):wi.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(wi.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(()=>{this._closed||wi.warn('DataChannel "message" event in a DataProducer, message discarded')})),this._dataChannel.addEventListener("bufferedamountlow",(()=>{this._closed||this.safeEmit("bufferedamountlow")}))}}_i.DataProducer=Si;var Ci={};Object.defineProperty(Ci,"__esModule",{value:!0}),Ci.DataConsumer=void 0;const Ri=cr,Ti=new nr.Logger("DataConsumer");class Pi extends Ri.EnhancedEventEmitter{constructor({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:i,appData:n}){super(),this._closed=!1,this._observer=new Ri.EnhancedEventEmitter,Ti.debug("constructor()"),this._id=e,this._dataProducerId=t,this._dataChannel=r,this._sctpStreamParameters=i,this._appData=n||{},this.handleDataChannel()}get id(){return this._id}get dataProducerId(){return this._dataProducerId}get closed(){return this._closed}get sctpStreamParameters(){return this._sctpStreamParameters}get readyState(){return this._dataChannel.readyState}get label(){return this._dataChannel.label}get protocol(){return this._dataChannel.protocol}get binaryType(){return this._dataChannel.binaryType}set binaryType(e){this._dataChannel.binaryType=e}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(Ti.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Ti.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(Ti.debug('DataChannel "open" event'),this.safeEmit("open"))})),this._dataChannel.addEventListener("error",(e=>{if(this._closed)return;let{error:t}=e;t||(t=new Error("unknown DataChannel error")),"sctp-failure"===t.errorDetail?Ti.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):Ti.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(Ti.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(e=>{this._closed||this.safeEmit("message",e.data)}))}}Ci.DataConsumer=Pi;var ki=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Di=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Oi=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ki(t,e,r);return Di(t,e),t},Ei=Gt&&Gt.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Yr,"__esModule",{value:!0}),Yr.Transport=void 0;const Ii=Xr,xi=Ei(oi),ji=nr,Mi=cr,Li=hr,Ai=Oi(gr),Ni=Oi(vr),Bi=ci,Fi=hi,Ui=_i,$i=Ci,zi=new ji.Logger("Transport");class Vi{constructor(e){this.consumerOptions=e,this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}let qi=class extends Mi.EnhancedEventEmitter{constructor({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:l,handlerFactory:p,extendedRtpCapabilities:u,canProduceByKind:h}){super(),this._closed=!1,this._iceGatheringState="new",this._connectionState="new",this._producers=new Map,this._consumers=new Map,this._dataProducers=new Map,this._dataConsumers=new Map,this._probatorConsumerCreated=!1,this._awaitQueue=new Ii.AwaitQueue,this._pendingConsumerTasks=[],this._consumerCreationInProgress=!1,this._pendingPauseConsumers=new Map,this._consumerPauseInProgress=!1,this._pendingResumeConsumers=new Map,this._consumerResumeInProgress=!1,this._pendingCloseConsumers=new Map,this._consumerCloseInProgress=!1,this._observer=new Mi.EnhancedEventEmitter,zi.debug("constructor() [id:%s, direction:%s]",t,e),this._id=t,this._direction=e,this._extendedRtpCapabilities=u,this._canProduceByKind=h,this._maxSctpMessageSize=s?s.maxMessageSize:null,delete(c=Ai.clone(c)||{}).iceServers,delete c.iceTransportPolicy,delete c.bundlePolicy,delete c.rtcpMuxPolicy,delete c.sdpSemantics,this._handler=p(),this._handler.run({direction:e,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,extendedRtpCapabilities:u}),this._appData=l||{},this.handleHandler()}get id(){return this._id}get closed(){return this._closed}get direction(){return this._direction}get handler(){return this._handler}get iceGatheringState(){return this._iceGatheringState}get connectionState(){return this._connectionState}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){if(!this._closed){zi.debug("close()"),this._closed=!0,this._awaitQueue.stop(),this._handler.close(),this._connectionState="closed";for(const e of this._producers.values())e.transportClosed();this._producers.clear();for(const e of this._consumers.values())e.transportClosed();this._consumers.clear();for(const e of this._dataProducers.values())e.transportClosed();this._dataProducers.clear();for(const e of this._dataConsumers.values())e.transportClosed();this._dataConsumers.clear(),this._observer.safeEmit("close")}}async getStats(){if(this._closed)throw new Li.InvalidStateError("closed");return this._handler.getTransportStats()}async restartIce({iceParameters:e}){if(zi.debug("restartIce()"),this._closed)throw new Li.InvalidStateError("closed");if(!e)throw new TypeError("missing iceParameters");return this._awaitQueue.push((async()=>await this._handler.restartIce(e)),"transport.restartIce()")}async updateIceServers({iceServers:e}={}){if(zi.debug("updateIceServers()"),this._closed)throw new Li.InvalidStateError("closed");if(!Array.isArray(e))throw new TypeError("missing iceServers");return this._awaitQueue.push((async()=>this._handler.updateIceServers(e)),"transport.updateIceServers()")}async produce({track:e,encodings:t,codecOptions:r,codec:i,stopTracks:n=!0,disableTrackOnPause:s=!0,zeroRtpOnPause:a=!1,appData:o={}}={}){if(zi.debug("produce() [track:%o]",e),this._closed)throw new Li.InvalidStateError("closed");if(!e)throw new TypeError("missing track");if("send"!==this._direction)throw new Li.UnsupportedError("not a sending Transport");if(!this._canProduceByKind[e.kind])throw new Li.UnsupportedError(`cannot produce ${e.kind}`);if("ended"===e.readyState)throw new Li.InvalidStateError("track ended");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(0===this.listenerCount("produce"))throw new TypeError('no "produce" listener set into this transport');if(o&&"object"!=typeof o)throw new TypeError("if given, appData must be an object");return this._awaitQueue.push((async()=>{let c;if(t&&!Array.isArray(t))throw TypeError("encodings must be an array");t&&0===t.length?c=void 0:t&&(c=t.map((e=>{const t={active:!0};return!1===e.active&&(t.active=!1),"boolean"==typeof e.dtx&&(t.dtx=e.dtx),"string"==typeof e.scalabilityMode&&(t.scalabilityMode=e.scalabilityMode),"number"==typeof e.scaleResolutionDownBy&&(t.scaleResolutionDownBy=e.scaleResolutionDownBy),"number"==typeof e.maxBitrate&&(t.maxBitrate=e.maxBitrate),"number"==typeof e.maxFramerate&&(t.maxFramerate=e.maxFramerate),"boolean"==typeof e.adaptivePtime&&(t.adaptivePtime=e.adaptivePtime),"string"==typeof e.priority&&(t.priority=e.priority),"string"==typeof e.networkPriority&&(t.networkPriority=e.networkPriority),t})));const{localId:d,rtpParameters:l,rtpSender:p}=await this._handler.send({track:e,encodings:c,codecOptions:r,codec:i});try{Ni.validateRtpParameters(l);const{id:t}=await new Promise(((t,r)=>{this.safeEmit("produce",{kind:e.kind,rtpParameters:l,appData:o},t,r)})),r=new Bi.Producer({id:t,localId:d,rtpSender:p,track:e,rtpParameters:l,stopTracks:n,disableTrackOnPause:s,zeroRtpOnPause:a,appData:o});return this._producers.set(r.id,r),this.handleProducer(r),this._observer.safeEmit("newproducer",r),r}catch(e){throw this._handler.stopSending(d).catch((()=>{})),e}}),"transport.produce()").catch((t=>{if(n)try{e.stop()}catch(e){}throw t}))}async consume({id:e,producerId:t,kind:r,rtpParameters:i,streamId:n,appData:s={}}){if(zi.debug("consume()"),i=Ai.clone(i),this._closed)throw new Li.InvalidStateError("closed");if("recv"!==this._direction)throw new Li.UnsupportedError("not a receiving Transport");if("string"!=typeof e)throw new TypeError("missing id");if("string"!=typeof t)throw new TypeError("missing producerId");if("audio"!==r&&"video"!==r)throw new TypeError(`invalid kind '${r}'`);if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");if(!Ni.canReceive(i,this._extendedRtpCapabilities))throw new Li.UnsupportedError("cannot consume this Producer");const a=new Vi({id:e,producerId:t,kind:r,rtpParameters:i,streamId:n,appData:s});return this._pendingConsumerTasks.push(a),(0,xi.default)((()=>{this._closed||!1===this._consumerCreationInProgress&&this.createPendingConsumers()})),a.promise}async produceData({ordered:e=!0,maxPacketLifeTime:t,maxRetransmits:r,label:i="",protocol:n="",appData:s={}}={}){if(zi.debug("produceData()"),this._closed)throw new Li.InvalidStateError("closed");if("send"!==this._direction)throw new Li.UnsupportedError("not a sending Transport");if(!this._maxSctpMessageSize)throw new Li.UnsupportedError("SCTP not enabled by remote Transport");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(0===this.listenerCount("producedata"))throw new TypeError('no "producedata" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");return(t||r)&&(e=!1),this._awaitQueue.push((async()=>{const{dataChannel:a,sctpStreamParameters:o}=await this._handler.sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n});Ni.validateSctpStreamParameters(o);const{id:c}=await new Promise(((e,t)=>{this.safeEmit("producedata",{sctpStreamParameters:o,label:i,protocol:n,appData:s},e,t)})),d=new Ui.DataProducer({id:c,dataChannel:a,sctpStreamParameters:o,appData:s});return this._dataProducers.set(d.id,d),this.handleDataProducer(d),this._observer.safeEmit("newdataproducer",d),d}),"transport.produceData()")}async consumeData({id:e,dataProducerId:t,sctpStreamParameters:r,label:i="",protocol:n="",appData:s={}}){if(zi.debug("consumeData()"),r=Ai.clone(r),this._closed)throw new Li.InvalidStateError("closed");if("recv"!==this._direction)throw new Li.UnsupportedError("not a receiving Transport");if(!this._maxSctpMessageSize)throw new Li.UnsupportedError("SCTP not enabled by remote Transport");if("string"!=typeof e)throw new TypeError("missing id");if("string"!=typeof t)throw new TypeError("missing dataProducerId");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");return Ni.validateSctpStreamParameters(r),this._awaitQueue.push((async()=>{const{dataChannel:a}=await this._handler.receiveDataChannel({sctpStreamParameters:r,label:i,protocol:n}),o=new $i.DataConsumer({id:e,dataProducerId:t,dataChannel:a,sctpStreamParameters:r,appData:s});return this._dataConsumers.set(o.id,o),this.handleDataConsumer(o),this._observer.safeEmit("newdataconsumer",o),o}),"transport.consumeData()")}async createPendingConsumers(){this._consumerCreationInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingConsumerTasks.length)return void zi.debug("createPendingConsumers() | there is no Consumer to be created");const e=[...this._pendingConsumerTasks];let t;this._pendingConsumerTasks=[];const r=[];for(const t of e){const{id:e,kind:i,rtpParameters:n,streamId:s}=t.consumerOptions;r.push({trackId:e,kind:i,rtpParameters:n,streamId:s})}try{const i=await this._handler.receive(r);for(let r=0;r<i.length;++r){const n=e[r],s=i[r],{id:a,producerId:o,kind:c,rtpParameters:d,appData:l}=n.consumerOptions,{localId:p,rtpReceiver:u,track:h}=s,m=new Fi.Consumer({id:a,localId:p,producerId:o,rtpReceiver:u,track:h,rtpParameters:d,appData:l});this._consumers.set(m.id,m),this.handleConsumer(m),this._probatorConsumerCreated||t||"video"!==c||(t=m),this._observer.safeEmit("newconsumer",m),n.resolve(m)}}catch(t){for(const r of e)r.reject(t)}if(t)try{const e=Ni.generateProbatorRtpParameters(t.rtpParameters);await this._handler.receive([{trackId:"probator",kind:"video",rtpParameters:e}]),zi.debug("createPendingConsumers() | Consumer for RTP probation created"),this._probatorConsumerCreated=!0}catch(e){zi.error("createPendingConsumers() | failed to create Consumer for RTP probation:%o",e)}}),"transport.createPendingConsumers()").then((()=>{this._consumerCreationInProgress=!1,this._pendingConsumerTasks.length>0&&this.createPendingConsumers()})).catch((()=>{}))}pausePendingConsumers(){this._consumerPauseInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingPauseConsumers.size)return void zi.debug("pausePendingConsumers() | there is no Consumer to be paused");const e=Array.from(this._pendingPauseConsumers.values());this._pendingPauseConsumers.clear();try{const t=e.map((e=>e.localId));await this._handler.pauseReceiving(t)}catch(e){zi.error("pausePendingConsumers() | failed to pause Consumers:",e)}}),"transport.pausePendingConsumers").then((()=>{this._consumerPauseInProgress=!1,this._pendingPauseConsumers.size>0&&this.pausePendingConsumers()})).catch((()=>{}))}resumePendingConsumers(){this._consumerResumeInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingResumeConsumers.size)return void zi.debug("resumePendingConsumers() | there is no Consumer to be resumed");const e=Array.from(this._pendingResumeConsumers.values());this._pendingResumeConsumers.clear();try{const t=e.map((e=>e.localId));await this._handler.resumeReceiving(t)}catch(e){zi.error("resumePendingConsumers() | failed to resume Consumers:",e)}}),"transport.resumePendingConsumers").then((()=>{this._consumerResumeInProgress=!1,this._pendingResumeConsumers.size>0&&this.resumePendingConsumers()})).catch((()=>{}))}closePendingConsumers(){this._consumerCloseInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingCloseConsumers.size)return void zi.debug("closePendingConsumers() | there is no Consumer to be closed");const e=Array.from(this._pendingCloseConsumers.values());this._pendingCloseConsumers.clear();try{await this._handler.stopReceiving(e.map((e=>e.localId)))}catch(e){zi.error("closePendingConsumers() | failed to close Consumers:",e)}}),"transport.closePendingConsumers").then((()=>{this._consumerCloseInProgress=!1,this._pendingCloseConsumers.size>0&&this.closePendingConsumers()})).catch((()=>{}))}handleHandler(){const e=this._handler;e.on("@connect",(({iceParameters:e,dtlsParameters:t},r,i)=>{this._closed?i(new Li.InvalidStateError("closed")):this.safeEmit("connect",{iceParameters:e,dtlsParameters:t},r,i)})),e.on("@icegatheringstatechange",(e=>{e!==this._iceGatheringState&&(zi.debug("ICE gathering state changed to %s",e),this._iceGatheringState=e,this._closed||this.safeEmit("icegatheringstatechange",e))})),e.on("@connectionstatechange",(e=>{e!==this._connectionState&&(zi.debug("connection state changed to %s",e),this._connectionState=e,this._closed||this.safeEmit("connectionstatechange",e))}))}handleProducer(e){e.on("@close",(()=>{this._producers.delete(e.id),this._closed||this._awaitQueue.push((async()=>await this._handler.stopSending(e.localId)),"producer @close event").catch((e=>zi.warn("producer.close() failed:%o",e)))})),e.on("@pause",((t,r)=>{this._awaitQueue.push((async()=>await this._handler.pauseSending(e.localId)),"producer @pause event").then(t).catch(r)})),e.on("@resume",((t,r)=>{this._awaitQueue.push((async()=>await this._handler.resumeSending(e.localId)),"producer @resume event").then(t).catch(r)})),e.on("@replacetrack",((t,r,i)=>{this._awaitQueue.push((async()=>await this._handler.replaceTrack(e.localId,t)),"producer @replacetrack event").then(r).catch(i)})),e.on("@setmaxspatiallayer",((t,r,i)=>{this._awaitQueue.push((async()=>await this._handler.setMaxSpatialLayer(e.localId,t)),"producer @setmaxspatiallayer event").then(r).catch(i)})),e.on("@setrtpencodingparameters",((t,r,i)=>{this._awaitQueue.push((async()=>await this._handler.setRtpEncodingParameters(e.localId,t)),"producer @setrtpencodingparameters event").then(r).catch(i)})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new Li.InvalidStateError("closed"));this._handler.getSenderStats(e.localId).then(t).catch(r)}))}handleConsumer(e){e.on("@close",(()=>{this._consumers.delete(e.id),this._pendingPauseConsumers.delete(e.id),this._pendingResumeConsumers.delete(e.id),this._closed||(this._pendingCloseConsumers.set(e.id,e),!1===this._consumerCloseInProgress&&this.closePendingConsumers())})),e.on("@pause",(()=>{this._pendingResumeConsumers.has(e.id)&&this._pendingResumeConsumers.delete(e.id),this._pendingPauseConsumers.set(e.id,e),(0,xi.default)((()=>{this._closed||!1===this._consumerPauseInProgress&&this.pausePendingConsumers()}))})),e.on("@resume",(()=>{this._pendingPauseConsumers.has(e.id)&&this._pendingPauseConsumers.delete(e.id),this._pendingResumeConsumers.set(e.id,e),(0,xi.default)((()=>{this._closed||!1===this._consumerResumeInProgress&&this.resumePendingConsumers()}))})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new Li.InvalidStateError("closed"));this._handler.getReceiverStats(e.localId).then(t).catch(r)}))}handleDataProducer(e){e.on("@close",(()=>{this._dataProducers.delete(e.id)}))}handleDataConsumer(e){e.on("@close",(()=>{this._dataConsumers.delete(e.id)}))}};Yr.Transport=qi;var Gi={},Hi={},Wi={},Ki={exports:{}},Ji=Ki.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(e){return e.encoding?"rtpmap:%d %s/%s/%s":e.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(e){return null!=e.address?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(e){return null!=e.subtype?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(e){return"extmap:%d"+(e.direction?"/%s":"%v")+(e["encrypt-uri"]?" %s":"%v")+" %s"+(e.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(e){return null!=e.sessionConfig?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(e){var t="candidate:%s %d %s %d %s %d typ %s";return t+=null!=e.raddr?" raddr %s rport %d":"%v%v",t+=null!=e.tcptype?" tcptype %s":"%v",null!=e.generation&&(t+=" generation %d"),t+=null!=e["network-id"]?" network-id %d":"%v",t+=null!=e["network-cost"]?" network-cost %d":"%v"}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(e){var t="ssrc:%d";return null!=e.attribute&&(t+=" %s",null!=e.value&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(e){return null!=e.maxMessageSize?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(e){return e.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(e){return"imageattr:%s %s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(e){return"simulcast:%s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(e){return"ts-refclk:%s"+(null!=e.clksrcExt?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(e){var t="mediaclk:";return t+=null!=e.id?"id=%s %s":"%v%s",t+=null!=e.mediaClockValue?"=%s":"",t+=null!=e.rateNumerator?" rate=%s":"",t+=null!=e.rateDenominator?"/%s":""}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(Ji).forEach((function(e){Ji[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))}));var Qi=Ki.exports;!function(e){var t=function(e){return String(Number(e))===e?Number(e):e},r=function(e,r,i){var n=e.name&&e.names;e.push&&!r[e.push]?r[e.push]=[]:n&&!r[e.name]&&(r[e.name]={});var s=e.push?{}:n?r[e.name]:r;!function(e,r,i,n){if(n&&!i)r[n]=t(e[1]);else for(var s=0;s<i.length;s+=1)null!=e[s+1]&&(r[i[s]]=t(e[s+1]))}(i.match(e.reg),s,e.names,e.name),e.push&&r[e.push].push(s)},i=Qi,n=RegExp.prototype.test.bind(/^([a-z])=(.*)/);e.parse=function(e){var t={},s=[],a=t;return e.split(/(\r\n|\r|\n)/).filter(n).forEach((function(e){var t=e[0],n=e.slice(2);"m"===t&&(s.push({rtp:[],fmtp:[]}),a=s[s.length-1]);for(var o=0;o<(i[t]||[]).length;o+=1){var c=i[t][o];if(c.reg.test(n))return r(c,a,n)}})),t.media=s,t};var s=function(e,r){var i=r.split(/=(.+)/,2);return 2===i.length?e[i[0]]=t(i[1]):1===i.length&&r.length>1&&(e[i[0]]=void 0),e};e.parseParams=function(e){return e.split(/;\s?/).reduce(s,{})},e.parseFmtpConfig=e.parseParams,e.parsePayloads=function(e){return e.toString().split(" ").map(Number)},e.parseRemoteCandidates=function(e){for(var r=[],i=e.split(" ").map(t),n=0;n<i.length;n+=3)r.push({component:i[n],ip:i[n+1],port:i[n+2]});return r},e.parseImageAttributes=function(e){return e.split(" ").map((function(e){return e.substring(1,e.length-1).split(",").reduce(s,{})}))},e.parseSimulcastStreamList=function(e){return e.split(";").map((function(e){return e.split(",").map((function(e){var r,i=!1;return"~"!==e[0]?r=t(e):(r=t(e.substring(1,e.length)),i=!0),{scid:r,paused:i}}))}))}}(Wi);var Zi=Qi,Yi=/%[sdv%]/g,Xi=function(e){var t=1,r=arguments,i=r.length;return e.replace(Yi,(function(e){if(t>=i)return e;var n=r[t];switch(t+=1,e){case"%%":return"%";case"%s":return String(n);case"%d":return Number(n);case"%v":return""}}))},en=function(e,t,r){var i=[e+"="+(t.format instanceof Function?t.format(t.push?r:r[t.name]):t.format)];if(t.names)for(var n=0;n<t.names.length;n+=1){var s=t.names[n];t.name?i.push(r[t.name][s]):i.push(r[t.names[n]])}else i.push(r[t.name]);return Xi.apply(null,i)},tn=["v","o","s","i","u","e","p","c","b","t","r","z","a"],rn=["i","c","b","a"],nn=Wi,sn=function(e,t){t=t||{},null==e.version&&(e.version=0),null==e.name&&(e.name=" "),e.media.forEach((function(e){null==e.payloads&&(e.payloads="")}));var r=t.outerOrder||tn,i=t.innerOrder||rn,n=[];return r.forEach((function(t){Zi[t].forEach((function(r){r.name in e&&null!=e[r.name]?n.push(en(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){n.push(en(t,r,e))}))}))})),e.media.forEach((function(e){n.push(en("m",Zi.m[0],e)),i.forEach((function(t){Zi[t].forEach((function(r){r.name in e&&null!=e[r.name]?n.push(en(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){n.push(en(t,r,e))}))}))}))})),n.join("\r\n")+"\r\n"},an=Hi.write=sn,on=Hi.parse=nn.parse;Hi.parseParams=nn.parseParams,Hi.parseFmtpConfig=nn.parseFmtpConfig,Hi.parsePayloads=nn.parsePayloads,Hi.parseRemoteCandidates=nn.parseRemoteCandidates,Hi.parseImageAttributes=nn.parseImageAttributes,Hi.parseSimulcastStreamList=nn.parseSimulcastStreamList;var cn={},dn=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ln=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),pn=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&dn(t,e,r);return ln(t,e),t};Object.defineProperty(cn,"__esModule",{value:!0}),cn.applyCodecParameters=cn.getCname=cn.extractDtlsParameters=cn.extractIceParameters=cn.extractRtpCapabilities=void 0;const un=pn(Hi);cn.extractRtpCapabilities=function({sdpObject:e}){const t=new Map,r=[];let i=!1,n=!1;for(const s of e.media){const e=s.type;switch(e){case"audio":if(i)continue;i=!0;break;case"video":if(n)continue;n=!0;break;default:continue}for(const r of s.rtp){const i={kind:e,mimeType:`${e}/${r.codec}`,preferredPayloadType:r.payload,clockRate:r.rate,channels:r.encoding,parameters:{},rtcpFeedback:[]};t.set(i.preferredPayloadType,i)}for(const e of s.fmtp||[]){const r=un.parseParams(e.config),i=t.get(e.payload);i&&(r&&r.hasOwnProperty("profile-level-id")&&(r["profile-level-id"]=String(r["profile-level-id"])),i.parameters=r)}for(const r of s.rtcpFb||[]){const i={type:r.type,parameter:r.subtype};if(i.parameter||delete i.parameter,"*"!==r.payload){const e=t.get(r.payload);if(!e)continue;e.rtcpFeedback.push(i)}else for(const r of t.values())r.kind!==e||/.+\/rtx$/i.test(r.mimeType)||r.rtcpFeedback.push(i)}for(const t of s.ext||[]){if(t["encrypt-uri"])continue;const i={kind:e,uri:t.uri,preferredId:t.value};r.push(i)}}return{codecs:Array.from(t.values()),headerExtensions:r}},cn.extractIceParameters=function({sdpObject:e}){let t=e.iceUfrag,r=e.icePwd;if(!t||!r){const i=(e.media||[]).find((e=>0!==e.port));i&&(t??(t=i.iceUfrag),r??(r=i.icePwd))}if(!t)throw new Error("no a=iceUfrag found at SDP session or media level");if(!r)throw new Error("no a=icePwd found at SDP session or media level");return{usernameFragment:t,password:r}},cn.extractDtlsParameters=function({sdpObject:e}){let t,r=e.setup,i=e.fingerprint;if(!r||!i){const t=(e.media||[]).find((e=>0!==e.port));t&&(r??(r=t.setup),i??(i=t.fingerprint))}if(!r)throw new Error("no a=setup found at SDP session or media level");if(!i)throw new Error("no a=fingerprint found at SDP session or media level");switch(r){case"active":t="client";break;case"passive":t="server";break;case"actpass":t="auto"}return{role:t,fingerprints:[{algorithm:i.type,value:i.hash}]}},cn.getCname=function({offerMediaObject:e}){const t=(e.ssrcs||[]).find((e=>"cname"===e.attribute));return t?t.value:""},cn.applyCodecParameters=function({offerRtpParameters:e,answerMediaObject:t}){for(const r of e.codecs){const e=r.mimeType.toLowerCase();if("audio/opus"!==e)continue;if(!(t.rtp||[]).find((e=>e.payload===r.payloadType)))continue;t.fmtp=t.fmtp||[];let i=t.fmtp.find((e=>e.payload===r.payloadType));i||(i={payload:r.payloadType,config:""},t.fmtp.push(i));const n=un.parseParams(i.config);switch(e){case"audio/opus":{const e=r.parameters["sprop-stereo"];void 0!==e&&(n.stereo=e?1:0);break}}i.config="";for(const e of Object.keys(n))i.config&&(i.config+=";"),i.config+=`${e}=${n[e]}`}};var hn={};Object.defineProperty(hn,"__esModule",{value:!0}),hn.addLegacySimulcast=hn.getRtpEncodings=void 0,hn.getRtpEncodings=function({offerMediaObject:e}){const t=new Set;for(const r of e.ssrcs||[]){const e=r.id;t.add(e)}if(0===t.size)throw new Error("no a=ssrc lines found");const r=new Map;for(const i of e.ssrcGroups||[]){if("FID"!==i.semantics)continue;let[e,n]=i.ssrcs.split(/\s+/);e=Number(e),n=Number(n),t.has(e)&&(t.delete(e),t.delete(n),r.set(e,n))}for(const e of t)r.set(e,null);const i=[];for(const[e,t]of r){const r={ssrc:e};t&&(r.rtx={ssrc:t}),i.push(r)}return i},hn.addLegacySimulcast=function({offerMediaObject:e,numStreams:t}){if(t<=1)throw new TypeError("numStreams must be greater than 1");const r=(e.ssrcs||[]).find((e=>"msid"===e.attribute));if(!r)throw new Error("a=ssrc line with msid information not found");const[i,n]=r.value.split(" "),s=r.id;let a;(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===s&&(a=Number(t[1]),!0)}));const o=e.ssrcs.find((e=>"cname"===e.attribute));if(!o)throw new Error("a=ssrc line with cname information not found");const c=o.value,d=[],l=[];for(let e=0;e<t;++e)d.push(s+e),a&&l.push(a+e);e.ssrcGroups=[],e.ssrcs=[],e.ssrcGroups.push({semantics:"SIM",ssrcs:d.join(" ")});for(let t=0;t<d.length;++t){const r=d[t];e.ssrcs.push({id:r,attribute:"cname",value:c}),e.ssrcs.push({id:r,attribute:"msid",value:`${i} ${n}`})}for(let t=0;t<l.length;++t){const r=d[t],s=l[t];e.ssrcs.push({id:s,attribute:"cname",value:c}),e.ssrcs.push({id:s,attribute:"msid",value:`${i} ${n}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${r} ${s}`})}};var mn={};Object.defineProperty(mn,"__esModule",{value:!0}),mn.addNackSuppportForOpus=void 0,mn.addNackSuppportForOpus=function(e){for(const t of e.codecs||[])"audio/opus"!==t.mimeType.toLowerCase()&&"audio/multiopus"!==t.mimeType.toLowerCase()||t.rtcpFeedback?.some((e=>"nack"===e.type&&!e.parameter))||(t.rtcpFeedback||(t.rtcpFeedback=[]),t.rtcpFeedback.push({type:"nack"}))};var fn={};Object.defineProperty(fn,"__esModule",{value:!0}),fn.HandlerInterface=void 0;const gn=cr;class vn extends gn.EnhancedEventEmitter{constructor(){super()}}fn.HandlerInterface=vn;var _n={},bn={},yn=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),wn=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Sn=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&yn(t,e,r);return wn(t,e),t};Object.defineProperty(bn,"__esModule",{value:!0}),bn.OfferMediaSection=bn.AnswerMediaSection=bn.MediaSection=void 0;const Cn=Sn(Hi),Rn=Sn(gr);class Tn{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:i=!1}){if(this._mediaObject={},this._planB=i,e&&this.setIceParameters(e),t){this._mediaObject.candidates=[];for(const e of t){const t={component:1};t.foundation=e.foundation,t.ip=e.address??e.ip,t.port=e.port,t.priority=e.priority,t.transport=e.protocol,t.type=e.type,e.tcpType&&(t.tcptype=e.tcpType),this._mediaObject.candidates.push(t)}this._mediaObject.endOfCandidates="end-of-candidates",this._mediaObject.iceOptions="renomination"}r&&this.setDtlsRole(r.role)}get mid(){return String(this._mediaObject.mid)}get closed(){return 0===this._mediaObject.port}getObject(){return this._mediaObject}setIceParameters(e){this._mediaObject.iceUfrag=e.usernameFragment,this._mediaObject.icePwd=e.password}pause(){this._mediaObject.direction="inactive"}disable(){this.pause(),delete this._mediaObject.ext,delete this._mediaObject.ssrcs,delete this._mediaObject.ssrcGroups,delete this._mediaObject.simulcast,delete this._mediaObject.simulcast_03,delete this._mediaObject.rids,delete this._mediaObject.extmapAllowMixed}close(){this.disable(),this._mediaObject.port=0}}bn.MediaSection=Tn;bn.AnswerMediaSection=class extends Tn{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1,offerMediaObject:a,offerRtpParameters:o,answerRtpParameters:c,codecOptions:d,extmapAllowMixed:l=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:s}),this._mediaObject.mid=String(a.mid),this._mediaObject.type=a.type,this._mediaObject.protocol=a.protocol,n?(this._mediaObject.connection={ip:n.ip,version:n.ipVersion},this._mediaObject.port=n.port):(this._mediaObject.connection={ip:"127.0.0.1",version:4},this._mediaObject.port=7),a.type){case"audio":case"video":this._mediaObject.direction="recvonly",this._mediaObject.rtp=[],this._mediaObject.rtcpFb=[],this._mediaObject.fmtp=[];for(const e of c.codecs){const t={payload:e.payloadType,codec:Pn(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r=Rn.clone(e.parameters)??{};let i=Rn.clone(e.rtcpFeedback)??[];if(d){const{opusStereo:t,opusFec:n,opusDtx:s,opusMaxPlaybackRate:a,opusMaxAverageBitrate:c,opusPtime:l,opusNack:p,videoGoogleStartBitrate:u,videoGoogleMaxBitrate:h,videoGoogleMinBitrate:m}=d,f=o.codecs.find((t=>t.payloadType===e.payloadType));switch(e.mimeType.toLowerCase()){case"audio/opus":case"audio/multiopus":void 0!==t&&(f.parameters["sprop-stereo"]=t?1:0,r.stereo=t?1:0),void 0!==n&&(f.parameters.useinbandfec=n?1:0,r.useinbandfec=n?1:0),void 0!==s&&(f.parameters.usedtx=s?1:0,r.usedtx=s?1:0),void 0!==a&&(r.maxplaybackrate=a),void 0!==c&&(r.maxaveragebitrate=c),void 0!==l&&(f.parameters.ptime=l,r.ptime=l),p||(f.rtcpFeedback=f.rtcpFeedback.filter((e=>"nack"!==e.type||e.parameter)),i=i.filter((e=>"nack"!==e.type||e.parameter)));break;case"video/vp8":case"video/vp9":case"video/h264":case"video/h265":void 0!==u&&(r["x-google-start-bitrate"]=u),void 0!==h&&(r["x-google-max-bitrate"]=h),void 0!==m&&(r["x-google-min-bitrate"]=m)}}const n={payload:e.payloadType,config:""};for(const e of Object.keys(r))n.config&&(n.config+=";"),n.config+=`${e}=${r[e]}`;n.config&&this._mediaObject.fmtp.push(n);for(const t of i)this._mediaObject.rtcpFb.push({payload:e.payloadType,type:t.type,subtype:t.parameter})}this._mediaObject.payloads=c.codecs.map((e=>e.payloadType)).join(" "),this._mediaObject.ext=[];for(const e of c.headerExtensions){(a.ext||[]).some((t=>t.uri===e.uri))&&this._mediaObject.ext.push({uri:e.uri,value:e.id})}if(l&&"extmap-allow-mixed"===a.extmapAllowMixed&&(this._mediaObject.extmapAllowMixed="extmap-allow-mixed"),a.simulcast){this._mediaObject.simulcast={dir1:"recv",list1:a.simulcast.list1},this._mediaObject.rids=[];for(const e of a.rids||[])"send"===e.direction&&this._mediaObject.rids.push({id:e.id,direction:"recv"})}else if(a.simulcast_03){this._mediaObject.simulcast_03={value:a.simulcast_03.value.replace(/send/g,"recv")},this._mediaObject.rids=[];for(const e of a.rids||[])"send"===e.direction&&this._mediaObject.rids.push({id:e.id,direction:"recv"})}this._mediaObject.rtcpMux="rtcp-mux",this._mediaObject.rtcpRsize="rtcp-rsize",this._planB&&"video"===this._mediaObject.type&&(this._mediaObject.xGoogleFlag="conference");break;case"application":"number"==typeof a.sctpPort?(this._mediaObject.payloads="webrtc-datachannel",this._mediaObject.sctpPort=i.port,this._mediaObject.maxMessageSize=i.maxMessageSize):a.sctpmap&&(this._mediaObject.payloads=i.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:i.port,maxMessageSize:i.maxMessageSize})}}setDtlsRole(e){switch(e){case"client":this._mediaObject.setup="active";break;case"server":this._mediaObject.setup="passive";break;case"auto":this._mediaObject.setup="actpass"}}resume(){this._mediaObject.direction="recvonly"}muxSimulcastStreams(e){if(!this._mediaObject.simulcast||!this._mediaObject.simulcast.list1)return;const t={};for(const r of e)r.rid&&(t[r.rid]=r);const r=this._mediaObject.simulcast.list1,i=Cn.parseSimulcastStreamList(r);for(const e of i)for(const r of e)r.paused=!t[r.scid]?.active;this._mediaObject.simulcast.list1=i.map((e=>e.map((e=>`${e.paused?"~":""}${e.scid}`)).join(","))).join(";")}};function Pn(e){const t=new RegExp("^(audio|video)/(.+)","i").exec(e.mimeType);if(!t)throw new TypeError("invalid codec.mimeType");return t[2]}bn.OfferMediaSection=class extends Tn{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1,mid:a,kind:o,offerRtpParameters:c,streamId:d,trackId:l,oldDataChannelSpec:p=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:s}),this._mediaObject.mid=String(a),this._mediaObject.type=o,n?(this._mediaObject.connection={ip:n.ip,version:n.ipVersion},this._mediaObject.protocol="RTP/AVP",this._mediaObject.port=n.port):(this._mediaObject.connection={ip:"127.0.0.1",version:4},this._mediaObject.protocol=i?"UDP/DTLS/SCTP":"UDP/TLS/RTP/SAVPF",this._mediaObject.port=7),o){case"audio":case"video":{this._mediaObject.direction="sendonly",this._mediaObject.rtp=[],this._mediaObject.rtcpFb=[],this._mediaObject.fmtp=[],this._planB||(this._mediaObject.msid=`${d||"-"} ${l}`);for(const e of c.codecs){const t={payload:e.payloadType,codec:Pn(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r={payload:e.payloadType,config:""};for(const t of Object.keys(e.parameters))r.config&&(r.config+=";"),r.config+=`${t}=${e.parameters[t]}`;r.config&&this._mediaObject.fmtp.push(r);for(const t of e.rtcpFeedback)this._mediaObject.rtcpFb.push({payload:e.payloadType,type:t.type,subtype:t.parameter})}this._mediaObject.payloads=c.codecs.map((e=>e.payloadType)).join(" "),this._mediaObject.ext=[];for(const e of c.headerExtensions)this._mediaObject.ext.push({uri:e.uri,value:e.id});this._mediaObject.rtcpMux="rtcp-mux",this._mediaObject.rtcpRsize="rtcp-rsize";const e=c.encodings[0],t=e.ssrc,r=e.rtx&&e.rtx.ssrc?e.rtx.ssrc:void 0;this._mediaObject.ssrcs=[],this._mediaObject.ssrcGroups=[],c.rtcp.cname&&this._mediaObject.ssrcs.push({id:t,attribute:"cname",value:c.rtcp.cname}),this._planB&&this._mediaObject.ssrcs.push({id:t,attribute:"msid",value:`${d||"-"} ${l}`}),r&&(c.rtcp.cname&&this._mediaObject.ssrcs.push({id:r,attribute:"cname",value:c.rtcp.cname}),this._planB&&this._mediaObject.ssrcs.push({id:r,attribute:"msid",value:`${d||"-"} ${l}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${t} ${r}`}));break}case"application":p?(this._mediaObject.payloads=i.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:i.port,maxMessageSize:i.maxMessageSize}):(this._mediaObject.payloads="webrtc-datachannel",this._mediaObject.sctpPort=i.port,this._mediaObject.maxMessageSize=i.maxMessageSize)}}setDtlsRole(e){this._mediaObject.setup="actpass"}resume(){this._mediaObject.direction="sendonly"}planBReceive({offerRtpParameters:e,streamId:t,trackId:r}){const i=e.encodings[0],n=i.ssrc,s=i.rtx&&i.rtx.ssrc?i.rtx.ssrc:void 0,a=this._mediaObject.payloads.split(" ");for(const t of e.codecs){if(a.includes(String(t.payloadType)))continue;const e={payload:t.payloadType,codec:Pn(t),rate:t.clockRate};t.channels>1&&(e.encoding=t.channels),this._mediaObject.rtp.push(e);const r={payload:t.payloadType,config:""};for(const e of Object.keys(t.parameters))r.config&&(r.config+=";"),r.config+=`${e}=${t.parameters[e]}`;r.config&&this._mediaObject.fmtp.push(r);for(const e of t.rtcpFeedback)this._mediaObject.rtcpFb.push({payload:t.payloadType,type:e.type,subtype:e.parameter})}this._mediaObject.payloads+=` ${e.codecs.filter((e=>!this._mediaObject.payloads.includes(e.payloadType))).map((e=>e.payloadType)).join(" ")}`,this._mediaObject.payloads=this._mediaObject.payloads.trim(),e.rtcp.cname&&this._mediaObject.ssrcs.push({id:n,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:n,attribute:"msid",value:`${t||"-"} ${r}`}),s&&(e.rtcp.cname&&this._mediaObject.ssrcs.push({id:s,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:s,attribute:"msid",value:`${t||"-"} ${r}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${n} ${s}`}))}planBStopReceiving({offerRtpParameters:e}){const t=e.encodings[0],r=t.ssrc,i=t.rtx&&t.rtx.ssrc?t.rtx.ssrc:void 0;this._mediaObject.ssrcs=this._mediaObject.ssrcs.filter((e=>e.id!==r&&e.id!==i)),i&&(this._mediaObject.ssrcGroups=this._mediaObject.ssrcGroups.filter((e=>e.ssrcs!==`${r} ${i}`)))}};var kn=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Dn=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),On=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&kn(t,e,r);return Dn(t,e),t};Object.defineProperty(_n,"__esModule",{value:!0}),_n.RemoteSdp=void 0;const En=On(Hi),In=bn,xn=new nr.Logger("RemoteSdp");_n.RemoteSdp=class{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1}){if(this._mediaSections=[],this._midToIndex=new Map,this._iceParameters=e,this._iceCandidates=t,this._dtlsParameters=r,this._sctpParameters=i,this._plainRtpParameters=n,this._planB=s,this._sdpObject={version:0,origin:{address:"0.0.0.0",ipVer:4,netType:"IN",sessionId:1e4,sessionVersion:0,username:"mediasoup-client"},name:"-",timing:{start:0,stop:0},media:[]},e&&e.iceLite&&(this._sdpObject.icelite="ice-lite"),r){this._sdpObject.msidSemantic={semantic:"WMS",token:"*"};const e=this._dtlsParameters.fingerprints.length;this._sdpObject.fingerprint={type:r.fingerprints[e-1].algorithm,hash:r.fingerprints[e-1].value},this._sdpObject.groups=[{type:"BUNDLE",mids:""}]}n&&(this._sdpObject.origin.address=n.ip,this._sdpObject.origin.ipVer=n.ipVersion)}updateIceParameters(e){xn.debug("updateIceParameters() [iceParameters:%o]",e),this._iceParameters=e,this._sdpObject.icelite=e.iceLite?"ice-lite":void 0;for(const t of this._mediaSections)t.setIceParameters(e)}updateDtlsRole(e){xn.debug("updateDtlsRole() [role:%s]",e),this._dtlsParameters.role=e;for(const t of this._mediaSections)t.setDtlsRole(e)}getNextMediaSectionIdx(){for(let e=0;e<this._mediaSections.length;++e){const t=this._mediaSections[e];if(t.closed)return{idx:e,reuseMid:t.mid}}return{idx:this._mediaSections.length}}send({offerMediaObject:e,reuseMid:t,offerRtpParameters:r,answerRtpParameters:i,codecOptions:n,extmapAllowMixed:s=!1}){const a=new In.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,offerMediaObject:e,offerRtpParameters:r,answerRtpParameters:i,codecOptions:n,extmapAllowMixed:s});t?this._replaceMediaSection(a,t):this._midToIndex.has(a.mid)?this._replaceMediaSection(a):this._addMediaSection(a)}receive({mid:e,kind:t,offerRtpParameters:r,streamId:i,trackId:n}){const s=this._midToIndex.get(e);let a;if(void 0!==s&&(a=this._mediaSections[s]),a)a.planBReceive({offerRtpParameters:r,streamId:i,trackId:n}),this._replaceMediaSection(a);else{a=new In.OfferMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,mid:e,kind:t,offerRtpParameters:r,streamId:i,trackId:n});const s=this._mediaSections.find((e=>e.closed));s?this._replaceMediaSection(a,s.mid):this._addMediaSection(a)}}pauseMediaSection(e){this._findMediaSection(e).pause()}resumeSendingMediaSection(e){this._findMediaSection(e).resume()}resumeReceivingMediaSection(e){this._findMediaSection(e).resume()}disableMediaSection(e){this._findMediaSection(e).disable()}closeMediaSection(e){const t=this._findMediaSection(e);return e===this._firstMid?(xn.debug("closeMediaSection() | cannot close first media section, disabling it instead [mid:%s]",e),this.disableMediaSection(e),!1):(t.close(),this._regenerateBundleMids(),!0)}muxMediaSectionSimulcast(e,t){const r=this._findMediaSection(e);r.muxSimulcastStreams(t),this._replaceMediaSection(r)}planBStopReceiving({mid:e,offerRtpParameters:t}){const r=this._findMediaSection(e);r.planBStopReceiving({offerRtpParameters:t}),this._replaceMediaSection(r)}sendSctpAssociation({offerMediaObject:e}){const t=new In.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,sctpParameters:this._sctpParameters,plainRtpParameters:this._plainRtpParameters,offerMediaObject:e});this._addMediaSection(t)}receiveSctpAssociation({oldDataChannelSpec:e=!1}={}){const t=new In.OfferMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,sctpParameters:this._sctpParameters,plainRtpParameters:this._plainRtpParameters,mid:"datachannel",kind:"application",oldDataChannelSpec:e});this._addMediaSection(t)}getSdp(){return this._sdpObject.origin.sessionVersion++,En.write(this._sdpObject)}_addMediaSection(e){this._firstMid||(this._firstMid=e.mid),this._mediaSections.push(e),this._midToIndex.set(e.mid,this._mediaSections.length-1),this._sdpObject.media.push(e.getObject()),this._regenerateBundleMids()}_replaceMediaSection(e,t){if("string"==typeof t){const r=this._midToIndex.get(t);if(void 0===r)throw new Error(`no media section found for reuseMid '${t}'`);const i=this._mediaSections[r];this._mediaSections[r]=e,this._midToIndex.delete(i.mid),this._midToIndex.set(e.mid,r),this._sdpObject.media[r]=e.getObject(),this._regenerateBundleMids()}else{const t=this._midToIndex.get(e.mid);if(void 0===t)throw new Error(`no media section found with mid '${e.mid}'`);this._mediaSections[t]=e,this._sdpObject.media[t]=e.getObject()}}_findMediaSection(e){const t=this._midToIndex.get(e);if(void 0===t)throw new Error(`no media section found with mid '${e}'`);return this._mediaSections[t]}_regenerateBundleMids(){this._dtlsParameters&&(this._sdpObject.groups[0].mids=this._mediaSections.filter((e=>!e.closed)).map((e=>e.mid)).join(" "))}};var jn={};Object.defineProperty(jn,"__esModule",{value:!0}),jn.parse=void 0;const Mn=new RegExp("^[LS]([1-9]\\d{0,1})T([1-9]\\d{0,1})");jn.parse=function(e){const t=Mn.exec(e||"");return t?{spatialLayers:Number(t[1]),temporalLayers:Number(t[2])}:{spatialLayers:1,temporalLayers:1}};var Ln=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),An=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Nn=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Ln(t,e,r);return An(t,e),t};Object.defineProperty(Gi,"__esModule",{value:!0});var Bn=Gi.Chrome111=void 0;const Fn=Nn(Hi),Un=nr,$n=Nn(gr),zn=Nn(vr),Vn=Nn(cn),qn=Nn(hn),Gn=Nn(mn),Hn=hr,Wn=fn,Kn=_n,Jn=jn,Qn=new Un.Logger("Chrome111"),Zn={OS:1024,MIS:1024};class Yn extends Wn.HandlerInterface{static createFactory(){return()=>new Yn}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome111"}close(){if(Qn.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Qn.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=Fn.parse(t.sdp),i=Vn.extractRtpCapabilities({sdpObject:r});return Gn.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Qn.debug("getNativeSctpCapabilities()"),{numStreams:Zn}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Qn.debug("run()"),this._direction=e,this._remoteSdp=new Kn.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:zn.getSendingRtpParameters("audio",d),video:zn.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:zn.getSendingRemoteRtpParameters("audio",d),video:zn.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):(Qn.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})))}async updateIceServers(e){this.assertNotClosed(),Qn.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Qn.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Qn.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Qn.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Qn.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Qn.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){if(this.assertNotClosed(),this.assertSendDirection(),Qn.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1){t.forEach(((e,t)=>{e.rid=`r${t}`}));let e=1,r=1;for(const e of t){const t=e.scalabilityMode?(0,Jn.parse)(e.scalabilityMode).temporalLayers:3;t>r&&(r=t)}for(const i of t)i.rid="r"+e++,i.scalabilityMode=`L1T${r}`}const n=$n.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=zn.reduceCodecs(n.codecs,i);const s=$n.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=zn.reduceCodecs(s.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t}),c=await this._pc.createOffer();let d=Fn.parse(c.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:d}),Qn.debug("send() | calling pc.setLocalDescription() [offer:%o]",c),await this._pc.setLocalDescription(c);const l=o.mid;n.mid=l,d=Fn.parse(this._pc.localDescription.sdp);const p=d.media[a.idx];if(n.rtcp.cname=Vn.getCname({offerMediaObject:p}),t)if(1===t.length){const e=qn.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),n.encodings=e}else n.encodings=t;else n.encodings=qn.getRtpEncodings({offerMediaObject:p});this._remoteSdp.send({offerMediaObject:p,reuseMid:a.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const u={type:"answer",sdp:this._remoteSdp.getSdp()};return Qn.debug("send() | calling pc.setRemoteDescription() [answer:%o]",u),await this._pc.setRemoteDescription(u),this._mapMidTransceiver.set(l,o),{localId:l,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),Qn.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();Qn.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Qn.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Qn.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Qn.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Qn.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Qn.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();Qn.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Qn.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Qn.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Qn.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),Qn.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Qn.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Qn.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Qn.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Qn.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Qn.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Qn.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Zn.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Fn.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Qn.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Qn.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;Qn.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Qn.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=Fn.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),a=s.media.find((e=>String(e.mid)===n));Vn.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}n={type:"answer",sdp:Fn.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Qn.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Qn.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Qn.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Qn.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Qn.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Qn.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Qn.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Qn.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Qn.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Qn.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a,protocol:r};Qn.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Qn.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Fn.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Qn.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Fn.parse(this._pc.localDescription.sdp));const r=Vn.extractIceParameters({sdpObject:t}),i=Vn.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Hn.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Bn=Gi.Chrome111=Yn;var Xn={},es=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ts=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),rs=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&es(t,e,r);return ts(t,e),t};Object.defineProperty(Xn,"__esModule",{value:!0}),Xn.Chrome74=void 0;const is=rs(Hi),ns=nr,ss=rs(gr),as=rs(vr),os=rs(cn),cs=rs(hn),ds=rs(mn),ls=hr,ps=fn,us=_n,hs=jn,ms=new ns.Logger("Chrome74"),fs={OS:1024,MIS:1024};class gs extends ps.HandlerInterface{static createFactory(){return()=>new gs}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome74"}close(){if(ms.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){ms.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=is.parse(t.sdp),i=os.extractRtpCapabilities({sdpObject:r});return ds.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return ms.debug("getNativeSctpCapabilities()"),{numStreams:fs}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){ms.debug("run()"),this._direction=e,this._remoteSdp=new us.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:as.getSendingRtpParameters("audio",d),video:as.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:as.getSendingRemoteRtpParameters("audio",d),video:as.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):(ms.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})))}async updateIceServers(e){this.assertNotClosed(),ms.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),ms.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});ms.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};ms.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};ms.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();ms.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),ms.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const n=ss.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=as.reduceCodecs(n.codecs,i);const s=ss.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=as.reduceCodecs(s.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});let c,d=await this._pc.createOffer(),l=is.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});let p=!1;const u=(0,hs.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(ms.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=is.parse(d.sdp),c=l.media[a.idx],cs.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:is.write(l)}),ms.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const h=o.mid;if(n.mid=h,l=is.parse(this._pc.localDescription.sdp),c=l.media[a.idx],n.rtcp.cname=os.getCname({offerMediaObject:c}),t)if(1===t.length){let e=cs.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),p&&(e=[e[0]]),n.encodings=e}else n.encodings=t;else n.encodings=cs.getRtpEncodings({offerMediaObject:c});if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${u.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return ms.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),ms.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();ms.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};ms.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),ms.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();ms.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};ms.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),ms.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();ms.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};ms.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?ms.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):ms.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),ms.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();ms.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};ms.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),ms.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();ms.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};ms.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};ms.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%fs.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=is.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),ms.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};ms.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;ms.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};ms.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=is.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),a=s.media.find((e=>String(e.mid)===n));os.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}n={type:"answer",sdp:is.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),ms.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){ms.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};ms.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();ms.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){ms.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};ms.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();ms.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){ms.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};ms.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();ms.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a,protocol:r};ms.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};ms.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=is.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}ms.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=is.parse(this._pc.localDescription.sdp));const r=os.extractIceParameters({sdpObject:t}),i=os.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new ls.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Xn.Chrome74=gs;var vs={},_s=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),bs=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ys=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&_s(t,e,r);return bs(t,e),t};Object.defineProperty(vs,"__esModule",{value:!0}),vs.Chrome70=void 0;const ws=ys(Hi),Ss=nr,Cs=ys(gr),Rs=ys(vr),Ts=ys(cn),Ps=ys(hn),ks=fn,Ds=_n,Os=jn,Es=new Ss.Logger("Chrome70"),Is={OS:1024,MIS:1024};class xs extends ks.HandlerInterface{static createFactory(){return()=>new xs}constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome70"}close(){if(Es.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){Es.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=ws.parse(t.sdp);return Ts.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Es.debug("getNativeSctpCapabilities()"),{numStreams:Is}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Es.debug("run()"),this._direction=e,this._remoteSdp=new Ds.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:Rs.getSendingRtpParameters("audio",d),video:Rs.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Rs.getSendingRemoteRtpParameters("audio",d),video:Rs.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Es.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){Es.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Es.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Es.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Es.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Es.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Es.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),Es.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const n=Cs.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=Rs.reduceCodecs(n.codecs,i);const s=Cs.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=Rs.reduceCodecs(s.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let c,d=await this._pc.createOffer(),l=ws.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l}),t&&t.length>1&&(Es.debug("send() | enabling legacy simulcast"),l=ws.parse(d.sdp),c=l.media[a.idx],Ps.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:ws.write(l)});let p=!1;const u=(0,Os.parse)((t||[{}])[0].scalabilityMode);if(t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(Es.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=ws.parse(d.sdp),c=l.media[a.idx],Ps.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:ws.write(l)}),Es.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d),t){Es.debug("send() | applying given encodings");const e=o.sender.getParameters();for(let r=0;r<(e.encodings||[]).length;++r){const i=e.encodings[r],n=t[r];if(!n)break;e.encodings[r]=Object.assign(i,n)}await o.sender.setParameters(e)}const h=o.mid;if(n.mid=h,l=ws.parse(this._pc.localDescription.sdp),c=l.media[a.idx],n.rtcp.cname=Ts.getCname({offerMediaObject:c}),n.encodings=Ps.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<n.encodings.length;++e)t[e]&&Object.assign(n.encodings[e],t[e]);if(p&&(n.encodings=[n.encodings[0]]),n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return Es.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){this.assertSendDirection(),Es.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();Es.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Es.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?Es.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Es.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),Es.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Es.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Es.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),Es.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Es.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Es.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};Es.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Is.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ws.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Es.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Es.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;Es.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Es.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=ws.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),a=s.media.find((e=>String(e.mid)===n));Ts.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}n={type:"answer",sdp:ws.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Es.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){Es.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Es.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Es.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:a,protocol:r};Es.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Es.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ws.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Es.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=ws.parse(this._pc.localDescription.sdp));const r=Ts.extractIceParameters({sdpObject:t}),i=Ts.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}vs.Chrome70=xs;var js={},Ms={};Object.defineProperty(Ms,"__esModule",{value:!0}),Ms.addLegacySimulcast=Ms.getRtpEncodings=void 0,Ms.getRtpEncodings=function({offerMediaObject:e,track:t}){const r=new Set;for(const i of e.ssrcs||[]){if("msid"!==i.attribute)continue;if(i.value.split(" ")[1]===t.id){const e=i.id;r.add(e)}}if(0===r.size)throw new Error(`a=ssrc line with msid information not found [track.id:${t.id}]`);const i=new Map;for(const t of e.ssrcGroups||[]){if("FID"!==t.semantics)continue;let[e,n]=t.ssrcs.split(/\s+/);e=Number(e),n=Number(n),r.has(e)&&(r.delete(e),r.delete(n),i.set(e,n))}for(const e of r)i.set(e,null);const n=[];for(const[e,t]of i){const r={ssrc:e};t&&(r.rtx={ssrc:t}),n.push(r)}return n},Ms.addLegacySimulcast=function({offerMediaObject:e,track:t,numStreams:r}){if(r<=1)throw new TypeError("numStreams must be greater than 1");let i,n,s;if(!(e.ssrcs||[]).find((e=>{if("msid"!==e.attribute)return!1;return e.value.split(" ")[1]===t.id&&(i=e.id,s=e.value.split(" ")[0],!0)})))throw new Error(`a=ssrc line with msid information not found [track.id:${t.id}]`);(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===i&&(n=Number(t[1]),!0)}));const a=e.ssrcs.find((e=>"cname"===e.attribute&&e.id===i));if(!a)throw new Error(`a=ssrc line with cname information not found [track.id:${t.id}]`);const o=a.value,c=[],d=[];for(let e=0;e<r;++e)c.push(i+e),n&&d.push(n+e);e.ssrcGroups=e.ssrcGroups||[],e.ssrcs=e.ssrcs||[],e.ssrcGroups.push({semantics:"SIM",ssrcs:c.join(" ")});for(let r=0;r<c.length;++r){const i=c[r];e.ssrcs.push({id:i,attribute:"cname",value:o}),e.ssrcs.push({id:i,attribute:"msid",value:`${s} ${t.id}`})}for(let r=0;r<d.length;++r){const i=c[r],n=d[r];e.ssrcs.push({id:n,attribute:"cname",value:o}),e.ssrcs.push({id:n,attribute:"msid",value:`${s} ${t.id}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${i} ${n}`})}};var Ls=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),As=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ns=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Ls(t,e,r);return As(t,e),t};Object.defineProperty(js,"__esModule",{value:!0}),js.Chrome67=void 0;const Bs=Ns(Hi),Fs=nr,Us=Ns(gr),$s=Ns(vr),zs=Ns(cn),Vs=Ns(Ms),qs=fn,Gs=_n,Hs=new Fs.Logger("Chrome67"),Ws={OS:1024,MIS:1024};class Ks extends qs.HandlerInterface{static createFactory(){return()=>new Ks}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdRtpSender=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome67"}close(){if(Hs.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){Hs.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=Bs.parse(t.sdp);return zs.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Hs.debug("getNativeSctpCapabilities()"),{numStreams:Ws}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Hs.debug("run()"),this._direction=e,this._remoteSdp=new Gs.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:$s.getSendingRtpParameters("audio",d),video:$s.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:$s.getSendingRemoteRtpParameters("audio",d),video:$s.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Hs.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){Hs.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Hs.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Hs.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Hs.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Hs.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Hs.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),Hs.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Hs.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let n,s=await this._pc.createOffer(),a=Bs.parse(s.sdp);const o=Us.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=$s.reduceCodecs(o.codecs);const c=Us.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=$s.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(Hs.debug("send() | enabling simulcast"),a=Bs.parse(s.sdp),n=a.media.find((e=>"video"===e.type)),Vs.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:Bs.write(a)}),Hs.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),a=Bs.parse(this._pc.localDescription.sdp),n=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=zs.getCname({offerMediaObject:n}),o.encodings=Vs.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&"video/vp8"===o.codecs[0].mimeType.toLowerCase())for(const e of o.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};Hs.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const p=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,p),{localId:l,rtpParameters:o,rtpSender:p}}async stopSending(e){this.assertSendDirection(),Hs.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");this._pc.removeTrack(t),t.track&&this._sendStream.removeTrack(t.track),this._mapSendLocalIdRtpSender.delete(e);const r=await this._pc.createOffer();Hs.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Hs.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};Hs.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?Hs.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Hs.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.track;await r.replaceTrack(t),i&&this._sendStream.removeTrack(i),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),Hs.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(i)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),Hs.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.setParameters(i)}async getSenderStats(e){this.assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");return t.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};Hs.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ws.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Bs.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Hs.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Hs.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:n}=t;Hs.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:n||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};Hs.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const n=Bs.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));zs.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}i={type:"answer",sdp:Bs.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Hs.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:n}=r,s=i,a=e,o=this._pc.getReceivers().find((e=>e.track&&e.track.id===s));if(!o)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(s,{mid:a,rtpParameters:n,rtpReceiver:o}),t.push({localId:s,track:o.track,rtpReceiver:o})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){Hs.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Hs.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Hs.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this.assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:a,protocol:r};Hs.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};Hs.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Bs.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Hs.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Bs.parse(this._pc.localDescription.sdp));const r=zs.extractIceParameters({sdpObject:t}),i=zs.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}js.Chrome67=Ks;var Js={},Qs=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Zs=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ys=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Qs(t,e,r);return Zs(t,e),t};Object.defineProperty(Js,"__esModule",{value:!0}),Js.Chrome55=void 0;const Xs=Ys(Hi),ea=nr,ta=hr,ra=Ys(gr),ia=Ys(vr),na=Ys(cn),sa=Ys(Ms),aa=fn,oa=_n,ca=new ea.Logger("Chrome55"),da={OS:1024,MIS:1024};class la extends aa.HandlerInterface{static createFactory(){return()=>new la}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdTrack=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome55"}close(){if(ca.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){ca.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=Xs.parse(t.sdp);return na.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return ca.debug("getNativeSctpCapabilities()"),{numStreams:da}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){ca.debug("run()"),this._direction=e,this._remoteSdp=new oa.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:ia.getSendingRtpParameters("audio",d),video:ia.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:ia.getSendingRemoteRtpParameters("audio",d),video:ia.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(ca.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){ca.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(ca.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});ca.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};ca.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};ca.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();ca.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),ca.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&ca.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let n,s=await this._pc.createOffer(),a=Xs.parse(s.sdp);const o=ra.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=ia.reduceCodecs(o.codecs);const c=ra.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=ia.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(ca.debug("send() | enabling simulcast"),a=Xs.parse(s.sdp),n=a.media.find((e=>"video"===e.type)),sa.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:Xs.write(a)}),ca.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),a=Xs.parse(this._pc.localDescription.sdp),n=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=na.getCname({offerMediaObject:n}),o.encodings=sa.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&"video/vp8"===o.codecs[0].mimeType.toLowerCase())for(const e of o.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};ca.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:o}}async stopSending(e){this.assertSendDirection(),ca.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdTrack.get(e);if(!t)throw new Error("track not found");this._mapSendLocalIdTrack.delete(e),this._sendStream.removeTrack(t),this._pc.addStream(this._sendStream);const r=await this._pc.createOffer();ca.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void ca.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};ca.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){throw new ta.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new ta.UnsupportedError(" not implemented")}async setRtpEncodingParameters(e,t){throw new ta.UnsupportedError("not supported")}async getSenderStats(e){throw new ta.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};ca.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%da.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Xs.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),ca.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};ca.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:n}=t;ca.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:n||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};ca.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const n=Xs.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));na.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}i={type:"answer",sdp:Xs.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),ca.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:n}=r,s=e,a=i,o=r.streamId||n.rtcp.cname,c=this._pc.getRemoteStreams().find((e=>e.id===o)).getTrackById(a);if(!c)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(a,{mid:s,rtpParameters:n}),t.push({localId:a,track:c})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){ca.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};ca.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();ca.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new ta.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:a,protocol:r};ca.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};ca.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Xs.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}ca.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Xs.parse(this._pc.localDescription.sdp));const r=na.extractIceParameters({sdpObject:t}),i=na.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Js.Chrome55=la;var pa={},ua=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ha=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ma=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ua(t,e,r);return ha(t,e),t};Object.defineProperty(pa,"__esModule",{value:!0}),pa.Firefox60=void 0;const fa=ma(Hi),ga=nr,va=hr,_a=ma(gr),ba=ma(vr),ya=ma(cn),wa=ma(hn),Sa=fn,Ca=_n,Ra=jn,Ta=new ga.Logger("Firefox60"),Pa={OS:16,MIS:2048};class ka extends Sa.HandlerInterface{static createFactory(){return()=>new ka}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Firefox60"}close(){if(Ta.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Ta.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"}),t=document.createElement("canvas");t.getContext("2d");const r=t.captureStream().getVideoTracks()[0];try{e.addTransceiver("audio",{direction:"sendrecv"});const i=e.addTransceiver(r,{direction:"sendrecv"}),n=i.sender.getParameters(),s=[{rid:"r0",maxBitrate:1e5},{rid:"r1",maxBitrate:5e5}];n.encodings=s,await i.sender.setParameters(n);const a=await e.createOffer();try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}const o=fa.parse(a.sdp);return ya.extractRtpCapabilities({sdpObject:o})}catch(i){try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}throw i}}async getNativeSctpCapabilities(){return Ta.debug("getNativeSctpCapabilities()"),{numStreams:Pa}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Ta.debug("run()"),this._direction=e,this._remoteSdp=new Ca.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:ba.getSendingRtpParameters("audio",d),video:ba.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:ba.getSendingRemoteRtpParameters("audio",d),video:ba.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Ta.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){throw this.assertNotClosed(),new va.UnsupportedError("not supported")}async restartIce(e){if(this.assertNotClosed(),Ta.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Ta.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Ta.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ta.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Ta.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),Ta.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&(t=_a.clone(t)).length>1&&(t.forEach(((e,t)=>{e.rid=`r${t}`})),t.reverse());const n=_a.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=ba.reduceCodecs(n.codecs,i);const s=_a.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=ba.reduceCodecs(s.codecs,i);const a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});if(t){const e=a.sender.getParameters();e.encodings=t,await a.sender.setParameters(e)}const o=await this._pc.createOffer();let c=fa.parse(o.sdp);this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:c});const d=(0,Ra.parse)((t||[{}])[0].scalabilityMode);Ta.debug("send() | calling pc.setLocalDescription() [offer:%o]",o),await this._pc.setLocalDescription(o);const l=a.mid;n.mid=l,c=fa.parse(this._pc.localDescription.sdp);const p=c.media[c.media.length-1];if(n.rtcp.cname=ya.getCname({offerMediaObject:p}),t)if(1===t.length){const e=wa.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),n.encodings=e}else n.encodings=t.reverse();else n.encodings=wa.getRtpEncodings({offerMediaObject:p});if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${d.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:p,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const u={type:"answer",sdp:this._remoteSdp.getSdp()};return Ta.debug("send() | calling pc.setRemoteDescription() [answer:%o]",u),await this._pc.setRemoteDescription(u),this._mapMidTransceiver.set(l,a),{localId:l,rtpParameters:n,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),Ta.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated transceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.disableMediaSection(t.mid);const r=await this._pc.createOffer();Ta.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ta.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Ta.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Ta.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ta.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Ta.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly",this._remoteSdp.resumeSendingMediaSection(e);const r=await this._pc.createOffer();Ta.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ta.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Ta.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Ta.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),Ta.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated transceiver not found");const i=r.sender.getParameters();t=i.encodings.length-1-t,i.encodings.forEach(((e,r)=>{e.active=r>=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Ta.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Ta.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Ta.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Ta.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Ta.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Ta.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Pa.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=fa.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:t}),Ta.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ta.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;Ta.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Ta.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=fa.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,a=r.get(e),o=s.media.find((e=>String(e.mid)===a));ya.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o}),n={type:"answer",sdp:fa.write(s)}}this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:s}),Ta.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Ta.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Ta.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ta.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Ta.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Ta.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ta.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Ta.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Ta.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ta.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a,protocol:r};Ta.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ta.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=fa.parse(t.sdp);await this.setupTransport({localDtlsRole:"client",localSdpObject:e})}Ta.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=fa.parse(this._pc.localDescription.sdp));const r=ya.extractIceParameters({sdpObject:t}),i=ya.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new va.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}pa.Firefox60=ka;var Da={},Oa=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ea=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ia=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Oa(t,e,r);return Ea(t,e),t};Object.defineProperty(Da,"__esModule",{value:!0}),Da.Safari12=void 0;const xa=Ia(Hi),ja=nr,Ma=Ia(gr),La=Ia(vr),Aa=Ia(cn),Na=Ia(hn),Ba=Ia(mn),Fa=hr,Ua=fn,$a=_n,za=jn,Va=new ja.Logger("Safari12"),qa={OS:1024,MIS:1024};class Ga extends Ua.HandlerInterface{static createFactory(){return()=>new Ga}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Safari12"}close(){if(Va.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Va.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=xa.parse(t.sdp),i=Aa.extractRtpCapabilities({sdpObject:r});return Ba.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Va.debug("getNativeSctpCapabilities()"),{numStreams:qa}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Va.debug("run()"),this._direction=e,this._remoteSdp=new $a.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:La.getSendingRtpParameters("audio",d),video:La.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:La.getSendingRemoteRtpParameters("audio",d),video:La.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Va.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){this.assertNotClosed(),Va.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Va.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Va.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Va.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Va.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Va.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),Va.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const n=Ma.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=La.reduceCodecs(n.codecs,i);const s=Ma.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=La.reduceCodecs(s.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let c,d=await this._pc.createOffer(),l=xa.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});const p=(0,za.parse)((t||[{}])[0].scalabilityMode);t&&t.length>1&&(Va.debug("send() | enabling legacy simulcast"),l=xa.parse(d.sdp),c=l.media[a.idx],Na.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:xa.write(l)}),Va.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const u=o.mid;if(n.mid=u,l=xa.parse(this._pc.localDescription.sdp),c=l.media[a.idx],n.rtcp.cname=Aa.getCname({offerMediaObject:c}),n.encodings=Na.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<n.encodings.length;++e)t[e]&&Object.assign(n.encodings[e],t[e]);if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${p.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r});const h={type:"answer",sdp:this._remoteSdp.getSdp()};return Va.debug("send() | calling pc.setRemoteDescription() [answer:%o]",h),await this._pc.setRemoteDescription(h),this._mapMidTransceiver.set(u,o),{localId:u,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;Va.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();Va.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Va.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Va.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Va.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Va.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Va.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly",this._remoteSdp.resumeSendingMediaSection(e);const r=await this._pc.createOffer();Va.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Va.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Va.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Va.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),Va.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Va.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Va.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Va.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Va.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Va.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Va.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%qa.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=xa.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Va.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Va.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;Va.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Va.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=xa.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),a=s.media.find((e=>String(e.mid)===n));Aa.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}n={type:"answer",sdp:xa.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Va.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Va.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Va.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Va.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Va.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Va.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Va.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Va.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Va.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Va.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a,protocol:r};Va.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Va.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=xa.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Va.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=xa.parse(this._pc.localDescription.sdp));const r=Aa.extractIceParameters({sdpObject:t}),i=Aa.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Fa.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Da.Safari12=Ga;var Ha={},Wa=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ka=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ja=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Wa(t,e,r);return Ka(t,e),t};Object.defineProperty(Ha,"__esModule",{value:!0}),Ha.Safari11=void 0;const Qa=Ja(Hi),Za=nr,Ya=Ja(gr),Xa=Ja(vr),eo=Ja(cn),to=Ja(Ms),ro=fn,io=_n,no=new Za.Logger("Safari11"),so={OS:1024,MIS:1024};class ao extends ro.HandlerInterface{static createFactory(){return()=>new ao}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdRtpSender=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Safari11"}close(){if(no.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){no.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=Qa.parse(t.sdp);return eo.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return no.debug("getNativeSctpCapabilities()"),{numStreams:so}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){no.debug("run()"),this._direction=e,this._remoteSdp=new io.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:Xa.getSendingRtpParameters("audio",d),video:Xa.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Xa.getSendingRemoteRtpParameters("audio",d),video:Xa.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(no.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){no.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(no.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});no.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};no.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();no.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),no.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&no.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let n,s=await this._pc.createOffer(),a=Qa.parse(s.sdp);const o=Ya.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=Xa.reduceCodecs(o.codecs);const c=Ya.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=Xa.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(no.debug("send() | enabling simulcast"),a=Qa.parse(s.sdp),n=a.media.find((e=>"video"===e.type)),to.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:Qa.write(a)}),no.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),a=Qa.parse(this._pc.localDescription.sdp),n=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=eo.getCname({offerMediaObject:n}),o.encodings=to.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&"video/vp8"===o.codecs[0].mimeType.toLowerCase())for(const e of o.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const p=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,p),{localId:l,rtpParameters:o,rtpSender:p}}async stopSending(e){this.assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");t.track&&this._sendStream.removeTrack(t.track),this._mapSendLocalIdRtpSender.delete(e);const r=await this._pc.createOffer();no.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void no.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?no.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):no.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.track;await r.replaceTrack(t),i&&this._sendStream.removeTrack(i),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),no.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(i)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),no.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.setParameters(i)}async getSenderStats(e){this.assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");return t.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};no.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%so.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Qa.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),no.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:n}=t;no.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:n||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};no.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const n=Qa.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));eo.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}i={type:"answer",sdp:Qa.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),no.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:n}=r,s=e,a=i,o=this._pc.getReceivers().find((e=>e.track&&e.track.id===a));if(!o)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(a,{mid:s,rtpParameters:n,rtpReceiver:o}),t.push({localId:a,track:o.track,rtpReceiver:o})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){no.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};no.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();no.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async pauseReceiving(e){}async resumeReceiving(e){}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a,protocol:r};no.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};no.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Qa.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}no.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Qa.parse(this._pc.localDescription.sdp));const r=eo.extractIceParameters({sdpObject:t}),i=eo.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Ha.Safari11=ao;var oo={},co={},lo=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),po=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),uo=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&lo(t,e,r);return po(t,e),t};Object.defineProperty(co,"__esModule",{value:!0}),co.mangleRtpParameters=co.getCapabilities=void 0;const ho=uo(gr);co.getCapabilities=function(){const e=RTCRtpReceiver.getCapabilities(),t=ho.clone(e);for(const e of t.codecs??[]){if(e.channels=e.numChannels,delete e.numChannels,e.mimeType=e.mimeType||`${e.kind}/${e.name}`,e.parameters){const t=e.parameters;t.apt&&(t.apt=Number(t.apt)),t["packetization-mode"]&&(t["packetization-mode"]=Number(t["packetization-mode"]))}for(const t of e.rtcpFeedback||[])t.parameter||(t.parameter="")}return t},co.mangleRtpParameters=function(e){const t=ho.clone(e);t.mid&&(t.muxId=t.mid,delete t.mid);for(const e of t.codecs)e.channels&&(e.numChannels=e.channels,delete e.channels),e.mimeType&&!e.name&&(e.name=e.mimeType.split("/")[1]),delete e.mimeType;return t};var mo=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),fo=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),go=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&mo(t,e,r);return fo(t,e),t};Object.defineProperty(oo,"__esModule",{value:!0}),oo.Edge11=void 0;const vo=nr,_o=hr,bo=go(gr),yo=go(vr),wo=go(co),So=fn,Co=new vo.Logger("Edge11");class Ro extends So.HandlerInterface{static createFactory(){return()=>new Ro}constructor(){super(),this._rtpSenders=new Map,this._rtpReceivers=new Map,this._nextSendLocalId=0,this._transportReady=!1}get name(){return"Edge11"}close(){Co.debug("close()");try{this._iceGatherer.close()}catch(e){}try{this._iceTransport.stop()}catch(e){}try{this._dtlsTransport.stop()}catch(e){}for(const e of this._rtpSenders.values())try{e.stop()}catch(e){}for(const e of this._rtpReceivers.values())try{e.stop()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){return Co.debug("getNativeRtpCapabilities()"),wo.getCapabilities()}async getNativeSctpCapabilities(){return Co.debug("getNativeSctpCapabilities()"),{numStreams:{OS:0,MIS:0}}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Co.debug("run()"),this._sendingRtpParametersByKind={audio:yo.getSendingRtpParameters("audio",d),video:yo.getSendingRtpParameters("video",d)},this._remoteIceParameters=t,this._remoteIceCandidates=r,this._remoteDtlsParameters=i,this._cname=`CNAME-${bo.generateRandomNumber()}`,this.setIceGatherer({iceServers:s,iceTransportPolicy:a}),this.setIceTransport(),this.setDtlsTransport()}async updateIceServers(e){throw new _o.UnsupportedError("not supported")}async restartIce(e){if(Co.debug("restartIce()"),this._remoteIceParameters=e,this._transportReady){Co.debug("restartIce() | calling iceTransport.start()"),this._iceTransport.start(this._iceGatherer,e,"controlling");for(const e of this._remoteIceCandidates)this._iceTransport.addRemoteCandidate(e);this._iceTransport.addRemoteCandidate({})}}async getTransportStats(){return this._iceTransport.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){Co.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),this._transportReady||await this.setupTransport({localDtlsRole:"server"}),Co.debug("send() | calling new RTCRtpSender()");const n=new RTCRtpSender(e,this._dtlsTransport),s=bo.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=yo.reduceCodecs(s.codecs,i);const a=s.codecs.some((e=>/.+\/rtx$/i.test(e.mimeType)));t||(t=[{}]);for(const e of t)e.ssrc=bo.generateRandomNumber(),a&&(e.rtx={ssrc:bo.generateRandomNumber()});s.encodings=t,s.rtcp={cname:this._cname,reducedSize:!0,mux:!0};const o=wo.mangleRtpParameters(s);Co.debug("send() | calling rtpSender.send() [params:%o]",o),await n.send(o);const c=String(this._nextSendLocalId);return this._nextSendLocalId++,this._rtpSenders.set(c,n),{localId:c,rtpParameters:s,rtpSender:n}}async stopSending(e){Co.debug("stopSending() [localId:%s]",e);const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");this._rtpSenders.delete(e);try{Co.debug("stopSending() | calling rtpSender.stop()"),t.stop()}catch(e){throw Co.warn("stopSending() | rtpSender.stop() failed:%o",e),e}}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){t?Co.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Co.debug("replaceTrack() [localId:%s, no track]",e);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");r.setTrack(t)}async setMaxSpatialLayer(e,t){Co.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(i)}async setRtpEncodingParameters(e,t){Co.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.setParameters(i)}async getSenderStats(e){const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");return t.getStats()}async sendDataChannel(e){throw new _o.UnsupportedError("not implemented")}async receive(e){const t=[];for(const t of e){const{trackId:e,kind:r}=t;Co.debug("receive() [trackId:%s, kind:%s]",e,r)}this._transportReady||await this.setupTransport({localDtlsRole:"server"});for(const r of e){const{trackId:e,kind:i,rtpParameters:n}=r;Co.debug("receive() | calling new RTCRtpReceiver()");const s=new RTCRtpReceiver(this._dtlsTransport,i);s.addEventListener("error",(e=>{Co.error('rtpReceiver "error" event [event:%o]',e)}));const a=wo.mangleRtpParameters(n);Co.debug("receive() | calling rtpReceiver.receive() [params:%o]",a),await s.receive(a);const o=e;this._rtpReceivers.set(o,s),t.push({localId:o,track:s.track,rtpReceiver:s})}return t}async stopReceiving(e){for(const t of e){Co.debug("stopReceiving() [localId:%s]",t);const e=this._rtpReceivers.get(t);if(!e)throw new Error("RTCRtpReceiver not found");this._rtpReceivers.delete(t);try{Co.debug("stopReceiving() | calling rtpReceiver.stop()"),e.stop()}catch(e){Co.warn("stopReceiving() | rtpReceiver.stop() failed:%o",e)}}}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){const t=this._rtpReceivers.get(e);if(!t)throw new Error("RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel(e){throw new _o.UnsupportedError("not implemented")}setIceGatherer({iceServers:e,iceTransportPolicy:t}){const r=new RTCIceGatherer({iceServers:e||[],gatherPolicy:t||"all"});r.addEventListener("error",(e=>{Co.error('iceGatherer "error" event [event:%o]',e)}));try{r.gather()}catch(e){Co.debug("setIceGatherer() | iceGatherer.gather() failed: %s",e.toString())}this._iceGatherer=r}setIceTransport(){const e=new RTCIceTransport(this._iceGatherer);e.addEventListener("statechange",(()=>{switch(e.state){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})),e.addEventListener("icestatechange",(()=>{switch(e.state){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})),e.addEventListener("candidatepairchange",(e=>{Co.debug('iceTransport "candidatepairchange" event [pair:%o]',e.pair)})),this._iceTransport=e}setDtlsTransport(){const e=new RTCDtlsTransport(this._iceTransport);e.addEventListener("statechange",(()=>{Co.debug('dtlsTransport "statechange" event [state:%s]',e.state)})),e.addEventListener("dtlsstatechange",(()=>{Co.debug('dtlsTransport "dtlsstatechange" event [state:%s]',e.state),"closed"===e.state&&this.emit("@connectionstatechange","closed")})),e.addEventListener("error",(e=>{Co.error('dtlsTransport "error" event [event:%o]',e)})),this._dtlsTransport=e}async setupTransport({localDtlsRole:e}){Co.debug("setupTransport()");const t=this._iceGatherer.getLocalParameters(),r=this._dtlsTransport.getLocalParameters();r.role=e,await new Promise(((e,i)=>{this.safeEmit("@connect",{iceParameters:t,dtlsParameters:r},e,i)})),this._iceTransport.start(this._iceGatherer,this._remoteIceParameters,"controlling");for(const e of this._remoteIceCandidates)this._iceTransport.addRemoteCandidate(e);this._iceTransport.addRemoteCandidate({}),this._remoteDtlsParameters.fingerprints=this._remoteDtlsParameters.fingerprints.filter((e=>"sha-256"===e.algorithm||"sha-384"===e.algorithm||"sha-512"===e.algorithm)),this._dtlsTransport.start(this._remoteDtlsParameters),this._transportReady=!0}}oo.Edge11=Ro;var To={},Po=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ko=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Do=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Po(t,e,r);return ko(t,e),t};Object.defineProperty(To,"__esModule",{value:!0}),To.ReactNativeUnifiedPlan=void 0;const Oo=Do(Hi),Eo=nr,Io=Do(gr),xo=Do(vr),jo=Do(cn),Mo=Do(hn),Lo=Do(mn),Ao=hr,No=fn,Bo=_n,Fo=jn,Uo=new Eo.Logger("ReactNativeUnifiedPlan"),$o={OS:1024,MIS:1024};class zo extends No.HandlerInterface{static createFactory(){return()=>new zo}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"ReactNativeUnifiedPlan"}close(){if(Uo.debug("close()"),!this._closed){if(this._closed=!0,this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Uo.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=Oo.parse(t.sdp),i=jo.extractRtpCapabilities({sdpObject:r});return Lo.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Uo.debug("getNativeSctpCapabilities()"),{numStreams:$o}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Uo.debug("run()"),this._direction=e,this._remoteSdp=new Bo.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:xo.getSendingRtpParameters("audio",d),video:xo.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:xo.getSendingRemoteRtpParameters("audio",d),video:xo.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Uo.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){this.assertNotClosed(),Uo.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Uo.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Uo.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Uo.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Uo.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Uo.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),Uo.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const n=Io.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=xo.reduceCodecs(n.codecs,i);const s=Io.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=xo.reduceCodecs(s.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});let c,d=await this._pc.createOffer(),l=Oo.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});let p=!1;const u=(0,Fo.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(Uo.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=Oo.parse(d.sdp),c=l.media[a.idx],Mo.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:Oo.write(l)}),Uo.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);let h=o.mid??void 0;if(h||Uo.warn("send() | missing transceiver.mid (bug in react-native-webrtc, using a workaround"),n.mid=h,l=Oo.parse(this._pc.localDescription.sdp),c=l.media[a.idx],n.rtcp.cname=jo.getCname({offerMediaObject:c}),t)if(1===t.length){let e=Mo.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),p&&(e=[e[0]]),n.encodings=e}else n.encodings=t;else n.encodings=Mo.getRtpEncodings({offerMediaObject:c});if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${u.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return Uo.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),h||(h=o.mid,n.mid=h),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;Uo.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();Uo.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Uo.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Uo.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Uo.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Uo.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Uo.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();Uo.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Uo.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Uo.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Uo.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),Uo.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Uo.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Uo.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Uo.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const n=await this._pc.createOffer();Uo.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Uo.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Uo.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%$o.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Oo.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Uo.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Uo.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n,streamId:s}=t;Uo.debug("receive() [trackId:%s, kind:%s]",e,i);const a=n.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:n,streamId:s||n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Uo.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=Oo.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,n=r.get(e),a=s.media.find((e=>String(e.mid)===n));jo.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}n={type:"answer",sdp:Oo.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Uo.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Uo.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Uo.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Uo.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Uo.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Uo.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Uo.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Uo.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Uo.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Uo.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a,protocol:r};Uo.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Uo.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Oo.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Uo.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Oo.parse(this._pc.localDescription.sdp));const r=jo.extractIceParameters({sdpObject:t}),i=jo.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Ao.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}To.ReactNativeUnifiedPlan=zo;var Vo={},qo=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Go=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ho=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&qo(t,e,r);return Go(t,e),t};Object.defineProperty(Vo,"__esModule",{value:!0}),Vo.ReactNative=void 0;const Wo=Ho(Hi),Ko=nr,Jo=hr,Qo=Ho(gr),Zo=Ho(vr),Yo=Ho(cn),Xo=Ho(Ms),ec=fn,tc=_n,rc=new Ko.Logger("ReactNative"),ic={OS:1024,MIS:1024};class nc extends ec.HandlerInterface{static createFactory(){return()=>new nc}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdTrack=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"ReactNative"}close(){if(rc.debug("close()"),this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){rc.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=Wo.parse(t.sdp);return Yo.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return rc.debug("getNativeSctpCapabilities()"),{numStreams:ic}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){rc.debug("run()"),this._direction=e,this._remoteSdp=new tc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:Zo.getSendingRtpParameters("audio",d),video:Zo.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Zo.getSendingRemoteRtpParameters("audio",d),video:Zo.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(rc.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){rc.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(rc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});rc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};rc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};rc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();rc.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),rc.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&rc.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let n,s=await this._pc.createOffer(),a=Wo.parse(s.sdp);const o=Qo.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=Zo.reduceCodecs(o.codecs);const c=Qo.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=Zo.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(rc.debug("send() | enabling simulcast"),a=Wo.parse(s.sdp),n=a.media.find((e=>"video"===e.type)),Xo.addLegacySimulcast({offerMediaObject:n,track:e,numStreams:t.length}),s={type:"offer",sdp:Wo.write(a)}),rc.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),a=Wo.parse(this._pc.localDescription.sdp),n=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=Yo.getCname({offerMediaObject:n}),o.encodings=Xo.getRtpEncodings({offerMediaObject:n,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&("video/vp8"===o.codecs[0].mimeType.toLowerCase()||"video/h264"===o.codecs[0].mimeType.toLowerCase()))for(const e of o.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:n,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};rc.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:o}}async stopSending(e){this.assertSendDirection(),rc.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdTrack.get(e);if(!t)throw new Error("track not found");this._mapSendLocalIdTrack.delete(e),this._sendStream.removeTrack(t),this._pc.addStream(this._sendStream);const r=await this._pc.createOffer();rc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void rc.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};rc.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){throw new Jo.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new Jo.UnsupportedError("not implemented")}async setRtpEncodingParameters(e,t){throw new Jo.UnsupportedError("not implemented")}async getSenderStats(e){throw new Jo.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};rc.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ic.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Wo.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),rc.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};rc.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n}=t;rc.debug("receive() [trackId:%s, kind:%s]",e,i);const s=i;let a=t.streamId||n.rtcp.cname;rc.debug("receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc"),a+=`-hack-${Qo.generateRandomNumber()}`,r.set(e,a),this._remoteSdp.receive({mid:s,kind:i,offerRtpParameters:n,streamId:a,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};rc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=Wo.parse(n.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));Yo.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}n={type:"answer",sdp:Wo.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),rc.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{kind:e,trackId:n,rtpParameters:s}=i,a=n,o=e,c=r.get(n),d=this._pc.getRemoteStreams().find((e=>e.id===c)).getTrackById(a);if(!d)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(a,{mid:o,rtpParameters:s}),t.push({localId:a,track:d})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){rc.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};rc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();rc.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new Jo.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:a,protocol:r};rc.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};rc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Wo.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}rc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Wo.parse(this._pc.localDescription.sdp));const r=Yo.extractIceParameters({sdpObject:t}),i=Yo.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Vo.ReactNative=nc;var sc=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ac=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),oc=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&sc(t,e,r);return ac(t,e),t};Object.defineProperty(tr,"__esModule",{value:!0}),tr.Device=tr.detectDevice=void 0;const cc=ir,dc=nr,lc=cr,pc=hr,uc=oc(gr),hc=oc(vr),mc=Yr,fc=Gi,gc=Xn,vc=vs,_c=js,bc=Js,yc=pa,wc=Da,Sc=Ha,Cc=oo,Rc=To,Tc=Vo,Pc=new dc.Logger("Device");function kc(){if("object"==typeof navigator&&"ReactNative"===navigator.product)return Pc.debug("detectDevice() | React-Native detected"),"undefined"==typeof RTCPeerConnection?void Pc.warn("detectDevice() | unsupported react-native-webrtc without RTCPeerConnection, forgot to call registerGlobals()?"):"undefined"!=typeof RTCRtpTransceiver?(Pc.debug("detectDevice() | ReactNative UnifiedPlan handler chosen"),"ReactNativeUnifiedPlan"):(Pc.debug("detectDevice() | ReactNative PlanB handler chosen"),"ReactNative");if("object"!=typeof navigator||"string"!=typeof navigator.userAgent)Pc.warn("detectDevice() | unknown device");else{const e=navigator.userAgent,t=new cc.UAParser(e);Pc.debug("detectDevice() | browser detected [ua:%s, parsed:%o]",e,t.getResult());const r=t.getBrowser(),i=r.name?.toLowerCase(),n=parseInt(r.major??"0"),s=t.getEngine(),a=s.name?.toLowerCase(),o=t.getOS(),c=o.name?.toLowerCase(),d=parseFloat(o.version??"0"),l=t.getDevice(),p=l.model?.toLowerCase(),u="ios"===c||"ipad"===p,h=i&&["chrome","chromium","mobile chrome","chrome webview","chrome headless"].includes(i),m=i&&["firefox","mobile firefox","mobile focus"].includes(i),f=i&&["safari","mobile safari"].includes(i),g=i&&["edge"].includes(i);if((h||g)&&!u&&n>=111)return"Chrome111";if(h&&!u&&n>=74||g&&!u&&n>=88)return"Chrome74";if(h&&!u&&n>=70)return"Chrome70";if(h&&!u&&n>=67)return"Chrome67";if(h&&!u&&n>=55)return"Chrome55";if(m&&!u&&n>=60)return"Firefox60";if(m&&u&&d>=14.3)return"Safari12";if(f&&n>=12&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if(f&&n>=11)return"Safari11";if(g&&!u&&n>=11&&n<=18)return"Edge11";if("webkit"===a&&u&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if("blink"===a){const t=e.match(/(?:(?:Chrome|Chromium))[ /](\w+)/i);if(t){const e=Number(t[1]);return e>=111?"Chrome111":e>=74?"Chrome74":e>=70?"Chrome70":e>=67?"Chrome67":"Chrome55"}return"Chrome111"}Pc.warn("detectDevice() | browser not supported [name:%s, version:%s]",i,n)}}tr.detectDevice=kc;tr.Device=class{constructor({handlerName:e,handlerFactory:t,Handler:r}={}){if(this._loaded=!1,this._observer=new lc.EnhancedEventEmitter,Pc.debug("constructor()"),r){if(Pc.warn("constructor() | Handler option is DEPRECATED, use handlerName or handlerFactory instead"),"string"!=typeof r)throw new TypeError("non string Handler option no longer supported, use handlerFactory instead");e=r}if(e&&t)throw new TypeError("just one of handlerName or handlerInterface can be given");if(t)this._handlerFactory=t;else{if(e)Pc.debug("constructor() | handler given: %s",e);else{if(!(e=kc()))throw new pc.UnsupportedError("device not supported");Pc.debug("constructor() | detected handler: %s",e)}switch(e){case"Chrome111":this._handlerFactory=fc.Chrome111.createFactory();break;case"Chrome74":this._handlerFactory=gc.Chrome74.createFactory();break;case"Chrome70":this._handlerFactory=vc.Chrome70.createFactory();break;case"Chrome67":this._handlerFactory=_c.Chrome67.createFactory();break;case"Chrome55":this._handlerFactory=bc.Chrome55.createFactory();break;case"Firefox60":this._handlerFactory=yc.Firefox60.createFactory();break;case"Safari12":this._handlerFactory=wc.Safari12.createFactory();break;case"Safari11":this._handlerFactory=Sc.Safari11.createFactory();break;case"Edge11":this._handlerFactory=Cc.Edge11.createFactory();break;case"ReactNativeUnifiedPlan":this._handlerFactory=Rc.ReactNativeUnifiedPlan.createFactory();break;case"ReactNative":this._handlerFactory=Tc.ReactNative.createFactory();break;default:throw new TypeError(`unknown handlerName "${e}"`)}}const i=this._handlerFactory();this._handlerName=i.name,i.close(),this._extendedRtpCapabilities=void 0,this._recvRtpCapabilities=void 0,this._canProduceByKind={audio:!1,video:!1},this._sctpCapabilities=void 0}get handlerName(){return this._handlerName}get loaded(){return this._loaded}get rtpCapabilities(){if(!this._loaded)throw new pc.InvalidStateError("not loaded");return this._recvRtpCapabilities}get sctpCapabilities(){if(!this._loaded)throw new pc.InvalidStateError("not loaded");return this._sctpCapabilities}get observer(){return this._observer}async load({routerRtpCapabilities:e}){let t;Pc.debug("load() [routerRtpCapabilities:%o]",e),e=uc.clone(e);try{if(this._loaded)throw new pc.InvalidStateError("already loaded");hc.validateRtpCapabilities(e),t=this._handlerFactory();const r=await t.getNativeRtpCapabilities();Pc.debug("load() | got native RTP capabilities:%o",r),hc.validateRtpCapabilities(r),this._extendedRtpCapabilities=hc.getExtendedRtpCapabilities(r,e),Pc.debug("load() | got extended RTP capabilities:%o",this._extendedRtpCapabilities),this._canProduceByKind.audio=hc.canSend("audio",this._extendedRtpCapabilities),this._canProduceByKind.video=hc.canSend("video",this._extendedRtpCapabilities),this._recvRtpCapabilities=hc.getRecvRtpCapabilities(this._extendedRtpCapabilities),hc.validateRtpCapabilities(this._recvRtpCapabilities),Pc.debug("load() | got receiving RTP capabilities:%o",this._recvRtpCapabilities),this._sctpCapabilities=await t.getNativeSctpCapabilities(),Pc.debug("load() | got native SCTP capabilities:%o",this._sctpCapabilities),hc.validateSctpCapabilities(this._sctpCapabilities),Pc.debug("load() succeeded"),this._loaded=!0,t.close()}catch(e){throw t&&t.close(),e}}canProduce(e){if(!this._loaded)throw new pc.InvalidStateError("not loaded");if("audio"!==e&&"video"!==e)throw new TypeError(`invalid kind "${e}"`);return this._canProduceByKind[e]}createSendTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d}){return Pc.debug("createSendTransport()"),this.createTransport({direction:"send",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}createRecvTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d}){return Pc.debug("createRecvTransport()"),this.createTransport({direction:"recv",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}createTransport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:l}){if(!this._loaded)throw new pc.InvalidStateError("not loaded");if("string"!=typeof t)throw new TypeError("missing id");if("object"!=typeof r)throw new TypeError("missing iceParameters");if(!Array.isArray(i))throw new TypeError("missing iceCandidates");if("object"!=typeof n)throw new TypeError("missing dtlsParameters");if(s&&"object"!=typeof s)throw new TypeError("wrong sctpParameters");if(l&&"object"!=typeof l)throw new TypeError("if given, appData must be an object");const p=new mc.Transport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:l,handlerFactory:this._handlerFactory,extendedRtpCapabilities:this._extendedRtpCapabilities,canProduceByKind:this._canProduceByKind});return this._observer.safeEmit("newtransport",p),p}};var Dc={},Oc={};Object.defineProperty(Oc,"__esModule",{value:!0});var Ec={};Object.defineProperty(Ec,"__esModule",{value:!0}),function(e){var t=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=Gt&&Gt.__exportStar||function(e,r){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(r,i)||t(r,e,i)};Object.defineProperty(e,"__esModule",{value:!0}),r(tr,e),r(Yr,e),r(ci,e),r(hi,e),r(_i,e),r(Ci,e),r(Oc,e),r(Ec,e),r(fn,e),r(hr,e)}(Dc),function(e){var t=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&t(i,e,n);return r(i,e),i},n=Gt&&Gt.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.debug=e.parseScalabilityMode=e.detectDevice=e.Device=e.version=e.types=void 0;const s=n(er);e.debug=s.default;const a=tr;Object.defineProperty(e,"Device",{enumerable:!0,get:function(){return a.Device}}),Object.defineProperty(e,"detectDevice",{enumerable:!0,get:function(){return a.detectDevice}});const o=i(Dc);e.types=o,e.version="3.7.3";var c=jn;Object.defineProperty(e,"parseScalabilityMode",{enumerable:!0,get:function(){return c.parse}})}(Qt);let Ic=!0,xc=!0;function jc(e,t,r){const i=e.match(t);return i&&i.length>=r&&parseInt(i[r],10)}function Mc(e,t,r){if(!e.RTCPeerConnection)return;const i=e.RTCPeerConnection.prototype,n=i.addEventListener;i.addEventListener=function(e,i){if(e!==t)return n.apply(this,arguments);const s=e=>{const t=r(e);t&&(i.handleEvent?i.handleEvent(t):i(t))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(i,s),n.apply(this,[e,s])};const s=i.removeEventListener;i.removeEventListener=function(e,r){if(e!==t||!this._eventMap||!this._eventMap[t])return s.apply(this,arguments);if(!this._eventMap[t].has(r))return s.apply(this,arguments);const i=this._eventMap[t].get(r);return this._eventMap[t].delete(r),0===this._eventMap[t].size&&delete this._eventMap[t],0===Object.keys(this._eventMap).length&&delete this._eventMap,s.apply(this,[e,i])},Object.defineProperty(i,"on"+t,{get(){return this["_on"+t]},set(e){this["_on"+t]&&(this.removeEventListener(t,this["_on"+t]),delete this["_on"+t]),e&&this.addEventListener(t,this["_on"+t]=e)},enumerable:!0,configurable:!0})}function Lc(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(Ic=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function Ac(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(xc=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function Nc(){if("object"==typeof window){if(Ic)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function Bc(e,t){xc&&console.warn(e+" is deprecated, please use "+t+" instead.")}function Fc(e){return"[object Object]"===Object.prototype.toString.call(e)}function Uc(e){return Fc(e)?Object.keys(e).reduce((function(t,r){const i=Fc(e[r]),n=i?Uc(e[r]):e[r],s=i&&!Object.keys(n).length;return void 0===n||s?t:Object.assign(t,{[r]:n})}),{}):e}function $c(e,t,r){t&&!r.has(t.id)&&(r.set(t.id,t),Object.keys(t).forEach((i=>{i.endsWith("Id")?$c(e,e.get(t[i]),r):i.endsWith("Ids")&&t[i].forEach((t=>{$c(e,e.get(t),r)}))})))}function zc(e,t,r){const i=r?"outbound-rtp":"inbound-rtp",n=new Map;if(null===t)return n;const s=[];return e.forEach((e=>{"track"===e.type&&e.trackIdentifier===t.id&&s.push(e)})),s.forEach((t=>{e.forEach((r=>{r.type===i&&r.trackId===t.id&&$c(e,r,n)}))})),n}const Vc=Nc;function qc(e,t){const r=e&&e.navigator;if(!r.mediaDevices)return;const i=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;const t={};return Object.keys(e).forEach((r=>{if("require"===r||"advanced"===r||"mediaSource"===r)return;const i="object"==typeof e[r]?e[r]:{ideal:e[r]};void 0!==i.exact&&"number"==typeof i.exact&&(i.min=i.max=i.exact);const n=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==i.ideal){t.optional=t.optional||[];let e={};"number"==typeof i.ideal?(e[n("min",r)]=i.ideal,t.optional.push(e),e={},e[n("max",r)]=i.ideal,t.optional.push(e)):(e[n("",r)]=i.ideal,t.optional.push(e))}void 0!==i.exact&&"number"!=typeof i.exact?(t.mandatory=t.mandatory||{},t.mandatory[n("",r)]=i.exact):["min","max"].forEach((e=>{void 0!==i[e]&&(t.mandatory=t.mandatory||{},t.mandatory[n(e,r)]=i[e])}))})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},n=function(e,n){if(t.version>=61)return n(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){const t=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])};t((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),t(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=i(e.audio)}if(e&&"object"==typeof e.video){let s=e.video.facingMode;s=s&&("object"==typeof s?s:{ideal:s});const a=t.version<66;if(s&&("user"===s.exact||"environment"===s.exact||"user"===s.ideal||"environment"===s.ideal)&&(!r.mediaDevices.getSupportedConstraints||!r.mediaDevices.getSupportedConstraints().facingMode||a)){let t;if(delete e.video.facingMode,"environment"===s.exact||"environment"===s.ideal?t=["back","rear"]:"user"!==s.exact&&"user"!==s.ideal||(t=["front"]),t)return r.mediaDevices.enumerateDevices().then((r=>{let a=(r=r.filter((e=>"videoinput"===e.kind))).find((e=>t.some((t=>e.label.toLowerCase().includes(t)))));return!a&&r.length&&t.includes("back")&&(a=r[r.length-1]),a&&(e.video.deviceId=s.exact?{exact:a.deviceId}:{ideal:a.deviceId}),e.video=i(e.video),Vc("chrome: "+JSON.stringify(e)),n(e)}))}e.video=i(e.video)}return Vc("chrome: "+JSON.stringify(e)),n(e)},s=function(e){return t.version>=64?e:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[e.name]||e.name,message:e.message,constraint:e.constraint||e.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}};if(r.getUserMedia=function(e,t,i){n(e,(e=>{r.webkitGetUserMedia(e,t,(e=>{i&&i(s(e))}))}))}.bind(r),r.mediaDevices.getUserMedia){const e=r.mediaDevices.getUserMedia.bind(r.mediaDevices);r.mediaDevices.getUserMedia=function(t){return n(t,(t=>e(t).then((e=>{if(t.audio&&!e.getAudioTracks().length||t.video&&!e.getVideoTracks().length)throw e.getTracks().forEach((e=>{e.stop()})),new DOMException("","NotFoundError");return e}),(e=>Promise.reject(s(e))))))}}}function Gc(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function Hc(e){if("object"==typeof e&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)},enumerable:!0,configurable:!0});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener("addtrack",(r=>{let i;i=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.track.id)):{track:r.track};const n=new Event("track");n.track=r.track,n.receiver=i,n.transceiver={receiver:i},n.streams=[t.stream],this.dispatchEvent(n)})),t.stream.getTracks().forEach((r=>{let i;i=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.id)):{track:r};const n=new Event("track");n.track=r,n.receiver=i,n.transceiver={receiver:i},n.streams=[t.stream],this.dispatchEvent(n)}))},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else Mc(e,"track",(e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e)))}function Wc(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){const t=function(e,t){return{track:t,get dtmf(){return void 0===this._dtmf&&("audio"===t.kind?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const r=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,i){let n=r.apply(this,arguments);return n||(n=t(this,e),this._senders.push(n)),n};const i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){i.apply(this,arguments);const t=this._senders.indexOf(e);-1!==t&&this._senders.splice(t,1)}}const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._senders=this._senders||[],r.apply(this,[e]),e.getTracks().forEach((e=>{this._senders.push(t(this,e))}))};const i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],i.apply(this,[e]),e.getTracks().forEach((e=>{const t=this._senders.find((t=>t.track===e));t&&this._senders.splice(this._senders.indexOf(t),1)}))}}else if("object"==typeof e&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function Kc(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,r,i]=arguments;if(arguments.length>0&&"function"==typeof e)return t.apply(this,arguments);if(0===t.length&&(0===arguments.length||"function"!=typeof e))return t.apply(this,[]);const n=function(e){const t={};return e.result().forEach((e=>{const r={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach((t=>{r[t]=e.stat(t)})),t[r.id]=r})),t},s=function(e){return new Map(Object.keys(e).map((t=>[t,e[t]])))};if(arguments.length>=2){const i=function(e){r(s(n(e)))};return t.apply(this,[i,e])}return new Promise(((e,r)=>{t.apply(this,[function(t){e(s(n(t)))},r])})).then(r,i)}}function Jc(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver))return;if(!("getStats"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>zc(t,e.track,!0)))}}if(!("getStats"in e.RTCRtpReceiver.prototype)){const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),Mc(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>zc(t,e.track,!1)))}}if(!("getStats"in e.RTCRtpSender.prototype)||!("getStats"in e.RTCRtpReceiver.prototype))return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){const e=arguments[0];let t,r,i;return this.getSenders().forEach((r=>{r.track===e&&(t?i=!0:t=r)})),this.getReceivers().forEach((t=>(t.track===e&&(r?i=!0:r=t),t.track===e))),i||t&&r?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):t?t.getStats():r?r.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function Qc(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map((e=>this._shimmedLocalStreams[e][0]))};const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){if(!r)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const i=t.apply(this,arguments);return this._shimmedLocalStreams[r.id]?-1===this._shimmedLocalStreams[r.id].indexOf(i)&&this._shimmedLocalStreams[r.id].push(i):this._shimmedLocalStreams[r.id]=[r,i],i};const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")}));const t=this.getSenders();r.apply(this,arguments);const i=this.getSenders().filter((e=>-1===t.indexOf(e)));this._shimmedLocalStreams[e.id]=[e].concat(i)};const i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],i.apply(this,arguments)};const n=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach((t=>{const r=this._shimmedLocalStreams[t].indexOf(e);-1!==r&&this._shimmedLocalStreams[t].splice(r,1),1===this._shimmedLocalStreams[t].length&&delete this._shimmedLocalStreams[t]})),n.apply(this,arguments)}}function Zc(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return Qc(e);const r=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){const e=r.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map((e=>this._reverseStreams[e.id]))};const i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},t.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")})),!this._reverseStreams[t.id]){const r=new e.MediaStream(t.getTracks());this._streams[t.id]=r,this._reverseStreams[r.id]=t,t=r}i.apply(this,[t])};const n=e.RTCPeerConnection.prototype.removeStream;function s(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const i=e._reverseStreams[t],n=e._streams[i.id];r=r.replace(new RegExp(n.id,"g"),i.id)})),new RTCSessionDescription({type:t.type,sdp:r})}e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},n.apply(this,[this._streams[e.id]||e]),delete this._reverseStreams[this._streams[e.id]?this._streams[e.id].id:e.id],delete this._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,r){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const i=[].slice.call(arguments,1);if(1!==i.length||!i[0].getTracks().find((e=>e===t)))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find((e=>e.track===t)))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const n=this._streams[r.id];if(n)n.addTrack(t),Promise.resolve().then((()=>{this.dispatchEvent(new Event("negotiationneeded"))}));else{const i=new e.MediaStream([t]);this._streams[r.id]=i,this._reverseStreams[i.id]=r,this.addStream(i)}return this.getSenders().find((e=>e.track===t))},["createOffer","createAnswer"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){const e=arguments;return arguments.length&&"function"==typeof arguments[0]?r.apply(this,[t=>{const r=s(this,t);e[0].apply(null,[r])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):r.apply(this,arguments).then((e=>s(this,e)))}};e.RTCPeerConnection.prototype[t]=i[t]}));const a=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=function(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const i=e._reverseStreams[t],n=e._streams[i.id];r=r.replace(new RegExp(i.id,"g"),n.id)})),new RTCSessionDescription({type:t.type,sdp:r})}(this,arguments[0]),a.apply(this,arguments)):a.apply(this,arguments)};const o=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){const e=o.get.apply(this);return""===e.type?e:s(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!e._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(e._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");let t;this._streams=this._streams||{},Object.keys(this._streams).forEach((r=>{this._streams[r].getTracks().find((t=>e.track===t))&&(t=this._streams[r])})),t&&(1===t.getTracks().length?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event("negotiationneeded")))}}function Yc(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=i[t]}))}function Xc(e,t){Mc(e,"negotiationneeded",(e=>{const r=e.target;if(!(t.version<72||r.getConfiguration&&"plan-b"===r.getConfiguration().sdpSemantics)||"stable"===r.signalingState)return e}))}var ed=Object.freeze({__proto__:null,fixNegotiationNeeded:Xc,shimAddTrackRemoveTrack:Zc,shimAddTrackRemoveTrackWithNative:Qc,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&("function"==typeof t?e.navigator.mediaDevices.getDisplayMedia=function(r){return t(r).then((t=>{const i=r.video&&r.video.width,n=r.video&&r.video.height,s=r.video&&r.video.frameRate;return r.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:s||3}},i&&(r.video.mandatory.maxWidth=i),n&&(r.video.mandatory.maxHeight=n),e.navigator.mediaDevices.getUserMedia(r)}))}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))},shimGetSendersWithDtmf:Wc,shimGetStats:Kc,shimGetUserMedia:qc,shimMediaStream:Gc,shimOnTrack:Hc,shimPeerConnection:Yc,shimSenderReceiverGetStats:Jc});function td(e,t){const r=e&&e.navigator,i=e&&e.MediaStreamTrack;if(r.getUserMedia=function(e,t,i){Bc("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),r.mediaDevices.getUserMedia(e).then(t,i)},!(t.version>55&&"autoGainControl"in r.mediaDevices.getSupportedConstraints())){const e=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])},t=r.mediaDevices.getUserMedia.bind(r.mediaDevices);if(r.mediaDevices.getUserMedia=function(r){return"object"==typeof r&&"object"==typeof r.audio&&(r=JSON.parse(JSON.stringify(r)),e(r.audio,"autoGainControl","mozAutoGainControl"),e(r.audio,"noiseSuppression","mozNoiseSuppression")),t(r)},i&&i.prototype.getSettings){const t=i.prototype.getSettings;i.prototype.getSettings=function(){const r=t.apply(this,arguments);return e(r,"mozAutoGainControl","autoGainControl"),e(r,"mozNoiseSuppression","noiseSuppression"),r}}if(i&&i.prototype.applyConstraints){const t=i.prototype.applyConstraints;i.prototype.applyConstraints=function(r){return"audio"===this.kind&&"object"==typeof r&&(r=JSON.parse(JSON.stringify(r)),e(r,"autoGainControl","mozAutoGainControl"),e(r,"noiseSuppression","mozNoiseSuppression")),t.apply(this,[r])}}}}function rd(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function id(e,t){if("object"!=typeof e||!e.RTCPeerConnection&&!e.mozRTCPeerConnection)return;!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=i[t]}));const r={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},i=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,n,s]=arguments;return i.apply(this,[e||null]).then((e=>{if(t.version<53&&!n)try{e.forEach((e=>{e.type=r[e.type]||e.type}))}catch(t){if("TypeError"!==t.name)throw t;e.forEach(((t,i)=>{e.set(i,Object.assign({},t,{type:r[t.type]||t.type}))}))}return e})).then(n,s)}}function nd(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)return;const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function sd(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype)return;const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),Mc(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function ad(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){Bc("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function od(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function cd(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let e=arguments[1]&&arguments[1].sendEncodings;void 0===e&&(e=[]),e=[...e];const r=e.length>0;r&&e.forEach((e=>{if("rid"in e){if(!/^[a-z0-9]{0,16}$/i.test(e.rid))throw new TypeError("Invalid RID value provided.")}if("scaleResolutionDownBy"in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in e&&!(parseFloat(e.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")}));const i=t.apply(this,arguments);if(r){const{sender:t}=i,r=t.getParameters();(!("encodings"in r)||1===r.encodings.length&&0===Object.keys(r.encodings[0]).length)&&(r.encodings=e,t.sendEncodings=e,this.setParametersPromises.push(t.setParameters(r).then((()=>{delete t.sendEncodings})).catch((()=>{delete t.sendEncodings}))))}return i})}function dd(e){if("object"!=typeof e||!e.RTCRtpSender)return;const t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){const e=t.apply(this,arguments);return"encodings"in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function ld(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}function pd(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createAnswer;e.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}var ud=Object.freeze({__proto__:null,shimAddTransceiver:cd,shimCreateAnswer:pd,shimCreateOffer:ld,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(r){if(!r||!r.video){const e=new DOMException("getDisplayMedia without video constraints is undefined");return e.name="NotFoundError",e.code=8,Promise.reject(e)}return!0===r.video?r.video={mediaSource:t}:r.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(r)})},shimGetParameters:dd,shimGetUserMedia:td,shimOnTrack:rd,shimPeerConnection:id,shimRTCDataChannel:od,shimReceiverGetStats:sd,shimRemoveStream:ad,shimSenderGetStats:nd});function hd(e){if("object"==typeof e&&e.RTCPeerConnection){if("getLocalStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in e.RTCPeerConnection.prototype)){const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||(this._localStreams=[]),this._localStreams.includes(e)||this._localStreams.push(e),e.getAudioTracks().forEach((r=>t.call(this,r,e))),e.getVideoTracks().forEach((r=>t.call(this,r,e)))},e.RTCPeerConnection.prototype.addTrack=function(e,...r){return r&&r.forEach((e=>{this._localStreams?this._localStreams.includes(e)||this._localStreams.push(e):this._localStreams=[e]})),t.apply(this,arguments)}}"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);const t=this._localStreams.indexOf(e);if(-1===t)return;this._localStreams.splice(t,1);const r=e.getTracks();this.getSenders().forEach((e=>{r.includes(e.track)&&this.removeTrack(e)}))})}}function md(e){if("object"==typeof e&&e.RTCPeerConnection&&("getRemoteStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(e){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=e),this.addEventListener("track",this._onaddstreampoly=e=>{e.streams.forEach((e=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(e))return;this._remoteStreams.push(e);const t=new Event("addstream");t.stream=e,this.dispatchEvent(t)}))})}});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){const e=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(t){t.streams.forEach((t=>{if(e._remoteStreams||(e._remoteStreams=[]),e._remoteStreams.indexOf(t)>=0)return;e._remoteStreams.push(t);const r=new Event("addstream");r.stream=t,e.dispatchEvent(r)}))}),t.apply(e,arguments)}}}function fd(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype,r=t.createOffer,i=t.createAnswer,n=t.setLocalDescription,s=t.setRemoteDescription,a=t.addIceCandidate;t.createOffer=function(e,t){const i=arguments.length>=2?arguments[2]:arguments[0],n=r.apply(this,[i]);return t?(n.then(e,t),Promise.resolve()):n},t.createAnswer=function(e,t){const r=arguments.length>=2?arguments[2]:arguments[0],n=i.apply(this,[r]);return t?(n.then(e,t),Promise.resolve()):n};let o=function(e,t,r){const i=n.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i};t.setLocalDescription=o,o=function(e,t,r){const i=s.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.setRemoteDescription=o,o=function(e,t,r){const i=a.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.addIceCandidate=o}function gd(e){const t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){const e=t.mediaDevices,r=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>r(vd(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,r,i){t.mediaDevices.getUserMedia(e).then(r,i)}.bind(t))}function vd(e){return e&&void 0!==e.video?Object.assign({},e,{video:Uc(e.video)}):e}function _d(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,r){if(e&&e.iceServers){const t=[];for(let r=0;r<e.iceServers.length;r++){let i=e.iceServers[r];void 0===i.urls&&i.url?(Bc("RTCIceServer.url","RTCIceServer.urls"),i=JSON.parse(JSON.stringify(i)),i.urls=i.url,delete i.url,t.push(i)):t.push(e.iceServers[r])}e.iceServers=t}return new t(e,r)},e.RTCPeerConnection.prototype=t.prototype,"generateCertificate"in t&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:()=>t.generateCertificate})}function bd(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function yd(e){const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);const t=this.getTransceivers().find((e=>"audio"===e.receiver.track.kind));!1===e.offerToReceiveAudio&&t?"sendrecv"===t.direction?t.setDirection?t.setDirection("sendonly"):t.direction="sendonly":"recvonly"===t.direction&&(t.setDirection?t.setDirection("inactive"):t.direction="inactive"):!0!==e.offerToReceiveAudio||t||this.addTransceiver("audio",{direction:"recvonly"}),void 0!==e.offerToReceiveVideo&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);const r=this.getTransceivers().find((e=>"video"===e.receiver.track.kind));!1===e.offerToReceiveVideo&&r?"sendrecv"===r.direction?r.setDirection?r.setDirection("sendonly"):r.direction="sendonly":"recvonly"===r.direction&&(r.setDirection?r.setDirection("inactive"):r.direction="inactive"):!0!==e.offerToReceiveVideo||r||this.addTransceiver("video",{direction:"recvonly"})}return t.apply(this,arguments)}}function wd(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var Sd=Object.freeze({__proto__:null,shimAudioContext:wd,shimCallbacksAPI:fd,shimConstraints:vd,shimCreateOfferLegacy:yd,shimGetUserMedia:gd,shimLocalStreamsAPI:hd,shimRTCIceServerUrls:_d,shimRemoteStreamsAPI:md,shimTrackEventTransceiver:bd}),Cd={exports:{}};!function(e){const t={generateIdentifier:function(){return Math.random().toString(36).substring(2,12)}};t.localCName=t.generateIdentifier(),t.splitLines=function(e){return e.trim().split("\n").map((e=>e.trim()))},t.splitSections=function(e){return e.split("\nm=").map(((e,t)=>(t>0?"m="+e:e).trim()+"\r\n"))},t.getDescription=function(e){const r=t.splitSections(e);return r&&r[0]},t.getMediaSections=function(e){const r=t.splitSections(e);return r.shift(),r},t.matchPrefix=function(e,r){return t.splitLines(e).filter((e=>0===e.indexOf(r)))},t.parseCandidate=function(e){let t;t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" ");const r={foundation:t[0],component:{1:"rtp",2:"rtcp"}[t[1]]||t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]};for(let e=8;e<t.length;e+=2)switch(t[e]){case"raddr":r.relatedAddress=t[e+1];break;case"rport":r.relatedPort=parseInt(t[e+1],10);break;case"tcptype":r.tcpType=t[e+1];break;case"ufrag":r.ufrag=t[e+1],r.usernameFragment=t[e+1];break;default:void 0===r[t[e]]&&(r[t[e]]=t[e+1])}return r},t.writeCandidate=function(e){const t=[];t.push(e.foundation);const r=e.component;"rtp"===r?t.push(1):"rtcp"===r?t.push(2):t.push(r),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);const i=e.type;return t.push("typ"),t.push(i),"host"!==i&&e.relatedAddress&&e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&"tcp"===e.protocol.toLowerCase()&&(t.push("tcptype"),t.push(e.tcpType)),(e.usernameFragment||e.ufrag)&&(t.push("ufrag"),t.push(e.usernameFragment||e.ufrag)),"candidate:"+t.join(" ")},t.parseIceOptions=function(e){return e.substring(14).split(" ")},t.parseRtpMap=function(e){let t=e.substring(9).split(" ");const r={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),r.name=t[0],r.clockRate=parseInt(t[1],10),r.channels=3===t.length?parseInt(t[2],10):1,r.numChannels=r.channels,r},t.writeRtpMap=function(e){let t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);const r=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==r?"/"+r:"")+"\r\n"},t.parseExtmap=function(e){const t=e.substring(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1],attributes:t.slice(2).join(" ")}},t.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+(e.attributes?" "+e.attributes:"")+"\r\n"},t.parseFmtp=function(e){const t={};let r;const i=e.substring(e.indexOf(" ")+1).split(";");for(let e=0;e<i.length;e++)r=i[e].trim().split("="),t[r[0].trim()]=r[1];return t},t.writeFmtp=function(e){let t="",r=e.payloadType;if(void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){const i=[];Object.keys(e.parameters).forEach((t=>{void 0!==e.parameters[t]?i.push(t+"="+e.parameters[t]):i.push(t)})),t+="a=fmtp:"+r+" "+i.join(";")+"\r\n"}return t},t.parseRtcpFb=function(e){const t=e.substring(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},t.writeRtcpFb=function(e){let t="",r=e.payloadType;return void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach((e=>{t+="a=rtcp-fb:"+r+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"})),t},t.parseSsrcMedia=function(e){const t=e.indexOf(" "),r={ssrc:parseInt(e.substring(7,t),10)},i=e.indexOf(":",t);return i>-1?(r.attribute=e.substring(t+1,i),r.value=e.substring(i+1)):r.attribute=e.substring(t+1),r},t.parseSsrcGroup=function(e){const t=e.substring(13).split(" ");return{semantics:t.shift(),ssrcs:t.map((e=>parseInt(e,10)))}},t.getMid=function(e){const r=t.matchPrefix(e,"a=mid:")[0];if(r)return r.substring(6)},t.parseFingerprint=function(e){const t=e.substring(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1].toUpperCase()}},t.getDtlsParameters=function(e,r){return{role:"auto",fingerprints:t.matchPrefix(e+r,"a=fingerprint:").map(t.parseFingerprint)}},t.writeDtlsParameters=function(e,t){let r="a=setup:"+t+"\r\n";return e.fingerprints.forEach((e=>{r+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),r},t.parseCryptoLine=function(e){const t=e.substring(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},t.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?t.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},t.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;const t=e.substring(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}},t.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},t.getCryptoParameters=function(e,r){return t.matchPrefix(e+r,"a=crypto:").map(t.parseCryptoLine)},t.getIceParameters=function(e,r){const i=t.matchPrefix(e+r,"a=ice-ufrag:")[0],n=t.matchPrefix(e+r,"a=ice-pwd:")[0];return i&&n?{usernameFragment:i.substring(12),password:n.substring(10)}:null},t.writeIceParameters=function(e){let t="a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n";return e.iceLite&&(t+="a=ice-lite\r\n"),t},t.parseRtpParameters=function(e){const r={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},i=t.splitLines(e)[0].split(" ");r.profile=i[2];for(let n=3;n<i.length;n++){const s=i[n],a=t.matchPrefix(e,"a=rtpmap:"+s+" ")[0];if(a){const i=t.parseRtpMap(a),n=t.matchPrefix(e,"a=fmtp:"+s+" ");switch(i.parameters=n.length?t.parseFmtp(n[0]):{},i.rtcpFeedback=t.matchPrefix(e,"a=rtcp-fb:"+s+" ").map(t.parseRtcpFb),r.codecs.push(i),i.name.toUpperCase()){case"RED":case"ULPFEC":r.fecMechanisms.push(i.name.toUpperCase())}}}t.matchPrefix(e,"a=extmap:").forEach((e=>{r.headerExtensions.push(t.parseExtmap(e))}));const n=t.matchPrefix(e,"a=rtcp-fb:* ").map(t.parseRtcpFb);return r.codecs.forEach((e=>{n.forEach((t=>{e.rtcpFeedback.find((e=>e.type===t.type&&e.parameter===t.parameter))||e.rtcpFeedback.push(t)}))})),r},t.writeRtpDescription=function(e,r){let i="";i+="m="+e+" ",i+=r.codecs.length>0?"9":"0",i+=" "+(r.profile||"UDP/TLS/RTP/SAVPF")+" ",i+=r.codecs.map((e=>void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType)).join(" ")+"\r\n",i+="c=IN IP4 0.0.0.0\r\n",i+="a=rtcp:9 IN IP4 0.0.0.0\r\n",r.codecs.forEach((e=>{i+=t.writeRtpMap(e),i+=t.writeFmtp(e),i+=t.writeRtcpFb(e)}));let n=0;return r.codecs.forEach((e=>{e.maxptime>n&&(n=e.maxptime)})),n>0&&(i+="a=maxptime:"+n+"\r\n"),r.headerExtensions&&r.headerExtensions.forEach((e=>{i+=t.writeExtmap(e)})),i},t.parseRtpEncodingParameters=function(e){const r=[],i=t.parseRtpParameters(e),n=-1!==i.fecMechanisms.indexOf("RED"),s=-1!==i.fecMechanisms.indexOf("ULPFEC"),a=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute)),o=a.length>0&&a[0].ssrc;let c;const d=t.matchPrefix(e,"a=ssrc-group:FID").map((e=>e.substring(17).split(" ").map((e=>parseInt(e,10)))));d.length>0&&d[0].length>1&&d[0][0]===o&&(c=d[0][1]),i.codecs.forEach((e=>{if("RTX"===e.name.toUpperCase()&&e.parameters.apt){let t={ssrc:o,codecPayloadType:parseInt(e.parameters.apt,10)};o&&c&&(t.rtx={ssrc:c}),r.push(t),n&&(t=JSON.parse(JSON.stringify(t)),t.fec={ssrc:o,mechanism:s?"red+ulpfec":"red"},r.push(t))}})),0===r.length&&o&&r.push({ssrc:o});let l=t.matchPrefix(e,"b=");return l.length&&(l=0===l[0].indexOf("b=TIAS:")?parseInt(l[0].substring(7),10):0===l[0].indexOf("b=AS:")?1e3*parseInt(l[0].substring(5),10)*.95-16e3:void 0,r.forEach((e=>{e.maxBitrate=l}))),r},t.parseRtcpParameters=function(e){const r={},i=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute))[0];i&&(r.cname=i.value,r.ssrc=i.ssrc);const n=t.matchPrefix(e,"a=rtcp-rsize");r.reducedSize=n.length>0,r.compound=0===n.length;const s=t.matchPrefix(e,"a=rtcp-mux");return r.mux=s.length>0,r},t.writeRtcpParameters=function(e){let t="";return e.reducedSize&&(t+="a=rtcp-rsize\r\n"),e.mux&&(t+="a=rtcp-mux\r\n"),void 0!==e.ssrc&&e.cname&&(t+="a=ssrc:"+e.ssrc+" cname:"+e.cname+"\r\n"),t},t.parseMsid=function(e){let r;const i=t.matchPrefix(e,"a=msid:");if(1===i.length)return r=i[0].substring(7).split(" "),{stream:r[0],track:r[1]};const n=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"msid"===e.attribute));return n.length>0?(r=n[0].value.split(" "),{stream:r[0],track:r[1]}):void 0},t.parseSctpDescription=function(e){const r=t.parseMLine(e),i=t.matchPrefix(e,"a=max-message-size:");let n;i.length>0&&(n=parseInt(i[0].substring(19),10)),isNaN(n)&&(n=65536);const s=t.matchPrefix(e,"a=sctp-port:");if(s.length>0)return{port:parseInt(s[0].substring(12),10),protocol:r.fmt,maxMessageSize:n};const a=t.matchPrefix(e,"a=sctpmap:");if(a.length>0){const e=a[0].substring(10).split(" ");return{port:parseInt(e[0],10),protocol:e[1],maxMessageSize:n}}},t.writeSctpDescription=function(e,t){let r=[];return r="DTLS/SCTP"!==e.protocol?["m="+e.kind+" 9 "+e.protocol+" "+t.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+t.port+"\r\n"]:["m="+e.kind+" 9 "+e.protocol+" "+t.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+t.port+" "+t.protocol+" 65535\r\n"],void 0!==t.maxMessageSize&&r.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),r.join("")},t.generateSessionId=function(){return Math.random().toString().substr(2,22)},t.writeSessionBoilerplate=function(e,r,i){let n;const s=void 0!==r?r:2;n=e||t.generateSessionId();return"v=0\r\no="+(i||"thisisadapterortc")+" "+n+" "+s+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.getDirection=function(e,r){const i=t.splitLines(e);for(let e=0;e<i.length;e++)switch(i[e]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return i[e].substring(2)}return r?t.getDirection(r):"sendrecv"},t.getKind=function(e){return t.splitLines(e)[0].split(" ")[0].substring(2)},t.isRejected=function(e){return"0"===e.split(" ",2)[1]},t.parseMLine=function(e){const r=t.splitLines(e)[0].substring(2).split(" ");return{kind:r[0],port:parseInt(r[1],10),protocol:r[2],fmt:r.slice(3).join(" ")}},t.parseOLine=function(e){const r=t.matchPrefix(e,"o=")[0].substring(2).split(" ");return{username:r[0],sessionId:r[1],sessionVersion:parseInt(r[2],10),netType:r[3],addressType:r[4],address:r[5]}},t.isValidSDP=function(e){if("string"!=typeof e||0===e.length)return!1;const r=t.splitLines(e);for(let e=0;e<r.length;e++)if(r[e].length<2||"="!==r[e].charAt(1))return!1;return!0},e.exports=t}(Cd);var Rd=Cd.exports,Td=Ht(Rd),Pd=i({__proto__:null,default:Td},[Rd]);function kd(e){if(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype)return;const t=e.RTCIceCandidate;e.RTCIceCandidate=function(e){if("object"==typeof e&&e.candidate&&0===e.candidate.indexOf("a=")&&((e=JSON.parse(JSON.stringify(e))).candidate=e.candidate.substring(2)),e.candidate&&e.candidate.length){const r=new t(e),i=Td.parseCandidate(e.candidate);for(const e in i)e in r||Object.defineProperty(r,e,{value:i[e]});return r.toJSON=function(){return{candidate:r.candidate,sdpMid:r.sdpMid,sdpMLineIndex:r.sdpMLineIndex,usernameFragment:r.usernameFragment}},r}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,Mc(e,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function Dd(e){!e.RTCIceCandidate||e.RTCIceCandidate&&"relayProtocol"in e.RTCIceCandidate.prototype||Mc(e,"icecandidate",(e=>{if(e.candidate){const t=Td.parseCandidate(e.candidate.candidate);"relay"===t.type&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[t.priority>>24])}return e}))}function Od(e,t){if(!e.RTCPeerConnection)return;"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get(){return void 0===this._sctp?null:this._sctp}});const r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,"chrome"===t.browser&&t.version>=76){const{sdpSemantics:e}=this.getConfiguration();"plan-b"===e&&Object.defineProperty(this,"sctp",{get(){return void 0===this._sctp?null:this._sctp},enumerable:!0,configurable:!0})}if(function(e){if(!e||!e.sdp)return!1;const t=Td.splitSections(e.sdp);return t.shift(),t.some((e=>{const t=Td.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")}))}(arguments[0])){const e=function(e){const t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return-1;const r=parseInt(t[1],10);return r!=r?-1:r}(arguments[0]),r=function(e){let r=65536;return"firefox"===t.browser&&(r=t.version<57?-1===e?16384:2147483637:t.version<60?57===t.version?65535:65536:2147483637),r}(e),i=function(e,r){let i=65536;"firefox"===t.browser&&57===t.version&&(i=65535);const n=Td.matchPrefix(e.sdp,"a=max-message-size:");return n.length>0?i=parseInt(n[0].substring(19),10):"firefox"===t.browser&&-1!==r&&(i=2147483637),i}(arguments[0],e);let n;n=0===r&&0===i?Number.POSITIVE_INFINITY:0===r||0===i?Math.max(r,i):Math.min(r,i);const s={};Object.defineProperty(s,"maxMessageSize",{get:()=>n}),this._sctp=s}return r.apply(this,arguments)}}function Ed(e){if(!e.RTCPeerConnection||!("createDataChannel"in e.RTCPeerConnection.prototype))return;function t(e,t){const r=e.send;e.send=function(){const i=arguments[0],n=i.length||i.size||i.byteLength;if("open"===e.readyState&&t.sctp&&n>t.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return r.apply(e,arguments)}}const r=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){const e=r.apply(this,arguments);return t(e,this),e},Mc(e,"datachannel",(e=>(t(e.channel,e.target),e)))}function Id(e){if(!e.RTCPeerConnection||"connectionState"in e.RTCPeerConnection.prototype)return;const t=e.RTCPeerConnection.prototype;Object.defineProperty(t,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(e){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),e&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=e)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach((e=>{const r=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=e=>{const t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;const r=new Event("connectionstatechange",e);t.dispatchEvent(r)}return e},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),r.apply(this,arguments)}}))}function xd(e,t){if(!e.RTCPeerConnection)return;if("chrome"===t.browser&&t.version>=71)return;if("safari"===t.browser&&t.version>=605)return;const r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&-1!==t.sdp.indexOf("\na=extmap-allow-mixed")){const r=t.sdp.split("\n").filter((e=>"a=extmap-allow-mixed"!==e.trim())).join("\n");e.RTCSessionDescription&&t instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:t.type,sdp:r}):t.sdp=r}return r.apply(this,arguments)}}function jd(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const r=e.RTCPeerConnection.prototype.addIceCandidate;r&&0!==r.length&&(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?("chrome"===t.browser&&t.version<78||"firefox"===t.browser&&t.version<68||"safari"===t.browser)&&arguments[0]&&""===arguments[0].candidate?Promise.resolve():r.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}function Md(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const r=e.RTCPeerConnection.prototype.setLocalDescription;r&&0!==r.length&&(e.RTCPeerConnection.prototype.setLocalDescription=function(){let e=arguments[0]||{};if("object"!=typeof e||e.type&&e.sdp)return r.apply(this,arguments);if(e={type:e.type,sdp:e.sdp},!e.type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":e.type="offer";break;default:e.type="answer"}if(e.sdp||"offer"!==e.type&&"answer"!==e.type)return r.apply(this,[e]);return("offer"===e.type?this.createOffer:this.createAnswer).apply(this).then((e=>r.apply(this,[e])))})}var Ld=Object.freeze({__proto__:null,removeExtmapAllowMixed:xd,shimAddIceCandidateNullOrEmpty:jd,shimConnectionState:Id,shimMaxMessageSize:Od,shimParameterlessSetLocalDescription:Md,shimRTCIceCandidate:kd,shimRTCIceCandidateRelayProtocol:Dd,shimSendThrowTypeError:Ed});const Ad=function({window:e}={},t={shimChrome:!0,shimFirefox:!0,shimSafari:!0}){const r=Nc,i=function(e){const t={browser:null,version:null};if(void 0===e||!e.navigator||!e.navigator.userAgent)return t.browser="Not a browser.",t;const{navigator:r}=e;if(r.mozGetUserMedia)t.browser="firefox",t.version=jc(r.userAgent,/Firefox\/(\d+)\./,1);else if(r.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection)t.browser="chrome",t.version=jc(r.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else{if(!e.RTCPeerConnection||!r.userAgent.match(/AppleWebKit\/(\d+)\./))return t.browser="Not a supported browser.",t;t.browser="safari",t.version=jc(r.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),n={browserDetails:i,commonShim:Ld,extractVersion:jc,disableLog:Lc,disableWarnings:Ac,sdp:Pd};switch(i.browser){case"chrome":if(!ed||!Yc||!t.shimChrome)return r("Chrome shim is not included in this adapter release."),n;if(null===i.version)return r("Chrome shim can not determine version, not shimming."),n;r("adapter.js shimming chrome."),n.browserShim=ed,jd(e,i),Md(e),qc(e,i),Gc(e),Yc(e,i),Hc(e),Zc(e,i),Wc(e),Kc(e),Jc(e),Xc(e,i),kd(e),Dd(e),Id(e),Od(e,i),Ed(e),xd(e,i);break;case"firefox":if(!ud||!id||!t.shimFirefox)return r("Firefox shim is not included in this adapter release."),n;r("adapter.js shimming firefox."),n.browserShim=ud,jd(e,i),Md(e),td(e,i),id(e,i),rd(e),ad(e),nd(e),sd(e),od(e),cd(e),dd(e),ld(e),pd(e),kd(e),Id(e),Od(e,i),Ed(e);break;case"safari":if(!Sd||!t.shimSafari)return r("Safari shim is not included in this adapter release."),n;r("adapter.js shimming safari."),n.browserShim=Sd,jd(e,i),Md(e),_d(e),yd(e),fd(e),hd(e),md(e),bd(e),gd(e),wd(e),kd(e),Dd(e),Od(e,i),Ed(e),xd(e,i);break;default:r("Unsupported browser!")}return n}({window:"undefined"==typeof window?void 0:window});function Nd(e){return{id:e.id,tracks:e.getTracks().map((function(e){return{id:e.id,kind:e.kind,label:e.label,enabled:e.enabled,muted:e.muted,readyState:e.readyState}}))}}var Bd=function(e,t,r){var i=0,n=!!window.mozRTCPeerConnection,s=!!window.RTCIceGatherer,a={};if(r.forEach((function(r){if(window[r+"RTCPeerConnection"]&&("webkit"!==r||!s)){var o=window[r+"RTCPeerConnection"],c=function(r,c){var d=new o(r,c),l="PC_"+i++;d.__rtcStatsId=l,r||(r={nullConfig:!0}),((r=JSON.parse(JSON.stringify(r)))&&r.iceServers||[]).forEach((function(e){delete e.credential})),r.browserType=n?"moz":s?"edge":"webkit",e("create",l,r),c&&e("constraints",l,c),d.addEventListener("icecandidate",(function(t){e("onicecandidate",l,t.candidate)})),d.addEventListener("addstream",(function(t){e("onaddstream",l,t.stream.id+" "+t.stream.getTracks().map((function(e){return e.kind+":"+e.id})))})),d.addEventListener("track",(function(t){e("ontrack",l,t.track.kind+":"+t.track.id+" "+t.streams.map((function(e){return"stream:"+e.id})))})),d.addEventListener("removestream",(function(t){e("onremovestream",l,t.stream.id+" "+t.stream.getTracks().map((function(e){return e.kind+":"+e.id})))})),d.addEventListener("signalingstatechange",(function(){e("onsignalingstatechange",l,d.signalingState)})),d.addEventListener("iceconnectionstatechange",(function(){e("oniceconnectionstatechange",l,d.iceConnectionState)})),d.addEventListener("icegatheringstatechange",(function(){e("onicegatheringstatechange",l,d.iceGatheringState)})),d.addEventListener("connectionstatechange",(function(){e("onconnectionstatechange",l,d.connectionState)})),d.addEventListener("negotiationneeded",(function(){e("onnegotiationneeded",l,void 0)})),d.addEventListener("datachannel",(function(t){e("ondatachannel",l,[t.channel.id,t.channel.label])}));var p=function(){d.getStats(null).then((function(t){var r=function(e){if(!e.entries)return e;var t={};return e.forEach((function(e,r){t[r]=e})),t}(t),i=JSON.parse(JSON.stringify(r));e("getstats",l,function(e,t){t=JSON.parse(JSON.stringify(t)),Object.keys(t).forEach((function(r){var i=t[r];delete i.id,e[r]&&Object.keys(i).forEach((function(n){i[n]===e[r][n]&&delete t[r][n],(0===Object.keys(i).length||1===Object.keys(i).length&&i.timestamp)&&delete t[r]}))}));var r=-1/0;return Object.keys(t).forEach((function(e){var i=t[e];i.timestamp>r&&(r=i.timestamp)})),Object.keys(t).forEach((function(e){var i=t[e];i.timestamp===r&&(i.timestamp=0)})),t.timestamp=r,t}(a[l]||{},r)),a[l]=i}))};if(!s&&t)var u=window.setInterval((function(){"closed"!==d.signalingState?p():window.clearInterval(u)}),t);return s||d.addEventListener("connectionstatechange",(function(){"connected"!==d.connectionState&&"failed"!==d.connectionState||p()})),d};["createDataChannel","close"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){return e(t,this.__rtcStatsId,arguments),r.apply(this,arguments)})})),["addStream","removeStream"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=arguments[0],n=i.getTracks().map((function(e){return e.kind+":"+e.id})).join(",");return e(t,this.__rtcStatsId,i.id+" "+n),r.apply(this,arguments)})})),["addTrack"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=arguments[0],n=[].slice.call(arguments,1);return e(t,this.__rtcStatsId,i.kind+":"+i.id+" "+(n.map((function(e){return"stream:"+e.id})).join(";")||"-")),r.apply(this,arguments)})})),["removeTrack"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=arguments[0].track;return e(t,this.__rtcStatsId,i?i.kind+":"+i.id:"null"),r.apply(this,arguments)})})),["createOffer","createAnswer"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i,n=this.__rtcStatsId,s=arguments;return 1===arguments.length&&"object"==typeof arguments[0]?i=arguments[0]:3===arguments.length&&"object"==typeof arguments[2]&&(i=arguments[2]),e(t,this.__rtcStatsId,i),r.apply(this,i?[i]:void 0).then((function(r){if(e(t+"OnSuccess",n,r),!(s.length>0&&"function"==typeof s[0]))return r;s[0].apply(null,[r])}),(function(r){if(e(t+"OnFailure",n,r.toString()),!(s.length>1&&"function"==typeof s[1]))throw r;s[1].apply(null,[r])}))})})),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=this.__rtcStatsId,n=arguments;return e(t,this.__rtcStatsId,n[0]),r.apply(this,[n[0]]).then((function(){e(t+"OnSuccess",i,void 0),n.length>=2&&"function"==typeof n[1]&&n[1].apply(null,[])}),(function(r){if(e(t+"OnFailure",i,r.toString()),!(n.length>=3&&"function"==typeof n[2]))throw r;n[2].apply(null,[r])}))})})),o.generateCertificate&&Object.defineProperty(c,"generateCertificate",{get:function(){return arguments.length?o.generateCertificate.apply(null,arguments):o.generateCertificate}}),window[r+"RTCPeerConnection"]=c,window[r+"RTCPeerConnection"].prototype=o.prototype}})),r.forEach((function(t){var r=t+(t.length?"GetUserMedia":"getUserMedia");if(navigator[r]){var i=navigator[r].bind(navigator);navigator[r]=function(){e("getUserMedia",null,arguments[0]);var t=arguments[1],r=arguments[2];i(arguments[0],(function(r){e("getUserMediaOnSuccess",null,Nd(r)),t&&t(r)}),(function(t){e("getUserMediaOnFailure",null,t.name),r&&r(t)}))}.bind(navigator)}})),navigator.mediaDevices&&navigator.mediaDevices.getUserMedia){var o=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getUserMedia=function(){return e("navigator.mediaDevices.getUserMedia",null,arguments[0]),o.apply(navigator.mediaDevices,arguments).then((function(t){return e("navigator.mediaDevices.getUserMediaOnSuccess",null,Nd(t)),t}),(function(t){return e("navigator.mediaDevices.getUserMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia){var c=navigator.mediaDevices.getDisplayMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getDisplayMedia=function(){return e("navigator.mediaDevices.getDisplayMedia",null,arguments[0]),c.apply(navigator.mediaDevices,arguments).then((function(t){return e("navigator.mediaDevices.getDisplayMediaOnSuccess",null,Nd(t)),t}),(function(t){return e("navigator.mediaDevices.getDisplayMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}return{resetDelta(){a={}}}},Fd=Ht(Bd);let Ud;const $d=new Uint8Array(16);function zd(){if(!Ud&&(Ud="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Ud))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Ud($d)}const Vd=[];for(let Dy=0;Dy<256;++Dy)Vd.push((Dy+256).toString(16).slice(1));var qd={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Gd(e,t,r){if(qd.randomUUID&&!t&&!e)return qd.randomUUID();const i=(e=e||{}).random||(e.rng||zd)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=i[e];return t}return function(e,t=0){return Vd[e[t+0]]+Vd[e[t+1]]+Vd[e[t+2]]+Vd[e[t+3]]+"-"+Vd[e[t+4]]+Vd[e[t+5]]+"-"+Vd[e[t+6]]+Vd[e[t+7]]+"-"+Vd[e[t+8]]+Vd[e[t+9]]+"-"+Vd[e[t+10]]+Vd[e[t+11]]+Vd[e[t+12]]+Vd[e[t+13]]+Vd[e[t+14]]+Vd[e[t+15]]}(i)}var Hd={},Wd={},Kd={};Object.defineProperty(Kd,"__esModule",{value:!0}),Kd.isCorrect=Kd.isInSubnet=void 0,Kd.isInSubnet=function(e){return!(this.subnetMask<e.subnetMask)&&this.mask(e.subnetMask)===e.mask()},Kd.isCorrect=function(e){return function(){return this.addressMinusSuffix===this.correctForm()&&(this.subnetMask===e&&!this.parsedSubnet||this.parsedSubnet===String(this.subnetMask))}};var Jd={};Object.defineProperty(Jd,"__esModule",{value:!0}),Jd.RE_SUBNET_STRING=Jd.RE_ADDRESS=Jd.GROUPS=Jd.BITS=void 0,Jd.BITS=32,Jd.GROUPS=4,Jd.RE_ADDRESS=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g,Jd.RE_SUBNET_STRING=/\/\d{1,2}$/;var Qd={};Object.defineProperty(Qd,"__esModule",{value:!0}),Qd.AddressError=void 0;class Zd extends Error{constructor(e,t){super(e),this.name="AddressError",null!==t&&(this.parseMessage=t)}}Qd.AddressError=Zd;var Yd,Xd={exports:{}};Yd=Xd,function(){var e;function t(e,t,r){null!=e&&("number"==typeof e?this.fromNumber(e,t,r):null==t&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,t))}function r(){return new t(null)}var i="undefined"!=typeof navigator;i&&"Microsoft Internet Explorer"==navigator.appName?(t.prototype.am=function(e,t,r,i,n,s){for(var a=32767&t,o=t>>15;--s>=0;){var c=32767&this[e],d=this[e++]>>15,l=o*c+d*a;n=((c=a*c+((32767&l)<<15)+r[i]+(1073741823&n))>>>30)+(l>>>15)+o*d+(n>>>30),r[i++]=1073741823&c}return n},e=30):i&&"Netscape"!=navigator.appName?(t.prototype.am=function(e,t,r,i,n,s){for(;--s>=0;){var a=t*this[e++]+r[i]+n;n=Math.floor(a/67108864),r[i++]=67108863&a}return n},e=26):(t.prototype.am=function(e,t,r,i,n,s){for(var a=16383&t,o=t>>14;--s>=0;){var c=16383&this[e],d=this[e++]>>14,l=o*c+d*a;n=((c=a*c+((16383&l)<<14)+r[i]+n)>>28)+(l>>14)+o*d,r[i++]=268435455&c}return n},e=28),t.prototype.DB=e,t.prototype.DM=(1<<e)-1,t.prototype.DV=1<<e,t.prototype.FV=Math.pow(2,52),t.prototype.F1=52-e,t.prototype.F2=2*e-52;var n,s,a="0123456789abcdefghijklmnopqrstuvwxyz",o=new Array;for(n="0".charCodeAt(0),s=0;s<=9;++s)o[n++]=s;for(n="a".charCodeAt(0),s=10;s<36;++s)o[n++]=s;for(n="A".charCodeAt(0),s=10;s<36;++s)o[n++]=s;function c(e){return a.charAt(e)}function d(e,t){var r=o[e.charCodeAt(t)];return null==r?-1:r}function l(e){var t=r();return t.fromInt(e),t}function p(e){var t,r=1;return 0!=(t=e>>>16)&&(e=t,r+=16),0!=(t=e>>8)&&(e=t,r+=8),0!=(t=e>>4)&&(e=t,r+=4),0!=(t=e>>2)&&(e=t,r+=2),0!=(t=e>>1)&&(e=t,r+=1),r}function u(e){this.m=e}function h(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<<e.DB-15)-1,this.mt2=2*e.t}function m(e,t){return e&t}function f(e,t){return e|t}function g(e,t){return e^t}function v(e,t){return e&~t}function _(e){if(0==e)return-1;var t=0;return 0==(65535&e)&&(e>>=16,t+=16),0==(255&e)&&(e>>=8,t+=8),0==(15&e)&&(e>>=4,t+=4),0==(3&e)&&(e>>=2,t+=2),0==(1&e)&&++t,t}function b(e){for(var t=0;0!=e;)e&=e-1,++t;return t}function y(){}function w(e){return e}function S(e){this.r2=r(),this.q3=r(),t.ONE.dlShiftTo(2*e.t,this.r2),this.mu=this.r2.divide(e),this.m=e}u.prototype.convert=function(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e},u.prototype.revert=function(e){return e},u.prototype.reduce=function(e){e.divRemTo(this.m,null,e)},u.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},u.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},h.prototype.convert=function(e){var i=r();return e.abs().dlShiftTo(this.m.t,i),i.divRemTo(this.m,null,i),e.s<0&&i.compareTo(t.ZERO)>0&&this.m.subTo(i,i),i},h.prototype.revert=function(e){var t=r();return e.copyTo(t),this.reduce(t),t},h.prototype.reduce=function(e){for(;e.t<=this.mt2;)e[e.t++]=0;for(var t=0;t<this.m.t;++t){var r=32767&e[t],i=r*this.mpl+((r*this.mph+(e[t]>>15)*this.mpl&this.um)<<15)&e.DM;for(e[r=t+this.m.t]+=this.m.am(0,i,e,t,0,this.m.t);e[r]>=e.DV;)e[r]-=e.DV,e[++r]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)},h.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},h.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},t.prototype.copyTo=function(e){for(var t=this.t-1;t>=0;--t)e[t]=this[t];e.t=this.t,e.s=this.s},t.prototype.fromInt=function(e){this.t=1,this.s=e<0?-1:0,e>0?this[0]=e:e<-1?this[0]=e+this.DV:this.t=0},t.prototype.fromString=function(e,r){var i;if(16==r)i=4;else if(8==r)i=3;else if(256==r)i=8;else if(2==r)i=1;else if(32==r)i=5;else{if(4!=r)return void this.fromRadix(e,r);i=2}this.t=0,this.s=0;for(var n=e.length,s=!1,a=0;--n>=0;){var o=8==i?255&e[n]:d(e,n);o<0?"-"==e.charAt(n)&&(s=!0):(s=!1,0==a?this[this.t++]=o:a+i>this.DB?(this[this.t-1]|=(o&(1<<this.DB-a)-1)<<a,this[this.t++]=o>>this.DB-a):this[this.t-1]|=o<<a,(a+=i)>=this.DB&&(a-=this.DB))}8==i&&0!=(128&e[0])&&(this.s=-1,a>0&&(this[this.t-1]|=(1<<this.DB-a)-1<<a)),this.clamp(),s&&t.ZERO.subTo(this,this)},t.prototype.clamp=function(){for(var e=this.s&this.DM;this.t>0&&this[this.t-1]==e;)--this.t},t.prototype.dlShiftTo=function(e,t){var r;for(r=this.t-1;r>=0;--r)t[r+e]=this[r];for(r=e-1;r>=0;--r)t[r]=0;t.t=this.t+e,t.s=this.s},t.prototype.drShiftTo=function(e,t){for(var r=e;r<this.t;++r)t[r-e]=this[r];t.t=Math.max(this.t-e,0),t.s=this.s},t.prototype.lShiftTo=function(e,t){var r,i=e%this.DB,n=this.DB-i,s=(1<<n)-1,a=Math.floor(e/this.DB),o=this.s<<i&this.DM;for(r=this.t-1;r>=0;--r)t[r+a+1]=this[r]>>n|o,o=(this[r]&s)<<i;for(r=a-1;r>=0;--r)t[r]=0;t[a]=o,t.t=this.t+a+1,t.s=this.s,t.clamp()},t.prototype.rShiftTo=function(e,t){t.s=this.s;var r=Math.floor(e/this.DB);if(r>=this.t)t.t=0;else{var i=e%this.DB,n=this.DB-i,s=(1<<i)-1;t[0]=this[r]>>i;for(var a=r+1;a<this.t;++a)t[a-r-1]|=(this[a]&s)<<n,t[a-r]=this[a]>>i;i>0&&(t[this.t-r-1]|=(this.s&s)<<n),t.t=this.t-r,t.clamp()}},t.prototype.subTo=function(e,t){for(var r=0,i=0,n=Math.min(e.t,this.t);r<n;)i+=this[r]-e[r],t[r++]=i&this.DM,i>>=this.DB;if(e.t<this.t){for(i-=e.s;r<this.t;)i+=this[r],t[r++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;r<e.t;)i-=e[r],t[r++]=i&this.DM,i>>=this.DB;i-=e.s}t.s=i<0?-1:0,i<-1?t[r++]=this.DV+i:i>0&&(t[r++]=i),t.t=r,t.clamp()},t.prototype.multiplyTo=function(e,r){var i=this.abs(),n=e.abs(),s=i.t;for(r.t=s+n.t;--s>=0;)r[s]=0;for(s=0;s<n.t;++s)r[s+i.t]=i.am(0,n[s],r,s,0,i.t);r.s=0,r.clamp(),this.s!=e.s&&t.ZERO.subTo(r,r)},t.prototype.squareTo=function(e){for(var t=this.abs(),r=e.t=2*t.t;--r>=0;)e[r]=0;for(r=0;r<t.t-1;++r){var i=t.am(r,t[r],e,2*r,0,1);(e[r+t.t]+=t.am(r+1,2*t[r],e,2*r+1,i,t.t-r-1))>=t.DV&&(e[r+t.t]-=t.DV,e[r+t.t+1]=1)}e.t>0&&(e[e.t-1]+=t.am(r,t[r],e,2*r,0,1)),e.s=0,e.clamp()},t.prototype.divRemTo=function(e,i,n){var s=e.abs();if(!(s.t<=0)){var a=this.abs();if(a.t<s.t)return null!=i&&i.fromInt(0),void(null!=n&&this.copyTo(n));null==n&&(n=r());var o=r(),c=this.s,d=e.s,l=this.DB-p(s[s.t-1]);l>0?(s.lShiftTo(l,o),a.lShiftTo(l,n)):(s.copyTo(o),a.copyTo(n));var u=o.t,h=o[u-1];if(0!=h){var m=h*(1<<this.F1)+(u>1?o[u-2]>>this.F2:0),f=this.FV/m,g=(1<<this.F1)/m,v=1<<this.F2,_=n.t,b=_-u,y=null==i?r():i;for(o.dlShiftTo(b,y),n.compareTo(y)>=0&&(n[n.t++]=1,n.subTo(y,n)),t.ONE.dlShiftTo(u,y),y.subTo(o,o);o.t<u;)o[o.t++]=0;for(;--b>=0;){var w=n[--_]==h?this.DM:Math.floor(n[_]*f+(n[_-1]+v)*g);if((n[_]+=o.am(0,w,n,b,0,u))<w)for(o.dlShiftTo(b,y),n.subTo(y,n);n[_]<--w;)n.subTo(y,n)}null!=i&&(n.drShiftTo(u,i),c!=d&&t.ZERO.subTo(i,i)),n.t=u,n.clamp(),l>0&&n.rShiftTo(l,n),c<0&&t.ZERO.subTo(n,n)}}},t.prototype.invDigit=function(){if(this.t<1)return 0;var e=this[0];if(0==(1&e))return 0;var t=3&e;return(t=(t=(t=(t=t*(2-(15&e)*t)&15)*(2-(255&e)*t)&255)*(2-((65535&e)*t&65535))&65535)*(2-e*t%this.DV)%this.DV)>0?this.DV-t:-t},t.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},t.prototype.exp=function(e,i){if(e>4294967295||e<1)return t.ONE;var n=r(),s=r(),a=i.convert(this),o=p(e)-1;for(a.copyTo(n);--o>=0;)if(i.sqrTo(n,s),(e&1<<o)>0)i.mulTo(s,a,n);else{var c=n;n=s,s=c}return i.revert(n)},t.prototype.toString=function(e){if(this.s<0)return"-"+this.negate().toString(e);var t;if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)return this.toRadix(e);t=2}var r,i=(1<<t)-1,n=!1,s="",a=this.t,o=this.DB-a*this.DB%t;if(a-- >0)for(o<this.DB&&(r=this[a]>>o)>0&&(n=!0,s=c(r));a>=0;)o<t?(r=(this[a]&(1<<o)-1)<<t-o,r|=this[--a]>>(o+=this.DB-t)):(r=this[a]>>(o-=t)&i,o<=0&&(o+=this.DB,--a)),r>0&&(n=!0),n&&(s+=c(r));return n?s:"0"},t.prototype.negate=function(){var e=r();return t.ZERO.subTo(this,e),e},t.prototype.abs=function(){return this.s<0?this.negate():this},t.prototype.compareTo=function(e){var t=this.s-e.s;if(0!=t)return t;var r=this.t;if(0!=(t=r-e.t))return this.s<0?-t:t;for(;--r>=0;)if(0!=(t=this[r]-e[r]))return t;return 0},t.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+p(this[this.t-1]^this.s&this.DM)},t.prototype.mod=function(e){var i=r();return this.abs().divRemTo(e,null,i),this.s<0&&i.compareTo(t.ZERO)>0&&e.subTo(i,i),i},t.prototype.modPowInt=function(e,t){var r;return r=e<256||t.isEven()?new u(t):new h(t),this.exp(e,r)},t.ZERO=l(0),t.ONE=l(1),y.prototype.convert=w,y.prototype.revert=w,y.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r)},y.prototype.sqrTo=function(e,t){e.squareTo(t)},S.prototype.convert=function(e){if(e.s<0||e.t>2*this.m.t)return e.mod(this.m);if(e.compareTo(this.m)<0)return e;var t=r();return e.copyTo(t),this.reduce(t),t},S.prototype.revert=function(e){return e},S.prototype.reduce=function(e){for(e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);e.compareTo(this.r2)<0;)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);e.compareTo(this.m)>=0;)e.subTo(this.m,e)},S.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},S.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)};var C,R,T,P=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],k=(1<<26)/P[P.length-1];function D(){var e;e=(new Date).getTime(),R[T++]^=255&e,R[T++]^=e>>8&255,R[T++]^=e>>16&255,R[T++]^=e>>24&255,T>=L&&(T-=L)}if(t.prototype.chunkSize=function(e){return Math.floor(Math.LN2*this.DB/Math.log(e))},t.prototype.toRadix=function(e){if(null==e&&(e=10),0==this.signum()||e<2||e>36)return"0";var t=this.chunkSize(e),i=Math.pow(e,t),n=l(i),s=r(),a=r(),o="";for(this.divRemTo(n,s,a);s.signum()>0;)o=(i+a.intValue()).toString(e).substr(1)+o,s.divRemTo(n,s,a);return a.intValue().toString(e)+o},t.prototype.fromRadix=function(e,r){this.fromInt(0),null==r&&(r=10);for(var i=this.chunkSize(r),n=Math.pow(r,i),s=!1,a=0,o=0,c=0;c<e.length;++c){var l=d(e,c);l<0?"-"==e.charAt(c)&&0==this.signum()&&(s=!0):(o=r*o+l,++a>=i&&(this.dMultiply(n),this.dAddOffset(o,0),a=0,o=0))}a>0&&(this.dMultiply(Math.pow(r,a)),this.dAddOffset(o,0)),s&&t.ZERO.subTo(this,this)},t.prototype.fromNumber=function(e,r,i){if("number"==typeof r)if(e<2)this.fromInt(1);else for(this.fromNumber(e,i),this.testBit(e-1)||this.bitwiseTo(t.ONE.shiftLeft(e-1),f,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(r);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(t.ONE.shiftLeft(e-1),this);else{var n=new Array,s=7&e;n.length=1+(e>>3),r.nextBytes(n),s>0?n[0]&=(1<<s)-1:n[0]=0,this.fromString(n,256)}},t.prototype.bitwiseTo=function(e,t,r){var i,n,s=Math.min(e.t,this.t);for(i=0;i<s;++i)r[i]=t(this[i],e[i]);if(e.t<this.t){for(n=e.s&this.DM,i=s;i<this.t;++i)r[i]=t(this[i],n);r.t=this.t}else{for(n=this.s&this.DM,i=s;i<e.t;++i)r[i]=t(n,e[i]);r.t=e.t}r.s=t(this.s,e.s),r.clamp()},t.prototype.changeBit=function(e,r){var i=t.ONE.shiftLeft(e);return this.bitwiseTo(i,r,i),i},t.prototype.addTo=function(e,t){for(var r=0,i=0,n=Math.min(e.t,this.t);r<n;)i+=this[r]+e[r],t[r++]=i&this.DM,i>>=this.DB;if(e.t<this.t){for(i+=e.s;r<this.t;)i+=this[r],t[r++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;r<e.t;)i+=e[r],t[r++]=i&this.DM,i>>=this.DB;i+=e.s}t.s=i<0?-1:0,i>0?t[r++]=i:i<-1&&(t[r++]=this.DV+i),t.t=r,t.clamp()},t.prototype.dMultiply=function(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()},t.prototype.dAddOffset=function(e,t){if(0!=e){for(;this.t<=t;)this[this.t++]=0;for(this[t]+=e;this[t]>=this.DV;)this[t]-=this.DV,++t>=this.t&&(this[this.t++]=0),++this[t]}},t.prototype.multiplyLowerTo=function(e,t,r){var i,n=Math.min(this.t+e.t,t);for(r.s=0,r.t=n;n>0;)r[--n]=0;for(i=r.t-this.t;n<i;++n)r[n+this.t]=this.am(0,e[n],r,n,0,this.t);for(i=Math.min(e.t,t);n<i;++n)this.am(0,e[n],r,n,0,t-n);r.clamp()},t.prototype.multiplyUpperTo=function(e,t,r){--t;var i=r.t=this.t+e.t-t;for(r.s=0;--i>=0;)r[i]=0;for(i=Math.max(t-this.t,0);i<e.t;++i)r[this.t+i-t]=this.am(t-i,e[i],r,0,0,this.t+i-t);r.clamp(),r.drShiftTo(1,r)},t.prototype.modInt=function(e){if(e<=0)return 0;var t=this.DV%e,r=this.s<0?e-1:0;if(this.t>0)if(0==t)r=this[0]%e;else for(var i=this.t-1;i>=0;--i)r=(t*r+this[i])%e;return r},t.prototype.millerRabin=function(e){var i=this.subtract(t.ONE),n=i.getLowestSetBit();if(n<=0)return!1;var s=i.shiftRight(n);(e=e+1>>1)>P.length&&(e=P.length);for(var a=r(),o=0;o<e;++o){a.fromInt(P[Math.floor(Math.random()*P.length)]);var c=a.modPow(s,this);if(0!=c.compareTo(t.ONE)&&0!=c.compareTo(i)){for(var d=1;d++<n&&0!=c.compareTo(i);)if(0==(c=c.modPowInt(2,this)).compareTo(t.ONE))return!1;if(0!=c.compareTo(i))return!1}}return!0},t.prototype.clone=function(){var e=r();return this.copyTo(e),e},t.prototype.intValue=function(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]},t.prototype.byteValue=function(){return 0==this.t?this.s:this[0]<<24>>24},t.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},t.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},t.prototype.toByteArray=function(){var e=this.t,t=new Array;t[0]=this.s;var r,i=this.DB-e*this.DB%8,n=0;if(e-- >0)for(i<this.DB&&(r=this[e]>>i)!=(this.s&this.DM)>>i&&(t[n++]=r|this.s<<this.DB-i);e>=0;)i<8?(r=(this[e]&(1<<i)-1)<<8-i,r|=this[--e]>>(i+=this.DB-8)):(r=this[e]>>(i-=8)&255,i<=0&&(i+=this.DB,--e)),0!=(128&r)&&(r|=-256),0==n&&(128&this.s)!=(128&r)&&++n,(n>0||r!=this.s)&&(t[n++]=r);return t},t.prototype.equals=function(e){return 0==this.compareTo(e)},t.prototype.min=function(e){return this.compareTo(e)<0?this:e},t.prototype.max=function(e){return this.compareTo(e)>0?this:e},t.prototype.and=function(e){var t=r();return this.bitwiseTo(e,m,t),t},t.prototype.or=function(e){var t=r();return this.bitwiseTo(e,f,t),t},t.prototype.xor=function(e){var t=r();return this.bitwiseTo(e,g,t),t},t.prototype.andNot=function(e){var t=r();return this.bitwiseTo(e,v,t),t},t.prototype.not=function(){for(var e=r(),t=0;t<this.t;++t)e[t]=this.DM&~this[t];return e.t=this.t,e.s=~this.s,e},t.prototype.shiftLeft=function(e){var t=r();return e<0?this.rShiftTo(-e,t):this.lShiftTo(e,t),t},t.prototype.shiftRight=function(e){var t=r();return e<0?this.lShiftTo(-e,t):this.rShiftTo(e,t),t},t.prototype.getLowestSetBit=function(){for(var e=0;e<this.t;++e)if(0!=this[e])return e*this.DB+_(this[e]);return this.s<0?this.t*this.DB:-1},t.prototype.bitCount=function(){for(var e=0,t=this.s&this.DM,r=0;r<this.t;++r)e+=b(this[r]^t);return e},t.prototype.testBit=function(e){var t=Math.floor(e/this.DB);return t>=this.t?0!=this.s:0!=(this[t]&1<<e%this.DB)},t.prototype.setBit=function(e){return this.changeBit(e,f)},t.prototype.clearBit=function(e){return this.changeBit(e,v)},t.prototype.flipBit=function(e){return this.changeBit(e,g)},t.prototype.add=function(e){var t=r();return this.addTo(e,t),t},t.prototype.subtract=function(e){var t=r();return this.subTo(e,t),t},t.prototype.multiply=function(e){var t=r();return this.multiplyTo(e,t),t},t.prototype.divide=function(e){var t=r();return this.divRemTo(e,t,null),t},t.prototype.remainder=function(e){var t=r();return this.divRemTo(e,null,t),t},t.prototype.divideAndRemainder=function(e){var t=r(),i=r();return this.divRemTo(e,t,i),new Array(t,i)},t.prototype.modPow=function(e,t){var i,n,s=e.bitLength(),a=l(1);if(s<=0)return a;i=s<18?1:s<48?3:s<144?4:s<768?5:6,n=s<8?new u(t):t.isEven()?new S(t):new h(t);var o=new Array,c=3,d=i-1,m=(1<<i)-1;if(o[1]=n.convert(this),i>1){var f=r();for(n.sqrTo(o[1],f);c<=m;)o[c]=r(),n.mulTo(f,o[c-2],o[c]),c+=2}var g,v,_=e.t-1,b=!0,y=r();for(s=p(e[_])-1;_>=0;){for(s>=d?g=e[_]>>s-d&m:(g=(e[_]&(1<<s+1)-1)<<d-s,_>0&&(g|=e[_-1]>>this.DB+s-d)),c=i;0==(1&g);)g>>=1,--c;if((s-=c)<0&&(s+=this.DB,--_),b)o[g].copyTo(a),b=!1;else{for(;c>1;)n.sqrTo(a,y),n.sqrTo(y,a),c-=2;c>0?n.sqrTo(a,y):(v=a,a=y,y=v),n.mulTo(y,o[g],a)}for(;_>=0&&0==(e[_]&1<<s);)n.sqrTo(a,y),v=a,a=y,y=v,--s<0&&(s=this.DB-1,--_)}return n.revert(a)},t.prototype.modInverse=function(e){var r=e.isEven();if(this.isEven()&&r||0==e.signum())return t.ZERO;for(var i=e.clone(),n=this.clone(),s=l(1),a=l(0),o=l(0),c=l(1);0!=i.signum();){for(;i.isEven();)i.rShiftTo(1,i),r?(s.isEven()&&a.isEven()||(s.addTo(this,s),a.subTo(e,a)),s.rShiftTo(1,s)):a.isEven()||a.subTo(e,a),a.rShiftTo(1,a);for(;n.isEven();)n.rShiftTo(1,n),r?(o.isEven()&&c.isEven()||(o.addTo(this,o),c.subTo(e,c)),o.rShiftTo(1,o)):c.isEven()||c.subTo(e,c),c.rShiftTo(1,c);i.compareTo(n)>=0?(i.subTo(n,i),r&&s.subTo(o,s),a.subTo(c,a)):(n.subTo(i,n),r&&o.subTo(s,o),c.subTo(a,c))}return 0!=n.compareTo(t.ONE)?t.ZERO:c.compareTo(e)>=0?c.subtract(e):c.signum()<0?(c.addTo(e,c),c.signum()<0?c.add(e):c):c},t.prototype.pow=function(e){return this.exp(e,new y)},t.prototype.gcd=function(e){var t=this.s<0?this.negate():this.clone(),r=e.s<0?e.negate():e.clone();if(t.compareTo(r)<0){var i=t;t=r,r=i}var n=t.getLowestSetBit(),s=r.getLowestSetBit();if(s<0)return t;for(n<s&&(s=n),s>0&&(t.rShiftTo(s,t),r.rShiftTo(s,r));t.signum()>0;)(n=t.getLowestSetBit())>0&&t.rShiftTo(n,t),(n=r.getLowestSetBit())>0&&r.rShiftTo(n,r),t.compareTo(r)>=0?(t.subTo(r,t),t.rShiftTo(1,t)):(r.subTo(t,r),r.rShiftTo(1,r));return s>0&&r.lShiftTo(s,r),r},t.prototype.isProbablePrime=function(e){var t,r=this.abs();if(1==r.t&&r[0]<=P[P.length-1]){for(t=0;t<P.length;++t)if(r[0]==P[t])return!0;return!1}if(r.isEven())return!1;for(t=1;t<P.length;){for(var i=P[t],n=t+1;n<P.length&&i<k;)i*=P[n++];for(i=r.modInt(i);t<n;)if(i%P[t++]==0)return!1}return r.millerRabin(e)},t.prototype.square=function(){var e=r();return this.squareTo(e),e},t.prototype.Barrett=S,null==R){var O;if(R=new Array,T=0,"undefined"!=typeof window&&window.crypto)if(window.crypto.getRandomValues){var E=new Uint8Array(32);for(window.crypto.getRandomValues(E),O=0;O<32;++O)R[T++]=E[O]}else if("Netscape"==navigator.appName&&navigator.appVersion<"5"){var I=window.crypto.random(32);for(O=0;O<I.length;++O)R[T++]=255&I.charCodeAt(O)}for(;T<L;)O=Math.floor(65536*Math.random()),R[T++]=O>>>8,R[T++]=255&O;T=0,D()}function x(){if(null==C){for(D(),(C=new M).init(R),T=0;T<R.length;++T)R[T]=0;T=0}return C.next()}function j(){}function M(){this.i=0,this.j=0,this.S=new Array}j.prototype.nextBytes=function(e){var t;for(t=0;t<e.length;++t)e[t]=x()},M.prototype.init=function(e){var t,r,i;for(t=0;t<256;++t)this.S[t]=t;for(r=0,t=0;t<256;++t)r=r+this.S[t]+e[t%e.length]&255,i=this.S[t],this.S[t]=this.S[r],this.S[r]=i;this.i=0,this.j=0},M.prototype.next=function(){var e;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,e=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=e,this.S[e+this.S[this.i]&255]};var L=256;Yd.exports={default:t,BigInteger:t,SecureRandom:j}}.call(Gt);var el=Xd.exports,tl={};!function(e){!function(){var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function r(e){return function(e,i){var n,s,a,o,c,d,l,p,u,h=1,m=e.length,f="";for(s=0;s<m;s++)if("string"==typeof e[s])f+=e[s];else if("object"==typeof e[s]){if((o=e[s]).keys)for(n=i[h],a=0;a<o.keys.length;a++){if(null==n)throw new Error(r('[sprintf] Cannot access property "%s" of undefined value "%s"',o.keys[a],o.keys[a-1]));n=n[o.keys[a]]}else n=o.param_no?i[o.param_no]:i[h++];if(t.not_type.test(o.type)&&t.not_primitive.test(o.type)&&n instanceof Function&&(n=n()),t.numeric_arg.test(o.type)&&"number"!=typeof n&&isNaN(n))throw new TypeError(r("[sprintf] expecting number but found %T",n));switch(t.number.test(o.type)&&(p=n>=0),o.type){case"b":n=parseInt(n,10).toString(2);break;case"c":n=String.fromCharCode(parseInt(n,10));break;case"d":case"i":n=parseInt(n,10);break;case"j":n=JSON.stringify(n,null,o.width?parseInt(o.width):0);break;case"e":n=o.precision?parseFloat(n).toExponential(o.precision):parseFloat(n).toExponential();break;case"f":n=o.precision?parseFloat(n).toFixed(o.precision):parseFloat(n);break;case"g":n=o.precision?String(Number(n.toPrecision(o.precision))):parseFloat(n);break;case"o":n=(parseInt(n,10)>>>0).toString(8);break;case"s":n=String(n),n=o.precision?n.substring(0,o.precision):n;break;case"t":n=String(!!n),n=o.precision?n.substring(0,o.precision):n;break;case"T":n=Object.prototype.toString.call(n).slice(8,-1).toLowerCase(),n=o.precision?n.substring(0,o.precision):n;break;case"u":n=parseInt(n,10)>>>0;break;case"v":n=n.valueOf(),n=o.precision?n.substring(0,o.precision):n;break;case"x":n=(parseInt(n,10)>>>0).toString(16);break;case"X":n=(parseInt(n,10)>>>0).toString(16).toUpperCase()}t.json.test(o.type)?f+=n:(!t.number.test(o.type)||p&&!o.sign?u="":(u=p?"+":"-",n=n.toString().replace(t.sign,"")),d=o.pad_char?"0"===o.pad_char?"0":o.pad_char.charAt(1):" ",l=o.width-(u+n).length,c=o.width&&l>0?d.repeat(l):"",f+=o.align?u+n+c:"0"===d?u+c+n:c+u+n)}return f}(function(e){if(n[e])return n[e];var r,i=e,s=[],a=0;for(;i;){if(null!==(r=t.text.exec(i)))s.push(r[0]);else if(null!==(r=t.modulo.exec(i)))s.push("%");else{if(null===(r=t.placeholder.exec(i)))throw new SyntaxError("[sprintf] unexpected placeholder");if(r[2]){a|=1;var o=[],c=r[2],d=[];if(null===(d=t.key.exec(c)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(o.push(d[1]);""!==(c=c.substring(d[0].length));)if(null!==(d=t.key_access.exec(c)))o.push(d[1]);else{if(null===(d=t.index_access.exec(c)))throw new SyntaxError("[sprintf] failed to parse named argument key");o.push(d[1])}r[2]=o}else a|=2;if(3===a)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");s.push({placeholder:r[0],param_no:r[1],keys:r[2],sign:r[3],pad_char:r[4],align:r[5],width:r[6],precision:r[7],type:r[8]})}i=i.substring(r[0].length)}return n[e]=s}(e),arguments)}function i(e,t){return r.apply(null,[e].concat(t||[]))}var n=Object.create(null);e.sprintf=r,e.vsprintf=i,"undefined"!=typeof window&&(window.sprintf=r,window.vsprintf=i)}()}(tl);var rl=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),il=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),nl=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&rl(t,e,r);return il(t,e),t};Object.defineProperty(Wd,"__esModule",{value:!0}),Wd.Address4=void 0;const sl=nl(Kd),al=nl(Jd),ol=Qd,cl=el,dl=tl;class ll{constructor(e){this.groups=al.GROUPS,this.parsedAddress=[],this.parsedSubnet="",this.subnet="/32",this.subnetMask=32,this.v4=!0,this.isCorrect=sl.isCorrect(al.BITS),this.isInSubnet=sl.isInSubnet,this.address=e;const t=al.RE_SUBNET_STRING.exec(e);if(t){if(this.parsedSubnet=t[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,this.subnetMask<0||this.subnetMask>al.BITS)throw new ol.AddressError("Invalid subnet mask.");e=e.replace(al.RE_SUBNET_STRING,"")}this.addressMinusSuffix=e,this.parsedAddress=this.parse(e)}static isValid(e){try{return new ll(e),!0}catch(e){return!1}}parse(e){const t=e.split(".");if(!e.match(al.RE_ADDRESS))throw new ol.AddressError("Invalid IPv4 address.");return t}correctForm(){return this.parsedAddress.map((e=>parseInt(e,10))).join(".")}static fromHex(e){const t=e.replace(/:/g,"").padStart(8,"0"),r=[];let i;for(i=0;i<8;i+=2){const e=t.slice(i,i+2);r.push(parseInt(e,16))}return new ll(r.join("."))}static fromInteger(e){return ll.fromHex(e.toString(16))}static fromArpa(e){const t=e.replace(/(\.in-addr\.arpa)?\.$/,"").split(".").reverse().join(".");return new ll(t)}toHex(){return this.parsedAddress.map((e=>(0,dl.sprintf)("%02x",parseInt(e,10)))).join(":")}toArray(){return this.parsedAddress.map((e=>parseInt(e,10)))}toGroup6(){const e=[];let t;for(t=0;t<al.GROUPS;t+=2){const r=(0,dl.sprintf)("%02x%02x",parseInt(this.parsedAddress[t],10),parseInt(this.parsedAddress[t+1],10));e.push((0,dl.sprintf)("%x",parseInt(r,16)))}return e.join(":")}bigInteger(){return new cl.BigInteger(this.parsedAddress.map((e=>(0,dl.sprintf)("%02x",parseInt(e,10)))).join(""),16)}_startAddress(){return new cl.BigInteger(this.mask()+"0".repeat(al.BITS-this.subnetMask),2)}startAddress(){return ll.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new cl.BigInteger("1");return ll.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new cl.BigInteger(this.mask()+"1".repeat(al.BITS-this.subnetMask),2)}endAddress(){return ll.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new cl.BigInteger("1");return ll.fromBigInteger(this._endAddress().subtract(e))}static fromBigInteger(e){return ll.fromInteger(parseInt(e.toString(),10))}mask(e){return void 0===e&&(e=this.subnetMask),this.getBitsBase2(0,e)}getBitsBase2(e,t){return this.binaryZeroPad().slice(e,t)}reverseForm(e){e||(e={});const t=this.correctForm().split(".").reverse().join(".");return e.omitSuffix?t:(0,dl.sprintf)("%s.in-addr.arpa.",t)}isMulticast(){return this.isInSubnet(new ll("224.0.0.0/4"))}binaryZeroPad(){return this.bigInteger().toString(2).padStart(al.BITS,"0")}groupForV6(){const e=this.parsedAddress;return this.address.replace(al.RE_ADDRESS,(0,dl.sprintf)('<span class="hover-group group-v4 group-6">%s</span>.<span class="hover-group group-v4 group-7">%s</span>',e.slice(0,2).join("."),e.slice(2,4).join(".")))}}Wd.Address4=ll;var pl={},ul={};Object.defineProperty(ul,"__esModule",{value:!0}),ul.RE_URL_WITH_PORT=ul.RE_URL=ul.RE_ZONE_STRING=ul.RE_SUBNET_STRING=ul.RE_BAD_ADDRESS=ul.RE_BAD_CHARACTERS=ul.TYPES=ul.SCOPES=ul.GROUPS=ul.BITS=void 0,ul.BITS=128,ul.GROUPS=8,ul.SCOPES={0:"Reserved",1:"Interface local",2:"Link local",4:"Admin local",5:"Site local",8:"Organization local",14:"Global",15:"Reserved"},ul.TYPES={"ff01::1/128":"Multicast (All nodes on this interface)","ff01::2/128":"Multicast (All routers on this interface)","ff02::1/128":"Multicast (All nodes on this link)","ff02::2/128":"Multicast (All routers on this link)","ff05::2/128":"Multicast (All routers in this site)","ff02::5/128":"Multicast (OSPFv3 AllSPF routers)","ff02::6/128":"Multicast (OSPFv3 AllDR routers)","ff02::9/128":"Multicast (RIP routers)","ff02::a/128":"Multicast (EIGRP routers)","ff02::d/128":"Multicast (PIM routers)","ff02::16/128":"Multicast (MLDv2 reports)","ff01::fb/128":"Multicast (mDNSv6)","ff02::fb/128":"Multicast (mDNSv6)","ff05::fb/128":"Multicast (mDNSv6)","ff02::1:2/128":"Multicast (All DHCP servers and relay agents on this link)","ff05::1:2/128":"Multicast (All DHCP servers and relay agents in this site)","ff02::1:3/128":"Multicast (All DHCP servers on this link)","ff05::1:3/128":"Multicast (All DHCP servers in this site)","::/128":"Unspecified","::1/128":"Loopback","ff00::/8":"Multicast","fe80::/10":"Link-local unicast"},ul.RE_BAD_CHARACTERS=/([^0-9a-f:/%])/gi,ul.RE_BAD_ADDRESS=/([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi,ul.RE_SUBNET_STRING=/\/\d{1,3}(?=%|$)/,ul.RE_ZONE_STRING=/%.*$/,ul.RE_URL=new RegExp(/^\[{0,1}([0-9a-f:]+)\]{0,1}/),ul.RE_URL_WITH_PORT=new RegExp(/\[([0-9a-f:]+)\]:([0-9]{1,5})/);var hl={};Object.defineProperty(hl,"__esModule",{value:!0}),hl.simpleGroup=hl.spanLeadingZeroes=hl.spanAll=hl.spanAllZeroes=void 0;const ml=tl;function fl(e){return e.replace(/(0+)/g,'<span class="zero">$1</span>')}function gl(e){return e.replace(/^(0+)/,'<span class="zero">$1</span>')}hl.spanAllZeroes=fl,hl.spanAll=function(e,t=0){return e.split("").map(((e,r)=>(0,ml.sprintf)('<span class="digit value-%s position-%d">%s</span>',e,r+t,fl(e)))).join("")},hl.spanLeadingZeroes=function(e){return e.split(":").map((e=>gl(e))).join(":")},hl.simpleGroup=function(e,t=0){return e.split(":").map(((e,r)=>/group-v4/.test(e)?e:(0,ml.sprintf)('<span class="hover-group group-%d">%s</span>',r+t,gl(e))))};var vl={},_l=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),bl=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),yl=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&_l(t,e,r);return bl(t,e),t};Object.defineProperty(vl,"__esModule",{value:!0}),vl.possibleElisions=vl.simpleRegularExpression=vl.ADDRESS_BOUNDARY=vl.padGroup=vl.groupPossibilities=void 0;const wl=yl(ul),Sl=tl;function Cl(e){return(0,Sl.sprintf)("(%s)",e.join("|"))}function Rl(e){return e.length<4?(0,Sl.sprintf)("0{0,%d}%s",4-e.length,e):e}vl.groupPossibilities=Cl,vl.padGroup=Rl,vl.ADDRESS_BOUNDARY="[^A-Fa-f0-9:]",vl.simpleRegularExpression=function(e){const t=[];e.forEach(((e,r)=>{0===parseInt(e,16)&&t.push(r)}));const r=t.map((t=>e.map(((e,r)=>{if(r===t){const t=0===r||r===wl.GROUPS-1?":":"";return Cl([Rl(e),t])}return Rl(e)})).join(":")));return r.push(e.map(Rl).join(":")),Cl(r)},vl.possibleElisions=function(e,t,r){const i=t?"":":",n=r?"":":",s=[];t||r||s.push("::"),t&&r&&s.push(""),(r&&!t||!r&&t)&&s.push(":"),s.push((0,Sl.sprintf)("%s(:0{1,4}){1,%d}",i,e-1)),s.push((0,Sl.sprintf)("(0{1,4}:){1,%d}%s",e-1,n)),s.push((0,Sl.sprintf)("(0{1,4}:){%d}0{1,4}",e-1));for(let t=1;t<e-1;t++)for(let r=1;r<e-t;r++)s.push((0,Sl.sprintf)("(0{1,4}:){%d}:(0{1,4}:){%d}0{1,4}",r,e-r-t-1));return Cl(s)};var Tl=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Pl=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),kl=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Tl(t,e,r);return Pl(t,e),t};Object.defineProperty(pl,"__esModule",{value:!0}),pl.Address6=void 0;const Dl=kl(Kd),Ol=kl(Jd),El=kl(ul),Il=kl(hl),xl=Wd,jl=vl,Ml=Qd,Ll=el,Al=tl;function Nl(e){if(!e)throw new Error("Assertion failed.")}function Bl(e){return e=(e=e.replace(/^(0{1,})([1-9]+)$/,'<span class="parse-error">$1</span>$2')).replace(/^(0{1,})(0)$/,'<span class="parse-error">$1</span>$2')}function Fl(e){return(0,Al.sprintf)("%04x",parseInt(e,16))}function Ul(e){return 255&e}class $l{constructor(e,t){this.addressMinusSuffix="",this.parsedSubnet="",this.subnet="/128",this.subnetMask=128,this.v4=!1,this.zone="",this.isInSubnet=Dl.isInSubnet,this.isCorrect=Dl.isCorrect(El.BITS),this.groups=void 0===t?El.GROUPS:t,this.address=e;const r=El.RE_SUBNET_STRING.exec(e);if(r){if(this.parsedSubnet=r[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,Number.isNaN(this.subnetMask)||this.subnetMask<0||this.subnetMask>El.BITS)throw new Ml.AddressError("Invalid subnet mask.");e=e.replace(El.RE_SUBNET_STRING,"")}else if(/\//.test(e))throw new Ml.AddressError("Invalid subnet mask.");const i=El.RE_ZONE_STRING.exec(e);i&&(this.zone=i[0],e=e.replace(El.RE_ZONE_STRING,"")),this.addressMinusSuffix=e,this.parsedAddress=this.parse(this.addressMinusSuffix)}static isValid(e){try{return new $l(e),!0}catch(e){return!1}}static fromBigInteger(e){const t=e.toString(16).padStart(32,"0"),r=[];let i;for(i=0;i<El.GROUPS;i++)r.push(t.slice(4*i,4*(i+1)));return new $l(r.join(":"))}static fromURL(e){let t,r,i=null;if(-1!==e.indexOf("[")&&-1!==e.indexOf("]:")){if(r=El.RE_URL_WITH_PORT.exec(e),null===r)return{error:"failed to parse address with port",address:null,port:null};t=r[1],i=r[2]}else if(-1!==e.indexOf("/")){if(e=e.replace(/^[a-z0-9]+:\/\//,""),r=El.RE_URL.exec(e),null===r)return{error:"failed to parse address from URL",address:null,port:null};t=r[1]}else t=e;return i?(i=parseInt(i,10),(i<0||i>65536)&&(i=null)):i=null,{address:new $l(t),port:i}}static fromAddress4(e){const t=new xl.Address4(e),r=El.BITS-(Ol.BITS-t.subnetMask);return new $l(`::ffff:${t.correctForm()}/${r}`)}static fromArpa(e){let t=e.replace(/(\.ip6\.arpa)?\.$/,"");if(63!==t.length)throw new Ml.AddressError("Invalid 'ip6.arpa' form.");const r=t.split(".").reverse();for(let e=7;e>0;e--){const t=4*e;r.splice(t,0,":")}return t=r.join(""),new $l(t)}microsoftTranscription(){return(0,Al.sprintf)("%s.ipv6-literal.net",this.correctForm().replace(/:/g,"-"))}mask(e=this.subnetMask){return this.getBitsBase2(0,e)}possibleSubnets(e=128){const t=El.BITS-this.subnetMask-Math.abs(e-El.BITS);return t<0?"0":function(e){const t=/(\d+)(\d{3})/;for(;t.test(e);)e=e.replace(t,"$1,$2");return e}(new Ll.BigInteger("2",10).pow(t).toString(10))}_startAddress(){return new Ll.BigInteger(this.mask()+"0".repeat(El.BITS-this.subnetMask),2)}startAddress(){return $l.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new Ll.BigInteger("1");return $l.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new Ll.BigInteger(this.mask()+"1".repeat(El.BITS-this.subnetMask),2)}endAddress(){return $l.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new Ll.BigInteger("1");return $l.fromBigInteger(this._endAddress().subtract(e))}getScope(){let e=El.SCOPES[this.getBits(12,16).intValue()];return"Global unicast"===this.getType()&&"Link local"!==e&&(e="Global"),e||"Unknown"}getType(){for(const e of Object.keys(El.TYPES))if(this.isInSubnet(new $l(e)))return El.TYPES[e];return"Global unicast"}getBits(e,t){return new Ll.BigInteger(this.getBitsBase2(e,t),2)}getBitsBase2(e,t){return this.binaryZeroPad().slice(e,t)}getBitsBase16(e,t){const r=t-e;if(r%4!=0)throw new Error("Length of bits to retrieve must be divisible by four");return this.getBits(e,t).toString(16).padStart(r/4,"0")}getBitsPastSubnet(){return this.getBitsBase2(this.subnetMask,El.BITS)}reverseForm(e){e||(e={});const t=Math.floor(this.subnetMask/4),r=this.canonicalForm().replace(/:/g,"").split("").slice(0,t).reverse().join(".");return t>0?e.omitSuffix?r:(0,Al.sprintf)("%s.ip6.arpa.",r):e.omitSuffix?"":"ip6.arpa."}correctForm(){let e,t=[],r=0;const i=[];for(e=0;e<this.parsedAddress.length;e++){const t=parseInt(this.parsedAddress[e],16);0===t&&r++,0!==t&&r>0&&(r>1&&i.push([e-r,e-1]),r=0)}r>1&&i.push([this.parsedAddress.length-r,this.parsedAddress.length-1]);const n=i.map((e=>e[1]-e[0]+1));if(i.length>0){const e=n.indexOf(Math.max(...n));t=function(e,t){const r=[],i=[];let n;for(n=0;n<e.length;n++)n<t[0]?r.push(e[n]):n>t[1]&&i.push(e[n]);return r.concat(["compact"]).concat(i)}(this.parsedAddress,i[e])}else t=this.parsedAddress;for(e=0;e<t.length;e++)"compact"!==t[e]&&(t[e]=parseInt(t[e],16).toString(16));let s=t.join(":");return s=s.replace(/^compact$/,"::"),s=s.replace(/^compact|compact$/,":"),s=s.replace(/compact/,""),s}binaryZeroPad(){return this.bigInteger().toString(2).padStart(El.BITS,"0")}parse4in6(e){const t=e.split(":"),r=t.slice(-1)[0].match(Ol.RE_ADDRESS);if(r){this.parsedAddress4=r[0],this.address4=new xl.Address4(this.parsedAddress4);for(let t=0;t<this.address4.groups;t++)if(/^0[0-9]+/.test(this.address4.parsedAddress[t]))throw new Ml.AddressError("IPv4 addresses can't have leading zeroes.",e.replace(Ol.RE_ADDRESS,this.address4.parsedAddress.map(Bl).join(".")));this.v4=!0,t[t.length-1]=this.address4.toGroup6(),e=t.join(":")}return e}parse(e){const t=(e=this.parse4in6(e)).match(El.RE_BAD_CHARACTERS);if(t)throw new Ml.AddressError((0,Al.sprintf)("Bad character%s detected in address: %s",t.length>1?"s":"",t.join("")),e.replace(El.RE_BAD_CHARACTERS,'<span class="parse-error">$1</span>'));const r=e.match(El.RE_BAD_ADDRESS);if(r)throw new Ml.AddressError((0,Al.sprintf)("Address failed regex: %s",r.join("")),e.replace(El.RE_BAD_ADDRESS,'<span class="parse-error">$1</span>'));let i=[];const n=e.split("::");if(2===n.length){let e=n[0].split(":"),t=n[1].split(":");1===e.length&&""===e[0]&&(e=[]),1===t.length&&""===t[0]&&(t=[]);const r=this.groups-(e.length+t.length);if(!r)throw new Ml.AddressError("Error parsing groups");this.elidedGroups=r,this.elisionBegin=e.length,this.elisionEnd=e.length+this.elidedGroups,i=i.concat(e);for(let e=0;e<r;e++)i.push("0");i=i.concat(t)}else{if(1!==n.length)throw new Ml.AddressError("Too many :: groups found");i=e.split(":"),this.elidedGroups=0}if(i=i.map((e=>(0,Al.sprintf)("%x",parseInt(e,16)))),i.length!==this.groups)throw new Ml.AddressError("Incorrect number of groups found");return i}canonicalForm(){return this.parsedAddress.map(Fl).join(":")}decimal(){return this.parsedAddress.map((e=>(0,Al.sprintf)("%05d",parseInt(e,16)))).join(":")}bigInteger(){return new Ll.BigInteger(this.parsedAddress.map(Fl).join(""),16)}to4(){const e=this.binaryZeroPad().split("");return xl.Address4.fromHex(new Ll.BigInteger(e.slice(96,128).join(""),2).toString(16))}to4in6(){const e=this.to4(),t=new $l(this.parsedAddress.slice(0,6).join(":"),6).correctForm();let r="";return/:$/.test(t)||(r=":"),t+r+e.address}inspectTeredo(){const e=this.getBitsBase16(0,32),t=this.getBits(80,96).xor(new Ll.BigInteger("ffff",16)).toString(),r=xl.Address4.fromHex(this.getBitsBase16(32,64)),i=xl.Address4.fromHex(this.getBits(96,128).xor(new Ll.BigInteger("ffffffff",16)).toString(16)),n=this.getBits(64,80),s=this.getBitsBase2(64,80),a=n.testBit(15),o=n.testBit(14),c=n.testBit(8),d=n.testBit(9),l=new Ll.BigInteger(s.slice(2,6)+s.slice(8,16),2).toString(10);return{prefix:(0,Al.sprintf)("%s:%s",e.slice(0,4),e.slice(4,8)),server4:r.address,client4:i.address,flags:s,coneNat:a,microsoft:{reserved:o,universalLocal:d,groupIndividual:c,nonce:l},udpPort:t}}inspect6to4(){const e=this.getBitsBase16(0,16),t=xl.Address4.fromHex(this.getBitsBase16(16,48));return{prefix:(0,Al.sprintf)("%s",e.slice(0,4)),gateway:t.address}}to6to4(){if(!this.is4())return null;const e=["2002",this.getBitsBase16(96,112),this.getBitsBase16(112,128),"","/16"].join(":");return new $l(e)}toByteArray(){const e=this.bigInteger().toByteArray();return 17===e.length&&0===e[0]?e.slice(1):e}toUnsignedByteArray(){return this.toByteArray().map(Ul)}static fromByteArray(e){return this.fromUnsignedByteArray(e.map(Ul))}static fromUnsignedByteArray(e){const t=new Ll.BigInteger("256",10);let r=new Ll.BigInteger("0",10),i=new Ll.BigInteger("1",10);for(let n=e.length-1;n>=0;n--)r=r.add(i.multiply(new Ll.BigInteger(e[n].toString(10),10))),i=i.multiply(t);return $l.fromBigInteger(r)}isCanonical(){return this.addressMinusSuffix===this.canonicalForm()}isLinkLocal(){return"1111111010000000000000000000000000000000000000000000000000000000"===this.getBitsBase2(0,64)}isMulticast(){return"Multicast"===this.getType()}is4(){return this.v4}isTeredo(){return this.isInSubnet(new $l("2001::/32"))}is6to4(){return this.isInSubnet(new $l("2002::/16"))}isLoopback(){return"Loopback"===this.getType()}href(e){return e=void 0===e?"":(0,Al.sprintf)(":%s",e),(0,Al.sprintf)("http://[%s]%s/",this.correctForm(),e)}link(e){e||(e={}),void 0===e.className&&(e.className=""),void 0===e.prefix&&(e.prefix="/#address="),void 0===e.v4&&(e.v4=!1);let t=this.correctForm;return e.v4&&(t=this.to4in6),e.className?(0,Al.sprintf)('<a href="%1$s%2$s" class="%3$s">%2$s</a>',e.prefix,t.call(this),e.className):(0,Al.sprintf)('<a href="%1$s%2$s">%2$s</a>',e.prefix,t.call(this))}group(){if(0===this.elidedGroups)return Il.simpleGroup(this.address).join(":");Nl("number"==typeof this.elidedGroups),Nl("number"==typeof this.elisionBegin);const e=[],[t,r]=this.address.split("::");t.length?e.push(...Il.simpleGroup(t)):e.push("");const i=["hover-group"];for(let e=this.elisionBegin;e<this.elisionBegin+this.elidedGroups;e++)i.push((0,Al.sprintf)("group-%d",e));return e.push((0,Al.sprintf)('<span class="%s"></span>',i.join(" "))),r.length?e.push(...Il.simpleGroup(r,this.elisionEnd)):e.push(""),this.is4()&&(Nl(this.address4 instanceof xl.Address4),e.pop(),e.push(this.address4.groupForV6())),e.join(":")}regularExpressionString(e=!1){let t=[];const r=new $l(this.correctForm());if(0===r.elidedGroups)t.push((0,jl.simpleRegularExpression)(r.parsedAddress));else if(r.elidedGroups===El.GROUPS)t.push((0,jl.possibleElisions)(El.GROUPS));else{const e=r.address.split("::");e[0].length&&t.push((0,jl.simpleRegularExpression)(e[0].split(":"))),Nl("number"==typeof r.elidedGroups),t.push((0,jl.possibleElisions)(r.elidedGroups,0!==e[0].length,0!==e[1].length)),e[1].length&&t.push((0,jl.simpleRegularExpression)(e[1].split(":"))),t=[t.join(":")]}return e||(t=["(?=^|",jl.ADDRESS_BOUNDARY,"|[^\\w\\:])(",...t,")(?=[^\\w\\:]|",jl.ADDRESS_BOUNDARY,"|$)"]),t.join("")}regularExpression(e=!1){return new RegExp(this.regularExpressionString(e),"i")}}pl.Address6=$l,function(e){var t=Gt&&Gt.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=Gt&&Gt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=Gt&&Gt.__importStar||function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&t(i,e,n);return r(i,e),i};Object.defineProperty(e,"__esModule",{value:!0}),e.v6=e.AddressError=e.Address6=e.Address4=void 0;const n=Wd;Object.defineProperty(e,"Address4",{enumerable:!0,get:function(){return n.Address4}});const s=pl;Object.defineProperty(e,"Address6",{enumerable:!0,get:function(){return s.Address6}});const a=Qd;Object.defineProperty(e,"AddressError",{enumerable:!0,get:function(){return a.AddressError}});const o=i(hl);e.v6={helpers:o}}(Hd);var zl={exports:{}};!function(e){(function(){var t,r,i,n,s,a,o,c;r={},null!==e&&e.exports?e.exports=r:this.ipaddr=r,o=function(e,t,r,i){var n,s;if(e.length!==t.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(n=0;i>0;){if((s=r-i)<0&&(s=0),e[n]>>s!=t[n]>>s)return!1;i-=r,n+=1}return!0},r.subnetMatch=function(e,t,r){var i,n,s,a,o;for(s in null==r&&(r="unicast"),t)for(!(a=t[s])[0]||a[0]instanceof Array||(a=[a]),i=0,n=a.length;i<n;i++)if(o=a[i],e.kind()===o[0].kind()&&e.match.apply(e,o))return s;return r},r.IPv4=function(){function e(e){var t,r,i;if(4!==e.length)throw new Error("ipaddr: ipv4 octet count should be 4");for(t=0,r=e.length;t<r;t++)if(!(0<=(i=e[t])&&i<=255))throw new Error("ipaddr: ipv4 octet should fit in 8 bits");this.octets=e}return e.prototype.kind=function(){return"ipv4"},e.prototype.toString=function(){return this.octets.join(".")},e.prototype.toNormalizedString=function(){return this.toString()},e.prototype.toByteArray=function(){return this.octets.slice(0)},e.prototype.match=function(e,t){var r;if(void 0===t&&(e=(r=e)[0],t=r[1]),"ipv4"!==e.kind())throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");return o(this.octets,e.octets,8,t)},e.prototype.SpecialRanges={unspecified:[[new e([0,0,0,0]),8]],broadcast:[[new e([255,255,255,255]),32]],multicast:[[new e([224,0,0,0]),4]],linkLocal:[[new e([169,254,0,0]),16]],loopback:[[new e([127,0,0,0]),8]],carrierGradeNat:[[new e([100,64,0,0]),10]],private:[[new e([10,0,0,0]),8],[new e([172,16,0,0]),12],[new e([192,168,0,0]),16]],reserved:[[new e([192,0,0,0]),24],[new e([192,0,2,0]),24],[new e([192,88,99,0]),24],[new e([198,51,100,0]),24],[new e([203,0,113,0]),24],[new e([240,0,0,0]),4]]},e.prototype.range=function(){return r.subnetMatch(this,this.SpecialRanges)},e.prototype.toIPv4MappedAddress=function(){return r.IPv6.parse("::ffff:"+this.toString())},e.prototype.prefixLengthFromSubnetMask=function(){var e,t,r,i,n,s,a;for(a={0:8,128:7,192:6,224:5,240:4,248:3,252:2,254:1,255:0},e=0,n=!1,t=r=3;r>=0;t=r+=-1){if(!((i=this.octets[t])in a))return null;if(s=a[i],n&&0!==s)return null;8!==s&&(n=!0),e+=s}return 32-e},e}(),i="(0?\\d+|0x[a-f0-9]+)",n={fourOctet:new RegExp("^"+i+"\\."+i+"\\."+i+"\\."+i+"$","i"),longValue:new RegExp("^"+i+"$","i")},r.IPv4.parser=function(e){var t,r,i,s,a;if(r=function(e){return"0"===e[0]&&"x"!==e[1]?parseInt(e,8):parseInt(e)},t=e.match(n.fourOctet))return function(){var e,n,s,a;for(a=[],e=0,n=(s=t.slice(1,6)).length;e<n;e++)i=s[e],a.push(r(i));return a}();if(t=e.match(n.longValue)){if((a=r(t[1]))>4294967295||a<0)throw new Error("ipaddr: address outside defined range");return function(){var e,t;for(t=[],s=e=0;e<=24;s=e+=8)t.push(a>>s&255);return t}().reverse()}return null},r.IPv6=function(){function e(e,t){var r,i,n,s,a,o;if(16===e.length)for(this.parts=[],r=i=0;i<=14;r=i+=2)this.parts.push(e[r]<<8|e[r+1]);else{if(8!==e.length)throw new Error("ipaddr: ipv6 part count should be 8 or 16");this.parts=e}for(n=0,s=(o=this.parts).length;n<s;n++)if(!(0<=(a=o[n])&&a<=65535))throw new Error("ipaddr: ipv6 part should fit in 16 bits");t&&(this.zoneId=t)}return e.prototype.kind=function(){return"ipv6"},e.prototype.toString=function(){return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/,"::")},e.prototype.toRFC5952String=function(){var e,t,r,i,n;for(i=/((^|:)(0(:|$)){2,})/g,n=this.toNormalizedString(),e=0,t=-1;r=i.exec(n);)r[0].length>t&&(e=r.index,t=r[0].length);return t<0?n:n.substring(0,e)+"::"+n.substring(e+t)},e.prototype.toByteArray=function(){var e,t,r,i,n;for(e=[],t=0,r=(n=this.parts).length;t<r;t++)i=n[t],e.push(i>>8),e.push(255&i);return e},e.prototype.toNormalizedString=function(){var e,t,r;return e=function(){var e,r,i,n;for(n=[],e=0,r=(i=this.parts).length;e<r;e++)t=i[e],n.push(t.toString(16));return n}.call(this).join(":"),r="",this.zoneId&&(r="%"+this.zoneId),e+r},e.prototype.toFixedLengthString=function(){var e,t,r;return e=function(){var e,r,i,n;for(n=[],e=0,r=(i=this.parts).length;e<r;e++)t=i[e],n.push(t.toString(16).padStart(4,"0"));return n}.call(this).join(":"),r="",this.zoneId&&(r="%"+this.zoneId),e+r},e.prototype.match=function(e,t){var r;if(void 0===t&&(e=(r=e)[0],t=r[1]),"ipv6"!==e.kind())throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");return o(this.parts,e.parts,16,t)},e.prototype.SpecialRanges={unspecified:[new e([0,0,0,0,0,0,0,0]),128],linkLocal:[new e([65152,0,0,0,0,0,0,0]),10],multicast:[new e([65280,0,0,0,0,0,0,0]),8],loopback:[new e([0,0,0,0,0,0,0,1]),128],uniqueLocal:[new e([64512,0,0,0,0,0,0,0]),7],ipv4Mapped:[new e([0,0,0,0,0,65535,0,0]),96],rfc6145:[new e([0,0,0,0,65535,0,0,0]),96],rfc6052:[new e([100,65435,0,0,0,0,0,0]),96],"6to4":[new e([8194,0,0,0,0,0,0,0]),16],teredo:[new e([8193,0,0,0,0,0,0,0]),32],reserved:[[new e([8193,3512,0,0,0,0,0,0]),32]]},e.prototype.range=function(){return r.subnetMatch(this,this.SpecialRanges)},e.prototype.isIPv4MappedAddress=function(){return"ipv4Mapped"===this.range()},e.prototype.toIPv4Address=function(){var e,t,i;if(!this.isIPv4MappedAddress())throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4");return e=(i=this.parts.slice(-2))[0],t=i[1],new r.IPv4([e>>8,255&e,t>>8,255&t])},e.prototype.prefixLengthFromSubnetMask=function(){var e,t,r,i,n,s,a;for(a={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},e=0,n=!1,t=r=7;r>=0;t=r+=-1){if(!((i=this.parts[t])in a))return null;if(s=a[i],n&&0!==s)return null;16!==s&&(n=!0),e+=s}return 128-e},e}(),s="(?:[0-9a-f]+::?)+",c="%[0-9a-z]{1,}",a={zoneIndex:new RegExp(c,"i"),native:new RegExp("^(::)?("+s+")?([0-9a-f]+)?(::)?("+c+")?$","i"),transitional:new RegExp("^((?:"+s+")|(?:::)(?:"+s+")?)"+i+"\\."+i+"\\."+i+"\\."+i+"("+c+")?$","i")},t=function(e,t){var r,i,n,s,o,c;if(e.indexOf("::")!==e.lastIndexOf("::"))return null;for((c=(e.match(a.zoneIndex)||[])[0])&&(c=c.substring(1),e=e.replace(/%.+$/,"")),r=0,i=-1;(i=e.indexOf(":",i+1))>=0;)r++;if("::"===e.substr(0,2)&&r--,"::"===e.substr(-2,2)&&r--,r>t)return null;for(o=t-r,s=":";o--;)s+="0:";return":"===(e=e.replace("::",s))[0]&&(e=e.slice(1)),":"===e[e.length-1]&&(e=e.slice(0,-1)),{parts:t=function(){var t,r,i,s;for(s=[],t=0,r=(i=e.split(":")).length;t<r;t++)n=i[t],s.push(parseInt(n,16));return s}(),zoneId:c}},r.IPv6.parser=function(e){var r,i,n,s,o,c,d;if(a.native.test(e))return t(e,8);if((s=e.match(a.transitional))&&(d=s[6]||"",(r=t(s[1].slice(0,-1)+d,6)).parts)){for(i=0,n=(c=[parseInt(s[2]),parseInt(s[3]),parseInt(s[4]),parseInt(s[5])]).length;i<n;i++)if(!(0<=(o=c[i])&&o<=255))return null;return r.parts.push(c[0]<<8|c[1]),r.parts.push(c[2]<<8|c[3]),{parts:r.parts,zoneId:r.zoneId}}return null},r.IPv4.isIPv4=r.IPv6.isIPv6=function(e){return null!==this.parser(e)},r.IPv4.isValid=function(e){try{return new this(this.parser(e)),!0}catch(e){return!1}},r.IPv4.isValidFourPartDecimal=function(e){return!(!r.IPv4.isValid(e)||!e.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/))},r.IPv6.isValid=function(e){var t;if("string"==typeof e&&-1===e.indexOf(":"))return!1;try{return new this((t=this.parser(e)).parts,t.zoneId),!0}catch(e){return!1}},r.IPv4.parse=function(e){var t;if(null===(t=this.parser(e)))throw new Error("ipaddr: string is not formatted like ip address");return new this(t)},r.IPv6.parse=function(e){var t;if(null===(t=this.parser(e)).parts)throw new Error("ipaddr: string is not formatted like ip address");return new this(t.parts,t.zoneId)},r.IPv4.parseCIDR=function(e){var t,r,i;if((r=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(r[2]))>=0&&t<=32)return i=[this.parse(r[1]),t],Object.defineProperty(i,"toString",{value:function(){return this.join("/")}}),i;throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},r.IPv4.subnetMaskFromPrefixLength=function(e){var t,r,i;if((e=parseInt(e))<0||e>32)throw new Error("ipaddr: invalid IPv4 prefix length");for(i=[0,0,0,0],r=0,t=Math.floor(e/8);r<t;)i[r]=255,r++;return t<4&&(i[t]=Math.pow(2,e%8)-1<<8-e%8),new this(i)},r.IPv4.broadcastAddressFromCIDR=function(e){var t,r,i,n,s;try{for(i=(t=this.parseCIDR(e))[0].toByteArray(),s=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),n=[],r=0;r<4;)n.push(parseInt(i[r],10)|255^parseInt(s[r],10)),r++;return new this(n)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},r.IPv4.networkAddressFromCIDR=function(e){var t,r,i,n,s;try{for(i=(t=this.parseCIDR(e))[0].toByteArray(),s=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),n=[],r=0;r<4;)n.push(parseInt(i[r],10)&parseInt(s[r],10)),r++;return new this(n)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},r.IPv6.parseCIDR=function(e){var t,r,i;if((r=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(r[2]))>=0&&t<=128)return i=[this.parse(r[1]),t],Object.defineProperty(i,"toString",{value:function(){return this.join("/")}}),i;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},r.isValid=function(e){return r.IPv6.isValid(e)||r.IPv4.isValid(e)},r.parse=function(e){if(r.IPv6.isValid(e))return r.IPv6.parse(e);if(r.IPv4.isValid(e))return r.IPv4.parse(e);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},r.parseCIDR=function(e){try{return r.IPv6.parseCIDR(e)}catch(t){try{return r.IPv4.parseCIDR(e)}catch(e){throw new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},r.fromByteArray=function(e){var t;if(4===(t=e.length))return new r.IPv4(e);if(16===t)return new r.IPv6(e);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},r.process=function(e){var t;return"ipv6"===(t=this.parse(e)).kind()&&t.isIPv4MappedAddress()?t.toIPv4Address():t}}).call(Gt)}(zl);var Vl=zl.exports,ql=function(e,t){if("string"==typeof t)return Gl(e,t);if("object"==typeof t){for(var r=!1,i=0;i<t.length;i++)if(Gl(e,t[i])){r=!0;break}return r}};function Gl(e,t){try{var r=Vl.process(e);if(-1===t.indexOf("/")){var i=Vl.process(t);return"ipv6"===r.kind()&&"ipv6"===i.kind()?r.toNormalizedString()===i.toNormalizedString():r.toString()==i.toString()}var n=Vl.parseCIDR(t);return r.match(n)}catch(e){return!1}}var Hl=ql,Wl=/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,Kl=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.2.0/24","192.168.0.0/16","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","224.0.0.0/3"],Jl=["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"];for(var Ql=function(e){var t=[],r={originalIp:e,boiledIp:!1,isValid:!1,isBogon:!1,isApipa:!1,isMulticast:!1,isRfc1918:!1,isPublicIp:!1};if(Wl.test(e)){r.isValid=!0;for(var i=e.split("."),n=0;n<4;n++)t.push(parseInt(i[n],10));r.boiledIp=t.join("."),Hl(r.boiledIp,Kl)&&(r.isBogon=!0),Hl(r.boiledIp,"169.254.0.0/16")&&(r.isApipa=!0),Hl(r.boiledIp,"224.0.0.0/4")&&(r.isMulticast=!0),Hl(r.boiledIp,Jl)?r.isRfc1918=!0:!1===r.isBogon&&(r.isPublicIp=!0)}return r},Zl=Ht(Ql),Yl={exports:{}},Xl=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i,ep=[],tp=0;tp<256;tp++)ep[tp]=(tp+256).toString(16).substr(1);Yl.exports=function(e,t){var r;if(Buffer.isBuffer(e))r=function(e,t){var r=t||0,i=ep;return i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]}(e);else{if("[object String]"!==Object.prototype.toString.call(e))return!1;r=e}if(r=r.toLowerCase(),!Xl.test(r))return!1;if(void 0===t)t=rp(r);else if(rp(r)!==t)return!1;switch(t){case 1:case 2:return!0;case 3:case 4:case 5:return-1!==["8","9","a","b"].indexOf(r.charAt(19));default:throw new Error("Invalid version provided.")}};var rp=Yl.exports.version=function(e){return 0|e.charAt(14)},ip=Ht(Yl.exports);const np=Object.create(null);np.open="0",np.close="1",np.ping="2",np.pong="3",np.message="4",np.upgrade="5",np.noop="6";const sp=Object.create(null);Object.keys(np).forEach((e=>{sp[np[e]]=e}));const ap={type:"error",data:"parser error"},op="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),cp="function"==typeof ArrayBuffer,dp=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,lp=({type:e,data:t},r,i)=>op&&t instanceof Blob?r?i(t):pp(t,i):cp&&(t instanceof ArrayBuffer||dp(t))?r?i(t):pp(new Blob([t]),i):i(np[e]+(t||"")),pp=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+(e||""))},r.readAsDataURL(e)};function up(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let hp;const mp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",fp="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let Oy=0;Oy<64;Oy++)fp[mp.charCodeAt(Oy)]=Oy;const gp="function"==typeof ArrayBuffer,vp=(e,t)=>{if("string"!=typeof e)return{type:"message",data:bp(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:_p(e.substring(1),t)};return sp[r]?e.length>1?{type:sp[r],data:e.substring(1)}:{type:sp[r]}:ap},_p=(e,t)=>{if(gp){const r=(e=>{let t,r,i,n,s,a=.75*e.length,o=e.length,c=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);const d=new ArrayBuffer(a),l=new Uint8Array(d);for(t=0;t<o;t+=4)r=fp[e.charCodeAt(t)],i=fp[e.charCodeAt(t+1)],n=fp[e.charCodeAt(t+2)],s=fp[e.charCodeAt(t+3)],l[c++]=r<<2|i>>4,l[c++]=(15&i)<<4|n>>2,l[c++]=(3&n)<<6|63&s;return d})(e);return bp(r,t)}return{base64:!0,data:e}},bp=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,yp=String.fromCharCode(30);function wp(){return new TransformStream({transform(e,t){!function(e,t){op&&e.data instanceof Blob?e.data.arrayBuffer().then(up).then(t):cp&&(e.data instanceof ArrayBuffer||dp(e.data))?t(up(e.data)):lp(e,!1,(e=>{hp||(hp=new TextEncoder),t(hp.encode(e))}))}(e,(r=>{const i=r.length;let n;if(i<126)n=new Uint8Array(1),new DataView(n.buffer).setUint8(0,i);else if(i<65536){n=new Uint8Array(3);const e=new DataView(n.buffer);e.setUint8(0,126),e.setUint16(1,i)}else{n=new Uint8Array(9);const e=new DataView(n.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(i))}e.data&&"string"!=typeof e.data&&(n[0]|=128),t.enqueue(n),t.enqueue(r)}))}})}let Sp;function Cp(e){return e.reduce(((e,t)=>e+t.length),0)}function Rp(e,t){if(e[0].length===t)return e.shift();const r=new Uint8Array(t);let i=0;for(let n=0;n<t;n++)r[n]=e[0][i++],i===e[0].length&&(e.shift(),i=0);return e.length&&i<e[0].length&&(e[0]=e[0].slice(i)),r}function Tp(e){if(e)return function(e){for(var t in Tp.prototype)e[t]=Tp.prototype[t];return e}(e)}Tp.prototype.on=Tp.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},Tp.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},Tp.prototype.off=Tp.prototype.removeListener=Tp.prototype.removeAllListeners=Tp.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,i=this._callbacks["$"+e];if(!i)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var n=0;n<i.length;n++)if((r=i[n])===t||r.fn===t){i.splice(n,1);break}return 0===i.length&&delete this._callbacks["$"+e],this},Tp.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),r=this._callbacks["$"+e],i=1;i<arguments.length;i++)t[i-1]=arguments[i];if(r){i=0;for(var n=(r=r.slice(0)).length;i<n;++i)r[i].apply(this,t)}return this},Tp.prototype.emitReserved=Tp.prototype.emit,Tp.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},Tp.prototype.hasListeners=function(e){return!!this.listeners(e).length};const Pp="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function kp(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const Dp=Pp.setTimeout,Op=Pp.clearTimeout;function Ep(e,t){t.useNativeTimers?(e.setTimeoutFn=Dp.bind(Pp),e.clearTimeoutFn=Op.bind(Pp)):(e.setTimeoutFn=Pp.setTimeout.bind(Pp),e.clearTimeoutFn=Pp.clearTimeout.bind(Pp))}class Ip extends Error{constructor(e,t,r){super(e),this.description=t,this.context=r,this.type="TransportError"}}class xp extends Tp{constructor(e){super(),this.writable=!1,Ep(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,r){return super.emitReserved("error",new Ip(e,t,r)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=vp(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t}(e);return t.length?"?"+t:""}}const jp="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),Mp=64,Lp={};let Ap,Np=0,Bp=0;function Fp(e){let t="";do{t=jp[e%Mp]+t,e=Math.floor(e/Mp)}while(e>0);return t}function Up(){const e=Fp(+new Date);return e!==Ap?(Np=0,Ap=e):e+"."+Fp(Np++)}for(;Bp<Mp;Bp++)Lp[jp[Bp]]=Bp;let $p=!1;try{$p="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(Ey){}const zp=$p;function Vp(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||zp))return new XMLHttpRequest}catch(e){}if(!t)try{return new(Pp[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function qp(){}const Gp=null!=new Vp({xdomain:!1}).responseType;class Hp extends Tp{constructor(e,t){super(),Ep(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.data=void 0!==t.data?t.data:null,this.create()}create(){var e;const t=kp(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd;const r=this.xhr=new Vp(t);try{r.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&r.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{r.setRequestHeader("Accept","*/*")}catch(e){}null===(e=this.opts.cookieJar)||void 0===e||e.addCookies(r),"withCredentials"in r&&(r.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(r.timeout=this.opts.requestTimeout),r.onreadystatechange=()=>{var e;3===r.readyState&&(null===(e=this.opts.cookieJar)||void 0===e||e.parseCookies(r)),4===r.readyState&&(200===r.status||1223===r.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof r.status?r.status:0)}),0))},r.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=Hp.requestsCount++,Hp.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=qp,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete Hp.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(Hp.requestsCount=0,Hp.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",Wp);else if("function"==typeof addEventListener){addEventListener("onpagehide"in Pp?"pagehide":"unload",Wp,!1)}function Wp(){for(let e in Hp.requests)Hp.requests.hasOwnProperty(e)&&Hp.requests[e].abort()}const Kp="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),Jp=Pp.WebSocket||Pp.MozWebSocket,Qp="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();const Zp={websocket:class extends xp{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,r=Qp?{}:kp(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=Qp?new Jp(e,t,r):t?new Jp(e,t):new Jp(e)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;lp(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&Kp((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=Up()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!Jp}},webtransport:class extends xp{get name(){return"webtransport"}doOpen(){"function"==typeof WebTransport&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then((()=>{this.onClose()})).catch((e=>{this.onError("webtransport error",e)})),this.transport.ready.then((()=>{this.transport.createBidirectionalStream().then((e=>{const t=function(e,t){Sp||(Sp=new TextDecoder);const r=[];let i=0,n=-1,s=!1;return new TransformStream({transform(a,o){for(r.push(a);;){if(0===i){if(Cp(r)<1)break;const e=Rp(r,1);s=128==(128&e[0]),n=127&e[0],i=n<126?3:126===n?1:2}else if(1===i){if(Cp(r)<2)break;const e=Rp(r,2);n=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),i=3}else if(2===i){if(Cp(r)<8)break;const e=Rp(r,8),t=new DataView(e.buffer,e.byteOffset,e.length),s=t.getUint32(0);if(s>Math.pow(2,21)-1){o.enqueue(ap);break}n=s*Math.pow(2,32)+t.getUint32(4),i=3}else{if(Cp(r)<n)break;const e=Rp(r,n);o.enqueue(vp(s?e:Sp.decode(e),t)),i=0}if(0===n||n>e){o.enqueue(ap);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=e.readable.pipeThrough(t).getReader(),i=wp();i.readable.pipeTo(e.writable),this.writer=i.writable.getWriter();const n=()=>{r.read().then((({done:e,value:t})=>{e||(this.onPacket(t),n())})).catch((e=>{}))};n();const s={type:"open"};this.query.sid&&(s.data=`{"sid":"${this.query.sid}"}`),this.writer.write(s).then((()=>this.onOpen()))}))})))}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;this.writer.write(r).then((()=>{i&&Kp((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends xp{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let r=location.port;r||(r=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||r!==e.port}const t=e&&e.forceBase64;this.supportsBinary=Gp&&!t,this.opts.withCredentials&&(this.cookieJar=void 0)}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){((e,t)=>{const r=e.split(yp),i=[];for(let e=0;e<r.length;e++){const n=vp(r[e],t);if(i.push(n),"error"===n.type)break}return i})(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const r=e.length,i=new Array(r);let n=0;e.forEach(((e,s)=>{lp(e,!1,(e=>{i[s]=e,++n===r&&t(i.join(yp))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=Up()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}request(e={}){return Object.assign(e,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new Hp(this.uri(),e)}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}},Yp=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Xp=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function eu(e){if(e.length>2e3)throw"URI too long";const t=e,r=e.indexOf("["),i=e.indexOf("]");-1!=r&&-1!=i&&(e=e.substring(0,r)+e.substring(r,i).replace(/:/g,";")+e.substring(i,e.length));let n=Yp.exec(e||""),s={},a=14;for(;a--;)s[Xp[a]]=n[a]||"";return-1!=r&&-1!=i&&(s.source=t,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s.pathNames=function(e,t){const r=/\/{2,9}/g,i=t.replace(r,"/").split("/");"/"!=t.slice(0,1)&&0!==t.length||i.splice(0,1);"/"==t.slice(-1)&&i.splice(i.length-1,1);return i}(0,s.path),s.queryKey=function(e,t){const r={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,i){t&&(r[t]=i)})),r}(0,s.query),s}let tu=class e extends Tp{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=eu(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=eu(t.host).host),Ep(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},r=e.split("&");for(let e=0,i=r.length;e<i;e++){let i=r[e].split("=");t[decodeURIComponent(i[0])]=decodeURIComponent(i[1])}return t}(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new Zp[e](r)}open(){let t;if(this.opts.rememberUpgrade&&e.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(e){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(e=>this.onClose("transport close",e)))}probe(t){let r=this.createTransport(t),i=!1;e.priorWebsocketSuccess=!1;const n=()=>{i||(r.send([{type:"ping",data:"probe"}]),r.once("packet",(t=>{if(!i)if("pong"===t.type&&"probe"===t.data){if(this.upgrading=!0,this.emitReserved("upgrading",r),!r)return;e.priorWebsocketSuccess="websocket"===r.name,this.transport.pause((()=>{i||"closed"!==this.readyState&&(l(),this.setTransport(r),r.send([{type:"upgrade"}]),this.emitReserved("upgrade",r),r=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=r.name,this.emitReserved("upgradeError",e)}})))};function s(){i||(i=!0,l(),r.close(),r=null)}const a=e=>{const t=new Error("probe error: "+e);t.transport=r.name,s(),this.emitReserved("upgradeError",t)};function o(){a("transport closed")}function c(){a("socket closed")}function d(e){r&&e.name!==r.name&&s()}const l=()=>{r.removeListener("open",n),r.removeListener("error",a),r.removeListener("close",o),this.off("close",c),this.off("upgrading",d)};r.once("open",n),r.once("error",a),r.once("close",o),this.once("close",c),this.once("upgrading",d),-1!==this.upgrades.indexOf("webtransport")&&"webtransport"!==t?this.setTimeoutFn((()=>{i||r.open()}),200):r.open()}onOpen(){if(this.readyState="open",e.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){let e=0;const t=this.upgrades.length;for(;e<t;e++)this.probe(this.upgrades[e])}}onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),this.resetPingTimeout(),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":const t=new Error("server error");t.code=e.data,this.onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this.upgrades=this.filterUpgrades(e.upgrades),this.pingInterval=e.pingInterval,this.pingTimeout=e.pingTimeout,this.maxPayload=e.maxPayload,this.onOpen(),"closed"!==this.readyState&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn((()=>{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let r=0;r<this.writeBuffer.length;r++){const i=this.writeBuffer[r].data;if(i&&(e+="string"==typeof(t=i)?function(e){let t=0,r=0;for(let i=0,n=e.length;i<n;i++)t=e.charCodeAt(i),t<128?r+=1:t<2048?r+=2:t<55296||t>=57344?r+=3:(i++,r+=4);return r}(t):Math.ceil(1.33*(t.byteLength||t.size))),r>0&&e>this.maxPayload)return this.writeBuffer.slice(0,r);e+=2}var t;return this.writeBuffer}write(e,t,r){return this.sendPacket("message",e,t,r),this}send(e,t,r){return this.sendPacket("message",e,t,r),this}sendPacket(e,t,r,i){if("function"==typeof t&&(i=t,t=void 0),"function"==typeof r&&(i=r,r=null),"closing"===this.readyState||"closed"===this.readyState)return;(r=r||{}).compress=!1!==r.compress;const n={type:e,data:t,options:r};this.emitReserved("packetCreate",n),this.writeBuffer.push(n),i&&this.once("flush",i),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},r=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?r():e()})):this.upgrading?r():e()),this}onError(t){e.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let r=0;const i=e.length;for(;r<i;r++)~this.transports.indexOf(e[r])&&t.push(e[r]);return t}};tu.protocol=4;const ru="function"==typeof ArrayBuffer,iu=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,nu=Object.prototype.toString,su="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===nu.call(Blob),au="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===nu.call(File);function ou(e){return ru&&(e instanceof ArrayBuffer||iu(e))||su&&e instanceof Blob||au&&e instanceof File}function cu(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(cu(e[t]))return!0;return!1}if(ou(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return cu(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&cu(e[t]))return!0;return!1}function du(e){const t=[],r=e.data,i=e;return i.data=lu(r,t),i.attachments=t.length,{packet:i,buffers:t}}function lu(e,t){if(!e)return e;if(ou(e)){const r={_placeholder:!0,num:t.length};return t.push(e),r}if(Array.isArray(e)){const r=new Array(e.length);for(let i=0;i<e.length;i++)r[i]=lu(e[i],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=lu(e[i],t));return r}return e}function pu(e,t){return e.data=uu(e.data,t),delete e.attachments,e}function uu(e,t){if(!e)return e;if(e&&!0===e._placeholder){if("number"==typeof e.num&&e.num>=0&&e.num<t.length)return t[e.num];throw new Error("illegal attachments")}if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=uu(e[r],t);else if("object"==typeof e)for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(e[r]=uu(e[r],t));return e}const hu=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var mu;!function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(mu||(mu={}));function fu(e){return"[object Object]"===Object.prototype.toString.call(e)}class gu extends Tp{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);const r=t.type===mu.BINARY_EVENT;r||t.type===mu.BINARY_ACK?(t.type=r?mu.EVENT:mu.ACK,this.reconstructor=new vu(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!ou(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const r={type:Number(e.charAt(0))};if(void 0===mu[r.type])throw new Error("unknown packet type "+r.type);if(r.type===mu.BINARY_EVENT||r.type===mu.BINARY_ACK){const i=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const n=e.substring(i,t);if(n!=Number(n)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(n)}if("/"===e.charAt(t+1)){const i=t+1;for(;++t;){if(","===e.charAt(t))break;if(t===e.length)break}r.nsp=e.substring(i,t)}else r.nsp="/";const i=e.charAt(t+1);if(""!==i&&Number(i)==i){const i=t+1;for(;++t;){const r=e.charAt(t);if(null==r||Number(r)!=r){--t;break}if(t===e.length)break}r.id=Number(e.substring(i,t+1))}if(e.charAt(++t)){const i=this.tryParse(e.substr(t));if(!gu.isPayloadValid(r.type,i))throw new Error("invalid payload");r.data=i}return r}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case mu.CONNECT:return fu(t);case mu.DISCONNECT:return void 0===t;case mu.CONNECT_ERROR:return"string"==typeof t||fu(t);case mu.EVENT:case mu.BINARY_EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===hu.indexOf(t[0]));case mu.ACK:case mu.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class vu{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=pu(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var _u=Object.freeze({__proto__:null,Decoder:gu,Encoder:class{constructor(e){this.replacer=e}encode(e){return e.type!==mu.EVENT&&e.type!==mu.ACK||!cu(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===mu.EVENT?mu.BINARY_EVENT:mu.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}encodeAsString(e){let t=""+e.type;return e.type!==mu.BINARY_EVENT&&e.type!==mu.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){const t=du(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},get PacketType(){return mu},protocol:5});function bu(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const yu=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class wu extends Tp{constructor(e,t,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[bu(e,"open",this.onopen.bind(this)),bu(e,"packet",this.onpacket.bind(this)),bu(e,"error",this.onerror.bind(this)),bu(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(yu.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;const r={type:mu.EVENT,data:t,options:{}};if(r.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++,i=t.pop();this._registerAckCallback(e,i),r.id=e}const i=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!i||!this.connected)||(this.connected?(this.notifyOutgoingListeners(r),this.packet(r)):this.sendBuffer.push(r)),this.flags={},this}_registerAckCallback(e,t){var r;const i=null!==(r=this.flags.timeout)&&void 0!==r?r:this._opts.ackTimeout;if(void 0===i)return void(this.acks[e]=t);const n=this.io.setTimeoutFn((()=>{delete this.acks[e];for(let t=0;t<this.sendBuffer.length;t++)this.sendBuffer[t].id===e&&this.sendBuffer.splice(t,1);t.call(this,new Error("operation has timed out"))}),i);this.acks[e]=(...e)=>{this.io.clearTimeoutFn(n),t.apply(this,[null,...e])}}emitWithAck(e,...t){const r=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((i,n)=>{t.push(((e,t)=>r?e?n(e):i(t):i(e))),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...i)=>{if(r!==this._queue[0])return;return null!==e?r.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...i)),r.pending=!1,this._drainQueue()})),this._queue.push(r),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:mu.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case mu.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):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/)"));break;case mu.EVENT:case mu.BINARY_EVENT:this.onevent(e);break;case mu.ACK:case mu.BINARY_ACK:this.onack(e);break;case mu.DISCONNECT:this.ondisconnect();break;case mu.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const r of t)r.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let r=!1;return function(...i){r||(r=!0,t.packet({type:mu.ACK,id:e,data:i}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:mu.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const t=this._anyOutgoingListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const t=this._anyOutgoingListeners.slice();for(const r of t)r.apply(this,e.data)}}}function Su(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Su.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-r:e+r}return 0|Math.min(e,this.max)},Su.prototype.reset=function(){this.attempts=0},Su.prototype.setMin=function(e){this.ms=e},Su.prototype.setMax=function(e){this.max=e},Su.prototype.setJitter=function(e){this.jitter=e};class Cu extends Tp{constructor(e,t){var r;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,Ep(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(r=t.randomizationFactor)&&void 0!==r?r:.5),this.backoff=new Su({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const i=t.parser||_u;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new tu(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=bu(t,"open",(function(){r.onopen(),e&&e()})),n=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},s=bu(t,"error",n);if(!1!==this._timeout){const e=this._timeout,r=this.setTimeoutFn((()=>{i(),n(new Error("timeout")),t.close()}),e);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}return this.subs.push(i),this.subs.push(s),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(bu(e,"ping",this.onping.bind(this)),bu(e,"data",this.ondata.bind(this)),bu(e,"error",this.onerror.bind(this)),bu(e,"close",this.onclose.bind(this)),bu(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){Kp((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r?this._autoConnect&&!r.active&&r.connect():(r=new wu(this,e,t),this.nsps[e]=r),r}_destroy(e){const t=Object.keys(this.nsps);for(const e of t){if(this.nsps[e].active)return}this._close()}_packet(e){const t=this.encoder.encode(e);for(let r=0;r<t.length;r++)this.engine.write(t[r],e.options)}cleanup(){this.subs.forEach((e=>e())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const Ru={};function Tu(e,t){"object"==typeof e&&(t=e,e=void 0);const r=function(e,t="",r){let i=e;r=r||"undefined"!=typeof location&&location,null==e&&(e=r.protocol+"//"+r.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?r.protocol+e:r.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==r?r.protocol+"//"+e:"https://"+e),i=eu(e)),i.port||(/^(http|ws)$/.test(i.protocol)?i.port="80":/^(http|ws)s$/.test(i.protocol)&&(i.port="443")),i.path=i.path||"/";const n=-1!==i.host.indexOf(":")?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+n+":"+i.port+t,i.href=i.protocol+"://"+n+(r&&r.port===i.port?"":":"+i.port),i}(e,(t=t||{}).path||"/socket.io"),i=r.source,n=r.id,s=r.path,a=Ru[n]&&s in Ru[n].nsps;let o;return t.forceNew||t["force new connection"]||!1===t.multiplex||a?o=new Cu(i,t):(Ru[n]||(Ru[n]=new Cu(i,t)),o=Ru[n]),r.query&&!t.query&&(t.query=r.queryKey),o.socket(r.path,t)}function Pu(e,t,r,i){return new(r||(r=Promise))((function(n,s){function a(e){try{c(i.next(e))}catch(e){s(e)}}function o(e){try{c(i.throw(e))}catch(e){s(e)}}function c(e){e.done?n(e.value):function(e){return e instanceof r?e:new r((function(t){t(e)}))}(e.value).then(a,o)}c((i=i.apply(e,t||[])).next())}))}Object.assign(Tu,{Manager:Cu,Socket:wu,io:Tu,connect:Tu}),"function"==typeof SuppressedError&&SuppressedError;let ku=[],Du=0;const Ou=new WeakMap;if(window.RTCPeerConnection){const Iy=window.RTCPeerConnection;function xy(e){const t=new Iy(e);ku.push(t),Ou.set(t,{index:Du++});const r=()=>{"closed"===t.connectionState&&((e=>{ku=ku.filter((t=>t!==e))})(t),t.removeEventListener("connectionstatechange",r))};return t.addEventListener("connectionstatechange",r),t}xy.prototype=Iy.prototype,window.RTCPeerConnection=xy}const Eu=new URLSearchParams(window.location.search).has("debug");class Iu{constructor(){this._isEnabled=!1,this._debugger=null,this._isEnabled=Eu}isEnabled(){return this._isEnabled}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}info(...e){if(this._isEnabled)return console.info(...e)}warn(...e){if(this._isEnabled)return console.warn(...e)}error(...e){if(this._isEnabled)return console.error(...e)}withDebugLogger(e=null){return this._debugger=e,this}debug(...e){if(!this._isEnabled||!this._debugger)return;const t=[];e.forEach((e=>{if("function"==typeof e){const r=e();t.push(r)}else t.push(e)})),this._debugger.print(...t)}}class xu{static parse(e){let t;try{t=JSON.parse(e)}catch(e){return}if("object"==typeof t&&!Array.isArray(t))return t.request?xu._handleRequest(t):t.response?xu._handleResponse(t):t.message?xu._handleMessage(t):void 0}static _handleRequest(e){const t={request:!0};if("string"==typeof e.method&&"number"==typeof e.id)return t.id=e.id,t.method=e.method,t.data=e.data||{},t}static _handleResponse(e){const t={response:!0};if("number"==typeof e.id)return t.id=e.id,e.ok?(t.ok=!0,t.data=e.data||{}):(t.ok=!1,t.errorCode=e.errorCode,t.errorReason=e.errorReason),t}static _handleMessage(e){const t={message:!0};if("string"==typeof e.method)return t.method=e.method,t.data=e.data||{},t}static createRequest(e,t){return{request:!0,id:Math.round(1e7*Math.random()),method:e,data:t||{}}}static createSuccessResponse(e,t){return{response:!0,id:e.id,ok:!0,data:t||{}}}static createErrorResponse(e,t,r){return{response:!0,id:e.id,errorCode:t,errorReason:r}}static createMessage(e,t){return{message:!0,method:e,data:t||{}}}}const ju=new Iu;class Mu extends Bt{constructor(e,t="whereby-sfu#v4"){super(),this.socket=null,this.wsUrl=e,this.protocol=t,this.sents=new Map,this._setupSocket()}_setupSocket(){this.socket=new WebSocket(this.wsUrl,this.protocol),this.socket.onopen=this._onOpen.bind(this),this.socket.onmessage=this._onMessage.bind(this),this.socket.onclose=this._onClose.bind(this),this.socket.onerror=this._onError.bind(this)}_tearDown(){null!==this.socket&&(this.socket.onopen=null,this.socket.onmessage=null,this.socket.onclose=null,this.socket.onerror=null,this.socket=null,this.sents.forEach((e=>e.close())),this.emit("close"))}close(){var e;null===(e=this.socket)||void 0===e||e.close()}_onOpen(){ju.info("Connected"),this.emit("open")}_onMessage(e){const t=xu.parse(e.data);ju.info("Received message",t),(null==t?void 0:t.response)?this._handleResponse(t):(null==t?void 0:t.message)&&this.emit("message",t)}_onClose(){ju.info("Disconnected"),this._tearDown()}_onError(e){ju.info("Error",e)}_handleResponse(e){const t=this.sents.get(e.id);if(e.ok)t.resolve(e.data);else{const r=new Error(e.errorReason);t.reject(r)}}send(e){try{this.socket&&this.socket.send(JSON.stringify(e))}catch(e){}}message(e,t={}){const r=xu.createMessage(e,t);this.send(r)}request(e,t={},r=1500*(15+.1*this.sents.size)){const i=xu.createRequest(e,t);return this.send(i),new Promise(((e,t)=>{const n={id:i.id,method:i.method,resolve:t=>{this.sents.delete(i.id)&&(clearTimeout(n.timer),e(t))},reject:e=>{this.sents.delete(i.id)&&(clearTimeout(n.timer),t(e))},timer:setTimeout((()=>{this.sents.delete(i.id)&&t(new Error("request timeout"))}),r),close:()=>{clearTimeout(n.timer),t(new Error("transport closed"))}};this.sents.set(i.id,n)}))}}const Lu={codecOptions:{opusDtx:!0,opusFec:!0},encodings:[{dtx:!0}]},Au={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:4,maxBitrate:15e4},{scaleResolutionDownBy:2,maxBitrate:5e5},{scaleResolutionDownBy:1,maxBitrate:1e6}]},Nu={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:2,maxBitrate:15e4},{scaleResolutionDownBy:1,maxBitrate:5e5}]},Bu={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scalabilityMode:"L3T2_KEY"}]},Fu={encodings:[{}]},Uu={encodings:[{scaleResolutionDownBy:2,dtx:!0,maxBitrate:5e5},{scaleResolutionDownBy:1,dtx:!0,maxBitrate:15e5}]},$u={encodings:[{dtx:!0}]},zu=(e,t,r)=>{const{lowDataModeEnabled:i,simulcastScreenshareOn:n,vp9On:s}=r;return"audio"===e?Lu:t?s?$u:n?Uu:Fu:s?Bu:i?Nu:Au},Vu=()=>{let e=Qt.detectDevice()||(/applecoremedia|applewebkit|safari/i.test(navigator.userAgent)?"Safari12":void 0);return/iphone|ipad/i.test(navigator.userAgent)&&(e="Safari12"),e};var qu;const Gu=null!==(qu=Ad.default)&&void 0!==qu?qu:Ad;const Hu=400;var Wu;const Ku="safari"===(null!==(Wu=Ad.default)&&void 0!==Wu?Wu:Ad).browserDetails.browser,Ju=e=>e.split(/[^\d]/g).map((e=>parseInt(e,10)));function Qu({devices:e,videoId:t,audioId:r,options:i,type:n="ideal"}){const s=e.filter((e=>"audioinput"===e.kind)),a=e.filter((e=>"videoinput"===e.kind)),o=!r||!s.some((e=>e.deviceId===r)),c=!t||!a.some((e=>e.deviceId===t)),d=function({disableAEC:e,disableAGC:t,hd:r,lax:i,lowDataMode:n,preferredDeviceIds:s,resolution:a,simulcast:o,widescreen:c}){var d,l;let p=480,u=240;r&&(p=i||Ku?720:{min:360,ideal:720}),o&&(!1===r?(p=360,u=270):u=360);const h={audio:Object.assign({},s.audioId&&{deviceId:s.audioId}),video:Object.assign(Object.assign({},s.videoId?{deviceId:s.videoId}:{facingMode:"user"}),{height:n?u:p,frameRate:n&&!o?15:24})};if(i)return(null===(d=h.audio)||void 0===d?void 0:d.deviceId)||(h.audio=!0),null===(l=h.video)||void 0===l||delete l.facingMode,h;if(a){const[e,t,r]=Ju(a);e&&(h.video.width={exact:e}),t&&(h.video.height={exact:t}),r&&(h.video.frameRate={exact:r}),delete h.video.facingMode}else h.video.aspectRatio=c?16/9:4/3;return t&&(h.audio.autoGainControl=!1),e&&(h.audio.echoCancellation=!1),h}(Object.assign({preferredDeviceIds:{audioId:o?null:{[n]:r},videoId:c?null:{[n]:t}}},i));return!1!==r&&s.length||delete d.audio,!1!==t&&a.length||delete d.video,d}const Zu=new Iu,Yu=/mobi/i.test(navigator.userAgent);class Xu extends Error{constructor(...e){super(...e),this.name="nodevices"}}function eh(e){return e.audio||e.video?navigator.mediaDevices.getUserMedia(e).catch((t=>{const r=`${t}, ${JSON.stringify(e,null,2)}`;throw Zu.error(`getUserMedia ${r}`),t})):Promise.reject(new Xu("No provided devices"))}function th(e,t,r,i){var n,s,a;let o={deviceId:null};return t?(o.label=t.label,t.getSettings&&(o=Object.assign(Object.assign({},o),t.getSettings())),o.deviceId?o:(t.getCapabilities&&(o.deviceId=t.getCapabilities().deviceId),o.deviceId?o:(t.label&&r&&(o.deviceId=null===(s=r.find((r=>t.label===r.label&&r.kind===e)))||void 0===s?void 0:s.deviceId),o.deviceId||(o.deviceId=null===(a=t.getConstraints())||void 0===a?void 0:a.deviceId,o.broken=1),o))):(i&&r&&(o.deviceId=null===(n=r.find((t=>t.deviceId===i&&t.kind===e)))||void 0===n?void 0:n.deviceId),o)}function rh(e,t){t&&"audio"!==t||e.getAudioTracks().forEach((e=>e.stop())),t&&"video"!==t||e.getVideoTracks().forEach((e=>e.stop()))}function ih(e,{replaceStream:t,fallback:r=!0}={}){var i;return Pu(this,void 0,void 0,(function*(){let n,s,a,o=null;const c=!1===e.audioId?"video":!1===e.videoId&&"audio",d=Yu||"video"!==c,l=Qu(e),p=(e,t)=>(e.details=Object.assign({constraints:l,constraint:e.constraint||(null==t?void 0:t.constraint),newConstraints:s,fallback:r,stopTracks:d},e!==n&&{error:String(n)}),e);d&&t&&rh(t,c);try{o=yield eh(l)}catch(s){if(n=s,!r)throw p(s);if("OverconstrainedError"===s.name){a={deviceId:{videoId:null,audioId:null},width:{lax:!0},height:{lax:!0},"":{audioId:null,videoId:null,lax:!0}}[s.constraint||""]}else if("NotFoundError"===s.name){if(l.audio&&l.video){try{o=yield eh(Qu(Object.assign(Object.assign({},e),{audioId:!1})))}catch(e){if("NotFoundError"!==e.name)throw p(e,s)}try{o||(o=yield eh(Qu(Object.assign(Object.assign({},e),{videoId:!1}))))}catch(e){throw p(e,s)}}}else if("NotAllowedError"===s.name||"NotReadableError"===s.name||"AbortError"===s.name)if(t&&!d)rh(t,c),a=e;else if("NotAllowedError"!==s.name){try{o=yield eh(Qu(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{lax:!0})})))}catch(e){Zu.warn("Tried getting stream again with laxer constraints, but failed: "+(""+e))}const t=(""+s).toLowerCase(),r={audio:"audioId",video:"videoId"}[(null===(i=/(video|audio)/.exec(t))||void 0===i?void 0:i[0])||c||""];if(!o&&r)try{o=yield eh(Qu(Object.assign(Object.assign({},e),{[r]:null})))}catch(e){Zu.warn(`Re-tried ${r} with no constraints, but failed: ${""+e}`)}if(!o){const t=r?[r]:["videoId","audioId"];for(const r of t){try{o=yield eh(Qu(Object.assign(Object.assign({},e),{[r]:!1})))}catch(e){Zu.warn(`Re-tried without ${r}, but failed: ${""+e}`)}if(o)break}}}}if(a){const t=c?{audio:{videoId:!1},video:{audioId:!1}}[c]:{};s=Qu(Object.assign(Object.assign(Object.assign(Object.assign({},e),a),{options:Object.assign(Object.assign({},e.options),{lax:a.lax})}),t));try{o=yield eh(s)}catch(e){throw p(e,n)}}if(!o)throw p(n);let u;return t&&(d||rh(t,c),u=function(e,t,r){const i=[];return r&&"audio"!==r||(i.push(...e.getAudioTracks()),t.getAudioTracks().forEach((t=>{t.replacement=!0,e.addTrack(t)}))),r&&"video"!==r||(i.push(...e.getVideoTracks()),t.getVideoTracks().forEach((t=>{t.replacement=!0,e.addTrack(t)}))),i.forEach((t=>{t.replaced=!0,e.removeTrack(t)})),i}(t,o,c),o=t),{error:n&&p(n),stream:o,replacedTracks:u}}))}function nh({oldDevices:e,newDevices:t,currentAudioId:r,currentVideoId:i,currentSpeakerId:n}){const s=function(e,t){const[r,i]=[e,t].map((e=>e.filter((e=>e.kind&&e.deviceId)).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.kind]:Object.assign(Object.assign({},e[t.kind]),{[t.deviceId]:t})})),{}))),n={};return e.forEach((e=>{e.kind&&e.deviceId&&(n[e.kind]||(n[e.kind]={added:{},removed:{},changed:{}}),i[e.kind]&&i[e.kind][e.deviceId]||(n[e.kind].removed[e.deviceId]=e))})),t.forEach((e=>{e.kind&&e.deviceId&&(n[e.kind]||(n[e.kind]={added:{},removed:{},changed:{}}),r[e.kind]&&r[e.kind][e.deviceId]?r[e.kind][e.deviceId].label&&r[e.kind][e.deviceId].label!==e.label&&(n[e.kind].changed[e.deviceId]=e):n[e.kind].added[e.deviceId]=e)})),n}(e,t),a={},o={};return[["audioinput",r],["videoinput",i],["audiooutput",n]].forEach((([e,r])=>{const i=s[e=e||""];if(i){if(r){if(i.removed[r]&&(a[e]={deviceId:null},"audiooutput"===e)){const r=t.find((e=>"audiooutput"===e.kind));a[e]={deviceId:null==r?void 0:r.deviceId}}i.changed[r]&&(a[e]={deviceId:r})}if(Object.keys(i.added).length){const[t]=Object.keys(i.added).slice(0,1),r=i.added[t];o[e]={deviceId:r.deviceId,label:r.label,kind:r.kind}}}})),{addedDevices:o,changedDevices:a}}Ad.default;const sh={id:Gd(),connectionNumber:0},ah=()=>{};let oh=ah;const ch=function(e,t=console){const r=[];let i,n,s,a,o,c,d,l=0,p=!1,u=0;const h={connected:!1,trace:(...e)=>{if(e.push(Date.now()),"customEvent"===e[0]&&"roomSessionId"===e[2].type){const t=c&&c[2].value.roomSessionId,r=e[2].value.roomSessionId;if(c=e,p&&r&&r!==t&&i)return void i.close();r&&(p=!0)}else"customEvent"===e[0]&&"clientId"===e[2].type?s=e:"customEvent"===e[0]&&"organizationId"===e[2].type?n=e:"customEvent"===e[0]&&"displayName"===e[2].type?a=e:"customEvent"===e[0]&&"userRole"===e[2].type&&(o=e);i.readyState===WebSocket.OPEN?(l=0,i.send(JSON.stringify(e))):"getstats"===e[0]?u<20&&(u++,r.push(e)):"customEvent"===e[0]&&"insightsStats"===e[2].type||r.push(e),i.readyState===WebSocket.CLOSED&&d&&setTimeout((()=>{i.readyState===WebSocket.CLOSED&&d&&h.connect()}),1e3*l)},close:()=>{d=!1,i&&i.close()},connect:()=>{d=!0,l+=1,i&&i.close(),h.connected=!0,i=new WebSocket(e+window.location.pathname,"1.0"),i.onerror=e=>{h.connected=!1,t.warn("[RTCSTATS] WebSocket error",e)},i.onclose=e=>{h.connected=!1,t.info(`[RTCSTATS] Closed ${e.code}`),oh()},i.onopen=()=>{for(sh.connectionNumber++,i.send(JSON.stringify(["clientInfo",null,sh])),n&&i.send(JSON.stringify(n)),s&&i.send(JSON.stringify(s)),c&&i.send(JSON.stringify(c)),a&&i.send(JSON.stringify(a)),o&&i.send(JSON.stringify(o));r.length;)i.send(JSON.stringify(r.shift()));u=0}}};return h.connect(),h}("wss://rtcstats.srv.whereby.com"),dh=Fd(ch.trace,1e4,[""]);oh=(null==dh?void 0:dh.resetDelta)||ah;const lh={sendEvent:(e,t)=>{ch.trace("customEvent",null,{type:e,value:t})},sendAudioMuted:e=>{lh.sendEvent("audio_muted",{muted:e})},sendVideoMuted:e=>{lh.sendEvent("video_muted",{muted:e})},server:ch};var ph;const uh=null!==(ph=Ad.default)&&void 0!==ph?ph:Ad,hh=new Iu,mh=uh.browserDetails.browser,fh=uh.browserDetails.version;function gh(e,t){let r=e.match(/a=ssrc-group:FID (\d+) (\d+)\r\n/),i=t.match(/a=ssrc-group:FID (\d+) (\d+)\r\n/);r||(r=e.match(/a=ssrc:(\d+) cname:(.*)\r\n/g)[1].match(/a=ssrc:(\d+)/),i=t.match(/a=ssrc:(\d+) cname:(.*)\r\n/g)[1].match(/a=ssrc:(\d+)/));for(let e=1;e<r.length;e++)t=t.replace(new RegExp(i[e],"g"),r[e]);return t}function vh(e){return"firefox"!==mh?e:Td.splitLines(e.trim()).map((e=>e.startsWith("a=msid-semantic:")?"a=msid-semantic: WMS *":e)).join("\r\n")+"\r\n"}function _h(e){return function(e,t,r=!1,i=!1){var n,s;try{const a=on(e);if((null===(n=null==a?void 0:a.ext)||void 0===n?void 0:n.length)&&a.ext.length>0)return e;if((null==a?void 0:a.media.length)<1)return e;const o=null==a?void 0:a.media.flatMap((e=>e.ext||[])),c=(null===(s=o.find((e=>e.uri===t)))||void 0===s?void 0:s.value)||[...new Set([0,15,...o.map((e=>e.value))])].sort(((e,t)=>e-t)).find(((e,t,r)=>e+1!==r[t+1]))+1;return a.media.forEach((e=>{var n;(r&&"audio"===e.type||i&&"video"===e.type)&&((null===(n=e.ext)||void 0===n?void 0:n.find((e=>e.uri===t)))||(Array.isArray(e.ext)?e.ext.push({value:c,uri:t}):e.ext=[{value:c,uri:t}]))})),an(a)}catch(e){console.error("Error during addAbsCaptureTimeExtMap: ",e)}return e}(e,"http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time",!0,!0)}function bh(e,t,r=console){const i=e.getSenders().find((e=>e.track&&"video"===e.track.kind));if(!i)return Promise.resolve();const n=i.getParameters();return n.encodings&&0===n.encodings.length?Promise.resolve():(n.encodings||(n.encodings=[{}]),0===t?delete n.encodings[0].maxBitrate:n.encodings[0].maxBitrate=1e3*t,i.setParameters(n).catch((e=>{r.error("setParameters err: ",e)})))}var yh;const wh=null!==(yh=Ad.default)&&void 0!==yh?yh:Ad,Sh=new Iu;class Ch{constructor({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:r,deprioritizeH264Encoding:i}){this.peerConnectionId=e,this.relayCandidateSeen=!1,this.serverReflexiveCandidateSeen=!1,this.publicHostCandidateSeen=!1,this.ipv6HostCandidateSeen=!1,this.ipv6HostCandidateTeredoSeen=!1,this.ipv6HostCandidate6to4Seen=!1,this.mdnsHostCandidateSeen=!1,this.pc=null,this.wasEverConnected=!1,this.connectionStatus=null,this.stats={totalSent:0,totalRecv:0},this.bandwidth=t||0,this.maximumTurnBandwidth=r,this.pending=[],this.isOperationPending=!1,this.streamIds=[],this.streams=[],this.earlyIceCandidates=[],this.afterConnected=new Promise((e=>{this.registerConnected=e})),this.offerOptions={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._deprioritizeH264Encoding=i}setAndGetPeerConnection({clientId:e,constraints:t,peerConnectionConfig:r,shouldAddLocalVideo:i}){return this.peerConnectionConfig=r,this.shouldAddLocalVideo=i,this.clientId=e,this.pc=new RTCPeerConnection(r),this.signalingState=this.pc.signalingState,this.pc.addEventListener("signalingstatechange",(()=>{if(this.signalingState!==this.pc.signalingState&&(this.signalingState=this.pc.signalingState,"stable"===this.pc.signalingState)){this.isOperationPending=!1;const e=this.pending.shift();e&&e.apply()}})),this.pc}addStream(e){this.streamIds.push(e.id),this.streams.push(e),RTCPeerConnection.prototype.addTrack?(e.getAudioTracks().forEach((t=>{this.pc.addTrack(t,e)})),e.getVideoTracks().forEach((t=>{this.pc.addTrack(t,e)}))):this.pc.addStream(e)}addTrack(e,t){t||(t=this.streams[0]),null==t||t.addTrack(e),this.pc.addTrack(e,t)}removeTrack(e){this.streams[0].removeTrack(e);const t=this.pc.getSenders().find((t=>t.track===e));t&&this.pc.removeTrack(t)}removeStream(e){for(let t=0;t<this.streamIds.length;t++)this.streamIds[t]===e.id&&(this.streamIds.splice(t,1),this.streams.splice(t,1));this.pc&&(this.pc.removeTrack?e.getTracks().forEach((e=>{const t=this.pc.getSenders().find((t=>t.track===e));t&&this.pc.removeTrack(t)})):this.pc.removeStream&&this.pc.removeStream(e))}_setRemoteDescription(e){return this._deprioritizeH264Encoding&&(e.sdp=function(e){return Td.splitSections(e).map((e=>{if("video"!==Td.getKind(e))return e;const t=Td.matchPrefix(e,"a=rtpmap:").map((e=>Td.parseRtpMap(e))).filter((e=>/h264/i.test(e.name))).map((e=>""+e.payloadType));if(!t.length)return e;const r=Td.matchPrefix(e,"m=video")[0],i=/(\s\d+)+$/i.exec(r),n=i?i[0]:"",s=[...n.split(" ").filter((e=>e&&!t.includes(e))),...t].join(" "),a=r.replace(n," "+s);return e.replace(r,a)})).join("")}(e.sdp)),this.srdComplete=this.pc.setRemoteDescription(e),this.srdComplete.then((()=>{this.earlyIceCandidates.forEach((e=>this.pc.addIceCandidate(e))),this.earlyIceCandidates=[]}))}handleOffer(e){if(!this.canModifyPeerConnection())return new Promise((t=>{this.pending.push((()=>this.handleOffer(e).then(t)))}));this.isOperationPending=!0;let t=e.sdp;t=function(e){return"safari"!==mh&&("firefox"!==mh||fh&&fh>=63||60===fh)?e:Td.splitLines(e.trim()).filter((e=>!e.startsWith("a=extmap:")||"urn:ietf:params:rtp-hdrext:sdes:mid"!==Td.parseExtmap(e).uri)).join("\r\n")+"\r\n"}(t),t=vh(t);const r={type:e.type,sdp:t};let i;return this._setRemoteDescription(r).then((()=>this.pc.createAnswer())).then((e=>(i=e,this.pc.setLocalDescription(e)))).then((()=>bh(this.pc,this.bandwidth))).then((()=>i))}handleAnswer(e){if(this.pendingOffer){const t=this.pendingOffer;return delete this.pendingOffer,this.pc.setLocalDescription(t).then((()=>this.handleAnswer(e)))}let t=e.sdp;t=vh(t);const r={type:e.type,sdp:t};return this._setRemoteDescription(r).then((()=>bh(this.pc,this.bandwidth)),(e=>{Sh.warn("Could not set remote description from remote answer: ",e)}))}addIceCandidate(e){this.srdComplete?this.srdComplete.then((()=>{"closed"!==this.pc.signalingState&&("safari"===wh.browserDetails.browser&&e&&""===e.candidate||this.pc.addIceCandidate(e).catch((t=>{Sh.warn("Failed to add ICE candidate ('%s'): %s",e?e.candidate:null,t)})))})):this.earlyIceCandidates.push(e)}canModifyPeerConnection(){return"stable"===this.pc.signalingState&&!this.isOperationPending}close(){const e=this.pc;if(e){e.oniceconnectionstatechange=null,e.onicecandidate=null,e.ontrack=null;try{e.close()}catch(e){Sh.warn("failures during close of session",e)}}}hasConnectedPeerConnection(){return this.pc&&"connected"===this.pc.connectionState}replaceTrack(e,t){const r=this.pc;if(!r)return!1;const i=r.getSenders();function n(r){const n=e=>e&&`id:${e.id},kind:${e.kind},state:${e.readyState}`;Sh.warn(`${r}. newTrack:${n(t)}, oldTrack:${n(e)}, sender tracks: ${JSON.stringify(i.map((e=>`s ${n(e.track)}`)))}, sender first codecs: ${JSON.stringify(i.map((e=>(e.getParameters().codecs||[])[0])))}`)}if(i.length||n("No senders!"),e||(e=(i.find((e=>e.track&&e.track.kind===t.kind))||{}).track)||n("No sender with same kind! Add new track then."),window.RTCRtpSender&&window.RTCRtpSender.prototype.replaceTrack){if(e){const r=()=>{for(let r=0;r<i.length;r++){const s=i[r],a=s.track;if(s||a||n("One of the tracks is null!"),a.id===t.id)return Promise.resolve(t);if(a.id===e.id)return i[r].replaceTrack(t)}return null};let s=r();if(s)return s;let a=null,o=null;s=new Promise(((e,t)=>{a=e,o=t}));let c=0,d=setInterval((()=>Pu(this,void 0,void 0,(function*(){const e=r();if(!e)return void(3<++c&&(clearInterval(d),d=null,n("No sender track to replace"),o("No sender track to replace")));clearInterval(d),d=null;const t=yield e;a(t)}))),1e3);return s}const s=this.streams.find((e=>e.getTracks().find((e=>e.id===t.id))))||this.streams[0];return s?r.addTrack(t,s):(n("No stream?"),Promise.reject(new Error("replaceTrack: No stream?")))}if(!this.canModifyPeerConnection())return void this.pending.push((()=>{this.replaceTrack(e,t)}));this.isOperationPending=!0;const s=r.onnegotiationneeded;return r.onnegotiationneeded=null,this.removeTrack(e),this.addTrack(t),setTimeout((()=>{r.onnegotiationneeded=s}),0),"offer"===r.localDescription.type?r.createOffer().then((e=>(e.sdp=gh(r.localDescription.sdp,e.sdp),r.setLocalDescription(e)))).then((()=>this._setRemoteDescription(r.remoteDescription))):this._setRemoteDescription(r.remoteDescription).then((()=>r.createAnswer())).then((e=>(e.sdp=gh(r.localDescription.sdp,e.sdp),r.setLocalDescription(e))))}maybeRestrictRelayBandwidth(){var e;-1!==this.maximumTurnBandwidth&&(this.pc.getStats&&(e=this.pc,e.getStats(null).then((e=>{let t,r;return e.forEach((i=>{if("transport"===i.type&&i.selectedCandidatePairId){const n=e.get(i.selectedCandidatePairId);if(!n)return;return t=e.get(n.localCandidateId).candidateType,void(r=e.get(n.remoteCandidateId).candidateType)}"candidate-pair"===i.type&&i.selected&&(t=e.get(i.localCandidateId).candidateType,r=e.get(i.remoteCandidateId).candidateType)})),"relay"===t||"relayed"===t||"relay"===r||"relayed"===r}))).then((e=>{e&&0===this.bandwidth&&this.changeBandwidth(this.maximumTurnBandwidth)})))}changeBandwidth(e){e!==this.bandwidth&&(this.canModifyPeerConnection()?(this.bandwidth=e,this.pc.localDescription&&""!==this.pc.localDescription.type&&bh(this.pc,this.bandwidth)):this.pending.push((()=>this.changeBandwidth(e))))}setAudioOnly(e,t=[]){this.pc.getTransceivers().filter((e=>{var r,i,n,s,a,o;return"recvonly"!==(null==e?void 0:e.direction)&&"video"===(null===(i=null===(r=null==e?void 0:e.receiver)||void 0===r?void 0:r.track)||void 0===i?void 0:i.kind)&&!t.includes(null===(s=null===(n=null==e?void 0:e.receiver)||void 0===n?void 0:n.track)||void 0===s?void 0:s.id)&&!t.includes(null===(o=null===(a=null==e?void 0:e.sender)||void 0===a?void 0:a.track)||void 0===o?void 0:o.id)})).forEach((t=>{t.direction=e?"sendonly":"sendrecv"}))}}const Rh="fetch_mediaserver_config",Th="start_screenshare",Ph="stop_screenshare",kh="audio_enabled",Dh="client_left",Oh="mediaserver_config",Eh="new_client",Ih="screenshare_started",xh="screenshare_stopped",jh="room_joined",Mh="video_enabled",Lh="ice_candidate",Ah="ice_endofcandidates",Nh="ready_to_receive_offer",Bh="sdp_answer",Fh="sdp_offer",Uh="pending_client_left",$h="media_quality_changed",zh="client_connection_status_changed",Vh="stream_added",qh="rtc_manager_created",Gh="rtc_manager_destroyed",Hh="local_stream_track_added",Wh="local_stream_track_removed",Kh="connecting",Jh="connection_failed",Qh="connection_successful",Zh="connection_disconnected",Yh="camera",Xh="screen_share";const em=57600,tm=2.6041666666666665,rm=921600,im=1.0850694444444444;const nm="[a-fA-F\\d:]",sm=e=>e&&e.includeBoundaries?`(?:(?<=\\s|^)(?=${nm})|(?<=${nm})(?=\\s|$))`:"",am="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",om="[a-fA-F\\d]{1,4}",cm=`\n(?:\n(?:${om}:){7}(?:${om}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${om}:){6}(?:${am}|:${om}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${om}:){5}(?::${am}|(?::${om}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${om}:){4}(?:(?::${om}){0,1}:${am}|(?::${om}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${om}:){3}(?:(?::${om}){0,2}:${am}|(?::${om}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${om}:){2}(?:(?::${om}){0,3}:${am}|(?::${om}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${om}:){1}(?:(?::${om}){0,4}:${am}|(?::${om}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::${om}){0,5}:${am}|(?::${om}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),dm=new RegExp(`(?:^${am}$)|(?:^${cm}$)`),lm=new RegExp(`^${am}$`),pm=new RegExp(`^${cm}$`),um=e=>e&&e.exact?dm:new RegExp(`(?:${sm(e)}${am}${sm(e)})|(?:${sm(e)}${cm}${sm(e)})`,"g");um.v4=e=>e&&e.exact?lm:new RegExp(`${sm(e)}${am}${sm(e)}`,"g"),um.v6=e=>e&&e.exact?pm:new RegExp(`${sm(e)}${cm}${sm(e)}`,"g");var hm,mm,fm="connection_blocked_by_network",gm="ice_ipv6_seen",vm="ice_mdns_seen",_m="ice_no_public_ip_gathered",bm="ice_no_public_ip_gathered_3sec",ym="ice_restart",wm="microphone_not_working",Sm="microphone_stopped_working",Cm="new_pc",Rm="sfu_connection_open",Tm="sfu_connection_closed",Pm="dominant_speaker";const km=null!==(hm=Ad.default)&&void 0!==hm?hm:Ad,Dm=new Iu,Om=class{constructor(e,t){this.id=""+e,this.type=t,this.isEnabled=!0,this.hasSupportForAutoSuperSize=!1,this.isAudioEnabled=!0,this.isVideoEnabled=!0,this.status=Kh,this.stream=null,this.streamId=null}setup(e){return this.stream=e,this.streamId=e.id,this.setVideoEnabled(this.isVideoEnabled&&e.getVideoTracks().length>0),this.setAudioEnabled(this.isAudioEnabled&&e.getAudioTracks().length>0),this}setStatus(e){return this.status=e,this}setVideoEnabled(e){this.isVideoEnabled=e,this.stream&&this.stream.getVideoTracks().forEach((t=>{t.enabled=e}))}setAudioEnabled(e){this.isAudioEnabled=e,this.stream&&this.stream.getAudioTracks().forEach((t=>{t.enabled=e}))}static getCameraId(){return"0"}static getTypeFromId(e){return"0"===""+e?Yh:Xh}}.getCameraId(),Em=km.browserDetails.browser,Im=km.browserDetails.version;"firefox"===Em&&km.browserShim&&"shimGetDisplayMedia"in km.browserShim&&(null===(mm=km.browserShim)||void 0===mm||mm.shimGetDisplayMedia(window,"screen"));let xm=!1;"chrome"===Em&&window.document.addEventListener("beforeunload",(()=>{xm=!0}));class jm{constructor({selfId:e,room:t,emitter:r,serverSocket:i,webrtcProvider:n,features:s}){const{name:a,session:o,iceServers:c,sfuServer:d,mediaserverConfigTtlSeconds:l}=t;this._selfId=e,this._roomName=a,this._roomSessionId=o&&o.id,this.peerConnections={},this.localStreams={},this.enabledLocalStreamIds=[],this._screenshareVideoTrackIds=[],this._socketListenerDeregisterFunctions=[],this._localStreamDeregisterFunction=null,this._emitter=r,this._serverSocket=i,this._webrtcProvider=n,this._features=s||{},this._isAudioOnlyMode=!1,this.offerOptions={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._pendingActionsForConnectedPeerConnections=[],this._audioTrackOnEnded=()=>{lh.sendEvent("audio_ended",{unloading:xm}),this._emit(Sm,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:d,iceServers:c.iceServers||[],mediaserverConfigTtlSeconds:l}),this.totalSessionsCreated=0}numberOfPeerconnections(){return Object.keys(this.peerConnections).length}isInitializedWith({selfId:e,roomName:t,isSfu:r}){return this._selfId===e&&this._roomName===t&&r===!!this._sfuServer}supportsScreenShareAudio(){return!0}maybeRestrictRelayBandwidth(e){e.maybeRestrictRelayBandwidth()}addNewStream(e,t){if(t!==this.localStreams[e]){if(this._addLocalStream(e,t),e===Om){this._addStreamToPeerConnections(t);const[e]=t.getAudioTracks();e&&this._startMonitoringAudioTrack(e),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const r=e=>{const{enable:t,track:r}=e.detail;this._handleStopOrResumeVideo({enable:t,track:r})};return t.addEventListener("stopresumevideo",r),void(this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",r)})}this._screenshareVideoTrackIds.push(t.getVideoTracks()[0].id),this._shareScreen(e,t)}}replaceTrack(e,t){return e&&"audio"===e.kind&&this._stopMonitoringAudioTrack(e),t&&"audio"===t.kind&&this._startMonitoringAudioTrack(t),this._replaceTrackToPeerConnections(e,t)}accept({clientId:e,shouldAddLocalVideo:t}){return this.acceptNewStream({streamId:e,clientId:e,shouldAddLocalVideo:t})}disconnectAll(){Object.keys(this.peerConnections).forEach((e=>{this.disconnect(e)})),this.peerConnections={},this._socketListenerDeregisterFunctions.forEach((e=>{e()})),this._socketListenerDeregisterFunctions=[],this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null)}fixChromeAudio(e){if("chrome"!==Em)return;const t=this._getLocalCameraStream(),r=t.getAudioTracks()[0];return r&&"ended"===r.readyState?navigator.mediaDevices.getUserMedia({audio:e}).then((e=>{const i=e.getAudioTracks()[0];return i.enabled=r.enabled,t.removeTrack(r),t.addTrack(i),this.replaceTrack(r,i)})):void 0}setupSocketListeners(){this._socketListenerDeregisterFunctions=[()=>this._clearMediaServersRefresh(),this._serverSocket.on(Oh,(e=>{e.error?Dm.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(Nh,(e=>{this._connect(e.clientId)})),this._serverSocket.on(Lh,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(e.message):Dm.warn("No RTCPeerConnection on ICE_CANDIDATE",e)})),this._serverSocket.on(Ah,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(null):Dm.warn("No RTCPeerConnection on ICE_END_OF_CANDIDATES",e)})),this._serverSocket.on(Fh,(e=>{const t=this._getSession(e.clientId);if(!t)return void Dm.warn("No RTCPeerConnection on SDP_OFFER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleOffer(r).then((t=>{this._emitServerEvent(Bh,{receiverId:e.clientId,message:this._transformOutgoingSdp(t)})}))})),this._serverSocket.on(Bh,(e=>{const t=this._getSession(e.clientId);if(!t)return void Dm.warn("No RTCPeerConnection on SDP_ANSWER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleAnswer(r)})),this._serverSocket.on(jh,(({room:{sfuServer:e}})=>{if(e||!this._wasScreenSharing)return;const t=Object.keys(this.localStreams).find((e=>e!==Om));if(!t)return;const r=this.localStreams[t];if(!r)return void Dm.warn("screenshare stream %s not found",t);const i=r.getAudioTracks().length>0;this._emitServerEvent(Th,{streamId:t,hasAudioTrack:i})}))]}sendAudioMutedStats(e){lh.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){lh.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){lh.sendEvent(e,t)}rtcStatsDisconnect(){lh.server.close()}rtcStatsReconnect(){lh.server.connected||lh.server.connect()}setAudioOnly(e){this._isAudioOnlyMode=e,this._forEachPeerConnection((e=>{e.hasConnectedPeerConnection()&&this._withForcedRenegotiation(e,(()=>e.setAudioOnly(this._isAudioOnlyMode,this._screenshareVideoTrackIds)))}))}setRemoteScreenshareVideoTrackIds(e=[]){const t=this._getFirstLocalNonCameraStream();this._screenshareVideoTrackIds=[...(null==t?void 0:t.track)?[t.track.id]:[],...e]}setRoomSessionId(e){this._roomSessionId=e}_setConnectionStatus(e,t,r){const i=e.connectionStatus;i!==t&&e.peerConnectionId!==this._selfId&&(i===Zh&&t===Kh||(e.connectionStatus=t,setTimeout((()=>{this._emit(zh,{streamIds:e.streamIds,clientId:r,status:t,previous:i})}),0)))}_setJitterBufferTarget(e){try{e.getReceivers().forEach((e=>{e.jitterBufferTarget=Hu,e.playoutDelayHint=.4}))}catch(e){Dm.error("Error during setting jitter buffer target:",e)}}_emitServerEvent(e,t,r){this._serverSocket.emit(e,t,r)}_emit(e,t){this._emitter.emit(e,t)}_addEnabledLocalStreamId(e){this.enabledLocalStreamIds.push(e)}_deleteEnabledLocalStreamId(e){const t=this.enabledLocalStreamIds.indexOf(e);-1!==t&&this.enabledLocalStreamIds.splice(t,1)}_getSession(e){return e in this.peerConnections?this.peerConnections[e]:null}_getOrCreateSession(e,t){let r=this.peerConnections[e];if(void 0===r){const i="safari"===Em&&Im&&Im>=14&&this._features.deprioritizeH264OnSafari;this.peerConnections[e]=r=new Ch({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:this._features.unlimitedBandwidthWhenUsingRelayP2POn?-1:1280,deprioritizeH264Encoding:i}),this.totalSessionsCreated++}return r}_getLocalCameraStream(){return this.localStreams[Om]}_getNonLocalCameraStreamIds(){return Object.keys(this.localStreams).filter((e=>e!==Om))}_isScreensharingLocally(){return this._getNonLocalCameraStreamIds().length>0}_getFirstLocalNonCameraStream(){const e=this._getNonLocalCameraStreamIds();return 0===e.length?null:this.localStreams[e[0]]}_transformIncomingSdp(e,t){return{type:e.type,sdp:e.sdpU}}_transformOutgoingSdp(e){return{type:e.type,sdpU:e.sdp}}_createSession({clientId:e,initialBandwidth:t,isOfferer:r,peerConnectionId:i,shouldAddLocalVideo:n}){if(!i)throw new Error("peerConnectionId is missing");if(!e)throw new Error("clientId is missing");const s=this._getOrCreateSession(i,t),a={optional:[]};"chrome"===Em&&a.optional.push({googCpuOveruseDetection:!0}),a.optional.push({rtcStatsRoomSessionId:this._roomSessionId}),a.optional.push({rtcStatsClientId:this._selfId}),a.optional.push({rtcStatsPeerId:i}),a.optional.push({rtcStatsConferenceId:this._roomName});const o={iceServers:this._iceServers};if(this._features.turnServerOverrideHost){const e=this._features.turnServerOverrideHost,t=e.indexOf(":")>0?"":":443",r=":"+e+t;o.iceServers=o.iceServers.map((e=>{const t=Object.assign({},e);return t.url&&(t.url=t.url.replace(/:[^?]*/,r)),t.urls&&(t.urls=t.urls.map((e=>e.replace(/:[^?]*/,r)))),t}))}if(this._features.useOnlyTURN){o.iceTransportPolicy="relay";const e={onlyudp:/^turn:.*transport=udp$/,onlytcp:/^turn:.*transport=tcp$/,onlytls:/^turns:.*transport=tcp$/}[this._features.useOnlyTURN];e&&(o.iceServers=o.iceServers.filter((t=>t.url&&t.url.match(e))))}"chrome"===Em&&(o.sdpSemantics="unified-plan");const c=s.setAndGetPeerConnection({constraints:a,peerConnectionConfig:o,shouldAddLocalVideo:n,clientId:e});setTimeout((()=>this._emit(Cm)),0),c.ontrack=t=>{const r=t.streams[0];"default"===r.id&&0===r.getAudioTracks().length||-1===s.streamIds.indexOf(r.id)&&(s.streamIds.push(r.id),this._emit(Vh,{clientId:e,stream:r}),s.connectionStatus===Qh&&setTimeout((()=>{this._emit(zh,{streamIds:s.streamIds,clientId:e,status:s.connectionStatus,previous:Kh})}),0))},c.oniceconnectionstatechange=()=>{let t;const r=s.connectionStatus;switch(c.iceConnectionState){case"checking":t=Kh;break;case"connected":case"completed":t=Qh,s.wasEverConnected||(this._pendingActionsForConnectedPeerConnections.forEach((e=>{"function"==typeof e&&e()})),this._pendingActionsForConnectedPeerConnections=[]),!s.wasEverConnected&&(c.iceConnectionState.match(/connected|completed/)||"chrome"===Em&&c.localDescription&&"answer"===c.localDescription.type)&&(s.wasEverConnected=!0,"false"!==this._features.bandwidth&&this.maybeRestrictRelayBandwidth(s)),this._isAudioOnlyMode&&s.setAudioOnly(!0,this._screenshareVideoTrackIds),s.registerConnected();break;case"disconnected":t=Zh,setTimeout((()=>{"disconnected"===c.iceConnectionState&&this._maybeRestartIce(e,s)}),2e3);break;case"failed":t=Jh,r!==t&&this._maybeRestartIce(e,s),null!==s.relayCandidateSeen||s.wasEverConnected||this._emit(fm);break;default:return}this._setConnectionStatus(s,t,e)},c.onconnectionstate=()=>{switch(c.connectionState){case"connected":setTimeout((()=>{(function(e){if("chrome"!==Gu.browserDetails.browser||Gu.browserDetails.browser<58||"closed"===e.signalingState)return Promise.resolve(!1);const t=e.getSenders().some((e=>e.track&&"audio"===e.track.kind)),r=e.getReceivers().some((e=>e.track&&"audio"===e.track.kind));return e.getStats(null).then((e=>{let i=!1;return e.forEach((e=>{"outbound-rtp"!==e.type||"audio"!==e.kind&&"audio"!==e.mediaType||!t?"inbound-rtp"!==e.type||"audio"!==e.kind&&"audio"!==e.mediaType||!r||0===e.bytesReceived&&(i="inbound"):0===e.bytesSent&&(i="outbound")})),i}))})(s.pc).then((t=>{!1!==t&&this._emit(wm,{failureDirection:t,clientId:e})}))}),3e3),s.registerConnected();break;case"failed":const t=Jh;null!==s.relayCandidateSeen||s.wasEverConnected||this._emit(fm),this._setConnectionStatus(s,t,e)}};const d=this.localStreams[Om];return n&&d&&s.addStream(d),n&&Object.keys(this.localStreams).forEach((e=>{if(e===Om)return;const t=this.localStreams[e];r?s.addStream(t):s.afterConnected.then((()=>{this._emitServerEvent(Th,{receiverId:s.clientId,streamId:t.id,hasAudioTrack:!!t.getAudioTracks().length}),this._withForcedRenegotiation(s,(()=>s.addStream(t)))}))})),s}_cleanup(e){const t=this._getSession(e);t?(t.close(),delete this.peerConnections[e]):Dm.warn("No RTCPeerConnection in RTCManager.disconnect()",e)}_forEachPeerConnection(e){Object.values(this.peerConnections).forEach((t=>{e(t)}))}_addStreamToPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.addStream(e)))}))}_addTrackToPeerConnections(e,t){this._forEachPeerConnection((r=>{this._withForcedRenegotiation(r,(()=>r.addTrack(e,t)))}))}_replaceTrackToPeerConnections(e,t){const r=[];return this._forEachPeerConnection((i=>{if(!i.hasConnectedPeerConnection()){Dm.info("Session doesn't have a connected PeerConnection, adding pending action!");const n=this._pendingActionsForConnectedPeerConnections;if(!n)return void Dm.warn("No pending action is created to repalce track, because the pending actions array is null");const s=new Promise(((r,s)=>{n.push((()=>{const n=i.replaceTrack(e,t);if(!n)return Dm.error("replaceTrack returned false!"),void s("ReplaceTrack returned false");n.then((e=>r(e))).catch((e=>s(e)))}))}));return void r.push(s)}const n=i.replaceTrack(e,t);n?r.push(n):Dm.error("replaceTrack returned false!")})),Promise.all(r)}_removeStreamFromPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.removeStream(e)))}))}_removeTrackFromPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.removeTrack(e)))}))}_addLocalStream(e,t){this._addEnabledLocalStreamId(e),this.localStreams[e]=t}_removeLocalStream(e){delete this.localStreams[e],this._deleteEnabledLocalStreamId(e)}_updateAndScheduleMediaServersRefresh({iceServers:e,sfuServer:t,mediaserverConfigTtlSeconds:r}){this._iceServers=e,this._sfuServer=t,this._mediaserverConfigTtlSeconds=r,this._clearMediaServersRefresh(),r&&(this._fetchMediaServersTimer=setTimeout((()=>this._emitServerEvent(Rh)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}_startMonitoringAudioTrack(e){e.addEventListener("ended",this._audioTrackOnEnded)}_stopMonitoringAudioTrack(e){e.removeEventListener("ended",this._audioTrackOnEnded)}_connect(e){this.rtcStatsReconnect();let t=this._getSession(e),r=t&&t.bandwidth||0;return t?(Dm.warn("Replacing peer session",e),this._cleanup(e)):r=this._changeBandwidthForAllClients(!0),t=this._createP2pSession(e,r,!0,!0),this._negotiatePeerConnection(e,t),Promise.resolve(t)}_maybeRestartIce(e,t){const r=t.pc;"disconnected"!==r.iceConnectionState&&"failed"!==r.iceConnectionState||"offer"===r.localDescription.type&&(t.wasEverConnected=!1,t.relayCandidateSeen=!1,t.serverReflexiveCandidateSeen=!1,t.publicHostCandidateSeen=!1,t.ipv6HostCandidateSeen=!1,this.ipv6HostCandidateTeredoSeen=!1,this.ipv6HostCandidate6to4Seen=!1,this.mdnsHostCandidateSeen=!1,this._emit(ym),this._negotiatePeerConnection(e,t,Object.assign({},this.offerOptions,{iceRestart:!0})))}_setCodecPreferences(e,t,r,i){try{const n=e.getTransceivers().filter((e=>{var t,r;return"audio"===(null===(r=null===(t=null==e?void 0:e.sender)||void 0===t?void 0:t.track)||void 0===r?void 0:r.kind)}));n.forEach((e=>{if(void 0===RTCRtpSender.getCapabilities)return;const t=RTCRtpSender.getCapabilities("audio");for(let e=0;e<t.codecs.length;e++)if(i&&"audio/red"===t.codecs[e].mimeType.toLowerCase()){t.codecs.unshift(t.codecs.splice(e,1)[0]);break}void 0!==e.setCodecPreferences&&e.setCodecPreferences(t.codecs)}));const s=e.getTransceivers().filter((e=>{var t,r;return"video"===(null===(r=null===(t=null==e?void 0:e.sender)||void 0===t?void 0:t.track)||void 0===r?void 0:r.kind)}));s.forEach((e=>{if(void 0===RTCRtpSender.getCapabilities)return;const i=RTCRtpSender.getCapabilities("video");for(let e=0;e<i.codecs.length;e++){if(t&&"video/vp9"===i.codecs[e].mimeType.toLowerCase()){i.codecs.unshift(i.codecs.splice(e,1)[0]);break}if(r&&"video/av1"===i.codecs[e].mimeType.toLowerCase()){i.codecs.unshift(i.codecs.splice(e,1)[0]);break}}void 0!==e.setCodecPreferences&&e.setCodecPreferences(i.codecs)}))}catch(e){Dm.error("Error during setting setCodecPreferences:",e)}}_negotiatePeerConnection(e,t,r){if(!t)return void Dm.warn("No RTCPeerConnection in negotiatePeerConnection()",e);const i=t.pc;if(!t.canModifyPeerConnection())return void t.pending.push((()=>{this._negotiatePeerConnection(e,t,r)}));t.isOperationPending=!0;const{vp9On:n,av1On:s,redOn:a,rtpAbsCaptureTimeOn:o}=this._features;(n||s||a)&&this._setCodecPreferences(i,n,s,a),i.createOffer(r||this.offerOptions).then((r=>{o&&(r.sdp=_h(r.sdp)),(n||a)&&"firefox"===Em&&(r.sdp=function(e,t,r){var i,n;try{const s=on(e);if(Array.isArray(null==s?void 0:s.media)){const e=s.media.find((e=>"audio"===e.type));if(Array.isArray(null==e?void 0:e.rtp)){const t=e.rtp;for(let n=0;n<t.length;n++)if(r&&"red"===t[n].codec){const r=null===(i=e.payloads)||void 0===i?void 0:i.split(" "),s=null==r?void 0:r.indexOf(""+t[n].payload);s&&-1!==s&&s>=0&&(null==r||r.unshift(r.splice(s,1)[0]),e.payloads=null==r?void 0:r.join(" "))}}const a=s.media.find((e=>"video"===e.type));if(Array.isArray(null==a?void 0:a.rtp)){const e=a.rtp;for(let r=0;r<e.length;r++)if(t&&"VP9"===e[r].codec){const t=null===(n=a.payloads)||void 0===n?void 0:n.split(" "),i=null==t?void 0:t.indexOf(""+e[r].payload);i&&-1!==i&&i>=0&&(null==t||t.unshift(t.splice(i,1)[0]),a.payloads=null==t?void 0:t.join(" "))}}}return an(s)}catch(e){hh.error("setCodecPreferenceSDP error:",e)}}(r.sdp,n,a)),this._emitServerEvent(Fh,{receiverId:e,message:this._transformOutgoingSdp(r)}),"chrome"===Em&&i.getSenders().filter((e=>e.track&&"video"===e.track.kind)).length>=2?t.pendingOffer=r:i.setLocalDescription(r).catch((t=>{Dm.warn("RTCPeerConnection.setLocalDescription() failed with local offer",t),this._features.reverseOfferOnFailure&&(this._lastReverseDirectionAttemptByClientId||(this._lastReverseDirectionAttemptByClientId={}),(!this._lastReverseDirectionAttemptByClientId[e]||this._lastReverseDirectionAttemptByClientId[e]<Date.now()-1e4)&&(this.acceptNewStream({clientId:e,streamId:e,shouldAddLocalVideo:!0}),this._lastReverseDirectionAttemptByClientId[e]=Date.now()))}))})).catch((e=>{Dm.warn("RTCPeerConnection.createOffer() failed to create local offer",e)}))}_withForcedRenegotiation(e,t){const r=e.pc,i=r.onnegotationneeded;r.onnegotiationneeded=null,t(),this._negotiatePeerConnection(e.clientId,e),setTimeout((()=>r.onnegotiationneeded=i),0)}_changeBandwidthForAllClients(e){let t=this.numberOfPeerconnections();if(e&&(t+=1),0===t)return 0;t>7&&(t=7);let r=this._features.bandwidth?parseInt(this._features.bandwidth,10):{1:0,2:this._features.highP2PBandwidth?768:384,3:this._features.highP2PBandwidth?512:256,4:192,5:128,6:128,7:64}[t];if(void 0===r)return 0;if(this._features.adjustBitratesFromResolution){const e=this._getLocalCameraStream();if(e){const t=e&&e.getVideoTracks()[0];if(t){const{width:e,height:i,frameRate:n}=t.getSettings();if(e&&i&&n){const t=Math.round(function(e,t,r){let i=e*t;i<em&&(i=em),i>rm&&(i=rm);let n=tm;i>rm?n=im:i>em&&(n+=-17582143775720163e-22*(i-em));let s=e*t*n;return r<=15?s*=.7:r<=24&&(s*=.9),s}(e,i,n)/1e3);r=Math.min(t,r||t)}}}}return this._features.higherP2PBitrates&&(r*=1.5),this._forEachPeerConnection((e=>{e.changeBandwidth(r)})),r}_createP2pSession(e,t,r,i){const n=this._createSession({peerConnectionId:e,clientId:e,initialBandwidth:t,shouldAddLocalVideo:r,isOfferer:i}),s=n.pc;this._features.increaseIncomingMediaBufferOn&&this._setJitterBufferTarget(s);const a=this.localStreams[Om];return r&&a&&!a.getVideoTracks().length&&this._stoppedVideoTrack&&s.addTrack(this._stoppedVideoTrack,a),s.onicegatheringstatechange=e=>{switch(e.target.iceGatheringState){case"gathering":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=setTimeout((()=>{n.publicHostCandidateSeen||n.relayCandidateSeen||n.serverReflexiveCandidateSeen||this._emit(bm)}),3e3);break;case"complete":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=void 0}},s.onicecandidate=t=>{var r,i;if(t.candidate){switch(null===(r=t.candidate)||void 0===r?void 0:r.type){case"host":const e=null===(i=null==t?void 0:t.candidate)||void 0===i?void 0:i.address;try{if(um.v4({exact:!0}).test(e)){Zl(e).isPublicIp&&(n.publicHostCandidateSeen=!0)}else if(um.v6({exact:!0}).test(e.replace(/^\[(.*)\]/,"$1"))){const t=new Hd.Address6(e.replace(/^\[(.*)\]/,"$1"));n.ipv6HostCandidateSeen=!0,"Global"===t.getScope()&&(n.publicHostCandidateSeen=!0),t.isTeredo()&&(n.ipv6HostCandidateTeredoSeen=!0),t.is6to4()&&(n.ipv6HostCandidate6to4Seen=!0)}else{const t=e.replace(/.local/,"");t&&ip(t,4)&&(n.mdnsHostCandidateSeen=!0)}}catch(e){Dm.info("Error during parsing candidates! Error: ",{error:e})}break;case"srflx":n.serverReflexiveCandidateSeen||(n.serverReflexiveCandidateSeen=!0);break;case"relay":case"relayed":n.relayCandidateSeen||(n.relayCandidateSeen=!0)}this._emitServerEvent(Lh,{receiverId:e,message:t.candidate})}else this._emitServerEvent(Ah,{receiverId:e}),n.publicHostCandidateSeen||n.relayCandidateSeen||n.serverReflexiveCandidateSeen||this._emit(_m),n.ipv6HostCandidateSeen&&this._emit(gm,{teredoSeen:n.ipv6HostCandidateTeredoSeen,sixtofourSeen:n.ipv6HostCandidate6to4Seen}),n.mdnsHostCandidateSeen&&this._emit(vm)},s.onnegotiationneeded=()=>{"new"!==s.iceConnectionState&&n.connectionStatus&&this._negotiatePeerConnection(e,n)},n}acceptNewStream({streamId:e,clientId:t,shouldAddLocalVideo:r}){let i=this._getSession(t);if(i&&e!==t)return i;let n=i&&i.bandwidth||0;return i?(Dm.warn("Replacing peer session",t),this._cleanup(t)):n=this._changeBandwidthForAllClients(!0),i=this._createP2pSession(t,n,r),this._emitServerEvent(Nh,{receiverId:t}),i}disconnect(e){this._cleanup(e),this._changeBandwidthForAllClients(!1);0===this.numberOfPeerconnections()&&setTimeout((()=>{0===this.numberOfPeerconnections()&&this.rtcStatsDisconnect()}),6e4)}updateStreamResolution(){}stopOrResumeAudio(){}_handleStopOrResumeVideo({enable:e,track:t}){e?this._stoppedVideoTrack?(this._replaceTrackToPeerConnections(this._stoppedVideoTrack,t),delete this._stoppedVideoTrack):this._addTrackToPeerConnections(t):this._stoppedVideoTrack=t}stopOrResumeVideo(e,t){if(["chrome","safari"].includes(Em))if(!1===t)setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emit(Wh,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),5e3);else if(0===e.getVideoTracks().length){const r=this._webrtcProvider.getMediaConstraints().video;if(!r)return;navigator.mediaDevices.getUserMedia({video:r}).then((r=>{const i=r.getVideoTracks()[0];e.addTrack(i),this._emit(Hh,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}_shareScreen(e,t){this._emitServerEvent(Th,{streamId:e,hasAudioTrack:!!t.getAudioTracks().length}),this._wasScreenSharing=!0,this._addStreamToPeerConnections(t)}removeStream(e,t,r){this._removeLocalStream(e),this._removeStreamFromPeerConnections(t),this._wasScreenSharing=!1,this._emitServerEvent(Ph,{streamId:e,requestedByClientId:r})}hasClient(e){return Object.keys(this.peerConnections).includes(e)}}var Mm=Object.freeze({__proto__:null,KalmanFilter:class{constructor({R:e=.01,Q:t=2,A:r=1.1,B:i=1,C:n=1.2}={R:.01,Q:2,A:1.1,B:1,C:1.2}){this.R=e,this.Q=t,this.A=r,this.C=n,this.B=i,this.cov=NaN,this.x=NaN}filter(e,t=0){if(isNaN(this.x))this.x=1/this.C*e,this.cov=1/this.C*this.Q*(1/this.C);else{const r=this.predict(t),i=this.uncertainty(),n=i*this.C*(1/(this.C*i*this.C+this.Q));this.x=r+n*(e-this.C*r),this.cov=i-n*this.C*i}return this.x}predict(e=0){return this.A*this.x+this.B*e}uncertainty(){return this.A*this.cov*this.A+this.R}lastMeasurement(){return this.x}setMeasurementNoise(e){this.Q=e}setProcessNoise(e){this.R=e}},calculateStd:e=>{const t=e.reduce(((e,t)=>e+t),0)/e.length;return e.reduce(((e,r)=>e.concat(Math.pow(r-t,2))),[]).reduce(((e,t)=>e+t),0)/e.length},createACFCalculator:()=>{let e=-1,t=0,r=0;return i=>{const n=i.reduce(((e,t)=>e+t),0)/i.length;if(e=e<0?n:.95*e+.05*n,++r<2)return t=n,0;const s=(n-e)*(t-e);return t=n,s}},standardDeviation:e=>{const t=e.reduce(((e,t)=>e+t),0)/e.length;return{mean:t,SD:Math.sqrt(e.reduce(((e,r)=>e+Math.pow(r-t,2)),0)/e.length)}},variance:(e,t=!1)=>{const r=e.reduce(((e,t)=>e+t),0)/e.length;return e.reduce(((e,t)=>e.concat(Math.pow(t-r,2))),[]).reduce(((e,t)=>e+t),0)/(e.length-(t?0:1))}});const Lm={minDecibels:-80,maxDecibels:-10,smoothingTimeConstant:.8,aggSize:1,sampleRate:10,reportRate:2,bins:32,bands:[[0,1,2,3],[4,5,6,7]],separateTrack:{autoGainControl:!1,noiseSupression:!1},binFormula:"bin",scoreFormula:"300 * bands[1].avg / Math.max(bands[1].avg + bands[0].avg, 0.01)",outFormula:"score"},Am=new Iu;const Nm=new Iu,Bm=Object.freeze({ok:"ok",warning:"warning",critical:"critical"});class Fm extends Bt{constructor(){super(),this._clients={},this._producers={},this._startMonitor()}close(){clearInterval(this._intervalHandle),delete this._intervalHandle,this._producers={},this._clients={}}_startMonitor(){this._intervalHandle=setInterval((()=>{Object.entries(this._producers).forEach((([e,t])=>{this._evaluateClient(e,t)}))}),600)}_evaluateClient(e,t){this._clients[e]||(this._clients[e]={audio:{currentQuality:Bm.ok,trend:[]},video:{currentQuality:Bm.ok,trend:[]}}),this._evaluateProducer(e,Object.values(t).filter((e=>"audio"===e.kind)),"audio"),this._evaluateProducer(e,Object.values(t).filter((e=>"video"===e.kind)),"video")}_evaluateProducer(e,t,r){if(0===t.length)return;const i=t.reduce(((e,t)=>e+t.score),0)/t.length,n=this._evaluateScore(i);this._updateTrend(n,this._clients[e][r])&&this.emit($h,{clientId:e,kind:r,quality:n})}_updateTrend(e,t){return t.trend.push(e),t.trend.length>3&&t.trend.shift(),!(e===t.currentQuality||!t.trend.every((e=>e!==t.currentQuality)))&&(t.currentQuality=e,!0)}addProducer(e,t){e&&t&&"string"==typeof e&&"string"==typeof t?(this._producers[e]||(this._producers[e]={}),this._producers[e][t]={}):Nm.warn("Missing clientId or producerId")}removeProducer(e,t){delete this._producers[e][t],0===Object.keys(this._producers[e]).length&&delete this._producers[e]}addConsumer(e,t){e&&t?(this._producers[e]||(this._producers[e]={}),this._producers[e][t]={}):Nm.warn("Missing clientId or consumerId")}removeConsumer(e,t){delete this._producers[e][t],0===Object.keys(this._producers[e]).length&&delete this._producers[e]}addProducerScore(e,t,r,i){Array.isArray(i)&&0!==i.length&&!i.some((e=>!e||!e.hasOwnProperty("score")||"number"!=typeof e.score||isNaN(e.score)))?this._producers[e][t]={kind:r,score:this._calcAvgProducerScore(i.map((e=>e.score)))}:Nm.warn("Unexpected producer score format")}addConsumerScore(e,t,r,i){i&&i.hasOwnProperty("producerScores")&&Array.isArray(i.producerScores)?this._producers[e][t]={kind:r,score:this._calcAvgProducerScore(i.producerScores)}:Nm.warn("Unexpected consumer score format")}_evaluateScore(e){return e<=9&&e>7?Bm.warning:e<=7&&e>0?Bm.critical:Bm.ok}_calcAvgProducerScore(e){try{if(!Array.isArray(e)||0===e.length)return 0;let t=0,r=0;return e.forEach((e=>{e>0&&(t+=e,r++)})),0===t||0===r?0:t/r}catch(e){return Nm.error(e),0}}}var Um;const $m=null!==(Um=Ad.default)&&void 0!==Um?Um:Ad,zm=new Iu,Vm=$m.browserDetails.browser;let qm=!1;const Gm=Gd(),Hm=Gd();"chrome"===Vm&&window.document.addEventListener("beforeunload",(()=>qm=!0));class Wm{constructor({selfId:e,room:t,emitter:r,serverSocket:i,webrtcProvider:n,features:s,eventClaim:a,deviceHandlerFactory:o}){const{session:c,iceServers:d,sfuServer:l,mediaserverConfigTtlSeconds:p}=t;this._selfId=e,this._room=t,this._roomSessionId=null==c?void 0:c.id,this._emitter=r,this._serverSocket=i,this._webrtcProvider=n,this._features=s||{},this._eventClaim=a,this._vegaConnection=null,this._micAnalyser=null,this._micAnalyserDebugger=null,this._mediasoupDevice=o?new Qt.Device({handlerFactory:o}):new Qt.Device({handlerName:Vu()}),this._routerRtpCapabilities=null,this._sendTransport=null,this._receiveTransport=null,this._clientStates=new Map,this._streamIdToVideoConsumerId=new Map,this._consumers=new Map,this._dataConsumers=new Map,this._localStreamDeregisterFunction=null,this._micTrack=null,this._webcamTrack=null,this._screenVideoTrack=null,this._screenAudioTrack=null,this._micProducer=null,this._micProducerPromise=null,this._micPaused=!1,this._micScoreProducer=null,this._micScoreProducerPromise=null,this._webcamProducer=null,this._webcamProducerPromise=null,this._webcamPaused=!1,this._screenVideoProducer=null,this._screenVideoProducerPromise=null,this._screenAudioProducer=null,this._screenAudioProducerPromise=null,this._sndTransportIceRestartPromise=null,this._rcvTransportIceRestartPromise=null,this._colocation=null,this._stopCameraTimeout=null,this._audioTrackOnEnded=()=>{lh.sendEvent("audio_ended",{unloading:qm}),this._emitToPWA(Sm,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:l,iceServers:d.iceServers||[],mediaserverConfigTtlSeconds:p}),this._socketListenerDeregisterFunctions=[],this._reconnect=!0,this._reconnectTimeOut=null,this._qualityMonitor=new Fm,this._qualityMonitor.on($h,(e=>{this._emitToPWA($h,e)}))}_updateAndScheduleMediaServersRefresh({iceServers:e,sfuServer:t,mediaserverConfigTtlSeconds:r}){var i,n;this._iceServers=e,this._sfuServer=t,this._mediaserverConfigTtlSeconds=r,null===(i=this._sendTransport)||void 0===i||i.updateIceServers({iceServers:this._iceServers}),null===(n=this._receiveTransport)||void 0===n||n.updateIceServers({iceServers:this._iceServers}),this._clearMediaServersRefresh(),r&&(this._fetchMediaServersTimer=setTimeout((()=>this._emitToSignal(Rh)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}setupSocketListeners(){this._socketListenerDeregisterFunctions.push((()=>this._clearMediaServersRefresh()),this._serverSocket.on(Oh,(e=>{e.error?zm.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(jh,(()=>{this._screenVideoTrack&&this._emitScreenshareStarted()}))),this._connect()}_emitScreenshareStarted(){this._emitToSignal(Th,{streamId:Hm,hasAudioTrack:Boolean(this._screenAudioTrack)})}_connect(){const e=`wss://${this._features.sfuServerOverrideHost||[this._sfuServer.url]}?${new URLSearchParams({clientId:this._selfId,organizationId:this._room.organizationId,roomName:this._room.name,eventClaim:this._room.isClaimed?this._eventClaim:null,lowBw:"true"}).toString()}`;this._vegaConnection=new Mu(e),this._vegaConnection.on("open",(()=>this._join())),this._vegaConnection.on("close",(()=>this._onClose())),this._vegaConnection.on("message",(e=>this._onMessage(e)))}_onClose(){var e,t;zm.info("_onClose()"),null===(e=this._sendTransport)||void 0===e||e.close(),null===(t=this._receiveTransport)||void 0===t||t.close(),this._sendTransport=null,this._receiveTransport=null,this._streamIdToVideoConsumerId.clear(),this._reconnect&&(this._reconnectTimeOut=setTimeout((()=>this._connect()),1e3)),this._qualityMonitor.close(),this._emitToPWA(Tm)}_join(){return Pu(this,void 0,void 0,(function*(){zm.info("join()"),this._emitToPWA(Rm);try{const{routerRtpCapabilities:e}=yield this._vegaConnection.request("getCapabilities");this._routerRtpCapabilities||(((e,t)=>{const{vp9On:r,h264On:i}=t;if(r){const{preferredPayloadType:t}=e.codecs.find((e=>"video/vp9"===e.mimeType.toLowerCase())),{preferredPayloadType:r}=e.codecs.find((e=>"video/rtx"===e.mimeType.toLowerCase()&&e.parameters.apt===t));e.codecs=e.codecs.filter((e=>"audio"===e.kind||e.preferredPayloadType===t||e.preferredPayloadType===r))}else if(i){const{preferredPayloadType:t}=e.codecs.find((e=>"video/h264"===e.mimeType.toLowerCase())),{preferredPayloadType:r}=e.codecs.find((e=>"video/rtx"===e.mimeType.toLowerCase()&&e.parameters.apt===t));e.codecs=e.codecs.filter((e=>"audio"===e.kind||e.preferredPayloadType===t||e.preferredPayloadType===r))}})(e,this._features),this._routerRtpCapabilities=e,yield this._mediasoupDevice.load({routerRtpCapabilities:e})),this._vegaConnection.message("setCapabilities",{rtpCapabilities:this._mediasoupDevice.rtpCapabilities}),this._colocation&&this._vegaConnection.message("setColocation",{colocation:this._colocation}),yield Promise.all([this._createTransport(!0),this._createTransport(!1)]);const t=[];!this._micTrack||this._micProducer||this._micProducerPromise||t.push(this._internalSendMic()),!this._webcamTrack||this._webcamProducer||this._webcamProducerPromise||t.push(this._internalSendWebcam()),!this._screenVideoTrack||this._screenVideoProducer||this._screenVideoProducerPromise||t.push(this._internalSendScreenVideo()),!this._screenAudioTrack||this._screenAudioProducer||this._screenAudioProducerPromise||t.push(this._internalSendScreenAudio()),yield Promise.all(t)}catch(e){zm.error("_join() [error:%o]",e)}}))}_createTransport(e){return Pu(this,void 0,void 0,(function*(){const t=e?"createSendTransport":"createRecvTransport",r=yield this._vegaConnection.request("createTransport",{producing:e,consuming:!e,enableTcp:!0,enableUdp:!0,preferUdp:!0,sctpParameters:{enableSctp:!0,numSctpStreams:{OS:1024,MIS:1024},maxSctpMessageSize:262144,sctpSendBufferSize:262144}});r.iceServers=this._iceServers,((e,t)=>{if(!t.useOnlyTURN)return;e.iceTransportPolicy="relay";const r={onlyudp:/^turn:.*transport=udp$/,onlytcp:/^turn:.*transport=tcp$/,onlytls:/^turns:.*transport=tcp$/}[t.useOnlyTURN];r&&(e.iceServers=e.iceServers.filter((e=>e.url&&e.url.match(r))))})(r,this._features);const i=this._mediasoupDevice[t](r),n=t=>Pu(this,void 0,void 0,(function*(){if(zm.info(`Transport ConnectionStateChanged ${t}`),"disconnected"===t||"failed"===t)if(e){if(this._sndTransportIceRestartPromise)return;this._sndTransportIceRestartPromise=this._restartIce(i).finally((()=>{this._sndTransportIceRestartPromise=null}))}else{if(this._rcvTransportIceRestartPromise)return;this._rcvTransportIceRestartPromise=this._restartIce(i).finally((()=>{this._rcvTransportIceRestartPromise=null}))}}));i.on("connect",(({dtlsParameters:e},t)=>{var r;null===(r=this._vegaConnection)||void 0===r||r.message("connectTransport",{transportId:i.id,dtlsParameters:e}),t()})).on("connectionstatechange",n),i.observer.once("close",(()=>{i.removeListener(n)})),e?(i.on("produce",(({kind:e,rtpParameters:t,appData:r},n,s)=>Pu(this,void 0,void 0,(function*(){var a;try{const{paused:s}=r,{id:o}=yield null===(a=this._vegaConnection)||void 0===a?void 0:a.request("produce",{transportId:i.id,kind:e,rtpParameters:t,paused:s,appData:r});n({id:o})}catch(e){s(e)}})))),i.on("producedata",(({appData:e,sctpStreamParameters:t},r,n)=>Pu(this,void 0,void 0,(function*(){var s;try{const{id:n}=yield null===(s=this._vegaConnection)||void 0===s?void 0:s.request("produceData",{transportId:i.id,sctpStreamParameters:t,appData:e});r({id:n})}catch(e){n(e)}})))),this._sendTransport=i):this._receiveTransport=i}))}_restartIce(e,t=0){return Pu(this,void 0,void 0,(function*(){if(!e||!("closed"in e)||!("connectionState"in e))return void zm.info("_restartIce: No transport or property closed or connectionState!");if(e.closed)return void zm.info("_restartIce: Transport is closed!");if("disconnected"!==e.connectionState&&"failed"!==e.connectionState)return void zm.info("_restartIce: Connection is healthy ICE restart no loneger needed!");const{iceRestartStarted:r}=e.appData,i=Date.now();if(Number.isFinite(r)&&i-r<3500)return;if(e.appData.iceRestartStarted=i,5<=t)return void zm.info("_restartIce: Reached restart ICE maximum retry count!");if(!this._vegaConnection)return void zm.info("_restartIce: Connection is undefined");const{iceParameters:n}=yield this._vegaConnection.request("restartIce",{transportId:e.id});zm.info("_restartIce: ICE restart iceParameters received from SFU: ",n);const s=yield e.restartIce({iceParameters:n}).then((()=>null)).catch((e=>e));if(s)switch(zm.error(`_restartIce: ICE restart failed: ${s}`),s.message){case"missing transportId":case"no such transport":break;default:yield new Promise((e=>{setTimeout((()=>{e(void 0)}),Math.min(3500*Math.pow(2,t),6e4))})),yield this._restartIce(e,t+1)}else yield new Promise((e=>{setTimeout((()=>{e(void 0)}),6e4*Math.min(8,t+1))})),"failed"!==e.connectionState&&"disconnected"!==e.connectionState||(yield this._restartIce(e,t+1))}))}_internalSendMic(){return Pu(this,void 0,void 0,(function*(){zm.info("_internalSendMic()"),this._micProducerPromise=(()=>Pu(this,void 0,void 0,(function*(){try{if(!this._micTrack||!this._sendTransport||this._micProducer)return void(this._micProducerPromise=null);const e=this._micPaused,t=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._micTrack,disableTrackOnPause:!1,stopTracks:!1},zu("audio",!1,this._features)),{appData:{streamId:Gm,sourceClientId:this._selfId,screenShare:!1,source:"mic",paused:e}}));e?t.pause():t.resume(),this._micProducer=t,this._qualityMonitor.addProducer(this._selfId,t.id),t.observer.once("close",(()=>{var e;zm.info('micProducer "close" event'),t.appData.localClosed&&(null===(e=this._vegaConnection)||void 0===e||e.message("closeProducers",{producerIds:[t.id]})),this._micProducer=null,this._micProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,t.id)})),this._micTrack!==this._micProducer.track&&(yield this._replaceMicTrack()),this._micPaused!==this._micProducer.paused&&this._pauseResumeMic()}catch(e){zm.error("micProducer failed:%o",e)}finally{this._micProducerPromise=null,this._micTrack||(this._stopProducer(this._micProducer),this._micProducer=null)}})))()}))}_internalSetupMicScore(){return Pu(this,void 0,void 0,(function*(){zm.info("_internalSetupMicScore()"),this._micScoreProducerPromise=(()=>Pu(this,void 0,void 0,(function*(){try{if(!this._micProducer||!this._colocation||this._micScoreProducer)return void(this._micScoreProducerPromise=null);const e=yield this._sendTransport.produceData({ordered:!1,maxPacketLifeTime:3e3,label:"micscore",appData:{producerId:this._micProducer.id,clientId:this._selfId}});this._micScoreProducer=e,e.observer.once("close",(()=>{var t;zm.info('micScoreProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeDataProducers",{dataProducerIds:[e.id]})),this._micScoreProducer=null,this._micScoreProducerPromise=null}))}catch(e){zm.error("micScoreProducer failed:%o",e)}finally{this._micScoreProducerPromise=null,this._micProducer&&this._colocation||this._stopMicScoreProducer()}})))()}))}_stopMicScoreProducer(){this._stopProducer(this._micScoreProducer),this._micScoreProducer=null}_replaceMicTrack(){var e;return Pu(this,void 0,void 0,(function*(){zm.info("_replaceMicTrack()"),this._micTrack&&this._micProducer&&!this._micProducer.closed&&this._micProducer.track!==this._micTrack&&(yield this._micProducer.replaceTrack({track:this._micTrack}),null===(e=this._micAnalyser)||void 0===e||e.setTrack(this._micTrack),yield this._replaceMicTrack())}))}_pauseResumeMic(){var e,t;zm.info("_pauseResumeMic()"),this._micProducer&&!this._micProducer.closed&&this._micPaused!==this._micProducer.paused&&(this._micPaused?(this._micProducer.pause(),null===(e=this._vegaConnection)||void 0===e||e.message("pauseProducers",{producerIds:[this._micProducer.id]})):(this._micProducer.resume(),null===(t=this._vegaConnection)||void 0===t||t.message("resumeProducers",{producerIds:[this._micProducer.id]})),this._pauseResumeMic())}_sendMic(e){return Pu(this,void 0,void 0,(function*(){return zm.info("_sendMic() [track:%o]",e),this._micTrack=e,this._micProducer?yield this._replaceMicTrack():this._micProducerPromise?void 0:this._sendTransport?yield this._internalSendMic():void 0}))}_sendMicScore(e){if(!isNaN(e)&&isFinite(e))if(this._micScoreProducer){if(this._micScoreProducer.closed)return void this._stopMicScoreProducer();try{this._micScoreProducer.send(JSON.stringify({score:e}))}catch(e){zm.error("_sendMicScore failed [error:%o]",e)}}else!this._micScoreProducerPromise&&this._micProducer&&this._colocation&&0!==e&&this._internalSetupMicScore()}_internalSendWebcam(){return Pu(this,void 0,void 0,(function*(){zm.info("_internalSendWebcam()"),this._webcamProducerPromise=(()=>Pu(this,void 0,void 0,(function*(){try{if(!this._webcamTrack||"live"!==this._webcamTrack.readyState||!this._sendTransport||this._webcamProducer)return void(this._webcamProducerPromise=null);const e=this._webcamPaused,t=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._webcamTrack,disableTrackOnPause:!1,stopTracks:!1},zu("video",!1,this._features)),{appData:{streamId:Gm,sourceClientId:this._selfId,screenShare:!1,source:"webcam",paused:e}}));e?t.pause():t.resume(),this._webcamProducer=t,this._qualityMonitor.addProducer(this._selfId,t.id),t.observer.once("close",(()=>{var e;zm.info('webcamProducer "close" event'),t.appData.localClosed&&(null===(e=this._vegaConnection)||void 0===e||e.message("closeProducers",{producerIds:[t.id]})),this._webcamProducer=null,this._webcamProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,t.id)})),this._webcamTrack!==this._webcamProducer.track&&(yield this._replaceWebcamTrack()),this._webcamPaused!==this._webcamProducer.paused&&this._pauseResumeWebcam()}catch(e){zm.error("webcamProducer failed:%o",e)}finally{this._webcamProducerPromise=null,this._webcamTrack||(yield this._stopProducer(this._webcamProducer),this._webcamProducer=null)}})))()}))}_replaceWebcamTrack(){return Pu(this,void 0,void 0,(function*(){zm.info("_replaceWebcamTrack()"),this._webcamTrack&&(!this._webcamProducer&&this._webcamTrack.enabled&&(yield this._internalSendWebcam()),this._webcamTrack&&this._webcamProducer&&!this._webcamProducer.closed&&this._webcamProducer.track!==this._webcamTrack&&(yield this._webcamProducer.replaceTrack({track:this._webcamTrack}),yield this._replaceWebcamTrack()))}))}_pauseResumeWebcam(){var e,t;zm.info("_pauseResumeWebcam()"),this._webcamProducer&&!this._webcamProducer.closed&&this._webcamPaused!==this._webcamProducer.paused&&(this._webcamPaused?(this._webcamProducer.pause(),null===(e=this._vegaConnection)||void 0===e||e.message("pauseProducers",{producerIds:[this._webcamProducer.id]})):(this._webcamProducer.resume(),null===(t=this._vegaConnection)||void 0===t||t.message("resumeProducers",{producerIds:[this._webcamProducer.id]})),this._pauseResumeWebcam())}_sendWebcam(e){return Pu(this,void 0,void 0,(function*(){return zm.info("_sendWebcam() [track:%o]",e),this._webcamTrack=e,this._webcamProducer?yield this._replaceWebcamTrack():this._webcamProducerPromise?void 0:this._sendTransport?yield this._internalSendWebcam():void 0}))}_internalSendScreenVideo(){return Pu(this,void 0,void 0,(function*(){zm.info("_internalSendScreenVideo()"),this._screenVideoProducerPromise=(()=>Pu(this,void 0,void 0,(function*(){try{if(!this._screenVideoTrack||!this._sendTransport||this._screenVideoProducer)return void(this._screenVideoProducerPromise=null);const e=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._screenVideoTrack,disableTrackOnPause:!1,stopTracks:!1},zu("video",!0,this._features)),{appData:{streamId:Hm,sourceClientId:this._selfId,screenShare:!0,source:"screenvideo",paused:!1}}));this._screenVideoProducer=e,this._qualityMonitor.addProducer(this._selfId,e.id),e.observer.once("close",(()=>{var t;zm.info('screenVideoProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeProducers",{producerIds:[e.id]})),this._screenVideoProducer=null,this._screenVideoProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,e.id)})),this._screenVideoTrack!==this._screenVideoProducer.track&&(yield this._replaceScreenVideoTrack())}catch(e){zm.error("screenVideoProducer failed:%o",e)}finally{this._screenVideoProducerPromise=null,this._screenVideoTrack||(yield this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null)}})))()}))}_replaceScreenVideoTrack(){return Pu(this,void 0,void 0,(function*(){zm.info("_replaceScreenVideoTrack()"),this._screenVideoTrack&&this._screenVideoProducer&&!this._screenVideoProducer.closed&&this._screenVideoProducer.track!==this._screenVideoTrack&&(yield this._screenVideoProducer.replaceTrack({track:this._screenVideoTrack}),yield this._replaceScreenVideoTrack())}))}_sendScreenVideo(e){return Pu(this,void 0,void 0,(function*(){return zm.info("_sendScreenVideo() [track:%o]",e),this._screenVideoTrack=e,this._screenVideoProducer?yield this._replaceScreenVideoTrack():this._screenVideoProducerPromise?void 0:this._sendTransport?yield this._internalSendScreenVideo():void 0}))}_internalSendScreenAudio(){return Pu(this,void 0,void 0,(function*(){zm.info("_internalSendScreenAudio()"),this._screenAudioProducerPromise=(()=>Pu(this,void 0,void 0,(function*(){try{if(!this._screenAudioTrack||!this._sendTransport||this._screenAudioProducer)return void(this._screenAudioProducerPromise=null);const e=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._screenAudioTrack,disableTrackOnPause:!1,stopTracks:!1},zu("audio",!0,this._features)),{appData:{streamId:Hm,sourceClientId:this._selfId,screenShare:!0,source:"screenaudio",paused:!1}}));this._screenAudioProducer=e,this._qualityMonitor.addProducer(this._selfId,e.id),e.observer.once("close",(()=>{var t;zm.info('screenAudioProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeProducers",{producerIds:[e.id]})),this._screenAudioProducer=null,this._screenAudioProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,e.id)})),this._screenAudioTrack!==this._screenAudioProducer.track&&(yield this._replaceScreenAudioTrack())}catch(e){zm.error("screenAudioProducer failed:%o",e)}finally{this._screenAudioProducerPromise=null,this._screenAudioTrack||(yield this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null)}})))()}))}_replaceScreenAudioTrack(){return Pu(this,void 0,void 0,(function*(){zm.info("_replaceScreenAudioTrack()"),this._screenAudioTrack&&this._screenAudioProducer&&!this._screenAudioProducer.closed&&this._screenAudioProducer.track!==this._screenAudioTrack&&(yield this._screenAudioProducer.replaceTrack({track:this._screenAudioTrack}),yield this._replaceScreenAudioTrack())}))}_sendScreenAudio(e){return Pu(this,void 0,void 0,(function*(){return zm.info("_sendScreenAudio() [track:%o]",e),this._screenAudioTrack=e,this._screenAudioProducer?yield this._replaceScreenAudioTrack():this._screenAudioProducerPromise?void 0:this._sendTransport?yield this._internalSendScreenAudio():void 0}))}_stopProducer(e){zm.info("_stopProducer()"),e&&!e.closed&&(e.appData.localClosed=!0,e.close())}isInitializedWith({selfId:e,roomName:t,isSfu:r}){return this._selfId===e&&this._room.name===t&&Boolean(r)}setEventClaim(e){var t;this._eventClaim=e,null===(t=this._vegaConnection)||void 0===t||t.message("eventClaim",{eventClaim:e})}setColocation(e){var t;this._colocation=e,null===(t=this._vegaConnection)||void 0===t||t.message("setColocation",{colocation:e}),e||!this._micScoreProducer||this._micScoreProducerPromise||this._stopMicScoreProducer(),this._syncMicAnalyser(),lh.sendEvent("colocation_changed",{colocation:e})}setAudioOnly(e){var t;null===(t=this._vegaConnection)||void 0===t||t.message(e?"enableAudioOnly":"disableAudioOnly")}setRemoteScreenshareVideoTrackIds(){}setRoomSessionId(e){this._roomSessionId=e}disconnect(e,t,r){var i;if(zm.info("disconnect() [clientIdOrStreamId:%s, eventClaim:%s]",e,r),this._clientStates.has(e)){const t=this._clientStates.get(e);t.hasAcceptedWebcamStream=!1,t.hasAcceptedScreenStream=!1,this._syncIncomingStreamsWithPWA(e)}r&&(this._eventClaim=r,null===(i=this._vegaConnection)||void 0===i||i.message("eventClaim",{eventClaim:r}))}replaceTrack(e,t){e&&"audio"===e.kind&&this._stopMonitoringAudioTrack(e),"audio"===t.kind&&(this._startMonitoringAudioTrack(t),this._micTrack=t,this._replaceMicTrack()),"video"===t.kind&&(this._webcamTrack=t,this._replaceWebcamTrack())}removeStream(e,t,r){zm.info("removeStream() [streamId:%s, requestedByClientId:%s]",e,r),this._emitToSignal(Ph,{streamId:Hm,requestedByClientId:r}),this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null,this._screenVideoTrack=null,this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null,this._screenAudioTrack=null}_onMicAnalyserScoreUpdated(e){var t,r;null===(r=null===(t=this._micAnalyserDebugger)||void 0===t?void 0:t.onScoreUpdated)||void 0===r||r.call(t,e),this._sendMicScore(this._micPaused?0:e.out)}addNewStream(e,t,r,i){if("0"===e){this._micPaused=r,this._webcamPaused=i;const e=t.getVideoTracks()[0],n=t.getAudioTracks()[0];e&&this._sendWebcam(e),n&&(this._sendMic(n),this._syncMicAnalyser(),this._startMonitoringAudioTrack(n)),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const s=e=>{const{enable:t,track:r}=e.detail;this._webcamPaused=!t,this._pauseResumeWebcam(),this._handleStopOrResumeVideo({enable:t,track:r})};t.addEventListener("stopresumevideo",s),this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",s)}}else{const e=t.getVideoTracks()[0],r=t.getAudioTracks()[0];e&&this._sendScreenVideo(e),r&&this._sendScreenAudio(r),this._emitScreenshareStarted()}}_syncMicAnalyser(){if(!this._micTrack||!this._colocation||this._micAnalyser)return this._micAnalyser&&!this._colocation?(this._micAnalyser.close(),void(this._micAnalyser=null)):void 0;this._micAnalyser=function({micTrack:e,params:t,onScoreUpdated:r}){const i=new AudioContext;let n=null,s=null,a=null,o=!1;const c=e=>Pu(this,void 0,void 0,(function*(){if(a&&o&&a.stop(),o=!1,e&&t.separateTrack)try{const r=yield navigator.mediaDevices.getUserMedia({audio:Object.assign({deviceId:null==a?void 0:a.getSettings().deviceId},t.separateTrack),video:!1});e=r.getAudioTracks()[0],o=!0}catch(e){Am.warn("unable to fetch new track for colocation speaker analysis, using current",e)}if(a=e,s&&(s.disconnect(),s=null),e){const t=new MediaStream([e]);s=i.createMediaStreamSource(t),s.connect(n)}}));let d;const l=e=>{if(clearInterval(d),t=Object.assign(Object.assign({},Lm),e),!n||n.fftSize!==2*t.bins){let e=null;n&&(e=a,c(null)),n=i.createAnalyser(),n.fftSize=2*t.bins,e&&c(e)}const s=new Uint8Array(n.frequencyBinCount),o=[];n.minDecibels=t.minDecibels,n.maxDecibels=t.maxDecibels,n.smoothingTimeConstant=t.smoothingTimeConstant;const l=t.initScript&&new Function("f","setTrack","lastTrack",t.initScript.join("\n")),p=t.scoreScript&&new Function("bins","g","f",t.scoreScript.join("\n")),u=t.scoreFormula&&new Function("bands",`return ${t.scoreFormula}`),h=t.outFormula&&new Function("score","avg","max","scores",`return ${t.outFormula}`),m=t.binFormula&&new Function("bin","index",`return ${t.binFormula}`);let f=0;const g=l&&l(Mm,c,a);d=setInterval((()=>{n.getByteFrequencyData(s);let e=0;if(u){const r=t.bands.map((e=>{const t=e.map((e=>m(s[e]/255,e)));return{avg:t.reduce(((e,t)=>e+t),0)/e.length,min:t.reduce(((e,t)=>Math.min(e,t/255)),Number.MAX_VALUE),max:t.reduce(((e,t)=>Math.max(e,t/255)),0)}}));e=u(r)||0}else p&&(e=p(s,g,Mm),isNaN(e)&&(e=0));if(o.push(e),o.length>t.aggSize&&o.shift(),f++,f>=t.reportRate){f=0;const t=o.reduce(((e,t)=>Math.max(e,t)),0),i=o.reduce(((e,t)=>e+t),0)/o.length,n=h(e,i,t,o);r({bins:s,score:e,max:t,avg:i,out:n})}}),1e3/t.sampleRate)};return l(t),c(e),{setParams:l,setTrack:c,close(){c(null),clearInterval(d),i.close()}}}({micTrack:this._micTrack,onScoreUpdated:this._onMicAnalyserScoreUpdated.bind(this)})}stopOrResumeAudio(e,t){zm.info("stopOrResumeAudio() [enabled:%s]",t),this._micPaused=!t,this._pauseResumeMic()}_handleStopOrResumeVideo({enable:e,track:t}){e?this._sendWebcam(t):this._webcamProducer&&!this._webcamProducer.closed&&this._webcamProducer.track===t&&(this._stopProducer(this._webcamProducer),this._webcamProducer=null,this._webcamTrack=null)}stopOrResumeVideo(e,t){if(zm.info("stopOrResumeVideo() [enable:%s]",t),this._webcamPaused=!t,this._pauseResumeWebcam(),["chrome","safari"].includes(Vm))if(t){if(0===e.getVideoTracks().length){const r=this._webrtcProvider.getMediaConstraints().video;navigator.mediaDevices.getUserMedia({video:r}).then((r=>{const i=r.getVideoTracks()[0];e.addTrack(i),this._emitToPWA(Hh,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}else clearTimeout(this._stopCameraTimeout),this._stopCameraTimeout=setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emitToPWA(Wh,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),5e3)}supportsScreenShareAudio(){return!0}acceptNewStream({streamId:e,clientId:t}){zm.info("acceptNewStream()",{streamId:e,clientId:t}),this.rtcStatsReconnect();const r=this._getOrCreateClientState(t);e!==t?(r.hasAcceptedScreenStream=!0,r.hasEmittedScreenStream=!1):(r.hasAcceptedWebcamStream=!0,r.hasEmittedWebcamStream=!1),this._syncIncomingStreamsWithPWA(t)}updateStreamResolution(e,t,{width:r,height:i}){var n,s,a,o;zm.info("updateStreamResolution()",{streamId:e,width:r,height:i});const c=this._streamIdToVideoConsumerId.get(e),d=this._consumers.get(c);if(!d)return;let l=0;this._consumers.forEach((e=>{var t,r;e._closed||e._paused||"webcam"!==(null===(t=e._appData)||void 0===t?void 0:t.source)&&"screenvideo"!==(null===(r=e._appData)||void 0===r?void 0:r.source)||l++}));let p=2;/T3/.test((null===(a=null===(s=null===(n=d._rtpParameters)||void 0===n?void 0:n.encodings)||void 0===s?void 0:s[0])||void 0===a?void 0:a.scalabilityMode)||"")&&(p=3);const u=Math.max(r,i);let h=u>=480?u>=960?2:1:0,m=p-1;u<100&&(m=Math.max(p-2,0)),l>8&&0===h&&(m=Math.max(p-2,0)),l<4&&u>300&&0===h&&(h=1),d.appData.spatialLayer===h&&d.appData.temporalLayer===m||(d.appData.spatialLayer=h,d.appData.temporalLayer=m,null===(o=this._vegaConnection)||void 0===o||o.message("setConsumersPreferredLayers",{consumerIds:[c],spatialLayer:h,temporalLayer:m}))}disconnectAll(){var e,t,r,i;this._reconnect=!1,this._reconnectTimeOut&&(clearTimeout(this._reconnectTimeOut),this._reconnectTimeOut=null),this._socketListenerDeregisterFunctions.forEach((e=>{e()})),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null),this._socketListenerDeregisterFunctions=[],null===(e=this._vegaConnection)||void 0===e||e.removeAllListeners(),null===(t=this._vegaConnection)||void 0===t||t.close(),null===(r=this._sendTransport)||void 0===r||r.close(),null===(i=this._receiveTransport)||void 0===i||i.close(),this._micTrack=null,this._webcamTrack=null,this._screenVideoTrack=null,this._screenAudioTrack=null,this._streamIdToVideoConsumerId.clear(),this._mediasoupDevice=null}sendAudioMutedStats(e){lh.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){lh.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){lh.sendEvent(e,t)}rtcStatsDisconnect(){lh.server.close()}rtcStatsReconnect(){lh.server.connected||lh.server.connect()}_startMonitoringAudioTrack(e){e.addEventListener("ended",this._audioTrackOnEnded)}_stopMonitoringAudioTrack(e){e.removeEventListener("ended",this._audioTrackOnEnded)}_onMessage(e){return Pu(this,void 0,void 0,(function*(){const{method:t,data:r}=e;return Promise.resolve().then((()=>{switch(t){case"consumerReady":return this._onConsumerReady(r);case"consumerClosed":return this._onConsumerClosed(r);case"consumerPaused":return this._onConsumerPaused(r);case"consumerResumed":return this._onConsumerResumed(r);case"dataConsumerReady":return this._onDataConsumerReady(r);case"dataConsumerClosed":return this._onDataConsumerClosed(r);case"dominantSpeaker":return this._onDominantSpeaker(r);case"consumerScore":return this._onConsumerScore(r);case"producerScore":return this._onProducerScore(r);default:return void zm.info(`unknown message method "${t}"`)}})).catch((e=>{zm.error('"message" failed [error:%o]',e)}))}))}_onConsumerReady(e){return Pu(this,void 0,void 0,(function*(){zm.info("_onConsumerReady()",{id:e.id,producerId:e.producerId});const t=yield this._receiveTransport.consume(e);if(t.pause(),t.appData.localPaused=!0,t.appData.spatialLayer=2,this._consumers.set(t.id,t),this._qualityMonitor.addConsumer(t.appData.sourceClientId,t.id),t.observer.once("close",(()=>{this._consumers.delete(t.id),this._qualityMonitor.removeConsumer(t.appData.sourceClientId,t.id),this._consumerClosedCleanup(t)})),this._features.increaseIncomingMediaBufferOn&&t.rtpReceiver)try{t.rtpReceiver.jitterBufferTarget=Hu,t.rtpReceiver.playoutDelayHint=.4}catch(e){zm.error("Error during setting jitter buffer target:",e)}const{sourceClientId:r,screenShare:i,streamId:n}=t.appData,s=this._getOrCreateClientState(r);i?(s.hasEmittedScreenStream=!1,s.screenShareStreamId=n):(s.hasEmittedWebcamStream=!1,s.camStreamId=n);let a=i?s.screenStream:s.webcamStream;a&&a.inboundId===n||(a=new MediaStream,a.inboundId=n,i?s.screenStream=a:s.webcamStream=a),"video"===t.kind&&this._streamIdToVideoConsumerId.set(a.id,t.id),a.addTrack(t.track),this._syncIncomingStreamsWithPWA(r)}))}_onConsumerClosed({consumerId:e,reason:t}){var r;return Pu(this,void 0,void 0,(function*(){zm.info("_onConsumerClosed()",{consumerId:e,reason:t}),null===(r=this._consumers.get(e))||void 0===r||r.close()}))}_onConsumerPaused({consumerId:e}){zm.info("_onConsumerPaused()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!0,t.pause())}_onConsumerResumed({consumerId:e}){zm.info("_onConsumerResumed()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!1,t.appData.localPaused||t.resume())}_onConsumerScore({consumerId:e,kind:t,score:r}){zm.info("_onConsumerScore()",{consumerId:e,kind:t,score:r});const{appData:{sourceClientId:i}}=this._consumers.get(e)||{appData:{}};i&&this._qualityMonitor.addConsumerScore(i,e,t,r)}_onProducerScore({producerId:e,kind:t,score:r}){zm.info("_onProducerScore()",{producerId:e,kind:t,score:r}),[this._micProducer,this._webcamProducer,this._screenVideoProducer,this._screenAudioProducer].forEach((i=>{(null==i?void 0:i.id)===e&&this._qualityMonitor.addProducerScore(this._selfId,e,t,r)}))}_onDataConsumerReady(e){return Pu(this,void 0,void 0,(function*(){zm.info("_onDataConsumerReady()",{id:e.id,producerId:e.producerId});const t=yield this._receiveTransport.consumeData(e);this._dataConsumers.set(t.id,t),t.once("close",(()=>{this._dataConsumers.delete(t.id)}));const{clientId:r}=t.appData;t.on("message",(e=>{var r;if(!this._micAnalyserDebugger)return;if("string"!=typeof e)return;const{score:i}=JSON.parse(e);i&&(null===(r=this._micAnalyserDebugger)||void 0===r||r.onConsumerScore(t.appData.clientId,i))})),this._syncIncomingStreamsWithPWA(r)}))}_onDataConsumerClosed({dataConsumerId:e,reason:t}){return Pu(this,void 0,void 0,(function*(){zm.info("_onDataConsumerClosed()",{dataConsumerId:e,reason:t});const r=this._dataConsumers.get(e);null==r||r.close()}))}_onDominantSpeaker({consumerId:e}){const t=this._consumers.get(e);if(!t)return;const{sourceClientId:r}=t.appData;this._emitToPWA(Pm,{clientId:r})}_consumerClosedCleanup(e){const{sourceClientId:t,screenShare:r}=e.appData,i=this._getOrCreateClientState(t),n=r?i.screenStream:i.webcamStream;n&&(n.removeTrack(e.track),0===n.getTracks().length&&(this._streamIdToVideoConsumerId.delete(n.id),r?(i.screenStream=null,i.hasEmittedScreenStream=!1,i.screenShareStreamId=null):(i.hasEmittedWebcamStream=!1,i.camStreamId=null)))}_syncIncomingStreamsWithPWA(e){var t,r;const i=this._getOrCreateClientState(e),{webcamStream:n,screenStream:s,hasEmittedWebcamStream:a,hasEmittedScreenStream:o,hasAcceptedWebcamStream:c,hasAcceptedScreenStream:d,screenShareStreamId:l,camStreamId:p}=i,u=[],h=[];this._consumers.forEach((t=>{if(t.appData.sourceClientId!==e)return;const r=t.appData.screenShare?d:c;!t.appData.localPaused!==r&&(r?(t.appData.remotePaused||t.resume(),t.appData.localPaused=!1,h.push(t.id)):(t.pause(),t.appData.localPaused=!0,u.push(t.id)))})),u.length>0&&(null===(t=this._vegaConnection)||void 0===t||t.message("pauseConsumers",{consumerIds:u})),h.length>0&&(null===(r=this._vegaConnection)||void 0===r||r.message("resumeConsumers",{consumerIds:h})),n&&!a&&c&&(this._emitToPWA(Vh,{clientId:e,stream:n,streamId:p,streamType:"webcam"}),i.hasEmittedWebcamStream=!0),s&&!o&&d&&(this._emitToPWA(Vh,{clientId:e,stream:s,streamId:l,streamType:"screenshare"}),i.hasEmittedScreenStream=!0)}_getOrCreateClientState(e){let t=this._clientStates.get(e);return t||(t={hasAcceptedWebcamStream:!1,hasAcceptedScreenStream:!1,hasEmittedWebcamStream:!1,hasEmittedScreenStream:!1,webcamStream:null,screenStream:null,screenShareStreamId:null,camStreamId:null},this._clientStates.set(e,t)),t}_emitToPWA(e,t){this._emitter.emit(e,t)}_emitToSignal(e,t,r){this._serverSocket.emit(e,t,r)}shouldAcceptStreamsFromBothSides(){return!0}setMicAnalyserDebugger(e){this._micAnalyserDebugger=e}setMicAnalyserParams(e){var t;null===(t=this._micAnalyser)||void 0===t||t.setParams(e)}hasClient(e){return this._clientStates.has(e)}}class Km{constructor({emitter:e,serverSocket:t,webrtcProvider:r,features:i}){this.emitter=e,this.currentManager=null,t.on(jh,(({room:n,selfId:s,error:a,eventClaim:o})=>{if(a)return;const c={selfId:s,room:n,emitter:e,serverSocket:t,webrtcProvider:r,features:i,eventClaim:o,deviceHandlerFactory:null==i?void 0:i.deviceHandlerFactory},d=!!n.sfuServer;if(this.currentManager){if(this.currentManager.isInitializedWith({selfId:s,roomName:n.name,isSfu:d}))return void(this.currentManager.setEventClaim&&o&&this.currentManager.setEventClaim(o));this.currentManager.disconnectAll(),e.emit(Gh)}let l=null;l=d?new Wm(c):new jm(c),l.setupSocketListeners(),e.emit(qh,{rtcManager:l}),this.currentManager=l,t.setRtcManager(l)}))}stopRtcManager(){this.currentManager&&(this.currentManager.disconnectAll(),this.emitter.emit(Gh))}}var Jm;!function(e){e.rtc_manager_created="rtc_manager_created",e.stream_added="stream_added"}(Jm||(Jm={}));class Qm extends Error{constructor(e){super(e.message),this.name="AssertionError",this.code="ERR_ASSERTION",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,Error.captureStackTrace&&Error.captureStackTrace(this,e.stackStartFn)}}function Zm(e){if(e.message instanceof Error)throw e.message;throw new Qm(e)}function Ym(...e){!function(e,t,r,i){if(!r){let n=!1;if(0===t)n=!0,i="No value argument passed to `assert.ok()`";else if(i instanceof Error)throw i;const s=new Qm({actual:r,expected:!0,message:i,operator:"==",stackStartFn:e});throw s.generatedMessage=n,s}}(Ym,e.length,...e)}const Xm={fail:e=>{Zm({actual:"fail()",expected:"fail() should not be called",message:e,operator:"fail",stackStartFn:Xm.fail})},ok:Ym,notEqual:function e(t,r,i){if(arguments.length<2)throw new Error("'actual' and 'expected' arguments are required");t==r&&Zm({actual:t,expected:r,message:i,operator:"!=",stackStartFn:e})}};Xm.ok=Ym;const ef=new Iu;class tf extends Bt{constructor(e){super(),this._socket=e,this._clients={},this._signalDisconnectTime=void 0,this.rtcManager=void 0,this.metrics={roomJoinedLate:0,pendingClientCanceled:0,evaluationFailed:0,roomJoined:0},e.on("disconnect",(()=>{this._signalDisconnectTime=Date.now()})),e.on(jh,(e=>this._onRoomJoined(e))),e.on(Eh,(e=>this._onNewClient(e))),e.on(Dh,(e=>this._onClientLeft(e))),e.on(Uh,(e=>this._onPendingClientLeft(e))),e.on(kh,(e=>this._onAudioEnabled(e))),e.on(Mh,(e=>this._onVideoEnabled(e))),e.on(Ih,(e=>this._onScreenshareChanged(e,!0))),e.on(xh,(e=>this._onScreenshareChanged(e,!1)))}_onRoomJoined(e){var t,r;return Pu(this,void 0,void 0,(function*(){if(!(null===(t=e.room)||void 0===t?void 0:t.clients))return void this.emit(jh,e);if(!e.selfId)return void this.emit(jh,e);const i=null===(r=e.room.clients.find((t=>e.selfId===t.id)))||void 0===r?void 0:r.deviceId;if(!i)return void this.emit(jh,e);if(!this._signalDisconnectTime)return this._resetClientState(e),e.room.clients=e.room.clients.filter((e=>!(e.deviceId===i&&e.isPendingToLeave))),void this.emit(jh,e);const n=.8*e.disconnectTimeout;if(Date.now()-this._signalDisconnectTime>n)return this._resetClientState(e),this.emit(jh,e),void this.metrics.roomJoinedLate++;e.room.clients=e.room.clients.filter((e=>!(e.deviceId===i&&e.isPendingToLeave)));const s=yield;e.room.clients.forEach((t=>{var r;try{if(t.id===e.selfId)return;if(!this._clients[t.id])return void this._addClientToState(t);if(!(null===(r=this.rtcManager)||void 0===r?void 0:r.hasClient(t.id)))return;if(this._hasClientStateChanged({clientId:t.id,webcam:t.isVideoEnabled,mic:t.isAudioEnabled,screenShare:t.streams.length>1}))return;if(this._wasClientSendingMedia(t.id)&&!this._isClientMediaActive(s,t.id))return;t.mergeWithOldClientState=!0}catch(e){ef.error("Failed to evaluate if we should merge client state %o",e),this.metrics.evaluationFailed++}})),e.room.clients.forEach((e=>{e.isPendingToLeave&&this._onPendingClientLeft({clientId:e.id})})),this.metrics.roomJoined++,this.emit(jh,e)}))}_onClientLeft(e){var t;const{clientId:r}=e,i=this._clients[r];i&&(clearTimeout(i.timeout),delete this._clients[r]),null===(t=this.rtcManager)||void 0===t||t.disconnect(r,null,e.eventClaim),this.emit(Dh,e)}_onPendingClientLeft(e){const{clientId:t}=e,r=this._clients[t];r?r.isPendingToLeave||(r.isPendingToLeave=!0,this._wasClientSendingMedia(t)&&(r.checkActiveMediaAttempts=0,this._abortIfNotActive(e))):ef.warn(`client ${t} not found`)}_onNewClient(e){const{client:{id:t,deviceId:r}}=e,i=this._clients[t];if(i&&i.isPendingToLeave)return clearTimeout(i.timeoutHandler),i.isPendingToLeave=!1,void this.metrics.pendingClientCanceled++;this._getPendingClientsByDeviceId(r).forEach((e=>{clearTimeout(e.timeoutHandler),e.isPendingToLeave=void 0,this.emit(Dh,{clientId:e.clientId})})),this._addClientToState(e.client),this.emit(Eh,e)}_abortIfNotActive(e){return Pu(this,void 0,void 0,(function*(){const{clientId:t}=e;let r=this._clients[t];if(!(null==r?void 0:r.isPendingToLeave))return;if(r.checkActiveMediaAttempts++,r.checkActiveMediaAttempts>3)return;(yield this._checkIsActive(t))?r.timeoutHandler=setTimeout((()=>this._abortIfNotActive(e)),500):(r=this._clients[t],(null==r?void 0:r.isPendingToLeave)&&(clearTimeout(r.timeoutHandler),delete this._clients[t],this.emit(Dh,e)))}))}_checkIsActive(e){return Pu(this,void 0,void 0,(function*(){const t=yield;return this._isClientMediaActive(t,e)}))}_isClientMediaActive(e,t){const r=null==e?void 0:e[t];let i=!1;return r&&Object.entries(r.tracks).forEach((([e,t])=>{"probator"!==e&&Object.values(t.ssrcs).forEach((e=>{(e.bitrate||0)>0&&(i=!0)}))})),i}_onAudioEnabled(e){const{clientId:t,isAudioEnabled:r}=e;this._clients[t]=Object.assign(Object.assign({},this._clients[t]||{}),{isAudioEnabled:r})}_onVideoEnabled(e){const{clientId:t,isVideoEnabled:r}=e;this._clients[t]=Object.assign(Object.assign({},this._clients[t]||{}),{isVideoEnabled:r})}_onScreenshareChanged(e,t){const{clientId:r}=e;this._clients[r]=Object.assign(Object.assign({},this._clients[r]||{}),{isScreenshareEnabled:t})}_hasClientStateChanged({clientId:e,webcam:t,mic:r,screenShare:i}){const n=this._clients[e];if(!n)throw new Error(`Client ${e} not found in ReconnectManager state`);return t!==n.isVideoEnabled||(r!==n.isAudioEnabled||i!==n.isScreenshareEnabled)}_addClientToState(e){this._clients[e.id]=Object.assign(Object.assign({},this._clients[e.id]||{}),{isAudioEnabled:e.isAudioEnabled,isVideoEnabled:e.isVideoEnabled,isScreenshareEnabled:e.streams.length>1,deviceId:e.deviceId,isPendingToLeave:e.isPendingToLeave,clientId:e.id})}_wasClientSendingMedia(e){const t=this._clients[e];if(!t)throw new Error(`Client ${e} not found in ReconnectManager state`);return t.isAudioEnabled||t.isVideoEnabled||t.isScreenshareEnabled}_getPendingClientsByDeviceId(e){return Object.values(this._clients).filter((t=>t.deviceId===e&&t.isPendingToLeave))}_resetClientState(e){this._clients={},e.room.clients.forEach((t=>{t.id!==e.selfId&&this._addClientToState(t)}))}}var rf;const nf=null!==(rf=Ad.default)&&void 0!==rf?rf:Ad;class sf{constructor(e,t,r=!1){this._wasConnectedUsingWebsocket=!1,this._reconnectManager=null,this._socket=Tu(e,Object.assign({path:"/protocol/socket.io/v4",randomizationFactor:.5,reconnectionDelay:250,reconnectionDelayMax:5e3,timeout:5e3,transports:["websocket"],withCredentials:!0},t)),this._socket.io.on("reconnect",(()=>{this._socket.sendBuffer=[]})),this._socket.io.on("reconnect_attempt",(()=>{this._wasConnectedUsingWebsocket?(this._socket.io.opts.transports=["websocket"],"safari"!==nf.browserDetails.browser&&delete this._wasConnectedUsingWebsocket):this._socket.io.opts.transports=["websocket","polling"]})),r&&(this._reconnectManager=new tf(this._socket)),this._socket.on("connect",(()=>{"websocket"===this.getTransport()&&(this._wasConnectedUsingWebsocket=!0,this.noopKeepaliveInterval||(this.noopKeepaliveInterval=setInterval((()=>{try{this._socket.connected&&this._socket.io.engine.sendPacket("noop")}catch(e){}}),2e3)))})),this._socket.on("disconnect",(()=>{this.noopKeepaliveInterval&&(clearInterval(this.noopKeepaliveInterval),this.noopKeepaliveInterval=null)}))}setRtcManager(e){this._reconnectManager&&(this._reconnectManager.rtcManager=e)}connect(){this.isConnected()||this.isConnecting()||this._socket.open()}disconnect(){this._socket.disconnect()}disconnectOnConnect(){this._socket.once("connect",(()=>{this._socket.disconnect()}))}emit(e,...t){this._socket.emit.apply(this._socket,arguments)}emitIfConnected(e,t){this.isConnected()&&this.emit(e,t)}getTransport(){return this._socket&&this._socket.io&&this._socket.io.engine&&this._socket.io.engine.transport&&this._socket.io.engine.transport.name}getManager(){return this._socket.io}isConnecting(){return this._socket&&this._socket.connecting}isConnected(){return this._socket&&this._socket.connected}on(e,t){const r=[jh,Dh,Eh];return this._reconnectManager&&r.includes(e)?this._interceptEvent(e,t):(this._socket.on(e,t),()=>{this._socket.off(e,t)})}once(e,t){this._socket.once(e,t)}off(e,t){this._socket.off(e,t)}_interceptEvent(e,t){return this._reconnectManager&&this._reconnectManager.on(e,t),()=>{this._reconnectManager&&this._reconnectManager.removeListener(e,t)}}getGlitchFreeMetrics(){var e;return null===(e=this._reconnectManager)||void 0===e?void 0:e.metrics}}const af=[{pattern:/^(?:([^.]+)[.])?(server:?\d*)/,separator:"."},{pattern:/^(?:([^.]+)[.])?(localhost:?\d*)/,separator:"."},{pattern:/^(?:([^.]+)[.])?((\d+[.]){3}:?\d*)$/,separator:"."},{pattern:/^(?:([^.]+)-)?(ip-[^.]*[.](?:hereby[.]dev|rfc1918[.]disappear[.]at)(?::\d+|))$/,separator:"-"},{pattern:/^(?:([^.]+)[.])?((:?[^.]+[.]){1,}[^.]+)$/,separator:"."}];function of({host:e="whereby.com",protocol:t="https:"}={}){let r="",i=e,n=".";for(const{separator:t,pattern:s}of af){const a=s.exec(e);if(a){r=a[1]||"",i=a[2],n=t;break}}const s=r?`${r}${n}${i}`:i;return{domain:i,domainWithSeparator:`${n}${i}`,organizationDomain:s,organization:`${t}//${s}`,service:`${t}//${i}`,subdomain:r}}of(window&&window.location);var cf={exports:{}};cf.exports=function(e){return(e instanceof Buffer?e:Buffer.from(e.toString(),"binary")).toString("base64")};var df=Ht(cf.exports);function lf(e,t){return function(){return e.apply(t,arguments)}}const{toString:pf}=Object.prototype,{getPrototypeOf:uf}=Object,hf=(e=>t=>{const r=pf.call(t);return e[r]||(e[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),mf=e=>(e=e.toLowerCase(),t=>hf(t)===e),ff=e=>t=>typeof t===e,{isArray:gf}=Array,vf=ff("undefined");const _f=mf("ArrayBuffer");const bf=ff("string"),yf=ff("function"),wf=ff("number"),Sf=e=>null!==e&&"object"==typeof e,Cf=e=>{if("object"!==hf(e))return!1;const t=uf(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},Rf=mf("Date"),Tf=mf("File"),Pf=mf("Blob"),kf=mf("FileList"),Df=mf("URLSearchParams");function Of(e,t,{allOwnKeys:r=!1}={}){if(null==e)return;let i,n;if("object"!=typeof e&&(e=[e]),gf(e))for(i=0,n=e.length;i<n;i++)t.call(null,e[i],i,e);else{const n=r?Object.getOwnPropertyNames(e):Object.keys(e),s=n.length;let a;for(i=0;i<s;i++)a=n[i],t.call(null,e[a],a,e)}}function Ef(e,t){t=t.toLowerCase();const r=Object.keys(e);let i,n=r.length;for(;n-- >0;)if(i=r[n],t===i.toLowerCase())return i;return null}const If="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,xf=e=>!vf(e)&&e!==If;const jf=(Mf="undefined"!=typeof Uint8Array&&uf(Uint8Array),e=>Mf&&e instanceof Mf);var Mf;const Lf=mf("HTMLFormElement"),Af=(({hasOwnProperty:e})=>(t,r)=>e.call(t,r))(Object.prototype),Nf=mf("RegExp"),Bf=(e,t)=>{const r=Object.getOwnPropertyDescriptors(e),i={};Of(r,((r,n)=>{let s;!1!==(s=t(r,n,e))&&(i[n]=s||r)})),Object.defineProperties(e,i)},Ff="abcdefghijklmnopqrstuvwxyz",Uf="0123456789",$f={DIGIT:Uf,ALPHA:Ff,ALPHA_DIGIT:Ff+Ff.toUpperCase()+Uf};const zf=mf("AsyncFunction");var Vf={isArray:gf,isArrayBuffer:_f,isBuffer:function(e){return null!==e&&!vf(e)&&null!==e.constructor&&!vf(e.constructor)&&yf(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||yf(e.append)&&("formdata"===(t=hf(e))||"object"===t&&yf(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&_f(e.buffer),t},isString:bf,isNumber:wf,isBoolean:e=>!0===e||!1===e,isObject:Sf,isPlainObject:Cf,isUndefined:vf,isDate:Rf,isFile:Tf,isBlob:Pf,isRegExp:Nf,isFunction:yf,isStream:e=>Sf(e)&&yf(e.pipe),isURLSearchParams:Df,isTypedArray:jf,isFileList:kf,forEach:Of,merge:function e(){const{caseless:t}=xf(this)&&this||{},r={},i=(i,n)=>{const s=t&&Ef(r,n)||n;Cf(r[s])&&Cf(i)?r[s]=e(r[s],i):Cf(i)?r[s]=e({},i):gf(i)?r[s]=i.slice():r[s]=i};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&Of(arguments[e],i);return r},extend:(e,t,r,{allOwnKeys:i}={})=>(Of(t,((t,i)=>{r&&yf(t)?e[i]=lf(t,r):e[i]=t}),{allOwnKeys:i}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,r,i)=>{e.prototype=Object.create(t.prototype,i),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:(e,t,r,i)=>{let n,s,a;const o={};if(t=t||{},null==e)return t;do{for(n=Object.getOwnPropertyNames(e),s=n.length;s-- >0;)a=n[s],i&&!i(a,e,t)||o[a]||(t[a]=e[a],o[a]=!0);e=!1!==r&&uf(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:hf,kindOfTest:mf,endsWith:(e,t,r)=>{e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;const i=e.indexOf(t,r);return-1!==i&&i===r},toArray:e=>{if(!e)return null;if(gf(e))return e;let t=e.length;if(!wf(t))return null;const r=new Array(t);for(;t-- >0;)r[t]=e[t];return r},forEachEntry:(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let i;for(;(i=r.next())&&!i.done;){const r=i.value;t.call(e,r[0],r[1])}},matchAll:(e,t)=>{let r;const i=[];for(;null!==(r=e.exec(t));)i.push(r);return i},isHTMLForm:Lf,hasOwnProperty:Af,hasOwnProp:Af,reduceDescriptors:Bf,freezeMethods:e=>{Bf(e,((t,r)=>{if(yf(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;const i=e[r];yf(i)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:(e,t)=>{const r={},i=e=>{e.forEach((e=>{r[e]=!0}))};return gf(e)?i(e):i(String(e).split(t)),r},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r})),noop:()=>{},toFiniteNumber:(e,t)=>(e=+e,Number.isFinite(e)?e:t),findKey:Ef,global:If,isContextDefined:xf,ALPHABET:$f,generateString:(e=16,t=$f.ALPHA_DIGIT)=>{let r="";const{length:i}=t;for(;e--;)r+=t[Math.random()*i|0];return r},isSpecCompliantForm:function(e){return!!(e&&yf(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),r=(e,i)=>{if(Sf(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[i]=e;const n=gf(e)?[]:{};return Of(e,((e,t)=>{const s=r(e,i+1);!vf(s)&&(n[t]=s)})),t[i]=void 0,n}}return e};return r(e,0)},isAsyncFn:zf,isThenable:e=>e&&(Sf(e)||yf(e))&&yf(e.then)&&yf(e.catch)};function qf(e,t,r,i,n){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),i&&(this.request=i),n&&(this.response=n)}Vf.inherits(qf,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:Vf.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const Gf=qf.prototype,Hf={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{Hf[e]={value:e}})),Object.defineProperties(qf,Hf),Object.defineProperty(Gf,"isAxiosError",{value:!0}),qf.from=(e,t,r,i,n,s)=>{const a=Object.create(Gf);return Vf.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),qf.call(a,e.message,t,r,i,n),a.cause=e,a.name=e.name,s&&Object.assign(a,s),a};function Wf(e){return Vf.isPlainObject(e)||Vf.isArray(e)}function Kf(e){return Vf.endsWith(e,"[]")?e.slice(0,-2):e}function Jf(e,t,r){return e?e.concat(t).map((function(e,t){return e=Kf(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}const Qf=Vf.toFlatObject(Vf,{},null,(function(e){return/^is[A-Z]/.test(e)}));function Zf(e,t,r){if(!Vf.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const i=(r=Vf.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!Vf.isUndefined(t[e])}))).metaTokens,n=r.visitor||d,s=r.dots,a=r.indexes,o=(r.Blob||"undefined"!=typeof Blob&&Blob)&&Vf.isSpecCompliantForm(t);if(!Vf.isFunction(n))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(Vf.isDate(e))return e.toISOString();if(!o&&Vf.isBlob(e))throw new qf("Blob is not supported. Use a Buffer instead.");return Vf.isArrayBuffer(e)||Vf.isTypedArray(e)?o&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function d(e,r,n){let o=e;if(e&&!n&&"object"==typeof e)if(Vf.endsWith(r,"{}"))r=i?r:r.slice(0,-2),e=JSON.stringify(e);else if(Vf.isArray(e)&&function(e){return Vf.isArray(e)&&!e.some(Wf)}(e)||(Vf.isFileList(e)||Vf.endsWith(r,"[]"))&&(o=Vf.toArray(e)))return r=Kf(r),o.forEach((function(e,i){!Vf.isUndefined(e)&&null!==e&&t.append(!0===a?Jf([r],i,s):null===a?r:r+"[]",c(e))})),!1;return!!Wf(e)||(t.append(Jf(n,r,s),c(e)),!1)}const l=[],p=Object.assign(Qf,{defaultVisitor:d,convertValue:c,isVisitable:Wf});if(!Vf.isObject(e))throw new TypeError("data must be an object");return function e(r,i){if(!Vf.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+i.join("."));l.push(r),Vf.forEach(r,(function(r,s){!0===(!(Vf.isUndefined(r)||null===r)&&n.call(t,r,Vf.isString(s)?s.trim():s,i,p))&&e(r,i?i.concat(s):[s])})),l.pop()}}(e),t}function Yf(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Xf(e,t){this._pairs=[],e&&Zf(e,this,t)}const eg=Xf.prototype;function tg(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function rg(e,t,r){if(!t)return e;const i=r&&r.encode||tg,n=r&&r.serialize;let s;if(s=n?n(t,r):Vf.isURLSearchParams(t)?t.toString():new Xf(t,r).toString(i),s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}eg.append=function(e,t){this._pairs.push([e,t])},eg.toString=function(e){const t=e?function(t){return e.call(this,t,Yf)}:Yf;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};class ig{constructor(){this.handlers=[]}use(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){Vf.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}var ng={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},sg={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Xf,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]};const ag="undefined"!=typeof window&&"undefined"!=typeof document,og=(cg="undefined"!=typeof navigator&&navigator.product,ag&&["ReactNative","NativeScript","NS"].indexOf(cg)<0);var cg;const dg="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts;var lg={...Object.freeze({__proto__:null,hasBrowserEnv:ag,hasStandardBrowserEnv:og,hasStandardBrowserWebWorkerEnv:dg}),...sg};function pg(e){function t(e,r,i,n){let s=e[n++];if("__proto__"===s)return!0;const a=Number.isFinite(+s),o=n>=e.length;if(s=!s&&Vf.isArray(i)?i.length:s,o)return Vf.hasOwnProp(i,s)?i[s]=[i[s],r]:i[s]=r,!a;i[s]&&Vf.isObject(i[s])||(i[s]=[]);return t(e,r,i[s],n)&&Vf.isArray(i[s])&&(i[s]=function(e){const t={},r=Object.keys(e);let i;const n=r.length;let s;for(i=0;i<n;i++)s=r[i],t[s]=e[s];return t}(i[s])),!a}if(Vf.isFormData(e)&&Vf.isFunction(e.entries)){const r={};return Vf.forEachEntry(e,((e,i)=>{t(function(e){return Vf.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),i,r,0)})),r}return null}const ug={transitional:ng,adapter:["xhr","http"],transformRequest:[function(e,t){const r=t.getContentType()||"",i=r.indexOf("application/json")>-1,n=Vf.isObject(e);n&&Vf.isHTMLForm(e)&&(e=new FormData(e));if(Vf.isFormData(e))return i?JSON.stringify(pg(e)):e;if(Vf.isArrayBuffer(e)||Vf.isBuffer(e)||Vf.isStream(e)||Vf.isFile(e)||Vf.isBlob(e))return e;if(Vf.isArrayBufferView(e))return e.buffer;if(Vf.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(n){if(r.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return Zf(e,new lg.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,i){return lg.isNode&&Vf.isBuffer(e)?(this.append(t,e.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((s=Vf.isFileList(e))||r.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Zf(s?{"files[]":e}:e,t&&new t,this.formSerializer)}}return n||i?(t.setContentType("application/json",!1),function(e,t,r){if(Vf.isString(e))try{return(t||JSON.parse)(e),Vf.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||ug.transitional,r=t&&t.forcedJSONParsing,i="json"===this.responseType;if(e&&Vf.isString(e)&&(r&&!this.responseType||i)){const r=!(t&&t.silentJSONParsing)&&i;try{return JSON.parse(e)}catch(e){if(r){if("SyntaxError"===e.name)throw qf.from(e,qf.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:lg.classes.FormData,Blob:lg.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};Vf.forEach(["delete","get","head","post","put","patch"],(e=>{ug.headers[e]={}}));var hg=ug;const mg=Vf.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);const fg=Symbol("internals");function gg(e){return e&&String(e).trim().toLowerCase()}function vg(e){return!1===e||null==e?e:Vf.isArray(e)?e.map(vg):String(e)}function _g(e,t,r,i,n){return Vf.isFunction(i)?i.call(this,t,r):(n&&(t=r),Vf.isString(t)?Vf.isString(i)?-1!==t.indexOf(i):Vf.isRegExp(i)?i.test(t):void 0:void 0)}class bg{constructor(e){e&&this.set(e)}set(e,t,r){const i=this;function n(e,t,r){const n=gg(t);if(!n)throw new Error("header name must be a non-empty string");const s=Vf.findKey(i,n);(!s||void 0===i[s]||!0===r||void 0===r&&!1!==i[s])&&(i[s||t]=vg(e))}const s=(e,t)=>Vf.forEach(e,((e,r)=>n(e,r,t)));return Vf.isPlainObject(e)||e instanceof this.constructor?s(e,t):Vf.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?s((e=>{const t={};let r,i,n;return e&&e.split("\n").forEach((function(e){n=e.indexOf(":"),r=e.substring(0,n).trim().toLowerCase(),i=e.substring(n+1).trim(),!r||t[r]&&mg[r]||("set-cookie"===r?t[r]?t[r].push(i):t[r]=[i]:t[r]=t[r]?t[r]+", "+i:i)})),t})(e),t):null!=e&&n(t,e,r),this}get(e,t){if(e=gg(e)){const r=Vf.findKey(this,e);if(r){const e=this[r];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let i;for(;i=r.exec(e);)t[i[1]]=i[2];return t}(e);if(Vf.isFunction(t))return t.call(this,e,r);if(Vf.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=gg(e)){const r=Vf.findKey(this,e);return!(!r||void 0===this[r]||t&&!_g(0,this[r],r,t))}return!1}delete(e,t){const r=this;let i=!1;function n(e){if(e=gg(e)){const n=Vf.findKey(r,e);!n||t&&!_g(0,r[n],n,t)||(delete r[n],i=!0)}}return Vf.isArray(e)?e.forEach(n):n(e),i}clear(e){const t=Object.keys(this);let r=t.length,i=!1;for(;r--;){const n=t[r];e&&!_g(0,this[n],n,e,!0)||(delete this[n],i=!0)}return i}normalize(e){const t=this,r={};return Vf.forEach(this,((i,n)=>{const s=Vf.findKey(r,n);if(s)return t[s]=vg(i),void delete t[n];const a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,r)=>t.toUpperCase()+r))}(n):String(n).trim();a!==n&&delete t[n],t[a]=vg(i),r[a]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return Vf.forEach(this,((r,i)=>{null!=r&&!1!==r&&(t[i]=e&&Vf.isArray(r)?r.join(", "):r)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const r=new this(e);return t.forEach((e=>r.set(e))),r}static accessor(e){const t=(this[fg]=this[fg]={accessors:{}}).accessors,r=this.prototype;function i(e){const i=gg(e);t[i]||(!function(e,t){const r=Vf.toCamelCase(" "+t);["get","set","has"].forEach((i=>{Object.defineProperty(e,i+r,{value:function(e,r,n){return this[i].call(this,t,e,r,n)},configurable:!0})}))}(r,e),t[i]=!0)}return Vf.isArray(e)?e.forEach(i):i(e),this}}bg.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),Vf.reduceDescriptors(bg.prototype,(({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[r]=e}}})),Vf.freezeMethods(bg);var yg=bg;function wg(e,t){const r=this||hg,i=t||r,n=yg.from(i.headers);let s=i.data;return Vf.forEach(e,(function(e){s=e.call(r,s,n.normalize(),t?t.status:void 0)})),n.normalize(),s}function Sg(e){return!(!e||!e.__CANCEL__)}function Cg(e,t,r){qf.call(this,null==e?"canceled":e,qf.ERR_CANCELED,t,r),this.name="CanceledError"}Vf.inherits(Cg,qf,{__CANCEL__:!0});var Rg=lg.hasStandardBrowserEnv?{write(e,t,r,i,n,s){const a=[e+"="+encodeURIComponent(t)];Vf.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),Vf.isString(i)&&a.push("path="+i),Vf.isString(n)&&a.push("domain="+n),!0===s&&a.push("secure"),document.cookie=a.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function Tg(e,t){return e&&!function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}var Pg=lg.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let r;function i(r){let i=r;return e&&(t.setAttribute("href",i),i=t.href),t.setAttribute("href",i),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return r=i(window.location.href),function(e){const t=Vf.isString(e)?i(e):e;return t.protocol===r.protocol&&t.host===r.host}}():function(){return!0};function kg(e,t){let r=0;const i=function(e,t){e=e||10;const r=new Array(e),i=new Array(e);let n,s=0,a=0;return t=void 0!==t?t:1e3,function(o){const c=Date.now(),d=i[a];n||(n=c),r[s]=o,i[s]=c;let l=a,p=0;for(;l!==s;)p+=r[l++],l%=e;if(s=(s+1)%e,s===a&&(a=(a+1)%e),c-n<t)return;const u=d&&c-d;return u?Math.round(1e3*p/u):void 0}}(50,250);return n=>{const s=n.loaded,a=n.lengthComputable?n.total:void 0,o=s-r,c=i(o);r=s;const d={loaded:s,total:a,progress:a?s/a:void 0,bytes:o,rate:c||void 0,estimated:c&&a&&s<=a?(a-s)/c:void 0,event:n};d[t?"download":"upload"]=!0,e(d)}}var Dg="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,r){let i=e.data;const n=yg.from(e.headers).normalize();let s,a,{responseType:o,withXSRFToken:c}=e;function d(){e.cancelToken&&e.cancelToken.unsubscribe(s),e.signal&&e.signal.removeEventListener("abort",s)}if(Vf.isFormData(i))if(lg.hasStandardBrowserEnv||lg.hasStandardBrowserWebWorkerEnv)n.setContentType(!1);else if(!1!==(a=n.getContentType())){const[e,...t]=a?a.split(";").map((e=>e.trim())).filter(Boolean):[];n.setContentType([e||"multipart/form-data",...t].join("; "))}let l=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",r=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";n.set("Authorization","Basic "+btoa(t+":"+r))}const p=Tg(e.baseURL,e.url);function u(){if(!l)return;const i=yg.from("getAllResponseHeaders"in l&&l.getAllResponseHeaders());!function(e,t,r){const i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(new qf("Request failed with status code "+r.status,[qf.ERR_BAD_REQUEST,qf.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r)):e(r)}((function(e){t(e),d()}),(function(e){r(e),d()}),{data:o&&"text"!==o&&"json"!==o?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:i,config:e,request:l}),l=null}if(l.open(e.method.toUpperCase(),rg(p,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,"onloadend"in l?l.onloadend=u:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(u)},l.onabort=function(){l&&(r(new qf("Request aborted",qf.ECONNABORTED,e,l)),l=null)},l.onerror=function(){r(new qf("Network Error",qf.ERR_NETWORK,e,l)),l=null},l.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const i=e.transitional||ng;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(new qf(t,i.clarifyTimeoutError?qf.ETIMEDOUT:qf.ECONNABORTED,e,l)),l=null},lg.hasStandardBrowserEnv&&(c&&Vf.isFunction(c)&&(c=c(e)),c||!1!==c&&Pg(p))){const t=e.xsrfHeaderName&&e.xsrfCookieName&&Rg.read(e.xsrfCookieName);t&&n.set(e.xsrfHeaderName,t)}void 0===i&&n.setContentType(null),"setRequestHeader"in l&&Vf.forEach(n.toJSON(),(function(e,t){l.setRequestHeader(t,e)})),Vf.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),o&&"json"!==o&&(l.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",kg(e.onDownloadProgress,!0)),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",kg(e.onUploadProgress)),(e.cancelToken||e.signal)&&(s=t=>{l&&(r(!t||t.type?new Cg(null,e,l):t),l.abort(),l=null)},e.cancelToken&&e.cancelToken.subscribe(s),e.signal&&(e.signal.aborted?s():e.signal.addEventListener("abort",s)));const h=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(p);h&&-1===lg.protocols.indexOf(h)?r(new qf("Unsupported protocol "+h+":",qf.ERR_BAD_REQUEST,e)):l.send(i||null)}))};const Og={http:null,xhr:Dg};Vf.forEach(Og,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const Eg=e=>`- ${e}`,Ig=e=>Vf.isFunction(e)||null===e||!1===e;var xg=e=>{e=Vf.isArray(e)?e:[e];const{length:t}=e;let r,i;const n={};for(let s=0;s<t;s++){let t;if(r=e[s],i=r,!Ig(r)&&(i=Og[(t=String(r)).toLowerCase()],void 0===i))throw new qf(`Unknown adapter '${t}'`);if(i)break;n[t||"#"+s]=i}if(!i){const e=Object.entries(n).map((([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));throw new qf("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(Eg).join("\n"):" "+Eg(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return i};function jg(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Cg(null,e)}function Mg(e){jg(e),e.headers=yg.from(e.headers),e.data=wg.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return xg(e.adapter||hg.adapter)(e).then((function(t){return jg(e),t.data=wg.call(e,e.transformResponse,t),t.headers=yg.from(t.headers),t}),(function(t){return Sg(t)||(jg(e),t&&t.response&&(t.response.data=wg.call(e,e.transformResponse,t.response),t.response.headers=yg.from(t.response.headers))),Promise.reject(t)}))}const Lg=e=>e instanceof yg?e.toJSON():e;function Ag(e,t){t=t||{};const r={};function i(e,t,r){return Vf.isPlainObject(e)&&Vf.isPlainObject(t)?Vf.merge.call({caseless:r},e,t):Vf.isPlainObject(t)?Vf.merge({},t):Vf.isArray(t)?t.slice():t}function n(e,t,r){return Vf.isUndefined(t)?Vf.isUndefined(e)?void 0:i(void 0,e,r):i(e,t,r)}function s(e,t){if(!Vf.isUndefined(t))return i(void 0,t)}function a(e,t){return Vf.isUndefined(t)?Vf.isUndefined(e)?void 0:i(void 0,e):i(void 0,t)}function o(r,n,s){return s in t?i(r,n):s in e?i(void 0,r):void 0}const c={url:s,method:s,data:s,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:o,headers:(e,t)=>n(Lg(e),Lg(t),!0)};return Vf.forEach(Object.keys(Object.assign({},e,t)),(function(i){const s=c[i]||n,a=s(e[i],t[i],i);Vf.isUndefined(a)&&s!==o||(r[i]=a)})),r}const Ng="1.6.7",Bg={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{Bg[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));const Fg={};Bg.transitional=function(e,t,r){function i(e,t){return"[Axios v1.6.7] Transitional option '"+e+"'"+t+(r?". "+r:"")}return(r,n,s)=>{if(!1===e)throw new qf(i(n," has been removed"+(t?" in "+t:"")),qf.ERR_DEPRECATED);return t&&!Fg[n]&&(Fg[n]=!0,console.warn(i(n," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,n,s)}};var Ug={assertOptions:function(e,t,r){if("object"!=typeof e)throw new qf("options must be an object",qf.ERR_BAD_OPTION_VALUE);const i=Object.keys(e);let n=i.length;for(;n-- >0;){const s=i[n],a=t[s];if(a){const t=e[s],r=void 0===t||a(t,s,e);if(!0!==r)throw new qf("option "+s+" must be "+r,qf.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new qf("Unknown option "+s,qf.ERR_BAD_OPTION)}},validators:Bg};const $g=Ug.validators;class zg{constructor(e){this.defaults=e,this.interceptors={request:new ig,response:new ig}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t;Error.captureStackTrace?Error.captureStackTrace(t={}):t=new Error;const r=t.stack?t.stack.replace(/^.+\n/,""):"";e.stack?r&&!String(e.stack).endsWith(r.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+r):e.stack=r}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Ag(this.defaults,t);const{transitional:r,paramsSerializer:i,headers:n}=t;void 0!==r&&Ug.assertOptions(r,{silentJSONParsing:$g.transitional($g.boolean),forcedJSONParsing:$g.transitional($g.boolean),clarifyTimeoutError:$g.transitional($g.boolean)},!1),null!=i&&(Vf.isFunction(i)?t.paramsSerializer={serialize:i}:Ug.assertOptions(i,{encode:$g.function,serialize:$g.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=n&&Vf.merge(n.common,n[t.method]);n&&Vf.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete n[e]})),t.headers=yg.concat(s,n);const a=[];let o=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(o=o&&e.synchronous,a.unshift(e.fulfilled,e.rejected))}));const c=[];let d;this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)}));let l,p=0;if(!o){const e=[Mg.bind(this),void 0];for(e.unshift.apply(e,a),e.push.apply(e,c),l=e.length,d=Promise.resolve(t);p<l;)d=d.then(e[p++],e[p++]);return d}l=a.length;let u=t;for(p=0;p<l;){const e=a[p++],t=a[p++];try{u=e(u)}catch(e){t.call(this,e);break}}try{d=Mg.call(this,u)}catch(e){return Promise.reject(e)}for(p=0,l=c.length;p<l;)d=d.then(c[p++],c[p++]);return d}getUri(e){return rg(Tg((e=Ag(this.defaults,e)).baseURL,e.url),e.params,e.paramsSerializer)}}Vf.forEach(["delete","get","head","options"],(function(e){zg.prototype[e]=function(t,r){return this.request(Ag(r||{},{method:e,url:t,data:(r||{}).data}))}})),Vf.forEach(["post","put","patch"],(function(e){function t(t){return function(r,i,n){return this.request(Ag(n||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:r,data:i}))}}zg.prototype[e]=t(),zg.prototype[e+"Form"]=t(!0)}));var Vg=zg;class qg{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise((function(e){t=e}));const r=this;this.promise.then((e=>{if(!r._listeners)return;let t=r._listeners.length;for(;t-- >0;)r._listeners[t](e);r._listeners=null})),this.promise.then=e=>{let t;const i=new Promise((e=>{r.subscribe(e),t=e})).then(e);return i.cancel=function(){r.unsubscribe(t)},i},e((function(e,i,n){r.reason||(r.reason=new Cg(e,i,n),t(r.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new qg((function(t){e=t})),cancel:e}}}var Gg=qg;const Hg={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Hg).forEach((([e,t])=>{Hg[t]=e}));var Wg=Hg;const Kg=function e(t){const r=new Vg(t),i=lf(Vg.prototype.request,r);return Vf.extend(i,Vg.prototype,r,{allOwnKeys:!0}),Vf.extend(i,r,null,{allOwnKeys:!0}),i.create=function(r){return e(Ag(t,r))},i}(hg);function Jg(e,t){return Xe(e,t)}Kg.Axios=Vg,Kg.CanceledError=Cg,Kg.CancelToken=Gg,Kg.isCancel=Sg,Kg.VERSION=Ng,Kg.toFormData=Zf,Kg.AxiosError=qf,Kg.Cancel=Kg.CanceledError,Kg.all=function(e){return Promise.all(e)},Kg.spread=function(e){return function(t){return e.apply(null,t)}},Kg.isAxiosError=function(e){return Vf.isObject(e)&&!0===e.isAxiosError},Kg.mergeConfig=Ag,Kg.AxiosHeaders=yg,Kg.formToJSON=e=>pg(Vf.isHTMLForm(e)?new FormData(e):e),Kg.getAdapter=xg,Kg.HttpStatusCode=Wg,Kg.default=Kg;const Qg=((e={})=>{const t=new Map,{extra:r,onError:i=At}=e;ft(i,"onError");const n=e=>{let r=Oe(Array.from(t.values()),(t=>t.effect===e.effect));return r||(r=Et(e)),(e=>(e.unsubscribe=()=>t.delete(e.id),t.set(e.id,e),t=>{e.unsubscribe(),t?.cancelActive&&It(e)}))(r)};Object.assign(n,{withTypes:()=>n});const s=e=>{const{type:r,effect:i,predicate:n}=Ot(e),s=Oe(Array.from(t.values()),(e=>("string"==typeof r?e.type===r:e.predicate===n)&&e.effect===i));return s&&(s.unsubscribe(),e.cancelActive&&It(s)),!!s};Object.assign(s,{withTypes:()=>s});const a=async(e,s,a,o)=>{const c=new AbortController,d=Dt(n,c.signal),l=[];try{e.pending.add(c),await Promise.resolve(e.effect(s,Rt({},a,{getOriginalState:o,condition:(e,t)=>d(e,t).then(Boolean),take:d,delay:Ct(c.signal),pause:St(c.signal),extra:r,signal:c.signal,fork:kt(c.signal,l),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach(((e,t,r)=>{e!==c&&(bt(e,ut),r.delete(e))}))},cancel:()=>{bt(c,ut),e.pending.delete(c)},throwIfCancelled:()=>{yt(c.signal)}})))}catch(e){e instanceof mt||xt(i,e,{raisedBy:"effect"})}finally{await Promise.all(l),bt(c,ht),e.pending.delete(c)}},o=(e=>()=>{e.forEach(It),e.clear()})(t);return{middleware:e=>r=>c=>{if(!f(c))return r(c);if(jt.match(c))return n(c.payload);if(Mt.match(c))return void o();if(Lt.match(c))return s(c.payload);let d=e.getState();const l=()=>{if(d===Tt)throw new Error(`${Pt}: getOriginalState can only be called synchronously`);return d};let p;try{if(p=r(c),t.size>0){const r=e.getState(),n=Array.from(t.values());for(const t of n){let n=!1;try{n=t.predicate(c,r,d)}catch(e){n=!1,xt(i,e,{raisedBy:"predicate"})}n&&a(t,c,e,l)}}}finally{d=Tt}return p},startListening:n,stopListening:s,clearListeners:o}})(),Zg=Qg.startListening,Yg=(e,t)=>Zg({predicate:(t,r,i)=>{const n=e.map((e=>e(i))),s=e.map((e=>e(r)));return n.some(((e,t)=>e!==s[t]))},effect:(r,{dispatch:i,getState:n,extra:s})=>{const a=e.map((e=>e(n())));t({dispatch:i,getState:n,extra:s},...a)}}),Xg=st({name:"app",initialState:{isNodeSdk:!1,wantsToJoin:!1,roomName:null,roomUrl:null,displayName:null,userAgent:"core:0.10.0",externalId:null},reducers:{doAppJoin:(e,t)=>{const r=new URL(t.payload.roomUrl);return Object.assign(Object.assign(Object.assign({},e),t.payload),{roomName:r.pathname,wantsToJoin:!0})},appLeft:e=>Object.assign(Object.assign({},e),{wantsToJoin:!1})}}),{doAppJoin:ev,appLeft:tv}=Xg.actions,rv=e=>e.app.wantsToJoin,iv=e=>e.app.roomName,nv=e=>e.app.displayName,sv=e=>e.app.userAgent,av=e=>e.app.externalId,ov=e=>e.app.isNodeSdk;function cv(e){return Pe(`signalConnection/event/${e}`)}const dv={audioEnabled:cv("audioEnabled"),chatMessage:cv("chatMessage"),clientLeft:cv("clientLeft"),clientKicked:cv("clientKicked"),clientMetadataReceived:cv("clientMetadataReceived"),cloudRecordingStarted:cv("cloudRecordingStarted"),cloudRecordingStopped:cv("cloudRecordingStopped"),disconnect:cv("disconnect"),knockerLeft:cv("knockerLeft"),knockHandled:cv("knockHandled"),newClient:cv("newClient"),roomJoined:cv("roomJoined"),roomKnocked:cv("roomKnocked"),roomLocked:cv("roomLocked"),roomSessionEnded:cv("roomSessionEnded"),screenshareStarted:cv("screenshareStarted"),screenshareStopped:cv("screenshareStopped"),streamingStopped:cv("streamingStopped"),videoEnabled:cv("videoEnabled")};function lv(e,t,r,i){return new(r||(r=Promise))((function(n,s){function a(e){try{c(i.next(e))}catch(e){s(e)}}function o(e){try{c(i.throw(e))}catch(e){s(e)}}function c(e){e.done?n(e.value):function(e){return e instanceof r?e:new r((function(t){t(e)}))}(e.value).then(a,o)}c((i=i.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const pv=st({name:"deviceCredentials",initialState:{isFetching:!1,data:null},reducers:{},extraReducers:e=>{e.addCase(uv.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(uv.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}))),e.addCase(uv.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!0})))}}),uv=Jg("deviceCredentials/doGetDeviceCredentials",((e,{extra:t})=>lv(void 0,void 0,void 0,(function*(){try{return yield t.services.credentialsService.getCredentials()}catch(e){console.error(e)}})))),hv=e=>e.deviceCredentials;Yg([be(rv,hv,((e,t)=>!(!e||t.isFetching||t.data)))],(({dispatch:e},t)=>{t&&e(uv())}));const mv=st({name:"signalConnection",initialState:{deviceIdentified:!1,isIdentifyingDevice:!1,status:"",socket:null},reducers:{socketConnecting:e=>Object.assign(Object.assign({},e),{status:"connecting"}),socketConnected:(e,t)=>Object.assign(Object.assign({},e),{socket:t.payload,status:"connected"}),socketDisconnected:e=>Object.assign(Object.assign({},e),{status:"disconnected"}),socketReconnecting:e=>Object.assign(Object.assign({},e),{status:"reconnect"}),deviceIdentifying:e=>Object.assign(Object.assign({},e),{isIdentifyingDevice:!0}),deviceIdentified:e=>Object.assign(Object.assign({},e),{deviceIdentified:!0,isIdentifyingDevice:!1})},extraReducers:e=>{e.addCase(dv.disconnect,(e=>Object.assign(Object.assign({},e),{status:"disconnected"})))}}),{deviceIdentifying:fv,deviceIdentified:gv,socketConnected:vv,socketConnecting:_v,socketDisconnected:bv}=mv.actions,yv=()=>(e,t)=>{if(Dv(t()))return;e(_v());const r=function(){const e=new URL("wss://signal.appearin.net").origin;return new sf(e,{autoConnect:!1})}();r.on("connect",(()=>e(vv(r)))),r.on("device_identified",(()=>e(gv()))),r.getManager().on("reconnect",(()=>e(Cv()))),function(e,t){e.on("room_joined",(e=>t(dv.roomJoined(e)))),e.on("new_client",(e=>t(dv.newClient(e)))),e.on("client_left",(e=>t(dv.clientLeft(e)))),e.on("client_kicked",(e=>t(dv.clientKicked(e)))),e.on("audio_enabled",(e=>t(dv.audioEnabled(e)))),e.on("video_enabled",(e=>t(dv.videoEnabled(e)))),e.on("client_metadata_received",(e=>t(dv.clientMetadataReceived(e)))),e.on("chat_message",(e=>t(dv.chatMessage(e)))),e.on("disconnect",(()=>t(dv.disconnect()))),e.on("room_knocked",(e=>t(dv.roomKnocked(e)))),e.on("room_locked",(e=>t(dv.roomLocked(e)))),e.on("room_session_ended",(e=>t(dv.roomSessionEnded(e)))),e.on("knocker_left",(e=>t(dv.knockerLeft(e)))),e.on("knock_handled",(e=>t(dv.knockHandled(e)))),e.on("screenshare_started",(e=>t(dv.screenshareStarted(e)))),e.on("screenshare_stopped",(e=>t(dv.screenshareStopped(e)))),e.on("cloud_recording_started",(e=>t(dv.cloudRecordingStarted(e)))),e.on("cloud_recording_stopped",(()=>t(dv.cloudRecordingStopped()))),e.on("streaming_stopped",(()=>t(dv.streamingStopped())))}(r,e),r.connect()},wv=({deviceCredentials:e})=>(t,r)=>{const i=r(),n=Dv(i);n&&(n.emit("identify_device",{deviceCredentials:e}),t(fv()))},Sv=()=>(e,t)=>{const r=Tv(t()).socket;null==r||r.emit("leave_room"),null==r||r.disconnect(),e(bv())},Cv=()=>(e,t)=>{const r=hv(t());e(Rv()),r.data&&e(wv({deviceCredentials:r.data}))},{socketReconnecting:Rv}=mv.actions,Tv=e=>e.signalConnection,Pv=e=>e.signalConnection.deviceIdentified,kv=e=>e.signalConnection.status,Dv=e=>e.signalConnection.socket;Zg({actionCreator:tv,effect:(e,{dispatch:t})=>{t(Sv())}});Yg([be(rv,kv,((e,t)=>!(!e||!["","reconnect"].includes(t))))],(({dispatch:e},t)=>{t&&e(yv())}));const Ov=be(hv,kv,Pv,(e=>e.signalConnection.isIdentifyingDevice),((e,t,r,i)=>!(!e.data||"connected"!==t||r||i)));function Ev(e,{delay:t=500,edges:r}={}){let i,n=0;return(...s)=>{n+=1,r&&1===n&&e(...s),clearTimeout(i),i=setTimeout((()=>{(!r||n>1)&&e(...s),i=void 0,n=0}),t)}}Yg([Ov,hv],(({dispatch:e},t,r)=>{t&&r.data&&e(wv({deviceCredentials:r.data}))}));const Iv=st({name:"localMedia",initialState:{busyDeviceIds:[],cameraEnabled:!1,devices:[],isSettingCameraDevice:!1,isSettingMicrophoneDevice:!1,isTogglingCamera:!1,microphoneEnabled:!1,status:"",isSwitchingStream:!1},reducers:{deviceBusy:(e,t)=>e.busyDeviceIds.includes(t.payload.deviceId)?e:Object.assign(Object.assign({},e),{busyDeviceIds:[...e.busyDeviceIds,t.payload.deviceId]}),toggleCameraEnabled(e,t){var r;return Object.assign(Object.assign({},e),{cameraEnabled:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.cameraEnabled})},setCurrentCameraDeviceId:(e,t)=>Object.assign(Object.assign({},e),{currentCameraDeviceId:t.payload.deviceId}),toggleMicrophoneEnabled(e,t){var r;return Object.assign(Object.assign({},e),{microphoneEnabled:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.microphoneEnabled})},setCurrentMicrophoneDeviceId:(e,t)=>Object.assign(Object.assign({},e),{currentMicrophoneDeviceId:t.payload.deviceId}),setDevices:(e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}),setLocalMediaStream:(e,t)=>Object.assign(Object.assign({},e),{stream:t.payload.stream}),setLocalMediaOptions:(e,t)=>Object.assign(Object.assign({},e),{options:t.payload.options}),localMediaStopped:e=>Object.assign(Object.assign({},e),{status:"stopped",stream:void 0}),localStreamMetadataUpdated(e,t){const{audio:r,video:i}=t.payload;return Object.assign(Object.assign({},e),{currentCameraDeviceId:i.deviceId,currentMicrophoneDeviceId:r.deviceId,busyDeviceIds:e.busyDeviceIds.filter((e=>e!==r.deviceId&&e!==i.deviceId))})}},extraReducers:e=>{e.addCase(ev,((e,t)=>Object.assign(Object.assign({},e),{options:t.payload.localMediaOptions}))),e.addCase(Vv.pending,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:i,isSettingMicrophoneDevice:r})})),e.addCase(Vv.fulfilled,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:!i&&e.isSettingCameraDevice,isSettingMicrophoneDevice:!r&&e.isSettingMicrophoneDevice})})),e.addCase(Vv.rejected,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:!i&&e.isSettingCameraDevice,isSettingMicrophoneDevice:!r&&e.isSettingMicrophoneDevice,cameraDeviceError:i?t.error:e.cameraDeviceError,microphoneDeviceError:r?t.error:e.microphoneDeviceError})})),e.addCase($v.pending,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!0}))),e.addCase($v.fulfilled,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!1}))),e.addCase(qv.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}))),e.addCase(Hv.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(Hv.fulfilled,((e,{payload:{stream:t,onDeviceChange:r}})=>{let i,n,s=!1,a=!1;const o=t.getAudioTracks()[0],c=t.getVideoTracks()[0];return o&&(n=o.getSettings().deviceId,a=o.enabled),c&&(s=c.enabled,i=c.getSettings().deviceId),Object.assign(Object.assign({},e),{stream:t,status:"started",currentCameraDeviceId:i,currentMicrophoneDeviceId:n,cameraEnabled:s,microphoneEnabled:a,onDeviceChange:r})})),e.addCase(Hv.rejected,((e,t)=>Object.assign(Object.assign({},e),{status:"error",startError:t.error}))),e.addCase(Gv.pending,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!0}))),e.addCase(Gv.fulfilled,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1}))),e.addCase(Gv.rejected,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1})))}}),{deviceBusy:xv,setCurrentCameraDeviceId:jv,setCurrentMicrophoneDeviceId:Mv,toggleCameraEnabled:Lv,toggleMicrophoneEnabled:Av,setLocalMediaOptions:Nv,setLocalMediaStream:Bv,localMediaStopped:Fv,localStreamMetadataUpdated:Uv}=Iv.actions,$v=Jg("localMedia/doToggleCamera",((e,{getState:t,rejectWithValue:r})=>lv(void 0,void 0,void 0,(function*(){const e=t(),i=i_(e);if(!i)return;let n=i.getVideoTracks()[0];const s=Zv(e);try{if(s)if(n)n.enabled=!0;else{const t=s_(e),r=Jv(e);yield ih(Object.assign(Object.assign({},t),{audioId:!1,videoId:r,type:"exact"}),{replaceStream:i}),n=i.getVideoTracks()[0]}else{if(!n)return;n.enabled=!1,n.stop(),i.removeTrack(n)}i.dispatchEvent(new CustomEvent("stopresumevideo",{detail:{track:n,enable:s}}))}catch(e){return r(e)}})))),zv=Jg("localMedia/doToggleMicrophone",((e,{getState:t})=>{var r;const i=t(),n=i_(i);if(!n)return;const s=Yv(i),a=null===(r=n.getAudioTracks())||void 0===r?void 0:r[0];a&&(a.enabled=s)})),Vv=Jg("localMedia/reactSetDevice",(({audio:e,video:t},{getState:r,rejectWithValue:i})=>lv(void 0,void 0,void 0,(function*(){try{const i=r(),n=i_(i);if(!n)throw new Error("No stream");const s=!!e&&Qv(i),a=!!t&&Jv(i),o=s_(i),{replacedTracks:c}=yield ih(Object.assign(Object.assign({},o),{audioId:s,videoId:a,type:"exact"}),{replaceStream:n}),d=Yv(i);n.getAudioTracks().forEach((e=>e.enabled=d));const l=Zv(i);return n.getVideoTracks().forEach((e=>e.enabled=l)),{replacedTracks:c}}catch(e){return i(e)}})))),qv=Jg("localMedia/doUpdateDeviceList",((e,{getState:t,dispatch:r,rejectWithValue:i})=>lv(void 0,void 0,void 0,(function*(){var e,n;const s=t();let a=[],o=[];const c=i_(s),d=Kv(s);try{a=yield navigator.mediaDevices.enumerateDevices(),o=Xv(s);if(!(c&&!n_(s)&&a&&o&&o.find((e=>e.deviceId))))return{devices:a};const{changedDevices:l}=nh({oldDevices:o,newDevices:a,currentAudioId:Qv(s),currentVideoId:Jv(s)});let p=null===(e=l.audioinput)||void 0===e?void 0:e.deviceId,u=null===(n=l.videoinput)||void 0===n?void 0:n.deviceId;function h(e,t){const r=t?e.findIndex((e=>e.deviceId===t)):0;return(e[(r+1)%e.length]||{}).deviceId}if(void 0!==u){const m=Xv(s).filter((e=>"videoinput"===e.kind)),f=Jv(s);let g=h(m.filter((e=>!d.includes(e.deviceId))),f);g&&f!==g||(g=h(m,f)),f!==g&&(u=g)}if(void 0!==p){const v=Xv(s).filter((e=>"audioinput"===e.kind)),_=Qv(s);let b=h(v.filter((e=>!d.includes(e.deviceId))),_);b&&_!==b||(b=h(v,_)),_!==b&&(p=b)}return void 0===p&&void 0===u||r(Gv({audioId:p,videoId:u})),{devices:a}}catch(y){return i(y)}})))),Gv=Jg("localMedia/doSwitchLocalStream",(({audioId:e,videoId:t},{dispatch:r,getState:i,rejectWithValue:n})=>lv(void 0,void 0,void 0,(function*(){const s=i(),a=i_(s),o=s_(s),c=!(!t||e)||!(t||!e);if(a)try{const{replacedTracks:i}=yield ih(Object.assign(Object.assign({},o),{audioId:void 0!==e&&e,videoId:void 0!==t&&t,type:"exact"}),{replaceStream:a}),n=e||t;return c&&n&&r(xv({deviceId:n})),{replacedTracks:i}}catch(i){console.error(i);const s=e||t;return c&&s&&r(xv({deviceId:s})),n(i)}})))),Hv=Jg("localMedia/doStartLocalMedia",((e,{getState:t,dispatch:r,rejectWithValue:i})=>lv(void 0,void 0,void 0,(function*(){const n=Ev((()=>{r(qv())}),{delay:500});if(navigator.mediaDevices&&navigator.mediaDevices.addEventListener("devicechange",n),"getTracks"in e)return Promise.resolve({stream:e,onDeviceChange:n});if(!e.audio&&!e.video)return{stream:new MediaStream,onDeviceChange:n};r(Nv({options:e}));try{yield r(qv());const i=t(),s=s_(i),{stream:a}=yield ih(Object.assign(Object.assign({},s),{audioId:e.audio,videoId:e.video}));return{stream:a,onDeviceChange:n}}catch(e){return i(e)}})))),Wv=()=>(e,t)=>{const r=i_(t()),i=t_(t()).onDeviceChange;null==r||r.getTracks().forEach((e=>{e.stop()})),navigator.mediaDevices&&i&&navigator.mediaDevices.removeEventListener("devicechange",i),e(Fv())},Kv=e=>e.localMedia.busyDeviceIds,Jv=e=>e.localMedia.currentCameraDeviceId,Qv=e=>e.localMedia.currentMicrophoneDeviceId,Zv=e=>e.localMedia.cameraEnabled,Yv=e=>e.localMedia.microphoneEnabled,Xv=e=>e.localMedia.devices,e_=e=>e.localMedia.options;be(e_,(e=>!!e));const t_=e=>e.localMedia,r_=e=>e.localMedia.status,i_=e=>e.localMedia.stream,n_=e=>e.localMedia.isSwitchingStream,s_=be(Xv,(e=>({devices:e,options:{disableAEC:!1,disableAGC:!1,hd:!0,lax:!1,lowDataMode:!1,simulcast:!0,widescreen:!0}}))),a_=be(r_,(e=>"starting"===e)),o_=be(Xv,Kv,((e,t)=>e.filter((e=>"videoinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),c_=be(Xv,Kv,((e,t)=>e.filter((e=>"audioinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),d_=be(Xv,(e=>e.filter((e=>"audiooutput"===e.kind))));Yg([be(rv,r_,e_,ov,((e,t,r,i)=>{if(e&&""===t&&!i&&r)return r}))],(({dispatch:e},t)=>{t&&e(Hv(t))}));Yg([be(rv,r_,e_,((e,t,r)=>!e&&""!==t&&!!r))],(({dispatch:e},t)=>{t&&e(Wv())})),Zg({predicate:(e,t,r)=>{const i=Yv(r),n=Yv(t);return"started"===r_(r)&&i!==n},effect:(e,{dispatch:t})=>{t(zv())}}),Zg({predicate:(e,t,r)=>{if(t.localMedia.isTogglingCamera)return!1;const i=Zv(r),n=Zv(t);return"started"===r_(r)&&i!==n},effect:(e,{dispatch:t})=>{t($v())}}),Zg({predicate:(e,t,r)=>{const i=Jv(r),n=Jv(t);return"started"===r_(r)&&i!==n},effect:(e,{dispatch:t})=>{t(Vv({audio:!1,video:!0}))}}),Zg({predicate:(e,t,r)=>{const i=Qv(r),n=Qv(t);return"started"===r_(r)&&i!==n},effect:(e,{dispatch:t})=>{t(Vv({audio:!0,video:!1}))}}),Zg({matcher:Ke(Hv.fulfilled,qv.fulfilled,Gv.fulfilled,Gv.rejected),effect:(e,{dispatch:t,getState:r})=>{const i=r(),n=i_(i),s=Xv(i);if(!n)return;const a=function({audioTrack:e,videoTrack:t,devices:r,stoppedVideoTrack:i,lastAudioId:n,lastVideoId:s}){const a=e=>"live"===(null==e?void 0:e.readyState)?e:null;return t=a(t)||i,e=a(e),{video:th("videoinput",t,r,s),audio:th("audioinput",e,r,n)}}({audioTrack:n.getAudioTracks()[0],videoTrack:n.getVideoTracks()[0],devices:s});t(Uv(a))}});const l_={displayName:"",id:"",isAudioEnabled:!0,isVideoEnabled:!0,isLocalParticipant:!0,stream:void 0,isScreenSharing:!1,roleName:"none",clientClaim:void 0},p_=Jg("localParticipant/doEnableAudio",((e,{getState:t})=>lv(void 0,void 0,void 0,(function*(){const r=t(),i=Tv(r).socket;return null==i||i.emit("enable_audio",{enabled:e.enabled}),e.enabled})))),u_=Jg("localParticipant/doEnableVideo",((e,{getState:t})=>lv(void 0,void 0,void 0,(function*(){const r=t(),i=Tv(r).socket;return null==i||i.emit("enable_video",{enabled:e.enabled}),e.enabled})))),h_=Jg("localParticipant/doSetDisplayName",((e,{getState:t})=>lv(void 0,void 0,void 0,(function*(){const r=t(),i=Tv(r).socket;return null==i||i.emit("send_client_metadata",{type:"UserData",payload:e}),e.displayName})))),m_=st({name:"localParticipant",initialState:l_,reducers:{doSetLocalParticipant:(e,t)=>Object.assign(Object.assign({},e),t.payload)},extraReducers:e=>{e.addCase(ev,((e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName}))),e.addCase(p_.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isAudioEnabled:t.payload}))),e.addCase(u_.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isVideoEnabled:t.payload}))),e.addCase(h_.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload}))),e.addCase(dv.roomJoined,((e,t)=>{var r,i;const n=null===(i=null===(r=t.payload)||void 0===r?void 0:r.room)||void 0===i?void 0:i.clients.find((e=>{var r;return e.id===(null===(r=t.payload)||void 0===r?void 0:r.selfId)}));return Object.assign(Object.assign({},e),{id:t.payload.selfId,roleName:(null==n?void 0:n.role.roleName)||"none",clientClaim:t.payload.clientClaim})}))}});m_.actions;const f_=e=>e.localParticipant,g_=e=>e.localParticipant.id,v_=e=>e.localParticipant.roleName;Zg({actionCreator:Lv,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isVideoEnabled:n}=f_(r());t(u_({enabled:i||!n}))}}),Zg({actionCreator:Av,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isAudioEnabled:n}=f_(r());t(p_({enabled:i||!n}))}});const __={canLockRoom:["host"]},b_=st({name:"authorization",initialState:{roomKey:null,roomLocked:!1},reducers:{setRoomKey:(e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload})},extraReducers:e=>{e.addCase(ev,((e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload.roomKey}))),e.addCase(dv.roomJoined,((e,t)=>{const{error:r,isLocked:i}=t.payload;return r?e:Object.assign(Object.assign({},e),{roomLocked:i})})),e.addCase(dv.roomLocked,((e,t)=>{const{isLocked:r}=t.payload;return Object.assign(Object.assign({},e),{roomLocked:r})}))}}),{setRoomKey:y_}=b_.actions,w_=function(e,t){return r=>(i,n,s)=>e(n())?t(r)(i,n,s):(console.warn("Not authorized to perform this action"),!1)}((e=>C_(e)),(e=>(t,r)=>{const i=r(),{socket:n}=Tv(i);null==n||n.emit("set_lock",{locked:e.locked})})),S_=e=>e.authorization.roomKey,C_=be(v_,(e=>__.canLockRoom.includes(e))),R_=st({name:"chat",initialState:{chatMessages:[]},reducers:{},extraReducers(e){e.addCase(dv.chatMessage,((e,t)=>{const r={senderId:t.payload.senderId,timestamp:t.payload.timestamp,text:t.payload.text};return Object.assign(Object.assign({},e),{chatMessages:[...e.chatMessages,r]})}))}}),T_=e=>(t,r)=>{const i=r(),n=Tv(i).socket;null==n||n.emit("chat_message",{text:e.text})},P_=st({name:"cloudRecording",initialState:{isRecording:!1,error:null,startedAt:void 0},reducers:{recordingRequestStarted:e=>Object.assign(Object.assign({},e),{status:"requested"})},extraReducers:e=>{e.addCase(dv.cloudRecordingStopped,(e=>Object.assign(Object.assign({},e),{isRecording:!1,status:void 0}))),e.addCase(dv.cloudRecordingStarted,((e,t)=>{const{payload:r}=t;return r.error?Object.assign(Object.assign({},e),{isRecording:!1,status:"error",error:r.error}):e})),e.addCase(dv.newClient,((e,{payload:t})=>{var r;const{client:i}=t;return"recorder"===(null===(r=i.role)||void 0===r?void 0:r.roleName)?Object.assign(Object.assign({},e),{isRecording:!0,status:"recording",startedAt:i.startedCloudRecordingAt?new Date(i.startedCloudRecordingAt).getTime():(new Date).getTime()}):e}))}}),{recordingRequestStarted:k_}=P_.actions,D_=()=>(e,t)=>{const r=t(),i=Tv(r).socket,n=E_(r);n&&["recording","requested"].includes(n)||(null==i||i.emit("start_recording",{recording:"cloud"}),e(k_()))},O_=()=>(e,t)=>{const r=t(),i=Tv(r).socket;null==i||i.emit("stop_recording")},E_=e=>e.cloudRecording.status,I_=st({name:"localScreenshare",initialState:{status:"",stream:null,error:null},reducers:{stopScreenshare:(e,t)=>Object.assign(Object.assign({},e),{status:"",stream:null})},extraReducers:e=>{e.addCase(j_.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(j_.fulfilled,((e,{payload:{stream:t}})=>Object.assign(Object.assign({},e),{status:"active",stream:t}))),e.addCase(j_.rejected,((e,{payload:t})=>Object.assign(Object.assign({},e),{error:t,status:"",stream:null})))}}),{stopScreenshare:x_}=I_.actions,j_=Jg("localScreenshare/doStartScreenshare",((e,{dispatch:t,getState:r,rejectWithValue:i})=>lv(void 0,void 0,void 0,(function*(){var e;try{const i=r(),n=L_(i);if(n)return{stream:n};const s=yield navigator.mediaDevices.getDisplayMedia(),a=()=>{t(M_())};return"oninactive"in s?s.addEventListener("inactive",a):null===(e=s.getVideoTracks()[0])||void 0===e||e.addEventListener("ended",a),{stream:s}}catch(e){return i(e)}})))),M_=()=>(e,t)=>{const r=t(),i=L_(r);i&&(i.getTracks().forEach((e=>e.stop())),e(x_({stream:i})))},L_=e=>e.localScreenshare.stream;Zg({actionCreator:Fv,effect:(e,{getState:t})=>{const r=t(),i=L_(r);i&&(null==i||i.getTracks().forEach((e=>{e.stop()})))}});const A_=st({initialState:{data:null,isFetching:!1,error:null},name:"organization",reducers:{},extraReducers:e=>{e.addCase(N_.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(N_.fulfilled,((e,t)=>t.payload?Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}):Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(N_.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!1,error:!0})))}}),N_=Jg("organization/doOrganizationFetch",((e,{extra:t,getState:r})=>lv(void 0,void 0,void 0,(function*(){try{const e=r().app.roomUrl,i=yield t.services.fetchOrganizationFromRoomUrl(e||"");if(!i)throw new Error("Invalid room url");return i}catch(e){console.error(e)}})))),B_=e=>{var t;return null===(t=e.organization.data)||void 0===t?void 0:t.organizationId};function F_(e){return Pe(`rtcConnection/event/${e}`)}Yg([be(rv,(e=>e.organization),hv,((e,t,r)=>!(!e||t.data||t.isFetching||t.error||r.isFetching)))],(({dispatch:e},t)=>{t&&e(N_())}));const U_={rtcManagerCreated:F_("rtcManagerCreated"),rtcManagerDestroyed:F_("rtcManagerDestroyed"),streamAdded:F_("streamAdded")},$_=["recorder","streamer"];function z_(e,t=!1){const{streams:r,role:i}=e,n=function(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(r[i[n]]=e[i[n]])}return r}(e,["streams","role"]);return Object.assign(Object.assign({},n),{stream:null,streams:r.map((e=>({id:e,state:t?"new_accept":"to_accept"}))),isLocalParticipant:!1,roleName:(null==i?void 0:i.roleName)||"none",presentationStream:null,newJoiner:t})}function V_(e,t){const r=e.remoteParticipants.findIndex((e=>e.id===t));return{index:r,participant:e.remoteParticipants[r]}}function q_(e,t,r){const{participant:i,index:n}=V_(e,t);return i?Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants.slice(0,n),Object.assign(Object.assign({},i),r),...e.remoteParticipants.slice(n+1)]}):(console.error(`Did not find client for update ${t}`),e)}function G_(e,t,r,i){const{participant:n}=V_(e,t);if(!n)return console.error(`No client ${t} found to update stream ${r} ${i}`),e;const s=n.streams.findIndex((e=>e.id===r)),a=[...n.streams];return a[s]=Object.assign(Object.assign({},a[s]),{state:i}),q_(e,t,{streams:a})}function H_(e,t,r){const{participant:i}=V_(e,t);return!i||i.streams.find((e=>e.id===r))?(console.warn(`No participant ${t} or stream ${r} already exists`),e):q_(e,t,{streams:[...i.streams,{id:r,state:"to_accept"}]})}const W_=st({name:"remoteParticipants",initialState:{remoteParticipants:[]},reducers:{streamStatusUpdated:(e,t)=>{let r=e;for(const{clientId:e,streamId:i,state:n}of t.payload)r=G_(r,e,i,n);return r},participantStreamAdded:(e,t)=>{const{clientId:r,stream:i}=t.payload;return q_(e,r,{stream:i})},participantStreamIdAdded:(e,t)=>{const{clientId:r,streamId:i}=t.payload;return H_(e,r,i)}},extraReducers:e=>{e.addCase(dv.roomJoined,((e,t)=>{var r;if(!(null===(r=t.payload)||void 0===r?void 0:r.room))return e;const i=t.payload.selfId,{clients:n}=t.payload.room;return Object.assign(Object.assign({},e),{remoteParticipants:n.filter((e=>e.id!==i)).filter((e=>!$_.includes(e.role.roleName))).map((e=>z_(e)))})})),e.addCase(U_.streamAdded,((e,t)=>function(e,t){const{clientId:r,stream:i,streamType:n}=t;let{streamId:s}=t;const{participant:a}=V_(e,r);if(!a)return console.error(`Did not find client ${r} for adding stream`),e;const o=e.remoteParticipants;s||(s=i.id);const c=o.find((e=>e.id===r));if(!c)return e;const d=c.streams.find((e=>e.id===s));return c.stream&&(c.stream.id===s||c.stream.inboundId===s)||!c.stream&&"webcam"===n||!c.stream&&!n&&!d?q_(e,r,{stream:i}):q_(e,r,{presentationStream:i})}(e,t.payload))),e.addCase(dv.newClient,((e,t)=>{const{client:r}=t.payload;return $_.includes(r.role.roleName)?e:function(e,t){const{participant:r}=V_(e,t.id);return r?(console.warn(`Client already existing ${t.id}. Ignoring`),e):Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants,t]})}(e,z_(r,!0))})),e.addCase(dv.clientLeft,((e,t)=>{const{clientId:r}=t.payload;return function(e,t){return Object.assign(Object.assign({},e),{remoteParticipants:e.remoteParticipants.filter((e=>e.id!==t))})}(e,r)})),e.addCase(dv.audioEnabled,((e,t)=>{const{clientId:r,isAudioEnabled:i}=t.payload;return q_(e,r,{isAudioEnabled:i})})),e.addCase(dv.videoEnabled,((e,t)=>{const{clientId:r,isVideoEnabled:i}=t.payload;return q_(e,r,{isVideoEnabled:i})})),e.addCase(dv.clientMetadataReceived,((e,t)=>{const{clientId:r,displayName:i}=t.payload.payload;return q_(e,r,{displayName:i})})),e.addCase(dv.screenshareStarted,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return H_(e,r,i)})),e.addCase(dv.screenshareStopped,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return function(e,t,r){var i,n;const{participant:s}=V_(e,t);if(!s)return console.error(`No participant ${t} found to remove stream ${r}`),e;const a=s.stream&&s.stream.id,o=(null===(i=s.presentationStream)||void 0===i?void 0:i.inboundId)||(null===(n=s.presentationStream)||void 0===n?void 0:n.id),c=s.streams.findIndex((e=>e.id===r));return q_(e,t,Object.assign(Object.assign({streams:s.streams.filter(((e,t)=>t!==c))},a===r&&{stream:null}),o===r&&{presentationStream:null}))}(e,r,i)}))}}),{participantStreamAdded:K_,participantStreamIdAdded:J_,streamStatusUpdated:Q_}=W_.actions,Z_=e=>e.remoteParticipants.remoteParticipants,Y_=be(L_,Z_,((e,t)=>{const r=[];e&&r.push({id:e.id,participantId:"local",hasAudioTrack:e.getAudioTracks().length>0,stream:e,isLocal:!0});for(const e of t)e.presentationStream&&r.push({id:e.presentationStream.id,participantId:e.id,hasAudioTrack:e.presentationStream.getAudioTracks().length>0,stream:e.presentationStream,isLocal:!1});return r})),X_=st({initialState:{session:null,status:"initializing",error:null},name:"roomConnection",reducers:{connectionStatusChanged:(e,t)=>Object.assign(Object.assign({},e),{status:t.payload})},extraReducers:e=>{e.addCase(dv.roomJoined,((e,t)=>{var r,i;const{error:n,isLocked:s}=t.payload;return"room_locked"===n&&s?Object.assign(Object.assign({},e),{status:"room_locked"}):n?Object.assign(Object.assign({},e),{status:"disconnected",error:n}):Object.assign(Object.assign({},e),{status:"connected",session:null!==(i=null===(r=t.payload.room)||void 0===r?void 0:r.session)&&void 0!==i?i:null})})),e.addCase(dv.disconnect,(e=>Object.assign(Object.assign({},e),{status:"disconnected"}))),e.addCase(dv.newClient,((e,t)=>{var r,i;return Object.assign(Object.assign({},e),{session:null!==(i=null===(r=t.payload.room)||void 0===r?void 0:r.session)&&void 0!==i?i:null})})),e.addCase(dv.roomSessionEnded,((e,t)=>{var r;return(null===(r=e.session)||void 0===r?void 0:r.id)!==t.payload.roomSessionId?e:Object.assign(Object.assign({},e),{session:null})})),e.addCase(dv.clientKicked,(e=>Object.assign(Object.assign({},e),{status:"kicked"}))),e.addCase(Rv,(e=>Object.assign(Object.assign({},e),{status:"reconnect"})))}}),{connectionStatusChanged:eb}=X_.actions,tb=()=>(e,t)=>{const r=t(),i=Tv(r).socket,n=iv(r),s=S_(r),a=nv(r),o=sv(r),c=av(r),d=B_(r);null==i||i.emit("knock_room",{avatarUrl:null,config:{isAudioEnabled:!0,isVideoEnabled:!0},deviceCapabilities:{canScreenshare:!0},displayName:a,isCoLocated:!1,isDevicePermissionDenied:!1,kickFromOtherRooms:!1,organizationId:d,roomKey:s,roomName:n,selfId:"",userAgent:o,externalId:c}),e(eb("knocking"))},rb=()=>(e,t)=>{const r=t(),i=Tv(r).socket,n=iv(r),s=S_(r),a=nv(r),o=sv(r),c=av(r),d=B_(r),l=Zv(t()),p=Yv(t()),u=g_(t()),h=(e=>e.localParticipant.clientClaim)(t());null==i||i.emit("join_room",Object.assign(Object.assign({avatarUrl:null,config:{isAudioEnabled:p,isVideoEnabled:l},deviceCapabilities:{canScreenshare:!0},displayName:a,isCoLocated:!1,isDevicePermissionDenied:!1,kickFromOtherRooms:!1,organizationId:d,roomKey:s,roomName:n,selfId:u},!!h&&{clientClaim:h}),{userAgent:o,externalId:c})),e(eb("connecting"))},ib=e=>e.roomConnection.status;Yg([be([B_,ib,Pv,r_,ov],((e,t,r,i,n)=>!("started"!==i&&!n||!r||!e||!["initializing","reconnect"].includes(t))))],(({dispatch:e},t)=>{t&&e(rb())})),Zg({actionCreator:dv.knockHandled,effect:({payload:e},{dispatch:t,getState:r})=>{const{clientId:i,resolution:n}=e,s=r();i===g_(s)&&("accepted"===n?(t(y_(e.metadata.roomKey)),t(rb())):"rejected"===n&&t(eb("knock_rejected")))}});const nb=e=>({emit:(t,r)=>{"rtc_manager_created"===t?e(_b(r)):"stream_added"===t?e(U_.streamAdded(r)):"rtc_manager_destroyed"===t&&e(pb())}}),sb={dispatcherCreated:!1,error:null,isCreatingDispatcher:!1,reportedStreamResolutions:{},rtcManager:null,rtcManagerDispatcher:null,rtcManagerInitialized:!1,status:"",isAcceptingStreams:!1},ab=st({name:"rtcConnection",initialState:sb,reducers:{isAcceptingStreams:(e,t)=>Object.assign(Object.assign({},e),{isAcceptingStreams:t.payload}),resolutionReported:(e,t)=>{const{streamId:r,width:i,height:n}=t.payload;return Object.assign(Object.assign({},e),{reportedStreamResolutions:Object.assign(Object.assign({},e.reportedStreamResolutions),{[r]:{width:i,height:n}})})},rtcDisconnected:()=>Object.assign({},sb),rtcDispatcherCreated:(e,t)=>Object.assign(Object.assign({},e),{dispatcherCreated:!0,rtcManagerDispatcher:t.payload}),rtcManagerCreated:(e,t)=>Object.assign(Object.assign({},e),{rtcManager:t.payload,status:"ready"}),rtcManagerDestroyed:e=>Object.assign(Object.assign({},e),{rtcManager:null}),rtcManagerInitialized:e=>Object.assign(Object.assign({},e),{rtcManagerInitialized:!0})},extraReducers:e=>{e.addCase(Rv,(e=>Object.assign(Object.assign({},e),{status:"reconnect"}))),e.addCase(dv.roomJoined,(e=>Object.assign(Object.assign({},e),{status:"reconnect"===e.status?"ready":e.status})))}}),{resolutionReported:ob,rtcDispatcherCreated:cb,rtcDisconnected:db,rtcManagerCreated:lb,rtcManagerDestroyed:pb,rtcManagerInitialized:ub,isAcceptingStreams:hb}=ab.actions,mb=()=>(e,t)=>{const r=t(),i=Tv(r).socket,n=yb(r).rtcManagerDispatcher,s=Zv(r),a=Yv(r),o=ov(r);if(n||!i)return;const c={getMediaConstraints:()=>({audio:a,video:s}),deferrable:e=>!e},d=new Km({emitter:nb(e),serverSocket:i,webrtcProvider:c,features:{lowDataModeEnabled:!1,sfuServerOverrideHost:void 0,turnServerOverrideHost:void 0,useOnlyTURN:void 0,vp9On:!1,h264On:!1,simulcastScreenshareOn:!1,deviceHandlerFactory:o?Bn.createFactory():void 0}});e(cb(d))},fb=()=>(e,t)=>{const{rtcManager:r}=yb(t());r&&r.disconnectAll(),e(db())},gb=e=>(t,r)=>{var i;t(hb(!0));const n=r(),s=yb(n).rtcManager,a=Z_(n);if(!s)throw new Error("No rtc manager");const o=null===(i=s.shouldAcceptStreamsFromBothSides)||void 0===i?void 0:i.call(s),c=[];for(const{clientId:t,streamId:r,state:i}of e){if(a.find((e=>e.id===t))){if("to_accept"===i||"new_accept"===i&&o||"old_accept"===i&&!o)s.acceptNewStream({streamId:"0"===r?t:r,clientId:t,shouldAddLocalVideo:"0"===r,activeBreakout:false});else if("new_accept"===i||"old_accept"===i);else if("to_unaccept"===i)null==s||s.disconnect("0"===r?t:r,false);else if("done_accept"!==i)continue;c.push({clientId:t,streamId:r,state:i.replace(/to_|new_|old_/,"done_")})}}t(Q_(c)),t(hb(!1))},vb=({streamId:e,width:t,height:r})=>(i,n)=>{const{reportedStreamResolutions:s,rtcManager:a}=yb(n()),o=i_(n());if(!a||(null==o?void 0:o.id)===e)return;const c=s[e];c&&c.width===t&&c.height===r||a.updateStreamResolution(e,null,{width:t||1,height:r||1}),i(ob({streamId:e,width:t,height:r}))},_b=e=>t=>{const{rtcManager:r}=e;t(lb(r))},bb=()=>(e,t)=>{const r=i_(t()),i=yb(t()).rtcManager,n=Zv(t()),s=Yv(t());r&&i&&i.addNewStream("0",r,!s,!n),e(ub())},yb=e=>e.rtcConnection,wb=e=>e.rtcConnection.rtcManagerInitialized,Sb=e=>e.rtcConnection.status;Zg({actionCreator:Vv.fulfilled,effect:({payload:e},{getState:t})=>{const{replacedTracks:r}=e,{rtcManager:i}=yb(t()),n=i_(t());null==r||r.forEach((e=>{((e,t)=>{const r=null==n?void 0:n.getTracks().find((t=>t.kind===e));r&&(null==i||i.replaceTrack(t,r))})(e.kind,e)}))}}),Zg({actionCreator:j_.fulfilled,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=yb(t());null==i||i.addNewStream(r.id,r,!1,!0)}}),Zg({actionCreator:x_,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=yb(t());null==i||i.removeStream(r.id,r,null)}});Yg([be((e=>e.rtcConnection.dispatcherCreated),(e=>e.rtcConnection.isCreatingDispatcher),Dv,((e,t,r)=>!(e||t||!r)))],(({dispatch:e},t)=>{t&&e(mb())}));const Cb=be((e=>e.rtcConnection.rtcManager),wb,r_,((e,t,r)=>!("started"!==r||!e||t)));Yg([Cb],(({dispatch:e},t)=>{t&&e(bb())}));Yg([be(Sb,rv,((e,t)=>!t&&!["","disconnected"].includes(e)))],(({dispatch:e},t)=>{t&&e(fb())}));const Rb=be(Sb,Z_,((e,t)=>{if("ready"!==e)return[];const r=[];for(const e of t){const{streams:t,id:i,newJoiner:n}=e;for(let e=0;e<t.length;e++){let s=t[e].id,a=t[e].state;(null==t?void 0:t.length)>1&&"0"===t[1].id&&(0===e?(s=t[1].id,a=t[1].state):1===e&&(s=t[0].id,a=t[0].state)),"done_accept"!==a&&r.push({clientId:i,streamId:s,state:(n&&"0"===s?"new":"to")+"_accept"})}}return r}));Yg([Rb,e=>e.rtcConnection.isAcceptingStreams],(({dispatch:e},t,r)=>{0<t.length&&!r&&e(gb(t))}));const Tb={audioEnabled:{actions:[p_.fulfilled],rtcEventName:"audioEnabled",getValue:e=>Yv(e),getOutput:e=>({enabled:e})},videoEnabled:{actions:[u_.fulfilled],rtcEventName:"videoEnabled",getValue:e=>Zv(e),getOutput:e=>({enabled:e})},localStream:{actions:[Vv.fulfilled],rtcEventName:"localStream",getValue:e=>{var t;return null===(t=i_(e))||void 0===t?void 0:t.getTracks().map((e=>({id:e.id,kind:e.kind,label:e.label})))},getOutput:e=>({stream:e})},localScreenshareStream:{actions:[j_.fulfilled],rtcEventName:"localScreenshareStream",getValue:e=>{var t;return null===(t=L_(e))||void 0===t?void 0:t.getTracks().map((e=>({id:e.id,kind:e.kind,label:e.label})))},getOutput:e=>({tracks:e})},localScreenshareStreamStopped:{actions:[x_],rtcEventName:"localScreenshareStream",getValue:()=>()=>null,getOutput:()=>({})},displayName:{actions:[h_.fulfilled],rtcEventName:"displayName",getValue:e=>nv(e),getOutput:e=>({displayName:e})},clientId:{actions:null,rtcEventName:"clientId",getValue:e=>g_(e),getOutput:e=>({clientId:e})},deviceId:{actions:null,rtcEventName:"deviceId",getValue:e=>(e=>{var t,r;return null===(r=null===(t=e.deviceCredentials.data)||void 0===t?void 0:t.credentials)||void 0===r?void 0:r.uuid})(e),getOutput:e=>({deviceId:e})},externalId:{actions:null,rtcEventName:"externalId",getValue:e=>av(e),getOutput:e=>({externalId:e})},organizationId:{actions:null,rtcEventName:"organizationId",getValue:e=>B_(e),getOutput:e=>({organizationId:e})},signalConnectionStatus:{actions:null,rtcEventName:"signalConnectionStatus",getValue:e=>kv(e),getOutput:e=>({status:e})},roomSessionId:{actions:[dv.newClient,dv.roomJoined,dv.roomSessionEnded,dv.clientLeft],rtcEventName:"roomSessionId",getValue:e=>(e=>{var t;return null===(t=e.roomConnection.session)||void 0===t?void 0:t.id})(e),getOutput:e=>({roomSessionId:e})},rtcConnectionStatus:{actions:null,rtcEventName:"rtcConnectionStatus",getValue:e=>Sb(e),getOutput:e=>({status:e})},userRole:{actions:null,rtcEventName:"userRole",getValue:e=>v_(e),getOutput:e=>({userRole:e})}},Pb=Object.values(Tb).flatMap((({actions:e})=>{var t;return null!==(t=null==e?void 0:e.map((e=>e)))&&void 0!==t?t:null})).filter((e=>null!==e)),kb=e=>"object"==typeof e?JSON.stringify(e):e,Db=st({initialState:{reportedValues:{}},name:"rtcAnalytics",reducers:{updateReportedValues:(e,t)=>Object.assign(Object.assign({},e),{reportedValues:Object.assign(Object.assign({},e.reportedValues),{[t.payload.rtcEventName]:t.payload.value})})}}),Ob=()=>(e,t)=>{const r=t(),i=yb(r).rtcManager;i&&(i.sendStatsCustomEvent("insightsStats",{_time:Date.now(),ls:0,lr:0,bs:0,br:0,cpu:0}),Object.values(Tb).forEach((({rtcEventName:t,getValue:n,getOutput:s})=>{var a;const o=n(r),c=Object.assign(Object.assign({},s(o)),{_time:Date.now()}),d=kb(o);(null===(a=r.rtcAnalytics.reportedValues)||void 0===a?void 0:a[t])!==d&&(i.sendStatsCustomEvent(t,c),e(Eb({rtcEventName:t,value:o})))})))},{updateReportedValues:Eb}=Db.actions;Zg({matcher:Ke(...Pb),effect:({type:e},{getState:t,dispatch:r})=>{var i;const n=t(),s=yb(n).rtcManager;if(!s)return;const a=Object.values(Tb).find((({actions:t})=>null==t?void 0:t.map((e=>e.type)).includes(e)));if(!a)return;const{getValue:o,getOutput:c,rtcEventName:d}=a,l=o(n),p=kb(l),u=Object.assign(Object.assign({},c(l)),{_time:Date.now()});(null===(i=n.rtcAnalytics.reportedValues)||void 0===i?void 0:i[d])!==p&&(s.sendStatsCustomEvent(d,u),r(Eb({rtcEventName:d,value:l})))}}),Yg([wb],(({dispatch:e},t)=>{t&&e(Ob())}));const Ib=st({name:"streaming",initialState:{isStreaming:!1,error:null,startedAt:void 0},reducers:{doHandleStreamingStarted:e=>Object.assign(Object.assign({},e),{isStreaming:!0,error:null,startedAt:(new Date).getTime()}),doHandleStreamingStopped:e=>Object.assign(Object.assign({},e),{isStreaming:!1})}});Ib.actions;const xb=st({name:"waitingParticipants",initialState:{waitingParticipants:[]},reducers:{},extraReducers:e=>{e.addCase(dv.roomJoined,((e,{payload:t})=>{var r;return(null===(r=t.room)||void 0===r?void 0:r.knockers.length)?Object.assign(Object.assign({},e),{waitingParticipants:t.room.knockers.map((e=>({id:e.clientId,displayName:e.displayName})))}):e})),e.addCase(dv.roomKnocked,((e,t)=>{const{clientId:r,displayName:i}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:[...e.waitingParticipants,{id:r,displayName:i}]})})),e.addCase(dv.knockerLeft,((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:e.waitingParticipants.filter((e=>e.id!==r))})}))}}),jb=e=>(t,r)=>{const{participantId:i}=e,n=r(),s=Dv(n);null==s||s.emit("handle_knock",{action:"accept",clientId:i,response:{}})},Mb=e=>(t,r)=>{const{participantId:i}=e,n=r(),s=Dv(n);null==s||s.emit("handle_knock",{action:"reject",clientId:i,response:{}})};const Lb=null===!1&&!1,Ab=h({app:Xg.reducer,authorization:b_.reducer,chat:R_.reducer,cloudRecording:P_.reducer,deviceCredentials:pv.reducer,localMedia:Iv.reducer,localParticipant:m_.reducer,localScreenshare:I_.reducer,organization:A_.reducer,remoteParticipants:W_.reducer,roomConnection:X_.reducer,rtcAnalytics:Db.reducer,rtcConnection:ab.reducer,signalConnection:mv.reducer,streaming:Ib.reducer,waitingParticipants:xb.reducer}),Nb=({preloadedState:e,injectServices:t})=>Ge({devTools:Lb,reducer:Ab,middleware:e=>e({thunk:{extraArgument:{services:t}},serializableCheck:!1}).prepend(Qg.middleware),preloadedState:e}),Bb=(e,t,r)=>{let i;function n(){const n=t(e.getState());n!==i&&(i=n,r(i))}const s=e.subscribe(n);return n(),s};class Fb{constructor(e={}){this.data=void 0===e.data?{}:e.data,this.headers=e.headers||{},this.status=e.status||200,this.statusText=e.statusText||"OK",this.url=e.url||null}}function Ub(e,t){return Xm.ok(e,`${t} is required`),e}function $b(e,t){return Xm.ok("boolean"==typeof e,`${t}<boolean> is required`),e}function zb(e,t){return Xm.ok("number"==typeof e,`${t}<number> is required`),e}function Vb(e,t){return Xm.ok("string"==typeof e,`${t}<string> is required`),e}function qb(e,t,r){const i=r||t.name[0].toLowerCase()+t.name.substring(1);return Xm.ok(e instanceof t,`${i}<${t.name}> is required`),e}function Gb(e,t){return Xm.ok(Array.isArray(e),`${t}<array> is required`),e}function Hb(e,t){if(null==e||"object"!=typeof e||Array.isArray(e))throw new Error(`${t} must be a record. ${JSON.stringify(e)}`);return e}function Wb(e,t,r){Vb(t,"name"),function(e,t,r,i){Vb(r,"name");const n=i||`${r} must be null or of type ${t}`;Xm.ok(null===e||typeof e===t,n)}(e,"string",t,r)}function Kb({baseUrl:e,url:t}){return e?e+t:t}class Jb{constructor({baseUrl:e}){Vb(e,"baseUrl"),this._baseUrl=e}_requestAxios(e,t){const r=Object.assign({},t,{url:e,baseURL:this._baseUrl});return Kg.request(r)}request(e,t){return Vb(e,"url"),Xm.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),Xm.ok(t,"options are required"),this._requestAxios(e,t).then((e=>{const{data:t,headers:r,status:i,statusText:n,config:s}=e,a=s&&s.url?Kb({baseUrl:s.baseURL,url:s.url}):null;return new Fb({data:t,headers:r,status:i,statusText:n,url:a})})).catch((e=>{const t=e.response;if(!t)throw new Error("Could not make the request.");const{data:r,headers:i,status:n,statusText:s,config:a}=t,o=a&&a.url?Kb({baseUrl:a.baseURL,url:a.url}):null;return Promise.reject(new Fb({data:r,headers:i,status:n,statusText:s,url:o}))}))}}class Qb{constructor({httpClient:e}){Xm.ok(e,"httpClient is required"),this._httpClient=e}static dataToFormData(e){Xm.ok(e,"data is required");const t=new FormData;return Object.keys(e).forEach((r=>{const i=e[r];t.append(r,i)})),t}request(e,t={}){const r=Object.assign(t.headers||{},{"Content-Type":void 0});return this._httpClient.request(e,Object.assign(t,{headers:r,transformRequest:Qb.dataToFormData}))}}let Zb;Zb="object"==typeof window?window.btoa||df:"object"==typeof global&&global.btoa||df;const Yb=()=>Promise.resolve(null);class Xb{constructor({httpClient:e,fetchDeviceCredentials:t}){this._httpClient=e,this._fetchDeviceCredentials=t}request(e,t){return this._fetchDeviceCredentials().then((r=>{const i=Object.assign({},t.headers,function(e){if(e&&e.credentials){const t=`${e.credentials.uuid}:${e.hmac}`;return{Authorization:`Basic ${Zb(t)}`}}return{}}(r),{"X-Appearin-Device-Platform":"web"}),n=Object.assign({},t,{headers:i});return this._httpClient.request(e,n)}))}}class ey{constructor({baseUrl:e="https://api.appearin.net",fetchDeviceCredentials:t=Yb}={}){this.authenticatedHttpClient=new Xb({httpClient:new Jb({baseUrl:e}),fetchDeviceCredentials:t}),this.authenticatedFormDataHttpClient=new Qb({httpClient:this.authenticatedHttpClient})}request(e,t){return Vb(e,"url"),Xm.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),Xm.ok(t,"options are required"),this.authenticatedHttpClient.request(e,t)}requestMultipart(e,t){return Vb(e,"url"),Xm.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),Xm.ok(t,"options are required"),this.authenticatedFormDataHttpClient.request(e,t)}}function ty(e,t){return Vb(Hb(e,"data")[t],t)}const ry=(iy=ty,(e,t)=>{const r=Hb(e,"data")[t];return null==r?null:iy(e,t)});var iy;function ny(e,t,r){return function(e,t){return Gb(Hb(e,"data")[t],t)}(e,t).map((e=>r(e)))}class sy{constructor(e,t,r=void 0){this.credentials={uuid:e},this.hmac=t,this.userId=r}toJson(){return Object.assign({credentials:this.credentials,hmac:this.hmac},this.userId&&{userId:this.userId})}static fromJson(e){return new sy(ty(function(e,t){const r=Hb(e,"data")[t];return void 0===r?null:r}(e,"credentials"),"uuid"),ty(e,"hmac"),ry(e,"userId")||void 0)}}class ay{constructor({apiClient:e}){this._apiClient=e}getCredentials(){return this._apiClient.request("/devices",{method:"post"}).then((({data:e})=>sy.fromJson(e))).catch((e=>{if(e.response&&404===e.response.status)return null;throw e}))}}class oy{constructor(e,t){this._key=e,this._chromeStorage=t}loadOrDefault(e){return new Promise((t=>{this._chromeStorage.get(this._key,(r=>{t(r[this._key]||e)}))}))}save(e){return new Promise((t=>{this._chromeStorage.set({[this._key]:e},(()=>{t()}))}))}}class cy{constructor(e,t){Ub(t,"localStorage"),this._key=Vb(e,"key"),this._localStorage=t}loadOrDefault(e){try{const t=this._localStorage.getItem(this._key);if(t)try{return Promise.resolve(JSON.parse(t))}catch(e){}return Promise.resolve(e)}catch(t){return console.warn("Error getting access to storage. Are cookies blocked?",t),Promise.resolve(e)}}save(e){try{return this._localStorage.setItem(this._key,JSON.stringify(e)),Promise.resolve()}catch(e){return console.warn("Error getting access to storage. Are cookies blocked?",e),Promise.reject(e)}}}let dy;try{dy=self.localStorage}catch(jy){dy={getItem:()=>{},key:()=>{},setItem:()=>{},removeItem:()=>{},hasOwnProperty:()=>{},length:0}}var ly=dy;const py="credentials_saved";class uy extends Bt{constructor({deviceService:e,credentialsStore:t}){super(),this._deviceService=e,this._credentialsStore=t}static create({baseUrl:e,storeName:t="CredentialsStorage",storeType:r="localStorage"}){const i=new ay({apiClient:new ey({baseUrl:e})});let n=null;if("localStorage"===r)n=new cy(t,ly);else{if("chromeStorage"!==r)throw new Error(`Unknown store type: ${r}`);n=new oy(t,window.chrome.storage.local)}return new uy({deviceService:i,credentialsStore:n})}_fetchNewCredentialsFromApi(){const e=this._credentialsStore;return new Promise((t=>{const r=()=>{this._deviceService.getCredentials().then((r=>e.save(r?r.toJson():null).then((()=>t(r))))).catch((()=>{setTimeout(r,2e3)}))};r()}))}getCurrentCredentials(){return this._credentialsStore.loadOrDefault(null).then((e=>e?sy.fromJson(e):null))}getCredentials(){return this.credentialsPromise||(this.credentialsPromise=this.getCurrentCredentials().then((e=>e||this._fetchNewCredentialsFromApi()))),this.credentialsPromise}saveCredentials(e){return this.credentialsPromise=void 0,this._credentialsStore.save(e.toJson()).then((()=>(this.emit(py,e),e)))}setUserId(e){return this.getCurrentCredentials().then((t=>{t||console.error("Illegal state: no credentials to set user id for.");if(null===t||t.userId!==e)return this._credentialsStore.save(Object.assign({},null==t?void 0:t.toJson(),{userId:e}))})).then((()=>{}))}}class hy{constructor({isExhausted:e,renewsAt:t,totalMinutesLimit:r,totalMinutesUsed:i}){this.isExhausted=e,this.renewsAt=t,this.totalMinutesLimit=r,this.totalMinutesUsed=i}static fromJson(e){return new hy({isExhausted:$b(e.isExhausted,"isExhausted"),renewsAt:new Date(Vb(e.renewsAt,"renewsAt")),totalMinutesLimit:zb(e.totalMinutesLimit,"totalMinutesLimit"),totalMinutesUsed:zb(e.totalMinutesUsed,"totalMinutesUsed")})}}class my{constructor({basePlanId:e,embeddedFreeTierStatus:t,isDeactivated:r,isOnTrial:i,onTrialUntil:n,trialStatus:s}){this.basePlanId=e,this.isDeactivated=r,this.isOnTrial=i,this.onTrialUntil=n||null,this.trialStatus=s||null,this.embeddedFreeTierStatus=t||null}static fromJson(e){return new my({basePlanId:"string"==typeof e.basePlanId?e.basePlanId:null,isDeactivated:$b(e.isDeactivated,"isDeactivated"),isOnTrial:$b(e.isOnTrial,"isOnTrial"),onTrialUntil:"string"==typeof e.onTrialUntil?new Date(e.onTrialUntil):null,trialStatus:"string"==typeof e.trialStatus?e.trialStatus:null,embeddedFreeTierStatus:e.embeddedFreeTierStatus?hy.fromJson(e.embeddedFreeTierStatus):null})}}function fy(e){return null!=e}function gy(e={}){return{maxNumberOfInvitationsAndUsers:fy(null==e?void 0:e.maxNumberOfInvitationsAndUsers)?Number(null==e?void 0:e.maxNumberOfInvitationsAndUsers):null,maxNumberOfClaimedRooms:fy(null==e?void 0:e.maxNumberOfClaimedRooms)?Number(null==e?void 0:e.maxNumberOfClaimedRooms):null,maxRoomLimitPerOrganization:fy(null==e?void 0:e.maxRoomLimitPerOrganization)?Number(null==e?void 0:e.maxRoomLimitPerOrganization):null,trialMinutesLimit:fy(null==e?void 0:e.trialMinutesLimit)?Number(null==e?void 0:e.trialMinutesLimit):null,includedUnits:fy(null==e?void 0:e.includedUnits)?Number(null==e?void 0:e.includedUnits):null}}class vy{constructor(e){this.logoImageUrl=null,this.roomBackgroundImageUrl=null,this.roomBackgroundThumbnailUrl=null,this.roomKnockPageBackgroundImageUrl=null,this.roomKnockPageBackgroundThumbnailUrl=null,this.preferences=null,this.onboardingSurvey=null,this.type=null,qb(e,Object,"properties"),Vb(e.organizationId,"organizationId"),Vb(e.organizationName,"organizationName"),Vb(e.subdomain,"subdomain"),qb(e.permissions,Object,"permissions"),qb(e.limits,Object,"limits"),this.organizationId=e.organizationId,this.organizationName=e.organizationName,this.subdomain=e.subdomain,this.permissions=e.permissions,this.limits=e.limits,this.account=e.account?new my(e.account):null,this.logoImageUrl=e.logoImageUrl,this.roomBackgroundImageUrl=e.roomBackgroundImageUrl,this.roomBackgroundThumbnailUrl=e.roomBackgroundThumbnailUrl,this.roomKnockPageBackgroundImageUrl=e.roomKnockPageBackgroundImageUrl,this.roomKnockPageBackgroundThumbnailUrl=e.roomKnockPageBackgroundThumbnailUrl,this.preferences=e.preferences,this.onboardingSurvey=e.onboardingSurvey,this.type=e.type}static fromJson(e){const t=qb(e,Object,"data"),r=(null==t?void 0:t.preferences)||{},i=(null==t?void 0:t.onboardingSurvey)||null,n=qb(t.permissions,Object,"permissions");return new vy({organizationId:Vb(t.organizationId,"organizationId"),organizationName:Vb(t.organizationName,"organizationName"),subdomain:Vb(t.subdomain,"subdomain"),permissions:n,limits:gy(qb(t.limits,Object,"limits")),account:t.account?my.fromJson(t.account):null,logoImageUrl:"string"==typeof t.logoImageUrl?t.logoImageUrl:null,roomBackgroundImageUrl:"string"==typeof t.roomBackgroundImageUrl?t.roomBackgroundImageUrl:null,roomBackgroundThumbnailUrl:"string"==typeof t.roomBackgroundThumbnailUrl?t.roomBackgroundThumbnailUrl:null,roomKnockPageBackgroundImageUrl:"string"==typeof t.roomKnockPageBackgroundImageUrl?t.roomKnockPageBackgroundImageUrl:null,roomKnockPageBackgroundThumbnailUrl:"string"==typeof t.roomKnockPageBackgroundThumbnailUrl?t.roomKnockPageBackgroundThumbnailUrl:null,preferences:r,onboardingSurvey:i,type:"string"==typeof t.type?t.type:null})}}vy.GLOBAL_ORGANIZATION_ID="1";class _y{constructor({apiClient:e}){this._apiClient=e}createOrganization({organizationName:e,subdomain:t,owner:r}){const{displayName:i,consents:n}=r||{},s="email"in r?{value:r.email,verificationCode:Vb(r.verificationCode,"owner.verificationCode")}:null,a="idToken"in r?r.idToken:null;if(Vb(t,"subdomain"),Vb(e,"organizationName"),Vb(i,"owner.displayName"),Xm.ok(s||a,"owner.email or owner.idToken is required"),n){Gb(n,"consents");for(const{consentRevisionId:e,action:t}of n)Vb(e,"consentRevisionId"),Wb(t,"action")}return this._apiClient.request("/organizations",{method:"POST",data:{organizationName:e,type:"private",subdomain:t,owner:Object.assign(Object.assign(Object.assign(Object.assign({},s&&{email:s}),a&&{idToken:a}),n&&{consents:n}),{displayName:i})}}).then((({data:e})=>ty(e,"organizationId")))}getOrganizationBySubdomain(e){return Vb(e,"subdomain"),this._apiClient.request(`/organization-subdomains/${encodeURIComponent(e)}/?fields=permissions,account,onboardingSurvey`,{method:"GET"}).then((({data:e})=>vy.fromJson(e))).catch((e=>{if(e instanceof Fb){if(404===e.status)return null;throw new Error(e.statusText)}throw e}))}getOrganizationByOrganizationId(e){return Vb(e,"organizationId"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}?fields=permissions,account`,{method:"GET"}).then((({data:e})=>vy.fromJson(e))).catch((e=>{if(e instanceof Fb){if(404===e.status)return null;throw new Error(e.statusText)}throw e}))}getOrganizationsByContactPoint(e){const{code:t}=e,r="email"in e?e.email:null,i="phoneNumber"in e?e.phoneNumber:null;Xm.ok((r||i)&&!(r&&i),"either email or phoneNumber is required"),Vb(t,"code");const n=r?{type:"email",value:r}:{type:"phoneNumber",value:i};return this._apiClient.request("/organization-queries",{method:"POST",data:{contactPoint:n,code:t}}).then((({data:e})=>ny(e,"organizations",(e=>vy.fromJson(e)))))}getOrganizationsByIdToken({idToken:e}){return Vb(e,"idToken"),this._apiClient.request("/organization-queries",{method:"POST",data:{idToken:e}}).then((({data:e})=>ny(e,"organizations",(e=>vy.fromJson(Object.assign({permissions:{},limits:{}},Hb(e,"organization")))))))}getOrganizationsByLoggedInUser(){return this._apiClient.request("/user/organizations",{method:"GET"}).then((({data:e})=>ny(e,"organizations",(e=>vy.fromJson(Object.assign({permissions:{},limits:{}},Hb(e,"organization")))))))}getSubdomainAvailability(e){return Vb(e,"subdomain"),this._apiClient.request(`/organization-subdomains/${encodeURIComponent(e)}/availability`,{method:"GET"}).then((({data:e})=>(qb(e,Object,"data"),{status:ty(e,"status")})))}updatePreferences({organizationId:e,preferences:t}){return Ub(e,"organizationId"),Ub(t,"preferences"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}/preferences`,{method:"PATCH",data:t}).then((()=>{}))}deleteOrganization({organizationId:e}){return Ub(e,"organizationId"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}`,{method:"DELETE"}).then((()=>{}))}}class by{constructor({organizationService:e,subdomain:t}){this._organizationService=e,this._subdomain=t,this._organizationPromise=null}initOrganization(){return this.fetchOrganization().then((()=>{}))}fetchOrganization(){return this._organizationPromise||(this._organizationPromise=this._organizationService.getOrganizationBySubdomain(this._subdomain)),this._organizationPromise}}const yy="https://api.whereby.dev";function wy(){const e=uy.create({baseUrl:yy}),t=new ey({fetchDeviceCredentials:e.getCredentials.bind(e),baseUrl:yy}),r=new _y({apiClient:t});return{credentialsService:e,apiClient:t,organizationService:r,fetchOrganizationFromRoomUrl:e=>{const t=of({host:new URL(e).host});return new by({organizationService:r,subdomain:t.subdomain}).fetchOrganization()}}}var Sy=e=>{var{muted:t,mirror:r=!1,stream:i,onResize:s,onSetAspectRatio:a}=e,o=function(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(r[i[n]]=e[i[n]])}return r}(e,["muted","mirror","stream","onResize","onSetAspectRatio"]);const c=n.useRef(null);return n.useEffect((()=>{if(!c.current)return;const e=new ResizeObserver(Ev((()=>{if(c.current&&(null==i?void 0:i.id)){s&&s({width:c.current.clientWidth,height:c.current.clientHeight,stream:i});const e=c.current.videoHeight,t=c.current.videoWidth;a&&t&&e&&t+e>20&&a({aspectRatio:t/e})}}),{delay:1e3,edges:!0}));return e.observe(c.current),()=>{e.disconnect()}}),[i]),n.useEffect((()=>{c.current&&(c.current.srcObject!==i&&(c.current.srcObject=i),c.current.muted!==t&&(c.current.muted=Boolean(t)))}),[t,i,c]),n.createElement("video",Object.assign({ref:c,autoPlay:!0,playsInline:!0},o,{style:Object.assign({transform:r?"scaleX(-1)":"none",width:"100%",height:"100%"},o.style)}))};const Cy=be((e=>e.chat.chatMessages),(e=>e.cloudRecording),f_,i_,Z_,Y_,ib,(e=>e.streaming),(e=>e.waitingParticipants.waitingParticipants),((e,t,r,i,n,s,a,o,c)=>({chatMessages:e,cloudRecording:t.isRecording?{status:"recording"}:void 0,localScreenshareStatus:r.isScreenSharing?"active":void 0,localParticipant:Object.assign(Object.assign({},r),{stream:i}),remoteParticipants:n,screenshares:s,connectionStatus:a,liveStream:o.isStreaming?{status:"streaming",startedAt:o.startedAt}:void 0,waitingParticipants:c}))),Ry={chatMessages:[],remoteParticipants:[],connectionStatus:"initializing",screenshares:[],waitingParticipants:[]},Ty={localMediaOptions:{audio:!0,video:!0}};const Py=be((e=>e.localMedia.cameraDeviceError),o_,Jv,Qv,(e=>e.localMedia.isSettingCameraDevice),(e=>e.localMedia.isSettingMicrophoneDevice),a_,i_,(e=>e.localMedia.microphoneDeviceError),c_,d_,(e=>e.localMedia.startError),((e,t,r,i,n,s,a,o,c,d,l,p)=>({cameraDeviceError:e,cameraDevices:t,currentCameraDeviceId:r,currentMicrophoneDeviceId:i,isSettingCameraDevice:n,isSettingMicrophoneDevice:s,isStarting:a,localStream:o,microphoneDeviceError:c,microphoneDevices:d,speakerDevices:l,startError:p}))),ky={cameraDeviceError:null,cameraDevices:[],isSettingCameraDevice:!1,isSettingMicrophoneDevice:!1,isStarting:!1,microphoneDeviceError:null,microphoneDevices:[],speakerDevices:[],startError:null};return e.VideoView=Sy,e.useLocalMedia=function(e={audio:!0,video:!0}){const[r]=t.useState((()=>{const e=wy();return Nb({injectServices:e})})),[i,n]=t.useState(ky);return t.useEffect((()=>{const t=Bb(r,Py,n);return r.dispatch(Hv(e)),()=>{t(),r.dispatch(Wv())}}),[]),{state:i,actions:{setCameraDevice:t.useCallback((e=>r.dispatch(jv({deviceId:e}))),[r]),setMicrophoneDevice:t.useCallback((e=>r.dispatch(Mv({deviceId:e}))),[r]),toggleCameraEnabled:t.useCallback((e=>r.dispatch(Lv({enabled:e}))),[r]),toggleMicrophoneEnabled:t.useCallback((e=>r.dispatch(Av({enabled:e}))),[r])},store:r}},e.useRoomConnection=function(e,t=Ty){const[r]=n.useState((()=>{if(t.localMedia)return t.localMedia.store;const e=wy();return Nb({injectServices:e})})),[i,s]=n.useState(),[a,o]=n.useState(Ry);n.useEffect((()=>{const i=Bb(r,Cy,o),n=new URL(e),s=new URLSearchParams(n.search),a=t.roomKey||s.get("roomKey");return r.dispatch(ev({displayName:t.displayName||"Guest",localMediaOptions:t.localMedia?void 0:t.localMediaOptions,roomKey:a,roomUrl:e,userAgent:"browser-sdk:2.7.0",externalId:t.externalId||null})),()=>{i(),r.dispatch(tv())}}),[]),n.useEffect((()=>{r&&!i&&s((()=>e=>n.createElement(Sy,Object.assign({},e,{onResize:({stream:e,width:t,height:i})=>{r.dispatch(vb({streamId:e.id,width:t,height:i}))}}))))}),[r,i]);const c=n.useCallback((e=>r.dispatch(T_({text:e}))),[r]),d=n.useCallback((()=>r.dispatch(tb())),[r]),l=n.useCallback((e=>r.dispatch(h_({displayName:e}))),[r]),p=n.useCallback((e=>r.dispatch(Lv({enabled:e}))),[r]),u=n.useCallback((e=>r.dispatch(Av({enabled:e}))),[r]),h=n.useCallback((e=>r.dispatch(jb({participantId:e}))),[r]),m=n.useCallback((e=>r.dispatch(Mb({participantId:e}))),[r]),f=n.useCallback((()=>r.dispatch(D_())),[r]),g=n.useCallback((()=>r.dispatch(j_())),[r]),v=n.useCallback((()=>r.dispatch(O_())),[r]),_=n.useCallback((()=>r.dispatch(M_())),[r]);return{state:a,actions:{sendChatMessage:c,knock:d,lockRoom:n.useCallback((e=>r.dispatch(w_({locked:e}))),[r]),setDisplayName:l,toggleCamera:p,toggleMicrophone:u,acceptWaitingParticipant:h,rejectWaitingParticipant:m,startCloudRecording:f,startScreenshare:g,stopCloudRecording:v,stopScreenshare:_},components:{VideoView:i||Sy},_ref:r}},e}({},React);
|