@whereby.com/browser-sdk 3.8.1 → 3.9.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.
@@ -1,18 +1,18 @@
1
1
  var whereby=function(){"use strict";function e(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)}
2
- /*! (c) Andrea Giammarchi - ISC */var t={};try{t.WeakMap=WeakMap}catch(Wb){t.WeakMap=function(e,t){var r=t.defineProperty,i=t.hasOwnProperty,s=n.prototype;return s.delete=function(e){return this.has(e)&&delete e[this._]},s.get=function(e){return this.has(e)?e[this._]:void 0},s.has=function(e){return i.call(e,this._)},s.set=function(e,t){return r(e,this._,{configurable:!0,value:t}),this},n;function n(t){r(this,"_",{value:"_@ungap/weakmap"+e++}),t&&t.forEach(a,this)}function a(e){this.set(e[0],e[1])}}(Math.random(),Object)}var r=t.WeakMap,i={};try{i.Event=new Event(".").constructor}catch(Hb){try{i.Event=new CustomEvent(".").constructor}catch(Kb){i.Event=function(e,t){t||(t={});var r=document.createEvent("Event"),i=!!t.bubbles,s=!!t.cancelable;r.initEvent(e,i,s);try{r.bubbles=i,r.cancelable=s}catch(r){}return r}}}var s=i.Event,n={};
3
- /*! (c) Andrea Giammarchi - ISC */try{n.WeakSet=WeakSet}catch(Jb){!function(e){var t=new e,r=i.prototype;function i(r){t.set(this,new e),r&&r.forEach(this.add,this)}r.add=function(e){return t.get(this).set(e,1),this},r.delete=function(e){return t.get(this).delete(e)},r.has=function(e){return t.get(this).has(e)},n.WeakSet=i}(WeakMap)}var a,o,c,d=n.WeakSet,l="-"+Math.random().toFixed(6)+"%",p=!1;
4
- /*! (c) Andrea Giammarchi - ISC */try{a=document.createElement("template"),c="tabindex",(o="content")in a&&(a.innerHTML="<p "+c+'="'+l+'"></p>',a[o].childNodes[0].getAttribute(c)==l)||(l="_dt: "+l.slice(1,-1)+";",p=!0)}catch(Qb){}var u="\x3c!--"+l+"--\x3e",h=8,m=1,f=3,g=/^(?:plaintext|script|style|textarea|title|xmp)$/i,v=/^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i;
2
+ /*! (c) Andrea Giammarchi - ISC */var t={};try{t.WeakMap=WeakMap}catch(kS){t.WeakMap=function(e,t){var r=t.defineProperty,i=t.hasOwnProperty,s=n.prototype;return s.delete=function(e){return this.has(e)&&delete e[this._]},s.get=function(e){return this.has(e)?e[this._]:void 0},s.has=function(e){return i.call(e,this._)},s.set=function(e,t){return r(e,this._,{configurable:!0,value:t}),this},n;function n(t){r(this,"_",{value:"_@ungap/weakmap"+e++}),t&&t.forEach(a,this)}function a(e){this.set(e[0],e[1])}}(Math.random(),Object)}var r=t.WeakMap,i={};try{i.Event=new Event(".").constructor}catch(PS){try{i.Event=new CustomEvent(".").constructor}catch(DS){i.Event=function(e,t){t||(t={});var r=document.createEvent("Event"),i=!!t.bubbles,s=!!t.cancelable;r.initEvent(e,i,s);try{r.bubbles=i,r.cancelable=s}catch(r){}return r}}}var s=i.Event,n={};
3
+ /*! (c) Andrea Giammarchi - ISC */try{n.WeakSet=WeakSet}catch(IS){!function(e){var t=new e,r=i.prototype;function i(r){t.set(this,new e),r&&r.forEach(this.add,this)}r.add=function(e){return t.get(this).set(e,1),this},r.delete=function(e){return t.get(this).delete(e)},r.has=function(e){return t.get(this).has(e)},n.WeakSet=i}(WeakMap)}var a,o,c,d=n.WeakSet,l="-"+Math.random().toFixed(6)+"%",p=!1;
4
+ /*! (c) Andrea Giammarchi - ISC */try{a=document.createElement("template"),c="tabindex",(o="content")in a&&(a.innerHTML="<p "+c+'="'+l+'"></p>',a[o].childNodes[0].getAttribute(c)==l)||(l="_dt: "+l.slice(1,-1)+";",p=!0)}catch(ES){}var u="\x3c!--"+l+"--\x3e",h=8,m=1,f=3,g=/^(?:plaintext|script|style|textarea|title|xmp)$/i,v=/^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i;
5
5
  /*! (c) Andrea Giammarchi - ISC */
6
- function _(e){return e.join(u).replace(T,I).replace(R,P)}var y=" \\f\\n\\r\\t",b="[^"+y+"\\/>\"'=]+",w="["+y+"]+"+b,S="<([A-Za-z]+[A-Za-z0-9:._-]*)((?:",C="(?:\\s*=\\s*(?:'[^']*?'|\"[^\"]*?\"|<[^>]*?>|"+b.replace("\\/","")+"))?)",R=new RegExp(S+w+C+"+)(["+y+"]*/?>)","g"),T=new RegExp(S+w+C+"*)(["+y+"]*/>)","g"),k=new RegExp("("+w+"\\s*=\\s*)(['\"]?)"+u+"\\2","gi");function P(e,t,r,i){return"<"+t+r.replace(k,D)+i}function D(e,t,r){return t+(r||'"')+l+(r||'"')}function I(e,t,r){return v.test(t)?e:"<"+t+r+"></"+t+">"}const{isArray:E}=Array,{indexOf:O,slice:x}=[];var M=e=>({get:t=>e.get(t),set:(t,r)=>(e.set(t,r),r)});const j=(e,t)=>111===e.nodeType?1/t<0?t?(({firstChild:e,lastChild:t})=>{const r=document.createRange();return r.setStartAfter(e),r.setEndAfter(t),r.deleteContents(),e})(e):e.lastChild:t?e.valueOf():e.firstChild:e,L=e=>{const{childNodes:t}=e,{length:r}=t;if(r<2)return r?t[0]:e;const i=x.call(t,0);return{ELEMENT_NODE:1,nodeType:111,firstChild:i[0],lastChild:i[r-1],valueOf(){if(t.length!==r){let t=0;for(;t<r;)e.appendChild(i[t++])}return e}}};
6
+ function _(e){return e.join(u).replace(T,I).replace(R,P)}var b=" \\f\\n\\r\\t",y="[^"+b+"\\/>\"'=]+",S="["+b+"]+"+y,w="<([A-Za-z]+[A-Za-z0-9:._-]*)((?:",C="(?:\\s*=\\s*(?:'[^']*?'|\"[^\"]*?\"|<[^>]*?>|"+y.replace("\\/","")+"))?)",R=new RegExp(w+S+C+"+)(["+b+"]*/?>)","g"),T=new RegExp(w+S+C+"*)(["+b+"]*/>)","g"),k=new RegExp("("+S+"\\s*=\\s*)(['\"]?)"+u+"\\2","gi");function P(e,t,r,i){return"<"+t+r.replace(k,D)+i}function D(e,t,r){return t+(r||'"')+l+(r||'"')}function I(e,t,r){return v.test(t)?e:"<"+t+r+"></"+t+">"}const{isArray:E}=Array,{indexOf:O,slice:x}=[];var M=e=>({get:t=>e.get(t),set:(t,r)=>(e.set(t,r),r)});const j=(e,t)=>111===e.nodeType?1/t<0?t?(({firstChild:e,lastChild:t})=>{const r=document.createRange();return r.setStartAfter(e),r.setEndAfter(t),r.deleteContents(),e})(e):e.lastChild:t?e.valueOf():e.firstChild:e,L=e=>{const{childNodes:t}=e,{length:r}=t;if(r<2)return r?t[0]:e;const i=x.call(t,0);return{ELEMENT_NODE:1,nodeType:111,firstChild:i[0],lastChild:i[r-1],valueOf(){if(t.length!==r){let t=0;for(;t<r;)e.appendChild(i[t++])}return e}}};
7
7
  /*! (c) Andrea Giammarchi - ISC */
8
- var A=function(e){var t="fragment",r="template",i="content"in n(r)?function(e){var t=n(r);return t.innerHTML=e,t.content}:function(e){var i=n(t),a=n(r),o=null;if(/^[^\S]*?<(col(?:group)?|t(?:head|body|foot|r|d|h))/i.test(e)){var c=RegExp.$1;a.innerHTML="<table>"+e+"</table>",o=a.querySelectorAll(c)}else a.innerHTML=e,o=a.childNodes;return s(i,o),i};return function(e,t){return("svg"===t?a:i)(e)};function s(e,t){for(var r=t.length;r--;)e.appendChild(t[0])}function n(r){return r===t?e.createDocumentFragment():e.createElementNS("http://www.w3.org/1999/xhtml",r)}function a(e){var r=n(t),i=n("div");return i.innerHTML='<svg xmlns="http://www.w3.org/2000/svg">'+e+"</svg>",s(r,i.firstChild.childNodes),r}}(document),N=(e,t,r,i,s)=>{const n=r.length;let a=t.length,o=n,c=0,d=0,l=null;for(;c<a||d<o;)if(a===c){const t=o<n?d?i(r[d-1],-0).nextSibling:i(r[o-d],0):s;for(;d<o;)e.insertBefore(i(r[d++],1),t)}else if(o===d)for(;c<a;)l&&l.has(t[c])||e.removeChild(i(t[c],-1)),c++;else if(t[c]===r[d])c++,d++;else if(t[a-1]===r[o-1])a--,o--;else if(t[c]===r[o-1]&&r[d]===t[a-1]){const s=i(t[--a],-1).nextSibling;e.insertBefore(i(r[d++],1),i(t[c++],-1).nextSibling),e.insertBefore(i(r[--o],1),s),t[a]=r[o]}else{if(!l){l=new Map;let e=d;for(;e<o;)l.set(r[e],e++)}if(l.has(t[c])){const s=l.get(t[c]);if(d<s&&s<o){let n=c,p=1;for(;++n<a&&n<o&&l.get(t[n])===s+p;)p++;if(p>s-d){const n=i(t[c],0);for(;d<s;)e.insertBefore(i(r[d++],1),n)}else e.replaceChild(i(r[d++],1),i(t[c++],-1))}else c++}else e.removeChild(i(t[c++],-1))}return r},B=function(e,t,r,i,s){var n=s in e,a=e.createDocumentFragment();return a[t](e[i]("g")),a[t](e[i]("")),(n?e[s](a,!0):a[r](!0)).childNodes.length<2?function e(i,s){for(var n=i[r](),a=i.childNodes||[],o=a.length,c=0;s&&c<o;c++)n[t](e(a[c],s));return n}:n?e[s]:function(e,t){return e[r](!!t)}}(document,"appendChild","cloneNode","createTextNode","importNode"),F="".trim||function(){return String(this).replace(/^\s+|\s+/g,"")},$=p?function(e,t){var r=t.join(" ");return t.slice.call(e,0).sort((function(e,t){return r.indexOf(e.name)<=r.indexOf(t.name)?-1:1}))}:function(e,t){return t.slice.call(e,0)};function V(e,t){for(var r=t.length,i=0;i<r;)e=e.childNodes[t[i++]];return e}function U(e,t,r,i){for(var s=e.childNodes,n=s.length,a=0;a<n;){var o=s[a];switch(o.nodeType){case m:var c=i.concat(a);z(o,t,r,c),U(o,t,r,c);break;case h:var d=o.textContent;if(d===l)r.shift(),t.push(g.test(e.nodeName)?W(e,i):q(o,i.concat(a)));else switch(d.slice(0,2)){case"/*":if("*/"!==d.slice(-2))break;case"👻":e.removeChild(o),a--,n--}break;case f:g.test(e.nodeName)&&F.call(o.textContent)===u&&(r.shift(),t.push(W(e,i)))}a++}}function z(e,t,r,i){for(var s=e.attributes,n=[],a=[],o=$(s,r),c=o.length,d=0;d<c;){var h,m=o[d++],f=m.value===l;if(f||1<(h=m.value.split(u)).length){var g=m.name;if(n.indexOf(g)<0){n.push(g);var v=r.shift().replace(f?/^(?:|[\S\s]*?\s)(\S+?)\s*=\s*('|")?$/:new RegExp("^(?:|[\\S\\s]*?\\s)("+g+")\\s*=\\s*('|\")[\\S\\s]*","i"),"$1"),_=s[v]||s[v.toLowerCase()];if(f)t.push(G(_,i,v,null));else{for(var y=h.length-2;y--;)r.shift();t.push(G(_,i,v,h))}}a.push(m)}}d=0;for(var b=(0<(c=a.length)&&p&&!("ownerSVGElement"in e));d<c;){var w=a[d++];b&&(w.value=""),e.removeAttribute(w.name)}var S=e.nodeName;if(/^script$/i.test(S)){var C=document.createElement(S);for(c=s.length,d=0;d<c;)C.setAttributeNode(s[d++].cloneNode(!0));C.textContent=e.textContent,e.parentNode.replaceChild(C,e)}}function q(e,t){return{type:"any",node:e,path:t}}function G(e,t,r,i){return{type:"attr",node:e,path:t,name:r,sparse:i}}function W(e,t){return{type:"text",node:e,path:t}}var H=M(new r);function K(e,t){var r=(e.convert||_)(t),i=e.transform;i&&(r=i(r));var s=A(r,e.type);Z(s);var n=[];return U(s,n,t.slice(0),[]),{content:s,updates:function(r){for(var i=[],s=n.length,a=0,o=0;a<s;){var c=n[a++],d=V(r,c.path);switch(c.type){case"any":i.push({fn:e.any(d,[]),sparse:!1});break;case"attr":var l=c.sparse,p=e.attribute(d,c.name,c.node);null===l?i.push({fn:p,sparse:!1}):(o+=l.length-2,i.push({fn:p,sparse:!0,values:l}));break;case"text":i.push({fn:e.text(d),sparse:!1}),d.textContent=""}}return s+=o,function(){var e=arguments.length;if(s!==e-1)throw new Error(e-1+" values instead of "+s+"\n"+t.join("${value}"));for(var n=1,a=1;n<e;){var o=i[n-a];if(o.sparse){var c=o.values,d=c[0],l=1,p=c.length;for(a+=p-2;l<p;)d+=arguments[n++]+c[l++];o.fn(d)}else o.fn(arguments[n++])}return r}}}}var J=[];function Q(e){var t=J,r=Z;return function(i){return t!==i&&(r=function(e,t){var r=H.get(t)||H.set(t,K(e,t));return r.updates(B.call(document,r.content,!0))}(e,t=i)),r.apply(null,arguments)}}function Z(e){for(var t=e.childNodes,r=t.length;r--;){var i=t[r];1!==i.nodeType&&0===F.call(i.textContent).length&&e.removeChild(i)}}
9
- /*! (c) Andrea Giammarchi - ISC */var Y=function(){var e=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,t=/([^A-Z])([A-Z]+)/g;return function(e,t){return"ownerSVGElement"in e?function(e,t){var r;t?r=t.cloneNode(!0):(e.setAttribute("style","--hyper:style;"),r=e.getAttributeNode("style"));return r.value="",e.setAttributeNode(r),i(r,!0)}(e,t):i(e.style,!1)};function r(e,t,r){return t+"-"+r.toLowerCase()}function i(i,s){var n,a;return function(o){var c,d,l,p;switch(typeof o){case"object":if(o){if("object"===n){if(!s&&a!==o)for(d in a)d in o||(i[d]="")}else s?i.value="":i.cssText="";for(d in c=s?{}:i,o)l="number"!=typeof(p=o[d])||e.test(d)?p:p+"px",!s&&/^--/.test(d)?c.setProperty(d,l):c[d]=l;n="object",s?i.value=function(e){var i,s=[];for(i in e)s.push(i.replace(t,r),":",e[i],";");return s.join("")}(a=c):a=o;break}default:a!=o&&(n="string",a=o,s?i.value=o||"":i.cssText=o||"")}}}}();const X=(e,t)=>{let r,i=!0;const s=document.createAttributeNS(null,t);return t=>{r!==t&&(r=t,null==r?i||(e.removeAttributeNode(s),i=!0):(s.value=t,i&&(e.setAttributeNodeNS(s),i=!1)))}},ee=({dataset:e})=>t=>{for(const r in t){const i=t[r];null==i?delete e[r]:e[r]=i}},te=(e,t)=>"dataset"===t?ee(e):r=>{e[t]=r},re=/^(?:form|list)$/i,ie=(e,t)=>e.ownerDocument.createTextNode(t);function se(e){return this.type=e,Q(this)}function ne(e){return e(this)}se.prototype={attribute(e,t,r){const i="svg"===this.type;switch(t){case"class":if(i)return X(e,t);t="className";case"props":return te(e,t);case"aria":return(e=>t=>{for(const r in t){const i="role"===r?r:`aria-${r}`,s=t[r];null==s?e.removeAttribute(i):e.setAttribute(i,s)}})(e);case"style":return Y(e,r,i);case"ref":return(e=>t=>{"function"==typeof t?t(e):t.current=e})(e);case".dataset":return ee(e);default:return"."===t.slice(0,1)?te(e,t.slice(1)):"?"===t.slice(0,1)?((e,t,r)=>i=>{r!==!!i&&((r=!!i)?e.setAttribute(t,""):e.removeAttribute(t))})(e,t.slice(1)):"on"===t.slice(0,2)?((e,t)=>{let r,i=t.slice(2);return!(t in e)&&t.toLowerCase()in e&&(i=i.toLowerCase()),t=>{const s=E(t)?t:[t,!1];r!==s[0]&&(r&&e.removeEventListener(i,r,s[1]),(r=s[0])&&e.addEventListener(i,r,s[1]))}})(e,t):!(t in e)||i||re.test(t)?X(e,t):((e,t)=>{let r;return i=>{r!==i&&(r=i,e[t]!==i&&(null==i?(e[t]="",e.removeAttribute(t)):e[t]=i))}})(e,t)}},any(e,t){const{type:r}=this;let i,s=!1;const n=a=>{switch(typeof a){case"string":case"number":case"boolean":s?i!==a&&(i=a,t[0].textContent=a):(s=!0,i=a,t=N(e.parentNode,t,[ie(e,a)],j,e));break;case"function":n(a(e));break;case"object":case"undefined":if(null==a){s=!1,t=N(e.parentNode,t,[],j,e);break}default:if(s=!1,i=a,E(a))if(0===a.length)t.length&&(t=N(e.parentNode,t,[],j,e));else switch(typeof a[0]){case"string":case"number":case"boolean":n(String(a));break;case"function":n(a.map(ne,e));break;case"object":E(a[0])&&(a=a.concat.apply([],a));default:t=N(e.parentNode,t,a,j,e)}else"ELEMENT_NODE"in a?t=N(e.parentNode,t,11===a.nodeType?x.call(a.childNodes):[a],j,e):"text"in a?n(String(a.text)):"any"in a?n(a.any):"html"in a?t=N(e.parentNode,t,x.call(A([].concat(a.html).join(""),r).childNodes),j,e):"length"in a&&n(x.call(a))}};return n},text(e){let t;const r=i=>{if(t!==i){t=i;const s=typeof i;"object"===s&&i?"text"in i?r(String(i.text)):"any"in i?r(i.any):"html"in i?r([].concat(i.html).join("")):"length"in i&&r(x.call(i).join("")):"function"===s?r(i(e)):e.textContent=null==i?"":i}};return r}};const{create:ae,freeze:oe,keys:ce}=Object,de=se.prototype,le=M(new r),pe=e=>({html:he("html",e),svg:he("svg",e),render(t,r){const i="function"==typeof r?r():r,s=le.get(t)||le.set(t,ue()),n=i instanceof ge?me(e,s,i):i;return n!==s.wire&&(s.wire=n,t.textContent="",t.appendChild(n.valueOf())),t}}),ue=()=>({stack:[],entry:null,wire:null}),he=(e,t)=>{const i=M(new r);return s.for=(e,r)=>{const n=i.get(e)||i.set(e,ae(null));return n[r]||(n[r]=(e=>function(){return me(t,e,s.apply(null,arguments))})(ue()))},s.node=function(){return me(t,ue(),s.apply(null,arguments)).valueOf()},s;function s(){return new ge(e,_e.apply(null,arguments))}},me=(e,t,{type:r,template:i,values:s})=>{const{length:n}=s;fe(e,t,s,n);let{entry:a}=t;if(a&&a.template===i&&a.type===r)a.tag(i,...s);else{const n=new e(r);t.entry=a={type:r,template:i,tag:n,wire:L(n(i,...s))}}return a.wire},fe=(e,{stack:t},r,i)=>{for(let s=0;s<i;s++){const i=r[s];i instanceof ve?r[s]=me(e,t[s]||(t[s]=ue()),i):E(i)?fe(e,t[s]||(t[s]=ue()),i,i.length):t[s]=null}i<t.length&&t.splice(i)};function ge(e,t){this.type=e,this.template=t.shift(),this.values=t}oe(ge);const ve=ge;function _e(){let e=[],t=0,{length:r}=arguments;for(;t<r;)e.push(arguments[t++]);return e}pe(se);var ye="function"==typeof cancelAnimationFrame,be=ye?cancelAnimationFrame:clearTimeout,we=ye?requestAnimationFrame:setTimeout;function Se(e){var t,r,i,s,n;return o(),function(e,o,d){return i=e,s=o,n=d,r||(r=we(a)),--t<0&&c(!0),c};function a(){o(),i.apply(s,n||[])}function o(){t=e||1/0,r=ye?0:null}function c(e){var t=!!r;return t&&(be(r),e&&a()),t}}
10
- /*! (c) Andrea Giammarchi - ISC */let Ce=null;const Re=M(new WeakMap),Te=(e,t,r)=>{e.apply(t,r)},ke={async:!1,always:!1},Pe=(e,t)=>"function"==typeof t?t(e):t,De=(e,t,r,i)=>{const s=Ce.i++,{hook:n,args:a,stack:o,length:c}=Ce;s===c&&(Ce.length=o.push({}));const d=o[s];if(d.args=a,s===c){const s="function"==typeof r,{async:a,always:o}=(s?i:r)||i||ke;d.$=s?r(t):Pe(void 0,t),d._=a?Re.get(n)||Re.set(n,Se()):Te,d.f=t=>{const r=e(d.$,t);(o||d.$!==r)&&(d.$=r,d._(n,null,d.args))}}return[d.$,d.f]},Ie=new WeakMap;function Ee({hook:e}){return e===this.hook}const Oe=new WeakMap,xe=M(Oe),Me=()=>{},je=e=>(t,r)=>{const i=Ce.i++,{hook:s,after:n,stack:a,length:o}=Ce;if(i<o){const s=a[i],{update:o,values:c,stop:d}=s;if(!r||r.some(Fe,c)){s.values=r,e&&d(e);const{clean:i}=s;i&&(s.clean=null,i());const a=()=>{s.clean=t()};e?o(a):n.push(a)}}else{const i=e?Se():Me,o={clean:null,update:i,values:r,stop:Me};Ce.length=a.push(o),(xe.get(s)||xe.set(s,[])).push(o);const c=()=>{o.clean=t()};e?o.stop=i(c):n.push(c)}},Le=e=>{(Oe.get(e)||[]).forEach((e=>{const{clean:t,stop:r}=e;r(),t&&(e.clean=null,t())}))};Oe.has.bind(Oe);const Ae=je(!0),Ne=je(!1),Be=(e,t)=>{const r=Ce.i++,{stack:i,length:s}=Ce;return r===s?Ce.length=i.push({$:e(),_:t}):t&&!t.some(Fe,i[r]._)||(i[r]={$:e(),_:t}),i[r].$};function Fe(e,t){return e!==this[t]}let $e=null;try{$e=new{o(){}}.o}catch(qb){}let Ve=e=>class extends e{};if($e){const{getPrototypeOf:Zb,setPrototypeOf:Yb}=Object,{construct:Xb}="object"==typeof Reflect?Reflect:{construct(e,t,r){const i=[null];for(let e=0;e<t.length;e++)i.push(t[e]);const s=e.bind.apply(e,i);return Yb(new s,r.prototype)}};Ve=function(e,t){function r(){return Xb(t?Zb(e):e,arguments,r)}return Yb(r.prototype,e.prototype),Yb(r,e)}}const Ue={map:{},re:null},ze=e=>new RegExp(`<(/)?(${e.join("|")})([^A-Za-z0-9:._-])`,"g");let qe=null;const Ge=(e,t)=>{const{map:r,re:i}=qe||t;return e.replace(i,((e,t,i,s)=>{const{tagName:n,is:a,element:o}=r[i];return o?t?`</${a}>`:`<${a}${s}`:t?`</${n}>`:`<${n} is="${a}"${s}`}))},We=({tagName:e,is:t,element:r})=>r?t:`${e}[is="${t}"]`,He=()=>qe,Ke=e=>{qe=e},Je={useCallback:(e,t)=>Be((()=>e),t),useContext:e=>{const{hook:t,args:r}=Ce,i=Ie.get(e),s={hook:t,args:r};return i.some(Ee,s)||i.push(s),e.value},useEffect:Ae,useLayoutEffect:Ne,useMemo:Be,useReducer:De,useRef:e=>{const t=Ce.i++,{stack:r,length:i}=Ce;return t===i&&(Ce.length=r.push({current:e})),r[t]},useState:(e,t)=>De(Pe,e,void 0,t)},{render:Qe,html:Ze,svg:Ye}=(e=>{const t=ae(de);return ce(e).forEach((r=>{t[r]=e[r](t[r]||("convert"===r?_:String))})),r.prototype=t,pe(r);function r(){return se.apply(this,arguments)}})({transform:()=>e=>Ge(e,Ue)}),Xe="_🔥",{defineProperties:et}=Object,tt=new r,rt=new r,it=new r,st=new d,nt=!0,at="attributeChangedCallback",ot="connectedCallback",ct=`dis${ot}`,dt=(e,t,r)=>{if(r in e){const i=e[r];t[r]={configurable:nt,value(){return wt.call(this),i.apply(this,arguments)}}}else t[r]={configurable:nt,value:wt}},lt=e=>{const{prototype:t}=e,i=[],s={html:{configurable:nt,get:_t},svg:{configurable:nt,get:yt}};if(s[Xe]={value:{events:i,info:null}},"handleEvent"in t||(s.handleEvent={configurable:nt,value:bt}),"render"in t&&t.render.length){const{oninit:e}=t;et(t,{oninit:{configurable:nt,value(){const t=(e=>{const t=[];return function r(){const i=Ce,s=[];Ce={hook:r,args:arguments,stack:t,i:0,length:t.length,after:s};try{return e.apply(null,arguments)}finally{Ce=i;for(let e=0,{length:t}=s;e<t;e++)s[e]()}}})(this.render.bind(this,Je));et(this,{render:{configurable:nt,value:t}}),this.addEventListener("disconnected",Le.bind(null,t),!1),e&&e.apply(this,arguments)}}})}"oninit"in t&&(i.push("init"),dt(t,s,"render")),dt(t,s,at),dt(t,s,ot),dt(t,s,ct),[[at,"onattributechanged",St],[ot,"onconnected",Ct],[ct,"ondisconnected",Tt],[ot,"render",Rt]].forEach((([e,r,n])=>{if(!(e in t)&&r in t)if("render"!==r&&i.push(r.slice(2)),e in s){const t=s[e].value;s[e]={configurable:nt,value(){return t.apply(this,arguments),n.apply(this,arguments)}}}else s[e]={configurable:nt,value:n}}));const n=e.booleanAttributes||[];n.forEach((e=>{e in t||(s[e]={configurable:nt,get(){return this.hasAttribute(e)},set(t){t&&"false"!==t?this.setAttribute(e,t):this.removeAttribute(e)}})}));const a=e.observedAttributes||[];a.forEach((e=>{e in t||(s[e]={configurable:nt,get(){return this.getAttribute(e)},set(t){null==t?this.removeAttribute(e):this.setAttribute(e,t)}})}));(e.mappedAttributes||[]).forEach((e=>{const n=new r,a="on"+e in t;a&&i.push(e),s[e]={configurable:nt,get(){return n.get(this)},set(t){if(n.set(this,t),a){const r=pt(e);if(r.detail=t,st.has(this))this.dispatchEvent(r);else{const e=it.get(this);e?e.push(r):it.set(this,[r])}}}}})),et(t,s);const o=n.concat(a);return o.length?et(e,{observedAttributes:{configurable:nt,get:()=>o}}):e},pt=e=>new s(e),ut=(...e)=>new ve("html",e);ut.for=Ze.for;const ht=(...e)=>new ve("svg",e);ht.for=Ye.for;const mt=(e,t,i)=>{const s=ft(e,t,new r);return i.set(e,s),s},ft=(e,t,r)=>(i,...s)=>{const n=r.get(i)||((e,t,{info:r})=>{const i=r?Ge(t.join(Xe),r).split(Xe):t;return e.set(t,i),i})(r,i,e[Xe]);return Qe(e,(()=>t(n,...s)))};function gt(e){this.addEventListener(e,this)}function vt(e){this.dispatchEvent(e)}function _t(){return tt.get(this)||mt(this,ut,tt)}function yt(){return rt.get(this)||mt(this,ht,rt)}function bt(e){this[`on${e.type}`](e)}function wt(){if(!st.has(this)){st.add(this),this[Xe].events.forEach(gt,this),this.dispatchEvent(pt("init"));const e=it.get(this);e&&(it.delete(this),e.forEach(vt,this))}}function St(e,t,r){const i=pt("attributechanged");i.attributeName=e,i.oldValue=t,i.newValue=r,this.dispatchEvent(i)}function Ct(){this.dispatchEvent(pt("connected"))}function Rt(){this.render()}function Tt(){this.dispatchEvent(pt("disconnected"))}const{create:kt,defineProperty:Pt,defineProperties:Dt,getOwnPropertyNames:It,getOwnPropertySymbols:Et,getOwnPropertyDescriptor:Ot,keys:xt}=Object,Mt={element:HTMLElement},jt=new r;new r;const Lt=new r;new r;const At=e=>{const t=kt(null),r=kt(null),i={prototype:r,statics:t};return It(e).concat(Et(e)).forEach((i=>{const s=Ot(e,i);switch(s.enumerable=!1,i){case"extends":i="tagName";case"contains":case"includes":case"name":case"booleanAttributes":case"mappedAttributes":case"observedAttributes":case"style":case"tagName":t[i]=s;break;default:r[i]=s}})),i},Nt=(e,t,r)=>{if(!/^([A-Z][A-Za-z0-9_]*)(<([A-Za-z0-9:._-]+)>|:([A-Za-z0-9:._-]+))?$/.test(e))throw"Invalid name";const{$1:i,$3:s,$4:n}=RegExp;let a=s||n||t.tagName||t.extends||"element";const o="fragment"===a;if(o)a="element";else if(!/^[A-Za-z0-9:._-]+$/.test(a))throw"Invalid tag";let c="",d="";a.indexOf("-")<0?(c=i.replace(/(([A-Z0-9])([A-Z0-9][a-z]))|(([a-z])([A-Z]))/g,"$2$5-$3$6").toLowerCase()+r,c.indexOf("-")<0&&(d="-heresy")):(c=a+r,a="element");const l=c+d;if(customElements.get(l))throw`Duplicated ${l} definition`;const p=Ve("object"==typeof t?Lt.get(t)||((e,t)=>{const{statics:r,prototype:i}=At(e),s=Ve(Mt[t]||(Mt[t]=document.createElement(t).constructor),!1);return Dt(s.prototype,i),Dt(s,r),Lt.set(e,lt(s)),s})(t,a):jt.get(t)||(e=>{const t=Ve(e,!1);return jt.set(e,lt(t)),t})(t),!0),u="element"===a;if(Pt(p,"new",{value:u?()=>document.createElement(l):()=>document.createElement(a,{is:l})}),Pt(p.prototype,"is",{value:l}),""===r){const e=(e=>{const{length:t}=e;let r=0,i=0;for(;i<t;)r=(r<<5)-r+e.charCodeAt(i++),r&=r;return r.toString(36)})(c.toUpperCase());Ue.map[i]=Bt(p,a,l,{id:e,i:0}),Ue.re=ze(xt(Ue.map))}if(o){const{render:e}=p.prototype;Pt(p.prototype,"render",{configurable:!0,value(){if(e&&e.apply(this,arguments),this.parentNode){const{firstChild:e}=this;let t=null;if(e){const r=document.createRange();r.setStartBefore(e),r.setEndAfter(this.lastChild),t=r.extractContents(),this.parentNode.replaceChild(t,this)}}}})}const h=[l,p];return u||h.push({extends:a}),customElements.define(...h),{Class:p,is:l,name:i,tagName:a}},Bt=(e,t,r,i)=>{const{prototype:s}=e,n=((e,t)=>({tagName:e,is:t,element:"element"===e}))(t,r),a=[We(n)],o=e.includes||e.contains;if(o){const e={};xt(o).forEach((t=>{const r=`-${i.id}-${i.i++}`,{Class:s,is:n,name:c,tagName:d}=Nt(t,o[t],r);a.push(We(e[c]=Bt(s,d,n,i)))}));const t=ze(xt(e)),{events:r}=s[Xe],n={events:r,info:{map:e,re:t}};if(Pt(s,Xe,{value:n}),"render"in s){const{render:e}=s,{info:t}=n;Pt(s,"render",{configurable:!0,value(){const r=He();Ke(t);const i=e.apply(this,arguments);return Ke(r),i}})}}return"style"in e&&(e=>{if((e||"").length){const t=document.createElement("style");t.type="text/css",t.styleSheet?t.styleSheet.cssText=e:t.appendChild(document.createTextNode(e));const r=document.head||document.querySelector("head");r.insertBefore(t,r.lastChild)}})(e.style(...a)),n};var Ft=()=>Math.random().toString(36).substring(7).split("").join("."),$t={INIT:`@@redux/INIT${Ft()}`,REPLACE:`@@redux/REPLACE${Ft()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${Ft()}`};function Vt(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 Ut(e){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(e);try{throw new Error(e)}catch(e){}}function zt(e){return Vt(e)&&"type"in e&&"string"==typeof e.type}var qt=Symbol.for("immer-nothing"),Gt=Symbol.for("immer-draftable"),Wt=Symbol.for("immer-state"),Ht=[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 Kt(e,...t){{const r=Ht[e],i="function"==typeof r?r.apply(null,t):r;throw new Error(`[Immer] ${i}`)}}var Jt=Object.getPrototypeOf;function Qt(e){return!!e&&!!e[Wt]}function Zt(e){return!!e&&(Xt(e)||Array.isArray(e)||!!e[Gt]||!!e.constructor?.[Gt]||sr(e)||nr(e))}var Yt=Object.prototype.constructor.toString();function Xt(e){if(!e||"object"!=typeof e)return!1;const t=Jt(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)===Yt}function er(e,t){0===tr(e)?Object.entries(e).forEach((([r,i])=>{t(r,i,e)})):e.forEach(((r,i)=>t(i,r,e)))}function tr(e){const t=e[Wt];return t?t.type_:Array.isArray(e)?1:sr(e)?2:nr(e)?3:0}function rr(e,t){return 2===tr(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function ir(e,t,r){const i=tr(e);2===i?e.set(t,r):3===i?e.add(r):e[t]=r}function sr(e){return e instanceof Map}function nr(e){return e instanceof Set}function ar(e){return e.copy_||e.base_}function or(e,t){if(sr(e))return new Map(e);if(nr(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);if(!t&&Xt(e)){if(!Jt(e)){const t=Object.create(null);return Object.assign(t,e)}return{...e}}const r=Object.getOwnPropertyDescriptors(e);delete r[Wt];let i=Reflect.ownKeys(r);for(let t=0;t<i.length;t++){const s=i[t],n=r[s];!1===n.writable&&(n.writable=!0,n.configurable=!0),(n.get||n.set)&&(r[s]={configurable:!0,writable:!0,enumerable:n.enumerable,value:e[s]})}return Object.create(Jt(e),r)}function cr(e,t=!1){return lr(e)||Qt(e)||!Zt(e)||(tr(e)>1&&(e.set=e.add=e.clear=e.delete=dr),Object.freeze(e),t&&er(e,((e,t)=>cr(t,!0)))),e}function dr(){Kt(2)}function lr(e){return Object.isFrozen(e)}var pr,ur={};function hr(e){const t=ur[e];return t||Kt(0,e),t}function mr(){return pr}function fr(e,t){t&&(hr("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function gr(e){vr(e),e.drafts_.forEach(yr),e.drafts_=null}function vr(e){e===pr&&(pr=e.parent_)}function _r(e){return pr={drafts_:[],parent_:pr,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function yr(e){const t=e[Wt];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function br(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];return void 0!==e&&e!==r?(r[Wt].modified_&&(gr(t),Kt(4)),Zt(e)&&(e=wr(t,e),t.parent_||Cr(t,e)),t.patches_&&hr("Patches").generateReplacementPatches_(r[Wt].base_,e,t.patches_,t.inversePatches_)):e=wr(t,r,[]),gr(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==qt?e:void 0}function wr(e,t,r){if(lr(t))return t;const i=t[Wt];if(!i)return er(t,((s,n)=>Sr(e,i,t,s,n,r))),t;if(i.scope_!==e)return t;if(!i.modified_)return Cr(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;const t=i.copy_;let s=t,n=!1;3===i.type_&&(s=new Set(t),t.clear(),n=!0),er(s,((s,a)=>Sr(e,i,t,s,a,r,n))),Cr(e,t,!1),r&&e.patches_&&hr("Patches").generatePatches_(i,r,e.patches_,e.inversePatches_)}return i.copy_}function Sr(e,t,r,i,s,n,a){if(s===r&&Kt(5),Qt(s)){const a=wr(e,s,n&&t&&3!==t.type_&&!rr(t.assigned_,i)?n.concat(i):void 0);if(ir(r,i,a),!Qt(a))return;e.canAutoFreeze_=!1}else a&&r.add(s);if(Zt(s)&&!lr(s)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;wr(e,s),t&&t.scope_.parent_||Cr(e,s)}}function Cr(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&cr(t,r)}var Rr={get(e,t){if(t===Wt)return e;const r=ar(e);if(!rr(r,t))return function(e,t,r){const i=Pr(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_||!Zt(i)?i:i===kr(e.base_,t)?(Ir(e),e.copy_[t]=Er(i,e)):i},has:(e,t)=>t in ar(e),ownKeys:e=>Reflect.ownKeys(ar(e)),set(e,t,r){const i=Pr(ar(e),t);if(i?.set)return i.set.call(e.draft_,r),!0;if(!e.modified_){const i=kr(ar(e),t),a=i?.[Wt];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_[t]=!1,!0;if(((s=r)===(n=i)?0!==s||1/s==1/n:s!=s&&n!=n)&&(void 0!==r||rr(e.base_,t)))return!0;Ir(e),Dr(e)}var s,n;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!==kr(e.base_,t)||t in e.base_?(e.assigned_[t]=!1,Ir(e),Dr(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const r=ar(e),i=Reflect.getOwnPropertyDescriptor(r,t);return i?{writable:!0,configurable:1!==e.type_||"length"!==t,enumerable:i.enumerable,value:r[t]}:i},defineProperty(){Kt(11)},getPrototypeOf:e=>Jt(e.base_),setPrototypeOf(){Kt(12)}},Tr={};function kr(e,t){const r=e[Wt];return(r?ar(r):e)[t]}function Pr(e,t){if(!(t in e))return;let r=Jt(e);for(;r;){const e=Object.getOwnPropertyDescriptor(r,t);if(e)return e;r=Jt(r)}}function Dr(e){e.modified_||(e.modified_=!0,e.parent_&&Dr(e.parent_))}function Ir(e){e.copy_||(e.copy_=or(e.base_,e.scope_.immer_.useStrictShallowCopy_))}er(Rr,((e,t)=>{Tr[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}})),Tr.deleteProperty=function(e,t){return isNaN(parseInt(t))&&Kt(13),Tr.set.call(this,e,t,void 0)},Tr.set=function(e,t,r){return"length"!==t&&isNaN(parseInt(t))&&Kt(14),Rr.set.call(this,e[0],t,r,e[0])};function Er(e,t){const r=sr(e)?hr("MapSet").proxyMap_(e,t):nr(e)?hr("MapSet").proxySet_(e,t):function(e,t){const r=Array.isArray(e),i={type_:r?1:0,scope_:t?t.scope_:mr(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let s=i,n=Rr;r&&(s=[i],n=Tr);const{revoke:a,proxy:o}=Proxy.revocable(s,n);return i.draft_=o,i.revoke_=a,o}(e,t);return(t?t.scope_:mr()).drafts_.push(r),r}function Or(e){return Qt(e)||Kt(10,e),xr(e)}function xr(e){if(!Zt(e)||lr(e))return e;const t=e[Wt];let r;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=or(e,t.scope_.immer_.useStrictShallowCopy_)}else r=or(e,!0);return er(r,((e,t)=>{ir(r,e,xr(t))})),t&&(t.finalized_=!1),r}var Mr=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,...s){return i.produce(e,(e=>t.call(this,e,...s)))}}let i;if("function"!=typeof t&&Kt(6),void 0!==r&&"function"!=typeof r&&Kt(7),Zt(e)){const s=_r(this),n=Er(e,void 0);let a=!0;try{i=t(n),a=!1}finally{a?gr(s):vr(s)}return fr(s,r),br(i,s)}if(!e||"object"!=typeof e){if(i=t(e),void 0===i&&(i=e),i===qt&&(i=void 0),this.autoFreeze_&&cr(i,!0),r){const t=[],s=[];hr("Patches").generateReplacementPatches_(e,i,t,s),r(t,s)}return i}Kt(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){Zt(e)||Kt(8),Qt(e)&&(e=Or(e));const t=_r(this),r=Er(e,void 0);return r[Wt].isManual_=!0,vr(t),r}finishDraft(e,t){const r=e&&e[Wt];r&&r.isManual_||Kt(9);const{scope_:i}=r;return fr(i,t),br(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=hr("Patches").applyPatches_;return Qt(e)?i(e,t):this.produce(e,(e=>i(e,t)))}},jr=Mr.produce;Mr.produceWithPatches.bind(Mr),Mr.setAutoFreeze.bind(Mr),Mr.setUseStrictShallowCopy.bind(Mr),Mr.applyPatches.bind(Mr),Mr.createDraft.bind(Mr),Mr.finishDraft.bind(Mr);var Lr=(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})}}},Ar=(e,t,r)=>{const{memoize:i,memoizeOptions:s}=t,{inputSelectorResults:n,inputSelectorResultsCopy:a}=e,o=i((()=>({})),...s);if(!(o.apply(null,n)===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:n,secondInputs:a,stack:e})}},Nr={inputStabilityCheck:"once",identityFunctionCheck:"once"};var Br=e=>Array.isArray(e)?e:[e];function Fr(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 $r(e,t){const r=[],{length:i}=e;for(let s=0;s<i;s++)r.push(e[s].apply(null,t));return r}var Vr="undefined"!=typeof WeakRef?WeakRef:class{constructor(e){this.value=e}deref(){return this.value}},Ur=0,zr=1;function qr(){return{s:Ur,v:void 0,o:null,p:null}}function Gr(e,t={}){let r=qr();const{resultEqualityCheck:i}=t;let s,n=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=qr(),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=qr(),e.set(r,t)):t=i}}const o=t;let c;if(t.s===zr?c=t.v:(c=e.apply(null,arguments),n++),o.s=zr,i){const e=s?.deref?.()??s;null!=e&&i(e,c)&&(c=e,0!==n&&n--);s="object"==typeof c&&null!==c||"function"==typeof c?new Vr(c):c}return o.v=c,c}return a.clearCache=()=>{r=qr(),a.resetResultsCount()},a.resultsCount=()=>n,a.resetResultsCount=()=>{n=0},a}function Wr(e,...t){const r="function"==typeof e?{memoize:e,memoizeOptions:t}:e,i=(...e)=>{let t,i=0,s=0,n={},a=e.pop();"object"==typeof a&&(n=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,...n},{memoize:c,memoizeOptions:d=[],argsMemoize:l=Gr,argsMemoizeOptions:p=[],devModeChecks:u={}}=o,h=Br(d),m=Br(p),f=Fr(e),g=c((function(){return i++,a.apply(null,arguments)}),...h);let v=!0;const _=l((function(){s++;const e=$r(f,arguments);t=g.apply(null,e);{const{identityFunctionCheck:r,inputStabilityCheck:i}=((e,t)=>{const{identityFunctionCheck:r,inputStabilityCheck:i}={...Nr,...t};return{identityFunctionCheck:{shouldRun:"always"===r||"once"===r&&e,run:Lr},inputStabilityCheck:{shouldRun:"always"===i||"once"===i&&e,run:Ar}}})(v,u);if(r.shouldRun&&r.run(a,e,t),i.shouldRun){const t=$r(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:()=>s,resetDependencyRecomputations:()=>{s=0},lastResult:()=>t,recomputations:()=>i,resetRecomputations:()=>{i=0},memoize:c,argsMemoize:l})};return Object.assign(i,{withTypes:()=>i}),i}var Hr=Wr(Gr),Kr=Object.assign(((e,t=Hr)=>{!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:()=>Kr});((...e)=>{const t=Wr(...e),r=Object.assign(((...e)=>{const r=t(...e),i=(e,...t)=>r(Qt(e)?Or(e):e,...t);return Object.assign(i,r),i}),{withTypes:()=>r})})(Gr);function Jr(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=>zt(t)&&t.type===e,r}function Qr(e,t){for(const r of e)if(t(r))return r}function Zr(e){return Zt(e)?jr(e,(()=>{})):e}function Yr(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 Xr(e){const t={},r=[];let i;const s={addCase(e,n){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]=n,s},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}),s},addDefaultCase(e){if(i)throw new Error("`builder.addDefaultCase` can only be called once");return i=e,s}};return e(s),[t,r,i]}var ei=(e=21)=>{let t="",r=e;for(;r--;)t+="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"[64*Math.random()|0];return t};function ti(...e){return t=>e.some((e=>((e,t)=>{return(r=e)&&"function"==typeof r.match?e.match(t):e(t);var r})(e,t)))}var ri=["name","message","stack","code"],ii=class{constructor(e,t){this.payload=e,this.meta=t}_type},si=class{constructor(e,t){this.payload=e,this.meta=t}_type},ni=e=>{if("object"==typeof e&&null!==e){const t={};for(const r of ri)"string"==typeof e[r]&&(t[r]=e[r]);return t}return{message:String(e)}},ai=(()=>{function e(e,t,r){const i=Jr(e+"/fulfilled",((e,t,r,i)=>({payload:e,meta:{...i||{},arg:r,requestId:t,requestStatus:"fulfilled"}}))),s=Jr(e+"/pending",((e,t,r)=>({payload:void 0,meta:{...r||{},arg:t,requestId:e,requestStatus:"pending"}}))),n=Jr(e+"/rejected",((e,t,i,s,n)=>({payload:s,error:(r&&r.serializeError||ni)(e||"Rejected"),meta:{...n||{},arg:i,requestId:t,rejectedWithValue:!!s,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):ei(),l=new AbortController;let p,u;function h(e){u=e,l.abort()}const m=async function(){let m;try{let n=r?.condition?.(e,{getState:o,extra:c});if(function(e){return null!==e&&"object"==typeof e&&"function"==typeof e.then}(n)&&(n=await n),!1===n||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(s(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 ii(e,t),fulfillWithValue:(e,t)=>new si(e,t)})).then((t=>{if(t instanceof ii)throw t;return t instanceof si?i(t.payload,d,e,t.meta):i(t,d,e)}))])}catch(t){m=t instanceof ii?n(null,d,e,t.payload,t.meta):n(t,d,e)}finally{p&&l.signal.removeEventListener("abort",p)}return r&&!r.dispatchConditionRejection&&n.match(m)&&m.meta.condition||a(m),m}();return Object.assign(m,{abort:h,requestId:d,arg:e,unwrap:()=>m.then(oi)})}}),{pending:s,rejected:n,fulfilled:i,settled:ti(n,i),typePrefix:e})}return e.withTypes=()=>e,e})();function oi(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}var ci=Symbol.for("rtk-slice-createasyncthunk");function di(e,t){return`${e}/${t}`}function li({creators:e}={}){const t=e?.asyncThunk?.[ci];return function(e){const{name:r,reducerPath:i=r}=e;if(!r)throw new Error("`name` is a required option for createSlice");const s=("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)||{},n=Object.keys(s),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?Xr(e.extraReducers):[e.extraReducers],s={...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,s,n]=Xr(t);if("function"==typeof e)r=()=>Zr(e());else{const t=Zr(e);r=()=>t}function a(e=r(),t){let a=[i[t.type],...s.filter((({matcher:e})=>e(t))).map((({reducer:e})=>e))];return 0===a.filter((e=>!!e)).length&&(a=[n]),a.reduce(((e,r)=>{if(r){if(Qt(e)){const i=r(e,t);return void 0===i?e:i}if(Zt(e))return jr(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 s)e.addCase(t,s[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)}))}n.forEach((i=>{const n=s[i],a={reducerName:i,type:di(r,i),createNotation:"function"==typeof e.reducers};!function(e){return"asyncThunk"===e._reducerDefinitionType}(n)?function({type:e,reducerName:t,createNotation:r},i,s){let n,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.");n=i.reducer,a=i.prepare}else n=i;s.addCase(e,n).exposeCaseReducer(t,n).exposeAction(t,a?Jr(e,a):Jr(e))}(a,n,o):function({type:e,reducerName:t},r,i,s){if(!s)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:n,fulfilled:a,pending:o,rejected:c,settled:d,options:l}=r,p=s(e,n,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||hi,pending:o||hi,rejected:c||hi,settled:d||hi})}(a,n,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 s(t=d){const i=Yr(l,r,{insert:()=>new WeakMap});return Yr(i,t,{insert:()=>{const i={};for(const[s,n]of Object.entries(e.selectors??{}))i[s]=pi(n,t,h,r);return i}})}return{reducerPath:t,getSelectors:s,get selectors(){return s(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 s=t??i;return e.inject({reducerPath:s,reducer:u},r),{...f,...m(s,!0)}}};return f}}function pi(e,t,r,i){function s(s,...n){let a=t(s);if(void 0===a){if(!i)throw new Error("selectState returned undefined for an uninjected slice reducer");a=r()}return e(a,...n)}return s.unwrapped=e,s}var ui=li();function hi(){}var mi="listener",fi="completed",gi="cancelled",vi=`task-${gi}`,_i=`task-${fi}`,yi=`${mi}-${gi}`,bi=`${mi}-${fi}`,wi=class{constructor(e){this.code=e,this.message=`task ${gi} (reason: ${e})`}name="TaskAbortError";message},Si=(e,t)=>{if("function"!=typeof e)throw new Error(`${t} is not a function`)},Ci=()=>{},Ri=(e,t=Ci)=>(e.catch(t),e),Ti=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),ki=(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))},Pi=e=>{if(e.aborted){const{reason:t}=e;throw new wi(t)}};function Di(e,t){let r=Ci;return new Promise(((i,s)=>{const n=()=>s(new wi(e.reason));e.aborted?n():(r=Ti(e,n),t.finally((()=>r())).then(i,s))})).finally((()=>{r=Ci}))}var Ii=e=>t=>Ri(Di(e,t).then((t=>(Pi(e),t)))),Ei=e=>{const t=Ii(e);return e=>t(new Promise((t=>setTimeout(t,e))))},{assign:Oi}=Object,xi={},Mi="listenerMiddleware",ji=(e,t)=>(r,i)=>{Si(r,"taskExecutor");const s=new AbortController;var n;n=s,Ti(e,(()=>ki(n,e.reason)));const a=(async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(e){return{status:e instanceof wi?"cancelled":"rejected",error:e}}finally{t?.()}})((async()=>{Pi(e),Pi(s.signal);const t=await r({pause:Ii(s.signal),delay:Ei(s.signal),signal:s.signal});return Pi(s.signal),t}),(()=>ki(s,_i)));return i?.autoJoin&&t.push(a.catch(Ci)),{result:Ii(e)(a),cancel(){ki(s,vi)}}},Li=(e,t)=>(r,i)=>Ri((async(r,i)=>{Pi(t);let s=()=>{};const n=[new Promise(((t,i)=>{let n=e({predicate:r,effect:(e,r)=>{r.unsubscribe(),t([e,r.getState(),r.getOriginalState()])}});s=()=>{n(),i()}}))];null!=i&&n.push(new Promise((e=>setTimeout(e,i,null))));try{const e=await Di(t,Promise.race(n));return Pi(t),e}finally{s()}})(r,i)),Ai=e=>{let{type:t,actionCreator:r,matcher:i,predicate:s,effect:n}=e;if(t)s=Jr(t).match;else if(r)t=r.type,s=r.match;else if(i)s=i;else if(!s)throw new Error("Creating or removing a listener requires one of the known fields for matching an action");return Si(n,"options.listener"),{predicate:s,type:t,effect:n}},Ni=Object.assign((e=>{const{type:t,predicate:r,effect:i}=Ai(e);return{id:ei(),effect:i,type:t,predicate:r,pending:new Set,unsubscribe:()=>{throw new Error("Unsubscribe not initialized")}}}),{withTypes:()=>Ni}),Bi=e=>{e.pending.forEach((e=>{ki(e,yi)}))},Fi=(e,t,r)=>{try{e(t,r)}catch(e){setTimeout((()=>{throw e}),0)}},$i=Object.assign(Jr(`${Mi}/add`),{withTypes:()=>$i}),Vi=Jr(`${Mi}/removeAll`),Ui=Object.assign(Jr(`${Mi}/remove`),{withTypes:()=>Ui}),zi=(...e)=>{console.error(`${Mi}/error`,...e)};function qi(){}function Gi(){Gi.init.call(this)}function Wi(e){return void 0===e._maxListeners?Gi.defaultMaxListeners:e._maxListeners}function Hi(e,t,r,i){var s,n,a,o;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((n=e._events)?(n.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),n=e._events),a=n[t]):(n=e._events=new qi,e._eventsCount=0),a){if("function"==typeof a?a=n[t]=i?[r,a]:[a,r]:i?a.unshift(r):a.push(r),!a.warned&&(s=Wi(e))&&s>0&&a.length>s){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=n[t]=r,++e._eventsCount;return e}function Ki(e,t,r){var i=!1;function s(){e.removeListener(t,s),i||(i=!0,r.apply(e,arguments))}return s.listener=r,s}function Ji(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 Qi(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}qi.prototype=Object.create(null),Gi.EventEmitter=Gi,Gi.usingDomains=!1,Gi.prototype.domain=void 0,Gi.prototype._events=void 0,Gi.prototype._maxListeners=void 0,Gi.defaultMaxListeners=10,Gi.init=function(){this.domain=null,Gi.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new qi,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Gi.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},Gi.prototype.getMaxListeners=function(){return Wi(this)},Gi.prototype.emit=function(e){var t,r,i,s,n,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,s=Qi(e,i),n=0;n<i;++n)s[n].call(r)}(r,l,this);break;case 2:!function(e,t,r,i){if(t)e.call(r,i);else for(var s=e.length,n=Qi(e,s),a=0;a<s;++a)n[a].call(r,i)}(r,l,this,arguments[1]);break;case 3:!function(e,t,r,i,s){if(t)e.call(r,i,s);else for(var n=e.length,a=Qi(e,n),o=0;o<n;++o)a[o].call(r,i,s)}(r,l,this,arguments[1],arguments[2]);break;case 4:!function(e,t,r,i,s,n){if(t)e.call(r,i,s,n);else for(var a=e.length,o=Qi(e,a),c=0;c<a;++c)o[c].call(r,i,s,n)}(r,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(s=new Array(i-1),n=1;n<i;n++)s[n-1]=arguments[n];!function(e,t,r,i){if(t)e.apply(r,i);else for(var s=e.length,n=Qi(e,s),a=0;a<s;++a)n[a].apply(r,i)}(r,l,this,s)}return!0},Gi.prototype.addListener=function(e,t){return Hi(this,e,t,!1)},Gi.prototype.on=Gi.prototype.addListener,Gi.prototype.prependListener=function(e,t){return Hi(this,e,t,!0)},Gi.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,Ki(this,e,t)),this},Gi.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,Ki(this,e,t)),this},Gi.prototype.removeListener=function(e,t){var r,i,s,n,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 qi:(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(s=-1,n=r.length;n-- >0;)if(r[n]===t||r[n].listener&&r[n].listener===t){a=r[n].listener,s=n;break}if(s<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new qi,this;delete i[e]}else!function(e,t){for(var r=t,i=r+1,s=e.length;i<s;r+=1,i+=1)e[r]=e[i];e.pop()}(r,s);i.removeListener&&this.emit("removeListener",e,a||t)}return this},Gi.prototype.off=function(e,t){return this.removeListener(e,t)},Gi.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new qi,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new qi:delete r[e]),this;if(0===arguments.length){for(var i,s=Object.keys(r),n=0;n<s.length;++n)"removeListener"!==(i=s[n])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=new qi,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},Gi.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},Gi.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):Ji.call(e,t)},Gi.prototype.listenerCount=Ji,Gi.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};var Zi="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Yi(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Xi,es,ts={},rs={exports:{}};function is(){if(es)return Xi;es=1;var e=1e3,t=60*e,r=60*t,i=24*r,s=7*i,n=365.25*i;function a(e,t,r,i){var s=t>=1.5*r;return Math.round(e/r)+" "+i+(s?"s":"")}return Xi=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*n;case"weeks":case"week":case"w":return c*s;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(s){var n=Math.abs(s);if(n>=i)return a(s,n,i,"day");if(n>=r)return a(s,n,r,"hour");if(n>=t)return a(s,n,t,"minute");if(n>=e)return a(s,n,e,"second");return s+" ms"}(o):function(s){var n=Math.abs(s);if(n>=i)return Math.round(s/i)+"d";if(n>=r)return Math.round(s/r)+"h";if(n>=t)return Math.round(s/t)+"m";if(n>=e)return Math.round(s/e)+"s";return s+"ms"}(o);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(o))}}var ss=function(e){function t(e){let i,s,n,a=null;function o(...e){if(!o.enabled)return;const r=o,s=Number(new Date),n=s-(i||s);r.diff=n,r.prev=i,r.curr=s,i=s,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,s)=>{if("%%"===i)return"%";a++;const n=t.formatters[s];if("function"==typeof n){const t=e[a];i=n.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:(s!==t.namespaces&&(s=t.namespaces,n=t.enabled(e)),n),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,]+/),s=i.length;for(r=0;r<s;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=is(),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,s=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(i++,"%c"===e&&(s=i))})),t.splice(s,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=ss(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(rs,rs.exports);var ns,as,os=rs.exports,cs={},ds={exports:{}};ns=ds,as=ds.exports,function(e,t){var r="function",i="undefined",s="object",n="string",a="major",o="model",c="name",d="type",l="vendor",p="version",u="architecture",h="console",m="mobile",f="tablet",g="smarttv",v="wearable",_="embedded",y="Amazon",b="Apple",w="ASUS",S="BlackBerry",C="Browser",R="Chrome",T="Firefox",k="Google",P="Huawei",D="LG",I="Microsoft",E="Motorola",O="Opera",x="Samsung",M="Sharp",j="Sony",L="Xiaomi",A="Zebra",N="Facebook",B="Chromium OS",F="Mac OS",$=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===n&&-1!==U(t).indexOf(U(e))},U=function(e){return e.toLowerCase()},z=function(e,t){if(typeof e===n)return e=e.replace(/^\s\s*/,""),typeof t===i?e:e.substring(0,500)},q=function(e,i){for(var n,a,o,c,d,l,p=0;p<i.length&&!d;){var u=i[p],h=i[p+1];for(n=a=0;n<u.length&&!d&&u[n];)if(d=u[n++].exec(e))for(o=0;o<h.length;o++)l=d[++a],typeof(c=h[o])===s&&c.length>0?2===c.length?typeof c[1]==r?this[c[0]]=c[1].call(this,l):this[c[0]]=c[1]:3===c.length?typeof c[1]!==r||c[1].exec&&c[1].test?this[c[0]]=l?l.replace(c[1],c[2]):t:this[c[0]]=l?c[1].call(this,l,c[2]):t:4===c.length&&(this[c[0]]=l?c[3].call(this,l.replace(c[1],c[2])):t):this[c]=l||t;p+=2}},G=function(e,r){for(var i in r)if(typeof r[i]===s&&r[i].length>0){for(var n=0;n<r[i].length;n++)if(V(r[i][n],e))return"?"===i?t:i}else if(V(r[i],e))return"?"===i?t:i;return e},W={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"},H={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[p,[c,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[p,[c,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[c,p],[/opios[\/ ]+([\w\.]+)/i],[p,[c,O+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[p,[c,O+" GX"]],[/\bopr\/([\w\.]+)/i],[p,[c,O]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[p,[c,"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],[c,p],[/\bddg\/([\w\.]+)/i],[p,[c,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[p,[c,"UC"+C]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[p,[c,"WeChat"]],[/konqueror\/([\w\.]+)/i],[p,[c,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[p,[c,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[p,[c,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[p,[c,"Smart Lenovo "+C]],[/(avast|avg)\/([\w\.]+)/i],[[c,/(.+)/,"$1 Secure "+C],p],[/\bfocus\/([\w\.]+)/i],[p,[c,T+" Focus"]],[/\bopt\/([\w\.]+)/i],[p,[c,O+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[p,[c,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[p,[c,"Dolphin"]],[/coast\/([\w\.]+)/i],[p,[c,O+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[p,[c,"MIUI "+C]],[/fxios\/([-\w\.]+)/i],[p,[c,T]],[/\bqihu|(qi?ho?o?|360)browser/i],[[c,"360 "+C]],[/(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i],[[c,/(.+)/,"$1 "+C],p],[/samsungbrowser\/([\w\.]+)/i],[p,[c,x+" Internet"]],[/(comodo_dragon)\/([\w\.]+)/i],[[c,/_/g," "],p],[/metasr[\/ ]?([\d\.]+)/i],[p,[c,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[c,"Sogou Mobile"],p],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i],[c,p],[/(lbbrowser)/i,/\[(linkedin)app\]/i],[c],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[c,N],p],[/(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,/(twitter)(?:and| f.+e\/([\w\.]+))/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[c,p],[/\bgsa\/([\w\.]+) .*safari\//i],[p,[c,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[p,[c,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[p,[c,R+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[c,R+" WebView"],p],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[p,[c,"Android "+C]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[c,p],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[p,[c,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[p,c],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[c,[p,G,{"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],[c,p],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[c,"Netscape"],p],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[p,[c,T+" 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],[c,p],[/(cobalt)\/([\w\.]+)/i],[c,[p,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[u,"amd64"]],[/(ia32(?=;))/i],[[u,U]],[/((?:i[346]|x)86)[;\)]/i],[[u,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[u,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[u,"armhf"]],[/windows (ce|mobile); ppc;/i],[[u,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[u,/ower/,"",U]],[/(sun4\w)[;\)]/i],[[u,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[u,U]]],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],[o,[l,x],[d,f]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[o,[l,x],[d,m]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[o,[l,b],[d,m]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[o,[l,b],[d,f]],[/(macintosh);/i],[o,[l,b]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[o,[l,M],[d,m]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[o,[l,P],[d,f]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[o,[l,P],[d,m]],[/\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],[[o,/_/g," "],[l,L],[d,m]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[o,/_/g," "],[l,L],[d,f]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[o,[l,"OPPO"],[d,m]],[/\b(opd2\d{3}a?) bui/i],[o,[l,"OPPO"],[d,f]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[o,[l,"Vivo"],[d,m]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[o,[l,"Realme"],[d,m]],[/\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],[o,[l,E],[d,m]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[o,[l,E],[d,f]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[o,[l,D],[d,f]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[o,[l,D],[d,m]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[o,[l,"Lenovo"],[d,f]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[o,/_/g," "],[l,"Nokia"],[d,m]],[/(pixel c)\b/i],[o,[l,k],[d,f]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[o,[l,k],[d,m]],[/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],[o,[l,j],[d,m]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[o,"Xperia Tablet"],[l,j],[d,f]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[o,[l,"OnePlus"],[d,m]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[o,[l,y],[d,f]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[o,/(.+)/g,"Fire Phone $1"],[l,y],[d,m]],[/(playbook);[-\w\),; ]+(rim)/i],[o,l,[d,f]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[o,[l,S],[d,m]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[o,[l,w],[d,f]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[o,[l,w],[d,m]],[/(nexus 9)/i],[o,[l,"HTC"],[d,f]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[l,[o,/_/g," "],[d,m]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[o,[l,"Acer"],[d,f]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[o,[l,"Meizu"],[d,m]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[o,[l,"Ulefone"],[d,m]],[/(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],[l,o,[d,m]],[/(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],[l,o,[d,f]],[/(surface duo)/i],[o,[l,I],[d,f]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[o,[l,"Fairphone"],[d,m]],[/(u304aa)/i],[o,[l,"AT&T"],[d,m]],[/\bsie-(\w*)/i],[o,[l,"Siemens"],[d,m]],[/\b(rct\w+) b/i],[o,[l,"RCA"],[d,f]],[/\b(venue[\d ]{2,7}) b/i],[o,[l,"Dell"],[d,f]],[/\b(q(?:mv|ta)\w+) b/i],[o,[l,"Verizon"],[d,f]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[o,[l,"Barnes & Noble"],[d,f]],[/\b(tm\d{3}\w+) b/i],[o,[l,"NuVision"],[d,f]],[/\b(k88) b/i],[o,[l,"ZTE"],[d,f]],[/\b(nx\d{3}j) b/i],[o,[l,"ZTE"],[d,m]],[/\b(gen\d{3}) b.+49h/i],[o,[l,"Swiss"],[d,m]],[/\b(zur\d{3}) b/i],[o,[l,"Swiss"],[d,f]],[/\b((zeki)?tb.*\b) b/i],[o,[l,"Zeki"],[d,f]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[l,"Dragon Touch"],o,[d,f]],[/\b(ns-?\w{0,9}) b/i],[o,[l,"Insignia"],[d,f]],[/\b((nxa|next)-?\w{0,9}) b/i],[o,[l,"NextBook"],[d,f]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[l,"Voice"],o,[d,m]],[/\b(lvtel\-)?(v1[12]) b/i],[[l,"LvTel"],o,[d,m]],[/\b(ph-1) /i],[o,[l,"Essential"],[d,m]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[o,[l,"Envizen"],[d,f]],[/\b(trio[-\w\. ]+) b/i],[o,[l,"MachSpeed"],[d,f]],[/\btu_(1491) b/i],[o,[l,"Rotor"],[d,f]],[/(shield[\w ]+) b/i],[o,[l,"Nvidia"],[d,f]],[/(sprint) (\w+)/i],[l,o,[d,m]],[/(kin\.[onetw]{3})/i],[[o,/\./g," "],[l,I],[d,m]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[o,[l,A],[d,f]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[o,[l,A],[d,m]],[/smart-tv.+(samsung)/i],[l,[d,g]],[/hbbtv.+maple;(\d+)/i],[[o,/^/,"SmartTV"],[l,x],[d,g]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[l,D],[d,g]],[/(apple) ?tv/i],[l,[o,b+" TV"],[d,g]],[/crkey/i],[[o,R+"cast"],[l,k],[d,g]],[/droid.+aft(\w+)( bui|\))/i],[o,[l,y],[d,g]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[o,[l,M],[d,g]],[/(bravia[\w ]+)( bui|\))/i],[o,[l,j],[d,g]],[/(mitv-\w{5}) bui/i],[o,[l,L],[d,g]],[/Hbbtv.*(technisat) (.*);/i],[l,o,[d,g]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[l,z],[o,z],[d,g]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[d,g]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[l,o,[d,h]],[/droid.+; (shield) bui/i],[o,[l,"Nvidia"],[d,h]],[/(playstation [345portablevi]+)/i],[o,[l,j],[d,h]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[o,[l,I],[d,h]],[/((pebble))app/i],[l,o,[d,v]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[o,[l,b],[d,v]],[/droid.+; (glass) \d/i],[o,[l,k],[d,v]],[/droid.+; (wt63?0{2,3})\)/i],[o,[l,A],[d,v]],[/(quest( \d| pro)?)/i],[o,[l,N],[d,v]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[l,[d,_]],[/(aeobc)\b/i],[o,[l,y],[d,_]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[o,[d,m]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[o,[d,f]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[d,f]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[d,m]],[/(android[-\w\. ]{0,9});.+buil/i],[o,[l,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[p,[c,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[p,[c,"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],[c,p],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[p,c]],os:[[/microsoft (windows) (vista|xp)/i],[c,p],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[c,[p,G,W]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[p,G,W],[c,"Windows"]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[p,/_/g,"."],[c,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[c,F],[p,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[p,c],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[c,p],[/\(bb(10);/i],[p,[c,S]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[p,[c,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[p,[c,T+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[p,[c,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[p,[c,"watchOS"]],[/crkey\/([\d\.]+)/i],[p,[c,R+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[c,B],p],[/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],[c,p],[/(sunos) ?([\w\.\d]*)/i],[[c,"Solaris"],p],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[c,p]]},K=function(h,g){if(typeof h===s&&(g=h,h=t),!(this instanceof K))return new K(h,g).getResult();var v=typeof e!==i&&e.navigator?e.navigator:t,_=h||(v&&v.userAgent?v.userAgent:""),y=v&&v.userAgentData?v.userAgentData:t,b=g?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}(H,g):H,w=v&&v.userAgent==_;return this.getBrowser=function(){var e,i={};return i[c]=t,i[p]=t,q.call(i,_,b.browser),i[a]=typeof(e=i[p])===n?e.replace(/[^\d\.]/g,"").split(".")[0]:t,w&&v&&v.brave&&typeof v.brave.isBrave==r&&(i[c]="Brave"),i},this.getCPU=function(){var e={};return e[u]=t,q.call(e,_,b.cpu),e},this.getDevice=function(){var e={};return e[l]=t,e[o]=t,e[d]=t,q.call(e,_,b.device),w&&!e[d]&&y&&y.mobile&&(e[d]=m),w&&"Macintosh"==e[o]&&v&&typeof v.standalone!==i&&v.maxTouchPoints&&v.maxTouchPoints>2&&(e[o]="iPad",e[d]=f),e},this.getEngine=function(){var e={};return e[c]=t,e[p]=t,q.call(e,_,b.engine),e},this.getOS=function(){var e={};return e[c]=t,e[p]=t,q.call(e,_,b.os),w&&!e[c]&&y&&y.platform&&"Unknown"!=y.platform&&(e[c]=y.platform.replace(/chrome os/i,B).replace(/macos/i,F)),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===n&&e.length>500?z(e,500):e,this},this.setUA(_),this};K.VERSION="1.0.38",K.BROWSER=$([c,p,a]),K.CPU=$([u]),K.DEVICE=$([o,l,d,h,m,g,f,v,_]),K.ENGINE=K.OS=$([c,p]),ns.exports&&(as=ns.exports=K),as.UAParser=K;var J=typeof e!==i&&(e.jQuery||e.Zepto);if(J&&!J.ua){var Q=new K;J.ua=Q.getResult(),J.ua.get=function(){return Q.getUA()},J.ua.set=function(e){Q.setUA(e);var t=Q.getResult();for(var r in t)J.ua[r]=t[r]}}}("object"==typeof window?window:Zi);var ls=ds.exports,ps={},us=Zi&&Zi.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ps,"__esModule",{value:!0}),ps.Logger=void 0;const hs=us(os),ms="mediasoup-client";ps.Logger=class{constructor(e){e?(this._debug=(0,hs.default)(`${ms}:${e}`),this._warn=(0,hs.default)(`${ms}:WARN:${e}`),this._error=(0,hs.default)(`${ms}:ERROR:${e}`)):(this._debug=(0,hs.default)(ms),this._warn=(0,hs.default)(`${ms}:WARN`),this._error=(0,hs.default)(`${ms}: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 fs,gs={},vs={exports:{}},_s="object"==typeof Reflect?Reflect:null,ys=_s&&"function"==typeof _s.apply?_s.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)};fs=_s&&"function"==typeof _s.ownKeys?_s.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var bs=Number.isNaN||function(e){return e!=e};function ws(){ws.init.call(this)}vs.exports=ws,vs.exports.once=function(e,t){return new Promise((function(r,i){function s(r){e.removeListener(t,n),i(r)}function n(){"function"==typeof e.removeListener&&e.removeListener("error",s),r([].slice.call(arguments))}Os(e,t,n,{once:!0}),"error"!==t&&function(e,t,r){"function"==typeof e.on&&Os(e,"error",t,r)}(e,s,{once:!0})}))},ws.EventEmitter=ws,ws.prototype._events=void 0,ws.prototype._eventsCount=0,ws.prototype._maxListeners=void 0;var Ss=10;function Cs(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function Rs(e){return void 0===e._maxListeners?ws.defaultMaxListeners:e._maxListeners}function Ts(e,t,r,i){var s,n,a;if(Cs(r),void 0===(n=e._events)?(n=e._events=Object.create(null),e._eventsCount=0):(void 0!==n.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),n=e._events),a=n[t]),void 0===a)a=n[t]=r,++e._eventsCount;else if("function"==typeof a?a=n[t]=i?[r,a]:[a,r]:i?a.unshift(r):a.push(r),(s=Rs(e))>0&&a.length>s&&!a.warned){a.warned=!0;var o=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");o.name="MaxListenersExceededWarning",o.emitter=e,o.type=t,o.count=a.length,function(e){console&&console.warn&&console.warn(e)}(o)}return e}function ks(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function Ps(e,t,r){var i={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},s=ks.bind(i);return s.listener=r,i.wrapFn=s,s}function Ds(e,t,r){var i=e._events;if(void 0===i)return[];var s=i[t];return void 0===s?[]:"function"==typeof s?r?[s.listener||s]:[s]:r?function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(s):Es(s,s.length)}function Is(e){var t=this._events;if(void 0!==t){var r=t[e];if("function"==typeof r)return 1;if(void 0!==r)return r.length}return 0}function Es(e,t){for(var r=new Array(t),i=0;i<t;++i)r[i]=e[i];return r}function Os(e,t,r,i){if("function"==typeof e.on)i.once?e.once(t,r):e.on(t,r);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,(function s(n){i.once&&e.removeEventListener(t,s),r(n)}))}}Object.defineProperty(ws,"defaultMaxListeners",{enumerable:!0,get:function(){return Ss},set:function(e){if("number"!=typeof e||e<0||bs(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");Ss=e}}),ws.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},ws.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||bs(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},ws.prototype.getMaxListeners=function(){return Rs(this)},ws.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var i="error"===e,s=this._events;if(void 0!==s)i=i&&void 0===s.error;else if(!i)return!1;if(i){var n;if(t.length>0&&(n=t[0]),n instanceof Error)throw n;var a=new Error("Unhandled error."+(n?" ("+n.message+")":""));throw a.context=n,a}var o=s[e];if(void 0===o)return!1;if("function"==typeof o)ys(o,this,t);else{var c=o.length,d=Es(o,c);for(r=0;r<c;++r)ys(d[r],this,t)}return!0},ws.prototype.addListener=function(e,t){return Ts(this,e,t,!1)},ws.prototype.on=ws.prototype.addListener,ws.prototype.prependListener=function(e,t){return Ts(this,e,t,!0)},ws.prototype.once=function(e,t){return Cs(t),this.on(e,Ps(this,e,t)),this},ws.prototype.prependOnceListener=function(e,t){return Cs(t),this.prependListener(e,Ps(this,e,t)),this},ws.prototype.removeListener=function(e,t){var r,i,s,n,a;if(Cs(t),void 0===(i=this._events))return this;if(void 0===(r=i[e]))return this;if(r===t||r.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(s=-1,n=r.length-1;n>=0;n--)if(r[n]===t||r[n].listener===t){a=r[n].listener,s=n;break}if(s<0)return this;0===s?r.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(r,s),1===r.length&&(i[e]=r[0]),void 0!==i.removeListener&&this.emit("removeListener",e,a||t)}return this},ws.prototype.off=ws.prototype.removeListener,ws.prototype.removeAllListeners=function(e){var t,r,i;if(void 0===(r=this._events))return this;if(void 0===r.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==r[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete r[e]),this;if(0===arguments.length){var s,n=Object.keys(r);for(i=0;i<n.length;++i)"removeListener"!==(s=n[i])&&this.removeAllListeners(s);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(void 0!==t)for(i=t.length-1;i>=0;i--)this.removeListener(e,t[i]);return this},ws.prototype.listeners=function(e){return Ds(this,e,!0)},ws.prototype.rawListeners=function(e){return Ds(this,e,!1)},ws.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):Is.call(e,t)},ws.prototype.listenerCount=Is,ws.prototype.eventNames=function(){return this._eventsCount>0?fs(this._events):[]};var xs=vs.exports;Object.defineProperty(gs,"__esModule",{value:!0}),gs.EnhancedEventEmitter=void 0;const Ms=xs,js=new ps.Logger("EnhancedEventEmitter");class Ls extends Ms.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 js.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)}}gs.EnhancedEventEmitter=Ls;var As={};Object.defineProperty(As,"__esModule",{value:!0}),As.InvalidStateError=As.UnsupportedError=void 0;class Ns extends Error{constructor(e){super(e),this.name="UnsupportedError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Ns):this.stack=new Error(e).stack}}As.UnsupportedError=Ns;class Bs extends Error{constructor(e){super(e),this.name="InvalidStateError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Bs):this.stack=new Error(e).stack}}As.InvalidStateError=Bs;var Fs={};Object.defineProperty(Fs,"__esModule",{value:!0}),Fs.clone=function(e){return void 0===e?void 0:Number.isNaN(e)?NaN:"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))},Fs.generateRandomNumber=function(){return Math.round(1e7*Math.random())},Fs.deepFreeze=function e(t){const r=Reflect.ownKeys(t);for(const i of r){const r=t[i];(r&&"object"==typeof r||"function"==typeof r)&&e(r)}return Object.freeze(t)};var $s={},Vs={},Us={},zs=Zi&&Zi.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Us,"__esModule",{value:!0}),Us.Logger=void 0;const qs=zs(os),Gs="h264-profile-level-id";Us.Logger=class{constructor(e){e?(this._debug=(0,qs.default)(`${Gs}:${e}`),this._warn=(0,qs.default)(`${Gs}:WARN:${e}`),this._error=(0,qs.default)(`${Gs}:ERROR:${e}`)):(this._debug=(0,qs.default)(Gs),this._warn=(0,qs.default)(`${Gs}:WARN`),this._error=(0,qs.default)(`${Gs}: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(Vs,"__esModule",{value:!0}),Vs.generateProfileLevelIdStringForAnswer=Vs.isSameProfile=Vs.parseSdpProfileLevelId=Vs.levelToString=Vs.profileToString=Vs.profileLevelIdToString=Vs.parseProfileLevelId=Vs.ProfileLevelId=Vs.Level=Vs.Profile=void 0;const Ws=new Us.Logger;var Hs,Ks;!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"}(Hs||(Vs.Profile=Hs={})),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"}(Ks||(Vs.Level=Ks={}));class Js{constructor(e,t){this.profile=e,this.level=t}}Vs.ProfileLevelId=Js;const Qs=new Js(Hs.ConstrainedBaseline,Ks.L3_1);class Zs{constructor(e){this.mask=~sn("x",e),this.masked_value=sn("1",e)}isMatch(e){return this.masked_value===(e&this.mask)}}class Ys{constructor(e,t,r){this.profile_idc=e,this.profile_iop=t,this.profile=r}}const Xs=[new Ys(66,new Zs("x1xx0000"),Hs.ConstrainedBaseline),new Ys(77,new Zs("1xxx0000"),Hs.ConstrainedBaseline),new Ys(88,new Zs("11xx0000"),Hs.ConstrainedBaseline),new Ys(66,new Zs("x0xx0000"),Hs.Baseline),new Ys(88,new Zs("10xx0000"),Hs.Baseline),new Ys(77,new Zs("0x0x0000"),Hs.Main),new Ys(100,new Zs("00000000"),Hs.High),new Ys(100,new Zs("00001100"),Hs.ConstrainedHigh),new Ys(244,new Zs("00000000"),Hs.PredictiveHigh444)];function en(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,s=t>>16&255;let n;switch(r){case Ks.L1_1:n=0!=(16&i)?Ks.L1_b:Ks.L1_1;break;case Ks.L1:case Ks.L1_2:case Ks.L1_3:case Ks.L2:case Ks.L2_1:case Ks.L2_2:case Ks.L3:case Ks.L3_1:case Ks.L3_2:case Ks.L4:case Ks.L4_1:case Ks.L4_2:case Ks.L5:case Ks.L5_1:case Ks.L5_2:n=r;break;default:return void Ws.warn(`parseProfileLevelId() | unrecognized level_idc [str:${e}, level_idc:${r}]`)}for(const e of Xs)if(s===e.profile_idc&&e.profile_iop.isMatch(i))return new Js(e.profile,n);Ws.warn(`parseProfileLevelId() | unrecognized profile_idc/profile_iop combination [str:${e}, profile_idc:${s}, profile_iop:${i}]`)}function tn(e){if(e.level==Ks.L1_b)switch(e.profile){case Hs.ConstrainedBaseline:return"42f00b";case Hs.Baseline:return"42100b";case Hs.Main:return"4d100b";default:return void Ws.warn(`profileLevelIdToString() | Level 1_b not is allowed for profile ${e.profile}`)}let t;switch(e.profile){case Hs.ConstrainedBaseline:t="42e0";break;case Hs.Baseline:t="4200";break;case Hs.Main:t="4d00";break;case Hs.ConstrainedHigh:t="640c";break;case Hs.High:t="6400";break;case Hs.PredictiveHigh444:t="f400";break;default:return void Ws.warn(`profileLevelIdToString() | unrecognized profile ${e.profile}`)}let r=e.level.toString(16);return 1===r.length&&(r=`0${r}`),`${t}${r}`}function rn(e={}){const t=e["profile-level-id"];return t?en(t):Qs}function sn(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 nn(e={}){const t=e["level-asymmetry-allowed"];return!0===t||1===t||"1"===t}Vs.parseProfileLevelId=en,Vs.profileLevelIdToString=tn,Vs.profileToString=function(e){switch(e){case Hs.ConstrainedBaseline:return"ConstrainedBaseline";case Hs.Baseline:return"Baseline";case Hs.Main:return"Main";case Hs.ConstrainedHigh:return"ConstrainedHigh";case Hs.High:return"High";case Hs.PredictiveHigh444:return"PredictiveHigh444";default:return void Ws.warn(`profileToString() | unrecognized profile ${e}`)}},Vs.levelToString=function(e){switch(e){case Ks.L1_b:return"1b";case Ks.L1:return"1";case Ks.L1_1:return"1.1";case Ks.L1_2:return"1.2";case Ks.L1_3:return"1.3";case Ks.L2:return"2";case Ks.L2_1:return"2.1";case Ks.L2_2:return"2.2";case Ks.L3:return"3";case Ks.L3_1:return"3.1";case Ks.L3_2:return"3.2";case Ks.L4:return"4";case Ks.L4_1:return"4.1";case Ks.L4_2:return"4.2";case Ks.L5:return"5";case Ks.L5_1:return"5.1";case Ks.L5_2:return"5.2";default:return void Ws.warn(`levelToString() | unrecognized level ${e}`)}},Vs.parseSdpProfileLevelId=rn,Vs.isSameProfile=function(e={},t={}){const r=rn(e),i=rn(t);return Boolean(r&&i&&r.profile===i.profile)},Vs.generateProfileLevelIdStringForAnswer=function(e={},t={}){if(!e["profile-level-id"]&&!t["profile-level-id"])return void Ws.warn("generateProfileLevelIdStringForAnswer() | profile-level-id missing in local and remote params");const r=rn(e),i=rn(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 s=nn(e)&&nn(t),n=r.level,a=i.level,o=function(e,t){return e===Ks.L1_b?t!==Ks.L1&&t!==Ks.L1_b:t===Ks.L1_b?e!==Ks.L1:e<t}(c=n,d=a)?c:d;var c,d;const l=s?n:o;return Ws.debug(`generateProfileLevelIdStringForAnswer() | result [profile:${r.profile}, level:${l}]`),tn(new Js(r.profile,l))};var an=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),on=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),cn=Zi&&Zi.__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 on(t,e),t};Object.defineProperty($s,"__esModule",{value:!0}),$s.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)fn(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)vn(t)},$s.validateRtpParameters=mn,$s.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;"boolean"==typeof e.ordered?t=!0:e.ordered=!0;if(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");t||!e.maxPacketLifeTime&&!e.maxRetransmits||(e.ordered=!1);if(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")},$s.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)},$s.getExtendedRtpCapabilities=function(e,t){const r={codecs:[],headerExtensions:[]};for(const i of t.codecs||[]){if(wn(i))continue;const t=(e.codecs||[]).find((e=>Sn(e,i,{strict:!0,modify:!0})));if(!t)continue;const s={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:Rn(t,i)};r.codecs.push(s)}for(const i of r.codecs){const r=e.codecs.find((e=>wn(e)&&e.parameters.apt===i.localPayloadType)),s=t.codecs.find((e=>wn(e)&&e.parameters.apt===i.remotePayloadType));r&&s&&(i.localRtxPayloadType=r.preferredPayloadType,i.remoteRtxPayloadType=s.preferredPayloadType)}for(const i of t.headerExtensions){const t=e.headerExtensions.find((e=>Cn(e,i)));if(!t)continue;const s={kind:i.kind,uri:i.uri,sendId:t.preferredId,recvId:i.preferredId,encrypt:t.preferredEncrypt,direction:"sendrecv"};switch(i.direction){case"sendrecv":s.direction="sendrecv";break;case"recvonly":s.direction="sendonly";break;case"sendonly":s.direction="recvonly";break;case"inactive":s.direction="inactive"}r.headerExtensions.push(s)}return r},$s.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},$s.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},$s.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},$s.reduceCodecs=function(e,t){const r=[];if(t){for(let i=0;i<e.length;++i)if(Sn(e[i],t,{strict:!0})){r.push(e[i]),wn(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]),wn(e[1])&&r.push(e[1]);return r},$s.generateProbatorRtpParameters=function(e){mn(e=ln.clone(e));const t={mid:pn,codecs:[],headerExtensions:[],encodings:[{ssrc:un}],rtcp:{cname:"probator"}};return t.codecs.push(e.codecs[0]),t.codecs[0].payloadType=hn,t.headerExtensions=e.headerExtensions,t},$s.canSend=function(e,t){return t.codecs.some((t=>t.kind===e))},$s.canReceive=function(e,t){if(mn(e),0===e.codecs.length)return!1;const r=e.codecs[0];return t.codecs.some((e=>e.remotePayloadType===r.payloadType))};const dn=cn(Vs),ln=cn(Fs),pn="probator",un=1234,hn=127;function mn(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)_n(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)yn(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)bn(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 fn(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)gn(t)}function gn(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 vn(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 _n(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)gn(t)}function yn(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 bn(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 wn(e){return!!e&&/.+\/rtx$/i.test(e.mimeType)}function Sn(e,t,{strict:r=!1,modify:i=!1}={}){const s=e.mimeType.toLowerCase();if(s!==t.mimeType.toLowerCase())return!1;if(e.clockRate!==t.clockRate)return!1;if(e.channels!==t.channels)return!1;switch(s){case"video/h264":if(r){if((e.parameters["packetization-mode"]||0)!==(t.parameters["packetization-mode"]||0))return!1;if(!dn.isSameProfile(e.parameters,t.parameters))return!1;let r;try{r=dn.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 Cn(e,t){return(!e.kind||!t.kind||e.kind===t.kind)&&e.uri===t.uri}function Rn(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}var Tn={},kn={},Pn={};Object.defineProperty(Pn,"__esModule",{value:!0}),Pn.Logger=void 0;const Dn=os,In="awaitqueue";Pn.Logger=class{constructor(e){e?(this._debug=(0,Dn.default)(`${In}:${e}`),this._warn=(0,Dn.default)(`${In}:WARN:${e}`),this._error=(0,Dn.default)(`${In}:ERROR:${e}`)):(this._debug=(0,Dn.default)(In),this._warn=(0,Dn.default)(`${In}:WARN`),this._error=(0,Dn.default)(`${In}: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(kn,"__esModule",{value:!0}),kn.AwaitQueue=kn.AwaitQueueRemovedTaskError=kn.AwaitQueueStoppedError=void 0;const En=new Pn.Logger;class On extends Error{constructor(e){super(e??"AwaitQueue stopped"),this.name="AwaitQueueStoppedError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,On)}}kn.AwaitQueueStoppedError=On;class xn extends Error{constructor(e){super(e??"AwaitQueue task removed"),this.name="AwaitQueueRemovedTaskError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,xn)}}kn.AwaitQueueRemovedTaskError=xn;
8
+ var A=function(e){var t="fragment",r="template",i="content"in n(r)?function(e){var t=n(r);return t.innerHTML=e,t.content}:function(e){var i=n(t),a=n(r),o=null;if(/^[^\S]*?<(col(?:group)?|t(?:head|body|foot|r|d|h))/i.test(e)){var c=RegExp.$1;a.innerHTML="<table>"+e+"</table>",o=a.querySelectorAll(c)}else a.innerHTML=e,o=a.childNodes;return s(i,o),i};return function(e,t){return("svg"===t?a:i)(e)};function s(e,t){for(var r=t.length;r--;)e.appendChild(t[0])}function n(r){return r===t?e.createDocumentFragment():e.createElementNS("http://www.w3.org/1999/xhtml",r)}function a(e){var r=n(t),i=n("div");return i.innerHTML='<svg xmlns="http://www.w3.org/2000/svg">'+e+"</svg>",s(r,i.firstChild.childNodes),r}}(document),N=(e,t,r,i,s)=>{const n=r.length;let a=t.length,o=n,c=0,d=0,l=null;for(;c<a||d<o;)if(a===c){const t=o<n?d?i(r[d-1],-0).nextSibling:i(r[o-d],0):s;for(;d<o;)e.insertBefore(i(r[d++],1),t)}else if(o===d)for(;c<a;)l&&l.has(t[c])||e.removeChild(i(t[c],-1)),c++;else if(t[c]===r[d])c++,d++;else if(t[a-1]===r[o-1])a--,o--;else if(t[c]===r[o-1]&&r[d]===t[a-1]){const s=i(t[--a],-1).nextSibling;e.insertBefore(i(r[d++],1),i(t[c++],-1).nextSibling),e.insertBefore(i(r[--o],1),s),t[a]=r[o]}else{if(!l){l=new Map;let e=d;for(;e<o;)l.set(r[e],e++)}if(l.has(t[c])){const s=l.get(t[c]);if(d<s&&s<o){let n=c,p=1;for(;++n<a&&n<o&&l.get(t[n])===s+p;)p++;if(p>s-d){const n=i(t[c],0);for(;d<s;)e.insertBefore(i(r[d++],1),n)}else e.replaceChild(i(r[d++],1),i(t[c++],-1))}else c++}else e.removeChild(i(t[c++],-1))}return r},B=function(e,t,r,i,s){var n=s in e,a=e.createDocumentFragment();return a[t](e[i]("g")),a[t](e[i]("")),(n?e[s](a,!0):a[r](!0)).childNodes.length<2?function e(i,s){for(var n=i[r](),a=i.childNodes||[],o=a.length,c=0;s&&c<o;c++)n[t](e(a[c],s));return n}:n?e[s]:function(e,t){return e[r](!!t)}}(document,"appendChild","cloneNode","createTextNode","importNode"),F="".trim||function(){return String(this).replace(/^\s+|\s+/g,"")},$=p?function(e,t){var r=t.join(" ");return t.slice.call(e,0).sort((function(e,t){return r.indexOf(e.name)<=r.indexOf(t.name)?-1:1}))}:function(e,t){return t.slice.call(e,0)};function V(e,t){for(var r=t.length,i=0;i<r;)e=e.childNodes[t[i++]];return e}function U(e,t,r,i){for(var s=e.childNodes,n=s.length,a=0;a<n;){var o=s[a];switch(o.nodeType){case m:var c=i.concat(a);z(o,t,r,c),U(o,t,r,c);break;case h:var d=o.textContent;if(d===l)r.shift(),t.push(g.test(e.nodeName)?W(e,i):q(o,i.concat(a)));else switch(d.slice(0,2)){case"/*":if("*/"!==d.slice(-2))break;case"👻":e.removeChild(o),a--,n--}break;case f:g.test(e.nodeName)&&F.call(o.textContent)===u&&(r.shift(),t.push(W(e,i)))}a++}}function z(e,t,r,i){for(var s=e.attributes,n=[],a=[],o=$(s,r),c=o.length,d=0;d<c;){var h,m=o[d++],f=m.value===l;if(f||1<(h=m.value.split(u)).length){var g=m.name;if(n.indexOf(g)<0){n.push(g);var v=r.shift().replace(f?/^(?:|[\S\s]*?\s)(\S+?)\s*=\s*('|")?$/:new RegExp("^(?:|[\\S\\s]*?\\s)("+g+")\\s*=\\s*('|\")[\\S\\s]*","i"),"$1"),_=s[v]||s[v.toLowerCase()];if(f)t.push(G(_,i,v,null));else{for(var b=h.length-2;b--;)r.shift();t.push(G(_,i,v,h))}}a.push(m)}}d=0;for(var y=(0<(c=a.length)&&p&&!("ownerSVGElement"in e));d<c;){var S=a[d++];y&&(S.value=""),e.removeAttribute(S.name)}var w=e.nodeName;if(/^script$/i.test(w)){var C=document.createElement(w);for(c=s.length,d=0;d<c;)C.setAttributeNode(s[d++].cloneNode(!0));C.textContent=e.textContent,e.parentNode.replaceChild(C,e)}}function q(e,t){return{type:"any",node:e,path:t}}function G(e,t,r,i){return{type:"attr",node:e,path:t,name:r,sparse:i}}function W(e,t){return{type:"text",node:e,path:t}}var H=M(new r);function K(e,t){var r=(e.convert||_)(t),i=e.transform;i&&(r=i(r));var s=A(r,e.type);Z(s);var n=[];return U(s,n,t.slice(0),[]),{content:s,updates:function(r){for(var i=[],s=n.length,a=0,o=0;a<s;){var c=n[a++],d=V(r,c.path);switch(c.type){case"any":i.push({fn:e.any(d,[]),sparse:!1});break;case"attr":var l=c.sparse,p=e.attribute(d,c.name,c.node);null===l?i.push({fn:p,sparse:!1}):(o+=l.length-2,i.push({fn:p,sparse:!0,values:l}));break;case"text":i.push({fn:e.text(d),sparse:!1}),d.textContent=""}}return s+=o,function(){var e=arguments.length;if(s!==e-1)throw new Error(e-1+" values instead of "+s+"\n"+t.join("${value}"));for(var n=1,a=1;n<e;){var o=i[n-a];if(o.sparse){var c=o.values,d=c[0],l=1,p=c.length;for(a+=p-2;l<p;)d+=arguments[n++]+c[l++];o.fn(d)}else o.fn(arguments[n++])}return r}}}}var J=[];function Q(e){var t=J,r=Z;return function(i){return t!==i&&(r=function(e,t){var r=H.get(t)||H.set(t,K(e,t));return r.updates(B.call(document,r.content,!0))}(e,t=i)),r.apply(null,arguments)}}function Z(e){for(var t=e.childNodes,r=t.length;r--;){var i=t[r];1!==i.nodeType&&0===F.call(i.textContent).length&&e.removeChild(i)}}
9
+ /*! (c) Andrea Giammarchi - ISC */var Y=function(){var e=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,t=/([^A-Z])([A-Z]+)/g;return function(e,t){return"ownerSVGElement"in e?function(e,t){var r;t?r=t.cloneNode(!0):(e.setAttribute("style","--hyper:style;"),r=e.getAttributeNode("style"));return r.value="",e.setAttributeNode(r),i(r,!0)}(e,t):i(e.style,!1)};function r(e,t,r){return t+"-"+r.toLowerCase()}function i(i,s){var n,a;return function(o){var c,d,l,p;switch(typeof o){case"object":if(o){if("object"===n){if(!s&&a!==o)for(d in a)d in o||(i[d]="")}else s?i.value="":i.cssText="";for(d in c=s?{}:i,o)l="number"!=typeof(p=o[d])||e.test(d)?p:p+"px",!s&&/^--/.test(d)?c.setProperty(d,l):c[d]=l;n="object",s?i.value=function(e){var i,s=[];for(i in e)s.push(i.replace(t,r),":",e[i],";");return s.join("")}(a=c):a=o;break}default:a!=o&&(n="string",a=o,s?i.value=o||"":i.cssText=o||"")}}}}();const X=(e,t)=>{let r,i=!0;const s=document.createAttributeNS(null,t);return t=>{r!==t&&(r=t,null==r?i||(e.removeAttributeNode(s),i=!0):(s.value=t,i&&(e.setAttributeNodeNS(s),i=!1)))}},ee=({dataset:e})=>t=>{for(const r in t){const i=t[r];null==i?delete e[r]:e[r]=i}},te=(e,t)=>"dataset"===t?ee(e):r=>{e[t]=r},re=/^(?:form|list)$/i,ie=(e,t)=>e.ownerDocument.createTextNode(t);function se(e){return this.type=e,Q(this)}function ne(e){return e(this)}se.prototype={attribute(e,t,r){const i="svg"===this.type;switch(t){case"class":if(i)return X(e,t);t="className";case"props":return te(e,t);case"aria":return(e=>t=>{for(const r in t){const i="role"===r?r:`aria-${r}`,s=t[r];null==s?e.removeAttribute(i):e.setAttribute(i,s)}})(e);case"style":return Y(e,r,i);case"ref":return(e=>t=>{"function"==typeof t?t(e):t.current=e})(e);case".dataset":return ee(e);default:return"."===t.slice(0,1)?te(e,t.slice(1)):"?"===t.slice(0,1)?((e,t,r)=>i=>{r!==!!i&&((r=!!i)?e.setAttribute(t,""):e.removeAttribute(t))})(e,t.slice(1)):"on"===t.slice(0,2)?((e,t)=>{let r,i=t.slice(2);return!(t in e)&&t.toLowerCase()in e&&(i=i.toLowerCase()),t=>{const s=E(t)?t:[t,!1];r!==s[0]&&(r&&e.removeEventListener(i,r,s[1]),(r=s[0])&&e.addEventListener(i,r,s[1]))}})(e,t):!(t in e)||i||re.test(t)?X(e,t):((e,t)=>{let r;return i=>{r!==i&&(r=i,e[t]!==i&&(null==i?(e[t]="",e.removeAttribute(t)):e[t]=i))}})(e,t)}},any(e,t){const{type:r}=this;let i,s=!1;const n=a=>{switch(typeof a){case"string":case"number":case"boolean":s?i!==a&&(i=a,t[0].textContent=a):(s=!0,i=a,t=N(e.parentNode,t,[ie(e,a)],j,e));break;case"function":n(a(e));break;case"object":case"undefined":if(null==a){s=!1,t=N(e.parentNode,t,[],j,e);break}default:if(s=!1,i=a,E(a))if(0===a.length)t.length&&(t=N(e.parentNode,t,[],j,e));else switch(typeof a[0]){case"string":case"number":case"boolean":n(String(a));break;case"function":n(a.map(ne,e));break;case"object":E(a[0])&&(a=a.concat.apply([],a));default:t=N(e.parentNode,t,a,j,e)}else"ELEMENT_NODE"in a?t=N(e.parentNode,t,11===a.nodeType?x.call(a.childNodes):[a],j,e):"text"in a?n(String(a.text)):"any"in a?n(a.any):"html"in a?t=N(e.parentNode,t,x.call(A([].concat(a.html).join(""),r).childNodes),j,e):"length"in a&&n(x.call(a))}};return n},text(e){let t;const r=i=>{if(t!==i){t=i;const s=typeof i;"object"===s&&i?"text"in i?r(String(i.text)):"any"in i?r(i.any):"html"in i?r([].concat(i.html).join("")):"length"in i&&r(x.call(i).join("")):"function"===s?r(i(e)):e.textContent=null==i?"":i}};return r}};const{create:ae,freeze:oe,keys:ce}=Object,de=se.prototype,le=M(new r),pe=e=>({html:he("html",e),svg:he("svg",e),render(t,r){const i="function"==typeof r?r():r,s=le.get(t)||le.set(t,ue()),n=i instanceof ge?me(e,s,i):i;return n!==s.wire&&(s.wire=n,t.textContent="",t.appendChild(n.valueOf())),t}}),ue=()=>({stack:[],entry:null,wire:null}),he=(e,t)=>{const i=M(new r);return s.for=(e,r)=>{const n=i.get(e)||i.set(e,ae(null));return n[r]||(n[r]=(e=>function(){return me(t,e,s.apply(null,arguments))})(ue()))},s.node=function(){return me(t,ue(),s.apply(null,arguments)).valueOf()},s;function s(){return new ge(e,_e.apply(null,arguments))}},me=(e,t,{type:r,template:i,values:s})=>{const{length:n}=s;fe(e,t,s,n);let{entry:a}=t;if(a&&a.template===i&&a.type===r)a.tag(i,...s);else{const n=new e(r);t.entry=a={type:r,template:i,tag:n,wire:L(n(i,...s))}}return a.wire},fe=(e,{stack:t},r,i)=>{for(let s=0;s<i;s++){const i=r[s];i instanceof ve?r[s]=me(e,t[s]||(t[s]=ue()),i):E(i)?fe(e,t[s]||(t[s]=ue()),i,i.length):t[s]=null}i<t.length&&t.splice(i)};function ge(e,t){this.type=e,this.template=t.shift(),this.values=t}oe(ge);const ve=ge;function _e(){let e=[],t=0,{length:r}=arguments;for(;t<r;)e.push(arguments[t++]);return e}pe(se);var be="function"==typeof cancelAnimationFrame,ye=be?cancelAnimationFrame:clearTimeout,Se=be?requestAnimationFrame:setTimeout;function we(e){var t,r,i,s,n;return o(),function(e,o,d){return i=e,s=o,n=d,r||(r=Se(a)),--t<0&&c(!0),c};function a(){o(),i.apply(s,n||[])}function o(){t=e||1/0,r=be?0:null}function c(e){var t=!!r;return t&&(ye(r),e&&a()),t}}
10
+ /*! (c) Andrea Giammarchi - ISC */let Ce=null;const Re=M(new WeakMap),Te=(e,t,r)=>{e.apply(t,r)},ke={async:!1,always:!1},Pe=(e,t)=>"function"==typeof t?t(e):t,De=(e,t,r,i)=>{const s=Ce.i++,{hook:n,args:a,stack:o,length:c}=Ce;s===c&&(Ce.length=o.push({}));const d=o[s];if(d.args=a,s===c){const s="function"==typeof r,{async:a,always:o}=(s?i:r)||i||ke;d.$=s?r(t):Pe(void 0,t),d._=a?Re.get(n)||Re.set(n,we()):Te,d.f=t=>{const r=e(d.$,t);(o||d.$!==r)&&(d.$=r,d._(n,null,d.args))}}return[d.$,d.f]},Ie=new WeakMap;function Ee({hook:e}){return e===this.hook}const Oe=new WeakMap,xe=M(Oe),Me=()=>{},je=e=>(t,r)=>{const i=Ce.i++,{hook:s,after:n,stack:a,length:o}=Ce;if(i<o){const s=a[i],{update:o,values:c,stop:d}=s;if(!r||r.some(Fe,c)){s.values=r,e&&d(e);const{clean:i}=s;i&&(s.clean=null,i());const a=()=>{s.clean=t()};e?o(a):n.push(a)}}else{const i=e?we():Me,o={clean:null,update:i,values:r,stop:Me};Ce.length=a.push(o),(xe.get(s)||xe.set(s,[])).push(o);const c=()=>{o.clean=t()};e?o.stop=i(c):n.push(c)}},Le=e=>{(Oe.get(e)||[]).forEach((e=>{const{clean:t,stop:r}=e;r(),t&&(e.clean=null,t())}))};Oe.has.bind(Oe);const Ae=je(!0),Ne=je(!1),Be=(e,t)=>{const r=Ce.i++,{stack:i,length:s}=Ce;return r===s?Ce.length=i.push({$:e(),_:t}):t&&!t.some(Fe,i[r]._)||(i[r]={$:e(),_:t}),i[r].$};function Fe(e,t){return e!==this[t]}let $e=null;try{$e=new{o(){}}.o}catch(RS){}let Ve=e=>class extends e{};if($e){const{getPrototypeOf:OS,setPrototypeOf:xS}=Object,{construct:MS}="object"==typeof Reflect?Reflect:{construct(e,t,r){const i=[null];for(let e=0;e<t.length;e++)i.push(t[e]);const s=e.bind.apply(e,i);return xS(new s,r.prototype)}};Ve=function(e,t){function r(){return MS(t?OS(e):e,arguments,r)}return xS(r.prototype,e.prototype),xS(r,e)}}const Ue={map:{},re:null},ze=e=>new RegExp(`<(/)?(${e.join("|")})([^A-Za-z0-9:._-])`,"g");let qe=null;const Ge=(e,t)=>{const{map:r,re:i}=qe||t;return e.replace(i,((e,t,i,s)=>{const{tagName:n,is:a,element:o}=r[i];return o?t?`</${a}>`:`<${a}${s}`:t?`</${n}>`:`<${n} is="${a}"${s}`}))},We=({tagName:e,is:t,element:r})=>r?t:`${e}[is="${t}"]`,He=()=>qe,Ke=e=>{qe=e},Je={useCallback:(e,t)=>Be((()=>e),t),useContext:e=>{const{hook:t,args:r}=Ce,i=Ie.get(e),s={hook:t,args:r};return i.some(Ee,s)||i.push(s),e.value},useEffect:Ae,useLayoutEffect:Ne,useMemo:Be,useReducer:De,useRef:e=>{const t=Ce.i++,{stack:r,length:i}=Ce;return t===i&&(Ce.length=r.push({current:e})),r[t]},useState:(e,t)=>De(Pe,e,void 0,t)},{render:Qe,html:Ze,svg:Ye}=(e=>{const t=ae(de);return ce(e).forEach((r=>{t[r]=e[r](t[r]||("convert"===r?_:String))})),r.prototype=t,pe(r);function r(){return se.apply(this,arguments)}})({transform:()=>e=>Ge(e,Ue)}),Xe="_🔥",{defineProperties:et}=Object,tt=new r,rt=new r,it=new r,st=new d,nt=!0,at="attributeChangedCallback",ot="connectedCallback",ct=`dis${ot}`,dt=(e,t,r)=>{if(r in e){const i=e[r];t[r]={configurable:nt,value(){return St.call(this),i.apply(this,arguments)}}}else t[r]={configurable:nt,value:St}},lt=e=>{const{prototype:t}=e,i=[],s={html:{configurable:nt,get:_t},svg:{configurable:nt,get:bt}};if(s[Xe]={value:{events:i,info:null}},"handleEvent"in t||(s.handleEvent={configurable:nt,value:yt}),"render"in t&&t.render.length){const{oninit:e}=t;et(t,{oninit:{configurable:nt,value(){const t=(e=>{const t=[];return function r(){const i=Ce,s=[];Ce={hook:r,args:arguments,stack:t,i:0,length:t.length,after:s};try{return e.apply(null,arguments)}finally{Ce=i;for(let e=0,{length:t}=s;e<t;e++)s[e]()}}})(this.render.bind(this,Je));et(this,{render:{configurable:nt,value:t}}),this.addEventListener("disconnected",Le.bind(null,t),!1),e&&e.apply(this,arguments)}}})}"oninit"in t&&(i.push("init"),dt(t,s,"render")),dt(t,s,at),dt(t,s,ot),dt(t,s,ct),[[at,"onattributechanged",wt],[ot,"onconnected",Ct],[ct,"ondisconnected",Tt],[ot,"render",Rt]].forEach((([e,r,n])=>{if(!(e in t)&&r in t)if("render"!==r&&i.push(r.slice(2)),e in s){const t=s[e].value;s[e]={configurable:nt,value(){return t.apply(this,arguments),n.apply(this,arguments)}}}else s[e]={configurable:nt,value:n}}));const n=e.booleanAttributes||[];n.forEach((e=>{e in t||(s[e]={configurable:nt,get(){return this.hasAttribute(e)},set(t){t&&"false"!==t?this.setAttribute(e,t):this.removeAttribute(e)}})}));const a=e.observedAttributes||[];a.forEach((e=>{e in t||(s[e]={configurable:nt,get(){return this.getAttribute(e)},set(t){null==t?this.removeAttribute(e):this.setAttribute(e,t)}})}));(e.mappedAttributes||[]).forEach((e=>{const n=new r,a="on"+e in t;a&&i.push(e),s[e]={configurable:nt,get(){return n.get(this)},set(t){if(n.set(this,t),a){const r=pt(e);if(r.detail=t,st.has(this))this.dispatchEvent(r);else{const e=it.get(this);e?e.push(r):it.set(this,[r])}}}}})),et(t,s);const o=n.concat(a);return o.length?et(e,{observedAttributes:{configurable:nt,get:()=>o}}):e},pt=e=>new s(e),ut=(...e)=>new ve("html",e);ut.for=Ze.for;const ht=(...e)=>new ve("svg",e);ht.for=Ye.for;const mt=(e,t,i)=>{const s=ft(e,t,new r);return i.set(e,s),s},ft=(e,t,r)=>(i,...s)=>{const n=r.get(i)||((e,t,{info:r})=>{const i=r?Ge(t.join(Xe),r).split(Xe):t;return e.set(t,i),i})(r,i,e[Xe]);return Qe(e,(()=>t(n,...s)))};function gt(e){this.addEventListener(e,this)}function vt(e){this.dispatchEvent(e)}function _t(){return tt.get(this)||mt(this,ut,tt)}function bt(){return rt.get(this)||mt(this,ht,rt)}function yt(e){this[`on${e.type}`](e)}function St(){if(!st.has(this)){st.add(this),this[Xe].events.forEach(gt,this),this.dispatchEvent(pt("init"));const e=it.get(this);e&&(it.delete(this),e.forEach(vt,this))}}function wt(e,t,r){const i=pt("attributechanged");i.attributeName=e,i.oldValue=t,i.newValue=r,this.dispatchEvent(i)}function Ct(){this.dispatchEvent(pt("connected"))}function Rt(){this.render()}function Tt(){this.dispatchEvent(pt("disconnected"))}const{create:kt,defineProperty:Pt,defineProperties:Dt,getOwnPropertyNames:It,getOwnPropertySymbols:Et,getOwnPropertyDescriptor:Ot,keys:xt}=Object,Mt={element:HTMLElement},jt=new r;new r;const Lt=new r;new r;const At=e=>{const t=kt(null),r=kt(null),i={prototype:r,statics:t};return It(e).concat(Et(e)).forEach((i=>{const s=Ot(e,i);switch(s.enumerable=!1,i){case"extends":i="tagName";case"contains":case"includes":case"name":case"booleanAttributes":case"mappedAttributes":case"observedAttributes":case"style":case"tagName":t[i]=s;break;default:r[i]=s}})),i},Nt=(e,t,r)=>{if(!/^([A-Z][A-Za-z0-9_]*)(<([A-Za-z0-9:._-]+)>|:([A-Za-z0-9:._-]+))?$/.test(e))throw"Invalid name";const{$1:i,$3:s,$4:n}=RegExp;let a=s||n||t.tagName||t.extends||"element";const o="fragment"===a;if(o)a="element";else if(!/^[A-Za-z0-9:._-]+$/.test(a))throw"Invalid tag";let c="",d="";a.indexOf("-")<0?(c=i.replace(/(([A-Z0-9])([A-Z0-9][a-z]))|(([a-z])([A-Z]))/g,"$2$5-$3$6").toLowerCase()+r,c.indexOf("-")<0&&(d="-heresy")):(c=a+r,a="element");const l=c+d;if(customElements.get(l))throw`Duplicated ${l} definition`;const p=Ve("object"==typeof t?Lt.get(t)||((e,t)=>{const{statics:r,prototype:i}=At(e),s=Ve(Mt[t]||(Mt[t]=document.createElement(t).constructor),!1);return Dt(s.prototype,i),Dt(s,r),Lt.set(e,lt(s)),s})(t,a):jt.get(t)||(e=>{const t=Ve(e,!1);return jt.set(e,lt(t)),t})(t),!0),u="element"===a;if(Pt(p,"new",{value:u?()=>document.createElement(l):()=>document.createElement(a,{is:l})}),Pt(p.prototype,"is",{value:l}),""===r){const e=(e=>{const{length:t}=e;let r=0,i=0;for(;i<t;)r=(r<<5)-r+e.charCodeAt(i++),r&=r;return r.toString(36)})(c.toUpperCase());Ue.map[i]=Bt(p,a,l,{id:e,i:0}),Ue.re=ze(xt(Ue.map))}if(o){const{render:e}=p.prototype;Pt(p.prototype,"render",{configurable:!0,value(){if(e&&e.apply(this,arguments),this.parentNode){const{firstChild:e}=this;let t=null;if(e){const r=document.createRange();r.setStartBefore(e),r.setEndAfter(this.lastChild),t=r.extractContents(),this.parentNode.replaceChild(t,this)}}}})}const h=[l,p];return u||h.push({extends:a}),customElements.define(...h),{Class:p,is:l,name:i,tagName:a}},Bt=(e,t,r,i)=>{const{prototype:s}=e,n=((e,t)=>({tagName:e,is:t,element:"element"===e}))(t,r),a=[We(n)],o=e.includes||e.contains;if(o){const e={};xt(o).forEach((t=>{const r=`-${i.id}-${i.i++}`,{Class:s,is:n,name:c,tagName:d}=Nt(t,o[t],r);a.push(We(e[c]=Bt(s,d,n,i)))}));const t=ze(xt(e)),{events:r}=s[Xe],n={events:r,info:{map:e,re:t}};if(Pt(s,Xe,{value:n}),"render"in s){const{render:e}=s,{info:t}=n;Pt(s,"render",{configurable:!0,value(){const r=He();Ke(t);const i=e.apply(this,arguments);return Ke(r),i}})}}return"style"in e&&(e=>{if((e||"").length){const t=document.createElement("style");t.type="text/css",t.styleSheet?t.styleSheet.cssText=e:t.appendChild(document.createTextNode(e));const r=document.head||document.querySelector("head");r.insertBefore(t,r.lastChild)}})(e.style(...a)),n};var Ft=()=>Math.random().toString(36).substring(7).split("").join("."),$t={INIT:`@@redux/INIT${Ft()}`,REPLACE:`@@redux/REPLACE${Ft()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${Ft()}`};function Vt(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 Ut(e){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(e);try{throw new Error(e)}catch(e){}}function zt(e){return Vt(e)&&"type"in e&&"string"==typeof e.type}var qt=Symbol.for("immer-nothing"),Gt=Symbol.for("immer-draftable"),Wt=Symbol.for("immer-state"),Ht=[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 Kt(e,...t){{const r=Ht[e],i="function"==typeof r?r.apply(null,t):r;throw new Error(`[Immer] ${i}`)}}var Jt=Object.getPrototypeOf;function Qt(e){return!!e&&!!e[Wt]}function Zt(e){return!!e&&(Xt(e)||Array.isArray(e)||!!e[Gt]||!!e.constructor?.[Gt]||sr(e)||nr(e))}var Yt=Object.prototype.constructor.toString();function Xt(e){if(!e||"object"!=typeof e)return!1;const t=Jt(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)===Yt}function er(e,t){0===tr(e)?Object.entries(e).forEach((([r,i])=>{t(r,i,e)})):e.forEach(((r,i)=>t(i,r,e)))}function tr(e){const t=e[Wt];return t?t.type_:Array.isArray(e)?1:sr(e)?2:nr(e)?3:0}function rr(e,t){return 2===tr(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function ir(e,t,r){const i=tr(e);2===i?e.set(t,r):3===i?e.add(r):e[t]=r}function sr(e){return e instanceof Map}function nr(e){return e instanceof Set}function ar(e){return e.copy_||e.base_}function or(e,t){if(sr(e))return new Map(e);if(nr(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);if(!t&&Xt(e)){if(!Jt(e)){const t=Object.create(null);return Object.assign(t,e)}return{...e}}const r=Object.getOwnPropertyDescriptors(e);delete r[Wt];let i=Reflect.ownKeys(r);for(let t=0;t<i.length;t++){const s=i[t],n=r[s];!1===n.writable&&(n.writable=!0,n.configurable=!0),(n.get||n.set)&&(r[s]={configurable:!0,writable:!0,enumerable:n.enumerable,value:e[s]})}return Object.create(Jt(e),r)}function cr(e,t=!1){return lr(e)||Qt(e)||!Zt(e)||(tr(e)>1&&(e.set=e.add=e.clear=e.delete=dr),Object.freeze(e),t&&er(e,((e,t)=>cr(t,!0)))),e}function dr(){Kt(2)}function lr(e){return Object.isFrozen(e)}var pr,ur={};function hr(e){const t=ur[e];return t||Kt(0,e),t}function mr(){return pr}function fr(e,t){t&&(hr("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function gr(e){vr(e),e.drafts_.forEach(br),e.drafts_=null}function vr(e){e===pr&&(pr=e.parent_)}function _r(e){return pr={drafts_:[],parent_:pr,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function br(e){const t=e[Wt];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function yr(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];return void 0!==e&&e!==r?(r[Wt].modified_&&(gr(t),Kt(4)),Zt(e)&&(e=Sr(t,e),t.parent_||Cr(t,e)),t.patches_&&hr("Patches").generateReplacementPatches_(r[Wt].base_,e,t.patches_,t.inversePatches_)):e=Sr(t,r,[]),gr(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==qt?e:void 0}function Sr(e,t,r){if(lr(t))return t;const i=t[Wt];if(!i)return er(t,((s,n)=>wr(e,i,t,s,n,r))),t;if(i.scope_!==e)return t;if(!i.modified_)return Cr(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;const t=i.copy_;let s=t,n=!1;3===i.type_&&(s=new Set(t),t.clear(),n=!0),er(s,((s,a)=>wr(e,i,t,s,a,r,n))),Cr(e,t,!1),r&&e.patches_&&hr("Patches").generatePatches_(i,r,e.patches_,e.inversePatches_)}return i.copy_}function wr(e,t,r,i,s,n,a){if(s===r&&Kt(5),Qt(s)){const a=Sr(e,s,n&&t&&3!==t.type_&&!rr(t.assigned_,i)?n.concat(i):void 0);if(ir(r,i,a),!Qt(a))return;e.canAutoFreeze_=!1}else a&&r.add(s);if(Zt(s)&&!lr(s)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;Sr(e,s),t&&t.scope_.parent_||Cr(e,s)}}function Cr(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&cr(t,r)}var Rr={get(e,t){if(t===Wt)return e;const r=ar(e);if(!rr(r,t))return function(e,t,r){const i=Pr(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_||!Zt(i)?i:i===kr(e.base_,t)?(Ir(e),e.copy_[t]=Er(i,e)):i},has:(e,t)=>t in ar(e),ownKeys:e=>Reflect.ownKeys(ar(e)),set(e,t,r){const i=Pr(ar(e),t);if(i?.set)return i.set.call(e.draft_,r),!0;if(!e.modified_){const i=kr(ar(e),t),a=i?.[Wt];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_[t]=!1,!0;if(((s=r)===(n=i)?0!==s||1/s==1/n:s!=s&&n!=n)&&(void 0!==r||rr(e.base_,t)))return!0;Ir(e),Dr(e)}var s,n;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!==kr(e.base_,t)||t in e.base_?(e.assigned_[t]=!1,Ir(e),Dr(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const r=ar(e),i=Reflect.getOwnPropertyDescriptor(r,t);return i?{writable:!0,configurable:1!==e.type_||"length"!==t,enumerable:i.enumerable,value:r[t]}:i},defineProperty(){Kt(11)},getPrototypeOf:e=>Jt(e.base_),setPrototypeOf(){Kt(12)}},Tr={};function kr(e,t){const r=e[Wt];return(r?ar(r):e)[t]}function Pr(e,t){if(!(t in e))return;let r=Jt(e);for(;r;){const e=Object.getOwnPropertyDescriptor(r,t);if(e)return e;r=Jt(r)}}function Dr(e){e.modified_||(e.modified_=!0,e.parent_&&Dr(e.parent_))}function Ir(e){e.copy_||(e.copy_=or(e.base_,e.scope_.immer_.useStrictShallowCopy_))}er(Rr,((e,t)=>{Tr[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}})),Tr.deleteProperty=function(e,t){return isNaN(parseInt(t))&&Kt(13),Tr.set.call(this,e,t,void 0)},Tr.set=function(e,t,r){return"length"!==t&&isNaN(parseInt(t))&&Kt(14),Rr.set.call(this,e[0],t,r,e[0])};function Er(e,t){const r=sr(e)?hr("MapSet").proxyMap_(e,t):nr(e)?hr("MapSet").proxySet_(e,t):function(e,t){const r=Array.isArray(e),i={type_:r?1:0,scope_:t?t.scope_:mr(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let s=i,n=Rr;r&&(s=[i],n=Tr);const{revoke:a,proxy:o}=Proxy.revocable(s,n);return i.draft_=o,i.revoke_=a,o}(e,t);return(t?t.scope_:mr()).drafts_.push(r),r}function Or(e){return Qt(e)||Kt(10,e),xr(e)}function xr(e){if(!Zt(e)||lr(e))return e;const t=e[Wt];let r;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=or(e,t.scope_.immer_.useStrictShallowCopy_)}else r=or(e,!0);return er(r,((e,t)=>{ir(r,e,xr(t))})),t&&(t.finalized_=!1),r}var Mr=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,...s){return i.produce(e,(e=>t.call(this,e,...s)))}}let i;if("function"!=typeof t&&Kt(6),void 0!==r&&"function"!=typeof r&&Kt(7),Zt(e)){const s=_r(this),n=Er(e,void 0);let a=!0;try{i=t(n),a=!1}finally{a?gr(s):vr(s)}return fr(s,r),yr(i,s)}if(!e||"object"!=typeof e){if(i=t(e),void 0===i&&(i=e),i===qt&&(i=void 0),this.autoFreeze_&&cr(i,!0),r){const t=[],s=[];hr("Patches").generateReplacementPatches_(e,i,t,s),r(t,s)}return i}Kt(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){Zt(e)||Kt(8),Qt(e)&&(e=Or(e));const t=_r(this),r=Er(e,void 0);return r[Wt].isManual_=!0,vr(t),r}finishDraft(e,t){const r=e&&e[Wt];r&&r.isManual_||Kt(9);const{scope_:i}=r;return fr(i,t),yr(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=hr("Patches").applyPatches_;return Qt(e)?i(e,t):this.produce(e,(e=>i(e,t)))}},jr=Mr.produce;Mr.produceWithPatches.bind(Mr),Mr.setAutoFreeze.bind(Mr),Mr.setUseStrictShallowCopy.bind(Mr),Mr.applyPatches.bind(Mr),Mr.createDraft.bind(Mr),Mr.finishDraft.bind(Mr);var Lr=(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})}}},Ar=(e,t,r)=>{const{memoize:i,memoizeOptions:s}=t,{inputSelectorResults:n,inputSelectorResultsCopy:a}=e,o=i((()=>({})),...s);if(!(o.apply(null,n)===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:n,secondInputs:a,stack:e})}},Nr={inputStabilityCheck:"once",identityFunctionCheck:"once"};var Br=e=>Array.isArray(e)?e:[e];function Fr(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 $r(e,t){const r=[],{length:i}=e;for(let s=0;s<i;s++)r.push(e[s].apply(null,t));return r}var Vr="undefined"!=typeof WeakRef?WeakRef:class{constructor(e){this.value=e}deref(){return this.value}},Ur=0,zr=1;function qr(){return{s:Ur,v:void 0,o:null,p:null}}function Gr(e,t={}){let r=qr();const{resultEqualityCheck:i}=t;let s,n=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=qr(),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=qr(),e.set(r,t)):t=i}}const o=t;let c;if(t.s===zr?c=t.v:(c=e.apply(null,arguments),n++),o.s=zr,i){const e=s?.deref?.()??s;null!=e&&i(e,c)&&(c=e,0!==n&&n--);s="object"==typeof c&&null!==c||"function"==typeof c?new Vr(c):c}return o.v=c,c}return a.clearCache=()=>{r=qr(),a.resetResultsCount()},a.resultsCount=()=>n,a.resetResultsCount=()=>{n=0},a}function Wr(e,...t){const r="function"==typeof e?{memoize:e,memoizeOptions:t}:e,i=(...e)=>{let t,i=0,s=0,n={},a=e.pop();"object"==typeof a&&(n=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,...n},{memoize:c,memoizeOptions:d=[],argsMemoize:l=Gr,argsMemoizeOptions:p=[],devModeChecks:u={}}=o,h=Br(d),m=Br(p),f=Fr(e),g=c((function(){return i++,a.apply(null,arguments)}),...h);let v=!0;const _=l((function(){s++;const e=$r(f,arguments);t=g.apply(null,e);{const{identityFunctionCheck:r,inputStabilityCheck:i}=((e,t)=>{const{identityFunctionCheck:r,inputStabilityCheck:i}={...Nr,...t};return{identityFunctionCheck:{shouldRun:"always"===r||"once"===r&&e,run:Lr},inputStabilityCheck:{shouldRun:"always"===i||"once"===i&&e,run:Ar}}})(v,u);if(r.shouldRun&&r.run(a,e,t),i.shouldRun){const t=$r(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:()=>s,resetDependencyRecomputations:()=>{s=0},lastResult:()=>t,recomputations:()=>i,resetRecomputations:()=>{i=0},memoize:c,argsMemoize:l})};return Object.assign(i,{withTypes:()=>i}),i}var Hr=Wr(Gr),Kr=Object.assign(((e,t=Hr)=>{!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:()=>Kr});((...e)=>{const t=Wr(...e),r=Object.assign(((...e)=>{const r=t(...e),i=(e,...t)=>r(Qt(e)?Or(e):e,...t);return Object.assign(i,r),i}),{withTypes:()=>r})})(Gr);function Jr(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=>zt(t)&&t.type===e,r}function Qr(e,t){for(const r of e)if(t(r))return r}function Zr(e){return Zt(e)?jr(e,(()=>{})):e}function Yr(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 Xr(e){const t={},r=[];let i;const s={addCase(e,n){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]=n,s},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}),s},addDefaultCase(e){if(i)throw new Error("`builder.addDefaultCase` can only be called once");return i=e,s}};return e(s),[t,r,i]}var ei=(e=21)=>{let t="",r=e;for(;r--;)t+="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"[64*Math.random()|0];return t};function ti(...e){return t=>e.some((e=>((e,t)=>{return(r=e)&&"function"==typeof r.match?e.match(t):e(t);var r})(e,t)))}var ri=["name","message","stack","code"],ii=class{constructor(e,t){this.payload=e,this.meta=t}_type},si=class{constructor(e,t){this.payload=e,this.meta=t}_type},ni=e=>{if("object"==typeof e&&null!==e){const t={};for(const r of ri)"string"==typeof e[r]&&(t[r]=e[r]);return t}return{message:String(e)}},ai=(()=>{function e(e,t,r){const i=Jr(e+"/fulfilled",((e,t,r,i)=>({payload:e,meta:{...i||{},arg:r,requestId:t,requestStatus:"fulfilled"}}))),s=Jr(e+"/pending",((e,t,r)=>({payload:void 0,meta:{...r||{},arg:t,requestId:e,requestStatus:"pending"}}))),n=Jr(e+"/rejected",((e,t,i,s,n)=>({payload:s,error:(r&&r.serializeError||ni)(e||"Rejected"),meta:{...n||{},arg:i,requestId:t,rejectedWithValue:!!s,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):ei(),l=new AbortController;let p,u;function h(e){u=e,l.abort()}const m=async function(){let m;try{let n=r?.condition?.(e,{getState:o,extra:c});if(function(e){return null!==e&&"object"==typeof e&&"function"==typeof e.then}(n)&&(n=await n),!1===n||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(s(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 ii(e,t),fulfillWithValue:(e,t)=>new si(e,t)})).then((t=>{if(t instanceof ii)throw t;return t instanceof si?i(t.payload,d,e,t.meta):i(t,d,e)}))])}catch(t){m=t instanceof ii?n(null,d,e,t.payload,t.meta):n(t,d,e)}finally{p&&l.signal.removeEventListener("abort",p)}return r&&!r.dispatchConditionRejection&&n.match(m)&&m.meta.condition||a(m),m}();return Object.assign(m,{abort:h,requestId:d,arg:e,unwrap:()=>m.then(oi)})}}),{pending:s,rejected:n,fulfilled:i,settled:ti(n,i),typePrefix:e})}return e.withTypes=()=>e,e})();function oi(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}var ci=Symbol.for("rtk-slice-createasyncthunk");function di(e,t){return`${e}/${t}`}function li({creators:e}={}){const t=e?.asyncThunk?.[ci];return function(e){const{name:r,reducerPath:i=r}=e;if(!r)throw new Error("`name` is a required option for createSlice");const s=("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)||{},n=Object.keys(s),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?Xr(e.extraReducers):[e.extraReducers],s={...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,s,n]=Xr(t);if("function"==typeof e)r=()=>Zr(e());else{const t=Zr(e);r=()=>t}function a(e=r(),t){let a=[i[t.type],...s.filter((({matcher:e})=>e(t))).map((({reducer:e})=>e))];return 0===a.filter((e=>!!e)).length&&(a=[n]),a.reduce(((e,r)=>{if(r){if(Qt(e)){const i=r(e,t);return void 0===i?e:i}if(Zt(e))return jr(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 s)e.addCase(t,s[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)}))}n.forEach((i=>{const n=s[i],a={reducerName:i,type:di(r,i),createNotation:"function"==typeof e.reducers};!function(e){return"asyncThunk"===e._reducerDefinitionType}(n)?function({type:e,reducerName:t,createNotation:r},i,s){let n,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.");n=i.reducer,a=i.prepare}else n=i;s.addCase(e,n).exposeCaseReducer(t,n).exposeAction(t,a?Jr(e,a):Jr(e))}(a,n,o):function({type:e,reducerName:t},r,i,s){if(!s)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:n,fulfilled:a,pending:o,rejected:c,settled:d,options:l}=r,p=s(e,n,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||hi,pending:o||hi,rejected:c||hi,settled:d||hi})}(a,n,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 s(t=d){const i=Yr(l,r,{insert:()=>new WeakMap});return Yr(i,t,{insert:()=>{const i={};for(const[s,n]of Object.entries(e.selectors??{}))i[s]=pi(n,t,h,r);return i}})}return{reducerPath:t,getSelectors:s,get selectors(){return s(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 s=t??i;return e.inject({reducerPath:s,reducer:u},r),{...f,...m(s,!0)}}};return f}}function pi(e,t,r,i){function s(s,...n){let a=t(s);if(void 0===a){if(!i)throw new Error("selectState returned undefined for an uninjected slice reducer");a=r()}return e(a,...n)}return s.unwrapped=e,s}var ui=li();function hi(){}var mi="listener",fi="completed",gi="cancelled",vi=`task-${gi}`,_i=`task-${fi}`,bi=`${mi}-${gi}`,yi=`${mi}-${fi}`,Si=class{constructor(e){this.code=e,this.message=`task ${gi} (reason: ${e})`}name="TaskAbortError";message},wi=(e,t)=>{if("function"!=typeof e)throw new Error(`${t} is not a function`)},Ci=()=>{},Ri=(e,t=Ci)=>(e.catch(t),e),Ti=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),ki=(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))},Pi=e=>{if(e.aborted){const{reason:t}=e;throw new Si(t)}};function Di(e,t){let r=Ci;return new Promise(((i,s)=>{const n=()=>s(new Si(e.reason));e.aborted?n():(r=Ti(e,n),t.finally((()=>r())).then(i,s))})).finally((()=>{r=Ci}))}var Ii=e=>t=>Ri(Di(e,t).then((t=>(Pi(e),t)))),Ei=e=>{const t=Ii(e);return e=>t(new Promise((t=>setTimeout(t,e))))},{assign:Oi}=Object,xi={},Mi="listenerMiddleware",ji=(e,t)=>(r,i)=>{wi(r,"taskExecutor");const s=new AbortController;var n;n=s,Ti(e,(()=>ki(n,e.reason)));const a=(async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(e){return{status:e instanceof Si?"cancelled":"rejected",error:e}}finally{t?.()}})((async()=>{Pi(e),Pi(s.signal);const t=await r({pause:Ii(s.signal),delay:Ei(s.signal),signal:s.signal});return Pi(s.signal),t}),(()=>ki(s,_i)));return i?.autoJoin&&t.push(a.catch(Ci)),{result:Ii(e)(a),cancel(){ki(s,vi)}}},Li=(e,t)=>(r,i)=>Ri((async(r,i)=>{Pi(t);let s=()=>{};const n=[new Promise(((t,i)=>{let n=e({predicate:r,effect:(e,r)=>{r.unsubscribe(),t([e,r.getState(),r.getOriginalState()])}});s=()=>{n(),i()}}))];null!=i&&n.push(new Promise((e=>setTimeout(e,i,null))));try{const e=await Di(t,Promise.race(n));return Pi(t),e}finally{s()}})(r,i)),Ai=e=>{let{type:t,actionCreator:r,matcher:i,predicate:s,effect:n}=e;if(t)s=Jr(t).match;else if(r)t=r.type,s=r.match;else if(i)s=i;else if(!s)throw new Error("Creating or removing a listener requires one of the known fields for matching an action");return wi(n,"options.listener"),{predicate:s,type:t,effect:n}},Ni=Object.assign((e=>{const{type:t,predicate:r,effect:i}=Ai(e);return{id:ei(),effect:i,type:t,predicate:r,pending:new Set,unsubscribe:()=>{throw new Error("Unsubscribe not initialized")}}}),{withTypes:()=>Ni}),Bi=e=>{e.pending.forEach((e=>{ki(e,bi)}))},Fi=(e,t,r)=>{try{e(t,r)}catch(e){setTimeout((()=>{throw e}),0)}},$i=Object.assign(Jr(`${Mi}/add`),{withTypes:()=>$i}),Vi=Jr(`${Mi}/removeAll`),Ui=Object.assign(Jr(`${Mi}/remove`),{withTypes:()=>Ui}),zi=(...e)=>{console.error(`${Mi}/error`,...e)};function qi(){}function Gi(){Gi.init.call(this)}function Wi(e){return void 0===e._maxListeners?Gi.defaultMaxListeners:e._maxListeners}function Hi(e,t,r,i){var s,n,a,o;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((n=e._events)?(n.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),n=e._events),a=n[t]):(n=e._events=new qi,e._eventsCount=0),a){if("function"==typeof a?a=n[t]=i?[r,a]:[a,r]:i?a.unshift(r):a.push(r),!a.warned&&(s=Wi(e))&&s>0&&a.length>s){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=n[t]=r,++e._eventsCount;return e}function Ki(e,t,r){var i=!1;function s(){e.removeListener(t,s),i||(i=!0,r.apply(e,arguments))}return s.listener=r,s}function Ji(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 Qi(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}qi.prototype=Object.create(null),Gi.EventEmitter=Gi,Gi.usingDomains=!1,Gi.prototype.domain=void 0,Gi.prototype._events=void 0,Gi.prototype._maxListeners=void 0,Gi.defaultMaxListeners=10,Gi.init=function(){this.domain=null,Gi.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new qi,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Gi.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},Gi.prototype.getMaxListeners=function(){return Wi(this)},Gi.prototype.emit=function(e){var t,r,i,s,n,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,s=Qi(e,i),n=0;n<i;++n)s[n].call(r)}(r,l,this);break;case 2:!function(e,t,r,i){if(t)e.call(r,i);else for(var s=e.length,n=Qi(e,s),a=0;a<s;++a)n[a].call(r,i)}(r,l,this,arguments[1]);break;case 3:!function(e,t,r,i,s){if(t)e.call(r,i,s);else for(var n=e.length,a=Qi(e,n),o=0;o<n;++o)a[o].call(r,i,s)}(r,l,this,arguments[1],arguments[2]);break;case 4:!function(e,t,r,i,s,n){if(t)e.call(r,i,s,n);else for(var a=e.length,o=Qi(e,a),c=0;c<a;++c)o[c].call(r,i,s,n)}(r,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(s=new Array(i-1),n=1;n<i;n++)s[n-1]=arguments[n];!function(e,t,r,i){if(t)e.apply(r,i);else for(var s=e.length,n=Qi(e,s),a=0;a<s;++a)n[a].apply(r,i)}(r,l,this,s)}return!0},Gi.prototype.addListener=function(e,t){return Hi(this,e,t,!1)},Gi.prototype.on=Gi.prototype.addListener,Gi.prototype.prependListener=function(e,t){return Hi(this,e,t,!0)},Gi.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,Ki(this,e,t)),this},Gi.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,Ki(this,e,t)),this},Gi.prototype.removeListener=function(e,t){var r,i,s,n,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 qi:(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(s=-1,n=r.length;n-- >0;)if(r[n]===t||r[n].listener&&r[n].listener===t){a=r[n].listener,s=n;break}if(s<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new qi,this;delete i[e]}else!function(e,t){for(var r=t,i=r+1,s=e.length;i<s;r+=1,i+=1)e[r]=e[i];e.pop()}(r,s);i.removeListener&&this.emit("removeListener",e,a||t)}return this},Gi.prototype.off=function(e,t){return this.removeListener(e,t)},Gi.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new qi,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new qi:delete r[e]),this;if(0===arguments.length){for(var i,s=Object.keys(r),n=0;n<s.length;++n)"removeListener"!==(i=s[n])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=new qi,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},Gi.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},Gi.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):Ji.call(e,t)},Gi.prototype.listenerCount=Ji,Gi.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};var Zi="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Yi(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Xi,es,ts={},rs={exports:{}};function is(){if(es)return Xi;es=1;var e=1e3,t=60*e,r=60*t,i=24*r,s=7*i,n=365.25*i;function a(e,t,r,i){var s=t>=1.5*r;return Math.round(e/r)+" "+i+(s?"s":"")}return Xi=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*n;case"weeks":case"week":case"w":return c*s;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(s){var n=Math.abs(s);if(n>=i)return a(s,n,i,"day");if(n>=r)return a(s,n,r,"hour");if(n>=t)return a(s,n,t,"minute");if(n>=e)return a(s,n,e,"second");return s+" ms"}(o):function(s){var n=Math.abs(s);if(n>=i)return Math.round(s/i)+"d";if(n>=r)return Math.round(s/r)+"h";if(n>=t)return Math.round(s/t)+"m";if(n>=e)return Math.round(s/e)+"s";return s+"ms"}(o);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(o))}}var ss=function(e){function t(e){let i,s,n,a=null;function o(...e){if(!o.enabled)return;const r=o,s=Number(new Date),n=s-(i||s);r.diff=n,r.prev=i,r.curr=s,i=s,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,s)=>{if("%%"===i)return"%";a++;const n=t.formatters[s];if("function"==typeof n){const t=e[a];i=n.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:(s!==t.namespaces&&(s=t.namespaces,n=t.enabled(e)),n),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,]+/),s=i.length;for(r=0;r<s;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=is(),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,s=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(i++,"%c"===e&&(s=i))})),t.splice(s,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=ss(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(rs,rs.exports);var ns,as,os=rs.exports,cs={},ds={exports:{}};ns=ds,as=ds.exports,function(e,t){var r="function",i="undefined",s="object",n="string",a="major",o="model",c="name",d="type",l="vendor",p="version",u="architecture",h="console",m="mobile",f="tablet",g="smarttv",v="wearable",_="embedded",b="Amazon",y="Apple",S="ASUS",w="BlackBerry",C="Browser",R="Chrome",T="Firefox",k="Google",P="Huawei",D="LG",I="Microsoft",E="Motorola",O="Opera",x="Samsung",M="Sharp",j="Sony",L="Xiaomi",A="Zebra",N="Facebook",B="Chromium OS",F="Mac OS",$=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===n&&-1!==U(t).indexOf(U(e))},U=function(e){return e.toLowerCase()},z=function(e,t){if(typeof e===n)return e=e.replace(/^\s\s*/,""),typeof t===i?e:e.substring(0,500)},q=function(e,i){for(var n,a,o,c,d,l,p=0;p<i.length&&!d;){var u=i[p],h=i[p+1];for(n=a=0;n<u.length&&!d&&u[n];)if(d=u[n++].exec(e))for(o=0;o<h.length;o++)l=d[++a],typeof(c=h[o])===s&&c.length>0?2===c.length?typeof c[1]==r?this[c[0]]=c[1].call(this,l):this[c[0]]=c[1]:3===c.length?typeof c[1]!==r||c[1].exec&&c[1].test?this[c[0]]=l?l.replace(c[1],c[2]):t:this[c[0]]=l?c[1].call(this,l,c[2]):t:4===c.length&&(this[c[0]]=l?c[3].call(this,l.replace(c[1],c[2])):t):this[c]=l||t;p+=2}},G=function(e,r){for(var i in r)if(typeof r[i]===s&&r[i].length>0){for(var n=0;n<r[i].length;n++)if(V(r[i][n],e))return"?"===i?t:i}else if(V(r[i],e))return"?"===i?t:i;return e},W={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"},H={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[p,[c,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[p,[c,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[c,p],[/opios[\/ ]+([\w\.]+)/i],[p,[c,O+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[p,[c,O+" GX"]],[/\bopr\/([\w\.]+)/i],[p,[c,O]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[p,[c,"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],[c,p],[/\bddg\/([\w\.]+)/i],[p,[c,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[p,[c,"UC"+C]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[p,[c,"WeChat"]],[/konqueror\/([\w\.]+)/i],[p,[c,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[p,[c,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[p,[c,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[p,[c,"Smart Lenovo "+C]],[/(avast|avg)\/([\w\.]+)/i],[[c,/(.+)/,"$1 Secure "+C],p],[/\bfocus\/([\w\.]+)/i],[p,[c,T+" Focus"]],[/\bopt\/([\w\.]+)/i],[p,[c,O+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[p,[c,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[p,[c,"Dolphin"]],[/coast\/([\w\.]+)/i],[p,[c,O+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[p,[c,"MIUI "+C]],[/fxios\/([-\w\.]+)/i],[p,[c,T]],[/\bqihu|(qi?ho?o?|360)browser/i],[[c,"360 "+C]],[/(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i],[[c,/(.+)/,"$1 "+C],p],[/samsungbrowser\/([\w\.]+)/i],[p,[c,x+" Internet"]],[/(comodo_dragon)\/([\w\.]+)/i],[[c,/_/g," "],p],[/metasr[\/ ]?([\d\.]+)/i],[p,[c,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[c,"Sogou Mobile"],p],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i],[c,p],[/(lbbrowser)/i,/\[(linkedin)app\]/i],[c],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[c,N],p],[/(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,/(twitter)(?:and| f.+e\/([\w\.]+))/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[c,p],[/\bgsa\/([\w\.]+) .*safari\//i],[p,[c,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[p,[c,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[p,[c,R+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[c,R+" WebView"],p],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[p,[c,"Android "+C]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[c,p],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[p,[c,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[p,c],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[c,[p,G,{"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],[c,p],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[c,"Netscape"],p],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[p,[c,T+" 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],[c,p],[/(cobalt)\/([\w\.]+)/i],[c,[p,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[u,"amd64"]],[/(ia32(?=;))/i],[[u,U]],[/((?:i[346]|x)86)[;\)]/i],[[u,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[u,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[u,"armhf"]],[/windows (ce|mobile); ppc;/i],[[u,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[u,/ower/,"",U]],[/(sun4\w)[;\)]/i],[[u,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[u,U]]],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],[o,[l,x],[d,f]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[o,[l,x],[d,m]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[o,[l,y],[d,m]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[o,[l,y],[d,f]],[/(macintosh);/i],[o,[l,y]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[o,[l,M],[d,m]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[o,[l,P],[d,f]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[o,[l,P],[d,m]],[/\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],[[o,/_/g," "],[l,L],[d,m]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[o,/_/g," "],[l,L],[d,f]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[o,[l,"OPPO"],[d,m]],[/\b(opd2\d{3}a?) bui/i],[o,[l,"OPPO"],[d,f]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[o,[l,"Vivo"],[d,m]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[o,[l,"Realme"],[d,m]],[/\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],[o,[l,E],[d,m]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[o,[l,E],[d,f]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[o,[l,D],[d,f]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[o,[l,D],[d,m]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[o,[l,"Lenovo"],[d,f]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[o,/_/g," "],[l,"Nokia"],[d,m]],[/(pixel c)\b/i],[o,[l,k],[d,f]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[o,[l,k],[d,m]],[/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],[o,[l,j],[d,m]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[o,"Xperia Tablet"],[l,j],[d,f]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[o,[l,"OnePlus"],[d,m]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[o,[l,b],[d,f]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[o,/(.+)/g,"Fire Phone $1"],[l,b],[d,m]],[/(playbook);[-\w\),; ]+(rim)/i],[o,l,[d,f]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[o,[l,w],[d,m]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[o,[l,S],[d,f]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[o,[l,S],[d,m]],[/(nexus 9)/i],[o,[l,"HTC"],[d,f]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[l,[o,/_/g," "],[d,m]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[o,[l,"Acer"],[d,f]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[o,[l,"Meizu"],[d,m]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[o,[l,"Ulefone"],[d,m]],[/(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],[l,o,[d,m]],[/(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],[l,o,[d,f]],[/(surface duo)/i],[o,[l,I],[d,f]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[o,[l,"Fairphone"],[d,m]],[/(u304aa)/i],[o,[l,"AT&T"],[d,m]],[/\bsie-(\w*)/i],[o,[l,"Siemens"],[d,m]],[/\b(rct\w+) b/i],[o,[l,"RCA"],[d,f]],[/\b(venue[\d ]{2,7}) b/i],[o,[l,"Dell"],[d,f]],[/\b(q(?:mv|ta)\w+) b/i],[o,[l,"Verizon"],[d,f]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[o,[l,"Barnes & Noble"],[d,f]],[/\b(tm\d{3}\w+) b/i],[o,[l,"NuVision"],[d,f]],[/\b(k88) b/i],[o,[l,"ZTE"],[d,f]],[/\b(nx\d{3}j) b/i],[o,[l,"ZTE"],[d,m]],[/\b(gen\d{3}) b.+49h/i],[o,[l,"Swiss"],[d,m]],[/\b(zur\d{3}) b/i],[o,[l,"Swiss"],[d,f]],[/\b((zeki)?tb.*\b) b/i],[o,[l,"Zeki"],[d,f]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[l,"Dragon Touch"],o,[d,f]],[/\b(ns-?\w{0,9}) b/i],[o,[l,"Insignia"],[d,f]],[/\b((nxa|next)-?\w{0,9}) b/i],[o,[l,"NextBook"],[d,f]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[l,"Voice"],o,[d,m]],[/\b(lvtel\-)?(v1[12]) b/i],[[l,"LvTel"],o,[d,m]],[/\b(ph-1) /i],[o,[l,"Essential"],[d,m]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[o,[l,"Envizen"],[d,f]],[/\b(trio[-\w\. ]+) b/i],[o,[l,"MachSpeed"],[d,f]],[/\btu_(1491) b/i],[o,[l,"Rotor"],[d,f]],[/(shield[\w ]+) b/i],[o,[l,"Nvidia"],[d,f]],[/(sprint) (\w+)/i],[l,o,[d,m]],[/(kin\.[onetw]{3})/i],[[o,/\./g," "],[l,I],[d,m]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[o,[l,A],[d,f]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[o,[l,A],[d,m]],[/smart-tv.+(samsung)/i],[l,[d,g]],[/hbbtv.+maple;(\d+)/i],[[o,/^/,"SmartTV"],[l,x],[d,g]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[l,D],[d,g]],[/(apple) ?tv/i],[l,[o,y+" TV"],[d,g]],[/crkey/i],[[o,R+"cast"],[l,k],[d,g]],[/droid.+aft(\w+)( bui|\))/i],[o,[l,b],[d,g]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[o,[l,M],[d,g]],[/(bravia[\w ]+)( bui|\))/i],[o,[l,j],[d,g]],[/(mitv-\w{5}) bui/i],[o,[l,L],[d,g]],[/Hbbtv.*(technisat) (.*);/i],[l,o,[d,g]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[l,z],[o,z],[d,g]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[d,g]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[l,o,[d,h]],[/droid.+; (shield) bui/i],[o,[l,"Nvidia"],[d,h]],[/(playstation [345portablevi]+)/i],[o,[l,j],[d,h]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[o,[l,I],[d,h]],[/((pebble))app/i],[l,o,[d,v]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[o,[l,y],[d,v]],[/droid.+; (glass) \d/i],[o,[l,k],[d,v]],[/droid.+; (wt63?0{2,3})\)/i],[o,[l,A],[d,v]],[/(quest( \d| pro)?)/i],[o,[l,N],[d,v]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[l,[d,_]],[/(aeobc)\b/i],[o,[l,b],[d,_]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[o,[d,m]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[o,[d,f]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[d,f]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[d,m]],[/(android[-\w\. ]{0,9});.+buil/i],[o,[l,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[p,[c,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[p,[c,"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],[c,p],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[p,c]],os:[[/microsoft (windows) (vista|xp)/i],[c,p],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[c,[p,G,W]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[p,G,W],[c,"Windows"]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[p,/_/g,"."],[c,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[c,F],[p,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[p,c],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[c,p],[/\(bb(10);/i],[p,[c,w]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[p,[c,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[p,[c,T+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[p,[c,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[p,[c,"watchOS"]],[/crkey\/([\d\.]+)/i],[p,[c,R+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[c,B],p],[/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],[c,p],[/(sunos) ?([\w\.\d]*)/i],[[c,"Solaris"],p],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[c,p]]},K=function(h,g){if(typeof h===s&&(g=h,h=t),!(this instanceof K))return new K(h,g).getResult();var v=typeof e!==i&&e.navigator?e.navigator:t,_=h||(v&&v.userAgent?v.userAgent:""),b=v&&v.userAgentData?v.userAgentData:t,y=g?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}(H,g):H,S=v&&v.userAgent==_;return this.getBrowser=function(){var e,i={};return i[c]=t,i[p]=t,q.call(i,_,y.browser),i[a]=typeof(e=i[p])===n?e.replace(/[^\d\.]/g,"").split(".")[0]:t,S&&v&&v.brave&&typeof v.brave.isBrave==r&&(i[c]="Brave"),i},this.getCPU=function(){var e={};return e[u]=t,q.call(e,_,y.cpu),e},this.getDevice=function(){var e={};return e[l]=t,e[o]=t,e[d]=t,q.call(e,_,y.device),S&&!e[d]&&b&&b.mobile&&(e[d]=m),S&&"Macintosh"==e[o]&&v&&typeof v.standalone!==i&&v.maxTouchPoints&&v.maxTouchPoints>2&&(e[o]="iPad",e[d]=f),e},this.getEngine=function(){var e={};return e[c]=t,e[p]=t,q.call(e,_,y.engine),e},this.getOS=function(){var e={};return e[c]=t,e[p]=t,q.call(e,_,y.os),S&&!e[c]&&b&&b.platform&&"Unknown"!=b.platform&&(e[c]=b.platform.replace(/chrome os/i,B).replace(/macos/i,F)),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===n&&e.length>500?z(e,500):e,this},this.setUA(_),this};K.VERSION="1.0.38",K.BROWSER=$([c,p,a]),K.CPU=$([u]),K.DEVICE=$([o,l,d,h,m,g,f,v,_]),K.ENGINE=K.OS=$([c,p]),ns.exports&&(as=ns.exports=K),as.UAParser=K;var J=typeof e!==i&&(e.jQuery||e.Zepto);if(J&&!J.ua){var Q=new K;J.ua=Q.getResult(),J.ua.get=function(){return Q.getUA()},J.ua.set=function(e){Q.setUA(e);var t=Q.getResult();for(var r in t)J.ua[r]=t[r]}}}("object"==typeof window?window:Zi);var ls=ds.exports,ps={},us=Zi&&Zi.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ps,"__esModule",{value:!0}),ps.Logger=void 0;const hs=us(os),ms="mediasoup-client";ps.Logger=class{constructor(e){e?(this._debug=(0,hs.default)(`${ms}:${e}`),this._warn=(0,hs.default)(`${ms}:WARN:${e}`),this._error=(0,hs.default)(`${ms}:ERROR:${e}`)):(this._debug=(0,hs.default)(ms),this._warn=(0,hs.default)(`${ms}:WARN`),this._error=(0,hs.default)(`${ms}: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 fs,gs={},vs={exports:{}},_s="object"==typeof Reflect?Reflect:null,bs=_s&&"function"==typeof _s.apply?_s.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)};fs=_s&&"function"==typeof _s.ownKeys?_s.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var ys=Number.isNaN||function(e){return e!=e};function Ss(){Ss.init.call(this)}vs.exports=Ss,vs.exports.once=function(e,t){return new Promise((function(r,i){function s(r){e.removeListener(t,n),i(r)}function n(){"function"==typeof e.removeListener&&e.removeListener("error",s),r([].slice.call(arguments))}Os(e,t,n,{once:!0}),"error"!==t&&function(e,t,r){"function"==typeof e.on&&Os(e,"error",t,r)}(e,s,{once:!0})}))},Ss.EventEmitter=Ss,Ss.prototype._events=void 0,Ss.prototype._eventsCount=0,Ss.prototype._maxListeners=void 0;var ws=10;function Cs(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function Rs(e){return void 0===e._maxListeners?Ss.defaultMaxListeners:e._maxListeners}function Ts(e,t,r,i){var s,n,a;if(Cs(r),void 0===(n=e._events)?(n=e._events=Object.create(null),e._eventsCount=0):(void 0!==n.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),n=e._events),a=n[t]),void 0===a)a=n[t]=r,++e._eventsCount;else if("function"==typeof a?a=n[t]=i?[r,a]:[a,r]:i?a.unshift(r):a.push(r),(s=Rs(e))>0&&a.length>s&&!a.warned){a.warned=!0;var o=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");o.name="MaxListenersExceededWarning",o.emitter=e,o.type=t,o.count=a.length,function(e){console&&console.warn&&console.warn(e)}(o)}return e}function ks(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function Ps(e,t,r){var i={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},s=ks.bind(i);return s.listener=r,i.wrapFn=s,s}function Ds(e,t,r){var i=e._events;if(void 0===i)return[];var s=i[t];return void 0===s?[]:"function"==typeof s?r?[s.listener||s]:[s]:r?function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(s):Es(s,s.length)}function Is(e){var t=this._events;if(void 0!==t){var r=t[e];if("function"==typeof r)return 1;if(void 0!==r)return r.length}return 0}function Es(e,t){for(var r=new Array(t),i=0;i<t;++i)r[i]=e[i];return r}function Os(e,t,r,i){if("function"==typeof e.on)i.once?e.once(t,r):e.on(t,r);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,(function s(n){i.once&&e.removeEventListener(t,s),r(n)}))}}Object.defineProperty(Ss,"defaultMaxListeners",{enumerable:!0,get:function(){return ws},set:function(e){if("number"!=typeof e||e<0||ys(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");ws=e}}),Ss.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Ss.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||ys(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},Ss.prototype.getMaxListeners=function(){return Rs(this)},Ss.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var i="error"===e,s=this._events;if(void 0!==s)i=i&&void 0===s.error;else if(!i)return!1;if(i){var n;if(t.length>0&&(n=t[0]),n instanceof Error)throw n;var a=new Error("Unhandled error."+(n?" ("+n.message+")":""));throw a.context=n,a}var o=s[e];if(void 0===o)return!1;if("function"==typeof o)bs(o,this,t);else{var c=o.length,d=Es(o,c);for(r=0;r<c;++r)bs(d[r],this,t)}return!0},Ss.prototype.addListener=function(e,t){return Ts(this,e,t,!1)},Ss.prototype.on=Ss.prototype.addListener,Ss.prototype.prependListener=function(e,t){return Ts(this,e,t,!0)},Ss.prototype.once=function(e,t){return Cs(t),this.on(e,Ps(this,e,t)),this},Ss.prototype.prependOnceListener=function(e,t){return Cs(t),this.prependListener(e,Ps(this,e,t)),this},Ss.prototype.removeListener=function(e,t){var r,i,s,n,a;if(Cs(t),void 0===(i=this._events))return this;if(void 0===(r=i[e]))return this;if(r===t||r.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(s=-1,n=r.length-1;n>=0;n--)if(r[n]===t||r[n].listener===t){a=r[n].listener,s=n;break}if(s<0)return this;0===s?r.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(r,s),1===r.length&&(i[e]=r[0]),void 0!==i.removeListener&&this.emit("removeListener",e,a||t)}return this},Ss.prototype.off=Ss.prototype.removeListener,Ss.prototype.removeAllListeners=function(e){var t,r,i;if(void 0===(r=this._events))return this;if(void 0===r.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==r[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete r[e]),this;if(0===arguments.length){var s,n=Object.keys(r);for(i=0;i<n.length;++i)"removeListener"!==(s=n[i])&&this.removeAllListeners(s);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(void 0!==t)for(i=t.length-1;i>=0;i--)this.removeListener(e,t[i]);return this},Ss.prototype.listeners=function(e){return Ds(this,e,!0)},Ss.prototype.rawListeners=function(e){return Ds(this,e,!1)},Ss.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):Is.call(e,t)},Ss.prototype.listenerCount=Is,Ss.prototype.eventNames=function(){return this._eventsCount>0?fs(this._events):[]};var xs=vs.exports;Object.defineProperty(gs,"__esModule",{value:!0}),gs.EnhancedEventEmitter=void 0;const Ms=xs,js=new ps.Logger("EnhancedEventEmitter");class Ls extends Ms.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 js.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)}}gs.EnhancedEventEmitter=Ls;var As={};Object.defineProperty(As,"__esModule",{value:!0}),As.InvalidStateError=As.UnsupportedError=void 0;class Ns extends Error{constructor(e){super(e),this.name="UnsupportedError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Ns):this.stack=new Error(e).stack}}As.UnsupportedError=Ns;class Bs extends Error{constructor(e){super(e),this.name="InvalidStateError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Bs):this.stack=new Error(e).stack}}As.InvalidStateError=Bs;var Fs={};Object.defineProperty(Fs,"__esModule",{value:!0}),Fs.clone=function(e){return void 0===e?void 0:Number.isNaN(e)?NaN:"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))},Fs.generateRandomNumber=function(){return Math.round(1e7*Math.random())},Fs.deepFreeze=function e(t){const r=Reflect.ownKeys(t);for(const i of r){const r=t[i];(r&&"object"==typeof r||"function"==typeof r)&&e(r)}return Object.freeze(t)};var $s={},Vs={},Us={},zs=Zi&&Zi.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Us,"__esModule",{value:!0}),Us.Logger=void 0;const qs=zs(os),Gs="h264-profile-level-id";Us.Logger=class{constructor(e){e?(this._debug=(0,qs.default)(`${Gs}:${e}`),this._warn=(0,qs.default)(`${Gs}:WARN:${e}`),this._error=(0,qs.default)(`${Gs}:ERROR:${e}`)):(this._debug=(0,qs.default)(Gs),this._warn=(0,qs.default)(`${Gs}:WARN`),this._error=(0,qs.default)(`${Gs}: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(Vs,"__esModule",{value:!0}),Vs.generateProfileLevelIdStringForAnswer=Vs.isSameProfile=Vs.parseSdpProfileLevelId=Vs.levelToString=Vs.profileToString=Vs.profileLevelIdToString=Vs.parseProfileLevelId=Vs.ProfileLevelId=Vs.Level=Vs.Profile=void 0;const Ws=new Us.Logger;var Hs,Ks;!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"}(Hs||(Vs.Profile=Hs={})),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"}(Ks||(Vs.Level=Ks={}));class Js{constructor(e,t){this.profile=e,this.level=t}}Vs.ProfileLevelId=Js;const Qs=new Js(Hs.ConstrainedBaseline,Ks.L3_1);class Zs{constructor(e){this.mask=~sn("x",e),this.masked_value=sn("1",e)}isMatch(e){return this.masked_value===(e&this.mask)}}class Ys{constructor(e,t,r){this.profile_idc=e,this.profile_iop=t,this.profile=r}}const Xs=[new Ys(66,new Zs("x1xx0000"),Hs.ConstrainedBaseline),new Ys(77,new Zs("1xxx0000"),Hs.ConstrainedBaseline),new Ys(88,new Zs("11xx0000"),Hs.ConstrainedBaseline),new Ys(66,new Zs("x0xx0000"),Hs.Baseline),new Ys(88,new Zs("10xx0000"),Hs.Baseline),new Ys(77,new Zs("0x0x0000"),Hs.Main),new Ys(100,new Zs("00000000"),Hs.High),new Ys(100,new Zs("00001100"),Hs.ConstrainedHigh),new Ys(244,new Zs("00000000"),Hs.PredictiveHigh444)];function en(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,s=t>>16&255;let n;switch(r){case Ks.L1_1:n=0!=(16&i)?Ks.L1_b:Ks.L1_1;break;case Ks.L1:case Ks.L1_2:case Ks.L1_3:case Ks.L2:case Ks.L2_1:case Ks.L2_2:case Ks.L3:case Ks.L3_1:case Ks.L3_2:case Ks.L4:case Ks.L4_1:case Ks.L4_2:case Ks.L5:case Ks.L5_1:case Ks.L5_2:n=r;break;default:return void Ws.warn(`parseProfileLevelId() | unrecognized level_idc [str:${e}, level_idc:${r}]`)}for(const e of Xs)if(s===e.profile_idc&&e.profile_iop.isMatch(i))return new Js(e.profile,n);Ws.warn(`parseProfileLevelId() | unrecognized profile_idc/profile_iop combination [str:${e}, profile_idc:${s}, profile_iop:${i}]`)}function tn(e){if(e.level==Ks.L1_b)switch(e.profile){case Hs.ConstrainedBaseline:return"42f00b";case Hs.Baseline:return"42100b";case Hs.Main:return"4d100b";default:return void Ws.warn(`profileLevelIdToString() | Level 1_b not is allowed for profile ${e.profile}`)}let t;switch(e.profile){case Hs.ConstrainedBaseline:t="42e0";break;case Hs.Baseline:t="4200";break;case Hs.Main:t="4d00";break;case Hs.ConstrainedHigh:t="640c";break;case Hs.High:t="6400";break;case Hs.PredictiveHigh444:t="f400";break;default:return void Ws.warn(`profileLevelIdToString() | unrecognized profile ${e.profile}`)}let r=e.level.toString(16);return 1===r.length&&(r=`0${r}`),`${t}${r}`}function rn(e={}){const t=e["profile-level-id"];return t?en(t):Qs}function sn(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 nn(e={}){const t=e["level-asymmetry-allowed"];return!0===t||1===t||"1"===t}Vs.parseProfileLevelId=en,Vs.profileLevelIdToString=tn,Vs.profileToString=function(e){switch(e){case Hs.ConstrainedBaseline:return"ConstrainedBaseline";case Hs.Baseline:return"Baseline";case Hs.Main:return"Main";case Hs.ConstrainedHigh:return"ConstrainedHigh";case Hs.High:return"High";case Hs.PredictiveHigh444:return"PredictiveHigh444";default:return void Ws.warn(`profileToString() | unrecognized profile ${e}`)}},Vs.levelToString=function(e){switch(e){case Ks.L1_b:return"1b";case Ks.L1:return"1";case Ks.L1_1:return"1.1";case Ks.L1_2:return"1.2";case Ks.L1_3:return"1.3";case Ks.L2:return"2";case Ks.L2_1:return"2.1";case Ks.L2_2:return"2.2";case Ks.L3:return"3";case Ks.L3_1:return"3.1";case Ks.L3_2:return"3.2";case Ks.L4:return"4";case Ks.L4_1:return"4.1";case Ks.L4_2:return"4.2";case Ks.L5:return"5";case Ks.L5_1:return"5.1";case Ks.L5_2:return"5.2";default:return void Ws.warn(`levelToString() | unrecognized level ${e}`)}},Vs.parseSdpProfileLevelId=rn,Vs.isSameProfile=function(e={},t={}){const r=rn(e),i=rn(t);return Boolean(r&&i&&r.profile===i.profile)},Vs.generateProfileLevelIdStringForAnswer=function(e={},t={}){if(!e["profile-level-id"]&&!t["profile-level-id"])return void Ws.warn("generateProfileLevelIdStringForAnswer() | profile-level-id missing in local and remote params");const r=rn(e),i=rn(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 s=nn(e)&&nn(t),n=r.level,a=i.level,o=function(e,t){return e===Ks.L1_b?t!==Ks.L1&&t!==Ks.L1_b:t===Ks.L1_b?e!==Ks.L1:e<t}(c=n,d=a)?c:d;var c,d;const l=s?n:o;return Ws.debug(`generateProfileLevelIdStringForAnswer() | result [profile:${r.profile}, level:${l}]`),tn(new Js(r.profile,l))};var an=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),on=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),cn=Zi&&Zi.__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 on(t,e),t};Object.defineProperty($s,"__esModule",{value:!0}),$s.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)fn(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)vn(t)},$s.validateRtpParameters=mn,$s.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;"boolean"==typeof e.ordered?t=!0:e.ordered=!0;if(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");t||!e.maxPacketLifeTime&&!e.maxRetransmits||(e.ordered=!1);if(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")},$s.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)},$s.getExtendedRtpCapabilities=function(e,t){const r={codecs:[],headerExtensions:[]};for(const i of t.codecs||[]){if(Sn(i))continue;const t=(e.codecs||[]).find((e=>wn(e,i,{strict:!0,modify:!0})));if(!t)continue;const s={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:Rn(t,i)};r.codecs.push(s)}for(const i of r.codecs){const r=e.codecs.find((e=>Sn(e)&&e.parameters.apt===i.localPayloadType)),s=t.codecs.find((e=>Sn(e)&&e.parameters.apt===i.remotePayloadType));r&&s&&(i.localRtxPayloadType=r.preferredPayloadType,i.remoteRtxPayloadType=s.preferredPayloadType)}for(const i of t.headerExtensions){const t=e.headerExtensions.find((e=>Cn(e,i)));if(!t)continue;const s={kind:i.kind,uri:i.uri,sendId:t.preferredId,recvId:i.preferredId,encrypt:t.preferredEncrypt,direction:"sendrecv"};switch(i.direction){case"sendrecv":s.direction="sendrecv";break;case"recvonly":s.direction="sendonly";break;case"sendonly":s.direction="recvonly";break;case"inactive":s.direction="inactive"}r.headerExtensions.push(s)}return r},$s.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},$s.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},$s.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},$s.reduceCodecs=function(e,t){const r=[];if(t){for(let i=0;i<e.length;++i)if(wn(e[i],t,{strict:!0})){r.push(e[i]),Sn(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]),Sn(e[1])&&r.push(e[1]);return r},$s.generateProbatorRtpParameters=function(e){mn(e=ln.clone(e));const t={mid:pn,codecs:[],headerExtensions:[],encodings:[{ssrc:un}],rtcp:{cname:"probator"}};return t.codecs.push(e.codecs[0]),t.codecs[0].payloadType=hn,t.headerExtensions=e.headerExtensions,t},$s.canSend=function(e,t){return t.codecs.some((t=>t.kind===e))},$s.canReceive=function(e,t){if(mn(e),0===e.codecs.length)return!1;const r=e.codecs[0];return t.codecs.some((e=>e.remotePayloadType===r.payloadType))};const dn=cn(Vs),ln=cn(Fs),pn="probator",un=1234,hn=127;function mn(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)_n(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)bn(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)yn(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 fn(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)gn(t)}function gn(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 vn(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 _n(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)gn(t)}function bn(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 yn(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 Sn(e){return!!e&&/.+\/rtx$/i.test(e.mimeType)}function wn(e,t,{strict:r=!1,modify:i=!1}={}){const s=e.mimeType.toLowerCase();if(s!==t.mimeType.toLowerCase())return!1;if(e.clockRate!==t.clockRate)return!1;if(e.channels!==t.channels)return!1;switch(s){case"video/h264":if(r){if((e.parameters["packetization-mode"]||0)!==(t.parameters["packetization-mode"]||0))return!1;if(!dn.isSameProfile(e.parameters,t.parameters))return!1;let r;try{r=dn.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 Cn(e,t){return(!e.kind||!t.kind||e.kind===t.kind)&&e.uri===t.uri}function Rn(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}var Tn={},kn={},Pn={};Object.defineProperty(Pn,"__esModule",{value:!0}),Pn.Logger=void 0;const Dn=os,In="awaitqueue";Pn.Logger=class{constructor(e){e?(this._debug=(0,Dn.default)(`${In}:${e}`),this._warn=(0,Dn.default)(`${In}:WARN:${e}`),this._error=(0,Dn.default)(`${In}:ERROR:${e}`)):(this._debug=(0,Dn.default)(In),this._warn=(0,Dn.default)(`${In}:WARN`),this._error=(0,Dn.default)(`${In}: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(kn,"__esModule",{value:!0}),kn.AwaitQueue=kn.AwaitQueueRemovedTaskError=kn.AwaitQueueStoppedError=void 0;const En=new Pn.Logger;class On extends Error{constructor(e){super(e??"AwaitQueue stopped"),this.name="AwaitQueueStoppedError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,On)}}kn.AwaitQueueStoppedError=On;class xn extends Error{constructor(e){super(e??"AwaitQueue task removed"),this.name="AwaitQueueRemovedTaskError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,xn)}}kn.AwaitQueueRemovedTaskError=xn;
11
11
  /*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
12
- let Mn;kn.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,En.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 s={id:this.nextTaskId++,task:e,name:t,enqueuedAt:Date.now(),executedAt:void 0,completed:!1,resolve:e=>{if(s.completed)return;s.completed=!0,this.pendingTasks.delete(s.id),En.debug(`resolving task [name:${s.name}]`),r(e);const[t]=this.pendingTasks.values();t&&!t.executedAt&&this.execute(t)},reject:e=>{if(!s.completed&&(s.completed=!0,this.pendingTasks.delete(s.id),En.debug(`rejecting task [name:${s.name}]: %s`,String(e)),i(e),!this.stopping)){const[e]=this.pendingTasks.values();e&&!e.executedAt&&this.execute(e)}}};this.pendingTasks.set(s.id,s),1===this.pendingTasks.size&&this.execute(s)}))}stop(){En.debug("stop()"),this.stopping=!0;for(const e of this.pendingTasks.values())En.debug(`stop() | stopping task [name:${e.name}]`),e.reject(new On);this.stopping=!1}remove(e){En.debug(`remove() [taskIdx:${e}]`);const t=Array.from(this.pendingTasks.values())[e];t?t.reject(new xn):En.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(En.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 jn="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:Zi):e=>(Mn||(Mn=Promise.resolve())).then(e).catch((e=>setTimeout((()=>{throw e}),0))),Ln={};Object.defineProperty(Ln,"__esModule",{value:!0}),Ln.Producer=void 0;const An=gs,Nn=As,Bn=new ps.Logger("Producer");class Fn extends An.EnhancedEventEmitter{constructor({id:e,localId:t,rtpSender:r,track:i,rtpParameters:s,stopTracks:n,disableTrackOnPause:a,zeroRtpOnPause:o,appData:c}){super(),this._closed=!1,this._observer=new An.EnhancedEventEmitter,Bn.debug("constructor()"),this._id=e,this._localId=t,this._rtpSender=r,this._track=i,this._kind=i.kind,this._rtpParameters=s,this._paused=!!a&&!i.enabled,this._maxSpatialLayer=void 0,this._stopTracks=n,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||(Bn.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Bn.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new Nn.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){Bn.debug("pause()"),this._closed?Bn.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(){Bn.debug("resume()"),this._closed?Bn.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(Bn.debug("replaceTrack() [track:%o]",e),this._closed){if(e&&this._stopTracks)try{e.stop()}catch(e){}throw new Nn.InvalidStateError("closed")}if(e&&"ended"===e.readyState)throw new Nn.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()):Bn.debug("replaceTrack() | same track, ignored")}async setMaxSpatialLayer(e){if(this._closed)throw new Nn.InvalidStateError("closed");if("video"!==this._kind)throw new Nn.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 Nn.InvalidStateError("closed");if("object"!=typeof e)throw new TypeError("invalid params");await new Promise(((t,r)=>{this.safeEmit("@setrtpencodingparameters",e,t,r)}))}onTrackEnded(){Bn.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){}}}Ln.Producer=Fn;var $n={};Object.defineProperty($n,"__esModule",{value:!0}),$n.Consumer=void 0;const Vn=gs,Un=As,zn=new ps.Logger("Consumer");class qn extends Vn.EnhancedEventEmitter{constructor({id:e,localId:t,producerId:r,rtpReceiver:i,track:s,rtpParameters:n,appData:a}){super(),this._closed=!1,this._observer=new Vn.EnhancedEventEmitter,zn.debug("constructor()"),this._id=e,this._localId=t,this._producerId=r,this._rtpReceiver=i,this._track=s,this._rtpParameters=n,this._paused=!s.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||(zn.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(zn.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new Un.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){zn.debug("pause()"),this._closed?zn.error("pause() | Consumer closed"):this._paused?zn.debug("pause() | Consumer is already paused"):(this._paused=!0,this._track.enabled=!1,this.emit("@pause"),this._observer.safeEmit("pause"))}resume(){zn.debug("resume()"),this._closed?zn.error("resume() | Consumer closed"):this._paused?(this._paused=!1,this._track.enabled=!0,this.emit("@resume"),this._observer.safeEmit("resume")):zn.debug("resume() | Consumer is already resumed")}onTrackEnded(){zn.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){}}}$n.Consumer=qn;var Gn={};Object.defineProperty(Gn,"__esModule",{value:!0}),Gn.DataProducer=void 0;const Wn=gs,Hn=As,Kn=new ps.Logger("DataProducer");class Jn extends Wn.EnhancedEventEmitter{constructor({id:e,dataChannel:t,sctpStreamParameters:r,appData:i}){super(),this._closed=!1,this._observer=new Wn.EnhancedEventEmitter,Kn.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||(Kn.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Kn.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}send(e){if(Kn.debug("send()"),this._closed)throw new Hn.InvalidStateError("closed");this._dataChannel.send(e)}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(Kn.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?Kn.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):Kn.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(Kn.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(()=>{this._closed||Kn.warn('DataChannel "message" event in a DataProducer, message discarded')})),this._dataChannel.addEventListener("bufferedamountlow",(()=>{this._closed||this.safeEmit("bufferedamountlow")}))}}Gn.DataProducer=Jn;var Qn={};Object.defineProperty(Qn,"__esModule",{value:!0}),Qn.DataConsumer=void 0;const Zn=gs,Yn=new ps.Logger("DataConsumer");class Xn extends Zn.EnhancedEventEmitter{constructor({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:i,appData:s}){super(),this._closed=!1,this._observer=new Zn.EnhancedEventEmitter,Yn.debug("constructor()"),this._id=e,this._dataProducerId=t,this._dataChannel=r,this._sctpStreamParameters=i,this._appData=s||{},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||(Yn.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Yn.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(Yn.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?Yn.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):Yn.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(Yn.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)}))}}Qn.DataConsumer=Xn;var ea=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ta=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ra=Zi&&Zi.__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 ta(t,e),t},ia=Zi&&Zi.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Tn,"__esModule",{value:!0}),Tn.Transport=void 0;const sa=kn,na=ia(jn),aa=ps,oa=gs,ca=As,da=ra(Fs),la=ra($s),pa=Ln,ua=$n,ha=Gn,ma=Qn,fa=new aa.Logger("Transport");class ga{constructor(e){this.consumerOptions=e,this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}let va=class extends oa.EnhancedEventEmitter{constructor({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,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 sa.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 oa.EnhancedEventEmitter,fa.debug("constructor() [id:%s, direction:%s]",t,e),this._id=t,this._direction=e,this._extendedRtpCapabilities=u,this._canProduceByKind=h,this._maxSctpMessageSize=n?n.maxMessageSize:null;const m=da.clone(c)||{};delete m.iceServers,delete m.iceTransportPolicy,delete m.bundlePolicy,delete m.rtcpMuxPolicy,delete m.sdpSemantics,this._handler=p(),this._handler.run({direction:e,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,iceServers:a,iceTransportPolicy:o,additionalSettings:m,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){fa.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 ca.InvalidStateError("closed");return this._handler.getTransportStats()}async restartIce({iceParameters:e}){if(fa.debug("restartIce()"),this._closed)throw new ca.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(fa.debug("updateIceServers()"),this._closed)throw new ca.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:s=!0,disableTrackOnPause:n=!0,zeroRtpOnPause:a=!1,onRtpSender:o,appData:c={}}={}){if(fa.debug("produce() [track:%o]",e),this._closed)throw new ca.InvalidStateError("closed");if(!e)throw new TypeError("missing track");if("send"!==this._direction)throw new ca.UnsupportedError("not a sending Transport");if(!this._canProduceByKind[e.kind])throw new ca.UnsupportedError(`cannot produce ${e.kind}`);if("ended"===e.readyState)throw new ca.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(c&&"object"!=typeof c)throw new TypeError("if given, appData must be an object");return this._awaitQueue.push((async()=>{let d;if(t&&!Array.isArray(t))throw TypeError("encodings must be an array");t&&0===t.length?d=void 0:t&&(d=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:l,rtpParameters:p,rtpSender:u}=await this._handler.send({track:e,encodings:d,codecOptions:r,codec:i,onRtpSender:o});try{la.validateRtpParameters(p);const{id:t}=await new Promise(((t,r)=>{this.safeEmit("produce",{kind:e.kind,rtpParameters:p,appData:c},t,r)})),r=new pa.Producer({id:t,localId:l,rtpSender:u,track:e,rtpParameters:p,stopTracks:s,disableTrackOnPause:n,zeroRtpOnPause:a,appData:c});return this._producers.set(r.id,r),this.handleProducer(r),this._observer.safeEmit("newproducer",r),r}catch(e){throw this._handler.stopSending(l).catch((()=>{})),e}}),"transport.produce()").catch((t=>{if(s)try{e.stop()}catch(e){}throw t}))}async consume({id:e,producerId:t,kind:r,rtpParameters:i,streamId:s,onRtpReceiver:n,appData:a={}}){if(fa.debug("consume()"),this._closed)throw new ca.InvalidStateError("closed");if("recv"!==this._direction)throw new ca.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(a&&"object"!=typeof a)throw new TypeError("if given, appData must be an object");const o=da.clone(i);if(!la.canReceive(o,this._extendedRtpCapabilities))throw new ca.UnsupportedError("cannot consume this Producer");const c=new ga({id:e,producerId:t,kind:r,rtpParameters:o,streamId:s,onRtpReceiver:n,appData:a});return this._pendingConsumerTasks.push(c),(0,na.default)((()=>{this._closed||!1===this._consumerCreationInProgress&&this.createPendingConsumers()})),c.promise}async produceData({ordered:e=!0,maxPacketLifeTime:t,maxRetransmits:r,label:i="",protocol:s="",appData:n={}}={}){if(fa.debug("produceData()"),this._closed)throw new ca.InvalidStateError("closed");if("send"!==this._direction)throw new ca.UnsupportedError("not a sending Transport");if(!this._maxSctpMessageSize)throw new ca.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(n&&"object"!=typeof n)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:s});la.validateSctpStreamParameters(o);const{id:c}=await new Promise(((e,t)=>{this.safeEmit("producedata",{sctpStreamParameters:o,label:i,protocol:s,appData:n},e,t)})),d=new ha.DataProducer({id:c,dataChannel:a,sctpStreamParameters:o,appData:n});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:s="",appData:n={}}){if(fa.debug("consumeData()"),this._closed)throw new ca.InvalidStateError("closed");if("recv"!==this._direction)throw new ca.UnsupportedError("not a receiving Transport");if(!this._maxSctpMessageSize)throw new ca.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(n&&"object"!=typeof n)throw new TypeError("if given, appData must be an object");const a=da.clone(r);return la.validateSctpStreamParameters(a),this._awaitQueue.push((async()=>{const{dataChannel:r}=await this._handler.receiveDataChannel({sctpStreamParameters:a,label:i,protocol:s}),o=new ma.DataConsumer({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:a,appData:n});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 fa.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:s,streamId:n,onRtpReceiver:a}=t.consumerOptions;r.push({trackId:e,kind:i,rtpParameters:s,streamId:n,onRtpReceiver:a})}try{const i=await this._handler.receive(r);for(let r=0;r<i.length;++r){const s=e[r],n=i[r],{id:a,producerId:o,kind:c,rtpParameters:d,appData:l}=s.consumerOptions,{localId:p,rtpReceiver:u,track:h}=n,m=new ua.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),s.resolve(m)}}catch(t){for(const r of e)r.reject(t)}if(t)try{const e=la.generateProbatorRtpParameters(t.rtpParameters);await this._handler.receive([{trackId:"probator",kind:"video",rtpParameters:e}]),fa.debug("createPendingConsumers() | Consumer for RTP probation created"),this._probatorConsumerCreated=!0}catch(e){fa.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 fa.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){fa.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 fa.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){fa.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 fa.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){fa.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",(({dtlsParameters:e},t,r)=>{this._closed?r(new ca.InvalidStateError("closed")):this.safeEmit("connect",{dtlsParameters:e},t,r)})),e.on("@icegatheringstatechange",(e=>{e!==this._iceGatheringState&&(fa.debug("ICE gathering state changed to %s",e),this._iceGatheringState=e,this._closed||this.safeEmit("icegatheringstatechange",e))})),e.on("@connectionstatechange",(e=>{e!==this._connectionState&&(fa.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=>fa.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 ca.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,na.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,na.default)((()=>{this._closed||!1===this._consumerResumeInProgress&&this.resumePendingConsumers()}))})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new ca.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)}))}};Tn.Transport=va;var _a={},ya={},ba={},wa={exports:{}},Sa=wa.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(Sa).forEach((function(e){Sa[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))}));var Ca=wa.exports;!function(e){var t=function(e){return String(Number(e))===e?Number(e):e},r=function(e,r,i){var s=e.name&&e.names;e.push&&!r[e.push]?r[e.push]=[]:s&&!r[e.name]&&(r[e.name]={});var n=e.push?{}:s?r[e.name]:r;!function(e,r,i,s){if(s&&!i)r[s]=t(e[1]);else for(var n=0;n<i.length;n+=1)null!=e[n+1]&&(r[i[n]]=t(e[n+1]))}(i.match(e.reg),n,e.names,e.name),e.push&&r[e.push].push(n)},i=Ca,s=RegExp.prototype.test.bind(/^([a-z])=(.*)/);e.parse=function(e){var t={},n=[],a=t;return e.split(/(\r\n|\r|\n)/).filter(s).forEach((function(e){var t=e[0],s=e.slice(2);"m"===t&&(n.push({rtp:[],fmtp:[]}),a=n[n.length-1]);for(var o=0;o<(i[t]||[]).length;o+=1){var c=i[t][o];if(c.reg.test(s))return r(c,a,s)}})),t.media=n,t};var n=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(n,{})},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),s=0;s<i.length;s+=3)r.push({component:i[s],ip:i[s+1],port:i[s+2]});return r},e.parseImageAttributes=function(e){return e.split(" ").map((function(e){return e.substring(1,e.length-1).split(",").reduce(n,{})}))},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}}))}))}}(ba);var Ra=Ca,Ta=/%[sdv%]/g,ka=function(e){var t=1,r=arguments,i=r.length;return e.replace(Ta,(function(e){if(t>=i)return e;var s=r[t];switch(t+=1,e){case"%%":return"%";case"%s":return String(s);case"%d":return Number(s);case"%v":return""}}))},Pa=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 s=0;s<t.names.length;s+=1){var n=t.names[s];t.name?i.push(r[t.name][n]):i.push(r[t.names[s]])}else i.push(r[t.name]);return ka.apply(null,i)},Da=["v","o","s","i","u","e","p","c","b","t","r","z","a"],Ia=["i","c","b","a"],Ea=ba,Oa=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||Da,i=t.innerOrder||Ia,s=[];return r.forEach((function(t){Ra[t].forEach((function(r){r.name in e&&null!=e[r.name]?s.push(Pa(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){s.push(Pa(t,r,e))}))}))})),e.media.forEach((function(e){s.push(Pa("m",Ra.m[0],e)),i.forEach((function(t){Ra[t].forEach((function(r){r.name in e&&null!=e[r.name]?s.push(Pa(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){s.push(Pa(t,r,e))}))}))}))})),s.join("\r\n")+"\r\n"},xa=ya.write=Oa,Ma=ya.parse=Ea.parse;ya.parseParams=Ea.parseParams,ya.parseFmtpConfig=Ea.parseFmtpConfig,ya.parsePayloads=Ea.parsePayloads,ya.parseRemoteCandidates=Ea.parseRemoteCandidates,ya.parseImageAttributes=Ea.parseImageAttributes,ya.parseSimulcastStreamList=Ea.parseSimulcastStreamList;var ja={},La=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Aa=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Na=Zi&&Zi.__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)&&La(t,e,r);return Aa(t,e),t};Object.defineProperty(ja,"__esModule",{value:!0}),ja.extractRtpCapabilities=function({sdpObject:e}){const t=new Map,r=[];let i=!1,s=!1;for(const n of e.media){const e=n.type;switch(e){case"audio":if(i)continue;i=!0;break;case"video":if(s)continue;s=!0;break;default:continue}for(const r of n.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 n.fmtp||[]){const r=Ba.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 n.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 n.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}},ja.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}]}},ja.getCname=function({offerMediaObject:e}){const t=(e.ssrcs||[]).find((e=>"cname"===e.attribute));if(!t)return"";return t.value},ja.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 s=Ba.parseParams(i.config);switch(e){case"audio/opus":{const e=r.parameters["sprop-stereo"];void 0!==e&&(s.stereo=e?1:0);break}}i.config="";for(const e of Object.keys(s))i.config&&(i.config+=";"),i.config+=`${e}=${s[e]}`}};const Ba=Na(ya);var Fa={};Object.defineProperty(Fa,"__esModule",{value:!0}),Fa.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,s]=i.ssrcs.split(/\s+/);e=Number(e),s=Number(s),t.has(e)&&(t.delete(e),t.delete(s),r.set(e,s))}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},Fa.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,s]=r.value.split(" "),n=r.id;let a;(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===n&&(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(n+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} ${s}`})}for(let t=0;t<l.length;++t){const r=d[t],n=l[t];e.ssrcs.push({id:n,attribute:"cname",value:c}),e.ssrcs.push({id:n,attribute:"msid",value:`${i} ${s}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${r} ${n}`})}};var $a={};Object.defineProperty($a,"__esModule",{value:!0}),$a.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 Va={};Object.defineProperty(Va,"__esModule",{value:!0}),Va.HandlerInterface=void 0;const Ua=gs;class za extends Ua.EnhancedEventEmitter{constructor(){super()}}Va.HandlerInterface=za;var qa={},Ga={},Wa=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ha=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ka=Zi&&Zi.__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 Ha(t,e),t};Object.defineProperty(Ga,"__esModule",{value:!0}),Ga.OfferMediaSection=Ga.AnswerMediaSection=Ga.MediaSection=void 0;const Ja=Ka(ya),Qa=Ka(Fs);class Za{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}}Ga.MediaSection=Za;Ga.AnswerMediaSection=class extends Za{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:s,planB:n=!1,offerMediaObject:a,offerRtpParameters:o,answerRtpParameters:c,codecOptions:d,extmapAllowMixed:l=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:n}),this._mediaObject.mid=String(a.mid),this._mediaObject.type=a.type,this._mediaObject.protocol=a.protocol,s?(this._mediaObject.connection={ip:s.ip,version:s.ipVersion},this._mediaObject.port=s.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:Ya(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r=Qa.clone(e.parameters)??{};let i=Qa.clone(e.rtcpFeedback)??[];if(d){const{opusStereo:t,opusFec:s,opusDtx:n,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!==s&&(f.parameters.useinbandfec=s?1:0,r.useinbandfec=s?1:0),void 0!==n&&(f.parameters.usedtx=n?1:0,r.usedtx=n?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 s={payload:e.payloadType,config:""};for(const e of Object.keys(r))s.config&&(s.config+=";"),s.config+=`${e}=${r[e]}`;s.config&&this._mediaObject.fmtp.push(s);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=Ja.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 Ya(e){const t=new RegExp("^(audio|video)/(.+)","i").exec(e.mimeType);if(!t)throw new TypeError("invalid codec.mimeType");return t[2]}Ga.OfferMediaSection=class extends Za{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:s,planB:n=!1,mid:a,kind:o,offerRtpParameters:c,streamId:d,trackId:l,oldDataChannelSpec:p=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:n}),this._mediaObject.mid=String(a),this._mediaObject.type=o,s?(this._mediaObject.connection={ip:s.ip,version:s.ipVersion},this._mediaObject.protocol="RTP/AVP",this._mediaObject.port=s.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:Ya(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],s=i.ssrc,n=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:Ya(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:s,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:s,attribute:"msid",value:`${t||"-"} ${r}`}),n&&(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}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${s} ${n}`}))}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 Xa=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),eo=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),to=Zi&&Zi.__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)&&Xa(t,e,r);return eo(t,e),t};Object.defineProperty(qa,"__esModule",{value:!0}),qa.RemoteSdp=void 0;const ro=to(ya),io=Ga,so=new ps.Logger("RemoteSdp");qa.RemoteSdp=class{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:s,planB:n=!1}){if(this._mediaSections=[],this._midToIndex=new Map,this._iceParameters=e,this._iceCandidates=t,this._dtlsParameters=r,this._sctpParameters=i,this._plainRtpParameters=s,this._planB=n,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:""}]}s&&(this._sdpObject.origin.address=s.ip,this._sdpObject.origin.ipVer=s.ipVersion)}updateIceParameters(e){so.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){so.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:s,extmapAllowMixed:n=!1}){const a=new io.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,offerMediaObject:e,offerRtpParameters:r,answerRtpParameters:i,codecOptions:s,extmapAllowMixed:n});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:s}){const n=this._midToIndex.get(e);let a;if(void 0!==n&&(a=this._mediaSections[n]),a)a.planBReceive({offerRtpParameters:r,streamId:i,trackId:s}),this._replaceMediaSection(a);else{a=new io.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:s});const n=this._mediaSections.find((e=>e.closed));n?this._replaceMediaSection(a,n.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?(so.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 io.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 io.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++,ro.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 no={};Object.defineProperty(no,"__esModule",{value:!0}),no.parse=function(e){const t=ao.exec(e||"");return t?{spatialLayers:Number(t[1]),temporalLayers:Number(t[2])}:{spatialLayers:1,temporalLayers:1}};const ao=new RegExp("^[LS]([1-9]\\d{0,1})T([1-9]\\d{0,1})");var oo=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),co=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),lo=Zi&&Zi.__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)&&oo(t,e,r);return co(t,e),t};Object.defineProperty(_a,"__esModule",{value:!0});var po=_a.Chrome111=void 0;const uo=lo(ya),ho=ps,mo=lo(Fs),fo=lo($s),go=lo(ja),vo=lo(Fa),_o=lo($a),yo=As,bo=Va,wo=qa,So=no,Co=new ho.Logger("Chrome111"),Ro={OS:1024,MIS:1024};class To extends bo.HandlerInterface{static createFactory(){return()=>new To}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(Co.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Co.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=uo.parse(t.sdp),i=go.extractRtpCapabilities({sdpObject:r});return _o.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Co.debug("getNativeSctpCapabilities()"),{numStreams:Ro}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Co.debug("run()"),this._direction=e,this._remoteSdp=new wo.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:fo.getSendingRtpParameters("audio",d),video:fo.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:fo.getSendingRemoteRtpParameters("audio",d),video:fo.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],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)})):(Co.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(),Co.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Co.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Co.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Co.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Co.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Co.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,onRtpSender:s}){if(this.assertNotClosed(),this.assertSendDirection(),Co.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1){let e=1;for(const r of t){const t=r.scalabilityMode?(0,So.parse)(r.scalabilityMode).temporalLayers:3;t>e&&(e=t)}t.forEach(((t,r)=>{t.rid=`r${r}`,t.scalabilityMode=`L1T${e}`}))}const n=mo.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=fo.reduceCodecs(n.codecs,i);const a=mo.clone(this._sendingRemoteRtpParametersByKind[e.kind]);a.codecs=fo.reduceCodecs(a.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),c=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});s&&s(c.sender);const d=await this._pc.createOffer();let l=uo.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l}),Co.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const p=c.mid;n.mid=p,l=uo.parse(this._pc.localDescription.sdp);const u=l.media[o.idx];if(n.rtcp.cname=go.getCname({offerMediaObject:u}),t)if(1===t.length){const e=vo.getRtpEncodings({offerMediaObject:u});Object.assign(e[0],t[0]),n.encodings=e}else n.encodings=t;else n.encodings=vo.getRtpEncodings({offerMediaObject:u});this._remoteSdp.send({offerMediaObject:u,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:a,codecOptions:r,extmapAllowMixed:!0});const h={type:"answer",sdp:this._remoteSdp.getSdp()};return Co.debug("send() | calling pc.setRemoteDescription() [answer:%o]",h),await this._pc.setRemoteDescription(h),this._mapMidTransceiver.set(p,c),{localId:p,rtpParameters:n,rtpSender:c.sender}}async stopSending(e){if(this.assertSendDirection(),Co.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();Co.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Co.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Co.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();Co.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Co.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Co.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();Co.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Co.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Co.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Co.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(),Co.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 s=await this._pc.createOffer();Co.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Co.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Co.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 s=await this._pc.createOffer();Co.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Co.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}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:s}){this.assertNotClosed(),this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};Co.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ro.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=uo.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Co.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()};Co.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s,streamId:n}=t;Co.debug("receive() [trackId:%s, kind:%s]",e,i);const a=s.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:s,streamId:n||s.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Co.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);for(const t of e){const{trackId:e,onRtpReceiver:i}=t;if(i){const t=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===t));if(!s)throw new Error("transceiver not found");i(s.receiver)}}let s=await this._pc.createAnswer();const n=uo.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,s=r.get(e),a=n.media.find((e=>String(e.mid)===s));go.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:uo.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Co.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Co.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()};Co.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Co.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){Co.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()};Co.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Co.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){Co.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()};Co.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Co.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:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};Co.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()};Co.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=uo.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Co.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=uo.parse(this._pc.localDescription.sdp));const r=go.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new yo.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=_a.Chrome111=To;var ko={},Po=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Do=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Io=Zi&&Zi.__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 Do(t,e),t};Object.defineProperty(ko,"__esModule",{value:!0}),ko.Chrome74=void 0;const Eo=Io(ya),Oo=ps,xo=Io(Fs),Mo=Io($s),jo=Io(ja),Lo=Io(Fa),Ao=Io($a),No=As,Bo=Va,Fo=qa,$o=no,Vo=new Oo.Logger("Chrome74"),Uo={OS:1024,MIS:1024};class zo extends Bo.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"Chrome74"}close(){if(Vo.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Vo.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=jo.extractRtpCapabilities({sdpObject:r});return Ao.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Vo.debug("getNativeSctpCapabilities()"),{numStreams:Uo}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Vo.debug("run()"),this._direction=e,this._remoteSdp=new Fo.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Mo.getSendingRtpParameters("audio",d),video:Mo.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Mo.getSendingRemoteRtpParameters("audio",d),video:Mo.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],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)})):(Vo.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(),Vo.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Vo.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Vo.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Vo.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Vo.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Vo.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(),Vo.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const s=xo.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=Mo.reduceCodecs(s.codecs,i);const n=xo.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=Mo.reduceCodecs(n.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,$o.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&(Vo.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)}),Vo.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const h=o.mid;if(s.mid=h,l=Eo.parse(this._pc.localDescription.sdp),c=l.media[a.idx],s.rtcp.cname=jo.getCname({offerMediaObject:c}),t)if(1===t.length){let e=Lo.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),p&&(e=[e[0]]),s.encodings=e}else s.encodings=t;else s.encodings=Lo.getRtpEncodings({offerMediaObject:c});if(s.encodings.length>1&&("video/vp8"===s.codecs[0].mimeType.toLowerCase()||"video/h264"===s.codecs[0].mimeType.toLowerCase()))for(const e of s.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${u.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:s,answerRtpParameters:n,codecOptions:r,extmapAllowMixed:!0});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return Vo.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:s,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),Vo.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();Vo.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Vo.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Vo.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();Vo.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Vo.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Vo.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();Vo.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Vo.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Vo.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Vo.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(),Vo.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 s=await this._pc.createOffer();Vo.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Vo.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Vo.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 s=await this._pc.createOffer();Vo.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Vo.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}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:s}){this.assertNotClosed(),this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};Vo.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Uo.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}),Vo.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()};Vo.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s,streamId:n}=t;Vo.debug("receive() [trackId:%s, kind:%s]",e,i);const a=s.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:s,streamId:n||s.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Vo.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=Eo.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,s=r.get(e),a=n.media.find((e=>String(e.mid)===s));jo.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:Eo.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Vo.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Vo.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()};Vo.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Vo.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){Vo.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()};Vo.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Vo.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){Vo.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()};Vo.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Vo.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:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};Vo.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()};Vo.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})}Vo.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=jo.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},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')}}ko.Chrome74=zo;var qo={},Go=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Wo=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ho=Zi&&Zi.__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 Wo(t,e),t};Object.defineProperty(qo,"__esModule",{value:!0}),qo.Chrome70=void 0;const Ko=Ho(ya),Jo=ps,Qo=Ho(Fs),Zo=Ho($s),Yo=Ho(ja),Xo=Ho(Fa),ec=Va,tc=qa,rc=no,ic=new Jo.Logger("Chrome70"),sc={OS:1024,MIS:1024};class nc extends ec.HandlerInterface{static createFactory(){return()=>new nc}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(ic.debug("close()"),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:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=Ko.parse(t.sdp);return Yo.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return ic.debug("getNativeSctpCapabilities()"),{numStreams:sc}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){ic.debug("run()"),this._direction=e,this._remoteSdp=new tc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),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:n||[],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(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);const s=Qo.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=Zo.reduceCodecs(s.codecs,i);const n=Qo.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=Zo.reduceCodecs(n.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=Ko.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l}),t&&t.length>1&&(ic.debug("send() | enabling legacy simulcast"),l=Ko.parse(d.sdp),c=l.media[a.idx],Xo.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:Ko.write(l)});let p=!1;const u=(0,rc.parse)((t||[{}])[0].scalabilityMode);if(t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&(ic.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=Ko.parse(d.sdp),c=l.media[a.idx],Xo.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:Ko.write(l)}),ic.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d),t){ic.debug("send() | applying given encodings");const e=o.sender.getParameters();for(let r=0;r<(e.encodings||[]).length;++r){const i=e.encodings[r],s=t[r];if(!s)break;e.encodings[r]=Object.assign(i,s)}await o.sender.setParameters(e)}const h=o.mid;if(s.mid=h,l=Ko.parse(this._pc.localDescription.sdp),c=l.media[a.idx],s.rtcp.cname=Yo.getCname({offerMediaObject:c}),s.encodings=Xo.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<s.encodings.length;++e)t[e]&&Object.assign(s.encodings[e],t[e]);if(p&&(s.encodings=[s.encodings[0]]),s.encodings.length>1&&("video/vp8"===s.codecs[0].mimeType.toLowerCase()||"video/h264"===s.codecs[0].mimeType.toLowerCase()))for(const e of s.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:s,answerRtpParameters:n,codecOptions:r});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return ic.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:s,rtpSender:o.sender}}async stopSending(e){this.assertSendDirection(),ic.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();ic.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};ic.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?ic.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):ic.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(),ic.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 s=await this._pc.createOffer();ic.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};ic.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),ic.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 s=await this._pc.createOffer();ic.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};ic.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}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:s}){this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};ic.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%sc.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:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s,streamId:n}=t;ic.debug("receive() [trackId:%s, kind:%s]",e,i);const a=s.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:s,streamId:n||s.rtcp.cname,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 s=await this._pc.createAnswer();const n=Ko.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,s=r.get(e),a=n.media.find((e=>String(e.mid)===s));Yo.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:Ko.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),ic.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){ic.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()};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);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:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmitTime:n,maxRetransmits:a,protocol:r};ic.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()};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=Yo.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},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.Chrome70=nc;var ac={},oc={};Object.defineProperty(oc,"__esModule",{value:!0}),oc.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,s]=t.ssrcs.split(/\s+/);e=Number(e),s=Number(s),r.has(e)&&(r.delete(e),r.delete(s),i.set(e,s))}for(const e of r)i.set(e,null);const s=[];for(const[e,t]of i){const r={ssrc:e};t&&(r.rtx={ssrc:t}),s.push(r)}return s},oc.addLegacySimulcast=function({offerMediaObject:e,track:t,numStreams:r}){if(r<=1)throw new TypeError("numStreams must be greater than 1");let i,s,n;if(!(e.ssrcs||[]).find((e=>{if("msid"!==e.attribute)return!1;return e.value.split(" ")[1]===t.id&&(i=e.id,n=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&&(s=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),s&&d.push(s+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:`${n} ${t.id}`})}for(let r=0;r<d.length;++r){const i=c[r],s=d[r];e.ssrcs.push({id:s,attribute:"cname",value:o}),e.ssrcs.push({id:s,attribute:"msid",value:`${n} ${t.id}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${i} ${s}`})}};var cc=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),dc=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),lc=Zi&&Zi.__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)&&cc(t,e,r);return dc(t,e),t};Object.defineProperty(ac,"__esModule",{value:!0}),ac.Chrome67=void 0;const pc=lc(ya),uc=ps,hc=lc(Fs),mc=lc($s),fc=lc(ja),gc=lc(oc),vc=Va,_c=qa,yc=new uc.Logger("Chrome67"),bc={OS:1024,MIS:1024};class wc extends vc.HandlerInterface{static createFactory(){return()=>new wc}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(yc.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){yc.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=pc.parse(t.sdp);return fc.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return yc.debug("getNativeSctpCapabilities()"),{numStreams:bc}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){yc.debug("run()"),this._direction=e,this._remoteSdp=new _c.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:mc.getSendingRtpParameters("audio",d),video:mc.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:mc.getSendingRemoteRtpParameters("audio",d),video:mc.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],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(yc.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){yc.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(yc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});yc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};yc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};yc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();yc.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(),yc.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&yc.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let s,n=await this._pc.createOffer(),a=pc.parse(n.sdp);const o=hc.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=mc.reduceCodecs(o.codecs);const c=hc.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=mc.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(yc.debug("send() | enabling simulcast"),a=pc.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),gc.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:pc.write(a)}),yc.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=pc.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=fc.getCname({offerMediaObject:s}),o.encodings=gc.getRtpEncodings({offerMediaObject:s,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:s,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};yc.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(),yc.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();yc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void yc.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()};yc.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?yc.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):yc.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(),yc.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(),yc.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:s}){this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};yc.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%bc.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=pc.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),yc.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()};yc.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:s}=t;yc.debug("receive() [trackId:%s, kind:%s]",e,r);const n=r;this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};yc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const s=pc.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));fc.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}i={type:"answer",sdp:pc.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),yc.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:s}=r,n=i,a=e,o=this._pc.getReceivers().find((e=>e.track&&e.track.id===n));if(!o)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(n,{mid:a,rtpParameters:s,rtpReceiver:o}),t.push({localId:n,track:o.track,rtpReceiver:o})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){yc.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()};yc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();yc.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:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmitTime:n,maxRetransmits:a,protocol:r};yc.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()};yc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=pc.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}yc.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=pc.parse(this._pc.localDescription.sdp));const r=fc.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},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')}}ac.Chrome67=wc;var Sc={},Cc=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Rc=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Tc=Zi&&Zi.__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)&&Cc(t,e,r);return Rc(t,e),t};Object.defineProperty(Sc,"__esModule",{value:!0}),Sc.Chrome55=void 0;const kc=Tc(ya),Pc=ps,Dc=As,Ic=Tc(Fs),Ec=Tc($s),Oc=Tc(ja),xc=Tc(oc),Mc=Va,jc=qa,Lc=new Pc.Logger("Chrome55"),Ac={OS:1024,MIS:1024};class Nc extends Mc.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"Chrome55"}close(){if(Lc.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){Lc.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=kc.parse(t.sdp);return Oc.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Lc.debug("getNativeSctpCapabilities()"),{numStreams:Ac}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Lc.debug("run()"),this._direction=e,this._remoteSdp=new jc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:Ec.getSendingRtpParameters("audio",d),video:Ec.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Ec.getSendingRemoteRtpParameters("audio",d),video:Ec.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],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(Lc.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){Lc.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Lc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Lc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Lc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Lc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Lc.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(),Lc.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Lc.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let s,n=await this._pc.createOffer(),a=kc.parse(n.sdp);const o=Ic.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=Ec.reduceCodecs(o.codecs);const c=Ic.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=Ec.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(Lc.debug("send() | enabling simulcast"),a=kc.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),xc.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:kc.write(a)}),Lc.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=kc.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=Oc.getCname({offerMediaObject:s}),o.encodings=xc.getRtpEncodings({offerMediaObject:s,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:s,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};Lc.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(),Lc.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();Lc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Lc.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()};Lc.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 Dc.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new Dc.UnsupportedError(" not implemented")}async setRtpEncodingParameters(e,t){throw new Dc.UnsupportedError("not supported")}async getSenderStats(e){throw new Dc.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};Lc.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ac.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=kc.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Lc.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()};Lc.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:s}=t;Lc.debug("receive() [trackId:%s, kind:%s]",e,r);const n=r;this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};Lc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const s=kc.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));Oc.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}i={type:"answer",sdp:kc.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Lc.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:s}=r,n=e,a=i,o=r.streamId||s.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:n,rtpParameters:s}),t.push({localId:a,track:c})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){Lc.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()};Lc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Lc.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new Dc.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmitTime:n,maxRetransmits:a,protocol:r};Lc.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()};Lc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=kc.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Lc.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=kc.parse(this._pc.localDescription.sdp));const r=Oc.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},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')}}Sc.Chrome55=Nc;var Bc={},Fc=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),$c=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Vc=Zi&&Zi.__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)&&Fc(t,e,r);return $c(t,e),t};Object.defineProperty(Bc,"__esModule",{value:!0}),Bc.Firefox120=void 0;const Uc=Vc(ya),zc=ps,qc=As,Gc=Vc(Fs),Wc=Vc($s),Hc=Vc(ja),Kc=Vc(Fa),Jc=Va,Qc=qa,Zc=no,Yc=new zc.Logger("Firefox120"),Xc={OS:16,MIS:2048};class ed extends Jc.HandlerInterface{static createFactory(){return()=>new ed}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"Firefox120"}close(){if(Yc.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Yc.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"}),e.addTransceiver(r,{direction:"sendrecv",sendEncodings:[{rid:"r0",maxBitrate:1e5},{rid:"r1",maxBitrate:5e5}]});const i=await e.createOffer();try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}const s=Uc.parse(i.sdp);return Hc.extractRtpCapabilities({sdpObject:s})}catch(i){try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}throw i}}async getNativeSctpCapabilities(){return Yc.debug("getNativeSctpCapabilities()"),{numStreams:Xc}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Yc.debug("run()"),this._direction=e,this._remoteSdp=new Qc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Wc.getSendingRtpParameters("audio",d),video:Wc.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Wc.getSendingRemoteRtpParameters("audio",d),video:Wc.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection({iceServers:n||[],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(Yc.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 qc.UnsupportedError("not supported")}async restartIce(e){if(this.assertNotClosed(),Yc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Yc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Yc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Yc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Yc.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,onRtpSender:s}){this.assertNotClosed(),this.assertSendDirection(),Yc.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=Gc.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=Wc.reduceCodecs(n.codecs,i);const a=Gc.clone(this._sendingRemoteRtpParametersByKind[e.kind]);a.codecs=Wc.reduceCodecs(a.codecs,i);const o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});s&&s(o.sender);const c=await this._pc.createOffer();let d=Uc.parse(c.sdp);this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:d});const l=(0,Zc.parse)((t||[{}])[0].scalabilityMode);Yc.debug("send() | calling pc.setLocalDescription() [offer:%o]",c),await this._pc.setLocalDescription(c);const p=o.mid;n.mid=p,d=Uc.parse(this._pc.localDescription.sdp);const u=d.media[d.media.length-1];if(n.rtcp.cname=Hc.getCname({offerMediaObject:u}),t)if(1===t.length){const e=Kc.getRtpEncodings({offerMediaObject:u});Object.assign(e[0],t[0]),n.encodings=e}else n.encodings=t;else n.encodings=Kc.getRtpEncodings({offerMediaObject:u});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${l.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:u,offerRtpParameters:n,answerRtpParameters:a,codecOptions:r,extmapAllowMixed:!0});const h={type:"answer",sdp:this._remoteSdp.getSdp()};return Yc.debug("send() | calling pc.setRemoteDescription() [answer:%o]",h),await this._pc.setRemoteDescription(h),this._mapMidTransceiver.set(p,o),{localId:p,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),Yc.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();Yc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Yc.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Yc.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();Yc.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Yc.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Yc.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();Yc.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Yc.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Yc.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Yc.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(),Yc.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();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const s=await this._pc.createOffer();Yc.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Yc.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Yc.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 s=await this._pc.createOffer();Yc.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Yc.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}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:s}){this.assertNotClosed(),this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};Yc.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Xc.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Uc.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:t}),Yc.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()};Yc.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s,streamId:n}=t;Yc.debug("receive() [trackId:%s, kind:%s]",e,i);const a=s.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:s,streamId:n||s.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Yc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);for(const t of e){const{trackId:e,onRtpReceiver:i}=t;if(i){const t=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===t));if(!s)throw new Error("transceiver not found");i(s.receiver)}}let s=await this._pc.createAnswer();const n=Uc.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,a=r.get(e),o=n.media.find((e=>String(e.mid)===a));Hc.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o}),s={type:"answer",sdp:Uc.write(n)}}this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:n}),Yc.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Yc.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()};Yc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Yc.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){Yc.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()};Yc.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Yc.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){Yc.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()};Yc.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Yc.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:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};Yc.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()};Yc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Uc.parse(t.sdp);await this.setupTransport({localDtlsRole:"client",localSdpObject:e})}Yc.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=Uc.parse(this._pc.localDescription.sdp));const r=Hc.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new qc.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')}}Bc.Firefox120=ed;var td={},rd=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),id=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),sd=Zi&&Zi.__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)&&rd(t,e,r);return id(t,e),t};Object.defineProperty(td,"__esModule",{value:!0}),td.Firefox60=void 0;const nd=sd(ya),ad=ps,od=As,cd=sd(Fs),dd=sd($s),ld=sd(ja),pd=sd(Fa),ud=Va,hd=qa,md=no,fd=new ad.Logger("Firefox60"),gd={OS:16,MIS:2048};class vd extends ud.HandlerInterface{static createFactory(){return()=>new vd}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(fd.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){fd.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"}),s=i.sender.getParameters(),n=[{rid:"r0",maxBitrate:1e5},{rid:"r1",maxBitrate:5e5}];s.encodings=n,await i.sender.setParameters(s);const a=await e.createOffer();try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}const o=nd.parse(a.sdp);return ld.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 fd.debug("getNativeSctpCapabilities()"),{numStreams:gd}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),fd.debug("run()"),this._direction=e,this._remoteSdp=new hd.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:dd.getSendingRtpParameters("audio",d),video:dd.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:dd.getSendingRemoteRtpParameters("audio",d),video:dd.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection({iceServers:n||[],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(fd.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 od.UnsupportedError("not supported")}async restartIce(e){if(this.assertNotClosed(),fd.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});fd.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};fd.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};fd.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();fd.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(),fd.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&(t=cd.clone(t)).length>1&&(t.forEach(((e,t)=>{e.rid=`r${t}`})),t.reverse());const s=cd.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=dd.reduceCodecs(s.codecs,i);const n=cd.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=dd.reduceCodecs(n.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=nd.parse(o.sdp);this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:c});const d=(0,md.parse)((t||[{}])[0].scalabilityMode);fd.debug("send() | calling pc.setLocalDescription() [offer:%o]",o),await this._pc.setLocalDescription(o);const l=a.mid;s.mid=l,c=nd.parse(this._pc.localDescription.sdp);const p=c.media[c.media.length-1];if(s.rtcp.cname=ld.getCname({offerMediaObject:p}),t)if(1===t.length){const e=pd.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),s.encodings=e}else s.encodings=t.reverse();else s.encodings=pd.getRtpEncodings({offerMediaObject:p});if(s.encodings.length>1&&("video/vp8"===s.codecs[0].mimeType.toLowerCase()||"video/h264"===s.codecs[0].mimeType.toLowerCase()))for(const e of s.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${d.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:p,offerRtpParameters:s,answerRtpParameters:n,codecOptions:r,extmapAllowMixed:!0});const u={type:"answer",sdp:this._remoteSdp.getSdp()};return fd.debug("send() | calling pc.setRemoteDescription() [answer:%o]",u),await this._pc.setRemoteDescription(u),this._mapMidTransceiver.set(l,a),{localId:l,rtpParameters:s,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),fd.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();fd.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};fd.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),fd.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();fd.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};fd.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),fd.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();fd.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};fd.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?fd.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):fd.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(),fd.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 s=await this._pc.createOffer();fd.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};fd.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),fd.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 s=await this._pc.createOffer();fd.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};fd.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}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:s}){this.assertNotClosed(),this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};fd.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%gd.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=nd.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:t}),fd.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()};fd.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s,streamId:n}=t;fd.debug("receive() [trackId:%s, kind:%s]",e,i);const a=s.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:s,streamId:n||s.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};fd.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=nd.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,a=r.get(e),o=n.media.find((e=>String(e.mid)===a));ld.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o}),s={type:"answer",sdp:nd.write(n)}}this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:n}),fd.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){fd.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()};fd.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();fd.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){fd.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()};fd.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();fd.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){fd.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()};fd.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();fd.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:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};fd.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()};fd.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=nd.parse(t.sdp);await this.setupTransport({localDtlsRole:"client",localSdpObject:e})}fd.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=nd.parse(this._pc.localDescription.sdp));const r=ld.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new od.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')}}td.Firefox60=vd;var _d={},yd=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),bd=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),wd=Zi&&Zi.__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)&&yd(t,e,r);return bd(t,e),t};Object.defineProperty(_d,"__esModule",{value:!0}),_d.Safari12=void 0;const Sd=wd(ya),Cd=ps,Rd=wd(Fs),Td=wd($s),kd=wd(ja),Pd=wd(Fa),Dd=wd($a),Id=As,Ed=Va,Od=qa,xd=no,Md=new Cd.Logger("Safari12"),jd={OS:1024,MIS:1024};class Ld extends Ed.HandlerInterface{static createFactory(){return()=>new Ld}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(Md.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Md.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=Sd.parse(t.sdp),i=kd.extractRtpCapabilities({sdpObject:r});return Dd.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Md.debug("getNativeSctpCapabilities()"),{numStreams:jd}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Md.debug("run()"),this._direction=e,this._remoteSdp=new Od.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Td.getSendingRtpParameters("audio",d),video:Td.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Td.getSendingRemoteRtpParameters("audio",d),video:Td.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],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(Md.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(),Md.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Md.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Md.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Md.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Md.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Md.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,onRtpSender:s}){this.assertNotClosed(),this.assertSendDirection(),Md.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const n=Rd.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=Td.reduceCodecs(n.codecs,i);const a=Rd.clone(this._sendingRemoteRtpParametersByKind[e.kind]);a.codecs=Td.reduceCodecs(a.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),c=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});s&&s(c.sender);let d,l=await this._pc.createOffer(),p=Sd.parse(l.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:p});const u=(0,xd.parse)((t||[{}])[0].scalabilityMode);t&&t.length>1&&(Md.debug("send() | enabling legacy simulcast"),p=Sd.parse(l.sdp),d=p.media[o.idx],Pd.addLegacySimulcast({offerMediaObject:d,numStreams:t.length}),l={type:"offer",sdp:Sd.write(p)}),Md.debug("send() | calling pc.setLocalDescription() [offer:%o]",l),await this._pc.setLocalDescription(l);const h=c.mid;if(n.mid=h,p=Sd.parse(this._pc.localDescription.sdp),d=p.media[o.idx],n.rtcp.cname=kd.getCname({offerMediaObject:d}),n.encodings=Pd.getRtpEncodings({offerMediaObject:d}),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${u.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:d,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:a,codecOptions:r});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return Md.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(h,c),{localId:h,rtpParameters:n,rtpSender:c.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;Md.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();Md.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Md.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Md.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();Md.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Md.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Md.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();Md.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Md.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Md.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Md.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(),Md.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 s=await this._pc.createOffer();Md.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Md.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Md.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 s=await this._pc.createOffer();Md.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Md.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}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:s}){this.assertNotClosed(),this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};Md.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%jd.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Sd.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Md.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()};Md.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s,streamId:n}=t;Md.debug("receive() [trackId:%s, kind:%s]",e,i);const a=s.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:s,streamId:n||s.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Md.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);for(const t of e){const{trackId:e,onRtpReceiver:i}=t;if(i){const t=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===t));if(!s)throw new Error("transceiver not found");i(s.receiver)}}let s=await this._pc.createAnswer();const n=Sd.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,s=r.get(e),a=n.media.find((e=>String(e.mid)===s));kd.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:Sd.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Md.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Md.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()};Md.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Md.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){Md.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()};Md.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Md.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){Md.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()};Md.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Md.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:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};Md.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()};Md.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Sd.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Md.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=Sd.parse(this._pc.localDescription.sdp));const r=kd.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Id.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')}}_d.Safari12=Ld;var Ad={},Nd=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Bd=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Fd=Zi&&Zi.__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)&&Nd(t,e,r);return Bd(t,e),t};Object.defineProperty(Ad,"__esModule",{value:!0}),Ad.Safari11=void 0;const $d=Fd(ya),Vd=ps,Ud=Fd(Fs),zd=Fd($s),qd=Fd(ja),Gd=Fd(oc),Wd=Va,Hd=qa,Kd=new Vd.Logger("Safari11"),Jd={OS:1024,MIS:1024};class Qd extends Wd.HandlerInterface{static createFactory(){return()=>new Qd}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(Kd.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){Kd.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=$d.parse(t.sdp);return qd.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Kd.debug("getNativeSctpCapabilities()"),{numStreams:Jd}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Kd.debug("run()"),this._direction=e,this._remoteSdp=new Hd.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:zd.getSendingRtpParameters("audio",d),video:zd.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:zd.getSendingRemoteRtpParameters("audio",d),video:zd.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],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(Kd.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){Kd.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Kd.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Kd.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Kd.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Kd.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Kd.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(),Kd.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Kd.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let s,n=await this._pc.createOffer(),a=$d.parse(n.sdp);const o=Ud.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=zd.reduceCodecs(o.codecs);const c=Ud.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=zd.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(Kd.debug("send() | enabling simulcast"),a=$d.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),Gd.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:$d.write(a)}),Kd.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=$d.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=qd.getCname({offerMediaObject:s}),o.encodings=Gd.getRtpEncodings({offerMediaObject:s,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:s,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};Kd.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();Kd.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Kd.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()};Kd.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?Kd.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Kd.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(),Kd.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(),Kd.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:s}){this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};Kd.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Jd.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=$d.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Kd.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()};Kd.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:s}=t;Kd.debug("receive() [trackId:%s, kind:%s]",e,r);const n=r;this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};Kd.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const s=$d.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));qd.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}i={type:"answer",sdp:$d.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Kd.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:s}=r,n=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:n,rtpParameters:s,rtpReceiver:o}),t.push({localId:a,track:o.track,rtpReceiver:o})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){Kd.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()};Kd.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Kd.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:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};Kd.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()};Kd.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=$d.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Kd.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=$d.parse(this._pc.localDescription.sdp));const r=qd.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},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')}}Ad.Safari11=Qd;var Zd={},Yd={},Xd=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),el=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),tl=Zi&&Zi.__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)&&Xd(t,e,r);return el(t,e),t};Object.defineProperty(Yd,"__esModule",{value:!0}),Yd.getCapabilities=function(){const e=RTCRtpReceiver.getCapabilities(),t=rl.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},Yd.mangleRtpParameters=function(e){const t=rl.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};const rl=tl(Fs);var il=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),sl=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),nl=Zi&&Zi.__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 sl(t,e),t};Object.defineProperty(Zd,"__esModule",{value:!0}),Zd.Edge11=void 0;const al=ps,ol=As,cl=nl(Fs),dl=nl($s),ll=nl(Yd),pl=Va,ul=new al.Logger("Edge11");class hl extends pl.HandlerInterface{static createFactory(){return()=>new hl}constructor(){super(),this._rtpSenders=new Map,this._rtpReceivers=new Map,this._nextSendLocalId=0,this._transportReady=!1}get name(){return"Edge11"}close(){ul.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 ul.debug("getNativeRtpCapabilities()"),ll.getCapabilities()}async getNativeSctpCapabilities(){return ul.debug("getNativeSctpCapabilities()"),{numStreams:{OS:0,MIS:0}}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){ul.debug("run()"),this._sendingRtpParametersByKind={audio:dl.getSendingRtpParameters("audio",d),video:dl.getSendingRtpParameters("video",d)},this._remoteIceParameters=t,this._remoteIceCandidates=r,this._remoteDtlsParameters=i,this._cname=`CNAME-${cl.generateRandomNumber()}`,this.setIceGatherer({iceServers:n,iceTransportPolicy:a}),this.setIceTransport(),this.setDtlsTransport()}async updateIceServers(e){throw new ol.UnsupportedError("not supported")}async restartIce(e){if(ul.debug("restartIce()"),this._remoteIceParameters=e,this._transportReady){ul.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}){ul.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),this._transportReady||await this.setupTransport({localDtlsRole:"server"}),ul.debug("send() | calling new RTCRtpSender()");const s=new RTCRtpSender(e,this._dtlsTransport),n=cl.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=dl.reduceCodecs(n.codecs,i);const a=n.codecs.some((e=>/.+\/rtx$/i.test(e.mimeType)));t||(t=[{}]);for(const e of t)e.ssrc=cl.generateRandomNumber(),a&&(e.rtx={ssrc:cl.generateRandomNumber()});n.encodings=t,n.rtcp={cname:this._cname,reducedSize:!0,mux:!0};const o=ll.mangleRtpParameters(n);ul.debug("send() | calling rtpSender.send() [params:%o]",o),await s.send(o);const c=String(this._nextSendLocalId);return this._nextSendLocalId++,this._rtpSenders.set(c,s),{localId:c,rtpParameters:n,rtpSender:s}}async stopSending(e){ul.debug("stopSending() [localId:%s]",e);const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");this._rtpSenders.delete(e);try{ul.debug("stopSending() | calling rtpSender.stop()"),t.stop()}catch(e){throw ul.warn("stopSending() | rtpSender.stop() failed:%o",e),e}}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){t?ul.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):ul.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){ul.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){ul.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 ol.UnsupportedError("not implemented")}async receive(e){const t=[];for(const t of e){const{trackId:e,kind:r}=t;ul.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:s}=r;ul.debug("receive() | calling new RTCRtpReceiver()");const n=new RTCRtpReceiver(this._dtlsTransport,i);n.addEventListener("error",(e=>{ul.error('rtpReceiver "error" event [event:%o]',e)}));const a=ll.mangleRtpParameters(s);ul.debug("receive() | calling rtpReceiver.receive() [params:%o]",a),await n.receive(a);const o=e;this._rtpReceivers.set(o,n),t.push({localId:o,track:n.track,rtpReceiver:n})}return t}async stopReceiving(e){for(const t of e){ul.debug("stopReceiving() [localId:%s]",t);const e=this._rtpReceivers.get(t);if(!e)throw new Error("RTCRtpReceiver not found");this._rtpReceivers.delete(t);try{ul.debug("stopReceiving() | calling rtpReceiver.stop()"),e.stop()}catch(e){ul.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 ol.UnsupportedError("not implemented")}setIceGatherer({iceServers:e,iceTransportPolicy:t}){const r=new RTCIceGatherer({iceServers:e||[],gatherPolicy:t||"all"});r.addEventListener("error",(e=>{ul.error('iceGatherer "error" event [event:%o]',e)}));try{r.gather()}catch(e){ul.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=>{ul.debug('iceTransport "candidatepairchange" event [pair:%o]',e.pair)})),this._iceTransport=e}setDtlsTransport(){const e=new RTCDtlsTransport(this._iceTransport);e.addEventListener("statechange",(()=>{ul.debug('dtlsTransport "statechange" event [state:%s]',e.state)})),e.addEventListener("dtlsstatechange",(()=>{ul.debug('dtlsTransport "dtlsstatechange" event [state:%s]',e.state),"closed"===e.state&&this.emit("@connectionstatechange","closed")})),e.addEventListener("error",(e=>{ul.error('dtlsTransport "error" event [event:%o]',e)})),this._dtlsTransport=e}async setupTransport({localDtlsRole:e}){ul.debug("setupTransport()");const t=this._dtlsTransport.getLocalParameters();t.role=e,await new Promise(((e,r)=>{this.safeEmit("@connect",{dtlsParameters:t},e,r)})),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}}Zd.Edge11=hl;var ml={},fl=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),gl=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),vl=Zi&&Zi.__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)&&fl(t,e,r);return gl(t,e),t};Object.defineProperty(ml,"__esModule",{value:!0}),ml.ReactNativeUnifiedPlan=void 0;const _l=vl(ya),yl=ps,bl=vl(Fs),wl=vl($s),Sl=vl(ja),Cl=vl(Fa),Rl=vl($a),Tl=As,kl=Va,Pl=qa,Dl=no,Il=new yl.Logger("ReactNativeUnifiedPlan"),El={OS:1024,MIS:1024};class Ol extends kl.HandlerInterface{static createFactory(){return()=>new Ol}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(Il.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(){Il.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=_l.parse(t.sdp),i=Sl.extractRtpCapabilities({sdpObject:r});return Rl.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Il.debug("getNativeSctpCapabilities()"),{numStreams:El}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Il.debug("run()"),this._direction=e,this._remoteSdp=new Pl.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:wl.getSendingRtpParameters("audio",d),video:wl.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:wl.getSendingRemoteRtpParameters("audio",d),video:wl.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],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(Il.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(),Il.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Il.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Il.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Il.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Il.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Il.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,onRtpSender:s}){this.assertNotClosed(),this.assertSendDirection(),Il.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=bl.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=wl.reduceCodecs(n.codecs,i);const a=bl.clone(this._sendingRemoteRtpParametersByKind[e.kind]);a.codecs=wl.reduceCodecs(a.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),c=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});s&&s(c.sender);let d,l=await this._pc.createOffer(),p=_l.parse(l.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:p});let u=!1;const h=(0,Dl.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&h.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(Il.debug("send() | enabling legacy simulcast for VP9 SVC"),u=!0,p=_l.parse(l.sdp),d=p.media[o.idx],Cl.addLegacySimulcast({offerMediaObject:d,numStreams:h.spatialLayers}),l={type:"offer",sdp:_l.write(p)}),Il.debug("send() | calling pc.setLocalDescription() [offer:%o]",l),await this._pc.setLocalDescription(l);let m=c.mid??void 0;if(m||Il.warn("send() | missing transceiver.mid (bug in react-native-webrtc, using a workaround"),n.mid=m,p=_l.parse(this._pc.localDescription.sdp),d=p.media[o.idx],n.rtcp.cname=Sl.getCname({offerMediaObject:d}),t)if(1===t.length){let e=Cl.getRtpEncodings({offerMediaObject:d});Object.assign(e[0],t[0]),u&&(e=[e[0]]),n.encodings=e}else n.encodings=t;else n.encodings=Cl.getRtpEncodings({offerMediaObject:d});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${h.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:d,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:a,codecOptions:r,extmapAllowMixed:!0});const f={type:"answer",sdp:this._remoteSdp.getSdp()};return Il.debug("send() | calling pc.setRemoteDescription() [answer:%o]",f),await this._pc.setRemoteDescription(f),m||(m=c.mid,n.mid=m),this._mapMidTransceiver.set(m,c),{localId:m,rtpParameters:n,rtpSender:c.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;Il.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();Il.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Il.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Il.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();Il.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Il.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Il.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();Il.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Il.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Il.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Il.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(),Il.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 s=await this._pc.createOffer();Il.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Il.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Il.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 s=await this._pc.createOffer();Il.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Il.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}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:s}){this.assertNotClosed(),this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};Il.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%El.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=_l.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Il.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()};Il.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s,streamId:n}=t;Il.debug("receive() [trackId:%s, kind:%s]",e,i);const a=s.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:s,streamId:n||s.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Il.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);for(const t of e){const{trackId:e,onRtpReceiver:i}=t;if(i){const t=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===t));if(!s)throw new Error("transceiver not found");i(s.receiver)}}let s=await this._pc.createAnswer();const n=_l.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,s=r.get(e),a=n.media.find((e=>String(e.mid)===s));Sl.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:_l.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Il.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Il.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()};Il.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Il.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){Il.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()};Il.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Il.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){Il.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()};Il.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Il.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:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};Il.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()};Il.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=_l.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Il.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=_l.parse(this._pc.localDescription.sdp));const r=Sl.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Tl.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')}}ml.ReactNativeUnifiedPlan=Ol;var xl={},Ml=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),jl=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ll=Zi&&Zi.__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)&&Ml(t,e,r);return jl(t,e),t};Object.defineProperty(xl,"__esModule",{value:!0}),xl.ReactNative=void 0;const Al=Ll(ya),Nl=ps,Bl=As,Fl=Ll(Fs),$l=Ll($s),Vl=Ll(ja),Ul=Ll(oc),zl=Va,ql=qa,Gl=new Nl.Logger("ReactNative"),Wl={OS:1024,MIS:1024};class Hl extends zl.HandlerInterface{static createFactory(){return()=>new Hl}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(Gl.debug("close()"),this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){Gl.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=Al.parse(t.sdp);return Vl.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Gl.debug("getNativeSctpCapabilities()"),{numStreams:Wl}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Gl.debug("run()"),this._direction=e,this._remoteSdp=new ql.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:$l.getSendingRtpParameters("audio",d),video:$l.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:$l.getSendingRemoteRtpParameters("audio",d),video:$l.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],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(Gl.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){Gl.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Gl.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Gl.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Gl.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Gl.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Gl.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(),Gl.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Gl.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let s,n=await this._pc.createOffer(),a=Al.parse(n.sdp);const o=Fl.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=$l.reduceCodecs(o.codecs);const c=Fl.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=$l.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(Gl.debug("send() | enabling simulcast"),a=Al.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),Ul.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:Al.write(a)}),Gl.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=Al.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=Vl.getCname({offerMediaObject:s}),o.encodings=Ul.getRtpEncodings({offerMediaObject:s,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:s,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};Gl.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(),Gl.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();Gl.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Gl.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()};Gl.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 Bl.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new Bl.UnsupportedError("not implemented")}async setRtpEncodingParameters(e,t){throw new Bl.UnsupportedError("not implemented")}async getSenderStats(e){throw new Bl.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};Gl.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Wl.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Al.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Gl.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()};Gl.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s}=t;Gl.debug("receive() [trackId:%s, kind:%s]",e,i);const n=i;let a=t.streamId||s.rtcp.cname;Gl.debug("receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc"),a+=`-hack-${Fl.generateRandomNumber()}`,r.set(e,a),this._remoteSdp.receive({mid:n,kind:i,offerRtpParameters:s,streamId:a,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Gl.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=Al.parse(s.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));Vl.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}s={type:"answer",sdp:Al.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Gl.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{kind:e,trackId:s,rtpParameters:n}=i,a=s,o=e,c=r.get(s),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:n}),t.push({localId:a,track:d})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){Gl.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()};Gl.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Gl.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new Bl.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmitTime:n,maxRetransmits:a,protocol:r};Gl.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()};Gl.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Al.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Gl.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=Al.parse(this._pc.localDescription.sdp));const r=Vl.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},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')}}xl.ReactNative=Hl;var Kl=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Jl=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ql=Zi&&Zi.__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)&&Kl(t,e,r);return Jl(t,e),t};Object.defineProperty(cs,"__esModule",{value:!0}),cs.Device=void 0,cs.detectDevice=vp;const Zl=ls,Yl=ps,Xl=gs,ep=As,tp=Ql(Fs),rp=Ql($s),ip=Tn,sp=_a,np=ko,ap=qo,op=ac,cp=Sc,dp=Bc,lp=td,pp=_d,up=Ad,hp=Zd,mp=ml,fp=xl,gp=new Yl.Logger("Device");function vp(){if("object"==typeof navigator&&"ReactNative"===navigator.product)return gp.debug("detectDevice() | React-Native detected"),"undefined"==typeof RTCPeerConnection?void gp.warn("detectDevice() | unsupported react-native-webrtc without RTCPeerConnection, forgot to call registerGlobals()?"):"undefined"!=typeof RTCRtpTransceiver?(gp.debug("detectDevice() | ReactNative UnifiedPlan handler chosen"),"ReactNativeUnifiedPlan"):(gp.debug("detectDevice() | ReactNative PlanB handler chosen"),"ReactNative");if("object"!=typeof navigator||"string"!=typeof navigator.userAgent)gp.warn("detectDevice() | unknown device");else{const e=navigator.userAgent,t=new Zl.UAParser(e);gp.debug("detectDevice() | browser detected [ua:%s, parsed:%o]",e,t.getResult());const r=t.getBrowser(),i=r.name?.toLowerCase(),s=parseInt(r.major??"0"),n=t.getEngine(),a=n.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&&s>=111)return"Chrome111";if(h&&!u&&s>=74||g&&!u&&s>=88)return"Chrome74";if(h&&!u&&s>=70)return"Chrome70";if(h&&!u&&s>=67)return"Chrome67";if(h&&!u&&s>=55)return"Chrome55";if(m&&!u&&s>=120)return"Firefox120";if(m&&!u&&s>=60)return"Firefox60";if(m&&u&&d>=14.3)return"Safari12";if(f&&s>=12&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if(f&&s>=11)return"Safari11";if(g&&!u&&s>=11&&s<=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"}gp.warn("detectDevice() | browser not supported [name:%s, version:%s]",i,s)}}cs.Device=class{constructor({handlerName:e,handlerFactory:t,Handler:r}={}){if(this._loaded=!1,this._observer=new Xl.EnhancedEventEmitter,gp.debug("constructor()"),r){if(gp.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)gp.debug("constructor() | handler given: %s",e);else{if(!(e=vp()))throw new ep.UnsupportedError("device not supported");gp.debug("constructor() | detected handler: %s",e)}switch(e){case"Chrome111":this._handlerFactory=sp.Chrome111.createFactory();break;case"Chrome74":this._handlerFactory=np.Chrome74.createFactory();break;case"Chrome70":this._handlerFactory=ap.Chrome70.createFactory();break;case"Chrome67":this._handlerFactory=op.Chrome67.createFactory();break;case"Chrome55":this._handlerFactory=cp.Chrome55.createFactory();break;case"Firefox120":this._handlerFactory=dp.Firefox120.createFactory();break;case"Firefox60":this._handlerFactory=lp.Firefox60.createFactory();break;case"Safari12":this._handlerFactory=pp.Safari12.createFactory();break;case"Safari11":this._handlerFactory=up.Safari11.createFactory();break;case"Edge11":this._handlerFactory=hp.Edge11.createFactory();break;case"ReactNativeUnifiedPlan":this._handlerFactory=mp.ReactNativeUnifiedPlan.createFactory();break;case"ReactNative":this._handlerFactory=fp.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 ep.InvalidStateError("not loaded");return this._recvRtpCapabilities}get sctpCapabilities(){if(!this._loaded)throw new ep.InvalidStateError("not loaded");return this._sctpCapabilities}get observer(){return this._observer}async load({routerRtpCapabilities:e}){let t;gp.debug("load() [routerRtpCapabilities:%o]",e);try{if(this._loaded)throw new ep.InvalidStateError("already loaded");const r=tp.clone(e);rp.validateRtpCapabilities(r),t=this._handlerFactory();const i=await t.getNativeRtpCapabilities();gp.debug("load() | got native RTP capabilities:%o",i);const s=tp.clone(i);rp.validateRtpCapabilities(s),this._extendedRtpCapabilities=rp.getExtendedRtpCapabilities(s,r),gp.debug("load() | got extended RTP capabilities:%o",this._extendedRtpCapabilities),this._canProduceByKind.audio=rp.canSend("audio",this._extendedRtpCapabilities),this._canProduceByKind.video=rp.canSend("video",this._extendedRtpCapabilities),this._recvRtpCapabilities=rp.getRecvRtpCapabilities(this._extendedRtpCapabilities),rp.validateRtpCapabilities(this._recvRtpCapabilities),gp.debug("load() | got receiving RTP capabilities:%o",this._recvRtpCapabilities),this._sctpCapabilities=await t.getNativeSctpCapabilities(),gp.debug("load() | got native SCTP capabilities:%o",this._sctpCapabilities),rp.validateSctpCapabilities(this._sctpCapabilities),gp.debug("load() succeeded"),this._loaded=!0,t.close()}catch(e){throw t&&t.close(),e}}canProduce(e){if(!this._loaded)throw new ep.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:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d}){return gp.debug("createSendTransport()"),this.createTransport({direction:"send",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}createRecvTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d}){return gp.debug("createRecvTransport()"),this.createTransport({direction:"recv",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}createTransport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:l}){if(!this._loaded)throw new ep.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 s)throw new TypeError("missing dtlsParameters");if(n&&"object"!=typeof n)throw new TypeError("wrong sctpParameters");if(l&&"object"!=typeof l)throw new TypeError("if given, appData must be an object");const p=new ip.Transport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,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 _p={},yp={};Object.defineProperty(yp,"__esModule",{value:!0});var bp={};Object.defineProperty(bp,"__esModule",{value:!0}),function(e){var t=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=Zi&&Zi.__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(cs,e),r(Tn,e),r(Ln,e),r($n,e),r(Gn,e),r(Qn,e),r(yp,e),r(bp,e),r(Va,e),r(As,e)}(_p),function(e){var t=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=Zi&&Zi.__importStar||function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&t(i,e,s);return r(i,e),i},s=Zi&&Zi.__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 n=s(os);e.debug=n.default;const a=cs;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(_p);e.types=o,e.version="3.7.12";var c=no;Object.defineProperty(e,"parseScalabilityMode",{enumerable:!0,get:function(){return c.parse}})}(ts);let wp=!0,Sp=!0;function Cp(e,t,r){const i=e.match(t);return i&&i.length>=r&&parseInt(i[r],10)}function Rp(e,t,r){if(!e.RTCPeerConnection)return;const i=e.RTCPeerConnection.prototype,s=i.addEventListener;i.addEventListener=function(e,i){if(e!==t)return s.apply(this,arguments);const n=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,n),s.apply(this,[e,n])};const n=i.removeEventListener;i.removeEventListener=function(e,r){if(e!==t||!this._eventMap||!this._eventMap[t])return n.apply(this,arguments);if(!this._eventMap[t].has(r))return n.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,n.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 Tp(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(wp=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function kp(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(Sp=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function Pp(){if("object"==typeof window){if(wp)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function Dp(e,t){Sp&&console.warn(e+" is deprecated, please use "+t+" instead.")}function Ip(e){return"[object Object]"===Object.prototype.toString.call(e)}function Ep(e){return Ip(e)?Object.keys(e).reduce((function(t,r){const i=Ip(e[r]),s=i?Ep(e[r]):e[r],n=i&&!Object.keys(s).length;return void 0===s||n?t:Object.assign(t,{[r]:s})}),{}):e}function Op(e,t,r){t&&!r.has(t.id)&&(r.set(t.id,t),Object.keys(t).forEach((i=>{i.endsWith("Id")?Op(e,e.get(t[i]),r):i.endsWith("Ids")&&t[i].forEach((t=>{Op(e,e.get(t),r)}))})))}function xp(e,t,r){const i=r?"outbound-rtp":"inbound-rtp",s=new Map;if(null===t)return s;const n=[];return e.forEach((e=>{"track"===e.type&&e.trackIdentifier===t.id&&n.push(e)})),n.forEach((t=>{e.forEach((r=>{r.type===i&&r.trackId===t.id&&Op(e,r,s)}))})),s}const Mp=Pp;function jp(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 s=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[s("min",r)]=i.ideal,t.optional.push(e),e={},e[s("max",r)]=i.ideal,t.optional.push(e)):(e[s("",r)]=i.ideal,t.optional.push(e))}void 0!==i.exact&&"number"!=typeof i.exact?(t.mandatory=t.mandatory||{},t.mandatory[s("",r)]=i.exact):["min","max"].forEach((e=>{void 0!==i[e]&&(t.mandatory=t.mandatory||{},t.mandatory[s(e,r)]=i[e])}))})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},s=function(e,s){if(t.version>=61)return s(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 n=e.video.facingMode;n=n&&("object"==typeof n?n:{ideal:n});const a=t.version<66;if(n&&("user"===n.exact||"environment"===n.exact||"user"===n.ideal||"environment"===n.ideal)&&(!r.mediaDevices.getSupportedConstraints||!r.mediaDevices.getSupportedConstraints().facingMode||a)){let t;if(delete e.video.facingMode,"environment"===n.exact||"environment"===n.ideal?t=["back","rear"]:"user"!==n.exact&&"user"!==n.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=n.exact?{exact:a.deviceId}:{ideal:a.deviceId}),e.video=i(e.video),Mp("chrome: "+JSON.stringify(e)),s(e)}))}e.video=i(e.video)}return Mp("chrome: "+JSON.stringify(e)),s(e)},n=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){s(e,(e=>{r.webkitGetUserMedia(e,t,(e=>{i&&i(n(e))}))}))}.bind(r),r.mediaDevices.getUserMedia){const e=r.mediaDevices.getUserMedia.bind(r.mediaDevices);r.mediaDevices.getUserMedia=function(t){return s(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(n(e))))))}}}function Lp(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function Ap(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 s=new Event("track");s.track=r.track,s.receiver=i,s.transceiver={receiver:i},s.streams=[t.stream],this.dispatchEvent(s)})),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 s=new Event("track");s.track=r,s.receiver=i,s.transceiver={receiver:i},s.streams=[t.stream],this.dispatchEvent(s)}))},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else Rp(e,"track",(e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e)))}function Np(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 s=r.apply(this,arguments);return s||(s=t(this,e),this._senders.push(s)),s};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 Bp(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 s=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},n=function(e){return new Map(Object.keys(e).map((t=>[t,e[t]])))};if(arguments.length>=2){const i=function(e){r(n(s(e)))};return t.apply(this,[i,e])}return new Promise(((e,r)=>{t.apply(this,[function(t){e(n(s(t)))},r])})).then(r,i)}}function Fp(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=>xp(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}),Rp(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>xp(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 $p(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 s=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]})),s.apply(this,arguments)}}function Vp(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return $p(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 s=e.RTCPeerConnection.prototype.removeStream;function n(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const i=e._reverseStreams[t],s=e._streams[i.id];r=r.replace(new RegExp(s.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||{},s.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 s=this._streams[r.id];if(s)s.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=n(this,t);e[0].apply(null,[r])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):r.apply(this,arguments).then((e=>n(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],s=e._streams[i.id];r=r.replace(new RegExp(i.id,"g"),s.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:n(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 Up(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 zp(e,t){Rp(e,"negotiationneeded",(e=>{const r=e.target;if(!(t.version<72||r.getConfiguration&&"plan-b"===r.getConfiguration().sdpSemantics)||"stable"===r.signalingState)return e}))}var qp=Object.freeze({__proto__:null,fixNegotiationNeeded:zp,shimAddTrackRemoveTrack:Vp,shimAddTrackRemoveTrackWithNative:$p,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,s=r.video&&r.video.height,n=r.video&&r.video.frameRate;return r.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:n||3}},i&&(r.video.mandatory.maxWidth=i),s&&(r.video.mandatory.maxHeight=s),e.navigator.mediaDevices.getUserMedia(r)}))}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))},shimGetSendersWithDtmf:Np,shimGetStats:Bp,shimGetUserMedia:jp,shimMediaStream:Lp,shimOnTrack:Ap,shimPeerConnection:Up,shimSenderReceiverGetStats:Fp});function Gp(e,t){const r=e&&e.navigator,i=e&&e.MediaStreamTrack;if(r.getUserMedia=function(e,t,i){Dp("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 Wp(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 Hp(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,s,n]=arguments;return i.apply(this,[e||null]).then((e=>{if(t.version<53&&!s)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(s,n)}}function Kp(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 Jp(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}),Rp(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function Qp(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){Dp("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function Zp(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function Yp(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 Xp(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 eu(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 tu(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 ru=Object.freeze({__proto__:null,shimAddTransceiver:Yp,shimCreateAnswer:tu,shimCreateOffer:eu,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:Xp,shimGetUserMedia:Gp,shimOnTrack:Wp,shimPeerConnection:Hp,shimRTCDataChannel:Zp,shimReceiverGetStats:Jp,shimRemoveStream:Qp,shimSenderGetStats:Kp});function iu(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 su(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 nu(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype,r=t.createOffer,i=t.createAnswer,s=t.setLocalDescription,n=t.setRemoteDescription,a=t.addIceCandidate;t.createOffer=function(e,t){const i=arguments.length>=2?arguments[2]:arguments[0],s=r.apply(this,[i]);return t?(s.then(e,t),Promise.resolve()):s},t.createAnswer=function(e,t){const r=arguments.length>=2?arguments[2]:arguments[0],s=i.apply(this,[r]);return t?(s.then(e,t),Promise.resolve()):s};let o=function(e,t,r){const i=s.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i};t.setLocalDescription=o,o=function(e,t,r){const i=n.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 au(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(ou(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,r,i){t.mediaDevices.getUserMedia(e).then(r,i)}.bind(t))}function ou(e){return e&&void 0!==e.video?Object.assign({},e,{video:Ep(e.video)}):e}function cu(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?(Dp("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 du(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 lu(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 pu(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var uu=Object.freeze({__proto__:null,shimAudioContext:pu,shimCallbacksAPI:nu,shimConstraints:ou,shimCreateOfferLegacy:lu,shimGetUserMedia:au,shimLocalStreamsAPI:iu,shimRTCIceServerUrls:cu,shimRemoteStreamsAPI:su,shimTrackEventTransceiver:du}),hu={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],s=t.matchPrefix(e+r,"a=ice-pwd:")[0];return i&&s?{usernameFragment:i.substring(12),password:s.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 s=3;s<i.length;s++){const n=i[s],a=t.matchPrefix(e,"a=rtpmap:"+n+" ")[0];if(a){const i=t.parseRtpMap(a),s=t.matchPrefix(e,"a=fmtp:"+n+" ");switch(i.parameters=s.length?t.parseFmtp(s[0]):{},i.rtcpFeedback=t.matchPrefix(e,"a=rtcp-fb:"+n+" ").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 s=t.matchPrefix(e,"a=rtcp-fb:* ").map(t.parseRtcpFb);return r.codecs.forEach((e=>{s.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 s=0;return r.codecs.forEach((e=>{e.maxptime>s&&(s=e.maxptime)})),s>0&&(i+="a=maxptime:"+s+"\r\n"),r.headerExtensions&&r.headerExtensions.forEach((e=>{i+=t.writeExtmap(e)})),i},t.parseRtpEncodingParameters=function(e){const r=[],i=t.parseRtpParameters(e),s=-1!==i.fecMechanisms.indexOf("RED"),n=-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),s&&(t=JSON.parse(JSON.stringify(t)),t.fec={ssrc:o,mechanism:n?"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 s=t.matchPrefix(e,"a=rtcp-rsize");r.reducedSize=s.length>0,r.compound=0===s.length;const n=t.matchPrefix(e,"a=rtcp-mux");return r.mux=n.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 s=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"msid"===e.attribute));return s.length>0?(r=s[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 s;i.length>0&&(s=parseInt(i[0].substring(19),10)),isNaN(s)&&(s=65536);const n=t.matchPrefix(e,"a=sctp-port:");if(n.length>0)return{port:parseInt(n[0].substring(12),10),protocol:r.fmt,maxMessageSize:s};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:s}}},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 s;const n=void 0!==r?r:2;s=e||t.generateSessionId();return"v=0\r\no="+(i||"thisisadapterortc")+" "+s+" "+n+" 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}(hu);var mu=hu.exports,fu=Yi(mu),gu=e({__proto__:null,default:fu},[mu]);function vu(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=fu.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,Rp(e,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function _u(e){!e.RTCIceCandidate||e.RTCIceCandidate&&"relayProtocol"in e.RTCIceCandidate.prototype||Rp(e,"icecandidate",(e=>{if(e.candidate){const t=fu.parseCandidate(e.candidate.candidate);"relay"===t.type&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[t.priority>>24])}return e}))}function yu(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=fu.splitSections(e.sdp);return t.shift(),t.some((e=>{const t=fu.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 s=fu.matchPrefix(e.sdp,"a=max-message-size:");return s.length>0?i=parseInt(s[0].substring(19),10):"firefox"===t.browser&&-1!==r&&(i=2147483637),i}(arguments[0],e);let s;s=0===r&&0===i?Number.POSITIVE_INFINITY:0===r||0===i?Math.max(r,i):Math.min(r,i);const n={};Object.defineProperty(n,"maxMessageSize",{get:()=>s}),this._sctp=n}return r.apply(this,arguments)}}function bu(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],s=i.length||i.size||i.byteLength;if("open"===e.readyState&&t.sctp&&s>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},Rp(e,"datachannel",(e=>(t(e.channel,e.target),e)))}function wu(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 Su(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 Cu(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 Ru(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 Tu=Object.freeze({__proto__:null,removeExtmapAllowMixed:Su,shimAddIceCandidateNullOrEmpty:Cu,shimConnectionState:wu,shimMaxMessageSize:yu,shimParameterlessSetLocalDescription:Ru,shimRTCIceCandidate:vu,shimRTCIceCandidateRelayProtocol:_u,shimSendThrowTypeError:bu});const ku=function({window:e}={},t={shimChrome:!0,shimFirefox:!0,shimSafari:!0}){const r=Pp,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=Cp(r.userAgent,/Firefox\/(\d+)\./,1);else if(r.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection)t.browser="chrome",t.version=Cp(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=Cp(r.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),s={browserDetails:i,commonShim:Tu,extractVersion:Cp,disableLog:Tp,disableWarnings:kp,sdp:gu};switch(i.browser){case"chrome":if(!qp||!Up||!t.shimChrome)return r("Chrome shim is not included in this adapter release."),s;if(null===i.version)return r("Chrome shim can not determine version, not shimming."),s;r("adapter.js shimming chrome."),s.browserShim=qp,Cu(e,i),Ru(e),jp(e,i),Lp(e),Up(e,i),Ap(e),Vp(e,i),Np(e),Bp(e),Fp(e),zp(e,i),vu(e),_u(e),wu(e),yu(e,i),bu(e),Su(e,i);break;case"firefox":if(!ru||!Hp||!t.shimFirefox)return r("Firefox shim is not included in this adapter release."),s;r("adapter.js shimming firefox."),s.browserShim=ru,Cu(e,i),Ru(e),Gp(e,i),Hp(e,i),Wp(e),Qp(e),Kp(e),Jp(e),Zp(e),Yp(e),Xp(e),eu(e),tu(e),vu(e),wu(e),yu(e,i),bu(e);break;case"safari":if(!uu||!t.shimSafari)return r("Safari shim is not included in this adapter release."),s;r("adapter.js shimming safari."),s.browserShim=uu,Cu(e,i),Ru(e),cu(e),lu(e),nu(e),iu(e),su(e),du(e),au(e),pu(e),vu(e),_u(e),yu(e,i),bu(e),Su(e,i);break;default:r("Unsupported browser!")}return s}({window:"undefined"==typeof window?void 0:window});function Pu(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 Du=function(e,t,r){var i=0,s=!!window.mozRTCPeerConnection,n=!!window.RTCIceGatherer,a={};if(r.forEach((function(r){if(window[r+"RTCPeerConnection"]&&("webkit"!==r||!n)){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=s?"moz":n?"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(s){i[s]===e[r][s]&&delete t[r][s],(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(!n&&t)var u=window.setInterval((function(){"closed"!==d.signalingState?p():window.clearInterval(u)}),t);return n||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],s=i.getTracks().map((function(e){return e.kind+":"+e.id})).join(",");return e(t,this.__rtcStatsId,i.id+" "+s),r.apply(this,arguments)})})),["addTrack"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=arguments[0],s=[].slice.call(arguments,1);return e(t,this.__rtcStatsId,i.kind+":"+i.id+" "+(s.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,s=this.__rtcStatsId,n=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",s,r),!(n.length>0&&"function"==typeof n[0]))return r;n[0].apply(null,[r])}),(function(r){if(e(t+"OnFailure",s,r.toString()),!(n.length>1&&"function"==typeof n[1]))throw r;n[1].apply(null,[r])}))})})),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=this.__rtcStatsId,s=arguments;return e(t,this.__rtcStatsId,s[0]),r.apply(this,[s[0]]).then((function(){e(t+"OnSuccess",i,void 0),s.length>=2&&"function"==typeof s[1]&&s[1].apply(null,[])}),(function(r){if(e(t+"OnFailure",i,r.toString()),!(s.length>=3&&"function"==typeof s[2]))throw r;s[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,Pu(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,Pu(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,Pu(t)),t}),(function(t){return e("navigator.mediaDevices.getDisplayMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}return{resetDelta(){a={}}}},Iu=Yi(Du);let Eu;const Ou=new Uint8Array(16);function xu(){if(!Eu&&(Eu="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Eu))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Eu(Ou)}const Mu=[];for(let ew=0;ew<256;++ew)Mu.push((ew+256).toString(16).slice(1));var ju={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Lu(e,t,r){if(ju.randomUUID&&!t&&!e)return ju.randomUUID();const i=(e=e||{}).random||(e.rng||xu)();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 Mu[e[t+0]]+Mu[e[t+1]]+Mu[e[t+2]]+Mu[e[t+3]]+"-"+Mu[e[t+4]]+Mu[e[t+5]]+"-"+Mu[e[t+6]]+Mu[e[t+7]]+"-"+Mu[e[t+8]]+Mu[e[t+9]]+"-"+Mu[e[t+10]]+Mu[e[t+11]]+Mu[e[t+12]]+Mu[e[t+13]]+Mu[e[t+14]]+Mu[e[t+15]]}(i)}var Au={},Nu={},Bu={};Object.defineProperty(Bu,"__esModule",{value:!0}),Bu.isCorrect=Bu.isInSubnet=void 0,Bu.isInSubnet=function(e){return!(this.subnetMask<e.subnetMask)&&this.mask(e.subnetMask)===e.mask()},Bu.isCorrect=function(e){return function(){return this.addressMinusSuffix===this.correctForm()&&(this.subnetMask===e&&!this.parsedSubnet||this.parsedSubnet===String(this.subnetMask))}};var Fu={};Object.defineProperty(Fu,"__esModule",{value:!0}),Fu.RE_SUBNET_STRING=Fu.RE_ADDRESS=Fu.GROUPS=Fu.BITS=void 0,Fu.BITS=32,Fu.GROUPS=4,Fu.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,Fu.RE_SUBNET_STRING=/\/\d{1,2}$/;var $u={};Object.defineProperty($u,"__esModule",{value:!0}),$u.AddressError=void 0;class Vu extends Error{constructor(e,t){super(e),this.name="AddressError",null!==t&&(this.parseMessage=t)}}$u.AddressError=Vu;var Uu={exports:{}};!function(e,t){(function(){var t;function r(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 i(){return new r(null)}var s="undefined"!=typeof navigator;s&&"Microsoft Internet Explorer"==navigator.appName?(r.prototype.am=function(e,t,r,i,s,n){for(var a=32767&t,o=t>>15;--n>=0;){var c=32767&this[e],d=this[e++]>>15,l=o*c+d*a;s=((c=a*c+((32767&l)<<15)+r[i]+(1073741823&s))>>>30)+(l>>>15)+o*d+(s>>>30),r[i++]=1073741823&c}return s},t=30):s&&"Netscape"!=navigator.appName?(r.prototype.am=function(e,t,r,i,s,n){for(;--n>=0;){var a=t*this[e++]+r[i]+s;s=Math.floor(a/67108864),r[i++]=67108863&a}return s},t=26):(r.prototype.am=function(e,t,r,i,s,n){for(var a=16383&t,o=t>>14;--n>=0;){var c=16383&this[e],d=this[e++]>>14,l=o*c+d*a;s=((c=a*c+((16383&l)<<14)+r[i]+s)>>28)+(l>>14)+o*d,r[i++]=268435455&c}return s},t=28),r.prototype.DB=t,r.prototype.DM=(1<<t)-1,r.prototype.DV=1<<t;r.prototype.FV=Math.pow(2,52),r.prototype.F1=52-t,r.prototype.F2=2*t-52;var n,a,o="0123456789abcdefghijklmnopqrstuvwxyz",c=new Array;for(n="0".charCodeAt(0),a=0;a<=9;++a)c[n++]=a;for(n="a".charCodeAt(0),a=10;a<36;++a)c[n++]=a;for(n="A".charCodeAt(0),a=10;a<36;++a)c[n++]=a;function d(e){return o.charAt(e)}function l(e,t){var r=c[e.charCodeAt(t)];return null==r?-1:r}function p(e){var t=i();return t.fromInt(e),t}function u(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 h(e){this.m=e}function m(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 f(e,t){return e&t}function g(e,t){return e|t}function v(e,t){return e^t}function _(e,t){return e&~t}function y(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 w(){}function S(e){return e}function C(e){this.r2=i(),this.q3=i(),r.ONE.dlShiftTo(2*e.t,this.r2),this.mu=this.r2.divide(e),this.m=e}h.prototype.convert=function(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e},h.prototype.revert=function(e){return e},h.prototype.reduce=function(e){e.divRemTo(this.m,null,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)},m.prototype.convert=function(e){var t=i();return e.abs().dlShiftTo(this.m.t,t),t.divRemTo(this.m,null,t),e.s<0&&t.compareTo(r.ZERO)>0&&this.m.subTo(t,t),t},m.prototype.revert=function(e){var t=i();return e.copyTo(t),this.reduce(t),t},m.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)},m.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},m.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},r.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},r.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},r.prototype.fromString=function(e,t){var i;if(16==t)i=4;else if(8==t)i=3;else if(256==t)i=8;else if(2==t)i=1;else if(32==t)i=5;else{if(4!=t)return void this.fromRadix(e,t);i=2}this.t=0,this.s=0;for(var s=e.length,n=!1,a=0;--s>=0;){var o=8==i?255&e[s]:l(e,s);o<0?"-"==e.charAt(s)&&(n=!0):(n=!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(),n&&r.ZERO.subTo(this,this)},r.prototype.clamp=function(){for(var e=this.s&this.DM;this.t>0&&this[this.t-1]==e;)--this.t},r.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},r.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},r.prototype.lShiftTo=function(e,t){var r,i=e%this.DB,s=this.DB-i,n=(1<<s)-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]>>s|o,o=(this[r]&n)<<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()},r.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,s=this.DB-i,n=(1<<i)-1;t[0]=this[r]>>i;for(var a=r+1;a<this.t;++a)t[a-r-1]|=(this[a]&n)<<s,t[a-r]=this[a]>>i;i>0&&(t[this.t-r-1]|=(this.s&n)<<s),t.t=this.t-r,t.clamp()}},r.prototype.subTo=function(e,t){for(var r=0,i=0,s=Math.min(e.t,this.t);r<s;)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()},r.prototype.multiplyTo=function(e,t){var i=this.abs(),s=e.abs(),n=i.t;for(t.t=n+s.t;--n>=0;)t[n]=0;for(n=0;n<s.t;++n)t[n+i.t]=i.am(0,s[n],t,n,0,i.t);t.s=0,t.clamp(),this.s!=e.s&&r.ZERO.subTo(t,t)},r.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()},r.prototype.divRemTo=function(e,t,s){var n=e.abs();if(!(n.t<=0)){var a=this.abs();if(a.t<n.t)return null!=t&&t.fromInt(0),void(null!=s&&this.copyTo(s));null==s&&(s=i());var o=i(),c=this.s,d=e.s,l=this.DB-u(n[n.t-1]);l>0?(n.lShiftTo(l,o),a.lShiftTo(l,s)):(n.copyTo(o),a.copyTo(s));var p=o.t,h=o[p-1];if(0!=h){var m=h*(1<<this.F1)+(p>1?o[p-2]>>this.F2:0),f=this.FV/m,g=(1<<this.F1)/m,v=1<<this.F2,_=s.t,y=_-p,b=null==t?i():t;for(o.dlShiftTo(y,b),s.compareTo(b)>=0&&(s[s.t++]=1,s.subTo(b,s)),r.ONE.dlShiftTo(p,b),b.subTo(o,o);o.t<p;)o[o.t++]=0;for(;--y>=0;){var w=s[--_]==h?this.DM:Math.floor(s[_]*f+(s[_-1]+v)*g);if((s[_]+=o.am(0,w,s,y,0,p))<w)for(o.dlShiftTo(y,b),s.subTo(b,s);s[_]<--w;)s.subTo(b,s)}null!=t&&(s.drShiftTo(p,t),c!=d&&r.ZERO.subTo(t,t)),s.t=p,s.clamp(),l>0&&s.rShiftTo(l,s),c<0&&r.ZERO.subTo(s,s)}}},r.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},r.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},r.prototype.exp=function(e,t){if(e>4294967295||e<1)return r.ONE;var s=i(),n=i(),a=t.convert(this),o=u(e)-1;for(a.copyTo(s);--o>=0;)if(t.sqrTo(s,n),(e&1<<o)>0)t.mulTo(n,a,s);else{var c=s;s=n,n=c}return t.revert(s)},r.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,s=!1,n="",a=this.t,o=this.DB-a*this.DB%t;if(a-- >0)for(o<this.DB&&(r=this[a]>>o)>0&&(s=!0,n=d(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&&(s=!0),s&&(n+=d(r));return s?n:"0"},r.prototype.negate=function(){var e=i();return r.ZERO.subTo(this,e),e},r.prototype.abs=function(){return this.s<0?this.negate():this},r.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},r.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+u(this[this.t-1]^this.s&this.DM)},r.prototype.mod=function(e){var t=i();return this.abs().divRemTo(e,null,t),this.s<0&&t.compareTo(r.ZERO)>0&&e.subTo(t,t),t},r.prototype.modPowInt=function(e,t){var r;return r=e<256||t.isEven()?new h(t):new m(t),this.exp(e,r)},r.ZERO=p(0),r.ONE=p(1),w.prototype.convert=S,w.prototype.revert=S,w.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r)},w.prototype.sqrTo=function(e,t){e.squareTo(t)},C.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=i();return e.copyTo(t),this.reduce(t),t},C.prototype.revert=function(e){return e},C.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)},C.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},C.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)};var R,T,k,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],D=(1<<26)/P[P.length-1];function I(){var e;e=(new Date).getTime(),T[k++]^=255&e,T[k++]^=e>>8&255,T[k++]^=e>>16&255,T[k++]^=e>>24&255,k>=A&&(k-=A)}if(r.prototype.chunkSize=function(e){return Math.floor(Math.LN2*this.DB/Math.log(e))},r.prototype.toRadix=function(e){if(null==e&&(e=10),0==this.signum()||e<2||e>36)return"0";var t=this.chunkSize(e),r=Math.pow(e,t),s=p(r),n=i(),a=i(),o="";for(this.divRemTo(s,n,a);n.signum()>0;)o=(r+a.intValue()).toString(e).substr(1)+o,n.divRemTo(s,n,a);return a.intValue().toString(e)+o},r.prototype.fromRadix=function(e,t){this.fromInt(0),null==t&&(t=10);for(var i=this.chunkSize(t),s=Math.pow(t,i),n=!1,a=0,o=0,c=0;c<e.length;++c){var d=l(e,c);d<0?"-"==e.charAt(c)&&0==this.signum()&&(n=!0):(o=t*o+d,++a>=i&&(this.dMultiply(s),this.dAddOffset(o,0),a=0,o=0))}a>0&&(this.dMultiply(Math.pow(t,a)),this.dAddOffset(o,0)),n&&r.ZERO.subTo(this,this)},r.prototype.fromNumber=function(e,t,i){if("number"==typeof t)if(e<2)this.fromInt(1);else for(this.fromNumber(e,i),this.testBit(e-1)||this.bitwiseTo(r.ONE.shiftLeft(e-1),g,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(t);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(r.ONE.shiftLeft(e-1),this);else{var s=new Array,n=7&e;s.length=1+(e>>3),t.nextBytes(s),n>0?s[0]&=(1<<n)-1:s[0]=0,this.fromString(s,256)}},r.prototype.bitwiseTo=function(e,t,r){var i,s,n=Math.min(e.t,this.t);for(i=0;i<n;++i)r[i]=t(this[i],e[i]);if(e.t<this.t){for(s=e.s&this.DM,i=n;i<this.t;++i)r[i]=t(this[i],s);r.t=this.t}else{for(s=this.s&this.DM,i=n;i<e.t;++i)r[i]=t(s,e[i]);r.t=e.t}r.s=t(this.s,e.s),r.clamp()},r.prototype.changeBit=function(e,t){var i=r.ONE.shiftLeft(e);return this.bitwiseTo(i,t,i),i},r.prototype.addTo=function(e,t){for(var r=0,i=0,s=Math.min(e.t,this.t);r<s;)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()},r.prototype.dMultiply=function(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()},r.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]}},r.prototype.multiplyLowerTo=function(e,t,r){var i,s=Math.min(this.t+e.t,t);for(r.s=0,r.t=s;s>0;)r[--s]=0;for(i=r.t-this.t;s<i;++s)r[s+this.t]=this.am(0,e[s],r,s,0,this.t);for(i=Math.min(e.t,t);s<i;++s)this.am(0,e[s],r,s,0,t-s);r.clamp()},r.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)},r.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},r.prototype.millerRabin=function(e){var t=this.subtract(r.ONE),s=t.getLowestSetBit();if(s<=0)return!1;var n=t.shiftRight(s);(e=e+1>>1)>P.length&&(e=P.length);for(var a=i(),o=0;o<e;++o){a.fromInt(P[Math.floor(Math.random()*P.length)]);var c=a.modPow(n,this);if(0!=c.compareTo(r.ONE)&&0!=c.compareTo(t)){for(var d=1;d++<s&&0!=c.compareTo(t);)if(0==(c=c.modPowInt(2,this)).compareTo(r.ONE))return!1;if(0!=c.compareTo(t))return!1}}return!0},r.prototype.clone=function(){var e=i();return this.copyTo(e),e},r.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]},r.prototype.byteValue=function(){return 0==this.t?this.s:this[0]<<24>>24},r.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},r.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},r.prototype.toByteArray=function(){var e=this.t,t=new Array;t[0]=this.s;var r,i=this.DB-e*this.DB%8,s=0;if(e-- >0)for(i<this.DB&&(r=this[e]>>i)!=(this.s&this.DM)>>i&&(t[s++]=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==s&&(128&this.s)!=(128&r)&&++s,(s>0||r!=this.s)&&(t[s++]=r);return t},r.prototype.equals=function(e){return 0==this.compareTo(e)},r.prototype.min=function(e){return this.compareTo(e)<0?this:e},r.prototype.max=function(e){return this.compareTo(e)>0?this:e},r.prototype.and=function(e){var t=i();return this.bitwiseTo(e,f,t),t},r.prototype.or=function(e){var t=i();return this.bitwiseTo(e,g,t),t},r.prototype.xor=function(e){var t=i();return this.bitwiseTo(e,v,t),t},r.prototype.andNot=function(e){var t=i();return this.bitwiseTo(e,_,t),t},r.prototype.not=function(){for(var e=i(),t=0;t<this.t;++t)e[t]=this.DM&~this[t];return e.t=this.t,e.s=~this.s,e},r.prototype.shiftLeft=function(e){var t=i();return e<0?this.rShiftTo(-e,t):this.lShiftTo(e,t),t},r.prototype.shiftRight=function(e){var t=i();return e<0?this.lShiftTo(-e,t):this.rShiftTo(e,t),t},r.prototype.getLowestSetBit=function(){for(var e=0;e<this.t;++e)if(0!=this[e])return e*this.DB+y(this[e]);return this.s<0?this.t*this.DB:-1},r.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},r.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)},r.prototype.setBit=function(e){return this.changeBit(e,g)},r.prototype.clearBit=function(e){return this.changeBit(e,_)},r.prototype.flipBit=function(e){return this.changeBit(e,v)},r.prototype.add=function(e){var t=i();return this.addTo(e,t),t},r.prototype.subtract=function(e){var t=i();return this.subTo(e,t),t},r.prototype.multiply=function(e){var t=i();return this.multiplyTo(e,t),t},r.prototype.divide=function(e){var t=i();return this.divRemTo(e,t,null),t},r.prototype.remainder=function(e){var t=i();return this.divRemTo(e,null,t),t},r.prototype.divideAndRemainder=function(e){var t=i(),r=i();return this.divRemTo(e,t,r),new Array(t,r)},r.prototype.modPow=function(e,t){var r,s,n=e.bitLength(),a=p(1);if(n<=0)return a;r=n<18?1:n<48?3:n<144?4:n<768?5:6,s=n<8?new h(t):t.isEven()?new C(t):new m(t);var o=new Array,c=3,d=r-1,l=(1<<r)-1;if(o[1]=s.convert(this),r>1){var f=i();for(s.sqrTo(o[1],f);c<=l;)o[c]=i(),s.mulTo(f,o[c-2],o[c]),c+=2}var g,v,_=e.t-1,y=!0,b=i();for(n=u(e[_])-1;_>=0;){for(n>=d?g=e[_]>>n-d&l:(g=(e[_]&(1<<n+1)-1)<<d-n,_>0&&(g|=e[_-1]>>this.DB+n-d)),c=r;0==(1&g);)g>>=1,--c;if((n-=c)<0&&(n+=this.DB,--_),y)o[g].copyTo(a),y=!1;else{for(;c>1;)s.sqrTo(a,b),s.sqrTo(b,a),c-=2;c>0?s.sqrTo(a,b):(v=a,a=b,b=v),s.mulTo(b,o[g],a)}for(;_>=0&&0==(e[_]&1<<n);)s.sqrTo(a,b),v=a,a=b,b=v,--n<0&&(n=this.DB-1,--_)}return s.revert(a)},r.prototype.modInverse=function(e){var t=e.isEven();if(this.isEven()&&t||0==e.signum())return r.ZERO;for(var i=e.clone(),s=this.clone(),n=p(1),a=p(0),o=p(0),c=p(1);0!=i.signum();){for(;i.isEven();)i.rShiftTo(1,i),t?(n.isEven()&&a.isEven()||(n.addTo(this,n),a.subTo(e,a)),n.rShiftTo(1,n)):a.isEven()||a.subTo(e,a),a.rShiftTo(1,a);for(;s.isEven();)s.rShiftTo(1,s),t?(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(s)>=0?(i.subTo(s,i),t&&n.subTo(o,n),a.subTo(c,a)):(s.subTo(i,s),t&&o.subTo(n,o),c.subTo(a,c))}return 0!=s.compareTo(r.ONE)?r.ZERO:c.compareTo(e)>=0?c.subtract(e):c.signum()<0?(c.addTo(e,c),c.signum()<0?c.add(e):c):c},r.prototype.pow=function(e){return this.exp(e,new w)},r.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 s=t.getLowestSetBit(),n=r.getLowestSetBit();if(n<0)return t;for(s<n&&(n=s),n>0&&(t.rShiftTo(n,t),r.rShiftTo(n,r));t.signum()>0;)(s=t.getLowestSetBit())>0&&t.rShiftTo(s,t),(s=r.getLowestSetBit())>0&&r.rShiftTo(s,r),t.compareTo(r)>=0?(t.subTo(r,t),t.rShiftTo(1,t)):(r.subTo(t,r),r.rShiftTo(1,r));return n>0&&r.lShiftTo(n,r),r},r.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],s=t+1;s<P.length&&i<D;)i*=P[s++];for(i=r.modInt(i);t<s;)if(i%P[t++]==0)return!1}return r.millerRabin(e)},r.prototype.square=function(){var e=i();return this.squareTo(e),e},r.prototype.Barrett=C,null==T){var E;if(T=new Array,k=0,"undefined"!=typeof window&&window.crypto)if(window.crypto.getRandomValues){var O=new Uint8Array(32);for(window.crypto.getRandomValues(O),E=0;E<32;++E)T[k++]=O[E]}else if("Netscape"==navigator.appName&&navigator.appVersion<"5"){var x=window.crypto.random(32);for(E=0;E<x.length;++E)T[k++]=255&x.charCodeAt(E)}for(;k<A;)E=Math.floor(65536*Math.random()),T[k++]=E>>>8,T[k++]=255&E;k=0,I()}function M(){if(null==R){for(I(),(R=new L).init(T),k=0;k<T.length;++k)T[k]=0;k=0}return R.next()}function j(){}function L(){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]=M()},L.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},L.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 A=256;e.exports={default:r,BigInteger:r,SecureRandom:j}}).call(Zi)}(Uu);var zu=Uu.exports,qu={};!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 s,n,a,o,c,d,l,p,u,h=1,m=e.length,f="";for(n=0;n<m;n++)if("string"==typeof e[n])f+=e[n];else if("object"==typeof e[n]){if((o=e[n]).keys)for(s=i[h],a=0;a<o.keys.length;a++){if(null==s)throw new Error(r('[sprintf] Cannot access property "%s" of undefined value "%s"',o.keys[a],o.keys[a-1]));s=s[o.keys[a]]}else s=o.param_no?i[o.param_no]:i[h++];if(t.not_type.test(o.type)&&t.not_primitive.test(o.type)&&s instanceof Function&&(s=s()),t.numeric_arg.test(o.type)&&"number"!=typeof s&&isNaN(s))throw new TypeError(r("[sprintf] expecting number but found %T",s));switch(t.number.test(o.type)&&(p=s>=0),o.type){case"b":s=parseInt(s,10).toString(2);break;case"c":s=String.fromCharCode(parseInt(s,10));break;case"d":case"i":s=parseInt(s,10);break;case"j":s=JSON.stringify(s,null,o.width?parseInt(o.width):0);break;case"e":s=o.precision?parseFloat(s).toExponential(o.precision):parseFloat(s).toExponential();break;case"f":s=o.precision?parseFloat(s).toFixed(o.precision):parseFloat(s);break;case"g":s=o.precision?String(Number(s.toPrecision(o.precision))):parseFloat(s);break;case"o":s=(parseInt(s,10)>>>0).toString(8);break;case"s":s=String(s),s=o.precision?s.substring(0,o.precision):s;break;case"t":s=String(!!s),s=o.precision?s.substring(0,o.precision):s;break;case"T":s=Object.prototype.toString.call(s).slice(8,-1).toLowerCase(),s=o.precision?s.substring(0,o.precision):s;break;case"u":s=parseInt(s,10)>>>0;break;case"v":s=s.valueOf(),s=o.precision?s.substring(0,o.precision):s;break;case"x":s=(parseInt(s,10)>>>0).toString(16);break;case"X":s=(parseInt(s,10)>>>0).toString(16).toUpperCase()}t.json.test(o.type)?f+=s:(!t.number.test(o.type)||p&&!o.sign?u="":(u=p?"+":"-",s=s.toString().replace(t.sign,"")),d=o.pad_char?"0"===o.pad_char?"0":o.pad_char.charAt(1):" ",l=o.width-(u+s).length,c=o.width&&l>0?d.repeat(l):"",f+=o.align?u+s+c:"0"===d?u+c+s:c+u+s)}return f}(function(e){if(s[e])return s[e];var r,i=e,n=[],a=0;for(;i;){if(null!==(r=t.text.exec(i)))n.push(r[0]);else if(null!==(r=t.modulo.exec(i)))n.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");n.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 s[e]=n}(e),arguments)}function i(e,t){return r.apply(null,[e].concat(t||[]))}var s=Object.create(null);e.sprintf=r,e.vsprintf=i,"undefined"!=typeof window&&(window.sprintf=r,window.vsprintf=i)}()}(qu);var Gu=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Wu=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Hu=Zi&&Zi.__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)&&Gu(t,e,r);return Wu(t,e),t};Object.defineProperty(Nu,"__esModule",{value:!0}),Nu.Address4=void 0;const Ku=Hu(Bu),Ju=Hu(Fu),Qu=$u,Zu=zu,Yu=qu;class Xu{constructor(e){this.groups=Ju.GROUPS,this.parsedAddress=[],this.parsedSubnet="",this.subnet="/32",this.subnetMask=32,this.v4=!0,this.isCorrect=Ku.isCorrect(Ju.BITS),this.isInSubnet=Ku.isInSubnet,this.address=e;const t=Ju.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>Ju.BITS)throw new Qu.AddressError("Invalid subnet mask.");e=e.replace(Ju.RE_SUBNET_STRING,"")}this.addressMinusSuffix=e,this.parsedAddress=this.parse(e)}static isValid(e){try{return new Xu(e),!0}catch(e){return!1}}parse(e){const t=e.split(".");if(!e.match(Ju.RE_ADDRESS))throw new Qu.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 Xu(r.join("."))}static fromInteger(e){return Xu.fromHex(e.toString(16))}static fromArpa(e){const t=e.replace(/(\.in-addr\.arpa)?\.$/,"").split(".").reverse().join(".");return new Xu(t)}toHex(){return this.parsedAddress.map((e=>(0,Yu.sprintf)("%02x",parseInt(e,10)))).join(":")}toArray(){return this.parsedAddress.map((e=>parseInt(e,10)))}toGroup6(){const e=[];let t;for(t=0;t<Ju.GROUPS;t+=2){const r=(0,Yu.sprintf)("%02x%02x",parseInt(this.parsedAddress[t],10),parseInt(this.parsedAddress[t+1],10));e.push((0,Yu.sprintf)("%x",parseInt(r,16)))}return e.join(":")}bigInteger(){return new Zu.BigInteger(this.parsedAddress.map((e=>(0,Yu.sprintf)("%02x",parseInt(e,10)))).join(""),16)}_startAddress(){return new Zu.BigInteger(this.mask()+"0".repeat(Ju.BITS-this.subnetMask),2)}startAddress(){return Xu.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new Zu.BigInteger("1");return Xu.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new Zu.BigInteger(this.mask()+"1".repeat(Ju.BITS-this.subnetMask),2)}endAddress(){return Xu.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new Zu.BigInteger("1");return Xu.fromBigInteger(this._endAddress().subtract(e))}static fromBigInteger(e){return Xu.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,Yu.sprintf)("%s.in-addr.arpa.",t)}isMulticast(){return this.isInSubnet(new Xu("224.0.0.0/4"))}binaryZeroPad(){return this.bigInteger().toString(2).padStart(Ju.BITS,"0")}groupForV6(){const e=this.parsedAddress;return this.address.replace(Ju.RE_ADDRESS,(0,Yu.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(".")))}}Nu.Address4=Xu;var eh={},th={};Object.defineProperty(th,"__esModule",{value:!0}),th.RE_URL_WITH_PORT=th.RE_URL=th.RE_ZONE_STRING=th.RE_SUBNET_STRING=th.RE_BAD_ADDRESS=th.RE_BAD_CHARACTERS=th.TYPES=th.SCOPES=th.GROUPS=th.BITS=void 0,th.BITS=128,th.GROUPS=8,th.SCOPES={0:"Reserved",1:"Interface local",2:"Link local",4:"Admin local",5:"Site local",8:"Organization local",14:"Global",15:"Reserved"},th.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"},th.RE_BAD_CHARACTERS=/([^0-9a-f:/%])/gi,th.RE_BAD_ADDRESS=/([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi,th.RE_SUBNET_STRING=/\/\d{1,3}(?=%|$)/,th.RE_ZONE_STRING=/%.*$/,th.RE_URL=new RegExp(/^\[{0,1}([0-9a-f:]+)\]{0,1}/),th.RE_URL_WITH_PORT=new RegExp(/\[([0-9a-f:]+)\]:([0-9]{1,5})/);var rh={};Object.defineProperty(rh,"__esModule",{value:!0}),rh.simpleGroup=rh.spanLeadingZeroes=rh.spanAll=rh.spanAllZeroes=void 0;const ih=qu;function sh(e){return e.replace(/(0+)/g,'<span class="zero">$1</span>')}function nh(e){return e.replace(/^(0+)/,'<span class="zero">$1</span>')}rh.spanAllZeroes=sh,rh.spanAll=function(e,t=0){return e.split("").map(((e,r)=>(0,ih.sprintf)('<span class="digit value-%s position-%d">%s</span>',e,r+t,sh(e)))).join("")},rh.spanLeadingZeroes=function(e){return e.split(":").map((e=>nh(e))).join(":")},rh.simpleGroup=function(e,t=0){return e.split(":").map(((e,r)=>/group-v4/.test(e)?e:(0,ih.sprintf)('<span class="hover-group group-%d">%s</span>',r+t,nh(e))))};var ah={},oh=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ch=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),dh=Zi&&Zi.__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)&&oh(t,e,r);return ch(t,e),t};Object.defineProperty(ah,"__esModule",{value:!0}),ah.possibleElisions=ah.simpleRegularExpression=ah.ADDRESS_BOUNDARY=ah.padGroup=ah.groupPossibilities=void 0;const lh=dh(th),ph=qu;function uh(e){return(0,ph.sprintf)("(%s)",e.join("|"))}function hh(e){return e.length<4?(0,ph.sprintf)("0{0,%d}%s",4-e.length,e):e}ah.groupPossibilities=uh,ah.padGroup=hh,ah.ADDRESS_BOUNDARY="[^A-Fa-f0-9:]",ah.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===lh.GROUPS-1?":":"";return uh([hh(e),t])}return hh(e)})).join(":")));return r.push(e.map(hh).join(":")),uh(r)},ah.possibleElisions=function(e,t,r){const i=t?"":":",s=r?"":":",n=[];t||r||n.push("::"),t&&r&&n.push(""),(r&&!t||!r&&t)&&n.push(":"),n.push((0,ph.sprintf)("%s(:0{1,4}){1,%d}",i,e-1)),n.push((0,ph.sprintf)("(0{1,4}:){1,%d}%s",e-1,s)),n.push((0,ph.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++)n.push((0,ph.sprintf)("(0{1,4}:){%d}:(0{1,4}:){%d}0{1,4}",r,e-r-t-1));return uh(n)};var mh=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),fh=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),gh=Zi&&Zi.__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)&&mh(t,e,r);return fh(t,e),t};Object.defineProperty(eh,"__esModule",{value:!0}),eh.Address6=void 0;const vh=gh(Bu),_h=gh(Fu),yh=gh(th),bh=gh(rh),wh=Nu,Sh=ah,Ch=$u,Rh=zu,Th=qu;function kh(e){if(!e)throw new Error("Assertion failed.")}function Ph(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 Dh(e){return(0,Th.sprintf)("%04x",parseInt(e,16))}function Ih(e){return 255&e}class Eh{constructor(e,t){this.addressMinusSuffix="",this.parsedSubnet="",this.subnet="/128",this.subnetMask=128,this.v4=!1,this.zone="",this.isInSubnet=vh.isInSubnet,this.isCorrect=vh.isCorrect(yh.BITS),this.groups=void 0===t?yh.GROUPS:t,this.address=e;const r=yh.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>yh.BITS)throw new Ch.AddressError("Invalid subnet mask.");e=e.replace(yh.RE_SUBNET_STRING,"")}else if(/\//.test(e))throw new Ch.AddressError("Invalid subnet mask.");const i=yh.RE_ZONE_STRING.exec(e);i&&(this.zone=i[0],e=e.replace(yh.RE_ZONE_STRING,"")),this.addressMinusSuffix=e,this.parsedAddress=this.parse(this.addressMinusSuffix)}static isValid(e){try{return new Eh(e),!0}catch(e){return!1}}static fromBigInteger(e){const t=e.toString(16).padStart(32,"0"),r=[];let i;for(i=0;i<yh.GROUPS;i++)r.push(t.slice(4*i,4*(i+1)));return new Eh(r.join(":"))}static fromURL(e){let t,r,i=null;if(-1!==e.indexOf("[")&&-1!==e.indexOf("]:")){if(r=yh.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=yh.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 Eh(t),port:i}}static fromAddress4(e){const t=new wh.Address4(e),r=yh.BITS-(_h.BITS-t.subnetMask);return new Eh(`::ffff:${t.correctForm()}/${r}`)}static fromArpa(e){let t=e.replace(/(\.ip6\.arpa)?\.$/,"");if(63!==t.length)throw new Ch.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 Eh(t)}microsoftTranscription(){return(0,Th.sprintf)("%s.ipv6-literal.net",this.correctForm().replace(/:/g,"-"))}mask(e=this.subnetMask){return this.getBitsBase2(0,e)}possibleSubnets(e=128){const t=yh.BITS-this.subnetMask-Math.abs(e-yh.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 Rh.BigInteger("2",10).pow(t).toString(10))}_startAddress(){return new Rh.BigInteger(this.mask()+"0".repeat(yh.BITS-this.subnetMask),2)}startAddress(){return Eh.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new Rh.BigInteger("1");return Eh.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new Rh.BigInteger(this.mask()+"1".repeat(yh.BITS-this.subnetMask),2)}endAddress(){return Eh.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new Rh.BigInteger("1");return Eh.fromBigInteger(this._endAddress().subtract(e))}getScope(){let e=yh.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(yh.TYPES))if(this.isInSubnet(new Eh(e)))return yh.TYPES[e];return"Global unicast"}getBits(e,t){return new Rh.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,yh.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,Th.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 s=i.map((e=>e[1]-e[0]+1));if(i.length>0){const e=s.indexOf(Math.max(...s));t=function(e,t){const r=[],i=[];let s;for(s=0;s<e.length;s++)s<t[0]?r.push(e[s]):s>t[1]&&i.push(e[s]);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 n=t.join(":");return n=n.replace(/^compact$/,"::"),n=n.replace(/^compact|compact$/,":"),n=n.replace(/compact/,""),n}binaryZeroPad(){return this.bigInteger().toString(2).padStart(yh.BITS,"0")}parse4in6(e){const t=e.split(":"),r=t.slice(-1)[0].match(_h.RE_ADDRESS);if(r){this.parsedAddress4=r[0],this.address4=new wh.Address4(this.parsedAddress4);for(let t=0;t<this.address4.groups;t++)if(/^0[0-9]+/.test(this.address4.parsedAddress[t]))throw new Ch.AddressError("IPv4 addresses can't have leading zeroes.",e.replace(_h.RE_ADDRESS,this.address4.parsedAddress.map(Ph).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(yh.RE_BAD_CHARACTERS);if(t)throw new Ch.AddressError((0,Th.sprintf)("Bad character%s detected in address: %s",t.length>1?"s":"",t.join("")),e.replace(yh.RE_BAD_CHARACTERS,'<span class="parse-error">$1</span>'));const r=e.match(yh.RE_BAD_ADDRESS);if(r)throw new Ch.AddressError((0,Th.sprintf)("Address failed regex: %s",r.join("")),e.replace(yh.RE_BAD_ADDRESS,'<span class="parse-error">$1</span>'));let i=[];const s=e.split("::");if(2===s.length){let e=s[0].split(":"),t=s[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 Ch.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!==s.length)throw new Ch.AddressError("Too many :: groups found");i=e.split(":"),this.elidedGroups=0}if(i=i.map((e=>(0,Th.sprintf)("%x",parseInt(e,16)))),i.length!==this.groups)throw new Ch.AddressError("Incorrect number of groups found");return i}canonicalForm(){return this.parsedAddress.map(Dh).join(":")}decimal(){return this.parsedAddress.map((e=>(0,Th.sprintf)("%05d",parseInt(e,16)))).join(":")}bigInteger(){return new Rh.BigInteger(this.parsedAddress.map(Dh).join(""),16)}to4(){const e=this.binaryZeroPad().split("");return wh.Address4.fromHex(new Rh.BigInteger(e.slice(96,128).join(""),2).toString(16))}to4in6(){const e=this.to4(),t=new Eh(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 Rh.BigInteger("ffff",16)).toString(),r=wh.Address4.fromHex(this.getBitsBase16(32,64)),i=wh.Address4.fromHex(this.getBits(96,128).xor(new Rh.BigInteger("ffffffff",16)).toString(16)),s=this.getBits(64,80),n=this.getBitsBase2(64,80),a=s.testBit(15),o=s.testBit(14),c=s.testBit(8),d=s.testBit(9),l=new Rh.BigInteger(n.slice(2,6)+n.slice(8,16),2).toString(10);return{prefix:(0,Th.sprintf)("%s:%s",e.slice(0,4),e.slice(4,8)),server4:r.address,client4:i.address,flags:n,coneNat:a,microsoft:{reserved:o,universalLocal:d,groupIndividual:c,nonce:l},udpPort:t}}inspect6to4(){const e=this.getBitsBase16(0,16),t=wh.Address4.fromHex(this.getBitsBase16(16,48));return{prefix:(0,Th.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 Eh(e)}toByteArray(){const e=this.bigInteger().toByteArray();return 17===e.length&&0===e[0]?e.slice(1):e}toUnsignedByteArray(){return this.toByteArray().map(Ih)}static fromByteArray(e){return this.fromUnsignedByteArray(e.map(Ih))}static fromUnsignedByteArray(e){const t=new Rh.BigInteger("256",10);let r=new Rh.BigInteger("0",10),i=new Rh.BigInteger("1",10);for(let s=e.length-1;s>=0;s--)r=r.add(i.multiply(new Rh.BigInteger(e[s].toString(10),10))),i=i.multiply(t);return Eh.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 Eh("2001::/32"))}is6to4(){return this.isInSubnet(new Eh("2002::/16"))}isLoopback(){return"Loopback"===this.getType()}href(e){return e=void 0===e?"":(0,Th.sprintf)(":%s",e),(0,Th.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,Th.sprintf)('<a href="%1$s%2$s" class="%3$s">%2$s</a>',e.prefix,t.call(this),e.className):(0,Th.sprintf)('<a href="%1$s%2$s">%2$s</a>',e.prefix,t.call(this))}group(){if(0===this.elidedGroups)return bh.simpleGroup(this.address).join(":");kh("number"==typeof this.elidedGroups),kh("number"==typeof this.elisionBegin);const e=[],[t,r]=this.address.split("::");t.length?e.push(...bh.simpleGroup(t)):e.push("");const i=["hover-group"];for(let e=this.elisionBegin;e<this.elisionBegin+this.elidedGroups;e++)i.push((0,Th.sprintf)("group-%d",e));return e.push((0,Th.sprintf)('<span class="%s"></span>',i.join(" "))),r.length?e.push(...bh.simpleGroup(r,this.elisionEnd)):e.push(""),this.is4()&&(kh(this.address4 instanceof wh.Address4),e.pop(),e.push(this.address4.groupForV6())),e.join(":")}regularExpressionString(e=!1){let t=[];const r=new Eh(this.correctForm());if(0===r.elidedGroups)t.push((0,Sh.simpleRegularExpression)(r.parsedAddress));else if(r.elidedGroups===yh.GROUPS)t.push((0,Sh.possibleElisions)(yh.GROUPS));else{const e=r.address.split("::");e[0].length&&t.push((0,Sh.simpleRegularExpression)(e[0].split(":"))),kh("number"==typeof r.elidedGroups),t.push((0,Sh.possibleElisions)(r.elidedGroups,0!==e[0].length,0!==e[1].length)),e[1].length&&t.push((0,Sh.simpleRegularExpression)(e[1].split(":"))),t=[t.join(":")]}return e||(t=["(?=^|",Sh.ADDRESS_BOUNDARY,"|[^\\w\\:])(",...t,")(?=[^\\w\\:]|",Sh.ADDRESS_BOUNDARY,"|$)"]),t.join("")}regularExpression(e=!1){return new RegExp(this.regularExpressionString(e),"i")}}eh.Address6=Eh,function(e){var t=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=Zi&&Zi.__importStar||function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&t(i,e,s);return r(i,e),i};Object.defineProperty(e,"__esModule",{value:!0}),e.v6=e.AddressError=e.Address6=e.Address4=void 0;const s=Nu;Object.defineProperty(e,"Address4",{enumerable:!0,get:function(){return s.Address4}});const n=eh;Object.defineProperty(e,"Address6",{enumerable:!0,get:function(){return n.Address6}});const a=$u;Object.defineProperty(e,"AddressError",{enumerable:!0,get:function(){return a.AddressError}});const o=i(rh);e.v6={helpers:o}}(Au);var Oh={exports:{}};!function(e){(function(){var t,r,i,s,n,a,o,c;r={},null!==e&&e.exports?e.exports=r:this.ipaddr=r,o=function(e,t,r,i){var s,n;if(e.length!==t.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(s=0;i>0;){if((n=r-i)<0&&(n=0),e[s]>>n!=t[s]>>n)return!1;i-=r,s+=1}return!0},r.subnetMatch=function(e,t,r){var i,s,n,a,o;for(n in null==r&&(r="unicast"),t)for(!(a=t[n])[0]||a[0]instanceof Array||(a=[a]),i=0,s=a.length;i<s;i++)if(o=a[i],e.kind()===o[0].kind()&&e.match.apply(e,o))return n;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,s,n,a;for(a={0:8,128:7,192:6,224:5,240:4,248:3,252:2,254:1,255:0},e=0,s=!1,t=r=3;r>=0;t=r+=-1){if(!((i=this.octets[t])in a))return null;if(n=a[i],s&&0!==n)return null;8!==n&&(s=!0),e+=n}return 32-e},e}(),i="(0?\\d+|0x[a-f0-9]+)",s={fourOctet:new RegExp("^"+i+"\\."+i+"\\."+i+"\\."+i+"$","i"),longValue:new RegExp("^"+i+"$","i")},r.IPv4.parser=function(e){var t,r,i,n,a;if(r=function(e){return"0"===e[0]&&"x"!==e[1]?parseInt(e,8):parseInt(e)},t=e.match(s.fourOctet))return function(){var e,s,n,a;for(a=[],e=0,s=(n=t.slice(1,6)).length;e<s;e++)i=n[e],a.push(r(i));return a}();if(t=e.match(s.longValue)){if((a=r(t[1]))>4294967295||a<0)throw new Error("ipaddr: address outside defined range");return function(){var e,t;for(t=[],n=e=0;e<=24;n=e+=8)t.push(a>>n&255);return t}().reverse()}return null},r.IPv6=function(){function e(e,t){var r,i,s,n,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(s=0,n=(o=this.parts).length;s<n;s++)if(!(0<=(a=o[s])&&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,s;for(i=/((^|:)(0(:|$)){2,})/g,s=this.toNormalizedString(),e=0,t=-1;r=i.exec(s);)r[0].length>t&&(e=r.index,t=r[0].length);return t<0?s:s.substring(0,e)+"::"+s.substring(e+t)},e.prototype.toByteArray=function(){var e,t,r,i,s;for(e=[],t=0,r=(s=this.parts).length;t<r;t++)i=s[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,s;for(s=[],e=0,r=(i=this.parts).length;e<r;e++)t=i[e],s.push(t.toString(16));return s}.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,s;for(s=[],e=0,r=(i=this.parts).length;e<r;e++)t=i[e],s.push(t.toString(16).padStart(4,"0"));return s}.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,s,n,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,s=!1,t=r=7;r>=0;t=r+=-1){if(!((i=this.parts[t])in a))return null;if(n=a[i],s&&0!==n)return null;16!==n&&(s=!0),e+=n}return 128-e},e}(),n="(?:[0-9a-f]+::?)+",c="%[0-9a-z]{1,}",a={zoneIndex:new RegExp(c,"i"),native:new RegExp("^(::)?("+n+")?([0-9a-f]+)?(::)?("+c+")?$","i"),transitional:new RegExp("^((?:"+n+")|(?:::)(?:"+n+")?)"+i+"\\."+i+"\\."+i+"\\."+i+"("+c+")?$","i")},t=function(e,t){var r,i,s,n,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,n=":";o--;)n+="0:";return":"===(e=e.replace("::",n))[0]&&(e=e.slice(1)),":"===e[e.length-1]&&(e=e.slice(0,-1)),t=function(){var t,r,i,n;for(n=[],t=0,r=(i=e.split(":")).length;t<r;t++)s=i[t],n.push(parseInt(s,16));return n}(),{parts:t,zoneId:c}},r.IPv6.parser=function(e){var r,i,s,n,o,c,d;if(a.native.test(e))return t(e,8);if((n=e.match(a.transitional))&&(d=n[6]||"",(r=t(n[1].slice(0,-1)+d,6)).parts)){for(i=0,s=(c=[parseInt(n[2]),parseInt(n[3]),parseInt(n[4]),parseInt(n[5])]).length;i<s;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,s,n;try{for(i=(t=this.parseCIDR(e))[0].toByteArray(),n=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),s=[],r=0;r<4;)s.push(parseInt(i[r],10)|255^parseInt(n[r],10)),r++;return new this(s)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},r.IPv4.networkAddressFromCIDR=function(e){var t,r,i,s,n;try{for(i=(t=this.parseCIDR(e))[0].toByteArray(),n=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),s=[],r=0;r<4;)s.push(parseInt(i[r],10)&parseInt(n[r],10)),r++;return new this(s)}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(Zi)}(Oh);var xh=Oh.exports,Mh=function(e,t){if("string"==typeof t)return jh(e,t);if("object"==typeof t){for(var r=!1,i=0;i<t.length;i++)if(jh(e,t[i])){r=!0;break}return r}};function jh(e,t){try{var r=xh.process(e);if(-1===t.indexOf("/")){var i=xh.process(t);return"ipv6"===r.kind()&&"ipv6"===i.kind()?r.toNormalizedString()===i.toNormalizedString():r.toString()==i.toString()}var s=xh.parseCIDR(t);return r.match(s)}catch(e){return!1}}var Lh=Mh,Ah=/^((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]?)$/,Nh=["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"],Bh=["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"];for(var Fh=function(e){var t=[],r={originalIp:e,boiledIp:!1,isValid:!1,isBogon:!1,isApipa:!1,isMulticast:!1,isRfc1918:!1,isPublicIp:!1};if(Ah.test(e)){r.isValid=!0;for(var i=e.split("."),s=0;s<4;s++)t.push(parseInt(i[s],10));r.boiledIp=t.join("."),Lh(r.boiledIp,Nh)&&(r.isBogon=!0),Lh(r.boiledIp,"169.254.0.0/16")&&(r.isApipa=!0),Lh(r.boiledIp,"224.0.0.0/4")&&(r.isMulticast=!0),Lh(r.boiledIp,Bh)?r.isRfc1918=!0:!1===r.isBogon&&(r.isPublicIp=!0)}return r},$h=Yi(Fh),Vh={exports:{}},Uh=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i,zh=[],qh=0;qh<256;qh++)zh[qh]=(qh+256).toString(16).substr(1);Vh.exports=function(e,t){var r;if(Buffer.isBuffer(e))r=function(e,t){var r=t||0,i=zh;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(),!Uh.test(r))return!1;if(void 0===t)t=Gh(r);else if(Gh(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 Gh=Vh.exports.version=function(e){return 0|e.charAt(14)},Wh=Yi(Vh.exports);const Hh=Object.create(null);Hh.open="0",Hh.close="1",Hh.ping="2",Hh.pong="3",Hh.message="4",Hh.upgrade="5",Hh.noop="6";const Kh=Object.create(null);Object.keys(Hh).forEach((e=>{Kh[Hh[e]]=e}));const Jh={type:"error",data:"parser error"},Qh="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),Zh="function"==typeof ArrayBuffer,Yh=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,Xh=({type:e,data:t},r,i)=>Qh&&t instanceof Blob?r?i(t):em(t,i):Zh&&(t instanceof ArrayBuffer||Yh(t))?r?i(t):em(new Blob([t]),i):i(Hh[e]+(t||"")),em=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+(e||""))},r.readAsDataURL(e)};function tm(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let rm;const im="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",sm="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let tw=0;tw<64;tw++)sm[im.charCodeAt(tw)]=tw;const nm="function"==typeof ArrayBuffer,am=(e,t)=>{if("string"!=typeof e)return{type:"message",data:cm(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:om(e.substring(1),t)};return Kh[r]?e.length>1?{type:Kh[r],data:e.substring(1)}:{type:Kh[r]}:Jh},om=(e,t)=>{if(nm){const r=(e=>{let t,r,i,s,n,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=sm[e.charCodeAt(t)],i=sm[e.charCodeAt(t+1)],s=sm[e.charCodeAt(t+2)],n=sm[e.charCodeAt(t+3)],l[c++]=r<<2|i>>4,l[c++]=(15&i)<<4|s>>2,l[c++]=(3&s)<<6|63&n;return d})(e);return cm(r,t)}return{base64:!0,data:e}},cm=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,dm=String.fromCharCode(30);function lm(){return new TransformStream({transform(e,t){!function(e,t){Qh&&e.data instanceof Blob?e.data.arrayBuffer().then(tm).then(t):Zh&&(e.data instanceof ArrayBuffer||Yh(e.data))?t(tm(e.data)):Xh(e,!1,(e=>{rm||(rm=new TextEncoder),t(rm.encode(e))}))}(e,(r=>{const i=r.length;let s;if(i<126)s=new Uint8Array(1),new DataView(s.buffer).setUint8(0,i);else if(i<65536){s=new Uint8Array(3);const e=new DataView(s.buffer);e.setUint8(0,126),e.setUint16(1,i)}else{s=new Uint8Array(9);const e=new DataView(s.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(i))}e.data&&"string"!=typeof e.data&&(s[0]|=128),t.enqueue(s),t.enqueue(r)}))}})}let pm;function um(e){return e.reduce(((e,t)=>e+t.length),0)}function hm(e,t){if(e[0].length===t)return e.shift();const r=new Uint8Array(t);let i=0;for(let s=0;s<t;s++)r[s]=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 mm(e){if(e)return function(e){for(var t in mm.prototype)e[t]=mm.prototype[t];return e}(e)}mm.prototype.on=mm.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},mm.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},mm.prototype.off=mm.prototype.removeListener=mm.prototype.removeAllListeners=mm.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 s=0;s<i.length;s++)if((r=i[s])===t||r.fn===t){i.splice(s,1);break}return 0===i.length&&delete this._callbacks["$"+e],this},mm.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 s=(r=r.slice(0)).length;i<s;++i)r[i].apply(this,t)}return this},mm.prototype.emitReserved=mm.prototype.emit,mm.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},mm.prototype.hasListeners=function(e){return!!this.listeners(e).length};const fm="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function gm(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const vm=fm.setTimeout,_m=fm.clearTimeout;function ym(e,t){t.useNativeTimers?(e.setTimeoutFn=vm.bind(fm),e.clearTimeoutFn=_m.bind(fm)):(e.setTimeoutFn=fm.setTimeout.bind(fm),e.clearTimeoutFn=fm.clearTimeout.bind(fm))}class bm extends Error{constructor(e,t,r){super(e),this.description=t,this.context=r,this.type="TransportError"}}class wm extends mm{constructor(e){super(),this.writable=!1,ym(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,r){return super.emitReserved("error",new bm(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=am(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 Sm="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),Cm=64,Rm={};let Tm,km=0,Pm=0;function Dm(e){let t="";do{t=Sm[e%Cm]+t,e=Math.floor(e/Cm)}while(e>0);return t}function Im(){const e=Dm(+new Date);return e!==Tm?(km=0,Tm=e):e+"."+Dm(km++)}for(;Pm<Cm;Pm++)Rm[Sm[Pm]]=Pm;let Em=!1;try{Em="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(rw){}const Om=Em;function xm(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||Om))return new XMLHttpRequest}catch(e){}if(!t)try{return new(fm[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function Mm(){}const jm=null!=new xm({xdomain:!1}).responseType;class Lm extends mm{constructor(e,t){super(),ym(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=gm(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd;const r=this.xhr=new xm(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=Lm.requestsCount++,Lm.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=Mm,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete Lm.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(Lm.requestsCount=0,Lm.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",Am);else if("function"==typeof addEventListener){addEventListener("onpagehide"in fm?"pagehide":"unload",Am,!1)}function Am(){for(let e in Lm.requests)Lm.requests.hasOwnProperty(e)&&Lm.requests[e].abort()}const Nm="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),Bm=fm.WebSocket||fm.MozWebSocket,Fm="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();const $m={websocket:class extends wm{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=Fm?{}:gm(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=Fm?new Bm(e,t,r):t?new Bm(e,t):new Bm(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;Xh(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&Nm((()=>{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]=Im()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!Bm}},webtransport:class extends wm{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){pm||(pm=new TextDecoder);const r=[];let i=0,s=-1,n=!1;return new TransformStream({transform(a,o){for(r.push(a);;){if(0===i){if(um(r)<1)break;const e=hm(r,1);n=128==(128&e[0]),s=127&e[0],i=s<126?3:126===s?1:2}else if(1===i){if(um(r)<2)break;const e=hm(r,2);s=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),i=3}else if(2===i){if(um(r)<8)break;const e=hm(r,8),t=new DataView(e.buffer,e.byteOffset,e.length),n=t.getUint32(0);if(n>Math.pow(2,21)-1){o.enqueue(Jh);break}s=n*Math.pow(2,32)+t.getUint32(4),i=3}else{if(um(r)<s)break;const e=hm(r,s);o.enqueue(am(n?e:pm.decode(e),t)),i=0}if(0===s||s>e){o.enqueue(Jh);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=e.readable.pipeThrough(t).getReader(),i=lm();i.readable.pipeTo(e.writable),this.writer=i.writable.getWriter();const s=()=>{r.read().then((({done:e,value:t})=>{e||(this.onPacket(t),s())})).catch((e=>{}))};s();const n={type:"open"};this.query.sid&&(n.data=`{"sid":"${this.query.sid}"}`),this.writer.write(n).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&&Nm((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends wm{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=jm&&!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(dm),i=[];for(let e=0;e<r.length;e++){const s=am(r[e],t);if(i.push(s),"error"===s.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 s=0;e.forEach(((e,n)=>{Xh(e,!1,(e=>{i[n]=e,++s===r&&t(i.join(dm))}))}))})(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]=Im()),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 Lm(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}}},Vm=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Um=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function zm(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 s=Vm.exec(e||""),n={},a=14;for(;a--;)n[Um[a]]=s[a]||"";return-1!=r&&-1!=i&&(n.source=t,n.host=n.host.substring(1,n.host.length-1).replace(/;/g,":"),n.authority=n.authority.replace("[","").replace("]","").replace(/;/g,":"),n.ipv6uri=!0),n.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,n.path),n.queryKey=function(e,t){const r={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,i){t&&(r[t]=i)})),r}(0,n.query),n}let qm=class e extends mm{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=zm(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=zm(t.host).host),ym(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 $m[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 s=()=>{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 n(){i||(i=!0,l(),r.close(),r=null)}const a=e=>{const t=new Error("probe error: "+e);t.transport=r.name,n(),this.emitReserved("upgradeError",t)};function o(){a("transport closed")}function c(){a("socket closed")}function d(e){r&&e.name!==r.name&&n()}const l=()=>{r.removeListener("open",s),r.removeListener("error",a),r.removeListener("close",o),this.off("close",c),this.off("upgrading",d)};r.once("open",s),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,s=e.length;i<s;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 s={type:e,data:t,options:r};this.emitReserved("packetCreate",s),this.writeBuffer.push(s),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}};qm.protocol=4;const Gm="function"==typeof ArrayBuffer,Wm=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,Hm=Object.prototype.toString,Km="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Hm.call(Blob),Jm="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===Hm.call(File);function Qm(e){return Gm&&(e instanceof ArrayBuffer||Wm(e))||Km&&e instanceof Blob||Jm&&e instanceof File}function Zm(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(Zm(e[t]))return!0;return!1}if(Qm(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Zm(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Zm(e[t]))return!0;return!1}function Ym(e){const t=[],r=e.data,i=e;return i.data=Xm(r,t),i.attachments=t.length,{packet:i,buffers:t}}function Xm(e,t){if(!e)return e;if(Qm(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]=Xm(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]=Xm(e[i],t));return r}return e}function ef(e,t){return e.data=tf(e.data,t),delete e.attachments,e}function tf(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]=tf(e[r],t);else if("object"==typeof e)for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(e[r]=tf(e[r],t));return e}const rf=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var sf;!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"}(sf||(sf={}));function nf(e){return"[object Object]"===Object.prototype.toString.call(e)}class af extends mm{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===sf.BINARY_EVENT;r||t.type===sf.BINARY_ACK?(t.type=r?sf.EVENT:sf.ACK,this.reconstructor=new of(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!Qm(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===sf[r.type])throw new Error("unknown packet type "+r.type);if(r.type===sf.BINARY_EVENT||r.type===sf.BINARY_ACK){const i=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const s=e.substring(i,t);if(s!=Number(s)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(s)}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(!af.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 sf.CONNECT:return nf(t);case sf.DISCONNECT:return void 0===t;case sf.CONNECT_ERROR:return"string"==typeof t||nf(t);case sf.EVENT:case sf.BINARY_EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===rf.indexOf(t[0]));case sf.ACK:case sf.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class of{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=ef(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var cf=Object.freeze({__proto__:null,Decoder:af,Encoder:class{constructor(e){this.replacer=e}encode(e){return e.type!==sf.EVENT&&e.type!==sf.ACK||!Zm(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===sf.EVENT?sf.BINARY_EVENT:sf.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}encodeAsString(e){let t=""+e.type;return e.type!==sf.BINARY_EVENT&&e.type!==sf.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=Ym(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},get PacketType(){return sf},protocol:5});function df(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const lf=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class pf extends mm{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=[df(e,"open",this.onopen.bind(this)),df(e,"packet",this.onpacket.bind(this)),df(e,"error",this.onerror.bind(this)),df(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(lf.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:sf.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 s=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(s),t.apply(this,[null,...e])}}emitWithAck(e,...t){const r=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((i,s)=>{t.push(((e,t)=>r?e?s(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:sf.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 sf.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 sf.EVENT:case sf.BINARY_EVENT:this.onevent(e);break;case sf.ACK:case sf.BINARY_ACK:this.onack(e);break;case sf.DISCONNECT:this.ondisconnect();break;case sf.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:sf.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:sf.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 uf(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}uf.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)},uf.prototype.reset=function(){this.attempts=0},uf.prototype.setMin=function(e){this.ms=e},uf.prototype.setMax=function(e){this.max=e},uf.prototype.setJitter=function(e){this.jitter=e};class hf extends mm{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,ym(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 uf({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||cf;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 qm(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=df(t,"open",(function(){r.onopen(),e&&e()})),s=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},n=df(t,"error",s);if(!1!==this._timeout){const e=this._timeout,r=this.setTimeoutFn((()=>{i(),s(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(n),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(df(e,"ping",this.onping.bind(this)),df(e,"data",this.ondata.bind(this)),df(e,"error",this.onerror.bind(this)),df(e,"close",this.onclose.bind(this)),df(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){Nm((()=>{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 pf(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 mf={};function ff(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=zm(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 s=-1!==i.host.indexOf(":")?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+s+":"+i.port+t,i.href=i.protocol+"://"+s+(r&&r.port===i.port?"":":"+i.port),i}(e,(t=t||{}).path||"/socket.io"),i=r.source,s=r.id,n=r.path,a=mf[s]&&n in mf[s].nsps;let o;return t.forceNew||t["force new connection"]||!1===t.multiplex||a?o=new hf(i,t):(mf[s]||(mf[s]=new hf(i,t)),o=mf[s]),r.query&&!t.query&&(t.query=r.queryKey),o.socket(r.path,t)}Object.assign(ff,{Manager:hf,Socket:pf,io:ff,connect:ff});const gf=new URLSearchParams(window.location.search).has("debug");class vf{constructor(){this._isEnabled=!1,this._debugger=null,this._isEnabled=gf}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)}}function _f(e,t,r,i){return new(r||(r=Promise))((function(s,n){function a(e){try{c(i.next(e))}catch(e){n(e)}}function o(e){try{c(i.throw(e))}catch(e){n(e)}}function c(e){e.done?s(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;let yf=[],bf=0;const wf=new WeakMap;if(window.RTCPeerConnection){const iw=window.RTCPeerConnection;function sw(e){const t=new iw(e);yf.push(t),wf.set(t,{index:bf++});const r=()=>{"closed"===t.connectionState&&((e=>{yf=yf.filter((t=>t!==e))})(t),t.removeEventListener("connectionstatechange",r))};return t.addEventListener("connectionstatechange",r),t}sw.prototype=iw.prototype,window.RTCPeerConnection=sw}const Sf=null,Cf=()=>{var e;return null===(e=Sf)||void 0===e?void 0:e.getUpdatedStats()};class Rf{static parse(e){let t;try{t=JSON.parse(e)}catch(e){return}if("object"==typeof t&&!Array.isArray(t))return t.request?Rf._handleRequest(t):t.response?Rf._handleResponse(t):t.message?Rf._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 Tf=new vf;class kf extends Gi{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()}isConnected(){var e,t;return(null===(e=this.socket)||void 0===e?void 0:e.readyState)===WebSocket.OPEN||(null===(t=this.socket)||void 0===t?void 0:t.readyState)===WebSocket.CONNECTING}_onOpen(){Tf.info("Connected"),this.emit("open")}_onMessage(e){const t=Rf.parse(e.data);Tf.info("Received message",t),(null==t?void 0:t.response)?this._handleResponse(t):(null==t?void 0:t.message)&&this.emit("message",t)}_onClose(){Tf.info("Disconnected"),this._tearDown()}_onError(e){Tf.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=Rf.createMessage(e,t);this.send(r)}request(e,t={},r=1500*(15+.1*this.sents.size)){const i=Rf.createRequest(e,t);return this.send(i),new Promise(((e,t)=>{const s={id:i.id,method:i.method,resolve:t=>{this.sents.delete(i.id)&&(clearTimeout(s.timer),e(t))},reject:e=>{this.sents.delete(i.id)&&(clearTimeout(s.timer),t(e))},timer:setTimeout((()=>{this.sents.delete(i.id)&&t(new Error("request timeout"))}),r),close:()=>{clearTimeout(s.timer),t(new Error("transport closed"))}};this.sents.set(i.id,s)}))}}const Pf={codecOptions:{opusDtx:!0,opusFec:!0},encodings:[{dtx:!0}]},Df={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:4,maxBitrate:15e4},{scaleResolutionDownBy:2,maxBitrate:5e5},{scaleResolutionDownBy:1,maxBitrate:1e6}]},If={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:2,maxBitrate:15e4},{scaleResolutionDownBy:1,maxBitrate:5e5}]},Ef={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scalabilityMode:"L3T2_KEY"}]},Of={encodings:[{}]},xf={encodings:[{scaleResolutionDownBy:2,dtx:!0,maxBitrate:5e5},{scaleResolutionDownBy:1,dtx:!0,maxBitrate:15e5}]},Mf={encodings:[{dtx:!0}]},jf=(e,t,r)=>{const{lowDataModeEnabled:i,simulcastScreenshareOn:s,vp9On:n}=r;return"audio"===e?Pf:t?n?Mf:s?xf:Of:n?Ef:i?If:Df},Lf=()=>{let e=ts.detectDevice()||(/applecoremedia|applewebkit|safari/i.test(navigator.userAgent)?"Safari12":void 0);return/iphone|ipad/i.test(navigator.userAgent)&&(e="Safari12"),e};var Af;const Nf=null!==(Af=ku.default)&&void 0!==Af?Af:ku;const Bf=400;var Ff;const $f="safari"===(null!==(Ff=ku.default)&&void 0!==Ff?Ff:ku).browserDetails.browser,Vf=e=>e.split(/[^\d]/g).map((e=>parseInt(e,10)));function Uf({devices:e,videoId:t,audioId:r,options:i,type:s="ideal"}){const n=e.filter((e=>"audioinput"===e.kind)),a=e.filter((e=>"videoinput"===e.kind)),o=!r||!n.some((e=>e.deviceId===r)),c=!t||!a.some((e=>e.deviceId===t)),d=function({disableAEC:e,disableAGC:t,hd:r,lax:i,lowDataMode:s,preferredDeviceIds:n,resolution:a,simulcast:o,widescreen:c}){var d,l;let p=480,u=240;r&&(p=i||$f?720:{min:360,ideal:720}),o&&(!1===r?(p=360,u=270):u=360);const h={audio:Object.assign({},n.audioId&&{deviceId:n.audioId}),video:Object.assign(Object.assign({},n.videoId?{deviceId:n.videoId}:{facingMode:"user"}),{height:s?u:p,frameRate:s&&!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]=Vf(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:{[s]:r},videoId:c?null:{[s]:t}}},i));return!1!==r&&n.length||delete d.audio,!1!==t&&a.length||delete d.video,d}const zf=new vf,qf=/mobi/i.test(navigator.userAgent);class Gf extends Error{constructor(...e){super(...e),this.name="nodevices"}}function Wf(e){return e.audio||e.video?navigator.mediaDevices.getUserMedia(e).catch((t=>{const r=`${t}, ${JSON.stringify(e,null,2)}`;throw zf.error(`getUserMedia ${r}`),t})):Promise.reject(new Gf("No provided devices"))}function Hf(e,t,r,i){var s,n,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===(n=r.find((r=>t.label===r.label&&r.kind===e)))||void 0===n?void 0:n.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===(s=r.find((t=>t.deviceId===i&&t.kind===e)))||void 0===s?void 0:s.deviceId),o)}function Kf(e,t){t&&"audio"!==t||e.getAudioTracks().forEach((e=>e.stop())),t&&"video"!==t||e.getVideoTracks().forEach((e=>e.stop()))}function Jf(e,{replaceStream:t,fallback:r=!0}={}){var i;return _f(this,void 0,void 0,(function*(){let s,n,a,o=null;const c=!1===e.audioId?"video":!1===e.videoId&&"audio",d=qf||"video"!==c,l=Uf(e),p=(e,t)=>(e.details=Object.assign({constraints:l,constraint:e.constraint||(null==t?void 0:t.constraint),newConstraints:n,fallback:r,stopTracks:d},e!==s&&{error:String(s)}),e);d&&t&&Kf(t,c);try{o=yield Wf(l)}catch(n){if(s=n,!r)throw p(n);if("OverconstrainedError"===n.name){a={deviceId:{videoId:null,audioId:null},width:{lax:!0},height:{lax:!0},"":{audioId:null,videoId:null,lax:!0}}[n.constraint||""]}else if("NotFoundError"===n.name){if(l.audio&&l.video){try{o=yield Wf(Uf(Object.assign(Object.assign({},e),{audioId:!1})))}catch(e){if("NotFoundError"!==e.name)throw p(e,n)}try{o||(o=yield Wf(Uf(Object.assign(Object.assign({},e),{videoId:!1}))))}catch(e){throw p(e,n)}}}else if("NotAllowedError"===n.name||"NotReadableError"===n.name||"AbortError"===n.name)if(t&&!d)Kf(t,c),a=e;else if("NotAllowedError"!==n.name){try{o=yield Wf(Uf(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{lax:!0})})))}catch(e){zf.warn("Tried getting stream again with laxer constraints, but failed: "+(""+e))}const t=(""+n).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 Wf(Uf(Object.assign(Object.assign({},e),{[r]:null})))}catch(e){zf.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 Wf(Uf(Object.assign(Object.assign({},e),{[r]:!1})))}catch(e){zf.warn(`Re-tried without ${r}, but failed: ${""+e}`)}if(o)break}}}}if(a){const t=c?{audio:{videoId:!1},video:{audioId:!1}}[c]:{};n=Uf(Object.assign(Object.assign(Object.assign(Object.assign({},e),a),{options:Object.assign(Object.assign({},e.options),{lax:a.lax})}),t));try{o=yield Wf(n)}catch(e){throw p(e,s)}}if(!o)throw p(s);let u;return t&&(d||Kf(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:s&&p(s),stream:o,replacedTracks:u}}))}function Qf({oldDevices:e,newDevices:t,currentAudioId:r,currentVideoId:i,currentSpeakerId:s}){const n=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})})),{}))),s={};return e.forEach((e=>{e.kind&&e.deviceId&&(s[e.kind]||(s[e.kind]={added:{},removed:{},changed:{}}),i[e.kind]&&i[e.kind][e.deviceId]||(s[e.kind].removed[e.deviceId]=e))})),t.forEach((e=>{e.kind&&e.deviceId&&(s[e.kind]||(s[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&&(s[e.kind].changed[e.deviceId]=e):s[e.kind].added[e.deviceId]=e)})),s}(e,t),a={},o={};return[["audioinput",r],["videoinput",i],["audiooutput",s]].forEach((([e,r])=>{const i=n[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}}ku.default;const Zf={id:Lu(),connectionNumber:0},Yf=()=>{};let Xf=Yf;const eg=function(e,t=console){const r=[];let i,s,n,a,o,c,d,l,p,u,h,m,f=0,g=!1,v=0;const _={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,g&&r&&r!==t&&i)return void i.close();r&&(g=!0)}else"customEvent"===e[0]&&"clientId"===e[2].type?n=e:"customEvent"===e[0]&&"organizationId"===e[2].type?s=e:"customEvent"===e[0]&&"displayName"===e[2].type?a=e:"customEvent"===e[0]&&"userRole"===e[2].type?o=e:"customEvent"===e[0]&&"deviceId"===e[2].type?l=e:"customEvent"===e[0]&&"roomProduct"===e[2].type?p=e:"customEvent"===e[0]&&"roomMode"===e[2].type?u=e:"customEvent"===e[0]&&"sfuServer"===e[2].type?h=e:"customEvent"===e[0]&&"featureFlags"===e[2].type&&(m=e);i.readyState===WebSocket.OPEN?(f=0,i.send(JSON.stringify(e))):"getstats"===e[0]?v<20&&(v++,r.push(e)):"customEvent"===e[0]&&"insightsStats"===e[2].type||r.push(e),i.readyState===WebSocket.CLOSED&&d&&setTimeout((()=>{i.readyState===WebSocket.CLOSED&&d&&_.connect()}),1e3*f)},close:()=>{d=!1,i&&i.close()},connect:()=>{d=!0,f+=1,i&&i.close(),_.connected=!0,i=new WebSocket(e+window.location.pathname,"1.0"),i.onerror=e=>{_.connected=!1,t.warn("[RTCSTATS] WebSocket error",e)},i.onclose=e=>{_.connected=!1,t.info(`[RTCSTATS] Closed ${e.code}`),Xf()},i.onopen=()=>{for(Zf.connectionNumber++,i.send(JSON.stringify(["clientInfo",null,Zf])),s&&i.send(JSON.stringify(s)),n&&i.send(JSON.stringify(n)),c&&i.send(JSON.stringify(c)),a&&i.send(JSON.stringify(a)),o&&i.send(JSON.stringify(o)),l&&i.send(JSON.stringify(l)),u&&i.send(JSON.stringify(u)),p&&i.send(JSON.stringify(p)),h&&i.send(JSON.stringify(h)),m&&i.send(JSON.stringify(m));r.length;)i.send(JSON.stringify(r.shift()));v=0}}};return _.connect(),_}("wss://rtcstats.srv.whereby.com"),tg=Iu(eg.trace,1e4,[""]);Xf=(null==tg?void 0:tg.resetDelta)||Yf;const rg={sendEvent:(e,t)=>{eg.trace("customEvent",null,{type:e,value:t})},sendAudioMuted:e=>{rg.sendEvent("audio_muted",{muted:e})},sendVideoMuted:e=>{rg.sendEvent("video_muted",{muted:e})},server:eg};var ig;const sg=null!==(ig=ku.default)&&void 0!==ig?ig:ku,ng=new vf,ag=sg.browserDetails.browser,og=sg.browserDetails.version;function cg(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 dg(e){return"firefox"!==ag?e:fu.splitLines(e.trim()).map((e=>e.startsWith("a=msid-semantic:")?"a=msid-semantic: WMS *":e)).join("\r\n")+"\r\n"}function lg(e){return function(e,t,r=!1,i=!1){var s,n;try{const a=Ma(e);if((null===(s=null==a?void 0:a.ext)||void 0===s?void 0:s.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===(n=o.find((e=>e.uri===t)))||void 0===n?void 0:n.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 s;(r&&"audio"===e.type||i&&"video"===e.type)&&((null===(s=e.ext)||void 0===s?void 0:s.find((e=>e.uri===t)))||(Array.isArray(e.ext)?e.ext.push({value:c,uri:t}):e.ext=[{value:c,uri:t}]))})),xa(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 pg(e,t,r=console){const i=e.getSenders().find((e=>e.track&&"video"===e.track.kind));if(!i)return Promise.resolve();const s=i.getParameters();return s.encodings&&0===s.encodings.length?Promise.resolve():(s.encodings||(s.encodings=[{}]),0===t?delete s.encodings[0].maxBitrate:s.encodings[0].maxBitrate=1e3*t,i.setParameters(s).catch((e=>{r.error("setParameters err: ",e)})))}var ug;const hg=null!==(ug=ku.default)&&void 0!==ug?ug:ku,mg=new vf;class fg{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 fu.splitSections(e).map((e=>{if("video"!==fu.getKind(e))return e;const t=fu.matchPrefix(e,"a=rtpmap:").map((e=>fu.parseRtpMap(e))).filter((e=>/h264/i.test(e.name))).map((e=>""+e.payloadType));if(!t.length)return e;const r=fu.matchPrefix(e,"m=video")[0],i=/(\s\d+)+$/i.exec(r),s=i?i[0]:"",n=[...s.split(" ").filter((e=>e&&!t.includes(e))),...t].join(" "),a=r.replace(s," "+n);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"!==ag&&("firefox"!==ag||og&&og>=63||60===og)?e:fu.splitLines(e.trim()).filter((e=>!e.startsWith("a=extmap:")||"urn:ietf:params:rtp-hdrext:sdes:mid"!==fu.parseExtmap(e).uri)).join("\r\n")+"\r\n"}(t),t=dg(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((()=>pg(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=dg(t);const r={type:e.type,sdp:t};return this._setRemoteDescription(r).then((()=>pg(this.pc,this.bandwidth)),(e=>{mg.warn("Could not set remote description from remote answer: ",e)}))}addIceCandidate(e){this.srdComplete?this.srdComplete.then((()=>{"closed"!==this.pc.signalingState&&("safari"===hg.browserDetails.browser&&e&&""===e.candidate||this.pc.addIceCandidate(e).catch((t=>{mg.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){mg.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();if(e||(e=(i.find((e=>e.track&&e.track.kind===t.kind))||{}).track),window.RTCRtpSender&&window.RTCRtpSender.prototype.replaceTrack){if(e){const r=()=>{for(let r=0;r<i.length;r++){const s=i[r].track;if((null==s?void 0:s.id)===t.id)return Promise.resolve(t);if((null==s?void 0:s.id)===e.id)return i[r].replaceTrack(t)}return null};let s=r();if(s)return s;let n=null,a=null;s=new Promise(((e,t)=>{n=e,a=t}));let o=0,c=setInterval((()=>_f(this,void 0,void 0,(function*(){const e=r();if(!e)return void(3<++o&&(clearInterval(c),c=null,a("No sender track to replace")));clearInterval(c),c=null;const t=yield e;n(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):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=cg(r.localDescription.sdp,e.sdp),r.setLocalDescription(e)))).then((()=>this._setRemoteDescription(r.remoteDescription))):this._setRemoteDescription(r.remoteDescription).then((()=>r.createAnswer())).then((e=>(e.sdp=cg(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 s=e.get(i.selectedCandidatePairId);if(!s)return;return t=e.get(s.localCandidateId).candidateType,void(r=e.get(s.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&&pg(this.pc,this.bandwidth)):this.pending.push((()=>this.changeBandwidth(e))))}setAudioOnly(e,t=[]){this.pc.getTransceivers().filter((e=>{var r,i,s,n,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===(n=null===(s=null==e?void 0:e.receiver)||void 0===s?void 0:s.track)||void 0===n?void 0:n.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 gg="fetch_mediaserver_config",vg="start_screenshare",_g="stop_screenshare",yg="audio_enabled",bg="client_left",wg="mediaserver_config",Sg="new_client",Cg="screenshare_started",Rg="screenshare_stopped",Tg="room_joined",kg="video_enabled",Pg="ice_candidate",Dg="ice_endofcandidates",Ig="ready_to_receive_offer",Eg="sdp_answer",Og="sdp_offer",xg="pending_client_left",Mg="media_quality_changed",jg="client_connection_status_changed",Lg="stream_added",Ag="rtc_manager_created",Ng="rtc_manager_destroyed",Bg="local_stream_track_added",Fg="local_stream_track_removed",$g="connecting",Vg="connection_failed",Ug="connection_successful",zg="connection_disconnected",qg="camera",Gg="screen_share";const Wg=57600,Hg=2.6041666666666665,Kg=921600,Jg=1.0850694444444444;const Qg="[a-fA-F\\d:]",Zg=e=>e&&e.includeBoundaries?`(?:(?<=\\s|^)(?=${Qg})|(?<=${Qg})(?=\\s|$))`:"",Yg="(?: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}",Xg="[a-fA-F\\d]{1,4}",ev=`\n(?:\n(?:${Xg}:){7}(?:${Xg}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${Xg}:){6}(?:${Yg}|:${Xg}|:)| // 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(?:${Xg}:){5}(?::${Yg}|(?::${Xg}){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(?:${Xg}:){4}(?:(?::${Xg}){0,1}:${Yg}|(?::${Xg}){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(?:${Xg}:){3}(?:(?::${Xg}){0,2}:${Yg}|(?::${Xg}){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(?:${Xg}:){2}(?:(?::${Xg}){0,3}:${Yg}|(?::${Xg}){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(?:${Xg}:){1}(?:(?::${Xg}){0,4}:${Yg}|(?::${Xg}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::${Xg}){0,5}:${Yg}|(?::${Xg}){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(),tv=new RegExp(`(?:^${Yg}$)|(?:^${ev}$)`),rv=new RegExp(`^${Yg}$`),iv=new RegExp(`^${ev}$`),sv=e=>e&&e.exact?tv:new RegExp(`(?:${Zg(e)}${Yg}${Zg(e)})|(?:${Zg(e)}${ev}${Zg(e)})`,"g");sv.v4=e=>e&&e.exact?rv:new RegExp(`${Zg(e)}${Yg}${Zg(e)}`,"g"),sv.v6=e=>e&&e.exact?iv:new RegExp(`${Zg(e)}${ev}${Zg(e)}`,"g");var nv,av,ov="connection_blocked_by_network",cv="ice_ipv6_seen",dv="ice_mdns_seen",lv="ice_no_public_ip_gathered",pv="ice_no_public_ip_gathered_3sec",uv="ice_restart",hv="microphone_not_working",mv="microphone_stopped_working",fv="camera_stopped_working",gv="new_pc",vv="sfu_connection_open",_v="sfu_connection_closed",yv="dominant_speaker";const bv=null!==(nv=ku.default)&&void 0!==nv?nv:ku,wv=new vf,Sv=class{constructor(e,t){this.id=""+e,this.type=t,this.isEnabled=!0,this.hasSupportForAutoSuperSize=!1,this.isAudioEnabled=!0,this.isVideoEnabled=!0,this.status=$g,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?qg:Gg}}.getCameraId(),Cv=bv.browserDetails.browser,Rv=bv.browserDetails.version;"firefox"===Cv&&bv.browserShim&&"shimGetDisplayMedia"in bv.browserShim&&(null===(av=bv.browserShim)||void 0===av||av.shimGetDisplayMedia(window,"screen"));let Tv=!1;"chrome"===Cv&&window.document.addEventListener("beforeunload",(()=>{Tv=!0}));class kv{constructor({selfId:e,room:t,emitter:r,serverSocket:i,webrtcProvider:s,features:n}){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=s,this._features=n||{},this._isAudioOnlyMode=!1,this.offerOptions={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._pendingActionsForConnectedPeerConnections=[],this._nodeJsClients=[],this._audioTrackOnEnded=()=>{rg.sendEvent("audio_ended",{unloading:Tv}),this._emit(mv,{})},this._videoTrackOnEnded=()=>{rg.sendEvent("video_ended",{unloading:Tv}),this._emit(fv,{})},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,r,i,s=[]){if(t!==this.localStreams[e]){if(this._addLocalStream(e,t),e===Sv){this._addStreamToPeerConnections(t);const e=t.getAudioTracks()[0],r=t.getVideoTracks()[0];if(e){e.effectTrack||this._monitorAudioTrack(e);const t=s.find((e=>"audio"===e.kind));t&&this._monitorAudioTrack(t)}if(r){r.effectTrack||this._monitorVideoTrack(r);const e=s.find((e=>"video"===e.kind));e&&this._monitorVideoTrack(e)}this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const i=e=>{const{enable:t,track:r}=e.detail;this._handleStopOrResumeVideo({enable:t,track:r})};return t.addEventListener("stopresumevideo",i),void(this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",i)})}this._screenshareVideoTrackIds.push(t.getVideoTracks()[0].id),this._shareScreen(e,t)}}replaceTrack(e,t){return"audio"!==t.kind||t.effectTrack||this._monitorAudioTrack(t),"video"!==t.kind||t.effectTrack||this._monitorVideoTrack(t),this._replaceTrackToPeerConnections(e,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"!==Cv)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(Sg,(e=>{e.client.isDialIn&&!this._nodeJsClients.includes(e.client.id)&&this._nodeJsClients.push(e.client.id)})),this._serverSocket.on(wg,(e=>{e.error?wv.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(Ig,(e=>{this._connect(e.clientId)})),this._serverSocket.on(Pg,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(e.message):wv.warn("No RTCPeerConnection on ICE_CANDIDATE",e)})),this._serverSocket.on(Dg,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(null):wv.warn("No RTCPeerConnection on ICE_END_OF_CANDIDATES",e)})),this._serverSocket.on(Og,(e=>{const t=this._getSession(e.clientId);if(!t)return void wv.warn("No RTCPeerConnection on SDP_OFFER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleOffer(r).then((t=>{this._emitServerEvent(Eg,{receiverId:e.clientId,message:this._transformOutgoingSdp(t)})}))})),this._serverSocket.on(Eg,(e=>{const t=this._getSession(e.clientId);if(!t)return void wv.warn("No RTCPeerConnection on SDP_ANSWER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleAnswer(r)})),this._serverSocket.on(Tg,(({room:{sfuServer:e}})=>{if(e||!this._wasScreenSharing)return;const t=Object.keys(this.localStreams).find((e=>e!==Sv));if(!t)return;const r=this.localStreams[t];if(!r)return void wv.warn("screenshare stream %s not found",t);const i=r.getAudioTracks().length>0;this._emitServerEvent(vg,{streamId:t,hasAudioTrack:i})}))]}sendAudioMutedStats(e){rg.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){rg.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){rg.sendEvent(e,t)}rtcStatsDisconnect(){rg.server.close()}rtcStatsReconnect(){rg.server.connected||rg.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===zg&&t===$g||(e.connectionStatus=t,setTimeout((()=>{this._emit(jg,{streamIds:e.streamIds,clientId:r,status:t,previous:i})}),0)))}_setJitterBufferTarget(e){try{e.getReceivers().forEach((e=>{e.jitterBufferTarget=Bf,e.playoutDelayHint=.4}))}catch(e){wv.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"===Cv&&Rv&&Rv>=14&&this._features.deprioritizeH264OnSafari;this.peerConnections[e]=r=new fg({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:this._features.unlimitedBandwidthWhenUsingRelayP2POn?-1:1280,deprioritizeH264Encoding:i}),this.totalSessionsCreated++}return r}_getLocalCameraStream(){return this.localStreams[Sv]}_getNonLocalCameraStreamIds(){return Object.keys(this.localStreams).filter((e=>e!==Sv))}_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:s,enforceTurnProtocol:n}){if(!i)throw new Error("peerConnectionId is missing");if(!e)throw new Error("clientId is missing");const a=this._getOrCreateSession(i,t),o={optional:[]};"chrome"===Cv&&o.optional.push({googCpuOveruseDetection:!0}),o.optional.push({rtcStatsRoomSessionId:this._roomSessionId}),o.optional.push({rtcStatsClientId:this._selfId}),o.optional.push({rtcStatsPeerId:i}),o.optional.push({rtcStatsConferenceId:this._roomName});const c={iceServers:this._iceServers};if(this._features.turnServerOverrideHost){const e=this._features.turnServerOverrideHost,t=e.indexOf(":")>0?"":":443",r=":"+e+t;c.iceServers=c.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(n||this._features.useOnlyTURN){c.iceTransportPolicy="relay";const e={onlyudp:/^turn:.*transport=udp$/,onlytcp:/^turn:.*transport=tcp$/,onlytls:/^turns:.*transport=tcp$/}[n||this._features.useOnlyTURN];e&&(c.iceServers=c.iceServers.filter((t=>t.url&&t.url.match(e))))}"chrome"===Cv&&(c.sdpSemantics="unified-plan");const d=a.setAndGetPeerConnection({constraints:o,peerConnectionConfig:c,shouldAddLocalVideo:s,clientId:e});setTimeout((()=>this._emit(gv)),0),d.ontrack=t=>{const r=t.streams[0];"default"===r.id&&0===r.getAudioTracks().length||-1===a.streamIds.indexOf(r.id)&&(a.streamIds.push(r.id),this._emit(Lg,{clientId:e,stream:r}),a.connectionStatus===Ug&&setTimeout((()=>{this._emit(jg,{streamIds:a.streamIds,clientId:e,status:a.connectionStatus,previous:$g})}),0))},d.oniceconnectionstatechange=()=>{let t;const r=a.connectionStatus;switch(d.iceConnectionState){case"checking":t=$g;break;case"connected":case"completed":t=Ug,a.wasEverConnected||(this._pendingActionsForConnectedPeerConnections.forEach((e=>{"function"==typeof e&&e()})),this._pendingActionsForConnectedPeerConnections=[]),!a.wasEverConnected&&(d.iceConnectionState.match(/connected|completed/)||"chrome"===Cv&&d.localDescription&&"answer"===d.localDescription.type)&&(a.wasEverConnected=!0,"false"!==this._features.bandwidth&&this.maybeRestrictRelayBandwidth(a)),this._isAudioOnlyMode&&a.setAudioOnly(!0,this._screenshareVideoTrackIds),a.registerConnected();break;case"disconnected":t=zg,setTimeout((()=>{"disconnected"===d.iceConnectionState&&this._maybeRestartIce(e,a)}),2e3);break;case"failed":t=Vg,r!==t&&this._maybeRestartIce(e,a),null!==a.relayCandidateSeen||a.wasEverConnected||this._emit(ov);break;default:return}this._setConnectionStatus(a,t,e)},d.onconnectionstate=()=>{switch(d.connectionState){case"connected":setTimeout((()=>{(function(e){if("chrome"!==Nf.browserDetails.browser||Nf.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}))})(a.pc).then((t=>{!1!==t&&this._emit(hv,{failureDirection:t,clientId:e})}))}),3e3),a.registerConnected();break;case"failed":const t=Vg;null!==a.relayCandidateSeen||a.wasEverConnected||this._emit(ov),this._setConnectionStatus(a,t,e)}};const l=this.localStreams[Sv];return s&&l&&a.addStream(l),s&&Object.keys(this.localStreams).forEach((e=>{if(e===Sv)return;const t=this.localStreams[e];r?a.addStream(t):a.afterConnected.then((()=>{this._emitServerEvent(vg,{receiverId:a.clientId,streamId:t.id,hasAudioTrack:!!t.getAudioTracks().length}),this._withForcedRenegotiation(a,(()=>a.addStream(t)))}))})),a}_cleanup(e){const t=this._getSession(e);t?(t.close(),delete this.peerConnections[e]):wv.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()){wv.info("Session doesn't have a connected PeerConnection, adding pending action!");const s=this._pendingActionsForConnectedPeerConnections;if(!s)return void wv.warn("No pending action is created to repalce track, because the pending actions array is null");const n=new Promise(((r,n)=>{s.push((()=>{const s=i.replaceTrack(e,t);if(!s)return wv.error("replaceTrack returned false!"),void n("ReplaceTrack returned false");s.then((e=>r(e))).catch((e=>n(e)))}))}));return void r.push(n)}const s=i.replaceTrack(e,t);s?r.push(s):wv.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(gg)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}_monitorAudioTrack(e){var t,r;(null===(t=this._audioTrackBeingMonitored)||void 0===t?void 0:t.id)!==e.id&&(null===(r=this._audioTrackBeingMonitored)||void 0===r||r.removeEventListener("ended",this._audioTrackOnEnded),e.addEventListener("ended",this._audioTrackOnEnded),this._audioTrackBeingMonitored=e)}_monitorVideoTrack(e){var t,r;(null===(t=this._videoTrackBeingMonitored)||void 0===t?void 0:t.id)!==e.id&&(null===(r=this._videoTrackBeingMonitored)||void 0===r||r.removeEventListener("ended",this._videoTrackOnEnded),e.addEventListener("ended",this._videoTrackOnEnded),this._videoTrackBeingMonitored=e)}_connect(e){this.rtcStatsReconnect();let t,r=this._getSession(e),i=r&&r.bandwidth||0;return r?(wv.warn("Replacing peer session",e),this._cleanup(e)):i=this._changeBandwidthForAllClients(!0),this._nodeJsClients.includes(e)&&(t=this._features.isNodeSdk?"onlyudp":"onlytls"),r=this._createP2pSession({clientId:e,initialBandwidth:i,shouldAddLocalVideo:!0,isOfferer:!0,enforceTurnProtocol:t}),this._negotiatePeerConnection(e,r),Promise.resolve(r)}_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(uv),this._negotiatePeerConnection(e,t,Object.assign({},this.offerOptions,{iceRestart:!0})))}_setCodecPreferences(e,t,r,i){try{const s=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)}));s.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 n=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)}));n.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){wv.error("Error during setting setCodecPreferences:",e)}}_negotiatePeerConnection(e,t,r){if(!t)return void wv.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:s,av1On:n,redOn:a,rtpAbsCaptureTimeOn:o}=this._features;(s||n||a)&&this._setCodecPreferences(i,s,n,a),i.createOffer(r||this.offerOptions).then((r=>{o&&(r.sdp=lg(r.sdp)),(s||a)&&"firefox"===Cv&&(r.sdp=function(e,t,r){var i,s;try{const n=Ma(e);if(Array.isArray(null==n?void 0:n.media)){const e=n.media.find((e=>"audio"===e.type));if(Array.isArray(null==e?void 0:e.rtp)){const t=e.rtp;for(let s=0;s<t.length;s++)if(r&&"red"===t[s].codec){const r=null===(i=e.payloads)||void 0===i?void 0:i.split(" "),n=null==r?void 0:r.indexOf(""+t[s].payload);n&&-1!==n&&n>=0&&(null==r||r.unshift(r.splice(n,1)[0]),e.payloads=null==r?void 0:r.join(" "))}}const a=n.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===(s=a.payloads)||void 0===s?void 0:s.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 xa(n)}catch(e){ng.error("setCodecPreferenceSDP error:",e)}}(r.sdp,s,a)),this._emitServerEvent(Og,{receiverId:e,message:this._transformOutgoingSdp(r)}),"chrome"===Cv&&i.getSenders().filter((e=>e.track&&"video"===e.track.kind)).length>=2?t.pendingOffer=r:i.setLocalDescription(r).catch((t=>{wv.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=>{wv.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:s}=t.getSettings();if(e&&i&&s){const t=Math.round(function(e,t,r){let i=e*t;i<Wg&&(i=Wg),i>Kg&&(i=Kg);let s=Hg;i>Kg?s=Jg:i>Wg&&(s+=-17582143775720163e-22*(i-Wg));let n=e*t*s;return r<=15?n*=.7:r<=24&&(n*=.9),n}(e,i,s)/1e3);r=Math.min(t,r||t)}}}}return this._features.higherP2PBitrates&&(r*=1.5),this._forEachPeerConnection((e=>{e.changeBandwidth(r)})),r}_createP2pSession({clientId:e,initialBandwidth:t,shouldAddLocalVideo:r=!1,isOfferer:i=!1,enforceTurnProtocol:s}){const n=this._createSession({peerConnectionId:e,clientId:e,initialBandwidth:t,shouldAddLocalVideo:r,isOfferer:i,enforceTurnProtocol:s}),a=n.pc;this._features.increaseIncomingMediaBufferOn&&this._setJitterBufferTarget(a);const o=this.localStreams[Sv];return r&&o&&!o.getVideoTracks().length&&this._stoppedVideoTrack&&a.addTrack(this._stoppedVideoTrack,o),a.onicegatheringstatechange=e=>{switch(e.target.iceGatheringState){case"gathering":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=setTimeout((()=>{n.publicHostCandidateSeen||n.relayCandidateSeen||n.serverReflexiveCandidateSeen||this._emit(pv)}),3e3);break;case"complete":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=void 0}},a.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(sv.v4({exact:!0}).test(e)){$h(e).isPublicIp&&(n.publicHostCandidateSeen=!0)}else if(sv.v6({exact:!0}).test(e.replace(/^\[(.*)\]/,"$1"))){const t=new Au.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&&Wh(t,4)&&(n.mdnsHostCandidateSeen=!0)}}catch(e){wv.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(Pg,{receiverId:e,message:t.candidate})}else this._emitServerEvent(Dg,{receiverId:e}),n.publicHostCandidateSeen||n.relayCandidateSeen||n.serverReflexiveCandidateSeen||this._emit(lv),n.ipv6HostCandidateSeen&&this._emit(cv,{teredoSeen:n.ipv6HostCandidateTeredoSeen,sixtofourSeen:n.ipv6HostCandidate6to4Seen}),n.mdnsHostCandidateSeen&&this._emit(dv)},a.onnegotiationneeded=()=>{"new"!==a.iceConnectionState&&n.connectionStatus&&this._negotiatePeerConnection(e,n)},n}acceptNewStream({streamId:e,clientId:t,shouldAddLocalVideo:r,enforceTurnProtocol:i}){let s=this._getSession(t);if(s&&e!==t)return s;let n=s&&s.bandwidth||0;return s?(wv.warn("Replacing peer session",t),this._cleanup(t)):n=this._changeBandwidthForAllClients(!0),s=this._createP2pSession({clientId:t,initialBandwidth:n,shouldAddLocalVideo:!!r,enforceTurnProtocol:i,isOfferer:!1}),this._emitServerEvent(Ig,{receiverId:t}),s}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){var r;if(["chrome","safari"].includes(Cv))if(!1===t){const i="ended"===(null===(r=e.getVideoTracks().find((e=>!e.enabled)))||void 0===r?void 0:r.readyState)?0:5e3;setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emit(Fg,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),i)}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._monitorVideoTrack(i),this._emit(Bg,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}_shareScreen(e,t){this._emitServerEvent(vg,{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(_g,{streamId:e,requestedByClientId:r})}hasClient(e){return Object.keys(this.peerConnections).includes(e)}}var Pv=Object.freeze({__proto__:null,KalmanFilter:class{constructor({R:e=.01,Q:t=2,A:r=1.1,B:i=1,C:s=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=s,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(),s=i*this.C*(1/(this.C*i*this.C+this.Q));this.x=r+s*(e-this.C*r),this.cov=i-s*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 s=i.reduce(((e,t)=>e+t),0)/i.length;if(e=e<0?s:.95*e+.05*s,++r<2)return t=s,0;const n=(s-e)*(t-e);return t=s,n}},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 Dv={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"},Iv=new vf;const Ev=new vf,Ov=Object.freeze({ok:"ok",warning:"warning",critical:"critical"});class xv extends Gi{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:Ov.ok,trend:[]},video:{currentQuality:Ov.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,s=this._evaluateScore(i);this._updateTrend(s,this._clients[e][r])&&this.emit(Mg,{clientId:e,kind:r,quality:s})}_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]={}):Ev.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]={}):Ev.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)))}:Ev.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)}:Ev.warn("Unexpected consumer score format")}_evaluateScore(e){return e<=9&&e>7?Ov.warning:e<=7&&e>0?Ov.critical:Ov.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 Ev.error(e),0}}}var Mv;const jv=null!==(Mv=ku.default)&&void 0!==Mv?Mv:ku,Lv=new vf,Av=jv.browserDetails.browser;let Nv=!1;const Bv=Lu(),Fv=Lu();"chrome"===Av&&window.document.addEventListener("beforeunload",(()=>Nv=!0));class $v{constructor({selfId:e,room:t,emitter:r,serverSocket:i,webrtcProvider:s,features:n,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=s,this._features=n||{},this._eventClaim=a,this._vegaConnection=null,this._micAnalyser=null,this._micAnalyserDebugger=null,this._mediasoupDevice=o?new ts.Device({handlerFactory:o}):new ts.Device({handlerName:Lf()}),this._routerRtpCapabilities=null,this._sendTransport=null,this._receiveTransport=null,this._clientStates=new Map,this._streamIdToVideoConsumerId=new Map,this._streamIdToVideoResolution=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=()=>{rg.sendEvent("audio_ended",{unloading:Nv}),this._emitToPWA(mv,{})},this._videoTrackOnEnded=()=>{rg.sendEvent("video_ended",{unloading:Nv}),this._emitToPWA(fv,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:l,iceServers:d.iceServers||[],mediaserverConfigTtlSeconds:p}),this._socketListenerDeregisterFunctions=[],this._reconnect=!0,this._reconnectTimeOut=null,this._qualityMonitor=new xv,this._qualityMonitor.on(Mg,(e=>{this._emitToPWA(Mg,e)}))}_updateAndScheduleMediaServersRefresh({iceServers:e,sfuServer:t,mediaserverConfigTtlSeconds:r}){var i,s;this._iceServers=e,this._sfuServer=t,this._mediaserverConfigTtlSeconds=r,null===(i=this._sendTransport)||void 0===i||i.updateIceServers({iceServers:this._iceServers}),null===(s=this._receiveTransport)||void 0===s||s.updateIceServers({iceServers:this._iceServers}),this._clearMediaServersRefresh(),r&&(this._fetchMediaServersTimer=setTimeout((()=>this._emitToSignal(gg)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}setupSocketListeners(){this._socketListenerDeregisterFunctions.push((()=>this._clearMediaServersRefresh()),this._serverSocket.on(wg,(e=>{e.error?Lv.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(Tg,(()=>{this._screenVideoTrack&&this._emitScreenshareStarted(),this._features.sfuReconnectV2On&&!this._vegaConnection.isConnected()&&this._reconnect&&this._connect()}))),this._connect()}_emitScreenshareStarted(){this._emitToSignal(vg,{streamId:Fv,hasAudioTrack:Boolean(this._screenAudioTrack)})}_connect(){if(this._features.sfuReconnectV2On){if(!this._serverSocket.isConnected()){const e=this._serverSocket.getReconnectThreshold();if(!e)return;if(Date.now()>(this._serverSocket.disconnectTimestamp||0)+e)return}this._reconnectTimeOut&&clearTimeout(this._reconnectTimeOut)}const e=this._features.sfuServerOverrideHost||[this._sfuServer.url],t=new URLSearchParams(Object.assign({clientId:this._selfId,organizationId:this._room.organizationId,roomName:this._room.name,eventClaim:this._room.isClaimed?this._eventClaim:null,lowBw:"true"},Object.keys(this._features||{}).filter((e=>this._features[e]&&/^sfu/.test(e))).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t]:this._features[t]})),{}))),r=`wss://${e}?${t.toString()}`;this._vegaConnection=new kf(r),this._vegaConnection.on("open",(()=>this._join())),this._vegaConnection.on("close",(()=>this._onClose())),this._vegaConnection.on("message",(e=>this._onMessage(e)))}_onClose(){var e,t;Lv.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._streamIdToVideoResolution.clear(),this._reconnect&&(this._reconnectTimeOut=setTimeout((()=>this._connect()),1e3)),this._qualityMonitor.close(),this._emitToPWA(_v)}_join(){return _f(this,void 0,void 0,(function*(){Lv.info("join()"),this._emitToPWA(vv);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){Lv.error("_join() [error:%o]",e)}}))}_createTransport(e){return _f(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),s=t=>_f(this,void 0,void 0,(function*(){if(Lv.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",s),i.observer.once("close",(()=>{i.removeListener(s)})),e?(i.on("produce",(({kind:e,rtpParameters:t,appData:r},s,n)=>_f(this,void 0,void 0,(function*(){var a;try{const{paused:n}=r,{id:o}=yield null===(a=this._vegaConnection)||void 0===a?void 0:a.request("produce",{transportId:i.id,kind:e,rtpParameters:t,paused:n,appData:r});s({id:o})}catch(e){n(e)}})))),i.on("producedata",(({appData:e,sctpStreamParameters:t},r,s)=>_f(this,void 0,void 0,(function*(){var n;try{const{id:s}=yield null===(n=this._vegaConnection)||void 0===n?void 0:n.request("produceData",{transportId:i.id,sctpStreamParameters:t,appData:e});r({id:s})}catch(e){s(e)}})))),this._sendTransport=i):this._receiveTransport=i}))}_restartIce(e,t=0){return _f(this,void 0,void 0,(function*(){if(!e||!("closed"in e)||!("connectionState"in e))return void Lv.info("_restartIce: No transport or property closed or connectionState!");if(e.closed)return void Lv.info("_restartIce: Transport is closed!");if("disconnected"!==e.connectionState&&"failed"!==e.connectionState)return void Lv.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 Lv.info("_restartIce: Reached restart ICE maximum retry count!");if(!this._vegaConnection)return void Lv.info("_restartIce: Connection is undefined");const{iceParameters:s}=yield this._vegaConnection.request("restartIce",{transportId:e.id});Lv.info("_restartIce: ICE restart iceParameters received from SFU: ",s);const n=yield e.restartIce({iceParameters:s}).then((()=>null)).catch((e=>e));if(n)switch(Lv.error(`_restartIce: ICE restart failed: ${n}`),n.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 _f(this,void 0,void 0,(function*(){Lv.info("_internalSendMic()"),this._micProducerPromise=(()=>_f(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},jf("audio",!1,this._features)),{appData:{streamId:Bv,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;Lv.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){Lv.error("micProducer failed:%o",e)}finally{this._micProducerPromise=null,this._micTrack||(this._stopProducer(this._micProducer),this._micProducer=null)}})))()}))}_internalSetupMicScore(){return _f(this,void 0,void 0,(function*(){Lv.info("_internalSetupMicScore()"),this._micScoreProducerPromise=(()=>_f(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;Lv.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){Lv.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 _f(this,void 0,void 0,(function*(){Lv.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;Lv.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 _f(this,void 0,void 0,(function*(){return Lv.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){Lv.error("_sendMicScore failed [error:%o]",e)}}else!this._micScoreProducerPromise&&this._micProducer&&this._colocation&&0!==e&&this._internalSetupMicScore()}_internalSendWebcam(){var e;return _f(this,void 0,void 0,(function*(){Lv.info("_internalSendWebcam()"),!this._sendTransport||this._webcamProducer||this._webcamProducerPromise||"live"!==(null===(e=this._webcamTrack)||void 0===e?void 0:e.readyState)||(this._webcamProducerPromise=(()=>_f(this,void 0,void 0,(function*(){var e;try{const t=this._webcamPaused,r=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._webcamTrack,disableTrackOnPause:!1,stopTracks:!1},jf("video",!1,this._features)),{appData:{streamId:Bv,sourceClientId:this._selfId,screenShare:!1,source:"webcam",paused:t}}));t?r.pause():r.resume(),this._webcamProducer=r,this._qualityMonitor.addProducer(this._selfId,r.id),r.observer.once("close",(()=>{var e;Lv.info('webcamProducer "close" event'),r.appData.localClosed&&(null===(e=this._vegaConnection)||void 0===e||e.message("closeProducers",{producerIds:[r.id]})),this._webcamProducer=null,this._webcamProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,r.id)})),this._webcamTrack&&this._webcamTrack!==(null===(e=this._webcamProducer)||void 0===e?void 0:e.track)&&(this._webcamProducerPromise=null,this._replaceWebcamTrack()),this._webcamPaused!==this._webcamProducer.paused&&this._pauseResumeWebcam()}catch(e){Lv.error("webcamProducer failed:%o",e)}finally{this._webcamProducerPromise=null,this._webcamTrack||(this._stopProducer(this._webcamProducer),this._webcamProducer=null)}})))())}))}_replaceWebcamTrack(){return _f(this,void 0,void 0,(function*(){Lv.info("_replaceWebcamTrack()"),this._sendTransport&&this._webcamTrack&&!this._webcamProducerPromise&&(this._webcamProducer||!this._webcamTrack.enabled?this._webcamProducer.track!==this._webcamTrack&&(yield this._webcamProducer.replaceTrack({track:this._webcamTrack}),yield this._replaceWebcamTrack()):yield this._internalSendWebcam())}))}_pauseResumeWebcam(){var e,t;Lv.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 _f(this,void 0,void 0,(function*(){return Lv.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 _f(this,void 0,void 0,(function*(){Lv.info("_internalSendScreenVideo()"),this._screenVideoProducerPromise=(()=>_f(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},jf("video",!0,this._features)),{appData:{streamId:Fv,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;Lv.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){Lv.error("screenVideoProducer failed:%o",e)}finally{this._screenVideoProducerPromise=null,this._screenVideoTrack||(yield this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null)}})))()}))}_replaceScreenVideoTrack(){return _f(this,void 0,void 0,(function*(){Lv.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 _f(this,void 0,void 0,(function*(){return Lv.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 _f(this,void 0,void 0,(function*(){Lv.info("_internalSendScreenAudio()"),this._screenAudioProducerPromise=(()=>_f(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},jf("audio",!0,this._features)),{appData:{streamId:Fv,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;Lv.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){Lv.error("screenAudioProducer failed:%o",e)}finally{this._screenAudioProducerPromise=null,this._screenAudioTrack||(yield this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null)}})))()}))}_replaceScreenAudioTrack(){return _f(this,void 0,void 0,(function*(){Lv.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 _f(this,void 0,void 0,(function*(){return Lv.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){Lv.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(),rg.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(Lv.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){"audio"===t.kind&&(t.effectTrack||this._monitorAudioTrack(t),this._micTrack=t,this._replaceMicTrack()),"video"===t.kind&&(t.effectTrack||this._monitorVideoTrack(t),this._webcamTrack=t,this._replaceWebcamTrack())}removeStream(e,t,r){Lv.info("removeStream() [streamId:%s, requestedByClientId:%s]",e,r),this._emitToSignal(_g,{streamId:Fv,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,s=[]){if("0"===e){this._micPaused=r,this._webcamPaused=i;const e=t.getVideoTracks()[0],n=t.getAudioTracks()[0];if(e){this._sendWebcam(e),e.effectTrack||this._monitorVideoTrack(e);const t=s.find((e=>"video"===e.kind));t&&this._monitorVideoTrack(t)}if(n){this._sendMic(n),this._syncMicAnalyser(),n.effectTrack||this._monitorAudioTrack(n);const e=s.find((e=>"audio"===e.kind));e&&this._monitorAudioTrack(e)}this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const a=e=>{const{enable:t,track:r}=e.detail;this._webcamPaused=!t,this._pauseResumeWebcam(),this._handleStopOrResumeVideo({enable:t,track:r})};t.addEventListener("stopresumevideo",a),this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",a)}}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 s=null,n=null,a=null,o=!1;const c=e=>_f(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){Iv.warn("unable to fetch new track for colocation speaker analysis, using current",e)}if(a=e,n&&(n.disconnect(),n=null),e){const t=new MediaStream([e]);n=i.createMediaStreamSource(t),n.connect(s)}}));let d;const l=e=>{if(clearInterval(d),t=Object.assign(Object.assign({},Dv),e),!s||s.fftSize!==2*t.bins){let e=null;s&&(e=a,c(null)),s=i.createAnalyser(),s.fftSize=2*t.bins,e&&c(e)}const n=new Uint8Array(s.frequencyBinCount),o=[];s.minDecibels=t.minDecibels,s.maxDecibels=t.maxDecibels,s.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(Pv,c,a);d=setInterval((()=>{s.getByteFrequencyData(n);let e=0;if(u){const r=t.bands.map((e=>{const t=e.map((e=>m(n[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(n,g,Pv),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,s=h(e,i,t,o);r({bins:n,score:e,max:t,avg:i,out:s})}}),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){Lv.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){var r;if(Lv.info("stopOrResumeVideo() [enable:%s]",t),this._webcamPaused=!t,this._pauseResumeWebcam(),["chrome","safari"].includes(Av))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._monitorVideoTrack(i),this._emitToPWA(Bg,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}else{clearTimeout(this._stopCameraTimeout);const i="ended"===(null===(r=e.getVideoTracks().find((e=>!e.enabled)))||void 0===r?void 0:r.readyState)?0:5e3;this._stopCameraTimeout=setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emitToPWA(Fg,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),i)}}supportsScreenShareAudio(){return!0}acceptNewStream({streamId:e,clientId:t}){Lv.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 s,n;Lv.info("updateStreamResolution()",{streamId:e,width:r,height:i});const a=this._streamIdToVideoConsumerId.get(e),o=this._consumers.get(a);if(!o)return void this._streamIdToVideoResolution.set(e,{width:r,height:i});const c=function(e){let t=0;return e.forEach((e=>{var r,i;e._closed||e._paused||"webcam"!==(null===(r=e._appData)||void 0===r?void 0:r.source)&&"screenvideo"!==(null===(i=e._appData)||void 0===i?void 0:i.source)||t++})),t}(this._consumers),d=function(e){var t,r,i;return/T3/.test((null===(i=null===(r=null===(t=e._rtpParameters)||void 0===t?void 0:t.encodings)||void 0===r?void 0:r[0])||void 0===i?void 0:i.scalabilityMode)||"")?3:2}(o),{spatialLayer:l,temporalLayer:p}=function({width:e,height:t},{numberOfActiveVideos:r,numberOfTemporalLayers:i,uncappedSingleRemoteVideoOn:s}){const n=Math.max(e,t);let a=n>=480?n>=960?2:1:0,o=i-1;return n<100&&(o=Math.max(i-2,0)),r>8&&0===a&&(o=Math.max(i-2,0)),r<4&&n>300&&0===a&&(a=1),s&&1===r&&(a=2,o=i-1),{spatialLayer:a,temporalLayer:o}}({width:r,height:i},{numberOfActiveVideos:c,numberOfTemporalLayers:d,uncappedSingleRemoteVideoOn:null===(s=this._features)||void 0===s?void 0:s.uncappedSingleRemoteVideoOn});o.appData.spatialLayer===l&&o.appData.temporalLayer===p||(o.appData.spatialLayer=l,o.appData.temporalLayer=p,null===(n=this._vegaConnection)||void 0===n||n.message("setConsumersPreferredLayers",{consumerIds:[a],spatialLayer:l,temporalLayer:p}))}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){rg.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){rg.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){rg.sendEvent(e,t)}rtcStatsDisconnect(){rg.server.close()}rtcStatsReconnect(){rg.server.connected||rg.server.connect()}_monitorAudioTrack(e){var t,r;(null===(t=this._audioTrackBeingMonitored)||void 0===t?void 0:t.id)!==e.id&&(null===(r=this._audioTrackBeingMonitored)||void 0===r||r.removeEventListener("ended",this._audioTrackOnEnded),e.addEventListener("ended",this._audioTrackOnEnded),this._audioTrackBeingMonitored=e)}_monitorVideoTrack(e){var t,r;(null===(t=this._videoTrackBeingMonitored)||void 0===t?void 0:t.id)!==e.id&&(null===(r=this._videoTrackBeingMonitored)||void 0===r||r.removeEventListener("ended",this._videoTrackOnEnded),e.addEventListener("ended",this._videoTrackOnEnded),this._videoTrackBeingMonitored=e)}_onMessage(e){return _f(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 Lv.info(`unknown message method "${t}"`)}})).catch((e=>{Lv.error('"message" failed [error:%o]',e)}))}))}_onConsumerReady(e){return _f(this,void 0,void 0,(function*(){Lv.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=Bf,t.rtpReceiver.playoutDelayHint=.4}catch(e){Lv.error("Error during setting jitter buffer target:",e)}const{sourceClientId:r,screenShare:i,streamId:s}=t.appData,n=this._getOrCreateClientState(r);i?(n.hasEmittedScreenStream=!1,n.screenShareStreamId=s):(n.hasEmittedWebcamStream=!1,n.camStreamId=s);let a=i?n.screenStream:n.webcamStream;a&&a.inboundId===s||(a=new MediaStream,a.inboundId=s,i?n.screenStream=a:n.webcamStream=a),"video"===t.kind&&this._streamIdToVideoConsumerId.set(a.id,t.id),a.addTrack(t.track),this._syncIncomingStreamsWithPWA(r);const o=this._streamIdToVideoResolution.get(a.id);o&&(this.updateStreamResolution(a.id,null,o),this._streamIdToVideoResolution.delete(a.id))}))}_onConsumerClosed({consumerId:e,reason:t}){var r;return _f(this,void 0,void 0,(function*(){Lv.info("_onConsumerClosed()",{consumerId:e,reason:t}),null===(r=this._consumers.get(e))||void 0===r||r.close()}))}_onConsumerPaused({consumerId:e}){Lv.info("_onConsumerPaused()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!0,t.pause())}_onConsumerResumed({consumerId:e}){Lv.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}){Lv.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}){Lv.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 _f(this,void 0,void 0,(function*(){Lv.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 _f(this,void 0,void 0,(function*(){Lv.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(yv,{clientId:r})}_consumerClosedCleanup(e){const{sourceClientId:t,screenShare:r}=e.appData,i=this._getOrCreateClientState(t),s=r?i.screenStream:i.webcamStream;s&&(s.removeTrack(e.track),0===s.getTracks().length&&(this._streamIdToVideoConsumerId.delete(s.id),this._streamIdToVideoResolution.delete(s.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:s,screenStream:n,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})),s&&!a&&c&&(this._emitToPWA(Lg,{clientId:e,stream:s,streamId:p,streamType:"webcam"}),i.hasEmittedWebcamStream=!0),n&&!o&&d&&(this._emitToPWA(Lg,{clientId:e,stream:n,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 Vv{constructor({emitter:e,serverSocket:t,webrtcProvider:r,features:i}){this.emitter=e,this.currentManager=null,t.on(Tg,(({room:s,selfId:n,error:a,eventClaim:o})=>{if(a)return;const c={selfId:n,room:s,emitter:e,serverSocket:t,webrtcProvider:r,features:i,eventClaim:o,deviceHandlerFactory:null==i?void 0:i.deviceHandlerFactory},d=!!s.sfuServer;if(this.currentManager){if(this.currentManager.isInitializedWith({selfId:n,roomName:s.name,isSfu:d}))return void(this.currentManager.setEventClaim&&o&&this.currentManager.setEventClaim(o));this.currentManager.disconnectAll(),e.emit(Ng)}let l=null;l=d?new $v(c):new kv(c),l.setupSocketListeners(),e.emit(Ag,{rtcManager:l}),this.currentManager=l,t.setRtcManager(l)}))}stopRtcManager(){this.currentManager&&(this.currentManager.disconnectAll(),this.emitter.emit(Ng))}}var Uv;!function(e){e.rtc_manager_created="rtc_manager_created",e.stream_added="stream_added"}(Uv||(Uv={}));const zv=new vf;class qv extends Gi{constructor(e){super(),this.reconnectThresholdInMs=0,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(Tg,(e=>this._onRoomJoined(e))),e.on(Sg,(e=>this._onNewClient(e))),e.on(bg,(e=>this._onClientLeft(e))),e.on(xg,(e=>this._onPendingClientLeft(e))),e.on(yg,(e=>this._onAudioEnabled(e))),e.on(kg,(e=>this._onVideoEnabled(e))),e.on(Cg,(e=>this._onScreenshareChanged(e,!0))),e.on(Rg,(e=>this._onScreenshareChanged(e,!1)))}_onRoomJoined(e){var t,r;return _f(this,void 0,void 0,(function*(){if(this.reconnectThresholdInMs=.8*(e.disconnectTimeout||0),!(null===(t=e.room)||void 0===t?void 0:t.clients))return void this.emit(Tg,e);if(!e.selfId)return void this.emit(Tg,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(Tg,e);if(!this._signalDisconnectTime)return this._resetClientState(e),e.room.clients=e.room.clients.filter((e=>!(e.deviceId===i&&e.isPendingToLeave))),void this.emit(Tg,e);const s=.8*e.disconnectTimeout;if(Date.now()-this._signalDisconnectTime>s)return this._resetClientState(e),this.emit(Tg,e),void this.metrics.roomJoinedLate++;e.room.clients=e.room.clients.filter((e=>!(e.deviceId===i&&e.isPendingToLeave)));const n=yield Cf();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(n,t.id))return;t.mergeWithOldClientState=!0}catch(e){zv.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(Tg,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(bg,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))):zv.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(bg,{clientId:e.clientId})})),this._addClientToState(e.client),this.emit(Sg,e)}_abortIfNotActive(e){return _f(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(bg,e)))}))}_checkIsActive(e){return _f(this,void 0,void 0,(function*(){const t=yield Cf();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 s=this._clients[e];if(!s)throw new Error(`Client ${e} not found in ReconnectManager state`);return t!==s.isVideoEnabled||(r!==s.isAudioEnabled||i!==s.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 Gv;const Wv=null!==(Gv=ku.default)&&void 0!==Gv?Gv:ku;class Hv{constructor(e,t,r=!1){this._wasConnectedUsingWebsocket=!1,this._reconnectManager=null,this._socket=ff(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"!==Wv.browserDetails.browser&&delete this._wasConnectedUsingWebsocket):this._socket.io.opts.transports=["websocket","polling"]})),r&&(this._reconnectManager=new qv(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.disconnectTimestamp=Date.now(),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=[Tg,bg,Sg];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}getReconnectThreshold(){var e;return null===(e=this._reconnectManager)||void 0===e?void 0:e.reconnectThresholdInMs}}const Kv=[{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 Jv(e,t){return ai(e,t)}!function({host:e="whereby.com",protocol:t="https:"}={}){let r="",i=e,s=".";for(const{separator:t,pattern:n}of Kv){const a=n.exec(e);if(a){r=a[1]||"",i=a[2],s=t;break}}const n=r?`${r}${s}${i}`:i}(window&&window.location);const Qv=((e={})=>{const t=new Map,{extra:r,onError:i=zi}=e;Si(i,"onError");const s=e=>{let r=Qr(Array.from(t.values()),(t=>t.effect===e.effect));return r||(r=Ni(e)),(e=>(e.unsubscribe=()=>t.delete(e.id),t.set(e.id,e),t=>{e.unsubscribe(),t?.cancelActive&&Bi(e)}))(r)};Object.assign(s,{withTypes:()=>s});const n=e=>{const{type:r,effect:i,predicate:s}=Ai(e),n=Qr(Array.from(t.values()),(e=>("string"==typeof r?e.type===r:e.predicate===s)&&e.effect===i));return n&&(n.unsubscribe(),e.cancelActive&&Bi(n)),!!n};Object.assign(n,{withTypes:()=>n});const a=async(e,n,a,o)=>{const c=new AbortController,d=Li(s,c.signal),l=[];try{e.pending.add(c),await Promise.resolve(e.effect(n,Oi({},a,{getOriginalState:o,condition:(e,t)=>d(e,t).then(Boolean),take:d,delay:Ei(c.signal),pause:Ii(c.signal),extra:r,signal:c.signal,fork:ji(c.signal,l),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach(((e,t,r)=>{e!==c&&(ki(e,yi),r.delete(e))}))},cancel:()=>{ki(c,yi),e.pending.delete(c)},throwIfCancelled:()=>{Pi(c.signal)}})))}catch(e){e instanceof wi||Fi(i,e,{raisedBy:"effect"})}finally{await Promise.all(l),ki(c,bi),e.pending.delete(c)}},o=(e=>()=>{e.forEach(Bi),e.clear()})(t);return{middleware:e=>r=>c=>{if(!zt(c))return r(c);if($i.match(c))return s(c.payload);if(Vi.match(c))return void o();if(Ui.match(c))return n(c.payload);let d=e.getState();const l=()=>{if(d===xi)throw new Error(`${Mi}: getOriginalState can only be called synchronously`);return d};let p;try{if(p=r(c),t.size>0){const r=e.getState(),s=Array.from(t.values());for(const t of s){let s=!1;try{s=t.predicate(c,r,d)}catch(e){s=!1,Fi(i,e,{raisedBy:"predicate"})}s&&a(t,c,e,l)}}}finally{d=xi}return p},startListening:s,stopListening:n,clearListeners:o}})(),Zv=Qv.startListening,Yv=(e,t)=>Zv({predicate:(t,r,i)=>{const s=e.map((e=>e(i))),n=e.map((e=>e(r)));return s.some(((e,t)=>e!==n[t]))},effect:(r,{dispatch:i,getState:s,extra:n})=>{const a=e.map((e=>e(s())));t({dispatch:i,getState:s,extra:n},...a)}}),Xv=ui({name:"app",initialState:{isNodeSdk:!1,isActive:!1,isDialIn:!1,roomName:null,roomUrl:null,displayName:null,userAgent:"core:0.25.1",externalId:null},reducers:{doAppStart:(e,t)=>{const r=new URL(t.payload.roomUrl);return Object.assign(Object.assign(Object.assign({},e),t.payload),{roomName:r.pathname,initialConfig:Object.assign({},t.payload),isActive:!0})},doAppStop:e=>Object.assign(Object.assign({},e),{isActive:!1})}}),{doAppStop:e_,doAppStart:t_}=Xv.actions,r_=e=>e.app.isActive,i_=e=>e.app.displayName,s_=e=>e.app.externalId;function n_(e){return Jr(`signalConnection/event/${e}`)}const a_={audioEnabled:n_("audioEnabled"),audioEnableRequested:n_("audioEnableRequested"),chatMessage:n_("chatMessage"),clientLeft:n_("clientLeft"),clientKicked:n_("clientKicked"),clientMetadataReceived:n_("clientMetadataReceived"),clientUnableToJoin:n_("clientUnableToJoin"),cloudRecordingStarted:n_("cloudRecordingStarted"),cloudRecordingStopped:n_("cloudRecordingStopped"),disconnect:n_("disconnect"),knockerLeft:n_("knockerLeft"),knockHandled:n_("knockHandled"),newClient:n_("newClient"),roomJoined:n_("roomJoined"),roomKnocked:n_("roomKnocked"),roomLeft:n_("roomLeft"),roomLocked:n_("roomLocked"),roomSessionEnded:n_("roomSessionEnded"),screenshareStarted:n_("screenshareStarted"),screenshareStopped:n_("screenshareStopped"),spotlightAdded:n_("spotlightAdded"),spotlightRemoved:n_("spotlightRemoved"),streamingStopped:n_("streamingStopped"),videoEnabled:n_("videoEnabled"),liveTranscriptionStarted:n_("liveTranscriptionStarted"),liveTranscriptionStopped:n_("liveTranscriptionStopped")},o_={canLockRoom:["host"],canRequestAudioEnable:["host"],canKickClient:["host"],canEndMeeting:["host"],canAskToSpeak:["host"],canSpotlight:["host"]},c_=ui({name:"authorization",initialState:{roomKey:null,roleName:"none"},reducers:{setRoomKey:(e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload})},extraReducers:e=>{e.addCase(t_,((e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload.roomKey}))),e.addCase(a_.roomJoined,((e,t)=>{var r,i;const s=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),{roleName:(null==s?void 0:s.role.roleName)||"none"})}))}}),{setRoomKey:d_}=c_.actions,l_=e=>e.authorization.roleName;Hr(l_,(e=>o_.canLockRoom.includes(e))),Hr(l_,(e=>o_.canRequestAudioEnable.includes(e))),Hr(l_,(e=>o_.canKickClient.includes(e))),Hr(l_,(e=>o_.canEndMeeting.includes(e)));const p_=Hr(l_,(e=>o_.canAskToSpeak.includes(e)));function u_(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 s=0;for(i=Object.getOwnPropertySymbols(e);s<i.length;s++)t.indexOf(i[s])<0&&Object.prototype.propertyIsEnumerable.call(e,i[s])&&(r[i[s]]=e[i[s]])}return r}function h_(e,t,r,i){return new(r||(r=Promise))((function(s,n){function a(e){try{c(i.next(e))}catch(e){n(e)}}function o(e){try{c(i.throw(e))}catch(e){n(e)}}function c(e){e.done?s(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())}))}Hr(l_,(e=>o_.canSpotlight.includes(e))),"function"==typeof SuppressedError&&SuppressedError;const m_=ui({name:"deviceCredentials",initialState:{isFetching:!1,data:null},reducers:{},extraReducers:e=>{e.addCase(f_.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(f_.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}))),e.addCase(f_.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!0})))}}),f_=Jv("deviceCredentials/doGetDeviceCredentials",((e,{extra:t})=>h_(void 0,void 0,void 0,(function*(){try{return yield t.services.credentialsService.getCredentials()}catch(e){console.error(e)}})))),g_=e=>e.deviceCredentials;Yv([Hr(r_,g_,((e,t)=>!(!e||t.isFetching||t.data)))],(({dispatch:e},t)=>{t&&e(f_())}));const v_=ui({name:"signalConnection",initialState:{deviceIdentified:!1,isIdentifyingDevice:!1,status:"ready",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),{deviceIdentified:!1,status:"disconnected"}),socketReconnecting:e=>Object.assign(Object.assign({},e),{status:"reconnecting"}),deviceIdentifying:e=>Object.assign(Object.assign({},e),{isIdentifyingDevice:!0}),deviceIdentified:e=>Object.assign(Object.assign({},e),{deviceIdentified:!0,isIdentifyingDevice:!1})},extraReducers:e=>{e.addCase(a_.disconnect,(e=>Object.assign(Object.assign({},e),{deviceIdentified:!1,status:"disconnected"})))}}),{deviceIdentifying:__,deviceIdentified:y_,socketConnected:b_,socketConnecting:w_,socketDisconnected:S_,socketReconnecting:C_}=v_.actions,R_=()=>(e,t)=>{if(E_(t()))return;e(w_());const r=function(){const e=new URL("wss://signal.appearin.net").origin;return new Hv(e,{autoConnect:!1})}();r.on("connect",(()=>e(b_(r)))),r.on("device_identified",(()=>e(y_()))),r.getManager().on("reconnect",(()=>e(C_()))),function(e,t){e.on("room_joined",(e=>t(a_.roomJoined(e)))),e.on("new_client",(e=>t(a_.newClient(e)))),e.on("client_left",(e=>t(a_.clientLeft(e)))),e.on("client_kicked",(e=>t(a_.clientKicked(e)))),e.on("client_unable_to_join",(e=>t(a_.clientUnableToJoin(e)))),e.on("audio_enabled",(e=>t(a_.audioEnabled(e)))),e.on("video_enabled",(e=>t(a_.videoEnabled(e)))),e.on("audio_enable_requested",(e=>t(a_.audioEnableRequested(e)))),e.on("client_metadata_received",(e=>t(a_.clientMetadataReceived(e)))),e.on("chat_message",(e=>t(a_.chatMessage(e)))),e.on("disconnect",(()=>t(a_.disconnect()))),e.on("room_knocked",(e=>t(a_.roomKnocked(e)))),e.on("room_left",(()=>t(a_.roomLeft()))),e.on("room_locked",(e=>t(a_.roomLocked(e)))),e.on("room_session_ended",(e=>t(a_.roomSessionEnded(e)))),e.on("knocker_left",(e=>t(a_.knockerLeft(e)))),e.on("knock_handled",(e=>t(a_.knockHandled(e)))),e.on("screenshare_started",(e=>t(a_.screenshareStarted(e)))),e.on("screenshare_stopped",(e=>t(a_.screenshareStopped(e)))),e.on("cloud_recording_started",(e=>t(a_.cloudRecordingStarted(e)))),e.on("cloud_recording_stopped",(()=>t(a_.cloudRecordingStopped()))),e.on("streaming_stopped",(()=>t(a_.streamingStopped()))),e.on("spotlight_added",(e=>t(a_.spotlightAdded(e)))),e.on("spotlight_removed",(e=>t(a_.spotlightRemoved(e)))),e.on("live_transcription_started",(e=>t(a_.liveTranscriptionStarted(e)))),e.on("live_transcription_stopped",(e=>t(a_.liveTranscriptionStopped(e))))}(r,e),r.connect()},T_=({deviceCredentials:e})=>(t,r)=>{const i=r(),s=E_(i),n=D_(i);s&&(n||(s.emit("identify_device",{deviceCredentials:e}),t(__())))},k_=()=>(e,t)=>{const r=t();if("connected"===I_(r)){const t=P_(r).socket;null==t||t.disconnect(),e(S_())}},P_=e=>e.signalConnection,D_=e=>e.signalConnection.deviceIdentified,I_=e=>e.signalConnection.status,E_=e=>e.signalConnection.socket;Yv([Hr(r_,I_,((e,t)=>!(!e||!["ready","reconnecting"].includes(t))))],(({dispatch:e},t)=>{t&&e(R_())}));const O_=Hr(g_,I_,D_,(e=>e.signalConnection.isIdentifyingDevice),((e,t,r,i)=>!(!e.data||"connected"!==t||r||i)));Yv([O_,g_],(({dispatch:e},t,r)=>{t&&r.data&&e(T_({deviceCredentials:r.data}))})),Zv({actionCreator:a_.roomLeft,effect:(e,{dispatch:t})=>{t(k_())}}),Zv({actionCreator:a_.clientKicked,effect:(e,{dispatch:t})=>{t(k_())}});const x_=ui({name:"chat",initialState:{chatMessages:[]},reducers:{},extraReducers(e){e.addCase(a_.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]})}))}}),M_=ui({name:"cloudRecording",initialState:{isRecording:!1,error:null,startedAt:void 0},reducers:{recordingRequestStarted:e=>Object.assign(Object.assign({},e),{status:"requested"})},extraReducers:e=>{e.addCase(a_.cloudRecordingStopped,(e=>Object.assign(Object.assign({},e),{isRecording:!1,status:void 0}))),e.addCase(a_.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(a_.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}))}});M_.actions;const j_=ui({name:"localMedia",initialState:{busyDeviceIds:[],cameraEnabled:!1,currentSpeakerDeviceId:"default",devices:[],isSettingCameraDevice:!1,isSettingMicrophoneDevice:!1,isSettingSpeakerDevice:!1,isTogglingCamera:!1,lowDataMode:!1,microphoneEnabled:!1,status:"inactive",stream:void 0,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}),setCurrentSpeakerDeviceId(e,t){var r;return Object.assign(Object.assign({},e),{currentSpeakerDeviceId:null!==(r=t.payload.deviceId)&&void 0!==r?r:"default"})},toggleLowDataModeEnabled(e,t){var r;return Object.assign(Object.assign({},e),{lowDataMode:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.lowDataMode})},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(t_,((e,t)=>Object.assign(Object.assign({},e),{options:t.payload.localMediaOptions}))),e.addCase(J_.pending,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:i,isSettingMicrophoneDevice:r})})),e.addCase(J_.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(J_.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(W_.pending,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!0}))),e.addCase(W_.fulfilled,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!1}))),e.addCase(Q_.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}))),e.addCase(Y_.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(Y_.fulfilled,((e,{payload:{stream:t,onDeviceChange:r}})=>{let i,s,n=!1,a=!1;const o=t.getAudioTracks()[0],c=t.getVideoTracks()[0];return o&&(s=o.getSettings().deviceId,a=o.enabled),c&&(n=c.enabled,i=c.getSettings().deviceId),Object.assign(Object.assign({},e),{stream:t,status:"started",currentCameraDeviceId:i,currentMicrophoneDeviceId:s,cameraEnabled:n,microphoneEnabled:a,onDeviceChange:r})})),e.addCase(Y_.rejected,((e,t)=>Object.assign(Object.assign({},e),{status:"error",startError:t.error}))),e.addCase(Z_.pending,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!0}))),e.addCase(Z_.fulfilled,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1}))),e.addCase(Z_.rejected,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1})))}}),{deviceBusy:L_,setCurrentCameraDeviceId:A_,setCurrentMicrophoneDeviceId:N_,setCurrentSpeakerDeviceId:B_,toggleCameraEnabled:F_,toggleMicrophoneEnabled:$_,toggleLowDataModeEnabled:V_,setLocalMediaOptions:U_,setLocalMediaStream:z_,localMediaStopped:q_,localStreamMetadataUpdated:G_}=j_.actions,W_=Jv("localMedia/doToggleCamera",((e,{getState:t,rejectWithValue:r})=>h_(void 0,void 0,void 0,(function*(){const e=t(),i=ly(e);if(!i)return;let s=i.getVideoTracks()[0];const n=iy(e);try{if(n)if(s)s.enabled=!0;else{const t=uy(e),r=ty(e);yield Jf(Object.assign(Object.assign({},t),{audioId:!1,videoId:r,type:"exact"}),{replaceStream:i}),s=i.getVideoTracks()[0]}else{if(!s)return;s.enabled=!1,s.stop(),i.removeTrack(s)}i.dispatchEvent(new CustomEvent("stopresumevideo",{detail:{track:s,enable:n}}))}catch(e){return r(e)}})))),H_=Jv("localMedia/doToggleMicrophone",((e,{getState:t})=>{var r;const i=t(),s=ly(i);if(!s)return;const n=sy(i),a=null===(r=s.getAudioTracks())||void 0===r?void 0:r[0];a&&(a.enabled=n)})),K_=()=>(e,t)=>{const r=t();if(!ly(r))return;const i=ty(r),s=ry(r);e(Z_({audioId:s,videoId:i}))},J_=Jv("localMedia/reactSetDevice",(({audio:e,video:t},{getState:r,rejectWithValue:i})=>h_(void 0,void 0,void 0,(function*(){try{const i=r(),s=ly(i);if(!s)throw new Error("No stream");const n=!!e&&ry(i),a=!!t&&ty(i),o=uy(i),{replacedTracks:c}=yield Jf(Object.assign(Object.assign({},o),{audioId:n,videoId:a,type:"exact"}),{replaceStream:s}),d=sy(i);s.getAudioTracks().forEach((e=>e.enabled=d));const l=iy(i);return s.getVideoTracks().forEach((e=>e.enabled=l)),{replacedTracks:c}}catch(e){return i(e)}})))),Q_=Jv("localMedia/doUpdateDeviceList",((e,{getState:t,dispatch:r,rejectWithValue:i})=>h_(void 0,void 0,void 0,(function*(){var e,s,n,a;const o=t();let c=[],d=[];const l=ly(o);try{c=yield navigator.mediaDevices.enumerateDevices(),d=ay(o);if(!(l&&!py(o)&&c&&d&&d.find((e=>e.deviceId))))return{devices:c};const{changedDevices:t,addedDevices:i}=Qf({oldDevices:d,newDevices:c});let p=null===(e=t.audioinput)||void 0===e?void 0:e.deviceId,u=null===(s=t.videoinput)||void 0===s?void 0:s.deviceId;return void 0===p&&(p=null===(n=i.audioinput)||void 0===n?void 0:n.deviceId),void 0===u&&(u=null===(a=i.videoinput)||void 0===a?void 0:a.deviceId),void 0===p&&void 0===u||r(Z_({audioId:p,videoId:u})),{devices:c}}catch(e){return i(e)}})))),Z_=Jv("localMedia/doSwitchLocalStream",(({audioId:e,videoId:t},{dispatch:r,getState:i,rejectWithValue:s})=>h_(void 0,void 0,void 0,(function*(){const n=i(),a=ly(n),o=uy(n),c=!(!t||e)||!(t||!e);if(a)try{const{replacedTracks:i}=yield Jf(Object.assign(Object.assign({},o),{audioId:void 0!==e&&e,videoId:void 0!==t&&t,type:"exact"}),{replaceStream:a}),s=e||t;return c&&s&&r(L_({deviceId:s})),{replacedTracks:i}}catch(i){console.error(i);const n=e||t;return c&&n&&r(L_({deviceId:n})),s(i)}})))),Y_=Jv("localMedia/doStartLocalMedia",((e,{getState:t,dispatch:r,rejectWithValue:i})=>h_(void 0,void 0,void 0,(function*(){const s=function(e,{delay:t=500,edges:r}={}){let i,s=0;return(...n)=>{s+=1,r&&1===s&&e(...n),clearTimeout(i),i=setTimeout((()=>{(!r||s>1)&&e(...n),i=void 0,s=0}),t)}}((()=>{r(Q_())}),{delay:500});if(navigator.mediaDevices&&navigator.mediaDevices.addEventListener("devicechange",s),"getTracks"in e)return Promise.resolve({stream:e,onDeviceChange:s});if(!e.audio&&!e.video)return{stream:new MediaStream,onDeviceChange:s};r(U_({options:e}));try{yield r(Q_());const i=t(),n=uy(i),{stream:a}=yield Jf(Object.assign(Object.assign({},n),{audioId:e.audio,videoId:e.video}));return{stream:a,onDeviceChange:s}}catch(e){return i(e)}})))),X_=()=>(e,t)=>{const r=ly(t()),i=cy(t()).onDeviceChange;null==r||r.getTracks().forEach((e=>{e.stop()})),navigator.mediaDevices&&i&&navigator.mediaDevices.removeEventListener("devicechange",i),e(q_())},ey=e=>e.localMedia.busyDeviceIds,ty=e=>e.localMedia.currentCameraDeviceId,ry=e=>e.localMedia.currentMicrophoneDeviceId,iy=e=>e.localMedia.cameraEnabled,sy=e=>e.localMedia.microphoneEnabled,ny=e=>e.localMedia.lowDataMode,ay=e=>e.localMedia.devices,oy=e=>e.localMedia.options;Hr(oy,(e=>!!e));const cy=e=>e.localMedia,dy=e=>e.localMedia.status,ly=e=>e.localMedia.stream,py=e=>e.localMedia.isSwitchingStream,uy=Hr(ay,ty,ry,ny,((e,t,r,i)=>({devices:e,videoId:t,audioId:r,options:{disableAEC:!1,disableAGC:!1,hd:!0,lax:!1,lowDataMode:i,simulcast:!0,widescreen:!0}})));Hr(dy,(e=>"starting"===e)),Hr(ay,ey,((e,t)=>e.filter((e=>"videoinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),Hr(ay,ey,((e,t)=>e.filter((e=>"audioinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),Hr(ay,(e=>e.filter((e=>"audiooutput"===e.kind))));Yv([Hr(r_,dy,oy,((e,t,r)=>{if(e&&["inactive","stopped"].includes(t)&&r)return r}))],(({dispatch:e},t)=>{t&&e(Y_(t))}));Yv([Hr(r_,dy,oy,((e,t,r)=>!e&&"inactive"!==t&&!!r))],(({dispatch:e},t)=>{t&&e(X_())})),Zv({predicate:(e,t,r)=>{const i=sy(r),s=sy(t);return"started"===dy(r)&&i!==s},effect:(e,{dispatch:t})=>{t(H_())}}),Zv({predicate:(e,t,r)=>{const i=ny(r),s=ny(t);return"started"===dy(r)&&i!==s},effect:(e,{dispatch:t})=>{t(K_())}}),Zv({predicate:(e,t,r)=>{const i=(e=>e.localMedia.isTogglingCamera)(t);if(i)return!1;const s=iy(r),n=iy(t);return"started"===dy(r)&&s!==n},effect:(e,{dispatch:t})=>{t(W_())}}),Zv({predicate:(e,t,r)=>{const i=ty(r),s=ty(t);return"started"===dy(r)&&i!==s},effect:(e,{dispatch:t})=>{t(J_({audio:!1,video:!0}))}}),Zv({predicate:(e,t,r)=>{const i=ry(r),s=ry(t);return"started"===dy(r)&&i!==s},effect:(e,{dispatch:t})=>{t(J_({audio:!0,video:!1}))}}),Zv({matcher:ti(Y_.fulfilled,Q_.fulfilled,Z_.fulfilled,Z_.rejected),effect:(e,{dispatch:t,getState:r})=>{const i=r(),s=ly(i),n=ay(i);if(!s)return;const a=function({audioTrack:e,videoTrack:t,devices:r,stoppedVideoTrack:i,lastAudioId:s,lastVideoId:n}){const a=e=>"live"===(null==e?void 0:e.readyState)?e:null;return t=a(t)||i,e=a(e),{video:Hf("videoinput",t,r,n),audio:Hf("audioinput",e,r,s)}}({audioTrack:s.getAudioTracks()[0],videoTrack:s.getVideoTracks()[0],devices:n});t(G_(a))}}),Zv({actionCreator:a_.audioEnableRequested,effect:({payload:e},{dispatch:t})=>{const{enable:r}=e;r||t($_({enabled:!1}))}});const hy=["recorder","streamer"],my=ui({name:"localParticipant",initialState:{displayName:"",id:"",isAudioEnabled:!0,isVideoEnabled:!0,isLocalParticipant:!0,stream:void 0,isScreenSharing:!1,roleName:"none",clientClaim:void 0,stickyReaction:void 0,isDialIn:!1},reducers:{doSetDisplayName:(e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName})},extraReducers:e=>{e.addCase(t_,((e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName}))),e.addCase(gy.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isAudioEnabled:t.payload}))),e.addCase(vy.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isVideoEnabled:t.payload}))),e.addCase(_y.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{stickyReaction:t.payload}))),e.addCase(a_.roomJoined,((e,t)=>{var r,i;const s=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==s?void 0:s.role.roleName)||"none",clientClaim:t.payload.clientClaim})}))}}),{doSetDisplayName:fy}=my.actions,gy=Jv("localParticipant/doEnableAudio",((e,{dispatch:t,getState:r})=>h_(void 0,void 0,void 0,(function*(){const i=r(),s=P_(i).socket;return null==s||s.emit("enable_audio",{enabled:e.enabled}),e.enabled&&t(_y({enabled:!1})),e.enabled})))),vy=Jv("localParticipant/doEnableVideo",((e,{getState:t})=>h_(void 0,void 0,void 0,(function*(){const r=t(),i=P_(r).socket;return null==i||i.emit("enable_video",{enabled:e.enabled}),e.enabled})))),_y=Jv("localParticipant/doSetLocalStickyReaction",((e,{getState:t,rejectWithValue:r})=>h_(void 0,void 0,void 0,(function*(){var i;const s=t(),n=Cy(s),a=Boolean(n),o=null!==(i=e.enabled)&&void 0!==i?i:!a;if(o===a)return r(n);return o?{reaction:"✋",timestamp:(new Date).toISOString()}:null})))),yy=()=>(e,t)=>{const r=t(),i=P_(r).socket,s={displayName:Sy(r),stickyReaction:Cy(r)};null==i||i.emit("send_client_metadata",{type:"UserData",payload:s})},by=e=>e.localParticipant,wy=e=>e.localParticipant.id,Sy=e=>e.localParticipant.displayName,Cy=e=>e.localParticipant.stickyReaction,Ry=Hr(by,ly,((e,t)=>{const r={id:e.id,clientId:e.id,displayName:e.displayName,stream:t,isLocalClient:!0,isAudioEnabled:e.isAudioEnabled,isVideoEnabled:e.isVideoEnabled};return hy.includes(e.roleName)?null:r}));Zv({actionCreator:F_,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isVideoEnabled:s}=by(r());t(vy({enabled:i||!s}))}}),Zv({actionCreator:$_,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isAudioEnabled:s}=by(r());t(gy({enabled:i||!s}))}}),Yv([Sy,Cy],(({dispatch:e})=>{e(yy())}));const Ty=ui({name:"localScreenshare",initialState:{status:"inactive",stream:null,error:null},reducers:{stopScreenshare:(e,t)=>Object.assign(Object.assign({},e),{status:"inactive",stream:null})},extraReducers:e=>{e.addCase(Py.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(Py.fulfilled,((e,{payload:{stream:t}})=>Object.assign(Object.assign({},e),{status:"active",stream:t}))),e.addCase(Py.rejected,((e,{payload:t})=>Object.assign(Object.assign({},e),{error:t,status:"inactive",stream:null})))}}),{stopScreenshare:ky}=Ty.actions,Py=Jv("localScreenshare/doStartScreenshare",((e,{dispatch:t,getState:r,rejectWithValue:i})=>h_(void 0,void 0,void 0,(function*(){var e;try{const i=r(),s=Iy(i);if(s)return{stream:s};const n=yield navigator.mediaDevices.getDisplayMedia(),a=()=>{t(Dy())};return"oninactive"in n?n.addEventListener("inactive",a):null===(e=n.getVideoTracks()[0])||void 0===e||e.addEventListener("ended",a),{stream:n}}catch(e){return i(e)}})))),Dy=()=>(e,t)=>{const r=t(),i=Iy(r);i&&(i.getTracks().forEach((e=>e.stop())),e(ky({stream:i})))},Iy=e=>e.localScreenshare.stream;function Ey(e){return Jr(`rtcConnection/event/${e}`)}Zv({actionCreator:q_,effect:(e,{getState:t})=>{const r=t(),i=Iy(r);i&&(null==i||i.getTracks().forEach((e=>{e.stop()})))}});const Oy={rtcManagerCreated:Ey("rtcManagerCreated"),rtcManagerDestroyed:Ey("rtcManagerDestroyed"),streamAdded:Ey("streamAdded")};function xy(e,t=!1){const{streams:r,role:i}=e,s=u_(e,["streams","role"]);return Object.assign(Object.assign({},s),{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 My(e,t){const r=e.remoteParticipants.findIndex((e=>e.id===t));return{index:r,participant:e.remoteParticipants[r]}}function jy(e,t,r){const{participant:i,index:s}=My(e,t);return i?Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants.slice(0,s),Object.assign(Object.assign({},i),r),...e.remoteParticipants.slice(s+1)]}):(console.error(`Did not find client for update ${t}`),e)}function Ly(e,t,r,i){const{participant:s}=My(e,t);if(!s)return console.error(`No client ${t} found to update stream ${r} ${i}`),e;const n=s.streams.findIndex((e=>e.id===r)),a=[...s.streams];return a[n]=Object.assign(Object.assign({},a[n]),{state:i}),jy(e,t,{streams:a})}function Ay(e,t,r){const{participant:i}=My(e,t);return!i||i.streams.find((e=>e.id===r))?(console.warn(`No participant ${t} or stream ${r} already exists`),e):jy(e,t,{streams:[...i.streams,{id:r,state:"to_accept"}]})}const Ny=ui({name:"remoteParticipants",initialState:{remoteParticipants:[]},reducers:{streamStatusUpdated:(e,t)=>{let r=e;for(const{clientId:e,streamId:i,state:s}of t.payload)r=Ly(r,e,i,s);return r},participantStreamAdded:(e,t)=>{const{clientId:r,stream:i}=t.payload;return jy(e,r,{stream:i})},participantStreamIdAdded:(e,t)=>{const{clientId:r,streamId:i}=t.payload;return Ay(e,r,i)}},extraReducers:e=>{e.addCase(a_.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:s}=t.payload.room;return Object.assign(Object.assign({},e),{remoteParticipants:s.filter((e=>e.id!==i)).map((e=>xy(e)))})})),e.addCase(Oy.streamAdded,((e,t)=>function(e,t){const{clientId:r,stream:i,streamType:s}=t;let{streamId:n}=t;const{participant:a}=My(e,r);if(!a)return console.error(`Did not find client ${r} for adding stream`),e;const o=e.remoteParticipants;n||(n=i.id);const c=o.find((e=>e.id===r));if(!c)return e;const d=c.streams.find((e=>e.id===n));return c.stream&&(c.stream.id===n||c.stream.inboundId===n)||!c.stream&&"webcam"===s||!c.stream&&!s&&!d?jy(e,r,{stream:i}):jy(e,r,{presentationStream:i})}(e,t.payload))),e.addCase(a_.newClient,((e,t)=>{const{client:r}=t.payload;return function(e,t){const{participant:r}=My(e,t.id);return r?(console.warn(`Client already existing ${t.id}. Ignoring`),e):Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants,t]})}(e,xy(r,!0))})),e.addCase(a_.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(a_.audioEnabled,((e,t)=>{const{clientId:r,isAudioEnabled:i}=t.payload;return jy(e,r,{isAudioEnabled:i})})),e.addCase(a_.videoEnabled,((e,t)=>{const{clientId:r,isVideoEnabled:i}=t.payload;return jy(e,r,{isVideoEnabled:i})})),e.addCase(a_.clientMetadataReceived,((e,t)=>{const{error:r,payload:i}=t.payload;if(r||!i)return console.warn(r||"Client metadata error received"),e;const{clientId:s,displayName:n,stickyReaction:a}=i;return jy(e,s,{displayName:n,stickyReaction:a})})),e.addCase(a_.screenshareStarted,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return Ay(e,r,i)})),e.addCase(a_.screenshareStopped,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return function(e,t,r){var i,s;const{participant:n}=My(e,t);if(!n)return console.error(`No participant ${t} found to remove stream ${r}`),e;const a=n.stream&&n.stream.id,o=(null===(i=n.presentationStream)||void 0===i?void 0:i.inboundId)||(null===(s=n.presentationStream)||void 0===s?void 0:s.id),c=n.streams.findIndex((e=>e.id===r));return jy(e,t,Object.assign(Object.assign({streams:n.streams.filter(((e,t)=>t!==c))},a===r&&{stream:null}),o===r&&{presentationStream:null}))}(e,r,i)}))}}),{participantStreamAdded:By,participantStreamIdAdded:Fy,streamStatusUpdated:$y}=Ny.actions,Vy=e=>e.remoteParticipants.remoteParticipants,Uy=Hr(Vy,(e=>e.filter((e=>!hy.includes(e.roleName)))));Hr(Vy,(e=>e.length+1)),Hr(Uy,by,((e,t)=>hy.includes(t.roleName)?e.length:e.length+1));const zy=ui({initialState:{data:null,isFetching:!1,error:null},name:"organization",reducers:{},extraReducers:e=>{e.addCase(qy.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(qy.fulfilled,((e,t)=>t.payload?Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}):Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(qy.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!1,error:!0})))}}),qy=Jv("organization/doOrganizationFetch",((e,{extra:t,getState:r})=>h_(void 0,void 0,void 0,(function*(){try{const e=(e=>e.app.roomUrl)(r()),i=yield t.services.fetchOrganizationFromRoomUrl(e||"");if(!i)throw new Error("Invalid room url");return i}catch(e){console.error(e)}})))),Gy=e=>{var t;return null===(t=e.organization.data)||void 0===t?void 0:t.organizationId},Wy=Hr(r_,(e=>e.organization),g_,((e,t,r)=>!(!e||t.data||t.isFetching||t.error||r.isFetching)));Yv([Wy],(({dispatch:e},t)=>{t&&e(qy())}));const Hy=ui({initialState:{session:null,status:"ready",error:null},name:"roomConnection",reducers:{connectionStatusChanged:(e,t)=>Object.assign(Object.assign({},e),{status:t.payload})},extraReducers:e=>{e.addCase(a_.roomJoined,((e,t)=>{var r,i;const{error:s,isLocked:n}=t.payload;return"room_locked"===s&&n?Object.assign(Object.assign({},e),{status:"room_locked"}):s?Object.assign(Object.assign({},e),{status:"disconnected",error:s}):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(a_.disconnect,(e=>["kicked","left"].includes(e.status)?Object.assign({},e):Object.assign(Object.assign({},e),{status:"disconnected"}))),e.addCase(a_.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(a_.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(a_.clientKicked,(e=>Object.assign(Object.assign({},e),{status:"kicked"}))),e.addCase(a_.roomLeft,(e=>Object.assign(Object.assign({},e),{status:"left"}))),e.addCase(C_,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"})))}}),{connectionStatusChanged:Ky}=Hy.actions,Jy=()=>(e,t)=>{const r=t(),i=P_(r).socket,s=(e=>e.app.roomName)(r),n=(e=>e.authorization.roomKey)(r),a=i_(r),o=(e=>e.app.userAgent)(r),c=s_(r),d=(e=>e.app.isDialIn)(r),l=Gy(r),p=iy(t()),u=sy(t()),h=(e=>e.localParticipant.clientClaim)(t());null==i||i.emit("join_room",Object.assign({avatarUrl:null,config:{isAudioEnabled:u,isVideoEnabled:p},deviceCapabilities:{canScreenshare:!0},displayName:a,isCoLocated:!1,isDialIn:d,isDevicePermissionDenied:!1,kickFromOtherRooms:!1,organizationId:l,roomKey:n,roomName:s,userAgent:o,externalId:c},h&&{clientClaim:h})),e(Ky("connecting"))},Qy=e=>e.roomConnection.status,Zy=Hr([r_,Gy,Qy,D_,dy,e=>e.roomConnection.error],((e,t,r,i,s,n)=>!(!(e&&"started"===s&&i&&t&&["ready","reconnecting","disconnected"].includes(r))||n)));Yv([Zy],(({dispatch:e},t)=>{t&&e(Jy())})),Zv({actionCreator:a_.knockHandled,effect:({payload:e},{dispatch:t,getState:r})=>{const{clientId:i,resolution:s}=e,n=r();i===wy(n)&&("accepted"===s?(t(d_(e.metadata.roomKey)),t(Jy())):"rejected"===s&&t(Ky("knock_rejected")))}}),Zv({actionCreator:e_,effect:(e,{dispatch:t,getState:r})=>{const i=r();if("connected"===Qy(i)){const e=P_(i).socket;null==e||e.emit("leave_room"),t(Ky("leaving"))}else k_()}});function Yy(e){return Object.assign(Object.assign({},e),{timestamp:Date.now()})}const Xy=ui({name:"notifications",initialState:{emitter:new Gi,events:[]},reducers:{addNotification:(e,t)=>Object.assign(Object.assign({},e),{events:[...e.events,Object.assign({},t.payload)]}),doClearNotifications:e=>Object.assign(Object.assign({},e),{events:[]})}});Xy.actions;const eb=e=>(t,r)=>{t(Xy.actions.addNotification(e));const i=r(),s=tb(i);s.emit(e.type,e),s.emit("*",e)},tb=e=>e.notifications.emitter;function rb(e){return"recorder"===e.roleName}Zv({actionCreator:a_.chatMessage,effect:({payload:e},{dispatch:t,getState:r})=>{const i=r(),s=Uy(i).find((({id:t})=>t===e.senderId));s?t(eb(Yy({type:"chatMessageReceived",message:`${s.displayName} says: ${e.text}`,props:{client:s,chatMessage:{senderId:e.senderId,timestamp:e.timestamp,text:e.text}}}))):console.warn("Could not find remote client that sent chat message")}}),Zv({actionCreator:a_.audioEnableRequested,effect:({payload:e},{dispatch:t,getState:r})=>{const{enable:i,requestedByClientId:s}=e,n=r(),a=Uy(n).find((({id:e})=>e===s));a?t(eb(Yy({type:i?"requestAudioEnable":"requestAudioDisable",message:i?`${a.displayName} has requested for you to speak`:`${a.displayName} has muted your microphone`,props:{client:a,enable:i}}))):console.warn("Could not find remote client that requested a local audio change")}}),Zv({actionCreator:a_.clientMetadataReceived,effect:(e,{dispatch:t,getOriginalState:r,getState:i})=>{var s;const{error:n,payload:a}=e.payload;if(n||!a)return;const{clientId:o,stickyReaction:c}=a,d=i();if(!p_(d))return;const l=Uy(d).find((({id:e})=>e===o));if(!l)return void console.warn("Could not find remote client that provided updated metadata");const p=r(),u=Uy(p).find((({id:e})=>e===o));(c||(null==u?void 0:u.stickyReaction))&&(null==c?void 0:c.timestamp)!==(null===(s=null==u?void 0:u.stickyReaction)||void 0===s?void 0:s.timestamp)&&t(eb(Yy({type:c?"remoteHandRaised":"remoteHandLowered",message:`${l.displayName} ${c?"raised":"lowered"} their hand`,props:{client:l,stickyReaction:c}})))}}),Yv([I_],(({dispatch:e,getState:t},r)=>{const i=t(),s=Qy(i);["left","kicked"].includes(s)||("disconnected"===r?e(eb(Yy({type:"signalTrouble",message:"Network connection lost. Trying to reconnect you...",props:{}}))):"connected"===r&&e(eb(Yy({type:"signalOk",message:"Network connection available",props:{}}))))})),Zv({actionCreator:a_.clientUnableToJoin,effect:(e,{dispatch:t})=>{var r;"room_full"===(null===(r=e.payload)||void 0===r?void 0:r.error)&&t(eb(Yy({type:"clientUnableToJoinFullRoom",message:"Someone tried to join but the room is full and at capacity.",props:{}})))}});const ib=ui({name:"room",initialState:{isLocked:!1},reducers:{},extraReducers:e=>{e.addCase(a_.roomJoined,((e,t)=>{const{error:r,isLocked:i}=t.payload;return r?e:Object.assign(Object.assign({},e),{isLocked:Boolean(i)})})),e.addCase(a_.roomLocked,((e,t)=>{const{isLocked:r}=t.payload;return Object.assign(Object.assign({},e),{isLocked:Boolean(r)})}))}});Hr(Iy,Uy,((e,t)=>{const r=[];e&&r.push({id:e.id||"local-screenshare",participantId:"local",hasAudioTrack:e.getTracks().some((e=>"audio"===e.kind)),stream:e,isLocal:!0});for(const e of t)e.presentationStream&&r.push({id:e.presentationStream.id||`pres-${e.id}`,participantId:e.id,hasAudioTrack:e.presentationStream.getTracks().some((e=>"audio"===e.kind)),stream:e.presentationStream,isLocal:!1});return r}));const sb=Hr(Iy,by,Uy,((e,t,r)=>{const i=[];if(e){const r=!!e.getAudioTracks().length;i.push({clientId:t.id,displayName:"Your screenshare",id:"local-screenshare",isAudioEnabled:r,isLocalClient:!0,isPresentation:!0,isVideoEnabled:!0,stream:e})}for(const e of r){if("streamer"===e.roleName||rb(e))continue;const{presentationStream:t}=e,r=u_(e,["presentationStream"]),s=e.displayName||"Guest",n=t&&t.active,a="pres-"+e.id,o=e.stream&&e.stream.active,c=e.isVideoEnabled;i.push(Object.assign(Object.assign(Object.assign({},r),{clientId:e.id,displayName:s,hasActivePresentation:!!n}),e.isVideoEnabled?{isVideoEnabled:c}:{})),n&&i.push(Object.assign(Object.assign(Object.assign({},r),{clientId:e.id,stream:e.presentationStream,displayName:`Screenshare (${s})`,id:a,isPresentation:!0,isVideoEnabled:!0}),o&&{isRecording:null}))}return i})),nb=Hr(Ry,sb,((e,t)=>[...e?[e]:[],...t])),ab=e=>({emit:(t,r)=>{"rtc_manager_created"===t?e(yb(r)):"stream_added"===t?e(Oy.streamAdded(r)):"rtc_manager_destroyed"===t&&e(hb())}}),ob={dispatcherCreated:!1,error:null,isCreatingDispatcher:!1,reportedStreamResolutions:{},rtcManager:null,rtcManagerDispatcher:null,rtcManagerInitialized:!1,status:"inactive",isAcceptingStreams:!1},cb=ui({name:"rtcConnection",initialState:ob,reducers:{isAcceptingStreams:(e,t)=>Object.assign(Object.assign({},e),{isAcceptingStreams:t.payload}),resolutionReported:(e,t)=>{const{streamId:r,width:i,height:s}=t.payload;return Object.assign(Object.assign({},e),{reportedStreamResolutions:Object.assign(Object.assign({},e.reportedStreamResolutions),{[r]:{width:i,height:s}})})},rtcDisconnected:()=>Object.assign({},ob),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(C_,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"}))),e.addCase(a_.roomJoined,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"===e.status?"ready":e.status})))}}),{resolutionReported:db,rtcDispatcherCreated:lb,rtcDisconnected:pb,rtcManagerCreated:ub,rtcManagerDestroyed:hb,rtcManagerInitialized:mb,isAcceptingStreams:fb}=cb.actions,gb=()=>(e,t)=>{const r=t(),i=P_(r).socket,s=wb(r).rtcManagerDispatcher,n=iy(r),a=sy(r),o=(e=>e.app.isNodeSdk)(r);if(s||!i)return;const c={getMediaConstraints:()=>({audio:a,video:n}),deferrable:e=>!e},d=new Vv({emitter:ab(e),serverSocket:i,webrtcProvider:c,features:{isNodeSdk:o,lowDataModeEnabled:!1,sfuServerOverrideHost:void 0,turnServerOverrideHost:void 0,useOnlyTURN:void 0,vp9On:!1,h264On:!1,simulcastScreenshareOn:!1,deviceHandlerFactory:o?po.createFactory():void 0}});e(lb(d))},vb=()=>(e,t)=>{const{rtcManager:r}=wb(t());r&&r.disconnectAll(),e(pb())},_b=e=>(t,r)=>{var i;t(fb(!0));const s=r(),n=wb(s).rtcManager,a=Vy(s);if(!n)throw new Error("No rtc manager");const o=null===(i=n.shouldAcceptStreamsFromBothSides)||void 0===i?void 0:i.call(n),c=[];for(const{clientId:t,streamId:r,state:i}of e){const e=a.find((e=>e.id===t));if(e){if("to_accept"===i||"new_accept"===i&&o||"old_accept"===i&&!o){const i=e.isDialIn?"onlytls":void 0;n.acceptNewStream({streamId:"0"===r?t:r,clientId:t,shouldAddLocalVideo:"0"===r,activeBreakout:false,enforceTurnProtocol:i})}else if("new_accept"===i||"old_accept"===i);else if("to_unaccept"===i)null==n||n.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($y(c)),t(fb(!1))},yb=e=>t=>{const{rtcManager:r}=e;t(ub(r))},bb=()=>(e,t)=>{const r=ly(t()),i=wb(t()).rtcManager,s=iy(t()),n=sy(t());r&&i&&i.addNewStream("0",r,!n,!s),e(mb())},wb=e=>e.rtcConnection,Sb=e=>e.rtcConnection.rtcManagerInitialized,Cb=e=>e.rtcConnection.rtcManager,Rb=e=>e.rtcConnection.status;Zv({actionCreator:J_.fulfilled,effect:({payload:e},{getState:t})=>{const{replacedTracks:r}=e,{rtcManager:i}=wb(t()),s=ly(t());null==r||r.forEach((e=>{((e,t)=>{const r=null==s?void 0:s.getTracks().find((t=>t.kind===e));r&&(null==i||i.replaceTrack(t,r))})(e.kind,e)}))}}),Zv({actionCreator:Py.fulfilled,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=wb(t());null==i||i.addNewStream(r.id,r,!1,!0)}}),Zv({actionCreator:e_,effect:(e,{getState:t})=>{const r=Cb(t());null==r||r.rtcStatsDisconnect()}}),Zv({actionCreator:ky,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=wb(t());null==i||i.removeStream(r.id,r,null)}}),Zv({actionCreator:Z_.fulfilled,effect:({payload:e},{getState:t})=>{var r;const i=ly(t()),{rtcManager:s}=wb(t());if(i&&s){const t=(e,t)=>{const r=i.getTracks().find((t=>t.kind===e));return r&&s.replaceTrack(t,r)};null===(r=null==e?void 0:e.replacedTracks)||void 0===r||r.forEach((e=>{t(e.kind,e)}))}}});const Tb=Hr((e=>e.rtcConnection.dispatcherCreated),(e=>e.rtcConnection.isCreatingDispatcher),E_,((e,t,r)=>!(e||t||!r)));Yv([Tb],(({dispatch:e},t)=>{t&&e(gb())}));const kb=Hr(Cb,Sb,dy,((e,t,r)=>!("started"!==r||!e||t)));Yv([kb],(({dispatch:e},t)=>{t&&e(bb())}));Yv([Hr(Rb,r_,((e,t)=>!t&&!["inactive","disconnected"].includes(e)))],(({dispatch:e},t)=>{t&&e(vb())}));const Pb=Hr(Rb,Vy,((e,t)=>{if("ready"!==e)return[];const r=[];for(const e of t){const{streams:t,id:i,newJoiner:s}=e;for(let e=0;e<t.length;e++){let n=t[e].id,a=t[e].state;(null==t?void 0:t.length)>1&&"0"===t[1].id&&(0===e?(n=t[1].id,a=t[1].state):1===e&&(n=t[0].id,a=t[0].state)),"done_accept"!==a&&r.push({clientId:i,streamId:n,state:(s&&"0"===n?"new":"to")+"_accept"})}}return r}));Yv([Pb,e=>e.rtcConnection.isAcceptingStreams],(({dispatch:e},t,r)=>{0<t.length&&!r&&e(_b(t))}));const Db={audioEnabled:{actions:[gy.fulfilled],rtcEventName:"audioEnabled",getValue:e=>sy(e),getOutput:e=>({enabled:e})},videoEnabled:{actions:[vy.fulfilled],rtcEventName:"videoEnabled",getValue:e=>iy(e),getOutput:e=>({enabled:e})},localStream:{actions:[J_.fulfilled],rtcEventName:"localStream",getValue:e=>{var t;return null===(t=ly(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:[Py.fulfilled],rtcEventName:"localScreenshareStream",getValue:e=>{var t;return null===(t=Iy(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:[ky],rtcEventName:"localScreenshareStream",getValue:()=>()=>null,getOutput:()=>({})},displayName:{actions:[fy],rtcEventName:"displayName",getValue:e=>i_(e),getOutput:e=>({displayName:e})},clientId:{actions:null,rtcEventName:"clientId",getValue:e=>wy(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=>s_(e),getOutput:e=>({externalId:e})},organizationId:{actions:null,rtcEventName:"organizationId",getValue:e=>Gy(e),getOutput:e=>({organizationId:e})},signalConnectionStatus:{actions:null,rtcEventName:"signalConnectionStatus",getValue:e=>I_(e),getOutput:e=>({status:e})},roomSessionId:{actions:[a_.newClient,a_.roomJoined,a_.roomSessionEnded,a_.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=>Rb(e),getOutput:e=>({status:e})},userRole:{actions:null,rtcEventName:"userRole",getValue:e=>l_(e),getOutput:e=>({userRole:e})}},Ib=Object.values(Db).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)),Eb=e=>"object"==typeof e?JSON.stringify(e):e,Ob=ui({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})})}}),xb=()=>(e,t)=>{const r=t(),i=wb(r).rtcManager;i&&(i.sendStatsCustomEvent("insightsStats",{_time:Date.now(),ls:0,lr:0,bs:0,br:0,cpu:0}),Object.values(Db).forEach((({rtcEventName:t,getValue:s,getOutput:n})=>{var a;const o=s(r),c=Object.assign(Object.assign({},n(o)),{_time:Date.now()}),d=Eb(o);(null===(a=r.rtcAnalytics.reportedValues)||void 0===a?void 0:a[t])!==d&&(i.sendStatsCustomEvent(t,c),e(Mb({rtcEventName:t,value:o})))})))},{updateReportedValues:Mb}=Ob.actions;function jb({isPresentation:e,stream:t}){var r,i;return e?null!==(i=null!==(r=null==t?void 0:t.outboundId)&&void 0!==r?r:null==t?void 0:t.inboundId)&&void 0!==i?i:null==t?void 0:t.id:"0"}function Lb(e,t){return e.find((e=>e.clientId===t.clientId&&e.streamId===t.streamId))?e:e.concat(t)}Zv({matcher:ti(...Ib),effect:({type:e},{getState:t,dispatch:r})=>{var i;const s=t(),n=wb(s).rtcManager;if(!n)return;const a=Object.values(Db).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(s),p=Eb(l),u=Object.assign(Object.assign({},c(l)),{_time:Date.now()});(null===(i=s.rtcAnalytics.reportedValues)||void 0===i?void 0:i[d])!==p&&(n.sendStatsCustomEvent(d,u),r(Mb({rtcEventName:d,value:l})))}}),Yv([Sb],(({dispatch:e},t)=>{t&&e(xb())}));const Ab=ui({name:"spotlights",initialState:{sorted:[]},reducers:{addSpotlight(e,t){const{clientId:r,streamId:i}=t.payload;return Object.assign(Object.assign({},e),{sorted:Lb(e.sorted,{clientId:r,streamId:i})})},removeSpotlight(e,t){const{clientId:r,streamId:i}=t.payload;return Object.assign(Object.assign({},e),{sorted:e.sorted.filter((e=>!(e.clientId===r&&e.streamId===i)))})}},extraReducers:e=>{e.addCase(a_.roomJoined,((e,t)=>{if(!t.payload.room)return e;const{spotlights:r}=t.payload.room;return Object.assign(Object.assign({},e),{sorted:r})})),e.addCase(a_.spotlightAdded,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return Object.assign(Object.assign({},e),{sorted:Lb(e.sorted,{clientId:r,streamId:i})})})),e.addCase(a_.spotlightRemoved,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return Object.assign(Object.assign({},e),{sorted:e.sorted.filter((e=>!(e.clientId===r&&e.streamId===i)))})})),e.addMatcher(ti(a_.clientKicked,a_.clientLeft),((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{sorted:e.sorted.filter((e=>e.clientId!==r))})}))}}),{addSpotlight:Nb,removeSpotlight:Bb}=Ab.actions,Fb=e=>e.spotlights.sorted;Hr(by,Fb,((e,t)=>function({spotlights:e,isPresentation:t,clientId:r,stream:i}){return!!e.find((e=>{const s=jb({isPresentation:t,stream:i});return e.clientId===r&&e.streamId===s}))}({clientId:e.id,stream:e.stream,spotlights:t}))),Hr(nb,Fb,((e,t)=>function(e,t){return e.reduce(((e,r)=>{const i=t.find((e=>r.clientId===e.clientId&&r.streamId===jb(e)));return i&&!e.includes(i)&&e.push(i),e}),[])}(t,e))),Zv({actionCreator:Py.fulfilled,effect:({payload:e},{getState:t,dispatch:r})=>{const{stream:i}=e,s=t(),n=by(s);n&&r(Nb({clientId:n.id,streamId:i.id}))}}),Zv({actionCreator:ky,effect:({payload:e},{getState:t,dispatch:r})=>{const{stream:i}=e,s=t(),n=by(s);n&&r(Bb({clientId:n.id,streamId:i.id}))}});const $b=ui({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})}});$b.actions;const Vb=ui({name:"waitingParticipants",initialState:{waitingParticipants:[]},reducers:{},extraReducers:e=>{e.addCase(a_.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(a_.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(a_.knockerLeft,((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:e.waitingParticipants.filter((e=>e.id!==r))})}))}});let Ub;!function(e){const t=Object.keys(e),r={};for(let i=0;i<t.length;i++){const s=t[i];void 0===e[s]&&Ut(`No reducer provided for key "${s}"`),"function"==typeof e[s]&&(r[s]=e[s])}const i=Object.keys(r);let s,n;s={};try{!function(e){Object.keys(e).forEach((t=>{const r=e[t];if(void 0===r(void 0,{type:$t.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:$t.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 '${$t.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){n=e}}({app:Xv.reducer,authorization:c_.reducer,chat:x_.reducer,cloudRecording:M_.reducer,deviceCredentials:m_.reducer,localMedia:j_.reducer,localParticipant:my.reducer,localScreenshare:Ty.reducer,notifications:Xy.reducer,organization:zy.reducer,remoteParticipants:Ny.reducer,room:ib.reducer,roomConnection:Hy.reducer,rtcAnalytics:Ob.reducer,rtcConnection:cb.reducer,signalConnection:v_.reducer,spotlights:Ab.reducer,streaming:$b.reducer,waitingParticipants:Vb.reducer});try{Ub=self.localStorage}catch(nw){Ub={getItem:()=>{},key:()=>{},setItem:()=>{},removeItem:()=>{},hasOwnProperty:()=>{},length:0}}const zb=["aec","agc","audio","audioDenoiser","autoHideSelfView","autoSpotlight","background","bottomToolbar","breakout","callQualityMonitoring","cameraAccess","chat","embed","emptyRoomInvitation","floatSelf","help","leaveButton","locking","localization","logo","lowData","moreButton","participantCount","personality","pipButton","precallCeremony","precallCeremonyCanSkip","precallPermissionsHelpLink","precallReview","people","reactions","recording","roomIntegrations","screenshare","settingsButton","skipMediaPermissionPrompt","subgridLabels","timer","toolbarDarkText","topToolbar","video"];var qb,Gb;qb="WherebyEmbed",Gb={oninit(){this.iframe=((e,t)=>e?e[t]||(e[t]={current:null}):{current:null})()},onconnected(){window.addEventListener("message",this.onmessage.bind(this))},ondisconnected(){window.removeEventListener("message",this.onmessage.bind(this))},observedAttributes:["displayName","minimal","room","subdomain","lang","metadata","groups","virtualBackgroundUrl","avatarUrl","externalId","title","cameraEffect","emojiSkinTone",...zb].map((e=>e.toLowerCase())),onattributechanged({attributeName:e,oldValue:t}){["room","subdomain"].includes(e)&&null==t||this.render()},style:e=>`\n ${e} {\n display: block;\n }\n ${e} iframe {\n border: none;\n height: 100%;\n width: 100%;\n }\n `,_postCommand(e,t=[]){this.iframe.current&&this.iframe.current.contentWindow.postMessage({command:e,args:t},this.roomUrl.origin)},endMeeting(){this._postCommand("end_meeting")},knock(){this._postCommand("knock")},leaveRoom(){this._postCommand("leave_room")},openSettings(e="media"){this._postCommand("open_settings",[e])},startRecording(){this._postCommand("start_recording")},stopRecording(){this._postCommand("stop_recording")},startStreaming(){this._postCommand("start_streaming")},stopStreaming(){this._postCommand("stop_streaming")},startLiveTranscription(){this._postCommand("start_live_transcription")},stopLiveTranscription(){this._postCommand("stop_live_transcription")},toggleBreakout(e){this._postCommand("toggle_breakout",[e])},toggleCamera(e){this._postCommand("toggle_camera",[e])},toggleMicrophone(e){this._postCommand("toggle_microphone",[e])},togglePeople(e){this._postCommand("toggle_people",[e])},toggleScreenshare(e){this._postCommand("toggle_screenshare",[e])},toggleChat(e){this._postCommand("toggle_chat",[e])},onmessage({origin:e,data:t}){if(!this.roomUrl||e!==this.roomUrl.origin)return;const{type:r,payload:i}=t;this.dispatchEvent(new CustomEvent(r,{detail:i}))},render(){const{avatarurl:e,displayname:t,cameraeffect:r,emojiskintone:i,lang:s,metadata:n,externalid:a,minimal:o,room:c,groups:d,virtualbackgroundurl:l,title:p}=this;let u,h;try{({roomUrl:u,subdomain:h}=function(e,t){if(!e)throw new Error("Missing room attribute");const r=/https:\/\/([^.]+)(\.whereby\.com|-ip-\d+-\d+-\d+-\d+.hereby.dev:4443)\/.+/.exec(e),i=r&&r[1]||t;if(!i)throw new Error("Missing subdomain attribute");if(!r)throw new Error("Could not parse room URL");return{subdomain:i,roomUrl:new URL(e)}}(c,this.subdomain))}catch(e){return this.html`Whereby: ${e instanceof Error?e.message:"unknown error"}`}this.roomUrl=u,Object.entries(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({jsApi:!0,we:"1",iframeSource:h},t&&{displayName:t}),s&&{lang:s}),n&&{metadata:n}),i&&{emojiSkinTone:i}),a&&{externalId:a}),d&&{groups:d}),l&&{virtualBackgroundUrl:l}),e&&{avatarUrl:e}),r&&{cameraEffect:r}),null!=o&&{embed:o}),zb.reduce(((e,t)=>null!=this[t.toLowerCase()]?Object.assign(Object.assign({},e),{[t]:this[t.toLowerCase()]}):e),{}))).forEach((([e,t])=>{this.roomUrl.searchParams.has(e)||this.roomUrl.searchParams.set(e,t)})),this.html`
12
+ let Mn;kn.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,En.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 s={id:this.nextTaskId++,task:e,name:t,enqueuedAt:Date.now(),executedAt:void 0,completed:!1,resolve:e=>{if(s.completed)return;s.completed=!0,this.pendingTasks.delete(s.id),En.debug(`resolving task [name:${s.name}]`),r(e);const[t]=this.pendingTasks.values();t&&!t.executedAt&&this.execute(t)},reject:e=>{if(!s.completed&&(s.completed=!0,this.pendingTasks.delete(s.id),En.debug(`rejecting task [name:${s.name}]: %s`,String(e)),i(e),!this.stopping)){const[e]=this.pendingTasks.values();e&&!e.executedAt&&this.execute(e)}}};this.pendingTasks.set(s.id,s),1===this.pendingTasks.size&&this.execute(s)}))}stop(){En.debug("stop()"),this.stopping=!0;for(const e of this.pendingTasks.values())En.debug(`stop() | stopping task [name:${e.name}]`),e.reject(new On);this.stopping=!1}remove(e){En.debug(`remove() [taskIdx:${e}]`);const t=Array.from(this.pendingTasks.values())[e];t?t.reject(new xn):En.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(En.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 jn="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:Zi):e=>(Mn||(Mn=Promise.resolve())).then(e).catch((e=>setTimeout((()=>{throw e}),0))),Ln={};Object.defineProperty(Ln,"__esModule",{value:!0}),Ln.Producer=void 0;const An=gs,Nn=As,Bn=new ps.Logger("Producer");class Fn extends An.EnhancedEventEmitter{constructor({id:e,localId:t,rtpSender:r,track:i,rtpParameters:s,stopTracks:n,disableTrackOnPause:a,zeroRtpOnPause:o,appData:c}){super(),this._closed=!1,this._observer=new An.EnhancedEventEmitter,Bn.debug("constructor()"),this._id=e,this._localId=t,this._rtpSender=r,this._track=i,this._kind=i.kind,this._rtpParameters=s,this._paused=!!a&&!i.enabled,this._maxSpatialLayer=void 0,this._stopTracks=n,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||(Bn.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Bn.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new Nn.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){Bn.debug("pause()"),this._closed?Bn.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(){Bn.debug("resume()"),this._closed?Bn.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(Bn.debug("replaceTrack() [track:%o]",e),this._closed){if(e&&this._stopTracks)try{e.stop()}catch(e){}throw new Nn.InvalidStateError("closed")}if(e&&"ended"===e.readyState)throw new Nn.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()):Bn.debug("replaceTrack() | same track, ignored")}async setMaxSpatialLayer(e){if(this._closed)throw new Nn.InvalidStateError("closed");if("video"!==this._kind)throw new Nn.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 Nn.InvalidStateError("closed");if("object"!=typeof e)throw new TypeError("invalid params");await new Promise(((t,r)=>{this.safeEmit("@setrtpencodingparameters",e,t,r)}))}onTrackEnded(){Bn.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){}}}Ln.Producer=Fn;var $n={};Object.defineProperty($n,"__esModule",{value:!0}),$n.Consumer=void 0;const Vn=gs,Un=As,zn=new ps.Logger("Consumer");class qn extends Vn.EnhancedEventEmitter{constructor({id:e,localId:t,producerId:r,rtpReceiver:i,track:s,rtpParameters:n,appData:a}){super(),this._closed=!1,this._observer=new Vn.EnhancedEventEmitter,zn.debug("constructor()"),this._id=e,this._localId=t,this._producerId=r,this._rtpReceiver=i,this._track=s,this._rtpParameters=n,this._paused=!s.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||(zn.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(zn.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new Un.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){zn.debug("pause()"),this._closed?zn.error("pause() | Consumer closed"):this._paused?zn.debug("pause() | Consumer is already paused"):(this._paused=!0,this._track.enabled=!1,this.emit("@pause"),this._observer.safeEmit("pause"))}resume(){zn.debug("resume()"),this._closed?zn.error("resume() | Consumer closed"):this._paused?(this._paused=!1,this._track.enabled=!0,this.emit("@resume"),this._observer.safeEmit("resume")):zn.debug("resume() | Consumer is already resumed")}onTrackEnded(){zn.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){}}}$n.Consumer=qn;var Gn={};Object.defineProperty(Gn,"__esModule",{value:!0}),Gn.DataProducer=void 0;const Wn=gs,Hn=As,Kn=new ps.Logger("DataProducer");class Jn extends Wn.EnhancedEventEmitter{constructor({id:e,dataChannel:t,sctpStreamParameters:r,appData:i}){super(),this._closed=!1,this._observer=new Wn.EnhancedEventEmitter,Kn.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||(Kn.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Kn.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}send(e){if(Kn.debug("send()"),this._closed)throw new Hn.InvalidStateError("closed");this._dataChannel.send(e)}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(Kn.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?Kn.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):Kn.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(Kn.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(()=>{this._closed||Kn.warn('DataChannel "message" event in a DataProducer, message discarded')})),this._dataChannel.addEventListener("bufferedamountlow",(()=>{this._closed||this.safeEmit("bufferedamountlow")}))}}Gn.DataProducer=Jn;var Qn={};Object.defineProperty(Qn,"__esModule",{value:!0}),Qn.DataConsumer=void 0;const Zn=gs,Yn=new ps.Logger("DataConsumer");class Xn extends Zn.EnhancedEventEmitter{constructor({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:i,appData:s}){super(),this._closed=!1,this._observer=new Zn.EnhancedEventEmitter,Yn.debug("constructor()"),this._id=e,this._dataProducerId=t,this._dataChannel=r,this._sctpStreamParameters=i,this._appData=s||{},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||(Yn.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Yn.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(Yn.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?Yn.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):Yn.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(Yn.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)}))}}Qn.DataConsumer=Xn;var ea=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ta=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ra=Zi&&Zi.__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 ta(t,e),t},ia=Zi&&Zi.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Tn,"__esModule",{value:!0}),Tn.Transport=void 0;const sa=kn,na=ia(jn),aa=ps,oa=gs,ca=As,da=ra(Fs),la=ra($s),pa=Ln,ua=$n,ha=Gn,ma=Qn,fa=new aa.Logger("Transport");class ga{constructor(e){this.consumerOptions=e,this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}let va=class extends oa.EnhancedEventEmitter{constructor({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,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 sa.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 oa.EnhancedEventEmitter,fa.debug("constructor() [id:%s, direction:%s]",t,e),this._id=t,this._direction=e,this._extendedRtpCapabilities=u,this._canProduceByKind=h,this._maxSctpMessageSize=n?n.maxMessageSize:null;const m=da.clone(c)||{};delete m.iceServers,delete m.iceTransportPolicy,delete m.bundlePolicy,delete m.rtcpMuxPolicy,delete m.sdpSemantics,this._handler=p(),this._handler.run({direction:e,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,iceServers:a,iceTransportPolicy:o,additionalSettings:m,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){fa.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 ca.InvalidStateError("closed");return this._handler.getTransportStats()}async restartIce({iceParameters:e}){if(fa.debug("restartIce()"),this._closed)throw new ca.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(fa.debug("updateIceServers()"),this._closed)throw new ca.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:s=!0,disableTrackOnPause:n=!0,zeroRtpOnPause:a=!1,onRtpSender:o,appData:c={}}={}){if(fa.debug("produce() [track:%o]",e),this._closed)throw new ca.InvalidStateError("closed");if(!e)throw new TypeError("missing track");if("send"!==this._direction)throw new ca.UnsupportedError("not a sending Transport");if(!this._canProduceByKind[e.kind])throw new ca.UnsupportedError(`cannot produce ${e.kind}`);if("ended"===e.readyState)throw new ca.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(c&&"object"!=typeof c)throw new TypeError("if given, appData must be an object");return this._awaitQueue.push((async()=>{let d;if(t&&!Array.isArray(t))throw TypeError("encodings must be an array");t&&0===t.length?d=void 0:t&&(d=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:l,rtpParameters:p,rtpSender:u}=await this._handler.send({track:e,encodings:d,codecOptions:r,codec:i,onRtpSender:o});try{la.validateRtpParameters(p);const{id:t}=await new Promise(((t,r)=>{this.safeEmit("produce",{kind:e.kind,rtpParameters:p,appData:c},t,r)})),r=new pa.Producer({id:t,localId:l,rtpSender:u,track:e,rtpParameters:p,stopTracks:s,disableTrackOnPause:n,zeroRtpOnPause:a,appData:c});return this._producers.set(r.id,r),this.handleProducer(r),this._observer.safeEmit("newproducer",r),r}catch(e){throw this._handler.stopSending(l).catch((()=>{})),e}}),"transport.produce()").catch((t=>{if(s)try{e.stop()}catch(e){}throw t}))}async consume({id:e,producerId:t,kind:r,rtpParameters:i,streamId:s,onRtpReceiver:n,appData:a={}}){if(fa.debug("consume()"),this._closed)throw new ca.InvalidStateError("closed");if("recv"!==this._direction)throw new ca.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(a&&"object"!=typeof a)throw new TypeError("if given, appData must be an object");const o=da.clone(i);if(!la.canReceive(o,this._extendedRtpCapabilities))throw new ca.UnsupportedError("cannot consume this Producer");const c=new ga({id:e,producerId:t,kind:r,rtpParameters:o,streamId:s,onRtpReceiver:n,appData:a});return this._pendingConsumerTasks.push(c),(0,na.default)((()=>{this._closed||!1===this._consumerCreationInProgress&&this.createPendingConsumers()})),c.promise}async produceData({ordered:e=!0,maxPacketLifeTime:t,maxRetransmits:r,label:i="",protocol:s="",appData:n={}}={}){if(fa.debug("produceData()"),this._closed)throw new ca.InvalidStateError("closed");if("send"!==this._direction)throw new ca.UnsupportedError("not a sending Transport");if(!this._maxSctpMessageSize)throw new ca.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(n&&"object"!=typeof n)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:s});la.validateSctpStreamParameters(o);const{id:c}=await new Promise(((e,t)=>{this.safeEmit("producedata",{sctpStreamParameters:o,label:i,protocol:s,appData:n},e,t)})),d=new ha.DataProducer({id:c,dataChannel:a,sctpStreamParameters:o,appData:n});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:s="",appData:n={}}){if(fa.debug("consumeData()"),this._closed)throw new ca.InvalidStateError("closed");if("recv"!==this._direction)throw new ca.UnsupportedError("not a receiving Transport");if(!this._maxSctpMessageSize)throw new ca.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(n&&"object"!=typeof n)throw new TypeError("if given, appData must be an object");const a=da.clone(r);return la.validateSctpStreamParameters(a),this._awaitQueue.push((async()=>{const{dataChannel:r}=await this._handler.receiveDataChannel({sctpStreamParameters:a,label:i,protocol:s}),o=new ma.DataConsumer({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:a,appData:n});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 fa.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:s,streamId:n,onRtpReceiver:a}=t.consumerOptions;r.push({trackId:e,kind:i,rtpParameters:s,streamId:n,onRtpReceiver:a})}try{const i=await this._handler.receive(r);for(let r=0;r<i.length;++r){const s=e[r],n=i[r],{id:a,producerId:o,kind:c,rtpParameters:d,appData:l}=s.consumerOptions,{localId:p,rtpReceiver:u,track:h}=n,m=new ua.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),s.resolve(m)}}catch(t){for(const r of e)r.reject(t)}if(t)try{const e=la.generateProbatorRtpParameters(t.rtpParameters);await this._handler.receive([{trackId:"probator",kind:"video",rtpParameters:e}]),fa.debug("createPendingConsumers() | Consumer for RTP probation created"),this._probatorConsumerCreated=!0}catch(e){fa.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 fa.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){fa.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 fa.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){fa.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 fa.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){fa.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",(({dtlsParameters:e},t,r)=>{this._closed?r(new ca.InvalidStateError("closed")):this.safeEmit("connect",{dtlsParameters:e},t,r)})),e.on("@icegatheringstatechange",(e=>{e!==this._iceGatheringState&&(fa.debug("ICE gathering state changed to %s",e),this._iceGatheringState=e,this._closed||this.safeEmit("icegatheringstatechange",e))})),e.on("@connectionstatechange",(e=>{e!==this._connectionState&&(fa.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=>fa.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 ca.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,na.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,na.default)((()=>{this._closed||!1===this._consumerResumeInProgress&&this.resumePendingConsumers()}))})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new ca.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)}))}};Tn.Transport=va;var _a={},ba={},ya={},Sa={exports:{}},wa=Sa.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(wa).forEach((function(e){wa[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))}));var Ca=Sa.exports;!function(e){var t=function(e){return String(Number(e))===e?Number(e):e},r=function(e,r,i){var s=e.name&&e.names;e.push&&!r[e.push]?r[e.push]=[]:s&&!r[e.name]&&(r[e.name]={});var n=e.push?{}:s?r[e.name]:r;!function(e,r,i,s){if(s&&!i)r[s]=t(e[1]);else for(var n=0;n<i.length;n+=1)null!=e[n+1]&&(r[i[n]]=t(e[n+1]))}(i.match(e.reg),n,e.names,e.name),e.push&&r[e.push].push(n)},i=Ca,s=RegExp.prototype.test.bind(/^([a-z])=(.*)/);e.parse=function(e){var t={},n=[],a=t;return e.split(/(\r\n|\r|\n)/).filter(s).forEach((function(e){var t=e[0],s=e.slice(2);"m"===t&&(n.push({rtp:[],fmtp:[]}),a=n[n.length-1]);for(var o=0;o<(i[t]||[]).length;o+=1){var c=i[t][o];if(c.reg.test(s))return r(c,a,s)}})),t.media=n,t};var n=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(n,{})},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),s=0;s<i.length;s+=3)r.push({component:i[s],ip:i[s+1],port:i[s+2]});return r},e.parseImageAttributes=function(e){return e.split(" ").map((function(e){return e.substring(1,e.length-1).split(",").reduce(n,{})}))},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}}))}))}}(ya);var Ra=Ca,Ta=/%[sdv%]/g,ka=function(e){var t=1,r=arguments,i=r.length;return e.replace(Ta,(function(e){if(t>=i)return e;var s=r[t];switch(t+=1,e){case"%%":return"%";case"%s":return String(s);case"%d":return Number(s);case"%v":return""}}))},Pa=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 s=0;s<t.names.length;s+=1){var n=t.names[s];t.name?i.push(r[t.name][n]):i.push(r[t.names[s]])}else i.push(r[t.name]);return ka.apply(null,i)},Da=["v","o","s","i","u","e","p","c","b","t","r","z","a"],Ia=["i","c","b","a"],Ea=ya,Oa=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||Da,i=t.innerOrder||Ia,s=[];return r.forEach((function(t){Ra[t].forEach((function(r){r.name in e&&null!=e[r.name]?s.push(Pa(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){s.push(Pa(t,r,e))}))}))})),e.media.forEach((function(e){s.push(Pa("m",Ra.m[0],e)),i.forEach((function(t){Ra[t].forEach((function(r){r.name in e&&null!=e[r.name]?s.push(Pa(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){s.push(Pa(t,r,e))}))}))}))})),s.join("\r\n")+"\r\n"},xa=ba.write=Oa,Ma=ba.parse=Ea.parse;ba.parseParams=Ea.parseParams,ba.parseFmtpConfig=Ea.parseFmtpConfig,ba.parsePayloads=Ea.parsePayloads,ba.parseRemoteCandidates=Ea.parseRemoteCandidates,ba.parseImageAttributes=Ea.parseImageAttributes,ba.parseSimulcastStreamList=Ea.parseSimulcastStreamList;var ja={},La=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Aa=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Na=Zi&&Zi.__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)&&La(t,e,r);return Aa(t,e),t};Object.defineProperty(ja,"__esModule",{value:!0}),ja.extractRtpCapabilities=function({sdpObject:e}){const t=new Map,r=[];let i=!1,s=!1;for(const n of e.media){const e=n.type;switch(e){case"audio":if(i)continue;i=!0;break;case"video":if(s)continue;s=!0;break;default:continue}for(const r of n.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 n.fmtp||[]){const r=Ba.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 n.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 n.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}},ja.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}]}},ja.getCname=function({offerMediaObject:e}){const t=(e.ssrcs||[]).find((e=>"cname"===e.attribute));if(!t)return"";return t.value},ja.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 s=Ba.parseParams(i.config);switch(e){case"audio/opus":{const e=r.parameters["sprop-stereo"];void 0!==e&&(s.stereo=e?1:0);break}}i.config="";for(const e of Object.keys(s))i.config&&(i.config+=";"),i.config+=`${e}=${s[e]}`}};const Ba=Na(ba);var Fa={};Object.defineProperty(Fa,"__esModule",{value:!0}),Fa.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,s]=i.ssrcs.split(/\s+/);e=Number(e),s=Number(s),t.has(e)&&(t.delete(e),t.delete(s),r.set(e,s))}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},Fa.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,s]=r.value.split(" "),n=r.id;let a;(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===n&&(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(n+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} ${s}`})}for(let t=0;t<l.length;++t){const r=d[t],n=l[t];e.ssrcs.push({id:n,attribute:"cname",value:c}),e.ssrcs.push({id:n,attribute:"msid",value:`${i} ${s}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${r} ${n}`})}};var $a={};Object.defineProperty($a,"__esModule",{value:!0}),$a.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 Va={};Object.defineProperty(Va,"__esModule",{value:!0}),Va.HandlerInterface=void 0;const Ua=gs;class za extends Ua.EnhancedEventEmitter{constructor(){super()}}Va.HandlerInterface=za;var qa={},Ga={},Wa=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ha=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ka=Zi&&Zi.__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 Ha(t,e),t};Object.defineProperty(Ga,"__esModule",{value:!0}),Ga.OfferMediaSection=Ga.AnswerMediaSection=Ga.MediaSection=void 0;const Ja=Ka(ba),Qa=Ka(Fs);class Za{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}}Ga.MediaSection=Za;Ga.AnswerMediaSection=class extends Za{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:s,planB:n=!1,offerMediaObject:a,offerRtpParameters:o,answerRtpParameters:c,codecOptions:d,extmapAllowMixed:l=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:n}),this._mediaObject.mid=String(a.mid),this._mediaObject.type=a.type,this._mediaObject.protocol=a.protocol,s?(this._mediaObject.connection={ip:s.ip,version:s.ipVersion},this._mediaObject.port=s.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:Ya(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r=Qa.clone(e.parameters)??{};let i=Qa.clone(e.rtcpFeedback)??[];if(d){const{opusStereo:t,opusFec:s,opusDtx:n,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!==s&&(f.parameters.useinbandfec=s?1:0,r.useinbandfec=s?1:0),void 0!==n&&(f.parameters.usedtx=n?1:0,r.usedtx=n?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 s={payload:e.payloadType,config:""};for(const e of Object.keys(r))s.config&&(s.config+=";"),s.config+=`${e}=${r[e]}`;s.config&&this._mediaObject.fmtp.push(s);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=Ja.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 Ya(e){const t=new RegExp("^(audio|video)/(.+)","i").exec(e.mimeType);if(!t)throw new TypeError("invalid codec.mimeType");return t[2]}Ga.OfferMediaSection=class extends Za{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:s,planB:n=!1,mid:a,kind:o,offerRtpParameters:c,streamId:d,trackId:l,oldDataChannelSpec:p=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:n}),this._mediaObject.mid=String(a),this._mediaObject.type=o,s?(this._mediaObject.connection={ip:s.ip,version:s.ipVersion},this._mediaObject.protocol="RTP/AVP",this._mediaObject.port=s.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:Ya(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],s=i.ssrc,n=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:Ya(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:s,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:s,attribute:"msid",value:`${t||"-"} ${r}`}),n&&(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}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${s} ${n}`}))}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 Xa=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),eo=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),to=Zi&&Zi.__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)&&Xa(t,e,r);return eo(t,e),t};Object.defineProperty(qa,"__esModule",{value:!0}),qa.RemoteSdp=void 0;const ro=to(ba),io=Ga,so=new ps.Logger("RemoteSdp");qa.RemoteSdp=class{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:s,planB:n=!1}){if(this._mediaSections=[],this._midToIndex=new Map,this._iceParameters=e,this._iceCandidates=t,this._dtlsParameters=r,this._sctpParameters=i,this._plainRtpParameters=s,this._planB=n,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:""}]}s&&(this._sdpObject.origin.address=s.ip,this._sdpObject.origin.ipVer=s.ipVersion)}updateIceParameters(e){so.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){so.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:s,extmapAllowMixed:n=!1}){const a=new io.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,offerMediaObject:e,offerRtpParameters:r,answerRtpParameters:i,codecOptions:s,extmapAllowMixed:n});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:s}){const n=this._midToIndex.get(e);let a;if(void 0!==n&&(a=this._mediaSections[n]),a)a.planBReceive({offerRtpParameters:r,streamId:i,trackId:s}),this._replaceMediaSection(a);else{a=new io.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:s});const n=this._mediaSections.find((e=>e.closed));n?this._replaceMediaSection(a,n.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?(so.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 io.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 io.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++,ro.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 no={};Object.defineProperty(no,"__esModule",{value:!0}),no.parse=function(e){const t=ao.exec(e||"");return t?{spatialLayers:Number(t[1]),temporalLayers:Number(t[2])}:{spatialLayers:1,temporalLayers:1}};const ao=new RegExp("^[LS]([1-9]\\d{0,1})T([1-9]\\d{0,1})");var oo=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),co=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),lo=Zi&&Zi.__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)&&oo(t,e,r);return co(t,e),t};Object.defineProperty(_a,"__esModule",{value:!0});var po=_a.Chrome111=void 0;const uo=lo(ba),ho=ps,mo=lo(Fs),fo=lo($s),go=lo(ja),vo=lo(Fa),_o=lo($a),bo=As,yo=Va,So=qa,wo=no,Co=new ho.Logger("Chrome111"),Ro={OS:1024,MIS:1024};class To extends yo.HandlerInterface{static createFactory(){return()=>new To}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(Co.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Co.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=uo.parse(t.sdp),i=go.extractRtpCapabilities({sdpObject:r});return _o.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Co.debug("getNativeSctpCapabilities()"),{numStreams:Ro}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Co.debug("run()"),this._direction=e,this._remoteSdp=new So.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:fo.getSendingRtpParameters("audio",d),video:fo.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:fo.getSendingRemoteRtpParameters("audio",d),video:fo.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],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)})):(Co.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(),Co.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Co.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Co.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Co.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Co.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Co.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,onRtpSender:s}){if(this.assertNotClosed(),this.assertSendDirection(),Co.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1){let e=1;for(const r of t){const t=r.scalabilityMode?(0,wo.parse)(r.scalabilityMode).temporalLayers:3;t>e&&(e=t)}t.forEach(((t,r)=>{t.rid=`r${r}`,t.scalabilityMode=`L1T${e}`}))}const n=mo.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=fo.reduceCodecs(n.codecs,i);const a=mo.clone(this._sendingRemoteRtpParametersByKind[e.kind]);a.codecs=fo.reduceCodecs(a.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),c=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});s&&s(c.sender);const d=await this._pc.createOffer();let l=uo.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l}),Co.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const p=c.mid;n.mid=p,l=uo.parse(this._pc.localDescription.sdp);const u=l.media[o.idx];if(n.rtcp.cname=go.getCname({offerMediaObject:u}),t)if(1===t.length){const e=vo.getRtpEncodings({offerMediaObject:u});Object.assign(e[0],t[0]),n.encodings=e}else n.encodings=t;else n.encodings=vo.getRtpEncodings({offerMediaObject:u});this._remoteSdp.send({offerMediaObject:u,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:a,codecOptions:r,extmapAllowMixed:!0});const h={type:"answer",sdp:this._remoteSdp.getSdp()};return Co.debug("send() | calling pc.setRemoteDescription() [answer:%o]",h),await this._pc.setRemoteDescription(h),this._mapMidTransceiver.set(p,c),{localId:p,rtpParameters:n,rtpSender:c.sender}}async stopSending(e){if(this.assertSendDirection(),Co.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();Co.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Co.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Co.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();Co.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Co.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Co.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();Co.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Co.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Co.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Co.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(),Co.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 s=await this._pc.createOffer();Co.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Co.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Co.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 s=await this._pc.createOffer();Co.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Co.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}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:s}){this.assertNotClosed(),this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};Co.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ro.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=uo.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Co.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()};Co.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s,streamId:n}=t;Co.debug("receive() [trackId:%s, kind:%s]",e,i);const a=s.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:s,streamId:n||s.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Co.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);for(const t of e){const{trackId:e,onRtpReceiver:i}=t;if(i){const t=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===t));if(!s)throw new Error("transceiver not found");i(s.receiver)}}let s=await this._pc.createAnswer();const n=uo.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,s=r.get(e),a=n.media.find((e=>String(e.mid)===s));go.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:uo.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Co.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Co.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()};Co.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Co.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){Co.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()};Co.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Co.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){Co.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()};Co.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Co.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:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};Co.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()};Co.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=uo.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Co.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=uo.parse(this._pc.localDescription.sdp));const r=go.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new bo.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=_a.Chrome111=To;var ko={},Po=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Do=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Io=Zi&&Zi.__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 Do(t,e),t};Object.defineProperty(ko,"__esModule",{value:!0}),ko.Chrome74=void 0;const Eo=Io(ba),Oo=ps,xo=Io(Fs),Mo=Io($s),jo=Io(ja),Lo=Io(Fa),Ao=Io($a),No=As,Bo=Va,Fo=qa,$o=no,Vo=new Oo.Logger("Chrome74"),Uo={OS:1024,MIS:1024};class zo extends Bo.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"Chrome74"}close(){if(Vo.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Vo.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=jo.extractRtpCapabilities({sdpObject:r});return Ao.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Vo.debug("getNativeSctpCapabilities()"),{numStreams:Uo}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Vo.debug("run()"),this._direction=e,this._remoteSdp=new Fo.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Mo.getSendingRtpParameters("audio",d),video:Mo.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Mo.getSendingRemoteRtpParameters("audio",d),video:Mo.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],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)})):(Vo.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(),Vo.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Vo.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Vo.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Vo.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Vo.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Vo.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(),Vo.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const s=xo.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=Mo.reduceCodecs(s.codecs,i);const n=xo.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=Mo.reduceCodecs(n.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,$o.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&(Vo.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)}),Vo.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const h=o.mid;if(s.mid=h,l=Eo.parse(this._pc.localDescription.sdp),c=l.media[a.idx],s.rtcp.cname=jo.getCname({offerMediaObject:c}),t)if(1===t.length){let e=Lo.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),p&&(e=[e[0]]),s.encodings=e}else s.encodings=t;else s.encodings=Lo.getRtpEncodings({offerMediaObject:c});if(s.encodings.length>1&&("video/vp8"===s.codecs[0].mimeType.toLowerCase()||"video/h264"===s.codecs[0].mimeType.toLowerCase()))for(const e of s.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${u.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:s,answerRtpParameters:n,codecOptions:r,extmapAllowMixed:!0});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return Vo.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:s,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),Vo.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();Vo.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Vo.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Vo.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();Vo.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Vo.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Vo.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();Vo.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Vo.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Vo.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Vo.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(),Vo.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 s=await this._pc.createOffer();Vo.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Vo.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Vo.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 s=await this._pc.createOffer();Vo.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Vo.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}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:s}){this.assertNotClosed(),this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};Vo.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Uo.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}),Vo.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()};Vo.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s,streamId:n}=t;Vo.debug("receive() [trackId:%s, kind:%s]",e,i);const a=s.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:s,streamId:n||s.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Vo.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=Eo.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,s=r.get(e),a=n.media.find((e=>String(e.mid)===s));jo.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:Eo.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Vo.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Vo.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()};Vo.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Vo.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){Vo.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()};Vo.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Vo.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){Vo.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()};Vo.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Vo.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:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};Vo.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()};Vo.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})}Vo.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=jo.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},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')}}ko.Chrome74=zo;var qo={},Go=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Wo=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ho=Zi&&Zi.__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 Wo(t,e),t};Object.defineProperty(qo,"__esModule",{value:!0}),qo.Chrome70=void 0;const Ko=Ho(ba),Jo=ps,Qo=Ho(Fs),Zo=Ho($s),Yo=Ho(ja),Xo=Ho(Fa),ec=Va,tc=qa,rc=no,ic=new Jo.Logger("Chrome70"),sc={OS:1024,MIS:1024};class nc extends ec.HandlerInterface{static createFactory(){return()=>new nc}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(ic.debug("close()"),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:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=Ko.parse(t.sdp);return Yo.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return ic.debug("getNativeSctpCapabilities()"),{numStreams:sc}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){ic.debug("run()"),this._direction=e,this._remoteSdp=new tc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),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:n||[],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(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);const s=Qo.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=Zo.reduceCodecs(s.codecs,i);const n=Qo.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=Zo.reduceCodecs(n.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=Ko.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l}),t&&t.length>1&&(ic.debug("send() | enabling legacy simulcast"),l=Ko.parse(d.sdp),c=l.media[a.idx],Xo.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:Ko.write(l)});let p=!1;const u=(0,rc.parse)((t||[{}])[0].scalabilityMode);if(t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&(ic.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=Ko.parse(d.sdp),c=l.media[a.idx],Xo.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:Ko.write(l)}),ic.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d),t){ic.debug("send() | applying given encodings");const e=o.sender.getParameters();for(let r=0;r<(e.encodings||[]).length;++r){const i=e.encodings[r],s=t[r];if(!s)break;e.encodings[r]=Object.assign(i,s)}await o.sender.setParameters(e)}const h=o.mid;if(s.mid=h,l=Ko.parse(this._pc.localDescription.sdp),c=l.media[a.idx],s.rtcp.cname=Yo.getCname({offerMediaObject:c}),s.encodings=Xo.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<s.encodings.length;++e)t[e]&&Object.assign(s.encodings[e],t[e]);if(p&&(s.encodings=[s.encodings[0]]),s.encodings.length>1&&("video/vp8"===s.codecs[0].mimeType.toLowerCase()||"video/h264"===s.codecs[0].mimeType.toLowerCase()))for(const e of s.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:s,answerRtpParameters:n,codecOptions:r});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return ic.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:s,rtpSender:o.sender}}async stopSending(e){this.assertSendDirection(),ic.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();ic.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};ic.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?ic.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):ic.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(),ic.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 s=await this._pc.createOffer();ic.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};ic.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),ic.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 s=await this._pc.createOffer();ic.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};ic.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}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:s}){this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};ic.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%sc.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:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s,streamId:n}=t;ic.debug("receive() [trackId:%s, kind:%s]",e,i);const a=s.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:s,streamId:n||s.rtcp.cname,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 s=await this._pc.createAnswer();const n=Ko.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,s=r.get(e),a=n.media.find((e=>String(e.mid)===s));Yo.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:Ko.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),ic.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){ic.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()};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);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:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmitTime:n,maxRetransmits:a,protocol:r};ic.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()};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=Yo.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},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.Chrome70=nc;var ac={},oc={};Object.defineProperty(oc,"__esModule",{value:!0}),oc.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,s]=t.ssrcs.split(/\s+/);e=Number(e),s=Number(s),r.has(e)&&(r.delete(e),r.delete(s),i.set(e,s))}for(const e of r)i.set(e,null);const s=[];for(const[e,t]of i){const r={ssrc:e};t&&(r.rtx={ssrc:t}),s.push(r)}return s},oc.addLegacySimulcast=function({offerMediaObject:e,track:t,numStreams:r}){if(r<=1)throw new TypeError("numStreams must be greater than 1");let i,s,n;if(!(e.ssrcs||[]).find((e=>{if("msid"!==e.attribute)return!1;return e.value.split(" ")[1]===t.id&&(i=e.id,n=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&&(s=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),s&&d.push(s+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:`${n} ${t.id}`})}for(let r=0;r<d.length;++r){const i=c[r],s=d[r];e.ssrcs.push({id:s,attribute:"cname",value:o}),e.ssrcs.push({id:s,attribute:"msid",value:`${n} ${t.id}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${i} ${s}`})}};var cc=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),dc=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),lc=Zi&&Zi.__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)&&cc(t,e,r);return dc(t,e),t};Object.defineProperty(ac,"__esModule",{value:!0}),ac.Chrome67=void 0;const pc=lc(ba),uc=ps,hc=lc(Fs),mc=lc($s),fc=lc(ja),gc=lc(oc),vc=Va,_c=qa,bc=new uc.Logger("Chrome67"),yc={OS:1024,MIS:1024};class Sc extends vc.HandlerInterface{static createFactory(){return()=>new Sc}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(bc.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){bc.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=pc.parse(t.sdp);return fc.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return bc.debug("getNativeSctpCapabilities()"),{numStreams:yc}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){bc.debug("run()"),this._direction=e,this._remoteSdp=new _c.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:mc.getSendingRtpParameters("audio",d),video:mc.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:mc.getSendingRemoteRtpParameters("audio",d),video:mc.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],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(bc.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){bc.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(bc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});bc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};bc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};bc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();bc.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(),bc.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&bc.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let s,n=await this._pc.createOffer(),a=pc.parse(n.sdp);const o=hc.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=mc.reduceCodecs(o.codecs);const c=hc.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=mc.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(bc.debug("send() | enabling simulcast"),a=pc.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),gc.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:pc.write(a)}),bc.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=pc.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=fc.getCname({offerMediaObject:s}),o.encodings=gc.getRtpEncodings({offerMediaObject:s,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:s,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};bc.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(),bc.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();bc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void bc.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()};bc.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?bc.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):bc.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(),bc.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(),bc.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:s}){this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};bc.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%yc.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=pc.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),bc.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()};bc.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:s}=t;bc.debug("receive() [trackId:%s, kind:%s]",e,r);const n=r;this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};bc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const s=pc.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));fc.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}i={type:"answer",sdp:pc.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),bc.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:s}=r,n=i,a=e,o=this._pc.getReceivers().find((e=>e.track&&e.track.id===n));if(!o)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(n,{mid:a,rtpParameters:s,rtpReceiver:o}),t.push({localId:n,track:o.track,rtpReceiver:o})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){bc.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()};bc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();bc.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:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmitTime:n,maxRetransmits:a,protocol:r};bc.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()};bc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=pc.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}bc.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=pc.parse(this._pc.localDescription.sdp));const r=fc.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},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')}}ac.Chrome67=Sc;var wc={},Cc=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Rc=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Tc=Zi&&Zi.__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)&&Cc(t,e,r);return Rc(t,e),t};Object.defineProperty(wc,"__esModule",{value:!0}),wc.Chrome55=void 0;const kc=Tc(ba),Pc=ps,Dc=As,Ic=Tc(Fs),Ec=Tc($s),Oc=Tc(ja),xc=Tc(oc),Mc=Va,jc=qa,Lc=new Pc.Logger("Chrome55"),Ac={OS:1024,MIS:1024};class Nc extends Mc.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"Chrome55"}close(){if(Lc.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){Lc.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=kc.parse(t.sdp);return Oc.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Lc.debug("getNativeSctpCapabilities()"),{numStreams:Ac}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Lc.debug("run()"),this._direction=e,this._remoteSdp=new jc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:Ec.getSendingRtpParameters("audio",d),video:Ec.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Ec.getSendingRemoteRtpParameters("audio",d),video:Ec.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],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(Lc.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){Lc.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Lc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Lc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Lc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Lc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Lc.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(),Lc.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Lc.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let s,n=await this._pc.createOffer(),a=kc.parse(n.sdp);const o=Ic.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=Ec.reduceCodecs(o.codecs);const c=Ic.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=Ec.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(Lc.debug("send() | enabling simulcast"),a=kc.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),xc.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:kc.write(a)}),Lc.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=kc.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=Oc.getCname({offerMediaObject:s}),o.encodings=xc.getRtpEncodings({offerMediaObject:s,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:s,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};Lc.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(),Lc.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();Lc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Lc.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()};Lc.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 Dc.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new Dc.UnsupportedError(" not implemented")}async setRtpEncodingParameters(e,t){throw new Dc.UnsupportedError("not supported")}async getSenderStats(e){throw new Dc.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};Lc.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ac.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=kc.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Lc.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()};Lc.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:s}=t;Lc.debug("receive() [trackId:%s, kind:%s]",e,r);const n=r;this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};Lc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const s=kc.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));Oc.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}i={type:"answer",sdp:kc.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Lc.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:s}=r,n=e,a=i,o=r.streamId||s.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:n,rtpParameters:s}),t.push({localId:a,track:c})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){Lc.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()};Lc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Lc.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new Dc.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmitTime:n,maxRetransmits:a,protocol:r};Lc.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()};Lc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=kc.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Lc.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=kc.parse(this._pc.localDescription.sdp));const r=Oc.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},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')}}wc.Chrome55=Nc;var Bc={},Fc=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),$c=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Vc=Zi&&Zi.__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)&&Fc(t,e,r);return $c(t,e),t};Object.defineProperty(Bc,"__esModule",{value:!0}),Bc.Firefox120=void 0;const Uc=Vc(ba),zc=ps,qc=As,Gc=Vc(Fs),Wc=Vc($s),Hc=Vc(ja),Kc=Vc(Fa),Jc=Va,Qc=qa,Zc=no,Yc=new zc.Logger("Firefox120"),Xc={OS:16,MIS:2048};class ed extends Jc.HandlerInterface{static createFactory(){return()=>new ed}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"Firefox120"}close(){if(Yc.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Yc.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"}),e.addTransceiver(r,{direction:"sendrecv",sendEncodings:[{rid:"r0",maxBitrate:1e5},{rid:"r1",maxBitrate:5e5}]});const i=await e.createOffer();try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}const s=Uc.parse(i.sdp);return Hc.extractRtpCapabilities({sdpObject:s})}catch(i){try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}throw i}}async getNativeSctpCapabilities(){return Yc.debug("getNativeSctpCapabilities()"),{numStreams:Xc}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Yc.debug("run()"),this._direction=e,this._remoteSdp=new Qc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Wc.getSendingRtpParameters("audio",d),video:Wc.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Wc.getSendingRemoteRtpParameters("audio",d),video:Wc.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection({iceServers:n||[],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(Yc.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 qc.UnsupportedError("not supported")}async restartIce(e){if(this.assertNotClosed(),Yc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Yc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Yc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Yc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Yc.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,onRtpSender:s}){this.assertNotClosed(),this.assertSendDirection(),Yc.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=Gc.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=Wc.reduceCodecs(n.codecs,i);const a=Gc.clone(this._sendingRemoteRtpParametersByKind[e.kind]);a.codecs=Wc.reduceCodecs(a.codecs,i);const o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});s&&s(o.sender);const c=await this._pc.createOffer();let d=Uc.parse(c.sdp);this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:d});const l=(0,Zc.parse)((t||[{}])[0].scalabilityMode);Yc.debug("send() | calling pc.setLocalDescription() [offer:%o]",c),await this._pc.setLocalDescription(c);const p=o.mid;n.mid=p,d=Uc.parse(this._pc.localDescription.sdp);const u=d.media[d.media.length-1];if(n.rtcp.cname=Hc.getCname({offerMediaObject:u}),t)if(1===t.length){const e=Kc.getRtpEncodings({offerMediaObject:u});Object.assign(e[0],t[0]),n.encodings=e}else n.encodings=t;else n.encodings=Kc.getRtpEncodings({offerMediaObject:u});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${l.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:u,offerRtpParameters:n,answerRtpParameters:a,codecOptions:r,extmapAllowMixed:!0});const h={type:"answer",sdp:this._remoteSdp.getSdp()};return Yc.debug("send() | calling pc.setRemoteDescription() [answer:%o]",h),await this._pc.setRemoteDescription(h),this._mapMidTransceiver.set(p,o),{localId:p,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),Yc.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();Yc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Yc.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Yc.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();Yc.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Yc.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Yc.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();Yc.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Yc.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Yc.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Yc.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(),Yc.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();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const s=await this._pc.createOffer();Yc.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Yc.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Yc.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 s=await this._pc.createOffer();Yc.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Yc.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}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:s}){this.assertNotClosed(),this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};Yc.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Xc.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Uc.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:t}),Yc.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()};Yc.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s,streamId:n}=t;Yc.debug("receive() [trackId:%s, kind:%s]",e,i);const a=s.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:s,streamId:n||s.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Yc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);for(const t of e){const{trackId:e,onRtpReceiver:i}=t;if(i){const t=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===t));if(!s)throw new Error("transceiver not found");i(s.receiver)}}let s=await this._pc.createAnswer();const n=Uc.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,a=r.get(e),o=n.media.find((e=>String(e.mid)===a));Hc.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o}),s={type:"answer",sdp:Uc.write(n)}}this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:n}),Yc.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Yc.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()};Yc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Yc.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){Yc.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()};Yc.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Yc.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){Yc.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()};Yc.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Yc.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:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};Yc.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()};Yc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Uc.parse(t.sdp);await this.setupTransport({localDtlsRole:"client",localSdpObject:e})}Yc.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=Uc.parse(this._pc.localDescription.sdp));const r=Hc.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new qc.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')}}Bc.Firefox120=ed;var td={},rd=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),id=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),sd=Zi&&Zi.__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)&&rd(t,e,r);return id(t,e),t};Object.defineProperty(td,"__esModule",{value:!0}),td.Firefox60=void 0;const nd=sd(ba),ad=ps,od=As,cd=sd(Fs),dd=sd($s),ld=sd(ja),pd=sd(Fa),ud=Va,hd=qa,md=no,fd=new ad.Logger("Firefox60"),gd={OS:16,MIS:2048};class vd extends ud.HandlerInterface{static createFactory(){return()=>new vd}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(fd.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){fd.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"}),s=i.sender.getParameters(),n=[{rid:"r0",maxBitrate:1e5},{rid:"r1",maxBitrate:5e5}];s.encodings=n,await i.sender.setParameters(s);const a=await e.createOffer();try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}const o=nd.parse(a.sdp);return ld.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 fd.debug("getNativeSctpCapabilities()"),{numStreams:gd}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),fd.debug("run()"),this._direction=e,this._remoteSdp=new hd.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:dd.getSendingRtpParameters("audio",d),video:dd.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:dd.getSendingRemoteRtpParameters("audio",d),video:dd.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection({iceServers:n||[],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(fd.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 od.UnsupportedError("not supported")}async restartIce(e){if(this.assertNotClosed(),fd.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});fd.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};fd.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};fd.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();fd.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(),fd.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&(t=cd.clone(t)).length>1&&(t.forEach(((e,t)=>{e.rid=`r${t}`})),t.reverse());const s=cd.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=dd.reduceCodecs(s.codecs,i);const n=cd.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=dd.reduceCodecs(n.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=nd.parse(o.sdp);this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:c});const d=(0,md.parse)((t||[{}])[0].scalabilityMode);fd.debug("send() | calling pc.setLocalDescription() [offer:%o]",o),await this._pc.setLocalDescription(o);const l=a.mid;s.mid=l,c=nd.parse(this._pc.localDescription.sdp);const p=c.media[c.media.length-1];if(s.rtcp.cname=ld.getCname({offerMediaObject:p}),t)if(1===t.length){const e=pd.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),s.encodings=e}else s.encodings=t.reverse();else s.encodings=pd.getRtpEncodings({offerMediaObject:p});if(s.encodings.length>1&&("video/vp8"===s.codecs[0].mimeType.toLowerCase()||"video/h264"===s.codecs[0].mimeType.toLowerCase()))for(const e of s.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${d.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:p,offerRtpParameters:s,answerRtpParameters:n,codecOptions:r,extmapAllowMixed:!0});const u={type:"answer",sdp:this._remoteSdp.getSdp()};return fd.debug("send() | calling pc.setRemoteDescription() [answer:%o]",u),await this._pc.setRemoteDescription(u),this._mapMidTransceiver.set(l,a),{localId:l,rtpParameters:s,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),fd.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();fd.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};fd.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),fd.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();fd.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};fd.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),fd.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();fd.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};fd.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?fd.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):fd.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(),fd.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 s=await this._pc.createOffer();fd.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};fd.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),fd.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 s=await this._pc.createOffer();fd.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};fd.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}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:s}){this.assertNotClosed(),this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};fd.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%gd.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=nd.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:t}),fd.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()};fd.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s,streamId:n}=t;fd.debug("receive() [trackId:%s, kind:%s]",e,i);const a=s.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:s,streamId:n||s.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};fd.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=nd.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,a=r.get(e),o=n.media.find((e=>String(e.mid)===a));ld.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o}),s={type:"answer",sdp:nd.write(n)}}this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:n}),fd.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){fd.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()};fd.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();fd.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){fd.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()};fd.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();fd.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){fd.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()};fd.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();fd.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:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};fd.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()};fd.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=nd.parse(t.sdp);await this.setupTransport({localDtlsRole:"client",localSdpObject:e})}fd.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=nd.parse(this._pc.localDescription.sdp));const r=ld.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new od.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')}}td.Firefox60=vd;var _d={},bd=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),yd=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Sd=Zi&&Zi.__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)&&bd(t,e,r);return yd(t,e),t};Object.defineProperty(_d,"__esModule",{value:!0}),_d.Safari12=void 0;const wd=Sd(ba),Cd=ps,Rd=Sd(Fs),Td=Sd($s),kd=Sd(ja),Pd=Sd(Fa),Dd=Sd($a),Id=As,Ed=Va,Od=qa,xd=no,Md=new Cd.Logger("Safari12"),jd={OS:1024,MIS:1024};class Ld extends Ed.HandlerInterface{static createFactory(){return()=>new Ld}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(Md.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Md.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=wd.parse(t.sdp),i=kd.extractRtpCapabilities({sdpObject:r});return Dd.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Md.debug("getNativeSctpCapabilities()"),{numStreams:jd}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Md.debug("run()"),this._direction=e,this._remoteSdp=new Od.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Td.getSendingRtpParameters("audio",d),video:Td.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Td.getSendingRemoteRtpParameters("audio",d),video:Td.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],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(Md.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(),Md.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Md.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Md.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Md.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Md.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Md.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,onRtpSender:s}){this.assertNotClosed(),this.assertSendDirection(),Md.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const n=Rd.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=Td.reduceCodecs(n.codecs,i);const a=Rd.clone(this._sendingRemoteRtpParametersByKind[e.kind]);a.codecs=Td.reduceCodecs(a.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),c=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});s&&s(c.sender);let d,l=await this._pc.createOffer(),p=wd.parse(l.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:p});const u=(0,xd.parse)((t||[{}])[0].scalabilityMode);t&&t.length>1&&(Md.debug("send() | enabling legacy simulcast"),p=wd.parse(l.sdp),d=p.media[o.idx],Pd.addLegacySimulcast({offerMediaObject:d,numStreams:t.length}),l={type:"offer",sdp:wd.write(p)}),Md.debug("send() | calling pc.setLocalDescription() [offer:%o]",l),await this._pc.setLocalDescription(l);const h=c.mid;if(n.mid=h,p=wd.parse(this._pc.localDescription.sdp),d=p.media[o.idx],n.rtcp.cname=kd.getCname({offerMediaObject:d}),n.encodings=Pd.getRtpEncodings({offerMediaObject:d}),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${u.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:d,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:a,codecOptions:r});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return Md.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(h,c),{localId:h,rtpParameters:n,rtpSender:c.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;Md.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();Md.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Md.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Md.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();Md.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Md.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Md.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();Md.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Md.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Md.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Md.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(),Md.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 s=await this._pc.createOffer();Md.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Md.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Md.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 s=await this._pc.createOffer();Md.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Md.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}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:s}){this.assertNotClosed(),this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};Md.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%jd.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=wd.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Md.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()};Md.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s,streamId:n}=t;Md.debug("receive() [trackId:%s, kind:%s]",e,i);const a=s.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:s,streamId:n||s.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Md.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);for(const t of e){const{trackId:e,onRtpReceiver:i}=t;if(i){const t=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===t));if(!s)throw new Error("transceiver not found");i(s.receiver)}}let s=await this._pc.createAnswer();const n=wd.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,s=r.get(e),a=n.media.find((e=>String(e.mid)===s));kd.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:wd.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Md.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Md.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()};Md.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Md.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){Md.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()};Md.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Md.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){Md.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()};Md.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Md.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:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};Md.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()};Md.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=wd.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Md.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=wd.parse(this._pc.localDescription.sdp));const r=kd.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Id.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')}}_d.Safari12=Ld;var Ad={},Nd=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Bd=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Fd=Zi&&Zi.__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)&&Nd(t,e,r);return Bd(t,e),t};Object.defineProperty(Ad,"__esModule",{value:!0}),Ad.Safari11=void 0;const $d=Fd(ba),Vd=ps,Ud=Fd(Fs),zd=Fd($s),qd=Fd(ja),Gd=Fd(oc),Wd=Va,Hd=qa,Kd=new Vd.Logger("Safari11"),Jd={OS:1024,MIS:1024};class Qd extends Wd.HandlerInterface{static createFactory(){return()=>new Qd}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(Kd.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){Kd.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=$d.parse(t.sdp);return qd.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Kd.debug("getNativeSctpCapabilities()"),{numStreams:Jd}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Kd.debug("run()"),this._direction=e,this._remoteSdp=new Hd.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:zd.getSendingRtpParameters("audio",d),video:zd.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:zd.getSendingRemoteRtpParameters("audio",d),video:zd.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],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(Kd.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){Kd.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Kd.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Kd.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Kd.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Kd.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Kd.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(),Kd.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Kd.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let s,n=await this._pc.createOffer(),a=$d.parse(n.sdp);const o=Ud.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=zd.reduceCodecs(o.codecs);const c=Ud.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=zd.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(Kd.debug("send() | enabling simulcast"),a=$d.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),Gd.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:$d.write(a)}),Kd.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=$d.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=qd.getCname({offerMediaObject:s}),o.encodings=Gd.getRtpEncodings({offerMediaObject:s,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:s,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};Kd.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();Kd.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Kd.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()};Kd.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?Kd.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Kd.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(),Kd.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(),Kd.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:s}){this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};Kd.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Jd.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=$d.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Kd.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()};Kd.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:s}=t;Kd.debug("receive() [trackId:%s, kind:%s]",e,r);const n=r;this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};Kd.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const s=$d.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));qd.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}i={type:"answer",sdp:$d.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Kd.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:s}=r,n=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:n,rtpParameters:s,rtpReceiver:o}),t.push({localId:a,track:o.track,rtpReceiver:o})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){Kd.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()};Kd.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Kd.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:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};Kd.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()};Kd.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=$d.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Kd.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=$d.parse(this._pc.localDescription.sdp));const r=qd.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},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')}}Ad.Safari11=Qd;var Zd={},Yd={},Xd=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),el=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),tl=Zi&&Zi.__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)&&Xd(t,e,r);return el(t,e),t};Object.defineProperty(Yd,"__esModule",{value:!0}),Yd.getCapabilities=function(){const e=RTCRtpReceiver.getCapabilities(),t=rl.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},Yd.mangleRtpParameters=function(e){const t=rl.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};const rl=tl(Fs);var il=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),sl=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),nl=Zi&&Zi.__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 sl(t,e),t};Object.defineProperty(Zd,"__esModule",{value:!0}),Zd.Edge11=void 0;const al=ps,ol=As,cl=nl(Fs),dl=nl($s),ll=nl(Yd),pl=Va,ul=new al.Logger("Edge11");class hl extends pl.HandlerInterface{static createFactory(){return()=>new hl}constructor(){super(),this._rtpSenders=new Map,this._rtpReceivers=new Map,this._nextSendLocalId=0,this._transportReady=!1}get name(){return"Edge11"}close(){ul.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 ul.debug("getNativeRtpCapabilities()"),ll.getCapabilities()}async getNativeSctpCapabilities(){return ul.debug("getNativeSctpCapabilities()"),{numStreams:{OS:0,MIS:0}}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){ul.debug("run()"),this._sendingRtpParametersByKind={audio:dl.getSendingRtpParameters("audio",d),video:dl.getSendingRtpParameters("video",d)},this._remoteIceParameters=t,this._remoteIceCandidates=r,this._remoteDtlsParameters=i,this._cname=`CNAME-${cl.generateRandomNumber()}`,this.setIceGatherer({iceServers:n,iceTransportPolicy:a}),this.setIceTransport(),this.setDtlsTransport()}async updateIceServers(e){throw new ol.UnsupportedError("not supported")}async restartIce(e){if(ul.debug("restartIce()"),this._remoteIceParameters=e,this._transportReady){ul.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}){ul.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),this._transportReady||await this.setupTransport({localDtlsRole:"server"}),ul.debug("send() | calling new RTCRtpSender()");const s=new RTCRtpSender(e,this._dtlsTransport),n=cl.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=dl.reduceCodecs(n.codecs,i);const a=n.codecs.some((e=>/.+\/rtx$/i.test(e.mimeType)));t||(t=[{}]);for(const e of t)e.ssrc=cl.generateRandomNumber(),a&&(e.rtx={ssrc:cl.generateRandomNumber()});n.encodings=t,n.rtcp={cname:this._cname,reducedSize:!0,mux:!0};const o=ll.mangleRtpParameters(n);ul.debug("send() | calling rtpSender.send() [params:%o]",o),await s.send(o);const c=String(this._nextSendLocalId);return this._nextSendLocalId++,this._rtpSenders.set(c,s),{localId:c,rtpParameters:n,rtpSender:s}}async stopSending(e){ul.debug("stopSending() [localId:%s]",e);const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");this._rtpSenders.delete(e);try{ul.debug("stopSending() | calling rtpSender.stop()"),t.stop()}catch(e){throw ul.warn("stopSending() | rtpSender.stop() failed:%o",e),e}}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){t?ul.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):ul.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){ul.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){ul.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 ol.UnsupportedError("not implemented")}async receive(e){const t=[];for(const t of e){const{trackId:e,kind:r}=t;ul.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:s}=r;ul.debug("receive() | calling new RTCRtpReceiver()");const n=new RTCRtpReceiver(this._dtlsTransport,i);n.addEventListener("error",(e=>{ul.error('rtpReceiver "error" event [event:%o]',e)}));const a=ll.mangleRtpParameters(s);ul.debug("receive() | calling rtpReceiver.receive() [params:%o]",a),await n.receive(a);const o=e;this._rtpReceivers.set(o,n),t.push({localId:o,track:n.track,rtpReceiver:n})}return t}async stopReceiving(e){for(const t of e){ul.debug("stopReceiving() [localId:%s]",t);const e=this._rtpReceivers.get(t);if(!e)throw new Error("RTCRtpReceiver not found");this._rtpReceivers.delete(t);try{ul.debug("stopReceiving() | calling rtpReceiver.stop()"),e.stop()}catch(e){ul.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 ol.UnsupportedError("not implemented")}setIceGatherer({iceServers:e,iceTransportPolicy:t}){const r=new RTCIceGatherer({iceServers:e||[],gatherPolicy:t||"all"});r.addEventListener("error",(e=>{ul.error('iceGatherer "error" event [event:%o]',e)}));try{r.gather()}catch(e){ul.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=>{ul.debug('iceTransport "candidatepairchange" event [pair:%o]',e.pair)})),this._iceTransport=e}setDtlsTransport(){const e=new RTCDtlsTransport(this._iceTransport);e.addEventListener("statechange",(()=>{ul.debug('dtlsTransport "statechange" event [state:%s]',e.state)})),e.addEventListener("dtlsstatechange",(()=>{ul.debug('dtlsTransport "dtlsstatechange" event [state:%s]',e.state),"closed"===e.state&&this.emit("@connectionstatechange","closed")})),e.addEventListener("error",(e=>{ul.error('dtlsTransport "error" event [event:%o]',e)})),this._dtlsTransport=e}async setupTransport({localDtlsRole:e}){ul.debug("setupTransport()");const t=this._dtlsTransport.getLocalParameters();t.role=e,await new Promise(((e,r)=>{this.safeEmit("@connect",{dtlsParameters:t},e,r)})),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}}Zd.Edge11=hl;var ml={},fl=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),gl=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),vl=Zi&&Zi.__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)&&fl(t,e,r);return gl(t,e),t};Object.defineProperty(ml,"__esModule",{value:!0}),ml.ReactNativeUnifiedPlan=void 0;const _l=vl(ba),bl=ps,yl=vl(Fs),Sl=vl($s),wl=vl(ja),Cl=vl(Fa),Rl=vl($a),Tl=As,kl=Va,Pl=qa,Dl=no,Il=new bl.Logger("ReactNativeUnifiedPlan"),El={OS:1024,MIS:1024};class Ol extends kl.HandlerInterface{static createFactory(){return()=>new Ol}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(Il.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(){Il.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=_l.parse(t.sdp),i=wl.extractRtpCapabilities({sdpObject:r});return Rl.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Il.debug("getNativeSctpCapabilities()"),{numStreams:El}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Il.debug("run()"),this._direction=e,this._remoteSdp=new Pl.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Sl.getSendingRtpParameters("audio",d),video:Sl.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Sl.getSendingRemoteRtpParameters("audio",d),video:Sl.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],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(Il.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(),Il.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Il.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Il.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Il.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Il.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Il.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,onRtpSender:s}){this.assertNotClosed(),this.assertSendDirection(),Il.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=yl.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=Sl.reduceCodecs(n.codecs,i);const a=yl.clone(this._sendingRemoteRtpParametersByKind[e.kind]);a.codecs=Sl.reduceCodecs(a.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),c=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});s&&s(c.sender);let d,l=await this._pc.createOffer(),p=_l.parse(l.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:p});let u=!1;const h=(0,Dl.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&h.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(Il.debug("send() | enabling legacy simulcast for VP9 SVC"),u=!0,p=_l.parse(l.sdp),d=p.media[o.idx],Cl.addLegacySimulcast({offerMediaObject:d,numStreams:h.spatialLayers}),l={type:"offer",sdp:_l.write(p)}),Il.debug("send() | calling pc.setLocalDescription() [offer:%o]",l),await this._pc.setLocalDescription(l);let m=c.mid??void 0;if(m||Il.warn("send() | missing transceiver.mid (bug in react-native-webrtc, using a workaround"),n.mid=m,p=_l.parse(this._pc.localDescription.sdp),d=p.media[o.idx],n.rtcp.cname=wl.getCname({offerMediaObject:d}),t)if(1===t.length){let e=Cl.getRtpEncodings({offerMediaObject:d});Object.assign(e[0],t[0]),u&&(e=[e[0]]),n.encodings=e}else n.encodings=t;else n.encodings=Cl.getRtpEncodings({offerMediaObject:d});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${h.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:d,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:a,codecOptions:r,extmapAllowMixed:!0});const f={type:"answer",sdp:this._remoteSdp.getSdp()};return Il.debug("send() | calling pc.setRemoteDescription() [answer:%o]",f),await this._pc.setRemoteDescription(f),m||(m=c.mid,n.mid=m),this._mapMidTransceiver.set(m,c),{localId:m,rtpParameters:n,rtpSender:c.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;Il.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();Il.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Il.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Il.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();Il.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Il.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Il.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();Il.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Il.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Il.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Il.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(),Il.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 s=await this._pc.createOffer();Il.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Il.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Il.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 s=await this._pc.createOffer();Il.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Il.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}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:s}){this.assertNotClosed(),this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};Il.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%El.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=_l.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Il.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()};Il.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s,streamId:n}=t;Il.debug("receive() [trackId:%s, kind:%s]",e,i);const a=s.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:s,streamId:n||s.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Il.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);for(const t of e){const{trackId:e,onRtpReceiver:i}=t;if(i){const t=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===t));if(!s)throw new Error("transceiver not found");i(s.receiver)}}let s=await this._pc.createAnswer();const n=_l.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,s=r.get(e),a=n.media.find((e=>String(e.mid)===s));wl.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:_l.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Il.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Il.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()};Il.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Il.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){Il.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()};Il.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Il.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){Il.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()};Il.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Il.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:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};Il.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()};Il.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=_l.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Il.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=_l.parse(this._pc.localDescription.sdp));const r=wl.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Tl.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')}}ml.ReactNativeUnifiedPlan=Ol;var xl={},Ml=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),jl=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ll=Zi&&Zi.__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)&&Ml(t,e,r);return jl(t,e),t};Object.defineProperty(xl,"__esModule",{value:!0}),xl.ReactNative=void 0;const Al=Ll(ba),Nl=ps,Bl=As,Fl=Ll(Fs),$l=Ll($s),Vl=Ll(ja),Ul=Ll(oc),zl=Va,ql=qa,Gl=new Nl.Logger("ReactNative"),Wl={OS:1024,MIS:1024};class Hl extends zl.HandlerInterface{static createFactory(){return()=>new Hl}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(Gl.debug("close()"),this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){Gl.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=Al.parse(t.sdp);return Vl.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Gl.debug("getNativeSctpCapabilities()"),{numStreams:Wl}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Gl.debug("run()"),this._direction=e,this._remoteSdp=new ql.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:$l.getSendingRtpParameters("audio",d),video:$l.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:$l.getSendingRemoteRtpParameters("audio",d),video:$l.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],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(Gl.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){Gl.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Gl.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Gl.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Gl.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Gl.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Gl.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(),Gl.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Gl.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let s,n=await this._pc.createOffer(),a=Al.parse(n.sdp);const o=Fl.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=$l.reduceCodecs(o.codecs);const c=Fl.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=$l.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(Gl.debug("send() | enabling simulcast"),a=Al.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),Ul.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:Al.write(a)}),Gl.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=Al.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=Vl.getCname({offerMediaObject:s}),o.encodings=Ul.getRtpEncodings({offerMediaObject:s,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:s,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};Gl.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(),Gl.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();Gl.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Gl.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()};Gl.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 Bl.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new Bl.UnsupportedError("not implemented")}async setRtpEncodingParameters(e,t){throw new Bl.UnsupportedError("not implemented")}async getSenderStats(e){throw new Bl.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};Gl.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Wl.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Al.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Gl.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()};Gl.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s}=t;Gl.debug("receive() [trackId:%s, kind:%s]",e,i);const n=i;let a=t.streamId||s.rtcp.cname;Gl.debug("receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc"),a+=`-hack-${Fl.generateRandomNumber()}`,r.set(e,a),this._remoteSdp.receive({mid:n,kind:i,offerRtpParameters:s,streamId:a,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Gl.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=Al.parse(s.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));Vl.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}s={type:"answer",sdp:Al.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Gl.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{kind:e,trackId:s,rtpParameters:n}=i,a=s,o=e,c=r.get(s),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:n}),t.push({localId:a,track:d})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){Gl.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()};Gl.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Gl.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new Bl.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmitTime:n,maxRetransmits:a,protocol:r};Gl.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()};Gl.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Al.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Gl.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=Al.parse(this._pc.localDescription.sdp));const r=Vl.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},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')}}xl.ReactNative=Hl;var Kl=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Jl=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ql=Zi&&Zi.__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)&&Kl(t,e,r);return Jl(t,e),t};Object.defineProperty(cs,"__esModule",{value:!0}),cs.Device=void 0,cs.detectDevice=vp;const Zl=ls,Yl=ps,Xl=gs,ep=As,tp=Ql(Fs),rp=Ql($s),ip=Tn,sp=_a,np=ko,ap=qo,op=ac,cp=wc,dp=Bc,lp=td,pp=_d,up=Ad,hp=Zd,mp=ml,fp=xl,gp=new Yl.Logger("Device");function vp(){if("object"==typeof navigator&&"ReactNative"===navigator.product)return gp.debug("detectDevice() | React-Native detected"),"undefined"==typeof RTCPeerConnection?void gp.warn("detectDevice() | unsupported react-native-webrtc without RTCPeerConnection, forgot to call registerGlobals()?"):"undefined"!=typeof RTCRtpTransceiver?(gp.debug("detectDevice() | ReactNative UnifiedPlan handler chosen"),"ReactNativeUnifiedPlan"):(gp.debug("detectDevice() | ReactNative PlanB handler chosen"),"ReactNative");if("object"!=typeof navigator||"string"!=typeof navigator.userAgent)gp.warn("detectDevice() | unknown device");else{const e=navigator.userAgent,t=new Zl.UAParser(e);gp.debug("detectDevice() | browser detected [ua:%s, parsed:%o]",e,t.getResult());const r=t.getBrowser(),i=r.name?.toLowerCase(),s=parseInt(r.major??"0"),n=t.getEngine(),a=n.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&&s>=111)return"Chrome111";if(h&&!u&&s>=74||g&&!u&&s>=88)return"Chrome74";if(h&&!u&&s>=70)return"Chrome70";if(h&&!u&&s>=67)return"Chrome67";if(h&&!u&&s>=55)return"Chrome55";if(m&&!u&&s>=120)return"Firefox120";if(m&&!u&&s>=60)return"Firefox60";if(m&&u&&d>=14.3)return"Safari12";if(f&&s>=12&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if(f&&s>=11)return"Safari11";if(g&&!u&&s>=11&&s<=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"}gp.warn("detectDevice() | browser not supported [name:%s, version:%s]",i,s)}}cs.Device=class{constructor({handlerName:e,handlerFactory:t,Handler:r}={}){if(this._loaded=!1,this._observer=new Xl.EnhancedEventEmitter,gp.debug("constructor()"),r){if(gp.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)gp.debug("constructor() | handler given: %s",e);else{if(!(e=vp()))throw new ep.UnsupportedError("device not supported");gp.debug("constructor() | detected handler: %s",e)}switch(e){case"Chrome111":this._handlerFactory=sp.Chrome111.createFactory();break;case"Chrome74":this._handlerFactory=np.Chrome74.createFactory();break;case"Chrome70":this._handlerFactory=ap.Chrome70.createFactory();break;case"Chrome67":this._handlerFactory=op.Chrome67.createFactory();break;case"Chrome55":this._handlerFactory=cp.Chrome55.createFactory();break;case"Firefox120":this._handlerFactory=dp.Firefox120.createFactory();break;case"Firefox60":this._handlerFactory=lp.Firefox60.createFactory();break;case"Safari12":this._handlerFactory=pp.Safari12.createFactory();break;case"Safari11":this._handlerFactory=up.Safari11.createFactory();break;case"Edge11":this._handlerFactory=hp.Edge11.createFactory();break;case"ReactNativeUnifiedPlan":this._handlerFactory=mp.ReactNativeUnifiedPlan.createFactory();break;case"ReactNative":this._handlerFactory=fp.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 ep.InvalidStateError("not loaded");return this._recvRtpCapabilities}get sctpCapabilities(){if(!this._loaded)throw new ep.InvalidStateError("not loaded");return this._sctpCapabilities}get observer(){return this._observer}async load({routerRtpCapabilities:e}){let t;gp.debug("load() [routerRtpCapabilities:%o]",e);try{if(this._loaded)throw new ep.InvalidStateError("already loaded");const r=tp.clone(e);rp.validateRtpCapabilities(r),t=this._handlerFactory();const i=await t.getNativeRtpCapabilities();gp.debug("load() | got native RTP capabilities:%o",i);const s=tp.clone(i);rp.validateRtpCapabilities(s),this._extendedRtpCapabilities=rp.getExtendedRtpCapabilities(s,r),gp.debug("load() | got extended RTP capabilities:%o",this._extendedRtpCapabilities),this._canProduceByKind.audio=rp.canSend("audio",this._extendedRtpCapabilities),this._canProduceByKind.video=rp.canSend("video",this._extendedRtpCapabilities),this._recvRtpCapabilities=rp.getRecvRtpCapabilities(this._extendedRtpCapabilities),rp.validateRtpCapabilities(this._recvRtpCapabilities),gp.debug("load() | got receiving RTP capabilities:%o",this._recvRtpCapabilities),this._sctpCapabilities=await t.getNativeSctpCapabilities(),gp.debug("load() | got native SCTP capabilities:%o",this._sctpCapabilities),rp.validateSctpCapabilities(this._sctpCapabilities),gp.debug("load() succeeded"),this._loaded=!0,t.close()}catch(e){throw t&&t.close(),e}}canProduce(e){if(!this._loaded)throw new ep.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:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d}){return gp.debug("createSendTransport()"),this.createTransport({direction:"send",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}createRecvTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d}){return gp.debug("createRecvTransport()"),this.createTransport({direction:"recv",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}createTransport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:l}){if(!this._loaded)throw new ep.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 s)throw new TypeError("missing dtlsParameters");if(n&&"object"!=typeof n)throw new TypeError("wrong sctpParameters");if(l&&"object"!=typeof l)throw new TypeError("if given, appData must be an object");const p=new ip.Transport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,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 _p={},bp={};Object.defineProperty(bp,"__esModule",{value:!0});var yp={};Object.defineProperty(yp,"__esModule",{value:!0}),function(e){var t=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=Zi&&Zi.__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(cs,e),r(Tn,e),r(Ln,e),r($n,e),r(Gn,e),r(Qn,e),r(bp,e),r(yp,e),r(Va,e),r(As,e)}(_p),function(e){var t=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=Zi&&Zi.__importStar||function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&t(i,e,s);return r(i,e),i},s=Zi&&Zi.__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 n=s(os);e.debug=n.default;const a=cs;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(_p);e.types=o,e.version="3.7.12";var c=no;Object.defineProperty(e,"parseScalabilityMode",{enumerable:!0,get:function(){return c.parse}})}(ts);let Sp=!0,wp=!0;function Cp(e,t,r){const i=e.match(t);return i&&i.length>=r&&parseInt(i[r],10)}function Rp(e,t,r){if(!e.RTCPeerConnection)return;const i=e.RTCPeerConnection.prototype,s=i.addEventListener;i.addEventListener=function(e,i){if(e!==t)return s.apply(this,arguments);const n=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,n),s.apply(this,[e,n])};const n=i.removeEventListener;i.removeEventListener=function(e,r){if(e!==t||!this._eventMap||!this._eventMap[t])return n.apply(this,arguments);if(!this._eventMap[t].has(r))return n.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,n.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 Tp(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(Sp=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function kp(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(wp=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function Pp(){if("object"==typeof window){if(Sp)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function Dp(e,t){wp&&console.warn(e+" is deprecated, please use "+t+" instead.")}function Ip(e){return"[object Object]"===Object.prototype.toString.call(e)}function Ep(e){return Ip(e)?Object.keys(e).reduce((function(t,r){const i=Ip(e[r]),s=i?Ep(e[r]):e[r],n=i&&!Object.keys(s).length;return void 0===s||n?t:Object.assign(t,{[r]:s})}),{}):e}function Op(e,t,r){t&&!r.has(t.id)&&(r.set(t.id,t),Object.keys(t).forEach((i=>{i.endsWith("Id")?Op(e,e.get(t[i]),r):i.endsWith("Ids")&&t[i].forEach((t=>{Op(e,e.get(t),r)}))})))}function xp(e,t,r){const i=r?"outbound-rtp":"inbound-rtp",s=new Map;if(null===t)return s;const n=[];return e.forEach((e=>{"track"===e.type&&e.trackIdentifier===t.id&&n.push(e)})),n.forEach((t=>{e.forEach((r=>{r.type===i&&r.trackId===t.id&&Op(e,r,s)}))})),s}const Mp=Pp;function jp(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 s=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[s("min",r)]=i.ideal,t.optional.push(e),e={},e[s("max",r)]=i.ideal,t.optional.push(e)):(e[s("",r)]=i.ideal,t.optional.push(e))}void 0!==i.exact&&"number"!=typeof i.exact?(t.mandatory=t.mandatory||{},t.mandatory[s("",r)]=i.exact):["min","max"].forEach((e=>{void 0!==i[e]&&(t.mandatory=t.mandatory||{},t.mandatory[s(e,r)]=i[e])}))})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},s=function(e,s){if(t.version>=61)return s(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 n=e.video.facingMode;n=n&&("object"==typeof n?n:{ideal:n});const a=t.version<66;if(n&&("user"===n.exact||"environment"===n.exact||"user"===n.ideal||"environment"===n.ideal)&&(!r.mediaDevices.getSupportedConstraints||!r.mediaDevices.getSupportedConstraints().facingMode||a)){let t;if(delete e.video.facingMode,"environment"===n.exact||"environment"===n.ideal?t=["back","rear"]:"user"!==n.exact&&"user"!==n.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=n.exact?{exact:a.deviceId}:{ideal:a.deviceId}),e.video=i(e.video),Mp("chrome: "+JSON.stringify(e)),s(e)}))}e.video=i(e.video)}return Mp("chrome: "+JSON.stringify(e)),s(e)},n=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){s(e,(e=>{r.webkitGetUserMedia(e,t,(e=>{i&&i(n(e))}))}))}.bind(r),r.mediaDevices.getUserMedia){const e=r.mediaDevices.getUserMedia.bind(r.mediaDevices);r.mediaDevices.getUserMedia=function(t){return s(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(n(e))))))}}}function Lp(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function Ap(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 s=new Event("track");s.track=r.track,s.receiver=i,s.transceiver={receiver:i},s.streams=[t.stream],this.dispatchEvent(s)})),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 s=new Event("track");s.track=r,s.receiver=i,s.transceiver={receiver:i},s.streams=[t.stream],this.dispatchEvent(s)}))},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else Rp(e,"track",(e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e)))}function Np(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 s=r.apply(this,arguments);return s||(s=t(this,e),this._senders.push(s)),s};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 Bp(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 s=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},n=function(e){return new Map(Object.keys(e).map((t=>[t,e[t]])))};if(arguments.length>=2){const i=function(e){r(n(s(e)))};return t.apply(this,[i,e])}return new Promise(((e,r)=>{t.apply(this,[function(t){e(n(s(t)))},r])})).then(r,i)}}function Fp(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=>xp(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}),Rp(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>xp(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 $p(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 s=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]})),s.apply(this,arguments)}}function Vp(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return $p(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 s=e.RTCPeerConnection.prototype.removeStream;function n(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const i=e._reverseStreams[t],s=e._streams[i.id];r=r.replace(new RegExp(s.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||{},s.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 s=this._streams[r.id];if(s)s.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=n(this,t);e[0].apply(null,[r])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):r.apply(this,arguments).then((e=>n(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],s=e._streams[i.id];r=r.replace(new RegExp(i.id,"g"),s.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:n(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 Up(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 zp(e,t){Rp(e,"negotiationneeded",(e=>{const r=e.target;if(!(t.version<72||r.getConfiguration&&"plan-b"===r.getConfiguration().sdpSemantics)||"stable"===r.signalingState)return e}))}var qp=Object.freeze({__proto__:null,fixNegotiationNeeded:zp,shimAddTrackRemoveTrack:Vp,shimAddTrackRemoveTrackWithNative:$p,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,s=r.video&&r.video.height,n=r.video&&r.video.frameRate;return r.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:n||3}},i&&(r.video.mandatory.maxWidth=i),s&&(r.video.mandatory.maxHeight=s),e.navigator.mediaDevices.getUserMedia(r)}))}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))},shimGetSendersWithDtmf:Np,shimGetStats:Bp,shimGetUserMedia:jp,shimMediaStream:Lp,shimOnTrack:Ap,shimPeerConnection:Up,shimSenderReceiverGetStats:Fp});function Gp(e,t){const r=e&&e.navigator,i=e&&e.MediaStreamTrack;if(r.getUserMedia=function(e,t,i){Dp("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 Wp(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 Hp(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,s,n]=arguments;return i.apply(this,[e||null]).then((e=>{if(t.version<53&&!s)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(s,n)}}function Kp(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 Jp(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}),Rp(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function Qp(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){Dp("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function Zp(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function Yp(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 Xp(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 eu(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 tu(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 ru=Object.freeze({__proto__:null,shimAddTransceiver:Yp,shimCreateAnswer:tu,shimCreateOffer:eu,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:Xp,shimGetUserMedia:Gp,shimOnTrack:Wp,shimPeerConnection:Hp,shimRTCDataChannel:Zp,shimReceiverGetStats:Jp,shimRemoveStream:Qp,shimSenderGetStats:Kp});function iu(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 su(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 nu(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype,r=t.createOffer,i=t.createAnswer,s=t.setLocalDescription,n=t.setRemoteDescription,a=t.addIceCandidate;t.createOffer=function(e,t){const i=arguments.length>=2?arguments[2]:arguments[0],s=r.apply(this,[i]);return t?(s.then(e,t),Promise.resolve()):s},t.createAnswer=function(e,t){const r=arguments.length>=2?arguments[2]:arguments[0],s=i.apply(this,[r]);return t?(s.then(e,t),Promise.resolve()):s};let o=function(e,t,r){const i=s.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i};t.setLocalDescription=o,o=function(e,t,r){const i=n.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 au(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(ou(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,r,i){t.mediaDevices.getUserMedia(e).then(r,i)}.bind(t))}function ou(e){return e&&void 0!==e.video?Object.assign({},e,{video:Ep(e.video)}):e}function cu(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?(Dp("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 du(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 lu(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 pu(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var uu=Object.freeze({__proto__:null,shimAudioContext:pu,shimCallbacksAPI:nu,shimConstraints:ou,shimCreateOfferLegacy:lu,shimGetUserMedia:au,shimLocalStreamsAPI:iu,shimRTCIceServerUrls:cu,shimRemoteStreamsAPI:su,shimTrackEventTransceiver:du}),hu={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],s=t.matchPrefix(e+r,"a=ice-pwd:")[0];return i&&s?{usernameFragment:i.substring(12),password:s.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 s=3;s<i.length;s++){const n=i[s],a=t.matchPrefix(e,"a=rtpmap:"+n+" ")[0];if(a){const i=t.parseRtpMap(a),s=t.matchPrefix(e,"a=fmtp:"+n+" ");switch(i.parameters=s.length?t.parseFmtp(s[0]):{},i.rtcpFeedback=t.matchPrefix(e,"a=rtcp-fb:"+n+" ").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 s=t.matchPrefix(e,"a=rtcp-fb:* ").map(t.parseRtcpFb);return r.codecs.forEach((e=>{s.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 s=0;return r.codecs.forEach((e=>{e.maxptime>s&&(s=e.maxptime)})),s>0&&(i+="a=maxptime:"+s+"\r\n"),r.headerExtensions&&r.headerExtensions.forEach((e=>{i+=t.writeExtmap(e)})),i},t.parseRtpEncodingParameters=function(e){const r=[],i=t.parseRtpParameters(e),s=-1!==i.fecMechanisms.indexOf("RED"),n=-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),s&&(t=JSON.parse(JSON.stringify(t)),t.fec={ssrc:o,mechanism:n?"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 s=t.matchPrefix(e,"a=rtcp-rsize");r.reducedSize=s.length>0,r.compound=0===s.length;const n=t.matchPrefix(e,"a=rtcp-mux");return r.mux=n.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 s=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"msid"===e.attribute));return s.length>0?(r=s[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 s;i.length>0&&(s=parseInt(i[0].substring(19),10)),isNaN(s)&&(s=65536);const n=t.matchPrefix(e,"a=sctp-port:");if(n.length>0)return{port:parseInt(n[0].substring(12),10),protocol:r.fmt,maxMessageSize:s};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:s}}},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 s;const n=void 0!==r?r:2;s=e||t.generateSessionId();return"v=0\r\no="+(i||"thisisadapterortc")+" "+s+" "+n+" 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}(hu);var mu=hu.exports,fu=Yi(mu),gu=e({__proto__:null,default:fu},[mu]);function vu(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=fu.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,Rp(e,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function _u(e){!e.RTCIceCandidate||e.RTCIceCandidate&&"relayProtocol"in e.RTCIceCandidate.prototype||Rp(e,"icecandidate",(e=>{if(e.candidate){const t=fu.parseCandidate(e.candidate.candidate);"relay"===t.type&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[t.priority>>24])}return e}))}function bu(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=fu.splitSections(e.sdp);return t.shift(),t.some((e=>{const t=fu.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 s=fu.matchPrefix(e.sdp,"a=max-message-size:");return s.length>0?i=parseInt(s[0].substring(19),10):"firefox"===t.browser&&-1!==r&&(i=2147483637),i}(arguments[0],e);let s;s=0===r&&0===i?Number.POSITIVE_INFINITY:0===r||0===i?Math.max(r,i):Math.min(r,i);const n={};Object.defineProperty(n,"maxMessageSize",{get:()=>s}),this._sctp=n}return r.apply(this,arguments)}}function yu(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],s=i.length||i.size||i.byteLength;if("open"===e.readyState&&t.sctp&&s>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},Rp(e,"datachannel",(e=>(t(e.channel,e.target),e)))}function Su(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 wu(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 Cu(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 Ru(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 Tu=Object.freeze({__proto__:null,removeExtmapAllowMixed:wu,shimAddIceCandidateNullOrEmpty:Cu,shimConnectionState:Su,shimMaxMessageSize:bu,shimParameterlessSetLocalDescription:Ru,shimRTCIceCandidate:vu,shimRTCIceCandidateRelayProtocol:_u,shimSendThrowTypeError:yu});const ku=function({window:e}={},t={shimChrome:!0,shimFirefox:!0,shimSafari:!0}){const r=Pp,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=Cp(r.userAgent,/Firefox\/(\d+)\./,1);else if(r.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection)t.browser="chrome",t.version=Cp(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=Cp(r.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),s={browserDetails:i,commonShim:Tu,extractVersion:Cp,disableLog:Tp,disableWarnings:kp,sdp:gu};switch(i.browser){case"chrome":if(!qp||!Up||!t.shimChrome)return r("Chrome shim is not included in this adapter release."),s;if(null===i.version)return r("Chrome shim can not determine version, not shimming."),s;r("adapter.js shimming chrome."),s.browserShim=qp,Cu(e,i),Ru(e),jp(e,i),Lp(e),Up(e,i),Ap(e),Vp(e,i),Np(e),Bp(e),Fp(e),zp(e,i),vu(e),_u(e),Su(e),bu(e,i),yu(e),wu(e,i);break;case"firefox":if(!ru||!Hp||!t.shimFirefox)return r("Firefox shim is not included in this adapter release."),s;r("adapter.js shimming firefox."),s.browserShim=ru,Cu(e,i),Ru(e),Gp(e,i),Hp(e,i),Wp(e),Qp(e),Kp(e),Jp(e),Zp(e),Yp(e),Xp(e),eu(e),tu(e),vu(e),Su(e),bu(e,i),yu(e);break;case"safari":if(!uu||!t.shimSafari)return r("Safari shim is not included in this adapter release."),s;r("adapter.js shimming safari."),s.browserShim=uu,Cu(e,i),Ru(e),cu(e),lu(e),nu(e),iu(e),su(e),du(e),au(e),pu(e),vu(e),_u(e),bu(e,i),yu(e),wu(e,i);break;default:r("Unsupported browser!")}return s}({window:"undefined"==typeof window?void 0:window});function Pu(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 Du=function(e,t,r){var i=0,s=!!window.mozRTCPeerConnection,n=!!window.RTCIceGatherer,a={};if(r.forEach((function(r){if(window[r+"RTCPeerConnection"]&&("webkit"!==r||!n)){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=s?"moz":n?"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(s){i[s]===e[r][s]&&delete t[r][s],(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(!n&&t)var u=window.setInterval((function(){"closed"!==d.signalingState?p():window.clearInterval(u)}),t);return n||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],s=i.getTracks().map((function(e){return e.kind+":"+e.id})).join(",");return e(t,this.__rtcStatsId,i.id+" "+s),r.apply(this,arguments)})})),["addTrack"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=arguments[0],s=[].slice.call(arguments,1);return e(t,this.__rtcStatsId,i.kind+":"+i.id+" "+(s.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,s=this.__rtcStatsId,n=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",s,r),!(n.length>0&&"function"==typeof n[0]))return r;n[0].apply(null,[r])}),(function(r){if(e(t+"OnFailure",s,r.toString()),!(n.length>1&&"function"==typeof n[1]))throw r;n[1].apply(null,[r])}))})})),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=this.__rtcStatsId,s=arguments;return e(t,this.__rtcStatsId,s[0]),r.apply(this,[s[0]]).then((function(){e(t+"OnSuccess",i,void 0),s.length>=2&&"function"==typeof s[1]&&s[1].apply(null,[])}),(function(r){if(e(t+"OnFailure",i,r.toString()),!(s.length>=3&&"function"==typeof s[2]))throw r;s[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,Pu(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,Pu(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,Pu(t)),t}),(function(t){return e("navigator.mediaDevices.getDisplayMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}return{resetDelta(){a={}}}},Iu=Yi(Du);let Eu;const Ou=new Uint8Array(16);function xu(){if(!Eu&&(Eu="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Eu))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Eu(Ou)}const Mu=[];for(let jS=0;jS<256;++jS)Mu.push((jS+256).toString(16).slice(1));var ju={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Lu(e,t,r){if(ju.randomUUID&&!t&&!e)return ju.randomUUID();const i=(e=e||{}).random||(e.rng||xu)();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 Mu[e[t+0]]+Mu[e[t+1]]+Mu[e[t+2]]+Mu[e[t+3]]+"-"+Mu[e[t+4]]+Mu[e[t+5]]+"-"+Mu[e[t+6]]+Mu[e[t+7]]+"-"+Mu[e[t+8]]+Mu[e[t+9]]+"-"+Mu[e[t+10]]+Mu[e[t+11]]+Mu[e[t+12]]+Mu[e[t+13]]+Mu[e[t+14]]+Mu[e[t+15]]}(i)}var Au={},Nu={},Bu={};Object.defineProperty(Bu,"__esModule",{value:!0}),Bu.isCorrect=Bu.isInSubnet=void 0,Bu.isInSubnet=function(e){return!(this.subnetMask<e.subnetMask)&&this.mask(e.subnetMask)===e.mask()},Bu.isCorrect=function(e){return function(){return this.addressMinusSuffix===this.correctForm()&&(this.subnetMask===e&&!this.parsedSubnet||this.parsedSubnet===String(this.subnetMask))}};var Fu={};Object.defineProperty(Fu,"__esModule",{value:!0}),Fu.RE_SUBNET_STRING=Fu.RE_ADDRESS=Fu.GROUPS=Fu.BITS=void 0,Fu.BITS=32,Fu.GROUPS=4,Fu.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,Fu.RE_SUBNET_STRING=/\/\d{1,2}$/;var $u={};Object.defineProperty($u,"__esModule",{value:!0}),$u.AddressError=void 0;class Vu extends Error{constructor(e,t){super(e),this.name="AddressError",null!==t&&(this.parseMessage=t)}}$u.AddressError=Vu;var Uu={exports:{}};!function(e,t){(function(){var t;function r(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 i(){return new r(null)}var s="undefined"!=typeof navigator;s&&"Microsoft Internet Explorer"==navigator.appName?(r.prototype.am=function(e,t,r,i,s,n){for(var a=32767&t,o=t>>15;--n>=0;){var c=32767&this[e],d=this[e++]>>15,l=o*c+d*a;s=((c=a*c+((32767&l)<<15)+r[i]+(1073741823&s))>>>30)+(l>>>15)+o*d+(s>>>30),r[i++]=1073741823&c}return s},t=30):s&&"Netscape"!=navigator.appName?(r.prototype.am=function(e,t,r,i,s,n){for(;--n>=0;){var a=t*this[e++]+r[i]+s;s=Math.floor(a/67108864),r[i++]=67108863&a}return s},t=26):(r.prototype.am=function(e,t,r,i,s,n){for(var a=16383&t,o=t>>14;--n>=0;){var c=16383&this[e],d=this[e++]>>14,l=o*c+d*a;s=((c=a*c+((16383&l)<<14)+r[i]+s)>>28)+(l>>14)+o*d,r[i++]=268435455&c}return s},t=28),r.prototype.DB=t,r.prototype.DM=(1<<t)-1,r.prototype.DV=1<<t;r.prototype.FV=Math.pow(2,52),r.prototype.F1=52-t,r.prototype.F2=2*t-52;var n,a,o="0123456789abcdefghijklmnopqrstuvwxyz",c=new Array;for(n="0".charCodeAt(0),a=0;a<=9;++a)c[n++]=a;for(n="a".charCodeAt(0),a=10;a<36;++a)c[n++]=a;for(n="A".charCodeAt(0),a=10;a<36;++a)c[n++]=a;function d(e){return o.charAt(e)}function l(e,t){var r=c[e.charCodeAt(t)];return null==r?-1:r}function p(e){var t=i();return t.fromInt(e),t}function u(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 h(e){this.m=e}function m(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 f(e,t){return e&t}function g(e,t){return e|t}function v(e,t){return e^t}function _(e,t){return e&~t}function b(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 y(e){for(var t=0;0!=e;)e&=e-1,++t;return t}function S(){}function w(e){return e}function C(e){this.r2=i(),this.q3=i(),r.ONE.dlShiftTo(2*e.t,this.r2),this.mu=this.r2.divide(e),this.m=e}h.prototype.convert=function(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e},h.prototype.revert=function(e){return e},h.prototype.reduce=function(e){e.divRemTo(this.m,null,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)},m.prototype.convert=function(e){var t=i();return e.abs().dlShiftTo(this.m.t,t),t.divRemTo(this.m,null,t),e.s<0&&t.compareTo(r.ZERO)>0&&this.m.subTo(t,t),t},m.prototype.revert=function(e){var t=i();return e.copyTo(t),this.reduce(t),t},m.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)},m.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},m.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},r.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},r.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},r.prototype.fromString=function(e,t){var i;if(16==t)i=4;else if(8==t)i=3;else if(256==t)i=8;else if(2==t)i=1;else if(32==t)i=5;else{if(4!=t)return void this.fromRadix(e,t);i=2}this.t=0,this.s=0;for(var s=e.length,n=!1,a=0;--s>=0;){var o=8==i?255&e[s]:l(e,s);o<0?"-"==e.charAt(s)&&(n=!0):(n=!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(),n&&r.ZERO.subTo(this,this)},r.prototype.clamp=function(){for(var e=this.s&this.DM;this.t>0&&this[this.t-1]==e;)--this.t},r.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},r.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},r.prototype.lShiftTo=function(e,t){var r,i=e%this.DB,s=this.DB-i,n=(1<<s)-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]>>s|o,o=(this[r]&n)<<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()},r.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,s=this.DB-i,n=(1<<i)-1;t[0]=this[r]>>i;for(var a=r+1;a<this.t;++a)t[a-r-1]|=(this[a]&n)<<s,t[a-r]=this[a]>>i;i>0&&(t[this.t-r-1]|=(this.s&n)<<s),t.t=this.t-r,t.clamp()}},r.prototype.subTo=function(e,t){for(var r=0,i=0,s=Math.min(e.t,this.t);r<s;)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()},r.prototype.multiplyTo=function(e,t){var i=this.abs(),s=e.abs(),n=i.t;for(t.t=n+s.t;--n>=0;)t[n]=0;for(n=0;n<s.t;++n)t[n+i.t]=i.am(0,s[n],t,n,0,i.t);t.s=0,t.clamp(),this.s!=e.s&&r.ZERO.subTo(t,t)},r.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()},r.prototype.divRemTo=function(e,t,s){var n=e.abs();if(!(n.t<=0)){var a=this.abs();if(a.t<n.t)return null!=t&&t.fromInt(0),void(null!=s&&this.copyTo(s));null==s&&(s=i());var o=i(),c=this.s,d=e.s,l=this.DB-u(n[n.t-1]);l>0?(n.lShiftTo(l,o),a.lShiftTo(l,s)):(n.copyTo(o),a.copyTo(s));var p=o.t,h=o[p-1];if(0!=h){var m=h*(1<<this.F1)+(p>1?o[p-2]>>this.F2:0),f=this.FV/m,g=(1<<this.F1)/m,v=1<<this.F2,_=s.t,b=_-p,y=null==t?i():t;for(o.dlShiftTo(b,y),s.compareTo(y)>=0&&(s[s.t++]=1,s.subTo(y,s)),r.ONE.dlShiftTo(p,y),y.subTo(o,o);o.t<p;)o[o.t++]=0;for(;--b>=0;){var S=s[--_]==h?this.DM:Math.floor(s[_]*f+(s[_-1]+v)*g);if((s[_]+=o.am(0,S,s,b,0,p))<S)for(o.dlShiftTo(b,y),s.subTo(y,s);s[_]<--S;)s.subTo(y,s)}null!=t&&(s.drShiftTo(p,t),c!=d&&r.ZERO.subTo(t,t)),s.t=p,s.clamp(),l>0&&s.rShiftTo(l,s),c<0&&r.ZERO.subTo(s,s)}}},r.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},r.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},r.prototype.exp=function(e,t){if(e>4294967295||e<1)return r.ONE;var s=i(),n=i(),a=t.convert(this),o=u(e)-1;for(a.copyTo(s);--o>=0;)if(t.sqrTo(s,n),(e&1<<o)>0)t.mulTo(n,a,s);else{var c=s;s=n,n=c}return t.revert(s)},r.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,s=!1,n="",a=this.t,o=this.DB-a*this.DB%t;if(a-- >0)for(o<this.DB&&(r=this[a]>>o)>0&&(s=!0,n=d(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&&(s=!0),s&&(n+=d(r));return s?n:"0"},r.prototype.negate=function(){var e=i();return r.ZERO.subTo(this,e),e},r.prototype.abs=function(){return this.s<0?this.negate():this},r.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},r.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+u(this[this.t-1]^this.s&this.DM)},r.prototype.mod=function(e){var t=i();return this.abs().divRemTo(e,null,t),this.s<0&&t.compareTo(r.ZERO)>0&&e.subTo(t,t),t},r.prototype.modPowInt=function(e,t){var r;return r=e<256||t.isEven()?new h(t):new m(t),this.exp(e,r)},r.ZERO=p(0),r.ONE=p(1),S.prototype.convert=w,S.prototype.revert=w,S.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r)},S.prototype.sqrTo=function(e,t){e.squareTo(t)},C.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=i();return e.copyTo(t),this.reduce(t),t},C.prototype.revert=function(e){return e},C.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)},C.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},C.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)};var R,T,k,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],D=(1<<26)/P[P.length-1];function I(){var e;e=(new Date).getTime(),T[k++]^=255&e,T[k++]^=e>>8&255,T[k++]^=e>>16&255,T[k++]^=e>>24&255,k>=A&&(k-=A)}if(r.prototype.chunkSize=function(e){return Math.floor(Math.LN2*this.DB/Math.log(e))},r.prototype.toRadix=function(e){if(null==e&&(e=10),0==this.signum()||e<2||e>36)return"0";var t=this.chunkSize(e),r=Math.pow(e,t),s=p(r),n=i(),a=i(),o="";for(this.divRemTo(s,n,a);n.signum()>0;)o=(r+a.intValue()).toString(e).substr(1)+o,n.divRemTo(s,n,a);return a.intValue().toString(e)+o},r.prototype.fromRadix=function(e,t){this.fromInt(0),null==t&&(t=10);for(var i=this.chunkSize(t),s=Math.pow(t,i),n=!1,a=0,o=0,c=0;c<e.length;++c){var d=l(e,c);d<0?"-"==e.charAt(c)&&0==this.signum()&&(n=!0):(o=t*o+d,++a>=i&&(this.dMultiply(s),this.dAddOffset(o,0),a=0,o=0))}a>0&&(this.dMultiply(Math.pow(t,a)),this.dAddOffset(o,0)),n&&r.ZERO.subTo(this,this)},r.prototype.fromNumber=function(e,t,i){if("number"==typeof t)if(e<2)this.fromInt(1);else for(this.fromNumber(e,i),this.testBit(e-1)||this.bitwiseTo(r.ONE.shiftLeft(e-1),g,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(t);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(r.ONE.shiftLeft(e-1),this);else{var s=new Array,n=7&e;s.length=1+(e>>3),t.nextBytes(s),n>0?s[0]&=(1<<n)-1:s[0]=0,this.fromString(s,256)}},r.prototype.bitwiseTo=function(e,t,r){var i,s,n=Math.min(e.t,this.t);for(i=0;i<n;++i)r[i]=t(this[i],e[i]);if(e.t<this.t){for(s=e.s&this.DM,i=n;i<this.t;++i)r[i]=t(this[i],s);r.t=this.t}else{for(s=this.s&this.DM,i=n;i<e.t;++i)r[i]=t(s,e[i]);r.t=e.t}r.s=t(this.s,e.s),r.clamp()},r.prototype.changeBit=function(e,t){var i=r.ONE.shiftLeft(e);return this.bitwiseTo(i,t,i),i},r.prototype.addTo=function(e,t){for(var r=0,i=0,s=Math.min(e.t,this.t);r<s;)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()},r.prototype.dMultiply=function(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()},r.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]}},r.prototype.multiplyLowerTo=function(e,t,r){var i,s=Math.min(this.t+e.t,t);for(r.s=0,r.t=s;s>0;)r[--s]=0;for(i=r.t-this.t;s<i;++s)r[s+this.t]=this.am(0,e[s],r,s,0,this.t);for(i=Math.min(e.t,t);s<i;++s)this.am(0,e[s],r,s,0,t-s);r.clamp()},r.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)},r.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},r.prototype.millerRabin=function(e){var t=this.subtract(r.ONE),s=t.getLowestSetBit();if(s<=0)return!1;var n=t.shiftRight(s);(e=e+1>>1)>P.length&&(e=P.length);for(var a=i(),o=0;o<e;++o){a.fromInt(P[Math.floor(Math.random()*P.length)]);var c=a.modPow(n,this);if(0!=c.compareTo(r.ONE)&&0!=c.compareTo(t)){for(var d=1;d++<s&&0!=c.compareTo(t);)if(0==(c=c.modPowInt(2,this)).compareTo(r.ONE))return!1;if(0!=c.compareTo(t))return!1}}return!0},r.prototype.clone=function(){var e=i();return this.copyTo(e),e},r.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]},r.prototype.byteValue=function(){return 0==this.t?this.s:this[0]<<24>>24},r.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},r.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},r.prototype.toByteArray=function(){var e=this.t,t=new Array;t[0]=this.s;var r,i=this.DB-e*this.DB%8,s=0;if(e-- >0)for(i<this.DB&&(r=this[e]>>i)!=(this.s&this.DM)>>i&&(t[s++]=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==s&&(128&this.s)!=(128&r)&&++s,(s>0||r!=this.s)&&(t[s++]=r);return t},r.prototype.equals=function(e){return 0==this.compareTo(e)},r.prototype.min=function(e){return this.compareTo(e)<0?this:e},r.prototype.max=function(e){return this.compareTo(e)>0?this:e},r.prototype.and=function(e){var t=i();return this.bitwiseTo(e,f,t),t},r.prototype.or=function(e){var t=i();return this.bitwiseTo(e,g,t),t},r.prototype.xor=function(e){var t=i();return this.bitwiseTo(e,v,t),t},r.prototype.andNot=function(e){var t=i();return this.bitwiseTo(e,_,t),t},r.prototype.not=function(){for(var e=i(),t=0;t<this.t;++t)e[t]=this.DM&~this[t];return e.t=this.t,e.s=~this.s,e},r.prototype.shiftLeft=function(e){var t=i();return e<0?this.rShiftTo(-e,t):this.lShiftTo(e,t),t},r.prototype.shiftRight=function(e){var t=i();return e<0?this.lShiftTo(-e,t):this.rShiftTo(e,t),t},r.prototype.getLowestSetBit=function(){for(var e=0;e<this.t;++e)if(0!=this[e])return e*this.DB+b(this[e]);return this.s<0?this.t*this.DB:-1},r.prototype.bitCount=function(){for(var e=0,t=this.s&this.DM,r=0;r<this.t;++r)e+=y(this[r]^t);return e},r.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)},r.prototype.setBit=function(e){return this.changeBit(e,g)},r.prototype.clearBit=function(e){return this.changeBit(e,_)},r.prototype.flipBit=function(e){return this.changeBit(e,v)},r.prototype.add=function(e){var t=i();return this.addTo(e,t),t},r.prototype.subtract=function(e){var t=i();return this.subTo(e,t),t},r.prototype.multiply=function(e){var t=i();return this.multiplyTo(e,t),t},r.prototype.divide=function(e){var t=i();return this.divRemTo(e,t,null),t},r.prototype.remainder=function(e){var t=i();return this.divRemTo(e,null,t),t},r.prototype.divideAndRemainder=function(e){var t=i(),r=i();return this.divRemTo(e,t,r),new Array(t,r)},r.prototype.modPow=function(e,t){var r,s,n=e.bitLength(),a=p(1);if(n<=0)return a;r=n<18?1:n<48?3:n<144?4:n<768?5:6,s=n<8?new h(t):t.isEven()?new C(t):new m(t);var o=new Array,c=3,d=r-1,l=(1<<r)-1;if(o[1]=s.convert(this),r>1){var f=i();for(s.sqrTo(o[1],f);c<=l;)o[c]=i(),s.mulTo(f,o[c-2],o[c]),c+=2}var g,v,_=e.t-1,b=!0,y=i();for(n=u(e[_])-1;_>=0;){for(n>=d?g=e[_]>>n-d&l:(g=(e[_]&(1<<n+1)-1)<<d-n,_>0&&(g|=e[_-1]>>this.DB+n-d)),c=r;0==(1&g);)g>>=1,--c;if((n-=c)<0&&(n+=this.DB,--_),b)o[g].copyTo(a),b=!1;else{for(;c>1;)s.sqrTo(a,y),s.sqrTo(y,a),c-=2;c>0?s.sqrTo(a,y):(v=a,a=y,y=v),s.mulTo(y,o[g],a)}for(;_>=0&&0==(e[_]&1<<n);)s.sqrTo(a,y),v=a,a=y,y=v,--n<0&&(n=this.DB-1,--_)}return s.revert(a)},r.prototype.modInverse=function(e){var t=e.isEven();if(this.isEven()&&t||0==e.signum())return r.ZERO;for(var i=e.clone(),s=this.clone(),n=p(1),a=p(0),o=p(0),c=p(1);0!=i.signum();){for(;i.isEven();)i.rShiftTo(1,i),t?(n.isEven()&&a.isEven()||(n.addTo(this,n),a.subTo(e,a)),n.rShiftTo(1,n)):a.isEven()||a.subTo(e,a),a.rShiftTo(1,a);for(;s.isEven();)s.rShiftTo(1,s),t?(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(s)>=0?(i.subTo(s,i),t&&n.subTo(o,n),a.subTo(c,a)):(s.subTo(i,s),t&&o.subTo(n,o),c.subTo(a,c))}return 0!=s.compareTo(r.ONE)?r.ZERO:c.compareTo(e)>=0?c.subtract(e):c.signum()<0?(c.addTo(e,c),c.signum()<0?c.add(e):c):c},r.prototype.pow=function(e){return this.exp(e,new S)},r.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 s=t.getLowestSetBit(),n=r.getLowestSetBit();if(n<0)return t;for(s<n&&(n=s),n>0&&(t.rShiftTo(n,t),r.rShiftTo(n,r));t.signum()>0;)(s=t.getLowestSetBit())>0&&t.rShiftTo(s,t),(s=r.getLowestSetBit())>0&&r.rShiftTo(s,r),t.compareTo(r)>=0?(t.subTo(r,t),t.rShiftTo(1,t)):(r.subTo(t,r),r.rShiftTo(1,r));return n>0&&r.lShiftTo(n,r),r},r.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],s=t+1;s<P.length&&i<D;)i*=P[s++];for(i=r.modInt(i);t<s;)if(i%P[t++]==0)return!1}return r.millerRabin(e)},r.prototype.square=function(){var e=i();return this.squareTo(e),e},r.prototype.Barrett=C,null==T){var E;if(T=new Array,k=0,"undefined"!=typeof window&&window.crypto)if(window.crypto.getRandomValues){var O=new Uint8Array(32);for(window.crypto.getRandomValues(O),E=0;E<32;++E)T[k++]=O[E]}else if("Netscape"==navigator.appName&&navigator.appVersion<"5"){var x=window.crypto.random(32);for(E=0;E<x.length;++E)T[k++]=255&x.charCodeAt(E)}for(;k<A;)E=Math.floor(65536*Math.random()),T[k++]=E>>>8,T[k++]=255&E;k=0,I()}function M(){if(null==R){for(I(),(R=new L).init(T),k=0;k<T.length;++k)T[k]=0;k=0}return R.next()}function j(){}function L(){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]=M()},L.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},L.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 A=256;e.exports={default:r,BigInteger:r,SecureRandom:j}}).call(Zi)}(Uu);var zu=Uu.exports,qu={};!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 s,n,a,o,c,d,l,p,u,h=1,m=e.length,f="";for(n=0;n<m;n++)if("string"==typeof e[n])f+=e[n];else if("object"==typeof e[n]){if((o=e[n]).keys)for(s=i[h],a=0;a<o.keys.length;a++){if(null==s)throw new Error(r('[sprintf] Cannot access property "%s" of undefined value "%s"',o.keys[a],o.keys[a-1]));s=s[o.keys[a]]}else s=o.param_no?i[o.param_no]:i[h++];if(t.not_type.test(o.type)&&t.not_primitive.test(o.type)&&s instanceof Function&&(s=s()),t.numeric_arg.test(o.type)&&"number"!=typeof s&&isNaN(s))throw new TypeError(r("[sprintf] expecting number but found %T",s));switch(t.number.test(o.type)&&(p=s>=0),o.type){case"b":s=parseInt(s,10).toString(2);break;case"c":s=String.fromCharCode(parseInt(s,10));break;case"d":case"i":s=parseInt(s,10);break;case"j":s=JSON.stringify(s,null,o.width?parseInt(o.width):0);break;case"e":s=o.precision?parseFloat(s).toExponential(o.precision):parseFloat(s).toExponential();break;case"f":s=o.precision?parseFloat(s).toFixed(o.precision):parseFloat(s);break;case"g":s=o.precision?String(Number(s.toPrecision(o.precision))):parseFloat(s);break;case"o":s=(parseInt(s,10)>>>0).toString(8);break;case"s":s=String(s),s=o.precision?s.substring(0,o.precision):s;break;case"t":s=String(!!s),s=o.precision?s.substring(0,o.precision):s;break;case"T":s=Object.prototype.toString.call(s).slice(8,-1).toLowerCase(),s=o.precision?s.substring(0,o.precision):s;break;case"u":s=parseInt(s,10)>>>0;break;case"v":s=s.valueOf(),s=o.precision?s.substring(0,o.precision):s;break;case"x":s=(parseInt(s,10)>>>0).toString(16);break;case"X":s=(parseInt(s,10)>>>0).toString(16).toUpperCase()}t.json.test(o.type)?f+=s:(!t.number.test(o.type)||p&&!o.sign?u="":(u=p?"+":"-",s=s.toString().replace(t.sign,"")),d=o.pad_char?"0"===o.pad_char?"0":o.pad_char.charAt(1):" ",l=o.width-(u+s).length,c=o.width&&l>0?d.repeat(l):"",f+=o.align?u+s+c:"0"===d?u+c+s:c+u+s)}return f}(function(e){if(s[e])return s[e];var r,i=e,n=[],a=0;for(;i;){if(null!==(r=t.text.exec(i)))n.push(r[0]);else if(null!==(r=t.modulo.exec(i)))n.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");n.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 s[e]=n}(e),arguments)}function i(e,t){return r.apply(null,[e].concat(t||[]))}var s=Object.create(null);e.sprintf=r,e.vsprintf=i,"undefined"!=typeof window&&(window.sprintf=r,window.vsprintf=i)}()}(qu);var Gu=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Wu=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Hu=Zi&&Zi.__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)&&Gu(t,e,r);return Wu(t,e),t};Object.defineProperty(Nu,"__esModule",{value:!0}),Nu.Address4=void 0;const Ku=Hu(Bu),Ju=Hu(Fu),Qu=$u,Zu=zu,Yu=qu;class Xu{constructor(e){this.groups=Ju.GROUPS,this.parsedAddress=[],this.parsedSubnet="",this.subnet="/32",this.subnetMask=32,this.v4=!0,this.isCorrect=Ku.isCorrect(Ju.BITS),this.isInSubnet=Ku.isInSubnet,this.address=e;const t=Ju.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>Ju.BITS)throw new Qu.AddressError("Invalid subnet mask.");e=e.replace(Ju.RE_SUBNET_STRING,"")}this.addressMinusSuffix=e,this.parsedAddress=this.parse(e)}static isValid(e){try{return new Xu(e),!0}catch(e){return!1}}parse(e){const t=e.split(".");if(!e.match(Ju.RE_ADDRESS))throw new Qu.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 Xu(r.join("."))}static fromInteger(e){return Xu.fromHex(e.toString(16))}static fromArpa(e){const t=e.replace(/(\.in-addr\.arpa)?\.$/,"").split(".").reverse().join(".");return new Xu(t)}toHex(){return this.parsedAddress.map((e=>(0,Yu.sprintf)("%02x",parseInt(e,10)))).join(":")}toArray(){return this.parsedAddress.map((e=>parseInt(e,10)))}toGroup6(){const e=[];let t;for(t=0;t<Ju.GROUPS;t+=2){const r=(0,Yu.sprintf)("%02x%02x",parseInt(this.parsedAddress[t],10),parseInt(this.parsedAddress[t+1],10));e.push((0,Yu.sprintf)("%x",parseInt(r,16)))}return e.join(":")}bigInteger(){return new Zu.BigInteger(this.parsedAddress.map((e=>(0,Yu.sprintf)("%02x",parseInt(e,10)))).join(""),16)}_startAddress(){return new Zu.BigInteger(this.mask()+"0".repeat(Ju.BITS-this.subnetMask),2)}startAddress(){return Xu.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new Zu.BigInteger("1");return Xu.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new Zu.BigInteger(this.mask()+"1".repeat(Ju.BITS-this.subnetMask),2)}endAddress(){return Xu.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new Zu.BigInteger("1");return Xu.fromBigInteger(this._endAddress().subtract(e))}static fromBigInteger(e){return Xu.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,Yu.sprintf)("%s.in-addr.arpa.",t)}isMulticast(){return this.isInSubnet(new Xu("224.0.0.0/4"))}binaryZeroPad(){return this.bigInteger().toString(2).padStart(Ju.BITS,"0")}groupForV6(){const e=this.parsedAddress;return this.address.replace(Ju.RE_ADDRESS,(0,Yu.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(".")))}}Nu.Address4=Xu;var eh={},th={};Object.defineProperty(th,"__esModule",{value:!0}),th.RE_URL_WITH_PORT=th.RE_URL=th.RE_ZONE_STRING=th.RE_SUBNET_STRING=th.RE_BAD_ADDRESS=th.RE_BAD_CHARACTERS=th.TYPES=th.SCOPES=th.GROUPS=th.BITS=void 0,th.BITS=128,th.GROUPS=8,th.SCOPES={0:"Reserved",1:"Interface local",2:"Link local",4:"Admin local",5:"Site local",8:"Organization local",14:"Global",15:"Reserved"},th.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"},th.RE_BAD_CHARACTERS=/([^0-9a-f:/%])/gi,th.RE_BAD_ADDRESS=/([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi,th.RE_SUBNET_STRING=/\/\d{1,3}(?=%|$)/,th.RE_ZONE_STRING=/%.*$/,th.RE_URL=new RegExp(/^\[{0,1}([0-9a-f:]+)\]{0,1}/),th.RE_URL_WITH_PORT=new RegExp(/\[([0-9a-f:]+)\]:([0-9]{1,5})/);var rh={};Object.defineProperty(rh,"__esModule",{value:!0}),rh.simpleGroup=rh.spanLeadingZeroes=rh.spanAll=rh.spanAllZeroes=void 0;const ih=qu;function sh(e){return e.replace(/(0+)/g,'<span class="zero">$1</span>')}function nh(e){return e.replace(/^(0+)/,'<span class="zero">$1</span>')}rh.spanAllZeroes=sh,rh.spanAll=function(e,t=0){return e.split("").map(((e,r)=>(0,ih.sprintf)('<span class="digit value-%s position-%d">%s</span>',e,r+t,sh(e)))).join("")},rh.spanLeadingZeroes=function(e){return e.split(":").map((e=>nh(e))).join(":")},rh.simpleGroup=function(e,t=0){return e.split(":").map(((e,r)=>/group-v4/.test(e)?e:(0,ih.sprintf)('<span class="hover-group group-%d">%s</span>',r+t,nh(e))))};var ah={},oh=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ch=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),dh=Zi&&Zi.__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)&&oh(t,e,r);return ch(t,e),t};Object.defineProperty(ah,"__esModule",{value:!0}),ah.possibleElisions=ah.simpleRegularExpression=ah.ADDRESS_BOUNDARY=ah.padGroup=ah.groupPossibilities=void 0;const lh=dh(th),ph=qu;function uh(e){return(0,ph.sprintf)("(%s)",e.join("|"))}function hh(e){return e.length<4?(0,ph.sprintf)("0{0,%d}%s",4-e.length,e):e}ah.groupPossibilities=uh,ah.padGroup=hh,ah.ADDRESS_BOUNDARY="[^A-Fa-f0-9:]",ah.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===lh.GROUPS-1?":":"";return uh([hh(e),t])}return hh(e)})).join(":")));return r.push(e.map(hh).join(":")),uh(r)},ah.possibleElisions=function(e,t,r){const i=t?"":":",s=r?"":":",n=[];t||r||n.push("::"),t&&r&&n.push(""),(r&&!t||!r&&t)&&n.push(":"),n.push((0,ph.sprintf)("%s(:0{1,4}){1,%d}",i,e-1)),n.push((0,ph.sprintf)("(0{1,4}:){1,%d}%s",e-1,s)),n.push((0,ph.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++)n.push((0,ph.sprintf)("(0{1,4}:){%d}:(0{1,4}:){%d}0{1,4}",r,e-r-t-1));return uh(n)};var mh=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),fh=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),gh=Zi&&Zi.__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)&&mh(t,e,r);return fh(t,e),t};Object.defineProperty(eh,"__esModule",{value:!0}),eh.Address6=void 0;const vh=gh(Bu),_h=gh(Fu),bh=gh(th),yh=gh(rh),Sh=Nu,wh=ah,Ch=$u,Rh=zu,Th=qu;function kh(e){if(!e)throw new Error("Assertion failed.")}function Ph(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 Dh(e){return(0,Th.sprintf)("%04x",parseInt(e,16))}function Ih(e){return 255&e}class Eh{constructor(e,t){this.addressMinusSuffix="",this.parsedSubnet="",this.subnet="/128",this.subnetMask=128,this.v4=!1,this.zone="",this.isInSubnet=vh.isInSubnet,this.isCorrect=vh.isCorrect(bh.BITS),this.groups=void 0===t?bh.GROUPS:t,this.address=e;const r=bh.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>bh.BITS)throw new Ch.AddressError("Invalid subnet mask.");e=e.replace(bh.RE_SUBNET_STRING,"")}else if(/\//.test(e))throw new Ch.AddressError("Invalid subnet mask.");const i=bh.RE_ZONE_STRING.exec(e);i&&(this.zone=i[0],e=e.replace(bh.RE_ZONE_STRING,"")),this.addressMinusSuffix=e,this.parsedAddress=this.parse(this.addressMinusSuffix)}static isValid(e){try{return new Eh(e),!0}catch(e){return!1}}static fromBigInteger(e){const t=e.toString(16).padStart(32,"0"),r=[];let i;for(i=0;i<bh.GROUPS;i++)r.push(t.slice(4*i,4*(i+1)));return new Eh(r.join(":"))}static fromURL(e){let t,r,i=null;if(-1!==e.indexOf("[")&&-1!==e.indexOf("]:")){if(r=bh.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=bh.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 Eh(t),port:i}}static fromAddress4(e){const t=new Sh.Address4(e),r=bh.BITS-(_h.BITS-t.subnetMask);return new Eh(`::ffff:${t.correctForm()}/${r}`)}static fromArpa(e){let t=e.replace(/(\.ip6\.arpa)?\.$/,"");if(63!==t.length)throw new Ch.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 Eh(t)}microsoftTranscription(){return(0,Th.sprintf)("%s.ipv6-literal.net",this.correctForm().replace(/:/g,"-"))}mask(e=this.subnetMask){return this.getBitsBase2(0,e)}possibleSubnets(e=128){const t=bh.BITS-this.subnetMask-Math.abs(e-bh.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 Rh.BigInteger("2",10).pow(t).toString(10))}_startAddress(){return new Rh.BigInteger(this.mask()+"0".repeat(bh.BITS-this.subnetMask),2)}startAddress(){return Eh.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new Rh.BigInteger("1");return Eh.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new Rh.BigInteger(this.mask()+"1".repeat(bh.BITS-this.subnetMask),2)}endAddress(){return Eh.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new Rh.BigInteger("1");return Eh.fromBigInteger(this._endAddress().subtract(e))}getScope(){let e=bh.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(bh.TYPES))if(this.isInSubnet(new Eh(e)))return bh.TYPES[e];return"Global unicast"}getBits(e,t){return new Rh.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,bh.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,Th.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 s=i.map((e=>e[1]-e[0]+1));if(i.length>0){const e=s.indexOf(Math.max(...s));t=function(e,t){const r=[],i=[];let s;for(s=0;s<e.length;s++)s<t[0]?r.push(e[s]):s>t[1]&&i.push(e[s]);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 n=t.join(":");return n=n.replace(/^compact$/,"::"),n=n.replace(/^compact|compact$/,":"),n=n.replace(/compact/,""),n}binaryZeroPad(){return this.bigInteger().toString(2).padStart(bh.BITS,"0")}parse4in6(e){const t=e.split(":"),r=t.slice(-1)[0].match(_h.RE_ADDRESS);if(r){this.parsedAddress4=r[0],this.address4=new Sh.Address4(this.parsedAddress4);for(let t=0;t<this.address4.groups;t++)if(/^0[0-9]+/.test(this.address4.parsedAddress[t]))throw new Ch.AddressError("IPv4 addresses can't have leading zeroes.",e.replace(_h.RE_ADDRESS,this.address4.parsedAddress.map(Ph).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(bh.RE_BAD_CHARACTERS);if(t)throw new Ch.AddressError((0,Th.sprintf)("Bad character%s detected in address: %s",t.length>1?"s":"",t.join("")),e.replace(bh.RE_BAD_CHARACTERS,'<span class="parse-error">$1</span>'));const r=e.match(bh.RE_BAD_ADDRESS);if(r)throw new Ch.AddressError((0,Th.sprintf)("Address failed regex: %s",r.join("")),e.replace(bh.RE_BAD_ADDRESS,'<span class="parse-error">$1</span>'));let i=[];const s=e.split("::");if(2===s.length){let e=s[0].split(":"),t=s[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 Ch.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!==s.length)throw new Ch.AddressError("Too many :: groups found");i=e.split(":"),this.elidedGroups=0}if(i=i.map((e=>(0,Th.sprintf)("%x",parseInt(e,16)))),i.length!==this.groups)throw new Ch.AddressError("Incorrect number of groups found");return i}canonicalForm(){return this.parsedAddress.map(Dh).join(":")}decimal(){return this.parsedAddress.map((e=>(0,Th.sprintf)("%05d",parseInt(e,16)))).join(":")}bigInteger(){return new Rh.BigInteger(this.parsedAddress.map(Dh).join(""),16)}to4(){const e=this.binaryZeroPad().split("");return Sh.Address4.fromHex(new Rh.BigInteger(e.slice(96,128).join(""),2).toString(16))}to4in6(){const e=this.to4(),t=new Eh(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 Rh.BigInteger("ffff",16)).toString(),r=Sh.Address4.fromHex(this.getBitsBase16(32,64)),i=Sh.Address4.fromHex(this.getBits(96,128).xor(new Rh.BigInteger("ffffffff",16)).toString(16)),s=this.getBits(64,80),n=this.getBitsBase2(64,80),a=s.testBit(15),o=s.testBit(14),c=s.testBit(8),d=s.testBit(9),l=new Rh.BigInteger(n.slice(2,6)+n.slice(8,16),2).toString(10);return{prefix:(0,Th.sprintf)("%s:%s",e.slice(0,4),e.slice(4,8)),server4:r.address,client4:i.address,flags:n,coneNat:a,microsoft:{reserved:o,universalLocal:d,groupIndividual:c,nonce:l},udpPort:t}}inspect6to4(){const e=this.getBitsBase16(0,16),t=Sh.Address4.fromHex(this.getBitsBase16(16,48));return{prefix:(0,Th.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 Eh(e)}toByteArray(){const e=this.bigInteger().toByteArray();return 17===e.length&&0===e[0]?e.slice(1):e}toUnsignedByteArray(){return this.toByteArray().map(Ih)}static fromByteArray(e){return this.fromUnsignedByteArray(e.map(Ih))}static fromUnsignedByteArray(e){const t=new Rh.BigInteger("256",10);let r=new Rh.BigInteger("0",10),i=new Rh.BigInteger("1",10);for(let s=e.length-1;s>=0;s--)r=r.add(i.multiply(new Rh.BigInteger(e[s].toString(10),10))),i=i.multiply(t);return Eh.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 Eh("2001::/32"))}is6to4(){return this.isInSubnet(new Eh("2002::/16"))}isLoopback(){return"Loopback"===this.getType()}href(e){return e=void 0===e?"":(0,Th.sprintf)(":%s",e),(0,Th.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,Th.sprintf)('<a href="%1$s%2$s" class="%3$s">%2$s</a>',e.prefix,t.call(this),e.className):(0,Th.sprintf)('<a href="%1$s%2$s">%2$s</a>',e.prefix,t.call(this))}group(){if(0===this.elidedGroups)return yh.simpleGroup(this.address).join(":");kh("number"==typeof this.elidedGroups),kh("number"==typeof this.elisionBegin);const e=[],[t,r]=this.address.split("::");t.length?e.push(...yh.simpleGroup(t)):e.push("");const i=["hover-group"];for(let e=this.elisionBegin;e<this.elisionBegin+this.elidedGroups;e++)i.push((0,Th.sprintf)("group-%d",e));return e.push((0,Th.sprintf)('<span class="%s"></span>',i.join(" "))),r.length?e.push(...yh.simpleGroup(r,this.elisionEnd)):e.push(""),this.is4()&&(kh(this.address4 instanceof Sh.Address4),e.pop(),e.push(this.address4.groupForV6())),e.join(":")}regularExpressionString(e=!1){let t=[];const r=new Eh(this.correctForm());if(0===r.elidedGroups)t.push((0,wh.simpleRegularExpression)(r.parsedAddress));else if(r.elidedGroups===bh.GROUPS)t.push((0,wh.possibleElisions)(bh.GROUPS));else{const e=r.address.split("::");e[0].length&&t.push((0,wh.simpleRegularExpression)(e[0].split(":"))),kh("number"==typeof r.elidedGroups),t.push((0,wh.possibleElisions)(r.elidedGroups,0!==e[0].length,0!==e[1].length)),e[1].length&&t.push((0,wh.simpleRegularExpression)(e[1].split(":"))),t=[t.join(":")]}return e||(t=["(?=^|",wh.ADDRESS_BOUNDARY,"|[^\\w\\:])(",...t,")(?=[^\\w\\:]|",wh.ADDRESS_BOUNDARY,"|$)"]),t.join("")}regularExpression(e=!1){return new RegExp(this.regularExpressionString(e),"i")}}eh.Address6=Eh,function(e){var t=Zi&&Zi.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=Zi&&Zi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=Zi&&Zi.__importStar||function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&t(i,e,s);return r(i,e),i};Object.defineProperty(e,"__esModule",{value:!0}),e.v6=e.AddressError=e.Address6=e.Address4=void 0;const s=Nu;Object.defineProperty(e,"Address4",{enumerable:!0,get:function(){return s.Address4}});const n=eh;Object.defineProperty(e,"Address6",{enumerable:!0,get:function(){return n.Address6}});const a=$u;Object.defineProperty(e,"AddressError",{enumerable:!0,get:function(){return a.AddressError}});const o=i(rh);e.v6={helpers:o}}(Au);var Oh={exports:{}};!function(e){(function(){var t,r,i,s,n,a,o,c;r={},null!==e&&e.exports?e.exports=r:this.ipaddr=r,o=function(e,t,r,i){var s,n;if(e.length!==t.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(s=0;i>0;){if((n=r-i)<0&&(n=0),e[s]>>n!=t[s]>>n)return!1;i-=r,s+=1}return!0},r.subnetMatch=function(e,t,r){var i,s,n,a,o;for(n in null==r&&(r="unicast"),t)for(!(a=t[n])[0]||a[0]instanceof Array||(a=[a]),i=0,s=a.length;i<s;i++)if(o=a[i],e.kind()===o[0].kind()&&e.match.apply(e,o))return n;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,s,n,a;for(a={0:8,128:7,192:6,224:5,240:4,248:3,252:2,254:1,255:0},e=0,s=!1,t=r=3;r>=0;t=r+=-1){if(!((i=this.octets[t])in a))return null;if(n=a[i],s&&0!==n)return null;8!==n&&(s=!0),e+=n}return 32-e},e}(),i="(0?\\d+|0x[a-f0-9]+)",s={fourOctet:new RegExp("^"+i+"\\."+i+"\\."+i+"\\."+i+"$","i"),longValue:new RegExp("^"+i+"$","i")},r.IPv4.parser=function(e){var t,r,i,n,a;if(r=function(e){return"0"===e[0]&&"x"!==e[1]?parseInt(e,8):parseInt(e)},t=e.match(s.fourOctet))return function(){var e,s,n,a;for(a=[],e=0,s=(n=t.slice(1,6)).length;e<s;e++)i=n[e],a.push(r(i));return a}();if(t=e.match(s.longValue)){if((a=r(t[1]))>4294967295||a<0)throw new Error("ipaddr: address outside defined range");return function(){var e,t;for(t=[],n=e=0;e<=24;n=e+=8)t.push(a>>n&255);return t}().reverse()}return null},r.IPv6=function(){function e(e,t){var r,i,s,n,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(s=0,n=(o=this.parts).length;s<n;s++)if(!(0<=(a=o[s])&&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,s;for(i=/((^|:)(0(:|$)){2,})/g,s=this.toNormalizedString(),e=0,t=-1;r=i.exec(s);)r[0].length>t&&(e=r.index,t=r[0].length);return t<0?s:s.substring(0,e)+"::"+s.substring(e+t)},e.prototype.toByteArray=function(){var e,t,r,i,s;for(e=[],t=0,r=(s=this.parts).length;t<r;t++)i=s[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,s;for(s=[],e=0,r=(i=this.parts).length;e<r;e++)t=i[e],s.push(t.toString(16));return s}.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,s;for(s=[],e=0,r=(i=this.parts).length;e<r;e++)t=i[e],s.push(t.toString(16).padStart(4,"0"));return s}.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,s,n,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,s=!1,t=r=7;r>=0;t=r+=-1){if(!((i=this.parts[t])in a))return null;if(n=a[i],s&&0!==n)return null;16!==n&&(s=!0),e+=n}return 128-e},e}(),n="(?:[0-9a-f]+::?)+",c="%[0-9a-z]{1,}",a={zoneIndex:new RegExp(c,"i"),native:new RegExp("^(::)?("+n+")?([0-9a-f]+)?(::)?("+c+")?$","i"),transitional:new RegExp("^((?:"+n+")|(?:::)(?:"+n+")?)"+i+"\\."+i+"\\."+i+"\\."+i+"("+c+")?$","i")},t=function(e,t){var r,i,s,n,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,n=":";o--;)n+="0:";return":"===(e=e.replace("::",n))[0]&&(e=e.slice(1)),":"===e[e.length-1]&&(e=e.slice(0,-1)),t=function(){var t,r,i,n;for(n=[],t=0,r=(i=e.split(":")).length;t<r;t++)s=i[t],n.push(parseInt(s,16));return n}(),{parts:t,zoneId:c}},r.IPv6.parser=function(e){var r,i,s,n,o,c,d;if(a.native.test(e))return t(e,8);if((n=e.match(a.transitional))&&(d=n[6]||"",(r=t(n[1].slice(0,-1)+d,6)).parts)){for(i=0,s=(c=[parseInt(n[2]),parseInt(n[3]),parseInt(n[4]),parseInt(n[5])]).length;i<s;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,s,n;try{for(i=(t=this.parseCIDR(e))[0].toByteArray(),n=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),s=[],r=0;r<4;)s.push(parseInt(i[r],10)|255^parseInt(n[r],10)),r++;return new this(s)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},r.IPv4.networkAddressFromCIDR=function(e){var t,r,i,s,n;try{for(i=(t=this.parseCIDR(e))[0].toByteArray(),n=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),s=[],r=0;r<4;)s.push(parseInt(i[r],10)&parseInt(n[r],10)),r++;return new this(s)}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(Zi)}(Oh);var xh=Oh.exports,Mh=function(e,t){if("string"==typeof t)return jh(e,t);if("object"==typeof t){for(var r=!1,i=0;i<t.length;i++)if(jh(e,t[i])){r=!0;break}return r}};function jh(e,t){try{var r=xh.process(e);if(-1===t.indexOf("/")){var i=xh.process(t);return"ipv6"===r.kind()&&"ipv6"===i.kind()?r.toNormalizedString()===i.toNormalizedString():r.toString()==i.toString()}var s=xh.parseCIDR(t);return r.match(s)}catch(e){return!1}}var Lh=Mh,Ah=/^((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]?)$/,Nh=["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"],Bh=["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"];for(var Fh=function(e){var t=[],r={originalIp:e,boiledIp:!1,isValid:!1,isBogon:!1,isApipa:!1,isMulticast:!1,isRfc1918:!1,isPublicIp:!1};if(Ah.test(e)){r.isValid=!0;for(var i=e.split("."),s=0;s<4;s++)t.push(parseInt(i[s],10));r.boiledIp=t.join("."),Lh(r.boiledIp,Nh)&&(r.isBogon=!0),Lh(r.boiledIp,"169.254.0.0/16")&&(r.isApipa=!0),Lh(r.boiledIp,"224.0.0.0/4")&&(r.isMulticast=!0),Lh(r.boiledIp,Bh)?r.isRfc1918=!0:!1===r.isBogon&&(r.isPublicIp=!0)}return r},$h=Yi(Fh),Vh={exports:{}},Uh=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i,zh=[],qh=0;qh<256;qh++)zh[qh]=(qh+256).toString(16).substr(1);Vh.exports=function(e,t){var r;if(Buffer.isBuffer(e))r=function(e,t){var r=t||0,i=zh;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(),!Uh.test(r))return!1;if(void 0===t)t=Gh(r);else if(Gh(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 Gh=Vh.exports.version=function(e){return 0|e.charAt(14)},Wh=Yi(Vh.exports);const Hh=Object.create(null);Hh.open="0",Hh.close="1",Hh.ping="2",Hh.pong="3",Hh.message="4",Hh.upgrade="5",Hh.noop="6";const Kh=Object.create(null);Object.keys(Hh).forEach((e=>{Kh[Hh[e]]=e}));const Jh={type:"error",data:"parser error"},Qh="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),Zh="function"==typeof ArrayBuffer,Yh=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,Xh=({type:e,data:t},r,i)=>Qh&&t instanceof Blob?r?i(t):em(t,i):Zh&&(t instanceof ArrayBuffer||Yh(t))?r?i(t):em(new Blob([t]),i):i(Hh[e]+(t||"")),em=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+(e||""))},r.readAsDataURL(e)};function tm(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let rm;const im="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",sm="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let LS=0;LS<64;LS++)sm[im.charCodeAt(LS)]=LS;const nm="function"==typeof ArrayBuffer,am=(e,t)=>{if("string"!=typeof e)return{type:"message",data:cm(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:om(e.substring(1),t)};return Kh[r]?e.length>1?{type:Kh[r],data:e.substring(1)}:{type:Kh[r]}:Jh},om=(e,t)=>{if(nm){const r=(e=>{let t,r,i,s,n,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=sm[e.charCodeAt(t)],i=sm[e.charCodeAt(t+1)],s=sm[e.charCodeAt(t+2)],n=sm[e.charCodeAt(t+3)],l[c++]=r<<2|i>>4,l[c++]=(15&i)<<4|s>>2,l[c++]=(3&s)<<6|63&n;return d})(e);return cm(r,t)}return{base64:!0,data:e}},cm=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,dm=String.fromCharCode(30);function lm(){return new TransformStream({transform(e,t){!function(e,t){Qh&&e.data instanceof Blob?e.data.arrayBuffer().then(tm).then(t):Zh&&(e.data instanceof ArrayBuffer||Yh(e.data))?t(tm(e.data)):Xh(e,!1,(e=>{rm||(rm=new TextEncoder),t(rm.encode(e))}))}(e,(r=>{const i=r.length;let s;if(i<126)s=new Uint8Array(1),new DataView(s.buffer).setUint8(0,i);else if(i<65536){s=new Uint8Array(3);const e=new DataView(s.buffer);e.setUint8(0,126),e.setUint16(1,i)}else{s=new Uint8Array(9);const e=new DataView(s.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(i))}e.data&&"string"!=typeof e.data&&(s[0]|=128),t.enqueue(s),t.enqueue(r)}))}})}let pm;function um(e){return e.reduce(((e,t)=>e+t.length),0)}function hm(e,t){if(e[0].length===t)return e.shift();const r=new Uint8Array(t);let i=0;for(let s=0;s<t;s++)r[s]=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 mm(e){if(e)return function(e){for(var t in mm.prototype)e[t]=mm.prototype[t];return e}(e)}mm.prototype.on=mm.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},mm.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},mm.prototype.off=mm.prototype.removeListener=mm.prototype.removeAllListeners=mm.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 s=0;s<i.length;s++)if((r=i[s])===t||r.fn===t){i.splice(s,1);break}return 0===i.length&&delete this._callbacks["$"+e],this},mm.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 s=(r=r.slice(0)).length;i<s;++i)r[i].apply(this,t)}return this},mm.prototype.emitReserved=mm.prototype.emit,mm.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},mm.prototype.hasListeners=function(e){return!!this.listeners(e).length};const fm="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function gm(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const vm=fm.setTimeout,_m=fm.clearTimeout;function bm(e,t){t.useNativeTimers?(e.setTimeoutFn=vm.bind(fm),e.clearTimeoutFn=_m.bind(fm)):(e.setTimeoutFn=fm.setTimeout.bind(fm),e.clearTimeoutFn=fm.clearTimeout.bind(fm))}class ym extends Error{constructor(e,t,r){super(e),this.description=t,this.context=r,this.type="TransportError"}}class Sm extends mm{constructor(e){super(),this.writable=!1,bm(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,r){return super.emitReserved("error",new ym(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=am(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 wm="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),Cm=64,Rm={};let Tm,km=0,Pm=0;function Dm(e){let t="";do{t=wm[e%Cm]+t,e=Math.floor(e/Cm)}while(e>0);return t}function Im(){const e=Dm(+new Date);return e!==Tm?(km=0,Tm=e):e+"."+Dm(km++)}for(;Pm<Cm;Pm++)Rm[wm[Pm]]=Pm;let Em=!1;try{Em="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(AS){}const Om=Em;function xm(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||Om))return new XMLHttpRequest}catch(e){}if(!t)try{return new(fm[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function Mm(){}const jm=null!=new xm({xdomain:!1}).responseType;class Lm extends mm{constructor(e,t){super(),bm(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=gm(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd;const r=this.xhr=new xm(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=Lm.requestsCount++,Lm.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=Mm,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete Lm.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(Lm.requestsCount=0,Lm.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",Am);else if("function"==typeof addEventListener){addEventListener("onpagehide"in fm?"pagehide":"unload",Am,!1)}function Am(){for(let e in Lm.requests)Lm.requests.hasOwnProperty(e)&&Lm.requests[e].abort()}const Nm="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),Bm=fm.WebSocket||fm.MozWebSocket,Fm="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();const $m={websocket:class extends Sm{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=Fm?{}:gm(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=Fm?new Bm(e,t,r):t?new Bm(e,t):new Bm(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;Xh(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&Nm((()=>{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]=Im()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!Bm}},webtransport:class extends Sm{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){pm||(pm=new TextDecoder);const r=[];let i=0,s=-1,n=!1;return new TransformStream({transform(a,o){for(r.push(a);;){if(0===i){if(um(r)<1)break;const e=hm(r,1);n=128==(128&e[0]),s=127&e[0],i=s<126?3:126===s?1:2}else if(1===i){if(um(r)<2)break;const e=hm(r,2);s=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),i=3}else if(2===i){if(um(r)<8)break;const e=hm(r,8),t=new DataView(e.buffer,e.byteOffset,e.length),n=t.getUint32(0);if(n>Math.pow(2,21)-1){o.enqueue(Jh);break}s=n*Math.pow(2,32)+t.getUint32(4),i=3}else{if(um(r)<s)break;const e=hm(r,s);o.enqueue(am(n?e:pm.decode(e),t)),i=0}if(0===s||s>e){o.enqueue(Jh);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=e.readable.pipeThrough(t).getReader(),i=lm();i.readable.pipeTo(e.writable),this.writer=i.writable.getWriter();const s=()=>{r.read().then((({done:e,value:t})=>{e||(this.onPacket(t),s())})).catch((e=>{}))};s();const n={type:"open"};this.query.sid&&(n.data=`{"sid":"${this.query.sid}"}`),this.writer.write(n).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&&Nm((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends Sm{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=jm&&!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(dm),i=[];for(let e=0;e<r.length;e++){const s=am(r[e],t);if(i.push(s),"error"===s.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 s=0;e.forEach(((e,n)=>{Xh(e,!1,(e=>{i[n]=e,++s===r&&t(i.join(dm))}))}))})(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]=Im()),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 Lm(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}}},Vm=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Um=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function zm(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 s=Vm.exec(e||""),n={},a=14;for(;a--;)n[Um[a]]=s[a]||"";return-1!=r&&-1!=i&&(n.source=t,n.host=n.host.substring(1,n.host.length-1).replace(/;/g,":"),n.authority=n.authority.replace("[","").replace("]","").replace(/;/g,":"),n.ipv6uri=!0),n.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,n.path),n.queryKey=function(e,t){const r={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,i){t&&(r[t]=i)})),r}(0,n.query),n}let qm=class e extends mm{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=zm(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=zm(t.host).host),bm(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 $m[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 s=()=>{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 n(){i||(i=!0,l(),r.close(),r=null)}const a=e=>{const t=new Error("probe error: "+e);t.transport=r.name,n(),this.emitReserved("upgradeError",t)};function o(){a("transport closed")}function c(){a("socket closed")}function d(e){r&&e.name!==r.name&&n()}const l=()=>{r.removeListener("open",s),r.removeListener("error",a),r.removeListener("close",o),this.off("close",c),this.off("upgrading",d)};r.once("open",s),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,s=e.length;i<s;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 s={type:e,data:t,options:r};this.emitReserved("packetCreate",s),this.writeBuffer.push(s),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}};qm.protocol=4;const Gm="function"==typeof ArrayBuffer,Wm=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,Hm=Object.prototype.toString,Km="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Hm.call(Blob),Jm="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===Hm.call(File);function Qm(e){return Gm&&(e instanceof ArrayBuffer||Wm(e))||Km&&e instanceof Blob||Jm&&e instanceof File}function Zm(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(Zm(e[t]))return!0;return!1}if(Qm(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Zm(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Zm(e[t]))return!0;return!1}function Ym(e){const t=[],r=e.data,i=e;return i.data=Xm(r,t),i.attachments=t.length,{packet:i,buffers:t}}function Xm(e,t){if(!e)return e;if(Qm(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]=Xm(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]=Xm(e[i],t));return r}return e}function ef(e,t){return e.data=tf(e.data,t),delete e.attachments,e}function tf(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]=tf(e[r],t);else if("object"==typeof e)for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(e[r]=tf(e[r],t));return e}const rf=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var sf;!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"}(sf||(sf={}));function nf(e){return"[object Object]"===Object.prototype.toString.call(e)}class af extends mm{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===sf.BINARY_EVENT;r||t.type===sf.BINARY_ACK?(t.type=r?sf.EVENT:sf.ACK,this.reconstructor=new of(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!Qm(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===sf[r.type])throw new Error("unknown packet type "+r.type);if(r.type===sf.BINARY_EVENT||r.type===sf.BINARY_ACK){const i=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const s=e.substring(i,t);if(s!=Number(s)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(s)}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(!af.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 sf.CONNECT:return nf(t);case sf.DISCONNECT:return void 0===t;case sf.CONNECT_ERROR:return"string"==typeof t||nf(t);case sf.EVENT:case sf.BINARY_EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===rf.indexOf(t[0]));case sf.ACK:case sf.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class of{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=ef(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var cf=Object.freeze({__proto__:null,Decoder:af,Encoder:class{constructor(e){this.replacer=e}encode(e){return e.type!==sf.EVENT&&e.type!==sf.ACK||!Zm(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===sf.EVENT?sf.BINARY_EVENT:sf.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}encodeAsString(e){let t=""+e.type;return e.type!==sf.BINARY_EVENT&&e.type!==sf.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=Ym(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},get PacketType(){return sf},protocol:5});function df(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const lf=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class pf extends mm{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=[df(e,"open",this.onopen.bind(this)),df(e,"packet",this.onpacket.bind(this)),df(e,"error",this.onerror.bind(this)),df(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(lf.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:sf.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 s=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(s),t.apply(this,[null,...e])}}emitWithAck(e,...t){const r=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((i,s)=>{t.push(((e,t)=>r?e?s(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:sf.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 sf.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 sf.EVENT:case sf.BINARY_EVENT:this.onevent(e);break;case sf.ACK:case sf.BINARY_ACK:this.onack(e);break;case sf.DISCONNECT:this.ondisconnect();break;case sf.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:sf.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:sf.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 uf(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}uf.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)},uf.prototype.reset=function(){this.attempts=0},uf.prototype.setMin=function(e){this.ms=e},uf.prototype.setMax=function(e){this.max=e},uf.prototype.setJitter=function(e){this.jitter=e};class hf extends mm{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,bm(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 uf({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||cf;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 qm(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=df(t,"open",(function(){r.onopen(),e&&e()})),s=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},n=df(t,"error",s);if(!1!==this._timeout){const e=this._timeout,r=this.setTimeoutFn((()=>{i(),s(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(n),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(df(e,"ping",this.onping.bind(this)),df(e,"data",this.ondata.bind(this)),df(e,"error",this.onerror.bind(this)),df(e,"close",this.onclose.bind(this)),df(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){Nm((()=>{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 pf(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 mf={};function ff(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=zm(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 s=-1!==i.host.indexOf(":")?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+s+":"+i.port+t,i.href=i.protocol+"://"+s+(r&&r.port===i.port?"":":"+i.port),i}(e,(t=t||{}).path||"/socket.io"),i=r.source,s=r.id,n=r.path,a=mf[s]&&n in mf[s].nsps;let o;return t.forceNew||t["force new connection"]||!1===t.multiplex||a?o=new hf(i,t):(mf[s]||(mf[s]=new hf(i,t)),o=mf[s]),r.query&&!t.query&&(t.query=r.queryKey),o.socket(r.path,t)}Object.assign(ff,{Manager:hf,Socket:pf,io:ff,connect:ff});const gf=new URLSearchParams(window.location.search).has("debug");class vf{constructor(){this._isEnabled=!1,this._debugger=null,this._isEnabled=gf}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)}}function _f(e,t,r,i){return new(r||(r=Promise))((function(s,n){function a(e){try{c(i.next(e))}catch(e){n(e)}}function o(e){try{c(i.throw(e))}catch(e){n(e)}}function c(e){e.done?s(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;let bf=[],yf=0;const Sf=new WeakMap,wf=e=>{bf=bf.filter((t=>t!==e))};if(window.RTCPeerConnection){const NS=window.RTCPeerConnection;function BS(e){const t=new NS(e);bf.push(t),Sf.set(t,{index:yf++});const r=()=>{"closed"===t.connectionState&&(wf(t),t.removeEventListener("connectionstatechange",r))};return t.addEventListener("connectionstatechange",r),t}BS.prototype=NS.prototype,window.RTCPeerConnection=BS}const Cf=e=>{var t;return null===(t=Sf.get(e))||void 0===t?void 0:t.index},Rf=new WeakMap,Tf=()=>Promise.all(bf.map((e=>_f(void 0,void 0,void 0,(function*(){let t=Rf.get(e);t||(t={ssrcToTrackId:{}},Rf.set(e,t));try{const r=yield e.getStats();let i=null;if(r.forEach((e=>{if(!("inbound-rtp"!==e.type&&"outbound-rtp"!==e.type||e.trackIdentifier||t.ssrcToTrackId[e.ssrc])){if(e.mediaSourceId){const i=r.get(e.mediaSourceId);i&&i.trackIdentifier&&(t.ssrcToTrackId[e.ssrc]=i.trackIdentifier)}if(!t.ssrcToTrackId[e.ssrc]&&e.trackId){const i=r.get(e.trackId);i&&i.trackIdentifier&&(t.ssrcToTrackId[e.ssrc]=i.trackIdentifier)}t.ssrcToTrackId[e.ssrc]||(i||(i=[]),i.push(e.ssrc))}})),i){const r=[...e.getSenders(),...e.getReceivers()];(yield Promise.all(r.map((e=>e.getStats())))).forEach(((e,i)=>{e.forEach((e=>{"inbound-rtp"!==e.type&&"outbound-rtp"!==e.type||(t.ssrcToTrackId[e.ssrc]=r[i].track.id)}))})),i.forEach((e=>{t.ssrcToTrackId[e]||(t.ssrcToTrackId[e]="?"+e)}))}return[e,r,t]}catch(r){return[e,[],t]}}))))),kf=(e,t,r,i,s,n)=>{let a=e[i];a||(a={tracks:{},startTime:t,updated:t},e[i]=a),a.updated=t;let o=a.tracks[s];o||(o={ssrcs:{},startTime:t,updated:t},a.tracks[s]=o),o.updated=t;let c=o.ssrcs[n];return c||(c={startTime:t,updated:t,pcIndex:r},o.ssrcs[n]=c),c.updated=t,c},Pf=(e,t)=>{Object.entries(e).forEach((([r,i])=>{i.updated<t?delete e[r]:Object.entries(i.tracks).forEach((([e,r])=>{r.updated<t?delete i.tracks[e]:Object.entries(r.ssrcs).forEach((([e,i])=>{i.updated<t&&delete r.ssrcs[e]}))}))}))};function Df(e,{logger:t,interval:r},i){return _f(this,void 0,void 0,(function*(){const s=Df.bind(null,e,{interval:r,logger:t});try{const t=e.getClients(),n=t.find((e=>e.isLocalClient&&!e.isPresentation))||{id:"unknown"};let a=e.statsByView[n.id];a||(a={tracks:{},candidatePairs:{},pressure:null},e.statsByView[n.id]=a),a.pressure=e.lastPressureObserverRecord;if(Date.now()-e.lastUpdateTime<400)return i?e.statsByView:(e.subscriptions.forEach((r=>{var i;return null===(i=r.onUpdatedStats)||void 0===i?void 0:i.call(r,e.statsByView,t)})),void(e.nextTimeout=setTimeout(s,r)));if(e.lastUpdateTime=Date.now(),(yield Tf()).forEach((([i,s,o])=>{const c=Cf(i);"closed"===i.connectionState&&(s=new Map,wf(i)),o.previousSSRCs=o.currentSSRCs||{},o.currentSSRCs={},s.forEach((i=>{var d,l,p;if("candidate-pair"===i.type&&/inprogress|succeeded/.test(i.state)){const t=null===(d=o._oldReport)||void 0===d?void 0:d.get(i.id),n=t?i.timestamp-t.timestamp:r,l=c+":"+i.id;let p=a.candidatePairs[l];p||(p={startTime:e.lastUpdateTime,id:l},a.candidatePairs[l]=p),function(e,t,r,i,s){const n=t.bytesReceived-((null==r?void 0:r.bytesReceived)||0),a=t.bytesSent-((null==r?void 0:r.bytesSent)||0);e.bitrateIn=8e3*n/i,e.bitrateOut=8e3*a/i,e.state=t.state,e.roundTripTime=t.currentRoundTripTime,e.requestsSent=t.requestsSent,e.responsesReceived=t.responsesReceived,e.requestsReceived=t.requestsReceived,e.responsesSent=t.responsesSent,e.availableOutgoingBitrate=t.availableOutgoingBitrate,e.availableIncomingBitrate=t.availableIncomingBitrate;const o=s.get(t.remoteCandidateId),c=s.get(t.localCandidateId);e.usingTurn=!1,c&&/relay/i.test(c.candidateType||"")&&(e.usingTurn=!0,e.turnProtocol=c.relayProtocol),o&&c&&(e.localEp=`${c.protocol}:${c.address||c.ip}:${c.port} ${c.candidateType} (${c.networkType})`,e.remoteEp=`${o.protocol}:${o.address||o.ip}:${o.port} ${o.candidateType}`)}(p,i,t,n,s),p.lastRtcStatsTime=e.lastUpdateTime}if("inbound-rtp"===i.type||"outbound-rtp"===i.type){const a=i.mediaType||i.kind,d=i.ssrc;let u=i.trackIdentifier||o.ssrcToTrackId[d],h=null===(l=o._oldReport)||void 0===l?void 0:l.get(i.id);if(h&&h.mediaSourceId!==i.mediaSourceId){const e=s.get(i.mediaSourceId);e&&e.trackIdentifier&&(u=e.trackIdentifier,o.ssrcToTrackId[d]=u)}const m=t.find((e=>{var t;return(null===(t=e[a].track)||void 0===t?void 0:t.id)===u}))||n;if(!i.trackIdentifier&&o.ssrcToTrackId[d]&&(null===(p=m[a].track)||void 0===p?void 0:p.id)&&m[a].track.id!==o.ssrcToTrackId[d]&&(u=m[a].track.id,o.ssrcToTrackId[d]=m[a].track.id),o.currentSSRCs[d]=m.id,h){const e=s.get(i.transportId),t=o._oldReport.get(h.transportId);(t&&(null==e?void 0:e.selectedCandidatePairId)!==t.selectedCandidatePairId||i.bytesReceived<h.bytesReceived||i.bytesSent<h.bytesSent)&&(h=null)}const f=h?i.timestamp-h.timestamp:r,g=kf(e.statsByView,e.lastUpdateTime,c,m.id,u,d);!function(e,t,r,i,s){if(e.codec)return;e.kind=t.kind||t.mediaType,e.ssrc=t.ssrc,e.direction="inbound-rtp"===t.type?"in":"out";const n=t.codecId&&s.get(t.codecId);e.codec=n&&[n.mimeType,n.channels&&`${n.channels}ch`,n.clockRate,n.payloadType,t.encoderImplementation||t.decoderImplementation,n.sdpFmtpLine].filter(Boolean).join(" "),e.mid=t.mid,e.rid=t.rid}(g,i,0,0,s),function(e,t,r,i,s){const n=(t.nackCount||0)-((null==r?void 0:r.nackCount)||0);if(e.nackCount=(e.nackCount||0)+n,e.nackRate=1e3*n/i,"in"===e.direction){const s=t.packetsReceived-((null==r?void 0:r.packetsReceived)||0);e.packetCount=(e.packetCount||0)+s,e.packetRate=1e3*s/i;const n=t.packetsLost-((null==r?void 0:r.packetsLost)||0);e.packetLossCount=(e.packetLossCount||0)+n,e.packetLossRate=1e3*n/i,e.lossRatio=n/(n+s)*1e3/i;const a=t.bytesReceived-((null==r?void 0:r.bytesReceived)||0);e.byteCount=(e.byteCount||0)+a;let o=0;t.headerBytesReceived&&(o=t.headerBytesReceived-((null==r?void 0:r.headerBytesReceived)||0),e.headerByteCount=(e.headerByteCount||0)+o);const c=a+o;if(e.bitrate=8e3*c/i,e.mediaRatio=a/c,"audio"===t.kind){const i=(t.fecBytesReceived||0)-((null==r?void 0:r.fecBytesReceived)||0);e.fecRatio=i/a}const d=(t.jitterBufferDelay||0)-((null==r?void 0:r.jitterBufferDelay)||0),l=(t.jitterBufferEmittedCount||0)-((null==r?void 0:r.jitterBufferEmittedCount)||0);e.jitter=l?d/l:0}else{const n=t.packetsSent-((null==r?void 0:r.packetsSent)||0);e.packetCount=(e.packetCount||0)+n,e.packetRate=1e3*n/i;const a=t.bytesSent-((null==r?void 0:r.bytesSent)||0);e.byteCount=(e.byteCount||0)+a;let o=0;t.headerBytesSent&&(o=t.headerBytesSent-((null==r?void 0:r.headerBytesSent)||0),e.headerByteCount=(e.headerByteCount||0)+o);const c=a+o;e.bitrate=8e3*c/i,e.mediaRatio=a/c;const d=t.totalPacketSendDelay-((null==r?void 0:r.totalPacketSendDelay)||0);e.sendDelay=d/n;const l=t.retransmittedPacketsSent-((null==r?void 0:r.retransmittedPacketsSent)||0);if(e.retransRatio=l/n*1e3/i,t.remoteId){const r=s.get(t.remoteId);r&&(e.roundTripTime=r.roundTripTime||0,e.jitter=r.jitter||0,e.fractionLost=r.fractionLost||0)}}}(g,i,h,f,s),"video"===a&&function(e,t,r,i,s){e.width=t.frameWidth,e.height=t.frameHeight,e.qualityLimitationReason=t.qualityLimitationReason||"";const n=t.pliCount-((null==r?void 0:r.pliCount)||0);e.pliCount=(e.pliCount||0)+n,e.pliRate=1e3*n/i;const a=t.firCount-((null==r?void 0:r.firCount)||0);if(e.firCount=(e.firCount||0)+a,e.firRate=1e3*a/i,"in"===e.direction){const s=t.keyFramesDecoded-((null==r?void 0:r.keyFramesDecoded)||0);e.kfCount=(e.kfCount||0)+s,e.kfRate=1e3*s/i;const n=t.framesDecoded-((null==r?void 0:r.framesDecoded)||0);e.frameCount=(e.frameCount||0)+n;const a=t.qpSum-((null==r?void 0:r.qpSum)||0);e.qpf=a/n,e.fps=1e3*n/i}else{const n=t.keyFramesEncoded-((null==r?void 0:r.keyFramesEncoded)||0);e.kfCount=(e.kfCount||0)+n,e.kfRate=1e3*n/i;const a=t.framesEncoded-((null==r?void 0:r.framesEncoded)||0);e.frameCount=(e.frameCount||0)+a;const o=t.qpSum-((null==r?void 0:r.qpSum)||0);e.qpf=o/a,e.fps=1e3*a/i;const c=t.totalEncodeTime-((null==r?void 0:r.totalEncodeTime)||0);if(e.encodeTime=c/a,t.mediaSourceId){const r=s.get(t.mediaSourceId);r&&(e.sourceWidth=r.width||0,e.sourceHeight=r.height||0,e.sourceFps=r.framesPerSecond||0)}}}(g,i,h,f,s),"audio"===a&&function(e,t,r,i,s){const n=t.packetsDiscarded-((null==r?void 0:r.packetsDiscarded)||0);if(e.packetsDiscarded=(e.packetsDiscarded||0)+n,"in"===e.direction){const i=t.totalAudioEnergy-((null==r?void 0:r.totalAudioEnergy)||0),s=t.totalSamplesDuration-((null==r?void 0:r.totalSamplesDuration)||0);e.audioLevel=Math.sqrt(i/s);const n=t.totalSamplesReceived||0,a=t.concealmentEvents||0,o=n-((null==r?void 0:r.totalSamplesReceived)||0),c=t.concealedSamples||0,d=c-((null==r?void 0:r.concealedSamples)||0),l=(t.silentConcealedSamples||0)-((null==r?void 0:r.silentConcealedSamples)||0),p=(t.insertedSamplesForDeceleration||0)-((null==r?void 0:r.insertedSamplesForDeceleration)||0),u=(t.removedSamplesForAcceleration||0)-((null==r?void 0:r.removedSamplesForAcceleration)||0);e.audioSamples=n,e.audioConcealmentEvents=a,e.audioConcealedSamples=c,e.audioConcealment=d?d/o:0,e.audioSilentConcealment=l?l/o:0,e.audioAcceleration=u?u/o:0,e.audioDeceleration=p?p/o:0}}(g,i,h)}})),o._oldReport=s,Object.keys(o.previousSSRCs).filter((e=>!o.currentSSRCs[e])).forEach((t=>{const r=o.previousSSRCs[t];if(r){const i=e.statsByView[r];i&&Object.values(i.tracks).forEach((e=>{e.ssrcs[t]&&delete e.ssrcs[t]}))}}))})),Pf(e.statsByView,e.lastUpdateTime),Object.entries(a.candidatePairs).forEach((([t,r])=>{const i=r.lastRtcStatsTime===e.lastUpdateTime;r.active=i,i||(r.state="old/inactive",r.inactiveFromTime?e.lastUpdateTime-r.inactiveFromTime>4e3&&delete a.candidatePairs[t]:r.inactiveFromTime=e.lastUpdateTime)})),i)return e.statsByView;e.subscriptions.forEach((r=>{var i;return null===(i=r.onUpdatedStats)||void 0===i?void 0:i.call(r,e.statsByView,t)}))}catch(e){t.warn(e)}e.nextTimeout=setTimeout(s,r)}))}const If={};function Ef(e,t=If,r=window.document){e.forEach((({hostnamePattern:e,token:i})=>{const s=`${e}-${i}`;if(!t[s]&&e.test(r.location.hostname)){const e=r.createElement("meta");e.httpEquiv="origin-trial",e.content=i,r.head.append(e),t[s]=!0}}))}const Of={sampleRate:1,originTrials:[{hostnamePattern:/hereby\.dev/,token:"AkSNPHJw6EK08X0QU7kORnK9NABzRLAC7dqfXOwk5JwFAQG4Ey7WxLXxsnhieCgC1QHUdevE2EFICy7uBGDANwUAAABqeyJvcmlnaW4iOiJodHRwczovL2hlcmVieS5kZXY6NDQ0MyIsImZlYXR1cmUiOiJDb21wdXRlUHJlc3N1cmVfdjIiLCJleHBpcnkiOjE3MTY5NDA3OTksImlzU3ViZG9tYWluIjp0cnVlfQ=="},{hostnamePattern:/whereby\.com/,token:"Asc2wu8KpSx648i932NICteQDFcB05yl2QUUSHD7AQo8JGP2Fp6FF91TvYVJBsKGzLMH349rysPw5q9tqPC/PAUAAABqeyJvcmlnaW4iOiJodHRwczovL3doZXJlYnkuY29tOjQ0MyIsImZlYXR1cmUiOiJDb21wdXRlUHJlc3N1cmVfdjIiLCJleHBpcnkiOjE3MTY5NDA3OTksImlzU3ViZG9tYWluIjp0cnVlfQ=="}]};const xf={currentMonitor:null,getClients:()=>[],lastUpdateTime:0,statsByView:{},subscriptions:[]},Mf={interval:2e3,logger:new vf},jf=()=>{var e;return null===(e=xf.currentMonitor)||void 0===e?void 0:e.getUpdatedStats()};function Lf(e,{interval:t,logger:r}){const i=Df.bind(null,e,{interval:t,logger:r});let s;try{s=function(e,{sampleRate:t,originTrials:r}=Of,i=globalThis.window){let s;if(Ef(r),"PressureObserver"in i)return s=new i.PressureObserver(e,{sampleRate:t}),s.observe("cpu",{sampleInterval:1e3*t}),{stop:()=>{s.unobserve("cpu")}}}((t=>e.lastPressureObserverRecord=t.pop()))}catch(e){r.warn("Failed to observe CPU pressure",e)}return setTimeout(i,t),{getUpdatedStats:()=>i(!0),stop:()=>{clearTimeout(e.nextTimeout),s&&s.stop()}}}const Af=[{id:"desync",enabled:({client:e,track:t,stats:r})=>!e.isLocalClient&&"audio"===(null==t?void 0:t.kind)&&"object"==typeof(null==r?void 0:r.tracks)&&Object.keys(r.tracks).length>1,check:({stats:{tracks:e}})=>{const t={audio:0,video:0};Object.values(e).flatMap((e=>Object.values(e.ssrcs))).forEach((e=>{"audio"===e.kind&&e.jitter>t.audio&&(t.audio=e.jitter),"video"===e.kind&&e.jitter>t.video&&(t.video=e.jitter)}));return Math.abs(1e3*t.audio-1e3*t.video)>500}},{id:"no-track",enabled:()=>!0,check:({client:e,clients:t,kind:r,track:i})=>{if(!i&&!e.isLocalClient&&"video"===r){const e=t.find((e=>e.isLocalClient));if(e)return!e.isAudioOnlyModeEnabled}return!i}},{id:"ended-track",enabled:({track:e})=>!!e,check:({track:e})=>"ended"===(null==e?void 0:e.readyState)},{id:"no-track-stats",enabled:({hasLiveTrack:e})=>e,check:({client:e,clients:t,kind:r,ssrcs:i})=>{if(0===i.length&&!e.isLocalClient&&"video"===r){const e=t.find((e=>e.isLocalClient));if(e)return!e.isAudioOnlyModeEnabled}return 0===i.length}},{id:"dry-track",enabled:({hasLiveTrack:e,ssrcs:t})=>!(!e||!t),check:({client:e,clients:t,ssrcs:r})=>{let i=!1;if(r.forEach((e=>{i=i||e.bitrate>0})),!i&&e.isLocalClient){const e=t.filter((e=>!e.isLocalClient));if(e.length>0)return!e.every((e=>e.isAudioOnlyModeEnabled))}return!i}},{id:"low-layer0-bitrate",enabled:({hasLiveTrack:e,ssrc0:t,kind:r,client:i})=>e&&"video"===r&&t&&t.height&&!i.isPresentation,check:({ssrc0:e})=>e.height<200&&e.bitrate<3e4},{id:"quality-limitation-bw",enabled:({hasLiveTrack:e,stats:t,client:r,kind:i})=>e&&r.isLocalClient&&"video"===i&&t,check:({stats:e})=>!!Object.values(e.tracks).find((e=>Object.values(e.ssrcs).find((e=>"bandwidth"===e.qualityLimitationReason))))},{id:"quality-limitation-cpu",enabled:({hasLiveTrack:e,stats:t,client:r,kind:i})=>e&&r.isLocalClient&&"video"===i&&t,check:({stats:e})=>!!Object.values(e.tracks).find((e=>Object.values(e.ssrcs).find((e=>"cpu"===e.qualityLimitationReason))))},{id:"high-plirate",enabled:({hasLiveTrack:e,ssrc0:t})=>e&&t&&t.height,check:({ssrc0:e})=>e.pliRate>2},{id:"extreme-plirate",enabled:({hasLiveTrack:e,ssrc0:t})=>e&&t&&t.height,check:({ssrc0:e})=>e.pliRate>5},{id:"high-packetloss",enabled:({hasLiveTrack:e,ssrc0:t})=>e&&t&&"in"===t.direction,check:({ssrc0:e})=>e.lossRatio>.02},{id:"extreme-packetloss",enabled:({hasLiveTrack:e,ssrc0:t})=>e&&t&&"in"===t.direction,check:({ssrc0:e})=>e.lossRatio>.1},{id:"high-packetloss",enabled:({hasLiveTrack:e,ssrc0:t})=>e&&t&&"out"===t.direction,check:({ssrc0:e})=>(e.fractionLost||0)>.02},{id:"extreme-packetloss",enabled:({hasLiveTrack:e,ssrc0:t})=>e&&t&&"out"===t.direction,check:({ssrc0:e})=>(e.fractionLost||0)>.1},{id:"fps-below-20",enabled:({hasLiveTrack:e,ssrc0:t,kind:r,client:i})=>e&&t&&t.height&&"video"===r&&!i.isPresentation,check:({ssrc0:e})=>e.height>180&&e.fps<20},{id:"fps-below-10",enabled:({hasLiveTrack:e,ssrc0:t,kind:r,client:i})=>e&&t&&t.height&&"video"===r&&!i.isPresentation,check:({ssrc0:e})=>e.fps<10},{id:"bad-network",enabled:({hasLiveTrack:e,ssrcs:t})=>e&&t.length>0,check:({client:e,clients:t,kind:r,ssrcs:i})=>{if(!i.some((e=>e.bitrate>0))&&e.isLocalClient&&"video"===r){const e=t.filter((e=>!e.isLocalClient));if(e.length>0)return!e.every((e=>e.isAudioOnlyModeEnabled))}const s=i[0];return!!s&&(0===s.bitrate||s.lossRatio>.03||(s.fractionLost||0)>.03||!e.isPresentation&&"video"===r&&s.bitrate<3e4||"in"===s.direction&&s.pliRate>2)}},{id:"cpu-pressure-serious",global:!0,enabled:({stats:e})=>{var t;return"cpu"===(null===(t=null==e?void 0:e.pressure)||void 0===t?void 0:t.source)},check:({stats:e})=>"serious"===e.pressure.state},{id:"cpu-pressure-critical",global:!0,enabled:({stats:e})=>{var t;return"cpu"===(null===(t=null==e?void 0:e.pressure)||void 0===t?void 0:t.source)},check:({stats:e})=>"critical"===e.pressure.state},{id:"concealed",enabled:({hasLiveTrack:e,ssrc0:t,kind:r})=>e&&t&&"audio"===r,check:({ssrc0:e})=>e.bitrate&&"in"===e.direction&&e.audioLevel>=.001&&e.audioConcealment>=.1},{id:"decelerated",enabled:({hasLiveTrack:e,ssrc0:t,kind:r})=>e&&t&&"audio"===r,check:({ssrc0:e})=>e.bitrate&&"in"===e.direction&&e.audioLevel>=.001&&e.audioDeceleration>=.1},{id:"accelerated",enabled:({hasLiveTrack:e,ssrc0:t,kind:r})=>e&&t&&"audio"===r,check:({ssrc0:e})=>e.bitrate&&"in"===e.direction&&e.audioLevel>=.001&&e.audioAcceleration>=.1}];let Nf=[],Bf=null;const Ff=[{id:"bitrate",enabled:({hasLiveTrack:e,track:t,ssrc0:r})=>e&&t&&r,value:({trackStats:e})=>Object.values(e.ssrcs).reduce(((e,t)=>e+t.bitrate),0)},{id:"pixelrate",enabled:({hasLiveTrack:e,track:t,ssrc0:r,kind:i})=>e&&"video"===i&&t&&r&&r.height,value:({trackStats:e})=>Object.values(e.ssrcs).reduce(((e,t)=>e+(t.fps||0)*(t.width||0)*(t.height||0)),0)},{id:"height",enabled:({hasLiveTrack:e,track:t,ssrc0:r,kind:i})=>e&&"video"===i&&t&&r&&r.height,value:({trackStats:e})=>Object.values(e.ssrcs).reduce(((e,t)=>Math.max(e,t.fps>0?t.height:0)),0)},{id:"sourceHeight",enabled:({hasLiveTrack:e,track:t,ssrc0:r,kind:i})=>e&&"video"===i&&t&&r&&r.sourceHeight&&"out"===r.direction,value:({ssrc0:e})=>e.sourceHeight},{id:"packetloss",enabled:({hasLiveTrack:e,ssrc0:t})=>e&&t&&t.bitrate,value:({ssrc0:e})=>("in"===e.direction?e.lossRatio:e.fractionLost)||0},{id:"jitter",enabled:({hasLiveTrack:e,ssrc0:t})=>e&&t&&t.bitrate&&"in"===t.direction,value:({ssrc0:e})=>e.jitter},{id:"mos",enabled:({hasLiveTrack:e,ssrc0:t})=>e&&t&&t.bitrate&&"out"===t.direction,value:({ssrc0:e})=>{const t=(e.roundTripTime||0)+2*(e.jitter||0)+10;let r=t<160?93.2-t/40:93.2-(t-120)/10;r-=2.5*(100*(e.fractionLost||0));return 1+.035*r+7e-6*r*(r-60)*(100-r)}},{id:"rendered",value:()=>1},{id:"active",value:({hasLiveTrack:e,track:t,ssrc0:r})=>e&&t&&r?1:0},{id:"cpu-pressure",global:!0,enabled:({stats:e})=>{var t;return"cpu"===(null===(t=null==e?void 0:e.pressure)||void 0===t?void 0:t.source)},value:({stats:e})=>({nominal:.25,fair:.5,serious:.75,critical:1}[e.pressure.state]||0)},{id:"turn-usage",global:!0,enabled:({stats:e})=>!!Object.values(e.candidatePairs).length,value:({stats:e})=>Object.values(e.candidatePairs).some((e=>e.usingTurn))},{id:"turn-tls-usage",global:!0,enabled:({stats:e})=>!!Object.values(e.candidatePairs).length,value:({stats:e})=>Object.values(e.candidatePairs).some((e=>"tls"===e.turnProtocol))},{id:"concealment",enabled:({hasLiveTrack:e,ssrc0:t,kind:r})=>e&&t&&t.bitrate&&"in"===t.direction&&"audio"===r&&t.audioLevel>=.001,value:({ssrc0:e})=>e.audioConcealment},{id:"deceleration",enabled:({hasLiveTrack:e,ssrc0:t,kind:r})=>e&&t&&t.bitrate&&"in"===t.direction&&"audio"===r&&t.audioLevel>=.001,value:({ssrc0:e})=>e.audioDeceleration},{id:"acceleration",enabled:({hasLiveTrack:e,ssrc0:t,kind:r})=>e&&t&&t.bitrate&&"in"===t.direction&&"audio"===r&&t.audioLevel>=.001,value:({ssrc0:e})=>e.audioAcceleration},{id:"qpf",enabled:({hasLiveTrack:e,track:t,ssrc0:r,kind:i})=>e&&"video"===i&&t&&r&&r.height,value:({trackStats:e})=>Object.values(e.ssrcs).reduce(((e,t)=>e+(t.qpf||0)),0)}];let $f,Vf,Uf;const zf=()=>{$f={},Vf={},Uf={aggregated:{issues:Vf,metrics:$f}}};function qf(e,t){Object.values($f).forEach((e=>{e.curTicks=0,e.curSum=0,e.curMax=0,e.curMin=0,e.curAvg=0})),Object.values(Vf).forEach((e=>{e.curTicks=0,e.curRegistered=0,e.active=!1})),t.find((e=>!e.isLocalClient))&&(t.forEach((r=>{const i=e[r.id];["video","audio","global"].forEach((e=>{var s,n;if(("global"!==e||r.isPresentation)&&!(null===(s=r[e])||void 0===s?void 0:s.enabled))return;if("global"===e&&!r.isLocalClient)return;let a=Uf[r.id];a||(a={issues:{},metrics:{}},Uf[r.id]=a);const o=null===(n=r[e])||void 0===n?void 0:n.track,c=!!o&&"ended"!==o.readyState,d=o&&i&&i.tracks[o.id],l=d?Object.values(d.ssrcs).sort(((e,t)=>(e.height||Number.MAX_SAFE_INTEGER)-(t.height||Number.MAX_SAFE_INTEGER))):[],p=l[0],u={client:r,clients:t,kind:e,track:o,trackStats:d,stats:i,hasLiveTrack:c,ssrc0:p,ssrcs:l,issues:a.issues,metrics:a.metrics},h="global"===e?"global":`${r.isLocalClient?"loc":"rem"}-${r.isPresentation?"pres":"cam"}-${e}`;Ff.forEach((t=>{if(t.global&&"global"!==e)return;if(!t.global&&"global"===e)return;if(!t.enabled||t.enabled(u)){const e=`${h}-${t.id}`;let r=a.metrics[e];const i=t.value(u);r||(r={ticks:0,sum:0,avg:0,min:i,max:i},a.metrics[e]=r),r.ticks++,r.sum+=i,r.min=Math.min(r.min,i),r.max=Math.max(r.max,i),r.avg=r.sum/r.ticks;let s=$f[e];s||(s={ticks:0,sum:0,min:i,max:i,avg:0,curTicks:0,curMin:0,curMax:0,curAvg:0,curSum:0,totTicks:0,totMin:0,totMax:0,totAvg:0,totSum:0},$f[e]=s),s.ticks++,s.sum+=i,s.min=Math.min(s.min,i),s.max=Math.max(s.max,i),s.avg=s.sum/s.ticks,0===s.curTicks?(s.curMax=i,s.curMin=i,s.curSum=i):(s.curMax=Math.max(s.curMax,i),s.curMin=Math.min(s.curMin,i),s.curSum+=i),s.curTicks++}})),Af.forEach((t=>{if(t.global&&"global"!==e)return;if(!t.global&&"global"===e)return;const r=`${h}-${t.id}`,i=t.enabled(u);let s=a.issues[r],n=Vf[r];if(i){s||(s={active:!1,ticks:0,registered:0,initial:0,periods:0,current:0,longest:0},a.issues[r]=s),s.ticks++,n||(n={active:!1,ticks:0,registered:0,initial:0,curTicks:0,curRegistered:0},Vf[r]=n),n.ticks++,n.curTicks++;t.check(u)?(s.registered++,s.current++,s.active||(s.active=!0,s.periods++),s.ticks===s.initial+1&&(s.initial++,n.initial++),s.current>s.longest&&(s.longest=s.current),n.active=!0,n.registered++,n.curRegistered++):(s.active=!1,s.current=0)}else s&&(s.active=!1,s.current=0)}))}))})),Object.values($f).forEach((e=>{e.curTicks&&(e.curAvg=e.curSum/e.curTicks,0===e.totTicks&&(e.totMin=e.curSum,e.totMax=e.curSum),e.totTicks++,e.totSum+=e.curSum,e.totMin=Math.min(e.totMin,e.curSum),e.totMax=Math.max(e.totMax,e.curSum),e.totAvg=e.totSum/e.totTicks)})),Object.values(Vf).forEach((e=>{e.curTicks})),Nf.forEach((r=>{var i;return null===(i=r.onUpdatedIssues)||void 0===i?void 0:i.call(r,Uf,e,t)})))}function Gf(e){return Nf.push(e),Bf||(Bf=function(e,t=Mf,r=xf){return r.subscriptions.push(e),r.currentMonitor||(r.currentMonitor=Lf(r,t)),{stop(){var t;r.subscriptions=r.subscriptions.filter((t=>t!==e)),r.subscriptions.length||(null===(t=r.currentMonitor)||void 0===t||t.stop(),r.currentMonitor=null)}}}({onUpdatedStats:qf}).stop),{stop(){Nf=Nf.filter((t=>t!==e)),Nf.length||(null==Bf||Bf(),Bf=null,zf())}}}zf();class Wf{static parse(e){let t;try{t=JSON.parse(e)}catch(e){return}if("object"==typeof t&&!Array.isArray(t))return t.request?Wf._handleRequest(t):t.response?Wf._handleResponse(t):t.message?Wf._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 Hf=new vf;class Kf extends Gi{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()}isConnected(){var e,t;return(null===(e=this.socket)||void 0===e?void 0:e.readyState)===WebSocket.OPEN||(null===(t=this.socket)||void 0===t?void 0:t.readyState)===WebSocket.CONNECTING}_onOpen(){Hf.info("Connected"),this.emit("open")}_onMessage(e){const t=Wf.parse(e.data);Hf.info("Received message",t),(null==t?void 0:t.response)?this._handleResponse(t):(null==t?void 0:t.message)&&this.emit("message",t)}_onClose(){Hf.info("Disconnected"),this._tearDown()}_onError(e){Hf.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=Wf.createMessage(e,t);this.send(r)}request(e,t={},r=1500*(15+.1*this.sents.size)){const i=Wf.createRequest(e,t);return this.send(i),new Promise(((e,t)=>{const s={id:i.id,method:i.method,resolve:t=>{this.sents.delete(i.id)&&(clearTimeout(s.timer),e(t))},reject:e=>{this.sents.delete(i.id)&&(clearTimeout(s.timer),t(e))},timer:setTimeout((()=>{this.sents.delete(i.id)&&t(new Error("request timeout"))}),r),close:()=>{clearTimeout(s.timer),t(new Error("transport closed"))}};this.sents.set(i.id,s)}))}}const Jf={codecOptions:{opusDtx:!0,opusFec:!0},encodings:[{dtx:!0}]},Qf={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:4,maxBitrate:15e4},{scaleResolutionDownBy:2,maxBitrate:5e5},{scaleResolutionDownBy:1,maxBitrate:1e6}]},Zf={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:2,maxBitrate:15e4},{scaleResolutionDownBy:1,maxBitrate:5e5}]},Yf={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scalabilityMode:"L3T2_KEY"}]},Xf={encodings:[{}]},eg={encodings:[{scaleResolutionDownBy:2,dtx:!0,maxBitrate:5e5},{scaleResolutionDownBy:1,dtx:!0,maxBitrate:15e5}]},tg={encodings:[{dtx:!0}]},rg=(e,t,r)=>{const{lowDataModeEnabled:i,simulcastScreenshareOn:s,vp9On:n}=r;return"audio"===e?Jf:t?n?tg:s?eg:Xf:n?Yf:i?Zf:Qf},ig=()=>{let e=ts.detectDevice()||(/applecoremedia|applewebkit|safari/i.test(navigator.userAgent)?"Safari12":void 0);return/iphone|ipad/i.test(navigator.userAgent)&&(e="Safari12"),e};var sg;const ng=null!==(sg=ku.default)&&void 0!==sg?sg:ku;const ag=400;var og;const cg="safari"===(null!==(og=ku.default)&&void 0!==og?og:ku).browserDetails.browser,dg=e=>e.split(/[^\d]/g).map((e=>parseInt(e,10)));function lg({devices:e,videoId:t,audioId:r,options:i,type:s="ideal"}){const n=e.filter((e=>"audioinput"===e.kind)),a=e.filter((e=>"videoinput"===e.kind)),o=!r||!n.some((e=>e.deviceId===r)),c=!t||!a.some((e=>e.deviceId===t)),d=function({disableAEC:e,disableAGC:t,hd:r,lax:i,lowDataMode:s,preferredDeviceIds:n,resolution:a,simulcast:o,widescreen:c}){var d,l;let p=480,u=240;r&&(p=i||cg?720:{min:360,ideal:720}),o&&(!1===r?(p=360,u=270):u=360);const h={audio:Object.assign({},n.audioId&&{deviceId:n.audioId}),video:Object.assign(Object.assign({},n.videoId?{deviceId:n.videoId}:{facingMode:"user"}),{height:s?u:p,frameRate:s&&!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]=dg(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:{[s]:r},videoId:c?null:{[s]:t}}},i));return!1!==r&&n.length||delete d.audio,!1!==t&&a.length||delete d.video,d}const pg=new vf,ug=/mobi/i.test(navigator.userAgent);class hg extends Error{constructor(...e){super(...e),this.name="nodevices"}}function mg(e){return e.audio||e.video?navigator.mediaDevices.getUserMedia(e).catch((t=>{const r=`${t}, ${JSON.stringify(e,null,2)}`;throw pg.error(`getUserMedia ${r}`),t})):Promise.reject(new hg("No provided devices"))}function fg(e,t,r,i){var s,n,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===(n=r.find((r=>t.label===r.label&&r.kind===e)))||void 0===n?void 0:n.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===(s=r.find((t=>t.deviceId===i&&t.kind===e)))||void 0===s?void 0:s.deviceId),o)}function gg(e,t){t&&"audio"!==t||e.getAudioTracks().forEach((e=>e.stop())),t&&"video"!==t||e.getVideoTracks().forEach((e=>e.stop()))}function vg(e,{replaceStream:t,fallback:r=!0}={}){var i;return _f(this,void 0,void 0,(function*(){let s,n,a,o=null;const c=!1===e.audioId?"video":!1===e.videoId&&"audio",d=ug||"video"!==c,l=lg(e),p=(e,t)=>(e.details=Object.assign({constraints:l,constraint:e.constraint||(null==t?void 0:t.constraint),newConstraints:n,fallback:r,stopTracks:d},e!==s&&{error:String(s)}),e);d&&t&&gg(t,c);try{o=yield mg(l)}catch(n){if(s=n,!r)throw p(n);if("OverconstrainedError"===n.name){a={deviceId:{videoId:null,audioId:null},width:{lax:!0},height:{lax:!0},"":{audioId:null,videoId:null,lax:!0}}[n.constraint||""]}else if("NotFoundError"===n.name){if(l.audio&&l.video){try{o=yield mg(lg(Object.assign(Object.assign({},e),{audioId:!1})))}catch(e){if("NotFoundError"!==e.name)throw p(e,n)}try{o||(o=yield mg(lg(Object.assign(Object.assign({},e),{videoId:!1}))))}catch(e){throw p(e,n)}}}else if("NotAllowedError"===n.name||"NotReadableError"===n.name||"AbortError"===n.name)if(t&&!d)gg(t,c),a=e;else if("NotAllowedError"!==n.name){try{o=yield mg(lg(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{lax:!0})})))}catch(e){pg.warn("Tried getting stream again with laxer constraints, but failed: "+(""+e))}const t=(""+n).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 mg(lg(Object.assign(Object.assign({},e),{[r]:null})))}catch(e){pg.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 mg(lg(Object.assign(Object.assign({},e),{[r]:!1})))}catch(e){pg.warn(`Re-tried without ${r}, but failed: ${""+e}`)}if(o)break}}}}if(a){const t=c?{audio:{videoId:!1},video:{audioId:!1}}[c]:{};n=lg(Object.assign(Object.assign(Object.assign(Object.assign({},e),a),{options:Object.assign(Object.assign({},e.options),{lax:a.lax})}),t));try{o=yield mg(n)}catch(e){throw p(e,s)}}if(!o)throw p(s);let u;return t&&(d||gg(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:s&&p(s),stream:o,replacedTracks:u}}))}function _g({oldDevices:e,newDevices:t,currentAudioId:r,currentVideoId:i,currentSpeakerId:s}){const n=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})})),{}))),s={};return e.forEach((e=>{e.kind&&e.deviceId&&(s[e.kind]||(s[e.kind]={added:{},removed:{},changed:{}}),i[e.kind]&&i[e.kind][e.deviceId]||(s[e.kind].removed[e.deviceId]=e))})),t.forEach((e=>{e.kind&&e.deviceId&&(s[e.kind]||(s[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&&(s[e.kind].changed[e.deviceId]=e):s[e.kind].added[e.deviceId]=e)})),s}(e,t),a={},o={};return[["audioinput",r],["videoinput",i],["audiooutput",s]].forEach((([e,r])=>{const i=n[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}}ku.default;const bg={id:Lu(),connectionNumber:0},yg=()=>{};let Sg=yg;const wg=function(e,t=console){const r=[];let i,s,n,a,o,c,d,l,p,u,h,m,f=0,g=!1,v=0;const _={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;c=e,g&&r&&r!==t&&(null==i||i.close()),r&&(g=!0)}else"customEvent"===e[0]&&"clientId"===e[2].type?n=e:"customEvent"===e[0]&&"organizationId"===e[2].type?s=e:"customEvent"===e[0]&&"displayName"===e[2].type?a=e:"customEvent"===e[0]&&"userRole"===e[2].type?o=e:"customEvent"===e[0]&&"deviceId"===e[2].type?l=e:"customEvent"===e[0]&&"roomProduct"===e[2].type?p=e:"customEvent"===e[0]&&"roomMode"===e[2].type?u=e:"customEvent"===e[0]&&"sfuServer"===e[2].type?h=e:"customEvent"===e[0]&&"featureFlags"===e[2].type&&(m=e);(null==i?void 0:i.readyState)===WebSocket.OPEN?(f=0,i.send(JSON.stringify(e))):"getstats"===e[0]?v<20&&(v++,r.push(e)):"customEvent"===e[0]&&"insightsStats"===e[2].type||r.push(e),(null==i?void 0:i.readyState)===WebSocket.CLOSED&&d&&setTimeout((()=>{i.readyState===WebSocket.CLOSED&&d&&_.connect()}),1e3*f)},close:()=>{d=!1,null==i||i.close()},connect:()=>{d=!0,f+=1,null==i||i.close(),_.connected=!0,i=new WebSocket(e+window.location.pathname,"1.0"),i.onerror=e=>{_.connected=!1,t.warn("[RTCSTATS] WebSocket error",e)},i.onclose=e=>{_.connected=!1,t.info(`[RTCSTATS] Closed ${e.code}`),Sg()},i.onopen=()=>{for(bg.connectionNumber++,i.send(JSON.stringify(["clientInfo",null,bg])),s&&i.send(JSON.stringify(s)),n&&i.send(JSON.stringify(n)),c&&i.send(JSON.stringify(c)),a&&i.send(JSON.stringify(a)),o&&i.send(JSON.stringify(o)),l&&i.send(JSON.stringify(l)),u&&i.send(JSON.stringify(u)),p&&i.send(JSON.stringify(p)),h&&i.send(JSON.stringify(h)),m&&i.send(JSON.stringify(m));r.length;)i.send(JSON.stringify(r.shift()));v=0}}};return _}("wss://rtcstats.srv.whereby.com"),Cg=Iu(wg.trace,1e4,[""]);Sg=(null==Cg?void 0:Cg.resetDelta)||yg;const Rg={sendEvent:(e,t)=>{wg.trace("customEvent",null,{type:e,value:t})},sendAudioMuted:e=>{Rg.sendEvent("audio_muted",{muted:e})},sendVideoMuted:e=>{Rg.sendEvent("video_muted",{muted:e})},server:wg};var Tg;const kg=null!==(Tg=ku.default)&&void 0!==Tg?Tg:ku,Pg=new vf,Dg=kg.browserDetails.browser,Ig=kg.browserDetails.version;function Eg(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 Og(e){return"firefox"!==Dg?e:fu.splitLines(e.trim()).map((e=>e.startsWith("a=msid-semantic:")?"a=msid-semantic: WMS *":e)).join("\r\n")+"\r\n"}function xg(e){return function(e,t,r=!1,i=!1){var s,n;try{const a=Ma(e);if((null===(s=null==a?void 0:a.ext)||void 0===s?void 0:s.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===(n=o.find((e=>e.uri===t)))||void 0===n?void 0:n.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 s;(r&&"audio"===e.type||i&&"video"===e.type)&&((null===(s=e.ext)||void 0===s?void 0:s.find((e=>e.uri===t)))||(Array.isArray(e.ext)?e.ext.push({value:c,uri:t}):e.ext=[{value:c,uri:t}]))})),xa(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 Mg(e,t,r=console){const i=e.getSenders().find((e=>e.track&&"video"===e.track.kind));if(!i)return Promise.resolve();const s=i.getParameters();return s.encodings&&0===s.encodings.length?Promise.resolve():(s.encodings||(s.encodings=[{}]),0===t?delete s.encodings[0].maxBitrate:s.encodings[0].maxBitrate=1e3*t,i.setParameters(s).catch((e=>{r.error("setParameters err: ",e)})))}var jg;const Lg=null!==(jg=ku.default)&&void 0!==jg?jg:ku,Ag=new vf;class Ng{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 fu.splitSections(e).map((e=>{if("video"!==fu.getKind(e))return e;const t=fu.matchPrefix(e,"a=rtpmap:").map((e=>fu.parseRtpMap(e))).filter((e=>/h264/i.test(e.name))).map((e=>""+e.payloadType));if(!t.length)return e;const r=fu.matchPrefix(e,"m=video")[0],i=/(\s\d+)+$/i.exec(r),s=i?i[0]:"",n=[...s.split(" ").filter((e=>e&&!t.includes(e))),...t].join(" "),a=r.replace(s," "+n);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"!==Dg&&("firefox"!==Dg||Ig&&Ig>=63||60===Ig)?e:fu.splitLines(e.trim()).filter((e=>!e.startsWith("a=extmap:")||"urn:ietf:params:rtp-hdrext:sdes:mid"!==fu.parseExtmap(e).uri)).join("\r\n")+"\r\n"}(t),t=Og(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((()=>Mg(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=Og(t);const r={type:e.type,sdp:t};return this._setRemoteDescription(r).then((()=>Mg(this.pc,this.bandwidth)),(e=>{Ag.warn("Could not set remote description from remote answer: ",e)}))}addIceCandidate(e){this.srdComplete?this.srdComplete.then((()=>{"closed"!==this.pc.signalingState&&("safari"===Lg.browserDetails.browser&&e&&""===e.candidate||this.pc.addIceCandidate(e).catch((t=>{Ag.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){Ag.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();if(e||(e=(i.find((e=>e.track&&e.track.kind===t.kind))||{}).track),window.RTCRtpSender&&window.RTCRtpSender.prototype.replaceTrack){if(e){const r=()=>{for(let r=0;r<i.length;r++){const s=i[r].track;if((null==s?void 0:s.id)===t.id)return Promise.resolve(t);if((null==s?void 0:s.id)===e.id)return i[r].replaceTrack(t)}return null};let s=r();if(s)return s;let n=null,a=null;s=new Promise(((e,t)=>{n=e,a=t}));let o=0,c=setInterval((()=>_f(this,void 0,void 0,(function*(){const e=r();if(!e)return void(3<++o&&(clearInterval(c),c=null,a("No sender track to replace")));clearInterval(c),c=null;const t=yield e;n(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):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=Eg(r.localDescription.sdp,e.sdp),r.setLocalDescription(e)))).then((()=>this._setRemoteDescription(r.remoteDescription))):this._setRemoteDescription(r.remoteDescription).then((()=>r.createAnswer())).then((e=>(e.sdp=Eg(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 s=e.get(i.selectedCandidatePairId);if(!s)return;return t=e.get(s.localCandidateId).candidateType,void(r=e.get(s.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&&Mg(this.pc,this.bandwidth)):this.pending.push((()=>this.changeBandwidth(e))))}setAudioOnly(e,t=[]){this.pc.getTransceivers().filter((e=>{var r,i,s,n,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===(n=null===(s=null==e?void 0:e.receiver)||void 0===s?void 0:s.track)||void 0===n?void 0:n.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 Bg="fetch_mediaserver_config",Fg="start_screenshare",$g="stop_screenshare",Vg="audio_enabled",Ug="client_left",zg="mediaserver_config",qg="new_client",Gg="screenshare_started",Wg="screenshare_stopped",Hg="room_joined",Kg="video_enabled",Jg="ice_candidate",Qg="ice_endofcandidates",Zg="ready_to_receive_offer",Yg="sdp_answer",Xg="sdp_offer",ev="pending_client_left",tv="media_quality_changed",rv="client_connection_status_changed",iv="stream_added",sv="rtc_manager_created",nv="rtc_manager_destroyed",av="local_stream_track_added",ov="local_stream_track_removed",cv="connecting",dv="connection_failed",lv="connection_successful",pv="connection_disconnected",uv="camera",hv="screen_share";const mv=57600,fv=2.6041666666666665,gv=921600,vv=1.0850694444444444;const _v="[a-fA-F\\d:]",bv=e=>e&&e.includeBoundaries?`(?:(?<=\\s|^)(?=${_v})|(?<=${_v})(?=\\s|$))`:"",yv="(?: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}",Sv="[a-fA-F\\d]{1,4}",wv=`\n(?:\n(?:${Sv}:){7}(?:${Sv}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${Sv}:){6}(?:${yv}|:${Sv}|:)| // 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(?:${Sv}:){5}(?::${yv}|(?::${Sv}){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(?:${Sv}:){4}(?:(?::${Sv}){0,1}:${yv}|(?::${Sv}){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(?:${Sv}:){3}(?:(?::${Sv}){0,2}:${yv}|(?::${Sv}){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(?:${Sv}:){2}(?:(?::${Sv}){0,3}:${yv}|(?::${Sv}){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(?:${Sv}:){1}(?:(?::${Sv}){0,4}:${yv}|(?::${Sv}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::${Sv}){0,5}:${yv}|(?::${Sv}){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(),Cv=new RegExp(`(?:^${yv}$)|(?:^${wv}$)`),Rv=new RegExp(`^${yv}$`),Tv=new RegExp(`^${wv}$`),kv=e=>e&&e.exact?Cv:new RegExp(`(?:${bv(e)}${yv}${bv(e)})|(?:${bv(e)}${wv}${bv(e)})`,"g");kv.v4=e=>e&&e.exact?Rv:new RegExp(`${bv(e)}${yv}${bv(e)}`,"g"),kv.v6=e=>e&&e.exact?Tv:new RegExp(`${bv(e)}${wv}${bv(e)}`,"g");var Pv,Dv,Iv="connection_blocked_by_network",Ev="ice_ipv6_seen",Ov="ice_mdns_seen",xv="ice_no_public_ip_gathered",Mv="ice_no_public_ip_gathered_3sec",jv="ice_restart",Lv="microphone_not_working",Av="microphone_stopped_working",Nv="camera_stopped_working",Bv="new_pc",Fv="sfu_connection_open",$v="sfu_connection_closed",Vv="dominant_speaker";const Uv=null!==(Pv=ku.default)&&void 0!==Pv?Pv:ku,zv=new vf,qv=class{constructor(e,t){this.id=""+e,this.type=t,this.isEnabled=!0,this.hasSupportForAutoSuperSize=!1,this.isAudioEnabled=!0,this.isVideoEnabled=!0,this.status=cv,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?uv:hv}}.getCameraId(),Gv=Uv.browserDetails.browser,Wv=Uv.browserDetails.version;"firefox"===Gv&&Uv.browserShim&&"shimGetDisplayMedia"in Uv.browserShim&&(null===(Dv=Uv.browserShim)||void 0===Dv||Dv.shimGetDisplayMedia(window,"screen"));let Hv=!1;"chrome"===Gv&&window.document.addEventListener("beforeunload",(()=>{Hv=!0}));class Kv{constructor({selfId:e,room:t,emitter:r,serverSocket:i,webrtcProvider:s,features:n}){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=s,this._features=n||{},this._isAudioOnlyMode=!1,this.offerOptions={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._pendingActionsForConnectedPeerConnections=[],this._nodeJsClients=[],this._audioTrackOnEnded=()=>{Rg.sendEvent("audio_ended",{unloading:Hv}),this._emit(Av,{})},this._videoTrackOnEnded=()=>{Rg.sendEvent("video_ended",{unloading:Hv}),this._emit(Nv,{})},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,r,i,s=[]){if(t!==this.localStreams[e]){if(this._addLocalStream(e,t),e===qv){this._addStreamToPeerConnections(t);const e=t.getAudioTracks()[0],r=t.getVideoTracks()[0];if(e){e.effectTrack||this._monitorAudioTrack(e);const t=s.find((e=>"audio"===e.kind));t&&this._monitorAudioTrack(t)}if(r){r.effectTrack||this._monitorVideoTrack(r);const e=s.find((e=>"video"===e.kind));e&&this._monitorVideoTrack(e)}this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const i=e=>{const{enable:t,track:r}=e.detail;this._handleStopOrResumeVideo({enable:t,track:r})};return t.addEventListener("stopresumevideo",i),void(this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",i)})}this._screenshareVideoTrackIds.push(t.getVideoTracks()[0].id),this._shareScreen(e,t)}}replaceTrack(e,t){return"audio"!==t.kind||t.effectTrack||this._monitorAudioTrack(t),"video"!==t.kind||t.effectTrack||this._monitorVideoTrack(t),this._replaceTrackToPeerConnections(e,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"!==Gv)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(qg,(e=>{e.client.isDialIn&&!this._nodeJsClients.includes(e.client.id)&&this._nodeJsClients.push(e.client.id)})),this._serverSocket.on(zg,(e=>{e.error?zv.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(Zg,(e=>{this._connect(e.clientId)})),this._serverSocket.on(Jg,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(e.message):zv.warn("No RTCPeerConnection on ICE_CANDIDATE",e)})),this._serverSocket.on(Qg,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(null):zv.warn("No RTCPeerConnection on ICE_END_OF_CANDIDATES",e)})),this._serverSocket.on(Xg,(e=>{const t=this._getSession(e.clientId);if(!t)return void zv.warn("No RTCPeerConnection on SDP_OFFER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleOffer(r).then((t=>{this._emitServerEvent(Yg,{receiverId:e.clientId,message:this._transformOutgoingSdp(t)})}))})),this._serverSocket.on(Yg,(e=>{const t=this._getSession(e.clientId);if(!t)return void zv.warn("No RTCPeerConnection on SDP_ANSWER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleAnswer(r)})),this._serverSocket.on(Hg,(({room:{sfuServer:e}})=>{if(e||!this._wasScreenSharing)return;const t=Object.keys(this.localStreams).find((e=>e!==qv));if(!t)return;const r=this.localStreams[t];if(!r)return void zv.warn("screenshare stream %s not found",t);const i=r.getAudioTracks().length>0;this._emitServerEvent(Fg,{streamId:t,hasAudioTrack:i})}))]}sendAudioMutedStats(e){Rg.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){Rg.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){Rg.sendEvent(e,t)}rtcStatsDisconnect(){Rg.server.close()}rtcStatsReconnect(){Rg.server.connected||Rg.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===pv&&t===cv||(e.connectionStatus=t,setTimeout((()=>{this._emit(rv,{streamIds:e.streamIds,clientId:r,status:t,previous:i})}),0)))}_setJitterBufferTarget(e){try{e.getReceivers().forEach((e=>{e.jitterBufferTarget=ag,e.playoutDelayHint=.4}))}catch(e){zv.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"===Gv&&Wv&&Wv>=14&&this._features.deprioritizeH264OnSafari;this.peerConnections[e]=r=new Ng({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:this._features.unlimitedBandwidthWhenUsingRelayP2POn?-1:1280,deprioritizeH264Encoding:i}),this.totalSessionsCreated++}return r}_getLocalCameraStream(){return this.localStreams[qv]}_getNonLocalCameraStreamIds(){return Object.keys(this.localStreams).filter((e=>e!==qv))}_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:s,enforceTurnProtocol:n}){if(!i)throw new Error("peerConnectionId is missing");if(!e)throw new Error("clientId is missing");const a=this._getOrCreateSession(i,t),o={optional:[]};"chrome"===Gv&&o.optional.push({googCpuOveruseDetection:!0}),o.optional.push({rtcStatsRoomSessionId:this._roomSessionId}),o.optional.push({rtcStatsClientId:this._selfId}),o.optional.push({rtcStatsPeerId:i}),o.optional.push({rtcStatsConferenceId:this._roomName});const c={iceServers:this._iceServers};if(this._features.turnServerOverrideHost){const e=this._features.turnServerOverrideHost,t=e.indexOf(":")>0?"":":443",r=":"+e+t;c.iceServers=c.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(n||this._features.useOnlyTURN){c.iceTransportPolicy="relay";const e={onlyudp:/^turn:.*transport=udp$/,onlytcp:/^turn:.*transport=tcp$/,onlytls:/^turns:.*transport=tcp$/}[n||this._features.useOnlyTURN];e&&(c.iceServers=c.iceServers.filter((t=>t.url&&t.url.match(e))))}"chrome"===Gv&&(c.sdpSemantics="unified-plan");const d=a.setAndGetPeerConnection({constraints:o,peerConnectionConfig:c,shouldAddLocalVideo:s,clientId:e});setTimeout((()=>this._emit(Bv)),0),d.ontrack=t=>{const r=t.streams[0];"default"===r.id&&0===r.getAudioTracks().length||-1===a.streamIds.indexOf(r.id)&&(a.streamIds.push(r.id),this._emit(iv,{clientId:e,stream:r}),a.connectionStatus===lv&&setTimeout((()=>{this._emit(rv,{streamIds:a.streamIds,clientId:e,status:a.connectionStatus,previous:cv})}),0))},d.oniceconnectionstatechange=()=>{let t;const r=a.connectionStatus;switch(d.iceConnectionState){case"checking":t=cv;break;case"connected":case"completed":t=lv,a.wasEverConnected||(this._pendingActionsForConnectedPeerConnections.forEach((e=>{"function"==typeof e&&e()})),this._pendingActionsForConnectedPeerConnections=[]),!a.wasEverConnected&&(d.iceConnectionState.match(/connected|completed/)||"chrome"===Gv&&d.localDescription&&"answer"===d.localDescription.type)&&(a.wasEverConnected=!0,"false"!==this._features.bandwidth&&this.maybeRestrictRelayBandwidth(a)),this._isAudioOnlyMode&&a.setAudioOnly(!0,this._screenshareVideoTrackIds),a.registerConnected();break;case"disconnected":t=pv,setTimeout((()=>{"disconnected"===d.iceConnectionState&&this._maybeRestartIce(e,a)}),2e3);break;case"failed":t=dv,r!==t&&this._maybeRestartIce(e,a),null!==a.relayCandidateSeen||a.wasEverConnected||this._emit(Iv);break;default:return}this._setConnectionStatus(a,t,e)},d.onconnectionstate=()=>{switch(d.connectionState){case"connected":setTimeout((()=>{(function(e){if("chrome"!==ng.browserDetails.browser||ng.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}))})(a.pc).then((t=>{!1!==t&&this._emit(Lv,{failureDirection:t,clientId:e})}))}),3e3),a.registerConnected();break;case"failed":const t=dv;null!==a.relayCandidateSeen||a.wasEverConnected||this._emit(Iv),this._setConnectionStatus(a,t,e)}};const l=this.localStreams[qv];return s&&l&&a.addStream(l),s&&Object.keys(this.localStreams).forEach((e=>{if(e===qv)return;const t=this.localStreams[e];r?a.addStream(t):a.afterConnected.then((()=>{this._emitServerEvent(Fg,{receiverId:a.clientId,streamId:t.id,hasAudioTrack:!!t.getAudioTracks().length}),this._withForcedRenegotiation(a,(()=>a.addStream(t)))}))})),a}_cleanup(e){const t=this._getSession(e);t?(t.close(),delete this.peerConnections[e]):zv.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()){zv.info("Session doesn't have a connected PeerConnection, adding pending action!");const s=this._pendingActionsForConnectedPeerConnections;if(!s)return void zv.warn("No pending action is created to repalce track, because the pending actions array is null");const n=new Promise(((r,n)=>{s.push((()=>{const s=i.replaceTrack(e,t);if(!s)return zv.error("replaceTrack returned false!"),void n("ReplaceTrack returned false");s.then((e=>r(e))).catch((e=>n(e)))}))}));return void r.push(n)}const s=i.replaceTrack(e,t);s?r.push(s):zv.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(Bg)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}_monitorAudioTrack(e){var t,r;(null===(t=this._audioTrackBeingMonitored)||void 0===t?void 0:t.id)!==e.id&&(null===(r=this._audioTrackBeingMonitored)||void 0===r||r.removeEventListener("ended",this._audioTrackOnEnded),e.addEventListener("ended",this._audioTrackOnEnded),this._audioTrackBeingMonitored=e)}_monitorVideoTrack(e){var t,r;(null===(t=this._videoTrackBeingMonitored)||void 0===t?void 0:t.id)!==e.id&&(null===(r=this._videoTrackBeingMonitored)||void 0===r||r.removeEventListener("ended",this._videoTrackOnEnded),e.addEventListener("ended",this._videoTrackOnEnded),this._videoTrackBeingMonitored=e)}_connect(e){let t,r=this._getSession(e),i=r&&r.bandwidth||0;return r?(zv.warn("Replacing peer session",e),this._cleanup(e)):i=this._changeBandwidthForAllClients(!0),this._nodeJsClients.includes(e)&&(t=this._features.isNodeSdk?"onlyudp":"onlytls"),r=this._createP2pSession({clientId:e,initialBandwidth:i,shouldAddLocalVideo:!0,isOfferer:!0,enforceTurnProtocol:t}),this._negotiatePeerConnection(e,r),Promise.resolve(r)}_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(jv),this._negotiatePeerConnection(e,t,Object.assign({},this.offerOptions,{iceRestart:!0})))}_setCodecPreferences(e,t,r,i){try{const s=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)}));s.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 n=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)}));n.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){zv.error("Error during setting setCodecPreferences:",e)}}_negotiatePeerConnection(e,t,r){if(!t)return void zv.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:s,av1On:n,redOn:a,rtpAbsCaptureTimeOn:o}=this._features;(s||n||a)&&this._setCodecPreferences(i,s,n,a),i.createOffer(r||this.offerOptions).then((r=>{o&&(r.sdp=xg(r.sdp)),(s||a)&&"firefox"===Gv&&(r.sdp=function(e,t,r){var i,s;try{const n=Ma(e);if(Array.isArray(null==n?void 0:n.media)){const e=n.media.find((e=>"audio"===e.type));if(Array.isArray(null==e?void 0:e.rtp)){const t=e.rtp;for(let s=0;s<t.length;s++)if(r&&"red"===t[s].codec){const r=null===(i=e.payloads)||void 0===i?void 0:i.split(" "),n=null==r?void 0:r.indexOf(""+t[s].payload);n&&-1!==n&&n>=0&&(null==r||r.unshift(r.splice(n,1)[0]),e.payloads=null==r?void 0:r.join(" "))}}const a=n.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===(s=a.payloads)||void 0===s?void 0:s.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 xa(n)}catch(e){Pg.error("setCodecPreferenceSDP error:",e)}}(r.sdp,s,a)),this._emitServerEvent(Xg,{receiverId:e,message:this._transformOutgoingSdp(r)}),"chrome"===Gv&&i.getSenders().filter((e=>e.track&&"video"===e.track.kind)).length>=2?t.pendingOffer=r:i.setLocalDescription(r).catch((t=>{zv.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=>{zv.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:s}=t.getSettings();if(e&&i&&s){const t=Math.round(function(e,t,r){let i=e*t;i<mv&&(i=mv),i>gv&&(i=gv);let s=fv;i>gv?s=vv:i>mv&&(s+=-17582143775720163e-22*(i-mv));let n=e*t*s;return r<=15?n*=.7:r<=24&&(n*=.9),n}(e,i,s)/1e3);r=Math.min(t,r||t)}}}}return this._features.higherP2PBitrates&&(r*=1.5),this._forEachPeerConnection((e=>{e.changeBandwidth(r)})),r}_createP2pSession({clientId:e,initialBandwidth:t,shouldAddLocalVideo:r=!1,isOfferer:i=!1,enforceTurnProtocol:s}){const n=this._createSession({peerConnectionId:e,clientId:e,initialBandwidth:t,shouldAddLocalVideo:r,isOfferer:i,enforceTurnProtocol:s}),a=n.pc;this._features.increaseIncomingMediaBufferOn&&this._setJitterBufferTarget(a);const o=this.localStreams[qv];return r&&o&&!o.getVideoTracks().length&&this._stoppedVideoTrack&&a.addTrack(this._stoppedVideoTrack,o),a.onicegatheringstatechange=e=>{switch(e.target.iceGatheringState){case"gathering":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=setTimeout((()=>{n.publicHostCandidateSeen||n.relayCandidateSeen||n.serverReflexiveCandidateSeen||this._emit(Mv)}),3e3);break;case"complete":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=void 0}},a.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(kv.v4({exact:!0}).test(e)){$h(e).isPublicIp&&(n.publicHostCandidateSeen=!0)}else if(kv.v6({exact:!0}).test(e.replace(/^\[(.*)\]/,"$1"))){const t=new Au.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&&Wh(t,4)&&(n.mdnsHostCandidateSeen=!0)}}catch(e){zv.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(Jg,{receiverId:e,message:t.candidate})}else this._emitServerEvent(Qg,{receiverId:e}),n.publicHostCandidateSeen||n.relayCandidateSeen||n.serverReflexiveCandidateSeen||this._emit(xv),n.ipv6HostCandidateSeen&&this._emit(Ev,{teredoSeen:n.ipv6HostCandidateTeredoSeen,sixtofourSeen:n.ipv6HostCandidate6to4Seen}),n.mdnsHostCandidateSeen&&this._emit(Ov)},a.onnegotiationneeded=()=>{"new"!==a.iceConnectionState&&n.connectionStatus&&this._negotiatePeerConnection(e,n)},n}acceptNewStream({streamId:e,clientId:t,shouldAddLocalVideo:r,enforceTurnProtocol:i}){let s=this._getSession(t);if(s&&e!==t)return s;let n=s&&s.bandwidth||0;return s?(zv.warn("Replacing peer session",t),this._cleanup(t)):n=this._changeBandwidthForAllClients(!0),s=this._createP2pSession({clientId:t,initialBandwidth:n,shouldAddLocalVideo:!!r,enforceTurnProtocol:i,isOfferer:!1}),this._emitServerEvent(Zg,{receiverId:t}),s}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){var r;if(["chrome","safari"].includes(Gv))if(!1===t){const i="ended"===(null===(r=e.getVideoTracks().find((e=>!e.enabled)))||void 0===r?void 0:r.readyState)?0:5e3;setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emit(ov,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),i)}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._monitorVideoTrack(i),this._emit(av,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}_shareScreen(e,t){this._emitServerEvent(Fg,{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($g,{streamId:e,requestedByClientId:r})}hasClient(e){return Object.keys(this.peerConnections).includes(e)}}var Jv=Object.freeze({__proto__:null,KalmanFilter:class{constructor({R:e=.01,Q:t=2,A:r=1.1,B:i=1,C:s=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=s,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(),s=i*this.C*(1/(this.C*i*this.C+this.Q));this.x=r+s*(e-this.C*r),this.cov=i-s*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 s=i.reduce(((e,t)=>e+t),0)/i.length;if(e=e<0?s:.95*e+.05*s,++r<2)return t=s,0;const n=(s-e)*(t-e);return t=s,n}},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 Qv={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"},Zv=new vf;const Yv=new vf,Xv=Object.freeze({ok:"ok",warning:"warning",critical:"critical"});class e_ extends Gi{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:Xv.ok,trend:[]},video:{currentQuality:Xv.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,s=this._evaluateScore(i);this._updateTrend(s,this._clients[e][r])&&this.emit(tv,{clientId:e,kind:r,quality:s})}_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]={}):Yv.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]={}):Yv.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)))}:Yv.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)}:Yv.warn("Unexpected consumer score format")}_evaluateScore(e){return e<=9&&e>7?Xv.warning:e<=7&&e>0?Xv.critical:Xv.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 Yv.error(e),0}}}var t_;const r_=null!==(t_=ku.default)&&void 0!==t_?t_:ku,i_=new vf,s_=r_.browserDetails.browser;let n_=!1;const a_=Lu(),o_=Lu();"chrome"===s_&&window.document.addEventListener("beforeunload",(()=>n_=!0));class c_{constructor({selfId:e,room:t,emitter:r,serverSocket:i,webrtcProvider:s,features:n,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=s,this._features=n||{},this._eventClaim=a,this._vegaConnection=null,this._micAnalyser=null,this._micAnalyserDebugger=null,this._mediasoupDevice=o?new ts.Device({handlerFactory:o}):new ts.Device({handlerName:ig()}),this._routerRtpCapabilities=null,this._sendTransport=null,this._receiveTransport=null,this._clientStates=new Map,this._streamIdToVideoConsumerId=new Map,this._streamIdToVideoResolution=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=()=>{Rg.sendEvent("audio_ended",{unloading:n_}),this._emitToPWA(Av,{})},this._videoTrackOnEnded=()=>{Rg.sendEvent("video_ended",{unloading:n_}),this._emitToPWA(Nv,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:l,iceServers:d.iceServers||[],mediaserverConfigTtlSeconds:p}),this._socketListenerDeregisterFunctions=[],this._reconnect=!0,this._reconnectTimeOut=null,this._qualityMonitor=new e_,this._qualityMonitor.on(tv,(e=>{this._emitToPWA(tv,e)}))}_updateAndScheduleMediaServersRefresh({iceServers:e,sfuServer:t,mediaserverConfigTtlSeconds:r}){var i,s;this._iceServers=e,this._sfuServer=t,this._mediaserverConfigTtlSeconds=r,null===(i=this._sendTransport)||void 0===i||i.updateIceServers({iceServers:this._iceServers}),null===(s=this._receiveTransport)||void 0===s||s.updateIceServers({iceServers:this._iceServers}),this._clearMediaServersRefresh(),r&&(this._fetchMediaServersTimer=setTimeout((()=>this._emitToSignal(Bg)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}setupSocketListeners(){this._socketListenerDeregisterFunctions.push((()=>this._clearMediaServersRefresh()),this._serverSocket.on(zg,(e=>{e.error?i_.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(Hg,(()=>{this._screenVideoTrack&&this._emitScreenshareStarted(),this._features.sfuReconnectV2On&&!this._vegaConnection.isConnected()&&this._reconnect&&this._connect()}))),this._connect()}_emitScreenshareStarted(){this._emitToSignal(Fg,{streamId:o_,hasAudioTrack:Boolean(this._screenAudioTrack)})}_connect(){if(this._features.sfuReconnectV2On){if(!this._serverSocket.isConnected()){const e=this._serverSocket.getReconnectThreshold();if(!e)return;if(Date.now()>(this._serverSocket.disconnectTimestamp||0)+e)return}this._reconnectTimeOut&&clearTimeout(this._reconnectTimeOut)}const e=this._features.sfuServerOverrideHost||[this._sfuServer.url],t=new URLSearchParams(Object.assign({clientId:this._selfId,organizationId:this._room.organizationId,roomName:this._room.name,eventClaim:this._room.isClaimed?this._eventClaim:null,lowBw:"true"},Object.keys(this._features||{}).filter((e=>this._features[e]&&/^sfu/.test(e))).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t]:this._features[t]})),{}))),r=`wss://${e}?${t.toString()}`;this._vegaConnection=new Kf(r),this._vegaConnection.on("open",(()=>this._join())),this._vegaConnection.on("close",(()=>this._onClose())),this._vegaConnection.on("message",(e=>this._onMessage(e)))}_onClose(){var e,t;i_.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._streamIdToVideoResolution.clear(),this._reconnect&&(this._reconnectTimeOut=setTimeout((()=>this._connect()),1e3)),this._qualityMonitor.close(),this._emitToPWA($v)}_join(){return _f(this,void 0,void 0,(function*(){i_.info("join()"),this._emitToPWA(Fv);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){i_.error("_join() [error:%o]",e)}}))}_createTransport(e){return _f(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),s=t=>_f(this,void 0,void 0,(function*(){if(i_.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",s),i.observer.once("close",(()=>{i.removeListener(s)})),e?(i.on("produce",(({kind:e,rtpParameters:t,appData:r},s,n)=>_f(this,void 0,void 0,(function*(){var a;try{const{paused:n}=r,{id:o}=yield null===(a=this._vegaConnection)||void 0===a?void 0:a.request("produce",{transportId:i.id,kind:e,rtpParameters:t,paused:n,appData:r});s({id:o})}catch(e){n(e)}})))),i.on("producedata",(({appData:e,sctpStreamParameters:t},r,s)=>_f(this,void 0,void 0,(function*(){var n;try{const{id:s}=yield null===(n=this._vegaConnection)||void 0===n?void 0:n.request("produceData",{transportId:i.id,sctpStreamParameters:t,appData:e});r({id:s})}catch(e){s(e)}})))),this._sendTransport=i):this._receiveTransport=i}))}_restartIce(e,t=0){return _f(this,void 0,void 0,(function*(){if(!e||!("closed"in e)||!("connectionState"in e))return void i_.info("_restartIce: No transport or property closed or connectionState!");if(e.closed)return void i_.info("_restartIce: Transport is closed!");if("disconnected"!==e.connectionState&&"failed"!==e.connectionState)return void i_.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 i_.info("_restartIce: Reached restart ICE maximum retry count!");if(!this._vegaConnection)return void i_.info("_restartIce: Connection is undefined");const{iceParameters:s}=yield this._vegaConnection.request("restartIce",{transportId:e.id});i_.info("_restartIce: ICE restart iceParameters received from SFU: ",s);const n=yield e.restartIce({iceParameters:s}).then((()=>null)).catch((e=>e));if(n)switch(i_.error(`_restartIce: ICE restart failed: ${n}`),n.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 _f(this,void 0,void 0,(function*(){i_.info("_internalSendMic()"),this._micProducerPromise=(()=>_f(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},rg("audio",!1,this._features)),{appData:{streamId:a_,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;i_.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){i_.error("micProducer failed:%o",e)}finally{this._micProducerPromise=null,this._micTrack||(this._stopProducer(this._micProducer),this._micProducer=null)}})))()}))}_internalSetupMicScore(){return _f(this,void 0,void 0,(function*(){i_.info("_internalSetupMicScore()"),this._micScoreProducerPromise=(()=>_f(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;i_.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){i_.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 _f(this,void 0,void 0,(function*(){i_.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;i_.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 _f(this,void 0,void 0,(function*(){return i_.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){i_.error("_sendMicScore failed [error:%o]",e)}}else!this._micScoreProducerPromise&&this._micProducer&&this._colocation&&0!==e&&this._internalSetupMicScore()}_internalSendWebcam(){var e;return _f(this,void 0,void 0,(function*(){i_.info("_internalSendWebcam()"),!this._sendTransport||this._webcamProducer||this._webcamProducerPromise||"live"!==(null===(e=this._webcamTrack)||void 0===e?void 0:e.readyState)||(this._webcamProducerPromise=(()=>_f(this,void 0,void 0,(function*(){var e;try{const t=this._webcamPaused,r=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._webcamTrack,disableTrackOnPause:!1,stopTracks:!1},rg("video",!1,this._features)),{appData:{streamId:a_,sourceClientId:this._selfId,screenShare:!1,source:"webcam",paused:t}}));t?r.pause():r.resume(),this._webcamProducer=r,this._qualityMonitor.addProducer(this._selfId,r.id),r.observer.once("close",(()=>{var e;i_.info('webcamProducer "close" event'),r.appData.localClosed&&(null===(e=this._vegaConnection)||void 0===e||e.message("closeProducers",{producerIds:[r.id]})),this._webcamProducer=null,this._webcamProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,r.id)})),this._webcamTrack&&this._webcamTrack!==(null===(e=this._webcamProducer)||void 0===e?void 0:e.track)&&(this._webcamProducerPromise=null,this._replaceWebcamTrack()),this._webcamPaused!==this._webcamProducer.paused&&this._pauseResumeWebcam()}catch(e){i_.error("webcamProducer failed:%o",e)}finally{this._webcamProducerPromise=null,this._webcamTrack||(this._stopProducer(this._webcamProducer),this._webcamProducer=null)}})))())}))}_replaceWebcamTrack(){return _f(this,void 0,void 0,(function*(){i_.info("_replaceWebcamTrack()"),this._sendTransport&&this._webcamTrack&&!this._webcamProducerPromise&&(this._webcamProducer||!this._webcamTrack.enabled?this._webcamProducer.track!==this._webcamTrack&&(yield this._webcamProducer.replaceTrack({track:this._webcamTrack}),yield this._replaceWebcamTrack()):yield this._internalSendWebcam())}))}_pauseResumeWebcam(){var e,t;i_.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 _f(this,void 0,void 0,(function*(){return i_.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 _f(this,void 0,void 0,(function*(){i_.info("_internalSendScreenVideo()"),this._screenVideoProducerPromise=(()=>_f(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},rg("video",!0,this._features)),{appData:{streamId:o_,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;i_.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){i_.error("screenVideoProducer failed:%o",e)}finally{this._screenVideoProducerPromise=null,this._screenVideoTrack||(yield this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null)}})))()}))}_replaceScreenVideoTrack(){return _f(this,void 0,void 0,(function*(){i_.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 _f(this,void 0,void 0,(function*(){return i_.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 _f(this,void 0,void 0,(function*(){i_.info("_internalSendScreenAudio()"),this._screenAudioProducerPromise=(()=>_f(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},rg("audio",!0,this._features)),{appData:{streamId:o_,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;i_.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){i_.error("screenAudioProducer failed:%o",e)}finally{this._screenAudioProducerPromise=null,this._screenAudioTrack||(yield this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null)}})))()}))}_replaceScreenAudioTrack(){return _f(this,void 0,void 0,(function*(){i_.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 _f(this,void 0,void 0,(function*(){return i_.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){i_.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(),Rg.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(i_.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){"audio"===t.kind&&(t.effectTrack||this._monitorAudioTrack(t),this._micTrack=t,this._replaceMicTrack()),"video"===t.kind&&(t.effectTrack||this._monitorVideoTrack(t),this._webcamTrack=t,this._replaceWebcamTrack())}removeStream(e,t,r){i_.info("removeStream() [streamId:%s, requestedByClientId:%s]",e,r),this._emitToSignal($g,{streamId:o_,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,s=[]){if("0"===e){this._micPaused=r,this._webcamPaused=i;const e=t.getVideoTracks()[0],n=t.getAudioTracks()[0];if(e){this._sendWebcam(e),e.effectTrack||this._monitorVideoTrack(e);const t=s.find((e=>"video"===e.kind));t&&this._monitorVideoTrack(t)}if(n){this._sendMic(n),this._syncMicAnalyser(),n.effectTrack||this._monitorAudioTrack(n);const e=s.find((e=>"audio"===e.kind));e&&this._monitorAudioTrack(e)}this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const a=e=>{const{enable:t,track:r}=e.detail;this._webcamPaused=!t,this._pauseResumeWebcam(),this._handleStopOrResumeVideo({enable:t,track:r})};t.addEventListener("stopresumevideo",a),this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",a)}}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 s=null,n=null,a=null,o=!1;const c=e=>_f(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){Zv.warn("unable to fetch new track for colocation speaker analysis, using current",e)}if(a=e,n&&(n.disconnect(),n=null),e){const t=new MediaStream([e]);n=i.createMediaStreamSource(t),n.connect(s)}}));let d;const l=e=>{if(clearInterval(d),t=Object.assign(Object.assign({},Qv),e),!s||s.fftSize!==2*t.bins){let e=null;s&&(e=a,c(null)),s=i.createAnalyser(),s.fftSize=2*t.bins,e&&c(e)}const n=new Uint8Array(s.frequencyBinCount),o=[];s.minDecibels=t.minDecibels,s.maxDecibels=t.maxDecibels,s.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(Jv,c,a);d=setInterval((()=>{s.getByteFrequencyData(n);let e=0;if(u){const r=t.bands.map((e=>{const t=e.map((e=>m(n[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(n,g,Jv),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,s=h(e,i,t,o);r({bins:n,score:e,max:t,avg:i,out:s})}}),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){i_.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){var r;if(i_.info("stopOrResumeVideo() [enable:%s]",t),this._webcamPaused=!t,this._pauseResumeWebcam(),["chrome","safari"].includes(s_))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._monitorVideoTrack(i),this._emitToPWA(av,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}else{clearTimeout(this._stopCameraTimeout);const i="ended"===(null===(r=e.getVideoTracks().find((e=>!e.enabled)))||void 0===r?void 0:r.readyState)?0:5e3;this._stopCameraTimeout=setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emitToPWA(ov,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),i)}}supportsScreenShareAudio(){return!0}acceptNewStream({streamId:e,clientId:t}){i_.info("acceptNewStream()",{streamId:e,clientId:t});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 s,n;i_.info("updateStreamResolution()",{streamId:e,width:r,height:i});const a=this._streamIdToVideoConsumerId.get(e),o=this._consumers.get(a);if(!o)return void this._streamIdToVideoResolution.set(e,{width:r,height:i});const c=function(e){let t=0;return e.forEach((e=>{var r,i;e._closed||e._paused||"webcam"!==(null===(r=e._appData)||void 0===r?void 0:r.source)&&"screenvideo"!==(null===(i=e._appData)||void 0===i?void 0:i.source)||t++})),t}(this._consumers),d=function(e){var t,r,i;return/T3/.test((null===(i=null===(r=null===(t=e._rtpParameters)||void 0===t?void 0:t.encodings)||void 0===r?void 0:r[0])||void 0===i?void 0:i.scalabilityMode)||"")?3:2}(o),{spatialLayer:l,temporalLayer:p}=function({width:e,height:t},{numberOfActiveVideos:r,numberOfTemporalLayers:i,uncappedSingleRemoteVideoOn:s}){const n=Math.max(e,t);let a=n>=480?n>=960?2:1:0,o=i-1;return n<100&&(o=Math.max(i-2,0)),r>8&&0===a&&(o=Math.max(i-2,0)),r<4&&n>300&&0===a&&(a=1),s&&1===r&&(a=2,o=i-1),{spatialLayer:a,temporalLayer:o}}({width:r,height:i},{numberOfActiveVideos:c,numberOfTemporalLayers:d,uncappedSingleRemoteVideoOn:null===(s=this._features)||void 0===s?void 0:s.uncappedSingleRemoteVideoOn});o.appData.spatialLayer===l&&o.appData.temporalLayer===p||(o.appData.spatialLayer=l,o.appData.temporalLayer=p,null===(n=this._vegaConnection)||void 0===n||n.message("setConsumersPreferredLayers",{consumerIds:[a],spatialLayer:l,temporalLayer:p}))}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){Rg.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){Rg.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){Rg.sendEvent(e,t)}rtcStatsDisconnect(){Rg.server.close()}rtcStatsReconnect(){Rg.server.connected||Rg.server.connect()}_monitorAudioTrack(e){var t,r;(null===(t=this._audioTrackBeingMonitored)||void 0===t?void 0:t.id)!==e.id&&(null===(r=this._audioTrackBeingMonitored)||void 0===r||r.removeEventListener("ended",this._audioTrackOnEnded),e.addEventListener("ended",this._audioTrackOnEnded),this._audioTrackBeingMonitored=e)}_monitorVideoTrack(e){var t,r;(null===(t=this._videoTrackBeingMonitored)||void 0===t?void 0:t.id)!==e.id&&(null===(r=this._videoTrackBeingMonitored)||void 0===r||r.removeEventListener("ended",this._videoTrackOnEnded),e.addEventListener("ended",this._videoTrackOnEnded),this._videoTrackBeingMonitored=e)}_onMessage(e){return _f(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 i_.info(`unknown message method "${t}"`)}})).catch((e=>{i_.error('"message" failed [error:%o]',e)}))}))}_onConsumerReady(e){return _f(this,void 0,void 0,(function*(){i_.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=ag,t.rtpReceiver.playoutDelayHint=.4}catch(e){i_.error("Error during setting jitter buffer target:",e)}const{sourceClientId:r,screenShare:i,streamId:s}=t.appData,n=this._getOrCreateClientState(r);i?(n.hasEmittedScreenStream=!1,n.screenShareStreamId=s):(n.hasEmittedWebcamStream=!1,n.camStreamId=s);let a=i?n.screenStream:n.webcamStream;a&&a.inboundId===s||(a=new MediaStream,a.inboundId=s,i?n.screenStream=a:n.webcamStream=a),"video"===t.kind&&this._streamIdToVideoConsumerId.set(a.id,t.id),a.addTrack(t.track),this._syncIncomingStreamsWithPWA(r);const o=this._streamIdToVideoResolution.get(a.id);o&&(this.updateStreamResolution(a.id,null,o),this._streamIdToVideoResolution.delete(a.id))}))}_onConsumerClosed({consumerId:e,reason:t}){var r;return _f(this,void 0,void 0,(function*(){i_.info("_onConsumerClosed()",{consumerId:e,reason:t}),null===(r=this._consumers.get(e))||void 0===r||r.close()}))}_onConsumerPaused({consumerId:e}){i_.info("_onConsumerPaused()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!0,t.pause())}_onConsumerResumed({consumerId:e}){i_.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}){i_.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}){i_.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 _f(this,void 0,void 0,(function*(){i_.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 _f(this,void 0,void 0,(function*(){i_.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(Vv,{clientId:r})}_consumerClosedCleanup(e){const{sourceClientId:t,screenShare:r}=e.appData,i=this._getOrCreateClientState(t),s=r?i.screenStream:i.webcamStream;s&&(s.removeTrack(e.track),0===s.getTracks().length&&(this._streamIdToVideoConsumerId.delete(s.id),this._streamIdToVideoResolution.delete(s.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:s,screenStream:n,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})),s&&!a&&c&&(this._emitToPWA(iv,{clientId:e,stream:s,streamId:p,streamType:"webcam"}),i.hasEmittedWebcamStream=!0),n&&!o&&d&&(this._emitToPWA(iv,{clientId:e,stream:n,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 d_{constructor({emitter:e,serverSocket:t,webrtcProvider:r,features:i}){this.emitter=e,this.currentManager=null,t.on(Hg,(({room:s,selfId:n,error:a,eventClaim:o})=>{if(a)return;const c={selfId:n,room:s,emitter:e,serverSocket:t,webrtcProvider:r,features:i,eventClaim:o,deviceHandlerFactory:null==i?void 0:i.deviceHandlerFactory},d=!!s.sfuServer;if(this.currentManager){if(this.currentManager.isInitializedWith({selfId:n,roomName:s.name,isSfu:d}))return void(this.currentManager.setEventClaim&&o&&this.currentManager.setEventClaim(o));this.currentManager.disconnectAll(),e.emit(nv)}let l=null;l=d?new c_(c):new Kv(c),l.rtcStatsReconnect(),l.setupSocketListeners(),e.emit(sv,{rtcManager:l}),this.currentManager=l,t.setRtcManager(l)}))}stopRtcManager(){this.currentManager&&(this.currentManager.disconnectAll(),this.emitter.emit(nv))}}var l_;!function(e){e.rtc_manager_created="rtc_manager_created",e.stream_added="stream_added"}(l_||(l_={}));const p_=new vf;class u_ extends Gi{constructor(e){super(),this.reconnectThresholdInMs=0,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(Hg,(e=>this._onRoomJoined(e))),e.on(qg,(e=>this._onNewClient(e))),e.on(Ug,(e=>this._onClientLeft(e))),e.on(ev,(e=>this._onPendingClientLeft(e))),e.on(Vg,(e=>this._onAudioEnabled(e))),e.on(Kg,(e=>this._onVideoEnabled(e))),e.on(Gg,(e=>this._onScreenshareChanged(e,!0))),e.on(Wg,(e=>this._onScreenshareChanged(e,!1)))}_onRoomJoined(e){var t,r;return _f(this,void 0,void 0,(function*(){if(this.reconnectThresholdInMs=.8*(e.disconnectTimeout||0),!(null===(t=e.room)||void 0===t?void 0:t.clients))return void this.emit(Hg,e);if(!e.selfId)return void this.emit(Hg,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(Hg,e);if(!this._signalDisconnectTime)return this._resetClientState(e),e.room.clients=e.room.clients.filter((e=>!(e.deviceId===i&&e.isPendingToLeave))),void this.emit(Hg,e);const s=.8*e.disconnectTimeout;if(Date.now()-this._signalDisconnectTime>s)return this._resetClientState(e),this.emit(Hg,e),void this.metrics.roomJoinedLate++;e.room.clients=e.room.clients.filter((e=>!(e.deviceId===i&&e.isPendingToLeave)));const n=yield jf();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(n,t.id))return;t.mergeWithOldClientState=!0}catch(e){p_.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(Hg,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(Ug,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))):p_.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(Ug,{clientId:e.clientId})})),this._addClientToState(e.client),this.emit(qg,e)}_abortIfNotActive(e){return _f(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(Ug,e)))}))}_checkIsActive(e){return _f(this,void 0,void 0,(function*(){const t=yield jf();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 s=this._clients[e];if(!s)throw new Error(`Client ${e} not found in ReconnectManager state`);return t!==s.isVideoEnabled||(r!==s.isAudioEnabled||i!==s.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 h_;const m_=null!==(h_=ku.default)&&void 0!==h_?h_:ku;class f_{constructor(e,t,r=!1){this._wasConnectedUsingWebsocket=!1,this._reconnectManager=null,this._socket=ff(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"!==m_.browserDetails.browser&&delete this._wasConnectedUsingWebsocket):this._socket.io.opts.transports=["websocket","polling"]})),r&&(this._reconnectManager=new u_(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.disconnectTimestamp=Date.now(),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=[Hg,Ug,qg];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}getReconnectThreshold(){var e;return null===(e=this._reconnectManager)||void 0===e?void 0:e.reconnectThresholdInMs}}const g_=[{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 v_(e,t){return ai(e,t)}function __(e){return t=>(r,i,s)=>"connected"!==i().roomConnection.status?(console.warn("Action cannot be performed outside of a connected room"),!1):e(t)(r,i,s)}function b_(e,t){return v_(e,((e,r)=>{const{getState:i}=r;return"connected"!==i().roomConnection.status?(console.warn("Action cannot be performed outside of a connected room"),Promise.reject("Action cannot be performed outside of a connected room")):t(e,r)}))}!function({host:e="whereby.com",protocol:t="https:"}={}){let r="",i=e,s=".";for(const{separator:t,pattern:n}of g_){const a=n.exec(e);if(a){r=a[1]||"",i=a[2],s=t;break}}const n=r?`${r}${s}${i}`:i}(window&&window.location);const y_=((e={})=>{const t=new Map,{extra:r,onError:i=zi}=e;wi(i,"onError");const s=e=>{let r=Qr(Array.from(t.values()),(t=>t.effect===e.effect));return r||(r=Ni(e)),(e=>(e.unsubscribe=()=>t.delete(e.id),t.set(e.id,e),t=>{e.unsubscribe(),t?.cancelActive&&Bi(e)}))(r)};Object.assign(s,{withTypes:()=>s});const n=e=>{const{type:r,effect:i,predicate:s}=Ai(e),n=Qr(Array.from(t.values()),(e=>("string"==typeof r?e.type===r:e.predicate===s)&&e.effect===i));return n&&(n.unsubscribe(),e.cancelActive&&Bi(n)),!!n};Object.assign(n,{withTypes:()=>n});const a=async(e,n,a,o)=>{const c=new AbortController,d=Li(s,c.signal),l=[];try{e.pending.add(c),await Promise.resolve(e.effect(n,Oi({},a,{getOriginalState:o,condition:(e,t)=>d(e,t).then(Boolean),take:d,delay:Ei(c.signal),pause:Ii(c.signal),extra:r,signal:c.signal,fork:ji(c.signal,l),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach(((e,t,r)=>{e!==c&&(ki(e,bi),r.delete(e))}))},cancel:()=>{ki(c,bi),e.pending.delete(c)},throwIfCancelled:()=>{Pi(c.signal)}})))}catch(e){e instanceof Si||Fi(i,e,{raisedBy:"effect"})}finally{await Promise.all(l),ki(c,yi),e.pending.delete(c)}},o=(e=>()=>{e.forEach(Bi),e.clear()})(t);return{middleware:e=>r=>c=>{if(!zt(c))return r(c);if($i.match(c))return s(c.payload);if(Vi.match(c))return void o();if(Ui.match(c))return n(c.payload);let d=e.getState();const l=()=>{if(d===xi)throw new Error(`${Mi}: getOriginalState can only be called synchronously`);return d};let p;try{if(p=r(c),t.size>0){const r=e.getState(),s=Array.from(t.values());for(const t of s){let s=!1;try{s=t.predicate(c,r,d)}catch(e){s=!1,Fi(i,e,{raisedBy:"predicate"})}s&&a(t,c,e,l)}}}finally{d=xi}return p},startListening:s,stopListening:n,clearListeners:o}})(),S_=y_.startListening,w_=(e,t)=>S_({predicate:(t,r,i)=>{const s=e.map((e=>e(i))),n=e.map((e=>e(r)));return s.some(((e,t)=>e!==n[t]))},effect:(r,{dispatch:i,getState:s,extra:n})=>{const a=e.map((e=>e(s())));t({dispatch:i,getState:s,extra:n},...a)}}),C_=ui({name:"app",initialState:{isNodeSdk:!1,isActive:!1,isDialIn:!1,roomName:null,roomUrl:null,displayName:null,userAgent:"core:0.27.0",externalId:null},reducers:{doAppStart:(e,t)=>{const r=new URL(t.payload.roomUrl);return Object.assign(Object.assign(Object.assign({},e),t.payload),{roomName:r.pathname,initialConfig:Object.assign({},t.payload),isActive:!0})},doAppStop:e=>Object.assign(Object.assign({},e),{isActive:!1})}}),{doAppStop:R_,doAppStart:T_}=C_.actions,k_=e=>e.app.isActive,P_=e=>e.app.displayName,D_=e=>e.app.externalId;function I_(e){return Jr(`signalConnection/event/${e}`)}const E_={audioEnabled:I_("audioEnabled"),audioEnableRequested:I_("audioEnableRequested"),chatMessage:I_("chatMessage"),clientLeft:I_("clientLeft"),clientKicked:I_("clientKicked"),clientMetadataReceived:I_("clientMetadataReceived"),clientUnableToJoin:I_("clientUnableToJoin"),cloudRecordingStarted:I_("cloudRecordingStarted"),cloudRecordingStopped:I_("cloudRecordingStopped"),disconnect:I_("disconnect"),knockerLeft:I_("knockerLeft"),knockHandled:I_("knockHandled"),newClient:I_("newClient"),roomJoined:I_("roomJoined"),roomKnocked:I_("roomKnocked"),roomLeft:I_("roomLeft"),roomLocked:I_("roomLocked"),roomSessionEnded:I_("roomSessionEnded"),screenshareStarted:I_("screenshareStarted"),screenshareStopped:I_("screenshareStopped"),spotlightAdded:I_("spotlightAdded"),spotlightRemoved:I_("spotlightRemoved"),streamingStopped:I_("streamingStopped"),videoEnabled:I_("videoEnabled"),videoEnableRequested:I_("videoEnableRequested"),liveTranscriptionStarted:I_("liveTranscriptionStarted"),liveTranscriptionStopped:I_("liveTranscriptionStopped")},O_={canLockRoom:["host"],canRequestAudioEnable:["host"],canRequestVideoEnable:["host"],canKickClient:["host"],canEndMeeting:["host"],canAskToSpeak:["host"],canSpotlight:["host"]},x_=ui({name:"authorization",initialState:{roomKey:null,roleName:"none"},reducers:{setRoomKey:(e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload})},extraReducers:e=>{e.addCase(T_,((e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload.roomKey}))),e.addCase(E_.roomJoined,((e,t)=>{var r,i;const s=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),{roleName:(null==s?void 0:s.role.roleName)||"none"})}))}}),{setRoomKey:M_}=x_.actions,j_=e=>e.authorization.roleName;Hr(j_,(e=>O_.canLockRoom.includes(e))),Hr(j_,(e=>O_.canRequestAudioEnable.includes(e))),Hr(j_,(e=>O_.canRequestVideoEnable.includes(e))),Hr(j_,(e=>O_.canKickClient.includes(e))),Hr(j_,(e=>O_.canEndMeeting.includes(e)));const L_=Hr(j_,(e=>O_.canAskToSpeak.includes(e)));function A_(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 s=0;for(i=Object.getOwnPropertySymbols(e);s<i.length;s++)t.indexOf(i[s])<0&&Object.prototype.propertyIsEnumerable.call(e,i[s])&&(r[i[s]]=e[i[s]])}return r}function N_(e,t,r,i){return new(r||(r=Promise))((function(s,n){function a(e){try{c(i.next(e))}catch(e){n(e)}}function o(e){try{c(i.throw(e))}catch(e){n(e)}}function c(e){e.done?s(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())}))}Hr(j_,(e=>O_.canSpotlight.includes(e))),"function"==typeof SuppressedError&&SuppressedError;const B_=ui({name:"deviceCredentials",initialState:{isFetching:!1,data:null},reducers:{},extraReducers:e=>{e.addCase(F_.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(F_.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}))),e.addCase(F_.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!0})))}}),F_=v_("deviceCredentials/doGetDeviceCredentials",((e,{extra:t})=>N_(void 0,void 0,void 0,(function*(){try{return yield t.services.credentialsService.getCredentials()}catch(e){console.error(e)}})))),$_=e=>e.deviceCredentials;w_([Hr(k_,$_,((e,t)=>!(!e||t.isFetching||t.data)))],(({dispatch:e},t)=>{t&&e(F_())}));const V_=ui({name:"signalConnection",initialState:{deviceIdentified:!1,isIdentifyingDevice:!1,status:"ready",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),{socket:null,deviceIdentified:!1,status:"disconnected"}),socketReconnecting:e=>Object.assign(Object.assign({},e),{status:"reconnecting"}),deviceIdentifying:e=>Object.assign(Object.assign({},e),{isIdentifyingDevice:!0}),deviceIdentified:e=>Object.assign(Object.assign({},e),{deviceIdentified:!0,isIdentifyingDevice:!1})},extraReducers:e=>{e.addCase(E_.disconnect,(e=>Object.assign(Object.assign({},e),{deviceIdentified:!1,status:"disconnected"})))}}),{deviceIdentifying:U_,deviceIdentified:z_,socketConnected:q_,socketConnecting:G_,socketDisconnected:W_,socketReconnecting:H_}=V_.actions,K_=()=>(e,t)=>{if(eb(t()))return;e(G_());const r=function(){const e=new URL("wss://signal.appearin.net").origin;return new f_(e,{autoConnect:!1})}();r.on("connect",(()=>e(q_(r)))),r.on("device_identified",(()=>e(z_()))),r.getManager().on("reconnect",(()=>e(H_()))),function(e,t){e.on("room_joined",(e=>t(E_.roomJoined(e)))),e.on("new_client",(e=>t(E_.newClient(e)))),e.on("client_left",(e=>t(E_.clientLeft(e)))),e.on("client_kicked",(e=>t(E_.clientKicked(e)))),e.on("client_unable_to_join",(e=>t(E_.clientUnableToJoin(e)))),e.on("audio_enabled",(e=>t(E_.audioEnabled(e)))),e.on("video_enabled",(e=>t(E_.videoEnabled(e)))),e.on("audio_enable_requested",(e=>t(E_.audioEnableRequested(e)))),e.on("client_metadata_received",(e=>t(E_.clientMetadataReceived(e)))),e.on("chat_message",(e=>t(E_.chatMessage(e)))),e.on("disconnect",(()=>t(E_.disconnect()))),e.on("room_knocked",(e=>t(E_.roomKnocked(e)))),e.on("room_left",(()=>t(E_.roomLeft()))),e.on("room_locked",(e=>t(E_.roomLocked(e)))),e.on("room_session_ended",(e=>t(E_.roomSessionEnded(e)))),e.on("knocker_left",(e=>t(E_.knockerLeft(e)))),e.on("knock_handled",(e=>t(E_.knockHandled(e)))),e.on("screenshare_started",(e=>t(E_.screenshareStarted(e)))),e.on("screenshare_stopped",(e=>t(E_.screenshareStopped(e)))),e.on("cloud_recording_started",(e=>t(E_.cloudRecordingStarted(e)))),e.on("cloud_recording_stopped",(()=>t(E_.cloudRecordingStopped()))),e.on("streaming_stopped",(()=>t(E_.streamingStopped()))),e.on("spotlight_added",(e=>t(E_.spotlightAdded(e)))),e.on("spotlight_removed",(e=>t(E_.spotlightRemoved(e)))),e.on("live_transcription_started",(e=>t(E_.liveTranscriptionStarted(e)))),e.on("live_transcription_stopped",(e=>t(E_.liveTranscriptionStopped(e)))),e.on("video_enable_requested",(e=>t(E_.videoEnableRequested(e))))}(r,e),r.connect()},J_=({deviceCredentials:e})=>(t,r)=>{const i=r(),s=eb(i),n=Y_(i);s&&(n||(s.emit("identify_device",{deviceCredentials:e}),t(U_())))},Q_=()=>(e,t)=>{const r=t();if("connected"===X_(r)){const t=Z_(r).socket;null==t||t.disconnect(),e(W_())}},Z_=e=>e.signalConnection,Y_=e=>e.signalConnection.deviceIdentified,X_=e=>e.signalConnection.status,eb=e=>e.signalConnection.socket;w_([Hr(k_,X_,((e,t)=>!(!e||!["ready","reconnecting"].includes(t))))],(({dispatch:e},t)=>{t&&e(K_())}));const tb=Hr($_,X_,Y_,(e=>e.signalConnection.isIdentifyingDevice),((e,t,r,i)=>!(!e.data||"connected"!==t||r||i)));w_([tb,$_],(({dispatch:e},t,r)=>{t&&r.data&&e(J_({deviceCredentials:r.data}))})),S_({actionCreator:E_.roomLeft,effect:(e,{dispatch:t})=>{t(Q_())}}),S_({actionCreator:E_.clientKicked,effect:(e,{dispatch:t})=>{t(Q_())}});const rb=ui({name:"chat",initialState:{chatMessages:[]},reducers:{},extraReducers(e){e.addCase(E_.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]})}))}}),ib=ui({name:"cloudRecording",initialState:{isRecording:!1,error:null,startedAt:void 0},reducers:{recordingRequestStarted:e=>Object.assign(Object.assign({},e),{status:"requested"})},extraReducers:e=>{e.addCase(E_.cloudRecordingStopped,(e=>Object.assign(Object.assign({},e),{isRecording:!1,status:void 0}))),e.addCase(E_.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(E_.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}))}});ib.actions;const sb=ui({initialState:{data:null,isFetching:!1,error:null},name:"organization",reducers:{},extraReducers:e=>{e.addCase(nb.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(nb.fulfilled,((e,t)=>t.payload?Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}):Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(nb.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!1,error:!0})))}}),nb=v_("organization/doOrganizationFetch",((e,{extra:t,getState:r})=>N_(void 0,void 0,void 0,(function*(){try{const e=(e=>e.app.roomUrl)(r()),i=yield t.services.fetchOrganizationFromRoomUrl(e||"");if(!i)throw new Error("Invalid room url");return i}catch(e){console.error(e)}})))),ab=e=>{var t;return null===(t=e.organization.data)||void 0===t?void 0:t.organizationId},ob=Hr(k_,(e=>e.organization),$_,((e,t,r)=>!(!e||t.data||t.isFetching||t.error||r.isFetching)));w_([ob],(({dispatch:e},t)=>{t&&e(nb())}));const cb=ui({name:"localMedia",initialState:{busyDeviceIds:[],cameraEnabled:!1,currentSpeakerDeviceId:"default",devices:[],isSettingCameraDevice:!1,isSettingMicrophoneDevice:!1,isSettingSpeakerDevice:!1,isTogglingCamera:!1,lowDataMode:!1,microphoneEnabled:!1,status:"inactive",stream:void 0,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}),setCurrentSpeakerDeviceId(e,t){var r;return Object.assign(Object.assign({},e),{currentSpeakerDeviceId:null!==(r=t.payload.deviceId)&&void 0!==r?r:"default"})},toggleLowDataModeEnabled(e,t){var r;return Object.assign(Object.assign({},e),{lowDataMode:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.lowDataMode})},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(T_,((e,t)=>Object.assign(Object.assign({},e),{options:t.payload.localMediaOptions}))),e.addCase(Cb.pending,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:i,isSettingMicrophoneDevice:r})})),e.addCase(Cb.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(Cb.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(yb.pending,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!0}))),e.addCase(yb.fulfilled,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!1}))),e.addCase(Rb.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}))),e.addCase(kb.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(kb.fulfilled,((e,{payload:{stream:t,onDeviceChange:r}})=>{let i,s,n=!1,a=!1;const o=t.getAudioTracks()[0],c=t.getVideoTracks()[0];return o&&(s=o.getSettings().deviceId,a=o.enabled),c&&(n=c.enabled,i=c.getSettings().deviceId),Object.assign(Object.assign({},e),{stream:t,status:"started",currentCameraDeviceId:i,currentMicrophoneDeviceId:s,cameraEnabled:n,microphoneEnabled:a,onDeviceChange:r})})),e.addCase(kb.rejected,((e,t)=>Object.assign(Object.assign({},e),{status:"error",startError:t.error}))),e.addCase(Tb.pending,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!0}))),e.addCase(Tb.fulfilled,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1}))),e.addCase(Tb.rejected,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1})))}}),{deviceBusy:db,setCurrentCameraDeviceId:lb,setCurrentMicrophoneDeviceId:pb,setCurrentSpeakerDeviceId:ub,toggleCameraEnabled:hb,toggleMicrophoneEnabled:mb,toggleLowDataModeEnabled:fb,setLocalMediaOptions:gb,setLocalMediaStream:vb,localMediaStopped:_b,localStreamMetadataUpdated:bb}=cb.actions,yb=v_("localMedia/doToggleCamera",((e,{getState:t,rejectWithValue:r})=>N_(void 0,void 0,void 0,(function*(){const e=t(),i=Bb(e);if(!i)return;let s=i.getVideoTracks()[0];const n=Ob(e);try{if(n)if(s)s.enabled=!0;else{const t=$b(e),r=Ib(e);yield vg(Object.assign(Object.assign({},t),{audioId:!1,videoId:r,type:"exact"}),{replaceStream:i}),s=i.getVideoTracks()[0]}else{if(!s)return;s.enabled=!1,s.stop(),i.removeTrack(s)}i.dispatchEvent(new CustomEvent("stopresumevideo",{detail:{track:s,enable:n}}))}catch(e){return r(e)}})))),Sb=v_("localMedia/doToggleMicrophone",((e,{getState:t})=>{var r;const i=t(),s=Bb(i);if(!s)return;const n=xb(i),a=null===(r=s.getAudioTracks())||void 0===r?void 0:r[0];a&&(a.enabled=n)})),wb=()=>(e,t)=>{const r=t();if(!Bb(r))return;const i=Ib(r),s=Eb(r);e(Tb({audioId:s,videoId:i}))},Cb=v_("localMedia/reactSetDevice",(({audio:e,video:t},{getState:r,rejectWithValue:i})=>N_(void 0,void 0,void 0,(function*(){try{const i=r(),s=Bb(i);if(!s)throw new Error("No stream");const n=!!e&&Eb(i),a=!!t&&Ib(i),o=$b(i),{replacedTracks:c}=yield vg(Object.assign(Object.assign({},o),{audioId:n,videoId:a,type:"exact"}),{replaceStream:s}),d=xb(i);s.getAudioTracks().forEach((e=>e.enabled=d));const l=Ob(i);return s.getVideoTracks().forEach((e=>e.enabled=l)),{replacedTracks:c}}catch(e){return i(e)}})))),Rb=v_("localMedia/doUpdateDeviceList",((e,{getState:t,dispatch:r,rejectWithValue:i})=>N_(void 0,void 0,void 0,(function*(){var e,s,n,a;const o=t();let c=[],d=[];const l=Bb(o);try{c=yield navigator.mediaDevices.enumerateDevices(),d=jb(o);if(!(l&&!Fb(o)&&c&&d&&d.find((e=>e.deviceId))))return{devices:c};const{changedDevices:t,addedDevices:i}=_g({oldDevices:d,newDevices:c});let p=null===(e=t.audioinput)||void 0===e?void 0:e.deviceId,u=null===(s=t.videoinput)||void 0===s?void 0:s.deviceId;return void 0===p&&(p=null===(n=i.audioinput)||void 0===n?void 0:n.deviceId),void 0===u&&(u=null===(a=i.videoinput)||void 0===a?void 0:a.deviceId),void 0===p&&void 0===u||r(Tb({audioId:p,videoId:u})),{devices:c}}catch(e){return i(e)}})))),Tb=v_("localMedia/doSwitchLocalStream",(({audioId:e,videoId:t},{dispatch:r,getState:i,rejectWithValue:s})=>N_(void 0,void 0,void 0,(function*(){const n=i(),a=Bb(n),o=$b(n),c=!(!t||e)||!(t||!e);if(a)try{const{replacedTracks:i}=yield vg(Object.assign(Object.assign({},o),{audioId:void 0!==e&&e,videoId:void 0!==t&&t,type:"exact"}),{replaceStream:a}),s=e||t;return c&&s&&r(db({deviceId:s})),{replacedTracks:i}}catch(i){console.error(i);const n=e||t;return c&&n&&r(db({deviceId:n})),s(i)}})))),kb=v_("localMedia/doStartLocalMedia",((e,{getState:t,dispatch:r,rejectWithValue:i})=>N_(void 0,void 0,void 0,(function*(){const s=function(e,{delay:t=500,edges:r}={}){let i,s=0;return(...n)=>{s+=1,r&&1===s&&e(...n),clearTimeout(i),i=setTimeout((()=>{(!r||s>1)&&e(...n),i=void 0,s=0}),t)}}((()=>{r(Rb())}),{delay:500});if(navigator.mediaDevices&&navigator.mediaDevices.addEventListener("devicechange",s),"getTracks"in e)return Promise.resolve({stream:e,onDeviceChange:s});if(!e.audio&&!e.video)return{stream:new MediaStream,onDeviceChange:s};r(gb({options:e}));try{yield r(Rb());const i=t(),n=$b(i),{stream:a}=yield vg(Object.assign(Object.assign({},n),{audioId:e.audio,videoId:e.video}));return{stream:a,onDeviceChange:s}}catch(e){return i(e)}})))),Pb=()=>(e,t)=>{const r=Bb(t()),i=Ab(t()).onDeviceChange;null==r||r.getTracks().forEach((e=>{e.stop()})),navigator.mediaDevices&&i&&navigator.mediaDevices.removeEventListener("devicechange",i),e(_b())},Db=e=>e.localMedia.busyDeviceIds,Ib=e=>e.localMedia.currentCameraDeviceId,Eb=e=>e.localMedia.currentMicrophoneDeviceId,Ob=e=>e.localMedia.cameraEnabled,xb=e=>e.localMedia.microphoneEnabled,Mb=e=>e.localMedia.lowDataMode,jb=e=>e.localMedia.devices,Lb=e=>e.localMedia.options;Hr(Lb,(e=>!!e));const Ab=e=>e.localMedia,Nb=e=>e.localMedia.status,Bb=e=>e.localMedia.stream,Fb=e=>e.localMedia.isSwitchingStream,$b=Hr(jb,Ib,Eb,Mb,((e,t,r,i)=>({devices:e,videoId:t,audioId:r,options:{disableAEC:!1,disableAGC:!1,hd:!0,lax:!1,lowDataMode:i,simulcast:!0,widescreen:!0}})));Hr(Nb,(e=>"starting"===e)),Hr(jb,Db,((e,t)=>e.filter((e=>"videoinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),Hr(jb,Db,((e,t)=>e.filter((e=>"audioinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),Hr(jb,(e=>e.filter((e=>"audiooutput"===e.kind))));w_([Hr(k_,Nb,Lb,((e,t,r)=>{if(e&&["inactive","stopped"].includes(t)&&r)return r}))],(({dispatch:e},t)=>{t&&e(kb(t))}));w_([Hr(k_,Nb,Lb,((e,t,r)=>!e&&"inactive"!==t&&!!r))],(({dispatch:e},t)=>{t&&e(Pb())})),S_({predicate:(e,t,r)=>{const i=xb(r),s=xb(t);return"started"===Nb(r)&&i!==s},effect:(e,{dispatch:t})=>{t(Sb())}}),S_({predicate:(e,t,r)=>{const i=Mb(r),s=Mb(t);return"started"===Nb(r)&&i!==s},effect:(e,{dispatch:t})=>{t(wb())}}),S_({predicate:(e,t,r)=>{const i=(e=>e.localMedia.isTogglingCamera)(t);if(i)return!1;const s=Ob(r),n=Ob(t);return"started"===Nb(r)&&s!==n},effect:(e,{dispatch:t})=>{t(yb())}}),S_({predicate:(e,t,r)=>{const i=Ib(r),s=Ib(t);return"started"===Nb(r)&&i!==s},effect:(e,{dispatch:t})=>{t(Cb({audio:!1,video:!0}))}}),S_({predicate:(e,t,r)=>{const i=Eb(r),s=Eb(t);return"started"===Nb(r)&&i!==s},effect:(e,{dispatch:t})=>{t(Cb({audio:!0,video:!1}))}}),S_({matcher:ti(kb.fulfilled,Rb.fulfilled,Tb.fulfilled,Tb.rejected),effect:(e,{dispatch:t,getState:r})=>{const i=r(),s=Bb(i),n=jb(i);if(!s)return;const a=function({audioTrack:e,videoTrack:t,devices:r,stoppedVideoTrack:i,lastAudioId:s,lastVideoId:n}){const a=e=>"live"===(null==e?void 0:e.readyState)?e:null;return t=a(t)||i,e=a(e),{video:fg("videoinput",t,r,n),audio:fg("audioinput",e,r,s)}}({audioTrack:s.getAudioTracks()[0],videoTrack:s.getVideoTracks()[0],devices:n});t(bb(a))}}),S_({actionCreator:E_.audioEnableRequested,effect:({payload:e},{dispatch:t})=>{const{enable:r}=e;r||t(mb({enabled:!1}))}}),S_({actionCreator:E_.videoEnableRequested,effect:({payload:e},{dispatch:t})=>{const{enable:r}=e;r||t(hb({enabled:!1}))}});const Vb=["recorder","streamer"],Ub=ui({name:"localParticipant",initialState:{displayName:"",id:"",isAudioEnabled:!0,isVideoEnabled:!0,isLocalParticipant:!0,stream:void 0,isScreenSharing:!1,roleName:"none",clientClaim:void 0,stickyReaction:void 0,isDialIn:!1},reducers:{setDisplayName:(e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName})},extraReducers:e=>{e.addCase(T_,((e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName}))),e.addCase(qb.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isAudioEnabled:t.payload}))),e.addCase(Gb.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isVideoEnabled:t.payload}))),e.addCase(Wb.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{stickyReaction:t.payload}))),e.addCase(E_.roomJoined,((e,t)=>{var r,i;const s=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==s?void 0:s.role.roleName)||"none",clientClaim:t.payload.clientClaim})}))}}),{setDisplayName:zb}=Ub.actions,qb=b_("localParticipant/doEnableAudio",((e,{dispatch:t,getState:r})=>N_(void 0,void 0,void 0,(function*(){const i=r(),s=Z_(i).socket;return null==s||s.emit("enable_audio",{enabled:e.enabled}),e.enabled&&t(Wb({enabled:!1})),e.enabled})))),Gb=b_("localParticipant/doEnableVideo",((e,{getState:t})=>N_(void 0,void 0,void 0,(function*(){const r=t(),i=Z_(r).socket;return null==i||i.emit("enable_video",{enabled:e.enabled}),e.enabled})))),Wb=b_("localParticipant/doSetLocalStickyReaction",((e,{getState:t,rejectWithValue:r})=>N_(void 0,void 0,void 0,(function*(){var i;const s=t(),n=Zb(s),a=Boolean(n),o=null!==(i=e.enabled)&&void 0!==i?i:!a;if(o===a)return r(n);return o?{reaction:"✋",timestamp:(new Date).toISOString()}:null})))),Hb=__((()=>(e,t)=>{const r=t(),i=Z_(r).socket,s={displayName:Qb(r),stickyReaction:Zb(r)};null==i||i.emit("send_client_metadata",{type:"UserData",payload:s})})),Kb=e=>e.localParticipant,Jb=e=>e.localParticipant.id,Qb=e=>e.localParticipant.displayName,Zb=e=>e.localParticipant.stickyReaction,Yb=Hr(Kb,Bb,((e,t)=>{const r={id:e.id,clientId:e.id,displayName:e.displayName,stream:t,isLocalClient:!0,isAudioEnabled:e.isAudioEnabled,isVideoEnabled:e.isVideoEnabled};return Vb.includes(e.roleName)?null:r}));S_({actionCreator:hb,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isVideoEnabled:s}=Kb(r());t(Gb({enabled:i||!s}))}}),S_({actionCreator:mb,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isAudioEnabled:s}=Kb(r());t(qb({enabled:i||!s}))}}),w_([Qb,Zb],(({dispatch:e})=>{e(Hb())}));const Xb=ui({initialState:{session:null,status:"ready",error:null},name:"roomConnection",reducers:{connectionStatusChanged:(e,t)=>Object.assign(Object.assign({},e),{status:t.payload})},extraReducers:e=>{e.addCase(E_.roomJoined,((e,t)=>{var r,i;const{error:s,isLocked:n}=t.payload;return"room_locked"===s&&n?Object.assign(Object.assign({},e),{status:"room_locked"}):s?Object.assign(Object.assign({},e),{status:"disconnected",error:s}):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(E_.disconnect,(e=>["kicked","left"].includes(e.status)?Object.assign({},e):Object.assign(Object.assign({},e),{status:"disconnected"}))),e.addCase(E_.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(E_.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(E_.clientKicked,(e=>Object.assign(Object.assign({},e),{status:"kicked"}))),e.addCase(E_.roomLeft,(e=>Object.assign(Object.assign({},e),{status:"left"}))),e.addCase(H_,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"})))}}),{connectionStatusChanged:ey}=Xb.actions,ty=()=>(e,t)=>{const r=t(),i=Z_(r).socket,s=(e=>e.app.roomName)(r),n=(e=>e.authorization.roomKey)(r),a=P_(r),o=(e=>e.app.userAgent)(r),c=D_(r),d=(e=>e.app.isDialIn)(r),l=ab(r),p=Ob(t()),u=xb(t()),h=(e=>e.localParticipant.clientClaim)(t());null==i||i.emit("join_room",Object.assign({avatarUrl:null,config:{isAudioEnabled:u,isVideoEnabled:p},deviceCapabilities:{canScreenshare:!0},displayName:a,isCoLocated:!1,isDialIn:d,isDevicePermissionDenied:!1,kickFromOtherRooms:!1,organizationId:l,roomKey:n,roomName:s,userAgent:o,externalId:c},h&&{clientClaim:h})),e(ey("connecting"))},ry=e=>e.roomConnection.status,iy=Hr([k_,ab,ry,Y_,Nb,e=>e.roomConnection.error],((e,t,r,i,s,n)=>!(!(e&&"started"===s&&i&&t&&["ready","reconnecting","disconnected"].includes(r))||n)));function sy(e){return Jr(`rtcConnection/event/${e}`)}w_([iy],(({dispatch:e},t)=>{t&&e(ty())})),S_({actionCreator:E_.knockHandled,effect:({payload:e},{dispatch:t,getState:r})=>{const{clientId:i,resolution:s}=e,n=r();i===Jb(n)&&("accepted"===s?(t(M_(e.metadata.roomKey)),t(ty())):"rejected"===s&&t(ey("knock_rejected")))}}),S_({actionCreator:R_,effect:(e,{dispatch:t,getState:r})=>{const i=r();if("connected"===ry(i)){const e=Z_(i).socket;null==e||e.emit("leave_room"),t(ey("leaving"))}else Q_()}});const ny={rtcManagerCreated:sy("rtcManagerCreated"),rtcManagerDestroyed:sy("rtcManagerDestroyed"),streamAdded:sy("streamAdded")};function ay(e,t=!1){const{streams:r,role:i}=e,s=A_(e,["streams","role"]);return Object.assign(Object.assign({},s),{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 oy(e,t){const r=e.remoteParticipants.findIndex((e=>e.id===t));return{index:r,participant:e.remoteParticipants[r]}}function cy(e,t,r){const{participant:i,index:s}=oy(e,t);return i?Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants.slice(0,s),Object.assign(Object.assign({},i),r),...e.remoteParticipants.slice(s+1)]}):(console.error(`Did not find client for update ${t}`),e)}function dy(e,t,r,i){const{participant:s}=oy(e,t);if(!s)return console.error(`No client ${t} found to update stream ${r} ${i}`),e;const n=s.streams.findIndex((e=>e.id===r)),a=[...s.streams];return a[n]=Object.assign(Object.assign({},a[n]),{state:i}),cy(e,t,{streams:a})}function ly(e,t,r){const{participant:i}=oy(e,t);return!i||i.streams.find((e=>e.id===r))?(console.warn(`No participant ${t} or stream ${r} already exists`),e):cy(e,t,{streams:[...i.streams,{id:r,state:"to_accept"}]})}const py=ui({name:"remoteParticipants",initialState:{remoteParticipants:[]},reducers:{streamStatusUpdated:(e,t)=>{let r=e;for(const{clientId:e,streamId:i,state:s}of t.payload)r=dy(r,e,i,s);return r},participantStreamAdded:(e,t)=>{const{clientId:r,stream:i}=t.payload;return cy(e,r,{stream:i})},participantStreamIdAdded:(e,t)=>{const{clientId:r,streamId:i}=t.payload;return ly(e,r,i)}},extraReducers:e=>{e.addCase(E_.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:s}=t.payload.room;return Object.assign(Object.assign({},e),{remoteParticipants:s.filter((e=>e.id!==i)).map((e=>ay(e)))})})),e.addCase(ny.streamAdded,((e,t)=>function(e,t){const{clientId:r,stream:i,streamType:s}=t;let{streamId:n}=t;const{participant:a}=oy(e,r);if(!a)return console.error(`Did not find client ${r} for adding stream`),e;const o=e.remoteParticipants;n||(n=i.id);const c=o.find((e=>e.id===r));if(!c)return e;const d=c.streams.find((e=>e.id===n));return c.stream&&(c.stream.id===n||c.stream.inboundId===n)||!c.stream&&"webcam"===s||!c.stream&&!s&&!d?cy(e,r,{stream:i}):cy(e,r,{presentationStream:i})}(e,t.payload))),e.addCase(E_.newClient,((e,t)=>{const{client:r}=t.payload;return function(e,t){const{participant:r}=oy(e,t.id);return r?(console.warn(`Client already existing ${t.id}. Ignoring`),e):Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants,t]})}(e,ay(r,!0))})),e.addCase(E_.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(E_.audioEnabled,((e,t)=>{const{clientId:r,isAudioEnabled:i}=t.payload;return cy(e,r,{isAudioEnabled:i})})),e.addCase(E_.videoEnabled,((e,t)=>{const{clientId:r,isVideoEnabled:i}=t.payload;return cy(e,r,{isVideoEnabled:i})})),e.addCase(E_.clientMetadataReceived,((e,t)=>{const{error:r,payload:i}=t.payload;if(r||!i)return console.warn(r||"Client metadata error received"),e;const{clientId:s,displayName:n,stickyReaction:a}=i;return cy(e,s,{displayName:n,stickyReaction:a})})),e.addCase(E_.screenshareStarted,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return ly(e,r,i)})),e.addCase(E_.screenshareStopped,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return function(e,t,r){var i,s;const{participant:n}=oy(e,t);if(!n)return console.error(`No participant ${t} found to remove stream ${r}`),e;const a=n.stream&&n.stream.id,o=(null===(i=n.presentationStream)||void 0===i?void 0:i.inboundId)||(null===(s=n.presentationStream)||void 0===s?void 0:s.id),c=n.streams.findIndex((e=>e.id===r));return cy(e,t,Object.assign(Object.assign({streams:n.streams.filter(((e,t)=>t!==c))},a===r&&{stream:null}),o===r&&{presentationStream:null}))}(e,r,i)}))}}),{participantStreamAdded:uy,participantStreamIdAdded:hy,streamStatusUpdated:my}=py.actions,fy=e=>e.remoteParticipants.remoteParticipants,gy=Hr(fy,(e=>e.filter((e=>!Vb.includes(e.roleName)))));Hr(fy,(e=>e.length+1)),Hr(gy,Kb,((e,t)=>Vb.includes(t.roleName)?e.length:e.length+1));const vy=ui({name:"localScreenshare",initialState:{status:"inactive",stream:null,error:null},reducers:{stopScreenshare:(e,t)=>Object.assign(Object.assign({},e),{status:"inactive",stream:null})},extraReducers:e=>{e.addCase(by.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(by.fulfilled,((e,{payload:{stream:t}})=>Object.assign(Object.assign({},e),{status:"active",stream:t}))),e.addCase(by.rejected,((e,{payload:t})=>Object.assign(Object.assign({},e),{error:t,status:"inactive",stream:null})))}}),{stopScreenshare:_y}=vy.actions,by=b_("localScreenshare/doStartScreenshare",((e,{dispatch:t,getState:r,rejectWithValue:i})=>N_(void 0,void 0,void 0,(function*(){var e;try{const i=r(),s=Sy(i);if(s)return{stream:s};const n=yield navigator.mediaDevices.getDisplayMedia(),a=()=>{t(yy())};return"oninactive"in n?n.addEventListener("inactive",a):null===(e=n.getVideoTracks()[0])||void 0===e||e.addEventListener("ended",a),{stream:n}}catch(e){return i(e)}})))),yy=__((()=>(e,t)=>{const r=t(),i=Sy(r);i&&(i.getTracks().forEach((e=>e.stop())),e(_y({stream:i})))})),Sy=e=>e.localScreenshare.stream;S_({actionCreator:_b,effect:(e,{getState:t})=>{const r=t(),i=Sy(r);i&&(null==i||i.getTracks().forEach((e=>{e.stop()})))}});const wy=e=>({emit:(t,r)=>{"rtc_manager_created"===t?e(Ly(r)):"stream_added"===t?e(ny.streamAdded(r)):"rtc_manager_destroyed"===t&&e(Iy())}}),Cy={dispatcherCreated:!1,error:null,isCreatingDispatcher:!1,reportedStreamResolutions:{},rtcManager:null,rtcManagerDispatcher:null,rtcManagerInitialized:!1,status:"inactive",isAcceptingStreams:!1},Ry=ui({name:"rtcConnection",initialState:Cy,reducers:{isAcceptingStreams:(e,t)=>Object.assign(Object.assign({},e),{isAcceptingStreams:t.payload}),resolutionReported:(e,t)=>{const{streamId:r,width:i,height:s}=t.payload;return Object.assign(Object.assign({},e),{reportedStreamResolutions:Object.assign(Object.assign({},e.reportedStreamResolutions),{[r]:{width:i,height:s}})})},rtcDisconnected:()=>Object.assign({},Cy),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(H_,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"}))),e.addCase(E_.roomJoined,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"===e.status?"ready":e.status})))}}),{resolutionReported:Ty,rtcDispatcherCreated:ky,rtcDisconnected:Py,rtcManagerCreated:Dy,rtcManagerDestroyed:Iy,rtcManagerInitialized:Ey,isAcceptingStreams:Oy}=Ry.actions,xy=()=>(e,t)=>{const r=t(),i=Z_(r).socket,s=Ny(r).rtcManagerDispatcher,n=Ob(r),a=xb(r),o=(e=>e.app.isNodeSdk)(r);if(s||!i)return;const c={getMediaConstraints:()=>({audio:a,video:n}),deferrable:e=>!e},d=new d_({emitter:wy(e),serverSocket:i,webrtcProvider:c,features:{isNodeSdk:o,lowDataModeEnabled:!1,sfuServerOverrideHost:void 0,turnServerOverrideHost:void 0,useOnlyTURN:void 0,vp9On:!1,h264On:!1,simulcastScreenshareOn:!1,deviceHandlerFactory:o?po.createFactory():void 0}});e(ky(d))},My=()=>(e,t)=>{const{rtcManager:r}=Ny(t());r&&r.disconnectAll(),e(Py())},jy=e=>(t,r)=>{var i;t(Oy(!0));const s=r(),n=Ny(s).rtcManager,a=fy(s);if(!n)throw new Error("No rtc manager");const o=null===(i=n.shouldAcceptStreamsFromBothSides)||void 0===i?void 0:i.call(n),c=[];for(const{clientId:t,streamId:r,state:i}of e){const e=a.find((e=>e.id===t));if(e){if("to_accept"===i||"new_accept"===i&&o||"old_accept"===i&&!o){const i=e.isDialIn?"onlytls":void 0;n.acceptNewStream({streamId:"0"===r?t:r,clientId:t,shouldAddLocalVideo:"0"===r,activeBreakout:false,enforceTurnProtocol:i})}else if("new_accept"===i||"old_accept"===i);else if("to_unaccept"===i)null==n||n.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(my(c)),t(Oy(!1))},Ly=e=>t=>{const{rtcManager:r}=e;t(Dy(r))},Ay=()=>(e,t)=>{const r=Bb(t()),i=Ny(t()).rtcManager,s=Ob(t()),n=xb(t());r&&i&&i.addNewStream("0",r,!n,!s),e(Ey())},Ny=e=>e.rtcConnection,By=e=>e.rtcConnection.rtcManagerInitialized,Fy=e=>e.rtcConnection.rtcManager,$y=e=>e.rtcConnection.status;S_({actionCreator:Cb.fulfilled,effect:({payload:e},{getState:t})=>{const{replacedTracks:r}=e,{rtcManager:i}=Ny(t()),s=Bb(t());null==r||r.forEach((e=>{((e,t)=>{const r=null==s?void 0:s.getTracks().find((t=>t.kind===e));r&&(null==i||i.replaceTrack(t,r))})(e.kind,e)}))}}),S_({actionCreator:by.fulfilled,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=Ny(t());null==i||i.addNewStream(r.id,r,!1,!0)}}),S_({actionCreator:R_,effect:(e,{getState:t})=>{const r=Fy(t());null==r||r.rtcStatsDisconnect()}}),S_({actionCreator:_y,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=Ny(t());null==i||i.removeStream(r.id,r,null)}}),S_({actionCreator:Tb.fulfilled,effect:({payload:e},{getState:t})=>{var r;const i=Bb(t()),{rtcManager:s}=Ny(t());if(i&&s){const t=(e,t)=>{const r=i.getTracks().find((t=>t.kind===e));return r&&s.replaceTrack(t,r)};null===(r=null==e?void 0:e.replacedTracks)||void 0===r||r.forEach((e=>{t(e.kind,e)}))}}});const Vy=Hr($y,k_,(e=>e.rtcConnection.dispatcherCreated),(e=>e.rtcConnection.isCreatingDispatcher),eb,((e,t,r,i,s)=>!(!t||"inactive"!==e||r||i||!s)));w_([Vy],(({dispatch:e},t)=>{t&&e(xy())}));const Uy=Hr(Fy,By,Nb,((e,t,r)=>!("started"!==r||!e||t)));w_([Uy],(({dispatch:e},t)=>{t&&e(Ay())}));w_([Hr($y,k_,((e,t)=>!t&&!["inactive","disconnected"].includes(e)))],(({dispatch:e},t)=>{t&&e(My())}));const zy=Hr($y,fy,((e,t)=>{if("ready"!==e)return[];const r=[];for(const e of t){const{streams:t,id:i,newJoiner:s}=e;for(let e=0;e<t.length;e++){let n=t[e].id,a=t[e].state;(null==t?void 0:t.length)>1&&"0"===t[1].id&&(0===e?(n=t[1].id,a=t[1].state):1===e&&(n=t[0].id,a=t[0].state)),"done_accept"!==a&&r.push({clientId:i,streamId:n,state:(s&&"0"===n?"new":"to")+"_accept"})}}return r}));function qy(e){return"recorder"===e.roleName}w_([zy,e=>e.rtcConnection.isAcceptingStreams],(({dispatch:e},t,r)=>{0<t.length&&!r&&e(jy(t))}));const Gy=ui({name:"room",initialState:{isLocked:!1},reducers:{},extraReducers:e=>{e.addCase(E_.roomJoined,((e,t)=>{const{error:r,isLocked:i}=t.payload;return r?e:Object.assign(Object.assign({},e),{isLocked:Boolean(i)})})),e.addCase(E_.roomLocked,((e,t)=>{const{isLocked:r}=t.payload;return Object.assign(Object.assign({},e),{isLocked:Boolean(r)})}))}});Hr(Sy,gy,((e,t)=>{const r=[];e&&r.push({id:e.id||"local-screenshare",participantId:"local",hasAudioTrack:e.getTracks().some((e=>"audio"===e.kind)),stream:e,isLocal:!0});for(const e of t)e.presentationStream&&r.push({id:e.presentationStream.id||`pres-${e.id}`,participantId:e.id,hasAudioTrack:e.presentationStream.getTracks().some((e=>"audio"===e.kind)),stream:e.presentationStream,isLocal:!1});return r}));const Wy=Hr(Sy,Kb,gy,((e,t,r)=>{const i=[];if(e){const r=!!e.getAudioTracks().length;i.push({clientId:t.id,displayName:"Your screenshare",id:"local-screenshare",isAudioEnabled:r,isLocalClient:!0,isPresentation:!0,isVideoEnabled:!0,stream:e})}for(const e of r){if("streamer"===e.roleName||qy(e))continue;const{presentationStream:t}=e,r=A_(e,["presentationStream"]),s=e.displayName||"Guest",n=t&&t.active,a="pres-"+e.id,o=e.stream&&e.stream.active,c=e.isVideoEnabled;i.push(Object.assign(Object.assign(Object.assign({},r),{clientId:e.id,displayName:s,hasActivePresentation:!!n}),e.isVideoEnabled?{isVideoEnabled:c}:{})),n&&i.push(Object.assign(Object.assign(Object.assign({},r),{clientId:e.id,stream:e.presentationStream,displayName:`Screenshare (${s})`,id:a,isPresentation:!0,isVideoEnabled:!0}),o&&{isRecording:null}))}return i})),Hy=Hr(Yb,Wy,((e,t)=>[...e?[e]:[],...t])),Ky={running:!1},Jy=ui({name:"connectionMonitor",initialState:Ky,reducers:{connectionMonitorStarted:(e,t)=>Object.assign(Object.assign({},e),{running:!0,stopCallbackFunction:t.payload.stopIssueSubscription}),connectionMonitorStopped:()=>Object.assign({},Ky)}}),{connectionMonitorStarted:Qy,connectionMonitorStopped:Zy}=Jy.actions,Yy=()=>(e,t)=>{var r;r=()=>{const e=t(),r=Hy(e).map((e=>{var t,r;return{id:e.id,clientId:e.clientId,isLocalClient:e.isLocalClient,audio:{enabled:e.isAudioEnabled,track:null===(t=e.stream)||void 0===t?void 0:t.getAudioTracks()[0]},video:{enabled:e.isVideoEnabled,track:null===(r=e.stream)||void 0===r?void 0:r.getVideoTracks()[0]},isPresentation:e.isPresentation}}));return r},xf.getClients=r;const i=Gf({onUpdatedIssues:e=>{var r;const i=t(),s=Fy(i);if(!s)return;let n=0,a=0,o=0,c=0;Object.entries(e.aggregated.metrics).forEach((([e,t])=>{/loc.*packetloss/.test(e)&&(n=Math.max(n,t.curMax)),/rem.*packetloss/.test(e)&&(a=Math.max(a,t.curMax)),/loc.*bitrate/.test(e)&&(o+=t.curSum),/rem.*bitrate/.test(e)&&(c+=t.curSum)})),s.sendStatsCustomEvent("insightsStats",{ls:Math.round(1e3*n)/1e3,lr:Math.round(1e3*a)/1e3,bs:Math.round(o),br:Math.round(c),cpu:null===(r=e.aggregated.metrics["global-cpu-pressure"])||void 0===r?void 0:r.curSum,_time:Date.now()})}});e(Qy({stopIssueSubscription:i.stop}))},Xy=()=>(e,t)=>{const r=t(),i=tS(r);i&&i(),e(Zy())},eS=e=>e.connectionMonitor.running,tS=e=>e.connectionMonitor.stopCallbackFunction,rS=Hr(ry,eS,((e,t)=>!t&&"connected"===e)),iS=Hr(ry,eS,((e,t)=>!(!t||!["kicked","left"].includes(e))));w_([rS],(({dispatch:e},t)=>{t&&e(Yy())})),w_([iS],(({dispatch:e},t)=>{t&&e(Xy())}));function sS(e){return Object.assign(Object.assign({},e),{timestamp:Date.now()})}const nS=ui({name:"notifications",initialState:{emitter:new Gi,events:[]},reducers:{addNotification:(e,t)=>Object.assign(Object.assign({},e),{events:[...e.events,Object.assign({},t.payload)]}),doClearNotifications:e=>Object.assign(Object.assign({},e),{events:[]})}});nS.actions;const aS=e=>(t,r)=>{t(nS.actions.addNotification(e));const i=r(),s=oS(i);s.emit(e.type,e),s.emit("*",e)},oS=e=>e.notifications.emitter;S_({actionCreator:E_.chatMessage,effect:({payload:e},{dispatch:t,getState:r})=>{const i=r(),s=gy(i).find((({id:t})=>t===e.senderId));s?t(aS(sS({type:"chatMessageReceived",message:`${s.displayName} says: ${e.text}`,props:{client:s,chatMessage:{senderId:e.senderId,timestamp:e.timestamp,text:e.text}}}))):console.warn("Could not find remote client that sent chat message")}}),S_({actionCreator:E_.audioEnableRequested,effect:({payload:e},{dispatch:t,getState:r})=>{const{enable:i,requestedByClientId:s}=e,n=r(),a=gy(n).find((({id:e})=>e===s));a?t(aS(sS({type:i?"requestAudioEnable":"requestAudioDisable",message:i?`${a.displayName} has requested for you to speak`:`${a.displayName} has muted your microphone`,props:{client:a,enable:i}}))):console.warn("Could not find remote client that requested a local audio change")}}),S_({actionCreator:E_.videoEnableRequested,effect:({payload:e},{dispatch:t,getState:r})=>{const{enable:i,requestedByClientId:s}=e,n=r(),a=gy(n).find((({id:e})=>e===s));a?t(aS(sS({type:i?"requestVideoEnable":"requestVideoDisable",message:i?`${a.displayName} has requested for you to start video`:`${a.displayName} has stopped your video`,props:{client:a,enable:i}}))):console.warn("Could not find remote client that requested a local video change")}}),S_({actionCreator:E_.clientMetadataReceived,effect:(e,{dispatch:t,getOriginalState:r,getState:i})=>{var s;const{error:n,payload:a}=e.payload;if(n||!a)return;const{clientId:o,stickyReaction:c}=a,d=i();if(!L_(d))return;const l=gy(d).find((({id:e})=>e===o));if(!l)return void console.warn("Could not find remote client that provided updated metadata");const p=r(),u=gy(p).find((({id:e})=>e===o));(c||(null==u?void 0:u.stickyReaction))&&(null==c?void 0:c.timestamp)!==(null===(s=null==u?void 0:u.stickyReaction)||void 0===s?void 0:s.timestamp)&&t(aS(sS({type:c?"remoteHandRaised":"remoteHandLowered",message:`${l.displayName} ${c?"raised":"lowered"} their hand`,props:{client:l,stickyReaction:c}})))}}),w_([X_],(({dispatch:e,getState:t},r)=>{const i=t(),s=ry(i);["left","kicked"].includes(s)||("disconnected"===r?e(aS(sS({type:"signalTrouble",message:"Network connection lost. Trying to reconnect you...",props:{}}))):"connected"===r&&e(aS(sS({type:"signalOk",message:"Network connection available",props:{}}))))})),S_({actionCreator:E_.clientUnableToJoin,effect:(e,{dispatch:t})=>{var r;"room_full"===(null===(r=e.payload)||void 0===r?void 0:r.error)&&t(aS(sS({type:"clientUnableToJoinFullRoom",message:"Someone tried to join but the room is full and at capacity.",props:{}})))}});const cS={audioEnabled:{actions:[qb.fulfilled],rtcEventName:"audioEnabled",getValue:e=>xb(e),getOutput:e=>({enabled:e})},videoEnabled:{actions:[Gb.fulfilled],rtcEventName:"videoEnabled",getValue:e=>Ob(e),getOutput:e=>({enabled:e})},localStream:{actions:[Cb.fulfilled],rtcEventName:"localStream",getValue:e=>{var t;return null===(t=Bb(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:[by.fulfilled],rtcEventName:"localScreenshareStream",getValue:e=>{var t;return null===(t=Sy(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:[_y],rtcEventName:"localScreenshareStream",getValue:()=>()=>null,getOutput:()=>({})},displayName:{actions:[zb],rtcEventName:"displayName",getValue:e=>P_(e),getOutput:e=>({displayName:e})},clientId:{actions:null,rtcEventName:"clientId",getValue:e=>Jb(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=>D_(e),getOutput:e=>({externalId:e})},organizationId:{actions:null,rtcEventName:"organizationId",getValue:e=>ab(e),getOutput:e=>({organizationId:e})},signalConnectionStatus:{actions:null,rtcEventName:"signalConnectionStatus",getValue:e=>X_(e),getOutput:e=>({status:e})},roomSessionId:{actions:[E_.newClient,E_.roomJoined,E_.roomSessionEnded,E_.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=>$y(e),getOutput:e=>({status:e})},userRole:{actions:null,rtcEventName:"userRole",getValue:e=>j_(e),getOutput:e=>({userRole:e})}},dS=Object.values(cS).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)),lS=e=>"object"==typeof e?JSON.stringify(e):e,pS=ui({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})})}}),uS=()=>(e,t)=>{const r=t(),i=Ny(r).rtcManager;i&&(i.sendStatsCustomEvent("insightsStats",{_time:Date.now(),ls:0,lr:0,bs:0,br:0,cpu:0}),Object.values(cS).forEach((({rtcEventName:t,getValue:s,getOutput:n})=>{var a;const o=s(r),c=Object.assign(Object.assign({},n(o)),{_time:Date.now()}),d=lS(o);(null===(a=r.rtcAnalytics.reportedValues)||void 0===a?void 0:a[t])!==d&&(i.sendStatsCustomEvent(t,c),e(hS({rtcEventName:t,value:o})))})))},{updateReportedValues:hS}=pS.actions;function mS({isPresentation:e,stream:t}){var r,i;return e?null!==(i=null!==(r=null==t?void 0:t.outboundId)&&void 0!==r?r:null==t?void 0:t.inboundId)&&void 0!==i?i:null==t?void 0:t.id:"0"}function fS(e,t){return e.find((e=>e.clientId===t.clientId&&e.streamId===t.streamId))?e:e.concat(t)}S_({matcher:ti(...dS),effect:({type:e},{getState:t,dispatch:r})=>{var i;const s=t(),n=Ny(s).rtcManager;if(!n)return;const a=Object.values(cS).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(s),p=lS(l),u=Object.assign(Object.assign({},c(l)),{_time:Date.now()});(null===(i=s.rtcAnalytics.reportedValues)||void 0===i?void 0:i[d])!==p&&(n.sendStatsCustomEvent(d,u),r(hS({rtcEventName:d,value:l})))}}),w_([By],(({dispatch:e},t)=>{t&&e(uS())}));const gS=ui({name:"spotlights",initialState:{sorted:[]},reducers:{addSpotlight(e,t){const{clientId:r,streamId:i}=t.payload;return Object.assign(Object.assign({},e),{sorted:fS(e.sorted,{clientId:r,streamId:i})})},removeSpotlight(e,t){const{clientId:r,streamId:i}=t.payload;return Object.assign(Object.assign({},e),{sorted:e.sorted.filter((e=>!(e.clientId===r&&e.streamId===i)))})}},extraReducers:e=>{e.addCase(E_.roomJoined,((e,t)=>{if(!t.payload.room)return e;const{spotlights:r}=t.payload.room;return Object.assign(Object.assign({},e),{sorted:r})})),e.addCase(E_.spotlightAdded,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return Object.assign(Object.assign({},e),{sorted:fS(e.sorted,{clientId:r,streamId:i})})})),e.addCase(E_.spotlightRemoved,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return Object.assign(Object.assign({},e),{sorted:e.sorted.filter((e=>!(e.clientId===r&&e.streamId===i)))})})),e.addMatcher(ti(E_.clientKicked,E_.clientLeft),((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{sorted:e.sorted.filter((e=>e.clientId!==r))})}))}}),{addSpotlight:vS,removeSpotlight:_S}=gS.actions,bS=e=>e.spotlights.sorted;Hr(Kb,bS,((e,t)=>function({spotlights:e,isPresentation:t,clientId:r,stream:i}){return!!e.find((e=>{const s=mS({isPresentation:t,stream:i});return e.clientId===r&&e.streamId===s}))}({clientId:e.id,stream:e.stream,spotlights:t}))),Hr(Hy,bS,((e,t)=>function(e,t){return e.reduce(((e,r)=>{const i=t.find((e=>r.clientId===e.clientId&&r.streamId===mS(e)));return i&&!e.includes(i)&&e.push(i),e}),[])}(t,e))),S_({actionCreator:by.fulfilled,effect:({payload:e},{getState:t,dispatch:r})=>{const{stream:i}=e,s=t(),n=Kb(s);n&&r(vS({clientId:n.id,streamId:i.id}))}}),S_({actionCreator:_y,effect:({payload:e},{getState:t,dispatch:r})=>{const{stream:i}=e,s=t(),n=Kb(s);n&&r(_S({clientId:n.id,streamId:i.id}))}});const yS=ui({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})}});yS.actions;const SS=ui({name:"waitingParticipants",initialState:{waitingParticipants:[]},reducers:{},extraReducers:e=>{e.addCase(E_.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(E_.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(E_.knockerLeft,((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:e.waitingParticipants.filter((e=>e.id!==r))})}))}});let wS;!function(e){const t=Object.keys(e),r={};for(let i=0;i<t.length;i++){const s=t[i];void 0===e[s]&&Ut(`No reducer provided for key "${s}"`),"function"==typeof e[s]&&(r[s]=e[s])}const i=Object.keys(r);let s,n;s={};try{!function(e){Object.keys(e).forEach((t=>{const r=e[t];if(void 0===r(void 0,{type:$t.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:$t.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 '${$t.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){n=e}}({app:C_.reducer,authorization:x_.reducer,chat:rb.reducer,cloudRecording:ib.reducer,connectionMonitor:Jy.reducer,deviceCredentials:B_.reducer,localMedia:cb.reducer,localParticipant:Ub.reducer,localScreenshare:vy.reducer,notifications:nS.reducer,organization:sb.reducer,remoteParticipants:py.reducer,room:Gy.reducer,roomConnection:Xb.reducer,rtcAnalytics:pS.reducer,rtcConnection:Ry.reducer,signalConnection:V_.reducer,spotlights:gS.reducer,streaming:yS.reducer,waitingParticipants:SS.reducer});try{wS=self.localStorage}catch(FS){wS={getItem:()=>{},key:()=>{},setItem:()=>{},removeItem:()=>{},hasOwnProperty:()=>{},length:0}}const CS=["aec","agc","audio","audioDenoiser","autoHideSelfView","autoSpotlight","background","bottomToolbar","breakout","callQualityMonitoring","cameraAccess","chat","embed","emptyRoomInvitation","floatSelf","help","leaveButton","locking","localization","logo","lowData","moreButton","participantCount","personality","pipButton","precallCeremony","precallCeremonyCanSkip","precallPermissionsHelpLink","precallReview","people","reactions","recording","roomIntegrations","screenshare","settingsButton","skipMediaPermissionPrompt","subgridLabels","timer","toolbarDarkText","topToolbar","video"];var RS,TS;RS="WherebyEmbed",TS={oninit(){this.iframe=((e,t)=>e?e[t]||(e[t]={current:null}):{current:null})()},onconnected(){window.addEventListener("message",this.onmessage.bind(this))},ondisconnected(){window.removeEventListener("message",this.onmessage.bind(this))},observedAttributes:["displayName","minimal","room","subdomain","lang","metadata","groups","virtualBackgroundUrl","avatarUrl","externalId","title","cameraEffect","emojiSkinTone",...CS].map((e=>e.toLowerCase())),onattributechanged({attributeName:e,oldValue:t}){["room","subdomain"].includes(e)&&null==t||this.render()},style:e=>`\n ${e} {\n display: block;\n }\n ${e} iframe {\n border: none;\n height: 100%;\n width: 100%;\n }\n `,_postCommand(e,t=[]){this.iframe.current&&this.iframe.current.contentWindow.postMessage({command:e,args:t},this.roomUrl.origin)},endMeeting(){this._postCommand("end_meeting")},knock(){this._postCommand("knock")},leaveRoom(){this._postCommand("leave_room")},openSettings(e="media"){this._postCommand("open_settings",[e])},startRecording(){this._postCommand("start_recording")},stopRecording(){this._postCommand("stop_recording")},startStreaming(){this._postCommand("start_streaming")},stopStreaming(){this._postCommand("stop_streaming")},startLiveTranscription(){this._postCommand("start_live_transcription")},stopLiveTranscription(){this._postCommand("stop_live_transcription")},toggleBreakout(e){this._postCommand("toggle_breakout",[e])},toggleCamera(e){this._postCommand("toggle_camera",[e])},toggleMicrophone(e){this._postCommand("toggle_microphone",[e])},togglePeople(e){this._postCommand("toggle_people",[e])},toggleScreenshare(e){this._postCommand("toggle_screenshare",[e])},toggleChat(e){this._postCommand("toggle_chat",[e])},onmessage({origin:e,data:t}){if(!this.roomUrl||e!==this.roomUrl.origin)return;const{type:r,payload:i}=t;this.dispatchEvent(new CustomEvent(r,{detail:i}))},render(){const{avatarurl:e,displayname:t,cameraeffect:r,emojiskintone:i,lang:s,metadata:n,externalid:a,minimal:o,room:c,groups:d,virtualbackgroundurl:l,title:p}=this;let u,h;try{({roomUrl:u,subdomain:h}=function(e,t){if(!e)throw new Error("Missing room attribute");const r=/https:\/\/([^.]+)(\.whereby\.com|-ip-\d+-\d+-\d+-\d+.hereby.dev:4443)\/.+/.exec(e),i=r&&r[1]||t;if(!i)throw new Error("Missing subdomain attribute");if(!r)throw new Error("Could not parse room URL");return{subdomain:i,roomUrl:new URL(e)}}(c,this.subdomain))}catch(e){return this.html`Whereby: ${e instanceof Error?e.message:"unknown error"}`}this.roomUrl=u,Object.entries(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({jsApi:!0,we:"1",iframeSource:h},t&&{displayName:t}),s&&{lang:s}),n&&{metadata:n}),i&&{emojiSkinTone:i}),a&&{externalId:a}),d&&{groups:d}),l&&{virtualBackgroundUrl:l}),e&&{avatarUrl:e}),r&&{cameraEffect:r}),null!=o&&{embed:o}),CS.reduce(((e,t)=>null!=this[t.toLowerCase()]?Object.assign(Object.assign({},e),{[t]:this[t.toLowerCase()]}):e),{}))).forEach((([e,t])=>{this.roomUrl.searchParams.has(e)||this.roomUrl.searchParams.set(e,t)})),this.html`
13
13
  <iframe
14
14
  title=${p||"Video calling component"}
15
15
  ref=${this.iframe}
16
16
  src=${this.roomUrl}
17
17
  allow="autoplay; camera; microphone; fullscreen; speaker; display-capture; media-capture" />
18
- `}},("string"==typeof qb?Nt(qb,Gb,""):Nt(qb.name,qb,"")).Class;return{sdkVersion:"1"}}();
18
+ `}},("string"==typeof RS?Nt(RS,TS,""):Nt(RS.name,RS,"")).Class;return{sdkVersion:"1"}}();