Eventbuzz_Concierge/public/embed/simli-client.iife.js

99 lines
590 KiB
JavaScript

"use strict";var SimliLib=(()=>{var jt=(u,w)=>()=>{try{return w||u((w={exports:{}}).exports,w),w.exports}catch(M){throw w=0,M}};var Xl=jt((Tr,Yl)=>{(function(u,w){typeof Tr=="object"&&typeof Yl<"u"?w(Tr):typeof define=="function"&&define.amd?define(["exports"],w):w((u=typeof globalThis<"u"?globalThis:u||self).LivekitClient={})})(Tr,(function(u){"use strict";function w(i,e){return e.forEach((function(t){t&&typeof t!="string"&&!Array.isArray(t)&&Object.keys(t).forEach((function(n){if(n!=="default"&&!(n in i)){var r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(i,n,r.get?r:{enumerable:!0,get:function(){return t[n]}})}}))})),Object.freeze(i)}var M=Object.defineProperty,j=(i,e,t)=>((n,r,s)=>r in n?M(n,r,{enumerable:!0,configurable:!0,writable:!0,value:s}):n[r]=s)(i,typeof e!="symbol"?e+"":e,t);class U{constructor(){j(this,"_locking"),j(this,"_locks"),this._locking=Promise.resolve(),this._locks=0}isLocked(){return this._locks>0}lock(){let e;this._locks+=1;let t=new Promise((r=>e=()=>{this._locks-=1,r()})),n=this._locking.then((()=>e));return this._locking=this._locking.then((()=>t)),n}}function q(i,e){if(!i)throw new Error(e)}function fe(i){if(typeof i!="number")throw new Error("invalid int 32: "+typeof i);if(!Number.isInteger(i)||i>2147483647||i<-2147483648)throw new Error("invalid int 32: "+i)}function Ae(i){if(typeof i!="number")throw new Error("invalid uint 32: "+typeof i);if(!Number.isInteger(i)||i>4294967295||i<0)throw new Error("invalid uint 32: "+i)}function Ve(i){if(typeof i!="number")throw new Error("invalid float 32: "+typeof i);if(Number.isFinite(i)&&(i>34028234663852886e22||i<-34028234663852886e22))throw new Error("invalid float 32: "+i)}let le=Symbol("@bufbuild/protobuf/enum-type");function _t(i){let e=i[le];return q(e,"missing enum type on enum object"),e}function Le(i,e,t,n){i[le]=$e(e,t.map((r=>({no:r.no,name:r.name,localName:i[r.no]}))))}function $e(i,e,t){let n=Object.create(null),r=Object.create(null),s=[];for(let a of e){let o=Fa(a);s.push(o),n[a.name]=o,r[a.no]=o}return{typeName:i,values:s,findName:a=>n[a],findNumber:a=>r[a]}}function Ir(i,e,t){let n={};for(let r of e){let s=Fa(r);n[s.localName]=s.no,n[s.no]=s.localName}return Le(n,i,e),n}function Fa(i){return"localName"in i?i:Object.assign(Object.assign({},i),{localName:i.name})}class Mr{equals(e){return this.getType().runtime.util.equals(this.getType(),this,e)}clone(){return this.getType().runtime.util.clone(this)}fromBinary(e,t){let n=this.getType().runtime.bin,r=n.makeReadOptions(t);return n.readMessage(this,r.readerFactory(e),e.byteLength,r),this}fromJson(e,t){let n=this.getType(),r=n.runtime.json,s=r.makeReadOptions(t);return r.readMessage(n,e,s,this),this}fromJsonString(e,t){let n;try{n=JSON.parse(e)}catch(r){throw new Error("cannot decode ".concat(this.getType().typeName," from JSON: ").concat(r instanceof Error?r.message:String(r)))}return this.fromJson(n,t)}toBinary(e){let t=this.getType().runtime.bin,n=t.makeWriteOptions(e),r=n.writerFactory();return t.writeMessage(this,r,n),r.finish()}toJson(e){let t=this.getType().runtime.json,n=t.makeWriteOptions(e);return t.writeMessage(this,n)}toJsonString(e){var t;let n=this.toJson(e);return JSON.stringify(n,null,(t=e?.prettySpaces)!==null&&t!==void 0?t:0)}toJSON(){return this.toJson({emitDefaultValues:!0})}getType(){return Object.getPrototypeOf(this).constructor}}function au(){let i=0,e=0;for(let n=0;n<28;n+=7){let r=this.buf[this.pos++];if(i|=(127&r)<<n,!(128&r))return this.assertBounds(),[i,e]}let t=this.buf[this.pos++];if(i|=(15&t)<<28,e=(112&t)>>4,!(128&t))return this.assertBounds(),[i,e];for(let n=3;n<=31;n+=7){let r=this.buf[this.pos++];if(e|=(127&r)<<n,!(128&r))return this.assertBounds(),[i,e]}throw new Error("invalid varint")}function Dr(i,e,t){for(let s=0;s<28;s+=7){let a=i>>>s,o=!(!(a>>>7)&&e==0),c=255&(o?128|a:a);if(t.push(c),!o)return}let n=i>>>28&15|(7&e)<<4,r=!!(e>>3);if(t.push(255&(r?128|n:n)),r){for(let s=3;s<31;s+=7){let a=e>>>s,o=!!(a>>>7),c=255&(o?128|a:a);if(t.push(c),!o)return}t.push(e>>>31&1)}}let ki=4294967296;function Ba(i){let e=i[0]==="-";e&&(i=i.slice(1));let t=1e6,n=0,r=0;function s(a,o){let c=Number(i.slice(a,o));r*=t,n=n*t+c,n>=ki&&(r+=n/ki|0,n%=ki)}return s(-24,-18),s(-18,-12),s(-12,-6),s(-6),e?qa(n,r):_r(n,r)}function ja(i,e){var t=(function(d,l){return{lo:d>>>0,hi:l>>>0}})(i,e);if(i=t.lo,(e=t.hi)<=2097151)return String(ki*e+i);let n=16777215&(i>>>24|e<<8),r=e>>16&65535,s=(16777215&i)+6777216*n+6710656*r,a=n+8147497*r,o=2*r,c=1e7;return s>=c&&(a+=Math.floor(s/c),s%=c),a>=c&&(o+=Math.floor(a/c),a%=c),o.toString()+Va(a)+Va(s)}function _r(i,e){return{lo:0|i,hi:0|e}}function qa(i,e){return e=~e,i?i=1+~i:e+=1,_r(i,e)}let Va=i=>{let e=String(i);return"0000000".slice(e.length)+e};function Wa(i,e){if(i>=0){for(;i>127;)e.push(127&i|128),i>>>=7;e.push(i)}else{for(let t=0;t<9;t++)e.push(127&i|128),i>>=7;e.push(1)}}function ou(){let i=this.buf[this.pos++],e=127&i;if(!(128&i))return this.assertBounds(),e;if(i=this.buf[this.pos++],e|=(127&i)<<7,!(128&i))return this.assertBounds(),e;if(i=this.buf[this.pos++],e|=(127&i)<<14,!(128&i))return this.assertBounds(),e;if(i=this.buf[this.pos++],e|=(127&i)<<21,!(128&i))return this.assertBounds(),e;i=this.buf[this.pos++],e|=(15&i)<<28;for(let t=5;128&i&&t<10;t++)i=this.buf[this.pos++];if(128&i)throw new Error("invalid varint");return this.assertBounds(),e>>>0}let ae=(function(){let i=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof i.getBigInt64=="function"&&typeof i.getBigUint64=="function"&&typeof i.setBigInt64=="function"&&typeof i.setBigUint64=="function"&&(typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){let n=BigInt("-9223372036854775808"),r=BigInt("9223372036854775807"),s=BigInt("0"),a=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(o){let c=typeof o=="bigint"?o:BigInt(o);if(c>r||c<n)throw new Error("int64 invalid: ".concat(o));return c},uParse(o){let c=typeof o=="bigint"?o:BigInt(o);if(c>a||c<s)throw new Error("uint64 invalid: ".concat(o));return c},enc(o){return i.setBigInt64(0,this.parse(o),!0),{lo:i.getInt32(0,!0),hi:i.getInt32(4,!0)}},uEnc(o){return i.setBigInt64(0,this.uParse(o),!0),{lo:i.getInt32(0,!0),hi:i.getInt32(4,!0)}},dec:(o,c)=>(i.setInt32(0,o,!0),i.setInt32(4,c,!0),i.getBigInt64(0,!0)),uDec:(o,c)=>(i.setInt32(0,o,!0),i.setInt32(4,c,!0),i.getBigUint64(0,!0))}}let e=n=>q(/^-?[0-9]+$/.test(n),"int64 invalid: ".concat(n)),t=n=>q(/^[0-9]+$/.test(n),"uint64 invalid: ".concat(n));return{zero:"0",supported:!1,parse:n=>(typeof n!="string"&&(n=n.toString()),e(n),n),uParse:n=>(typeof n!="string"&&(n=n.toString()),t(n),n),enc:n=>(typeof n!="string"&&(n=n.toString()),e(n),Ba(n)),uEnc:n=>(typeof n!="string"&&(n=n.toString()),t(n),Ba(n)),dec:(n,r)=>(function(s,a){let o=_r(s,a),c=2147483648&o.hi;c&&(o=qa(o.lo,o.hi));let d=ja(o.lo,o.hi);return c?"-"+d:d})(n,r),uDec:(n,r)=>ja(n,r)}})();var P,Ot,de;function At(i,e,t){if(e===t)return!0;if(i==P.BYTES){if(!(e instanceof Uint8Array&&t instanceof Uint8Array)||e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}switch(i){case P.UINT64:case P.FIXED64:case P.INT64:case P.SFIXED64:case P.SINT64:return e==t}return!1}function rn(i,e){switch(i){case P.BOOL:return!1;case P.UINT64:case P.FIXED64:case P.INT64:case P.SFIXED64:case P.SINT64:return e==0?ae.zero:"0";case P.DOUBLE:case P.FLOAT:return 0;case P.BYTES:return new Uint8Array(0);case P.STRING:return"";default:return 0}}function Ha(i,e){switch(i){case P.BOOL:return e===!1;case P.STRING:return e==="";case P.BYTES:return e instanceof Uint8Array&&!e.byteLength;default:return e==0}}function cu(i,e){this.v=i,this.k=e}function Or(i,e){(e==null||e>i.length)&&(e=i.length);for(var t=0,n=Array(e);t<e;t++)n[t]=i[t];return n}function Ka(i){if(Array.isArray(i))return i}function A(i,e,t){return(e=(function(n){var r=(function(s,a){if(typeof s!="object"||!s)return s;var o=s[Symbol.toPrimitive];if(o!==void 0){var c=o.call(s,a);if(typeof c!="object")return c;throw new TypeError("@@toPrimitive must return a primitive value.")}return(a==="string"?String:Number)(s)})(n,"string");return typeof r=="symbol"?r:r+""})(e))in i?Object.defineProperty(i,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):i[e]=t,i}function za(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Ga(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(i);e&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(i,r).enumerable}))),t.push.apply(t,n)}return t}function D(i,e){return Ka(i)||(function(t,n){var r=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(r!=null){var s,a,o,c,d=[],l=!0,h=!1;try{if(o=(r=r.call(t)).next,n===0){if(Object(r)!==r)return;l=!1}else for(;!(l=(s=o.call(r)).done)&&(d.push(s.value),d.length!==n);l=!0);}catch(p){h=!0,a=p}finally{try{if(!l&&r.return!=null&&(c=r.return(),Object(c)!==c))return}finally{if(h)throw a}}return d}})(i,e)||Ja(i,e)||za()}function du(i){return Ka(i)||(function(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)})(i)||Ja(i)||za()}function Ja(i,e){if(i){if(typeof i=="string")return Or(i,e);var t={}.toString.call(i).slice(8,-1);return t==="Object"&&i.constructor&&(t=i.constructor.name),t==="Map"||t==="Set"?Array.from(i):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Or(i,e):void 0}}function Nn(i){var e,t;function n(s,a){try{var o=i[s](a),c=o.value,d=c instanceof cu;Promise.resolve(d?c.v:c).then((function(l){if(d){var h=s==="return"&&c.k?s:"next";if(!c.k||l.done)return n(h,l);l=i[h](l).value}r(!!o.done,l)}),(function(l){n("throw",l)}))}catch(l){r(2,l)}}function r(s,a){s===2?e.reject(a):e.resolve({value:a,done:s}),(e=e.next)?n(e.key,e.arg):t=null}this._invoke=function(s,a){return new Promise((function(o,c){var d={key:s,arg:a,resolve:o,reject:c,next:null};t?t=t.next=d:(e=t=d,n(s,a))}))},typeof i.return!="function"&&(this.return=void 0)}(function(i){i[i.DOUBLE=1]="DOUBLE",i[i.FLOAT=2]="FLOAT",i[i.INT64=3]="INT64",i[i.UINT64=4]="UINT64",i[i.INT32=5]="INT32",i[i.FIXED64=6]="FIXED64",i[i.FIXED32=7]="FIXED32",i[i.BOOL=8]="BOOL",i[i.STRING=9]="STRING",i[i.BYTES=12]="BYTES",i[i.UINT32=13]="UINT32",i[i.SFIXED32=15]="SFIXED32",i[i.SFIXED64=16]="SFIXED64",i[i.SINT32=17]="SINT32",i[i.SINT64=18]="SINT64"})(P||(P={})),(function(i){i[i.BIGINT=0]="BIGINT",i[i.STRING=1]="STRING"})(Ot||(Ot={})),Nn.prototype[typeof Symbol=="function"&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},Nn.prototype.next=function(i){return this._invoke("next",i)},Nn.prototype.throw=function(i){return this._invoke("throw",i)},Nn.prototype.return=function(i){return this._invoke("return",i)},(function(i){i[i.Varint=0]="Varint",i[i.Bit64=1]="Bit64",i[i.LengthDelimited=2]="LengthDelimited",i[i.StartGroup=3]="StartGroup",i[i.EndGroup=4]="EndGroup",i[i.Bit32=5]="Bit32"})(de||(de={}));class lu{constructor(e){this.stack=[],this.textEncoder=e??new TextEncoder,this.chunks=[],this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let e=0;for(let r=0;r<this.chunks.length;r++)e+=this.chunks[r].length;let t=new Uint8Array(e),n=0;for(let r=0;r<this.chunks.length;r++)t.set(this.chunks[r],n),n+=this.chunks[r].length;return this.chunks=[],t}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let e=this.finish(),t=this.stack.pop();if(!t)throw new Error("invalid state, fork stack empty");return this.chunks=t.chunks,this.buf=t.buf,this.uint32(e.byteLength),this.raw(e)}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(Ae(e);e>127;)this.buf.push(127&e|128),e>>>=7;return this.buf.push(e),this}int32(e){return fe(e),Wa(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let t=this.textEncoder.encode(e);return this.uint32(t.byteLength),this.raw(t)}float(e){Ve(e);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){Ae(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){fe(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return fe(e),Wa(e=(e<<1^e>>31)>>>0,this.buf),this}sfixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),r=ae.enc(e);return n.setInt32(0,r.lo,!0),n.setInt32(4,r.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),r=ae.uEnc(e);return n.setInt32(0,r.lo,!0),n.setInt32(4,r.hi,!0),this.raw(t)}int64(e){let t=ae.enc(e);return Dr(t.lo,t.hi,this.buf),this}sint64(e){let t=ae.enc(e),n=t.hi>>31;return Dr(t.lo<<1^n,(t.hi<<1|t.lo>>>31)^n,this.buf),this}uint64(e){let t=ae.uEnc(e);return Dr(t.lo,t.hi,this.buf),this}}class uu{constructor(e,t){this.varint64=au,this.uint32=ou,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.textDecoder=t??new TextDecoder}tag(){let e=this.uint32(),t=e>>>3,n=7&e;if(t<=0||n<0||n>5)throw new Error("illegal tag: field no "+t+" wire type "+n);return[t,n]}skip(e,t){let n=this.pos;switch(e){case de.Varint:for(;128&this.buf[this.pos++];);break;case de.Bit64:this.pos+=4;case de.Bit32:this.pos+=4;break;case de.LengthDelimited:let r=this.uint32();this.pos+=r;break;case de.StartGroup:for(;;){let s=D(this.tag(),2),a=s[0],o=s[1];if(o===de.EndGroup){if(t!==void 0&&a!==t)throw new Error("invalid end group tag");break}this.skip(o,a)}break;default:throw new Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(n,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return 0|this.uint32()}sint32(){let e=this.uint32();return e>>>1^-(1&e)}int64(){return ae.dec(...this.varint64())}uint64(){return ae.uDec(...this.varint64())}sint64(){let e=D(this.varint64(),2),t=e[0],n=e[1],r=-(1&t);return t=(t>>>1|(1&n)<<31)^r,n=n>>>1^r,ae.dec(t,n)}bool(){let e=D(this.varint64(),2),t=e[0],n=e[1];return t!==0||n!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return ae.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return ae.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(){return this.textDecoder.decode(this.bytes())}}function Qa(i){let e=i.field.localName,t=Object.create(null);return t[e]=(function(n){let r=n.field;if(r.repeated)return[];if(r.default!==void 0)return r.default;switch(r.kind){case"enum":return r.T.values[0].no;case"scalar":return rn(r.T,r.L);case"message":let s=r.T,a=new s;return s.fieldWrapper?s.fieldWrapper.unwrapField(a):a;case"map":throw"map fields are not allowed to be extensions"}})(i),[t,()=>t[e]]}let yt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),yi=[];for(let i=0;i<yt.length;i++)yi[yt[i].charCodeAt(0)]=i;yi[45]=yt.indexOf("+"),yi[95]=yt.indexOf("/");let Ya={dec(i){let e=3*i.length/4;i[i.length-2]=="="?e-=2:i[i.length-1]=="="&&(e-=1);let t,n=new Uint8Array(e),r=0,s=0,a=0;for(let o=0;o<i.length;o++){if(t=yi[i.charCodeAt(o)],t===void 0)switch(i[o]){case"=":s=0;case`
`:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string.")}switch(s){case 0:a=t,s=1;break;case 1:n[r++]=a<<2|(48&t)>>4,a=t,s=2;break;case 2:n[r++]=(15&a)<<4|(60&t)>>2,a=t,s=3;break;case 3:n[r++]=(3&a)<<6|t,s=0}}if(s==1)throw Error("invalid base64 string.");return n.subarray(0,r)},enc(i){let e,t="",n=0,r=0;for(let s=0;s<i.length;s++)switch(e=i[s],n){case 0:t+=yt[e>>2],r=(3&e)<<4,n=1;break;case 1:t+=yt[r|e>>4],r=(15&e)<<2,n=2;break;case 2:t+=yt[r|e>>6],t+=yt[63&e],n=0}return n&&(t+=yt[r],t+="=",n==1&&(t+="=")),t}};function hu(i,e,t){$a(e,i);let n=e.runtime.bin.makeReadOptions(t),r=(function(c,d){if(!d.repeated&&(d.kind=="enum"||d.kind=="scalar")){for(let l=c.length-1;l>=0;--l)if(c[l].no==d.no)return[c[l]];return[]}return c.filter((l=>l.no===d.no))})(i.getType().runtime.bin.listUnknownFields(i),e.field),s=D(Qa(e),2),a=s[0],o=s[1];for(let c of r)e.runtime.bin.readField(a,n.readerFactory(c.data),e.field,c.wireType,n);return o()}function pu(i,e,t,n){$a(e,i);let r=e.runtime.bin.makeReadOptions(n),s=e.runtime.bin.makeWriteOptions(n);if(Xa(i,e)){let d=i.getType().runtime.bin.listUnknownFields(i).filter((l=>l.no!=e.field.no));i.getType().runtime.bin.discardUnknownFields(i);for(let l of d)i.getType().runtime.bin.onUnknownField(i,l.no,l.wireType,l.data)}let a=s.writerFactory(),o=e.field;o.opt||o.repeated||o.kind!="enum"&&o.kind!="scalar"||(o=Object.assign(Object.assign({},e.field),{opt:!0})),e.runtime.bin.writeField(o,t,a,s);let c=r.readerFactory(a.finish());for(;c.pos<c.len;){let d=D(c.tag(),2),l=d[0],h=d[1],p=c.skip(h,l);i.getType().runtime.bin.onUnknownField(i,l,h,p)}}function Xa(i,e){let t=i.getType();return e.extendee.typeName===t.typeName&&!!t.runtime.bin.listUnknownFields(i).find((n=>n.no==e.field.no))}function $a(i,e){q(i.extendee.typeName==e.getType().typeName,"extension ".concat(i.typeName," can only be applied to message ").concat(i.extendee.typeName))}function Za(i,e){let t=i.localName;if(i.repeated)return e[t].length>0;if(i.oneof)return e[i.oneof.localName].case===t;switch(i.kind){case"enum":case"scalar":return i.opt||i.req?e[t]!==void 0:i.kind=="enum"?e[t]!==i.T.values[0].no:!Ha(i.T,e[t]);case"message":return e[t]!==void 0;case"map":return Object.keys(e[t]).length>0}}function eo(i,e){let t=i.localName,n=!i.opt&&!i.req;if(i.repeated)e[t]=[];else if(i.oneof)e[i.oneof.localName]={case:void 0};else switch(i.kind){case"map":e[t]={};break;case"enum":e[t]=n?i.T.values[0].no:void 0;break;case"scalar":e[t]=n?rn(i.T,i.L):void 0;break;case"message":e[t]=void 0}}function bt(i,e){if(i===null||typeof i!="object"||!Object.getOwnPropertyNames(Mr.prototype).every((n=>n in i&&typeof i[n]=="function")))return!1;let t=i.getType();return t!==null&&typeof t=="function"&&"typeName"in t&&typeof t.typeName=="string"&&(e===void 0||t.typeName==e.typeName)}function to(i,e){return bt(e)||!i.fieldWrapper?e:i.fieldWrapper.wrapField(e)}P.DOUBLE,P.FLOAT,P.INT64,P.UINT64,P.INT32,P.UINT32,P.BOOL,P.STRING,P.BYTES;let no={ignoreUnknownFields:!1},io={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0};function mu(i){return i?Object.assign(Object.assign({},no),i):no}function gu(i){return i?Object.assign(Object.assign({},io),i):io}let bi=Symbol(),Ti=Symbol();function lt(i){if(i===null)return"null";switch(typeof i){case"object":return Array.isArray(i)?"array":"object";case"string":return i.length>100?"string":'"'.concat(i.split('"').join('\\"'),'"');default:return String(i)}}function ro(i,e,t,n,r){let s=t.localName;if(t.repeated){if(q(t.kind!="map"),e===null)return;if(!Array.isArray(e))throw new Error("cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(lt(e)));let o=i[s];for(let c of e){if(c===null)throw new Error("cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(lt(c)));switch(t.kind){case"message":o.push(t.T.fromJson(c,n));break;case"enum":let d=Ar(t.T,c,n.ignoreUnknownFields,!0);d!==Ti&&o.push(d);break;case"scalar":try{o.push(xn(t.T,c,t.L,!0))}catch(l){let h="cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(lt(c));throw l instanceof Error&&l.message.length>0&&(h+=": ".concat(l.message)),new Error(h)}}}}else if(t.kind=="map"){if(e===null)return;if(typeof e!="object"||Array.isArray(e))throw new Error("cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(lt(e)));let o=i[s];for(let c of Object.entries(e)){var a=D(c,2);let d=a[0],l=a[1];if(l===null)throw new Error("cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: map value null"));let h;try{h=fu(t.K,d)}catch(p){let m="cannot decode map key for field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(lt(e));throw p instanceof Error&&p.message.length>0&&(m+=": ".concat(p.message)),new Error(m)}switch(t.V.kind){case"message":o[h]=t.V.T.fromJson(l,n);break;case"enum":let p=Ar(t.V.T,l,n.ignoreUnknownFields,!0);p!==Ti&&(o[h]=p);break;case"scalar":try{o[h]=xn(t.V.T,l,Ot.BIGINT,!0)}catch(m){let k="cannot decode map value for field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(lt(e));throw m instanceof Error&&m.message.length>0&&(k+=": ".concat(m.message)),new Error(k)}}}}else switch(t.oneof&&(i=i[t.oneof.localName]={case:s},s="value"),t.kind){case"message":let o=t.T;if(e===null&&o.typeName!="google.protobuf.Value")return;let c=i[s];bt(c)?c.fromJson(e,n):(i[s]=c=o.fromJson(e,n),o.fieldWrapper&&!t.oneof&&(i[s]=o.fieldWrapper.unwrapField(c)));break;case"enum":let d=Ar(t.T,e,n.ignoreUnknownFields,!1);switch(d){case bi:eo(t,i);break;case Ti:break;default:i[s]=d}break;case"scalar":try{let l=xn(t.T,e,t.L,!1);l===bi?eo(t,i):i[s]=l}catch(l){let h="cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(lt(e));throw l instanceof Error&&l.message.length>0&&(h+=": ".concat(l.message)),new Error(h)}}}function fu(i,e){if(i===P.BOOL)switch(e){case"true":e=!0;break;case"false":e=!1}return xn(i,e,Ot.BIGINT,!0).toString()}function xn(i,e,t,n){if(e===null)return n?rn(i,t):bi;switch(i){case P.DOUBLE:case P.FLOAT:if(e==="NaN")return Number.NaN;if(e==="Infinity")return Number.POSITIVE_INFINITY;if(e==="-Infinity")return Number.NEGATIVE_INFINITY;if(e===""||typeof e=="string"&&e.trim().length!==e.length||typeof e!="string"&&typeof e!="number")break;let r=Number(e);if(Number.isNaN(r)||!Number.isFinite(r))break;return i==P.FLOAT&&Ve(r),r;case P.INT32:case P.FIXED32:case P.SFIXED32:case P.SINT32:case P.UINT32:let s;if(typeof e=="number"?s=e:typeof e=="string"&&e.length>0&&e.trim().length===e.length&&(s=Number(e)),s===void 0)break;return i==P.UINT32||i==P.FIXED32?Ae(s):fe(s),s;case P.INT64:case P.SFIXED64:case P.SINT64:if(typeof e!="number"&&typeof e!="string")break;let a=ae.parse(e);return t?a.toString():a;case P.FIXED64:case P.UINT64:if(typeof e!="number"&&typeof e!="string")break;let o=ae.uParse(e);return t?o.toString():o;case P.BOOL:if(typeof e!="boolean")break;return e;case P.STRING:if(typeof e!="string")break;try{encodeURIComponent(e)}catch{throw new Error("invalid UTF8")}return e;case P.BYTES:if(e==="")return new Uint8Array(0);if(typeof e!="string")break;return Ya.dec(e)}throw new Error}function Ar(i,e,t,n){if(e===null)return i.typeName=="google.protobuf.NullValue"?0:n?i.values[0].no:bi;switch(typeof e){case"number":if(Number.isInteger(e))return e;break;case"string":let r=i.findName(e);if(r!==void 0)return r.no;if(t)return Ti}throw new Error("cannot decode enum ".concat(i.typeName," from JSON: ").concat(lt(e)))}function vu(i){return!(!i.repeated&&i.kind!="map")||!i.oneof&&i.kind!="message"&&!i.opt&&!i.req}function so(i,e,t){if(i.kind=="map"){q(typeof e=="object"&&e!=null);let a={},o=Object.entries(e);switch(i.V.kind){case"scalar":for(let d of o){var n=D(d,2);let l=n[0],h=n[1];a[l.toString()]=Si(i.V.T,h)}break;case"message":for(let d of o){var r=D(d,2);let l=r[0],h=r[1];a[l.toString()]=h.toJson(t)}break;case"enum":let c=i.V.T;for(let d of o){var s=D(d,2);let l=s[0],h=s[1];a[l.toString()]=Lr(c,h,t.enumAsInteger)}}return t.emitDefaultValues||o.length>0?a:void 0}if(i.repeated){q(Array.isArray(e));let a=[];switch(i.kind){case"scalar":for(let o=0;o<e.length;o++)a.push(Si(i.T,e[o]));break;case"enum":for(let o=0;o<e.length;o++)a.push(Lr(i.T,e[o],t.enumAsInteger));break;case"message":for(let o=0;o<e.length;o++)a.push(e[o].toJson(t))}return t.emitDefaultValues||a.length>0?a:void 0}switch(i.kind){case"scalar":return Si(i.T,e);case"enum":return Lr(i.T,e,t.enumAsInteger);case"message":return to(i.T,e).toJson(t)}}function Lr(i,e,t){var n;if(q(typeof e=="number"),i.typeName=="google.protobuf.NullValue")return null;if(t)return e;let r=i.findNumber(e);return(n=r?.name)!==null&&n!==void 0?n:e}function Si(i,e){switch(i){case P.INT32:case P.SFIXED32:case P.SINT32:case P.FIXED32:case P.UINT32:return q(typeof e=="number"),e;case P.FLOAT:case P.DOUBLE:return q(typeof e=="number"),Number.isNaN(e)?"NaN":e===Number.POSITIVE_INFINITY?"Infinity":e===Number.NEGATIVE_INFINITY?"-Infinity":e;case P.STRING:return q(typeof e=="string"),e;case P.BOOL:return q(typeof e=="boolean"),e;case P.UINT64:case P.FIXED64:case P.INT64:case P.SFIXED64:case P.SINT64:return q(typeof e=="bigint"||typeof e=="string"||typeof e=="number"),e.toString();case P.BYTES:return q(e instanceof Uint8Array),Ya.enc(e)}}let sn=Symbol("@bufbuild/protobuf/unknown-fields"),ao={readUnknownFields:!0,readerFactory:i=>new uu(i)},oo={writeUnknownFields:!0,writerFactory:()=>new lu};function ku(i){return i?Object.assign(Object.assign({},ao),i):ao}function yu(i){return i?Object.assign(Object.assign({},oo),i):oo}function co(i,e,t,n,r){let s=t.repeated,a=t.localName;switch(t.oneof&&((i=i[t.oneof.localName]).case!=a&&delete i.value,i.case=a,a="value"),t.kind){case"scalar":case"enum":let o=t.kind=="enum"?P.INT32:t.T,c=Ci;if(t.kind=="scalar"&&t.L>0&&(c=bu),s){let k=i[a];if(n==de.LengthDelimited&&o!=P.STRING&&o!=P.BYTES){let g=e.uint32()+e.pos;for(;e.pos<g;)k.push(c(e,o))}else k.push(c(e,o))}else i[a]=c(e,o);break;case"message":let d=t.T;s?i[a].push(Ei(e,new d,r,t)):bt(i[a])?Ei(e,i[a],r,t):(i[a]=Ei(e,new d,r,t),!d.fieldWrapper||t.oneof||t.repeated||(i[a]=d.fieldWrapper.unwrapField(i[a])));break;case"map":let l=(function(k,g,v){let b=g.uint32(),T=g.pos+b,E,S;for(;g.pos<T;)switch(D(g.tag(),1)[0]){case 1:E=Ci(g,k.K);break;case 2:switch(k.V.kind){case"scalar":S=Ci(g,k.V.T);break;case"enum":S=g.int32();break;case"message":S=Ei(g,new k.V.T,v,void 0)}}if(E===void 0&&(E=rn(k.K,Ot.BIGINT)),typeof E!="string"&&typeof E!="number"&&(E=E.toString()),S===void 0)switch(k.V.kind){case"scalar":S=rn(k.V.T,Ot.BIGINT);break;case"enum":S=k.V.T.values[0].no;break;case"message":S=new k.V.T}return[E,S]})(t,e,r),h=D(l,2),p=h[0],m=h[1];i[a][p]=m}}function Ei(i,e,t,n){let r=e.getType().runtime.bin,s=n?.delimited;return r.readMessage(e,i,s?n.no:i.uint32(),t,s),e}function bu(i,e){let t=Ci(i,e);return typeof t=="bigint"?t.toString():t}function Ci(i,e){switch(e){case P.STRING:return i.string();case P.BOOL:return i.bool();case P.DOUBLE:return i.double();case P.FLOAT:return i.float();case P.INT32:return i.int32();case P.INT64:return i.int64();case P.UINT64:return i.uint64();case P.FIXED64:return i.fixed64();case P.BYTES:return i.bytes();case P.FIXED32:return i.fixed32();case P.SFIXED32:return i.sfixed32();case P.SFIXED64:return i.sfixed64();case P.SINT64:return i.sint64();case P.UINT32:return i.uint32();case P.SINT32:return i.sint32()}}function lo(i,e,t,n){q(e!==void 0);let r=i.repeated;switch(i.kind){case"scalar":case"enum":let a=i.kind=="enum"?P.INT32:i.T;if(r)if(q(Array.isArray(e)),i.packed)(function(o,c,d,l){if(!l.length)return;o.tag(d,de.LengthDelimited).fork();let h=D(ho(c),2)[1];for(let p=0;p<l.length;p++)o[h](l[p]);o.join()})(t,a,i.no,e);else for(let o of e)Un(t,a,i.no,o);else Un(t,a,i.no,e);break;case"message":if(r){q(Array.isArray(e));for(let o of e)uo(t,n,i,o)}else uo(t,n,i,e);break;case"map":q(typeof e=="object"&&e!=null);for(let o of Object.entries(e)){var s=D(o,2);Tu(t,n,i,s[0],s[1])}}}function Tu(i,e,t,n,r){i.tag(t.no,de.LengthDelimited),i.fork();let s=n;switch(t.K){case P.INT32:case P.FIXED32:case P.UINT32:case P.SFIXED32:case P.SINT32:s=Number.parseInt(n);break;case P.BOOL:q(n=="true"||n=="false"),s=n=="true"}switch(Un(i,t.K,1,s),t.V.kind){case"scalar":Un(i,t.V.T,2,r);break;case"enum":Un(i,P.INT32,2,r);break;case"message":q(r!==void 0),i.tag(2,de.LengthDelimited).bytes(r.toBinary(e))}i.join()}function uo(i,e,t,n){let r=to(t.T,n);t.delimited?i.tag(t.no,de.StartGroup).raw(r.toBinary(e)).tag(t.no,de.EndGroup):i.tag(t.no,de.LengthDelimited).bytes(r.toBinary(e))}function Un(i,e,t,n){q(n!==void 0);let r=D(ho(e),2),s=r[0],a=r[1];i.tag(t,s)[a](n)}function ho(i){let e=de.Varint;switch(i){case P.BYTES:case P.STRING:e=de.LengthDelimited;break;case P.DOUBLE:case P.FIXED64:case P.SFIXED64:e=de.Bit64;break;case P.FIXED32:case P.SFIXED32:case P.FLOAT:e=de.Bit32}return[e,P[i].toLowerCase()]}function wi(i){if(i===void 0)return i;if(bt(i))return i.clone();if(i instanceof Uint8Array){let e=new Uint8Array(i.byteLength);return e.set(i),e}return i}function Fn(i){return i instanceof Uint8Array?i:new Uint8Array(i)}class Su{constructor(e,t){this._fields=e,this._normalizer=t}findJsonName(e){if(!this.jsonNames){let t={};for(let n of this.list())t[n.jsonName]=t[n.name]=n;this.jsonNames=t}return this.jsonNames[e]}find(e){if(!this.numbers){let t={};for(let n of this.list())t[n.no]=n;this.numbers=t}return this.numbers[e]}list(){return this.all||(this.all=this._normalizer(this._fields)),this.all}byNumber(){return this.numbersAsc||(this.numbersAsc=this.list().concat().sort(((e,t)=>e.no-t.no))),this.numbersAsc}byMember(){if(!this.members){this.members=[];let e=this.members,t;for(let n of this.list())n.oneof?n.oneof!==t&&(t=n.oneof,e.push(t)):e.push(n)}return this.members}}function po(i,e){let t=mo(i);return e?t:Pu(Ru(t))}let Eu=mo;function mo(i){let e=!1,t=[];for(let n=0;n<i.length;n++){let r=i.charAt(n);switch(r){case"_":e=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":t.push(r),e=!1;break;default:e&&(e=!1,r=r.toUpperCase()),t.push(r)}}return t.join("")}let Cu=new Set(["constructor","toString","toJSON","valueOf"]),wu=new Set(["getType","clone","equals","fromBinary","fromJson","fromJsonString","toBinary","toJson","toJsonString","toObject"]),go=i=>"".concat(i,"$"),Ru=i=>wu.has(i)?go(i):i,Pu=i=>Cu.has(i)?go(i):i;class Iu{constructor(e){this.kind="oneof",this.repeated=!1,this.packed=!1,this.opt=!1,this.req=!1,this.default=void 0,this.fields=[],this.name=e,this.localName=po(e,!1)}addField(e){q(e.oneof===this,"field ".concat(e.name," not one of ").concat(this.name)),this.fields.push(e)}findField(e){if(!this._lookup){this._lookup=Object.create(null);for(let t=0;t<this.fields.length;t++)this._lookup[this.fields[t].localName]=this.fields[t]}return this._lookup[e]}}let y=(fo=i=>new Su(i,(e=>(function(t){var n,r,s,a,o,c;let d=[],l;for(let h of typeof t=="function"?t():t){let p=h;if(p.localName=po(h.name,h.oneof!==void 0),p.jsonName=(n=h.jsonName)!==null&&n!==void 0?n:Eu(h.name),p.repeated=(r=h.repeated)!==null&&r!==void 0&&r,h.kind=="scalar"&&(p.L=(s=h.L)!==null&&s!==void 0?s:Ot.BIGINT),p.delimited=(a=h.delimited)!==null&&a!==void 0&&a,p.req=(o=h.req)!==null&&o!==void 0&&o,p.opt=(c=h.opt)!==null&&c!==void 0&&c,h.packed===void 0&&(p.packed=h.kind=="enum"||h.kind=="scalar"&&h.T!=P.BYTES&&h.T!=P.STRING),h.oneof!==void 0){let m=typeof h.oneof=="string"?h.oneof:h.oneof.name;l&&l.name==m||(l=new Iu(m)),p.oneof=l,l.addField(p)}d.push(p)}return d})(e))),vo=i=>{for(let e of i.getType().fields.byMember()){if(e.opt)continue;let t=e.localName,n=i;if(e.repeated)n[t]=[];else switch(e.kind){case"oneof":n[t]={case:void 0};break;case"enum":n[t]=0;break;case"map":n[t]={};break;case"scalar":n[t]=rn(e.T,e.L)}}},{syntax:"proto3",json:{makeReadOptions:mu,makeWriteOptions:gu,readMessage(i,e,t,n){if(e==null||Array.isArray(e)||typeof e!="object")throw new Error("cannot decode message ".concat(i.typeName," from JSON: ").concat(lt(e)));n=n??new i;let r=new Map,s=t.typeRegistry;for(let o of Object.entries(e)){var a=D(o,2);let c=a[0],d=a[1],l=i.fields.findJsonName(c);if(l){if(l.oneof){if(d===null&&l.kind=="scalar")continue;let h=r.get(l.oneof);if(h!==void 0)throw new Error("cannot decode message ".concat(i.typeName,' from JSON: multiple keys for oneof "').concat(l.oneof.name,'" present: "').concat(h,'", "').concat(c,'"'));r.set(l.oneof,c)}ro(n,d,l,t,i)}else{let h=!1;if(s?.findExtension&&c.startsWith("[")&&c.endsWith("]")){let p=s.findExtension(c.substring(1,c.length-1));if(p&&p.extendee.typeName==i.typeName){h=!0;let m=D(Qa(p),2),k=m[0],g=m[1];ro(k,d,p.field,t,p),pu(n,p,g(),t)}}if(!h&&!t.ignoreUnknownFields)throw new Error("cannot decode message ".concat(i.typeName,' from JSON: key "').concat(c,'" is unknown'))}}return n},writeMessage(i,e){let t=i.getType(),n={},r;try{for(r of t.fields.byNumber()){if(!Za(r,i)){if(r.req)throw"required field not set";if(!e.emitDefaultValues||!vu(r))continue}let a=so(r,r.oneof?i[r.oneof.localName].value:i[r.localName],e);a!==void 0&&(n[e.useProtoFieldName?r.name:r.jsonName]=a)}let s=e.typeRegistry;if(s?.findExtensionFor)for(let a of t.runtime.bin.listUnknownFields(i)){let o=s.findExtensionFor(t.typeName,a.no);if(o&&Xa(i,o)){let c=hu(i,o,e),d=so(o.field,c,e);d!==void 0&&(n[o.field.jsonName]=d)}}}catch(s){let a=r?"cannot encode field ".concat(t.typeName,".").concat(r.name," to JSON"):"cannot encode message ".concat(t.typeName," to JSON"),o=s instanceof Error?s.message:String(s);throw new Error(a+(o.length>0?": ".concat(o):""))}return n},readScalar:(i,e,t)=>xn(i,e,t??Ot.BIGINT,!0),writeScalar(i,e,t){if(e!==void 0)return t||Ha(i,e)?Si(i,e):void 0},debug:lt},bin:{makeReadOptions:ku,makeWriteOptions:yu,listUnknownFields(i){var e;return(e=i[sn])!==null&&e!==void 0?e:[]},discardUnknownFields(i){delete i[sn]},writeUnknownFields(i,e){let t=i[sn];if(t)for(let n of t)e.tag(n.no,n.wireType).raw(n.data)},onUnknownField(i,e,t,n){let r=i;Array.isArray(r[sn])||(r[sn]=[]),r[sn].push({no:e,wireType:t,data:n})},readMessage(i,e,t,n,r){let s=i.getType(),a=r?e.len:e.pos+t,o,c;for(;e.pos<a;){var d=D(e.tag(),2);if(o=d[0],c=d[1],r===!0&&c==de.EndGroup)break;let l=s.fields.find(o);if(l)co(i,e,l,c,n);else{let h=e.skip(c,o);n.readUnknownFields&&this.onUnknownField(i,o,c,h)}}if(r&&(c!=de.EndGroup||o!==t))throw new Error("invalid end group tag")},readField:co,writeMessage(i,e,t){let n=i.getType();for(let r of n.fields.byNumber())if(Za(r,i))lo(r,r.oneof?i[r.oneof.localName].value:i[r.localName],e,t);else if(r.req)throw new Error("cannot encode field ".concat(n.typeName,".").concat(r.name," to binary: required field not set"));return t.writeUnknownFields&&this.writeUnknownFields(i,e),e},writeField(i,e,t,n){e!==void 0&&lo(i,e,t,n)}},util:Object.assign(Object.assign({},{setEnumType:Le,initPartial(i,e){if(i===void 0)return;let t=e.getType();for(let r of t.fields.byMember()){let s=r.localName,a=e,o=i;if(o[s]!=null)switch(r.kind){case"oneof":let c=o[s].case;if(c===void 0)continue;let d=r.findField(c),l=o[s].value;d&&d.kind=="message"&&!bt(l,d.T)?l=new d.T(l):d&&d.kind==="scalar"&&d.T===P.BYTES&&(l=Fn(l)),a[s]={case:c,value:l};break;case"scalar":case"enum":let h=o[s];r.T===P.BYTES&&(h=r.repeated?h.map(Fn):Fn(h)),a[s]=h;break;case"map":switch(r.V.kind){case"scalar":case"enum":if(r.V.T===P.BYTES)for(let k of Object.entries(o[s])){var n=D(k,2);let g=n[0],v=n[1];a[s][g]=Fn(v)}else Object.assign(a[s],o[s]);break;case"message":let m=r.V.T;for(let k of Object.keys(o[s])){let g=o[s][k];m.fieldWrapper||(g=new m(g)),a[s][k]=g}}break;case"message":let p=r.T;if(r.repeated)a[s]=o[s].map((m=>bt(m,p)?m:new p(m)));else{let m=o[s];p.fieldWrapper?p.typeName==="google.protobuf.BytesValue"?a[s]=Fn(m):a[s]=m:a[s]=bt(m,p)?m:new p(m)}}}},equals:(i,e,t)=>e===t||!(!e||!t)&&i.fields.byMember().every((n=>{let r=e[n.localName],s=t[n.localName];if(n.repeated){if(r.length!==s.length)return!1;switch(n.kind){case"message":return r.every(((a,o)=>n.T.equals(a,s[o])));case"scalar":return r.every(((a,o)=>At(n.T,a,s[o])));case"enum":return r.every(((a,o)=>At(P.INT32,a,s[o])))}throw new Error("repeated cannot contain ".concat(n.kind))}switch(n.kind){case"message":let a=r,o=s;return n.T.fieldWrapper&&(a===void 0||bt(a)||(a=n.T.fieldWrapper.wrapField(a)),o===void 0||bt(o)||(o=n.T.fieldWrapper.wrapField(o))),n.T.equals(a,o);case"enum":return At(P.INT32,r,s);case"scalar":return At(n.T,r,s);case"oneof":if(r.case!==s.case)return!1;let c=n.findField(r.case);if(c===void 0)return!0;switch(c.kind){case"message":return c.T.equals(r.value,s.value);case"enum":return At(P.INT32,r.value,s.value);case"scalar":return At(c.T,r.value,s.value)}throw new Error("oneof cannot contain ".concat(c.kind));case"map":let d=Object.keys(r).concat(Object.keys(s));switch(n.V.kind){case"message":let l=n.V.T;return d.every((p=>l.equals(r[p],s[p])));case"enum":return d.every((p=>At(P.INT32,r[p],s[p])));case"scalar":let h=n.V.T;return d.every((p=>At(h,r[p],s[p])))}}})),clone(i){let e=i.getType(),t=new e,n=t;for(let s of e.fields.byMember()){let a=i[s.localName],o;if(s.repeated)o=a.map(wi);else if(s.kind=="map"){o=n[s.localName];for(let c of Object.entries(a)){var r=D(c,2);let d=r[0],l=r[1];o[d]=wi(l)}}else o=s.kind=="oneof"?s.findField(a.case)?{case:a.case,value:wi(a.value)}:{case:void 0}:wi(a);n[s.localName]=o}for(let s of e.runtime.bin.listUnknownFields(i))e.runtime.bin.onUnknownField(n,s.no,s.wireType,s.data);return t}}),{newFieldList:fo,initFields:vo}),makeMessageType(i,e,t){return(function(n,r,s,a){var o;let c=(o=a?.localName)!==null&&o!==void 0?o:r.substring(r.lastIndexOf(".")+1),d={[c]:function(l){n.util.initFields(this),n.util.initPartial(l,this)}}[c];return Object.setPrototypeOf(d.prototype,new Mr),Object.assign(d,{runtime:n,typeName:r,fields:n.util.newFieldList(s),fromBinary:(l,h)=>new d().fromBinary(l,h),fromJson:(l,h)=>new d().fromJson(l,h),fromJsonString:(l,h)=>new d().fromJsonString(l,h),equals:(l,h)=>n.util.equals(d,l,h)}),d})(this,i,e,t)},makeEnum:Ir,makeEnumType:$e,getEnumType:_t,makeExtension(i,e,t){return(function(n,r,s,a){let o;return{typeName:r,extendee:s,get field(){if(!o){let c=typeof a=="function"?a():a;c.name=r.split(".").pop(),c.jsonName="[".concat(r,"]"),o=n.util.newFieldList([c]).list()[0]}return o},runtime:n}})(this,i,e,t)}});var fo,vo;class Ne extends Mr{constructor(e){super(),this.seconds=ae.zero,this.nanos=0,y.util.initPartial(e,this)}fromJson(e,t){if(typeof e!="string")throw new Error("cannot decode google.protobuf.Timestamp from JSON: ".concat(y.json.debug(e)));let n=e.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:Z|\.([0-9]{3,9})Z|([+-][0-9][0-9]:[0-9][0-9]))$/);if(!n)throw new Error("cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string");let r=Date.parse(n[1]+"-"+n[2]+"-"+n[3]+"T"+n[4]+":"+n[5]+":"+n[6]+(n[8]?n[8]:"Z"));if(Number.isNaN(r))throw new Error("cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string");if(r<Date.parse("0001-01-01T00:00:00Z")||r>Date.parse("9999-12-31T23:59:59Z"))throw new Error("cannot decode message google.protobuf.Timestamp from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive");return this.seconds=ae.parse(r/1e3),this.nanos=0,n[7]&&(this.nanos=parseInt("1"+n[7]+"0".repeat(9-n[7].length))-1e9),this}toJson(e){let t=1e3*Number(this.seconds);if(t<Date.parse("0001-01-01T00:00:00Z")||t>Date.parse("9999-12-31T23:59:59Z"))throw new Error("cannot encode google.protobuf.Timestamp to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive");if(this.nanos<0)throw new Error("cannot encode google.protobuf.Timestamp to JSON: nanos must not be negative");let n="Z";if(this.nanos>0){let r=(this.nanos+1e9).toString().substring(1);n=r.substring(3)==="000000"?"."+r.substring(0,3)+"Z":r.substring(6)==="000"?"."+r.substring(0,6)+"Z":"."+r+"Z"}return new Date(t).toISOString().replace(".000Z",n)}toDate(){return new Date(1e3*Number(this.seconds)+Math.ceil(this.nanos/1e6))}static now(){return Ne.fromDate(new Date)}static fromDate(e){let t=e.getTime();return new Ne({seconds:ae.parse(Math.floor(t/1e3)),nanos:t%1e3*1e6})}static fromBinary(e,t){return new Ne().fromBinary(e,t)}static fromJson(e,t){return new Ne().fromJson(e,t)}static fromJsonString(e,t){return new Ne().fromJsonString(e,t)}static equals(e,t){return y.util.equals(Ne,e,t)}}Ne.runtime=y,Ne.typeName="google.protobuf.Timestamp",Ne.fields=y.util.newFieldList((()=>[{no:1,name:"seconds",kind:"scalar",T:3},{no:2,name:"nanos",kind:"scalar",T:5}]));let Mu=y.makeMessageType("livekit.MetricsBatch",(()=>[{no:1,name:"timestamp_ms",kind:"scalar",T:3},{no:2,name:"normalized_timestamp",kind:"message",T:Ne},{no:3,name:"str_data",kind:"scalar",T:9,repeated:!0},{no:4,name:"time_series",kind:"message",T:Du,repeated:!0},{no:5,name:"events",kind:"message",T:Ou,repeated:!0}])),Du=y.makeMessageType("livekit.TimeSeriesMetric",(()=>[{no:1,name:"label",kind:"scalar",T:13},{no:2,name:"participant_identity",kind:"scalar",T:13},{no:3,name:"track_sid",kind:"scalar",T:13},{no:4,name:"samples",kind:"message",T:_u,repeated:!0},{no:5,name:"rid",kind:"scalar",T:13}])),_u=y.makeMessageType("livekit.MetricSample",(()=>[{no:1,name:"timestamp_ms",kind:"scalar",T:3},{no:2,name:"normalized_timestamp",kind:"message",T:Ne},{no:3,name:"value",kind:"scalar",T:2}])),Ou=y.makeMessageType("livekit.EventMetric",(()=>[{no:1,name:"label",kind:"scalar",T:13},{no:2,name:"participant_identity",kind:"scalar",T:13},{no:3,name:"track_sid",kind:"scalar",T:13},{no:4,name:"start_timestamp_ms",kind:"scalar",T:3},{no:5,name:"end_timestamp_ms",kind:"scalar",T:3,opt:!0},{no:6,name:"normalized_start_timestamp",kind:"message",T:Ne},{no:7,name:"normalized_end_timestamp",kind:"message",T:Ne,opt:!0},{no:8,name:"metadata",kind:"scalar",T:9},{no:9,name:"rid",kind:"scalar",T:13}])),Au=y.makeEnum("livekit.AudioCodec",[{no:0,name:"DEFAULT_AC"},{no:1,name:"OPUS"},{no:2,name:"AAC"},{no:3,name:"AC_MP3"}]),Lu=y.makeEnum("livekit.VideoCodec",[{no:0,name:"DEFAULT_VC"},{no:1,name:"H264_BASELINE"},{no:2,name:"H264_MAIN"},{no:3,name:"H264_HIGH"},{no:4,name:"VP8"}]),Nu=y.makeEnum("livekit.ImageCodec",[{no:0,name:"IC_DEFAULT"},{no:1,name:"IC_JPEG"}]),ko=y.makeEnum("livekit.BackupCodecPolicy",[{no:0,name:"PREFER_REGRESSION"},{no:1,name:"SIMULCAST"},{no:2,name:"REGRESSION"}]),Ke=y.makeEnum("livekit.TrackType",[{no:0,name:"AUDIO"},{no:1,name:"VIDEO"},{no:2,name:"DATA"}]),ue=y.makeEnum("livekit.TrackSource",[{no:0,name:"UNKNOWN"},{no:1,name:"CAMERA"},{no:2,name:"MICROPHONE"},{no:3,name:"SCREEN_SHARE"},{no:4,name:"SCREEN_SHARE_AUDIO"}]),Nr=y.makeEnum("livekit.VideoQuality",[{no:0,name:"LOW"},{no:1,name:"MEDIUM"},{no:2,name:"HIGH"},{no:3,name:"OFF"}]),an=y.makeEnum("livekit.ConnectionQuality",[{no:0,name:"POOR"},{no:1,name:"GOOD"},{no:2,name:"EXCELLENT"},{no:3,name:"LOST"}]),Bn=y.makeEnum("livekit.ClientConfigSetting",[{no:0,name:"UNSET"},{no:1,name:"DISABLED"},{no:2,name:"ENABLED"}]),xe=y.makeEnum("livekit.DisconnectReason",[{no:0,name:"UNKNOWN_REASON"},{no:1,name:"CLIENT_INITIATED"},{no:2,name:"DUPLICATE_IDENTITY"},{no:3,name:"SERVER_SHUTDOWN"},{no:4,name:"PARTICIPANT_REMOVED"},{no:5,name:"ROOM_DELETED"},{no:6,name:"STATE_MISMATCH"},{no:7,name:"JOIN_FAILURE"},{no:8,name:"MIGRATION"},{no:9,name:"SIGNAL_CLOSE"},{no:10,name:"ROOM_CLOSED"},{no:11,name:"USER_UNAVAILABLE"},{no:12,name:"USER_REJECTED"},{no:13,name:"SIP_TRUNK_FAILURE"},{no:14,name:"CONNECTION_TIMEOUT"},{no:15,name:"MEDIA_FAILURE"},{no:16,name:"AGENT_ERROR"}]),Tt=y.makeEnum("livekit.ReconnectReason",[{no:0,name:"RR_UNKNOWN"},{no:1,name:"RR_SIGNAL_DISCONNECTED"},{no:2,name:"RR_PUBLISHER_FAILED"},{no:3,name:"RR_SUBSCRIBER_FAILED"},{no:4,name:"RR_SWITCH_CANDIDATE"}]),yo=y.makeEnum("livekit.SubscriptionError",[{no:0,name:"SE_UNKNOWN"},{no:1,name:"SE_CODEC_UNSUPPORTED"},{no:2,name:"SE_TRACK_NOTFOUND"}]),ve=y.makeEnum("livekit.AudioTrackFeature",[{no:0,name:"TF_STEREO"},{no:1,name:"TF_NO_DTX"},{no:2,name:"TF_AUTO_GAIN_CONTROL"},{no:3,name:"TF_ECHO_CANCELLATION"},{no:4,name:"TF_NOISE_SUPPRESSION"},{no:5,name:"TF_ENHANCED_NOISE_CANCELLATION"},{no:6,name:"TF_PRECONNECT_BUFFER"}]),on=y.makeEnum("livekit.PacketTrailerFeature",[{no:0,name:"PTF_USER_TIMESTAMP"},{no:1,name:"PTF_FRAME_ID"},{no:2,name:"PTF_USER_DATA"}]),Ri=y.makeMessageType("livekit.Room",(()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"empty_timeout",kind:"scalar",T:13},{no:14,name:"departure_timeout",kind:"scalar",T:13},{no:4,name:"max_participants",kind:"scalar",T:13},{no:5,name:"creation_time",kind:"scalar",T:3},{no:15,name:"creation_time_ms",kind:"scalar",T:3},{no:6,name:"turn_password",kind:"scalar",T:9},{no:7,name:"enabled_codecs",kind:"message",T:Pi,repeated:!0},{no:8,name:"metadata",kind:"scalar",T:9},{no:9,name:"num_participants",kind:"scalar",T:13},{no:11,name:"num_publishers",kind:"scalar",T:13},{no:10,name:"active_recording",kind:"scalar",T:8},{no:13,name:"version",kind:"message",T:Lo}])),Pi=y.makeMessageType("livekit.Codec",(()=>[{no:1,name:"mime",kind:"scalar",T:9},{no:2,name:"fmtp_line",kind:"scalar",T:9}])),xu=y.makeMessageType("livekit.ParticipantPermission",(()=>[{no:1,name:"can_subscribe",kind:"scalar",T:8},{no:2,name:"can_publish",kind:"scalar",T:8},{no:3,name:"can_publish_data",kind:"scalar",T:8},{no:9,name:"can_publish_sources",kind:"enum",T:y.getEnumType(ue),repeated:!0},{no:7,name:"hidden",kind:"scalar",T:8},{no:8,name:"recorder",kind:"scalar",T:8},{no:10,name:"can_update_metadata",kind:"scalar",T:8},{no:11,name:"agent",kind:"scalar",T:8},{no:12,name:"can_subscribe_metrics",kind:"scalar",T:8},{no:13,name:"can_manage_agent_session",kind:"scalar",T:8}])),qt=y.makeMessageType("livekit.ParticipantInfo",(()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"identity",kind:"scalar",T:9},{no:3,name:"state",kind:"enum",T:y.getEnumType(cn)},{no:4,name:"tracks",kind:"message",T:ln,repeated:!0},{no:5,name:"metadata",kind:"scalar",T:9},{no:6,name:"joined_at",kind:"scalar",T:3},{no:17,name:"joined_at_ms",kind:"scalar",T:3},{no:9,name:"name",kind:"scalar",T:9},{no:10,name:"version",kind:"scalar",T:13},{no:11,name:"permission",kind:"message",T:xu},{no:12,name:"region",kind:"scalar",T:9},{no:13,name:"is_publisher",kind:"scalar",T:8},{no:14,name:"kind",kind:"enum",T:y.getEnumType(dn)},{no:15,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:16,name:"disconnect_reason",kind:"enum",T:y.getEnumType(xe)},{no:18,name:"kind_details",kind:"enum",T:y.getEnumType(Uu),repeated:!0},{no:19,name:"data_tracks",kind:"message",T:Ii,repeated:!0},{no:20,name:"client_protocol",kind:"scalar",T:5},{no:21,name:"capabilities",kind:"enum",T:y.getEnumType(jn),repeated:!0}])),cn=y.makeEnum("livekit.ParticipantInfo.State",[{no:0,name:"JOINING"},{no:1,name:"JOINED"},{no:2,name:"ACTIVE"},{no:3,name:"DISCONNECTED"}]),dn=y.makeEnum("livekit.ParticipantInfo.Kind",[{no:0,name:"STANDARD"},{no:1,name:"INGRESS"},{no:2,name:"EGRESS"},{no:3,name:"SIP"},{no:4,name:"AGENT"},{no:7,name:"CONNECTOR"},{no:8,name:"BRIDGE"}]),Uu=y.makeEnum("livekit.ParticipantInfo.KindDetail",[{no:0,name:"CLOUD_AGENT"},{no:1,name:"FORWARDED"},{no:2,name:"CONNECTOR_WHATSAPP"},{no:3,name:"CONNECTOR_TWILIO"},{no:4,name:"BRIDGE_RTSP"},{no:5,name:"SIMULATION"}]),G=y.makeEnum("livekit.Encryption.Type",[{no:0,name:"NONE"},{no:1,name:"GCM"},{no:2,name:"CUSTOM"}]),Fu=y.makeMessageType("livekit.SimulcastCodecInfo",(()=>[{no:1,name:"mime_type",kind:"scalar",T:9},{no:2,name:"mid",kind:"scalar",T:9},{no:3,name:"cid",kind:"scalar",T:9},{no:4,name:"layers",kind:"message",T:Lt,repeated:!0},{no:5,name:"video_layer_mode",kind:"enum",T:y.getEnumType(Fr)},{no:6,name:"sdp_cid",kind:"scalar",T:9}])),ln=y.makeMessageType("livekit.TrackInfo",(()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"type",kind:"enum",T:y.getEnumType(Ke)},{no:3,name:"name",kind:"scalar",T:9},{no:4,name:"muted",kind:"scalar",T:8},{no:5,name:"width",kind:"scalar",T:13},{no:6,name:"height",kind:"scalar",T:13},{no:7,name:"simulcast",kind:"scalar",T:8},{no:8,name:"disable_dtx",kind:"scalar",T:8},{no:9,name:"source",kind:"enum",T:y.getEnumType(ue)},{no:10,name:"layers",kind:"message",T:Lt,repeated:!0},{no:11,name:"mime_type",kind:"scalar",T:9},{no:12,name:"mid",kind:"scalar",T:9},{no:13,name:"codecs",kind:"message",T:Fu,repeated:!0},{no:14,name:"stereo",kind:"scalar",T:8},{no:15,name:"disable_red",kind:"scalar",T:8},{no:16,name:"encryption",kind:"enum",T:y.getEnumType(G)},{no:17,name:"stream",kind:"scalar",T:9},{no:18,name:"version",kind:"message",T:Lo},{no:19,name:"audio_features",kind:"enum",T:y.getEnumType(ve),repeated:!0},{no:20,name:"backup_codec_policy",kind:"enum",T:y.getEnumType(ko)},{no:21,name:"packet_trailer_features",kind:"enum",T:y.getEnumType(on),repeated:!0}])),Ii=y.makeMessageType("livekit.DataTrackInfo",(()=>[{no:1,name:"pub_handle",kind:"scalar",T:13},{no:2,name:"sid",kind:"scalar",T:9},{no:3,name:"name",kind:"scalar",T:9},{no:4,name:"encryption",kind:"enum",T:y.getEnumType(G)},{no:5,name:"frame_encoding",kind:"message",T:bo,opt:!0},{no:6,name:"schema",kind:"message",T:xr,opt:!0}])),bo=y.makeMessageType("livekit.DataTrackFrameEncoding",(()=>[{no:1,name:"well_known",kind:"enum",T:y.getEnumType(Bu),oneof:"value"},{no:2,name:"custom",kind:"scalar",T:9,oneof:"value"}])),Bu=y.makeEnum("livekit.DataTrackFrameEncoding.WellKnownFrameEncoding",[{no:0,name:"WELL_KNOWN_FRAME_ENCODING_UNSPECIFIED",localName:"UNSPECIFIED"},{no:1,name:"WELL_KNOWN_FRAME_ENCODING_ROS1",localName:"ROS1"},{no:2,name:"WELL_KNOWN_FRAME_ENCODING_CDR",localName:"CDR"},{no:3,name:"WELL_KNOWN_FRAME_ENCODING_PROTOBUF",localName:"PROTOBUF"},{no:4,name:"WELL_KNOWN_FRAME_ENCODING_FLATBUFFER",localName:"FLATBUFFER"},{no:5,name:"WELL_KNOWN_FRAME_ENCODING_CBOR",localName:"CBOR"},{no:6,name:"WELL_KNOWN_FRAME_ENCODING_MSGPACK",localName:"MSGPACK"},{no:7,name:"WELL_KNOWN_FRAME_ENCODING_JSON",localName:"JSON"}]),ju=y.makeMessageType("livekit.DataTrackSchemaEncoding",(()=>[{no:1,name:"well_known",kind:"enum",T:y.getEnumType(qu),oneof:"value"},{no:2,name:"custom",kind:"scalar",T:9,oneof:"value"}])),qu=y.makeEnum("livekit.DataTrackSchemaEncoding.WellKnownSchemaEncoding",[{no:0,name:"WELL_KNOWN_SCHEMA_ENCODING_UNSPECIFIED",localName:"UNSPECIFIED"},{no:1,name:"WELL_KNOWN_SCHEMA_ENCODING_PROTOBUF",localName:"PROTOBUF"},{no:2,name:"WELL_KNOWN_SCHEMA_ENCODING_FLATBUFFER",localName:"FLATBUFFER"},{no:3,name:"WELL_KNOWN_SCHEMA_ENCODING_ROS1_MSG",localName:"ROS1_MSG"},{no:4,name:"WELL_KNOWN_SCHEMA_ENCODING_ROS2_MSG",localName:"ROS2_MSG"},{no:5,name:"WELL_KNOWN_SCHEMA_ENCODING_ROS2_IDL",localName:"ROS2_IDL"},{no:6,name:"WELL_KNOWN_SCHEMA_ENCODING_OMG_IDL",localName:"OMG_IDL"},{no:7,name:"WELL_KNOWN_SCHEMA_ENCODING_JSON_SCHEMA",localName:"JSON_SCHEMA"}]),xr=y.makeMessageType("livekit.DataTrackSchemaId",(()=>[{no:1,name:"name",kind:"scalar",T:9},{no:2,name:"encoding",kind:"message",T:ju}])),Vu=y.makeMessageType("livekit.DataTrackSubscriptionOptions",(()=>[{no:1,name:"target_fps",kind:"scalar",T:13,opt:!0}])),Ur=y.makeMessageType("livekit.DataBlobKey",(()=>[{no:1,name:"generic",kind:"scalar",T:9,oneof:"key"},{no:2,name:"schema_id",kind:"message",T:xr,oneof:"key"}])),To=y.makeMessageType("livekit.DataBlob",(()=>[{no:1,name:"key",kind:"message",T:Ur},{no:2,name:"contents",kind:"scalar",T:12}])),Lt=y.makeMessageType("livekit.VideoLayer",(()=>[{no:1,name:"quality",kind:"enum",T:y.getEnumType(Nr)},{no:2,name:"width",kind:"scalar",T:13},{no:3,name:"height",kind:"scalar",T:13},{no:4,name:"bitrate",kind:"scalar",T:13},{no:5,name:"ssrc",kind:"scalar",T:13},{no:6,name:"spatial_layer",kind:"scalar",T:5},{no:7,name:"rid",kind:"scalar",T:9},{no:8,name:"repair_ssrc",kind:"scalar",T:13}])),Fr=y.makeEnum("livekit.VideoLayer.Mode",[{no:0,name:"MODE_UNUSED"},{no:1,name:"ONE_SPATIAL_LAYER_PER_STREAM"},{no:2,name:"MULTIPLE_SPATIAL_LAYERS_PER_STREAM"},{no:3,name:"ONE_SPATIAL_LAYER_PER_STREAM_INCOMPLETE_RTCP_SR"}]),Re=y.makeMessageType("livekit.DataPacket",(()=>[{no:1,name:"kind",kind:"enum",T:y.getEnumType(St)},{no:4,name:"participant_identity",kind:"scalar",T:9},{no:5,name:"destination_identities",kind:"scalar",T:9,repeated:!0},{no:2,name:"user",kind:"message",T:Br,oneof:"value"},{no:3,name:"speaker",kind:"message",T:Wu,oneof:"value"},{no:6,name:"sip_dtmf",kind:"message",T:wo,oneof:"value"},{no:7,name:"transcription",kind:"message",T:Hu,oneof:"value"},{no:8,name:"metrics",kind:"message",T:Mu,oneof:"value"},{no:9,name:"chat_message",kind:"message",T:Mi,oneof:"value"},{no:10,name:"rpc_request",kind:"message",T:jr,oneof:"value"},{no:11,name:"rpc_ack",kind:"message",T:Di,oneof:"value"},{no:12,name:"rpc_response",kind:"message",T:qr,oneof:"value"},{no:13,name:"stream_header",kind:"message",T:_i,oneof:"value"},{no:14,name:"stream_chunk",kind:"message",T:Et,oneof:"value"},{no:15,name:"stream_trailer",kind:"message",T:Wr,oneof:"value"},{no:18,name:"encrypted_packet",kind:"message",T:So,oneof:"value"},{no:16,name:"sequence",kind:"scalar",T:13},{no:17,name:"participant_sid",kind:"scalar",T:9}])),St=y.makeEnum("livekit.DataPacket.Kind",[{no:0,name:"RELIABLE"},{no:1,name:"LOSSY"}]),So=y.makeMessageType("livekit.EncryptedPacket",(()=>[{no:1,name:"encryption_type",kind:"enum",T:y.getEnumType(G)},{no:2,name:"iv",kind:"scalar",T:12},{no:3,name:"key_index",kind:"scalar",T:13},{no:4,name:"encrypted_value",kind:"scalar",T:12}])),Eo=y.makeMessageType("livekit.EncryptedPacketPayload",(()=>[{no:1,name:"user",kind:"message",T:Br,oneof:"value"},{no:3,name:"chat_message",kind:"message",T:Mi,oneof:"value"},{no:4,name:"rpc_request",kind:"message",T:jr,oneof:"value"},{no:5,name:"rpc_ack",kind:"message",T:Di,oneof:"value"},{no:6,name:"rpc_response",kind:"message",T:qr,oneof:"value"},{no:7,name:"stream_header",kind:"message",T:_i,oneof:"value"},{no:8,name:"stream_chunk",kind:"message",T:Et,oneof:"value"},{no:9,name:"stream_trailer",kind:"message",T:Wr,oneof:"value"}])),Wu=y.makeMessageType("livekit.ActiveSpeakerUpdate",(()=>[{no:1,name:"speakers",kind:"message",T:Co,repeated:!0}])),Co=y.makeMessageType("livekit.SpeakerInfo",(()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"level",kind:"scalar",T:2},{no:3,name:"active",kind:"scalar",T:8}])),Br=y.makeMessageType("livekit.UserPacket",(()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:5,name:"participant_identity",kind:"scalar",T:9},{no:2,name:"payload",kind:"scalar",T:12},{no:3,name:"destination_sids",kind:"scalar",T:9,repeated:!0},{no:6,name:"destination_identities",kind:"scalar",T:9,repeated:!0},{no:4,name:"topic",kind:"scalar",T:9,opt:!0},{no:8,name:"id",kind:"scalar",T:9,opt:!0},{no:9,name:"start_time",kind:"scalar",T:4,opt:!0},{no:10,name:"end_time",kind:"scalar",T:4,opt:!0},{no:11,name:"nonce",kind:"scalar",T:12}])),wo=y.makeMessageType("livekit.SipDTMF",(()=>[{no:3,name:"code",kind:"scalar",T:13},{no:4,name:"digit",kind:"scalar",T:9}])),Hu=y.makeMessageType("livekit.Transcription",(()=>[{no:2,name:"transcribed_participant_identity",kind:"scalar",T:9},{no:3,name:"track_id",kind:"scalar",T:9},{no:4,name:"segments",kind:"message",T:Ku,repeated:!0}])),Ku=y.makeMessageType("livekit.TranscriptionSegment",(()=>[{no:1,name:"id",kind:"scalar",T:9},{no:2,name:"text",kind:"scalar",T:9},{no:3,name:"start_time",kind:"scalar",T:4},{no:4,name:"end_time",kind:"scalar",T:4},{no:5,name:"final",kind:"scalar",T:8},{no:6,name:"language",kind:"scalar",T:9}])),Mi=y.makeMessageType("livekit.ChatMessage",(()=>[{no:1,name:"id",kind:"scalar",T:9},{no:2,name:"timestamp",kind:"scalar",T:3},{no:3,name:"edit_timestamp",kind:"scalar",T:3,opt:!0},{no:4,name:"message",kind:"scalar",T:9},{no:5,name:"deleted",kind:"scalar",T:8},{no:6,name:"generated",kind:"scalar",T:8}])),jr=y.makeMessageType("livekit.RpcRequest",(()=>[{no:1,name:"id",kind:"scalar",T:9},{no:2,name:"method",kind:"scalar",T:9},{no:3,name:"payload",kind:"scalar",T:9},{no:4,name:"response_timeout_ms",kind:"scalar",T:13},{no:5,name:"version",kind:"scalar",T:13},{no:6,name:"compressed_payload",kind:"scalar",T:12}])),Di=y.makeMessageType("livekit.RpcAck",(()=>[{no:1,name:"request_id",kind:"scalar",T:9}])),qr=y.makeMessageType("livekit.RpcResponse",(()=>[{no:1,name:"request_id",kind:"scalar",T:9},{no:2,name:"payload",kind:"scalar",T:9,oneof:"value"},{no:3,name:"error",kind:"message",T:Ro,oneof:"value"},{no:4,name:"compressed_payload",kind:"scalar",T:12,oneof:"value"}])),Ro=y.makeMessageType("livekit.RpcError",(()=>[{no:1,name:"code",kind:"scalar",T:13},{no:2,name:"message",kind:"scalar",T:9},{no:3,name:"data",kind:"scalar",T:9}])),Po=y.makeMessageType("livekit.ParticipantTracks",(()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sids",kind:"scalar",T:9,repeated:!0}])),Io=y.makeMessageType("livekit.ServerInfo",(()=>[{no:1,name:"edition",kind:"enum",T:y.getEnumType(Mo)},{no:2,name:"version",kind:"scalar",T:9},{no:3,name:"protocol",kind:"scalar",T:5},{no:4,name:"region",kind:"scalar",T:9},{no:5,name:"node_id",kind:"scalar",T:9},{no:6,name:"debug_info",kind:"scalar",T:9},{no:7,name:"agent_protocol",kind:"scalar",T:5}])),Mo=y.makeEnum("livekit.ServerInfo.Edition",[{no:0,name:"Standard"},{no:1,name:"Cloud"}]),Do=y.makeMessageType("livekit.ClientInfo",(()=>[{no:1,name:"sdk",kind:"enum",T:y.getEnumType(_o)},{no:2,name:"version",kind:"scalar",T:9},{no:3,name:"protocol",kind:"scalar",T:5},{no:4,name:"os",kind:"scalar",T:9},{no:5,name:"os_version",kind:"scalar",T:9},{no:6,name:"device_model",kind:"scalar",T:9},{no:7,name:"browser",kind:"scalar",T:9},{no:8,name:"browser_version",kind:"scalar",T:9},{no:9,name:"address",kind:"scalar",T:9},{no:10,name:"network",kind:"scalar",T:9},{no:11,name:"other_sdks",kind:"scalar",T:9},{no:12,name:"client_protocol",kind:"scalar",T:5},{no:13,name:"capabilities",kind:"enum",T:y.getEnumType(jn),repeated:!0}])),_o=y.makeEnum("livekit.ClientInfo.SDK",[{no:0,name:"UNKNOWN"},{no:1,name:"JS"},{no:2,name:"SWIFT"},{no:3,name:"ANDROID"},{no:4,name:"FLUTTER"},{no:5,name:"GO"},{no:6,name:"UNITY"},{no:7,name:"REACT_NATIVE"},{no:8,name:"RUST"},{no:9,name:"PYTHON"},{no:10,name:"CPP"},{no:11,name:"UNITY_WEB"},{no:12,name:"NODE"},{no:13,name:"UNREAL"},{no:14,name:"ESP32"}]),jn=y.makeEnum("livekit.ClientInfo.Capability",[{no:0,name:"CAP_UNUSED"},{no:1,name:"CAP_PACKET_TRAILER"},{no:2,name:"CAP_COMPRESSION_DEFLATE_RAW"}]),Oo=y.makeMessageType("livekit.ClientConfiguration",(()=>[{no:1,name:"video",kind:"message",T:Ao},{no:2,name:"screen",kind:"message",T:Ao},{no:3,name:"resume_connection",kind:"enum",T:y.getEnumType(Bn)},{no:4,name:"disabled_codecs",kind:"message",T:zu},{no:5,name:"force_relay",kind:"enum",T:y.getEnumType(Bn)}])),Ao=y.makeMessageType("livekit.VideoConfiguration",(()=>[{no:1,name:"hardware_encoder",kind:"enum",T:y.getEnumType(Bn)}])),zu=y.makeMessageType("livekit.DisabledCodecs",(()=>[{no:1,name:"codecs",kind:"message",T:Pi,repeated:!0},{no:2,name:"publish",kind:"message",T:Pi,repeated:!0}])),Lo=y.makeMessageType("livekit.TimedVersion",(()=>[{no:1,name:"unix_micro",kind:"scalar",T:3},{no:2,name:"ticks",kind:"scalar",T:5}])),Vr=y.makeEnum("livekit.DataStream.OperationType",[{no:0,name:"CREATE"},{no:1,name:"UPDATE"},{no:2,name:"DELETE"},{no:3,name:"REACTION"}]),Ee=y.makeEnum("livekit.DataStream.CompressionType",[{no:0,name:"NONE"},{no:1,name:"DEFLATE_RAW"}]),No=y.makeMessageType("livekit.DataStream.TextHeader",(()=>[{no:1,name:"operation_type",kind:"enum",T:y.getEnumType(Vr)},{no:2,name:"version",kind:"scalar",T:5},{no:3,name:"reply_to_stream_id",kind:"scalar",T:9},{no:4,name:"attached_stream_ids",kind:"scalar",T:9,repeated:!0},{no:5,name:"generated",kind:"scalar",T:8}]),{localName:"DataStream_TextHeader"}),xo=y.makeMessageType("livekit.DataStream.ByteHeader",(()=>[{no:1,name:"name",kind:"scalar",T:9}]),{localName:"DataStream_ByteHeader"}),_i=y.makeMessageType("livekit.DataStream.Header",(()=>[{no:1,name:"stream_id",kind:"scalar",T:9},{no:2,name:"timestamp",kind:"scalar",T:3},{no:3,name:"topic",kind:"scalar",T:9},{no:4,name:"mime_type",kind:"scalar",T:9},{no:5,name:"total_length",kind:"scalar",T:4,opt:!0},{no:7,name:"encryption_type",kind:"enum",T:y.getEnumType(G)},{no:8,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:9,name:"text_header",kind:"message",T:No,oneof:"content_header"},{no:10,name:"byte_header",kind:"message",T:xo,oneof:"content_header"},{no:11,name:"inline_content",kind:"scalar",T:12,opt:!0},{no:12,name:"compression",kind:"enum",T:y.getEnumType(Ee)}]),{localName:"DataStream_Header"}),Et=y.makeMessageType("livekit.DataStream.Chunk",(()=>[{no:1,name:"stream_id",kind:"scalar",T:9},{no:2,name:"chunk_index",kind:"scalar",T:4},{no:3,name:"content",kind:"scalar",T:12},{no:4,name:"version",kind:"scalar",T:5},{no:5,name:"iv",kind:"scalar",T:12,opt:!0}]),{localName:"DataStream_Chunk"}),Wr=y.makeMessageType("livekit.DataStream.Trailer",(()=>[{no:1,name:"stream_id",kind:"scalar",T:9},{no:2,name:"reason",kind:"scalar",T:9},{no:3,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}}]),{localName:"DataStream_Trailer"}),Gu=y.makeMessageType("livekit.FilterParams",(()=>[{no:1,name:"include_events",kind:"scalar",T:9,repeated:!0},{no:2,name:"exclude_events",kind:"scalar",T:9,repeated:!0}])),Ju=y.makeMessageType("livekit.WebhookConfig",(()=>[{no:1,name:"url",kind:"scalar",T:9},{no:2,name:"signing_key",kind:"scalar",T:9},{no:3,name:"filter_params",kind:"message",T:Gu}])),Qu=y.makeMessageType("livekit.SubscribedAudioCodec",(()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"enabled",kind:"scalar",T:8}])),Yu=y.makeEnum("livekit.JobRestartPolicy",[{no:0,name:"JRP_ON_FAILURE"},{no:1,name:"JRP_NEVER"}]),Oi=y.makeMessageType("livekit.RoomAgentDispatch",(()=>[{no:1,name:"agent_name",kind:"scalar",T:9},{no:2,name:"metadata",kind:"scalar",T:9},{no:3,name:"restart_policy",kind:"enum",T:y.getEnumType(Yu)},{no:4,name:"deployment",kind:"scalar",T:9},{no:5,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}}])),Uo=y.makeEnum("livekit.EncodingOptionsPreset",[{no:0,name:"H264_720P_30"},{no:1,name:"H264_720P_60"},{no:2,name:"H264_1080P_30"},{no:3,name:"H264_1080P_60"},{no:4,name:"PORTRAIT_H264_720P_30"},{no:5,name:"PORTRAIT_H264_720P_60"},{no:6,name:"PORTRAIT_H264_1080P_30"},{no:7,name:"PORTRAIT_H264_1080P_60"}]),Xu=y.makeEnum("livekit.EncodedFileType",[{no:0,name:"DEFAULT_FILETYPE"},{no:1,name:"MP4"},{no:2,name:"OGG"},{no:3,name:"MP3"}]),$u=y.makeEnum("livekit.StreamProtocol",[{no:0,name:"DEFAULT_PROTOCOL"},{no:1,name:"RTMP"},{no:2,name:"SRT"},{no:3,name:"WEBSOCKET"}]),Zu=y.makeEnum("livekit.SegmentedFileProtocol",[{no:0,name:"DEFAULT_SEGMENTED_FILE_PROTOCOL"},{no:1,name:"HLS_PROTOCOL"}]),eh=y.makeEnum("livekit.SegmentedFileSuffix",[{no:0,name:"INDEX"},{no:1,name:"TIMESTAMP"}]),th=y.makeEnum("livekit.ImageFileSuffix",[{no:0,name:"IMAGE_SUFFIX_INDEX"},{no:1,name:"IMAGE_SUFFIX_TIMESTAMP"},{no:2,name:"IMAGE_SUFFIX_NONE_OVERWRITE"}]),nh=y.makeEnum("livekit.AudioMixing",[{no:0,name:"DEFAULT_MIXING"},{no:1,name:"DUAL_CHANNEL_AGENT"},{no:2,name:"DUAL_CHANNEL_ALTERNATE"}]),Fo=y.makeMessageType("livekit.EncodingOptions",(()=>[{no:1,name:"width",kind:"scalar",T:5},{no:2,name:"height",kind:"scalar",T:5},{no:3,name:"depth",kind:"scalar",T:5},{no:4,name:"framerate",kind:"scalar",T:5},{no:5,name:"audio_codec",kind:"enum",T:y.getEnumType(Au)},{no:6,name:"audio_bitrate",kind:"scalar",T:5},{no:7,name:"audio_frequency",kind:"scalar",T:5},{no:8,name:"video_codec",kind:"enum",T:y.getEnumType(Lu)},{no:9,name:"video_bitrate",kind:"scalar",T:5},{no:10,name:"key_frame_interval",kind:"scalar",T:1},{no:11,name:"audio_quality",kind:"scalar",T:5},{no:12,name:"video_quality",kind:"scalar",T:5}])),Bo=y.makeMessageType("livekit.StreamOutput",(()=>[{no:1,name:"protocol",kind:"enum",T:y.getEnumType($u)},{no:2,name:"urls",kind:"scalar",T:9,repeated:!0}])),Hr=y.makeMessageType("livekit.SegmentedFileOutput",(()=>[{no:1,name:"protocol",kind:"enum",T:y.getEnumType(Zu)},{no:2,name:"filename_prefix",kind:"scalar",T:9},{no:3,name:"playlist_name",kind:"scalar",T:9},{no:11,name:"live_playlist_name",kind:"scalar",T:9},{no:4,name:"segment_duration",kind:"scalar",T:13},{no:10,name:"filename_suffix",kind:"enum",T:y.getEnumType(eh)},{no:8,name:"disable_manifest",kind:"scalar",T:8},{no:5,name:"s3",kind:"message",T:Ai,oneof:"output"},{no:6,name:"gcp",kind:"message",T:Li,oneof:"output"},{no:7,name:"azure",kind:"message",T:Ni,oneof:"output"},{no:9,name:"aliOSS",kind:"message",T:xi,oneof:"output"}])),ih=y.makeMessageType("livekit.ImageOutput",(()=>[{no:1,name:"capture_interval",kind:"scalar",T:13},{no:2,name:"width",kind:"scalar",T:5},{no:3,name:"height",kind:"scalar",T:5},{no:4,name:"filename_prefix",kind:"scalar",T:9},{no:5,name:"filename_suffix",kind:"enum",T:y.getEnumType(th)},{no:6,name:"image_codec",kind:"enum",T:y.getEnumType(Nu)},{no:7,name:"disable_manifest",kind:"scalar",T:8},{no:8,name:"s3",kind:"message",T:Ai,oneof:"output"},{no:9,name:"gcp",kind:"message",T:Li,oneof:"output"},{no:10,name:"azure",kind:"message",T:Ni,oneof:"output"},{no:11,name:"aliOSS",kind:"message",T:xi,oneof:"output"}])),Ai=y.makeMessageType("livekit.S3Upload",(()=>[{no:1,name:"access_key",kind:"scalar",T:9},{no:2,name:"secret",kind:"scalar",T:9},{no:11,name:"session_token",kind:"scalar",T:9},{no:12,name:"assume_role_arn",kind:"scalar",T:9},{no:13,name:"assume_role_external_id",kind:"scalar",T:9},{no:3,name:"region",kind:"scalar",T:9},{no:4,name:"endpoint",kind:"scalar",T:9},{no:5,name:"bucket",kind:"scalar",T:9},{no:6,name:"force_path_style",kind:"scalar",T:8},{no:7,name:"metadata",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:8,name:"tagging",kind:"scalar",T:9},{no:9,name:"content_disposition",kind:"scalar",T:9},{no:10,name:"proxy",kind:"message",T:jo}])),Li=y.makeMessageType("livekit.GCPUpload",(()=>[{no:1,name:"credentials",kind:"scalar",T:9},{no:2,name:"bucket",kind:"scalar",T:9},{no:3,name:"proxy",kind:"message",T:jo}])),Ni=y.makeMessageType("livekit.AzureBlobUpload",(()=>[{no:1,name:"account_name",kind:"scalar",T:9},{no:2,name:"account_key",kind:"scalar",T:9},{no:3,name:"container_name",kind:"scalar",T:9}])),xi=y.makeMessageType("livekit.AliOSSUpload",(()=>[{no:1,name:"access_key",kind:"scalar",T:9},{no:2,name:"secret",kind:"scalar",T:9},{no:3,name:"region",kind:"scalar",T:9},{no:4,name:"endpoint",kind:"scalar",T:9},{no:5,name:"bucket",kind:"scalar",T:9}])),jo=y.makeMessageType("livekit.ProxyConfig",(()=>[{no:1,name:"url",kind:"scalar",T:9},{no:2,name:"username",kind:"scalar",T:9},{no:3,name:"password",kind:"scalar",T:9}])),rh=y.makeMessageType("livekit.AutoParticipantEgress",(()=>[{no:1,name:"preset",kind:"enum",T:y.getEnumType(Uo),oneof:"options"},{no:2,name:"advanced",kind:"message",T:Fo,oneof:"options"},{no:3,name:"file_outputs",kind:"message",T:Kr,repeated:!0},{no:4,name:"segment_outputs",kind:"message",T:Hr,repeated:!0}])),sh=y.makeMessageType("livekit.AutoTrackEgress",(()=>[{no:1,name:"filepath",kind:"scalar",T:9},{no:5,name:"disable_manifest",kind:"scalar",T:8},{no:2,name:"s3",kind:"message",T:Ai,oneof:"output"},{no:3,name:"gcp",kind:"message",T:Li,oneof:"output"},{no:4,name:"azure",kind:"message",T:Ni,oneof:"output"},{no:6,name:"aliOSS",kind:"message",T:xi,oneof:"output"}])),ah=y.makeMessageType("livekit.RoomCompositeEgressRequest",(()=>[{no:1,name:"room_name",kind:"scalar",T:9},{no:2,name:"layout",kind:"scalar",T:9},{no:3,name:"audio_only",kind:"scalar",T:8},{no:15,name:"audio_mixing",kind:"enum",T:y.getEnumType(nh)},{no:4,name:"video_only",kind:"scalar",T:8},{no:5,name:"custom_base_url",kind:"scalar",T:9},{no:6,name:"file",kind:"message",T:Kr,oneof:"output"},{no:7,name:"stream",kind:"message",T:Bo,oneof:"output"},{no:10,name:"segments",kind:"message",T:Hr,oneof:"output"},{no:8,name:"preset",kind:"enum",T:y.getEnumType(Uo),oneof:"options"},{no:9,name:"advanced",kind:"message",T:Fo,oneof:"options"},{no:11,name:"file_outputs",kind:"message",T:Kr,repeated:!0},{no:12,name:"stream_outputs",kind:"message",T:Bo,repeated:!0},{no:13,name:"segment_outputs",kind:"message",T:Hr,repeated:!0},{no:14,name:"image_outputs",kind:"message",T:ih,repeated:!0},{no:16,name:"webhooks",kind:"message",T:Ju,repeated:!0}])),Kr=y.makeMessageType("livekit.EncodedFileOutput",(()=>[{no:1,name:"file_type",kind:"enum",T:y.getEnumType(Xu)},{no:2,name:"filepath",kind:"scalar",T:9},{no:6,name:"disable_manifest",kind:"scalar",T:8},{no:3,name:"s3",kind:"message",T:Ai,oneof:"output"},{no:4,name:"gcp",kind:"message",T:Li,oneof:"output"},{no:5,name:"azure",kind:"message",T:Ni,oneof:"output"},{no:7,name:"aliOSS",kind:"message",T:xi,oneof:"output"}])),oh=y.makeMessageType("livekit.RoomEgress",(()=>[{no:1,name:"room",kind:"message",T:ah},{no:3,name:"participant",kind:"message",T:rh},{no:2,name:"tracks",kind:"message",T:sh}])),qn=y.makeMessageType("livekit.RoomConfiguration",(()=>[{no:1,name:"name",kind:"scalar",T:9},{no:2,name:"empty_timeout",kind:"scalar",T:13},{no:3,name:"departure_timeout",kind:"scalar",T:13},{no:4,name:"max_participants",kind:"scalar",T:13},{no:11,name:"metadata",kind:"scalar",T:9},{no:5,name:"egress",kind:"message",T:oh},{no:7,name:"min_playout_delay",kind:"scalar",T:13},{no:8,name:"max_playout_delay",kind:"scalar",T:13},{no:9,name:"sync_streams",kind:"scalar",T:8},{no:10,name:"agents",kind:"message",T:Oi,repeated:!0},{no:12,name:"tags",kind:"map",K:9,V:{kind:"scalar",T:9}}])),Ze=y.makeEnum("livekit.SignalTarget",[{no:0,name:"PUBLISHER"},{no:1,name:"SUBSCRIBER"}]),zr=y.makeEnum("livekit.StreamState",[{no:0,name:"ACTIVE"},{no:1,name:"PAUSED"}]),ch=y.makeEnum("livekit.CandidateProtocol",[{no:0,name:"UDP"},{no:1,name:"TCP"},{no:2,name:"TLS"}]),dh=y.makeMessageType("livekit.SignalRequest",(()=>[{no:1,name:"offer",kind:"message",T:Nt,oneof:"message"},{no:2,name:"answer",kind:"message",T:Nt,oneof:"message"},{no:3,name:"trickle",kind:"message",T:Ui,oneof:"message"},{no:4,name:"add_track",kind:"message",T:Vn,oneof:"message"},{no:5,name:"mute",kind:"message",T:Fi,oneof:"message"},{no:6,name:"subscription",kind:"message",T:Bi,oneof:"message"},{no:7,name:"track_setting",kind:"message",T:Ho,oneof:"message"},{no:8,name:"leave",kind:"message",T:ji,oneof:"message"},{no:10,name:"update_layers",kind:"message",T:zo,oneof:"message"},{no:11,name:"subscription_permission",kind:"message",T:Qo,oneof:"message"},{no:12,name:"sync_state",kind:"message",T:ts,oneof:"message"},{no:13,name:"simulate",kind:"message",T:ut,oneof:"message"},{no:14,name:"ping",kind:"scalar",T:3,oneof:"message"},{no:15,name:"update_metadata",kind:"message",T:Zr,oneof:"message"},{no:16,name:"ping_req",kind:"message",T:$o,oneof:"message"},{no:17,name:"update_audio_track",kind:"message",T:$r,oneof:"message"},{no:18,name:"update_video_track",kind:"message",T:Ko,oneof:"message"},{no:19,name:"publish_data_track_request",kind:"message",T:Jr,oneof:"message"},{no:20,name:"unpublish_data_track_request",kind:"message",T:Yr,oneof:"message"},{no:21,name:"update_data_subscription",kind:"message",T:Vo,oneof:"message"},{no:22,name:"store_data_blob_request",kind:"message",T:vh,oneof:"message"},{no:23,name:"get_data_blob_request",kind:"message",T:yh,oneof:"message"}])),qo=y.makeMessageType("livekit.SignalResponse",(()=>[{no:1,name:"join",kind:"message",T:ph,oneof:"message"},{no:2,name:"answer",kind:"message",T:Nt,oneof:"message"},{no:3,name:"offer",kind:"message",T:Nt,oneof:"message"},{no:4,name:"trickle",kind:"message",T:Ui,oneof:"message"},{no:5,name:"update",kind:"message",T:fh,oneof:"message"},{no:6,name:"track_published",kind:"message",T:Xr,oneof:"message"},{no:8,name:"leave",kind:"message",T:ji,oneof:"message"},{no:9,name:"mute",kind:"message",T:Fi,oneof:"message"},{no:10,name:"speakers_changed",kind:"message",T:Th,oneof:"message"},{no:11,name:"room_update",kind:"message",T:Sh,oneof:"message"},{no:12,name:"connection_quality",kind:"message",T:Ch,oneof:"message"},{no:13,name:"stream_state_update",kind:"message",T:Rh,oneof:"message"},{no:14,name:"subscribed_quality_update",kind:"message",T:Ih,oneof:"message"},{no:15,name:"subscription_permission_update",kind:"message",T:Dh,oneof:"message"},{no:16,name:"refresh_token",kind:"scalar",T:9,oneof:"message"},{no:17,name:"track_unpublished",kind:"message",T:gh,oneof:"message"},{no:18,name:"pong",kind:"scalar",T:3,oneof:"message"},{no:19,name:"reconnect",kind:"message",T:mh,oneof:"message"},{no:20,name:"pong_resp",kind:"message",T:Oh,oneof:"message"},{no:21,name:"subscription_response",kind:"message",T:Nh,oneof:"message"},{no:22,name:"request_response",kind:"message",T:xh,oneof:"message"},{no:23,name:"track_subscribed",kind:"message",T:Uh,oneof:"message"},{no:24,name:"room_moved",kind:"message",T:_h,oneof:"message"},{no:25,name:"media_sections_requirement",kind:"message",T:jh,oneof:"message"},{no:26,name:"subscribed_audio_codec_update",kind:"message",T:Mh,oneof:"message"},{no:27,name:"publish_data_track_response",kind:"message",T:Qr,oneof:"message"},{no:28,name:"unpublish_data_track_response",kind:"message",T:lh,oneof:"message"},{no:29,name:"data_track_subscriber_handles",kind:"message",T:uh,oneof:"message"},{no:30,name:"store_data_blob_response",kind:"message",T:kh,oneof:"message"},{no:31,name:"get_data_blob_response",kind:"message",T:bh,oneof:"message"}])),Gr=y.makeMessageType("livekit.SimulcastCodec",(()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"cid",kind:"scalar",T:9},{no:4,name:"layers",kind:"message",T:Lt,repeated:!0},{no:5,name:"video_layer_mode",kind:"enum",T:y.getEnumType(Fr)}])),Vn=y.makeMessageType("livekit.AddTrackRequest",(()=>[{no:1,name:"cid",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"type",kind:"enum",T:y.getEnumType(Ke)},{no:4,name:"width",kind:"scalar",T:13},{no:5,name:"height",kind:"scalar",T:13},{no:6,name:"muted",kind:"scalar",T:8},{no:7,name:"disable_dtx",kind:"scalar",T:8},{no:8,name:"source",kind:"enum",T:y.getEnumType(ue)},{no:9,name:"layers",kind:"message",T:Lt,repeated:!0},{no:10,name:"simulcast_codecs",kind:"message",T:Gr,repeated:!0},{no:11,name:"sid",kind:"scalar",T:9},{no:12,name:"stereo",kind:"scalar",T:8},{no:13,name:"disable_red",kind:"scalar",T:8},{no:14,name:"encryption",kind:"enum",T:y.getEnumType(G)},{no:15,name:"stream",kind:"scalar",T:9},{no:16,name:"backup_codec_policy",kind:"enum",T:y.getEnumType(ko)},{no:17,name:"audio_features",kind:"enum",T:y.getEnumType(ve),repeated:!0},{no:18,name:"packet_trailer_features",kind:"enum",T:y.getEnumType(on),repeated:!0}])),Jr=y.makeMessageType("livekit.PublishDataTrackRequest",(()=>[{no:1,name:"pub_handle",kind:"scalar",T:13},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"encryption",kind:"enum",T:y.getEnumType(G)},{no:4,name:"frame_encoding",kind:"message",T:bo,opt:!0},{no:5,name:"schema",kind:"message",T:xr,opt:!0}])),Qr=y.makeMessageType("livekit.PublishDataTrackResponse",(()=>[{no:1,name:"info",kind:"message",T:Ii}])),Yr=y.makeMessageType("livekit.UnpublishDataTrackRequest",(()=>[{no:1,name:"pub_handle",kind:"scalar",T:13}])),lh=y.makeMessageType("livekit.UnpublishDataTrackResponse",(()=>[{no:1,name:"info",kind:"message",T:Ii}])),uh=y.makeMessageType("livekit.DataTrackSubscriberHandles",(()=>[{no:1,name:"sub_handles",kind:"map",K:13,V:{kind:"message",T:hh}}])),hh=y.makeMessageType("livekit.DataTrackSubscriberHandles.PublishedDataTrack",(()=>[{no:1,name:"publisher_identity",kind:"scalar",T:9},{no:2,name:"publisher_sid",kind:"scalar",T:9},{no:3,name:"track_sid",kind:"scalar",T:9}]),{localName:"DataTrackSubscriberHandles_PublishedDataTrack"}),Ui=y.makeMessageType("livekit.TrickleRequest",(()=>[{no:1,name:"candidateInit",kind:"scalar",T:9},{no:2,name:"target",kind:"enum",T:y.getEnumType(Ze)},{no:3,name:"final",kind:"scalar",T:8}])),Fi=y.makeMessageType("livekit.MuteTrackRequest",(()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"muted",kind:"scalar",T:8}])),ph=y.makeMessageType("livekit.JoinResponse",(()=>[{no:1,name:"room",kind:"message",T:Ri},{no:2,name:"participant",kind:"message",T:qt},{no:3,name:"other_participants",kind:"message",T:qt,repeated:!0},{no:4,name:"server_version",kind:"scalar",T:9},{no:5,name:"ice_servers",kind:"message",T:Go,repeated:!0},{no:6,name:"subscriber_primary",kind:"scalar",T:8},{no:7,name:"alternative_url",kind:"scalar",T:9},{no:8,name:"client_configuration",kind:"message",T:Oo},{no:9,name:"server_region",kind:"scalar",T:9},{no:10,name:"ping_timeout",kind:"scalar",T:5},{no:11,name:"ping_interval",kind:"scalar",T:5},{no:12,name:"server_info",kind:"message",T:Io},{no:13,name:"sif_trailer",kind:"scalar",T:12},{no:14,name:"enabled_publish_codecs",kind:"message",T:Pi,repeated:!0},{no:15,name:"fast_publish",kind:"scalar",T:8}])),mh=y.makeMessageType("livekit.ReconnectResponse",(()=>[{no:1,name:"ice_servers",kind:"message",T:Go,repeated:!0},{no:2,name:"client_configuration",kind:"message",T:Oo},{no:3,name:"server_info",kind:"message",T:Io},{no:4,name:"last_message_seq",kind:"scalar",T:13}])),Xr=y.makeMessageType("livekit.TrackPublishedResponse",(()=>[{no:1,name:"cid",kind:"scalar",T:9},{no:2,name:"track",kind:"message",T:ln}])),gh=y.makeMessageType("livekit.TrackUnpublishedResponse",(()=>[{no:1,name:"track_sid",kind:"scalar",T:9}])),Nt=y.makeMessageType("livekit.SessionDescription",(()=>[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"sdp",kind:"scalar",T:9},{no:3,name:"id",kind:"scalar",T:13},{no:4,name:"mid_to_track_id",kind:"map",K:9,V:{kind:"scalar",T:9}}])),fh=y.makeMessageType("livekit.ParticipantUpdate",(()=>[{no:1,name:"participants",kind:"message",T:qt,repeated:!0}])),Bi=y.makeMessageType("livekit.UpdateSubscription",(()=>[{no:1,name:"track_sids",kind:"scalar",T:9,repeated:!0},{no:2,name:"subscribe",kind:"scalar",T:8},{no:3,name:"participant_tracks",kind:"message",T:Po,repeated:!0}])),Vo=y.makeMessageType("livekit.UpdateDataSubscription",(()=>[{no:1,name:"updates",kind:"message",T:Wo,repeated:!0}])),Wo=y.makeMessageType("livekit.UpdateDataSubscription.Update",(()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribe",kind:"scalar",T:8},{no:3,name:"options",kind:"message",T:Vu}]),{localName:"UpdateDataSubscription_Update"}),vh=y.makeMessageType("livekit.StoreDataBlobRequest",(()=>[{no:1,name:"request_id",kind:"scalar",T:13},{no:2,name:"blob",kind:"message",T:To}])),kh=y.makeMessageType("livekit.StoreDataBlobResponse",(()=>[{no:1,name:"request_id",kind:"scalar",T:13},{no:2,name:"key",kind:"message",T:Ur}])),yh=y.makeMessageType("livekit.GetDataBlobRequest",(()=>[{no:1,name:"request_id",kind:"scalar",T:13},{no:2,name:"participant_identity",kind:"scalar",T:9},{no:3,name:"key",kind:"message",T:Ur}])),bh=y.makeMessageType("livekit.GetDataBlobResponse",(()=>[{no:1,name:"request_id",kind:"scalar",T:13},{no:2,name:"blob",kind:"message",T:To}])),Ho=y.makeMessageType("livekit.UpdateTrackSettings",(()=>[{no:1,name:"track_sids",kind:"scalar",T:9,repeated:!0},{no:3,name:"disabled",kind:"scalar",T:8},{no:4,name:"quality",kind:"enum",T:y.getEnumType(Nr)},{no:5,name:"width",kind:"scalar",T:13},{no:6,name:"height",kind:"scalar",T:13},{no:7,name:"fps",kind:"scalar",T:13},{no:8,name:"priority",kind:"scalar",T:13}])),$r=y.makeMessageType("livekit.UpdateLocalAudioTrack",(()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"features",kind:"enum",T:y.getEnumType(ve),repeated:!0}])),Ko=y.makeMessageType("livekit.UpdateLocalVideoTrack",(()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"width",kind:"scalar",T:13},{no:3,name:"height",kind:"scalar",T:13}])),ji=y.makeMessageType("livekit.LeaveRequest",(()=>[{no:1,name:"can_reconnect",kind:"scalar",T:8},{no:2,name:"reason",kind:"enum",T:y.getEnumType(xe)},{no:3,name:"action",kind:"enum",T:y.getEnumType(un)},{no:4,name:"regions",kind:"message",T:Ah}])),un=y.makeEnum("livekit.LeaveRequest.Action",[{no:0,name:"DISCONNECT"},{no:1,name:"RESUME"},{no:2,name:"RECONNECT"}]),zo=y.makeMessageType("livekit.UpdateVideoLayers",(()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"layers",kind:"message",T:Lt,repeated:!0}])),Zr=y.makeMessageType("livekit.UpdateParticipantMetadata",(()=>[{no:1,name:"metadata",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:4,name:"request_id",kind:"scalar",T:13}])),Go=y.makeMessageType("livekit.ICEServer",(()=>[{no:1,name:"urls",kind:"scalar",T:9,repeated:!0},{no:2,name:"username",kind:"scalar",T:9},{no:3,name:"credential",kind:"scalar",T:9}])),Th=y.makeMessageType("livekit.SpeakersChanged",(()=>[{no:1,name:"speakers",kind:"message",T:Co,repeated:!0}])),Sh=y.makeMessageType("livekit.RoomUpdate",(()=>[{no:1,name:"room",kind:"message",T:Ri}])),Eh=y.makeMessageType("livekit.ConnectionQualityInfo",(()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"quality",kind:"enum",T:y.getEnumType(an)},{no:3,name:"score",kind:"scalar",T:2}])),Ch=y.makeMessageType("livekit.ConnectionQualityUpdate",(()=>[{no:1,name:"updates",kind:"message",T:Eh,repeated:!0}])),wh=y.makeMessageType("livekit.StreamStateInfo",(()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sid",kind:"scalar",T:9},{no:3,name:"state",kind:"enum",T:y.getEnumType(zr)}])),Rh=y.makeMessageType("livekit.StreamStateUpdate",(()=>[{no:1,name:"stream_states",kind:"message",T:wh,repeated:!0}])),es=y.makeMessageType("livekit.SubscribedQuality",(()=>[{no:1,name:"quality",kind:"enum",T:y.getEnumType(Nr)},{no:2,name:"enabled",kind:"scalar",T:8}])),Ph=y.makeMessageType("livekit.SubscribedCodec",(()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"qualities",kind:"message",T:es,repeated:!0}])),Ih=y.makeMessageType("livekit.SubscribedQualityUpdate",(()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribed_qualities",kind:"message",T:es,repeated:!0},{no:3,name:"subscribed_codecs",kind:"message",T:Ph,repeated:!0}])),Mh=y.makeMessageType("livekit.SubscribedAudioCodecUpdate",(()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribed_audio_codecs",kind:"message",T:Qu,repeated:!0}])),Jo=y.makeMessageType("livekit.TrackPermission",(()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"all_tracks",kind:"scalar",T:8},{no:3,name:"track_sids",kind:"scalar",T:9,repeated:!0},{no:4,name:"participant_identity",kind:"scalar",T:9}])),Qo=y.makeMessageType("livekit.SubscriptionPermission",(()=>[{no:1,name:"all_participants",kind:"scalar",T:8},{no:2,name:"track_permissions",kind:"message",T:Jo,repeated:!0}])),Dh=y.makeMessageType("livekit.SubscriptionPermissionUpdate",(()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sid",kind:"scalar",T:9},{no:3,name:"allowed",kind:"scalar",T:8}])),_h=y.makeMessageType("livekit.RoomMovedResponse",(()=>[{no:1,name:"room",kind:"message",T:Ri},{no:2,name:"token",kind:"scalar",T:9},{no:3,name:"participant",kind:"message",T:qt},{no:4,name:"other_participants",kind:"message",T:qt,repeated:!0}])),ts=y.makeMessageType("livekit.SyncState",(()=>[{no:1,name:"answer",kind:"message",T:Nt},{no:2,name:"subscription",kind:"message",T:Bi},{no:3,name:"publish_tracks",kind:"message",T:Xr,repeated:!0},{no:4,name:"data_channels",kind:"message",T:Xo,repeated:!0},{no:5,name:"offer",kind:"message",T:Nt},{no:6,name:"track_sids_disabled",kind:"scalar",T:9,repeated:!0},{no:7,name:"datachannel_receive_states",kind:"message",T:Yo,repeated:!0},{no:8,name:"publish_data_tracks",kind:"message",T:Qr,repeated:!0}])),Yo=y.makeMessageType("livekit.DataChannelReceiveState",(()=>[{no:1,name:"publisher_sid",kind:"scalar",T:9},{no:2,name:"last_seq",kind:"scalar",T:13}])),Xo=y.makeMessageType("livekit.DataChannelInfo",(()=>[{no:1,name:"label",kind:"scalar",T:9},{no:2,name:"id",kind:"scalar",T:13},{no:3,name:"target",kind:"enum",T:y.getEnumType(Ze)}])),ut=y.makeMessageType("livekit.SimulateScenario",(()=>[{no:1,name:"speaker_update",kind:"scalar",T:5,oneof:"scenario"},{no:2,name:"node_failure",kind:"scalar",T:8,oneof:"scenario"},{no:3,name:"migration",kind:"scalar",T:8,oneof:"scenario"},{no:4,name:"server_leave",kind:"scalar",T:8,oneof:"scenario"},{no:5,name:"switch_candidate_protocol",kind:"enum",T:y.getEnumType(ch),oneof:"scenario"},{no:6,name:"subscriber_bandwidth",kind:"scalar",T:3,oneof:"scenario"},{no:7,name:"disconnect_signal_on_resume",kind:"scalar",T:8,oneof:"scenario"},{no:8,name:"disconnect_signal_on_resume_no_messages",kind:"scalar",T:8,oneof:"scenario"},{no:9,name:"leave_request_full_reconnect",kind:"scalar",T:8,oneof:"scenario"}])),$o=y.makeMessageType("livekit.Ping",(()=>[{no:1,name:"timestamp",kind:"scalar",T:3},{no:2,name:"rtt",kind:"scalar",T:3}])),Oh=y.makeMessageType("livekit.Pong",(()=>[{no:1,name:"last_ping_timestamp",kind:"scalar",T:3},{no:2,name:"timestamp",kind:"scalar",T:3}])),Ah=y.makeMessageType("livekit.RegionSettings",(()=>[{no:1,name:"regions",kind:"message",T:Lh,repeated:!0}])),Lh=y.makeMessageType("livekit.RegionInfo",(()=>[{no:1,name:"region",kind:"scalar",T:9},{no:2,name:"url",kind:"scalar",T:9},{no:3,name:"distance",kind:"scalar",T:3}])),Nh=y.makeMessageType("livekit.SubscriptionResponse",(()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"err",kind:"enum",T:y.getEnumType(yo)}])),xh=y.makeMessageType("livekit.RequestResponse",(()=>[{no:1,name:"request_id",kind:"scalar",T:13},{no:2,name:"reason",kind:"enum",T:y.getEnumType(Vt)},{no:3,name:"message",kind:"scalar",T:9},{no:4,name:"trickle",kind:"message",T:Ui,oneof:"request"},{no:5,name:"add_track",kind:"message",T:Vn,oneof:"request"},{no:6,name:"mute",kind:"message",T:Fi,oneof:"request"},{no:7,name:"update_metadata",kind:"message",T:Zr,oneof:"request"},{no:8,name:"update_audio_track",kind:"message",T:$r,oneof:"request"},{no:9,name:"update_video_track",kind:"message",T:Ko,oneof:"request"},{no:10,name:"publish_data_track",kind:"message",T:Jr,oneof:"request"},{no:11,name:"unpublish_data_track",kind:"message",T:Yr,oneof:"request"}])),Vt=y.makeEnum("livekit.RequestResponse.Reason",[{no:0,name:"OK"},{no:1,name:"NOT_FOUND"},{no:2,name:"NOT_ALLOWED"},{no:3,name:"LIMIT_EXCEEDED"},{no:4,name:"QUEUED"},{no:5,name:"UNSUPPORTED_TYPE"},{no:6,name:"UNCLASSIFIED_ERROR"},{no:7,name:"INVALID_HANDLE"},{no:8,name:"INVALID_NAME"},{no:9,name:"DUPLICATE_HANDLE"},{no:10,name:"DUPLICATE_NAME"},{no:11,name:"INVALID_REQUEST"}]),Uh=y.makeMessageType("livekit.TrackSubscribed",(()=>[{no:1,name:"track_sid",kind:"scalar",T:9}])),Zo=y.makeMessageType("livekit.ConnectionSettings",(()=>[{no:1,name:"auto_subscribe",kind:"scalar",T:8},{no:2,name:"adaptive_stream",kind:"scalar",T:8},{no:3,name:"subscriber_allow_pause",kind:"scalar",T:8,opt:!0},{no:4,name:"disable_ice_lite",kind:"scalar",T:8},{no:5,name:"auto_subscribe_data_track",kind:"scalar",T:8,opt:!0}])),Fh=y.makeMessageType("livekit.JoinRequest",(()=>[{no:1,name:"client_info",kind:"message",T:Do},{no:2,name:"connection_settings",kind:"message",T:Zo},{no:3,name:"metadata",kind:"scalar",T:9},{no:4,name:"participant_attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:5,name:"add_track_requests",kind:"message",T:Vn,repeated:!0},{no:6,name:"publisher_offer",kind:"message",T:Nt},{no:7,name:"reconnect",kind:"scalar",T:8},{no:8,name:"reconnect_reason",kind:"enum",T:y.getEnumType(Tt)},{no:9,name:"participant_sid",kind:"scalar",T:9},{no:10,name:"sync_state",kind:"message",T:ts}])),Bh=y.makeMessageType("livekit.WrappedJoinRequest",(()=>[{no:1,name:"compression",kind:"enum",T:y.getEnumType(ns)},{no:2,name:"join_request",kind:"scalar",T:12}])),ns=y.makeEnum("livekit.WrappedJoinRequest.Compression",[{no:0,name:"NONE"},{no:1,name:"GZIP"}]),jh=y.makeMessageType("livekit.MediaSectionsRequirement",(()=>[{no:1,name:"num_audios",kind:"scalar",T:13},{no:2,name:"num_videos",kind:"scalar",T:13}])),qh=y.makeMessageType("livekit.TokenSourceRequest",(()=>[{no:1,name:"room_name",kind:"scalar",T:9,opt:!0},{no:2,name:"participant_name",kind:"scalar",T:9,opt:!0},{no:3,name:"participant_identity",kind:"scalar",T:9,opt:!0},{no:4,name:"participant_metadata",kind:"scalar",T:9,opt:!0},{no:5,name:"participant_attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:6,name:"room_config",kind:"message",T:qn,opt:!0}])),ec=y.makeMessageType("livekit.TokenSourceResponse",(()=>[{no:1,name:"server_url",kind:"scalar",T:9},{no:2,name:"participant_token",kind:"scalar",T:9}]));function Vh(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var tc,is={exports:{}},Wh=is.exports,ze,Pe,Wn=(tc||(tc=1,(function(i){var e,t;e=Wh,t=function(){var n=function(){},r="undefined",s=typeof window!==r&&typeof window.navigator!==r&&/Trident\/|MSIE /.test(window.navigator.userAgent),a=["trace","debug","info","warn","error"],o={},c=null;function d(v,b){var T=v[b];if(typeof T.bind=="function")return T.bind(v);try{return Function.prototype.bind.call(T,v)}catch{return function(){return Function.prototype.apply.apply(T,[v,arguments])}}}function l(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function h(){for(var v=this.getLevel(),b=0;b<a.length;b++){var T=a[b];this[T]=b<v?n:this.methodFactory(T,v,this.name)}if(this.log=this.debug,typeof console===r&&v<this.levels.SILENT)return"No console available for logging"}function p(v){return function(){typeof console!==r&&(h.call(this),this[v].apply(this,arguments))}}function m(v,b,T){return(function(E){return E==="debug"&&(E="log"),typeof console!==r&&(E==="trace"&&s?l:console[E]!==void 0?d(console,E):console.log!==void 0?d(console,"log"):n)})(v)||p.apply(this,arguments)}function k(v,b){var T,E,S,C=this,I="loglevel";function O(){var B;if(typeof window!==r&&I){try{B=window.localStorage[I]}catch{}if(typeof B===r)try{var F=window.document.cookie,ee=encodeURIComponent(I),x=F.indexOf(ee+"=");x!==-1&&(B=/^([^;]+)/.exec(F.slice(x+ee.length+1))[1])}catch{}return C.levels[B]===void 0&&(B=void 0),B}}function N(B){var F=B;if(typeof F=="string"&&C.levels[F.toUpperCase()]!==void 0&&(F=C.levels[F.toUpperCase()]),typeof F=="number"&&F>=0&&F<=C.levels.SILENT)return F;throw new TypeError("log.setLevel() called with invalid level: "+B)}typeof v=="string"?I+=":"+v:typeof v=="symbol"&&(I=void 0),C.name=v,C.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},C.methodFactory=b||m,C.getLevel=function(){return S??E??T},C.setLevel=function(B,F){return S=N(B),F!==!1&&(function(ee){var x=(a[ee]||"silent").toUpperCase();if(typeof window!==r&&I){try{return void(window.localStorage[I]=x)}catch{}try{window.document.cookie=encodeURIComponent(I)+"="+x+";"}catch{}}})(S),h.call(C)},C.setDefaultLevel=function(B){E=N(B),O()||C.setLevel(B,!1)},C.resetLevel=function(){S=null,(function(){if(typeof window!==r&&I){try{window.localStorage.removeItem(I)}catch{}try{window.document.cookie=encodeURIComponent(I)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}})(),h.call(C)},C.enableAll=function(B){C.setLevel(C.levels.TRACE,B)},C.disableAll=function(B){C.setLevel(C.levels.SILENT,B)},C.rebuild=function(){if(c!==C&&(T=N(c.getLevel())),h.call(C),c===C)for(var B in o)o[B].rebuild()},T=N(c?c.getLevel():"WARN");var Z=O();Z!=null&&(S=N(Z)),h.call(C)}(c=new k).getLogger=function(v){if(typeof v!="symbol"&&typeof v!="string"||v==="")throw new TypeError("You must supply a name when creating a logger.");var b=o[v];return b||(b=o[v]=new k(v,c.methodFactory)),b};var g=typeof window!==r?window.log:void 0;return c.noConflict=function(){return typeof window!==r&&window.log===c&&(window.log=g),c},c.getLoggers=function(){return o},c.default=c,c},i.exports?i.exports=t():e.log=t()})(is)),is.exports);u.LogLevel=void 0,(ze=u.LogLevel||(u.LogLevel={}))[ze.trace=0]="trace",ze[ze.debug=1]="debug",ze[ze.info=2]="info",ze[ze.warn=3]="warn",ze[ze.error=4]="error",ze[ze.silent=5]="silent",u.LoggerNames=void 0,(Pe=u.LoggerNames||(u.LoggerNames={})).Default="livekit",Pe.Room="livekit-room",Pe.TokenSource="livekit-token-source",Pe.Participant="livekit-participant",Pe.Track="livekit-track",Pe.Publication="livekit-track-publication",Pe.Engine="livekit-engine",Pe.Signal="livekit-signal",Pe.PCManager="livekit-pc-manager",Pe.PCTransport="livekit-pc-transport",Pe.E2EE="lk-e2ee",Pe.DataTracks="livekit-data-tracks",Pe.Region="livekit-region",Pe.ICE="livekit-ice",Pe.Stats="livekit-stats";let V=Wn.getLogger(u.LoggerNames.Default),nc=Object.values(u.LoggerNames).map((i=>Wn.getLogger(i)));function he(i,e){let t=Wn.getLogger(i);return t.setDefaultLevel(V.getLevel()),e?(function(n,r){let s=o=>(c,d)=>{let l=r(),h=l||d?Object.assign(Object.assign({},l),d):void 0;n[o](c,h)},a=Object.create(n);return a.trace=s("trace"),a.debug=s("debug"),a.info=s("info"),a.warn=s("warn"),a.error=s("error"),a})(t,e):t}V.setDefaultLevel(u.LogLevel.info);let hn=Wn.getLogger(u.LoggerNames.E2EE),rs=new Set,Hh=hn.setLevel.bind(hn);function ic(i){return rs.add(i),()=>{rs.delete(i)}}hn.setLevel=(i,e)=>{Hh(i,e);let t=hn.getLevel();rs.forEach((n=>n(t)))};let Hn=7e3,Kh=[0,300,1200,2700,4800,Hn,Hn,Hn,Hn,Hn];class rc{constructor(e){this._retryDelays=e!==void 0?[...e]:Kh}nextRetryDelayInMs(e){if(e.retryCount>=this._retryDelays.length)return null;let t=this._retryDelays[e.retryCount];return e.retryCount<=1?t:t+1e3*Math.random()}}function ss(i,e){var t={};for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function"){var r=0;for(n=Object.getOwnPropertySymbols(i);r<n.length;r++)e.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(i,n[r])&&(t[n[r]]=i[n[r]])}return t}function f(i,e,t,n){return new(t||(t=Promise))((function(r,s){function a(d){try{c(n.next(d))}catch(l){s(l)}}function o(d){try{c(n.throw(d))}catch(l){s(l)}}function c(d){var l;d.done?r(d.value):(l=d.value,l instanceof t?l:new t((function(h){h(l)}))).then(a,o)}c((n=n.apply(i,e||[])).next())}))}function zh(i){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&i[e],n=0;if(t)return t.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&n>=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function Ct(i){return this instanceof Ct?(this.v=i,this):new Ct(i)}function sc(i,e,t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,r=t.apply(i,e||[]),s=[];return n=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",(function(h){return function(p){return Promise.resolve(p).then(h,d)}})),n[Symbol.asyncIterator]=function(){return this},n;function a(h,p){r[h]&&(n[h]=function(m){return new Promise((function(k,g){s.push([h,m,k,g])>1||o(h,m)}))},p&&(n[h]=p(n[h])))}function o(h,p){try{(m=r[h](p)).value instanceof Ct?Promise.resolve(m.value.v).then(c,d):l(s[0][2],m)}catch(k){l(s[0][3],k)}var m}function c(h){o("next",h)}function d(h){o("throw",h)}function l(h,p){h(p),s.shift(),s.length&&o(s[0][0],s[0][1])}}function Ge(i){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,t=i[Symbol.asyncIterator];return t?t.call(i):(i=zh(i),e={},n("next"),n("throw"),n("return"),e[Symbol.asyncIterator]=function(){return this},e);function n(r){e[r]=i[r]&&function(s){return new Promise((function(a,o){(function(c,d,l,h){Promise.resolve(h).then((function(p){c({value:p,done:l})}),d)})(a,o,(s=i[r](s)).done,s.value)}))}}}typeof SuppressedError=="function"&&SuppressedError;var ac,qi={exports:{}},Ue=(function(){if(ac)return qi.exports;ac=1;var i,e=typeof Reflect=="object"?Reflect:null,t=e&&typeof e.apply=="function"?e.apply:function(g,v,b){return Function.prototype.apply.call(g,v,b)};i=e&&typeof e.ownKeys=="function"?e.ownKeys:Object.getOwnPropertySymbols?function(g){return Object.getOwnPropertyNames(g).concat(Object.getOwnPropertySymbols(g))}:function(g){return Object.getOwnPropertyNames(g)};var n=Number.isNaN||function(g){return g!=g};function r(){r.init.call(this)}qi.exports=r,qi.exports.once=function(g,v){return new Promise((function(b,T){function E(C){g.removeListener(v,S),T(C)}function S(){typeof g.removeListener=="function"&&g.removeListener("error",E),b([].slice.call(arguments))}k(g,v,S,{once:!0}),v!=="error"&&(function(C,I,O){typeof C.on=="function"&&k(C,"error",I,O)})(g,E,{once:!0})}))},r.EventEmitter=r,r.prototype._events=void 0,r.prototype._eventsCount=0,r.prototype._maxListeners=void 0;var s=10;function a(g){if(typeof g!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof g)}function o(g){return g._maxListeners===void 0?r.defaultMaxListeners:g._maxListeners}function c(g,v,b,T){var E,S,C,I;if(a(b),(S=g._events)===void 0?(S=g._events=Object.create(null),g._eventsCount=0):(S.newListener!==void 0&&(g.emit("newListener",v,b.listener?b.listener:b),S=g._events),C=S[v]),C===void 0)C=S[v]=b,++g._eventsCount;else if(typeof C=="function"?C=S[v]=T?[b,C]:[C,b]:T?C.unshift(b):C.push(b),(E=o(g))>0&&C.length>E&&!C.warned){C.warned=!0;var O=new Error("Possible EventEmitter memory leak detected. "+C.length+" "+String(v)+" listeners added. Use emitter.setMaxListeners() to increase limit");O.name="MaxListenersExceededWarning",O.emitter=g,O.type=v,O.count=C.length,I=O,console&&console.warn&&console.warn(I)}return g}function d(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function l(g,v,b){var T={fired:!1,wrapFn:void 0,target:g,type:v,listener:b},E=d.bind(T);return E.listener=b,T.wrapFn=E,E}function h(g,v,b){var T=g._events;if(T===void 0)return[];var E=T[v];return E===void 0?[]:typeof E=="function"?b?[E.listener||E]:[E]:b?(function(S){for(var C=new Array(S.length),I=0;I<C.length;++I)C[I]=S[I].listener||S[I];return C})(E):m(E,E.length)}function p(g){var v=this._events;if(v!==void 0){var b=v[g];if(typeof b=="function")return 1;if(b!==void 0)return b.length}return 0}function m(g,v){for(var b=new Array(v),T=0;T<v;++T)b[T]=g[T];return b}function k(g,v,b,T){if(typeof g.on=="function")T.once?g.once(v,b):g.on(v,b);else{if(typeof g.addEventListener!="function")throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof g);g.addEventListener(v,(function E(S){T.once&&g.removeEventListener(v,E),b(S)}))}}return Object.defineProperty(r,"defaultMaxListeners",{enumerable:!0,get:function(){return s},set:function(g){if(typeof g!="number"||g<0||n(g))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+g+".");s=g}}),r.init=function(){this._events!==void 0&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},r.prototype.setMaxListeners=function(g){if(typeof g!="number"||g<0||n(g))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+g+".");return this._maxListeners=g,this},r.prototype.getMaxListeners=function(){return o(this)},r.prototype.emit=function(g){for(var v=[],b=1;b<arguments.length;b++)v.push(arguments[b]);var T=g==="error",E=this._events;if(E!==void 0)T=T&&E.error===void 0;else if(!T)return!1;if(T){var S;if(v.length>0&&(S=v[0]),S instanceof Error)throw S;var C=new Error("Unhandled error."+(S?" ("+S.message+")":""));throw C.context=S,C}var I=E[g];if(I===void 0)return!1;if(typeof I=="function")t(I,this,v);else{var O=I.length,N=m(I,O);for(b=0;b<O;++b)t(N[b],this,v)}return!0},r.prototype.addListener=function(g,v){return c(this,g,v,!1)},r.prototype.on=r.prototype.addListener,r.prototype.prependListener=function(g,v){return c(this,g,v,!0)},r.prototype.once=function(g,v){return a(v),this.on(g,l(this,g,v)),this},r.prototype.prependOnceListener=function(g,v){return a(v),this.prependListener(g,l(this,g,v)),this},r.prototype.removeListener=function(g,v){var b,T,E,S,C;if(a(v),(T=this._events)===void 0)return this;if((b=T[g])===void 0)return this;if(b===v||b.listener===v)--this._eventsCount===0?this._events=Object.create(null):(delete T[g],T.removeListener&&this.emit("removeListener",g,b.listener||v));else if(typeof b!="function"){for(E=-1,S=b.length-1;S>=0;S--)if(b[S]===v||b[S].listener===v){C=b[S].listener,E=S;break}if(E<0)return this;E===0?b.shift():(function(I,O){for(;O+1<I.length;O++)I[O]=I[O+1];I.pop()})(b,E),b.length===1&&(T[g]=b[0]),T.removeListener!==void 0&&this.emit("removeListener",g,C||v)}return this},r.prototype.off=r.prototype.removeListener,r.prototype.removeAllListeners=function(g){var v,b,T;if((b=this._events)===void 0)return this;if(b.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):b[g]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete b[g]),this;if(arguments.length===0){var E,S=Object.keys(b);for(T=0;T<S.length;++T)(E=S[T])!=="removeListener"&&this.removeAllListeners(E);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(typeof(v=b[g])=="function")this.removeListener(g,v);else if(v!==void 0)for(T=v.length-1;T>=0;T--)this.removeListener(g,v[T]);return this},r.prototype.listeners=function(g){return h(this,g,!0)},r.prototype.rawListeners=function(g){return h(this,g,!1)},r.listenerCount=function(g,v){return typeof g.listenerCount=="function"?g.listenerCount(v):p.call(g,v)},r.prototype.listenerCount=p,r.prototype.eventNames=function(){return this._eventsCount>0?i(this._events):[]},qi.exports})();let oc=!0,cc=!0;function Kn(i,e,t){let n=i.match(e);return n&&n.length>=t&&parseFloat(n[t],10)}function Wt(i,e,t){if(!i.RTCPeerConnection)return;if(!Object.getOwnPropertyDescriptor(EventTarget.prototype,"addEventListener").writable)return void as("Unable to polyfill events");let n=i.RTCPeerConnection.prototype,r=n.addEventListener;n.addEventListener=function(a,o){if(a!==e)return r.apply(this,arguments);let c=d=>{let l=t(d);l&&(o.handleEvent?o.handleEvent(l):o(l))};return this._eventMap=this._eventMap||{},this._eventMap[e]||(this._eventMap[e]=new Map),this._eventMap[e].set(o,c),r.apply(this,[a,c])};let s=n.removeEventListener;n.removeEventListener=function(a,o){if(a!==e||!this._eventMap||!this._eventMap[e])return s.apply(this,arguments);if(!this._eventMap[e].has(o))return s.apply(this,arguments);let c=this._eventMap[e].get(o);return this._eventMap[e].delete(o),this._eventMap[e].size===0&&delete this._eventMap[e],Object.keys(this._eventMap).length===0&&delete this._eventMap,s.apply(this,[a,c])},Object.defineProperty(n,"on"+e,{get(){return this["_on"+e]},set(a){this["_on"+e]&&(this.removeEventListener(e,this["_on"+e]),delete this["_on"+e]),a&&this.addEventListener(e,this["_on"+e]=a)},enumerable:!0,configurable:!0})}function Gh(i){return typeof i!="boolean"?new Error("Argument type: "+typeof i+". Please use a boolean."):(oc=i,i?"adapter.js logging disabled":"adapter.js logging enabled")}function Jh(i){return typeof i!="boolean"?new Error("Argument type: "+typeof i+". Please use a boolean."):(cc=!i,"adapter.js deprecation warnings "+(i?"disabled":"enabled"))}function as(){if(typeof window=="object"){if(oc)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function os(i,e){cc&&console.warn(i+" is deprecated, please use "+e+" instead.")}function dc(i){return Object.prototype.toString.call(i)==="[object Object]"}function lc(i){return dc(i)?Object.keys(i).reduce((function(e,t){let n=dc(i[t]),r=n?lc(i[t]):i[t],s=n&&!Object.keys(r).length;return r===void 0||s?e:Object.assign(e,{[t]:r})}),{}):i}function cs(i,e,t){e&&!t.has(e.id)&&(t.set(e.id,e),Object.keys(e).forEach((n=>{n.endsWith("Id")?cs(i,i.get(e[n]),t):n.endsWith("Ids")&&e[n].forEach((r=>{cs(i,i.get(r),t)}))})))}function uc(i,e,t){let n=t?"outbound-rtp":"inbound-rtp",r=new Map;if(e===null)return r;let s=[];return i.forEach((a=>{a.type==="track"&&a.trackIdentifier===e.id&&s.push(a)})),s.forEach((a=>{i.forEach((o=>{o.type===n&&o.trackId===a.id&&cs(i,o,r)}))})),r}let hc=as;function pc(i,e){if(e.version>=64)return;let t=i&&i.navigator;if(!t.mediaDevices)return;let n=function(a){if(typeof a!="object"||a.mandatory||a.optional)return a;let o={};return Object.keys(a).forEach((c=>{if(c==="require"||c==="advanced"||c==="mediaSource")return;let d=typeof a[c]=="object"?a[c]:{ideal:a[c]};d.exact!==void 0&&typeof d.exact=="number"&&(d.min=d.max=d.exact);let l=function(h,p){return h?h+p.charAt(0).toUpperCase()+p.slice(1):p==="deviceId"?"sourceId":p};if(d.ideal!==void 0){o.optional=o.optional||[];let h={};typeof d.ideal=="number"?(h[l("min",c)]=d.ideal,o.optional.push(h),h={},h[l("max",c)]=d.ideal,o.optional.push(h)):(h[l("",c)]=d.ideal,o.optional.push(h))}d.exact!==void 0&&typeof d.exact!="number"?(o.mandatory=o.mandatory||{},o.mandatory[l("",c)]=d.exact):["min","max"].forEach((h=>{d[h]!==void 0&&(o.mandatory=o.mandatory||{},o.mandatory[l(h,c)]=d[h])}))})),a.advanced&&(o.optional=(o.optional||[]).concat(a.advanced)),o},r=function(a,o){if(e.version>=61)return o(a);if((a=JSON.parse(JSON.stringify(a)))&&typeof a.audio=="object"){let c=function(d,l,h){l in d&&!(h in d)&&(d[h]=d[l],delete d[l])};c((a=JSON.parse(JSON.stringify(a))).audio,"autoGainControl","googAutoGainControl"),c(a.audio,"noiseSuppression","googNoiseSuppression"),a.audio=n(a.audio)}if(a&&typeof a.video=="object"){let c=a.video.facingMode;c=c&&(typeof c=="object"?c:{ideal:c});let d=e.version<66;if(c&&(c.exact==="user"||c.exact==="environment"||c.ideal==="user"||c.ideal==="environment")&&(!t.mediaDevices.getSupportedConstraints||!t.mediaDevices.getSupportedConstraints().facingMode||d)){let l;if(delete a.video.facingMode,c.exact==="environment"||c.ideal==="environment"?l=["back","rear"]:c.exact!=="user"&&c.ideal!=="user"||(l=["front"]),l)return t.mediaDevices.enumerateDevices().then((h=>{let p=(h=h.filter((m=>m.kind==="videoinput"))).find((m=>l.some((k=>m.label.toLowerCase().includes(k)))));return!p&&h.length&&l.includes("back")&&(p=h[h.length-1]),p&&(a.video.deviceId=c.exact?{exact:p.deviceId}:{ideal:p.deviceId}),a.video=n(a.video),hc("chrome: "+JSON.stringify(a)),o(a)}))}a.video=n(a.video)}return hc("chrome: "+JSON.stringify(a)),o(a)},s=function(a){return e.version>=64?a:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[a.name]||a.name,message:a.message,constraint:a.constraint||a.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}};if(t.getUserMedia=function(a,o,c){r(a,(d=>{t.webkitGetUserMedia(d,o,(l=>{c&&c(s(l))}))}))}.bind(t),t.mediaDevices.getUserMedia){let a=t.mediaDevices.getUserMedia.bind(t.mediaDevices);t.mediaDevices.getUserMedia=function(o){return r(o,(c=>a(c).then((d=>{if(c.audio&&!d.getAudioTracks().length||c.video&&!d.getVideoTracks().length)throw d.getTracks().forEach((l=>{l.stop()})),new DOMException("","NotFoundError");return d}),(d=>Promise.reject(s(d))))))}}}function mc(i){i.MediaStream=i.MediaStream||i.webkitMediaStream}function gc(i,e){if(!(e.version>102))if(typeof i=="object"&&i.RTCPeerConnection&&!("ontrack"in i.RTCPeerConnection.prototype)){Object.defineProperty(i.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(n){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=n)},enumerable:!0,configurable:!0});let t=i.RTCPeerConnection.prototype.setRemoteDescription;i.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=n=>{n.stream.addEventListener("addtrack",(r=>{let s;s=i.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((o=>o.track&&o.track.id===r.track.id)):{track:r.track};let a=new Event("track");a.track=r.track,a.receiver=s,a.transceiver={receiver:s},a.streams=[n.stream],this.dispatchEvent(a)})),n.stream.getTracks().forEach((r=>{let s;s=i.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((o=>o.track&&o.track.id===r.id)):{track:r};let a=new Event("track");a.track=r,a.receiver=s,a.transceiver={receiver:s},a.streams=[n.stream],this.dispatchEvent(a)}))},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else Wt(i,"track",(t=>(t.transceiver||Object.defineProperty(t,"transceiver",{value:{receiver:t.receiver}}),t)))}function fc(i){if(typeof i=="object"&&i.RTCPeerConnection&&!("getSenders"in i.RTCPeerConnection.prototype)&&"createDTMFSender"in i.RTCPeerConnection.prototype){let e=function(r,s){return{track:s,get dtmf(){return this._dtmf===void 0&&(s.kind==="audio"?this._dtmf=r.createDTMFSender(s):this._dtmf=null),this._dtmf},_pc:r}};if(!i.RTCPeerConnection.prototype.getSenders){i.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};let r=i.RTCPeerConnection.prototype.addTrack;i.RTCPeerConnection.prototype.addTrack=function(a,o){let c=r.apply(this,arguments);return c||(c=e(this,a),this._senders.push(c)),c};let s=i.RTCPeerConnection.prototype.removeTrack;i.RTCPeerConnection.prototype.removeTrack=function(a){s.apply(this,arguments);let o=this._senders.indexOf(a);o!==-1&&this._senders.splice(o,1)}}let t=i.RTCPeerConnection.prototype.addStream;i.RTCPeerConnection.prototype.addStream=function(r){this._senders=this._senders||[],t.apply(this,[r]),r.getTracks().forEach((s=>{this._senders.push(e(this,s))}))};let n=i.RTCPeerConnection.prototype.removeStream;i.RTCPeerConnection.prototype.removeStream=function(r){this._senders=this._senders||[],n.apply(this,[r]),r.getTracks().forEach((s=>{let a=this._senders.find((o=>o.track===s));a&&this._senders.splice(this._senders.indexOf(a),1)}))}}else if(typeof i=="object"&&i.RTCPeerConnection&&"getSenders"in i.RTCPeerConnection.prototype&&"createDTMFSender"in i.RTCPeerConnection.prototype&&i.RTCRtpSender&&!("dtmf"in i.RTCRtpSender.prototype)){let e=i.RTCPeerConnection.prototype.getSenders;i.RTCPeerConnection.prototype.getSenders=function(){let t=e.apply(this,[]);return t.forEach((n=>n._pc=this)),t},Object.defineProperty(i.RTCRtpSender.prototype,"dtmf",{get(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function vc(i,e){if(e.version>=67||!(typeof i=="object"&&i.RTCPeerConnection&&i.RTCRtpSender&&i.RTCRtpReceiver))return;if(!("getStats"in i.RTCRtpSender.prototype)){let n=i.RTCPeerConnection.prototype.getSenders;n&&(i.RTCPeerConnection.prototype.getSenders=function(){let s=n.apply(this,[]);return s.forEach((a=>a._pc=this)),s});let r=i.RTCPeerConnection.prototype.addTrack;r&&(i.RTCPeerConnection.prototype.addTrack=function(){let s=r.apply(this,arguments);return s._pc=this,s}),i.RTCRtpSender.prototype.getStats=function(){let s=this;return this._pc.getStats().then((a=>uc(a,s.track,!0)))}}if(!("getStats"in i.RTCRtpReceiver.prototype)){let n=i.RTCPeerConnection.prototype.getReceivers;n&&(i.RTCPeerConnection.prototype.getReceivers=function(){let r=n.apply(this,[]);return r.forEach((s=>s._pc=this)),r}),Wt(i,"track",(r=>(r.receiver._pc=r.srcElement,r))),i.RTCRtpReceiver.prototype.getStats=function(){let r=this;return this._pc.getStats().then((s=>uc(s,r.track,!1)))}}if(!("getStats"in i.RTCRtpSender.prototype)||!("getStats"in i.RTCRtpReceiver.prototype))return;let t=i.RTCPeerConnection.prototype.getStats;i.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof i.MediaStreamTrack){let n=arguments[0],r,s,a;return this.getSenders().forEach((o=>{o.track===n&&(r?a=!0:r=o)})),this.getReceivers().forEach((o=>(o.track===n&&(s?a=!0:s=o),o.track===n))),a||r&&s?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):r?r.getStats():s?s.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function kc(i){i.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map((s=>this._shimmedLocalStreams[s][0]))};let e=i.RTCPeerConnection.prototype.addTrack;i.RTCPeerConnection.prototype.addTrack=function(s,a){if(!a)return e.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};let o=e.apply(this,arguments);return this._shimmedLocalStreams[a.id]?this._shimmedLocalStreams[a.id].indexOf(o)===-1&&this._shimmedLocalStreams[a.id].push(o):this._shimmedLocalStreams[a.id]=[a,o],o};let t=i.RTCPeerConnection.prototype.addStream;i.RTCPeerConnection.prototype.addStream=function(s){this._shimmedLocalStreams=this._shimmedLocalStreams||{},s.getTracks().forEach((c=>{if(this.getSenders().find((d=>d.track===c)))throw new DOMException("Track already exists.","InvalidAccessError")}));let a=this.getSenders();t.apply(this,arguments);let o=this.getSenders().filter((c=>a.indexOf(c)===-1));this._shimmedLocalStreams[s.id]=[s].concat(o)};let n=i.RTCPeerConnection.prototype.removeStream;i.RTCPeerConnection.prototype.removeStream=function(s){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[s.id],n.apply(this,arguments)};let r=i.RTCPeerConnection.prototype.removeTrack;i.RTCPeerConnection.prototype.removeTrack=function(s){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},s&&Object.keys(this._shimmedLocalStreams).forEach((a=>{let o=this._shimmedLocalStreams[a].indexOf(s);o!==-1&&this._shimmedLocalStreams[a].splice(o,1),this._shimmedLocalStreams[a].length===1&&delete this._shimmedLocalStreams[a]})),r.apply(this,arguments)}}function yc(i,e){if(!i.RTCPeerConnection)return;if(i.RTCPeerConnection.prototype.addTrack&&e.version>=65)return kc(i);let t=i.RTCPeerConnection.prototype.getLocalStreams;i.RTCPeerConnection.prototype.getLocalStreams=function(){let c=t.apply(this);return this._reverseStreams=this._reverseStreams||{},c.map((d=>this._reverseStreams[d.id]))};let n=i.RTCPeerConnection.prototype.addStream;i.RTCPeerConnection.prototype.addStream=function(c){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},c.getTracks().forEach((d=>{if(this.getSenders().find((l=>l.track===d)))throw new DOMException("Track already exists.","InvalidAccessError")})),!this._reverseStreams[c.id]){let d=new i.MediaStream(c.getTracks());this._streams[c.id]=d,this._reverseStreams[d.id]=c,c=d}n.apply(this,[c])};let r=i.RTCPeerConnection.prototype.removeStream;function s(c,d){let l=d.sdp;return Object.keys(c._reverseStreams||[]).forEach((h=>{let p=c._reverseStreams[h],m=c._streams[p.id];l=l.replace(new RegExp(m.id,"g"),p.id)})),new RTCSessionDescription({type:d.type,sdp:l})}i.RTCPeerConnection.prototype.removeStream=function(c){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},r.apply(this,[this._streams[c.id]||c]),delete this._reverseStreams[this._streams[c.id]?this._streams[c.id].id:c.id],delete this._streams[c.id]},i.RTCPeerConnection.prototype.addTrack=function(c,d){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");let l=[].slice.call(arguments,1);if(l.length!==1||!l[0].getTracks().find((p=>p===c)))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((p=>p.track===c)))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};let h=this._streams[d.id];if(h)h.addTrack(c),Promise.resolve().then((()=>{this.dispatchEvent(new Event("negotiationneeded"))}));else{let p=new i.MediaStream([c]);this._streams[d.id]=p,this._reverseStreams[p.id]=d,this.addStream(p)}return this.getSenders().find((p=>p.track===c))},["createOffer","createAnswer"].forEach((function(c){let d=i.RTCPeerConnection.prototype[c],l={[c](){let h=arguments;return arguments.length&&typeof arguments[0]=="function"?d.apply(this,[p=>{let m=s(this,p);h[0].apply(null,[m])},p=>{h[1]&&h[1].apply(null,p)},arguments[2]]):d.apply(this,arguments).then((p=>s(this,p)))}};i.RTCPeerConnection.prototype[c]=l[c]}));let a=i.RTCPeerConnection.prototype.setLocalDescription;i.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=(function(c,d){let l=d.sdp;return Object.keys(c._reverseStreams||[]).forEach((h=>{let p=c._reverseStreams[h],m=c._streams[p.id];l=l.replace(new RegExp(p.id,"g"),m.id)})),new RTCSessionDescription({type:d.type,sdp:l})})(this,arguments[0]),a.apply(this,arguments)):a.apply(this,arguments)};let o=Object.getOwnPropertyDescriptor(i.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(i.RTCPeerConnection.prototype,"localDescription",{get(){let c=o.get.apply(this);return c.type===""?c:s(this,c)}}),i.RTCPeerConnection.prototype.removeTrack=function(c){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!c._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(c._pc!==this)throw new DOMException("Sender was not created by this connection.","InvalidAccessError");let d;this._streams=this._streams||{},Object.keys(this._streams).forEach((l=>{this._streams[l].getTracks().find((h=>c.track===h))&&(d=this._streams[l])})),d&&(d.getTracks().length===1?this.removeStream(this._reverseStreams[d.id]):d.removeTrack(c.track),this.dispatchEvent(new Event("negotiationneeded")))}}function ds(i,e){!i.RTCPeerConnection&&i.webkitRTCPeerConnection&&(i.RTCPeerConnection=i.webkitRTCPeerConnection),i.RTCPeerConnection&&e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){let n=i.RTCPeerConnection.prototype[t],r={[t](){return arguments[0]=new(t==="addIceCandidate"?i.RTCIceCandidate:i.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}};i.RTCPeerConnection.prototype[t]=r[t]}))}function bc(i,e){e.version>102||Wt(i,"negotiationneeded",(t=>{let n=t.target;if(!(e.version<72||n.getConfiguration&&n.getConfiguration().sdpSemantics==="plan-b")||n.signalingState==="stable")return t}))}var Tc=Object.freeze({__proto__:null,fixNegotiationNeeded:bc,shimAddTrackRemoveTrack:yc,shimAddTrackRemoveTrackWithNative:kc,shimGetSendersWithDtmf:fc,shimGetUserMedia:pc,shimMediaStream:mc,shimOnTrack:gc,shimPeerConnection:ds,shimSenderReceiverGetStats:vc});function Sc(i,e){let t=i&&i.navigator;if(!t.mediaDevices)return;let n=i&&i.MediaStreamTrack;if(t.getUserMedia=function(r,s,a){os("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),t.mediaDevices.getUserMedia(r).then(s,a)},!(e.version>55&&"autoGainControl"in t.mediaDevices.getSupportedConstraints())){let r=function(a,o,c){o in a&&!(c in a)&&(a[c]=a[o],delete a[o])},s=t.mediaDevices.getUserMedia.bind(t.mediaDevices);if(t.mediaDevices.getUserMedia=function(a){return typeof a=="object"&&typeof a.audio=="object"&&(a=JSON.parse(JSON.stringify(a)),r(a.audio,"autoGainControl","mozAutoGainControl"),r(a.audio,"noiseSuppression","mozNoiseSuppression")),s(a)},n&&n.prototype.getSettings){let a=n.prototype.getSettings;n.prototype.getSettings=function(){let o=a.apply(this,arguments);return r(o,"mozAutoGainControl","autoGainControl"),r(o,"mozNoiseSuppression","noiseSuppression"),o}}if(n&&n.prototype.applyConstraints){let a=n.prototype.applyConstraints;n.prototype.applyConstraints=function(o){return this.kind==="audio"&&typeof o=="object"&&(o=JSON.parse(JSON.stringify(o)),r(o,"autoGainControl","mozAutoGainControl"),r(o,"noiseSuppression","mozNoiseSuppression")),a.apply(this,[o])}}}}function Ec(i){typeof i=="object"&&i.RTCTrackEvent&&"receiver"in i.RTCTrackEvent.prototype&&!("transceiver"in i.RTCTrackEvent.prototype)&&Object.defineProperty(i.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function ls(i,e){typeof i=="object"&&(i.RTCPeerConnection||i.mozRTCPeerConnection)&&(!i.RTCPeerConnection&&i.mozRTCPeerConnection&&(i.RTCPeerConnection=i.mozRTCPeerConnection),e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){let n=i.RTCPeerConnection.prototype[t],r={[t](){return arguments[0]=new(t==="addIceCandidate"?i.RTCIceCandidate:i.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}};i.RTCPeerConnection.prototype[t]=r[t]})))}function Cc(i,e){if(typeof i!="object"||!i.RTCPeerConnection&&!i.mozRTCPeerConnection||e.version>=151)return;let t={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},n=i.RTCPeerConnection.prototype.getStats;i.RTCPeerConnection.prototype.getStats=function(){let r=Array.prototype.slice.call(arguments),s=r[0],a=r[1],o=r[2];return this.signalingState==="closed"?Promise.resolve(new Map):n.apply(this,[s||null]).then((c=>{if(e.version<53&&!a)try{c.forEach((d=>{d.type=t[d.type]||d.type}))}catch(d){if(d.name!=="TypeError")throw d;c.forEach(((l,h)=>{c.set(h,Object.assign({},l,{type:t[l.type]||l.type}))}))}return c})).then(a,o)}}function wc(i){if(typeof i!="object"||!i.RTCPeerConnection||!i.RTCRtpSender||i.RTCRtpSender&&"getStats"in i.RTCRtpSender.prototype)return;let e=i.RTCPeerConnection.prototype.getSenders;e&&(i.RTCPeerConnection.prototype.getSenders=function(){let n=e.apply(this,[]);return n.forEach((r=>r._pc=this)),n});let t=i.RTCPeerConnection.prototype.addTrack;t&&(i.RTCPeerConnection.prototype.addTrack=function(){let n=t.apply(this,arguments);return n._pc=this,n}),i.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function Rc(i){if(typeof i!="object"||!i.RTCPeerConnection||!i.RTCRtpSender||i.RTCRtpSender&&"getStats"in i.RTCRtpReceiver.prototype)return;let e=i.RTCPeerConnection.prototype.getReceivers;e&&(i.RTCPeerConnection.prototype.getReceivers=function(){let t=e.apply(this,[]);return t.forEach((n=>n._pc=this)),t}),Wt(i,"track",(t=>(t.receiver._pc=t.srcElement,t))),i.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function Pc(i){i.RTCPeerConnection&&!("removeStream"in i.RTCPeerConnection.prototype)&&(i.RTCPeerConnection.prototype.removeStream=function(e){os("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function Ic(i){i.DataChannel&&!i.RTCDataChannel&&(i.RTCDataChannel=i.DataChannel)}function Mc(i,e){if(typeof i!="object"||!i.RTCPeerConnection||e.version>=110)return;let t=i.RTCPeerConnection.prototype.addTransceiver;t&&(i.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let n=arguments[1]&&arguments[1].sendEncodings;n===void 0&&(n=[]),n=[...n];let r=n.length>0;r&&n.forEach((a=>{if("rid"in a&&!/^[a-z0-9]{0,16}$/i.test(a.rid))throw new TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in a&&!(parseFloat(a.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in a&&!(parseFloat(a.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")}));let s=t.apply(this,arguments);if(r){let a=s.sender,o=a.getParameters();(!("encodings"in o)||o.encodings.length===1&&Object.keys(o.encodings[0]).length===0)&&(o.encodings=n,a.sendEncodings=n,this.setParametersPromises.push(a.setParameters(o).then((()=>{delete a.sendEncodings})).catch((()=>{delete a.sendEncodings}))))}return s})}function Dc(i,e){if(typeof i!="object"||!i.RTCRtpSender||e.version>=110)return;let t=i.RTCRtpSender.prototype.getParameters;t&&(i.RTCRtpSender.prototype.getParameters=function(){let n=t.apply(this,arguments);return"encodings"in n||(n.encodings=[].concat(this.sendEncodings||[{}])),n})}function _c(i,e){if(typeof i!="object"||!i.RTCPeerConnection||e.version>=110)return;let t=i.RTCPeerConnection.prototype.createOffer;i.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 Oc(i,e){if(typeof i!="object"||!i.RTCPeerConnection||e.version>=110)return;let t=i.RTCPeerConnection.prototype.createAnswer;i.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 Ac=Object.freeze({__proto__:null,shimAddTransceiver:Mc,shimCreateAnswer:Oc,shimCreateOffer:_c,shimGetDisplayMedia:function(i,e){i.navigator.mediaDevices&&(i.navigator.mediaDevices&&"getDisplayMedia"in i.navigator.mediaDevices||(i.navigator.mediaDevices.getDisplayMedia=function(t){if(!t||!t.video){let n=new DOMException("getDisplayMedia without video constraints is undefined");return n.name="NotFoundError",n.code=8,Promise.reject(n)}return t.video===!0?t.video={mediaSource:e}:t.video.mediaSource=e,i.navigator.mediaDevices.getUserMedia(t)}))},shimGetParameters:Dc,shimGetStats:Cc,shimGetUserMedia:Sc,shimOnTrack:Ec,shimPeerConnection:ls,shimRTCDataChannel:Ic,shimReceiverGetStats:Rc,shimRemoveStream:Pc,shimSenderGetStats:wc});function Lc(i){if(typeof i=="object"&&i.RTCPeerConnection){if("getLocalStreams"in i.RTCPeerConnection.prototype||(i.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in i.RTCPeerConnection.prototype)){let e=i.RTCPeerConnection.prototype.addTrack;i.RTCPeerConnection.prototype.addStream=function(t){this._localStreams||(this._localStreams=[]),this._localStreams.includes(t)||this._localStreams.push(t),t.getAudioTracks().forEach((n=>e.call(this,n,t))),t.getVideoTracks().forEach((n=>e.call(this,n,t)))},i.RTCPeerConnection.prototype.addTrack=function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),s=1;s<n;s++)r[s-1]=arguments[s];return r&&r.forEach((a=>{this._localStreams?this._localStreams.includes(a)||this._localStreams.push(a):this._localStreams=[a]})),e.apply(this,arguments)}}"removeStream"in i.RTCPeerConnection.prototype||(i.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);let t=this._localStreams.indexOf(e);if(t===-1)return;this._localStreams.splice(t,1);let n=e.getTracks();this.getSenders().forEach((r=>{n.includes(r.track)&&this.removeTrack(r)}))})}}function Nc(i){if(typeof i=="object"&&i.RTCPeerConnection&&("getRemoteStreams"in i.RTCPeerConnection.prototype||(i.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in i.RTCPeerConnection.prototype))){Object.defineProperty(i.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(t){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=t),this.addEventListener("track",this._onaddstreampoly=n=>{n.streams.forEach((r=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(r))return;this._remoteStreams.push(r);let s=new Event("addstream");s.stream=r,this.dispatchEvent(s)}))})}});let e=i.RTCPeerConnection.prototype.setRemoteDescription;i.RTCPeerConnection.prototype.setRemoteDescription=function(){let t=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(n){n.streams.forEach((r=>{if(t._remoteStreams||(t._remoteStreams=[]),t._remoteStreams.indexOf(r)>=0)return;t._remoteStreams.push(r);let s=new Event("addstream");s.stream=r,t.dispatchEvent(s)}))}),e.apply(t,arguments)}}}function xc(i){if(typeof i!="object"||!i.RTCPeerConnection)return;let e=i.RTCPeerConnection.prototype,t=e.createOffer,n=e.createAnswer,r=e.setLocalDescription,s=e.setRemoteDescription,a=e.addIceCandidate;e.createOffer=function(c,d){let l=arguments.length>=2?arguments[2]:arguments[0],h=t.apply(this,[l]);return d?(h.then(c,d),Promise.resolve()):h},e.createAnswer=function(c,d){let l=arguments.length>=2?arguments[2]:arguments[0],h=n.apply(this,[l]);return d?(h.then(c,d),Promise.resolve()):h};let o=function(c,d,l){let h=r.apply(this,[c]);return l?(h.then(d,l),Promise.resolve()):h};e.setLocalDescription=o,o=function(c,d,l){let h=s.apply(this,[c]);return l?(h.then(d,l),Promise.resolve()):h},e.setRemoteDescription=o,o=function(c,d,l){let h=a.apply(this,[c]);return l?(h.then(d,l),Promise.resolve()):h},e.addIceCandidate=o}function Uc(i){let e=i&&i.navigator;if(e.mediaDevices&&e.mediaDevices.getUserMedia){let t=e.mediaDevices,n=t.getUserMedia.bind(t);e.mediaDevices.getUserMedia=r=>n(Fc(r))}!e.getUserMedia&&e.mediaDevices&&e.mediaDevices.getUserMedia&&(e.getUserMedia=function(t,n,r){e.mediaDevices.getUserMedia(t).then(n,r)}.bind(e))}function Fc(i){return i&&i.video!==void 0?Object.assign({},i,{video:lc(i.video)}):i}function Bc(i){if(!i.RTCPeerConnection)return;let e=i.RTCPeerConnection;i.RTCPeerConnection=function(t,n){if(t&&t.iceServers){let r=[];for(let s=0;s<t.iceServers.length;s++){let a=t.iceServers[s];a.urls===void 0&&a.url?(os("RTCIceServer.url","RTCIceServer.urls"),a=JSON.parse(JSON.stringify(a)),a.urls=a.url,delete a.url,r.push(a)):r.push(t.iceServers[s])}t.iceServers=r}return new e(t,n)},i.RTCPeerConnection.prototype=e.prototype,"generateCertificate"in e&&Object.defineProperty(i.RTCPeerConnection,"generateCertificate",{get:()=>e.generateCertificate})}function jc(i){typeof i=="object"&&i.RTCTrackEvent&&"receiver"in i.RTCTrackEvent.prototype&&!("transceiver"in i.RTCTrackEvent.prototype)&&Object.defineProperty(i.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function qc(i){let e=i.RTCPeerConnection.prototype.createOffer;i.RTCPeerConnection.prototype.createOffer=function(t){if(t){t.offerToReceiveAudio!==void 0&&(t.offerToReceiveAudio=!!t.offerToReceiveAudio);let n=this.getTransceivers().find((s=>s.receiver.track.kind==="audio"));t.offerToReceiveAudio===!1&&n?n.direction==="sendrecv"?n.setDirection?n.setDirection("sendonly"):n.direction="sendonly":n.direction==="recvonly"&&(n.setDirection?n.setDirection("inactive"):n.direction="inactive"):t.offerToReceiveAudio!==!0||n||this.addTransceiver("audio",{direction:"recvonly"}),t.offerToReceiveVideo!==void 0&&(t.offerToReceiveVideo=!!t.offerToReceiveVideo);let r=this.getTransceivers().find((s=>s.receiver.track.kind==="video"));t.offerToReceiveVideo===!1&&r?r.direction==="sendrecv"?r.setDirection?r.setDirection("sendonly"):r.direction="sendonly":r.direction==="recvonly"&&(r.setDirection?r.setDirection("inactive"):r.direction="inactive"):t.offerToReceiveVideo!==!0||r||this.addTransceiver("video",{direction:"recvonly"})}return e.apply(this,arguments)}}function Vc(i){typeof i!="object"||i.AudioContext||(i.AudioContext=i.webkitAudioContext)}var Wc,Hc=Object.freeze({__proto__:null,shimAudioContext:Vc,shimCallbacksAPI:xc,shimConstraints:Fc,shimCreateOfferLegacy:qc,shimGetUserMedia:Uc,shimLocalStreamsAPI:Lc,shimRTCIceServerUrls:Bc,shimRemoteStreamsAPI:Nc,shimTrackEventTransceiver:jc}),Kc={exports:{}},zc=(Wc||(Wc=1,(function(i){let e={generateIdentifier:function(){return Math.random().toString(36).substring(2,12)}};e.localCName=e.generateIdentifier(),e.splitLines=function(t){return t.trim().split(`
`).map((n=>n.trim()))},e.splitSections=function(t){return t.split(`
m=`).map(((n,r)=>(r>0?"m="+n:n).trim()+`\r
`))},e.getDescription=function(t){let n=e.splitSections(t);return n&&n[0]},e.getMediaSections=function(t){let n=e.splitSections(t);return n.shift(),n},e.matchPrefix=function(t,n){return e.splitLines(t).filter((r=>r.indexOf(n)===0))},e.parseCandidate=function(t){let n;n=t.indexOf("a=candidate:")===0?t.substring(12).split(" "):t.substring(10).split(" ");let r={foundation:n[0],component:{1:"rtp",2:"rtcp"}[n[1]]||n[1],protocol:n[2].toLowerCase(),priority:parseInt(n[3],10),ip:n[4],address:n[4],port:parseInt(n[5],10),type:n[7]};for(let s=8;s<n.length;s+=2)switch(n[s]){case"raddr":r.relatedAddress=n[s+1];break;case"rport":r.relatedPort=parseInt(n[s+1],10);break;case"tcptype":r.tcpType=n[s+1];break;case"ufrag":r.ufrag=n[s+1],r.usernameFragment=n[s+1];break;default:r[n[s]]===void 0&&(r[n[s]]=n[s+1])}return r},e.writeCandidate=function(t){let n=[];n.push(t.foundation);let r=t.component;r==="rtp"?n.push(1):r==="rtcp"?n.push(2):n.push(r),n.push(t.protocol.toUpperCase()),n.push(t.priority),n.push(t.address||t.ip),n.push(t.port);let s=t.type;return n.push("typ"),n.push(s),s!=="host"&&t.relatedAddress&&t.relatedPort!==void 0&&(n.push("raddr"),n.push(t.relatedAddress),n.push("rport"),n.push(t.relatedPort)),t.tcpType&&t.protocol.toLowerCase()==="tcp"&&(n.push("tcptype"),n.push(t.tcpType)),(t.usernameFragment||t.ufrag)&&(n.push("ufrag"),n.push(t.usernameFragment||t.ufrag)),"candidate:"+n.join(" ")},e.parseIceOptions=function(t){return t.substring(14).split(" ")},e.parseRtpMap=function(t){let n=t.substring(9).split(" "),r={payloadType:parseInt(n.shift(),10)};return n=n[0].split("/"),r.name=n[0],r.clockRate=parseInt(n[1],10),r.channels=n.length===3?parseInt(n[2],10):1,r.numChannels=r.channels,r},e.writeRtpMap=function(t){let n=t.payloadType;t.preferredPayloadType!==void 0&&(n=t.preferredPayloadType);let r=t.channels||t.numChannels||1;return"a=rtpmap:"+n+" "+t.name+"/"+t.clockRate+(r!==1?"/"+r:"")+`\r
`},e.parseExtmap=function(t){let n=t.substring(9).split(" ");return{id:parseInt(n[0],10),direction:n[0].indexOf("/")>0?n[0].split("/")[1]:"sendrecv",uri:n[1],attributes:n.slice(2).join(" ")}},e.writeExtmap=function(t){return"a=extmap:"+(t.id||t.preferredId)+(t.direction&&t.direction!=="sendrecv"?"/"+t.direction:"")+" "+t.uri+(t.attributes?" "+t.attributes:"")+`\r
`},e.parseFmtp=function(t){let n={},r,s=t.substring(t.indexOf(" ")+1).split(";");for(let a=0;a<s.length;a++)r=s[a].trim().split("="),n[r[0].trim()]=r[1];return n},e.writeFmtp=function(t){let n="",r=t.payloadType;if(t.preferredPayloadType!==void 0&&(r=t.preferredPayloadType),t.parameters&&Object.keys(t.parameters).length){let s=[];Object.keys(t.parameters).forEach((a=>{t.parameters[a]!==void 0?s.push(a+"="+t.parameters[a]):s.push(a)})),n+="a=fmtp:"+r+" "+s.join(";")+`\r
`}return n},e.parseRtcpFb=function(t){let n=t.substring(t.indexOf(" ")+1).split(" ");return{type:n.shift(),parameter:n.join(" ")}},e.writeRtcpFb=function(t){let n="",r=t.payloadType;return t.preferredPayloadType!==void 0&&(r=t.preferredPayloadType),t.rtcpFeedback&&t.rtcpFeedback.length&&t.rtcpFeedback.forEach((s=>{n+="a=rtcp-fb:"+r+" "+s.type+(s.parameter&&s.parameter.length?" "+s.parameter:"")+`\r
`})),n},e.parseSsrcMedia=function(t){let n=t.indexOf(" "),r={ssrc:parseInt(t.substring(7,n),10)},s=t.indexOf(":",n);return s>-1?(r.attribute=t.substring(n+1,s),r.value=t.substring(s+1)):r.attribute=t.substring(n+1),r},e.parseSsrcGroup=function(t){let n=t.substring(13).split(" ");return{semantics:n.shift(),ssrcs:n.map((r=>parseInt(r,10)))}},e.getMid=function(t){let n=e.matchPrefix(t,"a=mid:")[0];if(n)return n.substring(6)},e.parseFingerprint=function(t){let n=t.substring(14).split(" ");return{algorithm:n[0].toLowerCase(),value:n[1].toUpperCase()}},e.getDtlsParameters=function(t,n){return{role:"auto",fingerprints:e.matchPrefix(t+n,"a=fingerprint:").map(e.parseFingerprint)}},e.writeDtlsParameters=function(t,n){let r="a=setup:"+n+`\r
`;return t.fingerprints.forEach((s=>{r+="a=fingerprint:"+s.algorithm+" "+s.value+`\r
`})),r},e.parseCryptoLine=function(t){let n=t.substring(9).split(" ");return{tag:parseInt(n[0],10),cryptoSuite:n[1],keyParams:n[2],sessionParams:n.slice(3)}},e.writeCryptoLine=function(t){return"a=crypto:"+t.tag+" "+t.cryptoSuite+" "+(typeof t.keyParams=="object"?e.writeCryptoKeyParams(t.keyParams):t.keyParams)+(t.sessionParams?" "+t.sessionParams.join(" "):"")+`\r
`},e.parseCryptoKeyParams=function(t){if(t.indexOf("inline:")!==0)return null;let n=t.substring(7).split("|");return{keyMethod:"inline",keySalt:n[0],lifeTime:n[1],mkiValue:n[2]?n[2].split(":")[0]:void 0,mkiLength:n[2]?n[2].split(":")[1]:void 0}},e.writeCryptoKeyParams=function(t){return t.keyMethod+":"+t.keySalt+(t.lifeTime?"|"+t.lifeTime:"")+(t.mkiValue&&t.mkiLength?"|"+t.mkiValue+":"+t.mkiLength:"")},e.getCryptoParameters=function(t,n){return e.matchPrefix(t+n,"a=crypto:").map(e.parseCryptoLine)},e.getIceParameters=function(t,n){let r=e.matchPrefix(t+n,"a=ice-ufrag:")[0],s=e.matchPrefix(t+n,"a=ice-pwd:")[0];return r&&s?{usernameFragment:r.substring(12),password:s.substring(10)}:null},e.writeIceParameters=function(t){let n="a=ice-ufrag:"+t.usernameFragment+`\r
a=ice-pwd:`+t.password+`\r
`;return t.iceLite&&(n+=`a=ice-lite\r
`),n},e.parseRtpParameters=function(t){let n={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},r=e.splitLines(t)[0].split(" ");n.profile=r[2];for(let a=3;a<r.length;a++){let o=r[a],c=e.matchPrefix(t,"a=rtpmap:"+o+" ")[0];if(c){let d=e.parseRtpMap(c),l=e.matchPrefix(t,"a=fmtp:"+o+" ");switch(d.parameters=l.length?e.parseFmtp(l[0]):{},d.rtcpFeedback=e.matchPrefix(t,"a=rtcp-fb:"+o+" ").map(e.parseRtcpFb),n.codecs.push(d),d.name.toUpperCase()){case"RED":case"ULPFEC":n.fecMechanisms.push(d.name.toUpperCase())}}}e.matchPrefix(t,"a=extmap:").forEach((a=>{n.headerExtensions.push(e.parseExtmap(a))}));let s=e.matchPrefix(t,"a=rtcp-fb:* ").map(e.parseRtcpFb);return n.codecs.forEach((a=>{s.forEach((o=>{a.rtcpFeedback.find((c=>c.type===o.type&&c.parameter===o.parameter))||a.rtcpFeedback.push(o)}))})),n},e.writeRtpDescription=function(t,n){let r="";r+="m="+t+" ",r+=n.codecs.length>0?"9":"0",r+=" "+(n.profile||"UDP/TLS/RTP/SAVPF")+" ",r+=n.codecs.map((a=>a.preferredPayloadType!==void 0?a.preferredPayloadType:a.payloadType)).join(" ")+`\r
`,r+=`c=IN IP4 0.0.0.0\r
`,r+=`a=rtcp:9 IN IP4 0.0.0.0\r
`,n.codecs.forEach((a=>{r+=e.writeRtpMap(a),r+=e.writeFmtp(a),r+=e.writeRtcpFb(a)}));let s=0;return n.codecs.forEach((a=>{a.maxptime>s&&(s=a.maxptime)})),s>0&&(r+="a=maxptime:"+s+`\r
`),n.headerExtensions&&n.headerExtensions.forEach((a=>{r+=e.writeExtmap(a)})),r},e.parseRtpEncodingParameters=function(t){let n=[],r=e.parseRtpParameters(t),s=r.fecMechanisms.indexOf("RED")!==-1,a=r.fecMechanisms.indexOf("ULPFEC")!==-1,o=e.matchPrefix(t,"a=ssrc:").map((p=>e.parseSsrcMedia(p))).filter((p=>p.attribute==="cname")),c=o.length>0&&o[0].ssrc,d,l=e.matchPrefix(t,"a=ssrc-group:FID").map((p=>p.substring(17).split(" ").map((m=>parseInt(m,10)))));l.length>0&&l[0].length>1&&l[0][0]===c&&(d=l[0][1]),r.codecs.forEach((p=>{if(p.name.toUpperCase()==="RTX"&&p.parameters.apt){let m={ssrc:c,codecPayloadType:parseInt(p.parameters.apt,10)};c&&d&&(m.rtx={ssrc:d}),n.push(m),s&&(m=JSON.parse(JSON.stringify(m)),m.fec={ssrc:c,mechanism:a?"red+ulpfec":"red"},n.push(m))}})),n.length===0&&c&&n.push({ssrc:c});let h=e.matchPrefix(t,"b=");return h.length&&(h=h[0].indexOf("b=TIAS:")===0?parseInt(h[0].substring(7),10):h[0].indexOf("b=AS:")===0?1e3*parseInt(h[0].substring(5),10)*.95-16e3:void 0,n.forEach((p=>{p.maxBitrate=h}))),n},e.parseRtcpParameters=function(t){let n={},r=e.matchPrefix(t,"a=ssrc:").map((o=>e.parseSsrcMedia(o))).filter((o=>o.attribute==="cname"))[0];r&&(n.cname=r.value,n.ssrc=r.ssrc);let s=e.matchPrefix(t,"a=rtcp-rsize");n.reducedSize=s.length>0,n.compound=s.length===0;let a=e.matchPrefix(t,"a=rtcp-mux");return n.mux=a.length>0,n},e.writeRtcpParameters=function(t){let n="";return t.reducedSize&&(n+=`a=rtcp-rsize\r
`),t.mux&&(n+=`a=rtcp-mux\r
`),t.ssrc!==void 0&&t.cname&&(n+="a=ssrc:"+t.ssrc+" cname:"+t.cname+`\r
`),n},e.parseMsid=function(t){let n,r=e.matchPrefix(t,"a=msid:");if(r.length===1)return n=r[0].substring(7).split(" "),{stream:n[0],track:n[1]};let s=e.matchPrefix(t,"a=ssrc:").map((a=>e.parseSsrcMedia(a))).filter((a=>a.attribute==="msid"));return s.length>0?(n=s[0].value.split(" "),{stream:n[0],track:n[1]}):void 0},e.parseSctpDescription=function(t){let n=e.parseMLine(t),r=e.matchPrefix(t,"a=max-message-size:"),s;r.length>0&&(s=parseInt(r[0].substring(19),10)),isNaN(s)&&(s=65536);let a=e.matchPrefix(t,"a=sctp-port:");if(a.length>0)return{port:parseInt(a[0].substring(12),10),protocol:n.fmt,maxMessageSize:s};let o=e.matchPrefix(t,"a=sctpmap:");if(o.length>0){let c=o[0].substring(10).split(" ");return{port:parseInt(c[0],10),protocol:c[1],maxMessageSize:s}}},e.writeSctpDescription=function(t,n){let r=[];return r=t.protocol!=="DTLS/SCTP"?["m="+t.kind+" 9 "+t.protocol+" "+n.protocol+`\r
`,`c=IN IP4 0.0.0.0\r
`,"a=sctp-port:"+n.port+`\r
`]:["m="+t.kind+" 9 "+t.protocol+" "+n.port+`\r
`,`c=IN IP4 0.0.0.0\r
`,"a=sctpmap:"+n.port+" "+n.protocol+` 65535\r
`],n.maxMessageSize!==void 0&&r.push("a=max-message-size:"+n.maxMessageSize+`\r
`),r.join("")},e.generateSessionId=function(){return Math.random().toString().substr(2,22)},e.writeSessionBoilerplate=function(t,n,r){let s,a=n!==void 0?n:2;return s=t||e.generateSessionId(),`v=0\r
o=`+(r||"thisisadapterortc")+" "+s+" "+a+` IN IP4 127.0.0.1\r
s=-\r
t=0 0\r
`},e.getDirection=function(t,n){let r=e.splitLines(t);for(let s=0;s<r.length;s++)switch(r[s]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return r[s].substring(2)}return n?e.getDirection(n):"sendrecv"},e.getKind=function(t){return e.splitLines(t)[0].split(" ")[0].substring(2)},e.isRejected=function(t){return t.split(" ",2)[1]==="0"},e.parseMLine=function(t){let n=e.splitLines(t)[0].substring(2).split(" ");return{kind:n[0],port:parseInt(n[1],10),protocol:n[2],fmt:n.slice(3).join(" ")}},e.parseOLine=function(t){let n=e.matchPrefix(t,"o=")[0].substring(2).split(" ");return{username:n[0],sessionId:n[1],sessionVersion:parseInt(n[2],10),netType:n[3],addressType:n[4],address:n[5]}},e.isValidSDP=function(t){if(typeof t!="string"||t.length===0)return!1;let n=e.splitLines(t);for(let r=0;r<n.length;r++)if(n[r].length<2||n[r].charAt(1)!=="=")return!1;return!0},i.exports=e})(Kc)),Kc.exports),pn=Vh(zc),Qh=w({__proto__:null,default:pn},[zc]);function Vi(i){if(!i.RTCIceCandidate||i.RTCIceCandidate&&"foundation"in i.RTCIceCandidate.prototype)return;let e=i.RTCIceCandidate;i.RTCIceCandidate=function(t){if(typeof t=="object"&&t.candidate&&t.candidate.indexOf("a=")===0&&((t=JSON.parse(JSON.stringify(t))).candidate=t.candidate.substring(2)),t.candidate&&t.candidate.length){let n=new e(t),r=pn.parseCandidate(t.candidate);for(let s in r)s in n||Object.defineProperty(n,s,{value:r[s]});return n.toJSON=function(){return{candidate:n.candidate,sdpMid:n.sdpMid,sdpMLineIndex:n.sdpMLineIndex,usernameFragment:n.usernameFragment}},n}return new e(t)},i.RTCIceCandidate.prototype=e.prototype,Wt(i,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new i.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function us(i){!i.RTCIceCandidate||i.RTCIceCandidate&&"relayProtocol"in i.RTCIceCandidate.prototype||Wt(i,"icecandidate",(e=>{if(e.candidate){let t=pn.parseCandidate(e.candidate.candidate);t.type==="relay"&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[t.priority>>24])}return e}))}function Wi(i,e){if(!i.RTCPeerConnection||e.browser==="chrome"&&e.version>102||e.browser==="firefox"&&e.version>=113)return;"sctp"in i.RTCPeerConnection.prototype||Object.defineProperty(i.RTCPeerConnection.prototype,"sctp",{get(){return this._sctp===void 0?null:this._sctp}});let t=i.RTCPeerConnection.prototype.setRemoteDescription;i.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,e.browser==="chrome"&&e.version>=76&&this.getConfiguration().sdpSemantics==="plan-b"&&Object.defineProperty(this,"sctp",{get(){return this._sctp===void 0?null:this._sctp},enumerable:!0,configurable:!0}),(function(n){if(!n||!n.sdp)return!1;let r=pn.splitSections(n.sdp);return r.shift(),r.some((s=>{let a=pn.parseMLine(s);return a&&a.kind==="application"&&a.protocol.indexOf("SCTP")!==-1}))})(arguments[0])){let n=(function(c){let d=c.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(d===null||d.length<2)return-1;let l=parseInt(d[1],10);return l!=l?-1:l})(arguments[0]),r=(function(c){let d=65536;return e.browser==="firefox"&&(d=e.version<57?c===-1?16384:2147483637:e.version<60?e.version===57?65535:65536:2147483637),d})(n),s=(function(c,d){let l=65536;e.browser==="firefox"&&e.version===57&&(l=65535);let h=pn.matchPrefix(c.sdp,"a=max-message-size:");return h.length>0?l=parseInt(h[0].substring(19),10):e.browser==="firefox"&&d!==-1&&(l=2147483637),l})(arguments[0],n),a;a=r===0&&s===0?Number.POSITIVE_INFINITY:r===0||s===0?Math.max(r,s):Math.min(r,s);let o={};Object.defineProperty(o,"maxMessageSize",{get:()=>a}),this._sctp=o}return t.apply(this,arguments)}}function Hi(i,e){if(!i.RTCPeerConnection||!("createDataChannel"in i.RTCPeerConnection.prototype)||e.browser==="chrome"&&e.version>=149||e.browser==="firefox"&&e.version>60)return;function t(r,s){let a=r.send;r.send=function(){let o=arguments[0],c=o.length||o.size||o.byteLength;if(r.readyState==="open"&&s.sctp&&c>s.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+s.sctp.maxMessageSize+" bytes)");return a.apply(r,arguments)}}let n=i.RTCPeerConnection.prototype.createDataChannel;i.RTCPeerConnection.prototype.createDataChannel=function(){let r=n.apply(this,arguments);return t(r,this),r},Wt(i,"datachannel",(r=>(t(r.channel,r.target),r)))}function hs(i){if(!i.RTCPeerConnection||"connectionState"in i.RTCPeerConnection.prototype)return;let e=i.RTCPeerConnection.prototype;Object.defineProperty(e,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(e,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(t){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),t&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=t)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach((t=>{let n=e[t];e[t]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=r=>{let s=r.target;if(s._lastConnectionState!==s.connectionState){s._lastConnectionState=s.connectionState;let a=new Event("connectionstatechange",r);s.dispatchEvent(a)}return r},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),n.apply(this,arguments)}}))}function ps(i,e){if(!i.RTCPeerConnection||e.browser==="chrome"&&e.version>=71||e.browser==="safari"&&e._safariVersion>=13.1)return;let t=i.RTCPeerConnection.prototype.setRemoteDescription;i.RTCPeerConnection.prototype.setRemoteDescription=function(n){if(n&&n.sdp&&n.sdp.indexOf(`
a=extmap-allow-mixed`)!==-1){let r=n.sdp.split(`
`).filter((s=>s.trim()!=="a=extmap-allow-mixed")).join(`
`);i.RTCSessionDescription&&n instanceof i.RTCSessionDescription?arguments[0]=new i.RTCSessionDescription({type:n.type,sdp:r}):n.sdp=r}return t.apply(this,arguments)}}function Ki(i,e){if(!i.RTCPeerConnection||!i.RTCPeerConnection.prototype)return;let t=i.RTCPeerConnection.prototype.addIceCandidate;t&&t.length!==0&&(i.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?(e.browser==="chrome"&&e.version<78||e.browser==="firefox"&&e.version<68||e.browser==="safari")&&arguments[0]&&arguments[0].candidate===""?Promise.resolve():t.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}function zi(i,e){if(!i.RTCPeerConnection||!i.RTCPeerConnection.prototype)return;let t=i.RTCPeerConnection.prototype.setLocalDescription;t&&t.length!==0&&(i.RTCPeerConnection.prototype.setLocalDescription=function(){let n=arguments[0]||{};if(typeof n!="object"||n.type&&n.sdp)return t.apply(this,arguments);if(n={type:n.type,sdp:n.sdp},!n.type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":n.type="offer";break;default:n.type="answer"}return n.sdp||n.type!=="offer"&&n.type!=="answer"?t.apply(this,[n]):(n.type==="offer"?this.createOffer:this.createAnswer).apply(this).then((r=>t.apply(this,[r])))})}var ms,Gc,Yh=Object.freeze({__proto__:null,removeExtmapAllowMixed:ps,shimAddIceCandidateNullOrEmpty:Ki,shimConnectionState:hs,shimMaxMessageSize:Wi,shimParameterlessSetLocalDescription:zi,shimRTCIceCandidate:Vi,shimRTCIceCandidateRelayProtocol:us,shimSendThrowTypeError:Hi});(function(){let i=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:{}).window,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{shimChrome:!0,shimFirefox:!0,shimSafari:!0},t=as,n=(function(s){let a={browser:null,version:null};if(s===void 0||!s.navigator||!s.navigator.userAgent)return a.browser="Not a browser.",a;let o=s.navigator;if(o.userAgentData&&o.userAgentData.brands){let c=o.userAgentData.brands.find((d=>d.brand==="Chromium"));if(c){let d=parseInt(c.version,10);if(d>=90)return{browser:"chrome",version:d}}}if(o.mozGetUserMedia)a.browser="firefox",a.version=parseInt(Kn(o.userAgent,/Firefox\/(\d+)\./,1));else if(o.webkitGetUserMedia||s.isSecureContext===!1&&s.webkitRTCPeerConnection)a.browser="chrome",a.version=parseInt(Kn(o.userAgent,/Chrom(e|ium)\/(\d+)\./,2))||null;else{if(!s.RTCPeerConnection||!o.userAgent.match(/AppleWebKit\/(\d+)\./))return a.browser="Not a supported browser.",a;a.browser="safari",a.version=parseInt(Kn(o.userAgent,/AppleWebKit\/(\d+)\./,1)),a.supportsUnifiedPlan=s.RTCRtpTransceiver&&"currentDirection"in s.RTCRtpTransceiver.prototype,a._safariVersion=Kn(o.userAgent,/Version\/(\d+(\.?\d+))/,1)}return a})(i),r={browserDetails:n,commonShim:Yh,extractVersion:Kn,disableLog:Gh,disableWarnings:Jh,sdp:Qh};switch(n.browser){case"chrome":if(!Tc||!ds||!e.shimChrome)return t("Chrome shim is not included in this adapter release."),r;if(n.version===null)return t("Chrome shim can not determine version, not shimming."),r;t("adapter.js shimming chrome."),r.browserShim=Tc,Ki(i,n),zi(i),pc(i,n),mc(i),ds(i,n),gc(i,n),yc(i,n),fc(i),vc(i,n),bc(i,n),Vi(i),us(i),hs(i),Wi(i,n),Hi(i,n),ps(i,n);break;case"firefox":if(!Ac||!ls||!e.shimFirefox)return t("Firefox shim is not included in this adapter release."),r;t("adapter.js shimming firefox."),r.browserShim=Ac,Ki(i,n),zi(i),Sc(i,n),ls(i,n),Cc(i,n),Ec(i),Pc(i),wc(i),Rc(i),Ic(i),Mc(i,n),Dc(i,n),_c(i,n),Oc(i,n),Vi(i),hs(i),Wi(i,n),Hi(i,n);break;case"safari":if(!Hc||!e.shimSafari)return t("Safari shim is not included in this adapter release."),r;t("adapter.js shimming safari."),r.browserShim=Hc,Ki(i,n),zi(i),Bc(i),qc(i),xc(i),Lc(i),Nc(i),jc(i),Uc(i),Vc(i),Vi(i),us(i),Wi(i,n),Hi(i,n),ps(i,n);break;default:t("Unsupported browser!")}})({window:typeof window>"u"?void 0:window});class Ie extends(Gc=Promise){constructor(e){super(e)}catch(e){return super.catch(e)}static reject(e){return super.reject(e)}static all(e){return super.all(e)}static race(e){return super.race(e)}}ms=Ie,Ie.resolve=i=>Reflect.get(Gc,"resolve",ms).call(ms,i);let Xh=/version\/(\d+(\.?_?\d+)+)/i,gs;function be(i){let e=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];if(i===void 0&&typeof navigator>"u")return;let t=(i??navigator.userAgent).toLowerCase();if(gs===void 0||e){let n=$h.find((r=>r.test.test(t)));gs=n?.describe(t)}return gs}let $h=[{test:/firefox|iceweasel|fxios/i,describe:i=>({name:"Firefox",version:Gi(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,i),os:i.toLowerCase().includes("fxios")?"iOS":void 0,osVersion:fs(i)})},{test:/chrom|crios|crmo/i,describe:i=>({name:"Chrome",version:Gi(/(?:chrome|chromium|crios|crmo)\/(\d+(\.?_?\d+)+)/i,i),os:i.toLowerCase().includes("crios")?"iOS":void 0,osVersion:fs(i)})},{test:/safari|applewebkit/i,describe:i=>({name:"Safari",version:Gi(Xh,i),os:i.includes("mobile/")?"iOS":"macOS",osVersion:fs(i)})}];function Gi(i,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,n=e.match(i);return n&&n.length>=t&&n[t]||""}function fs(i){return i.includes("mac os")?Gi(/\(.+?(\d+_\d+(:?_\d+)?)/,i,1).replace(/_/g,"."):void 0}let Jc="2.22.3";class Je extends Error{constructor(e,t,n){super(t||"an error has occurred"),this.name="LiveKitError",this.code=e,n?.cause!==void 0&&(this.cause=n?.cause)}}class We extends Je{}var Ce,ke,Ji,L,J,K,X;u.ConnectionErrorReason=void 0,(Ce=u.ConnectionErrorReason||(u.ConnectionErrorReason={}))[Ce.NotAllowed=0]="NotAllowed",Ce[Ce.ServerUnreachable=1]="ServerUnreachable",Ce[Ce.InternalError=2]="InternalError",Ce[Ce.Cancelled=3]="Cancelled",Ce[Ce.LeaveRequest=4]="LeaveRequest",Ce[Ce.Timeout=5]="Timeout",Ce[Ce.WebSocket=6]="WebSocket",Ce[Ce.ServiceNotFound=7]="ServiceNotFound";class _ extends We{constructor(e,t,n,r){super(1,e),this.name="ConnectionError",this.status=n,this.reason=t,this.context=r,this.reasonName=u.ConnectionErrorReason[t]}static notAllowed(e,t,n){return new _(e,u.ConnectionErrorReason.NotAllowed,t,n)}static timeout(e){return new _(e,u.ConnectionErrorReason.Timeout)}static leaveRequest(e,t){return new _(e,u.ConnectionErrorReason.LeaveRequest,void 0,t)}static internal(e,t){return new _(e,u.ConnectionErrorReason.InternalError,void 0,t)}static cancelled(e){return new _(e,u.ConnectionErrorReason.Cancelled)}static serverUnreachable(e,t){return new _(e,u.ConnectionErrorReason.ServerUnreachable,t)}static websocket(e,t,n){return new _(e,u.ConnectionErrorReason.WebSocket,t,n)}static serviceNotFound(e,t){return new _(e,u.ConnectionErrorReason.ServiceNotFound,void 0,t)}}class zn extends Je{constructor(e){super(21,e??"device is unsupported"),this.name="DeviceUnsupportedError"}}class et extends Je{constructor(e){super(20,e??"track is invalid"),this.name="TrackInvalidError"}}class Qc extends Je{constructor(e){super(10,e||"unsupported server"),this.name="UnsupportedServer"}}class ie extends Je{constructor(e){super(12,e||"unexpected connection state"),this.name="UnexpectedConnectionState"}}class wt extends Je{constructor(e){super(13,e||"unable to negotiate"),this.name="NegotiationError"}}class Yc extends Je{constructor(e){super(14,e||"unable to publish data"),this.name="PublishDataError"}}class vs extends Je{constructor(e,t){super(15,e),this.name="PublishTrackError",this.status=t}}class ks extends We{constructor(e,t){super(15,e),this.name="SignalRequestError",this.reason=t,this.reasonName=typeof t=="string"?t:Vt[t]}}u.DataStreamErrorReason=void 0,(ke=u.DataStreamErrorReason||(u.DataStreamErrorReason={}))[ke.AlreadyOpened=0]="AlreadyOpened",ke[ke.AbnormalEnd=1]="AbnormalEnd",ke[ke.DecodeFailed=2]="DecodeFailed",ke[ke.LengthExceeded=3]="LengthExceeded",ke[ke.Incomplete=4]="Incomplete",ke[ke.HandlerAlreadyRegistered=7]="HandlerAlreadyRegistered",ke[ke.EncryptionTypeMismatch=8]="EncryptionTypeMismatch",ke[ke.HeaderTooLarge=9]="HeaderTooLarge",ke[ke.PayloadTooLarge=10]="PayloadTooLarge";class pe extends We{constructor(e,t){super(16,e),this.name="DataStreamError",this.reason=t,this.reasonName=u.DataStreamErrorReason[t]}}class Ht extends Je{constructor(e){super(18,e),this.name="SignalReconnectError"}}u.MediaDeviceFailure=void 0,(Ji=u.MediaDeviceFailure||(u.MediaDeviceFailure={})).PermissionDenied="PermissionDenied",Ji.NotFound="NotFound",Ji.DeviceInUse="DeviceInUse",Ji.Other="Other",(function(i){i.getFailure=function(e){if(e&&"name"in e)return e.name==="NotFoundError"||e.name==="DevicesNotFoundError"?i.NotFound:e.name==="NotAllowedError"||e.name==="PermissionDeniedError"?i.PermissionDenied:e.name==="NotReadableError"||e.name==="TrackStartError"?i.DeviceInUse:i.Other}})(u.MediaDeviceFailure||(u.MediaDeviceFailure={}));class Q{}function ys(i){let e={};for(let n of Object.entries(i)){var t=D(n,2);let r=t[0],s=t[1];s!==void 0&&(e[r]=s)}return e}function bs(i,e){return i&&e?"".concat(i,"x").concat(e):void 0}function Ts(i){return Math.round(1e4*i)/1e4}function Zh(i){let e=i.jitterBufferDelay,t=i.jitterBufferEmittedCount;return e!==void 0&&t?Ts(e/t):void 0}function ep(i,e){if(i.playoutDelay!==void 0)return Ts(i.playoutDelay);let t=e?.totalPlayoutDelay,n=e?.totalSamplesCount;return t!==void 0&&n?Ts(t/n):void 0}function Ss(i){var e,t;let n=new Map,r=[],s=[],a=[],o;i.forEach((g=>n.set(g.id,g)));let c=g=>{var v;return g.codecId?(v=n.get(g.codecId))===null||v===void 0?void 0:v.mimeType:void 0},d=(g,v)=>g[v]?n.get(g[v]):void 0;i.forEach((g=>{switch(g.type){case"inbound-rtp":{let v=d(g,"playoutId");s.push(ys({kind:g.kind,ssrc:g.ssrc,mid:g.mid,trackId:g.trackIdentifier,codec:c(g),decoder:g.decoderImplementation,resolution:bs(g.frameWidth,g.frameHeight),fps:g.framesPerSecond,bytesReceived:g.bytesReceived,packetsReceived:g.packetsReceived,packetsLost:g.packetsLost,packetsDiscarded:g.packetsDiscarded,framesReceived:g.framesReceived,framesDecoded:g.framesDecoded,framesDropped:g.framesDropped,keyFramesDecoded:g.keyFramesDecoded,freezeCount:g.freezeCount,totalFreezesDuration:g.totalFreezesDuration,pauseCount:g.pauseCount,nackCount:g.nackCount,pliCount:g.pliCount,firCount:g.firCount,jitter:g.jitter,jitterBuffer:Zh(g),playoutDelay:ep(g,v),audioLevel:g.audioLevel,totalSamplesReceived:g.totalSamplesReceived,concealedSamples:g.concealedSamples}));break}case"outbound-rtp":{let v=d(g,"remoteId"),b=d(g,"mediaSourceId");a.push(ys({kind:g.kind,ssrc:g.ssrc,mid:g.mid,rid:g.rid,trackId:b?.trackIdentifier,active:g.active,codec:c(g),encoder:g.encoderImplementation,resolution:bs(g.frameWidth,g.frameHeight),fps:g.framesPerSecond,captureResolution:bs(b?.width,b?.height),captureFps:b?.framesPerSecond,audioLevel:b?.audioLevel,targetBitrate:g.targetBitrate,bytesSent:g.bytesSent,packetsSent:g.packetsSent,retransmittedPacketsSent:g.retransmittedPacketsSent,framesEncoded:g.framesEncoded,keyFramesEncoded:g.keyFramesEncoded,limitedBy:g.qualityLimitationReason==="none"?void 0:g.qualityLimitationReason,nackCount:g.nackCount,pliCount:g.pliCount,firCount:g.firCount,remotePacketsLost:v?.packetsLost,remoteFractionLost:v?.fractionLost,remoteJitter:v?.jitter,remoteRoundTripTime:v?.roundTripTime}));break}case"transport":o=g;break;case"candidate-pair":r.push(g)}}));let l=o?.selectedCandidatePairId,h=(t=(e=l?n.get(l):void 0)!==null&&e!==void 0?e:r.find((g=>g.selected)))!==null&&t!==void 0?t:r.find((g=>g.nominated)),p=h?.localCandidateId?n.get(h.localCandidateId):void 0,m=h?.remoteCandidateId?n.get(h.remoteCandidateId):void 0,k=ys({ice:o?.iceState,dtls:o?.dtlsState,route:p&&m?"".concat(p.candidateType,"/").concat(p.protocol," -> ").concat(m.candidateType):void 0,network:p?.networkType,currentRoundTripTime:h?.currentRoundTripTime,availableOutgoingBitrate:h?.availableOutgoingBitrate,availableIncomingBitrate:h?.availableIncomingBitrate,bytesSent:h?.bytesSent,bytesReceived:h?.bytesReceived,candidatePairChanges:o?.selectedCandidatePairChanges});return{connection:Object.keys(k).length>0?k:void 0,outbound:a.length>0?a:void 0,inbound:s.length>0?s:void 0}}Q.setTimeout=function(){return setTimeout(...arguments)},Q.setInterval=function(){return setInterval(...arguments)},Q.clearTimeout=function(){return clearTimeout(...arguments)},Q.clearInterval=function(){return clearInterval(...arguments)},u.RoomEvent=void 0,(L=u.RoomEvent||(u.RoomEvent={})).Connected="connected",L.Reconnecting="reconnecting",L.SignalReconnecting="signalReconnecting",L.Reconnected="reconnected",L.Disconnected="disconnected",L.ConnectionStateChanged="connectionStateChanged",L.Moved="moved",L.MediaDevicesChanged="mediaDevicesChanged",L.ParticipantConnected="participantConnected",L.ParticipantDisconnected="participantDisconnected",L.TrackPublished="trackPublished",L.TrackSubscribed="trackSubscribed",L.TrackSubscriptionFailed="trackSubscriptionFailed",L.TrackUnpublished="trackUnpublished",L.TrackUnsubscribed="trackUnsubscribed",L.TrackMuted="trackMuted",L.TrackUnmuted="trackUnmuted",L.LocalTrackPublished="localTrackPublished",L.LocalTrackUnpublished="localTrackUnpublished",L.LocalAudioSilenceDetected="localAudioSilenceDetected",L.ActiveSpeakersChanged="activeSpeakersChanged",L.ParticipantMetadataChanged="participantMetadataChanged",L.ParticipantNameChanged="participantNameChanged",L.ParticipantAttributesChanged="participantAttributesChanged",L.ParticipantActive="participantActive",L.RoomMetadataChanged="roomMetadataChanged",L.DataReceived="dataReceived",L.SipDTMFReceived="sipDTMFReceived",L.TranscriptionReceived="transcriptionReceived",L.ConnectionQualityChanged="connectionQualityChanged",L.TrackStreamStateChanged="trackStreamStateChanged",L.TrackSubscriptionPermissionChanged="trackSubscriptionPermissionChanged",L.TrackSubscriptionStatusChanged="trackSubscriptionStatusChanged",L.AudioPlaybackStatusChanged="audioPlaybackChanged",L.VideoPlaybackStatusChanged="videoPlaybackChanged",L.MediaDevicesError="mediaDevicesError",L.ParticipantPermissionsChanged="participantPermissionsChanged",L.SignalConnected="signalConnected",L.RecordingStatusChanged="recordingStatusChanged",L.ParticipantEncryptionStatusChanged="participantEncryptionStatusChanged",L.EncryptionError="encryptionError",L.DCBufferStatusChanged="dcBufferStatusChanged",L.ActiveDeviceChanged="activeDeviceChanged",L.ChatMessage="chatMessage",L.LocalTrackSubscribed="localTrackSubscribed",L.MetricsReceived="metricsReceived",L.DataTrackPublished="dataTrackPublished",L.DataTrackUnpublished="dataTrackUnpublished",L.LocalDataTrackPublished="localDataTrackPublished",L.LocalDataTrackUnpublished="localDataTrackUnpublished",u.ParticipantEvent=void 0,(J=u.ParticipantEvent||(u.ParticipantEvent={})).TrackPublished="trackPublished",J.TrackSubscribed="trackSubscribed",J.TrackSubscriptionFailed="trackSubscriptionFailed",J.TrackUnpublished="trackUnpublished",J.TrackUnsubscribed="trackUnsubscribed",J.TrackMuted="trackMuted",J.TrackUnmuted="trackUnmuted",J.LocalTrackPublished="localTrackPublished",J.LocalTrackUnpublished="localTrackUnpublished",J.LocalTrackCpuConstrained="localTrackCpuConstrained",J.LocalSenderCreated="localSenderCreated",J.ParticipantMetadataChanged="participantMetadataChanged",J.ParticipantNameChanged="participantNameChanged",J.DataReceived="dataReceived",J.SipDTMFReceived="sipDTMFReceived",J.TranscriptionReceived="transcriptionReceived",J.IsSpeakingChanged="isSpeakingChanged",J.ConnectionQualityChanged="connectionQualityChanged",J.TrackStreamStateChanged="trackStreamStateChanged",J.TrackSubscriptionPermissionChanged="trackSubscriptionPermissionChanged",J.TrackSubscriptionStatusChanged="trackSubscriptionStatusChanged",J.TrackCpuConstrained="trackCpuConstrained",J.MediaDevicesError="mediaDevicesError",J.AudioStreamAcquired="audioStreamAcquired",J.ParticipantPermissionsChanged="participantPermissionsChanged",J.PCTrackAdded="pcTrackAdded",J.AttributesChanged="attributesChanged",J.LocalTrackSubscribed="localTrackSubscribed",J.ChatMessage="chatMessage",J.Active="active",u.EngineEvent=void 0,(K=u.EngineEvent||(u.EngineEvent={})).TransportsCreated="transportsCreated",K.Connected="connected",K.Disconnected="disconnected",K.Resuming="resuming",K.Resumed="resumed",K.Restarting="restarting",K.Restarted="restarted",K.SignalResumed="signalResumed",K.SignalRestarted="signalRestarted",K.Closing="closing",K.MediaTrackAdded="mediaTrackAdded",K.ActiveSpeakersUpdate="activeSpeakersUpdate",K.DataPacketReceived="dataPacketReceived",K.RTPVideoMapUpdate="rtpVideoMapUpdate",K.DCBufferStatusChanged="dcBufferStatusChanged",K.ParticipantUpdate="participantUpdate",K.RoomUpdate="roomUpdate",K.SpeakersChanged="speakersChanged",K.StreamStateChanged="streamStateChanged",K.ConnectionQualityUpdate="connectionQualityUpdate",K.SubscriptionError="subscriptionError",K.SubscriptionPermissionUpdate="subscriptionPermissionUpdate",K.RemoteMute="remoteMute",K.SubscribedQualityUpdate="subscribedQualityUpdate",K.LocalTrackUnpublished="localTrackUnpublished",K.LocalTrackSubscribed="localTrackSubscribed",K.Offline="offline",K.SignalRequestResponse="signalRequestResponse",K.SignalConnected="signalConnected",K.RoomMoved="roomMoved",K.PublishDataTrackResponse="publishDataTrackResponse",K.UnPublishDataTrackResponse="unPublishDataTrackResponse",K.DataTrackSubscriberHandles="dataTrackSubscriberHandles",K.DataTrackPacketReceived="dataTrackPacketReceived",K.Joined="joined",K.TokenRefreshed="tokenRefreshed",K.ServerRegionsReported="serverRegionsReported",u.TrackEvent=void 0,(X=u.TrackEvent||(u.TrackEvent={})).Message="message",X.Muted="muted",X.Unmuted="unmuted",X.Restarted="restarted",X.Ended="ended",X.Subscribed="subscribed",X.Unsubscribed="unsubscribed",X.CpuConstrained="cpuConstrained",X.UpdateSettings="updateSettings",X.UpdateSubscription="updateSubscription",X.AudioPlaybackStarted="audioPlaybackStarted",X.AudioPlaybackFailed="audioPlaybackFailed",X.AudioSilenceDetected="audioSilenceDetected",X.VisibilityChanged="visibilityChanged",X.VideoDimensionsChanged="videoDimensionsChanged",X.VideoPlaybackStarted="videoPlaybackStarted",X.VideoPlaybackFailed="videoPlaybackFailed",X.ElementAttached="elementAttached",X.ElementDetached="elementDetached",X.UpstreamPaused="upstreamPaused",X.UpstreamResumed="upstreamResumed",X.SubscriptionPermissionChanged="subscriptionPermissionChanged",X.SubscriptionStatusChanged="subscriptionStatusChanged",X.SubscriptionFailed="subscriptionFailed",X.TrackProcessorUpdate="trackProcessorUpdate",X.AudioTrackFeatureUpdate="audioTrackFeatureUpdate",X.TranscriptionReceived="transcriptionReceived",X.TimeSyncUpdate="timeSyncUpdate",X.PreConnectBufferFlushed="preConnectBufferFlushed";class ${constructor(e,t,n,r,s){if(typeof e=="object")this.width=e.width,this.height=e.height,this.aspectRatio=e.aspectRatio,this.encoding={maxBitrate:e.maxBitrate,maxFramerate:e.maxFramerate,priority:e.priority};else{if(t===void 0||n===void 0)throw new TypeError("Unsupported options: provide at least width, height and maxBitrate");this.width=e,this.height=t,this.aspectRatio=e/t,this.encoding={maxBitrate:n,maxFramerate:r,priority:s}}}get resolution(){return{width:this.width,height:this.height,frameRate:this.encoding.maxFramerate,aspectRatio:this.aspectRatio}}}let Xc=["opus","red"],tp=["vp8","h264"],$c=["vp8","h264","vp9","av1","h265"];function Es(i){return!!tp.find((e=>e===i))}let Zc=Es;var mn,gn;u.BackupCodecPolicy=void 0,(mn=u.BackupCodecPolicy||(u.BackupCodecPolicy={}))[mn.PREFER_REGRESSION=0]="PREFER_REGRESSION",mn[mn.SIMULCAST=1]="SIMULCAST",mn[mn.REGRESSION=2]="REGRESSION",u.AudioPresets=void 0,(gn=u.AudioPresets||(u.AudioPresets={})).telephone={maxBitrate:12e3},gn.speech={maxBitrate:24e3},gn.music={maxBitrate:48e3},gn.musicStereo={maxBitrate:64e3},gn.musicHighQuality={maxBitrate:96e3},gn.musicHighQualityStereo={maxBitrate:128e3};let fn={h90:new $(160,90,9e4,20),h180:new $(320,180,16e4,20),h216:new $(384,216,18e4,20),h360:new $(640,360,45e4,20),h540:new $(960,540,8e5,25),h720:new $(1280,720,17e5,30),h1080:new $(1920,1080,3e6,30),h1440:new $(2560,1440,5e6,30),h2160:new $(3840,2160,8e6,30)},Qi={h120:new $(160,120,7e4,20),h180:new $(240,180,125e3,20),h240:new $(320,240,14e4,20),h360:new $(480,360,33e4,20),h480:new $(640,480,5e5,20),h540:new $(720,540,6e5,25),h720:new $(960,720,13e5,30),h1080:new $(1440,1080,23e5,30),h1440:new $(1920,1440,38e5,30)},Gn={h360fps3:new $(640,360,2e5,3,"medium"),h360fps15:new $(640,360,4e5,15,"medium"),h720fps5:new $(1280,720,8e5,5,"medium"),h720fps15:new $(1280,720,15e5,15,"medium"),h720fps30:new $(1280,720,2e6,30,"medium"),h1080fps15:new $(1920,1080,25e5,15,"medium"),h1080fps30:new $(1920,1080,5e6,30,"medium"),original:new $(0,0,7e6,30,"medium")};function ed(i,e,t){var n,r,s,a;let o=id(i??{}),c=o.optionsWithoutProcessor,d=o.audioProcessor,l=o.videoProcessor,h=e?.processor,p=t?.processor,m=c??{};return m.audio===!0&&(m.audio={}),m.video===!0&&(m.video={}),m.audio&&(Cs(m.audio,e),(n=(s=m.audio).deviceId)!==null&&n!==void 0||(s.deviceId={ideal:"default"}),(d||h)&&(m.audio.processor=d??h)),m.video&&(Cs(m.video,t),(r=(a=m.video).deviceId)!==null&&r!==void 0||(a.deviceId={ideal:"default"}),(l||p)&&(m.video.processor=l??p)),m}function Cs(i,e){return Object.keys(e).forEach((t=>{i[t]===void 0&&(i[t]=e[t])})),i}function ws(i){var e,t,n,r;let s={};if(i.video)if(typeof i.video=="object"){let a={},o=a,c=i.video;Object.keys(c).forEach((d=>{d==="resolution"?Cs(o,c.resolution):o[d]=c[d]})),s.video=a,(e=(n=s.video).deviceId)!==null&&e!==void 0||(n.deviceId={ideal:"default"})}else s.video=!!i.video&&{deviceId:{ideal:"default"}};else s.video=!1;return i.audio?typeof i.audio=="object"?(s.audio=i.audio,(t=(r=s.audio).deviceId)!==null&&t!==void 0||(r.deviceId={ideal:"default"})):s.audio={deviceId:{ideal:"default"}}:s.audio=!1,s}function td(i){return f(this,arguments,void 0,(function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:200;return(function*(){let n=Rs();if(n){let r=n.createAnalyser();r.fftSize=2048;let s=r.frequencyBinCount,a=new Uint8Array(s);n.createMediaStreamSource(new MediaStream([e.mediaStreamTrack])).connect(r),yield we(t),r.getByteTimeDomainData(a);let o=a.some((c=>c!==128&&c!==0));return n.close(),!o}return!1})()}))}function Rs(){var i;let e=typeof window<"u"&&(window.AudioContext||window.webkitAudioContext);if(e){let t=new e({latencyHint:"interactive"});if(t.state==="suspended"&&typeof window<"u"&&(!((i=window.document)===null||i===void 0)&&i.body)){let n=()=>f(this,void 0,void 0,(function*(){var r;try{t.state==="suspended"&&(yield t.resume())}catch(s){console.warn("Error trying to auto-resume audio context",s)}finally{(r=window.document.body)===null||r===void 0||r.removeEventListener("click",n)}}));t.addEventListener("statechange",(()=>{var r;t.state==="closed"&&((r=window.document.body)===null||r===void 0||r.removeEventListener("click",n))})),window.document.body.addEventListener("click",n)}return t}}function np(i){return i==="audioinput"?R.Source.Microphone:i==="videoinput"?R.Source.Camera:R.Source.Unknown}function Ps(i){return i===R.Source.Microphone?"audioinput":i===R.Source.Camera?"videoinput":void 0}function nd(i){var e,t;let n=(e=i.video)===null||e===void 0||e;return i.resolution&&i.resolution.width>0&&i.resolution.height>0&&(n=typeof n=="boolean"?{}:n,n=Jt()?Object.assign(Object.assign({},n),{width:{max:i.resolution.width},height:{max:i.resolution.height},frameRate:i.resolution.frameRate}):Object.assign(Object.assign({},n),{width:{ideal:i.resolution.width},height:{ideal:i.resolution.height},frameRate:i.resolution.frameRate})),{audio:(t=i.audio)!==null&&t!==void 0&&t,video:n,controller:i.controller,selfBrowserSurface:i.selfBrowserSurface,surfaceSwitching:i.surfaceSwitching,systemAudio:i.systemAudio,preferCurrentTab:i.preferCurrentTab}}function Jn(i){return i.split("/")[1].toLowerCase()}function ip(i){let e=[];return i.forEach((t=>{t.track!==void 0&&e.push(new Xr({cid:t.track.mediaStreamID,track:t.trackInfo}))})),e}function W(i){return"mediaStreamTrack"in i?{trackID:i.sid,source:i.source,muted:i.isMuted,enabled:i.mediaStreamTrack.enabled,kind:i.kind,streamID:i.mediaStreamID,streamTrackID:i.mediaStreamTrack.id}:{trackID:i.trackSid,enabled:i.isEnabled,muted:i.isMuted,trackInfo:Object.assign({mimeType:i.mimeType,name:i.trackName,encrypted:i.isEncrypted,kind:i.kind,source:i.source},i.track?W(i.track):{})}}function id(i){let e=Object.assign({},i),t,n;return typeof e.audio=="object"&&e.audio.processor&&(t=e.audio.processor,e.audio=Object.assign(Object.assign({},e.audio),{processor:void 0})),typeof e.video=="object"&&e.video.processor&&(n=e.video.processor,e.video=Object.assign(Object.assign({},e.video),{processor:void 0})),{audioProcessor:t,videoProcessor:n,optionsWithoutProcessor:(r=e,r===void 0?r:typeof structuredClone=="function"?typeof r=="object"&&r!==null?structuredClone(Object.assign({},r)):structuredClone(r):JSON.parse(JSON.stringify(r)))};var r}function rd(i,e){return i.width*i.height<e.width*e.height}let Qn=[];var vn;u.VideoQuality=void 0,(vn=u.VideoQuality||(u.VideoQuality={}))[vn.LOW=0]="LOW",vn[vn.MEDIUM=1]="MEDIUM",vn[vn.HIGH=2]="HIGH";class R extends Ue.EventEmitter{get streamState(){return this._streamState}setStreamState(e){this._streamState!==e&&this.log.debug("stream state changed: ".concat(this._streamState," -> ").concat(e)),this._streamState=e}constructor(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var r;super(),this.attachedElements=[],this.isMuted=!1,this._streamState=R.StreamState.Active,this.isInBackground=!1,this._currentBitrate=0,this.finalStatsLogged=!1,this.log=V,this.appVisibilityChangedListener=()=>{this.backgroundTimeout&&clearTimeout(this.backgroundTimeout),document.visibilityState==="hidden"?this.backgroundTimeout=setTimeout((()=>this.handleAppVisibilityChanged()),5e3):this.handleAppVisibilityChanged()},this.loggerContextCb=n.loggerContextCb,this.log=he((r=n.loggerName)!==null&&r!==void 0?r:u.LoggerNames.Track,(()=>this.logContext)),this.setMaxListeners(100),this.kind=t,this._mediaStreamTrack=e,this._mediaStreamID=e.id,this.source=R.Source.Unknown}get logContext(){var e;return Object.assign(Object.assign({},(e=this.loggerContextCb)===null||e===void 0?void 0:e.call(this)),W(this))}get currentBitrate(){return this._currentBitrate}get mediaStreamTrack(){return this._mediaStreamTrack}get mediaStreamID(){return this._mediaStreamID}attach(e){let t="audio";this.kind===R.Kind.Video&&(t="video"),this.attachedElements.length===0&&this.kind===R.Kind.Video&&this.addAppVisibilityListener(),e||(t==="audio"&&(Qn.forEach((s=>{s.parentElement!==null||e||(e=s)})),e&&Qn.splice(Qn.indexOf(e),1)),e||(e=document.createElement(t))),this.attachedElements.includes(e)||this.attachedElements.push(e),Kt(this.mediaStreamTrack,e);let n=e.srcObject.getTracks(),r=n.some((s=>s.kind==="audio"));return e.play().then((()=>{this.emit(r?u.TrackEvent.AudioPlaybackStarted:u.TrackEvent.VideoPlaybackStarted)})).catch((s=>{s.name==="NotAllowedError"?this.emit(r?u.TrackEvent.AudioPlaybackFailed:u.TrackEvent.VideoPlaybackFailed,s):s.name==="AbortError"?this.log.debug("".concat(r?"audio":"video"," playback aborted, likely due to new play request")):this.log.warn("could not playback ".concat(r?"audio":"video"),{error:s}),r&&e&&n.some((a=>a.kind==="video"))&&s.name==="NotAllowedError"&&(e.muted=!0,e.play().catch((()=>{})))})),this.emit(u.TrackEvent.ElementAttached,e),e}detach(e){try{if(e){zt(this.mediaStreamTrack,e);let n=this.attachedElements.indexOf(e);return n>=0&&(this.attachedElements.splice(n,1),this.recycleElement(e),this.emit(u.TrackEvent.ElementDetached,e)),e}let t=[];return this.attachedElements.forEach((n=>{zt(this.mediaStreamTrack,n),t.push(n),this.recycleElement(n),this.emit(u.TrackEvent.ElementDetached,n)})),this.attachedElements=[],t}finally{this.attachedElements.length===0&&this.removeAppVisibilityListener()}}stop(){this.log.debug("stopping track"),this.stopMonitor(),this._mediaStreamTrack.stop()}enable(){this._mediaStreamTrack.enabled=!0}disable(){this._mediaStreamTrack.enabled=!1}stopMonitor(){this.monitorInterval&&clearInterval(this.monitorInterval),this.timeSyncHandle!==void 0&&(cancelAnimationFrame(this.timeSyncHandle),this.timeSyncHandle=void 0),this.logFinalStats()}logFinalStats(){this.finalStatsLogged||(this.finalStatsLogged=!0,this.getRTCStatsReport().then((e=>{e&&this.log.info("final track stats",Ss(e))})).catch((e=>this.log.debug("could not collect final track stats",{error:e}))))}updateLoggerOptions(e){e.loggerContextCb&&(this.loggerContextCb=e.loggerContextCb),e.loggerName&&(this.log=he(e.loggerName,(()=>this.logContext)))}recycleElement(e){if(e instanceof HTMLAudioElement){let t=!0;e.pause(),Qn.forEach((n=>{n.parentElement||(t=!1)})),t&&Qn.push(e)}}handleAppVisibilityChanged(){return f(this,void 0,void 0,(function*(){this.isInBackground=document.visibilityState==="hidden",this.isInBackground||this.kind!==R.Kind.Video||setTimeout((()=>this.attachedElements.forEach((e=>e.play().catch((()=>{}))))),0)}))}addAppVisibilityListener(){Fe()?(this.isInBackground=document.visibilityState==="hidden",document.addEventListener("visibilitychange",this.appVisibilityChangedListener)):this.isInBackground=!1}removeAppVisibilityListener(){Fe()&&document.removeEventListener("visibilitychange",this.appVisibilityChangedListener)}}function Kt(i,e){let t,n;t=e.srcObject instanceof MediaStream?e.srcObject:new MediaStream,n=i.kind==="audio"?t.getAudioTracks():t.getVideoTracks(),n.includes(i)||(n.forEach((r=>{t.removeTrack(r)})),t.addTrack(i)),Jt()&&e instanceof HTMLVideoElement||(e.autoplay=!0),e.muted=t.getAudioTracks().length===0,e instanceof HTMLVideoElement&&(e.playsInline=!0),e.srcObject!==t&&(e.srcObject=t,(Jt()||Gt())&&e instanceof HTMLVideoElement&&setTimeout((()=>{e.srcObject=t,e.play().catch((()=>{}))}),0))}function zt(i,e){if(e.srcObject instanceof MediaStream){let t=e.srcObject;t.removeTrack(i),t.getTracks().length>0?e.srcObject=t:e.srcObject=null}}(function(i){let e,t,n;(function(r){r.Audio="audio",r.Video="video",r.Unknown="unknown"})(e=i.Kind||(i.Kind={})),(function(r){r.Camera="camera",r.Microphone="microphone",r.ScreenShare="screen_share",r.ScreenShareAudio="screen_share_audio",r.Unknown="unknown"})(t=i.Source||(i.Source={})),(function(r){r.Active="active",r.Paused="paused",r.Unknown="unknown"})(n=i.StreamState||(i.StreamState={})),i.kindToProto=function(r){switch(r){case e.Audio:return Ke.AUDIO;case e.Video:return Ke.VIDEO;default:return Ke.DATA}},i.kindFromProto=function(r){switch(r){case Ke.AUDIO:return e.Audio;case Ke.VIDEO:return e.Video;default:return e.Unknown}},i.sourceToProto=function(r){switch(r){case t.Camera:return ue.CAMERA;case t.Microphone:return ue.MICROPHONE;case t.ScreenShare:return ue.SCREEN_SHARE;case t.ScreenShareAudio:return ue.SCREEN_SHARE_AUDIO;default:return ue.UNKNOWN}},i.sourceFromProto=function(r){switch(r){case ue.CAMERA:return t.Camera;case ue.MICROPHONE:return t.Microphone;case ue.SCREEN_SHARE:return t.ScreenShare;case ue.SCREEN_SHARE_AUDIO:return t.ScreenShareAudio;default:return t.Unknown}},i.streamStateFromProto=function(r){switch(r){case zr.ACTIVE:return n.Active;case zr.PAUSED:return n.Paused;default:return n.Unknown}}})(R||(R={}));let kn="https://aomediacodec.github.io/av1-rtp-spec/#dependency-descriptor-rtp-header-extension";function sd(i){let e=i.split("|");return e.length>1?[e[0],i.substr(e[0].length+1)]:[i,""]}function we(i){return new Ie((e=>Q.setTimeout(e,i)))}function Yi(){return"addTransceiver"in RTCPeerConnection.prototype}function Is(){return"addTrack"in RTCPeerConnection.prototype}function ad(){if(!("getCapabilities"in RTCRtpSender)||Jt()||Gt())return!1;let i=RTCRtpSender.getCapabilities("video"),e=!1;if(i){for(let t of i.codecs)if(t.mimeType.toLowerCase()==="video/av1"){e=!0;break}}return e}function od(){if(!("getCapabilities"in RTCRtpSender)||Gt())return!1;if(Jt()){let t=be();if(t?.version&&Qe(t.version,"16")<0||t?.os==="iOS"&&t?.osVersion&&Qe(t.osVersion,"16")<0)return!1}let i=RTCRtpSender.getCapabilities("video"),e=!1;if(i){for(let t of i.codecs)if(t.mimeType.toLowerCase()==="video/vp9"){e=!0;break}}return e}function Rt(i){return i==="av1"||i==="vp9"}function rp(i){var e;let t=(e=i.getHeaderExtensionsToNegotiate)===null||e===void 0?void 0:e.call(i);if(!t||!i.setHeaderExtensionsToNegotiate)return!1;let n=t.find((r=>r.uri===kn));if(!n)return!1;if(n.direction!=="stopped")return!0;n.direction="sendrecv";try{return i.setHeaderExtensionsToNegotiate(t),!0}catch{return!1}}function yn(i,e){var t;return Rt(i)&&!!e?.simulcast&&!!(!((t=e.scalabilityMode)===null||t===void 0)&&t.startsWith("L1T"))}function cd(){let i=be();return Yn()||tt()||i?.name==="Chrome"&&Qe(i.version,"113")<0}function Xi(i){return!(!document||Yn())&&(i||(i=document.createElement("audio")),"setSinkId"in i)}function dd(){return typeof RTCPeerConnection<"u"&&(Yi()||Is())}function Gt(){var i;return((i=be())===null||i===void 0?void 0:i.name)==="Firefox"}function Ms(){return typeof window<"u"&&window.RTCRtpScriptTransform!==void 0&&!(function(){let i=be();return!!i&&i.name==="Chrome"&&i.os!=="iOS"})()}function Jt(){var i;return((i=be())===null||i===void 0?void 0:i.name)==="Safari"}function Yn(){let i=be();return i?.name==="Safari"||i?.os==="iOS"}function ld(){let i=be();return i?.name==="Safari"&&i.version.startsWith("17.")||i?.os==="iOS"&&!!i?.osVersion&&Qe(i.osVersion,"17")>=0}function ud(){var i,e;return!!Fe()&&((e=(i=navigator.userAgentData)===null||i===void 0?void 0:i.mobile)!==null&&e!==void 0?e:/Tablet|iPad|Mobile|Android|BlackBerry/.test(navigator.userAgent))}function Fe(){return typeof document<"u"}function tt(){return navigator.product=="ReactNative"}function bn(i){return i.hostname.endsWith(".livekit.cloud")||i.hostname.endsWith(".livekit.run")}function Ds(i){return bn(i)?i.hostname.split(".")[0]:null}function hd(){if(global&&global.LiveKitReactNativeGlobal)return global.LiveKitReactNativeGlobal}function pd(){if(!tt())return;let i=hd();return i?i.platform:void 0}function md(){if(Fe())return window.devicePixelRatio;if(tt()){let i=hd();if(i)return i.devicePixelRatio}return 1}function Qe(i,e){let t=i.split("."),n=e.split("."),r=Math.min(t.length,n.length);for(let s=0;s<r;++s){let a=parseInt(t[s],10),o=parseInt(n[s],10);if(a>o)return 1;if(a<o)return-1;if(s===r-1&&a===o)return 0}return i===""&&e!==""?-1:e===""?1:t.length==n.length?0:t.length<n.length?-1:1}function sp(i){for(let e of i)e.target.handleResize(e)}function ap(i){for(let e of i)e.target.handleVisibilityChanged(e)}let _s=null,gd=()=>(_s||(_s=new ResizeObserver(sp)),_s),Os=null,fd=()=>(Os||(Os=new IntersectionObserver(ap,{root:null,rootMargin:"0px"})),Os),As,Xn;function Ls(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:16,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:16,t=arguments.length>2&&arguments[2]!==void 0&&arguments[2],n=arguments.length>3&&arguments[3]!==void 0&&arguments[3],r=document.createElement("canvas");r.width=i,r.height=e;let s=r.getContext("2d");s?.fillRect(0,0,r.width,r.height),n&&s&&(s.beginPath(),s.arc(i/2,e/2,50,0,2*Math.PI,!0),s.closePath(),s.fillStyle="grey",s.fill());let a=D(r.captureStream().getTracks(),1)[0];if(!a)throw Error("Could not get empty media stream video track");return a.enabled=t,a}function $i(){if(!Xn){let e=new AudioContext,t=e.createOscillator(),n=e.createGain();n.gain.setValueAtTime(0,0);let r=e.createMediaStreamDestination();t.connect(n),n.connect(r),t.start();var i=D(r.stream.getAudioTracks(),1);if(Xn=i[0],!Xn)throw Error("Could not get empty media stream audio track");Xn.enabled=!1}return Xn.clone()}class Te{get isResolved(){return this._isResolved}constructor(e,t){this._isResolved=!1,this.onFinally=t,this.promise=new Promise(((n,r)=>f(this,void 0,void 0,(function*(){this.resolve=n,this.reject=r,e&&(yield e(n,r))})))).finally((()=>{var n;this._isResolved=!0,(n=this.onFinally)===null||n===void 0||n.call(this)}))}}function Ns(i){return $c.includes(i)}function Tn(i){if(typeof i=="string"||typeof i=="number")return i;if(Array.isArray(i))return i[0];if(i.exact!==void 0)return Array.isArray(i.exact)?i.exact[0]:i.exact;if(i.ideal!==void 0)return Array.isArray(i.ideal)?i.ideal[0]:i.ideal;throw Error("could not unwrap constraint")}function $n(i){return i.startsWith("ws")?i.replace(/^(ws)/,"http"):i}function vd(i){switch(i.reason){case u.ConnectionErrorReason.LeaveRequest:return i.context;case u.ConnectionErrorReason.Cancelled:return xe.CLIENT_INITIATED;case u.ConnectionErrorReason.NotAllowed:return xe.USER_REJECTED;case u.ConnectionErrorReason.ServerUnreachable:return xe.JOIN_FAILURE;default:return xe.UNKNOWN_REASON}}function Sn(i){return i!==void 0?Number(i):void 0}function nt(i){return i!==void 0?BigInt(i):void 0}function xt(i){return!!i&&!(i instanceof MediaStreamTrack)&&i.isLocal}function it(i){return!!i&&i.kind==R.Kind.Audio}function ht(i){return!!i&&i.kind==R.Kind.Video}function pt(i){return xt(i)&&ht(i)}function Pt(i){return xt(i)&&it(i)}function Zi(i){return!!i&&!i.isLocal}function op(i){return!!i&&!i.isLocal}function xs(i){return Zi(i)&&ht(i)}function kd(i){return i.isLocal}function er(i){return new ReadableStream({start(e){e.enqueue(i),e.close()}})}function Ut(){return typeof CompressionStream<"u"}function yd(i,e){let t=D(sd(e.id),2)[1];return t?.startsWith("TR")?t:i.id.startsWith("TR")?i.id:void 0}function cp(i,e){let t=arguments.length>2&&arguments[2]!==void 0&&arguments[2],n=(function(r,s){let a=new URL((function(o){return o.startsWith("http")?o.replace(/^(http)/,"ws"):o})(r));return s.forEach(((o,c)=>{a.searchParams.set(c,o)})),Us(a,"rtc")})(i,e);return t?n:Us(n,"v1")}function bd(i){return i.endsWith("/")?i:"".concat(i,"/")}function Us(i,e){return i.pathname="".concat(bd(i.pathname)).concat(e),i}function Td(i){if(typeof i=="string")return qo.fromJson(JSON.parse(i),{ignoreUnknownFields:!0});if(i instanceof ArrayBuffer)return qo.fromBinary(new Uint8Array(i));throw new Error("could not decode websocket message: ".concat(typeof i))}let Sd="AES-GCM",tr="lk_e2ee",nr="lk_e2ee_track_id",dp={sharedKey:!1,ratchetSalt:"LKFrameEncryptionKey",ratchetWindowSize:8,failureTolerance:10,keyringSize:16,keySize:128};var Fs,Ed;function Cd(){return ir()||wd()}function wd(){return typeof window<"u"&&window.RTCRtpScriptTransform!==void 0}function ir(){return typeof window<"u"&&window.RTCRtpSender!==void 0&&window.RTCRtpSender.prototype.createEncodedStreams!==void 0}function Rd(i){return f(this,void 0,void 0,(function*(){let e=new TextEncoder;return yield crypto.subtle.importKey("raw",e.encode(i),{name:"PBKDF2"},!1,["deriveBits","deriveKey"])}))}function Pd(i){return f(this,void 0,void 0,(function*(){return yield crypto.subtle.importKey("raw",i,"HKDF",!1,["deriveBits","deriveKey"])}))}function Id(i,e){let t=new TextEncoder().encode(e);switch(i){case"HKDF":return{name:"HKDF",salt:t,hash:"SHA-256",info:new ArrayBuffer(128)};case"PBKDF2":return{name:"PBKDF2",salt:t,hash:"SHA-256",iterations:1e5};default:throw new Error("algorithm ".concat(i," is currently unsupported"))}}u.KeyProviderEvent=void 0,(Fs=u.KeyProviderEvent||(u.KeyProviderEvent={})).SetKey="setKey",Fs.RatchetRequest="ratchetRequest",Fs.KeyRatcheted="keyRatcheted",u.KeyHandlerEvent=void 0,(u.KeyHandlerEvent||(u.KeyHandlerEvent={})).KeyRatcheted="keyRatcheted",u.EncryptionEvent=void 0,(Ed=u.EncryptionEvent||(u.EncryptionEvent={})).ParticipantEncryptionStatusChanged="participantEncryptionStatusChanged",Ed.EncryptionError="encryptionError",u.CryptorEvent=void 0,(u.CryptorEvent||(u.CryptorEvent={})).Error="cryptorError";function Md(i){var e,t,n,r,s;if(((e=i.value)===null||e===void 0?void 0:e.case)!=="sipDtmf"&&((t=i.value)===null||t===void 0?void 0:t.case)!=="metrics"&&((n=i.value)===null||n===void 0?void 0:n.case)!=="speaker"&&((r=i.value)===null||r===void 0?void 0:r.case)!=="transcription"&&((s=i.value)===null||s===void 0?void 0:s.case)!=="encryptedPacket")return new Eo({value:i.value})}class Dd extends Ue.EventEmitter{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};super(),this.latestManuallySetKeyIndex=0,this.onKeyRatcheted=(t,n,r)=>{V.debug("key ratcheted event received",{ratchetResult:t,participantId:n,keyIndex:r})},this.keyInfoMap=new Map,this.options=Object.assign(Object.assign({},dp),e),this.on(u.KeyProviderEvent.KeyRatcheted,this.onKeyRatcheted)}onSetEncryptionKey(e,t,n){let r={key:e,participantIdentity:t,keyIndex:n};if(!this.options.sharedKey&&!t)throw new Error("participant identity needs to be passed for encryption key if sharedKey option is false");this.keyInfoMap.set("".concat(t??"shared","-").concat(n??0),r),n!==void 0&&(this.latestManuallySetKeyIndex=n),this.emit(u.KeyProviderEvent.SetKey,r,n!==void 0)}getKeys(){return Array.from(this.keyInfoMap.values())}getLatestManuallySetKeyIndex(){return this.latestManuallySetKeyIndex}getOptions(){return this.options}ratchetKey(e,t){this.emit(u.KeyProviderEvent.RatchetRequest,e,t)}}var En;u.CryptorErrorReason=void 0,(En=u.CryptorErrorReason||(u.CryptorErrorReason={}))[En.InvalidKey=0]="InvalidKey",En[En.MissingKey=1]="MissingKey",En[En.InternalError=2]="InternalError";class _d extends Je{constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:u.CryptorErrorReason.InternalError,n=arguments.length>2?arguments[2]:void 0;super(40,e),this.reason=t,this.participantIdentity=n}}function Zn(){return Ms()}function ei(i){return!!i?.worker&&(ir()||Zn())}function rr(i){return!(!i?.timestamp&&!i?.frameId)}function Bs(i){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:50,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var n,r;let s,a=(n=t.isImmediate)!==null&&n!==void 0&&n,o=(r=t.callback)!==null&&r!==void 0&&r,c=t.maxWait,d=Date.now(),l=[],h=function(){for(var p=arguments.length,m=new Array(p),k=0;k<p;k++)m[k]=arguments[k];let g=this;return new Promise(((v,b)=>{let T=a&&s===void 0;if(s!==void 0&&Q.clearTimeout(s),s=Q.setTimeout((function(){if(s=void 0,d=Date.now(),!a){let E=i.apply(g,m);o&&o(E),l.forEach((S=>(0,S.resolve)(E))),l=[]}}),(function(){if(c!==void 0){let E=Date.now()-d;if(E+e>=c)return c-E}return e})()),T){let E=i.apply(g,m);return o&&o(E),v(E)}l.push({resolve:v,reject:b})}))};return h.cancel=function(p){s!==void 0&&Q.clearTimeout(s),l.forEach((m=>(0,m.reject)(p))),l=[]},h}let js=2e3;function sr(i,e){if(!e)return 0;let t,n;return"bytesReceived"in i?(t=i.bytesReceived,n=e.bytesReceived):"bytesSent"in i&&(t=i.bytesSent,n=e.bytesSent),t===void 0||n===void 0||i.timestamp===void 0||e.timestamp===void 0?0:8*(t-n)*1e3/(i.timestamp-e.timestamp)}class qs extends R{constructor(e,t,n,r,s){super(e,n,s),this.timeSyncLoop=()=>{var a;if(this.listenerCount(u.TrackEvent.TimeSyncUpdate)===0)return void(this.timeSyncHandle=void 0);this.timeSyncHandle=requestAnimationFrame(this.timeSyncLoop);let o=(a=this.receiver)===null||a===void 0?void 0:a.getSynchronizationSources()[0];if(o){let c=o.timestamp,d=o.rtpTimestamp;d&&this.rtpTimestamp!==d&&(this.emit(u.TrackEvent.TimeSyncUpdate,{timestamp:c,rtpTimestamp:d}),this.rtpTimestamp=d)}},this.onTimeSyncListenerAdded=a=>{a===u.TrackEvent.TimeSyncUpdate&&this.timeSyncHandle===void 0&&(this.timeSyncHandle=requestAnimationFrame(this.timeSyncLoop))},this.sid=t,this.receiver=r}get isLocal(){return!1}setMuted(e){this.isMuted!==e&&(this.isMuted=e,this._mediaStreamTrack.enabled=!e,this.emit(e?u.TrackEvent.Muted:u.TrackEvent.Unmuted,this))}setMediaStream(e){this.mediaStream=e;let t=n=>{n.track===this._mediaStreamTrack&&(e.removeEventListener("removetrack",t),this.receiver&&"playoutDelayHint"in this.receiver&&(this.receiver.playoutDelayHint=void 0),this.receiver=void 0,this._currentBitrate=0,this.emit(u.TrackEvent.Ended,this))};e.addEventListener("removetrack",t)}start(){this.startMonitor(),super.enable()}stop(){this.stopMonitor(),super.disable()}getRTCStatsReport(){return f(this,void 0,void 0,(function*(){var e;if(!((e=this.receiver)===null||e===void 0)&&e.getStats)return yield this.receiver.getStats()}))}setPlayoutDelay(e){this.receiver?"playoutDelayHint"in this.receiver?this.receiver.playoutDelayHint=e:this.log.warn("Playout delay not supported in this browser"):this.log.warn("Cannot set playout delay, track already ended")}getPlayoutDelay(){if(this.receiver){if("playoutDelayHint"in this.receiver)return this.receiver.playoutDelayHint;this.log.warn("Playout delay not supported in this browser")}else this.log.warn("Cannot get playout delay, track already ended");return 0}startMonitor(){this.monitorInterval||(this.monitorInterval=setInterval((()=>this.monitorReceiver()),js)),typeof RTCRtpReceiver<"u"&&typeof RTCRtpReceiver.prototype.getSynchronizationSources=="function"&&this.registerTimeSyncUpdate()}stopMonitor(){super.stopMonitor(),this.off("newListener",this.onTimeSyncListenerAdded)}registerTimeSyncUpdate(){this.off("newListener",this.onTimeSyncListenerAdded),this.on("newListener",this.onTimeSyncListenerAdded),this.timeSyncHandle===void 0&&this.timeSyncLoop()}}class ar extends qs{constructor(e,t,n,r,s){super(e,t,R.Kind.Video,n,s),this.elementInfos=[],this.monitorReceiver=()=>f(this,void 0,void 0,(function*(){if(!this.receiver)return void(this._currentBitrate=0);let a=yield this.getReceiverStats();a&&this.prevStats&&this.receiver&&(this._currentBitrate=sr(a,this.prevStats)),this.prevStats=a})),this.debouncedHandleResize=Bs((()=>{this.updateDimensions()}),100),this.adaptiveStreamSettings=r}get isAdaptiveStream(){return this.adaptiveStreamSettings!==void 0}lookupFrameMetadata(e){let t=e.rtpTimestamp;var n;return(n=this.frameMetadataExtractor)===null||n===void 0?void 0:n.lookupMetadata(t)}setStreamState(e){super.setStreamState(e),this.log.debug("setStreamState",e),this.isAdaptiveStream&&e===R.StreamState.Active&&this.updateVisibility()}get mediaStreamTrack(){return this._mediaStreamTrack}setMuted(e){super.setMuted(e),this.attachedElements.forEach((t=>{e?zt(this._mediaStreamTrack,t):Kt(this._mediaStreamTrack,t)}))}attach(e){if(e?super.attach(e):e=super.attach(),this.adaptiveStreamSettings&&this.elementInfos.find((t=>t.element===e))===void 0){let t=new lp(e);this.observeElementInfo(t)}return e}observeElementInfo(e){this.adaptiveStreamSettings&&this.elementInfos.find((t=>t===e))===void 0?(e.handleResize=()=>{this.debouncedHandleResize()},e.handleVisibilityChanged=()=>{this.updateVisibility()},this.elementInfos.push(e),e.observe(),this.debouncedHandleResize(),this.updateVisibility()):this.log.warn("visibility resize observer not triggered",this.logContext)}stopObservingElementInfo(e){if(!this.isAdaptiveStream)return void this.log.warn("stopObservingElementInfo ignored",this.logContext);let t=this.elementInfos.filter((n=>n===e));for(let n of t)n.stopObserving();this.elementInfos=this.elementInfos.filter((n=>n!==e)),this.updateVisibility(),this.debouncedHandleResize()}detach(e){if(e)return this.stopObservingElement(e),super.detach(e);let t=super.detach();for(let n of t)this.stopObservingElement(n);return t}getDecoderImplementation(){var e;return(e=this.prevStats)===null||e===void 0?void 0:e.decoderImplementation}getReceiverStats(){return f(this,void 0,void 0,(function*(){if(!this.receiver||!this.receiver.getStats)return;let e=yield this.receiver.getStats(),t,n="",r=new Map;return e.forEach((s=>{s.type==="inbound-rtp"?(n=s.codecId,t={type:"video",streamId:s.id,framesDecoded:s.framesDecoded,framesDropped:s.framesDropped,framesReceived:s.framesReceived,packetsReceived:s.packetsReceived,packetsLost:s.packetsLost,frameWidth:s.frameWidth,frameHeight:s.frameHeight,pliCount:s.pliCount,firCount:s.firCount,nackCount:s.nackCount,jitter:s.jitter,timestamp:s.timestamp,bytesReceived:s.bytesReceived,decoderImplementation:s.decoderImplementation}):s.type==="codec"&&r.set(s.id,s)})),t&&n!==""&&r.get(n)&&(t.mimeType=r.get(n).mimeType),t}))}stopObservingElement(e){let t=this.elementInfos.filter((n=>n.element===e));for(let n of t)this.stopObservingElementInfo(n)}handleAppVisibilityChanged(){let e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return f(this,void 0,void 0,(function*(){yield e.handleAppVisibilityChanged.call(this),this.isAdaptiveStream&&this.updateVisibility()}))}updateVisibility(e){var t,n;let r=this.elementInfos.reduce(((c,d)=>Math.max(c,d.visibilityChangedAt||0)),0),s=!((n=(t=this.adaptiveStreamSettings)===null||t===void 0?void 0:t.pauseVideoInBackground)!==null&&n!==void 0&&!n)&&this.isInBackground,a=this.elementInfos.some((c=>c.pictureInPicture)),o=this.elementInfos.some((c=>c.visible))&&!s||a;(this.lastVisible!==o||e)&&(!o&&Date.now()-r<100?Q.setTimeout((()=>{this.updateVisibility()}),100):(this.lastVisible=o,this.emit(u.TrackEvent.VisibilityChanged,o,this)))}updateDimensions(){var e,t;let n=0,r=0,s=this.getPixelDensity();for(let a of this.elementInfos){let o=a.width()*s,c=a.height()*s;o+c>n+r&&(n=o,r=c)}((e=this.lastDimensions)===null||e===void 0?void 0:e.width)===n&&((t=this.lastDimensions)===null||t===void 0?void 0:t.height)===r||(this.lastDimensions={width:n,height:r},this.emit(u.TrackEvent.VideoDimensionsChanged,this.lastDimensions,this))}getPixelDensity(){var e;let t=(e=this.adaptiveStreamSettings)===null||e===void 0?void 0:e.pixelDensity;return t==="screen"?md():t||(md()>2?2:1)}}class lp{get visible(){return this.isPiP||this.isIntersecting}get pictureInPicture(){return this.isPiP}constructor(e,t){this.onVisibilityChanged=n=>{var r;let s=n.target,a=n.isIntersecting;s===this.element&&(this.isIntersecting=a,this.isPiP=ti(this.element),this.visibilityChangedAt=Date.now(),(r=this.handleVisibilityChanged)===null||r===void 0||r.call(this))},this.onEnterPiP=()=>{var n,r;(r=(n=window.documentPictureInPicture)===null||n===void 0?void 0:n.window)===null||r===void 0||r.addEventListener("pagehide",this.onLeavePiP),queueMicrotask((()=>{requestAnimationFrame((()=>{var s;this.isPiP=ti(this.element),(s=this.handleVisibilityChanged)===null||s===void 0||s.call(this)}))}))},this.onLeavePiP=()=>{var n;this.isPiP=ti(this.element),(n=this.handleVisibilityChanged)===null||n===void 0||n.call(this)},this.element=e,this.isIntersecting=t??Vs(e),this.isPiP=Fe()&&ti(e),this.visibilityChangedAt=0}width(){return this.element.clientWidth}height(){return this.element.clientHeight}observe(){var e,t,n;this.isIntersecting=Vs(this.element),this.isPiP=ti(this.element),this.element.handleResize=()=>{var r;(r=this.handleResize)===null||r===void 0||r.call(this)},this.element.handleVisibilityChanged=this.onVisibilityChanged,fd().observe(this.element),gd().observe(this.element),this.element.addEventListener("enterpictureinpicture",this.onEnterPiP),this.element.addEventListener("leavepictureinpicture",this.onLeavePiP),(e=window.documentPictureInPicture)===null||e===void 0||e.addEventListener("enter",this.onEnterPiP),(n=(t=window.documentPictureInPicture)===null||t===void 0?void 0:t.window)===null||n===void 0||n.addEventListener("pagehide",this.onLeavePiP)}stopObserving(){var e,t,n,r,s;(e=fd())===null||e===void 0||e.unobserve(this.element),(t=gd())===null||t===void 0||t.unobserve(this.element),this.element.removeEventListener("enterpictureinpicture",this.onEnterPiP),this.element.removeEventListener("leavepictureinpicture",this.onLeavePiP),(n=window.documentPictureInPicture)===null||n===void 0||n.removeEventListener("enter",this.onEnterPiP),(s=(r=window.documentPictureInPicture)===null||r===void 0?void 0:r.window)===null||s===void 0||s.removeEventListener("pagehide",this.onLeavePiP)}}function ti(i){var e,t;return document.pictureInPictureElement===i||!!(!((e=window.documentPictureInPicture)===null||e===void 0)&&e.window)&&Vs(i,(t=window.documentPictureInPicture)===null||t===void 0?void 0:t.window)}function Vs(i,e){let t=e||window,n=i.offsetTop,r=i.offsetLeft,s=i.offsetWidth,a=i.offsetHeight,o=i.hidden,c=getComputedStyle(i).display;for(;i.offsetParent;)n+=(i=i.offsetParent).offsetTop,r+=i.offsetLeft;return n<t.pageYOffset+t.innerHeight&&r<t.pageXOffset+t.innerWidth&&n+a>t.pageYOffset&&r+s>t.pageXOffset&&!o&&c!=="none"}class Qt extends Ue.EventEmitter{get logContext(){var e,t;return{room:(e=this.room)===null||e===void 0?void 0:e.name,participant:(t=this.room)===null||t===void 0?void 0:t.localParticipant.identity}}constructor(e,t){super(),this.decryptDataRequests=new Map,this.encryptDataRequests=new Map,this.log=he(u.LoggerNames.E2EE,(()=>this.logContext)),this.onWorkerMessage=n=>{var r,s;let a=n.data,o=a.kind,c=a.data;switch(o){case"error":if(c.uuid){let h=this.decryptDataRequests.get(c.uuid);if(h?.reject){h.reject(c.error);break}let p=this.encryptDataRequests.get(c.uuid);if(p?.reject){p.reject(c.error);break}}this.log.error(c.error.message),this.emit(u.EncryptionEvent.EncryptionError,c.error,c.participantIdentity);break;case"initAck":c.enabled&&this.keyProvider.getKeys().forEach((h=>{this.postKey(h,!1)}));break;case"enable":if(c.enabled&&this.keyProvider.getKeys().forEach((h=>{this.postKey(h,!1)})),this.encryptionEnabled!==c.enabled&&c.participantIdentity===((r=this.room)===null||r===void 0?void 0:r.localParticipant.identity))this.emit(u.EncryptionEvent.ParticipantEncryptionStatusChanged,c.enabled,this.room.localParticipant),this.encryptionEnabled=c.enabled;else if(c.participantIdentity){let h=(s=this.room)===null||s===void 0?void 0:s.getParticipantByIdentity(c.participantIdentity);if(!h)throw TypeError("couldn't set encryption status, participant not found".concat(c.participantIdentity));this.emit(u.EncryptionEvent.ParticipantEncryptionStatusChanged,c.enabled,h)}break;case"ratchetKey":this.keyProvider.emit(u.KeyProviderEvent.KeyRatcheted,c.ratchetResult,c.participantIdentity,c.keyIndex);break;case"decryptDataResponse":let d=this.decryptDataRequests.get(c.uuid);d?.resolve&&d.resolve(c);break;case"encryptDataResponse":let l=this.encryptDataRequests.get(c.uuid);l?.resolve&&l.resolve(c);break;case"packetTrailerMetadata":this.handleFrameMetadata(c.trackId,c.rtpTimestamp,c.ssrc,c.metadata);break;case"log":hn[c.level](c.msg,c.context)}},this.onWorkerError=n=>{this.log.error("e2ee worker encountered an error:",{error:n.error}),this.emit(u.EncryptionEvent.EncryptionError,n.error,void 0)},this.keyProvider=e.keyProvider,this.worker=e.worker,this.encryptionEnabled=!1,this.dataChannelEncryptionEnabled=t}get isEnabled(){return this.encryptionEnabled}get isDataChannelEncryptionEnabled(){return this.isEnabled&&this.dataChannelEncryptionEnabled}setup(e){if(!Cd())throw new zn("tried to setup end-to-end encryption on an unsupported browser");if(this.log.info("setting up e2ee"),e!==this.room){this.room=e,this.setupEventListeners(e,this.keyProvider);let t={kind:"init",data:{keyProviderOptions:this.keyProvider.getOptions(),loglevel:hn.getLevel()}};this.worker&&(this.log.info("initializing worker",{worker:this.worker}),this.worker.onmessage=this.onWorkerMessage,this.worker.onerror=this.onWorkerError,this.worker.postMessage(t),this.subscribeToLogLevelChanges())}}subscribeToLogLevelChanges(){var e;let t;if((e=this.unsubscribeLogLevel)===null||e===void 0||e.call(this),Qt.disposeRegistry){let n=new WeakRef(this.worker);t=ic((r=>{let s=n.deref();s?s.postMessage({kind:"setLogLevel",data:{level:r}}):t?.()})),Qt.disposeRegistry.register(this,t,this)}else{let n=this.worker;t=ic((r=>{n.postMessage({kind:"setLogLevel",data:{level:r}})}))}this.unsubscribeLogLevel=t}dispose(){var e,t,n;(e=this.unsubscribeLogLevel)===null||e===void 0||e.call(this),this.unsubscribeLogLevel=void 0,Qt.disposeRegistry&&Qt.disposeRegistry.unregister(this);let r=new _d("E2EEManager disposed",u.CryptorErrorReason.InternalError);for(let s of[...this.encryptDataRequests.values()])(t=s.reject)===null||t===void 0||t.call(s,r);for(let s of[...this.decryptDataRequests.values()])(n=s.reject)===null||n===void 0||n.call(s,r);this.worker&&(this.worker.onmessage=null,this.worker.onerror=null),this.removeAllListeners()}setParticipantCryptorEnabled(e,t){this.log.debug("set e2ee to ".concat(e," for participant ").concat(t)),this.postEnable(e,t)}setSifTrailer(e){e&&e.length!==0?this.postSifTrailer(e):this.log.warn("ignoring server sent trailer as it's empty")}handleFrameMetadata(e,t,n,r){if(this.room){for(let s of[this.room.localParticipant,...this.room.remoteParticipants.values()])for(let a of s.trackPublications.values())if(a.track&&a.track.mediaStreamID===e&&a.track instanceof ar&&a.track.frameMetadataExtractor)return void a.track.frameMetadataExtractor.storeMetadata(t,n,r)}}setupEngine(e){e.on(u.EngineEvent.RTPVideoMapUpdate,(t=>{this.postRTPMap(t)}))}setupEventListeners(e,t){e.on(u.RoomEvent.TrackPublished,((n,r)=>this.setParticipantCryptorEnabledForPublication(n,r.identity))),e.on(u.RoomEvent.ConnectionStateChanged,(n=>{n===u.ConnectionState.Connected&&e.remoteParticipants.forEach((r=>{r.trackPublications.forEach((s=>{this.setParticipantCryptorEnabledForPublication(s,r.identity)}))}))})).on(u.RoomEvent.TrackUnsubscribed,((n,r,s)=>{var a;let o={kind:"removeTransform",data:{participantIdentity:s.identity,trackId:n.mediaStreamID}};(a=this.worker)===null||a===void 0||a.postMessage(o)})).on(u.RoomEvent.TrackSubscribed,((n,r,s)=>{this.setupE2EEReceiver(n,s.identity,r.trackInfo)})).on(u.RoomEvent.SignalConnected,(()=>{if(!this.room)throw new TypeError("expected room to be present on signal connect");let n=t.getLatestManuallySetKeyIndex();t.getKeys().forEach((r=>{var s;this.postKey(r,n===((s=r.keyIndex)!==null&&s!==void 0?s:0))})),this.setParticipantCryptorEnabled(this.room.localParticipant.isE2EEEnabled,this.room.localParticipant.identity)})),e.localParticipant.on(u.ParticipantEvent.LocalSenderCreated,((n,r)=>f(this,void 0,void 0,(function*(){this.setupE2EESender(r,n)})))),e.localParticipant.on(u.ParticipantEvent.LocalTrackPublished,(n=>{if(!ht(n.track)||!Yn())return;let r={kind:"updateCodec",data:{trackId:n.track.mediaStreamID,codec:Jn(n.trackInfo.codecs[0].mimeType),participantIdentity:this.room.localParticipant.identity,hasPacketTrailer:!1}};this.worker.postMessage(r)})),t.on(u.KeyProviderEvent.SetKey,((n,r)=>this.postKey(n,r==null||r))).on(u.KeyProviderEvent.RatchetRequest,((n,r)=>this.postRatchetRequest(n,r)))}encryptData(e){return f(this,void 0,void 0,(function*(){if(!this.worker)throw Error("could not encrypt data, worker is missing");let t=crypto.randomUUID(),n={kind:"encryptDataRequest",data:{uuid:t,payload:e,participantIdentity:this.room.localParticipant.identity}},r=new Te;return r.onFinally=()=>{this.encryptDataRequests.delete(t)},this.encryptDataRequests.set(t,r),this.worker.postMessage(n),r.promise}))}handleEncryptedData(e,t,n,r){if(!this.worker)throw Error("could not handle encrypted data, worker is missing");let s=crypto.randomUUID(),a={kind:"decryptDataRequest",data:{uuid:s,payload:e,iv:t,participantIdentity:n,keyIndex:r}},o=new Te;return o.onFinally=()=>{this.decryptDataRequests.delete(s)},this.decryptDataRequests.set(s,o),this.worker.postMessage(a),o.promise}postRatchetRequest(e,t){if(!this.worker)throw Error("could not ratchet key, worker is missing");let n={kind:"ratchetRequest",data:{participantIdentity:e,keyIndex:t}};this.worker.postMessage(n)}postKey(e,t){let n=e.key,r=e.participantIdentity,s=e.keyIndex;var a;if(!this.worker)throw Error("could not set key, worker is missing");let o={kind:"setKey",data:{participantIdentity:r,isPublisher:r===((a=this.room)===null||a===void 0?void 0:a.localParticipant.identity),key:n,keyIndex:s,updateCurrentKeyIndex:t}};this.worker.postMessage(o)}postEnable(e,t){if(!this.worker)throw new ReferenceError("failed to enable e2ee, worker is not ready");{let n={kind:"enable",data:{enabled:e,participantIdentity:t}};this.worker.postMessage(n)}}postRTPMap(e){var t;if(!this.worker)throw TypeError("could not post rtp map, worker is missing");if(!(!((t=this.room)===null||t===void 0)&&t.localParticipant.identity))throw TypeError("could not post rtp map, local participant identity is missing");let n={kind:"setRTPMap",data:{map:e,participantIdentity:this.room.localParticipant.identity}};this.worker.postMessage(n)}postSifTrailer(e){if(!this.worker)throw Error("could not post SIF trailer, worker is missing");let t={kind:"setSifTrailer",data:{trailer:e}};this.worker.postMessage(t)}setParticipantCryptorEnabledForPublication(e,t){e.trackInfo?this.setParticipantCryptorEnabled(e.trackInfo.encryption!==G.NONE,t):this.log.warn("skipping e2ee enabled update for publication without trackInfo",{trackSid:e.trackSid})}setupE2EEReceiver(e,t,n){if(!e.receiver)return;if(!n?.mimeType||n.mimeType==="")throw new TypeError("MimeType missing from trackInfo, cannot set up E2EE cryptor");let r=e.kind==="video"&&!!n.packetTrailerFeatures&&n.packetTrailerFeatures.length>0;this.handleReceiver(e.receiver,e.mediaStreamID,t,e.kind==="video"?Jn(n.mimeType):void 0,r)}setupE2EESender(e,t){var n,r,s;xt(e)&&t?this.handleSender(t,e.mediaStreamID,void 0,ht(e)?(r=(n=e.publishOptions)===null||n===void 0?void 0:n.frameMetadata)!==null&&r!==void 0?r:(s=e.publishOptions)===null||s===void 0?void 0:s.packetTrailer:void 0):t||this.log.warn("early return because sender is not ready")}handleReceiver(e,t,n,r,s){return f(this,void 0,void 0,(function*(){if(this.worker){if(Ms()){let a={kind:"decode",participantIdentity:n,trackId:t,codec:r,hasPacketTrailer:s};e.transform=new RTCRtpScriptTransform(this.worker,a)}else{if(tr in e&&nr in e){let d={kind:"updateCodec",data:{trackId:t,previousTrackId:e[nr],codec:r,participantIdentity:n,hasPacketTrailer:s}};return this.worker.postMessage(d),void(e[nr]=t)}let a=e.writableStream,o=e.readableStream;if(!a||!o){let d=e.createEncodedStreams();e.writableStream=d.writable,a=d.writable,e.readableStream=d.readable,o=d.readable}let c={kind:"decode",data:{readableStream:o,writableStream:a,trackId:t,codec:r,participantIdentity:n,hasPacketTrailer:s}};this.worker.postMessage(c,[o,a])}e[tr]=!0,e[nr]=t}}))}handleSender(e,t,n,r){var s;if(!(tr in e)&&this.worker){if(!(!((s=this.room)===null||s===void 0)&&s.localParticipant.identity)||this.room.localParticipant.identity==="")throw TypeError("local identity needs to be known in order to set up encrypted sender");if(Ms()){this.log.info("initialize script transform");let a={kind:"encode",participantIdentity:this.room.localParticipant.identity,trackId:t,codec:n,hasPacketTrailer:rr(r),packetTrailer:r};e.transform=new RTCRtpScriptTransform(this.worker,a)}else{this.log.info("initialize encoded streams");let a=e.createEncodedStreams(),o={kind:"encode",data:{readableStream:a.readable,writableStream:a.writable,codec:n,trackId:t,participantIdentity:this.room.localParticipant.identity,hasPacketTrailer:rr(r),packetTrailer:r}};this.worker.postMessage(o,[a.readable,a.writable])}e[tr]=!0}}}Qt.disposeRegistry=typeof FinalizationRegistry<"u"&&typeof WeakRef<"u"&&new FinalizationRegistry((i=>{i()}));class up{constructor(){this.metadataMap=new Map,this.activeSsrc=0}storeMetadata(e,t,n){for(this.activeSsrc!==0&&this.activeSsrc!==t&&this.metadataMap.clear(),this.activeSsrc=t;this.metadataMap.size>=300;){let r=this.metadataMap.keys().next().value;this.metadataMap.delete(r)}this.metadataMap.set(e,n)}lookupMetadata(e){return this.metadataMap.get(e)}dispose(){this.metadataMap.clear(),this.activeSsrc=0}}class Ws{constructor(e){this.extractors=new Map,this.workerPipelines=new Map,this.onWorkerMessage=t=>{let n=t.data;if(n.kind==="metadata"){let r=this.extractors.get(n.data.trackId);r&&r.storeMetadata(n.data.rtpTimestamp,n.data.ssrc,n.data.metadata)}},this.onWorkerError=t=>{V.error("frame metadata worker encountered an error:",{error:t.error})},this.worker=e?.worker}setup(e){e!==this.room&&(this.room=e,this.worker&&(this.worker.onmessage=this.onWorkerMessage,this.worker.onerror=this.onWorkerError,this.worker.postMessage({kind:"init"})),e.on(u.RoomEvent.TrackSubscribed,((t,n,r)=>{t.kind==="video"&&this.setupReceiver(t,n.trackInfo)})).on(u.RoomEvent.TrackUnsubscribed,(t=>{this.teardownTrack(t)})).on(u.RoomEvent.Disconnected,(()=>{this.cleanup()})))}setupReceiver(e,t){var n,r,s;let a=e.receiver;if(!a)return;if(!(t?.packetTrailerFeatures&&t.packetTrailerFeatures.length>0))return void(((n=this.room)===null||n===void 0?void 0:n.hasE2EESetup)||this.setupPassthroughReceiver(a,e.mediaStreamID));if(!ei(this.worker?{worker:this.worker}:void 0)&&!(!((r=this.room)===null||r===void 0)&&r.hasE2EESetup))return void V.warn("frame metadata transform not supported; skipping extraction");let o=new up,c=e.mediaStreamID;this.extractors.set(c,o),e.frameMetadataExtractor=o,!((s=this.room)===null||s===void 0)&&s.hasE2EESetup||this.setupWorkerReceiver(a,c,!0)}setupPassthroughReceiver(e,t){Zn()?"transform"in e&&(e.transform=null):(this.worker&&ei({worker:this.worker})&&!this.workerPipelines.has(e)||this.worker&&this.workerPipelines.has(e))&&this.setupWorkerReceiver(e,t,!1)}setupWorkerReceiver(e,t){let n=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],r=this.worker;if(!r)return;if(Zn())return void(e.transform=new RTCRtpScriptTransform(r,{kind:"decode",trackId:t}));let s=this.workerPipelines.get(e);if(s){let c={kind:"updateTrackId",data:{oldTrackId:s,newTrackId:t,hasPacketTrailer:n}};return r.postMessage(c),void this.workerPipelines.set(e,t)}if(!("createEncodedStreams"in e))return void V.warn("createEncodedStreams not supported");let a;try{a=e.createEncodedStreams()}catch(c){return void V.warn("failed to create encoded streams",{error:c})}let o={kind:"decode",data:{readableStream:a.readable,writableStream:a.writable,trackId:t,hasPacketTrailer:n}};r.postMessage(o,[a.readable,a.writable]),this.workerPipelines.set(e,t)}teardownTrack(e){let t=e.mediaStreamID,n=this.extractors.get(t);n&&(n.dispose(),this.extractors.delete(t)),e instanceof ar&&(e.frameMetadataExtractor=void 0)}cleanup(){var e;for(let t of this.extractors.values())t.dispose();this.extractors.clear(),this.workerPipelines.clear(),(e=this.worker)===null||e===void 0||e.terminate()}}let hp=Ws;class Cn{constructor(){this.failedConnectionAttempts=new Map,this.backOffPromises=new Map}static getInstance(){return this._instance||(this._instance=new Cn),this._instance}addFailedConnectionAttempt(e){var t;let n=Ds(new URL(e));if(!n)return;let r=(t=this.failedConnectionAttempts.get(n))!==null&&t!==void 0?t:0;this.failedConnectionAttempts.set(n,r+1),this.backOffPromises.set(n,we(Math.min(500*Math.pow(2,r),15e3)))}getBackOffPromise(e){let t=new URL(e),n=t&&Ds(t);return n&&this.backOffPromises.get(n)||Promise.resolve()}resetFailedConnectionAttempts(e){let t=new URL(e),n=t&&Ds(t);n&&(this.failedConnectionAttempts.set(n,0),this.backOffPromises.set(n,Promise.resolve()))}resetAll(){this.backOffPromises.clear(),this.failedConnectionAttempts.clear()}}Cn._instance=null;let Hs="default";class ye{constructor(){this._previousDevices=[]}static getInstance(){return this.instance===void 0&&(this.instance=new ye),this.instance}get previousDevices(){return this._previousDevices}getDevices(e){return f(this,arguments,void 0,(function(t){var n=this;let r=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];return(function*(){var s;if(((s=ye.userMediaPromiseMap)===null||s===void 0?void 0:s.size)>0){V.debug("awaiting getUserMedia promise");try{t?yield ye.userMediaPromiseMap.get(t):yield Promise.all(ye.userMediaPromiseMap.values())}catch{V.warn("error waiting for media permissons")}}let a=yield navigator.mediaDevices.enumerateDevices();if(r&&(!Jt()||!n.hasDeviceInUse(t))&&(a.filter((o=>o.kind===t)).length===0||a.some((o=>{let c=o.label==="",d=!t||o.kind===t;return c&&d})))){let o={video:t!=="audioinput"&&t!=="audiooutput",audio:t!=="videoinput"&&{deviceId:{ideal:"default"}}},c=yield navigator.mediaDevices.getUserMedia(o);a=yield navigator.mediaDevices.enumerateDevices(),c.getTracks().forEach((d=>{d.stop()}))}return n._previousDevices=a,t&&(a=a.filter((o=>o.kind===t))),a})()}))}normalizeDeviceId(e,t,n){return f(this,void 0,void 0,(function*(){if(t!==Hs)return t;let r=yield this.getDevices(e),s=r.find((o=>o.deviceId===Hs));if(!s)return void V.warn("could not reliably determine default device");let a=r.find((o=>o.deviceId!==Hs&&o.groupId===(n??s.groupId)));if(a)return a?.deviceId;V.warn("could not reliably determine default device")}))}hasDeviceInUse(e){return e?ye.userMediaPromiseMap.has(e):ye.userMediaPromiseMap.size>0}}ye.mediaDeviceKinds=["audioinput","audiooutput","videoinput"],ye.userMediaPromiseMap=new Map;let Ks=65535,Od=4294967295;class rt{static u16(e){return new rt(e,Ks)}static u32(e){return new rt(e,Od)}constructor(e,t){if(this.value=e,e<0)throw new Error("WrapAroundUnsignedInt: cannot faithfully represent an integer smaller than 0");if(t>Number.MAX_SAFE_INTEGER)throw new Error("WrapAroundUnsignedInt: cannot faithfully represent an integer bigger than MAX_SAFE_INTEGER.");this.maxSize=t,this.clamp()}clamp(){for(;this.value>this.maxSize;)this.value-=this.maxSize+1;for(;this.value<0;)this.value+=this.maxSize+1}clone(){return new rt(this.value,this.maxSize)}update(e){this.value=e(this.value),this.clamp()}increment(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;this.update((t=>t+e))}decrement(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;this.update((t=>t-e))}getThenIncrement(){let e=this.value;return this.increment(),new rt(e,this.maxSize)}isBefore(e){let t=this.value>>>0,n=(e.value>>>0)-t>>>0;return n!==0&&n<this.maxSize+1}}class wn{static fromRtpTicks(e){return new wn(e,9e4)}static rtpRandom(){let e=Math.round(Math.random()*Od);return wn.fromRtpTicks(e)}constructor(e,t){this.timestamp=rt.u32(e),this.rateInHz=t}asTicks(){return this.timestamp.value}clone(){return new wn(this.timestamp.value,this.rateInHz)}wrappingAdd(e){this.timestamp.increment(e)}isBefore(e){return this.timestamp.isBefore(e.timestamp)}}class Yt{constructor(e,t,n){this.epoch=t,this.base=n,this.previous=n.clone(),this.rateInHz=e}static startingNow(e,t){return new Yt(t,new Date,e)}static startingAtTime(e,t,n){return new Yt(n,e,t)}static rtpStartingNow(e){return Yt.startingNow(e,9e4)}static rtpStartingAtTime(e,t){return Yt.startingAtTime(e,t,9e4)}now(){return this.at(new Date)}at(e){let t=e.getTime()-this.epoch.getTime(),n=Yt.durationInMsToTicks(t,this.rateInHz),r=this.base.clone();return r.wrappingAdd(n),r.isBefore(this.previous)&&(r=this.previous),this.previous=r.clone(),r.clone()}static durationInMsToTicks(e,t){let n=(1e6*e*t+5e8)/1e9;return Math.round(n)}}function zs(i){if(i instanceof DataView)return i;if(i instanceof ArrayBuffer)return new DataView(i);if(i instanceof Uint8Array)return new DataView(i.buffer,i.byteOffset,i.byteLength);throw new Error("Error coercing ".concat(i," to DataView - input was not DataView, ArrayBuffer, or Uint8Array."))}var Xt;(function(i){i[i.Reserved=0]="Reserved",i[i.TooLarge=1]="TooLarge"})(Xt||(Xt={}));class Rn extends We{constructor(e,t){super(19,e),this.name="DataTrackHandleError",this.reason=t,this.reasonName=Xt[t]}isReason(e){return this.reason===e}static tooLarge(){return new Rn("Value too large to be a valid track handle",Xt.TooLarge)}static reserved(e){return new Rn("0x".concat(e.toString(16)," is a reserved value."),Xt.Reserved)}}let pp={fromNumber(i){if(i===0)throw Rn.reserved(i);if(i>Ks)throw Rn.tooLarge();return i}};class mp{constructor(){this.value=0}get(){return this.value+=1,this.value>Ks?null:this.value}reset(){this.value=0}}let or={from:i=>({sid:i.sid,pubHandle:i.pubHandle,name:i.name,usesE2ee:i.encryption!==G.NONE}),toProtobuf:i=>new Ii({sid:i.sid,pubHandle:i.pubHandle,name:i.name,encryption:i.usesE2ee?G.GCM:G.NONE})};var ni;(function(i){i[i.WAITING=0]="WAITING",i[i.RUNNING=1]="RUNNING",i[i.COMPLETED=2]="COMPLETED"})(ni||(ni={}));class gp{constructor(){this.pendingTasks=new Map,this.taskMutex=new U,this.nextTaskIndex=0}run(e){return f(this,void 0,void 0,(function*(){let t={id:this.nextTaskIndex++,enqueuedAt:Date.now(),status:ni.WAITING};this.pendingTasks.set(t.id,t);let n=yield this.taskMutex.lock();try{return t.executedAt=Date.now(),t.status=ni.RUNNING,yield e()}finally{t.status=ni.COMPLETED,this.pendingTasks.delete(t.id),n()}}))}flush(){return f(this,void 0,void 0,(function*(){return this.run((()=>f(this,void 0,void 0,(function*(){}))))}))}snapshot(){return Array.from(this.pendingTasks.values())}}let fp=["client"];var Ad=class{constructor(){A(this,"listeners",new Map)}on(i,e){let t=this.listeners.get(i);return t||(t=new Set,this.listeners.set(i,t)),t.add(e),{off:()=>{t.delete(e)}}}emit(i,e){let t=this.listeners.get("*");if(t)for(let r of t)r(i,e);let n=this.listeners.get(i);if(n)for(let r of n)r(e)}clear(){this.listeners.clear()}},Pn=class extends Error{constructor(i,e){super("non-serializable value at ".concat(i," (").concat(e,")")),this.path=i,this.label=e}};let Gs=(i,e,t)=>{if(i===null)return null;switch(typeof i){case"string":case"boolean":return i;case"number":if(!Number.isFinite(i))throw new Pn(e,kp(i));return i;case"object":return vp(i,e,t);default:throw new Pn(e,typeof i)}},vp=(i,e,t)=>{var n,r;if(t.has(i))throw new Pn(e,"circular reference");if(Array.isArray(i)){if(i.length!==Object.keys(i).length)throw new Pn(e,"sparse array or array with non-index properties");t.add(i);let o=i.map(((c,d)=>Gs(c,"".concat(e,"[").concat(d,"]"),t)));return t.delete(i),o}let s=Object.getPrototypeOf(i);if(s!==Object.prototype&&s!==null)throw new Pn(e,(n=(r=i.constructor)===null||r===void 0?void 0:r.name)!==null&&n!==void 0?n:"object");t.add(i);let a={};for(let o of Object.keys(i)){let c=Gs(i[o],"".concat(e,".").concat(o),t);Object.defineProperty(a,o,{value:c,enumerable:!0,writable:!0,configurable:!0})}return t.delete(i),a},kp=i=>Number.isNaN(i)?"NaN":i>0?"Infinity":"-Infinity",Js=function(i){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:new Set;if(i===null||typeof i!="object"||e.has(i))return i;if(Array.isArray(i)){e.add(i);let r=i.map((s=>Js(s,e)));return e.delete(i),r}let t=Object.getPrototypeOf(i);if(t!==Object.prototype&&t!==null)return i;e.add(i);let n={};for(let r of Object.keys(i)){let s=Js(i[r],e);Object.defineProperty(n,r,{value:s,enumerable:!0,writable:!0,configurable:!0})}return e.delete(i),n},ii=Symbol("machina.type");var yp=class{constructor(i){A(this,"id",void 0),A(this,"initialState",void 0),A(this,ii,"BehavioralFsm"),A(this,"states",void 0),A(this,"emitter",new Ad),A(this,"clients",new WeakMap),A(this,"knownClients",new Set),A(this,"childSubscriptions",[]),A(this,"disposed",!1),A(this,"transitionDepth",0),this.id=i.id,this.initialState=i.initialState,this.states=i.states,this.wrapChildLinks(),this.setupChildSubscriptions()}handle(i,e){var t;if(this.disposed)return;let n=this.getOrCreateClientMeta(i);for(var r=arguments.length,s=new Array(r>2?r-2:0),a=2;a<r;a++)s[a-2]=arguments[a];n.currentActionArgs=s;let o=(t=this.states[n.state])===null||t===void 0?void 0:t._child;if(o&&o.canHandle(i,e))try{o.handle(i,e,...s)}finally{n.currentActionArgs=void 0}else this.handleLocally(i,e,s,n)}canHandle(i,e){var t,n,r;if(this.disposed)return!1;let s=(t=(n=this.clients.get(i))===null||n===void 0?void 0:n.state)!==null&&t!==void 0?t:this.initialState,a=this.states[s];if((r=a?.[e])!==null&&r!==void 0?r:a?.["*"])return!0;let o=a?._child;return!!o&&o.canHandle(i,e)}reset(i){this.disposed||this.transition(i,this.initialState)}currentState(i){var e;return(e=this.clients.get(i))===null||e===void 0?void 0:e.state}transition(i,e){if(this.disposed)return;let t=this.getOrCreateClientMeta(i),n=t.state;if(e!==n)if(Object.hasOwn(this.states,e)){if(this.transitionDepth++,this.transitionDepth>20)throw this.transitionDepth=0,new Error("Max transition depth (".concat(20,') exceeded in FSM "').concat(this.id,'". Likely an infinite _onEnter \u2192 transition loop.'));try{let r=this.states[n],s=this.states[e];if(r!=null&&r._onExit&&typeof r._onExit=="function"){let d=this.buildHandlerArgs(i,"",t);r._onExit(d)}t.state=e;let a={fromState:n,toState:e,client:i},o;if(this.emitter.emit("transitioning",a),s!=null&&s._onEnter&&typeof s._onEnter=="function"){let d=this.buildHandlerArgs(i,"",t);o=s._onEnter(d)}this.emitter.emit("transitioned",a);let c=s?._child;c&&c.reset(i),this.processQueue(i,t),typeof o=="string"&&t.state===e&&this.transition(i,o)}finally{this.transitionDepth--}}else this.emitter.emit("invalidstate",{stateName:e,client:i})}compositeState(i){var e;let t=this.clients.get(i);if(!t)return"";let n=(e=this.states[t.state])===null||e===void 0?void 0:e._child;if(n){let r=n.compositeState(i);if(r)return"".concat(t.state,".").concat(r)}return t.state}rehydrate(i,e){if(this.disposed)return;if(typeof e=="string")return void this.rehydrateCompositePath(i,e);let t=this.planSnapshotWrites(i,e);for(let n of t)n()}dehydrate(i){let e=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],t=this.clients.get(i);if(!t)return;let n={state:t.state,deferred:t.deferredQueue.map((s=>this.snapshotDeferredInput(s)))},r=this.collectChildSnapshots(i,t.state,e);return r&&(n.children=r),n}planSnapshotWrites(i,e){if(this.disposed)return[];let t=e.state,n=e.deferred,r=e.children;if(!Object.hasOwn(this.states,t))throw new Error('rehydrate: unknown state "'.concat(t,'" in FSM "').concat(this.id,'". Valid states: ').concat(Object.keys(this.states).join(", ")));let s=[];if(r)for(let c of Object.keys(r)){var a;if(!Object.hasOwn(this.states,c))throw new Error('rehydrate: unknown state "'.concat(c,'" in FSM "').concat(this.id,'" referenced by snapshot.children.'));let d=(a=this.states[c])===null||a===void 0?void 0:a._child;if(!d)throw new Error('rehydrate: state "'.concat(c,'" in FSM "').concat(this.id,'" has no _child, but the snapshot has a children["').concat(c,'"] entry.'));s.push(...d.planRehydrate(i,r[c]))}let o=n.map((c=>(function(d){for(var l=1;l<arguments.length;l++){var h=arguments[l]!=null?arguments[l]:{};l%2?Ga(Object(h),!0).forEach((function(p){A(d,p,h[p])})):Object.getOwnPropertyDescriptors?Object.defineProperties(d,Object.getOwnPropertyDescriptors(h)):Ga(Object(h)).forEach((function(p){Object.defineProperty(d,p,Object.getOwnPropertyDescriptor(h,p))}))}return d})({inputName:c.inputName,args:Js(c.args)},c.untilState!==void 0?{untilState:c.untilState}:{})));return s.push((()=>{this.clients.has(i)||this.knownClients.add(new WeakRef(i)),this.clients.set(i,{state:t,deferredQueue:o})})),s}rehydrateCompositePath(i,e){let t=du(e.split(".")),n=t[0],r=Or(t).slice(1);if(!Object.hasOwn(this.states,n))throw new Error('rehydrate: unknown state "'.concat(n,'" in FSM "').concat(this.id,'". Valid states: ').concat(Object.keys(this.states).join(", ")));if(r.length>0){var s;let a=r.join("."),o=(s=this.states[n])===null||s===void 0?void 0:s._child;if(!o)throw new Error('rehydrate: state "'.concat(n,'" in FSM "').concat(this.id,'" has no _child, but composite path "').concat(e,'" requires one.'));o.rehydrate(i,a)}this.clients.has(i)||this.knownClients.add(new WeakRef(i)),this.clients.set(i,{state:n,deferredQueue:[]})}collectChildSnapshots(i,e,t){let n=new Map;for(let a of Object.keys(this.states)){var r;let o=(r=this.states[a])===null||r===void 0?void 0:r._child;if(!o)continue;let c=n.get(o.instance);c?c.stateNames.push(a):n.set(o.instance,{childLink:o,stateNames:[a]})}let s;for(let a of n.values()){let o=a.childLink,c=a.stateNames,d=t&&c.includes(e);if(o.instance[ii]==="Fsm"&&!d)continue;let l=o.dehydrate(i,d);if(l){s!=null||(s={});for(let h of c)s[h]=l}}return s}snapshotDeferredInput(i){let e;try{t=i.args,e=Gs(t,"args",new Set)}catch(r){if(!(r instanceof Pn))throw r;let s=i.untilState?' (until "'.concat(i.untilState,'")'):"";throw new Error('dehydrate: deferred input "'.concat(i.inputName,'"').concat(s,' in FSM "').concat(this.id,'" has a non-serializable value at ').concat(r.path," (").concat(r.label,")"))}var t;let n={inputName:i.inputName,args:e};return i.untilState!==void 0&&(n.untilState=i.untilState),n}on(i,e){return this.disposed?{off(){}}:this.emitter.on(i,e)}emit(i,e){this.disposed||this.emitter.emit(i,e)}dispose(i){this.disposed=!0;for(let t of this.childSubscriptions)t.off();if(i==null||!i.preserveChildren){let t=new Set;for(let n of Object.keys(this.states)){var e;let r=(e=this.states[n])===null||e===void 0?void 0:e._child;r&&!t.has(r.instance)&&(t.add(r.instance),r.dispose())}}this.emitter.clear()}wrapChildLinks(){for(let i of Object.keys(this.states)){let e=this.states[i],t=e?._child;if(t){if(typeof t!="object")throw new Error('State "'.concat(i,'"._child: expected an Fsm or BehavioralFsm instance, got ').concat(String(t)));if(!(ii in t))throw new Error('State "'.concat(i,'"._child: expected an Fsm or BehavioralFsm instance, got a plain object'));e._child=bp(t)}}}setupChildSubscriptions(){let i=new Set;for(let t of Object.keys(this.states)){var e;let n=(e=this.states[t])===null||e===void 0?void 0:e._child;if(!n||i.has(n.instance))continue;i.add(n.instance);let r=n.onAny(((s,a)=>{if(s==="nohandler"){var o;let l=a;if(l.client!==void 0)this.bubbleNohandler(l.client,n,l.inputName,(o=l.args)!==null&&o!==void 0?o:[]);else for(let h of this.knownClients){var c;let p=h.deref();p!==void 0?this.bubbleNohandler(p,n,l.inputName,(c=l.args)!==null&&c!==void 0?c:[]):this.knownClients.delete(h)}return}let d=a;if(d&&typeof d=="object"&&"client"in d)this.isChildActiveForClient(d.client,n)&&this.emitter.emit(s,a);else for(let l of this.knownClients){let h=l.deref();if(h){if(this.isChildActiveForClient(h,n)){this.emitter.emit(s,a);break}}else this.knownClients.delete(l)}}));this.childSubscriptions.push(r)}}bubbleNohandler(i,e,t,n){if(!this.isChildActiveForClient(i,e))return;let r=this.clients.get(i);r.currentActionArgs=n,this.handleLocally(i,t,n,r)}isChildActiveForClient(i,e){var t;let n=this.clients.get(i);return!!n&&((t=this.states[n.state])===null||t===void 0||(t=t._child)===null||t===void 0?void 0:t.instance)===e.instance}handleLocally(i,e,t,n){var r;let s=this.states[n.state],a=(r=s?.[e])!==null&&r!==void 0?r:s?.["*"];if(!a)return this.emitter.emit("nohandler",{inputName:e,args:t,client:i}),void(n.currentActionArgs=void 0);try{this.emitter.emit("handling",{inputName:e,client:i});let o=this.buildHandlerArgs(i,e,n),c;typeof a=="string"?c=a:typeof a=="function"&&(c=a(o,...t)),this.emitter.emit("handled",{inputName:e,client:i}),typeof c=="string"&&this.transition(i,c)}finally{n.currentActionArgs=void 0}}getOrCreateClientMeta(i){let e=this.clients.get(i);return e||(e={state:void 0,deferredQueue:[]},this.clients.set(i,e),this.knownClients.add(new WeakRef(i)),this.transition(i,this.initialState),e)}buildHandlerArgs(i,e,t){return{ctx:i,inputName:e,defer:n=>{if(!t.currentActionArgs)return;let r={inputName:e,args:[...t.currentActionArgs],untilState:n?.until};t.deferredQueue.push(r),this.emitter.emit("deferred",{inputName:e,client:i})},emit:(n,r)=>{this.emitter.emit(n,r)}}}processQueue(i,e){let t=[],n=[];for(let r of e.deferredQueue)r.untilState===void 0||r.untilState===e.state?t.push(r):n.push(r);e.deferredQueue=n;for(let r of t)this.handle(i,r.inputName,...r.args)}};function bp(i){if(!i||typeof i!="object")throw new Error("createChildLink: expected an Fsm or BehavioralFsm instance, got ".concat(String(i)));let e=i[ii];if(e==="BehavioralFsm")return{instance:i,canHandle:(t,n)=>i.canHandle(t,n),handle(t,n){for(var r=arguments.length,s=new Array(r>2?r-2:0),a=2;a<r;a++)s[a-2]=arguments[a];i.handle(t,n,...s)},reset(t){i.transition(t,i.initialState)},onAny:t=>i.on("*",t),compositeState:t=>i.compositeState(t),rehydrate(t,n){i.rehydrate(t,n)},dehydrate:(t,n)=>i.dehydrate(t,n),planRehydrate:(t,n)=>i.planSnapshotWrites(t,n),dispose(){i.dispose()}};if(e==="Fsm")return{instance:i,canHandle:(t,n)=>i.canHandle(n),handle(t,n){for(var r=arguments.length,s=new Array(r>2?r-2:0),a=2;a<r;a++)s[a-2]=arguments[a];i.handle(n,...s)},reset(t){i.reset()},onAny:t=>i.on("*",t),compositeState:t=>i.compositeState(),rehydrate(t,n){throw new Error("rehydrate: cannot rehydrate an Fsm child. Fsm owns its own context; rehydrate is only valid for BehavioralFsm hierarchies.")},dehydrate(t,n){throw new Error("dehydrate: cannot dehydrate an Fsm child. Fsm owns its own context; dehydrate is only valid for BehavioralFsm hierarchies.")},planRehydrate(t,n){throw new Error("rehydrate: cannot rehydrate an Fsm child. Fsm owns its own context; rehydrate is only valid for BehavioralFsm hierarchies.")},dispose(){i.dispose()}};throw new Error("createChildLink: expected an Fsm or BehavioralFsm instance, got [MACHINA_TYPE] = ".concat(String(e??"undefined")))}var Tp=class{constructor(i){var e;A(this,"id",void 0),A(this,"initialState",void 0),A(this,ii,"Fsm"),A(this,"states",void 0),A(this,"bfsm",void 0),A(this,"context",void 0),A(this,"emitter",new Ad),A(this,"disposed",!1),this.id=i.id,this.initialState=i.initialState,this.context=(e=i.context)!==null&&e!==void 0?e:{},this.bfsm=new yp(i),this.states=i.states,this.bfsm.on("*",((t,n)=>{if(n&&typeof n=="object"&&"client"in n){n.client;let r=(function(s,a){if(s==null)return{};var o,c,d=(function(h,p){if(h==null)return{};var m={};for(var k in h)if({}.hasOwnProperty.call(h,k)){if(p.indexOf(k)!==-1)continue;m[k]=h[k]}return m})(s,a);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(s);for(c=0;c<l.length;c++)o=l[c],a.indexOf(o)===-1&&{}.propertyIsEnumerable.call(s,o)&&(d[o]=s[o])}return d})(n,fp);this.emitter.emit(t,r)}else this.emitter.emit(t,n)})),this.bfsm.transition(this.context,i.initialState)}handle(i){if(!this.disposed){for(var e=arguments.length,t=new Array(e>1?e-1:0),n=1;n<e;n++)t[n-1]=arguments[n];this.bfsm.handle(this.context,i,...t)}}canHandle(i){return!this.disposed&&this.bfsm.canHandle(this.context,i)}reset(){this.disposed||this.bfsm.reset(this.context)}currentState(){return this.bfsm.currentState(this.context)}transition(i){this.disposed||this.bfsm.transition(this.context,i)}compositeState(){return this.bfsm.compositeState(this.context)}on(i,e){return this.disposed?{off(){}}:this.emitter.on(i,e)}emit(i,e){this.disposed||this.bfsm.emit(i,e)}dispose(i){this.disposed=!0,this.bfsm.dispose(i),this.emitter.clear()}};function Ld(i,e){return e.attemptId===i.attemptId}let Nd=(i,e)=>{if(Ld(i.ctx,e))return"connected"},Qs=i=>{let e=i.ctx;return e.attemptId+=1,e.lastError=void 0,"connecting"},Ys=i=>{let e=i.ctx;return e.attemptId+=1,e.lastError=void 0,"reconnecting"},ri=(i,e)=>(i.ctx.closeReason=e.reason,"disconnecting"),Sp={new:{connect:Qs,close:ri},connecting:{connectComplete:Nd,connectFailed:(i,e)=>(i.ctx.lastError=e.error,"closed"),close:ri},connected:{reconnect:Ys,transportFailed:(i,e)=>{let t=i.ctx;if(Ld(t,e))return t.lastError=e.reason,"offline"},close:ri},offline:{connect:Qs,reconnect:Ys,close:ri},reconnecting:{reconnectComplete:Nd,reconnectFailed:(i,e)=>(i.ctx.lastError=e.error,e.recoverable?"offline":"closed"),close:ri},disconnecting:{closeComplete:"closed"},closed:{connect:Qs,reconnect:Ys}};function Ep(){return new Tp({id:"signal",initialState:arguments.length>0&&arguments[0]!==void 0?arguments[0]:"new",context:{attemptId:0},states:Sp})}class Cp{get readyState(){return this.ws.readyState}constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};var n,r;if(!((n=t.signal)===null||n===void 0)&&n.aborted)throw new DOMException("This operation was aborted","AbortError");this.url=e;let s=new WebSocket(e,(r=t.protocols)!==null&&r!==void 0?r:[]);s.binaryType="arraybuffer",this.ws=s;let a=function(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},c=o.closeCode,d=o.reason;return s.close(c,d)};this.opened=new Ie(((o,c)=>{let d=()=>{c(_.websocket("Encountered websocket error during connection establishment"))};s.onopen=()=>{o({readable:new ReadableStream({start(l){s.onmessage=h=>{let p=h.data;return l.enqueue(p)},s.onerror=h=>{return l.error(_.websocket((m="websocket",(p=h)instanceof Error?p.name&&p.message?"".concat(p.name,": ").concat(p.message):p.name:"Encountered unknown ".concat(m," error: ").concat(String(p)))));var p,m},s.onclose=h=>{h.wasClean||h.code===1e3?l.close():l.error(_.websocket("WS closed unexpectedly with code ".concat(h.code)))}},cancel:a}),writable:new WritableStream({write(l){s.send(l)},abort(){s.close()},close:a}),protocol:s.protocol,extensions:s.extensions}),s.removeEventListener("error",d)},s.addEventListener("error",d)})),this.closed=new Ie(((o,c)=>{let d=()=>f(this,void 0,void 0,(function*(){let l=new Ie((p=>{s.readyState!==WebSocket.CLOSED&&s.addEventListener("close",(m=>{p(m)}),{once:!0})})),h=yield Ie.race([we(250),l]);h?o(h):c(_.websocket("Encountered unspecified websocket error without a timely close event"))}));s.addEventListener("close",(l=>{let h=l.code,p=l.reason;o({closeCode:h,reason:p}),s.removeEventListener("error",d)})),s.addEventListener("error",d)})),t.signal&&(t.signal.onabort=()=>s.close()),this.close=a}}let wp=["syncState","trickle","offer","answer","simulate","leave"];var Me;(function(i){i[i.CONNECTING=0]="CONNECTING",i[i.CONNECTED=1]="CONNECTED",i[i.RECONNECTING=2]="RECONNECTING",i[i.DISCONNECTING=3]="DISCONNECTING",i[i.DISCONNECTED=4]="DISCONNECTED"})(Me||(Me={}));class Xs{get currentState(){return(function(e){switch(e){case"connected":return Me.CONNECTED;case"connecting":return Me.CONNECTING;case"reconnecting":return Me.RECONNECTING;case"disconnecting":return Me.DISCONNECTING;default:return Me.DISCONNECTED}})(this.lifecycleState)}get isDisconnected(){let e=this.currentState;return e===Me.DISCONNECTING||e===Me.DISCONNECTED}get lifecycleState(){return this.machine.currentState()}get attemptId(){return this.machine.context.attemptId}sendLifecycleInput(e){let t=this.lifecycleState;return this.machine.handle(e.type,e),this.lifecycleState!==t}settleInFlightClose(){return f(this,void 0,void 0,(function*(){this.log.debug("waiting for an in-flight close to settle before establishing a session"),(yield this.closingLock.lock())()}))}get isEstablishingConnection(){return this.lifecycleState==="connecting"||this.lifecycleState==="reconnecting"}getNextRequestId(){return this._requestId+=1,this._requestId}constructor(){let e=arguments.length>0&&arguments[0]!==void 0&&arguments[0],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};var n;this.rtt=0,this.log=V,this._requestId=0,this.useV0SignalPath=!1,this.resetCallbacks=()=>{this.onAnswer=void 0,this.onLeave=void 0,this.onLocalTrackPublished=void 0,this.onLocalTrackUnpublished=void 0,this.onNegotiateRequested=void 0,this.onOffer=void 0,this.onRemoteMuteChanged=void 0,this.onSubscribedQualityUpdate=void 0,this.onTokenRefresh=void 0,this.onTrickle=void 0,this.onClose=void 0,this.onMediaSectionsRequirement=void 0},this.loggerContextCb=t.loggerContextCb,this.log=he((n=t.loggerName)!==null&&n!==void 0?n:u.LoggerNames.Signal,(()=>this.logContext)),this.useJSON=e,this.requestQueue=new gp,this.queuedRequests=[],this.closingLock=new U,this.connectionLock=new U,this.machine=Ep(),this.machine.on("transitioned",(r=>{let s=r.fromState,a=r.toState;this.log.debug("signal lifecycle: ".concat(s," -> ").concat(a))})),this.machine.on("nohandler",(r=>{let s=r.inputName;this.log.debug("ignoring signal lifecycle input ".concat(s," in state ").concat(this.lifecycleState))})),this.machine}get logContext(){var e,t;return(t=(e=this.loggerContextCb)===null||e===void 0?void 0:e.call(this))!==null&&t!==void 0?t:{}}join(e,t,n,r){return f(this,arguments,void 0,(function(s,a,o,c){var d=this;let l=arguments.length>4&&arguments[4]!==void 0&&arguments[4],h=arguments.length>5?arguments[5]:void 0;return(function*(){if(d.lifecycleState==="disconnecting"&&(yield d.settleInFlightClose()),!d.sendLifecycleInput({type:"connect"}))throw _.internal("cannot establish a signal session from '".concat(d.lifecycleState,"', close the current one first"));d.options=o;try{return yield d.connect(s,a,o,c,l,h)}catch(p){throw d.sendLifecycleInput({type:"connectFailed",error:p}),p}})()}))}reconnect(e,t,n,r){return f(this,void 0,void 0,(function*(){if(this.options){if(this.lifecycleState==="disconnecting"&&(yield this.settleInFlightClose()),!this.sendLifecycleInput({type:"reconnect"}))throw _.internal("cannot resume the signal session from '".concat(this.lifecycleState,"'"));this.clearPingInterval();try{return yield this.connect(e,t,Object.assign(Object.assign({},this.options),{reconnect:!0,sid:n,reconnectReason:r}),void 0,this.useV0SignalPath)}catch(a){throw this.sendLifecycleInput({type:"reconnectFailed",error:a,recoverable:(s=a,!(s instanceof _)||s.reason!==u.ConnectionErrorReason.LeaveRequest&&s.reason!==u.ConnectionErrorReason.NotAllowed)}),a}var s}else this.log.warn("attempted to reconnect without signal options being set, ignoring")}))}connect(e,t,n,r){return f(this,arguments,void 0,(function(s,a,o,c){var d=this;let l=arguments.length>4&&arguments[4]!==void 0&&arguments[4],h=arguments.length>5?arguments[5]:void 0;return(function*(){let p=yield d.connectionLock.lock();d.connectOptions=o,d.useV0SignalPath=l;let m=(function(T){var E;let S=new Do({capabilities:T,sdk:_o.JS,protocol:17,clientProtocol:2,version:Jc});return tt()&&(S.os=(E=pd())!==null&&E!==void 0?E:""),S})(o.clientInfoCapabilities),k=l?(function(T,E,S){var C;let I=new URLSearchParams;return I.set("access_token",T),S.reconnect&&(I.set("reconnect","1"),S.sid&&I.set("sid",S.sid)),I.set("auto_subscribe",S.autoSubscribe?"1":"0"),I.set("sdk",tt()?"reactnative":"js"),I.set("version",E.version),I.set("protocol",E.protocol.toString()),I.set("client_protocol",E.clientProtocol.toString()),E.deviceModel&&I.set("device_model",E.deviceModel),E.os&&I.set("os",E.os),E.osVersion&&I.set("os_version",E.osVersion),E.browser&&I.set("browser",E.browser),E.browserVersion&&I.set("browser_version",E.browserVersion),S.adaptiveStream&&I.set("adaptive_stream","1"),S.reconnectReason&&I.set("reconnect_reason",S.reconnectReason.toString()),!((C=navigator.connection)===null||C===void 0)&&C.type&&I.set("network",navigator.connection.type),I})(a,m,o):yield(function(T,E,S,C){return f(this,void 0,void 0,(function*(){let I=new URLSearchParams;I.set("access_token",T);let O=new Fh({clientInfo:E,connectionSettings:new Zo({autoSubscribe:!!S.autoSubscribe,adaptiveStream:!!S.adaptiveStream}),reconnect:!!S.reconnect,participantSid:S.sid?S.sid:void 0,publisherOffer:C});S.reconnectReason&&(O.reconnectReason=S.reconnectReason);let N=O.toBinary(),Z,B;if(Ut()){let x=new CompressionStream("gzip"),ne=x.writable.getWriter();ne.write(new Uint8Array(N)),ne.close();let se=[],je=x.readable.getReader();for(;;){let te=yield je.read(),Oe=te.done,br=te.value;if(Oe)break;se.push(br)}let ce=se.reduce(((te,Oe)=>te+Oe.length),0),qe=new Uint8Array(ce),Dt=0;for(let te of se)qe.set(te,Dt),Dt+=te.length;Z=qe,B=ns.GZIP}else Z=N,B=ns.NONE;let F=new Bh({joinRequest:Z,compression:B}).toBinary(),ee=x=>{let ne=Array.from(x,(se=>String.fromCodePoint(se))).join("");return btoa(ne)};return I.set("join_request",ee(F).replace(/\+/g,"-").replace(/\//g,"_")),I}))})(a,m,o,h),g=cp(s,k,l).toString(),v=(b=g,Us(new URL($n(b)),"validate")).toString();var b;return new Promise(((T,E)=>f(d,void 0,void 0,(function*(){var S,C;try{let I=!1,O=x=>f(this,void 0,void 0,(function*(){if(I)return;I=!0;let ne=(function(se){let je=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"Unknown reason";if(se instanceof Error)return se.message;if(!(se instanceof AbortSignal))return je;let ce=se.reason;switch(typeof ce){case"string":return ce;case"object":return ce instanceof Error?ce.message:je;default:return"toString"in ce?ce.toString():je}})(x instanceof Event?x.currentTarget:x,"Abort handler called");this.streamWriter&&!this.isDisconnected?this.sendLeave().then((()=>this.close(ne))).catch((se=>{this.log.error(se),this.close()})):this.close(),N(),E(x instanceof _?x:_.cancelled(ne))}));c?.addEventListener("abort",O);let N=()=>{clearTimeout(Z),c?.removeEventListener("abort",O)},Z=setTimeout((()=>{O(_.timeout("room connection has timed out (signal)"))}),o.websocketTimeout),B=new URL(g);if(B.searchParams.has("access_token")&&B.searchParams.set("access_token","<redacted>"),this.ws){let x=performance.now();yield this.teardownTransport("replaced by a new connection attempt"),this.log.debug("closed previous ws connection in ".concat(performance.now()-x,"ms"))}let F=this.attemptId;this.log.info("signal connecting to ".concat(B),{reconnect:o.reconnect,reconnectReason:o.reconnectReason}),this.ws=new Cp(g);let ee=!1;this.ws.opened.catch((()=>{ee=!0}));try{this.ws.closed.then((te=>{this.isEstablishingConnection&&!ee&&E(_.internal("Websocket got closed during a (re)connection attempt: ".concat(te.reason))),this.log.debug("websocket closed",{reason:te.reason,code:te.closeCode,attemptId:F,state:this.lifecycleState}),this.handleOnClose(te.reason||(te.closeCode===1e3?"server closed the signal connection":"Unexpected WS error"),F)})).catch((te=>{this.isEstablishingConnection&&!ee&&E(_.internal("Websocket error during a (re)connection attempt: ".concat(te)))}));let x=yield this.ws.opened.catch((te=>f(this,void 0,void 0,(function*(){if(this.lifecycleState==="connected")this.handleWSError(te),E(te);else{clearTimeout(Z);let Oe=yield this.handleConnectionError(te,v);E(Oe)}}))));if(clearTimeout(Z),!x)return;let ne=x.readable.getReader(),se,je;this.streamWriter=x.writable.getWriter();try{se=yield Promise.race([ne.read(),new Promise(((te,Oe)=>{je=setTimeout((()=>{Oe(_.timeout("signal connection timed out while waiting for the first message"))}),5e3)}))])}catch(te){return ne.releaseLock(),E(te),void this.close()}finally{clearTimeout(je)}if(ne.releaseLock(),!se.value)throw _.internal("no message received as first message");let ce=Td(se.value),qe=this.validateFirstMessage(ce,(S=o.reconnect)!==null&&S!==void 0&&S);if(!qe.isValid)return void E(qe.error);((C=ce.message)===null||C===void 0?void 0:C.case)==="join"&&(this.pingTimeoutDuration=ce.message.value.pingTimeout,this.pingIntervalDuration=ce.message.value.pingInterval,this.pingTimeoutDuration&&this.pingTimeoutDuration>0&&this.log.debug("ping config",{timeout:this.pingTimeoutDuration,interval:this.pingIntervalDuration}),this.onJoined&&this.onJoined(ce.message.value));let Dt=qe.shouldProcessFirstMessage?ce:void 0;this.handleSignalConnected(x,Z,F,Dt),T(qe.response)}catch(x){E(x)}finally{N()}}finally{p()}}))))})()}))}startReadingLoop(e,t){return f(this,void 0,void 0,(function*(){t&&this.handleSignalResponse(t);let n=this.attemptId;for(;;){this.signalLatency&&(yield we(this.signalLatency));try{let r=yield e.read(),s=r.done,a=r.value;if(s)break;let o=Td(a);this.handleSignalResponse(o)}catch(r){this.log.error("error reading from signal stream",{error:r}),yield this.handleOnClose("error in reading loop",n);break}}}))}close(){return f(this,arguments,void 0,(function(){var e=this;let t=!(arguments.length>0&&arguments[0]!==void 0)||arguments[0],n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"Close method called on signal client";return(function*(){let r=t&&e.sendLifecycleInput({type:"close",reason:n}),s=yield e.closingLock.lock();try{yield e.teardownTransport(n)}finally{r&&e.sendLifecycleInput({type:"closeComplete"}),s()}})()}))}teardownTransport(e){return f(this,void 0,void 0,(function*(){try{if(this.clearPingInterval(),this.ws){this.ws.close({closeCode:1e3,reason:e});let t=this.ws.closed;this.ws=void 0,this.streamWriter=void 0,yield Promise.race([t,we(250)])}}catch(t){this.log.debug("websocket error while closing",{error:t})}}))}sendOffer(e,t){this.log.debug("sending offer",{offerSdp:e.sdp}),this.sendRequest({case:"offer",value:$t(e,t)})}sendAnswer(e,t){return this.log.debug("sending answer",{answerSdp:e.sdp}),this.sendRequest({case:"answer",value:$t(e,t)})}sendIceCandidate(e,t){return this.log.debug("sending ice candidate",{candidate:e}),this.sendRequest({case:"trickle",value:new Ui({candidateInit:JSON.stringify(e),target:t})})}sendMuteTrack(e,t){return this.sendRequest({case:"mute",value:new Fi({sid:e,muted:t})})}sendAddTrack(e){return this.sendRequest({case:"addTrack",value:e})}sendUpdateLocalMetadata(e,t){return f(this,arguments,void 0,(function(n,r){var s=this;let a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return(function*(){let o=s.getNextRequestId();return yield s.sendRequest({case:"updateMetadata",value:new Zr({requestId:o,metadata:n,name:r,attributes:a})}),o})()}))}sendUpdateTrackSettings(e){this.sendRequest({case:"trackSetting",value:e})}sendUpdateSubscription(e){return this.sendRequest({case:"subscription",value:e})}sendSyncState(e){return this.sendRequest({case:"syncState",value:e})}sendUpdateVideoLayers(e,t){return this.sendRequest({case:"updateLayers",value:new zo({trackSid:e,layers:t})})}sendUpdateSubscriptionPermissions(e,t){return this.sendRequest({case:"subscriptionPermission",value:new Qo({allParticipants:e,trackPermissions:t})})}sendSimulateScenario(e){return this.sendRequest({case:"simulate",value:e})}sendPing(){return Promise.all([this.sendRequest({case:"ping",value:ae.parse(Date.now())}),this.sendRequest({case:"pingReq",value:new $o({timestamp:ae.parse(Date.now()),rtt:ae.parse(this.rtt)})})])}sendUpdateLocalAudioTrack(e,t){return this.sendRequest({case:"updateAudioTrack",value:new $r({trackSid:e,features:t})})}sendLeave(){return this.sendRequest({case:"leave",value:new ji({reason:xe.CLIENT_INITIATED,action:un.DISCONNECT})})}sendPublishDataTrackRequest(e,t,n){return this.sendRequest({case:"publishDataTrackRequest",value:new Jr({pubHandle:e,name:t,encryption:n?G.GCM:G.NONE})})}sendUnPublishDataTrackRequest(e){return this.sendRequest({case:"unpublishDataTrackRequest",value:new Yr({pubHandle:e})})}sendUpdateDataSubscription(e,t){return this.sendRequest({case:"updateDataSubscription",value:new Vo({updates:[new Wo({trackSid:e,subscribe:t})]})})}sendRequest(e){return f(this,arguments,void 0,(function(t){var n=this;let r=arguments.length>1&&arguments[1]!==void 0&&arguments[1];return(function*(){let s=!r&&!(function(d){let l=wp.indexOf(d.case)>=0;return V.trace("request allowed to bypass queue:",{canPass:l,req:d}),l})(t),a=n.lifecycleState==="reconnecting"||n.queuedRequests.length>0;if(s&&a)return void n.queuedRequests.push((()=>f(n,void 0,void 0,(function*(){yield this.sendRequest(t,!0)}))));r||(yield n.requestQueue.flush()),n.signalLatency&&(yield we(n.signalLatency));let o=t.case==="leave"&&!!n.streamWriter;if(n.isDisconnected&&!o)return void n.log.debug("skipping signal request (type: ".concat(t.case,") - SignalClient disconnected"));if(!n.streamWriter)return void n.log.error("cannot send signal request before connected, type: ".concat(t?.case));let c=new dh({message:t});try{n.useJSON?yield n.streamWriter.write(c.toJsonString()):yield n.streamWriter.write(c.toBinary().buffer)}catch(d){n.log.error("error sending signal message",{error:d})}})()}))}handleSignalResponse(e){var t,n;let r=e.message;if(r==null)return void this.log.debug("received unsupported message");let s=!1;if(r.case==="answer"){let a=xd(r.value);this.onAnswer&&this.onAnswer(a,r.value.id,r.value.midToTrackId)}else if(r.case==="offer"){let a=xd(r.value);this.onOffer&&this.onOffer(a,r.value.id,r.value.midToTrackId)}else if(r.case==="trickle"){let a=JSON.parse(r.value.candidateInit);this.onTrickle&&this.onTrickle(a,r.value.target)}else r.case==="update"?this.onParticipantUpdate&&this.onParticipantUpdate((t=r.value.participants)!==null&&t!==void 0?t:[]):r.case==="trackPublished"?this.onLocalTrackPublished&&this.onLocalTrackPublished(r.value):r.case==="speakersChanged"?this.onSpeakersChanged&&this.onSpeakersChanged((n=r.value.speakers)!==null&&n!==void 0?n:[]):r.case==="leave"?this.onLeave&&this.onLeave(r.value):r.case==="mute"?this.onRemoteMuteChanged&&this.onRemoteMuteChanged(r.value.sid,r.value.muted):r.case==="roomUpdate"?this.onRoomUpdate&&r.value.room&&this.onRoomUpdate(r.value.room):r.case==="connectionQuality"?this.onConnectionQuality&&this.onConnectionQuality(r.value):r.case==="streamStateUpdate"?this.onStreamStateUpdate&&this.onStreamStateUpdate(r.value):r.case==="subscribedQualityUpdate"?this.onSubscribedQualityUpdate&&this.onSubscribedQualityUpdate(r.value):r.case==="subscriptionPermissionUpdate"?this.onSubscriptionPermissionUpdate&&this.onSubscriptionPermissionUpdate(r.value):r.case==="refreshToken"?this.onTokenRefresh&&this.onTokenRefresh(r.value):r.case==="trackUnpublished"?this.onLocalTrackUnpublished&&this.onLocalTrackUnpublished(r.value):r.case==="subscriptionResponse"?this.onSubscriptionError&&this.onSubscriptionError(r.value):r.case==="pong"||(r.case==="pongResp"?(this.rtt=Date.now()-Number.parseInt(r.value.lastPingTimestamp.toString()),this.resetPingTimeout(),s=!0):r.case==="requestResponse"?this.onRequestResponse&&this.onRequestResponse(r.value):r.case==="trackSubscribed"?this.onLocalTrackSubscribed&&this.onLocalTrackSubscribed(r.value.trackSid):r.case==="roomMoved"?(this.onTokenRefresh&&this.onTokenRefresh(r.value.token),this.onRoomMoved&&this.onRoomMoved(r.value)):r.case==="mediaSectionsRequirement"?this.onMediaSectionsRequirement&&this.onMediaSectionsRequirement(r.value):r.case==="publishDataTrackResponse"?this.onPublishDataTrackResponse&&this.onPublishDataTrackResponse(r.value):r.case==="unpublishDataTrackResponse"?this.onUnPublishDataTrackResponse&&this.onUnPublishDataTrackResponse(r.value):r.case==="dataTrackSubscriberHandles"?this.onDataTrackSubscriberHandles&&this.onDataTrackSubscriberHandles(r.value):this.log.debug("unsupported message",{msgCase:r.case}));s||this.resetPingTimeout()}setReconnected(){for(;this.queuedRequests.length>0;){let e=this.queuedRequests.shift();e&&this.requestQueue.run(e)}}handleOnClose(e){return f(this,arguments,void 0,(function(t){var n=this;let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.attemptId;return(function*(){let s=n.onClose;n.sendLifecycleInput({type:"transportFailed",attemptId:r,reason:t})?(yield n.teardownTransport(t),n.log.info("websocket connection closed: ".concat(t),{reason:t}),s&&s(t)):n.log.debug("ignoring transport close in state ".concat(n.lifecycleState),{reason:t,attemptId:r,currentAttemptId:n.attemptId})})()}))}handleWSError(e){this.log.error("websocket error",{error:e})}resetPingTimeout(){this.clearPingTimeout(),this.pingTimeoutDuration?this.pingTimeout=Q.setTimeout((()=>{this.log.warn("ping timeout triggered. last pong received at: ".concat(new Date(Date.now()-1e3*this.pingTimeoutDuration).toUTCString())),this.handleOnClose("ping timeout")}),1e3*this.pingTimeoutDuration):this.log.warn("ping timeout duration not set")}clearPingTimeout(){this.pingTimeout&&Q.clearTimeout(this.pingTimeout)}startPingInterval(){this.clearPingInterval(),this.resetPingTimeout(),this.pingIntervalDuration?(this.log.debug("start ping interval"),this.pingInterval=Q.setInterval((()=>{this.sendPing()}),1e3*this.pingIntervalDuration)):this.log.warn("ping interval duration not set")}clearPingInterval(){this.log.debug("clearing ping interval"),this.clearPingTimeout(),this.pingInterval&&Q.clearInterval(this.pingInterval)}handleSignalConnected(e,t,n,r){clearTimeout(t),this.sendLifecycleInput(this.lifecycleState==="reconnecting"?{type:"reconnectComplete",attemptId:n}:{type:"connectComplete",attemptId:n})?(this.log.info("signal connected"),this.startPingInterval(),this.startReadingLoop(e.readable.getReader(),r)):this.log.debug("discarding a connection whose attempt no longer owns the session",{attemptId:n,currentAttemptId:this.attemptId,state:this.lifecycleState})}validateFirstMessage(e,t){var n,r,s,a,o;return((n=e.message)===null||n===void 0?void 0:n.case)==="join"?{isValid:!0,response:e.message.value}:this.lifecycleState==="reconnecting"&&((r=e.message)===null||r===void 0?void 0:r.case)!=="leave"?((s=e.message)===null||s===void 0?void 0:s.case)==="reconnect"?{isValid:!0,response:e.message.value}:(this.log.debug("declaring signal reconnected without reconnect response received"),{isValid:!0,response:void 0,shouldProcessFirstMessage:!0}):this.isEstablishingConnection&&((a=e.message)===null||a===void 0?void 0:a.case)==="leave"?{isValid:!1,error:_.leaveRequest("Received leave request while trying to (re)connect",e.message.value.reason)}:t?{isValid:!1,error:_.internal("Unexpected first message")}:{isValid:!1,error:_.internal("did not receive join response, got ".concat((o=e.message)===null||o===void 0?void 0:o.case," instead"))}}handleConnectionError(e,t){return f(this,void 0,void 0,(function*(){try{let n=yield fetch(t);switch(n.status){case 404:let r=yield n.text();return r.includes("requested room does not exist")?_.notAllowed(r,n.status):_.serviceNotFound("v1 RTC path not found. Consider upgrading your LiveKit server version","v0-rtc");case 401:case 403:let s=yield n.text();return _.notAllowed(s,n.status)}return e instanceof _?e:_.internal("Encountered unknown websocket error during connection: ".concat(e),{status:n.status,statusText:n.statusText})}catch(n){return n instanceof _?n:_.serverUnreachable(n instanceof Error?n.message:"server was not reachable")}}))}}function xd(i){let e={type:"offer",sdp:i.sdp};switch(i.type){case"answer":case"offer":case"pranswer":case"rollback":e.type=i.type}return e}function $t(i,e){return new Nt({sdp:i.sdp,type:i.type,id:e})}class Rp{constructor(e){this._map=new Map,this._lastCleanup=0,this.ttl=e}set(e,t){let n=Date.now();n-this._lastCleanup>this.ttl/2&&this.cleanup();let r=n+this.ttl;return this._map.set(e,{value:t,expiresAt:r}),this}get(e){let t=this._map.get(e);if(t){if(!(t.expiresAt<Date.now()))return t.value;this._map.delete(e)}}has(e){let t=this._map.get(e);return!!t&&(!(t.expiresAt<Date.now())||(this._map.delete(e),!1))}delete(e){return this._map.delete(e)}clear(){this._map.clear()}cleanup(){let e=Date.now();for(let n of this._map.entries()){var t=D(n,2);let r=t[0];t[1].expiresAt<e&&this._map.delete(r)}this._lastCleanup=e}get size(){return this.cleanup(),this._map.size}forEach(e){this.cleanup();for(let n of this._map.entries()){var t=D(n,2);let r=t[0],s=t[1];s.expiresAt>=Date.now()&&e(s.value,r,this.asValueMap())}}map(e){this.cleanup();let t=[],n=this.asValueMap();for(let s of n.entries()){var r=D(s,2);let a=r[0],o=r[1];t.push(e(o,a,n))}return t}asValueMap(){let e=new Map;for(let n of this._map.entries()){var t=D(n,2);let r=t[0],s=t[1];s.expiresAt>=Date.now()&&e.set(r,s.value)}return e}}var Ud,Fd,$s,Bd,jd,st={},qd={},Zs={exports:{}};function ea(){if(Ud)return Zs.exports;Ud=1;var i=Zs.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 e.address!=null?"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 e.subtype!=null?"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 e.sessionConfig!=null?"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+=e.raddr!=null?" raddr %s rport %d":"%v%v",t+=e.tcptype!=null?" tcptype %s":"%v",e.generation!=null&&(t+=" generation %d"),t+=e["network-id"]!=null?" network-id %d":"%v",t+=e["network-cost"]!=null?" 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 e.attribute!=null&&(t+=" %s",e.value!=null&&(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 e.maxMessageSize!=null?"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"+(e.clksrcExt!=null?"=%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+=e.id!=null?"id=%s %s":"%v%s",t+=e.mediaClockValue!=null?"=%s":"",t+=e.rateNumerator!=null?" rate=%s":"",t+=e.rateDenominator!=null?"/%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"]}]};return Object.keys(i).forEach((function(e){i[e].forEach((function(t){t.reg||(t.reg=/(.*)/),t.format||(t.format="%s")}))})),Zs.exports}function Pp(){return Fd||(Fd=1,(function(i){var e=function(a){return String(Number(a))===a?Number(a):a},t=function(a,o,c){var d=a.name&&a.names;a.push&&!o[a.push]?o[a.push]=[]:d&&!o[a.name]&&(o[a.name]={});var l=a.push?{}:d?o[a.name]:o;(function(h,p,m,k){if(k&&!m)p[k]=e(h[1]);else for(var g=0;g<m.length;g+=1)h[g+1]!=null&&(p[m[g]]=e(h[g+1]))})(c.match(a.reg),l,a.names,a.name),a.push&&o[a.push].push(l)},n=ea(),r=RegExp.prototype.test.bind(/^([a-z])=(.*)/);i.parse=function(a){var o={},c=[],d=o;return a.split(/(\r\n|\r|\n)/).filter(r).forEach((function(l){var h=l[0],p=l.slice(2);h==="m"&&(c.push({rtp:[],fmtp:[]}),d=c[c.length-1]);for(var m=0;m<(n[h]||[]).length;m+=1){var k=n[h][m];if(k.reg.test(p))return t(k,d,p)}})),o.media=c,o};var s=function(a,o){var c=o.split(/=(.+)/,2);return c.length===2?a[c[0]]=e(c[1]):c.length===1&&o.length>1&&(a[c[0]]=void 0),a};i.parseParams=function(a){return a.split(/;\s?/).reduce(s,{})},i.parseFmtpConfig=i.parseParams,i.parsePayloads=function(a){return a.toString().split(" ").map(Number)},i.parseRemoteCandidates=function(a){for(var o=[],c=a.split(" ").map(e),d=0;d<c.length;d+=3)o.push({component:c[d],ip:c[d+1],port:c[d+2]});return o},i.parseImageAttributes=function(a){return a.split(" ").map((function(o){return o.substring(1,o.length-1).split(",").reduce(s,{})}))},i.parseSimulcastStreamList=function(a){return a.split(";").map((function(o){return o.split(",").map((function(c){var d,l=!1;return c[0]!=="~"?d=e(c):(d=e(c.substring(1,c.length)),l=!0),{scid:d,paused:l}}))}))}})(qd)),qd}function Ip(){if(Bd)return $s;Bd=1;var i=ea(),e=/%[sdv%]/g,t=function(a){var o=1,c=arguments,d=c.length;return a.replace(e,(function(l){if(o>=d)return l;var h=c[o];switch(o+=1,l){case"%%":return"%";case"%s":return String(h);case"%d":return Number(h);case"%v":return""}}))},n=function(a,o,c){var d=[a+"="+(o.format instanceof Function?o.format(o.push?c:c[o.name]):o.format)];if(o.names)for(var l=0;l<o.names.length;l+=1){var h=o.names[l];o.name?d.push(c[o.name][h]):d.push(c[o.names[l]])}else d.push(c[o.name]);return t.apply(null,d)},r=["v","o","s","i","u","e","p","c","b","t","r","z","a"],s=["i","c","b","a"];return $s=function(a,o){o=o||{},a.version==null&&(a.version=0),a.name==null&&(a.name=" "),a.media.forEach((function(h){h.payloads==null&&(h.payloads="")}));var c=o.outerOrder||r,d=o.innerOrder||s,l=[];return c.forEach((function(h){i[h].forEach((function(p){p.name in a&&a[p.name]!=null?l.push(n(h,p,a)):p.push in a&&a[p.push]!=null&&a[p.push].forEach((function(m){l.push(n(h,p,m))}))}))})),a.media.forEach((function(h){l.push(n("m",i.m[0],h)),d.forEach((function(p){i[p].forEach((function(m){m.name in h&&h[m.name]!=null?l.push(n(p,m,h)):m.push in h&&h[m.push]!=null&&h[m.push].forEach((function(k){l.push(n(p,m,k))}))}))}))})),l.join(`\r
`)+`\r
`},$s}var Ye=(function(){if(jd)return st;jd=1;var i=Pp(),e=Ip(),t=ea();return st.grammar=t,st.write=e,st.parse=i.parse,st.parseParams=i.parseParams,st.parseFmtpConfig=i.parseFmtpConfig,st.parsePayloads=i.parsePayloads,st.parseRemoteCandidates=i.parseRemoteCandidates,st.parseImageAttributes=i.parseImageAttributes,st.parseSimulcastStreamList=i.parseSimulcastStreamList,st})();let Mp="negotiationStarted",Dp="negotiationComplete",ta="offerAnswered",na="rtpVideoPayloadTypes";class Vd extends Ue.EventEmitter{get pc(){return this._pc||(this._pc=this.createPC()),this._pc}constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};var n;super(),this.log=V,this.iceLog=V,this.ddExtID=0,this.latestOfferId=0,this.latestAcknowledgedOfferId=0,this.pendingCandidates=[],this.restartingIce=!1,this.renegotiate=!1,this.trackBitrates=[],this.remoteStereoMids=[],this.remoteNackMids=[],this.negotiate=Bs((r=>f(this,void 0,void 0,(function*(){this.emit(Mp);try{yield this.createAndSendOffer()}catch(s){if(!r)throw s;r(s)}}))),20),this.close=()=>{this._pc&&(this.log.debug("closing peer connection"),this.pendingInitialOffer=void 0,this._pc.close(),this._pc.onconnectionstatechange=null,this._pc.oniceconnectionstatechange=null,this._pc.onicegatheringstatechange=null,this._pc.ondatachannel=null,this._pc.onnegotiationneeded=null,this._pc.onsignalingstatechange=null,this._pc.onicecandidate=null,this._pc.ondatachannel=null,this._pc.ontrack=null,this._pc.onconnectionstatechange=null,this._pc.oniceconnectionstatechange=null,this._pc=null)},this.loggerOptions=t,this.log=he((n=t.loggerName)!==null&&n!==void 0?n:u.LoggerNames.PCTransport,(()=>this.logContext)),this.iceLog=he(u.LoggerNames.ICE,(()=>this.logContext)),this.config=e,this._pc=this.createPC(),this.offerLock=new U}createPC(){let e=new RTCPeerConnection(this.config);return e.onicecandidate=t=>{var n;t.candidate&&(this.iceLog.debug("local ICE candidate gathered",{candidate:t.candidate.candidate}),(n=this.onIceCandidate)===null||n===void 0||n.call(this,t.candidate))},e.onicecandidateerror=t=>{var n;this.iceLog.debug("ICE candidate error",{event:t}),(n=this.onIceCandidateError)===null||n===void 0||n.call(this,t)},e.oniceconnectionstatechange=()=>{var t;this.iceLog.debug("ICE connection state: ".concat(e.iceConnectionState)),(t=this.onIceConnectionStateChange)===null||t===void 0||t.call(this,e.iceConnectionState)},e.onsignalingstatechange=()=>{var t;this.log.debug("signaling state: ".concat(e.signalingState)),(t=this.onSignalingStatechange)===null||t===void 0||t.call(this,e.signalingState)},e.onconnectionstatechange=()=>{var t;this.log.debug("connection state: ".concat(e.connectionState)),(t=this.onConnectionStateChange)===null||t===void 0||t.call(this,e.connectionState)},e.ondatachannel=t=>{var n;this.log.debug("data channel opened by peer",{label:t.channel.label,id:t.channel.id}),(n=this.onDataChannel)===null||n===void 0||n.call(this,t)},e.ontrack=t=>{var n;(n=this.onTrack)===null||n===void 0||n.call(this,t)},e}get logContext(){var e,t;return Object.assign({},(t=(e=this.loggerOptions).loggerContextCb)===null||t===void 0?void 0:t.call(e))}get isICEConnected(){return this._pc!==null&&(this.pc.iceConnectionState==="connected"||this.pc.iceConnectionState==="completed")}addIceCandidate(e){return f(this,void 0,void 0,(function*(){if(this.pc.remoteDescription&&!this.restartingIce)return this.pc.addIceCandidate(e);this.iceLog.debug("queuing remote ICE candidate until remote description applied",{pendingCount:this.pendingCandidates.length+1}),this.pendingCandidates.push(e)}))}setRemoteDescription(e,t){return f(this,void 0,void 0,(function*(){var n,r;if(e.type==="answer"&&this.latestOfferId>0&&t>0&&t!==this.latestOfferId)return this.log.warn("ignoring answer for old offer",{offerId:t,latestOfferId:this.latestOfferId}),!1;let s;if(e.type==="offer"){let a=(function(d){var l;let h=[],p=[],m=Ye.parse((l=d.sdp)!==null&&l!==void 0?l:""),k=0;return m.media.forEach((g=>{var v;let b=si(g.mid);g.type==="audio"&&(g.rtp.some((T=>T.codec.toLowerCase()==="opus"&&(k=T.payload,!0))),!((v=g.rtcpFb)===null||v===void 0)&&v.some((T=>T.payload===k&&T.type==="nack"))&&p.push(b),g.fmtp.some((T=>T.payload===k&&(Hd(T.config,"sprop-stereo=1")&&h.push(b),!0))))})),{stereoMids:h,nackMids:p}})(e),o=a.stereoMids,c=a.nackMids;this.remoteStereoMids=o,this.remoteNackMids=c}else if(e.type==="answer"){if(this.pendingInitialOffer&&this._pc){let c=this.pendingInitialOffer;this.pendingInitialOffer=void 0;let d=Ye.parse((n=c.sdp)!==null&&n!==void 0?n:"");d.media.forEach((l=>{cr(l)})),this.log.debug("setting pending initial offer before processing answer"),yield this.setMungedSDP(c,Ye.write(d))}let a=Ye.parse((r=e.sdp)!==null&&r!==void 0?r:"");a.media.forEach((c=>{let d=si(c.mid);c.type==="audio"&&this.trackBitrates.some((l=>{if(!l.transceiver||d!=l.transceiver.mid)return!1;let h=0;if(c.rtp.some((m=>m.codec.toUpperCase()===l.codec.toUpperCase()&&(h=m.payload,!0))),h===0)return!0;let p=!1;for(let m of c.fmtp)if(m.payload===h){m.config=m.config.split(";").filter((k=>!k.includes("maxaveragebitrate"))).join(";"),l.maxbr>0&&(m.config+=";maxaveragebitrate=".concat(1e3*l.maxbr)),p=!0;break}return p||l.maxbr>0&&c.fmtp.push({payload:h,config:"maxaveragebitrate=".concat(1e3*l.maxbr)}),!0}))}));let o=this.getPlaceholderMids();o.size>0&&zd(a.media,(c=>o.has(si(c.mid)))),s=Ye.write(a)}return yield this.setMungedSDP(e,s,!0),this.pendingCandidates.length>0&&this.iceLog.debug("flushing queued ICE candidates",{count:this.pendingCandidates.length}),this.pendingCandidates.forEach((a=>{this.pc.addIceCandidate(a)})),this.pendingCandidates=[],this.restartingIce=!1,e.type==="answer"&&(this.latestAcknowledgedOfferId=t,this.emit(ta,t)),this.renegotiate?(this.renegotiate=!1,yield this.createAndSendOffer()):e.type==="answer"&&(this.emit(Dp),e.sdp)&&Ye.parse(e.sdp).media.forEach((a=>{a.type==="video"&&this.emit(na,a.rtp)})),!0}))}createInitialOffer(){return f(this,void 0,void 0,(function*(){var e;let t=yield this.offerLock.lock();try{if(this.pc.signalingState!=="stable")return void this.log.warn("signaling state is not stable, cannot create initial offer");let n=this.latestOfferId+1;this.latestOfferId=n;let r=yield this.pc.createOffer();this.pendingInitialOffer={sdp:r.sdp,type:r.type};let s=Ye.parse((e=r.sdp)!==null&&e!==void 0?e:"");return s.media.forEach((a=>{cr(a)})),r.sdp=Ye.write(s),{offer:r,offerId:n}}finally{t()}}))}createAndSendOffer(e){return f(this,void 0,void 0,(function*(){var t;let n=yield this.offerLock.lock();try{if(this.onOffer===void 0)return;if(e?.iceRestart&&(this.iceLog.debug("restarting ICE"),this.restartingIce=!0),this._pc&&(this._pc.signalingState==="have-local-offer"||this.pendingInitialOffer)){let c=this._pc.remoteDescription;if(!e?.iceRestart||!c){if(e?.iceRestart)throw new wt("ICE restart requested without a remote description, peer connection must be recreated");return this.renegotiate=!0,void this.log.debug("requesting renegotiation")}yield this._pc.setRemoteDescription(c)}else if(!this._pc||this._pc.signalingState==="closed")return void this.log.warn("could not createOffer with closed peer connection");this.log.debug("starting to negotiate");let r=this.latestOfferId+1;this.latestOfferId=r;let s=yield this.pc.createOffer(e);this.log.debug("original offer",{sdp:s.sdp});let a=Ye.parse((t=s.sdp)!==null&&t!==void 0?t:"");a.media.forEach((c=>{cr(c),c.type==="audio"?Kd(c,["all"],[]):c.type==="video"&&this.trackBitrates.some((d=>{if(!d.cid)return!1;let l=(function(h,p,m,k){let g=arguments.length>4&&arguments[4]!==void 0&&arguments[4];var v,b,T;if(!(!((v=h.msid)===null||v===void 0)&&v.includes(p)))return;let E=(T=(b=h.rtp.find((O=>O.codec.toUpperCase()===m.toUpperCase())))===null||b===void 0?void 0:b.payload)!==null&&T!==void 0?T:0;if(E===0)return 0;let S=Math.round(.9*k),C=g?S:Math.min(S,1e3),I=h.fmtp.find((O=>O.payload===E));return I?I.config.includes("x-google-start-bitrate")||(I.config+=";x-google-start-bitrate=".concat(C)):h.fmtp.push({payload:E,config:"x-google-start-bitrate=".concat(C)}),E})(c,d.cid,d.codec,d.maxbr,d.isScreenShare);return l!==void 0&&(l>0&&Rt(d.codec)&&!Jt()&&(this.ddExtID=(function(h,p,m){var k,g;let v=(function(b,T){let E=(function(S,C){var I;for(let O of S.media){let N=(I=O.ext)===null||I===void 0?void 0:I.find((Z=>Z.uri===C));if(N)return N.value}})(b,kn);return E!==void 0?Wd(b,E,kn)?void 0:E:T!==0&&!Wd(b,T,kn)?T:(function(S){let C=0;return S.media.forEach((I=>{var O;(O=I.ext)===null||O===void 0||O.forEach((N=>{N.value>C&&(C=N.value)}))})),C+1===15?16:C+1})(b)})(p,m);return v===void 0?m:(!((k=h.ext)===null||k===void 0)&&k.some((b=>b.uri===kn))||((g=h.ext)!==null&&g!==void 0||(h.ext=[]),h.ext.push({value:v,uri:kn})),v)})(c,a,this.ddExtID)),!0)}))}));let o=this.getPlaceholderMids();if(o.size>0&&zd(a.media,(c=>o.has(si(c.mid)))),this.latestOfferId>r)return void this.log.warn("latestOfferId mismatch",{latestOfferId:this.latestOfferId,offerId:r});yield this.setMungedSDP(s,Ye.write(a)),this.onOffer(s,this.latestOfferId)}finally{n()}}))}createAndSetAnswer(){return f(this,void 0,void 0,(function*(){var e;let t=yield this.pc.createAnswer(),n=Ye.parse((e=t.sdp)!==null&&e!==void 0?e:"");return n.media.forEach((r=>{cr(r),r.type==="audio"&&Kd(r,this.remoteStereoMids,this.remoteNackMids)})),yield this.setMungedSDP(t,Ye.write(n)),t}))}getPlaceholderMids(){var e,t;return(function(n){let r=new Set;for(let s of n)s.mid&&!s.sender.track&&r.add(s.mid);return r})((t=(e=this._pc)===null||e===void 0?void 0:e.getTransceivers())!==null&&t!==void 0?t:[])}createDataChannel(e,t){return this.pc.createDataChannel(e,t)}addTransceiver(e,t){return this.pc.addTransceiver(e,t)}addTransceiverOfKind(e,t){return this.pc.addTransceiver(e,t)}addTrack(e){if(!this._pc)throw new ie("PC closed, cannot add track");return this._pc.addTrack(e)}setTrackCodecBitrate(e){this.trackBitrates.push(e)}setConfiguration(e){var t;if(!this._pc)throw new ie("PC closed, cannot configure");return(t=this._pc)===null||t===void 0?void 0:t.setConfiguration(e)}canRemoveTrack(){var e;return!!(!((e=this._pc)===null||e===void 0)&&e.removeTrack)}removeTrack(e){var t;return(t=this._pc)===null||t===void 0?void 0:t.removeTrack(e)}getConnectionState(){var e,t;return(t=(e=this._pc)===null||e===void 0?void 0:e.connectionState)!==null&&t!==void 0?t:"closed"}getICEConnectionState(){var e,t;return(t=(e=this._pc)===null||e===void 0?void 0:e.iceConnectionState)!==null&&t!==void 0?t:"closed"}getSignallingState(){var e,t;return(t=(e=this._pc)===null||e===void 0?void 0:e.signalingState)!==null&&t!==void 0?t:"closed"}getTransceivers(){var e,t;return(t=(e=this._pc)===null||e===void 0?void 0:e.getTransceivers())!==null&&t!==void 0?t:[]}getSenders(){var e,t;return(t=(e=this._pc)===null||e===void 0?void 0:e.getSenders())!==null&&t!==void 0?t:[]}getLocalDescription(){var e;return(e=this._pc)===null||e===void 0?void 0:e.localDescription}getRemoteDescription(){var e;return(e=this.pc)===null||e===void 0?void 0:e.remoteDescription}getStats(){var e;return(e=this._pc)===null||e===void 0?void 0:e.getStats()}getMaxMessageSize(){var e,t;return(t=(e=this._pc)===null||e===void 0?void 0:e.sctp)===null||t===void 0?void 0:t.maxMessageSize}getConnectedAddress(){return f(this,void 0,void 0,(function*(){var e;if(!this._pc)return;let t="",n=new Map,r=new Map;if((yield this._pc.getStats()).forEach((a=>{switch(a.type){case"transport":t=a.selectedCandidatePairId;break;case"candidate-pair":t===""&&a.selected&&(t=a.id),n.set(a.id,a);break;case"remote-candidate":r.set(a.id,"".concat(a.address,":").concat(a.port))}})),t==="")return;let s=(e=n.get(t))===null||e===void 0?void 0:e.remoteCandidateId;return s!==void 0?r.get(s):void 0}))}setMungedSDP(e,t,n){return f(this,void 0,void 0,(function*(){var r,s;let a=e.sdp;if(t){e.sdp=t;try{return this.log.debug("setting munged ".concat(n?"remote":"local"," description")),void(n?yield this.pc.setRemoteDescription(e):yield this.pc.setLocalDescription(e))}catch(o){this.log.warn("not able to set ".concat(e.type,", falling back to unmodified sdp"),{error:o,mungedSdp:t,originalSdp:a}),e.sdp=a}}try{n?yield(r=this._pc)===null||r===void 0?void 0:r.setRemoteDescription(e):yield(s=this._pc)===null||s===void 0?void 0:s.setLocalDescription(e)}catch(o){let c="unknown error";o instanceof Error?c=o.message:typeof o=="string"&&(c=o);let d={error:c,sdp:e.sdp};throw t&&t!==a&&(d.mungedSdp=t),!n&&this.pc.remoteDescription&&(d.remoteSdp=this.pc.remoteDescription),this.log.error("unable to set ".concat(e.type),{fields:d}),new wt(c)}}))}}function Wd(i,e,t){return i.media.some((n=>{var r;return(r=n.ext)===null||r===void 0?void 0:r.some((s=>s.value===e&&s.uri!==t))}))}function Hd(i,e){return i.split(";").some((t=>t.trim()===e))}function Kd(i,e,t){let n=si(i.mid),r=0;i.rtp.some((s=>s.codec.toLowerCase()==="opus"&&(r=s.payload,!0))),r>0&&(i.rtcpFb||(i.rtcpFb=[]),t.includes(n)&&!i.rtcpFb.some((s=>s.payload===r&&s.type==="nack"))&&i.rtcpFb.push({payload:r,type:"nack"}),(e.includes(n)||e.length===1&&e[0]==="all")&&i.fmtp.some((s=>s.payload===r&&(Hd(s.config,"stereo=1")||(s.config+=";stereo=1"),!0))))}function zd(i,e){var t,n;let r=new Map,s=new Set;for(let a of i){let o=e(a);for(let c of(t=a.fmtp)!==null&&t!==void 0?t:[])o?r.has(c.payload)||r.set(c.payload,c.config):(r.set(c.payload,c.config),s.add(c.payload))}if(r.size!==0){for(let a of i)if(e(a))for(let o of(n=a.fmtp)!==null&&n!==void 0?n:[]){let c=r.get(o.payload);c!==void 0&&o.config!==c&&(o.config=c)}}}function cr(i){if(i.connection){let e=i.connection.ip.indexOf(":")>=0;(i.connection.version===4&&e||i.connection.version===6&&!e)&&(i.connection.ip="0.0.0.0",i.connection.version=4)}}function si(i){return typeof i=="number"?i.toFixed(0):i}let ia="vp8",_p={audioPreset:u.AudioPresets.music,dtx:!0,red:!0,forceStereo:!1,simulcast:!0,screenShareEncoding:Gn.h1080fps15.encoding,stopMicTrackOnMute:!1,videoCodec:ia,backupCodec:!0,preConnectBuffer:!1},Gd={deviceId:{ideal:"default"},autoGainControl:!0,echoCancellation:!0,noiseSuppression:!0,voiceIsolation:!0},Jd={deviceId:{ideal:"default"},resolution:fn.h720.resolution},Op={adaptiveStream:!1,dynacast:!1,stopLocalTrackOnUnpublish:!0,reconnectPolicy:new rc,disconnectOnPageLeave:!0,webAudioMix:!1,singlePeerConnection:!0},ra={autoSubscribe:!0,maxRetries:1,peerConnectionTimeout:15e3,websocketTimeout:15e3};var re,H;(function(i){i[i.NEW=0]="NEW",i[i.CONNECTING=1]="CONNECTING",i[i.CONNECTED=2]="CONNECTED",i[i.FAILED=3]="FAILED",i[i.CLOSING=4]="CLOSING",i[i.CLOSED=5]="CLOSED"})(re||(re={}));class Qd{get needsPublisher(){return this.isPublisherConnectionRequired}get needsSubscriber(){return this.isSubscriberConnectionRequired}get currentState(){return this.state}get mode(){return this._mode}constructor(e,t,n){var r;this.peerConnectionTimeout=ra.peerConnectionTimeout,this.log=V,this.iceLog=V,this.updateState=()=>{var s,a;let o=this.state,c=this.requiredTransports.map((d=>d.getConnectionState()));c.every((d=>d==="connected"))?this.state=re.CONNECTED:c.some((d=>d==="failed"))?this.state=re.FAILED:c.some((d=>d==="connecting"))?this.state=re.CONNECTING:c.every((d=>d==="closed"))?this.state=re.CLOSED:c.some((d=>d==="closed"))?this.state=re.CLOSING:c.every((d=>d==="new"))&&(this.state=re.NEW),o!==this.state&&(this.log.debug("pc state change: from ".concat(re[o]," to ").concat(re[this.state])),(s=this.onStateChange)===null||s===void 0||s.call(this,this.state,this.publisher.getConnectionState(),(a=this.subscriber)===null||a===void 0?void 0:a.getConnectionState()))},this.loggerOptions=t,this.log=he((r=t.loggerName)!==null&&r!==void 0?r:u.LoggerNames.PCManager,(()=>this.logContext)),this.iceLog=he(u.LoggerNames.ICE,(()=>this.logContext)),this.isPublisherConnectionRequired=e!=="subscriber-primary",this.isSubscriberConnectionRequired=e==="subscriber-primary",this.publisher=new Vd(n,t),this._mode=e,e!=="publisher-only"&&(this.subscriber=new Vd(n,t),this.subscriber.onConnectionStateChange=this.updateState,this.subscriber.onIceConnectionStateChange=this.updateState,this.subscriber.onSignalingStatechange=this.updateState,this.subscriber.onIceCandidate=s=>{var a;(a=this.onIceCandidate)===null||a===void 0||a.call(this,s,Ze.SUBSCRIBER)},this.subscriber.onDataChannel=s=>{var a;(a=this.onDataChannel)===null||a===void 0||a.call(this,s)},this.subscriber.onTrack=s=>{var a;(a=this.onTrack)===null||a===void 0||a.call(this,s)}),this.publisher.onConnectionStateChange=this.updateState,this.publisher.onIceConnectionStateChange=this.updateState,this.publisher.onSignalingStatechange=this.updateState,this.publisher.onIceCandidate=s=>{var a;(a=this.onIceCandidate)===null||a===void 0||a.call(this,s,Ze.PUBLISHER)},this.publisher.onTrack=s=>{var a;(a=this.onTrack)===null||a===void 0||a.call(this,s)},this.publisher.onOffer=(s,a)=>{var o;(o=this.onPublisherOffer)===null||o===void 0||o.call(this,s,a)},this.state=re.NEW,this.connectionLock=new U,this.remoteOfferLock=new U}get logContext(){var e,t;return Object.assign({},(t=(e=this.loggerOptions).loggerContextCb)===null||t===void 0?void 0:t.call(e))}requirePublisher(){let e=!(arguments.length>0&&arguments[0]!==void 0)||arguments[0];this.isPublisherConnectionRequired=e,this.updateState()}createAndSendPublisherOffer(e){return this.publisher.createAndSendOffer(e)}setPublisherAnswer(e,t){return this.publisher.setRemoteDescription(e,t)}removeTrack(e){return this.publisher.removeTrack(e)}close(){return f(this,void 0,void 0,(function*(){var e;if(this.publisher&&this.publisher.getSignallingState()!=="closed"){let t=this.publisher;for(let n of t.getSenders())try{t.canRemoveTrack()&&t.removeTrack(n)}catch(r){this.log.warn("could not removeTrack",{error:r})}}yield Promise.all([this.publisher.close(),(e=this.subscriber)===null||e===void 0?void 0:e.close()]),this.updateState()}))}triggerIceRestart(){return f(this,void 0,void 0,(function*(){this.iceLog.warn("triggering ICE restart"),this.needsPublisher&&(yield this.createAndSendPublisherOffer({iceRestart:!0}))}))}addIceCandidate(e,t){return f(this,void 0,void 0,(function*(){var n;this.iceLog.debug("adding remote ICE candidate",{target:t,candidate:e}),t===Ze.PUBLISHER?yield this.publisher.addIceCandidate(e):yield(n=this.subscriber)===null||n===void 0?void 0:n.addIceCandidate(e)}))}createSubscriberAnswerFromOffer(e,t){return f(this,void 0,void 0,(function*(){var n,r,s;this.log.debug("received server offer",{RTCSdpType:e.type,sdp:e.sdp,signalingState:(n=this.subscriber)===null||n===void 0?void 0:n.getSignallingState().toString()});let a=yield this.remoteOfferLock.lock();try{return(yield(r=this.subscriber)===null||r===void 0?void 0:r.setRemoteDescription(e,t))?yield(s=this.subscriber)===null||s===void 0?void 0:s.createAndSetAnswer():void 0}finally{a()}}))}updateConfiguration(e,t){var n;this.log.debug("updating rtc configuration",{iceRestart:t}),this.publisher.setConfiguration(e),(n=this.subscriber)===null||n===void 0||n.setConfiguration(e),t&&this.triggerIceRestart()}ensurePCTransportConnection(e,t){return f(this,void 0,void 0,(function*(){var n;let r=yield this.connectionLock.lock();try{this.isPublisherConnectionRequired&&this.publisher.getConnectionState()!=="connected"&&this.publisher.getConnectionState()!=="connecting"&&(this.log.debug("negotiation required, start negotiating"),this.publisher.negotiate()),yield Promise.all((n=this.requiredTransports)===null||n===void 0?void 0:n.map((s=>this.ensureTransportConnected(s,e,t))))}finally{r()}}))}negotiate(e){return f(this,void 0,void 0,(function*(){return new Ie(((t,n)=>{let r=this.publisher.latestOfferId;if(this.publisher.latestAcknowledgedOfferId>r)return this.log.debug("negotiation already handled in more recent acknowledged offer",this.logContext),void t();let s=!1,a=()=>{s||(s=!0,clearTimeout(d),this.publisher.off(ta,o),e.signal.removeEventListener("abort",c))},o=l=>{l>r&&(a(),t())},c=()=>{a(),n(new wt("negotiation aborted"))},d=setTimeout((()=>{a(),n(new wt("negotiation timed out"))}),this.peerConnectionTimeout);e.signal.addEventListener("abort",c),this.publisher.on(ta,o),this.publisher.negotiate((l=>{a(),l instanceof Error?n(l):n(new Error(String(l)))}))}))}))}addPublisherTransceiver(e,t){return this.publisher.addTransceiver(e,t)}addPublisherTransceiverOfKind(e,t){return this.publisher.addTransceiverOfKind(e,t)}getMidForReceiver(e){let t=(this.subscriber?this.subscriber.getTransceivers():this.publisher.getTransceivers()).find((n=>n.receiver===e));return t?.mid}getMaxPublisherMessageSize(){return this.publisher.getMaxMessageSize()}addPublisherTrack(e){return this.publisher.addTrack(e)}createPublisherDataChannel(e,t){return this.publisher.createDataChannel(e,t)}getConnectedAddress(e){return e===Ze.PUBLISHER||e===Ze.SUBSCRIBER?this.publisher.getConnectedAddress():this.requiredTransports[0].getConnectedAddress()}get requiredTransports(){let e=[];return this.isPublisherConnectionRequired&&e.push(this.publisher),this.isSubscriberConnectionRequired&&this.subscriber&&e.push(this.subscriber),e}ensureTransportConnected(e,t){return f(this,arguments,void 0,(function(n,r){var s=this;let a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.peerConnectionTimeout;return(function*(){if(n.getConnectionState()!=="connected")return new Promise(((o,c)=>f(s,void 0,void 0,(function*(){let d=()=>{this.log.warn("abort transport connection"),Q.clearTimeout(l),c(_.cancelled("room connection has been cancelled"))};r?.signal.aborted&&d(),r?.signal.addEventListener("abort",d);let l=Q.setTimeout((()=>{r?.signal.removeEventListener("abort",d),c(_.internal("could not establish pc connection"))}),a);for(;this.state!==re.CONNECTED;)if(yield we(50),r?.signal.aborted)return void c(_.cancelled("room connection has been cancelled"));Q.clearTimeout(l),r?.signal.removeEventListener("abort",d),o()}))))})()}))}}class Yd{constructor(e){this.bufferStatusLow=!0,this.headroomLock=new U,this.waiterAbortController=new AbortController,this.kind=e.kind,this.lowWaterMark=e.lowWaterMark,this.highWaterMark=e.highWaterMark,this.isEngineClosed=e.isEngineClosed,this.onBufferStatusChanged=e.onBufferStatusChanged}get channelHandle(){return this.handle}attach(e){this.handle&&this.handle!==e&&this.invalidateWaiters("data channel replaced"),this.handle=e}detach(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"data channel torn down";this.handle&&this.invalidateWaiters(e),this.handle=void 0}getChannel(){return this.handle}isBelowHighWaterMark(e){return e.bufferedAmount<=this.highWaterMark}isBelowLowWaterMark(e){return e.bufferedAmount<=e.bufferedAmountLowThreshold}lockHeadroom(){return this.headroomLock.lock()}waitForHeadroomWithLock(){return f(this,void 0,void 0,(function*(){let e=yield this.lockHeadroom();try{yield this.waitForHeadroomWithoutLock()}finally{e()}}))}waitForHeadroomWithoutLock(){return f(this,void 0,void 0,(function*(){if(this.isEngineClosed())throw new ie("engine closed");let e=this.getChannel();if(!e)throw new ie("DataChannel not found, kind: ".concat(this.kind));if(this.isBelowHighWaterMark(e))return;let t=this.waiterAbortController.signal;yield new Ie(((n,r)=>{let s=()=>{c(),n()},a=()=>{c(),r(new ie("DataChannel ".concat(this.kind," closed while draining the buffer")))},o=()=>{c(),r(new ie("DataChannel ".concat(this.kind," was replaced or torn down while waiting for headroom")))},c=()=>{e.removeEventListener("bufferedamountlow",s),e.removeEventListener("close",a),t.removeEventListener("abort",o)};t.aborted?o():(e.addEventListener("bufferedamountlow",s),e.addEventListener("close",a),t.addEventListener("abort",o))}))}))}invalidateWaiters(e){this.waiterAbortController.abort(e),this.waiterAbortController=new AbortController}refreshBufferStatus(){var e;let t=this.getChannel();if(!t)return;let n=this.isBelowLowWaterMark(t);n!==this.bufferStatusLow&&(this.bufferStatusLow=n,(e=this.onBufferStatusChanged)===null||e===void 0||e.call(this,n))}}class Xd extends Yd{constructor(e){super(e),this.statCurrentBytes=0,this.statByterate=0,this.dropCount=0,this.bufferFullBehavior=e.bufferFullBehavior,this.shouldSkipSends=e.shouldSkipSends}send(e){return f(this,void 0,void 0,(function*(){let t=this.getChannel();if(t){switch(this.bufferFullBehavior){case"wait":this.isBelowHighWaterMark(t)||(yield this.waitForHeadroomWithLock());break;case"drop":if(!this.isBelowLowWaterMark(t))return this.dropCount+=1,void(this.dropCount%100==0&&V.warn("dropping lossy data channel messages, total dropped: ".concat(this.dropCount)))}if(this.statCurrentBytes+=e.byteLength,!this.shouldSkipSends())try{t.send(e),this.refreshBufferStatus()}catch(n){if(!(n instanceof TypeError))throw n;V.error(n)}}}))}startThresholdTuning(){this.stopThresholdTuning(),this.statInterval=Q.setInterval((()=>{this.statByterate=this.statCurrentBytes,this.statCurrentBytes=0;let e=this.getChannel();if(e){let t=this.statByterate/10;e.bufferedAmountLowThreshold=Math.min(Math.max(t,this.lowWaterMark),this.highWaterMark)}}),1e3)}stopThresholdTuning(){this.statByterate=0,this.statCurrentBytes=0,this.statInterval&&(Q.clearInterval(this.statInterval),this.statInterval=void 0),this.dropCount=0}}class $d{constructor(){this.buffer=[],this._totalSize=0,this._sentSize=0}push(e){this.buffer.push(e),this._totalSize+=e.data.byteLength,e.sent&&(this._sentSize+=e.data.byteLength)}pop(){let e=this.buffer.shift();return e&&(this._totalSize-=e.data.byteLength,e.sent&&(this._sentSize-=e.data.byteLength)),e}getAll(){return this.buffer.slice()}getUnsent(){return this.buffer.filter((e=>!e.sent))}markSent(e){e.sent||(e.sent=!0,this._sentSize+=e.data.byteLength)}markAllUnsent(){for(let e of this.buffer)e.sent=!1;this._sentSize=0}popToSequence(e){for(;this.buffer.length>0&&this.buffer[0].sequence<=e;)this.pop()}alignBufferedAmount(e){for(;this.buffer.length>0;){let t=this.buffer[0];if(!t.sent||this._sentSize-t.data.byteLength<=e)break;this.pop()}}get length(){return this.buffer.length}}class Ap extends Yd{constructor(e){super(e),this.messageBuffer=new $d,this.sequence=1,this.isDeferringSends=e.isDeferringSends}nextSequence(){let e=this.sequence;return this.sequence+=1,e}send(e,t){return f(this,void 0,void 0,(function*(){if(this.isDeferringSends())return void this.messageBuffer.push({data:e,sequence:t,sent:!1});let n=this.getChannel();if(n){try{yield this.waitForHeadroomWithLock()}catch(r){if(this.isEngineClosed())throw r;return void this.messageBuffer.push({data:e,sequence:t,sent:!1})}this.isDeferringSends()?this.messageBuffer.push({data:e,sequence:t,sent:!1}):(this.messageBuffer.push({data:e,sequence:t,sent:!0}),n.send(e),this.refreshBufferStatus())}}))}replay(e){return f(this,void 0,void 0,(function*(){let t=this.getChannel();if(!t)return;this.messageBuffer.popToSequence(e);let n=yield this.lockHeadroom();try{this.messageBuffer.markAllUnsent();for(let r=this.messageBuffer.getUnsent();r.length>0;r=this.messageBuffer.getUnsent())for(let s of r)yield this.waitForHeadroomWithoutLock(),t.send(s.data),this.messageBuffer.markSent(s)}finally{n()}this.refreshBufferStatus()}))}refreshBufferStatus(){let e=this.channelHandle;e&&this.messageBuffer.alignBufferedAmount(e.bufferedAmount),super.refreshBufferStatus()}reset(){this.messageBuffer=new $d,this.sequence=1}}(function(i){i[i.RELIABLE=0]="RELIABLE",i[i.LOSSY=1]="LOSSY",i[i.DATA_TRACK_LOSSY=2]="DATA_TRACK_LOSSY"})(H||(H={}));function Lp(i){return i===H.RELIABLE?65536:8192}function Np(i){return i===H.RELIABLE?1048576:262144}let Zd="_lossy",el="_reliable",tl="_data_track";class xp{constructor(e){this.opts=e;let t=n=>({kind:n,lowWaterMark:Lp(n),highWaterMark:Np(n),isEngineClosed:e.isEngineClosed,onBufferStatusChanged:r=>e.onBufferStatusChanged(n,r)});this.reliable=new Ap(Object.assign(Object.assign({},t(H.RELIABLE)),{isDeferringSends:e.isReconnecting})),this.lossy=new Xd(Object.assign(Object.assign({},t(H.LOSSY)),{bufferFullBehavior:"drop",shouldSkipSends:e.isReconnecting})),this.dataTrack=new Xd(Object.assign(Object.assign({},t(H.DATA_TRACK_LOSSY)),{bufferFullBehavior:"wait",shouldSkipSends:e.isReconnecting}))}channelFor(e){switch(e){case H.RELIABLE:return this.reliable;case H.LOSSY:return this.lossy;case H.DATA_TRACK_LOSSY:return this.dataTrack}}getHandle(e){if(!(arguments.length>1&&arguments[1]!==void 0&&arguments[1]))return this.channelFor(e).channelHandle;switch(e){case H.RELIABLE:return this.reliableSub;case H.LOSSY:return this.lossySub;case H.DATA_TRACK_LOSSY:return this.dataTrackSub}}get hasPublisherChannels(){return!!(this.reliable.channelHandle||this.lossy.channelHandle||this.dataTrack.channelHandle)}createPublisherChannels(e){for(let n of[this.lossy,this.reliable,this.dataTrack]){let r=n.channelHandle;r&&(r.onmessage=null,r.onerror=null,r.onclose=null)}let t=(n,r,s)=>{r.onmessage=s,r.onerror=this.opts.onDataError,r.onclose=()=>this.opts.onChannelClose(n.kind),r.bufferedAmountLowThreshold=n.lowWaterMark,r.onbufferedamountlow=()=>n.refreshBufferStatus(),n.attach(r)};t(this.lossy,e.createPublisherDataChannel(Zd,{ordered:!1,maxRetransmits:0}),this.opts.onDataMessage),t(this.reliable,e.createPublisherDataChannel(el,{ordered:!0}),this.opts.onDataMessage),t(this.dataTrack,e.createPublisherDataChannel(tl,{ordered:!1,maxRetransmits:0}),this.opts.onDataTrackMessage),this.lossy.startThresholdTuning()}adoptSubscriberChannel(e){let t;if(e.label===el)this.reliableSub=e,t=this.opts.onDataMessage;else if(e.label===Zd)this.lossySub=e,t=this.opts.onDataMessage;else{if(e.label!==tl)return!1;this.dataTrackSub=e,t=this.opts.onDataTrackMessage}return e.onmessage=t,!0}teardown(){let e=t=>{t&&(t.onbufferedamountlow=null,t.onclose=null,t.onclosing=null,t.onerror=null,t.onmessage=null,t.onopen=null,t.close())};for(let t of[this.lossy,this.reliable,this.dataTrack]){let n=t.channelHandle;t.detach("peer connections cleaned up"),e(n)}e(this.lossySub),e(this.reliableSub),e(this.dataTrackSub),this.lossySub=void 0,this.reliableSub=void 0,this.dataTrackSub=void 0,this.reliable.reset()}}let sa=typeof MediaRecorder<"u",Up=sa?MediaRecorder:class{constructor(){throw new Error("MediaRecorder is not available in this environment")}};class nl extends Up{constructor(e,t){if(!sa)throw new Error("MediaRecorder is not available in this environment");let n,r;super(new MediaStream([e.mediaStreamTrack]),t);let s=()=>{this.removeEventListener("dataavailable",n),this.removeEventListener("stop",s),this.removeEventListener("error",a),r?.close(),r=void 0},a=o=>{r?.error(o),this.removeEventListener("dataavailable",n),this.removeEventListener("stop",s),this.removeEventListener("error",a),r=void 0};this.byteStream=new ReadableStream({start:o=>{r=o,n=c=>f(this,void 0,void 0,(function*(){let d;if(c.data.arrayBuffer){let l=yield c.data.arrayBuffer();d=new Uint8Array(l)}else{if(!c.data.byteArray)throw new Error("no data available!");d=c.data.byteArray}r!==void 0&&o.enqueue(d)})),this.addEventListener("dataavailable",n)},cancel:()=>{s()}}),this.addEventListener("stop",s),this.addEventListener("error",a)}}class aa extends R{get sender(){return this._sender}set sender(e){this._sender=e}get constraints(){return this._constraints}get hasPreConnectBuffer(){return!!this.localTrackRecorder}constructor(e,t,n){let r=arguments.length>3&&arguments[3]!==void 0&&arguments[3];super(e,t,arguments.length>4?arguments[4]:void 0),this.manuallyStopped=!1,this.pendingDeviceChange=!1,this._isUpstreamPaused=!1,this.handleTrackMuteEvent=()=>this.debouncedTrackMuteHandler().catch((()=>this.log.debug("track mute bounce got cancelled by an unmute event",this.logContext))),this.debouncedTrackMuteHandler=Bs((()=>f(this,void 0,void 0,(function*(){yield this.pauseUpstream()}))),5e3),this.handleTrackUnmuteEvent=()=>f(this,void 0,void 0,(function*(){this.debouncedTrackMuteHandler.cancel("unmute"),yield this.resumeUpstream()})),this.handleEnded=()=>{this.isInBackground&&(this.reacquireTrack=!0),this._mediaStreamTrack.removeEventListener("mute",this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener("unmute",this.handleTrackUnmuteEvent),this.emit(u.TrackEvent.Ended,this)},this.reacquireTrack=!1,this.providedByUser=r,this.muteLock=new U,this.pauseUpstreamLock=new U,this.trackChangeLock=new U,this.trackChangeLock.lock().then((s=>f(this,void 0,void 0,(function*(){try{yield this.setMediaStreamTrack(e,!0)}finally{s()}})))),this._constraints=e.getConstraints(),n&&(this._constraints=n)}get id(){return this._mediaStreamTrack.id}get dimensions(){if(this.kind!==R.Kind.Video)return;let e=this._mediaStreamTrack.getSettings(),t=e.width,n=e.height;return t&&n?{width:t,height:n}:void 0}get isUpstreamPaused(){return this._isUpstreamPaused}get isUserProvided(){return this.providedByUser}get mediaStreamTrack(){var e,t;return(t=(e=this.processor)===null||e===void 0?void 0:e.processedTrack)!==null&&t!==void 0?t:this._mediaStreamTrack}get isLocal(){return!0}getSourceTrackSettings(){return this._mediaStreamTrack.getSettings()}setMediaStreamTrack(e,t,n){return f(this,void 0,void 0,(function*(){var r;if(e===this._mediaStreamTrack&&!t)return;let s;if(this._mediaStreamTrack&&(this.attachedElements.forEach((a=>{zt(this._mediaStreamTrack,a)})),this.debouncedTrackMuteHandler.cancel("new-track"),this._mediaStreamTrack.removeEventListener("ended",this.handleEnded),this._mediaStreamTrack.removeEventListener("mute",this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener("unmute",this.handleTrackUnmuteEvent)),this.mediaStream=new MediaStream([e]),e&&(e.addEventListener("ended",this.handleEnded),e.addEventListener("mute",this.handleTrackMuteEvent),e.addEventListener("unmute",this.handleTrackUnmuteEvent),this._constraints=e.getConstraints()),this.processor&&e){if(this.log.debug("restarting processor",this.logContext),this.kind==="unknown")throw TypeError("cannot set processor on track of unknown kind");this.processorElement&&(Kt(e,this.processorElement),this.processorElement.muted=!0),yield this.processor.restart({track:e,kind:this.kind,element:this.processorElement,localTrack:this}),s=this.processor.processedTrack}this.sender&&((r=this.sender.transport)===null||r===void 0?void 0:r.state)!=="closed"&&(yield this.sender.replaceTrack(s??e)),this.providedByUser||this._mediaStreamTrack===e||this._mediaStreamTrack.stop(),this._mediaStreamTrack=e,e&&(this._mediaStreamTrack.enabled=!!n||!this.isMuted,yield this.resumeUpstream(),this.attachedElements.forEach((a=>{Kt(s??e,a)})))}))}waitForDimensions(){return f(this,arguments,void 0,(function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1e3;return(function*(){var n;if(e.kind===R.Kind.Audio)throw new Error("cannot get dimensions for audio tracks");((n=be())===null||n===void 0?void 0:n.os)==="iOS"&&(yield we(10));let r=Date.now();for(;Date.now()-r<t;){let s=e.dimensions;if(s)return s;yield we(50)}throw new et("unable to get track dimensions after timeout")})()}))}setDeviceId(e){return f(this,void 0,void 0,(function*(){return this._constraints.deviceId===e&&this._mediaStreamTrack.getSettings().deviceId===Tn(e)||(this._constraints.deviceId=e,this.isMuted?(this.pendingDeviceChange=!0,!0):(yield this.restartTrack(),Tn(e)===this._mediaStreamTrack.getSettings().deviceId))}))}getDeviceId(){return f(this,arguments,void 0,(function(){var e=this;let t=!(arguments.length>0&&arguments[0]!==void 0)||arguments[0];return(function*(){if(e.source===R.Source.ScreenShare)return;let n=e._mediaStreamTrack.getSettings(),r=n.deviceId,s=n.groupId,a=e.kind===R.Kind.Audio?"audioinput":"videoinput";return t?ye.getInstance().normalizeDeviceId(a,r,s):r})()}))}mute(){return f(this,void 0,void 0,(function*(){return this.setTrackMuted(!0),this}))}unmute(){return f(this,void 0,void 0,(function*(){return this.setTrackMuted(!1),this}))}replaceTrack(e,t){return f(this,void 0,void 0,(function*(){let n=yield this.trackChangeLock.lock();try{if(!this.sender)throw new et("unable to replace an unpublished track");let r,s;typeof t=="boolean"?r=t:t!==void 0&&(r=t.userProvidedTrack,s=t.stopProcessor),this.providedByUser=r==null||r,this.log.debug("replace MediaStreamTrack",this.logContext),yield this.setMediaStreamTrack(e),s&&this.processor&&(yield this.internalStopProcessor())}finally{n()}return yield this.onSenderTrackSwapped(),this}))}onSenderTrackSwapped(){return f(this,void 0,void 0,(function*(){}))}restart(e,t){return f(this,void 0,void 0,(function*(){this.manuallyStopped=!1;let n=yield this.trackChangeLock.lock();try{e||(e=this._constraints);let r=e,s=r.deviceId,a=r.facingMode,o=ss(e,["deviceId","facingMode"]);this.log.debug("restarting track with constraints",Object.assign(Object.assign({},this.logContext),{constraints:e}));let c={audio:!1,video:!1};this.kind===R.Kind.Video?c.video=!s&&!a||{deviceId:s,facingMode:a}:c.audio=!s||Object.assign({deviceId:s},o),this.attachedElements.forEach((l=>{zt(this.mediaStreamTrack,l)})),this._mediaStreamTrack.removeEventListener("ended",this.handleEnded),this._mediaStreamTrack.stop();let d=(yield navigator.mediaDevices.getUserMedia(c)).getTracks()[0];return this.kind===R.Kind.Video&&(yield d.applyConstraints(o)),d.addEventListener("ended",this.handleEnded),this.log.debug("re-acquired MediaStreamTrack",this.logContext),yield this.setMediaStreamTrack(d,!1,t),this._constraints=e,this.pendingDeviceChange=!1,this.emit(u.TrackEvent.Restarted,this),this.manuallyStopped&&(this.log.warn("track was stopped during a restart, stopping restarted track",this.logContext),this.stop()),this}finally{n()}}))}setTrackMuted(e){this.log.debug("setting ".concat(this.kind," track ").concat(e?"muted":"unmuted"),this.logContext),this.isMuted===e&&this._mediaStreamTrack.enabled!==e||(this.isMuted=e,this._mediaStreamTrack.enabled=!e,this.emit(e?u.TrackEvent.Muted:u.TrackEvent.Unmuted,this))}get needsReAcquisition(){return this._mediaStreamTrack.readyState!=="live"||this._mediaStreamTrack.muted||!this._mediaStreamTrack.enabled||this.reacquireTrack}handleAppVisibilityChanged(){let e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return f(this,void 0,void 0,(function*(){yield e.handleAppVisibilityChanged.call(this),ud()&&(this.log.debug("visibility changed, is in Background: ".concat(this.isInBackground),this.logContext),this.isInBackground||!this.needsReAcquisition||this.isUserProvided||this.isMuted||(this.log.debug("track needs to be reacquired, restarting ".concat(this.source),this.logContext),yield this.restart(),this.reacquireTrack=!1))}))}stop(){var e;this.manuallyStopped=!0,super.stop(),this._mediaStreamTrack.removeEventListener("ended",this.handleEnded),this._mediaStreamTrack.removeEventListener("mute",this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener("unmute",this.handleTrackUnmuteEvent),(e=this.processor)===null||e===void 0||e.destroy(),this.processor=void 0}pauseUpstream(){return f(this,void 0,void 0,(function*(){var e;let t=yield this.pauseUpstreamLock.lock();try{if(this._isUpstreamPaused===!0)return;if(!this.sender)return void this.log.warn("unable to pause upstream for an unpublished track",this.logContext);this._isUpstreamPaused=!0,this.emit(u.TrackEvent.UpstreamPaused,this);let n=be();if(n?.name==="Safari"&&Qe(n.version,"12.0")<0)throw new zn("pauseUpstream is not supported on Safari < 12.");((e=this.sender.transport)===null||e===void 0?void 0:e.state)!=="closed"&&(yield this.sender.replaceTrack(null))}finally{t()}}))}resumeUpstream(){return f(this,void 0,void 0,(function*(){var e;let t=yield this.pauseUpstreamLock.lock();try{if(this._isUpstreamPaused===!1)return;if(!this.sender)return void this.log.warn("unable to resume upstream for an unpublished track",this.logContext);this._isUpstreamPaused=!1,this.emit(u.TrackEvent.UpstreamResumed,this),((e=this.sender.transport)===null||e===void 0?void 0:e.state)!=="closed"&&(yield this.sender.replaceTrack(this.mediaStreamTrack))}finally{t()}}))}getRTCStatsReport(){return f(this,void 0,void 0,(function*(){var e;if(!((e=this.sender)===null||e===void 0)&&e.getStats)return yield this.sender.getStats()}))}setProcessor(e){return f(this,arguments,void 0,(function(t){var n=this;let r=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];return(function*(){var s;let a=yield n.trackChangeLock.lock();try{n.log.debug("setting up processor",n.logContext);let o=document.createElement(n.kind),c={kind:n.kind,track:n._mediaStreamTrack,element:o,audioContext:n.audioContext,localTrack:n};if(yield t.init(c),n.log.debug("processor initialized",n.logContext),n.processor&&(yield n.internalStopProcessor()),n.kind==="unknown")throw TypeError("cannot set processor on track of unknown kind");if(Kt(n._mediaStreamTrack,o),o.muted=!0,o.play().catch((d=>{d instanceof DOMException&&d.name==="AbortError"?(n.log.warn("failed to play processor element, retrying",Object.assign(Object.assign({},n.logContext),{error:d})),setTimeout((()=>{o.play().catch((l=>{n.log.error("failed to play processor element",Object.assign(Object.assign({},n.logContext),{err:l}))}))}),100)):n.log.error("failed to play processor element",Object.assign(Object.assign({},n.logContext),{error:d}))})),n.processor=t,n.processorElement=o,n.processor.processedTrack){for(let d of n.attachedElements)d!==n.processorElement&&r&&(zt(n._mediaStreamTrack,d),Kt(n.processor.processedTrack,d));yield(s=n.sender)===null||s===void 0?void 0:s.replaceTrack(n.processor.processedTrack)}n.emit(u.TrackEvent.TrackProcessorUpdate,n.processor)}finally{a()}yield n.onSenderTrackSwapped()})()}))}getProcessor(){return this.processor}stopProcessor(){return f(this,arguments,void 0,(function(){var e=this;let t=!(arguments.length>0&&arguments[0]!==void 0)||arguments[0];return(function*(){let n=yield e.trackChangeLock.lock();try{yield e.internalStopProcessor(t)}finally{n()}yield e.onSenderTrackSwapped()})()}))}internalStopProcessor(){return f(this,arguments,void 0,(function(){var e=this;let t=!(arguments.length>0&&arguments[0]!==void 0)||arguments[0];return(function*(){var n,r;e.processor&&(e.log.debug("stopping processor",e.logContext),(n=e.processor.processedTrack)===null||n===void 0||n.stop(),yield e.processor.destroy(),e.processor=void 0,t||((r=e.processorElement)===null||r===void 0||r.remove(),e.processorElement=void 0),yield e._mediaStreamTrack.applyConstraints(e._constraints),yield e.setMediaStreamTrack(e._mediaStreamTrack,!0),e.emit(u.TrackEvent.TrackProcessorUpdate))})()}))}startPreConnectBuffer(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:100;if(sa)if(this.localTrackRecorder)this.log.warn("preconnect buffer already started");else{{let t="audio/webm;codecs=opus";MediaRecorder.isTypeSupported(t)||(t="video/mp4"),this.localTrackRecorder=new nl(this,{mimeType:t})}this.localTrackRecorder.start(e),this.autoStopPreConnectBuffer=setTimeout((()=>{this.log.warn("preconnect buffer timed out, stopping recording automatically",this.logContext),this.stopPreConnectBuffer()}),1e4)}else this.log.warn("MediaRecorder is not available, cannot start preconnect buffer",this.logContext)}stopPreConnectBuffer(){clearTimeout(this.autoStopPreConnectBuffer),this.localTrackRecorder&&(this.localTrackRecorder.stop(),this.localTrackRecorder=void 0)}getPreConnectBuffer(){var e;return(e=this.localTrackRecorder)===null||e===void 0?void 0:e.byteStream}getPreConnectBufferMimeType(){var e;return(e=this.localTrackRecorder)===null||e===void 0?void 0:e.mimeType}}class In extends aa{get enhancedNoiseCancellation(){return this.isKrispNoiseFilterEnabled}constructor(e,t){let n=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],r=arguments.length>3?arguments[3]:void 0,s=arguments.length>4?arguments[4]:void 0;super(e,R.Kind.Audio,t,n,s),this.stopOnMute=!1,this.isKrispNoiseFilterEnabled=!1,this.monitorSender=()=>f(this,void 0,void 0,(function*(){if(!this.sender)return void(this._currentBitrate=0);let a;try{a=yield this.getSenderStats()}catch(o){return void this.log.error("could not get audio sender stats",Object.assign(Object.assign({},this.logContext),{error:o}))}a&&this.prevStats&&(this._currentBitrate=sr(a,this.prevStats)),this.prevStats=a})),this.handleKrispNoiseFilterEnable=()=>{this.isKrispNoiseFilterEnabled=!0,this.log.debug("Krisp noise filter enabled",this.logContext),this.emit(u.TrackEvent.AudioTrackFeatureUpdate,this,ve.TF_ENHANCED_NOISE_CANCELLATION,!0)},this.handleKrispNoiseFilterDisable=()=>{this.isKrispNoiseFilterEnabled=!1,this.log.debug("Krisp noise filter disabled",this.logContext),this.emit(u.TrackEvent.AudioTrackFeatureUpdate,this,ve.TF_ENHANCED_NOISE_CANCELLATION,!1)},this.audioContext=r,this.checkForSilence()}mute(){let e=Object.create(null,{mute:{get:()=>super.mute}});return f(this,void 0,void 0,(function*(){let t=yield this.muteLock.lock();try{return this.isMuted?(this.log.debug("Track already muted",this.logContext),this):(this.source===R.Source.Microphone&&this.stopOnMute&&!this.isUserProvided&&(this.log.debug("stopping mic track",this.logContext),this._mediaStreamTrack.stop()),yield e.mute.call(this),this)}finally{t()}}))}unmute(){let e=Object.create(null,{unmute:{get:()=>super.unmute}});return f(this,void 0,void 0,(function*(){let t=yield this.muteLock.lock();try{return this.isMuted?(this.source!==R.Source.Microphone||!this.stopOnMute&&this._mediaStreamTrack.readyState!=="ended"&&!this.pendingDeviceChange||this.isUserProvided||(this.log.debug("reacquiring mic track",this.logContext),yield this.restart(void 0,!0)),yield e.unmute.call(this),this):(this.log.debug("Track already unmuted",this.logContext),this)}finally{t()}}))}restartTrack(e){return f(this,void 0,void 0,(function*(){let t;if(e){let n=ws({audio:e});typeof n.audio!="boolean"&&(t=n.audio)}yield this.restart(t)}))}applyConstraints(e){return f(this,void 0,void 0,(function*(){let t=yield this.trackChangeLock.lock();try{let n=yield this._mediaStreamTrack.applyConstraints(e);return this._constraints=Object.assign(Object.assign({},this._constraints),e),n}finally{t()}}))}restart(e,t){let n=Object.create(null,{restart:{get:()=>super.restart}});return f(this,void 0,void 0,(function*(){let r=yield n.restart.call(this,e,t);return this.checkForSilence(),r}))}startMonitor(){Fe()&&(this.monitorInterval||(this.monitorInterval=setInterval((()=>{this.monitorSender()}),js)))}setProcessor(e){return f(this,void 0,void 0,(function*(){var t;let n=yield this.trackChangeLock.lock();try{if(!tt()&&!this.audioContext)throw Error("Audio context needs to be set on LocalAudioTrack in order to enable processors");this.processor&&(yield this.internalStopProcessor());let r={kind:this.kind,track:this._mediaStreamTrack,audioContext:this.audioContext,localTrack:this};this.log.debug("setting up audio processor ".concat(e.name),this.logContext),yield e.init(r),this.processor=e,this.processor.processedTrack&&(yield(t=this.sender)===null||t===void 0?void 0:t.replaceTrack(this.processor.processedTrack),this.processor.processedTrack.addEventListener("enable-lk-krisp-noise-filter",this.handleKrispNoiseFilterEnable),this.processor.processedTrack.addEventListener("disable-lk-krisp-noise-filter",this.handleKrispNoiseFilterDisable)),this.emit(u.TrackEvent.TrackProcessorUpdate,this.processor)}finally{n()}}))}setAudioContext(e){this.audioContext=e}getSenderStats(){return f(this,void 0,void 0,(function*(){var e;if(!(!((e=this.sender)===null||e===void 0)&&e.getStats))return;let t=yield this.sender.getStats(),n;return t.forEach((r=>{if(r.type==="outbound-rtp"){n={type:"audio",streamId:r.id,packetsSent:r.packetsSent,bytesSent:r.bytesSent,timestamp:r.timestamp};let s=t.get(r.remoteId);s&&(n.packetsLost=s.packetsLost,n.jitter=s.jitter,n.roundTripTime=s.roundTripTime)}})),n}))}checkForSilence(){return f(this,void 0,void 0,(function*(){let e=yield td(this);return e&&(this.isMuted||this.log.debug("silence detected on local audio track",this.logContext),this.emit(u.TrackEvent.AudioSilenceDetected)),e}))}}let Fp=Object.values(fn),Bp=Object.values(Qi),jp=Object.values(Gn),qp=[fn.h180,fn.h360],Vp=[Qi.h180,Qi.h360],oa=["q","h","f"];function dr(i,e,t,n){var r,s;let a=n?.videoEncoding;i&&(a=n?.screenShareEncoding);let o=n?.simulcast,c=n?.scalabilityMode,d=n?.videoCodec,l=yn(d,n);if(!a&&!o&&!c||!e||!t)return[{}];a||(a=(function(v,b,T,E){let S=(function(O,N,Z){if(O)return jp;let B=N>Z?N/Z:Z/N;return Math.abs(B-1.7777777777777777)<Math.abs(B-1.3333333333333333)?Fp:Bp})(v,b,T),C=S[0].encoding,I=Math.max(b,T);for(let O=0;O<S.length;O+=1){let N=S[O];if(C=N.encoding,N.width>=I)break}if(E)switch(E){case"av1":case"h265":C=Object.assign({},C),C.maxBitrate=.7*C.maxBitrate;break;case"vp9":C=Object.assign({},C),C.maxBitrate=.85*C.maxBitrate}return C})(i,e,t,d),V.debug("using video encoding",a));let h=a.maxFramerate,p=new $(e,t,a.maxBitrate,a.maxFramerate,a.priority);if(c&&Rt(d)&&!l){let v=new al(c),b=[];if(v.spatial>3)throw new Error("unsupported scalabilityMode: ".concat(c));let T=be();if(cd()){let E=v.suffix=="h"?2:3,S=(function(C){return C||(C=be()),C?.name==="Safari"&&Qe(C.version,"18.3")>0||C?.os==="iOS"&&!!C?.osVersion&&Qe(C.osVersion,"18.3")>0})(T);for(let C=0;C<v.spatial;C+=1)b.push({rid:oa[2-C],maxBitrate:a.maxBitrate/Math.pow(E,C),maxFramerate:p.encoding.maxFramerate,scaleResolutionDownBy:S?Math.pow(2,C):void 0});b[0].scalabilityMode=c}else b.push({maxBitrate:a.maxBitrate,maxFramerate:p.encoding.maxFramerate,scalabilityMode:c});return p.encoding.priority&&(b[0].priority=p.encoding.priority,b[0].networkPriority=p.encoding.priority),V.debug("using svc encoding",{encodings:b}),b}if(!o)return[a];let m=v=>(l&&v.forEach((b=>{b.scalabilityMode=c})),v),k,g;if(k=i?(r=sl(n?.screenShareSimulcastLayers))!==null&&r!==void 0?r:rl(i,p):(s=sl(n?.videoSimulcastLayers))!==null&&s!==void 0?s:rl(i,p),k.length>0){let v=k[0];k.length>1&&(g=D(k,2)[1]);let b=Math.max(e,t);if(b>=960&&g)return m(ca(e,t,[v,g,p],h));if(b>=480)return m(ca(e,t,[v,p],h))}return m(ca(e,t,[p]))}function il(i,e,t){var n,r,s,a;if(!t.backupCodec||t.backupCodec===!0||t.backupCodec.codec===t.videoCodec)return;e!==t.backupCodec.codec&&V.warn("requested a different codec than specified as backup",{serverRequested:e,backup:t.backupCodec.codec}),t.videoCodec=e,t.videoEncoding=t.backupCodec.encoding;let o=i.mediaStreamTrack.getSettings(),c=(n=o.width)!==null&&n!==void 0?n:(r=i.dimensions)===null||r===void 0?void 0:r.width,d=(s=o.height)!==null&&s!==void 0?s:(a=i.dimensions)===null||a===void 0?void 0:a.height;return i.source===R.Source.ScreenShare&&t.simulcast&&(t.simulcast=!1),dr(i.source===R.Source.ScreenShare,c,d,t)}function rl(i,e){if(i)return[{scaleResolutionDownBy:2,fps:(t=e).encoding.maxFramerate}].map((a=>{var o,c;return new $(Math.floor(t.width/a.scaleResolutionDownBy),Math.floor(t.height/a.scaleResolutionDownBy),Math.max(15e4,Math.floor(t.encoding.maxBitrate/(Math.pow(a.scaleResolutionDownBy,2)*(((o=t.encoding.maxFramerate)!==null&&o!==void 0?o:30)/((c=a.fps)!==null&&c!==void 0?c:30))))),a.fps,t.encoding.priority)}));var t;let n=e.width,r=e.height,s=n>r?n/r:r/n;return Math.abs(s-16/9)<Math.abs(s-4/3)?qp:Vp}function ca(i,e,t,n){let r=[];if(t.forEach(((s,a)=>{if(a>=oa.length)return;let o=Math.min(i,e),c={rid:oa[a],scaleResolutionDownBy:Math.max(1,o/Math.min(s.width,s.height)),maxBitrate:s.encoding.maxBitrate},d=n&&s.encoding.maxFramerate?Math.min(n,s.encoding.maxFramerate):s.encoding.maxFramerate;d&&(c.maxFramerate=d);let l=be(),h=l?.name==="Firefox"&&l.os!=="iOS"||a===0;s.encoding.priority&&h&&(c.priority=s.encoding.priority,c.networkPriority=s.encoding.priority),r.push(c)})),tt()&&pd()==="ios"){let s;r.forEach((o=>{s?o.maxFramerate&&o.maxFramerate>s&&(s=o.maxFramerate):s=o.maxFramerate}));let a=!0;r.forEach((o=>{var c;o.maxFramerate!=s&&(a&&(a=!1,V.info("Simulcast on iOS React-Native requires all encodings to share the same framerate.")),V.info('Setting framerate of encoding "'.concat((c=o.rid)!==null&&c!==void 0?c:"",'" to ').concat(s)),o.maxFramerate=s)}))}return r}function sl(i){if(i)return i.slice().sort(((e,t)=>{let n=e.encoding,r=t.encoding;return n.maxBitrate>r.maxBitrate?1:n.maxBitrate<r.maxBitrate?-1:n.maxBitrate===r.maxBitrate&&n.maxFramerate&&r.maxFramerate?n.maxFramerate>r.maxFramerate?1:-1:0}))}class al{constructor(e){let t=e.match(/^L(\d)T(\d)(h|_KEY|_KEY_SHIFT){0,1}$/);if(!t)throw new Error("invalid scalability mode");if(this.spatial=parseInt(t[1]),this.temporal=parseInt(t[2]),t.length>3)switch(t[3]){case"h":case"_KEY":case"_KEY_SHIFT":this.suffix=t[3]}}toString(){var e;return"L".concat(this.spatial,"T").concat(this.temporal).concat((e=this.suffix)!==null&&e!==void 0?e:"")}}class Mn extends aa{get sender(){return this._sender}set sender(e){this._sender=e,this.degradationPreference&&this.setDegradationPreference(this.degradationPreference)}constructor(e,t){let n=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],r=arguments.length>3?arguments[3]:void 0;super(e,R.Kind.Video,t,n,r),this.simulcastCodecs=new Map,this.degradationPreference="balanced",this.isCpuConstrained=!1,this.optimizeForPerformance=!1,this.monitorSender=()=>f(this,void 0,void 0,(function*(){if(!this.sender)return void(this._currentBitrate=0);let s;try{s=yield this.getSenderStats()}catch(c){return void this.log.error("could not get video sender stats",Object.assign(Object.assign({},this.logContext),{error:c}))}let a=new Map(s.map((c=>[c.rid,c]))),o=s.some((c=>c.qualityLimitationReason==="cpu"));if(o!==this.isCpuConstrained&&(this.isCpuConstrained=o,this.isCpuConstrained&&this.emit(u.TrackEvent.CpuConstrained)),this.prevStats){let c=0;a.forEach(((d,l)=>{var h;let p=(h=this.prevStats)===null||h===void 0?void 0:h.get(l);c+=sr(d,p)})),this._currentBitrate=c}this.prevStats=a})),this.senderLock=new U}get isSimulcast(){return!!(this.sender&&this.sender.getParameters().encodings.length>1)}startMonitor(e){var t;if(this.signalClient=e,!Fe())return;let n=(t=this.sender)===null||t===void 0?void 0:t.getParameters();n&&(this.encodings=n.encodings),this.monitorInterval||(this.monitorInterval=setInterval((()=>{this.monitorSender()}),js))}stop(){this._mediaStreamTrack.getConstraints(),this.simulcastCodecs.forEach((e=>{e.mediaStreamTrack.stop()})),super.stop()}pauseUpstream(){let e=Object.create(null,{pauseUpstream:{get:()=>super.pauseUpstream}});return f(this,void 0,void 0,(function*(){var t,n,r,s,a;yield e.pauseUpstream.call(this);try{for(var o,c=!0,d=Ge(this.simulcastCodecs.values());!(t=(o=yield d.next()).done);c=!0)s=o.value,c=!1,yield(a=s.sender)===null||a===void 0?void 0:a.replaceTrack(null)}catch(l){n={error:l}}finally{try{c||t||!(r=d.return)||(yield r.call(d))}finally{if(n)throw n.error}}}))}resumeUpstream(){let e=Object.create(null,{resumeUpstream:{get:()=>super.resumeUpstream}});return f(this,void 0,void 0,(function*(){var t,n,r,s,a;yield e.resumeUpstream.call(this);try{for(var o,c=!0,d=Ge(this.simulcastCodecs.values());!(t=(o=yield d.next()).done);c=!0){s=o.value,c=!1;let l=s;yield(a=l.sender)===null||a===void 0?void 0:a.replaceTrack(l.mediaStreamTrack)}}catch(l){n={error:l}}finally{try{c||t||!(r=d.return)||(yield r.call(d))}finally{if(n)throw n.error}}}))}mute(){let e=Object.create(null,{mute:{get:()=>super.mute}});return f(this,void 0,void 0,(function*(){let t=yield this.muteLock.lock();try{return this.isMuted?(this.log.debug("Track already muted",this.logContext),this):(this.source!==R.Source.Camera||this.isUserProvided||(this.log.debug("stopping camera track",this.logContext),this._mediaStreamTrack.stop()),yield e.mute.call(this),this)}finally{t()}}))}unmute(){let e=Object.create(null,{unmute:{get:()=>super.unmute}});return f(this,void 0,void 0,(function*(){let t=yield this.muteLock.lock();try{return this.isMuted?(this.source!==R.Source.Camera||this.isUserProvided||(this.log.debug("reacquiring camera track",this.logContext),yield this.restart(void 0,!0)),yield e.unmute.call(this),this):(this.log.debug("Track already unmuted",this.logContext),this)}finally{t()}}))}setTrackMuted(e){super.setTrackMuted(e);for(let t of this.simulcastCodecs.values())t.mediaStreamTrack.enabled=!e}getSenderStats(){return f(this,void 0,void 0,(function*(){var e;if(!(!((e=this.sender)===null||e===void 0)&&e.getStats))return[];let t=[],n=yield this.sender.getStats();return n.forEach((r=>{var s;if(r.type==="outbound-rtp"){let a={type:"video",streamId:r.id,frameHeight:r.frameHeight,frameWidth:r.frameWidth,framesPerSecond:r.framesPerSecond,framesSent:r.framesSent,firCount:r.firCount,pliCount:r.pliCount,nackCount:r.nackCount,packetsSent:r.packetsSent,bytesSent:r.bytesSent,qualityLimitationReason:r.qualityLimitationReason,qualityLimitationDurations:r.qualityLimitationDurations,qualityLimitationResolutionChanges:r.qualityLimitationResolutionChanges,rid:(s=r.rid)!==null&&s!==void 0?s:r.id,retransmittedPacketsSent:r.retransmittedPacketsSent,targetBitrate:r.targetBitrate,timestamp:r.timestamp},o=n.get(r.remoteId);o&&(a.jitter=o.jitter,a.packetsLost=o.packetsLost,a.roundTripTime=o.roundTripTime),t.push(a)}})),t.sort(((r,s)=>{var a,o;return((a=s.frameWidth)!==null&&a!==void 0?a:0)-((o=r.frameWidth)!==null&&o!==void 0?o:0)})),t}))}isSvcPublish(e){return Rt(e)&&!yn(e,this.publishOptions)}setPublishingQuality(e){let t=[];for(let n=u.VideoQuality.LOW;n<=u.VideoQuality.HIGH;n+=1)t.push(new es({quality:n,enabled:n<=e}));this.log.debug("setting publishing quality. max quality ".concat(e),this.logContext),this.setPublishingLayers(this.isSvcPublish(this.codec),t)}restartTrack(e){return f(this,void 0,void 0,(function*(){var t,n,r,s,a;let o;if(e){let h=ws({video:e});typeof h.video!="boolean"&&(o=h.video)}yield this.restart(o),this.isCpuConstrained=!1;try{for(var c,d=!0,l=Ge(this.simulcastCodecs.values());!(t=(c=yield l.next()).done);d=!0){s=c.value,d=!1;let h=s;h.sender&&((a=h.sender.transport)===null||a===void 0?void 0:a.state)!=="closed"&&(h.mediaStreamTrack=this.mediaStreamTrack.clone(),yield h.sender.replaceTrack(h.mediaStreamTrack))}}catch(h){n={error:h}}finally{try{d||t||!(r=l.return)||(yield r.call(l))}finally{if(n)throw n.error}}yield this.onSenderTrackSwapped()}))}onSenderTrackSwapped(){return f(this,void 0,void 0,(function*(){yield this.refreshSenderEncodings()}))}refreshSenderEncodings(){return f(this,void 0,void 0,(function*(){var e;if(!this.sender||!this.publishOptions||this.optimizeForPerformance)return;let t=yield this.senderLock.lock();try{let r;try{r=yield this.waitForDimensions()}catch(a){return void this.log.warn("could not determine new track dimensions, skipping encoding recompute",Object.assign(Object.assign({},this.logContext),{error:a}))}if(this.lastEncodedDimensions&&this.lastEncodedDimensions.width===r.width&&this.lastEncodedDimensions.height===r.height)return;let s=dr(this.source===R.Source.ScreenShare,r.width,r.height,Object.assign({},this.publishOptions));yield this.applyEncodingsToSender(this.sender,s),this.encodings=s,this.lastEncodedDimensions=r;for(let a of this.simulcastCodecs){var n=D(a,2);let o=n[0],c=n[1];if(!c.sender||((e=c.sender.transport)===null||e===void 0?void 0:e.state)==="closed"||!Es(o))continue;let d=il(this,o,Object.assign({},this.publishOptions));d&&(yield this.applyEncodingsToSender(c.sender,d),c.encodings=d)}}catch(r){this.log.warn("failed to apply recomputed encodings",Object.assign(Object.assign({},this.logContext),{error:r}))}finally{t()}}))}applyEncodingsToSender(e,t){return f(this,void 0,void 0,(function*(){let n=e.getParameters();n.encodings&&n.encodings.length===t.length&&(n.encodings.forEach(((r,s)=>{if(r.active===!1)return;let a=t[s];a.scaleResolutionDownBy!==void 0&&(r.scaleResolutionDownBy=a.scaleResolutionDownBy),a.maxBitrate!==void 0&&(r.maxBitrate=a.maxBitrate),a.maxFramerate!==void 0&&(r.maxFramerate=a.maxFramerate),a.priority!==void 0&&(r.priority=a.priority,r.networkPriority=a.priority)})),this.log.debug("updating sender encodings after track restart",Object.assign(Object.assign({},this.logContext),{encodings:n.encodings})),yield e.setParameters(n))}))}setProcessor(e){let t=Object.create(null,{setProcessor:{get:()=>super.setProcessor}});return f(this,arguments,void 0,(function(n){var r=this;let s=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];return(function*(){var a,o,c,d,l,h;if(yield t.setProcessor.call(r,n,s),(l=r.processor)===null||l===void 0?void 0:l.processedTrack)try{for(var p,m=!0,k=Ge(r.simulcastCodecs.values());!(a=(p=yield k.next()).done);m=!0)d=p.value,m=!1,yield(h=d.sender)===null||h===void 0?void 0:h.replaceTrack(r.processor.processedTrack)}catch(g){o={error:g}}finally{try{m||a||!(c=k.return)||(yield c.call(k))}finally{if(o)throw o.error}}})()}))}setDegradationPreference(e){return f(this,void 0,void 0,(function*(){this.degradationPreference=e,yield this.applyDegradationPreference(this.sender);for(let t of this.simulcastCodecs.values())yield this.applyDegradationPreference(t.sender)}))}applyDegradationPreference(e){return f(this,void 0,void 0,(function*(){if(e)try{this.log.debug("setting degradationPreference to ".concat(this.degradationPreference),this.logContext);let t=e.getParameters();t.degradationPreference=this.degradationPreference,yield e.setParameters(t)}catch(t){this.log.warn("failed to set degradationPreference",Object.assign({error:t},this.logContext))}}))}addSimulcastTrack(e,t){if(this.simulcastCodecs.has(e))return void this.log.error("".concat(e," already added, skipping adding simulcast codec"),this.logContext);let n={codec:e,mediaStreamTrack:this.mediaStreamTrack.clone(),sender:void 0,encodings:t};return this.simulcastCodecs.set(e,n),n}setSimulcastTrackSender(e,t){return f(this,void 0,void 0,(function*(){let n=this.simulcastCodecs.get(e);n&&(n.sender=t,yield this.applyDegradationPreference(t),setTimeout((()=>{this.subscribedCodecs&&this.setPublishingCodecs(this.subscribedCodecs)}),5e3))}))}setPublishingCodecs(e){return f(this,void 0,void 0,(function*(){var t,n,r,s,a,o,c;if(this.log.debug("setting publishing codecs",Object.assign(Object.assign({},this.logContext),{codecs:e,currentCodec:this.codec})),!this.codec&&e.length>0)return yield this.setPublishingLayers(this.isSvcPublish(e[0].codec),e[0].qualities),[];this.subscribedCodecs=e;let d=[];try{for(t=!0,n=Ge(e);!(s=(r=yield n.next()).done);t=!0){c=r.value,t=!1;let l=c;if(this.codec&&this.codec!==l.codec){let h=this.simulcastCodecs.get(l.codec);if(this.log.debug("try setPublishingCodec for ".concat(l.codec),Object.assign(Object.assign({},this.logContext),{simulcastCodecInfo:h})),h&&h.sender)h.encodings&&(this.log.debug("try setPublishingLayersForSender ".concat(l.codec),this.logContext),yield ol(h.sender,h.encodings,l.qualities,this.senderLock,this.isSvcPublish(l.codec),this.log,this.logContext));else for(let p of l.qualities)if(p.enabled){d.push(l.codec);break}}else yield this.setPublishingLayers(this.isSvcPublish(l.codec),l.qualities)}}catch(l){a={error:l}}finally{try{t||s||!(o=n.return)||(yield o.call(n))}finally{if(a)throw a.error}}return d}))}setPublishingLayers(e,t){return f(this,void 0,void 0,(function*(){this.optimizeForPerformance?this.log.info("skipping setPublishingLayers due to optimized publishing performance",Object.assign(Object.assign({},this.logContext),{qualities:t})):(this.log.debug("setting publishing layers",Object.assign(Object.assign({},this.logContext),{qualities:t})),this.sender&&this.encodings&&(yield ol(this.sender,this.encodings,t,this.senderLock,e,this.log,this.logContext)))}))}prioritizePerformance(){return f(this,void 0,void 0,(function*(){if(!this.sender)throw new Error("sender not found");let e=yield this.senderLock.lock();try{this.optimizeForPerformance=!0;let t=this.sender.getParameters();t.encodings=t.encodings.map(((n,r)=>{var s;return Object.assign(Object.assign({},n),{active:r===0,scaleResolutionDownBy:Math.max(1,Math.ceil(((s=this.mediaStreamTrack.getSettings().height)!==null&&s!==void 0?s:360)/360)),scalabilityMode:r===0&&Rt(this.codec)?"L1T3":void 0,maxFramerate:r===0?15:0,maxBitrate:r===0?n.maxBitrate:0})})),this.log.debug("setting performance optimised encodings",Object.assign(Object.assign({},this.logContext),{encodings:t.encodings})),this.encodings=t.encodings,yield this.sender.setParameters(t)}catch(t){this.log.error("failed to set performance optimised encodings",Object.assign(Object.assign({},this.logContext),{error:t})),this.optimizeForPerformance=!1}finally{e()}}))}handleAppVisibilityChanged(){let e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return f(this,void 0,void 0,(function*(){yield e.handleAppVisibilityChanged.call(this),ud()&&this.isInBackground&&this.source===R.Source.Camera&&(this._mediaStreamTrack.enabled=!1)}))}}function ol(i,e,t,n,r,s,a){return f(this,void 0,void 0,(function*(){let o=yield n.lock();s.debug("setPublishingLayersForSender",Object.assign(Object.assign({},a),{sender:i,qualities:t,senderEncodings:e}));try{let c=i.getParameters(),d=c.encodings;if(!d)return;if(d.length!==e.length)return void s.warn("cannot set publishing layers, encodings mismatch",Object.assign(Object.assign({},a),{encodings:d,senderEncodings:e}));let l=!1;r&&t.some((h=>h.enabled))&&t.forEach((h=>h.enabled=!0)),d.forEach(((h,p)=>{var m;let k=(m=h.rid)!==null&&m!==void 0?m:"";k===""&&(k="q");let g=cl(k),v=t.find((b=>b.quality===g));v&&h.active!==v.enabled&&(l=!0,h.active=v.enabled,s.debug("setting layer ".concat(v.quality," to ").concat(h.active?"enabled":"disabled"),a),Gt()&&(v.enabled?(h.scaleResolutionDownBy=e[p].scaleResolutionDownBy,h.maxBitrate=e[p].maxBitrate,h.maxFrameRate=e[p].maxFrameRate):(h.scaleResolutionDownBy=4,h.maxBitrate=10,h.maxFrameRate=2)))})),l&&(c.encodings=d,s.debug("setting encodings",Object.assign(Object.assign({},a),{encodings:c.encodings})),yield i.setParameters(c))}finally{o()}}))}function cl(i){switch(i){case"f":default:return u.VideoQuality.HIGH;case"h":return u.VideoQuality.MEDIUM;case"q":return u.VideoQuality.LOW}}function dl(i,e,t,n){if(!t)return[new Lt({quality:u.VideoQuality.HIGH,width:i,height:e,bitrate:0,ssrc:0})];if(n){let r=t[0].scalabilityMode,s=new al(r),a=[],o=s.suffix=="h"?1.5:2,c=s.suffix=="h"?2:3;for(let d=0;d<s.spatial;d+=1)a.push(new Lt({quality:Math.min(u.VideoQuality.HIGH,s.spatial-1)-d,width:Math.ceil(i/Math.pow(o,d)),height:Math.ceil(e/Math.pow(o,d)),bitrate:t[0].maxBitrate?Math.ceil(t[0].maxBitrate/Math.pow(c,d)):0,ssrc:0}));return a}return t.map((r=>{var s,a,o;let c=(s=r.scaleResolutionDownBy)!==null&&s!==void 0?s:1,d=cl((a=r.rid)!==null&&a!==void 0?a:"");return new Lt({quality:d,width:Math.ceil(i/c),height:Math.ceil(e/c),bitrate:(o=r.maxBitrate)!==null&&o!==void 0?o:0,ssrc:0})}))}let da="leave-reconnect";var He;(function(i){i[i.New=0]="New",i[i.Connected=1]="Connected",i[i.Disconnected=2]="Disconnected",i[i.Reconnecting=3]="Reconnecting",i[i.Closed=4]="Closed"})(He||(He={}));class Wp extends Ue.EventEmitter{get isClosed(){return this._isClosed}get isNewlyCreated(){return this._isNewlyCreated}get pendingReconnect(){return!!this.reconnectTimeout}get serverVersion(){var e,t,n;return((t=(e=this.latestJoinResponse)===null||e===void 0?void 0:e.serverInfo)===null||t===void 0?void 0:t.version)||((n=this.latestJoinResponse)===null||n===void 0?void 0:n.serverVersion)||void 0}get reliableChannel(){return this.dataChannels.reliable}get lossyChannel(){return this.dataChannels.lossy}get dataTrackChannel(){return this.dataChannels.dataTrack}constructor(e){var t;super(),this.options=e,this.rtcConfig={},this.peerConnectionTimeout=ra.peerConnectionTimeout,this.fullReconnectOnNext=!1,this.latestRemoteOfferId=0,this.subscriberPrimary=!1,this.pcState=He.New,this._isClosed=!0,this._isNewlyCreated=!0,this.pendingTrackResolvers={},this.reconnectAttempts=0,this.reconnectStart=0,this.attemptingReconnect=!1,this.joinAttempts=0,this.maxJoinAttempts=1,this.shouldFailNext=!1,this.shouldFailOnV1Path=!1,this.log=V,this.reliableReceivedState=new Rp(3e4),this.midToTrackId={},this.isWaitingForNetworkReconnect=!1,this.handleDataChannel=n=>f(this,[n],void 0,(function(r){var s=this;let a=r.channel;return(function*(){a&&s.dataChannels.adoptSubscriberChannel(a)&&s.log.debug("on data channel ".concat(a.id,", ").concat(a.label))})()})),this.handleDataMessage=n=>f(this,void 0,void 0,(function*(){var r,s,a,o;let c=yield this.dataProcessLock.lock();try{let d=yield this.decodeDataMessage(n);if(!d)return;let l=Re.fromBinary(d);if(l.sequence>0&&l.participantSid!==""){let h=this.reliableReceivedState.get(l.participantSid);if(h&&l.sequence<=h)return;this.reliableReceivedState.set(l.participantSid,l.sequence)}if(((r=l.value)===null||r===void 0?void 0:r.case)==="speaker")this.emit(u.EngineEvent.ActiveSpeakersUpdate,l.value.value.speakers);else if(((s=l.value)===null||s===void 0?void 0:s.case)==="encryptedPacket"){if(!this.e2eeManager)return void this.log.error("Received encrypted packet but E2EE not set up");let h;try{h=yield this.e2eeManager.handleEncryptedData(l.value.value.encryptedValue,l.value.value.iv,l.participantIdentity,l.value.value.keyIndex)}catch(k){return void this.log.debug("failed to decrypt data packet",{error:k,participantIdentity:l.participantIdentity})}let p=Eo.fromBinary(h.payload),m=new Re({value:p.value,participantIdentity:l.participantIdentity,participantSid:l.participantSid});((a=m.value)===null||a===void 0?void 0:a.case)==="user"&&ll(m,m.value.value),this.emit(u.EngineEvent.DataPacketReceived,m,l.value.value.encryptionType)}else((o=l.value)===null||o===void 0?void 0:o.case)==="user"&&ll(l,l.value.value),this.emit(u.EngineEvent.DataPacketReceived,l,G.NONE)}finally{c()}})),this.handleDataTrackMessage=n=>f(this,void 0,void 0,(function*(){let r=yield this.decodeDataMessage(n);r&&this.emit("dataTrackPacketReceived",r)})),this.handleDataError=n=>{if(this._isClosed)return;let r=n.currentTarget.maxRetransmits===0?"lossy":"reliable";if(typeof RTCErrorEvent<"u"&&n instanceof RTCErrorEvent&&n.error){let s=n.error;this.log.error("DataChannel error on ".concat(r,": ").concat(s.message),{error:s,errorDetail:s.errorDetail,sctpCauseCode:s.sctpCauseCode})}else this.log.error("Unknown DataChannel error on ".concat(r),{event:n})},this.handleDataChannelClose=n=>()=>{var r;this._isClosed||((r=this.pcManager)===null||r===void 0?void 0:r.publisher.getConnectionState())!=="connected"||this.log.error("publisher data channel '".concat(H[n],"' closed unexpectedly"),this.logContext)},this.handleDisconnect=(n,r)=>{if(this._isClosed)return;this.log.warn("".concat(n," disconnected")),this.reconnectAttempts===0&&(this.reconnectStart=Date.now());let s=c=>{this.log.warn("could not recover connection after ".concat(this.reconnectAttempts," attempts, ").concat(c,"ms. giving up")),this.emit(u.EngineEvent.Disconnected),this.close("gave up reconnecting after ".concat(this.reconnectAttempts," attempts, ").concat(c,"ms"))},a=Date.now()-this.reconnectStart,o=this.getNextRetryDelay({elapsedMs:a,retryCount:this.reconnectAttempts});o!==null?(n===da&&(o=0),this.log.debug("reconnecting in ".concat(o,"ms")),this.clearReconnectTimeout(),this.token&&this.emit(u.EngineEvent.TokenRefreshed,this.token),this.reconnectTimeout=Q.setTimeout((()=>this.attemptReconnect(r).finally((()=>this.reconnectTimeout=void 0))),o)):s(a)},this.waitForRestarted=()=>new Promise(((n,r)=>{this.pcState===He.Connected&&n();let s=()=>{this.off(u.EngineEvent.Disconnected,a),n()},a=()=>{this.off(u.EngineEvent.Restarted,s),r()};this.once(u.EngineEvent.Restarted,s),this.once(u.EngineEvent.Disconnected,a)})),this.onRtpMapAvailable=n=>{let r=new Map;n.forEach((s=>{let a=s.codec.toLowerCase();Ns(a)&&r.set(s.payload,a)})),this.emit(u.EngineEvent.RTPVideoMapUpdate,r)},this.handleBrowserOnLine=()=>f(this,void 0,void 0,(function*(){this.url&&(yield fetch($n(this.url),{method:"HEAD"}).then((n=>n.ok)).catch((()=>!1)))&&(this.log.info("detected network reconnected"),(this.client.currentState===Me.RECONNECTING||this.isWaitingForNetworkReconnect&&this.client.currentState===Me.CONNECTED)&&(this.clearReconnectTimeout(),this.attemptReconnect(Tt.RR_SIGNAL_DISCONNECTED),this.isWaitingForNetworkReconnect=!1))})),this.handleBrowserOffline=()=>f(this,void 0,void 0,(function*(){if(this.url)try{yield Promise.race([fetch($n(this.url),{method:"HEAD"}),we(4e3).then((()=>Promise.reject()))])}catch{window.navigator.onLine===!1&&(this.log.info("detected network interruption"),this.isWaitingForNetworkReconnect=!0)}})),this.log=he((t=e.loggerName)!==null&&t!==void 0?t:u.LoggerNames.Engine,(()=>this.logContext)),this.loggerOptions={loggerName:e.loggerName,loggerContextCb:()=>this.logContext},this.client=new Xs(void 0,this.loggerOptions),this.client.signalLatency=this.options.expSignalLatency,this.reconnectPolicy=this.options.reconnectPolicy,this.closingLock=new U,this.dataProcessLock=new U,this.dataChannels=new xp({isEngineClosed:()=>this.isClosed,isReconnecting:()=>this.attemptingReconnect,onDataMessage:n=>this.handleDataMessage(n),onDataTrackMessage:n=>this.handleDataTrackMessage(n),onDataError:n=>this.handleDataError(n),onChannelClose:n=>this.handleDataChannelClose(n)(),onBufferStatusChanged:(n,r)=>this.emit(u.EngineEvent.DCBufferStatusChanged,r,n)}),this.client.onParticipantUpdate=n=>this.emit(u.EngineEvent.ParticipantUpdate,n),this.client.onConnectionQuality=n=>{this.handleLocalConnectionQuality(n),this.emit(u.EngineEvent.ConnectionQualityUpdate,n)},this.client.onRoomUpdate=n=>this.emit(u.EngineEvent.RoomUpdate,n),this.client.onSubscriptionError=n=>this.emit(u.EngineEvent.SubscriptionError,n),this.client.onSubscriptionPermissionUpdate=n=>this.emit(u.EngineEvent.SubscriptionPermissionUpdate,n),this.client.onSpeakersChanged=n=>this.emit(u.EngineEvent.SpeakersChanged,n),this.client.onStreamStateUpdate=n=>this.emit(u.EngineEvent.StreamStateChanged,n),this.client.onRequestResponse=n=>this.emit(u.EngineEvent.SignalRequestResponse,n),this.client.onParticipantUpdate=n=>this.emit(u.EngineEvent.ParticipantUpdate,n),this.client.onJoined=n=>this.emit(u.EngineEvent.Joined,n)}get logContext(){var e,t,n,r,s,a;return{room:(t=(e=this.latestJoinResponse)===null||e===void 0?void 0:e.room)===null||t===void 0?void 0:t.name,roomID:(r=(n=this.latestJoinResponse)===null||n===void 0?void 0:n.room)===null||r===void 0?void 0:r.sid,participant:(a=(s=this.latestJoinResponse)===null||s===void 0?void 0:s.participant)===null||a===void 0?void 0:a.identity,participantID:this.participantSid}}join(e,t,n,r){return f(this,arguments,void 0,(function(s,a,o,c){var d=this;let l=arguments.length>4&&arguments[4]!==void 0&&arguments[4];return(function*(){var h,p,m;d._isNewlyCreated=!1,d.url=s,d.token=a,d.signalOpts=o,d.maxJoinAttempts=o.maxRetries;try{d.joinAttempts+=1,d.setupSignalClientCallbacks();let k=!l&&Ut()&&!Gt(),g;if(k){d.pcManager||(yield d.configure(),d.applyInitialPublisherLayout());let T=yield(h=d.pcManager)===null||h===void 0?void 0:h.publisher.createInitialOffer();T&&(g=$t(T.offer,T.offerId))}if(c?.aborted)throw _.cancelled("Connection aborted");if(!l&&d.shouldFailOnV1Path)throw d.shouldFailOnV1Path=!1,_.serviceNotFound("Simulated v1 path failure","v0-rtc");let v=yield d.client.join(s,a,o,c,l,g);d._isClosed=!1,d.latestJoinResponse=v,d.participantSid=(p=v.participant)===null||p===void 0?void 0:p.sid,d.subscriberPrimary=v.subscriberPrimary,k?(m=d.pcManager)===null||m===void 0||m.updateConfiguration(d.makeRTCConfiguration(v)):(d.pcManager||(yield d.configure(v,!l),l||d.applyInitialPublisherLayout()),d.subscriberPrimary&&!v.fastPublish||d.negotiate().catch((T=>{d.log.error(T)}))),d.registerOnLineListener(),d.clientConfiguration=v.clientConfiguration,d.emit(u.EngineEvent.SignalConnected,v);let b=v.serverInfo;return b||(b={version:v.serverVersion,region:v.serverRegion}),d.log.info("connected to Livekit Server ".concat(Object.entries(b).map((T=>{let E=D(T,2),S=E[0],C=E[1];return"".concat(S,": ").concat(C)})).join(", "))),{joinResponse:v,serverInfo:b}}catch(k){if(k instanceof _){if(k.reason===u.ConnectionErrorReason.ServerUnreachable){if(d.log.warn("Couldn't connect to server, attempt ".concat(d.joinAttempts," of ").concat(d.maxJoinAttempts)),d.joinAttempts<d.maxJoinAttempts)return d.join(s,a,o,c,l)}else if(k.reason===u.ConnectionErrorReason.ServiceNotFound)return d.log.warn("Initial connection failed: ".concat(k.message," \u2013 Retrying")),d.pcManager&&(d.pcManager.onStateChange=void 0,yield d.cleanupPeerConnections()),d.join(s,a,o,c,!0)}throw k}})()}))}close(e){return f(this,void 0,void 0,(function*(){let t=yield this.closingLock.lock();if(this.isClosed)t();else try{this._isClosed=!0,this.joinAttempts=0,this.emit(u.EngineEvent.Closing),this.removeAllListeners(),this.deregisterOnLineListener(),this.clearPendingReconnect(),this.clearLostQualityTimeout(),this.cleanupLossyDataStats(),yield this.cleanupPeerConnections(),yield this.cleanupClient(e)}finally{t()}}))}cleanupPeerConnections(){return f(this,void 0,void 0,(function*(){var e;this.dataChannels.teardown(),yield(e=this.pcManager)===null||e===void 0?void 0:e.close(),this.pcManager=void 0,this.transportConnectingSince=void 0,this.reliableReceivedState.clear()}))}cleanupLossyDataStats(){this.lossyChannel.stopThresholdTuning()}cleanupClient(e){return f(this,void 0,void 0,(function*(){yield this.client.close(!0,e),this.client.resetCallbacks();for(let t of Object.keys(this.pendingTrackResolvers))this.pendingTrackResolvers[t].reject();this.pendingTrackResolvers={}}))}addTrack(e){if(this.pendingTrackResolvers[e.cid])throw new et("a track with the same ID has already been published");return new Promise(((t,n)=>{let r=Q.setTimeout((()=>{delete this.pendingTrackResolvers[e.cid],n(_.timeout("publication of local track timed out, no response from server"))}),1e4);this.pendingTrackResolvers[e.cid]={resolve:s=>{Q.clearTimeout(r),t(s)},reject:()=>{Q.clearTimeout(r),n(new Error("Cancelled publication by calling unpublish"))}},this.client.sendAddTrack(e)}))}removeTrack(e){if(e.track&&this.pendingTrackResolvers[e.track.id]){let t=this.pendingTrackResolvers[e.track.id].reject;t&&t(),delete this.pendingTrackResolvers[e.track.id]}try{return this.pcManager.removeTrack(e),!0}catch(t){this.log.warn("failed to remove track",{error:t})}return!1}updateMuteStatus(e,t){this.client.sendMuteTrack(e,t)}get dataSubscriberReadyState(){var e;return(e=this.dataChannelForKind(H.RELIABLE,!0))===null||e===void 0?void 0:e.readyState}getConnectedServerAddress(){return f(this,void 0,void 0,(function*(){var e;return(e=this.pcManager)===null||e===void 0?void 0:e.getConnectedAddress()}))}setRegionStrategy(e){this.regionStrategy=e}configure(e,t){return f(this,void 0,void 0,(function*(){var n;if(!this.pcManager||this.pcManager.currentState===re.NEW){if(e){this.participantSid=(n=e.participant)===null||n===void 0?void 0:n.sid;let r=this.makeRTCConfiguration(e);this.pcManager=new Qd(t?"publisher-only":e.subscriberPrimary?"subscriber-primary":"publisher-primary",this.loggerOptions,r)}else{let r=this.makeRTCConfiguration();this.pcManager=new Qd("publisher-only",this.loggerOptions,r)}this.emit(u.EngineEvent.TransportsCreated,this.pcManager.publisher,this.pcManager.subscriber),this.pcManager.onIceCandidate=(r,s)=>{this.client.sendIceCandidate(r,s)},this.pcManager.onPublisherOffer=(r,s)=>{this.client.sendOffer(r,s)},this.pcManager.onDataChannel=this.handleDataChannel,this.pcManager.onStateChange=(r,s,a)=>f(this,void 0,void 0,(function*(){if(this.log.debug("primary PC state changed ".concat(r)),r===re.CONNECTING?this.transportConnectingSince=Date.now():this.transportConnectingSince=void 0,["closed","disconnected","failed"].includes(s)&&(this.publisherConnectionPromise=void 0),r===re.CONNECTED){let d=this.pcState===He.New;this.pcState=He.Connected,d&&this.emit(u.EngineEvent.Connected,this.latestJoinResponse)}else r===re.FAILED&&(this.pcState!==He.Connected&&this.pcState!==He.Reconnecting||(this.pcState=He.Disconnected,this.handleDisconnect("peerconnection failed",a==="failed"?Tt.RR_SUBSCRIBER_FAILED:Tt.RR_PUBLISHER_FAILED)));let o=this.client.isDisconnected||this.client.currentState===Me.RECONNECTING,c=[re.FAILED,re.CLOSING,re.CLOSED].includes(r);o&&c&&!this._isClosed&&this.emit(u.EngineEvent.Offline)})),this.pcManager.onTrack=r=>{r.streams.length!==0&&this.emit(u.EngineEvent.MediaTrackAdded,r.track,r.streams[0],r.receiver)}}}))}setupSignalClientCallbacks(){this.client.onAnswer=(e,t,n)=>f(this,void 0,void 0,(function*(){this.pcManager&&(this.log.debug("received server answer",{RTCSdpType:e.type,sdp:e.sdp,midToTrackId:n}),this.pcManager.mode==="publisher-only"&&(this.midToTrackId=n),yield this.pcManager.setPublisherAnswer(e,t))})),this.client.onTrickle=(e,t)=>{this.pcManager&&(this.log.debug("got ICE candidate from peer",{candidate:e,target:t}),this.pcManager.addIceCandidate(e,t))},this.client.onOffer=(e,t,n)=>f(this,void 0,void 0,(function*(){if(this.latestRemoteOfferId=t,!this.pcManager)return;this.midToTrackId=n;let r=yield this.pcManager.createSubscriberAnswerFromOffer(e,t);r&&this.client.sendAnswer(r,t)})),this.client.onLocalTrackPublished=e=>{var t;if(this.log.debug("received trackPublishedResponse",{cid:e.cid,track:(t=e.track)===null||t===void 0?void 0:t.sid}),!this.pendingTrackResolvers[e.cid])return void this.log.error("missing track resolver for ".concat(e.cid),{cid:e.cid});let n=this.pendingTrackResolvers[e.cid].resolve;delete this.pendingTrackResolvers[e.cid],n(e.track)},this.client.onLocalTrackUnpublished=e=>{this.emit(u.EngineEvent.LocalTrackUnpublished,e)},this.client.onLocalTrackSubscribed=e=>{this.emit(u.EngineEvent.LocalTrackSubscribed,e)},this.client.onTokenRefresh=e=>{this.token=e,this.emit(u.EngineEvent.TokenRefreshed,e)},this.client.onRemoteMuteChanged=(e,t)=>{this.emit(u.EngineEvent.RemoteMute,e,t)},this.client.onSubscribedQualityUpdate=e=>{this.emit(u.EngineEvent.SubscribedQualityUpdate,e)},this.client.onRoomMoved=e=>{var t;this.participantSid=(t=e.participant)===null||t===void 0?void 0:t.sid,this.latestJoinResponse&&(this.latestJoinResponse.room=e.room),this.emit(u.EngineEvent.RoomMoved,e)},this.client.onMediaSectionsRequirement=e=>{this.addMediaSections(e.numAudios,e.numVideos),this.negotiate()},this.client.onPublishDataTrackResponse=e=>{this.emit(u.EngineEvent.PublishDataTrackResponse,e)},this.client.onUnPublishDataTrackResponse=e=>{this.emit(u.EngineEvent.UnPublishDataTrackResponse,e)},this.client.onDataTrackSubscriberHandles=e=>{this.emit(u.EngineEvent.DataTrackSubscriberHandles,e)},this.client.onClose=()=>{this.handleDisconnect("signal",Tt.RR_SIGNAL_DISCONNECTED)},this.client.onLeave=e=>{var t;switch(this.log.info("client leave request received (action=".concat(e?.action,")"),{reason:e?.reason}),e.regions&&(this.log.debug("updating regions"),this.emit(u.EngineEvent.ServerRegionsReported,e.regions)),e.action){case un.DISCONNECT:this.emit(u.EngineEvent.Disconnected,e?.reason),this.close("server leave: ".concat((t=xe[e.reason])!==null&&t!==void 0?t:e.reason));break;case un.RECONNECT:this.fullReconnectOnNext=!0,this.handleDisconnect(da);break;case un.RESUME:this.handleDisconnect(da)}}}makeRTCConfiguration(e){var t;let n=Object.assign({},this.rtcConfig);if((!((t=this.signalOpts)===null||t===void 0)&&t.e2eeEnabled||this.frameMetadataWorker&&!Zn())&&ir()&&(this.log.debug("E2EE - setting up transports with insertable streams"),n.encodedInsertableStreams=!0),n.sdpSemantics="unified-plan",n.continualGatheringPolicy="gather_continually",!e)return n;if(e.iceServers&&!n.iceServers){let r=[];e.iceServers.forEach((s=>{let a={urls:s.urls};s.username&&(a.username=s.username),s.credential&&(a.credential=s.credential),r.push(a)})),n.iceServers=r}return e.clientConfiguration&&e.clientConfiguration.forceRelay===Bn.ENABLED&&(n.iceTransportPolicy="relay"),n}applyInitialPublisherLayout(){this.createDataChannels(),tt()||this.addMediaSections(3,3)}addMediaSections(e,t){var n,r,s;let a={direction:"recvonly"};for(let c=0;c<e;c++)(n=this.pcManager)===null||n===void 0||n.addPublisherTransceiverOfKind("audio",a);let o=((r=this.pcManager)===null||r===void 0?void 0:r.mode)==="publisher-only";for(let c=0;c<t;c++){let d=(s=this.pcManager)===null||s===void 0?void 0:s.addPublisherTransceiverOfKind("video",a);if(o&&d){let l=rp(d);this.log.debug("dependency descriptor negotiated for received video",{negotiated:l})}}}createDataChannels(){this.pcManager&&this.dataChannels.createPublisherChannels(this.pcManager)}decodeDataMessage(e){return f(this,void 0,void 0,(function*(){return e.data instanceof ArrayBuffer?new Uint8Array(e.data):e.data instanceof Blob?new Uint8Array(yield e.data.arrayBuffer()):void this.log.error("unsupported data type",{data:e.data})}))}createSender(e,t,n){return f(this,void 0,void 0,(function*(){let r;if(Yi())r=yield this.createTransceiverRTCRtpSender(e,t,n);else{if(!Is())throw new ie("Required webRTC APIs not supported on this device");this.log.warn("using add-track fallback"),r=yield this.createRTCRtpSender(e.mediaStreamTrack)}return this.setupFrameMetadataSender(r,t),r}))}createSimulcastSender(e,t,n,r){return f(this,void 0,void 0,(function*(){let s;if(Yi())s=yield this.createSimulcastTransceiverSender(e,t,n,r);else{if(!Is())throw new ie("Cannot stream on this device");this.log.debug("using add-track fallback"),s=yield this.createRTCRtpSender(e.mediaStreamTrack)}return s&&this.setupFrameMetadataSender(s,n),s}))}get frameMetadataWorker(){var e,t;return(t=(e=this.options.frameMetadata)!==null&&e!==void 0?e:this.options.packetTrailer)===null||t===void 0?void 0:t.worker}setupFrameMetadataSender(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};var n,r,s;let a=this.frameMetadataWorker;if(!a||!((n=this.signalOpts)===null||n===void 0)&&n.e2eeEnabled)return;let o=(r=t.frameMetadata)!==null&&r!==void 0?r:t.packetTrailer,c=rr(o);if(Zn())return void(c&&(e.transform=new RTCRtpScriptTransform(a,{kind:"encode",packetTrailer:o})));if(!ei((s=this.options.frameMetadata)!==null&&s!==void 0?s:this.options.packetTrailer)||!("createEncodedStreams"in e))return void(c&&this.log.warn("frame metadata transform not supported; skipping write",this.logContext));let d=e.createEncodedStreams(),l=d.readable,h=d.writable;c?a.postMessage({kind:"encode",data:{readableStream:l,writableStream:h,packetTrailer:o}},[l,h]):l.pipeTo(h)}createTransceiverRTCRtpSender(e,t,n){return f(this,void 0,void 0,(function*(){if(!this.pcManager)throw new ie("publisher is closed");let r=[];e.mediaStream&&r.push(e.mediaStream),ht(e)&&(e.codec=t.videoCodec);let s={direction:"sendonly",streams:r};return n&&(s.sendEncodings=n),(yield this.pcManager.addPublisherTransceiver(e.mediaStreamTrack,s)).sender}))}createSimulcastTransceiverSender(e,t,n,r){return f(this,void 0,void 0,(function*(){if(!this.pcManager)throw new ie("publisher is closed");let s={direction:"sendonly"};r&&(s.sendEncodings=r);let a=yield this.pcManager.addPublisherTransceiver(t.mediaStreamTrack,s);if(n.videoCodec)return yield e.setSimulcastTrackSender(n.videoCodec,a.sender),a.sender}))}createRTCRtpSender(e){return f(this,void 0,void 0,(function*(){if(!this.pcManager)throw new ie("publisher is closed");return this.pcManager.addPublisherTrack(e)}))}handleLocalConnectionQuality(e){if(!this.participantSid)return;let t=e.updates.find((n=>n.participantSid===this.participantSid));t&&(t.quality===an.LOST?this.scheduleLostQualityReconnect():this.clearLostQualityTimeout())}scheduleLostQualityReconnect(){this.lostQualityTimeout||(this.lostQualityTimeout=Q.setTimeout((()=>{this.lostQualityTimeout=void 0,this._isClosed||this.pcState!==He.Connected||this.attemptingReconnect||this.hasActivePublisherSenders()&&(this.log.warn("local connection quality lost while publishing, triggering full reconnect",this.logContext),this.fullReconnectOnNext=!0,this.handleDisconnect("connection quality lost",Tt.RR_PUBLISHER_FAILED))}),1e4))}clearLostQualityTimeout(){this.lostQualityTimeout&&(Q.clearTimeout(this.lostQualityTimeout),this.lostQualityTimeout=void 0)}hasActivePublisherSenders(){var e,t;return(t=(e=this.pcManager)===null||e===void 0?void 0:e.publisher.getSenders().some((n=>!!n.track&&n.track.readyState==="live")))!==null&&t!==void 0&&t}reconnect(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Tt.RR_UNKNOWN;this.fullReconnectOnNext=!0,this.handleDisconnect("reconcile",e)}attemptReconnect(e){return f(this,void 0,void 0,(function*(){var t,n,r;if(this._isClosed)return;if(this.attemptingReconnect)return void this.log.warn("already attempting reconnect, returning early");this.clearLostQualityTimeout(),((t=this.clientConfiguration)===null||t===void 0?void 0:t.resumeConnection)!==Bn.DISABLED&&((r=(n=this.pcManager)===null||n===void 0?void 0:n.currentState)!==null&&r!==void 0?r:re.NEW)!==re.NEW||(this.fullReconnectOnNext=!0);let s=this.fullReconnectOnNext;this.fullReconnectOnNext=!1;let a=!1;try{this.attemptingReconnect=!0,s?yield this.restartConnection():yield this.resumeConnection(e),this.clearPendingReconnect(),a=!0}catch(o){this.reconnectAttempts+=1;let c=!0;o instanceof ie?(this.log.debug("received unrecoverable error",{error:o}),c=!1):!s&&o instanceof Ht||(this.fullReconnectOnNext=!0),c?this.handleDisconnect("reconnect",Tt.RR_UNKNOWN):(this.log.info("could not recover connection after ".concat(this.reconnectAttempts," attempts, ").concat(Date.now()-this.reconnectStart,"ms. giving up")),this.emit(u.EngineEvent.Disconnected),yield this.close("gave up reconnecting after ".concat(this.reconnectAttempts," attempts, ").concat(Date.now()-this.reconnectStart,"ms")))}finally{this.attemptingReconnect=!1,a&&this.fullReconnectOnNext&&!this._isClosed&&(this.log.debug("full reconnect requested during in-progress attempt, dispatching"),this.handleDisconnect("reconnect"))}}))}getNextRetryDelay(e){try{return this.reconnectPolicy.nextRetryDelayInMs(e)}catch(t){this.log.warn("encountered error in reconnect policy",{error:t})}return null}restartConnection(e){return f(this,void 0,void 0,(function*(){var t,n,r;try{if(!this.url||!this.token)throw new ie("could not reconnect, url or token not saved");let s;this.log.info("reconnecting, attempt: ".concat(this.reconnectAttempts)),this.emit(u.EngineEvent.Restarting),this.client.isDisconnected||(yield this.client.sendLeave()),yield this.cleanupPeerConnections(),yield this.cleanupClient();try{if(!this.signalOpts)throw this.log.warn("attempted connection restart, without signal options present"),new Ht;s=(yield this.join(e??this.url,this.token,this.signalOpts,void 0,!this.options.singlePeerConnection)).joinResponse}catch(a){throw a instanceof _&&a.reason===u.ConnectionErrorReason.NotAllowed?new ie("could not reconnect, token might be expired"):new Ht}if(this.shouldFailNext)throw this.shouldFailNext=!1,new Error("simulated failure");if(this.client.setReconnected(),this.emit(u.EngineEvent.SignalRestarted,s),yield this.waitForPCReconnected(),this.client.currentState!==Me.CONNECTED)throw new Ht("Signal connection got severed during reconnect");(t=this.regionStrategy)===null||t===void 0||t.resetAttempts(),this.emit(u.EngineEvent.Restarted)}catch(s){let a=yield(n=this.regionStrategy)===null||n===void 0?void 0:n.getNextUrl();if(a)return void(yield this.restartConnection(a));throw(r=this.regionStrategy)===null||r===void 0||r.resetAttempts(),s}}))}resumeConnection(e){return f(this,void 0,void 0,(function*(){if(!this.url||!this.token)throw new ie("could not reconnect, url or token not saved");if(!this.pcManager)throw new ie("publisher and subscriber connections unset");let t;this.log.info("resuming signal connection, attempt ".concat(this.reconnectAttempts)),this.emit(u.EngineEvent.Resuming);try{this.setupSignalClientCallbacks(),t=yield this.client.reconnect(this.url,this.token,this.participantSid,e)}catch(r){let s="";throw r instanceof Error&&(s=r.message,this.log.error(r.message,{error:r})),r instanceof _&&r.reason===u.ConnectionErrorReason.NotAllowed?new ie("could not reconnect, token might be expired"):r instanceof _&&r.reason===u.ConnectionErrorReason.LeaveRequest?r:new Ht(s)}if(this.emit(u.EngineEvent.SignalResumed),t){let r=this.makeRTCConfiguration(t);this.pcManager.updateConfiguration(r),this.latestJoinResponse&&(this.latestJoinResponse.serverInfo=t.serverInfo)}else this.log.warn("Did not receive reconnect response");if(this.shouldFailNext)throw this.shouldFailNext=!1,new Error("simulated failure");if(yield this.pcManager.triggerIceRestart(),yield this.waitForPCReconnected(),this.client.currentState!==Me.CONNECTED)throw new Ht("Signal connection got severed during reconnect");this.client.setReconnected();let n=this.dataChannelForKind(H.RELIABLE);n?.readyState==="open"&&n.id===null&&this.createDataChannels(),t?.lastMessageSeq&&this.resendReliableMessagesForResume(t.lastMessageSeq).catch((r=>{this.log.warn("failed to resend reliable messages after resume",Object.assign(Object.assign({},this.logContext),{error:r}))})),this.emit(u.EngineEvent.Resumed)}))}waitForPCInitialConnection(e,t){return f(this,void 0,void 0,(function*(){if(!this.pcManager)throw new ie("PC manager is closed");yield this.pcManager.ensurePCTransportConnection(t,e)}))}waitForPCReconnected(){return f(this,void 0,void 0,(function*(){this.pcState=He.Reconnecting,this.log.debug("waiting for peer connection to reconnect");try{if(yield we(2e3),!this.pcManager)throw new ie("PC manager is closed");yield this.pcManager.ensurePCTransportConnection(void 0,this.peerConnectionTimeout),this.pcState=He.Connected}catch(e){throw this.pcState=He.Disconnected,_.internal("could not establish PC connection, ".concat(e.message))}}))}publishRpcAck(e,t){return f(this,void 0,void 0,(function*(){let n=new Re({destinationIdentities:[e],kind:St.RELIABLE,value:{case:"rpcAck",value:new Di({requestId:t})}});yield this.sendDataPacket(n,H.RELIABLE)}))}sendDataPacket(e,t){return f(this,void 0,void 0,(function*(){var n,r;if(yield this.ensurePublisherConnected(t),this.e2eeManager&&this.e2eeManager.isDataChannelEncryptionEnabled){let o=Md(e);if(o){let c=yield this.e2eeManager.encryptData(o.toBinary());e.value={case:"encryptedPacket",value:new So({encryptedValue:c.payload,iv:c.iv,keyIndex:c.keyIndex})}}}t===H.RELIABLE&&(e.sequence=this.reliableChannel.nextSequence());let s=e.toBinary(),a=Math.min((r=(n=this.pcManager)===null||n===void 0?void 0:n.getMaxPublisherMessageSize())!==null&&r!==void 0?r:64e3,64e3);if(a!==void 0&&a!==0&&s.byteLength>a)throw new Yc("cannot publish data packet larger than ".concat(a," bytes (got ").concat(s.byteLength,")"));t===H.RELIABLE?yield this.reliableChannel.send(s,e.sequence):yield this.lossyChannel.send(s)}))}sendDataTrackFrame(e){return f(this,void 0,void 0,(function*(){yield this.ensurePublisherConnected(H.DATA_TRACK_LOSSY),yield this.dataTrackChannel.send(e)}))}resendReliableMessagesForResume(e){return f(this,void 0,void 0,(function*(){yield this.ensurePublisherConnected(H.RELIABLE),yield this.reliableChannel.replay(e)}))}flowControlFor(e){return this.dataChannels.channelFor(e)}waitForBufferHeadroom(e){return f(this,void 0,void 0,(function*(){return this.flowControlFor(e).waitForHeadroomWithLock()}))}ensureDataTransportConnected(e){return f(this,arguments,void 0,(function(t){var n=this;let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.subscriberPrimary;return(function*(){var s;if(!n.pcManager)throw new ie("PC manager is closed");let a=r?n.pcManager.subscriber:n.pcManager.publisher,o=r?"Subscriber":"Publisher";if(!a)throw _.internal("".concat(o," connection not set"));let c=!1;r||n.dataChannelForKind(t,r)||(n.createDataChannels(),c=!0),c||r||n.pcManager.publisher.isICEConnected||n.pcManager.publisher.getICEConnectionState()==="checking"||(c=!0),c&&n.negotiate().catch((h=>{n.log.error(h)}));let d=n.dataChannelForKind(t,r);if(d?.readyState==="open")return;let l=new Date().getTime()+n.peerConnectionTimeout;for(;new Date().getTime()<l;){if(a.isICEConnected&&((s=n.dataChannelForKind(t,r))===null||s===void 0?void 0:s.readyState)==="open")return;yield we(50)}throw _.internal("could not establish ".concat(o," connection, state: ").concat(a.getICEConnectionState()))})()}))}ensurePublisherConnected(e){return f(this,void 0,void 0,(function*(){this.publisherConnectionPromise||(this.publisherConnectionPromise=this.ensureDataTransportConnected(e,!1)),yield this.publisherConnectionPromise}))}verifyTransport(){if(!this.pcManager)return!1;let e=this.pcManager.currentState;return!![re.CONNECTING,re.CONNECTED].includes(e)&&!(!this.client.ws||this.client.ws.readyState===WebSocket.CLOSED)&&(!(e===re.CONNECTING&&this.transportConnectingSince!==void 0&&Date.now()-this.transportConnectingSince>this.peerConnectionTimeout)||(this.log.warn("transport stuck in connecting state",this.logContext),!1))}negotiate(){return f(this,void 0,void 0,(function*(){return new Ie(((e,t)=>f(this,void 0,void 0,(function*(){if(!this.pcManager)return void t(new wt("PC manager is closed"));this.pcManager.requirePublisher(),this.pcManager.publisher.getTransceivers().length!=0||this.dataChannels.hasPublisherChannels||this.createDataChannels();let n=new AbortController,r=()=>{n.abort(),this.log.debug("engine disconnected while negotiation was ongoing"),e()};this.isClosed&&t(new wt("cannot negotiate on closed engine")),this.on(u.EngineEvent.Closing,r),this.on(u.EngineEvent.Restarting,r),this.pcManager.publisher.off(na,this.onRtpMapAvailable),this.pcManager.publisher.once(na,this.onRtpMapAvailable);try{yield this.pcManager.negotiate(n),e()}catch(s){if(n.signal.aborted)return void e();s instanceof wt&&(this.fullReconnectOnNext=!0),this.handleDisconnect("negotiation",Tt.RR_UNKNOWN),s instanceof Error?t(s):t(new Error(String(s)))}finally{this.off(u.EngineEvent.Closing,r),this.off(u.EngineEvent.Restarting,r)}}))))}))}dataChannelForKind(e,t){return this.dataChannels.getHandle(e,t)}sendSyncState(e,t,n){var r,s,a,o;if(!this.pcManager)return void this.log.warn("sync state cannot be sent without peer connection setup");let c=this.pcManager.publisher.getLocalDescription(),d=this.pcManager.publisher.getRemoteDescription(),l=(r=this.pcManager.subscriber)===null||r===void 0?void 0:r.getRemoteDescription(),h=(s=this.pcManager.subscriber)===null||s===void 0?void 0:s.getLocalDescription(),p=(o=(a=this.signalOpts)===null||a===void 0?void 0:a.autoSubscribe)===null||o===void 0||o,m=new Array,k=new Array;e.forEach((g=>{g.isDesired!==p&&m.push(g.trackSid),g.isEnabled||k.push(g.trackSid)})),this.client.sendSyncState(new ts({answer:this.pcManager.mode==="publisher-only"?d?$t({sdp:d.sdp,type:d.type}):void 0:h?$t({sdp:h.sdp,type:h.type}):void 0,offer:this.pcManager.mode==="publisher-only"?c?$t({sdp:c.sdp,type:c.type}):void 0:l?$t({sdp:l.sdp,type:l.type}):void 0,subscription:new Bi({trackSids:m,subscribe:!p,participantTracks:[]}),publishTracks:ip(t),dataChannels:this.dataChannelsInfo(),trackSidsDisabled:k,datachannelReceiveStates:this.reliableReceivedState.map(((g,v)=>new Yo({publisherSid:v,lastSeq:g}))),publishDataTracks:n.map((g=>new Qr({info:or.toProtobuf(g)})))}))}failNext(){this.shouldFailNext=!0}failNextV1Path(){this.shouldFailOnV1Path=!0}dataChannelsInfo(){let e=[],t=(n,r)=>{n?.id!==void 0&&n.id!==null&&e.push(new Xo({label:n.label,id:n.id,target:r}))};return t(this.dataChannelForKind(H.LOSSY),Ze.PUBLISHER),t(this.dataChannelForKind(H.RELIABLE),Ze.PUBLISHER),t(this.dataChannelForKind(H.LOSSY,!0),Ze.SUBSCRIBER),t(this.dataChannelForKind(H.RELIABLE,!0),Ze.SUBSCRIBER),e}clearReconnectTimeout(){this.reconnectTimeout&&Q.clearTimeout(this.reconnectTimeout)}clearPendingReconnect(){this.clearReconnectTimeout(),this.reconnectAttempts=0}registerOnLineListener(){Fe()&&(window.addEventListener("online",this.handleBrowserOnLine),window.addEventListener("offline",this.handleBrowserOffline))}deregisterOnLineListener(){Fe()&&(window.removeEventListener("online",this.handleBrowserOnLine),window.removeEventListener("offline",this.handleBrowserOffline))}getTrackIdForReceiver(e){var t;let n=(t=this.pcManager)===null||t===void 0?void 0:t.getMidForReceiver(e);if(n){let r=Object.entries(this.midToTrackId).find((s=>D(s,1)[0]===n));if(r)return r[1]}}}function ll(i,e){let t=i.participantIdentity?i.participantIdentity:e.participantIdentity;i.participantIdentity=t,e.participantIdentity=t;let n=i.destinationIdentities.length!==0?i.destinationIdentities:e.destinationIdentities;i.destinationIdentities=n,e.destinationIdentities=n}let lr=he(u.LoggerNames.Region),la=5e3;class z{static fetchRegionSettings(e,t,n){return f(this,void 0,void 0,(function*(){let r=yield z.fetchLock.lock();try{let s=yield fetch("".concat((function(a){return"".concat(a.protocol.replace("ws","http"),"//").concat(a.host,"/settings")})(e),"/regions"),{headers:{authorization:"Bearer ".concat(t)},signal:n});if(s.ok){let a=(function(c){var d;let l=c.get("Cache-Control");if(l){let h=(d=l.match(/(?:^|[,\s])max-age=(\d+)/))===null||d===void 0?void 0:d[1];if(h)return parseInt(h,10)}})(s.headers),o=a?1e3*a:la;return{regionSettings:yield s.json(),updatedAtInMs:Date.now(),maxAgeInMs:o}}throw s.status===401?_.notAllowed("Could not fetch region settings: ".concat(s.statusText),s.status):_.internal("Could not fetch region settings: ".concat(s.statusText))}catch(s){throw s instanceof _?s:n?.aborted?_.cancelled("Region fetching was aborted"):_.serverUnreachable("Could not fetch region settings, ".concat(s instanceof Error?"".concat(s.name,": ").concat(s.message):s))}finally{r()}}))}static scheduleRefetch(e,t,n){return f(this,void 0,void 0,(function*(){let r=z.settingsTimeouts.get(e.hostname);clearTimeout(r),z.settingsTimeouts.set(e.hostname,setTimeout((()=>f(this,void 0,void 0,(function*(){try{let s=yield z.fetchRegionSettings(e,t);z.updateCachedRegionSettings(e,t,s)}catch(s){if(s instanceof _&&s.reason===u.ConnectionErrorReason.NotAllowed)return void lr.debug("token is not valid, cancelling auto region refresh");lr.debug("auto refetching of region settings failed",{error:s}),z.scheduleRefetch(e,t,n)}}))),n))}))}static updateCachedRegionSettings(e,t,n){z.cache.set(e.hostname,n),z.scheduleRefetch(e,t,n.maxAgeInMs)}static stopRefetch(e){let t=z.settingsTimeouts.get(e);t&&(clearTimeout(t),z.settingsTimeouts.delete(e))}static scheduleCleanup(e){let t=z.connectionTrackers.get(e);t&&(t.cleanupTimeout&&clearTimeout(t.cleanupTimeout),t.cleanupTimeout=setTimeout((()=>{let n=z.connectionTrackers.get(e);n&&n.connectionCount===0&&(lr.debug("stopping region refetch after disconnect delay",{hostname:e}),z.stopRefetch(e)),n&&(n.cleanupTimeout=void 0)}),3e4))}static cancelCleanup(e){let t=z.connectionTrackers.get(e);t?.cleanupTimeout&&(clearTimeout(t.cleanupTimeout),t.cleanupTimeout=void 0)}notifyConnected(){let e=this.serverUrl.hostname,t=z.connectionTrackers.get(e);t||(t={connectionCount:0},z.connectionTrackers.set(e,t)),t.connectionCount++,z.cancelCleanup(e)}notifyDisconnected(){let e=this.serverUrl.hostname,t=z.connectionTrackers.get(e);t&&(t.connectionCount=Math.max(0,t.connectionCount-1),t.connectionCount===0&&z.scheduleCleanup(e))}constructor(e,t){this.attemptedRegions=[],this.serverUrl=new URL(e),this.token=t}updateToken(e){var t;this.token=e;let n=this.getServerUrl(),r=z.cache.get(n.hostname);z.scheduleRefetch(this.serverUrl,this.token,(t=r?.maxAgeInMs)!==null&&t!==void 0?t:la)}isCloud(){return bn(this.serverUrl)}getServerUrl(){return this.serverUrl}fetchRegionSettings(e){return f(this,void 0,void 0,(function*(){return z.fetchRegionSettings(this.serverUrl,this.token,e)}))}getNextBestRegionUrl(e){return f(this,void 0,void 0,(function*(){if(!this.isCloud())throw Error("region availability is only supported for LiveKit Cloud domains");let t=z.cache.get(this.serverUrl.hostname);(!t||Date.now()-t.updatedAtInMs>t.maxAgeInMs)&&(t=yield this.fetchRegionSettings(e),z.updateCachedRegionSettings(this.serverUrl,this.token,t));let n=t.regionSettings.regions.filter((r=>!this.attemptedRegions.find((s=>s.url===r.url))));if(n.length>0){let r=n[0];return this.attemptedRegions.push(r),lr.info("switching to region: ".concat(r.region),{region:r.region}),r.url}return null}))}resetAttempts(){this.attemptedRegions=[]}setServerReportedRegions(e){z.updateCachedRegionSettings(this.serverUrl,this.token,e)}}function ua(){return new CompressionStream("deflate-raw")}function ul(){return new DecompressionStream("deflate-raw")}function hl(i,e){return f(this,void 0,void 0,(function*(){let t=new DecompressionStream("deflate-raw"),n=t.writable.getWriter();return n.write(i).catch((()=>{})),n.close().catch((()=>{})),pl(t.readable,e)}))}function pl(i,e){return f(this,void 0,void 0,(function*(){let t=i.getReader(),n=[],r=0;for(;;){let o=yield t.read(),c=o.done,d=o.value;if(c)break;if(n.push(d),r+=d.byteLength,typeof e=="number"&&r>e)throw yield t.cancel(),new pe("Decompressed payload exceeds the maximum payload size of ".concat(e," bytes"),u.DataStreamErrorReason.PayloadTooLarge)}let s=new Uint8Array(r),a=0;for(let o of n)s.set(o,a),a+=o.byteLength;return s}))}z.cache=new Map,z.settingsTimeouts=new Map,z.connectionTrackers=new Map,z.fetchLock=new U;let Zt=15e3;class ml{get info(){return this._info}validateBytesReceived(){let e=arguments.length>0&&arguments[0]!==void 0&&arguments[0];if(typeof this.totalByteSize=="number"&&this.totalByteSize!==0){if(e&&this.bytesReceived<this.totalByteSize)throw new pe("Not enough chunk(s) received - expected ".concat(this.totalByteSize," bytes of data total, only received ").concat(this.bytesReceived," bytes"),u.DataStreamErrorReason.Incomplete);if(this.bytesReceived>this.totalByteSize)throw new pe("Extra chunk(s) received - expected ".concat(this.totalByteSize," bytes of data total, received ").concat(this.bytesReceived," bytes"),u.DataStreamErrorReason.LengthExceeded)}}constructor(e,t,n){this.reader=t,this.totalByteSize=n,this._info=e,this.bytesReceived=0}handleChunkReceived(e){var t;this.bytesReceived+=e.content.byteLength,this.validateBytesReceived();let n=this.totalByteSize?this.bytesReceived/this.totalByteSize:void 0;(t=this.onProgress)===null||t===void 0||t.call(this,n)}}class gl extends ml{[Symbol.asyncIterator](){let e=this.reader.getReader();e.closed.catch((()=>{}));let t=()=>{e.releaseLock(),this.signal=void 0};return{next:()=>f(this,void 0,void 0,(function*(){var n;try{let r=this.signal;if(r?.aborted)throw r.reason;let s=yield new Promise(((a,o)=>{if(r){let c=()=>o(r.reason);r.addEventListener("abort",c,{once:!0}),e.read().then(a,o).finally((()=>{r.removeEventListener("abort",c)}))}else e.read().then(a,o)}));return s.done?(this.validateBytesReceived(!0),typeof this.totalByteSize=="number"&&((n=this.onProgress)===null||n===void 0||n.call(this,1)),{done:!0,value:void 0}):(this.handleChunkReceived(s.value),{done:!1,value:s.value.content})}catch(r){throw t(),r}})),return(){return f(this,void 0,void 0,(function*(){return t(),{done:!0,value:void 0}}))}}}withAbortSignal(e){return this.signal=e,this}readAll(){return f(this,arguments,void 0,(function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return(function*(){var n,r,s,a;let o=new Set,c=t.signal?e.withAbortSignal(t.signal):e;try{for(var d,l=!0,h=Ge(c);!(n=(d=yield h.next()).done);l=!0){a=d.value,l=!1;let p=a;o.add(p)}}catch(p){r={error:p}}finally{try{l||n||!(s=h.return)||(yield s.call(h))}finally{if(r)throw r.error}}return Array.from(o)})()}))}}class fl extends ml{[Symbol.asyncIterator](){let e=this.reader.getReader();e.closed.catch((()=>{}));let t=new TextDecoder("utf-8"),n=this.signal,r=()=>{e.releaseLock(),this.signal=void 0};return{next:()=>f(this,void 0,void 0,(function*(){var s;try{if(n?.aborted)throw n.reason;let a=yield new Promise(((o,c)=>{if(n){let d=()=>c(n.reason);n.addEventListener("abort",d,{once:!0}),e.read().then(o,c).finally((()=>{n.removeEventListener("abort",d)}))}else e.read().then(o,c)}));if(a.done)return this.validateBytesReceived(!0),typeof this.totalByteSize=="number"&&((s=this.onProgress)===null||s===void 0||s.call(this,1)),{done:!0,value:void 0};{let o;this.handleChunkReceived(a.value);try{o=t.decode(a.value.content)}catch(c){throw new pe("Cannot decode datastream chunk ".concat(a.value.chunkIndex," as text: ").concat(c),u.DataStreamErrorReason.DecodeFailed)}return{done:!1,value:o}}}catch(a){throw r(),a}})),return(){return f(this,void 0,void 0,(function*(){return r(),{done:!0,value:void 0}}))}}}withAbortSignal(e){return this.signal=e,this}readAll(){return f(this,arguments,void 0,(function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return(function*(){var n,r,s,a;let o="",c=t.signal?e.withAbortSignal(t.signal):e;try{for(var d,l=!0,h=Ge(c);!(n=(d=yield h.next()).done);l=!0)a=d.value,l=!1,o+=a}catch(p){r={error:p}}finally{try{l||n||!(s=h.return)||(yield s.call(h))}finally{if(r)throw r.error}}return o})()}))}}class Hp{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:5e9;this.log=V,this.byteStreamControllers=new Map,this.textStreamControllers=new Map,this.byteStreamHandlers=new Map,this.textStreamHandlers=new Map,this.isConnected=!1,this.bufferedPackets=[],this.maxPayloadByteLength=e}setConnected(e){this.isConnected=e,e&&this.flushBufferedPackets()}flushBufferedPackets(){let e=this.bufferedPackets;this.bufferedPackets=[];for(let t of e){let n=t.packet,r=t.encryptionType;this.handleDataStreamPacket(n,r)}}registerTextStreamHandler(e,t){if(this.textStreamHandlers.has(e))throw new pe('A text stream handler for topic "'.concat(e,'" has already been set.'),u.DataStreamErrorReason.HandlerAlreadyRegistered);this.textStreamHandlers.set(e,t)}unregisterTextStreamHandler(e){this.textStreamHandlers.delete(e)}registerByteStreamHandler(e,t){if(this.byteStreamHandlers.has(e))throw new pe('A byte stream handler for topic "'.concat(e,'" has already been set.'),u.DataStreamErrorReason.HandlerAlreadyRegistered);this.byteStreamHandlers.set(e,t)}unregisterByteStreamHandler(e){this.byteStreamHandlers.delete(e)}clearControllers(){this.byteStreamControllers.clear(),this.textStreamControllers.clear(),this.bufferedPackets=[]}validateParticipantHasNoActiveDataStreams(e){let t=Array.from(this.textStreamControllers.entries()).filter((a=>a[1].sendingParticipantIdentity===e)),n=Array.from(this.byteStreamControllers.entries()).filter((a=>a[1].sendingParticipantIdentity===e));if(t.length>0||n.length>0){let a=new pe("Participant ".concat(e," unexpectedly disconnected in the middle of sending data"),u.DataStreamErrorReason.AbnormalEnd);for(let o of n){var r=D(o,2);let c=r[0];r[1].controller.error(a),this.byteStreamControllers.delete(c)}for(let o of t){var s=D(o,2);let c=s[0];s[1].controller.error(a),this.textStreamControllers.delete(c)}}}handleDataStreamPacket(e,t){if(this.isConnected)switch(e.value.case){case"streamHeader":return this.handleStreamHeader(e.value.value,e.participantIdentity,t);case"streamChunk":return this.handleStreamChunk(e.value.value,t);case"streamTrailer":return this.handleStreamTrailer(e.value.value,t);default:throw new Error('DataPacket of value "'.concat(e.value.case,'" is not data stream related!'))}else this.bufferedPackets.push({packet:e,encryptionType:t})}handleStreamHeader(e,t,n){var r;switch(e.contentHeader.case){case"byteHeader":{let s=this.byteStreamHandlers.get(e.topic);if(!s)return void this.log.debug("ignoring incoming byte stream due to no handler for topic",e.topic);let a,o={id:e.streamId,name:(r=e.contentHeader.value.name)!==null&&r!==void 0?r:"unknown",mimeType:e.mimeType,size:e.totalLength?Number(e.totalLength):void 0,topic:e.topic,timestamp:Sn(e.timestamp),attributes:e.attributes,encryptionType:n},c;switch(e.compression){case Ee.DEFLATE_RAW:if(!Ut())return void V.warn("Data stream ".concat(e.streamId," received with deflate-raw compression, but this browser does not have support for DecompressionStream. Dropping..."));c=!0;break;case Ee.NONE:c=!1;break;default:return void V.warn("Data stream ".concat(e.streamId," received with unknown compression type ").concat(e.compression,", dropping..."))}let d=e.inlineContent;if(d!==void 0)return void s(new gl(o,vl(e.streamId,c?hl(d,this.maxPayloadByteLength):d),Sn(e.totalLength)),{identity:t});let l=new ReadableStream({start:h=>{if(a=h,this.byteStreamControllers.has(e.streamId))throw new pe("A data stream read is already in progress for a stream with id ".concat(e.streamId,"."),u.DataStreamErrorReason.AlreadyOpened);this.byteStreamControllers.set(e.streamId,{info:o,controller:a,startTime:Date.now(),sendingParticipantIdentity:t})}});return void s(new gl(o,c?(function(h,p,m){return h.pipeThrough(ur(p)).pipeThrough(kl()).pipeThrough(ul()).pipeThrough(yl(p,m)).pipeThrough((function(k){let g=0;return new TransformStream({transform:(v,b)=>{v.byteLength>0&&(b.enqueue(new Et({streamId:k,chunkIndex:nt(g),content:v})),g+=1)}})})(p))})(l,e.streamId,this.maxPayloadByteLength):l.pipeThrough(ur(e.streamId)),Sn(e.totalLength)),{identity:t})}case"textHeader":{let s=this.textStreamHandlers.get(e.topic);if(!s)return void this.log.debug("ignoring incoming text stream due to no handler for topic",e.topic);let a,o={id:e.streamId,mimeType:e.mimeType,size:e.totalLength?Number(e.totalLength):void 0,topic:e.topic,timestamp:Number(e.timestamp),attributes:e.attributes,encryptionType:n,attachedStreamIds:e.contentHeader.value.attachedStreamIds},c;switch(e.compression){case Ee.DEFLATE_RAW:if(!Ut())return void V.warn("Data stream ".concat(e.streamId," received with deflate-raw compression, but this browser does not have support for DecompressionStream. Dropping..."));c=!0;break;case Ee.NONE:c=!1;break;default:return void V.warn("Data stream ".concat(e.streamId," received with unknown compression type ").concat(e.compression,", dropping..."))}let d=e.inlineContent;if(d!==void 0){let h=c?hl(d,this.maxPayloadByteLength):d;return void s(new fl(o,vl(e.streamId,h),Sn(e.totalLength)),{identity:t})}let l=new ReadableStream({start:h=>{if(a=h,this.textStreamControllers.has(e.streamId))throw new pe("A data stream read is already in progress for a stream with id ".concat(e.streamId,"."),u.DataStreamErrorReason.AlreadyOpened);this.textStreamControllers.set(e.streamId,{info:o,controller:a,startTime:Date.now(),sendingParticipantIdentity:t})}});return void s(new fl(o,c?(function(h,p,m){return h.pipeThrough(ur(p)).pipeThrough(kl()).pipeThrough(ul()).pipeThrough(yl(p,m)).pipeThrough((function(k){let g=new TextDecoder("utf-8"),v=new TextEncoder,b=0,T=E=>{try{return E?g.decode(E,{stream:!0}):g.decode()}catch(S){throw new pe("Cannot decode compressed data stream ".concat(k," as text: ").concat(S),u.DataStreamErrorReason.DecodeFailed)}};return new TransformStream({transform:(E,S)=>{let C=T(E);C.length>0&&(S.enqueue(new Et({streamId:k,chunkIndex:nt(b),content:v.encode(C)})),b+=1)},flush:E=>{let S=T();S.length>0&&(E.enqueue(new Et({streamId:k,chunkIndex:nt(b),content:v.encode(S)})),b+=1)}})})(p))})(l,e.streamId,this.maxPayloadByteLength):l.pipeThrough(ur(e.streamId)),Sn(e.totalLength)),{identity:t})}}}handleStreamChunk(e,t){let n=this.byteStreamControllers.get(e.streamId);n&&(n.info.encryptionType!==t?(n.controller.error(new pe("Encryption type mismatch for stream ".concat(e.streamId,". Expected ").concat(t,", got ").concat(n.info.encryptionType),u.DataStreamErrorReason.EncryptionTypeMismatch)),this.byteStreamControllers.delete(e.streamId)):n.controller.enqueue(e));let r=this.textStreamControllers.get(e.streamId);r&&(r.info.encryptionType!==t?(r.controller.error(new pe("Encryption type mismatch for stream ".concat(e.streamId,". Expected ").concat(t,", got ").concat(r.info.encryptionType),u.DataStreamErrorReason.EncryptionTypeMismatch)),this.textStreamControllers.delete(e.streamId)):r.controller.enqueue(e))}handleStreamTrailer(e,t){let n=this.textStreamControllers.get(e.streamId);n&&(n.info.encryptionType!==t?n.controller.error(new pe("Encryption type mismatch for stream ".concat(e.streamId,". Expected ").concat(t,", got ").concat(n.info.encryptionType),u.DataStreamErrorReason.EncryptionTypeMismatch)):(n.info.attributes=Object.assign(Object.assign({},n.info.attributes),e.attributes),e.reason?n.controller.error(new pe("Data stream ".concat(e.streamId," closed abnormally: ").concat(e.reason),u.DataStreamErrorReason.AbnormalEnd)):n.controller.close()),this.textStreamControllers.delete(e.streamId));let r=this.byteStreamControllers.get(e.streamId);r&&(r.info.encryptionType!==t?r.controller.error(new pe("Encryption type mismatch for stream ".concat(e.streamId,". Expected ").concat(t,", got ").concat(r.info.encryptionType),u.DataStreamErrorReason.EncryptionTypeMismatch)):(r.info.attributes=Object.assign(Object.assign({},r.info.attributes),e.attributes),e.reason?r.controller.error(new pe("Data stream ".concat(e.streamId," closed abnormally: ").concat(e.reason),u.DataStreamErrorReason.AbnormalEnd)):r.controller.close()),this.byteStreamControllers.delete(e.streamId))}}function vl(i,e){return new ReadableStream({start:t=>f(this,void 0,void 0,(function*(){let n=yield e;t.enqueue(new Et({streamId:i,chunkIndex:BigInt(0),content:n})),t.close()}))})}function ur(i){let e=-1;return new TransformStream({transform:(t,n)=>{let r=Sn(t.chunkIndex);if(r<=e)V.warn("ignoring duplicate chunk ".concat(r," ").concat(t.version>0?"(version ".concat(t.version,")"):""," for data stream ").concat(i," (last processed: ").concat(e,")"));else{if(r>e+1)throw new pe("Missing chunk(s) ".concat(e+1,"..").concat(r-1," for data stream ").concat(i," - cannot reassemble payload"),u.DataStreamErrorReason.Incomplete);e=r,t.content.length!==0&&n.enqueue(t)}}})}function kl(){return new TransformStream({transform:(i,e)=>{e.enqueue(i.content)}})}function yl(i,e){let t=0;return new TransformStream({transform:(n,r)=>{if(t+=n.byteLength,t>e)throw new pe("Data stream ".concat(i," exceeds the maximum payload size of ").concat(e," bytes"),u.DataStreamErrorReason.PayloadTooLarge);r.enqueue(n)}})}class bl{constructor(e,t,n){this.writableStream=e,this.defaultWriter=e.getWriter(),this.onClose=n,this.info=t}write(e){return this.defaultWriter.write(e)}close(){return f(this,void 0,void 0,(function*(){var e;yield this.defaultWriter.close(),this.defaultWriter.releaseLock(),(e=this.onClose)===null||e===void 0||e.call(this)}))}}class Kp extends bl{}class zp extends bl{}function ha(i,e,t){var n;return new _i({streamId:i.id,mimeType:i.mimeType,topic:i.topic,timestamp:nt(i.timestamp),totalLength:nt(i.size),attributes:i.attributes,compression:(n=t?.compression)!==null&&n!==void 0?n:Ee.NONE,inlineContent:t?.inlineContent,contentHeader:{case:"textHeader",value:new No({version:e?.version,attachedStreamIds:i.attachedStreamIds,replyToStreamId:e?.replyToStreamId,operationType:e?.type==="update"?Vr.UPDATE:Vr.CREATE})}})}function hr(i,e){var t;return new _i({streamId:i.id,mimeType:i.mimeType,topic:i.topic,timestamp:nt(i.timestamp),totalLength:nt(i.size),attributes:i.attributes,compression:(t=e?.compression)!==null&&t!==void 0?t:Ee.NONE,inlineContent:e?.inlineContent,contentHeader:{case:"byteHeader",value:new xo({name:i.name})}})}function en(i,e){return new Re({destinationIdentities:e,value:{case:"streamHeader",value:i}})}let Gp=new TextEncoder;class Jp{constructor(e,t,n,r,s){this.engine=e,this.log=t,this.getRemoteParticipantClientProtocol=n,this.getRemoteParticipantCapabilities=r,this.getAllRemoteParticipantIdentities=s}setupEngine(e){this.engine=e}sendText(e,t){return f(this,void 0,void 0,(function*(){var n,r,s,a,o;let c=crypto.randomUUID(),d=Gp.encode(e),l=d.byteLength,h=(n=t?.compress)===null||n===void 0||n,p={id:c,mimeType:"text/plain",timestamp:Date.now(),topic:(r=t?.topic)!==null&&r!==void 0?r:"",size:l,attributes:t?.attributes,encryptionType:!((s=this.engine.e2eeManager)===null||s===void 0)&&s.isDataChannelEncryptionEnabled?G.GCM:G.NONE},m=h&&Ut()&&this.allRecipientsSupportV2(t?.destinationIdentities)&&this.allRecipientsSupportCompression(t?.destinationIdentities)?pr.fromStream(er(d).pipeThrough(ua())):null;if((!t?.attachments||t.attachments.length===0)&&this.allRecipientsSupportV2(t?.destinationIdentities)){let T=d,E=Ee.NONE;if(m){let C=yield m.collect();C.byteLength<d.byteLength&&(T=C,E=Ee.DEFLATE_RAW)}let S=en(ha(p,void 0,{compression:E,inlineContent:T}),t?.destinationIdentities);if(S.toBinary().byteLength<=Zt)return yield this.engine.sendDataPacket(S,H.RELIABLE),(a=t?.onProgress)===null||a===void 0||a.call(t,1),p}let k=(o=t?.attachments)===null||o===void 0?void 0:o.map((()=>crypto.randomUUID())),g=k?k.length+1:1,v=new Array(g).fill(0),b=(T,E)=>{var S;v[E]=T,(S=t?.onProgress)===null||S===void 0||S.call(t,v.reduce(((C,I)=>C+I),0)/g)};if(m){p.attachedStreamIds=k;let T=en(ha(p,void 0,{compression:Ee.DEFLATE_RAW}),t?.destinationIdentities);yield this.sendChunkedByteStream(T,c,t?.destinationIdentities,m.stream().pipeThrough(pa(d.length,(E=>b(E,0))))),d.length===0&&b(1,0)}else{let T=yield this.streamText({streamId:c,totalSize:l,destinationIdentities:t?.destinationIdentities,topic:t?.topic,attachedStreamIds:k,attributes:t?.attributes});yield T.write(e),b(1,0),yield T.close(),p=T.info}return t?.attachments&&k&&(yield Promise.all(t.attachments.map(((T,E)=>f(this,void 0,void 0,(function*(){return this._sendFile(k[E],T,{topic:t.topic,mimeType:T.type,destinationIdentities:t.destinationIdentities,compress:t.compress,onProgress:S=>{b(S,E+1)}})})))))),p}))}sendBytes(e,t){return f(this,void 0,void 0,(function*(){var n,r,s,a,o,c,d;let l=crypto.randomUUID(),h=t?.destinationIdentities,p=(n=t?.compress)===null||n===void 0||n,m={id:l,name:(r=t?.name)!==null&&r!==void 0?r:"unknown",mimeType:(s=t?.mimeType)!==null&&s!==void 0?s:"application/octet-stream",timestamp:Date.now(),topic:(a=t?.topic)!==null&&a!==void 0?a:"",size:e.byteLength,attributes:t?.attributes,encryptionType:!((o=this.engine.e2eeManager)===null||o===void 0)&&o.isDataChannelEncryptionEnabled?G.GCM:G.NONE},k=pa(e.length,t?.onProgress),g=p&&Ut()&&this.allRecipientsSupportV2(h)&&this.allRecipientsSupportCompression(h)?pr.fromStream(er(e).pipeThrough(k).pipeThrough(ua())):null;if(this.allRecipientsSupportV2(h)){let T=e,E=Ee.NONE;if(g){let C=yield g.collect();C.byteLength<e.byteLength&&(T=C,E=Ee.DEFLATE_RAW)}let S=en(hr(m,{compression:E,inlineContent:T}),h);if(S.toBinary().byteLength<=Zt)return yield this.engine.sendDataPacket(S,H.RELIABLE),(c=t?.onProgress)===null||c===void 0||c.call(t,1),m}let v=en(hr(m,{compression:g?Ee.DEFLATE_RAW:Ee.NONE}),h),b=g?g.stream():er(e).pipeThrough(k);return yield this.sendChunkedByteStream(v,l,h,b),e.length===0&&((d=t?.onProgress)===null||d===void 0||d.call(t,1)),m}))}allRecipientsSupportV2(e){return(e&&e.length>0?e:this.getAllRemoteParticipantIdentities()).every((t=>this.getRemoteParticipantClientProtocol(t)>=2))}allRecipientsSupportCompression(e){return(e&&e.length>0?e:this.getAllRemoteParticipantIdentities()).every((t=>this.getRemoteParticipantCapabilities(t).includes(jn.CAP_COMPRESSION_DEFLATE_RAW)))}sendChunkedByteStream(e,t,n,r){return f(this,void 0,void 0,(function*(){var s,a,o,c;let d=this.engine;yield ma(d,e);let l=0;try{for(var h,p=!0,m=Ge((function(k,g){return sc(this,arguments,(function*(){let v=k.getReader(),b=new Uint8Array(0);try{for(;;){let T=yield Ct(v.read()),E=T.done,S=T.value;if(E)break;if(S.byteLength===0)continue;let C=new Uint8Array(b.byteLength+S.byteLength);for(C.set(b),C.set(S,b.byteLength),b=C;b.byteLength>=g;)yield yield Ct(b.slice(0,g)),b=b.slice(g)}b.byteLength>0&&(yield yield Ct(b))}finally{v.releaseLock()}}))})(r,Zt));!(s=(h=yield m.next()).done);p=!0){c=h.value,p=!1;let k=new Re({destinationIdentities:n,value:{case:"streamChunk",value:new Et({content:c,streamId:t,chunkIndex:nt(l)})}});yield d.sendDataPacket(k,H.RELIABLE),l+=1}}catch(k){a={error:k}}finally{try{p||s||!(o=m.return)||(yield o.call(m))}finally{if(a)throw a.error}}yield ga(t,n,d)}))}streamText(e){return f(this,void 0,void 0,(function*(){var t,n,r;let s=(t=e?.streamId)!==null&&t!==void 0?t:crypto.randomUUID(),a=e?.destinationIdentities,o={id:s,mimeType:"text/plain",timestamp:Date.now(),topic:(n=e?.topic)!==null&&n!==void 0?n:"",size:e?.totalSize,attributes:e?.attributes,encryptionType:!((r=this.engine.e2eeManager)===null||r===void 0)&&r.isDataChannelEncryptionEnabled?G.GCM:G.NONE,attachedStreamIds:e?.attachedStreamIds},c=en(ha(o,e),a);yield ma(this.engine,c);let d=0,l=this.engine,h=new WritableStream({write(k){return f(this,void 0,void 0,(function*(){for(let g of(function(v,b){let T=[],E=new TextEncoder().encode(v);for(;E.length>b;){let S=b;for(;S>0;){let C=E[S];if(C!==void 0&&(192&C)!=128)break;S--}T.push(E.slice(0,S)),E=E.slice(S)}return E.length>0&&T.push(E),T})(k,Zt)){let v=new Et({content:g,streamId:s,chunkIndex:nt(d)}),b=new Re({destinationIdentities:a,value:{case:"streamChunk",value:v}});yield l.sendDataPacket(b,H.RELIABLE),d+=1}}))},close(){return f(this,void 0,void 0,(function*(){yield ga(s,a,l)}))},abort(k){console.log("Sink error:",k)}}),p=()=>f(this,void 0,void 0,(function*(){yield m.close()}));l.once(u.EngineEvent.Closing,p);let m=new Kp(h,o,(()=>this.engine.off(u.EngineEvent.Closing,p)));return m}))}sendFile(e,t){return f(this,void 0,void 0,(function*(){let n=crypto.randomUUID();return yield this._sendFile(n,e,t),{id:n}}))}_sendFile(e,t,n){return f(this,void 0,void 0,(function*(){var r,s,a,o,c;let d=n?.destinationIdentities,l=((r=n?.compress)===null||r===void 0||r)&&Ut()&&this.allRecipientsSupportV2(d)&&this.allRecipientsSupportCompression(d),h={id:e,name:t.name,mimeType:(s=n?.mimeType)!==null&&s!==void 0?s:t.type,topic:(a=n?.topic)!==null&&a!==void 0?a:"",timestamp:Date.now(),size:t.size,encryptionType:!((o=this.engine.e2eeManager)===null||o===void 0)&&o.isDataChannelEncryptionEnabled?G.GCM:G.NONE},p=en(hr(h,{compression:l?Ee.DEFLATE_RAW:Ee.NONE}),d),m=t.stream().pipeThrough(pa(t.size,n?.onProgress)),k=l?m.pipeThrough(ua()):m;return yield this.sendChunkedByteStream(p,e,d,k),t.size===0&&((c=n?.onProgress)===null||c===void 0||c.call(n,1)),h}))}streamBytes(e){return f(this,void 0,void 0,(function*(){var t,n,r,s,a;let o=(t=e?.streamId)!==null&&t!==void 0?t:crypto.randomUUID(),c=e?.destinationIdentities,d={id:o,mimeType:(n=e?.mimeType)!==null&&n!==void 0?n:"application/octet-stream",topic:(r=e?.topic)!==null&&r!==void 0?r:"",timestamp:Date.now(),attributes:e?.attributes,size:e?.totalSize,name:(s=e?.name)!==null&&s!==void 0?s:"unknown",encryptionType:!((a=this.engine.e2eeManager)===null||a===void 0)&&a.isDataChannelEncryptionEnabled?G.GCM:G.NONE},l=en(hr(d),c);yield ma(this.engine,l);let h=0,p=new U,m=this.engine,k=this.log,g=new WritableStream({write(v){return f(this,void 0,void 0,(function*(){let b=yield p.lock(),T=0;try{for(;T<v.byteLength;){let E=v.slice(T,T+Zt),S=new Re({destinationIdentities:c,value:{case:"streamChunk",value:new Et({content:E,streamId:o,chunkIndex:nt(h)})}});yield m.sendDataPacket(S,H.RELIABLE),h+=1,T+=E.byteLength}}finally{b()}}))},close(){return f(this,void 0,void 0,(function*(){yield ga(o,c,m)}))},abort(v){k.error("Sink error:",v)}});return new zp(g,d)}))}}class pr{constructor(e){this.state=e}static fromStream(e){return new pr({type:"stream",stream:e})}collect(){return f(this,void 0,void 0,(function*(){switch(this.state.type){case"stream":let e=yield pl(this.state.stream);return this.state={type:"collected",bytes:e},e;case"collected":return this.state.bytes}}))}stream(){switch(this.state.type){case"stream":return this.state.stream;case"collected":return er(this.state.bytes)}}}function pa(i,e){let t=0;return new TransformStream({transform(n,r){t+=n.byteLength,e&&typeof i=="number"&&i>0&&e(Math.min(t/i,1)),r.enqueue(n)}})}function ma(i,e){return f(this,void 0,void 0,(function*(){if(e.toBinary().byteLength>Zt)throw new pe("data stream header exceeds the ".concat(Zt,"-byte limit; reduce attribute size"),u.DataStreamErrorReason.HeaderTooLarge);yield i.sendDataPacket(e,H.RELIABLE)}))}function ga(i,e,t){return f(this,void 0,void 0,(function*(){let n=new Re({destinationIdentities:e,value:{case:"streamTrailer",value:new Wr({streamId:i})}});yield t.sendDataPacket(n,H.RELIABLE)}))}function Tl(i){if(i.length===0)return new AbortController().signal;if(i.length===1)return i[0];for(let n of i)if(n.aborted)return n;let e=new AbortController,t=Array(i.length);return i.forEach(((n,r)=>{let s=()=>{e.abort(n.reason),(()=>{for(let a of t)a()})()};n.addEventListener("abort",s),t[r]=()=>n.removeEventListener("abort",s)})),e.signal}function Sl(i){let e=new AbortController;return setTimeout((()=>{e.abort(new DOMException("signal timed out after ".concat(i," ms"),"TimeoutError"))}),i),e.signal}var It,ai,Dn;(function(i){i[i.TooShort=0]="TooShort",i[i.HeaderOverrun=1]="HeaderOverrun",i[i.MissingExtWords=2]="MissingExtWords",i[i.UnsupportedVersion=3]="UnsupportedVersion",i[i.InvalidHandle=4]="InvalidHandle",i[i.MalformedExt=5]="MalformedExt"})(It||(It={}));class De extends We{constructor(e,t,n){super(19,e,n),this.name="DataTrackDeserializeError",this.reason=t,this.reasonName=It[t]}static tooShort(){return new De("Too short to contain a valid header",It.TooShort)}static headerOverrun(){return new De("Header exceeds total packet length",It.HeaderOverrun)}static missingExtWords(){return new De("Extension word indicator is missing",It.MissingExtWords)}static unsupportedVersion(e){return new De("Unsupported version ".concat(e),It.UnsupportedVersion)}static invalidHandle(e){return new De("invalid track handle: ".concat(e.message),It.InvalidHandle,{cause:e})}static malformedExt(e){return new De("Extension with tag ".concat(e," is malformed"),It.MalformedExt)}}(function(i){i[i.TooSmallForHeader=0]="TooSmallForHeader",i[i.TooSmallForPayload=1]="TooSmallForPayload"})(ai||(ai={}));class oi extends We{constructor(e,t,n){super(19,e,n),this.name="DataTrackSerializeError",this.reason=t,this.reasonName=ai[t]}static tooSmallForHeader(){return new oi("Buffer cannot fit header",ai.TooSmallForHeader)}static tooSmallForPayload(){return new oi("Buffer cannot fit payload",ai.TooSmallForPayload)}}class mr{toBinary(){let e=this.toBinaryLengthBytes(),t=new ArrayBuffer(e),n=new DataView(t),r=this.toBinaryInto(n);if(e!==r)throw new Error("".concat(this.constructor.name,".toBinary: written bytes (").concat(r," bytes) not equal to allocated array buffer length (").concat(e," bytes)."));return new Uint8Array(t)}}(function(i){i[i.UserTimestamp=2]="UserTimestamp",i[i.E2ee=1]="E2ee"})(Dn||(Dn={}));class El extends mr{}class at extends El{constructor(e){super(),this.timestamp=e}toBinaryLengthBytes(){return 2+at.lengthBytes}toBinaryInto(e){let t=0;e.setUint8(t,at.tag),t+=1,e.setUint8(t,at.lengthBytes),t+=1,e.setBigUint64(t,this.timestamp),t+=8;let n=this.toBinaryLengthBytes();if(t!==n)throw new Error("DataTrackUserTimestampExtension.toBinaryInto: Wrote ".concat(t," bytes but expected length was ").concat(n," bytes"));return t}toJSON(){return{tag:at.tag,lengthBytes:at.lengthBytes,timestamp:this.timestamp}}}at.tag=Dn.UserTimestamp,at.lengthBytes=8;class ot extends El{constructor(e,t){super(),this.keyIndex=e,this.iv=t}toBinaryLengthBytes(){return 2+ot.lengthBytes}toBinaryInto(e){let t=0;e.setUint8(t,ot.tag),t+=1,e.setUint8(t,ot.lengthBytes),t+=1,e.setUint8(t,this.keyIndex),t+=1;for(let r=0;r<this.iv.length;r+=1)e.setUint8(t,this.iv[r]),t+=1;let n=this.toBinaryLengthBytes();if(t!==n)throw new Error("DataTrackE2eeExtension.toBinaryInto: Wrote ".concat(t," bytes but expected length was ").concat(n," bytes"));return t}toJSON(){return{tag:ot.tag,lengthBytes:ot.lengthBytes,keyIndex:this.keyIndex,iv:this.iv}}}ot.tag=Dn.E2ee,ot.lengthBytes=13;class _n extends mr{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};super(),this.userTimestamp=e.userTimestamp,this.e2ee=e.e2ee}toBinaryLengthBytes(){let e=0;return this.userTimestamp&&(e+=this.userTimestamp.toBinaryLengthBytes()),this.e2ee&&(e+=this.e2ee.toBinaryLengthBytes()),e}toBinaryInto(e){let t=0;this.e2ee&&(t+=this.e2ee.toBinaryInto(e)),this.userTimestamp&&(t+=this.userTimestamp.toBinaryInto(new DataView(e.buffer,e.byteOffset+t)));let n=this.toBinaryLengthBytes();if(t!==n)throw new Error("DataTrackExtensions.toBinaryInto: Wrote ".concat(t," bytes but expected length was ").concat(n," bytes"));return t}static fromBinary(e){let t=zs(e),n,r,s=0;for(;t.byteLength-s>=2;){let a=t.getUint8(s);s+=1;let o=t.getUint8(s);if(s+=1,a!==0)switch(a){case Dn.UserTimestamp:if(t.byteLength-s<at.lengthBytes)throw De.malformedExt(a);n=new at(t.getBigUint64(s)),s+=o;break;case Dn.E2ee:if(t.byteLength-s<ot.lengthBytes)throw De.malformedExt(a);let c=t.getUint8(s),d=new Uint8Array(12);for(let l=0;l<d.length;l+=1){let h=s;h+=1,h+=1*l,d[l]=t.getUint8(h)}r=new ot(c,d),s+=o;break;default:if(t.byteLength-s<o)throw De.malformedExt(a);s+=o}}return[new _n({userTimestamp:n,e2ee:r}),t.byteLength]}toJSON(){var e,t,n,r;return{userTimestamp:(t=(e=this.userTimestamp)===null||e===void 0?void 0:e.toJSON())!==null&&t!==void 0?t:null,e2ee:(r=(n=this.e2ee)===null||n===void 0?void 0:n.toJSON())!==null&&r!==void 0?r:null}}}let Cl={from:i=>({payload:i.payload,extensions:new _n({userTimestamp:i.userTimestamp?new at(i.userTimestamp):void 0})}),lossyIntoFrame(i){var e;return{payload:i.payload,userTimestamp:(e=i.extensions.userTimestamp)===null||e===void 0?void 0:e.timestamp}}},wl=Symbol.for("lk.track"),Rl=Symbol.for("lk.data-track");class fa{constructor(e,t,n){this.trackSymbol=wl,this.isLocal=!1,this.typeSymbol=Rl,this.info=e,this.manager=t,this.publisherIdentity=n.publisherIdentity}subscribe(e){try{let t=D(this.manager.openSubscriptionStream(this.info.sid,e?.signal,e?.bufferSize),2),n=t[0];return t[1].catch((()=>{})),n}catch(t){throw t}}setPipelineOptions(e){this.manager.setPipelineOptions(this.info.sid,e)}}class ci extends mr{constructor(e){var t;super(),this.marker=e.marker,this.trackHandle=e.trackHandle,this.sequence=e.sequence,this.frameNumber=e.frameNumber,this.timestamp=e.timestamp,this.extensions=(t=e.extensions)!==null&&t!==void 0?t:new _n}extensionsMetrics(){let e=this.extensions.toBinaryLengthBytes(),t=Math.ceil((2+e)/4);return{lengthBytes:e,lengthWords:t,paddingLengthBytes:4*t-2-e}}toBinaryLengthBytes(){let e=this.extensionsMetrics(),t=e.lengthBytes,n=e.paddingLengthBytes,r=12;return t>0&&(r+=2+t+n),r}toBinaryInto(e){if(e.byteLength<this.toBinaryLengthBytes())throw oi.tooSmallForHeader();let t,n=0;switch(this.marker){case oe.Inter:t=0;break;case oe.Final:t=1;break;case oe.Start:t=2;break;case oe.Single:t=3}n|=t<<3;let r=this.extensionsMetrics(),s=r.lengthBytes,a=r.lengthWords,o=r.paddingLengthBytes;s>0&&(n|=4);let c=0;if(e.setUint8(c,n),c+=1,e.setUint8(c,0),c+=1,e.setUint16(c,this.trackHandle),c+=2,e.setUint16(c,this.sequence.value),c+=2,e.setUint16(c,this.frameNumber.value),c+=2,e.setUint32(c,this.timestamp.asTicks()),c+=4,s>0){let l=a-1;e.setUint16(c,l),c+=2,c+=this.extensions.toBinaryInto(new DataView(e.buffer,e.byteOffset+c));for(let h=0;h<o;h+=1)e.setUint8(c,0),c+=1}let d=this.toBinaryLengthBytes();if(c!==d)throw new Error("DataTrackPacketHeader.toBinaryInto: Wrote ".concat(c," bytes but expected length was ").concat(d," bytes"));return d}static fromBinary(e){let t=zs(e);if(t.byteLength<12)throw De.tooShort();let n=0,r=t.getUint8(n);n+=1;let s=r>>5&7;if(s>0)throw De.unsupportedVersion(s);let a;switch(r>>3&3){case 2:a=oe.Start;break;case 1:a=oe.Final;break;case 3:a=oe.Single;break;default:a=oe.Inter}let o=(r>>2&1)>0,c;n+=1;try{c=pp.fromNumber(t.getUint16(n))}catch(m){throw m instanceof Rn&&(m.isReason(Xt.Reserved)||m.isReason(Xt.TooLarge))?De.invalidHandle(m):m}n+=2;let d=rt.u16(t.getUint16(n));n+=2;let l=rt.u16(t.getUint16(n));n+=2;let h=wn.fromRtpTicks(t.getUint32(n));n+=4;let p=new _n;if(o){if(t.byteLength-n<2)throw De.missingExtWords();let m=t.getUint16(n);n+=2;let k=4*(m+1)-2;if(n+k>t.byteLength)throw De.headerOverrun();let g=new DataView(t.buffer,t.byteOffset+n,k),v=D(_n.fromBinary(g),2);p=v[0],n+=v[1]}return[new ci({marker:a,trackHandle:c,sequence:d,frameNumber:l,timestamp:h,extensions:p}),n]}toJSON(){return{marker:this.marker,trackHandle:this.trackHandle,sequence:this.sequence.value,frameNumber:this.frameNumber.value,timestamp:this.timestamp.asTicks(),extensions:this.extensions.toJSON()}}}var oe;(function(i){i[i.Start=0]="Start",i[i.Inter=1]="Inter",i[i.Final=2]="Final",i[i.Single=3]="Single"})(oe||(oe={}));class di extends mr{constructor(e,t){super(),this.header=e,this.payload=t}toBinaryLengthBytes(){return this.header.toBinaryLengthBytes()+this.payload.byteLength}toBinaryInto(e){let t=0;if(t+=this.header.toBinaryInto(e),e.byteLength-t<this.payload.byteLength)throw oi.tooSmallForPayload();for(let r=0;r<this.payload.length;r+=1)e.setUint8(t,this.payload[r]),t+=1;let n=this.toBinaryLengthBytes();if(t!==n)throw new Error("DataTrackPacket.toBinaryInto: Wrote ".concat(t," bytes but expected length was ").concat(n," bytes"));return n}static fromBinary(e){let t=zs(e),n=D(ci.fromBinary(t),2),r=n[0],s=n[1],a=t.buffer.slice(t.byteOffset+s,t.byteOffset+t.byteLength);return[new di(r,new Uint8Array(a)),t.byteLength]}toJSON(){return{header:this.header.toJSON(),payload:this.payload}}}let va=he(u.LoggerNames.DataTracks);class mt extends We{constructor(e,t,n,r){super(19,"Frame ".concat(n," dropped: ").concat(e),r),this.name="DataTrackDepacketizerDropError",this.reason=t,this.reasonName=tn[t],this.frameNumber=n}static interrupted(e,t){return new mt("Interrupted by the start of a new frame ".concat(t),tn.Interrupted,e)}static unknownFrame(e){return new mt("Initial packet was never received.",tn.UnknownFrame,e)}static bufferFull(e){return new mt("Reorder buffer is full.",tn.BufferFull,e)}static incomplete(e,t,n){return new mt("Not all packets received before final packet. Received ".concat(t," packets, expected ").concat(n," packets."),tn.Incomplete,e)}}var tn,nn;(function(i){i[i.Interrupted=0]="Interrupted",i[i.UnknownFrame=1]="UnknownFrame",i[i.BufferFull=2]="BufferFull",i[i.Incomplete=3]="Incomplete"})(tn||(tn={}));class gr{constructor(){this.partials=new Map}push(e,t){switch(e.header.marker){case oe.Single:return this.frameFromSingle(e,t);case oe.Start:return this.beginPartial(e,t);case oe.Inter:case oe.Final:return this.pushToPartial(e)}}reset(){this.partials.clear()}peekOldestPartialFrameNumber(){let e=this.partials.keys().next();return e.done?null:e.value}frameFromSingle(e,t){var n;if(e.header.marker!==oe.Single)throw new Error("Depacketizer.frameFromSingle: packet.header.marker was not FrameMarker.Single, found ".concat(e.header.marker,"."));let r=(n=t?.maxPartialFrames)!==null&&n!==void 0?n:1;if(this.partials.size>=r){let s=this.peekOldestPartialFrameNumber();if(typeof s!="number")throw new Error("Depacketizer.frameFromSingle: no oldest frame number found, but partials.size is ".concat(this.partials.size,"."));if(this.partials.delete(s),t?.throwOnInterruption)throw mt.interrupted(s,e.header.frameNumber.value);va.warn("Data track frame ".concat(s," was interrupted by single-packet frame ").concat(e.header.frameNumber.value,", dropping."))}return{payload:e.payload,extensions:e.header.extensions}}beginPartial(e,t){var n;if(e.header.marker!==oe.Start)throw new Error("Depacketizer.beginPartial: packet.header.marker was not FrameMarker.Start, found ".concat(e.header.marker,"."));let r=e.header.sequence,s=e.header.frameNumber.value,a={startSequence:r,extensions:e.header.extensions,payloads:new Map([[r.value,e.payload]])},o=(n=t?.maxPartialFrames)!==null&&n!==void 0?n:1;for(;this.partials.size>=o;){let c=this.peekOldestPartialFrameNumber();if(typeof c!="number")break;if(this.partials.delete(c),t?.throwOnInterruption)throw mt.interrupted(c,s);va.warn("Data track partials full (max ".concat(o,"), evicted oldest frame ").concat(c," to make room for new frame ").concat(s,"."))}return this.partials.set(s,a),null}pushToPartial(e){if(e.header.marker!==oe.Inter&&e.header.marker!==oe.Final)throw new Error("Depacketizer.pushToPartial: packet.header.marker was not FrameMarker.Inter or FrameMarker.Final, found ".concat(e.header.marker,"."));let t=e.header.frameNumber.value,n=this.partials.get(t);if(!n)throw this.partials.delete(t),mt.unknownFrame(t);if(n.payloads.size>=gr.MAX_BUFFER_PACKETS)throw this.partials.delete(t),mt.bufferFull(t);return n.payloads.has(e.header.sequence.value)&&va.warn("Data track frame ".concat(t," received duplicate packet for sequence ").concat(e.header.sequence.value,", so replacing with newly received packet.")),n.payloads.set(e.header.sequence.value,e.payload),e.header.marker===oe.Final?this.finalize(t,n,e.header.sequence.value):null}finalize(e,t,n){let r=t.payloads.size,s=0;for(let d of t.payloads.values())s+=d.length;let a=new Uint8Array(s),o=t.startSequence.clone(),c=0;for(;;){let d=t.payloads.get(o.value);if(!d)break;t.payloads.delete(o.value);let l=a.length-c;if(d.length>l)throw new Error("Depacketizer.finalize: Expected at least ".concat(d.length," more bytes left in the payload buffer, only got ").concat(l," bytes."));if(a.set(d,c),c+=d.length,o.value==n)return this.partials.delete(e),{payload:a,extensions:t.extensions};o.increment()}throw this.partials.delete(e),mt.incomplete(e,r,n-t.startSequence.value+1)}}gr.MAX_BUFFER_PACKETS=128,(function(i){i[i.Unpublished=0]="Unpublished",i[i.Timeout=1]="Timeout",i[i.Disconnected=2]="Disconnected",i[i.Cancelled=4]="Cancelled"})(nn||(nn={}));class Be extends We{constructor(e,t,n){super(22,e,n),this.name="DataTrackSubscribeError",this.reason=t,this.reasonName=nn[t]}static unpublished(){return new Be("The track has been unpublished and is no longer available",nn.Unpublished)}static timeout(){return new Be("Request to subscribe to data track timed-out",nn.Timeout)}static disconnected(){return new Be("Cannot subscribe to data track when disconnected",nn.Disconnected)}static cancelled(){return new Be("Subscription to data track cancelled by caller",nn.Cancelled)}}let ka=he(u.LoggerNames.DataTracks);class Qp{constructor(e){var t,n;let r=e.e2eeManager!==null;if(e.info.usesE2ee!==r)throw new Error("IncomingDataTrackPipeline: DataTrackInfo.usesE2ee must match presence of decryptionProvider");let s=new gr;this.publisherIdentity=e.publisherIdentity,this.e2eeManager=(t=e.e2eeManager)!==null&&t!==void 0?t:null,this.depacketizer=s,this.options=(n=e.pipelineOptions)!==null&&n!==void 0?n:{}}updateE2eeManager(e){this.e2eeManager=e}setOptions(e){this.options=e}processPacket(e){return f(this,void 0,void 0,(function*(){let t=this.depacketize(e);return t&&(yield this.decryptIfNeeded(t))||null}))}depacketize(e){let t;try{t=this.depacketizer.push(e,{throwOnInterruption:!1,maxPartialFrames:this.options.maxPartialFrames})}catch(n){return ka.warn("Data frame depacketize error: ".concat(n)),null}return t}decryptIfNeeded(e){return f(this,void 0,void 0,(function*(){var t,n;let r=this.e2eeManager;if(!r)return e;let s=(n=(t=e.extensions)===null||t===void 0?void 0:t.e2ee)!==null&&n!==void 0?n:null;if(!s)return ka.error("Missing E2EE meta"),null;let a;try{a=yield r.handleEncryptedData(e.payload,s.iv,this.publisherIdentity,s.keyIndex)}catch(o){return ka.error("Error decrypting packet: ".concat(o)),null}return e.payload=a.payload,e}))}}let me=he(u.LoggerNames.DataTracks);class Yp extends Ue.EventEmitter{constructor(e){var t;super(),this.descriptors=new Map,this.subscriptionHandles=new Map,this.e2eeManager=(t=e?.e2eeManager)!==null&&t!==void 0?t:null}updateE2eeManager(e){this.e2eeManager=e;for(let t of this.descriptors.values())t.subscription.type==="active"&&t.subscription.pipeline.updateE2eeManager(e)}setPipelineOptions(e,t){let n=this.descriptors.get(e);n?(n.pipelineOptions=t,n.subscription.type==="active"&&n.subscription.pipeline.setOptions(t)):me.warn("Unknown track ".concat(e,", cannot set pipeline options."))}openSubscriptionStream(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:16,r=null,s=new Te,a=this.descriptors.get(e),o=()=>{t?.removeEventListener("abort",d)},c=()=>{o(),r?a&&this.descriptors.get(a.info.sid)===a?a.subscription.type==="active"?(a.subscription.streamControllers.delete(r),a.subscription.streamControllers.size===0&&this.unSubscribeRequest(a.info.sid)):me.warn("Subscription for track ".concat(e," is not active, skipping cancel...")):me.warn("Unknown track ".concat(e,", skipping cancel...")):me.warn("ReadableStream subscribed to ".concat(e," was not started."))},d=()=>{var h;r&&(a?.subscription.type==="active"&&a.subscription.streamControllers.delete(r),r.error(Be.cancelled()),(h=s.reject)===null||h===void 0||h.call(s,Be.cancelled()),c())};return[new ReadableStream({start:h=>{r=h,this.subscribeRequest(e,t).then((()=>f(this,void 0,void 0,(function*(){var p,m,k;if(!a||this.descriptors.get(a.info.sid)!==a){me.error("Unknown track ".concat(e));let g=Be.disconnected();return h.error(g),void((p=s.reject)===null||p===void 0||p.call(s,g))}if(a.subscription.type!=="active"){me.error("Subscription for track ".concat(e," is not active"));let g=Be.disconnected();return h.error(g),void((m=s.reject)===null||m===void 0||m.call(s,g))}t?.aborted?d():(t?.addEventListener("abort",d),a.subscription.streamControllers.set(h,o),(k=s.resolve)===null||k===void 0||k.call(s))})))).catch((p=>{var m;h.error(p),(m=s.reject)===null||m===void 0||m.call(s,p)}))},cancel:()=>{c()}},new CountQueuingStrategy({highWaterMark:n})),s.promise]}subscribeRequest(e,t){return f(this,void 0,void 0,(function*(){let n=this.descriptors.get(e);if(!n)throw new Error("Cannot subscribe to unknown track");let r=(s,a,o)=>f(this,void 0,void 0,(function*(){if(s.subscription.type==="active")return;if(s.subscription.type!=="pending")throw new Error("Descriptor for track ".concat(e," is not pending, found ").concat(s.subscription.type));let c=Tl([a,o].filter((h=>h!==void 0))),d=new Te;s.subscription.completionFuture.promise.then((()=>{var h;return(h=d.resolve)===null||h===void 0?void 0:h.call(d)})).catch((h=>{var p;return(p=d.reject)===null||p===void 0?void 0:p.call(d,h)}));let l=()=>{var h;s.subscription.type==="pending"&&(s.subscription.pendingRequestCount-=1,o?.aborted||s.subscription.pendingRequestCount<=0?s.subscription.cancel():(h=d.reject)===null||h===void 0||h.call(d,Be.cancelled()))};c.aborted&&l(),c.addEventListener("abort",l),yield d.promise,c.removeEventListener("abort",l)}));switch(n.subscription.type){case"none":{n.subscription={type:"pending",completionFuture:new Te,pendingRequestCount:1,cancel:()=>{var a,o;let c=n.subscription;n.subscription={type:"none"},this.emit("sfuUpdateSubscription",{sid:n.info.sid,subscribe:!1}),c.type==="pending"&&((o=(a=c.completionFuture).reject)===null||o===void 0||o.call(a,s.aborted?Be.timeout():Be.cancelled()))}},this.emit("sfuUpdateSubscription",{sid:e,subscribe:!0});let s=Sl(1e4);return void(yield r(n,t,s))}case"pending":return n.subscription.pendingRequestCount+=1,void(yield r(n,t));case"active":return}}))}querySubscribed(){return f(this,void 0,void 0,(function*(){return Array.from(this.descriptors.values()).filter((e=>e.subscription.type==="active")).map((e=>[e.info,e.publisherIdentity]))}))}unSubscribeRequest(e){var t;let n=this.descriptors.get(e);if(!n)throw new Error("Cannot subscribe to unknown track");if(n.subscription.type!=="active")return void me.warn("Unexpected descriptor state in unSubscribeRequest, expected active, found ".concat((t=n.subscription)===null||t===void 0?void 0:t.type));this.closeStreamControllers(n.subscription.streamControllers,e);let r=n.subscription;n.subscription={type:"none"},this.subscriptionHandles.delete(r.subcriptionHandle),this.emit("sfuUpdateSubscription",{sid:e,subscribe:!1})}closeStreamControllers(e,t){for(let r of e){var n=D(r,2);let s=n[0];(0,n[1])();try{s.close()}catch(a){me.warn("Failed to close readable stream for track ".concat(t,": ").concat(a))}}}receiveSfuPublicationUpdates(e){return f(this,void 0,void 0,(function*(){if(e.size===0)return;let t=new Map;for(let s of e.entries()){var n=D(s,2);let a=n[0],o=n[1],c=new Set;for(let d of o)c.add(d.sid),this.descriptors.has(d.sid)||this.handleSidReassigned(a,d)||(yield this.handleTrackPublished(a,d));t.set(a,c)}for(let s of t.entries()){var r=D(s,2);let a=r[0],o=r[1],c=Array.from(this.descriptors.entries()).filter((d=>{let l=D(d,2);return l[0],l[1].publisherIdentity===a})).map((d=>D(d,1)[0])).filter((d=>!o.has(d)));for(let d of c)this.handleTrackUnpublished(d)}}))}queryPublications(){return f(this,void 0,void 0,(function*(){return Array.from(this.descriptors.values()).map((e=>e.info))}))}handleTrackPublished(e,t){return f(this,void 0,void 0,(function*(){if(this.descriptors.has(t.sid))return void me.error("Existing descriptor for track ".concat(t.sid));let n={info:t,publisherIdentity:e,subscription:{type:"none"},pipelineOptions:{}};this.descriptors.set(n.info.sid,n);let r=new fa(n.info,this,{publisherIdentity:e});this.emit("trackPublished",{track:r})}))}handleSidReassigned(e,t){let n=Array.from(this.descriptors.entries()).find((h=>{let p=D(h,2);p[0];let m=p[1];return m.publisherIdentity===e&&m.info.pubHandle===t.pubHandle}));if(!n)return!1;let r=D(n,2),s=r[0],a=r[1],o=a.info,c=o.name,d=o.usesE2ee;if(c!==t.name||d!==t.usesE2ee)return me.warn("Info mismatch for ".concat(s,", treating as new publication")),!1;let l=t.sid;if(me.debug("SID reassigned: ".concat(s," -> ").concat(l)),!this.descriptors.delete(s))return!1;switch(a.info.sid=l,a.subscription.type){case"none":break;case"pending":case"active":this.emit("sfuUpdateSubscription",{sid:l,subscribe:!0})}return a.subscription.type==="active"&&this.subscriptionHandles.set(a.subscription.subcriptionHandle,l),this.descriptors.set(l,a),!0}handleTrackUnpublished(e){let t=this.descriptors.get(e);t?(this.descriptors.delete(e),t.subscription.type==="active"&&(this.closeStreamControllers(t.subscription.streamControllers,e),this.subscriptionHandles.delete(t.subscription.subcriptionHandle)),this.emit("trackUnpublished",{sid:e,publisherIdentity:t.publisherIdentity})):me.error("Unknown track ".concat(e))}receivedSfuSubscriberHandles(e){for(let n of e.entries()){var t=D(n,2);let r=t[0],s=t[1];this.registerSubscriberHandle(r,s)}}registerSubscriberHandle(e,t){var n,r;let s=this.descriptors.get(t);if(s)switch(s.subscription.type){case"none":return void me.warn("No subscription for ".concat(t));case"active":return this.subscriptionHandles.delete(s.subscription.subcriptionHandle),s.subscription.subcriptionHandle=e,void this.subscriptionHandles.set(e,t);case"pending":{me.debug("data track subscription activated",{sid:t,handle:e});let a=new Qp({info:s.info,publisherIdentity:s.publisherIdentity,e2eeManager:this.e2eeManager,pipelineOptions:s.pipelineOptions}),o=s.subscription;s.subscription={type:"active",subcriptionHandle:e,pipeline:a,streamControllers:new Map},this.subscriptionHandles.set(e,t),(r=(n=o.completionFuture).resolve)===null||r===void 0||r.call(n)}}else me.error("Unknown track ".concat(t))}packetReceived(e){return f(this,void 0,void 0,(function*(){let t;try{t=D(di.fromBinary(e),1)[0]}catch(a){return void me.error("Failed to deserialize packet: ".concat(a))}let n=this.subscriptionHandles.get(t.header.trackHandle);if(!n)return void me.warn("Unknown subscriber handle ".concat(t.header.trackHandle));let r=this.descriptors.get(n);if(!r)return void me.error("Missing descriptor for track ".concat(n));if(r.subscription.type!=="active")return void me.warn("Received packet for track ".concat(n," without active subscription"));let s=yield r.subscription.pipeline.processPacket(t);if(s)for(let a of r.subscription.streamControllers.keys()){if(a.desiredSize!==null&&a.desiredSize<=0){me.warn("Cannot send frame to subscribers: readable stream is full (desiredSize is ".concat(a.desiredSize,"). To increase this threshold, set a higher 'options.highWaterMark' when calling .subscribe()."));continue}let o=Cl.lossyIntoFrame(s);a.enqueue(o)}}))}resendSubscriptionUpdates(){for(let t of this.descriptors){var e=D(t,2);let n=e[0];e[1].subscription.type!=="none"&&this.emit("sfuUpdateSubscription",{sid:n,subscribe:!0})}}handleRemoteParticipantDisconnected(e){var t,n;for(let r of this.descriptors.values())if(r.publisherIdentity===e)switch(r.subscription.type){case"none":break;case"pending":(n=(t=r.subscription.completionFuture).reject)===null||n===void 0||n.call(t,Be.disconnected());break;case"active":this.unSubscribeRequest(r.info.sid)}}reset(){var e,t;for(let n of this.descriptors.values())this.emit("trackUnpublished",{sid:n.info.sid,publisherIdentity:n.publisherIdentity}),n.subscription.type==="pending"&&((t=(e=n.subscription.completionFuture).reject)===null||t===void 0||t.call(e,Be.disconnected())),n.subscription.type==="active"&&this.closeStreamControllers(n.subscription.streamControllers,n.info.sid);this.descriptors.clear(),this.subscriptionHandles.clear()}}class fr extends We{constructor(e,t,n){super(19,e,n),this.name="DataTrackPacketizerError",this.reason=t,this.reasonName=vr[t]}static mtuTooShort(){return new fr("MTU is too short to send frame",vr.MtuTooShort)}}var vr,ct,li,ui;(function(i){i[i.MtuTooShort=0]="MtuTooShort"})(vr||(vr={}));class ya{constructor(e,t){this.sequence=rt.u16(0),this.frameNumber=rt.u16(0),this.clock=Yt.rtpStartingNow(wn.rtpRandom()),this.handle=e,this.mtuSizeBytes=t}static computeFrameMarker(e,t){return t<=1?oe.Single:e===0?oe.Start:e===t-1?oe.Final:oe.Inter}*packetize(e,t){var n;let r=this.frameNumber.getThenIncrement(),s={marker:oe.Inter,trackHandle:this.handle,sequence:rt.u16(0),frameNumber:r,timestamp:(n=t?.now)!==null&&n!==void 0?n:this.clock.now(),extensions:e.extensions},a=new ci(s).toBinaryLengthBytes();if(a>=this.mtuSizeBytes)throw fr.mtuTooShort();let o=this.mtuSizeBytes-a,c=Math.ceil(e.payload.byteLength/o);for(let l=0,h=0;h<e.payload.byteLength;l=(d=[l+1,h+o])[0],h=d[1],d){var d;let p=this.sequence.getThenIncrement(),m=new ci(Object.assign(Object.assign({},s),{marker:ya.computeFrameMarker(l,c),sequence:p})),k=Math.min(o,e.payload.byteLength-h),g=new Uint8Array(e.payload.buffer,e.payload.byteOffset+h,k);yield new di(m,g)}}}(function(i){i[i.NotAllowed=0]="NotAllowed",i[i.DuplicateName=1]="DuplicateName",i[i.Timeout=2]="Timeout",i[i.LimitReached=3]="LimitReached",i[i.Disconnected=4]="Disconnected",i[i.Cancelled=5]="Cancelled",i[i.InvalidName=6]="InvalidName",i[i.Unknown=7]="Unknown"})(ct||(ct={}));class ge extends We{constructor(e,t,n){super(21,e,n),this.name="DataTrackPublishError",this.reason=t,this.reasonName=ct[t],this.rawMessage=n?.rawMessage}static notAllowed(e){return new ge("Data track publishing unauthorized",ct.NotAllowed,{rawMessage:e})}static duplicateName(e){return new ge("Track name already taken",ct.DuplicateName,{rawMessage:e})}static invalidName(e){return new ge("Track name is invalid",ct.InvalidName,{rawMessage:e})}static timeout(){return new ge("Publish data track timed-out. Does the LiveKit server support data tracks?",ct.Timeout)}static limitReached(e){return new ge("Data track publication limit reached",ct.LimitReached,{rawMessage:e})}static unknown(e,t){return new ge("Received RequestResponse for publishDataTrack, but reason was unrecognised (".concat(e,", ").concat(t,")"),ct.Unknown)}static disconnected(){return new ge("Room disconnected",ct.Disconnected)}static cancelled(){return new ge("Publish data track cancelled by caller",ct.Cancelled)}}(function(i){i[i.TrackUnpublished=0]="TrackUnpublished",i[i.Dropped=1]="Dropped"})(li||(li={}));class Ft extends We{constructor(e,t,n){super(22,e,n),this.name="DataTrackPushFrameError",this.reason=t,this.reasonName=li[t]}static trackUnpublished(){return new Ft("Track is no longer published",li.TrackUnpublished)}static dropped(e){return new Ft("Frame was dropped",li.Dropped,{cause:e})}}(function(i){i[i.Packetizer=0]="Packetizer",i[i.Encryption=1]="Encryption"})(ui||(ui={}));class hi extends We{constructor(e,t,n){super(21,e,n),this.name="DataTrackOutgoingPipelineError",this.reason=t,this.reasonName=ui[t]}static packetizer(e){return new hi("Error packetizing frame",ui.Packetizer,{cause:e})}static encryption(e){return new hi("Error encrypting frame",ui.Encryption,{cause:e})}}class pi{constructor(e,t){this.trackSymbol=wl,this.isLocal=!0,this.typeSymbol=Rl,this.handle=null,this.log=V,this.flushedFuture=new Te,this.isFlushed=!0,this.handleManagerReset=()=>{var n,r;(r=(n=this.flushedFuture).resolve)===null||r===void 0||r.call(n),this.manager.off("packetsFlushedChange",this.handleManagerPacketsFlushedChange),this.manager.off("reset",this.handleManagerReset)},this.handleManagerPacketsFlushedChange=n=>{var r,s;this.isFlushed=n.isFlushed,n.isFlushed&&((s=(r=this.flushedFuture).resolve)===null||s===void 0||s.call(r),this.flushedFuture=new Te)},this.options=e,this.manager=t,this.log=he(u.LoggerNames.DataTracks),this.manager.on("packetsFlushedChange",this.handleManagerPacketsFlushedChange),this.manager.on("reset",this.handleManagerReset)}static withExplicitHandle(e,t,n){let r=new pi(e,t);return r.handle=n,r}get info(){let e=this.descriptor;return e?.type==="active"?e.info:void 0}get descriptor(){return this.handle?this.manager.getDescriptor(this.handle):null}publish(e){return f(this,void 0,void 0,(function*(){try{this.handle=yield this.manager.publishRequest(this.options,e)}catch(t){throw t}}))}isPublished(){var e;return((e=this.descriptor)===null||e===void 0?void 0:e.type)==="active"&&this.descriptor.publishState!=="unpublished"}tryPush(e){if(!this.handle)throw Ft.trackUnpublished();let t=Cl.from(e);try{return this.manager.tryProcessAndSend(this.handle,t)}catch(n){throw n}}flush(){return f(this,void 0,void 0,(function*(){if(!this.isFlushed)return this.flushedFuture.promise}))}unpublish(){return f(this,void 0,void 0,(function*(){if(this.handle)try{yield this.manager.unpublishRequest(this.handle)}catch(e){throw e}else V.warn('Data track "'.concat(this.options.name,'" is not published, so unpublishing has no effect.'))}))}}class kr{constructor(e){this.e2eeManager=e.e2eeManager,this.packetizer=new ya(e.info.pubHandle,kr.TRANSPORT_MTU_BYTES)}updateE2eeManager(e){this.e2eeManager=e}processFrame(e){return sc(this,arguments,(function*(){let t=yield Ct(this.encryptIfNeeded(e));try{yield Ct(yield*(function(n){var r,s;return r={},a("next"),a("throw",(function(o){throw o})),a("return"),r[Symbol.iterator]=function(){return this},r;function a(o,c){r[o]=n[o]?function(d){return(s=!s)?{value:Ct(n[o](d)),done:!1}:c?c(d):d}:c}})(Ge(this.packetizer.packetize(t))))}catch(n){throw n instanceof fr?hi.packetizer(n):n}}))}encryptIfNeeded(e){return f(this,void 0,void 0,(function*(){if(!this.e2eeManager)return e;let t;try{t=yield this.e2eeManager.encryptData(e.payload)}catch(n){throw hi.encryption(n)}return e.payload=t.payload,e.extensions.e2ee=new ot(t.keyIndex,t.iv),e}))}}kr.TRANSPORT_MTU_BYTES=16e3;let Xe=he(u.LoggerNames.DataTracks),Pl={pending:()=>({type:"pending",completionFuture:new Te}),active:(i,e)=>({type:"active",info:i,publishState:"published",pipeline:new kr({info:i,e2eeManager:e}),unpublishingFuture:new Te})};class ba extends Ue.EventEmitter{constructor(e){var t;super(),this.handleAllocator=new mp,this.descriptors=new Map,this.inFlightPacketCounter=new Map,this.e2eeManager=(t=e?.e2eeManager)!==null&&t!==void 0?t:null}static withDescriptors(e){let t=new ba;return t.descriptors=e,t}updateE2eeManager(e){this.e2eeManager=e;for(let t of this.descriptors.values())t.type==="active"&&t.pipeline.updateE2eeManager(e)}getDescriptor(e){var t;return(t=this.descriptors.get(e))!==null&&t!==void 0?t:null}tryProcessAndSend(e,t){return f(this,void 0,void 0,(function*(){var n,r,s,a,o;let c=this.getDescriptor(e);if(c?.type!=="active"||c.publishState==="unpublished")throw Ft.trackUnpublished();if(c.publishState==="republishing")throw Ft.dropped("Data track republishing");try{try{for(var d,l=!0,h=Ge(c.pipeline.processFrame(t));!(n=(d=yield h.next()).done);l=!0){a=d.value,l=!1;let p=a,m=(o=this.inFlightPacketCounter.get(e))!==null&&o!==void 0?o:0;this.inFlightPacketCounter.set(e,m+1),m===0&&this.emit("packetsFlushedChange",{handle:e,isFlushed:!1}),this.emit("packetAvailable",{handle:e,bytes:p.toBinary()})}}catch(p){r={error:p}}finally{try{l||n||!(s=h.return)||(yield s.call(h))}finally{if(r)throw r.error}}}catch(p){throw Ft.dropped(p)}}))}handlePacketSendComplete(e){var t;let n=((t=this.inFlightPacketCounter.get(e))!==null&&t!==void 0?t:0)-1;n<0&&(Xe.warn("OutgoingDataTrackManager.handlePacketSendComplete: inFlightPacketCounter was decremented below 0 (got ".concat(this.inFlightPacketCounter," - resetting to 0. Were more packets send than were emitted?")),n=0),this.inFlightPacketCounter.set(e,n),n===0&&this.emit("packetsFlushedChange",{handle:e,isFlushed:!0})}publishRequest(e,t){return f(this,void 0,void 0,(function*(){let n=this.handleAllocator.get();if(!n)throw ge.limitReached();let r=Sl(1e4),s=t?Tl([t,r]):r;if(this.descriptors.has(n))throw new Error("Descriptor for handle already exists");let a=Pl.pending();this.descriptors.set(n,a);let o=()=>{var c,d;let l=this.descriptors.get(n);l?(this.descriptors.delete(n),this.emit("sfuUnpublishRequest",{handle:n}),l.type==="pending"&&((d=(c=l.completionFuture).reject)===null||d===void 0||d.call(c,r.aborted?ge.timeout():ge.cancelled()))):Xe.warn("No descriptor for ".concat(n))};return s.aborted?(o(),a.completionFuture.promise.then((()=>n))):(s.addEventListener("abort",o),this.emit("sfuPublishRequest",{handle:n,name:e.name,usesE2ee:this.e2eeManager!==null}),yield a.completionFuture.promise,s.removeEventListener("abort",o),this.emit("trackPublished",{track:pi.withExplicitHandle(e,this,n)}),n)}))}queryPublished(){return Array.from(this.descriptors.values()).filter((e=>e.type==="active")).map((e=>e.info))}unpublishRequest(e){return f(this,void 0,void 0,(function*(){let t=this.descriptors.get(e);t?t.type==="active"?(this.emit("sfuUnpublishRequest",{handle:e}),yield t.unpublishingFuture.promise,this.inFlightPacketCounter.delete(e),this.emit("trackUnpublished",{sid:t.info.sid})):Xe.warn("Track ".concat(e," not active")):Xe.warn("No descriptor for ".concat(e))}))}receivedSfuPublishResponse(e,t){var n,r,s,a;let o=this.descriptors.get(e);if(o)switch(this.descriptors.delete(e),o.type){case"pending":if(t.type==="ok"){let c=t.data;Xe.debug("SFU accepted publish request for handle ".concat(e),{sid:c.sid});let d=c.usesE2ee?this.e2eeManager:null;this.descriptors.set(c.pubHandle,Pl.active(c,d)),(r=(n=o.completionFuture).resolve)===null||r===void 0||r.call(n)}else Xe.debug("SFU rejected publish request for handle ".concat(e),{error:t.error}),(a=(s=o.completionFuture).reject)===null||a===void 0||a.call(s,t.error);return;case"active":if(o.publishState!=="republishing")return void Xe.warn("Track ".concat(e," already active"));if(t.type==="error")return void Xe.warn("Republish failed for track ".concat(e));Xe.debug("Track ".concat(e," republished")),o.info.sid=t.data.sid,o.publishState="published",this.descriptors.set(o.info.pubHandle,o)}else Xe.warn("No descriptor for ".concat(e))}receivedSfuUnpublishResponse(e){var t,n;let r=this.descriptors.get(e);r?(this.descriptors.delete(e),r.type==="active"?(r.publishState="unpublished",(n=(t=r.unpublishingFuture).resolve)===null||n===void 0||n.call(t)):Xe.warn("Track ".concat(e," not active"))):Xe.warn("No descriptor for ".concat(e))}sfuWillRepublishTracks(){var e,t;for(let r of this.descriptors.entries()){var n=D(r,2);let s=n[0],a=n[1];switch(a.type){case"pending":this.descriptors.delete(s),(t=(e=a.completionFuture).reject)===null||t===void 0||t.call(e,ge.disconnected());break;case"active":a.publishState="republishing",this.emit("sfuPublishRequest",{handle:a.info.pubHandle,name:a.info.name,usesE2ee:a.info.usesE2ee})}}}reset(){return f(this,void 0,void 0,(function*(){var e,t,n,r;this.handleAllocator.reset();for(let s of this.descriptors.values())switch(s.type){case"pending":(t=(e=s.completionFuture).reject)===null||t===void 0||t.call(e,ge.disconnected());break;case"active":(r=(n=s.unpublishingFuture).resolve)===null||r===void 0||r.call(n),yield this.unpublishRequest(s.info.pubHandle)}this.descriptors.clear(),this.inFlightPacketCounter.clear(),this.emit("reset")}))}}class Y extends Error{constructor(e,t,n,r){super(t),this.code=e,this.message=Dl(t,Y.MAX_MESSAGE_BYTES),this.data=n?Dl(n,Y.MAX_DATA_BYTES):void 0,r?.cause!==void 0&&(this.cause=r?.cause)}static fromProto(e){return new Y(e.code,e.message,e.data)}toProto(){return new Ro({code:this.code,message:this.message,data:this.data})}static builtIn(e,t,n){return new Y(Y.ErrorCode[e],Y.ErrorMessage[e],t,n)}}Y.MAX_MESSAGE_BYTES=256,Y.MAX_DATA_BYTES=15360,Y.ErrorCode={APPLICATION_ERROR:1500,CONNECTION_TIMEOUT:1501,RESPONSE_TIMEOUT:1502,RECIPIENT_DISCONNECTED:1503,RESPONSE_PAYLOAD_TOO_LARGE:1504,SEND_FAILED:1505,UNSUPPORTED_METHOD:1400,RECIPIENT_NOT_FOUND:1401,REQUEST_PAYLOAD_TOO_LARGE:1402,UNSUPPORTED_SERVER:1403,UNSUPPORTED_VERSION:1404},Y.ErrorMessage={APPLICATION_ERROR:"Application error in method handler",CONNECTION_TIMEOUT:"Connection timeout",RESPONSE_TIMEOUT:"Response timeout",RECIPIENT_DISCONNECTED:"Recipient disconnected",RESPONSE_PAYLOAD_TOO_LARGE:"Response payload too large",SEND_FAILED:"Failed to send",UNSUPPORTED_METHOD:"Method not supported at destination",RECIPIENT_NOT_FOUND:"Recipient not found",REQUEST_PAYLOAD_TOO_LARGE:"Request payload too large",UNSUPPORTED_SERVER:"RPC not supported by server",UNSUPPORTED_VERSION:"Unsupported RPC version"};let Il="lk.rpc_request",Ml="lk.rpc_response";var Se;(function(i){i.RPC_REQUEST_ID="lk.rpc_request_id",i.RPC_REQUEST_METHOD="lk.rpc_request_method",i.RPC_REQUEST_RESPONSE_TIMEOUT_MS="lk.rpc_request_response_timeout_ms",i.RPC_REQUEST_VERSION="lk.rpc_request_version"})(Se||(Se={}));function Ta(i){return new TextEncoder().encode(i).length}function Dl(i,e){if(Ta(i)<=e)return i;let t=0,n=i.length,r=new TextEncoder;for(;t<n;){let s=Math.floor((t+n+1)/2);r.encode(i.slice(0,s)).length<=e?t=s:n=s-1}return i.slice(0,t)}class Xp extends Ue.EventEmitter{constructor(e,t,n,r){super(),this.pendingAcks=new Map,this.pendingResponses=new Map,this.log=e,this.outgoingDataStreamManager=t,this.getRemoteParticipantClientProtocol=n,this.getServerVersion=r}performRpc(e){return f(this,arguments,void 0,(function(t){var n=this;let r=t.destinationIdentity,s=t.method,a=t.payload,o=t.responseTimeout,c=o===void 0?15e3:o;return(function*(){let d=n.getRemoteParticipantClientProtocol(r);if(Ta(a)>15360&&d<1)throw Y.builtIn("REQUEST_PAYLOAD_TOO_LARGE");let l=n.getServerVersion();if(l&&Qe(l,"1.8.0")<0)throw Y.builtIn("UNSUPPORTED_SERVER");let h=Math.max(c,8e3),p=crypto.randomUUID(),m=new Te,k=null,g=setTimeout((()=>{var b;n.pendingAcks.delete(p),(b=m.reject)===null||b===void 0||b.call(m,Y.builtIn("CONNECTION_TIMEOUT")),n.pendingResponses.delete(p),k!==null&&clearTimeout(k)}),7e3);n.pendingAcks.set(p,{resolve:()=>{clearTimeout(g)},participantIdentity:r}),n.pendingResponses.set(p,{completionFuture:m,participantIdentity:r}),yield n.publishRpcRequest(r,p,s,a,h,d),k=setTimeout((()=>{var b;n.pendingResponses.delete(p),(b=m.reject)===null||b===void 0||b.call(m,Y.builtIn("RESPONSE_TIMEOUT"))}),c);let v=m.promise.finally((()=>{clearTimeout(k),n.pendingAcks.has(p)&&(n.log.warn("RPC response received before ack",p),n.pendingAcks.delete(p),clearTimeout(g))}));return[p,v]})()}))}publishRpcRequest(e,t,n,r,s,a){return f(this,void 0,void 0,(function*(){a>=1?yield this.outgoingDataStreamManager.sendText(r,{topic:Il,destinationIdentities:[e],attributes:{[Se.RPC_REQUEST_ID]:t,[Se.RPC_REQUEST_METHOD]:n,[Se.RPC_REQUEST_RESPONSE_TIMEOUT_MS]:"".concat(s),[Se.RPC_REQUEST_VERSION]:"".concat(2)}}):this.emit("sendDataPacket",{packet:new Re({destinationIdentities:[e],kind:St.RELIABLE,value:{case:"rpcRequest",value:new jr({id:t,method:n,payload:r,responseTimeoutMs:s,version:1})}})})}))}handleIncomingDataStream(e,t,n){return f(this,void 0,void 0,(function*(){let r=n[Se.RPC_REQUEST_ID];if(!r)return void this.log.warn("RPC data stream malformed: ".concat(Se.RPC_REQUEST_ID," not set."));let s=this.pendingResponses.get(r);if(s&&s.participantIdentity!==t)return void this.log.warn("RPC response stream for ".concat(r," arrived from unexpected sender ").concat(t,", expected ").concat(s.participantIdentity,". Ignoring."));let a;try{a=yield e.readAll()}catch(o){return this.log.warn("Error reading RPC response payload: ".concat(o)),void this.handleIncomingRpcResponseFailure(r,Y.builtIn("APPLICATION_ERROR","Error reading RPC response payload",{cause:o}))}this.handleIncomingRpcResponseSuccess(r,a)}))}handleIncomingRpcResponseSuccess(e,t){var n,r;let s=this.pendingResponses.get(e);s?((r=(n=s.completionFuture).resolve)===null||r===void 0||r.call(n,t),this.pendingResponses.delete(e)):this.log.error("Response received for unexpected RPC request",e)}handleIncomingRpcResponseFailure(e,t){var n,r;let s=this.pendingResponses.get(e);s?((r=(n=s.completionFuture).reject)===null||r===void 0||r.call(n,t),this.pendingResponses.delete(e)):this.log.error("Response received for unexpected RPC request",e)}handleIncomingRpcAck(e){let t=this.pendingAcks.get(e);t?(t.resolve(),this.pendingAcks.delete(e)):this.log.error("Ack received for unexpected RPC request: ".concat(e))}handleParticipantDisconnected(e){var t;for(let a of this.pendingAcks){var n=D(a,2);let o=n[0];n[1].participantIdentity===e&&this.pendingAcks.delete(o)}for(let a of this.pendingResponses){var r=D(a,2);let o=r[0];var s=r[1];let c=s.participantIdentity,d=s.completionFuture;c===e&&((t=d.reject)===null||t===void 0||t.call(d,Y.builtIn("RECIPIENT_DISCONNECTED")),this.pendingResponses.delete(o))}}}class $p extends Ue.EventEmitter{constructor(e,t,n){super(),this.rpcHandlers=new Map,this.log=e,this.outgoingDataStreamManager=t,this.getRemoteParticipantClientProtocol=n}registerRpcMethod(e,t){if(this.rpcHandlers.has(e))throw Error("RPC handler already registered for method ".concat(e,", unregisterRpcMethod before trying to register again"));this.rpcHandlers.set(e,t)}unregisterRpcMethod(e){this.rpcHandlers.delete(e)}handleIncomingRpcRequest(e,t){return f(this,void 0,void 0,(function*(){var n;if(this.publishRpcAck(e,t.id),t.version!==1)return void this.publishRpcResponsePacket(e,t.id,null,Y.builtIn("UNSUPPORTED_VERSION"));let r=this.rpcHandlers.get(t.method);if(!r)return void this.publishRpcResponsePacket(e,t.id,null,Y.builtIn("UNSUPPORTED_METHOD"));let s;try{s=yield r({requestId:t.id,callerIdentity:e,payload:t.payload,responseTimeout:t.responseTimeoutMs})}catch(a){let o;return a instanceof Y?o=a:(this.log.warn("Uncaught error returned by RPC handler for ".concat(t.method,". Returning APPLICATION_ERROR instead."),a),o=Y.builtIn("APPLICATION_ERROR","Uncaught error: ".concat((n=a?.message)!==null&&n!==void 0?n:a),{cause:a})),void this.publishRpcResponsePacket(e,t.id,null,o)}yield this.publishRpcResponse(e,t.id,s??"")}))}handleIncomingDataStream(e,t,n){return f(this,void 0,void 0,(function*(){let r=n[Se.RPC_REQUEST_ID],s=n[Se.RPC_REQUEST_METHOD],a=parseInt(n[Se.RPC_REQUEST_RESPONSE_TIMEOUT_MS],10),o=parseInt(n[Se.RPC_REQUEST_VERSION],10);if(!r||!s||Number.isNaN(a)||Number.isNaN(o))return this.log.warn("RPC data stream malformed: ".concat(Se.RPC_REQUEST_ID," / ").concat(Se.RPC_REQUEST_METHOD," / ").concat(Se.RPC_REQUEST_RESPONSE_TIMEOUT_MS," / ").concat(Se.RPC_REQUEST_VERSION," not set.")),void this.publishRpcResponsePacket(t,r,null,Y.builtIn("APPLICATION_ERROR","RPC data stream malformed"));if(this.publishRpcAck(t,r),o!==2)return void this.publishRpcResponsePacket(t,r,null,Y.builtIn("UNSUPPORTED_VERSION"));let c;try{c=yield e.readAll()}catch(h){return this.log.warn("Error reading RPC request payload: ".concat(h)),void this.publishRpcResponsePacket(t,r,null,Y.builtIn("APPLICATION_ERROR","Error reading RPC request payload",{cause:h}))}let d=this.rpcHandlers.get(s);if(!d)return void this.publishRpcResponsePacket(t,r,null,Y.builtIn("UNSUPPORTED_METHOD"));let l;try{l=yield d({requestId:r,callerIdentity:t,payload:c,responseTimeout:a})}catch(h){let p;return h instanceof Y?p=h:(this.log.warn("Uncaught error returned by RPC handler for ".concat(s,". Returning APPLICATION_ERROR instead."),h),p=Y.builtIn("APPLICATION_ERROR")),void this.publishRpcResponsePacket(t,r,null,p)}yield this.publishRpcResponse(t,r,l??"")}))}publishRpcAck(e,t){this.emit("sendDataPacket",{packet:new Re({destinationIdentities:[e],kind:St.RELIABLE,value:{case:"rpcAck",value:new Di({requestId:t})}})})}publishRpcResponsePacket(e,t,n,r){this.emit("sendDataPacket",{packet:new Re({destinationIdentities:[e],kind:St.RELIABLE,value:{case:"rpcResponse",value:new qr({requestId:t,value:r?{case:"error",value:r.toProto()}:{case:"payload",value:n??""}})}})})}publishRpcResponse(e,t,n){return f(this,void 0,void 0,(function*(){if(this.getRemoteParticipantClientProtocol(e)>=1)return void(yield this.outgoingDataStreamManager.sendText(n,{topic:Ml,destinationIdentities:[e],attributes:{[Se.RPC_REQUEST_ID]:t}}));if(Ta(n)>15360)return this.log.warn("RPC Response payload too large for request ".concat(t,". To send larger responses, consider updating the sending client.")),void this.publishRpcResponsePacket(e,t,null,Y.builtIn("RESPONSE_PAYLOAD_TOO_LARGE"));this.publishRpcResponsePacket(e,t,n,null)}))}}class _l extends qs{constructor(e,t,n,r,s,a){super(e,t,R.Kind.Audio,n,a),this.monitorReceiver=()=>f(this,void 0,void 0,(function*(){if(!this.receiver)return void(this._currentBitrate=0);let o=yield this.getReceiverStats();o&&this.prevStats&&this.receiver&&(this._currentBitrate=sr(o,this.prevStats)),this.prevStats=o})),this.audioContext=r,this.webAudioPluginNodes=[],s&&(this.sinkId=s.deviceId)}setVolume(e){var t;for(let n of this.attachedElements)this.audioContext?(t=this.gainNode)===null||t===void 0||t.gain.setTargetAtTime(e,0,.1):n.volume=e;tt()&&this._mediaStreamTrack._setVolume(e),this.elementVolume=e}getVolume(){if(this.elementVolume)return this.elementVolume;if(tt())return 1;let e=0;return this.attachedElements.forEach((t=>{t.volume>e&&(e=t.volume)})),e}setSinkId(e){return f(this,void 0,void 0,(function*(){this.sinkId=e,yield Promise.all(this.attachedElements.map((t=>{if(Xi(t))return t.setSinkId(e)})))}))}attach(e){let t=this.attachedElements.length===0;return e?super.attach(e):e=super.attach(),this.sinkId&&Xi(e)&&e.setSinkId(this.sinkId).catch((n=>{this.log.error("Failed to set sink id on remote audio track",n,this.logContext)})),this.audioContext&&t&&(this.log.debug("using audio context mapping",this.logContext),this.connectWebAudio(this.audioContext,e),e.volume=0,e.muted=!0),this.elementVolume&&this.setVolume(this.elementVolume),e}detach(e){let t;return e?(t=super.detach(e),this.audioContext&&(this.attachedElements.length>0?this.connectWebAudio(this.audioContext,this.attachedElements[0]):this.disconnectWebAudio())):(t=super.detach(),this.disconnectWebAudio()),t}setAudioContext(e){this.audioContext=e,e&&this.attachedElements.length>0?this.connectWebAudio(e,this.attachedElements[0]):e||this.disconnectWebAudio()}setWebAudioPlugins(e){this.webAudioPluginNodes=e,this.attachedElements.length>0&&this.audioContext&&this.connectWebAudio(this.audioContext,this.attachedElements[0])}connectWebAudio(e,t){this.disconnectWebAudio(),this.sourceNode=e.createMediaStreamSource(t.srcObject);let n=this.sourceNode;this.webAudioPluginNodes.forEach((r=>{n.connect(r),n=r})),this.gainNode=e.createGain(),n.connect(this.gainNode),this.gainNode.connect(e.destination),this.elementVolume&&this.gainNode.gain.setTargetAtTime(this.elementVolume,0,.1),e.state!=="running"&&e.resume().then((()=>{e.state!=="running"&&this.emit(u.TrackEvent.AudioPlaybackFailed,new Error("Audio Context couldn't be started automatically"))})).catch((r=>{this.emit(u.TrackEvent.AudioPlaybackFailed,r)}))}disconnectWebAudio(){var e,t;(e=this.gainNode)===null||e===void 0||e.disconnect(),(t=this.sourceNode)===null||t===void 0||t.disconnect(),this.gainNode=void 0,this.sourceNode=void 0}getReceiverStats(){return f(this,void 0,void 0,(function*(){if(!this.receiver||!this.receiver.getStats)return;let e;return(yield this.receiver.getStats()).forEach((t=>{t.type==="inbound-rtp"&&(e={type:"audio",streamId:t.id,timestamp:t.timestamp,jitter:t.jitter,bytesReceived:t.bytesReceived,concealedSamples:t.concealedSamples,concealmentEvents:t.concealmentEvents,silentConcealedSamples:t.silentConcealedSamples,silentConcealmentEvents:t.silentConcealmentEvents,totalAudioEnergy:t.totalAudioEnergy,totalSamplesDuration:t.totalSamplesDuration})})),e}))}}class gt extends Ue.EventEmitter{constructor(e,t,n,r){var s;super(),this.metadataMuted=!1,this.encryption=G.NONE,this.log=V,this.handleMuted=()=>{this.emit(u.TrackEvent.Muted)},this.handleUnmuted=()=>{this.emit(u.TrackEvent.Unmuted)},this.log=he((s=r?.loggerName)!==null&&s!==void 0?s:u.LoggerNames.Publication),this.loggerContextCb=this.loggerContextCb,this.setMaxListeners(100),this.kind=e,this.trackSid=t,this.trackName=n,this.source=R.Source.Unknown}setTrack(e){this.track&&(this.track.off(u.TrackEvent.Muted,this.handleMuted),this.track.off(u.TrackEvent.Unmuted,this.handleUnmuted)),this.track=e,e&&(e.on(u.TrackEvent.Muted,this.handleMuted),e.on(u.TrackEvent.Unmuted,this.handleUnmuted))}get logContext(){var e;return Object.assign(Object.assign({},(e=this.loggerContextCb)===null||e===void 0?void 0:e.call(this)),W(this))}get isMuted(){return this.metadataMuted}get isEnabled(){return!0}get isSubscribed(){return this.track!==void 0}get isEncrypted(){return this.encryption!==G.NONE}get audioTrack(){if(it(this.track))return this.track}get videoTrack(){if(ht(this.track))return this.track}updateInfo(e){this.trackSid=e.sid,this.trackName=e.name,this.source=R.sourceFromProto(e.source),this.mimeType=e.mimeType,this.kind===R.Kind.Video&&e.width>0&&(this.dimensions={width:e.width,height:e.height},this.simulcasted=e.simulcast),this.encryption=e.encryption,this.trackInfo=e,this.log.debug("update publication info",Object.assign(Object.assign({},this.logContext),{info:e}))}}(function(i){var e,t;(e=i.SubscriptionStatus||(i.SubscriptionStatus={})).Desired="desired",e.Subscribed="subscribed",e.Unsubscribed="unsubscribed",(t=i.PermissionStatus||(i.PermissionStatus={})).Allowed="allowed",t.NotAllowed="not_allowed"})(gt||(gt={}));class yr extends gt{get isUpstreamPaused(){var e;return(e=this.track)===null||e===void 0?void 0:e.isUpstreamPaused}constructor(e,t,n,r){super(e,t.sid,t.name,r),this.track=void 0,this.handleTrackEnded=()=>{this.emit(u.TrackEvent.Ended)},this.handleCpuConstrained=()=>{this.track&&ht(this.track)&&this.emit(u.TrackEvent.CpuConstrained,this.track)},this.updateInfo(t),this.setTrack(n)}setTrack(e){this.track&&(this.track.off(u.TrackEvent.Ended,this.handleTrackEnded),this.track.off(u.TrackEvent.CpuConstrained,this.handleCpuConstrained)),super.setTrack(e),e&&(e.on(u.TrackEvent.Ended,this.handleTrackEnded),e.on(u.TrackEvent.CpuConstrained,this.handleCpuConstrained))}get isMuted(){return this.track?this.track.isMuted:super.isMuted}get audioTrack(){return super.audioTrack}get videoTrack(){return super.videoTrack}get isLocal(){return!0}mute(){return f(this,void 0,void 0,(function*(){var e;return(e=this.track)===null||e===void 0?void 0:e.mute()}))}unmute(){return f(this,void 0,void 0,(function*(){var e;return(e=this.track)===null||e===void 0?void 0:e.unmute()}))}pauseUpstream(){return f(this,void 0,void 0,(function*(){var e;yield(e=this.track)===null||e===void 0?void 0:e.pauseUpstream()}))}resumeUpstream(){return f(this,void 0,void 0,(function*(){var e;yield(e=this.track)===null||e===void 0?void 0:e.resumeUpstream()}))}getTrackFeatures(){var e;if(it(this.track)){let t=this.track.getSourceTrackSettings(),n=new Set;return t.autoGainControl&&n.add(ve.TF_AUTO_GAIN_CONTROL),t.echoCancellation&&n.add(ve.TF_ECHO_CANCELLATION),t.noiseSuppression&&n.add(ve.TF_NOISE_SUPPRESSION),t.channelCount&&t.channelCount>1&&n.add(ve.TF_STEREO),!((e=this.options)===null||e===void 0)&&e.dtx||n.add(ve.TF_NO_DTX),this.track.enhancedNoiseCancellation&&n.add(ve.TF_ENHANCED_NOISE_CANCELLATION),Array.from(n.values())}return[]}}function mi(i,e){return f(this,void 0,void 0,(function*(){i!=null||(i={});let t=!1,n=id(i),r=n.audioProcessor,s=n.videoProcessor,a=n.optionsWithoutProcessor,o=a.audio,c=a.video;if(r&&typeof a.audio=="object"&&(a.audio.processor=r),s&&typeof a.video=="object"&&(a.video.processor=s),i.audio&&typeof a.audio=="object"&&typeof a.audio.deviceId=="string"){let h=a.audio.deviceId;a.audio.deviceId={exact:h},t=!0,o=Object.assign(Object.assign({},a.audio),{deviceId:{ideal:h}})}if(a.video&&typeof a.video=="object"&&typeof a.video.deviceId=="string"){let h=a.video.deviceId;a.video.deviceId={exact:h},t=!0,c=Object.assign(Object.assign({},a.video),{deviceId:{ideal:h}})}a.audio===!0?a.audio={deviceId:"default"}:typeof a.audio=="object"&&a.audio!==null&&(a.audio=Object.assign(Object.assign({},a.audio),{deviceId:a.audio.deviceId||"default"})),a.video===!0?a.video={deviceId:"default"}:typeof a.video!="object"||a.video.deviceId||(a.video.deviceId="default");let d=ws(ed(a,Gd,Jd)),l=navigator.mediaDevices.getUserMedia(d);a.audio&&(ye.userMediaPromiseMap.set("audioinput",l),l.catch((()=>ye.userMediaPromiseMap.delete("audioinput")))),a.video&&(ye.userMediaPromiseMap.set("videoinput",l),l.catch((()=>ye.userMediaPromiseMap.delete("videoinput"))));try{let h=yield l;return yield Promise.all(h.getTracks().map((p=>f(this,void 0,void 0,(function*(){let m,k=p.kind==="audio"?d.audio:d.video;typeof k!="boolean"&&(m=k);let g=p.getSettings().deviceId;m?.deviceId&&Tn(m.deviceId)!==g?m.deviceId=g:m||(m={deviceId:g});let v=(function(b,T,E){switch(b.kind){case"audio":return new In(b,T,!1,void 0,E);case"video":return new Mn(b,T,!1,E);default:throw new et("unsupported track type: ".concat(b.kind))}})(p,m,e);return v.kind===R.Kind.Video?v.source=R.Source.Camera:v.kind===R.Kind.Audio&&(v.source=R.Source.Microphone),v.mediaStream=h,it(v)&&r?yield v.setProcessor(r):ht(v)&&s&&(yield v.setProcessor(s)),v})))))}catch(h){if(!t)throw h;return mi(Object.assign(Object.assign({},i),{audio:o,video:c}),e)}}))}function Ol(i){return f(this,void 0,void 0,(function*(){return(yield mi({audio:!1,video:i==null||i}))[0]}))}function Al(i){return f(this,void 0,void 0,(function*(){return(yield mi({audio:i==null||i,video:!1}))[0]}))}var gi,fi;u.ConnectionQuality=void 0,(gi=u.ConnectionQuality||(u.ConnectionQuality={})).Excellent="excellent",gi.Good="good",gi.Poor="poor",gi.Lost="lost",gi.Unknown="unknown";class Sa extends Ue.EventEmitter{get logContext(){var e,t;return Object.assign({},(t=(e=this.loggerOptions)===null||e===void 0?void 0:e.loggerContextCb)===null||t===void 0?void 0:t.call(e))}get isEncrypted(){return this.trackPublications.size>0&&Array.from(this.trackPublications.values()).every((e=>e.isEncrypted))}get isAgent(){var e;return((e=this.permissions)===null||e===void 0?void 0:e.agent)||this.kind===dn.AGENT}get isActive(){var e;return((e=this.participantInfo)===null||e===void 0?void 0:e.state)===cn.ACTIVE}get kind(){return this._kind}get attributes(){return Object.freeze(Object.assign({},this._attributes))}constructor(e,t,n,r,s,a){let o=arguments.length>6&&arguments[6]!==void 0?arguments[6]:dn.STANDARD;var c;super(),this.audioLevel=0,this.isSpeaking=!1,this._connectionQuality=u.ConnectionQuality.Unknown,this.log=V,this.loggerOptions=a,this.log=he((c=a?.loggerName)!==null&&c!==void 0?c:u.LoggerNames.Participant,(()=>this.logContext)),this.setMaxListeners(100),this.sid=e,this.identity=t,this.name=n,this.metadata=r,this.audioTrackPublications=new Map,this.videoTrackPublications=new Map,this.trackPublications=new Map,this._kind=o,this._attributes=s??{}}getTrackPublications(){return Array.from(this.trackPublications.values())}getTrackPublication(e){for(let t of this.trackPublications){let n=D(t,2)[1];if(n.source===e)return n}}getTrackPublicationByName(e){for(let t of this.trackPublications){let n=D(t,2)[1];if(n.trackName===e)return n}}waitUntilActive(){return this.isActive?Promise.resolve():(this.activeFuture||(this.activeFuture=new Te,this.once(u.ParticipantEvent.Active,(()=>{var e,t;(t=(e=this.activeFuture)===null||e===void 0?void 0:e.resolve)===null||t===void 0||t.call(e),this.activeFuture=void 0}))),this.activeFuture.promise)}get connectionQuality(){return this._connectionQuality}get isCameraEnabled(){var e;let t=this.getTrackPublication(R.Source.Camera);return!((e=t?.isMuted)===null||e===void 0||e)}get isMicrophoneEnabled(){var e;let t=this.getTrackPublication(R.Source.Microphone);return!((e=t?.isMuted)===null||e===void 0||e)}get isScreenShareEnabled(){return!!this.getTrackPublication(R.Source.ScreenShare)}get isLocal(){return!1}get joinedAt(){return this.participantInfo?new Date(1e3*Number.parseInt(this.participantInfo.joinedAt.toString())):new Date}updateInfo(e){var t;return!(this.participantInfo&&this.participantInfo.sid===e.sid&&this.participantInfo.version>e.version)&&(this.identity=e.identity,this.sid=e.sid,this._setName(e.name),this._setMetadata(e.metadata),this._setAttributes(e.attributes),e.state===cn.ACTIVE&&((t=this.participantInfo)===null||t===void 0?void 0:t.state)!==cn.ACTIVE&&this.emit(u.ParticipantEvent.Active),e.permission&&this.setPermissions(e.permission),this.participantInfo=e,!0)}_setMetadata(e){let t=this.metadata!==e,n=this.metadata;this.metadata=e,t&&this.emit(u.ParticipantEvent.ParticipantMetadataChanged,n)}_setName(e){let t=this.name!==e;this.name=e,t&&this.emit(u.ParticipantEvent.ParticipantNameChanged,e)}_setAttributes(e){let t=(function(n,r){var s;n===void 0&&(n={}),r===void 0&&(r={});let a=[...Object.keys(r),...Object.keys(n)],o={};for(let c of a)n[c]!==r[c]&&(o[c]=(s=r[c])!==null&&s!==void 0?s:"");return o})(this.attributes,e);this._attributes=e,Object.keys(t).length>0&&this.emit(u.ParticipantEvent.AttributesChanged,t)}setPermissions(e){var t,n,r,s,a,o;let c=this.permissions,d=e.canPublish!==((t=this.permissions)===null||t===void 0?void 0:t.canPublish)||e.canSubscribe!==((n=this.permissions)===null||n===void 0?void 0:n.canSubscribe)||e.canPublishData!==((r=this.permissions)===null||r===void 0?void 0:r.canPublishData)||e.hidden!==((s=this.permissions)===null||s===void 0?void 0:s.hidden)||e.recorder!==((a=this.permissions)===null||a===void 0?void 0:a.recorder)||e.canPublishSources.length!==this.permissions.canPublishSources.length||e.canPublishSources.some(((l,h)=>{var p;return l!==((p=this.permissions)===null||p===void 0?void 0:p.canPublishSources[h])}))||e.canSubscribeMetrics!==((o=this.permissions)===null||o===void 0?void 0:o.canSubscribeMetrics);return this.permissions=e,d&&this.emit(u.ParticipantEvent.ParticipantPermissionsChanged,c),d}setIsSpeaking(e){e!==this.isSpeaking&&(this.isSpeaking=e,e&&(this.lastSpokeAt=new Date),this.emit(u.ParticipantEvent.IsSpeakingChanged,e))}setConnectionQuality(e){let t=this._connectionQuality;this._connectionQuality=(function(n){switch(n){case an.EXCELLENT:return u.ConnectionQuality.Excellent;case an.GOOD:return u.ConnectionQuality.Good;case an.POOR:return u.ConnectionQuality.Poor;case an.LOST:return u.ConnectionQuality.Lost;default:return u.ConnectionQuality.Unknown}})(e),t!==this._connectionQuality&&this.emit(u.ParticipantEvent.ConnectionQualityChanged,this._connectionQuality)}setDisconnected(){var e,t;this.activeFuture&&((t=(e=this.activeFuture).reject)===null||t===void 0||t.call(e,new Error("Participant disconnected")),this.activeFuture=void 0)}setAudioContext(e){this.audioContext=e,this.audioTrackPublications.forEach((t=>it(t.track)&&t.track.setAudioContext(e)))}addTrackPublication(e){this.log.debug("adding track publication",{trackSid:e.trackSid,source:e.source,kind:e.kind}),e.on(u.TrackEvent.Muted,(()=>{this.emit(u.ParticipantEvent.TrackMuted,e)})),e.on(u.TrackEvent.Unmuted,(()=>{this.emit(u.ParticipantEvent.TrackUnmuted,e)}));let t=e;switch(t.track&&(t.track.sid=e.trackSid),this.trackPublications.set(e.trackSid,e),e.kind){case R.Kind.Audio:this.audioTrackPublications.set(e.trackSid,e);break;case R.Kind.Video:this.videoTrackPublications.set(e.trackSid,e)}}}class Ll extends Sa{constructor(e,t,n,r,s,a,o,c){super(e,t,void 0,void 0,void 0,{loggerName:r.loggerName,loggerContextCb:()=>this.engine.logContext}),this.pendingPublishing=new Set,this.pendingPublishPromises=new Map,this.participantTrackPermissions=[],this.allParticipantsAllowedToSubscribe=!0,this.encryptionType=G.NONE,this.e2eeStateMutex=new U,this.enabledPublishVideoCodecs=[],this.handleReconnecting=()=>{this.reconnectFuture||(this.reconnectFuture=new Te)},this.handleReconnected=()=>{var d,l;(l=(d=this.reconnectFuture)===null||d===void 0?void 0:d.resolve)===null||l===void 0||l.call(d),this.reconnectFuture=void 0,this.updateTrackSubscriptionPermissions()},this.handleClosing=()=>{var d,l,h,p,m,k;this.reconnectFuture&&(this.reconnectFuture.promise.catch((g=>this.log.warn(g.message))),(l=(d=this.reconnectFuture)===null||d===void 0?void 0:d.reject)===null||l===void 0||l.call(d,new Error("Got disconnected during reconnection attempt")),this.reconnectFuture=void 0),this.signalConnectedFuture&&((p=(h=this.signalConnectedFuture).reject)===null||p===void 0||p.call(h,new Error("Got disconnected without signal connected")),this.signalConnectedFuture=void 0),(k=(m=this.activeAgentFuture)===null||m===void 0?void 0:m.reject)===null||k===void 0||k.call(m,new Error("Got disconnected without active agent present")),this.activeAgentFuture=void 0,this.firstActiveAgent=void 0},this.handleSignalConnected=d=>{var l,h;d.participant&&this.updateInfo(d.participant),this.signalConnectedFuture||(this.signalConnectedFuture=new Te),(h=(l=this.signalConnectedFuture).resolve)===null||h===void 0||h.call(l)},this.handleSignalRequestResponse=d=>{let l=d.requestId,h=d.reason,p=d.message,m=this.pendingSignalRequests.get(l);switch(m&&(h!==Vt.OK&&m.reject(new ks(p,h)),this.pendingSignalRequests.delete(l)),d.request.case){case"publishDataTrack":{let k;switch(d.reason){case Vt.NOT_ALLOWED:k=ge.notAllowed(d.message);break;case Vt.DUPLICATE_NAME:k=ge.duplicateName(d.message);break;case Vt.INVALID_NAME:k=ge.invalidName(d.message);break;case Vt.LIMIT_EXCEEDED:k=ge.limitReached(d.message);break;default:k=ge.unknown(d.reason,d.message)}this.roomOutgoingDataTrackManager.receivedSfuPublishResponse(d.request.value.pubHandle,{type:"error",error:k});break}}},this.updateTrackSubscriptionPermissions=()=>{this.log.debug("updating track subscription permissions",{allParticipantsAllowed:this.allParticipantsAllowedToSubscribe,participantTrackPermissions:this.participantTrackPermissions}),this.engine.client.sendUpdateSubscriptionPermissions(this.allParticipantsAllowedToSubscribe,this.participantTrackPermissions.map((d=>(function(l){var h,p,m;if(!l.participantSid&&!l.participantIdentity)throw new Error("Invalid track permission, must provide at least one of participantIdentity and participantSid");return new Jo({participantIdentity:(h=l.participantIdentity)!==null&&h!==void 0?h:"",participantSid:(p=l.participantSid)!==null&&p!==void 0?p:"",allTracks:(m=l.allowAll)!==null&&m!==void 0&&m,trackSids:l.allowedTrackSids||[]})})(d))))},this.onTrackUnmuted=d=>{this.onTrackMuted(d,d.isUpstreamPaused)},this.onTrackMuted=(d,l)=>{l===void 0&&(l=!0),d.sid?this.engine.updateMuteStatus(d.sid,l):this.log.error("could not update mute status for unpublished track",W(d))},this.onTrackUpstreamPaused=d=>{this.log.debug("upstream paused",W(d)),this.onTrackMuted(d,!0)},this.onTrackUpstreamResumed=d=>{this.log.debug("upstream resumed",W(d)),this.onTrackMuted(d,d.isMuted)},this.onTrackFeatureUpdate=d=>{let l=this.audioTrackPublications.get(d.sid);l?this.engine.client.sendUpdateLocalAudioTrack(l.trackSid,l.getTrackFeatures()):this.log.warn("Could not update local audio track settings, missing publication for track ".concat(d.sid))},this.onTrackCpuConstrained=(d,l)=>{this.log.debug("track cpu constrained",W(l)),this.emit(u.ParticipantEvent.LocalTrackCpuConstrained,d,l)},this.handleSubscribedQualityUpdate=d=>f(this,void 0,void 0,(function*(){var l,h,p,m,k;if(!(!((k=this.roomOptions)===null||k===void 0)&&k.dynacast))return;let g=this.videoTrackPublications.get(d.trackSid);if(!g)return void this.log.warn("received subscribed quality update for unknown track",{trackSid:d.trackSid});if(!g.videoTrack)return;let v=yield g.videoTrack.setPublishingCodecs(d.subscribedCodecs);try{for(var b,T=!0,E=Ge(v);!(l=(b=yield E.next()).done);T=!0){m=b.value,T=!1;let S=m;Zc(S)&&(this.log.debug("publish ".concat(S," for ").concat(g.videoTrack.sid),W(g)),yield this.publishAdditionalCodecForTrack(g.videoTrack,S,g.options))}}catch(S){h={error:S}}finally{try{T||l||!(p=E.return)||(yield p.call(E))}finally{if(h)throw h.error}}})),this.handleLocalTrackUnpublished=d=>{let l=this.trackPublications.get(d.trackSid);l?this.unpublishTrack(l.track):this.log.warn("received unpublished event for unknown track",{trackSid:d.trackSid})},this.handleTrackEnded=d=>f(this,void 0,void 0,(function*(){if(d.source===R.Source.ScreenShare||d.source===R.Source.ScreenShareAudio)this.log.debug("unpublishing local track due to TrackEnded",W(d)),this.unpublishTrack(d);else if(d.isUserProvided)yield d.mute();else if(Pt(d)||pt(d))try{if(Fe())try{let l=yield navigator?.permissions.query({name:d.source===R.Source.Camera?"camera":"microphone"});if(l&&l.state==="denied")throw this.log.warn("user has revoked access to ".concat(d.source),W(d)),l.onchange=()=>{l.state!=="denied"&&(d.isMuted||d.restartTrack(),l.onchange=null)},new Error("GetUserMedia Permission denied")}catch{}d.isMuted||(this.log.debug("track ended, attempting to use a different device",W(d)),Pt(d)?yield d.restartTrack({deviceId:"default"}):yield d.restartTrack())}catch{this.log.warn("could not restart track, muting instead",W(d)),yield d.mute()}})),this.audioTrackPublications=new Map,this.videoTrackPublications=new Map,this.trackPublications=new Map,this.engine=n,this.roomOptions=r,this.setupEngine(n),this.activeDeviceMap=new Map([["audioinput","default"],["videoinput","default"],["audiooutput","default"]]),this.pendingSignalRequests=new Map,this.roomOutgoingDataStreamManager=s,this.roomOutgoingDataTrackManager=a,this.rpcClientManager=o,this.rpcServerManager=c}get lastCameraError(){return this.cameraError}get lastMicrophoneError(){return this.microphoneError}get isE2EEEnabled(){return this.encryptionType!==G.NONE}getTrackPublication(e){let t=super.getTrackPublication(e);if(t)return t}getTrackPublicationByName(e){let t=super.getTrackPublicationByName(e);if(t)return t}setupEngine(e){var t;this.engine=e,this.engine.on(u.EngineEvent.RemoteMute,((n,r)=>{let s=this.trackPublications.get(n);s&&s.track&&(r?s.mute():s.unmute())})),!((t=this.signalConnectedFuture)===null||t===void 0)&&t.isResolved&&(this.signalConnectedFuture=void 0),this.engine.on(u.EngineEvent.Connected,this.handleReconnected).on(u.EngineEvent.SignalConnected,this.handleSignalConnected).on(u.EngineEvent.SignalRestarted,this.handleReconnected).on(u.EngineEvent.SignalResumed,this.handleReconnected).on(u.EngineEvent.Restarting,this.handleReconnecting).on(u.EngineEvent.Resuming,this.handleReconnecting).on(u.EngineEvent.LocalTrackUnpublished,this.handleLocalTrackUnpublished).on(u.EngineEvent.SubscribedQualityUpdate,this.handleSubscribedQualityUpdate).on(u.EngineEvent.Closing,this.handleClosing).on(u.EngineEvent.SignalRequestResponse,this.handleSignalRequestResponse)}setMetadata(e){return f(this,void 0,void 0,(function*(){yield this.requestMetadataUpdate({metadata:e})}))}setName(e){return f(this,void 0,void 0,(function*(){yield this.requestMetadataUpdate({name:e})}))}setAttributes(e){return f(this,void 0,void 0,(function*(){yield this.requestMetadataUpdate({attributes:e})}))}requestMetadataUpdate(e){return f(this,arguments,void 0,(function(t){var n=this;let r=t.metadata,s=t.name,a=t.attributes;return(function*(){return new Ie(((o,c)=>f(n,void 0,void 0,(function*(){var d,l;try{let h=!1,p=yield this.engine.client.sendUpdateLocalMetadata((d=r??this.metadata)!==null&&d!==void 0?d:"",(l=s??this.name)!==null&&l!==void 0?l:"",a),m=performance.now();for(this.pendingSignalRequests.set(p,{resolve:o,reject:k=>{c(k),h=!0},values:{name:s,metadata:r,attributes:a}});performance.now()-m<5e3&&!h;){if((!s||this.name===s)&&(!r||this.metadata===r)&&(!a||Object.entries(a).every((k=>{let g=D(k,2),v=g[0],b=g[1];return this.attributes[v]===b||b===""&&!this.attributes[v]}))))return this.pendingSignalRequests.delete(p),void o();yield we(50)}c(new ks("Request to update local metadata timed out","TimeoutError"))}catch(h){h instanceof Error?c(h):c(new Error(String(h)))}}))))})()}))}setCameraEnabled(e,t,n){return this.setTrackEnabled(R.Source.Camera,e,t,n)}setMicrophoneEnabled(e,t,n){return this.setTrackEnabled(R.Source.Microphone,e,t,n)}setScreenShareEnabled(e,t,n){return this.setTrackEnabled(R.Source.ScreenShare,e,t,n)}setE2EEEnabled(e){return f(this,void 0,void 0,(function*(){let t=yield this.e2eeStateMutex.lock();try{if(this.encryptionType=e?G.GCM:G.NONE,yield Promise.all(this.pendingPublishPromises.values()),this.trackPublications.size===0||Array.from(this.trackPublications.values()).every((n=>n.isEncrypted===e)))return;yield this.republishAllTracks(void 0,!1)}finally{t()}}))}setTrackEnabled(e,t,n,r){return f(this,void 0,void 0,(function*(){var s,a;this.log.debug("setTrackEnabled",{source:e,enabled:t}),this.republishPromise&&(yield this.republishPromise);let o=this.getTrackPublication(e);if(t)if(o)yield o.unmute();else{let c;if(this.pendingPublishing.has(e)){let d=yield this.waitForPendingPublicationOfSource(e);return d||this.log.info("waiting for pending publication promise timed out",{source:e}),yield d?.unmute(),d}this.pendingPublishing.add(e);try{switch(e){case R.Source.Camera:c=yield this.createTracks({video:(s=n)===null||s===void 0||s});break;case R.Source.Microphone:c=yield this.createTracks({audio:(a=n)===null||a===void 0||a});break;case R.Source.ScreenShare:c=yield this.createScreenTracks(Object.assign({},n));break;default:throw new et(e)}}catch(d){throw c?.forEach((l=>{l.stop()})),d instanceof Error&&this.emit(u.ParticipantEvent.MediaDevicesError,d,Ps(e)),this.pendingPublishing.delete(e),d}for(let d of c){let l=Object.assign(Object.assign({},this.roomOptions.publishDefaults),n);e===R.Source.Microphone&&it(d)&&l.preConnectBuffer&&(this.log.info("starting preconnect buffer for microphone"),d.startPreConnectBuffer())}try{let d=[];for(let l of c)this.log.info("publishing track",W(l)),d.push(this.publishTrack(l,r));o=D(yield Promise.all(d),1)[0]}catch(d){throw c?.forEach((l=>{l.stop()})),d}finally{this.pendingPublishing.delete(e)}}else if(!o?.track&&this.pendingPublishing.has(e)&&(o=yield this.waitForPendingPublicationOfSource(e),o||this.log.info("waiting for pending publication promise timed out",{source:e})),o&&o.track)if(e===R.Source.ScreenShare){let c=[this.unpublishTrack(o.track)],d=this.getTrackPublication(R.Source.ScreenShareAudio);d&&d.track&&c.push(this.unpublishTrack(d.track)),o=D(yield Promise.all(c),1)[0]}else yield o.mute();return o}))}enableCameraAndMicrophone(){return f(this,void 0,void 0,(function*(){if(!this.pendingPublishing.has(R.Source.Camera)&&!this.pendingPublishing.has(R.Source.Microphone)){this.pendingPublishing.add(R.Source.Camera),this.pendingPublishing.add(R.Source.Microphone);try{let e=yield this.createTracks({audio:!0,video:!0});yield Promise.all(e.map((t=>this.publishTrack(t))))}finally{this.pendingPublishing.delete(R.Source.Camera),this.pendingPublishing.delete(R.Source.Microphone)}}}))}createTracks(e){return f(this,void 0,void 0,(function*(){var t,n;e!=null||(e={});let r=ed(e,(t=this.roomOptions)===null||t===void 0?void 0:t.audioCaptureDefaults,(n=this.roomOptions)===null||n===void 0?void 0:n.videoCaptureDefaults);try{return(yield mi(r,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext})).map((a=>(it(a)&&(this.microphoneError=void 0,a.setAudioContext(this.audioContext),a.source=R.Source.Microphone,this.emit(u.ParticipantEvent.AudioStreamAcquired)),ht(a)&&(this.cameraError=void 0,a.source=R.Source.Camera),a)))}catch(s){throw s instanceof Error&&(e.audio&&(this.microphoneError=s),e.video&&(this.cameraError=s)),s}}))}createScreenTracks(e){return f(this,void 0,void 0,(function*(){if(e===void 0&&(e={}),navigator.mediaDevices.getDisplayMedia===void 0)throw new zn("getDisplayMedia not supported");e.resolution!==void 0||ld()||(e.resolution=Gn.h1080fps30.resolution);let t=nd(e),n=yield navigator.mediaDevices.getDisplayMedia(t),r=n.getVideoTracks();if(r.length===0)throw new et("no video track found");let s=new Mn(r[0],void 0,!1,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});s.source=R.Source.ScreenShare,e.contentHint&&(s.mediaStreamTrack.contentHint=e.contentHint);let a=[s];if(n.getAudioTracks().length>0){this.emit(u.ParticipantEvent.AudioStreamAcquired);let o=new In(n.getAudioTracks()[0],void 0,!1,this.audioContext,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});o.source=R.Source.ScreenShareAudio,a.push(o)}return a}))}publishTrack(e,t){return f(this,void 0,void 0,(function*(){return this.publishOrRepublishTrack(e,t)}))}waitForNextEngineRestart(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:15e3;return new Promise(((t,n)=>{let r=()=>{clearTimeout(o),this.engine.off(u.EngineEvent.Restarted,s),this.engine.off(u.EngineEvent.Closing,a)},s=()=>{r(),t()},a=()=>{r(),n(new Error("engine closed before restart completed"))},o=setTimeout((()=>{r(),n(new Error("timed out waiting for engine restart"))}),e);this.engine.once(u.EngineEvent.Restarted,s),this.engine.once(u.EngineEvent.Closing,a)}))}publishOrRepublishTrack(e,t){return f(this,arguments,void 0,(function(n,r){var s=this;let a=arguments.length>2&&arguments[2]!==void 0&&arguments[2],o=arguments.length>3&&arguments[3]!==void 0&&arguments[3];return(function*(){var c,d,l,h;let p,m;if(Pt(n)&&n.setAudioContext(s.audioContext),yield(c=s.reconnectFuture)===null||c===void 0?void 0:c.promise,s.republishPromise&&!a&&(yield s.republishPromise),xt(n)&&s.pendingPublishPromises.has(n)&&(yield s.pendingPublishPromises.get(n)),n instanceof MediaStreamTrack)p=n.getConstraints();else{let T;switch(p=n.constraints,n.source){case R.Source.Microphone:T="audioinput";break;case R.Source.Camera:T="videoinput"}T&&s.activeDeviceMap.has(T)&&(p=Object.assign(Object.assign({},p),{deviceId:s.activeDeviceMap.get(T)}))}if(n instanceof MediaStreamTrack)switch(n.kind){case"audio":n=new In(n,p,!0,s.audioContext,{loggerName:s.roomOptions.loggerName,loggerContextCb:()=>s.logContext});break;case"video":n=new Mn(n,p,!0,{loggerName:s.roomOptions.loggerName,loggerContextCb:()=>s.logContext});break;default:throw new et("unsupported MediaStreamTrack kind ".concat(n.kind))}else n.updateLoggerOptions({loggerName:s.roomOptions.loggerName,loggerContextCb:()=>s.logContext});if(s.trackPublications.forEach((T=>{T.track&&T.track===n&&(m=T)})),m)return s.log.warn("track has already been published, skipping",W(m)),m;let k=Object.assign(Object.assign({},s.roomOptions.publishDefaults),r),g="channelCount"in n.mediaStreamTrack.getSettings()&&n.mediaStreamTrack.getSettings().channelCount===2||n.mediaStreamTrack.getConstraints().channelCount===2,v=(d=k.forceStereo)!==null&&d!==void 0?d:g;v&&(k.dtx===void 0&&s.log.debug("Opus DTX will be disabled for stereo tracks by default. Enable them explicitly to make it work.",W(n)),k.red===void 0&&s.log.debug("Opus RED will be disabled for stereo tracks by default. Enable them explicitly to make it work."),(l=k.dtx)!==null&&l!==void 0||(k.dtx=!1),(h=k.red)!==null&&h!==void 0||(k.red=!1)),!(function(){let T=be(),E="17.2";if(T)return T.name!=="Safari"&&T.os!=="iOS"||!!(T.os==="iOS"&&T.osVersion&&Qe(T.osVersion,E)>=0)||T.name==="Safari"&&Qe(T.version,E)>=0})()&&s.roomOptions.e2ee&&(s.log.info("End-to-end encryption is set up, simulcast publishing will be disabled on Safari versions and iOS browsers running iOS < v17.2"),k.simulcast=!1),k.source&&(n.source=k.source);let b=new Promise(((T,E)=>f(s,void 0,void 0,(function*(){try{if(this.engine.client.currentState!==Me.CONNECTED){this.log.debug("deferring track publication until signal is connected",{track:W(n)});let S=!1,C=setTimeout((()=>{S=!0,n.stop(),E(new vs("publishing rejected as engine not connected within timeout",408))}),15e3);if(yield this.waitUntilEngineConnected(),clearTimeout(C),S)return;let I=yield this.publish(n,k,v);T(I)}else try{let S=yield this.publish(n,k,v);T(S)}catch(S){E(S)}}catch(S){E(S)}}))));s.pendingPublishPromises.set(n,b);try{return yield b}catch(T){if(!o&&T instanceof wt)return s.log.warn("negotiation due to track publish failed, retrying after reconnect",{error:T}),s.pendingPublishPromises.delete(n),yield s.waitForNextEngineRestart(),yield s.publishOrRepublishTrack(n,r,a,!0);throw T}finally{s.pendingPublishPromises.delete(n)}})()}))}waitUntilEngineConnected(){return this.signalConnectedFuture||(this.signalConnectedFuture=new Te),this.signalConnectedFuture.promise}hasPermissionsToPublish(e){if(!this.permissions)return this.log.warn("no permissions present for publishing track",W(e)),!1;let t=this.permissions,n=t.canPublish,r=t.canPublishSources;return!(!n||r.length!==0&&!r.map((s=>(function(a){switch(a){case ue.CAMERA:return R.Source.Camera;case ue.MICROPHONE:return R.Source.Microphone;case ue.SCREEN_SHARE:return R.Source.ScreenShare;case ue.SCREEN_SHARE_AUDIO:return R.Source.ScreenShareAudio;default:return R.Source.Unknown}})(s))).includes(e.source))||(this.log.warn("insufficient permissions to publish",W(e)),!1)}publish(e,t,n){return f(this,void 0,void 0,(function*(){var r,s,a,o,c,d,l,h,p,m,k;if(!this.hasPermissionsToPublish(e))throw new vs("failed to publish track, insufficient permissions",403);Array.from(this.trackPublications.values()).find((F=>xt(e)&&F.source===e.source))&&e.source!==R.Source.Unknown&&this.log.info("publishing a second track with the same source: ".concat(e.source),W(e)),t.stopMicTrackOnMute&&it(e)&&(e.stopOnMute=!0),e.source===R.Source.ScreenShare&&Gt()&&(t.simulcast=!1),t.videoCodec!=="av1"||ad()||(t.videoCodec=void 0),t.videoCodec!=="vp9"||od()||(t.videoCodec=void 0),t.videoCodec===void 0&&(t.videoCodec=ia),this.enabledPublishVideoCodecs.length>0&&(this.enabledPublishVideoCodecs.some((F=>t.videoCodec===Jn(F.mime)))||(t.videoCodec=Jn(this.enabledPublishVideoCodecs[0].mime)));let g=t.videoCodec;e.on(u.TrackEvent.Muted,this.onTrackMuted),e.on(u.TrackEvent.Unmuted,this.onTrackUnmuted),e.on(u.TrackEvent.Ended,this.handleTrackEnded),e.on(u.TrackEvent.UpstreamPaused,this.onTrackUpstreamPaused),e.on(u.TrackEvent.UpstreamResumed,this.onTrackUpstreamResumed),e.on(u.TrackEvent.AudioTrackFeatureUpdate,this.onTrackFeatureUpdate);let v=[],b=!((r=t.dtx)===null||r===void 0||r),T=e.getSourceTrackSettings();T.autoGainControl&&v.push(ve.TF_AUTO_GAIN_CONTROL),T.echoCancellation&&v.push(ve.TF_ECHO_CANCELLATION),T.noiseSuppression&&v.push(ve.TF_NOISE_SUPPRESSION),T.channelCount&&T.channelCount>1&&v.push(ve.TF_STEREO),b&&v.push(ve.TF_NO_DTX),Pt(e)&&e.hasPreConnectBuffer&&v.push(ve.TF_PRECONNECT_BUFFER);let E=this.normalizeRequestedFrameMetadataOptions(e,t),S=new Vn({cid:e.mediaStreamTrack.id,name:t.name,type:R.kindToProto(e.kind),muted:e.isMuted,source:R.sourceToProto(e.source),disableDtx:b,encryption:this.encryptionType,stereo:n,disableRed:this.isE2EEEnabled||!((s=t.red)===null||s===void 0||s),stream:t?.stream,backupCodecPolicy:t?.backupCodecPolicy,audioFeatures:v,packetTrailerFeatures:E}),C;if(e.kind===R.Kind.Video){let F;try{F=yield e.waitForDimensions()}catch{let x=(o=(a=this.roomOptions.videoCaptureDefaults)===null||a===void 0?void 0:a.resolution)!==null&&o!==void 0?o:fn.h720.resolution;F={width:x.width,height:x.height},this.log.error("could not determine track dimensions, using defaults",Object.assign(Object.assign({},W(e)),{dims:F}))}if(S.width=F.width,S.height=F.height,pt(e)){!yn(g,t)||!cd()&&(I=(c=this.engine)===null||c===void 0?void 0:c.serverVersion)&&Qe(I,"1.13.6")>0||(t.simulcast=!1,this.log.info("SVC simulcast is not supported, disabling simulcast.",W(e)));let ee=yn(g,t);Rt(g)&&!ee&&(e.source===R.Source.ScreenShare&&(t.scalabilityMode="L1T3","contentHint"in e.mediaStreamTrack&&(e.mediaStreamTrack.contentHint="motion",this.log.debug("forcing contentHint to motion for screenshare with SVC codecs",W(e)))),t.scalabilityMode=(d=t.scalabilityMode)!==null&&d!==void 0?d:"L3T3_KEY");let x=new Gr({codec:g,cid:e.mediaStreamTrack.id});ee&&(x.videoLayerMode=Fr.ONE_SPATIAL_LAYER_PER_STREAM),S.simulcastCodecs=[x],t.backupCodec===!0&&(t.backupCodec={codec:ia}),t.backupCodec&&g!==t.backupCodec.codec&&S.encryption===G.NONE&&(this.roomOptions.dynacast||(this.roomOptions.dynacast=!0),S.simulcastCodecs.push(new Gr({codec:t.backupCodec.codec,cid:""})))}C=dr(e.source===R.Source.ScreenShare,S.width,S.height,t),S.layers=dl(S.width,S.height,C,Rt(t.videoCodec)&&!yn(t.videoCodec,t))}else e.kind===R.Kind.Audio&&(C=[{maxBitrate:(l=t.audioPreset)===null||l===void 0?void 0:l.maxBitrate,priority:(p=(h=t.audioPreset)===null||h===void 0?void 0:h.priority)!==null&&p!==void 0?p:"high",networkPriority:(k=(m=t.audioPreset)===null||m===void 0?void 0:m.priority)!==null&&k!==void 0?k:"high"}]);var I;if(!this.engine||this.engine.isClosed)throw new ie("cannot publish track when not connected");let O=()=>f(this,void 0,void 0,(function*(){var F,ee;if(!this.engine.pcManager)throw new ie("pcManager is not ready");if(e.sender=yield this.engine.createSender(e,t,C),pt(e)&&(e.publishOptions=t),this.emit(u.ParticipantEvent.LocalSenderCreated,e.sender,e),pt(e)&&((F=t.degradationPreference)!==null&&F!==void 0||(t.degradationPreference=(function(x){switch(x.source){case R.Source.Camera:return"maintain-framerate";case R.Source.ScreenShare:return"maintain-resolution";default:return"balanced"}})(e)),e.setDegradationPreference(t.degradationPreference)),C){if(Gt()&&e.kind===R.Kind.Audio){let x;for(let ne of this.engine.pcManager.publisher.getTransceivers())if(ne.sender===e.sender){x=ne;break}x&&this.engine.pcManager.publisher.setTrackCodecBitrate({transceiver:x,codec:"opus",maxbr:!((ee=C[0])===null||ee===void 0)&&ee.maxBitrate?C[0].maxBitrate/1e3:0})}else if(e.codec&&Ns(e.codec)){let x=(function(ne,se,je){var ce,qe;return Rt(ne)&&!yn(ne,se)?(qe=(ce=je[0])===null||ce===void 0?void 0:ce.maxBitrate)!==null&&qe!==void 0?qe:0:je.reduce(((Dt,te)=>{var Oe;return Dt+((Oe=te.maxBitrate)!==null&&Oe!==void 0?Oe:0)}),0)})(e.codec,t,C);x>0&&this.engine.pcManager.publisher.setTrackCodecBitrate({cid:S.cid,codec:e.codec,maxbr:x/1e3,isScreenShare:e.source===R.Source.ScreenShare})}}yield this.engine.negotiate()})),N,Z=new Promise(((F,ee)=>f(this,void 0,void 0,(function*(){var x;try{N=yield this.engine.addTrack(S),F(N)}catch(ne){if(e.sender&&(!((x=this.engine.pcManager)===null||x===void 0)&&x.publisher)){try{this.engine.pcManager.publisher.removeTrack(e.sender)}catch(se){this.log.error(se)}yield this.engine.negotiate().catch((se=>{this.log.error("failed to negotiate after removing track due to failed add track request",Object.assign(Object.assign({},W(e)),{error:se}))}))}ee(ne)}}))));if(this.enabledPublishVideoCodecs.length>0&&E.length===0)N=(yield Promise.all([Z,O()]))[0];else{let F;if(N=yield Z,N.codecs.forEach((ee=>{F===void 0&&(F=ee.mimeType)})),F&&e.kind===R.Kind.Video){let ee=Jn(F);ee!==g&&(this.log.debug("falling back to server selected codec",Object.assign(Object.assign({},W(e)),{codec:ee})),t.videoCodec=ee,C=dr(e.source===R.Source.ScreenShare,S.width,S.height,t))}yield O()}let B=new yr(e.kind,N,e,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});if(B.on(u.TrackEvent.CpuConstrained,(F=>this.onTrackCpuConstrained(F,B))),B.options=t,e.sid=N.sid,pt(e)&&(e.publishOptions=t,S.width&&S.height&&(e.lastEncodedDimensions={width:S.width,height:S.height})),this.log.debug("publishing ".concat(e.kind," with encodings"),{encodings:C,trackInfo:N}),pt(e)?e.startMonitor(this.engine.client):Pt(e)&&e.startMonitor(),this.addTrackPublication(B),this.emit(u.ParticipantEvent.LocalTrackPublished,B),Pt(e)&&N.audioFeatures.includes(ve.TF_PRECONNECT_BUFFER)){let F=e.getPreConnectBuffer(),ee=e.getPreConnectBufferMimeType();this.on(u.ParticipantEvent.LocalTrackSubscribed,(x=>{if(x.trackSid===N.sid){if(!e.hasPreConnectBuffer)return void this.log.warn("subscribe event came to late, buffer already closed");this.log.debug("finished recording preconnect buffer",W(e)),e.stopPreConnectBuffer()}})),F&&new Promise(((ne,se)=>f(this,void 0,void 0,(function*(){var je,ce,qe,Dt,te,Oe;try{this.log.debug("waiting for agent",W(e));let Ia=setTimeout((()=>{se(new Error("agent not active within 10 seconds"))}),1e4),bm=yield this.waitUntilActiveAgentPresent();clearTimeout(Ia),this.log.debug("sending preconnect buffer",W(e));let Ql=yield this.streamBytes({name:"preconnect-buffer",mimeType:ee,topic:"lk.agent.pre-connect-audio-buffer",destinationIdentities:[bm.identity],attributes:{trackId:B.trackSid,sampleRate:String((te=T.sampleRate)!==null&&te!==void 0?te:"48000"),channels:String((Oe=T.channelCount)!==null&&Oe!==void 0?Oe:"1")}});try{for(var br,Ra=!0,Pa=Ge(F);!(je=(br=yield Pa.next()).done);Ra=!0){Dt=br.value,Ra=!1;let Ma=Dt;yield Ql.write(Ma)}}catch(Ma){ce={error:Ma}}finally{try{Ra||je||!(qe=Pa.return)||(yield qe.call(Pa))}finally{if(ce)throw ce.error}}yield Ql.close(),ne()}catch(Ia){se(Ia)}})))).then((()=>{this.log.debug("preconnect buffer sent successfully",W(e))})).catch((ne=>{this.log.error("error sending preconnect buffer",Object.assign(Object.assign({},W(e)),{error:ne}))}))}return B}))}canPublishFrameMetadata(){var e;return!!(this.roomOptions.e2ee||this.roomOptions.encryption||ei((e=this.roomOptions.frameMetadata)!==null&&e!==void 0?e:this.roomOptions.packetTrailer))}normalizeRequestedFrameMetadataOptions(e,t){var n;let r=(n=t.frameMetadata)!==null&&n!==void 0?n:t.packetTrailer;if(e.kind!==R.Kind.Video||!rr(r))return t.frameMetadata=void 0,t.packetTrailer=void 0,[];if(!this.canPublishFrameMetadata())return this.log.warn("frame metadata transform not supported; not advertising features",Object.assign(Object.assign({},this.logContext),W(e))),t.frameMetadata=void 0,t.packetTrailer=void 0,[];let s=(function(o){let c=[];return o?.timestamp&&c.push(on.PTF_USER_TIMESTAMP),o?.frameId&&c.push(on.PTF_FRAME_ID),c})(r),a=(function(o){if(!o||o.length===0)return;let c={};return o.includes(on.PTF_USER_TIMESTAMP)&&(c.timestamp=!0),o.includes(on.PTF_FRAME_ID)&&(c.frameId=!0),c.timestamp||c.frameId?c:void 0})(s);return t.frameMetadata=a,t.packetTrailer=a,s}get isLocal(){return!0}publishAdditionalCodecForTrack(e,t,n){return f(this,void 0,void 0,(function*(){var r;if(this.encryptionType!==G.NONE)return;let s;if(this.trackPublications.forEach((p=>{p.track&&p.track===e&&(s=p)})),!s)throw new et("track is not published");if(!pt(e))throw new et("track is not a video track");let a=Object.assign(Object.assign({},(r=this.roomOptions)===null||r===void 0?void 0:r.publishDefaults),n),o=il(e,t,a);if(!o)return void this.log.info("backup codec has been disabled, ignoring request to add additional codec for track",W(e));let c=e.addSimulcastTrack(t,o);if(!c)return;let d=this.normalizeRequestedFrameMetadataOptions(e,a),l=new Vn({cid:c.mediaStreamTrack.id,type:R.kindToProto(e.kind),muted:e.isMuted,source:R.sourceToProto(e.source),sid:e.sid,packetTrailerFeatures:d,simulcastCodecs:[{codec:a.videoCodec,cid:c.mediaStreamTrack.id}]});if(l.layers=dl(l.width,l.height,o),!this.engine||this.engine.isClosed)throw new ie("cannot publish track when not connected");let h=(yield Promise.all([this.engine.addTrack(l),f(this,void 0,void 0,(function*(){yield this.engine.createSimulcastSender(e,c,a,o),yield this.engine.negotiate()}))]))[0];this.log.debug("published ".concat(t," for track ").concat(e.sid),{encodings:o,trackInfo:h})}))}unpublishTrack(e,t){return f(this,void 0,void 0,(function*(){var n,r;if(xt(e)){let d=this.pendingPublishPromises.get(e);d&&(this.log.debug("awaiting publish promise before attempting to unpublish",W(e)),yield d)}let s=this.getPublicationForTrack(e),a=s?W(s):void 0;if(this.log.info("unpublishing track",a),!s||!s.track)return void this.log.warn("track was not unpublished because no publication was found",a);(e=s.track).off(u.TrackEvent.Muted,this.onTrackMuted),e.off(u.TrackEvent.Unmuted,this.onTrackUnmuted),e.off(u.TrackEvent.Ended,this.handleTrackEnded),e.off(u.TrackEvent.UpstreamPaused,this.onTrackUpstreamPaused),e.off(u.TrackEvent.UpstreamResumed,this.onTrackUpstreamResumed),e.off(u.TrackEvent.AudioTrackFeatureUpdate,this.onTrackFeatureUpdate),t===void 0&&(t=(r=(n=this.roomOptions)===null||n===void 0?void 0:n.stopLocalTrackOnUnpublish)===null||r===void 0||r),t?e.stop():e.stopMonitor();let o=!1,c=e.sender;if(e.sender=void 0,this.engine.pcManager&&this.engine.pcManager.currentState<re.FAILED&&c)try{for(let d of this.engine.pcManager.publisher.getTransceivers())d.sender===c&&(d.direction="inactive",o=!0);try{o=this.engine.removeTrack(c)}catch(d){this.log.warn(d),o=!0}if(pt(e)){for(let d of e.simulcastCodecs){let l=D(d,2)[1];if(l.sender){try{o=this.engine.removeTrack(l.sender)}catch(h){this.log.warn(h),o=!0}l.sender=void 0}}e.simulcastCodecs.clear()}}catch(d){this.log.warn("failed to unpublish track",Object.assign(Object.assign({},a),{error:d}))}switch(this.trackPublications.delete(s.trackSid),s.kind){case R.Kind.Audio:this.audioTrackPublications.delete(s.trackSid);break;case R.Kind.Video:this.videoTrackPublications.delete(s.trackSid)}return this.emit(u.ParticipantEvent.LocalTrackUnpublished,s),s.setTrack(void 0),o&&(yield this.engine.negotiate()),s}))}unpublishTracks(e){return f(this,void 0,void 0,(function*(){return(yield Promise.all(e.map((t=>this.unpublishTrack(t))))).filter((t=>!!t))}))}republishAllTracks(e){return f(this,arguments,void 0,(function(t){var n=this;let r=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];return(function*(){n.republishPromise&&(yield n.republishPromise),n.republishPromise=new Ie(((s,a)=>f(n,void 0,void 0,(function*(){try{let o=[];this.trackPublications.forEach((c=>{c.track&&(t&&(c.options=Object.assign(Object.assign({},c.options),t)),o.push(c))})),yield Promise.all(o.map((c=>f(this,void 0,void 0,(function*(){let d=c.track;yield this.unpublishTrack(d,!1),!r||d.isMuted||d.source===R.Source.ScreenShare||d.source===R.Source.ScreenShareAudio||!Pt(d)&&!pt(d)||d.isUserProvided||(this.log.debug("restarting existing track",{track:c.trackSid}),yield d.restartTrack()),yield this.publishOrRepublishTrack(d,c.options,!0)}))))),s()}catch(o){o instanceof Error?a(o):a(new Error(String(o)))}finally{this.republishPromise=void 0}})))),yield n.republishPromise})()}))}publishData(e){return f(this,arguments,void 0,(function(t){var n=this;let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return(function*(){let s=r.reliable?H.RELIABLE:H.LOSSY,a=r.reliable?St.RELIABLE:St.LOSSY,o=r.destinationIdentities,c=r.topic,d=new Br({participantIdentity:n.identity,payload:t,destinationIdentities:o,topic:c}),l=new Re({kind:a,value:{case:"user",value:d}});yield n.engine.sendDataPacket(l,s)})()}))}publishDtmf(e,t){return f(this,void 0,void 0,(function*(){let n=new Re({kind:St.RELIABLE,value:{case:"sipDtmf",value:new wo({code:e,digit:t})}});yield this.engine.sendDataPacket(n,H.RELIABLE)}))}sendChatMessage(e,t){return f(this,void 0,void 0,(function*(){let n={id:crypto.randomUUID(),message:e,timestamp:Date.now(),attachedFiles:t?.attachments},r=new Re({value:{case:"chatMessage",value:new Mi(Object.assign(Object.assign({},n),{timestamp:ae.parse(n.timestamp)}))}});return yield this.engine.sendDataPacket(r,H.RELIABLE),this.emit(u.ParticipantEvent.ChatMessage,n),n}))}editChatMessage(e,t){return f(this,void 0,void 0,(function*(){let n=Object.assign(Object.assign({},t),{message:e,editTimestamp:Date.now()}),r=new Re({value:{case:"chatMessage",value:new Mi(Object.assign(Object.assign({},n),{timestamp:ae.parse(n.timestamp),editTimestamp:ae.parse(n.editTimestamp)}))}});return yield this.engine.sendDataPacket(r,H.RELIABLE),this.emit(u.ParticipantEvent.ChatMessage,n),n}))}sendText(e,t){return f(this,void 0,void 0,(function*(){return this.roomOutgoingDataStreamManager.sendText(e,t)}))}streamText(e){return f(this,void 0,void 0,(function*(){return this.roomOutgoingDataStreamManager.streamText(e)}))}sendFile(e,t){return f(this,void 0,void 0,(function*(){return this.roomOutgoingDataStreamManager.sendFile(e,t)}))}sendBytes(e,t){return f(this,void 0,void 0,(function*(){return this.roomOutgoingDataStreamManager.sendBytes(e,t)}))}streamBytes(e){return f(this,void 0,void 0,(function*(){return this.roomOutgoingDataStreamManager.streamBytes(e)}))}performRpc(e){return this.rpcClientManager.performRpc(e).then((t=>{let n=D(t,2);return n[0],n[1]}))}registerRpcMethod(e,t){this.rpcServerManager.registerRpcMethod(e,t)}unregisterRpcMethod(e){this.rpcServerManager.unregisterRpcMethod(e)}setTrackSubscriptionPermissions(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];this.participantTrackPermissions=t,this.allParticipantsAllowedToSubscribe=e,this.engine.client.isDisconnected||this.updateTrackSubscriptionPermissions()}setEnabledPublishCodecs(e){this.enabledPublishVideoCodecs=e.filter((t=>t.mime.split("/")[0].toLowerCase()==="video"))}updateInfo(e){return!!super.updateInfo(e)&&(e.tracks.forEach((t=>{var n,r;let s=this.trackPublications.get(t.sid);if(s){let a=s.isMuted||(r=(n=s.track)===null||n===void 0?void 0:n.isUpstreamPaused)!==null&&r!==void 0&&r;a!==t.muted&&(this.log.debug("updating server mute state after reconcile",Object.assign(Object.assign({},W(s)),{mutedOnServer:a})),this.engine.client.sendMuteTrack(t.sid,a))}})),!0)}setActiveAgent(e){var t,n,r,s;this.firstActiveAgent=e,e&&!this.firstActiveAgent&&(this.firstActiveAgent=e),e?(n=(t=this.activeAgentFuture)===null||t===void 0?void 0:t.resolve)===null||n===void 0||n.call(t,e):(s=(r=this.activeAgentFuture)===null||r===void 0?void 0:r.reject)===null||s===void 0||s.call(r,new Error("Agent disconnected")),this.activeAgentFuture=void 0}waitUntilActiveAgentPresent(){return this.firstActiveAgent?Promise.resolve(this.firstActiveAgent):(this.activeAgentFuture||(this.activeAgentFuture=new Te),this.activeAgentFuture.promise)}getPublicationForTrack(e){let t;return this.trackPublications.forEach((n=>{let r=n.track;r&&(e instanceof MediaStreamTrack?(Pt(r)||pt(r))&&r.mediaStreamTrack===e&&(t=n):e===r&&(t=n))})),t}waitForPendingPublicationOfSource(e){return f(this,void 0,void 0,(function*(){let t=Date.now();for(;Date.now()<t+1e4;){let n=Array.from(this.pendingPublishPromises.entries()).find((r=>D(r,1)[0].source===e));if(n)return n[1];yield we(20)}}))}publishDataTrack(e){return f(this,void 0,void 0,(function*(){let t=new pi(e,this.roomOutgoingDataTrackManager);return yield t.publish(),t}))}}class Nl extends DOMException{constructor(e,t){super(e,"AbortError"),this.reason=t}}class Zp extends Map{constructor(){super(...arguments),this.pending=new Map}set(e,t){var n,r;super.set(e,t);let s=(n=this.pending)===null||n===void 0?void 0:n.get(e);if(s){for(let a of s)a.isResolved||(r=a.resolve)===null||r===void 0||r.call(a,t);this.pending.delete(e)}return this}get[Symbol.toStringTag](){return"DeferrableMap"}getDeferred(e,t){return f(this,void 0,void 0,(function*(){let n=this.get(e);if(n!==void 0)return n;if(t?.aborted)throw new Nl("The operation was aborted.",t.reason);let r=new Te(void 0,(()=>{let a=this.pending.get(e);if(!a)return;let o=a.indexOf(r);o!==-1&&a.splice(o,1),a.length===0&&this.pending.delete(e)})),s=this.pending.get(e);if(s?s.push(r):this.pending.set(e,[r]),t){let a=()=>{var o;r.isResolved||(o=r.reject)===null||o===void 0||o.call(r,new Nl("The operation was aborted.",t.reason))};t.addEventListener("abort",a,{once:!0}),r.promise.finally((()=>{t.removeEventListener("abort",a)}))}return r.promise}))}}class xl extends gt{constructor(e,t,n,r){super(e,t.sid,t.name,r),this.track=void 0,this.allowed=!0,this.requestedDisabled=void 0,this.visible=!0,this.handleEnded=s=>{this.setTrack(void 0),this.emit(u.TrackEvent.Ended,s)},this.handleVisibilityChange=s=>{this.log.debug("adaptivestream video visibility ".concat(this.trackSid,", visible=").concat(s),this.logContext),this.visible=s,this.emitTrackUpdate()},this.handleVideoDimensionsChange=s=>{this.log.debug("adaptivestream video dimensions ".concat(s.width,"x").concat(s.height),this.logContext),this.videoDimensionsAdaptiveStream=s,this.emitTrackUpdate()},this.subscribed=n,this.updateInfo(t)}setSubscribed(e){let t=this.subscriptionStatus,n=this.permissionStatus;this.subscribed=e,e&&(this.allowed=!0);let r=new Bi({trackSids:[this.trackSid],subscribe:this.subscribed,participantTracks:[new Po({participantSid:"",trackSids:[this.trackSid]})]});this.emit(u.TrackEvent.UpdateSubscription,r),this.emitSubscriptionUpdateIfChanged(t),this.emitPermissionUpdateIfChanged(n)}get subscriptionStatus(){return this.subscribed===!1?gt.SubscriptionStatus.Unsubscribed:super.isSubscribed?gt.SubscriptionStatus.Subscribed:gt.SubscriptionStatus.Desired}get permissionStatus(){return this.allowed?gt.PermissionStatus.Allowed:gt.PermissionStatus.NotAllowed}get isSubscribed(){return this.subscribed!==!1&&super.isSubscribed}get isDesired(){return this.subscribed!==!1}get isEnabled(){return this.requestedDisabled!==void 0?!this.requestedDisabled:!this.isAdaptiveStream||this.visible}get isLocal(){return!1}setEnabled(e){this.isManualOperationAllowed()&&this.requestedDisabled!==!e&&(this.requestedDisabled=!e,this.emitTrackUpdate())}setVideoQuality(e){this.isManualOperationAllowed()&&this.requestedMaxQuality!==e&&(this.requestedMaxQuality=e,this.requestedVideoDimensions=void 0,this.emitTrackUpdate())}setVideoDimensions(e){var t,n;this.isManualOperationAllowed()&&(((t=this.requestedVideoDimensions)===null||t===void 0?void 0:t.width)===e.width&&((n=this.requestedVideoDimensions)===null||n===void 0?void 0:n.height)===e.height||(xs(this.track)&&(this.requestedVideoDimensions=e),this.requestedMaxQuality=void 0,this.emitTrackUpdate()))}setVideoFPS(e){this.isManualOperationAllowed()&&xs(this.track)&&this.fps!==e&&(this.fps=e,this.emitTrackUpdate())}get videoQuality(){var e;return(e=this.requestedMaxQuality)!==null&&e!==void 0?e:u.VideoQuality.HIGH}setTrack(e){let t=this.subscriptionStatus,n=this.permissionStatus,r=this.track;r!==e&&(r&&(r.off(u.TrackEvent.VideoDimensionsChanged,this.handleVideoDimensionsChange),r.off(u.TrackEvent.VisibilityChanged,this.handleVisibilityChange),r.off(u.TrackEvent.Ended,this.handleEnded),r.detach(),r.stopMonitor(),this.emit(u.TrackEvent.Unsubscribed,r)),super.setTrack(e),e&&(e.sid=this.trackSid,e.on(u.TrackEvent.VideoDimensionsChanged,this.handleVideoDimensionsChange),e.on(u.TrackEvent.VisibilityChanged,this.handleVisibilityChange),e.on(u.TrackEvent.Ended,this.handleEnded),this.emit(u.TrackEvent.Subscribed,e)),this.emitPermissionUpdateIfChanged(n),this.emitSubscriptionUpdateIfChanged(t))}setAllowed(e){let t=this.subscriptionStatus,n=this.permissionStatus;this.allowed=e,this.emitPermissionUpdateIfChanged(n),this.emitSubscriptionUpdateIfChanged(t)}setSubscriptionError(e){this.emit(u.TrackEvent.SubscriptionFailed,e)}updateInfo(e){super.updateInfo(e);let t=this.metadataMuted;this.metadataMuted=e.muted,this.track?this.track.setMuted(e.muted):t!==e.muted&&this.emit(e.muted?u.TrackEvent.Muted:u.TrackEvent.Unmuted)}emitSubscriptionUpdateIfChanged(e){let t=this.subscriptionStatus;e!==t&&this.emit(u.TrackEvent.SubscriptionStatusChanged,t,e)}emitPermissionUpdateIfChanged(e){this.permissionStatus!==e&&this.emit(u.TrackEvent.SubscriptionPermissionChanged,this.permissionStatus,e)}isManualOperationAllowed(){return!!this.isDesired||(this.log.warn("cannot update track settings when not subscribed",this.logContext),!1)}get isAdaptiveStream(){return xs(this.track)&&this.track.isAdaptiveStream}emitTrackUpdate(){let e=new Ho({trackSids:[this.trackSid],disabled:!this.isEnabled,fps:this.fps});if(this.kind===R.Kind.Video){let t=this.requestedVideoDimensions;if(this.videoDimensionsAdaptiveStream!==void 0)if(t)rd(this.videoDimensionsAdaptiveStream,t)&&(this.log.debug("using adaptive stream dimensions instead of requested",Object.assign(Object.assign({},this.logContext),this.videoDimensionsAdaptiveStream)),t=this.videoDimensionsAdaptiveStream);else if(this.requestedMaxQuality!==void 0&&this.trackInfo){let n=(function(r,s){var a;return(a=r.layers)===null||a===void 0?void 0:a.find((o=>o.quality===s))})(this.trackInfo,this.requestedMaxQuality);n&&rd(this.videoDimensionsAdaptiveStream,n)&&(this.log.debug("using adaptive stream dimensions instead of max quality layer",Object.assign(Object.assign({},this.logContext),this.videoDimensionsAdaptiveStream)),t=this.videoDimensionsAdaptiveStream)}else this.log.debug("using adaptive stream dimensions",Object.assign(Object.assign({},this.logContext),this.videoDimensionsAdaptiveStream)),t=this.videoDimensionsAdaptiveStream;t?(e.width=Math.ceil(t.width),e.height=Math.ceil(t.height)):this.requestedMaxQuality!==void 0?(this.log.debug("using requested max quality",Object.assign(Object.assign({},this.logContext),{quality:this.requestedMaxQuality})),e.quality=this.requestedMaxQuality):(this.log.debug("using default quality",Object.assign(Object.assign({},this.logContext),{quality:u.VideoQuality.HIGH})),e.quality=u.VideoQuality.HIGH)}this.emit(u.TrackEvent.UpdateSettings,e)}}class vi extends Sa{static fromParticipantInfo(e,t,n,r){return new vi(e,t.sid,t.identity,t.name,t.metadata,t.attributes,n,t.kind,t.dataTracks.map((s=>{let a=or.from(s);return new fa(a,r,{publisherIdentity:t.identity})})),t.clientProtocol,t.capabilities)}get logContext(){return Object.assign(Object.assign({},super.logContext),{remoteParticipantID:this.sid,remoteParticipant:this.identity})}constructor(e,t,n,r,s,a,o){let c=arguments.length>7&&arguments[7]!==void 0?arguments[7]:dn.STANDARD,d=arguments.length>8&&arguments[8]!==void 0?arguments[8]:[],l=arguments.length>9&&arguments[9]!==void 0?arguments[9]:0,h=arguments.length>10&&arguments[10]!==void 0?arguments[10]:[];super(t,n||"",r,s,a,o,c),this.signalClient=e,this.trackPublications=new Map,this.audioTrackPublications=new Map,this.videoTrackPublications=new Map,this.dataTracks=new Zp(d.map((p=>[p.info.name,p]))),this.volumeMap=new Map,this.clientProtocol=l,this.capabilities=h}addTrackPublication(e){super.addTrackPublication(e),e.on(u.TrackEvent.UpdateSettings,(t=>{this.log.debug("send update settings",Object.assign(Object.assign(Object.assign({},this.logContext),W(e)),{settings:t})),this.signalClient.sendUpdateTrackSettings(t)})),e.on(u.TrackEvent.UpdateSubscription,(t=>{t.participantTracks.forEach((n=>{n.participantSid=this.sid})),this.signalClient.sendUpdateSubscription(t)})),e.on(u.TrackEvent.SubscriptionPermissionChanged,(t=>{this.emit(u.ParticipantEvent.TrackSubscriptionPermissionChanged,e,t)})),e.on(u.TrackEvent.SubscriptionStatusChanged,(t=>{this.emit(u.ParticipantEvent.TrackSubscriptionStatusChanged,e,t)})),e.on(u.TrackEvent.Subscribed,(t=>{this.emit(u.ParticipantEvent.TrackSubscribed,t,e)})),e.on(u.TrackEvent.Unsubscribed,(t=>{this.emit(u.ParticipantEvent.TrackUnsubscribed,t,e)})),e.on(u.TrackEvent.SubscriptionFailed,(t=>{this.emit(u.ParticipantEvent.TrackSubscriptionFailed,e.trackSid,t)}))}getTrackPublication(e){let t=super.getTrackPublication(e);if(t)return t}getTrackPublicationByName(e){let t=super.getTrackPublicationByName(e);if(t)return t}setVolume(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:R.Source.Microphone;this.volumeMap.set(t,e);let n=this.getTrackPublication(t);n&&n.track&&n.track.setVolume(e)}getVolume(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:R.Source.Microphone,t=this.getTrackPublication(e);return t&&t.track?t.track.getVolume():this.volumeMap.get(e)}addSubscribedMediaTrack(e,t,n,r,s,a){let o=this.getTrackPublicationBySid(t);if(o||t.startsWith("TR")||this.trackPublications.forEach((d=>{o||e.kind!==d.kind.toString()||(o=d)})),!o)return a===0?(this.log.error("could not find published track",Object.assign(Object.assign({},this.logContext),{trackSid:t})),void this.emit(u.ParticipantEvent.TrackSubscriptionFailed,t)):(a===void 0&&(a=20),void setTimeout((()=>{this.addSubscribedMediaTrack(e,t,n,r,s,a-1)}),150));if(e.readyState==="ended")return this.log.error("unable to subscribe because MediaStreamTrack is ended. Do not call MediaStreamTrack.stop()",Object.assign(Object.assign({},this.logContext),W(o))),void this.emit(u.ParticipantEvent.TrackSubscriptionFailed,t);let c;return c=e.kind==="video"?new ar(e,t,r,s):new _l(e,t,r,this.audioContext,this.audioOutput),c.source=o.source,c.isMuted=o.isMuted,c.setMediaStream(n),c.start(),o.setTrack(c),this.volumeMap.has(o.source)&&Zi(c)&&it(c)&&c.setVolume(this.volumeMap.get(o.source)),o}get hasMetadata(){return!!this.participantInfo}getTrackPublicationBySid(e){return this.trackPublications.get(e)}updateInfo(e){if(!super.updateInfo(e))return!1;let t=new Map,n=new Map;return e.tracks.forEach((r=>{var s,a;let o=this.getTrackPublicationBySid(r.sid);if(o)o.updateInfo(r);else{let c=R.kindFromProto(r.type);if(!c)return;o=new xl(c,r,(s=this.signalClient.connectOptions)===null||s===void 0?void 0:s.autoSubscribe,{loggerContextCb:()=>this.logContext,loggerName:(a=this.loggerOptions)===null||a===void 0?void 0:a.loggerName}),o.updateInfo(r),n.set(r.sid,o);let d=Array.from(this.trackPublications.values()).find((l=>l.source===o?.source));d&&o.source!==R.Source.Unknown&&this.log.debug("received a second track publication for ".concat(this.identity," with the same source: ").concat(o.source),Object.assign(Object.assign({},this.logContext),{oldTrack:W(d),newTrack:W(o)})),this.addTrackPublication(o)}t.set(r.sid,o)})),this.trackPublications.forEach((r=>{t.has(r.trackSid)||(this.log.trace("detected removed track on remote participant, unpublishing",Object.assign(Object.assign({},this.logContext),W(r))),this.unpublishTrack(r.trackSid,!0))})),n.forEach((r=>{this.emit(u.ParticipantEvent.TrackPublished,r)})),!0}unpublishTrack(e,t){let n=this.trackPublications.get(e);if(!n)return;let r=n.track;switch(r&&(r.stop(),n.setTrack(void 0)),this.trackPublications.delete(e),n.kind){case R.Kind.Audio:this.audioTrackPublications.delete(e);break;case R.Kind.Video:this.videoTrackPublications.delete(e)}t&&this.emit(u.ParticipantEvent.TrackUnpublished,n)}setAudioOutput(e){return f(this,void 0,void 0,(function*(){this.audioOutput=e;let t=[];this.audioTrackPublications.forEach((n=>{var r;it(n.track)&&Zi(n.track)&&t.push(n.track.setSinkId((r=e.deviceId)!==null&&r!==void 0?r:"default"))})),yield Promise.all(t)}))}addRemoteDataTrack(e){this.dataTracks.set(e.info.name,e)}removeRemoteDataTrack(e){for(let n of this.dataTracks.entries()){var t=D(n,2);let r=t[0];e===t[1].info.sid&&this.dataTracks.delete(r)}}emit(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return this.log.trace("participant event",Object.assign(Object.assign({},this.logContext),{event:e,args:n})),super.emit(e,...n)}}u.ConnectionState=void 0,(fi=u.ConnectionState||(u.ConnectionState={})).Disconnected="disconnected",fi.Connecting="connecting",fi.Connected="connected",fi.Reconnecting="reconnecting",fi.SignalReconnecting="signalReconnecting";class On extends Ue.EventEmitter{get hasE2EESetup(){return this.e2eeManager!==void 0}constructor(e){var t,n,r,s,a,o,c,d;if(super(),t=this,this.state=u.ConnectionState.Disconnected,this.activeSpeakers=[],this.isE2EEEnabled=!1,this.audioEnabled=!0,this.e2eeStateMutex=new U,this.isVideoPlaybackBlocked=!1,this.log=V,this.statsLog=V,this.bufferedEvents=[],this.isResuming=!1,this.pendingTrackAddedCallbacks=new Map,this.connect=(l,h,p)=>f(this,void 0,void 0,(function*(){var m;if(!dd())throw tt()?Error("WebRTC isn't detected, have you called registerGlobals?"):Error("LiveKit doesn't seem to be supported on this browser. Try to update your browser and make sure no browser extensions are disabling webRTC.");let k=yield this.disconnectLock.lock();if(this.state===u.ConnectionState.Connected)return this.log.info("already connected to room ".concat(this.name)),k(),Promise.resolve();if(this.connectFuture)return k(),this.connectFuture.promise;this.setAndEmitConnectionState(u.ConnectionState.Connecting),((m=this.regionUrlProvider)===null||m===void 0?void 0:m.getServerUrl().toString())!==bd(l)&&(this.regionUrl=void 0,this.regionUrlProvider=void 0),bn(new URL(l))&&(this.regionUrlProvider===void 0?this.regionUrlProvider=new z(l,h):this.regionUrlProvider.updateToken(h),this.regionUrlProvider.fetchRegionSettings().then((b=>{var T;(T=this.regionUrlProvider)===null||T===void 0||T.setServerReportedRegions(b)})).catch((b=>{this.log.warn("could not fetch region settings",{error:b})})));let g=(b,T,E)=>f(this,void 0,void 0,(function*(){var S,C;this.abortController&&this.abortController.abort();let I=new AbortController;this.abortController=I,k?.();try{if(yield Cn.getInstance().getBackOffPromise(l),I.signal.aborted)throw _.cancelled("Connection attempt aborted");yield this.attemptConnection(E??l,h,p,I),this.abortController=void 0,b()}catch(O){if(this.regionUrlProvider&&O instanceof _&&O.reason!==u.ConnectionErrorReason.Cancelled&&O.reason!==u.ConnectionErrorReason.NotAllowed){let N=null;try{this.log.debug("Fetching next region"),N=yield this.regionUrlProvider.getNextBestRegionUrl((S=this.abortController)===null||S===void 0?void 0:S.signal)}catch(Z){if(Z instanceof _&&(Z.status===401||Z.reason===u.ConnectionErrorReason.Cancelled))return this.handleDisconnect(this.options.stopLocalTrackOnUnpublish),void T(Z)}[u.ConnectionErrorReason.InternalError,u.ConnectionErrorReason.ServerUnreachable,u.ConnectionErrorReason.Timeout].includes(O.reason)&&(this.log.debug("Adding failed connection attempt to back off"),Cn.getInstance().addFailedConnectionAttempt(l)),N&&!(!((C=this.abortController)===null||C===void 0)&&C.signal.aborted)?(this.log.info("Initial connection failed with ConnectionError: ".concat(O.message,". Retrying with another region: ").concat(N)),this.recreateEngine(!0),yield g(b,T,N)):(this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,vd(O)),T(O))}else{let N=xe.UNKNOWN_REASON;O instanceof _&&(N=vd(O)),this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,N),T(O)}}})),v=this.regionUrl;return this.regionUrl=void 0,this.connectFuture=new Te(((b,T)=>{g(b,T,v)}),(()=>{this.clearConnectionFutures()})),this.connectFuture.promise})),this.connectSignal=(l,h,p,m,k,g)=>f(this,void 0,void 0,(function*(){let v=yield p.join(l,h,{autoSubscribe:m.autoSubscribe,adaptiveStream:typeof k.adaptiveStream=="object"||k.adaptiveStream,clientInfoCapabilities:this.getClientInfoCapabilities(k),maxRetries:m.maxRetries,e2eeEnabled:!!this.e2eeManager,websocketTimeout:m.websocketTimeout},g.signal,!k.singlePeerConnection),b=v.joinResponse,T=v.serverInfo;if(this.serverInfo=T,!T.version)throw new Qc("unknown server version");return T.version==="0.15.1"&&this.options.dynacast&&(this.log.debug("disabling dynacast due to server version"),k.dynacast=!1),b})),this.applyJoinResponse=l=>{let h=l.participant;if(this.localParticipant.sid=h.sid,this.localParticipant.identity=h.identity,this.localParticipant.setEnabledPublishCodecs(l.enabledPublishCodecs),this.e2eeManager)try{this.e2eeManager.setSifTrailer(l.sifTrailer)}catch(p){this.log.error(p instanceof Error?p.message:"Could not set SifTrailer",{error:p})}this.handleParticipantUpdates([h,...l.otherParticipants]),l.room&&this.handleRoomUpdate(l.room)},this.attemptConnection=(l,h,p,m)=>f(this,void 0,void 0,(function*(){var k,g;this.state===u.ConnectionState.Reconnecting||this.isResuming||!((k=this.engine)===null||k===void 0)&&k.pendingReconnect?(this.log.info("Reconnection attempt replaced by new connection attempt"),this.recreateEngine(!0)):this.maybeCreateEngine(),!((g=this.regionUrlProvider)===null||g===void 0)&&g.isCloud()&&this.engine.setRegionStrategy(this.createRegionStrategy()),this.acquireAudioContext(),this.connOptions=Object.assign(Object.assign({},ra),p),this.connOptions.rtcConfig&&(this.engine.rtcConfig=this.connOptions.rtcConfig),this.connOptions.peerConnectionTimeout&&(this.engine.peerConnectionTimeout=this.connOptions.peerConnectionTimeout);try{let v=yield this.connectSignal(l,h,this.engine,this.connOptions,this.options,m);this.applyJoinResponse(v),this.setupLocalParticipantEvents(),this.emit(u.RoomEvent.SignalConnected)}catch(v){yield this.engine.close(),this.recreateEngine();let b=m.signal.aborted?_.cancelled("Signal connection aborted"):_.serverUnreachable("could not establish signal connection");throw v instanceof Error&&(b.message="".concat(b.message,": ").concat(v.message)),v instanceof _&&(b.reason=v.reason,b.status=v.status),this.log.debug("error trying to establish signal connection",{error:v}),b}if(m.signal.aborted)throw yield this.engine.close(),this.recreateEngine(),_.cancelled("Connection attempt aborted");try{yield this.engine.waitForPCInitialConnection(this.connOptions.peerConnectionTimeout,m)}catch(v){throw yield this.engine.close(),this.recreateEngine(),v}Fe()&&this.options.disconnectOnPageLeave&&(window.addEventListener("pagehide",this.onPageLeave),window.addEventListener("beforeunload",this.onPageLeave)),Fe()&&window.addEventListener("freeze",this.onPageLeave),this.setAndEmitConnectionState(u.ConnectionState.Connected),this.emit(u.RoomEvent.Connected),Cn.getInstance().resetFailedConnectionAttempts(l),this.registerConnectionReconcile(),this.regionUrlProvider&&this.regionUrlProvider.notifyConnected()})),this.disconnect=function(){for(var l=arguments.length,h=new Array(l),p=0;p<l;p++)h[p]=arguments[p];return f(t,[...h],void 0,(function(){var m=this;let k=!(arguments.length>0&&arguments[0]!==void 0)||arguments[0];return(function*(){var g,v,b;let T=yield m.disconnectLock.lock();try{if(m.state===u.ConnectionState.Disconnected)return void m.log.debug("already disconnected");if(m.log.info("disconnect from room"),m.state===u.ConnectionState.Connecting||m.state===u.ConnectionState.Reconnecting||m.isResuming){let E="Abort connection attempt due to user initiated disconnect";m.log.warn(E),(g=m.abortController)===null||g===void 0||g.abort(E),(b=(v=m.connectFuture)===null||v===void 0?void 0:v.reject)===null||b===void 0||b.call(v,_.cancelled("Client initiated disconnect")),m.connectFuture=void 0}m.engine&&(m.engine.client.isDisconnected||(yield m.engine.client.sendLeave()),yield m.engine.close()),m.handleDisconnect(k,xe.CLIENT_INITIATED),m.engine=void 0}finally{T()}})()}))},this.onPageLeave=()=>f(this,void 0,void 0,(function*(){this.log.info("Page leave detected, disconnecting"),yield this.disconnect()})),this.startAudio=()=>f(this,void 0,void 0,(function*(){let l=[],h=be();if(h&&h.os==="iOS"){let p="livekit-dummy-audio-el",m=document.getElementById(p);if(!m){m=document.createElement("audio"),m.id=p,m.autoplay=!0,m.hidden=!0;let k=$i();k.enabled=!0;let g=new MediaStream([k]);m.srcObject=g,document.addEventListener("visibilitychange",(()=>{m&&(m.srcObject=document.hidden?null:g,document.hidden||(this.log.debug("page visible again, triggering startAudio to resume playback and update playback status"),this.startAudio()))})),document.body.append(m),this.once(u.RoomEvent.Disconnected,(()=>{m?.remove(),m=null}))}l.push(m)}this.remoteParticipants.forEach((p=>{p.audioTrackPublications.forEach((m=>{m.track&&m.track.attachedElements.forEach((k=>{l.push(k)}))}))}));try{yield Promise.all([this.acquireAudioContext(),...l.map((p=>(this.options.webAudioMix||(p.muted=!1),p.play())))]),this.handleAudioPlaybackStarted()}catch(p){throw this.handleAudioPlaybackFailed(p),p}})),this.startVideo=()=>f(this,void 0,void 0,(function*(){let l=[];for(let h of this.remoteParticipants.values())h.videoTrackPublications.forEach((p=>{var m;(m=p.track)===null||m===void 0||m.attachedElements.forEach((k=>{l.includes(k)||l.push(k)}))}));yield Promise.all(l.map((h=>h.play()))).then((()=>{this.handleVideoPlaybackStarted()})).catch((h=>{h.name==="NotAllowedError"?this.handleVideoPlaybackFailed():this.log.warn("Resuming video playback failed, make sure you call `startVideo` directly in a user gesture handler")}))})),this.handleRestarting=()=>{this.clearConnectionReconcile(),this.isResuming=!1;for(let l of this.remoteParticipants.values())this.handleParticipantDisconnected(l.identity,l);this.setAndEmitConnectionState(u.ConnectionState.Reconnecting)&&this.emit(u.RoomEvent.Reconnecting)},this.handleRestarted=()=>{this.outgoingDataTrackManager.sfuWillRepublishTracks(),this.incomingDataTrackManager.resendSubscriptionUpdates()},this.handleSignalRestarted=l=>f(this,void 0,void 0,(function*(){this.log.debug("signal reconnected to server, region ".concat(l.serverRegion),{region:l.serverRegion}),this.bufferedEvents=[],this.applyJoinResponse(l);try{yield this.localParticipant.republishAllTracks(void 0,!0)}catch(h){this.log.error("error trying to re-publish tracks after reconnection",{error:h})}try{yield this.engine.waitForRestarted(),this.log.debug("fully reconnected to server",{region:l.serverRegion})}catch{return}this.setAndEmitConnectionState(u.ConnectionState.Connected),this.emit(u.RoomEvent.Reconnected),this.registerConnectionReconcile(),this.emitBufferedEvents()})),this.handleParticipantUpdates=l=>{var h;for(let m of l){if(m.identity===this.localParticipant.identity){this.localParticipant.updateInfo(m);continue}m.identity===""&&(m.identity=(h=this.sidToIdentity.get(m.sid))!==null&&h!==void 0?h:"");let k=this.remoteParticipants.get(m.identity);m.state===cn.DISCONNECTED?this.handleParticipantDisconnected(m.identity,k,m.disconnectReason===xe.UNKNOWN_REASON?void 0:m.disconnectReason):this.getOrCreateParticipant(m.identity,m)}let p=new Map(l.filter((m=>m.identity!==this.localParticipant.identity)).map((m=>[m.identity,m.dataTracks.map((k=>or.from(k)))])));this.incomingDataTrackManager.receiveSfuPublicationUpdates(p)},this.handleActiveSpeakersUpdate=l=>{let h=[],p={};l.forEach((m=>{if(p[m.sid]=!0,m.sid===this.localParticipant.sid)this.localParticipant.audioLevel=m.level,this.localParticipant.setIsSpeaking(!0),h.push(this.localParticipant);else{let k=this.getRemoteParticipantBySid(m.sid);k&&(k.audioLevel=m.level,k.setIsSpeaking(!0),h.push(k))}})),p[this.localParticipant.sid]||(this.localParticipant.audioLevel=0,this.localParticipant.setIsSpeaking(!1)),this.remoteParticipants.forEach((m=>{p[m.sid]||(m.audioLevel=0,m.setIsSpeaking(!1))})),this.activeSpeakers=h,this.emitWhenConnected(u.RoomEvent.ActiveSpeakersChanged,h)},this.handleSpeakersChanged=l=>{let h=new Map;this.activeSpeakers.forEach((m=>{let k=this.remoteParticipants.get(m.identity);k&&k.sid!==m.sid||h.set(m.sid,m)})),l.forEach((m=>{let k=this.getRemoteParticipantBySid(m.sid);m.sid===this.localParticipant.sid&&(k=this.localParticipant),k&&(k.audioLevel=m.level,k.setIsSpeaking(m.active),m.active?h.set(m.sid,k):h.delete(m.sid))}));let p=Array.from(h.values());p.sort(((m,k)=>k.audioLevel-m.audioLevel)),this.activeSpeakers=p,this.emitWhenConnected(u.RoomEvent.ActiveSpeakersChanged,p)},this.handleStreamStateUpdate=l=>{l.streamStates.forEach((h=>{let p=this.getRemoteParticipantBySid(h.participantSid);if(!p)return;let m=p.getTrackPublicationBySid(h.trackSid);if(!m||!m.track)return;let k=R.streamStateFromProto(h.state),g=m.track.streamState;m.track.setStreamState(k),k!==g&&(p.emit(u.ParticipantEvent.TrackStreamStateChanged,m,m.track.streamState),this.emitWhenConnected(u.RoomEvent.TrackStreamStateChanged,m,m.track.streamState,p))}))},this.handleSubscriptionPermissionUpdate=l=>{let h=this.getRemoteParticipantBySid(l.participantSid);if(!h)return;let p=h.getTrackPublicationBySid(l.trackSid);p&&p.setAllowed(l.allowed)},this.handleSubscriptionError=l=>{this.cancelPendingTrackAdded(l.trackSid);let h=Array.from(this.remoteParticipants.values()).find((m=>m.trackPublications.has(l.trackSid)));if(!h)return;let p=h.getTrackPublicationBySid(l.trackSid);p&&p.setSubscriptionError(l.err)},this.handleDataPacket=(l,h)=>{let p=this.remoteParticipants.get(l.participantIdentity);if(l.value.case==="user")this.handleUserPacket(p,l.value.value,l.kind,h);else if(l.value.case==="transcription")this.handleTranscription(p,l.value.value);else if(l.value.case==="sipDtmf")this.handleSipDtmf(p,l.value.value);else if(l.value.case==="chatMessage")this.handleChatMessage(p,l.value.value);else if(l.value.case==="metrics")this.handleMetrics(l.value.value,p);else if(l.value.case==="streamHeader"||l.value.case==="streamChunk"||l.value.case==="streamTrailer")this.handleDataStream(l,h);else if(l.value.case==="rpcRequest"){let m=l.value.value;this.rpcServerManager.handleIncomingRpcRequest(l.participantIdentity,m)}else if(l.value.case==="rpcResponse"){let m=l.value.value;switch(m.value.case){case"payload":this.rpcClientManager.handleIncomingRpcResponseSuccess(m.requestId,m.value.value);break;case"error":this.rpcClientManager.handleIncomingRpcResponseFailure(m.requestId,Y.fromProto(m.value.value));break;default:this.log.warn("Unknown rpcResponse.value.case: ".concat(m.value.case),this.logContext)}}else l.value.case==="rpcAck"&&this.rpcClientManager.handleIncomingRpcAck(l.value.value.requestId)},this.handleUserPacket=(l,h,p,m)=>{this.emit(u.RoomEvent.DataReceived,h.payload,l,p,h.topic,m),l?.emit(u.ParticipantEvent.DataReceived,h.payload,p,m)},this.handleSipDtmf=(l,h)=>{this.emit(u.RoomEvent.SipDTMFReceived,h,l),l?.emit(u.ParticipantEvent.SipDTMFReceived,h)},this.handleTranscription=(l,h)=>{let p=h.transcribedParticipantIdentity===this.localParticipant.identity?this.localParticipant:this.getParticipantByIdentity(h.transcribedParticipantIdentity),m=p?.trackPublications.get(h.trackId),k=(function(g,v){return g.segments.map((b=>{let T=b.id,E=b.text,S=b.language,C=b.startTime,I=b.endTime,O=b.final;var N;let Z=(N=v.get(T))!==null&&N!==void 0?N:Date.now(),B=Date.now();return O?v.delete(T):v.set(T,Z),{id:T,text:E,startTime:Number.parseInt(C.toString()),endTime:Number.parseInt(I.toString()),final:O,language:S,firstReceivedTime:Z,lastReceivedTime:B}}))})(h,this.transcriptionReceivedTimes);m?.emit(u.TrackEvent.TranscriptionReceived,k),p?.emit(u.ParticipantEvent.TranscriptionReceived,k,m),this.emit(u.RoomEvent.TranscriptionReceived,k,p,m)},this.handleChatMessage=(l,h)=>{let p=(function(m){let k=m.id,g=m.timestamp,v=m.message,b=m.editTimestamp;return{id:k,timestamp:Number.parseInt(g.toString()),editTimestamp:b?Number.parseInt(b.toString()):void 0,message:v}})(h);this.emit(u.RoomEvent.ChatMessage,p,l)},this.handleMetrics=(l,h)=>{this.emit(u.RoomEvent.MetricsReceived,l,h)},this.handleDataStream=(l,h)=>{this.incomingDataStreamManager.handleDataStreamPacket(l,h)},this.bufferedSegments=new Map,this.handleAudioPlaybackStarted=()=>{this.canPlaybackAudio||(this.audioEnabled=!0,this.emit(u.RoomEvent.AudioPlaybackStatusChanged,!0))},this.handleAudioPlaybackFailed=l=>{this.log.warn("could not playback audio",{error:l}),this.canPlaybackAudio&&(this.audioEnabled=!1,this.emit(u.RoomEvent.AudioPlaybackStatusChanged,!1))},this.handleVideoPlaybackStarted=()=>{this.isVideoPlaybackBlocked&&(this.isVideoPlaybackBlocked=!1,this.emit(u.RoomEvent.VideoPlaybackStatusChanged,!0))},this.handleVideoPlaybackFailed=()=>{this.isVideoPlaybackBlocked||(this.isVideoPlaybackBlocked=!0,this.emit(u.RoomEvent.VideoPlaybackStatusChanged,!1))},this.handleDeviceChange=()=>f(this,void 0,void 0,(function*(){var l;((l=be())===null||l===void 0?void 0:l.os)!=="iOS"&&(yield this.selectDefaultDevices()),this.emit(u.RoomEvent.MediaDevicesChanged)})),this.handleRoomUpdate=l=>{let h=this.roomInfo;this.roomInfo=l,h&&h.metadata!==l.metadata&&this.emitWhenConnected(u.RoomEvent.RoomMetadataChanged,l.metadata),h?.activeRecording!==l.activeRecording&&this.emitWhenConnected(u.RoomEvent.RecordingStatusChanged,l.activeRecording)},this.handleConnectionQualityUpdate=l=>{l.updates.forEach((h=>{if(h.participantSid===this.localParticipant.sid)return void this.localParticipant.setConnectionQuality(h.quality);let p=this.getRemoteParticipantBySid(h.participantSid);p&&p.setConnectionQuality(h.quality)}))},this.getRemoteParticipantClientProtocol=l=>{var h,p;return(p=(h=this.remoteParticipants.get(l))===null||h===void 0?void 0:h.clientProtocol)!==null&&p!==void 0?p:0},this.getRemoteParticipantCapabilities=l=>{var h,p;return(p=(h=this.remoteParticipants.get(l))===null||h===void 0?void 0:h.capabilities)!==null&&p!==void 0?p:[]},this.getAllRemoteParticipantIdentities=()=>Array.from(this.remoteParticipants.keys()),this.logWebRTCStats=()=>f(this,void 0,void 0,(function*(){var l,h,p,m;let k=(l=this.engine)===null||l===void 0?void 0:l.pcManager;if(k)try{let g=D(yield Promise.all([k.publisher.getStats(),(h=k.subscriber)===null||h===void 0?void 0:h.getStats()]),2),v=g[0],b=g[1],T=v&&Ss(v),E=b&&Ss(b);this.statsLog.info("webrtc stats",{publisher:T?.connection,subscriber:E?.connection,inbound:[...(p=T?.inbound)!==null&&p!==void 0?p:[],...(m=E?.inbound)!==null&&m!==void 0?m:[]],outbound:T?.outbound})}catch(g){this.statsLog.debug("could not collect webrtc stats",{error:g})}})),this.onLocalParticipantMetadataChanged=l=>{this.emit(u.RoomEvent.ParticipantMetadataChanged,l,this.localParticipant)},this.onLocalParticipantNameChanged=l=>{this.emit(u.RoomEvent.ParticipantNameChanged,l,this.localParticipant)},this.onLocalAttributesChanged=l=>{this.emit(u.RoomEvent.ParticipantAttributesChanged,l,this.localParticipant)},this.onLocalTrackMuted=l=>{this.emit(u.RoomEvent.TrackMuted,l,this.localParticipant)},this.onLocalTrackUnmuted=l=>{this.emit(u.RoomEvent.TrackUnmuted,l,this.localParticipant)},this.onTrackProcessorUpdate=l=>{var h;(h=l?.onPublish)===null||h===void 0||h.call(l,this)},this.onLocalTrackPublished=l=>f(this,void 0,void 0,(function*(){var h,p,m,k,g,v;(h=l.track)===null||h===void 0||h.on(u.TrackEvent.TrackProcessorUpdate,this.onTrackProcessorUpdate),(p=l.track)===null||p===void 0||p.on(u.TrackEvent.Restarted,this.onLocalTrackRestarted),(g=(k=(m=l.track)===null||m===void 0?void 0:m.getProcessor())===null||k===void 0?void 0:k.onPublish)===null||g===void 0||g.call(k,this),this.emit(u.RoomEvent.LocalTrackPublished,l,this.localParticipant),Pt(l.track)&&(yield l.track.checkForSilence())&&this.emit(u.RoomEvent.LocalAudioSilenceDetected,l);let b=yield(v=l.track)===null||v===void 0?void 0:v.getDeviceId(!1),T=Ps(l.source);T&&b&&b!==this.localParticipant.activeDeviceMap.get(T)&&(this.localParticipant.activeDeviceMap.set(T,b),this.emit(u.RoomEvent.ActiveDeviceChanged,T,b))})),this.onLocalTrackUnpublished=l=>{var h,p;(h=l.track)===null||h===void 0||h.off(u.TrackEvent.TrackProcessorUpdate,this.onTrackProcessorUpdate),(p=l.track)===null||p===void 0||p.off(u.TrackEvent.Restarted,this.onLocalTrackRestarted),this.emit(u.RoomEvent.LocalTrackUnpublished,l,this.localParticipant)},this.onLocalTrackRestarted=l=>f(this,void 0,void 0,(function*(){let h=yield l.getDeviceId(!1),p=Ps(l.source);p&&h&&h!==this.localParticipant.activeDeviceMap.get(p)&&(this.log.debug("local track restarted, setting ".concat(p," ").concat(h," active")),this.localParticipant.activeDeviceMap.set(p,h),this.emit(u.RoomEvent.ActiveDeviceChanged,p,h))})),this.onLocalConnectionQualityChanged=l=>{this.emit(u.RoomEvent.ConnectionQualityChanged,l,this.localParticipant)},this.onMediaDevicesError=(l,h)=>{this.emit(u.RoomEvent.MediaDevicesError,l,h)},this.onLocalParticipantPermissionsChanged=l=>{this.emit(u.RoomEvent.ParticipantPermissionsChanged,l,this.localParticipant)},this.onLocalChatMessageSent=l=>{this.emit(u.RoomEvent.ChatMessage,l,this.localParticipant)},this.setMaxListeners(100),this.remoteParticipants=new Map,this.sidToIdentity=new Map,this.options=Object.assign(Object.assign({},Op),e),this.log=he((n=this.options.loggerName)!==null&&n!==void 0?n:u.LoggerNames.Room,(()=>this.logContext)),this.statsLog=he(u.LoggerNames.Stats,(()=>this.logContext)),this.transcriptionReceivedTimes=new Map,this.options.audioCaptureDefaults=Object.assign(Object.assign({},Gd),e?.audioCaptureDefaults),this.options.videoCaptureDefaults=Object.assign(Object.assign({},Jd),e?.videoCaptureDefaults),this.options.publishDefaults=Object.assign(Object.assign({},_p),e?.publishDefaults),this.maybeCreateEngine(),this.incomingDataStreamManager=new Hp((r=this.options.dataStream)===null||r===void 0?void 0:r.maxPayloadByteLength),this.outgoingDataStreamManager=new Jp(this.engine,this.log,this.getRemoteParticipantClientProtocol,this.getRemoteParticipantCapabilities,this.getAllRemoteParticipantIdentities),this.incomingDataTrackManager=new Yp({e2eeManager:this.e2eeManager}),this.incomingDataTrackManager.on("sfuUpdateSubscription",(l=>{this.engine.client.sendUpdateDataSubscription(l.sid,l.subscribe)})).on("trackPublished",(l=>{var h;l.track.publisherIdentity!==this.localParticipant.identity&&(this.emit(u.RoomEvent.DataTrackPublished,l.track),(h=this.remoteParticipants.get(l.track.publisherIdentity))===null||h===void 0||h.addRemoteDataTrack(l.track))})).on("trackUnpublished",(l=>{var h;l.publisherIdentity!==this.localParticipant.identity&&(this.emit(u.RoomEvent.DataTrackUnpublished,l.sid),(h=this.remoteParticipants.get(l.publisherIdentity))===null||h===void 0||h.removeRemoteDataTrack(l.sid))})),this.outgoingDataTrackManager=new ba({e2eeManager:this.e2eeManager}),this.outgoingDataTrackManager.on("sfuPublishRequest",(l=>{this.engine.client.sendPublishDataTrackRequest(l.handle,l.name,l.usesE2ee)})).on("sfuUnpublishRequest",(l=>{this.engine.client.sendUnPublishDataTrackRequest(l.handle)})).on("trackPublished",(l=>{this.emit(u.RoomEvent.LocalDataTrackPublished,l.track)})).on("trackUnpublished",(l=>{this.emit(u.RoomEvent.LocalDataTrackUnpublished,l.sid)})).on("packetAvailable",(l=>{let h=l.handle,p=l.bytes;this.engine.sendDataTrackFrame(p).finally((()=>this.outgoingDataTrackManager.handlePacketSendComplete(h)))})),this.registerRpcDataStreamHandler(),this.rpcClientManager=new Xp(this.log,this.outgoingDataStreamManager,this.getRemoteParticipantClientProtocol,(()=>{var l;return(l=this.engine)===null||l===void 0?void 0:l.serverVersion})),this.rpcClientManager.on("sendDataPacket",(l=>{let h=l.packet;var p;(p=this.engine)===null||p===void 0||p.sendDataPacket(h,H.RELIABLE)})),this.rpcServerManager=new $p(this.log,this.outgoingDataStreamManager,this.getRemoteParticipantClientProtocol),this.rpcServerManager.on("sendDataPacket",(l=>{let h=l.packet;var p;(p=this.engine)===null||p===void 0||p.sendDataPacket(h,H.RELIABLE)})),this.disconnectLock=new U,this.localParticipant=new Ll("","",this.engine,this.options,this.outgoingDataStreamManager,this.outgoingDataTrackManager,this.rpcClientManager,this.rpcServerManager),this.setupFrameMetadata(),(this.options.e2ee||this.options.encryption)&&this.setupE2EE(),this.engine.e2eeManager=this.e2eeManager,this.incomingDataTrackManager.updateE2eeManager((s=this.e2eeManager)!==null&&s!==void 0?s:null),this.outgoingDataTrackManager.updateE2eeManager((a=this.e2eeManager)!==null&&a!==void 0?a:null),this.options.videoCaptureDefaults.deviceId&&this.localParticipant.activeDeviceMap.set("videoinput",Tn(this.options.videoCaptureDefaults.deviceId)),this.options.audioCaptureDefaults.deviceId&&this.localParticipant.activeDeviceMap.set("audioinput",Tn(this.options.audioCaptureDefaults.deviceId)),!((o=this.options.audioOutput)===null||o===void 0)&&o.deviceId&&this.switchActiveDevice("audiooutput",Tn(this.options.audioOutput.deviceId)).catch((l=>this.log.warn("Could not set audio output: ".concat(l.message)))),Fe()){let l=new AbortController,h;if(On.cleanupRegistry){let p=new WeakRef(this);h=()=>{let m=p.deref();m&&m.handleDeviceChange()},On.cleanupRegistry.register(this,(()=>{l.abort()}))}else h=this.handleDeviceChange;(d=(c=navigator.mediaDevices)===null||c===void 0?void 0:c.addEventListener)===null||d===void 0||d.call(c,"devicechange",h,{signal:l.signal})}}registerTextStreamHandler(e,t){return this.incomingDataStreamManager.registerTextStreamHandler(e,t)}unregisterTextStreamHandler(e){return this.incomingDataStreamManager.unregisterTextStreamHandler(e)}registerByteStreamHandler(e,t){return this.incomingDataStreamManager.registerByteStreamHandler(e,t)}unregisterByteStreamHandler(e){return this.incomingDataStreamManager.unregisterByteStreamHandler(e)}registerRpcMethod(e,t){this.rpcServerManager.registerRpcMethod(e,t)}unregisterRpcMethod(e){this.rpcServerManager.unregisterRpcMethod(e)}setE2EEEnabled(e){return f(this,void 0,void 0,(function*(){let t=yield this.e2eeStateMutex.lock();try{if(!this.e2eeManager)throw Error("e2ee not configured, please set e2ee settings within the room options");this.isE2EEEnabled!==e&&(yield this.localParticipant.setE2EEEnabled(e),this.localParticipant.identity!==""&&this.e2eeManager.setParticipantCryptorEnabled(e,this.localParticipant.identity))}finally{t()}}))}setupE2EE(){var e,t;let n=!!this.options.encryption,r=this.options.encryption||this.options.e2ee;r&&("e2eeManager"in r?(this.e2eeManager=r.e2eeManager,this.e2eeManager.isDataChannelEncryptionEnabled=n):this.e2eeManager=new Qt(r,n),this.e2eeManager.on(u.EncryptionEvent.ParticipantEncryptionStatusChanged,((s,a)=>{kd(a)&&(this.isE2EEEnabled=s),this.emit(u.RoomEvent.ParticipantEncryptionStatusChanged,s,a)})),this.e2eeManager.on(u.EncryptionEvent.EncryptionError,((s,a)=>{let o=a?this.getParticipantByIdentity(a):void 0;this.emit(u.RoomEvent.EncryptionError,s,o)})),(e=this.e2eeManager)===null||e===void 0||e.setup(this),(t=this.e2eeManager)===null||t===void 0||t.setupEngine(this.engine))}setupFrameMetadata(){var e;let t=(e=this.options.frameMetadata)!==null&&e!==void 0?e:this.options.packetTrailer;this.frameMetadataManager=new Ws(t),this.frameMetadataManager.setup(this)}get logContext(){var e,t,n;return{room:this.name,roomID:(e=this.roomInfo)===null||e===void 0?void 0:e.sid,participant:(t=this.localParticipant)===null||t===void 0?void 0:t.identity,participantID:(n=this.localParticipant)===null||n===void 0?void 0:n.sid}}get isRecording(){var e,t;return(t=(e=this.roomInfo)===null||e===void 0?void 0:e.activeRecording)!==null&&t!==void 0&&t}getSid(){return this.state===u.ConnectionState.Disconnected?Ie.resolve(""):this.roomInfo&&this.roomInfo.sid!==""?Ie.resolve(this.roomInfo.sid):new Ie(((e,t)=>{let n=r=>{r.sid!==""&&(this.engine.off(u.EngineEvent.RoomUpdate,n),e(r.sid))};this.engine.on(u.EngineEvent.RoomUpdate,n),this.once(u.RoomEvent.Disconnected,(()=>{this.engine.off(u.EngineEvent.RoomUpdate,n),t(new ie("Room disconnected before room server id was available"))}))}))}get name(){var e,t;return(t=(e=this.roomInfo)===null||e===void 0?void 0:e.name)!==null&&t!==void 0?t:""}get metadata(){var e;return(e=this.roomInfo)===null||e===void 0?void 0:e.metadata}get numParticipants(){var e,t;return(t=(e=this.roomInfo)===null||e===void 0?void 0:e.numParticipants)!==null&&t!==void 0?t:0}get numPublishers(){var e,t;return(t=(e=this.roomInfo)===null||e===void 0?void 0:e.numPublishers)!==null&&t!==void 0?t:0}maybeCreateEngine(){(!this.engine||!this.engine.isNewlyCreated&&this.engine.isClosed)&&(this.engine=new Wp(this.options),this.engine.e2eeManager=this.e2eeManager,this.engine.on(u.EngineEvent.ParticipantUpdate,this.handleParticipantUpdates).on(u.EngineEvent.RoomUpdate,this.handleRoomUpdate).on(u.EngineEvent.SpeakersChanged,this.handleSpeakersChanged).on(u.EngineEvent.StreamStateChanged,this.handleStreamStateUpdate).on(u.EngineEvent.ConnectionQualityUpdate,this.handleConnectionQualityUpdate).on(u.EngineEvent.SubscriptionError,this.handleSubscriptionError).on(u.EngineEvent.SubscriptionPermissionUpdate,this.handleSubscriptionPermissionUpdate).on(u.EngineEvent.MediaTrackAdded,((e,t,n)=>{this.onTrackAdded(e,t,n)})).on(u.EngineEvent.Disconnected,(e=>{this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,e)})).on(u.EngineEvent.ActiveSpeakersUpdate,this.handleActiveSpeakersUpdate).on(u.EngineEvent.DataPacketReceived,this.handleDataPacket).on(u.EngineEvent.Resuming,(()=>{this.clearConnectionReconcile(),this.isResuming=!0,this.log.debug("Resuming signal connection"),this.setAndEmitConnectionState(u.ConnectionState.SignalReconnecting)&&this.emit(u.RoomEvent.SignalReconnecting)})).on(u.EngineEvent.Resumed,(()=>{this.registerConnectionReconcile(),this.isResuming=!1,this.log.debug("Resumed signal connection"),this.updateSubscriptions(),this.setAndEmitConnectionState(u.ConnectionState.Connected)&&this.emit(u.RoomEvent.Reconnected),this.emitBufferedEvents()})).on(u.EngineEvent.SignalResumed,(()=>{(this.state===u.ConnectionState.Reconnecting||this.isResuming)&&this.sendSyncState(),this.emitBufferedEvents()})).on(u.EngineEvent.Restarting,this.handleRestarting).on(u.EngineEvent.Restarted,this.handleRestarted).on(u.EngineEvent.SignalRestarted,this.handleSignalRestarted).on(u.EngineEvent.Offline,(()=>{this.setAndEmitConnectionState(u.ConnectionState.Reconnecting)&&this.emit(u.RoomEvent.Reconnecting)})).on(u.EngineEvent.DCBufferStatusChanged,((e,t)=>{this.emit(u.RoomEvent.DCBufferStatusChanged,e,t)})).on(u.EngineEvent.LocalTrackSubscribed,(e=>{this.handleLocalTrackSubscribed(e)})).on(u.EngineEvent.RoomMoved,(e=>{this.log.debug("room moved",e),e.room&&this.handleRoomUpdate(e.room),this.remoteParticipants.forEach(((t,n)=>{this.handleParticipantDisconnected(n,t)})),this.emit(u.RoomEvent.Moved,e.room.name),e.participant?this.handleParticipantUpdates([e.participant,...e.otherParticipants]):this.handleParticipantUpdates(e.otherParticipants)})).on(u.EngineEvent.PublishDataTrackResponse,(e=>{e.info?this.outgoingDataTrackManager.receivedSfuPublishResponse(e.info.pubHandle,{type:"ok",data:{sid:e.info.sid,pubHandle:e.info.pubHandle,name:e.info.name,usesE2ee:e.info.encryption!==G.NONE}}):this.log.warn("received PublishDataTrackResponse, but event.info was ".concat(e.info,", so skipping."))})).on(u.EngineEvent.UnPublishDataTrackResponse,(e=>{e.info?this.outgoingDataTrackManager.receivedSfuUnpublishResponse(e.info.pubHandle):this.log.warn("received UnPublishDataTrackResponse, but event.info was ".concat(e.info,", so skipping."))})).on(u.EngineEvent.DataTrackSubscriberHandles,(e=>{let t=new Map(Object.entries(e.subHandles).map((n=>{let r=D(n,2),s=r[0],a=r[1];return[parseInt(s,10),a.trackSid]})));this.incomingDataTrackManager.receivedSfuSubscriberHandles(t)})).on(u.EngineEvent.DataTrackPacketReceived,(e=>{try{this.incomingDataTrackManager.packetReceived(e)}catch(t){throw t}})).on(u.EngineEvent.Joined,(e=>{let t=new Map(e.otherParticipants.map((n=>[n.identity,n.dataTracks.map((r=>or.from(r)))])));this.incomingDataTrackManager.receiveSfuPublicationUpdates(t)})).on(u.EngineEvent.TokenRefreshed,(e=>{var t;(t=this.regionUrlProvider)===null||t===void 0||t.updateToken(e)})).on(u.EngineEvent.ServerRegionsReported,(e=>{var t;(t=this.regionUrlProvider)===null||t===void 0||t.setServerReportedRegions({regionSettings:e,updatedAtInMs:Date.now(),maxAgeInMs:la})})),this.localParticipant&&this.localParticipant.setupEngine(this.engine),this.e2eeManager&&this.e2eeManager.setupEngine(this.engine),this.outgoingDataStreamManager&&this.outgoingDataStreamManager.setupEngine(this.engine))}createRegionStrategy(){return{getNextUrl:e=>f(this,void 0,void 0,(function*(){return this.regionUrlProvider?this.regionUrlProvider.getNextBestRegionUrl(e):null})),resetAttempts:()=>{var e;return(e=this.regionUrlProvider)===null||e===void 0?void 0:e.resetAttempts()}}}static getLocalDevices(e){let t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];return ye.getInstance().getDevices(e,t)}prepareConnection(e,t){return f(this,void 0,void 0,(function*(){if(this.state===u.ConnectionState.Disconnected){this.log.debug("prepareConnection to ".concat(e));try{if(bn(new URL(e))&&t){this.regionUrlProvider=new z(e,t);let n=yield this.regionUrlProvider.getNextBestRegionUrl();n&&this.state===u.ConnectionState.Disconnected&&(this.regionUrl=n,yield fetch($n(n),{method:"HEAD"}),this.log.debug("prepared connection to ".concat(n)))}else yield fetch($n(e),{method:"HEAD"})}catch(n){this.log.warn("could not prepare connection",{error:n})}}}))}getParticipantByIdentity(e){return this.localParticipant.identity===e?this.localParticipant:this.remoteParticipants.get(e)}clearConnectionFutures(){this.connectFuture=void 0}simulateScenario(e,t){return f(this,void 0,void 0,(function*(){let n,r=()=>f(this,void 0,void 0,(function*(){}));switch(e){case"signal-reconnect":yield this.engine.client.handleOnClose("simulate disconnect");break;case"fail-on-v1-path":this.engine.failNextV1Path();break;case"speaker":n=new ut({scenario:{case:"speakerUpdate",value:3}});break;case"node-failure":n=new ut({scenario:{case:"nodeFailure",value:!0}});break;case"server-leave":n=new ut({scenario:{case:"serverLeave",value:!0}});break;case"migration":n=new ut({scenario:{case:"migration",value:!0}});break;case"resume-reconnect":this.engine.failNext(),yield this.engine.client.handleOnClose("simulate resume-disconnect");break;case"disconnect-signal-on-resume":r=()=>f(this,void 0,void 0,(function*(){yield this.engine.client.handleOnClose("simulate resume-disconnect")})),n=new ut({scenario:{case:"disconnectSignalOnResume",value:!0}});break;case"disconnect-signal-on-resume-no-messages":r=()=>f(this,void 0,void 0,(function*(){yield this.engine.client.handleOnClose("simulate resume-disconnect")})),n=new ut({scenario:{case:"disconnectSignalOnResumeNoMessages",value:!0}});break;case"full-reconnect":this.engine.fullReconnectOnNext=!0,yield this.engine.client.handleOnClose("simulate full-reconnect");break;case"force-tcp":case"force-tls":n=new ut({scenario:{case:"switchCandidateProtocol",value:e==="force-tls"?2:1}}),r=()=>f(this,void 0,void 0,(function*(){let s=this.engine.client.onLeave;s&&s(new ji({reason:xe.CLIENT_INITIATED,action:un.RECONNECT}))}));break;case"subscriber-bandwidth":if(t===void 0||typeof t!="number")throw new Error("subscriber-bandwidth requires a number as argument");n=new ut({scenario:{case:"subscriberBandwidth",value:nt(t)}});break;case"leave-full-reconnect":n=new ut({scenario:{case:"leaveRequestFullReconnect",value:!0}})}n&&(yield this.engine.client.sendSimulateScenario(n),yield r())}))}get canPlaybackAudio(){return this.audioEnabled}get canPlaybackVideo(){return!this.isVideoPlaybackBlocked}getActiveDevice(e){return this.localParticipant.activeDeviceMap.get(e)}switchActiveDevice(e,t){return f(this,arguments,void 0,(function(n,r){var s=this;let a=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2];return(function*(){var o,c,d,l,h,p,m;let k=!0,g=!1,v=a?{exact:r}:r;if(n==="audioinput"){g=s.localParticipant.audioTrackPublications.size===0;let b=(o=s.getActiveDevice(n))!==null&&o!==void 0?o:s.options.audioCaptureDefaults.deviceId;s.options.audioCaptureDefaults.deviceId=v;let T=Array.from(s.localParticipant.audioTrackPublications.values()).filter((S=>S.source===R.Source.Microphone));try{k=(yield Promise.all(T.map((S=>{var C;return(C=S.audioTrack)===null||C===void 0?void 0:C.setDeviceId(v)})))).every((S=>S===!0))}catch(S){throw s.options.audioCaptureDefaults.deviceId=b,S}let E=T.some((S=>{var C,I;return(I=(C=S.track)===null||C===void 0?void 0:C.isMuted)!==null&&I!==void 0&&I}));k&&E&&(g=!0)}else if(n==="videoinput"){g=s.localParticipant.videoTrackPublications.size===0;let b=(c=s.getActiveDevice(n))!==null&&c!==void 0?c:s.options.videoCaptureDefaults.deviceId;s.options.videoCaptureDefaults.deviceId=v;let T=Array.from(s.localParticipant.videoTrackPublications.values()).filter((S=>S.source===R.Source.Camera));try{k=(yield Promise.all(T.map((S=>{var C;return(C=S.videoTrack)===null||C===void 0?void 0:C.setDeviceId(v)})))).every((S=>S===!0))}catch(S){throw s.options.videoCaptureDefaults.deviceId=b,S}let E=T.some((S=>{var C,I;return(I=(C=S.track)===null||C===void 0?void 0:C.isMuted)!==null&&I!==void 0&&I}));k&&E&&(g=!0)}else if(n==="audiooutput"){if(g=!0,!Xi()&&!s.options.webAudioMix||s.options.webAudioMix&&s.audioContext&&!("setSinkId"in s.audioContext))throw new Error("cannot switch audio output, the current browser does not support it");s.options.webAudioMix&&(r=(d=yield ye.getInstance().normalizeDeviceId("audiooutput",r))!==null&&d!==void 0?d:""),(l=(m=s.options).audioOutput)!==null&&l!==void 0||(m.audioOutput={});let b=(h=s.getActiveDevice(n))!==null&&h!==void 0?h:s.options.audioOutput.deviceId;s.options.audioOutput.deviceId=r;try{s.options.webAudioMix&&((p=s.audioContext)===null||p===void 0||p.setSinkId(r)),yield Promise.all(Array.from(s.remoteParticipants.values()).map((T=>T.setAudioOutput({deviceId:r}))))}catch(T){throw s.options.audioOutput.deviceId=b,T}}return g&&(s.localParticipant.activeDeviceMap.set(n,r),s.emit(u.RoomEvent.ActiveDeviceChanged,n,r)),k})()}))}setupLocalParticipantEvents(){this.localParticipant.on(u.ParticipantEvent.ParticipantMetadataChanged,this.onLocalParticipantMetadataChanged).on(u.ParticipantEvent.ParticipantNameChanged,this.onLocalParticipantNameChanged).on(u.ParticipantEvent.AttributesChanged,this.onLocalAttributesChanged).on(u.ParticipantEvent.TrackMuted,this.onLocalTrackMuted).on(u.ParticipantEvent.TrackUnmuted,this.onLocalTrackUnmuted).on(u.ParticipantEvent.LocalTrackPublished,this.onLocalTrackPublished).on(u.ParticipantEvent.LocalTrackUnpublished,this.onLocalTrackUnpublished).on(u.ParticipantEvent.ConnectionQualityChanged,this.onLocalConnectionQualityChanged).on(u.ParticipantEvent.MediaDevicesError,this.onMediaDevicesError).on(u.ParticipantEvent.AudioStreamAcquired,this.startAudio).on(u.ParticipantEvent.ChatMessage,this.onLocalChatMessageSent).on(u.ParticipantEvent.ParticipantPermissionsChanged,this.onLocalParticipantPermissionsChanged)}recreateEngine(e){let t=this.engine;e&&t&&!t.client.isDisconnected?t.client.sendLeave().finally((()=>t.close())):t?.close(),this.engine=void 0,this.isResuming=!1,this.remoteParticipants.clear(),this.sidToIdentity.clear(),this.bufferedEvents=[],this.maybeCreateEngine()}onTrackAdded(e,t,n){var r,s;if([u.ConnectionState.Connecting,u.ConnectionState.Reconnecting].includes(this.state)){let m=yd(e,t);this.log.debug("deferring on track for later",{mediaTrackId:e.id,mediaStreamId:t.id,tracksInStream:t.getTracks().map((v=>v.id))});let k=()=>{g(),this.onTrackAdded(e,t,n)},g=()=>{if(this.off(u.RoomEvent.Reconnected,k),this.off(u.RoomEvent.Connected,k),this.off(u.RoomEvent.Disconnected,g),m){let v=this.pendingTrackAddedCallbacks.get(m);v?.delete(g),v?.size===0&&this.pendingTrackAddedCallbacks.delete(m)}};if(this.once(u.RoomEvent.Reconnected,k),this.once(u.RoomEvent.Connected,k),this.once(u.RoomEvent.Disconnected,g),m){let v=(r=this.pendingTrackAddedCallbacks.get(m))!==null&&r!==void 0?r:new Set;v.add(g),this.pendingTrackAddedCallbacks.set(m,v)}return}if(this.state===u.ConnectionState.Disconnected)return void this.log.warn("skipping incoming track after Room disconnected");if(e.readyState==="ended")return void this.log.debug("skipping incoming track as it already ended");let a=sd(t.id),o=a[0],c=a[1],d=(s=yd(e,t))!==null&&s!==void 0?s:e.id;if(o===this.localParticipant.sid)return void this.log.warn("tried to create RemoteParticipant for local participant");let l=Array.from(this.remoteParticipants.values()).find((m=>m.sid===o));if(!l)return void(o.startsWith("PA")&&this.log.error("Tried to add a track for a participant, that's not present. Sid: ".concat(o)));if(!d.startsWith("TR")){let m=this.engine.getTrackIdForReceiver(n);if(!m)return void this.log.error("Tried to add a track whose 'sid' could not be found for a participant, that's not present. Sid: ".concat(o));d=m}let h;d.startsWith("TR")||this.log.warn("Tried to add a track whose 'sid' could not be determined for a participant, that's not present. Sid: ".concat(o,", streamId: ").concat(c,", trackId: ").concat(d),{remoteParticipantID:o,streamId:c,trackId:d}),this.options.adaptiveStream&&(h=typeof this.options.adaptiveStream=="object"?this.options.adaptiveStream:{});let p=l.addSubscribedMediaTrack(e,d,t,n,h);p?.isEncrypted&&!this.e2eeManager&&this.emit(u.RoomEvent.EncryptionError,new Error("Encrypted ".concat(p.source," track received from participant ").concat(l.sid,", but room does not have encryption enabled!")))}cancelPendingTrackAdded(e){var t;(t=this.pendingTrackAddedCallbacks.get(e))===null||t===void 0||t.forEach((n=>n()))}handleLocalTrackSubscribed(e){let t=()=>this.localParticipant.getTrackPublications().find((o=>o.trackSid===e)),n=t();if(n)return void this.emitLocalTrackSubscribed(n);this.log.debug("deferring LocalTrackSubscribed, publication not yet available",{subscribedSid:e});let r,s=o=>{o.trackSid===e&&(a(),this.emitLocalTrackSubscribed(o))},a=()=>{clearTimeout(r),this.localParticipant.off(u.ParticipantEvent.LocalTrackPublished,s),this.off(u.RoomEvent.Disconnected,a)};this.localParticipant.on(u.ParticipantEvent.LocalTrackPublished,s),this.once(u.RoomEvent.Disconnected,a),r=setTimeout((()=>{a();let o=t();o?this.emitLocalTrackSubscribed(o):this.log.warn("could not find local track publication for LocalTrackSubscribed event after timeout",{subscribedSid:e})}),1e4)}emitLocalTrackSubscribed(e){this.localParticipant.emit(u.ParticipantEvent.LocalTrackSubscribed,e),this.emitWhenConnected(u.RoomEvent.LocalTrackSubscribed,e,this.localParticipant)}handleDisconnect(){let e=!(arguments.length>0&&arguments[0]!==void 0)||arguments[0],t=arguments.length>1?arguments[1]:void 0;var n,r;if(this.clearConnectionReconcile(),this.isResuming=!1,this.bufferedEvents=[],this.transcriptionReceivedTimes.clear(),this.incomingDataStreamManager.clearControllers(),this.incomingDataTrackManager.reset(),this.outgoingDataTrackManager.reset(),this.state!==u.ConnectionState.Disconnected){this.regionUrl=void 0,this.regionUrlProvider&&this.regionUrlProvider.notifyDisconnected();try{this.remoteParticipants.forEach((s=>{s.trackPublications.forEach((a=>{s.unpublishTrack(a.trackSid)}))})),this.localParticipant.trackPublications.forEach((s=>{var a,o,c;s.track&&this.localParticipant.unpublishTrack(s.track,e),e?((a=s.track)===null||a===void 0||a.detach(),(o=s.track)===null||o===void 0||o.stop()):(c=s.track)===null||c===void 0||c.stopMonitor()})),this.localParticipant.off(u.ParticipantEvent.ParticipantMetadataChanged,this.onLocalParticipantMetadataChanged).off(u.ParticipantEvent.ParticipantNameChanged,this.onLocalParticipantNameChanged).off(u.ParticipantEvent.AttributesChanged,this.onLocalAttributesChanged).off(u.ParticipantEvent.TrackMuted,this.onLocalTrackMuted).off(u.ParticipantEvent.TrackUnmuted,this.onLocalTrackUnmuted).off(u.ParticipantEvent.LocalTrackPublished,this.onLocalTrackPublished).off(u.ParticipantEvent.LocalTrackUnpublished,this.onLocalTrackUnpublished).off(u.ParticipantEvent.ConnectionQualityChanged,this.onLocalConnectionQualityChanged).off(u.ParticipantEvent.MediaDevicesError,this.onMediaDevicesError).off(u.ParticipantEvent.AudioStreamAcquired,this.startAudio).off(u.ParticipantEvent.ChatMessage,this.onLocalChatMessageSent).off(u.ParticipantEvent.ParticipantPermissionsChanged,this.onLocalParticipantPermissionsChanged),this.localParticipant.trackPublications.clear(),this.localParticipant.videoTrackPublications.clear(),this.localParticipant.audioTrackPublications.clear(),this.remoteParticipants.clear(),this.sidToIdentity.clear(),this.activeSpeakers=[],this.audioContext&&typeof this.options.webAudioMix=="boolean"&&(this.audioContext.close(),this.audioContext=void 0),Fe()&&(window.removeEventListener("beforeunload",this.onPageLeave),window.removeEventListener("pagehide",this.onPageLeave),window.removeEventListener("freeze",this.onPageLeave),(r=(n=navigator.mediaDevices)===null||n===void 0?void 0:n.removeEventListener)===null||r===void 0||r.call(n,"devicechange",this.handleDeviceChange))}finally{this.setAndEmitConnectionState(u.ConnectionState.Disconnected),this.emit(u.RoomEvent.Disconnected,t)}}}handleParticipantDisconnected(e,t,n){this.remoteParticipants.delete(e),t&&(this.incomingDataStreamManager.validateParticipantHasNoActiveDataStreams(e),this.incomingDataTrackManager.handleRemoteParticipantDisconnected(e),t.trackPublications.forEach((r=>{t.unpublishTrack(r.trackSid,!0)})),this.emit(u.RoomEvent.ParticipantDisconnected,t,n),t.setDisconnected(),this.rpcClientManager.handleParticipantDisconnected(t.identity))}selectDefaultDevices(){return f(this,void 0,void 0,(function*(){var e,t,n;let r=ye.getInstance().previousDevices,s=yield ye.getInstance().getDevices(void 0,!1),a=be();if(a?.name==="Chrome"&&a.os!=="iOS")for(let c of s){let d=r.find((l=>l.deviceId===c.deviceId));d&&d.label!==""&&d.kind===c.kind&&d.label!==c.label&&this.getActiveDevice(c.kind)==="default"&&this.emit(u.RoomEvent.ActiveDeviceChanged,c.kind,c.deviceId)}let o=["audiooutput","audioinput","videoinput"];for(let c of o){let d=np(c),l=this.localParticipant.getTrackPublication(d);if(l&&(!((e=l.track)===null||e===void 0)&&e.isUserProvided))continue;let h=s.filter((m=>m.kind===c)),p=this.getActiveDevice(c);p===((t=r.filter((m=>m.kind===c))[0])===null||t===void 0?void 0:t.deviceId)&&h.length>0&&((n=h[0])===null||n===void 0?void 0:n.deviceId)!==p?yield this.switchActiveDevice(c,h[0].deviceId):c==="audioinput"&&!Yn()||c==="videoinput"||!(h.length>0)||h.find((m=>m.deviceId===this.getActiveDevice(c)))||c==="audiooutput"&&Yn()||(yield this.switchActiveDevice(c,h[0].deviceId))}}))}acquireAudioContext(){return f(this,void 0,void 0,(function*(){var e,t;if(typeof this.options.webAudioMix!="boolean"&&this.options.webAudioMix.audioContext?this.audioContext=this.options.webAudioMix.audioContext:this.audioContext&&this.audioContext.state!=="closed"||(this.audioContext=(e=Rs())!==null&&e!==void 0?e:void 0),this.options.webAudioMix&&this.remoteParticipants.forEach((r=>r.setAudioContext(this.audioContext))),this.localParticipant.setAudioContext(this.audioContext),this.audioContext&&this.audioContext.state==="suspended")try{yield Promise.race([this.audioContext.resume(),we(200)])}catch(r){this.log.warn("Could not resume audio context",{error:r})}let n=((t=this.audioContext)===null||t===void 0?void 0:t.state)==="running";n!==this.canPlaybackAudio&&(this.audioEnabled=n,this.emit(u.RoomEvent.AudioPlaybackStatusChanged,n))}))}createParticipant(e,t){var n;let r;return r=t?vi.fromParticipantInfo(this.engine.client,t,{loggerContextCb:()=>this.logContext,loggerName:this.options.loggerName},this.incomingDataTrackManager):new vi(this.engine.client,"",e,void 0,void 0,void 0,{loggerContextCb:()=>this.logContext,loggerName:this.options.loggerName}),this.options.webAudioMix&&r.setAudioContext(this.audioContext),!((n=this.options.audioOutput)===null||n===void 0)&&n.deviceId&&r.setAudioOutput(this.options.audioOutput).catch((s=>this.log.warn("Could not set audio output: ".concat(s.message)))),r}getOrCreateParticipant(e,t){if(this.remoteParticipants.has(e)){let r=this.remoteParticipants.get(e);return t&&r.updateInfo(t)&&this.sidToIdentity.set(t.sid,t.identity),r}let n=this.createParticipant(e,t);return this.remoteParticipants.set(e,n),this.sidToIdentity.set(t.sid,t.identity),this.emitWhenConnected(u.RoomEvent.ParticipantConnected,n),n.on(u.ParticipantEvent.TrackPublished,(r=>{this.emitWhenConnected(u.RoomEvent.TrackPublished,r,n)})).on(u.ParticipantEvent.TrackSubscribed,((r,s)=>{r.kind===R.Kind.Audio?(r.on(u.TrackEvent.AudioPlaybackStarted,this.handleAudioPlaybackStarted),r.on(u.TrackEvent.AudioPlaybackFailed,this.handleAudioPlaybackFailed)):r.kind===R.Kind.Video&&(r.on(u.TrackEvent.VideoPlaybackFailed,this.handleVideoPlaybackFailed),r.on(u.TrackEvent.VideoPlaybackStarted,this.handleVideoPlaybackStarted)),this.emitWhenConnected(u.RoomEvent.TrackSubscribed,r,s,n)})).on(u.ParticipantEvent.TrackUnpublished,(r=>{this.cancelPendingTrackAdded(r.trackSid),this.emit(u.RoomEvent.TrackUnpublished,r,n)})).on(u.ParticipantEvent.TrackUnsubscribed,((r,s)=>{this.emit(u.RoomEvent.TrackUnsubscribed,r,s,n)})).on(u.ParticipantEvent.TrackMuted,(r=>{this.emitWhenConnected(u.RoomEvent.TrackMuted,r,n)})).on(u.ParticipantEvent.TrackUnmuted,(r=>{this.emitWhenConnected(u.RoomEvent.TrackUnmuted,r,n)})).on(u.ParticipantEvent.ParticipantMetadataChanged,(r=>{this.emitWhenConnected(u.RoomEvent.ParticipantMetadataChanged,r,n)})).on(u.ParticipantEvent.ParticipantNameChanged,(r=>{this.emitWhenConnected(u.RoomEvent.ParticipantNameChanged,r,n)})).on(u.ParticipantEvent.AttributesChanged,(r=>{this.emitWhenConnected(u.RoomEvent.ParticipantAttributesChanged,r,n)})).on(u.ParticipantEvent.ConnectionQualityChanged,(r=>{this.emitWhenConnected(u.RoomEvent.ConnectionQualityChanged,r,n)})).on(u.ParticipantEvent.ParticipantPermissionsChanged,(r=>{this.emitWhenConnected(u.RoomEvent.ParticipantPermissionsChanged,r,n)})).on(u.ParticipantEvent.TrackSubscriptionStatusChanged,((r,s)=>{this.emitWhenConnected(u.RoomEvent.TrackSubscriptionStatusChanged,r,s,n)})).on(u.ParticipantEvent.TrackSubscriptionFailed,((r,s)=>{this.emit(u.RoomEvent.TrackSubscriptionFailed,r,n,s)})).on(u.ParticipantEvent.TrackSubscriptionPermissionChanged,((r,s)=>{this.emitWhenConnected(u.RoomEvent.TrackSubscriptionPermissionChanged,r,s,n)})).on(u.ParticipantEvent.Active,(()=>{this.emitWhenConnected(u.RoomEvent.ParticipantActive,n),n.kind===dn.AGENT&&this.localParticipant.setActiveAgent(n)})),t&&n.updateInfo(t),n}sendSyncState(){let e=Array.from(this.remoteParticipants.values()).reduce(((r,s)=>(r.push(...s.getTrackPublications()),r)),[]),t=this.localParticipant.getTrackPublications(),n=this.outgoingDataTrackManager.queryPublished();this.engine.sendSyncState(e,t,n)}updateSubscriptions(){for(let e of this.remoteParticipants.values())for(let t of e.videoTrackPublications.values())t.isSubscribed&&op(t)&&t.emitTrackUpdate()}getRemoteParticipantBySid(e){let t=this.sidToIdentity.get(e);if(t)return this.remoteParticipants.get(t)}getClientInfoCapabilities(e){var t;let n=[];return(ei((t=e.frameMetadata)!==null&&t!==void 0?t:e.packetTrailer)||this.e2eeManager)&&n.push(jn.CAP_PACKET_TRAILER),Ut()&&n.push(jn.CAP_COMPRESSION_DEFLATE_RAW),n}registerRpcDataStreamHandler(){this.incomingDataStreamManager.registerTextStreamHandler(Il,((e,t)=>f(this,[e,t],void 0,(function(n,r){var s=this;let a=r.identity;return(function*(){var o;let c=(o=n.info.attributes)!==null&&o!==void 0?o:{};yield s.rpcServerManager.handleIncomingDataStream(n,a,c)})()})))),this.incomingDataStreamManager.registerTextStreamHandler(Ml,((e,t)=>f(this,[e,t],void 0,(function(n,r){var s=this;let a=r.identity;return(function*(){var o;let c=(o=n.info.attributes)!==null&&o!==void 0?o:{};yield s.rpcClientManager.handleIncomingDataStream(n,a,c)})()}))))}setStatsLogging(e){e?this.statsLogInterval||(this.statsLogInterval=Q.setInterval((()=>{this.logWebRTCStats()}),3e4)):this.statsLogInterval&&(Q.clearInterval(this.statsLogInterval),this.statsLogInterval=void 0)}registerConnectionReconcile(){this.clearConnectionReconcile();let e=0;this.connectionReconcileInterval=Q.setInterval((()=>{this.engine&&!this.engine.isClosed&&this.engine.verifyTransport()?e=0:(e++,this.log.warn("detected connection state mismatch",{numFailures:e,engine:this.engine?{closed:this.engine.isClosed,transportsConnectedOrConnecting:this.engine.verifyTransport()}:void 0}),e>=3&&(this.clearConnectionReconcile(),this.engine&&!this.engine.isClosed?(this.log.warn("detected connection state mismatch, attempting full reconnect"),this.engine.reconnect()):(this.recreateEngine(),this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,xe.STATE_MISMATCH))))}),4e3)}clearConnectionReconcile(){this.connectionReconcileInterval&&Q.clearInterval(this.connectionReconcileInterval)}setAndEmitConnectionState(e){return e!==this.state&&(this.log.info("connection state changed: ".concat(this.state," -> ").concat(e)),this.state=e,this.incomingDataStreamManager.setConnected(e===u.ConnectionState.Connected),this.setStatsLogging(e===u.ConnectionState.Connected),this.emit(u.RoomEvent.ConnectionStateChanged,this.state),!0)}emitBufferedEvents(){this.bufferedEvents.forEach((e=>{let t=D(e,2),n=t[0],r=t[1];this.emit(n,...r)})),this.bufferedEvents=[]}emitWhenConnected(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];if(this.state===u.ConnectionState.Reconnecting||this.isResuming||!this.engine||this.engine.pendingReconnect)this.bufferedEvents.push([e,n]);else if(this.state===u.ConnectionState.Connected)return this.emit(e,...n);return!1}simulateParticipants(e){return f(this,void 0,void 0,(function*(){var t,n,r,s;let a=Object.assign({audio:!0,video:!0,useRealTracks:!1},e.publish),o=Object.assign({count:9,audio:!1,video:!0,aspectRatios:[1.66,1.7,1.3]},e.participants);if(this.handleDisconnect(),this.roomInfo=new Ri({sid:"RM_SIMULATED",name:"simulated-room",emptyTimeout:0,maxParticipants:0,creationTime:ae.parse(new Date().getTime()),metadata:"",numParticipants:1,numPublishers:1,turnPassword:"",enabledCodecs:[],activeRecording:!1}),this.localParticipant.updateInfo(new qt({identity:"simulated-local",name:"local-name"})),this.setupLocalParticipantEvents(),this.emit(u.RoomEvent.SignalConnected),this.emit(u.RoomEvent.Connected),this.setAndEmitConnectionState(u.ConnectionState.Connected),a.video){let c=new yr(R.Kind.Video,new ln({source:ue.CAMERA,sid:Math.floor(1e4*Math.random()).toString(),type:Ke.AUDIO,name:"video-dummy"}),new Mn(a.useRealTracks&&(!((t=window.navigator.mediaDevices)===null||t===void 0)&&t.getUserMedia)?(yield window.navigator.mediaDevices.getUserMedia({video:!0})).getVideoTracks()[0]:Ls(160*((n=o.aspectRatios[0])!==null&&n!==void 0?n:1),160,!0,!0),void 0,!1,{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext}),{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext});this.localParticipant.addTrackPublication(c),this.localParticipant.emit(u.ParticipantEvent.LocalTrackPublished,c)}if(a.audio){let c=new yr(R.Kind.Audio,new ln({source:ue.MICROPHONE,sid:Math.floor(1e4*Math.random()).toString(),type:Ke.AUDIO}),new In(a.useRealTracks&&(!((r=navigator.mediaDevices)===null||r===void 0)&&r.getUserMedia)?(yield navigator.mediaDevices.getUserMedia({audio:!0})).getAudioTracks()[0]:$i(),void 0,!1,this.audioContext,{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext}),{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext});this.localParticipant.addTrackPublication(c),this.localParticipant.emit(u.ParticipantEvent.LocalTrackPublished,c)}for(let c=0;c<o.count-1;c+=1){let d=new qt({sid:Math.floor(1e4*Math.random()).toString(),identity:"simulated-".concat(c),state:cn.ACTIVE,tracks:[],joinedAt:ae.parse(Date.now())}),l=this.getOrCreateParticipant(d.identity,d);if(o.video){let h=Ls(160*((s=o.aspectRatios[c%o.aspectRatios.length])!==null&&s!==void 0?s:1),160,!1,!0),p=new ln({source:ue.CAMERA,sid:Math.floor(1e4*Math.random()).toString(),type:Ke.AUDIO});l.addSubscribedMediaTrack(h,p.sid,new MediaStream([h]),new RTCRtpReceiver),d.tracks=[...d.tracks,p]}if(o.audio){let h=$i(),p=new ln({source:ue.MICROPHONE,sid:Math.floor(1e4*Math.random()).toString(),type:Ke.AUDIO});l.addSubscribedMediaTrack(h,p.sid,new MediaStream([h]),new RTCRtpReceiver),d.tracks=[...d.tracks,p]}l.updateInfo(d)}}))}emit(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];if(e!==u.RoomEvent.ActiveSpeakersChanged&&e!==u.RoomEvent.TranscriptionReceived){let s=Ul(n).filter((a=>a!==void 0));e!==u.RoomEvent.TrackSubscribed&&e!==u.RoomEvent.TrackUnsubscribed||this.log.trace("subscribe trace: ".concat(e),{event:e,args:s}),this.log.debug("room event ".concat(e),{event:e,args:s})}return super.emit(e,...n)}}function Ul(i){return i.map((e=>{if(e)return Array.isArray(e)?Ul(e):typeof e=="object"?"logContext"in e?e.logContext:void 0:e}))}On.cleanupRegistry=typeof FinalizationRegistry<"u"&&typeof WeakRef<"u"&&new FinalizationRegistry((i=>{i()}));var ft,em=Object.freeze({__proto__:null,Convert:class{static toAgentAttributes(i){return JSON.parse(i)}static agentAttributesToJson(i){return JSON.stringify(i)}static toTranscriptionAttributes(i){return JSON.parse(i)}static transcriptionAttributesToJson(i){return JSON.stringify(i)}}});u.CheckStatus=void 0,(ft=u.CheckStatus||(u.CheckStatus={}))[ft.IDLE=0]="IDLE",ft[ft.RUNNING=1]="RUNNING",ft[ft.SKIPPED=2]="SKIPPED",ft[ft.SUCCESS=3]="SUCCESS",ft[ft.FAILED=4]="FAILED";class Mt extends Ue.EventEmitter{constructor(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};super(),this.status=u.CheckStatus.IDLE,this.logs=[],this.options={},this.url=e,this.token=t,this.name=this.constructor.name,this.room=new On(n.roomOptions),this.connectOptions=n.connectOptions,this.options=n}run(e){return f(this,void 0,void 0,(function*(){if(this.status!==u.CheckStatus.IDLE)throw Error("check is running already");this.setStatus(u.CheckStatus.RUNNING);try{yield this.perform()}catch(t){t instanceof Error&&(this.options.errorsAsWarnings?this.appendWarning(t.message):this.appendError(t.message))}return yield this.disconnect(),yield new Promise((t=>setTimeout(t,500))),this.status!==u.CheckStatus.SKIPPED&&this.setStatus(this.isSuccess()?u.CheckStatus.SUCCESS:u.CheckStatus.FAILED),e&&e(),this.getInfo()}))}isSuccess(){return!this.logs.some((e=>e.level==="error"))}connect(e){return f(this,void 0,void 0,(function*(){return this.room.state===u.ConnectionState.Connected||(e||(e=this.url),yield this.room.connect(e,this.token,this.connectOptions)),this.room}))}disconnect(){return f(this,void 0,void 0,(function*(){this.room&&this.room.state!==u.ConnectionState.Disconnected&&(yield this.room.disconnect(),yield new Promise((e=>setTimeout(e,500))))}))}skip(){this.setStatus(u.CheckStatus.SKIPPED)}switchProtocol(e){return f(this,void 0,void 0,(function*(){let t=!1,n=!1;if(this.room.on(u.RoomEvent.Reconnecting,(()=>{t=!0})),this.room.once(u.RoomEvent.Reconnected,(()=>{n=!0})),this.room.simulateScenario("force-".concat(e)),yield new Promise((s=>setTimeout(s,1e3))),!t)return;let r=Date.now()+1e4;for(;Date.now()<r;){if(n)return;yield we(100)}throw new Error("Could not reconnect using ".concat(e," protocol after 10 seconds"))}))}appendMessage(e){this.logs.push({level:"info",message:e}),this.emit("update",this.getInfo())}appendWarning(e){this.logs.push({level:"warning",message:e}),this.emit("update",this.getInfo())}appendError(e){this.logs.push({level:"error",message:e}),this.emit("update",this.getInfo())}setStatus(e){this.status=e,this.emit("update",this.getInfo())}get engine(){var e;return(e=this.room)===null||e===void 0?void 0:e.engine}getInfo(){return{logs:this.logs,name:this.name,status:this.status,description:this.description}}}class tm extends Mt{get description(){return"Cloud regions"}perform(){return f(this,void 0,void 0,(function*(){let e=new z(this.url,this.token);if(!e.isCloud())return void this.skip();let t=[],n=new Set;for(let s=0;s<3;s++){let a=yield e.getNextBestRegionUrl();if(!a)break;if(n.has(a))continue;n.add(a);let o=yield this.checkCloudRegion(a);this.appendMessage("".concat(o.region," RTT: ").concat(o.rtt,"ms, duration: ").concat(o.duration,"ms")),t.push(o)}t.sort(((s,a)=>.5*(s.duration-a.duration)+.5*(s.rtt-a.rtt)));let r=t[0];this.bestStats=r,this.appendMessage("best Cloud region: ".concat(r.region))}))}getInfo(){let e=super.getInfo();return e.data=this.bestStats,e}checkCloudRegion(e){return f(this,void 0,void 0,(function*(){var t,n;yield this.connect(e),this.options.protocol==="tcp"&&(yield this.switchProtocol("tcp"));let r=(t=this.room.serverInfo)===null||t===void 0?void 0:t.region;if(!r)throw new Error("Region not found");let s=yield this.room.localParticipant.streamText({topic:"test"}),a="A".repeat(1e3),o=Date.now();for(let h=0;h<1e3;h++)yield s.write(a);yield s.close();let c=Date.now(),d=yield(n=this.room.engine.pcManager)===null||n===void 0?void 0:n.publisher.getStats(),l={region:r,rtt:1e4,duration:c-o};return d?.forEach((h=>{h.type==="candidate-pair"&&h.nominated&&(l.rtt=1e3*h.currentRoundTripTime)})),yield this.disconnect(),l}))}}let nm=1e4;class im extends Mt{get description(){return"Connection via UDP vs TCP"}perform(){return f(this,void 0,void 0,(function*(){let e=yield this.checkConnectionProtocol("udp"),t=yield this.checkConnectionProtocol("tcp");this.bestStats=e,e.qualityLimitationDurations.bandwidth-t.qualityLimitationDurations.bandwidth>.5||(e.packetsLost-t.packetsLost)/e.packetsSent>.01?(this.appendMessage("best connection quality via tcp"),this.bestStats=t):this.appendMessage("best connection quality via udp");let n=this.bestStats;this.appendMessage("upstream bitrate: ".concat((n.bitrateTotal/n.count/1e3/1e3).toFixed(2)," mbps")),this.appendMessage("RTT: ".concat((n.rttTotal/n.count*1e3).toFixed(2)," ms")),this.appendMessage("jitter: ".concat((n.jitterTotal/n.count*1e3).toFixed(2)," ms")),n.packetsLost>0&&this.appendWarning("packets lost: ".concat((n.packetsLost/n.packetsSent*100).toFixed(2),"%")),n.qualityLimitationDurations.bandwidth>1&&this.appendWarning("bandwidth limited ".concat((n.qualityLimitationDurations.bandwidth/10*100).toFixed(2),"%")),n.qualityLimitationDurations.cpu>0&&this.appendWarning("cpu limited ".concat((n.qualityLimitationDurations.cpu/10*100).toFixed(2),"%"))}))}getInfo(){let e=super.getInfo();return e.data=this.bestStats,e}checkConnectionProtocol(e){return f(this,void 0,void 0,(function*(){yield this.connect(),e==="tcp"?yield this.switchProtocol("tcp"):yield this.switchProtocol("udp");let t=document.createElement("canvas");t.width=1280,t.height=720;let n=t.getContext("2d");if(!n)throw new Error("Could not get canvas context");let r=0,s=()=>{r=(r+1)%360,n.fillStyle="hsl(".concat(r,", 100%, 50%)"),n.fillRect(0,0,t.width,t.height),requestAnimationFrame(s)};s();let a=t.captureStream(30).getVideoTracks()[0],o=(yield this.room.localParticipant.publishTrack(a,{simulcast:!1,degradationPreference:"maintain-resolution",videoEncoding:{maxBitrate:2e6}})).track,c={protocol:e,packetsLost:0,packetsSent:0,qualityLimitationDurations:{},rttTotal:0,jitterTotal:0,bitrateTotal:0,count:0},d=setInterval((()=>f(this,void 0,void 0,(function*(){let l=yield o.getRTCStatsReport();l?.forEach((h=>{h.type==="outbound-rtp"?(c.packetsSent=h.packetsSent,c.qualityLimitationDurations=h.qualityLimitationDurations,c.bitrateTotal+=h.targetBitrate,c.count++):h.type==="remote-inbound-rtp"&&(c.packetsLost=h.packetsLost,c.rttTotal+=h.roundTripTime,c.jitterTotal+=h.jitter)}))}))),1e3);return yield new Promise((l=>setTimeout(l,nm))),clearInterval(d),a.stop(),t.remove(),yield this.disconnect(),c}))}}class rm extends Mt{get description(){return"Can publish audio"}perform(){return f(this,void 0,void 0,(function*(){var e;let t=yield this.connect(),n=yield Al();if(yield td(n,1e3))throw new Error("unable to detect audio from microphone");this.appendMessage("detected audio from microphone"),t.localParticipant.publishTrack(n),yield new Promise((a=>setTimeout(a,3e3)));let r=yield(e=n.sender)===null||e===void 0?void 0:e.getStats();if(!r)throw new Error("Could not get RTCStats");let s=0;if(r.forEach((a=>{a.type!=="outbound-rtp"||a.kind!=="audio"&&(a.kind||a.mediaType!=="audio")||(s=a.packetsSent)})),s===0)throw new Error("Could not determine packets are sent");this.appendMessage("published ".concat(s," audio packets"))}))}}class sm extends Mt{get description(){return"Can publish video"}perform(){return f(this,void 0,void 0,(function*(){var e;let t=yield this.connect(),n=yield Ol();yield this.checkForVideo(n.mediaStreamTrack),t.localParticipant.publishTrack(n),yield new Promise((a=>setTimeout(a,5e3)));let r=yield(e=n.sender)===null||e===void 0?void 0:e.getStats();if(!r)throw new Error("Could not get RTCStats");let s=0;if(r.forEach((a=>{a.type!=="outbound-rtp"||a.kind!=="video"&&(a.kind||a.mediaType!=="video")||(s+=a.packetsSent)})),s===0)throw new Error("Could not determine packets are sent");this.appendMessage("published ".concat(s," video packets"))}))}checkForVideo(e){return f(this,void 0,void 0,(function*(){let t=new MediaStream;t.addTrack(e.clone());let n=document.createElement("video");n.srcObject=t,n.muted=!0,n.autoplay=!0,n.playsInline=!0,n.setAttribute("playsinline","true"),document.body.appendChild(n),yield new Promise((r=>{n.onplay=()=>{setTimeout((()=>{var s,a,o,c;let d=document.createElement("canvas"),l=e.getSettings(),h=(a=(s=l.width)!==null&&s!==void 0?s:n.videoWidth)!==null&&a!==void 0?a:1280,p=(c=(o=l.height)!==null&&o!==void 0?o:n.videoHeight)!==null&&c!==void 0?c:720;d.width=h,d.height=p;let m=d.getContext("2d");m.drawImage(n,0,0);let k=m.getImageData(0,0,d.width,d.height).data,g=!0;for(let v=0;v<k.length;v+=4)if(k[v]!==0||k[v+1]!==0||k[v+2]!==0){g=!1;break}g?this.appendError("camera appears to be producing only black frames"):this.appendMessage("received video frames"),r()}),1e3)},n.play()})),t.getTracks().forEach((r=>r.stop())),n.remove()}))}}class am extends Mt{get description(){return"Resuming connection after interruption"}perform(){return f(this,void 0,void 0,(function*(){var e;let t=yield this.connect(),n,r=!1,s=!1,a=new Promise((d=>{setTimeout(d,5e3),n=d})),o=()=>{r=!0};t.on(u.RoomEvent.SignalReconnecting,o).on(u.RoomEvent.Reconnecting,o).on(u.RoomEvent.Reconnected,(()=>{s=!0,n(!0)})),(e=t.engine.client.ws)===null||e===void 0||e.close();let c=t.engine.client.onClose;if(c&&c(""),yield a,!r)throw new Error("Did not attempt to reconnect");if(!s||t.state!==u.ConnectionState.Connected)throw this.appendWarning("reconnection is only possible in Redis-based configurations"),new Error("Not able to reconnect")}))}}class om extends Mt{get description(){return"Can connect via TURN"}perform(){return f(this,void 0,void 0,(function*(){var e,t,n;bn(new URL(this.url))&&(this.appendMessage("Using region specific url"),this.url=(e=yield new z(this.url,this.token).getNextBestRegionUrl())!==null&&e!==void 0?e:this.url);let r=new Xs,s=yield r.join(this.url,this.token,{autoSubscribe:!0,maxRetries:0,e2eeEnabled:!1,websocketTimeout:15e3},void 0,!0),a=!1,o=!1,c=!1;for(let d of s.iceServers)for(let l of d.urls)l.startsWith("turn:")?(o=!0,c=!0):l.startsWith("turns:")&&(o=!0,c=!0,a=!0),l.startsWith("stun:")&&(c=!0);c?o&&!a&&this.appendWarning("TURN is configured server side, but TURN/TLS is unavailable."):this.appendWarning("No STUN servers configured on server side."),yield r.close(),!((n=(t=this.connectOptions)===null||t===void 0?void 0:t.rtcConfig)===null||n===void 0)&&n.iceServers||o?yield this.room.connect(this.url,this.token,{rtcConfig:{iceTransportPolicy:"relay"}}):(this.appendWarning("No TURN servers configured."),this.skip(),yield new Promise((d=>setTimeout(d,0))))}))}}class cm extends Mt{get description(){return"Establishing WebRTC connection"}perform(){return f(this,void 0,void 0,(function*(){let e=!1,t=!1;this.room.on(u.RoomEvent.SignalConnected,(()=>{var n;let r=this.room.engine.client.onTrickle;this.room.engine.client.onTrickle=(s,a)=>{if(s.candidate){let o=new RTCIceCandidate(s),c="".concat(o.protocol," ").concat(o.address,":").concat(o.port," ").concat(o.type);o.address&&((function(d){let l=d.split(".");if(l.length===4){if(l[0]==="10"||l[0]==="192"&&l[1]==="168")return!0;if(l[0]==="172"){let h=parseInt(l[1],10);if(h>=16&&h<=31)return!0}}return!1})(o.address)?c+=" (private)":o.protocol==="tcp"&&o.tcpType==="passive"?(e=!0,c+=" (passive)"):o.protocol==="udp"&&(t=!0)),this.appendMessage(c)}r&&r(s,a)},!((n=this.room.engine.pcManager)===null||n===void 0)&&n.subscriber&&(this.room.engine.pcManager.subscriber.onIceCandidateError=s=>{s instanceof RTCPeerConnectionIceErrorEvent&&this.appendWarning("error with ICE candidate: ".concat(s.errorCode," ").concat(s.errorText," ").concat(s.url))})}));try{yield this.connect(),V.info("now the room is connected")}catch(n){throw this.appendWarning("ports need to be open on firewall in order to connect."),n}e||this.appendWarning("Server is not configured for ICE/TCP"),t||this.appendWarning("No public IPv4 UDP candidates were found. Your server is likely not configured correctly")}))}}class dm extends Mt{get description(){return"Connecting to signal connection via WebSocket"}perform(){return f(this,void 0,void 0,(function*(){var e,t,n;(this.url.startsWith("ws:")||this.url.startsWith("http:"))&&this.appendWarning("Server is insecure, clients may block connections to it");let r,s=new Xs;try{r=yield s.join(this.url,this.token,{autoSubscribe:!0,maxRetries:0,e2eeEnabled:!1,websocketTimeout:15e3},void 0,!0)}catch(a){if(bn(new URL(this.url))){this.appendMessage("Initial connection failed with error ".concat(a.message,". Retrying with region fallback"));let o=new z(this.url,this.token),c=yield o.getNextBestRegionUrl();c&&(r=yield s.join(c,this.token,{autoSubscribe:!0,maxRetries:0,e2eeEnabled:!1,websocketTimeout:15e3},void 0,!0),this.appendMessage("Fallback to region worked. To avoid initial connections failing, ensure you're calling room.prepareConnection() ahead of time"))}}r?(this.appendMessage("Connected to server, version ".concat(r.serverVersion,".")),((e=r.serverInfo)===null||e===void 0?void 0:e.edition)===Mo.Cloud&&(!((t=r.serverInfo)===null||t===void 0)&&t.region)&&this.appendMessage("LiveKit Cloud: ".concat((n=r.serverInfo)===null||n===void 0?void 0:n.region))):this.appendError("Websocket connection could not be established"),yield s.close()}))}}class lm extends Ue.EventEmitter{constructor(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};super(),this.options={},this.checkResults=new Map,this.url=e,this.token=t,this.options=n}getNextCheckId(){let e=this.checkResults.size;return this.checkResults.set(e,{logs:[],status:u.CheckStatus.IDLE,name:"",description:""}),e}updateCheck(e,t){this.checkResults.set(e,t),this.emit("checkUpdate",e,t)}isSuccess(){return Array.from(this.checkResults.values()).every((e=>e.status!==u.CheckStatus.FAILED))}getResults(){return Array.from(this.checkResults.values())}createAndRunCheck(e){return f(this,void 0,void 0,(function*(){let t=this.getNextCheckId(),n=new e(this.url,this.token,this.options),r=a=>{this.updateCheck(t,a)};n.on("update",r);let s=yield n.run();return n.off("update",r),s}))}checkWebsocket(){return f(this,void 0,void 0,(function*(){return this.createAndRunCheck(dm)}))}checkWebRTC(){return f(this,void 0,void 0,(function*(){return this.createAndRunCheck(cm)}))}checkTURN(){return f(this,void 0,void 0,(function*(){return this.createAndRunCheck(om)}))}checkReconnect(){return f(this,void 0,void 0,(function*(){return this.createAndRunCheck(am)}))}checkPublishAudio(){return f(this,void 0,void 0,(function*(){return this.createAndRunCheck(rm)}))}checkPublishVideo(){return f(this,void 0,void 0,(function*(){return this.createAndRunCheck(sm)}))}checkConnectionProtocol(){return f(this,void 0,void 0,(function*(){let e=yield this.createAndRunCheck(im);if(e.data&&"protocol"in e.data){let t=e.data;this.options.protocol=t.protocol}return e}))}checkCloudRegion(){return f(this,void 0,void 0,(function*(){return this.createAndRunCheck(tm)}))}}class Fl{}class Bl{}new TextEncoder;let jl=new TextDecoder,um=new TextDecoder("utf-8",{fatal:!0});class _e extends Error{constructor(e,t){var n;super(e,t),A(this,"code","ERR_JOSE_GENERIC"),this.name=this.constructor.name,(n=Error.captureStackTrace)===null||n===void 0||n.call(Error,this,this.constructor)}}A(_e,"code","ERR_JOSE_GENERIC"),A(class extends _e{constructor(i,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"unspecified",n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"unspecified";super(i,{cause:{claim:t,reason:n,payload:e}}),A(this,"code","ERR_JWT_CLAIM_VALIDATION_FAILED"),A(this,"claim",void 0),A(this,"reason",void 0),A(this,"payload",void 0),this.claim=t,this.reason=n,this.payload=e}},"code","ERR_JWT_CLAIM_VALIDATION_FAILED"),A(class extends _e{constructor(i,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"unspecified",n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"unspecified";super(i,{cause:{claim:t,reason:n,payload:e}}),A(this,"code","ERR_JWT_EXPIRED"),A(this,"claim",void 0),A(this,"reason",void 0),A(this,"payload",void 0),this.claim=t,this.reason=n,this.payload=e}},"code","ERR_JWT_EXPIRED"),A(class extends _e{constructor(){super(...arguments),A(this,"code","ERR_JOSE_ALG_NOT_ALLOWED")}},"code","ERR_JOSE_ALG_NOT_ALLOWED"),A(class extends _e{constructor(){super(...arguments),A(this,"code","ERR_JOSE_NOT_SUPPORTED")}},"code","ERR_JOSE_NOT_SUPPORTED"),A(class extends _e{constructor(){super(arguments.length>0&&arguments[0]!==void 0?arguments[0]:"decryption operation failed",arguments.length>1?arguments[1]:void 0),A(this,"code","ERR_JWE_DECRYPTION_FAILED")}},"code","ERR_JWE_DECRYPTION_FAILED"),A(class extends _e{constructor(){super(...arguments),A(this,"code","ERR_JWE_INVALID")}},"code","ERR_JWE_INVALID"),A(class extends _e{constructor(){super(...arguments),A(this,"code","ERR_JWS_INVALID")}},"code","ERR_JWS_INVALID");class Bt extends _e{constructor(){super(...arguments),A(this,"code","ERR_JWT_INVALID")}}A(Bt,"code","ERR_JWT_INVALID"),A(class extends _e{constructor(){super(...arguments),A(this,"code","ERR_JWK_INVALID")}},"code","ERR_JWK_INVALID"),A(class extends _e{constructor(){super(...arguments),A(this,"code","ERR_JWKS_INVALID")}},"code","ERR_JWKS_INVALID"),A(class extends _e{constructor(){super(arguments.length>0&&arguments[0]!==void 0?arguments[0]:"no applicable key found in the JSON Web Key Set",arguments.length>1?arguments[1]:void 0),A(this,"code","ERR_JWKS_NO_MATCHING_KEY")}},"code","ERR_JWKS_NO_MATCHING_KEY"),A(class extends _e{constructor(){super(arguments.length>0&&arguments[0]!==void 0?arguments[0]:"multiple matching keys found in the JSON Web Key Set",arguments.length>1?arguments[1]:void 0),A(this,Symbol.asyncIterator,(function(i){return function(){return new Nn(i.apply(this,arguments))}})((function*(){}))),A(this,"code","ERR_JWKS_MULTIPLE_MATCHING_KEYS")}},"code","ERR_JWKS_MULTIPLE_MATCHING_KEYS"),A(class extends _e{constructor(){super(arguments.length>0&&arguments[0]!==void 0?arguments[0]:"request timed out",arguments.length>1?arguments[1]:void 0),A(this,"code","ERR_JWKS_TIMEOUT")}},"code","ERR_JWKS_TIMEOUT"),A(class extends _e{constructor(){super(arguments.length>0&&arguments[0]!==void 0?arguments[0]:"signature verification failed",arguments.length>1?arguments[1]:void 0),A(this,"code","ERR_JWS_SIGNATURE_VERIFICATION_FAILED")}},"code","ERR_JWS_SIGNATURE_VERIFICATION_FAILED");let Ea="The input to be decoded is not correctly encoded.";function hm(i){if(Uint8Array.fromBase64)try{return Uint8Array.fromBase64(typeof i=="string"?i:jl.decode(i),{alphabet:"base64url"})}catch(t){throw new TypeError(Ea,{cause:t})}let e=i;if(e instanceof Uint8Array&&(e=jl.decode(e)),e.includes("+")||e.includes("/"))throw new TypeError(Ea);e=e.replace(/-/g,"+").replace(/_/g,"/");try{return(function(t){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(t);let n=atob(t),r=new Uint8Array(n.length);for(let s=0;s<n.length;s++)r[s]=n.charCodeAt(s);return r})(e)}catch{throw new TypeError(Ea)}}function pm(i){if(typeof i!="string")throw new Bt("JWTs must use Compact JWS serialization, JWT must be a string");let e=i.split("."),t=e[1],n=e.length;if(n===5)throw new Bt("Only JWTs using Compact JWS serialization can be decoded");if(n!==3)throw new Bt("Invalid JWT");if(!t)throw new Bt("JWTs must contain a payload");let r,s;try{r=hm(t)}catch{throw new Bt("Failed to base64url decode the payload")}try{s=JSON.parse(um.decode(r))}catch{throw new Bt("Failed to parse the decoded payload as JSON")}if(!(function(a){if(typeof a!="object"||a===null||Object.prototype.toString.call(a)!=="[object Object]")return!1;let o=Object.getPrototypeOf(a);if(o===null)return!0;let c=o;for(;Object.getPrototypeOf(c)!==null;)c=Object.getPrototypeOf(c);return o===c})(s))throw new Bt("Invalid JWT Claims Set");return s}let ql=1e3;function Ca(i){let e=pm(i);e.roomConfig;let t=ss(e,["roomConfig"]);return Object.assign(Object.assign({},t),{roomConfig:e.roomConfig?qn.fromJson(e.roomConfig,{ignoreUnknownFields:!0}):void 0})}function Vl(i,e){let t=new Set([...Object.keys(i),...Object.keys(e)]);for(let n of t)switch(n){case"roomName":case"participantName":case"participantIdentity":case"participantMetadata":case"participantAttributes":case"agentName":case"agentMetadata":case"deployment":if(i[n]!==e[n])return!1;break;default:throw new Error("Options key ".concat(n," not being checked for equality!"))}return!0}class Wl extends Bl{constructor(){super(...arguments),this.cachedFetchOptions=null,this.cachedResponse=null,this.fetchMutex=new U}isSameAsCachedFetchOptions(e){return!!this.cachedFetchOptions&&Vl(e,this.cachedFetchOptions)}shouldReturnCachedValueFromFetch(e){return!!this.cachedResponse&&!!(function(t){let n=Ca(t.participantToken);if(!n?.exp)return!1;let r=new Date;if(n.nbf){let a=n.nbf*ql;if(new Date(a)>r)return!1}let s=n.exp*ql;return new Date(s-6e4)>r})(this.cachedResponse)&&!!this.isSameAsCachedFetchOptions(e)}getCachedResponseJwtPayload(){return this.cachedResponse?Ca(this.cachedResponse.participantToken):null}fetch(e,t){return f(this,void 0,void 0,(function*(){let n=yield this.fetchMutex.lock();try{if(t&&(this.cachedResponse=null),this.shouldReturnCachedValueFromFetch(e))return this.cachedResponse.toJson();this.cachedFetchOptions=e;let r=yield this.update(e);return this.cachedResponse=r,r.toJson()}finally{n()}}))}}class mm extends Fl{constructor(e){super(),this.literalOrFn=e}fetch(){return f(this,void 0,void 0,(function*(){return typeof this.literalOrFn=="function"?this.literalOrFn():this.literalOrFn}))}}class gm extends Wl{constructor(e){super(),this.customFn=e}update(e){return f(this,void 0,void 0,(function*(){let t=this.customFn(e),n;return n=t instanceof Promise?yield t:t,ec.fromJson(n,{ignoreUnknownFields:!0})}))}}class Hl extends Wl{constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),this.url=e,this.endpointOptions=t}createRequestFromOptions(e){var t,n,r,s;let a=new qh;for(let o of Object.keys(e))switch(o){case"roomName":case"participantName":case"participantIdentity":case"participantMetadata":a[o]=e[o];break;case"participantAttributes":a.participantAttributes=(t=e.participantAttributes)!==null&&t!==void 0?t:{};break;case"agentName":a.roomConfig=(n=a.roomConfig)!==null&&n!==void 0?n:new qn,a.roomConfig.agents.length===0&&a.roomConfig.agents.push(new Oi),a.roomConfig.agents[0].agentName=e.agentName;break;case"agentMetadata":a.roomConfig=(r=a.roomConfig)!==null&&r!==void 0?r:new qn,a.roomConfig.agents.length===0&&a.roomConfig.agents.push(new Oi),a.roomConfig.agents[0].metadata=e.agentMetadata;break;case"deployment":a.roomConfig=(s=a.roomConfig)!==null&&s!==void 0?s:new qn,a.roomConfig.agents.length===0&&a.roomConfig.agents.push(new Oi),a.roomConfig.agents[0].deployment=e.deployment;break;default:throw new Error("Options key ".concat(o," not being included in forming request!"))}return a}update(e){return f(this,void 0,void 0,(function*(){var t;let n=this.createRequestFromOptions(e),r=yield fetch(this.url,Object.assign(Object.assign({},this.endpointOptions),{method:(t=this.endpointOptions.method)!==null&&t!==void 0?t:"POST",headers:Object.assign({"Content-Type":"application/json"},this.endpointOptions.headers),body:n.toJsonString({useProtoFieldName:!0})}));if(!r.ok)throw new Error("Error generating token from endpoint ".concat(this.url,": received ").concat(r.status," / ").concat(yield r.text()));let s=yield r.json();return ec.fromJson(s,{ignoreUnknownFields:!0})}))}}class Kl extends Hl{constructor(e,t){let n=t.baseUrl,r=n===void 0?"https://cloud-api.livekit.io":n,s=ss(t,["baseUrl"]);super("".concat(r,"/api/v2/sandbox/connection-details"),Object.assign(Object.assign({},s),{headers:{"X-Sandbox-ID":e}}))}}class fm extends Kl{}let vm={literal:i=>new mm(i),custom:i=>new gm(i),endpoint(i){return new Hl(i,arguments.length>1&&arguments[1]!==void 0?arguments[1]:{})},sandboxTokenServer(i){return new fm(i,arguments.length>1&&arguments[1]!==void 0?arguments[1]:{})},developmentTokenServer(i){return new Kl(i,arguments.length>1&&arguments[1]!==void 0?arguments[1]:{})}},zl=new Map([["obs virtual camera",{facingMode:"environment",confidence:"medium"}]]),km=new Map([["iphone",{facingMode:"environment",confidence:"medium"}],["ipad",{facingMode:"environment",confidence:"medium"}]]);function Gl(i){var e;let t=i.trim().toLowerCase();if(t!=="")return zl.has(t)?zl.get(t):(e=Array.from(km.entries()).find((n=>{let r=D(n,1)[0];return t.includes(r)})))===null||e===void 0?void 0:e[1]}let Jl=Symbol.for("lk.serializer");function wa(i){return Object.assign(Object.assign({},i),{symbol:Jl})}let ym={json:function(){return wa({parse:i=>JSON.parse(i),serialize:i=>JSON.stringify(i)})},raw:function(){return wa({parse:i=>i,serialize:i=>i})},custom:function(i){return wa(i)}};u.BaseKeyProvider=Dd,u.CLIENT_PROTOCOL_DATA_STREAM_RPC=1,u.CLIENT_PROTOCOL_DATA_STREAM_V2=2,u.CLIENT_PROTOCOL_DEFAULT=0,u.Checker=Mt,u.ConnectionCheck=lm,u.ConnectionError=_,u.CriticalTimers=Q,u.CryptorError=_d,u.DataPacket_Kind=St,u.DataStreamError=pe,u.DataTrackPacket=di,u.DefaultReconnectPolicy=rc,u.DeviceUnsupportedError=zn,u.DisconnectReason=xe,u.Encryption_Type=G,u.ExternalE2EEKeyProvider=class extends Dd{constructor(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};super(Object.assign(Object.assign({},i),{sharedKey:!0,ratchetWindowSize:0,failureTolerance:-1}))}setKey(i){return f(this,void 0,void 0,(function*(){let e=typeof i=="string"?yield Rd(i):yield Pd(i);this.onSetEncryptionKey(e)}))}},u.FrameMetadataManager=Ws,u.LivekitError=Je,u.LivekitReasonedError=We,u.LocalAudioTrack=In,u.LocalDataTrack=pi,u.LocalParticipant=Ll,u.LocalTrack=aa,u.LocalTrackPublication=yr,u.LocalTrackRecorder=nl,u.LocalVideoTrack=Mn,u.Mutex=U,u.NegotiationError=wt,u.PacketTrailerManager=hp,u.Participant=Sa,u.ParticipantKind=dn,u.PublishDataError=Yc,u.PublishTrackError=vs,u.RemoteAudioTrack=_l,u.RemoteDataTrack=fa,u.RemoteParticipant=vi,u.RemoteTrack=qs,u.RemoteTrackPublication=xl,u.RemoteVideoTrack=ar,u.Room=On,u.RpcError=Y,u.ScreenSharePresets=Gn,u.SignalReconnectError=Ht,u.SignalRequestError=ks,u.SimulatedError=class extends Je{constructor(){super(-1,arguments.length>0&&arguments[0]!==void 0?arguments[0]:"Simulated failure"),this.name="simulated"}},u.SubscriptionError=yo,u.TokenSource=vm,u.TokenSourceConfigurable=Bl,u.TokenSourceFixed=Fl,u.Track=R,u.TrackInvalidError=et,u.TrackPublication=gt,u.TrackType=Ke,u.UnexpectedConnectionState=ie,u.UnsupportedServer=Qc,u.VideoPreset=$,u.VideoPresets=fn,u.VideoPresets43=Qi,u.areTokenSourceFetchOptionsEqual=Vl,u.asEncryptablePacket=Md,u.attachToElement=Kt,u.attributes=em,u.audioCodecs=Xc,u.clientProtocol=2,u.compareVersions=Qe,u.createAudioAnalyser=function(i,e){let t=Object.assign({cloneTrack:!1,fftSize:2048,smoothingTimeConstant:.8,minDecibels:-100,maxDecibels:-80},e),n=Rs();if(!n)throw new Error("Audio Context not supported on this browser");let r=t.cloneTrack?i.mediaStreamTrack.clone():i.mediaStreamTrack,s=n.createMediaStreamSource(new MediaStream([r])),a=n.createAnalyser();a.minDecibels=t.minDecibels,a.maxDecibels=t.maxDecibels,a.fftSize=t.fftSize,a.smoothingTimeConstant=t.smoothingTimeConstant,s.connect(a);let o=new Uint8Array(a.frequencyBinCount);return{calculateVolume:()=>{a.getByteFrequencyData(o);let c=0;for(let d of o)c+=Math.pow(d/255,2);return Math.sqrt(c/o.length)},analyser:a,cleanup:()=>f(this,void 0,void 0,(function*(){yield n.close(),t.cloneTrack&&r.stop()}))}},u.createE2EEKey=function(){return window.crypto.getRandomValues(new Uint8Array(32))},u.createKeyMaterialFromBuffer=Pd,u.createKeyMaterialFromString=Rd,u.createLocalAudioTrack=Al,u.createLocalScreenTracks=function(i){return f(this,void 0,void 0,(function*(){if(i===void 0&&(i={}),i.resolution!==void 0||ld()||(i.resolution=Gn.h1080fps30.resolution),navigator.mediaDevices.getDisplayMedia===void 0)throw new zn("getDisplayMedia not supported");let e=nd(i),t=yield navigator.mediaDevices.getDisplayMedia(e),n=t.getVideoTracks();if(n.length===0)throw new et("no video track found");let r=new Mn(n[0],void 0,!1);r.source=R.Source.ScreenShare;let s=[r];if(t.getAudioTracks().length>0){let a=new In(t.getAudioTracks()[0],void 0,!1);a.source=R.Source.ScreenShareAudio,s.push(a)}return s}))},u.createLocalTracks=mi,u.createLocalVideoTrack=Ol,u.decodeTokenPayload=Ca,u.deriveKeys=function(i,e){return f(this,void 0,void 0,(function*(){let t=Id(i.algorithm.name,e.ratchetSalt),n=yield crypto.subtle.deriveKey(t,i,{name:Sd,length:e.keySize},!1,["encrypt","decrypt"]);return{material:i,encryptionKey:n}}))},u.detachTrack=zt,u.facingModeFromDeviceLabel=Gl,u.facingModeFromLocalTrack=function(i){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};var t;let n=xt(i)?i.mediaStreamTrack:i,r=n.getSettings(),s={facingMode:(t=e.defaultFacingMode)!==null&&t!==void 0?t:"user",confidence:"low"};if("facingMode"in r){let a=r.facingMode;V.trace("rawFacingMode",{rawFacingMode:a}),a&&typeof a=="string"&&(function(o){return o===void 0||["user","environment","left","right"].includes(o)})(a)&&(s={facingMode:a,confidence:"high"})}if(["low","medium"].includes(s.confidence)){V.trace("Try to get facing mode from device label: (".concat(n.label,")"));let a=Gl(n.label);a!==void 0&&(s=a)}return s},u.getBrowser=be,u.getEmptyAudioStreamTrack=$i,u.getEmptyVideoStreamTrack=function(){return As||(As=Ls()),As.clone()},u.getLogger=he,u.importKey=function(i){return f(this,arguments,void 0,(function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{name:Sd},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"encrypt";return(function*(){return crypto.subtle.importKey("raw",e,t,!1,n==="derive"?["deriveBits","deriveKey"]:["encrypt","decrypt"])})()}))},u.isAudioCodec=function(i){return Xc.includes(i)},u.isAudioTrack=it,u.isBackupCodec=Zc,u.isBackupVideoCodec=Es,u.isBrowserSupported=dd,u.isE2EESupported=Cd,u.isInsertableStreamSupported=ir,u.isLocalParticipant=kd,u.isLocalTrack=xt,u.isRemoteParticipant=function(i){return!i.isLocal},u.isRemoteTrack=Zi,u.isSVCCodec=Rt,u.isScriptTransformSupported=wd,u.isSerializer=function(i){return typeof i=="object"&&i!==null&&"symbol"in i&&i.symbol===Jl},u.isVideoCodec=Ns,u.isVideoFrame=function(i){return"type"in i},u.isVideoTrack=ht,u.needsRbspUnescaping=function(i){for(var e=0;e<i.length-3;e++)if(i[e]==0&&i[e+1]==0&&i[e+2]==3)return!0;return!1},u.parseRbsp=function(i){let e=[];for(var t=i.length,n=0;n<i.length;)t-n>=3&&!i[n]&&!i[n+1]&&i[n+2]==3?(e.push(i[n++]),e.push(i[n++]),n++):e.push(i[n++]);return new Uint8Array(e)},u.protocolVersion=17,u.ratchet=function(i,e){return f(this,void 0,void 0,(function*(){let t=Id(i.algorithm.name,e);return crypto.subtle.deriveBits(t,i,256)}))},u.serializers=ym,u.setLogExtension=function(i,e){(e?[e]:nc).forEach((t=>{let n=t.methodFactory;t.methodFactory=(r,s,a)=>{let o=n(r,s,a),c=u.LogLevel[r],d=c>=s&&c<u.LogLevel.silent;return(l,h)=>{h?o(l,h):o(l),d&&i(c,l,h)}},t.setLevel(t.getLevel())}))},u.setLogLevel=function(i,e){if(e)Wn.getLogger(e).setLevel(i);else for(let t of nc)t.setLevel(i)},u.supportsAV1=ad,u.supportsAdaptiveStream=function(){return typeof ResizeObserver<"u"&&typeof IntersectionObserver<"u"},u.supportsAudioOutputSelection=function(){return Xi()},u.supportsDynacast=function(){return Yi()},u.supportsH265=function(){if(!("getCapabilities"in RTCRtpSender))return!1;let i=RTCRtpSender.getCapabilities("video"),e=!1;if(i){for(let t of i.codecs)if(t.mimeType.toLowerCase()==="video/h265"){e=!0;break}}return e},u.supportsVP9=od,u.version=Jc,u.videoCodecs=$c,u.writeRbsp=function(i){let e=[];for(var t=0,n=0;n<i.length;++n){var r=i[n];r<=3&&t>=2&&(e.push(3),t=0),e.push(r),r==0?++t:t=0}return new Uint8Array(e)}}))});var _a=jt(An=>{"use strict";Object.defineProperty(An,"__esModule",{value:!0});An.Logger=An.LogLevel=void 0;var dt;(function(u){u[u.DEBUG=0]="DEBUG",u[u.INFO=1]="INFO",u[u.ERROR=2]="ERROR",u[u.CRITICAL=3]="CRITICAL"})(dt||(An.LogLevel=dt={}));var Da=class{currentLevel;destination;session_id;constructor(w=dt.INFO){this.currentLevel=w,this.destination=null,this.session_id=null}formatMessage(w,M){let j=new Date().toISOString(),U=this.destination??"not_received",q=this.session_id??"not_received";return`SimliClient | ${j} | ${w} | ${U}/${q} | ${M}`}log(w,M,j,...U){if(w<this.currentLevel)return;let q=this.formatMessage(M,j);switch(w){case dt.DEBUG:case dt.INFO:console.log(q,...U);break;case dt.ERROR:case dt.CRITICAL:console.error(q,...U);break}}debug(w,...M){this.log(dt.DEBUG,"DEBUG",w,...M)}info(w,...M){this.log(dt.INFO,"INFO",w,...M)}error(w,...M){this.log(dt.ERROR,"ERROR",w,...M)}critical(w,...M){this.log(dt.CRITICAL,"CRITICAL",w,...M)}setLevel(w){this.currentLevel=w}getLevel(){return this.currentLevel}};An.Logger=Da});var Aa=jt(Sr=>{"use strict";Object.defineProperty(Sr,"__esModule",{value:!0});Sr.WebSocketSignaling=void 0;var $l=_a(),Oa=class{wsURL;wsConnection;logger;constructor(w,M){this.wsURL=w,this.wsConnection=new WebSocket(this.wsURL),this.wsConnection.addEventListener("message",j=>this.logger.debug(j.data)),this.logger=M}async connect(w){this.wsConnection.onopen=w}disconnect(){this.wsConnection.close()}send(w){if(this.wsConnection.readyState!=WebSocket.OPEN)throw`Invalid State, WS Connection ${this.wsConnection.readyState.toString()}`;this.wsConnection.send(w)}sendOffer(w){this.send(JSON.stringify(w))}sendSignal(w){this.send(w)}sendAudioData(w){this.logger.getLevel()===$l.LogLevel.DEBUG&&this.logger.debug("Sent Audio of length: "+(w.length/32e3).toString()),this.send(w)}sendAudioDataImmediate(w){this.logger.getLevel()===$l.LogLevel.DEBUG&&this.logger.debug("Sent Audio of length for immediate playback: "+(w.length/32e3).toString());let U=new TextEncoder().encode("PLAY_IMMEDIATE"),q=new Uint8Array(U.length+w.length);q.set(U,0),q.set(w,U.length),this.send(q)}};Sr.WebSocketSignaling=Oa});var La=jt(Er=>{"use strict";Object.defineProperty(Er,"__esModule",{value:!0});Er.handleMessage=Sm;Er.register_destination=Tm;function Tm(u,w){let M=JSON.parse(w);u.destination=M.destination,u.session_id=M.session_id}async function Sm(u,w){let M=w.data.toUpperCase().split(" ")[0];switch(M){case"START":break;case"ACK":{u.emit("ack");break}case"STOP":{u.disconnect(),u.emit("stop");break}case"CLOSING":case"RATE":case"ERROR":case"ERROR:":u.disconnect(),u.emit("error",w.data);case"SPEAK":{u.emit("speaking");break}case"SILENT":{u.emit("silent");break}default:M.includes("SDP")||M.includes("LIVEKIT")?u.emit("connection_info",w.data):M.includes("VIDEO_METADATA")?u.emit("video_info",w.data):M.includes("ENDFRAME")?(u.emit("stop"),u.disconnect()):M.includes("DESTINATION")?u.emit("destination",w.data):u.emit("unknown",w.data)}}});var eu=jt(Cr=>{"use strict";Object.defineProperty(Cr,"__esModule",{value:!0});Cr.LivekitTransport=void 0;var Ln=Xl(),Em=Aa(),Zl=La(),Na=class{videoElementAnchor;audioElementAnchor;signalingConnection;session_token;pc;logger;events=new Map;websocketPromise;websocketReject=null;constructor(w,M,j,U,q,fe){this.logger=q,this.on("startup_error",fe),this.session_token=M;let Ae=new URL(w+"/compose/webrtc/livekit");Ae.searchParams.set("session_token",M),this.signalingConnection=new Em.WebSocketSignaling(Ae,this.logger),this.on("destination",le=>(0,Zl.register_destination)(this.logger,le)),this.websocketPromise=new Promise((le,_t)=>{this.websocketReject=_t,this.signalingConnection.connect(()=>{le("success"),this.logger.debug("LK WebSocket Connected")})}),this.signalingConnection.wsConnection.onmessage=le=>{(0,Zl.handleMessage)(this,le)},this.signalingConnection.wsConnection.onerror=le=>{this.emit("startup_error","Websocket Failed"),this.websocketReject&&(this.websocketReject("Websocket Failed"),this.websocketReject=null)};let Ve={adaptiveStream:!1,dynacast:!0};this.pc=new Ln.Room(Ve),this.on("connection_info",le=>this.join_lk_room(le)),this.videoElementAnchor=j,this.audioElementAnchor=U}on(w,M){this.events.has(w)||this.events.set(w,new Set),this.events.get(w)?.add(M),this.logger.debug("Registered Callback for Event: "+w)}off(w,M){if(!this.events.has(w))throw"Event Not Regsitered";this.events.get(w)?.delete(M)}emit(w,...M){this.logger.debug("Event: "+w),this.events.get(w)?.forEach(j=>{j(...M)})}async connect(){this.logger.info("Connecting"),this.setupConnectionStateHandler(),await this.websocketPromise}async disconnect(){this.logger.info("Disconnecting");try{this.signalingConnection.sendSignal("DONE")}catch{this.logger.error("FAILED TO SEND FINAL MESSAGE")}try{this.signalingConnection.disconnect()}catch{this.logger.error("SIGNALING ALREADY DISCONNECTED")}try{await this.pc.disconnect()}catch{this.logger.error("LOCAL PEER ALREADY CLOSED")}}async join_lk_room(w){let M=JSON.parse(w);this.logger.debug(M),M.livekit_url&&M.livekit_token?await this.pc.connect(M.livekit_url,M.livekit_token):(this.disconnect(),this.emit("error","Invalid Join Info, Contact Simli For Support"))}setupConnectionStateHandler(){this.pc.on(Ln.RoomEvent.Disconnected,()=>{this.disconnect()}),this.pc.on(Ln.RoomEvent.Connected,()=>{}),this.pc.on(Ln.RoomEvent.TrackSubscribed,(w,M,j)=>{this.logger.debug("Track Received: "+w.kind),w.kind===Ln.Track.Kind.Video?(w.attach(this.videoElementAnchor),this.videoElementAnchor.requestVideoFrameCallback(()=>{this.emit("start")})):w.kind===Ln.Track.Kind.Audio&&w.attach(this.audioElementAnchor)})}};Cr.LivekitTransport=Na});var nu=jt(wr=>{"use strict";Object.defineProperty(wr,"__esModule",{value:!0});wr.P2PTransport=void 0;var Cm=Aa(),tu=La(),xa=class{videoElementAnchor;audioElementAnchor;signalingConnection;session_token;pc;events=new Map;logger;iceCandidateCount;previousIceCandidateCount;iceTimeout=null;websocketPromise;websocketReject=null;constructor(w,M,j,U,q,fe,Ae,Ve){this.logger=Ae,this.on("startup_error",Ve),this.session_token=M;let le=new URL(w+"/compose/webrtc/p2p");le.searchParams.set("session_token",M),le.searchParams.set("enableSFU",String(j)),this.on("destination",Le=>(0,tu.register_destination)(this.logger,Le)),this.signalingConnection=new Cm.WebSocketSignaling(le,this.logger),this.websocketPromise=new Promise((Le,$e)=>{this.websocketReject=$e,this.signalingConnection.connect(()=>{Le("success"),this.logger.debug("P2P WebSocket Connected")})}),this.signalingConnection.wsConnection.onmessage=Le=>{(0,tu.handleMessage)(this,Le)},this.signalingConnection.wsConnection.onerror=Le=>{this.emit("startup_error","Websocket Failed"),this.websocketReject&&(this.websocketReject("Websocket Failed"),this.websocketReject=null)},this.on("connection_info",Le=>this.registerPeerInfo(Le)),this.videoElementAnchor=q,this.audioElementAnchor=fe,this.iceCandidateCount=0,this.previousIceCandidateCount=0;let _t={sdpSemantics:"unified-plan",iceServers:U};this.pc=new window.RTCPeerConnection(_t),this.pc.addTransceiver("audio",{direction:"recvonly"}),this.pc.addTransceiver("video",{direction:"recvonly"})}on(w,M){this.events.has(w)||this.events.set(w,new Set),this.events.get(w)?.add(M)}off(w,M){this.events.get(w)?.delete(M)}emit(w,...M){this.events.get(w)?.forEach(j=>{try{j(...M)}catch{this.logger.error("CALLBACK FAILED: "+j.name)}})}async connect(){let w=await this.pc.createOffer();await this.pc.setLocalDescription(w),await this.waitForIceGathering(),this.setupPeerConnectionListeners(),await this.websocketPromise,this.pc.localDescription&&this.signalingConnection.sendOffer(this.pc.localDescription)}async disconnect(){this.logger.info("Disconnecting");try{this.signalingConnection.sendSignal("DONE")}catch{this.logger.error("FAILED TO SEND FINAL MESSAGE")}try{this.signalingConnection.disconnect()}catch{this.logger.error("SIGNALING ALREADY DISCONNECTED")}try{this.pc.close()}catch{this.logger.error("LOCAL PEER ALREADY CLOSED")}}async registerPeerInfo(w){let M=JSON.parse(w);M.sdp&&M.type=="answer"?await this.pc.setRemoteDescription(new RTCSessionDescription(M)):(this.disconnect(),this.emit("error","Invalid Join Info, Contact Simli For Support"))}async waitForIceGathering(){if(this.iceCandidateCount=0,this.previousIceCandidateCount=0,this.pc.iceGatheringState!=="complete")return new Promise((w,M)=>{this.iceTimeout||(this.iceTimeout=setTimeout(()=>{M(new Error("ICE gathering timeout"))},1e4));let j=()=>{this.pc.iceGatheringState==="complete"||this.iceCandidateCount===this.previousIceCandidateCount?(this.iceTimeout&&clearTimeout(this.iceTimeout),w()):(this.previousIceCandidateCount=this.iceCandidateCount,setTimeout(j,150))};j()})}setupPeerConnectionListeners(){this.pc.addEventListener("track",w=>{w.track.kind==="video"?(this.videoElementAnchor.srcObject=w.streams[0],this.videoElementAnchor.requestVideoFrameCallback(()=>{this.emit("start")})):w.track.kind==="audio"&&this.audioElementAnchor&&(this.audioElementAnchor.srcObject=w.streams[0])}),this.pc.onicecandidate=w=>{w.candidate!==null&&(this.iceCandidateCount+=1)}}};wr.P2PTransport=xa});var su=jt(vt=>{"use strict";Object.defineProperty(vt,"__esModule",{value:!0});vt.LogLevel=vt.Logger=vt.SimliClient=void 0;vt.generateSimliSessionToken=Rm;vt.generateIceServers=Pm;var iu=eu(),ru=nu(),Rr=_a();Object.defineProperty(vt,"Logger",{enumerable:!0,get:function(){return Rr.Logger}});Object.defineProperty(vt,"LogLevel",{enumerable:!0,get:function(){return Rr.LogLevel}});var wm=u=>{if(u<=0)throw"Invalid Buffer Size, Can't be negative";if(Math.floor(u)-u!=0)throw"Invalid Buffer Size, Can't be a float";return`
class AudioProcessor extends AudioWorkletProcessor {
constructor() {
super();
this.buffer = new Int16Array(${u});
this.bufferIndex = 0;
}
process(inputs, outputs, parameters) {
const input = inputs[0];
const inputChannel = input[0];
if (inputChannel) {
for (let i = 0; i < inputChannel.length; i++) {
this.buffer[this.bufferIndex] =
Math.max(
-32768,
Math.min(
32767,
Math.round(inputChannel[i] * 32767)
)
);
this.bufferIndex++;
if (this.bufferIndex === this.buffer.length) {
// Calculate RMS of this complete audio chunk.
let sumSquares = 0;
for (let j = 0; j < this.buffer.length; j++) {
const sample = this.buffer[j] / 32768;
sumSquares += sample * sample;
}
const rms = Math.sqrt(
sumSquares / this.buffer.length
);
// Ignore silence / very low-level noise.
const SILENCE_THRESHOLD = 0.008;
if (rms >= SILENCE_THRESHOLD) {
this.port.postMessage({
type: 'audioData',
data: this.buffer.slice(0, this.bufferIndex)
});
}
this.bufferIndex = 0;
}
}
}
return true;
}
}
registerProcessor('audio-processor', AudioProcessor);
`};async function Rm(u,w="https://api.simli.ai"){let M=`${w}/compose/token`,j=await fetch(M,{method:"POST",body:JSON.stringify(u.config),headers:{"Content-Type":"application/json","x-simli-api-key":u.apiKey}});if(!j.ok)throw await j.text();return await j.json()}async function Pm(u,w="https://api.simli.ai"){try{let M=`${w}/compose/ice`,j=await fetch(M,{headers:{"Content-Type":"application/json","x-simli-api-key":u},method:"GET"});if(!j.ok)throw new Error(`SIMLI: HTTP error! status: ${j.status}`);let U=await j.json();if(!U||U.length===0)throw new Error("SIMLI: No ICE servers returned");return U}catch{return[{urls:["stun:stun.l.google.com:19302"]}]}}var Ua=class{session_token;transport="livekit";signaling="websockets";videoElement;audioElement;audioBufferSize=3e3;connection;connectionTimeout;connectionResolve;connectionReject;connectionPromise;sourceNode=null;audioWorklet=null;MAX_RETRY_ATTEMPTS=10;RETRY_DELAY=2e3;CONNECTION_TIMEOUT_MS=15e3;retryAttempt=0;SimliWSURL="wss://api.simli.ai";audioContext=new(window.AudioContext||window.webkitAudioContext)({sampleRate:16e3});logger;iceServers;persistent_events;failReason=null;shouldStop=!1;on(w,M){this.persistent_events.has(w)||this.persistent_events.set(w,new Set),this.persistent_events.get(w)?.add(M),this.logger.debug("Registered Callback for Event: "+w),this.connection.on(w,M)}off(w,M){if(!this.persistent_events.has(w))throw"Event Not Regsitered";this.persistent_events.get(w)?.delete(M),this.connection.off(w,M)}constructor(w,M,j,U,q=Rr.LogLevel.DEBUG,fe="p2p",Ae="websockets",Ve="wss://api.simli.ai",le=3e3){if(le<=0)throw"Invalid Buffer Size, Can't be negative";if(Math.floor(le)-le!=0)throw"Invalid Buffer Size, Can't be a float";if(!(Ve.startsWith("ws://")||Ve.startsWith("wss://"))||Ve.endsWith("/"))throw"Invalid Simli WS URL";this.audioBufferSize=le,this.session_token=w,this.transport=fe,this.signaling=Ae,this.SimliWSURL=Ve,this.videoElement=M,this.audioElement=j,this.iceServers=U,this.logger=new Rr.Logger(q);let _t,Le;switch(this.connectionPromise=new Promise(($e,Ir)=>{_t=$e,Le=Ir}),this.connectionResolve=_t,this.connectionReject=Le,this.persistent_events=new Map,this.connectionTimeout=setTimeout(()=>this.connectionReject("CONNECTION TIMED OUT"),this.CONNECTION_TIMEOUT_MS),this.transport){case"livekit":this.connection=new iu.LivekitTransport(this.SimliWSURL,this.session_token,M,j,this.logger,this.connectionReject);break;case"p2p":if(!U||U.length==0)throw"Ice Servers Required for P2P Mode";this.connection=new ru.P2PTransport(this.SimliWSURL,this.session_token,!0,U,M,j,this.logger,this.connectionReject);break;default:throw new Error("Not Implemented Yet")}this.connection.on("start",()=>{this.connectionResolve(),clearTimeout(this.connectionTimeout)}),this.connection.on("unknown",$e=>this.logger.debug("UNKOWN MESSAGE FROM SERVER: "+$e)),this.connection.on("error",$e=>{this.failReason=$e,this.connectionReject($e)})}resetConnections(w,M,j){this.failReason=null;let U,q;switch(this.connectionPromise=new Promise((fe,Ae)=>{U=fe,q=Ae}),this.connectionResolve=U,this.connectionReject=q,this.connectionTimeout=setTimeout(()=>this.connectionReject("Connection Timed Out"),this.CONNECTION_TIMEOUT_MS),this.transport){case"livekit":this.connection=new iu.LivekitTransport(this.SimliWSURL,this.session_token,w,M,this.logger,this.connectionReject);break;case"p2p":if(!j||j.length==0)throw"Ice Servers Required for P2P Mode";this.connection=new ru.P2PTransport(this.SimliWSURL,this.session_token,!0,j,w,M,this.logger,this.connectionReject);break;default:throw new Error("Not Implemented Yet")}this.connection.on("start",()=>{this.connectionResolve(),clearTimeout(this.connectionTimeout)}),this.connection.on("error",fe=>{this.retryAttempt=this.MAX_RETRY_ATTEMPTS,this.connectionReject(fe)}),this.connection.on("unknown",fe=>this.logger.debug("UNKOWN MESSAGE FROM SERVER: "+fe)),this.persistent_events.forEach((fe,Ae)=>{fe.forEach(Ve=>{this.connection.on(Ae,Ve)})})}async start(){if(this.shouldStop)throw new Error("Disconnect Already Called, Can't reuse same SimliClient multiple times create a new SimliClient Object");try{await this.connection.connect(),await this.connectionPromise,this.retryAttempt=0}catch(w){if(this.failReason)throw w;if(this.retryAttempt>=this.MAX_RETRY_ATTEMPTS)throw new Error("Too Many Retry Attempts Failed to connect");if(this.shouldStop)throw this.shouldStop=!1,new Error("Called Disconnect Before A Connecction succeeded");this.logger.error("FAILED: "+w),await this.connection.disconnect(),await new Promise(M=>setTimeout(M,this.RETRY_DELAY)),this.retryAttempt+=1,this.retryAttempt>2&&(this.transport="livekit"),this.resetConnections(this.videoElement,this.audioElement,this.iceServers),await this.start()}}async stop(){this.shouldStop=!0,await this.connection.disconnect()}listenToMediastreamTrack(w){let M=this.audioContext.createMediaStreamSource(new MediaStream([w]));this.sourceNode=M,this.attachSourceToWorklet(this.audioContext,M)}listenToAudioElement(w){let M=this.audioContext.createMediaElementSource(w);this.attachSourceToWorklet(this.audioContext,M)}attachSourceToWorklet(w,M){w.audioWorklet.addModule(URL.createObjectURL(new Blob([wm(this.audioBufferSize)],{type:"application/javascript"}))).then(()=>{if(this.audioWorklet=new AudioWorkletNode(w,"audio-processor"),this.audioWorklet===null)throw new Error("SIMLI: AudioWorklet not initialized");M.connect(this.audioWorklet),this.audioWorklet.port.onmessage=j=>{j.data.type==="audioData"&&this.connection.signalingConnection.sendAudioData(new Uint8Array(j.data.data.buffer))}})}ClearBuffer=()=>{this.connection.signalingConnection.sendSignal("SKIP")};sendAudioData(w){this.connection.signalingConnection.sendAudioData(w)}sendAudioDataImmediate(w){this.connection.signalingConnection.sendAudioDataImmediate(w)}};vt.SimliClient=Ua});var Im=jt(kt=>{Object.defineProperty(kt,"__esModule",{value:!0});kt.LogLevel=kt.generateIceServers=kt.generateSimliSessionToken=kt.SimliClient=void 0;var Pr=su();Object.defineProperty(kt,"SimliClient",{enumerable:!0,get:function(){return Pr.SimliClient}});Object.defineProperty(kt,"generateSimliSessionToken",{enumerable:!0,get:function(){return Pr.generateSimliSessionToken}});Object.defineProperty(kt,"generateIceServers",{enumerable:!0,get:function(){return Pr.generateIceServers}});Object.defineProperty(kt,"LogLevel",{enumerable:!0,get:function(){return Pr.LogLevel}})});return Im();})();