1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,603464,e=>{"use strict";var t=e.i(94602),i=e.i(495068);e.s(["default",0,({children:e,className:n})=>{let a=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let e=a.current;if(!e||window.matchMedia("(pointer: coarse)").matches)return;let t=!1,i=()=>{t||(t=!0,requestAnimationFrame(()=>{let i=.3*window.scrollY;e.style.transform=`translate3d(0, ${i}px, 0) scale(1.15)`,t=!1}))};return window.addEventListener("scroll",i,{passive:!0}),()=>window.removeEventListener("scroll",i)},[]),(0,t.jsx)("div",{ref:a,className:n,children:e})}])},571650,(e,t,i)=>{"use strict";var n=Object.prototype.hasOwnProperty,a="~";function r(){}function s(e,t,i){this.fn=e,this.context=t,this.once=i||!1}function o(e,t,i,n,r){if("function"!=typeof i)throw TypeError("The listener must be a function");var o=new s(i,n||e,r),c=a?a+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],o]:e._events[c].push(o):(e._events[c]=o,e._eventsCount++),e}function c(e,t){0==--e._eventsCount?e._events=new r:delete e._events[t]}function l(){this._events=new r,this._eventsCount=0}Object.create&&(r.prototype=Object.create(null),new r().__proto__||(a=!1)),l.prototype.eventNames=function(){var e,t,i=[];if(0===this._eventsCount)return i;for(t in e=this._events)n.call(e,t)&&i.push(a?t.slice(1):t);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},l.prototype.listeners=function(e){var t=a?a+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var n=0,r=i.length,s=Array(r);n<r;n++)s[n]=i[n].fn;return s},l.prototype.listenerCount=function(e){var t=a?a+e:e,i=this._events[t];return i?i.fn?1:i.length:0},l.prototype.emit=function(e,t,i,n,r,s){var o=a?a+e:e;if(!this._events[o])return!1;var c,l,d=this._events[o],u=arguments.length;if(d.fn){switch(d.once&&this.removeListener(e,d.fn,void 0,!0),u){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,t),!0;case 3:return d.fn.call(d.context,t,i),!0;case 4:return d.fn.call(d.context,t,i,n),!0;case 5:return d.fn.call(d.context,t,i,n,r),!0;case 6:return d.fn.call(d.context,t,i,n,r,s),!0}for(l=1,c=Array(u-1);l<u;l++)c[l-1]=arguments[l];d.fn.apply(d.context,c)}else{var h,p=d.length;for(l=0;l<p;l++)switch(d[l].once&&this.removeListener(e,d[l].fn,void 0,!0),u){case 1:d[l].fn.call(d[l].context);break;case 2:d[l].fn.call(d[l].context,t);break;case 3:d[l].fn.call(d[l].context,t,i);break;case 4:d[l].fn.call(d[l].context,t,i,n);break;default:if(!c)for(h=1,c=Array(u-1);h<u;h++)c[h-1]=arguments[h];d[l].fn.apply(d[l].context,c)}}return!0},l.prototype.on=function(e,t,i){return o(this,e,t,i,!1)},l.prototype.once=function(e,t,i){return o(this,e,t,i,!0)},l.prototype.removeListener=function(e,t,i,n){var r=a?a+e:e;if(!this._events[r])return this;if(!t)return c(this,r),this;var s=this._events[r];if(s.fn)s.fn!==t||n&&!s.once||i&&s.context!==i||c(this,r);else{for(var o=0,l=[],d=s.length;o<d;o++)(s[o].fn!==t||n&&!s[o].once||i&&s[o].context!==i)&&l.push(s[o]);l.length?this._events[r]=1===l.length?l[0]:l:c(this,r)}return this},l.prototype.removeAllListeners=function(e){var t;return e?(t=a?a+e:e,this._events[t]&&c(this,t)):(this._events=new r,this._eventsCount=0),this},l.prototype.off=l.prototype.removeListener,l.prototype.addListener=l.prototype.on,l.prefixed=a,l.EventEmitter=l,t.exports=l},880168,e=>{"use strict";let t,i,n,a,r;var s,o,c,l,d,u,h,p,m,g,f,v,b,k,y,T,S,w,C,x,E,P,R,I,N,_,D,M,O,A,L,j,U,F,B,q,V,H,z,W,G,K,J,Q,$,Y,X,Z,ee,et,ei,en,ea,er,es,eo,ec,el,ed,eu,eh,ep,em,eg,ef,ev,eb,ek,ey,eT,eS,ew,eC,ex,eE,eP,eR,eI,eN,e_,eD,eM,eO,eA,eL,ej,eU,eF,eB,eq,eV,eH,ez,eW,eG,eK,eJ,eQ,e$=e.i(94602),eY=e.i(495068),eX=e.i(571650);eX.default;var eZ=e.i(591752),e0=Object.defineProperty,e1=(e,t,i)=>{let n;return(n="symbol"!=typeof t?t+"":t)in e?e0(e,n,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[n]=i};class e2{constructor(){e1(this,"_locking"),e1(this,"_locks"),this._locking=Promise.resolve(),this._locks=0}isLocked(){return this._locks>0}lock(){let e;this._locks+=1;let t=new Promise(t=>e=()=>{this._locks-=1,t()}),i=this._locking.then(()=>e);return this._locking=this._locking.then(()=>t),i}}function e3(e,t){if(!e)throw Error(t)}function e4(e){if("number"!=typeof e)throw Error("invalid int 32: "+typeof e);if(!Number.isInteger(e)||e>0x7fffffff||e<-0x80000000)throw Error("invalid int 32: "+e)}function e5(e){if("number"!=typeof e)throw Error("invalid uint 32: "+typeof e);if(!Number.isInteger(e)||e>0xffffffff||e<0)throw Error("invalid uint 32: "+e)}function e6(e){if("number"!=typeof e)throw Error("invalid float 32: "+typeof e);if(Number.isFinite(e)&&(e>34028234663852886e22||e<-34028234663852886e22))throw Error("invalid float 32: "+e)}let e8=Symbol("@bufbuild/protobuf/enum-type");function e9(e,t,i,n){e[e8]=e7(t,i.map(t=>({no:t.no,name:t.name,localName:e[t.no]})))}function e7(e,t,i){let n=Object.create(null),a=Object.create(null),r=[];for(let e of t){let t=te(e);r.push(t),n[e.name]=t,a[e.no]=t}return{typeName:e,values:r,findName:e=>n[e],findNumber:e=>a[e]}}function te(e){return"localName"in e?e:Object.assign(Object.assign({},e),{localName:e.name})}class tt{equals(e){return this.getType().runtime.util.equals(this.getType(),this,e)}clone(){return this.getType().runtime.util.clone(this)}fromBinary(e,t){let i=this.getType().runtime.bin,n=i.makeReadOptions(t);return i.readMessage(this,n.readerFactory(e),e.byteLength,n),this}fromJson(e,t){let i=this.getType(),n=i.runtime.json,a=n.makeReadOptions(t);return n.readMessage(i,e,a,this),this}fromJsonString(e,t){let i;try{i=JSON.parse(e)}catch(e){throw Error("cannot decode ".concat(this.getType().typeName," from JSON: ").concat(e instanceof Error?e.message:String(e)))}return this.fromJson(i,t)}toBinary(e){let t=this.getType().runtime.bin,i=t.makeWriteOptions(e),n=i.writerFactory();return t.writeMessage(this,n,i),n.finish()}
1toJson(e){let t=this.getType().runtime.json,i=t.makeWriteOptions(e);return t.writeMessage(this,i)}toJsonString(e){var t;return JSON.stringify(this.toJson(e),null,null!=(t=null==e?void 0:e.prettySpaces)?t:0)}toJSON(){return this.toJson({emitDefaultValues:!0})}getType(){return Object.getPrototypeOf(this).constructor}}function ti(){let e=0,t=0;for(let i=0;i<28;i+=7){let n=this.buf[this.pos++];if(e|=(127&n)<<i,(128&n)==0)return this.assertBounds(),[e,t]}let i=this.buf[this.pos++];if(e|=(15&i)<<28,t=(112&i)>>4,(128&i)==0)return this.assertBounds(),[e,t];for(let i=3;i<=31;i+=7){let n=this.buf[this.pos++];if(t|=(127&n)<<i,(128&n)==0)return this.assertBounds(),[e,t]}throw Error("invalid varint")}function tn(e,t,i){for(let n=0;n<28;n+=7){let a=e>>>n,r=a>>>7!=0||0!=t,s=(r?128|a:a)&255;if(i.push(s),!r)return}let n=e>>>28&15|(7&t)<<4,a=t>>3!=0;if(i.push((a?128|n:n)&255),a){for(let e=3;e<31;e+=7){let n=t>>>e,a=n>>>7!=0,r=(a?128|n:n)&255;if(i.push(r),!a)return}i.push(t>>>31&1)}}function ta(e){let t="-"===e[0];t&&(e=e.slice(1));let i=0,n=0;function a(t,a){let r=Number(e.slice(t,a));n*=1e6,(i=1e6*i+r)>=0x100000000&&(n+=i/0x100000000|0,i%=0x100000000)}return a(-24,-18),a(-18,-12),a(-12,-6),a(-6),t?to(i,n):ts(i,n)}function tr(e,t){if({lo:e,hi:t}={lo:e>>>0,hi:t>>>0},t<=2097151)return String(0x100000000*t+e);let i=0xffffff&e,n=(e>>>24|t<<8)&0xffffff,a=t>>16&65535,r=i+6777216*n+6710656*a,s=n+8147497*a,o=2*a;return r>=1e7&&(s+=Math.floor(r/1e7),r%=1e7),s>=1e7&&(o+=Math.floor(s/1e7),s%=1e7),o.toString()+tc(s)+tc(r)}function ts(e,t){return{lo:0|e,hi:0|t}}function to(e,t){return t=~t,e?e=~e+1:t+=1,ts(e,t)}let tc=e=>{let t=String(e);return"0000000".slice(t.length)+t};function tl(e,t){if(e>=0){for(;e>127;)t.push(127&e|128),e>>>=7;t.push(e)}else{for(let i=0;i<9;i++)t.push(127&e|128),e>>=7;t.push(1)}}function td(){let e=this.buf[this.pos++],t=127&e;if((128&e)==0||(t|=(127&(e=this.buf[this.pos++]))<<7,(128&e)==0)||(t|=(127&(e=this.buf[this.pos++]))<<14,(128&e)==0)||(t|=(127&(e=this.buf[this.pos++]))<<21,(128&e)==0))return this.assertBounds(),t;t|=(15&(e=this.buf[this.pos++]))<<28;for(let t=5;(128&e)!=0&&t<10;t++)e=this.buf[this.pos++];if((128&e)!=0)throw Error("invalid varint");return this.assertBounds(),t>>>0}let tu=function(){let e=new DataView(new ArrayBuffer(8));if("function"==typeof BigInt&&"function"==typeof e.getBigInt64&&"function"==typeof e.getBigUint64&&"function"==typeof e.setBigInt64&&"function"==typeof e.setBigUint64&&("object"!=typeof eZ.default||"object"!=typeof eZ.default.env||"1"!==eZ.default.env.BUF_BIGINT_DISABLE)){let t=BigInt("-9223372036854775808"),i=BigInt("9223372036854775807"),n=BigInt("0"),a=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(e){let n="bigint"==typeof e?e:BigInt(e);if(n>i||n<t)throw Error("int64 invalid: ".concat(e));return n},uParse(e){let t="bigint"==typeof e?e:BigInt(e);if(t>a||t<n)throw Error("uint64 invalid: ".concat(e));return t},enc(t){return e.setBigInt64(0,this.parse(t),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},uEnc(t){return e.setBigInt64(0,this.uParse(t),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},dec:(t,i)=>(e.setInt32(0,t,!0),e.setInt32(4,i,!0),e.getBigInt64(0,!0)),uDec:(t,i)=>(e.setInt32(0,t,!0),e.setInt32(4,i,!0),e.getBigUint64(0,!0))}}let t=e=>e3(/^-?[0-9]+$/.test(e),"int64 invalid: ".concat(e)),i=e=>e3(/^[0-9]+$/.test(e),"uint64 invalid: ".concat(e));return{zero:"0",supported:!1,parse:e=>("string"!=typeof e&&(e=e.toString()),t(e),e),uParse:e=>("string"!=typeof e&&(e=e.toString()),i(e),e),enc:e=>("string"!=typeof e&&(e=e.toString()),t(e),ta(e)),uEnc:e=>("string"!=typeof e&&(e=e.toString()),i(e),ta(e)),dec:(e,t)=>{let i,n,a;return(n=0x80000000&(i=ts(e,t)).hi)&&(i=to(i.lo,i.hi)),a=tr(i.lo,i.hi),n?"-"+a:a},uDec:(e,t)=>tr(e,t)}}();function th(e,t,i){if(t===i)return!0;if(e==et.BYTES){if(!(t instanceof Uint8Array)||!(i instanceof Uint8Array)||t.length!==i.length)return!1;for(let e=0;e<t.length;e++)if(t[e]!==i[e])return!1;return!0}switch(e){case et.UINT64:case et.FIXED64:case et.INT64:case et.SFIXED64:case et.SINT64:return t==i}return!1}function tp(e,t){switch(e){case et.BOOL:return!1;case et.UINT64:case et.FIXED64:case et.INT64:case et.SFIXED64:case et.SINT64:return 0==t?tu.zero:"0";case et.DOUBLE:case et.FLOAT:return 0;case et.BYTES:return new Uint8Array(0);case et.STRING:return"";default:return 0}}function tm(e,t){switch(e){case et.BOOL:return!1===t;case et.STRING:return""===t;case et.BYTES:return t instanceof Uint8Array&&!t.byteLength;default:return 0==t}}(s=et||(et={}))[s.DOUBLE=1]="DOUBLE",s[s.FLOAT=2]="FLOAT",s[s.INT64=3]="INT64",s[s.UINT64=4]="UINT64",s[s.INT32=5]="INT32",s[s.FIXED64=6]="FIXED64",s[s.FIXED32=7]="FIXED32",s[s.BOOL=8]="BOOL",s[s.STRING=9]="STRING",s[s.BYTES=12]="BYTES",s[s.UINT32=13]="UINT32",s[s.SFIXED32=15]="SFIXED32",s[s.SFIXED64=16]="SFIXED64",s[s.SINT32=17]="SINT32",s[s.SINT64=18]="SINT64",(o=ei||(ei={}))[o.BIGINT=0]="BIGINT",o[o.STRING=1]="STRING",(c=en||(en={}))[c.Varint=0]="Varint",c[c.Bit64=1]="Bit64",c[c.LengthDelimited=2]="LengthDelimited",c[c.StartGroup=3]="StartGroup",c[c.EndGroup=4]="EndGroup",c[c.Bit32=5]="Bit32";class tg{constructor(e){this.stack=[],this.textEncoder=null!=e?e:new TextEncoder,this.chunks=[],this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let e=0;for(let t=0;t<this.chunks.length;t++)e+=this.chunks[t].length;let t=new Uint8Array(e),i=0;for(let e=0;e<this.chunks.length;e++)t.set(this.chunks[e],i),i+=this.chunks[e].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 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(e5(e);e>127;)this.buf.push(127&e|128),e>>>=7;return this.buf.push(e),this}int32(e){return e4(e),tl(e,this.buf),this}bool(e){return this.buf.push(+!!e),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){e6(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){e5(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){e4(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return e4(e),tl(e=(e<<1^e>>31)>>>0,this.buf),this}sfixed64(e){let t=new Uint8Array(8),i=new DataView(t.buffer),n=tu.enc(e);return i.setInt32(0,n.lo,!0),i.setInt32(4,n.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),i=new DataView(t.buffer),n=tu.uEnc(e);return i.setInt32(0,n.lo,!0),i.setInt32(4,n.hi,!0),this.raw(t)}int64(e){let t=tu.enc(e);return tn(t.lo,t.hi,this.buf),this}sint64(e){let t=tu.enc(e),i=t.hi>>31;return tn(t.lo<<1^i,(t.hi<<1|t.lo>>>31)^i,this.buf),this}uint64(e){let t=tu.uEnc(e);return tn(t.lo,t.hi,this.buf),this}}class tf{constructor(e,t){this.varint64=ti,this.uint32=td,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.textDecoder=null!=t?t:new TextDecoder}tag(){let e=this.uint32(),t=e>>>3,i=7&e;
1if(t<=0||i<0||i>5)throw Error("illegal tag: field no "+t+" wire type "+i);return[t,i]}skip(e,t){let i=this.pos;switch(e){case en.Varint:for(;128&this.buf[this.pos++];);break;case en.Bit64:this.pos+=4;case en.Bit32:this.pos+=4;break;case en.LengthDelimited:let n=this.uint32();this.pos+=n;break;case en.StartGroup:for(;;){let[e,i]=this.tag();if(i===en.EndGroup){if(void 0!==t&&e!==t)throw Error("invalid end group tag");break}this.skip(i,e)}break;default:throw Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(i,this.pos)}assertBounds(){if(this.pos>this.len)throw RangeError("premature EOF")}int32(){return 0|this.uint32()}sint32(){let e=this.uint32();return e>>>1^-(1&e)}int64(){return tu.dec(...this.varint64())}uint64(){return tu.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),i=-(1&e);return e=(e>>>1|(1&t)<<31)^i,t=t>>>1^i,tu.dec(e,t)}bool(){let[e,t]=this.varint64();return 0!==e||0!==t}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return tu.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return tu.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 tv(e){let t=e.field.localName,i=Object.create(null);return i[t]=function(e){let t=e.field;if(t.repeated)return[];if(void 0!==t.default)return t.default;switch(t.kind){case"enum":return t.T.values[0].no;case"scalar":return tp(t.T,t.L);case"message":let i=t.T,n=new i;return i.fieldWrapper?i.fieldWrapper.unwrapField(n):n;case"map":throw"map fields are not allowed to be extensions"}}(e),[i,()=>i[t]]}let tb="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),tk=[];for(let e=0;e<tb.length;e++)tk[tb[e].charCodeAt(0)]=e;tk[45]=tb.indexOf("+"),tk[95]=tb.indexOf("/");let ty={dec(e){let t=3*e.length/4;"="==e[e.length-2]?t-=2:"="==e[e.length-1]&&(t-=1);let i=new Uint8Array(t),n=0,a=0,r,s=0;for(let t=0;t<e.length;t++){if(void 0===(r=tk[e.charCodeAt(t)]))switch(e[t]){case"=":a=0;case"\n":case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string.")}switch(a){case 0:s=r,a=1;break;case 1:i[n++]=s<<2|(48&r)>>4,s=r,a=2;break;case 2:i[n++]=(15&s)<<4|(60&r)>>2,s=r,a=3;break;case 3:i[n++]=(3&s)<<6|r,a=0}}if(1==a)throw Error("invalid base64 string.");return i.subarray(0,n)},enc(e){let t="",i=0,n,a=0;for(let r=0;r<e.length;r++)switch(n=e[r],i){case 0:t+=tb[n>>2],a=(3&n)<<4,i=1;break;case 1:t+=tb[a|n>>4],a=(15&n)<<2,i=2;break;case 2:t+=tb[a|n>>6],t+=tb[63&n],i=0}return i&&(t+=tb[a],t+="=",1==i&&(t+="=")),t}};function tT(e,t){let i=e.getType();return t.extendee.typeName===i.typeName&&!!i.runtime.bin.listUnknownFields(e).find(e=>e.no==t.field.no)}function tS(e,t){e3(e.extendee.typeName==t.getType().typeName,"extension ".concat(e.typeName," can only be applied to message ").concat(e.extendee.typeName))}function tw(e,t){let i=e.localName;if(e.repeated)return t[i].length>0;if(e.oneof)return t[e.oneof.localName].case===i;switch(e.kind){case"enum":case"scalar":if(e.opt||e.req)return void 0!==t[i];if("enum"==e.kind)return t[i]!==e.T.values[0].no;return!tm(e.T,t[i]);case"message":return void 0!==t[i];case"map":return Object.keys(t[i]).length>0}}function tC(e,t){let i=e.localName,n=!e.opt&&!e.req;if(e.repeated)t[i]=[];else if(e.oneof)t[e.oneof.localName]={case:void 0};else switch(e.kind){case"map":t[i]={};break;case"enum":t[i]=n?e.T.values[0].no:void 0;break;case"scalar":t[i]=n?tp(e.T,e.L):void 0;break;case"message":t[i]=void 0}}function tx(e,t){if(null===e||"object"!=typeof e||!Object.getOwnPropertyNames(tt.prototype).every(t=>t in e&&"function"==typeof e[t]))return!1;let i=e.getType();return null!==i&&"function"==typeof i&&"typeName"in i&&"string"==typeof i.typeName&&(void 0===t||i.typeName==t.typeName)}function tE(e,t){return tx(t)||!e.fieldWrapper?t:e.fieldWrapper.wrapField(t)}et.DOUBLE,et.FLOAT,et.INT64,et.UINT64,et.INT32,et.UINT32,et.BOOL,et.STRING,et.BYTES;let tP={ignoreUnknownFields:!1},tR={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0},tI=Symbol(),tN=Symbol();function t_(e){if(null===e)return"null";switch(typeof e){case"object":return Array.isArray(e)?"array":"object";case"string":return e.length>100?"string":'"'.concat(e.split('"').join('\\"'),'"');default:return String(e)}}function tD(e,t,i,n,a){let r=i.localName;if(i.repeated){if(e3("map"!=i.kind),null===t)return;if(!Array.isArray(t))throw Error("cannot decode field ".concat(a.typeName,".").concat(i.name," from JSON: ").concat(t_(t)));let s=e[r];for(let e of t){if(null===e)throw Error("cannot decode field ".concat(a.typeName,".").concat(i.name," from JSON: ").concat(t_(e)));switch(i.kind){case"message":s.push(i.T.fromJson(e,n));break;case"enum":let t=tO(i.T,e,n.ignoreUnknownFields,!0);t!==tN&&s.push(t);break;case"scalar":try{s.push(tM(i.T,e,i.L,!0))}catch(n){let t="cannot decode field ".concat(a.typeName,".").concat(i.name," from JSON: ").concat(t_(e));throw n instanceof Error&&n.message.length>0&&(t+=": ".concat(n.message)),Error(t)}}}}else if("map"==i.kind){if(null===t)return;if("object"!=typeof t||Array.isArray(t))throw Error("cannot decode field ".concat(a.typeName,".").concat(i.name," from JSON: ").concat(t_(t)));let s=e[r];for(let[e,r]of Object.entries(t)){let o;if(null===r)throw Error("cannot decode field ".concat(a.typeName,".").concat(i.name," from JSON: map value null"));try{o=function(e,t){if(e===et.BOOL)switch(t){case"true":t=!0;break;case"false":t=!1}return tM(e,t,ei.BIGINT,!0).toString()}(i.K,e)}catch(n){let e="cannot decode map key for field ".concat(a.typeName,".").concat(i.name," from JSON: ").concat(t_(t));throw n instanceof Error&&n.message.length>0&&(e+=": ".concat(n.message)),Error(e)}switch(i.V.kind){case"message":s[o]=i.V.T.fromJson(r,n);break;case"enum":let c=tO(i.V.T,r,n.ignoreUnknownFields,!0);c!==tN&&(s[o]=c);break;case"scalar":try{s[o]=tM(i.V.T,r,ei.BIGINT,!0)}catch(n){let e="cannot decode map value for field ".concat(a.typeName,".").concat(i.name," from JSON: ").concat(t_(t));throw n instanceof Error&&n.message.length>0&&(e+=": ".concat(n.message)),Error(e)}}}}else switch(i.oneof&&(e=e[i.oneof.localName]={case:r},r="value"),i.kind){case"message":let s=i.T;if(null===t&&"google.protobuf.Value"!=s.typeName)return;let o=e[r];tx(o)?o.fromJson(t,n):(e[r]=o=s.fromJson(t,n),s.fieldWrapper&&!i.oneof&&(e[r]=s.fieldWrapper.unwrapField(o)));break;case"enum":let c=tO(i.T,t,n.ignoreUnknownFields,!1);switch(c){case tI:tC(i,e);break;case tN:break;default:e[r]=c}break;case"scalar":try{let n=tM(i.T,t,i.L,!1);n===tI?tC(i,e):e[r]=n}catch(n){let e="cannot decode field ".concat(a.typeName,".").concat(i.name," from JSON: ").concat(t_(t));throw n instanceof Error&&n.message.length>0&&(e+=": ".concat(n.message)),Error(e)}}}function tM(e,t,i,n){if(null===t)return n?tp(e,i):tI;switch(e){case et.DOUBLE:case et.FLOAT:if("NaN"===t)return NaN;if("Infinity"===t)return 1/0;if("-Infinity"===t)return-1/0;if(""===t||"string"==typeof t&&t.trim().length!==t.length||"string"!=typeof t&&"number"!=typeof t)break;let a=Number(t);if(Number.isNaN(a)||!Number.isFinite(a))break;return e==et.FLOAT&&e6(a),a;case et.INT32:case et.FIXED32:case et.SFIXED32:case et.SINT32:case et.UINT32:let r;if("number"==typeof t?r=t:"string"==typeof t&&t.length>0&&t.trim().length===t.length&&(r=Number(t)),void 0===r)break;return e==et.UINT32||e==et.FIXED32?e5(r):e4(r),r;case et.INT64:case et.SFIXED64:case et.SINT64:if("number"!=typeof t&&"string"!=typeof t)break;let s=tu.parse(t);return i?s.toString():s;case et.FIXED64:case et.UINT64:if("number"!=typeof t&&"string"!=typeof t)break;let o=tu.uParse(t);return i?o.toString():o;case et.BOOL:if("boolean"!=typeof t)break;return t;case et.STRING:if("string"!=typeof t)break;try{encodeURIComponent(t)}catch(e){throw Error("invalid UTF8")}return t;case et.BYTES:if(""===t)return new Uint8Array(0);if("string"!=typeof t)break;return ty.dec(t)}throw Error()}function tO(e,t,i,n){if(null===t)return"google.protobuf.NullValue"==e.typeName?0:n?e.values[0].no:tI;switch(typeof t){case"number":if(Number.isInteger(t))return t;break;case"string":let a=e.findName(t);if(void 0!==a)return a.no;if(i)return tN}throw Error("cannot decode enum ".concat(e.typeName," from JSON: ").concat(t_(t)))}function tA(e,t,i){if("map"==e.kind){e3("object"==typeof t&&null!=t);let n={},a=Object.entries(t);switch(e.V.kind){case"scalar":for(let[t,i]of a)n[t.toString()]=tj(e.V.T,i);break;case"message":for(let[e,t]of a)n[e.toString()]=t.toJson(i);break;case"enum":let r=e.V.T;for(let[e,t]of a)n[e.toString()]=tL(r,t,i.enumAsInteger)}return i.emitDefaultValues||a.length>0?n:void 0}if(e.repeated){e3(Array.isArray(t));let n=[];switch(e.kind){case"scalar":for(let i=0;i<t.length;i++)n.push(tj(e.T,t[i]));break;case"enum":for(let a=0;a<t.length;a++)n.push(tL(e.T,t[a],i.enumAsInteger));break;case"message":for(let e=0;e<t.length;e++)n.push(t[e].toJson(i))}return i.emitDefaultValues||n.length>0?n:void 0}switch(e.kind){case"scalar":return tj(e.T,t);case"enum":return tL(e.T,t,i.enumAsInteger);case"message":return tE(e.T,t).toJson(i)}}function tL(e,t,i){var n;if(e3("number"==typeof t),"google.protobuf.NullValue"==e.typeName)return null;if(i)return t;let a=e.findNumber(t);return null!=(n=null==a?void 0:a.name)?n:t}function tj(e,t){switch(e){case et.INT32:case et.SFIXED32:case et.SINT32:case et.FIXED32:case et.UINT32:return e3("number"==typeof t),t;case et.FLOAT:case et.DOUBLE:if(e3("number"==typeof t),Number.isNaN(t))return"NaN";if(t===1/0)return"Infinity";if(t===-1/0)return"-Infinity";return t;case et.STRING:return e3("string"==typeof t),t;case et.BOOL:return e3("boolean"==typeof t),t;case et.UINT64:case et.FIXED64:case et.INT64:case et.SFIXED64:case et.SINT64:return e3("bigint"==typeof t||"string"==typeof t||"number"==typeof t),t.toString();case et.BYTES:return e3(t instanceof Uint8Array),ty.enc(t)}}let tU=Symbol("@bufbuild/protobuf/unknown-fields"),tF={readUnknownFields:!0,readerFactory:e=>new tf(e)},tB={writeUnknownFields:!0,writerFactory:()=>new tg};function tq(e,t,i,n,a){let{repeated:r,localName:s}=i;switch(i.oneof&&((e=e[i.oneof.localName]).case!=s&&delete e.value,e.case=s,s="value"),i.kind){case"scalar":case"enum":let o="enum"==i.kind?et.INT32:i.T,c=tz;if("scalar"==i.kind&&i.L>0&&(c=tH),r){let i=e[s];if(n==en.LengthDelimited&&o!=et.STRING&&o!=et.BYTES){let e=t.uint32()+t.pos;for(;t.pos<e;)i.push(c(t,o))}else i.push(c(t,o))}else e[s]=c(t,o);break;case"message":let l=i.T;r?e[s].push(tV(t,new l,a,i)):tx(e[s])?tV(t,e[s],a,i):(e[s]=tV(t,new l,a,i),!l.fieldWrapper||i.oneof||i.repeated||(e[
1s]=l.fieldWrapper.unwrapField(e[s])));break;case"map":let[d,u]=function(e,t,i){let n,a,r=t.uint32(),s=t.pos+r;for(;t.pos<s;){let[r]=t.tag();switch(r){case 1:n=tz(t,e.K);break;case 2:switch(e.V.kind){case"scalar":a=tz(t,e.V.T);break;case"enum":a=t.int32();break;case"message":a=tV(t,new e.V.T,i,void 0)}}}if(void 0===n&&(n=tp(e.K,ei.BIGINT)),"string"!=typeof n&&"number"!=typeof n&&(n=n.toString()),void 0===a)switch(e.V.kind){case"scalar":a=tp(e.V.T,ei.BIGINT);break;case"enum":a=e.V.T.values[0].no;break;case"message":a=new e.V.T}return[n,a]}(i,t,a);e[s][d]=u}}function tV(e,t,i,n){let a=t.getType().runtime.bin,r=null==n?void 0:n.delimited;return a.readMessage(t,e,r?n.no:e.uint32(),i,r),t}function tH(e,t){let i=tz(e,t);return"bigint"==typeof i?i.toString():i}function tz(e,t){switch(t){case et.STRING:return e.string();case et.BOOL:return e.bool();case et.DOUBLE:return e.double();case et.FLOAT:return e.float();case et.INT32:return e.int32();case et.INT64:return e.int64();case et.UINT64:return e.uint64();case et.FIXED64:return e.fixed64();case et.BYTES:return e.bytes();case et.FIXED32:return e.fixed32();case et.SFIXED32:return e.sfixed32();case et.SFIXED64:return e.sfixed64();case et.SINT64:return e.sint64();case et.UINT32:return e.uint32();case et.SINT32:return e.sint32()}}function tW(e,t,i,n){e3(void 0!==t);let a=e.repeated;switch(e.kind){case"scalar":case"enum":let r="enum"==e.kind?et.INT32:e.T;if(a)if(e3(Array.isArray(t)),e.packed)!function(e,t,i,n){if(!n.length)return;e.tag(i,en.LengthDelimited).fork();let[,a]=tJ(t);for(let t=0;t<n.length;t++)e[a](n[t]);e.join()}(i,r,e.no,t);else for(let n of t)tK(i,r,e.no,n);else tK(i,r,e.no,t);break;case"message":if(a)for(let a of(e3(Array.isArray(t)),t))tG(i,n,e,a);else tG(i,n,e,t);break;case"map":for(let[a,r]of(e3("object"==typeof t&&null!=t),Object.entries(t)))!function(e,t,i,n,a){e.tag(i.no,en.LengthDelimited),e.fork();let r=n;switch(i.K){case et.INT32:case et.FIXED32:case et.UINT32:case et.SFIXED32:case et.SINT32:r=Number.parseInt(n);break;case et.BOOL:e3("true"==n||"false"==n),r="true"==n}switch(tK(e,i.K,1,r),i.V.kind){case"scalar":tK(e,i.V.T,2,a);break;case"enum":tK(e,et.INT32,2,a);break;case"message":e3(void 0!==a),e.tag(2,en.LengthDelimited).bytes(a.toBinary(t))}e.join()}(i,n,e,a,r)}}function tG(e,t,i,n){let a=tE(i.T,n);i.delimited?e.tag(i.no,en.StartGroup).raw(a.toBinary(t)).tag(i.no,en.EndGroup):e.tag(i.no,en.LengthDelimited).bytes(a.toBinary(t))}function tK(e,t,i,n){e3(void 0!==n);let[a,r]=tJ(t);e.tag(i,a)[r](n)}function tJ(e){let t=en.Varint;switch(e){case et.BYTES:case et.STRING:t=en.LengthDelimited;break;case et.DOUBLE:case et.FIXED64:case et.SFIXED64:t=en.Bit64;break;case et.FIXED32:case et.SFIXED32:case et.FLOAT:t=en.Bit32}return[t,et[e].toLowerCase()]}function tQ(e){if(void 0===e)return e;if(tx(e))return e.clone();if(e instanceof Uint8Array){let t=new Uint8Array(e.byteLength);return t.set(e),t}return e}function t$(e){return e instanceof Uint8Array?e:new Uint8Array(e)}class tY{constructor(e,t){this._fields=e,this._normalizer=t}findJsonName(e){if(!this.jsonNames){let e={};for(let t of this.list())e[t.jsonName]=e[t.name]=t;this.jsonNames=e}return this.jsonNames[e]}find(e){if(!this.numbers){let e={};for(let t of this.list())e[t.no]=t;this.numbers=e}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){let e;this.members=[];let t=this.members;for(let i of this.list())i.oneof?i.oneof!==e&&(e=i.oneof,t.push(e)):t.push(i)}return this.members}}function tX(e,t){let i=t0(e);return t?i:t4(t3(i))}let tZ=t0;function t0(e){let t=!1,i=[];for(let n=0;n<e.length;n++){let a=e.charAt(n);switch(a){case"_":t=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":i.push(a),t=!1;break;default:t&&(t=!1,a=a.toUpperCase()),i.push(a)}}return i.join("")}let t1=new Set(["constructor","toString","toJSON","valueOf"]),t2=new Set(["getType","clone","equals","fromBinary","fromJson","fromJsonString","toBinary","toJson","toJsonString","toObject"]),t3=e=>{if(t2.has(e))return"".concat(e,"$");return e},t4=e=>
1{if(t1.has(e))return"".concat(e,"$");return e};class t5{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=function(e){return tX(e,!1)}(e)}addField(e){e3(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 e=0;e<this.fields.length;e++)this._lookup[this.fields[e].localName]=this.fields[e]}return this._lookup[e]}}let t6=(l=e=>new tY(e,e=>(function(e,t){var i,n,a,r,s,o;let c,l=[];for(let t of"function"==typeof e?e():e){if(t.localName=tX(t.name,void 0!==t.oneof),t.jsonName=null!=(i=t.jsonName)?i:tZ(t.name),t.repeated=null!=(n=t.repeated)&&n,"scalar"==t.kind&&(t.L=null!=(a=t.L)?a:ei.BIGINT),t.delimited=null!=(r=t.delimited)&&r,t.req=null!=(s=t.req)&&s,t.opt=null!=(o=t.opt)&&o,void 0===t.packed&&(t.packed="enum"==t.kind||"scalar"==t.kind&&t.T!=et.BYTES&&t.T!=et.STRING),void 0!==t.oneof){let e="string"==typeof t.oneof?t.oneof:t.oneof.name;c&&c.name==e||(c=new t5(e)),t.oneof=c,c.addField(t)}l.push(t)}return l})(e)),d=e=>{for(let t of e.getType().fields.byMember()){if(t.opt)continue;let i=t.localName;if(t.repeated){e[i]=[];continue}switch(t.kind){case"oneof":e[i]={case:void 0};break;case"enum":e[i]=0;break;case"map":e[i]={};break;case"scalar":e[i]=tp(t.T,t.L)}}},{syntax:"proto3",json:{makeReadOptions:function(e){return e?Object.assign(Object.assign({},tP),e):tP},makeWriteOptions:function(e){return e?Object.assign(Object.assign({},tR),e):tR},readMessage(e,t,i,n){if(null==t||Array.isArray(t)||"object"!=typeof t)throw Error("cannot decode message ".concat(e.typeName," from JSON: ").concat(t_(t)));n=null!=n?n:new e;let a=new Map,r=i.typeRegistry;for(let[s,o]of Object.entries(t)){let t=e.fields.findJsonName(s);if(t){if(t.oneof){if(null===o&&"scalar"==t.kind)continue;let i=a.get(t.oneof);if(void 0!==i)throw Error("cannot decode message ".concat(e.typeName,' from JSON: multiple keys for oneof "').concat(t.oneof.name,'" present: "').concat(i,'", "').concat(s,'"'));a.set(t.oneof,s)}tD(n,o,t,i,e)}else{let t=!1;if((null==r?void 0:r.findExtension)&&s.startsWith("[")&&s.endsWith("]")){let a=r.findExtension(s.substring(1,s.length-1));if(a&&a.extendee.typeName==e.typeName){t=!0;let[e,r]=tv(a);tD(e,o,a.field,i,a),function(e,t,i,n){tS(t,e);let a=t.runtime.bin.makeReadOptions(n),r=t.runtime.bin.makeWriteOptions(n);if(tT(e,t)){let i=e.getType().runtime.bin.listUnknownFields(e).filter(e=>e.no!=t.field.no);for(let t of(e.getType().runtime.bin.discardUnknownFields(e),i))e.getType().runtime.bin.onUnknownField(e,t.no,t.wireType,t.data)}let s=r.writerFactory(),o=t.field;o.opt||o.repeated||"enum"!=o.kind&&"scalar"!=o.kind||(o=Object.assign(Object.assign({},t.field),{opt:!0})),t.runtime.bin.writeField(o,i,s,r);let c=a.readerFactory(s.finish());for(;c.pos<c.len;){let[t,i]=c.tag(),n=c.skip(i,t);e.getType().runtime.bin.onUnknownField(e,t,i,n)}}(n,a,r(),i)}}if(!t&&!i.ignoreUnknownFields)throw Error("cannot decode message ".concat(e.typeName,' from JSON: key "').concat(s,'" is unknown'))}}return n},writeMessage(e,t){let i,n=e.getType(),a={};try{for(i of n.fields.byNumber()){if(!tw(i,e)){var r;if(i.req)throw"required field not set";if(!t.emitDefaultValues||!((r=i).repeated||"map"==r.kind||!r.oneof&&"message"!=r.kind&&!r.opt&&!r.req))continue}let n=i.oneof?e[i.oneof.localName].value:e[i.localName],s=tA(i,n,t);void 0!==s&&(a[t.useProtoFieldName?i.name:i.jsonName]=s)}let s=t.typeRegistry;if(null==s?void 0:s.findExtensionFor)for(let i of n.runtime.bin.listUnknownFields(e)){let r=s.findExtensionFor(n.typeName,i.no);if(r&&tT(e,r)){let i=function(e,t,i){tS(t,e);let n=t.runtime.bin.makeReadOptions(i),a=function(e,t){if(!t.repeated&&("enum"==t.kind||"scalar"==t.kind)){for(let i=e.length-1;i>=0;--i)if(e[i].no==t.no)return[e[i]];return[]}return e.filter(e=>e.no===t.no)}(e.getType().runtime.bin.listUnknownFields(e),t.field),[r,s]=tv(t);for(let e of a)t.runtime.bin.readField(r,n.readerFactory(e.data),t.field,e.wireType,n);return s()}(e,r,t),n=tA(r.field,i,t);void 0!==n&&(a[r.field.jsonName]=n)}}}catch(a){let e=i?"cannot encode field ".concat(n.typeName,".").concat(i.name," to JSON"):"cannot encode message ".concat(n.typeName," to JSON"),t=a instanceof Error?a.message:String(a);throw Error(e+(t.length>0?": ".concat(t):""))}return a},readScalar:(e,t,i)=>tM(e,t,null!=i?i:ei.BIGINT,!0),writeScalar(e,t,i){if(void 0!==t&&(i||tm(e,t)))return tj(e,t)},debug:t_},bin:{makeReadOptions:function(e){return e?Object.assign(Object.assign({},tF),e):tF},makeWriteOptions:function(e){return e?Object.assign(Object.assign({},tB),e):tB},listUnknownFields(e){var t;return null!=(t=e[tU])?t:[]},discardUnknownFields(e){delete e[tU]},writeUnknownFields(e,t){let i=e[tU];if(i)for(let e of i)t.tag(e.no,e.wireType).raw(e.data)},onUnknownField(e,t,i,n){Array.isArray(e[tU])||(e[tU]=[]),e[tU].push({no:t,wireType:i,data:n})},readMessage(e,t,i,n,a){let r,s,o=e.getType(),c=a?t.len:t.pos+i;for(;t.pos<c&&([r,s]=t.tag(),!0!==a||s!=en.EndGroup);){let i=o.fields.find(r);if(!i){let i=t.skip(s,r);
1n.readUnknownFields&&this.onUnknownField(e,r,s,i);continue}tq(e,t,i,s,n)}if(a&&(s!=en.EndGroup||r!==i))throw Error("invalid end group tag")},readField:tq,writeMessage(e,t,i){let n=e.getType();for(let a of n.fields.byNumber()){if(!tw(a,e)){if(a.req)throw Error("cannot encode field ".concat(n.typeName,".").concat(a.name," to binary: required field not set"));continue}let r=a.oneof?e[a.oneof.localName].value:e[a.localName];tW(a,r,t,i)}return i.writeUnknownFields&&this.writeUnknownFields(e,t),t},writeField(e,t,i,n){void 0!==t&&tW(e,t,i,n)}},util:Object.assign(Object.assign({},{setEnumType:e9,initPartial(e,t){if(void 0!==e)for(let i of t.getType().fields.byMember()){let n=i.localName;if(null!=e[n])switch(i.kind){case"oneof":let a=e[n].case;if(void 0===a)continue;let r=i.findField(a),s=e[n].value;r&&"message"==r.kind&&!tx(s,r.T)?s=new r.T(s):r&&"scalar"===r.kind&&r.T===et.BYTES&&(s=t$(s)),t[n]={case:a,value:s};break;case"scalar":case"enum":let o=e[n];i.T===et.BYTES&&(o=i.repeated?o.map(t$):t$(o)),t[n]=o;break;case"map":switch(i.V.kind){case"scalar":case"enum":if(i.V.T===et.BYTES)for(let[i,a]of Object.entries(e[n]))t[n][i]=t$(a);else Object.assign(t[n],e[n]);break;case"message":let c=i.V.T;for(let i of Object.keys(e[n])){let a=e[n][i];c.fieldWrapper||(a=new c(a)),t[n][i]=a}}break;case"message":let l=i.T;if(i.repeated)t[n]=e[n].map(e=>tx(e,l)?e:new l(e));else{let i=e[n];l.fieldWrapper?"google.protobuf.BytesValue"===l.typeName?t[n]=t$(i):t[n]=i:t[n]=tx(i,l)?i:new l(i)}}}},equals:(e,t,i)=>t===i||!!t&&!!i&&e.fields.byMember().every(e=>{let n=t[e.localName],a=i[e.localName];if(e.repeated){if(n.length!==a.length)return!1;switch(e.kind){case"message":return n.every((t,i)=>e.T.equals(t,a[i]));case"scalar":return n.every((t,i)=>th(e.T,t,a[i]));case"enum":return n.every((e,t)=>th(et.INT32,e,a[t]))}throw Error("repeated cannot contain ".concat(e.kind))}switch(e.kind){case"message":let r=n,s=a;return e.T.fieldWrapper&&(void 0===r||tx(r)||(r=e.T.fieldWrapper.wrapField(r)),void 0===s||tx(s)||(s=e.T.fieldWrapper.wrapField(s))),e.T.equals(r,s);case"enum":return th(et.INT32,n,a);case"scalar":return th(e.T,n,a);case"oneof":if(n.case!==a.case)return!1;let o=e.findField(n.case);if(void 0===o)return!0;switch(o.kind){case"message":return o.T.equals(n.value,a.value);case"enum":return th(et.INT32,n.value,a.value);case"scalar":return th(o.T,n.value,a.value)}throw Error("oneof cannot contain ".concat(o.kind));case"map":let c=Object.keys(n).concat(Object.keys(a));switch(e.V.kind){case"message":let l=e.V.T;return c.every(e=>l.equals(n[e],a[e]));case"enum":return c.every(e=>th(et.INT32,n[e],a[e]));case"scalar":let d=e.V.T;return c.every(e=>th(d,n[e],a[e]))}}}),clone(e){let t=e.getType(),i=new t;for(let n of t.fields.byMember()){let t,a=e[n.localName];if(n.repeated)t=a.map(tQ);else if("map"==n.kind)for(let[e,r]of(t=i[n.localName],Object.entries(a)))t[e]=tQ(r);else t="oneof"==n.kind?n.findField(a.case)?{case:a.case,value:tQ(a.value)}:{case:void 0}:tQ(a);i[n.localName]=t}for(let n of t.runtime.bin.listUnknownFields(e))t.runtime.bin.onUnknownField(i,n.no,n.wireType,n.data);return i}}),{newFieldList:l,initFields:d}),makeMessageType(e,t,i){var n,a;let r,s;return n=this,Object.setPrototypeOf((s=({[r=null!=(a=null==i?void 0:i.localName)?a:e.substring(e.lastIndexOf(".")+1)]:function(e){n.util.initFields(this),n.util.initPartial(e,this)}})[r]).prototype,new tt),Object.assign(s,{runtime:n,typeName:e,fields:n.util.newFieldList(t),fromBinary:(e,t)=>new s().fromBinary(e,t),fromJson:(e,t)=>new s().fromJson(e,t),fromJsonString:(e,t)=>new s().fromJsonString(e,t),equals:(e,t)=>n.util.equals(s,e,t)}),s},makeEnum:function(e,t,i){let n={};for(let e of t){let t=te(e);n[t.localName]=t.no,n[t.no]=t.localName}return e9(n,e,t),n},makeEnumType:e7,getEnumType:function(e){let t=e[e8];return e3(t,"missing enum type on enum object"),t},makeExtension(e,t,i){var n;let a;return n=this,{typeName:e,extendee:t,get field(){if(!a){let t="function"==typeof i?i():i;t.name=e.split(".").pop(),t.jsonName="[".concat(e,"]"),a=n.util.newFieldList([t]).list()[0]}return a},runtime:n}}});class t8 extends tt{constructor(e){super(),this.seconds=tu.zero,this.nanos=0,t6.util.initPartial(e,this)}fromJson(e,t){if("string"!=typeof e)throw Error("cannot decode google.protobuf.Timestamp from JSON: ".concat(t6.json.debug(e)));let i=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(!i)throw Error("cannot decode google.protobuf.Timestamp from JSON: invali
1d RFC 3339 string");let n=Date.parse(i[1]+"-"+i[2]+"-"+i[3]+"T"+i[4]+":"+i[5]+":"+i[6]+(i[8]?i[8]:"Z"));if(Number.isNaN(n))throw Error("cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string");if(n<Date.parse("0001-01-01T00:00:00Z")||n>Date.parse("9999-12-31T23:59:59Z"))throw 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=tu.parse(n/1e3),this.nanos=0,i[7]&&(this.nanos=parseInt("1"+i[7]+"0".repeat(9-i[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 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 Error("cannot encode google.protobuf.Timestamp to JSON: nanos must not be negative");let i="Z";if(this.nanos>0){let e=(this.nanos+1e9).toString().substring(1);i="000000"===e.substring(3)?"."+e.substring(0,3)+"Z":"000"===e.substring(6)?"."+e.substring(0,6)+"Z":"."+e+"Z"}return new Date(t).toISOString().replace(".000Z",i)}toDate(){return new Date(1e3*Number(this.seconds)+Math.ceil(this.nanos/1e6))}static now(){return t8.fromDate(new Date)}static fromDate(e){let t=e.getTime();return new t8({seconds:tu.parse(Math.floor(t/1e3)),nanos:t%1e3*1e6})}static fromBinary(e,t){return new t8().fromBinary(e,t)}static fromJson(e,t){return new t8().fromJson(e,t)}static fromJsonString(e,t){return new t8().fromJsonString(e,t)}static equals(e,t){return t6.util.equals(t8,e,t)}}t8.runtime=t6,t8.typeName="google.protobuf.Timestamp",t8.fields=t6.util.newFieldList(()=>[{no:1,name:"seconds",kind:"scalar",T:3},{no:2,name:"nanos",kind:"scalar",T:5}]);let t9=t6.makeMessageType("livekit.MetricsBatch",()=>[{no:1,name:"timestamp_ms",kind:"scalar",T:3},{no:2,name:"normalized_timestamp",kind:"message",T:t8},{no:3,name:"str_data",kind:"scalar",T:9,repeated:!0},{no:4,name:"time_series",kind:"message",T:t7,repeated:!0},{no:5,name:"events",kind:"message",T:it,repeated:!0}]),t7=t6.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:ie,repeated:!0},{no:5,name:"rid",kind:"scalar",T:13}]),ie=t6.makeMessageType("livekit.MetricSample",()=>[{no:1,name:"timestamp_ms",kind:"scalar",T:3},{no:2,name:"normalized_timestamp",kind:"message",T:t8},{no:3,name:"value",kind:"scalar",T:2}]),it=t6.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:t8},{no:7,name:"normalized_end_timestamp",kind:"message",T:t8,opt:!0},{no:8,name:"metadata",kind:"scalar",T:9},{no:9,name:"rid",kind:"scalar",T:13}]),ii=t6.makeEnum("livekit.AudioCodec",[{no:0,name:"DEFAULT_AC"},{no:1,name:"OPUS"},{no:2,name:"AAC"},{no:3,name:"AC_MP3"}]),ia=t6.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"}]),ir=t6.makeEnum("livekit.ImageCodec",[{no:0,name:"IC_DEFAULT"},{no:1,name:"IC_JPEG"}]),is=t6.makeEnum("livekit.BackupCodecPolicy",[{no:0,name:"PREFER_REGRESSION"},{no:1,name:"SIMULCAST"},{no:2,name:"REGRESSION"}]),io=t6.makeEnum("livekit.TrackType",[{no:0,name:"AUDIO"},{no:1,name:"VIDEO"},{no:2,name:"DATA"}]),ic=t6.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"}]),il=t6.makeEnum("livekit.VideoQuality",[{no:0,name:"LOW"},{no:1,name:"MEDIUM"},{no:2,name:"HIGH"},{no:3,name:"OFF"}]),id=t6.makeEnum("livekit.ConnectionQuality",[{no:0,name:"POOR"},{no:1,name:"GOOD"},{no:2,name:"EXCELLENT"},{no:3,name:"LOST"}]),iu=t6.makeEnum("livekit.ClientConfigSetting",[{no:0,name:"UNSET"},{no:1,name:"DISABLED"},{no:2,name:"ENABLED"}]),ih=t6.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"}]),ip=t6.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"}]),im=t6.makeEnum("livekit.SubscriptionError",[{no:0,name:"SE_UNKNOWN"},{no:1,name:"SE_CODEC_UNSUPPORTED"},{no:2,name:"SE_TRACK_NOTFOUND"}]),ig=t6.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"}]),iv=t6.makeEnum("livekit.PacketTrailerFeature",[{no:0,name:"PTF_USER_TIMESTAMP"},{no:1,name:"PTF_FRAME_ID"}]),ib=t6.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:ik,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:i2}]),ik=t6.makeMessageType("livekit.Codec",()=>[{no:1,name:"mime",kind:"scalar",T:9},{no:2,name:"fmtp_line",kind:"scalar",T:9}]),iy=t6.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:t6.getEnumType(ic),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}]),iT=t6.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:t6.getEnumType(iS)},{no:4,name:"tracks",kind:"message",T:iP,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:iy},{no:12,name:"region",kind:"scalar",T:9},{no:13,name:"is_publisher",kind:"scalar",T:8},{no:14,name:"kind",kind:"enum",T:t6.getEnumType(iw)},{no:15,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:16,name:"disconnect_reason",kind:"enum",T:t6.getEnumType(ih)},{no:18,name:"kind_details",kind:"enum",T:t6.getEnumType(iC),repeated:!0},{no:19,name:"data_tracks",kind:"message",T:iR,repeated:!0},{no:20,name:"client_protocol",kind:"scalar",T:5}]),iS=t6.makeEnum("livekit.ParticipantInfo.State",[{no:0,name:"JOINING"},{no:1,name:"JOINED"},{no:2,name:"ACTIVE"},{no:3,name:"DISCONNECTED"}]),iw=t6.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"}]),iC=t6.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"}]),ix=t6.makeEnum("livekit.Encryption.Type",[{no:0,name:"NONE"},{no:1,name:"GCM"},{no:2,name:"CUSTOM"}]),iE=t6.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:iN,repeated:!0},{no:5,name:"video_layer_mode",kind:"enum",T:t6.getEnumType(i_)},{no:6,name:"sdp_cid",kind:"scalar",T:9}]),iP=t6.makeMessageType("livekit.TrackInfo",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"type",kind:"enum",T:t6.getEnumType(io)},{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:t6.getEnumType(ic)},{no:10,name:"layers",kind:"message",T:iN,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:iE,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:t6.getEnumType(ix)},{no:17,name:"stream",kind:"scalar",T:9},{no:18,name:"version",kind:"message",T:i2},{no:19,name:"audio_features",kind:"enum",T:t6.getEnumType(ig),repeated:!0},{no:20,name:"backup_codec_policy",kind:"enum",T:t6.getEnumType(is)},{no:21,name:"packet_trailer_features",kind:"enum",T:t6.getEnumType(iv),repeated:!0}]),iR=t6.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:t6.getEnumType(ix)}]),iI=t6.makeMessageType("livekit.DataTrackSubscriptionOptions",()=>[{no:1,name:"target_fps",kind:"scalar",T:13,opt:!0}]),iN=t6.makeMessageType("livekit.VideoLayer",()=>[{no:1,name:"quality",kind:"enum",T:t6.getEnumType(il)},{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}]),i_=t6.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"}]),iD=t6.makeMessageType("livekit.DataPacket",()=>[{no:1,name:"kind",kind:"enum",T:t6.getEnumType(iM)},{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:iU,oneof:"value"},{no:3,name:"speaker",kind:"message",T:iL,oneof:"value"},{no:6,name:"sip_dtmf",kind:"message",T:iF,oneof:"value"},{no:7,name:"transcription",kind:"message",T:iB,oneof:"value"},{no:8,name:"metrics",kind:"message",T:t9,oneof:"value"},{no:9,name:"chat_message",kind:"message",T:iV,oneof:"value"},{no:10,name:"rpc_request",kind:"message",T:iH,oneof:"value"},{no:11,name:"rpc_ack",kind:"message",T:iz,oneof:"value"},{no:12,name:"rpc_response",kind:"message",T:iW,oneof:"value"},{no:13,name:"stream_header",kind:"message",T:i6,oneof:"value"},{no:14,name:"stream_chunk",kind:"message",T:i8,oneof:"value"},{no:15,name:"stream_trailer",kind:"message",T:i9,oneof:"value"},{no:18,name:"encrypted_packet",kind:"message",T:iO,oneof:"value"},{no:16,name:"sequence",kind:"scalar",T:13},{no:17,name:"participant_sid",kind:"scalar",T:9}]),iM=t6.makeEnum("livekit.DataPacket.Kind",[{no:0,name:"RELIABLE"},{no:1,name:"LOSSY"}]),iO=t6.makeMessageType("livekit.EncryptedPacket",()=>[{no:1,name:"encryption_type",kind:"enum",T:t6.getEnumType(ix)},{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}]),iA=t6.makeMessageType("livekit.EncryptedPacketPayload",()=>[{no:1,name:"user",kind:"message",T:iU,oneof:"value"},{no:3,name:"chat_message",kind:"message",T:iV,oneof:"value"},{no:4,name:"rpc_request",kind:"message",T:iH,oneof:"value"},{no:5,name:"rpc_ack",kind:"message",T:iz,oneof:"value"},{no:6,name:"rpc_response",kind:"message",T:iW,oneof:"value"},{no:7,name:"stream_header",kind:"message",T:i6,oneof:"value"},{no:8,name:"stream_chunk",kind:"message",T:i8,oneof:"value"},{no:9,name:"stream_trailer",kind:"message",T:i9,oneof:"value"}]),iL=t6.makeMessageType("livekit.ActiveSpeakerUpdate",()=>[{no:1,name:"speakers",kind:"message",T:ij,repeated:!0}]),ij=t6.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}]),iU=t6.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}]),iF=t6.makeMessageType("livekit.SipDTMF",()=>[{no:3,name:"code",kind:"scalar",T:13},{no:4,name:"digit",kind:"scalar",T:9}]),iB=t6.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:iq,repeated:!0}]),iq=t6.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}]),iV=t6.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}]),iH=t6.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}]),iz=t6.makeMessageType("livekit.RpcAck",()=>[{no:1,name:"request_id",kind:"scalar",T:9}]),iW=t6.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:iG,oneof:"value"},{no:4,name:"compressed_payload",kind:"scalar",T:12,oneof:"value"}]),iG=t6.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}]),iK=t6.makeMessageType("livekit.ParticipantTracks",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sids",kind:"scalar",T:9,repeated:!0}]),iJ=t6.makeMessageType("livekit.ServerInfo",()=>[{no:1,name:"edition",kind:"enum",T:t6.getEnumType(iQ)},{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}]),iQ=t6.makeEnum("livekit.ServerInfo.Edition",[{no:0,name:"Standard"},{no:1,name:"Cloud"}]),i$=t6.makeMessageType("livekit.ClientInfo",()=>[{no:1,name:"sdk",kind:"enum",T:t6.getEnumType(iY)},{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,na
vendor: 16,177 bytes, line 1
1me:"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:t6.getEnumType(iX),repeated:!0}]),iY=t6.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"}]),iX=t6.makeEnum("livekit.ClientInfo.Capability",[{no:0,name:"CAP_UNUSED"},{no:1,name:"CAP_PACKET_TRAILER"}]),iZ=t6.makeMessageType("livekit.ClientConfiguration",()=>[{no:1,name:"video",kind:"message",T:i0},{no:2,name:"screen",kind:"message",T:i0},{no:3,name:"resume_connection",kind:"enum",T:t6.getEnumType(iu)},{no:4,name:"disabled_codecs",kind:"message",T:i1},{no:5,name:"force_relay",kind:"enum",T:t6.getEnumType(iu)}]),i0=t6.makeMessageType("livekit.VideoConfiguration",()=>[{no:1,name:"hardware_encoder",kind:"enum",T:t6.getEnumType(iu)}]),i1=t6.makeMessageType("livekit.DisabledCodecs",()=>[{no:1,name:"codecs",kind:"message",T:ik,repeated:!0},{no:2,name:"publish",kind:"message",T:ik,repeated:!0}]),i2=t6.makeMessageType("livekit.TimedVersion",()=>[{no:1,name:"unix_micro",kind:"scalar",T:3},{no:2,name:"ticks",kind:"scalar",T:5}]),i3=t6.makeEnum("livekit.DataStream.OperationType",[{no:0,name:"CREATE"},{no:1,name:"UPDATE"},{no:2,name:"DELETE"},{no:3,name:"REACTION"}]),i4=t6.makeMessageType("livekit.DataStream.TextHeader",()=>[{no:1,name:"operation_type",kind:"enum",T:t6.getEnumType(i3)},{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"}),i5=t6.makeMessageType("livekit.DataStream.ByteHeader",()=>[{no:1,name:"name",kind:"scalar",T:9}],{localName:"DataStream_ByteHeader"}),i6=t6.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:t6.getEnumType(ix)},{no:8,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:9,name:"text_header",kind:"message",T:i4,oneof:"content_header"},{no:10,name:"byte_header",kind:"message",T:i5,oneof:"content_header"}],{localName:"DataStream_Header"}),i8=t6.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"}),i9=t6.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"}),i7=t6.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}]),ne=t6.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:i7}]),nt=t6.makeMessageType("livekit.SubscribedAudioCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"enabled",kind:"scalar",T:8}]),ni=t6.makeEnum("livekit.JobRestartPolicy",[{no:0,name:"JRP_ON_FAILURE"},{no:1,name:"JRP_NEVER"}]),nn=t6.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:t6.getEnumType(ni)},{no:4,name:"deployment",kind:"scalar",T:9}]),na=t6.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"}]),nr=t6.makeEnum("livekit.EncodedFileType",[{no:0,name:"DEFAULT_FILETYPE"},{no:1,name:"MP4"},{no:2,name:"OGG"},{no:3,name:"MP3"}]),ns=t6.makeEnum("livekit.StreamProtocol",[{no:0,name:"DEFAULT_PROTOCOL"},{no:1,name:"RTMP"},{no:2,name:"SRT"},{no:3,name:"WEBSOCKET"}]),no=t6.makeEnum("livekit.SegmentedFileProtocol",[{no:0,name:"DEFAULT_SEGMENTED_FILE_PROTOCOL"},{no:1,name:"HLS_PROTOCOL"}]),nc=t6.makeEnum("livekit.SegmentedFileSuffix",[{no:0,name:"INDEX"},{no:1,name:"TIMESTAMP"}]),nl=t6.makeEnum("livekit.ImageFileSuffix",[{no:0,name:"IMAGE_SUFFIX_INDEX"},{no:1,name:"IMAGE_SUFFIX_TIMESTAMP"},{no:2,name:"IMAGE_SUFFIX_NONE_OVERWRITE"}]),nd=t6.makeEnum("livekit.AudioMixing",[{no:0,name:"DEFAULT_MIXING"},{no:1,name:"DUAL_CHANNEL_AGENT"},{no:2,name:"DUAL_CHANNEL_ALTERNATE"}]),nu=t6.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:t6.getEnumType(ii)},{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:t6.getEnumType(ia)},{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}]),nh=t6.makeMessageType("livekit.StreamOutput",()=>[{no:1,name:"protocol",kind:"enum",T:t6.getEnumType(ns)},{no:2,name:"urls",kind:"scalar",T:9,repeated:!0}]),np=t6.makeMessageType("livekit.SegmentedFileOutput",()=>[{no:1,name:"protocol",kind:"enum",T:t6.getEnumType(no)},{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:t6.getEnumType(nc)},{no:8,name:"disable_manifest",kind:"scalar",T:8},{no:5,name:"s3",kind:"message",T:ng,oneof:"output"},{no:6,name:"gcp",kind:"message",T:nf,oneof:"output"},{no:7,name:"azure",kind:"message",T:nv,oneof:"output"},{no:9,name:"aliOSS",kind:"message",T:nb,oneof:"output"}]),nm=t6.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:t6.getEnumType(nl)},{no:6,name:"image_codec",kind:"enum",T:t6.getEnumType(ir)},{no:7,name:"disable_manifest",kind:"scalar",T:8},{no:8,name:"s3",kind:"message",T:ng,oneof:"output"},{no:9,name:"gcp",kind:"message",T:nf,oneof:"output"},{no:10,name:"azure",kind:"message",T:nv,oneof:"output"},{no:11,name:"aliOSS",kind:"message",T:nb,oneof:"output"}]),ng=t6.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:nk}]),nf=t6.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:nk}]),nv=t6.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}]),nb=t6.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}]),nk=t6.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}]),ny=t6.makeMessageType("livekit.AutoParticipantEgress",()=>[{no:1,name:"preset",kind:"enum",T:t6.getEnumType(na),oneof:"options"},{no:2,name:"advanced",kind:"message",T:nu,oneof:"options"},{no:3,name:"file_outputs",kind:"message",T:nw,repeated:!0},{no:4,name:"segment_outputs",kind:"message",T:np,repeated:!0}]),nT=t6.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:ng,oneof:"output"},{no:3,name:"gcp",kind:"message",T:nf,oneof:"output"},{no:4,name:"azure",kind:"message",T:nv,oneof:"output"},{no:6,name:"aliOSS",kind:"message",T:nb,oneof:"output"}]),nS=t6.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:t6.getEnumType(nd)},{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:nw,oneof:"output"},{no:7,name:"stream",kind:"message",T:nh,oneof:"output"},{no:10,name:"segments",kind:"message",T:np,oneof:"output"},{no:8,name:"preset",kind:"enum",T:t6.getEnumType(na),oneof:"options"},{no:9,name:"advanced",kind:"message",T:nu,oneof:"options"},{no:11,name:"file_outputs",kind:"message",T:nw,repeated:!0},{no:12,name:"stream_outputs",kind:"message",T:nh,repeated:!0},{no:13,name:"segment_outputs",kind:"message",T:np,repeated:!0},{no:14,name:"image_outputs",kind:"message",T:nm,repeated:!0},{no:16,name:"webhooks",kind:"message",T:ne,repeated:!0}]),nw=t6.makeMessageType("livekit.EncodedFileOutput",()=>[{no:1,name:"file_type",kind:"enum",T:t6.getEnumType(nr)},{no:2,name:"filepath",kind:"scalar",T:9},{no:6,name:"disable_manifest",kind:"scalar",T:8},{no:3,name:"s3",kind:"message",T:ng,oneof:"output"},{no:4,name:"gcp",kind:"message",T:nf,oneof:"output"},{no:5,name:"azure",kind:"message",T:nv,oneof:"output"},{no:7,name:"aliOSS",kind:"message",T:nb,oneof:"output"}]),nC=t6.makeMessageType("livekit.RoomEgress",()=>[{no:1,name:"room",kind:"message",T:nS},{no:3,name:"participant",kind:"message",T:ny},{no:2,name:"tracks",kind:"message",T:nT}]),nx=(()=>[{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:nC},{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:nn,repeated:!0},{no:12,name:"tags",kind:"map",K:9,V:{kind:"scalar",T:9}}],t6.makeEnum("livekit.SignalTarget",[{no:0,name:"PUBLISHER"},{no:1,name:"SUBSCRIBER"}])),nE=t6.makeEnum("livekit.StreamState",[{no:0,name:"ACTIVE"},{no:1,name:"PAUSED"}]),nP=t6.makeEnum("livekit.CandidateProtocol",[{no:0,name:"UDP"},{no:1,name:"TCP"},{no:2,name:"TLS"}]),nR=t6.makeMessageType("livekit.SignalRequest",()=>[{no:1,name:"offer",kind:"message",T:nz,oneof:"message"},{no:2,name:"answer",kind:"message",T:nz,oneof:"message"},{no:3,name:"trickle",kind:"message",T:nU,oneof:"message"},{no:4,name:"add_track",kind:"message",T:n_,oneof:"message"},{no:5,name:"mute",kind:"message",T:nF,oneof:"message"},{no:6,name:"subscription",kind:"message",T:nG,oneof:"message"},{no:7,name:"track_setting",kind:"message",T:nQ,oneof:"message"},{no:8,name:"leave",kind:"message",T:nX,oneof:"message"},{no:10,name:"update_layers",kind:"message",T:n0,oneof:"message"},{no:11,name:"subscription_permission",kind:"message",T:aa,oneof:"message"},{no:12,name:"sync_state",kind:"message",T:ao,oneof:"message"},{no:13,name:"simulate",kind:"message",T:ad,oneof:"message"},{no:14,name:"ping",kind:"scalar",T:3,oneof:"message"},{no:15,name:"update_metadata",kind:"message",T:n1,oneof:"message"},{no:16,name:"ping_req",kind:"message",T:au,oneof:"message"},{no:17,name:"update_audio_track",kind:"message",T:n$,oneof:"message"},{no:18,name:"update_video_track",kind:"message",T:nY,oneof:"message"},{no:19,name:"publish_data_track_request",kind:"message",T:nD,oneof:"message"},{no:20,name:"unpublish_data_track_request",kind:"message",T:nO,oneof:"message"},{no:21,name:"update_data_subscription",kind:"message",T:nK,oneof:"message"}]),nI=t6.makeMessageType("livekit.SignalResponse",()=>[{no:1,name:"join",kind:"message",T:nB,oneof:"message"},{no:2,name:"answer",kind:"message",T:nz,oneof:"message"},{no:3,name:"offer",kind:"message",T:nz,oneof:"message"},{no:4,name:"trickle",kind:"message",T:nU,oneof:"message"},{no:5,name:"update",kind:"message",T:nW,oneof:"message"},{no:6,name:"track_published",kind:"message",T:nV,oneof:"message"},{no:8,name:"leave",kind:"message",T:nX,oneof:"message"},{no:9,name:"mute",kind:"message",T:nF,oneof:"message"},{no:10,name:"speakers_changed",kind:"message",T:n3,oneof:"message"},{no:11,name:"room_update",kind:"message",T:n4,oneof:"message"},{no:12,name:"connection_quality",kind:"message",T:n6,oneof:"message"},{no:13,name:"stream_state_update",kind:"message",T:n9,oneof:"message"},{no:14,name:"subscribed_quality_update",kind:"message",T:at,oneof:"message"},{no:15,name:"subscription_permission_update",kind:"message",T:ar,oneof:"message"},{no:16,name:"refresh_token",kind:"scalar",T:9,oneof:"message"},{no:17,name:"track_unpublished",kind:"message",T:nH,oneof:"message"},{no:18,name:"pong",kind:"scalar",T:3,oneof:"message"},{no:19,name:"reconnect",kind:"message",T:nq,oneof:"message"},{no:20,name:"pong_resp",kind:"message",T:ah,oneof:"message"},{no:21,name:"subscription_response",kind:"message",T:ag,oneof:"message"},{no:22,name:"request_response",kind:"message",T:af,oneof:"message"},{no:23,name:"track_subscribed",kind:"message",T:ab,oneof:"message"},{no:24,name:"room_moved",kind:"message",T:as,oneof:"message"},{no:25,name:"media_sections_requirement",kind:"message",T:aw,oneof:"message"},{no:26,name:"subscribed_audio_codec_update",kind:"message",T:ai,oneof:"message"},{no:27,name:"publish_data_track_response",kind:"message",T:nM,oneof:"message"},{no:28,name:"unpublish_data_track_response",kind:"message",T:nA,oneof:"message"},{no:29,name:"data_track_subscriber_handles",kind:"message",T:nL,oneof:"message"}]),nN=t6.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:iN,repeated:!0},{no:5,name:"video_layer_mode",kind:"enum",T:t6.getEnumType(i_)}]),n_=t6.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:t6.getEnumType(io)},{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:t6.getEnumType(ic)},{no:9,name:"layers",kind:"message",T:iN,repeated:!0},{no:10,name:"simulcast_codecs",kind:"message",T:nN,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:t6.getEnumType(ix)},{no:15,name:"stream",kind:"scalar",T:9},{no:16,name:"backup_codec_policy",kind:"enum",T:t6.getEnumType(is)},{no:17,name:"audio_features",kind:"enum",T:t6.getEnumType(ig),repeated:!0},{no:18,name:"packet_trailer_features",kind:"enum",T:t6.getEnumType(iv),repeated:!0}]),nD=t6.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:t6.getEnumType(ix)}
vendor: 4,787 bytes, line 1
1]),nM=t6.makeMessageType("livekit.PublishDataTrackResponse",()=>[{no:1,name:"info",kind:"message",T:iR}]),nO=t6.makeMessageType("livekit.UnpublishDataTrackRequest",()=>[{no:1,name:"pub_handle",kind:"scalar",T:13}]),nA=t6.makeMessageType("livekit.UnpublishDataTrackResponse",()=>[{no:1,name:"info",kind:"message",T:iR}]),nL=t6.makeMessageType("livekit.DataTrackSubscriberHandles",()=>[{no:1,name:"sub_handles",kind:"map",K:13,V:{kind:"message",T:nj}}]),nj=t6.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"}),nU=t6.makeMessageType("livekit.TrickleRequest",()=>[{no:1,name:"candidateInit",kind:"scalar",T:9},{no:2,name:"target",kind:"enum",T:t6.getEnumType(nx)},{no:3,name:"final",kind:"scalar",T:8}]),nF=t6.makeMessageType("livekit.MuteTrackRequest",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"muted",kind:"scalar",T:8}]),nB=t6.makeMessageType("livekit.JoinResponse",()=>[{no:1,name:"room",kind:"message",T:ib},{no:2,name:"participant",kind:"message",T:iT},{no:3,name:"other_participants",kind:"message",T:iT,repeated:!0},{no:4,name:"server_version",kind:"scalar",T:9},{no:5,name:"ice_servers",kind:"message",T:n2,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:iZ},{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:iJ},{no:13,name:"sif_trailer",kind:"scalar",T:12},{no:14,name:"enabled_publish_codecs",kind:"message",T:ik,repeated:!0},{no:15,name:"fast_publish",kind:"scalar",T:8}]),nq=t6.makeMessageType("livekit.ReconnectResponse",()=>[{no:1,name:"ice_servers",kind:"message",T:n2,repeated:!0},{no:2,name:"client_configuration",kind:"message",T:iZ},{no:3,name:"server_info",kind:"message",T:iJ},{no:4,name:"last_message_seq",kind:"scalar",T:13}]),nV=t6.makeMessageType("livekit.TrackPublishedResponse",()=>[{no:1,name:"cid",kind:"scalar",T:9},{no:2,name:"track",kind:"message",T:iP}]),nH=t6.makeMessageType("livekit.TrackUnpublishedResponse",()=>[{no:1,name:"track_sid",kind:"scalar",T:9}]),nz=t6.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}}]),nW=t6.makeMessageType("livekit.ParticipantUpdate",()=>[{no:1,name:"participants",kind:"message",T:iT,repeated:!0}]),nG=t6.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:iK,repeated:!0}]),nK=t6.makeMessageType("livekit.UpdateDataSubscription",()=>[{no:1,name:"updates",kind:"message",T:nJ,repeated:!0}]),nJ=t6.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:iI}],{localName:"UpdateDataSubscription_Update"}),nQ=t6.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:t6.getEnumType(il)},{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}]),n$=t6.makeMessageType("livekit.UpdateLocalAudioTrack",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"features",kind:"enum",T:t6.getEnumType(ig),repeated:!0}]),nY=t6.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}]),nX=t6.makeMessageType("livekit.LeaveRequest",()=>[{no:1,name:"can_reconnect",kind:"scalar",T:8},{no:2,name:"reason",kind:"enum",T:t6.getEnumType(ih)},{no:3,name:"action",kind:"enum",T:t6.getEnumType(nZ)},{no:4,name:"regions",kind:"message",T:ap}]),nZ=t6.makeEnum("livekit.LeaveRequest.Action",[{no:0,name:"DISCONNECT"},{no:1,name:"RESUME"},{no:2,name:"RECONNECT"}]),n0=t6.makeMessageType("livekit.UpdateVideoLayers",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"layers",kind:"message",T:iN,repeated:!0}]),n1=t6.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}
vendor: 5,804 bytes, line 1
1]),n2=t6.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}]),n3=t6.makeMessageType("livekit.SpeakersChanged",()=>[{no:1,name:"speakers",kind:"message",T:ij,repeated:!0}]),n4=t6.makeMessageType("livekit.RoomUpdate",()=>[{no:1,name:"room",kind:"message",T:ib}]),n5=t6.makeMessageType("livekit.ConnectionQualityInfo",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"quality",kind:"enum",T:t6.getEnumType(id)},{no:3,name:"score",kind:"scalar",T:2}]),n6=t6.makeMessageType("livekit.ConnectionQualityUpdate",()=>[{no:1,name:"updates",kind:"message",T:n5,repeated:!0}]),n8=t6.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:t6.getEnumType(nE)}]),n9=t6.makeMessageType("livekit.StreamStateUpdate",()=>[{no:1,name:"stream_states",kind:"message",T:n8,repeated:!0}]),n7=t6.makeMessageType("livekit.SubscribedQuality",()=>[{no:1,name:"quality",kind:"enum",T:t6.getEnumType(il)},{no:2,name:"enabled",kind:"scalar",T:8}]),ae=t6.makeMessageType("livekit.SubscribedCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"qualities",kind:"message",T:n7,repeated:!0}]),at=t6.makeMessageType("livekit.SubscribedQualityUpdate",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribed_qualities",kind:"message",T:n7,repeated:!0},{no:3,name:"subscribed_codecs",kind:"message",T:ae,repeated:!0}]),ai=t6.makeMessageType("livekit.SubscribedAudioCodecUpdate",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribed_audio_codecs",kind:"message",T:nt,repeated:!0}]),an=t6.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}]),aa=t6.makeMessageType("livekit.SubscriptionPermission",()=>[{no:1,name:"all_participants",kind:"scalar",T:8},{no:2,name:"track_permissions",kind:"message",T:an,repeated:!0}]),ar=t6.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}]),as=t6.makeMessageType("livekit.RoomMovedResponse",()=>[{no:1,name:"room",kind:"message",T:ib},{no:2,name:"token",kind:"scalar",T:9},{no:3,name:"participant",kind:"message",T:iT},{no:4,name:"other_participants",kind:"message",T:iT,repeated:!0}]),ao=t6.makeMessageType("livekit.SyncState",()=>[{no:1,name:"answer",kind:"message",T:nz},{no:2,name:"subscription",kind:"message",T:nG},{no:3,name:"publish_tracks",kind:"message",T:nV,repeated:!0},{no:4,name:"data_channels",kind:"message",T:al,repeated:!0},{no:5,name:"offer",kind:"message",T:nz},{no:6,name:"track_sids_disabled",kind:"scalar",T:9,repeated:!0},{no:7,name:"datachannel_receive_states",kind:"message",T:ac,repeated:!0},{no:8,name:"publish_data_tracks",kind:"message",T:nM,repeated:!0}]),ac=t6.makeMessageType("livekit.DataChannelReceiveState",()=>[{no:1,name:"publisher_sid",kind:"scalar",T:9},{no:2,name:"last_seq",kind:"scalar",T:13}]),al=t6.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:t6.getEnumType(nx)}]),ad=t6.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:t6.getEnumType(nP),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"}]),au=t6.makeMessageType("livekit.Ping",()=>[{no:1,name:"timestamp",kind:"scalar",T:3},{no:2,name:"rtt",kind:"scalar",T:3}]),ah=t6.makeMessageType("livekit.Pong",()=>[{no:1,name:"last_ping_timestamp",kind:"scalar",T:3},{no:2,name:"timestamp",kind:"scalar",T:3}]),ap=t6.makeMessageType("livekit.RegionSettings",()=>[{no:1,name:"regions",kind:"message",T:am,repeated:!0}]),am=t6.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}]),ag=t6.makeMessageType("livekit.SubscriptionResponse",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"err",kind:"enum",T:t6.getEnumType(im)}]),af=t6.makeMessageType("livekit.RequestResponse",()=>[{no:1,name:"request_id",kind:"scalar",T:13},{no:2,name:"reason",kind:"enum",T:t6.getEnumType(av)},{no:3,name:"message",kind:"scalar",T:9},{no:4,name:"trickle",kind:"message",T:nU,oneof:"request"},{no:5,name:"add_track",kind:"message",T:n_,oneof:"request"},{no:6,name:"mute",kind:"message",T:nF,oneof:"request"},{no:7,name:"update_metadata",kind:"message",T:n1,oneof:"request"},{no:8,name:"update_audio_track",kind:"message",T:n$,oneof:"request"},{no:9,name:"update_video_track",kind:"message",T:nY,oneof:"request"},{no:10,name:"publish_data_track",kind:"message",T:nD,oneof:"request"},{no:11,name:"unpublish_data_track",kind:"message",T:nO,oneof:"request"}]),av=t6.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"}
1,{no:8,name:"INVALID_NAME"},{no:9,name:"DUPLICATE_HANDLE"},{no:10,name:"DUPLICATE_NAME"}]),ab=t6.makeMessageType("livekit.TrackSubscribed",()=>[{no:1,name:"track_sid",kind:"scalar",T:9}]),ak=t6.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}]),ay=t6.makeMessageType("livekit.JoinRequest",()=>[{no:1,name:"client_info",kind:"message",T:i$},{no:2,name:"connection_settings",kind:"message",T:ak},{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:n_,repeated:!0},{no:6,name:"publisher_offer",kind:"message",T:nz},{no:7,name:"reconnect",kind:"scalar",T:8},{no:8,name:"reconnect_reason",kind:"enum",T:t6.getEnumType(ip)},{no:9,name:"participant_sid",kind:"scalar",T:9},{no:10,name:"sync_state",kind:"message",T:ao}]),aT=t6.makeMessageType("livekit.WrappedJoinRequest",()=>[{no:1,name:"compression",kind:"enum",T:t6.getEnumType(aS)},{no:2,name:"join_request",kind:"scalar",T:12}]),aS=t6.makeEnum("livekit.WrappedJoinRequest.Compression",[{no:0,name:"NONE"},{no:1,name:"GZIP"}]),aw=t6.makeMessageType("livekit.MediaSectionsRequirement",()=>[{no:1,name:"num_audios",kind:"scalar",T:13},{no:2,name:"num_videos",kind:"scalar",T:13}]);function aC(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var ax={exports:{}},aE=ax.exports,aP=function(){var e;return ea?ax.exports:(ea=1,e=function(){var e=function(){},t="undefined",i=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),n=["trace","debug","info","warn","error"],a={},r=null;function s(e,t){var i=e[t];if("function"==typeof i.bind)return i.bind(e);try{return Function.prototype.bind.call(i,e)}catch(t){return function(){return Function.prototype.apply.apply(i,[e,arguments])}}}function o(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function c(){for(var i=this.getLevel(),a=0;a<n.length;a++){var r=n[a];this[r]=a<i?e:this.methodFactory(r,i,this.name)}if(this.log=this.debug,typeof console===t&&i<this.levels.SILENT)return"No console available for logging"}function l(e){return function(){typeof console!==t&&(c.call(this),this[e].apply(this,arguments))}}function d(n,a,r){var c;return"debug"===(c=n)&&(c="log"),typeof console!==t&&("trace"===c&&i?o:void 0!==console[c]?s(console,c):void 0!==console.log?s(console,"log"):e)||l.apply(this,arguments)}function u(e,i){var s,o,l,u=this,h="loglevel";function p(){var e;if(typeof window!==t&&h){try{e=window.localStorage[h]}catch(e){}if(typeof e===t)try{var i=window.document.cookie,n=encodeURIComponent(h),a=i.indexOf(n+"=");-1!==a&&(e=/^([^;]+)/.exec(i.slice(a+n.length+1))[1])}catch(e){}return void 0===u.levels[e]&&(e=void 0),e}}function m(e){var t=e;if("string"==typeof t&&void 0!==u.levels[t.toUpperCase()]&&(t=u.levels[t.toUpperCase()]),"number"==typeof t&&t>=0&&t<=u.levels.SILENT)return t;throw TypeError("log.setLevel() called with invalid level: "+e)}"string"==typeof e?h+=":"+e:"symbol"==typeof e&&(h=void 0),u.name=e,u.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},u.methodFactory=i||d,u.getLevel=function(){return null!=l?l:null!=o?o:s},u.setLevel=function(e,i){return l=m(e),!1!==i&&function(e){var i=(n[e]||"silent").toUpperCase();if(typeof window!==t&&h){try{window.localStorage[h]=i;return}catch(e){}try{window.document.cookie=encodeURIComponent(h)+"="+i+";"}catch(e){}}}(l),c.call(u)},u.setDefaultLevel=function(e){o=m(e),p()||u.setLevel(e,!1)},u.resetLevel=function(){if(l=null,typeof window!==t&&h){try{window.localStorage.removeItem(h)}catch(e){}try{window.document.cookie=encodeURIComponent(h)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch(e){}}c.call(u)},u.enableAll=function(e){u.setLevel(u.levels.TRACE,e)},u.disableAll=function(e){u.setLevel(u.levels.SILENT,e)},u.rebuild=function(){if(r!==u&&(s=m(r.getLevel())),c.call(u),r===u)for(var e in a)a[e].rebuild()},s=m(r?r.getLevel():"WARN");var g=p();null!=g&&(l=m(g)),c.call(u)}
1(r=new u).getLogger=function(e){if("symbol"!=typeof e&&"string"!=typeof e||""===e)throw TypeError("You must supply a name when creating a logger.");var t=a[e];return t||(t=a[e]=new u(e,r.methodFactory)),t};var h=typeof window!==t?window.log:void 0;return r.noConflict=function(){return typeof window!==t&&window.log===r&&(window.log=h),r},r.getLoggers=function(){return a},r.default=r,r},ax.exports?ax.exports=e():aE.log=e(),ax.exports)}();(u=er||(er={}))[u.trace=0]="trace",u[u.debug=1]="debug",u[u.info=2]="info",u[u.warn=3]="warn",u[u.error=4]="error",u[u.silent=5]="silent",(h=es||(es={})).Default="livekit",h.Room="livekit-room",h.TokenSource="livekit-token-source",h.Participant="livekit-participant",h.Track="livekit-track",h.Publication="livekit-track-publication",h.Engine="livekit-engine",h.Signal="livekit-signal",h.PCManager="livekit-pc-manager",h.PCTransport="livekit-pc-transport",h.E2EE="lk-e2ee",h.DataTracks="livekit-data-tracks";let aR=aP.getLogger(es.Default);function aI(e,t){var i,n;let a,r,s=aP.getLogger(e);return(s.setDefaultLevel(aR.getLevel()),t)?(i=s,n=t,a=e=>(t,a)=>{let r=n(),s=r||a?Object.assign(Object.assign({},r),a):void 0;i[e](t,s)},(r=Object.create(i)).trace=a("trace"),r.debug=a("debug"),r.info=a("info"),r.warn=a("warn"),r.error=a("error"),r):s}Object.values(es).map(e=>aP.getLogger(e)),aR.setDefaultLevel(er.info);let aN=aP.getLogger(es.E2EE),a_=[0,300,1200,2700,4800,7e3,7e3,7e3,7e3,7e3];function aD(e,t,i,n){return new(i||(i=Promise))(function(a,r){function s(e){try{c(n.next(e))}catch(e){r(e)}}function o(e){try{c(n.throw(e))}catch(e){r(e)}}function c(e){var t;e.done?a(e.value):((t=e.value)instanceof i?t:new i(function(e){e(t)})).then(s,o)}c((n=n.apply(e,t||[])).next())})}function aM(e){return this instanceof aM?(this.v=e,this):new aM(e)}function aO(e){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var t,i=e[Symbol.asyncIterator];return i?i.call(e):(e=function(e){var t="function"==typeof Symbol&&Symbol.iterator,i=t&&e[t],n=0;if(i)return i.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(i){t[i]=e[i]&&function(t){return new Promise(function(n,a){var r,s,o;r=n,s=a,o=(t=e[i](t)).done,Promise.resolve(t.value).then(function(e){r({value:e,done:o})},s)})}}}"function"==typeof SuppressedError&&SuppressedError;var aA={exports:{}},aL=function(){if(eo)return aA.exports;eo=1;var e,t="object"==typeof Reflect?Reflect:null,i=t&&"function"==typeof t.apply?t.apply:function(e,t,i){return Function.prototype.apply.call(e,t,i)};e=t&&"function"==typeof t.ownKeys?t.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var n=Number.isNaN||function(e){return e!=e};function a(){a.init.call(this)}aA.exports=a,aA.exports.once=function(e,t){return new Promise(function(i,n){var a,r,s;function o(i){e.removeListener(t,c),n(i)}function c(){"function"==typeof e.removeListener&&e.removeListener("error",o),i([].slice.call(arguments))}m(e,t,c,{once:!0}),"error"!==t&&(a=e,r=o,s={once:!0},"function"==typeof a.on&&m(a,"error",r,s))})},a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var r=10;function s(e){if("function"!=typeof e)throw TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function o(e){return void 0===e._maxListeners?a.defaultMaxListeners:e._maxListeners}function c(e,t,i,n){if(s(i),void 0===(r=e._events)?(r=e._events=Object.create(null),e._eventsCount=0):(void 0!==r.newListener&&(e.emit("newListener",t,i.listener?i.listener:i),r=e._events),c=r[t]),void 0===c)c=r[t]=i,++e._eventsCount;else if("function"==typeof c?c=r[t]=n?[i,c]:[c,i]:n?c.unshift(i):c.push(i),(a=o(e))>0&&c.length>a&&!c.warned){c.warned=!0;var a,r,c,l=Error("Possible EventEmitter memory leak detected. "+c.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=c.length,console&&console.warn&&console.warn(l)}return e}function l(){if(!this.fired)return(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0==arguments.length)?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(e,t,i){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:i},a=l.bind(n);return a.listener=i,n.wrapFn=a,a}function u(e,t,i){var n=e._events;if(void 0===n)return[];var a=n[t];return void 0===a?[]:"function"==typeof a?i?[a.listener||a]:[a]:i?function(e){for(var t=Array(e.length),i=0;i<t.length;++i)t[i]=e[i].listener||e[i];return t}(a):p(a,a.length)}function h(e){var t=this._events;if(void 0!==t){var i=t[e];if("function"==typeof i)return 1;if(void 0!==i)return i.length}return 0}function p(e,t){for(var i=Array(t),n=0;n<t;++n)i[n]=e[n];return i}function m(e,t,i,n){if("function"==typeof e.on)n.once?e.once(t,i):e.on(t,i);else if("function"==typeof e.addEventListener)e.addEventListener(t,function a(r){n.once&&e.removeEventListener(t,a),i(r)});else throw TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e)}return Object.defineProperty(a,"defaultMaxListeners",{enumerable:!0,get:function(){return r},set:function(e){if("number"!=typeof e||e<0||n(e))throw RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");r=e}}),a.init=function(){(void 0===this._events||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},a.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||n(e))throw RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},a.prototype.getMaxListeners=function(){return o(this)},a.prototype.emit=function(e){for(var t=[],n=1;n<arguments.length;n++)t.push(arguments[n]);var a="error"===e,r=this._events;if(void 0!==r)a=a&&void 0===r.error;else if(!a)return!1;if(a){if(t.length>0&&(s=t[0]),s instanceof Error)throw s;var s,o=Error("Unhandled error."+(s?" ("+s.message+")":""));throw o.context=s,o}var c=r[e];if(void 0===c)return!1;if("function"==typeof c)i(c,this,t);else for(var l=c.length,d=p(c,l),n=0;n<l;++n)i(d[n],this,t);return!0},a.prototype.addListener=function(e,t){return c(this,e,t,!1)},a.prototype.on=a.prototype.addListener,a.prototype.prependListener=function(e,t){return c(this,e,t,!0)},a.prototype.once=function(e,t){return s(t),this.on(e,d(this,e,t)),this},a.prototype.prependOnceListener=function(e,t){return s(t),this.prependListener(e,d(this,e,t)),this},a.prototype.removeListener=function(e,t){var i,n,a,r,o;if(s(t),void 0===(n=this._events)||void 0===(i=n[e]))return this;if(i===t||i.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit
1("removeListener",e,i.listener||t));else if("function"!=typeof i){for(a=-1,r=i.length-1;r>=0;r--)if(i[r]===t||i[r].listener===t){o=i[r].listener,a=r;break}if(a<0)return this;0===a?i.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(i,a),1===i.length&&(n[e]=i[0]),void 0!==n.removeListener&&this.emit("removeListener",e,o||t)}return this},a.prototype.off=a.prototype.removeListener,a.prototype.removeAllListeners=function(e){var t,i,n;if(void 0===(i=this._events))return this;if(void 0===i.removeListener)return 0==arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==i[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete i[e]),this;if(0==arguments.length){var a,r=Object.keys(i);for(n=0;n<r.length;++n)"removeListener"!==(a=r[n])&&this.removeAllListeners(a);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=i[e]))this.removeListener(e,t);else if(void 0!==t)for(n=t.length-1;n>=0;n--)this.removeListener(e,t[n]);return this},a.prototype.listeners=function(e){return u(this,e,!0)},a.prototype.rawListeners=function(e){return u(this,e,!1)},a.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):h.call(e,t)},a.prototype.listenerCount=h,a.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]},aA.exports}(),aj=aC(aL);let aU=!0,aF=!0;function aB(e,t,i){let n=e.match(t);return n&&n.length>=i&&parseFloat(n[i],10)}function aq(e,t,i){if(!e.RTCPeerConnection)return;if(!Object.getOwnPropertyDescriptor(EventTarget.prototype,"addEventListener").writable)return void az("Unable to polyfill events");let n=e.RTCPeerConnection.prototype,a=n.addEventListener;n.addEventListener=function(e,n){if(e!==t)return a.apply(this,arguments);let r=e=>{let t=i(e);t&&(n.handleEvent?n.handleEvent(t):n(t))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(n,r),a.apply(this,[e,r])};let r=n.removeEventListener;n.removeEventListener=function(e,i){if(e!==t||!this._eventMap||!this._eventMap[t]||!this._eventMap[t].has(i))return r.apply(this,arguments);let n=this._eventMap[t].get(i);return this._eventMap[t].delete(i),0===this._eventMap[t].size&&delete this._eventMap[t],0===Object.keys(this._eventMap).length&&delete this._eventMap,r.apply(this,[e,n])},Object.defineProperty(n,"on"+t,{get(){return this["_on"+t]},set(e){this["_on"+t]&&(this.removeEventListener(t,this["_on"+t]),delete this["_on"+t]),e&&this.addEventListener(t,this["_on"+t]=e)},enumerable:!0,configurable:!0})}function aV(e){return"boolean"!=typeof e?Error("Argument type: "+typeof e+". Please use a boolean."):(aU=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function aH(e){return"boolean"!=typeof e?Error("Argument type: "+typeof e+". Please use a boolean."):(aF=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function az(){"object"==typeof window&&!aU&&"u">typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}function aW(e,t){aF&&console.warn(e+" is deprecated, please use "+t+" instead.")}function aG(e){return"[object Object]"===Object.prototype.toString.call(e)}function aK(e,t,i){let n=i?"outbound-rtp":"inbound-rtp",a=new Map;if(null===t)return a;let r=[];return e.forEach(e=>{"track"===e.type&&e.trackIdentifier===t.id&&r.push(e)}),r.forEach(t=>{e.forEach(i=>{i.type===n&&i.trackId===t.id&&function e(t,i,n){!i||n.has(i.id)||(n.set(i.id,i),Object.keys(i).forEac
vendor: 13,327 bytes, line 1
1h(a=>{a.endsWith("Id")?e(t,t.get(i[a]),n):a.endsWith("Ids")&&i[a].forEach(i=>{e(t,t.get(i),n)})}))}(e,i,a)})}),a}let aJ=az;function aQ(e,t){let i=e&&e.navigator;if(!i.mediaDevices)return;let n=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;let t={};return Object.keys(e).forEach(i=>{if("require"===i||"advanced"===i||"mediaSource"===i)return;let n="object"==typeof e[i]?e[i]:{ideal:e[i]};void 0!==n.exact&&"number"==typeof n.exact&&(n.min=n.max=n.exact);let a=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==n.ideal){t.optional=t.optional||[];let e={};"number"==typeof n.ideal?(e[a("min",i)]=n.ideal,t.optional.push(e),(e={})[a("max",i)]=n.ideal):e[a("",i)]=n.ideal,t.optional.push(e)}void 0!==n.exact&&"number"!=typeof n.exact?(t.mandatory=t.mandatory||{},t.mandatory[a("",i)]=n.exact):["min","max"].forEach(e=>{void 0!==n[e]&&(t.mandatory=t.mandatory||{},t.mandatory[a(e,i)]=n[e])})}),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},a=function(e,a){if(t.version>=61)return a(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){let t=function(e,t,i){t in e&&!(i in e)&&(e[i]=e[t],delete e[t])};t((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),t(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=n(e.audio)}if(e&&"object"==typeof e.video){let r=e.video.facingMode;r=r&&("object"==typeof r?r:{ideal:r});let s=t.version<66;if(r&&("user"===r.exact||"environment"===r.exact||"user"===r.ideal||"environment"===r.ideal)&&!(i.mediaDevices.getSupportedConstraints&&i.mediaDevices.getSupportedConstraints().facingMode&&!s)){let t;if(delete e.video.facingMode,"environment"===r.exact||"environment"===r.ideal?t=["back","rear"]:("user"===r.exact||"user"===r.ideal)&&(t=["front"]),t)return i.mediaDevices.enumerateDevices().then(i=>{let s=(i=i.filter(e=>"videoinput"===e.kind)).find(e=>t.some(t=>e.label.toLowerCase().includes(t)));return!s&&i.length&&t.includes("back")&&(s=i[i.length-1]),s&&(e.video.deviceId=r.exact?{exact:s.deviceId}:{ideal:s.deviceId}),e.video=n(e.video),aJ("chrome: "+JSON.stringify(e)),a(e)})}e.video=n(e.video)}return aJ("chrome: "+JSON.stringify(e)),a(e)},r=function(e){return t.version>=64?e:{name:({PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"})[e.name]||e.name,message:e.message,constraint:e.constraint||e.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}};if(i.getUserMedia=(function(e,t,n){a(e,e=>{i.webkitGetUserMedia(e,t,e=>{n&&n(r(e))})})}).bind(i),i.mediaDevices.getUserMedia){let e=i.mediaDevices.getUserMedia.bind(i.mediaDevices);i.mediaDevices.getUserMedia=function(t){return a(t,t=>e(t).then(e=>{if(t.audio&&!e.getAudioTracks().length||t.video&&!e.getVideoTracks().length)throw e.getTracks().forEach(e=>{e.stop()}),new DOMException("","NotFoundError");return e},e=>Promise.reject(r(e))))}}}function a$(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function aY(e,t){if(!(t.version>102))if("object"!=typeof e||!e.RTCPeerConnection||"ontrack"in e.RTCPeerConnection.prototype)aq(e,"track",e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e));else{Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)},enumerable:!0,configurable:!0});let t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener("addtrack",i=>{let n;n=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find(e=>e.track&&e.track.id===i.track.id):{track:i.track};let a=new Event("track");a.track=i.track,a.receiver=n,a.transceiver={receiver:n},a.streams=[t.stream],this.dispatchEvent(a)}),t.stream.getTracks().forEach(i=>{let n;n=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find(e=>e.track&&e.track.id===i.id):{track:i};let a=new Event("track");a.track=i,a.receiver=n,a.transceiver={receiver:n},a.streams=[t.stream],this.dispatchEvent(a)})},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}}function aX(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){let t=function(e,t){return{track:t,get dtmf(){return void 0===this._dtmf&&("audio"===t.kind?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};let i=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,n){let a=i.apply(this,arguments);return a||(a=t(this,e),this._senders.push(a)),a};let n=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){n.apply(this,arguments);let t=this._senders.indexOf(e);-1!==t&&this._senders.splice(t,1)}}let i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._senders=this._senders||[],i.apply(this,[e]),e.getTracks().forEach(e=>{this._senders.push(t(this,e))})};let n=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],n.apply(this,[e]),e.getTracks().forEach(e=>{let t=this._senders.find(t=>t.track===e);t&&this._senders.splice(this._senders.indexOf(t),1)})}}else if("object"==typeof e&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){let t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function aZ(e,t){if(t.version>=67||!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver))return;if(!("getStats"in e.RTCRtpSender.prototype)){let t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e});let i=e.RTCPeerConnection.prototype.addTrack;i&&(e.RTCPeerConnection.prototype.addTrack=function(){let e=i.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){let e=this;return this._pc.getStats().then(t=>aK(t,e.track,!0))}}if(!("getStats"in e.RTCRtpReceiver.prototype)){let t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e}),aq(e,"track",e=>(e.receiver._pc=e.srcElement,e)),e.RTCRtpReceiver.prototype.getStats=function(){let e=this;return this._pc.getStats().then(t=>aK(t,e.track,!1))}}if(!("getStats"in e.RTCRtpSender.prototype&&"getStats"in e.RTCRtpReceiver.prototype))return;let i=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){let e,t,i,n=arguments[0];return(this.getSenders().forEach(t=>{t.track===n&&(e?i=!0:e=t)}),this.getReceivers().forEach(e=>(e.track===n&&(t?i=!0:t=e),e.track===n)),i||e&&t)?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):e?e.getStats():t?t.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return i.apply(this,arguments)}}function a0(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(e=>this._shimmedLocalStreams[e][0])};let t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,i){if(!i)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};let n=t.apply(this,arguments);return this._shimmedLocalStreams[i.id]?-1===this._shimmedLocalStreams[i.id].indexOf(n)&&this._shimmedLocalStreams[i.id].push(n):this._shimmedLocalStreams[i.id]=[i,n],n};let i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach(e=>{if(this.getSenders().find(t=>t.track===e))throw new DOMException("Track already exists.","InvalidAccessError")});let t=this.getSenders();i.apply(this,arguments);let n=this.getSenders().filter(e=>-1===t.indexOf(e));this._shimmedLocalStreams[e.id]=[e].concat(n)};let n=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],n.apply(this,arguments)};let a=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach(t=>{let i=this._shimmedLocalStreams[t].indexOf(e);-1!==i&&this._shimmedLocalStreams[t].splice(i,1),1===this._shimmedLocalStreams[t].length&&delete this._shimmedLocalStreams[t]}),a.apply(this,arguments)}}function a1(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return a0(e);let i=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){let e=i.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map(e=>this._reverseStreams[e.id])};let n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},t.getTracks().forEach(e=>{if(this.getSenders().find(t=>t.track===e))throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[t.id]){let i=new e.MediaStream(t.getTracks());this._streams[t.id]=i,this._reverseStreams[i.id]=t,t=i}n.apply(this,[t])};let a=e.RTCPeerConnection.prototype.removeStream;function r(e,t){let i=t.sdp;return Object.keys(e._reverseStreams||[]).forEach(t=>{let n=e._reverseStreams[t],a=e._streams[n.id];i=i.replace(RegExp(a.id,"g"),n.id)}),new RTCSessionDescription({type:t.type,sdp:i})}e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},a.apply(this,[this._streams[e.id]||e]),delete this._reverseStreams[this._streams[e.id]?this._streams[e.id].id:e.id],delete this._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,i){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");let n=[].slice.call(arguments,1);if(1!==n.length||!n[0].getTracks().find(e=>e===t))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find(e=>e.track===t))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};let a=this._streams[i.id];if(a)a.addTrack(t),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{let n=new e.MediaStream([t]);this._streams[i.id]=n,this._reverseStreams[n.id]=i,this.addStream(n)}return this.getSenders().find(e=>e.track===t)},["createOffer","createAnswer"].forEach(function(t){let i=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=({[t](){let e=arguments,t=arguments.length&&"function"==typeof arguments[0];return t?i.apply(this,[t=>{let i=r(this,t);e[0].apply(null,[i])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):i.apply(this,arguments).then(e=>r(this,e))}})[t]});let s=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){var e,t;let i;return arguments.length&&arguments[0].type?(arguments[0]=(e=this,t=arguments[0],i=t.sdp,Object.keys(e._reverseStreams||[]).forEach(t=>{let n=e._reverseStreams[t],a=e._streams[n.id];i=i.replace(RegExp(n.id,"g"),a.id)}),new RTCSessionDescription({type:t.type,sdp:i})),s.apply(this,arguments)):s.apply(this,arguments)};let o=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){let e=o.get.apply(this);return""===e.type?e:r(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){let t;if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");
1if(!e._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(e._pc!==this)throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{},Object.keys(this._streams).forEach(i=>{this._streams[i].getTracks().find(t=>e.track===t)&&(t=this._streams[i])}),t&&(1===t.getTracks().length?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event("negotiationneeded")))}}function a2(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){let i=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=({[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),i.apply(this,arguments)}})[t]})}function a3(e,t){t.version>102||aq(e,"negotiationneeded",e=>{let i=e.target;if(!(t.version<72)&&(!i.getConfiguration||"plan-b"!==i.getConfiguration().sdpSemantics)||"stable"===i.signalingState)return e})}var a4=Object.freeze({__proto__:null,fixNegotiationNeeded:a3,shimAddTrackRemoveTrack:a1,shimAddTrackRemoveTrackWithNative:a0,shimGetSendersWithDtmf:aX,shimGetUserMedia:aQ,shimMediaStream:a$,shimOnTrack:aY,shimPeerConnection:a2,shimSenderReceiverGetStats:aZ});function a5(e,t){let i=e&&e.navigator,n=e&&e.MediaStreamTrack;if(i.getUserMedia=function(e,t,n){aW("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),i.mediaDevices.getUserMedia(e).then(t,n)},!(t.version>55&&"autoGainControl"in i.mediaDevices.getSupportedConstraints())){let e=function(e,t,i){t in e&&!(i in e)&&(e[i]=e[t],delete e[t])},t=i.mediaDevices.getUserMedia.bind(i.mediaDevices);if(i.mediaDevices.getUserMedia=function(i){return"object"==typeof i&&"object"==typeof i.audio&&(e((i=JSON.parse(JSON.stringify(i))).audio,"autoGainControl","mozAutoGainControl"),e(i.audio,"noiseSuppression","mozNoiseSuppression")),t(i)},n&&n.prototype.getSettings){let t=n.prototype.getSettings;n.prototype.getSettings=function(){let i=t.apply(this,arguments);return e(i,"mozAutoGainControl","autoGainControl"),e(i,"mozNoiseSuppression","noiseSuppression"),i}}if(n&&n.prototype.applyConstraints){let t=n.prototype.applyConstraints;n.prototype.applyConstraints=function(i){return"audio"===this.kind&&"object"==typeof i&&(e(i=JSON.parse(JSON.stringify(i)),"autoGainControl","mozAutoGainControl"),e(i,"noiseSuppression","mozNoiseSuppression")),t.apply(this,[i])}}}}function a6(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function a8(e,t){"object"==typeof e&&(e.RTCPeerConnection||e.mozRTCPeerConnection)&&(!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){let i=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=({[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),i.apply(this,arguments)}})[t]}))}function a9(e,t){if("object"!=typeof e||!(e.RTCPeerConnection||e.mozRTCPeerConnection)||t.version>=151)return;let i={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},n=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){let[e,a,r]=arguments;return"closed"===this.signalingState?Promise.resolve(new Map):n.apply(this,[e||null]).then(e=>{if(t.version<53&&!a)try{e.forEach(e=>{e.type=i[e.type]||e.type})}catch(t){if("TypeError"!==t.name)throw t;e.forEach((t,n)=>{e.set(n,Object.assign({},t,{type:i[t.type]||t.type}))})}return e}).then(a,r)}}function a7(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender)||e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)return;let t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){let e=t.apply(this,[]);
vendor: 24,759 bytes, line 1
1return e.forEach(e=>e._pc=this),e});let i=e.RTCPeerConnection.prototype.addTrack;i&&(e.RTCPeerConnection.prototype.addTrack=function(){let e=i.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function re(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender)||e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype)return;let t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e}),aq(e,"track",e=>(e.receiver._pc=e.srcElement,e)),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function rt(e){!e.RTCPeerConnection||"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){aW("removeStream","removeTrack"),this.getSenders().forEach(t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)})})}function ri(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function rn(e){if(!("object"==typeof e&&e.RTCPeerConnection))return;let t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let e=arguments[1]&&arguments[1].sendEncodings;void 0===e&&(e=[]);let i=(e=[...e]).length>0;i&&e.forEach(e=>{if("rid"in e&&!/^[a-z0-9]{0,16}$/i.test(e.rid))throw TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in e&&!(parseFloat(e.maxFramerate)>=0))throw RangeError("max_framerate must be >= 0.0")});let n=t.apply(this,arguments);if(i){let{sender:t}=n,i=t.getParameters();"encodings"in i&&(1!==i.encodings.length||0!==Object.keys(i.encodings[0]).length)||(i.encodings=e,t.sendEncodings=e,this.setParametersPromises.push(t.setParameters(i).then(()=>{delete t.sendEncodings}).catch(()=>{delete t.sendEncodings})))}return n})}function ra(e){if(!("object"==typeof e&&e.RTCRtpSender))return;let t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){let e=t.apply(this,arguments);return"encodings"in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function rr(e){if(!("object"==typeof e&&e.RTCPeerConnection))return;let t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>t.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):t.apply(this,arguments)}}function rs(e){if(!("object"==typeof e&&e.RTCPeerConnection))return;let t=e.RTCPeerConnection.prototype.createAnswer;e.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>t.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):t.apply(this,arguments)}}var ro=Object.freeze({__proto__:null,shimAddTransceiver:rn,shimCreateAnswer:rs,shimCreateOffer:rr,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(i){if(!(i&&i.video)){let e=new DOMException("getDisplayMedia without video constraints is undefined");return e.name="NotFoundError",e.code=8,Promise.reject(e)}return!0===i.video?i.video={mediaSource:t}:i.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(i)})},shimGetParameters:ra,shimGetStats:a9,shimGetUserMedia:a5,shimOnTrack:a6,shimPeerConnection:a8,shimRTCDataChannel:ri,shimReceiverGetStats:re,shimRemoveStream:rt,shimSenderGetStats:a7});function rc(e){if("object"==typeof e&&e.RTCPeerConnection){if("getLocalStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in e.RTCPeerConnection.prototype)){let t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||(this._localStreams=[]),this._localStreams.includes(e)||this._localStreams.push(e),e.getAudioTracks().forEach(i=>t.call(this,i,e)),e.getVideoTracks().forEach(i=>t.call(this,i,e))},e.RTCPeerConnection.prototype.addTrack=function(e){for(var i=arguments.length,n=Array(i>1?i-1:0),a=1;a<i;a++)n[a-1]=arguments[a];return n&&n.forEach(e=>{this._localStreams?this._localStreams.includes(e)||this._localStreams.push(e):this._localStreams=[e]}),t.apply(this,arguments)}}"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);let t=this._localStreams.indexOf(e);if(-1===t)return;this._localStreams.splice(t,1);let i=e.getTracks();this.getSenders().forEach(e=>{i.includes(e.track)&&this.removeTrack(e)})})}}function rl(e){if("object"==typeof e&&e.RTCPeerConnection&&("getRemoteStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(e){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=e),this.addEventListener("track",this._onaddstreampoly=e=>{e.streams.forEach(e=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(e))return;this._remoteStreams.push(e);let t=new Event("addstream");t.stream=e,this.dispatchEvent(t)})})}});let t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){let e=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(t){t.streams.forEach(t=>{if(e._remoteStreams||(e._remoteStreams=[]),e._remoteStreams.indexOf(t)>=0)return;e._remoteStreams.push(t);let i=new Event("addstream");i.stream=t,e.dispatchEvent(i)})}),t.apply(e,arguments)}}}function rd(e){if("object"!=typeof e||!e.RTCPeerConnection)return;let t=e.RTCPeerConnection.prototype,i=t.createOffer,n=t.createAnswer,a=t.setLocalDescription,r=t.setRemoteDescription,s=t.addIceCandidate;t.createOffer=function(e,t){let n=arguments.length>=2?arguments[2]:arguments[0],a=i.apply(this,[n]);return t?(a.then(e,t),Promise.resolve()):a},t.createAnswer=function(e,t){let i=arguments.length>=2?arguments[2]:arguments[0],a=n.apply(this,[i]);return t?(a.then(e,t),Promise.resolve()):a};let o=function(e,t,i){let n=a.apply(this,[e]);return i?(n.then(t,i),Promise.resolve()):n};t.setLocalDescription=o,t.setRemoteDescription=o=function(e,t,i){let n=r.apply(this,[e]);return i?(n.then(t,i),Promise.resolve()):n},t.addIceCandidate=function(e,t,i){let n=s.apply(this,[e]);return i?(n.then(t,i),Promise.resolve()):n}}function ru(e){let t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){let e=t.mediaDevices,i=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>i(rh(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=(function(e,i,n){t.mediaDevices.getUserMedia(e).then(i,n)}).bind(t))}function rh(e){return e&&void 0!==e.video?Object.assign({},e,{video:function e(t){return aG(t)?Object.keys(t).reduce(function(i,n){let a=aG(t[n]),r=a?e(t[n]):t[n],s=a&&!Object.keys(r).length;return void 0===r||s?i:Object.assign(i,{[n]:r})},{}):t}(e.video)}):e}function rp(e){if(!e.RTCPeerConnection)return;let t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,i){if(e&&e.iceServers){let t=[];for(let i=0;i<e.iceServers.length;i++){let n=e.iceServers[i];void 0===n.urls&&n.url?(aW("RTCIceServer.url","RTCIceServer.urls"),(n=JSON.parse(JSON.stringify(n))).urls=n.url,delete n.url,t.push(n)):t.push(e.iceServers[i])}e.iceServers=t}return new t(e,i)},e.RTCPeerConnection.prototype=t.prototype,"generateCertificate"in t&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:()=>t.generateCertificate})}function rm(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function rg(e){let t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);let t=this.getTransceivers().find(e=>"audio"===e.receiver.track.kind);!1===e.offerToReceiveAudio&&t?"sendrecv"===t.direction?t.setDirection?t.setDirection("sendonly"):t.direction="sendonly":"recvonly"===t.direction&&(t.setDirection?t.setDirection("inactive"):t.direction="inactive"):!0!==e.offerToReceiveAudio||t||this.addTransceiver("audio",{direction:"recvonly"}),void 0!==e.offerToReceiveVideo&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);let i=this.getTransceivers().find(e=>"video"===e.receiver.track.kind);!1===e.offerToReceiveVideo&&i?"sendrecv"===i.direction?i.setDirection?i.setDirection("sendonly"):i.direction="sendonly":"recvonly"===i.direction&&(i.setDirection?i.setDirection("inactive"):i.direction="inactive"):!0!==e.offerToReceiveVideo||i||this.addTransceiver("video",{direction:"recvonly"})}return t.apply(this,arguments)}}function rf(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var rv=Object.freeze({__proto__:null,shimAudioContext:rf,shimCallbacksAPI:rd,shimConstraints:rh,shimCreateOfferLegacy:rg,shimGetUserMedia:ru,shimLocalStreamsAPI:rc,shimRTCIceServerUrls:rp,shimRemoteStreamsAPI:rl,shimTrackEventTransceiver:rm}),rb={exports:{}},rk=function(){let e;return ec?rb.exports:(ec=1,(e={}).generateIdentifier=function(){return Math.random().toString(36).substring(2,12)},e.localCName=e.generateIdentifier(),e.splitLines=function(e){return e.trim().split("\n").map(e=>e.trim())},e.splitSections=function(e){return e.split("\nm=").map((e,t)=>(t>0?"m="+e:e).trim()+"\r\n")},e.getDescription=function(t){let i=e.splitSections(t);return i&&i[0]},e.getMediaSections=function(t){let i=e.splitSections(t);return i.shift(),i},e.matchPrefix=function(t,i){return e.splitLines(t).filter(e=>0===e.indexOf(i))},e.parseCandidate=function(e){let t,i={foundation:(t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" "))[0],component:{1:"rtp",2:"rtcp"}[t[1]]||t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]};for(let e=8;e<t.length;e+=2)switch(t[e]){case"raddr":i.relatedAddress=t[e+1];break;case"rport":i.relatedPort=parseInt(t[e+1],10);break;case"tcptype":i.tcpType=t[e+1];break;case"ufrag":i.ufrag=t[e+1],i.usernameFragment=t[e+1];break;default:void 0===i[t[e]]&&(i[t[e]]=t[e+1])}return i},e.writeCandidate=function(e){let t=[];t.push(e.foundation);let i=e.component;"rtp"===i?t.push(1):"rtcp"===i?t.push(2):t.push(i),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);let n=e.type;return t.push("typ"),t.push(n),"host"!==n&&e.relatedAddress&&void 0!==e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&"tcp"===e.protocol.toLowerCase()&&(t.push("tcptype"),t.push(e.tcpType)),(e.usernameFragment||e.ufrag)&&(t.push("ufrag"),t.push(e.usernameFragment||e.ufrag)),"candidate:"+t.join(" ")},e.parseIceOptions=function(e){return e.substring(14).split(" ")},e.parseRtpMap=function(e){let t=e.substring(9).split(" "),i={payloadType:parseInt(t.shift(),10)};return i.name=(t=t[0].split("/"))[0],i.clockRate=parseInt(t[1],10),i.channels=3===t.length?parseInt(t[2],10):1,i.numChannels=i.channels,i},e.writeRtpMap=function(e){let t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);let i=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==i?"/"+i:"")+"\r\n"},e.parseExtmap=function(e){let t=e.substring(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1],attributes:t.slice(2).join(" ")}},e.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+(e.attributes?" "+e.attributes:"")+"\r\n"},e.parseFmtp=function(e){let t,i={},n=e.substring(e.indexOf(" ")+1).split(";");for(let e=0;e<n.length;e++)i[(t=n[e].trim().split("="))[0].trim()]=t[1];return i},e.writeFmtp=function(e){let t="",i=e.payloadType;if(void 0!==e.preferredPayloadType&&(i=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){let n=[];Object.keys(e.parameters).forEach(t=>{void 0!==e.parameters[t]?n.push(t+"="+e.parameters[t]):n.push(t)}),t+="a=fmtp:"+i+" "+n.join(";")+"\r\n"}return t},e.parseRtcpFb=function(e){let t=e.substring(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},e.writeRtcpFb=function(e){let t="",i=e.payloadType;return void 0!==e.preferredPayloadType&&(i=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach(e=>{t+="a=rtcp-fb:"+i+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"}),t},e.parseSsrcMedia=function(e){let t=e.indexOf(" "),i={ssrc:parseInt(e.substring(7,t),10)},n=e.indexOf(":",t);return n>-1?(i.attribute=e.substring(t+1,n),i.value=e.substring(n+1)):i.attribute=e.substring(t+1),i},e.parseSsrcGroup=function(e){let t=e.substring(13).split(" ");return{semantics:t.shift(),ssrcs:t.map(e=>parseInt(e,10))}},e.getMid=function(t){let i=e.matchPrefix(t,"a=mid:")[0];if(i)return i.substring(6)},e.parseFingerprint=function(e){let t=e.substring(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1].toUpperCase()}},e.getDtlsParameters=function(t,i){return{role:"auto",fingerprints:e.matchPrefix(t+i,"a=fingerprint:").map(e.parseFingerprint)}},e.writeDtlsParameters=function(e,t){let i="a=setup:"+t+"\r\n";return e.fingerprints.forEach(e=>{i+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"}),i},e.parseCryptoLine=function(e){let t=e.substring(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},e.writeCryptoLine=function(t){return"a=crypto:"+t.tag+" "+t.cryptoSuite+" "+("object"==typeof t.keyParams?e.writeCryptoKeyParams(t.keyParams):t.keyParams)+(t.sessionParams?" "+t.sessionParams.join(" "):"")+"\r\n"},e.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;let t=e.substring(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}},e.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},e.getCryptoParameters=function(t,i){return e.matchPrefix(t+i,"a=crypto:").map(e.parseCryptoLine)},e.getIceParameters=function(t,i){let n=e.matchPrefix(t+i,"a=ice-ufrag:")[0],a=e.matchPrefix(t+i,"a=ice-pwd:")[0];return n&&a?{usernameFragment:n.substring(12),password:a.substring(10)}:null},e.writeIceParameters=function(e){let t="a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n";return e.iceLite&&(t+="a=ice-lite\r\n"),t},e.parseRtpParameters=function(t){let i={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},n=e.splitLines(t)[0].split(" ");i.profile=n[2];for(let a=3;a<n.length;a++){let r=n[a],s=e.matchPrefix(t,"a=rtpmap:"+r+" ")[0];if(s){let n=e.parseRtpMap(s),a=e.matchPrefix(t,"a=fmtp:"+r+" ");switch(n.parameters=a.length?e.parseFmtp(a[0]):{},n.rtcpFeedback=e.matchPrefix(t,"a=rtcp-fb:"+r+" ").map(e.parseRtcpFb),i.codecs.push(n),n.name.toUpperCase()){case"RED":case"ULPFEC":i.fecMechanisms.push(n.name.toUpperCase())}}}e.matchPrefix(t,"a=extmap:").forEach(t=>{i.headerExtensions.push(e.parseExtmap(t))});let a=e.matchPrefix(t,"a=rtcp-fb:* ").map(e.parseRtcpFb);return i.codecs.forEach(e=>{a.forEach(t=>{e.rtcpFeedback.find(e=>e.type===t.type&&e.parameter===t.parameter)||e.rtcpFeedback.push(t)})}),i},e.writeRtpDescription=function(t,i){let n="";n+="m="+t+" ",n+=i.codecs.length>0?"9":"0",n+=" "+(i.profile||"UDP/TLS/RTP/SAVPF")+" ",n+=i.codecs.map(e=>void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType).join(" ")+"\r\n",n+="c=IN IP4 0.0.0.0\r\n",n+="a=rtcp:9 IN IP4 0.0.0.0\r\n",i.codecs.forEach(t=>{n+=e.writeRtpMap(t),n+=e.writeFmtp(t),n+=e.writeRtcpFb(t)});let a=0;return i.codecs.forEach(e=>{e.maxptime>a&&(a=e.maxptime)}),a>0&&(n+="a=maxptime:"+a+"\r\n"),i.headerExtensions&&i.headerExtensions.forEach(t=>{n+=e.writeExtmap(t)}),n},e.parseRtpEncodingParameters=function(t){let i,n=[],a=e.parseRtpParameters(t),r=-1!==a.fecMechanisms.indexOf("RED"),s=-1!==a.fecMechanisms.indexOf("ULPFEC"),o=e.matchPrefix(t,"a=ssrc:").map(t=>e.parseSsrcMedia(t)).filter(e=>"cname"===e.attribute),c=o.length>0&&o[0].ssrc,l=e.matchPrefix(t,"a=ssrc-group:FID").map(e=>e.substring(17).split(" ").map(e=>parseInt(e,10)));l.length>0&&l[0].length>1&&l[0][0]===c&&(i=l[0][1]),a.codecs.forEach(e=>{if("RTX"===e.name.toUpperCase()&&e.parameters.apt){let t={ssrc:c,codecPayloadType:parseInt(e.parameters.apt,10)};c&&i&&(t.rtx={ssrc:i}),n.push(t),r&&((t=JSON.parse(JSON.stringify(t))).fec={ssrc:c,mechanism:s?"red+ulpfec":"red"},n.push(t))}}),0===n.length&&c&&n.push({ssrc:c});let d=e.matchPrefix(t,"b=");return d.length&&(d=0===d[0].indexOf("b=TIAS:")?parseInt(d[0].substring(7),10):0===d[0].indexOf("b=AS:")?1e3*parseInt(d[0].substring(5),10)*.95-16e3:void 0,n.forEach(e=>{e.maxBitrate=d})),n},e.parseRtcpParameters=function(t){let i={},n=e.matchPrefix(t,"a=ssrc:").map(t=>e.parseSsrcMedia(t)).filter(e=>"cname"===e.attribute)[0];n&&(i.cname=n.value,i.ssrc=n.ssrc);let a=e.matchPrefix(t,"a=rtcp-rsize");return i.reducedSize=a.length>0,i.compound=0===a.length,i.mux=e.matchPrefix(t,"a=rtcp-mux").length>0,i},e.writeRtcpParameters=function(e){let t="";return e.reducedSize&&(t+="a=rtcp-rsize\r\n"),e.mux&&(t+="a=rtcp-mux\r\n"),void 0!==e.ssrc&&e.cname&&(t+="a=ssrc:"+e.ssrc+" cname:"+e.cname+"\r\n"),t},e.parseMsid=function(t){let i,n=e.matchPrefix(t,"a=msid:");if(1===n.length)return{stream:(i=n[0].substring(7).split(" "))[0],track:i[1]};let a=e.matchPrefix(t,"a=ssrc:").map(t=>e.parseSsrcMedia(t)).filter(e=>"msid"===e.attribute);if(a.length>0)return{stream:(i=a[0].value.split(" "))[0],track:i[1]}},e.parseSctpDescription=function(t){let i,n=e.parseMLine(t),a=e.matchPrefix(t,"a=max-message-size:");a.length>0&&(i=parseInt(a[0].substring(19),10)),isNaN(i)&&(i=65536);let r=e.matchPrefix(t,"a=sctp-port:");if(r.length>0)return{port:parseInt(r[0].substring(12),10),protocol:n.fmt,maxMessageSize:i};let s=e.matchPrefix(t,"a=sctpmap:");if(s.length>0){let e=s[0].substring(10).split(" ");return{port:parseInt(e[0],10),protocol:e[1],maxMessageSize:i}}},e.writeSctpDescription=function(e,t){let i=[];return i="DTLS/SCTP"!==e.protocol?["m="+e.kind+" 9 "+e.protocol+" "+t.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+t.port+"\r\n"]:["m="+e.kind+" 9 "+e.protocol+" "+t.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+t.port+" "+t.protocol+" 65535\r\n"],void 0!==t.maxMessageSize&&i.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),i.join("")},e.generateSessionId=function(){return Math.random().toString().substr(2,22)},e.writeSessionBoilerplate=function(t,i,n){return"v=0\r\no="+(n||"thisisadapterortc")+" "+(t||e.generateSessionId())+" "+(void 0!==i?i:2)+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},e.getDirection=function(t,i){let n=e.splitLines(t);for(let e=0;e<n.length;e++)switch(n[e]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return n[e].substring(2)}return i?e.getDirection(i):"sendrecv"},e.getKind=function(t){return e.splitLines(t)[0].split(" ")[0].substring(2)},e.isRejected=function(e){return"0"===e.split(" ",2)[1]},e.parseMLine=function(t){let i=e.splitLines(t)[0].substring(2).split(" ");return{kind:i[0],port:parseInt(i[1],10),protocol:i[2],fmt:i.slice(3).join(" ")}},e.parseOLine=function(t){let i=e.matchPrefix(t,"o=")[0].substring(2).split(" ");return{username:i[0],sessionId:i[1],sessionVersion:parseInt(i[2],10),netType:i[3],addressType:i[4],address:i[5]}},e.isValidSDP=function(t){if("string"!=typeof t||0===t.length)return!1;let i=e.splitLines(t);for(let e=0;e<i.length;e++)if(i[e].length<2||"="!==i[e].charAt(1))return!1;return!0},rb.exports=e,rb.exports)}(),ry=aC(rk),rT=(p={__proto__:null,default:ry},[rk].forEach(function(e){e&&"string"!=typeof e&&!Array.isArray(e)&&Object.keys(e).forEach(function(t){if("default"!==t&&!(t in p)){var i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(p,t,i.get?i:{enumerable:!0,get:function(){return e[t]}})}})}),Object.freeze(p));function rS(e){if(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype)return;let t=e.RTCIceCandidate;e.RTCIceCandidate=function(e){if("object"==typeof e&&e.candidate&&0===e.candidate.indexOf("a=")&&((e=JSON.parse(JSON.stringify(e))).candidate=e.candidate.substring(2)),e.candidate&&e.candidate.length){let i=new t(e),n=ry.parseCandidate(e.candidate);for(let e in n)e in i||Object.defineProperty(i,e,{value:n[e]});return i.toJSON=function(){return{candidate:i.candidate,sdpMid:i.sdpMid,sdpMLineIndex:i.sdpMLineIndex,usernameFragment:i.usernameFragment}},i}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,aq(e,"icecandidate",t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t))}function rw(e){!e.RTCIceCandidate||e.RTCIceCandidate&&"relayProtocol"in e.RTCIceCandidate.prototype||aq(e,"icecandidate",e=>{if(e.candidate){let t=ry.parseCandidate(e.candidate.candidate);"relay"===t.type&&(e.candidate.relayProtocol=({0:"tls",1:"tcp",2:"udp"})[t.priority>>24])}return e})}function rC(e,t){if(!e.RTCPeerConnection)return;"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get(){return void 0===this._sctp?null:this._sctp}});let i=function(e){if(!e||!e.sdp)return!1;let t=ry.splitSections(e.sdp);return t.shift(),t.some(e=>{let t=ry.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")})},n=function(e){let t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return -1;let i=parseInt(t[1],10);return i!=i?-1:i},a=function(e){let i=65536;return"firefox"===t.browser&&(i=t.version<57?-1===e?16384:0x7ffffff5:t.version<60?57===t.version?65535:65536:0x7ffffff5),i},r=function(e,i){let n=65536;"firefox"===t.browser&&57===t.version&&(n=65535);let a=ry.matchPrefix(e.sdp,"a=max-message-size:");return a.length>0?n=parseInt(a[0].substring(19),10):"firefox"===t.browser&&-1!==i&&(n=0x7ffffff5),n},s=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,"chrome"===t.browser&&t.version>=76){let{sdpSemantics:e}=this.getConfiguration();"plan-b"===e&&Object.defineProperty(this,"sctp",{get(){return void 0===this._sctp?null:this._sctp},enumerable:!0,configurable:!0})}if(i(arguments[0])){let e,t=n(arguments[0]),i=a(t),s=r(arguments[0],t);e=0===i&&0===s?1/0:0===i||0===s?Math.max(i,s):Math.min(i,s);let o={};Object.defineProperty(o,"maxMessageSize",{get:()=>e}),this._sctp=o}return s.apply(this,arguments)}}function rx(e,t){if(!(e.RTCPeerConnection&&"createDataChannel"in e.RTCPeerConnection.prototype)||"chrome"===t.browser&&t.version>149||"firefox"===t.browser&&t.version>60)return;function i(e,t){let i=e.send;e.send=function(){let n=arguments[0],a=n.length||n.size||n.byteLength;if("open"===e.readyState&&t.sctp&&a>t.sctp.maxMessageSize)throw TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return i.apply(e,arguments)}}let n=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){let e=n.apply(this,arguments);return i(e,this),e},aq(e,"datachannel",e=>(i(e.channel,e.target),e))}function rE(e){if(!e.RTCPeerConnection||"connectionState"in e.RTCPeerConnection.prototype)return;let t=e.RTCPeerConnection.prototype;Object.defineProperty(t,"connectionState",{get(){return({completed:"connected",checking:"connecting"})[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(e){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),e&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=e)},enumerable:!0,configurable:!0}
1),["setLocalDescription","setRemoteDescription"].forEach(e=>{let i=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=e=>{let t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;let i=new Event("connectionstatechange",e);t.dispatchEvent(i)}return e},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),i.apply(this,arguments)}})}function rP(e,t){if(!e.RTCPeerConnection||"chrome"===t.browser&&t.version>=71||"safari"===t.browser&&t._safariVersion>=13.1)return;let i=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&-1!==t.sdp.indexOf("\na=extmap-allow-mixed")){let i=t.sdp.split("\n").filter(e=>"a=extmap-allow-mixed"!==e.trim()).join("\n");e.RTCSessionDescription&&t instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:t.type,sdp:i}):t.sdp=i}return i.apply(this,arguments)}}function rR(e,t){if(!(e.RTCPeerConnection&&e.RTCPeerConnection.prototype))return;let i=e.RTCPeerConnection.prototype.addIceCandidate;i&&0!==i.length&&(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?("chrome"===t.browser&&t.version<78||"firefox"===t.browser&&t.version<68||"safari"===t.browser)&&arguments[0]&&""===arguments[0].candidate?Promise.resolve():i.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}function rI(e,t){if(!(e.RTCPeerConnection&&e.RTCPeerConnection.prototype))return;let i=e.RTCPeerConnection.prototype.setLocalDescription;i&&0!==i.length&&(e.RTCPeerConnection.prototype.setLocalDescription=function(){let e=arguments[0]||{};if("object"!=typeof e||e.type&&e.sdp)return i.apply(this,arguments);if(!(e={type:e.type,sdp:e.sdp}).type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":e.type="offer";break;default:e.type="answer"}return e.sdp||"offer"!==e.type&&"answer"!==e.type?i.apply(this,[e]):("offer"===e.type?this.createOffer:this.createAnswer).apply(this).then(e=>i.apply(this,[e]))})}var rN=Object.freeze({__proto__:null,removeExtmapAllowMixed:rP,shimAddIceCandidateNullOrEmpty:rR,shimConnectionState:rE,shimMaxMessageSize:rC,shimParameterlessSetLocalDescription:rI,shimRTCIceCandidate:rS,shimRTCIceCandidateRelayProtocol:rw,shimSendThrowTypeError:rx});!function(){let{window:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{shimChrome:!0,shimFirefox:!0,shimSafari:!0},i=az,n=function(e){let t={browser:null,version:null};if(void 0===e||!e.navigator||!e.navigator.userAgent)return t.browser="Not a browser.",t;let{navigator:i}=e;if(i.userAgentData&&i.userAgentData.brands){let e=i.userAgentData.brands.find(e=>"Chromium"===e.brand);if(e)return{browser:"chrome",version:parseInt(e.version,10)}}return i.mozGetUserMedia?(t.browser="firefox",t.version=parseInt(aB(i.userAgent,/Firefox\/(\d+)\./,1))):i.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection?(t.browser="chrome",t.version=parseInt(aB(i.userAgent,/Chrom(e|ium)\/(\d+)\./,2))||null):e.RTCPeerConnection&&i.userAgent.match(/AppleWebKit\/(\d+)\./)?(t.browser="safari",t.version=parseInt(aB(i.userAgent,/AppleWebKit\/(\d+)\./,1)),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype,t._safariVersion=aB(i.userAgent,/Version\/(\d+(\.?\d+))/,1)):t.browser="Not a supported browser.",t}(e),a={browserDetails:n,commonShim:rN,extractVersion:aB,disableLog:aV,disableWarnings:aH,sdp:rT};switch(n.browser){case"chrome":if(!a4||!a2||!t.shimChrome){i("Chrome shim is not included in this adapter release.");break}if(null===n.version){i("Chrome shim can not determine version, not shimming.");break}i("adapter.js shimming chrome."),a.browserShim=a4,rR(e,n),rI(e),aQ(e,n),a$(e),a2(e,n),aY(e,n),a1(e,n),aX(e),aZ(e,n),a3(e,n),rS(e),rw(e),rE(e),rC(e,n),rx(e,n),rP(e,n);break;case"firefox":if(!ro||!a8||!t.shimFirefox){i("Firefox shim is not included in this adapter release.");break}i("adapter.js shimming firefox."),a.browserShim=ro,rR(e,n),rI(e),a5(e,n),a8(e,n),a9(e,n),a6(e),rt(e),a7(e),re(e),ri(e),rn(e),ra(e),rr(e),rs(e),rS(e),rE(e),rC(e,n),rx(e,n);break;case"safari":if(!rv||!t.shimSafari){i("Safari shim is not included in this adapter release.");break}i("adapter.js shimming safari."),a.browserShim=rv,rR(e,n),rI(e),rp(e),rg(e),rd(e),rc(e),rl(e),rm(e),ru(e),rf(e),rS(e),rw(e),rC(e,n),rx(e,n),rP(e,n);break;default:i("Unsupported browser!")}}({window:"u"<typeof window?void 0:window});class r_ extends(el=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)}}r_.resolve=e=>Reflect.get(el,"resolve",r_).call(r_,e);let rD=/version\/(\d+(\.?_?\d+)+)/i;function rM(e){let i=!(arguments.length>1)||void 0===arguments[1]||arguments[1];if(void 0===e&&"u"<typeof navigator)return;let n=(null!=e?e:navigator.userAgent).toLowerCase();if(void 0===t||i){let e=rO.find(e=>{let{test:t}=e;return t.test(n)});t=null==e?void 0:e.describe(n)}return t}let rO=[{test:/firefox|iceweasel|fxios/i,describe:e=>({name:"Firefox",version:rA(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e),os:e.toLowerCase().includes("fxios")?"iOS":void 0,osVersion:rL(e)})},{test:/chrom|crios|crmo/i,describe:e=>({name:"Chrome",version:rA(/(?:chrome|chromium|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e),os:e.toLowerCase().includes("crios")?"iOS":void 0,osVersion:rL(e)})},{test:/safari|applewebkit/i,describe:e=>({name:"Safari",version:rA(rD,e),os:e.includes("mobile/")?"iOS":"macOS",osVersion:rL(e)})}];function rA(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,n=t.match(e);return n&&n.length>=i&&n[i]||""}function rL(e){return e.includes("mac os")?rA(/\(.+?(\d+_\d+(:?_\d+)?)/,e,1).replace(/_/g,"."):void 0}
1class rj extends Error{constructor(e,t,i){super(t||"an error has occurred"),this.name="LiveKitError",this.code=e,void 0!==(null==i?void 0:i.cause)&&(this.cause=null==i?void 0:i.cause)}}class rU extends rj{}(m=ed||(ed={}))[m.NotAllowed=0]="NotAllowed",m[m.ServerUnreachable=1]="ServerUnreachable",m[m.InternalError=2]="InternalError",m[m.Cancelled=3]="Cancelled",m[m.LeaveRequest=4]="LeaveRequest",m[m.Timeout=5]="Timeout",m[m.WebSocket=6]="WebSocket",m[m.ServiceNotFound=7]="ServiceNotFound";class rF extends rU{constructor(e,t,i,n){super(1,e),this.name="ConnectionError",this.status=i,this.reason=t,this.context=n,this.reasonName=ed[t]}static notAllowed(e,t,i){return new rF(e,ed.NotAllowed,t,i)}static timeout(e){return new rF(e,ed.Timeout)}static leaveRequest(e,t){return new rF(e,ed.LeaveRequest,void 0,t)}static internal(e,t){return new rF(e,ed.InternalError,void 0,t)}static cancelled(e){return new rF(e,ed.Cancelled)}static serverUnreachable(e,t){return new rF(e,ed.ServerUnreachable,t)}static websocket(e,t,i){return new rF(e,ed.WebSocket,t,i)}static serviceNotFound(e,t){return new rF(e,ed.ServiceNotFound,void 0,t)}}class rB extends rj{constructor(e){super(21,null!=e?e:"device is unsupported"),this.name="DeviceUnsupportedError"}}class rq extends rj{constructor(e){super(20,null!=e?e:"track is invalid"),this.name="TrackInvalidError"}}class rV extends rj{constructor(e){super(10,null!=e?e:"unsupported server"),this.name="UnsupportedServer"}}class rH extends rj{constructor(e){super(12,null!=e?e:"unexpected connection state"),this.name="UnexpectedConnectionState"}}class rz extends rj{constructor(e){super(13,null!=e?e:"unable to negotiate"),this.name="NegotiationError"}}class rW extends rj{constructor(e,t){super(15,e),this.name="PublishTrackError",this.status=t}}class rG extends rU{constructor(e,t){super(15,e),this.name="SignalRequestError",this.reason=t,this.reasonName="string"==typeof t?t:av[t]}
1}(g=eu||(eu={}))[g.AlreadyOpened=0]="AlreadyOpened",g[g.AbnormalEnd=1]="AbnormalEnd",g[g.DecodeFailed=2]="DecodeFailed",g[g.LengthExceeded=3]="LengthExceeded",g[g.Incomplete=4]="Incomplete",g[g.HandlerAlreadyRegistered=7]="HandlerAlreadyRegistered",g[g.EncryptionTypeMismatch=8]="EncryptionTypeMismatch";class rK extends rU{constructor(e,t){super(16,e),this.name="DataStreamError",this.reason=t,this.reasonName=eu[t]}}class rJ extends rj{constructor(e){super(18,e),this.name="SignalReconnectError"}}(f=eh||(eh={})).PermissionDenied="PermissionDenied",f.NotFound="NotFound",f.DeviceInUse="DeviceInUse",f.Other="Other",(v=eh||(eh={})).getFailure=function(e){if(e&&"name"in e)return"NotFoundError"===e.name||"DevicesNotFoundError"===e.name?v.NotFound:"NotAllowedError"===e.name||"PermissionDeniedError"===e.name?v.PermissionDenied:"NotReadableError"===e.name||"TrackStartError"===e.name?v.DeviceInUse:v.Other};class rQ{}rQ.setTimeout=function(){return setTimeout(...arguments)},rQ.setInterval=function(){return setInterval(...arguments)},rQ.clearTimeout=function(){return clearTimeout(...arguments)},rQ.clearInterval=function(){return clearInterval(...arguments)},(b=ep||(ep={})).Connected="connected",b.Reconnecting="reconnecting",b.SignalReconnecting="signalReconnecting",b.Reconnected="reconnected",b.Disconnected="disconnected",b.ConnectionStateChanged="connectionStateChanged",b.Moved="moved",b.MediaDevicesChanged="mediaDevicesChanged",b.ParticipantConnected="participantConnected",b.ParticipantDisconnected="participantDisconnected",b.TrackPublished="trackPublished",b.TrackSubscribed="trackSubscribed",b.TrackSubscriptionFailed="trackSubscriptionFailed",b.TrackUnpublished="trackUnpublished",b.TrackUnsubscribed="trackUnsubscribed",b.TrackMuted="trackMuted",b.TrackUnmuted="trackUnmuted",b.LocalTrackPublished="localTrackPublished",b.LocalTrackUnpublished="localTrackUnpublished",b.LocalAudioSilenceDetected="localAudioSilenceDetected",b.ActiveSpeakersChanged="activeSpeakersChanged",b.ParticipantMetadataChanged="participantMetadataChanged",b.ParticipantNameChanged="participantNameChanged",b.ParticipantAttributesChanged="participantAttributesChanged",b.ParticipantActive="participantActive",b.RoomMetadataChanged="roomMetadataChanged",b.DataReceived="dataReceived",b.SipDTMFReceived="sipDTMFReceived",b.TranscriptionReceived="transcriptionReceived",b.ConnectionQualityChanged="connectionQualityChanged",b.TrackStreamStateChanged="trackStreamStateChanged",b.TrackSubscriptionPermissionChanged="trackSubscriptionPermissionChanged",b.TrackSubscriptionStatusChanged="trackSubscriptionStatusChanged",b.AudioPlaybackStatusChanged="audioPlaybackChanged",b.VideoPlaybackStatusChanged="videoPlaybackChanged",b.MediaDevicesError="mediaDevicesError",b.ParticipantPermissionsChanged="participantPermissionsChanged",b.SignalConnected="signalConnected",b.RecordingStatusChanged="recordingStatusChanged",b.ParticipantEncryptionStatusChanged="participantEncryptionStatusChanged",b.EncryptionError="encryptionError",b.DCBufferStatusChanged="dcBufferStatusChanged",b.ActiveDeviceChanged="activeDeviceChanged",b.ChatMessage="chatMessage",b.LocalTrackSubscribed="localTrackSubscribed",b.MetricsReceived="metricsReceived",b.DataTrackPublished="dataTrackPublished",b.DataTrackUnpublished="dataTrackUnpublished",b.LocalDataTrackPublished="localDataTrackPublished",b.LocalDataTrackUnpublished="localDataTrackUnpublished",(k=em||(em={})).TrackPublished="trackPublished",k.TrackSubscribed="trackSubscribed",k.TrackSubscriptionFailed="trackSubscriptionFailed",k.TrackUnpublished="trackUnpublished",k.TrackUnsubscribed="trackUnsubscribed",k.TrackMuted="trackMuted",k.TrackUnmuted="trackUnmuted",k.LocalTrackPublished="localTrackPublished",k.LocalTrackUnpublished="localTrackUnpublished",k.LocalTrackCpuConstrained="localTrackCpuConstrained",k.LocalSenderCreated="localSenderCreated",k.ParticipantMetadataChanged="participantMetadataChanged",k.ParticipantNameChanged="participantNameChanged",k.DataReceived="dataReceived",k.SipDTMFReceived="sipDTMFReceived",k.TranscriptionReceived="transcriptionReceived",k.IsSpeakingChanged="isSpeakingChanged",k.ConnectionQualityChanged="connectionQualityChanged",k.TrackStreamStateChanged="trackStreamStateChanged",k.TrackSubscriptionPermissionChanged="trackSubscriptionPermissionChanged",k.TrackSubscriptionStatusChanged="trackSubscriptionStatusChanged",k.TrackCpuConstrained="trackCpuConstrained",k.MediaDevicesError="mediaDevicesError",k.AudioStreamAcquired="audioStreamAcquired",k.ParticipantPermissionsChanged="participantPermissionsChanged",k.PCTrackAdded="pcTrackAdded",k.AttributesChanged="attributesChanged",k.LocalTrackSubscribed="localTrackSubscribed",k.ChatMessage="chatMessage",k.Active="active",(y=eg||(eg={})).TransportsCreated="transportsCreated",y.Connected="connected",y.Disconnected="disconnected",y.Resuming="resuming",y.Resumed="resumed",y.Restarting="restarting",y.Restarted="restarted",y.SignalResumed="signalResumed",y.SignalRestarted="signalRestarted",y.Closing="closing",y.MediaTrackAdded="mediaTrackAdded",y.ActiveSpeakersUpdate="activeSpeakersUpdate",y.DataPacketReceived="dataPacketReceived",y.RTPVideoMapUpdate="rtpVideoMapUpdate",y.DCBufferStatusChanged="dcBufferStatusChanged",y.ParticipantUpdate="participantUpdate",y.RoomUpdate="roomUpdate",y.SpeakersChanged="speakersChanged",y.StreamStateChanged="streamStateChanged",y.ConnectionQualityUpdate="connectionQualityUpdate",y.SubscriptionError="subscriptionError",y.SubscriptionPermissionUpdate="subscriptionPermissionUpdate",y.RemoteMute="remoteMute",y.SubscribedQualityUpdate="subscribedQualityUpdate",y.LocalTrackUnpublished="localTrackUnpublished",y.LocalTrackSubscribed="localTrackSubscribed",y.Offline="offline",y.SignalRequestResponse="signalRequestResponse",y.SignalConnected="signalConnected",y.RoomMoved="roomMoved",y.PublishDataTrackResponse="publishDataTrackResponse",y.UnPublishDataTrackResponse="unPublishDataTrackResponse",y.DataTrackSubscriberHandles="dataTrackSubscriberHandles",y.DataTrackPacketReceived="dataTrackPacketReceived",y.Joined="joined",y.TokenRefreshed="tokenRefreshed",y.ServerRegionsReported="serverRegionsReported",(T=ef||(ef={})).Message="message",T.Muted="muted",T.Unmuted="unmuted",T.Restarted="restarted",T.Ended="ended",T.Subscribed="subscribed",T.Unsubscribed="unsubscribed",T.CpuConstrained="cpuConstrained",T.UpdateSettings="updateSettings",T.UpdateSubscription="updateSubscription",T.AudioPlaybackStarted="audioPlaybackStarted",T.AudioPlaybackFailed="audioPlaybackFailed",T.AudioSilenceDetected="audioSilenceDetected",T.VisibilityChanged="visibilityChanged",T.VideoDimensionsChanged="videoDimensionsChanged",T.VideoPlaybackStarted="videoPlaybackStarted",T.VideoPlaybackFailed="videoPlaybackFailed",T.ElementAttached="elementAttached",T.ElementDetached="elementDetached",T.UpstreamPaused="upstreamPaused",T.UpstreamResumed="upstreamResumed",T.SubscriptionPermissionChanged="subscriptionPermissionChanged",T.SubscriptionStatusChanged="subscriptionStatusChanged",T.SubscriptionFailed="subscriptionFailed",T.TrackProcessorUpdate="trackProcessorUpdate",T.AudioTrackFeatureUpdate="audioTrackFeatureUpdate",T.TranscriptionReceived="transcriptionReceived",T.TimeSyncUpdate="timeSyncUpdate",T.PreConnectBufferFlushed="preConnectBufferFlushed";class r${constructor(e,t,i,n,a){if("object"==typeof e)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(void 0!==t&&void 0!==i)this.width=e,this.height=t,this.aspectRatio=e/t,this.encoding={maxBitrate:i,maxFramerate:n,priority:a};else throw TypeError("Unsupported options: provide at least width, height and maxBitrate")}get resolution(){return{width:this.width,height:this.height,frameRate:this.encoding.maxFramerate,aspectRatio:this.aspectRatio}}}let rY=["vp8","h264"],rX=["vp8","h264","vp9","av1","h265"];function rZ(e){return!!rY.find(t=>t===e)}(S=ev||(ev={}))[S.PREFER_REGRESSION=0]="PREFER_REGRESSION",S[S.SIMULCAST=1]="SIMULCAST",S[S.REGRESSION=2]="REGRESSION",(w=eb||(eb={})).telephone={maxBitrate:12e3}
1,w.speech={maxBitrate:24e3},w.music={maxBitrate:48e3},w.musicStereo={maxBitrate:64e3},w.musicHighQuality={maxBitrate:96e3},w.musicHighQualityStereo={maxBitrate:128e3};let r0={h90:new r$(160,90,9e4,20),h180:new r$(320,180,16e4,20),h216:new r$(384,216,18e4,20),h360:new r$(640,360,45e4,20),h540:new r$(960,540,8e5,25),h720:new r$(1280,720,17e5,30),h1080:new r$(1920,1080,3e6,30),h1440:new r$(2560,1440,5e6,30),h2160:new r$(3840,2160,8e6,30)},r1={h120:new r$(160,120,7e4,20),h180:new r$(240,180,125e3,20),h240:new r$(320,240,14e4,20),h360:new r$(480,360,33e4,20),h480:new r$(640,480,5e5,20),h540:new r$(720,540,6e5,25),h720:new r$(960,720,13e5,30),h1080:new r$(1440,1080,23e5,30),h1440:new r$(1920,1440,38e5,30)},r2={h360fps3:new r$(640,360,2e5,3,"medium"),h360fps15:new r$(640,360,4e5,15,"medium"),h720fps5:new r$(1280,720,8e5,5,"medium"),h720fps15:new r$(1280,720,15e5,15,"medium"),h720fps30:new r$(1280,720,2e6,30,"medium"),h1080fps15:new r$(1920,1080,25e5,15,"medium"),h1080fps30:new r$(1920,1080,5e6,30,"medium"),original:new r$(0,0,7e6,30,"medium")};function r3(e,t,i){var n,a;let{optionsWithoutProcessor:r,audioProcessor:s,videoProcessor:o}=st(null!=e?e:{}),c=null==t?void 0:t.processor,l=null==i?void 0:i.processor,d=null!=r?r:{};return!0===d.audio&&(d.audio={}),!0===d.video&&(d.video={}),d.audio&&(r4(d.audio,t),null!=(n=d.audio).deviceId||(n.deviceId={ideal:"default"}),(s||c)&&(d.audio.processor=null!=s?s:c)),d.video&&(r4(d.video,i),null!=(a=d.video).deviceId||(a.deviceId={ideal:"default"}),(o||l)&&(d.video.processor=null!=o?o:l)),d}function r4(e,t){return Object.keys(t).forEach(i=>{void 0===e[i]&&(e[i]=t[i])}),e}function r5(e){var t,i;let n={};if(e.video)if("object"==typeof e.video){let i={},a=e.video;Object.keys(a).forEach(e=>{"resolution"===e?r4(i,a.resolution):i[e]=a[e]}),n.video=i,null!=(t=n.video).deviceId||(t.deviceId={ideal:"default"})}else n.video=!!e.video&&{deviceId:{ideal:"default"}};else n.video=!1;return e.audio?"object"==typeof e.audio?(n.audio=e.audio,null!=(i=n.audio).deviceId||(i.deviceId={ideal:"default"})):n.audio={deviceId:{ideal:"default"}}:n.audio=!1,n}function r6(e){return aD(this,arguments,void 0,function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200;return function*(){let i=r8();if(i){let n=i.createAnalyser();n.fftSize=2048;let a=new Uint8Array(n.frequencyBinCount);i.createMediaStreamSource(new MediaStream([e.mediaStreamTrack])).connect(n),yield sc(t),n.getByteTimeDomainData(a);let r=a.some(e=>128!==e&&0!==e);return i.close(),!r}return!1}()})}function r8(){var e;let t="u">typeof window&&(window.AudioContext||window.webkitAudioContext);if(t){let i=new t({latencyHint:"interactive"});if("suspended"===i.state&&"u">typeof window&&(null==(e=window.document)?void 0:e.body)){let e=()=>aD(this,void 0,void 0,function*(){var t;try{"suspended"===i.state&&(yield i.resume())}catch(e){console.warn("Error trying to auto-resume audio context",e)}finally{null==(t=window.document.body)||t.removeEventListener("click",e)}});i.addEventListener("statechange",()=>{var t;"closed"===i.state&&(null==(t=window.document.body)||t.removeEventListener("click",e))}),window.document.body.addEventListener("click",e)}return i}}function r9(e){return e===sa.Source.Microphone?"audioinput":e===sa.Source.Camera?"videoinput":void 0}function r7(e){return e.split("/")[1].toLowerCase()}function se(e){return"mediaStreamTrack"in e?{trackID:e.sid,source:e.source,muted:e.isMuted,enabled:e.mediaStreamTrack.enabled,kind:e.kind,streamID:e.mediaStreamID,streamTrackID:e.mediaStreamTrack.id}:{trackID:e.trackSid,enabled:e.isEnabled,muted:e.isMuted,trackInfo:Object.assign({mimeType:e.mimeType,name:e.trackName,encrypted:e.isEncrypted,kind:e.kind,source:e.source},e.track?se(e.track):{})}}function st(e){let t,i,n=Object.assign({},e);return"object"==typeof n.audio&&n.audio.processor&&(t=n.audio.processor,n.audio=Object.assign(Object.assign({},n.audio),{processor:void 0})),"object"==typeof n.video&&n.video.processor&&(i=n.video.processor,n.video=Object.assign(Object.assign({},n.video),{processor:void 0})),{audioProcessor:t,videoProcessor:i,optionsWithoutProcessor:void 0===n?n:"function"!=typeof structuredClone?JSON.parse(JSON.stringify(n)):"object"==typeof n&&null!==n?structuredClone(Object.assign({},n)):structuredClone(n)}}function si(e,t){return e.width*e.height<t.width*t.height}let sn=[];(C=ek||(ek={}))[C.LOW=0]="LOW",C[C.MEDIUM=1]="MEDIUM",C[C.HIGH=2]="HIGH";class sa extends aL.EventEmitter{get streamState(){return this._streamState}setStreamState(e){this._streamState=e}constructor(e,t){var i;let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};super(),this.attachedElements=[],this.isMuted=!1,this._streamState=sa.StreamState.Active,this.isInBackgroun
1d=!1,this._currentBitrate=0,this.log=aR,this.appVisibilityChangedListener=()=>{this.backgroundTimeout&&clearTimeout(this.backgroundTimeout),"hidden"===document.visibilityState?this.backgroundTimeout=setTimeout(()=>this.handleAppVisibilityChanged(),5e3):this.handleAppVisibilityChanged()},this.log=aI(null!=(i=n.loggerName)?i:es.Track),this.loggerContextCb=n.loggerContextCb,this.setMaxListeners(100),this.kind=t,this._mediaStreamTrack=e,this._mediaStreamID=e.id,this.source=sa.Source.Unknown}get logContext(){var e;return Object.assign(Object.assign({},null==(e=this.loggerContextCb)?void 0:e.call(this)),se(this))}get currentBitrate(){return this._currentBitrate}get mediaStreamTrack(){return this._mediaStreamTrack}get mediaStreamID(){return this._mediaStreamID}attach(e){let t="audio";this.kind===sa.Kind.Video&&(t="video"),0===this.attachedElements.length&&this.kind===sa.Kind.Video&&this.addAppVisibilityListener(),!e&&("audio"===t&&(sn.forEach(t=>{null!==t.parentElement||e||(e=t)}),e&&sn.splice(sn.indexOf(e),1)),e||(e=document.createElement(t))),this.attachedElements.includes(e)||this.attachedElements.push(e),sr(this.mediaStreamTrack,e);let i=e.srcObject.getTracks(),n=i.some(e=>"audio"===e.kind);return e.play().then(()=>{this.emit(n?ef.AudioPlaybackStarted:ef.VideoPlaybackStarted)}).catch(t=>{"NotAllowedError"===t.name?this.emit(n?ef.AudioPlaybackFailed:ef.VideoPlaybackFailed,t):"AbortError"===t.name?aR.debug("".concat(n?"audio":"video"," playback aborted, likely due to new play request")):aR.warn("could not playback ".concat(n?"audio":"video"),t),n&&e&&i.some(e=>"video"===e.kind)&&"NotAllowedError"===t.name&&(e.muted=!0,e.play().catch(()=>{}))}),this.emit(ef.ElementAttached,e),e}detach(e){try{if(e){ss(this.mediaStreamTrack,e);let t=this.attachedElements.indexOf(e);return t>=0&&(this.attachedElements.splice(t,1),this.recycleElement(e),this.emit(ef.ElementDetached,e)),e}let t=[];return this.attachedElements.forEach(e=>{ss(this.mediaStreamTrack,e),t.push(e),this.recycleElement(e),this.emit(ef.ElementDetached,e)}),this.attachedElements=[],t}finally{0===this.attachedElements.length&&this.removeAppVisibilityListener()}}stop(){this.stopMonitor(),this._mediaStreamTrack.stop()}enable(){this._mediaStreamTrack.enabled=!0}disable(){this._mediaStreamTrack.enabled=!1}stopMonitor(){this.monitorInterval&&clearInterval(this.monitorInterval),this.timeSyncHandle&&cancelAnimationFrame(this.timeSyncHandle)}updateLoggerOptions(e){e.loggerName&&(this.log=aI(e.loggerName)),e.loggerContextCb&&(this.loggerContextCb=e.loggerContextCb)}recycleElement(e){if(e instanceof HTMLAudioElement){let t=!0;e.pause(),sn.forEach(e=>{e.parentElement||(t=!1)}),t&&sn.push(e)}}handleAppVisibilityChanged(){return aD(this,void 0,void 0,function*(){this.isInBackground="hidden"===document.visibilityState,this.isInBackground||this.kind!==sa.Kind.Video||setTimeout(()=>this.attachedElements.forEach(e=>e.play().catch(()=>{})),0)})}addAppVisibilityListener(){sb()?(this.isInBackground="hidden"===document.visibilityState,document.addEventListener("visibilitychange",this.appVisibilityChangedListener)):this.isInBackground=!1}removeAppVisibilityListener(){sb()&&document.removeEventListener("visibilitychange",this.appVisibilityChangedListener)}}function sr(e,t){let i,n;i=t.srcObject instanceof MediaStream?t.srcObject:new MediaStream,(n="audio"===e.kind?i.getAudioTracks():i.getVideoTracks()).includes(e)||(n.forEach(e=>{i.removeTrack(e)}),i.addTrack(e)),sg()&&t instanceof HTMLVideoElement||(t.autoplay=!0),t.muted=0===i.getAudioTracks().length,t instanceof HTMLVideoElement&&(t.playsInline=!0),t.srcObject!==i&&(t.srcObject=i,(sg()||sp())&&t instanceof HTMLVideoElement&&setTimeout(()=>{t.srcObject=i,t.play().catch(()=>{})},0))}function ss(e,t){if(t.srcObject instanceof MediaStream){let i=t.srcObject;i.removeTrack(e),i.getTracks().length>0?t.srcObject=i:t.srcObject=null}}(E=n=(x=sa||(sa={})).Kind||(x.Kind={})).Audio="audio",E.Video="video",E.Unknown="unknown",(P=a=x.Source||(x.Source={})).Camera="camera",P.Microphone="microphone",P.ScreenShare="screen_share",P.ScreenShareAudio="screen_share_audio",P.Unknown="unknown",(R=r=x.StreamState||(x.StreamState={})).Active="active",R.Paused="paused",R.Unknown="unknown",x.kindToProto=function(e){switch(e){case n.Audio:return io.AUDIO;case n.Video:return io.VIDEO;default:return io.DATA}},x.kindFromProto=function(e){switch(e){case io.AUDIO:return n.Audio;case io.VIDEO:return n.Video;default:return n.Unknown}},x.sourceToProto=function(e){switch(e){case a.Camera:return ic.CAMERA;case a.Microphone:return ic.MICROPHONE;case a.ScreenShare:return ic.SCREEN_SHARE;case a.ScreenShareAudio:return ic.SCREEN_SHARE_AUDIO;default:return ic.UNKNOWN}},x.sourceFromProto=function(e){switch(e){case ic.CAMERA:return a.Camera;case ic.MICROPHONE:return a.Microphone;case ic.SCREEN_SHARE:return a.ScreenShare;case ic.SCREEN_SHARE_AUDIO:return a.ScreenShareAudio;default:return a.Unknown}},x.streamStateFromProto=function(e){switch(e){case nE.ACTIVE:return r.Active;case nE.PAUSED:return r.Paused;default:return r.Unknown}};let so="https://aomediacodec.github.io/av1-rtp-spec/#dependency-descriptor-rtp-header-extension";function sc(e){return new r_(t=>rQ.setTimeout(t,e))}function sl(){return"addTransceiver"in RTCPeerConnection.prototype}function sd(){return"addTrack"in RTCPeerConnection.prototype}function su(e){return"av1"===e||"vp9"===e}function sh(e){return!(!document||sf())&&(e||(e=document.createElement("audio")),"setSinkId"in e)}function sp(){var e;return(null==(e=rM())?void 0:e.name)==="Firefox"}function sm(){let e;return"u">typeof window&&void 0!==window.RTCRtpScriptTransform&&(!(e=rM())||"Chrome"!==e.name||"iOS"===e.os)}function sg(){var e;return(null==(e=rM())?void 0:e.name)==="Safari"}function sf(){let e=rM();return(null==e?void 0:e.name)==="Safari"||(null==e?void 0:e.os)==="iOS"}function sv(){var e,t;return!!sb()&&(null!=(t=null==(e=navigator.userAgentData)?void 0:e.mobile)?t:/Tablet|iPad|Mobile|Android|BlackBerry/.test(navigator.userAgent))}
1function sb(){return"u">typeof document}function sk(){return"ReactNative"==navigator.product}function sy(e){return e.hostname.endsWith(".livekit.cloud")||e.hostname.endsWith(".livekit.run")}function sT(e){return sy(e)?e.hostname.split(".")[0]:null}function sS(){if(e.g&&e.g.LiveKitReactNativeGlobal)return e.g.LiveKitReactNativeGlobal}function sw(){if(!sk())return;let e=sS();if(e)return e.platform}function sC(){if(sb())return window.devicePixelRatio;if(sk()){let e=sS();if(e)return e.devicePixelRatio}return 1}function sx(e,t){let i=e.split("."),n=t.split("."),a=Math.min(i.length,n.length);for(let e=0;e<a;++e){let t=parseInt(i[e],10),r=parseInt(n[e],10);if(t>r)return 1;if(t<r)return -1;if(e===a-1&&t===r)return 0}return""===e&&""!==t?-1:""===t?1:i.length==n.length?0:i.length<n.length?-1:1}function sE(e){for(let t of e)t.target.handleResize(t)}function sP(e){for(let t of e)t.target.handleVisibilityChanged(t)}let sR=null,sI=()=>(sR||(sR=new ResizeObserver(sE)),sR),sN=null,s_=()=>(sN||(sN=new IntersectionObserver(sP,{root:null,rootMargin:"0px"})),sN);function sD(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:16,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=document.createElement("canvas");a.width=e,a.height=t;let r=a.getContext("2d");null==r||r.fillRect(0,0,a.width,a.height),n&&r&&(r.beginPath(),r.arc(e/2,t/2,50,0,2*Math.PI,!0),r.closePath(),r.fillStyle="grey",r.fill());let[s]=a.captureStream().getTracks();if(!s)throw Error("Could not get empty media stream video track");return s.enabled=i,s}function sM(){if(!i){let e=new AudioContext,t=e.createOscillator(),n=e.createGain();n.gain.setValueAtTime(0,0);let a=e.createMediaStreamDestination();if(t.connect(n),n.connect(a),t.start(),[i]=a.stream.getAudioTracks(),!i)throw Error("Could not get empty media stream audio track");i.enabled=!1}return i.clone()}class sO{get isResolved(){return this._isResolved}constructor(e,t){this._isResolved=!1,this.onFinally=t,this.promise=new Promise((t,i)=>aD(this,void 0,void 0,function*(){this.resolve=t,this.reject=i,e&&(yield e(t,i))})).finally(()=>{var e;this._isResolved=!0,null==(e=this.onFinally)||e.call(this)})}}function sA(e){if("string"==typeof e||"number"==typeof e)return e;if(Array.isArray(e))return e[0];if(void 0!==e.exact)return Array.isArray(e.exact)?e.exact[0]:e.exact;if(void 0!==e.ideal)return Array.isArray(e.ideal)?e.ideal[0]:e.ideal;throw Error("could not unwrap constraint")}function sL(e){return e.startsWith("ws")?e.replace(/^(ws)/,"http"):e}function sj(e){switch(e.reason){case ed.LeaveRequest:return e.context;case ed.Cancelled:return ih.CLIENT_INITIATED;case ed.NotAllowed:return ih.USER_REJECTED;case ed.ServerUnreachable:return ih.JOIN_FAILURE;default:return ih.UNKNOWN_REASON}}function sU(e){return void 0!==e?Number(e):void 0}function sF(e){return void 0!==e?BigInt(e):void 0}function sB(e){return!!e&&!(e instanceof MediaStreamTrack)&&e.isLocal}function sq(e){return!!e&&e.kind==sa.Kind.Audio}function sV(e){return!!e&&e.kind==sa.Kind.Video}function sH(e){return sB(e)&&sV(e)}function sz(e){return sB(e)&&sq(e)}function sW(e){return!!e&&!e.isLocal}function sG(e){return sW(e)&&sV(e)}function sK(){return"u">typeof CompressionStream}function sJ(e){return e.endsWith("/")?e:"".concat(e,"/")}function sQ(e,t){return e.pathname="".concat(sJ(e.pathname)).concat(t),e}function s$(e){if("string"==typeof e)return nI.fromJson(JSON.parse(e),{ignoreUnknownFields:!0});if(e instanceof ArrayBuffer)return nI.fromBinary(new Uint8Array(e));throw Error("could not decode websocket message: ".concat(typeof e))}let sY="lk_e2ee";function sX(){return"u">typeof window&&void 0!==window.RTCRtpSender&&void 0!==window.RTCRtpSender.prototype.createEncodedStreams}(I=ey||(ey={})).SetKey="setKey",I.RatchetRequest="ratchetRequest",I.KeyRatcheted="keyRatcheted",(eT||(eT={})).KeyRatcheted="keyRatcheted",(N=eS||(eS={})).ParticipantEncryptionStatusChanged="participantEncryptionStatusChanged",N.EncryptionError="encryptionError",(ew||(ew={})).Error="cryptorError";function sZ(e){return!!(null==e?void 0:e.worker)&&(sX()||sm())}function s0(e){return!!((null==e?void 0:e.timestamp)||(null==e?void 0:e.frameId))}function s1(e){var t,i;let n,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:50,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=null!=(t=r.isImmediate)&&t,o=null!=(i=r.callback)&&i,c=r.maxWait,l=Date.now(),d=[],u=function(){for(var t=arguments.length,i=Array(t),r=0;r<t;r++)i[r]=arguments[r];let u=this;return new Promise((t,r)=>{let h=s&&void 0===n;if(void 0!==n&&rQ.clearTimeout(n),n=rQ.setTimeout(function(){if(n=void 0,l=Date.now(),!s){let t=e.apply(u,i);
1o&&o(t),d.forEach(e=>{let{resolve:i}=e;return i(t)}),d=[]}},function(){if(void 0!==c){let e=Date.now()-l;if(e+a>=c)return c-e}return a}()),h){let n=e.apply(u,i);return o&&o(n),t(n)}d.push({resolve:t,reject:r})})};return u.cancel=function(e){void 0!==n&&rQ.clearTimeout(n),d.forEach(t=>{let{reject:i}=t;return i(e)}),d=[]},u}function s2(e,t){let i,n;return t?("bytesReceived"in e?(i=e.bytesReceived,n=t.bytesReceived):"bytesSent"in e&&(i=e.bytesSent,n=t.bytesSent),void 0===i||void 0===n||void 0===e.timestamp||void 0===t.timestamp)?0:(i-n)*8e3/(e.timestamp-t.timestamp):0}aL.EventEmitter,(_=eC||(eC={}))[_.InvalidKey=0]="InvalidKey",_[_.MissingKey=1]="MissingKey",_[_.InternalError=2]="InternalError";class s3 extends sa{constructor(e,t,i,n,a){super(e,i,a),this.sid=t,this.receiver=n}get isLocal(){return!1}setMuted(e){this.isMuted!==e&&(this.isMuted=e,this._mediaStreamTrack.enabled=!e,this.emit(e?ef.Muted:ef.Unmuted,this))}setMediaStream(e){this.mediaStream=e;let t=i=>{i.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(ef.Ended,this))};e.addEventListener("removetrack",t)}start(){this.startMonitor(),super.enable()}stop(){this.stopMonitor(),super.disable()}getRTCStatsReport(){return aD(this,void 0,void 0,function*(){var e;if(null==(e=this.receiver)?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;else 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(),2e3)),"u">typeof RTCRtpReceiver&&"function"==typeof RTCRtpReceiver.prototype.getSynchronizationSources&&this.registerTimeSyncUpdate()}registerTimeSyncUpdate(){let e=()=>{var t;this.timeSyncHandle=requestAnimationFrame(()=>e());let i=null==(t=this.receiver)?void 0:t.getSynchronizationSources()[0];if(i){let{timestamp:e,rtpTimestamp:t}=i;
1t&&this.rtpTimestamp!==t&&(this.emit(ef.TimeSyncUpdate,{timestamp:e,rtpTimestamp:t}),this.rtpTimestamp=t)}};e()}}class s4 extends s3{constructor(e,t,i,n,a){super(e,t,sa.Kind.Video,i,a),this.elementInfos=[],this.monitorReceiver=()=>aD(this,void 0,void 0,function*(){if(!this.receiver){this._currentBitrate=0;return}let e=yield this.getReceiverStats();e&&this.prevStats&&this.receiver&&(this._currentBitrate=s2(e,this.prevStats)),this.prevStats=e}),this.debouncedHandleResize=s1(()=>{this.updateDimensions()},100),this.adaptiveStreamSettings=n}get isAdaptiveStream(){return void 0!==this.adaptiveStreamSettings}lookupFrameMetadata(e){var t;let{rtpTimestamp:i}=e;return null==(t=this.packetTrailerExtractor)?void 0:t.lookupMetadata(i)}setStreamState(e){super.setStreamState(e),this.log.debug("setStreamState",e),this.isAdaptiveStream&&e===sa.StreamState.Active&&this.updateVisibility()}get mediaStreamTrack(){return this._mediaStreamTrack}setMuted(e){super.setMuted(e),this.attachedElements.forEach(t=>{e?ss(this._mediaStreamTrack,t):sr(this._mediaStreamTrack,t)})}attach(e){if(e?super.attach(e):e=super.attach(),this.adaptiveStreamSettings&&void 0===this.elementInfos.find(t=>t.element===e)){let t=new s5(e);this.observeElementInfo(t)}return e}observeElementInfo(e){this.adaptiveStreamSettings&&void 0===this.elementInfos.find(t=>t===e)?(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);for(let t of this.elementInfos.filter(t=>t===e))t.stopObserving();this.elementInfos=this.elementInfos.filter(t=>t!==e),this.updateVisibility(),this.debouncedHandleResize()}detach(e){if(e)return this.stopObservingElement(e),super.detach(e);let t=super.detach();for(let e of t)this.stopObservingElement(e);return t}getDecoderImplementation(){var e;return null==(e=this.prevStats)?void 0:e.decoderImplementation}getReceiverStats(){return aD(this,void 0,void 0,function*(){let e;if(!this.receiver||!this.receiver.getStats)return;let t=yield this.receiver.getStats(),i="",n=new Map;return t.forEach(t=>{"inbound-rtp"===t.type?(i=t.codecId,e={type:"video",streamId:t.id,framesDecoded:t.framesDecoded,framesDropped:t.framesDropped,framesReceived:t.framesReceived,packetsReceived:t.packetsReceived,packetsLost:t.packetsLost,frameWidth:t.frameWidth,frameHeight:t.frameHeight,pliCount:t.pliCount,firCount:t.firCount,nackCount:t.nackCount,jitter:t.jitter,timestamp:t.timestamp,bytesReceived:t.bytesReceived,decoderImplementation:t.decoderImplementation}):"codec"===t.type&&n.set(t.id,t)}),e&&""!==i&&n.get(i)&&(e.mimeType=n.get(i).mimeType),e})}stopObservingElement(e){for(let t of this.elementInfos.filter(t=>t.element===e))this.stopObservingElementInfo(t)}handleAppVisibilityChanged(){let e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return aD(this,void 0,void 0,function*(){yield e.handleAppVisibilityChanged.call(this),this.isAdaptiveStream&&this.updateVisibility()})}updateVisibility(e){var t,i;let n=this.elementInfos.reduce((e,t)=>Math.max(e,t.visibilityChangedAt||0),0),a=(null==(i=null==(t=this.adaptiveStreamSettings)?void 0:t.pauseVideoInBackground)||!!i)&&this.isInBackground,r=this.elementInfos.some(e=>e.pictureInPicture),s=this.elementInfos.some(e=>e.visible)&&!a||r;if(this.lastVisible!==s||e){if(!s&&Date.now()-n<100)return void rQ.setTimeout(()=>{this.updateVisibility()},100);this.lastVisible=s,this.emit(ef.VisibilityChanged,s,this)}}updateDimensions(){var e,t;let i=0,n=0,a=this.getPixelDensity();for(let e of this.elementInfos){let t=e.width()*a,r=e.height()*a;t+r>i+n&&(i=t,n=r)}((null==(e=this.lastDimensions)?void 0:e.width)!==i||(null==(t=this.lastDimensions)?void 0:t.height)!==n)&&(this.lastDimensions={width:i,height:n},this.emit(ef.VideoDimensionsChanged,this.lastDimensions,this))}getPixelDensity(){var e;let t=null==(e=this.adaptiveStreamSettings)?void 0:e.pixelDensity;return"screen"===t?sC():t?t:sC()>2?2:1}}class s5{get visible(){return this.isPiP||this.isIntersecting}get pictureInPicture(){return this.isPiP}constructor(e,t){this.onVisibilityChanged=e=>{var t;let{target:i,isIntersecting:n}=e;i===this.element&&(this.isIntersecting=n,this.isPiP=s6(this.element),this.visibilityChangedAt=Date.now(),null==(t=this.handleVisibilityChanged)||t.call(this))}
1,this.onEnterPiP=()=>{var e,t;null==(t=null==(e=window.documentPictureInPicture)?void 0:e.window)||t.addEventListener("pagehide",this.onLeavePiP),queueMicrotask(()=>{requestAnimationFrame(()=>{var e;this.isPiP=s6(this.element),null==(e=this.handleVisibilityChanged)||e.call(this)})})},this.onLeavePiP=()=>{var e;this.isPiP=s6(this.element),null==(e=this.handleVisibilityChanged)||e.call(this)},this.element=e,this.isIntersecting=null!=t?t:s8(e),this.isPiP=sb()&&s6(e),this.visibilityChangedAt=0}width(){return this.element.clientWidth}height(){return this.element.clientHeight}observe(){var e,t,i;this.isIntersecting=s8(this.element),this.isPiP=s6(this.element),this.element.handleResize=()=>{var e;null==(e=this.handleResize)||e.call(this)},this.element.handleVisibilityChanged=this.onVisibilityChanged,s_().observe(this.element),sI().observe(this.element),this.element.addEventListener("enterpictureinpicture",this.onEnterPiP),this.element.addEventListener("leavepictureinpicture",this.onLeavePiP),null==(e=window.documentPictureInPicture)||e.addEventListener("enter",this.onEnterPiP),null==(i=null==(t=window.documentPictureInPicture)?void 0:t.window)||i.addEventListener("pagehide",this.onLeavePiP)}stopObserving(){var e,t,i,n,a;null==(e=s_())||e.unobserve(this.element),null==(t=sI())||t.unobserve(this.element),this.element.removeEventListener("enterpictureinpicture",this.onEnterPiP),this.element.removeEventListener("leavepictureinpicture",this.onLeavePiP),null==(i=window.documentPictureInPicture)||i.removeEventListener("enter",this.onEnterPiP),null==(a=null==(n=window.documentPictureInPicture)?void 0:n.window)||a.removeEventListener("pagehide",this.onLeavePiP)}}function s6(e){var t,i;return document.pictureInPictureElement===e||null!=(t=window.documentPictureInPicture)&&!!t.window&&s8(e,null==(i=window.documentPictureInPicture)?void 0:i.window)}function s8(e,t){let i=t||window,n=e.offsetTop,a=e.offsetLeft,r=e.offsetWidth,s=e.offsetHeight,{hidden:o}=e,{display:c}=getComputedStyle(e);for(;e.offsetParent;)n+=(e=e.offsetParent).offsetTop,a+=e.offsetLeft;return n<i.pageYOffset+i.innerHeight&&a<i.pageXOffset+i.innerWidth&&n+s>i.pageYOffset&&a+r>i.pageXOffset&&!o&&"none"!==c}class s9 extends aL.EventEmitter{constructor(e,t){super(),this.decryptDataRequests=new Map,this.encryptDataRequests=new Map,this.onWorkerMessage=e=>{var t,i;let{kind:n,data:a}=e.data;switch(n){case"error":if(aR.error(a.error.message),a.uuid){let e=this.decryptDataRequests.get(a.uuid);if(null==e?void 0:e.reject){e.reject(a.error);break}let t=this.encryptDataRequests.get(a.uuid);if(null==t?void 0:t.reject){t.reject(a.error);break}}this.emit(eS.EncryptionError,a.error,a.participantIdentity);break;case"initAck":a.enabled&&this.keyProvider.getKeys().forEach(e=>{this.postKey(e,!1)});break;case"enable":if(a.enabled&&this.keyProvider.getKeys().forEach(e=>{this.postKey(e,!1)}),this.encryptionEnabled!==a.enabled&&a.participantIdentity===(null==(t=this.room)?void 0:t.localParticipant.identity))this.emit(eS.ParticipantEncryptionStatusChanged,a.enabled,this.room.localParticipant),this.encryptionEnabled=a.enabled;else if(a.participantIdentity){let e=null==(i=this.room)?void 0:i.getParticipantByIdentity(a.participantIdentity);if(!e)throw TypeError("couldn't set encryption status, participant not found".concat(a.participantIdentity));this.emit(eS.ParticipantEncryptionStatusChanged,a.enabled,e)}break;case"ratchetKey":this.keyProvider.emit(ey.KeyRatcheted,a.ratchetResult,a.participantIdentity,a.keyIndex);break;case"decryptDataResponse":let r=this.decryptDataRequests.get(a.uuid);(null==r?void 0:r.resolve)&&r.resolve(a);break;case"encryptDataResponse":let s=this.encryptDataRequests.get(a.uuid);(null==s?void 0:s.resolve)&&s.resolve(a);break;case"packetTrailerMetadata":this.handlePacketTrailerMetadata(a.trackId,a.rtpTimestamp,a.ssrc,a.metadata)}},this.onWorkerError=e=>{aR.error("e2ee worker encountered an error:",{error:e.error}),this.emit(eS.EncryptionError,e.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(!(sX()||"u">typeof window&&void 0!==window.RTCRtpScriptTransform))throw new rB("tried to setup end-to-e
1nd encryption on an unsupported browser");if(aR.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:aN.getLevel()}};this.worker&&(aR.info("initializing worker",{worker:this.worker}),this.worker.onmessage=this.onWorkerMessage,this.worker.onerror=this.onWorkerError,this.worker.postMessage(t))}}setParticipantCryptorEnabled(e,t){aR.debug("set e2ee to ".concat(e," for participant ").concat(t)),this.postEnable(e,t)}setSifTrailer(e){e&&0!==e.length?this.postSifTrailer(e):aR.warn("ignoring server sent trailer as it's empty")}handlePacketTrailerMetadata(e,t,i,n){if(this.room){for(let a of[this.room.localParticipant,...this.room.remoteParticipants.values()])for(let r of a.trackPublications.values())if(r.track&&r.track.mediaStreamID===e&&r.track instanceof s4&&r.track.packetTrailerExtractor)return void r.track.packetTrailerExtractor.storeMetadata(t,i,n)}}setupEngine(e){e.on(eg.RTPVideoMapUpdate,e=>{this.postRTPMap(e)})}setupEventListeners(e,t){e.on(ep.TrackPublished,(e,t)=>this.setParticipantCryptorEnabled(e.trackInfo.encryption!==ix.NONE,t.identity)),e.on(ep.ConnectionStateChanged,t=>
1{t===eJ.Connected&&e.remoteParticipants.forEach(e=>{e.trackPublications.forEach(t=>{this.setParticipantCryptorEnabled(t.trackInfo.encryption!==ix.NONE,e.identity)})})}).on(ep.TrackUnsubscribed,(e,t,i)=>{var n;let a={kind:"removeTransform",data:{participantIdentity:i.identity,trackId:e.mediaStreamID}};null==(n=this.worker)||n.postMessage(a)}).on(ep.TrackSubscribed,(e,t,i)=>{this.setupE2EEReceiver(e,i.identity,t.trackInfo)}).on(ep.SignalConnected,()=>{if(!this.room)throw TypeError("expected room to be present on signal connect");let e=t.getLatestManuallySetKeyIndex();t.getKeys().forEach(t=>{var i;this.postKey(t,e===(null!=(i=t.keyIndex)?i:0))}),this.setParticipantCryptorEnabled(this.room.localParticipant.isE2EEEnabled,this.room.localParticipant.identity)}),e.localParticipant.on(em.LocalSenderCreated,(e,t)=>aD(this,void 0,void 0,function*(){this.setupE2EESender(t,e)})),e.localParticipant.on(em.LocalTrackPublished,e=>{if(!sV(e.track)||!sf())return;let t={kind:"updateCodec",data:{trackId:e.track.mediaStreamID,codec:r7(e.trackInfo.codecs[0].mimeType),participantIdentity:this.room.localParticipant.identity,hasPacketTrailer:!1}};this.worker.postMessage(t)}),t.on(ey.SetKey,(e,t)=>this.postKey(e,null==t||t)).on(ey.RatchetRequest,(e,t)=>this.postRatchetRequest(e,t))}encryptData(e){return aD(this,void 0,void 0,function*(){if(!this.worker)throw Error("could not encrypt data, worker is missing");let t=crypto.randomUUID(),i={kind:"encryptDataRequest",data:{uuid:t,payload:e,participantIdentity:this.room.localParticipant.identity}},n=new sO;return n.onFinally=()=>{this.encryptDataRequests.delete(t)},this.encryptDataRequests.set(t,n),this.worker.postMessage(i),n.promise})}handleEncryptedData(e,t,i,n){if(!this.worker)throw Error("could not handle encrypted data, worker is missing");let a=crypto.randomUUID(),r=new sO;return r.onFinally=()=>{this.decryptDataRequests.delete(a)},this.decryptDataRequests.set(a,r),this.worker.postMessage({kind:"decryptDataRequest",data:{uuid:a,payload:e,iv:t,participantIdentity:i,keyIndex:n}}),r.promise}postRatchetRequest(e,t){if(!this.worker)throw Error("could not ratchet key, worker is missing");this.worker.postMessage({kind:"ratchetRequest",data:{participantIdentity:e,keyIndex:t}})}postKey(e,t){var i;let{key:n,participantIdentity:a,keyIndex:r}=e;if(!this.worker)throw Error("could not set key, worker is missing");let s={kind:"setKey",data:{participantIdentity:a,isPublisher:a===(null==(i=this.room)?void 0:i.localParticipant.identity),key:n,keyIndex:r,updateCurrentKeyIndex:t}};this.worker.postMessage(s)}postEnable(e,t){if(this.worker)this.worker.postMessage({kind:"enable",data:{enabled:e,participantIdentity:t}});else throw ReferenceError("failed to enable e2ee, worker is not ready")}postRTPMap(e){var t;if(!this.worker)throw TypeError("could not post rtp map, worker is missing");if(!(null==(t=this.room)?void 0:t.localParticipant.identity))throw TypeError("could not post rtp map, local participant identity is missing");let i={kind:"setRTPMap",data:{map:e,participantIdentity:this.room.localParticipant.identity}};this.worker.postMessage(i)}postSifTrailer(e){if(!this.worker)throw Error("could not post SIF trailer, worker is missing");this.worker.postMessage({kind:"setSifTrailer",data:{trailer:e}})}setupE2EEReceiver(e,t,i){if(!e.receiver)return;if(!(null==i?void 0:i.mimeType)||""===i.mimeType)throw TypeError("MimeType missing from trackInfo, cannot set up E2EE cryptor");let n="video"===e.kind&&!!i.packetTrailerFeatures&&i.packetTrailerFeatures.length>0;this.handleReceiver(e.receiver,e.mediaStreamID,t,"video"===e.kind?r7(i.mimeType):void 0,n)}setupE2EESender(e,t){var i;if(!sB(e)||!t){t||aR.warn("early return because sender is not ready");return}this.handleSender(t,e.mediaStreamID,void 0,sV(e)?null==(i=e.publishOptions)?void 0:i.packetTrailer:void 0)}handleReceiver(e,t,i,n,a){return aD(this,void 0,void 0,function*(){if(this.worker){if(sm())e.transform=new RTCRtpScriptTransform(this.worker,{kind:"decode",participantIdentity:i,trackId:t,codec:n,hasPacketTrailer:a});else{if(sY in e&&n)return void this.worker.postMessage({kind:"updateCodec",data:{trackId:t,codec:n,participantIdentity:i,hasPacketTrailer:a}});let r=e.writableStream,s=e.readableStream;if(!r||!s){let t=e.createEncodedStreams();e.writableStream=t.writable,r=t.writable,e.readableStream=t.readable,s=t.readable}let o={kind:"decode",data:{readableStream:s,writableStream:r,trackId:t,codec:n,participantIdentity:i,isReuse:sY in e,hasPacketTrailer:a}};this.worker.postMessage(o,[s,r])}e[sY]=!0}})}handleSender(e,t,i,n){var a;if(!(sY in e)&&this.worker){if(!(null==(a=this.room)?void 0:a.localParticipant.identity)||""===this.room.localParticipant.identity)throw TypeError("local identity needs to be known in order to set up encrypted sender");if(sm()){aR.info("initialize script transform");let a={kind:"encode",participantIdentity:this.room.localParticipant.identity,trackId:t,codec:i,hasPacketTrailer:s0(n),packetTrailer:n};e.transform=new RTCRtpScriptTransform(this.worker,a)}else{aR.info("initialize encoded streams");let a=e.createEncodedStreams(),r={kind:"encode",data:{readableStream:a.readable,writableStream:a.writable,codec:i,trackId:t,participantIdentity:this.room.localParticipant.identity,isReuse:!1,hasPacketTrailer:s0(n),packetTrailer:n}};this.worker.postMessage(r,[a.readable,a.writable])}e[sY]=!0}}}class s7{constructor(){this.metadataMap=new Map,this.activeSsrc=0}storeMetadata(e,t,i){for(0!==this.activeSsrc&&this.activeSsrc!==t&&this.metadataMap.clear(),this.activeSsrc=t;this.metadataMap.size>=300;){let e=this.metadataMap.keys().next().value;this.metadataMap.delete(e)}this.metadataMap.set(e,i)}lookupMetadata(e){return this.metadataMap.get(e)}dispose(){this.metadataMap.clear(),this.activeSsrc=0}}class oe{constructor(e){this.extractors=new Map,this.workerPipelines=new Map,this.onWorkerMessage=e=>{let t=e.data;if("metadata"===t.kind){let e=this.extractors.get(t.data.trackId);e&&e.storeMetadata(t.data.rtpTimestamp,t.data.ssrc,t.data.metadata)}},this.onWorkerError=e=>{aR.error("packet trailer worker encountered an error:",{error:e.error})},this.worker=null==e?void 0: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(ep.TrackSubscribed,(e,t,i)=>{"video"===e.kind&&this.setupReceiver(e,t.trackInfo)}).on(ep.TrackUnsubscribed,e=>{this.teardownTrack(e)}).on(ep.Disconnected,()=>{this.cleanup()}))}setupReceiver(e,t){var i,n,a;let r=e.receiver;if(!r)return;if(!((null==t?void 0:t.packetTrailerFeatures)&&t.packetTrailerFeatures.length>0)){(null==(i=this.room)?void 0:i.hasE2EESetup)||this.setupPassthroughReceiver(r,e.mediaStreamID);return}
1if(!sZ(this.worker?{worker:this.worker}:void 0)&&!(null==(n=this.room)?void 0:n.hasE2EESetup))return void aR.warn("packet trailer transform not supported; skipping extraction");let s=new s7,o=e.mediaStreamID;this.extractors.set(o,s),e.packetTrailerExtractor=s,null!=(a=this.room)&&a.hasE2EESetup||this.setupWorkerReceiver(r,o,!0)}setupPassthroughReceiver(e,t){if(sm()){"transform"in e&&(e.transform=null);return}this.worker&&sZ({worker:this.worker})&&!this.workerPipelines.has(e)?this.setupWorkerReceiver(e,t,!1):this.worker&&this.workerPipelines.has(e)&&this.setupWorkerReceiver(e,t,!1)}setupWorkerReceiver(e,t){let i,n=!(arguments.length>2)||void 0===arguments[2]||arguments[2],a=this.worker;if(!a)return;if(sm()){e.transform=new RTCRtpScriptTransform(a,{kind:"decode",trackId:t});return}let r=this.workerPipelines.get(e);if(r){a.postMessage({kind:"updateTrackId",data:{oldTrackId:r,newTrackId:t,hasPacketTrailer:n}}),this.workerPipelines.set(e,t);return}if(!("createEncodedStreams"in e))return void aR.warn("createEncodedStreams not supported");try{i=e.createEncodedStreams()}catch(e){aR.warn("failed to create encoded streams",{error:e});return}let s={kind:"decode",data:{readableStream:i.readable,writableStream:i.writable,trackId:t,hasPacketTrailer:n}};a.postMessage(s,[i.readable,i.writable]),this.workerPipelines.set(e,t)}teardownTrack(e){let t=e.mediaStreamID,i=this.extractors.get(t);i&&(i.dispose(),this.extractors.delete(t)),e instanceof s4&&(e.packetTrailerExtractor=void 0)}cleanup(){var e;for(let e of this.extractors.values())e.dispose();this.extractors.clear(),this.workerPipelines.clear(),null==(e=this.worker)||e.terminate()}}class ot{constructor(){this.failedConnectionAttempts=new Map,this.backOffPromises=new Map}static getInstance(){return this._instance||(this._instance=new ot),this._instance}addFailedConnectionAttempt(e){var t;let i=sT(new URL(e));if(!i)return;let n=null!=(t=this.failedConnectionAttempts.get(i))?t:0;this.failedConnectionAttempts.set(i,n+1),this.backOffPromises.set(i,sc(Math.min(500*Math.pow(2,n),15e3)))}getBackOffPromise(e){let t=new URL(e),i=t&&sT(t);return i&&this.backOffPromises.get(i)||Promise.resolve()}resetFailedConnectionAttempts(e){let t=new URL(e),i=t&&sT(t);i&&(this.failedConnectionAttempts.set(i,0),this.backOffPromises.set(i,Promise.resolve()))}resetAll(){this.backOffPromises.clear(),this.failedConnectionAttempts.clear()}}ot._instance=null;let oi="default";class on{constructor(){this._previousDevices=[]}static getInstance(){return void 0===this.instance&&(this.instance=new on),this.instance}get previousDevices(){return this._previousDevices}getDevices(e){return aD(this,arguments,void 0,function(e){var t=this;let i=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return function*(){var n;if((null==(n=on.userMediaPromiseMap)?void 0:n.size)>0){aR.debug("awaiting getUserMedia promise");try{e?yield on.userMediaPromiseMap.get(e):yield Promise.all(on.userMediaPromiseMap.values())}catch(e){aR.warn("error waiting for media permissons")}}let a=yield navigator.mediaDevices.enumerateDevices();if(i&&!(sg()&&t.hasDeviceInUse(e))&&(0===a.filter(t=>t.kind===e).length||a.some(t=>{let i=""===t.label,n=!e||t.kind===e;return i&&n}))){let t=yield navigator.mediaDevices.getUserMedia({video:"audioinput"!==e&&"audiooutput"!==e,audio:"videoinput"!==e&&{deviceId:{ideal:"default"}}});a=yield navigator.mediaDevices.enumerateDevices(),t.getTracks().forEach(e=>{e.stop()})}return t._previousDevices=a,e&&(a=a.filter(t=>t.kind===e)),a}()})}normalizeDeviceId(e,t,i){return aD(this,void 0,void 0,function*(){if(t!==oi)return t;let n=yield this.getDevices(e),a=n.find(e=>e.deviceId===oi);if(!a)return void aR.warn("could not reliably determine default device");let r=n.find(e=>e.deviceId!==oi&&e.groupId===(null!=i?i:a.groupId));return r?null==r?void 0:r.deviceId:void aR.warn("could not reliably determine default device")})}hasDeviceInUse(e){return e?on.userMediaPromiseMap.has(e):on.userMediaPromiseMap.size>0}}on.mediaDeviceKinds=["audioinput","audiooutput","videoinput"],on.userMediaPromiseMap=new Map;class oa{static u16(e){return new oa(e,65535)}static u32(e){return new oa(e,0xffffffff)}constructor(e,t){if(this.value=e,e<0)throw Error("WrapAroundUnsignedInt: cannot faithfully represent an integer smaller than 0");if(t>Number.MAX_SAFE_INTEGER)throw 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 oa(this.value,this.maxSize)}update(e){this.value=e(this.value),this.clamp()}increment(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.update(t=>t+e)}
1decrement(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.update(t=>t-e)}getThenIncrement(){let e=this.value;return this.increment(),new oa(e,this.maxSize)}isBefore(e){let t=this.value>>>0,i=(e.value>>>0)-t>>>0;return 0!==i&&i<this.maxSize+1}}class or{static fromRtpTicks(e){return new or(e,9e4)}static rtpRandom(){let e=Math.round(0xffffffff*Math.random());return or.fromRtpTicks(e)}constructor(e,t){this.timestamp=oa.u32(e),this.rateInHz=t}asTicks(){return this.timestamp.value}clone(){return new or(this.timestamp.value,this.rateInHz)}wrappingAdd(e){this.timestamp.increment(e)}isBefore(e){return this.timestamp.isBefore(e.timestamp)}}class os{constructor(e,t,i){this.epoch=t,this.base=i,this.previous=i.clone(),this.rateInHz=e}static startingNow(e,t){return new os(t,new Date,e)}static startingAtTime(e,t,i){return new os(i,e,t)}static rtpStartingNow(e){return os.startingNow(e,9e4)}static rtpStartingAtTime(e,t){return os.startingAtTime(e,t,9e4)}now(){return this.at(new Date)}at(e){let t=e.getTime()-this.epoch.getTime(),i=os.durationInMsToTicks(t,this.rateInHz),n=this.base.clone();return n.wrappingAdd(i),n.isBefore(this.previous)&&(n=this.previous),this.previous=n.clone(),n.clone()}static durationInMsToTicks(e,t){return Math.round((1e6*e*t+5e8)/1e9)}}function oo(e){if(e instanceof DataView)return e;if(e instanceof ArrayBuffer)return new DataView(e);if(e instanceof Uint8Array)return new DataView(e.buffer,e.byteOffset,e.byteLength);throw Error("Error coercing ".concat(e," to DataView - input was not DataView, ArrayBuffer, or Uint8Array."))}(D=ex||(ex={}))[D.Reserved=0]="Reserved",D[D.TooLarge=1]="TooLarge";class oc extends rU{constructor(e,t){super(19,e),this.name="DataTrackHandleError",this.reason=t,this.reasonName=ex[t]}isReason(e){return this.reason===e}static tooLarge(){return new oc("Value too large to be a valid track handle",ex.TooLarge)}static reserved(e){return new oc("0x".concat(e.toString(16)," is a reserved value."),ex.Reserved)}}let ol={fromNumber(e){if(0===e)throw oc.reserved(e);if(e>65535)throw oc.tooLarge();return e}};class od{constructor(){this.value=0}get(){return(this.value+=1,this.value>65535)?null:this.value}reset(){this.value=0}}let ou=e=>({sid:e.sid,pubHandle:e.pubHandle,name:e.name,usesE2ee:e.encryption!==ix.NONE});(M=eE||(eE={}))[M.WAITING=0]="WAITING",M[M.RUNNING=1]="RUNNING",M[M.COMPLETED=2]="COMPLETED";class oh{constructor(){this.pendingTasks=new Map,this.taskMutex=new e2,this.nextTaskIndex=0}run(e){return aD(this,void 0,void 0,function*(){let t={id:this.nextTaskIndex++,enqueuedAt:Date.now(),status:eE.WAITING};this.pendingTasks.set(t.id,t);let i=yield this.taskMutex.lock();try{return t.executedAt=Date.now(),t.status=eE.RUNNING,yield e()}finally{t.status=eE.COMPLETED,this.pendingTasks.delete(t.id),i()}})}flush(){return aD(this,void 0,void 0,function*(){return this.run(()=>aD(this,void 0,void 0,function*(){}))})}snapshot(){return Array.from(this.pendingTasks.values())}}class op{get readyState(){return this.ws.readyState}constructor(e){var t,i;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null==(t=n.signal)?void 0:t.aborted)throw new DOMException("This operation was aborted","AbortError");this.url=e;const a=new WebSocket(e,null!=(i=n.protocols)?i:[]);a.binaryType="arraybuffer",this.ws=a;const r=function(){let{closeCode:e,reason:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return a.close(e,t)};this.opened=new r_((e,t)=>{let i=()=>{t(rF.websocket("Encountered websocket error during connection establishment"))};a.onopen=()=>{e({readable:new ReadableStream({start(e){a.onmessage=t=>{let{data:i}=t;return e.enqueue(i)},a.onerror=t=>e.error(t)},cancel:r}),writable:new WritableStream({write(e){a.send(e)},abort(){a.close()},close:r}),protocol:a.protocol,extensions:a.extensions}),a.removeEventListener("error",i)},a.addEventListener("error",i)}),this.closed=new r_((e,t)=>{let i=()=>aD(this,void 0,void 0,function*(){let i=new r_(e=>{a.readyState===WebSocket.CLOSED||a.addEventListener("close",t=>{e(t)},{once:!0})}),n=yield r_.race([sc(250),i]);n?e(n):t(rF.websocket("Encountered unspecified websocket error without a timely close event"))});
1a.onclose=t=>{let{code:n,reason:r}=t;e({closeCode:n,reason:r}),a.removeEventListener("error",i)},a.addEventListener("error",i)}),n.signal&&(n.signal.onabort=()=>a.close()),this.close=r}}let om=["syncState","trickle","offer","answer","simulate","leave"];(O=eP||(eP={}))[O.CONNECTING=0]="CONNECTING",O[O.CONNECTED=1]="CONNECTED",O[O.RECONNECTING=2]="RECONNECTING",O[O.DISCONNECTING=3]="DISCONNECTING",O[O.DISCONNECTED=4]="DISCONNECTED";class og{get currentState(){return this.state}get isDisconnected(){return this.state===eP.DISCONNECTING||this.state===eP.DISCONNECTED}get isEstablishingConnection(){return this.state===eP.CONNECTING||this.state===eP.RECONNECTING}getNextRequestId(){return this._requestId+=1,this._requestId}constructor(){var e;let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.rtt=0,this.state=eP.DISCONNECTED,this.log=aR,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=i.loggerContextCb,this.log=aI(null!=(e=i.loggerName)?e:es.Signal,()=>this.logContext),this.useJSON=t,this.requestQueue=new oh,this.queuedRequests=[],this.closingLock=new e2,this.connectionLock=new e2,this.state=eP.DISCONNECTED}get logContext(){var e,t;return null!=(t=null==(e=this.loggerContextCb)?void 0:e.call(this))?t:{}}join(e,t,i,n){return aD(this,arguments,void 0,function(e,t,i,n){var a=this;let r=arguments.length>4&&void 0!==arguments[4]&&arguments[4],s=arguments.length>5?arguments[5]:void 0;return function*(){return a.state=eP.CONNECTING,a.options=i,yield a.connect(e,t,i,n,r,s)}()})}reconnect(e,t,i,n){return aD(this,void 0,void 0,function*(){return this.options?(this.state=eP.RECONNECTING,this.clearPingInterval(),yield this.connect(e,t,Object.assign(Object.assign({},this.options),{reconnect:!0,sid:i,reconnectReason:n}),void 0,this.useV0SignalPath)):void this.log.warn("attempted to reconnect without signal options being set, ignoring")})}connect(e,t,i,n){return aD(this,arguments,void 0,function(e,t,i,n){var a=this;let r=arguments.length>4&&void 0!==arguments[4]&&arguments[4],s=arguments.length>5?arguments[5]:void 0;return function*(){var o,c,l,d,u;let h,p,m=yield a.connectionLock.lock();a.connectOptions=i,a.useV0SignalPath=r;let g=(p=new i$({capabilities:i.clientInfoCapabilities,sdk:iY.JS,protocol:17,clientProtocol:1,version:"2.19.0"}),sk()&&(p.os=null!=(o=sw())?o:""),p),f=(function(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=function(e,t){let i=new URL(e.startsWith("http")?e.replace(/^(http)/,"ws"):e);return t.forEach((e,t)=>{i.searchParams.set(t,e)}),sQ(i,"rtc")}(e,t);return i?n:sQ(n,"v1")})(e,r?(c=t,l=g,d=i,(h=new URLSearchParams).set("access_token",c),d.reconnect&&(h.set("reconnect","1"),d.sid&&h.set("sid",d.sid)),h.set("auto_subscribe",d.autoSubscribe?"1":"0"),h.set("sdk",sk()?"reactnative":"js"),h.set("version",l.version),h.set("protocol",l.protocol.toString()),l.deviceModel&&h.set("device_model",l.deviceModel),l.os&&h.set("os",l.os),l.osVersion&&h.set("os_version",l.osVersion),l.browser&&h.set("browser",l.browser),l.browserVersion&&h.set("browser_version",l.browserVersion),d.adaptiveStream&&h.set("adaptive_stream","1"),d.reconnectReason&&h.set("reconnect_reason",d.reconnectReason.toString()),(null==(u=navigator.connection)?void 0:u.type)&&h.set("network",navigator.connection.type),h):yield function(e,t,i,n){return aD(this,void 0,void 0,function*(){let a,r,s=new URLSearchParams;s.set("access_token",e);let o=new ay({clientInfo:t,connectionSettings:new ak({autoSubscribe:!!i.autoSubscribe,adaptiveStream:!!i.adaptiveStream}),reconnect:!!i.reconnect,participantSid:i.sid?i.sid:void 0,publisherOffer:n});i.reconnectReason&&(o.reconnectReason=i.reconnectReason);let c=o.toBinary();if(sK()){let e=new CompressionStream("gzip"),t=e.writable.getWriter();t.write(new Uint8Array(c)),t.close();let i=[],n=e.readable.getReader();for(;;){let{done:e,value:t}=yield n.read();if(e)break;i.push(t)}let s=new Uint8Array(i.reduce((e,t)=>
1e+t.length,0)),o=0;for(let e of i)s.set(e,o),o+=e.length;a=s,r=aS.GZIP}else a=c,r=aS.NONE;let l=new aT({joinRequest:a,compression:r}).toBinary();return s.set("join_request",btoa(Array.from(l,e=>String.fromCodePoint(e)).join("")).replace(/\+/g,"-").replace(/\//g,"_")),s})}(t,g,i,s),r).toString(),v=sQ(new URL(sL(f)),"validate").toString();return new Promise((e,t)=>aD(a,void 0,void 0,function*(){var a,r;try{let s=!1,o=e=>aD(this,void 0,void 0,function*(){if(s)return;s=!0;let i=e instanceof Event?e.currentTarget:e,n=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Unknown reason";if(!(e instanceof AbortSignal))return t;let i=e.reason;switch(typeof i){case"string":return i;case"object":return i instanceof Error?i.message:t;default:return"toString"in i?i.toString():t}}(i,"Abort handler called");this.streamWriter&&!this.isDisconnected?this.sendLeave().then(()=>this.close(n)).catch(e=>{this.log.error(e),this.close()}):this.close(),c(),t(rF.cancelled(n))});null==n||n.addEventListener("abort",o);let c=()=>{clearTimeout(l),null==n||n.removeEventListener("abort",o)},l=setTimeout(()=>{o(rF.timeout("room connection has timed out (signal)"))},i.websocketTimeout),d=(e,t)=>{this.handleSignalConnected(e,l,t)},u=new URL(f);u.searchParams.has("access_token")&&u.searchParams.set("access_token","<redacted>"),this.log.info("signal connecting to ".concat(u),{reconnect:i.reconnect,reconnectReason:i.reconnectReason}),this.ws&&(yield this.close(!1)),this.ws=new op(f);try{this.ws.closed.then(e=>{var i;this.isEstablishingConnection&&t(rF.internal("Websocket got closed during a (re)connection attempt: ".concat(e.reason))),1e3!==e.closeCode&&(this.log.warn("websocket closed",{reason:e.reason,code:e.closeCode,wasClean:1e3===e.closeCode,state:this.state}),this.state===eP.CONNECTED&&this.handleOnClose(null!=(i=e.reason)?i:"Unexpected WS error"))}).catch(e=>{this.isEstablishingConnection&&t(rF.internal("Websocket error during a (re)connection attempt: ".concat(e)))});let n=yield this.ws.opened.catch(e=>aD(this,void 0,void 0,function*(){if(this.state!==eP.CONNECTED){this.state=eP.DISCONNECTED,clearTimeout(l);let i=yield this.handleConnectionError(e,v);t(i);return}this.handleWSError(e),t(e)}));if(clearTimeout(l),!n)return;let s=n.readable.getReader();this.streamWriter=n.writable.getWriter();let o=yield s.read();if(s.releaseLock(),!o.value)throw rF.internal("no message received as first message");let c=s$(o.value),u=this.validateFirstMessage(c,null!=(a=i.reconnect)&&a);if(!u.isValid)return void t(u.error);(null==(r=c.message)?void 0:r.case)==="join"&&(this.pingTimeoutDuration=c.message.value.pingTimeout,this.pingIntervalDuration=c.message.value.pingInterval,this.pingTimeoutDuration&&this.pingTimeoutDuration>0&&this.log.debug("ping config",{timeout:this.pingTimeoutDuration,interval:this.pingIntervalDuration}),this.onJoined&&this.onJoined(c.message.value));let h=u.shouldProcessFirstMessage?c:void 0;d(n,h),e(u.response)}catch(e){t(e)}finally{c()}}finally{m()}}))}()})}startReadingLoop(e,t){return aD(this,void 0,void 0,function*(){for(t&&this.handleSignalResponse(t);;){this.signalLatency&&(yield sc(this.signalLatency));let{done:t,value:i}=yield e.read();if(t)break;let n=s$(i);this.handleSignalResponse(n)}})}close(){return aD(this,arguments,void 0,function(){var e=this;let t=!(arguments.length>0)||void 0===arguments[0]||arguments[0],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Close method called on signal client";return function*(){if([eP.DISCONNECTING||eP.DISCONNECTED].includes(e.state))return void e.log.debug("ignoring signal close as it's already in disconnecting state");let n=yield e.closingLock.lock();try{if(e.clearPingInterval(),t&&(e.state=eP.DISCONNECTING),e.ws){e.ws.close({closeCode:1e3,reason:i});let t=e.ws.closed;e.ws=void 0,e.streamWriter=void 0,yield Promise.race([t,sc(250)])}}catch(t){e.log.debug("websocket error while closing",{error:t})}finally{t&&(e.state=eP.DISCONNECTED),n()}}()})}sendOffer(e,t){this.log.debug("sending offer",{offerSdp:e.sdp}),this.sendRequest({case:"offer",value:ov(e,t)})}sendAnswer(e,t){return this.log.debug("sending answer",{answerSdp:e.sdp}),this.sendRequest({case:"answer",value:ov(e,t)})}sendIceCandidate(e,t){return this.log.debug("sending ice candidate",{candidate:e}),this.sendRequest({case:"trickle",value:new nU({candidateInit:JSON.stringify(e),target:t})})}sendMuteTrack(e,t){return this.sendRequest({case:"mute",value:new nF({sid:e,muted:t})})}sendAddTrack(e){return this.sendRequest({case:"addTrack",value:e})}sendUpdateLocalMetadata(e,t){return aD(this,arguments,void 0,function(e,t){var i=this;let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return function*(){let a=i.getNextRequestId();return yield i.sendRequest({case:"updateMetadata",value:new n1({requestId:a,metadata:e,name:t,attributes:n}
1)}),a}()})}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 n0({trackSid:e,layers:t})})}sendUpdateSubscriptionPermissions(e,t){return this.sendRequest({case:"subscriptionPermission",value:new aa({allParticipants:e,trackPermissions:t})})}sendSimulateScenario(e){return this.sendRequest({case:"simulate",value:e})}sendPing(){return Promise.all([this.sendRequest({case:"ping",value:tu.parse(Date.now())}),this.sendRequest({case:"pingReq",value:new au({timestamp:tu.parse(Date.now()),rtt:tu.parse(this.rtt)})})])}sendUpdateLocalAudioTrack(e,t){return this.sendRequest({case:"updateAudioTrack",value:new n$({trackSid:e,features:t})})}sendLeave(){return this.sendRequest({case:"leave",value:new nX({reason:ih.CLIENT_INITIATED,action:nZ.DISCONNECT})})}sendPublishDataTrackRequest(e,t,i){return this.sendRequest({case:"publishDataTrackRequest",value:new nD({pubHandle:e,name:t,encryption:i?ix.GCM:ix.NONE})})}sendUnPublishDataTrackRequest(e){return this.sendRequest({case:"unpublishDataTrackRequest",value:new nO({pubHandle:e})})}sendUpdateDataSubscription(e,t){return this.sendRequest({case:"updateDataSubscription",value:new nK({updates:[new nJ({trackSid:e,subscribe:t})]})})}sendRequest(e){return aD(this,arguments,void 0,function(e){var t=this;let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return function*(){let n;if(!i&&(n=om.indexOf(e.case)>=0,aR.trace("request allowed to bypass queue:",{canPass:n,req:e}),!n)&&t.state===eP.RECONNECTING)return void t.queuedRequests.push(()=>aD(t,void 0,void 0,function*(){yield this.sendRequest(e,!0)}));if(i||(yield t.requestQueue.flush()),t.signalLatency&&(yield sc(t.signalLatency)),t.isDisconnected)return void t.log.debug("skipping signal request (type: ".concat(e.case,") - SignalClient disconnected"));if(!t.streamWriter)return void t.log.error("cannot send signal request before connected, type: ".concat(null==e?void 0:e.case));let a=new nR({message:e});try{t.useJSON?yield t.streamWriter.write(a.toJsonString()):yield t.streamWriter.write(a.toBinary().buffer)}catch(e){t.log.error("error sending signal message",{error:e})}}()})}handleSignalResponse(e){var t,i;let n=e.message;if(void 0==n)return void this.log.debug("received unsupported message");let a=!1;if("answer"===n.case){let e=of(n.value);this.onAnswer&&this.onAnswer(e,n.value.id,n.value.midToTrackId)}else if("offer"===n.case){let e=of(n.value);this.onOffer&&this.onOffer(e,n.value.id,n.value.midToTrackId)}else if("trickle"===n.case){let e=JSON.parse(n.value.candidateInit);this.onTrickle&&this.onTrickle(e,n.value.target)}else"update"===n.case?this.onParticipantUpdate&&this.onParticipantUpdate(null!=(t=n.value.participants)?t:[]):"trackPublished"===n.case?this.onLocalTrackPublished&&this.onLocalTrackPublished(n.value):"speakersChanged"===n.case?this.onSpeakersChanged&&this.onSpeakersChanged(null!=(i=n.value.speakers)?i:[]):"leave"===n.case?this.onLeave&&this.onLeave(n.value):"mute"===n.case?this.onRemoteMuteChanged&&this.onRemoteMuteChanged(n.value.sid,n.value.muted):"roomUpdate"===n.case?this.onRoomUpdate&&n.value.room&&this.onRoomUpdate(n.value.room):"connectionQuality"===n.case?this.onConnectionQuality&&this.onConnectionQuality(n.value):"streamStateUpdate"===n.case?this.onStreamStateUpdate&&this.onStreamStateUpdate(n.value):"subscribedQualityUpdate"===n.case?this.onSubscribedQualityUpdate&&this.onSubscribedQualityUpdate(n.value):"subscriptionPermissionUpdate"===n.case?this.onSubscriptionPermissionUpdate&&this.onSubscriptionPermissionUpdate(n.value):"refreshToken"===n.case?this.onTokenRefresh&&this.onTokenRefresh(n.value):"trackUnpublished"===n.case?this.onLocalTrackUnpublished&&this.onLocalTrackUnpublished(n.value):"subscriptionResponse"===n.case?this.onSubscriptionError&&this.onSubscriptionError(n.value):"pong"===n.case||("pongResp"===n.case?(this.rtt=Date.now()-Number.parseInt(n.value.lastPingTimestamp.toString()),this.resetPingTimeout(),a=!0):"requestResponse"===n.case?this.onRequestResponse&&this.onRequestResponse(n.value):"trackSubscribed"===n.case?this.onLocalTrackSubscribed&&this.onLocalTrackSubscribed(n.value.trackSid):"roomMoved"===n.case?(this.onTokenRefresh&&this.onTokenRefresh(n.value.token),this.onRoomMoved&&this.onRoomMoved(n.value)):"mediaSectionsRequirement"===n.case?this.onMediaSectionsRequirement&&this.onMediaSectionsRequirement
1(n.value):"publishDataTrackResponse"===n.case?this.onPublishDataTrackResponse&&this.onPublishDataTrackResponse(n.value):"unpublishDataTrackResponse"===n.case?this.onUnPublishDataTrackResponse&&this.onUnPublishDataTrackResponse(n.value):"dataTrackSubscriberHandles"===n.case?this.onDataTrackSubscriberHandles&&this.onDataTrackSubscriberHandles(n.value):this.log.debug("unsupported message",{msgCase:n.case}));a||this.resetPingTimeout()}setReconnected(){for(;this.queuedRequests.length>0;){let e=this.queuedRequests.shift();e&&this.requestQueue.run(e)}}handleOnClose(e){return aD(this,void 0,void 0,function*(){if(this.state===eP.DISCONNECTED)return;let t=this.onClose;yield this.close(void 0,e),this.log.info("websocket connection closed: ".concat(e),{reason:e}),t&&t(e)})}handleWSError(e){this.log.error("websocket error",{error:e})}resetPingTimeout(){(this.clearPingTimeout(),this.pingTimeoutDuration)?this.pingTimeout=rQ.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&&rQ.clearTimeout(this.pingTimeout)}startPingInterval(){(this.clearPingInterval(),this.resetPingTimeout(),this.pingIntervalDuration)?(this.log.debug("start ping interval"),this.pingInterval=rQ.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&&rQ.clearInterval(this.pingInterval)}handleSignalConnected(e,t,i){this.state=eP.CONNECTED,this.log.info("signal connected"),clearTimeout(t),this.startPingInterval(),this.startReadingLoop(e.readable.getReader(),i)}validateFirstMessage(e,t){var i,n,a,r,s;if((null==(i=e.message)?void 0:i.case)==="join")return{isValid:!0,response:e.message.value};if(this.state===eP.RECONNECTING&&(null==(n=e.message)?void 0:n.case)!=="leave")if((null==(a=e.message)?void 0:a.case)==="reconnect")return{isValid:!0,response:e.message.value};else return this.log.debug("declaring signal reconnected without reconnect response received"),{isValid:!0,response:void 0,shouldProcessFirstMessage:!0};return this.isEstablishingConnection&&(null==(r=e.message)?void 0:r.case)==="leave"?{isValid:!1,error:rF.leaveRequest("Received leave request while trying to (re)connect",e.message.value.reason)}:t?{isValid:!1,error:rF.internal("Unexpected first message")}:{isValid:!1,error:rF.internal("did not receive join response, got ".concat(null==(s=e.message)?void 0:s.case," instead"))}}handleConnectionError(e,t){return aD(this,void 0,void 0,function*(){try{let i=yield fetch(t);switch(i.status){case 404:let n=yield i.text();if(n.includes("requested room does not exist"))return rF.notAllowed(n,i.status);return rF.serviceNotFound("v1 RTC path not found. Consider upgrading your LiveKit server version","v0-rtc");case 401:case 403:let a=yield i.text();return rF.notAllowed(a,i.status)}if(e instanceof rF)return e;return rF.internal("Encountered unknown websocket error during connection: ".concat(e),{status:i.status,statusText:i.statusText})}catch(e){return e instanceof rF?e:rF.serverUnreachable(e instanceof Error?e.message:"server was not reachable")}})}}function of(e){let t={type:"offer",sdp:e.sdp};switch(e.type){case"answer":case"offer":case"pranswer":case"rollback":t.type=e.type}return t}function ov(e,t){return new nz({sdp:e.sdp,type:e.type,id:t})}class ob{constructor(){this.buffer=[],this._totalSize=0}push(e){this.buffer.push(e),this._totalSize+=e.data.byteLength}pop(){let e=this.buffer.shift();return e&&(this._totalSize-=e.data.byteLength),e}getAll(){return this.buffer.slice()}popToSequence(e){for(;this.buffer.length>0;)if(this.buffer[0].sequence<=e)this.pop();else break}alignBufferedAmount(e){for(;this.buffer.length>0;){let t=this.buffer[0];if(this._totalSize-t.data.byteLength<=e)break;this.pop()}}get length(){return this.buffer.length}}class ok{constructor(e){this._map=new Map,this._lastCleanup=0,this.ttl=e}set(e,t){let i=Date.now();i-this._lastCleanup>this.ttl/2&&this.cleanup();let n=i+this.ttl;return this._map.set(e,{value:t,expiresAt:n}),this}get(e){let t=this._map.get(e);if(t)return t.expiresAt<Date.now()?void this._map.delete(e):t.value}has(e){let t=this._map.get(e);
1return!!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[t,i]of this._map.entries())i.expiresAt<e&&this._map.delete(t);this._lastCleanup=e}get size(){return this.cleanup(),this._map.size}forEach(e){for(let[t,i]of(this.cleanup(),this._map.entries()))i.expiresAt>=Date.now()&&e(i.value,t,this.asValueMap())}map(e){this.cleanup();let t=[],i=this.asValueMap();for(let[n,a]of i.entries())t.push(e(a,n,i));return t}asValueMap(){let e=new Map;for(let[t,i]of this._map.entries())i.expiresAt>=Date.now()&&e.set(t,i.value);return e}}var oy={},oT={},oS={exports:{}};function ow(){if(eR)return oS.exports;eR=1;var e=oS.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(e){return e.encoding?"rtpmap:%d %s/%s/%s":e.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(e){return null!=e.address?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(e){return null!=e.subtype?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(e){return"extmap:%d"+(e.direction?"/%s":"%v")+(e["encrypt-uri"]?" %s":"%v")+" %s"+(e.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(e){return null!=e.sessionConfig?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(e){var t="candidate:%s %d %s %d %s %d typ %s";return t+=(null!=e.raddr?" raddr %s rport %d":"%v%v")+(null!=e.tcptype?" tcptype %s":"%v"),null!=e.generation&&(t+=" generation %d"),t+=(null!=e["network-id"]?" network-id %d":"%v")+(null!=e["network-cost"]?" network-cost %d":"%v")}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(e){var t="ssrc:%d";return null!=e.attribute&&(t+=" %s",null!=e.value&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","max
1MessageSize"],format:function(e){return null!=e.maxMessageSize?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(e){return e.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg: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:RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(e){return"simulcast:%s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(e){return"ts-refclk:%s"+(null!=e.clksrcExt?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(e){var t="mediaclk:";return t+((null!=e.id?"id=%s %s":"%v%s")+(null!=e.mediaClockValue?"=%s":"")+(null!=e.rateNumerator?" rate=%s":"")+(null!=e.rateDenominator?"/%s":""))}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};return Object.keys(e).forEach(function(t){e[t].forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})}),oS.exports}var oC=function(){if(eD)return oy;eD=1;var e=function(){var e,t,i,n,a,r;return eI?oT:(eI=1,e=function(e){return String(Number(e))===e?Number(e):e},t=function(t,i,n,a){if(a&&!n)i[a]=e(t[1]);else for(var r=0;r<n.length;r+=1)null!=t[r+1]&&(i[n[r]]=e(t[r+1]))},i=function(e,i,n){var a=e.name&&e.names;e.push&&!i[e.push]?i[e.push]=[]:a&&!i[e.name]&&(i[e.name]={});var r=e.push?{}:a?i[e.name]:i;t(n.match(e.reg),r,e.names,e.name),e.push&&i[e.push].push(r)},n=ow(),a=RegExp.prototype.test.bind(/^([a-z])=(.*)/),oT.parse=function(e){var t={},r=[],s=t;return e.split(/(\r\n|\r|\n)/).filter(a).forEach(function(e){var t=e[0],a=e.slice(2);"m"===t&&(r.push({rtp:[],fmtp:[]}),s=r[r.length-1]);for(var o=0;o<(n[t]||[]).length;o+=1){var c=n[t][o];if(c.reg.test(a))return i(c,s,a)}}),t.media=r,t},r=function(t,i){var n=i.split(/=(.+)/,2);return 2===n.length?t[n[0]]=e(n[1]):1===n.length&&i.length>1&&(t[n[0]]=void 0),t},oT.parseParams=function(e){return e.split(/;\s?/).reduce(r,{})},oT.parseFmtpConfig=oT.parseParams,oT.parsePayloads=function(e){return e.toString().split(" ").map(Number)},oT.parseRemoteCandidates=function(t){for(var i=[],n=t.split(" ").map(e),a=0;a<n.length;a+=3)i.push({component:n[a],ip:n[a+1],port:n[a+2]});return i},oT.parseImageAttributes=function(e){return e.split(" ").map(function(e){return e.substring(1,e.length-1).split(",").reduce(r,{})})},oT.parseSimulcastStreamList=function(t){return t.split(";").map(function(t){return t.split(",").map(function(t){var i,n=!1;return"~"!==t[0]?i=e(t):(i=e(t.substring(1,t.length)),n=!0),{scid:i,paused:n}})})},oT)}(),t=function(){if(e_)return eN;e_=1;var e=ow(),t=/%[sdv%]/g,i=function(e){var i=1,n=arguments,a=n.length;return e.replace(t,function(e){if(i>=a)return e;var t=n[i];switch(i+=1,e){case"%%":return"%";case"%s":return String(t);case"%d":return Number(t);case"%v":return""}})},n=function(e,t,n){var a=[e+"="+(t.format instanceof Function?t.format(t.push?n:n[t.name]):t.format)];if(t.names)for(var r=0;r<t.names.length;r+=1){var s=t.names[r];t.name?a.push(n[t.name][s]):a.push(n[t.names[r]])}else a.push(n[t.name]);return i.apply(null,a)},a=["v","o","s","i","u","e","p","c","b","t","r","z","a"],r=["i","c","b","a"];return eN=function(t,i){i=i||{}
1,null==t.version&&(t.version=0),null==t.name&&(t.name=" "),t.media.forEach(function(e){null==e.payloads&&(e.payloads="")});var s=i.outerOrder||a,o=i.innerOrder||r,c=[];return s.forEach(function(i){e[i].forEach(function(e){e.name in t&&null!=t[e.name]?c.push(n(i,e,t)):e.push in t&&null!=t[e.push]&&t[e.push].forEach(function(t){c.push(n(i,e,t))})})}),t.media.forEach(function(t){c.push(n("m",e.m[0],t)),o.forEach(function(i){e[i].forEach(function(e){e.name in t&&null!=t[e.name]?c.push(n(i,e,t)):e.push in t&&null!=t[e.push]&&t[e.push].forEach(function(t){c.push(n(i,e,t))})})})}),c.join("\r\n")+"\r\n"}}();return oy.grammar=ow(),oy.write=t,oy.parse=e.parse,oy.parseParams=e.parseParams,oy.parseFmtpConfig=e.parseFmtpConfig,oy.parsePayloads=e.parsePayloads,oy.parseRemoteCandidates=e.parseRemoteCandidates,oy.parseImageAttributes=e.parseImageAttributes,oy.parseSimulcastStreamList=e.parseSimulcastStreamList,oy}();let ox="offerAnswered",oE="rtpVideoPayloadTypes";class oP extends aL.EventEmitter{get pc(){return this._pc||(this._pc=this.createPC()),this._pc}constructor(e){var t;let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),this.log=aR,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=s1(e=>aD(this,void 0,void 0,function*(){this.emit("negotiationStarted");try{yield this.createAndSendOffer()}catch(t){if(e)e(t);else throw t}}),20),this.close=()=>{this._pc&&(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.log=aI(null!=(t=i.loggerName)?t:es.PCTransport),this.loggerOptions=i,this.config=e,this._pc=this.createPC(),this.offerLock=new e2}createPC(){let e=new RTCPeerConnection(this.config);return e.onicecandidate=e=>{var t;e.candidate&&(null==(t=this.onIceCandidate)||t.call(this,e.candidate))},e.onicecandidateerror=e=>{var t;null==(t=this.onIceCandidateError)||t.call(this,e)},e.oniceconnectionstatechange=()=>{var t;null==(t=this.onIceConnectionStateChange)||t.call(this,e.iceConnectionState)},e.onsignalingstatechange=()=>{var t;null==(t=this.onSignalingStatechange)||t.call(this,e.signalingState)},e.onconnectionstatechange=()=>{var t;null==(t=this.onConnectionStateChange)||t.call(this,e.connectionState)},e.ondatachannel=e=>{var t;null==(t=this.onDataChannel)||t.call(this,e)},e.ontrack=e=>{var t;null==(t=this.onTrack)||t.call(this,e)},e}get logContext(){var e,t;return Object.assign({},null==(t=(e=this.loggerOptions).loggerContextCb)?void 0:t.call(e))}get isICEConnected(){return null!==this._pc&&("connected"===this.pc.iceConnectionState||"completed"===this.pc.iceConnectionState)}addIceCandidate(e){return aD(this,void 0,void 0,function*(){if(this.pc.remoteDescription&&!this.restartingIce)return this.pc.addIceCandidate(e);this.pendingCandidates.push(e)})}setRemoteDescription(e,t){return aD(this,void 0,void 0,function*(){var i,n,a,r;let s;if("answer"===e.type&&this.latestOfferId>0&&t>0&&t!==this.latestOfferId)return this.log.warn("ignoring answer for old offer",Object.assign(Object.assign({},this.logContext),{offerId:t,latestOfferId:this.latestOfferId})),!1;if("offer"===e.type){let t,i,n,s,{stereoMids:o,nackMids:c}=(a=e,t=[],i=[],n=oC.parse(null!=(r=a.sdp)?r:""),s=0,n.media.forEach(e=>{var n;let a=oN(e.mid);"audio"===e.type&&(e.rtp.some(e=>"opus"===e.codec&&(s=e.payload,!0)),(null==(n=e.rtcpFb)?void 0:n.some(e=>e.payload===s&&"nack"===e.type))&&i.push(a),e.fmtp.some(e=>e.payload===s&&(e.config.includes("sprop-stereo=1")&&t.push(a),!0)))}),{stereoMids:t,nackMids:i});this.remoteStereoMids=o,this.remoteNackMids=c}else if("answer"===e.type){if(this.pendingInitialOffer&&this._pc){let e=this.pendingInitialOffer;this.pendingInitialOffer=void 0;let t=oC.parse(null!=(i=e.sdp)?i:"");
1t.media.forEach(e=>{oI(e)}),this.log.debug("setting pending initial offer before processing answer",this.logContext),yield this.setMungedSDP(e,oC.write(t))}let t=oC.parse(null!=(n=e.sdp)?n:"");t.media.forEach(e=>{let t=oN(e.mid);"audio"===e.type&&this.trackBitrates.some(i=>{if(!i.transceiver||t!=i.transceiver.mid)return!1;let n=0;if(e.rtp.some(e=>e.codec.toUpperCase()===i.codec.toUpperCase()&&(n=e.payload,!0)),0===n)return!0;let a=!1;for(let t of e.fmtp)if(t.payload===n){t.config=t.config.split(";").filter(e=>!e.includes("maxaveragebitrate")).join(";"),i.maxbr>0&&(t.config+=";maxaveragebitrate=".concat(1e3*i.maxbr)),a=!0;break}return!a&&i.maxbr>0&&e.fmtp.push({payload:n,config:"maxaveragebitrate=".concat(1e3*i.maxbr)}),!0})}),s=oC.write(t)}return yield this.setMungedSDP(e,s,!0),this.pendingCandidates.forEach(e=>{this.pc.addIceCandidate(e)}),this.pendingCandidates=[],this.restartingIce=!1,"answer"===e.type&&(this.latestAcknowledgedOfferId=t,this.emit(ox,t)),this.renegotiate?(this.renegotiate=!1,yield this.createAndSendOffer()):"answer"===e.type&&(this.emit
1("negotiationComplete"),e.sdp&&oC.parse(e.sdp).media.forEach(e=>{"video"===e.type&&this.emit(oE,e.rtp)})),!0})}createInitialOffer(){return aD(this,void 0,void 0,function*(){var e;let t=yield this.offerLock.lock();try{if("stable"!==this.pc.signalingState)return void this.log.warn("signaling state is not stable, cannot create initial offer",this.logContext);let t=this.latestOfferId+1;this.latestOfferId=t;let i=yield this.pc.createOffer();this.pendingInitialOffer={sdp:i.sdp,type:i.type};let n=oC.parse(null!=(e=i.sdp)?e:"");return n.media.forEach(e=>{oI(e)}),i.sdp=oC.write(n),{offer:i,offerId:t}}finally{t()}})}createAndSendOffer(e){return aD(this,void 0,void 0,function*(){var t;let i=yield this.offerLock.lock();try{if(void 0===this.onOffer)return;if((null==e?void 0:e.iceRestart)&&(this.log.debug("restarting ICE",this.logContext),this.restartingIce=!0),this._pc&&("have-local-offer"===this._pc.signalingState||this.pendingInitialOffer)){let t=this._pc.remoteDescription;if((null==e?void 0:e.iceRestart)&&t)yield this._pc.setRemoteDescription(t);else{this.renegotiate=!0,this.log.debug("requesting renegotiation",Object.assign({},this.logContext));return}}else if(!this._pc||"closed"===this._pc.signalingState)return void this.log.warn("could not createOffer with closed peer connection",this.logContext);this.log.debug("starting to negotiate",this.logContext);let i=this.latestOfferId+1;this.latestOfferId=i;let n=yield this.pc.createOffer(e);this.log.debug("original offer",Object.assign({sdp:n.sdp},this.logContext));let a=oC.parse(null!=(t=n.sdp)?t:"");if(a.media.forEach(e=>{oI(e),"audio"===e.type?oR(e,["all"],[]):"video"===e.type&&this.trackBitrates.some(t=>{if(!e.msid||!t.cid||!e.msid.includes(t.cid))return!1;let i=0;if(e.rtp.some(e=>e.codec.toUpperCase()===t.codec.toUpperCase()&&(i=e.payload,!0)),0===i||(su(t.codec)&&!sg()&&this.ensureVideoDDExtensionForSVC(e,a),!su(t.codec)))return!0;let n=Math.round(.7*t.maxbr);for(let t of e.fmtp)if(t.payload===i){t.config.includes("x-google-start-bitrate")||(t.config+=";x-google-start-bitrate=".concat(n));break}return!0})}),this.latestOfferId>i)return void this.log.warn("latestOfferId mismatch",Object.assign(Object.assign({},this.logContext),{latestOfferId:this.latestOfferId,offerId:i}));yield this.setMungedSDP(n,oC.write(a)),this.onOffer(n,this.latestOfferId)}finally{i()}})}createAndSetAnswer(){return aD(this,void 0,void 0,function*(){var e;let t=yield this.pc.createAnswer(),i=oC.parse(null!=(e=t.sdp)?e:"");return i.media.forEach(e=>{oI(e),"audio"===e.type&&oR(e,this.remoteStereoMids,this.remoteNackMids)}),yield this.setMungedSDP(t,oC.write(i)),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 rH("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 rH("PC closed, cannot configure");return null==(t=this._pc)?void 0:t.setConfiguration(e)}canRemoveTrack(){var e;return!!(null==(e=this._pc)?void 0:e.removeTrack)}removeTrack(e){var t;return null==(t=this._pc)?void 0:t.removeTrack(e)}getConnectionState(){var e,t;return null!=(t=null==(e=this._pc)?void 0:e.connectionState)?t:"closed"}getICEConnectionState(){var e,t;return null!=(t=null==(e=this._pc)?void 0:e.iceConnectionState)?t:"closed"}getSignallingState(){var e,t;return null!=(t=null==(e=this._pc)?void 0:e.signalingState)?t:"closed"}getTransceivers(){var e,t;return null!=(t=null==(e=this._pc)?void 0:e.getTransceivers())?t:[]}getSenders(){var e,t;return null!=(t=null==(e=this._pc)?void 0:e.getSenders())?t:[]}getLocalDescription(){var e;return null==(e=this._pc)?void 0:e.localDescription}getRemoteDescription(){var e;return null==(e=this.pc)?void 0:e.remoteDescription}getStats(){return this.pc.getStats()}getConnectedAddress(){return aD(this,void 0,void 0,function*(){var e;if(!this._pc)return;let t="",i=new Map,n=new Map;if((yield this._pc.getStats()).forEach(e=>{switch(e.type){case"transport":t=e.selectedCandidatePairId;break;case"candidate-pair":""===t&&e.selected&&(t=e.id),i.set(e.id,e);break;case"remote-candidate":n.set(e.id,"".concat(e.address,":").concat(e.port))}}),""===t)return;let a=null==(e=i.get(t))?void 0:e.remoteCandidateId;if(void 0!==a)return n.get(a)})}
1setMungedSDP(e,t,i){return aD(this,void 0,void 0,function*(){var n,a;let r=e.sdp;if(t){e.sdp=t;try{this.log.debug("setting munged ".concat(i?"remote":"local"," description"),this.logContext),i?yield this.pc.setRemoteDescription(e):yield this.pc.setLocalDescription(e);return}catch(i){this.log.warn("not able to set ".concat(e.type,", falling back to unmodified sdp"),Object.assign(Object.assign({},this.logContext),{error:i,mungedSdp:t,originalSdp:r})),e.sdp=r}}try{i?yield null==(n=this._pc)?void 0:n.setRemoteDescription(e):yield null==(a=this._pc)?void 0:a.setLocalDescription(e)}catch(s){let n="unknown error";s instanceof Error?n=s.message:"string"==typeof s&&(n=s);let a={error:n,sdp:e.sdp};throw t&&t!==r&&(a.mungedSdp=t),!i&&this.pc.remoteDescription&&(a.remoteSdp=this.pc.remoteDescription),this.log.error("unable to set ".concat(e.type),Object.assign(Object.assign({},this.logContext),{fields:a})),new rz(n)}})}ensureVideoDDExtensionForSVC(e,t){var i,n;if(!(null==(i=e.ext)?void 0:i.some(e=>e.uri===so))){if(0===this.ddExtID){let e=0;t.media.forEach(t=>{var i;null==(i=t.ext)||i.forEach(t=>{t.value>e&&(e=t.value)})}),this.ddExtID=e+1}null==(n=e.ext)||n.push({value:this.ddExtID,uri:so})}}}function oR(e,t,i){let n=oN(e.mid),a=0;e.rtp.some(e=>"opus"===e.codec&&(a=e.payload,!0)),a>0&&(e.rtcpFb||(e.rtcpFb=[]),i.includes(n)&&!e.rtcpFb.some(e=>e.payload===a&&"nack"===e.type)&&e.rtcpFb.push({payload:a,type:"nack"}),(t.includes(n)||1===t.length&&"all"===t[0])&&e.fmtp.some(e=>e.payload===a&&(e.config.includes("stereo=1")||(e.config+=";stereo=1"),!0)))}function oI(e){if(e.connection){let t=e.connection.ip.indexOf(":")>=0;(4===e.connection.version&&t||6===e.connection.version&&!t)&&(e.connection.ip="0.0.0.0",e.connection.version=4)}}function oN(e){return"number"==typeof e?e.toFixed(0):e}let o_={audioPreset:eb.music,dtx:!0,red:!0,forceStereo:!1,simulcast:!0,screenShareEncoding:r2.h1080fps15.encoding,stopMicTrackOnMute:!1,videoCodec:"vp8",backupCodec:!0,preConnectBuffer:!1},oD={deviceId:{ideal:"default"},autoGainControl:!0,echoCancellation:!0,noiseSuppression:!0,voiceIsolation:!0},oM={deviceId:{ideal:"default"}
1,resolution:r0.h720.resolution},oO={adaptiveStream:!1,dynacast:!1,stopLocalTrackOnUnpublish:!0,reconnectPolicy:new class{constructor(e){this._retryDelays=void 0!==e?[...e]:a_}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()}},disconnectOnPageLeave:!0,webAudioMix:!1,singlePeerConnection:!0},oA={autoSubscribe:!0,maxRetries:1,peerConnectionTimeout:15e3,websocketTimeout:15e3};(A=eM||(eM={}))[A.NEW=0]="NEW",A[A.CONNECTING=1]="CONNECTING",A[A.CONNECTED=2]="CONNECTED",A[A.FAILED=3]="FAILED",A[A.CLOSING=4]="CLOSING",A[A.CLOSED=5]="CLOSED";class oL{get needsPublisher(){return this.isPublisherConnectionRequired}get needsSubscriber(){return this.isSubscriberConnectionRequired}get currentState(){return this.state}get mode(){return this._mode}constructor(e,t,i){var n;this.peerConnectionTimeout=oA.peerConnectionTimeout,this.log=aR,this.updateState=()=>{var e,t;let i=this.state,n=this.requiredTransports.map(e=>e.getConnectionState());n.every(e=>"connected"===e)?this.state=eM.CONNECTED:n.some(e=>"failed"===e)?this.state=eM.FAILED:n.some(e=>"connecting"===e)?this.state=eM.CONNECTING:n.every(e=>"closed"===e)?this.state=eM.CLOSED:n.some(e=>"closed"===e)?this.state=eM.CLOSING:n.every(e=>"new"===e)&&(this.state=eM.NEW),i!==this.state&&(this.log.debug("pc state change: from ".concat(eM[i]," to ").concat(eM[this.state]),this.logContext),null==(e=this.onStateChange)||e.call(this,this.state,this.publisher.getConnectionState(),null==(t=this.subscriber)?void 0:t.getConnectionState()))},this.log=aI(null!=(n=t.loggerName)?n:es.PCManager),this.loggerOptions=t,this.isPublisherConnectionRequired="subscriber-primary"!==e,this.isSubscriberConnectionRequired="subscriber-primary"===e,this.publisher=new oP(i,t),this._mode=e,"publisher-only"!==e&&(this.subscriber=new oP(i,t),this.subscriber.onConnectionStateChange=this.updateState,this.subscriber.onIceConnectionStateChange=this.updateState,this.subscriber.onSignalingStatechange=this.updateState,this.subscriber.onIceCandidate=e=>{var t;null==(t=this.onIceCandidate)||t.call(this,e,nx.SUBSCRIBER)},this.subscriber.onDataChannel=e=>{var t;null==(t=this.onDataChannel)||t.call(this,e)},this.subscriber.onTrack=e=>{var t;null==(t=this.onTrack)||t.call(this,e)}),this.publisher.onConnectionStateChange=this.updateState,this.publisher.onIceConnectionStateChange=this.updateState,this.publisher.onSignalingStatechange=this.updateState,this.publisher.onIceCandidate=e=>{var t;null==(t=this.onIceCandidate)||t.call(this,e,nx.PUBLISHER)},this.publisher.onTrack=e=>{var t;null==(t=this.onTrack)||t.call(this,e)},this.publisher.onOffer=(e,t)=>{var i;null==(i=this.onPublisherOffer)||i.call(this,e,t)},this.state=eM.NEW,this.connectionLock=new e2,this.remoteOfferLock=new e2}get logContext(){var e,t;return Object.assign({},null==(t=(e=this.loggerOptions).loggerContextCb)?void 0:t.call(e))}requirePublisher(){let e=!(arguments.length>0)||void 0===arguments[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 aD(this,void 0,void 0,function*(){var e;if(this.publisher&&"closed"!==this.publisher.getSignallingState()){let e=this.publisher;for(let t of e.getSenders())try{e.canRemoveTrack()&&e.removeTrack(t)}catch(e){this.log.warn("could not removeTrack",Object.assign(Object.assign({},this.logContext),{error:e}))}}yield Promise.all([this.publisher.close(),null==(e=this.subscriber)?void 0:e.close()]),this.updateState()})}triggerIceRestart(){return aD(this,void 0,void 0,function*(){this.subscriber&&(this.subscriber.restartingIce=!0),this.needsPublisher&&(yield this.createAndSendPublisherOffer({iceRestart:!0}))})}addIceCandidate(e,t){return aD(this,void 0,void 0,function*(){var i;t===nx.PUBLISHER?yield this.publisher.addIceCandidate(e):yield null==(i=this.subscriber)?void 0:i.addIceCandidate(e)})}createSubscriberAnswerFromOffer(e,t){return aD(this,void 0,void 0,function*(){var i,n,a;this.log.debug("received server offer",Object.assign(Object.assign({},this.logContext),{RTCSdpType:e.type,sdp:e.sdp,signalingState:null==(i=this.subscriber)?void 0:i.getSignallingState().toString()}));let r=yield this.remoteOfferLock.lock();try{if(!(yield null==(n=this.subscriber)?void 0:n.setRemoteDescription(e,t)))return;return yield null==(a=this.subscriber)?void 0:a.createAndSetAnswer()}finally{r()}})}updateConfiguration(e,t){var i;this.publisher.setConfiguration(e),null==(i=this.subscriber)||i.setConfiguration(e),t&&this.triggerIceRestart()}ensurePCTransportConnection(e,t){return aD(this,void 0,void 0,function*(){var i;let n=yield this.connectionLock.lock();try{this.isPublisherConnectionRequired&&"connected"!==this.publisher.getConnectionState()&&"connecting"!==this.publisher.getConnectionState()&&(this.log.debug("negotiation required, start negotiating",this.logContext),this.publisher.negotiate()),yield Promise.all(null==(i=this.requiredTransports)?void 0:i.map(i=>
1this.ensureTransportConnected(i,e,t)))}finally{n()}})}negotiate(e){return aD(this,void 0,void 0,function*(){return new r_((t,i)=>{let n=this.publisher.latestOfferId;if(this.publisher.latestAcknowledgedOfferId>n){this.log.debug("negotiation already handled in more recent acknowledged offer",this.logContext),t();return}let a=!1,r=()=>{a||(a=!0,clearTimeout(c),this.publisher.off(ox,s),e.signal.removeEventListener("abort",o))},s=e=>{e>n&&(r(),t())},o=()=>{r(),i(new rz("negotiation aborted"))},c=setTimeout(()=>{r(),i(new rz("negotiation timed out"))},this.peerConnectionTimeout);e.signal.addEventListener("abort",o),this.publisher.on(ox,s),this.publisher.negotiate(e=>{r(),e instanceof Error?i(e):i(Error(String(e)))})})})}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(t=>t.receiver===e);return null==t?void 0:t.mid}addPublisherTrack(e){return this.publisher.addTrack(e)}createPublisherDataChannel(e,t){return this.publisher.createDataChannel(e,t)}getConnectedAddress(e){return e===nx.PUBLISHER||e===nx.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 aD(this,arguments,void 0,function(e,t){var i=this;let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.peerConnectionTimeout;return function*(){if("connected"!==e.getConnectionState())return new Promise((e,a)=>aD(i,void 0,void 0,function*(){let i=()=>{this.log.warn("abort transport connection",this.logContext),rQ.clearTimeout(r),a(rF.cancelled("room connection has been cancelled"))};(null==t?void 0:t.signal.aborted)&&i(),null==t||t.signal.addEventListener("abort",i);let r=rQ.setTimeout(()=>{null==t||t.signal.removeEventListener("abort",i),a(rF.internal("could not establish pc connection"))},n);for(;this.state!==eM.CONNECTED;)if(yield sc(50),null==t?void 0:t.signal.aborted)return void a(rF.cancelled("room connection has been cancelled"));rQ.clearTimeout(r),null==t||t.signal.removeEventListener("abort",i),e()}))}()})}}let oj="u">typeof MediaRecorder,oU=oj?MediaRecorder:class{constructor(){throw Error("MediaRecorder is not available in this environment")}};class oF extends oU{constructor(e,t){let i,n;if(!oj)throw Error("MediaRecorder is not available in this environment");super(new MediaStream([e.mediaStreamTrack]),t);const a=()=>{this.removeEventListener("dataavailable",i),this.removeEventListener("stop",a),this.removeEventListener("error",r),null==n||n.close(),n=void 0},r=e=>{null==n||n.error(e),this.removeEventListener("dataavailable",i),this.removeEventListener("stop",a),this.removeEventListener("error",r),n=void 0};this.byteStream=new ReadableStream({start:e=>{n=e,i=t=>aD(this,void 0,void 0,function*(){let i;if(t.data.arrayBuffer)i=new Uint8Array((yield t.data.arrayBuffer()));else if(t.data.byteArray)i=t.data.byteArray;else throw Error("no data available!");void 0!==n&&e.enqueue(i)}),this.addEventListener("dataavailable",i)},cancel:()=>{a()}}),this.addEventListener("stop",a),this.addEventListener("error",r)}}class oB extends sa{get sender(){return this._sender}set sender(e){this._sender=e}get constraints(){return this._constraints}get hasPreConnectBuffer(){return!!this.localTrackRecorder}constructor(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=arguments.length>4?arguments[4]:void 0;super(e,t,a),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=s1(()=>aD(this,void 0,void 0,function*(){yield this.pauseUpstream()}),5e3),this.handleTrackUnmuteEvent=()=>aD(this,void 0,void 0,function*(){this.debouncedTrackMuteHandler.cancel("unmute"),yield this.resumeUpstream()}),this.handleEnded=()=>
1{this.isInBackground&&(this.reacquireTrack=!0),this._mediaStreamTrack.removeEventListener("mute",this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener("unmute",this.handleTrackUnmuteEvent),this.emit(ef.Ended,this)},this.reacquireTrack=!1,this.providedByUser=n,this.muteLock=new e2,this.pauseUpstreamLock=new e2,this.trackChangeLock=new e2,this.trackChangeLock.lock().then(t=>aD(this,void 0,void 0,function*(){try{yield this.setMediaStreamTrack(e,!0)}finally{t()}})),this._constraints=e.getConstraints(),i&&(this._constraints=i)}get id(){return this._mediaStreamTrack.id}get dimensions(){if(this.kind!==sa.Kind.Video)return;let{width:e,height:t}=this._mediaStreamTrack.getSettings();if(e&&t)return{width:e,height:t}}get isUpstreamPaused(){return this._isUpstreamPaused}get isUserProvided(){return this.providedByUser}get mediaStreamTrack(){var e,t;return null!=(t=null==(e=this.processor)?void 0:e.processedTrack)?t:this._mediaStreamTrack}get isLocal(){return!0}getSourceTrackSettings(){return this._mediaStreamTrack.getSettings()}setMediaStreamTrack(e,t,i){return aD(this,void 0,void 0,function*(){var n;let a;if(e!==this._mediaStreamTrack||t){if(this._mediaStreamTrack&&(this.attachedElements.forEach(e=>{ss(this._mediaStreamTrack,e)}),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),"unknown"===this.kind)throw TypeError("cannot set processor on track of unknown kind");this.processorElement&&(sr(e,this.processorElement),this.processorElement.muted=!0),yield this.processor.restart({track:e,kind:this.kind,element:this.processorElement,localTrack:this}),a=this.processor.processedTrack}this.sender&&(null==(n=this.sender.transport)?void 0:n.state)!=="closed"&&(yield this.sender.replaceTrack(null!=a?a:e)),this.providedByUser||this._mediaStreamTrack===e||this._mediaStreamTrack.stop(),this._mediaStreamTrack=e,e&&(this._mediaStreamTrack.enabled=!!i||!this.isMuted,yield this.resumeUpstream(),this.attachedElements.forEach(t=>{sr(null!=a?a:e,t)}))}})}waitForDimensions(){return aD(this,arguments,void 0,function(){var e=this;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e3;return function*(){var i;if(e.kind===sa.Kind.Audio)throw Error("cannot get dimensions for audio tracks");(null==(i=rM())?void 0:i.os)==="iOS"&&(yield sc(10));let n=Date.now();for(;Date.now()-n<t;){let t=e.dimensions;if(t)return t;yield sc(50)}throw new rq("unable to get track dimensions after timeout")}()})}setDeviceId(e){return aD(this,void 0,void 0,function*(){return this._constraints.deviceId===e&&this._mediaStreamTrack.getSettings().deviceId===sA(e)||((this._constraints.deviceId=e,this.isMuted)?(this.pendingDeviceChange=!0,!0):(yield this.restartTrack(),sA(e)===this._mediaStreamTrack.getSettings().deviceId))})}getDeviceId(){return aD(this,arguments,void 0,function(){var e=this;let t=!(arguments.length>0)||void 0===arguments[0]||arguments[0];return function*(){if(e.source===sa.Source.ScreenShare)return;let{deviceId:i,groupId:n}=e._mediaStreamTrack.getSettings(),a=e.kind===sa.Kind.Audio?"audioinput":"videoinput";return t?on.getInstance().normalizeDeviceId(a,i,n):i}()})}mute(){return aD(this,void 0,void 0,function*(){return this.setTrackMuted(!0),this})}unmute(){return aD(this,void 0,void 0,function*(){return this.setTrackMuted(!1),this})}replaceTrack(e,t){return aD(this,void 0,void 0,function*(){let i=yield this.trackChangeLock.lock();try{let i,n;if(!this.sender)throw new rq("unable to replace an unpublished track");"boolean"==typeof t?i=t:void 0!==t&&(i=t.userProvidedTrack,n=t.stopProcessor),this.providedByUser=null==i||i,this.log.debug("replace MediaStreamTrack",this.logContext),yield this.setMediaStreamTrack(e),n&&this.processor&&(yield this.internalStopProcessor())}finally{i()}return yield this.onSenderTrackSwapped(),this})}onSenderTrackSwapped(){return aD(this,void 0,void 0,function*(){})}restart(e,t){return aD(this,void 0,void 0,function*(){this.manuallyStopped=!1;let i=yield this.trackChangeLock.lock();try{e||(e=this._constraints);let{deviceId:i,facingMode:n}=e,a=function(e,t){var i={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(i[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var a=0,n=Object.getOwnPropertySymbols(e);a<n.length;a++)0>t.indexOf(n[a])&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(i[n[a]]=e[n[a]]);return i}(e,["deviceId","facingMode"]);this.log.debug("restarting track with constraints",Object.assign(Object.assign({},this.logContext),{constraints:e}));let r={audio:!1,video:!1};this.kind===sa.Kind.Video?r.video=!i&&!n||{deviceId:i,facingMode:n}:r.audio=!i||Object.assign({deviceId:i}
1,a),this.attachedElements.forEach(e=>{ss(this.mediaStreamTrack,e)}),this._mediaStreamTrack.removeEventListener("ended",this.handleEnded),this._mediaStreamTrack.stop();let s=(yield navigator.mediaDevices.getUserMedia(r)).getTracks()[0];return this.kind===sa.Kind.Video&&(yield s.applyConstraints(a)),s.addEventListener("ended",this.handleEnded),this.log.debug("re-acquired MediaStreamTrack",this.logContext),yield this.setMediaStreamTrack(s,!1,t),this._constraints=e,this.pendingDeviceChange=!1,this.emit(ef.Restarted,this),this.manuallyStopped&&(this.log.warn("track was stopped during a restart, stopping restarted track",this.logContext),this.stop()),this}finally{i()}})}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?ef.Muted:ef.Unmuted,this))}get needsReAcquisition(){return"live"!==this._mediaStreamTrack.readyState||this._mediaStreamTrack.muted||!this._mediaStreamTrack.enabled||this.reacquireTrack}handleAppVisibilityChanged(){let e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return aD(this,void 0,void 0,function*(){yield e.handleAppVisibilityChanged.call(this),sv()&&(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),null==(e=this.processor)||e.destroy(),this.processor=void 0}pauseUpstream(){return aD(this,void 0,void 0,function*(){var e;let t=yield this.pauseUpstreamLock.lock();try{if(!0===this._isUpstreamPaused)return;if(!this.sender)return void this.log.warn("unable to pause upstream for an unpublished track",this.logContext);this._isUpstreamPaused=!0,this.emit(ef.UpstreamPaused,this);let t=rM();if((null==t?void 0:t.name)==="Safari"&&0>sx(t.version,"12.0"))throw new rB("pauseUpstream is not supported on Safari < 12.");(null==(e=this.sender.transport)?void 0:e.state)!=="closed"&&(yield this.sender.replaceTrack(null))}finally{t()}})}resumeUpstream(){return aD(this,void 0,void 0,function*(){var e;let t=yield this.pauseUpstreamLock.lock();try{if(!1===this._isUpstreamPaused)return;if(!this.sender)return void this.log.warn("unable to resume upstream for an unpublished track",this.logContext);this._isUpstreamPaused=!1,this.emit(ef.UpstreamResumed,this),(null==(e=this.sender.transport)?void 0:e.state)!=="closed"&&(yield this.sender.replaceTrack(this.mediaStreamTrack))}finally{t()}})}getRTCStatsReport(){return aD(this,void 0,void 0,function*(){var e;if(null==(e=this.sender)?void 0:e.getStats)return yield this.sender.getStats()})}setProcessor(e){return aD(this,arguments,void 0,function(e){var t=this;let i=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return function*(){var n;let a=yield t.trackChangeLock.lock();try{t.log.debug("setting up processor",t.logContext);let a=document.createElement(t.kind),r={kind:t.kind,track:t._mediaStreamTrack,element:a,audioContext:t.audioContext,localTrack:t};if(yield e.init(r),t.log.debug("processor initialized",t.logContext),t.processor&&(yield t.internalStopProcessor()),"unknown"===t.kind)throw TypeError("cannot set processor on track of unknown kind");if(sr(t._mediaStreamTrack,a),a.muted=!0,a.play().catch(e=>{e instanceof DOMException&&"AbortError"===e.name?(t.log.warn("failed to play processor element, retrying",Object.assign(Object.assign({},t.logContext),{error:e})),setTimeout(()=>{a.play().catch(e=>{t.log.error("failed to play processor element",Object.assign(Object.assign({},t.logContext),{err:e}))})},100)):t.log.error("failed to play processor element",Object.assign(Object.assign({},t.logContext),{error:e}))}),t.processor=e,t.processorElement=a,t.processor.processedTrack){for(let e of t.attachedElements)e!==t.processorElement&&i&&(ss(t._mediaStreamTrack,e),sr(t.processor.processedTrack,e));yield null==(n=t.sender)?void 0:n.replaceTrack(t.processor.processedTrack)}t.emit(ef.TrackProcessorUpdate,t.processor)}finally{a()}yield t.onSenderTrackSwapped()}()})}getProcessor(){return this.processor}stopProcessor(){return aD(this,arguments,void 0,function(){var e=this;let t=!(arguments.length>0)||void 0===arguments[0]||arguments[0];return function*(){let i=yield e.trackChangeLock.lock();try{yield e.internalStopProcessor(t)}finally{i()}yield e.onSenderTrackSwapped()}()})}internalStopProcessor(){return aD(this,arguments,void 0,function(){var e=this;let t=!(arguments.length>0)||void 0===arguments[0]||arguments[0];return function*(){var i,n;e.processor&&(e.log.debug("stopping processor",e.logContext),null==(i=e.processor.processedTrack)||i.stop(),yield e.processor.destroy(),e.processor=void 0,t||(null==(n=e.processorElement)||n.remove(),e.processorElement=void 0),yield e._mediaStreamTrack.applyConstraints(e._constraints),yield e.setMediaStreamTrack(e._mediaStreamTrack,!0),e.emit(ef.TrackProcessorUpdate))}()})}startPreConnectBuffer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:100;if(!oj)return void this.log.warn("MediaRecorder is not available, cannot start prec
1onnect buffer",this.logContext);if(this.localTrackRecorder)return void this.log.warn("preconnect buffer already started");{let e="audio/webm;codecs=opus";MediaRecorder.isTypeSupported(e)||(e="video/mp4"),this.localTrackRecorder=new oF(this,{mimeType:e})}this.localTrackRecorder.start(e),this.autoStopPreConnectBuffer=setTimeout(()=>{this.log.warn("preconnect buffer timed out, stopping recording automatically",this.logContext),this.stopPreConnectBuffer()},1e4)}stopPreConnectBuffer(){clearTimeout(this.autoStopPreConnectBuffer),this.localTrackRecorder&&(this.localTrackRecorder.stop(),this.localTrackRecorder=void 0)}getPreConnectBuffer(){var e;return null==(e=this.localTrackRecorder)?void 0:e.byteStream}getPreConnectBufferMimeType(){var e;return null==(e=this.localTrackRecorder)?void 0:e.mimeType}}class oq extends oB{get enhancedNoiseCancellation(){return this.isKrispNoiseFilterEnabled}constructor(e,t){let i=!(arguments.length>2)||void 0===arguments[2]||arguments[2],n=arguments.length>3?arguments[3]:void 0,a=arguments.length>4?arguments[4]:void 0;super(e,sa.Kind.Audio,t,i,a),this.stopOnMute=!1,this.isKrispNoiseFilterEnabled=!1,this.monitorSender=()=>aD(this,void 0,void 0,function*(){let e;if(!this.sender){this._currentBitrate=0;return}try{e=yield this.getSenderStats()}catch(e){this.log.error("could not get audio sender stats",Object.assign(Object.assign({},this.logContext),{error:e}));return}e&&this.prevStats&&(this._currentBitrate=s2(e,this.prevStats)),this.prevStats=e}),this.handleKrispNoiseFilterEnable=()=>{this.isKrispNoiseFilterEnabled=!0,this.log.debug("Krisp noise filter enabled",this.logContext),this.emit(ef.AudioTrackFeatureUpdate,this,ig.TF_ENHANCED_NOISE_CANCELLATION,!0)},this.handleKrispNoiseFilterDisable=()=>{this.isKrispNoiseFilterEnabled=!1,this.log.debug("Krisp noise filter disabled",this.logContext),this.emit(ef.AudioTrackFeatureUpdate,this,ig.TF_ENHANCED_NOISE_CANCELLATION,!1)},this.audioContext=n,this.checkForSilence()}mute(){let e=Object.create(null,{mute:{get:()=>super.mute}});return aD(this,void 0,void 0,function*(){let t=yield this.muteLock.lock();try{if(this.isMuted)return this.log.debug("Track already muted",this.logContext),this;return this.source===sa.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 aD(this,void 0,void 0,function*(){let t=yield this.muteLock.lock();try{if(!this.isMuted)return this.log.debug("Track already unmuted",this.logContext),this;return this.source===sa.Source.Microphone&&(this.stopOnMute||"ended"===this._mediaStreamTrack.readyState||this.pendingDeviceChange)&&!this.isUserProvided&&(this.log.debug("reacquiring mic track",this.logContext),yield this.restart(void 0,!0)),yield e.unmute.call(this),this}finally{t()}})}restartTrack(e){return aD(this,void 0,void 0,function*(){let t;if(e){let i=r5({audio:e});"boolean"!=typeof i.audio&&(t=i.audio)}yield this.restart(t)})}restart(e,t){let i=Object.create(null,{restart:{get:()=>super.restart}});return aD(this,void 0,void 0,function*(){let n=yield i.restart.call(this,e,t);return this.checkForSilence(),n})}startMonitor(){!sb()||this.monitorInterval||(this.monitorInterval=setInterval(()=>{this.monitorSender()},2e3))}setProcessor(e){return aD(this,void 0,void 0,function*(){var t;let i=yield this.trackChangeLock.lock();try{if(!sk()&&!this.audioContext)throw Error("Audio context needs to be set on LocalAudioTrack in order to enable processors");this.processor&&(yield this.internalStopProcessor());let i={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(i),this.processor=e,this.processor.processedTrack&&(yield null==(t=this.sender)?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
1(ef.TrackProcessorUpdate,this.processor)}finally{i()}})}setAudioContext(e){this.audioContext=e}getSenderStats(){return aD(this,void 0,void 0,function*(){var e;let t;if(null==(e=this.sender)?void 0:e.getStats)return(yield this.sender.getStats()).forEach(e=>{"outbound-rtp"===e.type&&(t={type:"audio",streamId:e.id,packetsSent:e.packetsSent,packetsLost:e.packetsLost,bytesSent:e.bytesSent,timestamp:e.timestamp,roundTripTime:e.roundTripTime,jitter:e.jitter})}),t})}checkForSilence(){return aD(this,void 0,void 0,function*(){let e=yield r6(this);return e&&(this.isMuted||this.log.debug("silence detected on local audio track",this.logContext),this.emit(ef.AudioSilenceDetected)),e})}}let oV=Object.values(r0),oH=Object.values(r1),oz=Object.values(r2),oW=[r0.h180,r0.h360],oG=[r1.h180,r1.h360],oK=["q","h","f"];function oJ(e,t,i,n){var a,r,s;let o,c,l=null==n?void 0:n.videoEncoding;e&&(l=null==n?void 0:n.screenShareEncoding);let d=null==n?void 0:n.simulcast,u=null==n?void 0:n.scalabilityMode,h=null==n?void 0:n.videoCodec;if(!l&&!d&&!u||!t||!i)return[{}];l||(l=function(e,t,i,n){let a=function(e,t,i){if(e)return oz;let n=t>i?t/i:i/t;return Math.abs(n-16/9)<Math.abs(n-4/3)?oV:oH}(e,t,i),{encoding:r}=a[0],s=Math.max(t,i);for(let e=0;e<a.length;e+=1){let t=a[e];if(r=t.encoding,t.width>=s)break}if(n)switch(n){case"av1":case"h265":(r=Object.assign({},r)).maxBitrate=.7*r.maxBitrate;break;case"vp9":(r=Object.assign({},r)).maxBitrate=.85*r.maxBitrate}return r}(e,t,i,h),aR.debug("using video encoding",l));let p=l.maxFramerate,m=new r$(t,i,l.maxBitrate,l.maxFramerate,l.priority);if(u&&su(h)){let e=new oZ(u),t=[];if(e.spatial>3)throw Error("unsupported scalabilityMode: ".concat(u));let i=rM();if(sf()||sk()||(null==i?void 0:i.name)==="Chrome"&&0>sx(null==i?void 0:i.version,"113")){let n="h"==e.suffix?2:3,a=((s=i)||(s=rM()),(null==s?void 0:s.name)==="Safari"&&sx(s.version,"18.3")>0||(null==s?void 0:s.os)==="iOS"&&!!(null==s?void 0:s.osVersion)&&sx(s.osVersion,"18.3")>0);for(let i=0;i<e.spatial;i+=1)t.push({rid:oK[2-i],maxBitrate:l.maxBitrate/Math.pow(n,i),maxFramerate:m.encoding.maxFramerate,scaleResolutionDownBy:a?Math.pow(2,i):void 0});t[0].scalabilityMode=u}else t.push({maxBitrate:l.maxBitrate,maxFramerate:m.encoding.maxFramerate,scalabilityMode:u});return m.encoding.priority&&(t[0].priority=m.encoding.priority,t[0].networkPriority=m.encoding.priority),aR.debug("using svc encoding",{encodings:t}),t}if(!d)return[l];if((o=e?null!=(a=oX(null==n?void 0:n.screenShareSimulcastLayers))?a:o$(e,m):null!=(r=oX(null==n?void 0:n.videoSimulcastLayers))?r:o$(e,m)).length>0){let e=o[0];o.length>1&&([,c]=o);let n=Math.max(t,i);if(n>=960&&c)return oY(t,i,[e,c,m],p);if(n>=480)return oY(t,i,[e,m],p)}return oY(t,i,[m])}function oQ(e,t,i){var n,a,r,s;if(!i.backupCodec||!0===i.backupCodec||i.backupCodec.codec===i.videoCodec)return;t!==i.backupCodec.codec&&aR.warn("requested a different codec than specified as backup",{serverRequested:t,backup:i.backupCodec.codec}),i.videoCodec=t,i.videoEncoding=i.backupCodec.encoding;let o=e.mediaStreamTrack.getSettings(),c=null!=(n=o.width)?n:null==(a=e.dimensions)?void 0:a.width,l=null!=(r=o.height)?r:null==(s=e.dimensions)?void 0:s.height;return e.source===sa.Source.ScreenShare&&i.simulcast&&(i.simulcast=!1),oJ(e.source===sa.Source.ScreenShare,c,l,i)}function o$(e,t){if(e)return[{scaleResolutionDownBy:2,fps:t.encoding.maxFramerate}].map(e=>{var i,n;return new r$(Math.floor(t.width/e.scaleResolutionDownBy),Math.floor(t.height/e.scaleResolutionDownBy),Math.max(15e4,Math.floor(t.encoding.maxBitrate/(Math.pow(e.scaleResolutionDownBy,2)*((null!=(i=t.encoding.maxFramerate)?i:30)/(null!=(n=e.fps)?n:30))))),e.fps,t.encoding.priority)});let{width:i,height:n}=t,a=i>n?i/n:n/i;return Math.abs(a-16/9)<Math.abs(a-4/3)?oW:oG}function oY(e,t,i,n){let a=[];if(i.forEach((i,r)=>{if(r>=oK.length)return;let s=Math.min(e,t),o={rid:oK[r],scaleResolutionDownBy:Math.max(1,s/Math.min(i.width,i.height)),maxBitrate:i.encoding.maxBitrate},c=n&&i.encoding.maxFramerate?Math.min(n,i.encoding.maxFramerate):i.encoding.maxFramerate;c&&(o.maxFramerate=c);let l=rM(),d=(null==l?void 0:l.name)==="Firefox"&&"iOS"!==l.os||0===r;i.encoding.priority&&d&&(o.priority=i.encoding.priority,o.networkPriority=i.encoding.priority),a.push(o)}),sk()&&"ios"===sw()){let e;a.forEach(t=>{e?t.maxFramerate&&t.maxFramerate>e&&(e=t.maxFramerate):e=t.maxFramerate});let t=!0;a.forEach(i=>
1{var n;i.maxFramerate!=e&&(t&&(t=!1,aR.info("Simulcast on iOS React-Native requires all encodings to share the same framerate.")),aR.info('Setting framerate of encoding "'.concat(null!=(n=i.rid)?n:"",'" to ').concat(e)),i.maxFramerate=e)})}return a}function oX(e){if(e)return e.sort((e,t)=>{let{encoding:i}=e,{encoding:n}=t;return i.maxBitrate>n.maxBitrate?1:i.maxBitrate<n.maxBitrate?-1:i.maxBitrate===n.maxBitrate&&i.maxFramerate&&n.maxFramerate?i.maxFramerate>n.maxFramerate?1:-1:0})}class oZ{constructor(e){const t=e.match(/^L(\d)T(\d)(h|_KEY|_KEY_SHIFT){0,1}$/);if(!t)throw 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(null!=(e=this.suffix)?e:"")}}class o0 extends oB{get sender(){return this._sender}set sender(e){this._sender=e,this.degradationPreference&&this.setDegradationPreference(this.degradationPreference)}constructor(e,t){let i=!(arguments.length>2)||void 0===arguments[2]||arguments[2],n=arguments.length>3?arguments[3]:void 0;super(e,sa.Kind.Video,t,i,n),this.simulcastCodecs=new Map,this.degradationPreference="balanced",this.isCpuConstrained=!1,this.optimizeForPerformance=!1,this.monitorSender=()=>aD(this,void 0,void 0,function*(){let e;if(!this.sender){this._currentBitrate=0;return}try{e=yield this.getSenderStats()}catch(e){this.log.error("could not get video sender stats",Object.assign(Object.assign({},this.logContext),{error:e}));return}let t=new Map(e.map(e=>[e.rid,e])),i=e.some(e=>"cpu"===e.qualityLimitationReason);if(i!==this.isCpuConstrained&&(this.isCpuConstrained=i,this.isCpuConstrained&&this.emit(ef.CpuConstrained)),this.prevStats){let e=0;t.forEach((t,i)=>{var n;let a=null==(n=this.prevStats)?void 0:n.get(i);e+=s2(t,a)}),this._currentBitrate=e}this.prevStats=t}),this.senderLock=new e2}get isSimulcast(){return!!this.sender&&!!(this.sender.getParameters().encodings.length>1)}startMonitor(e){var t;if(this.signalClient=e,!sb())return;let i=null==(t=this.sender)?void 0:t.getParameters();i&&(this.encodings=i.encodings),this.monitorInterval||(this.monitorInterval=setInterval(()=>{this.monitorSender()},2e3))}stop(){this._mediaStreamTrack.getConstraints(),this.simulcastCodecs.forEach(e=>{e.mediaStreamTrack.stop()}),super.stop()}pauseUpstream(){let e=Object.create(null,{pauseUpstream:{get:()=>super.pauseUpstream}});return aD(this,void 0,void 0,function*(){yield e.pauseUpstream.call(this);try{for(var t,i,n,a,r,s,o=!0,c=aO(this.simulcastCodecs.values());!(t=(s=yield c.next()).done);o=!0)a=s.value,o=!1,yield null==(r=a.sender)?void 0:r.replaceTrack(null)}catch(e){i={error:e}}finally{try{!o&&!t&&(n=c.return)&&(yield n.call(c))}finally{if(i)throw i.error}}})}resumeUpstream(){let e=Object.create(null,{resumeUpstream:{get:()=>super.resumeUpstream}});return aD(this,void 0,void 0,function*(){yield e.resumeUpstream.call(this);try{for(var t,i,n,a,r,s,o=!0,c=aO(this.simulcastCodecs.values());!(t=(s=yield c.next()).done);o=!0)a=s.value,o=!1,yield null==(r=a.sender)?void 0:r.replaceTrack(a.mediaStreamTrack)}catch(e){i={error:e}}finally{try{!o&&!t&&(n=c.return)&&(yield n.call(c))}finally{if(i)throw i.error}}})}mute(){let e=Object.create(null,{mute:{get:()=>super.mute}});return aD(this,void 0,void 0,function*(){let t=yield this.muteLock.lock();try{if(this.isMuted)return this.log.debug("Track already muted",this.logContext),this;return this.source!==sa.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 aD(this,void 0,void 0,function*(){let t=yield this.muteLock.lock();try{if(!this.isMuted)return this.log.debug("Track already unmuted",this.logContext),this;return this.source!==sa.Source.Camera||this.isUserProvided||(this.log.debug("reacquiring camera track",this.logContext),yield this.restart(void 0,!0)),yield e.unmute.call(this),this}finally{t()}})}setTrackMuted(e){for(let t of(super.setTrackMuted(e),this.simulcastCodecs.values())
1)t.mediaStreamTrack.enabled=!e}getSenderStats(){return aD(this,void 0,void 0,function*(){var e;if(!(null==(e=this.sender)?void 0:e.getStats))return[];let t=[],i=yield this.sender.getStats();return i.forEach(e=>{var n;if("outbound-rtp"===e.type){let a={type:"video",streamId:e.id,frameHeight:e.frameHeight,frameWidth:e.frameWidth,framesPerSecond:e.framesPerSecond,framesSent:e.framesSent,firCount:e.firCount,pliCount:e.pliCount,nackCount:e.nackCount,packetsSent:e.packetsSent,bytesSent:e.bytesSent,qualityLimitationReason:e.qualityLimitationReason,qualityLimitationDurations:e.qualityLimitationDurations,qualityLimitationResolutionChanges:e.qualityLimitationResolutionChanges,rid:null!=(n=e.rid)?n:e.id,retransmittedPacketsSent:e.retransmittedPacketsSent,targetBitrate:e.targetBitrate,timestamp:e.timestamp},r=i.get(e.remoteId);r&&(a.jitter=r.jitter,a.packetsLost=r.packetsLost,a.roundTripTime=r.roundTripTime),t.push(a)}}),t.sort((e,t)=>{var i,n;return(null!=(i=t.frameWidth)?i:0)-(null!=(n=e.frameWidth)?n:0)}),t})}setPublishingQuality(e){let t=[];for(let i=ek.LOW;i<=ek.HIGH;i+=1)t.push(new n7({quality:i,enabled:i<=e}));this.log.debug("setting publishing quality. max quality ".concat(e),this.logContext),this.setPublishingLayers(su(this.codec),t)}restartTrack(e){return aD(this,void 0,void 0,function*(){let t;if(e){let i=r5({video:e});"boolean"!=typeof i.video&&(t=i.video)}yield this.restart(t),this.isCpuConstrained=!1;try{for(var i,n,a,r,s,o,c=!0,l=aO(this.simulcastCodecs.values());!(i=(o=yield l.next()).done);c=!0)r=o.value,c=!1,r.sender&&(null==(s=r.sender.transport)?void 0:s.state)!=="closed"&&(r.mediaStreamTrack=this.mediaStreamTrack.clone(),yield r.sender.replaceTrack(r.mediaStreamTrack))}catch(e){n={error:e}}finally{try{!c&&!i&&(a=l.return)&&(yield a.call(l))}finally{if(n)throw n.error}}yield this.onSenderTrackSwapped()})}onSenderTrackSwapped(){return aD(this,void 0,void 0,function*(){yield this.refreshSen
1derEncodings()})}refreshSenderEncodings(){return aD(this,void 0,void 0,function*(){var e;if(!this.sender||!this.publishOptions||this.optimizeForPerformance)return;let t=yield this.senderLock.lock();try{let t;try{t=yield this.waitForDimensions()}catch(e){this.log.warn("could not determine new track dimensions, skipping encoding recompute",Object.assign(Object.assign({},this.logContext),{error:e}));return}if(this.lastEncodedDimensions&&this.lastEncodedDimensions.width===t.width&&this.lastEncodedDimensions.height===t.height)return;let i=this.source===sa.Source.ScreenShare,n=oJ(i,t.width,t.height,Object.assign({},this.publishOptions));for(let[i,a]of(yield this.applyEncodingsToSender(this.sender,n),this.encodings=n,this.lastEncodedDimensions=t,this.simulcastCodecs)){if(!a.sender||(null==(e=a.sender.transport)?void 0:e.state)==="closed"||!rZ(i))continue;let t=Object.assign({},this.publishOptions),n=oQ(this,i,t);n&&(yield this.applyEncodingsToSender(a.sender,n),a.encodings=n)}}catch(e){this.log.warn("failed to apply recomputed encodings",Object.assign(Object.assign({},this.logContext),{error:e}))}finally{t()}})}applyEncodingsToSender(e,t){return aD(this,void 0,void 0,function*(){let i=e.getParameters();
1i.encodings&&i.encodings.length===t.length&&(i.encodings.forEach((e,i)=>{if(!1===e.active)return;let n=t[i];void 0!==n.scaleResolutionDownBy&&(e.scaleResolutionDownBy=n.scaleResolutionDownBy),void 0!==n.maxBitrate&&(e.maxBitrate=n.maxBitrate),void 0!==n.maxFramerate&&(e.maxFramerate=n.maxFramerate),void 0!==n.priority&&(e.priority=n.priority,e.networkPriority=n.priority)}),this.log.debug("updating sender encodings after track restart",Object.assign(Object.assign({},this.logContext),{encodings:i.encodings})),yield e.setParameters(i))})}setProcessor(e){let t=Object.create(null,{setProcessor:{get:()=>super.setProcessor}});return aD(this,arguments,void 0,function(e){var i=this;let n=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return function*(){if(yield t.setProcessor.call(i,e,n),null==(c=i.processor)?void 0:c.processedTrack)try{for(var a,r,s,o,c,l,d,u=!0,h=aO(i.simulcastCodecs.values());!(a=(d=yield h.next()).done);u=!0)o=d.value,u=!1,yield null==(l=o.sender)?void 0:l.replaceTrack(i.processor.processedTrack)}catch(e){r={error:e}}finally{try{!u&&!a&&(s=h.return)&&(yield s.call(h))}finally{if(r)throw r.error}}}()})}setDegradationPreference(e){return aD(this,void 0,void 0,function*(){if(this.degradationPreference=e,this.sender)try{this.log.debug("setting degradationPreference to ".concat(e),this.logContext);let t=this.sender.getParameters();t.degradationPreference=e,this.sender.setParameters(t)}catch(e){this.log.warn("failed to set degradationPreference",Object.assign({error:e},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 i={codec:e,mediaStreamTrack:this.mediaStreamTrack.clone(),sender:void 0,encodings:t};return this.simulcastCodecs.set(e,i),i}setSimulcastTrackSender(e,t){let i=this.simulcastCodecs.get(e);i&&(i.sender=t,setTimeout(()=>{this.subscribedCodecs&&this.setPublishingCodecs(this.subscribedCodecs)},5e3))}setPublishingCodecs(e){return aD(this,void 0,void 0,function*(){var t,i,n,a,r,s,o;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(su(e[0].codec),e[0].qualities),[];this.subscribedCodecs=e;let c=[];try{for(t=!0,i=aO(e);!(a=(n=yield i.next()).done);t=!0)if(o=n.value,t=!1,this.codec&&this.codec!==o.codec){let e=this.simulcastCodecs.get(o.codec);if(this.log.debug("try setPublishingCodec for ".concat(o.codec),Object.assign(Object.assign({},this.logContext),{simulcastCodecInfo:e})),e&&e.sender)e.encodings&&(this.log.debug("try setPublishingLayersForSender ".concat(o.codec),this.logContext),yield o1(e.sender,e.encodings,o.qualities,this.senderLock,su(o.codec),this.log,this.logContext));else for(let e of o.qualities)if(e.enabled){c.push(o.codec);break}}else yield this.setPublishingLayers(su(o.codec),o.qualities)}catch(e){r={error:e}}finally{try{!t&&!a&&(s=i.return)&&(yield s.call(i))}finally{if(r)throw r.error}}return c})}setPublishingLayers(e,t){return aD(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 o1(this.sender,this.encodings,t,this.senderLock,e,this.log,this.logContext)))})}prioritizePerformance(){return aD(this,void 0,void 0,function*(){if(!this.sender)throw Error("sender not found");let e=yield this.senderLock.lock();try{this.optimizeForPerformance=!0;let e=this.sender.getParameters();e.encodings=e.encodings.map((e,t)=>{var i;return Object.assign(Object.assign({},e),{active:0===t,scaleResolutionDownBy:Math.max(1,Math.ceil((null!=(i=this.mediaStreamTrack.getSettings().height)?i:360)/360)),scalabilityMode:0===t&&su(this.codec)?"L1T3":void 0,maxFramerate:15*(0===t),maxBitrate:0===t?e.maxBitrate:0})}),this.log.debug("setting performance optimised encodings",Object.assign(Object.assign({},this.logContext),{encodings:e.encodings})),this.encodings=e.encodings,yield this.sender.setParameters(e)}catch(e){this.log.error("failed to set performance optimised encodings",Object.assign(Object.assign({},this.logContext),{error:e})),this.optimizeForPerformance=!1}finally{e()}})}handleAppVisibilityChanged(){let e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return aD(this,void 0,void 0,function*(){yield e.handleAppVisibilityChanged.call(this),sv()&&this.isInBackgroun
1d&&this.source===sa.Source.Camera&&(this._mediaStreamTrack.enabled=!1)})}}function o1(e,t,i,n,a,r,s){return aD(this,void 0,void 0,function*(){let o=yield n.lock();r.debug("setPublishingLayersForSender",Object.assign(Object.assign({},s),{sender:e,qualities:i,senderEncodings:t}));try{let n=e.getParameters(),{encodings:o}=n;if(!o)return;if(o.length!==t.length)return void r.warn("cannot set publishing layers, encodings mismatch",Object.assign(Object.assign({},s),{encodings:o,senderEncodings:t}));let c=!1;a&&i.some(e=>e.enabled)&&i.forEach(e=>e.enabled=!0),o.forEach((e,n)=>{var a;let o=null!=(a=e.rid)?a:"";""===o&&(o="q");let l=o2(o),d=i.find(e=>e.quality===l);d&&e.active!==d.enabled&&(c=!0,e.active=d.enabled,r.debug("setting layer ".concat(d.quality," to ").concat(e.active?"enabled":"disabled"),s),sp()&&(d.enabled?(e.scaleResolutionDownBy=t[n].scaleResolutionDownBy,e.maxBitrate=t[n].maxBitrate,e.maxFrameRate=t[n].maxFrameRate):(e.scaleResolutionDownBy=4,e.maxBitrate=10,e.maxFrameRate=2)))}),c&&(n.encodings=o,r.debug("setting encodings",Object.assign(Object.assign({},s),{encodings:n.encodings})),yield e.setParameters(n))}finally{o()}})}function o2(e){switch(e){case"f":default:return ek.HIGH;case"h":return ek.MEDIUM;case"q":return ek.LOW}}function o3(e,t,i,n){if(!i)return[new iN({quality:ek.HIGH,width:e,height:t,bitrate:0,ssrc:0})];if(n){let n=new oZ(i[0].scalabilityMode),a=[],r="h"==n.suffix?1.5:2,s="h"==n.suffix?2:3;for(let o=0;o<n.spatial;o+=1)a.push(new iN({quality:Math.min(ek.HIGH,n.spatial-1)-o,width:Math.ceil(e/Math.pow(r,o)),height:Math.ceil(t/Math.pow(r,o)),bitrate:i[0].maxBitrate?Math.ceil(i[0].maxBitrate/Math.pow(s,o)):0,ssrc:0}));return a}return i.map(i=>{var n,a,r;let s=null!=(n=i.scaleResolutionDownBy)?n:1;return new iN({quality:o2(null!=(a=i.rid)?a:""),width:Math.ceil(e/s),height:Math.ceil(t/s),bitrate:null!=(r=i.maxBitrate)?r:0,ssrc:0})})}let o4="_lossy",o5="_reliable",o6="_data_track",o8="leave-reconnect";(L=eO||(eO={}))[L.New=0]="New",L[L.Connected=1]="Connected",L[L.Disconnected=2]="Disconnected",L[L.Reconnecting=3]="Reconnecting",L[L.Closed=4]="Closed",(j=eA||(eA={}))[j.RELIABLE=0]="RELIABLE",j[j.LOSSY=1]="LOSSY",j[j.DATA_TRACK_LOSSY=2]="DATA_TRACK_LOSSY";class o9 extends aL.EventEmitter{get isClosed(){return this._isClosed}get isNewlyCreated(){return this._isNewlyCreated}get pendingReconnect(){return!!this.reconnectTimeout}constructor(e){var t;super(),this.options=e,this.rtcConfig={},this.peerConnectionTimeout=oA.peerConnectionTimeout,this.fullReconnectOnNext=!1,this.latestRemoteOfferId=0,this.subscriberPrimary=!1,this.pcState=eO.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=aR,this.reliableDataSequence=1,this.reliableMessageBuffer=new ob,this.reliableReceivedState=new ok(3e4),this.lossyDataStatCurrentBytes=0,this.lossyDataStatByterate=0,this.lossyDataDropCount=0,this.midToTrackId={},this.isWaitingForNetworkReconnect=!1,this.bufferStatusLowClosingFuture=new sO,this.handleDataChannel=e=>aD(this,[e],void 0,function(e){var t=this;let{channel:i}=e;return function*(){let e;if(i){if(i.label===o5)t.reliableDCSub=i,e=t.handleDataMessage;else if(i.label===o4)t.lossyDCSub=i,e=t.handleDataMessage;else{if(i.label!==o6)return;t.dataTrackDCSub=i,e=t.handleDataTrackMessage}t.log.debug("on data channel ".concat(i.id,", ").concat(i.label)),i.onmessage=e}}()}),this.handleDataMessage=e=>aD(this,void 0,void 0,function*(){var t,i,n,a,r;let s=yield this.dataProcessLock.lock();try{let s;if(e.data instanceof ArrayBuffer)s=e.data;else{if(!(e.data instanceof Blob))return void this.log.error("unsupported data type",{data:e.data});s=yield e.data.arrayBuffer()}let o=iD.fromBinary(new Uint8Array(s));if(o.sequence>0&&""!==o.participantSid){let e=this.reliableReceivedState.get(o.participantSid);if(e&&o.sequence<=e)return;this.reliableReceivedState.set(o.participantSid,o.sequence)}
1if((null==(t=o.value)?void 0:t.case)==="speaker")this.emit(eg.ActiveSpeakersUpdate,o.value.value.speakers);else if((null==(i=o.value)?void 0:i.case)==="encryptedPacket"){if(!this.e2eeManager)return void this.log.error("Received encrypted packet but E2EE not set up");let e=yield null==(n=this.e2eeManager)?void 0:n.handleEncryptedData(o.value.value.encryptedValue,o.value.value.iv,o.participantIdentity,o.value.value.keyIndex),t=iA.fromBinary(e.payload),i=new iD({value:t.value,participantIdentity:o.participantIdentity,participantSid:o.participantSid});(null==(a=i.value)?void 0:a.case)==="user"&&o7(i,i.value.value),this.emit(eg.DataPacketReceived,i,o.value.value.encryptionType)}else(null==(r=o.value)?void 0:r.case)==="user"&&o7(o,o.value.value),this.emit(eg.DataPacketReceived,o,ix.NONE)}finally{s()}}),this.handleDataTrackMessage=e=>aD(this,void 0,void 0,function*(){let t;if(e.data instanceof ArrayBuffer)t=e.data;else{if(!(e.data instanceof Blob))return void this.log.error("unsupported data type",{data:e.data});t=yield e.data.arrayBuffer()}this.emit("dataTrackPacketReceived",new Uint8Array(t))}),this.handleDataError=e=>{let t=0===e.currentTarget.maxRetransmits?"lossy":"reliable";if(e instanceof ErrorEvent&&e.error){let{error:i}=e.error;this.log.error("DataChannel error on ".concat(t,": ").concat(e.message),{error:i})}else this.log.error("Unknown DataChannel error on ".concat(t),{event:e})},this.handleBufferedAmountLow=e=>{this.updateAndEmitDCBufferStatus(e)},this.handleDisconnect=(e,t)=>{if(this._isClosed)return;this.log.warn("".concat(e," disconnected")),0===this.reconnectAttempts&&(this.reconnectStart=Date.now());let i=e=>{this.log.warn("could not recover connection after ".concat(this.reconnectAttempts," attempts, ").concat(e,"ms. giving up")),this.emit(eg.Disconnected),this.close()},n=Date.now()-this.reconnectStart,a=this.getNextRetryDelay({elapsedMs:n,retryCount:this.reconnectAttempts});null===a?i(n):(e===o8&&(a=0),this.log.debug("reconnecting in ".concat(a,"ms")),this.clearReconnectTimeout(),this.token&&this.emit(eg.TokenRefreshed,this.token),this.reconnectTimeout=rQ.setTimeout(()=>this.attemptReconnect(t).finally(()=>this.reconnectTimeout=void 0),a))},this.waitForRestarted=()=>new Promise((e,t)=>{this.pcState===eO.Connected&&e();let i=()=>{this.off(eg.Disconnected,n),e()},n=()=>{this.off(eg.Restarted,i),t()};this.once(eg.Restarted,i),this.once(eg.Disconnected,n)}),this.updateAndEmitDCBufferStatus=e=>{if(e===eA.RELIABLE){let t=this.dataChannelForKind(e);t&&this.reliableMessageBuffer.alignBufferedAmount(t.bufferedAmount)}let t=this.isBufferStatusLow(e);void 0!==t&&t!==this.dcBufferStatus.get(e)&&(this.dcBufferStatus.set(e,t),this.emit(eg.DCBufferStatusChanged,t,e))},this.isBufferStatusLow=e=>{let t=this.dataChannelForKind(e);if(t)return t.bufferedAmount<=t.bufferedAmountLowThreshold},this.handleBrowserOnLine=()=>aD(this,void 0,void 0,function*(){!this.url||(yield fetch(sL(this.url),{method:"HEAD"}).then(e=>e.ok).catch(()=>!1))&&(this.log.info("detected network reconnected"),(this.client.currentState===eP.RECONNECTING||this.isWaitingForNetworkReconnect&&this.client.currentState===eP.CONNECTED)&&(this.clearReconnectTimeout(),this.attemptReconnect(ip.RR_SIGNAL_DISCONNECTED),this.isWaitingForNetworkReconnect=!1))}),this.handleBrowserOffline=()=>aD(this,void 0,void 0,function*(){if(this.url)try{yield Promise.race([fetch(sL(this.url),{method:"HEAD"}),sc(4e3).then(()=>Promise.reject())])}catch(e){!1===window.navigator.onLine&&(this.log.info("detected network interruption"),this.isWaitingForNetworkReconnect=!0)}}),this.log=aI(null!=(t=e.loggerName)?t:es.Engine,()=>this.logContext),this.loggerOptions={loggerName:e.loggerName,loggerContextCb:()=>this.logContext},this.client=new og(void 0,this.loggerOptions),this.client.signalLatency=this.options.expSignalLatency,this.reconnectPolicy=this.options.reconnectPolicy,this.closingLock=new e2,this.dataProcessLock=new e2,this.dcBufferStatus=new Map([[eA.RELIABLE,!0],[eA.LOSSY,!0],[eA.DATA_TRACK_LOSSY,!0]]),this.client.onParticipantUpdate=e=>this.emit(eg.ParticipantUpdate,e),this.client.onConnectionQuality=e=>
1this.emit(eg.ConnectionQualityUpdate,e),this.client.onRoomUpdate=e=>this.emit(eg.RoomUpdate,e),this.client.onSubscriptionError=e=>this.emit(eg.SubscriptionError,e),this.client.onSubscriptionPermissionUpdate=e=>this.emit(eg.SubscriptionPermissionUpdate,e),this.client.onSpeakersChanged=e=>this.emit(eg.SpeakersChanged,e),this.client.onStreamStateUpdate=e=>this.emit(eg.StreamStateChanged,e),this.client.onRequestResponse=e=>this.emit(eg.SignalRequestResponse,e),this.client.onParticipantUpdate=e=>this.emit(eg.ParticipantUpdate,e),this.client.onJoined=e=>this.emit(eg.Joined,e),this.on(eg.Closing,()=>{var e,t;null==(t=(e=this.bufferStatusLowClosingFuture).reject)||t.call(e,new rH("engine closed"))}),this.bufferStatusLowClosingFuture.promise.catch(()=>{})}get logContext(){var e,t,i,n,a,r;return{room:null==(t=null==(e=this.latestJoinResponse)?void 0:e.room)?void 0:t.name,roomID:null==(n=null==(i=this.latestJoinResponse)?void 0:i.room)?void 0:n.sid,participant:null==(r=null==(a=this.latestJoinResponse)?void 0:a.participant)?void 0:r.identity,participantID:this.participantSid}}join(e,t,i,n){return aD(this,arguments,void 0,function(e,t,i,n){var a=this;let r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return function*(){var s,o,c;a._isNewlyCreated=!1,a.url=e,a.token=t,a.signalOpts=i,a.maxJoinAttempts=i.maxRetries;try{let l;if(a.joinAttempts+=1,a.setupSignalClientCallbacks(),!r&&sK()){a.pcManager||(yield a.configure(),a.createDataChannels(),a.addMediaSections(3,3));let e=yield null==(s=a.pcManager)?void 0:s.publisher.createInitialOffer();e&&(l=ov(e.offer,e.offerId))}if(null==n?void 0:n.aborted)throw rF.cancelled("Connection aborted");if(!r&&a.shouldFailOnV1Path)throw a.shouldFailOnV1Path=!1,rF.serviceNotFound("Simulated v1 path failure","v0-rtc");let d=yield a.client.join(e,t,i,n,r,l);a._isClosed=!1,a.latestJoinResponse=d,a.participantSid=null==(o=d.participant)?void 0:o.sid,a.subscriberPrimary=d.subscriberPrimary,!r&&sK()?null==(c=a.pcManager)||c.updateConfiguration(a.makeRTCConfiguration(d)):(a.pcManager||(yield a.configure(d,!r)),(!a.subscriberPrimary||d.fastPublish)&&a.negotiate().catch(e=>{a.log.error(e)})),a.registerOnLineListener(),a.clientConfiguration=d.clientConfiguration,a.emit(eg.SignalConnected,d);let u=d.serverInfo;return u||(u={version:d.serverVersion,region:d.serverRegion}),a.log.info("connected to Livekit Server ".concat(Object.entries(u).map(e=>{let[t,i]=e;return"".concat(t,": ").concat(i)}).join(", "))),{joinResponse:d,serverInfo:u}}catch(s){if(s instanceof rF){if(s.reason===ed.ServerUnreachable){if(a.log.warn("Couldn't connect to server, attempt ".concat(a.joinAttempts," of ").concat(a.maxJoinAttempts)),a.joinAttempts<a.maxJoinAttempts)return a.join(e,t,i,n,r)}else if(s.reason===ed.ServiceNotFound)return a.log.warn("Initial connection failed: ".concat(s.message," â Retrying")),a.pcManager&&(a.pcManager.onStateChange=void 0,yield a.cleanupPeerConnections()),a.join(e,t,i,n,!0)}throw s}}()})}close(){return aD(this,void 0,void 0,function*(){let e=yield this.closingLock.lock();if(this.isClosed)return void e();try{this._isClosed=!0,this.joinAttempts=0,this.emit(eg.Closing),this.removeAllListeners(),this.deregisterOnLineListener(),this.clearPendingReconnect(),this.cleanupLossyDataStats(),yield this.cleanupPeerConnections(),yield this.cleanupClient()}finally{e()}})}cleanupPeerConnections(){return aD(this,void 0,void 0,function*(){var e;yield null==(e=this.pcManager)?void 0:e.close(),this.pcManager=void 0;let t=e=>{e&&(e.close(),e.onbufferedamountlow=null,e.onclose=null,e.onclosing=null,e.onerror=null,e.onmessage=null,e.onopen=null)};t(this.lossyDC),t(this.lossyDCSub),t(this.reliableDC),t(this.reliableDCSub),t(this.dataTrackDC),t(this.dataTrackDCSub),this.lossyDC=void 0,this.lossyDCSub=void 0,this.reliableDC=void 0,this.reliableDCSub=void 0,this.dataTrackDC=void 0,this.dataTrackDCSub=void 0,this.reliableMessageBuffer=new ob,this.reliableDataSequence=1,this.reliableReceivedState.clear()})}cleanupLossyDataStats(){this.lossyDataStatByterate=0,this.lossyDataStatCurrentBytes=0,this.lossyDataStatInterval&&(clearInterval(this.lossyDataStatInterval),this.lossyDataStatInterval=void 0),this.lossyDataDropCount=0}cleanupClient(){return aD(this,void 0,void 0,function*(){for(let e of(yield this.client.close(),this.client.resetCallbacks(),Object.keys(this.pendingTrackResolvers)))this.pendingTrackResolvers[e].reject();this.pendingTrackResolvers={}})}addTrack(e){if(this.pendingTrackResolvers[e.cid])throw new rq("a track with the same ID has already been published");return new Promise((t,i)=>{let n=setTimeout(()=>{delete this.pendingTrackResolvers[e.cid],i(rF.timeout("publication of local track timed out, no response from server"))},1e4);this.pendingTrackResolvers[e.cid]={resolve:e=>{clearTimeout(n),t(e)},reject:()=>{clearTimeout(n),i(Error("Cancelled publication by calling unpublish"))}},this.client.sendAddTrack(e)})}removeTrack(e){if(e.track&&this.pendingTrackResolvers[e.track.id]){let{reject:t}=this.pendingTrackResolvers[e.track.id];t&&t(),delete this.pendingTrackResolvers[e.track.id]}try{return this.pcManager.removeTrack(e),!0}catch(e){this.log.warn("failed to remove track",{error:e})}return!1}updateMuteStatus(e,t){this.client.sendMuteTrack(e,t)}get dataSubscriberReadyState(){var e;return null==(e=this.reliableDCSub)?void 0:e.readyState}getConnectedServerAddress(){return aD(this,void 0,void 0,function*(){var e;return null==(e=this.pcManager)?void 0:e.getConnectedAddress()})}setRegionStrategy(e){this.regionStrategy=e}configure(e,t){return aD(this,void 0,void 0,function*(){var i;if(!this.pcManager||this.pcManager.currentState===eM.NEW){if(e){this.participantSid=null==(i=e.participant)?void 0:i.sid;let n=this.makeRTCConfiguration(e);this.pcManager=new oL(t?"publisher-only":e.subscriberPrimary?"subscriber-primary":"publisher-primary",this.loggerOptions,n)}else{let e=this.makeRTCConfiguration();this.pcManager=new oL("publisher-only",this.loggerOptions,e)}
1this.emit(eg.TransportsCreated,this.pcManager.publisher,this.pcManager.subscriber),this.pcManager.onIceCandidate=(e,t)=>{this.client.sendIceCandidate(e,t)},this.pcManager.onPublisherOffer=(e,t)=>{this.client.sendOffer(e,t)},this.pcManager.onDataChannel=this.handleDataChannel,this.pcManager.onStateChange=(e,t,i)=>aD(this,void 0,void 0,function*(){if(this.log.debug("primary PC state changed ".concat(e)),["closed","disconnected","failed"].includes(t)&&(this.publisherConnectionPromise=void 0),e===eM.CONNECTED){let e=this.pcState===eO.New;this.pcState=eO.Connected,e&&this.emit(eg.Connected,this.latestJoinResponse)}else e===eM.FAILED&&(this.pcState===eO.Connected||this.pcState===eO.Reconnecting)&&(this.pcState=eO.Disconnected,this.handleDisconnect("peerconnection failed","failed"===i?ip.RR_SUBSCRIBER_FAILED:ip.RR_PUBLISHER_FAILED));let n=this.client.isDisconnected||this.client.currentState===eP.RECONNECTING,a=[eM.FAILED,eM.CLOSING,eM.CLOSED].includes(e);n&&a&&!this._isClosed&&this.emit(eg.Offline)}),this.pcManager.onTrack=e=>{0!==e.streams.length&&this.emit(eg.MediaTrackAdded,e.track,e.streams[0],e.receiver)}}})}setupSignalClientCallbacks(){this.client.onAnswer=(e,t,i)=>aD(this,void 0,void 0,function*(){this.pcManager&&(this.log.debug("received server answer",{RTCSdpType:e.type,sdp:e.sdp,midToTrackId:i}),this.midToTrackId=i,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,i)=>aD(this,void 0,void 0,function*(){if(this.latestRemoteOfferId=t,!this.pcManager)return;this.midToTrackId=i;let n=yield this.pcManager.createSubscriberAnswerFromOffer(e,t);n&&this.client.sendAnswer(n,t)}),this.client.onLocalTrackPublished=e=>{var t;if(this.log.debug("received trackPublishedResponse",{cid:e.cid,track:null==(t=e.track)?void 0:t.sid}),!this.pendingTrackResolvers[e.cid])return void this.log.error("missing track resolver for ".concat(e.cid),{cid:e.cid});let{resolve:i}=this.pendingTrackResolvers[e.cid];delete this.pendingTrackResolvers[e.cid],i(e.track)},this.client.onLocalTrackUnpublished=e=>{this.emit(eg.LocalTrackUnpublished,e)},this.client.onLocalTrackSubscribed=e=>{this.emit(eg.LocalTrackSubscribed,e)},this.client.onTokenRefresh=e=>{this.token=e,this.emit(eg.TokenRefreshed,e)},this.client.onRemoteMuteChanged=(e,t)=>{this.emit(eg.RemoteMute,e,t)},this.client.onSubscribedQualityUpdate=e=>{this.emit(eg.SubscribedQualityUpdate,e)},this.client.onRoomMoved=e=>{var t;this.participantSid=null==(t=e.participant)?void 0:t.sid,this.latestJoinResponse&&(this.latestJoinResponse.room=e.room),this.emit(eg.RoomMoved,e)},this.client.onMediaSectionsRequirement=e=>{this.addMediaSections(e.numAudios,e.numVideos),this.negotiate()},this.client.onPublishDataTrackResponse=e=>{this.emit(eg.PublishDataTrackResponse,e)},this.client.onUnPublishDataTrackResponse=e=>{this.emit(eg.UnPublishDataTrackResponse,e)},this.client.onDataTrackSubscriberHandles=e=>{this.emit(eg.DataTrackSubscriberHandles,e)},this.client.onClose=()=>{this.handleDisconnect("signal",ip.RR_SIGNAL_DISCONNECTED)},this.client.onLeave=e=>{switch(this.log.info("client leave request received (action=".concat(null==e?void 0:e.action,")"),{reason:null==e?void 0:e.reason}),e.regions&&(this.log.debug("updating regions"),this.emit(eg.ServerRegionsReported,e.regions)),e.action){case nZ.DISCONNECT:this.emit(eg.Disconnected,null==e?void 0:e.reason),this.close();break;case nZ.RECONNECT:this.fullReconnectOnNext=!0,this.handleDisconnect(o8);break;case nZ.RESUME:this.handleDisconnect(o8)}}}makeRTCConfiguration(e){var t,i;let n=Object.assign({},this.rtcConfig);if(((null==(t=this.signalOpts)?void 0:t.e2eeEnabled)||(null==(i=this.options.packetTrailer)?void 0:i.worker)&&!sm())&&sX()&&(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 t=[];e.iceServers.forEach(e=>{let i={urls:e.urls};e.username&&(i.username=e.username),e.credential&&(i.credential=e.credential),t.pu
1sh(i)}),n.iceServers=t}return e.clientConfiguration&&e.clientConfiguration.forceRelay===iu.ENABLED&&(n.iceTransportPolicy="relay"),n}addMediaSections(e,t){var i,n;let a={direction:"recvonly"};for(let t=0;t<e;t++)null==(i=this.pcManager)||i.addPublisherTransceiverOfKind("audio",a);for(let e=0;e<t;e++)null==(n=this.pcManager)||n.addPublisherTransceiverOfKind("video",a)}createDataChannels(){this.pcManager&&(this.lossyDC&&(this.lossyDC.onmessage=null,this.lossyDC.onerror=null),this.reliableDC&&(this.reliableDC.onmessage=null,this.reliableDC.onerror=null),this.dataTrackDC&&(this.dataTrackDC.onmessage=null,this.dataTrackDC.onerror=null),this.lossyDC=this.pcManager.createPublisherDataChannel(o4,{ordered:!1,maxRetransmits:0}),this.reliableDC=this.pcManager.createPublisherDataChannel(o5,{ordered:!0}),this.dataTrackDC=this.pcManager.createPublisherDataChannel(o6,{ordered:!1,maxRetransmits:0}),this.lossyDC.onmessage=this.handleDataMessage,this.reliableDC.onmessage=this.handleDataMessage,this.dataTrackDC.onmessage=this.handleDataTrackMessage,this.lossyDC.onerror=this.handleDataError,this.reliableDC.onerror=this.handleDataError,this.dataTrackDC.onerror=this.handleDataError,this.lossyDC.bufferedAmountLowThreshold=65535,this.reliableDC.bufferedAmountLowThreshold=65535,this.dataTrackDC.bufferedAmountLowThreshold=65535,this.lossyDC.onbufferedamountlow=()=>this.handleBufferedAmountLow(eA.LOSSY),this.reliableDC.onbufferedamountlow=()=>this.handleBufferedAmountLow(eA.RELIABLE),this.dataTrackDC.onbufferedamountlow=()=>this.handleBufferedAmountLow(eA.DATA_TRACK_LOSSY),this.cleanupLossyDataStats(),this.lossyDataStatInterval=setInterval(()=>{this.lossyDataStatByterate=this.lossyDataStatCurrentBytes,this.lossyDataStatCurrentBytes=0;let e=this.dataChannelForKind(eA.LOSSY);e&&(e.bufferedAmountLowThreshold=Math.min(Math.max(this.lossyDataStatByterate/10,8192),262144))},1e3))}createSender(e,t,i){return aD(this,void 0,void 0,function*(){let n;if(sl())n=yield this.createTransceiverRTCRtpSender(e,t,i);else if(sd())this.log.warn("using add-track fallback"),n=yield this.createRTCRtpSender(e.mediaStreamTrack);else throw new rH("Required webRTC APIs not supported on this device");return this.setupPacketTrailerSender(n,t),n})}createSimulcastSender(e,t,i,n){return aD(this,void 0,void 0,function*(){let a;if(sl())a=yield this.createSimulcastTransceiverSender(e,t,i,n);else if(sd())this.log.debug("using add-track fallback"),a=yield this.createRTCRtpSender(e.mediaStreamTrack);else throw new rH("Cannot stream on this device");return a&&this.setupPacketTrailerSender(a,i),a})}setupPacketTrailerSender(e){var t,i;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(null==(t=this.options.packetTrailer)?void 0:t.worker)||(null==(i=this.signalOpts)?void 0:i.e2eeEnabled))return;let a=n.packetTrailer,r=s0(a);if(sm()){r&&(e.transform=new RTCRtpScriptTransform(this.options.packetTrailer.worker,{kind:"encode",packetTrailer:a}));return}if(!sZ(this.options.packetTrailer)||!("createEncodedStreams"in e)){r&&this.log.warn("packet trailer transform not supported; skipping write",this.logContext);return}let{readable:s,writable:o}=e.createEncodedStreams();r?this.options.packetTrailer.worker.postMessage({kind:"encode",data:{readableStream:s,writableStream:o,packetTrailer:a}},[s,o]):s.pipeTo(o)}createTransceiverRTCRtpSender(e,t,i){return aD(this,void 0,void 0,function*(){if(!this.pcManager)throw new rH("publisher is closed");let n=[];e.mediaStream&&n.push(e.mediaStream),sV(e)&&(e.codec=t.videoCodec);let a={direction:"sendonly",streams:n};return i&&(a.sendEncodings=i),(yield this.pcManager.addPublisherTransceiver(e.mediaStreamTrack,a)).sender})}createSimulcastTransceiverSender(e,t,i,n){return aD(this,void 0,void 0,function*(){if(!this.pcManager)throw new rH("publisher is closed");let a={direction:"sendonly"};n&&(a.sendEncodings=n);let r=yield this.pcManager.addPublisherTransceiver(t.mediaStreamTrack,a);if(i.videoCodec)return e.setSimulcastTrackSender(i.videoCodec,r.sender),r.sender})}createRTCRtpSender(e){return aD(this,void 0,void 0,function*(){if(!this.pcManager)throw new rH("publisher is closed");return this.pcManager.addPublisherTrack(e)})}attemptReconnect(e){return aD(this,void 0,void 0,function*(){var t,i,n;if(!this._isClosed){if(this.attemptingReconnect)return void this.log.warn("already attempting reconnect, returning early");((null==(t=this.clientConfiguration)?void 0:t.resumeConnection)===iu.DISABLED||(null!=(n=null==(i=this.pcManager)?void 0:i.currentState)?n:eM.NEW)===eM.NEW)&&(this.fullReconnectOnNext=!0);try{this.attemptingReconnect=!0,this.fullReconnectOnNext?yield this.restartConnection():yield this.resumeConnection(e),this.clearPendingReconnect(),this.fullReconnectOnNext=!1}catch(t){this.reconnectAttempts+=1;let e=!0;t instanceof rH?(this.log.debug("received unrecoverable error",{error:t}),e=!1):t instanceof rJ||(this.fullReconnectOnNext=!0),e?this.handleDisconnect("reconnect",ip.RR_UNKNOWN):(this.log.info("could not recover connection after ".concat(this.reconnectAttempts," attempts, ").concat(Date.now()-this.reconnectStart,"ms. giving up")),this.emit
1(eg.Disconnected),yield this.close())}finally{this.attemptingReconnect=!1}}})}getNextRetryDelay(e){try{return this.reconnectPolicy.nextRetryDelayInMs(e)}catch(e){this.log.warn("encountered error in reconnect policy",{error:e})}return null}restartConnection(e){return aD(this,void 0,void 0,function*(){var t,i,n;try{let i;if(!this.url||!this.token)throw new rH("could not reconnect, url or token not saved");this.log.info("reconnecting, attempt: ".concat(this.reconnectAttempts)),this.emit(eg.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 rJ;i=(yield this.join(null!=e?e:this.url,this.token,this.signalOpts,void 0,!this.options.singlePeerConnection)).joinResponse}catch(e){if(e instanceof rF&&e.reason===ed.NotAllowed)throw new rH("could not reconnect, token might be expired");throw new rJ}if(this.shouldFailNext)throw this.shouldFailNext=!1,Error("simulated failure");if(this.client.setReconnected(),this.emit(eg.SignalRestarted,i),yield this.waitForPCReconnected(),this.client.currentState!==eP.CONNECTED)throw new rJ("Signal connection got severed during reconnect");null==(t=this.regionStrategy)||t.resetAttempts(),this.emit(eg.Restarted)}catch(t){let e=yield null==(i=this.regionStrategy)?void 0:i.getNextUrl();if(e)return void(yield this.restartConnection(e));throw null==(n=this.regionStrategy)||n.resetAttempts(),t}})}resumeConnection(e){return aD(this,void 0,void 0,function*(){var t;let i;if(!this.url||!this.token)throw new rH("could not reconnect, url or token not saved");if(!this.pcManager)throw new rH("publisher and subscriber connections unset");this.log.info("resuming signal connection, attempt ".concat(this.reconnectAttempts)),this.emit(eg.Resuming);try{this.setupSignalClientCallbacks(),i=yield this.client.reconnect(this.url,this.token,this.participantSid,e)}catch(t){let e="";if(t instanceof Error&&(e=t.message,this.log.error(t.message,{error:t})),t instanceof rF&&t.reason===ed.NotAllowed)throw new rH("could not reconnect, token might be expired");if(t instanceof rF&&t.reason===ed.LeaveRequest)throw t;throw new rJ(e)}
1if(this.emit(eg.SignalResumed),i){let e=this.makeRTCConfiguration(i);this.pcManager.updateConfiguration(e),this.latestJoinResponse&&(this.latestJoinResponse.serverInfo=i.serverInfo)}else this.log.warn("Did not receive reconnect response");if(this.shouldFailNext)throw this.shouldFailNext=!1,Error("simulated failure");if(yield this.pcManager.triggerIceRestart(),yield this.waitForPCReconnected(),this.client.currentState!==eP.CONNECTED)throw new rJ("Signal connection got severed during reconnect");this.client.setReconnected(),(null==(t=this.reliableDC)?void 0:t.readyState)==="open"&&null===this.reliableDC.id&&this.createDataChannels(),(null==i?void 0:i.lastMessageSeq)&&this.resendReliableMessagesForResume(i.lastMessageSeq),this.emit(eg.Resumed)})}waitForPCInitialConnection(e,t){return aD(this,void 0,void 0,function*(){if(!this.pcManager)throw new rH("PC manager is closed");yield this.pcManager.ensurePCTransportConnection(t,e)})}waitForPCReconnected(){return aD(this,void 0,void 0,function*(){this.pcState=eO.Reconnecting,this.log.debug("waiting for peer connection to reconnect");try{if(yield sc(2e3),!this.pcManager)throw new rH("PC manager is closed");yield this.pcManager.ensurePCTransportConnection(void 0,this.peerConnectionTimeout),this.pcState=eO.Connected}catch(e){throw this.pcState=eO.Disconnected,rF.internal("could not establish PC connection, ".concat(e.message))}})}publishRpcAck(e,t){return aD(this,void 0,void 0,function*(){let i=new iD({destinationIdentities:[e],kind:iM.RELIABLE,value:{case:"rpcAck",value:new iz({requestId:t})}});yield this.sendDataPacket(i,eA.RELIABLE)})}sendDataPacket(e,t){return aD(this,void 0,void 0,function*(){if(yield this.ensurePublisherConnected(t),this.e2eeManager&&this.e2eeManager.isDataChannelEncryptionEnabled){let t=function(e){var t,i,n,a,r;if((null==(t=e.value)?void 0:t.case)!=="sipDtmf"&&(null==(i=e.value)?void 0:i.case)!=="metrics"&&(null==(n=e.value)?void 0:n.case)!=="speaker"&&(null==(a=e.value)?void 0:a.case)!=="transcription"&&(null==(r=e.value)?void 0:r.case)!=="encryptedPacket")return new iA({value:e.value})}(e);if(t){let i=yield this.e2eeManager.encryptData(t.toBinary());e.value={case:"encryptedPacket",value:new iO({encryptedValue:i.payload,iv:i.iv,keyIndex:i.keyIndex})}}}t===eA.RELIABLE&&(e.sequence=this.reliableDataSequence,this.reliableDataSequence+=1);let i=e.toBinary();switch(t){case eA.LOSSY:case eA.DATA_TRACK_LOSSY:return this.sendLossyBytes(i,t);case eA.RELIABLE:let n=this.dataChannelForKind(t);if(n){if(yield this.waitForBufferStatusLow(t),this.reliableMessageBuffer.push({data:i,sequence:e.sequence}),this.attemptingReconnect)return;n.send(i)}this.updateAndEmitDCBufferStatus(t)}})}sendLossyBytes(e,t){return aD(this,arguments,void 0,function(e,t){var i=this;let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"drop";return function*(){yield i.ensurePublisherConnected(t);let a=i.dataChannelForKind(t);if(a){if(!i.isBufferStatusLow(t))switch(n){case"wait":yield i.waitForBufferStatusLow(t);break;case"drop":i.lossyDataDropCount+=1,i.lossyDataDropCount%100==0&&i.log.warn("dropping lossy data channel messages, total dropped: ".concat(i.lossyDataDropCount));return}if(i.lossyDataStatCurrentBytes+=e.byteLength,i.attemptingReconnect)return;a.send(e)}i.updateAndEmitDCBufferStatus(t)}()})}resendReliableMessagesForResume(e){return aD(this,void 0,void 0,function*(){yield this.ensurePublisherConnected(eA.RELIABLE);let t=this.dataChannelForKind(eA.RELIABLE);t&&(this.reliableMessageBuffer.popToSequence(e),this.reliableMessageBuffer.getAll().forEach(e=>{t.send(e.data)})),this.updateAndEmitDCBufferStatus(eA.RELIABLE)})}waitForBufferStatusLow(e){return aD(this,void 0,void 0,function*(){return new r_((t,i)=>aD(this,void 0,void 0,function*(){if(this.isClosed&&i(new rH("engine closed")),this.isBufferStatusLow(e))t();else{let n=this.dataChannelForKind(e);if(!n)return void i(new rH("DataChannel not found, kind: ".concat(e)));this.bufferStatusLowClosingFuture.promise.catch(e=>i(e)),n.addEventListener("bufferedamountlow",()=>t(),{once:!0})}}))})}ensureDataTransportConnected(e){return aD(this,arguments,void 0,function(e){var t=this;let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.subscriberPrimary;return function*(){var n;if(!t.pcManager)throw new rH("PC manager is closed");let a=i?t.pcManager.subscriber:t.pcManager.publisher,r=i?"Subscriber":"Publisher";if(!a)throw rF.internal("".concat(r," connection not set"));let s=!1;i||t.dataChannelForKind(e,i)||(t.createDataChannels(),s=!0),s||i||t.pcManager.publisher.isICEConnected||"checking"===t.pcManager.publisher.getICEConnectionState()||(s=!0),s&&t.negotiate().catch(e=>{t.log.error(e)});let o=t.dataChannelForKind(e,i);if((null==o?void 0:o.readyState)==="open")return;let c=new Date().getTime()+t.peerConnectionTimeout;for(;new Date().getTime()<c;){if(a.isICEConnected&&(null==(n=t.dataChannelForKind(e,i))?void 0:n.readyState)==="open")return;yield sc(50)}throw rF.internal("could not establish ".concat(r," connection, state: ").concat(a.getICEConnectionState()))}()})}ensurePublisherConnected(e){return aD(this,void 0,void 0,function*(){this.publisherConnectionPromise||(this.publisherConnectionPromise=this.ensureDataTransportConnected(e,!1)),yield this.publisherConnectionPromise})}verifyTransport(){return!!this.pcManager&&!![eM.CONNECTING,eM.CONNECTED].includes(this.pcManager.currentState)&&!!this.client.ws&&this.client.ws.readyState!==WebSocket.CLOSED}negotiate(){return aD(this,void 0,void 0,function*(){return new r_((e,t)=>aD(this,void 0,void 0,function*(){if(!this.pcManager)return void t(new rz("PC manager is closed"));this.pcManager.requirePublisher(),0!=this.pcManager.publisher.getTransceivers().length||this.lossyDC||this.reliableDC||this.dataTrackDC||this.createDataChannels();let i=new AbortController,n=()=>{i.abort(),this.log.debug("engine disconnected while negotiation was ongoing"),e()};this.isClosed&&t(new rz("cannot negotiate on closed engine")),this.on(eg.Closing,n),this.on(eg.Restarting,n),this.pcManager.publisher.once(oE,e=>{let t=new Map;
1e.forEach(e=>{let i=e.codec.toLowerCase();rX.includes(i)&&t.set(e.payload,i)}),this.emit(eg.RTPVideoMapUpdate,t)});try{yield this.pcManager.negotiate(i),e()}catch(n){if(i.signal.aborted)return void e();n instanceof rz&&(this.fullReconnectOnNext=!0),this.handleDisconnect("negotiation",ip.RR_UNKNOWN),n instanceof Error?t(n):t(Error(String(n)))}finally{this.off(eg.Closing,n),this.off(eg.Restarting,n)}}))})}dataChannelForKind(e,t){switch(e){case eA.RELIABLE:if(!t)return this.reliableDC;return this.reliableDCSub;case eA.LOSSY:if(!t)return this.lossyDC;return this.lossyDCSub;case eA.DATA_TRACK_LOSSY:if(!t)return this.dataTrackDC;return this.dataTrackDCSub}}sendSyncState(e,t,i){var n,a,r,s;let o;if(!this.pcManager)return void this.log.warn("sync state cannot be sent without peer connection setup");let c=this.pcManager.publisher.getLocalDescription(),l=this.pcManager.publisher.getRemoteDescription(),d=null==(n=this.pcManager.subscriber)?void 0:n.getRemoteDescription(),u=null==(a=this.pcManager.subscriber)?void 0:a.getLocalDescription(),h=null==(s=null==(r=this.signalOpts)?void 0:r.autoSubscribe)||s,p=[],m=[];e.forEach(e=>{e.isDesired!==h&&p.push(e.trackSid),e.isEnabled||m.push(e.trackSid)}),this.client.sendSyncState(new ao({answer:"publisher-only"===this.pcManager.mode?l?ov({sdp:l.sdp,type:l.type}):void 0:u?ov({sdp:u.sdp,type:u.type}):void 0,offer:"publisher-only"===this.pcManager.mode?c?ov({sdp:c.sdp,type:c.type}):void 0:d?ov({sdp:d.sdp,type:d.type}):void 0,subscription:new nG({trackSids:p,subscribe:!h,participantTracks:[]}),publishTracks:(o=[],t.forEach(e=>{void 0!==e.track&&o.push(new nV({cid:e.track.mediaStreamID,track:e.trackInfo}))}),o),dataChannels:this.dataChannelsInfo(),trackSidsDisabled:m,datachannelReceiveStates:this.reliableReceivedState.map((e,t)=>new ac({publisherSid:t,lastSeq:e})),publishDataTracks:i.map(e=>{let t;return new nM({info:new iR({sid:(t=e).sid,pubHandle:t.pubHandle,name:t.name,encryption:t.usesE2ee?ix.GCM:ix.NONE})})})}))}failNext(){this.shouldFailNext=!0}failNextV1Path(){this.shouldFailOnV1Path=!0}dataChannelsInfo(){let e=[],t=(t,i)=>{(null==t?void 0:t.id)!==void 0&&null!==t.id&&e.push(new al({label:t.label,id:t.id,target:i}))};return t(this.dataChannelForKind(eA.LOSSY),nx.PUBLISHER),t(this.dataChannelForKind(eA.RELIABLE),nx.PUBLISHER),t(this.dataChannelForKind(eA.LOSSY,!0),nx.SUBSCRIBER),t(this.dataChannelForKind(eA.RELIABLE,!0),nx.SUBSCRIBER),e}clearReconnectTimeout(){this.reconnectTimeout&&rQ.clearTimeout(this.reconnectTimeout)}clearPendingReconnect(){this.clearReconnectTimeout(),this.reconnectAttempts=0}registerOnLineListener(){sb()&&(window.addEventListener("online",this.handleBrowserOnLine),window.addEventListener("offline",this.handleBrowserOffline))}deregisterOnLineListener(){sb()&&(window.removeEventListener("online",this.handleBrowserOnLine),window.removeEventListener("offline",this.handleBrowserOffline))}getTrackIdForReceiver(e){var t;let i=null==(t=this.pcManager)?void 0:t.getMidForReceiver(e);if(i){let e=Object.entries(this.midToTrackId).find(e=>{let[t]=e;return t===i});if(e)return e[1]}}}function o7(e,t){let i=e.participantIdentity?e.participantIdentity:t.participantIdentity;e.participantIdentity=i,t.participantIdentity=i;let n=0!==e.destinationIdentities.length?e.destinationIdentities:t.destinationIdentities;e.destinationIdentities=n,t.destinationIdentities=n}class ce{static fetchRegionSettings(e,t,i){return aD(this,void 0,void 0,function*(){let n=yield ce.fetchLock.lock();try{var a;let n=yield fetch("".concat((a=e,"".concat(a.protocol.replace("ws","http"),"//").concat(a.host,"/settings")),"/regions"),{headers:{authorization:"Bearer ".concat(t)},signal:i});if(n.ok){let e=function(e){var t;let i=e.get("Cache-Control");if(i){let e=null==(t=i.match(/(?:^|[,\s])max-age=(\d+)/))?void 0:t[1];if(e)return parseInt(e,10)}}(n.headers);return{regionSettings:yield n.json(),updatedAtInMs:Date.now(),maxAgeInMs:e?1e3*e:5e3}}if(401===n.status)throw rF.notAllowed("Could not fetch region settings: ".concat(n.statusText),n.status);throw rF.internal("Could not fetch region settings: ".concat(n.statusText))}catch(e){if(e instanceof rF)throw e;if(null==i?void 0:i.aborted)throw rF.cancelled("Region fetching was aborted");
1throw rF.serverUnreachable("Could not fetch region settings, ".concat(e instanceof Error?"".concat(e.name,": ").concat(e.message):e))}finally{n()}})}static scheduleRefetch(e,t,i){return aD(this,void 0,void 0,function*(){clearTimeout(ce.settingsTimeouts.get(e.hostname)),ce.settingsTimeouts.set(e.hostname,setTimeout(()=>aD(this,void 0,void 0,function*(){try{let i=yield ce.fetchRegionSettings(e,t);ce.updateCachedRegionSettings(e,t,i)}catch(n){if(n instanceof rF&&n.reason===ed.NotAllowed)return void aR.debug("token is not valid, cancelling auto region refresh");aR.debug("auto refetching of region settings failed",{error:n}),ce.scheduleRefetch(e,t,i)}}),i))})}static updateCachedRegionSettings(e,t,i){ce.cache.set(e.hostname,i),ce.scheduleRefetch(e,t,i.maxAgeInMs)}static stopRefetch(e){let t=ce.settingsTimeouts.get(e);t&&(clearTimeout(t),ce.settingsTimeouts.delete(e))}static scheduleCleanup(e){let t=ce.connectionTrackers.get(e);t&&(t.cleanupTimeout&&clearTimeout(t.cleanupTimeout),t.cleanupTimeout=setTimeout(()=>{let t=ce.connectionTrackers.get(e);t&&0===t.connectionCount&&(aR.debug("stopping region refetch after disconnect delay",{hostname:e}),ce.stopRefetch(e)),t&&(t.cleanupTimeout=void 0)},3e4))}static cancelCleanup(e){let t=ce.connectionTrackers.get(e);(null==t?void 0:t.cleanupTimeout)&&(clearTimeout(t.cleanupTimeout),t.cleanupTimeout=void 0)}notifyConnected(){let e=this.serverUrl.hostname,t=ce.connectionTrackers.get(e);t||(t={connectionCount:0},ce.connectionTrackers.set(e,t)),t.connectionCount++,ce.cancelCleanup(e)}notifyDisconnected(){let e=this.serverUrl.hostname,t=ce.connectionTrackers.get(e);t&&(t.connectionCount=Math.max(0,t.connectionCount-1),0===t.connectionCount&&ce.scheduleCleanup(e))}constructor(e,t){this.attemptedRegions=[],this.serverUrl=new URL(e),this.token=t}updateToken(e){var t;this.token=e;let i=this.getServerUrl(),n=ce.cache.get(i.hostname);ce.scheduleRefetch(this.serverUrl,this.token,null!=(t=null==n?void 0:n.maxAgeInMs)?t:5e3)}isCloud(){return sy(this.serverUrl)}getServerUrl(){return this.serverUrl}fetchRegionSettings(e){return aD(this,void 0,void 0,function*(){return ce.fetchRegionSettings(this.serverUrl,this.token,e)})}getNextBestRegionUrl(e){return aD(this,void 0,void 0,function*(){if(!this.isCloud())throw Error("region availability is only supported for LiveKit Cloud domains");let t=ce.cache.get(this.serverUrl.hostname);(!t||Date.now()-t.updatedAtInMs>t.maxAgeInMs)&&(t=yield this.fetchRegionSettings(e),ce.updateCachedRegionSettings(this.serverUrl,this.token,t));let i=t.regionSettings.regions.filter(e=>!this.attemptedRegions.find(t=>t.url===e.url));if(!(i.length>0))return null;{let e=i[0];return this.attemptedRegions.push(e),aR.debug("next region: ".concat(e.region)),e.url}})}resetAttempts(){this.attemptedRegions=[]}setServerReportedRegions(e){ce.updateCachedRegionSettings(this.serverUrl,this.token,e)}}ce.cache=new Map,ce.settingsTimeouts=new Map,ce.connectionTrackers=new Map,ce.fetchLock=new e2;class ct{get info(){return this._info}validateBytesReceived(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if("number"==typeof this.totalByteSize&&0!==this.totalByteSize){if(e&&this.bytesReceived<this.totalByteSize)throw new rK("Not enough chunk(s) received - expected ".concat(this.totalByteSize," bytes of data total, only received ").concat(this.bytesReceived," bytes"),eu.Incomplete);else if(this.bytesReceived>this.totalByteSize)throw new rK("Extra chunk(s) received - expected ".concat(this.totalByteSize," bytes of data total, received ").concat(this.bytesReceived," bytes"),eu.LengthExceeded)}}constructor(e,t,i){this.reader=t,this.totalByteSize=i,this._info=e,this.bytesReceived=0}}class ci extends ct{handleChunkReceived(e){var t;this.bytesReceived+=e.content.byteLength,this.validateBytesReceived();let i=this.totalByteSize?this.bytesReceived/this.totalByteSize:void 0;null==(t=this.onProgress)||t.call(this,i)}[Symbol.asyncIterator](){let e=this.reader.getReader();e.closed.catch(()=>{});let t=()=>{e.releaseLock(),this.signal=void 0};return{next:()=>aD(this,void 0,void 0,function*(){try{let t=this.signal;if(null==t?void 0:t.aborted)throw t.reason;let i=yield new Promise((i,n)=>{if(t){let a=()=>n(t.reason);t.addEventListener("abort",a,{once:!0}),e.read().then(i,n).finally(()=>{t.removeEventListener("abort",a)})}else e.read().then(i,n)});if(i.done)return this.validateBytesReceived(!0),{done:!0,value:void 0};return this.handleChunkReceived(i.value),{done:!1,value:i.value.content}}catch(e){throw t(),e}}),return(){return aD(this,void 0,void 0,function*(){return t(),{done:!0,value:void 0}})}}}withAbortSignal(e){return this.signal=e,this}readAll(){return aD(this,arguments,void 0,function(){var e=this;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function*(){var i,n,a,r;let s=new Set,o=t.signal?e.withAbortSignal(t.signal):e;try{for(var c,l=!0,d=aO(o);!(i=(c=yield d.next()).done);l=!0)r=c.value,l=!1,s.add(r)}catch(e){n={error:e}}finally{try{!l&&!i&&(a=d.return)&&(yield a.call(d))}finally{if(n)throw n.error}}return Array.from(s)}()})}}class cn extends ct{constructor(e,t,i){super(e,t,i),this.receivedChunks=new Map}handleChunkReceived(e){var t;let i=sU(e.chunkIndex),n=this.receivedChunks.get(i);if(n&&n.version>e.version)return;this.receivedChunks.set(i,e),this.bytesReceived+=e.content.byteLength,this.validateBytesReceived();let a=this.totalByteSize?this.bytesReceived/this.totalByteSize:void 0;null==(t=this.onProgress)||t.call(this,a)}[Symbol.asyncIterator](){let e=this.reader.getReader();e.closed.catch(()=>{});let t=new TextDecoder("utf-8",{fatal:!0}),i=this.signal,n=()=>{e.releaseLock(),this.signal=void 0};return{next:()=>aD(this,void 0,void 0,function*(){try{if(null==i?void 0:i.aborted)throw i.reason;let n=yield new Promise((t,n)=>{if(i){let a=()=>n(i.reason);i.addEventListener("abort",a,{once:!0}),e.read().then(t,n).finally(()=>{i.removeEventListener("abort",a)})}else e.read().then(t,n)});if(n.done)return this.validateBytesReceived(!0),{done:!0,value:void 0};{let e;this.handleChunkReceived(n.value);try{e=t.decode(n.value.content)}catch(e){throw new rK("Cannot decode datastream chunk ".concat(n.value.chunkIndex," as text: ").concat(e),eu.DecodeFailed)}return{done:!1,value:e}}}catch(e){throw n(),e}}),return(){return aD(this,void 0,void 0,function*(){return n(),{done:!0,value:void 0}})}}}withAbortSignal(e){return this.signal=e,this}readAll(){return aD(this,arguments,void 0,function(){var e=this;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function*(){var i,n,a,r;let s="",o=t.signal?e.withAbortSignal(t.signal):e;try{for(var c,l=!0,d=aO(o);!(i=(c=yield d.next()).done);l=!0)r=c.value,l=!1,s+=r}catch(e){n={error:e}}finally{try{!l&&!i&&(a=d.return)&&(yield a.call(d))}finally{if(n)throw n.error}}return s}()})}}class ca{constructor(){this.log=aR,this.byteStreamControllers=new Map,this.textStreamControllers=new Map,this.byteStreamHandlers=new Map,this.textStreamHandlers=new Map,this.isConnected=!1,this.bufferedPackets=[]}setConnected(e){this.isConnected=e,e&&this.flushBufferedPackets()}flushBufferedPackets(){let e=this.bufferedPackets;for(let{packet:t,encryptionType:i}of(this.bufferedPackets=[],e))this.handleDataStreamPacket(t,i)}registerTextStreamHandler(e,t){if(this.textStreamHandlers.has(e))throw new rK('A text stream handler for topic "'.concat(e,'" has already been set.'),eu.HandlerAlreadyRegistered);this.textStreamHandlers.set(e,t)}unregisterTextStreamHandler(e){this.textStreamHandlers.delete(e)}registerByteStreamHandler(e,t){if(this.byteStreamHandlers.has(e))throw new rK('A byte stream handler for topic "'.concat(e,'" has already been set.'),eu.HandlerAlreadyRegistered);this.byteStreamHandlers.set(e,t)}unregisterByteStreamHandler(e){this.byteStreamHandlers.delete(e)}clearControllers(){this.byteStreamControllers.clear(),this.textStreamControllers.clear(),this.bufferedPackets=[]}
1validateParticipantHasNoActiveDataStreams(e){let t=Array.from(this.textStreamControllers.entries()).filter(t=>t[1].sendingParticipantIdentity===e),i=Array.from(this.byteStreamControllers.entries()).filter(t=>t[1].sendingParticipantIdentity===e);if(t.length>0||i.length>0){let n=new rK("Participant ".concat(e," unexpectedly disconnected in the middle of sending data"),eu.AbnormalEnd);for(let[e,t]of i)t.controller.error(n),this.byteStreamControllers.delete(e);for(let[e,i]of t)i.controller.error(n),this.textStreamControllers.delete(e)}}handleDataStreamPacket(e,t){if(!this.isConnected)return void this.bufferedPackets.push({packet:e,encryptionType:t});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 Error('DataPacket of value "'.concat(e.value.case,'" is not data stream related!'))}}handleStreamHeader(e,t,i){var n;if("byteHeader"===e.contentHeader.case){let a,r=this.byteStreamHandlers.get(e.topic);if(!r)return void this.log.debug("ignoring incoming byte stream due to no handler for topic",e.topic);let s={id:e.streamId,name:null!=(n=e.contentHeader.value.name)?n:"unknown",mimeType:e.mimeType,size:e.totalLength?Number(e.totalLength):void 0,topic:e.topic,timestamp:sU(e.timestamp),attributes:e.attributes,encryptionType:i},o=new ReadableStream({start:i=>{if(a=i,this.textStreamControllers.has(e.streamId))throw new rK("A data stream read is already in progress for a stream with id ".concat(e.streamId,"."),eu.AlreadyOpened);this.byteStreamControllers.set(e.streamId,{info:s,controller:a,startTime:Date.now(),sendingParticipantIdentity:t})}});r(new ci(s,o,sU(e.totalLength)),{identity:t})}else if("textHeader"===e.contentHeader.case){let n,a=this.textStreamHandlers.get(e.topic);if(!a)return void this.log.debug("ignoring incoming text stream due to no handler for topic",e.topic);let r={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:i,attachedStreamIds:e.contentHeader.value.attachedStreamIds},s=new ReadableStream({start:i=>{if(n=i,this.textStreamControllers.has(e.streamId))throw new rK("A data stream read is already in progress for a stream with id ".concat(e.streamId,"."),eu.AlreadyOpened);this.textStreamControllers.set(e.streamId,{info:r,controller:n,startTime:Date.now(),sendingParticipantIdentity:t})}});a(new cn(r,s,sU(e.totalLength)),{identity:t})}}handleStreamChunk(e,t){let i=this.byteStreamControllers.get(e.streamId);i&&(i.info.encryptionType!==t?(i.controller.error(new rK("Encryption type mismatch for stream ".concat(e.streamId,". Expected ").concat(t,", got ").concat(i.info.encryptionType),eu.EncryptionTypeMismatch)),this.byteStreamControllers.delete(e.streamId)):e.content.length>0&&i.controller.enqueue(e));let n=this.textStreamControllers.get(e.streamId);n&&(n.info.encryptionType!==t?(n.controller.error(new rK("Encryption type mismatch for stream ".concat(e.streamId,". Expected ").concat(t,", got ").concat(n.info.encryptionType),eu.EncryptionTypeMismatch)),this.textStreamControllers.delete(e.streamId)):e.content.length>0&&n.controller.enqueue(e))}handleStreamTrailer(e,t){let i=this.textStreamControllers.get(e.streamId);i&&(i.info.encryptionType!==t?i.controller.error(new rK("Encryption type mismatch for stream ".concat(e.streamId,". Expected ").concat(t,", got ").concat(i.info.encryptionType),eu.EncryptionTypeMismatch)):(i.info.attributes=Object.assign(Object.assign({},i.info.attributes),e.attributes),i.controller.close(),this.textStreamControllers.delete(e.streamId)));let n=this.byteStreamControllers.get(e.streamId);n&&(n.info.encryptionType!==t?n.controller.error(new rK("Encryption type mismatch for stream ".concat(e.streamId,". Expected ").concat(t,", got ").concat(n.info.encryptionType),eu.EncryptionTypeMismatch)):(n.info.attributes=Object.assign(Object.assign({},n.info.attributes),e.attributes),n.controller.close()),this.byteStreamControllers.delete(e.streamId))}}class cr{constructor(e,t,i){this.writableStream=e,this.defaultWriter=e.getWriter(),this.onClose=i,this.info=t}write(e){return this.defaultWriter.write(e)}close(){return aD(this,void 0,void 0,function*(){var e;yield this.defaultWriter.close(),this.defaultWriter.releaseLock(),null==(e=this.onClose)||e.call(this)})}}class cs extends cr{}class co extends cr{}class cc{constructor(e,t){this.engine=e,this.log=t}setupEngine(e){this.engine=e}sendText(e,t){return aD(this,void 0,void 0,function*(){var i;let n=crypto.randomUUID(),a=new TextEncoder().encode(e).byteLength,r=null==(i=null==t?void 0:t.attachments)?void 0:i.map(()=>crypto.randomUUID()),s=Array(r?r.length+1:1).fill(0),o=(e,i)=>{var n;s[i]=e;let a=s.reduce((e,t)=>
1e+t,0);null==(n=null==t?void 0:t.onProgress)||n.call(t,a)},c=yield this.streamText({streamId:n,totalSize:a,destinationIdentities:null==t?void 0:t.destinationIdentities,topic:null==t?void 0:t.topic,attachedStreamIds:r,attributes:null==t?void 0:t.attributes});return yield c.write(e),o(1,0),yield c.close(),(null==t?void 0:t.attachments)&&r&&(yield Promise.all(t.attachments.map((e,i)=>aD(this,void 0,void 0,function*(){return this._sendFile(r[i],e,{topic:t.topic,mimeType:e.type,onProgress:e=>{o(e,i+1)}})})))),c.info})}streamText(e){return aD(this,void 0,void 0,function*(){var t,i,n;let a=null!=(t=null==e?void 0:e.streamId)?t:crypto.randomUUID(),r={id:a,mimeType:"text/plain",timestamp:Date.now(),topic:null!=(i=null==e?void 0:e.topic)?i:"",size:null==e?void 0:e.totalSize,attributes:null==e?void 0:e.attributes,encryptionType:(null==(n=this.engine.e2eeManager)?void 0:n.isDataChannelEncryptionEnabled)?ix.GCM:ix.NONE,attachedStreamIds:null==e?void 0:e.attachedStreamIds},s=new i6({streamId:a,mimeType:r.mimeType,topic:r.topic,timestamp:sF(r.timestamp),totalLength:sF(r.size),attributes:r.attributes,contentHeader:{case:"textHeader",value:new i4({version:null==e?void 0:e.version,attachedStreamIds:r.attachedStreamIds,replyToStreamId:null==e?void 0:e.replyToStreamId,operationType:(null==e?void 0:e.type)==="update"?i3.UPDATE:i3.CREATE})}}),o=null==e?void 0:e.destinationIdentities,c=new iD({destinationIdentities:o,value:{case:"streamHeader",value:s}});yield this.engine.sendDataPacket(c,eA.RELIABLE);let l=0,d=this.engine,u=new WritableStream({write(e){return aD(this,void 0,void 0,function*(){for(let t of function(e,t){let i=[],n=new TextEncoder().encode(e);for(;n.length>15e3;){let e=15e3;for(;e>0;){let t=n[e];if(void 0!==t&&(192&t)!=128)break;e--}i.push(n.slice(0,e)),n=n.slice(e)}return n.length>0&&i.push(n),i}(e,0)){let e=new iD({destinationIdentities:o,value:{case:"streamChunk",value:new i8({content:t,streamId:a,chunkIndex:sF(l)})}});yield d.sendDataPacket(e,eA.RELIABLE),l+=1}})},close(){return aD(this,void 0,void 0,function*(){let e=new iD({destinationIdentities:o,value:{case:"streamTrailer",value:new i9({streamId:a})}});yield d.sendDataPacket(e,eA.RELIABLE)})},abort(e){console.log("Sink error:",e)}}),h=()=>aD(this,void 0,void 0,function*(){yield p.close()});d.once(eg.Closing,h);let p=new cs(u,r,()=>this.engine.off(eg.Closing,h));return p})}sendFile(e,t){return aD(this,void 0,void 0,function*(){let i=crypto.randomUUID();return yield this._sendFile(i,e,t),{id:i}})}_sendFile(e,t,i){return aD(this,void 0,void 0,function*(){var n;let a=yield this.streamBytes({streamId:e,totalSize:t.size,name:t.name,mimeType:null!=(n=null==i?void 0:i.mimeType)?n:t.type,topic:null==i?void 0:i.topic,destinationIdentities:null==i?void 0:i.destinationIdentities}),r=t.stream().getReader();for(;;){let{done:e,value:t}=yield r.read();if(e)break;yield a.write(t)}return yield a.close(),a.info})}streamBytes(e){return aD(this,void 0,void 0,function*(){var t,i,n,a,r;let s=null!=(t=null==e?void 0:e.streamId)?t:crypto.randomUUID(),o=null==e?void 0:e.destinationIdentities,c={id:s,mimeType:null!=(i=null==e?void 0:e.mimeType)?i:"application/octet-stream",topic:null!=(n=null==e?void 0:e.topic)?n:"",timestamp:Date.now(),attributes:null==e?void 0:e.attributes,size:null==e?void 0:e.totalSize,name:null!=(a=null==e?void 0:e.name)?a:"unknown",encryptionType:(null==(r=this.engine.e2eeManager)?void 0:r.isDataChannelEncryptionEnabled)?ix.GCM:ix.NONE},l=new iD({destinationIdentities:o,value:{case:"streamHeader",value:new i6({totalLength:sF(c.size),mimeType:c.mimeType,streamId:s,topic:c.topic,timestamp:sF(Date.now()),attributes:c.attributes,contentHeader:{case:"byteHeader",value:new i5({name:c.name})}})}});yield this.engine.sendDataPacket(l,eA.RELIABLE);let d=0,u=new e2,h=this.engine,p=this.log;return new co(new WritableStream({write(e){return aD(this,void 0,void 0,function*(){let t=yield u.lock(),i=0;try{for(;i<e.byteLength;){let t=e.slice(i,i+15e3),n=new iD({destinationIdentities:o,value:{case:"streamChunk",value:new i8({content:t,streamId:s,chunkIndex:sF(d)})}});yield h.sendDataPacket(n,eA.RELIABLE),d+=1,i+=t.byteLength}}finally{t()}})},close(){return aD(this,void 0,void 0,function*(){let e=new iD({destinationIdentities:o,value:{case:"streamTrailer",value:new i9({streamId:s})}});yield h.sendDataPacket(e,eA.RELIABLE)})},abort(e){p.error("Sink error:",e)}}),c)})}}function cl(e){if(0===e.length)return new AbortController().signal;if(1===e.length)return e[0];for(let t of e)if(t.aborted)return t;let t=new AbortController,i=Array(e.length);return e.forEach((e,n)=>{let a=()=>{for(let n of(t.abort(e.reason),i))n()};e.addEventListener("abort",a),i[n]=()=>e.removeEventListener("abort",a)}),t.signal}function cd(e){let t=new AbortController;return setTimeout(()=>{t.abort(new DOMException("signal timed out after ".concat(e," ms"),"TimeoutError"))},e),t.signal}(U=eL||(eL={}))[U.TooShort=0]="TooShort",U[U.HeaderOverrun=1]="HeaderOverrun",U[U.MissingExtWords=2]="MissingExtWords",U[U.UnsupportedVersion=3]="UnsupportedVersion",U[U.InvalidHandle=4]="InvalidHandle",U[U.MalformedExt=5]="MalformedExt";class cu extends rU{constructor(e,t,i){super(19,e,i),this.name="DataTrackDeserializeError",this.reason=t,this.reasonName=eL[t]}static tooShort(){return new cu("Too short to contain a valid header",eL.TooShort)}static headerOverrun(){return new cu("Header exceeds total packet length",eL.HeaderOverrun)}static missingExtWords(){return new cu("Extension word indicator is missing",eL.MissingExtWords)}static unsupportedVersion(e){return new cu("Unsupported version ".concat(e),eL.UnsupportedVersion)}
1static invalidHandle(e){return new cu("invalid track handle: ".concat(e.message),eL.InvalidHandle,{cause:e})}static malformedExt(e){return new cu("Extension with tag ".concat(e," is malformed"),eL.MalformedExt)}}(F=ej||(ej={}))[F.TooSmallForHeader=0]="TooSmallForHeader",F[F.TooSmallForPayload=1]="TooSmallForPayload";class ch extends rU{constructor(e,t,i){super(19,e,i),this.name="DataTrackSerializeError",this.reason=t,this.reasonName=ej[t]}static tooSmallForHeader(){return new ch("Buffer cannot fit header",ej.TooSmallForHeader)}static tooSmallForPayload(){return new ch("Buffer cannot fit payload",ej.TooSmallForPayload)}}class cp{toBinary(){let e=this.toBinaryLengthBytes(),t=new ArrayBuffer(e),i=new DataView(t),n=this.toBinaryInto(i);if(e!==n)throw Error("".concat(this.constructor.name,".toBinary: written bytes (").concat(n," bytes) not equal to allocated array buffer length (").concat(e," bytes)."));return new Uint8Array(t)}}(B=eU||(eU={}))[B.UserTimestamp=2]="UserTimestamp",B[B.E2ee=1]="E2ee";class cm extends cp{}class cg extends cm{constructor(e){super(),this.timestamp=e}toBinaryLengthBytes(){return 2+cg.lengthBytes}toBinaryInto(e){let t=0;e.setUint8(t,cg.tag),t+=1,e.setUint8(t,cg.lengthBytes),t+=1,e.setBigUint64(t,this.timestamp),t+=8;let i=this.toBinaryLengthBytes();if(t!==i)throw Error("DataTrackUserTimestampExtension.toBinaryInto: Wrote ".concat(t," bytes but expected length was ").concat(i," bytes"));return t}toJSON(){return{tag:cg.tag,lengthBytes:cg.lengthBytes,timestamp:this.timestamp}}}cg.tag=eU.UserTimestamp,cg.lengthBytes=8;class cf extends cm{constructor(e,t){super(),this.keyIndex=e,this.iv=t}toBinaryLengthBytes(){return 2+cf.lengthBytes}toBinaryInto(e){let t=0;e.setUint8(t,cf.tag),t+=1,e.setUint8(t,cf.lengthBytes),t+=1,e.setUint8(t,this.keyIndex),t+=1;for(let i=0;i<this.iv.length;i+=1)e.setUint8(t,this.iv[i]),t+=1;let i=this.toBinaryLengthBytes();if(t!==i)throw Error("DataTrackE2eeExtension.toBinaryInto: Wrote ".concat(t," bytes but expected length was ").concat(i," bytes"));return t}toJSON(){return{tag:cf.tag,lengthBytes:cf.lengthBytes,keyIndex:this.keyIndex,iv:this.iv}}}cf.tag=eU.E2ee,cf.lengthBytes=13;class cv extends cp{constructor(){let e=arguments.length>0&&void 0!==arguments[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;if(this.e2ee&&(t+=this.e2ee.toBinaryInto(e)),this.userTimestamp){let i=this.userTimestamp.toBinaryInto(new DataView(e.buffer,e.byteOffset+t));t+=i}let i=this.toBinaryLengthBytes();if(t!==i)throw Error("DataTrackExtensions.toBinaryInto: Wrote ".concat(t," bytes but expected length was ").concat(i," bytes"));return t}static fromBinary(e){let t,i,n=oo(e),a=0;for(;n.byteLength-a>=2;){let e=n.getUint8(a);a+=1;let r=n.getUint8(a);if(a+=1,0!==e)switch(e){case eU.UserTimestamp:if(n.byteLength-a<cg.lengthBytes)throw cu.malformedExt(e);t=new cg(n.getBigUint64(a)),a+=r;break;case eU.E2ee:if(n.byteLength-a<cf.lengthBytes)throw cu.malformedExt(e);let s=n.getUint8(a),o=new Uint8Array(12);for(let e=0;e<o.length;e+=1){let t=a;t+=1,t+=+e,o[e]=n.getUint8(t)}i=new cf(s,o),a+=r;break;default:if(n.byteLength-a<r)throw cu.malformedExt(e);a+=r}}return[new cv({userTimestamp:t,e2ee:i}),n.byteLength]}toJSON(){var e,t,i,n;return{userTimestamp:null!=(t=null==(e=this.userTimestamp)?void 0:e.toJSON())?t:null,e2ee:null!=(n=null==(i=this.e2ee)?void 0:i.toJSON())?n:null}}}let cb={from:e=>({payload:e.payload,extensions:new cv({userTimestamp:e.userTimestamp?new cg(e.userTimestamp):void 0})}),lossyIntoFrame(e){var t;return{payload:e.payload,userTimestamp:null==(t=e.extensions.userTimestamp)?void 0:t.timestamp}}},ck=Symbol.for("lk.track"),cy=Symbol.for("lk.data-track");class cT{constructor(e,t,i){this.trackSymbol=ck,this.isLocal=!1,this.typeSymbol=cy,this.info=e,this.manager=t,this.publisherIdentity=i.publisherIdentity}subscribe(e){try{let[t,i]=this.manager.openSubscriptionStream(this.info.sid,null==e?void 0:e.signal,null==e?void 0:e.bufferSize);return i.catch(()=>{}),t}catch(e){throw e}}setPipelineOptions(e){this.manager.setPipelineOptions(this.info.sid,e)}}class cS extends cp{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=null!=(t=e.extensions)?t:new cv}extensionsMetrics(){let e=this.extensions.toBinaryLengthBytes(),t=Math.ceil((2+e)/4);return{lengthBytes:e,lengthWords:t,paddingLengthBytes:4*t-2-e}}toBinaryLengthBytes(){let{lengthBytes:e,paddingLengthBytes:t}=this.extensionsMetrics(),i=12;return e>0&&(i+=2+e+t),i}toBinaryInto(e){let t;if(e.byteLength<this.toBinaryLengthBytes())throw ch.tooSmallForHeader();let i=0;switch(this.marker){case eF.Inter:t=0;break;case eF.Final:t=1;break;case eF.Start:t=2;break;case eF.Single:t=3}i|=t<<3;let{lengthBytes:n,lengthWords:a,paddingLengthBytes:r}=this.extensionsMetrics();n>0&&(i|=4);let s=0;if(e.setUint8(s,i),s+=1,e.setUint8(s,0),s+=1,e.setUint16(s,this.trackHandle),s+=2,e.setUint16(s,this.sequence.value),s+=2,e.setUint16(s,this.frameNumber.value),s+=2,e.setUint32(s,this.timestamp.asTicks()),s+=4,n>0){e.setUint16(s,a-1),s+=2;let t=this.extensions.toBinaryInto(new DataView(e.buffer,e.byteOffset+s));s+=t;for(let t=0;t<r;t+=1)e.setUint8(s,0),s+=1}let o=this.toBinaryLengthBytes();if(s!==o)throw Error("DataTrackPacketHeader.toBinaryInto: Wrote ".concat(s," bytes but expected length
1was ").concat(o," bytes"));return o}static fromBinary(e){let t,i,n=oo(e);if(n.byteLength<12)throw cu.tooShort();let a=0,r=n.getUint8(a);a+=1;let s=r>>5&7;if(s>0)throw cu.unsupportedVersion(s);switch(r>>3&3){case 2:t=eF.Start;break;case 1:t=eF.Final;break;case 3:t=eF.Single;break;default:t=eF.Inter}a+=1;try{i=ol.fromNumber(n.getUint16(a))}catch(e){if(e instanceof oc&&(e.isReason(ex.Reserved)||e.isReason(ex.TooLarge)))throw cu.invalidHandle(e);throw e}a+=2;let o=oa.u16(n.getUint16(a));a+=2;let c=oa.u16(n.getUint16(a));a+=2;let l=or.fromRtpTicks(n.getUint32(a));a+=4;let d=new cv;if((r>>2&1)>0){if(n.byteLength-a<2)throw cu.missingExtWords();let e=n.getUint16(a),t=4*(e+1)-2;if((a+=2)+t>n.byteLength)throw cu.headerOverrun();let i=new DataView(n.buffer,n.byteOffset+a,t),[r,s]=cv.fromBinary(i);d=r,a+=s}return[new cS({marker:t,trackHandle:i,sequence:o,frameNumber:c,timestamp:l,extensions:d}),a]}toJSON(){return{marker:this.marker,trackHandle:this.trackHandle,sequence:this.sequence.value,frameNumber:this.frameNumber.value,timestamp:this.timestamp.asTicks(),extensions:this.extensions.toJSON()}}}(q=eF||(eF={}))[q.Start=0]="Start",q[q.Inter=1]="Inter",q[q.Final=2]="Final",q[q.Single=3]="Single";class cw extends cp{constructor(e,t){super(),this.header=e,this.payload=t}toBinaryLengthBytes(){return this.header.toBinaryLengthBytes()+this.payload.byteLength}toBinaryInto(e){let t;if(t=0+this.header.toBinaryInto(e),e.byteLength-t<this.payload.byteLength)throw ch.tooSmallForPayload();for(let i=0;i<this.payload.length;i+=1)e.setUint8(t,this.payload[i]),t+=1;let i=this.toBinaryLengthBytes();if(t!==i)throw Error("DataTrackPacket.toBinaryInto: Wrote ".concat(t," bytes but expected length was ").concat(i," bytes"));return i}static fromBinary(e){let t=oo(e),[i,n]=cS.fromBinary(t);return[new cw(i,new Uint8Array(t.buffer.slice(t.byteOffset+n,t.byteOffset+t.byteLength))),t.byteLength]}toJSON(){return{header:this.header.toJSON(),payload:this.payload}}}
1let cC=aI(es.DataTracks);class cx extends rU{constructor(e,t,i,n){super(19,"Frame ".concat(i," dropped: ").concat(e),n),this.name="DataTrackDepacketizerDropError",this.reason=t,this.reasonName=eB[t],this.frameNumber=i}static interrupted(e,t){return new cx("Interrupted by the start of a new frame ".concat(t),eB.Interrupted,e)}static unknownFrame(e){return new cx("Initial packet was never received.",eB.UnknownFrame,e)}static bufferFull(e){return new cx("Reorder buffer is full.",eB.BufferFull,e)}static incomplete(e,t,i){return new cx("Not all packets received before final packet. Received ".concat(t," packets, expected ").concat(i," packets."),eB.Incomplete,e)}}(V=eB||(eB={}))[V.Interrupted=0]="Interrupted",V[V.UnknownFrame=1]="UnknownFrame",V[V.BufferFull=2]="BufferFull",V[V.Incomplete=3]="Incomplete";class cE{constructor(){this.partials=new Map}push(e,t){switch(e.header.marker){case eF.Single:return this.frameFromSingle(e,t);case eF.Start:return this.beginPartial(e,t);case eF.Inter:case eF.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 i;if(e.header.marker!==eF.Single)throw Error("Depacketizer.frameFromSingle: packet.header.marker was not FrameMarker.Single, found ".concat(e.header.marker,"."));let n=null!=(i=null==t?void 0:t.maxPartialFrames)?i:1;if(this.partials.size>=n){let i=this.peekOldestPartialFrameNumber();if("number"!=typeof i)throw Error("Depacketizer.frameFromSingle: no olde
1st frame number found, but partials.size is ".concat(this.partials.size,"."));if(this.partials.delete(i),null==t?void 0:t.throwOnInterruption)throw cx.interrupted(i,e.header.frameNumber.value);cC.warn("Data track frame ".concat(i," was interrupted by single-packet frame ").concat(e.header.frameNumber.value,", dropping."))}return{payload:e.payload,extensions:e.header.extensions}}beginPartial(e,t){var i;if(e.header.marker!==eF.Start)throw Error("Depacketizer.beginPartial: packet.header.marker was not FrameMarker.Start, found ".concat(e.header.marker,"."));let n=e.header.sequence,a=e.header.frameNumber.value,r={startSequence:n,extensions:e.header.extensions,payloads:new Map([[n.value,e.payload]])},s=null!=(i=null==t?void 0:t.maxPartialFrames)?i:1;for(;this.partials.size>=s;){let e=this.peekOldestPartialFrameNumber();if("number"!=typeof e)break;if(this.partials.delete(e),null==t?void 0:t.throwOnInterruption)throw cx.interrupted(e,a);cC.warn("Data track partials full (max ".concat(s,"), evicted oldest frame ").concat(e," to make room for new frame ").concat(a,"."))}return this.partials.set(a,r),null}pushToPartial(e){if(e.header.marker!==eF.Inter&&e.header.marker!==eF.Final)throw Error("Depacketizer.pushToPartial: packet.header.marker was not FrameMarker.Inter or FrameMarker.Final, found ".concat(e.header.marker,"."));let t=e.header.frameNumber.value,i=this.partials.get(t);if(!i)throw this.partials.delete(t),cx.unknownFrame(t);if(i.payloads.size>=cE.MAX_BUFFER_PACKETS)throw this.partials.delete(t),cx.bufferFull(t);return(i.payloads.has(e.header.sequence.value)&&cC.warn("Data track frame ".concat(t," received duplicate packet for sequence ").concat(e.header.sequence.value,", so replacing with newly received packet.")),i.payloads.set(e.header.sequence.value,e.payload),e.header.marker===eF.Final)?this.finalize(t,i,e.header.sequence.value):null}finalize(e,t,i){let n=t.payloads.size,a=0;for(let e of t.payloads.values())a+=e.length;let r=new Uint8Array(a),s=t.startSequence.clone(),o=0;for(;;){let n=t.payloads.get(s.value);if(!n)break;t.payloads.delete(s.value);let a=r.length-o;if(n.length>a)throw Error("Depacketizer.finalize: Expected at least ".concat(n.length," more bytes left in the payload buffer, only got ").concat(a," bytes."));if(r.set(n,o),o+=n.length,s.value!=i){s.increment();continue}return this.partials.delete(e),{payload:r,extensions:t.extensions}}throw this.partials.delete(e),cx.incomplete(e,n,i-t.startSequence.value+1)}}cE.MAX_BUFFER_PACKETS=128,(H=eq||(eq={}))[H.Unpublished=0]="Unpublished",H[H.Timeout=1]="Timeout",H[H.Disconnected=2]="Disconnected",H[H.Cancelled=4]="Cancelled";class cP extends rU{constructor(e,t,i){super(22,e,i),this.name="DataTrackSubscribeError",this.reason=t,this.reasonName=eq[t]}static unpublished(){return new cP("The track has been unpublished and is no longer available",eq.Unpublished)}static timeout(){return new cP("Request to subscribe to data track timed-out",eq.Timeout)}static disconnected(){return new cP("Cannot subscribe to data track when disconnected",eq.Disconnected)}static cancelled(){return new cP("Subscription to data track cancelled by caller",eq.Cancelled)}}let cR=aI(es.DataTracks);class cI{constructor(e){var t,i;const n=null!==e.e2eeManager;if(e.info.usesE2ee!==n)throw Error("IncomingDataTrackPipeline: DataTrackInfo.usesE2ee must match presence of decryptionProvider");const a=new cE;this.publisherIdentity=e.publisherIdentity,this.e2eeManager=null!=(t=e.e2eeManager)?t:null,this.depacketizer=a,this.options=null!=(i=e.pipelineOptions)?i:{}}updateE2eeManager(e){this.e2eeManager=e}setOptions(e){this.options=e}processPacket(e){return aD(this,void 0,void 0,function*(){let t=this.depacketize(e);if(!t)return null;let i=yield this.decryptIfNeeded(t);return i||null})}depacketize(e){let t;try{t=this.depacketizer.push(e,{throwOnInterruption:!1,maxPartialFrames:this.options.maxPartialFrames})}catch(e){return cR.warn("Data frame depacketize error: ".concat(e)),null}return t}decryptIfNeeded(e){return aD(this,void 0,void 0,function*(){var t,i;let n,a=this.e2eeManager;if(!a)return e;let r=null!=(i=null==(t=e.extensions)?void 0:t.e2ee)?i:null;if(!r)return cR.error("Missing E2EE meta"),null;try{n=yield a.handleEncryptedData(e.payload,r.iv,this.publisherIdentity,r.keyIndex)}catch(e){return cR.error("Error decrypting packet: ".concat(e)),null}return e.payload=n.payload,e})}}let cN=aI(es.DataTracks);class c_ extends aL.EventEmitter{constructor(e){var t;super(),this.descriptors=new Map,this.subscriptionHandles=new Map,this.e2eeManager=null!=(t=null==e?void 0:e.e2eeManager)?t:null}updateE2eeManager(e){for(let t of(this.e2eeManager=e,this.descriptors.values())
1)"active"===t.subscription.type&&t.subscription.pipeline.updateE2eeManager(e)}setPipelineOptions(e,t){let i=this.descriptors.get(e);i?(i.pipelineOptions=t,"active"===i.subscription.type&&i.subscription.pipeline.setOptions(t)):cN.warn("Unknown track ".concat(e,", cannot set pipeline options."))}openSubscriptionStream(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:16,n=null,a=new sO,r=()=>{null==t||t.removeEventListener("abort",o)},s=()=>{if(r(),!n)return void cN.warn("ReadableStream subscribed to ".concat(e," was not started."));let t=this.descriptors.get(e);t?"active"!==t.subscription.type?cN.warn("Subscription for track ".concat(e," is not active, skipping cancel...")):(t.subscription.streamControllers.delete(n),0===t.subscription.streamControllers.size&&this.unSubscribeRequest(t.info.sid)):cN.warn("Unknown track ".concat(e,", skipping cancel..."))},o=()=>{var t;if(!n)return;let i=this.descriptors.get(e);(null==i?void 0:i.subscription.type)==="active"&&i.subscription.streamControllers.delete(n),n.error(cP.cancelled()),null==(t=a.reject)||t.call(a,cP.cancelled()),s()};return[new ReadableStream({start:i=>{n=i,this.subscribeRequest(e,t).then(()=>aD(this,void 0,void 0,function*(){var n,s,c;let l=this.descriptors.get(e);if(!l){cN.error("Unknown track ".concat(e));let t=cP.disconnected();i.error(t),null==(n=a.reject)||n.call(a,t);return}if("active"!==l.subscription.type){cN.error("Subscription for track ".concat(e," is not active"));let t=cP.disconnected();i.error(t),null==(s=a.reject)||s.call(a,t);return}(null==t?void 0:t.aborted)?o():(null==t||t.addEventListener("abort",o),l.subscription.streamControllers.set(i,r),null==(c=a.resolve)||c.call(a))})).catch(e=>{var t;i.error(e),null==(t=a.reject)||t.call(a,e)})},cancel:()=>{s()}},new CountQueuingStrategy({highWaterMark:i})),a.promise]}subscribeRequest(e,t){return aD(this,void 0,void 0,function*(){let i=this.descriptors.get(e);if(!i)throw Error("Cannot subscribe to unknown track");let n=(t,i,n)=>aD(this,void 0,void 0,function*(){if("active"===t.subscription.type)return;if("pending"!==t.subscription.type)throw Error("Descriptor for track ".concat(e," is not pending, found ").concat(t.subscription.type));let a=cl([i,n].filter(e=>void 0!==e)),r=new sO;t.subscription.completionFuture.promise.then(()=>{var e;return null==(e=r.resolve)?void 0:e.call(r)}).catch(e=>{var t;return null==(t=r.reject)?void 0:t.call(r,e)});let s=()=>{var e;if("pending"===t.subscription.type){if(t.subscription.pendingRequestCount-=1,(null==n?void 0:n.aborted)||t.subscription.pendingRequestCount<=0)return void t.subscription.cancel();null==(e=r.reject)||e.call(r,cP.cancelled())}};a.aborted&&s(),a.addEventListener("abort",s),yield r.promise,a.removeEventListener("abort",s)});switch(i.subscription.type){case"none":{i.subscription={type:"pending",completionFuture:new sO,pendingRequestCount:1,cancel:()=>{var t,n;let r=i.subscription;i.subscription={type:"none"},this.emit("sfuUpdateSubscription",{sid:e,subscribe:!1}),"pending"===r.type&&(null==(n=(t=r.completionFuture).reject)||n.call(t,a.aborted?cP.timeout():cP.cancelled()))}},this.emit("sfuUpdateSubscription",{sid:e,subscribe:!0});let a=cd(1e4);yield n(i,t,a);return}case"pending":i.subscription.pendingRequestCount+=1,yield n(i,t);return;case"active":return}})}querySubscribed(){return aD(this,void 0,void 0,function*(){return Array.from(this.descriptors.values()).filter(e=>"active"===e.subscription.type).map(e=>[e.info,e.publisherIdentity])})}unSubscribeRequest(e){var t;let i=this.descriptors.get(e);if(!i)throw Error("Cannot subscribe to unknown track");if("active"!==i.subscription.type)return void cN.warn("Unexpected descriptor state in unSubscribeRequest, expected active, found ".concat(null==(t=i.subscription)?void 0:t.type));this.closeStreamControllers(i.subscription.streamControllers,e);let n=i.subscription;i.subscription={type:"none"},this.subscriptionHandles.delete(n.subcriptionHandle),this.emit("sfuUpdateSubscription",{sid:e,subscribe:!1})}closeStreamControllers(e,t){for(let[i,n]of e){n();try{i.close()}catch(e){cN.warn("Failed to close readable stream for track ".concat(t,": ").concat(e))}}}receiveSfuPublicationUpdates(e){return aD(this,void 0,void 0,function*(){if(0===e.size)return;let t=new Map;for(let[i,n]of e.entries()){let e=new Set;for(let t of n)e.add(t.sid),this.descriptors.has(t.sid)||(yield this.handleTrackPublished(i,t));t.set(i,e)}for(let[e,i]of t.entries())for(let t of Array.from(this.descriptors.entries()).filter(t=>{let[i,n]=t;return n.publisherIdentity===e}).map(e=>{let[t]=e;return t}).filter(e=>!i.has(e)))this.handleTrackUnpublished(t)})}queryPublications(){return aD(this,void 0,void 0,function*(){return Array.from(this.descriptors.values()).map(e=>e.info)})}handleTrackPublished(e,t){return aD(this,void 0,void 0,function*(){if(this.descriptors.has(t.sid))return void cN.error("Existing descriptor for track ".concat(t.sid));let i={info:t,publisherIdentity:e,subscription:{type:"none"},pipelineOptions:{}};this.descriptors.set(i.info.sid,i);let n=new cT(i.info,this,{publisherIdentity:e});
1this.emit("trackPublished",{track:n})})}handleTrackUnpublished(e){let t=this.descriptors.get(e);t?(this.descriptors.delete(e),"active"===t.subscription.type&&(this.closeStreamControllers(t.subscription.streamControllers,e),this.subscriptionHandles.delete(t.subscription.subcriptionHandle)),this.emit("trackUnpublished",{sid:e,publisherIdentity:t.publisherIdentity})):cN.error("Unknown track ".concat(e))}receivedSfuSubscriberHandles(e){for(let[t,i]of e.entries())this.registerSubscriberHandle(t,i)}registerSubscriberHandle(e,t){var i,n;let a=this.descriptors.get(t);if(!a)return void cN.error("Unknown track ".concat(t));switch(a.subscription.type){case"none":return void cN.warn("No subscription for ".concat(t));case"active":a.subscription.subcriptionHandle=e,this.subscriptionHandles.set(e,t);return;case"pending":{let r=new cI({info:a.info,publisherIdentity:a.publisherIdentity,e2eeManager:this.e2eeManager,pipelineOptions:a.pipelineOptions}),s=a.subscription;a.subscription={type:"active",subcriptionHandle:e,pipeline:r,streamControllers:new Map},this.subscriptionHandles.set(e,t),null==(n=(i=s.completionFuture).resolve)||n.call(i)}}}packetReceived(e){return aD(this,void 0,void 0,function*(){let t;try{[t]=cw.fromBinary(e)}catch(e){cN.error("Failed to deserialize packet: ".concat(e));return}let i=this.subscriptionHandles.get(t.header.trackHandle);if(!i)return void cN.warn("Unknown subscriber handle ".concat(t.header.trackHandle));let n=this.descriptors.get(i);if(!n)return void cN.error("Missing descriptor for track ".concat(i));if("active"!==n.subscription.type)return void cN.warn("Received packet for track ".concat(i," without active subscription"));let a=yield n.subscription.pipeline.processPacket(t);if(a)for(let e of n.subscription.streamControllers.keys()){if(null!==e.desiredSize&&e.desiredSize<=0){cN.warn("Cannot send frame to subscribers: readable stream is full (desiredSize is ".concat(e.desiredSize,"). To increase this threshold, set a higher 'options.highWaterMark' when calling .subscribe()."));continue}let t=cb.lossyIntoFrame(a);e.enqueue(t)}})}resendSubscriptionUpdates(){for(let[e,t]of this.descriptors)"none"!==t.subscription.type&&this.emit("sfuUpdateSubscription",{sid:e,subscribe:!0})}handleRemoteParticipantDisconnected(e){var t,i;for(let n of this.descriptors.values())if(n.publisherIdentity===e)switch(n.subscription.type){case"none":break;case"pending":null==(i=(t=n.subscription.completionFuture).reject)||i.call(t,cP.disconnected());break;case"active":this.unSubscribeRequest(n.info.sid)}}reset(){var e,t;
1for(let i of this.descriptors.values())this.emit("trackUnpublished",{sid:i.info.sid,publisherIdentity:i.publisherIdentity}),"pending"===i.subscription.type&&(null==(t=(e=i.subscription.completionFuture).reject)||t.call(e,cP.disconnected())),"active"===i.subscription.type&&this.closeStreamControllers(i.subscription.streamControllers,i.info.sid);this.descriptors.clear(),this.subscriptionHandles.clear()}}class cD extends rU{constructor(e,t,i){super(19,e,i),this.name="DataTrackPacketizerError",this.reason=t,this.reasonName=eV[t]}static mtuTooShort(){return new cD("MTU is too short to send frame",eV.MtuTooShort)}}(z=eV||(eV={}))[z.MtuTooShort=0]="MtuTooShort";class cM{constructor(e,t){this.sequence=oa.u16(0),this.frameNumber=oa.u16(0),this.clock=os.rtpStartingNow(or.rtpRandom()),this.handle=e,this.mtuSizeBytes=t}static computeFrameMarker(e,t){return t<=1?eF.Single:0===e?eF.Start:e===t-1?eF.Final:eF.Inter}*packetize(e,t){var i;let n=this.frameNumber.getThenIncrement(),a={marker:eF.Inter,trackHandle:this.handle,sequence:oa.u16(0),frameNumber:n,timestamp:null!=(i=null==t?void 0:t.now)?i:this.clock.now(),extensions:e.extensions},r=new cS(a).toBinaryLengthBytes();if(r>=this.mtuSizeBytes)throw cD.mtuTooShort();let s=this.mtuSizeBytes-r,o=Math.ceil(e.payload.byteLength/s);for(let t=0,i=0;i<e.payload.byteLength;[t,i]=[t+1,i+s]){let n=this.sequence.getThenIncrement(),r=new cS(Object.assign(Object.assign({},a),{marker:cM.computeFrameMarker(t,o),sequence:n})),c=Math.min(s,e.payload.byteLength-i),l=new Uint8Array(e.payload.buffer,e.payload.byteOffset+i,c);yield new cw(r,l)}}}(W=eH||(eH={}))[W.NotAllowed=0]="NotAllowed",W[W.DuplicateName=1]="DuplicateName",W[W.Timeout=2]="Timeout",W[W.LimitReached=3]="LimitReached",W[W.Disconnected=4]="Disconnected",W[W.Cancelled=5]="Cancelled",W[W.InvalidName=6]="InvalidName",W[W.Unknown=7]="Unknown";class cO extends rU{constructor(e,t,i){super(21,e,i),this.name="DataTrackPublishError",this.reason=t,this.reasonName=eH[t],this.rawMessage=null==i?void 0:i.rawMessage}static notAllowed(e){return new cO("Data track publishing unauthorized",eH.NotAllowed,{rawMessage:e})}static duplicateName(e){return new cO("Track name already taken",eH.DuplicateName,{rawMessage:e})}static invalidName(e){return new cO("Track name is invalid",eH.InvalidName,{rawMessage:e})}static timeout(){return new cO("Publish data track timed-out. Does the LiveKit server support data tracks?",eH.Timeout)}static limitReached(e){return new cO("Data track publication limit reached",eH.LimitReached,{rawMessage:e})}static unknown(e,t){return new cO("Received RequestResponse for publishDataTrack, but reason was unrecognised (".concat(e,", ").concat(t,")"),eH.Unknown)}static disconnected(){return new cO("Room disconnected",eH.Disconnected)}static cancelled(){return new cO("Publish data track cancelled by caller",eH.Cancelled)}}(G=ez||(ez={}))[G.TrackUnpublished=0]="TrackUnpublished",G[G.Dropped=1]="Dropped";class cA extends rU{constructor(e,t,i){super(22,e,i),this.name="DataTrackPushFrameError",this.reason=t,this.reasonName=ez[t]}static trackUnpublished(){return new cA("Track is no longer published",ez.TrackUnpublished)}static dropped(e){return new cA("Frame was dropped",ez.Dropped,{cause:e})}}(K=eW||(eW={}))[K.Packetizer=0]="Packetizer",K[K.Encryption=1]="Encryption";class cL extends rU{constructor(e,t,i){super(21,e,i),this.name="DataTrackOutgoingPipelineError",this.reason=t,this.reasonName=eW[t]}static packetizer(e){return new cL("Error packetizing frame",eW.Packetizer,{cause:e})}static encryption(e){return new cL("Error encrypting frame",eW.Encryption,{cause:e})}}class cj{constructor(e,t){this.trackSymbol=ck,this.isLocal=!0,this.typeSymbol=cy,this.handle=null,this.log=aR,this.flushedFuture=new sO,this.isFlushed=!0,this.handleManagerReset=()=>{var e,t;null==(t=(e=this.flushedFuture).resolve)||t.call(e),this.manager.off("packetsFlushedChange",this.handleManagerPacketsFlushedChange),this.manager.off("reset",this.handleManagerReset)},this.handleManagerPacketsFlushedChange=e=>{var t,i;this.isFlushed=e.isFlushed,e.isFlushed&&(null==(i=(t=this.flushedFuture).resolve)||i.call(t),this.flushedFuture=new sO)},this.options=e,this.manager=t,this.log=aI(es.DataTracks),this.manager.on("packetsFlushedChange",this.handleManagerPacketsFlushedChange),this.manager.on("reset",this.handleManagerReset)}static withExplicitHandle(e,t,i){let n=new cj(e,t);return n.handle=i,n}get info(){let e=this.descriptor;return(null==e?void 0:e.type)==="active"?e.info:void 0}get descriptor(){return this.handle?this.manager.getDescriptor(this.handle):null}publish(e){return aD(this,void 0,void 0,function*(){try{this.handle=yield this.manager.publishRequest(this.options,e)}catch(e){throw e}})}isPublished(){var e;return(null==(e=this.descriptor)?void 0:e.type)==="active"&&"unpublished"!==this.descriptor.publishState}tryPush(e){if(!this.handle)throw cA.trackUnpublished();let t=cb.from(e);try{return this.manager.tryProcessAndSend(this.handle,t)}catch(e){throw e}}flush(){return aD(this,void 0,void 0,function*(){if(!this.isFlushed)return this.flushedFuture.promise})}unpublish(){return aD(this,void 0,void 0,function*(){if(!this.handle)return void aR.warn('Data track "'.concat(this.options.name,'" is not published, so unpublishing has no effect.'));try{yield this.manager.unpublishRequest(this.handle)}catch(e){throw e}})}}class cU{constructor(e){this.e2eeManager=e.e2eeManager,this.packetizer=new cM(e.info.pubHandle,cU.TRANSPORT_MTU_BYTES)}updateE2eeManager(e){this.e2eeManager=e}processFrame(e){return function(e,t,i){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var n,a=i.apply(e,t||[]),r=[];return n=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",function(e){return function(t){return Promise.resolve(t).then(e,l)}}),n[Symbol.asyncIterator]=function(){return this},n;function s(e,t){a[e]&&(n[e]=function(t){return new Promise(function(i,n){r.push([e,t,i,n])>1||o(e,t)})},t&&(n[e]=t(n[e])))}function o(e,t){try{var i;(i=a[e](t)).value instanceof aM?Promise.resolve(i.value.v).then(c,l):d(r[0][2],i)}catch(e){d(r[0][3],e)}}function c(e){o("next",e)}function l(e){o("throw",e)}function d(e,t){e(t),r.shift(),r.length&&o(r[0][0],r[0][1])}}(this,arguments,function*(){let t=yield aM(this.encryptIfNeeded(e));try{yield aM((yield*function(e){var t,i;return t={},n("next"),n("throw",function(e){throw e}),n("return"),t[Symbol.iterator]=function(){return this},t;function n(n,a){t[n]=e[n]?function(t){return(i=!i)?{value:aM(e[n](t)),done:!1}:a?a(t):t}:a}}(aO(this.packetizer.packetize(t)))))}catch(e){if(e instanceof cD)throw cL.packetizer(e);throw e}})}encryptIfNeeded(e){return aD(this,void 0,void 0,function*(){let t;if(!this.e2eeManager)return e;try{t=yield this.e2eeManager.encryptData(e.payload)}catch(e){throw cL.encryption(e)}return e.payload=t.payload,e.extensions.e2ee=new cf(t.keyIndex,t.iv),e})}}cU.TRANSPORT_MTU_BYTES=16e3;let cF=aI(es.DataTracks);
1class cB extends aL.EventEmitter{constructor(e){var t;super(),this.handleAllocator=new od,this.descriptors=new Map,this.inFlightPacketCounter=new Map,this.e2eeManager=null!=(t=null==e?void 0:e.e2eeManager)?t:null}static withDescriptors(e){let t=new cB;return t.descriptors=e,t}updateE2eeManager(e){for(let t of(this.e2eeManager=e,this.descriptors.values()))"active"===t.type&&t.pipeline.updateE2eeManager(e)}getDescriptor(e){var t;return null!=(t=this.descriptors.get(e))?t:null}tryProcessAndSend(e,t){return aD(this,void 0,void 0,function*(){let i=this.getDescriptor(e);if((null==i?void 0:i.type)!=="active"||"unpublished"===i.publishState)throw cA.trackUnpublished();if("republishing"===i.publishState)throw cA.dropped("Data track republishing");try{try{for(var n,a,r,s,o,c,l=!0,d=aO(i.pipeline.processFrame(t));!(n=(c=yield d.next()).done);l=!0){s=c.value,l=!1;let t=null!=(o=this.inFlightPacketCounter.get(e))?o:0;this.inFlightPacketCounter.set(e,t+1),0===t&&this.emit("packetsFlushedChange",{handle:e,isFlushed:!1}),this.emit("packetAvailable",{handle:e,bytes:s.toBinary()})}}catch(e){a={error:e}}finally{try{!l&&!n&&(r=d.return)&&(yield r.call(d))}finally{if(a)throw a.error}}}catch(e){throw cA.dropped(e)}})}handlePacketSendComplete(e){var t;let i=(null!=(t=this.inFlightPacketCounter.get(e))?t:0)-1;i<0&&(cF.warn("OutgoingDataTrackManager.handlePacketSendComplete: inFlightPacketCounter was decremented below 0 (got ".concat(this.inFlightPacketCounter," - resetting to 0. Were more packets send than were emitted?")),i=0),this.inFlightPacketCounter.set(e,i),0===i&&this.emit("packetsFlushedChange",{handle:e,isFlushed:!0})}publishRequest(e,t){return aD(this,void 0,void 0,function*(){let i=this.handleAllocator.get();if(!i)throw cO.limitReached();let n=cd(1e4),a=t?cl([t,n]):n;if(this.descriptors.has(i))throw Error("Descriptor for handle already exists");let r={type:"pending",completionFuture:new sO};this.descriptors.set(i,r);let s=()=>{var e,t;let a=this.descriptors.get(i);a?(this.descriptors.delete(i),this.emit("sfuUnpublishRequest",{handle:i}),"pending"===a.type&&(null==(t=(e=a.completionFuture).reject)||t.call(e,n.aborted?cO.timeout():cO.cancelled()))):cF.warn("No descriptor for ".concat(i))};return a.aborted?(s(),r.completionFuture.promise.then(()=>i)):(a.addEventListener("abort",s),this.emit("sfuPublishRequest",{handle:i,name:e.name,usesE2ee:null!==this.e2eeManager}),yield r.completionFuture.promise,a.removeEventListener("abort",s),this.emit("trackPublished",{track:cj.withExplicitHandle(e,this,i)}),i)})}queryPublished(){return Array.from(this.descriptors.values()).filter(e=>"active"===e.type).map(e=>e.info)}unpublishRequest(e){return aD(this,void 0,void 0,function*(){let t=this.descriptors.get(e);t?"active"!==t.type?cF.warn("Track ".concat(e," not active")):(this.emit("sfuUnpublishRequest",{handle:e}),yield t.unpublishingFuture.promise,this.inFlightPacketCounter.delete(e),this.emit("trackUnpublished",{sid:t.info.sid})):cF.warn("No descriptor for ".concat(e))})}receivedSfuPublishResponse(e,t){var i,n,a,r;let s=this.descriptors.get(e);if(!s)return void cF.warn("No descriptor for ".concat(e));switch(this.descriptors.delete(e),s.type){case"pending":if("ok"===t.type){let e,a=t.data,r=a.usesE2ee?this.e2eeManager:null;this.descriptors.set(a.pubHandle,(e=a,{type:"active",info:e,publishState:"published",pipeline:new cU({info:e,e2eeManager:r}),unpublishingFuture:new sO})),null==(n=(i=s.completionFuture).resolve)||n.call(i)}else null==(r=(a=s.completionFuture).reject)||r.call(a,t.error);return;case"active":if("republishing"!==s.publishState)return void cF.warn("Track ".concat(e," already active"));if("error"===t.type)return void cF.warn("Republish failed for track ".concat(e));cF.debug("Track ".concat(e," republished")),s.info.sid=t.data.sid,s.publishState="published",this.descriptors.set(s.info.pubHandle,s)}}receivedSfuUnpublishResponse(e){var t,i;let n=this.descriptors.get(e);n?(this.descriptors.delete(e),"active"!==n.type)?cF.warn("Track ".concat(e," not active")):(n.publishState="unpublished",null==(i=(t=n.unpublishingFuture).resolve)||i.call(t)):cF.warn("No descriptor for ".concat(e))}sfuWillRepublishTracks(){var e,t;for(let[i,n]of this.descriptors.entries())switch(n.type){case"pen
1ding":this.descriptors.delete(i),null==(t=(e=n.completionFuture).reject)||t.call(e,cO.disconnected());break;case"active":n.publishState="republishing",this.emit("sfuPublishRequest",{handle:n.info.pubHandle,name:n.info.name,usesE2ee:n.info.usesE2ee})}}reset(){return aD(this,void 0,void 0,function*(){var e,t,i,n;for(let a of(this.handleAllocator.reset(),this.descriptors.values()))switch(a.type){case"pending":null==(t=(e=a.completionFuture).reject)||t.call(e,cO.disconnected());break;case"active":null==(n=(i=a.unpublishingFuture).resolve)||n.call(i),yield this.unpublishRequest(a.info.pubHandle)}this.descriptors.clear(),this.inFlightPacketCounter.clear(),this.emit("reset")})}}class cq extends Error{constructor(e,t,i,n){super(t),this.code=e,this.message=cW(t,cq.MAX_MESSAGE_BYTES),this.data=i?cW(i,cq.MAX_DATA_BYTES):void 0,void 0!==(null==n?void 0:n.cause)&&(this.cause=null==n?void 0:n.cause)}static fromProto(e){return new cq(e.code,e.message,e.data)}toProto(){return new iG({code:this.code,message:this.message,data:this.data})}static builtIn(e,t,i){return new cq(cq.ErrorCode[e],cq.ErrorMessage[e],t,i)}}cq.MAX_MESSAGE_BYTES=256,cq.MAX_DATA_BYTES=15360,cq.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},cq.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 cV="lk.rpc_request",cH="lk.rpc_response";function cz(e){return new TextEncoder().encode(e).length}function cW(e,t){if(cz(e)<=t)return e;let i=0,n=e.length,a=new TextEncoder;for(;i<n;){let r=Math.floor((i+n+1)/2);a.encode(e.slice(0,r)).length<=t?i=r:n=r-1}return e.slice(0,i)}(J=eG||(eG={})).RPC_REQUEST_ID="lk.rpc_request_id",J.RPC_REQUEST_METHOD="lk.rpc_request_method",J.RPC_REQUEST_RESPONSE_TIMEOUT_MS="lk.rpc_request_response_timeout_ms",J.RPC_REQUEST_VERSION="l
1k.rpc_request_version";class cG extends aj{constructor(e,t,i,n){super(),this.pendingAcks=new Map,this.pendingResponses=new Map,this.log=e,this.outgoingDataStreamManager=t,this.getRemoteParticipantClientProtocol=i,this.getServerVersion=n}performRpc(e){return aD(this,arguments,void 0,function(e){var t=this;let{destinationIdentity:i,method:n,payload:a,responseTimeout:r=15e3}=e;return function*(){let e=t.getRemoteParticipantClientProtocol(i);if(cz(a)>15360&&e<1)throw cq.builtIn("REQUEST_PAYLOAD_TOO_LARGE");let s=t.getServerVersion();if(s&&0>sx(s,"1.8.0"))throw cq.builtIn("UNSUPPORTED_SERVER");let o=Math.max(r,8e3),c=crypto.randomUUID(),l=new sO,d=setTimeout(()=>{var e;t.pendingAcks.delete(c),null==(e=l.reject)||e.call(l,cq.builtIn("CONNECTION_TIMEOUT")),t.pendingResponses.delete(c),clearTimeout(u)},7e3);t.pendingAcks.set(c,{resolve:()=>{clearTimeout(d)},participantIdentity:i}),t.pendingResponses.set(c,{completionFuture:l,participantIdentity:i}),yield t.publishRpcRequest(i,c,n,a,o,e);let u=setTimeout(()=>{var e;t.pendingResponses.delete(c),null==(e=l.reject)||e.call(l,cq.builtIn("RESPONSE_TIMEOUT"))},r),h=l.promise.finally(()=>{clearTimeout(u),t.pendingAcks.has(c)&&(t.log.warn("RPC response received before ack",c),t.pendingAcks.delete(c),clearTimeout(d))});return[c,h]}()})}publishRpcRequest(e,t,i,n,a,r){return aD(this,void 0,void 0,function*(){if(r>=1){let r=yield this.outgoingDataStreamManager.streamText({topic:cV,destinationIdentities:[e],attributes:{[eG.RPC_REQUEST_ID]:t,[eG.RPC_REQUEST_METHOD]:i,[eG.RPC_REQUEST_RESPONSE_TIMEOUT_MS]:"".concat(a),[eG.RPC_REQUEST_VERSION]:"".concat(2)}});yield r.write(n),yield r.close();return}this.emit("sendDataPacket",{packet:new iD({destinationIdentities:[e],kind:iM.RELIABLE,value:{case:"rpcRequest",value:new iH({id:t,method:i,payload:n,responseTimeoutMs:a,version:1})}})})})}handleIncomingDataStream(e,t,i){return aD(this,void 0,void 0,function*(){let n,a=i[eG.RPC_REQUEST_ID];if(!a)return void this.log.warn("RPC data stream malformed: ".concat(eG.RPC_REQUEST_ID," not set."));let r=this.pendingResponses.get(a);if(r&&r.participantIdentity!==t)return void this.log.warn("RPC response stream for ".concat(a," arrived from unexpected sender ").concat(t,", expected ").concat(r.participantIdentity,". Ignoring."));try{n=yield e.readAll()}catch(e){this.log.warn("Error reading RPC response payload: ".concat(e)),this.handleIncomingRpcResponseFailure(a,cq.builtIn("APPLICATION_ERROR","Error reading RPC response payload",{cause:e}));return}this.handleIncomingRpcResponseSuccess(a,n)})}handleIncomingRpcResponseSuccess(e,t){var i,n;let a=this.pendingResponses.get(e);a?(null==(n=(i=a.completionFuture).resolve)||n.call(i,t),this.pendingResponses.delete(e)):this.log.error("Response received for unexpected RPC request",e)}handleIncomingRpcResponseFailure(e,t){var i,n;let a=this.pendingResponses.get(e);a?(null==(n=(i=a.completionFuture).reject)||n.call(i,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[t,{participantIdentity:i}]of this.pendingAcks)i===e&&this.pendingAcks.delete(t);for(let[i,{participantIdentity:n,completionFuture:a}]of this.pendingResponses)n===e&&(null==(t=a.reject)||t.call(a,cq.builtIn("RECIPIENT_DISCONNECTED")),this.pendingResponses.delete(i))}}class cK extends aj{constructor(e,t,i){super(),this.rpcHandlers=new Map,this.log=e,this.outgoingDataStreamManager=t,this.getRemoteParticipantClientProtocol=i}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 aD(this,void 0,void 0,function*(){var i;let n;if(this.publishRpcAck(e,t.id),1!==t.version)return void this.publishRpcResponsePacket(e,t.id,null,cq.builtIn("UNSUPPORTED_VERSION"));let a=this.rpcHandlers.get(t.method);if(!a)return void this.publishRpcResponsePacket(e,t.id,null,cq.builtIn("UNSUPPORTED_METHOD"));try{n=yield a({requestId:t.id,callerIdentity:e,payload:t.payload,responseTimeout:t.responseTimeoutMs})}catch(a){let n;a instanceof cq?n=a:(this.log.warn("Uncaught error returned by RPC handler for ".concat(t.method,". Returning APPLICATION_ERROR instead."),a),n=cq.builtIn("APPLICATION_ERROR","Uncaught error: ".concat(null!=(i=null==a?void 0:a.message)?i:a),{
1cause:a})),this.publishRpcResponsePacket(e,t.id,null,n);return}yield this.publishRpcResponse(e,t.id,null!=n?n:"")})}handleIncomingDataStream(e,t,i){return aD(this,void 0,void 0,function*(){let n,a,r=i[eG.RPC_REQUEST_ID],s=i[eG.RPC_REQUEST_METHOD],o=parseInt(i[eG.RPC_REQUEST_RESPONSE_TIMEOUT_MS],10),c=parseInt(i[eG.RPC_REQUEST_VERSION],10);if(!r||!s||Number.isNaN(o)||Number.isNaN(c)){this.log.warn("RPC data stream malformed: ".concat(eG.RPC_REQUEST_ID," / ").concat(eG.RPC_REQUEST_METHOD," / ").concat(eG.RPC_REQUEST_RESPONSE_TIMEOUT_MS," / ").concat(eG.RPC_REQUEST_VERSION," not set.")),this.publishRpcResponsePacket(t,r,null,cq.builtIn("APPLICATION_ERROR","RPC data stream malformed"));return}if(this.publishRpcAck(t,r),2!==c)return void this.publishRpcResponsePacket(t,r,null,cq.builtIn("UNSUPPORTED_VERSION"));try{n=yield e.readAll()}catch(e){this.log.warn("Error reading RPC request payload: ".concat(e)),this.publishRpcResponsePacket(t,r,null,cq.builtIn("APPLICATION_ERROR","Error reading RPC request payload",{cause:e}));return}let l=this.rpcHandlers.get(s);if(!l)return void this.publishRpcResponsePacket(t,r,null,cq.builtIn("UNSUPPORTED_METHOD"));try{a=yield l({requestId:r,callerIdentity:t,payload:n,responseTimeout:o})}catch(i){let e;i instanceof cq?e=i:(this.log.warn("Uncaught error returned by RPC handler for ".concat(s,". Returning APPLICATION_ERROR instead."),i),e=cq.builtIn("APPLICATION_ERROR")),this.publishRpcResponsePacket(t,r,null,e);return}yield this.publishRpcResponse(t,r,null!=a?a:"")})}publishRpcAck(e,t){this.emit("sendDataPacket",{packet:new iD({destinationIdentities:[e],kind:iM.RELIABLE,value:{case:"rpcAck",value:new iz({requestId:t})}})})}publishRpcResponsePacket(e,t,i,n){this.emit("sendDataPacket",{packet:new iD({destinationIdentities:[e],kind:iM.RELIABLE,value:{case:"rpcResponse",value:new iW({requestId:t,value:n?{case:"error",value:n.toProto()}:{case:"payload",value:null!=i?i:""}})}})})}publishRpcResponse(e,t,i){return aD(this,void 0,void 0,function*(){if(this.getRemoteParticipantClientProtocol(e)>=1){let n=yield this.outgoingDataStreamManager.streamText({topic:cH,destinationIdentities:[e],attributes:{[eG.RPC_REQUEST_ID]:t}});yield n.write(i),yield n.close();return}if(cz(i)>15360){this.log.warn("RPC Response payload too large for request ".concat(t,". To send larger responses, consider updating the sending client.")),this.publishRpcResponsePacket(e,t,null,cq.builtIn("RESPONSE_PAYLOAD_TOO_LARGE"));return}this.publishRpcResponsePacket(e,t,i,null)})}}class cJ extends s3{constructor(e,t,i,n,a,r){super(e,t,sa.Kind.Audio,i,r),this.monitorReceiver=()=>aD(this,void 0,void 0,function*(){if(!this.receiver){this._currentBitrate=0;return}let e=yield this.getReceiverStats();e&&this.prevStats&&this.receiver&&(this._currentBitrate=s2(e,this.prevStats)),this.prevStats=e}),this.audioContext=n,this.webAudioPluginNodes=[],a&&(this.sinkId=a.deviceId)}setVolume(e){var t;for(let i of this.attachedElements)this.audioContext?null==(t=this.gainNode)||t.gain.setTargetAtTime(e,0,.1):i.volume=e;sk()&&this._mediaStreamTrack._setVolume(e),this.elementVolume=e}getVolume(){if(this.elementVolume)return this.elementVolume;if(sk())return 1;let e=0;return this.attachedElements.forEach(t=>{t.volume>e&&(e=t.volume)}),e}setSinkId(e){return aD(this,void 0,void 0,function*(){this.sinkId=e,yield Promise.all(this.attachedElements.map(t=>{if(sh(t))return t.setSinkId(e)}))})}attach(e){let t=0===this.attachedElements.length;return e?super.attach(e):e=super.attach(),this.sinkId&&sh(e)&&e.setSinkId(this.sinkId).catch(e=>{this.log.error("Failed to set sink id on remote audio track",e,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 i=this.sourceNode;
1this.webAudioPluginNodes.forEach(e=>{i.connect(e),i=e}),this.gainNode=e.createGain(),i.connect(this.gainNode),this.gainNode.connect(e.destination),this.elementVolume&&this.gainNode.gain.setTargetAtTime(this.elementVolume,0,.1),"running"!==e.state&&e.resume().then(()=>{"running"!==e.state&&this.emit(ef.AudioPlaybackFailed,Error("Audio Context couldn't be started automatically"))}).catch(e=>{this.emit(ef.AudioPlaybackFailed,e)})}disconnectWebAudio(){var e,t;null==(e=this.gainNode)||e.disconnect(),null==(t=this.sourceNode)||t.disconnect(),this.gainNode=void 0,this.sourceNode=void 0}getReceiverStats(){return aD(this,void 0,void 0,function*(){let e;if(this.receiver&&this.receiver.getStats)return(yield this.receiver.getStats()).forEach(t=>{"inbound-rtp"===t.type&&(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 cQ extends aL.EventEmitter{constructor(e,t,i,n){var a;super(),this.metadataMuted=!1,this.encryption=ix.NONE,this.log=aR,this.handleMuted=()=>{this.emit(ef.Muted)},this.handleUnmuted=()=>{this.emit(ef.Unmuted)},this.log=aI(null!=(a=null==n?void 0:n.loggerName)?a:es.Publication),this.loggerContextCb=this.loggerContextCb,this.setMaxListeners(100),this.kind=e,this.trackSid=t,this.trackName=i,this.source=sa.Source.Unknown}setTrack(e){this.track&&(this.track.off(ef.Muted,this.handleMuted),this.track.off(ef.Unmuted,this.handleUnmuted)),this.track=e,e&&(e.on(ef.Muted,this.handleMuted),e.on(ef.Unmuted,this.handleUnmuted))}get logContext(){var e;return Object.assign(Object.assign({},null==(e=this.loggerContextCb)?void 0:e.call(this)),se(this))}get isMuted(){return this.metadataMuted}get isEnabled(){return!0}get isSubscribed(){return void 0!==this.track}get isEncrypted(){return this.encryption!==ix.NONE}get audioTrack(){if(sq(this.track))return this.track}get videoTrack(){if(sV(this.track))return this.track}updateInfo(e){this.trackSid=e.sid,this.trackName=e.name,this.source=sa.sourceFromProto(e.source),this.mimeType=e.mimeType,this.kind===sa.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}))}}($=(Q=cQ||(cQ={})).SubscriptionStatus||(Q.SubscriptionStatus={})).Desired="desired",$.Subscribed="subscribed",$.Unsubscribed="unsubscribed",(Y=Q.PermissionStatus||(Q.PermissionStatus={})).Allowed="allowed",Y.NotAllowed="not_allowed";class c$ extends cQ{get isUpstreamPaused(){var e;return null==(e=this.track)?void 0:e.isUpstreamPaused}constructor(e,t,i,n){super(e,t.sid,t.name,n),this.track=void 0,this.handleTrackEnded=()=>{this.emit(ef.Ended)},this.handleCpuConstrained=()=>{this.track&&sV(this.track)&&this.emit(ef.CpuConstrained,this.track)},this.updateInfo(t),this.setTrack(i)}setTrack(e){this.track&&(this.track.off(ef.Ended,this.handleTrackEnded),this.track.off(ef.CpuConstrained,this.handleCpuConstrained)),super.setTrack(e),e&&(e.on(ef.Ended,this.handleTrackEnded),e.on(ef.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 aD(this,void 0,void 0,function*(){var e;return null==(e=this.track)?void 0:e.mute()})}unmute(){return aD(this,void 0,void 0,function*(){var e;return null==(e=this.track)?void 0:e.unmute()})}pauseUpstream(){return aD(this,void 0,void 0,function*(){var e;yield null==(e=this.track)?void 0:e.pauseUpstream()})}resumeUpstream(){return aD(this,void 0,void 0,function*(){var e;yield null==(e=this.track)?void 0:e.resumeUpstream()})}getTrackFeatures(){var e;if(!sq(this.track))return[];{let t=this.track.getSourceTrackSettings(),i=new Set;return t.autoGainControl&&i.add(ig.TF_AUTO_GAIN_CONTROL),t.echoCancellation&&i.add(ig.TF_ECHO_CANCELLATION),t.noiseSuppression&&i.add(ig.TF_NOISE_SUPPRESSION),t.channelCount&&t.channelCount>1&&i.add(ig.TF_STEREO),(null==(e=this.options)?void 0:e.dtx)||i.add(ig.TF_NO_DTX),this.track.enhancedNoiseCancellation&&i.add(ig.TF_ENHANCED_NOISE_CANCELLATION),Array.from(i.values())}}}function cY(e,t){return aD(this,void 0,void 0,function*(){null!=e||(e={});let i=!1,{audioProcessor:n,videoProcessor:a,optionsWithoutProcessor:r}=st(e),s=r.audio,o=r.video;
1if(n&&"object"==typeof r.audio&&(r.audio.processor=n),a&&"object"==typeof r.video&&(r.video.processor=a),e.audio&&"object"==typeof r.audio&&"string"==typeof r.audio.deviceId){let e=r.audio.deviceId;r.audio.deviceId={exact:e},i=!0,s=Object.assign(Object.assign({},r.audio),{deviceId:{ideal:e}})}if(r.video&&"object"==typeof r.video&&"string"==typeof r.video.deviceId){let e=r.video.deviceId;r.video.deviceId={exact:e},i=!0,o=Object.assign(Object.assign({},r.video),{deviceId:{ideal:e}})}!0===r.audio?r.audio={deviceId:"default"}:"object"==typeof r.audio&&null!==r.audio&&(r.audio=Object.assign(Object.assign({},r.audio),{deviceId:r.audio.deviceId||"default"})),!0===r.video?r.video={deviceId:"default"}:"object"!=typeof r.video||r.video.deviceId||(r.video.deviceId="default");let c=r5(r3(r,oD,oM)),l=navigator.mediaDevices.getUserMedia(c);r.audio&&(on.userMediaPromiseMap.set("audioinput",l),l.catch(()=>on.userMediaPromiseMap.delete("audioinput"))),r.video&&(on.userMediaPromiseMap.set("videoinput",l),l.catch(()=>on.userMediaPromiseMap.delete("videoinput")));try{let e=yield l;return yield Promise.all(e.getTracks().map(i=>aD(this,void 0,void 0,function*(){let r,s="audio"===i.kind?c.audio:c.video;"boolean"!=typeof s&&(r=s);let o=i.getSettings().deviceId;(null==r?void 0:r.deviceId)&&sA(r.deviceId)!==o?r.deviceId=o:r||(r={deviceId:o});let l=function(e,t,i){switch(e.kind){case"audio":return new oq(e,t,!1,void 0,i);case"video":return new o0(e,t,!1,i);default:throw new rq("unsupported track type: ".concat(e.kind))}}(i,r,t);return l.kind===sa.Kind.Video?l.source=sa.Source.Camera:l.kind===sa.Kind.Audio&&(l.source=sa.Source.Microphone),l.mediaStream=e,sq(l)&&n?yield l.setProcessor(n):sV(l)&&a&&(yield l.setProcessor(a)),l})))}catch(n){if(!i)throw n;return cY(Object.assign(Object.assign({},e),{audio:s,video:o}),t)}})}(X=eK||(eK={})).Excellent="excellent",X.Good="good",X.Poor="poor",X.Lost="lost",X.Unknown="unknown";class cX extends aL.EventEmitter{get logContext(){var e,t;return Object.assign({},null==(t=null==(e=this.loggerOptions)?void 0:e.loggerContextCb)?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(null==(e=this.permissions)?void 0:e.agent)||this.kind===iw.AGENT}get isActive(){var e;return(null==(e=this.participantInfo)?void 0:e.state)===iS.ACTIVE}get kind(){return this._kind}get attributes(){return Object.freeze(Object.assign({},this._attributes))}constructor(e,t,i,n,a,r){var s;let o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:iw.STANDARD;super(),this.audioLevel=0,this.isSpeaking=!1,this._connectionQuality=eK.Unknown,this.log=aR,this.loggerOptions=r,this.log=aI(null!=(s=null==r?void 0:r.loggerName)?s:es.Participant,()=>this.logContext),this.setMaxListeners(100),this.sid=e,this.identity=t,this.name=i,this.metadata=n,this.audioTrackPublications=new Map,this.videoTrackPublications=new Map,this.trackPublications=new Map,this._kind=o,this._attributes=null!=a?a:{}}getTrackPublications(){return Array.from(this.trackPublications.values())}getTrackPublication(e){for(let[,t]of this.trackPublications)if(t.source===e)return t}getTrackPublicationByName(e){for(let[,t]of this.trackPublications)if(t.trackName===e)return t}waitUntilActive(){return this.isActive?Promise.resolve():(this.activeFuture||(this.activeFuture=new sO,this.once(em.Active,()=>{var e,t;null==(t=null==(e=this.activeFuture)?void 0:e.resolve)||t.call(e),this.activeFuture=void 0})),this.activeFuture.promise)}get connectionQuality(){return this._connectionQuality}get isCameraEnabled(){var e;let t=this.getTrackPublication(sa.Source.Camera);return!(null==(e=null==t?void 0:t.isMuted)||e)}get isMicrophoneEnabled(){var e;let t=this.getTrackPublication(sa.Source.Microphone);return!(null==(e=null==t?void 0:t.isMuted)||e)}get isScreenShareEnabled(){return!!this.getTrackPublication(sa.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===iS.ACTIVE&&(null==(t=this.participantInfo)?void 0:t.state)!==iS.ACTIVE&&this.emit
1(em.Active),e.permission&&this.setPermissions(e.permission),this.participantInfo=e,!0)}_setMetadata(e){let t=this.metadata!==e,i=this.metadata;this.metadata=e,t&&this.emit(em.ParticipantMetadataChanged,i)}_setName(e){let t=this.name!==e;this.name=e,t&&this.emit(em.ParticipantNameChanged,e)}_setAttributes(e){let t=function(e,t){var i;void 0===e&&(e={}),void 0===t&&(t={});let n=[...Object.keys(t),...Object.keys(e)],a={};for(let r of n)e[r]!==t[r]&&(a[r]=null!=(i=t[r])?i:"");return a}(this.attributes,e);this._attributes=e,Object.keys(t).length>0&&this.emit(em.AttributesChanged,t)}setPermissions(e){var t,i,n,a,r,s;let o=this.permissions,c=e.canPublish!==(null==(t=this.permissions)?void 0:t.canPublish)||e.canSubscribe!==(null==(i=this.permissions)?void 0:i.canSubscribe)||e.canPublishData!==(null==(n=this.permissions)?void 0:n.canPublishData)||e.hidden!==(null==(a=this.permissions)?void 0:a.hidden)||e.recorder!==(null==(r=this.permissions)?void 0:r.recorder)||e.canPublishSources.length!==this.permissions.canPublishSources.length||e.canPublishSources.some((e,t)=>{var i;return e!==(null==(i=this.permissions)?void 0:i.canPublishSources[t])})||e.canSubscribeMetrics!==(null==(s=this.permissions)?void 0:s.canSubscribeMetrics);return this.permissions=e,c&&this.emit(em.ParticipantPermissionsChanged,o),c}setIsSpeaking(e){e!==this.isSpeaking&&(this.isSpeaking=e,e&&(this.lastSpokeAt=new Date),this.emit(em.IsSpeakingChanged,e))}setConnectionQuality(e){let t=this._connectionQuality;this._connectionQuality=function(e){switch(e){case id.EXCELLENT:return eK.Excellent;case id.GOOD:return eK.Good;case id.POOR:return eK.Poor;case id.LOST:return eK.Lost;default:return eK.Unknown}}(e),t!==this._connectionQuality&&this.emit(em.ConnectionQualityChanged,this._connectionQuality)}setDisconnected(){var e,t;this.activeFuture&&(null==(t=(e=this.activeFuture).reject)||t.call(e,Error("Participant disconnected")),this.activeFuture=void 0)}setAudioContext(e){this.audioContext=e,this.audioTrackPublications.forEach(t=>sq(t.track)&&t.track.setAudioContext(e))}addTrackPublication(e){switch(e.on(ef.Muted,()=>{this.emit(em.TrackMuted,e)}),e.on(ef.Unmuted,()=>{this.emit(em.TrackUnmuted,e)}),e.track&&(e.track.sid=e.trackSid),this.trackPublications.set(e.trackSid,e),e.kind){case sa.Kind.Audio:this.audioTrackPublications.set(e.trackSid,e);break;case sa.Kind.Video:this.videoTrackPublications.set(e.trackSid,e)}}}class cZ extends cX{constructor(e,t,i,n,a,r,s,o){super(e,t,void 0,void 0,void 0,{loggerName:n.loggerName,loggerContextCb:()=>this.engine.logContext}),this.pendingPublishing=new Set,this.pendingPublishPromises=new Map,this.participantTrackPermissions=[],this.allParticipantsAllowedToSubscribe=!0,this.encryptionType=ix.NONE,this.e2eeStateMutex=new e2,this.enabledPublishVideoCodecs=[],this.handleReconnecting=()=>{this.reconnectFuture||(this.reconnectFuture=new sO)},this.handleReconnected=()=>{var e,t;null==(t=null==(e=this.reconnectFuture)?void 0:e.resolve)||t.call(e),this.reconnectFuture=void 0,this.updateTrackSubscriptionPermissions()},this.handleClosing=()=>{var e,t,i,n,a,r;this.reconnectFuture&&(this.reconnectFuture.promise.catch(e=>this.log.warn(e.message)),null==(t=null==(e=this.reconnectFuture)?void 0:e.reject)||t.call(e,Error("Got disconnected during reconnection attempt")),this.reconnectFuture=void 0),this.signalConnectedFuture&&(null==(n=(i=this.signalConnectedFuture).reject)||n.call(i,Error("Got disconnected without signal connected")),this.signalConnectedFuture=void 0),null==(r=null==(a=this.activeAgentFuture)?void 0:a.reject)||r.call(a,Error("Got disconnected without active agent present")),this.activeAgentFuture=void 0,this.firstActiveAgent=void 0},this.handleSignalConnected=e=>{var t,i;e.participant&&this.updateInfo(e.participant),this.signalConnectedFuture||(this.signalConnectedFuture=new sO),null==(i=(t=this.signalConnectedFuture).resolve)||i.call(t)},this.handleSignalRequestResponse=e=>{let{requestId:t,reason:i,message:n}=e,a=this.pendingSignalRequests.get(t);if(a&&(i!==av.OK&&a.reject(new rG(n,i)),this.pendingSignalRequests.delete(t)),"publishDataTrack"===e.request.case){let t;switch(e.reason){case av.NOT_ALLOWED:t=cO.notAllowed(e.message);break;case av.DUPLICATE_NAME:t=cO.duplicateName(e.message);break;
1case av.INVALID_NAME:t=cO.invalidName(e.message);break;case av.LIMIT_EXCEEDED:t=cO.limitReached(e.message);break;default:t=cO.unknown(e.reason,e.message)}this.roomOutgoingDataTrackManager.receivedSfuPublishResponse(e.request.value.pubHandle,{type:"error",error:t})}},this.updateTrackSubscriptionPermissions=()=>{this.log.debug("updating track subscription permissions",{allParticipantsAllowed:this.allParticipantsAllowedToSubscribe,participantTrackPermissions:this.participantTrackPermissions}),this.engine.client.sendUpdateSubscriptionPermissions(this.allParticipantsAllowedToSubscribe,this.participantTrackPermissions.map(e=>(function(e){var t,i,n;if(!e.participantSid&&!e.participantIdentity)throw Error("Invalid track permission, must provide at least one of participantIdentity and participantSid");return new an({participantIdentity:null!=(t=e.participantIdentity)?t:"",participantSid:null!=(i=e.participantSid)?i:"",allTracks:null!=(n=e.allowAll)&&n,trackSids:e.allowedTrackSids||[]})})(e)))},this.onTrackUnmuted=e=>{this.onTrackMuted(e,e.isUpstreamPaused)},this.onTrackMuted=(e,t)=>{(void 0===t&&(t=!0),e.sid)?this.engine.updateMuteStatus(e.sid,t):this.log.error("could not update mute status for unpublished track",se(e))},this.onTrackUpstreamPaused=e=>{this.log.debug("upstream paused",se(e)),this.onTrackMuted(e,!0)},this.onTrackUpstreamResumed=e=>{this.log.debug("upstream resumed",se(e)),this.onTrackMuted(e,e.isMuted)},this.onTrackFeatureUpdate=e=>{let t=this.audioTrackPublications.get(e.sid);t?this.engine.client.sendUpdateLocalAudioTrack(t.trackSid,t.getTrackFeatures()):this.log.warn("Could not update local audio track settings, missing publication for track ".concat(e.sid))},this.onTrackCpuConstrained=(e,t)=>{this.log.debug("track cpu constrained",se(t)),this.emit(em.LocalTrackCpuConstrained,e,t)},this.handleSubscribedQualityUpdate=e=>aD(this,void 0,void 0,function*(){if(!(null==(o=this.roomOptions)?void 0:o.dynacast))return;let t=this.videoTrackPublications.get(e.trackSid);if(!t)return void this.log.warn("received subscribed quality update for unknown track",{trackSid:e.trackSid});if(!t.videoTrack)return;let i=yield t.videoTrack.setPublishingCodecs(e.subscribedCodecs);try{for(var n,a,r,s,o,c,l=!0,d=aO(i);!(n=(c=yield d.next()).done);l=!0)s=c.value,l=!1,rZ(s)&&(this.log.debug("publish ".concat(s," for ").concat(t.videoTrack.sid),se(t)),yield this.publishAdditionalCodecForTrack(t.videoTrack,s,t.options))}catch(e){a={error:e}}finally{try{!l&&!n&&(r=d.return)&&(yield r.call(d))}finally{if(a)throw a.error}}}),this.handleLocalTrackUnpublished=e=>{let t=this.trackPublications.get(e.trackSid);t?this.unpublishTrack(t.track):this.log.warn("received unpublished event for unknown track",{trackSid:e.trackSid})},this.handleTrackEnded=e=>aD(this,void 0,void 0,function*(){if(e.source===sa.Source.ScreenShare||e.source===sa.Source.ScreenShareAudio)this.log.debug("unpublishing local track due to TrackEnded",se(e)),this.unpublishTrack(e);else if(e.isUserProvided)yield e.mute();else if(sz(e)||sH(e))try{if(sb())try{let t=yield null==navigator?void 0:navigator.permissions.query({name:e.source===sa.Source.Camera?"camera":"microphone"});if(t&&"denied"===t.state)throw this.log.warn("user has revoked access to ".concat(e.source),se(e)),t.onchange=()=>{"denied"!==t.state&&(e.isMuted||e.restartTrack(),t.onchange=null)},Error("GetUserMedia Permission denied")}catch(e){}e.isMuted||(this.log.debug("track ended, attempting to use a different device",se(e)),sz(e)?yield e.restartTrack({deviceId:"default"}):yield e.restartTrack())}catch(t){this.log.warn("could not restart track, muting instead",se(e)),yield e.mute()}}),this.audioTrackPublications=new Map,this.videoTrackPublications=new Map,this.trackPublications=new Map,this.engine=i,this.roomOptions=n,this.setupEngine(i),this.activeDeviceMap=new Map([["audioinput","default"],["videoinput","default"],["audiooutput","default"]]),this.pendingSignalRequests=new Map,this.roomOutgoingDataStreamManager=a,this.roomOutgoingDataTrackManager=r,this.rpcClientManager=s,this.rpcServerManager=o}get lastCameraError(){return this.cameraError}get lastMicrophoneError(){return this.microphoneError}get isE2EEEnabled(){return this.encryptionType!==ix.NONE}getTrackPublication(e){let t=super.getTrackPublication(e);if(t)return t}getTrackPublicationByName(e){let t=super.getTrackPublicationByName(e);
1if(t)return t}setupEngine(e){var t;this.engine=e,this.engine.on(eg.RemoteMute,(e,t)=>{let i=this.trackPublications.get(e);i&&i.track&&(t?i.mute():i.unmute())}),(null==(t=this.signalConnectedFuture)?void 0:t.isResolved)&&(this.signalConnectedFuture=void 0),this.engine.on(eg.Connected,this.handleReconnected).on(eg.SignalConnected,this.handleSignalConnected).on(eg.SignalRestarted,this.handleReconnected).on(eg.SignalResumed,this.handleReconnected).on(eg.Restarting,this.handleReconnecting).on(eg.Resuming,this.handleReconnecting).on(eg.LocalTrackUnpublished,this.handleLocalTrackUnpublished).on(eg.SubscribedQualityUpdate,this.handleSubscribedQualityUpdate).on(eg.Closing,this.handleClosing).on(eg.SignalRequestResponse,this.handleSignalRequestResponse)}setMetadata(e){return aD(this,void 0,void 0,function*(){yield this.requestMetadataUpdate({metadata:e})})}setName(e){return aD(this,void 0,void 0,function*(){yield this.requestMetadataUpdate({name:e})})}setAttributes(e){return aD(this,void 0,void 0,function*(){yield this.requestMetadataUpdate({attributes:e})})}requestMetadataUpdate(e){return aD(this,arguments,void 0,function(e){var t=this;let{metadata:i,name:n,attributes:a}=e;return function*(){return new r_((e,r)=>aD(t,void 0,void 0,function*(){var t,s;try{let o=!1,c=yield this.engine.client.sendUpdateLocalMetadata(null!=(t=null!=i?i:this.metadata)?t:"",null!=(s=null!=n?n:this.name)?s:"",a),l=performance.now();for(this.pendingSignalRequests.set(c,{resolve:e,reject:e=>{r(e),o=!0},values:{name:n,metadata:i,attributes:a}});performance.now()-l<5e3&&!o;){if((!n||this.name===n)&&(!i||this.metadata===i)&&(!a||Object.entries(a).every(e=>{let[t,i]=e;return this.attributes[t]===i||""===i&&!this.attributes[t]}))){this.pendingSignalRequests.delete(c),e();return}yield sc(50)}r(new rG("Request to update local metadata timed out","TimeoutError"))}catch(e){e instanceof Error?r(e):r(Error(String(e)))}}))}()})}setCameraEnabled(e,t,i){return this.setTrackEnabled(sa.Source.Camera,e,t,i)}setMicrophoneEnabled(e,t,i){return this.setTrackEnabled(sa.Source.Microphone,e,t,i)}setScreenShareEnabled(e,t,i){return this.setTrackEnabled(sa.Source.ScreenShare,e,t,i)}setE2EEEnabled(e){return aD(this,void 0,void 0,function*(){let t=yield this.e2eeStateMutex.lock();try{if(this.encryptionType=e?ix.GCM:ix.NONE,yield Promise.all(this.pendingPublishPromises.values()),0===this.trackPublications.size||Array.from(this.trackPublications.values()).every(t=>t.isEncrypted===e))return;yield this.republishAllTracks(void 0,!1)}finally{t()}})}setTrackEnabled(e,t,i,n){return aD(this,void 0,void 0,function*(){this.log.debug("setTrackEnabled",{source:e,enabled:t}),this.republishPromise&&(yield this.republishPromise);let a=this.getTrackPublication(e);if(t)if(a)yield a.unmute();else{let t;if(this.pendingPublishing.has(e)){let t=yield this.waitForPendingPublicationOfSource(e);return t||this.log.info("waiting for pending publication promise timed out",{source:e}),yield null==t?void 0:t.unmute(),t}this.pendingPublishing.add(e);try{switch(e){case sa.Source.Camera:t=yield this.createTracks({video:null==i||i});break;case sa.Source.Microphone:t=yield this.createTracks({audio:null==i||i});break;case sa.Source.ScreenShare:t=yield this.createScreenTracks(Object.assign({},i));break;default:throw new rq(e)}}catch(i){throw null==t||t.forEach(e=>{e.stop()}),i instanceof Error&&this.emit(em.MediaDevicesError,i,r9(e)),this.pendingPublishing.delete(e),i}for(let n of t){let t=Object.assign(Object.assign({},this.roomOptions.publishDefaults),i);e===sa.Source.Microphone&&sq(n)&&t.preConnectBuffer&&(this.log.info("starting preconnect buffer for microphone"),n.startPreConnectBuffer())}try{let e=[];for(let i of t)this.log.info("publishing track",se(i)),e.push(this.publishTrack(i,n));let i=yield Promise.all(e);[a]=i}catch(e){throw null==t||t.forEach(e=>{e.stop()}),e}finally{this.pendingPublishing.delete(e)}}else if(!(null==a?void 0:a.track)&&this.pendingPublishing.has(e)&&((a=yield this.waitForPendingPublicationOfSource(e))||this.log.info("waiting for pending publication promise timed out",{source:e})),a&&a.track)if(e===sa.Source.ScreenShare){let e=[this.unpublishTrack(a.track)],t=this.getTrackPublication(sa.Source.ScreenShareAudio);t&&t.track&&e.push(this.unpublishTrack(t.track)),[a]=yield Promise.all(e)}else yield a.mute();return a})}enableCameraAndMicrophone(){return aD(this,void 0,void 0,function*(){if(!(this.pendingPublishing.has(sa.Source.Camera)||this.pendingPublishing.has(sa.Source.Microphone))){this.pendingPublishing.add(sa.Source.Camera),this.pendingPublishing.add(sa.Source.Microphone);try{let e=yield this.createTracks({audio:!0,video:!0});yield Promise.all(e.map(e=>this.publishTrack(e)))}finally{this.pendingPublishing.delete(sa.Source.Camera),this.pendingPublishing.delete(sa.Source.Microphone)}}})}createTracks(e){return aD(this,void 0,void 0,function*(){var t,i;null!=e||(e={});let n=r3(e,null==(t=this.roomOptions)?void 0:t.audioCaptureDefaults,null==(i=this.roomOptions)?void 0:i.videoCaptureDefaults);try{return(yield cY(n,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext})).map(e=>(sq(e)&&(this.microphoneError=void 0,e.setAudioContext(this.audioContext),e.source=sa.Source.Microphone,this.emit
1(em.AudioStreamAcquired)),sV(e)&&(this.cameraError=void 0,e.source=sa.Source.Camera),e))}catch(t){throw t instanceof Error&&(e.audio&&(this.microphoneError=t),e.video&&(this.cameraError=t)),t}})}createScreenTracks(e){return aD(this,void 0,void 0,function*(){var t,i,n;let a,r;if(void 0===e&&(e={}),void 0===navigator.mediaDevices.getDisplayMedia)throw new rB("getDisplayMedia not supported");void 0!==e.resolution||(null==(a=rM())?void 0:a.name)==="Safari"&&a.version.startsWith("17.")||(null==a?void 0:a.os)==="iOS"&&(null==a?void 0:a.osVersion)&&sx(a.osVersion,"17")>=0||(e.resolution=r2.h1080fps30.resolution);let s=(r=null==(i=(t=e).video)||i,t.resolution&&t.resolution.width>0&&t.resolution.height>0&&(r="boolean"==typeof r?{}:r,r=sg()?Object.assign(Object.assign({},r),{width:{max:t.resolution.width},height:{max:t.resolution.height},frameRate:t.resolution.frameRate}):Object.assign(Object.assign({},r),{width:{ideal:t.resolution.width},height:{ideal:t.resolution.height},frameRate:t.resolution.frameRate})),{audio:null!=(n=t.audio)&&n,video:r,controller:t.controller,selfBrowserSurface:t.selfBrowserSurface,surfaceSwitching:t.surfaceSwitching,systemAudio:t.systemAudio,preferCurrentTab:t.preferCurrentTab}),o=yield navigator.mediaDevices.getDisplayMedia(s),c=o.getVideoTracks();if(0===c.length)throw new rq("no video track found");let l=new o0(c[0],void 0,!1,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});l.source=sa.Source.ScreenShare,e.contentHint&&(l.mediaStreamTrack.contentHint=e.contentHint);let d=[l];if(o.getAudioTracks().length>0){this.emit(em.AudioStreamAcquired);let e=new oq(o.getAudioTracks()[0],void 0,!1,this.audioContext,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});e.source=sa.Source.ScreenShareAudio,d.push(e)}return d})}publishTrack(e,t){return aD(this,void 0,void 0,function*(){return this.publishOrRepublishTrack(e,t)})}waitForNextEngineRestart(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:15e3;return new Promise((t,i)=>{let n=()=>{clearTimeout(s),this.engine.off(eg.Restarted,a),this.engine.off(eg.Closing,r)},a=()=>{n(),t()},r=()=>{n(),i(Error("engine closed before restart completed"))},s=setTimeout(()=>{n(),i(Error("timed out waiting for engine restart"))},e);this.engine.once(eg.Restarted,a),this.engine.once(eg.Closing,r)})}publishOrRepublishTrack(e,t){return aD(this,arguments,void 0,function(e,t){var i=this;let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return function*(){var r,s;let o,c;if(sz(e)&&e.setAudioContext(i.audioContext),yield null==(r=i.reconnectFuture)?void 0:r.promise,i.republishPromise&&!n&&(yield i.republishPromise),sB(e)&&i.pendingPublishPromises.has(e)&&(yield i.pendingPublishPromises.get(e)),e instanceof MediaStreamTrack)o=e.getConstraints();else{let t;switch(o=e.constraints,e.source){case sa.Source.Microphone:t="audioinput";break;case sa.Source.Camera:t="videoinput"}t&&i.activeDeviceMap.has(t)&&(o=Object.assign(Object.assign({},o),{deviceId:i.activeDeviceMap.get(t)}))}if(e instanceof MediaStreamTrack)switch(e.kind){case"audio":e=new oq(e,o,!0,i.audioContext,{loggerName:i.roomOptions.loggerName,loggerContextCb:()=>i.logContext});break;case"video":e=new o0(e,o,!0,{loggerName:i.roomOptions.loggerName,loggerContextCb:()=>i.logContext});break;default:throw new rq("unsupported MediaStreamTrack kind ".concat(e.kind))}else e.updateLoggerOptions({loggerName:i.roomOptions.loggerName,loggerContextCb:()=>i.logContext});if(i.trackPublications.forEach(t=>{t.track&&t.track===e&&(c=t)}),c)return i.log.warn("track has already been published, skipping",se(c)),c;let l=Object.assign(Object.assign({},i.roomOptions.publishDefaults),t),d="channelCount"in e.mediaStreamTrack.getSettings()&&2===e.mediaStreamTrack.getSettings().channelCount||2===e.mediaStreamTrack.getConstraints().channelCount,u=null!=(s=l.forceStereo)?s:d;u&&(void 0===l.dtx&&i.log.debug("Opus DTX will be disabled for stereo tracks by default. Enable them explicitly to make it work.",se(e)),void 0===l.red&&i.log.debug("Opus RED will be disabled for stereo tracks by default. Enable them explicitly to make it work."),null!=l.dtx||(l.dtx=!1),null!=l.red||(l.red=!1)),!function(){let e=rM(),t="17.2";if(e)if("Safari"!==e.name&&"iOS"!==e.os)return!0;else if("iOS"===e.os&&e.osVersion&&sx(e.osVersion,t)>=0)return!0;else if("Safari"===e.name&&sx(e.version,t)>=0)return!0;else return!1}()&&i.roomOptions.e2ee&&(i.log.info("End-to-end encryption is set up, simulcast publishing will be disabled on Safari versions and iOS browsers running iOS < v17.2"),l.simulcast=!1),l.source&&(e.source=l.source);let h=new Promise((t,n)=>aD(i,void 0,void 0,function*(){try{if(this.engine.client.currentState!==eP.CONNECTED){this.log.debug("deferring track publication until signal is connected",{track:se(e)});let i=!1,a=setTimeout(()=>{i=!0,e.stop(),n(new rW("publishing rejected as engine not connected within timeout",408))},15e3);if(yield this.waitUntilEngineConnected(),clearTimeout(a),i)return;let r=yield this.publish(e,l,u);t(r)}else try{let i=yield this.publish(e,l,u);t(i)}catch(e){n(e)}}catch(e){n(e)}}));i.pendingPublishPromises.set(e,h);try{return yield h}catch(r){if(!a&&r instanceof rz)return i.log.warn("negotiation due to track publish failed, retrying after reconnect",{error:r}
1),i.pendingPublishPromises.delete(e),yield i.waitForNextEngineRestart(),yield i.publishOrRepublishTrack(e,t,n,!0);throw r}finally{i.pendingPublishPromises.delete(e)}}()})}waitUntilEngineConnected(){return this.signalConnectedFuture||(this.signalConnectedFuture=new sO),this.signalConnectedFuture.promise}hasPermissionsToPublish(e){if(!this.permissions)return this.log.warn("no permissions present for publishing track",se(e)),!1;let{canPublish:t,canPublishSources:i}=this.permissions;return!!(t&&(0===i.length||i.map(e=>(function(e){switch(e){case ic.CAMERA:return sa.Source.Camera;case ic.MICROPHONE:return sa.Source.Microphone;case ic.SCREEN_SHARE:return sa.Source.ScreenShare;case ic.SCREEN_SHARE_AUDIO:return sa.Source.ScreenShareAudio;default:return sa.Source.Unknown}})(e)).includes(e.source)))||(this.log.warn("insufficient permissions to publish",se(e)),!1)}publish(e,t,i){return aD(this,void 0,void 0,function*(){var n,a,r,s,o,c,l,d,u,h;let p,m;if(!this.hasPermissionsToPublish(e))throw new rW("failed to publish track, insufficient permissions",403);Array.from(this.trackPublications.values()).find(t=>sB(e)&&t.source===e.source)&&e.source!==sa.Source.Unknown&&this.log.info("publishing a second track with the same source: ".concat(e.source),se(e)),t.stopMicTrackOnMute&&sq(e)&&(e.stopOnMute=!0),e.source===sa.Source.ScreenShare&&sp()&&(t.simulcast=!1),"av1"===t.videoCodec&&!function(){if(!("getCapabilities"in RTCRtpSender)||sg()||sp())return!1;let e=RTCRtpSender.getCapabilities("video"),t=!1;if(e){for(let i of e.codecs)if("video/av1"===i.mimeType.toLowerCase()){t=!0;break}}return t}()&&(t.videoCodec=void 0),"vp9"===t.videoCodec&&!function(){if(!("getCapabilities"in RTCRtpSender)||sp())return!1;if(sg()){let e=rM();if((null==e?void 0:e.version)&&0>sx(e.version,"16")||(null==e?void 0:e.os)==="iOS"&&(null==e?void 0:e.osVersion)&&0>sx(e.osVersion,"16"))return!1}let e=RTCRtpSender.getCapabilities("video"),t=!1;if(e){for(let i of e.codecs)if("video/vp9"===i.mimeType.toLowerCase()){t=!0;break}}return t}()&&(t.videoCodec=void 0),void 0===t.videoCodec&&(t.videoCodec="vp8"),this.enabledPublishVideoCodecs.length>0&&!this.enabledPublishVideoCodecs.some(e=>t.videoCodec===r7(e.mime))&&(t.videoCodec=r7(this.enabledPublishVideoCodecs[0].mime));let g=t.videoCodec;e.on(ef.Muted,this.onTrackMuted),e.on(ef.Unmuted,this.onTrackUnmuted),e.on(ef.Ended,this.handleTrackEnded),e.on(ef.UpstreamPaused,this.onTrackUpstreamPaused),e.on(ef.UpstreamResumed,this.onTrackUpstreamResumed),e.on(ef.AudioTrackFeatureUpdate,this.onTrackFeatureUpdate);let f=[],v=!(null==(n=t.dtx)||n),b=e.getSourceTrackSettings();b.autoGainControl&&f.push(ig.TF_AUTO_GAIN_CONTROL),b.echoCancellation&&f.push(ig.TF_ECHO_CANCELLATION),b.noiseSuppression&&f.push(ig.TF_NOISE_SUPPRESSION),b.channelCount&&b.channelCount>1&&f.push(ig.TF_STEREO),v&&f.push(ig.TF_NO_DTX),sz(e)&&e.hasPreConnectBuffer&&f.push(ig.TF_PRECONNECT_BUFFER);let k=this.normalizeRequestedPacketTrailerOptions(e,t),y=new n_({cid:e.mediaStreamTrack.id,name:t.name,type:sa.kindToProto(e.kind),muted:e.isMuted,source:sa.sourceToProto(e.source),disableDtx:v,encryption:this.encryptionType,stereo:i,disableRed:this.isE2EEEnabled||!(null==(a=t.red)||a),stream:null==t?void 0:t.stream,backupCodecPolicy:null==t?void 0:t.backupCodecPolicy,audioFeatures:f,packetTrailerFeatures:k});if(e.kind===sa.Kind.Video){let i;try{i=yield e.waitForDimensions()}catch(n){let t=null!=(s=null==(r=this.roomOptions.videoCaptureDefaults)?void 0:r.resolution)?s:r0.h720.resolution;i={width:t.width,height:t.height},this.log.error("could not determine track dimensions, using defaults",Object.assign(Object.assign({},se(e)),{dims:i}))}y.width=i.width,y.height=i.height,sH(e)&&(su(g)&&(e.source===sa.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",se(e)))),t.scalabilityMode=null!=(o=t.scalabilityMode)?o:"L3T3_KEY"),y.simulcastCodecs=[new nN({codec:g,cid:e.mediaStreamTrack.id})],!0===t.backupCodec&&(t.backupCodec={codec:"vp8"}
1),t.backupCodec&&g!==t.backupCodec.codec&&y.encryption===ix.NONE&&(this.roomOptions.dynacast||(this.roomOptions.dynacast=!0),y.simulcastCodecs.push(new nN({codec:t.backupCodec.codec,cid:""})))),p=oJ(e.source===sa.Source.ScreenShare,y.width,y.height,t),y.layers=o3(y.width,y.height,p,su(t.videoCodec))}else e.kind===sa.Kind.Audio&&(p=[{maxBitrate:null==(c=t.audioPreset)?void 0:c.maxBitrate,priority:null!=(d=null==(l=t.audioPreset)?void 0:l.priority)?d:"high",networkPriority:null!=(h=null==(u=t.audioPreset)?void 0:u.priority)?h:"high"}]);if(!this.engine||this.engine.isClosed)throw new rH("cannot publish track when not connected");let T=()=>aD(this,void 0,void 0,function*(){var i,n;if(!this.engine.pcManager)throw new rH("pcManager is not ready");if(e.sender=yield this.engine.createSender(e,t,p),sH(e)&&(e.publishOptions=t),this.emit(em.LocalSenderCreated,e.sender,e),sH(e)&&(null!=t.degradationPreference||(t.degradationPreference=e.source===sa.Source.ScreenShare||e.constraints.height&&sA(e.constraints.height)>=1080?"maintain-resolution":"balanced"),e.setDegradationPreference(t.degradationPreference)),p)if(sp()&&e.kind===sa.Kind.Audio){let t;for(let i of this.engine.pcManager.publisher.getTransceivers())if(i.sender===e.sender){t=i;break}t&&this.engine.pcManager.publisher.setTrackCodecBitrate({transceiver:t,codec:"opus",maxbr:(null==(i=p[0])?void 0:i.maxBitrate)?p[0].maxBitrate/1e3:0})}else e.codec&&su(e.codec)&&(null==(n=p[0])?void 0:n.maxBitrate)&&this.engine.pcManager.publisher.setTrackCodecBitrate({cid:y.cid,codec:e.codec,maxbr:p[0].maxBitrate/1e3});yield this.engine.negotiate()}),S=new Promise((t,i)=>aD(this,void 0,void 0,function*(){var n;try{m=yield this.engine.addTrack(y),t(m)}catch(t){if(e.sender&&(null==(n=this.engine.pcManager)?void 0:n.publisher)){try{this.engine.pcManager.publisher.removeTrack(e.sender)}catch(e){this.log.error(e)}yield this.engine.negotiate().catch(t=>{this.log.error("failed to negotiate after removing track due to failed add track request",Object.assign(Object.assign({},se(e)),{error:t}))})}i(t)}}));if(this.enabledPublishVideoCodecs.length>0&&0===k.length)m=(yield Promise.all([S,T()]))[0];else{let i;if((m=yield S).codecs.forEach(e=>{void 0===i&&(i=e.mimeType)}),i&&e.kind===sa.Kind.Video){let n=r7(i);n!==g&&(this.log.debug("falling back to server selected codec",Object.assign(Object.assign({},se(e)),{codec:n})),t.videoCodec=n,p=oJ(e.source===sa.Source.ScreenShare,y.width,y.height,t))}yield T()}let w=new c$(e.kind,m,e,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});if(w.on(ef.CpuConstrained,e=>this.onTrackCpuConstrained(e,w)),w.options=t,e.sid=m.sid,sH(e)&&(e.publishOptions=t,y.width&&y.height&&(e.lastEncodedDimensions={width:y.width,height:y.height})),this.log.debug("publishing ".concat(e.kind," with encodings"),{encodings:p,trackInfo:m}),sH(e)?e.startMonitor(this.engine.client):sz(e)&&e.startMonitor(),this.addTrackPublication(w),this.emit(em.LocalTrackPublished,w),sz(e)&&m.audioFeatures.includes(ig.TF_PRECONNECT_BUFFER)){let t=e.getPreConnectBuffer(),i=e.getPreConnectBufferMimeType();this.on(em.LocalTrackSubscribed,t=>{if(t.trackSid===m.sid){if(!e.hasPreConnectBuffer)return void this.log.warn("subscribe event came to late, buffer already closed");this.log.debug("finished recording preconnect buffer",se(e)),e.stopPreConnectBuffer()}}),t&&new Promise((n,a)=>aD(this,void 0,void 0,function*(){try{this.log.debug("waiting for agent",se(e));let m=setTimeout(()=>{a(Error("agent not active within 10 seconds"))},1e4),g=yield this.waitUntilActiveAgentPresent();clearTimeout(m),this.log.debug("sending preconnect buffer",se(e));let f=yield this.streamBytes({name:"preconnect-buffer",mimeType:i,topic:"lk.agent.pre-connect-audio-buffer",destinationIdentities:[g.identity],attributes:{trackId:w.trackSid,sampleRate:String(null!=(l=b.sampleRate)?l:"48000"),channels:String(null!=(d=b.channelCount)?d:"1")}});try{for(var r,s,o,c,l,d,u,h=!0,p=aO(t);!(r=(u=yield p.next()).done);h=!0)c=u.value,h=!1,yield f.write(c)}catch(e){s={error:e}}finally{try{!h&&!r&&(o=p.return)&&(yield o.call(p))}finally{if(s)throw s.error}}yield f.close(),n()}catch(e){a(e)}})).then(()=>{this.log.debug("preconnect buffer sent successfully",se(e))}).catch(t=>{this.log.error("error sending preconnect buffer",Object.assign(Object.assign({},se(e)),{error:t}))})}return w})}canPublishPacketTrailer(){return!!(this.roomOptions.e2ee||this.roomOptions.encryption||sZ(this.roomOptions.packetTrailer))}normalizeRequestedPacketTrailerOptions(e,t){var i;let n;if(e.kind!==sa.Kind.Video||!s0(t.packetTrailer))return t.packetTrailer=void 0,[];if(!this.canPublishPacketTrailer())return this.log.warn("packet trailer transform not supported; not advertising features",Object.assign(Object.assign({},this.logContext),se(e))),t.packetTrailer=void 0,[];let a=(i=t.packetTrailer,n=[],(null==i?void 0:i.timestamp)&&n.push(iv.PTF_USER_TIMESTAMP),(null==i?void 0:i.frameId)&&n.push(iv.PTF_FRAME_ID),n);return t.packetTrailer=function(e){if(!e||0===e.length)return;let t={};return e.includes(iv.PTF_USER_TIMESTAMP)&&(t.timestamp=!0),e.includes(iv.PTF_FRAME_ID)&&(t.frameId=!0),t.timestamp||t.frameId?t:void 0}(a),a}get isLocal(){return!0}publishAdditionalCodecForTrack(e,t,i){return aD(this,void 0,void 0,function*(){var n;let a;if(this.encryptionType!==ix.NONE)return;if(this.trackPublications.forEach(t=>{t.track&&t.track===e&&(a=t)}),!a)throw new rq("track is not published");if(!sH(e))throw new rq("track is not a video track");let r=Object.assign(Object.assign({},null==(n=this.roomOptions)?void 0:n.publishDefaults),i),s=oQ(e,t,r);if(!s)return void this.log.info("backup codec has been disabled, ignoring request to add additional codec for track",se(e));let o=e.addSimulcastTrack(t,s);if(!o)return;let c=this.normalizeRequestedPacketTrailerOptions(e,r),l=new n_({cid:o.mediaStreamTrack.id,type:sa.kindToProto(e.kind),muted:e.isMuted,source:sa.sourceToProto(e.source),sid:e.sid,packetTrailerFeatures:c,simulcastCodecs:[{codec:r.videoCodec,cid:o.mediaStreamTrack.id}]});if(l.layers=o3(l.width,l.height,s),!this.engine||this.engine.isClosed)throw new rH("cannot publish track when not connected");let d=()=>aD(this,void 0,void 0,function*(){yield this.engine.createSimulcastSender(e,o,r,s),yield this.engine.negotiate()}),u=(yield Promise.all([this.engine.addTrack(l),d()]))[0];this.log.debug("published ".concat(t," for track ").concat(e.sid),{encodings:s,trackInfo:u})})}unpublishTrack(e,t){return aD(this,void 0,void 0,function*(){var i,n;if(sB(e)){let t=this.pendingPublishPromises.get(e);t&&(this.log.debug("awaiting publish promise before attempting to unpublish",se(e)),yield t)}let a=this.getPublicationForTrack(e),r=a?se(a):void 0;if(this.log.info("unpublishing track",r),!a||!a.track)return void this.log.warn("track was not unpublished because no publication was found",r);(e=a.track).off(ef.Muted,this.onTrackMuted),e.off(ef.Unmuted,this.onTrackUnmuted),e.off(ef.Ended,this.handleTrackEnded),e.off(ef.UpstreamPaused,this.onTrackUpstreamPaused),e.off(ef.UpstreamResumed,this.onTrackUpstreamResumed),e.off(ef.AudioTrackFeatureUpdate,this.onTrackFeatureUpdate),void 0===t&&(t=null==(n=null==(i=this.roomOptions)?void 0:i.stopLocalTrackOnUnpublish)||n),t?e.stop():e.stopMonitor();let s=!1,o=e.sender;if(e.sender=void 0,this.engine.pcManager&&this.engine.pcManager.currentState<eM.FAILED&&o)try{for(let e of this.engine.pcManager.publisher.getTransceivers())e.sender===o&&(e.direction="inactive",s=!0);try{s=this.engine.removeTrack(o)}catch(e){this.log.warn(e),s=!0}if(sH(e)){for(let[,t]of e.simulcastCodecs)if(t.sender){try{s=this.engine.removeTrack(t.sender)}catch(e){this.log.warn(e),s=!0}t.sender=void 0}e.simulcastCodecs.clear()}}catch(e){this.log.warn("failed to unpublish track",Object.assign(Object.assign({},r),{error:e}))}switch(this.trackPublications.delete(a.trackSid),a.kind){case sa.Kind.Audio:this.audioTrackPublications.delete(a.trackSid);break;case sa.Kind.Video:this.videoTrackPublications.delete(a.trackSid)}
vendor: 3,075 bytes, line 1
1return this.emit(em.LocalTrackUnpublished,a),a.setTrack(void 0),s&&(yield this.engine.negotiate()),a})}unpublishTracks(e){return aD(this,void 0,void 0,function*(){return(yield Promise.all(e.map(e=>this.unpublishTrack(e)))).filter(e=>!!e)})}republishAllTracks(e){return aD(this,arguments,void 0,function(e){var t=this;let i=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return function*(){t.republishPromise&&(yield t.republishPromise),t.republishPromise=new r_((n,a)=>aD(t,void 0,void 0,function*(){try{let t=[];this.trackPublications.forEach(i=>{i.track&&(e&&(i.options=Object.assign(Object.assign({},i.options),e)),t.push(i))}),yield Promise.all(t.map(e=>aD(this,void 0,void 0,function*(){let t=e.track;yield this.unpublishTrack(t,!1),i&&!t.isMuted&&t.source!==sa.Source.ScreenShare&&t.source!==sa.Source.ScreenShareAudio&&(sz(t)||sH(t))&&!t.isUserProvided&&(this.log.debug("restarting existing track",{track:e.trackSid}),yield t.restartTrack()),yield this.publishOrRepublishTrack(t,e.options,!0)}))),n()}catch(e){e instanceof Error?a(e):a(Error(String(e)))}finally{this.republishPromise=void 0}})),yield t.republishPromise}()})}publishData(e){return aD(this,arguments,void 0,function(e){var t=this;let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function*(){let n=i.reliable?eA.RELIABLE:eA.LOSSY,a=i.reliable?iM.RELIABLE:iM.LOSSY,r=i.destinationIdentities,s=i.topic,o=new iD({kind:a,value:{case:"user",value:new iU({participantIdentity:t.identity,payload:e,destinationIdentities:r,topic:s})}});yield t.engine.sendDataPacket(o,n)}()})}publishDtmf(e,t){return aD(this,void 0,void 0,function*(){let i=new iD({kind:iM.RELIABLE,value:{case:"sipDtmf",value:new iF({code:e,digit:t})}});yield this.engine.sendDataPacket(i,eA.RELIABLE)})}sendChatMessage(e,t){return aD(this,void 0,void 0,function*(){let i={id:crypto.randomUUID(),message:e,timestamp:Date.now(),attachedFiles:null==t?void 0:t.attachments},n=new iD({value:{case:"chatMessage",value:new iV(Object.assign(Object.assign({},i),{timestamp:tu.parse(i.timestamp)}))}});return yield this.engine.sendDataPacket(n,eA.RELIABLE),this.emit(em.ChatMessage,i),i})}editChatMessage(e,t){return aD(this,void 0,void 0,function*(){let i=Object.assign(Object.assign({},t),{message:e,editTimestamp:Date.now()}),n=new iD({value:{case:"chatMessage",value:new iV(Object.assign(Object.assign({},i),{timestamp:tu.parse(i.timestamp),editTimestamp:tu.parse(i.editTimestamp)}))}});return yield this.engine.sendDataPacket(n,eA.RELIABLE),this.emit(em.ChatMessage,i),i})}sendText(e,t){return aD(this,void 0,void 0,function*(){return this.roomOutgoingDataStreamManager.sendText(e,t)})}streamText(e){return aD(this,void 0,void 0,function*(){return this.roomOutgoingDataStreamManager.streamText(e)})}sendFile(e,t){return aD(this,void 0,void 0,function*(){return this.roomOutgoingDataStreamManager.sendFile(e,t)})}streamBytes(e){return aD(this,void 0,void 0,function*(){return this.roomOutgoingDataStreamManager.streamBytes(e)})}performRpc(e){return this.rpcClientManager.performRpc(e).then(e=>{let[t,i]=e;return i})}
1registerRpcMethod(e,t){this.rpcServerManager.registerRpcMethod(e,t)}unregisterRpcMethod(e){this.rpcServerManager.unregisterRpcMethod(e)}setTrackSubscriptionPermissions(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];this.participantTrackPermissions=t,this.allParticipantsAllowedToSubscribe=e,this.engine.client.isDisconnected||this.updateTrackSubscriptionPermissions()}setEnabledPublishCodecs(e){this.enabledPublishVideoCodecs=e.filter(e=>"video"===e.mime.split("/")[0].toLowerCase())}updateInfo(e){return!!super.updateInfo(e)&&(e.tracks.forEach(e=>{var t,i;let n=this.trackPublications.get(e.sid);if(n){let a=n.isMuted||null!=(i=null==(t=n.track)?void 0:t.isUpstreamPaused)&&i;a!==e.muted&&(this.log.debug("updating server mute state after reconcile",Object.assign(Object.assign({},se(n)),{mutedOnServer:a})),this.engine.client.sendMuteTrack(e.sid,a))}}),!0)}setActiveAgent(e){var t,i,n,a;this.firstActiveAgent=e,e&&!this.firstActiveAgent&&(this.firstActiveAgent=e),e?null==(i=null==(t=this.activeAgentFuture)?void 0:t.resolve)||i.call(t,e):null==(a=null==(n=this.activeAgentFuture)?void 0:n.reject)||a.call(n,Error("Agent disconnected")),this.activeAgentFuture=void 0}waitUntilActiveAgentPresent(){return this.firstActiveAgent?Promise.resolve(this.firstActiveAgent):(this.activeAgentFuture||(this.activeAgentFuture=new sO),this.activeAgentFuture.promise)}getPublicationForTrack(e){let t;return this.trackPublications.forEach(i=>{let n=i.track;n&&(e instanceof MediaStreamTrack?(sz(n)||sH(n))&&n.mediaStreamTrack===e&&(t=i):e===n&&(t=i))}),t}waitForPendingPublicationOfSource(e){return aD(this,void 0,void 0,function*(){let t=Date.now();for(;Date.now()<t+1e4;){let t=Array.from(this.pendingPublishPromises.entries()).find(t=>{let[i]=t;return i.source===e});if(t)return t[1];yield sc(20)}})}publishDataTrack(e){return aD(this,void 0,void 0,function*(){let t=new cj(e,this.roomOutgoingDataTrackManager);return yield t.publish(),t})}}class c0 extends DOMException{constructor(e,t){super(e,"AbortError"),this.reason=t}}class c1 extends Map{constructor(){super(...arguments),this.pending=new Map}set(e,t){var i,n;super.set(e,t);let a=null==(i=this.pending)?void 0:i.get(e);if(a){for(let e of a)e.isResolved||null==(n=e.resolve)||n.call(e,t);this.pending.delete(e)}return this}get[Symbol.toStringTag](){return"DeferrableMap"}getDeferred(e,t){return aD(this,void 0,void 0,function*(){let i=this.get(e);if(void 0!==i)return i;if(null==t?void 0:t.aborted)throw new c0("The operation was aborted.",t.reason);let n=new sO(void 0,()=>{let t=this.pending.get(e);if(!t)return;let i=t.indexOf(n);-1!==i&&t.splice(i,1),0===t.length&&this.pending.delete(e)}),a=this.pending.get(e);if(a?a.push(n):this.pending.set(e,[n]),t){let e=()=>{var e;n.isResolved||null==(e=n.reject)||e.call(n,new c0("The operation was aborted.",t.reason))};t.addEventListener("abort",e,{once:!0}),n.promise.finally(()=>{t.removeEventListener("abort",e)})}return n.promise})}}class c2 extends cQ{constructor(e,t,i,n){super(e,t.sid,t.name,n),this.track=void 0,this.allowed=!0,this.requestedDisabled=void 0,this.visible=!0,this.handleEnded=e=>{this.setTrack(void 0),this.emit(ef.Ended,e)},this.handleVisibilityChange=e=>{this.log.debug("adaptivestream video visibility ".concat(this.trackSid,", visible=").concat(e),this.logContext),this.visible=e,this.emitTrackUpdate()},this.handleVideoDimensionsChange=e=>{this.log.debug("adaptivestream video dimensions ".concat(e.width,"x").concat(e.height),this.logContext),this.videoDimensionsAdaptiveStream=e,this.emitTrackUpdate()},this.subscribed=i,this.updateInfo(t)}setSubscribed(e){let t=this.subscriptionStatus,i=this.permissionStatus;this.subscribed=e,e&&(this.allowed=!0);let n=new nG({trackSids:[this.trackSid],subscribe:this.subscribed,participantTracks:[new iK({participantSid:"",trackSids:[this.trackSid]})]});this.emit(ef.UpdateSubscription,n),this.emitSubscriptionUpdateIfChanged(t),this.emitPermissionUpdateIfChanged(i)}get subscriptionStatus(){return!1===this.subscribed?cQ.SubscriptionStatus.Unsubscribed:super.isSubscribed?cQ.SubscriptionStatus.Subscribed:cQ.SubscriptionStatus.Desired}get permissionStatus(){return this.allowed?cQ.PermissionStatus.Allowed:cQ.PermissionStatus.NotAllowed}get isSubscribed(){return!1!==this.subscribed&&super.isSubscribed}get isDesired(){return!1!==this.subscribed}get isEnabled(){return void 0!==this.requestedDisabled?!this.requestedDisabled:!this.isAdaptiveStream||this.visible}get isLocal(){return!1}setEnabled(e){this.isManualOperationAllowed()&&!e!==this.requestedDisabled&&(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,i;this.isManualOperationAllowed()&&((null==(t=this.requestedVideoDimensions)?void 0:t.width)!==e.width||(null==(i=this.requestedVideoDimensions)?void 0:i.height)!==e.height)&&(sG(this.track)&&(this.requestedVideoDimensions=e),this.requestedMaxQuality=void 0,this.emitTrackUpdate())}setVideoFPS(e){this.isManualOperationAllowed()&&sG(this.track)&&this.fps!==e&&(this.fps=e,this.emitTrackUpdate())}get videoQuality(){var e;return null!=(e=this.requestedMaxQuality)?e:ek.HIGH}setTrack(e){let t=this.subscriptionStatus,i=this.permissionStatus,n=this.track;n!==e&&(n&&(n.off(ef.VideoDimensionsChanged,this.handleVideoDimensionsChange),n.off(ef.VisibilityChanged,this.handleVisibilityChange),n.off(ef.Ended,this.handleEnded),n.detach(),n.stopMonitor(),this.emit
1(ef.Unsubscribed,n)),super.setTrack(e),e&&(e.sid=this.trackSid,e.on(ef.VideoDimensionsChanged,this.handleVideoDimensionsChange),e.on(ef.VisibilityChanged,this.handleVisibilityChange),e.on(ef.Ended,this.handleEnded),this.emit(ef.Subscribed,e)),this.emitPermissionUpdateIfChanged(i),this.emitSubscriptionUpdateIfChanged(t))}setAllowed(e){let t=this.subscriptionStatus,i=this.permissionStatus;this.allowed=e,this.emitPermissionUpdateIfChanged(i),this.emitSubscriptionUpdateIfChanged(t)}setSubscriptionError(e){this.emit(ef.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?ef.Muted:ef.Unmuted)}emitSubscriptionUpdateIfChanged(e){let t=this.subscriptionStatus;e!==t&&this.emit(ef.SubscriptionStatusChanged,t,e)}emitPermissionUpdateIfChanged(e){this.permissionStatus!==e&&this.emit(ef.SubscriptionPermissionChanged,this.permissionStatus,e)}isManualOperationAllowed(){return!!this.isDesired||(this.log.warn("cannot update track settings when not subscribed",this.logContext),!1)}get isAdaptiveStream(){return sG(this.track)&&this.track.isAdaptiveStream}emitTrackUpdate(){let e=new nQ({trackSids:[this.trackSid],disabled:!this.isEnabled,fps:this.fps});if(this.kind===sa.Kind.Video){let a=this.requestedVideoDimensions;if(void 0!==this.videoDimensionsAdaptiveStream)if(a)si(this.videoDimensionsAdaptiveStream,a)&&(this.log.debug("using adaptive stream dimensions instead of requested",Object.assign(Object.assign({},this.logContext),this.videoDimensionsAdaptiveStream)),a=this.videoDimensionsAdaptiveStream);else if(void 0!==this.requestedMaxQuality&&this.trackInfo){var t,i,n;let e=(t=this.trackInfo,i=this.requestedMaxQuality,null==(n=t.layers)?void 0:n.find(e=>e.quality===i));e&&si(this.videoDimensionsAdaptiveStream,e)&&(this.log.debug("using adaptive stream dimensions instead of max quality layer",Object.assign(Object.assign({},this.logContext),this.videoDimensionsAdaptiveStream)),a=this.videoDimensionsAdaptiveStream)}else this.log.debug("using adaptive stream dimensions",Object.assign(Object.assign({},this.logContext),this.videoDimensionsAdaptiveStream)),a=this.videoDimensionsAdaptiveStream;a?(e.width=Math.ceil(a.width),e.height=Math.ceil(a.height)):void 0!==this.requestedMaxQuality?(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:ek.HIGH})),e.quality=ek.HIGH)}this.emit(ef.UpdateSettings,e)}}class c3 extends cX{static fromParticipantInfo(e,t,i,n){return new c3(e,t.sid,t.identity,t.name,t.metadata,t.attributes,i,t.kind,t.dataTracks.map(e=>new cT(ou(e),n,{publisherIdentity:t.identity})),t.clientProtocol)}get logContext(){return Object.assign(Object.assign({},super.logContext),{remoteParticipantID:this.sid,remoteParticipant:this.identity})}constructor(e,t,i,n,a,r,s){let o=arguments.length>7&&void 0!==arguments[7]?arguments[7]:iw.STANDARD,c=arguments.length>8&&void 0!==arguments[8]?arguments[8]:[],l=arguments.length>9&&void 0!==arguments[9]?arguments[9]:0;super(t,i||"",n,a,r,s,o),this.signalClient=e,this.trackPublications=new Map,this.audioTrackPublications=new Map,this.videoTrackPublications=new Map,this.dataTracks=new c1(c.map(e=>[e.info.name,e])),this.volumeMap=new Map,this.clientProtocol=l}addTrackPublication(e){super.addTrackPublication(e),e.on(ef.UpdateSettings,t=>{this.log.debug("send update settings",Object.assign(Object.assign(Object.assign({},this.logContext),se(e)),{settings:t})),this.signalClient.sendUpdateTrackSettings(t)}),e.on(ef.UpdateSubscription,e=>{e.participantTracks.forEach(e=>{e.participantSid=this.sid}),this.signalClient.sendUpdateSubscription(e)}),e.on(ef.SubscriptionPermissionChanged,t=>{this.emit(em.TrackSubscriptionPermissionChanged,e,t)}),e.on(ef.SubscriptionStatusChanged,t=>{this.emit(em.TrackSubscriptionStatusChanged,e,t)}),e.on(ef.Subscribed,t=>{this.emit(em.TrackSubscribed,t,e)}),e.on(ef.Unsubscribed,t=>
1{this.emit(em.TrackUnsubscribed,t,e)}),e.on(ef.SubscriptionFailed,t=>{this.emit(em.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&&void 0!==arguments[1]?arguments[1]:sa.Source.Microphone;this.volumeMap.set(t,e);let i=this.getTrackPublication(t);i&&i.track&&i.track.setVolume(e)}getVolume(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:sa.Source.Microphone,t=this.getTrackPublication(e);return t&&t.track?t.track.getVolume():this.volumeMap.get(e)}addSubscribedMediaTrack(e,t,i,n,a,r){let s,o=this.getTrackPublicationBySid(t);if(o||t.startsWith("TR")||this.trackPublications.forEach(t=>{o||e.kind!==t.kind.toString()||(o=t)}),!o){if(0===r){this.log.error("could not find published track",Object.assign(Object.assign({},this.logContext),{trackSid:t})),this.emit(em.TrackSubscriptionFailed,t);return}void 0===r&&(r=20),setTimeout(()=>{this.addSubscribedMediaTrack(e,t,i,n,a,r-1)},150);return}if("ended"===e.readyState){this.log.error("unable to subscribe because MediaStreamTrack is ended. Do not call MediaStreamTrack.stop()",Object.assign(Object.assign({},this.logContext),se(o))),this.emit(em.TrackSubscriptionFailed,t);return}return(s="video"===e.kind?new s4(e,t,n,a):new cJ(e,t,n,this.audioContext,this.audioOutput)).source=o.source,s.isMuted=o.isMuted,s.setMediaStream(i),s.start(),o.setTrack(s),this.volumeMap.has(o.source)&&sW(s)&&sq(s)&&s.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,i=new Map;return e.tracks.forEach(e=>{var n,a;let r=this.getTrackPublicationBySid(e.sid);if(r)r.updateInfo(e);else{let t=sa.kindFromProto(e.type);if(!t)return;(r=new c2(t,e,null==(n=this.signalClient.connectOptions)?void 0:n.autoSubscribe,{loggerContextCb:()=>this.logContext,loggerName:null==(a=this.loggerOptions)?void 0:a.loggerName})).updateInfo(e),i.set(e.sid,r);let s=Array.from(this.trackPublications.values()).find(e=>e.source===(null==r?void 0:r.source));s&&r.source!==sa.Source.Unknown&&this.log.debug("received a second track publication for ".concat(this.identity," with the same source: ").concat(r.source),Object.assign(Object.assign({},this.logContext),{oldTrack:se(s),newTrack:se(r)})),this.addTrackPublication(r)}t.set(e.sid,r)}),this.trackPublications.forEach(e=>{t.has(e.trackSid)||(this.log.trace("detected removed track on remote participant, unpublishing",Object.assign(Object.assign({},this.logContext),se(e))),this.unpublishTrack(e.trackSid,!0))}
1),i.forEach(e=>{this.emit(em.TrackPublished,e)}),!0}unpublishTrack(e,t){let i=this.trackPublications.get(e);if(!i)return;let{track:n}=i;switch(n&&(n.stop(),i.setTrack(void 0)),this.trackPublications.delete(e),i.kind){case sa.Kind.Audio:this.audioTrackPublications.delete(e);break;case sa.Kind.Video:this.videoTrackPublications.delete(e)}t&&this.emit(em.TrackUnpublished,i)}setAudioOutput(e){return aD(this,void 0,void 0,function*(){this.audioOutput=e;let t=[];this.audioTrackPublications.forEach(i=>{var n;sq(i.track)&&sW(i.track)&&t.push(i.track.setSinkId(null!=(n=e.deviceId)?n:"default"))}),yield Promise.all(t)})}addRemoteDataTrack(e){this.dataTracks.set(e.info.name,e)}removeRemoteDataTrack(e){for(let[t,i]of this.dataTracks.entries())e===i.info.sid&&this.dataTracks.delete(t)}emit(e){for(var t=arguments.length,i=Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];return this.log.trace("participant event",Object.assign(Object.assign({},this.logContext),{event:e,args:i})),super.emit(e,...i)}}(Z=eJ||(eJ={})).Disconnected="disconnected",Z.Connecting="connecting",Z.Connected="connected",Z.Reconnecting="reconnecting",Z.SignalReconnecting="signalReconnecting";class c4 extends aL.EventEmitter{get hasE2EESetup(){return void 0!==this.e2eeManager}constructor(e){var t,i,n,a,r,s,o;if(super(),t=this,this.state=eJ.Disconnected,this.activeSpeakers=[],this.isE2EEEnabled=!1,this.audioEnabled=!0,this.e2eeStateMutex=new e2,this.isVideoPlaybackBlocked=!1,this.log=aR,this.bufferedEvents=[],this.isResuming=!1,this.connect=(e,t,i)=>aD(this,void 0,void 0,function*(){var n;if(!(!("u"<typeof RTCPeerConnection)&&(sl()||sd())))if(sk())throw Error("WebRTC isn't detected, have you called registerGlobals?");else throw 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 a=yield this.disconnectLock.lock();if(this.state===eJ.Connected)return this.log.info("already connected to room ".concat(this.name)),a(),Promise.resolve();if(this.connectFuture)return a(),this.connectFuture.promise;this.setAndEmitConnectionState(eJ.Connecting),(null==(n=this.regionUrlProvider)?void 0:n.getServerUrl().toString())!==sJ(e)&&(this.regionUrl=void 0,this.regionUrlProvider=void 0),sy(new URL(e))&&(void 0===this.regionUrlProvider?this.regionUrlProvider=new ce(e,t):this.regionUrlProvider.updateToken(t),this.regionUrlProvider.fetchRegionSettings().then(e=>{var t;null==(t=this.regionUrlProvider)||t.setServerReportedRegions(e)}).catch(e=>{this.log.warn("could not fetch region settings",{error:e})}));let r=(n,s,o)=>aD(this,void 0,void 0,function*(){var c,l;this.abortController&&this.abortController.abort();let d=new AbortController;this.abortController=d,null==a||a();try{if(yield ot.getInstance().getBackOffPromise(e),d.signal.aborted)throw rF.cancelled("Connection attempt aborted");yield this.attemptConnection(null!=o?o:e,t,i,d),this.abortController=void 0,n()}catch(t){if(this.regionUrlProvider&&t instanceof rF&&t.reason!==ed.Cancelled&&t.reason!==ed.NotAllowed){let i=null;try{this.log.debug("Fetching next region"),i=yield this.regionUrlProvider.getNextBestRegionUrl(null==(c=this.abortController)?void 0:c.signal)}catch(e){if(e instanceof rF&&(401===e.status||e.reason===ed.Cancelled)){this.handleDisconnect(this.options.stopLocalTrackOnUnpublish),s(e);return}}[ed.InternalError,ed.ServerUnreachable,ed.Timeout].includes(t.reason)&&(this.log.debug("Adding failed connection attempt to back off"),ot.getInstance().addFailedConnectionAttempt(e)),!i||(null==(l=this.abortController)?void 0:l.signal.aborted)?(this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,sj(t)),s(t)):(this.log.info("Initial connection failed with ConnectionError: ".concat(t.message,". Retrying with another region: ").concat(i)),this.recreateEngine(!0),yield r(n,s,i))}else{let e=ih.UNKNOWN_REASON;t instanceof rF&&(e=sj(t)),this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,e),s(t)}}}),s=this.regionUrl;return this.regionUrl=void 0,this.connectFuture=new sO((e,t)=>{r(e,t,s)},()=>{this.clearConnectionFutures()}),this.connectFuture.promise}),this.connectSignal=(e,t,i,n,a,r)=>aD(this,void 0,void 0,function*(){let{joinResponse:s,serverInfo:o}=yield i.join(e,t,{autoSubscribe:n.autoSubscribe,adaptiveStream:"object"==typeof a.adaptiveStream||a.adaptiveStream,clientInfoCapabilities:sZ(a.packetTrailer)||this.e2eeManager?[iX.CAP_PACKET_TRAILER]:void 0,maxRetries:n.maxRetries,e2eeEnabled:!!this.e2eeManager,websocketTimeout:n.websocketTimeout},r.signal,!a.singlePeerConnection);
1if(this.serverInfo=o,!o.version)throw new rV("unknown server version");return"0.15.1"===o.version&&this.options.dynacast&&(this.log.debug("disabling dynacast due to server version"),a.dynacast=!1),s}),this.applyJoinResponse=e=>{let t=e.participant;if(this.localParticipant.sid=t.sid,this.localParticipant.identity=t.identity,this.localParticipant.setEnabledPublishCodecs(e.enabledPublishCodecs),this.e2eeManager)try{this.e2eeManager.setSifTrailer(e.sifTrailer)}catch(e){this.log.error(e instanceof Error?e.message:"Could not set SifTrailer",{error:e})}this.handleParticipantUpdates([t,...e.otherParticipants]),e.room&&this.handleRoomUpdate(e.room)},this.attemptConnection=(e,t,i,n)=>aD(this,void 0,void 0,function*(){var a,r;this.state===eJ.Reconnecting||this.isResuming||(null==(a=this.engine)?void 0:a.pendingReconnect)?(this.log.info("Reconnection attempt replaced by new connection attempt"),this.recreateEngine(!0)):this.maybeCreateEngine(),(null==(r=this.regionUrlProvider)?void 0:r.isCloud())&&this.engine.setRegionStrategy(this.createRegionStrategy()),this.acquireAudioContext(),this.connOptions=Object.assign(Object.assign({},oA),i),this.connOptions.rtcConfig&&(this.engine.rtcConfig=this.connOptions.rtcConfig),this.connOptions.peerConnectionTimeout&&(this.engine.peerConnectionTimeout=this.connOptions.peerConnectionTimeout);try{let i=yield this.connectSignal(e,t,this.engine,this.connOptions,this.options,n);this.applyJoinResponse(i),this.setupLocalParticipantEvents(),this.emit(ep.SignalConnected)}catch(t){yield this.engine.close(),this.recreateEngine();let e=n.signal.aborted?rF.cancelled("Signal connection aborted"):rF.serverUnreachable("could not establish signal connection");throw t instanceof Error&&(e.message="".concat(e.message,": ").concat(t.message)),t instanceof rF&&(e.reason=t.reason,e.status=t.status),this.log.debug("error trying to establish signal connection",{error:t}),e}if(n.signal.aborted)throw yield this.engine.close(),this.recreateEngine(),rF.cancelled("Connection attempt aborted");try{yield this.engine.waitForPCInitialConnection(this.connOptions.peerConnectionTimeout,n)}catch(e){throw yield this.engine.close(),this.recreateEngine(),e}sb()&&this.options.disconnectOnPageLeave&&(window.addEventListener("pagehide",this.onPageLeave),window.addEventListener("beforeunload",this.onPageLeave)),sb()&&window.addEventListener("freeze",this.onPageLeave),this.setAndEmitConnectionState(eJ.Connected),this.emit(ep.Connected),ot.getInstance().resetFailedConnectionAttempts(e),this.registerConnectionReconcile(),this.regionUrlProvider&&this.regionUrlProvider.notifyConnected()}),this.disconnect=function(){for(var e=arguments.length,i=Array(e),n=0;n<e;n++)i[n]=arguments[n];return aD(t,[...i],void 0,function(){var e=this;let t=!(arguments.length>0)||void 0===arguments[0]||arguments[0];return function*(){var i,n,a;let r=yield e.disconnectLock.lock();try{if(e.state===eJ.Disconnected)return void e.log.debug("already disconnected");if(e.log.info("disconnect from room"),e.state===eJ.Connecting||e.state===eJ.Reconnecting||e.isResuming){let t="Abort connection attempt due to user initiated disconnect";e.log.warn(t),null==(i=e.abortController)||i.abort(t),null==(a=null==(n=e.connectFuture)?void 0:n.reject)||a.call(n,rF.cancelled("Client initiated disconnect")),e.connectFuture=void 0}e.engine&&(e.engine.client.isDisconnected||(yield e.engine.client.sendLeave()),yield e.engine.close()),e.handleDisconnect(t,ih.CLIENT_INITIATED),e.engine=void 0}finally{r()}}()})},this.onPageLeave=()=>aD(this,void 0,void 0,function*(){this.log.info("Page leave detected, disconnecting"),yield this.disconnect()}),this.startAudio=()=>aD(this,void 0,void 0,function*(){let e=[],t=rM();if(t&&"iOS"===t.os){let t="livekit-dummy-audio-el",i=document.getElementById(t);if(!i){(i=document.createElement("audio")).id=t,i.autoplay=!0,i.hidden=!0;let e=sM();e.enabled=!0;let n=new MediaStream([e]);i.srcObject=n,document.addEventListener("visibilitychange",()=>{i&&(i.srcObject=document.hidden?null:n,document.hidden||(this.log.debug("page visible again, triggering startAudio to resume playback and update playback status"),this.startAudio()))}),document.body.append(i),this.once(ep.Disconnected,()=>{null==i||i.remove(),i=null})}e.push(i)}
1this.remoteParticipants.forEach(t=>{t.audioTrackPublications.forEach(t=>{t.track&&t.track.attachedElements.forEach(t=>{e.push(t)})})});try{yield Promise.all([this.acquireAudioContext(),...e.map(e=>(e.muted=!1,e.play()))]),this.handleAudioPlaybackStarted()}catch(e){throw this.handleAudioPlaybackFailed(e),e}}),this.startVideo=()=>aD(this,void 0,void 0,function*(){let e=[];for(let t of this.remoteParticipants.values())t.videoTrackPublications.forEach(t=>{var i;null==(i=t.track)||i.attachedElements.forEach(t=>{e.includes(t)||e.push(t)})});yield Promise.all(e.map(e=>e.play())).then(()=>{this.handleVideoPlaybackStarted()}).catch(e=>{"NotAllowedError"===e.name?this.handleVideoPlaybackFailed():this.log.warn("Resuming video playback failed, make sure you call `startVideo` directly in a user gesture handler")})}),this.handleRestarting=()=>{for(let e of(this.clearConnectionReconcile(),this.isResuming=!1,this.remoteParticipants.values()))this.handleParticipantDisconnected(e.identity,e);this.setAndEmitConnectionState(eJ.Reconnecting)&&this.emit(ep.Reconnecting)},this.handleRestarted=()=>{this.outgoingDataTrackManager.sfuWillRepublishTracks(),this.incomingDataTrackManager.resendSubscriptionUpdates()},this.handleSignalRestarted=e=>aD(this,void 0,void 0,function*(){this.log.debug("signal reconnected to server, region ".concat(e.serverRegion),{region:e.serverRegion}),this.bufferedEvents=[],this.applyJoinResponse(e);try{yield this.localParticipant.republishAllTracks(void 0,!0)}catch(e){this.log.error("error trying to re-publish tracks after reconnection",{error:e})}try{yield this.engine.waitForRestarted(),this.log.debug("fully reconnected to server",{region:e.serverRegion})}catch(e){return}this.setAndEmitConnectionState(eJ.Connected),this.emit(ep.Reconnected),this.registerConnectionReconcile(),this.emitBufferedEvents()}),this.handleParticipantUpdates=e=>{var t;for(let i of e){if(i.identity===this.localParticipant.identity){this.localParticipant.updateInfo(i);continue}""===i.identity&&(i.identity=null!=(t=this.sidToIdentity.get(i.sid))?t:"");let e=this.remoteParticipants.get(i.identity);i.state===iS.DISCONNECTED?this.handleParticipantDisconnected(i.identity,e):this.getOrCreateParticipant(i.identity,i)}let i=new Map(e.filter(e=>e.identity!==this.localParticipant.identity).map(e=>[e.identity,e.dataTracks.map(e=>ou(e))]));this.incomingDataTrackManager.receiveSfuPublicationUpdates(i)},this.handleActiveSpeakersUpdate=e=>{let t=[],i={};e.forEach(e=>{if(i[e.sid]=!0,e.sid===this.localParticipant.sid)this.localParticipant.audioLevel=e.level,this.localParticipant.setIsSpeaking(!0),t.push(this.localParticipant);else{let i=this.getRemoteParticipantBySid(e.sid);i&&(i.audioLevel=e.level,i.setIsSpeaking(!0),t.push(i))}}),i[this.localParticipant.sid]||(this.localParticipant.audioLevel=0,this.localParticipant.setIsSpeaking(!1)),this.remoteParticipants.forEac
1h(e=>{i[e.sid]||(e.audioLevel=0,e.setIsSpeaking(!1))}),this.activeSpeakers=t,this.emitWhenConnected(ep.ActiveSpeakersChanged,t)},this.handleSpeakersChanged=e=>{let t=new Map;this.activeSpeakers.forEach(e=>{let i=this.remoteParticipants.get(e.identity);i&&i.sid!==e.sid||t.set(e.sid,e)}),e.forEach(e=>{let i=this.getRemoteParticipantBySid(e.sid);e.sid===this.localParticipant.sid&&(i=this.localParticipant),i&&(i.audioLevel=e.level,i.setIsSpeaking(e.active),e.active?t.set(e.sid,i):t.delete(e.sid))});let i=Array.from(t.values());i.sort((e,t)=>t.audioLevel-e.audioLevel),this.activeSpeakers=i,this.emitWhenConnected(ep.ActiveSpeakersChanged,i)},this.handleStreamStateUpdate=e=>{e.streamStates.forEach(e=>{let t=this.getRemoteParticipantBySid(e.participantSid);if(!t)return;let i=t.getTrackPublicationBySid(e.trackSid);if(!i||!i.track)return;let n=sa.streamStateFromProto(e.state);i.track.setStreamState(n),n!==i.track.streamState&&(t.emit(em.TrackStreamStateChanged,i,i.track.streamState),this.emitWhenConnected(ep.TrackStreamStateChanged,i,i.track.streamState,t))})},this.handleSubscriptionPermissionUpdate=e=>{let t=this.getRemoteParticipantBySid(e.participantSid);if(!t)return;let i=t.getTrackPublicationBySid(e.trackSid);i&&i.setAllowed(e.allowed)},this.handleSubscriptionError=e=>{let t=Array.from(this.remoteParticipants.values()).find(t=>t.trackPublications.has(e.trackSid));if(!t)return;let i=t.getTrackPublicationBySid(e.trackSid);i&&i.setSubscriptionError(e.err)},this.handleDataPacket=(e,t)=>{let i=this.remoteParticipants.get(e.participantIdentity);if("user"===e.value.case)this.handleUserPacket(i,e.value.value,e.kind,t);else if("transcription"===e.value.case)this.handleTranscription(i,e.value.value);else if("sipDtmf"===e.value.case)this.handleSipDtmf(i,e.value.value);else if("chatMessage"===e.value.case)this.handleChatMessage(i,e.value.value);else if("metrics"===e.value.case)this.handleMetrics(e.value.value,i);else if("streamHeader"===e.value.case||"streamChunk"===e.value.case||"streamTrailer"===e.value.case)this.handleDataStream(e,t);else if("rpcRequest"===e.value.case){let t=e.value.value;this.rpcServerManager.handleIncomingRpcRequest(e.participantIdentity,t)}else if("rpcResponse"===e.value.case){let t=e.value.value;switch(t.value.case){case"payload":this.rpcClientManager.handleIncomingRpcResponseSuccess(t.requestId,t.value.value);break;case"error":this.rpcClientManager.handleIncomingRpcResponseFailure(t.requestId,cq.fromProto(t.value.value));break;default:this.log.warn("Unknown rpcResponse.value.case: ".concat(t.value.case),this.logContext)}}else"rpcAck"===e.value.case&&this.rpcClientManager.handleIncomingRpcAck(e.value.value.requestId)},this.handleUserPacket=(e,t,i,n)=>{this.emit(ep.DataReceived,t.payload,e,i,t.topic,n),null==e||e.emit(em.DataReceived,t.payload,i,n)},this.handleSipDtmf=(e,t)=>{this.emit(ep.SipDTMFReceived,t,e),null==e||e.emit(em.SipDTMFReceived,t)},this.handleTranscription=(e,t)=>{var i;let n=t.transcribedParticipantIdentity===this.localParticipant.identity?this.localParticipant:this.getParticipantByIdentity(t.transcribedParticipantIdentity),a=null==n?void 0:n.trackPublications.get(t.trackId),r=(i=this.transcriptionReceivedTimes,t.segments.map(e=>{var t;let{id:n,text:a,language:r,startTime:s,endTime:o,final:c}=e,l=null!=(t=i.get(n))?t:Date.now(),d=Date.now();return c?i.delete(n):i.set(n,l),{id:n,text:a,startTime:Number.parseInt(s.toString()),endTime:Number.parseInt(o.toString()),final:c,language:r,firstReceivedTime:l,lastReceivedTime:d}}));null==a||a.emit(ef.TranscriptionReceived,r),null==n||n.emit(em.TranscriptionReceived,r,a),this.emit(ep.TranscriptionReceived,r,n,a)},this.handleChatMessage=(e,t)=>{let i=function(e){let{id:t,timestamp:i,message:n,editTimestamp:a}=e;return{id:t,timestamp:Number.parseInt(i.toString()),editTimestamp:a?Number.parseInt(a.toString()):void 0,message:n}}(t);this.emit(ep.ChatMessage,i,e)},this.handleMetrics=(e,t)=>{this.emit(ep.MetricsReceived,e,t)},this.handleDataStream=(e,t)=>{this.incomingDataStreamManager.handleDataStreamPacket(e,t)},this.bufferedSegments=new Map,this.handleAudioPlaybackStarted=()=>
1{this.canPlaybackAudio||(this.audioEnabled=!0,this.emit(ep.AudioPlaybackStatusChanged,!0))},this.handleAudioPlaybackFailed=e=>{this.log.warn("could not playback audio",{error:e}),this.canPlaybackAudio&&(this.audioEnabled=!1,this.emit(ep.AudioPlaybackStatusChanged,!1))},this.handleVideoPlaybackStarted=()=>{this.isVideoPlaybackBlocked&&(this.isVideoPlaybackBlocked=!1,this.emit(ep.VideoPlaybackStatusChanged,!0))},this.handleVideoPlaybackFailed=()=>{this.isVideoPlaybackBlocked||(this.isVideoPlaybackBlocked=!0,this.emit(ep.VideoPlaybackStatusChanged,!1))},this.handleDeviceChange=()=>aD(this,void 0,void 0,function*(){var e;(null==(e=rM())?void 0:e.os)!=="iOS"&&(yield this.selectDefaultDevices()),this.emit(ep.MediaDevicesChanged)}),this.handleRoomUpdate=e=>{let t=this.roomInfo;this.roomInfo=e,t&&t.metadata!==e.metadata&&this.emitWhenConnected(ep.RoomMetadataChanged,e.metadata),(null==t?void 0:t.activeRecording)!==e.activeRecording&&this.emitWhenConnected(ep.RecordingStatusChanged,e.activeRecording)},this.handleConnectionQualityUpdate=e=>{e.updates.forEach(e=>{if(e.participantSid===this.localParticipant.sid)return void this.localParticipant.setConnectionQuality(e.quality);let t=this.getRemoteParticipantBySid(e.participantSid);t&&t.setConnectionQuality(e.quality)})},this.getRemoteParticipantClientProtocol=e=>{var t,i;return null!=(i=null==(t=this.remoteParticipants.get(e))?void 0:t.clientProtocol)?i:0},this.onLocalParticipantMetadataChanged=e=>{this.emit(ep.ParticipantMetadataChanged,e,this.localParticipant)},this.onLocalParticipantNameChanged=e=>{this.emit(ep.ParticipantNameChanged,e,this.localParticipant)},this.onLocalAttributesChanged=e=>{this.emit(ep.ParticipantAttributesChanged,e,this.localParticipant)},this.onLocalTrackMuted=e=>{this.emit(ep.TrackMuted,e,this.localParticipant)},this.onLocalTrackUnmuted=e=>{this.emit(ep.TrackUnmuted,e,this.localParticipant)},this.onTrackProcessorUpdate=e=>{var t;null==(t=null==e?void 0:e.onPublish)||t.call(e,this)},this.onLocalTrackPublished=e=>aD(this,void 0,void 0,function*(){var t,i,n,a,r,s;null==(t=e.track)||t.on(ef.TrackProcessorUpdate,this.onTrackProcessorUpdate),null==(i=e.track)||i.on(ef.Restarted,this.onLocalTrackRestarted),null==(r=null==(a=null==(n=e.track)?void 0:n.getProcessor())?void 0:a.onPublish)||r.call(a,this),this.emit(ep.LocalTrackPublished,e,this.localParticipant),sz(e.track)&&(yield e.track.checkForSilence())&&this.emit(ep.LocalAudioSilenceDetected,e);let o=yield null==(s=e.track)?void 0:s.getDeviceId(!1),c=r9(e.source);c&&o&&o!==this.localParticipant.activeDeviceMap.get(c)&&(this.localParticipant.activeDeviceMap.set(c,o),this.emit(ep.ActiveDeviceChanged,c,o))}),this.onLocalTrackUnpublished=e=>{var t,i;null==(t=e.track)||t.off(ef.TrackProcessorUpdate,this.onTrackProcessorUpdate),null==(i=e.track)||i.off(ef.Restarted,this.onLocalTrackRestarted),this.emit(ep.LocalTrackUnpublished,e,this.localParticipant)},this.onLocalTrackRestarted=e=>aD(this,void 0,void 0,function*(){let t=yield e.getDeviceId(!1),i=r9(e.source);i&&t&&t!==this.localParticipant.activeDeviceMap.get(i)&&(this.log.debug("local track restarted, setting ".concat(i," ").concat(t," active")),this.localParticipant.activeDeviceMap.set(i,t),this.emit(ep.ActiveDeviceChanged,i,t))}),this.onLocalConnectionQualityChanged=e=>{this.emit(ep.ConnectionQualityChanged,e,this.localParticipant)},this.onMediaDevicesError=(e,t)=>{this.emit(ep.MediaDevicesError,e,t)},this.onLocalParticipantPermissionsChanged=e=>{this.emit(ep.ParticipantPermissionsChanged,e,this.localParticipant)},this.onLocalChatMessageSent=e=>{this.emit(ep.ChatMessage,e,this.localParticipant)},this.setMaxListeners(100),this.remoteParticipants=new Map,this.sidToIdentity=new Map,this.options=Object.assign(Object.assign({},oO),e),this.log=aI(null!=(i=this.options.loggerName)?i:es.Room,()=>this.logContext),this.transcriptionReceivedTimes=new Map,this.options.audioCaptureDefaults=Object.assign(Object.assign({},oD),null==e?void 0:e.audioCaptureDefaults),this.options.videoCaptureDefaults=Object.assign(Object.assign({},oM),null==e?void 0:e.videoCaptureDefaults),this.options.publishDefaults=Object.assign(Object.assign({},o_),null==e?void 0:e.publishDefaults),this.maybeCreateEngine(),this.incomingDataStreamManager=new ca,this.outgoingDataStreamManager=new cc(this.engine,this.log),this.incomingDataTrackManager=new c_({e2eeManager:this.e2eeManager}),this.incomingDataTrackManager.on("sfuUpdateSubscription",e=>{this.engine.client.sendUpdateDataSubscription(e.sid,e.subscribe)}).on("trackPublished",e=>{var t;e.track.publisherIdentity!==this.localParticipant.identity&&(this.emit
1(ep.DataTrackPublished,e.track),null==(t=this.remoteParticipants.get(e.track.publisherIdentity))||t.addRemoteDataTrack(e.track))}).on("trackUnpublished",e=>{var t;e.publisherIdentity!==this.localParticipant.identity&&(this.emit(ep.DataTrackUnpublished,e.sid),null==(t=this.remoteParticipants.get(e.publisherIdentity))||t.removeRemoteDataTrack(e.sid))}),this.outgoingDataTrackManager=new cB({e2eeManager:this.e2eeManager}),this.outgoingDataTrackManager.on("sfuPublishRequest",e=>{this.engine.client.sendPublishDataTrackRequest(e.handle,e.name,e.usesE2ee)}).on("sfuUnpublishRequest",e=>{this.engine.client.sendUnPublishDataTrackRequest(e.handle)}).on("trackPublished",e=>{this.emit(ep.LocalDataTrackPublished,e.track)}).on("trackUnpublished",e=>{this.emit(ep.LocalDataTrackUnpublished,e.sid)}).on("packetAvailable",e=>{let{handle:t,bytes:i}=e;this.engine.sendLossyBytes(i,eA.DATA_TRACK_LOSSY,"wait").finally(()=>this.outgoingDataTrackManager.handlePacketSendComplete(t))}),this.registerRpcDataStreamHandler(),this.rpcClientManager=new cG(this.log,this.outgoingDataStreamManager,this.getRemoteParticipantClientProtocol,()=>{var e,t;return null==(t=null==(e=this.engine.latestJoinResponse)?void 0:e.serverInfo)?void 0:t.version}),this.rpcClientManager.on("sendDataPacket",e=>{var t;let{packet:i}=e;null==(t=this.engine)||t.sendDataPacket(i,eA.RELIABLE)}),this.rpcServerManager=new cK(this.log,this.outgoingDataStreamManager,this.getRemoteParticipantClientProtocol),this.rpcServerManager.on("sendDataPacket",e=>{var t;let{packet:i}=e;null==(t=this.engine)||t.sendDataPacket(i,eA.RELIABLE)}),this.disconnectLock=new e2,this.localParticipant=new cZ("","",this.engine,this.options,this.outgoingDataStreamManager,this.outgoingDataTrackManager,this.rpcClientManager,this.rpcServerManager),this.setupPacketTrailer(),(this.options.e2ee||this.options.encryption)&&this.setupE2EE(),this.engine.e2eeManager=this.e2eeManager,this.incomingDataTrackManager.updateE2eeManager(null!=(n=this.e2eeManager)?n:null),this.outgoingDataTrackManager.updateE2eeManager(null!=(a=this.e2eeManager)?a:null),this.options.videoCaptureDefaults.deviceId&&this.localParticipant.activeDeviceMap.set("videoinput",sA(this.options.videoCaptureDefaults.deviceId)),this.options.audioCaptureDefaults.deviceId&&this.localParticipant.activeDeviceMap.set("audioinput",sA(this.options.audioCaptureDefaults.deviceId)),(null==(r=this.options.audioOutput)?void 0:r.deviceId)&&this.switchActiveDevice("audiooutput",sA(this.options.audioOutput.deviceId)).catch(e=>this.log.warn("Could not set audio output: ".concat(e.message))),sb()){const e=new AbortController;null==(o=null==(s=navigator.mediaDevices)?void 0:s.addEventListener)||o.call(s,"devicechange",this.handleDeviceChange,{signal:e.signal}),c4.cleanupRegistry&&c4.cleanupRegistry.register(this,()=>{e.abort()})}}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)}
1registerRpcMethod(e,t){this.rpcServerManager.registerRpcMethod(e,t)}unregisterRpcMethod(e){this.rpcServerManager.unregisterRpcMethod(e)}setE2EEEnabled(e){return aD(this,void 0,void 0,function*(){let t=yield this.e2eeStateMutex.lock();try{if(this.e2eeManager)this.isE2EEEnabled!==e&&(yield this.localParticipant.setE2EEEnabled(e),""!==this.localParticipant.identity&&this.e2eeManager.setParticipantCryptorEnabled(e,this.localParticipant.identity));else throw Error("e2ee not configured, please set e2ee settings within the room options")}finally{t()}})}setupE2EE(){var e,t;let i=!!this.options.encryption,n=this.options.encryption||this.options.e2ee;n&&("e2eeManager"in n?(this.e2eeManager=n.e2eeManager,this.e2eeManager.isDataChannelEncryptionEnabled=i):this.e2eeManager=new s9(n,i),this.e2eeManager.on(eS.ParticipantEncryptionStatusChanged,(e,t)=>{t.isLocal&&(this.isE2EEEnabled=e),this.emit(ep.ParticipantEncryptionStatusChanged,e,t)}),this.e2eeManager.on(eS.EncryptionError,(e,t)=>{let i=t?this.getParticipantByIdentity(t):void 0;this.emit(ep.EncryptionError,e,i)}),null==(e=this.e2eeManager)||e.setup(this),null==(t=this.e2eeManager)||t.setupEngine(this.engine))}setupPacketTrailer(){this.packetTrailerManager=new oe(this.options.packetTrailer),this.packetTrailerManager.setup(this)}get logContext(){var e,t,i;return{room:this.name,roomID:null==(e=this.roomInfo)?void 0:e.sid,participant:null==(t=this.localParticipant)?void 0:t.identity,participantID:null==(i=this.localParticipant)?void 0:i.sid}}get isRecording(){var e,t;return null!=(t=null==(e=this.roomInfo)?void 0:e.activeRecording)&&t}getSid(){return this.state===eJ.Disconnected?r_.resolve(""):this.roomInfo&&""!==this.roomInfo.sid?r_.resolve(this.roomInfo.sid):new r_((e,t)=>{let i=t=>{""!==t.sid&&(this.engine.off(eg.RoomUpdate,i),e(t.sid))};this.engine.on(eg.RoomUpdate,i),this.once(ep.Disconnected,()=>{this.engine.off(eg.RoomUpdate,i),t(new rH("Room disconnected before room server id was available"))})})}get name(){var e,t;return null!=(t=null==(e=this.roomInfo)?void 0:e.name)?t:""}get metadata(){var e;return null==(e=this.roomInfo)?void 0:e.metadata}get numParticipants(){var e,t;return null!=(t=null==(e=this.roomInfo)?void 0:e.numParticipants)?t:0}get numPublishers(){var e,t;return null!=(t=null==(e=this.roomInfo)?void 0:e.numPublishers)?t:0}maybeCreateEngine(){(!this.engine||!this.engine.isNewlyCreated&&this.engine.isClosed)&&(this.engine=new o9(this.options),this.engine.e2eeManager=this.e2eeManager,this.engine.on(eg.ParticipantUpdate,this.handleParticipantUpdates).on(eg.RoomUpdate,this.handleRoomUpdate).on(eg.SpeakersChanged,this.handleSpeakersChanged).on(eg.StreamStateChanged,this.handleStreamStateUpdate).on(eg.ConnectionQualityUpdate,this.handleConnectionQualityUpdate).on(eg.SubscriptionError,this.handleSubscriptionError).on(eg.SubscriptionPermissionUpdate,this.handleSubscriptionPermissionUpdate).on(eg.MediaTrackAdded,(e,t,i)=>{this.onTrackAdded(e,t,i)}).on(eg.Disconnected,e=>{this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,e)}).on(eg.ActiveSpeakersUpdate,this.handleActiveSpeakersUpdate).on(eg.DataPacketReceived,this.handleDataPacket).on(eg.Resuming,()=>{this.clearConnectionReconcile(),this.isResuming=!0,this.log.debug("Resuming signal connection"),this.setAndEmitConnectionState(eJ.SignalReconnecting)&&this.emit(ep.SignalReconnecting)}).on(eg.Resumed,()=>{this.registerConnectionReconcile(),this.isResuming=!1,this.log.debug("Resumed signal connection"),this.updateSubscriptions(),this.emitBufferedEvents(),this.setAndEmitConnectionState(eJ.Connected)&&this.emit(ep.Reconnected)}).on(eg.SignalResumed,()=>{this.bufferedEvents=[],(this.state===eJ.Reconnecting||this.isResuming)&&this.sendSyncState()}).on(eg.Restarting,this.handleRestarting).on(eg.Restarted,this.handleRestarted).on(eg.SignalRestarted,this.handleSignalRestarted).on(eg.Offline,()=>{this.setAndEmitConnectionState(eJ.Reconnecting)&&this.emit(ep.Reconnecting)}).on(eg.DCBufferStatusChanged,(e,t)=>{this.emit(ep.DCBufferStatusChanged,e,t)}).on(eg.LocalTrackSubscribed,e=>{this.handleLocalTrackSubscribed(e)}).on(eg.RoomMoved,e=>{this.log.debug("room moved",e),e.room&&this.handleRoomUpdate(e.room),this.remoteParticipants.forEac
1h((e,t)=>{this.handleParticipantDisconnected(t,e)}),this.emit(ep.Moved,e.room.name),e.participant?this.handleParticipantUpdates([e.participant,...e.otherParticipants]):this.handleParticipantUpdates(e.otherParticipants)}).on(eg.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!==ix.NONE}}):this.log.warn("received PublishDataTrackResponse, but event.info was ".concat(e.info,", so skipping."))}).on(eg.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(eg.DataTrackSubscriberHandles,e=>{let t=new Map(Object.entries(e.subHandles).map(e=>{let[t,i]=e;return[parseInt(t,10),i.trackSid]}));this.incomingDataTrackManager.receivedSfuSubscriberHandles(t)}).on(eg.DataTrackPacketReceived,e=>{try{this.incomingDataTrackManager.packetReceived(e)}catch(e){throw e}}).on(eg.Joined,e=>{let t=new Map(e.otherParticipants.map(e=>[e.identity,e.dataTracks.map(e=>ou(e))]));this.incomingDataTrackManager.receiveSfuPublicationUpdates(t)}).on(eg.TokenRefreshed,e=>{var t;null==(t=this.regionUrlProvider)||t.updateToken(e)}).on(eg.ServerRegionsReported,e=>{var t;null==(t=this.regionUrlProvider)||t.setServerReportedRegions({regionSettings:e,updatedAtInMs:Date.now(),maxAgeInMs:5e3})}),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=>aD(this,void 0,void 0,function*(){return this.regionUrlProvider?this.regionUrlProvider.getNextBestRegionUrl(e):null}),resetAttempts:()=>{var e;return null==(e=this.regionUrlProvider)?void 0:e.resetAttempts()}}}static getLocalDevices(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return on.getInstance().getDevices(e,t)}prepareConnection(e,t){return aD(this,void 0,void 0,function*(){if(this.state===eJ.Disconnected){this.log.debug("prepareConnection to ".concat(e));try{if(sy(new URL(e))&&t){this.regionUrlProvider=new ce(e,t);let i=yield this.regionUrlProvider.getNextBestRegionUrl();i&&this.state===eJ.Disconnected&&(this.regionUrl=i,yield fetch(sL(i),{method:"HEAD"}),this.log.debug("prepared connection to ".concat(i)))}else yield fetch(sL(e),{method:"HEAD"})}catch(e){this.log.warn("could not prepare connection",{error:e})}}})}getParticipantByIdentity(e){return this.localParticipant.identity===e?this.localParticipant:this.remoteParticipants.get(e)}clearConnectionFutures(){this.connectFuture=void 0}simulateScenario(e,t){return aD(this,void 0,void 0,function*(){let i,n=()=>aD(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":i=new ad({scenario:{case:"speakerUpdate",value:3}});break;case"node-failure":i=new ad({scenario:{case:"nodeFailure",value:!0}});break;case"server-leave":i=new ad({scenario:{case:"serverLeave",value:!0}});break;case"migration":i=new ad({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":n=()=>aD(this,void 0,void 0,function*(){yield this.engine.client.handleOnClose("simulate resume-disconnect")}),i=new ad({scenario:{case:"disconnectSignalOnResume",value:!0}});break;case"disconnect-signal-on-resume-no-messages":n=()=>aD(this,void 0,void 0,function*(){yield this.engine.client.handleOnClose("simulate resume-disconnect")}),i=new ad({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":i=new ad({scenario:{case:"switchCandidateProtocol",value:"force-tls"===e?2:1}}),n=()=>aD(this,void 0,void 0,function*(){let e=this.engine.client.onLeave;e&&e(new nX({reason:ih.CLIENT_INITIATED,action:nZ.RECONNECT}))});break;case"subscriber-bandwidth":if(void 0===t||"number"!=typeof t)throw Error("subscriber-bandwidth requires a number as argument");i=new ad({scenario:{case:"subscriberBandwidth",value:sF(t)}});break;case"leave-full-reconnect":i=new ad({scenario:{case:"leaveRequestFullReconnect",value:!0}})}i&&(yield this.engine.client.sendSimulateScenario(i),yield n())})}get canPlaybackAudio(){return this.audioEnabled}get canPlaybackVideo(){return!this.isVideoPlaybackBlocked}getActiveDevice(e){return this.localParticipant.activeDeviceMap.get(e)}switchActiveDevice(e,t){return aD(this,arguments,void 0,function(e,t){var i=this;let n=!(arguments.length>2)||void 0===arguments[2]||arguments[2];
1return function*(){var a,r,s,o,c,l;let d=!0,u=!1,h=n?{exact:t}:t;if("audioinput"===e){u=0===i.localParticipant.audioTrackPublications.size;let t=null!=(a=i.getActiveDevice(e))?a:i.options.audioCaptureDefaults.deviceId;i.options.audioCaptureDefaults.deviceId=h;let n=Array.from(i.localParticipant.audioTrackPublications.values()).filter(e=>e.source===sa.Source.Microphone);try{d=(yield Promise.all(n.map(e=>{var t;return null==(t=e.audioTrack)?void 0:t.setDeviceId(h)}))).every(e=>!0===e)}catch(e){throw i.options.audioCaptureDefaults.deviceId=t,e}let r=n.some(e=>{var t,i;return null!=(i=null==(t=e.track)?void 0:t.isMuted)&&i});d&&r&&(u=!0)}else if("videoinput"===e){u=0===i.localParticipant.videoTrackPublications.size;let t=null!=(r=i.getActiveDevice(e))?r:i.options.videoCaptureDefaults.deviceId;i.options.videoCaptureDefaults.deviceId=h;let n=Array.from(i.localParticipant.videoTrackPublications.values()).filter(e=>e.source===sa.Source.Camera);try{d=(yield Promise.all(n.map(e=>{var t;return null==(t=e.videoTrack)?void 0:t.setDeviceId(h)}))).every(e=>!0===e)}catch(e){throw i.options.videoCaptureDefaults.deviceId=t,e}let a=n.some(e=>{var t,i;return null!=(i=null==(t=e.track)?void 0:t.isMuted)&&i});d&&a&&(u=!0)}else if("audiooutput"===e){if(u=!0,!sh()&&!i.options.webAudioMix||i.options.webAudioMix&&i.audioContext&&!("setSinkId"in i.audioContext))throw Error("cannot switch audio output, the current browser does not support it");i.options.webAudioMix&&(t=null!=(s=yield on.getInstance().normalizeDeviceId("audiooutput",t))?s:""),null!=(l=i.options).audioOutput||(l.audioOutput={});let n=null!=(o=i.getActiveDevice(e))?o:i.options.audioOutput.deviceId;i.options.audioOutput.deviceId=t;try{i.options.webAudioMix&&(null==(c=i.audioContext)||c.setSinkId(t)),yield Promise.all(Array.from(i.remoteParticipants.values()).map(e=>e.setAudioOutput({deviceId:t})))}catch(e){throw i.options.audioOutput.deviceId=n,e}}return u&&(i.localParticipant.activeDeviceMap.set(e,t),i.emit(ep.ActiveDeviceChanged,e,t)),d}()})}setupLocalParticipantEvents(){this.localParticipant.on(em.ParticipantMetadataChanged,this.onLocalParticipantMetadataChanged).on(em.ParticipantNameChanged,this.onLocalParticipantNameChanged).on(em.AttributesChanged,this.onLocalAttributesChanged).on(em.TrackMuted,this.onLocalTrackMuted).on(em.TrackUnmuted,this.onLocalTrackUnmuted).on(em.LocalTrackPublished,this.onLocalTrackPublished).on(em.LocalTrackUnpublished,this.onLocalTrackUnpublished).on(em.ConnectionQualityChanged,this.onLocalConnectionQualityChanged).on(em.MediaDevicesError,this.onMediaDevicesError).on(em.AudioStreamAcquired,this.startAudio).on(em.ChatMessage,this.onLocalChatMessageSent).on(em.ParticipantPermissionsChanged,this.onLocalParticipantPermissionsChanged)}recreateEngine(e){let t=this.engine;e&&t&&!t.client.isDisconnected?t.client.sendLeave().finally(()=>t.close()):null==t||t.close(),this.engine=void 0,this.isResuming=!1,this.remoteParticipants.clear(),this.sidToIdentity.clear(),this.bufferedEvents=[],this.maybeCreateEngine()}onTrackAdded(e,t,i){var n;let a,r;if(this.state===eJ.Connecting||this.state===eJ.Reconnecting){let n=()=>{this.log.debug("deferring on track for later",{mediaTrackId:e.id,mediaStreamId:t.id,tracksInStream:t.getTracks().map(e=>e.id)}),this.onTrackAdded(e,t,i),a()},a=()=>{this.off(ep.Reconnected,n),this.off(ep.Connected,n),this.off(ep.Disconnected,a)};this.once(ep.Reconnected,n),this.once(ep.Connected,n),this.once(ep.Disconnected,a);return}if(this.state===eJ.Disconnected)return void this.log.warn("skipping incoming track after Room disconnected");if("ended"===e.readyState)return void this.log.debug("skipping incoming track as it already ended");let s=(r=(n=t.id).split("|")).length>1?[r[0],n.substr(r[0].length+1)]:[n,""],o=s[0],c=s[1],l=e.id;if(c&&c.startsWith("TR")&&(l=c),o===this.localParticipant.sid)return void this.log.warn("tried to create RemoteParticipant for local participant");let d=Array.from(this.remoteParticipants.values()).find(e=>e.sid===o);if(!d){o.startsWith("PA")&&this.log.error("Tried to add a track for a participant, that's not present. Sid: ".concat(o));return}if(!l.startsWith("TR")){let e=this.engine.getTrackIdForReceiver(i);if(!e)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));l=e}l.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(l),{remoteParticipantID:o,streamId:c,trackId:l}),this.options.adaptiveStream&&(a="object"==typeof this.options.adaptiveStream?this.options.adaptiveStream:{});let u=d.addSubscribedMediaTrack(e,l,t,i,a);
1(null==u?void 0:u.isEncrypted)&&!this.e2eeManager&&this.emit(ep.EncryptionError,Error("Encrypted ".concat(u.source," track received from participant ").concat(d.sid,", but room does not have encryption enabled!")))}handleLocalTrackSubscribed(e){let t,i=()=>this.localParticipant.getTrackPublications().find(t=>{let{trackSid:i}=t;return i===e}),n=i();if(n)return void this.emitLocalTrackSubscribed(n);this.log.debug("deferring LocalTrackSubscribed, publication not yet available",{subscribedSid:e});let a=t=>{t.trackSid===e&&(r(),this.emitLocalTrackSubscribed(t))},r=()=>{clearTimeout(t),this.localParticipant.off(em.LocalTrackPublished,a),this.off(ep.Disconnected,r)};this.localParticipant.on(em.LocalTrackPublished,a),this.once(ep.Disconnected,r),t=setTimeout(()=>{r();let t=i();t?this.emitLocalTrackSubscribed(t):this.log.warn("could not find local track publication for LocalTrackSubscribed event after timeout",{subscribedSid:e})},1e4)}emitLocalTrackSubscribed(e){this.localParticipant.emit(em.LocalTrackSubscribed,e),this.emitWhenConnected(ep.LocalTrackSubscribed,e,this.localParticipant)}handleDisconnect(){var e,t;let i=!(arguments.length>0)||void 0===arguments[0]||arguments[0],n=arguments.length>1?arguments[1]:void 0;if(this.clearConnectionReconcile(),this.isResuming=!1,this.bufferedEvents=[],this.transcriptionReceivedTimes.clear(),this.incomingDataStreamManager.clearControllers(),this.incomingDataTrackManager.reset(),this.outgoingDataTrackManager.reset(),this.state!==eJ.Disconnected){this.regionUrl=void 0,this.regionUrlProvider&&this.regionUrlProvider.notifyDisconnected();
1try{this.remoteParticipants.forEach(e=>{e.trackPublications.forEach(t=>{e.unpublishTrack(t.trackSid)})}),this.localParticipant.trackPublications.forEach(e=>{var t,n,a;e.track&&this.localParticipant.unpublishTrack(e.track,i),i?(null==(t=e.track)||t.detach(),null==(n=e.track)||n.stop()):null==(a=e.track)||a.stopMonitor()}),this.localParticipant.off(em.ParticipantMetadataChanged,this.onLocalParticipantMetadataChanged).off(em.ParticipantNameChanged,this.onLocalParticipantNameChanged).off(em.AttributesChanged,this.onLocalAttributesChanged).off(em.TrackMuted,this.onLocalTrackMuted).off(em.TrackUnmuted,this.onLocalTrackUnmuted).off(em.LocalTrackPublished,this.onLocalTrackPublished).off(em.LocalTrackUnpublished,this.onLocalTrackUnpublished).off(em.ConnectionQualityChanged,this.onLocalConnectionQualityChanged).off(em.MediaDevicesError,this.onMediaDevicesError).off(em.AudioStreamAcquired,this.startAudio).off(em.ChatMessage,this.onLocalChatMessageSent).off(em.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&&"boolean"==typeof this.options.webAudioMix&&(this.audioContext.close(),this.audioContext=void 0),sb()&&(window.removeEventListener("beforeunload",this.onPageLeave),window.removeEventListener("pagehide",this.onPageLeave),window.removeEventListener("freeze",this.onPageLeave),null==(t=null==(e=navigator.mediaDevices)?void 0:e.removeEventListener)||t.call(e,"devicechange",this.handleDeviceChange))}finally{this.setAndEmitConnectionState(eJ.Disconnected),this.emit(ep.Disconnected,n)}}}handleParticipantDisconnected(e,t){this.remoteParticipants.delete(e),t&&(this.incomingDataStreamManager.validateParticipantHasNoActiveDataStreams(e),this.incomingDataTrackManager.handleRemoteParticipantDisconnected(e),t.trackPublications.forEach(e=>{t.unpublishTrack(e.trackSid,!0)}),this.emit(ep.ParticipantDisconnected,t),t.setDisconnected(),this.rpcClientManager.handleParticipantDisconnected(t.identity))}selectDefaultDevices(){return aD(this,void 0,void 0,function*(){var e,t,i;let n=on.getInstance().previousDevices,a=yield on.getInstance().getDevices(void 0,!1),r=rM();if((null==r?void 0:r.name)==="Chrome"&&"iOS"!==r.os)for(let e of a){let t=n.find(t=>t.deviceId===e.deviceId);t&&""!==t.label&&t.kind===e.kind&&t.label!==e.label&&"default"===this.getActiveDevice(e.kind)&&this.emit(ep.ActiveDeviceChanged,e.kind,e.deviceId)}for(let r of["audiooutput","audioinput","videoinput"]){let s="audioinput"===r?sa.Source.Microphone:"videoinput"===r?sa.Source.Camera:sa.Source.Unknown,o=this.localParticipant.getTrackPublication(s);if(o&&(null==(e=o.track)?void 0:e.isUserProvided))continue;let c=a.filter(e=>e.kind===r),l=this.getActiveDevice(r);if(l===(null==(t=n.filter(e=>e.kind===r)[0])?void 0:t.deviceId)&&c.length>0&&(null==(i=c[0])?void 0:i.deviceId)!==l){yield this.switchActiveDevice(r,c[0].deviceId);continue}("audioinput"!==r||sf())&&"videoinput"!==r&&(!(c.length>0)||c.find(e=>e.deviceId===this.getActiveDevice(r))||"audiooutput"===r&&sf()||(yield this.switchActiveDevice(r,c[0].deviceId)))}})}acquireAudioContext(){return aD(this,void 0,void 0,function*(){var e,t;if("boolean"!=typeof this.options.webAudioMix&&this.options.webAudioMix.audioContext?this.audioContext=this.options.webAudioMix.audioContext:this.audioContext&&"closed"!==this.audioContext.state||(this.audioContext=null!=(e=r8())?e:void 0),this.options.webAudioMix&&this.remoteParticipants.forEac
1h(e=>e.setAudioContext(this.audioContext)),this.localParticipant.setAudioContext(this.audioContext),this.audioContext&&"suspended"===this.audioContext.state)try{yield Promise.race([this.audioContext.resume(),sc(200)])}catch(e){this.log.warn("Could not resume audio context",{error:e})}let i=(null==(t=this.audioContext)?void 0:t.state)==="running";i!==this.canPlaybackAudio&&(this.audioEnabled=i,this.emit(ep.AudioPlaybackStatusChanged,i))})}createParticipant(e,t){var i;let n;return n=t?c3.fromParticipantInfo(this.engine.client,t,{loggerContextCb:()=>this.logContext,loggerName:this.options.loggerName},this.incomingDataTrackManager):new c3(this.engine.client,"",e,void 0,void 0,void 0,{loggerContextCb:()=>this.logContext,loggerName:this.options.loggerName}),this.options.webAudioMix&&n.setAudioContext(this.audioContext),(null==(i=this.options.audioOutput)?void 0:i.deviceId)&&n.setAudioOutput(this.options.audioOutput).catch(e=>this.log.warn("Could not set audio output: ".concat(e.message))),n}getOrCreateParticipant(e,t){if(this.remoteParticipants.has(e)){let i=this.remoteParticipants.get(e);return t&&i.updateInfo(t)&&this.sidToIdentity.set(t.sid,t.identity),i}let i=this.createParticipant(e,t);return this.remoteParticipants.set(e,i),this.sidToIdentity.set(t.sid,t.identity),this.emitWhenConnected(ep.ParticipantConnected,i),i.on(em.TrackPublished,e=>{this.emitWhenConnected(ep.TrackPublished,e,i)}).on(em.TrackSubscribed,(e,t)=>{e.kind===sa.Kind.Audio?(e.on(ef.AudioPlaybackStarted,this.handleAudioPlaybackStarted),e.on(ef.AudioPlaybackFailed,this.handleAudioPlaybackFailed)):e.kind===sa.Kind.Video&&(e.on(ef.VideoPlaybackFailed,this.handleVideoPlaybackFailed),e.on(ef.VideoPlaybackStarted,this.handleVideoPlaybackStarted)),this.emitWhenConnected(ep.TrackSubscribed,e,t,i)}).on(em.TrackUnpublished,e=>{this.emit(ep.TrackUnpublished,e,i)}).on(em.TrackUnsubscribed,(e,t)=>{this.emit(ep.TrackUnsubscribed,e,t,i)}).on(em.TrackMuted,e=>{this.emitWhenConnected(ep.TrackMuted,e,i)}).on(em.TrackUnmuted,e=>{this.emitWhenConnected(ep.TrackUnmuted,e,i)}).on(em.ParticipantMetadataChanged,e=>{this.emitWhenConnected(ep.ParticipantMetadataChanged,e,i)}).on(em.ParticipantNameChanged,e=>{this.emitWhenConnected(ep.ParticipantNameChanged,e,i)}).on(em.AttributesChanged,e=>{this.emitWhenConnected(ep.ParticipantAttributesChanged,e,i)}).on(em.ConnectionQualityChanged,e=>{this.emitWhenConnected(ep.ConnectionQualityChanged,e,i)}).on(em.ParticipantPermissionsChanged,e=>{this.emitWhenConnected(ep.ParticipantPermissionsChanged,e,i)}).on(em.TrackSubscriptionStatusChanged,(e,t)=>{this.emitWhenConnected(ep.TrackSubscriptionStatusChanged,e,t,i)}).on(em.TrackSubscriptionFailed,(e,t)=>{this.emit(ep.TrackSubscriptionFailed,e,i,t)}).on(em.TrackSubscriptionPermissionChanged,(e,t)=>{this.emitWhenConnected(ep.TrackSubscriptionPermissionChanged,e,t,i)}).on(em.Active,()=>{this.emitWhenConnected(ep.ParticipantActive,i),i.kind===iw.AGENT&&this.localParticipant.setActiveAgent(i)}),t&&i.updateInfo(t),i}sendSyncState(){let e=Array.from(this.remoteParticipants.values()).reduce((e,t)=>(e.push(...t.getTrackPublications()),e),[]),t=this.localParticipant.getTrackPublications(),i=this.outgoingDataTrackManager.queryPublished();this.engine.sendSyncState(e,t,i)}updateSubscriptions(){for(let t of this.remoteParticipants.values())for(let i of t.videoTrackPublications.values()){var e;i.isSubscribed&&(e=i)&&!e.isLocal&&i.emitTrackUpdate()}}getRemoteParticipantBySid(e){let t=this.sidToIdentity.get(e);if(t)return this.remoteParticipants.get(t)}registerRpcDataStreamHandler(){this.incomingDataStreamManager.registerTextStreamHandler(cV,(e,t)=>aD(this,[e,t],void 0,function(e,t){var i=this;let{identity:n}=t;return function*(){var t;let a=null!=(t=e.info.attributes)?t:{};yield i.rpcServerManager.handleIncomingDataStream(e,n,a)}()})),this.incomingDataStreamManager.registerTextStreamHandler(cH,(e,t)=>aD(this,[e,t],void 0,function(e,t){var i=this;let{identity:n}=t;return function*(){var t;let a=null!=(t=e.info.attributes)?t:{};yield i.rpcClientManager.handleIncomingDataStream(e,n,a)}()}))}registerConnectionReconcile(){this.clearConnectionReconcile();let e=0;this.connectionReconcileInterval=rQ.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.recreateEngine(),this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,ih.STATE_MISMATCH)))},4e3)}clearConnectionReconcile(){this.connectionReconcileInterval&&rQ.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===eJ.Connected),this.emit
1(ep.ConnectionStateChanged,this.state),!0)}emitBufferedEvents(){this.bufferedEvents.forEach(e=>{let[t,i]=e;this.emit(t,...i)}),this.bufferedEvents=[]}emitWhenConnected(e){for(var t=arguments.length,i=Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];if(this.state===eJ.Reconnecting||this.isResuming||!this.engine||this.engine.pendingReconnect)this.bufferedEvents.push([e,i]);else if(this.state===eJ.Connected)return this.emit(e,...i);return!1}simulateParticipants(e){return aD(this,void 0,void 0,function*(){var t,i,n,a;let r=Object.assign({audio:!0,video:!0,useRealTracks:!1},e.publish),s=Object.assign({count:9,audio:!1,video:!0,aspectRatios:[1.66,1.7,1.3]},e.participants);if(this.handleDisconnect(),this.roomInfo=new ib({sid:"RM_SIMULATED",name:"simulated-room",emptyTimeout:0,maxParticipants:0,creationTime:tu.parse(new Date().getTime()),metadata:"",numParticipants:1,numPublishers:1,turnPassword:"",enabledCodecs:[],activeRecording:!1}),this.localParticipant.updateInfo(new iT({identity:"simulated-local",name:"local-name"})),this.setupLocalParticipantEvents(),this.emit(ep.SignalConnected),this.emit(ep.Connected),this.setAndEmitConnectionState(eJ.Connected),r.video){let e=new c$(sa.Kind.Video,new iP({source:ic.CAMERA,sid:Math.floor(1e4*Math.random()).toString(),type:io.AUDIO,name:"video-dummy"}),new o0(r.useRealTracks&&(null==(t=window.navigator.mediaDevices)?void 0:t.getUserMedia)?(yield window.navigator.mediaDevices.getUserMedia({video:!0})).getVideoTracks()[0]:sD(160*(null!=(i=s.aspectRatios[0])?i:1),160,!0,!0),void 0,!1,{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext}),{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext});this.localParticipant.addTrackPublication(e),this.localParticipant.emit(em.LocalTrackPublished,e)}if(r.audio){let e=new c$(sa.Kind.Audio,new iP({source:ic.MICROPHONE,sid:Math.floor(1e4*Math.random()).toString(),type:io.AUDIO}),new oq(r.useRealTracks&&(null==(n=navigator.mediaDevices)?void 0:n.getUserMedia)?(yield navigator.mediaDevices.getUserMedia({audio:!0})).getAudioTracks()[0]:sM(),void 0,!1,this.audioContext,{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext}),{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext});this.localParticipant.addTrackPublication(e),this.localParticipant.emit(em.LocalTrackPublished,e)}for(let e=0;e<s.count-1;e+=1){let t=new iT({sid:Math.floor(1e4*Math.random()).toString(),identity:"simulated-".concat(e),state:iS.ACTIVE,tracks:[],joinedAt:tu.parse(Date.now())}),i=this.getOrCreateParticipant(t.identity,t);if(s.video){let n=sD(160*(null!=(a=s.aspectRatios[e%s.aspectRatios.length])?a:1),160,!1,!0),r=new iP({source:ic.CAMERA,sid:Math.floor(1e4*Math.random()).toString(),type:io.AUDIO});i.addSubscribedMediaTrack(n,r.sid,new MediaStream([n]),new RTCRtpReceiver),t.tracks=[...t.tracks,r]}if(s.audio){let e=sM(),n=new iP({source:ic.MICROPHONE,sid:Math.floor(1e4*Math.random()).toString(),type:io.AUDIO});i.addSubscribedMediaTrack(e,n.sid,new MediaStream([e]),new RTCRtpReceiver),t.tracks=[...t.tracks,n]}i.updateInfo(t)}})}emit(e){for(var t=arguments.length,i=Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];if(e!==ep.ActiveSpeakersChanged&&e!==ep.TranscriptionReceived){let t=(function e(t){return t.map(t=>{if(t)return Array.isArray(t)?e(t):"object"==typeof t?"logContext"in t?t.logContext:void 0:t})})(i).filter(e=>void 0!==e);(e===ep.TrackSubscribed||e===ep.TrackUnsubscribed)&&this.log.trace("subscribe trace: ".concat(e),{event:e,args:t}),this.log.debug("room event ".concat(e),{event:e,args:t})}return super.emit(e,...i)}}c4.cleanupRegistry="u">typeof FinalizationRegistry&&new FinalizationRegistry(e=>{e()}),(ee=eQ||(eQ={}))[ee.IDLE=0]="IDLE",ee[ee.RUNNING=1]="RUNNING",ee[ee.SKIPPED=2]="SKIPPED",ee[ee.SUCCESS=3]="SUCCESS",ee[ee.FAILED=4]="FAILED";class c5 extends aL.EventEmitter{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};super(),this.status=eQ.IDLE,this.logs=[],this.options={},this.url=e,this.token=t,this.name=this.constructor.name,this.room=new c4(i.roomOptions),this.connectOptions=i.connectOptions,this.options=i}run(e){return aD(this,void 0,void 0,function*(){if(this.status!==eQ.IDLE)throw Error("check is running already");this.setStatus(eQ.RUNNING);try{yield this.perform()}catch(e){e instanceof Error&&(this.options.errorsAsWarnings?this.appendWarning(e.message):this.appendError(e.message))}return yield this.disconnect(),yield new Promise(e=>setTimeout(e,500)),this.status!==eQ.SKIPPED&&this.setStatus(this.isSuccess()?eQ.SUCCESS:eQ.FAILED),e&&e(),this.getInfo()})}isSuccess(){return!this.logs.some(e=>"error"===e.level)}connect(e){return aD(this,void 0,void 0,function*(){return this.room.state===eJ.Connected||(e||(e=this.url),yield this.room.connect(e,this.token,this.connectOptions)),this.room})}disconnect(){return aD(this,void 0,void 0,function*(){this.room&&this.room.state!==eJ.Disconnected&&(yield this.room.disconnect(),yield new Promise(e=>setTimeout(e,500)))})}skip(){this.setStatus(eQ.SKIPPED)}switchProtocol(e){return aD(this,void 0,void 0,function*(){let t=!1,i=!1;if(this.room.on(ep.Reconnecting,()=>{t=!0}),this.room.once(ep.Reconnected,()=>{i=!0}),this.room.simulateScenario("force-".concat(e)),yield new Promise(e=>setTimeout(e,1e3)),!t)return;let n=Date.now()+1e4;for(;Date.now()<n;){if(i)return;yield sc(100)}throw Error("Could not reconnect using ".concat(e," protocol after 10 seconds"))})}appendMessage(e){this.logs.push({level:"info",message:e}
1),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 null==(e=this.room)?void 0:e.engine}getInfo(){return{logs:this.logs,name:this.name,status:this.status,description:this.description}}}function c6(e,t,i){var n;return(t="symbol"==typeof(n=function(e,t){if("object"!=typeof e||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var n=i.call(e,t);if("object"!=typeof n)return n;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(t,"string"))?n:n+"")in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}aL.EventEmitter,new TextEncoder,new TextDecoder;class c8 extends Error{constructor(e,t){var i;super(e,t),c6(this,"code","ERR_JOSE_GENERIC"),this.name=this.constructor.name,null==(i=Error.captureStackTrace)||i.call(Error,this,this.constructor)}}c6(c8,"code","ERR_JOSE_GENERIC"),c6(class extends c8{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unspecified",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"unspecified";super(e,{cause:{claim:i,reason:n,payload:t}}),c6(this,"code","ERR_JWT_CLAIM_VALIDATION_FAILED"),c6(this,"claim",void 0),c6(this,"reason",void 0),c6(this,"payload",void 0),this.claim=i,this.reason=n,this.payload=t}},"code","ERR_JWT_CLAIM_VALIDATION_FAILED"),c6(class extends c8{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unspecified",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"unspecified";super(e,{cause:{claim:i,reason:n,payload:t}}),c6(this,"code","ERR_JWT_EXPIRED"),c6(this,"claim",void 0),c6(this,"reason",void 0),c6(this,"payload",void 0),this.claim=i,this.reason=n,this.payload=t}},"code","ERR_JWT_EXPIRED"),c6(class extends c8{constructor(){super(...arguments),c6(this,"code","ERR_JOSE_ALG_NOT_ALLOWED")}},"code","ERR_JOSE_ALG_NOT_ALLOWED"),c6(class extends c8{constructor(){super(...arguments),c6(this,"code","ERR_JOSE_NOT_SUPPORTED")}},"code","ERR_JOSE_NOT_SUPPORTED"),c6(class extends c8{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"decryption operation failed",t=arguments.length>1?arguments[1]:void 0;super(e,t),c6(this,"code","ERR_JWE_DECRYPTION_FAILED")}},"code","ERR_JWE_DECRYPTION_FAILED"),c6(class extends c8{constructor(){super(...arguments),c6(this,"code","ERR_JWE_INVALID")}},"code","ERR_JWE_INVALID"),c6(class extends c8{constructor(){super(...arguments),c6(this,"code","ERR_JWS_INVALID")}},"code","ERR_JWS_INVALID"),c6(class extends c8{constructor(){super(...arguments),c6(this,"code","ERR_JWT_INVALID")}},"code","ERR_JWT_INVALID"),c6(class extends c8{constructor(){super(...arguments),c6(this,"code","ERR_JWK_INVALID")}},"code","ERR_JWK_INVALID"),c6(class extends c8{constructor(){super(...arguments),c6(this,"code","ERR_JWKS_INVALID")}},"code","ERR_JWKS_INVALID"),c6(class extends c8{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"no applicable key found in the JSON Web Key Set",t=arguments.length>1?arguments[1]:void 0;super(e,t),c6(this,"code","ERR_JWKS_NO_MATCHING_KEY")}},"code","ERR_JWKS_NO_MATCHING_KEY"),c6(class extends c8{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"multiple matching keys found in the JSON Web Key Set",t=arguments.length>1?arguments[1]:void 0;super(e,t),c6(this,Symbol.asyncIterator,void 0),c6(this,"code","ERR_JWKS_MULTIPLE_MATCHING_KEYS")}},"code","ERR_JWKS_MULTIPLE_MATCHING_KEYS"),c6(class extends c8{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"request timed out",t=arguments.length>1?arguments[1]:void 0;super(e,t),c6(this,"code","ERR_JWKS_TIMEOUT")}},"code","ERR_JWKS_TIMEOUT"),c6(class extends c8{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"signature verification failed",t=arguments.length>1?arguments[1]:void 0;
1super(e,t),c6(this,"code","ERR_JWS_SIGNATURE_VERIFICATION_FAILED")}},"code","ERR_JWS_SIGNATURE_VERIFICATION_FAILED");Symbol.for("lk.serializer");function c9(e,t){return(c9=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}var c7=new TextDecoder,le=function(e){function t(){var t;return(t=e.call(this)||this).room=void 0,t.connected=!1,t.isAgentTalking=!1,t.analyzerComponent=void 0,t.captureAudioFrame=void 0,t}t.prototype=Object.create(e.prototype),t.prototype.constructor=t,c9(t,e);var i=t.prototype;return i.startCall=function(e){try{var t=this,i=function(i,n){try{var a=(t.room=new c4({audioCaptureDefaults:{autoGainControl:!0,echoCancellation:!0,noiseSuppression:!0,channelCount:1,deviceId:e.captureDeviceId,sampleRate:e.sampleRate},audioOutput:{deviceId:e.playbackDeviceId}}),t.handleRoomEvents(),t.handleAudioEvents(e),t.handleDataEvents(),Promise.resolve(t.room.connect("wss://retell-ai-4ihahnq7.livekit.cloud",e.accessToken)).then(function(){console.log("connected to room",t.room.name),t.room.localParticipant.setMicrophoneEnabled(!0),t.connected=!0,t.emit("call_started")}))}catch(e){return n(e)}return a&&a.then?a.then(void 0,n):a}(0,function(e){t.emit("error","Error starting call"),console.error("Error starting call",e),t.stopCall()});return Promise.resolve(i&&i.then?i.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},i.startAudioPlayback=function(){try{return Promise.resolve(this.room.startAudio()).then(function(){})}catch(e){return Promise.reject(e)}},i.stopCall=function(){var e;this.connected&&(this.connected=!1,this.emit("call_ended"),null==(e=this.room)||e.disconnect(),this.isAgentTalking=!1,delete this.room,this.analyzerComponent&&(this.analyzerComponent.cleanup(),delete this.analyzerComponent),this.captureAudioFrame&&(window.cancelAnimationFrame(this.captureAudioFrame),delete this.captureAudioFrame))},i.mute=function(){this.connected&&this.room.localParticipant.setMicrophoneEnabled(!1)},i.unmute=function(){this.connected&&this.room.localParticipant.setMicrophoneEnabled(!0)},i.captureAudioSamples=function(){var e=this;if(this.connected&&this.analyzerComponent){var t=new Float32Array(this.analyzerComponent.analyser.fftSize);this.analyzerComponent.analyser.getFloatTimeDomainData(t),this.emit("audio",t),this.captureAudioFrame=window.requestAnimationFrame(function(){return e.captureAudioSamples()})}},i.handleRoomEvents=function(){var e=this;this.room.on(ep.ParticipantDisconnected,function(t){"server"===(null==t?void 0:t.identity)&&setTimeout(function(){e.stopCall()},500)}),this.room.on(ep.Disconnected,function(){e.stopCall()})},i.handleAudioEvents=function(e){var t=this;this.room.on(ep.TrackSubscribed,function(i,n,a){i.kind===sa.Kind.Audio&&i instanceof cJ&&("agent_audio"===n.trackName&&(t.emit("call_ready"),e.emitRawAudioSamples&&(t.analyzerComponent=function(e,t){let i=Object.assign({cloneTrack:!1,fftSize:2048,smoothingTimeConstant:.8,minDecibels:-100,maxDecibels:-80},void 0),n=r8();if(!n)throw Error("Audio Context not supported on this browser");let a=i.cloneTrack?e.mediaStreamTrack.clone():e.mediaStreamTrack,r=n.createMediaStreamSource(new MediaStream([a])),s=n.createAnalyser();s.minDecibels=i.minDecibels,s.maxDecibels=i.maxDecibels,s.fftSize=i.fftSize,s.smoothingTimeConstant=i.smoothingTimeConstant,r.connect(s);let o=new Uint8Array(s.frequencyBinCount);return{calculateVolume:()=>{s.getByteFrequencyData(o);let e=0;for(let t of o)e+=Math.pow(t/255,2);return Math.sqrt(e/o.length)},analyser:s,cleanup:()=>aD(this,void 0,void 0,function*(){yield n.close(),i.cloneTrack&&a.stop()})}}(i),t.captureAudioFrame=window.requestAnimationFrame(function(){return t.captureAudioSamples()}))),i.attach())})},i.handleDataEvents=function(){var e=this;this.room.on(ep.DataReceived,function(t,i,n,a){try{if("server"!==(null==i?void 0:i.identity))return;var r=c7.decode(t),s=JSON.parse(r);"update"===s.event_type?e.emit("update",s):"metadata"===s.event_type?e.emit("metadata",s):"agent_start_talking"===s.event_type?(e.isAgentTalking=!0,e.emit("agent_start_talking")):"agent_stop_talking"===s.event_type?(e.isAgentTalking=!1,e.emit("agent_stop_talking")):"node_transition"===s.event_type&&e.emit("node_transition",s)}catch(e){console.error("Error decoding data received",e)}})},t}(eX.default),lt=e.i(328361);function li({enableWebCall:e=!0,webButtonLabel:t="Start a Web Call",phoneNumber:i="+17786558340",showForm:n=!0,formTargetId:a="sign-up"}={}){let r,s,o=(0,eY.useRef)(null),[c,l]=(0,eY.useState)("idle"),[d,u]=(0,eY.useState)(null),h=!(r=t.replace(/[^\p{L}\p{N} .,'&-]/gu,"").trim())||/^web$/i.test(r)?"Start a Web Call":r;(0,eY.useEffect)(()=>{let e=new le;return o.current=e,e.on("call_started",()=>console.log("HB call started")),e.on("call_ended",()=>l("idle")),e.on("error",e=>{console.error("HB call error:",e),l("idle"),u("The call ended unexpectedly. Please try again.")}),()=>{try{e.stopCall()}catch{}}},[]);let p=async()=>{let e=o.current;if(e){if("active"===c){e.stopCall(),l("idle");return}try{u(null),l("connecting");let t=await fetch("https://www.badgerlabs.ai/api/create-call-embed",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({demo:"ev"})}),i=await t.json();if(!t.ok)throw Error(i.error||"Failed to create call");await e.startCall({accessToken:i.access_token}),l("active")}catch(e){console.error("HB failed to start call:",e),l("idle"),u("Could not start the call. Please try again or phone us instead.")}}};return(0,e$.jsx)("section",{"aria-labelledby":"enroll-now-heading",className:"max-w-6xl mx-auto",children:(0,e$.jsxs)("div",{className:"rounded-3xl bg-[linear-gradient(180deg,#0C110D_0%,#0E2015_55%,#00522A_100%)] text-white px-6 py-14 md:px-12 md:py-20 text-center",children:[(0,e$.jsx)("p",{className:"text-2xs font-bold tracking-[0.2em] uppercase text-brand-primary-light",children:"Enroll Now"}),(0,e$.jsx)("h2",{id:"enroll-now-heading",className:"mt-3 text-xl md:text-2xl lg:text-3xl font-bold",children:"Ready to earn from your charger?"}),(0,e$.jsxs)("p",{className:"mt-6 flex items-center justify-center gap-3",children:[(0,e$.jsx)("span",{className:"font-mono text-5xl md:text-6xl font-bold leading-none",children:"4¢"}),(0,e$.jsxs)("span",{className:"text-sm text-zinc-400 text-left leading-snug",children:["per kWh",(0,e$.jsx)("br",{}),"paid quarterly"]})]}),(0,e$.jsxs)("div",{className:"mt-10 flex flex-wrap items-center justify-center gap-4",children:[n&&(0,e$.jsx)(lt.default,{variant:"primary",onClick:()=>{let e=document.getElementById(a);e?e.scrollIntoView({behavior:"smooth",block:"start"}):window.location.href="/support"},children:"Sign Up"}),e&&(0,e$.jsx)(lt.default,{variant:"outline",onClick:p,disabled:"connecting"===c,className:"active"===c?"!border-[#e53935]":"",children:"active"===c?"End Call":"connecting"===c?"Connectingâ¦":h})]}),i&&(0,e$.jsxs)("p",{className:"mt-8 font-mono text-2xs tracking-[0.2em] uppercase text-brand-primary-light/90",children:[(0,e$.jsx)("a",{href:`tel:${i}`,className:"hover:text-brand-primary-light",children:(s=i.replace(/\D/g,"").match(/^1?(\d{3})(\d{3})(\d{4})$/))?`(${s[1]}) ${s[2]}-${s[3]}`:i})," â call or text anytime"]}),d&&(0,e$.jsx)("p",{role:"alert",className:"mt-6 inline-block text-xs text-white/90 bg-white/10 rounded-lg px-4 py-2",children:d})]})})}e.s(["default",()=>li],880168)},759465,e=>{"use strict";var t=e.i(94602),i=e.i(495068),n=e.i(269742),a=e.i(513273),r=e.i(979420);function s({children:e,delay:r=0}){let s=(0,i.useRef)(null),o=(0,a.useInView)(s,{once:!0,margin:"-10% 0px"});return(0,t.jsxs)("div",{ref:s,className:"relative",children:[(0,t.jsx)(n.motion.div,{initial:{opacity:0}
1,animate:o?{opacity:1}:{opacity:0},transition:{duration:.001,delay:r+.35},children:e}),(0,t.jsx)(n.motion.div,{className:"absolute inset-0 z-10 bg-brand-primary",initial:{scaleX:0,transformOrigin:"left"},animate:o?{scaleX:[0,1,1,0],transformOrigin:["left","left","right","right"]}:{scaleX:0},transition:{duration:.8,times:[0,.4,.4,1],ease:"easeInOut",delay:r}})]})}function o({eyebrow:e,title:r,description:o}){let c=(0,i.useRef)(null),l=(0,a.useInView)(c,{once:!0,margin:"-10% 0px"});return(0,t.jsxs)("div",{ref:c,className:"min-h-[50vh] lg:min-h-screen flex flex-col justify-center py-16 lg:py-24 lg:pr-14",children:[e&&(0,t.jsx)(s,{delay:.3,children:(0,t.jsx)("p",{className:"text-2xs font-mono uppercase tracking-[0.15em] text-white/40 mb-4",children:e})}),(0,t.jsx)(s,{delay:.5,children:(0,t.jsx)("h2",{className:"text-2xl sm:text-3xl xl:text-4xl font-bold leading-[1.1] tracking-tight mb-6",children:r})}),(0,t.jsx)(n.motion.div,{className:"w-16 h-px bg-white/30 mb-6",initial:{scaleX:0,transformOrigin:"left"},animate:l?{scaleX:1}:{scaleX:0},transition:{duration:.8,delay:.7,ease:"easeOut"}}),(0,t.jsx)(n.motion.p,{className:"text-xs leading-relaxed opacity-0 max-w-lg text-white/60",animate:l?{opacity:1,y:0}:{opacity:0,y:20},transition:{duration:.6,delay:.9},children:o})]})}function c(){return(0,t.jsx)("div",{className:"hidden lg:block w-1/2 h-screen sticky top-0 overflow-hidden bg-[#0E0E0E]",children:(0,t.jsxs)("div",{className:"absolute inset-0",children:[(0,t.jsx)(r.default,{src:"/assets/images/banners/charger-painted-stall-cobble.webp",alt:"HoneyBadger EV charger",fill:!0,className:"object-cover",sizes:"50vw"}),(0,t.jsx)("div",{className:"absolute inset-0 bg-black/15"})]})})}e.s(["default",0,({eyebrow:e="",title:i="EV Charging, Without the Cost or Complexity",description:n="Give your residents and guests an easy way to charge without any upfront cost or ongoing management. HoneyBadger installs, owns, and operates EV chargers for your property. We handle everything from installation to maintenance, so your chargers are always working and your team doesnât have to manage a thing."})=>(0,t.jsx)("section",{className:"relative bg-black text-white",children:(0,t.jsxs)("div",{className:"flex flex-col lg:flex-row",children:[(0,t.jsx)("div",{className:"w-full lg:w-1/2 px-6 lg:px-10 xl:px-14",children:(0,t.jsx)(o,{eyebrow:e,title:i,description:n})}),(0,t.jsx)(c,{})]})})])},488069,e=>{"use strict";var t=e.i(94602),i=e.i(979420),n=e.i(328361);e.s(["default",0,({badge:e,title:a,description:r,buttonText:s,buttonHref:o,imageSrc:c="/assets/images/banners/charger-painted-stall-cobble.webp",imageAlt:l,onButtonClick:d,reverse:u=!1})=>{let h=!!(s&&s.trim()),p=!!o?.startsWith("#"),m=p?()=>{let e=document.getElementById(o.slice(1));e?.scrollIntoView({behavior:"smooth"})}:d,g=p?void 0:o;return(0,t.jsxs)("section",{className:"relative min-h-[50vh] w-full overflow-hidden font-sans",children:[(0,t.jsxs)("div",{className:`absolute z-0 ${u?"inset-0 lg:inset-y-0 lg:left-0 lg:right-[45%]":"inset-0 lg:inset-y-0 lg:left-[45%] lg:right-0"}`,children:[(0,t.jsx)(i.default,{fill:!0,src:c,alt:l,className:"object-cover object-[center_25%]",priority:!0,quality:75,sizes:"(min-width: 1024px) 55vw, 100vw"}),(0,t.jsx)("div",{className:"absolute inset-0 bg-black/50 lg:hidden"})]}),(0,t.jsxs)("div",{className:`relative z-10 hidden lg:flex ${u?"flex-row-reverse":"flex-row"} min-h-[50vh]`,children:[(0,t.jsx)("div",{className:"flex w-[45%] items-center bg-[#007B3A] px-4 pt-44 pb-20 md:px-6 lg:px-8 xl:px-12",children:(0,t.jsxs)("div",{children:[e&&(0,t.jsx)("p",{className:"mb-4 text-2xs md:text-xs font-bold uppercase tracking-[0.25em] text-white opacity-90",children:e}),(0,t.jsx)("h1",{className:"mb-4 text-2xl md:text-3xl lg:text-4xl font-bold leading-[1.1] text-white",children:a}),(0,t.jsx)("p",{className:"mb-8 text-sm font-medium leading-relaxed text-white opacity-90",children:r}),h&&(0,t.jsx)(n.default,{variant:"white",href:g,onClick:m,children:s})]})}),(0,t.jsx)("div",{className:"w-[55%]"})]}),(0,t.jsx)("div",{className:"relative z-10 flex min-h-[50vh] w-full items-center px-6 pt-36 pb-20 lg:hidden",children:(0,t.jsxs)("div",{className:"w-full",children:[e&&(0,t.jsx)("p",{className:"mb-4 text-2xs font-bold uppercase tracking-[0.2em] text-white opacity-90",children:e}),(0,t.jsx)("p",{className:"mb-6 text-2xl md:text-3xl lg:text-4xl font-bold leading-tight text-white","aria-hidden":"true",children:a}),(0,t.jsx)("p",{className:"mb-10 text-sm leading-relaxed text-white opacity-95",children:r}),h&&(0,t.jsx)(n.default,{variant:"white",href:g,onClick:m,children:s})]})})]})}])},565860,e=>{"use strict";var t=e.i(94602),i=e.i(979420);let n=[{number:1,title:"Create an Account",description:'Search "HoneyBadger EV" on the Google Play or Apple App Store to download the app. Sign up with your email, phone number, and location to get started.',imageSrc:"/assets/images/app/step-1.webp",imageAlt:"Login screen",imagePosition:"left"},{number:2,title:"Set Up Payment Methods",description:"Enter your payment details and add amounts to your balance, ensuring you're always prepared for your next charge.",imageSrc:"/assets/images/app/step-2.webp",imageAlt:"Payment setup screen",imagePosition:"right"},{number:3,title:"Find Chargers",description:"Use the app's map to find nearby charging centres. Easily view the charger specs and availability of each charging centre.",imageSrc:"/assets/images/app/step-3.webp",imageAlt:"Map screen showing chargers",imagePosition:"left"},{number:4,title:"Scan QR Code",description:"When you arrive at the charging centre, scan the QR code on the machine with your app to activate your session.",imageSrc:"/assets/images/app/step-4.webp",imageAlt:"QR code scanning",imagePosition:"right"},{number:5,title:"Manage Charging Session",description:"Plug in your EV and start charging! Monitor your charging levels and stop your session directly from the app.",imageSrc:"/assets/images/app/step-5.webp",imageAlt:"Charging session screen",imagePosition:"left"}],a=({number:e})=>(0,t.jsx)("div",{className:"flex items-center justify-center w-12 h-12 rounded-full bg-brand-primary text-white font-bold text-base",children:e});e.s(["default",0,({title:e,steps:r})=>{let s=r&&r.length>0?r.map((e,t)=>{var i,n,a;
1return{number:t+1,title:e.title,description:e.description,imageSrc:(i=e.image)&&"object"==typeof i&&null!==i&&i.url||"",imageAlt:(n=e.image,a=e.title,n&&"object"==typeof n&&null!==n&&n.alt||a),imagePosition:e.imagePosition||(t%2==0?"left":"right")}}):n;return(0,t.jsx)("section",{className:"py-16 md:py-24 bg-black",children:(0,t.jsxs)("div",{className:"max-w-6xl mx-auto px-4 md:px-6 lg:px-8 xl:px-12",children:[(0,t.jsx)("h2",{className:"text-xl md:text-2xl font-bold text-white text-center mb-16",children:e||"How it Works"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsxs)("div",{className:"hidden md:block absolute left-1/2 top-0 bottom-0 -translate-x-1/2",children:[(0,t.jsx)("div",{className:"absolute -top-2 left-1/2 -translate-x-1/2 w-4 h-4 rounded-full bg-brand-primary"}),(0,t.jsx)("div",{className:"absolute top-2 bottom-2 left-1/2 -translate-x-1/2 w-0.5 bg-brand-primary"}),(0,t.jsx)("div",{className:"absolute -bottom-2 left-1/2 -translate-x-1/2 w-4 h-4 rounded-full bg-brand-primary"})]}),(0,t.jsx)("div",{className:"space-y-16 md:space-y-24",children:s.map(e=>(0,t.jsxs)("div",{className:`flex flex-col ${"right"===e.imagePosition?"md:flex-row-reverse":"md:flex-row"} items-center gap-8 md:gap-12`,children:[(0,t.jsx)("div",{className:"flex-1 flex justify-center",children:(0,t.jsx)("div",{className:"relative w-full max-w-[280px]",children:(0,t.jsx)(i.default,{src:e.imageSrc,alt:e.imageAlt,width:280,height:500,className:"w-full h-auto rounded-2xl"})})}),(0,t.jsxs)("div",{className:`flex-1 text-center ${"right"===e.imagePosition?"md:text-right":"md:text-left"}`,children:[(0,t.jsx)("div",{className:`flex items-center gap-3 justify-center mb-4 ${"right"===e.imagePosition?"md:justify-end":"md:justify-start"}`,children:(0,t.jsx)(a,{number:e.number})}),(0,t.jsx)("h3",{className:"text-base md:text-lg font-bold text-white mb-4",children:e.title}),(0,t.jsx)("p",{className:`text-gray-400 leading-relaxed max-w-md mx-auto ${"right"===e.imagePosition?"md:mr-0 md:ml-auto":"md:ml-0 md:mr-auto"}`,children:e.description})]})]},e.number))})]})]})})}])},853263,e=>{"use strict";e.i(591752);var t=e.i(94602),i=e.i(495068),n=e.i(372200);let a=(0,i.forwardRef)(({label:e,type:i="text",options:a,rows:r=4,error:s,name:o,...c},l)=>{let d=o?`field-${o}`:`field-${e.toLowerCase().replace(/\s+/g,"-")}`,u=`${d}-error`,h=s?"border-red-500":"border-zinc-700",p=`w-full min-h-[44px] bg-transparent border ${h} rounded-full px-6 py-2.5 focus:outline-none focus:border-[#007B3A] transition-colors appearance-none text-sm`,m=`w-full bg-transparent border ${h} rounded-3xl px-6 py-4 focus:outline-none focus:border-[#007B3A] transition-colors text-sm resize-none`;return(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("label",{htmlFor:d,className:"text-sm font-medium",children:e}),(0,t.jsx)("div",{className:"relative",children:"select"===i?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("select",{id:d,name:o,defaultValue:"",className:`${p} cursor-pointer`,ref:l,"aria-invalid":!!s||void 0,"aria-describedby":s?u:void 0,...c,children:[(0,t.jsx)("option",{disabled:!0,className:"bg-black text-zinc-500",children:"Select an option"}),a?.map(e=>(0,t.jsx)("option",{value:e.value,className:"bg-black text-white",children:e.label},e.value))]}),(0,t.jsx)(n.ChevronDown,{className:"absolute right-6 top-1/2 -translate-y-1/2 text-zinc-400 pointer-events-none",size:20})]}):"textarea"===i?(0,t.jsx)("textarea",{id:d,name:o,className:m,rows:r,ref:l,"aria-invalid":!!s||void 0,"aria-describedby":s?u:void 0,...c}):(0,t.jsx)("input",{id:d,name:o,type:i,className:p,ref:l,"aria-invalid":!!s||void 0,"aria-describedby":s?u:void 0,...c})}),s&&(0,t.jsx)("p",{id:u,className:"text-red-500 text-2xs mt-1",role:"alert",children:s})]})});a.displayName="InputField";var r=e.i(328361);e.s(["default",0,({title:e="Send A Message"})=>{let[n,s]=(0,i.useState)(!1),[o,c]=(0,i.useState)(!1),[l,d]=(0,i.useState)(""),[u,h]=(0,i.useState)({}),p=async e=>{if(e.preventDefault(),n)return;let t=e.currentTarget;d(""),c(!1),h({});let i=new FormData(t);if(i.get("website")?.trim()){c(!0),t.reset();return}let a=(e=>{let t={},i=e.get("firstName")?.trim(),n=e.get("lastName")?.trim(),a=e.get("email")?.trim(),r
1=e.get("phone")?.trim(),s=e.get("message")?.trim();return(i||(t.firstName="First name is required."),n||(t.lastName="Last name is required."),a)?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(a)||(t.email="Please enter a valid email address."):t.email="Email is required.",r?/^[\d\s()+-]{7,}$/.test(r)||(t.phone="Please enter a valid phone number."):t.phone="Phone number is required.",s||(t.message="Message is required."),t})(i);if(Object.keys(a).length>0)return void h(a);s(!0);let r={name:`${i.get("firstName")} ${i.get("lastName")}`,firstName:i.get("firstName"),lastName:i.get("lastName"),email:i.get("email"),phone:i.get("phone"),message:i.get("message")};try{let e=await fetch("https://formcarry.com/s/-KxkMFv1cED",{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(r)});if(!e.ok)return void d(`Submission failed (status ${e.status}). Please try again, or email us if the issue persists.`);let i=await e.json().catch(()=>null);i?.code===200?(c(!0),t.reset()):d(i?.message||"Something went wrong. Please try again.")}catch{d("Failed to send message. Check your connection and try again.")}finally{s(!1)}};return(0,t.jsx)("section",{className:"bg-black text-white pt-10 pb-28 md:py-14",children:(0,t.jsx)("div",{className:"max-w-5xl mx-auto px-4 md:px-6 lg:px-8 xl:px-12",children:(0,t.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-8 lg:gap-12",children:[(0,t.jsxs)("aside",{className:"lg:col-span-2",children:[(0,t.jsx)("h2",{className:"text-base md:text-lg font-bold mb-6",children:"Reach us directly"}),(0,t.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-2xs font-bold tracking-[0.2em] uppercase text-zinc-500 mb-1.5",children:"Call"}),(0,t.jsx)("a",{href:"tel:8778360242",className:"inline-block py-1.5 text-sm text-white hover:text-brand-primary-light transition-colors",children:"(877) 836-0242"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-2xs font-bold tracking-[0.2em] uppercase text-zinc-500 mb-1.5",children:"Email"}),(0,t.jsx)("a",{href:"mailto:[email protected]",className:"inline-block py-1.5 text-sm text-white break-all hover:text-brand-primary-light transition-colors",children:"[email protected]"})]})]})]}),(0,t.jsxs)("div",{className:"lg:col-span-3",children:[(0,t.jsx)("h2",{className:"text-base md:text-lg font-bold mb-5",children:e}),(0,t.jsxs)("form",{onSubmit:p,className:"space-y-2.5",noValidate:!0,children:[(0,t.jsxs)("div",{"aria-hidden":"true",className:"absolute -left-[9999px] top-auto h-0 w-0 overflow-hidden",children:[(0,t.jsx)("label",{htmlFor:"hp-website-support",children:"Website"}),(0,t.jsx)("input",{id:"hp-website-support",type:"text",name:"website",tabIndex:-1,autoComplete:"off"})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[(0,t.jsx)(a,{label:"First Name*",placeholder:"Your first name",name:"firstName",required:!0,error:u.firstName}),(0,t.jsx)(a,{label:"Last Name*",placeholder:"Your last name",name:"lastName",required:!0,error:u.lastName})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[(0,t.jsx)(a,{label:"Email*",type:"email",placeholder:"[email protected]",name:"email",required:!0,error:u.email}),(0,t.jsx)(a,{label:"Phone*",type:"tel",placeholder:"(604) 000-0000",name:"phone",required:!0,error:u.phone})]}),(0,t.jsx)(a,{label:"Message*",type:"textarea",placeholder:"Tell us how we can help you...",name:"message",rows:3,required:!0,error:u.message}),(0,t.jsx)("div",{className:"pt-2",children:(0,t.jsx)(r.default,{type:"submit",disabled:n,children:n?"Sending...":"Submit"})}),o&&(0,t.jsx)("p",{className:"text-[#007B3A] text-xs mt-3",children:"Thank you! We received your message and will get back to you within 24 hours."}),l&&(0,t.jsx)("p",{className:"text-red-500 text-xs mt-3",children:l})]})]})]})})})}],853263)},805210,e=>{"use strict";var t=e.i(94602),i=e.i(495068),n=e.i(372200),a=e.i(979420),r=e.i(328361);e.s(["default",0,({label:e="",title:s="Join the Charge: Innovate, Inspire, and Electrify Canada's Future",description:o="Innovation is in our DNA. At Honeybadger, we challenge ourselves daily to pioneer solutions that transform the EV experience.",imageSrc:c="/assets/images/banners/stand-booth.webp",imageAlt:l="Honeybadger team members collaborating at an event",j
1obs:d=[],buttonText:u="VIEW ALL OPENINGS",buttonLink:h="/careers",reverse:p=!1})=>{let[m,g]=(0,i.useState)(null);return(0,t.jsxs)("section",{className:`flex flex-col md:flex-row w-full bg-white py-16 md:py-24 px-4 md:px-6 lg:px-8 xl:px-12 gap-12 items-center relative ${p?"md:flex-row-reverse":""}`,children:[(0,t.jsx)("div",{className:"w-full md:w-1/2 relative aspect-[3/2] md:aspect-[4/3] overflow-hidden rounded-lg",children:(0,t.jsx)(a.default,{fill:!0,src:c,alt:l,className:"object-cover",sizes:"(max-width: 768px) 100vw, 50vw"})}),(0,t.jsx)("div",{className:"w-full md:w-1/2 flex flex-col justify-center",children:(0,t.jsxs)("div",{className:"md:mx-4",children:[e&&(0,t.jsx)("h3",{className:"text-2xs font-bold tracking-[0.2em] text-black mb-4 uppercase",children:e}),(0,t.jsx)("h2",{className:"text-lg lg:text-xl font-bold text-black leading-tight mb-3",children:s}),(0,t.jsx)("p",{className:"text-gray-600 text-xs mb-4",children:o}),(0,t.jsx)("div",{className:"space-y-8 mb-12",children:d.map((e,i)=>{let a=m===i;return(0,t.jsxs)("div",{className:"border-b border-gray-200 pb-3 cursor-pointer",onClick:()=>g(a?null:i),children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("h3",{className:"text-sm font-bold text-black hover:text-[#007B3A] transition-colors",children:e.title}),(0,t.jsx)("div",{className:"bg-[#007B3A] rounded-full p-2 text-white ml-4 flex-shrink-0 transition-transform duration-300",style:{transform:a?"rotate(180deg)":"rotate(0deg)"},children:(0,t.jsx)(n.ChevronDown,{size:20,strokeWidth:3})})]}),(0,t.jsxs)("div",{className:"overflow-hidden transition-all duration-300",style:{maxHeight:a?"200px":"0px",opacity:+!!a},children:[(0,t.jsx)("p",{className:"text-gray-500 text-xs mt-2",children:e.description}),e.link&&(0,t.jsxs)("a",{href:e.link,target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),className:"inline-flex items-center gap-1 text-xs font-semibold text-[#007B3A] hover:underline mt-3",children:["View Posting ",(0,t.jsx)("span",{"aria-hidden":"true",children:"â"})]})]})]},i)})}),(0,t.jsx)(r.default,{href:h,newTab:!0,children:u})]})})]})}])},553574,e=>{"use strict";var t=e.i(94602);let i=({apiPath:e,data:t,endpoint:i,serverURL:n})=>fetch(`${n}${e}/${i}`,{body:JSON.stringify(t),credentials:"include",headers:{"Content-Type":"application/json","X-Payload-HTTP-Method-Override":"GET"},method:"POST"}),n=async e=>{let{apiRoute:t,collectionSlug:n,depth:a,globalSlug:r,incomingData:s,initialData:o,locale:c,serverURL:l}=e,d=e.requestHandler||i;return await d({apiPath:t||"/api",data:{data:s,depth:a,flattenLocales:!1,locale:c},endpoint:encodeURI(`${r?"globals/":""}${n??r}${n?`/${o.id}`:""}`),serverURL:l}).then(e=>e.json())},a={previousData:void 0},r=async e=>{let{apiRoute:t,depth:i,event:r,initialData:s,requestHandler:o,serverURL:c}=e;if(r.origin===c&&r.data&&"object"==typeof r.data&&"payload-live-preview"===r.data.type){let{collectionSlug:e,data:l,globalSlug:d,locale:u}=r.data;if(!e&&!d)return s;let h=await n({apiRoute:t,collectionSlug:e,depth:i,globalSlug:d,incomingData:l,initialData:a?.previousData||s,locale:u,requestHandler:o,serverURL:c});return a.previousData=h,h}return a.previousData||(a.previousData=s),a.previousData};var s=e.i(495068),o=e.i(407297);let c="/assets/images/banners",l={hero:`${c}/home-banner.webp`,"value-proposition":`${c}/charger-car-plugged-branded.webp`,"app-promo":`${c}/mobile-app-group.webp`,"split-banner":`${c}/charger-painted-stall-cobble.webp`,"image-banner":`${c}/sea-to-sky-highway-new.webp`,"image-section":`${c}/get-started-home-charging.webp`,"cta-content":`${c}/charger-public-ev-sign.webp`,"step-carousel":`${c}/charger-branded-unit.webp`,"property-partners":`${c}/charger-stall-1.webp`,"hero-gradient-banner":`${c}
1/display-boothing.webp`,"clear-banner":`${c}/woman-charging-car.webp`,"contact-form":`${c}/ev-charger-banner.webp`,"careers-section":`${c}/stand-booth.webp`,"story-section":`${c}/display-boothing.webp`,"career-value-section":`${c}/display-boothing.webp`,"app-download-banner":`${c}/mobile-app-group.webp`,generic:`${c}/ev-charger-banner.webp`};var d=e.i(979420),u=e.i(603464);let h={backgroundImage:"/assets/images/banners/home-banner.webp",imageAlt:"Scenic Sea to Sky Highway aerial view over Howe Sound, British Columbia",title:"EV Charging<br /> at Zero Cost",subtitle:"Reliable. Easy. Fast."},p=e=>{let{backgroundImage:i,imageAlt:n,title:a,subtitle:r}={...h,...e},o=a?.split(/<br\s*\/?>/i)||[a];return(0,t.jsxs)("section",{className:"relative w-full h-dvh overflow-hidden bg-[#0E0E0E]",children:[(0,t.jsxs)(u.default,{className:"absolute inset-0 z-0 will-change-transform scale-[1.15]",children:[(0,t.jsx)(d.default,{alt:n||"",className:"w-full h-full object-cover object-center",fill:!0,priority:!0,sizes:"(max-width: 768px) 100vw, (max-width: 1200px) 100vw, 1920px",quality:70,src:i||""}),(0,t.jsx)("div",{className:"absolute inset-0 bg-gradient-to-b from-black/30 via-black/25 to-black/10"})]}),(0,t.jsx)("div",{className:"absolute inset-0 z-10 flex items-center justify-center",children:(0,t.jsxs)("div",{className:"text-center",children:[(0,t.jsx)("h1",{className:"mx-auto max-w-5xl px-4 text-4xl md:text-6xl lg:text-7xl font-bold leading-tight text-white drop-shadow-lg [text-shadow:0_2px_24px_rgba(0,0,0,0.55)]",children:o.map((e,i)=>(0,t.jsxs)(s.default.Fragment,{children:[e,i<o.length-1&&(0,t.jsx)("br",{})]},i))}),r&&(0,t.jsx)("p",{className:"mt-4 text-sm md:text-base lg:text-lg text-white font-medium tracking-wide drop-shadow-lg [text-shadow:0_1px_16px_rgba(0,0,0,0.6)]",children:r})]})})]})};var m=e.i(198631);let g=(0,m.default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),f=(0,m.default)("smartphone",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]]),v=(0,m.default)("shield-check",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]),b=(0,m.default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]),k=(0,m.default)("award",[["path",{d:"m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526",key:"1yiouv"}],["circle",{cx:"12",cy:"8",r:"6",key:"1vp47v"}]]),y=(0,m.default)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]),T={"shield-check":v,smartphone:f,zap:g,clock:b,award:k,users:y},S=({Icon:e,title:i,description:n})=>(0,t.jsxs)("div",{className:"flex flex-col items-start group",children:[(0,t.jsx)("div",{className:"w-20 h-20 bg-gray-100 rounded-full flex items-center justify-center mb-6 ",children:(0,t.jsx)(e,{className:"w-10 h-10 text-gray-900",strokeWidth:1.5})}),(0,t.jsx)("h3",{className:"text-base font-bold text-gray-900 mb-4",children:i}),(0,t.jsx)("p",{className:"text-sm text-gray-600 leading-relaxed max-w-sm",children:n})]}),w=[{icon:"shield-check",title:"Reliable",description:"Our chargers are built for consistent, day-to-day performance. We proactively monitor and maintain every unit to ensure theyâre always working when residents need them."},{icon:"smartphone",title:"Easy",description:"Drivers can start charging in seconds through our app. Payments, access, and session tracking are seamless with live customer support available 24/7."},{icon:"zap",title:"Fast",description:"Our chargers deliver high-performance charging, helping drivers get back on the road quickly without long wait times."}
1],C=({eyebrow:e="WHY BUILDINGS CHOOSE HONEYBADGER",title:i="We make EV charging simple, cost-free, and fully managed, so you donât have to.",items:n})=>{let a=n&&n.length>0?n:w;return(0,t.jsx)("section",{className:"py-16 px-4 md:px-6 lg:px-8 xl:px-12 bg-white font-sans",children:(0,t.jsxs)("div",{className:"mx-auto",children:[(0,t.jsxs)("div",{className:"mb-12",children:[(0,t.jsx)("p",{className:"text-sm font-bold text-gray-400 uppercase tracking-[0.2em] mb-4",children:e}),(0,t.jsx)("h2",{className:"max-w-3xl text-2xl md:text-3xl font-bold text-gray-900 leading-tight",children:i})]}),(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-12 lg:gap-20",children:a.map((e,i)=>(0,t.jsx)(S,{Icon:T[e.icon||"zap"]||g,title:e.title,description:e.description},i))})]})})};var x=e.i(759465);let E=(0,m.default)("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]),P=(0,m.default)("car",[["path",{d:"M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2",key:"5owen"}],["circle",{cx:"7",cy:"17",r:"2",key:"u2ysq9"}],["path",{d:"M9 17h6",key:"r8uit2"}],["circle",{cx:"17",cy:"17",r:"2",key:"axvx0g"}]]),R=(0,m.default)("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),I=(0,m.default)("wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]]),N=(0,m.default)("plug-zap",[["path",{d:"M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z",key:"goz73y"}],["path",{d:"m2 22 3-3",key:"19mgm9"}],["path",{d:"M7.5 13.5 10 11",key:"7xgeeb"}],["path",{d:"M10.5 16.5 13 14",key:"10btkg"}],["path",{d:"m18 3-4 4h6l-4 4",key:"16psg9"}]]),_=(0,m.default)("clipboard",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}]]);var D=e.i(328361);let M={"message-square":E,car:P,settings:R,wrench:I,"plug-zap":N,clipboard:_},O=[{icon:"clipboard",title:"We assess your building"},{icon:"settings",title:"We design the right setup"},{icon:"wrench",title:"We install everything"},{icon:"plug-zap",title:"Residents start charging"},{icon:"car",title:"We manage everything"}],A=({buttonText:e="GET A FREE BUILDING ASSESSMENT",buttonLink:i="/solutions",steps:n})=>{let a=n&&n.length>0?n:O;return(0,t.jsxs)("section",{className:"relative py-12 md:py-16 bg-black text-white",children:[(0,t.jsx)("div",{className:"mx-auto flex flex-col items-center px-4 md:px-6 lg:px-8 xl:px-12",children:(0,t.jsx)("h2",{className:"text-lg md:text-2xl font-bold mb-8 md:mb-12 text-center",children:"Our Process"})}),(0,t.jsx)("div",{className:"flex flex-col md:flex-row items-center md:items-start mx-auto gap-6 md:gap-4 w-fit mb-10 md:mb-16 px-4 md:px-6 lg:px-8 xl:px-12",children:a.map((e,i)=>{let n=M[e.icon||"message-square"]||E;return(0,t.jsxs)("div",{className:"flex md:flex-col items-center md:text-center gap-4 md:gap-0 w-full md:w-36",children:[(0,t.jsx)("div",{className:"w-14 h-14 md:w-28 md:h-28 bg-brand-primary rounded-full flex items-center justify-center flex-shrink-0 md:mb-6 shadow-lg",children:(0,t.jsx)(n,{className:"w-7 h-7 md:w-16 md:h-16 text-white",strokeWidth:1.5})}),(0,t.jsx)("h3",{className:"text-2xs md:text-xs font-bold leading-tight md:max-w-[140px]",children:e.title})]},i)})}),(0,t.jsx)("div",{className:"flex justify-center px-4 md:px-6 lg:px-8 xl:px-12",children:(0,t.jsx)(D.default,{href:i,children:e})})]})},L=(0,m.default)("wallet",[["path",{d:"M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1",key:"18etb6"}],["path",{d:"M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4",key:"xoc0q4"}]]),j=(0,m.default)("badge-check",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]),U=(0,m.default)("headphones",[["path",{d:"M3 14h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-7a9 9 0 0 1 18 0v7a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3",key:"1xhozi"}]]);var F=e.i(85763);let B=[{title:"No fees",description:"Pay as you go, straight from the app."},{title:"Honest pricing",description:"Know what you're paying, every time."},{title:"Fast charging",description:"Up to 2.5x faster than standard level 2 chargers."},{title:"Easy to use",description:"Simple charging. Secure payments."},{title:"24/7 support",description:"We're here anytime you need us."}],q=[L,j,g,f,U],V=({title:e="Charge when you want. Where you want.",description:i="Our app makes charging simple. Find a nearby HoneyBadger charger and start charging in seconds.",image:n="/assets/images/banners/mobile-app-group.webp",appStoreUrl:a,playStoreUrl:r,features:s})=>{let o=s&&s.length>0?s:B;return(0,t.jsx)("section",{className:"py-16 px-4 md:px-6 lg:px-8 xl:px-12 bg-white overflow-hidden h-full",children:(0,t.jsxs)("div",{className:"h-full relative mx-auto flex flex-col lg:flex-row items-center gap-16 lg:gap-24",children:[(0,t.jsxs)("div",{className:"w-full lg:w-1/2 flex flex-col items-start text-left",children:[(0,t.jsx)("h2",{className:"text-3xl md:text-4xl font-bold text-gray-900 mb-6 leading-tight",children:e}),(0,t.jsx)("p",{className:"text-xs text-gray-600 mb-12 leading-relaxed ",children:i}),(0,t.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-x-12 gap-y-8 mb-10 w-full",children:o.map((e,i)=>{let n=q[i%q.length];return(0,t.jsxs)("div",{className:"flex items-start",children:[(0,t.jsx)("span",{className:"w-10 h-10 rounded-full bg-brand-primary/10 flex items-center justify-center flex-shrink-0",children:(0,t.jsx)(n,{className:"w-5 h-5 text-brand-primary","aria-hidden":"true"})}),(0,t.jsxs)("div",{className:"ml-4",children:[(0,t.jsx)("h3",{className:"text-sm font-bold text-gray-900 mb-2",children:e.title}),(0,t.jsx)("p",{className:"text-gray-600 leading-relaxed text-2xs",children:e.description})]})]},i)})}),(0,t.jsx)(F.default,{appStoreUrl:a,googlePlayUrl:r})]}),(0,t.jsx)("div",{className:"relative w-full lg:w-1/2 flex flex-col items-start",children:(0,t.jsx)("div",{className:"relative w-full h-[320px] sm:h-[420px] lg:h-[500px]",children:(0,t.jsx)(d.default,{className:"object-contain object-left lg:object-center",src:n,alt:"HoneyBadger App",fill:!0,sizes:"(max-width: 1024px) 100vw, 50vw"})})})]})})};var H=e.i(563938),z=e.i(488069);let W=({subtitle:e,title:i,buttonText:n,buttonLink:a,cards:r})=>(0,t.jsxs)("section",{className:"bg-white py-16 px-4 md:px-6 lg:px-8 xl:px-12 w-full mx-auto font-sans",children:[(0,t.jsxs)("div",{className:"flex flex-col lg:flex-row justify-between items-start mb-12",children:[(0,t.jsxs)("div",{className:"md:mb-0 mb-8",children:[(0,t.jsx)("p",{className:"text-[#6b7280] text-2xs md:text-xs font-bold tracking-widest uppercase mb-2",children:e}),(0,t.jsx)("h2",{className:"text-xl font-bold text-black leading-tight",children:i})]}),!1]}),(0,t.jsx)("div",{className:`grid gap-3 grid-cols-1 ${1===r.length?"md:max-w-2xl":2===r.length?"md:grid-cols-2":"md:grid-cols-2 lg:grid-cols-3"}`,children:r.map((e,i)=>(0,t.jsxs)("div",{className:`bg-black rounded-2xl text-white h-full flex flex-col ${r.length<=2?"p-8 md:p-10":"p-6"}`,children:[(0,t.jsx)("p",{className:"text-brand-primary text-sm font-bold mb-4",children:e.number}),(0,t.jsx)("h3",{className:`font-bold mb-6 ${r.length<=2?"text-2xl sm:text-3xl":"text-xl sm:text-2xl"}`,children:e.title}),(0,t.jsx)("div",{className:`text-[#d1d5db] leading-normal ${r.length<=2?"text-sm md:text-base":"text-xs"}`,children:e.description.map((e,i)=>(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{children:e}),(0,t.jsx)("br",{})]},i))})]},i))})]}),G=({eyebrow:e,title:i,buttonText:n="LEARN MORE",onButtonClick:a,features:r,iconBgColor:s="bg-slate-900"})=>(0,t.jsxs)("section",{className:" mx-auto py-16 px-4 md:px-6 lg:px-8 xl:px-12 bg-white font-sans",children:[(0,t.jsxs)("div",{className:"flex flex-col md:flex-row justify-between items-start md:items-end mb-12 lg:mb-16 gap-6",children:[(0,t.jsxs)("div",{children:[e&&(0,t.jsx)("p",{className:"text-2xs font-bold tracking-widest text-gray-500 uppercase mb-4",children:e}),(0,t.jsx)("h2",{className:"text-xl md:text-2xl lg:text-3xl font-extrabold text-slate-900 leading-tight",children:i})]}),n&&(0,t.jsx)(D.default,{onClick:a,children:n})]}),(0,t.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-10 lg:gap-12",children:r.map((e,i)=>(0,t.jsxs)("div",{className:"flex flex-col items-start",children:[(0,t.jsx)("div",{className:`w-16 h-16 lg:w-20 lg:h-20 ${s} rounded-full flex items-center justify-center mb-5 lg:mb-6`,children:e.icon}),(0,t.jsx)("h3",{className:"text-lg font-bold text-slate-900 leading-snug",children:e.title}),(0,t.jsx)("p",{className:"text-gray-600 text-sm leading-normal mt-2",children:e.description})]},i))})]});
1var K=e.i(656957);let J=({imageSrc:e="/assets/images/banners/charger-public-ev-sign.webp",imageAlt:i="EV Charging Impact",topSubtitle:n,title:a,description:r,buttonText:s="Read Full Blog",onButtonClick:o,imageAspectRatio:c="square",reverseLayout:l=!1,imageContainerClassName:u,contentContainerClassName:h})=>(0,t.jsxs)("section",{className:(0,K.cn)("min-h-[600px] py-16 flex flex-col md:flex-row w-full bg-white",l&&"md:flex-row-reverse"),children:[(0,t.jsx)("div",{className:"w-full px-4 lg:px-0 md:w-1/2 flex items-center justify-center overflow-hidden",children:(0,t.jsx)("div",{className:(0,K.cn)("relative w-full ","square"===c?"aspect-square":"aspect-video",u),children:(0,t.jsx)(d.default,{fill:!0,alt:i,src:e,className:"object-cover",priority:!0,sizes:"(max-width: 768px) 100vw, 50vw"})})}),(0,t.jsxs)("div",{className:(0,K.cn)("w-full md:w-1/2 flex flex-col justify-center p-12 px-4 md:px-6 lg:px-8 xl:px-12 bg-white text-black",h),children:[n&&(0,t.jsx)("p",{className:"text-2xs tracking-widest uppercase mb-3 text-gray-500 font-bold",children:n}),(0,t.jsx)("h2",{className:"text-lg lg:text-xl font-bold mb-6 leading-tight",children:a}),(0,t.jsx)("div",{className:"text-xs text-gray-600 mb-6 leading-relaxed ",children:r}),(0,t.jsx)("div",{children:(0,t.jsxs)(D.default,{children:[" ",s]})})]})]});var Q=e.i(838633),$=e.i(617350);let Y=({eyebrow:e="TRUSTED BY RESIDENTIAL COMMUNITIES ACROSS BC",title:i="Our Property Partners",partners:n=[]})=>0===n.length?null:(0,t.jsx)("section",{className:" py-16 px-4 md:px-6 lg:px-8 xl:px-12 bg-white",children:(0,t.jsxs)("div",{className:"mx-auto",children:[(0,t.jsxs)("div",{className:"text-center mb-16",children:[(0,t.jsx)("p",{className:"text-2xs md:text-xs font-bold tracking-[0.2em] text-gray-500 uppercase mb-4",children:e}),(0,t.jsx)("h2",{className:"text-xl font-bold text-gray-900",children:i})]}),(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4",children:n.map((e,i)=>(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsx)("div",{className:"relative min-h-52 mb-6 rounded-xl overflow-hidden aspect-square",children:(0,t.jsx)(d.default,{src:e.image,alt:e.name,fill:!0,className:"object-cover",sizes:"(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 25vw"})}),(0,t.jsx)("h3",{className:"text-sm font-bold text-gray-900 mb-2",children:e.name}),(0,t.jsx)($.default,{href:`/gallery/${e.slug}`,className:"text-[#007B3A] underline font-bold uppercase tracking-wider text-2xs hover:underline",children:"READ MORE"})]},i))})]})}),X=(0,m.default)("building-2",[["path",{d:"M10 12h4",key:"a56b0p"}],["path",{d:"M10 8h4",key:"1sr2af"}],["path",{d:"M14 21v-3a2 2 0 0 0-4 0v3",key:"1rgiei"}],["path",{d:"M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2",key:"secmi2"}],["path",{d:"M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16",key:"16ra0t"}]]),Z=(0,m.default)("trending-up",[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]]),ee=(0,m.default)("sprout",[["path",{d:"M14 9.536V7a4 4 0 0 1 4-4h1.5a.5.5 0 0 1 .5.5V5a4 4 0 0 1-4 4 4 4 0 0 0-4 4c0 2 1 3 1 5a5 5 0 0 1-1 3",key:"139s4v"}],["path",{d:"M4 9a5 5 0 0 1 8 4 5 5 0 0 1-8-4",key:"1dlkgp"}],["path",{d:"M5 21h14",key:"11awu3"}]]),et=(0,m.default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]),ei=(0,m.default)("chevrons-right",[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]]),en=(0,m.default)("smile",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]]),ea=(0,m.default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}
1]]),er=(0,m.default)("circle-dot",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}]]),es=(0,m.default)("leaf",[["path",{d:"M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z",key:"nnexq3"}],["path",{d:"M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12",key:"mt58a7"}]]),eo=(0,m.default)("shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]),ec=(0,m.default)("lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]),el=(0,m.default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]),ed={users:y,building:X,trendingUp:Z,sprout:ee,fileText:et,chevronRight:ei,smile:en,user:ea,clock:b,award:k,circleDot:er,zap:g,leaf:es,shield:eo,lightbulb:ec,globe:el}
1,eu=[{icon:"users",title:"Attract & Retain Employees",description:"A desirable perk that shows you understand and support modern commuting needs."},{icon:"building",title:"Return-to-Office Culture",description:"Convenience drives engagement â when charging is easy, showing up becomes easier too."},{icon:"trendingUp",title:"Boosts Productivity",description:"Employees can charge during work hours, eliminating detours to public stations."},{icon:"sprout",title:"Strengthens CSR Initiatives",description:"Demonstrates real action toward reducing emissions and supporting environmental responsibility."},{icon:"fileText",title:"Sustainability Reporting",description:"Charging data and COâ reduction metrics can be included in ESG and CSR reports."},{icon:"chevronRight",title:"Future-Proof Your Workplace",description:"Early EV adoption signals innovation and readiness for tomorrow."}],eh=({eyebrow:e,title:i,description:n,benefits:a})=>{let r=a&&a.length>0?a:eu;return(0,t.jsx)("section",{className:"py-16 px-4 md:px-6 lg:px-8 xl:px-12 bg-white",children:(0,t.jsxs)("div",{className:"mx-auto flex flex-col lg:flex-row gap-12 lg:gap-20",children:[(0,t.jsxs)("div",{className:"w-full lg:w-1/3 flex flex-col items-start",children:[(0,t.jsx)("p",{className:"text-2xs md:text-xs font-bold text-gray-500 uppercase tracking-[0.2em] mb-4",children:e||"HOW HONEYBADGER CHARGING CAN HELP"}),(0,t.jsx)("h2",{className:"text-xl font-bold text-gray-900 leading-tight mb-6",children:i||"Benefits of installing EV Chargers at Work"}),(0,t.jsx)("p",{className:"text-gray-600 text-xs leading-relaxed mb-10",children:n||"Energize your workforce while building a sustainable, future-ready workplace."})]}),(0,t.jsx)("div",{className:"w-full lg:w-2/3 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-y-12 gap-x-10",children:r.map((e,i)=>{let n=ed[e.icon]||y;return(0,t.jsxs)("div",{className:"flex flex-col items-start",children:[(0,t.jsx)("div",{className:"w-16 h-16 bg-brand-primary rounded-full flex items-center justify-center mb-6 shadow-sm",children:(0,t.jsx)(n,{className:"w-8 h-8 text-white",strokeWidth:1.5})}),(0,t.jsx)("h3",{className:"text-sm font-bold text-gray-900 mb-3",children:e.title}),(0,t.jsx)("p",{className:"text-gray-600 leading-relaxed text-2xs",children:e.description})]},i)})})]})})},ep=({badge:e="DOWNLOAD THE APP",title:i="Charging Made Simple",description:n="Boost efficiency by bringing all control into one easy-to-navigate platform.",imageSrc:a="/assets/images/banners/mobile-app-group.webp",imageAlt:r="HoneyBadger Charging mobile app shown on three phone screens",googlePlayUrl:s="https://play.google.com/store/apps/details?id=ca.badgercharge.app",appStoreUrl:o="https://apps.apple.com/ca/app/honeybadger/id6449320653"})=>(0,t.jsxs)("section",{className:"relative w-full bg-white lg:bg-brand-primary lg:min-h-[80vh] flex flex-col lg:flex-row items-center overflow-hidden",children:[(0,t.jsx)("div",{className:"relative w-full pt-12 lg:pt-0 h-[55vh] lg:h-auto lg:absolute lg:inset-y-0 lg:right-0 lg:w-1/2 bg-brand-primary",children:(0,t.jsx)("div",{className:"relative w-full h-full",children:(0,t.jsx)(d.default,{fill:!0,src:a,alt:r,className:"object-contain object-bottom lg:object-center px-8 pt-8 pb-16 lg:px-16 lg:pt-28 lg:pb-16",sizes:"(max-width: 1024px) 90vw, 40vw"})})}),(0,t.jsx)("div",{className:"relative z-10 w-full lg:w-1/2",children:(0,t.jsx)("div",{className:" bg-white /* Negative margin pulls the card UP over the green header */ -mt-8 /* Rounded corners create the 'Sheet' effect */ rounded-t-[2.5rem] /* Reset for Desktop */ lg:mt-0 lg:rounded-none lg:bg-transparent px-6 py-12 md:px-12 lg:pl-20 lg:pr-12 ",children:(0,t.jsxs)("div",{className:"flex flex-col items-start gap-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 mb-2",children:[(0,t.jsx)("div",{className:"shadow-md relative bg-white p-1.5 rounded-lg flex-shrink-0",children:(0,t.jsx)(d.default,{src:"/assets/images/logo/badger-charging-color-logo.webp",alt:"HoneyBadger Charging logo",width:60,height:60})}),e&&(0,t.jsx)("span",{className:"text-sm md:text-base font-bold tracking-[0.2em] uppercase text-brand-primary lg:text-white/80",children:e})]}),(0,t.jsx)("h2",{className:"text-xl md:text-2xl font-extrabold text-black lg:text-white leading-tight",children:i}),(0,t.jsx)("p",{className:"text-2xs md:text-xs text-gray-600 lg:text-white/90 leading-relaxed max-w-md",children:n}),(0,t.jsx)("div",{className:"pt-4 w-full",children:(0,t.jsx)(F.default,{googlePlayUrl:s,appStoreUrl:o,className:"justify-start w-full"})})]})})})]});var em=e.i(565860);let eg="https://app.badgercharge.ca",ef=()=>(0,t.jsxs)("section",{id:"charger-map",className:"pb-16 md:pb-24 px-4 md:px-6 lg:px-8 xl:px-12",children:[(0,t.jsx)("link",{rel:"prec
1onnect",href:eg,crossOrigin:"anonymous"}),(0,t.jsx)("link",{rel:"dns-prefetch",href:eg}),(0,t.jsx)("div",{className:"max-w-7xl mx-auto",children:(0,t.jsx)("div",{className:"relative w-full pb-[120%] md:pb-[40%] overflow-hidden bg-white",children:(0,t.jsx)("iframe",{src:eg,className:"absolute inset-0 w-full h-full border-0 bg-white",title:"HoneyBadger Charging Map",loading:"lazy",referrerPolicy:"no-referrer-when-downgrade"})})})]}),ev=({label:e,title:i,description:n,buttonText:a,buttonHref:r="/support",onButtonClick:s,imageSrc:o="/assets/images/banners/display-boothing.webp",imageAlt:c,reverse:l=!1,showButton:u=!0})=>(0,t.jsxs)("section",{className:`relative w-full min-h-[50vh] flex flex-col ${l?"md:flex-row-reverse":"md:flex-row"} bg-black text-white overflow-hidden font-sans`,children:[(0,t.jsx)("div",{className:"absolute h-full z-10 w-full flex flex-col justify-center pt-24 px-4 md:px-6 lg:px-8 xl:px-12 bg-transparent",children:(0,t.jsxs)("div",{className:"max-w-xl my-auto h-fit",children:[e&&(0,t.jsx)("p",{className:"text-2xs uppercase tracking-[0.2em] mb-4 opacity-70",children:e}),(0,t.jsx)("h1",{className:"text-2xl md:text-3xl lg:text-4xl font-bold leading-[1.1] mb-4",children:i}),(0,t.jsx)("p",{className:"text-xs leading-relaxed mb-10 opacity-90",children:n}),u&&(0,t.jsx)(D.default,{variant:"white",href:r,onClick:s,children:a})]})}),(0,t.jsxs)("div",{className:"relative flex-1 min-h-[400px] bg-[#0E0E0E]",children:[(0,t.jsx)(d.default,{fill:!0,priority:!0,sizes:"(max-width: 768px) 100vw, 50vw",quality:75,src:o,alt:c,className:"absolute inset-0 w-full h-full object-cover"}),(0,t.jsx)("div",{className:`absolute w-full md:w-3/4 inset-0 bg-gradient-to-t from-black via-black/80 to-transparent md:bg-gradient-to-r ${l?"md:from-transparent md:to-black":"md:from-black md:via-black/80 md:to-transparent"}`})]})]});var eb=t;let ek=({imageSrc:e="/assets/images/banners/woman-charging-car.webp",imageAlt:t="Woman using HoneyBadger EV Charger",fallbackSrc:i="/assets/images/banners/woman-charging-car.jpg",overlayOpacity:n="bg-black/40",subtitle:a="ELECTRIFYING CANADA ONE CHARGE AT A TIME",title:r=(0,eb.jsxs)(eb.Fragment,{children:["Powering the Future ",(0,eb.jsx)("br",{})," of Sustainable Mobility"]}),description:s="HoneyBadger Charging Creates Reliable, Fast, and Easy EV Networks Across Canada",buttonText:o="GET IN TOUCH",buttonHref:c="/support",showButton:l=!0,size:u="full"})=>(0,eb.jsxs)("section",{className:`relative w-full pt-24 ${"full"===u?"h-[80vh] md:h-screen":"h-[80vh] md:h-[60vh] min-h-[400px]"}`,children:[(0,eb.jsxs)("div",{className:"absolute inset-0 overflow-hidden",children:[(0,eb.jsx)(d.default,{src:e,alt:t,fill:!0,priority:!0,className:"object-cover object-center",sizes:"(max-width: 768px) 100vw, (max-width: 1200px) 100vw, 1920px",quality:75,fallbackSrc:i}),(0,eb.jsx)("div",{className:`absolute inset-0 ${n}`})]}),(0,eb.jsx)("div",{className:"relative z-10 mx-auto h-full flex flex-col justify-center px-4 md:px-6 lg:px-8 xl:px-12",children:(0,eb.jsxs)("div",{className:`h-fit ${"full"===u?"my-auto md:mb-[25vh] md:mt-auto":"my-auto"}`,children:[a&&(0,eb.jsx)("p",{className:"text-white text-2xs font-bold uppercase tracking-[0.2em] mb-6",children:a}),(0,eb.jsx)("h1",{className:"text-white text-2xl md:text-3xl lg:text-4xl font-bold leading-tight mb-8 max-w-3xl",children:r}),s&&(0,eb.jsx)("p",{className:"text-white text-xs font-medium mb-10 leading-relaxed max-w-xl",children:s}),l&&(0,eb.jsx)("div",{children:(0,eb.jsx)(D.default,{variant:"white",href:c,children:o})})]})})]});var ey=e.i(853263);let eT=(0,m.default)("phone",[["path",{d:"M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384",key:"9njp5v"}]]),eS=(0,m.default)("mail",[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]]),ew=(0,m.default)("map-pin",[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]]),eC=(0,m.default)("message-circle",[["path",{d:"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",key:"1sd12s"}]]),ex={phone:eT,mail:eS,"map-pin":ew,mapPin:ew,"message-circle":eC,messageCircle:eC,clock:b},eE=({cards:e})=>e&&0!==e.length?(0,t.jsx)("section",{className:"bg-gray-50 py-16 px-4 md:px-6 lg:px-8 xl:px-12",children:(0,t.jsx)("div",{className:"mx-auto max-w-7xl",children:(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:e.map((e,i)=>{let n=ex[e.icon]||eC,a=(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"w-12 h-12 rounded-full bg-[#007B3A] flex items-center justify-center mb-6",children:(0,t.jsx)(n,{className:"w-5 h-5 text-white",strokeWidth:1.75})}),(0,t.jsx)("p",{className:"font-mono text-[10px] uppercase tracking-[0.22em] text-gray-500 mb-2",children:e.label}),(0,t.jsx)("p",{className:"text-sm md:text-base text-black leading-snug break-words",children:e.value})]}
1),r="flex flex-col items-start bg-white rounded-lg p-8 shadow-sm border border-black/5 transition-all duration-300 h-full";return e.href?(0,t.jsx)("a",{href:e.href,className:`${r} hover:shadow-md hover:border-[#007B3A]/30`,children:a},e.id||i):(0,t.jsx)("div",{className:r,children:a},e.id||i)})})})}):null,eP=({label:e,headline:i,items:n,showDescriptions:a=!0,columns:r=4,textAlign:s="left"})=>{let o="center"===s?"items-center text-center":"items-start ";return(0,t.jsx)("section",{className:"py-16 px-4 md:px-6 lg:px-8 xl:px-12",children:(0,t.jsxs)("div",{className:" mx-auto",children:[(0,t.jsxs)("div",{className:`mb-16 flex flex-col *:mx-auto ${"center"===s?"items-center text-center":"items-start"}`,children:[e&&(0,t.jsx)("h3",{className:"text-2xs font-bold tracking-[0.2em] text-black uppercase mb-4",children:e}),(0,t.jsx)("h2",{className:"text-xl font-bold text-black leading-tight",children:i})]}),(0,t.jsx)("div",{className:`grid ${{1:"grid-cols-1",2:"grid-cols-1 md:grid-cols-2",3:"grid-cols-1 md:grid-cols-3",4:"grid-cols-1 md:grid-cols-2 lg:grid-cols-4"}[r]} gap-12 lg:gap-8`,children:n?.map((e,i)=>(0,t.jsxs)("div",{className:`flex flex-col ${o}`,children:[(0,t.jsx)("div",{className:`bg-[#007a39] rounded-full p-6 mb-6 w-24 h-24 flex items-center justify-center ${"center"===s?"mx-auto":""}`,children:e.icon}),(0,t.jsx)("h3",{className:"text-lg font-bold text-black mb-4",children:e.title}),a&&e.description&&(0,t.jsx)("p",{className:"text-gray-700 text-xs leading-relaxed",children:e.description})]},i))})]})})};var eR=e.i(805210);function eI({title:e,description:i,imageSrc:n,imageAlt:a,maxWidth:r="wide"}){let s="narrow"===r;return(0,t.jsx)("section",{className:"py-16 px-4 md:px-6 lg:px-8 xl:px-12",children:(0,t.jsxs)("div",{className:"max-w-7xl mx-auto",children:[(e||i)&&(0,t.jsxs)("div",{className:"text-center mb-10",children:[e&&(0,t.jsx)("h2",{className:"text-xl md:text-2xl lg:text-3xl font-bold text-neutral-900",children:e}),i&&(0,t.jsx)("p",{className:"mt-4 text-sm md:text-base text-neutral-600 max-w-2xl mx-auto",children:i})]}),(0,t.jsx)("div",{className:s?"flex justify-center":"w-full",children:(0,t.jsx)(d.default,{alt:a,className:`h-auto rounded-lg ${s?"w-full max-w-5xl":"w-full"}`,width:1200,height:600,src:n})})]})})}var eN=e.i(880168);let e_=(0,m.default)("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]),eD=(0,m.default)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),eM=(0,m.default)("heart",[["path",{d:"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5",key:"mvr1a0"}]]),eO=(0,m.default)("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]),eA=(0,m.default)("handshake",[["path",{d:"m11 17 2 2a1 1 0 1 0 3-3",key:"efffak"}],["path",{d:"m14 14 2.5 2.5a1 1 0 1 0 3-3l-3.88-3.88a3 3 0 0 0-4.24 0l-.88.88a1 1 0 1 1-3-3l2.81-2.81a5.79 5.79 0 0 1 7.06-.87l.47.28a2 2 0 0 0 1.42.25L21 4",key:"9pr0kb"}],["path",{d:"m21 3 1 11h-2",key:"1tisrp"}],["path",{d:"M3 3 2 14l6.5 6.5a1 1 0 1 0 3-3",key:"1uvwmv"}],["path",{d:"M3 4h8",key:"1ep09j"}]]),eL=(0,m.default)("rocket",[["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z",key:"m3kijz"}],["path",{d:"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z",key:"1fmvmk"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0",key:"1f8sc4"}],["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}]]),ej=(0,m.default)("compass",[["path",{d:"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z",ke
1y:"9ktpf1"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var eU=e.i(753960);let eF=(e,t="")=>e&&"object"==typeof e&&null!==e&&e.url||t,eB={smile:(0,t.jsx)(en,{className:"w-8 h-8 text-white"}),users:(0,t.jsx)(y,{className:"w-8 h-8 text-white"}),user:(0,t.jsx)(ea,{className:"w-8 h-8 text-white"}),clock:(0,t.jsx)(b,{className:"w-8 h-8 text-white"}),award:(0,t.jsx)(k,{className:"w-8 h-8 text-white"}),circleDot:(0,t.jsx)(er,{className:"w-8 h-8 text-white"}),zap:(0,t.jsx)(g,{className:"w-8 h-8 text-white"}),leaf:(0,t.jsx)(es,{className:"w-8 h-8 text-white"}),building:(0,t.jsx)(X,{className:"w-8 h-8 text-white"}),trendingUp:(0,t.jsx)(Z,{className:"w-8 h-8 text-white"}),sprout:(0,t.jsx)(ee,{className:"w-8 h-8 text-white"}),fileText:(0,t.jsx)(et,{className:"w-8 h-8 text-white"}),chevronRight:(0,t.jsx)(ei,{className:"w-8 h-8 text-white"})},eq={target:(0,t.jsx)(e_,{className:"w-10 h-10 text-white"}),eye:(0,t.jsx)(eD,{className:"w-10 h-10 text-white"}),heart:(0,t.jsx)(eM,{className:"w-10 h-10 text-white"}),star:(0,t.jsx)(eO,{className:"w-10 h-10 text-white"}),shield:(0,t.jsx)(eo,{className:"w-10 h-10 text-white"}),lightbulb:(0,t.jsx)(ec,{className:"w-10 h-10 text-white"}),zap:(0,t.jsx)(g,{className:"w-10 h-10 text-white"}),leaf:(0,t.jsx)(es,{className:"w-10 h-10 text-white"}),users:(0,t.jsx)(y,{className:"w-10 h-10 text-white"}),globe:(0,t.jsx)(el,{className:"w-10 h-10 text-white"}),handshake:(0,t.jsx)(eA,{className:"w-10 h-10 text-white"}),award:(0,t.jsx)(k,{className:"w-10 h-10 text-white"}),rocket:(0,t.jsx)(eL,{className:"w-10 h-10 text-white"}),compass:(0,t.jsx)(ej,{className:"w-10 h-10 text-white"}),building:(0,t.jsx)(X,{className:"w-10 h-10 text-white"}),trendingUp:(0,t.jsx)(Z,{className:"w-10 h-10 text-white"})},eV={green:"bg-[#007B3A]",black:"bg-slate-900",gray:"bg-gray-500"};function eH({blocks:e,faqs:i}){return e&&0!==e.length?(0,t.jsx)(t.Fragment,{children:e.map((e,n)=>{switch(e.blockType){case"hero":return(0,t.jsx)(p,{backgroundImage:eF(e.backgroundImage,l.hero)||void 0,imageAlt:"object"==typeof e.backgroundImage&&e.backgroundImage?.alt||void 0,title:e.title,subtitle:e.subtitle||void 0},n);case"features":return(0,t.jsx)(C,{eyebrow:e.eyebrow||void 0,title:e.title||void 0,items:e.items?.map(e=>({icon:e.icon||void 0,title:e.title,description:e.description}))},n);case"value-proposition":return(0,t.jsx)(x.default,{image:eF(e.image,l["value-proposition"]),eyebrow:e.eyebrow||void 0,title:e.title||void 0,description:e.description||void 0},n);case"process-steps":return(0,t.jsx)(A,{buttonText:e.button?.text||void 0,buttonLink:e.button?.link||void 0,steps:e.steps?.filter(e=>!!e.title).map(e=>({title:e.title,icon:e.icon||void 0}))},n);case"app-promo":return(0,t.jsx)(V,{title:e.title||void 0,description:e.description||void 0,image:eF(e.image,l["app-promo"]),appStoreUrl:e.appStoreUrl||void 0,playStoreUrl:e.playStoreUrl||void 0,features:e.features?.map(e=>({title:e.title,description:e.description}))},n);case"partners-marquee":return(0,t.jsx)(H.PartnersMarquee,{speed:e.speed||55},n);case"split-banner":return(0,t.jsx)(z.default,{badge:e.badge||void 0,title:e.title,description:e.description,buttonText:e.buttonText||void 0,buttonHref:e.buttonLink||void 0,imageSrc:eF(e.image,l["split-banner"]),imageAlt:e.title,reverse:e.reverse||!1},n);case"partner-section":return(0,t.jsx)(W,{subtitle:e.subtitle||"WHY PARTNER WITH US",title:e.title,buttonText:e.buttonText||"BOOK A SITE VISIT",buttonLink:e.buttonLink||"/support",cards:e.cards?.map(e=>({number:e.number,title:e.title,description:e.descriptions?.map(e=>e.paragraph)||[]}))||[]},n);case"features-grid":{let i="string"==typeof e.title&&e.title.toLowerCase().includes("strata");return(0,t.jsx)(G,{eyebrow:e.eyebrow||void 0,title:e.title,buttonText:i?"":e.buttonText||"",iconBgColor:eV[e.iconColor||"green"],features:e.features?.map(e=>({icon:eB[e.icon]||eB.smile,title:e.title,description:e.description}))||[]},n)}case"cta-content":return(0,t.jsx)(J,{imageSrc:eF(e.image,l["cta-content"]),topSubtitle:e.topSubtitle||void 0,title:e.title,description:e.description,buttonText:e.buttonText||"Read Full Blog",imageAspectRatio:e.imageAspectRatio||"square",reverseLayout:e.reverseLayout||!1},n);case"step-carousel":return(0,t.jsx)(Q.default,{},n);case"property-partners":{let i=(e.partners||[]).map(e=>({image:eF(e.image,l["property-partners"]),name:e.name,slug:(e.link||"").replace(/^\/(locations|properties)\//,"")}));return(0,t.jsx)(Y,{eyebrow:e.eyebrow||void 0,title:e.title||void 0,partners:i},n)}case"benefits-section":return(0,t.jsx)(eh,{},n);case"app-download-banner":return(0,t.jsx)(ep,{variant:e.variant||"green",textColor:e.textColor||"black",size:e.size||"default",badge:e.badge||void 0,title:e.title,de
1scription:e.description||void 0,imageSrc:eF(e.image,l["app-download-banner"]),imageAlt:"HoneyBadger Mobile App",googlePlayUrl:e.googlePlayUrl||void 0,appStoreUrl:e.appStoreUrl||void 0},n);case"how-it-works":return(0,t.jsx)(em.default,{},n);case"charger-map":return(0,t.jsx)(ef,{},n);case"hero-gradient-banner":return(0,t.jsx)(ev,{label:e.label||void 0,title:e.title,imageAlt:"HoneyBadger Mobile App",description:e.description,imageSrc:eF(e.image,l["hero-gradient-banner"]),showButton:e.showButton??!0,buttonText:e.buttonText||void 0,buttonHref:e.buttonLink||void 0,reverse:e.reverse||!1},n);case"clear-banner":return(0,t.jsx)(ek,{subtitle:e.subtitle||void 0,title:(0,t.jsx)(t.Fragment,{children:e.title}),description:e.description||void 0,imageSrc:eF(e.image,l["clear-banner"]),overlayOpacity:e.overlayOpacity||"medium",size:e.size||"half",showButton:e.showButton??!0,buttonText:e.buttonText||void 0},n);case"contact-cards":return(0,t.jsx)(eE,{cards:e.cards||[]},n);case"contact-form":return(0,t.jsx)(ey.default,{title:e.title||void 0,description:e.description||void 0,imageSrc:eF(e.image,l["contact-form"])},n);case"mission-section":return(0,t.jsx)(eP,{label:e.label||void 0,headline:e.headline||void 0,columns:e.columns?parseInt(e.columns):4,textAlign:e.textAlign||"left",showDescriptions:!1!==e.showDescriptions,items:e.items?.map(e=>({icon:eq[e.icon]||eq.target,title:e.title,description:e.description||void 0}))},n);case"story-section":return(0,t.jsxs)("section",{className:`flex flex-col-reverse md:flex-row w-full bg-black ${e.reverse?"md:flex-row-reverse":""}`,children:[(0,t.jsx)("div",{className:"w-full md:w-1/2 md:h-full p-8 md:p-16 flex flex-col justify-center",children:(0,t.jsxs)("div",{children:[e.label&&(0,t.jsx)("h3",{className:"text-2xs font-bold tracking-[0.2em] text-[#007B3A] mb-6 uppercase",children:e.label}),(0,t.jsx)("h2",{className:"text-lg lg:text-xl font-bold text-white leading-tight mb-8",children:e.title}),(0,t.jsx)("div",{className:"space-y-6 text-gray-400 text-xs leading-relaxed",children:e.paragraphs?.map((e,i)=>(0,t.jsx)("p",{children:e.text},i))})]})}),(0,t.jsx)("div",{className:"relative w-full aspect-[3/2] md:aspect-auto md:w-1/2 md:self-stretch md:min-h-[480px]",children:(0,t.jsx)(d.default,{src:eF(e.image,l["story-section"]),fill:!0,alt:e.imageAlt||e.title||"HoneyBadger Charging story",className:"object-cover",quality:85,sizes:"(max-width: 768px) 100vw, 50vw"})})]},n);case"career-value-section":return(0,t.jsxs)("section",{className:`flex flex-col md:flex-row w-full min-h-[600px] font-sans ${e.reverse?"md:flex-row-reverse":""}`,children:[(0,t.jsx)("div",{className:"flex-1 bg-black text-white py-12 md:py-16 lg:py-24 px-4 md:px-6 lg:px-8 xl:px-12 flex flex-col justify-center",children:(0,t.jsxs)("div",{className:"max-w-xl mx-auto md:mx-0",children:[e.label&&(0,t.jsx)("h2",{className:"text-xs font-bold uppercase tracking-[0.2em] text-brand-primary mb-12",children:e.label}),(0,t.jsx)("div",{className:"space-y-12",children:e.values?.map((e,i)=>(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-2xl font-bold mb-4",children:e.title}),(0,t.jsx)("p",{className:"text-xs text-gray-300 leading-relaxed",children:e.description})]},i))})]})}),(0,t.jsx)("div",{className:"flex-1 relative aspect-[3/2] md:aspect-auto md:min-h-full",children:(0,t.jsx)(d.default,{fill:!0,src:eF(e.image,l["career-value-section"]),alt:e.imageAlt||"HoneyBadger Charging team and culture",className:"absolute inset-0 w-full h-full object-cover",quality:85,sizes:"(max-width: 768px) 100vw, 50vw"})})]},n);case"careers-section":return(0,t.jsx)(eR.default,{label:e.label||void 0,title:e.title,description:e.description||void 0,imageSrc:eF(e.image,l["careers-section"]),imageAlt:e.imageAlt||e.title||"HoneyBadger Charging careers",jobs:[],buttonText:e.buttonText||"VIEW ALL OPENINGS",buttonLink:e.buttonLink||"/careers",reverse:e.reverse||!1},n);case"open-positions":return(0,t.jsx)("section",{className:"py-16 md:py-24 px-4 md:px-6 lg:px-8 xl:px-12",children:(0,t.jsxs)("div",{className:"flex flex-col lg:flex-row gap-12 lg:gap-24",children:[(0,t.jsxs)("div",{className:"lg:w-1/3",children:[(0,t.jsx)("h2",{className:"text-xl md:text-2xl font-bold text-black mb-4",children:e.title||"Open Positions"}),(0,t.jsxs)("p",{className:"text-xs text-gray-600",children:["Send us your CV to"," ",(0,t.jsx)("a",{href:"mailto:[email protected]",className:"text-brand-primary hover:underline",children:"[email protected]"})]})]}),(0,t.jsx)("div",{className:"lg:w-2/3",children:(0,t.jsxs)("div",{className:"",children:[(0,t.jsx)("p",{className:"text-base text-gray-600 mb-4",children:e.emptyStateTitle||"There are currently no open positions available."}),(0,t.jsx)("p",{className:"text-xs max-w-lg text-gray-500",children:e.emptyStateDescription||"We're always looking for talented individuals. Feel free to send us your resume and we'll keep it on file for future opportunities."})]})})]})},n);case"faq-accordion":if(i&&i.length>0)return(0,t.jsx)(eU.default,{label:e.label||void 0,title:e.title||void 0,faqs:i,backgroundColor:e.backgroundColor||"white"},n);return(0,t.jsx)("section",{className:"py-24 px-4 md:px-6 lg:px-8 xl:px-12 font-sans bg-gray-50",children:(0,t.jsxs)("div",{className:"xl:max-w-7xl mx-auto",children:[(0,t.jsxs)("div",{className:"mb-16",children:[e.label&&(0,t.jsx)("h3",{className:"text-2xs font-bold tracking-[0.2em] uppercase mb-4 text-gray-500",children:e.label}),(0,t.jsx)("h2",{className:"text-black text-2xl md:text-3xl font-bold leading-tight",children:e.title||"Frequently Asked Questions"})]}),(0,t.jsx)("p",{className:"text-gray-500 italic",children:"FAQ content loads from database on published page"})]})},n);case"rich-text":return(0,t.jsx)("section",{className:"bg-white py-16 px-4 md:px-6 lg:px-8",children:(0,t.jsx)("div",{className:"max-w-4xl mx-auto text-zinc-700 text-xs leading-relaxed",children:(0,t.jsx)(o.RichText,{content:e.content})})},n);case"image-section":return(0,t.jsx)(eI,{title:e.title||void 0,description:e.description||void 0,imageSrc:eF(e.image,l["image-section"]),imageAlt:e.imageAlt||e.title||"HoneyBadger Home Charging",maxWidth:e.maxWidth||"wide"},n);case"ev-charging-tile":return(0,t.jsx)("section",{className:"py-16 px-4 md:px-6 lg:px-8 xl:px-12",children:(0,t.jsx)(eN.default,{icon:e.icon||void 0,title:e.title||void 0,enableWebCall:e.enableWebCall??!0,webButtonLabel:e.webButtonLabel||void 0,phoneNumber:e.phoneNumber??void 0,showForm:e.showForm??!0,formTargetId:e.formTargetId||void 0})},n);default:return null}})}):null}function ez({initialData:e,serverURL:i}){let{data:n}=(e=>{let{apiRoute:t,depth:i,initialData:n,requestHandler:o,serverURL:c}
1=e,[l,d]=(0,s.useState)(n),[u,h]=(0,s.useState)(!0),p=(0,s.useRef)(!1),m=(0,s.useCallback)(e=>{d(e),h(!1)},[]);return(0,s.useEffect)(()=>{let e=(e=>{let{apiRoute:t,callback:i,depth:n,initialData:s,requestHandler:o,serverURL:c}=e;a.previousData=void 0;let l=async e=>{i(await r({apiRoute:t,depth:n,event:e,initialData:s,requestHandler:o,serverURL:c}))};return"u">typeof window&&window.addEventListener("message",l),l})({apiRoute:t,callback:m,depth:i,initialData:n,requestHandler:o,serverURL:c});return p.current||(p.current=!0,(e=>{let{serverURL:t}=e;if("u">typeof window){let e=window?.opener||window?.parent;e?.postMessage({type:"payload-live-preview",ready:!0},t)}})({serverURL:c})),()=>{"u">typeof window&&window.removeEventListener("message",e)}},[c,m,i,n,t,o]),{data:l,isLoading:u}})({initialData:e,serverURL:i,depth:4});return(0,t.jsx)(eH,{blocks:n?.layout||[]})}e.s(["LivePreviewWrapper",()=>ez],553574)}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.